From 8b43954926db6b4df6a61ab6e04d6cb11189069d Mon Sep 17 00:00:00 2001
From: 吴健 <14790700720@163.com>
Date: 星期二, 15 四月 2025 08:54:08 +0800
Subject: [PATCH] add-415

---
 jcdm-main/src/main/java/com/jcdm/main/om/productionOrde/controller/OmProductionOrdeInfoController.java |  190 ++++++++++++++++++++++++++++++++---------------
 1 files changed, 130 insertions(+), 60 deletions(-)

diff --git a/jcdm-main/src/main/java/com/jcdm/main/om/productionOrde/controller/OmProductionOrdeInfoController.java b/jcdm-main/src/main/java/com/jcdm/main/om/productionOrde/controller/OmProductionOrdeInfoController.java
index cd3e7fe..5be6644 100644
--- a/jcdm-main/src/main/java/com/jcdm/main/om/productionOrde/controller/OmProductionOrdeInfoController.java
+++ b/jcdm-main/src/main/java/com/jcdm/main/om/productionOrde/controller/OmProductionOrdeInfoController.java
@@ -1,12 +1,15 @@
 package com.jcdm.main.om.productionOrde.controller;
 
-import java.text.SimpleDateFormat;
-import java.time.LocalDateTime;
-import java.time.format.DateTimeFormatter;
-import java.util.Date;
-import java.util.List;
-import javax.servlet.http.HttpServletResponse;
-
+import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.util.ObjectUtil;
+import cn.hutool.core.util.StrUtil;
+import com.jcdm.common.annotation.Log;
+import com.jcdm.common.core.controller.BaseController;
+import com.jcdm.common.core.domain.AjaxResult;
+import com.jcdm.common.core.page.TableDataInfo;
+import com.jcdm.common.enums.BusinessType;
+import com.jcdm.common.exception.ServiceException;
+import com.jcdm.common.utils.poi.ExcelUtil;
 import com.jcdm.main.bs.modelNumber.domain.BsModelNumber;
 import com.jcdm.main.bs.modelNumber.service.IBsModelNumberService;
 import com.jcdm.main.bs.orderScheduling.domain.BsOrderScheduling;
@@ -14,23 +17,19 @@
 import com.jcdm.main.om.productionOrde.domain.OmProductionOrdeInfo;
 import com.jcdm.main.om.productionOrde.service.IOmProductionOrdeInfoService;
 import com.jcdm.main.webservice.service.ReceivingServices;
+import com.kangaroohy.milo.model.ReadWriteEntity;
 import org.apache.commons.lang3.StringUtils;
-import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.PutMapping;
-import org.springframework.web.bind.annotation.DeleteMapping;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
-import com.jcdm.common.annotation.Log;
-import com.jcdm.common.core.controller.BaseController;
-import com.jcdm.common.core.domain.AjaxResult;
-import com.jcdm.common.enums.BusinessType;
-import com.jcdm.common.utils.poi.ExcelUtil;
-import com.jcdm.common.core.page.TableDataInfo;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletResponse;
+import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
+import java.util.ArrayList;
+import java.util.Comparator;
+import java.util.List;
+import java.util.stream.Collectors;
 
 import static org.apache.commons.lang3.SystemUtils.getUserName;
 
@@ -61,6 +60,15 @@
     public TableDataInfo list(OmProductionOrdeInfo omProductionOrdeInfo)
     {
         startPage();
+        if (StrUtil.isNotBlank(omProductionOrdeInfo.getEngineNo())){
+            BsOrderScheduling bsOrderScheduling = bsOrderSchedulingService.selectBsOrderSchedulingSNCode(omProductionOrdeInfo.getEngineNo());
+            if (ObjectUtil.isNotEmpty(bsOrderScheduling)){
+                String orderNo = bsOrderScheduling.getOrderNo();
+                if (StrUtil.isNotBlank(orderNo)){
+                    omProductionOrdeInfo.setWorkOrderNo(orderNo);
+                }
+            }
+        }
         List<OmProductionOrdeInfo> list = omProductionOrdeInfoService.selectOmProductionOrdeInfoList(omProductionOrdeInfo);
         return getDataTable(list);
     }
@@ -81,20 +89,35 @@
     /**
      * 鑾峰彇鐢熶骇宸ュ崟璇︾粏淇℃伅
      */
-//    @PreAuthorize("@ss.hasPermi('om:productionOrde:query')")
-//    @GetMapping(value = "/{id}")
-//    public AjaxResult getInfo(@PathVariable("id") Long id)
-//    {
-//        return success(omProductionOrdeInfoService.selectOmProductionOrdeInfoById(id));
-//    }
+    @PreAuthorize("@ss.hasPermi('om:productionOrde:query')")
+    @GetMapping(value = "/{id}")
+    public AjaxResult getInfo(@PathVariable("id") Long id)
+    {
+        return success(omProductionOrdeInfoService.selectOmProductionOrdeInfoById(id));
+    }
 
     /**
      * 鑾峰彇鐢熶骇宸ュ崟璇︾粏淇℃伅
      */
     @PreAuthorize("@ss.hasPermi('om:productionOrde:query')")
-    @GetMapping("/{ids}")
+    @GetMapping("/ids/{ids}")
     public AjaxResult getInfo(@PathVariable Long[] ids)
     {
+        List<OmProductionOrdeInfo> omProductionOrdeInfos = omProductionOrdeInfoService.selectOmProductionOrderListById(ids);
+        if (CollUtil.isNotEmpty(omProductionOrdeInfos)){
+            List<String> collect = omProductionOrdeInfos.stream().map(OmProductionOrdeInfo::getProductCode).distinct().collect(Collectors.toList());
+            if (CollUtil.isNotEmpty(collect)){
+                if (collect.size()>1){
+                    return error("瀛樺湪澶氫釜涓嶅悓鐨勪骇鍝佺紪鍙凤紝璇锋鏌�");
+                }
+            }
+            List<String> collect1 = omProductionOrdeInfos.stream().map(OmProductionOrdeInfo::getOrderStatus).distinct().collect(Collectors.toList());
+            if (CollUtil.isNotEmpty(collect1)){
+                if (collect1.size()>1){
+                    return error("瀛樺湪澶氫釜涓嶅悓鐨勫伐鍗曠姸鎬侊紝璇锋鏌�");
+                }
+            }
+        }
         return success(omProductionOrdeInfoService.selectOmProductionOrdeInfoByIds(ids));
     }
 
@@ -115,6 +138,7 @@
     @PostMapping("/orderSchedulingForBoxCode")
     public AjaxResult addOrderSchedulingForBoxCode(@RequestBody OmProductionOrdeInfo omProductionOrdeInfo)
     {
+
         //鑾峰彇褰撳墠鏃堕棿
         LocalDateTime date= LocalDateTime.now();
         //鍒涘缓鏃ユ湡鏃堕棿瀵硅薄鏍煎紡鍖栧櫒锛屾棩鏈熸牸寮忕被浼硷細 2023-05-23 22:18:38
@@ -122,42 +146,77 @@
         //灏嗘椂闂磋浆鍖栦负瀵瑰簲鏍煎紡鐨勫瓧绗︿覆
         String fomateDate=date.format(formatter).toString();
 
-
         Integer startCode = Integer.parseInt(omProductionOrdeInfo.getStartCode());//寮�濮嬬紪鍙�
-        Integer planQty = Math.toIntExact(omProductionOrdeInfo.getPlanQty());//璁″垝鏁伴噺
+
         String dateTimeRule = omProductionOrdeInfo.getDateTimeRule();
 
-        String engineNo = "";
-        if(planQty>0) {
-            for (int i = 0; i < planQty; i++) {
-                engineNo = omProductionOrdeInfo.getTypeZ() + " " + dateTimeRule + StringUtils.leftPad(String.valueOf(startCode), 3, "0");
-                BsOrderScheduling bsOrderScheduling = new BsOrderScheduling();
-                bsOrderScheduling.setOrderNo(omProductionOrdeInfo.getWorkOrderNo());
-                bsOrderScheduling.setModel(omProductionOrdeInfo.getTypeZ());
-                bsOrderScheduling.setEngineNo(engineNo);
-                bsOrderScheduling.setProductionStatus("1");
-                bsOrderScheduling.setOperator(getUserName());
-                bsOrderScheduling.setOperateTime(fomateDate);
-                bsOrderScheduling.setProductType(omProductionOrdeInfo.getTypeL());//浜у搧绫诲瀷
-                bsOrderScheduling.setWhetherOrPrint("0");
-                bsOrderSchedulingService.insertBsOrderScheduling(bsOrderScheduling);
-                startCode++;
+        //鏍¢獙缂栧彿閲嶅
+        BsModelNumber bsModelNumberCheck = new BsModelNumber();
+        bsModelNumberCheck.setModel(omProductionOrdeInfo.getTypeZ());
+        bsModelNumberCheck.setModelDate(dateTimeRule);
+        List<BsModelNumber> numbers = bsModelNumberService.selectBsModelNumberList(bsModelNumberCheck);
+        BsModelNumber bsModelNumber = new BsModelNumber();
+        Integer maxNum = 0;
+        if (CollUtil.isNotEmpty(numbers)){
+            bsModelNumber = numbers.get(0);
+            String maxnumValue = bsModelNumber.getMaxnumValue();
+            if (StrUtil.isNotBlank(maxnumValue)){
+                maxNum = Integer.parseInt(maxnumValue);
             }
-
-            //鏂板鏈哄瀷搴忓彿
-            BsModelNumber bsModelNumber = new BsModelNumber();
-            bsModelNumber.setModel(omProductionOrdeInfo.getTypeZ());
-            bsModelNumber.setModelDate(dateTimeRule);
+        }
+        if (startCode<=maxNum){
+            return AjaxResult.error("缂栧彿閲嶅锛岃妫�鏌ワ紒");
+        }
+        Long[] id=omProductionOrdeInfo.getIdNums();
+        List<OmProductionOrdeInfo> omProductionOrdeInfoList = omProductionOrdeInfoService.selectOmProductionOrderListById(id);
+        if (CollUtil.isNotEmpty(omProductionOrdeInfoList)){
+            omProductionOrdeInfoList.forEach(x -> {
+                if (ObjectUtil.isNotNull(x.getWorkOrderNo())){
+                    long l = Long.parseLong(x.getWorkOrderNo());
+                    x.setWorkOrderNoLong(l);
+                }
+            });
+            List<OmProductionOrdeInfo> sortList = omProductionOrdeInfoList.stream().sorted(Comparator.comparing(OmProductionOrdeInfo::getWorkOrderNoLong)).collect(Collectors.toList());
+            for (OmProductionOrdeInfo ProductionOrde : sortList) {
+                Integer planQty = Math.toIntExact(ProductionOrde.getPlanQty());//璁″垝鏁伴噺
+                if(planQty>0) {
+                    for (int i = 0; i < planQty; i++) {
+                        String engineNo = omProductionOrdeInfo.getTypeZ() + " " + dateTimeRule + StringUtils.leftPad(String.valueOf(startCode), 3, "0");
+                        BsOrderScheduling bsOrderScheduling = new BsOrderScheduling();
+                        bsOrderScheduling.setOrderNo(ProductionOrde.getWorkOrderNo());
+                        bsOrderScheduling.setWorkingHours(String.valueOf(i+1));
+                        bsOrderScheduling.setModel(ProductionOrde.getTypeZ());
+                        bsOrderScheduling.setEngineNo(engineNo);
+                        bsOrderScheduling.setProductionStatus("1");
+                        bsOrderScheduling.setOperator(getUserName());
+                        bsOrderScheduling.setOperateTime(fomateDate);
+                        bsOrderScheduling.setProductType(ProductionOrde.getTypeL());//浜у搧绫诲瀷
+                        bsOrderScheduling.setWhetherOrPrint("0");
+                        bsOrderSchedulingService.insertBsOrderScheduling(bsOrderScheduling);
+                        startCode++;
+                    }
+                }
+                //鏇存柊宸ュ崟鐘舵��
+                ProductionOrde.setOrderStatus("2");
+                omProductionOrdeInfoService.updateOmProductionOrdeInfo(ProductionOrde);
+            }
+        }
+        //鏂板鏈哄瀷搴忓彿
+        if (ObjectUtil.isNotNull(bsModelNumber.getId())){
             bsModelNumber.setMaxnumValue((startCode - 1) + "");
             bsModelNumber.setSaveTime(fomateDate);
             bsModelNumber.setLastNumber((startCode - 1) + "");
-            bsModelNumberService.insertBsModelNumber(bsModelNumber);
+            bsModelNumberService.updateBsModelNumber(bsModelNumber);
+        } else {
+            BsModelNumber bsModelNumberSave = new BsModelNumber();
+            bsModelNumberSave.setModel(omProductionOrdeInfo.getTypeZ());
+            bsModelNumberSave.setModelDate(dateTimeRule);
+            bsModelNumberSave.setMaxnumValue((startCode - 1) + "");
+            bsModelNumberSave.setSaveTime(fomateDate);
+            bsModelNumberSave.setLastNumber((startCode - 1) + "");
+            bsModelNumberService.insertBsModelNumber(bsModelNumberSave);
         }
-        //鏇存柊宸ュ崟鐘舵��
-        omProductionOrdeInfo.setOrderStatus("2");
-        return toAjax(omProductionOrdeInfoService.updateOmProductionOrdeInfo(omProductionOrdeInfo));
-
-
+        return toAjax(1);
     }
 
     /**
@@ -199,11 +258,22 @@
     @GetMapping("/getProductionNotice")
     public AjaxResult getProductionNotice(OmProductionOrdeInfo omProductionOrdeInfo)
     {
+        String factory = omProductionOrdeInfo.getWorkshopCode();
         String productionNotice = omProductionOrdeInfo.getProductionNotice();
-        List<OmProductionOrdeInfo> omProductionOrdeInfos = omProductionOrdeInfoService.selectOmProductionOrdeInfoList(omProductionOrdeInfo);
-        if(omProductionOrdeInfos.size() == 0){
+        if (StrUtil.isBlank(productionNotice)){
+            throw new ServiceException("璇疯緭鍏ョ敓浜ч�氱煡鍗曞彿");
+        }
+        if (StrUtil.isBlank(factory)){
+            throw new ServiceException("璇烽�夋嫨宸ュ巶缂栧彿");
+        }
+        OmProductionOrdeInfo queryProductOrder = new OmProductionOrdeInfo();
+        queryProductOrder.setWorkshopCode(factory);
+        queryProductOrder.setProductionNotice(productionNotice);
+        List<OmProductionOrdeInfo> omProductionOrdeInfos = omProductionOrdeInfoService.selectOmProductionOrdeInfoList(queryProductOrder);
+        if(CollUtil.isEmpty(omProductionOrdeInfos)){
             try {
-                ReceivingServices.insertWebserviceData(productionNotice);
+                logger.info("鎺ユ敹宸ュ崟鍙凤細,{}",productionNotice);
+                ReceivingServices.insertWebserviceData(factory,productionNotice);
             } catch (Exception e) {
                 return error("鎺ユ敹澶辫触锛佽妫�鏌ラ�氱煡鍗曞彿");
             }

--
Gitblit v1.9.3