|
@@ -19,6 +19,7 @@ import com.zkqy.common.utils.StringUtils;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
import org.springframework.data.redis.core.StringRedisTemplate;
|
|
import org.springframework.data.redis.core.StringRedisTemplate;
|
|
import org.springframework.stereotype.Service;
|
|
import org.springframework.stereotype.Service;
|
|
|
|
+import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
import java.time.LocalDateTime;
|
|
import java.time.LocalDateTime;
|
|
import java.time.format.DateTimeFormatter;
|
|
import java.time.format.DateTimeFormatter;
|
|
@@ -140,6 +141,7 @@ public class JdProductionOrderServiceImpl implements JdProductionOrderService
|
|
* 拉取普通订单ERP数据
|
|
* 拉取普通订单ERP数据
|
|
*/
|
|
*/
|
|
@Override
|
|
@Override
|
|
|
|
+ @Transactional
|
|
public AjaxResult jdProductionOrderPull() {
|
|
public AjaxResult jdProductionOrderPull() {
|
|
Boolean aTrue = stringRedisTemplate.opsForValue().setIfAbsent("fjqy:ptd:pulled", "true");
|
|
Boolean aTrue = stringRedisTemplate.opsForValue().setIfAbsent("fjqy:ptd:pulled", "true");
|
|
if (aTrue) {
|
|
if (aTrue) {
|
|
@@ -154,7 +156,7 @@ public class JdProductionOrderServiceImpl implements JdProductionOrderService
|
|
"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," +
|
|
"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" +
|
|
"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" +
|
|
|
|
|
|
+ " \"FilterString\": [{\"Left\":\"\",\"FieldName\":\"FMaterialId.FNumber\",\"Compare\":\"34\",\"Value\":\"焊\",\"Right\":\"\",\"Logic\":0},{\"Left\":\"\",\"FieldName\":\"FStatus\",\"Compare\":\"105\",\"Value\":\"4\",\"Right\":\"\",\"Logic\":0},{\"Left\":\"\",\"FieldName\":\"FDate\",\"Compare\":\"63\",\"Value\":\"\",\"Right\":\"\",\"Logic\":0}],\n" +
|
|
" \"OrderString\": \"\",\n" +
|
|
" \"OrderString\": \"\",\n" +
|
|
" \"TopRowCount\": 0,\n" +
|
|
" \"TopRowCount\": 0,\n" +
|
|
" \"StartRow\": 0,\n" +
|
|
" \"StartRow\": 0,\n" +
|
|
@@ -179,8 +181,8 @@ public class JdProductionOrderServiceImpl implements JdProductionOrderService
|
|
.filter(item -> !collectTwo.contains(item.getDemandDocument()))
|
|
.filter(item -> !collectTwo.contains(item.getDemandDocument()))
|
|
.collect(Collectors.groupingBy(JdProductionOrder::getDemandDocument));
|
|
.collect(Collectors.groupingBy(JdProductionOrder::getDemandDocument));
|
|
|
|
|
|
- //做一个map用户存订单和计划的对应关系
|
|
|
|
- HashMap<String,String> mapGX = new HashMap<>();
|
|
|
|
|
|
+// //做一个map用户存订单和计划的对应关系
|
|
|
|
+// HashMap<String,String> mapGX = new HashMap<>();
|
|
//如果有数据
|
|
//如果有数据
|
|
if (groupedByDemandDocument.size() > 0) {
|
|
if (groupedByDemandDocument.size() > 0) {
|
|
//订单循环
|
|
//订单循环
|
|
@@ -206,7 +208,7 @@ public class JdProductionOrderServiceImpl implements JdProductionOrderService
|
|
productionPlanningManagement.setOrderType(v.get(0).getDocumentTyep()); //单据类型
|
|
productionPlanningManagement.setOrderType(v.get(0).getDocumentTyep()); //单据类型
|
|
}
|
|
}
|
|
//订单的创建时间
|
|
//订单的创建时间
|
|
- productionPlanningManagement.setCreationtimeString(v.get(0).getCreationtimeString());//单据的创建时间
|
|
|
|
|
|
+ productionPlanningManagement.setCreationtimeString(v.get(0).getDocumentDate());//单据的创建时间
|
|
//特殊要求
|
|
//特殊要求
|
|
if (StringUtils.isNotNull(v.get(0).getTsyq())) {
|
|
if (StringUtils.isNotNull(v.get(0).getTsyq())) {
|
|
productionPlanningManagement.setSpecialRequirements(v.get(0).getTsyq());//特殊要求
|
|
productionPlanningManagement.setSpecialRequirements(v.get(0).getTsyq());//特殊要求
|
|
@@ -235,7 +237,7 @@ public class JdProductionOrderServiceImpl implements JdProductionOrderService
|
|
planTaskDetails.setPlanId(productionPlanningManagement.getId());//计划id
|
|
planTaskDetails.setPlanId(productionPlanningManagement.getId());//计划id
|
|
|
|
|
|
//订单号 ----计划id
|
|
//订单号 ----计划id
|
|
- mapGX.put(a.getDemandDocument(),productionPlanningManagement.getId().toString());
|
|
|
|
|
|
+// mapGX.put(a.getDemandDocument(),productionPlanningManagement.getId().toString());
|
|
|
|
|
|
planTaskDetails.setMaterialId(a.getMaterialCode());//原材料编码
|
|
planTaskDetails.setMaterialId(a.getMaterialCode());//原材料编码
|
|
planTaskDetails.setMaterialName(a.getMaterialName());//名称
|
|
planTaskDetails.setMaterialName(a.getMaterialName());//名称
|
|
@@ -264,7 +266,7 @@ public class JdProductionOrderServiceImpl implements JdProductionOrderService
|
|
planTaskDetails.setTimeOfRequest(a.getDocumentDate());
|
|
planTaskDetails.setTimeOfRequest(a.getDocumentDate());
|
|
}
|
|
}
|
|
planTaskDetails.setFbomIdFnumber(a.getFbomIdFnumber());//BOM版本
|
|
planTaskDetails.setFbomIdFnumber(a.getFbomIdFnumber());//BOM版本
|
|
- planTaskDetailsMapper.insertPlanTaskDetails(planTaskDetails);
|
|
|
|
|
|
+ int i = planTaskDetailsMapper.insertPlanTaskDetails(planTaskDetails);
|
|
});
|
|
});
|
|
}
|
|
}
|
|
});
|
|
});
|
|
@@ -297,62 +299,72 @@ public class JdProductionOrderServiceImpl implements JdProductionOrderService
|
|
List<PlanTaskDetails> planTaskDetails1 = planTaskDetailsMapper.selectPlanTaskDetailsList(planTaskDetails);
|
|
List<PlanTaskDetails> planTaskDetails1 = planTaskDetailsMapper.selectPlanTaskDetailsList(planTaskDetails);
|
|
//生产订单号集合
|
|
//生产订单号集合
|
|
Set<String> collectA = planTaskDetails1.stream().map(PlanTaskDetails::getDemandDocument).collect(Collectors.toSet());
|
|
Set<String> collectA = planTaskDetails1.stream().map(PlanTaskDetails::getDemandDocument).collect(Collectors.toSet());
|
|
- //拿到MES系统中不存在的生产订单
|
|
|
|
- List<JdProductionOrder> collect = jdProductionOrders.stream().filter(item -> !collectA.contains(item.getDemandDocument())).collect(Collectors.toList());
|
|
|
|
|
|
+ //拿到MES系统中不存在的生产订单 documentNumber
|
|
|
|
+ List<JdProductionOrder> collect = jdProductionOrders.stream().filter(item -> !collectA.contains(item.getDocumentNumber())).collect(Collectors.toList());
|
|
|
|
+ System.out.println(collect.size()+"hmc");
|
|
//生产订单循环
|
|
//生产订单循环
|
|
collect.forEach(a->{
|
|
collect.forEach(a->{
|
|
PlanTaskDetails planTaskDetailsAdd = new PlanTaskDetails();
|
|
PlanTaskDetails planTaskDetailsAdd = new PlanTaskDetails();
|
|
planTaskDetailsAdd.setDemandDocument(a.getDocumentNumber());//需求单据号
|
|
planTaskDetailsAdd.setDemandDocument(a.getDocumentNumber());//需求单据号
|
|
- String planId = mapGX.get(a.getDocumentNumber());
|
|
|
|
- planTaskDetailsAdd.setPlanId(Long.valueOf(planId));//计划id
|
|
|
|
- planTaskDetailsAdd.setMaterialId(a.getMaterialCode());//原材料编码
|
|
|
|
- planTaskDetailsAdd.setMaterialName(a.getMaterialName());//名称
|
|
|
|
- planTaskDetailsAdd.setQuantity(a.getQuantity());//数量
|
|
|
|
- planTaskDetailsAdd.setModelNumber(a.getModelNumber());//型号
|
|
|
|
- planTaskDetailsAdd.setSpecification(a.getSpecification());//规格
|
|
|
|
- planTaskDetailsAdd.setMaterialUnit(a.getUnit());//单位
|
|
|
|
- planTaskDetailsAdd.setPower(a.getGl());//功率
|
|
|
|
- planTaskDetailsAdd.setVoltage(a.getDianYaPinLv());//电压频率
|
|
|
|
- planTaskDetailsAdd.setColour(a.getYanse());//颜色
|
|
|
|
- planTaskDetailsAdd.setMingpai(a.getMingpai());//铭牌
|
|
|
|
- planTaskDetailsAdd.setShuomingshu(a.getShuomingshu());//说明书
|
|
|
|
- planTaskDetailsAdd.setHegezheng(a.getHegezheng());//合格证
|
|
|
|
- planTaskDetailsAdd.setBaozhuangxiang(a.getBaozhuangxiang());//包装箱
|
|
|
|
- planTaskDetailsAdd.setSwitchBox(a.getKaiguanxiang());//开关箱
|
|
|
|
- planTaskDetailsAdd.setScheduledCommencement(a.getFPlanStartDate()); //计划开始时间
|
|
|
|
- planTaskDetailsAdd.setScheduledCompletion(a.getFPlanFinishDate()); //计划完工时间
|
|
|
|
- planTaskDetailsAdd.setRemark(a.getRemark());
|
|
|
|
- planTaskDetailsAdd.setFid(a.getFid());
|
|
|
|
- planTaskDetailsAdd.setFtreeEntityFentryid(a.getFtreeEntityFentryid());
|
|
|
|
- planTaskDetailsAdd.setFbillno(a.getDocumentNumber());//生产订单号
|
|
|
|
- planTaskDetailsAdd.setFsrcbillno(a.getDemandDocument());//销售订单号
|
|
|
|
- planTaskDetailsAdd.setFunitidfNumber(a.getFunitidfNumber());//单位编号
|
|
|
|
- if (StringUtils.isNotNull(a.getDocumentDate())) {
|
|
|
|
- planTaskDetailsAdd.setTimeOfRequest(a.getDocumentDate());
|
|
|
|
- }
|
|
|
|
- planTaskDetailsAdd.setFbomIdFnumber(a.getFbomIdFnumber());//BOM版本
|
|
|
|
- planTaskDetailsMapper.insertPlanTaskDetails(planTaskDetailsAdd);
|
|
|
|
|
|
+// String planId = mapGX.get(a.getDocumentNumber());
|
|
|
|
+ ProductionPlanningManagement productionPlanningManagement2=new ProductionPlanningManagement();
|
|
|
|
+ productionPlanningManagement2.setOrderNumber(a.getDemandDocument());
|
|
|
|
+ List<ProductionPlanningManagement> productionPlanningManagements1 = productionPlanningManagementMapper.
|
|
|
|
+ selectProductionPlanningManagementList(productionPlanningManagement2);
|
|
|
|
+ if(productionPlanningManagements1.size()>0){
|
|
|
|
+ planTaskDetailsAdd.setPlanId(Long.valueOf(productionPlanningManagements1.get(0).getId()));//计划id
|
|
|
|
+ planTaskDetailsAdd.setMaterialId(a.getMaterialCode());//原材料编码
|
|
|
|
+ planTaskDetailsAdd.setMaterialName(a.getMaterialName());//名称
|
|
|
|
+ planTaskDetailsAdd.setQuantity(a.getQuantity());//数量
|
|
|
|
+ planTaskDetailsAdd.setModelNumber(a.getModelNumber());//型号
|
|
|
|
+ planTaskDetailsAdd.setSpecification(a.getSpecification());//规格
|
|
|
|
+ planTaskDetailsAdd.setMaterialUnit(a.getUnit());//单位
|
|
|
|
+ planTaskDetailsAdd.setPower(a.getGl());//功率
|
|
|
|
+ planTaskDetailsAdd.setVoltage(a.getDianYaPinLv());//电压频率
|
|
|
|
+ planTaskDetailsAdd.setColour(a.getYanse());//颜色
|
|
|
|
+ planTaskDetailsAdd.setMingpai(a.getMingpai());//铭牌
|
|
|
|
+ planTaskDetailsAdd.setShuomingshu(a.getShuomingshu());//说明书
|
|
|
|
+ planTaskDetailsAdd.setHegezheng(a.getHegezheng());//合格证
|
|
|
|
+ planTaskDetailsAdd.setBaozhuangxiang(a.getBaozhuangxiang());//包装箱
|
|
|
|
+ planTaskDetailsAdd.setSwitchBox(a.getKaiguanxiang());//开关箱
|
|
|
|
+ planTaskDetailsAdd.setScheduledCommencement(a.getFPlanStartDate()); //计划开始时间
|
|
|
|
+ planTaskDetailsAdd.setScheduledCompletion(a.getFPlanFinishDate()); //计划完工时间
|
|
|
|
+ planTaskDetailsAdd.setRemark(a.getRemark());
|
|
|
|
+ planTaskDetailsAdd.setFid(a.getFid());
|
|
|
|
+ planTaskDetailsAdd.setFtreeEntityFentryid(a.getFtreeEntityFentryid());
|
|
|
|
+ planTaskDetailsAdd.setFbillno(a.getDocumentNumber());//生产订单号
|
|
|
|
+ planTaskDetailsAdd.setFsrcbillno(a.getDemandDocument());//销售订单号
|
|
|
|
+ planTaskDetailsAdd.setFunitidfNumber(a.getFunitidfNumber());//单位编号
|
|
|
|
+ if (StringUtils.isNotNull(a.getDocumentDate())) {
|
|
|
|
+ planTaskDetailsAdd.setTimeOfRequest(a.getDocumentDate());
|
|
|
|
+ }
|
|
|
|
+ planTaskDetailsAdd.setFbomIdFnumber(a.getFbomIdFnumber());//BOM版本
|
|
|
|
+ planTaskDetailsMapper.insertPlanTaskDetails(planTaskDetailsAdd);
|
|
|
|
|
|
- //处理新增订单的序列号问题
|
|
|
|
- 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\":\"FBillNo\",\"Compare\":\"67\",\"Value\":\"" + a.getDocumentNumber() + "\",\"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);
|
|
|
|
|
|
+ //处理新增订单的序列号问题
|
|
|
|
+ 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\":\"FBillNo\",\"Compare\":\"67\",\"Value\":\"" + a.getDocumentNumber() + "\",\"Right\":\"\",\"Logic\":0}],\n" +
|
|
|
|
+ " \"OrderString\": \"\",\n" +
|
|
|
|
+ " \"TopRowCount\": 0,\n" +
|
|
|
|
+ " \"StartRow\": 0,\n" +
|
|
|
|
+ " \"Limit\": 2000,\n" +
|
|
|
|
+ " \"SubSystemId\": \"\"\n" +
|
|
|
|
+ "}";
|
|
|
|
+ try {
|
|
|
|
+ //金蝶工具key
|
|
|
|
+ K3CloudApi api2 = new K3CloudApi();
|
|
|
|
+ String xlhString = api2.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);
|
|
|
|
}
|
|
}
|
|
|
|
+
|
|
});
|
|
});
|
|
} catch (Exception e) {
|
|
} catch (Exception e) {
|
|
throw new RuntimeException(e);
|
|
throw new RuntimeException(e);
|
|
@@ -573,7 +585,7 @@ public class JdProductionOrderServiceImpl implements JdProductionOrderService
|
|
productionPlanningManagement.setRemark(v.get(0).getRemark()); //备注
|
|
productionPlanningManagement.setRemark(v.get(0).getRemark()); //备注
|
|
}
|
|
}
|
|
//订单的创建时间
|
|
//订单的创建时间
|
|
- productionPlanningManagement.setCreationtimeString(v.get(0).getCreationtimeString());//单据的创建时间
|
|
|
|
|
|
+ productionPlanningManagement.setCreationtimeString(v.get(0).getDocumentDate());//单据的创建时间
|
|
//特殊要求
|
|
//特殊要求
|
|
if(StringUtils.isNotNull(v.get(0).getTsyq())){
|
|
if(StringUtils.isNotNull(v.get(0).getTsyq())){
|
|
productionPlanningManagement.setSpecialRequirements(v.get(0).getTsyq());//特殊要求
|
|
productionPlanningManagement.setSpecialRequirements(v.get(0).getTsyq());//特殊要求
|