From a97c0e84c8d1f50aa65935643a580527f30b7ece Mon Sep 17 00:00:00 2001 From: 廖井涛 <2265517004@qq.com> Date: 星期二, 12 三月 2024 08:39:38 +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 | 226 +++++++++++++++++++++++++++++++++++++++++++++++++++++--- 1 files changed, 213 insertions(+), 13 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 bf346f5..9e5daf6 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 @@ -1,23 +1,67 @@ package com.example.erp.service.pp; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; +import com.baomidou.mybatisplus.extension.conditions.update.LambdaUpdateChainWrapper; +import com.example.erp.common.Constants; +import com.example.erp.entity.pp.DamageDetails; +import com.example.erp.entity.pp.FlowCard; import com.example.erp.entity.pp.ReportingWork; +import com.example.erp.entity.pp.ReportingWorkDetail; +import com.example.erp.entity.sd.Order; +import com.example.erp.entity.sd.OrderDetail; import com.example.erp.entity.sd.OrderProcessDetail; -import com.example.erp.mapper.pp.BasicDateProduceMapper; -import com.example.erp.mapper.pp.ReportingWorkMapper; +import com.example.erp.exception.ServiceException; +import com.example.erp.mapper.pp.*; import com.baomidou.dynamic.datasource.annotation.DS; +import com.example.erp.mapper.sd.OrderMapper; +import com.example.erp.mapper.sd.OrderProcessDetailMapper; +import com.example.erp.service.sd.OrderProcessDetailService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; -import java.util.HashMap; -import java.util.Map; +import java.text.SimpleDateFormat; +import java.util.*; @Service @DS("pp") public class ReportingWorkService { - @Autowired + final ReportingWorkMapper reportingWorkMapper; - + final BasicDateProduceMapper basicDateProduceMapper; + final + DamageDetailsMapper damageDetailsMapper; + final + OrderProcessDetailMapper orderProcessDetailMapper; + final + ReportingWorkDetailMapper + reportingWorkDetailMapper; + final OrderMapper + orderMapper; + + final + FlowCardMapper flowCardMapper; + + final + OrderProcessDetailService orderProcessDetailService; + + + + public ReportingWorkService(ReportingWorkMapper reportingWorkMapper, BasicDateProduceMapper basicDateProduceMapper, DamageDetailsMapper damageDetailsMapper, ReportingWorkDetailMapper reportingWorkDetailMapper, OrderProcessDetailMapper orderProcessDetailMapper, OrderProcessDetailService orderProcessDetailService, OrderMapper orderMapper, FlowCardMapper flowCardMapper) { + this.reportingWorkMapper = reportingWorkMapper; + this.basicDateProduceMapper = basicDateProduceMapper; + this.damageDetailsMapper = damageDetailsMapper; + this.reportingWorkDetailMapper = reportingWorkDetailMapper; + this.orderProcessDetailMapper = orderProcessDetailMapper; + this.orderProcessDetailService = orderProcessDetailService; + this.orderMapper = orderMapper; + this.flowCardMapper = flowCardMapper; + } public Map<String, Object> AddSelectLastWorkSv(String processIdStr, String technologyStr, String process) { Map<String, Object> map = new HashMap<>(); @@ -52,41 +96,50 @@ } //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; } } - //璁惧涓嬫媺妗� map.put("device", reportingWorkMapper.SelectWorkBasicDeviceMp(process)); //鐝粍涓嬫媺妗� map.put("teams", reportingWorkMapper.SelectWorkBasicTeamsMp(process)); + map.put("breakageType",reportingWorkMapper.selectBasicNameByType("breakagetype")); + map.put("breakageReason",reportingWorkMapper.selectBasicNameByType("breakagereason")); //鏌ヨ鏈伐搴忔姤宸ラ渶瑕佸摢鍑犲眰锛屼笂宸ュ簭鏄粈涔� String obtainTechnology = reportingWorkMapper.SelectWorkTechnologyMp(processIdStr); - //鍒ゆ柇鏈伐搴忔槸涓嶆槸绗竴閬撳伐搴� if (interceptProcess.equals(process)) { //鏄涓�閬撳伐搴忥紝鏌ヨ娴佺▼鍗℃暟鎹� - map.put("Detail", reportingWorkMapper.SelectTechnologicalNumMp(processIdStr,technologyStr)); - + map.put("Detail", reportingWorkMapper.SelectTechnologicalNumMp(processIdStr,technologyStr,process)); } else { //涓嶆槸绗竴閬撳伐搴忥紝鏌ヨ鎶ュ伐鏁版嵁 - - map.put("Detail", reportingWorkMapper.SelectReworlDetailMp(processIdStr,technologyStr,previousProcess)); + map.put("Detail", reportingWorkMapper.SelectReworlDetailMp(processIdStr,technologyStr,process)); } // 绗竴閬撳伐搴忥紙娴佺▼鍗℃暟+琛ョ墖鏁伴噺-瀹屽伐鏁�-娆$牬鏁�-杩斿伐鏈畬鎴愭暟-绂佺敤鏁伴噺锛� // 鍚庣画宸ュ簭锛堜笂宸ュ簭鎶ュ伐鏁�-瀹屽伐鏁�-娆$牬鏁�-杩斿伐鏈畬鎴愭暟锛� - return map; + //鑾峰彇璇ユ祦绋嬪崱鍙峰巻鍙叉姤宸ュ伐搴� + String historyProcess =reportingWorkMapper.historyProcessMp(processIdStr); + //鍘嗗彶鎶ュ伐宸ュ簭璁惧 + map.put("historyDevice",reportingWorkMapper.historyDeviceMp(historyProcess,process)); + //鍘嗗彶鎶ュ伐宸ュ簭鐝粍 + map.put("historyTeams",reportingWorkMapper.historyTeamsMp(processIdStr,process)); + //鍘嗗彶宸ュ簭 + map.put("historyProcess",reportingWorkMapper.SelectHistoryProcessMp(historyProcess,process)); + + + return map; } public Map<String, Object> SelectProcessSv() { @@ -94,4 +147,151 @@ map.put("process", reportingWorkMapper.SelectProcessMp()); return map; } + + //鎶ュ伐鏂板 + @Transactional(rollbackFor = Exception.class) + public boolean SaveReportingWorkSv(Map<String, Object> reportingWorkMap) { + //鎺ユ敹瑙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); + //鑾峰彇褰撳墠鏈�澶ф姤宸ュ崟鍙风敓鎴愭姤宸ュ崟鍙� + String formattedNumber = String.format("%04d", reportingWorkMapper.selectMaxReportingWorkId()+1); + //鏍煎紡鍖栧綋鍓嶆棩鏈� + Date currentDate = new Date(); + SimpleDateFormat dateFormat = new SimpleDateFormat("yyMMdd"); + String formattedDate = dateFormat.format(currentDate); + String reportingWorkId = "BG"+formattedDate+formattedNumber; + reportingWork.setReportingWorkId(reportingWorkId); + reportingWork.setProcessId(reportingWork.getProcessId().substring(0,13)); + + int reviewState = (int) reportingWorkJson.get("type"); + if(reviewState==1){ + reportingWork.setReviewed(reportingWork.getCreator()); + reportingWork.setReviewedState(1); + }else{ + reportingWork.setReviewedState(0); + } + //涓昏〃鎻掑叆 + reportingWorkMapper.insert(reportingWork); + + //鍓〃寰幆鎻掑叆锛屽苟涓旀彃鍏ユ鐮翠俊鎭〃銆傚啀鏍规嵁娆$牬淇℃伅淇敼璁㈠崟鐜荤拑娴佺▼琛ㄧ殑瀹屽伐鏁伴噺涓庡埡鐮存暟閲� + reportingWorkDetails.forEach(reportingWorkDetail -> { + 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()); + damageDetailsMapper.insert(damageDetail); + }); + } + //鏌ヨ娴佺▼鍗″伐鑹烘祦绋� + String technologicalProcess = reportingWorkMapper.SelectTechnologicalProcess(reportingWork.getProcessId()); + + int index = technologicalProcess.indexOf("-"); + //鑾峰彇宸ヨ壓娴佺▼绗竴涓伐搴� + String interceptProcess = technologicalProcess.substring(0, index); + + //鍒ゆ柇褰撳墠宸ュ簭鏄惁涓虹涓�閬撳伐搴忓伐搴忥紝浣跨敤娴佺▼鍗¤〃鏁伴噺鎴栬�呭皬鐗囨祦绋嬭〃涓婂伐搴忔暟閲� + int processNum = 0; + if (interceptProcess.equals(reportingWork.getThisProcess())) { + processNum = reportingWorkMapper.selectFlowCardNum( + reportingWorkDetail.getOrderNumber(), + reportingWorkDetail.getTechnologyNumber(), + reportingWork.getProcessId(), + reportingWork.getThisProcess() + ); + }else{ + processNum = reportingWorkMapper.selectGlassProcessNum( + reportingWorkDetail.getOrderNumber(), + reportingWorkDetail.getTechnologyNumber(), + reportingWork.getProcessId(), + reportingWork.getThisProcess() + ); + } + + + //鍒ゆ柇鏄惁澶т簬褰撳墠鏁伴噺骞朵笖鎶涘嚭寮傚父 + if(processNum<(reportingWorkDetail.getBreakageQuantity()+reportingWorkDetail.getCompletedQuantity())){ + Map<String,Object> map = new HashMap<>(); + map.put("orderNumber",reportingWorkDetail.getOrderNumber()); + map.put("technologyNumber",reportingWorkDetail.getOrderNumber()); + map.put("processNum",processNum); + map.put("sumNum",reportingWorkDetail.getBreakageQuantity()+reportingWorkDetail.getCompletedQuantity()); + String msg = JSON.toJSONString(map); + throw new ServiceException(Constants.Code_600,msg); + } + + OrderProcessDetail orderProcessDetail = new OrderProcessDetail(); + orderProcessDetail.setBrokenNum(reportingWorkDetail.getBreakageQuantity()); + orderProcessDetail.setReportingWorkNum(reportingWorkDetail.getCompletedQuantity()); + orderProcessDetail.setReportingWorkNumCount(reportingWorkDetail.getCompletedQuantity()); + + //鏍规嵁璁㈠崟id锛岃鍗曞簭鍙凤紝浠ュ強灏忕墖搴忓彿 鏇存柊灏忕墖娴佺▼鐨勫畬宸ユ暟閲忎互鍙婂埡鐮存暟閲� + LambdaUpdateWrapper<OrderProcessDetail> updateWrapper = new LambdaUpdateWrapper<>(); + updateWrapper.eq(OrderProcessDetail::getOrderNumber, reportingWorkDetail.getOrderNumber()) + .eq(OrderProcessDetail::getProcessId, reportingWork.getProcessId().substring(0,13)) + .eq(OrderProcessDetail::getOrderId, reportingWork.getOrderId()) + .eq(OrderProcessDetail::getProcess, reportingWork.getThisProcess()) + .eq(OrderProcessDetail::getTechnologyNumber, reportingWorkDetail.getTechnologyNumber()) + .setSql("reporting_work_num_count = reporting_work_num_count +"+orderProcessDetail.getReportingWorkNum()) + .setSql("reporting_work_num =reporting_work_num +"+orderProcessDetail.getReportingWorkNum()) + .setSql("broken_num =broken_num +"+orderProcessDetail.getBrokenNum()); + orderProcessDetailMapper.update(null,updateWrapper); + reportingWorkDetailMapper.insert(reportingWorkDetail); + //鏇存柊娴佺▼鍗¤〃鐨勬姤宸ユ暟閲� + if(Objects.equals(reportingWork.getNextProcess(), "")){ + LambdaUpdateWrapper<FlowCard> flowCardLambdaUpdateWrapper = + new LambdaUpdateWrapper<>(); + flowCardLambdaUpdateWrapper + .eq(FlowCard::getProcessId, reportingWork.getProcessId()) + .eq(FlowCard::getOrderNumber, reportingWorkDetail.getOrderNumber()) + .eq(FlowCard::getTechnologyNumber, reportingWorkDetail.getTechnologyNumber()) + .setSql("inventory_quantity = inventory_quantity +"+orderProcessDetail.getReportingWorkNum()); + flowCardMapper.update(null,flowCardLambdaUpdateWrapper); + } + + + }); + return true; + } + + //涓嬪伐搴忓鏍告柟娉� + public boolean ReviewReportingWorkSv(Map<String, String> reportingWork) { + + String processId = reportingWork.get("processId"); + + LambdaUpdateWrapper + <ReportingWork> updateWrapper = new LambdaUpdateWrapper<>(); + updateWrapper + .eq(ReportingWork::getProcessId, processId.substring(0,13)) + .eq(ReportingWork::getThisProcess,reportingWork.get("process")) + .eq(ReportingWork::getReviewedState,0) + .setSql("reviewed_state =1"); + reportingWorkMapper.update(null,updateWrapper); + + + 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); + + + Map<String,Object> map = new HashMap<>(); + map.put("reportingWork",reportingWork); + map.put("reportingWorkDetails",reportingWorkDetails); + return map; + + } } -- Gitblit v1.8.0