chenlu
2025-03-25 e77728aaf2721e4777775134e223d4c90eadf7e9
根据报工转移的状态限制报工删除和修改
8个文件已修改
245 ■■■■■ 已修改文件
north-glass-erp/northglass-erp/src/lang/ar.js 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/lang/en.js 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/lang/ru.js 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/lang/zh.js 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/pp/reportingWorks/AddReportingWork.vue 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/java/com/example/erp/mapper/pp/ReportingWorkMapper.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/java/com/example/erp/service/pp/ReportingWorkService.java 231 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/resources/mapper/pp/ReportingWork.xml 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/lang/ar.js
@@ -552,6 +552,7 @@
        thisWornQuantity:'تنقطع هذه العملية',
        passAudit:'تمت الموافقة',
        patchCondition:'补片状态',
        changeFailed:'修改失败,请检查是否为报工转移订单',
        selectResponsibleTeam:'الرجاء اختيار الفريق المسؤول',
north-glass-erp/northglass-erp/src/lang/en.js
@@ -552,6 +552,7 @@
        thisWornQuantity:'This Worn Quantity',
        passAudit:'Pass The Audit',
        patchCondition:'Patch Condition',
        changeFailed:'修改失败,请检查是否为报工转移订单',
        selectResponsibleTeam:'Please select a responsible team',
        selectWorkReportingTeam:'Please select a responsible team',
north-glass-erp/northglass-erp/src/lang/ru.js
@@ -551,6 +551,7 @@
        thisWornQuantity:'Это процесс повреждение ',
        passAudit:'Проверка прошла',
        patchCondition:'补片状态',
        changeFailed:'修改失败,请检查是否为报工转移订单',
        selectResponsibleTeam:'Пожалуйста, выберите группу ответственности.',
north-glass-erp/northglass-erp/src/lang/zh.js
@@ -552,6 +552,7 @@
        thisWornQuantity:'本工序次破',
        passAudit:'审核通过',
        patchCondition:'补片状态',
        changeFailed:'修改失败,请检查是否为报工转移订单',
        selectResponsibleTeam:'请选择责任班组',
north-glass-erp/northglass-erp/src/views/pp/reportingWorks/AddReportingWork.vue
@@ -944,13 +944,15 @@
    reviewState = 'review'
  }
  request.post(`/reportingWork/updateReportingWork/${reviewState}`,requestData).then(res =>{
    if (res.code == 200){
    if (res.code == 200 && res.data===true){
      ElMessage.success(t('reportingWorks.successfulModificationOfWorkApplication'))
      router.push({path:'/main/reportingWorks/AddReportingWork',
        query:{
          processId:titleUploadData.value.processId,
          random:Math.random()}
      })
    } else {
      ElMessage.warning(t('reportingWorks.changeFailed'))
    }
  })
}
north-glass-erp/src/main/java/com/example/erp/mapper/pp/ReportingWorkMapper.java
@@ -102,4 +102,6 @@
    String selectOrderid(String processIdStr);
    Map<String,Float> getFootSum(Date selectTime1, Date selectTime2, String orderId, ReportingWork reportingWork);
    Integer selectReviewedState(String reportingWorkId);
}
north-glass-erp/src/main/java/com/example/erp/service/pp/ReportingWorkService.java
@@ -485,73 +485,79 @@
        JSONObject reportingWorkJson = new JSONObject(reportingWorkMap);
        ReportingWork reportingWork = JSONObject.parseObject(JSONObject.toJSONString(reportingWorkJson.get("title")), ReportingWork.class);
        List<ReportingWorkDetail> reportingWorkDetails = JSONArray.parseArray(JSONObject.toJSONString(reportingWorkJson.get("detail")), ReportingWorkDetail.class);
        //查询该报工是否为报工转移订单
        Integer transferState = reportingWorkMapper.selectReviewedState(reportingWork.getReportingWorkId());
        if (transferState !=3){
            //删除刺破明细表刺破数据
            damageDetailsMapper.delete(
                    new LambdaQueryWrapper<DamageDetails>()
                            .eq(DamageDetails::getReportingWorkId, reportingWork.getReportingWorkId())
            );
            //修改小片流程表数量
            orderProcessDetailMapper.updateQuantity(reportingWork.getReportingWorkId(), reportingWork.getThisProcess(), "delete");
            //删除报工明细表数据
            reportingWorkDetailMapper
                    .delete(new LambdaQueryWrapper<ReportingWorkDetail>()
                            .eq(ReportingWorkDetail::getReportingWorkId, reportingWork.getReportingWorkId()));
        //删除刺破明细表刺破数据
        damageDetailsMapper.delete(
                new LambdaQueryWrapper<DamageDetails>()
                        .eq(DamageDetails::getReportingWorkId, reportingWork.getReportingWorkId())
        );
        //修改小片流程表数量
        orderProcessDetailMapper.updateQuantity(reportingWork.getReportingWorkId(), reportingWork.getThisProcess(), "delete");
        //删除报工明细表数据
        reportingWorkDetailMapper
                .delete(new LambdaQueryWrapper<ReportingWorkDetail>()
                        .eq(ReportingWorkDetail::getReportingWorkId, reportingWork.getReportingWorkId()));
        //更新报工主表
        int qualityInsStatus = (int) reportingWorkJson.get("qualityInsStatus");
        reportingWorkMapper.updateById(reportingWork);
        reportingWorkDetails.forEach(reportingWorkDetail -> {
            reportingWorkDetail.setReportingWorkId(reportingWork.getReportingWorkId());
            List<DamageDetails> damageDetails = reportingWorkDetail.getDamageDetails();
            //每一条报工数据循环插入次破明细表
            if (damageDetails != null && !damageDetails.isEmpty()) {
                damageDetails.forEach(damageDetail -> {
                    damageDetail.setReportingWorkId(reportingWork.getReportingWorkId());
                    damageDetail.setProcessId(reportingWork.getProcessId());
                    damageDetail.setOrderNumber(reportingWorkDetail.getOrderNumber());
                    damageDetail.setTechnologyNumber(reportingWorkDetail.getTechnologyNumber());
                    //是否修改质检状态
                    if (!Objects.equals(reportingWork.getThisProcess(), damageDetail.getResponsibleProcess()) && qualityInsStatus==2) {
                        damageDetail.setQualityInsStatus(1);
                    }
                    if (Objects.equals(reviewState, "review")) {
                        damageDetail.setQualityInsStatus(2);
                    }
                    damageDetailsMapper.insert(damageDetail);
                });
            }
            //插入报工数据
            reportingWorkDetailMapper.insert(reportingWorkDetail);
            orderProcessDetailMapper.insertByReportingWorkDetail(reportingWorkDetail,reportingWork.getProcessId(),reportingWork.getThisProcess());
            //修改包装时修改库存数量
            if (reportingWork.getNextProcess()==null || reportingWork.getNextProcess().isEmpty()){
                //获取该报工修改后的可入库数量
                Integer  inventory = reportingWorkDetailMapper.selectInventory(reportingWork.getProcessId(),Integer.parseInt(reportingWorkDetail.getOrderNumber()),Integer.parseInt(reportingWorkDetail.getTechnologyNumber()),reportingWork.getThisProcess());
                //修改流程卡表库存数量
                flowCardMapper.updateInventory(reportingWork.getProcessId(),reportingWorkDetail.getOrderNumber(),reportingWorkDetail.getTechnologyNumber(),inventory);
            }
        });
        //获取质检时间
        if (Objects.equals(reviewState, "review")) {
            LocalDateTime
                    currentDate = LocalDateTime.now();
            reportingWork.setQualityInsTime(currentDate);
            //更新报工主表
            int qualityInsStatus = (int) reportingWorkJson.get("qualityInsStatus");
            reportingWorkMapper.updateById(reportingWork);
            reportingWorkDetails.forEach(reportingWorkDetail -> {
                reportingWorkDetail.setReportingWorkId(reportingWork.getReportingWorkId());
                List<DamageDetails> damageDetails = reportingWorkDetail.getDamageDetails();
                //每一条报工数据循环插入次破明细表
                if (damageDetails != null && !damageDetails.isEmpty()) {
                    damageDetails.forEach(damageDetail -> {
                        damageDetail.setReportingWorkId(reportingWork.getReportingWorkId());
                        damageDetail.setProcessId(reportingWork.getProcessId());
                        damageDetail.setOrderNumber(reportingWorkDetail.getOrderNumber());
                        damageDetail.setTechnologyNumber(reportingWorkDetail.getTechnologyNumber());
                        //是否修改质检状态
                        if (!Objects.equals(reportingWork.getThisProcess(), damageDetail.getResponsibleProcess()) && qualityInsStatus==2) {
                            damageDetail.setQualityInsStatus(1);
                        }
                        if (Objects.equals(reviewState, "review")) {
                            damageDetail.setQualityInsStatus(2);
                        }
                        damageDetailsMapper.insert(damageDetail);
                    });
                }
                //插入报工数据
                reportingWorkDetailMapper.insert(reportingWorkDetail);
                orderProcessDetailMapper.insertByReportingWorkDetail(reportingWorkDetail,reportingWork.getProcessId(),reportingWork.getThisProcess());
                //修改包装时修改库存数量
                if (reportingWork.getNextProcess()==null || reportingWork.getNextProcess().isEmpty()){
                    //获取该报工修改后的可入库数量
                    Integer  inventory = reportingWorkDetailMapper.selectInventory(reportingWork.getProcessId(),Integer.parseInt(reportingWorkDetail.getOrderNumber()),Integer.parseInt(reportingWorkDetail.getTechnologyNumber()),reportingWork.getThisProcess());
                    //修改流程卡表库存数量
                    flowCardMapper.updateInventory(reportingWork.getProcessId(),reportingWorkDetail.getOrderNumber(),reportingWorkDetail.getTechnologyNumber(),inventory);
                }
            });
            //获取质检时间
            if (Objects.equals(reviewState, "review")) {
                LocalDateTime
                        currentDate = LocalDateTime.now();
                reportingWork.setQualityInsTime(currentDate);
                reportingWorkMapper.updateById(reportingWork);
            }
            //修改小片流程表数量为报工明细表数量
            //orderProcessDetailMapper.updateQuantity(reportingWork.getReportingWorkId(), reportingWork.getThisProcess(), "add");
            //保存日志
            Log log = new Log();
            log.setContent(reportingWorkMap.toString());
            log.setFunction("updateReportingWork报工修改");
            log.setOperatorId((String) reportingWorkJson.get("userId"));
            log.setOperator((String) reportingWorkJson.get("userName"));
            logService.saveLog(log);
            return true;
        } else {
            return false;
        }
        //修改小片流程表数量为报工明细表数量
        //orderProcessDetailMapper.updateQuantity(reportingWork.getReportingWorkId(), reportingWork.getThisProcess(), "add");
        //保存日志
        Log log = new Log();
        log.setContent(reportingWorkMap.toString());
        log.setFunction("updateReportingWork报工修改");
        log.setOperatorId((String) reportingWorkJson.get("userId"));
        log.setOperator((String) reportingWorkJson.get("userName"));
        logService.saveLog(log);
        return true;
    }
    //报工管理查询
@@ -578,38 +584,65 @@
            String lastProcess = reportingWorkMapper.selectLastProcess(processId);
            //获取是否有已补片或返工
            Integer countStates= Integer.valueOf(reportingWorkMapper.getPatchConditionMp(reportingWorkId));
            //判断是否有补片返工数据
            if (countStates==0){
                //判断是否是入库工序
                if (lastProcess.equals(thisProcess)) {//是入库工序
                    //查询该流程卡数量、可入库数量、已入库数量
                    Map<String, Object> list = reportingWorkMapper.selectReceiptQuantity(processId);
                    if (list.get("quantity") == list.get("receiptQuantity")) {
                        return false;
                    } else {
                        //转换类型:已入库数量
                        Integer receiptQuantity = Integer.parseInt(list.get("receivedQuantity").toString());
                        //转换类型:可入库数量
                        Integer inventoryQuantity = Integer.parseInt(list.get("inventoryQuantity").toString());
                        //查询该报工编号本工序完工数量
                        Integer completedQuantity = reportingWorkMapper.selectCompletedQuantity(reportingWorkId);
                        //当该工序完工数量小于等于已入库数量时
                        //可入库数量-已入库数量>=报工编号本工序完工数量
                        if (inventoryQuantity - receiptQuantity >= completedQuantity) {
            //查询该报工是否为报工转移订单
            Integer transferState = reportingWorkMapper.selectReviewedState(reportingWorkId);
            if (transferState !=3){
                //判断是否有补片返工数据
                if (countStates==0){
                    //判断是否是入库工序
                    if (lastProcess.equals(thisProcess)) {//是入库工序
                        //查询该流程卡数量、可入库数量、已入库数量
                        Map<String, Object> list = reportingWorkMapper.selectReceiptQuantity(processId);
                        if (list.get("quantity") == list.get("receiptQuantity")) {
                            return false;
                        } else {
                            //转换类型:已入库数量
                            Integer receiptQuantity = Integer.parseInt(list.get("receivedQuantity").toString());
                            //转换类型:可入库数量
                            Integer inventoryQuantity = Integer.parseInt(list.get("inventoryQuantity").toString());
                            //查询该报工编号本工序完工数量
                            Integer completedQuantity = reportingWorkMapper.selectCompletedQuantity(reportingWorkId);
                            //当该工序完工数量小于等于已入库数量时
                            //可入库数量-已入库数量>=报工编号本工序完工数量
                            if (inventoryQuantity - receiptQuantity >= completedQuantity) {
                                //查询当前报工编号完工次破数量的数据
                                List<Map<String, Object>> workDateList = reportingWorkMapper.reportingWorkDate(reportingWorkId);
                                for (Map<String, Object> item : workDateList) {
                                    //更新流程卡可入库数量
                                    reportingWorkMapper.updateInventoryQuantity(processId, item.get("order_number"), item.get("technology_number"), item.get("completed_quantity"));
                                    //更新报工流程表数据
                                    reportingWorkMapper.updateWorkProcess(processId, item.get("order_number"), item.get("technology_number"), item.get("completed_quantity"), item.get("breakage_quantity"), thisProcess);
                                }
                                //删除报工,将审核状态改为-1
                                reportingWorkMapper.deleteWork(reportingWorkId);
                                //保存日志
                                Log log = new Log();
                                log.setContent(reportingWorkId+"-"+processId+"-"+thisProcess);
                                log.setFunction("deleteWork报工入库删除");
                                log.setOperatorId(userId);
                                log.setOperator(userName);
                                logService.saveLog(log);
                                return true;
                            } else {
                                return false;
                            }
                        }
                    } else {//不是入库工序
                        if (count == 0) {
                            //查询当前报工编号完工次破数量的数据
                            List<Map<String, Object>> workDateList = reportingWorkMapper.reportingWorkDate(reportingWorkId);
                            for (Map<String, Object> item : workDateList) {
                                //更新流程卡可入库数量
                                reportingWorkMapper.updateInventoryQuantity(processId, item.get("order_number"), item.get("technology_number"), item.get("completed_quantity"));
                                //更新报工流程表数据
                                reportingWorkMapper.updateWorkProcess(processId, item.get("order_number"), item.get("technology_number"), item.get("completed_quantity"), item.get("breakage_quantity"), thisProcess);
                            }
                            //删除报工,将审核状态改为-1
                            reportingWorkMapper.deleteWork(reportingWorkId);
                            //保存日志
                            Log log = new Log();
                            log.setContent(reportingWorkId+"-"+processId+"-"+thisProcess);
                            log.setFunction("deleteWork报工入库删除");
                            log.setFunction("deleteWork报工删除");
                            log.setOperatorId(userId);
                            log.setOperator(userName);
                            logService.saveLog(log);
@@ -618,35 +651,15 @@
                            return false;
                        }
                    }
                } else {//不是入库工序
                    if (count == 0) {
                        //查询当前报工编号完工次破数量的数据
                        List<Map<String, Object>> workDateList = reportingWorkMapper.reportingWorkDate(reportingWorkId);
                        for (Map<String, Object> item : workDateList) {
                            //更新报工流程表数据
                            reportingWorkMapper.updateWorkProcess(processId, item.get("order_number"), item.get("technology_number"), item.get("completed_quantity"), item.get("breakage_quantity"), thisProcess);
                        }
                        //删除报工,将审核状态改为-1
                        reportingWorkMapper.deleteWork(reportingWorkId);
                        //保存日志
                        Log log = new Log();
                        log.setContent(reportingWorkId+"-"+processId+"-"+thisProcess);
                        log.setFunction("deleteWork报工删除");
                        log.setOperatorId(userId);
                        log.setOperator(userName);
                        logService.saveLog(log);
                        return true;
                    } else {
                        return false;
                    }
                }
            }
            else {
                else {
                    return false;
                }
            } else {
                return false;
            }
        } else {
            return false;
        }
north-glass-erp/src/main/resources/mapper/pp/ReportingWork.xml
@@ -1060,4 +1060,8 @@
             ) AS subquery;
    </select>
    <select id="selectReviewedState">
        select reviewed_state from pp.reporting_work where reporting_work_id=#{reportingWorkId};
    </select>
</mapper>