From 6b1a3d18cc02d3c2f3f2f20c1a7b1f1898b390cd Mon Sep 17 00:00:00 2001 From: gongbaoxiong <751575283@qq.com> Date: Mon, 16 Dec 2024 23:08:51 +0800 Subject: [PATCH] =?UTF-8?q?add=EF=BC=9A=E5=A6=82=E6=9E=9C=E6=9C=AC?= =?UTF-8?q?=E5=9C=B0=E6=97=A0=E7=94=A8=E6=96=99=E6=B8=85=E5=8D=95=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E5=88=99=E5=9C=A8=E7=BA=BF=E5=90=8C=E6=AD=A5=E6=95=B0?= =?UTF-8?q?=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../SyncReceiptProcessHandler.java | 2 +- .../service/impl/PmFormDataServiceImpl.java | 83 +++++++++++++------ .../task/SyncErpBillsScheduleService.java | 35 +++++--- 3 files changed, 81 insertions(+), 39 deletions(-) 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 bf844fd3..3622db79 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 @@ -170,7 +170,7 @@ public class SyncReceiptProcessHandler implements ClassProcess { JSONObject fStockId = new JSONObject(); //tofix 目前都入料箱库 fStockId.put("FNumber", "25"); - linkedMap.put("FStockId", fStockId); + tempMap.put("FStockId", fStockId); } } fEntity.clear(); 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 e3e9d62b..509e6947 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 @@ -1,8 +1,10 @@ package org.nl.wms.pm_manage.form_data.service.impl; import cn.hutool.core.date.DateUtil; +import com.alibaba.fastjson.JSON; 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.extension.service.impl.ServiceImpl; import com.github.pagehelper.Page; @@ -26,15 +28,16 @@ import org.nl.wms.stor_manage.struct.service.IStIvtStructattrService; import org.nl.wms.stor_manage.struct.service.dao.StructAssignQty; import org.nl.wms.sync_manage.service.form_mapping.ISyncFormMappingService; import org.nl.wms.sync_manage.service.form_mapping.dao.SyncFormMapping; +import org.nl.wms.system_manage.service.quartz.task.SyncErpBillsScheduleService; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; import org.springframework.util.Assert; import org.springframework.util.CollectionUtils; import java.math.BigDecimal; import java.util.*; -import java.util.function.Function; import java.util.stream.Collectors; /** @@ -61,11 +64,17 @@ public class PmFormDataServiceImpl extends ServiceImpl pmFormDataDtos = this.baseMapper.queryTree2(query); - if (!CollectionUtils.isEmpty(pmFormDataDtos)){ - List parents = pmFormDataDtos.stream().map(PmFormDataDto::getId).collect(Collectors.toList()); - List childs = this.baseMapper.selectChilds(parents); - if (!CollectionUtils.isEmpty(childs)){ - Map> childMap = childs.stream().collect(Collectors.groupingBy(PmFormDataDto::getParent_id)); - for (PmFormDataDto dataDto : pmFormDataDtos) { - String productArea = dataDto.getForm_data().getString("product_area"); - dataDto.setProduct_area(productArea); - List children = childMap.get(dataDto.getId()); - if (children!=null){ - for (PmFormDataDto child : children) { - String childProductArea = child.getForm_data().getString("product_area"); - child.setProduct_area(childProductArea); - } - } - dataDto.setChildren(children); + if (!CollectionUtils.isEmpty(pmFormDataDtos)) { + handleFormDatas(pmFormDataDtos); + } else { + //根据单据编号同步ERP用料清单单据 + if ("PRD_PPBOM".equals(query.getForm_type())) { + List list = iSyncFormMappingService.list(new LambdaQueryWrapper().eq(SyncFormMapping::getForm_type, "PRD_PPBOM")); + 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); + if (!CollectionUtils.isEmpty(pmFormData)) { + handleFormDatas(pmFormData); } + com.baomidou.mybatisplus.extension.plugins.pagination.Page dtoPage = new com.baomidou.mybatisplus.extension.plugins.pagination.Page<>(page.getPages(), page.getPageSize(), page.getTotal()); + dtoPage.setRecords(pmFormData); + dtoPage.setTotal(pmFormData.size()); + return dtoPage; } } com.baomidou.mybatisplus.extension.plugins.pagination.Page dtoPage = new com.baomidou.mybatisplus.extension.plugins.pagination.Page<>(page.getPages(), page.getPageSize(), page.getTotal()); @@ -207,14 +216,34 @@ public class PmFormDataServiceImpl extends ServiceImpl pmFormDataDtos) { + List parents = pmFormDataDtos.stream().map(PmFormDataDto::getId).collect(Collectors.toList()); + List childs = this.baseMapper.selectChilds(parents); + if (!CollectionUtils.isEmpty(childs)) { + Map> childMap = childs.stream().collect(Collectors.groupingBy(PmFormDataDto::getParent_id)); + for (PmFormDataDto dataDto : pmFormDataDtos) { + String productArea = dataDto.getForm_data().getString("product_area"); + dataDto.setProduct_area(productArea); + List children = childMap.get(dataDto.getId()); + if (children != null) { + for (PmFormDataDto child : children) { + String childProductArea = child.getForm_data().getString("product_area"); + child.setProduct_area(childProductArea); + } + } + dataDto.setChildren(children); + } + } + } + @Override - public PmFormDataDto queryErpCode(String code,String stor_code) { + public PmFormDataDto queryErpCode(String code, String stor_code) { FormDataQuery query = new FormDataQuery(); query.setCode(code); - query.setStatus(new String[]{StatusEnum.FORM_STATUS.code("生成"),StatusEnum.FORM_STATUS.code("执行中")}); + query.setStatus(new String[]{StatusEnum.FORM_STATUS.code("生成"), StatusEnum.FORM_STATUS.code("执行中")}); List pmFormDataDtos = this.baseMapper.queryTree2(query); - if (CollectionUtils.isEmpty(pmFormDataDtos)){ - throw new BadRequestException(code+"单据编码不存在或已经完成入库"); + if (CollectionUtils.isEmpty(pmFormDataDtos)) { + throw new BadRequestException(code + "单据编码不存在或已经完成入库"); } PmFormDataDto pmFormDataDto = pmFormDataDtos.get(0); List childs = this.baseMapper.selectChilds(ListOf.of(pmFormDataDto.getId())); @@ -228,21 +257,23 @@ public class PmFormDataServiceImpl extends ServiceImpl structMaterials = iStIvtStructattrService.getStructIvtAssign(collect, stor_code); Map> materialMap = structMaterials.stream().collect(Collectors.groupingBy(StructAssignQty::getMaterial_id)); + child: for (PmFormDataDto child : childs) { String childProductArea = child.getForm_data().getString("product_area"); child.setProduct_area(childProductArea); List maps = materialMap.get(child.getMaterial_id()); - if (CollectionUtils.isEmpty(maps)){ + if (CollectionUtils.isEmpty(maps)) { child.setSto_qty(new BigDecimal(0)); child.setPcsn(""); - }else { + } else { for (StructAssignQty assignQty : maps) { - if (child.getPcsn().equals(assignQty.getPcsn())){ + if (assignQty.getPcsn().equals(child.getPcsn())) { child.setSto_qty(assignQty.getSto_qty()); child.setPcsn(assignQty.getPcsn()); + continue child; } } - child.setSto_qty(BigDecimal.valueOf(maps.stream().mapToInt(a->a.getSto_qty().intValue()).sum())); + child.setSto_qty(BigDecimal.valueOf(maps.stream().mapToInt(a -> a.getSto_qty().intValue()).sum())); child.setPcsn(""); } } 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 dd241ebb..58a659d1 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 @@ -31,6 +31,7 @@ import org.nl.wms.sync_manage.service.form_mapping.impl.SyncFormMappingServiceIm import org.slf4j.MDC; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; @@ -60,6 +61,7 @@ public class SyncErpBillsScheduleService { @Autowired private IMdMeMaterialbaseService iMdMeMaterialbaseService; + @Lazy @Autowired private IPmFormDataService formDataService; @@ -111,7 +113,7 @@ public class SyncErpBillsScheduleService { for (SyncFormMapping m : list) { JSONArray mappingJson = m.getMapping_json(); String mappingString = JSON.toJSONString(mappingJson); - syncData(mappingString, m.getForm_type(), m.getDtl_split()); + syncData(mappingString, m.getForm_type(), m.getDtl_split(), ""); } } finally { LuceneAppender.traceIdTL.remove(); @@ -121,10 +123,11 @@ public class SyncErpBillsScheduleService { /** * 自动同步 */ - public void syncData(String mappingJson, String formType, Boolean dtlSplit) { + public void syncData(String mappingJson, String formType, Boolean dtlSplit, String billCode) { boolean islock = lock.tryLock(); try { if (islock) { + ErpQuery query = new ErpQuery(); JSONArray result; Map errorMsg = new HashMap<>(); // 获取当前日期 @@ -132,15 +135,21 @@ public class SyncErpBillsScheduleService { Calendar calendar = Calendar.getInstance(); calendar.add(Calendar.DAY_OF_MONTH, -10); String sevenDaysAgo = new SimpleDateFormat("yyyy-MM-dd").format(calendar.getTime()); - String filterString = getFilterString(formType, "", sevenDaysAgo, today); - ErpQuery query = new ErpQuery(); + String filterString; + if (StringUtils.isNotBlank(billCode)) { + filterString = "FBillNo = '" + billCode + "'"; + } else { + filterString = getFilterString(formType, "", sevenDaysAgo, today); + } query.setFilterString(filterString); query.setFormId(formType); query.setFieldKeys("FID"); query.setLimit(0); result = erpServiceUtils.queryBills(query); - K3CloudApi k3CloudApi = erpServiceUtils.getCloudApi(); - handleBills(mappingJson, formType, dtlSplit, errorMsg, result, k3CloudApi); + if (ObjectUtils.isNotEmpty(result)) { + K3CloudApi k3CloudApi = erpServiceUtils.getCloudApi(); + handleBills(mappingJson, formType, dtlSplit, errorMsg, result, k3CloudApi); + } } } catch (Exception ex) { log.error("同步数据时出现异常: {}", ex.getMessage()); @@ -192,12 +201,14 @@ public class SyncErpBillsScheduleService { query.setFieldKeys("FID"); query.setLimit(0); result = erpServiceUtils.queryBills(query); - K3CloudApi k3CloudApi = erpServiceUtils.getCloudApi(); - handleBills(mappingJson, formType, dtlSplit, errorMsg, result, k3CloudApi); - if (!CollectionUtils.isEmpty(errorMsg)){ - throw new BadRequestException("同步成功"+(result.size()-errorMsg.size())+"条,失败信息:"+errorMsg.toString()); - }else { - return "同步成功,共计"+result.size()+"条"; + if (ObjectUtils.isNotEmpty(result)) { + K3CloudApi k3CloudApi = erpServiceUtils.getCloudApi(); + handleBills(mappingJson, formType, dtlSplit, errorMsg, result, k3CloudApi); + } + if (!CollectionUtils.isEmpty(errorMsg)) { + throw new BadRequestException("同步成功" + (result.size() - errorMsg.size()) + "条,失败信息:" + errorMsg.toString()); + } else { + return "同步成功,共计" + result.size() + "条"; } }else { throw new BadRequestException("当前同步操作正在执行,稍后再试");