From 2f640b1038fa331954f78ed1f4317212cf5bb34d Mon Sep 17 00:00:00 2001 From: chenlu <1320612696@qq.com> Date: 星期五, 07 六月 2024 16:56:06 +0800 Subject: [PATCH] Merge branch 'master' of http://10.153.19.25:10101/r/ERP_override --- north-glass-erp/src/main/java/com/example/erp/service/pp/ReportingWorkService.java | 217 +++++++++++++++++++++++++++++++++++++++++++++-------- 1 files changed, 182 insertions(+), 35 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 5d09668..e81a0ae 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 @@ -20,12 +20,12 @@ import com.example.erp.mapper.sd.OrderMapper; import com.example.erp.mapper.sd.OrderProcessDetailMapper; import com.example.erp.service.sd.OrderProcessDetailService; -import lombok.val; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.text.SimpleDateFormat; +import java.time.LocalDateTime; import java.util.*; @Service @@ -68,10 +68,11 @@ //鏌ヨ娴佺▼鍗″伐鑹烘祦绋� String technologicalProcess = reportingWorkMapper.SelectTechnologicalProcess(processIdStr); - int index = technologicalProcess.indexOf("-"); - //鑾峰彇宸ヨ壓娴佺▼绗竴涓伐搴� - String interceptProcess = technologicalProcess.substring(0, index); + + String[] processList = technologicalProcess.split("->"); + //鑾峰彇宸ヨ壓娴佺▼绗竴涓伐搴� + String interceptProcess = processList[0]; int length = processList.length; //瀹氫箟褰撳墠宸ュ簭涓婁笅宸ュ簭 @@ -94,9 +95,7 @@ } else { nextProcess = processList[i + 1]; } - //System.out.println("褰撳墠宸ュ簭锛�" + process + " 涓婁竴閬撳伐搴忥細" + previousProcess + " 涓嬩竴閬撳伐搴忥細" + nextProcess); //鏌ヨ褰撳墠宸ュ簭鐨勮〃澶存暟鎹� - //System.out.println(reportingWorkMapper.AddSelectLastWorkMp(processIdStr, technologyStr,previousProcess,nextProcess,process)); map.put("data", reportingWorkMapper.AddSelectLastWorkMp(processIdStr, technologyStr, previousProcess, nextProcess, process)); map.put("thisProcess", processList); break; @@ -135,11 +134,10 @@ map.put("historyTeams", reportingWorkMapper.historyTeamsMp(processIdStr, process)); //鍘嗗彶宸ュ簭 map.put("historyProcess", reportingWorkMapper.SelectHistoryProcessMp(historyProcess, process)); - - return map; } + //鏌ヨ宸ュ簭 public Map<String, Object> SelectProcessSv() { Map<String, Object> map = new HashMap<>(); map.put("process", reportingWorkMapper.SelectProcessMp()); @@ -161,7 +159,7 @@ String formattedDate = dateFormat.format(currentDate); String reportingWorkId = "BG" + formattedDate + formattedNumber; reportingWork.setReportingWorkId(reportingWorkId); - reportingWork.setProcessId(reportingWork.getProcessId().substring(0, 13)); + reportingWork.setProcessId(reportingWork.getProcessId().substring(0, 14)); int reviewState = (int) reportingWorkJson.get("type"); if (reviewState == 1) { @@ -172,17 +170,30 @@ } //涓昏〃鎻掑叆 reportingWorkMapper.insert(reportingWork); - //鍓〃寰幆鎻掑叆锛屽苟涓旀彃鍏ユ鐮翠俊鎭〃銆傚啀鏍规嵁娆$牬淇℃伅淇敼璁㈠崟鐜荤拑娴佺▼琛ㄧ殑瀹屽伐鏁伴噺涓庡埡鐮存暟閲� reportingWorkDetails.forEach(reportingWorkDetail -> { +// reportingWork.setThisProcessQuantity( +// reportingWork.getThisProcessQuantity() +// +reportingWorkDetail.getCompletedQuantity() +// +reportingWorkDetail.getBreakageQuantity()); +// reportingWork.setThisCompletedQuantity( +// reportingWork.getThisCompletedQuantity()+reportingWorkDetail.getCompletedQuantity()); +// reportingWork.setThisWornQuantity( +// reportingWork.getThisWornQuantity()+reportingWorkDetail.getBreakageQuantity()); + + reportingWorkDetail.setReportingWorkId(reportingWorkId); List<DamageDetails> damageDetails = reportingWorkDetail.getDamageDetails(); + //娆$牬鏄庣粏琛ㄦ彃鍏ユ暟鎹� if (damageDetails != null && !damageDetails.isEmpty()) { damageDetails.forEach(damageDetail -> { damageDetail.setReportingWorkId(reportingWorkId); damageDetail.setOrderNumber(reportingWorkDetail.getOrderNumber()); damageDetail.setProcessId(reportingWork.getProcessId()); damageDetail.setTechnologyNumber(reportingWorkDetail.getTechnologyNumber()); + if (!damageDetail.getResponsibleProcess().equals(reportingWork.getThisProcess())) { + damageDetail.setQualityInsStatus(1); + } damageDetailsMapper.insert(damageDetail); }); } @@ -231,7 +242,7 @@ //鏍规嵁璁㈠崟id锛岃鍗曞簭鍙凤紝浠ュ強灏忕墖搴忓彿 鏇存柊灏忕墖娴佺▼鐨勫畬宸ユ暟閲忎互鍙婂埡鐮存暟閲� LambdaUpdateWrapper<OrderProcessDetail> updateWrapper = new LambdaUpdateWrapper<>(); updateWrapper.eq(OrderProcessDetail::getOrderNumber, reportingWorkDetail.getOrderNumber()) - .eq(OrderProcessDetail::getProcessId, reportingWork.getProcessId().substring(0, 13)) + .eq(OrderProcessDetail::getProcessId, reportingWork.getProcessId().substring(0, 14)) .eq(OrderProcessDetail::getOrderId, reportingWork.getOrderId()) .eq(OrderProcessDetail::getProcess, reportingWork.getThisProcess()) .eq(OrderProcessDetail::getTechnologyNumber, reportingWorkDetail.getTechnologyNumber()) @@ -239,7 +250,12 @@ .setSql("reporting_work_num =reporting_work_num +" + orderProcessDetail.getReportingWorkNum()) .setSql("broken_num =broken_num +" + orderProcessDetail.getBrokenNum()); orderProcessDetailMapper.update(null, updateWrapper); - reportingWorkDetailMapper.insert(reportingWorkDetail); + + //鍒ゆ柇瀹屽伐鏁伴噺鍜屽埡鐮存暟閲忔槸鍚︿负0锛屼负0鍒欎笉鎻掑叆鍒版暟鎹簱 + if (!(reportingWorkDetail.getCompletedQuantity() == 0 && reportingWorkDetail.getBreakageQuantity() == 0)) { + reportingWorkDetailMapper.insert(reportingWorkDetail); + } + //鏇存柊娴佺▼鍗¤〃鐨勬姤宸ユ暟閲� if (Objects.equals(reportingWork.getNextProcess(), "")) { LambdaUpdateWrapper<FlowCard> flowCardLambdaUpdateWrapper = @@ -254,6 +270,7 @@ }); + return true; } @@ -265,7 +282,7 @@ LambdaUpdateWrapper <ReportingWork> updateWrapper = new LambdaUpdateWrapper<>(); updateWrapper - .eq(ReportingWork::getProcessId, processId.substring(0, 13)) + .eq(ReportingWork::getProcessId, processId.substring(0, 14)) .eq(ReportingWork::getThisProcess, reportingWork.get("process")) .eq(ReportingWork::getReviewedState, 0) .setSql("reviewed_state =1"); @@ -275,37 +292,140 @@ return true; } + //鎶ュ伐淇敼鏌ヨ public Map<String, Object> selectUpdateReportingWorkSv(String reportingWorkId) { + //鏌ヨ鎶ュ伐涓昏〃淇℃伅 ReportingWork reportingWork = reportingWorkMapper.selectOne(new LambdaQueryWrapper<ReportingWork>() .eq(ReportingWork::getReportingWorkId, reportingWorkId)); + //鏍规嵁鎶ュ伐淇℃伅鏌ヨ璁㈠崟涓昏〃淇℃伅 reportingWork.setOrder( orderMapper.selectOne(new LambdaQueryWrapper<Order>() .eq(Order::getOrderId, reportingWork.getOrderId()))); reportingWork.setFlowCard(new FlowCard()); - List<ReportingWorkDetail> reportingWorkDetails = reportingWorkDetailMapper.selectByreportingWorkId(reportingWorkId); + List<Map<String, Object>> reportingWorkDetails = reportingWorkMapper.selectByReportingWorkId(reportingWorkId, reportingWork.getNextProcess()); + reportingWorkDetails.forEach(reportingWorkDetail -> { + List<DamageDetails> damageDetailsList = new ArrayList<>(); + damageDetailsList = damageDetailsMapper.selectList(new LambdaQueryWrapper<DamageDetails>() + .eq(DamageDetails::getReportingWorkId, reportingWorkId) + .eq(DamageDetails::getOrderNumber, reportingWorkDetail.get("order_number")) + .eq(DamageDetails::getTechnologyNumber, reportingWorkDetail.get("technology_number")) + ); + reportingWorkDetail.put("damageDetails", damageDetailsList); + }); Map<String, Object> map = new HashMap<>(); map.put("reportingWork", reportingWork); map.put("reportingWorkDetails", reportingWorkDetails); + map.put("basic", getReportingWorkBase(reportingWork.getProcessId(), reportingWork.getThisProcess())); + //鏍规嵁鎶ュ伐缂栧彿鑾峰彇灞� + map.put("layer", reportingWorkMapper.selectLayerByReportingWorkId(reportingWorkId)); + + return map; + } + + //鎶ュ伐涓嬫媺妗嗘暟鎹� + private Map<String, Object> getReportingWorkBase(String processId, String thisProcess) { + Map<String, Object> map = new HashMap<>(); + //璁惧涓嬫媺妗� + map.put("deviceType", reportingWorkMapper.SelectWorkBasicDeviceMp(thisProcess)); + //鐝粍涓嬫媺妗� + map.put("teamsType", reportingWorkMapper.SelectWorkBasicTeamsMp(thisProcess)); + + map.put("breakageType", reportingWorkMapper.selectBasicNameByType("breakagetype")); + map.put("breakageReason", reportingWorkMapper.selectBasicNameByType("breakagereason")); + + //鑾峰彇璇ユ祦绋嬪崱鍙峰巻鍙叉姤宸ュ伐搴� + String historyProcess = reportingWorkMapper.historyProcessMp(processId); + //鍘嗗彶鎶ュ伐宸ュ簭璁惧 + map.put("historyDevice", reportingWorkMapper.historyDeviceMp(historyProcess, thisProcess)); + //鍘嗗彶鎶ュ伐宸ュ簭鐝粍 + map.put("historyTeams", reportingWorkMapper.historyTeamsMp(processId, thisProcess)); + //鍘嗗彶宸ュ簭 + map.put("historyProcess", reportingWorkMapper.SelectHistoryProcessMp(historyProcess, thisProcess)); + + return map; + } + + + @Transactional + //鎶ュ伐淇敼 + public Boolean updateReportingWork(Map<String, Object> reportingWorkMap, String reviewState) { + //鎺ユ敹瑙f瀽涓婚檮琛ㄤ俊鎭� + 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); + + //鍒犻櫎鍒虹牬鏄庣粏琛ㄥ埡鐮存暟鎹� + 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())); + + //鏇寸粏鎶ュ伐涓昏〃 + reportingWorkMapper.updateById(reportingWork); + reportingWorkDetails.forEach(reportingWorkDetail -> { + reportingWorkDetail.setReportingWorkId(reportingWork.getReportingWorkId()); + List<DamageDetails> damageDetails = reportingWorkDetail.getDamageDetails(); + //姣忎竴鏉℃姤宸ユ暟鎹惊鐜彃鍏ユ鐮存槑缁嗚〃 + if (damageDetails != null && !damageDetails.isEmpty()) { + damageDetails.forEach(damageDetail -> { + if (!Objects.equals(reportingWork.getThisProcess(), damageDetail.getResponsibleProcess())) { + 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())); + //淇敼娴佺▼鍗¤〃搴撳瓨鏁伴噺 + 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"); + return true; } //鎶ュ伐绠$悊鏌ヨ public Map<String, Object> selectReportingWorkSv(Integer pageNum, Integer pageSize, java.sql.Date selectTime1, java.sql.Date selectTime2, String orderId, ReportingWork reportingWork) { Integer offset = (pageNum - 1) * pageSize; - if (orderId.equals("null")) { + if ("null".equals(orderId)) { orderId = ""; } Map<String, Object> map = new HashMap<>(); map.put("data", reportingWorkMapper.selectReportingWorkMp(offset, pageSize, selectTime1, selectTime2, orderId, reportingWork)); map.put("total", reportingWorkMapper.getPageTotal(offset, pageSize, selectTime1, selectTime2, orderId, reportingWork)); - //System.out.println(map.get("data")); return map; } + //鍒犻櫎鎶ュ伐 public Boolean deleteWorkSv(String reportingWorkId, String processId, String thisProcess) { if (!reportingWorkId.isEmpty() && !processId.isEmpty() && !thisProcess.isEmpty()) { //鑾峰彇褰撳墠鎶ュ伐缂栧彿涓嬪伐搴� @@ -318,7 +438,6 @@ if (lastProcess.equals(thisProcess)) {//鏄叆搴撳伐搴� //鏌ヨ璇ユ祦绋嬪崱鏁伴噺銆佸彲鍏ュ簱鏁伴噺銆佸凡鍏ュ簱鏁伴噺 Map<String, Object> list = reportingWorkMapper.selectReceiptQuantity(processId); - // System.out.println(list.get("quantity")+"--"+list.get("inventoryQuantity")+"---"+list.get("receivedQuantity")); if (list.get("quantity") == list.get("receiptQuantity")) { return false; } else { @@ -329,13 +448,11 @@ //鏌ヨ璇ユ姤宸ョ紪鍙锋湰宸ュ簭瀹屽伐鏁伴噺 Integer completedQuantity = reportingWorkMapper.selectCompletedQuantity(reportingWorkId); //褰撹宸ュ簭瀹屽伐鏁伴噺灏忎簬绛変簬宸插叆搴撴暟閲忔椂 - //System.out.println("inventoryQuantity:" + inventoryQuantity +"completedQuantity:" + completedQuantity + "---receiptQuantity:" + receiptQuantity); //鍙叆搴撴暟閲�-宸插叆搴撴暟閲�>=鎶ュ伐缂栧彿鏈伐搴忓畬宸ユ暟閲� 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")); //鏇存柊鎶ュ伐娴佺▼琛ㄦ暟鎹� @@ -349,27 +466,57 @@ } } + } 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); + return true; + } else { + 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); - return true; - } - else { - return false; - } - } } else { return false; } } + + //鏌ヨ璐ㄦ瀹℃牳 + public Map<String, Object> selectQualityTestingSv(Integer pageNum, Integer pageSize, java.sql.Date selectTime1, java.sql.Date selectTime2, Integer state, String processId, ReportingWork reportingWork) { + Integer offset = (pageNum - 1) * pageSize; + if ("null".equals(processId)) { + processId = ""; + } + Map<String, Object> map = new HashMap<>(); + map.put("data", reportingWorkMapper.selectQualityTestingMp(offset, pageSize, selectTime1, selectTime2, state, processId, reportingWork)); + map.put("total", reportingWorkMapper.getQualityPageTotal(offset, pageSize, selectTime1, selectTime2, state, processId, reportingWork)); + + return map; + } + + //淇敼璐ㄦ瀹℃牳鐘舵�� + public Boolean updateQualityStatusSv(String reportingWorkId, String username) { + if (!reportingWorkId.isEmpty()) { + reportingWorkMapper.updateQualityStatusMp(reportingWorkId, username); + return true; + } else { + return false; + } + } + + //鏌ヨ璐ㄦ鏄庣粏锛堟湭浣跨敤锛� + public Map<String, Object> detailsQualitySv(String reportingWorkId, String processId, String thisProcess, ReportingWork reportingWork) { + Map<String, Object> map = new HashMap<>(); + map.put("data", reportingWorkMapper.detailsQualityMp(reportingWorkId, reportingWork)); + map.put("basic", getReportingWorkBase(processId, thisProcess)); + + return map; + } } -- Gitblit v1.8.0