From ae6879a7575f79d814c70781e6efc1b6218f3732 Mon Sep 17 00:00:00 2001
From: admin <15939171744@163.com>
Date: 星期五, 14 三月 2025 14:10:31 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 billion-ui/src/views/main/da/materialCollection/index.vue                                         |   57 --
 billion-admin/pom.xml                                                                             |    7 
 billion-main/src/main/java/com/billion/main/plcServer/util/TimeUtil.java                          |  139 +++++
 billion-main/src/main/java/com/billion/main/plcServer/conf/OPCElement.java                        |    7 
 billion-main/src/main/java/com/billion/main/bs/service/impl/BsBomChildInfoServiceImpl.java        |   46 +
 pom.xml                                                                                           |    1 
 billion-main/src/main/java/com/billion/main/constant/Constants.java                               |    2 
 billion-main/src/main/java/com/billion/main/om/service/impl/OmOrderSchedulingServiceImpl.java     |   55 +-
 billion-main/src/main/java/com/billion/main/plcServer/sub/OPCUaSubscription.java                  |  247 ++++++---
 billion-main/src/main/java/com/billion/main/plcServer/CustomRunner.java                           |   31 
 billion-ui/src/views/main/da/stationCollection/index.vue                                          |    3 
 billion-main/src/main/java/com/billion/main/bs/controller/BsBomChildInfoController.java           |   16 
 billion-main/src/main/java/com/billion/main/da/controller/DaParamCollectionController.java        |    5 
 billion-ui/src/views/main/bs/bomInfo/index.vue                                                    |   10 
 billion-main/src/main/java/com/billion/main/da/domain/DaParamCollection.java                      |  315 ------------
 billion-main/src/main/java/com/billion/main/api/service/impl/WorkOrdersInfoServiceImpl.java       |    5 
 billion-admin/src/main/resources/application-druid.yml                                            |    1 
 billion-main/src/main/resources/mapper/om/OmOrderSchedulingMapper.xml                             |    6 
 billion-main/src/main/java/com/billion/main/bs/domain/BsBomInfo.java                              |    3 
 billion-main/src/main/java/com/billion/main/bs/domain/BsBomChildInfo.java                         |    9 
 billion-main/src/main/resources/mapper/da/DaCollectionParamConfMapper.xml                         |    2 
 billion-ui/src/views/main/om/info/index.vue                                                       |  246 ++++++---
 billion-main/src/main/java/com/billion/main/om/domain/OmOrderScheduling.java                      |   16 
 billion-main/src/main/java/com/billion/main/da/domain/DaStationCollection.java                    |    3 
 billion-main/src/main/java/com/billion/main/da/controller/DaMaterialCollectionController.java     |   22 
 billion-main/pom.xml                                                                              |    6 
 billion-main/src/main/java/com/billion/main/bs/service/IBsBomChildInfoService.java                |    1 
 billion-main/src/main/java/com/billion/main/om/domain/OmProductionOrderInfo.java                  |    3 
 billion-main/src/main/resources/mapper/om/OmProductionOrderInfoMapper.xml                         |   30 
 billion-ui/src/views/main/da/paramCollection/index.vue                                            |   38 -
 billion-ui/src/views/main/bs/lineInfo/index.vue                                                   |    7 
 billion-main/src/main/java/com/billion/main/da/service/impl/DaParamCollectionServiceImpl.java     |    7 
 billion-main/src/main/java/com/billion/main/om/service/impl/OmProductionOrderInfoServiceImpl.java |   30 
 billion-ui/src/views/main/bs/bomChildInfo/index.vue                                               |   85 +++
 billion-main/src/main/resources/mapper/da/DaParamCollectionMapper.xml                             |   20 
 35 files changed, 766 insertions(+), 715 deletions(-)

diff --git a/billion-admin/pom.xml b/billion-admin/pom.xml
index 6f5d4a7..70dfbb9 100644
--- a/billion-admin/pom.xml
+++ b/billion-admin/pom.xml
@@ -68,6 +68,12 @@
         </dependency>
 
         <dependency>
+            <groupId>com.alibaba</groupId>
+            <artifactId>easyexcel</artifactId>
+            <version>3.3.3</version>
+        </dependency>
+
+        <dependency>
             <groupId>com.billion</groupId>
             <artifactId>billion-main</artifactId>
         </dependency>
@@ -78,6 +84,7 @@
 
     </dependencies>
 
+
     <build>
         <plugins>
             <plugin>
diff --git a/billion-admin/src/main/resources/application-druid.yml b/billion-admin/src/main/resources/application-druid.yml
index c47b3a1..3f227d9 100644
--- a/billion-admin/src/main/resources/application-druid.yml
+++ b/billion-admin/src/main/resources/application-druid.yml
@@ -12,6 +12,7 @@
                 url: jdbc:sqlserver://127.0.0.1:1433;DatabaseName=billion-db
                 username: sa
                 password: 123456
+#                password: 123456
 #                password: admin@123
             # 鍒濆杩炴帴鏁�
             initialSize: 10
diff --git a/billion-main/pom.xml b/billion-main/pom.xml
index b049ba9..1117525 100644
--- a/billion-main/pom.xml
+++ b/billion-main/pom.xml
@@ -83,6 +83,12 @@
             <version>3.5.13</version>
             <scope>compile</scope>
         </dependency>
+        <dependency>
+            <groupId>com.mysql</groupId>
+            <artifactId>mysql-connector-j</artifactId>
+            <version>8.0.33</version>
+            <scope>compile</scope>
+        </dependency>
     </dependencies>
 
 </project>
\ No newline at end of file
diff --git a/billion-main/src/main/java/com/billion/main/api/service/impl/WorkOrdersInfoServiceImpl.java b/billion-main/src/main/java/com/billion/main/api/service/impl/WorkOrdersInfoServiceImpl.java
index d1e3e34..ddfc436 100644
--- a/billion-main/src/main/java/com/billion/main/api/service/impl/WorkOrdersInfoServiceImpl.java
+++ b/billion-main/src/main/java/com/billion/main/api/service/impl/WorkOrdersInfoServiceImpl.java
@@ -43,6 +43,10 @@
             omProductionOrderInfo.setBodyQty(Long.valueOf("0"));
             omProductionOrderInfo.setHeadQty(Long.valueOf("0"));
             omProductionOrderInfo.setPreQty(Long.valueOf("0"));
+            omProductionOrderInfo.setBodyStatus("0");
+            omProductionOrderInfo.setHeadStatus("0");
+            omProductionOrderInfo.setPreStatus("0");
+            omProductionOrderInfo.setDelFlag("0");
             omProductionOrderInfo.setWorkOrderNo(workOrdersInfo.getOrderNumber());
             omProductionOrderInfo.setSalesOrderCode(workOrdersInfo.getBatchNumber());
             omProductionOrderInfo.setProductCode(workOrdersInfo.getMaterialNumber());
@@ -52,7 +56,6 @@
             SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
             Date startTime = sdf.parse(workOrdersInfo.getStartTime());
             omProductionOrderInfo.setPlanStartTime(startTime);
-//            omProductionOrderInfo.setRemarks(Long.valueOf(workOrdersInfo.getDescription()));
             omProductionOrderInfo.setOrderStatus(workOrdersInfo.getState());
             omProductionOrderInfo.setFlag(workOrdersInfo.getFlag());
             omProductionOrderInfoService.insertOmProductionOrderInfo(omProductionOrderInfo);
diff --git a/billion-main/src/main/java/com/billion/main/bs/controller/BsBomChildInfoController.java b/billion-main/src/main/java/com/billion/main/bs/controller/BsBomChildInfoController.java
index c7470bd..c24c956 100644
--- a/billion-main/src/main/java/com/billion/main/bs/controller/BsBomChildInfoController.java
+++ b/billion-main/src/main/java/com/billion/main/bs/controller/BsBomChildInfoController.java
@@ -11,6 +11,7 @@
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
 
 import javax.servlet.http.HttpServletResponse;
 import java.util.List;
@@ -28,6 +29,21 @@
     @Autowired
     private IBsBomChildInfoService bsBomChildInfoService;
 
+    @PostMapping("/importTemplate")
+    public void importTemplate(HttpServletResponse response)
+    {
+        ExcelUtil<BsBomChildInfo> util = new ExcelUtil<BsBomChildInfo>(BsBomChildInfo.class);
+        util.importTemplateExcel(response, "bom瀛愯〃鏁版嵁");
+    }
+    @PreAuthorize("@ss.hasPermi('bs:bomChildInfo:import')")
+    @PostMapping("/importData")
+    public AjaxResult importData(MultipartFile file, boolean updateSupport) throws Exception
+    {
+        ExcelUtil<BsBomChildInfo> util = new ExcelUtil<BsBomChildInfo>(BsBomChildInfo.class);
+        List<BsBomChildInfo> bomChildList = util.importExcel(file.getInputStream());
+        String message = bsBomChildInfoService.importBomChild(bomChildList, updateSupport, "1");
+        return success(message);
+    }
     /**
      * 鏌ヨ鍩虹BOM瀛愪俊鎭垪琛�
      */
diff --git a/billion-main/src/main/java/com/billion/main/bs/domain/BsBomChildInfo.java b/billion-main/src/main/java/com/billion/main/bs/domain/BsBomChildInfo.java
index c6a4121..240f1df 100644
--- a/billion-main/src/main/java/com/billion/main/bs/domain/BsBomChildInfo.java
+++ b/billion-main/src/main/java/com/billion/main/bs/domain/BsBomChildInfo.java
@@ -1,10 +1,10 @@
 package com.billion.main.bs.domain;
 
 import com.billion.common.annotation.Excel;
+import com.billion.main.common.BaseEntity;
 import com.fasterxml.jackson.annotation.JsonFormat;
 import lombok.Data;
 
-import java.math.BigDecimal;
 import java.util.Date;
 
 /**
@@ -14,7 +14,7 @@
  * @date 2024-11-25
  */
 @Data
-public class BsBomChildInfo
+public class BsBomChildInfo extends BaseEntity
 {
     private static final long serialVersionUID = 1L;
 
@@ -47,7 +47,7 @@
 
     /** 鍗曡�� */
     @Excel(name = "鍗曡��")
-    private BigDecimal costQty;
+    private String costQty;
 
     /** 鍗曚綅 */
     @Excel(name = "鍗曚綅")
@@ -83,7 +83,4 @@
     private Date updateTime;
 
 
-
-    public void setCostQty(String count) {
-    }
 }
diff --git a/billion-main/src/main/java/com/billion/main/bs/domain/BsBomInfo.java b/billion-main/src/main/java/com/billion/main/bs/domain/BsBomInfo.java
index 4da6f86..d5bcce0 100644
--- a/billion-main/src/main/java/com/billion/main/bs/domain/BsBomInfo.java
+++ b/billion-main/src/main/java/com/billion/main/bs/domain/BsBomInfo.java
@@ -2,6 +2,7 @@
 
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.billion.common.annotation.Excel;
+import com.billion.main.common.BaseEntity;
 import com.fasterxml.jackson.annotation.JsonFormat;
 import lombok.Data;
 
@@ -14,7 +15,7 @@
  * @date 2024-11-25
  */
 @Data
-public class BsBomInfo
+public class BsBomInfo extends BaseEntity
 {
     private static final long serialVersionUID = 1L;
 
diff --git a/billion-main/src/main/java/com/billion/main/bs/service/IBsBomChildInfoService.java b/billion-main/src/main/java/com/billion/main/bs/service/IBsBomChildInfoService.java
index 60d277d..a214a65 100644
--- a/billion-main/src/main/java/com/billion/main/bs/service/IBsBomChildInfoService.java
+++ b/billion-main/src/main/java/com/billion/main/bs/service/IBsBomChildInfoService.java
@@ -61,4 +61,5 @@
      */
     public int deleteBsBomChildInfoById(Long id);
     void insertBatch(List<BsBomChildInfo> confList);
+    public String importBomChild(List<BsBomChildInfo> bomChildList, Boolean isUpdateSupport, String operName);
 }
diff --git a/billion-main/src/main/java/com/billion/main/bs/service/impl/BsBomChildInfoServiceImpl.java b/billion-main/src/main/java/com/billion/main/bs/service/impl/BsBomChildInfoServiceImpl.java
index 9a1e5b6..5ee4b40 100644
--- a/billion-main/src/main/java/com/billion/main/bs/service/impl/BsBomChildInfoServiceImpl.java
+++ b/billion-main/src/main/java/com/billion/main/bs/service/impl/BsBomChildInfoServiceImpl.java
@@ -1,12 +1,16 @@
 package com.billion.main.bs.service.impl;
 
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.billion.common.exception.ServiceException;
+import com.billion.common.utils.StringUtils;
+import com.billion.common.utils.bean.BeanValidators;
 import com.billion.main.bs.domain.BsBomChildInfo;
 import com.billion.main.bs.mapper.BsBomChildInfoMapper;
 import com.billion.main.bs.service.IBsBomChildInfoService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import javax.validation.Validator;
 import java.util.List;
 
 /**
@@ -19,6 +23,48 @@
 public class BsBomChildInfoServiceImpl extends ServiceImpl<BsBomChildInfoMapper, BsBomChildInfo> implements IBsBomChildInfoService
 {
     @Autowired
+    protected Validator validator;
+
+    @Autowired
+    private IBsBomChildInfoService bsBomChildInfoService;
+
+    @Override
+    public String importBomChild(List<BsBomChildInfo> bomChildList, Boolean isUpdateSupport, String operName)
+    {
+        if (StringUtils.isNull(bomChildList) || bomChildList.size() == 0)
+        {
+            throw new ServiceException("瀵煎叆鏁版嵁涓嶈兘涓虹┖锛�");
+        }
+        StringBuilder successMsg = new StringBuilder();
+        for (BsBomChildInfo list : bomChildList)
+        {
+            try
+            {
+                BeanValidators.validateWithException(validator, list);
+                BsBomChildInfo bsBomChildInfo = new BsBomChildInfo();
+                bsBomChildInfo.setProductCode(list.getProductCode());
+                bsBomChildInfo.setProductName(list.getProductName());
+                bsBomChildInfo.setLocationCode(list.getLocationCode());
+                bsBomChildInfo.setLocationName(list.getLocationName());
+                bsBomChildInfo.setMaterialCode(list.getMaterialCode());
+                bsBomChildInfo.setMaterialName(list.getMaterialName());
+                bsBomChildInfo.setCostQty(list.getCostQty());
+                bsBomChildInfo.setBomCode(list.getBomCode());
+                bsBomChildInfoService.insertBsBomChildInfo(bsBomChildInfo);
+                successMsg.append( " 鏇存柊鎴愬姛");
+            }
+            catch (Exception e)
+            {
+                String msg =  " 瀵煎叆澶辫触";
+                log.error(msg, e);
+            }
+        }
+        return successMsg.toString();
+    }
+
+
+
+    @Autowired
     private BsBomChildInfoMapper bsBomChildInfoMapper;
 
     /**
diff --git a/billion-main/src/main/java/com/billion/main/constant/Constants.java b/billion-main/src/main/java/com/billion/main/constant/Constants.java
index 79e46a1..e139a37 100644
--- a/billion-main/src/main/java/com/billion/main/constant/Constants.java
+++ b/billion-main/src/main/java/com/billion/main/constant/Constants.java
@@ -10,6 +10,7 @@
     public static final String TWO= "2";
     public static final String RecordData= "RecordData";
     public static final String WorkOrderRequest= "WorkOrderRequest";
+//    public static final String TEST= "TEST";//缂哥洊涓婄嚎宸ヤ綅
 
     public static final List<String> PLC1 = new ArrayList<>();
     public static final List<String> PLC2 = new ArrayList<>();
@@ -90,6 +91,7 @@
     public static final String OP050= "OP050";
     public static final String OP110= "OP110";
     public static final String OP140= "OP140";
+    public static final String OP070_1= "OP070-1";
 
 
 }
diff --git a/billion-main/src/main/java/com/billion/main/da/controller/DaMaterialCollectionController.java b/billion-main/src/main/java/com/billion/main/da/controller/DaMaterialCollectionController.java
index 08dadb0..f298d40 100644
--- a/billion-main/src/main/java/com/billion/main/da/controller/DaMaterialCollectionController.java
+++ b/billion-main/src/main/java/com/billion/main/da/controller/DaMaterialCollectionController.java
@@ -1,25 +1,19 @@
 package com.billion.main.da.controller;
 
-import java.util.List;
-import javax.servlet.http.HttpServletResponse;
-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.billion.common.annotation.Log;
 import com.billion.common.core.controller.BaseController;
 import com.billion.common.core.domain.AjaxResult;
+import com.billion.common.core.page.TableDataInfo;
 import com.billion.common.enums.BusinessType;
+import com.billion.common.utils.poi.ExcelUtil;
 import com.billion.main.da.domain.DaMaterialCollection;
 import com.billion.main.da.service.IDaMaterialCollectionService;
-import com.billion.common.utils.poi.ExcelUtil;
-import com.billion.common.core.page.TableDataInfo;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletResponse;
+import java.util.List;
 
 /**
  * 鐗╂枡閲囬泦Controller
diff --git a/billion-main/src/main/java/com/billion/main/da/controller/DaParamCollectionController.java b/billion-main/src/main/java/com/billion/main/da/controller/DaParamCollectionController.java
index b4c8d97..6e2da28 100644
--- a/billion-main/src/main/java/com/billion/main/da/controller/DaParamCollectionController.java
+++ b/billion-main/src/main/java/com/billion/main/da/controller/DaParamCollectionController.java
@@ -5,7 +5,6 @@
 import com.billion.common.core.domain.AjaxResult;
 import com.billion.common.core.page.TableDataInfo;
 import com.billion.common.enums.BusinessType;
-import com.billion.common.utils.DateUtils;
 import com.billion.common.utils.poi.ExcelUtil;
 import com.billion.main.da.domain.DaParamCollection;
 import com.billion.main.da.service.IDaParamCollectionService;
@@ -72,8 +71,6 @@
     @PostMapping
     public AjaxResult add(@RequestBody DaParamCollection daParamCollection)
     {
-        daParamCollection.setCreateBy(getUsername());
-        daParamCollection.setCreateTime(DateUtils.getNowDate());
         return toAjax(daParamCollectionService.insertDaParamCollection(daParamCollection));
     }
 
@@ -85,8 +82,6 @@
     @PutMapping
     public AjaxResult edit(@RequestBody DaParamCollection daParamCollection)
     {
-        daParamCollection.setUpdateBy(getUsername());
-        daParamCollection.setUpdateTime(DateUtils.getNowDate());
         return toAjax(daParamCollectionService.updateDaParamCollection(daParamCollection));
     }
 
diff --git a/billion-main/src/main/java/com/billion/main/da/domain/DaParamCollection.java b/billion-main/src/main/java/com/billion/main/da/domain/DaParamCollection.java
index 9f235dc..3a331cf 100644
--- a/billion-main/src/main/java/com/billion/main/da/domain/DaParamCollection.java
+++ b/billion-main/src/main/java/com/billion/main/da/domain/DaParamCollection.java
@@ -1,16 +1,8 @@
 package com.billion.main.da.domain;
 
-import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
-import com.alibaba.excel.annotation.write.style.ColumnWidth;
-import com.alibaba.excel.annotation.write.style.HeadFontStyle;
-import com.alibaba.excel.annotation.write.style.HeadRowHeight;
 import com.billion.common.annotation.Excel;
-import com.billion.main.common.BaseEntity;
 import com.fasterxml.jackson.annotation.JsonFormat;
 import lombok.Data;
-import org.apache.commons.lang3.builder.ToStringBuilder;
-import org.apache.commons.lang3.builder.ToStringStyle;
-import org.springframework.format.annotation.DateTimeFormat;
 
 import java.util.Date;
 
@@ -21,42 +13,21 @@
  * @date 2024-11-20
  */
 @Data
-@ExcelIgnoreUnannotated
-@ColumnWidth(16)
-@HeadRowHeight(14)
-@HeadFontStyle(fontHeightInPoints = 11)
-public class DaParamCollection extends BaseEntity
+public class DaParamCollection
 {
     private static final long serialVersionUID = 1L;
 
     /** 涓婚敭id */
     private Long id;
 
-    /** 宸ュ崟缂栧彿 */
-    @Excel(name = "宸ュ崟缂栧彿")
-    private String workOrderNo;
-
-    private String repairFlag;
-
     /** 鎬绘垚搴忓垪鍙� */
-    @Excel(name = "绠变綋缂栫爜")
+    @Excel(name = "鎬绘垚搴忓垪鍙�")
     private String sfcCode;
-
-    /** 浜у搧缂栧彿 */
-    @Excel(name = "浜у搧缂栧彿")
-    private String productCode;
-
-    /** 浜х嚎缂栧彿 */
-    @Excel(name = "浜х嚎缂栧彿")
-    private String productionLine;
 
     /** 宸ヤ綅缂栧彿 */
     @Excel(name = "宸ヤ綅缂栧彿")
     private String locationCode;
 
-    /** 璁惧缂栧彿 */
-    @Excel(name = "璁惧缂栧彿")
-    private String equipmentNo;
 
     /** 鍙傛暟缂栫爜 */
     @Excel(name = "鍙傛暟缂栫爜")
@@ -66,295 +37,29 @@
     @Excel(name = "鍙傛暟鍊�")
     private String paramValue;
 
-    /** 鍙傛暟涓婇檺 */
-    @Excel(name = "鍙傛暟涓婇檺")
-    private String paramUpper;
 
-    /** 鍙傛暟涓嬮檺 */
-    @Excel(name = "鍙傛暟涓嬮檺")
-    private String paramLower;
 
-    /** 鏍囧噯鍊� */
-    @Excel(name = "鏍囧噯鍊�")
-    private String paramStandard;
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @Excel(name = "閲囬泦鏃堕棿", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
+    private Date collectTime;
 
     /** 閲囬泦鏃堕棿 */
-    @Excel(name = "閲囬泦鏃堕棿")
-    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
-    private Date collectionTime;
+    @Excel(name = "閲囬泦鏃堕棿", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
+    private Date startTime;
 
-    /** 棰勭暀瀛楁1 */
-    private String spareField1;
 
-    /** 棰勭暀瀛楁2 */
-    private String spareField2;
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @Excel(name = "閲囬泦鏃堕棿", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
+    private Date stopTime;
 
-    /** 鍒涘缓鐢ㄦ埛 */
-    private String createUser;
-
-    /** 鏇存敼鐢ㄦ埛 */
-    private String updateUser;
-
-    /** 鐘舵�侊紙1鍚堟牸銆�2涓嶅悎鏍硷級 */
-    @Excel(name = "鐘舵��", readConverterExp = "1=鍚堟牸銆�2涓嶅悎鏍�")
-    private String state;
 
     /** 鍙傛暟鍚嶇О */
     @Excel(name = "鍙傛暟鍚嶇О")
     private String paramName;
 
-    /** 鍗曚綅 */
-    @Excel(name = "鍗曚綅")
-    private String unit;
 
-    /** 绫诲瀷 */
-    @Excel(name = "绫诲瀷")
-    private String type;
 
-    private String[] dateConditions;
 
-    private String startTime;
 
-    private String endTime;
-
-    public String[] getDateConditions() {
-        return dateConditions;
-    }
-
-    public void setDateConditions(String[] dateConditions) {
-        this.dateConditions = dateConditions;
-    }
-
-    public String getStartTime() {return startTime;}
-
-    public void setStartTime(String startTime) {
-        this.startTime = startTime;
-    }
-
-    public String getEndTime() {
-        return endTime;
-    }
-
-    public void setEndTime(String endTime) {
-        this.endTime = endTime;
-    }
-    public void setId(Long id)
-    {
-        this.id = id;
-    }
-
-    public Long getId()
-    {
-        return id;
-    }
-    public void setWorkOrderNo(String workOrderNo)
-    {
-        this.workOrderNo = workOrderNo;
-    }
-
-    public String getWorkOrderNo()
-    {
-        return workOrderNo;
-    }
-    public void setSfcCode(String sfcCode)
-    {
-        this.sfcCode = sfcCode;
-    }
-
-    public String getSfcCode()
-    {
-        return sfcCode;
-    }
-    public void setProductCode(String productCode)
-    {
-        this.productCode = productCode;
-    }
-
-    public String getProductCode()
-    {
-        return productCode;
-    }
-    public void setProductionLine(String productionLine)
-    {
-        this.productionLine = productionLine;
-    }
-
-    public String getProductionLine()
-    {
-        return productionLine;
-    }
-    public void setLocationCode(String locationCode)
-    {
-        this.locationCode = locationCode;
-    }
-
-    public String getLocationCode()
-    {
-        return locationCode;
-    }
-    public void setEquipmentNo(String equipmentNo)
-    {
-        this.equipmentNo = equipmentNo;
-    }
-
-    public String getEquipmentNo()
-    {
-        return equipmentNo;
-    }
-    public void setParamCode(String paramCode)
-    {
-        this.paramCode = paramCode;
-    }
-
-    public String getParamCode()
-    {
-        return paramCode;
-    }
-    public void setParamValue(String paramValue)
-    {
-        this.paramValue = paramValue;
-    }
-
-    public String getParamValue()
-    {
-        return paramValue;
-    }
-    public void setParamUpper(String paramUpper)
-    {
-        this.paramUpper = paramUpper;
-    }
-
-    public String getParamUpper()
-    {
-        return paramUpper;
-    }
-    public void setParamLower(String paramLower)
-    {
-        this.paramLower = paramLower;
-    }
-
-    public String getParamLower()
-    {
-        return paramLower;
-    }
-    public void setParamStandard(String paramStandard)
-    {
-        this.paramStandard = paramStandard;
-    }
-
-    public String getParamStandard()
-    {
-        return paramStandard;
-    }
-    public void setCollectionTime(Date collectionTime)
-    {
-        this.collectionTime = collectionTime;
-    }
-
-    public Date getCollectionTime()
-    {
-        return collectionTime;
-    }
-    public void setSpareField1(String spareField1)
-    {
-        this.spareField1 = spareField1;
-    }
-
-    public String getSpareField1()
-    {
-        return spareField1;
-    }
-    public void setSpareField2(String spareField2)
-    {
-        this.spareField2 = spareField2;
-    }
-
-    public String getSpareField2()
-    {
-        return spareField2;
-    }
-    public void setCreateUser(String createUser)
-    {
-        this.createUser = createUser;
-    }
-
-    public String getCreateUser()
-    {
-        return createUser;
-    }
-    public void setUpdateUser(String updateUser)
-    {
-        this.updateUser = updateUser;
-    }
-
-    public String getUpdateUser()
-    {
-        return updateUser;
-    }
-    public void setState(String state)
-    {
-        this.state = state;
-    }
-
-    public String getState()
-    {
-        return state;
-    }
-    public void setParamName(String paramName)
-    {
-        this.paramName = paramName;
-    }
-
-    public String getParamName()
-    {
-        return paramName;
-    }
-    public void setUnit(String unit)
-    {
-        this.unit = unit;
-    }
-
-    public String getUnit()
-    {
-        return unit;
-    }
-    public void setType(String type)
-    {
-        this.type = type;
-    }
-
-    public String getType()
-    {
-        return type;
-    }
-
-    @Override
-    public String toString() {
-        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
-                .append("id", getId())
-                .append("workOrderNo", getWorkOrderNo())
-                .append("sfcCode", getSfcCode())
-                .append("productCode", getProductCode())
-                .append("productionLine", getProductionLine())
-                .append("locationCode", getLocationCode())
-                .append("equipmentNo", getEquipmentNo())
-                .append("paramCode", getParamCode())
-                .append("paramValue", getParamValue())
-                .append("paramUpper", getParamUpper())
-                .append("paramLower", getParamLower())
-                .append("paramStandard", getParamStandard())
-                .append("collectionTime", getCollectionTime())
-                .append("spareField1", getSpareField1())
-                .append("spareField2", getSpareField2())
-                .append("createUser", getCreateUser())
-                .append("createTime", getCreateTime())
-                .append("updateUser", getUpdateUser())
-                .append("updateTime", getUpdateTime())
-                .append("state", getState())
-                .append("paramName", getParamName())
-                .append("unit", getUnit())
-                .append("type", getType())
-                .toString();
-    }
 }
diff --git a/billion-main/src/main/java/com/billion/main/da/domain/DaStationCollection.java b/billion-main/src/main/java/com/billion/main/da/domain/DaStationCollection.java
index d2e301c..176d4a1 100644
--- a/billion-main/src/main/java/com/billion/main/da/domain/DaStationCollection.java
+++ b/billion-main/src/main/java/com/billion/main/da/domain/DaStationCollection.java
@@ -1,7 +1,6 @@
 package com.billion.main.da.domain;
 
 import com.billion.common.annotation.Excel;
-import com.billion.main.common.BaseEntity;
 import com.fasterxml.jackson.annotation.JsonFormat;
 import lombok.Data;
 
@@ -14,7 +13,7 @@
  * @date 2025-02-12
  */
 @Data
-public class DaStationCollection extends BaseEntity
+public class DaStationCollection
 {
     private static final long serialVersionUID = 1L;
 
diff --git a/billion-main/src/main/java/com/billion/main/da/service/impl/DaParamCollectionServiceImpl.java b/billion-main/src/main/java/com/billion/main/da/service/impl/DaParamCollectionServiceImpl.java
index 1fb1c1a..493b61c 100644
--- a/billion-main/src/main/java/com/billion/main/da/service/impl/DaParamCollectionServiceImpl.java
+++ b/billion-main/src/main/java/com/billion/main/da/service/impl/DaParamCollectionServiceImpl.java
@@ -1,6 +1,5 @@
 package com.billion.main.da.service.impl;
 
-import com.billion.common.utils.DateUtils;
 import com.billion.main.da.domain.DaParamCollection;
 import com.billion.main.da.mapper.DaParamCollectionMapper;
 import com.billion.main.da.service.IDaParamCollectionService;
@@ -54,11 +53,6 @@
     @Override
     public List<DaParamCollection> selectDaParamCollectionList(DaParamCollection daParamCollection)
     {
-        if(daParamCollection.getDateConditions()!=null){
-            String[] conditions = daParamCollection.getDateConditions();
-            daParamCollection.setStartTime(conditions[0]);
-            daParamCollection.setEndTime(conditions[1]);
-        }
         return daParamCollectionMapper.selectDaParamCollectionList(daParamCollection);
     }
 
@@ -71,7 +65,6 @@
     @Override
     public int insertDaParamCollection(DaParamCollection daParamCollection)
     {
-        daParamCollection.setCreateTime(DateUtils.getNowDate());
         return daParamCollectionMapper.insertDaParamCollection(daParamCollection);
     }
 
diff --git a/billion-main/src/main/java/com/billion/main/om/domain/OmOrderScheduling.java b/billion-main/src/main/java/com/billion/main/om/domain/OmOrderScheduling.java
index 461b93c..b00837b 100644
--- a/billion-main/src/main/java/com/billion/main/om/domain/OmOrderScheduling.java
+++ b/billion-main/src/main/java/com/billion/main/om/domain/OmOrderScheduling.java
@@ -57,6 +57,20 @@
 
     /** 褰撳墠璁㈠崟宸蹭笂绾挎暟閲� */
     @Excel(name = "褰撳墠璁㈠崟宸蹭笂绾挎暟閲�")
-    private Long nowQty;
+    private String nowQty;
+
+    /** 鍒涘缓鑰� */
+    private String createBy;
+
+    /** 鍒涘缓鏃堕棿 */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date createTime;
+
+    /** 鏇存柊鑰� */
+    private String updateBy;
+
+    /** 鏇存柊鏃堕棿 */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date updateTime;
 
 }
diff --git a/billion-main/src/main/java/com/billion/main/om/domain/OmProductionOrderInfo.java b/billion-main/src/main/java/com/billion/main/om/domain/OmProductionOrderInfo.java
index 750c239..9d67aa0 100644
--- a/billion-main/src/main/java/com/billion/main/om/domain/OmProductionOrderInfo.java
+++ b/billion-main/src/main/java/com/billion/main/om/domain/OmProductionOrderInfo.java
@@ -2,6 +2,7 @@
 
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.billion.common.annotation.Excel;
+import com.billion.main.common.BaseEntity;
 import com.fasterxml.jackson.annotation.JsonFormat;
 import lombok.Data;
 
@@ -14,7 +15,7 @@
  * @date 2024-11-20
  */
 @Data
-public class OmProductionOrderInfo
+public class OmProductionOrderInfo extends BaseEntity
 {
     @TableId
     /** 涓婚敭id */
diff --git a/billion-main/src/main/java/com/billion/main/om/service/impl/OmOrderSchedulingServiceImpl.java b/billion-main/src/main/java/com/billion/main/om/service/impl/OmOrderSchedulingServiceImpl.java
index ff9edec..3f2beea 100644
--- a/billion-main/src/main/java/com/billion/main/om/service/impl/OmOrderSchedulingServiceImpl.java
+++ b/billion-main/src/main/java/com/billion/main/om/service/impl/OmOrderSchedulingServiceImpl.java
@@ -1,20 +1,13 @@
 package com.billion.main.om.service.impl;
 
-import cn.hutool.core.collection.CollUtil;
-import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.billion.common.core.domain.entity.SysUser;
-import com.billion.common.core.domain.model.LoginUser;
-import com.billion.common.exception.ServiceException;
-import com.billion.common.utils.SecurityUtils;
+import com.billion.common.utils.DateUtils;
 import com.billion.main.om.domain.OmOrderScheduling;
 import com.billion.main.om.mapper.OmOrderSchedulingMapper;
 import com.billion.main.om.service.IOmOrderSchedulingService;
 import org.springframework.stereotype.Service;
 
 import javax.annotation.Resource;
-import java.text.MessageFormat;
-import java.util.Date;
 import java.util.List;
 
 /**
@@ -62,17 +55,19 @@
     @Override
     public int insertOmOrderScheduling(OmOrderScheduling omOrderScheduling)
     {
-        List<OmOrderScheduling> list = this.list(new LambdaQueryWrapper<OmOrderScheduling>().eq(OmOrderScheduling::getSfcCode, omOrderScheduling.getSfcCode()));
-        if (CollUtil.isNotEmpty(list)){
-            throw new ServiceException(MessageFormat.format("宸插瓨鍦ㄦ�绘垚搴忓垪鍙蜂负{0}鐨勬暟鎹�",omOrderScheduling.getSfcCode()));
-        }
-        LoginUser loginUser = SecurityUtils.getLoginUser();
-        SysUser user = loginUser.getUser();
-        omOrderScheduling.setCreateTime(new Date());
-        omOrderScheduling.setUpdateTime(new Date());
-        omOrderScheduling.setCreateBy(user.getUserName());
-        omOrderScheduling.setUpdateBy(user.getUserName());
-        return omOrderSchedulingMapper.insertOmOrderScheduling(omOrderScheduling);
+        omOrderScheduling.setUpdateTime(DateUtils.getNowDate());
+        return omOrderSchedulingMapper.updateOmOrderScheduling(omOrderScheduling);
+//        List<OmOrderScheduling> list = this.list(new LambdaQueryWrapper<OmOrderScheduling>().eq(OmOrderScheduling::getSfcCode, omOrderScheduling.getSfcCode()));
+//        if (CollUtil.isNotEmpty(list)){
+//            throw new ServiceException(MessageFormat.format("宸插瓨鍦ㄦ�绘垚搴忓垪鍙蜂负{0}鐨勬暟鎹�",omOrderScheduling.getSfcCode()));
+//        }
+//        LoginUser loginUser = SecurityUtils.getLoginUser();
+//        SysUser user = loginUser.getUser();
+//        omOrderScheduling.setCreateTime(new Date());
+//        omOrderScheduling.setUpdateTime(new Date());
+//        omOrderScheduling.setCreateBy(user.getUserName());
+//        omOrderScheduling.setUpdateBy(user.getUserName());
+//        return omOrderSchedulingMapper.insertOmOrderScheduling(omOrderScheduling);
     }
 
     /**
@@ -84,17 +79,19 @@
     @Override
     public int updateOmOrderScheduling(OmOrderScheduling omOrderScheduling)
     {
-        List<OmOrderScheduling> list = this.list(new LambdaQueryWrapper<OmOrderScheduling>()
-                .eq(OmOrderScheduling::getSfcCode, omOrderScheduling.getSfcCode())
-                .notIn(OmOrderScheduling::getId,omOrderScheduling.getId()));
-        if (CollUtil.isNotEmpty(list)){
-            throw new ServiceException(MessageFormat.format("宸插瓨鍦ㄦ�绘垚搴忓垪鍙蜂负{0}鐨勬暟鎹�",omOrderScheduling.getSfcCode()));
-        }
-        LoginUser loginUser = SecurityUtils.getLoginUser();
-        SysUser user = loginUser.getUser();
-        omOrderScheduling.setUpdateTime(new Date());
-        omOrderScheduling.setUpdateBy(user.getUserName());
+        omOrderScheduling.setUpdateTime(DateUtils.getNowDate());
         return omOrderSchedulingMapper.updateOmOrderScheduling(omOrderScheduling);
+//        List<OmOrderScheduling> list = this.list(new LambdaQueryWrapper<OmOrderScheduling>()
+//                .eq(OmOrderScheduling::getSfcCode, omOrderScheduling.getSfcCode())
+//                .notIn(OmOrderScheduling::getId,omOrderScheduling.getId()));
+//        if (CollUtil.isNotEmpty(list)){
+//            throw new ServiceException(MessageFormat.format("宸插瓨鍦ㄦ�绘垚搴忓垪鍙蜂负{0}鐨勬暟鎹�",omOrderScheduling.getSfcCode()));
+//        }
+//        LoginUser loginUser = SecurityUtils.getLoginUser();
+//        SysUser user = loginUser.getUser();
+//        omOrderScheduling.setUpdateTime(new Date());
+//        omOrderScheduling.setUpdateBy(user.getUserName());
+//        return omOrderSchedulingMapper.updateOmOrderScheduling(omOrderScheduling);
     }
 
     /**
diff --git a/billion-main/src/main/java/com/billion/main/om/service/impl/OmProductionOrderInfoServiceImpl.java b/billion-main/src/main/java/com/billion/main/om/service/impl/OmProductionOrderInfoServiceImpl.java
index f540144..0b4288e 100644
--- a/billion-main/src/main/java/com/billion/main/om/service/impl/OmProductionOrderInfoServiceImpl.java
+++ b/billion-main/src/main/java/com/billion/main/om/service/impl/OmProductionOrderInfoServiceImpl.java
@@ -3,17 +3,15 @@
 import cn.hutool.core.collection.CollUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.billion.common.core.domain.entity.SysUser;
-import com.billion.common.core.domain.model.LoginUser;
 import com.billion.common.exception.ServiceException;
-import com.billion.common.utils.SecurityUtils;
+import com.billion.common.utils.DateUtils;
 import com.billion.main.om.domain.OmProductionOrderInfo;
 import com.billion.main.om.mapper.OmProductionOrderInfoMapper;
 import com.billion.main.om.service.IOmProductionOrderInfoService;
 import org.springframework.stereotype.Service;
 
 import javax.annotation.Resource;
-import java.util.*;
+import java.util.List;
 
 /**
  * 鐢熶骇宸ュ崟Service涓氬姟灞傚鐞�
@@ -129,20 +127,16 @@
     @Override
     public int updateOmProductionOrderInfo(OmProductionOrderInfo omProductionOrderInfo)
     {
-        Collection<Long> omProductionOrderInfoIds = Collections.emptyList();
-        List<OmProductionOrderInfo> checkList = this.list(new LambdaQueryWrapper<OmProductionOrderInfo>()
-                .eq(OmProductionOrderInfo::getWorkOrderNo, omProductionOrderInfo.getWorkOrderNo())
-                        .notIn(OmProductionOrderInfo::getId, omProductionOrderInfoIds));
-//                .stream().filter(x -> !x.getId().equals(omProductionOrderInfo.getId()))
-//                .collect(Collectors.toList());
-        if (CollUtil.isNotEmpty(checkList)){
-            throw new ServiceException("宸插瓨鍦ㄥ伐鍗曠紪鍙蜂负"+omProductionOrderInfo.getWorkOrderNo()+"鐨勬暟鎹�");
-        }
-        LoginUser loginUser = SecurityUtils.getLoginUser();
-        SysUser user = loginUser.getUser();
-        omProductionOrderInfo.setUpdateTime(new Date());
-        omProductionOrderInfo.setUpdateBy(user.getUserName());
-        return OmProductionOrderInfoMapper.updateOmProductionOrderInfo(omProductionOrderInfo);
+//        Collection<Long> omProductionOrderInfoIds = Collections.emptyList();
+//        List<OmProductionOrderInfo> checkList = this.list(new LambdaQueryWrapper<OmProductionOrderInfo>()
+//                .eq(OmProductionOrderInfo::getWorkOrderNo, omProductionOrderInfo.getWorkOrderNo())
+//                        .notIn(OmProductionOrderInfo::getId, omProductionOrderInfoIds));
+//        if (CollUtil.isNotEmpty(checkList)){
+//            throw new ServiceException("宸插瓨鍦ㄥ伐鍗曠紪鍙蜂负"+omProductionOrderInfo.getWorkOrderNo()+"鐨勬暟鎹�");
+//        }
+//        return OmProductionOrderInfoMapper.updateOmProductionOrderInfo(omProductionOrderInfo);
+        omProductionOrderInfo.setUpdateTime(DateUtils.getNowDate());
+        return  OmProductionOrderInfoMapper.updateOmProductionOrderInfo(omProductionOrderInfo);
     }
 
     /**
diff --git a/billion-main/src/main/java/com/billion/main/plcServer/CustomRunner.java b/billion-main/src/main/java/com/billion/main/plcServer/CustomRunner.java
index 69cf86b..42a8e86 100644
--- a/billion-main/src/main/java/com/billion/main/plcServer/CustomRunner.java
+++ b/billion-main/src/main/java/com/billion/main/plcServer/CustomRunner.java
@@ -22,13 +22,10 @@
 public class CustomRunner implements ApplicationRunner {
     @Autowired
     private MiloService miloService;
-
     @Autowired
     public IDaParamCollectionService daParamCollectionService;
-
     @Autowired
     public IDaStationCollectionService daStationCollectionService;
-
     @Autowired
     public IOmProductionOrderInfoService omProductionOrderInfoService;
     @Autowired
@@ -50,7 +47,6 @@
         Constants.PLC1.add(Constants.C020);
         Constants.PLC1.add(Constants.C030);
         Constants.PLC1.add(Constants.C050);
-        Constants.PLC1.add(Constants.C060);
         //PLC2璁惧//鎺掓煡涓婁笅绾�
         Constants.PLC2.add(Constants.OP005);
         Constants.PLC2.add(Constants.OP010);
@@ -109,15 +105,18 @@
         Constants.PLC4.add(Constants.OP030);
         Constants.PLC4.add(Constants.OP050);
         Constants.PLC4.add(Constants.OP110);
+        Constants.PLC4.add(Constants.OP070_1);
         Constants.PLC4.add(Constants.OP140);
-
         //涓婄嚎宸ヤ綅
         Constants.ONLINE.add(Constants.C005);
         Constants.ONLINE.add(Constants.OP005);
         //涓嬬嚎宸ヤ綅
-        Constants.OFFLINE.add(Constants.C070);
+        Constants.OFFLINE.add(Constants.C060);
         Constants.OFFLINE.add(Constants.OP310);
-        Constants.OFFLINE.add(Constants.P010);
+
+
+
+
 
         OPCUaSubscription OPCUaSubscription = new OPCUaSubscription(miloService,
                 daParamCollectionService,
@@ -145,10 +144,10 @@
         lists.add("PLC1.C030.RecordData");
         lists.add("PLC1.C050.RecordData");
         lists.add("PLC1.C060.RecordData");
-        lists.add("PLC1.C070.RecordData");
         //PLC2
         lists.add("PLC2.OP005.RecordData");
-        lists.add("PLC2.OP010.WorkOrderRequest");//璇锋眰宸ュ崟
+        lists.add("PLC2.OP005.WorkOrderRequest");//璇锋眰宸ュ崟
+        lists.add("PLC2.OP010.RecordData");
         lists.add("PLC2.OP020.RecordData");
         lists.add("PLC2.OP040.RecordData");
         lists.add("PLC2.OP045.RecordData");
@@ -205,12 +204,20 @@
         lists.add("PLC4.C040.RecordData");
         lists.add("PLC4.OP030.RecordData");
         lists.add("PLC4.OP050.RecordData");
-        lists.add("PLC4.OP070.RecordData");
+        lists.add("PLC4.OP070_1.RecordData");
         lists.add("PLC3.OP110.RecordData");
         lists.add("PLC3.OP140.RecordData");
 
-
-
+//        //TEST
+//        lists.add("TEST.C005.RecordData");
+//        lists.add("TEST.C005.WorkOrderRequest");
+//        lists.add("TEST.C060.RecordData");
+//        lists.add("TEST.OP005.RecordData");
+//        lists.add("TEST.OP005.WorkOrderRequest");
+//        lists.add("TEST.OP010.RecordData");
+//        lists.add("TEST.OP310.RecordData");
+//        lists.add("TEST.P010.RecordData");
+//        lists.add("TEST.P010.WorkOrderRequest");
 
         return lists;
     }
diff --git a/billion-main/src/main/java/com/billion/main/plcServer/conf/OPCElement.java b/billion-main/src/main/java/com/billion/main/plcServer/conf/OPCElement.java
index 203126c..8187bcf 100644
--- a/billion-main/src/main/java/com/billion/main/plcServer/conf/OPCElement.java
+++ b/billion-main/src/main/java/com/billion/main/plcServer/conf/OPCElement.java
@@ -7,13 +7,6 @@
 public class OPCElement {
 
 
-    /**
-     * C005
-     */
-
-
-    public static final String PLC1_C005_RecordData = "PLC1.C005.RecordData";//璇锋眰璁板綍鏁版嵁
-    public static final String PLC1_C005_WorkOrderRequest = "PLC1.C005.WorkOrderRequest";//璇锋眰鎷х揣鏁版嵁
 
 
 }
\ No newline at end of file
diff --git a/billion-main/src/main/java/com/billion/main/plcServer/sub/OPCUaSubscription.java b/billion-main/src/main/java/com/billion/main/plcServer/sub/OPCUaSubscription.java
index ae93b4b..20c97d0 100644
--- a/billion-main/src/main/java/com/billion/main/plcServer/sub/OPCUaSubscription.java
+++ b/billion-main/src/main/java/com/billion/main/plcServer/sub/OPCUaSubscription.java
@@ -1,7 +1,6 @@
 package com.billion.main.plcServer.sub;
 
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
-import com.billion.common.utils.StringUtils;
 import com.billion.main.bs.domain.BsBomChildInfo;
 import com.billion.main.bs.service.IBsBomChildInfoService;
 import com.billion.main.constant.Constants;
@@ -17,6 +16,7 @@
 import com.billion.main.om.domain.OmProductionOrderInfo;
 import com.billion.main.om.service.IOmOrderSchedulingService;
 import com.billion.main.om.service.IOmProductionOrderInfoService;
+import com.billion.main.plcServer.util.TimeUtil;
 import com.billion.main.sys.domain.SysCount;
 import com.billion.main.sys.service.ISysCountService;
 import com.kangaroohy.milo.model.ReadWriteEntity;
@@ -25,6 +25,7 @@
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Component;
 
+import java.text.SimpleDateFormat;
 import java.time.LocalDateTime;
 import java.util.Date;
 import java.util.List;
@@ -33,6 +34,8 @@
 @Slf4j
 @Component
 public class OPCUaSubscription implements SubscriptionCallback {
+
+    public static SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
     public static MiloService miloService;
     public IDaParamCollectionService daParamCollectionService;
     public IDaStationCollectionService daStationCollectionService;
@@ -89,32 +92,40 @@
             if (Constants.RecordData.equals(tab)){
                 //宸ョ珯浜や簰鍒濆鍖�
                 if (Constants.ZERO.equals(valueString)){
-                    miloService.writeToOpcUa(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".RecordDataDone").value("0").build());
+                    miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".RecordDataDone").value(0).build());
                 //璇锋眰杩涚珯
                 } else if (Constants.ONE.equals(valueString)){
                     //1.1//棣栧伐绔�
-                    if(Constants.C005.equals(device) || Constants.OP005.equals(device) || Constants.P010.equals(device)){
-                        miloService.writeToOpcUa(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".RecordDataDone").value("11").build());
+                    if(Constants.ONLINE.contains(device)){
+                        miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".RecordDataDone").value(11).build());
                     }
-                    ///////闄ら宸ョ珯鎵�鏈夊伐绔�
-                    else if(Constants.PLC1.contains(device) && Constants.OP310.contains(device)){
+                    //闄ら宸ョ珯鎵�鏈夊伐绔�
+                    else if(
+                            Constants.PLC1.contains(device) ||
+                            Constants.PLC2.contains(device) ||
+                            Constants.PLC3.contains(device) ||
+                            Constants.PLC4.contains(device) ||
+                            Constants.OFFLINE.contains(device)
+                    ){
                         //鏍¢獙SFCCode鏄惁瀛樺湪
                         Object SFCCode = miloService.readFromOpcUa(thoroughfare + "." + device + ".SFCCode").getValue();
-                        Object PalletID = miloService.readFromOpcUa(thoroughfare + "." + device + ".PalletID").getValue();
                         if (SFCCode == null ) {
-                            miloService.writeToOpcUa(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".RecordDataDone").value("23").build());
+                                miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".RecordDataDone").value(13).build());
                         } else {
                             OmOrderScheduling omOrderScheduling = new OmOrderScheduling();
-                            omOrderScheduling.setRemarks(PalletID.toString());
+                            omOrderScheduling.setSfcCode(SFCCode.toString());
                             List<OmOrderScheduling> resultList = omOrderSchedulingService.selectOmOrderSchedulingList(omOrderScheduling);
-                            log.info("鏌ヨ缁撴灉鏁伴噺: {}", resultList);
-                            BsBomChildInfo bsbomChildInfo= new BsBomChildInfo();
-                            bsbomChildInfo.setLocationCode(device);
-                            bsbomChildInfo.setBomCode(resultList.get(0).getWorkOrderNo());
-                            //涓嬪彂閰嶆柟
-                            formula(thoroughfare, device, bsbomChildInfo);
-                            miloService.writeToOpcUa(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".RecordDataDone").value("11").build());
-
+                            if(resultList != null){
+                                String getWorkOrderNo = resultList.get(0).getWorkOrderNo();
+                                BsBomChildInfo bsbomChildInfo= new BsBomChildInfo();
+                                bsbomChildInfo.setLocationCode(device);
+                                bsbomChildInfo.setBomCode(getWorkOrderNo);
+                                //涓嬪彂閰嶆柟
+                                formula(thoroughfare, device, bsbomChildInfo);
+                                miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".RecordDataDone").value(11).build());
+                            }else {
+                                miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".RecordDataDone").value(13).build());
+                            }
                         }
                     }
                 //鍑虹珯淇濆瓨鏁版嵁
@@ -123,22 +134,44 @@
                     OmOrderScheduling omOrderScheduling = new OmOrderScheduling();
                     Object SFCCode = miloService.readFromOpcUa(thoroughfare + "." + device + ".SFCCode").getValue();
                     //涓婄嚎宸ヤ綅
+//                    if(Constants.ONLINE.contains(device) || Constants.TEST.equals(device) ){
                     if(Constants.ONLINE.contains(device)){
                         Object workOrderNumber = miloService.readFromOpcUa(thoroughfare + "." + device + ".WorkOrderNumber").getValue();
                         Object nowQty = miloService.readFromOpcUa(thoroughfare + "." + device + ".PalletID").getValue();
                         omOrderScheduling.setWorkOrderNo(workOrderNumber.toString());
-                        omOrderScheduling.setNowQty((Long) nowQty);
+                        omOrderScheduling.setNowQty(nowQty.toString());
                         omOrderScheduling.setSfcCode(SFCCode.toString());
+                        Date Time = new Date();
+                        ReadWriteEntity TimeRead = miloService.readFromOpcUa(thoroughfare + "." + device + ".StartTime");
+                        Time = format.parse(TimeUtil.test(TimeUtil.stringProcessing(TimeRead.getValue().toString())));
+                        omOrderScheduling.setOnlineTime(Time);
+                        omOrderScheduling.setStatus("1");
                         //鎵樼洏缁戝畾SFCCode鍜屽伐鍗曞拰浜х嚎
                         if(Constants.OP005.equals(device)){
+                            omProductionOrderInfoService.updateBodyStatus1();
                             omOrderScheduling.setRemarks("Body");
+                            sysCountService.updateSerialNumber();
+                            OmProductionOrderInfo getBodyOrder2 = omProductionOrderInfoService.getBodyOrder();
+                            if (Objects.equals(getBodyOrder2.getBodyQty(), getBodyOrder2.getPlanQty())){
+                                omProductionOrderInfoService.updateBodyStatus2();
+                            }
                         }
                         if(Constants.C005.equals(device)){
+                            omProductionOrderInfoService.updateHeadStatus1();
                             omOrderScheduling.setRemarks("Head");
+                            sysCountService.updateHeadNumber();
+                            OmProductionOrderInfo getHeadOrder2 = omProductionOrderInfoService.getHeadOrder();
+                            if (Objects.equals(getHeadOrder2.getHeadQty(), getHeadOrder2.getPlanQty())){
+                                omProductionOrderInfoService.updateHeadStatus2();
+                            }
                         }
                         omOrderSchedulingService.insertOmOrderScheduling(omOrderScheduling);
                     }else if(Constants.OFFLINE.contains(device)){
-                        if(Constants.C070.equals(device)){
+                        Date Time = new Date();
+                        ReadWriteEntity TimeRead = miloService.readFromOpcUa(thoroughfare + "." + device + ".StopTime");
+                        Time = format.parse(TimeUtil.test(TimeUtil.stringProcessing(TimeRead.getValue().toString())));
+                        omOrderScheduling.setOfflineTime(Time);
+                        if(Constants.C060.equals(device)){
                             omOrderScheduling.setRemarks("Head");
                             omOrderScheduling.setSfcCode(SFCCode.toString());
                             List<OmOrderScheduling> omOrderSchedulingList = omOrderSchedulingService.selectOmOrderSchedulingList(omOrderScheduling);
@@ -148,12 +181,9 @@
                             List<OmProductionOrderInfo> omProductionOrderInfoList = omProductionOrderInfoService.selectOmProductionOrderInfoList(omProductionOrderInfo);
                             Object headQty = omProductionOrderInfoList.get(0).getHeadQty();
                             if (nowQty == headQty){
-//                                omProductionOrderInfoList.get(0).setHeadStatus("3");
-//                                omProductionOrderInfoService.updateOmProductionOrderInfo(omProductionOrderInfoList.get(0));
-
                                 UpdateWrapper<OmProductionOrderInfo> updateWrapper = new UpdateWrapper<>();
                                 updateWrapper.eq("work_order_no", omProductionOrderInfoList.get(0).getWorkOrderNo());
-                                updateWrapper.set("body_status", "3");
+                                updateWrapper.set("head_status", "2");
                                 omProductionOrderInfoService.update(new OmProductionOrderInfo(),updateWrapper);
                             }
                         } else if (Constants.OP310.equals(device)) {
@@ -166,17 +196,17 @@
                             List<OmProductionOrderInfo> omProductionOrderInfoList = omProductionOrderInfoService.selectOmProductionOrderInfoList(omProductionOrderInfo);
                             Object bodyQty = omProductionOrderInfoList.get(0).getBodyQty();
                             if (nowQty == bodyQty){
-                                omProductionOrderInfoList.get(0).setBodyStatus("3");
-
-
-                                omProductionOrderInfoService.updateOmProductionOrderInfo(omProductionOrderInfoList.get(0));
+                                UpdateWrapper<OmProductionOrderInfo> updateWrapper = new UpdateWrapper<>();
+                                updateWrapper.eq("work_order_no", omProductionOrderInfoList.get(0).getWorkOrderNo());
+                                updateWrapper.set("body_status", "2");
+                                omProductionOrderInfoService.update(new OmProductionOrderInfo(),updateWrapper);
                             }
                         }
                     } else if (Constants.P010.equals(device)) {
                         Object workOrderNumber = miloService.readFromOpcUa(thoroughfare + "." + device + ".WorkOrderNumber").getValue();
                         Object nowQty = miloService.readFromOpcUa(thoroughfare + "." + device + ".PalletID").getValue();
                         omOrderScheduling.setWorkOrderNo(workOrderNumber.toString());
-                        omOrderScheduling.setNowQty((Long) nowQty);
+                        omOrderScheduling.setNowQty(nowQty.toString());
                         omOrderScheduling.setSfcCode(SFCCode.toString());
                         omOrderScheduling.setRemarks("Pre");
                         omOrderSchedulingService.insertOmOrderScheduling(omOrderScheduling);
@@ -186,11 +216,17 @@
                         List<OmProductionOrderInfo> omProductionOrderInfoList = omProductionOrderInfoService.selectOmProductionOrderInfoList(omProductionOrderInfo);
                         Object preQty = omProductionOrderInfoList.get(0).getPreQty();
                         if (nowQty == preQty){
-                            omProductionOrderInfoList.get(0).setPreStatus("3");
+                            UpdateWrapper<OmProductionOrderInfo> updateWrapper = new UpdateWrapper<>();
+                            updateWrapper.eq("work_order_no", omProductionOrderInfoList.get(0).getWorkOrderNo());
+                            updateWrapper.set("pre_status", "2");
+                            omProductionOrderInfoService.update(new OmProductionOrderInfo(),updateWrapper);
+                        }
 
-
-                            omProductionOrderInfoService.updateOmProductionOrderInfo(omProductionOrderInfoList.get(0));
-
+                        sysCountService.updatePreNumber();
+                        omProductionOrderInfoService.updatePreStatus1();
+                        OmProductionOrderInfo getPreOrder2 = omProductionOrderInfoService.getPreOrder();
+                        if (Objects.equals(getPreOrder2.getPreQty(), getPreOrder2.getPlanQty())){
+                            omProductionOrderInfoService.updatePreStatus2();
                         }
                     }
                     //鏌ヨdescriptive瀛楁绛変簬1鐨勯噰闆嗛」淇濆瓨鍒版壂鐮佷繚瀛樺埌da_material_collection琛ㄩ噷
@@ -200,46 +236,70 @@
                     List<DaCollectionParamConf> daCollectionParamConfList1 = daCollectionParamConfService.selectDaCollectionParamConfList(daCollectionParamConf1);
                     for (DaCollectionParamConf conf : daCollectionParamConfList1) {
                         String gatherAddress = conf.getGatherAddress();
-                        Object valueObj = miloService.readFromOpcUa(gatherAddress).getValue(); // 鑾峰彇鍘熷鍊煎璞♀��:ml-citation{ref="4" data="citationList"}
-                        if (valueObj == null || StringUtils.isEmpty(valueObj.toString())) {
-                            log.warn("閲囬泦鍦板潃{}杩斿洖绌哄�硷紝璺宠繃瀛樺偍", gatherAddress);
-                            continue; // 缁堟褰撳墠寰幆杩唬鈥�:ml-citation{ref="1,2" data="citationList"}
+
+                        String valueObj = null;
+                        ReadWriteEntity entity = miloService.readFromOpcUa(gatherAddress);
+                        if (entity != null) {
+                            Object value = entity.getValue();
+                            if (value != null) {
+                                valueObj = value.toString();  // 鏈�缁堣祴鍊�
+                                if (!Objects.equals(valueObj, "                                                  ")) {
+                                    DaMaterialCollection materialCollection = new DaMaterialCollection();
+                                    materialCollection.setSfcCode(SFCCode.toString());
+                                    materialCollection.setLocationCode(device);
+                                    materialCollection.setParamName(conf.getParameterSetName());
+                                    materialCollection.setParamValue(miloService.readFromOpcUa(gatherAddress).getValue().toString());
+                                    Date Time = new Date();
+                                    ReadWriteEntity TimeRead = miloService.readFromOpcUa(thoroughfare + "." + device + ".StopTime");
+                                    Time = format.parse(TimeUtil.test(TimeUtil.stringProcessing(TimeRead.getValue().toString())));
+                                    materialCollection.setCollectTime(Time);
+                                    daMaterialCollectionService.insertDaMaterialCollection(materialCollection);
+                                }
+                                else {
+                                    log.debug("閲囬泦椤逛负绌�: {}", gatherAddress);
+                                }
+                            }
                         }
-                        DaMaterialCollection materialCollection = new DaMaterialCollection();
-                        materialCollection.setSfcCode(SFCCode.toString());
-                        materialCollection.setLocationCode(device);
-                        materialCollection.setParamName(conf.getParameterSetName());
-                        materialCollection.setParamValue((String) miloService.readFromOpcUa(gatherAddress).getValue());
-                        materialCollection.setCollectTime(new Date());
-                        daMaterialCollectionService.insertDaMaterialCollection(materialCollection);
                     }
-                    //鏌ヨdescriptive瀛楁绛変簬2鐨勯噰闆嗛」淇濆瓨鍒版壂鐮佷繚瀛樺埌da_param_collection琛ㄩ噷
+//                    鏌ヨdescriptive瀛楁绛変簬2鐨勯噰闆嗛」淇濆瓨鍒版壂鐮佷繚瀛樺埌da_param_collection琛ㄩ噷
                     DaCollectionParamConf daCollectionParamConf2 = new DaCollectionParamConf();
                     daCollectionParamConf2.setProcessesCode(device);
                     daCollectionParamConf2.setDescriptive("2");
                     List<DaCollectionParamConf> daCollectionParamConfList2 = daCollectionParamConfService.selectDaCollectionParamConfList(daCollectionParamConf2);
                     for (DaCollectionParamConf conf : daCollectionParamConfList2) {
                         String gatherAddress = conf.getGatherAddress();
-                        Object valueObj = miloService.readFromOpcUa(gatherAddress).getValue(); // 鑾峰彇鍘熷鍊煎璞♀��:ml-citation{ref="4" data="citationList"}
-                        if (valueObj == null || StringUtils.isEmpty(valueObj.toString())) {
-                            log.warn("閲囬泦鍦板潃{}杩斿洖绌哄�硷紝璺宠繃瀛樺偍", gatherAddress);
-                            continue; // 缁堟褰撳墠寰幆杩唬鈥�:ml-citation{ref="1,2" data="citationList"}
+                        String valueObj = miloService.readFromOpcUa(gatherAddress).getValue().toString(); // 鑾峰彇鍘熷鍊煎璞♀��:ml-citation{ref="4" data="citationList"}
+                        if (!Objects.equals(valueObj, "0.0") && !Objects.equals(valueObj, "0")) {
+                            DaParamCollection paramCollection = new DaParamCollection();
+                            paramCollection.setSfcCode(SFCCode.toString());
+                            paramCollection.setLocationCode(device);
+                            paramCollection.setParamName(conf.getParameterSetName());
+                            paramCollection.setParamValue(miloService.readFromOpcUa(gatherAddress).getValue().toString());
+                            Date Time = new Date();
+                            ReadWriteEntity TimeRead = miloService.readFromOpcUa(thoroughfare + "." + device + ".StopTime");
+                            Time = format.parse(TimeUtil.test(TimeUtil.stringProcessing(TimeRead.getValue().toString())));
+                            paramCollection.setCollectTime(Time);
+                            daParamCollectionService.insertDaParamCollection(paramCollection);
                         }
-                        DaParamCollection paramCollection = new DaParamCollection();
-                        paramCollection.setSfcCode(SFCCode.toString());
-                        paramCollection.setLocationCode(device);
-                        paramCollection.setParamName(conf.getParameterSetName());
-                        paramCollection.setParamValue((String) miloService.readFromOpcUa(gatherAddress).getValue());
-                        paramCollection.setCollectionTime(new Date());
-                        daParamCollectionService.insertDaParamCollection(paramCollection);
+                        else {
+                            log.debug("閲囬泦椤逛负绌�: {}", gatherAddress);
+                        }
                     }
                     DaStationCollection daStationCollection = new DaStationCollection();
                     daStationCollection.setLocationCode(device);
                     daStationCollection.setSfcCode(SFCCode.toString());
-                    daStationCollection.setInboundTime((Date) miloService.readFromOpcUa(thoroughfare + "." + device + ".StartTime").getValue());
-                    daStationCollection.setOutboundTime((Date) miloService.readFromOpcUa(thoroughfare + "." + device + ".StopTime").getValue());
+                    Object StationStatus = miloService.readFromOpcUa(thoroughfare + "." + device + ".StationStatus").getValue();
+                    Date startTime = new Date();
+                    ReadWriteEntity startTimeRead = miloService.readFromOpcUa(thoroughfare + "." + device + ".StartTime");//杩涚珯鏃堕棿
+                    startTime = format.parse(TimeUtil.test(TimeUtil.stringProcessing(startTimeRead.getValue().toString())));
+                    daStationCollection.setInboundTime( startTime);
+                    Date stopTime = new Date();
+                    ReadWriteEntity stopTimeRead = miloService.readFromOpcUa(thoroughfare + "." + device + ".StopTime");//杩涚珯鏃堕棿
+                    stopTime = format.parse(TimeUtil.test(TimeUtil.stringProcessing(stopTimeRead.getValue().toString())));
+                    daStationCollection.setOutboundTime( stopTime);
+                    daStationCollection.setStatus(StationStatus.toString());
                     daStationCollectionService.insertDaStationCollection(daStationCollection);
-                    miloService.writeToOpcUa(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".RecordDataDone").value("21").build());
+                    miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".RecordDataDone").value(21).build());
                 }
             }
         }
@@ -247,13 +307,14 @@
             log.error(e.getMessage());
         }
 }
+
     //棣栧伐绔欎笅鍙戝伐鍗�,骞剁敓鎴怱N鐮�
     private static final String[] MONTH = {"A","B","C","D","E","F","G","H","I","J","K","L"};
     public void plackWorkOrder(String thoroughfare, String device, String tab, String valueString) {
     try {
         if (Constants.WorkOrderRequest.equals(tab)) {
             if (Constants.ZERO.equals(valueString)) {
-                miloService.writeToOpcUa(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".WorkOrderRequestDone").value("0").build());
+                miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".WorkOrderRequestDone").value(0).build());
             }else if (Constants.ONE.equals(valueString)){
                 if (Constants.OP005.equals(device)){
                     // 鏌ヨ鏁版嵁搴撹幏鍙栫鍚堟潯浠剁殑璁㈠崟淇℃伅
@@ -262,7 +323,6 @@
                         //鍒ゆ柇褰撳墠涓嬪彂鏁伴噺鏄惁婊¤冻璁″垝鏁伴噺
                             //鏇存柊宸ュ崟鐘舵��
                             miloService.writeToOpcUa(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".WorkOrderNumber").value(getBodyOrder.getWorkOrderNo()).build());
-                            miloService.writeToOpcUa(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".ProductionPlan").value(String.valueOf(getBodyOrder.getPlanQty())).build());
                             miloService.writeToOpcUa(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".EngineType").value(getBodyOrder.getEngineType()).build());
                             //鐢熸垚sn鐮�
                             SysCount serialNumber = sysCountService.getSerialNumber();
@@ -276,7 +336,6 @@
                                 String SFCCode = A1 + A2 + A3+ A4 + A5;
                                 miloService.writeToOpcUa(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".SFCCode").value(SFCCode).build());
                                 miloService.writeToOpcUa(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".MESSFCCode").value(SFCCode).build());
-                                sysCountService.updateSerialNumber();
                             }else{
                                 sysCountService.clean();
                                 sysCountService.updateYear();
@@ -288,7 +347,6 @@
                                 String SFCCode = A1 + A2 + newA3+ A4 + A5;
                                 miloService.writeToOpcUa(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".SFCCode").value(SFCCode).build());
                                 miloService.writeToOpcUa(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".MESSFCCode").value(SFCCode).build());
-                                sysCountService.updateSerialNumber();
                             }
                             // 鏇存柊 WorkOrderRequestDone 鍦板潃鍧�
                             BsBomChildInfo bsbomChildInfo= new BsBomChildInfo();
@@ -296,15 +354,19 @@
                             bsbomChildInfo.setBomCode(getBodyOrder.getWorkOrderNo());
                             //鍙戜笅宸ヨ壓閰嶆柟
                             formula(thoroughfare, device, bsbomChildInfo);
-                            omProductionOrderInfoService.updateBodyStatus1();
+//                          omProductionOrderInfoService.updateBodyStatus1();
                             //鍒ゆ柇缂镐綋宸ュ崟瀹屾垚
-                            OmProductionOrderInfo getBodyOrder2 = omProductionOrderInfoService.getBodyOrder();
-                            if (Objects.equals(getBodyOrder2.getBodyQty(), getBodyOrder2.getPlanQty())){
-                                omProductionOrderInfoService.updateBodyStatus2();
-                            }
-                            miloService.writeToOpcUa(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".PalletID").value(getBodyOrder2.getBodyQty()).build());
-                            miloService.writeToOpcUa(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".WorkOrderRequestDone").value("11").build());
+//                            OmProductionOrderInfo getBodyOrder2 = omProductionOrderInfoService.getBodyOrder();
+//                            if (Objects.equals(getBodyOrder2.getBodyQty(), getBodyOrder2.getPlanQty())){
+//                                omProductionOrderInfoService.updateBodyStatus2();
+//                            }
+                            String PalletID = String.valueOf(getBodyOrder.getBodyQty() + 1);
+                            miloService.writeToOpcUa(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".PalletID").value(PalletID).build());
+                            miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".WorkOrderRequestDone").value(11).build());
                     }
+                    else{
+                        miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".WorkOrderRequestDone").value(12).build());
+                        }
                 } else if (Constants.C005.equals(device)) {
                     // 鏌ヨ鏁版嵁搴撹幏鍙栫鍚堟潯浠剁殑璁㈠崟淇℃伅
                     OmProductionOrderInfo getHeadOrder = omProductionOrderInfoService.getHeadOrder();
@@ -312,7 +374,6 @@
                         //鍒ゆ柇褰撳墠涓嬪彂鏁伴噺鏄惁婊¤冻璁″垝鏁伴噺
                         //鏇存柊宸ュ崟鐘舵��
                         miloService.writeToOpcUa(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".WorkOrderNumber").value(getHeadOrder.getWorkOrderNo()).build());
-                        miloService.writeToOpcUa(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".ProductionPlan").value(String.valueOf(getHeadOrder.getPlanQty())).build());
                         miloService.writeToOpcUa(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".EngineType").value(getHeadOrder.getEngineType()).build());
                         //鐢熸垚sn鐮�
                         SysCount headNumber = sysCountService.getHeadNumber();
@@ -326,7 +387,6 @@
                             String SFCCode = A1 + A2 + A3+ A4 + A5;
                             miloService.writeToOpcUa(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".SFCCode").value(SFCCode).build());
                             miloService.writeToOpcUa(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".MESSFCCode").value(SFCCode).build());
-                            sysCountService.updateHeadNumber();
                         }else{
                             sysCountService.clean();
                             sysCountService.updateYear();
@@ -338,7 +398,6 @@
                             String SFCCode = A1 + A2 + newA3+ A4 + A5;
                             miloService.writeToOpcUa(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".SFCCode").value(SFCCode).build());
                             miloService.writeToOpcUa(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".MESSFCCode").value(SFCCode).build());
-                            sysCountService.updateHeadNumber();
                         }
                         // 鏇存柊 WorkOrderRequestDone 鍦板潃鍧�
                         BsBomChildInfo bsbomChildInfo= new BsBomChildInfo();
@@ -346,14 +405,18 @@
                         bsbomChildInfo.setBomCode(getHeadOrder.getWorkOrderNo());
                         //鍙戜笅宸ヨ壓閰嶆柟
                         formula(thoroughfare, device, bsbomChildInfo);
-                        omProductionOrderInfoService.updateHeadStatus1();
+//                        omProductionOrderInfoService.updateHeadStatus1();
                         //鍒ゆ柇缂镐綋宸ュ崟瀹屾垚
-                        OmProductionOrderInfo getHeadOrder2 = omProductionOrderInfoService.getHeadOrder();
-                        if (Objects.equals(getHeadOrder2.getHeadQty(), getHeadOrder2.getPlanQty())){
-                            omProductionOrderInfoService.updateHeadStatus2();
-                        }
-                        miloService.writeToOpcUa(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".PalletID").value(getHeadOrder2.getHeadQty()).build());
-                        miloService.writeToOpcUa(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".WorkOrderRequestDone").value("11").build());
+//                        OmProductionOrderInfo getHeadOrder2 = omProductionOrderInfoService.getHeadOrder();
+//                        if (Objects.equals(getHeadOrder2.getHeadQty(), getHeadOrder2.getPlanQty())){
+//                            omProductionOrderInfoService.updateHeadStatus2();
+//                        }
+                        String PalletID = String.valueOf(getHeadOrder.getHeadQty() + 1);
+                        miloService.writeToOpcUa(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".PalletID").value(PalletID).build());
+                        miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".WorkOrderRequestDone").value(11).build());
+                    }
+                    else{
+                        miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".WorkOrderRequestDone").value(12).build());
                     }
                 } else if (Constants.P010.equals(device)) {
                     // 鏌ヨ鏁版嵁搴撹幏鍙栫鍚堟潯浠剁殑璁㈠崟淇℃伅
@@ -362,7 +425,6 @@
                         //鍒ゆ柇褰撳墠涓嬪彂鏁伴噺鏄惁婊¤冻璁″垝鏁伴噺
                         //鏇存柊宸ュ崟鐘舵��
                         miloService.writeToOpcUa(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".WorkOrderNumber").value(getPreOrder.getWorkOrderNo()).build());
-                        miloService.writeToOpcUa(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".ProductionPlan").value(String.valueOf(getPreOrder.getPlanQty())).build());
                         miloService.writeToOpcUa(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".EngineType").value(getPreOrder.getEngineType()).build());
                         //鐢熸垚sn鐮�
                         SysCount preNumber = sysCountService.getPreNumber();
@@ -375,7 +437,6 @@
                             String SFCCode = A1 + A2 + A3+ A4 + A5;
                             miloService.writeToOpcUa(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".SFCCode").value(SFCCode).build());
                             miloService.writeToOpcUa(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".MESSFCCode").value(SFCCode).build());
-                            sysCountService.updatePreNumber();
                         }else{
                             sysCountService.clean();
                             sysCountService.updateYear();
@@ -387,23 +448,25 @@
                             String SFCCode = A1 + A2 + newA3+ A4 + A5;
                             miloService.writeToOpcUa(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".SFCCode").value(SFCCode).build());
                             miloService.writeToOpcUa(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".MESSFCCode").value(SFCCode).build());
-                            sysCountService.updateHeadNumber();
                         }
-
                         // 鏇存柊 WorkOrderRequestDone 鍦板潃鍧�
                         BsBomChildInfo bsbomChildInfo= new BsBomChildInfo();
                         bsbomChildInfo.setLocationCode(device);
                         bsbomChildInfo.setBomCode(getPreOrder.getWorkOrderNo());
                         //鍙戜笅宸ヨ壓閰嶆柟
                         formula(thoroughfare, device, bsbomChildInfo);
-                        omProductionOrderInfoService.updatePreStatus1();
+//                        omProductionOrderInfoService.updatePreStatus1();
                         //鍒ゆ柇缂镐綋宸ュ崟瀹屾垚
-                        OmProductionOrderInfo getPreOrder2 = omProductionOrderInfoService.getPreOrder();
-                        if (Objects.equals(getPreOrder2.getPreQty(), getPreOrder2.getPlanQty())){
-                            omProductionOrderInfoService.updatePreStatus2();
-                        }
-                        miloService.writeToOpcUa(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".PalletID").value(getPreOrder2.getPreQty()).build());
-                        miloService.writeToOpcUa(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".WorkOrderRequestDone").value("11").build());
+//                        OmProductionOrderInfo getPreOrder2 = omProductionOrderInfoService.getPreOrder();
+//                        if (Objects.equals(getPreOrder2.getPreQty(), getPreOrder2.getPlanQty())){
+//                            omProductionOrderInfoService.updatePreStatus2();
+//                        }
+                        String PalletID = String.valueOf(getPreOrder.getPreQty() + 1);
+                        miloService.writeToOpcUa(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".PalletID").value(PalletID).build());
+                        miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".WorkOrderRequestDone").value(11).build());
+                    }
+                    else{
+                        miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".WorkOrderRequestDone").value(12).build());
                     }
                 }
             }
@@ -418,9 +481,9 @@
         List<BsBomChildInfo> bomChildList = bsBomChildInfoService.selectBsBomChildInfoList(bsbomChildInfo);
         for (int i = 1; i <= bomChildList.size(); i++) {
             // 鐢熸垚 MaterialCode 鑺傜偣
-            miloService.writeToOpcUa(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".Material1Code"+ i).value(bomChildList.get(i-1).getMaterialCode()).build());
+            miloService.writeToOpcUa(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".Material"+ i +"Code").value(bomChildList.get(i-1).getMaterialCode()).build());
             // 鐢熸垚 MaterialNumber 鑺傜偣
-            miloService.writeToOpcUa(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".Material1Number"+ i).value(bomChildList.get(i-1).getCostQty()).build());
+            miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".Material"+ i +"Number").value(Integer.parseInt(bomChildList.get(i-1).getCostQty())).build());
         }
     }
 
diff --git a/billion-main/src/main/java/com/billion/main/plcServer/util/TimeUtil.java b/billion-main/src/main/java/com/billion/main/plcServer/util/TimeUtil.java
new file mode 100644
index 0000000..665be5b
--- /dev/null
+++ b/billion-main/src/main/java/com/billion/main/plcServer/util/TimeUtil.java
@@ -0,0 +1,139 @@
+package com.billion.main.plcServer.util;
+
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.Locale;
+import java.util.TimeZone;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+public class TimeUtil {
+    public static void main(String[] args) {
+        String dateString = "Tue May 14 18:25:18 CST 2024";
+//        System.out.println(test(dateString));
+//        String str = "OP330";
+//        System.out.println(str.substring(0,5));
+//        String tightenData = "[9.077463,12.0,OK,OK]";
+//        tightenData = tightenData.replace("[", "").replace("]", "").replace(" ", "");
+//        String[] tightenDataParts = tightenData.split(",");
+//        for (int i = 0; i < tightenDataParts.length; i++) {
+//            System.out.println(tightenDataParts[i]);
+//        }
+        String originalString = "[3.6,7.8,OK,OK]";
+        String modifiedString = originalString.replaceFirst("OK", "NG");
+        System.out.println(modifiedString); // 杈撳嚭: [3.6,7.8,NG,OK]
+//        System.out.println(isNumberInRange(7.7, 7.5, 8.5));
+//        System.out.println(test( stringProcessing("DateTime{utcTime=133601559184960000, javaDate=Tue May 14 18:25:18 CST 2024}")));
+    }
+
+    public static String replaceNumber(String input) {
+        String regex = ",(\\d+),";
+        String replacement = ",NG,";
+
+        Pattern pattern = Pattern.compile(regex);
+        Matcher matcher = pattern.matcher(input);
+
+        return matcher.replaceAll(replacement);
+    }
+
+    // 妫�鏌ヤ竴涓暟鏄惁鍦ㄤ袱涓暟瀹氫箟鐨勫尯闂村唴锛堜笉鍖呭惈杈圭晫锛�
+    public static boolean isNumberInRange(Double number, Double start, Double end) {
+        return number >= start && number <= end;
+    }
+
+    public static String stringProcessing(String dateTimeStr){
+        String result = "";
+        // 鎵惧埌 "javaDate=" 鐨勪綅缃�
+        int javaDateIndex = dateTimeStr.indexOf("javaDate=");
+        if (javaDateIndex != -1) {
+            // 浠� "javaDate=" 鍚庨潰寮�濮嬫埅鍙�
+            javaDateIndex += "javaDate=".length();
+
+            // 鎵惧埌鏃ユ湡鏃堕棿瀛楃涓茬粨鏉熺殑浣嶇疆锛岃繖閲屽亣璁炬槸瀛楃涓茬殑缁撳熬鎴栬�呯┖鏍肩殑浣嶇疆
+            int endIndex = dateTimeStr.indexOf('}', javaDateIndex);
+            if (endIndex == -1) {
+                // 濡傛灉娌℃湁鎵惧埌绌烘牸锛屽氨鍙栧埌瀛楃涓茬殑鏈熬
+                endIndex = dateTimeStr.length();
+            }
+            // 浣跨敤 substring 鏂规硶鎴彇鏃ユ湡鏃堕棿閮ㄥ垎
+            String dateTimePart = dateTimeStr.substring(javaDateIndex, endIndex);
+            result = dateTimePart;
+        } else {
+            System.out.println("javaDate= not found in the string.");
+        }
+        return result;
+    }
+
+    public static String getTimestamp(String param){
+        String result = "";
+        // 瀹氫箟鏃ユ湡鏃堕棿鏍煎紡鍜屾椂鍖�
+        SimpleDateFormat sdf = new SimpleDateFormat("EEE MMM dd HH:mm:ss zzz yyyy", Locale.US);
+        sdf.setTimeZone(TimeZone.getTimeZone("GMT+8")); // CST閫氬父琛ㄧず涓浗鏍囧噯鏃堕棿锛屽嵆涓滃叓鍖�
+
+        try {
+            // 瑙f瀽鏃ユ湡鏃堕棿瀛楃涓�
+            Date date = sdf.parse("Mon Jan 01 17:05:23 CST 2024");
+
+            // 鑾峰彇鏃堕棿鎴筹紙姣锛�
+            long timestamp = date.getTime();
+
+            // 杈撳嚭13浣嶆椂闂存埑
+            result = String.valueOf(timestamp);
+
+        } catch (ParseException e) {
+            e.printStackTrace();
+        }
+        return result;
+    }
+
+    public static String getYyyyDdMm(String inputDate){
+        String outputPattern = "yyyy-MM-dd HH:mm:ss";
+
+        // 瀹氫箟涓�涓В鏋愬櫒锛岀敤浜庡拷鐣ユ椂鍖猴紙浠呬綔涓虹ず渚嬶紝鍙兘闇�瑕佽皟鏁翠互澶勭悊涓嶅悓鐨勮緭鍏ワ級
+        SimpleDateFormat parser = new SimpleDateFormat("EEE MMM dd HH:mm:ss zzz yyyy", Locale.ENGLISH);
+        parser.setLenient(false); // 璁剧疆涓嶅鏉撅紝浠ヤ弗鏍煎尮閰嶆牸寮�
+
+        // 瑙f瀽鏃ユ湡瀛楃涓�
+        Date date = null;
+        try {
+            date = parser.parse(inputDate);
+        } catch (ParseException e) {
+            e.printStackTrace();
+        }
+
+        // 瀹氫箟涓�涓牸寮忓寲鍣紝鐢ㄤ簬杈撳嚭鎵�闇�鐨勬牸寮�
+        SimpleDateFormat formatter = new SimpleDateFormat(outputPattern);
+
+        // 鏍煎紡鍖栨棩鏈�
+        String outputDate = formatter.format(date);
+        return outputDate;
+    }
+
+    public static String test(String param){
+        String str = "";
+        // 鍒涘缓涓�涓猄impleDateFormat瀵硅薄鏉ヨВ鏋愯緭鍏ョ殑鏃ユ湡瀛楃涓诧紙鍋囪CST涓轰腑鍥芥爣鍑嗘椂闂达級
+        SimpleDateFormat inputFormat = new SimpleDateFormat("EEE MMM dd HH:mm:ss zzz yyyy", Locale.US);
+        inputFormat.setTimeZone(TimeZone.getTimeZone("Asia/Shanghai")); // 璁剧疆涓轰腑鍥芥椂鍖�
+
+        Date date = null;
+        try {
+            date = inputFormat.parse(param);
+        } catch (ParseException e) {
+            e.printStackTrace();
+        }
+
+        // 鍒涘缓涓�涓猄impleDateFormat瀵硅薄鏉ユ牸寮忓寲鏃ユ湡涓篣TC鏃堕棿
+        SimpleDateFormat outputFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+        outputFormat.setTimeZone(TimeZone.getTimeZone("UTC")); // 璁剧疆涓篣TC鏃跺尯
+
+        // 鏍煎紡鍖栨棩鏈�
+        if (date != null) {
+            str = outputFormat.format(date);
+        }
+        return str;
+    }
+
+
+
+}
diff --git a/billion-main/src/main/resources/mapper/da/DaCollectionParamConfMapper.xml b/billion-main/src/main/resources/mapper/da/DaCollectionParamConfMapper.xml
index 2198107..a5f1a13 100644
--- a/billion-main/src/main/resources/mapper/da/DaCollectionParamConfMapper.xml
+++ b/billion-main/src/main/resources/mapper/da/DaCollectionParamConfMapper.xml
@@ -37,7 +37,7 @@
             <if test="parameterSetName != null  and parameterSetName != ''"> and parameter_set_name like concat('%', #{parameterSetName}, '%')</if>
             <if test="productCode != null  and productCode != ''"> and product_code like concat('%', #{productCode}, '%')</if>
             <if test="gatherAddress != null  and gatherAddress != ''"> and gather_address like concat('%', #{gatherAddress}, '%')</if>
-
+            <if test="descriptive != null  and descriptive != ''"> and descriptive like concat('%', #{descriptive}, '%')</if>
         </where>
     </select>
     
diff --git a/billion-main/src/main/resources/mapper/da/DaParamCollectionMapper.xml b/billion-main/src/main/resources/mapper/da/DaParamCollectionMapper.xml
index 68cb403..1aca9fe 100644
--- a/billion-main/src/main/resources/mapper/da/DaParamCollectionMapper.xml
+++ b/billion-main/src/main/resources/mapper/da/DaParamCollectionMapper.xml
@@ -38,21 +38,21 @@
     <insert id="insertDaParamCollection" parameterType="DaParamCollection" useGeneratedKeys="true" keyProperty="id">
         insert into da_param_collection
         <trim prefix="(" suffix=")" suffixOverrides=",">
-            <if test="sfcCode != null and sfcCode != ''">sfc_code,</if>
-            <if test="locationCode != null and locationCode != ''">location_code,</if>
-            <if test="paramCode != null and paramCode != ''">param_code,</if>
+            <if test="sfcCode != null">sfc_code,</if>
+            <if test="locationCode != null">location_code,</if>
+            <if test="paramCode != null">param_code,</if>
             <if test="paramName != null">param_name,</if>
-            <if test="paramValue != null and paramValue != ''">param_value,</if>
+            <if test="paramValue != null">param_value,</if>
             <if test="collectTime != null">collect_time,</if>
-         </trim>
+        </trim>
         <trim prefix="values (" suffix=")" suffixOverrides=",">
-            <if test="sfcCode != null and sfcCode != ''">#{sfcCode},</if>
-            <if test="locationCode != null and locationCode != ''">#{locationCode},</if>
-            <if test="paramCode != null and paramCode != ''">#{paramCode},</if>
+            <if test="sfcCode != null">#{sfcCode},</if>
+            <if test="locationCode != null">#{locationCode},</if>
+            <if test="paramCode != null">#{paramCode},</if>
             <if test="paramName != null">#{paramName},</if>
-            <if test="paramValue != null and paramValue != ''">#{paramValue},</if>
+            <if test="paramValue != null">#{paramValue},</if>
             <if test="collectTime != null">#{collectTime},</if>
-         </trim>
+        </trim>
     </insert>
 
     <update id="updateDaParamCollection" parameterType="DaParamCollection">
diff --git a/billion-main/src/main/resources/mapper/om/OmOrderSchedulingMapper.xml b/billion-main/src/main/resources/mapper/om/OmOrderSchedulingMapper.xml
index 626ded0..47e6cb2 100644
--- a/billion-main/src/main/resources/mapper/om/OmOrderSchedulingMapper.xml
+++ b/billion-main/src/main/resources/mapper/om/OmOrderSchedulingMapper.xml
@@ -31,8 +31,10 @@
             <if test="workOrderNo != null  and workOrderNo != ''"> and work_order_no = #{workOrderNo}</if>
             <if test="sfcCode != null  and sfcCode != ''"> and sfc_code = #{sfcCode}</if>
             <if test="productCode != null  and productCode != ''"> and product_code = #{productCode}</if>
-            <if test="params.beginOnlineTime != null and params.beginOnlineTime != '' and params.endOnlineTime != null and params.endOnlineTime != ''"> and online_time between #{params.beginOnlineTime} and #{params.endOnlineTime}</if>
-            <if test="params.beginOfflineTime != null and params.beginOfflineTime != '' and params.endOfflineTime != null and params.endOfflineTime != ''"> and offline_time between #{params.beginOfflineTime} and #{params.endOfflineTime}</if>
+<!--            <if test="params.beginOnlineTime != null and params.beginOnlineTime != '' and params.endOnlineTime != null and params.endOnlineTime != ''"> and online_time between #{params.beginOnlineTime} and #{params.endOnlineTime}</if>-->
+<!--            <if test="params.beginOfflineTime != null and params.beginOfflineTime != '' and params.endOfflineTime != null and params.endOfflineTime != ''"> and offline_time between #{params.beginOfflineTime} and #{params.endOfflineTime}</if>-->
+<!--&#45;&#45;          <if test="params.beginOnlineTime != null and params.beginOnlineTime != '' and params.endOnlineTime != null and params.endOnlineTime != ''"> </if>-->
+<!--            <if test="params.beginOfflineTime != null and params.beginOfflineTime != '' and params.endOfflineTime != null and params.endOfflineTime != ''"></if>-->
             <if test="status != null  and status != ''"> and status = #{status}</if>
             <if test="nowQty != null  and nowQty != ''"> and now_qty = #{nowQty}</if>
         </where>
diff --git a/billion-main/src/main/resources/mapper/om/OmProductionOrderInfoMapper.xml b/billion-main/src/main/resources/mapper/om/OmProductionOrderInfoMapper.xml
index 6dd5de1..6cabb0e 100644
--- a/billion-main/src/main/resources/mapper/om/OmProductionOrderInfoMapper.xml
+++ b/billion-main/src/main/resources/mapper/om/OmProductionOrderInfoMapper.xml
@@ -20,6 +20,16 @@
         <result property="updateBy"    column="update_by"    />
         <result property="remarks"    column="remarks"    />
         <result property="delFlag"    column="del_flag"    />
+        <result property="engineType"    column="engine_type"    />
+        <result property="engineName"    column="engine_name"    />
+        <result property="flag"    column="flag"    />
+        <result property="bodyQty"    column="body_qty"    />
+        <result property="headQty"    column="head_qty"    />
+        <result property="preQty"    column="pre_qty"    />
+        <result property="bodyStatus"    column="body_status"    />
+        <result property="headStatus"    column="head_status"    />
+        <result property="preStatus"    column="pre_status"    />
+
     </resultMap>
 
     <sql id="selectOmProductionOrderInfoVo">
@@ -31,6 +41,7 @@
             SELECT TOP 1 *
             FROM om_production_order_info
             WHERE body_status IN (0,1)
+            AND body_qty != plan_qty
             ORDER BY plan_start_time ASC
     </select>
     <select id="updateBodyStatus1" resultType="OmProductionOrderInfo">
@@ -46,7 +57,7 @@
     </select>
     <select id="updateBodyStatus2" resultType="OmProductionOrderInfo">
         UPDATE om_production_order_info
-        SET body_status = 2
+        SET body_status = 4
         WHERE id = (
             SELECT TOP 1 id
             FROM om_production_order_info
@@ -58,6 +69,7 @@
         SELECT TOP 1 *
         FROM om_production_order_info
         WHERE head_status IN (0,1)
+          AND head_qty != plan_qty
         ORDER BY plan_start_time ASC
     </select>
     <select id="updateHeadStatus1" resultType="OmProductionOrderInfo">
@@ -73,7 +85,7 @@
     </select>
     <select id="updateHeadStatus2" resultType="OmProductionOrderInfo">
         UPDATE om_production_order_info
-        SET head_status = 2
+        SET head_status = 4
         WHERE id = (
             SELECT TOP 1 id
             FROM om_production_order_info
@@ -85,6 +97,7 @@
         SELECT TOP 1 *
         FROM om_production_order_info
         WHERE pre_status IN (0,1)
+          AND pre_qty != plan_qty
         ORDER BY plan_start_time ASC
     </select>
     <select id="updatePreStatus1" resultType="OmProductionOrderInfo">
@@ -100,7 +113,7 @@
     </select>
     <select id="updatePreStatus2" resultType="OmProductionOrderInfo">
         UPDATE om_production_order_info
-        SET pre_status = 2
+        SET pre_status = 4
         WHERE id = (
             SELECT TOP 1 id
             FROM om_production_order_info
@@ -108,7 +121,6 @@
             ORDER BY plan_start_time ASC
         );
     </select>
-
 
 
 
@@ -134,7 +146,6 @@
             <if test="workOrderNo != null and workOrderNo != ''">work_order_no,</if>
             <if test="salesOrderCode != null and salesOrderCode != ''">sales_order_code,</if>
             <if test="productCode != null and productCode != ''">product_code,</if>
-            <if test="lineCode != null and lineCode != ''">line_code,</if>
             <if test="planQty != null">plan_qty,</if>
             <if test="planStartTime != null">plan_start_time,</if>
             <if test="planEndTime != null">plan_end_time,</if>
@@ -150,7 +161,6 @@
             <if test="workOrderNo != null and workOrderNo != ''">#{workOrderNo},</if>
             <if test="salesOrderCode != null and salesOrderCode != ''">#{salesOrderCode},</if>
             <if test="productCode != null and productCode != ''">#{productCode},</if>
-            <if test="lineCode != null and lineCode != ''">#{lineCode},</if>
             <if test="planQty != null">#{planQty},</if>
             <if test="planStartTime != null">#{planStartTime},</if>
             <if test="planEndTime != null">#{planEndTime},</if>
@@ -161,6 +171,7 @@
             <if test="updateBy != null">#{updateBy},</if>
             <if test="remarks != null">#{remarks},</if>
             <if test="delFlag != null">#{delFlag},</if>
+            set del_flag = 0,
          </trim>
     </insert>
 
@@ -170,7 +181,6 @@
             <if test="workOrderNo != null and workOrderNo != ''">work_order_no = #{workOrderNo},</if>
             <if test="salesOrderCode != null and salesOrderCode != ''">sales_order_code = #{salesOrderCode},</if>
             <if test="productCode != null and productCode != ''">product_code = #{productCode},</if>
-            <if test="lineCode != null and lineCode != ''">line_code = #{lineCode},</if>
             <if test="planQty != null">plan_qty = #{planQty},</if>
             <if test="planStartTime != null">plan_start_time = #{planStartTime},</if>
             <if test="planEndTime != null">plan_end_time = #{planEndTime},</if>
@@ -181,6 +191,12 @@
             <if test="updateBy != null">update_by = #{updateBy},</if>
             <if test="remarks != null">remarks = #{remarks},</if>
             <if test="delFlag != null">del_flag = #{delFlag},</if>
+            <if test="bodyQty != null">body_qty = #{bodyQty},</if>
+            <if test="headQty != null">head_qty = #{headQty},</if>
+            <if test="preQty != null">pre_qty = #{preQty},</if>
+            <if test="bodyStatus != null">body_status = #{bodyStatus},</if>
+            <if test="headStatus != null">head_status = #{headStatus},</if>
+            <if test="preStatus != null">pre_status = #{preStatus},</if>
         </trim>
         where id = #{id}
     </update>
diff --git a/billion-ui/src/views/main/bs/bomChildInfo/index.vue b/billion-ui/src/views/main/bs/bomChildInfo/index.vue
index 141e2b2..1b1a53e 100644
--- a/billion-ui/src/views/main/bs/bomChildInfo/index.vue
+++ b/billion-ui/src/views/main/bs/bomChildInfo/index.vue
@@ -81,6 +81,16 @@
       </el-col>
       <el-col :span="1.5">
         <el-button
+          type="info"
+          plain
+          icon="el-icon-upload2"
+          size="mini"
+          @click="handleImport"
+          v-hasPermi="['system:user:import']"
+        >瀵煎叆</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
           type="warning"
           plain
           icon="el-icon-download"
@@ -186,6 +196,38 @@
         <el-button @click="cancel">鍙� 娑�</el-button>
       </div>
     </el-dialog>
+
+    <!-- 鐢ㄦ埛瀵煎叆瀵硅瘽妗� -->
+    <el-dialog :title="upload.title" :visible.sync="upload.open" width="400px" append-to-body>
+      <el-upload
+        ref="upload"
+        :limit="1"
+        accept=".xlsx, .xls"
+        :headers="upload.headers"
+        :action="upload.url + '?updateSupport=' + upload.updateSupport"
+        :disabled="upload.isUploading"
+        :on-progress="handleFileUploadProgress"
+        :on-success="handleFileSuccess"
+        :auto-upload="false"
+        drag
+      >
+        <i class="el-icon-upload"></i>
+        <div class="el-upload__text">灏嗘枃浠舵嫋鍒版澶勶紝鎴�<em>鐐瑰嚮涓婁紶</em></div>
+        <div class="el-upload__tip text-center" slot="tip">
+          <div class="el-upload__tip" slot="tip">
+            <el-checkbox v-model="upload.updateSupport" /> 鏄惁鏇存柊宸茬粡瀛樺湪鐨勬暟鎹�
+          </div>
+          <span>浠呭厑璁稿鍏ls銆亁lsx鏍煎紡鏂囦欢銆�</span>
+          <el-link type="primary" :underline="false" style="font-size:12px;vertical-align: baseline;" @click="importTemplate">涓嬭浇妯℃澘</el-link>
+        </div>
+      </el-upload>
+      <div slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="submitFileForm">纭� 瀹�</el-button>
+        <el-button @click="upload.open = false">鍙� 娑�</el-button>
+      </div>
+    </el-dialog>
+
+
   </div>
 </template>
 
@@ -193,6 +235,7 @@
 import { listBomChildInfo, getBomChildInfo, delBomChildInfo, addBomChildInfo, updateBomChildInfo } from "@/api/main/bs/bomChildInfo";
 import { listBomInfo } from "@/api/main/bs/bomInfo";
 import ItemSelect from "@/components/itemSelect/single.vue";
+import {getToken} from "@/utils/auth";
 
 export default {
   name: "BomChildInfo",
@@ -240,7 +283,19 @@
         productCode: "",
         productName: ""
       },
-
+      // 鐢ㄦ埛瀵煎叆鍙傛暟
+      upload: {
+        open: false,
+        title: "",
+        // 鏄惁绂佺敤涓婁紶
+        isUploading: false,
+        // 鏄惁鏇存柊宸茬粡瀛樺湪鐨勭敤鎴锋暟鎹�
+        updateSupport: 0,
+        // 璁剧疆涓婁紶鐨勮姹傚ご閮�
+        headers: { Authorization: "Bearer " + getToken() },
+        // 涓婁紶鐨勫湴鍧�
+        url: process.env.VUE_APP_BASE_API + "/bs/bomChildInfo/importData"
+      },
       // 琛ㄥ崟鍙傛暟
       form: {},
       // 琛ㄥ崟鏍¢獙
@@ -388,7 +443,33 @@
       this.download('bs/bomChildInfo/export', {
         ...this.queryParams
       }, `bomChildInfo_${new Date().getTime()}.xlsx`)
-    }
+    },
+    /** 瀵煎叆鎸夐挳鎿嶄綔 */
+    handleImport() {
+      this.upload.title = "鏁版嵁瀵煎叆";
+      this.upload.open = true;
+    },
+    // 鏂囦欢涓婁紶涓鐞�
+    handleFileUploadProgress(event, file, fileList) {
+      this.upload.isUploading = true;
+    },
+    // 鏂囦欢涓婁紶鎴愬姛澶勭悊
+    handleFileSuccess(response, file, fileList) {
+      this.upload.open = false;
+      this.upload.isUploading = false;
+      this.$refs.upload.clearFiles();
+      this.$alert("<div style='overflow: auto;overflow-x: hidden;max-height: 70vh;padding: 10px 20px 0;'>" + response.msg + "</div>", "瀵煎叆缁撴灉", { dangerouslyUseHTMLString: true });
+      this.getList();
+    },
+    // 鎻愪氦涓婁紶鏂囦欢
+    submitFileForm() {
+      this.$refs.upload.submit();
+    },
+    /** 涓嬭浇妯℃澘鎿嶄綔 */
+    importTemplate() {
+      this.download('bs/bomChildInfo/importTemplate', {
+      }, `bom_child_${new Date().getTime()}.xlsx`)
+    },
   }
 };
 </script>
diff --git a/billion-ui/src/views/main/bs/bomInfo/index.vue b/billion-ui/src/views/main/bs/bomInfo/index.vue
index e45adc8..40e05f5 100644
--- a/billion-ui/src/views/main/bs/bomInfo/index.vue
+++ b/billion-ui/src/views/main/bs/bomInfo/index.vue
@@ -74,16 +74,6 @@
       </el-col>
       <el-col :span="1.5">
         <el-button
-          plain
-          icon="el-icon-setting"
-          size="mini"
-          :disabled="multiple"
-          @click="statusChange"
-          v-hasPermi="['bs:bomInfo:remove']"
-        >鐘舵�佸彉鏇�</el-button>
-      </el-col>
-      <el-col :span="1.5">
-        <el-button
           type="warning"
           plain
           icon="el-icon-download"
diff --git a/billion-ui/src/views/main/bs/lineInfo/index.vue b/billion-ui/src/views/main/bs/lineInfo/index.vue
index 7a9c7af..764bceb 100644
--- a/billion-ui/src/views/main/bs/lineInfo/index.vue
+++ b/billion-ui/src/views/main/bs/lineInfo/index.vue
@@ -73,13 +73,6 @@
       <el-table-column :show-overflow-tooltip="true" label="浜х嚎缂栧彿" align="center" prop="lineCode" />
       <el-table-column :show-overflow-tooltip="true" label="浜х嚎鍚嶇О" align="center" prop="lineName" />
       <el-table-column :show-overflow-tooltip="true" label="澶囨敞" align="center" prop="remarks" />
-      <el-table-column :show-overflow-tooltip="true" label="鍒涘缓鐢ㄦ埛" align="center" prop="createBy" />
-      <el-table-column label="鍒涘缓鏃堕棿" align="center" prop="createTime" width="180">
-      </el-table-column>
-      <el-table-column :show-overflow-tooltip="true" label="鏇存敼鐢ㄦ埛" align="center" prop="updateBy" />
-      <el-table-column label="鏇存敼鏃堕棿" align="center" prop="updateTime" width="180">
-      </el-table-column>
-      <el-table-column :show-overflow-tooltip="true" label="鐘舵��" align="center" prop="status" />
     </el-table>
 
     <pagination
diff --git a/billion-ui/src/views/main/da/materialCollection/index.vue b/billion-ui/src/views/main/da/materialCollection/index.vue
index fb4891a..bea8161 100644
--- a/billion-ui/src/views/main/da/materialCollection/index.vue
+++ b/billion-ui/src/views/main/da/materialCollection/index.vue
@@ -19,30 +19,6 @@
           end-placeholder="缁撴潫鏃ユ湡">
         </el-date-picker>
       </el-form-item>
-<!--      <el-form-item label="宸ヤ綅缂栫爜" prop="locationCode">-->
-<!--        <el-input-->
-<!--          v-model="queryParams.locationCode"-->
-<!--          placeholder="璇疯緭鍏ュ伐浣嶇紪鐮�"-->
-<!--          clearable-->
-<!--          @keyup.enter.native="handleQuery"-->
-<!--        />-->
-<!--      </el-form-item>-->
-<!--      <el-form-item label="鍙傛暟缂栫爜" prop="paramCode">-->
-<!--        <el-input-->
-<!--          v-model="queryParams.paramCode"-->
-<!--          placeholder="璇疯緭鍏ュ弬鏁扮紪鐮�"-->
-<!--          clearable-->
-<!--          @keyup.enter.native="handleQuery"-->
-<!--        />-->
-<!--      </el-form-item>-->
-<!--      <el-form-item label="鍙傛暟鍚嶇О" prop="paramName">-->
-<!--        <el-input-->
-<!--          v-model="queryParams.paramName"-->
-<!--          placeholder="璇疯緭鍏ュ弬鏁板悕绉�"-->
-<!--          clearable-->
-<!--          @keyup.enter.native="handleQuery"-->
-<!--        />-->
-<!--      </el-form-item>-->
       <el-form-item style="float: right">
         <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">鎼滅储</el-button>
         <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">閲嶇疆</el-button>
@@ -50,38 +26,6 @@
     </el-form>
 
     <el-row :gutter="10" class="mb8">
-<!--      <el-col :span="1.5">-->
-<!--        <el-button-->
-<!--          type="primary"-->
-<!--          plain-->
-<!--          icon="el-icon-plus"-->
-<!--          size="mini"-->
-<!--          @click="handleAdd"-->
-<!--          v-hasPermi="['da:materialCollection:add']"-->
-<!--        >鏂板</el-button>-->
-<!--      </el-col>-->
-<!--      <el-col :span="1.5">-->
-<!--        <el-button-->
-<!--          type="success"-->
-<!--          plain-->
-<!--          icon="el-icon-edit"-->
-<!--          size="mini"-->
-<!--          :disabled="single"-->
-<!--          @click="handleUpdate"-->
-<!--          v-hasPermi="['da:materialCollection:edit']"-->
-<!--        >淇敼</el-button>-->
-<!--      </el-col>-->
-<!--      <el-col :span="1.5">-->
-<!--        <el-button-->
-<!--          type="danger"-->
-<!--          plain-->
-<!--          icon="el-icon-delete"-->
-<!--          size="mini"-->
-<!--          :disabled="multiple"-->
-<!--          @click="handleDelete"-->
-<!--          v-hasPermi="['da:materialCollection:remove']"-->
-<!--        >鍒犻櫎</el-button>-->
-<!--      </el-col>-->
       <el-col :span="1.5">
         <el-button
           type="warning"
@@ -99,7 +43,6 @@
 <!--      <el-table-column label="涓婚敭id" align="center" prop="id" />-->
       <el-table-column label="鎬绘垚搴忓垪鍙�" align="center" prop="sfcCode" />
       <el-table-column label="宸ヤ綅缂栫爜" align="center" prop="locationCode" />
-      <el-table-column label="鍙傛暟缂栫爜" align="center" prop="paramCode" />
       <el-table-column label="鍙傛暟鍚嶇О" align="center" prop="paramName" />
       <el-table-column label="鍙傛暟鍊�" align="center" prop="paramValue" />
       <el-table-column label="閲囬泦鏃堕棿" align="center" prop="collectTime" width="180">
diff --git a/billion-ui/src/views/main/da/paramCollection/index.vue b/billion-ui/src/views/main/da/paramCollection/index.vue
index f42a756..2b2ca21 100644
--- a/billion-ui/src/views/main/da/paramCollection/index.vue
+++ b/billion-ui/src/views/main/da/paramCollection/index.vue
@@ -9,9 +9,9 @@
           @keyup.enter.native="handleQuery"
         />
       </el-form-item>
-     <el-form-item label-width="120" label="閲囬泦鏃堕棿" prop="timeQuery">
+     <el-form-item label-width="120" label="閲囬泦鏃堕棿" prop="collectTime">
         <el-date-picker
-          v-model="queryParams.timeQuery"
+          v-model="queryParams.collectTime"
           type="datetimerange"
           range-separator="鑷�"
           value-format="yyyy-MM-dd HH:mm:ss"
@@ -61,38 +61,6 @@
     </el-form>
 
     <el-row :gutter="10" class="mb8">
-<!--      <el-col :span="1.5">-->
-<!--        <el-button-->
-<!--          type="primary"-->
-<!--          plain-->
-<!--          icon="el-icon-plus"-->
-<!--          size="mini"-->
-<!--          @click="handleAdd"-->
-<!--          v-hasPermi="['da:paramCollection:add']"-->
-<!--        >鏂板</el-button>-->
-<!--      </el-col>-->
-<!--      <el-col :span="1.5">-->
-<!--        <el-button-->
-<!--          type="success"-->
-<!--          plain-->
-<!--          icon="el-icon-edit"-->
-<!--          size="mini"-->
-<!--          :disabled="single"-->
-<!--          @click="handleUpdate"-->
-<!--          v-hasPermi="['da:paramCollection:edit']"-->
-<!--        >淇敼</el-button>-->
-<!--      </el-col>-->
-<!--      <el-col :span="1.5">-->
-<!--        <el-button-->
-<!--          type="danger"-->
-<!--          plain-->
-<!--          icon="el-icon-delete"-->
-<!--          size="mini"-->
-<!--          :disabled="multiple"-->
-<!--          @click="handleDelete"-->
-<!--          v-hasPermi="['da:paramCollection:remove']"-->
-<!--        >鍒犻櫎</el-button>-->
-<!--      </el-col>-->
       <el-col :span="1.5">
         <el-button
           type="warning"
@@ -108,10 +76,8 @@
 
     <el-table v-loading="loading" border :data="paramCollectionList" @selection-change="handleSelectionChange">
       <el-table-column type="selection" width="55" align="center" />
-<!--      <el-table-column label="涓婚敭id" align="center" prop="id" />-->
       <el-table-column label="鎬绘垚搴忓垪鍙�" align="center" prop="sfcCode" />
       <el-table-column label="宸ヤ綅缂栫爜" align="center" prop="locationCode" />
-      <el-table-column label="鍙傛暟缂栫爜" align="center" prop="paramCode" />
       <el-table-column label="鍙傛暟鍚嶇О" align="center" prop="paramName" />
       <el-table-column label="鍙傛暟鍊�" align="center" prop="paramValue" />
       <el-table-column label="閲囬泦鏃堕棿" align="center" prop="collectTime" width="180">
diff --git a/billion-ui/src/views/main/da/stationCollection/index.vue b/billion-ui/src/views/main/da/stationCollection/index.vue
index a6a07b2..f73aa20 100644
--- a/billion-ui/src/views/main/da/stationCollection/index.vue
+++ b/billion-ui/src/views/main/da/stationCollection/index.vue
@@ -94,14 +94,13 @@
 
     <el-table border v-loading="loading" :data="daStationCollectionList" @selection-change="handleSelectionChange">
       <el-table-column type="selection" width="55" align="center" />
-      <el-table-column label="涓婚敭id" align="center" prop="id" />
       <el-table-column :show-overflow-tooltip="true" label="鎬绘垚搴忓垪鍙�" align="center" prop="sfcCode" />
       <el-table-column :show-overflow-tooltip="true" label="宸ヤ綅缂栫爜" align="center" prop="locationCode" />
       <el-table-column label="杩涚珯鏃堕棿" align="center" prop="inboundTime" width="180">
       </el-table-column>
       <el-table-column label="鍑虹珯鏃堕棿" align="center" prop="outboundTime" width="180">
       </el-table-column>
-      <el-table-column :show-overflow-tooltip="true" label="鐘舵��" align="center" prop="status" />
+      <el-table-column :show-overflow-tooltip="true" label="绔欑姸鎬�" align="center" prop="status" />
       <el-table-column label="閲囬泦鏃堕棿" align="center" prop="collectTime" width="180">
       </el-table-column>
     </el-table>
diff --git a/billion-ui/src/views/main/om/info/index.vue b/billion-ui/src/views/main/om/info/index.vue
index 567066b..ff5ab08 100644
--- a/billion-ui/src/views/main/om/info/index.vue
+++ b/billion-ui/src/views/main/om/info/index.vue
@@ -26,16 +26,6 @@
             @keyup.enter.native="handleQuery"
           />
         </el-form-item>
-        <el-form-item label="宸ュ崟鐘舵��" prop="orderStatus">
-          <el-select v-model="queryParams.orderStatus" placeholder="璇烽�夋嫨宸ュ崟鐘舵��" clearable>
-            <el-option
-              v-for="dict in dict.type.order_status"
-              :key="dict.value"
-              :label="dict.label"
-              :value="dict.value"
-            />
-          </el-select>
-        </el-form-item>
         <el-form-item style="float: right; margin-right: 90px">
           <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">鎼滅储</el-button>
           <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">閲嶇疆</el-button>
@@ -46,16 +36,6 @@
 
     <div style="width: 600px">
       <el-row :gutter="10" class="mb8" >
-        <el-col :span="1.5">
-          <el-button
-            type="primary"
-            plain
-            icon="el-icon-plus"
-            size="mini"
-            @click="handleAdd"
-            v-hasPermi="['main:info:add']"
-          >鏂板</el-button>
-        </el-col>
         <el-col :span="1.5">
           <el-button
             type="success"
@@ -69,17 +49,6 @@
         </el-col>
         <el-col :span="1.5">
           <el-button
-            type="danger"
-            plain
-            icon="el-icon-delete"
-            size="mini"
-            :disabled="multiple"
-            @click="handleDelete"
-            v-hasPermi="['main:info:remove']"
-          >鍒犻櫎</el-button>
-        </el-col>
-        <el-col :span="1.5">
-          <el-button
             type="warning"
             plain
             icon="el-icon-download"
@@ -90,62 +59,85 @@
         </el-col>
         <el-col :span="1.5">
           <el-button
-            type="primary"
+            type="success"
             plain
-            icon="el-icon-receiving"
+            icon="el-icon-edit"
             size="mini"
-            @click="handleReceive"
-          >鎺ユ敹宸ュ崟</el-button>
+            :disabled="single"
+            @click="bodyStatus"
+            v-hasPermi="['main:info:edit']"
+          >缂镐綋鏆傚仠\鍚姩</el-button>
         </el-col>
         <el-col :span="1.5">
           <el-button
             type="primary"
             plain
-            :disabled="multiple"
-            icon="el-icon-magic-stick"
+            icon="el-icon-edit"
             size="mini"
-            @click="handleCreate"
-          >鐢熸垚</el-button>
+            :disabled="single"
+            @click="headStatus"
+            v-hasPermi="['main:info:edit']"
+          >缂哥洊鏆傚仠\鍚姩</el-button>
+        </el-col>
+        <el-col :span="1.5">
+          <el-button
+            type="info"
+            plain
+            icon="el-icon-edit"
+            size="mini"
+            :disabled="single"
+            @click="preStatus"
+            v-hasPermi="['main:info:edit']"
+          >棰勮鏆傚仠\鍚姩</el-button>
         </el-col>
         <!--      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>-->
       </el-row>
     </div>
 
-
-    <el-table v-loading="loading" :data="infoList" @selection-change="handleSelectionChange">
+    <el-table border  v-loading="loading" :data="infoList" @selection-change="handleSelectionChange">
       <el-table-column type="selection" width="55" align="center" />
       <el-table-column label="宸ュ崟缂栧彿" align="center" prop="workOrderNo" width="120">
         <template slot-scope="scope">
           <a style="color: #7099F9"  @click="orderDetail(scope.row.workOrderNo)" >{{scope.row.workOrderNo}}
           </a>
-<!--          <div @click="orderDetail(scope.row.workOrderNo)">{{scope.row.workOrderNo}}</div>-->
         </template>
       </el-table-column>
-      <el-table-column label="璁㈠崟缂栧彿" align="center" prop="salesOrderCode" width="120"/>
-      <el-table-column label="浜у搧缂栧彿" align="center" prop="productCode" width="180"/>
-      <el-table-column label="浜х嚎缂栧彿" align="center" prop="lineCode" />
+      <el-table-column label="璁㈠崟缂栧彿" align="center" prop="salesOrderCode" />
+      <el-table-column label="浜у搧缂栧彿" align="center" prop="productCode" />
       <el-table-column label="璁″垝鏁伴噺" align="center" prop="planQty" />
-      <el-table-column label="璁″垝寮�濮嬫椂闂�" align="center" prop="planStartTime" width="120">
+      <el-table-column label="璁″垝寮�濮嬫椂闂�" align="center" prop="planStartTime" >
         <template slot-scope="scope">
-          <span>{{ parseTime(scope.row.planStartTime, '{y}-{m}-{d}') }}</span>
+          <span>{{ parseTime(scope.row.planStartTime, '{y}-{m}-{d} {h}:{i}') }}</span>
         </template>
       </el-table-column>
-      <el-table-column label="璁″垝缁撴潫鏃堕棿" align="center" prop="planEndTime" width="120">
+      <el-table-column label="璁″垝缁撴潫鏃堕棿" align="center" prop="planEndTime" >
         <template slot-scope="scope">
-          <span>{{ parseTime(scope.row.planEndTime, '{y}-{m}-{d}') }}</span>
+          <span>{{ parseTime(scope.row.planEndTime, '{y}-{m}-{d} {h}:{i}') }}</span>
         </template>
       </el-table-column>
-      <el-table-column label="宸ュ崟鐘舵��" align="center" prop="orderStatus">
+<!--      <el-table-column label="鏇存柊鏃堕棿" align="center" prop="updateTime" >-->
+<!--        <template slot-scope="scope">-->
+<!--          <span>{{ parseTime(scope.row.updateTime, '{y}-{m}-{d} {h}:{i}') }}</span>-->
+<!--        </template>-->
+<!--      </el-table-column>-->
+      <el-table-column label="缂镐綋涓婄嚎鏁伴噺" align="center" prop="bodyQty" />
+      <el-table-column label="缂哥洊涓婄嚎鏁伴噺" align="center" prop="headQty" />
+      <el-table-column label="棰勮涓婄嚎鏁伴噺" align="center" prop="preQty" />
+      <el-table-column label="缂镐綋宸ュ崟鐘舵��" align="center" prop="bodyStatus" >
         <template slot-scope="scope">
-          <dict-tag :options="dict.type.order_status" :value="scope.row.orderStatus"/>
+          <dict-tag :options="dict.type.order_status" :value="scope.row.bodyStatus"/>
         </template>
       </el-table-column>
-      <el-table-column label="鏇存柊鏃堕棿" align="center" prop="updateTime" width="180">
+      <el-table-column label="缂哥洊宸ュ崟鐘舵��" align="center" prop="headStatus" >
         <template slot-scope="scope">
-          <span>{{ parseTime(scope.row.updateTime, '{y}-{m}-{d} {h}:{i}:{s}') }}</span>
+          <dict-tag :options="dict.type.order_status" :value="scope.row.headStatus"/>
         </template>
       </el-table-column>
-      <el-table-column label="鏇存柊鐢ㄦ埛" align="center" prop="updateBy" />
+      <el-table-column label="棰勮宸ュ崟鐘舵��" align="center" prop="preStatus" >
+        <template slot-scope="scope">
+          <dict-tag :options="dict.type.order_status" :value="scope.row.preStatus"/>
+        </template>
+      </el-table-column>
       <el-table-column label="澶囨敞" width="180px" show-overflow-tooltip align="center" prop="remarks" />
     </el-table>
 
@@ -160,45 +152,51 @@
     <!-- 娣诲姞鎴栦慨鏀圭敓浜у伐鍗曞璇濇 -->
     <el-dialog :title="title" :visible.sync="open" width="700px" append-to-body>
       <el-form ref="form" :model="form" :rules="rules" label-width="120px">
-        <el-form-item label="宸ュ崟缂栧彿" prop="workOrderNo">
-          <el-input v-model="form.workOrderNo" placeholder="璇疯緭鍏ュ伐鍗曠紪鍙�" />
+        <el-form-item  label="宸ュ崟缂栧彿" prop="workOrderNo">
+          <el-input  disabled v-model="form.workOrderNo" placeholder="璇疯緭鍏ュ伐鍗曠紪鍙�" />
         </el-form-item>
-        <el-form-item label="璁㈠崟缂栧彿" prop="salesOrderCode">
-          <el-input v-model="form.salesOrderCode" placeholder="璇疯緭鍏ヨ鍗曠紪鍙�" />
+        <el-form-item  label="璁㈠崟缂栧彿" prop="salesOrderCode">
+          <el-input disabled v-model="form.salesOrderCode" placeholder="璇疯緭鍏ヨ鍗曠紪鍙�" />
         </el-form-item>
-        <el-form-item label="浜у搧缂栧彿" prop="productCode">
-          <el-input v-model="form.productCode" placeholder="璇疯緭鍏ヤ骇鍝佺紪鍙�" />
+        <el-form-item  label="浜у搧缂栧彿" prop="productCode">
+          <el-input disabled v-model="form.productCode" placeholder="璇疯緭鍏ヤ骇鍝佺紪鍙�" />
         </el-form-item>
-        <el-form-item label="浜х嚎缂栧彿" prop="lineCode">
-          <el-input v-model="form.lineCode" placeholder="璇疯緭鍏ヤ骇绾跨紪鍙�" />
-        </el-form-item>
-        <el-form-item label="璁″垝鏁伴噺" prop="planQty">
-          <el-input v-model="form.planQty" placeholder="璇疯緭鍏ヨ鍒掓暟閲�" />
+        <el-form-item  label="璁″垝鏁伴噺" prop="planQty">
+          <el-input  v-model="form.planQty" placeholder="璇疯緭鍏ヨ鍒掓暟閲�" />
         </el-form-item>
         <el-form-item label="璁″垝寮�濮嬫椂闂�" prop="planStartTime">
           <el-date-picker clearable
             v-model="form.planStartTime"
-            type="date"
-            value-format="yyyy-MM-dd"
+            type="datetime"
+            value-format="yyyy-MM-dd HH:mm:ss"
             placeholder="璇烽�夋嫨璁″垝寮�濮嬫椂闂�">
           </el-date-picker>
         </el-form-item>
         <el-form-item label="璁″垝缁撴潫鏃堕棿" prop="planEndTime">
           <el-date-picker clearable
             v-model="form.planEndTime"
-            type="date"
-            value-format="yyyy-MM-dd"
+            type="datetime"
+            value-format="yyyy-MM-dd HH:mm:ss"
             placeholder="璇烽�夋嫨璁″垝缁撴潫鏃堕棿">
           </el-date-picker>
         </el-form-item>
-        <el-form-item label="宸ュ崟鐘舵��" prop="orderStatus" v-if = updateFlag>
-          <el-radio-group v-model="form.orderStatus">
-            <el-radio
-              v-for="dict in dict.type.order_status"
-              :key="dict.value"
-              :label="dict.value"
-            >{{dict.label}}</el-radio>
-          </el-radio-group>
+        <el-form-item  label="缂镐綋鏁伴噺" prop="bodyQty">
+          <el-input  v-model="form.bodyQty" placeholder="璇疯緭鍏ヨ鍒掓暟閲�" />
+        </el-form-item>
+<!--        <el-form-item label="缂镐綋宸ュ崟鐘舵��" prop="bodyStatus" v-if = updateFlag>-->
+<!--          <el-radio-group v-model="form.bodyStatus">-->
+<!--            <el-radio-->
+<!--              v-for="dict in dict.type.status"-->
+<!--              :key="dict.value"-->
+<!--              :label="dict.value"-->
+<!--            >{{dict.label}}</el-radio>-->
+<!--          </el-radio-group>-->
+<!--        </el-form-item>-->
+        <el-form-item  label="缂稿鏁伴噺" prop="headStatus">
+          <el-input  v-model="form.headStatus" placeholder="璇疯緭鍏ヨ鍒掓暟閲�" />
+        </el-form-item>
+        <el-form-item  label="棰勮鏁伴噺" prop="preStatus">
+          <el-input  v-model="form.preStatus" placeholder="璇疯緭鍏ヨ鍒掓暟閲�" />
         </el-form-item>
         <el-form-item label="澶囨敞" prop="remarks">
           <el-input
@@ -330,9 +328,6 @@
         productCode: [
           { required: true, message: "浜у搧缂栧彿涓嶈兘涓虹┖", trigger: "blur" }
         ],
-        lineCode: [
-          { required: true, message: "浜х嚎缂栧彿涓嶈兘涓虹┖", trigger: "blur" }
-        ],
         planQty: [
           { required: true, message: "璁″垝鏁伴噺涓嶈兘涓虹┖", trigger: "blur" }
         ],
@@ -407,6 +402,12 @@
         updateBy: null,
         remarks: null,
         delFlag: null,
+        bodyQty: null,
+        headQty: null,
+        preQty: null,
+        bodyStatus :null,
+        headStatus :null,
+        preStatus :null,
       };
       this.resetForm("form");
       this.addFlag = false
@@ -447,6 +448,91 @@
         this.title = "淇敼鐢熶骇宸ュ崟";
       });
     },
+
+    /** 淇敼缂镐綋鐘舵�佹寜閽搷浣� */
+    bodyStatus(row) {
+      this.reset();
+      const id = row.id || this.ids
+      getInfo(id).then(response => {
+        this.form = response.data;
+        if(this.form.bodyStatus === "1"){
+          this.form.bodyStatus = "5";
+          updateInfo(this.form).then(response => {
+            this.$modal.msgSuccess("鏆傚仠鎴愬姛");
+            this.getList();});
+        }else if(this.form.bodyStatus === "2"){
+          this.$message('璁㈠崟宸插畬鎴愮姝慨鏀�');
+        }else if(this.form.bodyStatus === "3") {
+          this.$message('璁㈠崟鍏抽棴绂佹淇敼');
+        }else if(this.form.bodyStatus === "4") {
+          this.$message('璁㈠崟宸插叏閮ㄤ笂绾垮畬鎴愮姝慨鏀�');
+        }
+        else if(this.form.bodyStatus === "5") {
+          this.form.bodyStatus = "1";
+          updateInfo(this.form).then(response => {
+            this.$modal.msgSuccess("閲嶅惎鎴愬姛");
+            this.getList();});
+        }else if(this.form.bodyStatus === "0"){
+          this.$message('璁㈠崟鏈紑濮�');
+        }
+      });
+    },
+    /** 淇敼缂哥洊鐘舵�佹寜閽搷浣� */
+    headStatus(row) {
+      this.reset();
+      const id = row.id || this.ids
+      getInfo(id).then(response => {
+        this.form = response.data;
+        if(this.form.headStatus === "1"){
+          this.form.headStatus = "5";
+          updateInfo(this.form).then(response => {
+            this.$modal.msgSuccess("鏆傚仠鎴愬姛");
+            this.getList();});
+        }else if(this.form.headStatus === "2"){
+          this.$message('璁㈠崟宸插畬鎴愮姝慨鏀�');
+        }else if(this.form.headStatus === "3") {
+          this.$message('璁㈠崟鍏抽棴绂佹淇敼');
+        }else if(this.form.headStatus === "4") {
+          this.$message('璁㈠崟宸插叏閮ㄤ笂绾垮畬鎴愮姝慨鏀�');
+        }
+        else if(this.form.headStatus === "5") {
+          this.form.headStatus = "1";
+          updateInfo(this.form).then(response => {
+            this.$modal.msgSuccess("閲嶅惎鎴愬姛");
+            this.getList();});
+        }else if(this.form.headStatus === "0"){
+          this.$message('璁㈠崟鏈紑濮�');
+        }
+      });
+    },
+    /** 淇敼棰勮鐘舵�佹寜閽搷浣� */
+    preStatus(row) {
+      this.reset();
+      const id = row.id || this.ids
+      getInfo(id).then(response => {
+        this.form = response.data;
+        if(this.form.preStatus === "1"){
+          this.form.preStatus = "5";
+          updateInfo(this.form).then(response => {
+            this.$modal.msgSuccess("鏆傚仠鎴愬姛");
+            this.getList();});
+        }else if(this.form.preStatus === "2"){
+          this.$message('璁㈠崟宸插畬鎴愮姝慨鏀�');
+        }else if(this.form.preStatus === "3") {
+          this.$message('璁㈠崟鍏抽棴绂佹淇敼');
+        }else if(this.form.preStatus === "4") {
+          this.$message('璁㈠崟宸插叏閮ㄤ笂绾垮畬鎴愮姝慨鏀�');
+        }
+        else if(this.form.preStatus === "5") {
+          this.form.preStatus = "1";
+          updateInfo(this.form).then(response => {
+            this.$modal.msgSuccess("閲嶅惎鎴愬姛");
+            this.getList();});
+        }else if(this.form.preStatus === "0"){
+          this.$message('璁㈠崟鏈紑濮�');
+        }
+      });
+    },
     /** 鎻愪氦鎸夐挳 */
     submitForm() {
       this.$refs["form"].validate(valid => {
diff --git a/pom.xml b/pom.xml
index a6265f6..a905b2b 100644
--- a/pom.xml
+++ b/pom.xml
@@ -285,4 +285,5 @@
         </pluginRepository>
     </pluginRepositories>
 
+
 </project>
\ No newline at end of file

--
Gitblit v1.9.3