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 69a6c984..2bbf5035 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 @@ -40,6 +40,7 @@ public enum AcsTaskEnum { TASK_STRUCT_BCP_EMPOUT("17","半成品-空托盘出库"), TASK_STRUCT_CP_IN("11","入库-成品-生产入库"), TASK_STRUCT_CP_OUT("12","出库-成品-生产出库"), + TASK_STRUCT_HR_IN("26","入库-海柔半成品-生产入库"), 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/productmanage/util/impl/DivRuleCpServiceImpl.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/util/impl/DivRuleCpServiceImpl.java index 33f670c0..faee4278 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/util/impl/DivRuleCpServiceImpl.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/util/impl/DivRuleCpServiceImpl.java @@ -62,8 +62,10 @@ public class DivRuleCpServiceImpl implements DivRuleCpService { .eq(StIvtStructattr::getSect_id, sect_id) .eq(StIvtStructattr::getIs_used, IOSEnum.IS_USED.code("是")) .eq(StIvtStructattr::getLock_type, IOSEnum.LOCK_TYPE.code("未锁定")) - .eq(StIvtStructattr::getStoragevehicle_code, "") - .eq(StIvtStructattr::getIs_emptyvehicle, false) + .and(qr -> qr.eq(StIvtStructattr::getStoragevehicle_code,"") + .or().isNull(StIvtStructattr::getStoragevehicle_code) + ) + .ne(StIvtStructattr::getIs_emptyvehicle, true) .orderByAsc(StIvtStructattr::getStruct_code) , false); break; 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 d3b931d4..2b775bab 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.iostorInv.IStIvtIostorinvHrBcpInService; import java.util.function.Consumer; import java.util.function.Predicate; @@ -66,6 +67,10 @@ public enum TASKEnum implements FunctionStrategy { ISchBasePointService bean = SpringContextHolder.getBean(ISchBasePointService.class); bean.taskOperate(form); }), + HR_CP_IN_TASK(type -> AcsTaskEnum.TASK_STRUCT_HR_IN.getCode().equals(type), form -> { + IStIvtIostorinvHrBcpInService bean = SpringContextHolder.getBean(IStIvtIostorinvHrBcpInService.class); + bean.taskOperate(form); + }), ; diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanagehr/controller/iostorInv/StIvtIostorinvHrBcpInController.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanagehr/controller/iostorInv/StIvtIostorinvHrBcpInController.java new file mode 100644 index 00000000..9c205ff3 --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanagehr/controller/iostorInv/StIvtIostorinvHrBcpInController.java @@ -0,0 +1,125 @@ +package org.nl.wms.storage_manage.semimanagehr.controller.iostorInv; + + +import cn.dev33.satoken.annotation.SaIgnore; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import io.swagger.annotations.Api; +import lombok.extern.slf4j.Slf4j; +import org.nl.common.anno.Log; +import org.nl.common.domain.query.PageQuery; +import org.nl.wms.masterdata_manage.service.vehicle.IMdPbStoragevehicleextService; +import org.nl.wms.masterdata_manage.service.vehicle.dao.MdPbStoragevehicleext; +import org.nl.wms.storage_manage.semimanagehr.service.iostorInv.IStIvtIostorinvHrBcpInService; +import org.nl.wms.storage_manage.semimanagehr.service.iostorInv.dao.StIvtIostorinvHrBcp; +import org.nl.wms.storage_manage.semimanagehr.service.iostorInv.dto.HrBcpIostorInvQuery; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.util.CollectionUtils; +import org.springframework.web.bind.annotation.*; + +import java.math.BigDecimal; +import java.util.Arrays; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +/** + *

+ * 出入库记录表 前端控制器 + *

+ * + * @author generator + * @since 2023-05-10 + */ +@RestController +@Api(tags = "海柔半成品入库") +@RequestMapping("/api/in/semiproductHr") +@Slf4j +@SaIgnore +public class StIvtIostorinvHrBcpInController { + + @Autowired + private IStIvtIostorinvHrBcpInService stIvtIostorinvBcpService; // 海柔半成品入库服务 + + @Autowired + private IMdPbStoragevehicleextService iMdPbStoragevehicleextService; // 载具扩展属性信息表服务 + + @GetMapping + @Log("查询入库单据") + //("查询入库单据") + public ResponseEntity query(HrBcpIostorInvQuery query, PageQuery page) { + return new ResponseEntity<>(stIvtIostorinvBcpService.queryDtl(query,page), HttpStatus.OK); + } + + @PostMapping("/create") + @Log("新增入库单") + //("新增入库单") + public ResponseEntity create(@RequestBody JSONObject form) { + stIvtIostorinvBcpService.create(form); + return new ResponseEntity<>(HttpStatus.CREATED); + } + + @Log("删除出入库单") + //("删除出入库单") + @PostMapping("/delete") + public ResponseEntity delete(@RequestBody Long[] ids) { + if (ids.length>0){ + stIvtIostorinvBcpService.update(new UpdateWrapper() + .set("is_delete","1") + .in("iostorinv_id",ids)); + + List bcps = stIvtIostorinvBcpService.listByIds(Arrays.asList(ids)); + List collect = bcps.stream().map(StIvtIostorinvHrBcp::getStoragevehicle_code).collect(Collectors.toList()); + // 更新载具扩展属性 - 释放载具对应物料关系 清空数量 + if (!CollectionUtils.isEmpty(collect)){ + iMdPbStoragevehicleextService.update( + new MdPbStoragevehicleext() + .setMaterial_id("") + .setStorage_qty(BigDecimal.valueOf(0)), + new QueryWrapper().lambda() + .in(MdPbStoragevehicleext::getStoragevehicle_code,collect) + ); + } + } + return new ResponseEntity<>(HttpStatus.OK); + } + + + @PostMapping("/update") + @Log("修改入库单") + //("修改入库单") + public ResponseEntity update(@RequestBody JSONObject whereJson) { + stIvtIostorinvBcpService.updateBill(whereJson); + return new ResponseEntity<>(HttpStatus.NO_CONTENT); + } + + + @PostMapping("/getIODtl") + @Log("查询入库分配明细") + //("查询入库分配明细") + public ResponseEntity getIODtl(@RequestBody JSONObject whereJson) { + return new ResponseEntity<>(stIvtIostorinvBcpService.getIoDtl(whereJson.toJavaObject(HrBcpIostorInvQuery.class)), HttpStatus.OK); + } + + + @PostMapping("/confirm") + @Log("完成单据") + //("完成单据") + public ResponseEntity confirm(@RequestBody JSONObject whereJson) { + stIvtIostorinvBcpService.confirm(whereJson); + return new ResponseEntity<>(HttpStatus.NO_CONTENT); + } + + @PostMapping("/confirmTask") + @Log("下发任务") + //("下发任务") + public ResponseEntity confirmTask(@RequestBody JSONObject whereJson) { + stIvtIostorinvBcpService.confirmTask(whereJson); + return new ResponseEntity<>(HttpStatus.NO_CONTENT); + } + +} + diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanagehr/controller/iostorInv/StIvtIostorinvHrBcpOutController.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanagehr/controller/iostorInv/StIvtIostorinvHrBcpOutController.java new file mode 100644 index 00000000..995277d9 --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanagehr/controller/iostorInv/StIvtIostorinvHrBcpOutController.java @@ -0,0 +1,103 @@ +package org.nl.wms.storage_manage.semimanagehr.controller.iostorInv; + + +import cn.dev33.satoken.annotation.SaIgnore; +import com.alibaba.fastjson.JSONObject; +import io.swagger.annotations.Api; +import lombok.extern.slf4j.Slf4j; +import org.nl.common.anno.Log; +import org.nl.common.domain.query.PageQuery; +import org.nl.wms.storage_manage.semimanagehr.service.iostorInv.IStIvtIostorinvHrBcpOutService; +import org.nl.wms.storage_manage.semimanagehr.service.iostorInv.dto.HrBcpIostorInvQuery; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.*; + +import java.util.Map; + +/** + *

+ * 出入库记录表 前端控制器 + *

+ * + * @author generator + * @since 2023-05-10 + */ +@RestController +@Api(tags = "海柔半成品出库") +@RequestMapping("/api/out/semiproductHr") +@Slf4j +@SaIgnore +public class StIvtIostorinvHrBcpOutController { + + @Autowired + private IStIvtIostorinvHrBcpOutService bcpOutService; + + @GetMapping + @Log("查询入库单据") + //("查询入库单据") + public ResponseEntity query(HrBcpIostorInvQuery query, PageQuery page) { + return new ResponseEntity<>(bcpOutService.queryDtl(query,page), HttpStatus.OK); + } + + @PostMapping("/create") + @Log("新增出库单") + //("新增出库单") + public ResponseEntity create(@RequestBody JSONObject form) { + bcpOutService.create(form); + return new ResponseEntity<>(HttpStatus.CREATED); + } + + @Log("删除出入库单") + //("删除出入库单") + @PostMapping("/delete") + public ResponseEntity delete(@RequestBody Long[] ids) { + bcpOutService.delete(ids); + return new ResponseEntity<>(HttpStatus.OK); + } + + + @PostMapping("/update") + @Log("修改出库单") + //("修改出库单") + public ResponseEntity update(@RequestBody JSONObject whereJson) { + bcpOutService.updateBill(whereJson); + return new ResponseEntity<>(HttpStatus.NO_CONTENT); + } + + + @PostMapping("/commit") + @Log("出入单提交") + //("出入单提交") + public ResponseEntity commit(@RequestBody Map whereJson) { + //semiProductInService.commit(whereJson); + return new ResponseEntity<>(HttpStatus.NO_CONTENT); + } + + @PostMapping("/getIODtl") + @Log("查询入库分配明细") + //("查询入库分配明细") + public ResponseEntity getIODtl(@RequestBody JSONObject whereJson) { + return new ResponseEntity<>(bcpOutService.getIoDtl(whereJson.toJavaObject(HrBcpIostorInvQuery.class)), HttpStatus.OK); + } + + + @PostMapping("/confirm") + @Log("完成单据") + //("完成单据") + public ResponseEntity confirm(@RequestBody JSONObject whereJson) { + bcpOutService.confirm(whereJson); + return new ResponseEntity<>(HttpStatus.NO_CONTENT); + } + + @PostMapping("/confirmTask") + @Log("下发任务") + //("下发任务") + public ResponseEntity confirmTask(@RequestBody JSONObject whereJson) { + bcpOutService.confirmTask(whereJson); + return new ResponseEntity<>(HttpStatus.NO_CONTENT); + } + +} + 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 new file mode 100644 index 00000000..af13f58f --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanagehr/controller/structLvt/StIvtStructivtHrBcpController.java @@ -0,0 +1,79 @@ +package org.nl.wms.storage_manage.semimanagehr.controller.structLvt; + + +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import org.nl.common.anno.Log; +import org.nl.common.domain.query.PageQuery; +import org.nl.common.utils.MapOf; +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; +import org.nl.wms.system_manage.service.tableData.ColumnInfoService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.*; + +import javax.servlet.http.HttpServletResponse; +import java.util.List; +import java.util.Map; + +/** + *

+ * 仓位库存表 前端控制器 + *

+ * + * @author generator + * @since 2023-05-10 + */ +@RestController +@RequestMapping("/api/bcp/hr") +public class StIvtStructivtHrBcpController { + + @Autowired + private IStIvtStructivtHrBcpService bcpService; + @Autowired + private ColumnInfoService columnInfoService; + + @GetMapping + @Log("半成品库存查询") + //("半成品库存查询") + public ResponseEntity query(StructIvtHrBcpQuery query, PageQuery page) { + return new ResponseEntity<>(bcpService.packageQuery(query,page), HttpStatus.OK); + } + @PostMapping("/bypda") + @Log("半成品库存查询") + //("半成品库存查询") + public ResponseEntity bypdaQuery(@RequestBody PageQuery query) { + query.setPage(0); + return new ResponseEntity<>(bcpService.packageQuery(new StructIvtHrBcpQuery(),query), HttpStatus.OK); + } + + @GetMapping("/getBcpIvt") + @Log("查询可用的半成品库存") + //("查询可用的半成品库存") + public ResponseEntity getBcpIvt(StructIvtHrBcpQuery query, PageQuery page) { + return new ResponseEntity<>(bcpService.getBcpIvt(query, page), HttpStatus.OK); + } + + @PostMapping("/getBcpIvtInfo") + @Log("查询可用的半成品库存") + //("查询可用的半成品库存") + public ResponseEntity getBcpIvtInfo(@RequestBody JSONObject jo) { + return new ResponseEntity<>(bcpService.getBcpIvtInfo(jo), HttpStatus.OK); + } + + @GetMapping("/download") + @Log("半成品库存导出") + //("半成品库存查询") + public ResponseEntity download(StructIvtHrBcpQuery query, PageQuery page, HttpServletResponse response) { + List maps = bcpService.queryAll(query); + String s = JSON.toJSONString(maps); + List bcpVos = JSONArray.parseArray(s, StIvtStructivtBcpVo.class); + columnInfoService.exportFile(bcpVos,response, MapOf.of("stor_name","仓库名称","material_name","物料名称","material_spec","物料规格")); + return new ResponseEntity<>(HttpStatus.OK); + } +} + diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanagehr/controller/structLvt/StIvtStructivtflowHrBcpController.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanagehr/controller/structLvt/StIvtStructivtflowHrBcpController.java new file mode 100644 index 00000000..92d17792 --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanagehr/controller/structLvt/StIvtStructivtflowHrBcpController.java @@ -0,0 +1,36 @@ +package org.nl.wms.storage_manage.semimanagehr.controller.structLvt; + + +import org.nl.common.domain.query.PageQuery; +import org.nl.wms.storage_manage.productmanage.service.structIvt.dto.IvtFlowQuery; +import org.nl.wms.storage_manage.semimanagehr.service.structIvt.IStIvtStructivtflowHrService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + + +/** + *

+ * 仓位库存变动记录表 前端控制器 + *

+ * + * @author generator + * @since 2023-05-10 + */ +@RestController +@RequestMapping("/api/stIvtStructivtflowHrBcp") +public class StIvtStructivtflowHrBcpController { + + @Autowired + private IStIvtStructivtflowHrService iStIvtStructivtflowService; + + + @GetMapping + public ResponseEntity query(IvtFlowQuery query, PageQuery page) { + return new ResponseEntity<>(iStIvtStructivtflowService.queryAll(query,page), HttpStatus.OK); + } +} + diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanagehr/service/iostorInv/IStIvtIostorinvHrBcpInService.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanagehr/service/iostorInv/IStIvtIostorinvHrBcpInService.java new file mode 100644 index 00000000..4794ea8c --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanagehr/service/iostorInv/IStIvtIostorinvHrBcpInService.java @@ -0,0 +1,62 @@ +package org.nl.wms.storage_manage.semimanagehr.service.iostorInv; + +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.iostorInv.dao.StIvtIostorinvHrBcp; +import org.nl.wms.storage_manage.semimanagehr.service.iostorInv.dto.HrBcpIostorInvQuery; + +import java.util.List; +import java.util.Map; + +/** + *

+ * 出入库记录表 服务类 + *

+ * + * @author generator + * @since 2023-08-01 + */ +public interface IStIvtIostorinvHrBcpInService extends IService { + + + Object queryDtl(HrBcpIostorInvQuery query, PageQuery page); + + List getIoDtl(HrBcpIostorInvQuery query); + /** + * 新增 + * @param form + * @return + */ + void create(JSONObject form); + /** + * 完成 + * @param form + * @return + */ + String confirm(JSONObject form); + + /** + * 库存变动 + * @param form + * @return + */ + void onlyConfirm(JSONObject form); + /** + * 下发单据 + * @param form + * @return + */ + String confirmTask(JSONObject form); + /** + * 修改单据 + * @param form + * @return + */ + String updateBill(JSONObject form); + + void taskOperate(JSONObject form); + + List getPdaAll(JSONObject form); + +} diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanagehr/service/iostorInv/IStIvtIostorinvHrBcpOutService.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanagehr/service/iostorInv/IStIvtIostorinvHrBcpOutService.java new file mode 100644 index 00000000..75c044d9 --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanagehr/service/iostorInv/IStIvtIostorinvHrBcpOutService.java @@ -0,0 +1,84 @@ +package org.nl.wms.storage_manage.semimanagehr.service.iostorInv; + +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.extension.service.IService; +import org.nl.common.domain.query.PageQuery; +import org.nl.wms.masterdata_manage.storage.service.storage.dao.StIvtStructattr; +import org.nl.wms.storage_manage.semimanage.service.structIvt.dao.StIvtStructivtBcp; +import org.nl.wms.storage_manage.semimanagehr.service.iostorInv.dao.StIvtIostorinvHrBcp; +import org.nl.wms.storage_manage.semimanagehr.service.iostorInv.dto.HrBcpIostorInvQuery; + +import java.util.List; +import java.util.Map; + +/** + *

+ * 出入库记录表 服务类 + *

+ * + * @author generator + * @since 2023-08-01 + */ +public interface IStIvtIostorinvHrBcpOutService extends IService { + + + Object queryDtl(HrBcpIostorInvQuery query, PageQuery page); + + List getIoDtl(HrBcpIostorInvQuery query); + /** + * 新增 + * @param form + * @return + */ + void create(JSONObject form); + + /** + * 新增 + * @param ids + * @return + */ + void delete(Long[] ids); + + /** + * 完成 + * @param form + * @return + */ + String confirm(JSONObject form); + + /** + * 出库确认 + * @param form + * @return + */ + void onlyConfirm(JSONObject form); + + /** + * 自动出库 + * @param param + * param.put("stor_id", form.getString("stor_id")); + * param.put("sect_id", form.getString("sect_id")); + * param.put("material_id", form.getString("material_id")); + * @return + */ + StIvtStructivtBcp autoConfirmout(JSONObject param); + + StIvtStructattr autoConfirmin(JSONObject param); + + void lockStruct(String struct,String type,String inv_code); + /** + * 下发单据 + * @param form + * @return + */ + String confirmTask(JSONObject form); + /** + * 修改单据 + * @param form + * @return + */ + String updateBill(JSONObject form); + + void taskOperate(JSONObject form); + +} diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanagehr/service/iostorInv/dao/StIvtIostorinvHrBcp.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanagehr/service/iostorInv/dao/StIvtIostorinvHrBcp.java new file mode 100644 index 00000000..7545547e --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanagehr/service/iostorInv/dao/StIvtIostorinvHrBcp.java @@ -0,0 +1,232 @@ +package org.nl.wms.storage_manage.semimanagehr.service.iostorInv.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-08-01 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@TableName("st_ivt_iostorinv_hr_bcp") +public class StIvtIostorinvHrBcp implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 出入单标识 + */ + @TableId(value = "iostorinv_id") + private String iostorinv_id; + + /** + * 单据编号 + */ + private String bill_code; + + /** + * 出入类型 + */ + private String io_type; + + /** + * 业务类型 + */ + private String buss_type; + + /** + * 单据类型 + */ + private String bill_type; + /** + * 单据zhuangtai + */ + private String bill_status; + + /** + * 业务日期 + */ + private String biz_date; + + /** + * 关联单据 + */ + private String base_bill_code; + + /** + * 车间标识 + */ + private String workshop_id; + + /** + * 仓库标识 + */ + private String stor_id; + + /** + * 仓库编码 + */ + private String stor_code; + + /** + * 仓库名称 + */ + private String stor_name; + + /** + * 库区标识 + */ + private String sect_id; + + /** + * 库区编码 + */ + private String sect_code; + + /** + * 库区名称 + */ + private String sect_name; + + /** + * 仓位标识 + */ + private String struct_id; + + /** + * 仓位编码 + */ + private String struct_code; + + /** + * 仓位名称 + */ + private String struct_name; + + /** + * 物料标识 + */ + private String material_id; + + /** + * 批次 + */ + private String pcsn; + + /** + * 品质类型 + */ + private String quality_scode; + + /** + * 库存等级 + */ + private String ivt_level; + + /** + * 是否可用 + */ + private Boolean is_active; + + /** + * 数量 + */ + private BigDecimal plan_qty; + + /** + * 数量计量单位标识 + */ + private String qty_unit_id; + + /** + * 数量计量单位名称 + */ + private String qty_unit_name; + + /** + * 创建人 + */ + private String create_id; + + /** + * 创建人姓名 + */ + + private String create_name; + + /** + * 创建时间 + */ + private String create_time; + + /** + * 修改人 + */ + private String update_id; + + /** + * 修改人姓名 + */ + private String update_name; + + /** + * 修改时间 + */ + private String update_time; + + /** + * 执行状态 + */ + private String work_status; + + /** + * 任务标识 + */ + private String task_id; + + /** + * 存储载具标识 + */ + private String storagevehicle_id; + + /** + * 存储载具编码 + */ + private String storagevehicle_code; + + /** + * 存储载具类型 + */ + private String storagevehicle_type; + + /** + * 单重 + */ + private BigDecimal unit_weight; + + /** + * 是否删除 + */ + private Boolean is_delete; + + /** + * 备注 + */ + private String remark; + /** + * 入库点 + */ + private String point_code; + + +} diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanagehr/service/iostorInv/dao/mapper/StIvtIostorinvHrBcpMapper.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanagehr/service/iostorInv/dao/mapper/StIvtIostorinvHrBcpMapper.java new file mode 100644 index 00000000..2b2e959b --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanagehr/service/iostorInv/dao/mapper/StIvtIostorinvHrBcpMapper.java @@ -0,0 +1,26 @@ +package org.nl.wms.storage_manage.semimanagehr.service.iostorInv.dao.mapper; + +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; +import org.nl.common.anno.Datazhuazhua; +import org.nl.wms.storage_manage.semimanagehr.service.iostorInv.dao.StIvtIostorinvHrBcp; +import org.nl.wms.storage_manage.semimanagehr.service.iostorInv.dto.HrBcpIostorInvQuery; + +import java.util.List; +import java.util.Map; + +/** + *

+ * 出入库记录表 Mapper 接口 + *

+ * + * @author generator + * @since 2023-05-10 + */ +@Datazhuazhua +public interface StIvtIostorinvHrBcpMapper extends BaseMapper { + List getIostorinv(@Param("query") HrBcpIostorInvQuery query); + + List getPdaAll(JSONObject form); +} diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanagehr/service/iostorInv/dao/mapper/xml/StIvtIostorinvHrBcpMapper.xml b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanagehr/service/iostorInv/dao/mapper/xml/StIvtIostorinvHrBcpMapper.xml new file mode 100644 index 00000000..725f1593 --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanagehr/service/iostorInv/dao/mapper/xml/StIvtIostorinvHrBcpMapper.xml @@ -0,0 +1,82 @@ + + + + + + + + diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanagehr/service/iostorInv/dto/HrBcpIostorInvQuery.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanagehr/service/iostorInv/dto/HrBcpIostorInvQuery.java new file mode 100644 index 00000000..59643365 --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanagehr/service/iostorInv/dto/HrBcpIostorInvQuery.java @@ -0,0 +1,38 @@ +package org.nl.wms.storage_manage.semimanagehr.service.iostorInv.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.iostorInv.dao.StIvtIostorinvBcp; + +/* + * @author LXY + * @Date 2023/08/01 19:49 + */ +@Data +public class HrBcpIostorInvQuery extends BaseQuery { + + + private String stor_id; + + private String iostorinv_id; + + private String bill_status; + + private String bill_type; + + private String bill_code; + + private String io_type; + + 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/iostorInv/impl/StIvtIostorinvHrBcpInServiceImpl.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanagehr/service/iostorInv/impl/StIvtIostorinvHrBcpInServiceImpl.java new file mode 100644 index 00000000..575c8c64 --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanagehr/service/iostorInv/impl/StIvtIostorinvHrBcpInServiceImpl.java @@ -0,0 +1,477 @@ +package org.nl.wms.storage_manage.semimanagehr.service.iostorInv.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.service.impl.ServiceImpl; +import com.github.pagehelper.Page; +import com.github.pagehelper.PageHelper; +import io.jsonwebtoken.lang.Assert; +import org.apache.commons.lang3.StringUtils; +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.RedissonUtils; +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.service.material.IMdMeMaterialbaseService; +import org.nl.wms.masterdata_manage.service.material.dao.MdMeMaterialbase; +import org.nl.wms.masterdata_manage.service.vehicle.IMdPbStoragevehicleextService; +import org.nl.wms.masterdata_manage.service.vehicle.IMdPbStoragevehicleinfoService; +import org.nl.wms.masterdata_manage.service.vehicle.dao.MdPbStoragevehicleext; +import org.nl.wms.masterdata_manage.service.vehicle.dao.MdPbStoragevehicleinfo; +import org.nl.wms.masterdata_manage.storage.service.storage.IStIvtBsrealstorattrService; +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.StIvtBsrealstorattr; +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.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.basedata.service.record.service.IStIvtStructivtflowService; +import org.nl.wms.storage_manage.productmanage.util.ChangeIvtUtil; +import org.nl.wms.storage_manage.productmanage.util.DivRuleCpService; +import org.nl.wms.storage_manage.productmanage.util.RuleUtil; +import org.nl.wms.storage_manage.semimanagehr.service.iostorInv.IStIvtIostorinvHrBcpInService; +import org.nl.wms.storage_manage.semimanagehr.service.iostorInv.dao.StIvtIostorinvHrBcp; +import org.nl.wms.storage_manage.semimanagehr.service.iostorInv.dao.mapper.StIvtIostorinvHrBcpMapper; +import org.nl.wms.storage_manage.semimanagehr.service.iostorInv.dto.HrBcpIostorInvQuery; +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 java.util.List; +import java.util.Map; +import java.util.function.Consumer; + +/** + *

+ * 出入库记录表 服务实现类 + *

+ * + * @author generator + * @since 2023-05-10 + */ +@Service +public class StIvtIostorinvHrBcpInServiceImpl extends ServiceImpl implements IStIvtIostorinvHrBcpInService { + + @Autowired + private IStIvtBsrealstorattrService storattrService; // 实物属性服务 + + @Autowired + private IStIvtStructivtHrBcpService structivtBcpService; // 仓库库存服务 + + @Autowired + private IStIvtStructattrService structattrService; // 仓位服务 + + @Autowired + private DivRuleCpService divRuleCpService; // 分配规则服务 + + @Autowired + private IStIvtSectattrService sectattrService; // 库区服务 + + @Autowired + private ISchBaseTaskService iSchBaseTaskService; // 任务表服务 + + @Autowired + private IMdMeMaterialbaseService materialbaseService; // 任务表服务 + + @Autowired + private IStIvtStructivtflowHrService iStIvtStructivtflowService; // 库存变动服务 + + @Autowired + protected IMdPbStoragevehicleinfoService iMdPbStoragevehicleinfoService; // 载具信息 + + @Autowired + protected IMdPbStoragevehicleextService iMdPbStoragevehicleextService; // 载具扩展属性信息表服务 + + @Override + public Object queryDtl(HrBcpIostorInvQuery query, PageQuery pageQuery) { + Page page = PageHelper.startPage(pageQuery.getPage() + 1, pageQuery.getSize()); + TableDataInfo build = TableDataInfo.build(this.getIoDtl(query)); + build.setTotalElements(page.getTotal()); + return build; + } + + @Override + public List getIoDtl(HrBcpIostorInvQuery query) { + return this.baseMapper.getIostorinv(query); + } + + @Override + @Transactional + public void create(JSONObject form) { + Assert.notNull(form, "参数不能为空"); + for (Object item : form.getJSONArray("tableData")) { + StIvtIostorinvHrBcp mst = new StIvtIostorinvHrBcp(); + mst.setIostorinv_id(IdUtil.getStringId()); + mst.setBill_code(CodeUtil.getNewCode("IO_CODE")); + mst.setBiz_date(form.getString("biz_date")); + mst.setBill_type(form.getString("bill_type")); + mst.setIo_type(IOSEnum.IO_TYPE.code("入库")); + mst.setBill_status(IOSEnum.BILL_STATUS.code("生成")); + mst.setRemark(form.getString("remark")); + mst.setWorkshop_id(form.getString("product_code")); + mst.setPoint_code(form.getString("point_code")); + 仓库数据: + { + StIvtBsrealstorattr stor = storattrService.getOne(new QueryWrapper().eq("stor_id", form.getString("stor_id"))); + mst.setStor_id(stor.getStor_id()); + mst.setStor_code(stor.getStor_code()); + mst.setStor_name(stor.getStor_name()); + } + packageRow(mst, JSONObject.parseObject(JSON.toJSONString(item))); + mst.setCreate_id(SecurityUtils.getCurrentUserId()); + mst.setCreate_name(SecurityUtils.getCurrentNickName()); + mst.setCreate_time(DateUtil.now()); + this.save(mst); + + // 更新载具扩展属性 + iMdPbStoragevehicleextService.update( + new UpdateWrapper().lambda() + .set(MdPbStoragevehicleext::getMaterial_id, mst.getMaterial_id()) + .set(MdPbStoragevehicleext::getWeight, mst.getPlan_qty()) + .eq(MdPbStoragevehicleext::getStoragevehicle_code, mst.getStoragevehicle_code()) + ); + + // 判断是否自动下发 + if (ObjectUtil.isNotEmpty(form.getString("auto_send"))) { + confirmTask(JSONObject.parseObject(JSON.toJSONString(mst))); + } + } + } + + private void packageRow(StIvtIostorinvHrBcp mst, JSONObject row) { + mst.setMaterial_id(row.getString("material_id")); + mst.setPcsn(StringUtils.isNotEmpty(row.getString("pcsn")) ? row.getString("pcsn") : DateUtil.today()); + mst.setPlan_qty(row.getBigDecimal("plan_qty")); + mst.setQuality_scode(row.getString("quality_scode")); + mst.setQty_unit_id(row.getString("base_unit_id")); + mst.setBase_bill_code(row.getString("base_bill_code")); + mst.setQty_unit_name(row.getString("base_unit_name")); + mst.setUnit_weight(row.getBigDecimal("unit_weight")); + // 载具信息 + { + MdPbStoragevehicleinfo vehicleDao = iMdPbStoragevehicleinfoService.getOne( + new QueryWrapper().lambda() + .eq(MdPbStoragevehicleinfo::getStoragevehicle_code, row.getString("storagevehicle_code")) + ); + + if (ObjectUtil.isEmpty(vehicleDao)) throw new BadRequestException("载具不存在!"); + + mst.setStoragevehicle_code(vehicleDao.getStoragevehicle_code()); + mst.setStoragevehicle_id(vehicleDao.getStoragevehicle_id()); + + // 更新载具对应物料关系、数量 + MdPbStoragevehicleext vehicleExtDao = iMdPbStoragevehicleextService.getOne( + new QueryWrapper().lambda() + .eq(MdPbStoragevehicleext::getStoragevehicle_code, row.getString("storagevehicle_code")) + ); + if (ObjectUtil.isNotEmpty(vehicleExtDao)) { + vehicleExtDao.setWeight(mst.getPlan_qty()); + vehicleExtDao.setMaterial_id(mst.getMaterial_id()); + iMdPbStoragevehicleextService.updateById(vehicleExtDao); + } + } + } + + @Override + public void onlyConfirm(JSONObject form) { + Assert.notNull(new Object[]{form.getString("struct_id"),form.getString("stor_id"),form.getString("material_code")},"参数不全"); + structivtBcpService.removeById(form.getString("struct_id")); + StIvtBsrealstorattr stor = storattrService.getById(form.getString("stor_id")); + MdMeMaterialbase mdMeMaterialbase = materialbaseService.getOne(new QueryWrapper() + .eq("material_code",form.getString("material_code"))); + if (mdMeMaterialbase==null){ + throw new BadRequestException("物料编码不正确"+form.getString("material_code")); + } + //新增库存 + StIvtStructivtHrBcp ivtDao = StIvtStructivtHrBcp.builder() + .struct_id(form.getString("struct_id")) + .struct_code(form.getString("struct_code")) + .struct_name(form.getString("struct_name")) + .material_id(mdMeMaterialbase.getMaterial_id()) + .quality_scode(IVTEnum.QUALITY_SCODE.code("合格品")) + .pcsn(DateUtil.today()) + .ivt_level(IVTEnum.IVT_LEVEL.code("一级")) + .is_active(true) + .qty_unit_id(mdMeMaterialbase.getBase_unit_id()) + .instorage_time(DateUtil.now()) + .stor_id(form.getString("stor_id")) + .canuse_qty(form.getBigDecimal("qty")) + .workshop_id(stor.getProduct_area()) + .unit_weight(mdMeMaterialbase.getNet_weight()) + .build(); + structivtBcpService.save(ivtDao); + // 插入库存变动记录 + JSONObject param = JSONObject.parseObject(JSON.toJSONString(ivtDao)); + param.put("change_type", ChangeIvtUtil.SUBWAREHOUSING_ADDIVT_QTY); + param.put("change_qty", ivtDao.getCanuse_qty()); + param.put("result_qty", ivtDao.getCanuse_qty()); + param.put("bill_code",""); + param.put("inv_id",""); + param.put("bill_type_scode",""); + iStIvtStructivtflowService.insetIvtChange(param); + //维护载具 + structattrService.update(new UpdateWrapper().lambda() + .eq(StIvtStructattr::getStruct_code, form.getString("struct_code")) + .set(StIvtStructattr::getLock_type, IOSEnum.LOCK_TYPE.code("未锁定")) + .set(StIvtStructattr::getInv_code, "") + .set(StIvtStructattr::getStoragevehicle_code, form.getString("storagevehicle_code"))); + } + + @Override + @Transactional + public String confirm(JSONObject form) { + Assert.notNull(new Object[]{form, form.get("iostorinv_id")}, "请求参数不能为空"); + StIvtIostorinvHrBcp mst = this.getById(form.getString("iostorinv_id")); + //checkParam(mst); + if (StringUtils.isEmpty(mst.getStruct_code())) { + throw new BadRequestException("当前入库单还未分配仓位!"); + } + + mst.setBill_status(IOSEnum.BILL_STATUS.code("完成")); + mst.setUpdate_time(DateUtil.now()); + mst.setUpdate_id(SecurityUtils.getCurrentUserId()); + mst.setUpdate_name(SecurityUtils.getCurrentNickName()); + this.updateById(mst); + + //新增库存 + StIvtStructivtHrBcp ivtDao = StIvtStructivtHrBcp.builder() + .struct_id(mst.getStruct_id()) + .struct_code(mst.getStruct_code()) + .struct_name(mst.getStruct_name()) + .material_id(mst.getMaterial_id()) + .quality_scode(mst.getQuality_scode()) + .pcsn(mst.getPcsn()) + .ivt_level(mst.getIvt_level()) + .is_active(mst.getIs_active()) + .qty_unit_id(mst.getQty_unit_id()) + .instorage_time(DateUtil.now()) + .stor_id(mst.getStor_id()) + .canuse_qty(mst.getPlan_qty()) + .workshop_id(mst.getWorkshop_id()) + .unit_weight(mst.getUnit_weight()) + .build(); + structivtBcpService.save(ivtDao); + + // 插入库存变动记录 + JSONObject param = JSONObject.parseObject(JSON.toJSONString(ivtDao)); + param.put("change_type", ChangeIvtUtil.SUBWAREHOUSING_ADDIVT_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.getIostorinv_id()); + param.put("bill_type_scode",mst.getBill_type()); + iStIvtStructivtflowService.insetIvtChange(param); + + //维护载具 + structattrService.update(new UpdateWrapper().lambda() + .eq(StIvtStructattr::getStruct_code, mst.getStruct_code()) + .set(StIvtStructattr::getLock_type, IOSEnum.LOCK_TYPE.code("未锁定")) + .set(StIvtStructattr::getInv_code, "") + .set(StIvtStructattr::getStoragevehicle_code, mst.getStoragevehicle_code())); + + // 更新任务为完成 + iSchBaseTaskService.update( + new UpdateWrapper().lambda() + .set(SchBaseTask::getTask_status, TaskStatusEnum.FINISHED.getCode()) + .eq(SchBaseTask::getTask_id, mst.getTask_id()) + ); + return null; + } + + @Override + @Transactional + public String confirmTask(JSONObject form) { + RedissonUtils.lock(()->{ + Assert.notNull(new Object[]{form, form.get("iostorinv_id")}, "请求参数不能为空"); + StIvtIostorinvHrBcp mst = this.getById(form.getString("iostorinv_id")); + checkParam(mst); + //分配货位。下发任务,更新主单据状态。更新明细任务 + StIvtSectattr sect = sectattrService.getOne( + new QueryWrapper().lambda() + .eq(StIvtSectattr::getSect_name, "海柔半成品库区") + ); + JSONObject jo = new JSONObject(); + jo.put("sect_id", sect.getSect_id()); + jo.put("stor_id", sect.getStor_id()); + jo.put("rule_type", RuleUtil.PRODUCTION_IN_1); + StIvtStructattr stIvtStructattr = divRuleCpService.divRuleIn(jo); + + if (ObjectUtil.isEmpty(stIvtStructattr)) { + throw new BadRequestException("无可分配货位"); + } + + 仓库信息: + { + mst.setSect_id(stIvtStructattr.getSect_id()); + mst.setSect_code(stIvtStructattr.getSect_code()); + mst.setSect_name(stIvtStructattr.getSect_name()); + mst.setStruct_id(stIvtStructattr.getStruct_id()); + mst.setStruct_code(stIvtStructattr.getStruct_code()); + mst.setStruct_name(stIvtStructattr.getStruct_name()); + } + + PointEvent event = PointEvent.builder() + .type(AcsTaskEnum.TASK_STRUCT_HR_IN) + .acs_task_type("7") + .task_group_id(IdUtil.getStringId()) + .point_code1(mst.getPoint_code()) + .point_code3(stIvtStructattr.getStruct_code()) + .vehicle_code(mst.getStoragevehicle_code()) + .product_area(mst.getWorkshop_id()) + .extParam(MapOf.of("material_id",mst.getMaterial_id(), + "material_qty",mst.getPlan_qty(),"table_fk_id",mst.getIostorinv_id())) + .callback((Consumer) mst::setTask_id) + .build(); + BussEventMulticaster.Publish(event); + + mst.setWork_status(IOSEnum.WORK_STATUS.code("生成")); + mst.setBill_status(IOSEnum.BILL_STATUS.code("分配完")); + mst.setUpdate_time(DateUtil.now()); + mst.setUpdate_id(SecurityUtils.getCurrentUserId()); + mst.setUpdate_name(SecurityUtils.getCurrentNickName()); + this.updateById(mst); + // 下发任务 + sendTask(mst.getTask_id()); + structattrService.lockStruct(stIvtStructattr.getStruct_code(), "入库锁",mst.getTask_id()); + },"banchengpin_ruku",2); + return null; + } + + private void checkParam(StIvtIostorinvHrBcp mst) { + if (mst == null || mst.getIs_delete() == true) { + throw new BadRequestException("单据不存在"); + } + if (!IOSEnum.BILL_STATUS.code("生成").equals(mst.getBill_status())) { + throw new BadRequestException("单据" + mst.getBill_code() + "状态不是生成状态"); + } + } + + @Override + @Transactional + public String updateBill(JSONObject form) { + Assert.notNull(new Object[]{form, form.get("iostorinv_id")}, "请求参数不能为空"); + StIvtIostorinvHrBcp mst = form.toJavaObject(StIvtIostorinvHrBcp.class); + mst.setUpdate_id(SecurityUtils.getCurrentUserId()); + mst.setUpdate_name(SecurityUtils.getCurrentNickName()); + mst.setUpdate_time(DateUtil.now()); + for (Object item : form.getJSONArray("tableData")) { + packageRow(mst, JSONObject.parseObject(JSON.toJSONString(item))); + } + this.updateById(mst); + return mst.getIostorinv_id(); + } + + @Override + @Transactional + public void taskOperate(JSONObject form) { + String task_id = form.getString("task_id"); + String status = form.getString("status"); + StIvtIostorinvHrBcp mst = this.getOne(new QueryWrapper().lambda().eq(StIvtIostorinvHrBcp::getTask_id, task_id)); + if (status.equals(AcsTaskEnum.STATUS_FINISH.getCode())) { + if (mst!=null || !mst.getBill_status().equals(IOSEnum.BILL_STATUS.code("完成"))){ + this.update(new UpdateWrapper().lambda() + .eq(StIvtIostorinvHrBcp::getTask_id, task_id) + .set(StIvtIostorinvHrBcp::getWork_status, IOSEnum.WORK_STATUS.code("完成"))); + JSONObject mst_jo = new JSONObject(); + mst_jo.put("iostorinv_id", mst.getIostorinv_id()); + this.confirm(mst_jo); + } + } else if (status.equals(AcsTaskEnum.STATUS_START.getCode())){ + //执行中 + this.update(new UpdateWrapper().lambda().eq(StIvtIostorinvHrBcp::getTask_id, task_id) + .set(StIvtIostorinvHrBcp::getWork_status, IOSEnum.WORK_STATUS.code("执行中"))); + + // 更新任务 + iSchBaseTaskService.update( + new UpdateWrapper().lambda() + .set(SchBaseTask::getTask_status,TaskStatusEnum.EXECUTING.getCode()) + .eq(SchBaseTask::getTask_id,task_id ) + ); + }else if (status.equals(AcsTaskEnum.STATUS_CANNEL.getCode())){ + // 取消 + delTask(task_id); + } + } + + @Override + public List getPdaAll(JSONObject form) { + return this.baseMapper.getPdaAll(form); + } + + private void delTask(String task_id) { + + StIvtIostorinvHrBcp mstDao = this.getOne( + new QueryWrapper().lambda() + .eq(StIvtIostorinvHrBcp::getTask_id, task_id) + ); + + // 解锁仓位 + structattrService.update( + new UpdateWrapper().lambda() + .set(StIvtStructattr::getLock_type, IOSEnum.LOCK_TYPE.code("未锁定")) + .eq(StIvtStructattr::getStruct_id, mstDao.getStruct_id()) + ); + + // 删除任务 + iSchBaseTaskService.update( + new UpdateWrapper().lambda() + .set(SchBaseTask::getTask_status, TaskStatusEnum.CANCEL.getCode()) + .eq(SchBaseTask::getTask_id, mstDao.getTask_id()) + ); + + // 更新主表 + mstDao.setSect_id(""); + mstDao.setSect_code(""); + mstDao.setSect_name(""); + mstDao.setStruct_id(""); + mstDao.setStruct_code(""); + mstDao.setStruct_name(""); + mstDao.setTask_id(""); + mstDao.setWork_status(IOSEnum.WORK_STATUS.code("未生成")); + mstDao.setBill_status(IOSEnum.BILL_STATUS.code("生成")); + this.updateById(mstDao); + } + + public void sendTask(String task_id) { + + SchBaseTask taskDao = iSchBaseTaskService.getById(task_id); + 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); + } + +} diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanagehr/service/iostorInv/impl/StIvtIostorinvHrBcpOutServiceImpl.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanagehr/service/iostorInv/impl/StIvtIostorinvHrBcpOutServiceImpl.java new file mode 100644 index 00000000..1a7093d1 --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanagehr/service/iostorInv/impl/StIvtIostorinvHrBcpOutServiceImpl.java @@ -0,0 +1,556 @@ +package org.nl.wms.storage_manage.semimanagehr.service.iostorInv.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.service.impl.ServiceImpl; +import com.github.pagehelper.Page; +import com.github.pagehelper.PageHelper; +import io.jsonwebtoken.lang.Assert; +import org.apache.commons.lang3.StringUtils; +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.RedissonUtils; +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.service.material.IMdMeMaterialbaseService; +import org.nl.wms.masterdata_manage.service.material.dao.MdMeMaterialbase; +import org.nl.wms.masterdata_manage.service.vehicle.IMdPbStoragevehicleextService; +import org.nl.wms.masterdata_manage.service.vehicle.dao.MdPbStoragevehicleext; +import org.nl.wms.masterdata_manage.storage.service.storage.IStIvtBsrealstorattrService; +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.StIvtBsrealstorattr; +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.pcs_manage.PCSEnum; +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.basedata.service.record.service.IStIvtStructivtflowService; +import org.nl.wms.storage_manage.productmanage.util.ChangeIvtUtil; +import org.nl.wms.storage_manage.productmanage.util.DivRuleCpService; +import org.nl.wms.storage_manage.productmanage.util.RuleUtil; +import org.nl.wms.storage_manage.semimanage.service.structIvt.IStIvtStructivtBcpService; +import org.nl.wms.storage_manage.semimanage.service.structIvt.dao.StIvtStructivtBcp; +import org.nl.wms.storage_manage.semimanagehr.service.iostorInv.IStIvtIostorinvHrBcpOutService; +import org.nl.wms.storage_manage.semimanagehr.service.iostorInv.dao.StIvtIostorinvHrBcp; +import org.nl.wms.storage_manage.semimanagehr.service.iostorInv.dao.mapper.StIvtIostorinvHrBcpMapper; +import org.nl.wms.storage_manage.semimanagehr.service.iostorInv.dto.HrBcpIostorInvQuery; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Propagation; +import org.springframework.transaction.annotation.Transactional; + +import java.math.BigDecimal; +import java.util.List; +import java.util.Map; +import java.util.function.Consumer; + +/** + *

+ * 出入库记录表 服务实现类 + *

+ * + * @author generator + * @since 2023-05-10 + */ +@Service +public class StIvtIostorinvHrBcpOutServiceImpl extends ServiceImpl implements IStIvtIostorinvHrBcpOutService { + + @Autowired + private IStIvtBsrealstorattrService storattrService; + @Autowired + private IStIvtStructivtBcpService structivtBcpService; + @Autowired + private IStIvtStructattrService structattrService; + @Autowired + private DivRuleCpService divRuleCpService; + @Autowired + private IStIvtSectattrService sectattrService; + @Autowired + private ISchBaseTaskService iSchBaseTaskService; // 任务表服务 + @Autowired + private IMdMeMaterialbaseService materialbaseService; + @Autowired + private IStIvtStructivtflowService iStIvtStructivtflowService; // 库存变动服务 + @Autowired + protected IMdPbStoragevehicleextService iMdPbStoragevehicleextService; // 载具扩展属性信息表服务 + + @Override + public Object queryDtl(HrBcpIostorInvQuery query, PageQuery pageQuery) { + Page page = PageHelper.startPage(pageQuery.getPage() + 1, pageQuery.getSize()); + TableDataInfo build = TableDataInfo.build(this.getIoDtl(query)); + build.setTotalElements(page.getTotal()); + return build; + } + + @Override + public List getIoDtl(HrBcpIostorInvQuery query) { + return this.baseMapper.getIostorinv(query); + } + + @Override + public void delete(Long[] ids) { + for (Long id : ids) { + StIvtIostorinvHrBcp dao = this.getOne(new QueryWrapper().eq("iostorinv_id", id)); + dao.setIs_delete(true); + + //仓位解锁 + structattrService.update(new UpdateWrapper().set("inv_code", "").set("lock_type", IOSEnum.LOCK_TYPE.code("未锁定")).eq("struct_id", dao.getStruct_id())); + this.updateById(dao); + } + } + + @Override + @Transactional + public void create(JSONObject form) { + Assert.notNull(form, "参数不能为空"); + for (Object item : form.getJSONArray("tableData")) { + StIvtIostorinvHrBcp mst = new StIvtIostorinvHrBcp(); + mst.setIostorinv_id(IdUtil.getStringId()); + mst.setBill_code(CodeUtil.getNewCode("IO_CODE")); + mst.setBiz_date(form.getString("biz_date")); + mst.setBill_type(form.getString("bill_type")); + mst.setIo_type(IOSEnum.IO_TYPE.code("出库")); + mst.setBill_status(IOSEnum.BILL_STATUS.code("生成")); + mst.setRemark(form.getString("remark")); + mst.setWorkshop_id(form.getString("product_code")); + mst.setPoint_code(form.getString("point_code")); + 仓库数据: + { + StIvtBsrealstorattr stor = storattrService.getOne(new QueryWrapper().eq("stor_id", form.getString("stor_id"))); + mst.setStor_id(stor.getStor_id()); + mst.setStor_code(stor.getStor_code()); + mst.setStor_name(stor.getStor_name()); + } + packageRow(mst, JSONObject.parseObject(JSON.toJSONString(item))); + mst.setCreate_id(SecurityUtils.getCurrentUserId()); + mst.setCreate_name(SecurityUtils.getCurrentNickName()); + mst.setCreate_time(DateUtil.now()); + this.save(mst); + + //锁定起点 + structattrService.update(new UpdateWrapper().lambda() + .eq(StIvtStructattr::getStruct_code, mst.getStruct_code()) + .set(StIvtStructattr::getInv_code,mst.getBill_code()) + .set(StIvtStructattr::getLock_type, IOSEnum.LOCK_TYPE.code("出库锁"))); + + // 判断是否自动下发 + if (ObjectUtil.isNotEmpty(form.getString("auto_send"))) { + confirmTask(JSONObject.parseObject(JSON.toJSONString(mst))); + } + } + } + + private void packageRow(StIvtIostorinvHrBcp mst, JSONObject row) { + mst.setMaterial_id(row.getString("material_id")); + mst.setPcsn(StringUtils.isNotEmpty(row.getString("pcsn")) ? row.getString("pcsn") : DateUtil.today()); + mst.setPlan_qty(row.getBigDecimal("plan_qty")); + mst.setQuality_scode(row.getString("quality_scode")); + mst.setQty_unit_id(row.getString("qty_unit_id")); + mst.setBase_bill_code(row.getString("base_bill_code")); + mst.setQty_unit_name(row.getString("qty_unit_name")); + mst.setUnit_weight(row.getBigDecimal("unit_weight")); + mst.setStoragevehicle_code(row.getString("storagevehicle_code")); + mst.setStoragevehicle_id(row.getString("storagevehicle_id")); + mst.setSect_id(row.getString("sect_id")); + mst.setSect_code(row.getString("sect_code")); + mst.setSect_name(row.getString("sect_name")); + mst.setStruct_id(row.getString("struct_id")); + mst.setStruct_code(row.getString("struct_code")); + mst.setStruct_name(row.getString("struct_name")); + } + + @Override + @Transactional + public String confirm(JSONObject form) { + Assert.notNull(new Object[]{form, form.get("iostorinv_id")}, "请求参数不能为空"); + StIvtIostorinvHrBcp mst = this.getById(form.getString("iostorinv_id")); + //checkParam(mst); + if (StringUtils.isEmpty(mst.getStruct_code())) { + throw new BadRequestException("当前入库单还未分配仓位!"); + } + + mst.setBill_status(IOSEnum.BILL_STATUS.code("完成")); + mst.setUpdate_time(DateUtil.now()); + mst.setUpdate_id(SecurityUtils.getCurrentUserId()); + mst.setUpdate_name(SecurityUtils.getCurrentNickName()); + this.updateById(mst); + + StIvtStructivtBcp ivtDao = structivtBcpService.getById(mst.getStruct_id()); + //删除库存 + structivtBcpService.remove(new QueryWrapper().eq("struct_id", mst.getStruct_id())); + + // 插入库存变动记录 + JSONObject param = JSONObject.parseObject(JSON.toJSONString(ivtDao)); + param.put("change_type", ChangeIvtUtil.SUBFROZEN_SUBIVT_QTY); + param.put("change_qty", ivtDao.getCanuse_qty()); + param.put("result_qty", 0); + param.put("bill_code",mst.getBill_code()); + param.put("inv_id",mst.getIostorinv_id()); + param.put("bill_type_scode",mst.getBill_type()); + iStIvtStructivtflowService.insetIvtChange(param); + + //维护载具 + structattrService.update(new UpdateWrapper().lambda() + .eq(StIvtStructattr::getStruct_code, mst.getStruct_code()) + .set(StIvtStructattr::getLock_type, IOSEnum.LOCK_TYPE.code("未锁定")) + .set(StIvtStructattr::getInv_code,"") + .set(StIvtStructattr::getStoragevehicle_code, "")); + + // 更新任务为完成 + iSchBaseTaskService.update( + new UpdateWrapper().lambda() + .set(SchBaseTask::getTask_status, TaskStatusEnum.FINISHED.getCode()) + .eq(SchBaseTask::getTask_id, mst.getTask_id()) + ); + + // 更新载具扩展属性 - 释放载具对应物料关系 清空数量 + iMdPbStoragevehicleextService.update( + new MdPbStoragevehicleext() + .setMaterial_id("") + .setStorage_qty(BigDecimal.valueOf(0)), + new QueryWrapper().lambda() + .eq(MdPbStoragevehicleext::getStoragevehicle_code,mst.getStoragevehicle_code()) + ); + + return null; + } + + + @Override + @Transactional + public void onlyConfirm(JSONObject form) { + + StIvtStructivtBcp ivtDao = structivtBcpService.getById(form.getString("struct_id")); + if (ivtDao!=null){ + //删除库存 + structivtBcpService.remove(new QueryWrapper().eq("struct_id", form.getString("struct_id"))); + + // 插入库存变动记录 + JSONObject param = JSONObject.parseObject(JSON.toJSONString(ivtDao)); + param.put("change_type", ChangeIvtUtil.SUBFROZEN_SUBIVT_QTY); + param.put("change_qty", ivtDao.getCanuse_qty()); + param.put("result_qty", 0); + param.put("bill_code",""); + param.put("inv_id",""); + param.put("bill_type_scode",""); + iStIvtStructivtflowService.insetIvtChange(param); + //维护载具 + structattrService.update(new UpdateWrapper().lambda() + .eq(StIvtStructattr::getStruct_code, ivtDao.getStruct_code()) + .set(StIvtStructattr::getLock_type, IOSEnum.LOCK_TYPE.code("未锁定")) + .set(StIvtStructattr::getInv_code,"") + .set(StIvtStructattr::getStoragevehicle_code, StringUtils.isNotEmpty(form.getString("storagevehicle_code"))?form.getString("storagevehicle_code"):"")); + } + if (StringUtils.isNotEmpty(form.getString("storagevehicle_code"))){ + // 更新载具扩展属性 - 释放载具对应物料关系 清空数量 + iMdPbStoragevehicleextService.update( + new MdPbStoragevehicleext() + .setMaterial_id("") + .setStorage_qty(BigDecimal.valueOf(0)), + new QueryWrapper().lambda() + .eq(MdPbStoragevehicleext::getStoragevehicle_code,form.getString("storagevehicle_code")) + ); + } + } + + @Override + @Transactional + public StIvtStructivtBcp autoConfirmout(JSONObject form) { + StIvtStructivtBcp bcpStruct = RedissonUtils.lockAndReturn(() -> { + MdMeMaterialbase material = materialbaseService.getOne(new QueryWrapper().eq("material_id", form.getString("material_id"))); + JSONObject param = new JSONObject(); + param.put("stor_id", form.getString("stor_id")); + param.put("sect_id", form.getString("sect_id")); + param.put("material_id", form.getString("material_id")); + param.put("rule_type", RuleUtil.PRODUCTION_OUT_2); + // 2.锁定仓位 + StIvtStructivtBcp stIvtStructivtBcp; + if (form.get("stIvtStructivt")==null){ + stIvtStructivtBcp = divRuleCpService.divRuleOutBcp(param); + }else { + stIvtStructivtBcp=(StIvtStructivtBcp)form.get("stIvtStructivt"); + } + if ((stIvtStructivtBcp == null)){ + throw new BadRequestException("无可用货位"); + } + StIvtIostorinvHrBcp mst = new StIvtIostorinvHrBcp(); + mst.setIostorinv_id(IdUtil.getStringId()); + mst.setBill_code(CodeUtil.getNewCode("IO_CODE")); + mst.setBiz_date(form.getString("biz_date")); + mst.setBill_type(form.getString("bill_type")); + mst.setIo_type(IOSEnum.IO_TYPE.code("出库")); + mst.setBill_status(IOSEnum.BILL_STATUS.code("生成")); + mst.setRemark(form.getString("remark")); + mst.setWorkshop_id(form.getString("product_code")); + mst.setPoint_code(form.getString("point_code")); + mst.setMaterial_id(material.getMaterial_id()); + mst.setPcsn(StringUtils.isNotEmpty(form.getString("pcsn")) ? form.getString("pcsn") : DateUtil.today()); + mst.setPlan_qty(stIvtStructivtBcp.getCanuse_qty()); + mst.setQuality_scode(stIvtStructivtBcp.getQuality_scode()); + mst.setQty_unit_id(stIvtStructivtBcp.getQty_unit_id()); + mst.setBase_bill_code(""); + mst.setQty_unit_name(" "); + mst.setUnit_weight(material.getNet_weight()); + mst.setStoragevehicle_code(" "); + mst.setStoragevehicle_id(" "); + 仓库数据: + { + StIvtBsrealstorattr stor = storattrService.getOne(new QueryWrapper().eq("stor_id", form.getString("stor_id"))); + mst.setStor_id(stor.getStor_id()); + mst.setStor_code(stor.getStor_code()); + mst.setStor_name(stor.getStor_name()); + StIvtSectattr sect = sectattrService.getById(form.getString("sect_id")); + mst.setSect_code(sect.getSect_code()); + mst.setSect_id(sect.getSect_id()); + mst.setSect_name(sect.getSect_name()); + mst.setStruct_id(stIvtStructivtBcp.getStruct_id()); + mst.setStruct_code(stIvtStructivtBcp.getStruct_code()); + mst.setStruct_name(stIvtStructivtBcp.getStruct_name()); + } + mst.setCreate_id("1"); + mst.setCreate_name("acs"); + mst.setCreate_time(DateUtil.now()); + PointEvent event = PointEvent.builder() + .type(AcsTaskEnum.TASK_STRUCT_OUT) + .point_code1(stIvtStructivtBcp.getStruct_code()) + .point_code3(mst.getPoint_code()) + .acs_task_type(AcsTaskEnum.ACS_TASK_TYPE_NON_WEIGHING_TASK_OF_PS20.getCode()) + .task_group_id(IdUtil.getStringId()) + .extParam(MapOf.of("material_qty",stIvtStructivtBcp.getCanuse_qty(), + "material_id",stIvtStructivtBcp.getMaterial_id(),"qtyArr",form.get("qtyArr"))) + .vehicle_code(mst.getStoragevehicle_code()) + .product_area(mst.getWorkshop_id()) + .callback((Consumer) mst::setTask_id) + .build(); + BussEventMulticaster.Publish(event); + mst.setWork_status(IOSEnum.WORK_STATUS.code("生成")); + mst.setBill_status(IOSEnum.BILL_STATUS.code("分配完")); + this.save(mst); + this.lockStruct(stIvtStructivtBcp.getStruct_code(), "出库锁", mst.getTask_id()); + sendTask(mst.getTask_id()); + return stIvtStructivtBcp; + }, form.getString("material_id"), 1); + return bcpStruct; + } + + @Override + public StIvtStructattr autoConfirmin(JSONObject form) { + final StIvtStructattr[] structattr = new StIvtStructattr[1]; + RedissonUtils.lock(()->{ + MdMeMaterialbase material = materialbaseService.getOne(new QueryWrapper().eq("material_id", form.getString("material_id"))); + JSONObject param = new JSONObject(); + param.put("stor_id", form.getString("stor_id")); + param.put("sect_id", form.getString("sect_id")); + param.put("material_id", form.getString("material_id")); + param.put("rule_type", RuleUtil.PRODUCTION_OUT_2); + // 2.锁定仓位 + structattr[0] = divRuleCpService.divRuleIn(param); + if (structattr[0] != null){ + StIvtIostorinvHrBcp mst = new StIvtIostorinvHrBcp(); + mst.setIostorinv_id(IdUtil.getStringId()); + mst.setBill_code(CodeUtil.getNewCode("IO_CODE")); + mst.setBiz_date(form.getString("biz_date")); + mst.setBill_type(form.getString("bill_type")); + mst.setIo_type(IOSEnum.IO_TYPE.code("出库")); + mst.setBill_status(IOSEnum.BILL_STATUS.code("生成")); + mst.setRemark(form.getString("remark")); + mst.setWorkshop_id(form.getString("product_code")); + mst.setPoint_code(form.getString("point_code")); + mst.setMaterial_id(material.getMaterial_id()); + mst.setPcsn(StringUtils.isNotEmpty(form.getString("pcsn")) ? form.getString("pcsn") : DateUtil.today()); + mst.setBase_bill_code(""); + mst.setQty_unit_name(" "); + mst.setUnit_weight(material.getNet_weight()); + mst.setStoragevehicle_code(" "); + mst.setStoragevehicle_id(" "); + 仓库数据: + { + StIvtBsrealstorattr stor = storattrService.getOne(new QueryWrapper().eq("stor_id", form.getString("stor_id"))); + mst.setStor_id(stor.getStor_id()); + mst.setStor_code(stor.getStor_code()); + mst.setStor_name(stor.getStor_name()); + StIvtSectattr sect = sectattrService.getById(form.getString("sect_id")); + mst.setSect_code(sect.getSect_code()); + mst.setSect_id(sect.getSect_id()); + mst.setSect_name(sect.getSect_name()); + mst.setStruct_id(structattr[0].getStruct_id()); + mst.setStruct_code(structattr[0].getStruct_code()); + mst.setStruct_name(structattr[0].getStruct_name()); + } + mst.setCreate_id("1"); + mst.setCreate_name("acs"); + mst.setCreate_time(DateUtil.now()); + PointEvent event = PointEvent.builder() + .type(AcsTaskEnum.TASK_STRUCT_OUT) + .point_code1(mst.getPoint_code()) + .point_code3(structattr[0].getStruct_code()) + .vehicle_code(mst.getStoragevehicle_code()) + .product_area(mst.getWorkshop_id()) + .callback((Consumer) mst::setTask_id) + .build(); + BussEventMulticaster.Publish(event); + mst.setWork_status(IOSEnum.WORK_STATUS.code("生成")); + mst.setBill_status(IOSEnum.BILL_STATUS.code("分配完")); + this.save(mst); + this.lockStruct(structattr[0].getStruct_code(), "出库锁",mst.getTask_id()); + } + } ,"banchengpin_ruku",2); + return structattr[0]; + } + + @Override + @Transactional(propagation = Propagation.REQUIRES_NEW) + public void lockStruct(String struct, String type, String inv_code) { + structattrService.update(new UpdateWrapper().lambda() + .eq(StIvtStructattr::getStruct_code, struct) + .set(StIvtStructattr::getLock_type, IOSEnum.LOCK_TYPE.code(type)) + .set(StIvtStructattr::getInv_code,inv_code)); + } + + @Override + @Transactional + public String confirmTask(JSONObject form) { + Assert.notNull(new Object[]{form, form.get("iostorinv_id")}, "请求参数不能为空"); + StIvtIostorinvHrBcp mst = this.getById(form.getString("iostorinv_id")); + checkParam(mst); + + PointEvent event = PointEvent.builder() + .type(AcsTaskEnum.TASK_STRUCT_OUT) + .acs_task_type("7") + .task_group_id(IdUtil.getStringId()) + .point_code3(mst.getPoint_code()) + .point_code1(mst.getStruct_code()) + .vehicle_code(mst.getStoragevehicle_code()) + .product_area(mst.getWorkshop_id()) + .callback((Consumer) mst::setTask_id) + .build(); + BussEventMulticaster.Publish(event); + + mst.setWork_status(IOSEnum.WORK_STATUS.code("生成")); + mst.setBill_status(IOSEnum.BILL_STATUS.code("分配完")); + mst.setUpdate_time(DateUtil.now()); + mst.setUpdate_id(SecurityUtils.getCurrentUserId()); + mst.setUpdate_name(SecurityUtils.getCurrentNickName()); + this.updateById(mst); + + // 下发任务 + sendTask(mst.getTask_id()); + return mst.getTask_id(); + } + + + public void sendTask(String task_id) { + + SchBaseTask taskDao = iSchBaseTaskService.getById(task_id); + 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); + } + + private void checkParam(StIvtIostorinvHrBcp mst) { + if (mst == null || mst.getIs_delete() == true) { + throw new BadRequestException("单据不存在"); + } + if (!IOSEnum.BILL_STATUS.code("生成").equals(mst.getBill_status())) { + throw new BadRequestException("单据" + mst.getBill_code() + "状态不是生成状态"); + } + } + + @Override + @Transactional + public String updateBill(JSONObject form) { + Assert.notNull(new Object[]{form, form.get("iostorinv_id")}, "请求参数不能为空"); + StIvtIostorinvHrBcp mst = form.toJavaObject(StIvtIostorinvHrBcp.class); + mst.setUpdate_id(SecurityUtils.getCurrentUserId()); + mst.setUpdate_name(SecurityUtils.getCurrentNickName()); + mst.setUpdate_time(DateUtil.now()); + for (Object item : form.getJSONArray("tableData")) { + packageRow(mst, JSONObject.parseObject(JSON.toJSONString(item))); + } + this.updateById(mst); + return mst.getIostorinv_id(); + } + + @Override + @Transactional + public void taskOperate(JSONObject form) { + String task_id = form.getString("task_id"); + String status = form.getString("status"); + StIvtIostorinvHrBcp mst = this.getOne(new QueryWrapper().lambda() + .eq(StIvtIostorinvHrBcp::getTask_id, task_id)); + if (mst!=null && !mst.getWork_status().equals(PCSEnum.BILL_STATUS.code("完成")) && status.equals(AcsTaskEnum.STATUS_FINISH.getCode())) { + // 完成 + this.update(new UpdateWrapper().lambda() + .eq(StIvtIostorinvHrBcp::getTask_id, task_id) + .set(StIvtIostorinvHrBcp::getWork_status, IOSEnum.WORK_STATUS.code("完成"))); + JSONObject mst_jo = new JSONObject(); + mst_jo.put("iostorinv_id", mst.getIostorinv_id()); + this.confirm(mst_jo); + } else if (status.equals(AcsTaskEnum.STATUS_START.getCode())) { + // 执行中 + this.update(new UpdateWrapper().lambda() + .eq(StIvtIostorinvHrBcp::getTask_id, task_id) + .set(StIvtIostorinvHrBcp::getWork_status, IOSEnum.WORK_STATUS.code("执行中"))); + + // 更新任务 + iSchBaseTaskService.update( + new UpdateWrapper().lambda() + .set(SchBaseTask::getTask_status,TaskStatusEnum.EXECUTING.getCode()) + .eq(SchBaseTask::getTask_id,task_id ) + ); + } else if(status.equals(AcsTaskEnum.STATUS_CANNEL.getCode())) { + // 取消 + delTask(task_id); + } + } + + private void delTask(String task_id) { + + StIvtIostorinvHrBcp mstDao = this.getOne( + new QueryWrapper().lambda() + .eq(StIvtIostorinvHrBcp::getTask_id, task_id) + ); + + // 删除任务 + iSchBaseTaskService.update( + new UpdateWrapper().lambda() + .set(SchBaseTask::getTask_status, TaskStatusEnum.CANCEL.getCode()) + .eq(SchBaseTask::getTask_id, mstDao.getTask_id()) + ); + + // 更新主表 + mstDao.setTask_id(""); + mstDao.setWork_status(IOSEnum.WORK_STATUS.code("未生成")); + mstDao.setBill_status(IOSEnum.BILL_STATUS.code("生成")); + this.updateById(mstDao); + } +} 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 new file mode 100644 index 00000000..c1182715 --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanagehr/service/structIvt/IStIvtStructivtHrBcpService.java @@ -0,0 +1,32 @@ +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.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; + +import java.util.List; +import java.util.Map; + +/** + *

+ * 仓位库存表 服务类 + *

+ * + * @author generator + * @since 2023-05-10 + */ +public interface IStIvtStructivtHrBcpService extends IService { + + Object packageQuery(StructIvtHrBcpQuery query, PageQuery page); + + List queryAll(StructIvtHrBcpQuery query); + + StIvtStructivtBcp queryIvtOutOne(JSONObject json); + + Object getBcpIvt(StructIvtHrBcpQuery query, PageQuery page); + + List getBcpIvtInfo(JSONObject jo); +} diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanagehr/service/structIvt/IStIvtStructivtflowHrService.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanagehr/service/structIvt/IStIvtStructivtflowHrService.java new file mode 100644 index 00000000..190c3fb7 --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanagehr/service/structIvt/IStIvtStructivtflowHrService.java @@ -0,0 +1,30 @@ +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.basedata.service.record.dto.StIvtStructivtflowDto; +import org.nl.wms.storage_manage.basedata.service.record.dto.StIvtStructivtflowVo; +import org.nl.wms.storage_manage.productmanage.service.structIvt.dto.IvtFlowQuery; +import org.nl.wms.storage_manage.semimanagehr.service.structIvt.dao.StIvtStructivtflowHr; + +import java.util.List; + +/** + *

+ * 仓位库存变动记录表 服务类 + *

+ * + * @author generator + * @since 2023-05-10 + */ +public interface IStIvtStructivtflowHrService extends IService { + + void recordStructivtFlow(StIvtStructivtflowDto flowDto); + + void insetIvtChange(JSONObject json); + + Object queryAll(IvtFlowQuery query, PageQuery page); + + List queryAll(IvtFlowQuery query); +} diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanagehr/service/structIvt/dao/StIvtStructivtHrBcp.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanagehr/service/structIvt/dao/StIvtStructivtHrBcp.java new file mode 100644 index 00000000..9fb6ce6e --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanagehr/service/structIvt/dao/StIvtStructivtHrBcp.java @@ -0,0 +1,105 @@ +package org.nl.wms.storage_manage.semimanagehr.service.structIvt.dao; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Builder; +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_structivt_hr_bcp") +@Builder +public class StIvtStructivtHrBcp implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 仓位标识 + */ + @TableId + private String struct_id; + + /** + * 仓位编码 + */ + private String struct_code; + + /** + * 仓位名称 + */ + private String struct_name; + + /** + * 物料标识 + */ + private String material_id; + + /** + * 品质类型 + */ + private String quality_scode; + + /** + * 库存等级 + */ + private String ivt_level; + + /** + * 是否可用 + */ + private Boolean is_active; + + /** + * 批次 + */ + private String pcsn; + + /** + * 库存数 + */ + private BigDecimal canuse_qty; + + /** + * 计量单位标识 + */ + private String qty_unit_id; + + /** + * 入库时间 + */ + private String instorage_time; + + /** + * 仓库标识 + */ + private String stor_id; + + /** + * 车间标识 + */ + private String workshop_id; + + /** + * 是否已挑料 + */ + private Boolean is_pick; + + /** + * 单重 + */ + private BigDecimal unit_weight; + + +} diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanagehr/service/structIvt/dao/StIvtStructivtflowHr.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanagehr/service/structIvt/dao/StIvtStructivtflowHr.java new file mode 100644 index 00000000..c6fb7225 --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanagehr/service/structIvt/dao/StIvtStructivtflowHr.java @@ -0,0 +1,139 @@ +package org.nl.wms.storage_manage.semimanagehr.service.structIvt.dao; + +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_structivtflow_hr_bcp") +public class StIvtStructivtflowHr implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 记录标识 + */ + private String change_id; + + /** + * 仓位标识 + */ + private String struct_id; + + /** + * 仓位编码 + */ + private String struct_code; + + /** + * 仓位名称 + */ + private String struct_name; + + /** + * 物料标识 + */ + private String material_id; + + /** + * 批次 + */ + private String pcsn; + /** + * 品质类型 + */ + private String quality_scode; + + /** + * 是否可用 + */ + private Boolean is_active; + + /** + * 库存等级 + */ + private String ivt_level; + + /** + * 仓库标识 + */ + private String stor_id; + + /** + * 单据类型 + */ + private String bill_type_scode; + + /** + * 单据标识 + */ + private String inv_id; + + /** + * 单据编号 + */ + private String bill_code; + + /** + * 单据表名 + */ + private String bill_table; + + /** + * 变动类型:单据类型 + */ + private String change_type_scode; + + /** + * 变动时间 + */ + private String change_time; + + /** + * 变动人 + */ + private String change_person_id; + + /** + * 变动人姓名 + */ + private String change_person_name; + + /** + * 变动数 + */ + private BigDecimal change_qty; + + /** + * 结存数 + */ + private BigDecimal result_qty; + + /** + * 数量计量单位标识 + */ + private String qty_unit_id; + + /** + * 车间标识 + */ + private String product_area; + /** + * 车间标识 + */ + private Boolean is_add; + + +} 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 new file mode 100644 index 00000000..3c0bc63d --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanagehr/service/structIvt/dao/mapper/StIvtStructivtHrBcpMapper.java @@ -0,0 +1,39 @@ +package org.nl.wms.storage_manage.semimanagehr.service.structIvt.dao.mapper; + +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.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; + +import java.util.List; +import java.util.Map; + +/** + *

+ * 仓位库存表 Mapper 接口 + *

+ * + * @author generator + * @since 2023-05-10 + */ +public interface StIvtStructivtHrBcpMapper extends BaseMapper { + + int batchUpdateByParam(@Param("event") List event, @Param("struct_code")String struct_code); + + List getBcpIvt(@Param("query") StructIvtHrBcpQuery query, @Param("pageQuery") PageQuery pageQuery); + + List getBcpIvtInfo(@Param("map") JSONObject map); + + List getStructIvtInfo(@Param("map") Map map); + + List packageQuery(@Param("query") StructIvtHrBcpQuery query); + + List getPdaBcpIvt(JSONObject jo); + + List getPdaBcpMaterialIvt(JSONObject jo); + + StIvtStructivtBcp queryIvtOutOne(JSONObject json); +} diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanagehr/service/structIvt/dao/mapper/StIvtStructivtflowHrBcpMapper.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanagehr/service/structIvt/dao/mapper/StIvtStructivtflowHrBcpMapper.java new file mode 100644 index 00000000..3051fbb6 --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanagehr/service/structIvt/dao/mapper/StIvtStructivtflowHrBcpMapper.java @@ -0,0 +1,22 @@ +package org.nl.wms.storage_manage.semimanagehr.service.structIvt.dao.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; +import org.nl.wms.storage_manage.productmanage.service.structIvt.dto.IvtFlowQuery; +import org.nl.wms.storage_manage.semimanagehr.service.structIvt.dao.StIvtStructivtflowHr; + +import java.util.List; +import java.util.Map; + +/** + *

+ * 仓位库存变动记录表 Mapper 接口 + *

+ * + * @author generator + * @since 2023-05-10 + */ +public interface StIvtStructivtflowHrBcpMapper extends BaseMapper { + + List queryAll(@Param("query") IvtFlowQuery 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 new file mode 100644 index 00000000..07fa7c66 --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanagehr/service/structIvt/dao/mapper/xml/StIvtStructivtHrBcpMapper.xml @@ -0,0 +1,244 @@ + + + + + + update st_ivt_structivt_hr_bcp set + + ${item.field} = ${item.field} + + + + + + + - + + + #{item.value,jdbcType=DECIMAL} + + where struct_code = #{struct_code} + + + + + + + + + + + + + + + + + + diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanagehr/service/structIvt/dao/mapper/xml/StIvtStructivtflowHrBcpMapper.xml b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanagehr/service/structIvt/dao/mapper/xml/StIvtStructivtflowHrBcpMapper.xml new file mode 100644 index 00000000..3eea8384 --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanagehr/service/structIvt/dao/mapper/xml/StIvtStructivtflowHrBcpMapper.xml @@ -0,0 +1,48 @@ + + + + + + + diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanagehr/service/structIvt/dto/StructIvtHrBcpQuery.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanagehr/service/structIvt/dto/StructIvtHrBcpQuery.java new file mode 100644 index 00000000..cfaf3597 --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanagehr/service/structIvt/dto/StructIvtHrBcpQuery.java @@ -0,0 +1,37 @@ +package org.nl.wms.storage_manage.semimanagehr.service.structIvt.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.structIvt.dao.StIvtStructivtBcp; + +/* + * @author ZZQ + * @Date 2023/5/4 19:49 + */ +@Data +public class StructIvtHrBcpQuery extends BaseQuery { + + + private String sect_id; + + private String struct_search; + + private String material_search; + + private String material_code; + + private String struct_code; + + private Boolean is_delete = false; + + + @Override + public void paramMapping() { + super.doP.put("material_search", QParam.builder().k(new String[]{"material_search"}).type(QueryTEnum.LK).build()); + super.doP.put("struct_search", QParam.builder().k(new String[]{"struct_search"}).type(QueryTEnum.LK).build()); + } + + +} 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 new file mode 100644 index 00000000..e9c25d98 --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanagehr/service/structIvt/impl/StIvtStructivtHrBcpServiceImpl.java @@ -0,0 +1,62 @@ +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.PageHelper; +import org.nl.common.TableDataInfo; +import org.nl.common.domain.query.PageQuery; +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; +import org.nl.wms.storage_manage.semimanagehr.service.structIvt.dao.mapper.StIvtStructivtHrBcpMapper; +import org.nl.wms.storage_manage.semimanagehr.service.structIvt.dto.StructIvtHrBcpQuery; +import org.springframework.stereotype.Service; + +import java.util.List; +import java.util.Map; + +/** + *

+ * 仓位库存表 服务实现类 + *

+ * + * @author generator + * @since 2023-05-10 + */ +@Service +public class StIvtStructivtHrBcpServiceImpl extends ServiceImpl implements IStIvtStructivtHrBcpService { + + @Override + public Object packageQuery(StructIvtHrBcpQuery query, PageQuery pageQuery) { + com.github.pagehelper.Page page = PageHelper.startPage(pageQuery.getPage() + 1, pageQuery.getSize()); + TableDataInfo build = TableDataInfo.build(this.baseMapper.packageQuery(query)); + build.setTotalElements(page.getTotal()); + + return build; + } + + @Override + public StIvtStructivtBcp queryIvtOutOne(JSONObject json) { + return this.baseMapper.queryIvtOutOne(json); + } + + @Override + public List queryAll(StructIvtHrBcpQuery query) { + return this.baseMapper.packageQuery(query); + + } + + @Override + public Object getBcpIvt(StructIvtHrBcpQuery query, PageQuery pageQuery) { + com.github.pagehelper.Page page = PageHelper.startPage(pageQuery.getPage() + 1, pageQuery.getSize()); + List mst_detail = this.baseMapper.getBcpIvt(query, pageQuery); + TableDataInfo build = TableDataInfo.build(mst_detail); + build.setTotalElements(page.getTotal()); + return build; + } + + @Override + public List getBcpIvtInfo(JSONObject jo) { + return this.baseMapper.getBcpIvtInfo(jo); + } +} diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanagehr/service/structIvt/impl/StIvtStructivtflowHrServiceImpl.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanagehr/service/structIvt/impl/StIvtStructivtflowHrServiceImpl.java new file mode 100644 index 00000000..e98dee46 --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanagehr/service/structIvt/impl/StIvtStructivtflowHrServiceImpl.java @@ -0,0 +1,135 @@ +package org.nl.wms.storage_manage.semimanagehr.service.structIvt.impl; + +import cn.hutool.core.date.DateUtil; +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.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.common.utils.IdUtil; +import org.nl.common.utils.SecurityUtils; +import org.nl.wms.masterdata_manage.service.material.IMdMeMaterialbaseService; +import org.nl.wms.masterdata_manage.service.material.dao.MdMeMaterialbase; +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.storage_manage.CHANGE_BILL_TYPE_ENUM; +import org.nl.wms.storage_manage.basedata.service.record.dto.StIvtStructivtflowDto; +import org.nl.wms.storage_manage.basedata.service.record.dto.StIvtStructivtflowVo; +import org.nl.wms.storage_manage.productmanage.service.structIvt.dto.IvtFlowQuery; +import org.nl.wms.storage_manage.semimanagehr.service.structIvt.IStIvtStructivtflowHrService; +import org.nl.wms.storage_manage.semimanagehr.service.structIvt.dao.StIvtStructivtflowHr; +import org.nl.wms.storage_manage.semimanagehr.service.structIvt.dao.mapper.StIvtStructivtflowHrBcpMapper; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; +import java.util.Map; + +/** + *

+ * 仓位库存变动记录表 服务实现类 + *

+ * + * @author generator + * @since 2023-05-10 + */ +@Service +public class StIvtStructivtflowHrServiceImpl extends ServiceImpl implements IStIvtStructivtflowHrService { + + @Autowired + private IStIvtStructattrService structattrService; + @Autowired + private IMdMeMaterialbaseService materialbaseService; + @Autowired + protected IStIvtStructattrService iStIvtStructattrService; // 仓位属性服务 + + @Override + @Transactional + public void recordStructivtFlow(StIvtStructivtflowDto flowDto) { + StIvtStructivtflowHr flow = new StIvtStructivtflowHr(); + StIvtStructattr struct_attr = structattrService.getOne(new QueryWrapper().eq("struct_code", flowDto.getStruct_code())); + flow.setChange_id(IdUtil.getStringId()); + 物料信息: { + MdMeMaterialbase material = materialbaseService.getOne(new QueryWrapper().eq("material_id", flowDto.getMaterial_id())); + flow.setPcsn(flowDto.getPcsn()); + } + 仓库信息:{ + flow.setStruct_name(struct_attr.getStruct_name()); + flow.setStruct_code(struct_attr.getStruct_code()); + flow.setStruct_id(struct_attr.getStruct_id()); + flow.setStor_id(struct_attr.getStor_id()); + } + flow.setBill_code(flowDto.getBill_code()); + flow.setChange_type_scode(flowDto.getChange_type_scode().getCode()); + flow.setBill_table(flowDto.getBill_table()); + flow.setChange_qty(flowDto.getChange_qty()); + flow.setResult_qty(flowDto.getResult_qty()); + this.save(flow); + + struct_attr.setStoragevehicle_code(flowDto.getStoragevehicle_code()); + struct_attr.setInv_code(flowDto.getBill_code()); + struct_attr.setInv_type(flowDto.getChange_type_scode().getCode()); + //判断如果在3个状态之内,更新操作 + int tag = 1 << CHANGE_BILL_TYPE_ENUM.IMOVEINV_OUT_CONFIRM.getBitType() + | 1 << CHANGE_BILL_TYPE_ENUM.IOSTORINV_IN_CONFIRM.getBitType() + | 1 << CHANGE_BILL_TYPE_ENUM.MOVEINV_IN_CONFIRM.getBitType() + | 1 << CHANGE_BILL_TYPE_ENUM.CHECK_OUT.getBitType() + | 1 << CHANGE_BILL_TYPE_ENUM.IOSTORINV_OUT_CONFIRM.getBitType(); + if ((tag &~ 1 << flowDto.getChange_type_scode().getBitType()) != tag){ + struct_attr.setInv_code(""); + struct_attr.setInv_type(""); + } + structattrService.updateById(struct_attr); + } + + @Override + @Transactional + public void insetIvtChange(JSONObject json) { + + StIvtStructattr ivtDao = iStIvtStructattrService.getById(json.getString("struct_id")); + + StIvtStructivtflowHr dao = new StIvtStructivtflowHr(); + dao.setChange_id(IdUtil.getStringId()); + dao.setStruct_id(json.getString("struct_id")); + dao.setStruct_code(json.getString("struct_code")); + dao.setStruct_name(json.getString("struct_name")); + dao.setMaterial_id(json.getString("material_id")); + dao.setQuality_scode(json.getString("quality_scode")); + dao.setIvt_level(json.getString("ivt_level")); + dao.setIs_active(json.getBoolean("is_active")); + dao.setPcsn(json.getString("pcsn")); + dao.setStor_id(ivtDao.getStor_id()); + dao.setChange_type_scode(json.getString("change_type")); + dao.setChange_time(DateUtil.now()); + dao.setChange_person_id(SecurityUtils.getCurrentUserId()); + dao.setChange_person_name(SecurityUtils.getCurrentNickName()); + dao.setChange_qty(json.getBigDecimal("change_qty")); + dao.setResult_qty(json.getBigDecimal("result_qty")); + dao.setQty_unit_id(json.getString("qty_unit_id")); + dao.setProduct_area(json.getString("workshop_id")); + dao.setBill_code(json.getString("bill_code")); + dao.setBill_type_scode(json.getString("bill_type_scode")); + dao.setInv_id(json.getString("inv_id")); + this.save(dao); + } + + @Override + public Object queryAll(IvtFlowQuery query, PageQuery pageQuery) { + Page page = PageHelper.startPage(pageQuery.getPage() + 1, pageQuery.getSize()); + TableDataInfo build = TableDataInfo.build(this.baseMapper.queryAll(query)); + build.setTotalElements(page.getTotal()); + return build; + } + + @Override + public List queryAll(IvtFlowQuery query) { + List maps = this.baseMapper.queryAll(query); + List list = JSONArray.parseArray(JSON.toJSONString(maps), StIvtStructivtflowVo.class); + return list; + } +} 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 682be249..c442e7f2 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/semiproductIvthrFlow/index.vue b/mes/qd/src/views/wms/storage_manage/semiproducthr/semiproductIvthrFlow/index.vue new file mode 100644 index 00000000..76eb7db2 --- /dev/null +++ b/mes/qd/src/views/wms/storage_manage/semiproducthr/semiproductIvthrFlow/index.vue @@ -0,0 +1,209 @@ + + + + diff --git a/mes/qd/src/views/wms/storage_manage/semiproducthr/semiproductIvthrFlow/productivthrFlow.js b/mes/qd/src/views/wms/storage_manage/semiproducthr/semiproductIvthrFlow/productivthrFlow.js new file mode 100644 index 00000000..9bab66d1 --- /dev/null +++ b/mes/qd/src/views/wms/storage_manage/semiproducthr/semiproductIvthrFlow/productivthrFlow.js @@ -0,0 +1,31 @@ +import request from '@/utils/request' + +export function add(data) { + return request({ + url: '/api/stIvtStructivtflowHrBcp', + method: 'post', + data + }) +} + +export function del(ids) { + return request({ + url: '/api/stIvtStructivtflowHrBcp/delete', + method: 'post', + data: ids + }) +} + +export function edit(data) { + return request({ + url: '/api/stIvtStructivtflowHrBcp/update', + method: 'post', + data + }) +} + +export default { + add, + edit, + del +} diff --git a/mes/qd/src/views/wms/storage_manage/semiproducthr/semiproducthrIn/AddDialog.vue b/mes/qd/src/views/wms/storage_manage/semiproducthr/semiproducthrIn/AddDialog.vue new file mode 100644 index 00000000..d7a62801 --- /dev/null +++ b/mes/qd/src/views/wms/storage_manage/semiproducthr/semiproducthrIn/AddDialog.vue @@ -0,0 +1,411 @@ + + + + + diff --git a/mes/qd/src/views/wms/storage_manage/semiproducthr/semiproducthrIn/ViewDialog.vue b/mes/qd/src/views/wms/storage_manage/semiproducthr/semiproducthrIn/ViewDialog.vue new file mode 100644 index 00000000..a7e573ff --- /dev/null +++ b/mes/qd/src/views/wms/storage_manage/semiproducthr/semiproducthrIn/ViewDialog.vue @@ -0,0 +1,253 @@ + + + + + diff --git a/mes/qd/src/views/wms/storage_manage/semiproducthr/semiproducthrIn/index.vue b/mes/qd/src/views/wms/storage_manage/semiproducthr/semiproducthrIn/index.vue new file mode 100644 index 00000000..0f700957 --- /dev/null +++ b/mes/qd/src/views/wms/storage_manage/semiproducthr/semiproducthrIn/index.vue @@ -0,0 +1,350 @@ + + + + diff --git a/mes/qd/src/views/wms/storage_manage/semiproducthr/semiproducthrIn/semiproducthrIn.js b/mes/qd/src/views/wms/storage_manage/semiproducthr/semiproducthrIn/semiproducthrIn.js new file mode 100644 index 00000000..48a2b214 --- /dev/null +++ b/mes/qd/src/views/wms/storage_manage/semiproducthr/semiproducthrIn/semiproducthrIn.js @@ -0,0 +1,58 @@ +import request from '@/utils/request' + +export function add(data) { + return request({ + url: '/api/in/semiproductHr/create', + method: 'post', + data + }) +} + +export function del(ids) { + return request({ + url: '/api/in/semiproductHr/delete', + method: 'post', + data: ids + }) +} + +export function edit(data) { + return request({ + url: '/api/in/semiproductHr/update', + method: 'post', + data + }) +} + +export function getIODtl(data) { + return request({ + url: '/api/in/semiproductHr/getIODtl', + method: 'post', + data + }) +} + +export function confirmTask(data) { + return request({ + url: '/api/in/semiproductHr/confirmTask', + method: 'post', + data + }) +} + +export function confirm(data) { + return request({ + url: '/api/in/semiproductHr/confirm', + method: 'post', + data + }) +} + +export default { + add, + edit, + del, + confirmTask, + confirm, + getIODtl +} diff --git a/mes/qd/src/views/wms/storage_manage/semiproducthr/semiproducthrIvt/index.vue b/mes/qd/src/views/wms/storage_manage/semiproducthr/semiproducthrIvt/index.vue new file mode 100644 index 00000000..c9102dba --- /dev/null +++ b/mes/qd/src/views/wms/storage_manage/semiproducthr/semiproducthrIvt/index.vue @@ -0,0 +1,161 @@ + + + + diff --git a/mes/qd/src/views/wms/storage_manage/semiproducthr/semiproducthrIvt/semiproducthrivt.js b/mes/qd/src/views/wms/storage_manage/semiproducthr/semiproducthrIvt/semiproducthrivt.js new file mode 100644 index 00000000..9849221b --- /dev/null +++ b/mes/qd/src/views/wms/storage_manage/semiproducthr/semiproducthrIvt/semiproducthrivt.js @@ -0,0 +1,40 @@ +import request from '@/utils/request' + +export function add(data) { + return request({ + url: '/api/bcp/hr', + method: 'post', + data + }) +} + +export function del(ids) { + return request({ + url: '/api/bcp/hr/delete', + method: 'post', + data: ids + }) +} + +export function exportFile(data) { + return request({ + url: '/api/stIvtStructivtflowBcp/hr/exportFile', + method: 'post', + data + }) +} + +export function edit(data) { + return request({ + url: '/api/bcp/hr/update', + method: 'post', + data + }) +} + +export default { + add, + edit, + del, + exportFile +} diff --git a/mes/qd/src/views/wms/storage_manage/semiproducthr/semiproducthrout/AddDialog.vue b/mes/qd/src/views/wms/storage_manage/semiproducthr/semiproducthrout/AddDialog.vue new file mode 100644 index 00000000..570a6b58 --- /dev/null +++ b/mes/qd/src/views/wms/storage_manage/semiproducthr/semiproducthrout/AddDialog.vue @@ -0,0 +1,380 @@ + + + + + diff --git a/mes/qd/src/views/wms/storage_manage/semiproducthr/semiproducthrout/StructIvt.vue b/mes/qd/src/views/wms/storage_manage/semiproducthr/semiproducthrout/StructIvt.vue new file mode 100644 index 00000000..14a4869e --- /dev/null +++ b/mes/qd/src/views/wms/storage_manage/semiproducthr/semiproducthrout/StructIvt.vue @@ -0,0 +1,154 @@ + + + + + diff --git a/mes/qd/src/views/wms/storage_manage/semiproducthr/semiproducthrout/ViewDialog.vue b/mes/qd/src/views/wms/storage_manage/semiproducthr/semiproducthrout/ViewDialog.vue new file mode 100644 index 00000000..1f7c749f --- /dev/null +++ b/mes/qd/src/views/wms/storage_manage/semiproducthr/semiproducthrout/ViewDialog.vue @@ -0,0 +1,252 @@ + + + + + diff --git a/mes/qd/src/views/wms/storage_manage/semiproducthr/semiproducthrout/index.vue b/mes/qd/src/views/wms/storage_manage/semiproducthr/semiproducthrout/index.vue new file mode 100644 index 00000000..71bb4060 --- /dev/null +++ b/mes/qd/src/views/wms/storage_manage/semiproducthr/semiproducthrout/index.vue @@ -0,0 +1,348 @@ + + + + diff --git a/mes/qd/src/views/wms/storage_manage/semiproducthr/semiproducthrout/semiproducthrout.js b/mes/qd/src/views/wms/storage_manage/semiproducthr/semiproducthrout/semiproducthrout.js new file mode 100644 index 00000000..c0d98cab --- /dev/null +++ b/mes/qd/src/views/wms/storage_manage/semiproducthr/semiproducthrout/semiproducthrout.js @@ -0,0 +1,58 @@ +import request from '@/utils/request' + +export function add(data) { + return request({ + url: '/api/out/semiproductHr/create', + method: 'post', + data + }) +} + +export function del(ids) { + return request({ + url: '/api/out/semiproductHr/delete', + method: 'post', + data: ids + }) +} + +export function edit(data) { + return request({ + url: '/api/out/semiproductHr/update', + method: 'post', + data + }) +} + +export function getIODtl(data) { + return request({ + url: '/api/out/semiproductHr/getIODtl', + method: 'post', + data + }) +} + +export function confirmTask(data) { + return request({ + url: '/api/out/semiproductHr/confirmTask', + method: 'post', + data + }) +} + +export function confirm(data) { + return request({ + url: '/api/out/semiproductHr/confirm', + method: 'post', + data + }) +} + +export default { + add, + edit, + del, + confirmTask, + confirm, + getIODtl +}