diff --git a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/external_system/erp/SyncErpService.java b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/external_system/erp/SyncErpService.java index 5ffad53e..e2ab9a5d 100644 --- a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/external_system/erp/SyncErpService.java +++ b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/external_system/erp/SyncErpService.java @@ -64,7 +64,7 @@ public class SyncErpService { @Autowired private BmMeasureUnitServiceImpl bmMeasureUnitServiceImpl; - public List syncData(SyncFormMapping syncFormMapping) { + public List syncData1(SyncFormMapping syncFormMapping) { List list = stIvtBsrealstorattrServiceImpl.list(); list.forEach(r -> { syncUnit(r.getStor_code()); @@ -179,27 +179,48 @@ public class SyncErpService { /** - * 回传测试 + * 下推回传测试 */ + public JSONObject push(JSONObject from) { + String result = ""; + //执行回传 + try { + //要回传的json数据 + //todo 需要封装 + IdentifyInfo identifyInfo = new IdentifyInfo(); + BeanUtils.copyProperties(erpSec, identifyInfo); + K3CloudApi cloudApi = new K3CloudApi(identifyInfo); + String json =from.toJSONString(); + result = cloudApi.push(from.getString("TargetFormId"), json); + from.put("result",result); + Integer sd = 0; + } catch (Exception ex) { + Log.error(ex.getMessage()); + from.put("result",ex.getMessage()); + String sd = result; + } + return from; + } + /** * 回传测试 */ public JSONObject process(JSONObject from) { String result = ""; //执行回传 - String formType = from.getString("formid"); try { //要回传的json数据 - JSONObject formData = from.getJSONObject("data"); //todo 需要封装 IdentifyInfo identifyInfo = new IdentifyInfo(); BeanUtils.copyProperties(erpSec, identifyInfo); K3CloudApi cloudApi = new K3CloudApi(identifyInfo); - String json =formData.toJSONString(); - result = cloudApi.save(formType, formData.toJSONString()); + String json =from.toJSONString(); + result = cloudApi.save(from.getString("formid"), json); + from.put("result",result); Integer sd = 0; } catch (Exception ex) { Log.error(ex.getMessage()); + from.put("result",ex.getMessage()); String sd = result; } return from; @@ -290,7 +311,7 @@ public class SyncErpService { /** * */ - public List syncData1(SyncFormMapping syncFormMapping) { + public List syncData(SyncFormMapping syncFormMapping) { List result = new ArrayList<>(); try { log.info("开始同步ERP" + syncFormMapping.getForm_name()); @@ -298,12 +319,13 @@ public class SyncErpService { BeanUtils.copyProperties(erpSec, identifyInfo); K3CloudApi cloudApi = new K3CloudApi(identifyInfo); String today = new SimpleDateFormat("yyyy-MM-dd").format(new Date()); - String filterString = "FBillNo ='MO102241101889'"; + //String filterString = "FUseOrgId='750572'"; + String filterString = "FBillNo ='JDSCLLSQ240200009'"; //String filterString = "FCreateDate >= '" + today + " 00:00:00' and FCreateDate <= '" + today + " 23:59:59'"; ErpQuery query = new ErpQuery(); query.setFilterString(filterString); //query.setFormId(syncFormMapping.getForm_type()); - query.setFormId("PRD_MO"); + query.setFormId(syncFormMapping.getForm_type()); query.setFieldKeys("FID"); query.setLimit(1); String jsonString = JSON.toJSONString(query); @@ -323,7 +345,7 @@ public class SyncErpService { Map error = new HashMap<>(); for (String id : ids) { param.setId(id); - OperatorResult view = cloudApi.view("PRD_MO", param); + OperatorResult view = cloudApi.view(syncFormMapping.getForm_type(), param); RepoStatus status = view.getResult().getResponseStatus(); if (status.isIsSuccess()) { result.add(view.getResult().getResult()); 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 0f19b7d9..b23748fd 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 @@ -1,5 +1,6 @@ package org.nl.wms.flow_manage.flow.service.classprocessimpl; +import cn.hutool.core.date.DateUtil; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; @@ -11,6 +12,7 @@ import com.kingdee.bos.webapi.sdk.K3CloudApi; import org.apache.commons.lang3.ObjectUtils; import org.apache.commons.lang3.StringUtils; import org.nl.common.domain.exception.BadRequestException; +import org.nl.common.enums.StatusEnum; import org.nl.wms.external_system.erp.dto.ErpSec; import org.nl.wms.flow_manage.flow.framework.process.nodeType.excess.impl.process.classprocess.ClassProcess; import org.nl.wms.pm_manage.form_data.service.IPmFormDataService; @@ -47,21 +49,21 @@ public class SyncReceiptProcessHandler implements ClassProcess { String formType = from.getString("form_type"); String id = from.getString("id"); PmFormData pmFormData = iPmFormDataService.getById(id); + //要回传的json数据 + JSONObject formData = pmFormData.getForm_data(); + if (!formType.contains("RECEIPT")) { + throw new BadRequestException("回传失败:单据类型不是回传类型单据"); + } + String formid = formData.getString("formid"); + if (StringUtils.isEmpty(formid)) { + throw new BadRequestException("回传失败:回传数据form_data中数据格式不是formid,data类型"); + } + String json = formData.toJSONString(); try { - if (!formType.contains("RECEIPT")) { - throw new BadRequestException("回传失败:单据类型不是回传类型单据"); - } - //要回传的json数据 - JSONObject formData = pmFormData.getForm_data(); - String formid = formData.getString("formid"); - if (StringUtils.isEmpty(formid)) { - throw new BadRequestException("回传失败:回传数据form_data中数据格式不是formid,data类型"); - } //todo 需要封装 IdentifyInfo identifyInfo = new IdentifyInfo(); BeanUtils.copyProperties(erpSec, identifyInfo); K3CloudApi cloudApi = new K3CloudApi(identifyInfo); - String json = formData.toJSONString(); String result = cloudApi.save(formid, formData.toJSONString()); JSONObject res = JSONObject.parseObject(result); JSONObject responseStatus = res.getJSONObject("Result").getJSONObject("ResponseStatus"); @@ -73,21 +75,21 @@ public class SyncReceiptProcessHandler implements ClassProcess { .map(error -> ((JSONObject) error).getString("Message")) .collect(Collectors.joining("; ")); } + LambdaUpdateWrapper updateWrapper = new LambdaUpdateWrapper<>(); + updateWrapper.eq(PmFormData::getId, pmFormData.getId()); + updateWrapper.set(PmFormData::getUpdate_time, DateUtil.now()); if (isSuccess) { - LambdaUpdateWrapper updateWrapper = new LambdaUpdateWrapper<>(); - updateWrapper.eq(PmFormData::getId, pmFormData.getId()); - updateWrapper.set(PmFormData::getRemark, "回执单创建成功"); - iPmFormDataService.update(updateWrapper); + updateWrapper.set(PmFormData::getStatus, StatusEnum.FORM_STATUS.code("完成")); + updateWrapper.set(PmFormData::getRemark, "回执单创建成功,回传Erp数据为:" + json); } else { - LambdaUpdateWrapper updateWrapper = new LambdaUpdateWrapper<>(); - updateWrapper.eq(PmFormData::getId, pmFormData.getId()); - updateWrapper.set(PmFormData::getRemark, errorMessages); - iPmFormDataService.update(updateWrapper); + updateWrapper.set(PmFormData::getStatus, StatusEnum.FORM_STATUS.code("暂停")); + updateWrapper.set(PmFormData::getRemark,"回执单创建失败,原因为:"+errorMessages + ",回传Erp数据为:" + json); } + iPmFormDataService.update(updateWrapper); } catch (Exception ex) { LambdaUpdateWrapper updateWrapper = new LambdaUpdateWrapper<>(); updateWrapper.eq(PmFormData::getId, pmFormData.getId()); - updateWrapper.set(PmFormData::getRemark, ex.getMessage()); + updateWrapper.set(PmFormData::getRemark, "回执单创建失败,原因为:"+ex.getMessage() + ",回传Erp数据为:" + json); iPmFormDataService.update(updateWrapper); Log.error(ex.getMessage()); } diff --git a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/pda_manage/common/PdaCommonController.java b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/pda_manage/common/PdaCommonController.java index 7d631508..6c1d41fc 100644 --- a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/pda_manage/common/PdaCommonController.java +++ b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/pda_manage/common/PdaCommonController.java @@ -62,7 +62,7 @@ public class PdaCommonController { @Log("获取升级地址") @SaIgnore public ResponseEntity apkUrl() { - Map of = MapOf.of("versionName", "1.0.1", "url", "http://192.168.10.241:8012/api/pda/download/app-release"); + Map of = MapOf.of("versionName", "1.0.1", "url", "http://192.168.18.218:8012/api/pda/download/app-release"); return new ResponseEntity<>(of,HttpStatus.OK); } @RequestMapping("/download/app-release") diff --git a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/pda_manage/iostorage/server/dto/PdaFormInMst.java b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/pda_manage/iostorage/server/dto/PdaFormInMst.java index 77eda8b7..180a965e 100644 --- a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/pda_manage/iostorage/server/dto/PdaFormInMst.java +++ b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/pda_manage/iostorage/server/dto/PdaFormInMst.java @@ -248,6 +248,11 @@ public class PdaFormInMst implements Serializable { + /** + * 源头订单号编号 + */ + private String srcBillCode; + } diff --git a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/pda_manage/iostorage/sevice/PdaIOService.java b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/pda_manage/iostorage/sevice/PdaIOService.java index 7ab18bc5..883a1ceb 100644 --- a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/pda_manage/iostorage/sevice/PdaIOService.java +++ b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/pda_manage/iostorage/sevice/PdaIOService.java @@ -204,14 +204,23 @@ public class PdaIOService { result.setStockOrgId(pFormJson.getString("StockOrgId")); result.setSupplierId(pFormJson.getString("SupplierId")); result.setMaterial_id(receiveBillData.getMaterial_id()); - result.setPcsn(receiveBillData.getPCode()); + result.setPcsn(StringUtils.isBlank(receiveBillData.getPcsn()) ? "001" : receiveBillData.getPcsn()); result.setPurchaserId(pFormJson.getString("PurchaserId")); result.setUnit_id(receiveBillData.getUnit_id()); result.setQty(new BigDecimal(dFormJson.getString("ActReceiveQty"))); result.setTaxPrice(dFormJson.getString("taxPrice")); result.setMoNumber(receiveBillData.getPCode()); result.setMoEntryId(receiveBillData.getDId()); - result.setSrcBillNo(dFormJson.getString("OrderBillNo")); + //源单信息校验 + if (StringUtils.isBlank(dFormJson.getString("OrderBillNo"))) { + result.setSrcBillNo(null); + } else { + if (dFormJson.getString("OrderBillNo").equals("0")) { + result.setSrcBillNo(null); + } else { + result.setSrcBillNo(dFormJson.getString("OrderBillNo")); + } + } } else { throw new BadRequestException("查询合格证关联的收料通知单信息异常!"); } diff --git a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/pda_manage/iostorage/sevice/PdaInIOService.java b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/pda_manage/iostorage/sevice/PdaInIOService.java index 6f920f51..85fee638 100644 --- a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/pda_manage/iostorage/sevice/PdaInIOService.java +++ b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/pda_manage/iostorage/sevice/PdaInIOService.java @@ -1,6 +1,7 @@ package org.nl.wms.pda_manage.iostorage.sevice; import com.alibaba.fastjson.JSONObject; +import org.apache.commons.lang3.StringUtils; import org.nl.common.domain.exception.BadRequestException; import org.nl.common.utils.ListOf; import org.nl.wms.base_manage.material.service.IMdMeMaterialbaseService; @@ -42,17 +43,23 @@ public class PdaInIOService { String materialId = mst.getMaterial_id(); String vehicleCode = mst.getVehicle_code(); String unitId = mst.getUnit_id(); - Assert.noNullElements(new Object[]{mst.getStor_code(),mst.getQty(),mst.getMaterial_code(),mst.getBar_code(), materialId,mst.getQty(),mst.getSingle_weight(),mst.getStockOrgId()},"入库失败:请求参数不全"); + if (StringUtils.isBlank(mst.getSrcBillNo())) { + throw new BadRequestException("操作失败,源单信息不存在!"); + } + if (StringUtils.isBlank(mst.getMaterial_code())) { + throw new BadRequestException("操作失败,物料信息不存在!"); + } + Assert.noNullElements(new Object[]{mst.getStor_code(), mst.getQty(), mst.getMaterial_code(), mst.getBar_code(), materialId, mst.getQty(), mst.getSingle_weight(), mst.getStockOrgId()}, "入库失败:请求参数不全"); MaterGroupDto groupDto = new MaterGroupDto(); groupDto.setStor_code(mst.getStor_code()); String form_type; - if (mst.getBillNo().contains("OP")||mst.getBillNo().contains("op")) { + if (mst.getBillNo().contains("OP") || mst.getBillNo().contains("op")) { form_type = "PRD_INSTOCK"; - }else { + } else { form_type = "STK_InStock"; } MdMeMaterialbase meMaterialbase = iMdMeMaterialbaseService.getById(materialId); - if (meMaterialbase==null){ + if (meMaterialbase == null) { throw new BadRequestException("入库失败,物料id在系统中不存在"); } BmMeasureUnit measureUnit = iBmMeasureUnitService.getById(unitId); diff --git a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/sync_manage/controller/form_mapping/SyncFormMappingController.java b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/sync_manage/controller/form_mapping/SyncFormMappingController.java index 34955bbe..e82cae27 100644 --- a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/sync_manage/controller/form_mapping/SyncFormMappingController.java +++ b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/sync_manage/controller/form_mapping/SyncFormMappingController.java @@ -133,6 +133,13 @@ public class SyncFormMappingController { return new ResponseEntity<>(result,HttpStatus.OK); } + @PostMapping("/push") + @Log("下推测试") + public ResponseEntity push(@RequestBody JSONObject form){ + //参数判读,参数解析,调用参数入库 + JSONObject result = syncErpService.push(form); + return new ResponseEntity<>(result,HttpStatus.OK); + } diff --git a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/system_manage/service/quartz/task/SyncErpBillsScheduleService.java b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/system_manage/service/quartz/task/SyncErpBillsScheduleService.java index 0e85262a..a5f4d7c5 100644 --- a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/system_manage/service/quartz/task/SyncErpBillsScheduleService.java +++ b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/system_manage/service/quartz/task/SyncErpBillsScheduleService.java @@ -11,6 +11,7 @@ import org.apache.commons.lang3.ObjectUtils; import org.apache.commons.lang3.StringUtils; import org.nl.common.utils.BaseCode; import org.nl.common.utils.IdUtil; +import org.nl.common.utils.MapOf; import org.nl.config.lucene.LuceneAppender; import org.nl.wms.external_system.erp.dto.ErpQuery; import org.nl.wms.external_system.erp.dto.ErpSec; @@ -50,7 +51,10 @@ public class SyncErpBillsScheduleService { @Autowired private PmFormDataMapper pmFormDataMapper; - + private static Map BillOrg_Mapping = MapOf.of( + "PRD_PPBOM", "FPrdOrgId", "PRD_MO", "FPrdOrgId" + , "SAL_SaleOrder", "StockOrgId", "PUR_ReceiveBill", "StockOrgId" + , "ka7c19edf9d4b4b39b8cc4a06802163b0", "F_PMSY_PrdOrgId_Id"); public void run() { try { @@ -58,7 +62,7 @@ public class SyncErpBillsScheduleService { MDC.put("requestIp", "127.0.0.1"); MDC.put("requestTime", DateUtil.now()); LuceneAppender.traceIdTL.set(BaseCode.intToChars(IdUtil.getLongId())); - List list = syncFormMappingServiceImpl.list(new LambdaQueryWrapper().in(SyncFormMapping::getForm_type, "PRD_MO","PUR_ReceiveBill","PRD_PPBOM","SP_PickMtrl")); + List list = syncFormMappingServiceImpl.list(new LambdaQueryWrapper().in(SyncFormMapping::getForm_type, "ka7c19edf9d4b4b39b8cc4a06802163b0", "PRD_PPBOM", "PRD_MO", "PUR_ReceiveBill", "SAL_SaleOrder")); for (SyncFormMapping m : list) { JSONArray mappingJson = m.getMapping_json(); String mappingString = JSON.toJSONString(mappingJson); @@ -157,8 +161,11 @@ public class SyncErpBillsScheduleService { BeanUtils.copyProperties(erpSec, identifyInfo); K3CloudApi cloudApi = new K3CloudApi(identifyInfo); String today = new SimpleDateFormat("yyyy-MM-dd").format(new Date()); - //String filterString = " FDocumentStatus='C' AND FCreateDate >= '2024-11-22 00:00:00' and FCreateDate <= '2024-11-30 23:59:59'"; - String filterString = "FDocumentStatus='C' AND FCreateDate >= '" + today + " 00:00:00' and FCreateDate <= '" + today + " 23:59:59'"; + //String filterString = "FBillNo ='CGSL241101132'"; + String BillOrg = BillOrg_Mapping.get(formType); + String filterString = BillOrg + "='750572' AND FDocumentStatus='C' AND FCreateDate >= '2024-12-02 00:00:00' and FCreateDate <= '2024-12-02 23:59:59'"; + // String filterString = " FDocumentStatus='C' AND FCreateDate >= '2024-12-02 00:00:00' and FCreateDate <= '2024-12-02 23:59:59'"; + //String filterString = "FDocumentStatus='C' AND FCreateDate >= '" + today + " 00:00:00' and FCreateDate <= '" + today + " 23:59:59'"; ErpQuery query = new ErpQuery(); query.setFilterString(filterString); query.setFormId(formType);