From 8ec3c4324af5ad86729da3acb52782fd05af2894 Mon Sep 17 00:00:00 2001 From: liuxy Date: Thu, 28 Sep 2023 16:13:47 +0800 Subject: [PATCH] =?UTF-8?q?add=EF=BC=9A=E4=B8=89=E7=BA=BF=E5=8D=8A?= =?UTF-8?q?=E6=88=90=E5=93=81=E7=A7=BB=E5=BA=93?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/org/nl/common/enums/AcsTaskEnum.java | 1 + .../storage_manage/semimanage/TASKEnum.java | 5 + .../moveIvt/StIvtMoveinvHrBcpController.java | 73 +++ .../StIvtMoveinvdtlHrBcpController.java | 32 ++ .../StIvtStructivtHrBcpController.java | 8 + .../StIvtIostorinvHrBcpInServiceImpl.java | 2 +- .../moveInv/IStIvtMoveinvHrBcpService.java | 35 ++ .../moveInv/IStIvtMoveinvdtlHrBcpService.java | 23 + .../moveInv/dao/StIvtMoveinvHrBcp.java | 143 ++++++ .../moveInv/dao/StIvtMoveinvdtlHrBcp.java | 198 ++++++++ .../dao/mapper/StIvtMoveinvHrBcpMapper.java | 16 + .../mapper/StIvtMoveinvdtlHrBcpMapper.java | 20 + .../mapper/xml/StIvtMoveinvHrBcpMapper.xml | 5 + .../mapper/xml/StIvtMoveinvdtlHrBcpMapper.xml | 15 + .../moveInv/dto/MoveInvHrBcpQuery.java | 34 ++ .../impl/StIvtMoveinvHrBcpServiceImpl.java | 455 ++++++++++++++++++ .../impl/StIvtMoveinvdtlHrBcpServiceImpl.java | 108 +++++ .../IStIvtStructivtHrBcpService.java | 3 + .../dao/mapper/StIvtStructivtHrBcpMapper.java | 3 + .../mapper/xml/StIvtStructivtHrBcpMapper.xml | 40 ++ .../impl/StIvtStructivtHrBcpServiceImpl.java | 11 + .../semiproductHrMoveIvt/AddDialog.vue | 362 ++++++++++++++ .../semiproductHrMoveIvt/AddStruct.vue | 183 +++++++ .../semiproductHrMoveIvt/MoveTaskDialog.vue | 210 ++++++++ .../semiproductHrMoveIvt/StructIvt.vue | 182 +++++++ .../semiproductHrMoveIvt/index.vue | 360 ++++++++++++++ .../semiproductHrMoveIvt/moveInv.js | 75 +++ 27 files changed, 2601 insertions(+), 1 deletion(-) create mode 100644 mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanagehr/controller/moveIvt/StIvtMoveinvHrBcpController.java create mode 100644 mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanagehr/controller/moveIvt/StIvtMoveinvdtlHrBcpController.java create mode 100644 mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanagehr/service/moveInv/IStIvtMoveinvHrBcpService.java create mode 100644 mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanagehr/service/moveInv/IStIvtMoveinvdtlHrBcpService.java create mode 100644 mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanagehr/service/moveInv/dao/StIvtMoveinvHrBcp.java create mode 100644 mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanagehr/service/moveInv/dao/StIvtMoveinvdtlHrBcp.java create mode 100644 mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanagehr/service/moveInv/dao/mapper/StIvtMoveinvHrBcpMapper.java create mode 100644 mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanagehr/service/moveInv/dao/mapper/StIvtMoveinvdtlHrBcpMapper.java create mode 100644 mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanagehr/service/moveInv/dao/mapper/xml/StIvtMoveinvHrBcpMapper.xml create mode 100644 mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanagehr/service/moveInv/dao/mapper/xml/StIvtMoveinvdtlHrBcpMapper.xml create mode 100644 mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanagehr/service/moveInv/dto/MoveInvHrBcpQuery.java create mode 100644 mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanagehr/service/moveInv/impl/StIvtMoveinvHrBcpServiceImpl.java create mode 100644 mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanagehr/service/moveInv/impl/StIvtMoveinvdtlHrBcpServiceImpl.java create mode 100644 mes/qd/src/views/wms/storage_manage/semiproducthr/semiproductHrMoveIvt/AddDialog.vue create mode 100644 mes/qd/src/views/wms/storage_manage/semiproducthr/semiproductHrMoveIvt/AddStruct.vue create mode 100644 mes/qd/src/views/wms/storage_manage/semiproducthr/semiproductHrMoveIvt/MoveTaskDialog.vue create mode 100644 mes/qd/src/views/wms/storage_manage/semiproducthr/semiproductHrMoveIvt/StructIvt.vue create mode 100644 mes/qd/src/views/wms/storage_manage/semiproducthr/semiproductHrMoveIvt/index.vue create mode 100644 mes/qd/src/views/wms/storage_manage/semiproducthr/semiproductHrMoveIvt/moveInv.js 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 59f55a06..10a64b19 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 @@ -44,6 +44,7 @@ public enum AcsTaskEnum { TASK_STRUCT_BCP_EMPOUT("17","半成品-空托盘出库"), TASK_STRUCT_CP_MOVE("18","成品-移库"), TASK_STRUCT_BCP_MOVE("19","半成品-移库"), + TASK_STRUCT_BCP_HR_MOVE("20","三线半成品-移库"), TASK_STRUCT_HR_IN("26","入库-海柔半成品-生产入库"), TASK_STRUCT_HR_OUT("27","出库-海柔半成品-生产出库"), diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanage/TASKEnum.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanage/TASKEnum.java index 326535bf..d5de08c6 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanage/TASKEnum.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanage/TASKEnum.java @@ -21,6 +21,7 @@ import org.nl.wms.storage_manage.semimanagehr.service.check.IStIvtCheckmstHrBcpS import org.nl.wms.storage_manage.semimanagehr.service.iostorInv.IStIvtIostorinvEmpBcpService; import org.nl.wms.storage_manage.semimanagehr.service.iostorInv.IStIvtIostorinvHrBcpInService; import org.nl.wms.storage_manage.semimanagehr.service.iostorInv.IStIvtIostorinvHrBcpOutService; +import org.nl.wms.storage_manage.semimanagehr.service.moveInv.IStIvtMoveinvHrBcpService; import java.util.function.Consumer; import java.util.function.Predicate; @@ -101,6 +102,10 @@ public enum TASKEnum implements FunctionStrategy { IStIvtIostorinvEmpBcpService bean = SpringContextHolder.getBean(IStIvtIostorinvEmpBcpService.class); bean.taskOperateOut(form); }), + HR_BCP_EMP_MOVE_TASK(type -> AcsTaskEnum.TASK_STRUCT_BCP_HR_MOVE.getCode().equals(type), form -> { + IStIvtMoveinvHrBcpService bean = SpringContextHolder.getBean(IStIvtMoveinvHrBcpService.class); + bean.taskOperate(form); + }), ; diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanagehr/controller/moveIvt/StIvtMoveinvHrBcpController.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanagehr/controller/moveIvt/StIvtMoveinvHrBcpController.java new file mode 100644 index 00000000..f700451b --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanagehr/controller/moveIvt/StIvtMoveinvHrBcpController.java @@ -0,0 +1,73 @@ +package org.nl.wms.storage_manage.semimanagehr.controller.moveIvt; + + +import com.alibaba.fastjson.JSONObject; +import org.nl.common.TableDataInfo; +import org.nl.common.anno.Log; +import org.nl.common.domain.query.PageQuery; +import org.nl.wms.storage_manage.semimanagehr.service.moveInv.IStIvtMoveinvHrBcpService; +import org.nl.wms.storage_manage.semimanagehr.service.moveInv.IStIvtMoveinvdtlHrBcpService; +import org.nl.wms.storage_manage.semimanagehr.service.moveInv.dao.StIvtMoveinvHrBcp; +import org.nl.wms.storage_manage.semimanagehr.service.moveInv.dto.MoveInvHrBcpQuery; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.*; + +/** + *

+ * 移库单主表 前端控制器 + *

+ * + * @author generator + * @since 2023-05-10 + */ +@RestController +@RequestMapping("/api/stIvtMoveinvHrBcp") +public class StIvtMoveinvHrBcpController { + + @Autowired + private IStIvtMoveinvHrBcpService moveinvHrBcpService; + + @Autowired + private IStIvtMoveinvdtlHrBcpService iStIvtMoveinvdtlHrBcpService; + + @GetMapping + @Log("查询移库主表") + //("查询盘点单主表") + public ResponseEntity query(MoveInvHrBcpQuery query, PageQuery page) { + return new ResponseEntity<>(TableDataInfo.build(moveinvHrBcpService.page(page.build(StIvtMoveinvHrBcp.class),query.build())), HttpStatus.OK); + } + + @PostMapping + @Log("创建移库单") + //("创建盘点单") + public ResponseEntity create(@RequestBody JSONObject whereJson) { + moveinvHrBcpService.create(whereJson); + return new ResponseEntity<>(TableDataInfo.build(),HttpStatus.OK); + } + + @PostMapping("/getMoveDtl") + @Log("查询盘点明细") + //("查询盘点明细") + public ResponseEntity getCheckDtl(@RequestBody JSONObject whereJson) { + return new ResponseEntity<>(TableDataInfo.build(iStIvtMoveinvdtlHrBcpService.listJoinTask(whereJson.getString("moveinv_id"))), HttpStatus.OK); + } + + @PostMapping("/update") + @Log("更新单据") + //("查询盘点明细") + public ResponseEntity update(@RequestBody JSONObject whereJson) { + moveinvHrBcpService.update(whereJson); + return new ResponseEntity<>(TableDataInfo.build(),HttpStatus.OK); + } + + @PostMapping("/cancel") + @Log("取消单据") + //("查询盘点明细") + public ResponseEntity cancel(@RequestBody JSONObject whereJson) { + moveinvHrBcpService.cancel(whereJson); + return new ResponseEntity<>(TableDataInfo.build(),HttpStatus.OK); + } +} + diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanagehr/controller/moveIvt/StIvtMoveinvdtlHrBcpController.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanagehr/controller/moveIvt/StIvtMoveinvdtlHrBcpController.java new file mode 100644 index 00000000..71dd3ab1 --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanagehr/controller/moveIvt/StIvtMoveinvdtlHrBcpController.java @@ -0,0 +1,32 @@ +package org.nl.wms.storage_manage.semimanagehr.controller.moveIvt; + + +import com.alibaba.fastjson.JSONObject; +import org.nl.wms.storage_manage.semimanagehr.service.moveInv.IStIvtMoveinvdtlHrBcpService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.*; + +/** + *

+ * 移库单明细表 前端控制器 + *

+ * + * @author generator + * @since 2023-05-10 + */ +@RestController +@RequestMapping("/api/stIvtMoveinvdtlHrBcp") +public class StIvtMoveinvdtlHrBcpController { + + @Autowired + private IStIvtMoveinvdtlHrBcpService iStIvtMoveinvdtlHrBcpService; + + @PostMapping("/task/{option}") + public ResponseEntity optionTask(@RequestBody JSONObject form, @PathVariable String option){ + iStIvtMoveinvdtlHrBcpService.taskOption(form,option); + return new ResponseEntity<>(HttpStatus.OK); + }; +} + diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanagehr/controller/structLvt/StIvtStructivtHrBcpController.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanagehr/controller/structLvt/StIvtStructivtHrBcpController.java index d90a6de9..f4458078 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanagehr/controller/structLvt/StIvtStructivtHrBcpController.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanagehr/controller/structLvt/StIvtStructivtHrBcpController.java @@ -8,6 +8,7 @@ import org.nl.common.anno.Log; import org.nl.common.domain.query.PageQuery; import org.nl.common.utils.ListOf; import org.nl.common.utils.MapOf; +import org.nl.wms.storage_manage.rawmanage.service.structIvt.dto.StructIvtYLQuery; import org.nl.wms.storage_manage.semimanage.service.structIvt.dto.StIvtStructivtBcpVo; import org.nl.wms.storage_manage.semimanagehr.service.structIvt.IStIvtStructivtHrBcpService; import org.nl.wms.storage_manage.semimanagehr.service.structIvt.dto.StructIvtHrBcpQuery; @@ -59,6 +60,13 @@ public class StIvtStructivtHrBcpController { return new ResponseEntity<>(bcpService.getBcpIvt(query, page), HttpStatus.OK); } + @GetMapping("/getBcpMoveIvt") + @Log("查询可用的半成品库存(移库)") + //("查询可用的半成品库存") + public ResponseEntity getBcpIvt(StructIvtYLQuery query, PageQuery page) { + return new ResponseEntity<>(bcpService.getBcpMoveIvt(query, page), HttpStatus.OK); + } + @PostMapping("/getBcpIvtInfo") @Log("查询可用的半成品库存") //("查询可用的半成品库存") diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanagehr/service/iostorInv/impl/StIvtIostorinvHrBcpInServiceImpl.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanagehr/service/iostorInv/impl/StIvtIostorinvHrBcpInServiceImpl.java index dca23227..ed3b7ff4 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanagehr/service/iostorInv/impl/StIvtIostorinvHrBcpInServiceImpl.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanagehr/service/iostorInv/impl/StIvtIostorinvHrBcpInServiceImpl.java @@ -324,7 +324,7 @@ public class StIvtIostorinvHrBcpInServiceImpl extends ServiceImpl().lambda() - .eq(StIvtSectattr::getSect_name, "海柔半成品库区") + .eq(StIvtSectattr::getSect_code, "HKQ001") ); JSONObject jo = new JSONObject(); jo.put("sect_id", sect.getSect_id()); diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanagehr/service/moveInv/IStIvtMoveinvHrBcpService.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanagehr/service/moveInv/IStIvtMoveinvHrBcpService.java new file mode 100644 index 00000000..e3aa2231 --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanagehr/service/moveInv/IStIvtMoveinvHrBcpService.java @@ -0,0 +1,35 @@ +package org.nl.wms.storage_manage.semimanagehr.service.moveInv; + +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.extension.service.IService; +import org.nl.wms.storage_manage.semimanagehr.service.moveInv.dao.StIvtMoveinvHrBcp; + +/** + *

+ * 移库单主表 服务类 + *

+ * + * @author generator + * @since 2023-05-10 + */ +public interface IStIvtMoveinvHrBcpService extends IService { + /** + * 新增 + * @param form + */ + void create(JSONObject form); + + /** + * 更新 + * @param form + */ + void update(JSONObject form); + + void cancel(JSONObject form); + + /** + * 任务回调处理 + * @param form + */ + void taskOperate(JSONObject form); +} diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanagehr/service/moveInv/IStIvtMoveinvdtlHrBcpService.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanagehr/service/moveInv/IStIvtMoveinvdtlHrBcpService.java new file mode 100644 index 00000000..3394a130 --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanagehr/service/moveInv/IStIvtMoveinvdtlHrBcpService.java @@ -0,0 +1,23 @@ +package org.nl.wms.storage_manage.semimanagehr.service.moveInv; + +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.extension.service.IService; +import org.nl.wms.storage_manage.semimanagehr.service.moveInv.dao.StIvtMoveinvdtlHrBcp; + +import java.util.List; +import java.util.Map; + +/** + *

+ * 移库单明细表 服务类 + *

+ * + * @author generator + * @since 2023-05-10 + */ +public interface IStIvtMoveinvdtlHrBcpService extends IService { + + List listJoinTask(String moveinv_id); + + void taskOption(JSONObject form, String option); +} diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanagehr/service/moveInv/dao/StIvtMoveinvHrBcp.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanagehr/service/moveInv/dao/StIvtMoveinvHrBcp.java new file mode 100644 index 00000000..5e761538 --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanagehr/service/moveInv/dao/StIvtMoveinvHrBcp.java @@ -0,0 +1,143 @@ +package org.nl.wms.storage_manage.semimanagehr.service.moveInv.dao; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serializable; +import java.math.BigDecimal; + +/** + *

+ * 移库单主表 + *

+ * + * @author generator + * @since 2023-05-10 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@TableName("st_ivt_moveinv_hr_bcp") +public class StIvtMoveinvHrBcp implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 移库单标识 + */ + @TableId(value = "moveinv_id") + private String moveinv_id; + + /** + * 单据编号 + */ + private String bill_code; + + /** + * 业务类型 + */ + private String buss_type; + + /** + * 单据类型 + */ + private String bill_type; + + /** + * 业务日期 + */ + private String biz_date; + + /** + * 仓库标识 + */ + private String stor_id; + + /** + * 仓库编码 + */ + private String stor_code; + + /** + * 仓库名称 + */ + private String stor_name; + + /** + * 总数量 + */ + private BigDecimal total_qty; + + /** + * 明细数 + */ + private Integer dtl_count; + + /** + * 单据状态 + */ + private String bill_status; + + /** + * 备注 + */ + private String remark; + + /** + * 生成方式 + */ + private String create_mode; + + /** + * 制单人 + */ + private String create_id; + + /** + * 制单人姓名 + */ + private String create_name; + + /** + * 制单时间 + */ + private String create_time; + + /** + * 修改人 + */ + private String update_id; + + /** + * 修改人姓名 + */ + private String update_name; + + /** + * 修改时间 + */ + private String update_time; + + /** + * 部门ID + */ + private String sysdeptid; + + /** + * 公司ID + */ + private String syscompanyid; + + /** + * 是否删除 + */ + private Boolean is_delete; + + /** + * 车间标识 + */ + private String product_area; + + +} diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanagehr/service/moveInv/dao/StIvtMoveinvdtlHrBcp.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanagehr/service/moveInv/dao/StIvtMoveinvdtlHrBcp.java new file mode 100644 index 00000000..7eeb53c4 --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanagehr/service/moveInv/dao/StIvtMoveinvdtlHrBcp.java @@ -0,0 +1,198 @@ +package org.nl.wms.storage_manage.semimanagehr.service.moveInv.dao; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serializable; +import java.math.BigDecimal; + +/** + *

+ * 移库单明细表 + *

+ * + * @author generator + * @since 2023-05-10 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@TableName("st_ivt_moveinvdtl_hr_bcp") +public class StIvtMoveinvdtlHrBcp implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 移库单明细标识 + */ + @TableId(value = "moveinvdtl_id") + private String moveinvdtl_id; + + /** + * 移库单标识 + */ + private String moveinv_id; + + /** + * 明细序号 + */ + private Integer seq_no; + + /** + * 转出库区标识 + */ + private String turnout_sect_id; + + /** + * 转出库区编码 + */ + private String turnout_sect_code; + + /** + * 转出库区名称 + */ + private String turnout_sect_name; + + /** + * 转出仓位标识 + */ + private String turnout_struct_id; + + /** + * 转出仓位编码 + */ + private String turnout_struct_code; + + /** + * 转出仓位名称 + */ + private String turnout_struct_name; + + /** + * 物料标识 + */ + private String material_id; + private String material_code; + + /** + * 批次 + */ + private String pcsn; + + /** + * 品质类型 + */ + private String quality_scode; + + /** + * 库存等级 + */ + private String ivt_level; + + /** + * 是否可用 + */ + private Boolean is_active; + + /** + * 数量计量单位标识 + */ + private String qty_unit_id; + + /** + * 数量计量单位名称 + */ + private String qty_unit_name; + + /** + * 数量 + */ + private BigDecimal qty; + /** + * 单重 + */ + private BigDecimal unit_weight; + + /** + * 转入库区标识 + */ + private String turnin_sect_id; + + /** + * 转入库区编码 + */ + private String turnin_sect_code; + + /** + * 转入库区名称 + */ + private String turnin_sect_name; + + /** + * 转入仓位标识 + */ + private String turnin_struct_id; + + /** + * 转入仓位编码 + */ + private String turnin_struct_code; + + /** + * 转入仓位名称 + */ + private String turnin_struct_name; + + /** + * 执行状态 + */ + private String bill_status; + + /** + * 任务标识 + */ + private String task_id; + + /** + * 存储载具标识 + */ + private String storagevehicle_id; + + /** + * 存储载具编码 + */ + private String storagevehicle_code; + + /** + * 是否已下发 + */ + private Boolean is_issued; + + /** + * 来源单据明细标识 + */ + private String source_billdtl_id; + + /** + * 来源单据类型 + */ + private String source_bill_type; + + /** + * 来源单编号 + */ + private String source_bill_code; + + /** + * 来源单表名 + */ + private String source_bill_table; + + /** + * 备注 + */ + private String remark; + + +} diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanagehr/service/moveInv/dao/mapper/StIvtMoveinvHrBcpMapper.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanagehr/service/moveInv/dao/mapper/StIvtMoveinvHrBcpMapper.java new file mode 100644 index 00000000..e61e1d51 --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanagehr/service/moveInv/dao/mapper/StIvtMoveinvHrBcpMapper.java @@ -0,0 +1,16 @@ +package org.nl.wms.storage_manage.semimanagehr.service.moveInv.dao.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.nl.wms.storage_manage.semimanagehr.service.moveInv.dao.StIvtMoveinvHrBcp; + +/** + *

+ * 移库单主表 Mapper 接口 + *

+ * + * @author generator + * @since 2023-05-10 + */ +public interface StIvtMoveinvHrBcpMapper extends BaseMapper { + +} diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanagehr/service/moveInv/dao/mapper/StIvtMoveinvdtlHrBcpMapper.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanagehr/service/moveInv/dao/mapper/StIvtMoveinvdtlHrBcpMapper.java new file mode 100644 index 00000000..f1c36418 --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanagehr/service/moveInv/dao/mapper/StIvtMoveinvdtlHrBcpMapper.java @@ -0,0 +1,20 @@ +package org.nl.wms.storage_manage.semimanagehr.service.moveInv.dao.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.nl.wms.storage_manage.semimanagehr.service.moveInv.dao.StIvtMoveinvdtlHrBcp; + +import java.util.List; +import java.util.Map; + +/** + *

+ * 移库单明细表 Mapper 接口 + *

+ * + * @author generator + * @since 2023-05-10 + */ +public interface StIvtMoveinvdtlHrBcpMapper extends BaseMapper { + + List listJoinTask(String moveinv_id); +} diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanagehr/service/moveInv/dao/mapper/xml/StIvtMoveinvHrBcpMapper.xml b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanagehr/service/moveInv/dao/mapper/xml/StIvtMoveinvHrBcpMapper.xml new file mode 100644 index 00000000..3dca0ce6 --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanagehr/service/moveInv/dao/mapper/xml/StIvtMoveinvHrBcpMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanagehr/service/moveInv/dao/mapper/xml/StIvtMoveinvdtlHrBcpMapper.xml b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanagehr/service/moveInv/dao/mapper/xml/StIvtMoveinvdtlHrBcpMapper.xml new file mode 100644 index 00000000..15c34b18 --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanagehr/service/moveInv/dao/mapper/xml/StIvtMoveinvdtlHrBcpMapper.xml @@ -0,0 +1,15 @@ + + + + + diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanagehr/service/moveInv/dto/MoveInvHrBcpQuery.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanagehr/service/moveInv/dto/MoveInvHrBcpQuery.java new file mode 100644 index 00000000..7699f676 --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanagehr/service/moveInv/dto/MoveInvHrBcpQuery.java @@ -0,0 +1,34 @@ +package org.nl.wms.storage_manage.semimanagehr.service.moveInv.dto; + +import lombok.Data; +import org.nl.common.domain.query.BaseQuery; +import org.nl.common.domain.query.QParam; +import org.nl.common.enums.QueryTEnum; +import org.nl.wms.storage_manage.semimanagehr.service.moveInv.dao.StIvtMoveinvHrBcp; + +/* + * @author ZZQ + * @Date 2023/5/4 19:49 + */ +@Data +public class MoveInvHrBcpQuery extends BaseQuery { + + + private String stor_id; + + private String bill_status; + + private String bill_type; + + private String bill_code; + + private Boolean is_delete = false; + + + @Override + public void paramMapping() { + super.doP.put("bill_code", QParam.builder().k(new String[]{"bill_code"}).type(QueryTEnum.LK).build()); + } + + +} diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanagehr/service/moveInv/impl/StIvtMoveinvHrBcpServiceImpl.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanagehr/service/moveInv/impl/StIvtMoveinvHrBcpServiceImpl.java new file mode 100644 index 00000000..912f18ac --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanagehr/service/moveInv/impl/StIvtMoveinvHrBcpServiceImpl.java @@ -0,0 +1,455 @@ +package org.nl.wms.storage_manage.semimanagehr.service.moveInv.impl; + +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.ObjectUtil; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONArray; +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; +import org.nl.common.utils.IdUtil; +import org.nl.common.utils.SecurityUtils; +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.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.IOSEnum; +import org.nl.wms.storage_manage.IVTEnum; +import org.nl.wms.storage_manage.MoveInvEnum; +import org.nl.wms.storage_manage.productmanage.util.ChangeIvtUtil; +import org.nl.wms.storage_manage.semimanage.service.moveInv.dao.StIvtMoveinvdtlBcp; +import org.nl.wms.storage_manage.semimanagehr.service.moveInv.IStIvtMoveinvHrBcpService; +import org.nl.wms.storage_manage.semimanagehr.service.moveInv.IStIvtMoveinvdtlHrBcpService; +import org.nl.wms.storage_manage.semimanagehr.service.moveInv.dao.StIvtMoveinvHrBcp; +import org.nl.wms.storage_manage.semimanagehr.service.moveInv.dao.StIvtMoveinvdtlHrBcp; +import org.nl.wms.storage_manage.semimanagehr.service.moveInv.dao.mapper.StIvtMoveinvHrBcpMapper; +import org.nl.wms.storage_manage.semimanagehr.service.structIvt.IStIvtStructivtHrBcpService; +import org.nl.wms.storage_manage.semimanagehr.service.structIvt.IStIvtStructivtflowHrService; +import org.nl.wms.storage_manage.semimanagehr.service.structIvt.dao.StIvtStructivtHrBcp; +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.math.BigDecimal; +import java.util.ArrayList; +import java.util.HashSet; +import java.util.List; +import java.util.Set; +import java.util.stream.Collectors; + +/** + *

+ * 移库单主表 服务实现类 + *

+ * + * @author generator + * @since 2023-05-10 + */ +@Service +public class StIvtMoveinvHrBcpServiceImpl extends ServiceImpl implements IStIvtMoveinvHrBcpService { + + @Autowired + private IStIvtMoveinvdtlHrBcpService iStIvtMoveinvdtlHrBcpService; // 移库明细服务 + + @Autowired + private IStIvtStructattrService structattrService; // 仓位服务 + + @Autowired + private IStIvtStructivtflowHrService iStIvtStructivtflowService; // 库存变动服务 + + @Autowired + private IStIvtStructivtHrBcpService iStIvtStructivtHrBcpService; //库存服务 + + @Autowired + private ISchBaseTaskService taskService; // 任务服务 + + @Override + @Transactional + public void create(JSONObject form) { + JSONArray rows = form.getJSONArray("tableData"); + if (ObjectUtil.isEmpty(rows)) throw new BadRequestException("请求参数不能为空"); + + // 调用主表 插入/更新方法 + StIvtMoveinvHrBcp mst = new StIvtMoveinvHrBcp(); + + // 新增 + mst.setMoveinv_id(IdUtil.getStringId()); + mst.setBill_code(CodeUtil.getNewCode("BCP_MOVE_CODE")); + mst.setBuss_type(form.getString("buss_type")); + mst.setBill_type(form.getString("buss_type")); + mst.setStor_id(form.getString("stor_id")); + mst.setStor_name(form.getString("stor_name")); + mst.setStor_code(form.getString("stor_code")); + mst.setBiz_date(DateUtil.today()); + mst.setBill_status(MoveInvEnum.BILL_STATUS.code("生成")); + mst.setDtl_count(form.getInteger("dtl_num")); + mst.setCreate_id(SecurityUtils.getCurrentUserId()); + mst.setCreate_name(SecurityUtils.getCurrentNickName()); + mst.setCreate_time(DateUtil.now()); + mst.setIs_delete(false); + mst.setRemark(form.getString("remark")); + + //调用明细表 插入方法 + List itemList = new ArrayList<>(); + Set lockInStructList = new HashSet<>(); + Set lockOutStructList = new HashSet<>(); + BigDecimal total = new BigDecimal(0); + + for (int i = 0; i < rows.size(); i++) { + JSONObject item = rows.getJSONObject(i); + + if (StringUtils.isEmpty(item.getString("turnin_struct_id"))){ + throw new BadRequestException("移入货位没有配置齐全"); + } + + StIvtMoveinvdtlHrBcp moveinvdtlCp = new StIvtMoveinvdtlHrBcp(); + moveinvdtlCp.setMoveinv_id(mst.getMoveinv_id()); + moveinvdtlCp.setMoveinvdtl_id(IdUtil.getStringId()); + moveinvdtlCp.setSeq_no(i+1); + moveinvdtlCp.setBill_status(mst.getBill_status()); + moveinvdtlCp.setSource_bill_type(item.getString("bill_type")); + + material: { + moveinvdtlCp.setIs_active(true); + moveinvdtlCp.setIvt_level(IVTEnum.IVT_LEVEL.code("一级")); + moveinvdtlCp.setIs_issued(true); + moveinvdtlCp.setMaterial_id(item.getString("material_id")); + moveinvdtlCp.setMaterial_code(item.getString("material_code")); + moveinvdtlCp.setQty(item.getBigDecimal("canuse_qty")); + moveinvdtlCp.setUnit_weight(item.getBigDecimal("unit_weight")); + moveinvdtlCp.setPcsn(item.getString("pcsn")); + moveinvdtlCp.setQty_unit_id(item.getString("qty_unit_id")); + moveinvdtlCp.setQty_unit_name(item.getString("qty_unit_name")); + moveinvdtlCp.setQuality_scode(item.getString("quality_scode")); + moveinvdtlCp.setStoragevehicle_code(item.getString("storagevehicle_code")); + } + + target: { + moveinvdtlCp.setTurnin_sect_code(item.getString("sect_code")); + moveinvdtlCp.setTurnin_sect_id(item.getString("sect_id")); + moveinvdtlCp.setTurnin_sect_name(item.getString("sect_name")); + moveinvdtlCp.setTurnin_struct_code(item.getString("turnin_struct_code")); + moveinvdtlCp.setTurnin_struct_name(item.getString("turnin_struct_name")); + moveinvdtlCp.setTurnin_struct_id(item.getString("turnin_struct_id")); + } + + source:{ + moveinvdtlCp.setTurnout_sect_code(item.getString("sect_code")); + moveinvdtlCp.setTurnout_sect_id(item.getString("sect_id")); + moveinvdtlCp.setTurnout_sect_name(item.getString("sect_name")); + moveinvdtlCp.setTurnout_struct_code(item.getString("struct_code")); + moveinvdtlCp.setTurnout_struct_name(item.getString("struct_name")); + moveinvdtlCp.setTurnout_struct_id(item.getString("struct_id")); + } + + total.add(moveinvdtlCp.getQty()); + itemList.add(moveinvdtlCp); + lockInStructList.add(moveinvdtlCp.getTurnin_struct_code()); + lockOutStructList.add(moveinvdtlCp.getTurnout_struct_code()); + } + + if (lockInStructList.size()!=lockOutStructList.size()){ + throw new BadRequestException("不允许选择相同货位进行分配"); + } + + lockInStructList.addAll(lockOutStructList); + + //校验点位有没有锁定 + List 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(","))); + } + + mst.setTotal_qty(total); + this.save(mst); + iStIvtMoveinvdtlHrBcpService.saveBatch(itemList); + lockInStructList.addAll(lockOutStructList); + structattrService.update( + new UpdateWrapper().lambda() + .set(StIvtStructattr::getLock_type, IOSEnum.LOCK_TYPE.code("移库锁")) + .set(StIvtStructattr::getInv_code,mst.getBill_code()) + .in(StIvtStructattr::getStruct_code, lockInStructList) + ); + } + + + @Override + @Transactional + public void update(JSONObject form) { + JSONArray rows = form.getJSONArray("tableData"); + if (ObjectUtil.isEmpty(rows)) throw new BadRequestException("请求参数不能为空"); + + List dtlList = iStIvtMoveinvdtlHrBcpService.list(new QueryWrapper().eq("moveinv_id", form.getString("moveinv_id"))); + //调用明细表 插入方法 + Set unLockStructList = new HashSet<>(); + for (StIvtMoveinvdtlHrBcp cp : dtlList) { + 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) + ); + + List itemList = new ArrayList<>(); + Set lockOutStructList = new HashSet<>(); + Set lockInStructList = new HashSet<>(); + + for (int i = 0; i < rows.size(); i++) { + JSONObject item = rows.getJSONObject(i); + StIvtMoveinvdtlHrBcp moveinvdtlCp = JSONObject.parseObject(JSON.toJSONString(item), StIvtMoveinvdtlHrBcp.class); + + source:{ + moveinvdtlCp.setTurnout_struct_code(item.getString("struct_code")); + moveinvdtlCp.setTurnout_struct_name(item.getString("struct_name")); + moveinvdtlCp.setTurnout_struct_id(item.getString("struct_id")); + } + + itemList.add(moveinvdtlCp); + lockInStructList.add(moveinvdtlCp.getTurnin_struct_code()); + lockOutStructList.add(moveinvdtlCp.getTurnout_struct_code()); + } + + if (lockOutStructList.size()!=lockInStructList.size()){ + throw new BadRequestException("不允许选择相同货位进行分配"); + } + + lockInStructList.addAll(lockOutStructList); + //校验点位有没有锁定 + List 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(","))); + } + + iStIvtMoveinvdtlHrBcpService.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, lockInStructList) + ); + } + + @Override + @Transactional + public void cancel(JSONObject form) { + List dtlList = iStIvtMoveinvdtlHrBcpService.list(new QueryWrapper().eq("moveinv_id", form.getString("moveinv_id"))); + + //调用明细表 插入方法 + Set unLockStructList = new HashSet<>(); + + for (StIvtMoveinvdtlHrBcp 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) + ); + + iStIvtMoveinvdtlHrBcpService.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) { + AcsTaskEnum status = AcsTaskEnum.getType(form.getString("status"),"status_"); + + List dtls = iStIvtMoveinvdtlHrBcpService.list(new QueryWrapper() + .eq("task_id", form.getString("task_id"))); + + if (CollectionUtils.isEmpty(dtls)){ + return; + } + + StIvtMoveinvHrBcp 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); + + // 更新任务 + taskService.update( + new UpdateWrapper().lambda() + .eq(SchBaseTask::getTask_id, form.getString("task_id")) + .set(SchBaseTask::getTask_status, TaskStatusEnum.EXECUTING.getCode()) + ); + + 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 (StIvtMoveinvdtlHrBcp dtl : dtls) { + if (!dtl.getBill_status().equals(MoveInvEnum.BILL_STATUS.code("完成"))){ + //新增库存 + StIvtStructivtHrBcp ivtDao = StIvtStructivtHrBcp.builder() + .struct_id(dtl.getTurnin_struct_id()) + .struct_code(dtl.getTurnin_struct_code()) + .struct_name(dtl.getTurnin_struct_name()) + .material_id(dtl.getMaterial_id()) + .quality_scode(dtl.getQuality_scode()) + .pcsn(dtl.getPcsn()) + .ivt_level(dtl.getIvt_level()) + .is_active(dtl.getIs_active()) + .qty_unit_id("2") + .instorage_time(DateUtil.now()) + .stor_id(mst.getStor_id()) + .canuse_qty(dtl.getQty()) + .workshop_id(mst.getProduct_area()) + .unit_weight(dtl.getUnit_weight()) + .build(); + 新增库存: { + iStIvtStructivtHrBcpService.save(ivtDao); + // 插入库存变动记录 + JSONObject param = JSONObject.parseObject(JSON.toJSONString(ivtDao)); + param.put("change_type", ChangeIvtUtil.ADD_SUBIVT_QTY); + param.put("change_qty", ivtDao.getCanuse_qty()); + param.put("result_qty", ivtDao.getCanuse_qty()); + param.put("bill_code",mst.getBill_code()); + param.put("inv_id",mst.getMoveinv_id()); + param.put("bill_type_scode",IOSEnum.IO_TYPE.code("移库")); + iStIvtStructivtflowService.insetIvtChange(param); + //维护载具 + structattrService.update(new UpdateWrapper().lambda() + .eq(StIvtStructattr::getStruct_code, dtl.getTurnin_struct_code()) + .set(StIvtStructattr::getLock_type, IOSEnum.LOCK_TYPE.code("未锁定")) + .set(StIvtStructattr::getIs_emptyvehicle,false) + .set(StIvtStructattr::getInv_code, "") + .set(StIvtStructattr::getStoragevehicle_code, dtl.getStoragevehicle_code())); + } + + 减库存:{ + iStIvtStructivtHrBcpService.remove(new QueryWrapper().eq("struct_id", dtl.getTurnout_struct_id())); + ivtDao.setStruct_id(dtl.getTurnout_struct_id()); + ivtDao.setStruct_code(dtl.getTurnout_struct_code()); + ivtDao.setStruct_name(dtl.getTurnout_struct_name()); + JSONObject param = JSONObject.parseObject(JSON.toJSONString(ivtDao)); + param.put("change_type", ChangeIvtUtil.SUB_SUBIVT_QTY); + param.put("change_qty", dtl.getQty()); + param.put("result_qty", 0); + param.put("bill_code",mst.getBill_code()); + param.put("inv_id",mst.getMoveinv_id()); + param.put("bill_type_scode",IOSEnum.IO_TYPE.code("移库")); + iStIvtStructivtflowService.insetIvtChange(param); + //维护载具 + structattrService.update(new UpdateWrapper().lambda() + .eq(StIvtStructattr::getStruct_code, dtl.getTurnout_struct_code()) + .set(StIvtStructattr::getLock_type, IOSEnum.LOCK_TYPE.code("未锁定")) + .set(StIvtStructattr::getInv_code,"") + .set(StIvtStructattr::getIs_emptyvehicle,false) + .set(StIvtStructattr::getStoragevehicle_code, "")); + } + } + } + + // 解锁仓位 + 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()) + ); + + //更新明细 + iStIvtMoveinvdtlHrBcpService.update(new UpdateWrapper() + .set("bill_status", MoveInvEnum.BILL_STATUS.code("完成")) + .in("moveinvdtl_id",dtls.stream().map(StIvtMoveinvdtlHrBcp::getMoveinvdtl_id).collect(Collectors.toList()))); + + //更新主单据 + List list = iStIvtMoveinvdtlHrBcpService.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())); + } + } + + // 更新任务 + taskService.update( + new UpdateWrapper().lambda() + .eq(SchBaseTask::getTask_id, form.getString("task_id")) + .set(SchBaseTask::getTask_status, TaskStatusEnum.FINISHED.getCode()) + ); + break; + case STATUS_CANNEL: + //更新明细 + iStIvtMoveinvdtlHrBcpService.update(new UpdateWrapper() + .set("bill_status", MoveInvEnum.BILL_STATUS.code("生成")) + .set("task_id","") + .in("moveinvdtl_id",dtls.stream().map(StIvtMoveinvdtlHrBcp::getMoveinvdtl_id).collect(Collectors.toList()))); + + // 更新任务 + taskService.update( + new UpdateWrapper().lambda() + .eq(SchBaseTask::getTask_id, form.getString("task_id")) + .set(SchBaseTask::getTask_status, TaskStatusEnum.CANCEL.getCode()) + ); + break; + default: + } + } +} diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanagehr/service/moveInv/impl/StIvtMoveinvdtlHrBcpServiceImpl.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanagehr/service/moveInv/impl/StIvtMoveinvdtlHrBcpServiceImpl.java new file mode 100644 index 00000000..90b3348e --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanagehr/service/moveInv/impl/StIvtMoveinvdtlHrBcpServiceImpl.java @@ -0,0 +1,108 @@ +package org.nl.wms.storage_manage.semimanagehr.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; +import org.nl.common.publish.BussEventMulticaster; +import org.nl.common.publish.event.PointEvent; +import org.nl.common.utils.IdUtil; +import org.nl.common.utils.MapOf; +import org.nl.modules.common.exception.BadRequestException; +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.semimanagehr.service.moveInv.IStIvtMoveinvHrBcpService; +import org.nl.wms.storage_manage.semimanagehr.service.moveInv.IStIvtMoveinvdtlHrBcpService; +import org.nl.wms.storage_manage.semimanagehr.service.moveInv.dao.StIvtMoveinvdtlHrBcp; +import org.nl.wms.storage_manage.semimanagehr.service.moveInv.dao.mapper.StIvtMoveinvdtlHrBcpMapper; +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; + +/** + *

+ * 移库单明细表 服务实现类 + *

+ * + * @author generator + * @since 2023-05-10 + */ +@Service +public class StIvtMoveinvdtlHrBcpServiceImpl extends ServiceImpl implements IStIvtMoveinvdtlHrBcpService { + + @Autowired + private ISchBaseTaskService taskService; // 任务服务 + + @Autowired + private IStIvtMoveinvHrBcpService iStIvtMoveinvHrBcpService; // 主表服务 + + @Override + public List listJoinTask(String moveinv_id) { + if (StringUtils.isEmpty(moveinv_id)){ + throw new BadRequestException("移库单主单据id不能为空"); + } + return this.baseMapper.listJoinTask(moveinv_id); + } + + @Override + @Transactional + public void taskOption(JSONObject form, String option) { + List 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("当前明细存在正在执行的单据"); + } + + JSONObject param = new JSONObject(); + + switch (option){ + + case "immediateNotifyAcs": + // 下发任务 + StIvtMoveinvdtlHrBcp moveinvdtlCp = list.get(0); + PointEvent event = PointEvent.builder() + .type(AcsTaskEnum.TASK_STRUCT_BCP_HR_MOVE) + .acs_task_type(AcsTaskEnum.ACS_TASK_TYPE_NON_WEIGHING_TASK_OF_PS20.getCode()) + .task_group_id(IdUtil.getStringId()) + .point_code1(form.getString("turnout_struct_code")) + .point_code3(form.getString("turnin_struct_code")) + .vehicle_code(form.getString("storagevehicle_code")) + .product_area("A3") + .callback((Consumer) moveinvdtlCp::setTask_id) + .build(); + BussEventMulticaster.Publish(event); + + // 更新明细 + this.update(new UpdateWrapper() + .set("task_id",moveinvdtlCp.getTask_id()) + .set("bill_status", MoveInvEnum.BILL_STATUS.code("移库中")) + .eq("moveinv_id", form.getString("moveinv_id"))); + break; + case "forceFinish": + param.put("task_id", form.getString("task_id")); + param.put("status", "2"); + iStIvtMoveinvHrBcpService.taskOperate(param); + break; + case "cancel": + param.put("task_id", form.getString("task_id")); + param.put("status", "3"); + iStIvtMoveinvHrBcpService.taskOperate(param); + break; + } + + } +} diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanagehr/service/structIvt/IStIvtStructivtHrBcpService.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanagehr/service/structIvt/IStIvtStructivtHrBcpService.java index c1182715..6836f74d 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanagehr/service/structIvt/IStIvtStructivtHrBcpService.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanagehr/service/structIvt/IStIvtStructivtHrBcpService.java @@ -3,6 +3,7 @@ package org.nl.wms.storage_manage.semimanagehr.service.structIvt; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.extension.service.IService; import org.nl.common.domain.query.PageQuery; +import org.nl.wms.storage_manage.rawmanage.service.structIvt.dto.StructIvtYLQuery; import org.nl.wms.storage_manage.semimanage.service.structIvt.dao.StIvtStructivtBcp; import org.nl.wms.storage_manage.semimanagehr.service.structIvt.dao.StIvtStructivtHrBcp; import org.nl.wms.storage_manage.semimanagehr.service.structIvt.dto.StructIvtHrBcpQuery; @@ -29,4 +30,6 @@ public interface IStIvtStructivtHrBcpService extends IService getBcpIvtInfo(JSONObject jo); + + Object getBcpMoveIvt(StructIvtYLQuery query, PageQuery page); } diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanagehr/service/structIvt/dao/mapper/StIvtStructivtHrBcpMapper.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanagehr/service/structIvt/dao/mapper/StIvtStructivtHrBcpMapper.java index 3c0bc63d..44db3d5e 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanagehr/service/structIvt/dao/mapper/StIvtStructivtHrBcpMapper.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanagehr/service/structIvt/dao/mapper/StIvtStructivtHrBcpMapper.java @@ -4,6 +4,7 @@ import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Param; import org.nl.common.domain.query.PageQuery; +import org.nl.wms.storage_manage.rawmanage.service.structIvt.dto.StructIvtYLQuery; import org.nl.wms.storage_manage.semimanage.service.structIvt.dao.StIvtStructivtBcp; import org.nl.wms.storage_manage.semimanagehr.service.structIvt.dao.StIvtStructivtHrBcp; import org.nl.wms.storage_manage.semimanagehr.service.structIvt.dto.StructIvtHrBcpQuery; @@ -36,4 +37,6 @@ public interface StIvtStructivtHrBcpMapper extends BaseMapper getPdaBcpMaterialIvt(JSONObject jo); StIvtStructivtBcp queryIvtOutOne(JSONObject json); + + List getBcpMoveIvt(@Param("query") StructIvtYLQuery query); } diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanagehr/service/structIvt/dao/mapper/xml/StIvtStructivtHrBcpMapper.xml b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanagehr/service/structIvt/dao/mapper/xml/StIvtStructivtHrBcpMapper.xml index 49fd4310..6142814c 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanagehr/service/structIvt/dao/mapper/xml/StIvtStructivtHrBcpMapper.xml +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanagehr/service/structIvt/dao/mapper/xml/StIvtStructivtHrBcpMapper.xml @@ -242,4 +242,44 @@ LIMIT 1 + + diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanagehr/service/structIvt/impl/StIvtStructivtHrBcpServiceImpl.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanagehr/service/structIvt/impl/StIvtStructivtHrBcpServiceImpl.java index e9c25d98..2d02e72b 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanagehr/service/structIvt/impl/StIvtStructivtHrBcpServiceImpl.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanagehr/service/structIvt/impl/StIvtStructivtHrBcpServiceImpl.java @@ -2,9 +2,11 @@ package org.nl.wms.storage_manage.semimanagehr.service.structIvt.impl; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.github.pagehelper.Page; import com.github.pagehelper.PageHelper; import org.nl.common.TableDataInfo; import org.nl.common.domain.query.PageQuery; +import org.nl.wms.storage_manage.rawmanage.service.structIvt.dto.StructIvtYLQuery; import org.nl.wms.storage_manage.semimanage.service.structIvt.dao.StIvtStructivtBcp; import org.nl.wms.storage_manage.semimanagehr.service.structIvt.IStIvtStructivtHrBcpService; import org.nl.wms.storage_manage.semimanagehr.service.structIvt.dao.StIvtStructivtHrBcp; @@ -59,4 +61,13 @@ public class StIvtStructivtHrBcpServiceImpl extends ServiceImpl getBcpIvtInfo(JSONObject jo) { return this.baseMapper.getBcpIvtInfo(jo); } + + @Override + public Object getBcpMoveIvt(StructIvtYLQuery query, PageQuery pageQuery) { + Page page = PageHelper.startPage(pageQuery.getPage() + 1, pageQuery.getSize()); + List mst_detail = this.baseMapper.getBcpMoveIvt(query); + TableDataInfo build = TableDataInfo.build(mst_detail); + build.setTotalElements(page.getTotal()); + return build; + } } diff --git a/mes/qd/src/views/wms/storage_manage/semiproducthr/semiproductHrMoveIvt/AddDialog.vue b/mes/qd/src/views/wms/storage_manage/semiproducthr/semiproductHrMoveIvt/AddDialog.vue new file mode 100644 index 00000000..d3190cf5 --- /dev/null +++ b/mes/qd/src/views/wms/storage_manage/semiproducthr/semiproductHrMoveIvt/AddDialog.vue @@ -0,0 +1,362 @@ + + + + + + diff --git a/mes/qd/src/views/wms/storage_manage/semiproducthr/semiproductHrMoveIvt/AddStruct.vue b/mes/qd/src/views/wms/storage_manage/semiproducthr/semiproductHrMoveIvt/AddStruct.vue new file mode 100644 index 00000000..b0fecbf1 --- /dev/null +++ b/mes/qd/src/views/wms/storage_manage/semiproducthr/semiproductHrMoveIvt/AddStruct.vue @@ -0,0 +1,183 @@ + + + + + diff --git a/mes/qd/src/views/wms/storage_manage/semiproducthr/semiproductHrMoveIvt/MoveTaskDialog.vue b/mes/qd/src/views/wms/storage_manage/semiproducthr/semiproductHrMoveIvt/MoveTaskDialog.vue new file mode 100644 index 00000000..b44f2a01 --- /dev/null +++ b/mes/qd/src/views/wms/storage_manage/semiproducthr/semiproductHrMoveIvt/MoveTaskDialog.vue @@ -0,0 +1,210 @@ + + + + + diff --git a/mes/qd/src/views/wms/storage_manage/semiproducthr/semiproductHrMoveIvt/StructIvt.vue b/mes/qd/src/views/wms/storage_manage/semiproducthr/semiproductHrMoveIvt/StructIvt.vue new file mode 100644 index 00000000..3dc7dcb0 --- /dev/null +++ b/mes/qd/src/views/wms/storage_manage/semiproducthr/semiproductHrMoveIvt/StructIvt.vue @@ -0,0 +1,182 @@ + + + + + diff --git a/mes/qd/src/views/wms/storage_manage/semiproducthr/semiproductHrMoveIvt/index.vue b/mes/qd/src/views/wms/storage_manage/semiproducthr/semiproductHrMoveIvt/index.vue new file mode 100644 index 00000000..fcc29823 --- /dev/null +++ b/mes/qd/src/views/wms/storage_manage/semiproducthr/semiproductHrMoveIvt/index.vue @@ -0,0 +1,360 @@ + + + + + diff --git a/mes/qd/src/views/wms/storage_manage/semiproducthr/semiproductHrMoveIvt/moveInv.js b/mes/qd/src/views/wms/storage_manage/semiproducthr/semiproductHrMoveIvt/moveInv.js new file mode 100644 index 00000000..3050dc07 --- /dev/null +++ b/mes/qd/src/views/wms/storage_manage/semiproducthr/semiproductHrMoveIvt/moveInv.js @@ -0,0 +1,75 @@ +import request from '@/utils/request' + +export function add(data) { + return request({ + url: 'api/stIvtMoveinvHrBcp', + method: 'post', + data + }) +} + +export function del(ids) { + return request({ + url: 'api/stIvtMoveinvHrBcp/delete', + method: 'post', + data: ids + }) +} + +export function edit(data) { + return request({ + url: 'api/stIvtMoveinvHrBcp/update', + method: 'post', + data + }) +} + +export function getMoveDtl(data) { + return request({ + url: '/api/stIvtMoveinvHrBcp/getMoveDtl', + method: 'post', + data + }) +} +export function getStructIvt(params) { + return request({ + url: '/api/stIvtCheckmstBcp/getStructIvt', + method: 'get', + params + }) +} + +export function getProductIvt(params) { + return request({ + url: '/api/bcp/hr/getBcpMoveIvt', + method: 'get', + params + }) +} +export function moveTAskOption(params, option) { + return request({ + url: '/api/stIvtMoveinvdtlHrBcp/task/' + option, + method: 'post', + data: params + }) +} + +export function cancel(params) { + return request({ + url: '/api/stIvtMoveinvHrBcp/cancel', + method: 'post', + data: params + }) +} + +export default { + add, + edit, + del, + getMoveDtl, + cancel, + getStructIvt, + moveTAskOption, + getProductIvt + +}