From 7fed8d5192c4f25a223e334cd2834cf1474ebf88 Mon Sep 17 00:00:00 2001 From: gengby <858962040@qq.com> Date: Thu, 17 Apr 2025 15:30:56 +0800 Subject: [PATCH] =?UTF-8?q?add=EF=BC=9A=E6=96=B0=E5=A2=9E=E9=9C=80?= =?UTF-8?q?=E6=B1=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../eas/service/IeasOutInBillService.java | 2 +- .../impl/EasOutInBillDetailServiceImpl.java | 179 ++++++++- .../service/impl/EasOutInBillServiceImpl.java | 28 +- .../service/impl/ReceiptBillServiceImpl.java | 364 +++++------------- .../impl/StIvtStockAssignDtlServiceImpl.java | 88 +++++ .../service/dao/VWmsRkinfobydhinfoThird.java | 24 ++ .../service/dao/mapper/SrmDataSyncMapper.java | 11 + .../service/impl/EasDataSyncServiceImpl.java | 2 + .../service/impl/SrmDataSyncServiceImpl.java | 129 ++++--- 9 files changed, 515 insertions(+), 312 deletions(-) create mode 100644 wms/nlsso-server/src/main/java/org/nl/wms/schedule/service/dao/VWmsRkinfobydhinfoThird.java diff --git a/wms/nlsso-server/src/main/java/org/nl/wms/database/eas/service/IeasOutInBillService.java b/wms/nlsso-server/src/main/java/org/nl/wms/database/eas/service/IeasOutInBillService.java index 0fc3eb5..9d13b3c 100644 --- a/wms/nlsso-server/src/main/java/org/nl/wms/database/eas/service/IeasOutInBillService.java +++ b/wms/nlsso-server/src/main/java/org/nl/wms/database/eas/service/IeasOutInBillService.java @@ -107,7 +107,7 @@ public interface IeasOutInBillService extends IService { * * @param djbhList / */ - void audit(List djbhList); + void audit(List djbhList,boolean flag); /** diff --git a/wms/nlsso-server/src/main/java/org/nl/wms/database/eas/service/impl/EasOutInBillDetailServiceImpl.java b/wms/nlsso-server/src/main/java/org/nl/wms/database/eas/service/impl/EasOutInBillDetailServiceImpl.java index 78cfd14..cbd7be1 100644 --- a/wms/nlsso-server/src/main/java/org/nl/wms/database/eas/service/impl/EasOutInBillDetailServiceImpl.java +++ b/wms/nlsso-server/src/main/java/org/nl/wms/database/eas/service/impl/EasOutInBillDetailServiceImpl.java @@ -23,6 +23,9 @@ import org.nl.wms.database.eas.dto.ReceiptBillDetailVO; import org.nl.wms.database.eas.service.*; import org.nl.wms.ivt.service.*; import org.nl.wms.ivt.service.dao.*; +import org.nl.wms.ivt.service.dao.mapper.StIvtStockAssignDtlMapper; +import org.nl.wms.schedule.service.dao.VWmsRkinfobydhinfoThird; +import org.nl.wms.schedule.service.dao.mapper.SrmDataSyncMapper; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; @@ -60,6 +63,10 @@ public class EasOutInBillDetailServiceImpl extends ServiceImpl() + .eq(StIvtStockAssignDtl::getDetail_id, shdhbid) + .eq(StIvtStockAssignDtl::getStatus, false)); + if (CollectionUtils.isNotEmpty(list)){ + //查询该单据已经分配了多少数量 + BigDecimal totalAmount = list.stream() + .map(StIvtStockAssignDtl::getAssign_qty) + .filter(Objects::nonNull) + .reduce(BigDecimal.ZERO, BigDecimal::add); + // + if (easOutInBillDetailVO.getSl().compareTo(totalAmount) < 0){ + BigDecimal subtract = totalAmount.subtract(easOutInBillDetailVO.getSl()); + for (StIvtStockAssignDtl stIvtStockAssignDtl : list) { + BigDecimal assignQty = stIvtStockAssignDtl.getAssign_qty(); + if (assignQty.compareTo(subtract) <= 0) { + // 当前明细的数量小于等于需要减的,直接清零 + subtract = subtract.subtract(assignQty); + stIvtStockAssignDtl.setAssign_qty(BigDecimal.ZERO); + stockAssignDtlMapper.deleteById(stIvtStockAssignDtl.getId()); + } else { + // 当前明细够减,部分减少后退出 + stIvtStockAssignDtl.setAssign_qty(assignQty.subtract(subtract)); + stockAssignDtlMapper.updateById(stIvtStockAssignDtl); + break; + } + } + } + + Map>> storMap = list.stream() + .collect(Collectors.groupingBy( + StIvtStockAssignDtl::getStor_code, + Collectors.groupingBy( + StIvtStockAssignDtl::getStruct_code, + Collectors.groupingBy( + StIvtStockAssignDtl::getDetail_id, + Collectors.reducing(BigDecimal.ZERO, StIvtStockAssignDtl::getAssign_qty, BigDecimal::add) + ) + ) + )); + + if (ObjectUtil.isNotEmpty(storMap)) { + Map> structMap = storMap.get(easOutInBillDetailVO.getCkbm()); + if (ObjectUtil.isNotEmpty(structMap)) { + structMap.forEach((structCode, detailMap) -> { + //获取仓位信息 + StIvtStructattr structOne = structattrService.getOne(new LambdaQueryWrapper() + .eq(StIvtStructattr::getStruct_code, structCode) + .eq(StIvtStructattr::getStor_code, easOutInBillDetailVO.getCkbm())); + if (ObjectUtil.isNotEmpty(structOne)) { + //判断仓位是否已经有货 + if (StrUtil.isEmpty(structOne.getVehicle_code())) { + //无货直接新增库存明细 + //使用仓库编码 + "." + "库位编码"作为载具号 + String vehicle_code = structOne.getStor_code() + "." + structCode.replace("-", "").trim(); + detailMap.forEach( + (detail_id, qty) -> { + //新增库存明细 + StIvtStockDtl stockDtl = new StIvtStockDtl(); + stockDtl.setId(IdUtil.getLongId().toString()); + stockDtl.setVehicle_code(vehicle_code); + stockDtl.setMaterial_code(easOutInBillDetailVO.getWlbm()); + stockDtl.setMaterial_name(easOutInBillDetailVO.getWlmc()); + stockDtl.setQty(qty); + stockDtl.setStorage_time(DateUtil.today()); + stockDtl.setUnit(easOutInBillDetailVO.getJldw()); + stockDtl.setBill_code(easOutInBillDetailVO.getDjbh()); + stockDtl.setDetail_id(detail_id); + stockDtl.setTrack_no(easOutInBillDetailVO.getGzhbm()); + stockDtl.setUpdate_id(SecurityUtils.getCurrentUserId()); + stockDtl.setUpdate_name(SecurityUtils.getCurrentNickName()); + stockDtl.setUpdate_time(DateUtil.now()); + stockDtlService.save(stockDtl); + } + ); + //修改库位载具编码 + structOne.setVehicle_code(vehicle_code); + structOne.setUpdate_id(SecurityUtils.getCurrentUserId()); + structOne.setUpdate_name(SecurityUtils.getCurrentNickName()); + structOne.setUpdate_time(DateUtil.now()); + structattrService.updateById(structOne); + } else { + //有货 则修改库存明细相关信息 + detailMap.forEach( + (detail_id, qty) -> { + //修改库存明细 + StIvtStockDtl dtlOne = stockDtlService.getOne(new LambdaQueryWrapper() + .eq(StIvtStockDtl::getVehicle_code, structOne.getVehicle_code()) + .eq(StIvtStockDtl::getDetail_id, detail_id)); + //存在该单据明细的库存明细则修改数量 + if (ObjectUtil.isNotEmpty(dtlOne)) { + dtlOne.setQty(dtlOne.getQty().add(qty)); + dtlOne.setUpdate_id(SecurityUtils.getCurrentUserId()); + dtlOne.setUpdate_name(SecurityUtils.getCurrentNickName()); + dtlOne.setUpdate_time(DateUtil.now()); + stockDtlService.updateById(dtlOne); + } else { + if (qty.compareTo(BigDecimal.ZERO) > 0) { + //不存在该单据明细的库存明细则新增库存明细 + StIvtStockDtl stockDtl = new StIvtStockDtl(); + stockDtl.setId(IdUtil.getLongId().toString()); + stockDtl.setVehicle_code(structOne.getVehicle_code()); + stockDtl.setMaterial_code(easOutInBillDetailVO.getWlbm()); + stockDtl.setMaterial_name(easOutInBillDetailVO.getWlmc()); + stockDtl.setStorage_time(DateUtil.today()); + stockDtl.setQty(qty); + stockDtl.setUnit(easOutInBillDetailVO.getJldw()); + stockDtl.setBill_code(easOutInBillDetailVO.getDjbh()); + stockDtl.setDetail_id(detail_id); + stockDtl.setTrack_no(easOutInBillDetailVO.getGzhbm()); + stockDtl.setUpdate_id(SecurityUtils.getCurrentUserId()); + stockDtl.setUpdate_name(SecurityUtils.getCurrentNickName()); + stockDtl.setUpdate_time(DateUtil.now()); + stockDtlService.save(stockDtl); + } else if (qty.compareTo(BigDecimal.ZERO) < 0) { + //写个sql去查询该明细下对应的仓库的物料的库存明细信息 + List> smsList = stockDtlService.getListBySMS(structCode, easOutInBillDetailVO.getWlbm(), easOutInBillDetailVO.getCkbm()); + //临时变量 + BigDecimal tempQty = qty; + for (Map sms : smsList) { + if (tempQty.compareTo(BigDecimal.ZERO) >= 0) { + break; + } + String id = sms.get("id") != null ? sms.get("id").toString() : ""; + //库位库存数量 + BigDecimal kcQty = sms.get("qty") != null ? new BigDecimal(sms.get("qty").toString()) : BigDecimal.ZERO; + BigDecimal minQty = kcQty.min(tempQty.abs()); + //修改库存明细中的库存数量 + StIvtStockDtl stockDtl = stockDtlService.getOne(new LambdaQueryWrapper() + .eq(StIvtStockDtl::getId, id)); + if (ObjectUtil.isNotEmpty(stockDtl)) { + BigDecimal sysl = stockDtl.getQty().subtract(minQty); + if (sysl.compareTo(BigDecimal.ZERO) == 0) { + stockDtlService.removeById(stockDtl); + } else { + stockDtl.setQty(sysl); + stockDtl.setUpdate_id(SecurityUtils.getCurrentUserId()); + stockDtl.setUpdate_name(SecurityUtils.getCurrentNickName()); + stockDtl.setUpdate_time(DateUtil.now()); + stockDtlService.updateById(stockDtl); + } + tempQty = tempQty.subtract(minQty.negate()); + } + List newDtls = stockDtlService.list(new LambdaQueryWrapper() + .eq(StIvtStockDtl::getVehicle_code, (String) sms.get("vehicle_code"))); + if (CollectionUtils.isEmpty(newDtls)) { + structOne.setVehicle_code(""); + structOne.setUpdate_id(SecurityUtils.getCurrentUserId()); + structOne.setUpdate_name(SecurityUtils.getCurrentNickName()); + structOne.setUpdate_time(DateUtil.now()); + structattrService.update(structOne); + } + } + } + } + } + ); + } + } + }); + } + } + updateAssignStatus(list); + } + } } } ); @@ -865,7 +1042,7 @@ public class EasOutInBillDetailServiceImpl extends ServiceImpl djbhList) { + public void audit(List djbhList, boolean flag) { final List easBills = new ArrayList<>(); final List srmBills = new ArrayList<>(); djbhList.forEach( @@ -616,7 +616,7 @@ public class EasOutInBillServiceImpl extends ServiceImpl entrys = new ArrayList<>(); @@ -718,7 +718,7 @@ public class EasOutInBillServiceImpl extends ServiceImpl bills = this.list(new LambdaQueryWrapper() .in(EasOutInBill::getDjid, ids)); - auditMethod(bills); + auditMethod(bills,true); } } } @@ -741,19 +741,19 @@ public class EasOutInBillServiceImpl extends ServiceImpl bills = this.list(new LambdaQueryWrapper() .in(EasOutInBill::getDjid, ids)); - auditMethod(bills); + auditMethod(bills,false); } } } - private void auditMethod(List bills) { + private void auditMethod(List bills,boolean flag) { if (CollectionUtils.isNotEmpty(bills)) { List djbhList = bills.stream() .map(EasOutInBill::getDjbh) .distinct() .collect(Collectors.toList()); - audit(djbhList); + audit(djbhList,flag); } } @@ -839,37 +839,53 @@ public class EasOutInBillServiceImpl extends ServiceImpl allocationBillList = allocationBillMapper.selectList(new LambdaQueryWrapper().in(AllocationBill::getDjid, djids)); for (AllocationBill allocationBill : allocationBillList) { + if (StrUtil.isEmpty(allocationBill.getShjg())){ + continue; + } allocationBill.setDjzt("审核"); allocationBill.setUpdate_id(currentUserId); allocationBill.setUpdate_name(currentNickName); allocationBill.setUpdate_time(now); + allocationBill.setBtbz("手动删除," + allocationBill.getShjg()); allocationBillMapper.updateById(allocationBill); } } else if (StrUtil.equals(type, "RECE")) { List receiptBillList = receiptBillMapper.selectList(new LambdaQueryWrapper().in(ReceiptBill::getDjid, djids)); for (ReceiptBill receiptBill : receiptBillList) { + if (StrUtil.isEmpty(receiptBill.getShjg())){ + continue; + } receiptBill.setDjzt("2"); receiptBill.setUpdate_id(currentUserId); receiptBill.setUpdate_name(currentNickName); receiptBill.setUpdate_time(now); + receiptBill.setBtbz("手动删除," + receiptBill.getShjg()); receiptBillMapper.updateById(receiptBill); } } else if (StrUtil.equals(type, "SRMINOUT")) { List easOutInBills = easOutInBillMapper.selectList(new LambdaQueryWrapper().in(EasOutInBill::getDjid, djids)); for (EasOutInBill easOutInBill : easOutInBills) { + if (StrUtil.isEmpty(easOutInBill.getShjg())){ + continue; + } easOutInBill.setDjzt("审核"); easOutInBill.setUpdate_id(currentUserId); easOutInBill.setUpdate_name(currentNickName); easOutInBill.setUpdate_time(now); + easOutInBill.setBtbz("手动删除," + easOutInBill.getShjg()); easOutInBillMapper.updateById(easOutInBill); } } else if (StrUtil.equals(type, "EASINOUT")) { List easOutInBills = easOutInBillMapper.selectList(new LambdaQueryWrapper().in(EasOutInBill::getDjid, djids)); for (EasOutInBill easOutInBill : easOutInBills) { + if (StrUtil.isEmpty(easOutInBill.getShjg())){ + continue; + } easOutInBill.setDjzt("审核"); easOutInBill.setUpdate_id(currentUserId); easOutInBill.setUpdate_name(currentNickName); easOutInBill.setUpdate_time(now); + easOutInBill.setBtbz("手动删除," + easOutInBill.getShjg()); easOutInBillMapper.updateById(easOutInBill); } } diff --git a/wms/nlsso-server/src/main/java/org/nl/wms/database/eas/service/impl/ReceiptBillServiceImpl.java b/wms/nlsso-server/src/main/java/org/nl/wms/database/eas/service/impl/ReceiptBillServiceImpl.java index e838382..47f24de 100644 --- a/wms/nlsso-server/src/main/java/org/nl/wms/database/eas/service/impl/ReceiptBillServiceImpl.java +++ b/wms/nlsso-server/src/main/java/org/nl/wms/database/eas/service/impl/ReceiptBillServiceImpl.java @@ -160,118 +160,114 @@ public class ReceiptBillServiceImpl extends ServiceImpl receiptBillDetailVOS, boolean flag) { if (CollectionUtils.isNotEmpty(receiptBillDetailVOS)) { - receiptBillDetailVOS.stream() - .forEach( - receiptBillDetailVO -> { - //查询已分配未提交库存的分配记录 - List list = stockAssignDtlService.list(new LambdaQueryWrapper() - .eq(StIvtStockAssignDtl::getDetail_id, receiptBillDetailVO.getFlid()) - .eq(StIvtStockAssignDtl::getStatus, false)); - if (CollectionUtils.isNotEmpty(list)) { - Map>> storMap = list.stream() - .collect(Collectors.groupingBy( - StIvtStockAssignDtl::getStor_code, - Collectors.groupingBy( - StIvtStockAssignDtl::getStruct_code, - Collectors.groupingBy( - StIvtStockAssignDtl::getDetail_id, - Collectors.reducing(BigDecimal.ZERO, StIvtStockAssignDtl::getAssign_qty, BigDecimal::add) - ) - ) - )); - - if (ObjectUtil.isNotEmpty(storMap)) { - Map> structMap = storMap.get(receiptBillDetailVO.getCkbm()); - if (ObjectUtil.isNotEmpty(structMap)) { - structMap.forEach((structCode, detailMap) -> { - //获取仓位信息 - StIvtStructattr structOne = structattrService.getOne(new LambdaQueryWrapper() - .eq(StIvtStructattr::getStruct_code, structCode) - .eq(StIvtStructattr::getStor_code, receiptBillDetailVO.getCkbm())); - if (ObjectUtil.isNotEmpty(structOne)) { - //判断仓位是否已经有货 - if (StrUtil.isEmpty(structOne.getVehicle_code())) { - //无货直接新增库存明细 - //使用仓库编码 + "." + "库位编码"作为载具号 - String vehicle_code = structOne.getStor_code() + "." + structCode.replace("-", "").trim(); - detailMap.forEach( - (detail_id, qty) -> { - //新增库存明细 - StIvtStockDtl stockDtl = new StIvtStockDtl(); - stockDtl.setId(IdUtil.getLongId().toString()); - stockDtl.setVehicle_code(vehicle_code); - stockDtl.setMaterial_code(receiptBillDetailVO.getWlbm()); - stockDtl.setMaterial_name(receiptBillDetailVO.getWlmc()); - stockDtl.setQty(qty); - stockDtl.setStorage_time(DateUtil.today()); - stockDtl.setUnit(receiptBillDetailVO.getJldw()); - stockDtl.setBill_code(receiptBillDetailVO.getDjbh()); - stockDtl.setDetail_id(detail_id); - stockDtl.setUpdate_id(SecurityUtils.getCurrentUserId()); - stockDtl.setUpdate_name(SecurityUtils.getCurrentNickName()); - stockDtl.setUpdate_time(DateUtil.now()); - stockDtlService.save(stockDtl); - } - ); - //修改库位载具编码 - structOne.setVehicle_code(vehicle_code); - structOne.setUpdate_id(SecurityUtils.getCurrentUserId()); - structOne.setUpdate_name(SecurityUtils.getCurrentNickName()); - structOne.setUpdate_time(DateUtil.now()); - structattrService.updateById(structOne); - } else { - //有货 则修改库存明细相关信息 - detailMap.forEach( - (detail_id, qty) -> { - //修改库存明细 - StIvtStockDtl dtlOne = stockDtlService.getOne(new LambdaQueryWrapper() - .eq(StIvtStockDtl::getVehicle_code, structOne.getVehicle_code()) - .eq(StIvtStockDtl::getDetail_id, detail_id)); - //存在该单据明细的库存明细则修改数量 - if (ObjectUtil.isNotEmpty(dtlOne)) { - dtlOne.setQty(dtlOne.getQty().add(qty)); - dtlOne.setUpdate_id(SecurityUtils.getCurrentUserId()); - dtlOne.setUpdate_name(SecurityUtils.getCurrentNickName()); - dtlOne.setUpdate_time(DateUtil.now()); - stockDtlService.updateById(dtlOne); - - //TODO 新增库存变动记录信息 - - } else { - if (qty.compareTo(BigDecimal.ZERO) > 0) { - //不存在该单据明细的库存明细则新增库存明细 - StIvtStockDtl stockDtl = new StIvtStockDtl(); - stockDtl.setId(IdUtil.getLongId().toString()); - stockDtl.setVehicle_code(structOne.getVehicle_code()); - stockDtl.setMaterial_code(receiptBillDetailVO.getWlbm()); - stockDtl.setMaterial_name(receiptBillDetailVO.getWlmc()); - stockDtl.setStorage_time(DateUtil.today()); - stockDtl.setQty(qty); - stockDtl.setUnit(receiptBillDetailVO.getJldw()); - stockDtl.setBill_code(receiptBillDetailVO.getDjbh()); - stockDtl.setDetail_id(detail_id); - stockDtl.setUpdate_id(SecurityUtils.getCurrentUserId()); - stockDtl.setUpdate_name(SecurityUtils.getCurrentNickName()); - stockDtl.setUpdate_time(DateUtil.now()); - stockDtlService.save(stockDtl); - } - } - } - ); - } - } - }); - } - } - updateAssignStatus(list); - } - } - ); +// receiptBillDetailVOS.stream() +// .forEach( +// receiptBillDetailVO -> { +// //查询已分配未提交库存的分配记录 +// List list = stockAssignDtlService.list(new LambdaQueryWrapper() +// .eq(StIvtStockAssignDtl::getDetail_id, receiptBillDetailVO.getFlid()) +// .eq(StIvtStockAssignDtl::getStatus, false)); +// if (CollectionUtils.isNotEmpty(list)) { +// Map>> storMap = list.stream() +// .collect(Collectors.groupingBy( +// StIvtStockAssignDtl::getStor_code, +// Collectors.groupingBy( +// StIvtStockAssignDtl::getStruct_code, +// Collectors.groupingBy( +// StIvtStockAssignDtl::getDetail_id, +// Collectors.reducing(BigDecimal.ZERO, StIvtStockAssignDtl::getAssign_qty, BigDecimal::add) +// ) +// ) +// )); + +// if (ObjectUtil.isNotEmpty(storMap)) { +// Map> structMap = storMap.get(receiptBillDetailVO.getCkbm()); +// if (ObjectUtil.isNotEmpty(structMap)) { +// structMap.forEach((structCode, detailMap) -> { +// //获取仓位信息 +// StIvtStructattr structOne = structattrService.getOne(new LambdaQueryWrapper() +// .eq(StIvtStructattr::getStruct_code, structCode) +// .eq(StIvtStructattr::getStor_code, receiptBillDetailVO.getCkbm())); +// if (ObjectUtil.isNotEmpty(structOne)) { +// //判断仓位是否已经有货 +// if (StrUtil.isEmpty(structOne.getVehicle_code())) { +// //无货直接新增库存明细 +// //使用仓库编码 + "." + "库位编码"作为载具号 +// String vehicle_code = structOne.getStor_code() + "." + structCode.replace("-", "").trim(); +// detailMap.forEach( +// (detail_id, qty) -> { +// //新增库存明细 +// StIvtStockDtl stockDtl = new StIvtStockDtl(); +// stockDtl.setId(IdUtil.getLongId().toString()); +// stockDtl.setVehicle_code(vehicle_code); +// stockDtl.setMaterial_code(receiptBillDetailVO.getWlbm()); +// stockDtl.setMaterial_name(receiptBillDetailVO.getWlmc()); +// stockDtl.setQty(qty); +// stockDtl.setStorage_time(DateUtil.today()); +// stockDtl.setUnit(receiptBillDetailVO.getJldw()); +// stockDtl.setBill_code(receiptBillDetailVO.getDjbh()); +// stockDtl.setDetail_id(detail_id); +// stockDtl.setUpdate_id(SecurityUtils.getCurrentUserId()); +// stockDtl.setUpdate_name(SecurityUtils.getCurrentNickName()); +// stockDtl.setUpdate_time(DateUtil.now()); +// stockDtlService.save(stockDtl); +// } +// ); +// //修改库位载具编码 +// structOne.setVehicle_code(vehicle_code); +// structOne.setUpdate_id(SecurityUtils.getCurrentUserId()); +// structOne.setUpdate_name(SecurityUtils.getCurrentNickName()); +// structOne.setUpdate_time(DateUtil.now()); +// structattrService.updateById(structOne); +// } else { +// //有货 则修改库存明细相关信息 +// detailMap.forEach( +// (detail_id, qty) -> { +// //修改库存明细 +// StIvtStockDtl dtlOne = stockDtlService.getOne(new LambdaQueryWrapper() +// .eq(StIvtStockDtl::getVehicle_code, structOne.getVehicle_code()) +// .eq(StIvtStockDtl::getDetail_id, detail_id)); +// //存在该单据明细的库存明细则修改数量 +// if (ObjectUtil.isNotEmpty(dtlOne)) { +// dtlOne.setQty(dtlOne.getQty().add(qty)); +// dtlOne.setUpdate_id(SecurityUtils.getCurrentUserId()); +// dtlOne.setUpdate_name(SecurityUtils.getCurrentNickName()); +// dtlOne.setUpdate_time(DateUtil.now()); +// stockDtlService.updateById(dtlOne); +// } else { +// if (qty.compareTo(BigDecimal.ZERO) > 0) { +// //不存在该单据明细的库存明细则新增库存明细 +// StIvtStockDtl stockDtl = new StIvtStockDtl(); +// stockDtl.setId(IdUtil.getLongId().toString()); +// stockDtl.setVehicle_code(structOne.getVehicle_code()); +// stockDtl.setMaterial_code(receiptBillDetailVO.getWlbm()); +// stockDtl.setMaterial_name(receiptBillDetailVO.getWlmc()); +// stockDtl.setStorage_time(DateUtil.today()); +// stockDtl.setQty(qty); +// stockDtl.setUnit(receiptBillDetailVO.getJldw()); +// stockDtl.setBill_code(receiptBillDetailVO.getDjbh()); +// stockDtl.setDetail_id(detail_id); +// stockDtl.setUpdate_id(SecurityUtils.getCurrentUserId()); +// stockDtl.setUpdate_name(SecurityUtils.getCurrentNickName()); +// stockDtl.setUpdate_time(DateUtil.now()); +// stockDtlService.save(stockDtl); +// } +// } +// } +// ); +// } +// } +// }); +// } +// } +// updateAssignStatus(list); +// } +// } +// ); updateDetailSl(receiptBillDetailVOS); - if (flag) { Set djids = receiptBillDetailVOS.stream().map(ReceiptBillDetailVO::getDjid).collect(Collectors.toSet()); djids.forEach( @@ -346,158 +342,6 @@ public class ReceiptBillServiceImpl extends ServiceImpl> groupedByDjid = params.stream() .collect(Collectors.groupingBy(ReceiptBillDetailVO::getDjid)); - //遍历 从数据库中查询明细数量 - params.forEach( - receiptBillDetailVO -> { - //查询已分配未提交库存的分配记录 - List list = stockAssignDtlService.list(new LambdaQueryWrapper() - .eq(StIvtStockAssignDtl::getDetail_id, receiptBillDetailVO.getFlid()) - .eq(StIvtStockAssignDtl::getStatus, false)); - if (CollectionUtils.isNotEmpty(list)) { - Map>> storMap = list.stream() - .collect(Collectors.groupingBy( - StIvtStockAssignDtl::getStor_code, - Collectors.groupingBy( - StIvtStockAssignDtl::getStruct_code, - Collectors.groupingBy( - StIvtStockAssignDtl::getDetail_id, - Collectors.reducing(BigDecimal.ZERO, StIvtStockAssignDtl::getAssign_qty, BigDecimal::add) - ) - ) - )); - - if (ObjectUtil.isNotEmpty(storMap)) { - Map> structMap = storMap.get(receiptBillDetailVO.getCkbm()); - if (ObjectUtil.isNotEmpty(structMap)) { - structMap.forEach((structCode, detailMap) -> { - //获取仓位信息 - StIvtStructattr structOne = structattrService.getOne(new LambdaQueryWrapper() - .eq(StIvtStructattr::getStruct_code, structCode) - .eq(StIvtStructattr::getStor_code, receiptBillDetailVO.getCkbm())); - if (ObjectUtil.isNotEmpty(structOne)) { - //判断仓位是否已经有货 - if (StrUtil.isEmpty(structOne.getVehicle_code())) { - //无货直接新增库存明细 - //使用仓库编码 + "." + "库位编码"作为载具号 - String vehicle_code = structOne.getStor_code() + "." + structCode.replace("-", "").trim(); - detailMap.forEach( - (detail_id, qty) -> { - //新增库存明细 - StIvtStockDtl stockDtl = new StIvtStockDtl(); - stockDtl.setId(IdUtil.getLongId().toString()); - stockDtl.setVehicle_code(vehicle_code); - stockDtl.setMaterial_code(receiptBillDetailVO.getWlbm()); - stockDtl.setMaterial_name(receiptBillDetailVO.getWlmc()); - stockDtl.setPcsn(DateUtil.today()); - stockDtl.setQty(qty); - stockDtl.setStorage_time(DateUtil.today()); - stockDtl.setUnit(receiptBillDetailVO.getJldw()); - stockDtl.setBill_code(receiptBillDetailVO.getDjbh()); - stockDtl.setDetail_id(detail_id); - stockDtl.setUpdate_id(SecurityUtils.getCurrentUserId()); - stockDtl.setUpdate_name(SecurityUtils.getCurrentNickName()); - stockDtl.setUpdate_time(DateUtil.now()); - stockDtlService.save(stockDtl); - - //TODO 新增库存变动记录信息 - - } - ); - //修改库位载具编码 - structOne.setVehicle_code(vehicle_code); - structOne.setUpdate_id(SecurityUtils.getCurrentUserId()); - structOne.setUpdate_name(SecurityUtils.getCurrentNickName()); - structOne.setUpdate_time(DateUtil.now()); - structattrService.updateById(structOne); - } else { - //有货 则修改库存明细相关信息 - detailMap.forEach( - (detail_id, qty) -> { - //修改库存明细 - StIvtStockDtl dtlOne = stockDtlService.getOne(new LambdaQueryWrapper() - .eq(StIvtStockDtl::getVehicle_code, structOne.getVehicle_code()) - .eq(StIvtStockDtl::getDetail_id, detail_id)); - //存在该单据明细的库存明细则修改数量 - if (ObjectUtil.isNotEmpty(dtlOne)) { - dtlOne.setQty(dtlOne.getQty().add(qty)); - dtlOne.setUpdate_id(SecurityUtils.getCurrentUserId()); - dtlOne.setUpdate_name(SecurityUtils.getCurrentNickName()); - dtlOne.setUpdate_time(DateUtil.now()); - stockDtlService.updateById(dtlOne); - } else { - if (qty.compareTo(BigDecimal.ZERO) > 0) { - //不存在该单据明细的库存明细则新增库存明细 - StIvtStockDtl stockDtl = new StIvtStockDtl(); - stockDtl.setId(IdUtil.getLongId().toString()); - stockDtl.setVehicle_code(structOne.getVehicle_code()); - stockDtl.setMaterial_code(receiptBillDetailVO.getWlbm()); - stockDtl.setMaterial_name(receiptBillDetailVO.getWlmc()); - stockDtl.setStorage_time(DateUtil.today()); - stockDtl.setPcsn(DateUtil.today()); - stockDtl.setQty(qty); - stockDtl.setUnit(receiptBillDetailVO.getJldw()); - stockDtl.setBill_code(receiptBillDetailVO.getDjbh()); - stockDtl.setDetail_id(detail_id); - stockDtl.setUpdate_id(SecurityUtils.getCurrentUserId()); - stockDtl.setUpdate_name(SecurityUtils.getCurrentNickName()); - stockDtl.setUpdate_time(DateUtil.now()); - stockDtlService.save(stockDtl); - //TODO 新增库存变动记录信息 - - } else if (qty.compareTo(BigDecimal.ZERO) < 0) { - //写个sql去查询该明细下对应的仓库的物料的库存明细信息 - List> smsList = stockDtlService.getListBySMS(structCode, receiptBillDetailVO.getWlbm(), receiptBillDetailVO.getCkbm()); - //临时变量 - BigDecimal tempQty = qty; - for (Map sms : smsList) { - if (tempQty.compareTo(BigDecimal.ZERO) >= 0) { - break; - } - String id = sms.get("id") != null ? sms.get("id").toString() : ""; - //库位库存数量 - BigDecimal kcQty = sms.get("qty") != null ? new BigDecimal(sms.get("qty").toString()) : BigDecimal.ZERO; - BigDecimal minQty = kcQty.min(tempQty.abs()); - //修改库存明细中的库存数量 - StIvtStockDtl stockDtl = stockDtlService.getOne(new LambdaQueryWrapper() - .eq(StIvtStockDtl::getId, id)); - if (ObjectUtil.isNotEmpty(stockDtl)) { - BigDecimal sysl = stockDtl.getQty().subtract(minQty); - if (sysl.compareTo(BigDecimal.ZERO) == 0) { - stockDtlService.removeById(stockDtl); - } else { - stockDtl.setQty(sysl); - stockDtl.setUpdate_id(SecurityUtils.getCurrentUserId()); - stockDtl.setUpdate_name(SecurityUtils.getCurrentNickName()); - stockDtl.setUpdate_time(DateUtil.now()); - stockDtlService.updateById(stockDtl); - } - tempQty = tempQty.subtract(minQty.negate()); - } - List newDtls = stockDtlService.list(new LambdaQueryWrapper() - .eq(StIvtStockDtl::getVehicle_code, (String) sms.get("vehicle_code"))); - if (CollectionUtils.isEmpty(newDtls)) { - structOne.setVehicle_code(""); - structOne.setUpdate_id(SecurityUtils.getCurrentUserId()); - structOne.setUpdate_name(SecurityUtils.getCurrentNickName()); - structOne.setUpdate_time(DateUtil.now()); - structattrService.update(structOne); - } - } - //TODO 新增库存变动记录信息 - - } - } - } - ); - } - } - }); - } - } - updateAssignStatus(list); - } - } - ); //修改明细数量 updateDetailSl(params); diff --git a/wms/nlsso-server/src/main/java/org/nl/wms/ivt/service/impl/StIvtStockAssignDtlServiceImpl.java b/wms/nlsso-server/src/main/java/org/nl/wms/ivt/service/impl/StIvtStockAssignDtlServiceImpl.java index d76a8cc..c213201 100644 --- a/wms/nlsso-server/src/main/java/org/nl/wms/ivt/service/impl/StIvtStockAssignDtlServiceImpl.java +++ b/wms/nlsso-server/src/main/java/org/nl/wms/ivt/service/impl/StIvtStockAssignDtlServiceImpl.java @@ -27,6 +27,8 @@ import org.nl.wms.ivt.service.dao.StIvtStructattr; import org.nl.wms.ivt.service.dao.mapper.StIvtStockAssignDtlMapper; import org.nl.wms.ivt.service.IStIvtStockAssignDtlService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.nl.wms.schedule.service.dao.VWmsRkinfobydhinfoThird; +import org.nl.wms.schedule.service.dao.mapper.SrmDataSyncMapper; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -58,6 +60,8 @@ public class StIvtStockAssignDtlServiceImpl extends ServiceImpl() + .eq(StIvtStockAssignDtl::getDetail_id, shdhbid)); + //如果采购入库单的总数量小于收货确认分配明细的数量,则将收货确认的分配明细数量减少到与采购入库单数量一致 + if (CollectionUtils.isNotEmpty(assignDtlsByFlId)) { + BigDecimal totalAmount = assignDtlsByFlId.stream() + .map(StIvtStockAssignDtl::getAssign_qty) + .filter(Objects::nonNull) + .reduce(BigDecimal.ZERO, BigDecimal::add); + EasOutInBillDetail easOutInBillDetail = easOutInBillDetailService.getOne(new LambdaQueryWrapper().eq(EasOutInBillDetail::getFlid, flid)); + if (ObjectUtil.isNotEmpty(easOutInBillDetail)) { + //返回给前端 + if (easOutInBillDetail.getSl().compareTo(totalAmount) < 0) { + BigDecimal subtract = totalAmount.subtract(easOutInBillDetail.getSl()); + for (StIvtStockAssignDtl stIvtStockAssignDtl : assignDtlsByFlId) { + BigDecimal assignQty = stIvtStockAssignDtl.getAssign_qty(); + if (assignQty.compareTo(subtract) <= 0) { + // 当前明细的数量小于等于需要减的,直接清零 + subtract = subtract.subtract(assignQty); + stIvtStockAssignDtl.setAssign_qty(BigDecimal.ZERO); + stockAssignDtlMapper.deleteById(stIvtStockAssignDtl.getId()); + } else { + // 当前明细够减,部分减少后退出 + stIvtStockAssignDtl.setAssign_qty(assignQty.subtract(subtract)); + stockAssignDtlMapper.updateById(stIvtStockAssignDtl); + break; + } + } +// assignDtlsByFlId = this.list(new LambdaQueryWrapper() +// .eq(StIvtStockAssignDtl::getDetail_id, shdhbid)); + assignDtlsByFlId.forEach( + stIvtStockAssignDtl -> { + Map detail = new HashMap<>(); + detail.put("id", stIvtStockAssignDtl.getId()); + detail.put("flid", flid); + detail.put("djbh", detailVo.get("djbh")); + detail.put("flxh", detailVo.get("flxh")); + detail.put("io_type", stIvtStockAssignDtl.getIo_type()); + detail.put("wlbm", stIvtStockAssignDtl.getMaterial_code()); + detail.put("wlmc", stIvtStockAssignDtl.getMaterial_name()); + detail.put("kwbm", stIvtStockAssignDtl.getStruct_code()); + detail.put("kwmc", stIvtStockAssignDtl.getStruct_name()); + detail.put("ckbm", stIvtStockAssignDtl.getStor_code()); + detail.put("ckmc", stIvtStockAssignDtl.getStor_name()); + detail.put("status", true); + detail.put("fpsl", stIvtStockAssignDtl.getAssign_qty()); + BigDecimal kcsl = stockDtlService.queryTotalQtyByMaterialCode((String) detailVo.get("wlbm"), stIvtStockAssignDtl.getStor_code()); + detail.put("kcsl", kcsl); + detail.put("bz", ""); + resp.add(detail); + } + ); + } else if (easOutInBillDetail.getSl().compareTo(totalAmount) == 0){ + assignDtlsByFlId.forEach( + stIvtStockAssignDtl -> { + Map detail = new HashMap<>(); + detail.put("id", stIvtStockAssignDtl.getId()); + detail.put("flid", flid); + detail.put("djbh", detailVo.get("djbh")); + detail.put("flxh", detailVo.get("flxh")); + detail.put("io_type", stIvtStockAssignDtl.getIo_type()); + detail.put("wlbm", stIvtStockAssignDtl.getMaterial_code()); + detail.put("wlmc", stIvtStockAssignDtl.getMaterial_name()); + detail.put("kwbm", stIvtStockAssignDtl.getStruct_code()); + detail.put("kwmc", stIvtStockAssignDtl.getStruct_name()); + detail.put("ckbm", stIvtStockAssignDtl.getStor_code()); + detail.put("ckmc", stIvtStockAssignDtl.getStor_name()); + detail.put("status", true); + detail.put("fpsl", stIvtStockAssignDtl.getAssign_qty()); + BigDecimal kcsl = stockDtlService.queryTotalQtyByMaterialCode((String) detailVo.get("wlbm"), stIvtStockAssignDtl.getStor_code()); + detail.put("kcsl", kcsl); + detail.put("bz", ""); + resp.add(detail); + } + ); + } + } + } + } } } ); diff --git a/wms/nlsso-server/src/main/java/org/nl/wms/schedule/service/dao/VWmsRkinfobydhinfoThird.java b/wms/nlsso-server/src/main/java/org/nl/wms/schedule/service/dao/VWmsRkinfobydhinfoThird.java new file mode 100644 index 0000000..6f2654c --- /dev/null +++ b/wms/nlsso-server/src/main/java/org/nl/wms/schedule/service/dao/VWmsRkinfobydhinfoThird.java @@ -0,0 +1,24 @@ +package org.nl.wms.schedule.service.dao; + +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.ToString; + +/** + * @Description TODO + * @Author Gengby + * @Date 2024/11/12 + */ +@Data +@ToString +@EqualsAndHashCode(callSuper = false) +@TableName("nuoli_v1.0.v_wms_rkinfobydhinfo_third") +public class VWmsRkinfobydhinfoThird { + private String rkdh; + private String rkid; + private String rkbid; + private String shdh; + private String shdhid; + private String shdhbid; +} \ No newline at end of file diff --git a/wms/nlsso-server/src/main/java/org/nl/wms/schedule/service/dao/mapper/SrmDataSyncMapper.java b/wms/nlsso-server/src/main/java/org/nl/wms/schedule/service/dao/mapper/SrmDataSyncMapper.java index 9a4b06f..49be5fe 100644 --- a/wms/nlsso-server/src/main/java/org/nl/wms/schedule/service/dao/mapper/SrmDataSyncMapper.java +++ b/wms/nlsso-server/src/main/java/org/nl/wms/schedule/service/dao/mapper/SrmDataSyncMapper.java @@ -1,6 +1,7 @@ package org.nl.wms.schedule.service.dao.mapper; import com.baomidou.dynamic.datasource.annotation.DS; +import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; import org.nl.wms.schedule.service.dao.*; @@ -54,4 +55,14 @@ public interface SrmDataSyncMapper { @Select("SELECT * FROM `nuoli_v1.0`.v_wms_recbill_third WHERE djzt = '1' AND ywrq >= '2024-11-01'") List getFullReceiptBills(); + + /** + * 根据入库id + * @param rkbid + * @return + */ + @DS("mysql_srm") + @Select("SELECT * FROM `nuoli_v1.0`.v_wms_rkinfobydhinfo_third WHERE rkbid = #{rkbid}") + VWmsRkinfobydhinfoThird getShbidByRkbid(@Param("rkbid") String rkbid); + } \ No newline at end of file diff --git a/wms/nlsso-server/src/main/java/org/nl/wms/schedule/service/impl/EasDataSyncServiceImpl.java b/wms/nlsso-server/src/main/java/org/nl/wms/schedule/service/impl/EasDataSyncServiceImpl.java index 3ad46d6..a0ef0c2 100644 --- a/wms/nlsso-server/src/main/java/org/nl/wms/schedule/service/impl/EasDataSyncServiceImpl.java +++ b/wms/nlsso-server/src/main/java/org/nl/wms/schedule/service/impl/EasDataSyncServiceImpl.java @@ -700,6 +700,7 @@ public class EasDataSyncServiceImpl implements IEasDataSyncService { allocationBillDetailOne.setSysl(vTransferBillDetail.getSl()); allocationBillDetailOne.setGzh(vTransferBillDetail.getGzh()); allocationBillDetailOne.setFlbz(vTransferBillDetail.getFlbz()); + allocationBillDetailOne.setXgsj(vTransferBillDetail.getXgsj()); allocationBillDetailList.add(allocationBillDetailOne); } }); @@ -899,6 +900,7 @@ public class EasDataSyncServiceImpl implements IEasDataSyncService { allocationBillDetailOne.setSysl(vTransferBillDetail.getSl()); allocationBillDetailOne.setGzh(vTransferBillDetail.getGzh()); allocationBillDetailOne.setFlbz(vTransferBillDetail.getFlbz()); + allocationBillDetailOne.setXgsj(vTransferBillDetail.getXgsj()); allocationBillDetailList.add(allocationBillDetailOne); } }); diff --git a/wms/nlsso-server/src/main/java/org/nl/wms/schedule/service/impl/SrmDataSyncServiceImpl.java b/wms/nlsso-server/src/main/java/org/nl/wms/schedule/service/impl/SrmDataSyncServiceImpl.java index 4fdcb64..c36d4b9 100644 --- a/wms/nlsso-server/src/main/java/org/nl/wms/schedule/service/impl/SrmDataSyncServiceImpl.java +++ b/wms/nlsso-server/src/main/java/org/nl/wms/schedule/service/impl/SrmDataSyncServiceImpl.java @@ -1,5 +1,6 @@ package org.nl.wms.schedule.service.impl; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; @@ -89,13 +90,13 @@ public class SrmDataSyncServiceImpl implements ISrmDataSyncService { groupedByDjid.forEach( (djid, vWmsInBillThirds) -> { List easOutInBillDetails = easOutInBillDetailMapper.selectList(new LambdaQueryWrapper().eq(EasOutInBillDetail::getDjid, djid)); - if (easOutInBillDetails.size() > vWmsInBillThirds.size()){ + if (easOutInBillDetails.size() > vWmsInBillThirds.size()) { Set flids = easOutInBillDetails.stream() .filter(e -> vWmsInBillThirds.stream().noneMatch(w -> w.getFlid().equals(e.getFlid()))) .map(EasOutInBillDetail::getFlid) .collect(Collectors.toSet()); - if (CollectionUtils.isNotEmpty(flids)){ - easOutInBillDetailMapper.delete(new LambdaQueryWrapper().in(EasOutInBillDetail::getFlid,flids)); + if (CollectionUtils.isNotEmpty(flids)) { + easOutInBillDetailMapper.delete(new LambdaQueryWrapper().in(EasOutInBillDetail::getFlid, flids)); } } } @@ -325,7 +326,7 @@ public class SrmDataSyncServiceImpl implements ISrmDataSyncService { } else { Set flids = receiptBillDetails.stream().map(ReceiptBillDetail::getFlid).collect(Collectors.toSet()); List assignDtls = stockAssignDtlService.list(new LambdaQueryWrapper().in(StIvtStockAssignDtl::getDetail_id, flids).eq(StIvtStockAssignDtl::getStatus, true)); - if (CollectionUtils.isEmpty(assignDtls)){ + if (CollectionUtils.isEmpty(assignDtls)) { //先删除所有的分配信息false stockAssignDtlService.remove(new LambdaQueryWrapper().in(StIvtStockAssignDtl::getDetail_id, flids)); //再删除所有的单据信息和明细信息 @@ -348,24 +349,24 @@ public class SrmDataSyncServiceImpl implements ISrmDataSyncService { } Set delIds = new HashSet<>(); - groupedByDjid.forEach((djid,vRecebillDetails) -> { + groupedByDjid.forEach((djid, vRecebillDetails) -> { List receiptBillDetailList = ireceiptBillDetailService.list(new LambdaQueryWrapper().eq(ReceiptBillDetail::getDjid, djid)); - if (receiptBillDetailList.size() > vRecebillDetails.size()){ + if (receiptBillDetailList.size() > vRecebillDetails.size()) { Set flids = receiptBillDetailList.stream() .filter(e -> vRecebillDetails.stream().noneMatch(w -> w.getFlid().equals(e.getFlid()))) .map(ReceiptBillDetail::getFlid) .collect(Collectors.toSet()); for (String flid : flids) { - List list = stockAssignDtlService.list(new LambdaQueryWrapper().eq(StIvtStockAssignDtl::getDetail_id, flid).eq(StIvtStockAssignDtl::getStatus,true)); - if (CollectionUtils.isEmpty(list)){ + List list = stockAssignDtlService.list(new LambdaQueryWrapper().eq(StIvtStockAssignDtl::getDetail_id, flid).eq(StIvtStockAssignDtl::getStatus, true)); + if (CollectionUtils.isEmpty(list)) { delIds.add(flid); } } } }); - if (CollectionUtils.isNotEmpty(delIds)){ - ireceiptBillDetailService.remove(new LambdaQueryWrapper().in(ReceiptBillDetail::getFlid,delIds)); - stockAssignDtlService.remove(new LambdaQueryWrapper().in(StIvtStockAssignDtl::getDetail_id,delIds)); + if (CollectionUtils.isNotEmpty(delIds)) { + ireceiptBillDetailService.remove(new LambdaQueryWrapper().in(ReceiptBillDetail::getFlid, delIds)); + stockAssignDtlService.remove(new LambdaQueryWrapper().in(StIvtStockAssignDtl::getDetail_id, delIds)); } } } finally { @@ -459,6 +460,7 @@ public class SrmDataSyncServiceImpl implements ISrmDataSyncService { receiptBillDetailOne.setCkmc("三期电动原材料库"); receiptBillDetailOne.setKwbm(vWmsRecDetail.getKwbm()); receiptBillDetailOne.setKwmc(vWmsRecDetail.getKwmc()); + receiptBillDetailOne.setXgsj(vWmsRecDetail.getXgsj()); receiptBillDetailOne.setSfzj("1".equals(vWmsRecDetail.getSfzj()) ? true : false); receiptBillDetailOne.setPcgl(vWmsRecDetail.getPcgl()); receiptBillDetailList.add(receiptBillDetailOne); @@ -555,6 +557,7 @@ public class SrmDataSyncServiceImpl implements ISrmDataSyncService { receiptBillDetailOne.setCkmc("三期电动原材料库"); receiptBillDetailOne.setKwbm(vWmsRecDetail.getKwbm()); receiptBillDetailOne.setKwmc(vWmsRecDetail.getKwmc()); + receiptBillDetailOne.setXgsj(vWmsRecDetail.getXgsj()); receiptBillDetailOne.setSfzj("1".equals(vWmsRecDetail.getSfzj()) ? true : false); receiptBillDetailOne.setPcgl(vWmsRecDetail.getPcgl()); receiptBillDetailList.add(receiptBillDetailOne); @@ -609,14 +612,14 @@ public class SrmDataSyncServiceImpl implements ISrmDataSyncService { executeUpdateLogic(easOutInBillDetail, vWmsInBillThird, updWmsOutInBills, easOutInBills); return; } - if (easxgsj != null && wmseasxgsj != null){ + if (easxgsj != null && wmseasxgsj != null) { SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd"); // easxgsj 格式 SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd"); // wmseasxgsj 格式 try { Date easxgdata = sdf1.parse(easxgsj); Date wmseasxgdata = sdf2.parse(wmseasxgsj); if (easxgdata.after(wmseasxgdata)) { - executeUpdateLogic(easOutInBillDetail,vWmsInBillThird,updWmsOutInBills,easOutInBills); + executeUpdateLogic(easOutInBillDetail, vWmsInBillThird, updWmsOutInBills, easOutInBills); // List list = stockAssignDtlService.list(new LambdaQueryWrapper().eq(StIvtStockAssignDtl::getDetail_id, easOutInBillDetail.getFlid())); // if (CollectionUtils.isEmpty(list)) { // easOutInBillDetail.setXgsj(easxgsj.replace("/", "-")); @@ -645,7 +648,7 @@ public class SrmDataSyncServiceImpl implements ISrmDataSyncService { if (CollectionUtils.isNotEmpty(updWmsOutInBills)) { ieasOutInBillDetailService.updateBatchById(updWmsOutInBills); } - if (CollectionUtils.isNotEmpty(easOutInBills)){ + if (CollectionUtils.isNotEmpty(easOutInBills)) { easOutInBillService.updateBatchById(easOutInBills); } } @@ -658,9 +661,10 @@ public class SrmDataSyncServiceImpl implements ISrmDataSyncService { private void executeUpdateLogic(EasOutInBillDetail easOutInBillDetail, VWmsInBillThird vWmsInBillThird, List updWmsOutInBills, Set easOutInBills) { - List list = stockAssignDtlService.list(new LambdaQueryWrapper() - .eq(StIvtStockAssignDtl::getDetail_id, easOutInBillDetail.getFlid())); - if (CollectionUtils.isEmpty(list)) { +// List list = stockAssignDtlService.list(new LambdaQueryWrapper() +// .eq(StIvtStockAssignDtl::getDetail_id, easOutInBillDetail.getFlid())); + EasOutInBill one = easOutInBillService.getOne(new LambdaQueryWrapper().eq(EasOutInBill::getDjid, easOutInBillDetail.getDjid())); + if (one != null && StrUtil.isEmpty(one.getShjg())) { easOutInBillDetail.setXgsj(vWmsInBillThird.getXgsj().replace("/", "-")); easOutInBillDetail.setJldw(vWmsInBillThird.getJldw()); easOutInBillDetail.setWlbm(vWmsInBillThird.getWlbm()); @@ -706,41 +710,51 @@ public class SrmDataSyncServiceImpl implements ISrmDataSyncService { VWmsRecbillThird vWmsRecbillThird = groupedBills.get(receiptBillDetail.getFlid()).get(0); String easxgsj = vWmsRecbillThird.getXgsj(); String wmseasxgsj = receiptBillDetail.getXgsj(); - SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss"); // easxgsj 格式 - SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); // wmseasxgsj 格式 - try { - Date easxgdata = sdf1.parse(easxgsj); - Date wmseasxgdata = sdf2.parse(wmseasxgsj); - if (easxgdata.after(wmseasxgdata)) { - List list = stockAssignDtlService.list(new LambdaQueryWrapper().eq(StIvtStockAssignDtl::getDetail_id, receiptBillDetail.getFlid())); - if (CollectionUtils.isEmpty(list)) { - receiptBillDetail.setXgsj(easxgsj.replace("/", "-")); - receiptBillDetail.setJldw(vWmsRecbillThird.getJldw()); - receiptBillDetail.setWlbm(vWmsRecbillThird.getWlbm()); - receiptBillDetail.setWlmc(vWmsRecbillThird.getWlmc()); - receiptBillDetail.setGgxh(vWmsRecbillThird.getGgxh()); - receiptBillDetail.setDdsl(vWmsRecbillThird.getDdsl()); - receiptBillDetail.setBcshsl(vWmsRecbillThird.getBcshsl()); - receiptBillDetail.setShsl(vWmsRecbillThird.getShsl()); - receiptBillDetail.setPcgl(vWmsRecbillThird.getPcgl()); - receiptBillDetail.setNum(vWmsRecbillThird.getNum()); - receiptBillDetail.setCzsl(BigDecimal.ZERO); - receiptBillDetail.setAssign_qty(BigDecimal.ZERO); - updWmsReceBills.add(receiptBillDetail); - ReceiptBill bill = ireceiptBillService.getOne(new LambdaQueryWrapper().eq(ReceiptBill::getDjid, receiptBillDetail.getDjid())); - bill.setYwrq(vWmsRecbillThird.getYwrq()); - wmsReceBills.add(bill); + if (easxgsj == null && wmseasxgsj == null) { + log.info("srmxgsj 和 wmssrmxgsj 都为空, flid: {}, 跳过处理", receiptBillDetail.getFlid()); + return; + } + if (easxgsj != null && wmseasxgsj == null) { + executeUpdateLogic(receiptBillDetail, vWmsRecbillThird, updWmsReceBills, wmsReceBills); + return; + } + if (easxgsj != null && wmseasxgsj != null) { + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); // wmseasxgsj 格式 + try { + Date easxgdata = sdf.parse(easxgsj); + Date wmseasxgdata = sdf.parse(wmseasxgsj); + if (easxgdata.after(wmseasxgdata)) { + executeUpdateLogic(receiptBillDetail, vWmsRecbillThird, updWmsReceBills, wmsReceBills); +// List list = stockAssignDtlService.list(new LambdaQueryWrapper().eq(StIvtStockAssignDtl::getDetail_id, receiptBillDetail.getFlid())); +// if (CollectionUtils.isEmpty(list)) { +// receiptBillDetail.setXgsj(easxgsj.replace("/", "-")); +// receiptBillDetail.setJldw(vWmsRecbillThird.getJldw()); +// receiptBillDetail.setWlbm(vWmsRecbillThird.getWlbm()); +// receiptBillDetail.setWlmc(vWmsRecbillThird.getWlmc()); +// receiptBillDetail.setGgxh(vWmsRecbillThird.getGgxh()); +// receiptBillDetail.setDdsl(vWmsRecbillThird.getDdsl()); +// receiptBillDetail.setBcshsl(vWmsRecbillThird.getBcshsl()); +// receiptBillDetail.setShsl(vWmsRecbillThird.getShsl()); +// receiptBillDetail.setPcgl(vWmsRecbillThird.getPcgl()); +// receiptBillDetail.setNum(vWmsRecbillThird.getNum()); +// receiptBillDetail.setCzsl(BigDecimal.ZERO); +// receiptBillDetail.setAssign_qty(BigDecimal.ZERO); +// updWmsReceBills.add(receiptBillDetail); +// ReceiptBill bill = ireceiptBillService.getOne(new LambdaQueryWrapper().eq(ReceiptBill::getDjid, receiptBillDetail.getDjid())); +// bill.setYwrq(vWmsRecbillThird.getYwrq()); +// wmsReceBills.add(bill); +// } } + } catch (ParseException e) { + log.error("日期解析失败, easxgsj: {}, wmseasxgsj: {}, flid: {}", easxgsj, wmseasxgsj, receiptBillDetail.getFlid(), e); } - } catch (ParseException e) { - e.printStackTrace(); } } ); if (CollectionUtils.isNotEmpty(updWmsReceBills)) { ireceiptBillDetailService.updateBatchById(updWmsReceBills); } - if (CollectionUtils.isNotEmpty(wmsReceBills)){ + if (CollectionUtils.isNotEmpty(wmsReceBills)) { ireceiptBillService.updateBatchById(wmsReceBills); } } @@ -751,4 +765,31 @@ public class SrmDataSyncServiceImpl implements ISrmDataSyncService { } } + private void executeUpdateLogic(ReceiptBillDetail receiptBillDetail, VWmsRecbillThird vWmsRecbillThird, + List updWmsReceBills, Set wmsReceBills) { + List list = stockAssignDtlService.list(new LambdaQueryWrapper() + .eq(StIvtStockAssignDtl::getDetail_id, receiptBillDetail.getFlid())); + if (CollectionUtils.isEmpty(list)) { + receiptBillDetail.setXgsj(vWmsRecbillThird.getXgsj()); + receiptBillDetail.setWlbm(vWmsRecbillThird.getWlbm()); + receiptBillDetail.setWlmc(vWmsRecbillThird.getWlmc()); + receiptBillDetail.setGgxh(vWmsRecbillThird.getGgxh()); + receiptBillDetail.setJldw(vWmsRecbillThird.getJldw()); + receiptBillDetail.setBz(vWmsRecbillThird.getBz()); + receiptBillDetail.setDdsl(vWmsRecbillThird.getDdsl()); + receiptBillDetail.setBcshsl(vWmsRecbillThird.getBcshsl()); + receiptBillDetail.setShsl(vWmsRecbillThird.getShsl()); + receiptBillDetail.setNum(vWmsRecbillThird.getNum()); + + receiptBillDetail.setSysl(vWmsRecbillThird.getShsl()); + receiptBillDetail.setCzsl(BigDecimal.ZERO); + receiptBillDetail.setAssign_qty(BigDecimal.ZERO); + updWmsReceBills.add(receiptBillDetail); + + ReceiptBill bill = ireceiptBillService.getOne(new LambdaQueryWrapper().eq(ReceiptBill::getDjid, receiptBillDetail.getDjid())); + bill.setYwrq(vWmsRecbillThird.getYwrq()); + wmsReceBills.add(bill); + } + } + } \ No newline at end of file