From 2c65c31aceb16c1d06c692266e3fb555ecafdfb5 Mon Sep 17 00:00:00 2001
From: wujian <14790700720@163.com>
Date: 星期三, 23 十月 2024 09:10:47 +0800
Subject: [PATCH] change-4

---
 jcdm-main/src/main/java/com/jcdm/main/plcserver/conf/OPCElement.java                                                      |    4 
 jcdm-quartz/src/main/java/com/jcdm/quartz/task/RyTask.java                                                                |  210 +++++++++
 jcdm-ui/src/views/main/da/passingStationCollection/index.vue                                                              |   33 
 jcdm-main/src/main/java/com/jcdm/main/bs/orderScheduling/controller/BsOrderSchedulingController.java                      |    8 
 jcdm-main/src/main/java/com/jcdm/main/bs/orderScheduling/service/IBsOrderSchedulingService.java                           |    1 
 jcdm-main/src/main/java/com/jcdm/main/da/passingStationCollection/service/IDaPassingStationCollectionService.java         |    4 
 jcdm-ui/src/views/main/da/followReport/report3.vue                                                                        |    4 
 jcdm-main/src/main/java/com/jcdm/main/da/passingStationCollection/controller/DaPassingStationCollectionController.java    |   31 +
 jcdm-main/src/main/java/com/jcdm/main/da/passingStationCollection/service/impl/DaPassingStationCollectionServiceImpl.java |   40 +
 jcdm-ui/src/views/dashboard/PanelGroup.vue                                                                                |   32 
 jcdm-main/src/main/java/com/jcdm/main/da/paramCollection/mapper/DaParamCollectionMapper.java                              |    1 
 jcdm-ui/src/api/main/da/paramCollection/paramCollection.js                                                                |    8 
 jcdm-main/src/main/java/com/jcdm/main/da/passingStationCollection/domain/ProductNumVO.java                                |   19 
 jcdm-main/src/main/java/com/jcdm/main/da/paramCollection/service/IDaParamCollectionService.java                           |    1 
 jcdm-main/src/main/java/com/jcdm/main/bs/orderScheduling/service/impl/BsOrderSchedulingServiceImpl.java                   |   25 +
 jcdm-ui/src/views/main/da/productNum/index.vue                                                                            |  154 +++++++
 jcdm-ui/src/views/main/bs/orderScheduling/index.vue                                                                       |  102 ++-
 jcdm-ui/src/views/main/om/productionOrde/planStatistics.vue                                                               |   22 
 jcdm-main/src/main/java/com/jcdm/main/bs/beatSetting/mapper/ProductNumTableMapper.java                                    |   15 
 jcdm-main/src/main/java/com/jcdm/main/om/productionOrde/domain/OmProductionOrdeInfo.java                                  |    2 
 jcdm-main/src/main/java/com/jcdm/main/bs/beatSetting/domain/ProductNumTable.java                                          |   28 +
 jcdm-main/src/main/resources/mapper/da/paramCollection/DaParamCollectionMapper.xml                                        |   21 +
 jcdm-ui/src/views/main/da/followReport/report4.vue                                                                        |    4 
 jcdm-main/src/main/resources/mapper/bs/orderScheduling/BsOrderSchedulingMapper.xml                                        |   24 +
 jcdm-main/src/main/java/com/jcdm/main/bs/beatSetting/service/ProductNumTableService.java                                  |   13 
 jcdm-ui/src/views/main/om/productionOrde/index.vue                                                                        |   46 +
 jcdm-main/src/main/java/com/jcdm/main/da/passingStationCollection/mapper/DaPassingStationCollectionMapper.java            |    1 
 jcdm-main/src/main/java/com/jcdm/main/bs/orderScheduling/domain/BsOrderScheduling.java                                    |   44 -
 jcdm-main/src/main/resources/mapper/bs/beatSetting/ProductNumTableMapper.xml                                              |   55 ++
 jcdm-main/src/main/java/com/jcdm/main/da/paramCollection/service/impl/DaParamCollectionServiceImpl.java                   |   10 
 jcdm-ui/src/views/main/da/followReport/report5.vue                                                                        |    4 
 jcdm-main/src/main/java/com/jcdm/main/bs/beatSetting/controller/BsBeatSettingController.java                              |   40 +
 jcdm-main/src/main/java/com/jcdm/main/da/paramCollection/controller/DaParamCollectionController.java                      |    9 
 jcdm-main/src/main/resources/mapper/da/passingStationCollection/DaPassingStationCollectionMapper.xml                      |   21 +
 jcdm-ui/src/views/main/da/followReport/report1.vue                                                                        |    4 
 jcdm-main/src/main/java/com/jcdm/main/bs/beatSetting/service/impl/ProductNumTableServiceImpl.java                         |   33 +
 jcdm-ui/src/views/main/da/paramCollection/index.vue                                                                       |   45 +
 jcdm-ui/src/api/main/da/passingStationCollection/passingStationCollection.js                                              |   16 
 jcdm-main/src/main/java/com/jcdm/main/da/passingStationCollection/domain/DaPassingStationCollection.java                  |   23 
 jcdm-main/src/main/java/com/jcdm/main/bs/orderScheduling/mapper/BsOrderSchedulingMapper.java                              |    6 
 jcdm-ui/src/views/main/da/followReport/report2.vue                                                                        |    4 
 jcdm-main/src/main/java/com/jcdm/main/plcserver/sub/OPCUaSubscription.java                                                |   20 
 jcdm-ui/src/views/main/da/followReport/index.vue                                                                          |   20 
 43 files changed, 1,028 insertions(+), 179 deletions(-)

diff --git a/jcdm-main/src/main/java/com/jcdm/main/bs/beatSetting/controller/BsBeatSettingController.java b/jcdm-main/src/main/java/com/jcdm/main/bs/beatSetting/controller/BsBeatSettingController.java
index 56aa698..87edbcb 100644
--- a/jcdm-main/src/main/java/com/jcdm/main/bs/beatSetting/controller/BsBeatSettingController.java
+++ b/jcdm-main/src/main/java/com/jcdm/main/bs/beatSetting/controller/BsBeatSettingController.java
@@ -1,7 +1,17 @@
 package com.jcdm.main.bs.beatSetting.controller;
 
+import java.time.LocalDate;
 import java.util.List;
+import javax.annotation.Resource;
 import javax.servlet.http.HttpServletResponse;
+
+import cn.hutool.core.util.ObjectUtil;
+import com.jcdm.common.core.domain.R;
+import com.jcdm.main.bs.beatSetting.domain.ProductNumTable;
+import com.jcdm.main.bs.beatSetting.service.ProductNumTableService;
+import com.jcdm.main.da.passingStationCollection.domain.DaPassingStationCollection;
+import com.jcdm.main.da.passingStationCollection.domain.ProductNumVO;
+import com.jcdm.main.da.passingStationCollection.service.IDaPassingStationCollectionService;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.GetMapping;
@@ -34,6 +44,12 @@
     @Autowired
     private IBsBeatSettingService bsBeatSettingService;
 
+    @Resource
+    private ProductNumTableService productNumTableService;
+
+    @Resource
+    private IDaPassingStationCollectionService daPassingStationCollectionService;
+
     /**
      * 鏌ヨ鑺傛媿璁剧疆鍒楄〃
      */
@@ -59,6 +75,30 @@
         util.exportExcel(response, list, "鑺傛媿璁剧疆鏁版嵁");
     }
 
+
+    @Log(title = "鑺傛媿璁剧疆", businessType = BusinessType.EXPORT)
+    @PostMapping("/productNumExport")
+    public void productNumExport(HttpServletResponse response, DaPassingStationCollection daPassingStationCollection)
+    {
+//        LocalDate queryDate = daPassingStationCollection.getQueryDate();
+//        String queryMonth = daPassingStationCollection.getQueryMonth();
+//        if (ObjectUtil.isNull(queryDate) && ObjectUtil.isNull(queryMonth)){
+//            return R.fail("璇烽�夋嫨鏈堜唤鎴栬�呮棩鏈�");
+//        }
+//        if (ObjectUtil.isNotEmpty(queryMonth) && ObjectUtil.isNotEmpty(queryDate)){
+//            String queryDateString = queryDate.toString();
+//            String queryMonthString = queryMonth.toString();
+//            if (!queryDateString.contains(queryMonthString)){
+//                return R.fail("璇风‘璁ら�夋嫨鐨勬湀浠藉拰鏃ユ湡鏈堜唤鏄惁鍖归厤");
+//            }
+//        }
+        List<ProductNumVO> productNum = daPassingStationCollectionService.getProductNum(daPassingStationCollection);
+        ExcelUtil<ProductNumVO> util = new ExcelUtil<ProductNumVO>(ProductNumVO.class);
+        util.exportExcel(response, productNum, "浜ч噺缁熻鏁版嵁");
+
+
+    }
+
     /**
      * 鑾峰彇鑺傛媿璁剧疆璇︾粏淇℃伅
      */
diff --git a/jcdm-main/src/main/java/com/jcdm/main/bs/beatSetting/domain/ProductNumTable.java b/jcdm-main/src/main/java/com/jcdm/main/bs/beatSetting/domain/ProductNumTable.java
new file mode 100644
index 0000000..6fa2861
--- /dev/null
+++ b/jcdm-main/src/main/java/com/jcdm/main/bs/beatSetting/domain/ProductNumTable.java
@@ -0,0 +1,28 @@
+package com.jcdm.main.bs.beatSetting.domain;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.jcdm.common.annotation.Excel;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.time.LocalDate;
+
+@Data
+public class ProductNumTable {
+
+    private Long id;
+
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private LocalDate productTime;
+
+    private String model;
+
+    private Integer zzOfflineNum;
+
+    private Integer zzOnlineNum;
+
+    private Integer hxOnlineNum;
+
+    private Integer productNumTheory;
+
+}
diff --git a/jcdm-main/src/main/java/com/jcdm/main/bs/beatSetting/mapper/ProductNumTableMapper.java b/jcdm-main/src/main/java/com/jcdm/main/bs/beatSetting/mapper/ProductNumTableMapper.java
new file mode 100644
index 0000000..d9f95ac
--- /dev/null
+++ b/jcdm-main/src/main/java/com/jcdm/main/bs/beatSetting/mapper/ProductNumTableMapper.java
@@ -0,0 +1,15 @@
+package com.jcdm.main.bs.beatSetting.mapper;
+
+import com.jcdm.main.bs.beatSetting.domain.ProductNumTable;
+
+import java.util.List;
+
+public interface ProductNumTableMapper {
+
+    public void insertProductNum(List<ProductNumTable> list);
+
+
+    public void updateProductNum(ProductNumTable productNumTable);
+
+    public List<ProductNumTable> selectProductNum(ProductNumTable productNumTable);
+}
diff --git a/jcdm-main/src/main/java/com/jcdm/main/bs/beatSetting/service/ProductNumTableService.java b/jcdm-main/src/main/java/com/jcdm/main/bs/beatSetting/service/ProductNumTableService.java
new file mode 100644
index 0000000..f3ccd51
--- /dev/null
+++ b/jcdm-main/src/main/java/com/jcdm/main/bs/beatSetting/service/ProductNumTableService.java
@@ -0,0 +1,13 @@
+package com.jcdm.main.bs.beatSetting.service;
+
+import com.jcdm.main.bs.beatSetting.domain.ProductNumTable;
+
+import java.util.List;
+
+public interface ProductNumTableService {
+
+    public void insertProductList(List<ProductNumTable> list);
+    public void updateProductNum(ProductNumTable productNumTable);
+
+    public List<ProductNumTable> selectProductList(ProductNumTable productNumTable);
+}
diff --git a/jcdm-main/src/main/java/com/jcdm/main/bs/beatSetting/service/impl/ProductNumTableServiceImpl.java b/jcdm-main/src/main/java/com/jcdm/main/bs/beatSetting/service/impl/ProductNumTableServiceImpl.java
new file mode 100644
index 0000000..e251cdf
--- /dev/null
+++ b/jcdm-main/src/main/java/com/jcdm/main/bs/beatSetting/service/impl/ProductNumTableServiceImpl.java
@@ -0,0 +1,33 @@
+package com.jcdm.main.bs.beatSetting.service.impl;
+
+import com.jcdm.main.bs.beatSetting.domain.ProductNumTable;
+import com.jcdm.main.bs.beatSetting.mapper.ProductNumTableMapper;
+import com.jcdm.main.bs.beatSetting.service.ProductNumTableService;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.util.List;
+
+@Service
+public class ProductNumTableServiceImpl implements ProductNumTableService {
+
+    @Resource
+    private ProductNumTableMapper productNumTableMapper;
+
+    @Override
+    public void insertProductList(List<ProductNumTable> list){
+        productNumTableMapper.insertProductNum(list);
+    }
+
+    @Override
+    public void updateProductNum(ProductNumTable productNumTable) {
+        productNumTableMapper.updateProductNum(productNumTable);
+    }
+
+    @Override
+    public List<ProductNumTable> selectProductList(ProductNumTable productNumTable) {
+       return productNumTableMapper.selectProductNum(productNumTable);
+    }
+
+
+}
diff --git a/jcdm-main/src/main/java/com/jcdm/main/bs/orderScheduling/controller/BsOrderSchedulingController.java b/jcdm-main/src/main/java/com/jcdm/main/bs/orderScheduling/controller/BsOrderSchedulingController.java
index 611d3af..bb18be3 100644
--- a/jcdm-main/src/main/java/com/jcdm/main/bs/orderScheduling/controller/BsOrderSchedulingController.java
+++ b/jcdm-main/src/main/java/com/jcdm/main/bs/orderScheduling/controller/BsOrderSchedulingController.java
@@ -156,9 +156,9 @@
             WriteSheet sheet1 = EasyExcel.writerSheet(1, "鎷х揣鏁版嵁")
                     .head(DaParamCollection.class).registerWriteHandler(new LongestMatchColumnWidthStyleStrategy())
                     .build();
-            WriteSheet sheet2 = EasyExcel.writerSheet(2, "鐩告満妫�娴�")
-                    .head(DaParamCollection.class).registerWriteHandler(new LongestMatchColumnWidthStyleStrategy())
-                    .build();
+//            WriteSheet sheet2 = EasyExcel.writerSheet(2, "鐩告満妫�娴�")
+//                    .head(DaParamCollection.class).registerWriteHandler(new LongestMatchColumnWidthStyleStrategy())
+//                    .build();
             WriteSheet sheet3 = EasyExcel.writerSheet(3, "澶栨紡妫�娴�")
                     .head(DaParamCollection.class).registerWriteHandler(new LongestMatchColumnWidthStyleStrategy())
                     .build();
@@ -170,7 +170,7 @@
                     .build();
             excelWriter.write(followReportList.getMainList(),mainSheet);
             excelWriter.write(followReportList.getList1(),sheet1);
-            excelWriter.write(followReportList.getList2(),sheet2);
+//            excelWriter.write(followReportList.getList2(),sheet2);
             excelWriter.write(followReportList.getList3(),sheet3);
             excelWriter.write(followReportList.getList4(),sheet4);
             excelWriter.write(followReportList.getList5(),sheet5);
diff --git a/jcdm-main/src/main/java/com/jcdm/main/bs/orderScheduling/domain/BsOrderScheduling.java b/jcdm-main/src/main/java/com/jcdm/main/bs/orderScheduling/domain/BsOrderScheduling.java
index 5e67680..58b3798 100644
--- a/jcdm-main/src/main/java/com/jcdm/main/bs/orderScheduling/domain/BsOrderScheduling.java
+++ b/jcdm-main/src/main/java/com/jcdm/main/bs/orderScheduling/domain/BsOrderScheduling.java
@@ -73,106 +73,86 @@
     private String model;
 
     /** 鐢熶骇鐘舵�� */
-    @Excel(name = "鐢熶骇鐘舵��")
     private String productionStatus;
 
     @ExcelProperty(value = "鐢熶骇鐘舵��", index = 4)
     private String productionStatusString;
 
     /** 宸ユ椂 */
-    @Excel(name = "宸ユ椂")
-    @ExcelProperty(value = "宸ユ椂", index = 5)
+    @ExcelIgnore
     private String workingHours;
 
     @TableField(exist = false)
     private Integer workingHoursInt;
 
     /** 褰撳墠宸ヤ綅 */
-    @Excel(name = "褰撳墠宸ヤ綅")
-    @ExcelProperty(value = "褰撳墠宸ヤ綅", index = 6)
+    @ExcelIgnore
     private String currentWorkstation;
 
     /** 璐ㄩ噺鐘舵�� */
-    @Excel(name = "璐ㄩ噺鐘舵��")
-    @ExcelProperty(value = "璐ㄩ噺鐘舵��", index = 7)
+    @ExcelProperty(value = "璐ㄩ噺鐘舵��", index = 5)
     private String qualityStatus;
 
     /** 鏄惁鎵撳嵃 */
-    @Excel(name = "鏄惁鎵撳嵃")
     private String whetherOrPrint;
 
     /** 10鎶ュ伐 */
-    @Excel(name = "10鎶ュ伐")
     @ExcelIgnore
     private String report10;
 
     /** 20鎶ュ伐 */
-    @Excel(name = "20鎶ュ伐")
     @ExcelIgnore
     private String report20;
 
     /** 鍚堢涓婄嚎 */
-    @Excel(name = "鍚堢涓婄嚎")
     @ExcelIgnore
     private String combinedBoxTime;
 
     /** 鎬昏涓嬬嚎 */
-    @Excel(name = "鎬昏涓嬬嚎")
     @ExcelIgnore
     private String finalAssemblyTime;
 
     /** 鎿嶄綔浜� */
-    @Excel(name = "鎿嶄綔浜�")
-    @ExcelProperty(value = "鎿嶄綔浜�", index = 14)
+    @ExcelProperty(value = "鎿嶄綔浜�", index = 10)
     private String operator;
 
     /** 鎿嶄綔鏃堕棿 */
-    @Excel(name = "鎿嶄綔鏃堕棿")
-    @ExcelProperty(value = "鎿嶄綔鏃堕棿", index = 15)
+    @ExcelProperty(value = "鎿嶄綔鏃堕棿", index = 11)
     private String operateTime;
 
     /** 鐘舵�� */
-    @Excel(name = "鐘舵��")
     @ExcelIgnore
     private String status;
 
     /** 棰勭暀瀛楁1 */
-    @Excel(name = "棰勭暀瀛楁1")
     @ExcelIgnore
     private String spareField1;
 
     /** 棰勭暀瀛楁2 */
-    @Excel(name = "棰勭暀瀛楁2")
     @ExcelIgnore
     private String spareField2;
 
     /** 棰勭暀瀛楁3 */
-    @Excel(name = "棰勭暀瀛楁3")
     @ExcelIgnore
     private String spareField3;
 
     /** 棰勭暀瀛楁4 */
-    @Excel(name = "棰勭暀瀛楁4")
     @ExcelIgnore
     private String spareField4;
 
     /** 鍒涘缓鐢ㄦ埛 */
-    @Excel(name = "鍒涘缓鐢ㄦ埛")
     @ExcelIgnore
     private String createUser;
 
     /** 鏇存敼鐢ㄦ埛 */
-    @Excel(name = "鏇存敼鐢ㄦ埛")
     @ExcelIgnore
     private String updateUser;
 
     /** 澶囨敞 */
-    @Excel(name = "澶囨敞")
     @ExcelIgnore
     private String remarks;
 
     /** CVT鎶ュ伐 */
-    @Excel(name = "CVT鎶ュ伐")
     @ExcelIgnore
     private String report30;
 
@@ -187,42 +167,40 @@
 
     /** 鍚堢涓婄嚎鏃堕棿 */
     @Excel(name = "鍚堢涓婄嚎鏃堕棿")
-    @ExcelProperty(value = "鍚堢涓婄嚎鏃堕棿", index = 8)
+    @ExcelProperty(value = "鍚堢涓婄嚎鏃堕棿", index = 6)
     @com.alibaba.excel.annotation.format.DateTimeFormat("yyyy-MM-dd HH:mm:ss")
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     private Date boxClosingOnlineTime;
 
     /** 鍚堢涓嬬嚎鏃堕棿 */
     @Excel(name = "鍚堢涓嬬嚎鏃堕棿")
-    @ExcelProperty(value = "鍚堢涓嬬嚎鏃堕棿", index = 9)
+    @ExcelProperty(value = "鍚堢涓嬬嚎鏃堕棿", index = 7)
     @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     private Date closingBoxOfflineTime;
 
     /** 鎬昏涓婄嚎鏃堕棿 */
     @Excel(name = "鎬昏涓婄嚎鏃堕棿")
-    @ExcelProperty(value = "鎬昏涓婄嚎鏃堕棿", index =10)
+    @ExcelProperty(value = "鎬昏涓婄嚎鏃堕棿", index =8)
     @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     private Date finalAssemblyLaunchTime;
 
     /** 鎬昏涓嬬嚎鏃堕棿 */
     @Excel(name = "鎬昏涓嬬嚎鏃堕棿")
-    @ExcelProperty(value = "鎬昏涓嬬嚎鏃堕棿", index = 11)
+    @ExcelProperty(value = "鎬昏涓嬬嚎鏃堕棿", index = 9)
     @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     private Date finalAssemblyOfflineTime;
 
     /** CVT涓婄嚎鏃堕棿 */
-    @Excel(name = "CVT涓婄嚎鏃堕棿")
-    @ExcelProperty(value = "CVT涓婄嚎鏃堕棿", index = 12)
+    @ExcelIgnore
     @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     private Date cvtLaunchTime;
 
     /** CVT涓嬬嚎鏃堕棿 */
-    @Excel(name = "CVT涓嬬嚎鏃堕棿")
-    @ExcelProperty(value = "CVT涓嬬嚎鏃堕棿", index = 13)
+    @ExcelIgnore
     @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     private Date cvtOfflineTime;
diff --git a/jcdm-main/src/main/java/com/jcdm/main/bs/orderScheduling/mapper/BsOrderSchedulingMapper.java b/jcdm-main/src/main/java/com/jcdm/main/bs/orderScheduling/mapper/BsOrderSchedulingMapper.java
index e5d5adc..2b11e94 100644
--- a/jcdm-main/src/main/java/com/jcdm/main/bs/orderScheduling/mapper/BsOrderSchedulingMapper.java
+++ b/jcdm-main/src/main/java/com/jcdm/main/bs/orderScheduling/mapper/BsOrderSchedulingMapper.java
@@ -2,7 +2,10 @@
 
 import com.jcdm.main.bs.orderScheduling.Query.PrepareOnlineQuery;
 import com.jcdm.main.bs.orderScheduling.domain.BsOrderScheduling;
+import com.jcdm.main.da.passingStationCollection.domain.ProductNumVO;
+import org.apache.ibatis.annotations.Param;
 
+import java.time.LocalDate;
 import java.util.List;
 
 /**
@@ -36,6 +39,7 @@
      * @return 璁㈠崟鎺掍骇闆嗗悎
      */
     public List<BsOrderScheduling> selectBsOrderSchedulingList(BsOrderScheduling bsOrderScheduling);
+    public List<BsOrderScheduling> selectBsOrderSchedulingListForNum(@Param("queryDate") String queryDate,@Param("addQueryDate") String addQueryDate);
 
     public List<BsOrderScheduling> selectBsOrderSchedulingPage(BsOrderScheduling bsOrderScheduling);
 
@@ -81,4 +85,6 @@
      * @return 缁撴灉
      */
     public int deleteBsOrderSchedulingByIds(Long[] ids);
+
+    public List<ProductNumVO> getProductNum(@Param("queryDate") String queryDate,@Param("addQueryDate") String addQueryDate);
 }
diff --git a/jcdm-main/src/main/java/com/jcdm/main/bs/orderScheduling/service/IBsOrderSchedulingService.java b/jcdm-main/src/main/java/com/jcdm/main/bs/orderScheduling/service/IBsOrderSchedulingService.java
index 38642c0..98d5a67 100644
--- a/jcdm-main/src/main/java/com/jcdm/main/bs/orderScheduling/service/IBsOrderSchedulingService.java
+++ b/jcdm-main/src/main/java/com/jcdm/main/bs/orderScheduling/service/IBsOrderSchedulingService.java
@@ -36,6 +36,7 @@
      * @return 璁㈠崟鎺掍骇闆嗗悎
      */
     public List<BsOrderScheduling> selectBsOrderSchedulingList(BsOrderScheduling bsOrderScheduling);
+    public List<BsOrderScheduling> selectBsOrderSchedulingListForNum();
     public List<BsOrderScheduling> selectBsOrderSchedulingPage(BsOrderScheduling bsOrderScheduling);
     public FollowReportVO getFollowReportList(BsOrderScheduling bsOrderScheduling);
     public List<LineChartVO> getOffLineNum();
diff --git a/jcdm-main/src/main/java/com/jcdm/main/bs/orderScheduling/service/impl/BsOrderSchedulingServiceImpl.java b/jcdm-main/src/main/java/com/jcdm/main/bs/orderScheduling/service/impl/BsOrderSchedulingServiceImpl.java
index ee68208..a6534b3 100644
--- a/jcdm-main/src/main/java/com/jcdm/main/bs/orderScheduling/service/impl/BsOrderSchedulingServiceImpl.java
+++ b/jcdm-main/src/main/java/com/jcdm/main/bs/orderScheduling/service/impl/BsOrderSchedulingServiceImpl.java
@@ -92,6 +92,15 @@
     }
 
     @Override
+    public List<BsOrderScheduling> selectBsOrderSchedulingListForNum() {
+        LocalDate today = LocalDate.now();
+        LocalDate localDate = today.plusDays(1);
+        String queryDate = today.toString();
+        String addQueryDate = localDate.toString();
+        return bsOrderSchedulingMapper.selectBsOrderSchedulingListForNum(queryDate,addQueryDate);
+    }
+
+    @Override
     public List<BsOrderScheduling> selectBsOrderSchedulingPage(BsOrderScheduling bsOrderScheduling)
     {
         if(bsOrderScheduling.getDateConditions()!=null){
@@ -120,16 +129,26 @@
         List<DaPassingStationCollection> collect5 = new ArrayList<>();
         if (CollUtil.isNotEmpty(engineNoList)){
             allChildList = daParamCollectionMapper.getListBySfcCode(engineNoList);
-            collect5 = daPassingStationCollectionMapper.getListBySfcCode(engineNoList);
+            List<DaPassingStationCollection> tempCollect = daPassingStationCollectionMapper.getListBySfcCode(engineNoList);
+            if (engineNoList.size()>1){
+                List<DaPassingStationCollection> outCollect = new ArrayList<>();
+                engineNoList.forEach(engineNo -> {
+                    List<DaPassingStationCollection> collect = tempCollect.stream().filter(x -> engineNo.equals(x.getSfcCode())).collect(Collectors.toList());
+                    outCollect.addAll(collect);
+                });
+                collect5 = outCollect;
+            } else {
+                collect5 = tempCollect;
+            }
         }
         if (CollUtil.isNotEmpty(allChildList)){
             //鎷垮埌鎵�鏈夊瓙鏁版嵁
             List<DaParamCollection> collect1 = allChildList.stream().filter(x -> Constants.DATA1.equals(x.getType())).collect(Collectors.toList());
-            List<DaParamCollection> collect2 = allChildList.stream().filter(x -> Constants.DATA2.equals(x.getType())).collect(Collectors.toList());
+//            List<DaParamCollection> collect2 = allChildList.stream().filter(x -> Constants.DATA2.equals(x.getType())).collect(Collectors.toList());
             List<DaParamCollection> collect3 = allChildList.stream().filter(x -> Constants.DATA3.equals(x.getType())).collect(Collectors.toList());
             List<DaParamCollection> collect4 = allChildList.stream().filter(x -> Constants.DATA4.equals(x.getType())).collect(Collectors.toList());
             vo.setList1(collect1);
-            vo.setList2(collect2);
+//            vo.setList2(collect2);
             vo.setList3(collect3);
             vo.setList4(collect4);
         }
diff --git a/jcdm-main/src/main/java/com/jcdm/main/da/paramCollection/controller/DaParamCollectionController.java b/jcdm-main/src/main/java/com/jcdm/main/da/paramCollection/controller/DaParamCollectionController.java
index cd73dbd..5165166 100644
--- a/jcdm-main/src/main/java/com/jcdm/main/da/paramCollection/controller/DaParamCollectionController.java
+++ b/jcdm-main/src/main/java/com/jcdm/main/da/paramCollection/controller/DaParamCollectionController.java
@@ -1,5 +1,6 @@
 package com.jcdm.main.da.paramCollection.controller;
 
+import java.time.LocalTime;
 import java.util.List;
 import javax.servlet.http.HttpServletResponse;
 
@@ -48,6 +49,14 @@
         return getDataTable(list);
     }
 
+    @GetMapping("/queryDaParamCollectionListForSearch")
+    public TableDataInfo queryDaParamCollectionListForSearch(DaParamCollection daParamCollection)
+    {
+        startPage();
+        List<DaParamCollection> list = daParamCollectionService.queryDaParamCollectionListForSearch(daParamCollection);
+        return getDataTable(list);
+    }
+
     /**
      * 瀵煎嚭璁惧浜у搧杩囩▼鍙傛暟閲囬泦鍒楄〃
      */
diff --git a/jcdm-main/src/main/java/com/jcdm/main/da/paramCollection/mapper/DaParamCollectionMapper.java b/jcdm-main/src/main/java/com/jcdm/main/da/paramCollection/mapper/DaParamCollectionMapper.java
index 62696e3..e966bb3 100644
--- a/jcdm-main/src/main/java/com/jcdm/main/da/paramCollection/mapper/DaParamCollectionMapper.java
+++ b/jcdm-main/src/main/java/com/jcdm/main/da/paramCollection/mapper/DaParamCollectionMapper.java
@@ -27,6 +27,7 @@
      * @return 璁惧浜у搧杩囩▼鍙傛暟閲囬泦闆嗗悎
      */
     public List<DaParamCollection> selectDaParamCollectionList(DaParamCollection daParamCollection);
+    public List<DaParamCollection> queryDaParamCollectionListForSearch(DaParamCollection daParamCollection);
 
     public List<DaParamCollection> getListBySfcCode(@Param("engineNoList") List<String> engineNoList);
 
diff --git a/jcdm-main/src/main/java/com/jcdm/main/da/paramCollection/service/IDaParamCollectionService.java b/jcdm-main/src/main/java/com/jcdm/main/da/paramCollection/service/IDaParamCollectionService.java
index 3ca879f..2305da1 100644
--- a/jcdm-main/src/main/java/com/jcdm/main/da/paramCollection/service/IDaParamCollectionService.java
+++ b/jcdm-main/src/main/java/com/jcdm/main/da/paramCollection/service/IDaParamCollectionService.java
@@ -27,6 +27,7 @@
      * @return 璁惧浜у搧杩囩▼鍙傛暟閲囬泦闆嗗悎
      */
     public List<DaParamCollection> selectDaParamCollectionList(DaParamCollection daParamCollection);
+    public List<DaParamCollection> queryDaParamCollectionListForSearch(DaParamCollection daParamCollection);
 
     /**
      * 鏂板璁惧浜у搧杩囩▼鍙傛暟閲囬泦
diff --git a/jcdm-main/src/main/java/com/jcdm/main/da/paramCollection/service/impl/DaParamCollectionServiceImpl.java b/jcdm-main/src/main/java/com/jcdm/main/da/paramCollection/service/impl/DaParamCollectionServiceImpl.java
index 0ab83b0..959a680 100644
--- a/jcdm-main/src/main/java/com/jcdm/main/da/paramCollection/service/impl/DaParamCollectionServiceImpl.java
+++ b/jcdm-main/src/main/java/com/jcdm/main/da/paramCollection/service/impl/DaParamCollectionServiceImpl.java
@@ -61,6 +61,16 @@
         return daParamCollectionMapper.selectDaParamCollectionList(daParamCollection);
     }
 
+    @Override
+    public List<DaParamCollection> queryDaParamCollectionListForSearch(DaParamCollection daParamCollection) {
+        if(daParamCollection.getDateConditions()!=null){
+            String[] conditions = daParamCollection.getDateConditions();
+            daParamCollection.setStartTime(conditions[0]);
+            daParamCollection.setEndTime(conditions[1]);
+        }
+        return daParamCollectionMapper.selectDaParamCollectionList(daParamCollection);
+    }
+
     /**
      * 鏂板璁惧浜у搧杩囩▼鍙傛暟閲囬泦
      * 
diff --git a/jcdm-main/src/main/java/com/jcdm/main/da/passingStationCollection/controller/DaPassingStationCollectionController.java b/jcdm-main/src/main/java/com/jcdm/main/da/passingStationCollection/controller/DaPassingStationCollectionController.java
index 9b4f3fc..c5d5a36 100644
--- a/jcdm-main/src/main/java/com/jcdm/main/da/passingStationCollection/controller/DaPassingStationCollectionController.java
+++ b/jcdm-main/src/main/java/com/jcdm/main/da/passingStationCollection/controller/DaPassingStationCollectionController.java
@@ -1,5 +1,6 @@
 package com.jcdm.main.da.passingStationCollection.controller;
 
+import cn.hutool.core.util.ObjectUtil;
 import com.jcdm.common.annotation.Log;
 import com.jcdm.common.core.controller.BaseController;
 import com.jcdm.common.core.domain.AjaxResult;
@@ -9,6 +10,7 @@
 import com.jcdm.common.utils.DateUtils;
 import com.jcdm.common.utils.poi.ExcelUtil;
 import com.jcdm.main.da.passingStationCollection.domain.DaPassingStationCollection;
+import com.jcdm.main.da.passingStationCollection.domain.ProductNumVO;
 import com.jcdm.main.da.passingStationCollection.service.IDaPassingStationCollectionService;
 import com.jcdm.main.da.passingStationCollection.service.impl.DaPassingStationCollectionServiceImpl;
 import com.jcdm.main.da.passingStationCollection.vo.DaPassingStationVO;
@@ -18,6 +20,7 @@
 
 import javax.annotation.Resource;
 import javax.servlet.http.HttpServletResponse;
+import java.time.LocalDate;
 import java.util.List;
 
 /**
@@ -47,6 +50,15 @@
         List<DaPassingStationCollection> list = daPassingStationCollectionService.selectDaPassingStationCollectionList(daPassingStationCollection);
         return getDataTable(list);
     }
+
+    @GetMapping("/selectDaPassingStationCollectionForSearch")
+    public TableDataInfo selectDaPassingStationCollectionForSearch(DaPassingStationCollection daPassingStationCollection)
+    {
+        startPage();
+        List<DaPassingStationCollection> list = daPassingStationCollectionService.selectDaPassingStationCollectionForSearch(daPassingStationCollection);
+        return getDataTable(list);
+    }
+
 
     @GetMapping("/getTopProcess")
     public TableDataInfo getTopProcess()
@@ -152,4 +164,23 @@
 //        }
 //        return passingStationCollectionServiceImpl.sendMessage(message);
 //    }
+
+
+    @GetMapping("/getProductNum")
+    public R getProductNum(DaPassingStationCollection daPassingStationCollection){
+        LocalDate queryDate = daPassingStationCollection.getQueryDate();
+        String queryMonth = daPassingStationCollection.getQueryMonth();
+        if (ObjectUtil.isNull(queryDate) && ObjectUtil.isNull(queryMonth)){
+            return R.fail("璇烽�夋嫨鏈堜唤鎴栬�呮棩鏈�");
+        }
+        if (ObjectUtil.isNotEmpty(queryMonth) && ObjectUtil.isNotEmpty(queryDate)){
+            String queryDateString = queryDate.toString();
+            String queryMonthString = queryMonth.toString();
+            if (!queryDateString.contains(queryMonthString)){
+                return R.fail("璇风‘璁ら�夋嫨鐨勬湀浠藉拰鏃ユ湡鏈堜唤鏄惁鍖归厤");
+            }
+        }
+        List<ProductNumVO> productNum = daPassingStationCollectionService.getProductNum(daPassingStationCollection);
+        return R.ok(productNum);
+    }
 }
diff --git a/jcdm-main/src/main/java/com/jcdm/main/da/passingStationCollection/domain/DaPassingStationCollection.java b/jcdm-main/src/main/java/com/jcdm/main/da/passingStationCollection/domain/DaPassingStationCollection.java
index d5a6b59..c475777 100644
--- a/jcdm-main/src/main/java/com/jcdm/main/da/passingStationCollection/domain/DaPassingStationCollection.java
+++ b/jcdm-main/src/main/java/com/jcdm/main/da/passingStationCollection/domain/DaPassingStationCollection.java
@@ -1,5 +1,6 @@
 package com.jcdm.main.da.passingStationCollection.domain;
 
+import java.time.LocalDate;
 import java.util.Date;
 
 import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
@@ -51,17 +52,15 @@
 
     /** 浜у搧缂栧彿 */
     @Excel(name = "浜у搧缂栧彿")
-    @ExcelProperty(value = "浜у搧缂栧彿", index = 2)
     private String productCode;
 
     /** 浜х嚎缂栧彿 */
     @Excel(name = "浜х嚎缂栧彿")
-    @ExcelProperty(value = "浜х嚎缂栧彿", index = 3)
     private String productionLine;
 
     /** 宸ヤ綅缂栧彿 */
     @Excel(name = "宸ヤ綅缂栧彿")
-    @ExcelProperty(value = "宸ヤ綅缂栧彿", index = 4)
+    @ExcelProperty(value = "宸ヤ綅缂栧彿", index = 2)
     private String locationCode;
 
     /** 璁惧缂栧彿 */
@@ -73,7 +72,7 @@
     @Excel(name = "鍏ョ珯鏃堕棿")
     @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
-    @ExcelProperty(value = "鍏ョ珯鏃堕棿", index = 5)
+    @ExcelProperty(value = "鍏ョ珯鏃堕棿", index = 3)
     private Date inboundTime;
 
     /** 鍑虹珯鏃堕棿 */
@@ -81,7 +80,7 @@
     @Excel(name = "鍑虹珯鏃堕棿")
     @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
-    @ExcelProperty(value = "鍑虹珯鏃堕棿", index = 6)
+    @ExcelProperty(value = "鍑虹珯鏃堕棿", index = 4)
     private Date outboundTime;
 
     @TableField(exist = false)
@@ -100,12 +99,11 @@
 
     /** 鍑虹珯鏄惁鍚堟牸 */
     @Excel(name = "鍑虹珯鏄惁鍚堟牸")
-    @ExcelProperty(value = "鏄惁鍚堟牸", index = 7)
+    @ExcelProperty(value = "鏄惁鍚堟牸", index = 5)
     private String outRsSign;
 
     /** 鍑虹珯NG鍘熷洜 */
     @Excel(name = "鍑虹珯NG鍘熷洜")
-    @ExcelProperty(value = "NG鍘熷洜", index = 8)
     private String outMsgSign;
 
     /** 閲囬泦鏃堕棿 */
@@ -113,7 +111,7 @@
     @Excel(name = "閲囬泦鏃堕棿")
     @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
-    @ExcelProperty(value = "閲囬泦鏃堕棿", index = 9)
+    @ExcelProperty(value = "閲囬泦鏃堕棿", index = 6)
     private Date collectionTime;
 
     /** 棰勭暀瀛楁1 */
@@ -130,7 +128,6 @@
 
     /** 鑺傛媿鏃堕棿 */
     @Excel(name = "鑺傛媿鏃堕棿")
-    @ExcelProperty(value = "鑺傛媿鏃堕棿", index = 10)
     private String beatTime;
 
     @TableField(exist = false)
@@ -138,6 +135,14 @@
 
     private Long[] ids;
 
+    @TableField(exist = false)
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private LocalDate queryDate;
+
+
+    @TableField(exist = false)
+    private String queryMonth;
     public Long[] getIds() {
         return ids;
     }
diff --git a/jcdm-main/src/main/java/com/jcdm/main/da/passingStationCollection/domain/ProductNumVO.java b/jcdm-main/src/main/java/com/jcdm/main/da/passingStationCollection/domain/ProductNumVO.java
new file mode 100644
index 0000000..9b457e9
--- /dev/null
+++ b/jcdm-main/src/main/java/com/jcdm/main/da/passingStationCollection/domain/ProductNumVO.java
@@ -0,0 +1,19 @@
+package com.jcdm.main.da.passingStationCollection.domain;
+
+import com.jcdm.common.annotation.Excel;
+import lombok.Data;
+
+@Data
+public class ProductNumVO {
+
+    @Excel(name = "鏃ユ湡")
+    private String queryDate;
+
+    @Excel(name = "鏈哄瀷")
+    private String model;
+
+    @Excel(name = "浜ч噺")
+    private Integer num;
+
+
+}
diff --git a/jcdm-main/src/main/java/com/jcdm/main/da/passingStationCollection/mapper/DaPassingStationCollectionMapper.java b/jcdm-main/src/main/java/com/jcdm/main/da/passingStationCollection/mapper/DaPassingStationCollectionMapper.java
index a6b0321..b92e047 100644
--- a/jcdm-main/src/main/java/com/jcdm/main/da/passingStationCollection/mapper/DaPassingStationCollectionMapper.java
+++ b/jcdm-main/src/main/java/com/jcdm/main/da/passingStationCollection/mapper/DaPassingStationCollectionMapper.java
@@ -29,6 +29,7 @@
      * @return 浜у搧杩囩珯閲囬泦闆嗗悎
      */
     public List<DaPassingStationCollection> selectDaPassingStationCollectionList(DaPassingStationCollection daPassingStationCollection);
+    public List<DaPassingStationCollection> selectDaPassingStationCollectionForSearch(DaPassingStationCollection daPassingStationCollection);
 
     public List<DaPassingStationCollection> getListBySfcCode(@Param("engineNoList") List<String> engineNoList);
 
diff --git a/jcdm-main/src/main/java/com/jcdm/main/da/passingStationCollection/service/IDaPassingStationCollectionService.java b/jcdm-main/src/main/java/com/jcdm/main/da/passingStationCollection/service/IDaPassingStationCollectionService.java
index 44733b3..1bce033 100644
--- a/jcdm-main/src/main/java/com/jcdm/main/da/passingStationCollection/service/IDaPassingStationCollectionService.java
+++ b/jcdm-main/src/main/java/com/jcdm/main/da/passingStationCollection/service/IDaPassingStationCollectionService.java
@@ -2,6 +2,7 @@
 
 import com.jcdm.main.bs.orderScheduling.domain.BsOrderScheduling;
 import com.jcdm.main.da.passingStationCollection.domain.DaPassingStationCollection;
+import com.jcdm.main.da.passingStationCollection.domain.ProductNumVO;
 import com.jcdm.main.da.passingStationCollection.vo.DaPassingStationVO;
 
 import java.util.List;
@@ -29,6 +30,7 @@
      * @return 浜у搧杩囩珯閲囬泦闆嗗悎
      */
     public List<DaPassingStationCollection> selectDaPassingStationCollectionList(DaPassingStationCollection daPassingStationCollection);
+    public List<DaPassingStationCollection> selectDaPassingStationCollectionForSearch(DaPassingStationCollection daPassingStationCollection);
     public List<DaPassingStationVO> getTopProcess(DaPassingStationCollection daPassingStationCollection);
 
 
@@ -80,4 +82,6 @@
      * @return 缁撴灉
      */
     public String SelectSN(String SNcode,String node);
+
+    public List<ProductNumVO> getProductNum(DaPassingStationCollection daPassingStationCollection);
 }
diff --git a/jcdm-main/src/main/java/com/jcdm/main/da/passingStationCollection/service/impl/DaPassingStationCollectionServiceImpl.java b/jcdm-main/src/main/java/com/jcdm/main/da/passingStationCollection/service/impl/DaPassingStationCollectionServiceImpl.java
index 617d31a..dc2def0 100644
--- a/jcdm-main/src/main/java/com/jcdm/main/da/passingStationCollection/service/impl/DaPassingStationCollectionServiceImpl.java
+++ b/jcdm-main/src/main/java/com/jcdm/main/da/passingStationCollection/service/impl/DaPassingStationCollectionServiceImpl.java
@@ -3,12 +3,14 @@
 import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.util.ObjectUtil;
 import com.alibaba.fastjson2.JSONObject;
+import com.jcdm.common.core.domain.R;
 import com.jcdm.common.utils.DateUtils;
 import com.jcdm.common.utils.StringUtils;
 import com.jcdm.main.bs.orderScheduling.domain.BsOrderScheduling;
 import com.jcdm.main.bs.orderScheduling.mapper.BsOrderSchedulingMapper;
 import com.jcdm.main.bs.orderScheduling.service.IBsOrderSchedulingService;
 import com.jcdm.main.da.passingStationCollection.domain.DaPassingStationCollection;
+import com.jcdm.main.da.passingStationCollection.domain.ProductNumVO;
 import com.jcdm.main.da.passingStationCollection.mapper.DaPassingStationCollectionMapper;
 import com.jcdm.main.da.passingStationCollection.service.IDaPassingStationCollectionService;
 import com.jcdm.main.da.passingStationCollection.vo.DaPassingStationVO;
@@ -69,6 +71,11 @@
     public List<DaPassingStationCollection> selectDaPassingStationCollectionList(DaPassingStationCollection daPassingStationCollection)
     {
         return daPassingStationCollectionMapper.selectDaPassingStationCollectionList(daPassingStationCollection);
+    }
+
+    @Override
+    public List<DaPassingStationCollection> selectDaPassingStationCollectionForSearch(DaPassingStationCollection daPassingStationCollection) {
+        return daPassingStationCollectionMapper.selectDaPassingStationCollectionForSearch(daPassingStationCollection);
     }
 
     @Override
@@ -251,6 +258,39 @@
         }
     }
 
+    @Override
+    public List<ProductNumVO> getProductNum(DaPassingStationCollection daPassingStationCollection) {
+        String queryMonth = daPassingStationCollection.getQueryMonth();
+        LocalDate queryLocalDate = daPassingStationCollection.getQueryDate();
+        if (ObjectUtil.isNotEmpty(queryLocalDate)){
+            LocalDate addQueryLocalDate = queryLocalDate.plusDays(1);
+            String queryDate = queryLocalDate.toString();
+            String addQueryDate = addQueryLocalDate.toString();
+            List<ProductNumVO> productNum = bsOrderSchedulingMapper.getProductNum(queryDate, addQueryDate);
+            if (CollUtil.isNotEmpty(productNum)){
+                productNum.forEach(x -> {
+                    x.setQueryDate(queryDate);
+                });
+            }
+            return productNum;
+        } else if (ObjectUtil.isNull(queryLocalDate) && ObjectUtil.isNotNull(queryMonth)){
+            //鎸夋湀浠芥煡璇�
+            String s = queryMonth + "-01";
+            LocalDate parse = LocalDate.parse(s);
+            LocalDate localDate = parse.plusMonths(1);
+            String queryDate = parse.toString();
+            String addQueryDate = localDate.toString();
+            List<ProductNumVO> productNum = bsOrderSchedulingMapper.getProductNum(queryDate, addQueryDate);
+            if (CollUtil.isNotEmpty(productNum)){
+                productNum.forEach(x -> {
+                    x.setQueryDate(queryMonth);
+                });
+            }
+            return productNum;
+        }
+        return new ArrayList<ProductNumVO>();
+    }
+
 //    public String sendMessage(String message) throws Exception{
 //        Map<String,Object> map = new HashMap<>();
 //
diff --git a/jcdm-main/src/main/java/com/jcdm/main/om/productionOrde/domain/OmProductionOrdeInfo.java b/jcdm-main/src/main/java/com/jcdm/main/om/productionOrde/domain/OmProductionOrdeInfo.java
index b02c730..c143f10 100644
--- a/jcdm-main/src/main/java/com/jcdm/main/om/productionOrde/domain/OmProductionOrdeInfo.java
+++ b/jcdm-main/src/main/java/com/jcdm/main/om/productionOrde/domain/OmProductionOrdeInfo.java
@@ -139,11 +139,9 @@
 
 
     /** 淇敼浜� */
-    @Excel(name = "淇敼浜�")
     private String updateUser;
 
     /** 澶囨敞 */
-    @Excel(name = "澶囨敞")
     private String remarks;
 
     /** 娴佹按鍙� */
diff --git a/jcdm-main/src/main/java/com/jcdm/main/plcserver/conf/OPCElement.java b/jcdm-main/src/main/java/com/jcdm/main/plcserver/conf/OPCElement.java
index dc7df46..08a6d69 100644
--- a/jcdm-main/src/main/java/com/jcdm/main/plcserver/conf/OPCElement.java
+++ b/jcdm-main/src/main/java/com/jcdm/main/plcserver/conf/OPCElement.java
@@ -1,5 +1,7 @@
 package com.jcdm.main.plcserver.conf;
 
+import java.time.LocalDateTime;
+
 /**
  * @ClassName: OPCElement
  * @Description: PC鍜孭LC閫氫俊浣跨敤鐨凮PCserver涓婄殑鏍囪鍚嶇О鍒楄〃
@@ -32,7 +34,7 @@
     public static final String OP120_ZZ_CODE_CHECK = OP120_ITEM_ZZ + "CodeCheck";//璇锋眰淇濆瓨
     public static final String OP060_HX_CODE_CHECK = OP060_ITEM_ZZ + "CodeCheck";//璇锋眰淇濆瓨
     public static final String OP020_HX_CODE_CHECK = OP020_ITEM_HX + "CodeCheck";//璇锋眰淇濆瓨
-    public static final String OP121_ZZ_CODE_CHECK = OP121_ITEM_ZZ + "CodeCheckFeed";//璇锋眰淇濆瓨
+    public static final String OP121_ZZ_CODE_CHECK = OP120_ITEM_ZZ + "CodeCheckFeed";//璇锋眰淇濆瓨
     public static final String OP050_HX_CODE_CHECK = "CFL4HX.OP050.CodeCheck";//璇锋眰淇濆瓨
 
     //杩斾慨鐩戝惉鐐逛綅-465
diff --git a/jcdm-main/src/main/java/com/jcdm/main/plcserver/sub/OPCUaSubscription.java b/jcdm-main/src/main/java/com/jcdm/main/plcserver/sub/OPCUaSubscription.java
index c0d63d8..3b3b98f 100644
--- a/jcdm-main/src/main/java/com/jcdm/main/plcserver/sub/OPCUaSubscription.java
+++ b/jcdm-main/src/main/java/com/jcdm/main/plcserver/sub/OPCUaSubscription.java
@@ -316,6 +316,23 @@
                 }
                 logger.info("-----杩斿洖codeCheckFeed-----,{}",a);
 //                String a="1";
+                //zz涓婄嚎宸ヤ綅鏌ヨhx绾挎槸鍚﹁繃绔欏悎鏍�
+                if (OPCElement.OP120_ZZ_CODE_CHECK.equals(Node)){
+                    //杩囩珯璁板綍
+                    DaPassingStationCollection PassingStationCollection=new DaPassingStationCollection();
+                    PassingStationCollection.setSfcCode(SNCode);
+                    PassingStationCollection.setLocationCode("OP160");
+                    List<DaPassingStationCollection> ZZOP120PassCheck = passingStationCollectionServiceImpl.selectDaPassingStationCollectionList(PassingStationCollection);
+                    if (CollUtil.isEmpty(ZZOP120PassCheck)){
+                        a = "";
+                    } else {
+                        DaPassingStationCollection passingStationCollection = ZZOP120PassCheck.get(0);
+                        String outRsSign = passingStationCollection.getOutRsSign();
+                        if (!OPCElement.QUALIFIED.equals(outRsSign)){
+                            a = "";
+                        }
+                    }
+                }
                 // 1:OK鍙敓浜� 2:NG涓嶅彲鐢熶骇 3:NG鍙繑宸� 4:PC妫�绱㈠け璐ワ紙鏃犺褰曪級5:PC妫�绱㈠け璐ワ紙杞欢锛�
                 if (StrUtil.isNotBlank(a)){
                     int input = Integer.parseInt(a);
@@ -621,7 +638,7 @@
                                 ParamCollection.setParamValue(readWriteEntityList.get(i).getValue().toString());
                             }
                             ParamCollection.setSfcCode(SNCode);
-                            ParamCollection.setParamName(list.get(i).getCollectParameterName());
+                            ParamCollection.setParamName(list.get(i).getParameterSetName());
                             ParamCollection.setParamUpper(list.get(i).getParamUpper());
                             ParamCollection.setParamLower(list.get(i).getParamLower());
                             ParamCollection.setUnit(list.get(i).getCollectParameterUnit());
@@ -654,6 +671,7 @@
             }
             DaPassingStationCollection PassingStationCollection=new DaPassingStationCollection();
             PassingStationCollection.setSfcCode(SNCode);
+            PassingStationCollection.setProductCode(bsOrderScheduling.getModel());
             PassingStationCollection.setLocationCode(parts[1]);
             PassingStationCollection.setOutboundTime(new Date());
             PassingStationCollection.setInboundTime(new Date(new Date().getTime()-beatTime*1000));
diff --git a/jcdm-main/src/main/resources/mapper/bs/beatSetting/ProductNumTableMapper.xml b/jcdm-main/src/main/resources/mapper/bs/beatSetting/ProductNumTableMapper.xml
new file mode 100644
index 0000000..030a6fd
--- /dev/null
+++ b/jcdm-main/src/main/resources/mapper/bs/beatSetting/ProductNumTableMapper.xml
@@ -0,0 +1,55 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.jcdm.main.bs.beatSetting.mapper.ProductNumTableMapper">
+    
+    <resultMap type="ProductNumTable" id="ProductNumTableResult">
+        <result property="id"    column="id"    />
+        <result property="zzOfflineNum"    column="zz_offline_num"    />
+        <result property="zzOnlineNum"    column="zz_online_num"    />
+        <result property="hxOnlineNum"    column="hx_online_num"    />
+        <result property="productTime"    column="product_time"    />
+        <result property="model"    column="model"    />
+        <result property="productNumTheory"    column="product_num_theory"    />
+    </resultMap>
+
+    <sql id="selectProductNumVo">
+        select id, zz_offline_num, zz_online_num, hx_online_num, product_time, model from product_num_table
+    </sql>
+
+    <insert id="insertProductNum">
+        INSERT INTO product_num_table (id, zz_offline_num,zz_online_num,hx_online_num,product_time,model,product_num_theory )
+        VALUES
+        <foreach collection="list" item="item" index="index" separator=",">
+            (#{item.id}, #{item.zzOfflineNum}, #{item.zzOnlineNum}, #{item.hxOnlineNum}, #{item.productTime},#{item.model},#{item.productNumTheory})
+        </foreach>
+    </insert>
+
+    <update id="updateProductNum">
+        update product_num_table
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="zzOfflineNum != null">zz_offline_num = #{zzOfflineNum},</if>
+            <if test="zzOnlineNum != null">zz_online_num = #{zzOnlineNum},</if>
+            <if test="hxOnlineNum != null ">hx_online_num = #{hxOnlineNum},</if>
+            <if test="productTime != null">product_time = #{productTime},</if>
+            <if test="model != null and model != ''">model = #{model},</if>
+            <if test="productNumTheory != null">product_num_theory = #{productNumTheory},</if>
+        </trim>
+        where id = #{id}
+    </update>
+
+
+    <select id="selectProductNum" parameterType="ProductNumTable" resultMap="ProductNumTableResult">
+        <include refid="selectProductNumVo"/>
+        <where>
+            <if test="id != null  and id != ''"> and id = #{id}</if>
+            <if test="zzOfflineNum != null  and zzOfflineNum != ''"> and zz_offline_num = #{zzOfflineNum}</if>
+            <if test="zzOnlineNum != null  and zzOnlineNum != ''"> and zz_online_num = #{zzOnlineNum}</if>
+            <if test="hxOnlineNum != null  and hxOnlineNum != ''"> and hx_online_num = #{hxOnlineNum}</if>
+            <if test="productTime != null "> and product_time = #{productTime}</if>
+            <if test="model != null  and model != ''"> and model = #{model}</if>
+        </where>
+    </select>
+
+</mapper>
\ No newline at end of file
diff --git a/jcdm-main/src/main/resources/mapper/bs/orderScheduling/BsOrderSchedulingMapper.xml b/jcdm-main/src/main/resources/mapper/bs/orderScheduling/BsOrderSchedulingMapper.xml
index 80d7ebf..775f73b 100644
--- a/jcdm-main/src/main/resources/mapper/bs/orderScheduling/BsOrderSchedulingMapper.xml
+++ b/jcdm-main/src/main/resources/mapper/bs/orderScheduling/BsOrderSchedulingMapper.xml
@@ -172,6 +172,28 @@
         select count(*) from bs_order_scheduling
         where ${queryField} BETWEEN #{startTime} AND #{endTime}
     </select>
+    <select id="getProductNum" resultType="com.jcdm.main.da.passingStationCollection.domain.ProductNumVO">
+        SELECT model,count(*) as num FROM bs_order_scheduling
+        <where>
+            <if test="queryDate != null and queryDate != ''">
+             final_assembly_offline_time between #{queryDate} and #{addQueryDate}
+            </if>
+        </where>
+        GROUP BY model
+    </select>
+
+    <select id="selectBsOrderSchedulingListForNum"
+            parameterType="BsOrderScheduling" resultMap="BsOrderSchedulingResult">
+        select model,final_assembly_offline_time,final_assembly_launch_time,box_closing_online_time
+        from bs_order_scheduling
+        <where>
+            <if test="queryDate != null and queryDate != ''">
+                final_assembly_offline_time between #{queryDate} and #{addQueryDate}
+        or final_assembly_launch_time between #{queryDate} and #{addQueryDate}
+        or box_closing_online_time between #{queryDate} and #{addQueryDate}
+            </if>
+        </where>
+    </select>
 
 
     <insert id="insertBsOrderScheduling" parameterType="BsOrderScheduling" useGeneratedKeys="true" keyProperty="id">
@@ -297,4 +319,6 @@
             #{id}
         </foreach>
     </delete>
+
+
 </mapper>
\ No newline at end of file
diff --git a/jcdm-main/src/main/resources/mapper/da/paramCollection/DaParamCollectionMapper.xml b/jcdm-main/src/main/resources/mapper/da/paramCollection/DaParamCollectionMapper.xml
index 03caf9a..032d1f6 100644
--- a/jcdm-main/src/main/resources/mapper/da/paramCollection/DaParamCollectionMapper.xml
+++ b/jcdm-main/src/main/resources/mapper/da/paramCollection/DaParamCollectionMapper.xml
@@ -35,6 +35,27 @@
         select id, work_order_no, sfc_code, product_code, production_line, location_code, equipment_no, param_code, param_value, param_upper, param_lower, param_standard, collection_time, spare_field_1, spare_field_2, create_user, create_time, update_user, update_time, state, param_name, unit, type, repair_flag from da_param_collection
     </sql>
 
+    <sql id="queryDaParamCollectionForSearch">
+        select id, work_order_no, sfc_code, product_code, location_code, param_code, param_value, param_upper, param_lower, collection_time, state, param_name, unit, type from da_param_collection
+    </sql>
+
+    <select id="queryDaParamCollectionListForSearch" parameterType="DaParamCollection" resultMap="DaParamCollectionResult">
+        <include refid="queryDaParamCollectionForSearch"/>
+        <where>
+            <if test="workOrderNo != null  and workOrderNo != ''"> and work_order_no = #{workOrderNo}</if>
+            <if test="type != null  and type != ''"> and type = #{type}</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="productionLine != null  and productionLine != ''"> and production_line = #{productionLine}</if>
+            <if test="locationCode != null  and locationCode != ''"> and location_code = #{locationCode}</if>
+            <if test="equipmentNo != null  and equipmentNo != ''"> and equipment_no = #{equipmentNo}</if>
+            <if test="paramCode != null  and paramCode != ''"> and param_code = #{paramCode}</if>
+            <if test="paramValue != null  and paramValue != ''"> and param_value = #{paramValue}</if>
+            <if test="dateConditions != null  and dateConditions != ''"> and collection_time BETWEEN #{startTime} AND #{endTime}</if>
+        </where>
+        ORDER BY id DESC
+    </select>
+
     <select id="selectDaParamCollectionList" parameterType="DaParamCollection" resultMap="DaParamCollectionResult">
         <include refid="selectDaParamCollectionVo"/>
         <where>  
diff --git a/jcdm-main/src/main/resources/mapper/da/passingStationCollection/DaPassingStationCollectionMapper.xml b/jcdm-main/src/main/resources/mapper/da/passingStationCollection/DaPassingStationCollectionMapper.xml
index 8e77ca2..2888fd5 100644
--- a/jcdm-main/src/main/resources/mapper/da/passingStationCollection/DaPassingStationCollectionMapper.xml
+++ b/jcdm-main/src/main/resources/mapper/da/passingStationCollection/DaPassingStationCollectionMapper.xml
@@ -33,6 +33,27 @@
         select id, work_order_no, sfc_code, product_code, production_line, location_code, equipment_no, inbound_time, outbound_time, in_rs_sign, in_msg_sign, out_rs_sign, out_msg_sign, collection_time, spare_field_1, spare_field_2, create_user, create_time, update_user, update_time, beat_time, repair_flag from da_passing_station_collection
     </sql>
 
+    <sql id="selectDaPassingStationCollectionForSearch">
+        select id, work_order_no, sfc_code, product_code, location_code, inbound_time, outbound_time, out_rs_sign, collection_time from da_passing_station_collection
+    </sql>
+
+    <select id="selectDaPassingStationCollectionForSearch" parameterType="DaPassingStationCollection" resultMap="DaPassingStationCollectionResult">
+        <include refid="selectDaPassingStationCollectionForSearch"/>
+        <where>
+            <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="productionLine != null  and productionLine != ''"> and production_line = #{productionLine}</if>
+            <if test="locationCode != null  and locationCode != ''"> and location_code = #{locationCode}</if>
+            <if test="equipmentNo != null  and equipmentNo != ''"> and equipment_no = #{equipmentNo}</if>
+            <if test="inboundTime != null "> and CAST(inbound_time as DATE) = #{inboundTime}</if>
+            <if test="outboundTime != null "> and CAST(outbound_time as DATE) = #{outboundTime}</if>
+            <if test="outRsSign != null "> and out_rs_sign = #{outRsSign}</if>
+            <if test="outRsSign != null "> and out_rs_sign = #{outRsSign}</if>
+            <if test="startTime != null and startTime != '' and endTime != null and endTime != ''"> and outbound_time between #{startTime} and #{endTime}</if>
+        </where>
+    </select>
+
     <select id="selectDaPassingStationCollectionList" parameterType="DaPassingStationCollection" resultMap="DaPassingStationCollectionResult">
         <include refid="selectDaPassingStationCollectionVo"/>
         <where>  
diff --git a/jcdm-quartz/src/main/java/com/jcdm/quartz/task/RyTask.java b/jcdm-quartz/src/main/java/com/jcdm/quartz/task/RyTask.java
index d729ce6..5d0b1fc 100644
--- a/jcdm-quartz/src/main/java/com/jcdm/quartz/task/RyTask.java
+++ b/jcdm-quartz/src/main/java/com/jcdm/quartz/task/RyTask.java
@@ -1,6 +1,12 @@
 package com.jcdm.quartz.task;
 
 import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.util.ObjectUtil;
+import cn.hutool.core.util.StrUtil;
+import com.jcdm.main.bs.beatSetting.domain.BsBeatSetting;
+import com.jcdm.main.bs.beatSetting.domain.ProductNumTable;
+import com.jcdm.main.bs.beatSetting.service.IBsBeatSettingService;
+import com.jcdm.main.bs.beatSetting.service.ProductNumTableService;
 import com.jcdm.main.bs.orderScheduling.domain.BsOrderScheduling;
 import com.jcdm.main.bs.orderScheduling.service.IBsOrderSchedulingService;
 import com.jcdm.main.da.passingStationCollection.service.IDaPassingStationCollectionService;
@@ -15,8 +21,11 @@
 import org.slf4j.LoggerFactory;
 
 import javax.annotation.Resource;
-import java.util.List;
-import java.util.Map;
+import java.time.Duration;
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+import java.time.temporal.ChronoUnit;
+import java.util.*;
 import java.util.stream.Collectors;
 
 /**
@@ -34,6 +43,12 @@
 
     @Resource
     private OmProductionOrdeInfoServiceImpl omProductionOrdeInfoService;
+
+    @Resource
+    private IBsBeatSettingService bsBeatSettingService;
+
+    @Resource
+    private ProductNumTableService productNumTableService;
 
 
     private static final Logger logger = LoggerFactory.getLogger("sys-user");
@@ -87,6 +102,7 @@
     public void workReportingTasks(){
         report10();
         report20();
+        updateProductNum();
     }
 
     public void report10(){
@@ -171,6 +187,196 @@
         }
     }
 
+    public void updateProductNum(){
+        LocalDate now = LocalDate.now();
+        ProductNumTable productNumTableQuery = new ProductNumTable();
+        productNumTableQuery.setProductTime(now);
+        //宸插瓨鍦ㄧ殑缁熻鏁版嵁
+        List<ProductNumTable> productNumTableList = productNumTableService.selectProductList(productNumTableQuery);
+        String actModel;
+        //鑾峰彇褰撳ぉ鎵�鏈夌敓浜ф暟鎹�
+        List<BsOrderScheduling> bsOrderSchedulingList = bsOrderSchedulingService.selectBsOrderSchedulingListForNum();
+        if (CollUtil.isNotEmpty(bsOrderSchedulingList)){
+            List<BsOrderScheduling> tempList = bsOrderSchedulingList.stream()
+                    .filter(x -> ObjectUtil.isNotNull(x.getFinalAssemblyOfflineTime()))
+                    .collect(Collectors.toList());
+            List<BsOrderScheduling> collect2 = tempList.stream()
+                    .sorted(Comparator.comparing(BsOrderScheduling::getFinalAssemblyOfflineTime).reversed())
+                    .collect(Collectors.toList());
+            if (CollUtil.isNotEmpty(collect2)){
+                BsOrderScheduling bsOrderScheduling = collect2.get(0);
+                actModel = bsOrderScheduling.getModel();
+            } else {
+                actModel = null;
+            }
+            List<String> modelList = tempList.stream().map(BsOrderScheduling::getModel).distinct().collect(Collectors.toList());
+            Integer modelNum = 0;
+            if (CollUtil.isNotEmpty(modelList)){
+                modelNum = modelList.size();
+            }
+            Integer productNumTheory = caculateProductNumTheory(actModel, now, modelNum);
+            List<ProductNumTable> saveDate = new ArrayList<>();
+            Map<String, List<BsOrderScheduling>> collect = bsOrderSchedulingList.stream().collect(Collectors.groupingBy(BsOrderScheduling::getModel));
+            for (String s : collect.keySet()) {
+
+                List<BsOrderScheduling> bsOrderSchedulingList1 = collect.get(s);
+                //鍚堢涓婄嚎
+                long count1 = bsOrderSchedulingList1.stream().filter(x -> ObjectUtil.isNotNull(x.getBoxClosingOnlineTime())).count();
+                //鎬昏涓婄嚎
+                long count2 = bsOrderSchedulingList1.stream().filter(x -> ObjectUtil.isNotNull(x.getFinalAssemblyLaunchTime())).count();
+                //鎬昏涓嬬嚎
+                long count3 = bsOrderSchedulingList1.stream().filter(x -> ObjectUtil.isNotNull(x.getFinalAssemblyOfflineTime())).count();
+                //妫�鏌ュ垽鏂槸鏇存柊杩樻槸鎻掑叆
+                List<ProductNumTable> collect1 = productNumTableList.stream().filter(x -> s.equals(x.getModel())).collect(Collectors.toList());
+                if (CollUtil.isEmpty(collect1)){
+                    //鎻掑叆
+                    ProductNumTable productNumTable = new ProductNumTable();
+                    UUID uuid = UUID.randomUUID();
+                    productNumTable.setId(uuid.getMostSignificantBits());
+                    productNumTable.setModel(s);
+                    productNumTable.setHxOnlineNum((int) count1);
+                    productNumTable.setZzOnlineNum((int) count2);
+                    productNumTable.setZzOfflineNum((int) count3);
+                    productNumTable.setProductTime(now);
+                    productNumTable.setProductNumTheory(productNumTheory);
+                    saveDate.add(productNumTable);
+                } else {
+                    //鏇存柊
+                    //鍒ゆ柇鏄惁闇�瑕佹洿鏂�
+                    ProductNumTable productNumTable = collect1.get(0);
+                    Integer hxOnlineNum = productNumTable.getHxOnlineNum();
+                    Integer zzOnlineNum = productNumTable.getZzOnlineNum();
+                    Integer zzOfflineNum = productNumTable.getZzOfflineNum();
+                    if (!hxOnlineNum.equals((int)count1) || !zzOnlineNum.equals((int) count2) || !zzOfflineNum.equals((int)count3)){
+                        //鏇存柊
+                        productNumTable.setHxOnlineNum((int) count1);
+                        productNumTable.setZzOnlineNum((int) count2);
+                        productNumTable.setZzOfflineNum((int) count3);
+                        productNumTable.setProductNumTheory(productNumTheory);
+                        productNumTableService.updateProductNum(productNumTable);
+                    }
+                }
+            }
+            if (CollUtil.isNotEmpty(saveDate)){
+                productNumTableService.insertProductList(saveDate);
+            }
+        }
+
+
+
+    }
+
+    private Integer caculateProductNumTheory(String actModel, LocalDate now,Integer modelNum) {
+        long l = System.currentTimeMillis();
+        System.out.println("寮�濮嬶細----"+l);
+        //璁$畻鎬讳骇閲忔暟鎹�
+        String beat = "";
+        List<BsBeatSetting> bsBeatSettings = bsBeatSettingService.selectBsBeatSettingList(new BsBeatSetting());
+        if (ObjectUtil.isNotNull(actModel)){
+            List<BsBeatSetting> collect = bsBeatSettings.stream().filter(x -> actModel.contains(x.getProductCode())).collect(Collectors.toList());
+            if (CollUtil.isNotEmpty(collect)){
+                BsBeatSetting bsBeatSetting = collect.get(0);
+                beat = bsBeatSetting.getBeat();
+            }
+        }
+
+        LocalDateTime nowTime = LocalDateTime.now();
+        long workTime = 0;
+        LocalDateTime time1 = now.atTime(0, 0, 0);
+        LocalDateTime time_rest = now.atTime(0, 30, 0);
+        LocalDateTime time2 = now.atTime(3, 0, 0);
+        LocalDateTime time3 = now.atTime(3, 10, 0);
+        LocalDateTime time4 = now.atTime(5, 0, 0);
+        LocalDateTime time5 = now.atTime(5, 10, 0);
+        LocalDateTime time6 = now.atTime(7, 0, 0);
+        LocalDateTime time7 = now.atTime(8, 0, 0);
+        LocalDateTime time8 = now.atTime(10, 0, 0);
+        LocalDateTime time9 = now.atTime(10, 10, 0);
+        LocalDateTime time10 = now.atTime(11, 10, 0);
+        LocalDateTime time11 = now.atTime(12, 10, 0);
+        LocalDateTime time12 = now.atTime(15, 0, 0);
+        LocalDateTime time13 = now.atTime(15, 10, 0);
+        LocalDateTime time14 = now.atTime(20, 0, 0);
+        LocalDateTime time15 = now.atTime(20, 10, 0);
+        LocalDateTime time16 = now.atTime(22, 0, 0);
+        LocalDateTime time17 = now.atTime(22, 10, 0);
+        LocalDateTime time18 = now.atTime(23, 59, 59);
+        if (nowTime.isBefore(time_rest)){
+            //0-0.30
+            workTime = 0;
+        } else if (nowTime.isBefore(time2)){
+            //0-3
+            workTime = ChronoUnit.SECONDS.between(time1,nowTime)  - 1800;
+        } else if (nowTime.isBefore(time3)){
+            //0-3.10
+            workTime = ChronoUnit.SECONDS.between(time1,time2)  - 1800;
+        } else if (nowTime.isBefore(time4)){
+            //0-5
+            workTime = ChronoUnit.SECONDS.between(time1,nowTime)  - 2400;
+        } else if (nowTime.isBefore(time5)){
+            //0-5.10
+            workTime = ChronoUnit.SECONDS.between(time1,time4)  - 2400;
+        } else if (nowTime.isBefore(time6)){
+            //0-7
+            workTime = ChronoUnit.SECONDS.between(time1,nowTime)  - 3000;
+        } else if (nowTime.isBefore(time7)){
+            //0-8
+            workTime = ChronoUnit.SECONDS.between(time1,time6)  - 3000;
+        } else if (nowTime.isBefore(time8)){
+            //0-10
+            workTime = ChronoUnit.SECONDS.between(time1,nowTime)  - 6600;
+        } else if (nowTime.isBefore(time9)){
+            //0-10.10
+            workTime = ChronoUnit.SECONDS.between(time1,time8)  - 6600;
+        } else if (nowTime.isBefore(time10)){
+            //0-11.10
+            workTime = ChronoUnit.SECONDS.between(time1,nowTime)  - 7200;
+        } else if (nowTime.isBefore(time11)){
+            //0-12.10
+            workTime = ChronoUnit.SECONDS.between(time1,time10)  - 7200;
+        }  else if (nowTime.isBefore(time12)){
+            //0-15
+            workTime = ChronoUnit.SECONDS.between(time1,nowTime)  - 7200 - 3600;
+        } else if (nowTime.isBefore(time13)){
+            //0-15.10
+            workTime = ChronoUnit.SECONDS.between(time1,time12)  - 7200 - 3600;
+        } else if (nowTime.isBefore(time14)){
+            //0-20
+            workTime = ChronoUnit.SECONDS.between(time1,nowTime)  - 7200 - 3600 - 600;
+        } else if (nowTime.isBefore(time15)){
+            //0-20.10
+            workTime = ChronoUnit.SECONDS.between(time1,time14)  - 7200 - 3600 - 600;
+        } else if (nowTime.isBefore(time16)){
+            //0-22
+            workTime = ChronoUnit.SECONDS.between(time1,nowTime)  - 7200 - 3600 - 600 - 600;
+        } else if (nowTime.isBefore(time17)){
+            //0-22.10
+            workTime = ChronoUnit.SECONDS.between(time1,time16)  - 7200 - 3600 - 600 - 600;
+        } else if (nowTime.isBefore(time18)){
+            //0-24
+            workTime = ChronoUnit.SECONDS.between(time1,nowTime)  - 7200 - 3600 - 600 - 600 - 600;
+        }
+        if (modelNum > 1){
+            workTime = workTime - 1800L *(modelNum-1);
+            if (workTime <0){
+                workTime = 0;
+            }
+        }
+        System.out.println(workTime+"---------");
+        long l2 = System.currentTimeMillis();
+        System.out.println("缁撴潫锛�----"+l2);
+        long l1 = l2 - l;
+        System.out.println("鑰楄垂鏃堕棿锛�----"+l1);
+        //鐞嗚浜ч噺
+        Integer productNumTheory = 0;
+        if (StrUtil.isNotBlank(beat)){
+            int i = Integer.parseInt(beat);
+            Integer workTimeInt = (int) workTime;
+            productNumTheory = Math.floorDiv(workTimeInt, i);
+        }
+        return productNumTheory;
+    }
+
     public static String getProductionPlanInformationXml(String orderNo,String location){
         String content = "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:urn=\"urn:sap-com:document:sap:rfc:functions\">\n" +
                 "   <soapenv:Header/>\n" +
diff --git a/jcdm-ui/src/api/main/da/paramCollection/paramCollection.js b/jcdm-ui/src/api/main/da/paramCollection/paramCollection.js
index 2983328..cd48024 100644
--- a/jcdm-ui/src/api/main/da/paramCollection/paramCollection.js
+++ b/jcdm-ui/src/api/main/da/paramCollection/paramCollection.js
@@ -9,6 +9,14 @@
   })
 }
 
+export function queryDaParamCollectionListForSearch(query) {
+  return request({
+    url: '/main/paramCollection/queryDaParamCollectionListForSearch',
+    method: 'get',
+    params: query
+  })
+}
+
 // 鏌ヨ璁惧浜у搧杩囩▼鍙傛暟閲囬泦璇︾粏
 export function getParamCollection(id) {
   return request({
diff --git a/jcdm-ui/src/api/main/da/passingStationCollection/passingStationCollection.js b/jcdm-ui/src/api/main/da/passingStationCollection/passingStationCollection.js
index 12110e3..4d50c5d 100644
--- a/jcdm-ui/src/api/main/da/passingStationCollection/passingStationCollection.js
+++ b/jcdm-ui/src/api/main/da/passingStationCollection/passingStationCollection.js
@@ -8,6 +8,14 @@
     params: query
   })
 }
+
+export function selectDaPassingStationCollectionForSearch(query) {
+  return request({
+    url: '/da/passingStationCollection/selectDaPassingStationCollectionForSearch',
+    method: 'get',
+    params: query
+  })
+}
 //鏌ヨ棣栭〉top浜旀暟鎹�
 export function getTopProcess() {
   return request({
@@ -75,3 +83,11 @@
     method: 'delete'
   })
 }
+
+export function getProductNum(query) {
+  return request({
+    url: '/da/passingStationCollection/getProductNum',
+    method: 'get',
+    params: query
+  })
+}
diff --git a/jcdm-ui/src/views/dashboard/PanelGroup.vue b/jcdm-ui/src/views/dashboard/PanelGroup.vue
index 04b2434..891748e 100644
--- a/jcdm-ui/src/views/dashboard/PanelGroup.vue
+++ b/jcdm-ui/src/views/dashboard/PanelGroup.vue
@@ -39,22 +39,22 @@
             <span class="nextLine">{{data4}}</span>
           </div>
         </div>
-        <div class="transition-box" style="background-color: green">
-          <i class="el-icon-upload2"></i>
-          <el-divider direction="vertical" content-position="left" style="height: 20px"></el-divider>
-          <div>
-            <span style="margin-left: 20px">CVT涓婄嚎</span>
-            <span class="nextLine">{{data5}}</span>
-          </div>
-        </div>
-        <div class="transition-box" style="background-color: darkslategray">
-          <i class="el-icon-finished"></i>
-          <el-divider direction="vertical" content-position="left" style="height: 20px"></el-divider>
-          <div>
-            <span style="margin-left: 20px">CVT涓嬬嚎</span>
-            <span class="nextLine">{{data6}}</span>
-          </div>
-        </div>
+<!--        <div class="transition-box" style="background-color: green">-->
+<!--          <i class="el-icon-upload2"></i>-->
+<!--          <el-divider direction="vertical" content-position="left" style="height: 20px"></el-divider>-->
+<!--          <div>-->
+<!--            <span style="margin-left: 20px">CVT涓婄嚎</span>-->
+<!--            <span class="nextLine">{{data5}}</span>-->
+<!--          </div>-->
+<!--        </div>-->
+<!--        <div class="transition-box" style="background-color: darkslategray">-->
+<!--          <i class="el-icon-finished"></i>-->
+<!--          <el-divider direction="vertical" content-position="left" style="height: 20px"></el-divider>-->
+<!--          <div>-->
+<!--            <span style="margin-left: 20px">CVT涓嬬嚎</span>-->
+<!--            <span class="nextLine">{{data6}}</span>-->
+<!--          </div>-->
+<!--        </div>-->
       </div>
 
 
diff --git a/jcdm-ui/src/views/main/bs/orderScheduling/index.vue b/jcdm-ui/src/views/main/bs/orderScheduling/index.vue
index d5e77dd..18712df 100644
--- a/jcdm-ui/src/views/main/bs/orderScheduling/index.vue
+++ b/jcdm-ui/src/views/main/bs/orderScheduling/index.vue
@@ -90,14 +90,6 @@
             />
           </el-select>
         </el-form-item>
-        <el-form-item label="CVT鎶ュ伐" prop="report30">
-          <el-input
-            v-model="queryParams.report30"
-            placeholder="璇疯緭鍏VT鎶ュ伐"
-            clearable
-            @keyup.enter.native="handleQuery"
-          />
-        </el-form-item>
         <br/>
         <el-form-item label="鎿嶄綔鏃堕棿" prop="operateTime">
           <el-date-picker
@@ -178,11 +170,11 @@
           <el-table-column label="鍙戝姩鏈哄彿" align="center" prop="engineNo" width="150">
 
           </el-table-column>
-          <el-table-column label="浜у搧绫诲瀷" align="center" prop="productType">
-            <template slot-scope="scope">
-              <dict-tag :options="dict.type.material_type" :value="scope.row.productType"/>
-            </template>
-          </el-table-column>
+<!--          <el-table-column label="浜у搧绫诲瀷" align="center" prop="productType">-->
+<!--            <template slot-scope="scope">-->
+<!--              <dict-tag :options="dict.type.material_type" :value="scope.row.productType"/>-->
+<!--            </template>-->
+<!--          </el-table-column>-->
           <el-table-column label="鏈哄瀷" align="center" prop="model">
 
           </el-table-column>
@@ -219,11 +211,6 @@
             </template>
           </el-table-column>
 
-          <el-table-column label="CVT鎶ュ伐" align="center" prop="report30">
-          </el-table-column>
-
-          <el-table-column label="鎶ュ伐寮傚父" align="center" prop="report30">
-          </el-table-column>
 
           <el-table-column label="鍚堢涓婄嚎鏃堕棿" align="center" prop="boxClosingOnlineTime" width="160">
             <template slot-scope="scope">
@@ -243,16 +230,6 @@
           <el-table-column label="鎬昏涓嬬嚎鏃堕棿" align="center" prop="finalAssemblyOfflineTime" width="160">
             <template slot-scope="scope">
               <span>{{ parseTime(scope.row.finalAssemblyOfflineTime, '{y}-{m}-{d} {h}:{i}:{s}') }}</span>
-            </template>
-          </el-table-column>
-          <el-table-column label="CVT涓婄嚎鏃堕棿" align="center" prop="cvtLaunchTime" width="160">
-            <template slot-scope="scope">
-              <span>{{ parseTime(scope.row.cvtLaunchTime, '{y}-{m}-{d} {h}:{i}:{s}') }}</span>
-            </template>
-          </el-table-column>
-          <el-table-column label="CVT涓嬬嚎鏃堕棿" align="center" prop="cvtOfflineTime" width="160">
-            <template slot-scope="scope">
-              <span>{{ parseTime(scope.row.cvtOfflineTime, '{y}-{m}-{d} {h}:{i}:{s}') }}</span>
             </template>
           </el-table-column>
           <el-table-column label="鎿嶄綔浜�" align="center" prop="operator">
@@ -287,11 +264,11 @@
         <el-form-item label="鍙戝姩鏈哄彿" prop="engineNo">
           <el-input v-model="form.engineNo" placeholder="璇疯緭鍏ュ彂鍔ㄦ満鍙�" />
         </el-form-item>
-        <el-form-item label="浜у搧绫诲瀷" prop="productType">
-          <el-select v-model="form.productType" placeholder="璇烽�夋嫨浜у搧绫诲瀷">
+<!--        <el-form-item label="浜у搧绫诲瀷" prop="productType">-->
+<!--          <el-select v-model="form.productType" placeholder="璇烽�夋嫨浜у搧绫诲瀷">-->
 
-          </el-select>
-        </el-form-item>
+<!--          </el-select>-->
+<!--        </el-form-item>-->
         <el-form-item label="鏈哄瀷" prop="model">
           <el-input v-model="form.model" placeholder="璇疯緭鍏ユ満鍨�" />
         </el-form-item>
@@ -304,25 +281,44 @@
         </el-form-item>
 
         <el-form-item label="鏄惁鎵撳嵃" prop="whetherOrPrint">
-          <el-input v-model="form.whetherOrPrint" placeholder="璇疯緭鍏ユ槸鍚︽墦鍗�" >
-            <template></template>
-          </el-input>
+          <el-select style="width: 93%" v-model="form.whetherOrPrint" placeholder="璇烽�夋嫨鏄惁鎵撳嵃">
+            <el-option
+              v-for="item in printOptions"
+              :key="item.value"
+              :label="item.label"
+              :value="item.value">
+            </el-option>
+          </el-select>
         </el-form-item>
 
         <el-form-item label="鍚堢鎶ュ伐" prop="report10">
-          <el-input v-model="form.report10" placeholder="璇疯緭鍏ュ悎绠辨姤宸�" />
+          <el-select style="width: 93%" v-model="form.report10" placeholder="璇烽�夋嫨鍚堢鎶ュ伐">
+            <el-option
+              v-for="item in reportOptions"
+              :key="item.value"
+              :label="item.label"
+              :value="item.value">
+            </el-option>
+          </el-select>
         </el-form-item>
         <el-form-item label="鎬昏鎶ュ伐" prop="report20">
-          <el-input v-model="form.report20" placeholder="璇疯緭鍏ユ�昏鎶ュ伐" />
+          <el-select style="width: 93%" v-model="form.report20" placeholder="璇烽�夋嫨鎬昏鎶ュ伐">
+            <el-option
+              v-for="item in reportOptions"
+              :key="item.value"
+              :label="item.label"
+              :value="item.value">
+            </el-option>
+          </el-select>
         </el-form-item>
-        <el-form-item label="30鎶ュ伐" prop="report20">
-          <el-input v-model="form.report30" placeholder="璇疯緭鍏�30鎶ュ伐" />
-        </el-form-item>
+<!--        <el-form-item label="30鎶ュ伐" prop="report20">-->
+<!--          <el-input v-model="form.report30" placeholder="璇疯緭鍏�30鎶ュ伐" />-->
+<!--        </el-form-item>-->
         <el-form-item label="鎿嶄綔浜�" prop="operator">
           <el-input v-model="form.operator" placeholder="璇疯緭鍏ユ搷浣滀汉" />
         </el-form-item>
         <el-form-item label="鐘舵��" prop="status">
-          <el-select v-model="form.status" placeholder="璇烽�夋嫨">
+          <el-select v-model="form.productionStatus" placeholder="璇烽�夋嫨">
             <el-option
               v-for="item in statusOptions"
               :key="item.value"
@@ -349,6 +345,30 @@
   dicts: ['order_scheduling_produce_status','quality_status','print_status','material_type','workreportingstatus'],
   data() {
     return {
+      printOptions: [
+        {
+          label:'鏄�',
+          value: "1"
+        },
+        {
+          label:'鍚�',
+          value: "0"
+        },
+      ],
+      reportOptions: [
+        {
+          label:'宸叉姤宸�',
+          value: "1"
+        },
+        {
+          label:'鎶ュ伐寮傚父',
+          value: "3"
+        },
+        {
+          label:'寰呮姤宸�',
+          value: "0"
+        },
+      ],
       // 閬僵灞�
       loading: true,
       titleName: "",
diff --git a/jcdm-ui/src/views/main/da/followReport/index.vue b/jcdm-ui/src/views/main/da/followReport/index.vue
index 0ff3286..34fd7cc 100644
--- a/jcdm-ui/src/views/main/da/followReport/index.vue
+++ b/jcdm-ui/src/views/main/da/followReport/index.vue
@@ -59,9 +59,9 @@
 <!--            <el-table-column label="宸ユ椂" align="center" prop="workingHours">-->
 
 <!--            </el-table-column>-->
-            <el-table-column label="宸ヤ綅缂栧彿" align="center" prop="currentWorkstation">
+<!--            <el-table-column label="宸ヤ綅缂栧彿" align="center" prop="currentWorkstation">-->
 
-            </el-table-column>
+<!--            </el-table-column>-->
             <el-table-column label="璐ㄩ噺鐘舵��" align="center" prop="qualityStatus">
               <template slot-scope="scope">
                 <dict-tag :options="dict.type.quality_status" :value="scope.row.qualityStatus"/>
@@ -75,10 +75,10 @@
             </el-table-column>
             <el-table-column label="鎬昏涓嬬嚎鏃堕棿" align="center" prop="finalAssemblyOfflineTime" width="160">
             </el-table-column>
-            <el-table-column label="CVT涓婄嚎鏃堕棿" align="center" prop="cvtLaunchTime" width="160">
-            </el-table-column>
-            <el-table-column label="CVT涓嬬嚎鏃堕棿" align="center" prop="cvtOfflineTime" width="160">
-            </el-table-column>
+<!--            <el-table-column label="CVT涓婄嚎鏃堕棿" align="center" prop="cvtLaunchTime" width="160">-->
+<!--            </el-table-column>-->
+<!--            <el-table-column label="CVT涓嬬嚎鏃堕棿" align="center" prop="cvtOfflineTime" width="160">-->
+<!--            </el-table-column>-->
             <el-table-column label="鎿嶄綔浜�" align="center" prop="operator">
 
             </el-table-column>
@@ -103,10 +103,10 @@
           <span slot="label"><i class="el-icon-date"></i>鎷х揣鏁版嵁</span>
           <report1 :list1 = this.list1></report1>
         </el-tab-pane>
-        <el-tab-pane>
-          <span slot="label"><i class="el-icon-date"></i>鐩告満妫�娴�</span>
-          <report2 :list2 = this.list2></report2>
-        </el-tab-pane>
+<!--        <el-tab-pane>-->
+<!--          <span slot="label"><i class="el-icon-date"></i>鐩告満妫�娴�</span>-->
+<!--          <report2 :list2 = this.list2></report2>-->
+<!--        </el-tab-pane>-->
         <el-tab-pane>
           <span slot="label"><i class="el-icon-date"></i>澶栨紡妫�娴�</span>
           <report3 :list3 = this.list3></report3>
diff --git a/jcdm-ui/src/views/main/da/followReport/report1.vue b/jcdm-ui/src/views/main/da/followReport/report1.vue
index af786e8..9d7e1d8 100644
--- a/jcdm-ui/src/views/main/da/followReport/report1.vue
+++ b/jcdm-ui/src/views/main/da/followReport/report1.vue
@@ -53,9 +53,9 @@
     <el-table-column
       prop="address"
       align="center"
-      label="鏃堕棿"
+      label="閲囬泦鏃堕棿"
       show-overflow-tooltip>
-      <template slot-scope="scope">{{ scope.row.createTime }}</template>
+      <template slot-scope="scope">{{ scope.row.collectionTime }}</template>
     </el-table-column>
   </el-table>
 </template>
diff --git a/jcdm-ui/src/views/main/da/followReport/report2.vue b/jcdm-ui/src/views/main/da/followReport/report2.vue
index 9115ba3..e9e042b 100644
--- a/jcdm-ui/src/views/main/da/followReport/report2.vue
+++ b/jcdm-ui/src/views/main/da/followReport/report2.vue
@@ -53,9 +53,9 @@
     <el-table-column
       prop="address"
       align="center"
-      label="鏃堕棿"
+      label="閲囬泦鏃堕棿"
       show-overflow-tooltip>
-      <template slot-scope="scope">{{ scope.row.createTime }}</template>
+      <template slot-scope="scope">{{ scope.row.collectionTime }}</template>
     </el-table-column>
   </el-table>
 </template>
diff --git a/jcdm-ui/src/views/main/da/followReport/report3.vue b/jcdm-ui/src/views/main/da/followReport/report3.vue
index d19be27..087ed01 100644
--- a/jcdm-ui/src/views/main/da/followReport/report3.vue
+++ b/jcdm-ui/src/views/main/da/followReport/report3.vue
@@ -53,9 +53,9 @@
     <el-table-column
       prop="address"
       align="center"
-      label="鏃堕棿"
+      label="閲囬泦鏃堕棿"
       show-overflow-tooltip>
-      <template slot-scope="scope">{{ scope.row.createTime }}</template>
+      <template slot-scope="scope">{{ scope.row.collectionTime }}</template>
     </el-table-column>
   </el-table>
 </template>
diff --git a/jcdm-ui/src/views/main/da/followReport/report4.vue b/jcdm-ui/src/views/main/da/followReport/report4.vue
index cfa9ee1..6e5ecbb 100644
--- a/jcdm-ui/src/views/main/da/followReport/report4.vue
+++ b/jcdm-ui/src/views/main/da/followReport/report4.vue
@@ -52,10 +52,10 @@
     </el-table-column>
     <el-table-column
       prop="address"
-      label="鏃堕棿"
+      label="閲囬泦鏃堕棿"
       align="center"
       show-overflow-tooltip>
-      <template slot-scope="scope">{{ scope.row.createTime }}</template>
+      <template slot-scope="scope">{{ scope.row.collectionTime }}</template>
     </el-table-column>
   </el-table>
 </template>
diff --git a/jcdm-ui/src/views/main/da/followReport/report5.vue b/jcdm-ui/src/views/main/da/followReport/report5.vue
index 5926886..98742bd 100644
--- a/jcdm-ui/src/views/main/da/followReport/report5.vue
+++ b/jcdm-ui/src/views/main/da/followReport/report5.vue
@@ -35,8 +35,8 @@
 
     <el-table-column label="鏄惁鍚堟牸" align="center" prop="outRsSign">
     </el-table-column>
-    <el-table-column label="NG鍘熷洜" align="center" prop="outMsgSign">
-    </el-table-column>
+<!--    <el-table-column label="NG鍘熷洜" align="center" prop="outMsgSign">-->
+<!--    </el-table-column>-->
     <el-table-column label="閲囬泦鏃堕棿" align="center" prop="collectionTime" width="160">
       <template slot-scope="scope">
         <span>{{ parseTime(scope.row.collectionTime, '{y}-{m}-{d} {h}:{i}:{s}') }}</span>
diff --git a/jcdm-ui/src/views/main/da/paramCollection/index.vue b/jcdm-ui/src/views/main/da/paramCollection/index.vue
index 56daffe..ac72dbf 100644
--- a/jcdm-ui/src/views/main/da/paramCollection/index.vue
+++ b/jcdm-ui/src/views/main/da/paramCollection/index.vue
@@ -18,6 +18,19 @@
           @keyup.enter.native="handleQuery"
         />
       </el-form-item>
+      <el-form-item label="鏃ユ湡鑼冨洿" prop="dateConditions">
+        <el-date-picker
+          v-model="queryParams.dateConditions"
+          type="daterange"
+          align="right"
+          unlink-panels
+          range-separator="鑷�"
+          start-placeholder="寮�濮嬫棩鏈�"
+          end-placeholder="缁撴潫鏃ユ湡"
+          value-format="yyyy-MM-dd"
+          @change="handleDateChange">
+        </el-date-picker>
+      </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>
@@ -77,10 +90,10 @@
       <el-table-column label="鍙戝姩鏈虹紪鐮�" align="center" width="160" prop="sfcCode" ></el-table-column>
 <!--      <el-table-column label="浜у搧缂栧彿" align="center" prop="productCode"></el-table-column>-->
 <!--      <el-table-column label="浜х嚎缂栧彿" align="center" prop="productionLine"></el-table-column>-->
-      <el-table-column label="宸ヤ綅缂栧彿" align="center" prop="locationCode"></el-table-column>
 <!--      <el-table-column label="璁惧缂栧彿" align="center" prop="equipmentNo"></el-table-column>-->
-      <el-table-column label="鍙傛暟缂栫爜" align="center" prop="paramCode"></el-table-column>
+      <el-table-column label="鍙傛暟鍚嶇О" align="center" prop="paramName" width="150" ></el-table-column>
       <el-table-column label="鍙傛暟鍊�" align="center" prop="paramValue"></el-table-column>
+      <el-table-column label="宸ヤ綅缂栧彿" align="center" prop="locationCode"></el-table-column>
       <el-table-column label="鍙傛暟涓婇檺" align="center" prop="paramUpper"></el-table-column>
       <el-table-column label="鍙傛暟涓嬮檺" align="center" prop="paramLower"></el-table-column>
       <el-table-column label="閲囬泦鏃堕棿" align="center" prop="collectionTime" width="160">
@@ -89,7 +102,7 @@
         </template>
       </el-table-column>
       <el-table-column label="鐘舵��" align="center" prop="state"></el-table-column>
-      <el-table-column label="鍙傛暟鍚嶇О" align="center" prop="paramName" width="150" ></el-table-column>
+      <el-table-column label="鍙傛暟缂栫爜" align="center" prop="paramCode"></el-table-column>
       <el-table-column label="鍗曚綅" align="center" prop="unit"></el-table-column>
       <el-table-column label="绫诲瀷" align="center" prop="type"></el-table-column>
       <el-table-column fixed="right" width="200" label="鎿嶄綔" align="center" class-name="small-padding fixed-width" >
@@ -188,11 +201,13 @@
 
 <script>
 import { listParamCollection, getParamCollection, delParamCollection, addParamCollection, updateParamCollection } from "@/api/main/da/paramCollection/paramCollection";
+import {queryDaParamCollectionListForSearch} from "../../../../api/main/da/paramCollection/paramCollection";
 
 export default {
   name: "ParamCollection",
   data() {
     return {
+      maxDate: '',
       // 閬僵灞�
       loading: true,
       // 閫変腑鏁扮粍
@@ -213,6 +228,7 @@
       open: false,
       // 鏌ヨ鍙傛暟
       queryParams: {
+        dateConditions: [],
         pageNum: 1,
         pageSize: 10,
         workOrderNo: null,
@@ -258,16 +274,33 @@
     // this.getList();
   },
   methods: {
+    handleDateChange(value) {
+      if (value && value.length === 2) {
+        const startDate = value[0];
+        const endDate = value[1];
+        const dayCount = this.daysBetween(startDate, endDate);
+        if (dayCount + 1 > 7) {
+          this.$message.error('璇烽�夋嫨杩炵画鐨�7澶╋紒');
+          this.queryParams.dateConditions = []; // 閲嶇疆鏃ユ湡鑼冨洿
+        }
+      }
+    },
+    daysBetween(startDate, endDate) {
+      const oneDay = 24 * 60 * 60 * 1000; // 姣忓ぉ鐨勬绉掓暟
+      const startTime = new Date(startDate).getTime();
+      const endTime = new Date(endDate).getTime();
+      return Math.round(Math.abs((startTime - endTime) / oneDay));
+    },
     /** 鏌ヨ璁惧浜у搧杩囩▼鍙傛暟閲囬泦鍒楄〃 */
     getList() {
       this.loading = true;
-      if (this.queryParams.sfcCode == null || this.queryParams.sfcCode == ''){
+      if ((this.queryParams.sfcCode == null || this.queryParams.sfcCode === '') && this.queryParams.dateConditions.length === 0){
         this.$message({
-          message: '璇疯緭鍏ュ彂鍔ㄦ満鍙风爜',
+          message: '璇疯緭鍏ュ彂鍔ㄦ満鍙风爜鎴栬�呴�夋嫨鏌ヨ鏃ユ湡',
           type: 'info'
         });
       } else {
-        listParamCollection(this.queryParams).then(response => {
+        queryDaParamCollectionListForSearch(this.queryParams).then(response => {
           this.paramCollectionList = response.rows;
           this.total = response.total;
           this.loading = false;
diff --git a/jcdm-ui/src/views/main/da/passingStationCollection/index.vue b/jcdm-ui/src/views/main/da/passingStationCollection/index.vue
index 693da8f..aa2c646 100644
--- a/jcdm-ui/src/views/main/da/passingStationCollection/index.vue
+++ b/jcdm-ui/src/views/main/da/passingStationCollection/index.vue
@@ -76,14 +76,14 @@
 
     <el-table v-loading="loading" border :data="passingStationCollectionList" @selection-change="handleSelectionChange" v-if="passingStationCollectionList.length > 0">
       <el-table-column type="selection" width="55" align="center" />
-      <el-table-column label="宸ュ崟缂栧彿" align="center" prop="workOrderNo">
+      <el-table-column label="宸ュ崟缂栧彿" align="center" width="150" prop="workOrderNo">
       </el-table-column>
       <el-table-column label="鍙戝姩鏈虹紪鐮�" align="center" prop="sfcCode" width="150">
       </el-table-column>
       <el-table-column label="浜у搧缂栧彿" align="center" prop="productCode">
       </el-table-column>
-      <el-table-column label="浜х嚎缂栧彿" align="center" prop="productionLine">
-      </el-table-column>
+<!--      <el-table-column label="浜х嚎缂栧彿" align="center" prop="productionLine">-->
+<!--      </el-table-column>-->
       <el-table-column label="宸ヤ綅缂栧彿" align="center" prop="locationCode">
       </el-table-column>
       <el-table-column label="鍏ョ珯鏃堕棿" align="center" prop="inboundTime" width="160">
@@ -99,8 +99,8 @@
 
       <el-table-column label="鏄惁鍚堟牸" align="center" prop="outRsSign">
       </el-table-column>
-      <el-table-column label="NG鍘熷洜" align="center" prop="outMsgSign">
-      </el-table-column>
+<!--      <el-table-column label="NG鍘熷洜" align="center" prop="outMsgSign">-->
+<!--      </el-table-column>-->
       <el-table-column label="閲囬泦鏃堕棿" align="center" prop="collectionTime" width="180">
         <template slot-scope="scope">
           <span>{{ parseTime(scope.row.collectionTime, '{y}-{m}-{d} {h}:{i}:{s}') }}</span>
@@ -156,15 +156,15 @@
         <el-form-item label="浜у搧缂栧彿" prop="productCode">
           <el-input v-model="form.productCode" type="textarea" placeholder="璇疯緭鍏ュ唴瀹�" />
         </el-form-item>
-        <el-form-item label="浜х嚎缂栧彿" prop="productionLine">
-          <el-input v-model="form.productionLine" type="textarea" placeholder="璇疯緭鍏ュ唴瀹�" />
-        </el-form-item>
+<!--        <el-form-item label="浜х嚎缂栧彿" prop="productionLine">-->
+<!--          <el-input v-model="form.productionLine" type="textarea" placeholder="璇疯緭鍏ュ唴瀹�" />-->
+<!--        </el-form-item>-->
         <el-form-item label="宸ヤ綅缂栧彿" prop="locationCode">
           <el-input v-model="form.locationCode" type="textarea" placeholder="璇疯緭鍏ュ唴瀹�" />
         </el-form-item>
-        <el-form-item label="璁惧缂栧彿" prop="equipmentNo">
-          <el-input v-model="form.equipmentNo" type="textarea" placeholder="璇疯緭鍏ュ唴瀹�" />
-        </el-form-item>
+<!--        <el-form-item label="璁惧缂栧彿" prop="equipmentNo">-->
+<!--          <el-input v-model="form.equipmentNo" type="textarea" placeholder="璇疯緭鍏ュ唴瀹�" />-->
+<!--        </el-form-item>-->
         <el-form-item label="鍏ョ珯鏃堕棿" prop="inboundTime">
           <el-date-picker clearable
             v-model="form.inboundTime"
@@ -184,9 +184,9 @@
         <el-form-item label="鏄惁鍚堟牸" prop="outRsSign">
           <el-input v-model="form.outRsSign" placeholder="璇疯緭鍏ュ嚭绔欐槸鍚﹀悎鏍�" />
         </el-form-item>
-        <el-form-item label="NG鍘熷洜" prop="outMsgSign">
-          <el-input v-model="form.outMsgSign" type="textarea" placeholder="璇疯緭鍏ュ唴瀹�" />
-        </el-form-item>
+<!--        <el-form-item label="NG鍘熷洜" prop="outMsgSign">-->
+<!--          <el-input v-model="form.outMsgSign" type="textarea" placeholder="璇疯緭鍏ュ唴瀹�" />-->
+<!--        </el-form-item>-->
         <el-form-item label="閲囬泦鏃堕棿" prop="collectionTime">
           <el-date-picker clearable
             v-model="form.collectionTime"
@@ -209,6 +209,9 @@
 
 <script>
 import { listPassingStationCollection, getPassingStationCollection, delPassingStationCollection, addPassingStationCollection, updatePassingStationCollection } from "@/api/main/da/passingStationCollection/passingStationCollection";
+import {
+  selectDaPassingStationCollectionForSearch
+} from "../../../../api/main/da/passingStationCollection/passingStationCollection";
 
 export default {
   name: "PassingStationCollection",
@@ -262,7 +265,7 @@
     /** 鏌ヨ浜у搧杩囩珯閲囬泦鍒楄〃 */
     getList() {
       this.loading = true;
-      listPassingStationCollection(this.queryParams).then(response => {
+      selectDaPassingStationCollectionForSearch(this.queryParams).then(response => {
         this.passingStationCollectionList = response.rows;
         this.total = response.total;
         this.loading = false;
diff --git a/jcdm-ui/src/views/main/da/productNum/index.vue b/jcdm-ui/src/views/main/da/productNum/index.vue
new file mode 100644
index 0000000..5161739
--- /dev/null
+++ b/jcdm-ui/src/views/main/da/productNum/index.vue
@@ -0,0 +1,154 @@
+<template>
+  <div class="app-container">
+    <el-card class="box-card">
+      <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="100px">
+        <el-form-item label="鎸夋湀浠界粺璁�" prop="queryMonth">
+          <el-date-picker
+            v-model="queryParams.queryMonth"
+            type="month"
+            @change = changeMonth
+            value-format="yyyy-MM"
+            placeholder="閫夋嫨鏈堜唤">
+          </el-date-picker>
+        </el-form-item>
+        <el-form-item label="鎸夋棩鏈熺粺璁�" prop="queryDate">
+          <el-date-picker
+            v-model="queryParams.queryDate"
+            type="date"
+            @change = changeDate
+            value-format="yyyy-MM-dd"
+            placeholder="閫夋嫨鏃ユ湡">
+          </el-date-picker>
+        </el-form-item>
+        <el-form-item>
+          <el-button type="primary" icon="el-icon-download" style="background-color: #6dbf6d;" @click="exportReport">瀵煎嚭鎶ヨ〃</el-button>
+        </el-form-item>
+      </el-form>
+
+      <el-table v-loading="loading" border :data="productNumList" v-if="productNumList.length > 0">
+        <el-table-column label="鏈哄瀷" align="center" prop="model">
+        </el-table-column>
+        <el-table-column label="浜ч噺" align="center" prop="num" width="150">
+        </el-table-column>
+      </el-table>
+      <el-empty v-else>
+        <span slot="description">鏆傛棤鏁版嵁</span>
+      </el-empty>
+    </el-card>
+  </div>
+</template>
+
+<script>
+import {
+  getProductNum
+} from "../../../../api/main/da/passingStationCollection/passingStationCollection";
+
+export default {
+  name: "productNum",
+  data() {
+    return {
+      // 閬僵灞�
+      loading: true,
+      queryParams: {
+        queryDate: '',
+        queryMonth: '',
+        pageNum: 1,
+        pageSize: 10,
+      },
+      // 琛ㄥ崟鍙傛暟
+      form: {},
+      showSearch: true,
+      productNumList: [],
+      // 鎬绘潯鏁�
+      total: 0,
+    };
+  },
+  created() {
+    const date = new Date();
+    const year = date.getFullYear();
+    let month = date.getMonth() + 1;
+    let day = date.getDate();
+    month = (month > 9) ? month : ("0" + month);
+    day = (day < 10) ? ("0" + day) : day;
+    this.queryParams.queryDate = year + "-" + month + "-" + day;
+    this.queryParams.queryMonth = year + "-" + month;
+    this.getList();
+  },
+  methods: {
+    //瀵煎嚭
+    exportReport(){
+      this.download('bs/beatSetting/productNumExport', {
+        ...this.queryParams
+      }, `浜ч噺鎶ヨ〃_${new Date().getTime()}.xlsx`)
+
+    },
+    /** 鏌ヨ浜у搧杩囩珯閲囬泦鍒楄〃 */
+    getList: function () {
+      this.loading = true;
+      getProductNum(this.queryParams).then(response => {
+        console.log('res', response)
+        this.productNumList = response.data;
+        this.loading = false;
+      });
+    },
+    changeMonth (){
+      this.queryParams.queryDate = ''
+      this.getList()
+    },
+    changeDate(){
+      console.log('000000')
+      if (this.queryParams.queryDate !== null && this.queryParams.queryDate !==''){
+        let split = this.queryParams.queryDate.split('-');
+        this.queryParams.queryMonth = split[0]+"-"+split[1]
+      }
+      this.getList()
+    },
+    // 鍙栨秷鎸夐挳
+    cancel() {
+      this.open = false;
+      this.reset();
+    },
+    // 琛ㄥ崟閲嶇疆
+    reset() {
+      this.form = {
+        id: null,
+        workOrderNo: null,
+        sfcCode: null,
+        productCode: null,
+        productionLine: null,
+        locationCode: null,
+        equipmentNo: null,
+        inboundTime: null,
+        outboundTime: null,
+        inRsSign: null,
+        inMsgSign: null,
+        outRsSign: null,
+        outMsgSign: null,
+        collectionTime: null,
+        spareField1: null,
+        spareField2: null,
+        createUser: null,
+        createTime: null,
+        updateUser: null,
+        updateTime: null,
+        beatTime: null
+      };
+      this.resetForm("form");
+    },
+    /** 鎼滅储鎸夐挳鎿嶄綔 */
+    handleQuery() {
+      this.queryParams.pageNum = 1;
+      this.getList();
+    },
+    /** 閲嶇疆鎸夐挳鎿嶄綔 */
+    resetQuery() {
+      this.resetForm("queryForm");
+      this.handleQuery();
+    },
+  }
+};
+</script>
+
+<style scoped>
+
+</style>
diff --git a/jcdm-ui/src/views/main/om/productionOrde/index.vue b/jcdm-ui/src/views/main/om/productionOrde/index.vue
index 4551649..ce44092 100644
--- a/jcdm-ui/src/views/main/om/productionOrde/index.vue
+++ b/jcdm-ui/src/views/main/om/productionOrde/index.vue
@@ -59,6 +59,16 @@
     <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="['om:productionOrde:add']"
+        >鏂板</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
           type="success"
           plain
           icon="el-icon-edit"
@@ -179,21 +189,24 @@
         <i class="el-icon-s-order"></i>
         {{titleName}}
       </span>
-      <el-form ref="form" inline :model="form" :rules="rules" label-width="80px">
-        <el-form-item label="宸ュ崟鍙�" prop="workOrderNo">
-          <el-input v-model="form.workOrderNo" disabled placeholder="璇疯緭鍏ョ敓浜ц鍗�" />
+      <el-form ref="form" inline :model="form" :rules="rules" label-width="100px">
+        <el-form-item label="鐢熶骇閫氱煡鍗�" prop="productionNotice">
+          <el-input v-model="form.productionNotice" :disabled="editFlag" placeholder="璇疯緭鍏ョ敓浜ч�氱煡鍗�" />
         </el-form-item>
-        <el-form-item label="璁㈠崟缂栧彿" prop="productionNotice">
-          <el-input v-model="form.productionNotice" disabled placeholder="璇疯緭鍏ヨ鍗曠紪鍙�" />
+        <el-form-item label="鐢熶骇璁㈠崟" prop="workOrderNo">
+          <el-input v-model="form.workOrderNo" :disabled="editFlag" placeholder="璇疯緭鍏ョ敓浜ц鍗�" />
         </el-form-item>
         <el-form-item label="浜у搧缂栧彿" prop="productCode">
-          <el-input v-model="form.productCode" disabled placeholder="璇疯緭鍏ヤ骇鍝佺紪鍙�" />
+          <el-input v-model="form.productCode" :disabled="editFlag" placeholder="璇疯緭鍏ヤ骇鍝佺紪鍙�" />
         </el-form-item>
-        <el-form-item label="浜у搧鍚嶇О" prop="productName">
-          <el-input v-model="form.productName" disabled placeholder="璇疯緭鍏ヤ骇鍝佸悕绉�" />
+        <el-form-item label="鎴愬搧鎻忚堪" prop="productName">
+          <el-input v-model="form.productName" :disabled="editFlag" placeholder="璇疯緭鍏ユ垚鍝佹弿杩�" />
         </el-form-item>
-        <el-form-item label="绉嶇被" prop="productName">
-          <el-input v-model="form.typeZ" disabled placeholder="璇疯緭鍏ョ绫�" />
+        <el-form-item label="鏈哄瀷" prop="productName">
+          <el-input v-model="form.typeZ" :disabled="editFlag" placeholder="璇疯緭鍏ユ満鍨�" />
+        </el-form-item>
+        <el-form-item label="闇�姹傛暟閲�" prop="planQty">
+          <el-input v-model="form.planQty" :disabled="editFlag" placeholder="璇疯緭鍏ラ渶姹傛暟閲�" />
         </el-form-item>
         <el-form-item label="宸ュ崟鐘舵��" prop="orderStatus">
           <el-select style="width: 93%" v-model="form.orderStatus" placeholder="璇烽�夋嫨宸ュ崟鐘舵��">
@@ -213,14 +226,14 @@
       </div>
     </el-dialog>
 
-    <el-dialog v-dialogpop-up :title="title" :visible.sync="Createopen" width="500px" append-to-body>
+    <el-dialog v-dialogpop-up :title="title" :visible.sync="Createopen" width="600px" append-to-body>
        <span slot="title">
         <i class="el-icon-s-order"></i>
         {{titleName}}
       </span>
-      <el-form ref="form" inline  :model="form" :rules="CreateRules" label-width="100px">
+      <el-form ref="form" inline  :model="form" :rules="CreateRules" label-width="120px">
         <el-form-item   label="鏈哄瀷" prop="typeZ">
-          <el-input disabled v-model="form.typeZ"  placeholder="璇疯緭鍏ユ満鍨�" />
+          <el-input disabled v-model="form.typeZ" style="font-size: 18px"  placeholder="璇疯緭鍏ユ満鍨�" />
         </el-form-item>
         <el-form-item  label="鏃ユ湡" prop="dateTime">
           <el-date-picker clearable
@@ -234,10 +247,10 @@
           <el-input v-model="form.dateTimeRule"/>
         </el-form-item>
         <el-form-item   label="璧峰缂栧彿" prop="startCode">
-          <el-input type="number"   :maxlength="3"  :pattern="'[0-9]{3}'" v-model="form.startCode"  placeholder="璇疯緭鍏ヨ捣濮嬬紪鍙�" @input="handleCodeChangeStart"/>
+          <el-input type="number" style="font-size: 18px"  :maxlength="3"  :pattern="'[0-9]{3}'" v-model="form.startCode"  placeholder="璇疯緭鍏ヨ捣濮嬬紪鍙�" @input="handleCodeChangeStart"/>
         </el-form-item>
         <el-form-item   label="璧锋缂栧彿" prop="startEndCode">
-          <el-input type="textarea" disabled v-model="form.startEndCode"/>
+          <el-input type="textarea" style="font-size: 18px;width: 250px" disabled v-model="form.startEndCode"/>
         </el-form-item>
       </el-form>
       <div slot="footer" class="dialog-footer">
@@ -278,6 +291,7 @@
   },
   data() {
     return {
+      editFlag: false,
       statuOptions:[
         {
           label:"寰呬笅杈�",
@@ -696,6 +710,7 @@
     handleAdd() {
       this.initWorkshop();
       this.reset();
+      this.editFlag = false
       this.open = true;
       this.titleName = "娣诲姞鐢熶骇璁㈠崟";
     },
@@ -736,6 +751,7 @@
     handleUpdate(row) {
       this.initWorkshop();
       this.reset();
+      this.editFlag = true
       const id = row.id || this.ids
       getProductionOrde(id).then(response => {
         console.log(response.data)
diff --git a/jcdm-ui/src/views/main/om/productionOrde/planStatistics.vue b/jcdm-ui/src/views/main/om/productionOrde/planStatistics.vue
index fbd2b1c..8433431 100644
--- a/jcdm-ui/src/views/main/om/productionOrde/planStatistics.vue
+++ b/jcdm-ui/src/views/main/om/productionOrde/planStatistics.vue
@@ -2,7 +2,7 @@
   <div class="app-container">
     <el-card class="box-card">
     <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
-      <el-form-item label-width="100" label="鐢熶骇閫氱煡鍗�" prop="productName">
+      <el-form-item label-width="100" label="鐢熶骇閫氱煡鍗�" prop="productionNotice">
         <el-input v-model="queryParams.productionNotice" placeholder="璇疯緭鍏ョ敓浜ч�氱煡鍗�" clearable @keyup.enter.native="handleQuery"/>
       </el-form-item>
       <el-form-item label-width="80" label="鐢熶骇璁㈠崟" prop="workOrderNo">
@@ -47,16 +47,16 @@
         </el-table-column>
         <el-table-column label="闇�姹傛暟閲�" align="center" prop="planQty">
         </el-table-column>
-        <el-table-column label="宸ヤ綔涓�" align="center">
-        </el-table-column>
-        <el-table-column label="宸插畬鎴�" width="160" align="center" prop="actualQty">
-        </el-table-column>
-        <el-table-column label="宸叉姤搴�" width="160" align="center" prop="scrapQty">
-        </el-table-column>
-        <el-table-column label="瀹屾垚鐜�" width="160" align="center">
-        </el-table-column>
-        <el-table-column label="鍚堟牸鐜�" width="160" align="center">
-        </el-table-column>
+<!--        <el-table-column label="宸ヤ綔涓�" align="center">-->
+<!--        </el-table-column>-->
+<!--        <el-table-column label="宸插畬鎴�" width="160" align="center" prop="actualQty">-->
+<!--        </el-table-column>-->
+<!--        <el-table-column label="宸叉姤搴�" width="160" align="center" prop="scrapQty">-->
+<!--        </el-table-column>-->
+<!--        <el-table-column label="瀹屾垚鐜�" width="160" align="center">-->
+<!--        </el-table-column>-->
+<!--        <el-table-column label="鍚堟牸鐜�" width="160" align="center">-->
+<!--        </el-table-column>-->
       </el-table>
     </el-card>
 

--
Gitblit v1.9.3