From e77728aaf2721e4777775134e223d4c90eadf7e9 Mon Sep 17 00:00:00 2001 From: chenlu <1320612696@qq.com> Date: 星期二, 25 三月 2025 16:00:09 +0800 Subject: [PATCH] 根据报工转移的状态限制报工删除和修改 --- north-glass-erp/src/main/java/com/example/erp/service/pp/ReportingWorkService.java | 231 ++++++++++++++++++++++++++++++--------------------------- 1 files changed, 122 insertions(+), 109 deletions(-) diff --git a/north-glass-erp/src/main/java/com/example/erp/service/pp/ReportingWorkService.java b/north-glass-erp/src/main/java/com/example/erp/service/pp/ReportingWorkService.java index 1ab73e9..f0b1fc5 100644 --- a/north-glass-erp/src/main/java/com/example/erp/service/pp/ReportingWorkService.java +++ b/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; } -- Gitblit v1.8.0