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 cc08b085..99c52985 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 @@ -42,6 +42,7 @@ public enum AcsTaskEnum { TASK_STRUCT_CP_OUT("12","出库-成品-生产出库"), TASK_STRUCT_HR_IN("26","入库-海柔半成品-生产入库"), TASK_STRUCT_HR_OUT("27","出库-海柔半成品-生产出库"), + TASK_STRUCT_HR_CHECK("28","海柔半成品-盘点"), TASK_STRUCT_CP_CHECK("13","-盘点"), TASK_WASH_LACK("20","清洗机-缺料请求"), TASK_WASH_EMP("21","清洗机-空框请求"), diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/CHECKEnum.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/CHECKEnum.java index 3f00c9ae..bc6c140f 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/CHECKEnum.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/CHECKEnum.java @@ -19,6 +19,8 @@ public enum CHECKEnum { BILL_TYPE(MapOf.of("计划盘点", "31", "临时盘点", "32")), //单据状态 BILL_STATUS(MapOf.of("生成", "10", "盘点中", "30", "完成", "99")), + //海柔盘点结果 + CHECK_RESULT(MapOf.of("正常", "0", "异常", "1")), //单据状态 DTL_STATUS(MapOf.of("生成", "01", "盘点中", "04", "已盘点", "05", "异常处理中", "06", "异常处理完成" , "07", "确认完成", "99")), 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 c3a8c11e..e8c73611 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 @@ -15,6 +15,7 @@ import org.nl.wms.storage_manage.semimanage.service.check.IStIvtCheckmstBcpServi import org.nl.wms.storage_manage.semimanage.service.iostorInv.IStIvtIostorinvBcpOutService; import org.nl.wms.storage_manage.semimanage.service.iostorInv.IStIvtIostorinvBcpService; import org.nl.wms.storage_manage.semimanage.service.shutFrame.IStIvtShutframeinvBcpService; +import org.nl.wms.storage_manage.semimanagehr.service.check.IStIvtCheckmstHrBcpService; import org.nl.wms.storage_manage.semimanagehr.service.iostorInv.IStIvtIostorinvHrBcpInService; import org.nl.wms.storage_manage.semimanagehr.service.iostorInv.IStIvtIostorinvHrBcpOutService; @@ -76,6 +77,10 @@ public enum TASKEnum implements FunctionStrategy { IStIvtIostorinvHrBcpOutService bean = SpringContextHolder.getBean(IStIvtIostorinvHrBcpOutService.class); bean.taskOperate(form); }), + HR_CP_CHECK_TASK(type -> AcsTaskEnum.TASK_STRUCT_HR_CHECK.getCode().equals(type), form -> { + IStIvtCheckmstHrBcpService bean = SpringContextHolder.getBean(IStIvtCheckmstHrBcpService.class); + bean.taskOperate(form); + }), ; diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanagehr/controller/check/StIvtCheckmstHrBcpController.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanagehr/controller/check/StIvtCheckmstHrBcpController.java new file mode 100644 index 00000000..a969fdba --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanagehr/controller/check/StIvtCheckmstHrBcpController.java @@ -0,0 +1,76 @@ +package org.nl.wms.storage_manage.semimanagehr.controller.check; + + +import com.alibaba.fastjson.JSONObject; +import org.nl.common.anno.Log; +import org.nl.common.domain.query.PageQuery; +import org.nl.wms.storage_manage.semimanagehr.service.check.IStIvtCheckmstHrBcpService; +import org.nl.wms.storage_manage.semimanagehr.service.check.dto.CheckHrQuery; +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/bcp/checkHr") +public class StIvtCheckmstHrBcpController { + + @Autowired + private IStIvtCheckmstHrBcpService checkmstBcpService; + + @GetMapping + @Log("查询盘点单") + //("查询盘点单") + public ResponseEntity query(CheckHrQuery query, PageQuery page) { + return new ResponseEntity<>(checkmstBcpService.pageQuery(query, page), HttpStatus.OK); + } + + @PostMapping + @Log("创建盘点单") + //("创建盘点单") + public ResponseEntity create(@RequestBody JSONObject whereJson) { + checkmstBcpService.create(whereJson); + return new ResponseEntity<>(HttpStatus.OK); + } + + @PostMapping("/getCheckDtl") + @Log("查询盘点明细") + //("查询盘点明细") + public ResponseEntity getCheckDtl(@RequestBody JSONObject whereJson) { + return new ResponseEntity<>(checkmstBcpService.getCheckDtl(whereJson), HttpStatus.OK); + } + + @PostMapping("/update") + @Log("修改盘点单") + //("修改盘点单") + public ResponseEntity update(@RequestBody JSONObject whereJson) { + checkmstBcpService.update(whereJson); + return new ResponseEntity<>(HttpStatus.OK); + } + + @PostMapping("/delete") + @Log("删除盘点单") + //("删除盘点单") + public ResponseEntity delete(@RequestBody Long[] ids){ + checkmstBcpService.delete(ids); + return new ResponseEntity<>(HttpStatus.OK); + } + + @PostMapping("/issueTask") + @Log("下发任务") + //("下发任务") + public ResponseEntity issueTask(@RequestBody JSONObject whereJson) { + checkmstBcpService.issueTask(whereJson); + return new ResponseEntity<>(HttpStatus.NO_CONTENT); + } + +} + diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanagehr/service/check/IStIvtCheckdtlHrBcpService.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanagehr/service/check/IStIvtCheckdtlHrBcpService.java new file mode 100644 index 00000000..0531daa0 --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanagehr/service/check/IStIvtCheckdtlHrBcpService.java @@ -0,0 +1,36 @@ +package org.nl.wms.storage_manage.semimanagehr.service.check; + +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.extension.service.IService; +import org.nl.wms.storage_manage.semimanagehr.service.check.dao.StIvtCheckdtlHrBcp; +import org.nl.wms.storage_manage.semimanagehr.service.check.dao.StIvtCheckmstHrBcp; + +import java.util.List; +import java.util.Map; + +/** + *

+ * 盘点单明细表 服务类 + *

+ * + * @author generator + * @since 2023-05-10 + */ +public interface IStIvtCheckdtlHrBcpService extends IService { + + /** + * 主单据使用 创建明细 + * @param row / + * @param mst / + * @return / + */ + double create(JSONArray row, StIvtCheckmstHrBcp mst); + + /** + * 获取明细 + * @param map / + * @return / + */ + List getCheckDtl(JSONObject map); +} diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanagehr/service/check/IStIvtCheckmstHrBcpService.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanagehr/service/check/IStIvtCheckmstHrBcpService.java new file mode 100644 index 00000000..d47fd65a --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanagehr/service/check/IStIvtCheckmstHrBcpService.java @@ -0,0 +1,69 @@ +package org.nl.wms.storage_manage.semimanagehr.service.check; + +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.semimanagehr.service.check.dao.StIvtCheckmstHrBcp; +import org.nl.wms.storage_manage.semimanagehr.service.check.dto.CheckHrQuery; + +import java.util.List; +import java.util.Map; + +/** + *

+ * 盘点单主表 服务类 + *

+ * + * @author generator + * @since 2023-05-10 + */ +public interface IStIvtCheckmstHrBcpService extends IService { + + /** + * 分页查询 + * @param query,page / + * @return JSONObject + */ + Object pageQuery(CheckHrQuery query, PageQuery page); + + /** + * 创建盘点单 + * @param jo / + */ + void create(JSONObject jo); + + /** + * 获取盘点单明细 + * @param map + * @return / + */ + List getCheckDtl(JSONObject map); + + /** + * 修改盘点单 + * @param map / + */ + void update(JSONObject map); + + /** + * 删除 + * @param ids + * { + * 主表id.. + * } + */ + void delete(Long[] ids); + + /** + * 下发任务 + * @param jo / + */ + void issueTask(JSONObject jo); + + /** + * 任务反馈处理 + * @param jo / + */ + void taskOperate(JSONObject jo); + +} diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanagehr/service/check/dao/StIvtCheckdtlHrBcp.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanagehr/service/check/dao/StIvtCheckdtlHrBcp.java new file mode 100644 index 00000000..d48f0c01 --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanagehr/service/check/dao/StIvtCheckdtlHrBcp.java @@ -0,0 +1,162 @@ +package org.nl.wms.storage_manage.semimanagehr.service.check.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_checkdtl_hr_bcp") +public class StIvtCheckdtlHrBcp implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 盘点单明细id + */ + @TableId + private String checkdtl_id; + + /** + * 盘点单标识 + */ + private String check_id; + + /** + * 盘点单号 + */ + private String check_code; + + /** + * 明细序号 + */ + private BigDecimal seq_no; + + /** + * 盘点库区 + */ + private String sect_id; + + /** + * 库区名称 + */ + private String sect_name; + + /** + * 盘点货位 + */ + private String struct_id; + + /** + * 货位名称 + */ + private String struct_name; + + /** + * 盘点站台 + */ + private String checkpoint_id; + + /** + * 存储载具标识 + */ + private String storagevehicle_id; + + /** + * 存储载具编码 + */ + private String storagevehicle_code; + + /** + * 物料标识 + */ + private String material_id; + + /** + * 数量 + */ + private BigDecimal base_qty; + + /** + * 数量计量单位标识 + */ + private String qty_unit_id; + + /** + * 数量计量单位名称 + */ + private String qty_unit_name; + + /** + * 状态 + */ + private String status; + + /** + * 是否已下发 + */ + private String is_down; + + /** + * 盘点数量 + */ + private BigDecimal fac_qty; + + /** + * 盘点结果 + */ + private String check_result; + + /** + * 盘点人 + */ + private String check_optid; + + /** + * 盘点人姓名 + */ + private String check_optname; + + /** + * 盘点时间 + */ + private String check_time; + + /** + * 异常是否处理 + */ + private Boolean is_process; + + /** + * 异常处理方式 + */ + private String process_type; + + /** + * 异常处理人 + */ + private String process_optid; + + /** + * 处理时间 + */ + private String process_time; + + /** + * 任务标识 + */ + private String task_id; + +} diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanagehr/service/check/dao/StIvtCheckmstHrBcp.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanagehr/service/check/dao/StIvtCheckmstHrBcp.java new file mode 100644 index 00000000..95248c88 --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanagehr/service/check/dao/StIvtCheckmstHrBcp.java @@ -0,0 +1,168 @@ +package org.nl.wms.storage_manage.semimanagehr.service.check.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_checkmst_hr_bcp") +public class StIvtCheckmstHrBcp implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 盘点单标识 + */ + @TableId + private String check_id; + + /** + * 盘点单号 + */ + private String check_code; + + /** + * 业务类型 + */ + private String buss_type; + + /** + * 盘点单类型 + */ + private String check_type; + + /** + * 仓库标识 + */ + private String stor_id; + + /** + * 仓库名称 + */ + private String stor_name; + + /** + * 明细数 + */ + private BigDecimal dtl_num; + + /** + * 生成方式 + */ + private String create_mode; + + /** + * 创建人 + */ + private String create_id; + + /** + * 创建人姓名 + */ + private String create_name; + + /** + * 创建时间 + */ + private String create_time; + + /** + * 审核人 + */ + private String audit_optid; + + /** + * 审核人姓名 + */ + private String audit_optname; + + /** + * 审核时间 + */ + private String audit_time; + + /** + * 确认人 + */ + private String confirm_optid; + + /** + * 确认人姓名 + */ + private String confirm_optname; + + /** + * 确认时间 + */ + private String confirm_time; + + /** + * 备注 + */ + private String remark; + + /** + * 状态 + */ + private String status; + + /** + * 是否删除 + */ + private Boolean is_delete; + + /** + * 是否盘点有异 + */ + private Boolean is_nok; + + /** + * 是否已上传 + */ + private Boolean is_upload; + + /** + * 回传人 + */ + private String upload_optid; + + /** + * 回传入姓名 + */ + private String upload_optname; + + /** + * 回传时间 + */ + private String upload_time; + + /** + * 部门ID + */ + private String sysdeptid; + + /** + * 公司ID + */ + private String syscompanyid; + + /** + * 车间标识 + */ + private String workshop_id; + + +} diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanagehr/service/check/dao/mapper/StIvtCheckdtlHrBcpMapper.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanagehr/service/check/dao/mapper/StIvtCheckdtlHrBcpMapper.java new file mode 100644 index 00000000..7fa79ee5 --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanagehr/service/check/dao/mapper/StIvtCheckdtlHrBcpMapper.java @@ -0,0 +1,24 @@ +package org.nl.wms.storage_manage.semimanagehr.service.check.dao.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; +import org.nl.wms.storage_manage.semimanage.service.check.dao.StIvtCheckdtlBcp; +import org.nl.wms.storage_manage.semimanagehr.service.check.dao.StIvtCheckdtlHrBcp; + +import java.util.List; +import java.util.Map; + +/** + *

+ * 盘点单明细表 Mapper 接口 + *

+ * + * @author generator + * @since 2023-05-10 + */ +public interface StIvtCheckdtlHrBcpMapper extends BaseMapper { + + List getCheckDtl(@Param("map") Map map); + + List queryCheckDtlByTask(@Param("map") Map map); +} diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanagehr/service/check/dao/mapper/StIvtCheckmstHrBcpMapper.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanagehr/service/check/dao/mapper/StIvtCheckmstHrBcpMapper.java new file mode 100644 index 00000000..f1a27280 --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanagehr/service/check/dao/mapper/StIvtCheckmstHrBcpMapper.java @@ -0,0 +1,16 @@ +package org.nl.wms.storage_manage.semimanagehr.service.check.dao.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.nl.wms.storage_manage.semimanagehr.service.check.dao.StIvtCheckmstHrBcp; + +/** + *

+ * 盘点单主表 Mapper 接口 + *

+ * + * @author generator + * @since 2023-05-10 + */ +public interface StIvtCheckmstHrBcpMapper extends BaseMapper { + +} diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanagehr/service/check/dao/mapper/xml/StIvtCheckdtlHrBcpMapper.xml b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanagehr/service/check/dao/mapper/xml/StIvtCheckdtlHrBcpMapper.xml new file mode 100644 index 00000000..ea82639b --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanagehr/service/check/dao/mapper/xml/StIvtCheckdtlHrBcpMapper.xml @@ -0,0 +1,57 @@ + + + + + + + + diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanagehr/service/check/dao/mapper/xml/StIvtCheckmstHrBcpMapper.xml b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanagehr/service/check/dao/mapper/xml/StIvtCheckmstHrBcpMapper.xml new file mode 100644 index 00000000..3cf6b69e --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanagehr/service/check/dao/mapper/xml/StIvtCheckmstHrBcpMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanagehr/service/check/dto/CheckHrQuery.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanagehr/service/check/dto/CheckHrQuery.java new file mode 100644 index 00000000..12369120 --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanagehr/service/check/dto/CheckHrQuery.java @@ -0,0 +1,35 @@ +package org.nl.wms.storage_manage.semimanagehr.service.check.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.semimanage.service.check.dao.StIvtCheckmstBcp; +import org.nl.wms.storage_manage.semimanagehr.service.check.dao.StIvtCheckmstHrBcp; + +/* + * @author ZZQ + * @Date 2023/5/4 19:49 + */ +@Data +public class CheckHrQuery extends BaseQuery { + + + private String stor_id; + + private String status; + + private String check_type; + + private String check_code; + + private Boolean is_delete = false; + + + @Override + public void paramMapping() { + super.doP.put("check_code", QParam.builder().k(new String[]{"check_code"}).type(QueryTEnum.LK).build()); + } + + +} diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanagehr/service/check/impl/StIvtCheckdtlHrBcpServiceImpl.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanagehr/service/check/impl/StIvtCheckdtlHrBcpServiceImpl.java new file mode 100644 index 00000000..09b42e42 --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanagehr/service/check/impl/StIvtCheckdtlHrBcpServiceImpl.java @@ -0,0 +1,89 @@ +package org.nl.wms.storage_manage.semimanagehr.service.check.impl; + +import cn.hutool.core.util.ObjectUtil; +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.nl.common.utils.IdUtil; +import org.nl.modules.common.exception.BadRequestException; +import org.nl.wms.masterdata_manage.storage.service.storage.IStIvtSectattrService; +import org.nl.wms.masterdata_manage.storage.service.storage.IStIvtStructattrService; +import org.nl.wms.masterdata_manage.storage.service.storage.dao.StIvtSectattr; +import org.nl.wms.masterdata_manage.storage.service.storage.dao.StIvtStructattr; +import org.nl.wms.storage_manage.CHECKEnum; +import org.nl.wms.storage_manage.semimanagehr.service.check.IStIvtCheckdtlHrBcpService; +import org.nl.wms.storage_manage.semimanagehr.service.check.dao.StIvtCheckdtlHrBcp; +import org.nl.wms.storage_manage.semimanagehr.service.check.dao.StIvtCheckmstHrBcp; +import org.nl.wms.storage_manage.semimanagehr.service.check.dao.mapper.StIvtCheckdtlHrBcpMapper; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.math.BigDecimal; +import java.util.List; +import java.util.Map; + +/** + *

+ * 盘点单明细表 服务实现类 + *

+ * + * @author generator + * @since 2023-05-10 + */ +@Service +public class StIvtCheckdtlHrBcpServiceImpl extends ServiceImpl implements IStIvtCheckdtlHrBcpService { + + @Autowired + private IStIvtSectattrService sectattrService; + @Autowired + private IStIvtStructattrService structattrService; + + @Override + public double create(JSONArray rows, StIvtCheckmstHrBcp mst) { + double total_qty = 0; + + if (rows.size() > 0 && ObjectUtil.isNotEmpty(mst)) { + // 先删除在插入 + this.remove(new QueryWrapper().eq("check_id", mst.getCheck_id())); + + for (int i = 0; i < rows.size(); i++) { + String checkdtl_id = IdUtil.getStringId(); + StIvtCheckdtlHrBcp row = rows.getJSONObject(i).toJavaObject(StIvtCheckdtlHrBcp.class); + row.setCheckdtl_id(checkdtl_id); + row.setCheck_id(mst.getCheck_id()); + row.setCheck_code(mst.getCheck_code()); + row.setSeq_no(BigDecimal.valueOf(i + 1)); + row.setIs_down("0"); + + // 获取库区信息 + QueryWrapper sect_wrapper = new QueryWrapper<>(); + sect_wrapper.eq("sect_id", row.getSect_id()); + sect_wrapper.eq("is_used", true); + StIvtSectattr sectDao = sectattrService.getOne(sect_wrapper); + if (ObjectUtil.isEmpty(sectDao)) throw new BadRequestException("库区不存在或未启用!"); + row.setSect_name(sectDao.getSect_name()); + // 获取仓位信息 + QueryWrapper struct_wrapper = new QueryWrapper<>(); + struct_wrapper.eq("struct_id", row.getStruct_id()); + struct_wrapper.eq("is_used", true); + StIvtStructattr structDao = structattrService.getOne(struct_wrapper); + if (ObjectUtil.isEmpty(structDao)) throw new BadRequestException("仓位不存在或未启用!"); + row.setStruct_name(structDao.getStruct_name()); + + row.setStatus(CHECKEnum.DTL_STATUS.code("生成")); + this.save(row); + + //锁定货位 + structattrService.update(new UpdateWrapper().set("lock_type", "1").set("inv_code",mst.getCheck_code()).eq("struct_id", row.getStruct_id())); + } + } + return total_qty; + } + + @Override + public List getCheckDtl(JSONObject map) { + return this.baseMapper.getCheckDtl(map); + } +} diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanagehr/service/check/impl/StIvtCheckmstHrBcpServiceImpl.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanagehr/service/check/impl/StIvtCheckmstHrBcpServiceImpl.java new file mode 100644 index 00000000..2e2afe4c --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanagehr/service/check/impl/StIvtCheckmstHrBcpServiceImpl.java @@ -0,0 +1,336 @@ +package org.nl.wms.storage_manage.semimanagehr.service.check.impl; + +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.map.MapUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.json.JSONUtil; +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.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import io.jsonwebtoken.lang.Assert; +import org.jetbrains.annotations.NotNull; +import org.nl.common.TableDataInfo; +import org.nl.common.domain.query.PageQuery; +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.common.utils.SecurityUtils; +import org.nl.modules.common.exception.BadRequestException; +import org.nl.modules.system.util.CodeUtil; +import org.nl.modules.wql.util.SpringContextHolder; +import org.nl.wms.ext_manage.acs.service.WmsToAcsService; +import org.nl.wms.masterdata_manage.storage.service.storage.IStIvtBsrealstorattrService; +import org.nl.wms.masterdata_manage.storage.service.storage.IStIvtStructattrService; +import org.nl.wms.masterdata_manage.storage.service.storage.dao.StIvtBsrealstorattr; +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.point.ISchBasePointService; +import org.nl.wms.scheduler_manage.service.point.dao.SchBasePoint; +import org.nl.wms.scheduler_manage.service.point.dao.mapper.SchBasePointMapper; +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.CHECKEnum; +import org.nl.wms.storage_manage.IOSEnum; +import org.nl.wms.storage_manage.pda.PDAEnum; +import org.nl.wms.storage_manage.semimanage.service.check.dao.StIvtCheckdtlBcp; +import org.nl.wms.storage_manage.semimanage.service.check.dao.mapper.StIvtCheckdtlBcpMapper; +import org.nl.wms.storage_manage.semimanagehr.service.check.IStIvtCheckdtlHrBcpService; +import org.nl.wms.storage_manage.semimanagehr.service.check.IStIvtCheckmstHrBcpService; +import org.nl.wms.storage_manage.semimanagehr.service.check.dao.StIvtCheckdtlHrBcp; +import org.nl.wms.storage_manage.semimanagehr.service.check.dao.StIvtCheckmstHrBcp; +import org.nl.wms.storage_manage.semimanagehr.service.check.dao.mapper.StIvtCheckdtlHrBcpMapper; +import org.nl.wms.storage_manage.semimanagehr.service.check.dao.mapper.StIvtCheckmstHrBcpMapper; +import org.nl.wms.storage_manage.semimanagehr.service.check.dto.CheckHrQuery; +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.HashMap; +import java.util.List; +import java.util.Map; +import java.util.function.Consumer; + +/** + *

+ * 盘点单主表 服务实现类 + *

+ * + * @author generator + * @since 2023-05-10 + */ +@Service +public class StIvtCheckmstHrBcpServiceImpl extends ServiceImpl implements IStIvtCheckmstHrBcpService { + + @Autowired + private IStIvtBsrealstorattrService stIvtBsrealstorattrService; // 实物属性服务 + + @Autowired + private IStIvtCheckdtlHrBcpService checkdtlBcpService; // 盘点明细服务 + + @Autowired + private IStIvtStructattrService structattrService; // 仓位服务 + + @Autowired + private StIvtCheckdtlHrBcpMapper checkdtlBcpMapper; // 明细mapper + + @Autowired + private SchBasePointMapper pointMapper; // 点位服务mapper + + @Autowired + private ISchBasePointService iSchBasePointService; // 点位服务 + + @Autowired + private ISchBaseTaskService iSchBaseTaskService; // 任务服务 + + @Override + public Object pageQuery(CheckHrQuery query, PageQuery page) { + // 查询条件 + page.setSort("check_code,desc"); + page.setIsAsc(true); + // 分页查询 + Page pageQuery = this.page(page.build(), query.build()); + TableDataInfo build = TableDataInfo.build(pageQuery); + return build; + } + + @Override + @Transactional + public void create(JSONObject form) { + JSONArray rows = form.getJSONArray("tableData"); + if (ObjectUtil.isEmpty(rows)) throw new BadRequestException("请求参数不能为空"); + + // 调用主表 插入/更新方法 + StIvtCheckmstHrBcp checkmstYl = packageMstForm(new StIvtCheckmstHrBcp(), form); + this.save(checkmstYl); + + //调用明细表 插入方法 + checkdtlBcpService.create(rows, checkmstYl); + + } + + @Override + public List getCheckDtl(JSONObject map) { + return checkdtlBcpService.getCheckDtl(map); + } + + @Override + @Transactional + public void update(JSONObject form) { + Assert.notNull(new Object[]{form, form.get("check_id")}, "请求参数不能为空"); + StIvtCheckmstHrBcp mst = form.toJavaObject(StIvtCheckmstHrBcp.class); + this.updateById(mst); + + JSONArray rows = form.getJSONArray("tableData"); + if (ObjectUtil.isEmpty(rows)) throw new BadRequestException("请求参数不能为空"); + // 调用明细表 插入/更新方法 + checkdtlBcpService.create(rows, mst); + } + + @Override + @Transactional + public void issueTask(JSONObject form) { + Assert.notNull(new Object[]{form, form.get("checkdtl_id")}, "请求参数不能为空"); + + StIvtCheckdtlHrBcp dtl = checkdtlBcpService.getById(form.getString("checkdtl_id")); + + if (dtl.getIs_down().equals(IOSEnum.IS_USED.code("是"))) { + throw new BadRequestException("当前货位任务已下发!"); + } + + StIvtCheckmstHrBcp mst = this.getById(dtl.getCheck_id()); + + StIvtStructattr struct = structattrService.getOne( + new QueryWrapper().lambda() + .eq(StIvtStructattr::getStruct_id, dtl.getStruct_id()) + ); + + // 生成任务 + String task_group_id = IdUtil.getStringId(); + PointEvent event = PointEvent.builder() + .acs_task_type("7") + .type(AcsTaskEnum.TASK_STRUCT_HR_CHECK) + .point_code1(struct.getStruct_code()) + .point_code3(struct.getStruct_code()) + .vehicle_code(dtl.getStoragevehicle_code()) + .task_group_id(task_group_id) + .product_area(mst.getWorkshop_id()) + .callback((Consumer) dtl::setTask_id) + .build(); + BussEventMulticaster.Publish(event); + + // 下发任务 + SchBaseTask taskDao = iSchBaseTaskService.getOne( + new QueryWrapper().lambda() + .eq(SchBaseTask::getTask_id, dtl.getTask_id()) + ); + + sendTask(taskDao); + + // 更新明细表 + dtl.setIs_down(IOSEnum.IS_USED.code("是")); + dtl.setStatus(CHECKEnum.BILL_STATUS.code("盘点中")); + checkdtlBcpService.updateById(dtl); + + mst.setStatus(CHECKEnum.BILL_STATUS.code("盘点中")); + this.updateById(mst); + } + + @Override + @Transactional + public void taskOperate(JSONObject form) { + String task_id = form.getString("task_id"); + String status = form.getString("status"); + + if (status.equals(AcsTaskEnum.STATUS_FINISH.getCode())) { + // 完成 + + // 更新任务 + iSchBaseTaskService.update( + new UpdateWrapper().lambda() + .set(SchBaseTask::getTask_status,TaskStatusEnum.FINISHED.getCode()) + .eq(SchBaseTask::getTask_id,task_id ) + ); + + // 更新明细 + StIvtCheckdtlHrBcp dtlDao = checkdtlBcpService.getOne( + new QueryWrapper().lambda() + .eq(StIvtCheckdtlHrBcp::getTask_id, task_id) + ); + + dtlDao.setStatus(CHECKEnum.BILL_STATUS.code("完成")); + dtlDao.setCheck_result(CHECKEnum.CHECK_RESULT.code("正常")); + checkdtlBcpService.updateById(dtlDao); + + // 更新主表 + updateMst(dtlDao.getCheck_id()); + + } else if (status.equals(AcsTaskEnum.STATUS_START.getCode())) { + // 执行中 + + // 更新任务 + iSchBaseTaskService.update( + new UpdateWrapper().lambda() + .set(SchBaseTask::getTask_status,TaskStatusEnum.EXECUTING.getCode()) + .eq(SchBaseTask::getTask_id,task_id ) + ); + + } + } + + @Override + @Transactional + public void delete(Long[] ids) { + for (Long id : ids) { + StIvtCheckmstHrBcp dao = this.getOne(new QueryWrapper().eq("check_id", id)); + dao.setIs_delete(true); + + //获取所有明细下的仓位解锁 + List dtl_list = checkdtlBcpService.list(new QueryWrapper().eq("check_id", id)); + dtl_list.stream() + .map(dtl -> dtl.getStruct_id()) + .distinct() + .forEach(struct_id -> structattrService.update(new UpdateWrapper().set("inv_code", "").set("lock_type", "0").eq("struct_id", struct_id))); + this.updateById(dao); + } + } + + private void sendTask(SchBaseTask taskDao) { + JSONArray param = new JSONArray(); + param.add(JSON.parseObject(JSONUtil.toJsonStr(taskDao))); + // 1.下发任务 + WmsToAcsService bean = SpringContextHolder.getBean(WmsToAcsService.class); + Map result = bean.issueTaskToAcs3(param); + + // 反馈失败报错 + if (!ObjectUtil.equal(MapUtil.getStr(result, "status"),"200")) { + throw new BadRequestException("下发失败:"+MapUtil.getStr(result, "message")); + } + + // 2.更新任务状态 + taskDao.setTask_status(TaskStatusEnum.ISSUE.getCode()); + iSchBaseTaskService.updateById(taskDao); + } + + @NotNull + private StIvtCheckmstHrBcp packageMstForm(StIvtCheckmstHrBcp checkmstYl, JSONObject whereJson) { + JSONArray rows = whereJson.getJSONArray("tableData"); + // 新增 + checkmstYl.setCheck_id(IdUtil.getStringId()); + checkmstYl.setCheck_code(CodeUtil.getNewCode("PD_CODE")); + checkmstYl.setBuss_type(whereJson.getString("check_type")); + checkmstYl.setCheck_type(checkmstYl.getBuss_type()); + + // 获取仓库信息 + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq("stor_id", whereJson.getString("stor_id")); + wrapper.eq("is_used", true); + StIvtBsrealstorattr bsrealDao = stIvtBsrealstorattrService.getOne(wrapper); + if (ObjectUtil.isEmpty(bsrealDao)) throw new BadRequestException("仓库不存在或未启用!"); + + checkmstYl.setStor_id(bsrealDao.getStor_id()); + checkmstYl.setStor_name(bsrealDao.getStor_name()); + checkmstYl.setDtl_num(BigDecimal.valueOf(rows.size())); + checkmstYl.setCreate_mode(CHECKEnum.CREATE_MODE.code("PC产生")); + checkmstYl.setStatus(CHECKEnum.BILL_STATUS.code("生成")); + checkmstYl.setCreate_id(SecurityUtils.getCurrentUserId()); + checkmstYl.setCreate_name(SecurityUtils.getCurrentNickName()); + checkmstYl.setCreate_time(DateUtil.now()); + checkmstYl.setIs_delete(false); + checkmstYl.setIs_upload(true); + // TODO 暂时写死 + checkmstYl.setSysdeptid("111"); + checkmstYl.setSyscompanyid("111"); + + checkmstYl.setRemark(whereJson.getString("remark")); + checkmstYl.setWorkshop_id(whereJson.getString("workshop_id")); + + return checkmstYl; + } + + private void updateMst(String check_id) { + + StIvtCheckmstHrBcp mstDao = this.getById(check_id); + + List dtlDaoList = checkdtlBcpService.list( + new QueryWrapper().lambda() + .eq(StIvtCheckdtlHrBcp::getCheck_id, check_id) + ); + + // 判断是否都为完成 + boolean is_status = dtlDaoList.stream() + .anyMatch(row -> row.getStatus().equals(CHECKEnum.BILL_STATUS.code("完成"))); + + if (is_status) { + // 完成单据 + mstDao.setStatus(CHECKEnum.BILL_STATUS.code("完成")); + + // 解锁全部货位 + for (StIvtCheckdtlHrBcp dtlDao : dtlDaoList) { + structattrService.update( + new UpdateWrapper().lambda() + .set(StIvtStructattr::getLock_type, IOSEnum.LOCK_TYPE.code("未锁定")) + .eq(StIvtStructattr::getStruct_id, dtlDao.getStruct_id()) + ); + } + } + + // 判断是否都为正常 + boolean is_check = dtlDaoList.stream() + .filter(row -> ObjectUtil.isNotEmpty(row.getCheck_result())) + .anyMatch(row -> row.getCheck_result().equals(CHECKEnum.CHECK_RESULT.code("正常"))); + + mstDao.setIs_nok(is_check); + + this.updateById(mstDao); + + } + +} diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/stivt.xls b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/stivt.xls index c442e7f2..3f124493 100644 Binary files a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/stivt.xls and b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/stivt.xls differ diff --git a/mes/qd/src/views/wms/storage_manage/semiproducthr/semiproductHrCheck/AddDialog.vue b/mes/qd/src/views/wms/storage_manage/semiproducthr/semiproductHrCheck/AddDialog.vue new file mode 100644 index 00000000..9c6c1666 --- /dev/null +++ b/mes/qd/src/views/wms/storage_manage/semiproducthr/semiproductHrCheck/AddDialog.vue @@ -0,0 +1,338 @@ + + + + + + diff --git a/mes/qd/src/views/wms/storage_manage/semiproducthr/semiproductHrCheck/CheckDialog.vue b/mes/qd/src/views/wms/storage_manage/semiproducthr/semiproductHrCheck/CheckDialog.vue new file mode 100644 index 00000000..ab6f9860 --- /dev/null +++ b/mes/qd/src/views/wms/storage_manage/semiproducthr/semiproductHrCheck/CheckDialog.vue @@ -0,0 +1,423 @@ + + + + + + diff --git a/mes/qd/src/views/wms/storage_manage/semiproducthr/semiproductHrCheck/StructIvt.vue b/mes/qd/src/views/wms/storage_manage/semiproducthr/semiproductHrCheck/StructIvt.vue new file mode 100644 index 00000000..b6f21ed6 --- /dev/null +++ b/mes/qd/src/views/wms/storage_manage/semiproducthr/semiproductHrCheck/StructIvt.vue @@ -0,0 +1,155 @@ + + + + + diff --git a/mes/qd/src/views/wms/storage_manage/semiproducthr/semiproductHrCheck/check.js b/mes/qd/src/views/wms/storage_manage/semiproducthr/semiproductHrCheck/check.js new file mode 100644 index 00000000..105ca994 --- /dev/null +++ b/mes/qd/src/views/wms/storage_manage/semiproducthr/semiproductHrCheck/check.js @@ -0,0 +1,136 @@ +import request from '@/utils/request' + +export function add(data) { + return request({ + url: 'api/bcp/checkHr', + method: 'post', + data + }) +} + +export function del(ids) { + return request({ + url: 'api/bcp/checkHr/delete', + method: 'post', + data: ids + }) +} + +export function edit(data) { + return request({ + url: 'api/bcp/checkHr/update', + method: 'post', + data + }) +} + +export function getCheckDtl(data) { + return request({ + url: '/api/bcp/checkHr/getCheckDtl', + method: 'post', + data + }) +} + +export function getOutBillDtl2(params) { + return request({ + url: '/api/bcp/checkHr/getOutBillDtl2', + method: 'get', + params + }) +} + +export function getOutBillDis(params) { + return request({ + url: '/api/bcp/checkHr/getOutBillDis', + method: 'get', + params + }) +} + +export function getInvTypes() { + return request({ + url: '/api/bcp/checkHr/getInvTypes', + method: 'get' + }) +} + +export function insertDtl(data) { + return request({ + url: '/api/bcp/checkHr/insertDtl', + method: 'post', + data + }) +} + +export function getStructIvt(params) { + return request({ + url: '/api/bcp/checkHr/getStructIvt', + method: 'get', + params + }) +} + +export function confirm(data) { + return request({ + url: '/api/bcp/checkHr/confirm', + method: 'post', + data + }) +} + +export function handdown(data) { + return request({ + url: '/api/bcp/checkHr/handdown', + method: 'post', + data + }) +} + +export function saveCheck(data) { + return request({ + url: '/api/bcp/checkHr/saveCheck', + method: 'post', + data + }) +} + +export function process0(data) { + return request({ + url: '/api/bcp/checkHr/process0', + method: 'post', + data + }) +} + +export function process1(data) { + return request({ + url: '/api/bcp/checkHr/process1', + method: 'post', + data + }) +} + +export function issueTask(data) { + return request({ + url: '/api/bcp/checkHr/issueTask', + method: 'post', + data + }) +} + +export default { + add, + edit, + del, + getCheckDtl, + getStructIvt, + getOutBillDtl2, + confirm, + getInvTypes, + saveCheck, + process0, + issueTask, + getOutBillDis, + process1 +} diff --git a/mes/qd/src/views/wms/storage_manage/semiproducthr/semiproductHrCheck/index.vue b/mes/qd/src/views/wms/storage_manage/semiproducthr/semiproductHrCheck/index.vue new file mode 100644 index 00000000..3ea86361 --- /dev/null +++ b/mes/qd/src/views/wms/storage_manage/semiproducthr/semiproductHrCheck/index.vue @@ -0,0 +1,322 @@ + + + + +