From f530e6d7b40cd18d1b2374d10d6032624a7413f4 Mon Sep 17 00:00:00 2001 From: liuxy Date: Thu, 25 May 2023 14:58:35 +0800 Subject: [PATCH 1/2] =?UTF-8?q?add:=20=E7=94=9F=E4=BA=A7=E8=AE=A2=E5=8D=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/org/nl/wms/aps_manage/mps.xls | Bin 171008 -> 175616 bytes .../saleOrder/MpsSaleOrderController.java | 21 + .../saleOrder/IMpsSaleOrderService.java | 16 + .../service/saleOrder/dao/MpsSaleOrder.java | 165 +++++++ .../dao/mapper/MpsSaleOrderMapper.java | 16 + .../dao/mapper/xml/MpsSaleOrderMapper.xml | 5 + .../impl/MpsSaleOrderServiceImpl.java | 20 + .../IStivtlostorivnCpOutController.java | 74 ++++ .../IStIvtIostorinvCpOutService.java | 86 ++++ .../impl/StIvtIostorinvCpOutServiceImpl.java | 275 ++++++++++++ .../impl/StIvtIostorinvCpServiceImpl.java | 13 +- .../structIvt/IStIvtStructivtCpService.java | 1 + .../impl/StIvtStructivtCpServiceImpl.java | 1 + .../product/productIn/index.vue | 2 +- .../product/productOut/AddDialog.vue | 339 ++++++++------- .../product/productOut/DivDialog.vue | 109 +---- .../product/productOut/index.vue | 61 +-- .../product/productOut/productout.js | 209 +-------- .../semiproduct/semiProductIn/AddDialog.vue | 410 ------------------ 19 files changed, 918 insertions(+), 905 deletions(-) create mode 100644 mes/hd/nladmin-system/src/main/java/org/nl/wms/mps_manage/ordermanage/controller/saleOrder/MpsSaleOrderController.java create mode 100644 mes/hd/nladmin-system/src/main/java/org/nl/wms/mps_manage/ordermanage/service/saleOrder/IMpsSaleOrderService.java create mode 100644 mes/hd/nladmin-system/src/main/java/org/nl/wms/mps_manage/ordermanage/service/saleOrder/dao/MpsSaleOrder.java create mode 100644 mes/hd/nladmin-system/src/main/java/org/nl/wms/mps_manage/ordermanage/service/saleOrder/dao/mapper/MpsSaleOrderMapper.java create mode 100644 mes/hd/nladmin-system/src/main/java/org/nl/wms/mps_manage/ordermanage/service/saleOrder/dao/mapper/xml/MpsSaleOrderMapper.xml create mode 100644 mes/hd/nladmin-system/src/main/java/org/nl/wms/mps_manage/ordermanage/service/saleOrder/impl/MpsSaleOrderServiceImpl.java create mode 100644 mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/controller/iostorInv/IStivtlostorivnCpOutController.java create mode 100644 mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/service/iostorInv/IStIvtIostorinvCpOutService.java create mode 100644 mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/service/iostorInv/impl/StIvtIostorinvCpOutServiceImpl.java delete mode 100644 mes/qd/src/views/wms/storage_manage/semiproduct/semiProductIn/AddDialog.vue diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/aps_manage/mps.xls b/mes/hd/nladmin-system/src/main/java/org/nl/wms/aps_manage/mps.xls index f061545183b81c6ba7200a2ed11b5fe0d93bb8a6..27cdf427ba0fad73c0033a9a335f9acb40e37e54 100644 GIT binary patch delta 37144 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 diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/mps_manage/ordermanage/controller/saleOrder/MpsSaleOrderController.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/mps_manage/ordermanage/controller/saleOrder/MpsSaleOrderController.java new file mode 100644 index 00000000..057e7975 --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/mps_manage/ordermanage/controller/saleOrder/MpsSaleOrderController.java @@ -0,0 +1,21 @@ +package org.nl.wms.mps_manage.ordermanage.controller.saleOrder; + + +import org.springframework.web.bind.annotation.RequestMapping; + +import org.springframework.web.bind.annotation.RestController; + +/** + *

+ * 生产订单表 前端控制器 + *

+ * + * @author generator + * @since 2023-05-25 + */ +@RestController +@RequestMapping("/mpsSaleOrder") +public class MpsSaleOrderController { + +} + diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/mps_manage/ordermanage/service/saleOrder/IMpsSaleOrderService.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/mps_manage/ordermanage/service/saleOrder/IMpsSaleOrderService.java new file mode 100644 index 00000000..ed3e74c5 --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/mps_manage/ordermanage/service/saleOrder/IMpsSaleOrderService.java @@ -0,0 +1,16 @@ +package org.nl.wms.mps_manage.ordermanage.service.saleOrder; + +import org.nl.wms.mps_manage.ordermanage.service.saleOrder.dao.MpsSaleOrder; +import com.baomidou.mybatisplus.extension.service.IService; + +/** + *

+ * 生产订单表 服务类 + *

+ * + * @author generator + * @since 2023-05-25 + */ +public interface IMpsSaleOrderService extends IService { + +} diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/mps_manage/ordermanage/service/saleOrder/dao/MpsSaleOrder.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/mps_manage/ordermanage/service/saleOrder/dao/MpsSaleOrder.java new file mode 100644 index 00000000..2244a6dc --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/mps_manage/ordermanage/service/saleOrder/dao/MpsSaleOrder.java @@ -0,0 +1,165 @@ +package org.nl.wms.mps_manage.ordermanage.service.saleOrder.dao; + +import java.math.BigDecimal; +import com.baomidou.mybatisplus.annotation.TableName; +import java.io.Serializable; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + *

+ * 生产订单表 + *

+ * + * @author generator + * @since 2023-05-25 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@TableName("mps_sale_order") +public class MpsSaleOrder implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 销售单标识 + */ + private Long sale_id; + + /** + * 销售单号 + */ + private String sale_code; + + /** + * 明细序号 + */ + private BigDecimal seq_no; + + /** + * 销售单类型 + */ + private String sale_type; + + /** + * 物料标识 + */ + private Long material_id; + + /** + * 状态 + */ + private String status; + + /** + * 销售数量 + */ + private BigDecimal sale_qty; + + /** + * 生产顺序 + */ + private BigDecimal produce_seq; + + /** + * 客户标识 + */ + private Long cust_id; + + /** + * 客户编码 + */ + private String cust_code; + + /** + * 客户名称 + */ + private String cust_name; + + /** + * 计量单位标识 + */ + private Long qty_unit_id; + + /** + * 计划交期 + */ + private String plandeliver_date; + + /** + * 创建人 + */ + private Long create_id; + + /** + * 创建人姓名 + */ + private String create_name; + + /** + * 创建时间 + */ + private String create_time; + + /** + * 提交人 + */ + private Long audit_optid; + + /** + * 提交时间 + */ + private String audit_time; + + /** + * 提交人姓名 + */ + private String audit_optname; + + /** + * 确认人 + */ + private Long confirm_optid; + + /** + * 确认人姓名 + */ + private String confirm_optname; + + /** + * 确认时间 + */ + private String confirm_time; + + /** + * 是否删除 + */ + private String is_delete; + + /** + * 备注 + */ + private String remark; + + /** + * 车间标识 + */ + private Long workshop_id; + + /** + * 生产数量 + */ + private BigDecimal product_qty; + + /** + * 预入库数量 + */ + private BigDecimal instor_qty; + + /** + * 发货数量 + */ + private BigDecimal sendout_qty; + + +} diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/mps_manage/ordermanage/service/saleOrder/dao/mapper/MpsSaleOrderMapper.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/mps_manage/ordermanage/service/saleOrder/dao/mapper/MpsSaleOrderMapper.java new file mode 100644 index 00000000..a8480826 --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/mps_manage/ordermanage/service/saleOrder/dao/mapper/MpsSaleOrderMapper.java @@ -0,0 +1,16 @@ +package org.nl.wms.mps_manage.ordermanage.service.saleOrder.dao.mapper; + +import org.nl.wms.mps_manage.ordermanage.service.saleOrder.dao.MpsSaleOrder; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 生产订单表 Mapper 接口 + *

+ * + * @author generator + * @since 2023-05-25 + */ +public interface MpsSaleOrderMapper extends BaseMapper { + +} diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/mps_manage/ordermanage/service/saleOrder/dao/mapper/xml/MpsSaleOrderMapper.xml b/mes/hd/nladmin-system/src/main/java/org/nl/wms/mps_manage/ordermanage/service/saleOrder/dao/mapper/xml/MpsSaleOrderMapper.xml new file mode 100644 index 00000000..6fc43f10 --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/mps_manage/ordermanage/service/saleOrder/dao/mapper/xml/MpsSaleOrderMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/mps_manage/ordermanage/service/saleOrder/impl/MpsSaleOrderServiceImpl.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/mps_manage/ordermanage/service/saleOrder/impl/MpsSaleOrderServiceImpl.java new file mode 100644 index 00000000..6df31f6d --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/mps_manage/ordermanage/service/saleOrder/impl/MpsSaleOrderServiceImpl.java @@ -0,0 +1,20 @@ +package org.nl.wms.mps_manage.ordermanage.service.saleOrder.impl; + +import org.nl.wms.mps_manage.ordermanage.service.saleOrder.dao.MpsSaleOrder; +import org.nl.wms.mps_manage.ordermanage.service.saleOrder.dao.mapper.MpsSaleOrderMapper; +import org.nl.wms.mps_manage.ordermanage.service.saleOrder.IMpsSaleOrderService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +/** + *

+ * 生产订单表 服务实现类 + *

+ * + * @author generator + * @since 2023-05-25 + */ +@Service +public class MpsSaleOrderServiceImpl extends ServiceImpl implements IMpsSaleOrderService { + +} diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/controller/iostorInv/IStivtlostorivnCpOutController.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/controller/iostorInv/IStivtlostorivnCpOutController.java new file mode 100644 index 00000000..78cc2ece --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/controller/iostorInv/IStivtlostorivnCpOutController.java @@ -0,0 +1,74 @@ +package org.nl.wms.storage_manage.productmanage.controller.iostorInv; + +import com.alibaba.fastjson.JSONObject; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.nl.common.anno.Log; +import org.nl.common.domain.query.PageQuery; +import org.nl.wms.storage_manage.productmanage.service.iostorInv.IStIvtIostorinvCpOutService; +import org.nl.wms.storage_manage.productmanage.service.iostorInv.IStIvtIostorinvCpService; +import org.nl.wms.storage_manage.productmanage.service.iostorInv.dto.IostorInvQuery; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.*; + +@RestController +@RequiredArgsConstructor +@Api(tags = "成品出库") +@RequestMapping("/api/productOut") +@Slf4j +public class IStivtlostorivnCpOutController { + + @Autowired + private IStIvtIostorinvCpOutService iStIvtIostorinvCpOutService; + + @GetMapping + @Log("查询出库单") + @ApiOperation("查询出库单") + public ResponseEntity query(IostorInvQuery query, PageQuery page){ + return new ResponseEntity<>(iStIvtIostorinvCpOutService.pageQuery(query,page),HttpStatus.OK); + } + + @PostMapping + @Log("创建出库单") + @ApiOperation("创建出库单") + public ResponseEntity create(@RequestBody JSONObject whereJson){ + iStIvtIostorinvCpOutService.create(whereJson); + return new ResponseEntity<>(HttpStatus.OK); + } + + @PostMapping("/update") + @Log("修改出库单") + @ApiOperation("修改出库单") + public ResponseEntity update(@RequestBody JSONObject whereJson){ + iStIvtIostorinvCpOutService.update(whereJson); + return new ResponseEntity<>(HttpStatus.OK); + } + + @PostMapping("/delete") + @Log("删除出库单") + @ApiOperation("删除出库单") + public ResponseEntity delete(@RequestBody Long[] ids){ + iStIvtIostorinvCpOutService.delete(ids); + return new ResponseEntity<>(HttpStatus.OK); + } + + @PostMapping("/getIosInvDtl") + @Log("获取明细") + @ApiOperation("获取明细") + public ResponseEntity getIosInvDtl(@RequestBody JSONObject whereJson){ + return new ResponseEntity<>(iStIvtIostorinvCpOutService.getIosInvDtl(whereJson),HttpStatus.OK); + } + + @PostMapping("/getIosInvDis") + @Log("获取分配明细") + @ApiOperation("获取明细") + public ResponseEntity getIosInvDis(@RequestBody JSONObject whereJson){ + return new ResponseEntity<>(iStIvtIostorinvCpOutService.getIosInvDis(whereJson),HttpStatus.OK); + } + + +} diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/service/iostorInv/IStIvtIostorinvCpOutService.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/service/iostorInv/IStIvtIostorinvCpOutService.java new file mode 100644 index 00000000..7361207f --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/service/iostorInv/IStIvtIostorinvCpOutService.java @@ -0,0 +1,86 @@ +package org.nl.wms.storage_manage.productmanage.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.productmanage.service.iostorInv.dao.StIvtIostorinvCp; +import org.nl.wms.storage_manage.productmanage.service.iostorInv.dto.IostorInvQuery; + +import java.util.List; + +/** + *

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

+ * + * @author generator + * @since 2023-05-04 + */ +public interface IStIvtIostorinvCpOutService extends IService { + + /** + * 分页查询 + * @param query,page / + * @return JSONObject + */ + Object pageQuery(IostorInvQuery query, PageQuery page); + + /** + * 创建 + * @param form / + */ + void create(JSONObject form); + + /** + * 更新相关联的表 + * @param form / + */ + void update(JSONObject form); + + /** + * 查询出出库单明细 + * @param whereJson + * { + * "bill_code": 单据号 + * "iostorinv_id": 主表标识 + * } + * @return List + * { + * "明细表所有字段" + * "material_code": 物料编码 + * "material_name": 物料名称 + * "material_spec": 物料批次 + * } + */ + List getIosInvDtl(JSONObject whereJson); + + /** + * 查询出出库单分配明细 + * @param whereJson + * { + * "iostorinvdtl_id": 明细表标识 + * "iostorinv_id": 主表标识 + * } + * + * @return List + * { + * "分配表所有字段" + * "bucketunique":箱号 + * "qty": 数量 + * "material_code": 物料编码 + * "material_name": 物料名称 + * "material_spec": 物料批次 + * } + */ + List getIosInvDis(JSONObject whereJson); + + /** + * 删除 + * @param ids + * { + * 主表id.. + * } + */ + void delete(Long[] ids); + +} diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/service/iostorInv/impl/StIvtIostorinvCpOutServiceImpl.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/service/iostorInv/impl/StIvtIostorinvCpOutServiceImpl.java new file mode 100644 index 00000000..464f5718 --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/service/iostorInv/impl/StIvtIostorinvCpOutServiceImpl.java @@ -0,0 +1,275 @@ +package org.nl.wms.storage_manage.productmanage.service.iostorInv.impl; + +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.NumberUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import io.jsonwebtoken.lang.Assert; +import org.jetbrains.annotations.NotNull; +import org.nl.common.TableDataInfo; +import org.nl.common.domain.query.PageQuery; +import org.nl.common.publish.BussEventMulticaster; +import org.nl.common.publish.event.PointEvent; +import org.nl.common.utils.IdUtil; +import org.nl.common.utils.SecurityUtils; +import org.nl.modules.common.exception.BadRequestException; +import org.nl.modules.system.util.CodeUtil; +import org.nl.wms.masterdata_manage.service.vehicle.IMdPbBucketrecordService; +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.MdPbBucketrecord; +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.IStIvtStructattrService; +import org.nl.wms.masterdata_manage.storage.service.storage.dao.StIvtBsrealstorattr; +import org.nl.wms.masterdata_manage.storage.service.storage.dao.StIvtStructattr; +import org.nl.wms.product_manage.sch.manage.TaskStatusEnum; +import org.nl.wms.scheduler_manage.service.point.ISchBasePointService; +import org.nl.wms.scheduler_manage.service.point.dao.SchBasePoint; +import org.nl.wms.scheduler_manage.service.task.ISchBaseTaskService; +import org.nl.wms.scheduler_manage.service.task.dao.SchBaseTask; +import org.nl.wms.storage_manage.CHANGE_BILL_TYPE_ENUM; +import org.nl.wms.storage_manage.IOSEnum; +import org.nl.wms.storage_manage.productmanage.service.iostorInv.*; +import org.nl.wms.storage_manage.productmanage.service.iostorInv.dao.StIvtIostorinvCp; +import org.nl.wms.storage_manage.productmanage.service.iostorInv.dao.StIvtIostorinvdisCp; +import org.nl.wms.storage_manage.productmanage.service.iostorInv.dao.StIvtIostorinvdisdtlCp; +import org.nl.wms.storage_manage.productmanage.service.iostorInv.dao.StIvtIostorinvdtlCp; +import org.nl.wms.storage_manage.productmanage.service.iostorInv.dao.mapper.StIvtIostorinvCpMapper; +import org.nl.wms.storage_manage.productmanage.service.iostorInv.dto.IostorInvQuery; +import org.nl.wms.storage_manage.productmanage.service.structIvt.IStIvtStructivtCpService; +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.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.math.BigDecimal; +import java.util.Date; +import java.util.List; +import java.util.Map; +import java.util.function.Consumer; +import java.util.stream.Collectors; + +/** + *

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

+ * + * @author generator + * @since 2023-05-04 + */ +@Service +public class StIvtIostorinvCpOutServiceImpl extends ServiceImpl implements IStIvtIostorinvCpOutService { + + @Autowired + protected IStIvtIostorinvdtlCpService iostorinvdtlCpService; // 成品出入库明细表服务 + + @Autowired + protected IStIvtIostorinvdisCpService iostorinvdisCpService; // 成品出入库分配表服务 + + @Autowired + protected IStIvtIostorinvdisdtlCpService iStIvtIostorinvdisdtlCpService; // 成品出入库分配明细表服务 + + @Autowired + protected IStIvtBsrealstorattrService stIvtBsrealstorattrService; // 实物属性表表服务 + + @Autowired + protected IMdPbStoragevehicleinfoService iMdPbStoragevehicleinfoService; // 载具信息表服务 + + @Autowired + protected IMdPbStoragevehicleextService iMdPbStoragevehicleextService; // 载具扩展属性信息表服务 + + @Autowired + protected DivRuleCpService divRuleCpService; // 成品分配规则服务类 + + @Autowired + protected IStIvtStructattrService iStIvtStructattrService; // 仓位属性服务 + + @Autowired + private ISchBaseTaskService iSchBaseTaskService; // 任务表服务 + + @Autowired + private ISchBasePointService iSchBasePointService; // 点位服务 + + @Autowired + private IStIvtStructivtCpService iStIvtStructivtCpService; // 库存服务 + + @Autowired + protected IMdPbBucketrecordService iMdPbBucketrecordService; // 包装箱记录表服务 + + @Override + public Object pageQuery(IostorInvQuery query, PageQuery page) { + // 查询条件 + query.setIo_type(IOSEnum.IO_TYPE.code("出库")); + page.setSort("bill_code,DESC"); + + // 分页查询 + Page pageQuery = this.page(page.build(), query.build()); + TableDataInfo build = TableDataInfo.build(pageQuery); + + return build; + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void create(JSONObject form) { + + JSONArray rows = form.getJSONArray("tableData"); + if (ObjectUtil.isEmpty(rows)) throw new BadRequestException("请求参数不能为空"); + + // 调用主表 插入/更新方法 + StIvtIostorinvCp stIvtIostorinvCp = packageMstForm(new StIvtIostorinvCp(), form, false); + // 插入主表 + this.save(stIvtIostorinvCp); + + // 调用明细表 插入/更新方法 + iostorinvdtlCpService.create(rows, stIvtIostorinvCp.getIostorinv_id()); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void update(JSONObject form) { + + JSONArray rows = form.getJSONArray("tableData"); + if (ObjectUtil.isEmpty(rows)) throw new BadRequestException("明细不能为空"); + + StIvtIostorinvCp iostorinvCp = this.getOne(new QueryWrapper().eq("iostorinv_id", form.getString("iostorinv_id"))); + packageMstForm(iostorinvCp,form,true); + + //创建明细 + iostorinvdtlCpService.create(rows, iostorinvCp.getIostorinv_id()); + // 更新主表 + this.updateById(iostorinvCp); + } + + + @Override + public List getIosInvDtl(JSONObject whereJson) { + // 查询主表明细 + List maps = iostorinvdtlCpService.queryInvDtlByInv(whereJson); + return maps; + } + + @Override + public List getIosInvDis(JSONObject whereJson) { + + // 查询分配表 + List maps = iostorinvdisCpService.queryInvDisByInvdtl(whereJson); + return maps; + + } + + + @Override + public void delete(Long[] ids) { + + for (Long id : ids) { + StIvtIostorinvCp dao = this.getOne(new QueryWrapper().eq("iostorinv_id", id)); + dao.setIs_delete(true); + + this.updateById(dao); + } + } + + + @NotNull + private StIvtIostorinvCp packageMstForm(StIvtIostorinvCp stIvtIostorinvCp,JSONObject whereJson,Boolean isUpdate) { + JSONArray rows = whereJson.getJSONArray("tableData"); + if (!isUpdate){ + // 新增 + stIvtIostorinvCp.setIostorinv_id(IdUtil.getStringId()); + stIvtIostorinvCp.setBill_code(CodeUtil.getNewCode("IO_CODE")); + stIvtIostorinvCp.setIo_type(IOSEnum.IO_TYPE.code("出库")); + stIvtIostorinvCp.setBuss_type(whereJson.getString("bill_type")); + stIvtIostorinvCp.setBill_type(stIvtIostorinvCp.getBuss_type()); + stIvtIostorinvCp.setBill_status(IOSEnum.BILL_STATUS.code("生成")); + stIvtIostorinvCp.setCreate_id(SecurityUtils.getCurrentUserId()); + stIvtIostorinvCp.setCreate_name(SecurityUtils.getCurrentNickName()); + stIvtIostorinvCp.setCreate_time(new Date()); + stIvtIostorinvCp.setIs_delete(false); + // TODO 暂时写死 + stIvtIostorinvCp.setSysdeptid("111"); + stIvtIostorinvCp.setSyscompanyid("111"); + }else { + + // 修改 + stIvtIostorinvCp.setUpdate_id(SecurityUtils.getCurrentUserId()); + stIvtIostorinvCp.setUpdate_name(SecurityUtils.getCurrentNickName()); + stIvtIostorinvCp.setUpdate_time(new Date()); + } + + stIvtIostorinvCp.setBiz_date(whereJson.getString("biz_date").substring(0,10)); + // 获取仓库信息 + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.lambda() + .eq(StIvtBsrealstorattr::getStor_id,whereJson.getString("stor_id")) + .eq(StIvtBsrealstorattr::getIs_used, true); + + StIvtBsrealstorattr bsrealDao = stIvtBsrealstorattrService.getOne(wrapper); + if (ObjectUtil.isEmpty(bsrealDao)) throw new BadRequestException("仓库不存在或未启用!"); + + stIvtIostorinvCp.setStor_id(bsrealDao.getStor_id()); + stIvtIostorinvCp.setStor_code(bsrealDao.getStor_code()); + stIvtIostorinvCp.setStor_name(bsrealDao.getStor_name()); + stIvtIostorinvCp.setTotal_qty(whereJson.getBigDecimal("total_qty")); + stIvtIostorinvCp.setDetail_count(rows.size()); + stIvtIostorinvCp.setRemark(whereJson.getString("remark")); + + return stIvtIostorinvCp; + } + + @NotNull + public void updateMst(String iostorinv_id) { + /* + 更新主表 + */ + + StIvtIostorinvCp mstDao = this.baseMapper.selectOne( + new QueryWrapper().lambda() + .eq(StIvtIostorinvCp::getIostorinv_id, iostorinv_id) + ); + mstDao.setUpdate_id(SecurityUtils.getCurrentUserId()); + mstDao.setUpdate_name(SecurityUtils.getCurrentNickName()); + mstDao.setUpdate_time(new Date()); + mstDao.setDis_id(SecurityUtils.getCurrentUserId()); + mstDao.setDis_name(SecurityUtils.getCurrentNickName()); + mstDao.setDis_time(DateUtil.now()); + + // 查询主表下所有明细 + List dtlDaoList = iostorinvdtlCpService.list( + new QueryWrapper().lambda() + .eq(StIvtIostorinvdtlCp::getIostorinv_id, iostorinv_id) + ); + + // 判断是否都为分配完 + boolean is_true = dtlDaoList + .stream() + .allMatch(row -> row.getBill_status().equals(IOSEnum.BILL_STATUS.code("分配完"))); + + if (is_true) { + // 更新主表为分配完 + mstDao.setBill_status(IOSEnum.BILL_STATUS.code("分配完")); + } else { + // 更新主表为分配中 + mstDao.setBill_status(IOSEnum.BILL_STATUS.code("分配中")); + } + + // 判断是否为生成 + boolean is_create = dtlDaoList + .stream() + .allMatch(row -> row.getBill_status().equals(IOSEnum.BILL_STATUS.code("生成"))); + + if (is_create) 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/productmanage/service/iostorInv/impl/StIvtIostorinvCpServiceImpl.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/service/iostorInv/impl/StIvtIostorinvCpServiceImpl.java index 72586305..67644810 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/service/iostorInv/impl/StIvtIostorinvCpServiceImpl.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/service/iostorInv/impl/StIvtIostorinvCpServiceImpl.java @@ -389,8 +389,10 @@ public class StIvtIostorinvCpServiceImpl extends ServiceImpl { * ivt_level:库存等级 * change_qty:变动数量 * change_type:变动类型 + * sale_id: 生产订单标识 * } */ void UpdateIvt(JSONObject json); diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/service/structIvt/impl/StIvtStructivtCpServiceImpl.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/service/structIvt/impl/StIvtStructivtCpServiceImpl.java index 284bfffb..f92b489d 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/service/structIvt/impl/StIvtStructivtCpServiceImpl.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/service/structIvt/impl/StIvtStructivtCpServiceImpl.java @@ -101,6 +101,7 @@ public class StIvtStructivtCpServiceImpl extends ServiceImpl - +