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 d4dce889..36df0013 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 @@ -77,7 +77,7 @@ public class SyncReceiptProcessHandler implements ClassProcess { String result = erpServiceUtils.audit(formData).getString("result"); res = JSONObject.parseObject(result); } else { - String result = cloudApi.save(formid, formData.toJSONString()); + String result = erpServiceUtils.save(formData).getString("result"); res = JSONObject.parseObject(result); } JSONObject responseStatus = res.getJSONObject("Result").getJSONObject("ResponseStatus"); @@ -94,7 +94,7 @@ public class SyncReceiptProcessHandler implements ClassProcess { updateWrapper.set(PmFormData::getUpdate_time, DateUtil.now()); if (isSuccess) { updateWrapper.set(PmFormData::getStatus, StatusEnum.FORM_STATUS.code("完成")); - updateWrapper.set(PmFormData::getRemark, "回执单创建成功,回传Erp数据为:" + json); + updateWrapper.set(PmFormData::getRemark, "回执单创建成功,回传Erp数据为:" + responseStatus.getJSONArray("SuccessEntitys").toJSONString()); } else { updateWrapper.set(PmFormData::getStatus, StatusEnum.FORM_STATUS.code("暂停")); updateWrapper.set(PmFormData::getRemark,"回执单创建失败,原因为:"+errorMessages + ",回传Erp数据为:" + json); @@ -110,7 +110,11 @@ public class SyncReceiptProcessHandler implements ClassProcess { return from; } - private void handleBillEntity(String formType, JSONObject formData) { + public void handleBillEntity(String formType, JSONObject formData) { + JSONObject model = formData.getJSONObject("Model"); + if (model == null) { + return; + } JSONArray fEntityArray = formData.getJSONObject("Model").getJSONArray("FEntity"); //判断生产入库的手工录入与MRP生成方式需回传不同的源单信息 if ("RECEIPT_PRD".equals(formType)) { diff --git a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/pm_manage/form_data/controller/PmFormDataController.java b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/pm_manage/form_data/controller/PmFormDataController.java index 18992aba..6f3ac868 100644 --- a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/pm_manage/form_data/controller/PmFormDataController.java +++ b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/pm_manage/form_data/controller/PmFormDataController.java @@ -83,5 +83,17 @@ public class PmFormDataController { iPmFormDataService.syncFormData("type", formDtl); return new ResponseEntity<>(HttpStatus.OK); } + + + @PostMapping ("/syncFeedBack") + @Log("手动同步单据") + public ResponseEntity syncFeedBack(@RequestBody JSONObject fromData) { + return new ResponseEntity<>(iPmFormDataService.syncFeedBack(fromData),HttpStatus.OK); + } + + + + + } diff --git a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/pm_manage/form_data/service/IPmFormDataService.java b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/pm_manage/form_data/service/IPmFormDataService.java index f7e134cd..bdfd620e 100644 --- a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/pm_manage/form_data/service/IPmFormDataService.java +++ b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/pm_manage/form_data/service/IPmFormDataService.java @@ -25,7 +25,7 @@ public interface IPmFormDataService extends IService { Integer syncFormData(String type,String dataString); - + String syncFeedBack(JSONObject fromData); JSONObject mappingParse(JSONArray mappingJson, BmFormStruc one, JSONObject sourceData); diff --git a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/pm_manage/form_data/service/impl/PmFormDataServiceImpl.java b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/pm_manage/form_data/service/impl/PmFormDataServiceImpl.java index 07591745..e88e2c2e 100644 --- a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/pm_manage/form_data/service/impl/PmFormDataServiceImpl.java +++ b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/pm_manage/form_data/service/impl/PmFormDataServiceImpl.java @@ -6,10 +6,13 @@ import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.github.javaparser.utils.Log; import com.github.pagehelper.Page; import com.github.pagehelper.PageHelper; import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.ObjectUtils; import org.apache.commons.lang3.StringUtils; import org.nl.common.TableDataInfo; import org.nl.common.domain.constant.DictConstantPool; @@ -19,6 +22,7 @@ import org.nl.common.enums.StatusEnum; import org.nl.common.utils.*; import org.nl.wms.config_manage.form_struc.service.IBmFormStrucService; import org.nl.wms.config_manage.form_struc.service.dao.BmFormStruc; +import org.nl.wms.flow_manage.flow.service.classprocessimpl.SyncReceiptProcessHandler; import org.nl.wms.pm_manage.form_data.service.IPmFormDataService; import org.nl.wms.pm_manage.form_data.service.dao.PmFormData; import org.nl.wms.pm_manage.form_data.service.dao.mapper.PmFormDataMapper; @@ -36,6 +40,7 @@ import org.springframework.stereotype.Service; import org.springframework.util.Assert; import org.springframework.util.CollectionUtils; +import javax.annotation.Resource; import java.math.BigDecimal; import java.util.*; import java.util.stream.Collectors; @@ -64,18 +69,30 @@ public class PmFormDataServiceImpl extends ServiceImpl pmFormDatas = this.syncAnalyse(syncFormMapping.getMapping_json(),syncFormMapping.getForm_type(), syncFormMapping.getDtl_split(),dataString); + List pmFormDatas = this.syncAnalyse(syncFormMapping.getMapping_json(), syncFormMapping.getForm_type(), syncFormMapping.getDtl_split(), dataString); this.saveBatch(pmFormDatas); return pmFormDatas.size(); } + /** + * 手动同步单据 + */ + @Override + public String syncFeedBack(JSONObject jsonData) { + //执行回传单 + PmFormData pmFormData = jsonData.toJavaObject(PmFormData.class); + if (Integer.parseInt(pmFormData.getStatus()) > 30) { + throw new BadRequestException("该单据状态为已完成,无需再次回传!"); + } + JSONObject formData = pmFormData.getForm_data(); + //要回传的json数据 + String formid = formData.getString("formid"); + if (StringUtils.isEmpty(formid)) { + throw new BadRequestException("回传失败:回传数据form_data中数据格式不是formid,data类型"); + } + SyncReceiptProcessHandler.handleBillEntity(pmFormData.getForm_type(), formData); + String json = formData.toJSONString(); + String message = ""; + try { + JSONObject res; + if (Integer.parseInt(StatusEnum.ERP_TYPE.code(formid)) > 22) { + String result = erpServiceUtils.audit(formData).getString("result"); + res = JSONObject.parseObject(result); + } else { + String result = erpServiceUtils.save(formData).getString("result"); + ; + res = JSONObject.parseObject(result); + } + JSONObject responseStatus = res.getJSONObject("Result").getJSONObject("ResponseStatus"); + boolean isSuccess = responseStatus.getBooleanValue("IsSuccess"); + JSONArray errors = responseStatus.getJSONArray("Errors"); + if (ObjectUtils.isNotEmpty(errors)) { + message = errors.stream() + .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) { + message = responseStatus.getJSONArray("SuccessEntitys").toJSONString(); + message = "回执单创建成功,回传Erp数据为:" + message; + updateWrapper.set(PmFormData::getStatus, StatusEnum.FORM_STATUS.code("完成")); + updateWrapper.set(PmFormData::getRemark, message); + } else { + message = "回执单创建失败,原因为:" + message + ",回传Erp数据为:" + json; + updateWrapper.set(PmFormData::getStatus, StatusEnum.FORM_STATUS.code("暂停")); + updateWrapper.set(PmFormData::getRemark, message); + } + iPmFormDataService.update(updateWrapper); + } catch (Exception ex) { + LambdaUpdateWrapper updateWrapper = new LambdaUpdateWrapper<>(); + updateWrapper.eq(PmFormData::getId, pmFormData.getId()); + updateWrapper.set(PmFormData::getRemark, "回执单创建失败,原因为:" + ex.getMessage() + ",回传Erp数据为:" + json); + iPmFormDataService.update(updateWrapper); + Log.error(ex.getMessage()); + } + return message; + } + + /** * */ @Override - public List syncAnalyse(JSONArray mappingJson, String formType,Boolean dtlSplit,String sourceString) { + public List syncAnalyse(JSONArray mappingJson, String formType, Boolean dtlSplit, String sourceString) { List result = new ArrayList<>(); try { - BmFormStruc one = formStrucService.getOne(new QueryWrapper().eq("form_type",formType)); + BmFormStruc one = formStrucService.getOne(new QueryWrapper().eq("form_type", formType)); if (one == null) { throw new BadRequestException("当前表单无配置信息" + formType); } @@ -197,7 +276,8 @@ public class PmFormDataServiceImpl extends ServiceImpl list = iSyncFormMappingService.list(new LambdaQueryWrapper().eq(SyncFormMapping::getForm_type, query.getForm_type())); - JSONArray mappingJson = list.get(0).getMapping_json(); + if (ObjectUtils.isNotEmpty(list)) { + JSONArray mappingJson = list.get(0).getMapping_json(); String mappingString = JSON.toJSONString(mappingJson); syncErpBillsScheduleService.syncData(mappingString, list.get(0).getForm_type(), list.get(0).getDtl_split(), query.getCode()); List pmFormData = this.baseMapper.queryTree2(query); @@ -209,6 +289,7 @@ public class PmFormDataServiceImpl extends ServiceImpl dtoPage = new com.baomidou.mybatisplus.extension.plugins.pagination.Page<>(page.getPages(), page.getPageSize(), page.getTotal()); dtoPage.setRecords(pmFormDataDtos); return dtoPage; 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 58a659d1..4336626c 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 @@ -457,4 +457,8 @@ public class SyncErpBillsScheduleService { } } } + + + + }