Ver Fonte

fix:MESAndERP工序互相綁定

hmc há 7 meses atrás
pai
commit
4d38d34062
31 ficheiros alterados com 2267 adições e 1247 exclusões
  1. 8 0
      zkqy-admin/src/main/resources/application.yml
  2. 10 10
      zkqy-admin/src/main/resources/kdwebapi.properties
  3. 1 0
      zkqy-framework/src/main/java/com/zkqy/framework/sso_oauth2/controller/OauthController.java
  4. 106 0
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/controller/ProcedureListErpController.java
  5. 27 1
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/controller/RingScanInformationController.java
  6. 5 4
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/controller/StationInformationController.java
  7. 24 0
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/domain/MaterialRetentionLog.java
  8. 11 0
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/domain/ProcedureList.java
  9. 153 0
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/domain/ProcedureListErp.java
  10. 4 4
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/jd/domain/JdProductionOrder.java
  11. 26 0
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/jd/domain/MaterialRetentionLogVo.java
  12. 315 625
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/jd/service/impl/JdProductionOrderServiceImpl.java
  13. 63 0
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/mapper/ProcedureListErpMapper.java
  14. 293 283
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/scheduling/ScheduledBean.java
  15. 61 0
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/service/IProcedureListErpService.java
  16. 1 1
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/service/IStationInformationService.java
  17. 97 0
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/service/impl/ProcedureListErpServiceImpl.java
  18. 5 0
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/service/impl/RingScanInformationServiceImpl.java
  19. 265 115
      zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/service/impl/StationInformationServiceImpl.java
  20. 16 6
      zkqy-fujian-amichi/src/main/resources/mapper/MaterialRetentionLogMapper.xml
  21. 106 0
      zkqy-fujian-amichi/src/main/resources/mapper/ProcedureListErpMapper.xml
  22. 24 8
      zkqy-fujian-amichi/src/main/resources/mapper/ProcedureListMapper.xml
  23. 43 7
      zkqy-fujian-amichi/src/main/resources/mapper/RingScanInformationMapper.xml
  24. 44 0
      zkqy-ui/src/api/amichi/erpProcessList/erpProcess.js
  25. 7 0
      zkqy-ui/src/router/index.js
  26. 20 1
      zkqy-ui/src/views/amichi/MaterialRetentionLog/index.vue
  27. 18 18
      zkqy-ui/src/views/amichi/planTask/salesPlan.vue
  28. 168 161
      zkqy-ui/src/views/amichi/print/FlowCardPrint.vue
  29. 311 0
      zkqy-ui/src/views/amichi/procedureList/erplist/index.vue
  30. 33 1
      zkqy-ui/src/views/amichi/procedureList/list/index.vue
  31. 2 2
      zkqy-ui/src/views/login.vue

+ 8 - 0
zkqy-admin/src/main/resources/application.yml

@@ -119,9 +119,17 @@ mybatis:
 
 # PageHelper分页插件
 pagehelper:
+  #sql方言
   helperDialect: mysql
+  #是否支持通过方法参数来传递分页参数(如 pageNum 和 pageSize)
+  #supportMethodsArguments 设置为 true,PageHelper 会自动识别 pageNum 和 pageSize 参数,并进行分页处理。
+  #如果设置为 false,则需要在调用 Mapper 方法之前手动调用 PageHelper.startPage() 来设置分页参数。
   supportMethodsArguments: false
+  #count=countSql:这是一个常用的配置项,表示在分页查询时是否执行 count 查询以获取总记录数。
+  #count=countSql:表示在分页查询时,会执行一个 count 查询语句来获取总记录数。
   params: count=countSql
+  #关闭合理化分页
+  reasonable: false
 
 
 # Shiro

+ 10 - 10
zkqy-admin/src/main/resources/kdwebapi.properties

@@ -1,18 +1,18 @@
-# \u7B2C\u4E09\u65B9\u7CFB\u7EDF\u767B\u5F55\u6388\u6743\u7684\u8D26\u5957ID
+# ????????????ID
 X-KDApi-AcctID = 61c7dd2d0ff564
-# \u7B2C\u4E09\u65B9\u7CFB\u7EDF\u767B\u5F55\u6388\u6743\u7684\u7528\u6237
-X-KDApi-UserName= \u738B\u91D1\u660E
-# \u7B2C\u4E09\u65B9\u7CFB\u7EDF\u767B\u5F55\u6388\u6743\u7684\u5E94\u7528ID
+# ????????????
+X-KDApi-UserName= ???
+# ????????????ID
 X-KDApi-AppID = 291472_5Z6q2/Ho6roeQaXv0d5PS61FQrTa0PNs
-# \u7B2C\u4E09\u65B9\u7CFB\u7EDF\u767B\u5F55\u6388\u6743\u7684\u5E94\u7528\u5BC6\u94A5
+# ??????????????
 X-KDApi-AppSec = 18d80a2709c7446ea44aa14b7d94e86e
-# \u670D\u52A1Url\u5730\u5740(\u516C\u6709\u4E91\u7EDF\u4E00\u8D70\u7F51\u5173sdk\u5E95\u5C42\u5DF2\u5904\u7406\uFF0C\u65E0\u9700\u4F20X-KDApi-ServerUrl,\u4E0B\u9762\u8FD9\u884C\u9700\u8981\u6CE8\u91CA)
+# ??Url??(????????sdk?????????X-KDApi-ServerUrl,????????)X-KDApi-ServerUrl =http://192.168.2.134/K3Cloud/
 X-KDApi-ServerUrl =http://192.168.2.134/K3Cloud/
-# \u8D26\u5957\u8BED\u7CFB\uFF0C\u9ED8\u8BA42052
+# ???????2052
 X-KDApi-LCID = 2052
-# \u7EC4\u7EC7\u7F16\u7801\uFF0C\u542F\u7528\u591A\u7EC4\u7EC7\u65F6\u914D\u7F6E\u5BF9\u5E94\u7684\u7EC4\u7EC7\u7F16\u7801\u624D\u6709\u6548
+# ???????????????????????
 # X-KDApi-OrgNum = 100
-# \u5141\u8BB8\u7684\u6700\u5927\u8FDE\u63A5\u5EF6\u65F6\uFF0C\u5355\u4F4D\u4E3A\u79D2
+# ??????????????
 X-KDApi-ConnectTimeout=10000000
-# \u5141\u8BB8\u7684\u6700\u5927\u8BFB\u53D6\u5EF6\u65F6\uFF0C\u5355\u4F4D\u4E3A\u79D2
+# ??????????????
 X-KDApi-RequestTimeout=10000000

+ 1 - 0
zkqy-framework/src/main/java/com/zkqy/framework/sso_oauth2/controller/OauthController.java

@@ -81,6 +81,7 @@ public class OauthController {
 //        if(StringUtils.isNotNull(ym)&&ym.equals("yes")){
 //
 //        }
+
         if(ym.equals("yes")){
             String verifyKey =
                     CacheConstants.CAPTCHA_CODE_KEY + StringUtils.nvl(uuid, "");

+ 106 - 0
zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/controller/ProcedureListErpController.java

@@ -0,0 +1,106 @@
+package com.zkqy.amichi.controller;
+
+import java.util.List;
+import javax.servlet.http.HttpServletResponse;
+
+import com.zkqy.common.annotation.Log;
+import com.zkqy.common.core.controller.BaseController;
+import com.zkqy.common.core.domain.AjaxResult;
+import com.zkqy.common.core.page.TableDataInfo;
+import com.zkqy.common.enums.BusinessType;
+import com.zkqy.common.utils.poi.ExcelUtil;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import com.zkqy.amichi.domain.ProcedureListErp;
+import com.zkqy.amichi.service.IProcedureListErpService;
+
+
+/**
+ * erp工序列表Controller
+ * 
+ * @author ruoyi
+ * @date 2024-12-06
+ */
+@RestController
+@RequestMapping("/erpProcessList/erpProcess")
+public class ProcedureListErpController extends BaseController
+{
+    @Autowired
+    private IProcedureListErpService procedureListErpService;
+
+    /**
+     * 查询erp工序列表列表
+     */
+    @PreAuthorize("@ss.hasPermi('erpProcessList:erp工序列表:list')")
+    @GetMapping("/list")
+    public TableDataInfo list(ProcedureListErp procedureListErp)
+    {
+        startPage();
+        List<ProcedureListErp> list = procedureListErpService.selectProcedureListErpList(procedureListErp);
+        return getDataTable(list);
+    }
+
+    /**
+     * 导出erp工序列表列表
+     */
+    @PreAuthorize("@ss.hasPermi('erpProcessList:erp工序列表:export')")
+    @Log(title = "erp工序列表", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(HttpServletResponse response, ProcedureListErp procedureListErp)
+    {
+        List<ProcedureListErp> list = procedureListErpService.selectProcedureListErpList(procedureListErp);
+        ExcelUtil<ProcedureListErp> util = new ExcelUtil<ProcedureListErp>(ProcedureListErp.class);
+        util.exportExcel(response, list, "erp工序列表数据");
+    }
+
+    /**
+     * 获取erp工序列表详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('erpProcessList:erp工序列表:query')")
+    @GetMapping(value = "/{id}")
+    public AjaxResult getInfo(@PathVariable("id") Long id)
+    {
+        return success(procedureListErpService.selectProcedureListErpById(id));
+    }
+
+    /**
+     * 新增erp工序列表
+     */
+    @PreAuthorize("@ss.hasPermi('erpProcessList:erp工序列表:add')")
+    @Log(title = "erp工序列表", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@RequestBody ProcedureListErp procedureListErp)
+    {
+        return toAjax(procedureListErpService.insertProcedureListErp(procedureListErp));
+    }
+
+    /**
+     * 修改erp工序列表
+     */
+    @PreAuthorize("@ss.hasPermi('erpProcessList:erp工序列表:edit')")
+    @Log(title = "erp工序列表", businessType = BusinessType.UPDATE)
+    @PutMapping
+    public AjaxResult edit(@RequestBody ProcedureListErp procedureListErp)
+    {
+        return toAjax(procedureListErpService.updateProcedureListErp(procedureListErp));
+    }
+
+    /**
+     * 删除erp工序列表
+     */
+    @PreAuthorize("@ss.hasPermi('erpProcessList:erp工序列表:remove')")
+    @Log(title = "erp工序列表", businessType = BusinessType.DELETE)
+	@DeleteMapping("/{ids}")
+    public AjaxResult remove(@PathVariable Long[] ids)
+    {
+        return toAjax(procedureListErpService.deleteProcedureListErpByIds(ids));
+    }
+}

+ 27 - 1
zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/controller/RingScanInformationController.java

@@ -65,10 +65,11 @@ public class RingScanInformationController extends BaseController
 
     @Autowired
     RingScanInformationMapper ringScanInformationMapper;
+
+
     /**
      * 手持分页显示
      */
-//    @PreAuthorize("@ss.hasPermi('ringScanInformation:information:list')")
     @Anonymous
     @GetMapping("/scfylist")
     public  AjaxResult scfylist(RingScanInformation ringScanInformation)
@@ -107,6 +108,31 @@ public class RingScanInformationController extends BaseController
         return AjaxResult.success(list1);
     }
 
+    /**
+     * 测试分页失效问题
+     */
+    @Anonymous
+    @GetMapping("/scfylist2")
+    public  AjaxResult scfylist2(RingScanInformation ringScanInformation)
+    {
+
+        startPage();
+        List<RingScanInformation> list = ringScanInformationService.selectRingScanInformationList(ringScanInformation);
+        List<Map> list1=new ArrayList<>();
+        list.forEach(item->{
+            HashMap hashMap=new HashMap();
+            hashMap.put("Uname",item.getPersonnelName());
+            hashMap.put("Ugw",item.getStationName());
+            hashMap.put("Stime",item.getScanningTime());
+            hashMap.put("SContent",item.getContentInformation());
+            hashMap.put("Sresult",item.getExecutionMessage());
+            list1.add(hashMap);
+        });
+        return AjaxResult.success(list1);
+    }
+
+
+
     /**
      * 生成员工二维码
      */

+ 5 - 4
zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/controller/StationInformationController.java

@@ -77,7 +77,7 @@ public class StationInformationController extends BaseController
      */
     @Anonymous
     @PostMapping("/stationProductScanningTwo")
-    @ApiOperation(value = "导出工位信息列表")
+    @ApiOperation(value = "手持扫描")
     public String stationProductScanningTwo(@RequestParam("contentString") String contentString)
     {
         return stationInformationService.stationProductScanningTwo2(contentString);
@@ -108,7 +108,7 @@ public class StationInformationController extends BaseController
 
 
     /**
-     * 指环扫描扣料
+     * 流转卡扫描扣料
      * @param productNumber
      * @param gxm
      * @return
@@ -116,9 +116,10 @@ public class StationInformationController extends BaseController
     @Anonymous
     @GetMapping("/sweepingMaterial")
     @ApiOperation(value = "指环扫描扣料")
-    public String sweepingMaterial(@RequestParam("productNumber") String productNumber,@RequestParam("gxm")String gxm)
+    public String sweepingMaterial(@RequestParam("orderNumber") String orderNumber,@RequestParam("productNumber") String productNumber,
+                                   @RequestParam("gxm")String gxm,@RequestParam("lzkNumber")String lzkNumber)
     {
-        return stationInformationService.sweepingMaterial(productNumber,gxm);
+        return stationInformationService.sweepingMaterial(orderNumber,productNumber,gxm,lzkNumber);
     }
 
     /**

+ 24 - 0
zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/domain/MaterialRetentionLog.java

@@ -148,6 +148,29 @@ public class MaterialRetentionLog extends BaseEntity
     @Excel(name = "子项类型")
     private String materialType;
 
+
+    @Excel(name = "订单号")
+    private String orderNumber;
+
+    @Excel(name = "生产订单号")
+    private String productionOrderNumber;
+
+    public String getOrderNumber() {
+        return orderNumber;
+    }
+
+    public void setOrderNumber(String orderNumber) {
+        this.orderNumber = orderNumber;
+    }
+
+    public String getProductionOrderNumber() {
+        return productionOrderNumber;
+    }
+
+    public void setProductionOrderNumber(String productionOrderNumber) {
+        this.productionOrderNumber = productionOrderNumber;
+    }
+
     public String getMaterialType() {
         return materialType;
     }
@@ -159,6 +182,7 @@ public class MaterialRetentionLog extends BaseEntity
     /** 删除标志(0代表存在 2代表删除) */
     private String delFlag;
 
+
     public String getProcess() {
         return process;
     }

+ 11 - 0
zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/domain/ProcedureList.java

@@ -42,6 +42,17 @@ public class ProcedureList extends BaseEntity
     /** 删除标志(0代表存在 1代表删除) */
     private String delFlag;
 
+    /** 绑定状态 */
+    private  String  bindingStatus;
+
+    public String getBindingStatus() {
+        return bindingStatus;
+    }
+
+    public void setBindingStatus(String bindingStatus) {
+        this.bindingStatus = bindingStatus;
+    }
+
     /**
      * 工序排序
      */

+ 153 - 0
zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/domain/ProcedureListErp.java

@@ -0,0 +1,153 @@
+package com.zkqy.amichi.domain;
+
+import com.zkqy.common.annotation.Excel;
+import com.zkqy.common.core.domain.BaseEntity;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+
+
+/**
+ * erp工序列表对象 procedure_list_erp
+ * 
+ * @author ruoyi
+ * @date 2024-12-06
+ */
+public class ProcedureListErp extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 主键 */
+    private Long id;
+
+    /** 工序编号 */
+    @Excel(name = "工序编号")
+    private String procedureNumber;
+
+    /** 工序名称 */
+    @Excel(name = "工序名称")
+    private String procedurName;
+
+    /** 备注 */
+    @Excel(name = "备注")
+    private String remarks;
+
+    /** 创建者id  */
+    @Excel(name = "创建者id ")
+    private Long createById;
+
+    /** 更新者id */
+    @Excel(name = "更新者id")
+    private Long updateById;
+
+    /** 删除标志(0代表存在 1代表删除) */
+    private String delFlag;
+
+    /** 排序 */
+    @Excel(name = "排序")
+    private Long sort;
+
+    /** erp作业名称 */
+    @Excel(name = "erp作业名称")
+    private String erpJobName;
+
+    public void setId(Long id) 
+    {
+        this.id = id;
+    }
+
+    public Long getId() 
+    {
+        return id;
+    }
+    public void setProcedureNumber(String procedureNumber) 
+    {
+        this.procedureNumber = procedureNumber;
+    }
+
+    public String getProcedureNumber() 
+    {
+        return procedureNumber;
+    }
+    public void setProcedurName(String procedurName) 
+    {
+        this.procedurName = procedurName;
+    }
+
+    public String getProcedurName() 
+    {
+        return procedurName;
+    }
+    public void setRemarks(String remarks) 
+    {
+        this.remarks = remarks;
+    }
+
+    public String getRemarks() 
+    {
+        return remarks;
+    }
+    public void setCreateById(Long createById) 
+    {
+        this.createById = createById;
+    }
+
+    public Long getCreateById() 
+    {
+        return createById;
+    }
+    public void setUpdateById(Long updateById) 
+    {
+        this.updateById = updateById;
+    }
+
+    public Long getUpdateById() 
+    {
+        return updateById;
+    }
+    public void setDelFlag(String delFlag) 
+    {
+        this.delFlag = delFlag;
+    }
+
+    public String getDelFlag() 
+    {
+        return delFlag;
+    }
+    public void setSort(Long sort) 
+    {
+        this.sort = sort;
+    }
+
+    public Long getSort() 
+    {
+        return sort;
+    }
+    public void setErpJobName(String erpJobName) 
+    {
+        this.erpJobName = erpJobName;
+    }
+
+    public String getErpJobName() 
+    {
+        return erpJobName;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+            .append("id", getId())
+            .append("procedureNumber", getProcedureNumber())
+            .append("procedurName", getProcedurName())
+            .append("remarks", getRemarks())
+            .append("createById", getCreateById())
+            .append("createBy", getCreateBy())
+            .append("createTime", getCreateTime())
+            .append("updateById", getUpdateById())
+            .append("updateBy", getUpdateBy())
+            .append("updateTime", getUpdateTime())
+            .append("delFlag", getDelFlag())
+            .append("sort", getSort())
+            .append("erpJobName", getErpJobName())
+            .toString();
+    }
+}

+ 4 - 4
zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/jd/domain/JdProductionOrder.java

@@ -37,10 +37,10 @@ public class JdProductionOrder extends BaseEntity
     private String documentTyep;
 
     /** 单据日期 */
-    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+//    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     @JSONField(name = "FDate")
     @Excel(name = "单据日期", width = 30, dateFormat = "yyyy-MM-dd")
-    private Date documentDate;
+    private String documentDate;
 
     /** 单据状态 */
     @Excel(name = "单据状态")
@@ -329,12 +329,12 @@ public class JdProductionOrder extends BaseEntity
     {
         return documentTyep;
     }
-    public void setDocumentDate(Date documentDate) 
+    public void setDocumentDate(String documentDate)
     {
         this.documentDate = documentDate;
     }
 
-    public Date getDocumentDate() 
+    public String getDocumentDate()
     {
         return documentDate;
     }

+ 26 - 0
zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/jd/domain/MaterialRetentionLogVo.java

@@ -162,6 +162,32 @@ public class MaterialRetentionLogVo extends BaseEntity {
     @Excel(name = "更新者id")
     private Long updateById;
 
+
+    /** 订单号 */
+    @Excel(name = "订单号")
+    private String orderNumber;
+
+
+    /** 生产订单号 */
+    @Excel(name = "生产订单号")
+    private String productionOrderNumber;
+
+    public String getOrderNumber() {
+        return orderNumber;
+    }
+
+    public void setOrderNumber(String orderNumber) {
+        this.orderNumber = orderNumber;
+    }
+
+    public String getProductionOrderNumber() {
+        return productionOrderNumber;
+    }
+
+    public void setProductionOrderNumber(String productionOrderNumber) {
+        this.productionOrderNumber = productionOrderNumber;
+    }
+
     /** 删除标志(0代表存在 2代表删除) */
     private String delFlag;
 

+ 315 - 625
zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/jd/service/impl/JdProductionOrderServiceImpl.java

@@ -22,9 +22,12 @@ import com.zkqy.amichi.mapper.ProductionCardFlowMapper;
 import com.zkqy.amichi.mapper.ProductionPlanningManagementMapper;
 import com.zkqy.amichi.utils.AmichiCommissionNumberGenerator;
 import com.zkqy.common.core.domain.AjaxResult;
+import com.zkqy.common.core.redis.RedisCache;
 import com.zkqy.common.utils.DateUtils;
 import com.zkqy.common.utils.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.redis.core.RedisTemplate;
+import org.springframework.data.redis.core.StringRedisTemplate;
 import org.springframework.format.annotation.DateTimeFormat;
 import org.springframework.stereotype.Service;
 import com.zkqy.amichi.jd.mapper.JdProductionOrderMapper;
@@ -57,6 +60,12 @@ public class JdProductionOrderServiceImpl implements JdProductionOrderService
     @Autowired
     private JdMaterialInfoServiceImpl jdMaterialInfoService;
 
+    @Autowired
+    private RedisCache redisCache;
+
+    @Autowired
+    private StringRedisTemplate stringRedisTemplate;
+
     /**
      * 查询金蝶-生产订单信息
      * 
@@ -131,61 +140,171 @@ public class JdProductionOrderServiceImpl implements JdProductionOrderService
         return jdProductionOrderMapper.deleteJdProductionOrderById(id);
     }
 
-//    @Override
-//    public AjaxResult jdProductionOrderPull(JdProductionOrder jdProductionOrder) {
-//        //1、查询开始同步的单据编号         String s="MO051961";
-//        String s = jdProductionOrderMapper.selectJdProductionOrderMaxId();
-//        //2、大于这个编号的所有订单全部拉取回来
-//            //2.1、new金蝶jdk工具类
-//            K3CloudApi api = new K3CloudApi();
-//            //2.2、
-//            HashMap<String,Object > stringHashMap=new HashMap();
-//            stringHashMap.put("FormId","PRD_MO");
-//                List<String> stringList=new ArrayList<>();
-//                stringList.add("FBillNo");
-//                stringList.add("FBillType");
-//                stringList.add("FDate");
-//                stringList.add("FDocumentStatus");
-//                stringList.add("FProductType");
-//                stringList.add("FMaterialId");
-//                stringList.add("FWorkShopID0");
-//                stringList.add("FQty");
-//                stringList.add("FStatus");
-//                stringList.add("FSaleOrderNo");
-//                stringList.add("FPickMtrlStatus");
-//                stringHashMap.put("FieldKeys",stringList.stream().collect(Collectors.joining(",")));
-//                HashMap gl=new HashMap();
-//                gl.put("FieldName","FBillNo");
-//                gl.put("Compare","72");
-//                gl.put("Value",s);
-//                gl.put("Left","");
-//                gl.put("Right","");
-//                gl.put("Logic","0");
-//                List<Map> mapList=new ArrayList<>();
-//                mapList.add(gl);
-//            stringHashMap.put("FilterString",mapList);
-//            String jsonString = JSON.toJSONString(stringHashMap);
-//            try {
-//                String resultJson = String.valueOf(api.executeBillQuery(jsonString));
-//                List<JdProductionOrder> arrayLists = JSON.parseArray(resultJson, JdProductionOrder.class);
-//                int i = jdProductionOrderMapper.insertBatchJdProductionOrder(arrayLists);
-//                if(i>0){
-//                    return AjaxResult.success("数据拉去成功");
-//                }
-//            } catch (Exception e) {
-//                throw new RuntimeException(e);
-//            }
-//            return AjaxResult.error("数据拉取失败");
-//    }
-
-
+    /**
+     * 普通订单拉取数据
+     * @return
+     *
+     * 条件:所有开工数据
+     *      物料编码不等于焊接
+     *      拉取普通订单ERP数据
+     */
     @Override
     public AjaxResult jdProductionOrderPull() {
-        AjaxResult ajaxResult = this.jdProductionOrderPullTwo();
-        return ajaxResult;
+        Boolean aTrue = stringRedisTemplate.opsForValue().setIfAbsent("fjqy:ptd:pulled", "true");
+        if (aTrue) {
+            AjaxResult ajaxResult = jdMaterialInfoService.pullMaterialBaseInfo();
+            //金蝶工具key
+            K3CloudApi api = new K3CloudApi();
+            //定义查询条件
+            String query = "{\n" +
+                    "    \"FormId\": \"PRD_MO\",\n" +
+                    "    \"FieldKeys\": \"FDescription,F_PONP_teshuyaoqiu,FBillNo,FBillType,FDate,FDocumentStatus," +
+                    "FProductType,FMaterialId,FWorkShopID0,FQty,FStatus,FSaleOrderNo,FPickMtrlStatus," +
+                    "FMaterialId.FNumber,FMaterialName,F_PONP_BaseProperty,FSpecification,FUnitId.FName,F_PONP_yanse,F_PONP_mingpai,F_PONP_hegezheng.FDataValue," +
+                    "F_PONP_shuomingshu.FDataValue,F_PONP_KaiGuanXiang,F_PONP_baozhuangxiang,F_PONP_GongLv,FPlanFinishDate,FPlanStartDate,F_PONP_XQRQ,FPlanStartDate,FPlanFinishDate\",\n" +
+                    "    \"FilterString\": [{\"Left\":\"\",\"FieldName\":\"FMaterialId.FNumber\",\"Compare\":\"34\",\"Value\":\"焊\",\"Right\":\"\",\"Logic\":0},{\"Left\":\"\",\"FieldName\":\"FStatus\",\"Compare\":\"105\",\"Value\":\"4\",\"Right\":\"\",\"Logic\":0}],\n" +
+                    "    \"OrderString\": \"\",\n" +
+                    "    \"TopRowCount\": 0,\n" +
+                    "    \"StartRow\": 0,\n" +
+                    "    \"Limit\": 5000,\n" +
+                    "    \"SubSystemId\": \"\"\n" +
+                    "}";
+            //
+            try {
+                //查询结果
+                String resultJson = api.billQuery(query);
+                //生产信息
+                List<JdProductionOrder> jdProductionOrders = JSON.parseArray(resultJson, JdProductionOrder.class);
+                //查询系统中的订单信息
+                ProductionPlanningManagement productionPlanningManagement1 = new ProductionPlanningManagement();
+                productionPlanningManagement1.setIsWeldSheet("1");
+                List<ProductionPlanningManagement> productionPlanningManagements = productionPlanningManagementMapper.selectProductionPlanningManagementList(productionPlanningManagement1);
+                List<String> collectTwo = productionPlanningManagements.stream().map(ProductionPlanningManagement::getOrderNumber).collect(Collectors.toSet())
+                        .stream().collect(Collectors.toList());
+
+
+                Map<String, List<JdProductionOrder>> groupedByDemandDocument = jdProductionOrders.stream()
+                        .filter(item -> !collectTwo.contains(item.getDemandDocument()))
+                        .collect(Collectors.groupingBy(JdProductionOrder::getDemandDocument));
+
+                if (groupedByDemandDocument.size() > 0) {
+                    //订单循环
+                    groupedByDemandDocument.forEach((k, v) -> {
+                        ProductionPlanningManagement productionPlanningManagement = new ProductionPlanningManagement();
+                        //编号订单号
+                        productionPlanningManagement.setOrderNumber(k);
+                        //计划编号
+                        String planNumnber = generator.generateCommissionNumber();
+                        productionPlanningManagement.setPlanNumber(planNumnber);
+                        productionPlanningManagement.setPlanType("0"); //待生产
+                        productionPlanningManagement.setTaskStatus("4");//待排产
+                        productionPlanningManagement.setIsWeldSheet("1");//焊接订单
+                        if (StringUtils.isNotNull(v.get(0).getCompletionTime())) {
+                            productionPlanningManagement.setCompletionTime(v.get(0).getCompletionTime());//完成时间
+                        }
+                        //备注
+                        if (StringUtils.isNotNull(v.get(0).getRemark())) {
+                            productionPlanningManagement.setRemark(v.get(0).getRemark()); //备注
+                        }
+                        //单据类型
+                        if (StringUtils.isNotNull(v.get(0).getDocumentTyep())) {
+                            productionPlanningManagement.setOrderType(v.get(0).getDocumentTyep()); //单据类型
+                        }
+                        //订单的创建时间
+                        productionPlanningManagement.setCreationtimeString(v.get(0).getCreationtimeString());//单据的创建时间
+                        //特殊要求
+                        if (StringUtils.isNotNull(v.get(0).getTsyq())) {
+                            productionPlanningManagement.setSpecialRequirements(v.get(0).getTsyq());//特殊要求
+                        }
+
+                        //编号订单号
+                        List<Map> mapList = this.jdSalesOrderInfoS(k);//订单详情信息
+                        String fDeliveryDate;
+                        if (mapList.size() > 0) {
+                            fDeliveryDate = mapList.get(0).get("FDeliveryDate").toString();
+                        } else {
+                            fDeliveryDate = "";
+                        }
+                        //拿到了关于这个订单的销售订单
+                        if (mapList.size() > 0) {
+                            if (StringUtils.isNotNull(mapList.get(0).get("F.PONP.Text"))) {
+                                productionPlanningManagement.setContractNumber(mapList.get(0).get("F.PONP.Text").toString());
+                            }
+                            productionPlanningManagement.setCompletionTime(fDeliveryDate);
+                            //======处理基本的订单信息
+                            productionPlanningManagementMapper.insertProductionPlanningManagement(productionPlanningManagement);
+                            v.forEach(a -> {
+                                PlanTaskDetails planTaskDetails = new PlanTaskDetails();
+                                planTaskDetails.setDemandDocument(a.getDocumentNumber());//需求单据号
+                                planTaskDetails.setPlanId(productionPlanningManagement.getId());//计划id
+                                planTaskDetails.setMaterialId(a.getMaterialCode());//原材料编码
+                                planTaskDetails.setMaterialName(a.getMaterialName());//名称
+                                planTaskDetails.setQuantity(a.getQuantity());//数量
+                                //planTaskDetails.setTimeOfRequest(a.getCompletionTime());//要货时间
+                                planTaskDetails.setModelNumber(a.getModelNumber());//型号
+                                planTaskDetails.setSpecification(a.getSpecification());//规格
+                                planTaskDetails.setMaterialUnit(a.getUnit());//单位
+                                planTaskDetails.setPower(a.getGl());//功率
+                                planTaskDetails.setVoltage(a.getDianYaPinLv());//电压频率
+                                planTaskDetails.setColour(a.getYanse());//颜色
+                                planTaskDetails.setMingpai(a.getMingpai());//铭牌
+                                planTaskDetails.setShuomingshu(a.getShuomingshu());//说明书
+                                planTaskDetails.setHegezheng(a.getHegezheng());//合格证
+                                planTaskDetails.setBaozhuangxiang(a.getBaozhuangxiang());//包装箱
+                                planTaskDetails.setSwitchBox(a.getKaiguanxiang());//开关箱
+                                planTaskDetails.setScheduledCommencement(a.getFPlanStartDate()); //计划开始时间
+                                planTaskDetails.setScheduledCompletion(a.getFPlanFinishDate()); //计划完工时间
+                                planTaskDetails.setRemark(a.getRemark());
+                                if (StringUtils.isNotNull(a.getDocumentDate())) {
+                                    //                                SimpleDateFormat formatter1= new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+                                    //                                String formattedDate = formatter1.format(a.getDocumentDate());
+                                    planTaskDetails.setTimeOfRequest(a.getDocumentDate());
+                                }
+
+                                planTaskDetailsMapper.insertPlanTaskDetails(planTaskDetails);
+                            });
+                        }
+                    });
+                    //处理订单序列号问题
+                    groupedByDemandDocument.forEach((k, v) -> {
+                        String stringQuery = "{\n" +
+                                "    \"FormId\": \"PRD_MO\",\n" +
+                                "    \"FieldKeys\": \"FBillNo,FSNQty1,FSaleOrderNo,FSerialNo\",\n" +
+                                "    \"FilterString\": [{\"Left\":\"\",\"FieldName\":\"FMaterialId.FNumber\",\"Compare\":\"34\",\"Value\":\"焊\",\"Right\":\"\",\"Logic\":0},{\"Left\":\"\",\"FieldName\":\"FStatus\",\"Compare\":\"105\",\"Value\":\"4\",\"Right\":\"\",\"Logic\":0},{\"Left\":\"\",\"FieldName\":\"FSaleOrderNo\",\"Compare\":\"67\",\"Value\":\"" + k + "\",\"Right\":\"\",\"Logic\":0}],\n" +
+                                "    \"OrderString\": \"\",\n" +
+                                "    \"TopRowCount\": 0,\n" +
+                                "    \"StartRow\": 0,\n" +
+                                "    \"Limit\": 2000,\n" +
+                                "    \"SubSystemId\": \"\"\n" +
+                                "}";
+                        try {
+                            String xlhString = api.billQuery(stringQuery);
+                            if (!xlhString.equals("[]")) {
+                                List<ProductionCardFlowVo> mapList1 = JSON.parseArray(xlhString, ProductionCardFlowVo.class);
+                                int i = productionCardFlowMapper.insertProductionCardFlowBatchVo(mapList1);
+                            }
+                        } catch (Exception e) {
+                            throw new RuntimeException(e);
+                        }
+                    });
+                }
+            } catch (Exception e) {
+                stringRedisTemplate.delete("fjqy:ptd:pulled");
+                throw new RuntimeException(e);
+            }
+            stringRedisTemplate.delete("fjqy:ptd:pulled");
+            return AjaxResult.success("拉取成功");
+        } else {
+            return AjaxResult.success("定时任务正在执行请稍后在拉去");
+        }
     }
 
 
+
+    /**
+     * 普通订单拉取斯销售订单数据
+     * @return
+     */
     List<Map> jdSalesOrderInfoS(String orderNumber){
         K3CloudApi api = new K3CloudApi();
         //查询内容
@@ -247,7 +366,6 @@ public class JdProductionOrderServiceImpl implements JdProductionOrderService
         }
     }
 
-
     /**
      * 生产序列号
      * @return
@@ -307,591 +425,163 @@ public class JdProductionOrderServiceImpl implements JdProductionOrderService
     }
 
 
-//    /**
-// * 物料编码不等于焊接
-// * 条件:所有开工数据
-// *
-// * @return
-// */
-//public  AjaxResult jdProductionOrderPullTwo(){
-//    //金蝶工具key
-//    K3CloudApi api = new K3CloudApi();
-//    //定义查询条件
-//    String query="{\n" +
-//            "    \"FormId\": \"PRD_MO\",\n" +
-//            "    \"FieldKeys\": \"FDescription,F_PONP_teshuyaoqiu,FBillNo,FBillType,FDate,FDocumentStatus," +
-//            "FProductType,FMaterialId,FWorkShopID0,FQty,FStatus,,FSaleOrderNo,FPickMtrlStatus," +
-//            "FMaterialId.FNumber,FMaterialName,F_PONP_BaseProperty,FSpecification,FUnitId.FName,F_PONP_yanse,F_PONP_mingpai,F_PONP_hegezheng.FDataValue," +
-//            "F_PONP_shuomingshu.FDataValue,F_PONP_KaiGuanXiang,F_PONP_baozhuangxiang,F_PONP_GongLv,FPlanFinishDate,FPlanStartDate\",\n" +
-//            "    \"FilterString\": [{\"Left\":\"\",\"FieldName\":\"FMaterialId.FNumber\",\"Compare\":\"34\",\"Value\":\"焊\",\"Right\":\"\",\"Logic\":0},{\"Left\":\"\",\"FieldName\":\"FStatus\",\"Compare\":\"105\",\"Value\":\"4\",\"Right\":\"\",\"Logic\":0}],\n" +
-//            "    \"OrderString\": \"\",\n" +
-//            "    \"TopRowCount\": 0,\n" +
-//            "    \"StartRow\": 0,\n" +
-//            "    \"Limit\": 8000,\n" +
-//            "    \"SubSystemId\": \"\"\n" +
-//            "}";
-////
-//    try {
-//        //查询结果
-//        String resultJson = api.billQuery(query);
-//        //生产信息
-//        List<JdProductionOrder> jdProductionOrders = JSON.parseArray(resultJson, JdProductionOrder.class);
-//        //单据编号去重
-////            List<String> collectOne = jdProductionOrders.stream().map(JdProductionOrder::getDemandDocument).collect(Collectors.toSet())
-////                    .stream().collect(Collectors.toList());
-//
-//        //查询系统中的订单信息
-//        ProductionPlanningManagement productionPlanningManagement1=new ProductionPlanningManagement();
-//        productionPlanningManagement1.setIsWeldSheet("1");
-//        List<ProductionPlanningManagement> productionPlanningManagements = productionPlanningManagementMapper.selectProductionPlanningManagementList(productionPlanningManagement1);
-//
-//        List<String> collectTwo = productionPlanningManagements.stream().map(ProductionPlanningManagement::getOrderNumber).collect(Collectors.toSet())
-//                .stream().collect(Collectors.toList());
-//
-////          List<String> cj= collectOne.stream().filter(item -> !collectTwo.contains(item)).collect(Collectors.toList());
-//        //分组
-//        // 按照订单号分组并去重
-////            Map<String, JdProductionOrder> groupedByDemandDocument = jdProductionOrders.stream().filter(item->!collectTwo.contains(item.getDemandDocument()))
-////                    .collect(Collectors.toMap(
-////                            JdProductionOrder::getDemandDocument,
-////                            order -> order,
-////                            (existing, replacement) -> existing // 保留第一个出现的订单
-////                    ));
-//        Map<String, List<JdProductionOrder>> groupedByDemandDocument = jdProductionOrders.stream()
-//                .filter(item -> !collectTwo.contains(item.getDemandDocument()))
-//                .collect(Collectors.groupingBy(JdProductionOrder::getDemandDocument));
-//        if(groupedByDemandDocument.size()>0){
-//            //订单循环
-//            groupedByDemandDocument.forEach((k,v)->{
-//                //计划编号
-//                String planNumnber = generator.generateCommissionNumber();
-//                //编号订单号
-//                List<Map> mapList = this.jdSalesOrderInfoS(k);//订单详情信息
-//                System.err.println(mapList.size());
-//                //拿到了关于这个订单的销售订单
-//                if(mapList.size()>0){
-//                    //编号订单号
-//                    String fBillNo = mapList.get(0).get("FBillNo").toString();//单据编号
-//                    //合同号
-//                    String F_PONP_Text = mapList.get(0).get("F.PONP.Text").toString();
-//                    //下单时间
-//                    String FDate = mapList.get(0).get("FCreateDate").toString();//日期
-//                    String F_PONP_Datetime;
-//                    if(mapList.get(0).get("F_PONP_DATETIME")!=null){
-//                        //要货日期
-//                        F_PONP_Datetime = mapList.get(0).get("F_PONP_DATETIME").toString();//要货日期
-//                    } else if(mapList.get(0).get("FDeliveryDate")!=null){
-//                        F_PONP_Datetime =mapList.get(0).get("FDeliveryDate").toString();//要货日期;
-//                    }else {
-//                        F_PONP_Datetime="";
-//                    }
-//                    ProductionPlanningManagement productionPlanningManagement=new ProductionPlanningManagement();
-//                    productionPlanningManagement.setPlanNumber(planNumnber);
-//                    productionPlanningManagement.setOrderNumber(fBillNo);
-//                    productionPlanningManagement.setContractNumber(F_PONP_Text);
-//                    if(StringUtils.isNotNull(v.get(0).getBz())){ //备注
-//                        productionPlanningManagement.setRemark(v.get(0).getBz());
-//                    }
-//                    productionPlanningManagement.setCreationtimeString(FDate);
-//                    productionPlanningManagement.setCompletionTime(F_PONP_Datetime);
-//                    if(StringUtils.isNotNull(v.get(0).getTsyq())){
-//                        productionPlanningManagement.setSpecialRequirements(v.get(0).getTsyq()); //特殊要求
-//                    }
-//                    productionPlanningManagement.setPlanType("0"); //待生产
-//                    productionPlanningManagement.setTaskStatus("2");//待排产
-//                    productionPlanningManagement.setIsWeldSheet("1"); //普通订单
-//                    //======处理基本的订单信息
-//                    productionPlanningManagementMapper.insertProductionPlanningManagement(productionPlanningManagement);
-//                    mapList.forEach(a->{
-//                        PlanTaskDetails planTaskDetails=new PlanTaskDetails();
-//                        List<JdProductionOrder> collect1 = jdProductionOrders.stream().filter(c -> c.getDemandDocument().equals(k) && c.getMaterialCode().equals(a.get("FMaterialId.FNumber").toString())).collect(Collectors.toList());
-//                        if(collect1.size()<=0){
-//                            System.out.println(k);
-//                            System.out.println(a.get("FMaterialId.FNumber").toString());
-//                        }
-//                        if(collect1.size()>0){
-//                            //需求单据(处理详情信息没有需求单据的问题)
-//                            planTaskDetails.setDemandDocument(collect1.get(0).getDocumentNumber());   //需求单据
-//                            //颜色
-//                            planTaskDetails.setColour(collect1.get(0).getYanse());
-//                            //铭牌
-//                            planTaskDetails.setMingpai(collect1.get(0).getMingpai());
-//                            //合格证
-//                            planTaskDetails.setHegezheng(collect1.get(0).getHegezheng());
-//                            //说明书
-//                            planTaskDetails.setShuomingshu(collect1.get(0).getShuomingshu());
-//                            //包装箱
-//                            planTaskDetails.setBaozhuangxiang(collect1.get(0).getBaozhuangxiang());
-//                            //开关箱子
-//                            planTaskDetails.setSwitchBox(collect1.get(0).getKaiguanxiang());
-//                            //功率
-//                            planTaskDetails.setPower(collect1.get(0).getGl());
-//                        }
-//                        planTaskDetails.setPlanId(productionPlanningManagement.getId());//计划id
-//                        planTaskDetails.setMaterialId(a.get("FMaterialId.FNumber").toString());//原材料编码
-//                        planTaskDetails.setMaterialName(a.get("FMaterialName").toString());//名称
-//                        planTaskDetails.setQuantity(a.get("FQty").toString());//数量
-//                        planTaskDetails.setTimeOfRequest(F_PONP_Datetime);
-//                        planTaskDetails.setCustomerModel(a.get("F.PONP.Text1").toString());//客户型号
-//                        planTaskDetails.setModelNumber(a.get("F.PONP.BaseProperty").toString());//型号
-//                        planTaskDetails.setSpecification(a.get("FMaterialModel").toString());//规格
-//                        planTaskDetails.setMaterialUnit(a.get("FUnitID.FName").toString());//单位
-//
-////                        planTaskDetails.setColour(a.get("F.PONP.yanse").toString()); //颜色
-////                        planTaskDetails.setMingpai(a.get("F.PONP.mingpai").toString()); //铭牌
-////                        planTaskDetails.setHegezheng(a.get("F.PONP.hegezheng.FDataValue").toString()); //合格证
-////                        planTaskDetails.setShuomingshu(a.get("F.PONP.shuomingshu.FDataValue").toString()); //说明书
-////                        planTaskDetails.setBaozhuangxiang(a.get("F.PONP.baozhuangxiang").toString()); //包装箱
-////                        planTaskDetails.setSwitchBox(a.get("F.PONP.Text5").toString()); //开关箱
-//                        planTaskDetailsMapper.insertPlanTaskDetails(planTaskDetails);
-//                    });
-//                }
-//            });
-//            //处理订单序列号问题
-//            groupedByDemandDocument.forEach((k,v)->{
-////            String documentNumber = item.getDocumentNumber();//需求单据编号
-//                String stringQuery="{\n" +
-//                        "    \"FormId\": \"PRD_MO\",\n" +
-//                        "    \"FieldKeys\": \"FBillNo,FSNQty1,FSaleOrderNo,FSerialNo\",\n" +
-//                        "    \"FilterString\": [{\"Left\":\"\",\"FieldName\":\"FMaterialId.FNumber\",\"Compare\":\"34\",\"Value\":\"焊\",\"Right\":\"\",\"Logic\":0},{\"Left\":\"\",\"FieldName\":\"FStatus\",\"Compare\":\"105\",\"Value\":\"4\",\"Right\":\"\",\"Logic\":0},{\"Left\":\"\",\"FieldName\":\"FSaleOrderNo\",\"Compare\":\"67\",\"Value\":\""+k+"\",\"Right\":\"\",\"Logic\":0}],\n" +
-//                        "    \"OrderString\": \"\",\n" +
-//                        "    \"TopRowCount\": 0,\n" +
-//                        "    \"StartRow\": 0,\n" +
-//                        "    \"Limit\": 2000,\n" +
-//                        "    \"SubSystemId\": \"\"\n" +
-//                        "}";
-//                try {
-//                    String xlhString = api.billQuery(stringQuery);
-//                    if(!xlhString.equals("[]")){
-//                        List<ProductionCardFlowVo> mapList1 = JSON.parseArray(xlhString,  ProductionCardFlowVo.class);
-//                        int i = productionCardFlowMapper.insertProductionCardFlowBatchVo(mapList1);
-//                    }
-//                } catch (Exception e) {
-//                    throw new RuntimeException(e);
-//                }
-//            });
-//        }
-//    } catch (Exception e) {
-//        throw new RuntimeException(e);
-//    }
-//    return  AjaxResult.success();
-//}
-
-
-
 
     /**
-     * 物料编码不等于焊接
-     * 条件:所有开工数据
-     *
-     * @return
-     */
-    public  AjaxResult jdProductionOrderPullTwo(){
-        AjaxResult ajaxResult = jdMaterialInfoService.pullMaterialBaseInfo();
-        //金蝶工具key
-        K3CloudApi api = new K3CloudApi();
-        //定义查询条件
-        String query="{\n" +
-                "    \"FormId\": \"PRD_MO\",\n" +
-                "    \"FieldKeys\": \"FDescription,F_PONP_teshuyaoqiu,FBillNo,FBillType,FDate,FDocumentStatus," +
-                "FProductType,FMaterialId,FWorkShopID0,FQty,FStatus,FSaleOrderNo,FPickMtrlStatus," +
-                "FMaterialId.FNumber,FMaterialName,F_PONP_BaseProperty,FSpecification,FUnitId.FName,F_PONP_yanse,F_PONP_mingpai,F_PONP_hegezheng.FDataValue," +
-                "F_PONP_shuomingshu.FDataValue,F_PONP_KaiGuanXiang,F_PONP_baozhuangxiang,F_PONP_GongLv,FPlanFinishDate,FPlanStartDate,F_PONP_XQRQ,FPlanStartDate,FPlanFinishDate\",\n" +
-                "    \"FilterString\": [{\"Left\":\"\",\"FieldName\":\"FMaterialId.FNumber\",\"Compare\":\"34\",\"Value\":\"焊\",\"Right\":\"\",\"Logic\":0},{\"Left\":\"\",\"FieldName\":\"FStatus\",\"Compare\":\"105\",\"Value\":\"4\",\"Right\":\"\",\"Logic\":0}],\n" +
-                "    \"OrderString\": \"\",\n" +
-                "    \"TopRowCount\": 0,\n" +
-                "    \"StartRow\": 0,\n" +
-                "    \"Limit\": 5000,\n" +
-                "    \"SubSystemId\": \"\"\n" +
-                "}";
-//
-        try {
-            //查询结果
-            String resultJson = api.billQuery(query);
-            //生产信息
-            List<JdProductionOrder> jdProductionOrders = JSON.parseArray(resultJson, JdProductionOrder.class);
-            //查询系统中的订单信息
-            ProductionPlanningManagement productionPlanningManagement1=new ProductionPlanningManagement();
-            productionPlanningManagement1.setIsWeldSheet("1");
-            List<ProductionPlanningManagement> productionPlanningManagements = productionPlanningManagementMapper.selectProductionPlanningManagementList(productionPlanningManagement1);
-            List<String> collectTwo = productionPlanningManagements.stream().map(ProductionPlanningManagement::getOrderNumber).collect(Collectors.toSet())
-                    .stream().collect(Collectors.toList());
-
-
-            Map<String, List<JdProductionOrder>> groupedByDemandDocument = jdProductionOrders.stream()
-                    .filter(item -> !collectTwo.contains(item.getDemandDocument()))
-                    .collect(Collectors.groupingBy(JdProductionOrder::getDemandDocument));
-            DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
-            if(groupedByDemandDocument.size()>0){
-                //订单循环
-                groupedByDemandDocument.forEach((k,v)->{
-                    ProductionPlanningManagement productionPlanningManagement=new ProductionPlanningManagement();
-                    //编号订单号
-                    productionPlanningManagement.setOrderNumber(k);
-                    //计划编号
-                    String planNumnber = generator.generateCommissionNumber();
-                    productionPlanningManagement.setPlanNumber(planNumnber);
-                    //计算订单的最大完成时间
-//                    Optional<LocalDateTime> maxCompletionTime = v.stream()
-//                            .map(item -> LocalDateTime.parse(item.getCompletionTime(), DateTimeFormatter.ISO_LOCAL_DATE_TIME))
-//                            .max(Comparator.naturalOrder());
-//                    maxCompletionTime.ifPresent(maxTime ->{
-//                        System.out.println("最大的时间: " + maxTime);
-//                        String format1 = maxTime.format(formatter);
-//                        productionPlanningManagement.setCompletionTime(format1);//订单的最大完成时间
-//                    });
-                    productionPlanningManagement.setPlanType("0"); //待生产
-                    productionPlanningManagement.setTaskStatus("4");//待排产
-                    productionPlanningManagement.setIsWeldSheet("1");//焊接订单
-                    if(StringUtils.isNotNull(v.get(0).getCompletionTime())){
-                        productionPlanningManagement.setCompletionTime(v.get(0).getCompletionTime());//完成时间
-                    }
-                    //备注
-                    if(StringUtils.isNotNull(v.get(0).getRemark())){
-                        productionPlanningManagement.setRemark(v.get(0).getRemark()); //备注
-                    }
-                    //单据类型
-                    if(StringUtils.isNotNull(v.get(0).getDocumentTyep())){
-                        productionPlanningManagement.setOrderType(v.get(0).getDocumentTyep()); //单据类型
-                    }
-                    //订单的创建时间
-                    productionPlanningManagement.setCreationtimeString(v.get(0).getCreationtimeString());//单据的创建时间
-                    //特殊要求
-                    if(StringUtils.isNotNull(v.get(0).getTsyq())){
-                        productionPlanningManagement.setSpecialRequirements(v.get(0).getTsyq());//特殊要求
-                    }
-
-                    //编号订单号
-                    List<Map> mapList = this.jdSalesOrderInfoS(k);//订单详情信息
-                    String fDeliveryDate;
-                    if(mapList.size()>0){
-                        fDeliveryDate = mapList.get(0).get("FDeliveryDate").toString();
-                    } else {
-                        fDeliveryDate = "";
-                    }
-                    //拿到了关于这个订单的销售订单
-                    if(mapList.size()>0){
-                        if(StringUtils.isNotNull(mapList.get(0).get("F.PONP.Text"))){
-                            productionPlanningManagement.setContractNumber(mapList.get(0).get("F.PONP.Text").toString());
-                        }
-                        productionPlanningManagement.setCompletionTime(fDeliveryDate);
-                        //======处理基本的订单信息
-                        productionPlanningManagementMapper.insertProductionPlanningManagement(productionPlanningManagement);
-                        v.forEach(a->{
-                            PlanTaskDetails planTaskDetails=new PlanTaskDetails();
-                            planTaskDetails.setDemandDocument(a.getDocumentNumber());//需求单据号
-                            planTaskDetails.setPlanId(productionPlanningManagement.getId());//计划id
-                            planTaskDetails.setMaterialId(a.getMaterialCode());//原材料编码
-                            planTaskDetails.setMaterialName(a.getMaterialName());//名称
-                            planTaskDetails.setQuantity(a.getQuantity());//数量
-//                            planTaskDetails.setTimeOfRequest(a.getCompletionTime());//要货时间
-                            planTaskDetails.setModelNumber(a.getModelNumber());//型号
-                            planTaskDetails.setSpecification(a.getSpecification());//规格
-                            planTaskDetails.setMaterialUnit(a.getUnit());//单位
-                            planTaskDetails.setPower(a.getGl());//功率
-                            planTaskDetails.setVoltage(a.getDianYaPinLv());//电压频率
-                            planTaskDetails.setColour(a.getYanse());//颜色
-                            planTaskDetails.setMingpai(a.getMingpai());//铭牌
-                            planTaskDetails.setShuomingshu(a.getShuomingshu());//说明书
-                            planTaskDetails.setHegezheng(a.getHegezheng());//合格证
-                            planTaskDetails.setBaozhuangxiang(a.getBaozhuangxiang());//包装箱
-                            planTaskDetails.setSwitchBox(a.getKaiguanxiang());//开关箱
-                            planTaskDetails.setScheduledCommencement(a.getFPlanStartDate()); //计划开始时间
-                            planTaskDetails.setScheduledCompletion(a.getFPlanFinishDate()); //计划完工时间
-                            planTaskDetails.setRemark(a.getRemark());
-                            if(StringUtils.isNotNull(a.getDocumentDate())){
-                                SimpleDateFormat formatter1= new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
-                                String formattedDate = formatter1.format(a.getDocumentDate());
-                                planTaskDetails.setTimeOfRequest(formattedDate);
-                            }
-
-                            planTaskDetailsMapper.insertPlanTaskDetails(planTaskDetails);
-                        });
-                    }
-                });
-                //处理订单序列号问题
-                groupedByDemandDocument.forEach((k,v)->{
-                    String stringQuery="{\n" +
-                            "    \"FormId\": \"PRD_MO\",\n" +
-                            "    \"FieldKeys\": \"FBillNo,FSNQty1,FSaleOrderNo,FSerialNo\",\n" +
-                            "    \"FilterString\": [{\"Left\":\"\",\"FieldName\":\"FMaterialId.FNumber\",\"Compare\":\"34\",\"Value\":\"焊\",\"Right\":\"\",\"Logic\":0},{\"Left\":\"\",\"FieldName\":\"FStatus\",\"Compare\":\"105\",\"Value\":\"4\",\"Right\":\"\",\"Logic\":0},{\"Left\":\"\",\"FieldName\":\"FSaleOrderNo\",\"Compare\":\"67\",\"Value\":\""+k+"\",\"Right\":\"\",\"Logic\":0}],\n" +
-                            "    \"OrderString\": \"\",\n" +
-                            "    \"TopRowCount\": 0,\n" +
-                            "    \"StartRow\": 0,\n" +
-                            "    \"Limit\": 2000,\n" +
-                            "    \"SubSystemId\": \"\"\n" +
-                            "}";
-                    try {
-                        String xlhString = api.billQuery(stringQuery);
-                        if(!xlhString.equals("[]")){
-                            List<ProductionCardFlowVo> mapList1 = JSON.parseArray(xlhString,  ProductionCardFlowVo.class);
-                            int i = productionCardFlowMapper.insertProductionCardFlowBatchVo(mapList1);
-                        }
-                    } catch (Exception e) {
-                        throw new RuntimeException(e);
-                    }
-                });
-            }
-        } catch (Exception e) {
-            throw new RuntimeException(e);
-        }
-        return  AjaxResult.success();
-    }
-    /**
-     * 拉取焊接
+     * 拉取焊接订单ERP数据
      */
     @Override
     public  AjaxResult pullWeldProductionOrder(){
-         //金蝶工具key
-        K3CloudApi api = new K3CloudApi();
-        // 获取当前时间
-        LocalDateTime now = LocalDateTime.now();
-        System.out.println("当前时间: " + now);
-        // 减去三个月
-        LocalDateTime threeMonthsAgo = now.minusMonths(3);
-        System.out.println("三个月前的时间: " + threeMonthsAgo);
-        LocalDateTime localDateTime1 = threeMonthsAgo.withMinute(0).withSecond(0).withNano(0);
-        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
-        String format = localDateTime1.format(formatter);
-        //定义查询条件
-        String query="{\n" +
-                "    \"FormId\": \"PRD_MO\",\n" +
-                "    \"FieldKeys\": \"FDescription,F_PONP_teshuyaoqiu,FBillNo,FBillType,FDate,FDocumentStatus," +
-                "FProductType,FMaterialId,FWorkShopID0,FQty,FStatus,,FSaleOrderNo,FPickMtrlStatus," +
-                "FMaterialId.FNumber,FMaterialName,F_PONP_BaseProperty,FSpecification,FUnitId.FName,F_PONP_yanse,F_PONP_mingpai,F_PONP_hegezheng.FDataValue," +
-                "F_PONP_shuomingshu.FDataValue,F_PONP_KaiGuanXiang,F_PONP_baozhuangxiang,F_PONP_GongLv,F_PONP_XQRQ,FDate,FPlanStartDate,FPlanFinishDate\",\n" +
-                "    \"FilterString\": [{\"Left\":\"\",\"FieldName\":\"FMaterialId.FNumber\",\"Compare\":\"17\",\"Value\":\"焊\",\"Right\":\"\",\"Logic\":0}," +
-                "{\"Left\":\"\",\"FieldName\":\"FCreateDate\",\"Compare\":\"39\",\"Value\":\""+format+"\",\"Right\":\"\",\"Logic\":0}],\n" +
-                "    \"OrderString\": \"\",\n" +
-                "    \"TopRowCount\": 0,\n" +
-                "    \"StartRow\": 0,\n" +
-                "    \"Limit\": 5000,\n" +
-                "    \"SubSystemId\": \"\"\n" +
-                "}";
-        int startRow = 0; // 起始行号
-        int limit = 5000; // 每次查询的数量
-        // 更新查询条件中的起始行号
-        //查询条件
-        Map<String, Object> map = JSON.parseObject(query, Map.class);
-        List<JdProductionOrder> jdProductionOrders;
-        boolean flag = true;
-        try {
-            do {
+        Boolean aTrue = stringRedisTemplate.opsForValue().setIfAbsent("fjqy:hjd:pulled", "true");
+        if (aTrue) {
+                 //金蝶工具key
+                K3CloudApi api = new K3CloudApi();
+                // 获取当前时间
+                LocalDateTime now = LocalDateTime.now();
+                System.out.println("当前时间: " + now);
+                // 减去三个月
+                LocalDateTime threeMonthsAgo = now.minusMonths(3);
+                System.out.println("三个月前的时间: " + threeMonthsAgo);
+                LocalDateTime localDateTime1 = threeMonthsAgo.withMinute(0).withSecond(0).withNano(0);
+                DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
+                String format = localDateTime1.format(formatter);
+                //定义查询条件
+                String query="{\n" +
+                        "    \"FormId\": \"PRD_MO\",\n" +
+                        "    \"FieldKeys\": \"FDescription,F_PONP_teshuyaoqiu,FBillNo,FBillType,FDate,FDocumentStatus," +
+                        "FProductType,FMaterialId,FWorkShopID0,FQty,FStatus,,FSaleOrderNo,FPickMtrlStatus," +
+                        "FMaterialId.FNumber,FMaterialName,F_PONP_BaseProperty,FSpecification,FUnitId.FName,F_PONP_yanse,F_PONP_mingpai,F_PONP_hegezheng.FDataValue," +
+                        "F_PONP_shuomingshu.FDataValue,F_PONP_KaiGuanXiang,F_PONP_baozhuangxiang,F_PONP_GongLv,F_PONP_XQRQ,FDate,FPlanStartDate,FPlanFinishDate\",\n" +
+                        "    \"FilterString\": [{\"Left\":\"\",\"FieldName\":\"FMaterialId.FNumber\",\"Compare\":\"17\",\"Value\":\"焊\",\"Right\":\"\",\"Logic\":0}," +
+                        "{\"Left\":\"\",\"FieldName\":\"FCreateDate\",\"Compare\":\"39\",\"Value\":\""+format+"\",\"Right\":\"\",\"Logic\":0}],\n" +
+                        "    \"OrderString\": \"\",\n" +
+                        "    \"TopRowCount\": 0,\n" +
+                        "    \"StartRow\": 0,\n" +
+                        "    \"Limit\": 5000,\n" +
+                        "    \"SubSystemId\": \"\"\n" +
+                        "}";
+                int startRow = 0; // 起始行号
+                int limit = 5000; // 每次查询的数量
                 // 更新查询条件中的起始行号
-                map.put("StartRow", startRow);
-                //查询结果
-                String resultJson = api.billQuery(JSON.toJSONString(map));
-                if (resultJson.isEmpty()||resultJson.equals("[]")) {
-                    // 处理空结果的情况
-                    flag = false;
-                }else {
-                    //生产信息
-                   jdProductionOrders = JSON.parseArray(resultJson, JdProductionOrder.class);
-                    //查询系统中的订单信息
-                    ProductionPlanningManagement productionPlanningManagement1=new ProductionPlanningManagement();
-                    productionPlanningManagement1.setIsWeldSheet("2");
-                    List<ProductionPlanningManagement> productionPlanningManagements = productionPlanningManagementMapper.selectProductionPlanningManagementList(productionPlanningManagement1);
-
-                    List<String> collectTwo = productionPlanningManagements.stream().map(ProductionPlanningManagement::getOrderNumber).collect(Collectors.toSet())
-                            .stream().collect(Collectors.toList());
-                    // 过滤掉 collectTwo 中包含的需求文档编号,并按 demandDocument 分组
-                    Map<String, List<JdProductionOrder>> groupedByDemandDocument = jdProductionOrders.stream()
-                            .filter(item -> !collectTwo.contains(item.getDemandDocument()))
-                            .collect(Collectors.groupingBy(JdProductionOrder::getDemandDocument));
-                    if(groupedByDemandDocument.size()>0){
-                        //订单循环
-                        groupedByDemandDocument.forEach((k,v)->{
-                            //计划编号
-                            String planNumnber = generator.generateCommissionNumber();
-                            //订单号
-                            ProductionPlanningManagement productionPlanningManagement=new ProductionPlanningManagement();
-                            productionPlanningManagement.setOrderNumber(k); //订单编号
-                            productionPlanningManagement.setPlanNumber(planNumnber);//计划号
-                            productionPlanningManagement.setPlanType("0"); //待生产
-                            productionPlanningManagement.setTaskStatus("4");//待排产
-                            productionPlanningManagement.setIsWeldSheet("2");//焊接订单
-//                            //计算订单的最大完成时间
-//                            Optional<LocalDateTime> maxCompletionTime = v.stream()
-//                                    .map(item -> LocalDateTime.parse(item.getCompletionTime(), DateTimeFormatter.ISO_LOCAL_DATE_TIME))
-//                                    .max(Comparator.naturalOrder());
-//                            maxCompletionTime.ifPresent(maxTime ->{
-//                                System.out.println("最大的时间: " + maxTime);
-//                                String format1 = maxTime.format(formatter);
-//                                productionPlanningManagement.setCompletionTime(format1);//订单的最大完成时间
-//                            });
-                            //备注
-                            if(StringUtils.isNotNull(v.get(0).getRemark())){
-                                productionPlanningManagement.setRemark(v.get(0).getRemark()); //备注
-                            }
-                            //订单的创建时间
-                            productionPlanningManagement.setCreationtimeString(v.get(0).getCreationtimeString());//单据的创建时间
-                            //特殊要求
-                            if(StringUtils.isNotNull(v.get(0).getTsyq())){
-                                productionPlanningManagement.setSpecialRequirements(v.get(0).getTsyq());//特殊要求
-                            }
-                            //单据类型
-                            if(StringUtils.isNotNull(v.get(0).getDocumentTyep())){
-                                productionPlanningManagement.setOrderType(v.get(0).getDocumentTyep()); //单据类型
-                            }
+                //查询条件
+                Map<String, Object> map = JSON.parseObject(query, Map.class);
+                List<JdProductionOrder> jdProductionOrders;
+                boolean flag = true;
+                try {
+                    do {
+                        // 更新查询条件中的起始行号
+                        map.put("StartRow", startRow);
+                        //查询结果
+                        String resultJson = api.billQuery(JSON.toJSONString(map));
+                        if (resultJson.isEmpty()||resultJson.equals("[]")) {
+                            // 处理空结果的情况
+                            flag = false;
+                        }else {
+                            //生产信息
+                           jdProductionOrders = JSON.parseArray(resultJson, JdProductionOrder.class);
+                            //查询系统中的订单信息
+                            ProductionPlanningManagement productionPlanningManagement1=new ProductionPlanningManagement();
+                            productionPlanningManagement1.setIsWeldSheet("2");
+                            List<ProductionPlanningManagement> productionPlanningManagements = productionPlanningManagementMapper.selectProductionPlanningManagementList(productionPlanningManagement1);
+
+                            List<String> collectTwo = productionPlanningManagements.stream().map(ProductionPlanningManagement::getOrderNumber).collect(Collectors.toSet())
+                                    .stream().collect(Collectors.toList());
+                            // 过滤掉 collectTwo 中包含的需求文档编号,并按 demandDocument 分组
+                            Map<String, List<JdProductionOrder>> groupedByDemandDocument = jdProductionOrders.stream()
+                                    .filter(item -> !collectTwo.contains(item.getDemandDocument()))
+                                    .collect(Collectors.groupingBy(JdProductionOrder::getDemandDocument));
+                            if(groupedByDemandDocument.size()>0){
+                                //订单循环
+                                groupedByDemandDocument.forEach((k,v)->{
+                                    //计划编号
+                                    String planNumnber = generator.generateCommissionNumber();
+                                    //订单号
+                                    ProductionPlanningManagement productionPlanningManagement=new ProductionPlanningManagement();
+                                    productionPlanningManagement.setOrderNumber(k); //订单编号
+                                    productionPlanningManagement.setPlanNumber(planNumnber);//计划号
+                                    productionPlanningManagement.setPlanType("0"); //待生产
+                                    productionPlanningManagement.setTaskStatus("4");//待排产
+                                    productionPlanningManagement.setIsWeldSheet("2");//焊接订单
+                                    //备注
+                                    if(StringUtils.isNotNull(v.get(0).getRemark())){
+                                        productionPlanningManagement.setRemark(v.get(0).getRemark()); //备注
+                                    }
+                                    //订单的创建时间
+                                    productionPlanningManagement.setCreationtimeString(v.get(0).getCreationtimeString());//单据的创建时间
+                                    //特殊要求
+                                    if(StringUtils.isNotNull(v.get(0).getTsyq())){
+                                        productionPlanningManagement.setSpecialRequirements(v.get(0).getTsyq());//特殊要求
+                                    }
+                                    //单据类型
+                                    if(StringUtils.isNotNull(v.get(0).getDocumentTyep())){
+                                        productionPlanningManagement.setOrderType(v.get(0).getDocumentTyep()); //单据类型
+                                    }
 
-                            //编号订单号
-                            List<Map> mapList = this.jdSalesOrderInfoS(k);//订单详情信息
-                            String fDeliveryDate;
-                            if(mapList.size()>0){
-                                fDeliveryDate = mapList.get(0).get("FDeliveryDate").toString();
-                            } else {
-                                fDeliveryDate = "";
-                            }
-                            //拿到了关于这个订单的销售订单
-                            if(mapList.size()>0){
-                                if(StringUtils.isNotNull(mapList.get(0).get("F.PONP.Text"))){
-                                    productionPlanningManagement.setContractNumber(mapList.get(0).get("F.PONP.Text").toString());
-                                }
-                                productionPlanningManagement.setCompletionTime(fDeliveryDate);
-                                //======处理基本的订单信息
-                                productionPlanningManagementMapper.insertProductionPlanningManagement(productionPlanningManagement);
-                                v.forEach(a->{
-                                    PlanTaskDetails planTaskDetails=new PlanTaskDetails();
-                                    planTaskDetails.setDemandDocument(a.getDocumentNumber());//需求单据号
-                                    planTaskDetails.setPlanId(productionPlanningManagement.getId());//计划id
-                                    planTaskDetails.setMaterialId(a.getMaterialCode());//原材料编码
-                                    planTaskDetails.setMaterialName(a.getMaterialName());//名称
-                                    planTaskDetails.setQuantity(a.getQuantity());//数量
-//                                    planTaskDetails.setTimeOfRequest(a.getCompletionTime());//要货时间
-                                    planTaskDetails.setModelNumber(a.getModelNumber());//型号
-                                    planTaskDetails.setSpecification(a.getSpecification());//规格
-                                    planTaskDetails.setMaterialUnit(a.getUnit());//单位
-                                    planTaskDetails.setPower(a.getGl());//功率
-                                    planTaskDetails.setVoltage(a.getDianYaPinLv());//电压频率
-                                    planTaskDetails.setColour(a.getYanse());//颜色
-                                    planTaskDetails.setMingpai(a.getMingpai());//铭牌
-                                    planTaskDetails.setShuomingshu(a.getShuomingshu());//说明书
-                                    planTaskDetails.setHegezheng(a.getHegezheng());//合格证
-                                    planTaskDetails.setBaozhuangxiang(a.getBaozhuangxiang());//包装箱
-                                    planTaskDetails.setSwitchBox(a.getKaiguanxiang());//开关箱
-                                    planTaskDetails.setScheduledCommencement(a.getFPlanStartDate()); //计划开始时间
-                                    planTaskDetails.setScheduledCompletion(a.getFPlanFinishDate()); //计划完工时间
-                                    planTaskDetails.setRemark(a.getRemark());
-                                    if(StringUtils.isNotNull(a.getDocumentDate())){
-                                        SimpleDateFormat formatter1= new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
-                                        String formattedDate = formatter1.format(a.getDocumentDate());
-                                        planTaskDetails.setTimeOfRequest(formattedDate);//单据日期
+                                    //编号订单号
+                                    List<Map> mapList = this.jdSalesOrderInfoS(k);//订单详情信息
+                                    String fDeliveryDate;
+                                    if(mapList.size()>0){
+                                        fDeliveryDate = mapList.get(0).get("FDeliveryDate").toString();
+                                    } else {
+                                        fDeliveryDate = "";
+                                    }
+                                    //拿到了关于这个订单的销售订单
+                                    if(mapList.size()>0){
+                                        if(StringUtils.isNotNull(mapList.get(0).get("F.PONP.Text"))){
+                                            productionPlanningManagement.setContractNumber(mapList.get(0).get("F.PONP.Text").toString());
+                                        }
+                                        productionPlanningManagement.setCompletionTime(fDeliveryDate);
+                                        //======处理基本的订单信息
+                                        productionPlanningManagementMapper.insertProductionPlanningManagement(productionPlanningManagement);
+                                        v.forEach(a->{
+                                            PlanTaskDetails planTaskDetails=new PlanTaskDetails();
+                                            planTaskDetails.setDemandDocument(a.getDocumentNumber());//需求单据号
+                                            planTaskDetails.setPlanId(productionPlanningManagement.getId());//计划id
+                                            planTaskDetails.setMaterialId(a.getMaterialCode());//原材料编码
+                                            planTaskDetails.setMaterialName(a.getMaterialName());//名称
+                                            planTaskDetails.setQuantity(a.getQuantity());//数量
+        //                                    planTaskDetails.setTimeOfRequest(a.getCompletionTime());//要货时间
+                                            planTaskDetails.setModelNumber(a.getModelNumber());//型号
+                                            planTaskDetails.setSpecification(a.getSpecification());//规格
+                                            planTaskDetails.setMaterialUnit(a.getUnit());//单位
+                                            planTaskDetails.setPower(a.getGl());//功率
+                                            planTaskDetails.setVoltage(a.getDianYaPinLv());//电压频率
+                                            planTaskDetails.setColour(a.getYanse());//颜色
+                                            planTaskDetails.setMingpai(a.getMingpai());//铭牌
+                                            planTaskDetails.setShuomingshu(a.getShuomingshu());//说明书
+                                            planTaskDetails.setHegezheng(a.getHegezheng());//合格证
+                                            planTaskDetails.setBaozhuangxiang(a.getBaozhuangxiang());//包装箱
+                                            planTaskDetails.setSwitchBox(a.getKaiguanxiang());//开关箱
+                                            planTaskDetails.setScheduledCommencement(a.getFPlanStartDate()); //计划开始时间
+                                            planTaskDetails.setScheduledCompletion(a.getFPlanFinishDate()); //计划完工时间
+                                            planTaskDetails.setRemark(a.getRemark());
+                                            if(StringUtils.isNotNull(a.getDocumentDate())){
+                                                SimpleDateFormat formatter1= new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+                                                String formattedDate = formatter1.format(a.getDocumentDate());
+                                                planTaskDetails.setTimeOfRequest(formattedDate);//单据日期
+                                            }
+                                            planTaskDetailsMapper.insertPlanTaskDetails(planTaskDetails);
+                                        });
                                     }
-                                    planTaskDetailsMapper.insertPlanTaskDetails(planTaskDetails);
                                 });
                             }
-                        });
-                    }
-                    System.out.println(1);
-                    if (jdProductionOrders.size() < 5000) {
-                        flag = false;
-                    }
-                    // 更新起始行号
-                    startRow += limit;
-                    // 如果返回的数据量小于5000,说明已经没有更多的数据,结束循环
+                            System.out.println(1);
+                            if (jdProductionOrders.size() < 5000) {
+                                flag = false;
+                            }
+                            // 更新起始行号
+                            startRow += limit;
+                            // 如果返回的数据量小于5000,说明已经没有更多的数据,结束循环
+                        }
+                    } while (flag);
+                } catch (Exception e) {
+                    stringRedisTemplate.delete("fjqy:hjd:pulled");
+                    throw new RuntimeException(e);
                 }
-            } while (flag);
-
-//
-//            //生产信息
-//            List<JdProductionOrder> jdProductionOrders = JSON.parseArray(resultJson, JdProductionOrder.class);
-//
-//
-//            //查询系统中的订单信息
-//            ProductionPlanningManagement productionPlanningManagement1 = new ProductionPlanningManagement();
-//            productionPlanningManagement1.setIsWeldSheet("2");
-//            List<ProductionPlanningManagement> productionPlanningManagements = productionPlanningManagementMapper.selectProductionPlanningManagementList(productionPlanningManagement1);
-//
-//            List<String> collectTwo = productionPlanningManagements.stream().map(ProductionPlanningManagement::getOrderNumber).collect(Collectors.toSet())
-//                    .stream().collect(Collectors.toList());
-//
-////            List<String> cj= collectOne.stream().filter(item -> !collectTwo.contains(item)).collect(Collectors.toList());
-//            //分组
-//            // 按照订单号分组并去重
-////            Map<String, JdProductionOrder> groupedByDemandDocument = jdProductionOrders.stream().filter(item->!collectTwo.contains(item.getDemandDocument()))
-////                    .collect(Collectors.toMap(
-////                            JdProductionOrder::getDemandDocument,
-////                            order -> order,
-////                            (existing, replacement) -> existing // 保留第一个出现的订单
-////                    ));
-//            // 过滤掉 collectTwo 中包含的需求文档编号,并按 demandDocument 分组
-//            Map<String, List<JdProductionOrder>> groupedByDemandDocument = jdProductionOrders.stream()
-//                    .filter(item -> !collectTwo.contains(item.getDemandDocument()))
-//                    .collect(Collectors.groupingBy(JdProductionOrder::getDemandDocument));
-//            if (groupedByDemandDocument.size() > 0) {
-//                //订单循环
-//                groupedByDemandDocument.forEach((k, v) -> {
-//                    //计划编号
-//                    String planNumnber = generator.generateCommissionNumber();
-//                    //订单号
-//                    ProductionPlanningManagement productionPlanningManagement = new ProductionPlanningManagement();
-//                    productionPlanningManagement.setOrderNumber(k); //订单编号
-//                    productionPlanningManagement.setPlanNumber(planNumnber);//计划号
-//                    productionPlanningManagement.setPlanType("0"); //待生产
-//                    productionPlanningManagement.setTaskStatus("2");//待排产
-//                    productionPlanningManagement.setIsWeldSheet("2");//焊接订单
-//                    //计算订单的最大完成时间
-//                    Optional<LocalDateTime> maxCompletionTime = v.stream()
-//                            .map(item -> LocalDateTime.parse(item.getCompletionTime(), DateTimeFormatter.ISO_LOCAL_DATE_TIME))
-//                            .max(Comparator.naturalOrder());
-//
-//                    maxCompletionTime.ifPresent(maxTime -> {
-//                        System.out.println("最大的时间: " + maxTime);
-//                        String format1 = maxTime.format(formatter);
-//                        productionPlanningManagement.setCompletionTime(format1);//订单的最大完成时间
-//                    });
-//                    //备注
-//                    if (StringUtils.isNotNull(v.get(0).getRemark())) {
-//                        productionPlanningManagement.setRemark(v.get(0).getRemark()); //备注
-//                    }
-//                    //订单的创建时间
-//                    productionPlanningManagement.setCreationtimeString(v.get(0).getCreationtimeString());//单据的创建时间
-//                    //特殊要求
-//                    if (StringUtils.isNotNull(v.get(0).getTsyq())) {
-//                        productionPlanningManagement.setSpecialRequirements(v.get(0).getTsyq());//特殊要求
-//                    }
-//
-//
-//                    //编号订单号
-//                    List<Map> mapList = this.jdSalesOrderInfoS(k);//订单详情信息
-//
-//                    //拿到了关于这个订单的销售订单
-//                    if (mapList.size() > 0) {
-//                        if (StringUtils.isNotNull(mapList.get(0).get("F.PONP.Text"))) {
-//                            productionPlanningManagement.setContractNumber(mapList.get(0).get("F.PONP.Text").toString());
-//                        }
-//                        //======处理基本的订单信息
-//                        productionPlanningManagementMapper.insertProductionPlanningManagement(productionPlanningManagement);
-//                        v.forEach(a -> {
-//                            PlanTaskDetails planTaskDetails = new PlanTaskDetails();
-//                            planTaskDetails.setDemandDocument(a.getDocumentNumber());//需求单据号
-//                            planTaskDetails.setPlanId(productionPlanningManagement.getId());//计划id
-//                            planTaskDetails.setMaterialId(a.getMaterialCode());//原材料编码
-//                            planTaskDetails.setMaterialName(a.getMaterialName());//名称
-//                            planTaskDetails.setQuantity(a.getQuantity());//数量
-//                            planTaskDetails.setTimeOfRequest(a.getCompletionTime());//要货时间
-//                            planTaskDetails.setModelNumber(a.getModelNumber());//型号
-//                            planTaskDetails.setSpecification(a.getSpecification());//规格
-//                            planTaskDetails.setMaterialUnit(a.getUnit());//单位
-//                            planTaskDetails.setPower(a.getGl());//功率
-//                            planTaskDetails.setVoltage(a.getDianYaPinLv());//电压频率
-//                            planTaskDetails.setColour(a.getYanse());//颜色
-//                            planTaskDetails.setMingpai(a.getMingpai());//铭牌
-//                            planTaskDetails.setShuomingshu(a.getShuomingshu());//说明书
-//                            planTaskDetails.setHegezheng(a.getHegezheng());//合格证
-//                            planTaskDetails.setBaozhuangxiang(a.getBaozhuangxiang());//包装箱
-//                            planTaskDetails.setSwitchBox(a.getKaiguanxiang());//开关箱
-//                            planTaskDetails.setScheduledCommencement(a.getFPlanStartDate()); //计划开始时间
-//                            planTaskDetails.setScheduledCompletion(a.getFPlanFinishDate()); //计划完工时间
-//                            planTaskDetails.setRemark(a.getRemark());
-//                            planTaskDetailsMapper.insertPlanTaskDetails(planTaskDetails);
-//                        });
-//                    }
-//                });
-//            }
-        } catch (Exception e) {
-            throw new RuntimeException(e);
+                stringRedisTemplate.delete("fjqy:hjd:pulled");
+                return  AjaxResult.success("焊接单拉取成功");
+     }else {
+            System.out.println("定时任务正在执行请稍后在拉去");
+            return AjaxResult.success("定时任务正在执行请稍后在拉去");
         }
-        return  AjaxResult.success();
     }
 }

+ 63 - 0
zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/mapper/ProcedureListErpMapper.java

@@ -0,0 +1,63 @@
+package com.zkqy.amichi.mapper;
+
+import java.util.List;
+import com.zkqy.amichi.domain.ProcedureListErp;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * erp工序列表Mapper接口
+ * 
+ * @author ruoyi
+ * @date 2024-12-06
+ */
+@Mapper
+public interface ProcedureListErpMapper 
+{
+    /**
+     * 查询erp工序列表
+     * 
+     * @param id erp工序列表主键
+     * @return erp工序列表
+     */
+    public ProcedureListErp selectProcedureListErpById(Long id);
+
+    /**
+     * 查询erp工序列表列表
+     * 
+     * @param procedureListErp erp工序列表
+     * @return erp工序列表集合
+     */
+    public List<ProcedureListErp> selectProcedureListErpList(ProcedureListErp procedureListErp);
+
+    /**
+     * 新增erp工序列表
+     * 
+     * @param procedureListErp erp工序列表
+     * @return 结果
+     */
+    public int insertProcedureListErp(ProcedureListErp procedureListErp);
+
+    /**
+     * 修改erp工序列表
+     * 
+     * @param procedureListErp erp工序列表
+     * @return 结果
+     */
+    public int updateProcedureListErp(ProcedureListErp procedureListErp);
+
+    /**
+     * 删除erp工序列表
+     * 
+     * @param id erp工序列表主键
+     * @return 结果
+     */
+    public int deleteProcedureListErpById(Long id);
+
+    /**
+     * 批量删除erp工序列表
+     * 
+     * @param ids 需要删除的数据主键集合
+     * @return 结果
+     */
+    public int deleteProcedureListErpByIds(Long[] ids);
+}

+ 293 - 283
zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/scheduling/ScheduledBean.java

@@ -17,8 +17,10 @@ import com.zkqy.amichi.mapper.ProductionCardFlowMapper;
 import com.zkqy.amichi.mapper.ProductionPlanningManagementMapper;
 import com.zkqy.amichi.utils.AmichiCommissionNumberGenerator;
 import com.zkqy.common.core.domain.AjaxResult;
+import com.zkqy.common.core.redis.RedisCache;
 import com.zkqy.common.utils.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.redis.core.StringRedisTemplate;
 import org.springframework.scheduling.annotation.Scheduled;
 import org.springframework.stereotype.Component;
 import org.springframework.stereotype.Service;
@@ -45,8 +47,6 @@ public class ScheduledBean {
     @Autowired
     JdProductionOrderServiceImpl productionOrderService;
 
-    @Autowired
-    private JdProductionOrderMapper jdProductionOrderMapper;
     @Autowired
     private ProductionPlanningManagementMapper productionPlanningManagementMapper;
 
@@ -60,163 +60,169 @@ public class ScheduledBean {
     private ProductionCardFlowMapper productionCardFlowMapper;
 
     @Autowired
-    private JdMaterialInfoServiceImpl jdMaterialInfoService;
+    private RedisCache redisCache;
+
+    @Autowired
+    private StringRedisTemplate stringRedisTemplate;
+
 
     //============================正常计划数据定时拉取============================
     /**
-     * //        //物料基本信息--防止流转卡信息缺失
-     * //        AjaxResult ajaxResult = materialInfoService.pullMaterialBaseInfo();
-     * //        System.out.println(ajaxResult);
-     * //        //流转卡序列号信息
-     * //        AjaxResult ajaxResult1 = productionOrderService.jdProductionOrderPull();
-     * //        System.out.println(ajaxResult1);
-     * //        //焊接单数据信息
-     * //        AjaxResult ajaxResult2 = productionOrderService.pullWeldProductionOrder();
-     * //        System.out.println(ajaxResult2);
-     * //        System.out.println(Thread.currentThread().getName()+":run...");
+     * 物料基本信息--防止流转卡信息缺失
+     * 流转卡序列号信息
+     * 焊接单数据信息
      */
-//    @Scheduled(cron = "0 0/5 * * * ?", zone = "Asia/Shanghai")
+//    @Scheduled(cron = "0 0/4 * * * ?", zone = "Asia/Shanghai")
     public void printLog1(){
-        //物料基本数据
-        AjaxResult ajaxResult = this.pullMaterialBaseInfo();
-        //金蝶工具key
-        K3CloudApi api = new K3CloudApi();
-        //定义查询条件
-        String query="{\n" +
-                "    \"FormId\": \"PRD_MO\",\n" +
-                "    \"FieldKeys\": \"FDescription,F_PONP_teshuyaoqiu,FBillNo,FBillType,FDate,FDocumentStatus," +
-                "FProductType,FMaterialId,FWorkShopID0,FQty,FStatus,FSaleOrderNo,FPickMtrlStatus," +
-                "FMaterialId.FNumber,FMaterialName,F_PONP_BaseProperty,FSpecification,FUnitId.FName,F_PONP_yanse,F_PONP_mingpai,F_PONP_hegezheng.FDataValue," +
-                "F_PONP_shuomingshu.FDataValue,F_PONP_KaiGuanXiang,F_PONP_baozhuangxiang,F_PONP_GongLv,FPlanFinishDate,FPlanStartDate,F_PONP_XQRQ,FPlanStartDate,FPlanFinishDate\",\n" +
-                "    \"FilterString\": [{\"Left\":\"\",\"FieldName\":\"FMaterialId.FNumber\",\"Compare\":\"34\",\"Value\":\"焊\",\"Right\":\"\",\"Logic\":0},{\"Left\":\"\",\"FieldName\":\"FStatus\",\"Compare\":\"105\",\"Value\":\"4\",\"Right\":\"\",\"Logic\":0},{\"Left\":\"\",\"FieldName\":\"FCreateDate\",\"Compare\":\"13\",\"Value\":\"\",\"Right\":\"\",\"Logic\":0}],\n" +
-                "    \"OrderString\": \"\",\n" +
-                "    \"TopRowCount\": 0,\n" +
-                "    \"StartRow\": 0,\n" +
-                "    \"Limit\": 5000,\n" +
-                "    \"SubSystemId\": \"\"\n" +
-                "}";
+        Boolean aTrue = stringRedisTemplate.opsForValue().setIfAbsent("fjqy:ptd:pulled", "true");
+        if (aTrue) {
+            //物料基本数据
+            AjaxResult ajaxResult = this.pullMaterialBaseInfo();
+            //金蝶工具key
+            K3CloudApi api = new K3CloudApi();
+            //定义查询条件
+            String query="{\n" +
+                    "    \"FormId\": \"PRD_MO\",\n" +
+                    "    \"FieldKeys\": \"FDescription,F_PONP_teshuyaoqiu,FBillNo,FBillType,FDate,FDocumentStatus," +
+                    "FProductType,FMaterialId,FWorkShopID0,FQty,FStatus,FSaleOrderNo,FPickMtrlStatus," +
+                    "FMaterialId.FNumber,FMaterialName,F_PONP_BaseProperty,FSpecification,FUnitId.FName,F_PONP_yanse,F_PONP_mingpai,F_PONP_hegezheng.FDataValue," +
+                    "F_PONP_shuomingshu.FDataValue,F_PONP_KaiGuanXiang,F_PONP_baozhuangxiang,F_PONP_GongLv,FPlanFinishDate,FPlanStartDate,F_PONP_XQRQ,FPlanStartDate,FPlanFinishDate\",\n" +
+                    "    \"FilterString\": [{\"Left\":\"\",\"FieldName\":\"FMaterialId.FNumber\",\"Compare\":\"34\",\"Value\":\"焊\",\"Right\":\"\",\"Logic\":0},{\"Left\":\"\",\"FieldName\":\"FStatus\",\"Compare\":\"105\",\"Value\":\"4\",\"Right\":\"\",\"Logic\":0},{\"Left\":\"\",\"FieldName\":\"FCreateDate\",\"Compare\":\"13\",\"Value\":\"\",\"Right\":\"\",\"Logic\":0}],\n" +
+                    "    \"OrderString\": \"\",\n" +
+                    "    \"TopRowCount\": 0,\n" +
+                    "    \"StartRow\": 0,\n" +
+                    "    \"Limit\": 5000,\n" +
+                    "    \"SubSystemId\": \"\"\n" +
+                    "}";
 //
-        try {
-            //查询结果
-            String resultJson = api.billQuery(query);
-            //生产信息
-            List<JdProductionOrder> jdProductionOrders = JSON.parseArray(resultJson, JdProductionOrder.class);
-            //查询系统中的订单信息
-            ProductionPlanningManagement productionPlanningManagement1=new ProductionPlanningManagement();
-            productionPlanningManagement1.setIsWeldSheet("1");
-            List<ProductionPlanningManagement> productionPlanningManagements = productionPlanningManagementMapper.selectProductionPlanningManagementList(productionPlanningManagement1);
-            List<String> collectTwo = productionPlanningManagements.stream().map(ProductionPlanningManagement::getOrderNumber).collect(Collectors.toSet())
-                    .stream().collect(Collectors.toList());
+            try {
+                //查询结果
+                String resultJson = api.billQuery(query);
+                //生产信息
+                List<JdProductionOrder> jdProductionOrders = JSON.parseArray(resultJson, JdProductionOrder.class);
+                //查询系统中的订单信息
+                ProductionPlanningManagement productionPlanningManagement1=new ProductionPlanningManagement();
+                productionPlanningManagement1.setIsWeldSheet("1");
+                List<ProductionPlanningManagement> productionPlanningManagements = productionPlanningManagementMapper.selectProductionPlanningManagementList(productionPlanningManagement1);
+                List<String> collectTwo = productionPlanningManagements.stream().map(ProductionPlanningManagement::getOrderNumber).collect(Collectors.toSet())
+                        .stream().collect(Collectors.toList());
 
 
-            Map<String, List<JdProductionOrder>> groupedByDemandDocument = jdProductionOrders.stream()
-                    .filter(item -> !collectTwo.contains(item.getDemandDocument()))
-                    .collect(Collectors.groupingBy(JdProductionOrder::getDemandDocument));
-            DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
-            if(groupedByDemandDocument.size()>0){
-                //订单循环
-                groupedByDemandDocument.forEach((k,v)->{
-                    ProductionPlanningManagement productionPlanningManagement=new ProductionPlanningManagement();
-                    //编号订单号
-                    productionPlanningManagement.setOrderNumber(k);
-                    //计划编号
-                    String planNumnber = generator.generateCommissionNumber();
-                    productionPlanningManagement.setPlanNumber(planNumnber);
-                    productionPlanningManagement.setPlanType("0"); //待生产
-                    productionPlanningManagement.setTaskStatus("4");//待排产
-                    productionPlanningManagement.setIsWeldSheet("1");//焊接订单
-                    if(StringUtils.isNotNull(v.get(0).getCompletionTime())){
-                        productionPlanningManagement.setCompletionTime(v.get(0).getCompletionTime());//完成时间
-                    }
-                    //备注
-                    if(StringUtils.isNotNull(v.get(0).getRemark())){
-                        productionPlanningManagement.setRemark(v.get(0).getRemark()); //备注
-                    }
-                    //单据类型
-                    if(StringUtils.isNotNull(v.get(0).getDocumentTyep())){
-                        productionPlanningManagement.setOrderType(v.get(0).getDocumentTyep()); //单据类型
-                    }
-                    //订单的创建时间
-                    productionPlanningManagement.setCreationtimeString(v.get(0).getCreationtimeString());//单据的创建时间
-                    //特殊要求
-                    if(StringUtils.isNotNull(v.get(0).getTsyq())){
-                        productionPlanningManagement.setSpecialRequirements(v.get(0).getTsyq());//特殊要求
-                    }
+                Map<String, List<JdProductionOrder>> groupedByDemandDocument = jdProductionOrders.stream()
+                        .filter(item -> !collectTwo.contains(item.getDemandDocument()))
+                        .collect(Collectors.groupingBy(JdProductionOrder::getDemandDocument));
+                DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
+                if(groupedByDemandDocument.size()>0){
+                    //订单循环
+                    groupedByDemandDocument.forEach((k,v)->{
+                        ProductionPlanningManagement productionPlanningManagement=new ProductionPlanningManagement();
+                        //编号订单号
+                        productionPlanningManagement.setOrderNumber(k);
+                        //计划编号
+                        String planNumnber = generator.generateCommissionNumber();
+                        productionPlanningManagement.setPlanNumber(planNumnber);
+                        productionPlanningManagement.setPlanType("0"); //待生产
+                        productionPlanningManagement.setTaskStatus("4");//待排产
+                        productionPlanningManagement.setIsWeldSheet("1");//焊接订单
+                        if(StringUtils.isNotNull(v.get(0).getCompletionTime())){
+                            productionPlanningManagement.setCompletionTime(v.get(0).getCompletionTime());//完成时间
+                        }
+                        //备注
+                        if(StringUtils.isNotNull(v.get(0).getRemark())){
+                            productionPlanningManagement.setRemark(v.get(0).getRemark()); //备注
+                        }
+                        //单据类型
+                        if(StringUtils.isNotNull(v.get(0).getDocumentTyep())){
+                            productionPlanningManagement.setOrderType(v.get(0).getDocumentTyep()); //单据类型
+                        }
+                        //订单的创建时间
+                        productionPlanningManagement.setCreationtimeString(v.get(0).getCreationtimeString());//单据的创建时间
+                        //特殊要求
+                        if(StringUtils.isNotNull(v.get(0).getTsyq())){
+                            productionPlanningManagement.setSpecialRequirements(v.get(0).getTsyq());//特殊要求
+                        }
 
-                    //编号订单号
-                    List<Map> mapList = this.jdSalesOrderInfoS(k);//订单详情信息
-                    String fDeliveryDate;
-                    if(mapList.size()>0){
-                        fDeliveryDate = mapList.get(0).get("FDeliveryDate").toString();
-                    } else {
-                        fDeliveryDate = "";
-                    }
-                    //拿到了关于这个订单的销售订单
-                    if(mapList.size()>0){
-                        if(StringUtils.isNotNull(mapList.get(0).get("F.PONP.Text"))){
-                            productionPlanningManagement.setContractNumber(mapList.get(0).get("F.PONP.Text").toString());
+                        //编号订单号
+                        List<Map> mapList = this.jdSalesOrderInfoS(k);//订单详情信息
+                        String fDeliveryDate;
+                        if(mapList.size()>0){
+                            fDeliveryDate = mapList.get(0).get("FDeliveryDate").toString();
+                        } else {
+                            fDeliveryDate = "";
                         }
-                        productionPlanningManagement.setCompletionTime(fDeliveryDate);
-                        //======处理基本的订单信息
-                        productionPlanningManagementMapper.insertProductionPlanningManagement(productionPlanningManagement);
-                        v.forEach(a->{
-                            PlanTaskDetails planTaskDetails=new PlanTaskDetails();
-                            planTaskDetails.setDemandDocument(a.getDocumentNumber());//需求单据号
-                            planTaskDetails.setPlanId(productionPlanningManagement.getId());//计划id
-                            planTaskDetails.setMaterialId(a.getMaterialCode());//原材料编码
-                            planTaskDetails.setMaterialName(a.getMaterialName());//名称
-                            planTaskDetails.setQuantity(a.getQuantity());//数量
-//                            planTaskDetails.setTimeOfRequest(a.getCompletionTime());//要货时间
-                            planTaskDetails.setModelNumber(a.getModelNumber());//型号
-                            planTaskDetails.setSpecification(a.getSpecification());//规格
-                            planTaskDetails.setMaterialUnit(a.getUnit());//单位
-                            planTaskDetails.setPower(a.getGl());//功率
-                            planTaskDetails.setVoltage(a.getDianYaPinLv());//电压频率
-                            planTaskDetails.setColour(a.getYanse());//颜色
-                            planTaskDetails.setMingpai(a.getMingpai());//铭牌
-                            planTaskDetails.setShuomingshu(a.getShuomingshu());//说明书
-                            planTaskDetails.setHegezheng(a.getHegezheng());//合格证
-                            planTaskDetails.setBaozhuangxiang(a.getBaozhuangxiang());//包装箱
-                            planTaskDetails.setSwitchBox(a.getKaiguanxiang());//开关箱
-                            planTaskDetails.setScheduledCommencement(a.getFPlanStartDate()); //计划开始时间
-                            planTaskDetails.setScheduledCompletion(a.getFPlanFinishDate()); //计划完工时间
-                            planTaskDetails.setRemark(a.getRemark());
-                            if(StringUtils.isNotNull(a.getDocumentDate())){
-                                SimpleDateFormat formatter1= new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
-                                String formattedDate = formatter1.format(a.getDocumentDate());
-                                planTaskDetails.setTimeOfRequest(formattedDate);
+                        //拿到了关于这个订单的销售订单
+                        if(mapList.size()>0){
+                            if(StringUtils.isNotNull(mapList.get(0).get("F.PONP.Text"))){
+                                productionPlanningManagement.setContractNumber(mapList.get(0).get("F.PONP.Text").toString());
                             }
+                            productionPlanningManagement.setCompletionTime(fDeliveryDate);
+                            //======处理基本的订单信息
+                            productionPlanningManagementMapper.insertProductionPlanningManagement(productionPlanningManagement);
+                            v.forEach(a->{
+                                PlanTaskDetails planTaskDetails=new PlanTaskDetails();
+                                planTaskDetails.setDemandDocument(a.getDocumentNumber());//需求单据号
+                                planTaskDetails.setPlanId(productionPlanningManagement.getId());//计划id
+                                planTaskDetails.setMaterialId(a.getMaterialCode());//原材料编码
+                                planTaskDetails.setMaterialName(a.getMaterialName());//名称
+                                planTaskDetails.setQuantity(a.getQuantity());//数量
+//                            planTaskDetails.setTimeOfRequest(a.getCompletionTime());//要货时间
+                                planTaskDetails.setModelNumber(a.getModelNumber());//型号
+                                planTaskDetails.setSpecification(a.getSpecification());//规格
+                                planTaskDetails.setMaterialUnit(a.getUnit());//单位
+                                planTaskDetails.setPower(a.getGl());//功率
+                                planTaskDetails.setVoltage(a.getDianYaPinLv());//电压频率
+                                planTaskDetails.setColour(a.getYanse());//颜色
+                                planTaskDetails.setMingpai(a.getMingpai());//铭牌
+                                planTaskDetails.setShuomingshu(a.getShuomingshu());//说明书
+                                planTaskDetails.setHegezheng(a.getHegezheng());//合格证
+                                planTaskDetails.setBaozhuangxiang(a.getBaozhuangxiang());//包装箱
+                                planTaskDetails.setSwitchBox(a.getKaiguanxiang());//开关箱
+                                planTaskDetails.setScheduledCommencement(a.getFPlanStartDate()); //计划开始时间
+                                planTaskDetails.setScheduledCompletion(a.getFPlanFinishDate()); //计划完工时间
+                                planTaskDetails.setRemark(a.getRemark());
+                                if(StringUtils.isNotNull(a.getDocumentDate())){
+//                                SimpleDateFormat formatter1= new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+//                                String formattedDate = formatter1.format(a.getDocumentDate());
+                                    planTaskDetails.setTimeOfRequest(a.getDocumentDate());
+                                }
 
-                            planTaskDetailsMapper.insertPlanTaskDetails(planTaskDetails);
-                        });
-                    }
-                });
-                //处理订单序列号问题
-                groupedByDemandDocument.forEach((k,v)->{
-                    String stringQuery="{\n" +
-                            "    \"FormId\": \"PRD_MO\",\n" +
-                            "    \"FieldKeys\": \"FBillNo,FSNQty1,FSaleOrderNo,FSerialNo\",\n" +
-                            "    \"FilterString\": [{\"Left\":\"\",\"FieldName\":\"FMaterialId.FNumber\",\"Compare\":\"34\",\"Value\":\"焊\",\"Right\":\"\",\"Logic\":0},{\"Left\":\"\",\"FieldName\":\"FStatus\",\"Compare\":\"105\",\"Value\":\"4\",\"Right\":\"\",\"Logic\":0},{\"Left\":\"\",\"FieldName\":\"FSaleOrderNo\",\"Compare\":\"67\",\"Value\":\""+k+"\",\"Right\":\"\",\"Logic\":0}],\n" +
-                            "    \"OrderString\": \"\",\n" +
-                            "    \"TopRowCount\": 0,\n" +
-                            "    \"StartRow\": 0,\n" +
-                            "    \"Limit\": 2000,\n" +
-                            "    \"SubSystemId\": \"\"\n" +
-                            "}";
-                    try {
-                        String xlhString = api.billQuery(stringQuery);
-                        if(!xlhString.equals("[]")){
-                            List<ProductionCardFlowVo> mapList1 = JSON.parseArray(xlhString,  ProductionCardFlowVo.class);
-                            int i = productionCardFlowMapper.insertProductionCardFlowBatchVo(mapList1);
+                                planTaskDetailsMapper.insertPlanTaskDetails(planTaskDetails);
+                            });
                         }
-                    } catch (Exception e) {
-                        throw new RuntimeException(e);
-                    }
-                });
+                    });
+                    //处理订单序列号问题
+                    groupedByDemandDocument.forEach((k,v)->{
+                        String stringQuery="{\n" +
+                                "    \"FormId\": \"PRD_MO\",\n" +
+                                "    \"FieldKeys\": \"FBillNo,FSNQty1,FSaleOrderNo,FSerialNo\",\n" +
+                                "    \"FilterString\": [{\"Left\":\"\",\"FieldName\":\"FMaterialId.FNumber\",\"Compare\":\"34\",\"Value\":\"焊\",\"Right\":\"\",\"Logic\":0},{\"Left\":\"\",\"FieldName\":\"FStatus\",\"Compare\":\"105\",\"Value\":\"4\",\"Right\":\"\",\"Logic\":0},{\"Left\":\"\",\"FieldName\":\"FSaleOrderNo\",\"Compare\":\"67\",\"Value\":\""+k+"\",\"Right\":\"\",\"Logic\":0}],\n" +
+                                "    \"OrderString\": \"\",\n" +
+                                "    \"TopRowCount\": 0,\n" +
+                                "    \"StartRow\": 0,\n" +
+                                "    \"Limit\": 2000,\n" +
+                                "    \"SubSystemId\": \"\"\n" +
+                                "}";
+                        try {
+                            String xlhString = api.billQuery(stringQuery);
+                            if(!xlhString.equals("[]")){
+                                List<ProductionCardFlowVo> mapList1 = JSON.parseArray(xlhString,  ProductionCardFlowVo.class);
+                                int i = productionCardFlowMapper.insertProductionCardFlowBatchVo(mapList1);
+                            }
+                        } catch (Exception e) {
+                            throw new RuntimeException(e);
+                        }
+                    });
+                }
+            } catch (Exception e) {
+                stringRedisTemplate.delete("fjqy:ptd:pulled");
+                throw new RuntimeException(e);
             }
-        } catch (Exception e) {
-            throw new RuntimeException(e);
+            stringRedisTemplate.delete("fjqy:ptd:pulled");
+            System.out.println("删除了键");
+        }else {
+            System.out.println("数据正在拉取-本地定时不执行");
         }
+
     }
 
     //基础物料信息添加
@@ -338,151 +344,155 @@ public class ScheduledBean {
 
 
     //============================焊接计划数据定时拉取============================
-//    @Scheduled(cron = "0 0/10 * * * ?", zone = "Asia/Shanghai")
+//    @Scheduled(cron = "0 0/6 * * * ?", zone = "Asia/Shanghai")
     public void printLog2() {
-        //金蝶工具key
-        K3CloudApi api = new K3CloudApi();
-        //定义查询条件
-        String query = "{\n" +
-                "    \"FormId\": \"PRD_MO\",\n" +
-                "    \"FieldKeys\": \"FDescription,F_PONP_teshuyaoqiu,FBillNo,FBillType,FDate,FDocumentStatus," +
-                "FProductType,FMaterialId,FWorkShopID0,FQty,FStatus,,FSaleOrderNo,FPickMtrlStatus," +
-                "FMaterialId.FNumber,FMaterialName,F_PONP_BaseProperty,FSpecification,FUnitId.FName,F_PONP_yanse,F_PONP_mingpai,F_PONP_hegezheng.FDataValue," +
-                "F_PONP_shuomingshu.FDataValue,F_PONP_KaiGuanXiang,F_PONP_baozhuangxiang,F_PONP_GongLv,F_PONP_XQRQ,FDate,FPlanStartDate,FPlanFinishDate\",\n" +
-                "    \"FilterString\": [{\"Left\":\"\",\"FieldName\":\"FMaterialId.FNumber\",\"Compare\":\"17\",\"Value\":\"焊\",\"Right\":\"\",\"Logic\":0}," +
-                "{\"Left\":\"\",\"FieldName\":\"FCreateDate\",\"Compare\":\"13\",\"Value\":\"\",\"Right\":\"\",\"Logic\":0}],\n" +
-                "    \"OrderString\": \"\",\n" +
-                "    \"TopRowCount\": 0,\n" +
-                "    \"StartRow\": 0,\n" +
-                "    \"Limit\": 5000,\n" +
-                "    \"SubSystemId\": \"\"\n" +
-                "}";
-        int startRow = 0; // 起始行号
-        int limit = 5000; // 每次查询的数量
-        // 更新查询条件中的起始行号
-        //查询条件
-        Map<String, Object> map = JSON.parseObject(query, Map.class);
-        List<JdProductionOrder> jdProductionOrders;
-        boolean flag = true;
-        try {
-            do {
-                // 更新查询条件中的起始行号
-                map.put("StartRow", startRow);
-                //查询结果
-                String resultJson = api.billQuery(JSON.toJSONString(map));
-                if (resultJson.isEmpty() || resultJson.equals("[]")) {
-                    // 处理空结果的情况
-                    flag = false;
-                } else {
-                    //生产信息
-                    jdProductionOrders = JSON.parseArray(resultJson, JdProductionOrder.class);
-                    //查询系统中的订单信息
-                    ProductionPlanningManagement productionPlanningManagement1 = new ProductionPlanningManagement();
-                    productionPlanningManagement1.setIsWeldSheet("2");
-                    List<ProductionPlanningManagement> productionPlanningManagements = productionPlanningManagementMapper.selectProductionPlanningManagementList(productionPlanningManagement1);
+        Boolean aTrue = stringRedisTemplate.opsForValue().setIfAbsent("fjqy:hjd:pulled", "true");
+        if (aTrue) {
+            //金蝶工具key
+            K3CloudApi api = new K3CloudApi();
+            //定义查询条件
+            String query = "{\n" +
+                    "    \"FormId\": \"PRD_MO\",\n" +
+                    "    \"FieldKeys\": \"FDescription,F_PONP_teshuyaoqiu,FBillNo,FBillType,FDate,FDocumentStatus," +
+                    "FProductType,FMaterialId,FWorkShopID0,FQty,FStatus,,FSaleOrderNo,FPickMtrlStatus," +
+                    "FMaterialId.FNumber,FMaterialName,F_PONP_BaseProperty,FSpecification,FUnitId.FName,F_PONP_yanse,F_PONP_mingpai,F_PONP_hegezheng.FDataValue," +
+                    "F_PONP_shuomingshu.FDataValue,F_PONP_KaiGuanXiang,F_PONP_baozhuangxiang,F_PONP_GongLv,F_PONP_XQRQ,FDate,FPlanStartDate,FPlanFinishDate\",\n" +
+                    "    \"FilterString\": [{\"Left\":\"\",\"FieldName\":\"FMaterialId.FNumber\",\"Compare\":\"17\",\"Value\":\"焊\",\"Right\":\"\",\"Logic\":0}," +
+                    "{\"Left\":\"\",\"FieldName\":\"FCreateDate\",\"Compare\":\"13\",\"Value\":\"\",\"Right\":\"\",\"Logic\":0}],\n" +
+                    "    \"OrderString\": \"\",\n" +
+                    "    \"TopRowCount\": 0,\n" +
+                    "    \"StartRow\": 0,\n" +
+                    "    \"Limit\": 5000,\n" +
+                    "    \"SubSystemId\": \"\"\n" +
+                    "}";
+            int startRow = 0; // 起始行号
+            int limit = 5000; // 每次查询的数量
+            // 更新查询条件中的起始行号
+            //查询条件
+            Map<String, Object> map = JSON.parseObject(query, Map.class);
+            List<JdProductionOrder> jdProductionOrders;
+            boolean flag = true;
+            try {
+                do {
+                    // 更新查询条件中的起始行号
+                    map.put("StartRow", startRow);
+                    //查询结果
+                    String resultJson = api.billQuery(JSON.toJSONString(map));
+                    if (resultJson.isEmpty() || resultJson.equals("[]")) {
+                        // 处理空结果的情况
+                        flag = false;
+                    } else {
+                        //生产信息
+                        jdProductionOrders = JSON.parseArray(resultJson, JdProductionOrder.class);
+                        //查询系统中的订单信息
+                        ProductionPlanningManagement productionPlanningManagement1 = new ProductionPlanningManagement();
+                        productionPlanningManagement1.setIsWeldSheet("2");
+                        List<ProductionPlanningManagement> productionPlanningManagements = productionPlanningManagementMapper.selectProductionPlanningManagementList(productionPlanningManagement1);
 
-                    List<String> collectTwo = productionPlanningManagements.stream().map(ProductionPlanningManagement::getOrderNumber).collect(Collectors.toSet())
-                            .stream().collect(Collectors.toList());
-                    // 过滤掉 collectTwo 中包含的需求文档编号,并按 demandDocument 分组
-                    Map<String, List<JdProductionOrder>> groupedByDemandDocument = jdProductionOrders.stream()
-                            .filter(item -> !collectTwo.contains(item.getDemandDocument()))
-                            .collect(Collectors.groupingBy(JdProductionOrder::getDemandDocument));
-                    if (groupedByDemandDocument.size() > 0) {
-                        //订单循环
-                        groupedByDemandDocument.forEach((k, v) -> {
-                            //计划编号
-                            String planNumnber = generator.generateCommissionNumber();
-                            //订单号
-                            ProductionPlanningManagement productionPlanningManagement = new ProductionPlanningManagement();
-                            productionPlanningManagement.setOrderNumber(k); //订单编号
-                            productionPlanningManagement.setPlanNumber(planNumnber);//计划号
-                            productionPlanningManagement.setPlanType("0"); //待生产
-                            productionPlanningManagement.setTaskStatus("4");//待排产
-                            productionPlanningManagement.setIsWeldSheet("2");//焊接订单
-//                            //计算订单的最大完成时间
-//                            Optional<LocalDateTime> maxCompletionTime = v.stream()
-//                                    .map(item -> LocalDateTime.parse(item.getCompletionTime(), DateTimeFormatter.ISO_LOCAL_DATE_TIME))
-//                                    .max(Comparator.naturalOrder());
-//                            maxCompletionTime.ifPresent(maxTime ->{
-//                                System.out.println("最大的时间: " + maxTime);
-//                                String format1 = maxTime.format(formatter);
-//                                productionPlanningManagement.setCompletionTime(format1);//订单的最大完成时间
-//                            });
-                            //备注
-                            if (StringUtils.isNotNull(v.get(0).getRemark())) {
-                                productionPlanningManagement.setRemark(v.get(0).getRemark()); //备注
-                            }
-                            //订单的创建时间
-                            productionPlanningManagement.setCreationtimeString(v.get(0).getCreationtimeString());//单据的创建时间
-                            //特殊要求
-                            if (StringUtils.isNotNull(v.get(0).getTsyq())) {
-                                productionPlanningManagement.setSpecialRequirements(v.get(0).getTsyq());//特殊要求
-                            }
-                            //单据类型
-                            if (StringUtils.isNotNull(v.get(0).getDocumentTyep())) {
-                                productionPlanningManagement.setOrderType(v.get(0).getDocumentTyep()); //单据类型
-                            }
+                        List<String> collectTwo = productionPlanningManagements.stream().map(ProductionPlanningManagement::getOrderNumber).collect(Collectors.toSet())
+                                .stream().collect(Collectors.toList());
+                        // 过滤掉 collectTwo 中包含的需求文档编号,并按 demandDocument 分组
+                        Map<String, List<JdProductionOrder>> groupedByDemandDocument = jdProductionOrders.stream()
+                                .filter(item -> !collectTwo.contains(item.getDemandDocument()))
+                                .collect(Collectors.groupingBy(JdProductionOrder::getDemandDocument));
+                        if (groupedByDemandDocument.size() > 0) {
+                            //订单循环
+                            groupedByDemandDocument.forEach((k, v) -> {
+                                //计划编号
+                                String planNumnber = generator.generateCommissionNumber();
+                                //订单号
+                                ProductionPlanningManagement productionPlanningManagement = new ProductionPlanningManagement();
+                                productionPlanningManagement.setOrderNumber(k); //订单编号
+                                productionPlanningManagement.setPlanNumber(planNumnber);//计划号
+                                productionPlanningManagement.setPlanType("0"); //待生产
+                                productionPlanningManagement.setTaskStatus("4");//待排产
+                                productionPlanningManagement.setIsWeldSheet("2");//焊接订单
+                                //                            //计算订单的最大完成时间
+                                //                            Optional<LocalDateTime> maxCompletionTime = v.stream()
+                                //                                    .map(item -> LocalDateTime.parse(item.getCompletionTime(), DateTimeFormatter.ISO_LOCAL_DATE_TIME))
+                                //                                    .max(Comparator.naturalOrder());
+                                //                            maxCompletionTime.ifPresent(maxTime ->{
+                                //                                System.out.println("最大的时间: " + maxTime);
+                                //                                String format1 = maxTime.format(formatter);
+                                //                                productionPlanningManagement.setCompletionTime(format1);//订单的最大完成时间
+                                //                            });
+                                //备注
+                                if (StringUtils.isNotNull(v.get(0).getRemark())) {
+                                    productionPlanningManagement.setRemark(v.get(0).getRemark()); //备注
+                                }
+                                //订单的创建时间
+                                productionPlanningManagement.setCreationtimeString(v.get(0).getCreationtimeString());//单据的创建时间
+                                //特殊要求
+                                if (StringUtils.isNotNull(v.get(0).getTsyq())) {
+                                    productionPlanningManagement.setSpecialRequirements(v.get(0).getTsyq());//特殊要求
+                                }
+                                //单据类型
+                                if (StringUtils.isNotNull(v.get(0).getDocumentTyep())) {
+                                    productionPlanningManagement.setOrderType(v.get(0).getDocumentTyep()); //单据类型
+                                }
 
-                            //编号订单号
-                            List<Map> mapList = this.jdSalesOrderInfoS(k);//订单详情信息
-                            String fDeliveryDate;
-                            if (mapList.size() > 0) {
-                                fDeliveryDate = mapList.get(0).get("FDeliveryDate").toString();
-                            } else {
-                                fDeliveryDate = "";
-                            }
-                            //拿到了关于这个订单的销售订单
-                            if (mapList.size() > 0) {
-                                if (StringUtils.isNotNull(mapList.get(0).get("F.PONP.Text"))) {
-                                    productionPlanningManagement.setContractNumber(mapList.get(0).get("F.PONP.Text").toString());
+                                //编号订单号
+                                List<Map> mapList = this.jdSalesOrderInfoS(k);//订单详情信息
+                                String fDeliveryDate;
+                                if (mapList.size() > 0) {
+                                    fDeliveryDate = mapList.get(0).get("FDeliveryDate").toString();
+                                } else {
+                                    fDeliveryDate = "";
                                 }
-                                productionPlanningManagement.setCompletionTime(fDeliveryDate);
-                                //======处理基本的订单信息
-                                productionPlanningManagementMapper.insertProductionPlanningManagement(productionPlanningManagement);
-                                v.forEach(a -> {
-                                    PlanTaskDetails planTaskDetails = new PlanTaskDetails();
-                                    planTaskDetails.setDemandDocument(a.getDocumentNumber());//需求单据号
-                                    planTaskDetails.setPlanId(productionPlanningManagement.getId());//计划id
-                                    planTaskDetails.setMaterialId(a.getMaterialCode());//原材料编码
-                                    planTaskDetails.setMaterialName(a.getMaterialName());//名称
-                                    planTaskDetails.setQuantity(a.getQuantity());//数量
-//                                    planTaskDetails.setTimeOfRequest(a.getCompletionTime());//要货时间
-                                    planTaskDetails.setModelNumber(a.getModelNumber());//型号
-                                    planTaskDetails.setSpecification(a.getSpecification());//规格
-                                    planTaskDetails.setMaterialUnit(a.getUnit());//单位
-                                    planTaskDetails.setPower(a.getGl());//功率
-                                    planTaskDetails.setVoltage(a.getDianYaPinLv());//电压频率
-                                    planTaskDetails.setColour(a.getYanse());//颜色
-                                    planTaskDetails.setMingpai(a.getMingpai());//铭牌
-                                    planTaskDetails.setShuomingshu(a.getShuomingshu());//说明书
-                                    planTaskDetails.setHegezheng(a.getHegezheng());//合格证
-                                    planTaskDetails.setBaozhuangxiang(a.getBaozhuangxiang());//包装箱
-                                    planTaskDetails.setSwitchBox(a.getKaiguanxiang());//开关箱
-                                    planTaskDetails.setScheduledCommencement(a.getFPlanStartDate()); //计划开始时间
-                                    planTaskDetails.setScheduledCompletion(a.getFPlanFinishDate()); //计划完工时间
-                                    planTaskDetails.setRemark(a.getRemark());
-                                    if (StringUtils.isNotNull(a.getDocumentDate())) {
-                                        SimpleDateFormat formatter1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
-                                        String formattedDate = formatter1.format(a.getDocumentDate());
-                                        planTaskDetails.setTimeOfRequest(formattedDate);//单据日期
+                                //拿到了关于这个订单的销售订单
+                                if (mapList.size() > 0) {
+                                    if (StringUtils.isNotNull(mapList.get(0).get("F.PONP.Text"))) {
+                                        productionPlanningManagement.setContractNumber(mapList.get(0).get("F.PONP.Text").toString());
                                     }
-                                    planTaskDetailsMapper.insertPlanTaskDetails(planTaskDetails);
-                                });
-                            }
-                        });
-                    }
-                    System.out.println(1);
-                    if (jdProductionOrders.size() < 5000) {
-                        flag = false;
+                                    productionPlanningManagement.setCompletionTime(fDeliveryDate);
+                                    //======处理基本的订单信息
+                                    productionPlanningManagementMapper.insertProductionPlanningManagement(productionPlanningManagement);
+                                    v.forEach(a -> {
+                                        PlanTaskDetails planTaskDetails = new PlanTaskDetails();
+                                        planTaskDetails.setDemandDocument(a.getDocumentNumber());//需求单据号
+                                        planTaskDetails.setPlanId(productionPlanningManagement.getId());//计划id
+                                        planTaskDetails.setMaterialId(a.getMaterialCode());//原材料编码
+                                        planTaskDetails.setMaterialName(a.getMaterialName());//名称
+                                        planTaskDetails.setQuantity(a.getQuantity());//数量
+                                        //                                    planTaskDetails.setTimeOfRequest(a.getCompletionTime());//要货时间
+                                        planTaskDetails.setModelNumber(a.getModelNumber());//型号
+                                        planTaskDetails.setSpecification(a.getSpecification());//规格
+                                        planTaskDetails.setMaterialUnit(a.getUnit());//单位
+                                        planTaskDetails.setPower(a.getGl());//功率
+                                        planTaskDetails.setVoltage(a.getDianYaPinLv());//电压频率
+                                        planTaskDetails.setColour(a.getYanse());//颜色
+                                        planTaskDetails.setMingpai(a.getMingpai());//铭牌
+                                        planTaskDetails.setShuomingshu(a.getShuomingshu());//说明书
+                                        planTaskDetails.setHegezheng(a.getHegezheng());//合格证
+                                        planTaskDetails.setBaozhuangxiang(a.getBaozhuangxiang());//包装箱
+                                        planTaskDetails.setSwitchBox(a.getKaiguanxiang());//开关箱
+                                        planTaskDetails.setScheduledCommencement(a.getFPlanStartDate()); //计划开始时间
+                                        planTaskDetails.setScheduledCompletion(a.getFPlanFinishDate()); //计划完工时间
+                                        planTaskDetails.setRemark(a.getRemark());
+                                        if (StringUtils.isNotNull(a.getDocumentDate())) {
+                                            planTaskDetails.setTimeOfRequest(a.getDocumentDate());//单据日期
+                                        }
+                                        planTaskDetailsMapper.insertPlanTaskDetails(planTaskDetails);
+                                    });
+                                }
+                            });
+                        }
+                        System.out.println(1);
+                        if (jdProductionOrders.size() < 5000) {
+                            flag = false;
+                        }
+                        // 更新起始行号
+                        startRow += limit;
+                        // 如果返回的数据量小于5000,说明已经没有更多的数据,结束循环
                     }
-                    // 更新起始行号
-                    startRow += limit;
-                    // 如果返回的数据量小于5000,说明已经没有更多的数据,结束循环
-                }
-            } while (flag);
-        }catch (Exception e){
-            System.out.println("出现了异常");
+                } while (flag);
+            } catch (Exception e) {
+                stringRedisTemplate.delete("fjqy:hjd:pulled");
+                System.out.println("出现了异常");
+            }
+            stringRedisTemplate.delete("fjqy:hjd:pulled");
+        }else {
+            System.out.println("正在手动拉取不能执行此次定时任务");
         }
     }
-
 }

+ 61 - 0
zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/service/IProcedureListErpService.java

@@ -0,0 +1,61 @@
+package com.zkqy.amichi.service;
+
+import java.util.List;
+import com.zkqy.amichi.domain.ProcedureListErp;
+
+/**
+ * erp工序列表Service接口
+ * 
+ * @author ruoyi
+ * @date 2024-12-06
+ */
+public interface IProcedureListErpService 
+{
+    /**
+     * 查询erp工序列表
+     * 
+     * @param id erp工序列表主键
+     * @return erp工序列表
+     */
+    public ProcedureListErp selectProcedureListErpById(Long id);
+
+    /**
+     * 查询erp工序列表列表
+     * 
+     * @param procedureListErp erp工序列表
+     * @return erp工序列表集合
+     */
+    public List<ProcedureListErp> selectProcedureListErpList(ProcedureListErp procedureListErp);
+
+    /**
+     * 新增erp工序列表
+     * 
+     * @param procedureListErp erp工序列表
+     * @return 结果
+     */
+    public int insertProcedureListErp(ProcedureListErp procedureListErp);
+
+    /**
+     * 修改erp工序列表
+     * 
+     * @param procedureListErp erp工序列表
+     * @return 结果
+     */
+    public int updateProcedureListErp(ProcedureListErp procedureListErp);
+
+    /**
+     * 批量删除erp工序列表
+     * 
+     * @param ids 需要删除的erp工序列表主键集合
+     * @return 结果
+     */
+    public int deleteProcedureListErpByIds(Long[] ids);
+
+    /**
+     * 删除erp工序列表信息
+     * 
+     * @param id erp工序列表主键
+     * @return 结果
+     */
+    public int deleteProcedureListErpById(Long id);
+}

+ 1 - 1
zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/service/IStationInformationService.java

@@ -80,7 +80,7 @@ public interface IStationInformationService
      * @param productNumber
      * @return
      */
-    String sweepingMaterial(String productNumber,String gxm);
+    String sweepingMaterial(String orderNumber,String productNumber,String gxm,String lxkNumber);
 
     /**
      * 蓝牙扫描枪扫描

+ 97 - 0
zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/service/impl/ProcedureListErpServiceImpl.java

@@ -0,0 +1,97 @@
+package com.zkqy.amichi.service.impl;
+
+import java.util.List;
+
+import com.zkqy.common.utils.DateUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import com.zkqy.amichi.mapper.ProcedureListErpMapper;
+import com.zkqy.amichi.domain.ProcedureListErp;
+import com.zkqy.amichi.service.IProcedureListErpService;
+
+/**
+ * erp工序列表Service业务层处理
+ * 
+ * @author ruoyi
+ * @date 2024-12-06
+ */
+@Service
+public class ProcedureListErpServiceImpl implements IProcedureListErpService 
+{
+    @Autowired
+    private ProcedureListErpMapper procedureListErpMapper;
+
+    /**
+     * 查询erp工序列表
+     * 
+     * @param id erp工序列表主键
+     * @return erp工序列表
+     */
+    @Override
+    public ProcedureListErp selectProcedureListErpById(Long id)
+    {
+        return procedureListErpMapper.selectProcedureListErpById(id);
+    }
+
+    /**
+     * 查询erp工序列表列表
+     * 
+     * @param procedureListErp erp工序列表
+     * @return erp工序列表
+     */
+    @Override
+    public List<ProcedureListErp> selectProcedureListErpList(ProcedureListErp procedureListErp)
+    {
+        return procedureListErpMapper.selectProcedureListErpList(procedureListErp);
+    }
+
+    /**
+     * 新增erp工序列表
+     * 
+     * @param procedureListErp erp工序列表
+     * @return 结果
+     */
+    @Override
+    public int insertProcedureListErp(ProcedureListErp procedureListErp)
+    {
+        procedureListErp.setCreateTime(DateUtils.getNowDate());
+        return procedureListErpMapper.insertProcedureListErp(procedureListErp);
+    }
+
+    /**
+     * 修改erp工序列表
+     * 
+     * @param procedureListErp erp工序列表
+     * @return 结果
+     */
+    @Override
+    public int updateProcedureListErp(ProcedureListErp procedureListErp)
+    {
+        procedureListErp.setUpdateTime(DateUtils.getNowDate());
+        return procedureListErpMapper.updateProcedureListErp(procedureListErp);
+    }
+
+    /**
+     * 批量删除erp工序列表
+     * 
+     * @param ids 需要删除的erp工序列表主键
+     * @return 结果
+     */
+    @Override
+    public int deleteProcedureListErpByIds(Long[] ids)
+    {
+        return procedureListErpMapper.deleteProcedureListErpByIds(ids);
+    }
+
+    /**
+     * 删除erp工序列表信息
+     * 
+     * @param id erp工序列表主键
+     * @return 结果
+     */
+    @Override
+    public int deleteProcedureListErpById(Long id)
+    {
+        return procedureListErpMapper.deleteProcedureListErpById(id);
+    }
+}

+ 5 - 0
zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/service/impl/RingScanInformationServiceImpl.java

@@ -52,6 +52,11 @@ public class RingScanInformationServiceImpl implements IRingScanInformationServi
         return mapByOrderNumber;
     }
 
+    /**
+     * 倒推数据展示
+     * @param orderNumberListString
+     * @return
+     */
     @Override
     public Map<String, List<RingScanInformationLogVo>> selectRingScanInformationLog2(List<String> orderNumberListString) {
         //取真实展示数据

+ 265 - 115
zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/service/impl/StationInformationServiceImpl.java

@@ -3,6 +3,8 @@ package com.zkqy.amichi.service.impl;
 import java.time.Duration;
 import java.time.LocalDateTime;
 import java.util.*;
+import java.util.concurrent.CompletableFuture;
+import java.util.concurrent.ExecutionException;
 import java.util.stream.Collectors;
 
 import cn.hutool.core.date.DateTime;
@@ -29,6 +31,7 @@ import com.zkqy.execution.produce.dispersed.mapper.BpmExecuteProcessMapper;
 import com.zkqy.system.mapper.SysDictDataMapper;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
 import org.springframework.stereotype.Service;
 import com.zkqy.amichi.service.IStationInformationService;
 import org.springframework.transaction.annotation.Transactional;
@@ -86,8 +89,14 @@ public class StationInformationServiceImpl implements IStationInformationService
     @Autowired
     private  PlanTaskDetailsMapper planTaskDetailsMapper;
 
+    @Autowired
+    ProcedureListErpMapper procedureListErpMapper;
 
+    @Autowired
+    ProcedureListMapper procedureListMapper;
 
+    @Autowired
+    ThreadPoolTaskExecutor threadPoolTaskExecutor;
 
     public static void main(String[] args) {
        String aaa="scan@&GWM-001&SMSB001";
@@ -376,7 +385,13 @@ public class StationInformationServiceImpl implements IStationInformationService
     }
 
    @Override
-   public  String   sweepingMaterial(String productNumber,String gxm){
+   public  String   sweepingMaterial(String orderNumber,String productNumber,String gxm,String lxkNumber){
+       ProcedureList procedureList=new ProcedureList();
+       procedureList.setProcedurName(gxm);
+       List<ProcedureList> procedureLists = procedureListMapper.selectProcedureListList(procedureList);
+       if(procedureLists.size()<=0){
+           return "此工序不存在";
+       }
        //输入产品编号查询,
        MaterialRetentionLog materialRetentionLog=new MaterialRetentionLog();
        materialRetentionLog.setFlowSequenceNumber(productNumber);
@@ -385,71 +400,181 @@ public class StationInformationServiceImpl implements IStationInformationService
        if(materialRetentionLogs.size()>0){
            return "此料已扣除";
        }
-       //查询条件
-       String queryString ="{\n" +
-               "    \"FormId\": \"PRD_MO\",\n" +
-               "    \"FieldKeys\": \"FBillNo\",\n" +
-               "    \"FilterString\": [{\"Left\":\"\",\"FieldName\":\"FSerialNo\",\"Compare\":\"67\",\"Value\":\""+productNumber+"\",\"Right\":\"\",\"Logic\":0}],\n" +
-               "    \"OrderString\": \"\",\n" +
-               "    \"TopRowCount\": 0,\n" +
-               "    \"StartRow\": 0,\n" +
-               "    \"Limit\": 2000,\n" +
-               "    \"SubSystemId\": \"\"\n" +
-               "}";
-       //查询条件
-       Map<String, Object> map = JSON.parseObject(queryString, Map.class);
-       K3CloudApi api = new K3CloudApi();
-       List<JdProductionOrder> jdProductionOrders;
-       try {
-           String resultJson = api.billQuery(JSON.toJSONString(map));
-           //如果查询的数据为空
-           if(resultJson==""||resultJson=="[]"){
-               return "不能添加这次扫描记录";
-           }else{
-               //转换实体类对象
-               jdProductionOrders = JSON.parseArray(resultJson, JdProductionOrder.class);
-               //按照流转卡把信息查询出来了
-               if(jdProductionOrders.size()>0) {
-                   //单据编号
-                   String documentNumber = jdProductionOrders.get(0).getDocumentNumber();
-                   //这个生产订单生产的数量
-                   //String quantity = jdProductionOrders.get(0).getQuantity();
-                   //根据生产订单号查询生产用料清单
-                   String productionMaterialsListQuery="{\n" +
-                           "    \"FormId\": \"PRD_PPBOM\",\n" +
-                           "    \"FieldKeys\": \"FMaterialID.FNumber,FMaterialName,FMaterialModel,FMaterialModel2,FDescription,FMaterialID2.FNumber,FMaterialName1,FMaterialModel1,FUnitID2.FName,FMustQty,FMEMO1,FNumerator,FMaterialType\",\n" +
-                           "    \"FilterString\": [{\"Left\":\"\",\"FieldName\":\"FMOBillNO\",\"Compare\":\"17\",\"Value\":\""+documentNumber+"\",\"Right\":\"\",\"Logic\":0},{\"Left\":\"\",\"FieldName\":\"FProcessID.FName\",\"Compare\":\"17\",\"Value\":\""+gxm+"\",\"Right\":\"\",\"Logic\":0}],\n" +
-                           "    \"OrderString\": \"\",\n" +
-                           "    \"TopRowCount\": 0,\n" +
-                           "    \"StartRow\": 0,\n" +
-                           "    \"Limit\": 2000,\n" +
-                           "    \"SubSystemId\": \"\"\n" +
-                           "}";
-                   //查询生产用料清单
-                   Map<String, Object> map2 = JSON.parseObject(productionMaterialsListQuery, Map.class);
-                   //生产用料清单结果
-                   String resultJsonJG = api.billQuery(JSON.toJSONString(map2));
-                   //json转Java实体类对象
-                   List<MaterialRetentionLogVo> materialRetentionLogVos = JSON.parseArray(resultJsonJG, MaterialRetentionLogVo.class);
-                   //赋值一些默认值
-                   List<MaterialRetentionLogVo> collect = materialRetentionLogVos.parallelStream().map(item -> {
-                       item.setCkNumber("CK005");
-                       item.setDeliveryWarehouse("车间仓");
-                       item.setFlowSequenceNumber(productNumber);//流转序列号
-                       item.setProcess(gxm);
-                       return item;
-                   }).collect(Collectors.toList());
-                   //分子数量基本的扣料单位
-                   int i = materialRetentionLogMapper.insertMaterialRetentionLogBatch(collect);
-                   if(i>0){
-                       return "扣料成功";
+       //查询MES对应的ERP
+       ProcedureListErp procedureListErp=new ProcedureListErp();
+       procedureListErp.setErpJobName(procedureLists.get(0).getId().toString());
+       List<ProcedureListErp> procedureListErps = procedureListErpMapper.selectProcedureListErpList(procedureListErp);
+
+       if(gxm.equals("焊接")){
+           RingScanInformation ringScanInformation=new RingScanInformation();
+           ringScanInformation.setProcessName(gxm);//工序
+           ringScanInformation.setProductionOrderNumber(productNumber); //生产订单
+           ringScanInformation.setNativeNumbering(lxkNumber);//流转卡
+           List<RingScanInformation> ringScanInformations = ringScanInformationMapper.selectRingScanInformationList(ringScanInformation);
+           //当前流转卡在当前工序可以的话就进行扣料处理
+           if(ringScanInformations.size()==2){
+               //查询条件
+               String queryString ="{\n" +
+                       "    \"FormId\": \"PRD_MO\",\n" +
+                       "    \"FieldKeys\": \"FBillNo\",\n" +
+                       "    \"FilterString\": [{\"Left\":\"\",\"FieldName\":\"FSerialNo\",\"Compare\":\"67\",\"Value\":\""+lxkNumber+"\",\"Right\":\"\",\"Logic\":0}],\n" +
+                       "    \"OrderString\": \"\",\n" +
+                       "    \"TopRowCount\": 0,\n" +
+                       "    \"StartRow\": 0,\n" +
+                       "    \"Limit\": 2000,\n" +
+                       "    \"SubSystemId\": \"\"\n" +
+                       "}";
+               //查询条件
+               Map<String, Object> map = JSON.parseObject(queryString, Map.class);
+
+               K3CloudApi api = new K3CloudApi();
+               List<JdProductionOrder> jdProductionOrders;
+               try {
+                   String resultJson = api.billQuery(JSON.toJSONString(map));
+                   //如果查询的数据为空
+                   if(resultJson.equals("[]")){
+                       return "此工序不存在扣料信息";
+                   }else{
+                       //转换实体类对象
+                       jdProductionOrders = JSON.parseArray(resultJson, JdProductionOrder.class);
+                       //按照流转卡把信息查询出来了
+                       if(jdProductionOrders.size()>0) {
+                           //单据编号
+                           String documentNumber = jdProductionOrders.get(0).getDocumentNumber();
+                           //这个生产订单生产的数量
+                           //String quantity = jdProductionOrders.get(0).getQuantity();
+                           //根据生产订单号查询生产用料清单
+                           String productionMaterialsListQuery="{\n" +
+                                   "    \"FormId\": \"PRD_PPBOM\",\n" +
+                                   "    \"FieldKeys\": \"FMaterialID.FNumber,FMaterialName,FMaterialModel,FMaterialModel2,FDescription,FMaterialID2.FNumber,FMaterialName1,FMaterialModel1,FUnitID2.FName,FMustQty,FMEMO1,FNumerator,FMaterialType\",\n" +
+                                   "    \"FilterString\": [{\"Left\":\"\",\"FieldName\":\"FMOBillNO\",\"Compare\":\"17\",\"Value\":\""+documentNumber+"\",\"Right\":\"\",\"Logic\":0},{\"Left\":\"\",\"FieldName\":\"FProcessID.FName\",\"Compare\":\"17\",\"Value\":\""+gxm+"\",\"Right\":\"\",\"Logic\":0}],\n" +
+                                   "    \"OrderString\": \"\",\n" +
+                                   "    \"TopRowCount\": 0,\n" +
+                                   "    \"StartRow\": 0,\n" +
+                                   "    \"Limit\": 2000,\n" +
+                                   "    \"SubSystemId\": \"\"\n" +
+                                   "}";
+                           //查询生产用料清单
+                           Map<String, Object> map2 = JSON.parseObject(productionMaterialsListQuery, Map.class);
+
+                           String filterString = map2.get("FilterString").toString();
+                           List<Map> mapList = JSON.parseArray(filterString, Map.class);
+                           //循环条件
+                           procedureListErps.forEach(map1 -> {
+                               String mapTj="{\"Left\":\"\",\"FieldName\":\"FProcessID.FName\",\"Compare\":\"67\",\"Value\":\"111\",\"Right\":\"\",\"Logic\":1}";
+                               Map mapObj = JSONObject.parseObject(mapTj, Map.class);
+                               mapObj.put("Value", map1.getProcedurName());
+                               mapList.add(mapObj);
+                           });
+
+                           map2.put("FilterString", mapList);//从新绑定条件
+
+                           //生产用料清单结果
+                           String resultJsonJG = api.billQuery(JSON.toJSONString(map2));
+                           //json转Java实体类对象
+                           List<MaterialRetentionLogVo> materialRetentionLogVos = JSON.parseArray(resultJsonJG, MaterialRetentionLogVo.class);
+                           //赋值一些默认值
+                           List<MaterialRetentionLogVo> collect = materialRetentionLogVos.parallelStream().map(item -> {
+                               item.setCkNumber("CK005");
+                               item.setDeliveryWarehouse("车间仓");
+                               item.setFlowSequenceNumber(lxkNumber);//流转序列号
+                               item.setProcess(gxm);
+                               item.setOrderNumber(orderNumber);
+                               item.setProductionOrderNumber(productNumber);
+                               return item;
+                           }).collect(Collectors.toList());
+                           //分子数量基本的扣料单位
+                           int i = materialRetentionLogMapper.insertMaterialRetentionLogBatch(collect);
+                       }
                    }
+               } catch (Exception e) {
+                   throw new RuntimeException(e);
                }
+               return productNumber+gxm+"扣料成功";
+           }else {
+               return productNumber+gxm+"未完不扣料";
            }
-       } catch (Exception e) {
-           throw new RuntimeException(e);
+       }else {
+           //查询条件
+           String queryString ="{\n" +
+                   "    \"FormId\": \"PRD_MO\",\n" +
+                   "    \"FieldKeys\": \"FBillNo\",\n" +
+                   "    \"FilterString\": [{\"Left\":\"\",\"FieldName\":\"FSerialNo\",\"Compare\":\"67\",\"Value\":\""+productNumber+"\",\"Right\":\"\",\"Logic\":0}],\n" +
+                   "    \"OrderString\": \"\",\n" +
+                   "    \"TopRowCount\": 0,\n" +
+                   "    \"StartRow\": 0,\n" +
+                   "    \"Limit\": 2000,\n" +
+                   "    \"SubSystemId\": \"\"\n" +
+                   "}";
+           //查询条件
+           Map<String, Object> map = JSON.parseObject(queryString, Map.class);
+           K3CloudApi api = new K3CloudApi();
+           List<JdProductionOrder> jdProductionOrders;
+           try {
+               String resultJson = api.billQuery(JSON.toJSONString(map));
+               //如果查询的数据为空
+               if(resultJson==""||resultJson=="[]"){
+                   return "不能添加这次扫描记录";
+               }else{
+                   //转换实体类对象
+                   jdProductionOrders = JSON.parseArray(resultJson, JdProductionOrder.class);
+                   //按照流转卡把信息查询出来了
+                   if(jdProductionOrders.size()>0) {
+                       //单据编号
+                       String documentNumber = jdProductionOrders.get(0).getDocumentNumber();
+                       //这个生产订单生产的数量
+                       //String quantity = jdProductionOrders.get(0).getQuantity();
+                       //根据生产订单号查询生产用料清单
+                       String productionMaterialsListQuery="{\n" +
+                               "    \"FormId\": \"PRD_PPBOM\",\n" +
+                               "    \"FieldKeys\": \"FMaterialID.FNumber,FMaterialName,FMaterialModel,FMaterialModel2,FDescription,FMaterialID2.FNumber,FMaterialName1,FMaterialModel1,FUnitID2.FName,FMustQty,FMEMO1,FNumerator,FMaterialType\",\n" +
+                               "    \"FilterString\": [{\"Left\":\"\",\"FieldName\":\"FMOBillNO\",\"Compare\":\"17\",\"Value\":\""+documentNumber+"\",\"Right\":\"\",\"Logic\":0},{\"Left\":\"\",\"FieldName\":\"FProcessID.FName\",\"Compare\":\"17\",\"Value\":\""+gxm+"\",\"Right\":\"\",\"Logic\":0}],\n" +
+                               "    \"OrderString\": \"\",\n" +
+                               "    \"TopRowCount\": 0,\n" +
+                               "    \"StartRow\": 0,\n" +
+                               "    \"Limit\": 2000,\n" +
+                               "    \"SubSystemId\": \"\"\n" +
+                               "}";
+                       //查询生产用料清单
+                       Map<String, Object> map2 = JSON.parseObject(productionMaterialsListQuery, Map.class);
+
+                       String filterString = map2.get("FilterString").toString();
+
+                       List<Map> mapList = JSON.parseArray(filterString, Map.class);
+                       //循环条件
+                       procedureListErps.forEach(map1 -> {
+                           String mapTj="{\"Left\":\"\",\"FieldName\":\"FProcessID.FName\",\"Compare\":\"67\",\"Value\":\"111\",\"Right\":\"\",\"Logic\":1}";
+                           Map mapObj = JSONObject.parseObject(mapTj, Map.class);
+                           mapObj.put("Value", map1.getProcedurName());
+                           mapList.add(mapObj);
+                       });
+                       map2.put("FilterString", mapList);//从新绑定条件
+
+
+                       //生产用料清单结果
+                       String resultJsonJG = api.billQuery(JSON.toJSONString(map2));
+                       //json转Java实体类对象
+                       List<MaterialRetentionLogVo> materialRetentionLogVos = JSON.parseArray(resultJsonJG, MaterialRetentionLogVo.class);
+                       //赋值一些默认值
+                       List<MaterialRetentionLogVo> collect = materialRetentionLogVos.parallelStream().map(item -> {
+                           item.setCkNumber("CK005");
+                           item.setDeliveryWarehouse("车间仓");
+                           item.setFlowSequenceNumber(lxkNumber);//流转序列号
+                           item.setProcess(gxm); //工序
+                           item.setOrderNumber(orderNumber); //订单
+                           item.setProductionOrderNumber(productNumber); //生产订单
+                           return item;
+                       }).collect(Collectors.toList());
+                       //分子数量基本的扣料单位
+                       int i = materialRetentionLogMapper.insertMaterialRetentionLogBatch(collect);
+                   }
+               }
+           } catch (Exception e) {
+               throw new RuntimeException(e);
+           }
+           return productNumber+gxm+"扣料成功";
        }
-       return "茂昌";
+
    }
 
     @Override
@@ -713,11 +838,10 @@ public class StationInformationServiceImpl implements IStationInformationService
 
 
     /**
-     * 手持扫描实现
+     * 手持扫描实现(作废)
      * @param contentString
      * @return
      */
-
     @Override
     public String stationProductScanningTwo(String contentString) {
         //扫描人员码信息
@@ -969,6 +1093,11 @@ public class StationInformationServiceImpl implements IStationInformationService
         return "扫描成功";
     }
 
+    /**
+     * 手持扫描真实逻辑
+     * @param contentString
+     * @return
+     */
     @Override
     @Transactional
     public String stationProductScanningTwo2(String contentString) {
@@ -1135,16 +1264,14 @@ public class StationInformationServiceImpl implements IStationInformationService
                     String materialId = planTaskDetails2.getMaterialId();
                     if(materialId.startsWith("1")){//更新包装数量
                         ringScanInformationFirst1.setPackingOrInspection("1");//包装
-                    }else if(materialId.startsWith("102")) {
+                    }else if(materialId.startsWith("201")) {
                         ringScanInformationFirst1.setPackingOrInspection("2"); //检验
                     }
-
                 }
                 //扫一次产品记录一次
                 int i = ringScanInformationFirstMapper.insertRingScanInformationFirst(ringScanInformationFirst1);
 
                 //有可能订单数量就是一台,我扫一回订单就结束掉了
-
             }else {
                 //更新包装或者检验的数量
                 //拿到老的包装数量
@@ -1161,13 +1288,27 @@ public class StationInformationServiceImpl implements IStationInformationService
                     PlanTaskDetails planTaskDetails2 = planTaskDetails1.get(0);
                     String materialId = planTaskDetails2.getMaterialId();
                     if(materialId.startsWith("1")&&ringScanInformation.getProcessName().equals("包装")){//1卡头并且当前工序未包装,扫描信息为,更新包装数量
-                        RingScanInformationFirst newRingScanInformationFirst = getRingScanInformationFirst(ringScanInformationFirstNumber.getPackingQuantity(), ringScanInformation,"1");
-                        ringScanInformationFirstMapper.updateRingScanInformationFirstByproductionOrderNumber(newRingScanInformationFirst);
-                        this.generateWarehouseWarrant(ringScanInformation.getProductionOrderNumber());
-                    }else if(materialId.startsWith("102")&&ringScanInformation.getProcessName().equals("检验")) {
-                        RingScanInformationFirst newRingScanInformationFirst = getRingScanInformationFirst(ringScanInformationFirstNumber.getInspectionQuantity(), ringScanInformation,"2");
-                        ringScanInformationFirstMapper.updateRingScanInformationFirstByproductionOrderNumber(newRingScanInformationFirst);
-                        this.generateWarehouseWarrant(ringScanInformation.getProductionOrderNumber());
+                        RingScanInformation ringScanInformation1=new RingScanInformation();
+                        ringScanInformation1.setNativeNumbering(ringScanInformation.getNativeNumbering());
+                        ringScanInformation1.setProcessName(ringScanInformation.getProcessName());//工序
+                        //有关于这个产品的扫描信息就不更新数量了
+                        List<RingScanInformation> ringScanInformations1 = ringScanInformationMapper.selectRingScanInformationList(ringScanInformation1);
+                        if(ringScanInformations1.size()<=0) {
+                            RingScanInformationFirst newRingScanInformationFirst = getRingScanInformationFirst(ringScanInformationFirstNumber.getPackingQuantity(), ringScanInformation, "1");
+                            ringScanInformationFirstMapper.updateRingScanInformationFirstByproductionOrderNumber(newRingScanInformationFirst);
+//                            this.generateWarehouseWarrant(ringScanInformation.getProductionOrderNumber());
+                        }
+                    }else if(materialId.startsWith("201")&&ringScanInformation.getProcessName().equals("试机")) {
+                        //有关于这个产品的扫描信息就不更新数量了
+                        RingScanInformation ringScanInformation1=new RingScanInformation();
+                        ringScanInformation1.setNativeNumbering(ringScanInformation.getNativeNumbering());
+                        ringScanInformation1.setProcessName(ringScanInformation.getProcessName());//工序
+                        List<RingScanInformation> ringScanInformations1 = ringScanInformationMapper.selectRingScanInformationList(ringScanInformation1);
+                        if(ringScanInformations1.size()<=0){
+                            RingScanInformationFirst newRingScanInformationFirst = getRingScanInformationFirst(ringScanInformationFirstNumber.getInspectionQuantity(), ringScanInformation,"2");
+                            ringScanInformationFirstMapper.updateRingScanInformationFirstByproductionOrderNumber(newRingScanInformationFirst);
+//                            this.generateWarehouseWarrant(ringScanInformation.getProductionOrderNumber());
+                        }
                     }
                 }
             }
@@ -1211,6 +1352,17 @@ public class StationInformationServiceImpl implements IStationInformationService
             ringScanInformation.setExecutionMark("1");
             ringScanInformation.setExecutionMessage("扫描成功");
             int i2 = ringScanInformationMapper.insertRingScanInformation(ringScanInformation);
+            //异步编排扣料逻辑
+//            CompletableFuture<String> klCompletableFuture = CompletableFuture.supplyAsync(() -> {
+//                String s = this.sweepingMaterial(ringScanInformation.getOrderNumber(), ringScanInformation.getProductionOrderNumber(), //订单号   生产订单号
+//                        ringScanInformation.getProcessName(), ringScanInformation.getNativeNumbering());//工序     流转卡信息
+//                return s;
+//            }, threadPoolTaskExecutor);
+            String s = this.sweepingMaterial(ringScanInformation.getOrderNumber(), ringScanInformation.getProductionOrderNumber(), //订单号   生产订单号
+                        ringScanInformation.getProcessName(), ringScanInformation.getNativeNumbering());//工序     流转卡信息
+            System.out.println(s);
+            //入库逻辑
+            this.generateWarehouseWarrant(ringScanInformation.getProductionOrderNumber(),ringScanInformation.getProcessName());//生产订单号,工序名
             return ringScanInformation.getStationName()+"-"+ringScanInformation.getPersonnelName()+"-"+"扫描成功";
         }
     }
@@ -1225,6 +1377,8 @@ public class StationInformationServiceImpl implements IStationInformationService
      */
     private static RingScanInformationFirst getRingScanInformationFirst(String ringScanInformationFirstNumber, RingScanInformation ringScanInformation,String type) {
         if(type.equals("1")){
+
+            //检查出没出现过这个订单信息的扫描,没有就更新第一次订单扫描的数量
             String inspectionQuantity = ringScanInformationFirstNumber;
             Double newInspectionQuantity = Double.parseDouble(inspectionQuantity) + 1;
             Integer i1 = newInspectionQuantity.intValue();
@@ -1244,50 +1398,45 @@ public class StationInformationServiceImpl implements IStationInformationService
     }
 
 
-    public  String  generateWarehouseWarrant(String productionOrderNumber){
-        RingScanInformationFirst newRingScanInformationFirst = new RingScanInformationFirst();
-        newRingScanInformationFirst.setProductionOrderNumber(productionOrderNumber);;
-        List<RingScanInformationFirst> ringScanInformationFirsts1 = ringScanInformationFirstMapper.selectRingScanInformationFirstList(newRingScanInformationFirst);
-        if (ringScanInformationFirsts1.size()>0){
-            RingScanInformationFirst ringScanInformationFirst = ringScanInformationFirsts1.get(0);
-            String packingOrInspection = ringScanInformationFirst.getPackingOrInspection();
-            if(packingOrInspection.equals("1")){
-                //看包装跟当前生产订单总数量是否相等
-                if(ringScanInformationFirst.getPackingQuantity().equals(ringScanInformationFirst.getProductionOrderTotalQuantity())){
-                    //生成入库单
-                    System.out.println("包装生成入库单");
-                    //入库这个生产订单下的所有产品信息
-
-                    //改当前生产订单的状态
-                    PlanTaskDetails planTaskDetails=new PlanTaskDetails();
-                    planTaskDetails.setDemandDocument(productionOrderNumber);
-                    planTaskDetails.setStatus("2");//生产完成
-                    int i = planTaskDetailsMapper.updatePlanTaskDetailsByDemandDocument(planTaskDetails);
-                }
-            }else if(packingOrInspection.equals("2")){
-                //看包装跟当前生产订单总数量是否相等
-                if(ringScanInformationFirst.getInspectionQuantity().equals(ringScanInformationFirst.getProductionOrderTotalQuantity())){
-                    //生成入库单
-                    System.out.println("包装生成入库单");
-                    //入库这个生产订单下的所有产品信息
-                    //根据生生产订单号查询生产订单信息
-                    PlanTaskDetails planTaskDetails=new PlanTaskDetails();
-                    planTaskDetails.setDemandDocument(productionOrderNumber);
-//                    List<PlanTaskDetails> planTaskDetails1 = planTaskDetailsMapper.selectPlanTaskDetailsList(planTaskDetails);
-//                    if(planTaskDetails1.size()>0){
-//                        PlanTaskDetails planTaskDetails2 = planTaskDetails1.get(0);
-//                        try {
-//                            this.erpRk(planTaskDetails2);//erp入库
-//                        } catch (Exception e) {
-//                            throw new RuntimeException(e);
-//                        }
-//                    }
-                    planTaskDetails.setStatus("2");//生产完成
-                    int i = planTaskDetailsMapper.updatePlanTaskDetailsByDemandDocument(planTaskDetails);
+    public  String  generateWarehouseWarrant(String productionOrderNumber,String gxName){
+        if(gxName.equals("入库")){
+            RingScanInformationFirst newRingScanInformationFirst = new RingScanInformationFirst();
+            newRingScanInformationFirst.setProductionOrderNumber(productionOrderNumber);
+            //查询第一次新增时确定的是试机入库还是包装入库
+            List<RingScanInformationFirst> ringScanInformationFirsts1 = ringScanInformationFirstMapper.selectRingScanInformationFirstList(newRingScanInformationFirst);
+            if (ringScanInformationFirsts1.size()>0){
+                RingScanInformationFirst ringScanInformationFirst = ringScanInformationFirsts1.get(0);
+                String packingOrInspection = ringScanInformationFirst.getPackingOrInspection();
+                //改当前生产订单的状态
+                PlanTaskDetails planTaskDetails=new PlanTaskDetails();
+                planTaskDetails.setDemandDocument(productionOrderNumber);
+
+                //查询即将入库的产品信息
+                List<PlanTaskDetails> planTaskDetails1 = planTaskDetailsMapper.selectPlanTaskDetailsList(planTaskDetails);
+
+                //加更正生产订单状态
+                planTaskDetails.setStatus("2");//生产完成
+
+                //检查包装或者试机数量
+                if(packingOrInspection.equals("1")){//检查包装数量
+                    //看包装跟当前生产订单总数量是否相等
+                    if(ringScanInformationFirst.getPackingQuantity().equals(ringScanInformationFirst.getProductionOrderTotalQuantity())){
+                        int i = planTaskDetailsMapper.updatePlanTaskDetailsByDemandDocument(planTaskDetails);
+                        //构建入库单
+                    }
+                }else if(packingOrInspection.equals("2")){ //检查试机数量
+                    //看包装跟当前生产订单总数量是否相等
+                    if(ringScanInformationFirst.getInspectionQuantity().equals(ringScanInformationFirst.getProductionOrderTotalQuantity())){
+                        int i = planTaskDetailsMapper.updatePlanTaskDetailsByDemandDocument(planTaskDetails);
+                        //构建入库单
+
+                    }
                 }
             }
+            return "入库成功";
+        }else {
+            return "当前工序节点不是入库,不入库";
         }
-        return "数量够了入库";
     }
 
     @Autowired
@@ -1632,6 +1781,7 @@ public class StationInformationServiceImpl implements IStationInformationService
 //            }
         }
 
+
     /**
      * 插入异常报工信息
      * @param reportInformationSheet

+ 16 - 6
zkqy-fujian-amichi/src/main/resources/mapper/MaterialRetentionLogMapper.xml

@@ -39,6 +39,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <result property="productSpecification"    column="product_specification"    />
         <result property="materialType"    column="material_type"    />
         <result property="process"    column="process"    />
+        <result property="orderNumber"    column="order_number"    />
+        <result property="productionOrderNumber"    column="production_order_number"    />
     </resultMap>
 
     <sql id="selectMaterialRetentionLogVo">
@@ -49,7 +51,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             END AS actual_quantity_issued,delivery_warehouse, ck_number, document_remarks,
         document_type, inventory_organization, receiving_tissue, inventory_direction, date_of_delivery, materials_requisition_department,
         material_taker, business_type, owner_type, owner, document_status, detailed_remarks, create_by_id, create_by, create_time,
-        update_by_id, update_by, update_time, del_flag,product_code,product_name,product_model,product_specification,material_type,process from fjqydb.material_retention_log
+        update_by_id, update_by, update_time, del_flag,product_code,product_name,product_model,product_specification,material_type,process,order_number,production_order_number from fjqydb.material_retention_log
     </sql>
 
     <select id="selectMaterialRetentionLogList" parameterType="com.zkqy.amichi.domain.MaterialRetentionLog" resultMap="MaterialRetentionLogResult">
@@ -78,12 +80,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="detailedRemarks != null  and detailedRemarks != ''"> and detailed_remarks = #{detailedRemarks}</if>
             <if test="createById != null "> and create_by_id = #{createById}</if>
             <if test="updateById != null "> and update_by_id = #{updateById}</if>
-
             <if test="productCode != null "> and product_code = #{productCode}</if>
             <if test="productName != null "> and product_name = #{productName}</if>
             <if test="productModel != null "> and product_model = #{productModel}</if>
             <if test="productSpecification != null "> and product_specification = #{productSpecification}</if>
-
+            <if test="orderNumber!=null">and order_number = #{orderNumber}</if>
+            <if test="productionOrderNumber!=null">and production_order_number =#{productionOrderNumber}</if>
         </where>
     </select>
     
@@ -126,7 +128,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="productCode != null ">product_code,</if>
             <if test="productName != null ">product_name,</if>
             <if test="prouuctModel != null ">prouuct_model,</if>
-            <if test="productSpecification != null ">product_specification</if>
+            <if test="productSpecification != null ">product_specification,</if>
+            <if test="item.orderNumber!=null">order_number,</if>
+            <if test="item.productionOrderNumber!=null">production_order_number,</if>
         </trim>
         <trim prefix="values (" suffix=")" suffixOverrides=",">
             <if test="materialCode != null and materialCode != ''">#{materialCode},</if>
@@ -161,6 +165,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="productName != null ">#{productName},</if>
             <if test="prouuctModel != null ">#{prouuctModel},</if>
             <if test="productSpecification != null ">#{productSpecification}</if>
+            <if test="item.orderNumber!=null">#{orderNumber},</if>
+            <if test="item.productionOrderNumber!=null">#{productionOrderNumber},</if>
          </trim>
     </insert>
     <insert id="insertMaterialRetentionLogBatch" parameterType="com.zkqy.amichi.jd.domain.MaterialRetentionLogVo" useGeneratedKeys="true" keyProperty="id">
@@ -201,7 +207,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
                 <if test="item.productSpecification != null ">product_specification,</if>
                 <if test="item.materialType!=null">material_type,</if>
                 <if test="item.flowSequenceNumber!=null">flow_sequence_number,</if>
-                <if test="item.process!=null">process</if>
+                <if test="item.process!=null">process,</if>
+                <if test="item.orderNumber!=null">order_number,</if>
+                <if test="item.productionOrderNumber!=null">production_order_number,</if>
             </trim>
             VALUES
             <trim prefix="(" suffix=")" suffixOverrides=",">
@@ -239,7 +247,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
                 <if test="item.productSpecification != null ">#{item.productSpecification},</if>
                 <if test="item.materialType!=null">#{item.materialType},</if>
                 <if test="item.flowSequenceNumber!=null">#{item.flowSequenceNumber},</if>
-                <if test="item.process!=null">#{item.process}</if>
+                <if test="item.process!=null">#{item.process},</if>
+                <if test="item.orderNumber!=null">#{item.orderNumber},</if>
+                <if test="item.productionOrderNumber!=null">#{item.productionOrderNumber},</if>
             </trim>
         </foreach>
     </insert>

+ 106 - 0
zkqy-fujian-amichi/src/main/resources/mapper/ProcedureListErpMapper.xml

@@ -0,0 +1,106 @@
+<?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.zkqy.amichi.mapper.ProcedureListErpMapper">
+    
+    <resultMap type="com.zkqy.amichi.domain.ProcedureListErp" id="ProcedureListErpResult">
+        <result property="id"    column="id"    />
+        <result property="procedureNumber"    column="procedure_number"    />
+        <result property="procedurName"    column="procedur_name"    />
+        <result property="remarks"    column="remarks"    />
+        <result property="createById"    column="create_by_id"    />
+        <result property="createBy"    column="create_by"    />
+        <result property="createTime"    column="create_time"    />
+        <result property="updateById"    column="update_by_id"    />
+        <result property="updateBy"    column="update_by"    />
+        <result property="updateTime"    column="update_time"    />
+        <result property="delFlag"    column="del_flag"    />
+        <result property="sort"    column="sort"    />
+        <result property="erpJobName"    column="erp_job_name"    />
+    </resultMap>
+
+    <sql id="selectProcedureListErpVo">
+        select id, procedure_number, procedur_name, remarks, create_by_id, create_by, create_time, update_by_id, update_by, update_time, del_flag, sort, erp_job_name from fjqydb.procedure_list_erp
+    </sql>
+
+    <select id="selectProcedureListErpList" parameterType="com.zkqy.amichi.domain.ProcedureListErp" resultMap="ProcedureListErpResult">
+        <include refid="selectProcedureListErpVo"/>
+        <where>  
+            <if test="procedureNumber != null  and procedureNumber != ''"> and procedure_number = #{procedureNumber}</if>
+            <if test="procedurName != null  and procedurName != ''"> and procedur_name like concat('%', #{procedurName}, '%')</if>
+            <if test="remarks != null  and remarks != ''"> and remarks = #{remarks}</if>
+            <if test="createById != null "> and create_by_id = #{createById}</if>
+            <if test="updateById != null "> and update_by_id = #{updateById}</if>
+            <if test="sort != null "> and sort = #{sort}</if>
+            <if test="erpJobName != null  and erpJobName != ''"> and erp_job_name like concat('%', #{erpJobName}, '%')</if>
+        </where>
+    </select>
+    
+    <select id="selectProcedureListErpById" parameterType="Long" resultMap="ProcedureListErpResult">
+        <include refid="selectProcedureListErpVo"/>
+        where id = #{id}
+    </select>
+
+    <insert id="insertProcedureListErp" parameterType="com.zkqy.amichi.domain.ProcedureListErp" useGeneratedKeys="true" keyProperty="id">
+        insert into fjqydb.procedure_list_erp
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="procedureNumber != null and procedureNumber != ''">procedure_number,</if>
+            <if test="procedurName != null and procedurName != ''">procedur_name,</if>
+            <if test="remarks != null">remarks,</if>
+            <if test="createById != null">create_by_id,</if>
+            <if test="createBy != null">create_by,</if>
+            <if test="createTime != null">create_time,</if>
+            <if test="updateById != null">update_by_id,</if>
+            <if test="updateBy != null">update_by,</if>
+            <if test="updateTime != null">update_time,</if>
+            <if test="delFlag != null">del_flag,</if>
+            <if test="sort != null">sort,</if>
+            <if test="erpJobName != null">erp_job_name,</if>
+         </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="procedureNumber != null and procedureNumber != ''">#{procedureNumber},</if>
+            <if test="procedurName != null and procedurName != ''">#{procedurName},</if>
+            <if test="remarks != null">#{remarks},</if>
+            <if test="createById != null">#{createById},</if>
+            <if test="createBy != null">#{createBy},</if>
+            <if test="createTime != null">#{createTime},</if>
+            <if test="updateById != null">#{updateById},</if>
+            <if test="updateBy != null">#{updateBy},</if>
+            <if test="updateTime != null">#{updateTime},</if>
+            <if test="delFlag != null">#{delFlag},</if>
+            <if test="sort != null">#{sort},</if>
+            <if test="erpJobName != null">#{erpJobName},</if>
+         </trim>
+    </insert>
+
+    <update id="updateProcedureListErp" parameterType="com.zkqy.amichi.domain.ProcedureListErp">
+        update fjqydb.procedure_list_erp
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="procedureNumber != null and procedureNumber != ''">procedure_number = #{procedureNumber},</if>
+            <if test="procedurName != null and procedurName != ''">procedur_name = #{procedurName},</if>
+            <if test="remarks != null">remarks = #{remarks},</if>
+            <if test="createById != null">create_by_id = #{createById},</if>
+            <if test="createBy != null">create_by = #{createBy},</if>
+            <if test="createTime != null">create_time = #{createTime},</if>
+            <if test="updateById != null">update_by_id = #{updateById},</if>
+            <if test="updateBy != null">update_by = #{updateBy},</if>
+            <if test="updateTime != null">update_time = #{updateTime},</if>
+            <if test="delFlag != null">del_flag = #{delFlag},</if>
+            <if test="sort != null">sort = #{sort},</if>
+            <if test="erpJobName != null">erp_job_name = #{erpJobName},</if>
+        </trim>
+        where id = #{id}
+    </update>
+
+    <delete id="deleteProcedureListErpById" parameterType="Long">
+        delete from fjqydb.procedure_list_erp where id = #{id}
+    </delete>
+
+    <delete id="deleteProcedureListErpByIds" parameterType="String">
+        delete from fjqydb.procedure_list_erp where id in
+        <foreach item="id" collection="array" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+    </delete>
+</mapper>

+ 24 - 8
zkqy-fujian-amichi/src/main/resources/mapper/ProcedureListMapper.xml

@@ -17,22 +17,38 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <result property="updateTime"    column="update_time"    />
         <result property="delFlag"    column="del_flag"    />
         <result property="sort"    column="sort"    />
+        <result property="bindingStatus"    column="binding_status"    />
     </resultMap>
 
     <sql id="selectProcedureListVo">
         select id, procedure_number, procedur_name, remarks, create_by_id, create_by, create_time, update_by_id, update_by, update_time, del_flag,sort from fjqydb.procedure_list
     </sql>
-
     <select id="selectProcedureListList" parameterType="com.zkqy.amichi.domain.ProcedureList" resultMap="ProcedureListResult">
-        <include refid="selectProcedureListVo"/>
+        SELECT
+        pl.id,
+        pl.procedure_number,
+        pl.procedur_name,
+        pl.remarks,
+        pl.sort,
+        CASE
+        WHEN ple.erp_job_name IS NULL
+        THEN'未绑定'
+        ELSE '已绑定'
+        END AS binding_status
+        FROM
+        fjqydb.procedure_list AS pl
+        LEFT JOIN fjqydb.procedure_list_erp AS ple ON ple.erp_job_name = pl.id
+
         <where>  
-            <if test="procedureNumber != null  and procedureNumber != ''"> and procedure_number = #{procedureNumber}</if>
-            <if test="procedurName != null  and procedurName != ''"> and procedur_name like concat('%', #{procedurName}, '%')</if>
-            <if test="remarks != null  and remarks != ''"> and remarks = #{remarks}</if>
-            <if test="createById != null "> and create_by_id = #{createById}</if>
-            <if test="updateById != null "> and update_by_id = #{updateById}</if>
+            <if test="procedureNumber != null  and procedureNumber != ''"> and pl.procedure_number = #{procedureNumber}</if>
+            <if test="procedurName != null  and procedurName != ''"> and  pl.procedur_name like concat('%', #{procedurName}, '%')</if>
+            <if test="remarks != null  and remarks != ''"> and  pl.remarks = #{remarks}</if>
+            <if test="createById != null "> and  pl.create_by_id = #{createById}</if>
+            <if test="updateById != null "> and  pl.update_by_id = #{updateById}</if>
         </where>
-        order by   sort
+        GROUP BY
+        pl.procedur_name
+        order by   pl.sort
     </select>
     
     <select id="selectProcedureListById" parameterType="Long" resultMap="ProcedureListResult">

+ 43 - 7
zkqy-fujian-amichi/src/main/resources/mapper/RingScanInformationMapper.xml

@@ -42,6 +42,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="deviceName != null  and deviceName != ''"> and device_name like concat('%', #{deviceName}, '%')</if>
             <if test="scanningTime != null "> and scanning_time = #{scanningTime}</if>
             <if test="contentInformation != null  and contentInformation != ''"> and content_information = #{contentInformation}</if>
+            <if test="nativeNumbering != null  and nativeNumbering != ''"> and native_numbering = #{nativeNumbering}</if>
+            <if test="productionOrderNumber != null  and productionOrderNumber != ''"> and production_order_number = #{productionOrderNumber}</if>
         </where>
     </select>
 
@@ -183,10 +185,42 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 
 
     <select id="selectRingScanInformationLog2" resultType="com.zkqy.amichi.domain.vo.RingScanInformationLogVo">
+--         SELECT
+--         sub.count,
+--         sub.process_name,
+--         sub.native_numbering,
+--         sub.order_number,
+--         sub.scanning_time,
+--         sub.production_order_number,
+--         sub.sort,
+--         rsif.`status`,
+--         rsif.start_time,
+--         rsif.end_time,
+--         rsif.total_quantity,
+--         rsif.production_order_total_quantity
+--         FROM
+--         (
+--             SELECT
+--             rsi.process_name,
+--             rsi.native_numbering,
+--             rsi.order_number,
+--             COUNT( rsi.process_name ) `AS count`,
+--             rsi.production_order_number,
+--             MAX( rsi.scanning_time ) AS scanning_time,
+--             pl.sort
+--             FROM
+--             fjqydb.ring_scan_information AS rsi
+--             LEFT JOIN fjqydb.procedure_list AS pl ON pl.procedur_name = rsi.process_name
+--             where
+--             rsi.execution_mark='1'
+--             GROUP BY
+--             rsi.production_order_number,
+--             rsi.process_name
+--         ) AS sub
+--         LEFT JOIN fjqydb.ring_scan_information_first AS rsif ON (sub.production_order_number = rsif.production_order_number)
         SELECT
-        sub.count,
+        count(sub.count) as `count`,
         sub.process_name,
-        sub.native_numbering,
         sub.order_number,
         sub.scanning_time,
         sub.production_order_number,
@@ -209,13 +243,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         FROM
         fjqydb.ring_scan_information AS rsi
         LEFT JOIN fjqydb.procedure_list AS pl ON pl.procedur_name = rsi.process_name
-        where
-        rsi.execution_mark='1'
+        WHERE
+        rsi.execution_mark = '1'
         GROUP BY
-        rsi.production_order_number,
-        rsi.process_name
+        rsi.production_order_number,rsi.process_name,rsi.native_numbering
         ) AS sub
-        LEFT JOIN fjqydb.ring_scan_information_first AS rsif ON (sub.production_order_number = rsif.production_order_number)
+        LEFT JOIN fjqydb.ring_scan_information_first AS rsif ON ( sub.production_order_number = rsif.production_order_number )
         <where>
             <if test="list != null and list.size()>0">
                 sub.production_order_number IN
@@ -227,6 +260,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
                 rsi.production_order_number = 'X'
             </if>
         </where>
+        GROUP BY
+            sub.production_order_number,
+            sub.process_name
         ORDER BY
         rsif.start_time desc,sub.sort
     </select>

+ 44 - 0
zkqy-ui/src/api/amichi/erpProcessList/erpProcess.js

@@ -0,0 +1,44 @@
+import request from '@/utils/request'
+
+// 查询erp工序列表列表
+export function listErpProcess(query) {
+  return request({
+    url: '/erpProcessList/erpProcess/list',
+    method: 'get',
+    params: query
+  })
+}
+
+// 查询erp工序列表详细
+export function getErpProcess(id) {
+  return request({
+    url: '/erpProcessList/erpProcess/' + id,
+    method: 'get'
+  })
+}
+
+// 新增erp工序列表
+export function addErpProcess(data) {
+  return request({
+    url: '/erpProcessList/erpProcess',
+    method: 'post',
+    data: data
+  })
+}
+
+// 修改erp工序列表
+export function updateErpProcess(data) {
+  return request({
+    url: '/erpProcessList/erpProcess',
+    method: 'put',
+    data: data
+  })
+}
+
+// 删除erp工序列表
+export function delErpProcess(id) {
+  return request({
+    url: '/erpProcessList/erpProcess/' + id,
+    method: 'delete'
+  })
+}

+ 7 - 0
zkqy-ui/src/router/index.js

@@ -80,6 +80,13 @@ export const constantRoutes = [
     },
     hidden: true
   },
+  {
+    path: '/procedureList/erplist/index',
+    component: () => {
+      return import('@/views/amichi/procedureList/erplist/index.vue')
+    },
+    hidden: true
+  },
   {
     path: '/amichi/print/FlowCardPrint',
     component: () => {

+ 20 - 1
zkqy-ui/src/views/amichi/MaterialRetentionLog/index.vue

@@ -1,6 +1,22 @@
 <template>
   <div class="app-container">
-    <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
+    <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="90px">
+      <el-form-item label="订单号" prop="orderNumber">
+        <el-input
+          v-model="queryParams.orderNumber"
+          placeholder="请输入订单号"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="生产订单号" prop="productionOrderNumber">
+        <el-input
+          v-model="queryParams.productionOrderNumber"
+          placeholder="请输入订单号"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
       <el-form-item label="物料编码" prop="materialCode">
         <el-input
           v-model="queryParams.materialCode"
@@ -71,6 +87,9 @@
 
     <el-table v-loading="loading"  style="margin-top: 20px" :data="logList" @selection-change="handleSelectionChange">
       <el-table-column type="selection" width="55" align="center" />
+
+      <el-table-column label="订单号" align="center" prop="orderNumber" />
+      <el-table-column label="生产订单号" align="center" prop="productionOrderNumber" />
       <el-table-column label="产品编码" align="center" prop="productCode" />
       <el-table-column label="物料编码" align="center" prop="materialCode" />
       <el-table-column label="物料名称" align="center" prop="materialName" />

+ 18 - 18
zkqy-ui/src/views/amichi/planTask/salesPlan.vue

@@ -18,16 +18,16 @@
 <!--            @keyup.enter.native="handleQueryDz"-->
 <!--          />-->
 <!--        </el-form-item>-->
-        <el-form-item label="完成时间" prop="completiontime">
-          <el-date-picker
-            v-model="queryParams.completiontime"
-            type="date"
-            @keyup.enter.native="handleQueryDz"
-            format="yyyy 年 MM 月 dd 日"
-            value-format="yyyy-MM-dd"
-            placeholder="请输入完成时间">
-          </el-date-picker>
-        </el-form-item>
+<!--        <el-form-item label="完成时间" prop="completiontime">-->
+<!--          <el-date-picker-->
+<!--            v-model="queryParams.completiontime"-->
+<!--            type="date"-->
+<!--            @keyup.enter.native="handleQueryDz"-->
+<!--            format="yyyy 年 MM 月 dd 日"-->
+<!--            value-format="yyyy-MM-dd"-->
+<!--            placeholder="请输入完成时间">-->
+<!--          </el-date-picker>-->
+<!--        </el-form-item>-->
         <el-form-item label="计划状态:" prop="taskStatus">
           <el-select
             v-model="queryParams.taskStatus"
@@ -251,14 +251,14 @@
 <!--          align="center"-->
 <!--          prop="completionTime">-->
 <!--        </el-table-column>-->
-        <el-table-column
-          label="完成时间"
-          align="center"
-          prop="completionTime">
-          <template slot-scope="scope">
-            {{ formatDateTime(scope.row.completionTime) }}
-          </template>
-        </el-table-column>
+<!--        <el-table-column-->
+<!--          label="完成时间"-->
+<!--          align="center"-->
+<!--          prop="completionTime">-->
+<!--          <template slot-scope="scope">-->
+<!--            {{ formatDateTime(scope.row.completionTime) }}-->
+<!--          </template>-->
+<!--        </el-table-column>-->
         <el-table-column
           label="计划状态"
           align="center"

+ 168 - 161
zkqy-ui/src/views/amichi/print/FlowCardPrint.vue

@@ -1,20 +1,21 @@
 <template>
   <div>
-    <div class="tools" style="width: 900px;height:40px; display: flex; justify-content: space-between; align-items: center;position: relative">
-      <div style="position: relative">
-        <pagination
-          v-show="total>0"
-          :total="total"
-          :page.sync="queryParams.pageNum"
-          :limit.sync="queryParams.pageSize"
-          @pagination="flowCardListApi"
-          :page-sizes="[5,10,20]"
-          style="position: absolute;right: -508px;top: -40px"
-        />
+    <div class="tools" style="width: 100%;height:80px; ">
+      <div style="width:1250px;height:80px;display: flex; justify-content: space-between; align-items: center;">
+        <div style="width: 1000px;height: 40px">
+          <pagination
+            v-show="total>0"
+            :total="total"
+            :page.sync="queryParams.pageNum"
+            :limit.sync="queryParams.pageSize"
+            @pagination="flowCardListApi"
+            :page-sizes="[5,10,20]"
+          />
+        </div>
+        <div style="width: 200px;height: 40px">
+          <el-button type="primary" icon="el-icon-search"  size="mini"  v-print="printViewInfo">打印</el-button>
+        </div>
       </div>
-       <div style="position: relative">
-         <el-button type="primary" icon="el-icon-search"  size="mini"  v-print="printViewInfo" style="position:absolute;right: -208px;top: -15px">打印</el-button>
-       </div>
     </div>
     <div class="base" id="printView" >
       <div class="box" style="page-break-after:always;"  v-for="(item,index) in listDate" v-if="index%2==0">
@@ -506,6 +507,10 @@ export default {
 
 </script>
 <style media="print" scoped>
+::v-deep .pagination-container {
+    margin-top: -10px;
+}
+
 .bzx{
   width: 454px;
   max-height: 115px;
@@ -539,155 +544,157 @@ export default {
     display: none; /* 隐藏打印区域不需要打印的内容 */
   }
 }
-.heg{
-  height: 30px;
-}
-.heg td{
-  height: 30px;
-}
-.jc{
-  font-weight: bold;
-  font-size: 50px;
-}
-.page-break {
-  page-break-after: always;
-  position: relative;
-}
-.tools {
-  margin-top: 10px;
-  display: flex;
-  justify-content: flex-end;
-  margin-bottom: 10px;
-}
-*{
-  margin: 0 auto;
-  padding: 0;
-}
-.box{
-  font-size: 21px;
-  width: 1250px;
-  /* border: 1px solid red; */
-  display: flex;
-  justify-content: start;
-  margin-bottom: 10px;
-}
-td{
-  text-align: center;
+.base{
+  .heg{
+    height: 30px;
+  }
+  .heg td{
+    height: 30px;
+  }
+  .jc{
+    font-weight: bold;
+    font-size: 50px;
+  }
+  .page-break {
+    page-break-after: always;
+    position: relative;
+  }
+  .tools {
+    margin-top: 10px;
+    display: flex;
+    justify-content: flex-end;
+    margin-bottom: 10px;
+  }
+  *{
+    margin: 0 auto;
+    padding: 0;
+  }
+  .box{
+    font-size: 21px;
+    width: 1250px;
+    /* border: 1px solid red; */
+    display: flex;
+    justify-content: start;
+    margin-bottom: 10px;
+  }
+  td{
+    text-align: center;
 
-}
-.left{
-  width: 48%;
-}
-.right{
-  width: 48%;
-}
-.left-top-table{
-  width: 100%;
-  border: 2px solid black;
-  border-collapse: collapse;
-  color: black;
-  font-weight: bold;
-}
-.left-top-table tr td{
-  padding: 4px 4px;
-  word-wrap:break-word;
-  word-break:break-all;
-  color: black;
-  font-weight: bold;
-}
-.right-top-table{
-  width: 100%;
-  border: 1px solid black;
-  border-collapse: collapse;
-  color: black;
-  font-weight: bold;
-  color: black;
-  font-weight: bold;
-}
-.right-top-table tr td{
-  padding: 4px 4px;
-  word-wrap:break-word;
-  word-break:break-all;
-  color: black;
-  font-weight: bold;
-}
-.erweima{
-  width: 80px;
-  height: 80px;;
-  background-color: red;
-  margin-top: 8px;
-}
-.titleBox{
-  display: flex;
-  color: black;
-  width: 100%;
-  height: 120px;
-  font-weight: bold;
-}
+  }
+  .left{
+    width: 48%;
+  }
+  .right{
+    width: 48%;
+  }
+  .left-top-table{
+    width: 100%;
+    border: 2px solid black;
+    border-collapse: collapse;
+    color: black;
+    font-weight: bold;
+  }
+  .left-top-table tr td{
+    padding: 4px 4px;
+    word-wrap:break-word;
+    word-break:break-all;
+    color: black;
+    font-weight: bold;
+  }
+  .right-top-table{
+    width: 100%;
+    border: 1px solid black;
+    border-collapse: collapse;
+    color: black;
+    font-weight: bold;
+    color: black;
+    font-weight: bold;
+  }
+  .right-top-table tr td{
+    padding: 4px 4px;
+    word-wrap:break-word;
+    word-break:break-all;
+    color: black;
+    font-weight: bold;
+  }
+  .erweima{
+    width: 80px;
+    height: 80px;;
+    background-color: red;
+    margin-top: 8px;
+  }
+  .titleBox{
+    display: flex;
+    color: black;
+    width: 100%;
+    height: 120px;
+    font-weight: bold;
+  }
 
-.left-top-table .titleBox .xh{
-  position: relative;
-}
-.left-top-table .titleBox .xh span{
-  position: absolute;
-  width: 80px;
-  left: -421px;
-  top: 80px;
-}
-.left-top-table .titleBox .time span{
-  position: absolute;
-  left: 290px;
-  top: 75px;
-}
-.right-top-table .titleBox .time span{
-  position: absolute;
-  left: 290px;
-  top: 82px;
-}
-.titleBox .time span i{
-  font-style: normal;
-}
-.titleBox .title{
-  margin-left: 60px;
-  margin-top: 7px;
-  font-family: 'Courier New', Courier, monospace;
-}
-.abc{
-  color: rebeccapurple;
-  font-size: 15px;
-  /* word-wrap: break-word; */
-  /* white-space: pre-wrap; */
-}
-.right-top-table .titleBox .xh{
-  position: relative;
-}
-.right-top-table .titleBox .xh span{
-  position: absolute;
-  width: 80px;
-  left: -424px;
-  top: 80px;
-}
+  .left-top-table .titleBox .xh{
+    position: relative;
+  }
+  .left-top-table .titleBox .xh span{
+    position: absolute;
+    width: 80px;
+    left: -421px;
+    top: 80px;
+  }
+  .left-top-table .titleBox .time span{
+    position: absolute;
+    left: 290px;
+    top: 75px;
+  }
+  .right-top-table .titleBox .time span{
+    position: absolute;
+    left: 290px;
+    top: 82px;
+  }
+  .titleBox .time span i{
+    font-style: normal;
+  }
+  .titleBox .title{
+    margin-left: 60px;
+    margin-top: 7px;
+    font-family: 'Courier New', Courier, monospace;
+  }
+  .abc{
+    color: rebeccapurple;
+    font-size: 15px;
+    /* word-wrap: break-word; */
+    /* white-space: pre-wrap; */
+  }
+  .right-top-table .titleBox .xh{
+    position: relative;
+  }
+  .right-top-table .titleBox .xh span{
+    position: absolute;
+    width: 80px;
+    left: -424px;
+    top: 80px;
+  }
 
-.right-top-table .titleBox .time span{
-  position: absolute;
-  left: 290px;
-  top: 82px;
-}
-.right-top-table .titleBox .time span{
-  position: absolute;
-  left: 290px;
-  top: 82px;
-}
-.left-top-table td{
-  border: 3px solid black;
-}
-.right-top-table td{
-  border: 3px solid black;
-}
-.right-top-table td{
-  border: 3px solid black;
-}
-.right-top-table td{
-  border: 3px solid black;
+  .right-top-table .titleBox .time span{
+    position: absolute;
+    left: 290px;
+    top: 82px;
+  }
+  .right-top-table .titleBox .time span{
+    position: absolute;
+    left: 290px;
+    top: 82px;
+  }
+  .left-top-table td{
+    border: 3px solid black;
+  }
+  .right-top-table td{
+    border: 3px solid black;
+  }
+  .right-top-table td{
+    border: 3px solid black;
+  }
+  .right-top-table td{
+    border: 3px solid black;
+  }
 }
 </style>

+ 311 - 0
zkqy-ui/src/views/amichi/procedureList/erplist/index.vue

@@ -0,0 +1,311 @@
+<template>
+  <div class="app-container">
+    <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
+      <el-form-item label="工序编号" prop="procedureNumber">
+        <el-input
+          v-model="queryParams.procedureNumber"
+          placeholder="请输入工序编号"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="工序名称" prop="procedurName">
+        <el-input
+          v-model="queryParams.procedurName"
+          placeholder="请输入工序名称"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item>
+        <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>
+      </el-form-item>
+    </el-form>
+
+    <el-row :gutter="10" class="mb8">
+      <el-col :span="1.5">
+        <el-button
+          type="primary"
+          plain
+          icon="el-icon-plus"
+          size="mini"
+          @click="handleAdd"
+          v-hasPermi="['erpProcessList:erpProcess:add']"
+        >新增</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="success"
+          plain
+          icon="el-icon-edit"
+          size="mini"
+          :disabled="single"
+          @click="handleUpdate"
+          v-hasPermi="['erpProcessList:erpProcess:edit']"
+        >修改</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="danger"
+          plain
+          icon="el-icon-delete"
+          size="mini"
+          :disabled="multiple"
+          @click="handleDelete"
+          v-hasPermi="['erpProcessList:erpProcess:remove']"
+        >删除</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="warning"
+          plain
+          icon="el-icon-download"
+          size="mini"
+          @click="handleExport"
+          v-hasPermi="['erpProcessList:erpProcess:export']"
+        >导出</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="primary"
+          plain
+          icon="el-icon-back"
+          size="mini"
+          @click="fhsy"
+          v-hasPermi="['erpProcessList:erpProcess:export']"
+        >返回上一页</el-button>
+      </el-col>
+      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
+    </el-row>
+
+    <el-table v-loading="loading" :data="erpProcessList" @selection-change="handleSelectionChange" style="margin-top: 20px">
+      <el-table-column type="selection" width="55" align="center" />
+<!--      <el-table-column label="主键" align="center" prop="id" />-->
+      <el-table-column label="工序编号" align="center" prop="procedureNumber" />
+      <el-table-column label="工序名称" align="center" prop="procedurName" />
+      <el-table-column label="备注" align="center" prop="remarks" />
+      <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
+        <template slot-scope="scope">
+          <el-dropdown @command="(command)=>{handleCommand(command, scope.row)}">
+            <el-button type="warning">
+              操作<i class="el-icon-arrow-down el-icon--right"></i>
+            </el-button>
+            <el-dropdown-menu slot="dropdown">
+              <el-dropdown-item  icon="el-icon-edit"  command="handleUpdate">修改</el-dropdown-item>
+              <el-dropdown-item  icon="el-icon-delete" command="handleDelete">删除</el-dropdown-item>
+            </el-dropdown-menu>
+          </el-dropdown>
+        </template>
+      </el-table-column>
+    </el-table>
+
+    <pagination
+      v-show="total>0"
+      :total="total"
+      :page.sync="queryParams.pageNum"
+      :limit.sync="queryParams.pageSize"
+      @pagination="getList"
+    />
+
+    <!-- 添加或修改erpProcess对话框 -->
+    <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
+      <el-form ref="form" :model="form" :rules="rules" label-width="80px">
+        <el-form-item label="工序编号" prop="procedureNumber">
+          <el-input v-model="form.procedureNumber" placeholder="请输入工序编号" />
+        </el-form-item>
+        <el-form-item label="工序名称" prop="procedurName">
+          <el-input v-model="form.procedurName" placeholder="请输入工序名称" />
+        </el-form-item>
+        <el-form-item label="备注" prop="remarks">
+          <el-input v-model="form.remarks" placeholder="请输入备注" />
+        </el-form-item>
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="submitForm">确 定</el-button>
+        <el-button @click="cancel">取 消</el-button>
+      </div>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+import { listErpProcess, getErpProcess, delErpProcess, addErpProcess, updateErpProcess } from "@/api/amichi/erpProcessList/erpProcess";
+
+export default {
+  name: "ErpProcess",
+  data() {
+    return {
+      // 遮罩层
+      loading: true,
+      // 选中数组
+      ids: [],
+      // 非单个禁用
+      single: true,
+      // 非多个禁用
+      multiple: true,
+      // 显示搜索条件
+      showSearch: true,
+      // 总条数
+      total: 0,
+      // erpProcess表格数据
+      erpProcessList: [],
+      // 弹出层标题
+      title: "",
+      // 是否显示弹出层
+      open: false,
+      // 查询参数
+      queryParams: {
+        pageNum: 1,
+        pageSize: 10,
+        procedureNumber: null,
+        procedurName: null,
+        remarks: null,
+        createById: null,
+        updateById: null,
+        sort: null,
+        erpJobName: null
+      },
+      // 表单参数
+      form: {},
+      // 表单校验
+      rules: {
+        procedureNumber: [
+          { required: true, message: "工序编号不能为空", trigger: "blur" }
+        ],
+        procedurName: [
+          { required: true, message: "工序名称不能为空", trigger: "blur" }
+        ],
+        sort: [
+          { required: true, message: "排序不能为空", trigger: "blur" }
+        ],
+      }
+    };
+  },
+  created() {
+    this.queryParams.erpJobName =this.$route.query.id;
+    this.getList();
+  },
+  methods: {
+    fhsy(){
+      console.log("ddddde")
+      this.$router.back();
+    },
+    //下拉菜单点击事件
+    handleCommand(command, row) {
+      switch (command) {
+        case "handleUpdate":
+          this.handleUpdate(row)
+          break;
+        case "handleDelete":
+          this.handleDelete(row)
+          break;
+        default:
+          break;
+      }
+    },
+    /** 查询erpProcess列表 */
+    getList() {
+      this.loading = true;
+      listErpProcess(this.queryParams).then(response => {
+        this.erpProcessList = response.rows;
+        this.total = response.total;
+        this.loading = false;
+      });
+    },
+    // 取消按钮
+    cancel() {
+      this.open = false;
+      this.reset();
+    },
+    // 表单重置
+    reset() {
+      this.form = {
+        id: null,
+        procedureNumber: null,
+        procedurName: null,
+        remarks: null,
+        createById: null,
+        createBy: null,
+        createTime: null,
+        updateById: null,
+        updateBy: null,
+        updateTime: null,
+        delFlag: null,
+        sort: null,
+        erpJobName: null
+      };
+      this.resetForm("form");
+    },
+    /** 搜索按钮操作 */
+    handleQuery() {
+      this.queryParams.pageNum = 1;
+      this.getList();
+    },
+    /** 重置按钮操作 */
+    resetQuery() {
+      this.resetForm("queryForm");
+      this.handleQuery();
+    },
+    // 多选框选中数据
+    handleSelectionChange(selection) {
+      this.ids = selection.map(item => item.id)
+      this.single = selection.length!==1
+      this.multiple = !selection.length
+    },
+    /** 新增按钮操作 */
+    handleAdd() {
+      this.reset();
+      this.open = true;
+      this.form.erpJobName =this.queryParams.erpJobName;
+      this.title = "添加ERP工序";
+    },
+    /** 修改按钮操作 */
+    handleUpdate(row) {
+      this.reset();
+      const id = row.id || this.ids
+      getErpProcess(id).then(response => {
+        this.form = response.data;
+        this.open = true;
+        this.title = "修改ERP工序";
+      });
+    },
+    /** 提交按钮 */
+    submitForm() {
+      this.$refs["form"].validate(valid => {
+        if (valid) {
+          if (this.form.id != null) {
+            updateErpProcess(this.form).then(response => {
+              this.$modal.msgSuccess("修改成功");
+              this.open = false;
+              this.getList();
+            });
+          } else {
+            addErpProcess(this.form).then(response => {
+              this.$modal.msgSuccess("新增成功");
+              this.open = false;
+              this.getList();
+            });
+          }
+        }
+      });
+    },
+    /** 删除按钮操作 */
+    handleDelete(row) {
+      const ids = row.id || this.ids;
+      this.$modal.confirm('是否确认删除erpProcess编号为"' + ids + '"的数据项?').then(function() {
+        return delErpProcess(ids);
+      }).then(() => {
+        this.getList();
+        this.$modal.msgSuccess("删除成功");
+      }).catch(() => {});
+    },
+    /** 导出按钮操作 */
+    handleExport() {
+      this.download('erpProcessList/erpProcess/export', {
+        ...this.queryParams
+      }, `erpProcess_${new Date().getTime()}.xlsx`)
+    }
+  }
+};
+</script>

+ 33 - 1
zkqy-ui/src/views/amichi/procedureList/list/index.vue

@@ -75,6 +75,7 @@
       <el-table-column label="工序编号" align="center" prop="procedureNumber" />
       <el-table-column label="工序名称" align="center" prop="procedurName" />
       <el-table-column label="工序排序" align="center" prop="sort" />
+      <el-table-column label="绑定状态" align="center" prop="bindingStatus" />
       <el-table-column label="备注" align="center" prop="remarks" />
 
       <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
@@ -86,6 +87,7 @@
             <el-dropdown-menu slot="dropdown">
               <el-dropdown-item  icon="el-icon-edit"  command="handleUpdate">修改</el-dropdown-item>
               <el-dropdown-item  icon="el-icon-delete" command="handleDelete">删除</el-dropdown-item>
+              <el-dropdown-item  icon="el-icon-edit" command="gxbd">ERP工序绑定</el-dropdown-item>
             </el-dropdown-menu>
           </el-dropdown>
         </template>
@@ -112,11 +114,23 @@
         <el-form-item label="工序排序" prop="sort">
           <el-input v-model="form.sort" placeholder="请输入工序排序值" />
         </el-form-item>
+<!--        <el-form-item label="工序排序" prop="sort">-->
+<!--            <el-select v-model="form.erpJobName"    multiple placeholder="请选择ERP工序进行绑定">-->
+<!--              <el-option-->
+<!--                v-for="item in cities"-->
+<!--                :key="item.value"-->
+<!--                :label="item.label"-->
 
+<!--                :value="item.value">-->
+<!--                <el-checkbox v-model="item.check" @change="isChecked(item)">-->
+<!--                  {{ item.label }}-->
+<!--                </el-checkbox>-->
+<!--              </el-option>-->
+<!--            </el-select>-->
+<!--        </el-form-item>-->
         <el-form-item label="备注" prop="remarks">
           <el-input v-model="form.remarks" placeholder="请输入备注" />
         </el-form-item>
-
       </el-form>
       <div slot="footer" class="dialog-footer">
         <el-button type="primary" @click="submitForm">确 定</el-button>
@@ -131,6 +145,11 @@ export default {
   name: "List",
   data() {
     return {
+      cities:[
+        {value:"1",label:"焊接"},
+        {value:"3",label:"焊接2"},
+        {value:"2",label:"焊接2"},
+      ],
       // 遮罩层
       loading: true,
       // 选中数组
@@ -188,10 +207,23 @@ export default {
         case "handleDelete":
           this.handleDelete(row)
           break;
+        case "gxbd":
+          this.gxbd(row)
+          break;
         default:
           break;
       }
     },
+    gxbd(row){
+      console.log("erp工序绑定")
+      //完整写法
+      this.$router.push({
+        path: '/amichi/basic/jcsj/procedureList/erplist/index',
+        query: {
+          "id": row.id,
+        }
+      });
+    },
     /** 查询工序列表列表 */
     getList() {
       this.loading = true;

+ 2 - 2
zkqy-ui/src/views/login.vue

@@ -307,10 +307,10 @@ export default {
             Cookies.remove("rememberMe");
           }
           let form = {
-              uri: "?client_id=hmc&scope=basic&response_type=code&state=AB1357&redirect_uri=http://192.168.2.127:8066/oauth/callback",
+               uri: "?client_id=hmc&scope=basic&response_type=code&state=AB1357&redirect_uri=http://192.168.2.127:8066/oauth/callback",
                // uri:"?client_id=mestools&scope=basic&response_type=code&state=AB1357&redirect_uri=http://62.234.61.92:8055/oauth/callback",
                // uri:"?client_id=mestools&scope=basic&response_type=code&state=AB1357&redirect_uri=http://192.168.128.171:8066/oauth/callback",
-               //  uri:"?client_id=mestools&scope=basic&response_type=code&state=AB1357&redirect_uri=http://192.168.2.135:8066/oauth/callback",
+              //  uri:"?client_id=mestools&scope=basic&response_type=code&state=AB1357&redirect_uri=http://192.168.2.135:8066/oauth/callback",
              //uri:"?client_id=hmc&scope=basic&response_type=code&state=AB1357&redirect_uri=http://192.168.110.85:8066/oauth/callback",
              //uri:"?client_id=hmc&scope=basic&response_type=code&state=AB1357&redirect_uri=http://192.168.110.83:8066/oauth/callback",
             // uri:"?client_id=hmc&scope=basic&response_type=code&state=AB1357&redirect_uri=http://172.20.10.5:8066/oauth/callback",