From 7340eeb7465be24dd612ed2372e89aeff62eeb1d Mon Sep 17 00:00:00 2001 From: zhangzq Date: Wed, 8 Jan 2025 10:45:16 +0800 Subject: [PATCH] =?UTF-8?q?add:=E9=AA=8C=E7=AE=B1=E6=B5=81=E7=A8=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../PdmBiSubpackagerelationController.java | 25 ++++ .../IpdmBiSubpackagerelationService.java | 9 +- .../PdmBiSubpackagerelationServiceImpl.java | 123 +++++++++++++++--- .../BstIvtPackageinfoivtController.java | 1 + .../storage_manage/ios/enums/IOSEnum.java | 2 +- .../util/impl/OutBoxManageServiceImpl.java | 33 +++++ .../util/service/OutBoxManageService.java | 2 + .../service/quartz/config/JobRunner.java | 2 +- .../bi/rest/SubpackagerelationController.java | 12 ++ 9 files changed, 184 insertions(+), 25 deletions(-) diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/pdm/subpackagerelation/controller/PdmBiSubpackagerelationController.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/pdm/subpackagerelation/controller/PdmBiSubpackagerelationController.java index a4d4b28d9..c3264ffcc 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/pdm/subpackagerelation/controller/PdmBiSubpackagerelationController.java +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/pdm/subpackagerelation/controller/PdmBiSubpackagerelationController.java @@ -157,6 +157,31 @@ public class PdmBiSubpackagerelationController { } + @PostMapping("/zjInBound") + @SaIgnore + @Log("子卷装箱入库") + //@SaCheckPermission("@el.check(updateEntityList)") + public ResponseEntity zjInBound(@RequestBody JSONObject whereJson) { + RLock lock = redissonClient.getLock("updateEntityList"); + boolean tryLock = false; + try { + tryLock = lock.tryLock(0, TimeUnit.SECONDS); + if (tryLock) { + pdmBiSubpackagerelationService.updateEntityList(whereJson); + } else { + log.info("子卷装箱操作正在执行被锁住。"); + } + } catch (InterruptedException e) { + Thread.currentThread().interrupt(); + } finally { + if (tryLock) { + lock.unlock(); + } + } + return new ResponseEntity<>(HttpStatus.OK); + } + + @PostMapping("/transferBoxPackageToMes") @Log("传输子卷包装关系至LMS") //@SaCheckPermission("@el.check(updateEntityList)") diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/pdm/subpackagerelation/service/IpdmBiSubpackagerelationService.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/pdm/subpackagerelation/service/IpdmBiSubpackagerelationService.java index 9cc002ac8..47bbf3d90 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/pdm/subpackagerelation/service/IpdmBiSubpackagerelationService.java +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/pdm/subpackagerelation/service/IpdmBiSubpackagerelationService.java @@ -63,11 +63,14 @@ public interface IpdmBiSubpackagerelationService extends IService subList = this.list(new QueryWrapper() +// .eq("status", "0") +// .in("container_name", split)); +// if (subList.size() != containerName.length()){ +// throw new BadRequestException("子卷包装信息与子卷不相符合"); +// } +// Set collect = subList.stream().map(PdmBiSubpackagerelation::getPackage_box_sn).collect(Collectors.toSet()); +// if (collect.size()>1){ +// throw new BadRequestException("当前子卷不属于同一组"+ collect); +// } +// if (subList.get(0).getQuanlity_in_box().intValue()!= split.length){ +// throw new BadRequestException("当前木箱"+subList.get(0).getQuanlity_in_box()+"要装箱的子卷"+split.length+"未装完"); +// } +// String boxSn = subList.get(0).getPackage_box_sn(); +// updateWrapper.set("box_weight", NumberUtil.round(totalWeight, 2).toString()); +// updateWrapper.set("package_box_sn", boxDao.getBox_no()); +// updateWrapper.set("quanlity_in_box", workIdList.size()); +// updateWrapper.set("box_type", boxDao.getMaterial_code()); +// updateWrapper.set("box_length", boxDao.getBox_length()); +// updateWrapper.set("box_width", boxDao.getBox_width()); +// updateWrapper.set("box_high", boxDao.getBox_high()); +// updateWrapper.set("box_group", maxBoxGroup); +// updateWrapper.set("status", "0"); +// updateWrapper.in("workorder_id", workIdList); +// pdmBiSubpackagerelationMapper.update(null, updateWrapper); +// List packagerelationList = JSONObject.parseArray(whereJson.getJSONArray("tableMater").toJSONString(), PdmBiSubpackagerelation.class); +// //子卷信息校验 +// checkEntityList(whereJson, packagerelationList); +// //均衡获取木箱出库装箱区对接位 +// //= getPointCode(packagerelationList.size()); +// String deviceCode = "ZXQ_1_1"; +// int count = taskService.count(new QueryWrapper() +// .eq("task_type", "010908") +// .eq("is_delete", "0") +// .lt("task_status", TaskStatusEnum.FINISHED.getCode())); +// int count2 = packageinfoivtService.count(new QueryWrapper() +// .eq("point_status",PackageInfoIvtEnum.POINT_STATUS.code("装箱区")) +// .eq("ivt_status",PackageInfoIvtEnum.IVT_STATUS.code("合格品"))); +// if (count+count2>8){ +// throw new BadRequestException("当前装箱区木箱任务已满,稍后再试"); +// } +// List workIdList = JSONObject.parseArray(whereJson.getJSONArray("tableMater").toJSONString(), PdmBiSubpackagerelation.class).stream() +// .map(PdmBiSubpackagerelation::getWorkorder_id) +// .map(String::valueOf) +// .collect(Collectors.toList()); +// //根据分切计划获取子卷重量计算理论毛重 +// Set containerNameList = packagerelationList.stream() +// .map(PdmBiSubpackagerelation::getContainer_name) +// .collect(Collectors.toSet()); +// List planList = iPdmBiSlittingproductionplanService.list(new LambdaQueryWrapper() +// .in(PdmBiSlittingproductionplan::getContainer_name, containerNameList) +// .eq(PdmBiSlittingproductionplan::getIs_delete,IOSEnum.IS_NOTANDYES.code("否")) +// ); +// +// if (ObjectUtils.isEmpty(planList)) { +// throw new BadRequestException("子卷查询不到分切计划,请检查!"); +// } +// BigDecimal totalWeight; +// totalWeight = planList.stream() +// .map(PdmBiSlittingproductionplan::getWeight) +// .filter(p -> p != null && !p.trim().isEmpty()) +// .filter(r -> !r.isEmpty()) +// .map(BigDecimal::new) +// .reduce(BigDecimal.ZERO, BigDecimal::add); +// if (totalWeight.compareTo(new BigDecimal(0)) == 0) { +// throw new BadRequestException("分切计划的子卷重量不能为0"); +// } +// //获取子卷组号 +// List pdmBiSubpackagerelationList = pdmBiSubpackagerelationMapper +// .selectList(new LambdaQueryWrapper().eq(PdmBiSubpackagerelation::getSale_order_name, packagerelationList.get(0).getSale_order_name())); +// Integer maxBoxGroup = pdmBiSubpackagerelationList.stream() +// .map(PdmBiSubpackagerelation::getBox_group) +// .filter(r -> r != null && !r.trim().isEmpty()) +// .map(Integer::parseInt) +// .max(Integer::compareTo) +// .orElse(0) + 1; +// outBox(workIdList, containerNameList, deviceCode, maxBoxGroup, whereJson, totalWeight); + } + private void checkEntityList(JSONObject whereJson, List packagerelationList) { JSONArray jsonArray = whereJson.getJSONArray("tableMater"); if (jsonArray == null || jsonArray.size() == 0) { @@ -330,7 +417,7 @@ public class PdmBiSubpackagerelationServiceImpl extends ServiceImpl workIdList, Set containerNameList, String deviceCode, Integer maxBoxGroup, JSONObject whereJson, BigDecimal totalWeight) { JSONObject boxInfo = new JSONObject(); @@ -338,7 +425,7 @@ public class PdmBiSubpackagerelationServiceImpl extends ServiceImpl().lambda() .eq(BstIvtBoxinfo::getBox_no, boxSn) @@ -348,8 +435,20 @@ public class PdmBiSubpackagerelationServiceImpl extends ServiceImpl updateWrapper = new UpdateWrapper<>(); + //理论毛重 + updateWrapper.set("box_weight", NumberUtil.round(totalWeight, 2).toString()); + updateWrapper.set("package_box_sn", boxDao.getBox_no()); + updateWrapper.set("quanlity_in_box", workIdList.size()); + updateWrapper.set("box_type", boxDao.getMaterial_code()); + updateWrapper.set("box_length", boxDao.getBox_length()); + updateWrapper.set("box_width", boxDao.getBox_width()); + updateWrapper.set("box_high", boxDao.getBox_high()); + updateWrapper.set("box_group", maxBoxGroup); + updateWrapper.set("status", "0"); + updateWrapper.in("workorder_id", workIdList); + pdmBiSubpackagerelationMapper.update(null, updateWrapper); +// agvTransfer(containerNameList, deviceCode, boxSn); //给MES传输子卷包装关系 CompletableFuture.runAsync(() -> { try { @@ -364,22 +463,6 @@ public class PdmBiSubpackagerelationServiceImpl extends ServiceImpl entityList, BstIvtBoxinfo boxDao, String totalWeight) { - UpdateWrapper updateWrapper = new UpdateWrapper<>(); - //理论毛重 - updateWrapper.set("box_weight", NumberUtil.round(totalWeight, 2).toString()); - updateWrapper.set("package_box_sn", boxDao.getBox_no()); - updateWrapper.set("quanlity_in_box", entityList.size()); - updateWrapper.set("box_type", boxDao.getMaterial_code()); - updateWrapper.set("box_length", boxDao.getBox_length()); - updateWrapper.set("box_width", boxDao.getBox_width()); - updateWrapper.set("box_high", boxDao.getBox_high()); - updateWrapper.set("box_group", maxBoxGroup); - updateWrapper.set("status", "0"); - updateWrapper.in("workorder_id", entityList); - pdmBiSubpackagerelationMapper.update(null, updateWrapper); - } - /** * 传输子卷包装关系至LMS diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/point/controller/BstIvtPackageinfoivtController.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/point/controller/BstIvtPackageinfoivtController.java index 6838f944c..ccbd70f48 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/point/controller/BstIvtPackageinfoivtController.java +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/point/controller/BstIvtPackageinfoivtController.java @@ -59,6 +59,7 @@ public class BstIvtPackageinfoivtController { * @return JSONObject 返回信息 */ @PostMapping("/secondaryAllocationPoint") + @Log("二次分配") @SaIgnore ResponseEntity secondaryAllocationPoint(@RequestBody JSONObject whereJson) { log.info("一楼装箱区二次分配接口请求参数:---------------------------------------------" + whereJson.toString()); diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/enums/IOSEnum.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/enums/IOSEnum.java index 48c219c12..1eaad7407 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/enums/IOSEnum.java +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/enums/IOSEnum.java @@ -63,7 +63,7 @@ public enum IOSEnum { "空托盘出库锁", "4", "空托盘入库锁", "5", "移出锁", "6", "移入锁", "7","木箱入库锁","8", "木箱出库锁","9","出库异常锁","10", - "货位异常锁", "11","货位异常出库锁", "12","其它", "99" + "货位异常锁", "11","货位异常出库锁", "12","验箱出库锁", "13","其它", "99" )), //仓库id diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/util/impl/OutBoxManageServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/util/impl/OutBoxManageServiceImpl.java index 239c33341..ce11a5fc8 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/util/impl/OutBoxManageServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/util/impl/OutBoxManageServiceImpl.java @@ -122,6 +122,39 @@ public class OutBoxManageServiceImpl implements OutBoxManageService { taskBean.createTask(jsonTaskParam); taskBean.immediateNotifyAcs(null); // 锁定起点 + jsonAttr.put("lock_type", IOSEnum.LOCK_TYPE.code("验箱出库锁")); + attrTab.update(jsonAttr); + // 清空缓存 + notOutRowList.clear(); + notOutBlockList.clear(); + return jsonAttr.getString("storagevehicle_code"); + } + + @Override + public String outBoxNoTask(JSONObject whereJson) { + + // 仓位表 + WQLObject attrTab = WQLObject.getWQLObject("st_ivt_structattr"); + // 载具扩展属性表 + WQLObject veExtTab = WQLObject.getWQLObject("md_pb_storagevehicleext"); + whereJson.put("stor_id", IOSEnum.STOR_ID.code("二期")); + whereJson.put("sect_id", RegionTypeEnum.TWO_BZC01.getId()); + + JSONObject jsonAttr = getStruct(whereJson); + + if (ObjectUtil.isEmpty(jsonAttr)) { + notOutRowList.clear(); + notOutBlockList.clear(); + throw new BadRequestException("没有符合规格的木箱!"); + } + + // 查询木箱对应的托盘号 + JSONObject jsonVeExt = veExtTab.query("pcsn = '" + jsonAttr.getString("storagevehicle_code") + "'") + .uniqueResult(0); + if (ObjectUtil.isEmpty(jsonVeExt)) { + throw new BadRequestException("此木箱没有绑定托盘号!"+jsonAttr.getString("storagevehicle_code")); + } + // 锁定起点 jsonAttr.put("lock_type", IOSEnum.LOCK_TYPE.code("木箱出库锁")); attrTab.update(jsonAttr); // 清空缓存 diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/util/service/OutBoxManageService.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/util/service/OutBoxManageService.java index e83e0ff68..554911e34 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/util/service/OutBoxManageService.java +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/util/service/OutBoxManageService.java @@ -25,6 +25,8 @@ public interface OutBoxManageService { */ String outBox(JSONObject whereJson); + String outBoxNoTask(JSONObject whereJson); + /** * 任务异常处理(1.空出 ) diff --git a/lms/nladmin-system/src/main/java/org/nl/system/service/quartz/config/JobRunner.java b/lms/nladmin-system/src/main/java/org/nl/system/service/quartz/config/JobRunner.java index 1041e14d5..1ca5d2249 100644 --- a/lms/nladmin-system/src/main/java/org/nl/system/service/quartz/config/JobRunner.java +++ b/lms/nladmin-system/src/main/java/org/nl/system/service/quartz/config/JobRunner.java @@ -17,7 +17,7 @@ import org.springframework.stereotype.Component; import java.util.List; -@Component +//@Component @RequiredArgsConstructor @Order(100) public class JobRunner implements ApplicationRunner { diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/pdm/bi/rest/SubpackagerelationController.java b/lms/nladmin-system/src/main/java/org/nl/wms/pdm/bi/rest/SubpackagerelationController.java index 3ca1dfa94..88c2539be 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/pdm/bi/rest/SubpackagerelationController.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/pdm/bi/rest/SubpackagerelationController.java @@ -1,11 +1,14 @@ package org.nl.wms.pdm.bi.rest; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.nl.modules.logging.annotation.Log; import org.nl.wms.pdm.bi.service.SubpackagerelationService; import org.nl.wms.pdm.bi.service.dto.SubpackagerelationDto; +import org.nl.wms.util.TranUtil; import org.springframework.data.domain.Pageable; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; @@ -70,4 +73,13 @@ public class SubpackagerelationController { public void download(@RequestParam Map map, HttpServletResponse response) throws IOException { subpackagerelationService.download(map, response); } + @Log("导出数据") + @GetMapping(value = "/tranTest") + public void tranTest(@RequestBody JSONObject param) throws IOException { + TranUtil.openTransaction((req,callback)->{ + + return null; + },new JSONArray()); + } + }