From dbe984e40890364f7f5e330a4d0bd471f07b82ef Mon Sep 17 00:00:00 2001 From: zhangzq Date: Wed, 4 Dec 2024 00:11:35 +0800 Subject: [PATCH] =?UTF-8?q?rev:=E5=87=BA=E5=BA=93?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../iostorage/sevice/PdaIOService.java | 24 +++- .../form_data/service/dao/FormDataIdCode.java | 9 ++ .../service/dao/mapper/PmFormDataMapper.java | 1 + .../dao/mapper/xml/PmFormDataMapper.xml | 7 +- .../service/impl/PmFormDataServiceImpl.java | 42 +++++-- .../impl/StIvtIostorinvServiceImpl.java | 119 ++++++++++++++---- .../service/IStIvtStructattrService.java | 3 + .../struct/service/dao/StructAssignQty.java | 29 +++++ .../dao/mapper/StIvtStructattrMapper.java | 3 + .../dao/mapper/xml/StIvtStructattrMapper.xml | 25 ++++ .../struct/service/dto/StructattrQuery.java | 1 + .../impl/StIvtStructattrServiceImpl.java | 11 ++ .../task/SyncErpBillsScheduleService.java | 27 ++-- 13 files changed, 250 insertions(+), 51 deletions(-) create mode 100644 wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/pm_manage/form_data/service/dao/FormDataIdCode.java create mode 100644 wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/stor_manage/struct/service/dao/StructAssignQty.java 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 883a1ceb..8a1999c6 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 @@ -82,7 +82,6 @@ public class PdaIOService { //创建单据分配货位 StIvtIostorinv ivtIostorinv = ioService.createPadIvtAndoutDispense(pdaFormOutMst); StIvtIostorinv byId = iStIvtIostorinvService.getById(ivtIostorinv.getId()); - this.pdaTaskOpen(byId); } @@ -167,14 +166,31 @@ public class PdaIOService { String now = DateUtil.now(); String nickName = SecurityUtils.getCurrentNickName(); for (PdaFormOutDtl child : pdaFormOutMst.getChildren()) { - BigDecimal planQty = child.getPlan_qty(); + BigDecimal assignQty = child.getAssign_qty(); BigDecimal now_assign_qty = child.getNow_assign_qty(); BigDecimal qty = child.getQty(); iPmFormDataService.update(new UpdateWrapper() .set("qty",qty.subtract(now_assign_qty)) - .set("assign_qty",planQty.subtract(now_assign_qty)) + .set("assign_qty",assignQty.add(now_assign_qty)) .set("update_time",now) - .set("update_name",nickName)); + .set("update_name",nickName) + .eq("id",child.getId())); + } + String sourceFormid = pdaFormOutMst.getId(); + List byParentId = iPmFormDataService.getByParentId(sourceFormid); + long count = byParentId.stream().filter(pmFormData -> pmFormData.getQty().intValue() > 0).count(); + if (count == 0){ + iPmFormDataService.update(new UpdateWrapper() + .set("status",StatusEnum.FORM_STATUS.code("完成")) + .set("update_time",now) + .set("update_name",nickName) + .eq("id",sourceFormid)); + }else { + iPmFormDataService.update(new UpdateWrapper() + .set("status",StatusEnum.FORM_STATUS.code("执行中")) + .set("update_time",now) + .set("update_name",nickName) + .eq("id",sourceFormid)); } return mst; } diff --git a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/pm_manage/form_data/service/dao/FormDataIdCode.java b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/pm_manage/form_data/service/dao/FormDataIdCode.java new file mode 100644 index 00000000..022b14ec --- /dev/null +++ b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/pm_manage/form_data/service/dao/FormDataIdCode.java @@ -0,0 +1,9 @@ +package org.nl.wms.pm_manage.form_data.service.dao; + +import lombok.Data; + +@Data +public class FormDataIdCode { + private String id; + private String code; +} diff --git a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/pm_manage/form_data/service/dao/mapper/PmFormDataMapper.java b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/pm_manage/form_data/service/dao/mapper/PmFormDataMapper.java index 877321f5..cea9ae33 100644 --- a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/pm_manage/form_data/service/dao/mapper/PmFormDataMapper.java +++ b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/pm_manage/form_data/service/dao/mapper/PmFormDataMapper.java @@ -38,5 +38,6 @@ public interface PmFormDataMapper extends BaseMapper { ReceiveBillData queryReceiveBill(@Param("bar_code") String bar_code); Set existFormDataList(); + Set existFormCodeDataList(); } diff --git a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/pm_manage/form_data/service/dao/mapper/xml/PmFormDataMapper.xml b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/pm_manage/form_data/service/dao/mapper/xml/PmFormDataMapper.xml index 49a0e5eb..bd6718b4 100644 --- a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/pm_manage/form_data/service/dao/mapper/xml/PmFormDataMapper.xml +++ b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/pm_manage/form_data/service/dao/mapper/xml/PmFormDataMapper.xml @@ -198,7 +198,12 @@ WHERE d.bar_code= #{bar_code} + 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 1e730ab8..ece10cc4 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 @@ -23,6 +23,8 @@ 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.dto.FormDataQuery; import org.nl.wms.pm_manage.form_data.service.dto.PmFormDataDto; +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.springframework.beans.BeanUtils; @@ -31,7 +33,9 @@ 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; /** @@ -60,6 +64,8 @@ public class PmFormDataServiceImpl extends ServiceImpl 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) { - List children = childMap.get(dataDto.getId()); - for (PmFormDataDto child : children) { - String productArea = child.getForm_data().getString("product_area"); - child.setProduct_area(productArea); - } - dataDto.setChildren(children); + PmFormDataDto pmFormDataDto = pmFormDataDtos.get(0); + List childs = this.baseMapper.selectChilds(ListOf.of(pmFormDataDto.getId())); + if (CollectionUtils.isEmpty(childs)){ + throw new BadRequestException(code+"单据明细数据为空"); + } + List collect = childs.stream().map(PmFormDataDto::getMaterial_id).collect(Collectors.toList()); + //TODO:指定仓库 + List structMaterials = iStIvtStructattrService.getStructIvtAssign(collect, "FStockId"); + Map> materialMap = structMaterials.stream().collect(Collectors.groupingBy(StructAssignQty::getMaterial_id)); + + for (PmFormDataDto child : childs) { + String productArea = child.getForm_data().getString("product_area"); + child.setProduct_area(productArea); + List maps = materialMap.get(child.getMaterial_id()); + if (CollectionUtils.isEmpty(maps)){ + child.setSto_qty(new BigDecimal(0)); + child.setPcsn(""); + }else { + maps.sort(Comparator.comparing(StructAssignQty::getSto_qty)); + StructAssignQty max = maps.get(0); + child.setSto_qty(max.getSto_qty()); + child.setPcsn(max.getPcsn()); } } - return pmFormDataDtos.get(0); + pmFormDataDto.setChildren(childs); + return pmFormDataDto; } @Override diff --git a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/stor_manage/io/service/iostor/impl/StIvtIostorinvServiceImpl.java b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/stor_manage/io/service/iostor/impl/StIvtIostorinvServiceImpl.java index 412a08ba..e5f432ac 100644 --- a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/stor_manage/io/service/iostor/impl/StIvtIostorinvServiceImpl.java +++ b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/stor_manage/io/service/iostor/impl/StIvtIostorinvServiceImpl.java @@ -1,6 +1,7 @@ package org.nl.wms.stor_manage.io.service.iostor.impl; import cn.hutool.core.date.DateUtil; +import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; @@ -33,6 +34,7 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.CollectionUtils; +import java.math.BigDecimal; import java.util.*; import java.util.stream.Collectors; @@ -66,39 +68,78 @@ public class StIvtIostorinvServiceImpl extends ServiceImpl().eq("code", sourceFormCode)); - JSONObject mstJ = (JSONObject) JSONObject.toJSON(mst); + PmFormData pmst = iPmFormDataService.getOne(new QueryWrapper().eq("code", sourceFormCode)); + sourceFormid = pmst.getId(); + JSONObject mstJ = (JSONObject) JSONObject.toJSON(pmst); mstJ.putAll((Map)mstJ.remove("form_data")); + mstJ.putAll(mst.getForm_data()); mstString = mstJ.toJSONString(); } List dtls = (List) form.remove("item"); - StIvtIostorinv mst = form.toJavaObject(StIvtIostorinv.class); mst.setId(IdUtil.getStringId()); - mst.setCreate_name(SecurityUtils.getCurrentNickName()); - mst.setCreate_time(DateUtil.now()); + mst.setCreate_name(nickName); + mst.setCreate_time(now); mst.setCode(CodeUtil.getNewCode("IO_CODE")); mst.setStatus(StatusEnum.FORM_STATUS.code("生成")); - if (dtls != null && dtls.size() > 0) { - for (int i = 0; i < dtls.size(); i++) { - JSONObject jsonDtl = new JSONObject(dtls.get(i)); - String sourceDtlFormCode = jsonDtl.getString("source_form_code"); - StIvtIostorinvdtl dtl = jsonDtl.toJavaObject(StIvtIostorinvdtl.class); - if (StringUtils.isNotEmpty(sourceDtlFormCode) && mstString!=null){ - JSONObject sourceFormData = JSONObject.parseObject(mstString); - PmFormData sourDtl = iPmFormDataService.getOne(new QueryWrapper() - .eq("code", sourceFormCode)); - JSONObject dtlJ = (JSONObject) JSONObject.toJSON(sourDtl); - dtlJ.putAll((Map) dtlJ.remove("form_data")); - sourceFormData.putAll(dtlJ); - dtl.setSource_form_data(sourceFormData); - } - dtl.setId(IdUtil.getStringId()); - dtl.setInv_id(mst.getId()); - dtl.setStatus(StatusEnum.FORM_STATUS.code("生成")); - iStIvtIostorinvDtlService.save(dtl); + if (dtls == null || dtls.size() == 0) { + throw new BadRequestException("出库明细不能为空"); + } + List> list = new ArrayList<>(); + for (int i = 0; i < dtls.size(); i++) { + JSONObject jsonDtl = new JSONObject(dtls.get(i)); + String sourceDtlFormId = jsonDtl.getString("source_form_id"); + StIvtIostorinvdtl dtl = jsonDtl.toJavaObject(StIvtIostorinvdtl.class); + if (StringUtils.isNotEmpty(sourceDtlFormId) && mstString!=null){ + JSONObject sourceFormData = JSONObject.parseObject(mstString); + PmFormData sourDtl = iPmFormDataService.getById(sourceDtlFormId); + String dtlStr = JSON.toJSONString(sourDtl); + JSONObject dtlJ = JSONObject.parseObject(dtlStr); + dtlJ.putAll((Map) dtlJ.remove("form_data")); + sourceFormData.putAll(dtlJ); + sourceFormData.put("pcsn",dtl.getPcsn()); + sourceFormData.put("now_assign_qty",dtl.getQty()); + dtl.setSource_form_data(sourceFormData); + list.add(MapOf.of("qty",sourDtl.getQty().subtract(dtl.getQty()) + ,"assign_qty",sourDtl.getAssign_qty().add(dtl.getQty()) + ,"id",sourceDtlFormId)); + } + dtl.setId(IdUtil.getStringId()); + dtl.setInv_id(mst.getId()); + dtl.setUpdate_time(now); + dtl.setUpdate_time(nickName); + dtl.setStatus(StatusEnum.FORM_STATUS.code("生成")); + iStIvtIostorinvDtlService.save(dtl); + } + for (Map map : list) { + iPmFormDataService.update(new UpdateWrapper() + .set("qty",map.get("qty")) + .set("assign_qty",map.get("assign_qty")) + .set("update_time",now) + .set("update_name",nickName) + .eq("id",map.get("id"))); + } + if (StringUtils.isNotEmpty(sourceFormid)){ + List byParentId = iPmFormDataService.getByParentId(sourceFormid); + long count = byParentId.stream().filter(pmFormData -> pmFormData.getQty().intValue() > 0).count(); + if (count == 0){ + iPmFormDataService.update(new UpdateWrapper() + .set("status",StatusEnum.FORM_STATUS.code("完成")) + .set("update_time",now) + .set("update_name",nickName) + .eq("id",sourceFormid)); + }else { + iPmFormDataService.update(new UpdateWrapper() + .set("status",StatusEnum.FORM_STATUS.code("执行中")) + .set("update_time",now) + .set("update_name",nickName) + .eq("id",sourceFormid)); } } this.save(mst); @@ -311,6 +352,8 @@ public class StIvtIostorinvServiceImpl extends ServiceImpl iostorinvdtls = iStIvtIostorinvDtlService.list(new QueryWrapper().eq("inv_id", id)); String collect = iostorinvdtls.stream().map(StIvtIostorinvdtl::getVehicle_id).collect(Collectors.joining(",")); @@ -319,6 +362,8 @@ public class StIvtIostorinvServiceImpl extends ServiceImpl() .set("frozen_qty", 0) + .set("update_time",now) + .set("update_name",nickName) .in("id", Arrays.asList(split))); //更新点位锁定 String vehicleCodes = iostorinvdtls.stream().map(StIvtIostorinvdtl::getVehicle_code).collect(Collectors.joining(",")); @@ -326,13 +371,39 @@ public class StIvtIostorinvServiceImpl extends ServiceImpl() .set("lock_type",StatusEnum.LOCK.code("无锁")) + .set("update_time",now) + .set("update_name",nickName) .in("vehicle_code", Arrays.asList(vehicleCodeSplit)) ); } - this.update(new UpdateWrapper() .set("status", StatusEnum.FORM_STATUS.code("取消")) + .set("update_time",now) + .set("update_name",nickName) .eq("id", id)); + /** + * 更新原单 + */ + String parentId = null; + for (StIvtIostorinvdtl dtl : iostorinvdtls) { + String formid = dtl.getSource_form_id(); + PmFormData pmFormData = iPmFormDataService.getById(formid); + parentId = pmFormData.getParent_id(); + iPmFormDataService.update(new UpdateWrapper() + .set("qty",pmFormData.getQty().add(dtl.getQty())) + .set("assign_qty",pmFormData.getAssign_qty().subtract(dtl.getQty())) + .set("update_time",now) + .set("update_name",nickName) + .set("remark","出库单取消") + .eq("id",formid)); + } + if (StringUtils.isNotEmpty(parentId)){ + iPmFormDataService.update(new UpdateWrapper() + .set("status",StatusEnum.FORM_STATUS.code("执行中")) + .set("update_time",now) + .set("update_name",nickName) + .eq("id",parentId)); + } return null; } } diff --git a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/stor_manage/struct/service/IStIvtStructattrService.java b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/stor_manage/struct/service/IStIvtStructattrService.java index ded70ae9..ec584ea2 100644 --- a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/stor_manage/struct/service/IStIvtStructattrService.java +++ b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/stor_manage/struct/service/IStIvtStructattrService.java @@ -4,6 +4,7 @@ import com.alibaba.fastjson.JSONObject; import org.nl.wms.stor_manage.struct.service.dao.StIvtStructattr; import org.nl.common.domain.entity.PageQuery; import com.baomidou.mybatisplus.extension.service.IService; +import org.nl.wms.stor_manage.struct.service.dao.StructAssignQty; import org.nl.wms.stor_manage.struct.service.dto.StructattrQuery; import org.nl.wms.stor_manage.struct.service.dto.StructattrVechielDto; @@ -52,4 +53,6 @@ public interface IStIvtStructattrService extends IService { List structVehicle(Map query); Object getStructIvt(StructattrQuery query, PageQuery page); + + List getStructIvtAssign(List materials, String stor_code); } diff --git a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/stor_manage/struct/service/dao/StructAssignQty.java b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/stor_manage/struct/service/dao/StructAssignQty.java new file mode 100644 index 00000000..42514156 --- /dev/null +++ b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/stor_manage/struct/service/dao/StructAssignQty.java @@ -0,0 +1,29 @@ +package org.nl.wms.stor_manage.struct.service.dao; + +import com.baomidou.mybatisplus.annotation.FieldStrategy; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serializable; +import java.math.BigDecimal; + +/** + *

+ * 仓位属性表 + *

+ * + * @author generator + * @since 2024-04-08 + */ +@Data +public class StructAssignQty { + private String struct_code; + private String stor_code; + private String material_id; + private String struct_codes; + private String vehicle_codes; + private String pcsn; + private BigDecimal sto_qty; +} diff --git a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/stor_manage/struct/service/dao/mapper/StIvtStructattrMapper.java b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/stor_manage/struct/service/dao/mapper/StIvtStructattrMapper.java index f0a77366..b3dfaa15 100644 --- a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/stor_manage/struct/service/dao/mapper/StIvtStructattrMapper.java +++ b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/stor_manage/struct/service/dao/mapper/StIvtStructattrMapper.java @@ -4,6 +4,7 @@ import org.nl.wms.stor_manage.struct.service.dao.StIvtStructattr; import org.apache.ibatis.annotations.Param; import org.nl.common.domain.entity.PageQuery; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.nl.wms.stor_manage.struct.service.dao.StructAssignQty; import org.nl.wms.stor_manage.struct.service.dto.StructattrQuery; import org.nl.wms.stor_manage.struct.service.dto.StructattrVechielDto; @@ -27,4 +28,6 @@ public interface StIvtStructattrMapper extends BaseMapper { List structVehicle(Map query); List getStructIvt(@Param("query")StructattrQuery query, PageQuery pageQuery); + + List getStructIvtAssign(@Param("materials")List materials, @Param("stor_code")String stor_code); } diff --git a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/stor_manage/struct/service/dao/mapper/xml/StIvtStructattrMapper.xml b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/stor_manage/struct/service/dao/mapper/xml/StIvtStructattrMapper.xml index 148f06a7..b6c7ab37 100644 --- a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/stor_manage/struct/service/dao/mapper/xml/StIvtStructattrMapper.xml +++ b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/stor_manage/struct/service/dao/mapper/xml/StIvtStructattrMapper.xml @@ -138,4 +138,29 @@ + diff --git a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/stor_manage/struct/service/dto/StructattrQuery.java b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/stor_manage/struct/service/dto/StructattrQuery.java index cb420cb2..2df472f4 100644 --- a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/stor_manage/struct/service/dto/StructattrQuery.java +++ b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/stor_manage/struct/service/dto/StructattrQuery.java @@ -22,6 +22,7 @@ public class StructattrQuery extends BaseQuery { private Boolean has_vehicle = Boolean.FALSE; private String material; private Boolean has; + private Boolean assign; @Override public void paramMapping() { super.doP.put("search", QParam.builder().k(new String[]{"struct_code"}).type(QueryTEnum.LK).build()); diff --git a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/stor_manage/struct/service/impl/StIvtStructattrServiceImpl.java b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/stor_manage/struct/service/impl/StIvtStructattrServiceImpl.java index 4415ba2c..02a3db3f 100644 --- a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/stor_manage/struct/service/impl/StIvtStructattrServiceImpl.java +++ b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/stor_manage/struct/service/impl/StIvtStructattrServiceImpl.java @@ -20,6 +20,7 @@ import org.nl.wms.md_manage.vehicleMater.service.dao.MdPbVehicleMater; import org.nl.wms.stor_manage.record.service.IStIvtStructivtflowService; import org.nl.wms.stor_manage.record.service.dao.StIvtStructivtflow; import org.nl.wms.stor_manage.struct.service.dao.StIvtStructattr; +import org.nl.wms.stor_manage.struct.service.dao.StructAssignQty; import org.nl.wms.stor_manage.struct.service.dao.mapper.StIvtStructattrMapper; import org.nl.wms.stor_manage.struct.service.IStIvtStructattrService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; @@ -53,6 +54,7 @@ public class StIvtStructattrServiceImpl extends ServiceImpl getStructIvtAssign(List materials, String stor_code) { + if (StringUtils.isEmpty(stor_code) || materials == null || materials.size() == 0){ + throw new BadRequestException("查询可用库存失败:物料或仓库未指定"); + } + List mst_detail = this.baseMapper.getStructIvtAssign(materials, stor_code); + return mst_detail; + } } 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 a5f4d7c5..441fb25a 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 @@ -4,6 +4,7 @@ import cn.hutool.core.date.DateUtil; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.kingdee.bos.webapi.entity.*; import com.kingdee.bos.webapi.sdk.K3CloudApi; import lombok.extern.slf4j.Slf4j; @@ -13,6 +14,8 @@ 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.base_manage.material.service.IMdMeMaterialbaseService; +import org.nl.wms.base_manage.material.service.dao.MdMeMaterialbase; import org.nl.wms.external_system.erp.dto.ErpQuery; import org.nl.wms.external_system.erp.dto.ErpSec; import org.nl.wms.pm_manage.form_data.service.IPmFormDataService; @@ -45,6 +48,8 @@ public class SyncErpBillsScheduleService { @Autowired private SyncFormMappingServiceImpl syncFormMappingServiceImpl; + @Autowired + private IMdMeMaterialbaseService iMdMeMaterialbaseService; @Autowired private IPmFormDataService formDataService; @@ -206,20 +211,24 @@ public class SyncErpBillsScheduleService { log.error("ERP单据同步失败:{}", error); } Set exitFormDataList = pmFormDataMapper.existFormDataList(); + 外部: for (Object r : result) { try { JSONArray mappingJsonArray = JSONArray.parseArray(mappingJson); List formDataList = formDataService.syncAnalyse(mappingJsonArray, formType, dtlSplit, JSON.toJSONString(r)); - for (PmFormData formData : formDataList) { - try { - //log.error(JSON.toJSONString(r)); - if (!exitFormDataList.contains(formData.getId())) { - formDataService.save(formData); - } - } catch (Exception e) { - log.error("保存数据 [{}] 时出现异常: {}", JSON.toJSONString(formData), e.getMessage()); + Set materials = formDataList.stream().map(PmFormData::getMaterial_id).collect(Collectors.toSet()); + int materialCount = iMdMeMaterialbaseService.count(new QueryWrapper().in("material_id", materials)); + if (materialCount!=materials.size()){ + log.error("保存数据 [{}] 时出现异常: {}", JSON.toJSONString(formDataList), "物料信息不存在"+materials.toString()); + } + for (String id : formDataList.stream().map(PmFormData::getId).collect(Collectors.toList())) { + if (exitFormDataList.contains(id)) { + continue 外部; } } + for (PmFormData formData : formDataList) { + formDataService.save(formData); + } } catch (Exception e) { log.error("解析数据 [{}] 时出现异常: {}", JSON.toJSONString(r), e.getMessage()); } @@ -233,6 +242,4 @@ public class SyncErpBillsScheduleService { } } } - - }