From 4d3fdeeb47161f2a4b0c771d0e5738d24cd88bf8 Mon Sep 17 00:00:00 2001 From: gongbaoxiong <751575283@qq.com> Date: Tue, 4 Mar 2025 00:50:07 +0800 Subject: [PATCH] =?UTF-8?q?add:1.=E5=A2=9E=E5=8A=A0CTU=E7=BA=BF=E8=BE=B9?= =?UTF-8?q?=E5=BA=93=E6=89=8B=E6=8C=81=E5=87=BA=E5=BA=93=E7=A1=AE=E8=AE=A4?= =?UTF-8?q?=EF=BC=9B2.ERP=E5=8D=95=E6=8D=AE=E5=90=8C=E6=AD=A5=E4=BF=AE?= =?UTF-8?q?=E6=94=B9=E5=B7=B2=E5=AD=98=E5=9C=A8=E6=9C=AA=E9=A2=86=E6=95=B0?= =?UTF-8?q?=E9=87=8F=E7=9A=84=E5=8D=95=E6=8D=AE=EF=BC=9B3.=E7=94=9F?= =?UTF-8?q?=E4=BA=A7=E5=85=A5=E5=BA=93=E5=8D=95=E8=87=AA=E5=8A=A8=E5=88=9B?= =?UTF-8?q?=E5=BB=BA=E5=8F=8D=E5=86=99=E7=94=9F=E4=BA=A7=E8=AE=A2=E5=8D=95?= =?UTF-8?q?=E6=95=B0=E9=87=8F=E8=87=AA=E5=8A=A8=E5=85=B3=E5=8D=95=EF=BC=9B?= =?UTF-8?q?4.=E7=94=9F=E4=BA=A7=E9=A2=86=E6=96=99=E5=8D=95=E8=87=AA?= =?UTF-8?q?=E5=8A=A8=E5=88=9B=E5=BB=BA=E5=8F=8D=E5=86=99=E7=94=A8=E6=96=99?= =?UTF-8?q?=E6=B8=85=E5=8D=95=E5=B7=B2=E9=A2=86=E6=95=B0=E9=87=8F=EF=BC=8C?= =?UTF-8?q?=E6=9C=AA=E9=A2=86=E6=95=B0=E9=87=8F=E8=87=AA=E5=8A=A8=E5=85=B3?= =?UTF-8?q?=E5=8D=95=EF=BC=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../org/nl/common/utils/ErpServiceUtils.java | 1 - .../classprocessimpl/CtuProcessHandler.java | 47 ++++++----- .../SyncReceiptProcessHandler.java | 80 ++++++++++++++----- .../group_dick/service/dao/MdGruopDick.java | 6 +- .../dao/mapper/xml/MdGruopDickMapper.xml | 20 +++-- .../service/impl/MdGruopDickServiceImpl.java | 40 +++++++--- .../group/GroupOrderController.java | 2 +- .../iostorage/IOStorageController.java | 33 ++++++-- .../iostorage/sevice/PdaIOService.java | 13 +-- .../controller/PmFormDataController.java | 2 +- .../service/impl/PmFormDataServiceImpl.java | 2 +- .../task/SyncErpBillsScheduleService.java | 46 ++++++++--- .../views/wms/md_manage/group_dick/index.vue | 10 +++ 13 files changed, 215 insertions(+), 87 deletions(-) diff --git a/wms_pro/hd/nladmin-system/src/main/java/org/nl/common/utils/ErpServiceUtils.java b/wms_pro/hd/nladmin-system/src/main/java/org/nl/common/utils/ErpServiceUtils.java index e8ff955c..359e185e 100644 --- a/wms_pro/hd/nladmin-system/src/main/java/org/nl/common/utils/ErpServiceUtils.java +++ b/wms_pro/hd/nladmin-system/src/main/java/org/nl/common/utils/ErpServiceUtils.java @@ -4,7 +4,6 @@ import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.github.javaparser.utils.Log; -import com.google.gson.JsonObject; import com.kingdee.bos.webapi.entity.*; import com.kingdee.bos.webapi.sdk.K3CloudApi; import lombok.extern.slf4j.Slf4j; diff --git a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/flow_manage/flow/service/classprocessimpl/CtuProcessHandler.java b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/flow_manage/flow/service/classprocessimpl/CtuProcessHandler.java index 6661f53c..0bff5853 100644 --- a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/flow_manage/flow/service/classprocessimpl/CtuProcessHandler.java +++ b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/flow_manage/flow/service/classprocessimpl/CtuProcessHandler.java @@ -4,7 +4,6 @@ import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; -import com.github.javaparser.utils.Log; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.nl.wms.flow_manage.flow.framework.process.nodeType.excess.impl.process.classprocess.ClassProcess; @@ -18,7 +17,7 @@ import org.springframework.stereotype.Service; /* * @author ZZQ * @Date 2024/5/6 14:34 - * 回传服务 + * CTU回传服务 */ @Service @Slf4j @@ -34,15 +33,10 @@ public class CtuProcessHandler implements ClassProcess { */ @Override public JSONObject process(JSONObject from, JSONObject param) { - String id = from.getString("id"); - PmFormData pmFormData = iPmFormDataService.getById(id); JSONObject vehicleMater = from.getJSONObject("vehicleMater"); if (vehicleMater == null) { - LambdaUpdateWrapper updateWrapper = new LambdaUpdateWrapper<>(); - updateWrapper.eq(PmFormData::getId, pmFormData.getId()); - updateWrapper.set(PmFormData::getRemark, "CTU出库用料单号异常:未获取到物料载具信息vehicleMater,from数据为:" + JSON.toJSONString(from)); - iPmFormDataService.update(updateWrapper); log.error("CTU出库用料单号异常:未获取到物料载具信息vehicleMater,from数据为:" + JSON.toJSONString(from)); + return from; } JSONObject sourceFormData = from.getJSONObject("source_form_data"); if (sourceFormData == null) { @@ -50,25 +44,36 @@ public class CtuProcessHandler implements ClassProcess { .set("prd_ppbom_no", "CTU出库用料单号异常:未获取到源单信息sourceFormData,from数据为:" + JSON.toJSONString(from)) .eq("id", vehicleMater.getString("id"))); log.error("CTU出库用料单号异常:未获取到源单信息sourceFormData,from数据为:" + JSON.toJSONString(from)); - } - String billCode = sourceFormData.getString("code"); - if (StringUtils.isBlank(billCode)) { - iMdPbVehicleMaterService.update(new UpdateWrapper() - .set("prd_ppbom_no", "CTU出库用料单号异常:未获取到源单号billCode,from数据为:" + JSON.toJSONString(from)) - .eq("id", vehicleMater.getString("id"))); - log.error("CTU出库用料单号异常:未获取到源单号billCode,from数据为:" + JSON.toJSONString(from)); + return from; } try { - //更新物料载具信息的出库单据号 - iMdPbVehicleMaterService.update(new UpdateWrapper() - .set("prd_ppbom_no", billCode) - .eq("id", vehicleMater.getString("id"))); + String billCode = sourceFormData.getString("code"); + String vehicleId = StringUtils.isNotBlank(sourceFormData.getString("vehicle_id")) ? sourceFormData.getString("vehicle_id") : vehicleMater.getString("id"); + if (StringUtils.isBlank(vehicleId)) { + LambdaUpdateWrapper updateWrapper = new LambdaUpdateWrapper<>(); + updateWrapper.eq(PmFormData::getId, sourceFormData.getString("id")); + updateWrapper.set(PmFormData::getRemark, "更新CTU物料载具信息的出库单据号失败,原因为:载具物料表为空,载具id为空,无法更新用料清单号,form数据:" + JSON.toJSONString(from)); + iPmFormDataService.update(updateWrapper); + log.error("更新CTU物料载具信息的出库单据号失败,原因为:载具物料表为空,载具id为空,无法更新用料清单号,form数据:" + JSON.toJSONString(from)); + } else { + if (StringUtils.isNotBlank(billCode)) { + //更新物料载具信息的出库单据号 + iMdPbVehicleMaterService.update(new UpdateWrapper() + .set("prd_ppbom_no", billCode) + .eq("id", vehicleId)); + } else { + iMdPbVehicleMaterService.update(new UpdateWrapper() + .set("prd_ppbom_no", "CTU出库用料单号异常:未获取到源单号billCode,from数据为:" + JSON.toJSONString(from)) + .eq("id", vehicleId)); + log.error("CTU出库用料单号异常:未获取到源单号billCode,from数据为:" + JSON.toJSONString(from)); + } + } } catch (Exception ex) { LambdaUpdateWrapper updateWrapper = new LambdaUpdateWrapper<>(); updateWrapper.eq(PmFormData::getId, sourceFormData.getString("id")); - updateWrapper.set(PmFormData::getRemark, "更新物料载具信息的出库单据号失败,原因为:" + ex.getMessage()); + updateWrapper.set(PmFormData::getRemark, "更新CTU物料载具信息的出库单据号失败,原因为:" + ex.getMessage()); iPmFormDataService.update(updateWrapper); - Log.error(ex.getMessage()); + log.error("更新CTU物料载具信息的出库单据号失败,原因为:" + ex.getMessage() + ",form数据:" + JSON.toJSONString(from)); } return from; } diff --git a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/flow_manage/flow/service/classprocessimpl/SyncReceiptProcessHandler.java b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/flow_manage/flow/service/classprocessimpl/SyncReceiptProcessHandler.java index 0d22cddc..88c54e6e 100644 --- a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/flow_manage/flow/service/classprocessimpl/SyncReceiptProcessHandler.java +++ b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/flow_manage/flow/service/classprocessimpl/SyncReceiptProcessHandler.java @@ -30,6 +30,7 @@ import javax.annotation.Resource; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; +import java.util.Optional; import java.util.stream.Collectors; /* @@ -95,9 +96,11 @@ public class SyncReceiptProcessHandler implements ClassProcess { if (isSuccess) { updateWrapper.set(PmFormData::getStatus, StatusEnum.FORM_STATUS.code("完成")); updateWrapper.set(PmFormData::getRemark, "回执单创建成功,回传Erp数据为:" + responseStatus.getJSONArray("SuccessEntitys").toJSONString()); + Log.error("回传Erp数据为:" + json + ",传输数据为:"); } else { updateWrapper.set(PmFormData::getStatus, StatusEnum.FORM_STATUS.code("暂停")); - updateWrapper.set(PmFormData::getRemark,"回执单创建失败,原因为:"+errorMessages + ",回传Erp数据为:" + json); + updateWrapper.set(PmFormData::getRemark, "回执单创建失败,原因为:" + errorMessages + ",回传Erp数据为:" + json); + Log.error("回传Erp数据为:" + json + ",传输数据为:"); } iPmFormDataService.update(updateWrapper); } catch (Exception ex) { @@ -116,11 +119,9 @@ public class SyncReceiptProcessHandler implements ClassProcess { return; } JSONArray fEntityArray = formData.getJSONObject("Model").getJSONArray("FEntity"); - //判断生产入库的手工录入与MRP生成方式需回传不同的源单信息 if ("RECEIPT_PRD".equals(formType)) { for (int i = 0; i < fEntityArray.size(); i++) { JSONObject fEntity = fEntityArray.getJSONObject(i); - //查询工序汇报单 ErpQuery reportQuery = new ErpQuery(); reportQuery.setFilterString("FMoNumber ='" + fEntity.getString("FMoBillNo") + "'"); reportQuery.setOrderString("FId desc"); @@ -130,36 +131,63 @@ public class SyncReceiptProcessHandler implements ClassProcess { throw new BadRequestException("该生产订单未找到对应生产汇报单"); } JSONArray optRptEntry = jsonArray.getJSONObject(0).getJSONArray("OptRptEntry"); - if (fEntity.containsKey("FSrcEntryId")) { - //增加源单分录id - fEntity.put("FSrcEntryId", optRptEntry.getJSONObject(0).getString("SrcEntryId")); - fEntity.put("FSrcEntrySeq", optRptEntry.getJSONObject(0).getString("SrcEntrySeq")); - fEntity.put("FSrcBillType", "SFC_OperationReport"); - } Map linkedMap = new LinkedHashMap<>(); + //移除重构源单Id + fEntity.remove("FSrcEntryId"); for (String key : fEntity.keySet()) { linkedMap.put(key, fEntity.get(key)); } + //明细字段顺序排列 Map tempMap = new LinkedHashMap<>(); for (Map.Entry entry : linkedMap.entrySet()) { tempMap.put(entry.getKey(), entry.getValue()); - if ("FMoEntryId".equals(entry.getKey())) { - //源单编号为工序汇报单号 + if ("FMoEntrySeq".equals(entry.getKey())) { tempMap.put("FSrcBillNo", jsonArray.getJSONObject(0).getString("BillNo")); + tempMap.put("FSrcEntryId", optRptEntry.getJSONObject(0).getString("Id")); + tempMap.put("FSrcEntrySeq", optRptEntry.getJSONObject(0).getString("Seq")); + tempMap.put("FSrcBillType", "SFC_OperationReport"); } } + JSONArray fEntityLinkArray = new JSONArray(); + JSONObject fEntityLink = new JSONObject(); + fEntityLink.put("FEntity_Link_FRuleId", "SFC_OPTRPT2INSTOCK"); + fEntityLink.put("FEntity_Link_FSBillId", jsonArray.getJSONObject(0).getString("Id")); + fEntityLink.put("FEntity_Link_FSId", optRptEntry.getJSONObject(0).getString("Id")); + fEntityLink.put("FEntity_Link_FSTableName", "T_SFC_OPTRPTENTRY"); + fEntityLink.put("FEntity_Link_FBasePrdRealQtyOld", fEntity.getString("FMustQty")); + fEntityLink.put("FEntity_Link_FBasePrdRealQty", fEntity.getString("FMustQty")); + fEntityLinkArray.add(fEntityLink); + tempMap.put("FEntity_Link", fEntityLinkArray); fEntity.clear(); fEntity.putAll(tempMap); - } } //判断生产领料单的批次与辅助单位 if ("RECEIPT_PickMtrl".equals(formType)) { for (int i = 0; i < fEntityArray.size(); i++) { JSONObject fEntity = fEntityArray.getJSONObject(i); - List materialList = iMdMeMaterialbaseService.list(new LambdaQueryWrapper().eq(MdMeMaterialbase::getMaterial_code,JSON.parseObject(fEntity.getString("FMaterialId")).getString("FNumber"))); + ErpQuery prdQuery = new ErpQuery(); + prdQuery.setFilterString("FBillNo ='" + fEntity.getString("FPPBomBillNo") + "'"); + prdQuery.setOrderString("FId desc"); + prdQuery.setFormId("PRD_PPBOM"); + JSONArray jsonArray = erpServiceUtils.queryBills(prdQuery); + if (CollectionUtils.isEmpty(jsonArray)) { + throw new BadRequestException("该领料出库单未找到对应用生产用料清单"); + } + JSONArray prdEntry = jsonArray.getJSONObject(0).getJSONArray("PPBomEntry"); + JSONObject entity; + Optional filterJsonObject = prdEntry.stream() + .map(obj -> (JSONObject) obj) + .filter(r -> fEntity.getString("FPPBomEntryId").equals(r.getString("Id"))) + .findFirst(); + if (filterJsonObject.isPresent()) { + entity = filterJsonObject.get(); + } else { + throw new BadRequestException("该领料出库单的对应用生产用料清单未找到对应的物料明细"); + } + List materialList = iMdMeMaterialbaseService.list(new LambdaQueryWrapper().eq(MdMeMaterialbase::getMaterial_code, JSON.parseObject(fEntity.getString("FMaterialId")).getString("FNumber"))); if (ObjectUtil.isEmpty(materialList)) { - throw new BadRequestException("回传失败:查询物料信息,物料编码不存在:"+JSON.parseObject(fEntity.getString("FMaterialId")).getString("FNumber")); + throw new BadRequestException("回传失败:查询物料信息,物料编码不存在:" + JSON.parseObject(fEntity.getString("FMaterialId")).getString("FNumber")); } MdMeMaterialbase materialInfo = materialList.get(0); //没有启用批次号 @@ -181,12 +209,26 @@ public class SyncReceiptProcessHandler implements ClassProcess { fUnit.put("FNumber", materialInfo.getAssist_unit_id()); tempMap.put("FSecUnitId", fUnit); } - // if ("FStockId".equals(entry.getKey())) { - // JSONObject fStockId = new JSONObject(); - // fStockId.put("FNumber", "25"); - // tempMap.put("FStockId", fStockId); - // } + if ("FActualQty".equals(entry.getKey())) { + tempMap.put("FSrcBillType", "PRD_PPBOM"); + tempMap.put("FSrcBillNo", jsonArray.getJSONObject(0).getString("BillNo")); + tempMap.put("FEntrySrcEnteryId", entity.getString("Id")); + tempMap.put("FEntrySrcEntrySeq", entity.getString("Seq")); + } } + JSONArray fEntityLinkArray = new JSONArray(); + JSONObject fEntityLink = new JSONObject(); + fEntityLink.put("FEntity_Link_FFlowLineId", 0); + fEntityLink.put("FEntity_Link_FBaseActualQty", fEntity.getString("FActualQty")); + fEntityLink.put("FEntity_Link_FSId",entity.getString("Id")); + fEntityLink.put("FEntity_Link_FBaseActualQtyOld", fEntity.getString("FActualQty")); + fEntityLink.put("FEntity_Link_FRuleId", "PRD_PPBOM2PICKMTRL_NORMAL"); + fEntityLink.put("FEntity_Link_FSTableId", 0); + fEntityLink.put("FEntity_Link_FFlowId",""); + fEntityLink.put("FEntity_Link_FSBillId", jsonArray.getJSONObject(0).getString("Id")); + fEntityLink.put("FEntity_Link_FSTableName", "T_PRD_PPBOMENTRY"); + fEntityLinkArray.add(fEntityLink); + tempMap.put("FEntity_Link", fEntityLinkArray); fEntity.clear(); fEntity.putAll(tempMap); } diff --git a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/md_manage/group_dick/service/dao/MdGruopDick.java b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/md_manage/group_dick/service/dao/MdGruopDick.java index 2512ce70..ffca7cb8 100644 --- a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/md_manage/group_dick/service/dao/MdGruopDick.java +++ b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/md_manage/group_dick/service/dao/MdGruopDick.java @@ -86,5 +86,9 @@ public class MdGruopDick implements Serializable { private JSONObject form_data = new JSONObject(); - + /** + * 物料编码 + */ + @TableField(exist = false) + private String material_code; } diff --git a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/md_manage/group_dick/service/dao/mapper/xml/MdGruopDickMapper.xml b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/md_manage/group_dick/service/dao/mapper/xml/MdGruopDickMapper.xml index e5a1e3ff..e1624760 100644 --- a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/md_manage/group_dick/service/dao/mapper/xml/MdGruopDickMapper.xml +++ b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/md_manage/group_dick/service/dao/mapper/xml/MdGruopDickMapper.xml @@ -6,6 +6,7 @@ + @@ -19,27 +20,30 @@