瀏覽代碼

fix:修正日志反推排序

hmc 6 月之前
父節點
當前提交
1bbf1b8f3d

+ 47 - 0
zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/controller/RingScanInformationController.java

@@ -1,17 +1,20 @@
 package com.zkqy.amichi.controller;
 
+import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.stream.Collectors;
 import javax.servlet.http.HttpServletResponse;
 
+import com.github.pagehelper.PageHelper;
 import com.github.pagehelper.PageInfo;
 import com.zkqy.amichi.domain.RingScanInformationFirst;
 import com.zkqy.amichi.domain.vo.RingScanInformationLogVo;
 import com.zkqy.amichi.domain.vo.RingScanInformationQueryVo;
 import com.zkqy.amichi.domain.vo.RingScanInformationVo;
 import com.zkqy.amichi.mapper.RingScanInformationFirstMapper;
+import com.zkqy.amichi.mapper.RingScanInformationMapper;
 import com.zkqy.amichi.service.IRingScanInformationService;
 import com.zkqy.amichi.utils.MaUtils;
 import com.zkqy.common.annotation.Anonymous;
@@ -19,6 +22,7 @@ import com.zkqy.common.annotation.Log;
 import com.zkqy.common.constant.HttpStatus;
 import com.zkqy.common.core.controller.BaseController;
 import com.zkqy.common.core.domain.AjaxResult;
+import com.zkqy.common.core.domain.R;
 import com.zkqy.common.core.page.TableDataInfo;
 import com.zkqy.common.enums.BusinessType;
 import com.zkqy.common.utils.PageUtils;
@@ -59,6 +63,49 @@ public class RingScanInformationController extends BaseController
         return getDataTable(list);
     }
 
+    @Autowired
+    RingScanInformationMapper ringScanInformationMapper;
+    /**
+     * 手持分页显示
+     */
+//    @PreAuthorize("@ss.hasPermi('ringScanInformation:information:list')")
+    @Anonymous
+    @GetMapping("/scfylist")
+    public  AjaxResult scfylist(RingScanInformation ringScanInformation)
+    {
+        //验证当前页码
+        if(ringScanInformation.getPageNum()<=1){
+            ringScanInformation.setPageNum(1);
+        }
+        PageHelper.clearPage();
+        //查询总条数
+        int i = ringScanInformationMapper.selectRingScanInformationListScfyCount(ringScanInformation);
+        if(i<=0){
+            List<Map> list1=new ArrayList<>();
+            return AjaxResult.success(list1);
+        }
+        int totalPages = (int) Math.ceil((double) i / ringScanInformation.getPageSize());
+        // 验证当前页码是否超过总页数
+//        if (ringScanInformation.getPageNum() > totalPages) {
+//            ringScanInformation.setPageNum(totalPages);
+//        }
+        // 计算偏移量
+        int offset = (ringScanInformation.getPageNum() - 1) * ringScanInformation.getPageSize();
+        ringScanInformation.setOffset(offset);
+
+        List<RingScanInformation> list = ringScanInformationService.selectRingScanInformationListFy(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());
+            list1.add(hashMap);
+        });
+        return AjaxResult.success(list1);
+    }
+
     /**
      * 生成员工二维码
      */

+ 28 - 0
zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/domain/RingScanInformation.java

@@ -22,10 +22,38 @@ public class RingScanInformation extends BaseEntity
     /** 主键 */
     private Long id;
 
+    private  Integer offset;
+
+    public Integer getOffset() {
+        return offset;
+    }
+
+    public void setOffset(Integer offset) {
+        this.offset = offset;
+    }
+
     /** 扫描人 */
     private String personnelName;
 
+    private int pageNum;
+
+    public int getPageNum() {
+        return pageNum;
+    }
+
+    public void setPageNum(int pageNum) {
+        this.pageNum = pageNum;
+    }
+
+    public int getPageSize() {
+        return pageSize;
+    }
+
+    public void setPageSize(int pageSize) {
+        this.pageSize = pageSize;
+    }
 
+    private  int pageSize;
 
     /** 设备编号 */
     @Excel(name = "设备编号")

+ 151 - 0
zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/jd/domain/ErpRkVo.java

@@ -0,0 +1,151 @@
+package com.zkqy.amichi.jd.domain;
+
+import java.util.Map;
+
+public class ErpRkVo {
+
+    //物料编码
+    private  Map<String,String>  FMATERIALID;
+
+    //单位
+    private  Map<String,String>  FUnitID;
+
+    //仓库
+    private  Map<String,String> FSTOCKID;
+
+    //库存状态
+    private  Map<String,String> FSTOCKSTATUSID;
+
+    //实收数量
+    private  String  FQty;
+
+    //源单编号
+    private  String   FSRCBILLNO;
+
+    //源单类型
+    private  String  FSRCBILLTYPEID;
+
+    //实收数量(辅单位)
+    private  String  FExtAuxUnitQty;
+
+    //货主类型
+    private  String  FOWNERTYPEID;
+
+    //保管者类型
+    private  String  FKEEPERTYPEID;
+
+    //货主
+    private  Map<String,String> FOWNERID;
+
+    //保管者
+    private  Map<String,String> FKEEPERID;
+
+    //保管者
+    private  String FInstockDate;
+
+    public Map<String, String> getFMATERIALID() {
+        return FMATERIALID;
+    }
+
+    public void setFMATERIALID(Map<String, String> FMATERIALID) {
+        this.FMATERIALID = FMATERIALID;
+    }
+
+    public Map<String, String> getFUnitID() {
+        return FUnitID;
+    }
+
+    public void setFUnitID(Map<String, String> FUnitID) {
+        this.FUnitID = FUnitID;
+    }
+
+    public Map<String, String> getFSTOCKID() {
+        return FSTOCKID;
+    }
+
+    public void setFSTOCKID(Map<String, String> FSTOCKID) {
+        this.FSTOCKID = FSTOCKID;
+    }
+
+    public Map<String, String> getFSTOCKSTATUSID() {
+        return FSTOCKSTATUSID;
+    }
+
+    public void setFSTOCKSTATUSID(Map<String, String> FSTOCKSTATUSID) {
+        this.FSTOCKSTATUSID = FSTOCKSTATUSID;
+    }
+
+    public Map<String, String> getFOWNERID() {
+        return FOWNERID;
+    }
+
+    public void setFOWNERID(Map<String, String> FOWNERID) {
+        this.FOWNERID = FOWNERID;
+    }
+
+    public String getFQty() {
+        return FQty;
+    }
+
+    public void setFQty(String FQty) {
+        this.FQty = FQty;
+    }
+
+    public String getFSRCBILLNO() {
+        return FSRCBILLNO;
+    }
+
+    public void setFSRCBILLNO(String FSRCBILLNO) {
+        this.FSRCBILLNO = FSRCBILLNO;
+    }
+
+    public String getFSRCBILLTYPEID() {
+        return FSRCBILLTYPEID;
+    }
+
+    public void setFSRCBILLTYPEID(String FSRCBILLTYPEID) {
+        this.FSRCBILLTYPEID = FSRCBILLTYPEID;
+    }
+
+    public String getFExtAuxUnitQty() {
+        return FExtAuxUnitQty;
+    }
+
+    public void setFExtAuxUnitQty(String FExtAuxUnitQty) {
+        this.FExtAuxUnitQty = FExtAuxUnitQty;
+    }
+
+    public String getFOWNERTYPEID() {
+        return FOWNERTYPEID;
+    }
+
+    public void setFOWNERTYPEID(String FOWNERTYPEID) {
+        this.FOWNERTYPEID = FOWNERTYPEID;
+    }
+
+    public String getFKEEPERTYPEID() {
+        return FKEEPERTYPEID;
+    }
+
+    public void setFKEEPERTYPEID(String FKEEPERTYPEID) {
+        this.FKEEPERTYPEID = FKEEPERTYPEID;
+    }
+
+    public Map<String, String> getFKEEPERID() {
+        return FKEEPERID;
+    }
+
+    public void setFKEEPERID(Map<String, String> FKEEPERID) {
+        this.FKEEPERID = FKEEPERID;
+    }
+
+    public String getFInstockDate() {
+        return FInstockDate;
+    }
+
+    public void setFInstockDate(String FInstockDate) {
+        this.FInstockDate = FInstockDate;
+    }
+
+
+}

+ 17 - 6
zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/jd/service/impl/JdProductionOrderServiceImpl.java

@@ -2,6 +2,7 @@ package com.zkqy.amichi.jd.service.impl;
 
 import java.math.BigDecimal;
 import java.math.RoundingMode;
+import java.text.SimpleDateFormat;
 import java.time.LocalDateTime;
 import java.time.format.DateTimeFormatter;
 import java.util.*;
@@ -24,6 +25,7 @@ import com.zkqy.common.core.domain.AjaxResult;
 import com.zkqy.common.utils.DateUtils;
 import com.zkqy.common.utils.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.format.annotation.DateTimeFormat;
 import org.springframework.stereotype.Service;
 import com.zkqy.amichi.jd.mapper.JdProductionOrderMapper;
 import com.zkqy.amichi.jd.domain.JdProductionOrder;
@@ -492,7 +494,7 @@ public class JdProductionOrderServiceImpl implements JdProductionOrderService
         String query="{\n" +
                 "    \"FormId\": \"PRD_MO\",\n" +
                 "    \"FieldKeys\": \"FDescription,F_PONP_teshuyaoqiu,FBillNo,FBillType,FDate,FDocumentStatus," +
-                "FProductType,FMaterialId,FWorkShopID0,FQty,FStatus,,FSaleOrderNo,FPickMtrlStatus," +
+                "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" +
@@ -582,7 +584,7 @@ public class JdProductionOrderServiceImpl implements JdProductionOrderService
                             planTaskDetails.setMaterialId(a.getMaterialCode());//原材料编码
                             planTaskDetails.setMaterialName(a.getMaterialName());//名称
                             planTaskDetails.setQuantity(a.getQuantity());//数量
-                            planTaskDetails.setTimeOfRequest(a.getCompletionTime());//要货时间
+//                            planTaskDetails.setTimeOfRequest(a.getCompletionTime());//要货时间
                             planTaskDetails.setModelNumber(a.getModelNumber());//型号
                             planTaskDetails.setSpecification(a.getSpecification());//规格
                             planTaskDetails.setMaterialUnit(a.getUnit());//单位
@@ -597,7 +599,12 @@ public class JdProductionOrderServiceImpl implements JdProductionOrderService
                             planTaskDetails.setScheduledCommencement(a.getFPlanStartDate()); //计划开始时间
                             planTaskDetails.setScheduledCompletion(a.getFPlanFinishDate()); //计划完工时间
                             planTaskDetails.setRemark(a.getRemark());
-                            planTaskDetails.setTimeOfRequest(fDeliveryDate);
+                            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);
                         });
                     }
@@ -635,7 +642,7 @@ public class JdProductionOrderServiceImpl implements JdProductionOrderService
      */
     @Override
     public  AjaxResult pullWeldProductionOrder(){
-//金蝶工具key
+         //金蝶工具key
         K3CloudApi api = new K3CloudApi();
         // 获取当前时间
         LocalDateTime now = LocalDateTime.now();
@@ -750,7 +757,7 @@ public class JdProductionOrderServiceImpl implements JdProductionOrderService
                                     planTaskDetails.setMaterialId(a.getMaterialCode());//原材料编码
                                     planTaskDetails.setMaterialName(a.getMaterialName());//名称
                                     planTaskDetails.setQuantity(a.getQuantity());//数量
-                                    planTaskDetails.setTimeOfRequest(a.getCompletionTime());//要货时间
+//                                    planTaskDetails.setTimeOfRequest(a.getCompletionTime());//要货时间
                                     planTaskDetails.setModelNumber(a.getModelNumber());//型号
                                     planTaskDetails.setSpecification(a.getSpecification());//规格
                                     planTaskDetails.setMaterialUnit(a.getUnit());//单位
@@ -765,7 +772,11 @@ public class JdProductionOrderServiceImpl implements JdProductionOrderService
                                     planTaskDetails.setScheduledCommencement(a.getFPlanStartDate()); //计划开始时间
                                     planTaskDetails.setScheduledCompletion(a.getFPlanFinishDate()); //计划完工时间
                                     planTaskDetails.setRemark(a.getRemark());
-                                    planTaskDetails.setTimeOfRequest(fDeliveryDate);//要货日期
+                                    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);
                                 });
                             }

+ 7 - 0
zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/mapper/RingScanInformationMapper.java

@@ -33,6 +33,7 @@ public interface RingScanInformationMapper
      */
     public List<RingScanInformation> selectRingScanInformationList(RingScanInformation ringScanInformation);
 
+    public List<RingScanInformation> selectRingScanInformationListScfy(RingScanInformation ringScanInformation);
     /**
      * 查询指环王扫描日志信息列表
      *
@@ -95,4 +96,10 @@ public interface RingScanInformationMapper
     List<RingScanInformationLogVo> selectRingScanInformationLog2(List<String> orderNumberListString);
 
 
+    /**
+     * 总条数
+     * @param ringScanInformation1
+     * @return
+     */
+    int selectRingScanInformationListScfyCount(RingScanInformation ringScanInformation1);
 }

+ 457 - 12
zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/scheduling/ScheduledBean.java

@@ -1,16 +1,35 @@
 package com.zkqy.amichi.scheduling;
 
+import com.alibaba.fastjson2.JSON;
+import com.kingdee.bos.webapi.sdk.K3CloudApi;
 import com.zkqy.amichi.domain.MaterialBaseInfo;
+import com.zkqy.amichi.domain.PlanTaskDetails;
+import com.zkqy.amichi.domain.ProductionPlanningManagement;
+import com.zkqy.amichi.jd.domain.JdMaterialBaseInfoVo;
+import com.zkqy.amichi.jd.domain.JdProductionOrder;
+import com.zkqy.amichi.jd.domain.ProductionCardFlowVo;
+import com.zkqy.amichi.jd.mapper.JdProductionOrderMapper;
 import com.zkqy.amichi.jd.service.impl.JdMaterialInfoServiceImpl;
 import com.zkqy.amichi.jd.service.impl.JdProductionOrderServiceImpl;
 import com.zkqy.amichi.mapper.MaterialBaseInfoMapper;
+import com.zkqy.amichi.mapper.PlanTaskDetailsMapper;
+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.utils.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.scheduling.annotation.Scheduled;
 import org.springframework.stereotype.Component;
 import org.springframework.stereotype.Service;
 
+import java.text.SimpleDateFormat;
+import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
+import java.util.ArrayList;
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
 import java.util.stream.Collectors;
 
 
@@ -26,18 +45,444 @@ public class ScheduledBean {
     @Autowired
     JdProductionOrderServiceImpl productionOrderService;
 
-    @Scheduled(cron = "0 0/1 0/1 * * ?")
-    public void printLog(){
-//        //物料基本信息--防止流转卡信息缺失
-//        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...");
+    @Autowired
+    private JdProductionOrderMapper jdProductionOrderMapper;
+    @Autowired
+    private ProductionPlanningManagementMapper productionPlanningManagementMapper;
+
+    @Autowired
+    private PlanTaskDetailsMapper planTaskDetailsMapper;
+
+    @Autowired
+    private AmichiCommissionNumberGenerator generator;
+
+    @Autowired
+    private ProductionCardFlowMapper productionCardFlowMapper;
+
+    @Autowired
+    private JdMaterialInfoServiceImpl jdMaterialInfoService;
+
+    //============================正常计划数据定时拉取============================
+    /**
+     * //        //物料基本信息--防止流转卡信息缺失
+     * //        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")
+    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" +
+                "}";
+//
+        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());//特殊要求
+                    }
+
+                    //编号订单号
+                    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);
+        }
+    }
+
+    //基础物料信息添加
+    public AjaxResult pullMaterialBaseInfo() {
+        String queryString ="{\n" +
+                "    \"FormId\": \"BD_MATERIAL\",\n" +
+                "    \"FieldKeys\": \"FNumber,FName,FSpecification,FDescription,F_PONP_model,F_PONP_TieXinChangDu,F_PONP_JiKeDuanGai,F_PONP_ShuJu,F_PONP_xiangshu,F_PONP_YanSe,F_PONP_ShuoMingShu,F_PONP_HeGeZheng,F_PONP_PanPianJieKou,F_PONP_GongLv,F_PONP_ChengPinMa,F_PONP_MingPai,F_PONP_DianYaPinLv,F_PONP_KaiGuanXiang,F_PONP_TeShuYaoQiu,F_PONP_TeShuYaoQiu,F_PONP_BaoZhuangXiang\",\n" +
+                "    \"FilterString\": [{\"Left\":\"\",\"FieldName\":\"FCreateDate\",\"Compare\":\"13\",\"Value\":\"\",\"Right\":\"\",\"Logic\":0}],\n" +
+                "    \"OrderString\": \"\",\n" +
+                "    \"TopRowCount\": 0,\n" +
+                "    \"StartRow\": 0,\n" +
+                "    \"Limit\": 3000,\n" +
+                "    \"SubSystemId\": \"\"\n" +
+                "}";
+        //查询条件
+        Map map = JSON.parseObject(queryString, Map.class);
+        K3CloudApi api = new K3CloudApi();
+        int startRow = 0; // 起始行号
+        int limit = 3000; // 每次查询的数量
+        List<JdMaterialBaseInfoVo> mapList;
+        boolean flag = true;
+        //验证重复
+        MaterialBaseInfo materialBaseInfo=new MaterialBaseInfo();
+        List<MaterialBaseInfo> materialBaseInfos = materialBaseInfoMapper.selectMaterialBaseInfoListCode(materialBaseInfo);
+        List<String> collect = materialBaseInfos.parallelStream().map(MaterialBaseInfo::getMaterialCode).collect(Collectors.toList());
+        try {
+            do {
+                // 更新查询条件中的起始行号
+                map.put("StartRow", String.valueOf(startRow));
+                // 查询数据
+                String resultJson = api.billQuery(JSON.toJSONString(map));
+
+                if (resultJson.isEmpty()||resultJson.equals("[]")) {
+                    // 处理空结果的情况
+                    flag = false;
+                }else {
+                    mapList = JSON.parseArray(resultJson, JdMaterialBaseInfoVo.class);
+                    List<JdMaterialBaseInfoVo> collect1 = mapList.stream().filter(item -> !collect.contains(item.getMaterialCode())).collect(Collectors.toList());
+                    // 处理数据(例如插入到数据库)
+                    if(collect1.size()>0){
+                        int i = materialBaseInfoMapper.batchInsertMaterialBaseInfo(collect1);
+                    }
+                    if (mapList.size() < 3000) {
+                        flag = false;
+                    }
+                    // 更新起始行号
+                    startRow += limit;
+                    // 如果返回的数据量小于5000,说明已经没有更多的数据,结束循环
+                }
+            } while (flag);
+        } catch (Exception e) {
+            throw new RuntimeException(e);
+        }
+        //abc
+        return AjaxResult.success("基础物料信息拉取成功");
+    }
+
+    //查询销售明细
+    public List<Map> jdSalesOrderInfoS(String orderNumber){
+        K3CloudApi api = new K3CloudApi();
+        //查询内容
+        HashMap queryNR=new HashMap();
+        queryNR.put("FormId","SAL_SaleOrder");
+        List<String> fieldKeysList=new ArrayList<>();
+        fieldKeysList.add("FBillNo"); //单据号
+        fieldKeysList.add("F_PONP_Text"); //合同号
+        fieldKeysList.add("FCreateDate"); //创建时间
+        fieldKeysList.add("FNote"); //备注
+        fieldKeysList.add("F_PONP_Remarks1");//特殊要求
+        fieldKeysList.add("F_PONP_DATETIME");//要货日期
+        fieldKeysList.add("FDeliveryDate");//要货日期
+        fieldKeysList.add("FMaterialId.FNumber");//物料编码
+        fieldKeysList.add("FMaterialName");//物料编码
+        fieldKeysList.add("F_PONP_BaseProperty");//属性
+        fieldKeysList.add("FMaterialModel");//规格
+        fieldKeysList.add("FQty");//数量
+        fieldKeysList.add("F_PONP_Text1");//客户型号
+        fieldKeysList.add("F_PONP_Text2");//容量
+        fieldKeysList.add("F_PONP_GongLv");//功率
+        fieldKeysList.add("F_PONP_DianYaPinLv");//规格
+        fieldKeysList.add("F_PONP_MS");//描述
+//        fieldKeysList.add("F_PONP_yanse");//颜色
+//        fieldKeysList.add("F_PONP_mingpai");//铭牌
+//        fieldKeysList.add("F_PONP_hegezheng.FDataValue");//合格证
+//        fieldKeysList.add("F_PONP_shuomingshu.FDataValue");//说明书
+//        fieldKeysList.add("F_PONP_baozhuangxiang");//包装箱
+//        fieldKeysList.add("F_PONP_Text5");//开关箱
+        fieldKeysList.add("FUnitID.FName");//销售单位
+        fieldKeysList.add("FEntryNote");//备注
+        fieldKeysList.add("FNote");
+
+        queryNR.put("FieldKeys",fieldKeysList.stream().collect(Collectors.joining(",")));
+        //过滤条件组装
+        List<Map> conditionsList=new ArrayList<>();
+        HashMap conditions=new HashMap();
+        conditions.put("FieldName","FBillNo");
+        conditions.put("Compare","67");
+        conditions.put("Value",orderNumber);
+        conditions.put("Left","");
+        conditions.put("Right","");
+        conditions.put("Logic",1);
+        conditionsList.add(conditions);
+        queryNR.put("FilterString",conditionsList);
+        queryNR.put("OrderString","FBillNo DESC");
+        queryNR.put("TopRowCount",0);
+        queryNR.put("StartRow",0);
+        queryNR.put("Limit",2000);
+        queryNR.put("SubSystemId","");
+        try {
+            String jsonString = JSON.toJSONString(queryNR);
+            String resultJson = String.valueOf(api.billQuery(jsonString));
+            //查询返回结果json
+            List<Map> mapList = JSON.parseArray(resultJson, Map.class);
+            return  mapList;
+        } catch (Exception e) {
+            throw new RuntimeException(e);
+        }
+    }
+
+
+    //============================焊接计划数据定时拉取============================
+    @Scheduled(cron = "0 0/10 * * * ?", 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);
+
+                    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());
+                                }
+                                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);
+                                });
+                            }
+                        });
+                    }
+                    System.out.println(1);
+                    if (jdProductionOrders.size() < 5000) {
+                        flag = false;
+                    }
+                    // 更新起始行号
+                    startRow += limit;
+                    // 如果返回的数据量小于5000,说明已经没有更多的数据,结束循环
+                }
+            } while (flag);
+        }catch (Exception e){
+            System.out.println("出现了异常");
+        }
     }
 
 }

+ 13 - 0
zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/service/IRingScanInformationService.java

@@ -87,4 +87,17 @@ public interface IRingScanInformationService
     public int deleteRingScanInformationById(Long id);
 
 
+    /**
+     * 手持机分页展示扫码结果
+     * @param ringScanInformation
+     * @return
+     */
+    List<RingScanInformation> selectRingScanInformationListFy(RingScanInformation ringScanInformation);
+
+    /**
+     * 总条数
+     * @param ringScanInformation1
+     * @return
+     */
+    int  selectRingScanCount(RingScanInformation ringScanInformation1);
 }

+ 16 - 2
zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/service/impl/RingScanInformationServiceImpl.java

@@ -1,5 +1,6 @@
 package com.zkqy.amichi.service.impl;
 
+import java.util.LinkedHashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.stream.Collectors;
@@ -56,8 +57,11 @@ public class RingScanInformationServiceImpl implements IRingScanInformationServi
         //取真实展示数据
         List<RingScanInformationLogVo> ringScanInformations = ringScanInformationMapper.selectRingScanInformationLog2(orderNumberListString);
         //转换为map集合
-        Map<String, List<RingScanInformationLogVo>> mapByOrderNumber = ringScanInformations.parallelStream()
-                .collect(Collectors.groupingBy(RingScanInformationLogVo::getProductionOrderNumber));
+        Map<String, List<RingScanInformationLogVo>> mapByOrderNumber = ringScanInformations.stream()
+                .collect(
+                        Collectors.groupingBy(
+                                RingScanInformationLogVo::getProductionOrderNumber, LinkedHashMap::new, // 使用 LinkedHashMap 保持插入顺序
+                        Collectors.toList()));
         return mapByOrderNumber;
     }
 
@@ -128,4 +132,14 @@ public class RingScanInformationServiceImpl implements IRingScanInformationServi
     {
         return ringScanInformationMapper.deleteRingScanInformationById(id);
     }
+
+    @Override
+    public List<RingScanInformation> selectRingScanInformationListFy(RingScanInformation ringScanInformation) {
+        return ringScanInformationMapper.selectRingScanInformationListScfy(ringScanInformation);
+    }
+
+    @Override
+    public int selectRingScanCount(RingScanInformation ringScanInformation1) {
+        return ringScanInformationMapper.selectRingScanInformationListScfyCount(ringScanInformation1);
+    }
 }

+ 79 - 7
zkqy-fujian-amichi/src/main/java/com/zkqy/amichi/service/impl/StationInformationServiceImpl.java

@@ -2,30 +2,31 @@ package com.zkqy.amichi.service.impl;
 
 import java.time.Duration;
 import java.time.LocalDateTime;
-import java.util.Base64;
-import java.util.Date;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 import java.util.stream.Collectors;
 
 import cn.hutool.core.date.DateTime;
 import com.alibaba.fastjson2.JSON;
 import com.alibaba.fastjson2.JSONArray;
+import com.alibaba.fastjson2.JSONObject;
 import com.kingdee.bos.webapi.sdk.K3CloudApi;
 import com.zkqy.amichi.domain.*;
 import com.zkqy.amichi.domain.vo.StationProductScanningRingVo;
+import com.zkqy.amichi.jd.domain.ErpRkVo;
 import com.zkqy.amichi.jd.domain.JdMaterialInfoVo;
 import com.zkqy.amichi.jd.domain.JdProductionOrder;
 import com.zkqy.amichi.jd.domain.MaterialRetentionLogVo;
 import com.zkqy.amichi.mapper.*;
 import com.zkqy.amichi.utils.WarehouseEntryNumberGenerator;
 import com.zkqy.common.core.domain.R;
+import com.zkqy.common.core.domain.entity.SysDictData;
 import com.zkqy.common.utils.DateUtils;
 import com.zkqy.common.utils.StringUtils;
 import com.zkqy.execution.produce.dispersed.entity.BpmExecuteNodeLog;
 import com.zkqy.execution.produce.dispersed.entity.BpmExecuteProcess;
 import com.zkqy.execution.produce.dispersed.mapper.BpmExecuteNodeLogMapper;
 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.stereotype.Service;
@@ -1226,8 +1227,6 @@ public class StationInformationServiceImpl implements IStationInformationService
             newRingScanInformationFirst.setInspectionQuantity(i2.toString());
             return newRingScanInformationFirst;
         }
-
-
     }
 
 
@@ -1243,6 +1242,8 @@ public class StationInformationServiceImpl implements IStationInformationService
                 if(ringScanInformationFirst.getPackingQuantity().equals(ringScanInformationFirst.getProductionOrderTotalQuantity())){
                     //生成入库单
                     System.out.println("包装生成入库单");
+                    //入库这个生产订单下的所有产品信息
+
                     //改当前生产订单的状态
                     PlanTaskDetails planTaskDetails=new PlanTaskDetails();
                     planTaskDetails.setDemandDocument(productionOrderNumber);
@@ -1254,9 +1255,19 @@ public class StationInformationServiceImpl implements IStationInformationService
                 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);
                 }
@@ -1265,6 +1276,67 @@ public class StationInformationServiceImpl implements IStationInformationService
         return "数量够了入库";
     }
 
+    @Autowired
+   SysDictDataMapper dictDataMapper;
+    private  String  erpRk(PlanTaskDetails planTaskDetails2){
+        //erp入库
+        String rkJson="{\n" +
+                "    \"NeedUpDateFields\": [],\n" +
+                "    \"NeedReturnFields\": [],\n" +
+                "    \"IsDeleteEntry\": \"true\",\n" +
+                "    \"SubSystemId\": \"\",\n" +
+                "    \"IsVerifyBaseDataField\": \"false\",\n" +
+                "    \"IsEntryBatchFill\": \"true\",\n" +
+                "    \"ValidateFlag\": \"true\",\n" +
+                "    \"NumberSearch\": \"true\",\n" +
+                "    \"IsAutoAdjustField\": \"false\",\n" +
+                "    \"InterationFlags\": \"\",\n" +
+                "    \"IgnoreInterationFlag\": \"\",\n" +
+                "    \"IsControlPrecision\": \"false\",\n" +
+                "    \"ValidateRepeatJson\": \"false\",\n" +
+                "    \"Model\": {\n" +
+                "        \"FID\": 0,\n" +
+                "        \"FBillTypeID\": {\n" +
+                "            \"FNUMBER\": \"QTRKD01_SYS\"\n" +
+                "        },\n" +
+                "      \"FDEPTID\": {\n" +
+                "            \"FNumber\": \"BM000003\"\n" +
+                "        },"+
+                "        \"FStockDirect\": \"GENERAL\",\n" +
+                "        \"FDate\": \"2024-12-03 00:00:00\",\n" +
+                "        \"FOwnerTypeIdHead\": \"BD_OwnerOrg\",\n" +
+                "        \"FOwnerIdHead\": {\n" +
+                "            \"FNumber\": \"100\"\n" +
+                "        },\n" +
+                "        \"FBaseCurrId\": {\n" +
+                "            \"FNumber\": \"PRE001\"\n" +
+                "        },\n" +
+                "        \"FEntity\": [\n" +
+                "        ]\n" +
+                "    }\n" +
+                "}";
+        Map map1 = JSONObject.parseObject(rkJson, Map.class);
+        String modelJson = map1.get("Model").toString();
+        Map modelMap = JSONObject.parseObject(modelJson, Map.class);
+        String fEntity = modelMap.get("FEntity").toString();
+        //转数组
+        List<ErpRkVo> lists = JSONArray.parseArray(fEntity, ErpRkVo.class);
+        ErpRkVo erpRkVo = new ErpRkVo();
+        //物料id
+        HashMap<String,String> hashMap=new HashMap<String, String>();
+        hashMap.put("FNumber",planTaskDetails2.getMaterialId());
+        erpRkVo.setFMATERIALID(hashMap);
+        //单位
+        HashMap<String,String> hashMap2=new HashMap<String, String>();
+        String s = dictDataMapper.selectDictDataByDictLabelfjqydb(planTaskDetails2.getMaterialUnit());
+        hashMap2.put("FNumber",s);
+        erpRkVo.setFUnitID(hashMap2);
+
+
+        return "111";
+    }
+
+
     /**
      * 指环王扫描信息hmc
      * @param stationProductScanningRingVo

+ 20 - 1
zkqy-fujian-amichi/src/main/resources/mapper/RingScanInformationMapper.xml

@@ -10,8 +10,23 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <result property="deviceName"    column="device_name"    />
         <result property="scanningTime"    column="scanning_time"    />
         <result property="contentInformation"    column="content_information"    />
+        <result property="stationName"    column="station_name"    />
         <result property="personnelName"    column="personnel_name"    />
     </resultMap>
+    <select id="selectRingScanInformationListScfy" parameterType="com.zkqy.amichi.domain.RingScanInformation" resultMap="RingScanInformationResult">
+        select id, device_number, station_name, personnel_name,scanning_time, content_information from fjqydb.ring_scan_information
+        <where>
+            <if test="deviceNumber != null  and deviceNumber != ''"> and device_number = #{deviceNumber}</if>
+            and DATE(scanning_time) = CURDATE() order by scanning_time desc limit #{offset},#{pageSize}
+        </where>
+    </select>
+    <select id="selectRingScanInformationListScfyCount" resultType="java.lang.Integer" parameterType="com.zkqy.amichi.domain.RingScanInformation">
+        select count(id) from fjqydb.ring_scan_information
+        <where>
+            <if test="deviceNumber != null  and deviceNumber != ''"> and device_number = #{deviceNumber}</if>
+            and DATE(scanning_time) = CURDATE()
+        </where>
+    </select>
 
     <sql id="selectRingScanInformationVo">
         select id, device_number, device_name, scanning_time, content_information,personnel_name from fjqydb.ring_scan_information
@@ -29,6 +44,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
     </select>
 
 
+
+
     <resultMap type="com.zkqy.amichi.domain.vo.RingScanInformationVo" id="RingScanInformationResultNR">
         <result property="id"    column="id"    />
         <result property="deviceNumber"    column="device_number"    />
@@ -92,6 +109,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="contentInformation != null  and contentInformation != ''"> and content_information = #{contentInformation}</if>
             <if test="nativeNumbering != null  and nativeNumbering != ''"> and native_numbering = #{nativeNumbering}</if>
         </where>
+        order by scanning_time desc
     </select>
 
 
@@ -201,10 +219,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             </if>
         </where>
         ORDER BY
-        sub.production_order_number,sub.sort
+        rsif.start_time desc,sub.sort
     </select>
 
 
+
     <insert id="insertRingScanInformation" parameterType="com.zkqy.amichi.domain.RingScanInformation" useGeneratedKeys="true" keyProperty="id">
         insert into fjqydb.ring_scan_information
         <trim prefix="(" suffix=")" suffixOverrides=",">

+ 8 - 0
zkqy-system/src/main/java/com/zkqy/system/mapper/SysDictDataMapper.java

@@ -127,4 +127,12 @@ public interface SysDictDataMapper
      * @return
      */
     public String selectDictDataByDictLabel(String dictLabel);
+
+
+    /**
+     * 根据字典标签查询字典数据信息
+     * @param dictLabel
+     * @return
+     */
+    public String selectDictDataByDictLabelfjqydb(String dictLabel);
 }

+ 6 - 0
zkqy-system/src/main/resources/mapper/system/SysDictDataMapper.xml

@@ -161,6 +161,12 @@
         where dict_label = #{dictLabel}
     </select>
 
+    <select id="selectDictDataByDictLabelfjqydb" parameterType="string" resultType="string">
+        select dict_value
+        from fjqydb.sys_dict_data
+        where dict_label = #{dictLabel}
+    </select>
+
     <delete id="deleteDictDataById" parameterType="Long">
         delete
         from {DBNAME}.sys_dict_data

+ 2 - 1
zkqy-ui/src/api/amichi/user/user.js

@@ -1,9 +1,10 @@
 import request from '@/utils/request'
 
 //查询当前租户的用户信息
-export function listUserInformation() {
+export function listUserInformation(query) {
   return request({
     url: '/system/user/list',
     method: 'get',
+    params: query
   })
 }

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

@@ -161,8 +161,15 @@
                       @selection-change="handleSelectionChangeTwo"
                       style="width:calc(100% - 80px);float:right" id="child_tab">
               <el-table-column type="selection" align="center" width="55"></el-table-column>
-              <el-table-column align="center"  label="需求单据" prop="demandDocument"/>
-
+              <el-table-column align="center"  label="生产订单编号" prop="demandDocument"/>
+                      <el-table-column
+                        prop="timeOfRequest"
+                        label="单据日期"
+                        align="center">
+                        <template slot-scope="scope">
+                          {{ formatDateTime(scope.row.timeOfRequest) }}
+                        </template>
+                      </el-table-column>
               <el-table-column align="center"  label="物料编码" prop="materialId" />
               <el-table-column align="center"  label="物料名称" prop="materialName"/>
               <el-table-column align="center"  label="型号"    prop="modelNumber" />
@@ -206,19 +213,19 @@
           align="center"
           prop="orderNumber">
         </el-table-column>
-        <el-table-column align="center"  label="单据状态" prop="orderType">
+        <el-table-column align="center"  label="单据类型" prop="orderType">
           <template  v-slot="scope">
             <dict-tag  :options="dict.type.djlx" :value="scope.row.orderType"/>
           </template>
         </el-table-column>
-        <el-table-column
-          prop="creationtimeString"
-          label="单据日期"
-          align="center">
-          <template slot-scope="scope">
-            {{ formatDateTime(scope.row.creationtimeString) }}
-          </template>
-        </el-table-column>
+<!--        <el-table-column-->
+<!--          prop="creationtimeString"-->
+<!--          label="单据日期"-->
+<!--          align="center">-->
+<!--          <template slot-scope="scope">-->
+<!--            {{ formatDateTime(scope.row.creationtimeString) }}-->
+<!--          </template>-->
+<!--        </el-table-column>-->
 <!--        <el-table-column-->
 <!--          label="合同号"-->
 <!--          align="center"-->
@@ -717,9 +724,13 @@ export default {
       jdProductionWeldPlanOrderPullApi().then(response => {
         if(response.code==200){
           this.$message.success("拉取场内计划成功");
+          //查询表格数据
+          this.getPlanList(this.queryParams);
           this.loading=false;
         }else {
           this.$message.success("拉取场内计划失败");
+          //查询表格数据
+          this.getPlanList(this.queryParams);
           this.loading=false;
         }
       });
@@ -760,9 +771,13 @@ export default {
          if(response.code==200){
            this.loading=false;
            this.$message.success("拉取场内计划成功");
+           //查询表格数据
+           this.getPlanList(this.queryParams);
          }else {
            this.loading=false;
            this.$message.success("拉取场内计划失败");
+           //查询表格数据
+           this.getPlanList(this.queryParams);
          }
       });
     },

+ 2 - 3
zkqy-ui/src/views/amichi/print/FlowCardPrint.vue

@@ -212,7 +212,7 @@
               <tr>
                 <td colspan="4">
                   <div class="titleBox" style="position: relative;">
-                    <div class="erweima"><img :src="item.base46MaD" alt=""></div>
+                    <div class="erweima"><img :src="getNextOrderNumber(index).base46MaD" alt=""></div>
                     <div class="title"><h2 class="jc" style="font-size: 50px;font-weight: bold;">铨一产品流转卡</h2></div>
                     <div class="xh">
                       <span>序号1</span>
@@ -319,7 +319,7 @@
               <tr>
                 <td colspan="4">
                   <div class="titleBox" style="position: relative;">
-                    <div class="erweima"><img :src="item.base46MaZ" alt=""></div>
+                    <div class="erweima"><img :src="getNextOrderNumber(index).base46MaZ" alt=""></div>
                     <div class="title"><h2 class="jc" style="font-size: 50px;font-weight: bold;">铨一产品流转卡</h2></div>
                     <div class="xh">
                       <span>序号1</span>
@@ -391,7 +391,6 @@
             </table>
           </div>
         </div>
-<!--        <idv class="right" v-if="index+1<listDate.length" style="margin-left: 15px;margin-top: 15px"></idv>-->
       </div>
     </div>
   </div>

+ 7 - 3
zkqy-ui/src/views/amichi/stationInformation/indexCopyV4.vue

@@ -9,8 +9,8 @@
           @keyup.enter.native="handleQuery"
         />
       </el-form-item>
-      <el-form-item label="工序" prop="stationType">
-        <el-select v-model="queryParams.stationType">
+      <el-form-item label="工序" prop="processId">
+        <el-select v-model="queryParams.processId">
           <el-option
             v-for="(item,index) in processList"
             :key="index"
@@ -142,11 +142,13 @@
             v-model="form.processId"
             size="small"
             style="width: 680px"
+            filterable
             @change="processNametSelected()"
           >
             <el-option
               v-for="(item,index) in processList"
               :key="index"
+
               :label="item.label"
               :value="item.value"
             ></el-option>
@@ -157,6 +159,7 @@
             v-model="form.personnelId"
             size="small"
             style="width: 680px"
+            filterable
             @change="personnelNametSelected()"
           >
             <el-option
@@ -257,7 +260,8 @@ export default {
       this.form.personnelName=obj.nickName;
     },
     getListUserInformation(){
-      listUserInformation().then(resp=>{
+      let obj= {"isEnablePaging":false}
+      listUserInformation(obj).then(resp=>{
         this.userInfo=resp.rows.filter(item=>item.userName!="fjqyAdmin");
         console.log(this.userInfo);
       })

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

@@ -307,14 +307,14 @@ 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://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",
-            //   uri:"?client_id=mestools&scope=basic&response_type=code&state=AB1357&redirect_uri=http://192.168.0.17:8066/oauth/callback",
+              // uri:"?client_id=mestools&scope=basic&response_type=code&state=AB1357&redirect_uri=http://192.168.3.17:8066/oauth/callback",
             ...this.loginForm,
             tenantID: this.tenantId,
           };

+ 5 - 6
zkqy-ui/vue.config.js

@@ -8,7 +8,7 @@ const MonacoWebpackPlugin = require('monaco-editor-webpack-plugin');
 
 const CompressionPlugin = require('compression-webpack-plugin')
 // Lims实验室信息管理系统
-const name = process.env.VUE_APP_TITLE || '实验室信息管理系统' // 网页标题
+const name = process.env.VUE_APP_TITLE || '铨一生产协同管理系统' // 网页标题
 
 const port = process.env.port || process.env.npm_config_port || 1025 // 端口
 const isDev = process.env.NODE_ENV !== "production";
@@ -39,15 +39,14 @@ module.exports = {
       // detail: https://cli.vuejs.org/config/#devserver-proxy
       [process.env.VUE_APP_BASE_API]: {
          // target: `http://172.20.10.5:8066`,
-        target: `http://192.168.110.83:8066`,
+        // target: `http://192.168.110.83:8066`,
         // target: `http://192.168.128.171:8066`,
         // target: `http://192.168.2.135:8066`, //铨一开发
-        // target: `http://192.168.2.127:8066`,
+        target: `http://192.168.2.127:8066`,
         // target: `http://62.234.61.92:8055`,
-        //  target: `http://192.168.2.127:8066`,
+        // target: `http://192.168.2.135:8066`,
         //  target: `http://192.168.128.171:8066`,
-
-        // target: `http://192.168.0.17:8066`,
+        //  target: `http://192.168.3.17:8066`,
         changeOrigin: true,
         pathRewrite: {
           ['^' + process.env.VUE_APP_BASE_API]: ''