From 17c1c9992810e20f23bd494f5144bf3224e2542e Mon Sep 17 00:00:00 2001 From: zhangzhiqiang Date: Tue, 12 Sep 2023 15:22:09 +0800 Subject: [PATCH] =?UTF-8?q?add=EF=BC=9A=E6=88=90=E5=93=81=E7=A7=BB?= =?UTF-8?q?=E5=BA=93=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/org/nl/common/enums/AcsTaskEnum.java | 11 +- .../java/org/nl/common/enums/QueryTEnum.java | 10 +- .../service/storage/dto/StructarrQuery.java | 4 + .../extendtask/manage/TaskStatusEnum.java | 2 +- .../task/impl/SchBaseTaskServiceImpl.java | 2 +- .../org/nl/wms/storage_manage/IOSEnum.java | 2 +- .../moveInv/StIvtMoveinvCpController.java | 12 +- .../moveInv/StIvtMoveinvdtlCpController.java | 2 +- .../moveInv/IStIvtMoveinvCpService.java | 2 + .../service/moveInv/dao/StIvtMoveinvCp.java | 2 +- .../impl/StIvtMoveinvCpServiceImpl.java | 255 +++++++++++------- .../impl/StIvtMoveinvdtlCpServiceImpl.java | 49 +++- .../impl/StIvtStructivtCpServiceImpl.java | 5 +- .../dao/mapper/xml/StIvtStructivtYlMapper.xml | 9 + .../structIvt/dto/StructIvtYLQuery.java | 6 +- .../controller/user/UserController.java | 1 + .../src/main/resources/sql/0901维护.sql | 3 + .../product/moveInv/AddDialog.vue | 57 ++-- .../storage_manage/product/moveInv/AddDtl.vue | 173 ------------ .../product/moveInv/AddStruct.vue | 5 +- .../product/moveInv/MoveTaskDialog.vue | 55 ++-- .../product/moveInv/StructIvt.vue | 177 ++++++++++++ .../storage_manage/product/moveInv/index.vue | 21 +- .../storage_manage/product/moveInv/moveInv.js | 28 +- 24 files changed, 530 insertions(+), 363 deletions(-) delete mode 100644 mes/qd/src/views/wms/storage_manage/product/moveInv/AddDtl.vue create mode 100644 mes/qd/src/views/wms/storage_manage/product/moveInv/StructIvt.vue diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/common/enums/AcsTaskEnum.java b/mes/hd/nladmin-system/src/main/java/org/nl/common/enums/AcsTaskEnum.java index 3b42ca8b..5ad66129 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/common/enums/AcsTaskEnum.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/common/enums/AcsTaskEnum.java @@ -32,21 +32,24 @@ public enum AcsTaskEnum { TASK_PLOTTER_EMPTY("6","刻字机-呼叫空框"),//判断是否铁料框(否的话: 不处理人工处理跟acs反馈sucess):一体机加一个呼叫空框请求功能 TASK_WARP_MAC("7","包装机-叫料出库"), TASK_WARP_EMPTY("8","包装机-送空框"), + TASK_STRUCT_IN("9","入库-半成品-生产入库"), TASK_STRUCT_OUT("10","出库-半成品-生产出库"), + TASK_STRUCT_CP_IN("11","入库-成品-生产入库"), + TASK_STRUCT_CP_OUT("12","出库-成品-生产出库"), + TASK_STRUCT_CP_CHECK("13","成品-盘点"), TASK_STRUCT_CHECK("14","半成品-盘点"), TASK_STRUCT_SHUT("15","半成品-拼盘任务出"), TASK_STRUCT_SHUT_IN("16","半成品-拼盘任务入"), TASK_STRUCT_BCP_EMPOUT("17","半成品-空托盘出库"), - TASK_STRUCT_CP_IN("11","入库-成品-生产入库"), - TASK_STRUCT_CP_OUT("12","出库-成品-生产出库"), + TASK_STRUCT_CP_MOVE("18","成品-移库"), + TASK_STRUCT_BCP_MOVE("19","半成品-移库"), + TASK_STRUCT_HR_IN("26","入库-海柔半成品-生产入库"), TASK_STRUCT_HR_OUT("27","出库-海柔半成品-生产出库"), TASK_STRUCT_HR_CHECK("28","海柔半成品-盘点"), TASK_STRUCT_HR_EMP_IN("29","入库-海柔半成品-空托盘"), TASK_STRUCT_HR_EMP_OUT("30","出库-海柔半成品-空托盘"), - TASK_STRUCT_CP_CHECK("13","成品-盘点"), - TASK_STRUCT_CP_MOVE("14","成品-移库"), TASK_WASH_SEND_MATERIAL("20","清洗机-上料请求"), TASK_WASH_EMP("21","清洗机-空框请求"), TASK_WASH_FULL_AUTO("22","清洗机-满料请求自动"),//去半成品入库:参数不全也去异常处理位 diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/common/enums/QueryTEnum.java b/mes/hd/nladmin-system/src/main/java/org/nl/common/enums/QueryTEnum.java index ba53be3c..115456aa 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/common/enums/QueryTEnum.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/common/enums/QueryTEnum.java @@ -3,9 +3,11 @@ package org.nl.common.enums; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import lombok.Getter; import org.apache.commons.lang3.StringUtils; +import org.apache.poi.ss.formula.functions.T; import org.nl.common.domain.query.LConsumer; import java.util.Collection; +import java.util.function.Consumer; /* * @author ZZQ @@ -28,18 +30,20 @@ public enum QueryTEnum { }); }), LE((q, k, v) -> { q.le(k[0],v); }), - BY((q, k, v) -> { q.orderByDesc(k[0],v); }), + BY((q, k, v) -> { q.orderByDesc(k[0],String.valueOf(v)); }), NO((q, k, v) -> { q.isNull(k[0]); }), + NULL_OR_EMPTY((queryWrapper, k, v) -> { queryWrapper.nested(a->a.isNull(k[0]).or().eq(k[0],"")); }), LT((q, k, v) -> { q.lt(k[0],v); }), OREQ((q, k, v) -> { if (StringUtils.isBlank((String)v)){ q.isNull(k[0]); }else { q.eq(k[0],v); } }); - private LConsumer doP; + private LConsumer,String[], Object> doP; - QueryTEnum(LConsumer doP) { + QueryTEnum(LConsumer,String[], Object> doP) { this.doP = doP; } public static void build(QueryTEnum type, QueryWrapper q, String[] k , Object v){ type.getDoP().accept(q,k,v); } + } diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/masterdata_manage/storage/service/storage/dto/StructarrQuery.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/masterdata_manage/storage/service/storage/dto/StructarrQuery.java index 422d6933..d8c208e0 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/masterdata_manage/storage/service/storage/dto/StructarrQuery.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/masterdata_manage/storage/service/storage/dto/StructarrQuery.java @@ -2,6 +2,7 @@ package org.nl.wms.masterdata_manage.storage.service.storage.dto; import cn.hutool.core.util.StrUtil; import lombok.Data; +import org.apache.commons.lang3.StringUtils; import org.nl.common.domain.query.BaseQuery; import org.nl.common.domain.query.QParam; import org.nl.common.enums.QueryTEnum; @@ -23,10 +24,13 @@ public class StructarrQuery extends BaseQuery { private String sect_id; private String struct_code; private String lock_type; + private Boolean is_used; + private Boolean emptyvehicle; private String blurry; @Override public void paramMapping() { super.doP.put("blurry", QParam.builder().k(new String[]{"struct_code"}).type(QueryTEnum.LK).build()); + super.doP.put("emptyvehicle", QParam.builder().k(new String[]{"storagevehicle_code"}).type(QueryTEnum.NULL_OR_EMPTY).build()); } } diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/extendtask/manage/TaskStatusEnum.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/extendtask/manage/TaskStatusEnum.java index 053705a8..d2e67976 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/extendtask/manage/TaskStatusEnum.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/extendtask/manage/TaskStatusEnum.java @@ -16,7 +16,7 @@ public enum TaskStatusEnum { private String name; private String code; - private TaskStatusEnum(String code, String name) { + TaskStatusEnum(String code, String name) { this.code = code; this.name = name; } diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/task/impl/SchBaseTaskServiceImpl.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/task/impl/SchBaseTaskServiceImpl.java index 636ef24e..6326ced6 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/task/impl/SchBaseTaskServiceImpl.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/task/impl/SchBaseTaskServiceImpl.java @@ -115,7 +115,7 @@ public class SchBaseTaskServiceImpl extends ServiceImpl query(MoveInvQuery query, PageQuery page) { return new ResponseEntity<>(TableDataInfo.build(moveinvcpService.page(page.build(StIvtMoveinvCp.class),query.build())), HttpStatus.OK); } @PostMapping - @Log("创建盘点单") + @Log("创建移库单") //("创建盘点单") public ResponseEntity create(@RequestBody JSONObject whereJson) { moveinvcpService.create(whereJson); @@ -67,5 +67,13 @@ public class StIvtMoveinvCpController { moveinvcpService.update(whereJson); return new ResponseEntity<>(TableDataInfo.build(),HttpStatus.OK); } + + @PostMapping("/cancel") + @Log("取消单据") + //("查询盘点明细") + public ResponseEntity cancel(@RequestBody JSONObject whereJson) { + moveinvcpService.cancel(whereJson); + return new ResponseEntity<>(TableDataInfo.build(),HttpStatus.OK); + } } diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/controller/moveInv/StIvtMoveinvdtlCpController.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/controller/moveInv/StIvtMoveinvdtlCpController.java index c7331639..0806fc0e 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/controller/moveInv/StIvtMoveinvdtlCpController.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/controller/moveInv/StIvtMoveinvdtlCpController.java @@ -28,7 +28,7 @@ import java.util.function.Consumer; * @since 2023-05-04 */ @RestController -@RequestMapping("/stIvtMoveinvdtlCp") +@RequestMapping("api/stIvtMoveinvdtlCp") public class StIvtMoveinvdtlCpController { diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/service/moveInv/IStIvtMoveinvCpService.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/service/moveInv/IStIvtMoveinvCpService.java index d5e2de7f..f844f1c4 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/service/moveInv/IStIvtMoveinvCpService.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/service/moveInv/IStIvtMoveinvCpService.java @@ -25,6 +25,8 @@ public interface IStIvtMoveinvCpService extends IService { */ void update(JSONObject form); + void cancel(JSONObject form); + /** * 任务回调处理 * @param form diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/service/moveInv/dao/StIvtMoveinvCp.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/service/moveInv/dao/StIvtMoveinvCp.java index 0c74f976..d1d5ee21 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/service/moveInv/dao/StIvtMoveinvCp.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/service/moveInv/dao/StIvtMoveinvCp.java @@ -118,7 +118,7 @@ public class StIvtMoveinvCp implements Serializable { /** * 修改时间 */ - private LocalDateTime update_time; + private String update_time; /** * 是否删除 diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/service/moveInv/impl/StIvtMoveinvCpServiceImpl.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/service/moveInv/impl/StIvtMoveinvCpServiceImpl.java index 9287a5ce..2418a160 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/service/moveInv/impl/StIvtMoveinvCpServiceImpl.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/service/moveInv/impl/StIvtMoveinvCpServiceImpl.java @@ -9,6 +9,7 @@ import com.alibaba.fastjson.serializer.SerializerFeature; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.apache.commons.lang3.StringUtils; import org.nl.common.enums.AcsTaskEnum; import org.nl.common.utils.IdUtil; import org.nl.common.utils.MapOf; @@ -17,6 +18,8 @@ import org.nl.modules.common.exception.BadRequestException; import org.nl.modules.system.util.CodeUtil; import org.nl.wms.masterdata_manage.storage.service.storage.IStIvtStructattrService; import org.nl.wms.masterdata_manage.storage.service.storage.dao.StIvtStructattr; +import org.nl.wms.mps_manage.saleorder.service.IMpsSaleOrderService; +import org.nl.wms.mps_manage.saleorder.service.dao.MpsSaleOrder; import org.nl.wms.scheduler_manage.service.extendtask.manage.TaskStatusEnum; import org.nl.wms.scheduler_manage.service.task.dao.SchBaseTask; import org.nl.wms.storage_manage.CHECKEnum; @@ -36,11 +39,10 @@ import org.nl.wms.storage_manage.productmanage.util.ChangeIvtUtil; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import org.springframework.util.CollectionUtils; -import java.util.ArrayList; -import java.util.HashSet; -import java.util.List; -import java.util.Set; +import java.util.*; +import java.util.stream.Collectors; /** *

@@ -68,7 +70,6 @@ public class StIvtMoveinvCpServiceImpl extends ServiceImpl itemList = new ArrayList<>(); - Set lockStructList = new HashSet<>(); + Set lockInStructList = new HashSet<>(); + Set lockOutStructList = new HashSet<>(); for (int i = 0; i < rows.size(); i++) { JSONObject item = rows.getJSONObject(i); + if (StringUtils.isEmpty(item.getString("turnin_struct_id"))){ + throw new BadRequestException("移入货位没有配置齐全"); + } StIvtMoveinvdtlCp moveinvdtlCp = new StIvtMoveinvdtlCp(); moveinvdtlCp.setMoveinv_id(mst.getMoveinv_id()); moveinvdtlCp.setMoveinvdtl_id(IdUtil.getStringId()); moveinvdtlCp.setSeq_no(i+1); moveinvdtlCp.setBill_status(mst.getBill_status()); + moveinvdtlCp.setSource_billdtl_id(item.getString("sale_id")); + moveinvdtlCp.setSale_id(item.getString("sale_id")); material: { moveinvdtlCp.setIs_active(true); moveinvdtlCp.setIvt_level(IVTEnum.IVT_LEVEL.code("一级")); @@ -128,19 +135,20 @@ public class StIvtMoveinvCpServiceImpl extends ServiceImpl().lambda() .set(StIvtStructattr::getLock_type, IOSEnum.LOCK_TYPE.code("移库锁")) .set(StIvtStructattr::getInv_code,mst.getBill_code()) - .in(StIvtStructattr::getStruct_code, lockStructList) + .in(StIvtStructattr::getStruct_code, lockInStructList) ); } @@ -164,7 +172,8 @@ public class StIvtMoveinvCpServiceImpl extends ServiceImpl itemList = new ArrayList<>(); - Set lockStructList = new HashSet<>(); + Set lockOutStructList = new HashSet<>(); + Set lockInStructList = new HashSet<>(); for (int i = 0; i < rows.size(); i++) { JSONObject item = rows.getJSONObject(i); StIvtMoveinvdtlCp moveinvdtlCp = JSONObject.parseObject(JSON.toJSONString(item), StIvtMoveinvdtlCp.class); @@ -174,101 +183,163 @@ public class StIvtMoveinvCpServiceImpl extends ServiceImpl list = structattrService.list(new QueryWrapper() + .in("struct_code", lockInStructList) + .nested(i -> i.eq("is_used", false) + .or() + .gt("lock_type", IOSEnum.LOCK_TYPE.code("未锁定")))); + if (!CollectionUtils.isEmpty(list)){ + throw new BadRequestException("选择点位已经锁定禁用:"+list.stream().map(StIvtStructattr::getStruct_code).collect(Collectors.joining(","))); + } + moveinvdtlCpService.updateBatchById(itemList); structattrService.update( new UpdateWrapper().lambda() .set(StIvtStructattr::getLock_type, IOSEnum.LOCK_TYPE.code("移库锁")) .set(StIvtStructattr::getInv_code,form.getString("bill_code")) - .in(StIvtStructattr::getStruct_code, lockStructList) + .in(StIvtStructattr::getStruct_code, lockInStructList) ); } + @Override + @Transactional + public void cancel(JSONObject form) { + List dtlList = moveinvdtlCpService.list(new QueryWrapper().eq("moveinv_id", form.getString("moveinv_id"))); + //调用明细表 插入方法 + Set unLockStructList = new HashSet<>(); + for (StIvtMoveinvdtlCp cp : dtlList) { + if (cp.getBill_status().equals(MoveInvEnum.BILL_STATUS.code("完成"))||cp.getBill_status().equals(MoveInvEnum.BILL_STATUS.code("移库中"))){ + throw new BadRequestException("存在已完成明细不允许直接取消单据"); + } + unLockStructList.add(cp.getTurnin_struct_code()); + unLockStructList.add(cp.getTurnout_struct_code()); + } + structattrService.update( + new UpdateWrapper().lambda() + .set(StIvtStructattr::getLock_type, IOSEnum.LOCK_TYPE.code("未锁定")) + .set(StIvtStructattr::getInv_code,"") + .in(StIvtStructattr::getStruct_code, unLockStructList) + ); + moveinvdtlCpService.update(new UpdateWrapper() + .set("bill_status",MoveInvEnum.BILL_STATUS.code("取消")) + .set("task_id","").eq("moveinv_id", form.getString("moveinv_id"))); + this.update(new UpdateWrapper() + .set("bill_status",MoveInvEnum.BILL_STATUS.code("取消")) + .set("update_name",SecurityUtils.getCurrentUsername()) + .set("update_id",SecurityUtils.getCurrentUserId()) + .set("update_time",DateUtil.now()) + .eq("moveinv_id", form.getString("moveinv_id"))); + } + @Override public void taskOperate(JSONObject form) { - String task_id = form.getString("task_id"); - String status = form.getString("status"); - StIvtMoveinvdtlCp dtl = moveinvdtlCpService.getOne(new QueryWrapper().eq("task_id", task_id)); - StIvtMoveinvCp mst = this.getById(dtl.getMoveinv_id()); - if (status.equals(AcsTaskEnum.STATUS_FINISH.getCode())) { - - moveinvdtlCpService.update(new UpdateWrapper() - .set("bill_status",MoveInvEnum.BILL_STATUS.code("完成")).eq("moveinvdtl_id",dtl.getMoveinvdtl_id())); - List list = moveinvdtlCpService.list(new QueryWrapper() - .eq("moveinv_id", dtl.getMoveinv_id()) - .ne("bill_status", MoveInvEnum.BILL_STATUS.code("完成"))); - if (list.size() == 0) { - this.update(new UpdateWrapper() - .set("bill_status",MoveInvEnum.BILL_STATUS.code("完成")) - .eq("moveinv_id",dtl.getMoveinv_id())); - } - //减出库。加入库 - JSONObject ivtOutParam = new JSONObject(); - ivtOutParam.put("struct_id", dtl.getTurnout_struct_id()); - ivtOutParam.put("material_id", dtl.getMaterial_id()); - ivtOutParam.put("pcsn", dtl.getPcsn()); - ivtOutParam.put("quality_scode", dtl.getQuality_scode()); - ivtOutParam.put("ivt_level", dtl.getIvt_level()); - ivtOutParam.put("change_qty", dtl.getQty()); - ivtOutParam.put("change_type", ChangeIvtUtil.SUB_SUBIVT_QTY); - ivtOutParam.put("sale_id", dtl.getSale_id()); - ivtOutParam.put("bill_code",mst.getBill_code()); - ivtOutParam.put("inv_id",mst.getMoveinv_id()); - ivtOutParam.put("bill_type_scode",mst.getBill_type()); - iStIvtStructivtCpService.UpdateIvt(ivtOutParam); - // 解锁仓位 - structattrService.update( - new StIvtStructattr() - .setLock_type(IOSEnum.LOCK_TYPE.code("未锁定")) - .setInv_id("") - .setInv_type("") - .setInv_code(""), - new QueryWrapper().lambda() - .eq(StIvtStructattr::getStruct_id, dtl.getTurnout_struct_id()) - ); - //加入库 - JSONObject ivtInParam = new JSONObject(); - ivtInParam.put("struct_id", dtl.getTurnin_struct_id()); - ivtInParam.put("material_id", dtl.getMaterial_id()); - ivtInParam.put("pcsn", dtl.getPcsn()); - ivtInParam.put("quality_scode", dtl.getQuality_scode()); - ivtInParam.put("ivt_level", dtl.getIvt_level()); - ivtInParam.put("change_qty", dtl.getQty()); - ivtInParam.put("change_type", ChangeIvtUtil.ADD_SUBIVT_QTY); - ivtInParam.put("sale_id", dtl.getSale_id()); - ivtInParam.put("bill_code",mst.getBill_code()); - ivtInParam.put("inv_id",mst.getMoveinv_id()); - ivtInParam.put("bill_type_scode",mst.getBill_type()); - iStIvtStructivtCpService.UpdateIvt(ivtInParam); - - structattrService.update( - new StIvtStructattr() - .setLock_type(IOSEnum.LOCK_TYPE.code("未锁定")) - .setInv_id("") - .setInv_type("") - .setStoragevehicle_code(dtl.getStoragevehicle_code()) - .setInv_code(""), - new QueryWrapper().lambda() - .eq(StIvtStructattr::getStruct_id, dtl.getTurnin_struct_id()) - ); - + AcsTaskEnum status = AcsTaskEnum.getType(form.getString("status"),"status_"); + List dtls = moveinvdtlCpService.list(new QueryWrapper() + .eq("task_id", form.getString("task_id"))); + if (CollectionUtils.isEmpty(dtls)){ + return; + } + StIvtMoveinvCp mst = this.getById(dtls.get(0).getMoveinv_id()); + switch (status){ + case STATUS_START: + mst.setBill_status(MoveInvEnum.BILL_STATUS.code("移库中")); + mst.setUpdate_time(DateUtil.now()); + mst.setUpdate_name("acs"); + this.updateById(mst); + break; + case STATUS_FINISH: + StIvtStructattr one = structattrService.getOne(new QueryWrapper() + .eq("struct_id", dtls.get(0).getTurnin_struct_id()) + .eq("storagevehicle_code", dtls.get(0).getStoragevehicle_code())); + if (one==null){ + for (StIvtMoveinvdtlCp dtl : dtls) { + if (!dtl.getBill_status().equals(MoveInvEnum.BILL_STATUS.code("完成"))){ + //减出库。加入库 + JSONObject ivtOutParam = new JSONObject(); + ivtOutParam.put("struct_id", dtl.getTurnout_struct_id()); + ivtOutParam.put("material_id", dtl.getMaterial_id()); + ivtOutParam.put("pcsn", dtl.getPcsn()); + ivtOutParam.put("quality_scode", dtl.getQuality_scode()); + ivtOutParam.put("ivt_level", dtl.getIvt_level()); + ivtOutParam.put("change_qty", dtl.getQty()); + ivtOutParam.put("change_type", ChangeIvtUtil.SUB_SUBIVT_QTY); + ivtOutParam.put("sale_id", dtl.getSale_id()); + ivtOutParam.put("bill_code",mst.getBill_code()); + ivtOutParam.put("inv_id",mst.getMoveinv_id()); + ivtOutParam.put("bill_type_scode",mst.getBill_type()); + iStIvtStructivtCpService.UpdateIvt(ivtOutParam); + //加入库 + JSONObject ivtInParam = new JSONObject(); + ivtInParam.put("struct_id", dtl.getTurnin_struct_id()); + ivtInParam.put("material_id", dtl.getMaterial_id()); + ivtInParam.put("pcsn", dtl.getPcsn()); + ivtInParam.put("quality_scode", dtl.getQuality_scode()); + ivtInParam.put("ivt_level", dtl.getIvt_level()); + ivtInParam.put("change_qty", dtl.getQty()); + ivtInParam.put("change_type", ChangeIvtUtil.ADD_SUBIVT_QTY); + ivtInParam.put("sale_id", dtl.getSale_id()); + ivtInParam.put("bill_code",mst.getBill_code()); + ivtInParam.put("inv_id",mst.getMoveinv_id()); + ivtInParam.put("bill_type_scode",mst.getBill_type()); + iStIvtStructivtCpService.UpdateIvt(ivtInParam); + } + } + // 解锁仓位 + structattrService.update( + new StIvtStructattr() + .setLock_type(IOSEnum.LOCK_TYPE.code("未锁定")) + .setInv_id("") + .setInv_type("") + .setStoragevehicle_code("") + .setInv_code(""), + new QueryWrapper().lambda() + .eq(StIvtStructattr::getStruct_id, dtls.get(0).getTurnout_struct_id()) + ); + structattrService.update( + new StIvtStructattr() + .setLock_type(IOSEnum.LOCK_TYPE.code("未锁定")) + .setInv_id(mst.getMoveinv_id()) + .setInv_type(IOSEnum.IO_TYPE.code("移库")) + .setStoragevehicle_code(dtls.get(0).getStoragevehicle_code()) + .setInv_code(mst.getBill_code()), + new QueryWrapper().lambda() + .eq(StIvtStructattr::getStruct_id, dtls.get(0).getTurnin_struct_id()) + ); + //更新明细 + moveinvdtlCpService.update(new UpdateWrapper() + .set("bill_status", MoveInvEnum.BILL_STATUS.code("完成")) + .in("moveinvdtl_id",dtls.stream().map(StIvtMoveinvdtlCp::getMoveinvdtl_id).collect(Collectors.toList()))); + //更新主单据 + List list = moveinvdtlCpService.list(new QueryWrapper() + .eq("moveinv_id", mst.getMoveinv_id()) + .ne("bill_status", MoveInvEnum.BILL_STATUS.code("完成")) + .ne("bill_status", MoveInvEnum.BILL_STATUS.code("取消"))); + if (list.size() == 0) { + this.update(new UpdateWrapper() + .set("bill_status",MoveInvEnum.BILL_STATUS.code("完成")) + .set("update_time",DateUtil.now()) + .set("update_name",SecurityUtils.getCurrentUsername()) + .set("update_id",SecurityUtils.getCurrentUserId()) + .eq("moveinv_id",mst.getMoveinv_id())); + } + } + break; + case STATUS_CANNEL: + //更新明细 + moveinvdtlCpService.update(new UpdateWrapper() + .set("bill_status", MoveInvEnum.BILL_STATUS.code("取消")) + .set("task_id","") + .in("moveinvdtl_id",dtls.stream().map(StIvtMoveinvdtlCp::getMoveinvdtl_id).collect(Collectors.toList()))); + break; } -// if (status.equals(AcsTaskEnum.STATUS_CANNEL.getCode())) { -// structattrService.update( -// new StIvtStructattr() -// .setLock_type(IOSEnum.LOCK_TYPE.code("未锁定")) -// .setInv_id("") -// .setInv_type("") -// .setInv_code(""), -// new QueryWrapper().lambda() -// .in(StIvtStructattr::getStruct_id, dtl.getTurnin_struct_id(),dtl.getTurnout_struct_id()) -// ); -// } } diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/service/moveInv/impl/StIvtMoveinvdtlCpServiceImpl.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/service/moveInv/impl/StIvtMoveinvdtlCpServiceImpl.java index e940843e..e6e3a68c 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/service/moveInv/impl/StIvtMoveinvdtlCpServiceImpl.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/service/moveInv/impl/StIvtMoveinvdtlCpServiceImpl.java @@ -1,6 +1,8 @@ package org.nl.wms.storage_manage.productmanage.service.moveInv.impl; import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.apache.commons.lang3.StringUtils; import org.nl.common.enums.AcsTaskEnum; @@ -13,15 +15,19 @@ import org.nl.wms.scheduler_manage.service.extendtask.manage.TaskStatusEnum; import org.nl.wms.scheduler_manage.service.task.ISchBaseTaskService; import org.nl.wms.scheduler_manage.service.task.dao.SchBaseTask; import org.nl.wms.storage_manage.MoveInvEnum; +import org.nl.wms.storage_manage.productmanage.service.moveInv.IStIvtMoveinvCpService; import org.nl.wms.storage_manage.productmanage.service.moveInv.IStIvtMoveinvdtlCpService; import org.nl.wms.storage_manage.productmanage.service.moveInv.dao.StIvtMoveinvdtlCp; import org.nl.wms.storage_manage.productmanage.service.moveInv.dao.mapper.StIvtMoveinvdtlCpMapper; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.util.CollectionUtils; import java.util.List; import java.util.Map; import java.util.function.Consumer; +import java.util.stream.Collectors; /** *

@@ -38,6 +44,9 @@ public class StIvtMoveinvdtlCpServiceImpl extends ServiceImpl listJoinTask(String moveinv_id) { if (StringUtils.isEmpty(moveinv_id)){ @@ -47,11 +56,18 @@ public class StIvtMoveinvdtlCpServiceImpl extends ServiceImpl list = this.list(new QueryWrapper() + .eq("moveinv_id", form.getString("moveinv_id")) + .eq("turnout_struct_code", form.getString("turnout_struct_code"))); + List collect = list.stream().filter(a -> a.getBill_status().equals(MoveInvEnum.BILL_STATUS.code("完成"))).collect(Collectors.toList()); + if (!CollectionUtils.isEmpty(collect)){ + throw new BadRequestException("当前明细存在正在执行的单据"); + } switch (option){ case "immediateNotifyAcs": + StIvtMoveinvdtlCp moveinvdtlCp = list.get(0); PointEvent event = PointEvent.builder() .type(AcsTaskEnum.TASK_STRUCT_CP_MOVE) .acs_task_type(AcsTaskEnum.ACS_TASK_TYPE_RT.getCode()) @@ -60,25 +76,30 @@ public class StIvtMoveinvdtlCpServiceImpl extends ServiceImpl) moveinvdtl::setTask_id) + .callback((Consumer) moveinvdtlCp::setTask_id) .build(); BussEventMulticaster.Publish(event); - moveinvdtl.setBill_status(MoveInvEnum.BILL_STATUS.code("移库中")); + this.update(new UpdateWrapper() + .set("task_id",moveinvdtlCp.getTask_id()) + .set("turnin_struct_code",form.getString("turnin_struct_code")) + .set("bill_status",MoveInvEnum.BILL_STATUS.code("移库中")) + .eq("moveinv_id", form.getString("moveinv_id")) + .eq("turnout_struct_code", form.getString("turnout_struct_code"))); + form.put("task_id",moveinvdtlCp.getTask_id()); break; case "forceFinish": - moveinvdtl.setBill_status(MoveInvEnum.BILL_STATUS.code("完成")); break; - case "cannel": - String task_id = moveinvdtl.getTask_id(); - SchBaseTask task = taskService.getById(task_id); - if (task.getTask_status().equals(TaskStatusEnum.ISSUE.getCode())||task.getTask_status().equals(TaskStatusEnum.EXECUTING.getCode())){ - throw new BadRequestException("当前移库任务正在执行中,不允许取消"); + case "cancel": + SchBaseTask task = taskService.getById(form.getString("task_id")); + if (task.getTask_status().equals(TaskStatusEnum.EXECUTING.getCode())||task.getTask_status().equals(TaskStatusEnum.FINISHED.getCode())){ + throw new BadRequestException("当前移库任务已下发执行,不允许取消"); } - moveinvdtl.setBill_status(MoveInvEnum.BILL_STATUS.code("取消")); - moveinvdtl.setTask_id(""); + this.update(new UpdateWrapper() + .set("bill_status", MoveInvEnum.BILL_STATUS.code("生成")) + .set("task_id","") + .in("moveinvdtl_id",list.stream().map(StIvtMoveinvdtlCp::getMoveinvdtl_id).collect(Collectors.toList()))); break; } - this.updateById(moveinvdtl); - taskService.operation(MapOf.of("method_name",option,"task_id",form.getString("task_id"))); + taskService.operation(MapOf.of("method_name",option,"task_id", form.getString("task_id"))); } } diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/service/structIvt/impl/StIvtStructivtCpServiceImpl.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/service/structIvt/impl/StIvtStructivtCpServiceImpl.java index cf16a9a5..fad9cd5b 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/service/structIvt/impl/StIvtStructivtCpServiceImpl.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/service/structIvt/impl/StIvtStructivtCpServiceImpl.java @@ -104,11 +104,11 @@ public class StIvtStructivtCpServiceImpl extends ServiceImpl and (mb.material_code = #{query.material_search} OR mb.material_name = #{query.material_search}) + + and sa.struct_code in + + #{item} + + and sa.sect_id = #{query.sect_id} and sa.struct_id = #{query.struct_id} + + and sa.struct_code = #{query.struct_code} + diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/rawmanage/service/structIvt/dto/StructIvtYLQuery.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/rawmanage/service/structIvt/dto/StructIvtYLQuery.java index 6334bdd0..52e6f542 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/rawmanage/service/structIvt/dto/StructIvtYLQuery.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/rawmanage/service/structIvt/dto/StructIvtYLQuery.java @@ -6,6 +6,8 @@ import org.nl.common.domain.query.QParam; import org.nl.common.enums.QueryTEnum; import org.nl.wms.storage_manage.rawmanage.service.structIvt.dao.StIvtStructivtYl; +import java.util.List; + /* * @author ZZQ * @Date 2023/5/4 19:49 @@ -18,11 +20,13 @@ public class StructIvtYLQuery extends BaseQuery { private String struct_id; + private String struct_code; + private String material_search; private String stor_id; - private String struct_search; + private List struct_search; private Boolean is_delete = false; diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/system_manage/controller/user/UserController.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/system_manage/controller/user/UserController.java index 6f6ae8c6..74b9c14c 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/system_manage/controller/user/UserController.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/system_manage/controller/user/UserController.java @@ -103,6 +103,7 @@ public class UserController { //("修改密码") @PostMapping(value = "/updatePass") + @Log("修改密码") public ResponseEntity updatePass(@RequestBody JSONObject passVo) throws Exception { userService.updatePass(passVo); return new ResponseEntity<>(HttpStatus.OK); diff --git a/mes/hd/nladmin-system/src/main/resources/sql/0901维护.sql b/mes/hd/nladmin-system/src/main/resources/sql/0901维护.sql index 85db3fd9..0b594572 100644 --- a/mes/hd/nladmin-system/src/main/resources/sql/0901维护.sql +++ b/mes/hd/nladmin-system/src/main/resources/sql/0901维护.sql @@ -14,6 +14,9 @@ INSERT INTO `hl_one_mes`.`sys_dict`(`dict_id`, `code`, `name`, `label`, `value`, INSERT INTO `hl_one_mes`.`sys_dict`(`dict_id`, `code`, `name`, `label`, `value`, `dict_sort`, `dict_type`, `para1`, `para2`, `para3`, `create_id`, `create_name`, `create_time`, `update_id`, `update_name`, `update_time`) VALUES ('1699310839531704320', 'MOVE_BILL_STATUS', '移库单状态', '完成', '99', 3, NULL, NULL, NULL, NULL, '1694303357524643840', '管理员', '2023-09-06 14:37:30', '1694303357524643840', '管理员', '2023-09-06 14:37:30'); INSERT INTO `hl_one_mes`.`sys_dict`(`dict_id`, `code`, `name`, `label`, `value`, `dict_sort`, `dict_type`, `para1`, `para2`, `para3`, `create_id`, `create_name`, `create_time`, `update_id`, `update_name`, `update_time`) VALUES ('1699310801569058816', 'MOVE_BILL_STATUS', '移库单状态', '移库中', '20', 2, NULL, NULL, NULL, NULL, '1694303357524643840', '管理员', '2023-09-06 14:37:21', '1694303357524643840', '管理员', '2023-09-06 14:37:21'); INSERT INTO `hl_one_mes`.`sys_dict`(`dict_id`, `code`, `name`, `label`, `value`, `dict_sort`, `dict_type`, `para1`, `para2`, `para3`, `create_id`, `create_name`, `create_time`, `update_id`, `update_name`, `update_time`) VALUES ('1699310669570117632', 'MOVE_BILL_STATUS', '移库单状态', '生成', '10', 1, NULL, NULL, NULL, NULL, '1694303357524643840', '管理员', '2023-09-06 14:36:49', '1694303357524643840', '管理员', '2023-09-06 14:36:49'); +-- 字典添加库存变动类型 +INSERT INTO `hl_one_mes`.`sys_dict`(`dict_id`, `code`, `name`, `label`, `value`, `dict_sort`, `dict_type`, `para1`, `para2`, `para3`, `create_id`, `create_name`, `create_time`, `update_id`, `update_name`, `update_time`) VALUES ('1701435666942005248', 'CHANGE_TYPE_SCODE', '变动类型', '加库存(移库)', '8', 8, NULL, NULL, NULL, NULL, '1694303357524643840', '管理员', '2023-09-12 11:20:48', '1694303357524643840', '管理员', '2023-09-12 11:20:48'); +INSERT INTO `hl_one_mes`.`sys_dict`(`dict_id`, `code`, `name`, `label`, `value`, `dict_sort`, `dict_type`, `para1`, `para2`, `para3`, `create_id`, `create_name`, `create_time`, `update_id`, `update_name`, `update_time`) VALUES ('1701435629621088256', 'CHANGE_TYPE_SCODE', '变动类型', '减库存(移库)', '7', 7, NULL, NULL, NULL, NULL, '1694303357524643840', '管理员', '2023-09-12 11:20:39', '1694303357524643840', '管理员', '2023-09-12 11:20:39'); diff --git a/mes/qd/src/views/wms/storage_manage/product/moveInv/AddDialog.vue b/mes/qd/src/views/wms/storage_manage/product/moveInv/AddDialog.vue index 65b9d0d5..cf4cce06 100644 --- a/mes/qd/src/views/wms/storage_manage/product/moveInv/AddDialog.vue +++ b/mes/qd/src/views/wms/storage_manage/product/moveInv/AddDialog.vue @@ -121,16 +121,16 @@ > 添加移库物料 - - 自动分配 - + + + + + + + + + + @@ -150,7 +150,7 @@ @@ -176,7 +176,7 @@ - diff --git a/mes/qd/src/views/wms/storage_manage/product/moveInv/AddStruct.vue b/mes/qd/src/views/wms/storage_manage/product/moveInv/AddStruct.vue index 6f0af4eb..8416dc08 100644 --- a/mes/qd/src/views/wms/storage_manage/product/moveInv/AddStruct.vue +++ b/mes/qd/src/views/wms/storage_manage/product/moveInv/AddStruct.vue @@ -91,7 +91,10 @@ export default { struct_code: '', remark: '', sect_id: '1528631043496742912', - stor_id: '1528627995269533696' + stor_id: '1528627995269533696', + is_used: true, + lock_type: '0', + emptyvehicle: true }, optShow: { add: false, diff --git a/mes/qd/src/views/wms/storage_manage/product/moveInv/MoveTaskDialog.vue b/mes/qd/src/views/wms/storage_manage/product/moveInv/MoveTaskDialog.vue index d40285a5..8831fb8b 100644 --- a/mes/qd/src/views/wms/storage_manage/product/moveInv/MoveTaskDialog.vue +++ b/mes/qd/src/views/wms/storage_manage/product/moveInv/MoveTaskDialog.vue @@ -70,6 +70,7 @@ @row-click="clcikRow" > + @@ -78,7 +79,7 @@ - + @@ -87,12 +88,14 @@ diff --git a/mes/qd/src/views/wms/storage_manage/product/moveInv/StructIvt.vue b/mes/qd/src/views/wms/storage_manage/product/moveInv/StructIvt.vue new file mode 100644 index 00000000..bf3298ee --- /dev/null +++ b/mes/qd/src/views/wms/storage_manage/product/moveInv/StructIvt.vue @@ -0,0 +1,177 @@ + + + + + diff --git a/mes/qd/src/views/wms/storage_manage/product/moveInv/index.vue b/mes/qd/src/views/wms/storage_manage/product/moveInv/index.vue index cd0ea4ab..ffab83ae 100644 --- a/mes/qd/src/views/wms/storage_manage/product/moveInv/index.vue +++ b/mes/qd/src/views/wms/storage_manage/product/moveInv/index.vue @@ -126,9 +126,9 @@ :disabled="confirm_flag" icon="el-icon-check" size="mini" - @click="confirm" + @click="cancel" > - 强制完成 + 取消单据