From 77795095baf112dcf1f34d486419cd44da9cdf3f Mon Sep 17 00:00:00 2001 From: liuxy Date: Thu, 10 Aug 2023 19:13:06 +0800 Subject: [PATCH] =?UTF-8?q?add=EF=BC=9A=E6=88=90=E5=93=81=E5=87=BA?= =?UTF-8?q?=E5=BA=93=E5=88=86=E9=85=8D=E9=A1=B5=E9=9D=A2=E6=96=B0=E5=A2=9E?= =?UTF-8?q?=E4=B8=80=E9=94=AE=E8=AE=BE=E7=BD=AE=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../IStivtlostorivnCpOutController.java | 8 ++ .../IStIvtIostorinvCpOutService.java | 10 ++ .../impl/StIvtIostorinvCpOutServiceImpl.java | 94 +++++++++++++++++++ .../product/productOut/DivDialog.vue | 22 +++++ .../product/productOut/productout.js | 9 ++ 5 files changed, 143 insertions(+) diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/controller/iostorInv/IStivtlostorivnCpOutController.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/controller/iostorInv/IStivtlostorivnCpOutController.java index 3f765ee3..65bc528c 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/controller/iostorInv/IStivtlostorivnCpOutController.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/controller/iostorInv/IStivtlostorivnCpOutController.java @@ -97,6 +97,14 @@ public class IStivtlostorivnCpOutController { return new ResponseEntity<>(HttpStatus.OK); } + @PostMapping("/setPointAll") + @Log("一键设置") + //("设置站点") + public ResponseEntity setPointAll(@RequestBody JSONObject whereJson){ + iStIvtIostorinvCpOutService.setPointAll(whereJson); + return new ResponseEntity<>(HttpStatus.OK); + } + @PostMapping("/confirm") @Log("强制确认") //("强制确认") diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/service/iostorInv/IStIvtIostorinvCpOutService.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/service/iostorInv/IStIvtIostorinvCpOutService.java index 5a104663..1f3c87af 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/service/iostorInv/IStIvtIostorinvCpOutService.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/service/iostorInv/IStIvtIostorinvCpOutService.java @@ -118,6 +118,15 @@ public interface IStIvtIostorinvCpOutService extends IService */ void setPoint(JSONObject whereJson); + /** + * 一键设置 + * @param whereJson + * { + * mst : 出入库主表 + * } + */ + void setPointAll(JSONObject whereJson); + /** * 强制确认 * @param whereJson @@ -196,4 +205,5 @@ public interface IStIvtIostorinvCpOutService extends IService * } */ JSONArray queryStructAll(Map whereJson); + } diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/service/iostorInv/impl/StIvtIostorinvCpOutServiceImpl.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/service/iostorInv/impl/StIvtIostorinvCpOutServiceImpl.java index 4b8e0b6d..8ecc36b9 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/service/iostorInv/impl/StIvtIostorinvCpOutServiceImpl.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/service/iostorInv/impl/StIvtIostorinvCpOutServiceImpl.java @@ -47,6 +47,7 @@ import org.nl.wms.storage_manage.productmanage.service.iostorInv.IStIvtIostorinv import org.nl.wms.storage_manage.productmanage.service.iostorInv.IStIvtIostorinvdtlCpService; import org.nl.wms.storage_manage.productmanage.service.iostorInv.dao.StIvtIostorinvCp; import org.nl.wms.storage_manage.productmanage.service.iostorInv.dao.StIvtIostorinvdisCp; +import org.nl.wms.storage_manage.productmanage.service.iostorInv.dao.StIvtIostorinvdisdtlCp; import org.nl.wms.storage_manage.productmanage.service.iostorInv.dao.StIvtIostorinvdtlCp; import org.nl.wms.storage_manage.productmanage.service.iostorInv.dao.mapper.StIvtIostorinvCpMapper; import org.nl.wms.storage_manage.productmanage.service.iostorInv.dto.IostorInvQuery; @@ -494,6 +495,99 @@ public class StIvtIostorinvCpOutServiceImpl extends ServiceImpl dtlDao = iostorinvdtlCpService.list( + new QueryWrapper().lambda() + .eq(StIvtIostorinvdtlCp::getIostorinv_id, whereJson.getString("iostorinv_id")) + ); + + boolean is_true = dtlDao.stream() + .allMatch(row -> row.getBill_status().equals(IOSEnum.BILL_STATUS.code("分配完"))); + + if (!is_true) throw new BadRequestException("请先分配完所有明细!"); + + // 2.找出库点 + // 根据托盘进行分组 + Map> disMapList = iostorinvdisCpService.list( + new QueryWrapper().lambda() + .eq(StIvtIostorinvdisCp::getIostorinv_id, whereJson.getString("iostorinv_id")) + .and(qr -> qr.eq(StIvtIostorinvdisCp::getPoint_id,"") + .or().isNull(StIvtIostorinvdisCp::getPoint_id) + ) + ).stream() + .collect(Collectors.groupingBy(StIvtIostorinvdisCp::getStruct_code)); + + // 出库点位集合 + List pointList = iSchBasePointService.list( + new QueryWrapper().lambda() + .eq(SchBasePoint::getIs_delete, IOSEnum.IS_USED.code("否")) + .eq(SchBasePoint::getIs_used, IOSEnum.IS_USED.code("是")) + .eq(SchBasePoint::getRegion_code, PDAEnum.REGION_CODE.code("发货区域")) + .orderByAsc(SchBasePoint::getPoint_code) + + ); + + for (String struct_code : disMapList.keySet()) { + StIvtIostorinvdisCp disDao = disMapList.get(struct_code).get(0); + + for (SchBasePoint dao : pointList) { + // 校验此点位是否有未完成的任务 + SchBaseTask taskDao = iSchBaseTaskService.getOne( + new QueryWrapper().lambda() + .eq(SchBaseTask::getPoint_code3, dao.getPoint_code()) + .eq(SchBaseTask::getIs_delete, IOSEnum.IS_USED.code("否")) + .notIn(SchBaseTask::getTask_status, TaskStatusEnum.FINISHED.getCode(), TaskStatusEnum.CANCEL.getCode()) + , false + ); + + if (ObjectUtil.isEmpty(taskDao)) { + // 3.生成任务 + PointEvent event = PointEvent.builder() + .type(AcsTaskEnum.TASK_STRUCT_CP_OUT) + .acs_task_type("8") + .task_group_id(IdUtil.getStringId()) + .point_code1(struct_code) + .point_code3(dao.getPoint_code()) + .vehicle_code(disDao.getStoragevehicle_code()) + .product_area("A1") // 暂时写死 + .callback((Consumer) disDao::setTask_id) + .build(); + BussEventMulticaster.Publish(event); + + // 4.下发任务 + whereJson.put("task_id", disDao.getTask_id()); + sendTask(whereJson); + + // 5.更新分配状态 + iostorinvdisCpService.update( + new UpdateWrapper().lambda() + .set(StIvtIostorinvdisCp::getPoint_id, dao.getPoint_id()) + .set(StIvtIostorinvdisCp::getPoint_code, dao.getPoint_code()) + .set(StIvtIostorinvdisCp::getPoint_name, dao.getPoint_name()) + .set(StIvtIostorinvdisCp::getWork_status, IOSEnum.WORK_STATUS.code("生成")) + .set(StIvtIostorinvdisCp::getTask_id, disDao.getTask_id()) + .eq(StIvtIostorinvdisCp::getIostorinv_id, disDao.getIostorinv_id()) + .eq(StIvtIostorinvdisCp::getStoragevehicle_code, disDao.getStoragevehicle_code()) + ); + + break; + } + } + } + + } + @Override @Transactional(rollbackFor = Exception.class) public void confirm(JSONObject whereJson) { diff --git a/mes/qd/src/views/wms/storage_manage/product/productOut/DivDialog.vue b/mes/qd/src/views/wms/storage_manage/product/productOut/DivDialog.vue index e49e5c98..b693f5e1 100644 --- a/mes/qd/src/views/wms/storage_manage/product/productOut/DivDialog.vue +++ b/mes/qd/src/views/wms/storage_manage/product/productOut/DivDialog.vue @@ -90,6 +90,17 @@ > 手工分配 + + 一键设置 + @@ -466,6 +477,17 @@ export default { this.loadingSetAllPoint = false }) }, + setPointAll() { + this.loadingSetAllPoint = true + productOut.setPointAll(this.mstrow).then(res => { + this.crud.notify('设置成功!', CRUD.NOTIFICATION_TYPE.SUCCESS) + this.queryTableDtl() + this.tabledis = [] + this.form2.point_code = '' + }).finally(() => { + this.loadingSetAllPoint = false + }) + }, cellStyle({ row, column, rowIndex, columnIndex }) { const assign_qty = parseFloat(row.assign_qty) const plan_qty = parseFloat(row.plan_qty) diff --git a/mes/qd/src/views/wms/storage_manage/product/productOut/productout.js b/mes/qd/src/views/wms/storage_manage/product/productOut/productout.js index ed244a8b..911e5551 100644 --- a/mes/qd/src/views/wms/storage_manage/product/productOut/productout.js +++ b/mes/qd/src/views/wms/storage_manage/product/productOut/productout.js @@ -64,6 +64,14 @@ export function setPoint(data) { }) } +export function setPointAll(data) { + return request({ + url: 'api/productOut/setPointAll', + method: 'post', + data + }) +} + export function confirm(data) { return request({ url: 'api/productOut/confirm', @@ -129,6 +137,7 @@ export default { allDivIvt, allCancel, setPoint, + setPointAll, confirm, getStructIvt, manualDiv,