From bdd1aa57cc968ea8dc8ff4a40315ae91aa38dd4e Mon Sep 17 00:00:00 2001 From: zhangzhiqiang Date: Tue, 8 Aug 2023 10:23:52 +0800 Subject: [PATCH] =?UTF-8?q?add:=E7=BB=84=E7=9B=98=E5=AF=BC=E5=85=A5?= =?UTF-8?q?=E4=B8=B4=E6=97=B6=E6=96=B0=E5=A2=9E=E9=94=80=E5=94=AE=E8=AE=A2?= =?UTF-8?q?=E5=8D=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/MdPbBucketrecordServiceImpl.java | 70 ++++++++++++++++--- .../service/impl/PdaStCpInServiceImpl.java | 41 ++++++++--- .../src/main/resources/ 成品初始化.sql | 1 + 3 files changed, 93 insertions(+), 19 deletions(-) diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/masterdata_manage/service/vehicle/impl/MdPbBucketrecordServiceImpl.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/masterdata_manage/service/vehicle/impl/MdPbBucketrecordServiceImpl.java index 2bf35ddd..7345604f 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/masterdata_manage/service/vehicle/impl/MdPbBucketrecordServiceImpl.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/masterdata_manage/service/vehicle/impl/MdPbBucketrecordServiceImpl.java @@ -29,6 +29,8 @@ import org.nl.wms.masterdata_manage.service.vehicle.dao.MdPbStoragevehicleinfo; import org.nl.wms.masterdata_manage.service.vehicle.dao.mapper.MdPbBucketrecordMapper; import org.nl.wms.masterdata_manage.service.vehicle.IMdPbBucketrecordService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.nl.wms.mps_manage.saleorder.service.IMpsSaleOrderService; +import org.nl.wms.mps_manage.saleorder.service.dao.MpsSaleOrder; import org.nl.wms.product_manage.service.workorder.dao.PdmProduceWorkorder; import org.nl.wms.product_manage.service.workprocedure.dao.PdmBiWorkprocedure; import org.nl.wms.storage_manage.IOSEnum; @@ -60,13 +62,15 @@ import java.util.stream.Collectors; @Service public class MdPbBucketrecordServiceImpl extends ServiceImpl implements IMdPbBucketrecordService { - private static Map Excel_Item = MapOf.of(0,"storagevehicle_code",1,"sale_code",2,"contract_code",3,"material_code",4,"material_name",5,"material_spec",8,"storage_qty",9,"bucketunique"); + private static Map Excel_Item = MapOf.of(0,"storagevehicle_code",1,"sale_code",2,"contract_code",4,"material_code",5,"material_name",6,"material_spec",9,"storage_qty",10,"bucketunique"); @Autowired protected IMdPbStoragevehicleinfoService iMdPbStoragevehicleinfoService; // 载具服务 @Autowired private IMdMeMaterialbaseService materialbaseService; + @Autowired + private IMpsSaleOrderService saleOrderService; @Override public Object queryAll(Map whereJson, PageQuery pageQuery) { @@ -132,12 +136,12 @@ public class MdPbBucketrecordServiceImpl extends ServiceImpl materialmaps = data.stream().collect(HashMap::new, (k, v) -> k.put(v.getMaterial_code(), v.getMaterial_spec()+","+v.getMaterial_name()), HashMap::putAll); - Set collect = data.stream().map(MdPbBucketrecord::getMaterial_code).collect(Collectors.toSet()); - List materials = materialbaseService.list(new QueryWrapper().in("material_code", collect)); + Set materialCodes = data.stream().map(MdPbBucketrecord::getMaterial_code).collect(Collectors.toSet()); + List materials = materialbaseService.list(new QueryWrapper().in("material_code", materialCodes)); List list = new ArrayList<>(); - if (materials.size()!=collect.size()){ + if (materials.size()!=materialCodes.size()){ List collect1 = materials.stream().map(MdMeMaterialbase::getMaterial_code).collect(Collectors.toList()); - Set notIn = collect.stream().filter(a -> !collect1.contains(a)).collect(Collectors.toSet()); + Set notIn = materialCodes.stream().filter(a -> !collect1.contains(a)).collect(Collectors.toSet()); //新增物料信息 BigDecimal net_weight = new BigDecimal(45); for (String mcode : notIn) { @@ -146,7 +150,7 @@ public class MdPbBucketrecordServiceImpl extends ServiceImpl materialMap = materials.stream().collect(HashMap::new, (k, v) -> k.put(v.getMaterial_code(), v), HashMap::putAll); String now = DateUtil.now(); String pcsn = DateUtil.today(); + + List sales = saleOrderService.list(new QueryWrapper().in("sale_code", data.stream().map(MdPbBucketrecord::getSale_code).collect(Collectors.toSet()))); + HashMap max = new HashMap<>(); + for (MpsSaleOrder sale : sales) { + Integer integer = max.get(sale.getSale_code()); + if (integer==null){ + max.put(sale.getSale_code(),0); + }else { + max.put(sale.getSale_code(),Math.max(integer,sale.getSeq_no())); + } + } + + List arrayList = new ArrayList<>(); + Map hashMap = new HashMap<>(); for (MdPbBucketrecord datum : data) { datum.setBucket_record_id(IdUtil.getStringId()); String bucketunique = datum.getBucketunique(); @@ -176,6 +194,7 @@ public class MdPbBucketrecordServiceImpl extends ServiceImpl has = this.list(new QueryWrapper().in("storagevehicle_code", data.stream().map(MdPbBucketrecord::getStoragevehicle_code).collect(Collectors.toSet()))); + List has = this.list(new QueryWrapper() + .in("sale_code", data.stream().map(MdPbBucketrecord::getSale_code).collect(Collectors.toSet()))); if (!CollectionUtils.isEmpty(has)){ - throw new BadRequestException("托盘订单已存在:"+has.stream().map(MdPbBucketrecord::getStoragevehicle_code).collect(Collectors.joining(","))); + Set stos = data.stream().map(MdPbBucketrecord::getStoragevehicle_code).collect(Collectors.toSet()); + String collect = has.stream().filter(a -> stos.contains(a.getStoragevehicle_code())).map(MdPbBucketrecord::getStoragevehicle_code).collect(Collectors.joining(",")); + if (StringUtils.isNotEmpty(collect)){ + throw new BadRequestException("托盘订单已存在:"+collect); + } } + this.saveBatch(data); + saleOrderService.saveBatch(arrayList); + + //新增销售单: }catch (Exception ex){ throw new BadRequestException(ex.getMessage()); } diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/pda/service/impl/PdaStCpInServiceImpl.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/pda/service/impl/PdaStCpInServiceImpl.java index a502da77..f1676407 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/pda/service/impl/PdaStCpInServiceImpl.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/pda/service/impl/PdaStCpInServiceImpl.java @@ -268,12 +268,7 @@ public class PdaStCpInServiceImpl implements PdaStCpInService { .set("instor_optname", SecurityUtils.getCurrentNickName()) .set("instor_time", DateUtil.now()) .in("bucket_record_id", Arrays.asList(item.getString("bucket_record_id").split(",")))); - //跟新订单 - MpsSaleOrder orderDao = iMpsSaleOrderService.getOne(new QueryWrapper().eq("sale_code", rows.get(0).getSale_code())); - if (orderDao!=null){ - orderDao.setStatus(IOSEnum.ORDER_STATUS.code("提交")); - iMpsSaleOrderService.updateById(orderDao); - } + StIvtIostorinvCp stIvtIostorinvCp = new StIvtIostorinvCp(); 入库单主表: { stIvtIostorinvCp.setIostorinv_id(org.nl.common.utils.IdUtil.getStringId()); @@ -298,7 +293,7 @@ public class PdaStCpInServiceImpl implements PdaStCpInService { iStIvtIostorinvCpService.save(stIvtIostorinvCp); int seq_no = 0; List invdtl = new ArrayList<>(); - List invdisdtl = new ArrayList<>(); +// List invdisdtl = new ArrayList<>(); List invdis = new ArrayList<>(); //分配i for (MdPbBucketrecord row : rows) { @@ -307,11 +302,20 @@ public class PdaStCpInServiceImpl implements PdaStCpInService { StIvtIostorinvdtlCp iostorinvdtlCp = new StIvtIostorinvdtlCp(); // StIvtIostorinvdisdtlCp iostorinvdisdtlCp = new StIvtIostorinvdisdtlCp(); StIvtIostorinvdisCp iostorinvdisCp = new StIvtIostorinvdisCp(); + MpsSaleOrder orderDao = iMpsSaleOrderService.getOne(new QueryWrapper() + .eq("sale_code", row.getSale_code()) + .eq("material_code",row.getMaterial_code()).eq("seq_no",row.getSeq_no())); + if (orderDao==null){ + throw new BadRequestException("销售订单中不存在订单号"+row.getSale_code()+"物料:"+row.getMaterial_code()); + } + orderDao.setStatus(IOSEnum.ORDER_STATUS.code("提交")); + iMpsSaleOrderService.updateById(orderDao); 入库明细: { + //跟新订单 iostorinvdtlCp.setBase_bill_code(row.getSale_code()); iostorinvdtlCp.setBase_bill_table(String.valueOf(row.getSeq_no())); - iostorinvdtlCp.setBase_billdtl_id(orderDao == null ? "" : orderDao.getSale_id()); - iostorinvdtlCp.setBase_bill_type(orderDao == null ? "" : orderDao.getSale_type()); + iostorinvdtlCp.setBase_billdtl_id(orderDao.getSale_id()); + iostorinvdtlCp.setBase_bill_type(orderDao.getSale_type()); iostorinvdtlCp.setMaterial_id(row.getMaterial_id()); iostorinvdtlCp.setPlan_qty(new BigDecimal(row.getStorage_qty())); iostorinvdtlCp.setQty_unit_id(row.getQty_unit_id()); @@ -322,6 +326,7 @@ public class PdaStCpInServiceImpl implements PdaStCpInService { iostorinvdtlCp.setSeq_no(seq_no + 1); iostorinvdtlCp.setPcsn(pcsn); iostorinvdtlCp.setIs_active(true); + iostorinvdtlCp.setQuality_scode(IVTEnum.QUALITY_SCODE.code("合格品")); iostorinvdtlCp.setIvt_level(IVTEnum.IVT_LEVEL.code("一级")); iostorinvdtlCp.setBill_status(IOSEnum.BILL_STATUS.code("分配完")); iostorinvdtlCp.setReal_qty(iostorinvdtlCp.getPlan_qty()); @@ -404,8 +409,8 @@ public class PdaStCpInServiceImpl implements PdaStCpInService { stIvtStructattr.setInv_code(stIvtIostorinvCp.getBill_code()); structattrService.updateById(stIvtStructattr); // 4.更新库存 - for (StIvtIostorinvdisCp dtlDao : invdis) { - JSONObject param = ivtDataParam(dtlDao, ChangeIvtUtil.ADDWAREHOUSING_QTY, orderDao==null?"":orderDao.getSale_id()); + for (StIvtIostorinvdtlCp cp : invdtl) { + JSONObject param = ivtDataParam(cp, ChangeIvtUtil.ADDWAREHOUSING_QTY, cp.getBase_billdtl_id(),structattr.getStruct_id()); param.put("product_area", stIvtIostorinvCp.getProduct_area()); param.put("stor_id", stIvtIostorinvCp.getStor_id()); param.put("bill_code",stIvtIostorinvCp.getBill_code()); @@ -456,6 +461,20 @@ public class PdaStCpInServiceImpl implements PdaStCpInService { return ivtParam; } + public JSONObject ivtDataParam(StIvtIostorinvdtlCp disDao,String change_type,String sale_id,String struct_id) { + JSONObject ivtParam = new JSONObject(); + ivtParam.put("struct_id", struct_id); + ivtParam.put("material_id", disDao.getMaterial_id()); + ivtParam.put("pcsn", disDao.getPcsn()); + ivtParam.put("quality_scode", disDao.getQuality_scode()); + ivtParam.put("ivt_level", disDao.getIvt_level()); + ivtParam.put("change_qty", disDao.getReal_qty()); + ivtParam.put("change_type", change_type); + ivtParam.put("sale_id", sale_id); + + return ivtParam; + } + @NotNull private void updateDivIos(StIvtStructattr attrDao, JSONObject whereJson,StIvtIostorinvCp stIvtIostorinvCp) { /* 分配货位更新: diff --git a/mes/hd/nladmin-system/src/main/resources/ 成品初始化.sql b/mes/hd/nladmin-system/src/main/resources/ 成品初始化.sql index f0793cea..b52edd60 100644 --- a/mes/hd/nladmin-system/src/main/resources/ 成品初始化.sql +++ b/mes/hd/nladmin-system/src/main/resources/ 成品初始化.sql @@ -8,5 +8,6 @@ delete from st_ivt_iostorinvdis_cp; -- 出入库分配表 -- delete from st_ivt_iostorinvdisdtl_cp; -- 出入库分配明细表 -- delete from md_pb_bucketrecord; -- 箱记录表 -- delete from st_ivt_structivtflow_cp; -- 成品库存变动记录表 -- +delete from md_pb_bucketrecord; -- 组盘记录表-- -- 新增组盘记录表 -- INSERT INTO `hl_one_mes`.`sys_menu`(`menu_id`, `pid`, `sub_count`, `type`, `title`, `component_name`, `component`, `menu_sort`, `icon`, `path`, `iframe`, `cache`, `hidden`, `permission`, `create_name`, `update_name`, `create_time`, `update_time`, `is_pc`, `system_type`, `create_id`, `category`, `update_id`) VALUES ('1973892464420851712', '1654661137377136640', 0, 2, '组盘记录', NULL, 'wms/storage_manage/product/bucketRecord/index', 999, 'codeConsole', 'productBucketRecord', 0, b'0', b'0', NULL, NULL, NULL, NULL, NULL, 1, '1', 1, NULL, NULL);