ezhizao_zx 11 months ago
parent
commit
1e5325c65b

+ 103 - 64
src/main/java/cn/ezhizao/project/business/controller/BizOutsourcedOrderController.java

@@ -24,7 +24,6 @@ import cn.ezhizao.project.system.service.ISysDeptService;
 import cn.ezhizao.project.system.service.ISysUserService;
 import cn.hutool.extra.template.TemplateException;
 import freemarker.template.Template;
-import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.transaction.annotation.Transactional;
@@ -69,7 +68,7 @@ public class BizOutsourcedOrderController extends BaseController {
     @Resource
     private IBizDayworkCarrierService iBizDayworkCarrierService;
     @Resource
-    private IBizOutsourcedRecordsService iBizOutsourcedRecordsService;
+    private IBizOutsourcedRecordsService bizOutsourcedRecordsService;
 
     @Resource
     private ISysUserService userService;
@@ -132,8 +131,8 @@ public class BizOutsourcedOrderController extends BaseController {
         bizOutsourcedOrder = bizOutsourcedOrderService.getById(bizOutsourcedOrder);
         BizOutsourcedOrderDetail bizOutsourcedOrderDetail = new BizOutsourcedOrderDetail();
         bizOutsourcedOrderDetail.setMasterId(bizOutsourcedOrder.getId());
-        SysUser user=userService.selectUserById(bizOutsourcedOrder.getCreatorId());
-        if(user!=null){
+        SysUser user = userService.selectUserById(bizOutsourcedOrder.getCreatorId());
+        if (user != null) {
             bizOutsourcedOrder.setNickName(user.getNickName());
         }
 
@@ -211,7 +210,7 @@ public class BizOutsourcedOrderController extends BaseController {
             // 然后,给每个对象的 sum 属性赋值
             for (BizOutsourcedOrderDetail item : listItem) {
                 item.setSum(sum);
-                item.setOriginalCarrierCount(item.getNewCarrierCount()!=null && item.getNewCarrierCount()!=0 ? item.getNewCarrierCount() : item.getOriginalCarrierCount());
+                item.setOriginalCarrierCount(item.getNewCarrierCount() != null && item.getNewCarrierCount() != 0 ? item.getNewCarrierCount() : item.getOriginalCarrierCount());
             }
 
         }
@@ -441,13 +440,14 @@ public class BizOutsourcedOrderController extends BaseController {
                         .collect(Collectors.joining(","));
                 //赋值给新箱号
                 detail.setNewCarrier(formattedString);
-            }else{
+            } else {
                 detail.setNewCarrier("");
             }
         });
         outsourcedOrderDetails = bizOutsourcedOrderDetailService.batchSave(outsourcedOrderDetails, bizOutsourcedOrder);
         return success(bizOutsourcedOrderDetailProcessService.batchSave(outsourcedOrderDetails));
     }
+
     @Log(title = "外协单主带箱方式,是整单的。如果换新箱子,明细中,都需要更换箱子", businessType = BusinessType.INSERT)
     @PostMapping("/submitDetails")
     @Transactional
@@ -468,16 +468,16 @@ public class BizOutsourcedOrderController extends BaseController {
             String codeValue;
             String codeType = "outsourcedOrderCode";
             //查询redis中外协单号的值
-            String previous = redisCache.hasKey(codeType) ? redisCache.getCacheObject(codeType) :"";
+            String previous = redisCache.hasKey(codeType) ? redisCache.getCacheObject(codeType) : "";
             //若不存在,则直接存入
             if (previous.isEmpty()) {
                 previous = ("WFD" + formattedDate + "00001");
             } else {
-                codeValue=previous;
+                codeValue = previous;
                 int lastFourDigits = Integer.parseInt(codeValue.substring(5, 10));
                 lastFourDigits += 1; // 加1
                 codeValue = codeValue.substring(0, 5) + String.format("%05d", lastFourDigits);
-                previous=codeValue;
+                previous = codeValue;
             }
             //存到redis中
             redisCache.setCacheObject(codeType, previous);
@@ -523,25 +523,24 @@ public class BizOutsourcedOrderController extends BaseController {
                 //如果没点换箱,用的原箱,也要像新箱那种方式存,为了拿到newCarriers
                 List<String> detailOriginalCarriers = Arrays.stream(detail.getOriginalCarrier().split(",")).collect(Collectors.toList());
                 List<BizCarrier> orignialCarries = new ArrayList<>();
-               for(int i = 0;i<detailOriginalCarriers.size();i++) {
-                   for(int j = 0;j<orignalCarrierList.size();j++)
-                   {
-                       if(detailOriginalCarriers.get(i).equals(orignalCarrierList.get(j).getCarrierCode())) {
-                           BizCarrier bizCarrier = new BizCarrier();
-                           bizCarrier.setCode(orignalCarrierList.get(j).getCarrierCode());
-                           bizCarrier.setId(orignalCarrierList.get(j).getCarrierId());
-                           orignialCarries.add(bizCarrier);
-                       }
-                   }
-               }
-                String formattedString =orignialCarries.stream()
+                for (int i = 0; i < detailOriginalCarriers.size(); i++) {
+                    for (int j = 0; j < orignalCarrierList.size(); j++) {
+                        if (detailOriginalCarriers.get(i).equals(orignalCarrierList.get(j).getCarrierCode())) {
+                            BizCarrier bizCarrier = new BizCarrier();
+                            bizCarrier.setCode(orignalCarrierList.get(j).getCarrierCode());
+                            bizCarrier.setId(orignalCarrierList.get(j).getCarrierId());
+                            orignialCarries.add(bizCarrier);
+                        }
+                    }
+                }
+                String formattedString = orignialCarries.stream()
                         .map(item -> item.getId() + "|" + item.getCode())
                         .collect(Collectors.joining(","));
-                    detail.setNewCarrier(formattedString);
-                    detail.setNewCarrierName(orignialCarries.stream()
-                            .map(BizCarrier::getCode)
-                            .collect(Collectors.joining(",")));
-               // detail.setNewCarrier(detail.getOriginalCarrier());
+                detail.setNewCarrier(formattedString);
+                detail.setNewCarrierName(orignialCarries.stream()
+                        .map(BizCarrier::getCode)
+                        .collect(Collectors.joining(",")));
+                // detail.setNewCarrier(detail.getOriginalCarrier());
             }
         });
         List<BizOutsourcedRecords> outsourcedRecordsList = new ArrayList<>();
@@ -553,60 +552,59 @@ public class BizOutsourcedOrderController extends BaseController {
         // 创建一个 SimpleDateFormat 对象,并设置所需的日期格式
         //保存修改记录
         outsourcedOrderDetails.forEach(detail -> {
-                BizOutsourcedRecords saveRecords = new BizOutsourcedRecords();
-                saveRecords.setUserName(SecurityUtils.getLoginUser().getUser().getUserName());
-                saveRecords.setNickName(SecurityUtils.getLoginUser().getUser().getNickName());
-              if(bizOutsourcedOrder.getId() == null) {
-                  saveRecords.setMethod("创建");
-              }else {
-                  saveRecords.setMethod("修改");
-              }
-                saveRecords.setFormCode(bizOutsourcedOrder.getFormCode());
-                saveRecords.setSupplierId(bizOutsourcedOrder.getSupplierId());
-                saveRecords.setSupplierName(bizOutsourcedOrder.getSupplierName());
-                saveRecords.setLotId(detail.getLotId());
-                saveRecords.setLotCode(detail.getLotCode());
-                saveRecords.setProductDescription(detail.getProductDescription());
-                saveRecords.setProductNum(detail.getProductNum());
-                if(detail.getNewCarriers().size()>0) {
-                    saveRecords.setNewCarrier(detail.getNewCarriers().stream()
-                            .map(BizCarrier::getCode)
-                            .collect(Collectors.joining(",")));
-                }else{
-                    saveRecords.setNewCarrier(detail.getOriginalCarrier());
-                }
-                saveRecords.setProcessNames(detail.getProcessNames());
-                saveRecords.setStartTime(formattedDate);
+            BizOutsourcedRecords saveRecords = new BizOutsourcedRecords();
+            saveRecords.setUserName(SecurityUtils.getLoginUser().getUser().getUserName());
+            saveRecords.setNickName(SecurityUtils.getLoginUser().getUser().getNickName());
+            if (bizOutsourcedOrder.getId() == null) {
+                saveRecords.setMethod("创建");
+            } else {
+                saveRecords.setMethod("修改");
+            }
+            saveRecords.setFormCode(bizOutsourcedOrder.getFormCode());
+            saveRecords.setSupplierId(bizOutsourcedOrder.getSupplierId());
+            saveRecords.setSupplierName(bizOutsourcedOrder.getSupplierName());
+            saveRecords.setLotId(detail.getLotId());
+            saveRecords.setLotCode(detail.getLotCode());
+            saveRecords.setProductDescription(detail.getProductDescription());
+            saveRecords.setProductNum(detail.getProductNum());
+            if (detail.getNewCarriers().size() > 0) {
+                saveRecords.setNewCarrier(detail.getNewCarriers().stream()
+                        .map(BizCarrier::getCode)
+                        .collect(Collectors.joining(",")));
+            } else {
+                saveRecords.setNewCarrier(detail.getOriginalCarrier());
+            }
+            saveRecords.setProcessNames(detail.getProcessNames());
+            saveRecords.setStartTime(formattedDate);
             outsourcedRecordsList.add(saveRecords);
         });
         //修改主表信息
         bizOutsourcedOrderService.saveOrUpdate(bizOutsourcedOrder);
-        outsourcedRecordsList.forEach(item ->{
+        outsourcedRecordsList.forEach(item -> {
             item.setMasterId(bizOutsourcedOrder.getId());
         });
-        iBizOutsourcedRecordsService.saveBatch(outsourcedRecordsList);
-
+        bizOutsourcedRecordsService.saveBatch(outsourcedRecordsList);
 
 
         //判断是否使用新箱子
         //根据 detail.getNewCarriers()判断是否绑定了新箱子,如果有数据表示绑定新箱子,找出对应的dayworkId,解绑对应的箱子
         List<Long> dayworkIds = outsourcedOrderDetails.stream().filter(detail -> detail.getNewCarriers().size() > 0).map(BizOutsourcedOrderDetail::getDayworkId).collect(Collectors.toList());
-        if(dayworkIds.size()>0){
+        if (dayworkIds.size() > 0) {
             iBizDayworkCarrierService.removeByDayworkIds(dayworkIds);
         }
 
         iBizDayworkCarrierService.saveBatch(carrierList);
         outsourcedOrderDetails = bizOutsourcedOrderDetailService.updateOrSave(outsourcedOrderDetails, bizOutsourcedOrder);
-        List<BizOutsourcedOrderDetail> oldDetailList =bizOutsourcedOrderDetailService.query().eq("master_id",bizOutsourcedOrder.getId()).list();
+        List<BizOutsourcedOrderDetail> oldDetailList = bizOutsourcedOrderDetailService.query().eq("master_id", bizOutsourcedOrder.getId()).list();
         //删除或修改收回明细(通过工序判断,如果工序变了,如果已经填写了收回单,则删除收回单该批次的明细,如果只是修改了箱号,则编辑回收单该批次的明细)
-        bizReturnReceiptDetailService.removeOrEditDetails(outsourcedOrderDetails,oldDetailList);
+        bizReturnReceiptDetailService.removeOrEditDetails(outsourcedOrderDetails, oldDetailList);
         //修改外协明细表
-        saveOrUpdateBatch(bizOutsourcedOrderDetailService,outsourcedOrderDetails,oldDetailList);
+        saveOrUpdateBatch(bizOutsourcedOrderDetailService, outsourcedOrderDetails, oldDetailList);
         List<String> formCodeList = outsourcedOrderDetails.stream().map(BizOutsourcedOrderDetail::getFormCode).collect(Collectors.toList());
         List<BizOutsourcedOrderDetail> newDetaillist = bizOutsourcedOrderDetailService.query().in("form_code", formCodeList).list();
-        for(int i = 0;i<newDetaillist.size();i++) {
-            for(int j =0;j<outsourcedOrderDetails.size();j++) {
-                if(newDetaillist.get(i).getLotId().equals(outsourcedOrderDetails.get(j).getLotId())) {
+        for (int i = 0; i < newDetaillist.size(); i++) {
+            for (int j = 0; j < outsourcedOrderDetails.size(); j++) {
+                if (newDetaillist.get(i).getLotId().equals(outsourcedOrderDetails.get(j).getLotId())) {
                     newDetaillist.get(i).setProcesses(outsourcedOrderDetails.get(j).getProcesses());
                 }
             }
@@ -654,6 +652,7 @@ public class BizOutsourcedOrderController extends BaseController {
         }
         return success();
     }
+
     /**
      * 修改外协单主
      * 带箱方式,是整单的。如果换新箱子,明细中,都需要更换箱子
@@ -824,7 +823,7 @@ public class BizOutsourcedOrderController extends BaseController {
         flag = bizOutsourcedOrderDetailProcessService.query().in("master_id", ids).list().stream().anyMatch(item -> item.getStatus() == 1);
         List<Long> outsourcedDetailIds = bizOutsourcedOrderDetailService.query().in("master_id", ids).list().stream().map(BizOutsourcedOrderDetail::getId).collect(Collectors.toList());
         flag = bizReturnReceiptDetailService.query().in("outsource_detail_id", outsourcedDetailIds).list().stream().anyMatch(item -> item.getStatus() == 1);
-        if(flag) {
+        if (flag) {
             return error("发出单内存在已经报工或已经审核确认的批次,不能删除!");
         }
         //删除收回单明细及收回单主表信息
@@ -871,7 +870,7 @@ public class BizOutsourcedOrderController extends BaseController {
         // 获取该外协单的所有批次
         // 获取对应子计划的所有批次
 //        List<BizLot> lots =
-        List<BizLot> allLots = bizLotService.query().in("production_plan_detail_id",detail.getPlanDetails() == null || detail.getPlanDetails().isEmpty() ? Collections.singletonList(0L) : detail.getPlanDetails().stream().map(BizProductionPlanDetail::getId).collect(Collectors.toList())).list();
+        List<BizLot> allLots = bizLotService.query().in("production_plan_detail_id", detail.getPlanDetails() == null || detail.getPlanDetails().isEmpty() ? Collections.singletonList(0L) : detail.getPlanDetails().stream().map(BizProductionPlanDetail::getId).collect(Collectors.toList())).list();
         // 已开始生产的所有批次
         List<BizLot> workedLots = bizLotService.query().exists("(select 1 from biz_daywork t where t.deleted = 0 and t.lot_id = biz_lot.id)").list();
         List<BizOutsourcedOrderDetail> details = bizOutsourcedOrderDetailService.query().eq("master_id", detail.getMasterId()).in("lot_id", allLots.isEmpty() ? Collections.singletonList(0L) : allLots.stream().map(BizLot::getId).collect(Collectors.toList())).list();
@@ -913,6 +912,27 @@ public class BizOutsourcedOrderController extends BaseController {
 
 
     private void saveAllForFirst(BizOutsourcedOrder bizOutsourcedOrder) {
+        SimpleDateFormat dateFormat = new SimpleDateFormat("yy"); // 定义日期格式
+        String formattedDate = dateFormat.format(new Date());
+        String codeValue;
+        String codeType = "outsourcedOrderCode";
+        //查询redis中外协单号的值
+        String previous = redisCache.hasKey(codeType) ? redisCache.getCacheObject(codeType) : "";
+        //若不存在,则直接存入
+        if (previous.isEmpty()) {
+            previous = ("WFD" + formattedDate + "00001");
+        } else {
+            codeValue = previous;
+            int lastFourDigits = Integer.parseInt(codeValue.substring(5, 10));
+            lastFourDigits += 1; // 加1
+            codeValue = codeValue.substring(0, 5) + String.format("%05d", lastFourDigits);
+            previous = codeValue;
+        }
+        //存到redis中
+        redisCache.setCacheObject(codeType, previous);
+        bizOutsourcedOrder.setFormCode(previous);
+        bizOutsourcedOrder.setIsSubmit(1);
+
         bizOutsourcedOrderService.save(bizOutsourcedOrder);
         List<BizOutsourcedOrderDetail> details = bizOutsourcedOrder.getDetails();
         SysDept condition = new SysDept();
@@ -921,8 +941,10 @@ public class BizOutsourcedOrderController extends BaseController {
         List<BizDaywork> dayworks = new ArrayList<>();
         List<BizFurnaceNoInfo> furnaceNoInfos = new ArrayList<>();
         List<BizOutsourcedOrderDetailProcess> detailProcesses = new ArrayList<>();
-        List<BizLot> lots = bizLotService.query().in("id", details.isEmpty() ?Collections.singletonList(0L) : details.stream().map(BizOutsourcedOrderDetail::getLotId).collect(Collectors.toList())).list();
+        List<BizLot> lots = bizLotService.query().in("id", details.isEmpty() ? Collections.singletonList(0L) : details.stream().map(BizOutsourcedOrderDetail::getLotId).collect(Collectors.toList())).list();
         List<BizDayworkItem> items = new ArrayList<>();
+//        BizOutsourcedRecords record = new BizOutsourcedRecords();
+        List<BizOutsourcedRecords> records = new ArrayList<>();
         details.forEach(l -> {
             l.setMasterId(bizOutsourcedOrder.getId());
             BizDaywork daywork = new BizDaywork();
@@ -938,8 +960,23 @@ public class BizOutsourcedOrderController extends BaseController {
             daywork.setIsLast(lot != null ? lot.getIsLast() : null);
             daywork.setIsWaste(lot != null ? lot.getIsWaste() : null);
             daywork.setIsAmend(lot != null ? lot.getIsAmend() : null);
-            daywork.setIsWasteRecycling(lot != null ? lot.getIsWasteRecycling() :null);
+            daywork.setIsWasteRecycling(lot != null ? lot.getIsWasteRecycling() : null);
             dayworks.add(daywork);
+            BizOutsourcedRecords record = new BizOutsourcedRecords();
+            record.setMasterId(bizOutsourcedOrder.getId());
+            record.setUserName(SecurityUtils.getLoginUser().getUser().getUserName());
+            record.setNickName(SecurityUtils.getLoginUser().getUser().getNickName());
+            record.setMethod("创建");
+            record.setFormCode(bizOutsourcedOrder.getFormCode());
+            record.setSupplierId(bizOutsourcedOrder.getSupplierId());
+            record.setSupplierName(bizOutsourcedOrder.getSupplierName());
+            record.setLotId(l.getLotId());
+            record.setLotCode(l.getLotCode());
+            record.setProductDescription(l.getProductDescription());
+            record.setProductNum(l.getProductNum());
+            record.setProcessNames(l.getProcessNames());
+            record.setStartTime(formattedDate);
+            records.add(record);
             l.setDayworkId(daywork.getId());
             BizFurnaceNoInfo furnaceNoInfo = l.getFurnaceNoInfo();
             furnaceNoInfo.setDayworkId(daywork.getId());
@@ -983,11 +1020,13 @@ public class BizOutsourcedOrderController extends BaseController {
             });
 
         });
+//
         bizDayworkService.saveBatch(dayworks);
         furnaceNoInfoService.saveBatch(furnaceNoInfos);
         bizOutsourcedOrderDetailService.saveBatch(details);
         bizOutsourcedOrderDetailProcessService.saveBatch(detailProcesses);
         bizDayworkItemService.saveBatch(items);
+        bizOutsourcedRecordsService.saveBatch(records);
     }
 
 }