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 55ec6a55..2099ecf5 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 @@ -2,10 +2,18 @@ package org.nl.wms.external_system.erp; import com.alibaba.fastjson.JSON; -//import com.kingdee.bos.webapi.entity.*; -//import com.kingdee.bos.webapi.sdk.K3CloudApi; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; +import com.kingdee.bos.webapi.entity.*; +import com.kingdee.bos.webapi.sdk.K3CloudApi; import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.ObjectUtils; import org.apache.commons.lang3.StringUtils; +import org.nl.wms.base_manage.bsrealstorattr.service.impl.StIvtBsrealstorattrServiceImpl; +import org.nl.wms.base_manage.customer.service.impl.BmCustomerServiceImpl; +import org.nl.wms.base_manage.material.service.dao.MdMeMaterialbase; +import org.nl.wms.base_manage.material.service.impl.MdMeMaterialbaseServiceImpl; +import org.nl.wms.base_manage.supplier.service.IBmSupplierService; import org.nl.wms.external_system.erp.dto.ErpQuery; import org.nl.wms.external_system.erp.dto.ErpSec; import org.nl.wms.sync_manage.service.form_mapping.dao.SyncFormMapping; @@ -40,57 +48,122 @@ public class SyncErpService { @Autowired ErpSec erpSec; + @Autowired + MdMeMaterialbaseServiceImpl mdMeMaterialbaseServiceImpl; + @Autowired + private IBmSupplierService supplierService; + @Autowired + private BmCustomerServiceImpl bmCustomerServiceImpl; + @Autowired + private StIvtBsrealstorattrServiceImpl stIvtBsrealstorattrServiceImpl; + + + public List syncDataTest(SyncFormMapping syncFormMapping) { + List list = mdMeMaterialbaseServiceImpl.list(new LambdaQueryWrapper().lt(MdMeMaterialbase::getMaterial_id, "80000")); + list.forEach(r -> { + syncDataTest(r.getMaterial_code()); + }); + return null; + } + + public List syncDataTest(String fNumber) { + List result = new ArrayList<>(); + try { + String sd = String.format("FNumber ='%s'", fNumber); + IdentifyInfo identifyInfo = new IdentifyInfo(); + BeanUtils.copyProperties(erpSec, identifyInfo); + K3CloudApi cloudApi = new K3CloudApi(identifyInfo); + String today = new SimpleDateFormat("yyyy-MM-dd").format(new Date()); + ErpQuery query = new ErpQuery(); + query.setFilterString(sd); + query.setFormId("BD_MATERIAL"); + query.setFieldKeys("FMATERIALID,FNumber"); + //query.setLimit(10); + String jsonString = JSON.toJSONString(query); + List> lists = cloudApi.executeBillQuery(jsonString); + log.info("同步ERP结果" + lists.size()); + List ids = new ArrayList<>(); + List firstList = lists.get(0); + for (Object r : firstList) { + String fid = r.toString(); + if (StringUtils.isEmpty(fid)) { + throw new RuntimeException("单据同步失败,没有找到FID"); + } + ids.add(fid); + } + if (ids.size() > 1) { + List sds = mdMeMaterialbaseServiceImpl.list(new LambdaQueryWrapper().eq(MdMeMaterialbase::getMaterial_code, ids.get(1))); + if (ObjectUtils.isNotEmpty(sds)) { + if (StringUtils.isNotBlank(ids.get(0)) && StringUtils.isNotBlank(ids.get(1))) { + String id = ids.get(0); + String code = ids.get(1); + if (code.contains(".")) { + LambdaUpdateWrapper data = new LambdaUpdateWrapper<>(); + data.eq(MdMeMaterialbase::getMaterial_code, code); + data.set(MdMeMaterialbase::getMaterial_id, id); + mdMeMaterialbaseServiceImpl.update(data); + } + + } + } + } + } catch (Exception ex) { + ex.printStackTrace(); + throw new RuntimeException("同步失败:" + ex.getMessage()); + } + return result; + } + public List syncData(SyncFormMapping syncFormMapping) { List result = new ArrayList<>(); try { -// log.info("开始同步ERP" + syncFormMapping.getForm_name()); -// IdentifyInfo identifyInfo = new IdentifyInfo(); -// BeanUtils.copyProperties(erpSec, identifyInfo); -// K3CloudApi cloudApi = new K3CloudApi(identifyInfo); -// String today = new SimpleDateFormat("yyyy-MM-dd").format(new Date()); -// 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_INSTOCK"); -// query.setFieldKeys("FID"); -// query.setLimit(2000); -// String jsonString = JSON.toJSONString(query); -// List> lists = cloudApi.executeBillQuery(jsonString); -// log.info("同步ERP结果" + lists.size()); -// Set ids = new HashSet<>(); -// for (List list : lists) { -// for (Object r : list) { -// String fid = r.toString(); -// if (StringUtils.isEmpty(fid)) { -// throw new RuntimeException("单据同步失败,没有找到FID"); -// } -// ids.add(fid); -// } -// } -// OperateParam param = new OperateParam(); -// Map error = new HashMap<>(); -// for (String id : ids) { -// param.setId(id); -// OperatorResult view = cloudApi.view("PRD_INSTOCK", param); -// RepoStatus status = view.getResult().getResponseStatus(); -// if (status.isIsSuccess()) { -// result.add(view.getResult().getResult()); -// } else { -// ArrayList errors = status.getErrors(); -// String errorMsg = errors.stream().map(RepoError::getMessage).collect(Collectors.joining(",")); -// error.put(id, errorMsg); -// } -// } -// if (!CollectionUtils.isEmpty(error)){ -// log.info("ERP单据同步同步失败:{}", error); -// } - }catch (Exception ex){ + log.info("开始同步ERP" + syncFormMapping.getForm_name()); + IdentifyInfo identifyInfo = new IdentifyInfo(); + BeanUtils.copyProperties(erpSec, identifyInfo); + K3CloudApi cloudApi = new K3CloudApi(identifyInfo); + String today = new SimpleDateFormat("yyyy-MM-dd").format(new Date()); + //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("BD_MATERIAL"); + query.setFieldKeys("FMATERIALID,FNumber"); + query.setLimit(10); + String jsonString = JSON.toJSONString(query); + List> lists = cloudApi.executeBillQuery(jsonString); + log.info("同步ERP结果" + lists.size()); + Set ids = new HashSet<>(); + for (List list : lists) { + for (Object r : list) { + String fid = r.toString(); + if (StringUtils.isEmpty(fid)) { + throw new RuntimeException("单据同步失败,没有找到FID"); + } + ids.add(fid); + } + } + OperateParam param = new OperateParam(); + Map error = new HashMap<>(); + for (String id : ids) { + param.setId(id); + OperatorResult view = cloudApi.view("BD_MATERIAL", param); + RepoStatus status = view.getResult().getResponseStatus(); + if (status.isIsSuccess()) { + result.add(view.getResult().getResult()); + } else { + ArrayList errors = status.getErrors(); + String errorMsg = errors.stream().map(RepoError::getMessage).collect(Collectors.joining(",")); + error.put(id, errorMsg); + } + } + if (!CollectionUtils.isEmpty(error)) { + log.info("ERP单据同步同步失败:{}", error); + } + } catch (Exception ex) { ex.printStackTrace(); - throw new RuntimeException("同步失败:"+ex.getMessage()); + throw new RuntimeException("同步失败:" + ex.getMessage()); } - log.info(result.toString()); return result; } 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 cef1364a..da1928df 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 @@ -4,6 +4,7 @@ import cn.hutool.core.date.DateUtil; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.github.pagehelper.Page; import com.github.pagehelper.PageHelper; import org.apache.commons.lang3.StringUtils; @@ -14,10 +15,9 @@ import org.nl.common.domain.exception.BadRequestException; 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.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; -import org.nl.wms.pm_manage.form_data.service.IPmFormDataService; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.nl.wms.pm_manage.form_data.service.dto.FormDataQuery; import org.nl.wms.pm_manage.form_data.service.dto.PmFormDataDto; import org.nl.wms.sync_manage.service.form_mapping.ISyncFormMappingService; @@ -73,62 +73,67 @@ public class PmFormDataServiceImpl extends ServiceImpl syncAnalyse(SyncFormMapping formMapping, String sourceString) { - BmFormStruc one = formStrucService.getOne(new QueryWrapper().eq("form_type", formMapping.getForm_type())); - if (one == null) { - throw new BadRequestException("当前表单无配置信息" + formMapping.getForm_type()); - } - List result = new ArrayList<>(); - Boolean dtlSplit = formMapping.getDtl_split(); - //直接取 - JSONObject sourceData = JSONObject.parseObject(sourceString);; -// if (StringUtils.isNotEmpty(convertJson)){ -// sourceData = JSONObject.parseObject(sourceString).getJSONObject("Model"); -// }else { -// sourceData = JSONObject.parseObject(sourceString); -// } - if (dtlSplit){ - List items_arr = mappingParseList(formMapping.getMapping_json(), one, sourceData); - for (int i = 0; i < items_arr.size(); i++) { - JSONObject itemTarget = items_arr.get(i); - itemTarget.put("id", IdUtil.getStringId()); - itemTarget.put("code", CodeUtil.getNewCode(formMapping.getForm_type())); - itemTarget.put("create_time", DateUtil.now()); - itemTarget.put("create_name", SecurityUtils.getCurrentNickName()); - PmFormData dtl = itemTarget.toJavaObject(PmFormData.class); - result.add(dtl); + try { + BmFormStruc one = formStrucService.getOne(new QueryWrapper().eq("form_type", formMapping.getForm_type())); + if (one == null) { + throw new BadRequestException("当前表单无配置信息" + formMapping.getForm_type()); } - }else { - JSONObject target = mappingParse(formMapping.getMapping_json(), one, sourceData); - Object items = target.remove("item"); - target.put("id", - StringUtils.isEmpty(target.getString("biz_id")) - ?IdUtil.getStringId():target.getString("biz_id")); - target.put("code", - StringUtils.isEmpty(target.getString("biz_code")) - ?CodeUtil.getNewCode(formMapping.getForm_type()):target.getString("biz_code")); - target.put("create_time", DateUtil.now()); - target.put("create_name", SecurityUtils.getCurrentNickName()); - PmFormData mst = target.toJavaObject(PmFormData.class); - result.add(mst); - if (items != null) { - JSONArray items_arr = (JSONArray) items; + List result = new ArrayList<>(); + Boolean dtlSplit = formMapping.getDtl_split(); + //直接取 + JSONObject sourceData = JSONObject.parseObject(sourceString); + // if (StringUtils.isNotEmpty(convertJson)){ + // sourceData = JSONObject.parseObject(sourceString).getJSONObject("Model"); + // }else { + // sourceData = JSONObject.parseObject(sourceString); + // } + if (dtlSplit) { + List items_arr = mappingParseList(formMapping.getMapping_json(), one, sourceData); for (int i = 0; i < items_arr.size(); i++) { - JSONObject itemTarget = items_arr.getJSONObject(i); - itemTarget.put("id", - StringUtils.isEmpty(itemTarget.getString("biz_id")) - ?IdUtil.getStringId():itemTarget.getString("biz_id")); - if (StringUtils.isNotEmpty(itemTarget.getString("biz_code"))) { - itemTarget.getString("biz_code"); - } + JSONObject itemTarget = items_arr.get(i); + itemTarget.put("id", IdUtil.getStringId()); + itemTarget.put("code", CodeUtil.getNewCode(formMapping.getForm_type())); itemTarget.put("create_time", DateUtil.now()); itemTarget.put("create_name", SecurityUtils.getCurrentNickName()); - itemTarget.put("parent_id", mst.getId()); PmFormData dtl = itemTarget.toJavaObject(PmFormData.class); result.add(dtl); } + } else { + JSONObject target = mappingParse(formMapping.getMapping_json(), one, sourceData); + Object items = target.remove("item"); + target.put("id", + StringUtils.isEmpty(target.getString("biz_id")) + ? IdUtil.getStringId() : target.getString("biz_id")); + target.put("code", + StringUtils.isEmpty(target.getString("biz_code")) + ? CodeUtil.getNewCode(formMapping.getForm_type()) : target.getString("biz_code")); + target.put("create_time", DateUtil.now()); + target.put("create_name", SecurityUtils.getCurrentNickName()); + PmFormData mst = target.toJavaObject(PmFormData.class); + result.add(mst); + if (items != null) { + JSONArray items_arr = (JSONArray) items; + for (int i = 0; i < items_arr.size(); i++) { + JSONObject itemTarget = items_arr.getJSONObject(i); + itemTarget.put("id", + StringUtils.isEmpty(itemTarget.getString("biz_id")) + ? IdUtil.getStringId() : itemTarget.getString("biz_id")); + if (StringUtils.isNotEmpty(itemTarget.getString("biz_code"))) { + itemTarget.getString("biz_code"); + } + itemTarget.put("create_time", DateUtil.now()); + itemTarget.put("create_name", SecurityUtils.getCurrentNickName()); + itemTarget.put("parent_id", mst.getId()); + PmFormData dtl = itemTarget.toJavaObject(PmFormData.class); + result.add(dtl); + } + } } + return result; + } catch (Exception ex) { + log.error("ERP单据解析异常:" + ex.getMessage()); + return null; } - return result; } @Override 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 8e472c42..38c2bcab 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 @@ -1,6 +1,7 @@ package org.nl.wms.sync_manage.controller.form_mapping; +import cn.dev33.satoken.annotation.SaIgnore; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; @@ -46,6 +47,7 @@ import java.util.List; */ @RestController @RequestMapping("api/syncFormMapping") +@SaIgnore public class SyncFormMappingController { @@ -114,10 +116,13 @@ public class SyncFormMappingController { //参数判读,参数解析,调用参数入库 SyncFormMapping syncFormMapping = form.toJavaObject(SyncFormMapping.class); List objects = syncErpService.syncData(syncFormMapping); - List pmFormDatas = formDataService.syncAnalyse(syncFormMapping, JSON.toJSONString(objects)); - formDataService.saveBatch(pmFormDatas); - return new ResponseEntity<>(TableDataInfo.build(),HttpStatus.OK); + List pmFormDatas = formDataService.syncAnalyse(syncFormMapping, JSON.toJSONString(objects)); + formDataService.saveBatch(pmFormDatas); + return new ResponseEntity<>(TableDataInfo.build(objects),HttpStatus.OK); } + + + }