Forráskód Böngészése

多批单改-第1版

wangxin 1 éve
szülő
commit
a02c8d92dc

+ 162 - 98
src/main/java/cn/ezhizao/project/business/controller/BizTechnologicalAmendController.java

@@ -17,7 +17,9 @@ import cn.ezhizao.project.business.service.*;
 import cn.ezhizao.project.system.service.ISysDeptService;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import lombok.Data;
 import org.apache.poi.ss.formula.functions.T;
+import org.springframework.cloud.client.loadbalancer.RequestData;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.bind.annotation.GetMapping;
@@ -87,6 +89,15 @@ public class BizTechnologicalAmendController extends BaseController {
     @Resource
     private IBizDayworkItemService bizDayworkItemService;
 
+    // 静态内部类 RequestData
+    @Data
+    public static class RequestData {
+
+        private List<BizLot> lotList;
+        private List<BizTechnologicalProcessDetail> processList;
+
+    }
+
     /**
      * 查询修改后工艺列表
      */
@@ -144,30 +155,38 @@ public class BizTechnologicalAmendController extends BaseController {
         //查询报工信息
         BizDaywork daywork = new BizDaywork();
         daywork.setLotId(lot.getId());
-        daywork = bizDayworkService.getList(daywork).get(0);
-        lot.setDaywork(daywork);
-        //根据报工id和计划单id查询 furnaceNoInfo
-        BizFurnaceNoInfo furnaceNoInfo = new BizFurnaceNoInfo();
-        furnaceNoInfo.setProductionPlanDetailId(lot.getProductionPlanDetailId());
-        furnaceNoInfo.setDayworkId(daywork.getId());
-
-        //查询箱号
-        BizDayworkCarrier dayworkCarrier = new BizDayworkCarrier();
-        dayworkCarrier.setDayworkId(daywork.getId());
-        dayworkCarrier.setIsChanged(0);
-        List<BizDayworkCarrier> dayworkCarriers = bizDayworkCarrierService.getList(dayworkCarrier);
-        StringBuffer carrierName = new StringBuffer();
-        dayworkCarriers.forEach(item -> {
-            carrierName.append(item.getCarrierCode()).append(", ");
-        });
-        // 删除末尾多余的逗号和空格
-        if (carrierName.length() > 0) {
-            carrierName.delete(carrierName.length() - 2, carrierName.length());
+        List<BizDaywork> dayworks=  bizDayworkService.getList(daywork);
+        if(dayworks.size()>0){
+            daywork = bizDayworkService.getList(daywork).get(0);
+            lot.setDaywork(daywork);
+            //根据报工id和计划单id查询 furnaceNoInfo
+            BizFurnaceNoInfo furnaceNoInfo = new BizFurnaceNoInfo();
+            furnaceNoInfo.setProductionPlanDetailId(lot.getProductionPlanDetailId());
+            furnaceNoInfo.setDayworkId(daywork.getId());
+
+            //查询箱号
+            BizDayworkCarrier dayworkCarrier = new BizDayworkCarrier();
+            dayworkCarrier.setDayworkId(daywork.getId());
+            dayworkCarrier.setIsChanged(0);
+            List<BizDayworkCarrier> dayworkCarriers = bizDayworkCarrierService.getList(dayworkCarrier);
+            StringBuffer carrierName = new StringBuffer();
+            dayworkCarriers.forEach(item -> {
+                carrierName.append(item.getCarrierCode()).append(", ");
+            });
+            // 删除末尾多余的逗号和空格
+            if (carrierName.length() > 0) {
+                carrierName.delete(carrierName.length() - 2, carrierName.length());
+            }
+            lot.setCarrierName(carrierName.toString());
+            //设置furnaceNoInfo
+            lot.setFurnaceNoInfo(bizFurnaceNoInfoService.getList(furnaceNoInfo).size() > 0 ? bizFurnaceNoInfoService.getList(furnaceNoInfo).get(0) : new BizFurnaceNoInfo());
+            lot.getProductionPlanDetail().setRequisitionDepartmentName(sysDeptService.selectDeptById(daywork.getDeptId()).getDeptName());
+
+        }else{
+            lot.setFurnaceNoInfo(new BizFurnaceNoInfo());
+            lot.getProductionPlanDetail().setRequisitionDepartmentName("");
         }
-        lot.setCarrierName(carrierName.toString());
-        //设置furnaceNoInfo
-        lot.setFurnaceNoInfo(bizFurnaceNoInfoService.getList(furnaceNoInfo).size() > 0 ? bizFurnaceNoInfoService.getList(furnaceNoInfo).get(0) : new BizFurnaceNoInfo());
-        lot.getProductionPlanDetail().setRequisitionDepartmentName(sysDeptService.selectDeptById(daywork.getDeptId()).getDeptName());
+
         //查询工序信息
         lot = selectProcess(lot);
 
@@ -243,62 +262,64 @@ public class BizTechnologicalAmendController extends BaseController {
     private List<BizTechnologicalProcessDetail> selectDayworkItem(List<BizTechnologicalProcessDetail> processDetailList, BizLot lot) {
         //查询报工信息
         BizDayworkItem item = new BizDayworkItem();
-        item.setDayworkId(lot.getDaywork().getId());
-        List<BizDayworkItem> dayworkItems = bizDayworkItemService.selectList(item);
-
-        for (BizTechnologicalProcessDetail t : processDetailList) {
-            //给备料赋值,备料没有废品,默认完成
-            if (processDetailList.get(0).getProcessId().equals(t.getProcessId())) {
-                t.setInvestNum(lot.getProductionQuantity());
-                t.setAbandonNum(0);
-                t.setQualifiedNum(lot.getProductionQuantity());
-                t.setStatus("2");
-            }
-            for (BizDayworkItem d : dayworkItems) {
-
-                //如果是单批单改只查询FormDayworkItemId为0的数据
-                if (lot.getIsAmend() == 1 && d.getFormDayworkItemId() == 0) {
-                    continue;
+        if(lot.getDaywork()!=null){
+            item.setDayworkId(lot.getDaywork().getId());
+            List<BizDayworkItem> dayworkItems = bizDayworkItemService.selectList(item);
+
+            for (BizTechnologicalProcessDetail t : processDetailList) {
+                //给备料赋值,备料没有废品,默认完成
+                if (processDetailList.get(0).getProcessId().equals(t.getProcessId())) {
+                    t.setInvestNum(lot.getProductionQuantity());
+                    t.setAbandonNum(0);
+                    t.setQualifiedNum(lot.getProductionQuantity());
+                    t.setStatus("2");
                 }
+                for (BizDayworkItem d : dayworkItems) {
 
-                //根据工序判断,查询每道工序的报工信息
-                if (t.getProcessId().equals(d.getProcessId())) {
-                    //查询状态为完成货工序已完成的状态,计算合格量,废品,投入量
-                    if (d.getStatus().equals("2") || d.getStatus().equals("3")) {
-                        if (d.getRejectNum() != null) {
-                            t.setAbandonNum(t.getAbandonNum() == null ? d.getRejectNum() : t.getAbandonNum() + d.getRejectNum());
-                        } else {
+                    //如果是单批单改只查询FormDayworkItemId为0的数据
+                    if (lot.getIsAmend() == 1 && d.getFormDayworkItemId() == 0) {
+                        continue;
+                    }
+
+                    //根据工序判断,查询每道工序的报工信息
+                    if (t.getProcessId().equals(d.getProcessId())) {
+                        //查询状态为完成货工序已完成的状态,计算合格量,废品,投入量
+                        if (d.getStatus().equals("2") || d.getStatus().equals("3")) {
+                            if (d.getRejectNum() != null) {
+                                t.setAbandonNum(t.getAbandonNum() == null ? d.getRejectNum() : t.getAbandonNum() + d.getRejectNum());
+                            } else {
+                                t.setAbandonNum(0);
+                            }
+                            t.setQualifiedNum(t.getQualifiedNum() == null ? d.getQualifiedNum() : t.getQualifiedNum() + d.getQualifiedNum());
+                            t.setInvestNum(d.getProdNum());
+                        }
+                        //未开始时合格量默,废品默认为0
+                        if (d.getStatus().equals("0")) {
                             t.setAbandonNum(0);
+                            t.setQualifiedNum(0);
+                            t.setInvestNum(d.getProdNum());
+                            //设置状态为未开始
+                            t.setStatus("0");
+                        } else if (d.getStatus().equals("1") || d.getStatus().equals("2")) {
+                            //设置状态为进行中
+                            t.setInvestNum(d.getProdNum());
+                            t.setStatus("1");
+                        } else {
+                            //设置状态为已完成
+                            t.setStatus("2");
                         }
-                        t.setQualifiedNum(t.getQualifiedNum() == null ? d.getQualifiedNum() : t.getQualifiedNum() + d.getQualifiedNum());
-                        t.setInvestNum(d.getProdNum());
-                    }
-                    //未开始时合格量默,废品默认为0
-                    if (d.getStatus().equals("0")) {
-                        t.setAbandonNum(0);
-                        t.setQualifiedNum(0);
-                        t.setInvestNum(d.getProdNum());
-                        //设置状态为未开始
-                        t.setStatus("0");
-                    } else if (d.getStatus().equals("1") || d.getStatus().equals("2")) {
-                        //设置状态为进行中
-                        t.setInvestNum(d.getProdNum());
-                        t.setStatus("1");
-                    } else {
-                        //设置状态为已完成
-                        t.setStatus("2");
-                    }
-                    //设置当前批次状态,当第一道序(不包括备料)状态为未开始时批次状态为未开始
-                    if (processDetailList.get(1).getProcessId().equals(t.getProcessId()) && d.getStatus().equals("0")) {
-                        lot.getDaywork().setStatus(0);
-                    } else if (processDetailList.get(processDetailList.size() - 1).getProcessId().equals(d.getProcessId())) {
-                        //最后一道工序如果状态为不是"未开始,进行中,已完成"当前批次已完成
-                        if (!d.getStatus().equals("1") && !d.getStatus().equals("2") && !d.getStatus().equals("0")) {
-                            lot.getDaywork().setStatus(2);
+                        //设置当前批次状态,当第一道序(不包括备料)状态为未开始时批次状态为未开始
+                        if (processDetailList.get(1).getProcessId().equals(t.getProcessId()) && d.getStatus().equals("0")) {
+                            lot.getDaywork().setStatus(0);
+                        } else if (processDetailList.get(processDetailList.size() - 1).getProcessId().equals(d.getProcessId())) {
+                            //最后一道工序如果状态为不是"未开始,进行中,已完成"当前批次已完成
+                            if (!d.getStatus().equals("1") && !d.getStatus().equals("2") && !d.getStatus().equals("0")) {
+                                lot.getDaywork().setStatus(2);
+                            }
+                        } else {
+                            //当前批次进行中
+                            lot.getDaywork().setStatus(1);
                         }
-                    } else {
-                        //当前批次进行中
-                        lot.getDaywork().setStatus(1);
                     }
                 }
             }
@@ -319,10 +340,74 @@ public class BizTechnologicalAmendController extends BaseController {
         util.exportExcel(response, list, "修改后工艺数据");
     }
 
+
+    @Log(title = "多批单改", businessType = BusinessType.INSERT)
+    @PostMapping("/addMultiAmend")
+    @Transactional
+    public AjaxResult addMultiAmend(@RequestBody RequestData requestData) {
+        List<BizLot> lotList = requestData.getLotList();
+        List<BizLot> newLotList=new ArrayList<>();
+        List<BizTechnologicalProcessDetail> processDetailList = requestData.getProcessList();
+        for (BizLot item : lotList) {
+            BizLot lot = new BizLot();
+            lot.setLotCode(item.getLotCode());
+            lot = bizLotService.getList(lot).get(0);
+
+            BizTechnologicalProcess technologicalProcess = new BizTechnologicalProcess();
+            //新增修改后工艺信息
+            BizTechnologicalAmend amend = new BizTechnologicalAmend();
+            amend.setTenantId(lot.getTenantId());
+            amend.setLotId(lot.getId());
+            amend.setLotCode(lot.getLotCode());
+            amend.setProductionPlanId(lot.getProductionPlanId());
+            amend.setProductionPlanDetailId(lot.getProductionPlanDetailId());
+            amend.setProductId(lot.getProductId());
+            amend.setAmendmentVersions(1);
+            amend.setTechnologicalProcessId(lot.getTechnologicalProcessId());
+            amend.setTechnologyVersion(lot.getTechnologyVersion());
+            amend.setProductDrawingNumber(technologicalProcess.getProductDrawingNumber());
+            amend.setProductShaftCategory(technologicalProcess.getProductShaftCategory());
+            amend.setProductSpecification(technologicalProcess.getProductSpecification());
+            amend.setProductShaftCategoryName(technologicalProcess.getProductShaftCategoryName());
+            amend.setProductCode(technologicalProcess.getProductCode());
+            amend.setProductDescription(technologicalProcess.getProductDescription());
+            bizTechnologicalAmendService.save(amend);
+
+            List<BizTechnologicalAmendDetail> amendDetailList = new ArrayList<>();
+
+            for (BizTechnologicalProcessDetail detail : processDetailList) {
+                BizTechnologicalAmendDetail amendDetail = new BizTechnologicalAmendDetail();
+                amendDetail.setTechnologicalAmendId(amend.getId());
+                amendDetail.setTenantId(amend.getTenantId());
+                amendDetail.setTechnologyVersion(amend.getTechnologyVersion());
+                amendDetail.setProductId(amend.getProductId());
+                amendDetail.setProductCode(amend.getProductCode());
+                amendDetail.setProcessStepNumber(detail.getProcessStepNumber());
+                amendDetail.setProcessId(detail.getProcessId());
+                amendDetail.setProcessKey(detail.getProcessKey());
+                amendDetail.setProcessCode(detail.getProcessCode());
+                amendDetail.setProcessAlias(detail.getProcessAlias());
+                amendDetail.setProductShaftCategory(amend.getProductShaftCategory());
+                amendDetail.setProductShaftCategoryName(amend.getProductShaftCategoryName());
+                amendDetail.setProductDescription(amend.getProductDescription());
+                amendDetailList.add(amendDetail);
+            }
+            updateDayworkItem(item.getId(), amend.getId());
+
+            //修改批次工艺信息
+            lot.setTechnologicalProcessId(amend.getId());
+            lot.setIsAmend(1);
+            bizTechnologicalAmendDetailService.saveBatch(amendDetailList) ;
+            newLotList.add(lot);
+//            bizLotService.updateById(lot);
+        }
+        return success(bizLotService.saveOrUpdateBatch(newLotList));
+    }
+
     /**
      * 新增修改后工艺
      */
-    @Log(title = "修改后工艺", businessType = BusinessType.INSERT)
+    @Log(title = "单批单改", businessType = BusinessType.INSERT)
     @PostMapping("/addAmend/{lotId}")
     @Transactional
     public AjaxResult addAmend(@PathVariable("lotId") Long lotId, @RequestBody List<BizTechnologicalProcessDetail> detailList) {
@@ -348,10 +433,10 @@ public class BizTechnologicalAmendController extends BaseController {
             //查询原始工艺信息
             technologicalProcess = bizTechnologicalProcessService.getById(technologicalAmend.getTechnologicalProcessId());
         } else if (lot.getIsWasteRecycling() == 1) { //是否废品回用
-
-        } else {
             BizTechnologicalWasteRecycling wasteRecycling = bizTechnologicalWasteRecyclingService.getById(lot.getTechnologicalProcessId());
             technologicalProcess = bizTechnologicalProcessService.getById(wasteRecycling.getTechnologicalProcessId());
+        } else {
+            technologicalProcess = bizTechnologicalProcessService.getById(lot.getTechnologicalProcessId());
         }
 
         //新增修改后工艺信息
@@ -392,27 +477,6 @@ public class BizTechnologicalAmendController extends BaseController {
             amendDetail.setProductDescription(amend.getProductDescription());
             amendDetailList.add(amendDetail);
         }
-
-//        使用新方式,暂时注释
-//        int num = 1100;//新增工序排序值
-//        //新增工序信息
-//        for (BizProcess process : processList) {
-//            BizTechnologicalAmendDetail amendDetail = new BizTechnologicalAmendDetail();
-//            amendDetail.setTechnologicalAmendId(amend.getId());
-//            amendDetail.setTenantId(amend.getTenantId());
-//            amendDetail.setTechnologyVersion(amend.getTechnologyVersion());
-//            amendDetail.setProductId(amend.getProductId());
-//            amendDetail.setProductCode(amend.getProductCode());
-//            amendDetail.setProcessStepNumber(Integer.toString(num));
-//            amendDetail.setProcessId(process.getId());
-//            amendDetail.setProcessKey(process.getProcessKey());
-//            amendDetail.setProcessCode(process.getProcessCode());
-//            amendDetail.setProcessAlias(process.getProcessAlias());
-//            amendDetail.setProductShaftCategory(amend.getProductShaftCategory());
-//            amendDetail.setProductShaftCategoryName(amend.getProductShaftCategoryName());
-//            amendDetail.setProductDescription(amend.getProductDescription());
-//            amendDetailList.add(amendDetail);
-//        }
         updateDayworkItem(lotId, amend.getId());
 
         //修改批次工艺信息

+ 2 - 2
src/main/resources/application.yml

@@ -50,8 +50,8 @@ spring:
   cloud:
     nacos:
       discovery:
-        server-addr: 192.168.10.40:8848 # Nacos服务器地址
-#        server-addr: 120.46.159.163:7148 # Nacos服务器地址
+#        server-addr: 192.168.10.40:8848 # Nacos服务器地址
+        server-addr: 120.46.159.163:7148 # Nacos服务器地址
         namespace: ezhizao_dms # 命名空间
         #config:
         #server-addr: 114.116.195.82:8848 # Nacos服务器地址