From 9c16967583f58f5958f9d72908bbc70b5ab9f461 Mon Sep 17 00:00:00 2001 From: anthonywj Date: Sun, 16 Apr 2023 11:43:40 +0800 Subject: [PATCH] =?UTF-8?q?1.=E6=96=B0=E5=A2=9E=E9=A2=84=E9=AA=8C=E6=94=B6?= =?UTF-8?q?=E5=BA=93=E5=AD=98=E4=BA=A7=E5=93=81=E4=BF=A1=E6=81=AF=EF=BC=8C?= =?UTF-8?q?=E5=BA=93=E5=AD=98=E4=BA=A7=E5=93=81=E4=BF=A1=E6=81=AF=E8=AF=A6?= =?UTF-8?q?=E6=83=85=EF=BC=9B=202.=E6=9B=B4=E6=94=B9=E9=A2=84=E9=AA=8C?= =?UTF-8?q?=E6=94=B6=E5=87=BA=E5=BA=93=E6=89=AB=E7=A0=81=E6=A0=A1=E9=AA=8C?= =?UTF-8?q?=E6=B5=81=E7=A8=8B=EF=BC=9B=203.=E6=9B=B4=E6=94=B9=E9=A2=84?= =?UTF-8?q?=E9=AA=8C=E6=94=B6=E7=94=9F=E6=88=90=E5=BA=93=E5=AD=98=E6=B5=81?= =?UTF-8?q?=E7=A8=8B=EF=BC=9B=204.=E6=96=B0=E5=A2=9E=E9=A2=84=E9=AA=8C?= =?UTF-8?q?=E6=94=B6=E5=87=BA=E5=BA=93=E5=90=8E=E7=94=9F=E6=88=90=E9=80=80?= =?UTF-8?q?=E8=B4=A7=E5=8D=95=EF=BC=9B=205.=E6=9B=B4=E6=94=B9=E9=A2=84?= =?UTF-8?q?=E9=AA=8C=E6=94=B6=E5=87=BA=E5=BA=93=E5=90=8E=E6=89=A3=E5=87=8F?= =?UTF-8?q?=E6=95=B0=E9=87=8F=E6=B5=81=E7=A8=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/glxp/api/constant/Constant.java | 2 + .../inout/IoCodeTempController.java | 26 +- .../inv/InvPreinProductController.java | 105 ++++++++ .../api/dao/inv/InvPreInProductDetailDao.java | 30 +++ .../glxp/api/dao/inv/InvPreinProductDao.java | 31 +++ .../basic/BasicBussinessTypeEntity.java | 4 + .../inv/InvPreInProductDetailEntity.java | 167 +++++++++++++ .../entity/inv/InvPreProductDetailEntity.java | 2 + .../api/entity/inv/InvPreinDetailEntity.java | 5 + .../api/entity/inv/InvPreinProductEntity.java | 133 ++++++++++ .../req/basic/BussinessTypeSaveRequest.java | 1 + .../req/inv/FilterInvPreinProductRequest.java | 101 ++++++++ .../res/basic/BasicBussinessTypeResponse.java | 2 +- .../api/res/inv/InvPreinDetailResponse.java | 72 +++++- .../api/res/inv/InvPreinProductResponse.java | 108 +++++++++ .../impl/BasicBussinessTypeServiceImpl.java | 6 +- .../service/inout/IoChangeInoutService.java | 6 +- .../service/inout/IoCheckInoutService.java | 228 +++++++++++++----- .../api/service/inout/IoGenInvService.java | 85 +++++-- .../service/inv/InvPreinDetailService.java | 5 + .../inv/InvPreinProductDetailService.java | 53 ++++ .../service/inv/InvPreinProductService.java | 49 ++++ .../InvPreInProductDetailServiceImpl.java | 135 +++++++++++ .../inv/impl/InvPreinDetailServiceImpl.java | 33 ++- .../inv/impl/InvPreinProductServiceImpl.java | 83 +++++++ src/main/resources/application-dev.yml | 4 +- .../mapper/basic/BasicBussinessTypeDao.xml | 4 +- .../mapper/inv/InvPreInProductDetailDao.xml | 77 ++++++ .../mybatis/mapper/inv/InvPreinProductDao.xml | 138 +++++++++++ src/main/resources/schemas/schema_v2.1.sql | 62 ++++- 30 files changed, 1635 insertions(+), 122 deletions(-) create mode 100644 src/main/java/com/glxp/api/controller/inv/InvPreinProductController.java create mode 100644 src/main/java/com/glxp/api/dao/inv/InvPreInProductDetailDao.java create mode 100644 src/main/java/com/glxp/api/dao/inv/InvPreinProductDao.java create mode 100644 src/main/java/com/glxp/api/entity/inv/InvPreInProductDetailEntity.java create mode 100644 src/main/java/com/glxp/api/entity/inv/InvPreinProductEntity.java create mode 100644 src/main/java/com/glxp/api/req/inv/FilterInvPreinProductRequest.java create mode 100644 src/main/java/com/glxp/api/res/inv/InvPreinProductResponse.java create mode 100644 src/main/java/com/glxp/api/service/inv/InvPreinProductDetailService.java create mode 100644 src/main/java/com/glxp/api/service/inv/InvPreinProductService.java create mode 100644 src/main/java/com/glxp/api/service/inv/impl/InvPreInProductDetailServiceImpl.java create mode 100644 src/main/java/com/glxp/api/service/inv/impl/InvPreinProductServiceImpl.java create mode 100644 src/main/resources/mybatis/mapper/inv/InvPreInProductDetailDao.xml create mode 100644 src/main/resources/mybatis/mapper/inv/InvPreinProductDao.xml diff --git a/src/main/java/com/glxp/api/constant/Constant.java b/src/main/java/com/glxp/api/constant/Constant.java index 794ffa0d..ade64717 100644 --- a/src/main/java/com/glxp/api/constant/Constant.java +++ b/src/main/java/com/glxp/api/constant/Constant.java @@ -235,10 +235,12 @@ public class Constant { * 发票登记界面: supInvoice * 出入库明细账 norDetail * 寄售出入库明细账 preDetail + * 预验收出入库明细账 preInDetail */ public static final String ORDER_ACTION_NOR_DETAIL = "norDetail"; public static final String ORDER_ACTION_PRE_DETAIL = "preDetail"; + public static final String ORDER_ACTION_PREIN_DETAIL = "preInDetail"; public static final String ORDER_ACTION_SUP_DELIVERY = "supDelivery"; public static final String ORDER_ACTION_SUP_INVOICE = "supInvoice"; public static final String ORDER_ACTION_SUP_DELAUDIT = "supDelAudit"; diff --git a/src/main/java/com/glxp/api/controller/inout/IoCodeTempController.java b/src/main/java/com/glxp/api/controller/inout/IoCodeTempController.java index 25a23b89..dafe6455 100644 --- a/src/main/java/com/glxp/api/controller/inout/IoCodeTempController.java +++ b/src/main/java/com/glxp/api/controller/inout/IoCodeTempController.java @@ -452,8 +452,8 @@ public class IoCodeTempController extends BaseController { //校验预验收是否已存在 if (bussinessTypeEntity.getActionType() == ConstantStatus.ACTION_TYPE_PREIN) { if (StrUtil.isNotEmpty(udiEntity.getSerialNo())) { - List invProductDetailEntities = invPreinDetailService.findUseByCode(code); - if (CollUtil.isNotEmpty(invProductDetailEntities)) { + int count = invPreinDetailService.findCountByCode(code); + if (count > 0) { return ResultVOUtils.error(500, "预验收库存已存在此UDI码,请检查后重试!"); } } @@ -461,31 +461,27 @@ public class IoCodeTempController extends BaseController { //校验预验收库存是否已存在 if (bussinessTypeEntity.isScanPreIn()) { - InvPreinDetailEntity invProductDetailEntity = invPreinDetailService.findUseOneByCode(code); - if (invProductDetailEntity == null) { - return ResultVOUtils.error(500, "预验收库存未存在此产品!"); + int preInCount = invPreinDetailService.findCountByCode(code); + InvPreinDetailEntity invPreinDetailEntity = invPreinDetailService.findUseOneByCode(code); + if (preInCount <= 0) { + return ResultVOUtils.error(500, "预验收库存数量不足!"); } else { - if (StrUtil.isNotEmpty(invProductDetailEntity.getBatchNo()) && StrUtil.isNotEmpty(addOrderRequest.getBatchNo()) - && !invProductDetailEntity.getBatchNo().equals(addOrderRequest.getBatchNo())) { + if (StrUtil.isNotEmpty(invPreinDetailEntity.getBatchNo()) && StrUtil.isNotEmpty(addOrderRequest.getBatchNo()) + && !invPreinDetailEntity.getBatchNo().equals(addOrderRequest.getBatchNo())) { return ResultVOUtils.error(500, "当前批次号与预验收录入批次号不匹配!"); } if (StrUtil.isNotEmpty(orderId)) {//非首次添加 if (StrUtil.isEmpty(udiEntity.getSerialNo())) {//该单据已有该产品 //无序列号,则可能存在多个预验收入库单 IoCodeTempEntity codeTempEntity = codeTempService.findByUnique(orderId, code); - List invPreinDetailEntities = invPreinDetailService.findUseByCode(code); - int count = 0; - for (InvPreinDetailEntity temp : invPreinDetailEntities) { - count = count + temp.getCount(); - } if (codeTempEntity != null) { - if (count < (codeTempEntity.getMyCount() + 1)) { + if (preInCount < (codeTempEntity.getMyCount() + 1)) { return ResultVOUtils.error(500, "超出预验收库存数量"); } } } else { - if (invProductDetailEntity.getCount() < 1) { - return ResultVOUtils.error(500, "超出预验收库存数量"); + if (preInCount < 1) { + return ResultVOUtils.error(500, "预验收库存数量不足"); } } } diff --git a/src/main/java/com/glxp/api/controller/inv/InvPreinProductController.java b/src/main/java/com/glxp/api/controller/inv/InvPreinProductController.java new file mode 100644 index 00000000..a27de1ac --- /dev/null +++ b/src/main/java/com/glxp/api/controller/inv/InvPreinProductController.java @@ -0,0 +1,105 @@ +package com.glxp.api.controller.inv; + +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.StrUtil; +import com.github.pagehelper.PageInfo; +import com.glxp.api.common.res.BaseResponse; +import com.glxp.api.common.util.ResultVOUtils; +import com.glxp.api.entity.inv.InvPreInProductDetailEntity; +import com.glxp.api.entity.inv.InvPreProductDetailEntity; +import com.glxp.api.req.inv.FilterInvPreProductDetailRequest; +import com.glxp.api.req.inv.FilterInvPreinDetailRequest; +import com.glxp.api.req.inv.FilterInvPreinProductRequest; +import com.glxp.api.res.PageSimpleResponse; +import com.glxp.api.res.inv.InvPreProductDetailResponse; +import com.glxp.api.res.inv.InvPreProductPageResponse; +import com.glxp.api.res.inv.InvPreinDetailResponse; +import com.glxp.api.res.inv.InvPreinProductResponse; +import com.glxp.api.service.auth.CustomerService; +import com.glxp.api.service.auth.WarehouseUserService; +import com.glxp.api.service.inv.InvPreinDetailService; +import com.glxp.api.service.inv.InvPreinProductDetailService; +import com.glxp.api.service.inv.InvPreinProductService; +import com.glxp.api.util.udi.FilterUdiUtils; +import lombok.extern.slf4j.Slf4j; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.List; + +/** + * 预验收库存接口 + */ +@Slf4j +@RestController +public class InvPreinProductController { + @Resource + private InvPreinProductDetailService invPreinProductDetailService; + @Resource + private InvPreinProductService invPreinProductService; + @Resource + private WarehouseUserService warehouseUserService; + @Resource + private CustomerService customerService; + + /** + * 预验收库存查询接口 + * + * @param filterInvPreinProductRequest + * @return + */ + @GetMapping("/spms/inv/pre/in/product/filter") + public BaseResponse filterList(FilterInvPreinProductRequest filterInvPreinProductRequest) { + boolean showSup = false; //前端控制表格显示字段 + if (StrUtil.isNotBlank(filterInvPreinProductRequest.getUdiCode())) { + filterInvPreinProductRequest.setNameCode(FilterUdiUtils.getDiStr(filterInvPreinProductRequest.getUdiCode())); + } + + if (StrUtil.isBlank(filterInvPreinProductRequest.getInvCode())) { + List invCodes = warehouseUserService.selectCodeByUser(customerService.getUserIdStr()); + if (CollUtil.isNotEmpty(invCodes)) { + filterInvPreinProductRequest.setInvCodes(invCodes); + } + } + List list = invPreinProductService.filterList(filterInvPreinProductRequest); + PageInfo pageInfo = new PageInfo<>(list); + InvPreProductPageResponse pageResponse = new InvPreProductPageResponse<>(); + pageResponse.setList(pageInfo.getList()); + pageResponse.setTotal(pageInfo.getTotal()); + pageResponse.setShowSup(showSup); + return ResultVOUtils.success(pageResponse); + } + + /** + * 查询预验收库存详情 + * + * @param detailRequest + * @return + */ + @GetMapping("/spms/inv/pre/in/product/filterDetail") + public BaseResponse filterInvPreProductDetail(FilterInvPreProductDetailRequest detailRequest) { + List invPreProductDetailEntities = invPreinProductDetailService.filterPreProductDetailList(detailRequest); + PageInfo pageInfo = new PageInfo<>(invPreProductDetailEntities); + + List list = new ArrayList<>(); + if (CollUtil.isNotEmpty(invPreProductDetailEntities)) { + invPreProductDetailEntities.forEach(invPreProductDetailEntity -> { + InvPreProductDetailResponse response = new InvPreProductDetailResponse(); + BeanUtil.copyProperties(invPreProductDetailEntity, response); + //设置单据类型名称等单据相关参数 + invPreinProductDetailService.setOrderInfo(response); + list.add(response); + }); + } + + PageSimpleResponse pageSimpleResponse = new PageSimpleResponse<>(); + pageSimpleResponse.setList(list); + pageSimpleResponse.setTotal(pageInfo.getTotal()); + return ResultVOUtils.success(pageSimpleResponse); + } + + +} diff --git a/src/main/java/com/glxp/api/dao/inv/InvPreInProductDetailDao.java b/src/main/java/com/glxp/api/dao/inv/InvPreInProductDetailDao.java new file mode 100644 index 00000000..f4d4e267 --- /dev/null +++ b/src/main/java/com/glxp/api/dao/inv/InvPreInProductDetailDao.java @@ -0,0 +1,30 @@ +package com.glxp.api.dao.inv; + +import com.glxp.api.dao.BaseMapperPlus; +import com.glxp.api.entity.inv.InvPreInProductDetailEntity; +import com.glxp.api.req.inv.FilterInvPreProductDetailRequest; +import com.glxp.api.req.inv.FilterInvProductDetailRequest; + +import java.util.List; + +/** + * 预验收库存详情Dao + */ +public interface InvPreInProductDetailDao extends BaseMapperPlus { + + /** + * 查询库存详情实体列表 + * + * @param filterInvPreProductDetailRequest + * @return + */ + List filterPreProductDetailList(FilterInvPreProductDetailRequest filterInvPreProductDetailRequest); + + /** + * 删除寄预验收库存详情 + * + * @param detailRequest + * @return + */ + boolean deleteInvPreProductDetail(FilterInvProductDetailRequest detailRequest); +} diff --git a/src/main/java/com/glxp/api/dao/inv/InvPreinProductDao.java b/src/main/java/com/glxp/api/dao/inv/InvPreinProductDao.java new file mode 100644 index 00000000..546153ba --- /dev/null +++ b/src/main/java/com/glxp/api/dao/inv/InvPreinProductDao.java @@ -0,0 +1,31 @@ +package com.glxp.api.dao.inv; + +import com.glxp.api.dao.BaseMapperPlus; +import com.glxp.api.entity.inv.InvPreinProductEntity; +import com.glxp.api.req.inv.FilterInvPreinProductRequest; +import com.glxp.api.res.inv.InvPreinProductResponse; + +import java.util.List; + +/** + * 预验收库存Dao + */ +public interface InvPreinProductDao extends BaseMapperPlus { + + /** + * 查询寄售库存VO列表 + * + * @param invPreProductRequest + * @return + */ + List filterList(FilterInvPreinProductRequest invPreProductRequest); + + /** + * 查询寄售库存实体列表 + * + * @param invPreProductRequest + * @return + */ + List filterPreProductList(FilterInvPreinProductRequest invPreProductRequest); + +} diff --git a/src/main/java/com/glxp/api/entity/basic/BasicBussinessTypeEntity.java b/src/main/java/com/glxp/api/entity/basic/BasicBussinessTypeEntity.java index de0de65f..62c8e854 100644 --- a/src/main/java/com/glxp/api/entity/basic/BasicBussinessTypeEntity.java +++ b/src/main/java/com/glxp/api/entity/basic/BasicBussinessTypeEntity.java @@ -397,4 +397,8 @@ public class BasicBussinessTypeEntity { private boolean checkCertExpire; + @TableField(value = "preInBackAction") + private String preInBackAction; + + } diff --git a/src/main/java/com/glxp/api/entity/inv/InvPreInProductDetailEntity.java b/src/main/java/com/glxp/api/entity/inv/InvPreInProductDetailEntity.java new file mode 100644 index 00000000..ac07b29c --- /dev/null +++ b/src/main/java/com/glxp/api/entity/inv/InvPreInProductDetailEntity.java @@ -0,0 +1,167 @@ +package com.glxp.api.entity.inv; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +import java.util.Date; + +/** + * 寄售库存详情表 + */ +@Data +@TableName(value = "inv_pre_product_detail") +public class InvPreInProductDetailEntity { + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + /** + * UDI码 + */ + @TableField(value = "code") + private String code; + + /** + * 出入单据类型 + */ + @TableField(value = "mainAction") + private String mainAction; + + /** + * 单据类型 + */ + @TableField(value = "`action`") + private String action; + + /** + * 订单号外键 + */ + @TableField(value = "orderId") + private String orderId; + + /** + * 耗材字典ID + */ + @TableField(value = "relId") + private Long relId; + + /** + * 最小销售标识 + */ + @TableField(value = "nameCode") + private String nameCode; + + /** + * 批次号 + */ + @TableField(value = "batchNo") + private String batchNo; + + /** + * 生产日期 + */ + @TableField(value = "produceDate") + private String produceDate; + + /** + * 失效日期 + */ + @TableField(value = "expireDate") + private String expireDate; + + /** + * 序列号 + */ + @TableField(value = "serialNo") + private String serialNo; + + /** + * 供应商 + */ + @TableField(value = "supId") + private String supId; + + /** + * 扫码数量 + */ + @TableField(value = "`count`") + private int count; + + /** + * 实际数量 + */ + @TableField(value = "reCount") + private int reCount; + + /** + * 部门编码 + */ + @TableField(value = "deptCode") + private String deptCode; + + /** + * 仓库编码 + */ + @TableField(value = "invCode") + private String invCode; + + /** + * 货位编码 + */ + @TableField(value = "invSpaceCode") + private String invSpaceCode; + + /** + * 采购类型 + */ + @TableField(value = "purchaseType") + private Integer purchaseType; + + /** + * 更新时间 + */ + @TableField(value = "updateTime") + private Date updateTime; + + + + public static final String COL_ID = "id"; + + public static final String COL_CODE = "code"; + + public static final String COL_MAINACTION = "mainAction"; + + public static final String COL_ACTION = "action"; + + public static final String COL_ORDERID = "orderId"; + + public static final String COL_RELID = "relId"; + + public static final String COL_NAMECODE = "nameCode"; + + public static final String COL_BATCHNO = "batchNo"; + + public static final String COL_PRODUCEDATE = "produceDate"; + + public static final String COL_EXPIREDATE = "expireDate"; + + public static final String COL_SERIALNO = "serialNo"; + + public static final String COL_SUPID = "supId"; + + public static final String COL_COUNT = "count"; + + public static final String COL_RECOUNT = "reCount"; + + public static final String COL_DEPTCODE = "deptCode"; + + public static final String COL_INVCODE = "invCode"; + + public static final String COL_INVSPACECODE = "invSpaceCode"; + + public static final String COL_PURCHASETYPE = "purchaseType"; + + public static final String COL_UPDATETIME = "updateTime"; +} diff --git a/src/main/java/com/glxp/api/entity/inv/InvPreProductDetailEntity.java b/src/main/java/com/glxp/api/entity/inv/InvPreProductDetailEntity.java index 133f3ffa..0d10cc4f 100644 --- a/src/main/java/com/glxp/api/entity/inv/InvPreProductDetailEntity.java +++ b/src/main/java/com/glxp/api/entity/inv/InvPreProductDetailEntity.java @@ -125,6 +125,8 @@ public class InvPreProductDetailEntity { @TableField(value = "updateTime") private Date updateTime; + + public static final String COL_ID = "id"; public static final String COL_CODE = "code"; diff --git a/src/main/java/com/glxp/api/entity/inv/InvPreinDetailEntity.java b/src/main/java/com/glxp/api/entity/inv/InvPreinDetailEntity.java index 52c5f353..4323eb25 100644 --- a/src/main/java/com/glxp/api/entity/inv/InvPreinDetailEntity.java +++ b/src/main/java/com/glxp/api/entity/inv/InvPreinDetailEntity.java @@ -91,4 +91,9 @@ public class InvPreinDetailEntity { @TableField(value = "status") private int status; + + @TableField(value = "mainAction") + private String mainAction; + @TableField(value = "action") + private String action; } diff --git a/src/main/java/com/glxp/api/entity/inv/InvPreinProductEntity.java b/src/main/java/com/glxp/api/entity/inv/InvPreinProductEntity.java new file mode 100644 index 00000000..a144bb69 --- /dev/null +++ b/src/main/java/com/glxp/api/entity/inv/InvPreinProductEntity.java @@ -0,0 +1,133 @@ +package com.glxp.api.entity.inv; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +import java.util.Date; + +/** + * 预验收库存表 + */ +@Data +@TableName(value = "inv_prein_product") +public class InvPreinProductEntity { + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + /** + * 耗材字典ID + */ + @TableField(value = "relIdFk") + private Long relIdFk; + + /** + * 最小销售标识 + */ + @TableField(value = "nameCode") + private String nameCode; + + /** + * 批次号 + */ + @TableField(value = "batchNo") + private String batchNo; + + /** + * 生产日期 + */ + @TableField(value = "productionDate") + private String productionDate; + + /** + * 失效日期 + */ + @TableField(value = "expireDate") + private String expireDate; + + /** + * 入库数量 + */ + @TableField(value = "inCount") + private int inCount; + + /** + * 出库数量 + */ + @TableField(value = "outCount") + private int outCount; + + /** + * 实际数量 + */ + @TableField(value = "reCount") + private int reCount; + + /** + * 客户ID + */ + @TableField(value = "customerId") + private String customerId; + + /** + * 供应商ID + */ + @TableField(value = "supId") + private String supId; + + /** + * 部门编码 + */ + @TableField(value = "deptCode") + private String deptCode; + + /** + * 仓库编码 + */ + @TableField(value = "invCode") + private String invCode; + + /** + * 创建时间 + */ + @TableField(value = "createTime") + private Date createTime; + + /** + * 更新时间 + */ + @TableField(value = "updateTime") + private Date updateTime; + + public static final String COL_ID = "id"; + + public static final String COL_RELIDFK = "relIdFk"; + + public static final String COL_NAMECODE = "nameCode"; + + public static final String COL_BATCHNO = "batchNo"; + + public static final String COL_PRODUCTIONDATE = "productionDate"; + + public static final String COL_EXPIREDATE = "expireDate"; + + public static final String COL_INCOUNT = "inCount"; + + public static final String COL_OUTCOUNT = "outCount"; + + public static final String COL_RECOUNT = "reCount"; + + public static final String COL_CUSTOMERID = "customerId"; + + public static final String COL_SUPID = "supId"; + + public static final String COL_DEPTCODE = "deptCode"; + + public static final String COL_INVCODE = "invCode"; + + public static final String COL_CREATETIME = "createTime"; + + public static final String COL_UPDATETIME = "updateTime"; +} diff --git a/src/main/java/com/glxp/api/req/basic/BussinessTypeSaveRequest.java b/src/main/java/com/glxp/api/req/basic/BussinessTypeSaveRequest.java index d931c710..0184d7cd 100644 --- a/src/main/java/com/glxp/api/req/basic/BussinessTypeSaveRequest.java +++ b/src/main/java/com/glxp/api/req/basic/BussinessTypeSaveRequest.java @@ -298,6 +298,7 @@ public class BussinessTypeSaveRequest { private boolean checkVailDate; private boolean checkExpire; private boolean checkCertExpire; + private String preInBackAction; } diff --git a/src/main/java/com/glxp/api/req/inv/FilterInvPreinProductRequest.java b/src/main/java/com/glxp/api/req/inv/FilterInvPreinProductRequest.java new file mode 100644 index 00000000..17d12d19 --- /dev/null +++ b/src/main/java/com/glxp/api/req/inv/FilterInvPreinProductRequest.java @@ -0,0 +1,101 @@ +package com.glxp.api.req.inv; + +import com.glxp.api.util.page.ListPageRequest; +import lombok.Data; + +import java.util.List; + +/** + * 预验收库存查询参数 + */ +@Data +public class FilterInvPreinProductRequest extends ListPageRequest { + + private String id; + + /** + * 产品名称 + */ + private String cpmctymc; + + /** + * 产品标识DI + */ + private String nameCode; + + /** + * UDI码 + */ + private String udiCode; + + /** + * 耗材字典ID + */ + private String relIdFk; + + /** + * 规格型号 + */ + private String ggxh; + + /** + * 批次号 + */ + private String batchNo; + + /** + * 生产日期 + */ + private String productionDate; + + /** + * 失效日期 + */ + private String expireDate; + + /** + * 生产厂家 + */ + private String ylqxzcrbarmc; + + /** + * 批准文号 + */ + private String zczbhhzbapzbh; + + /** + * 客户ID + */ + private String customerId; + + /** + * 供应商ID + */ + private String supId; + + /** + * 供应商名称 + */ + private String supName; + + /** + * 部门编码 + */ + private String deptCode; + + /** + * 仓库编码 + */ + private String invCode; + + /** + * 仓库数组 + */ + private List invCodes; + + /** + * 产品类别 + */ + private String cplb; + +} diff --git a/src/main/java/com/glxp/api/res/basic/BasicBussinessTypeResponse.java b/src/main/java/com/glxp/api/res/basic/BasicBussinessTypeResponse.java index 22dd694a..1daad368 100644 --- a/src/main/java/com/glxp/api/res/basic/BasicBussinessTypeResponse.java +++ b/src/main/java/com/glxp/api/res/basic/BasicBussinessTypeResponse.java @@ -147,5 +147,5 @@ public class BasicBussinessTypeResponse { private boolean checkVailDate; private boolean checkExpire; private boolean checkCertExpire; - + private String preInBackAction; } diff --git a/src/main/java/com/glxp/api/res/inv/InvPreinDetailResponse.java b/src/main/java/com/glxp/api/res/inv/InvPreinDetailResponse.java index bc8e413a..812217cb 100644 --- a/src/main/java/com/glxp/api/res/inv/InvPreinDetailResponse.java +++ b/src/main/java/com/glxp/api/res/inv/InvPreinDetailResponse.java @@ -1,10 +1,9 @@ package com.glxp.api.res.inv; -import com.baomidou.mybatisplus.annotation.IdType; -import com.baomidou.mybatisplus.annotation.TableField; -import com.baomidou.mybatisplus.annotation.TableId; import lombok.Data; +import java.util.Date; + @Data public class InvPreinDetailResponse { @@ -75,4 +74,71 @@ public class InvPreinDetailResponse { private String fromName; + /** + * 供应商 + */ + private String supId; + + + /** + * 部门编码 + */ + private String deptCode; + + /** + * 仓库编码 + */ + private String invCode; + + /** + * 货位编码 + */ + private String invSpaceCode; + + /** + * 采购类型 + */ + private Integer purchaseType; + + /** + * 更新时间 + */ + private Date updateTime; + + /** + * 单据出入库类型 + */ + private String mainAction; + + /** + * 单据类型编码 + */ + private String action; + + /** + * 单据类型名称 + */ + private String actionName; + + /** + * 出入库类型中文字符串 + */ + private String mainActionStr; + + /** + * 入库数量 + */ + private Integer inCount; + + /** + * 出库数量 + */ + private Integer outCount; + + /** + * 单据日期 + */ + private String orderTime; + + } diff --git a/src/main/java/com/glxp/api/res/inv/InvPreinProductResponse.java b/src/main/java/com/glxp/api/res/inv/InvPreinProductResponse.java new file mode 100644 index 00000000..35940bb1 --- /dev/null +++ b/src/main/java/com/glxp/api/res/inv/InvPreinProductResponse.java @@ -0,0 +1,108 @@ +package com.glxp.api.res.inv; + +import lombok.Data; + +/** + * 预验收库存VO + */ +@Data +public class InvPreinProductResponse { + + private Integer id; + + /** + * 产品标识DI + */ + private String nameCode; + + /** + * 产品名称 + */ + private String cpmctymc; + + /** + * 耗材字典ID + */ + private String relIdFk; + + /** + * 规格型号 + */ + private String ggxh; + + /** + * 批次号 + */ + private String batchNo; + + /** + * 生产日期 + */ + private String productionDate; + + /** + * 过期时间 + */ + private String expireDate; + + /** + * 生产厂家名称 + */ + private String ylqxzcrbarmc; + + /** + * 批准文号 + */ + private String zczbhhzbapzbh; + + /** + * 入库数量 + */ + private int inCount; + + /** + * 出库数量 + */ + private int outCount; + + /** + * 实际数量 + */ + private int reCount; + + /** + * 客户ID + */ + private String customerId; + + /** + * 供应商名称 + */ + private String supName; + + /** + * 供应商ID + */ + private String supId; + + /** + * 部门名称 + */ + private String deptName; + + /** + * 仓库名称 + */ + private String invName; + + /** + * 部门编码 + */ + private String deptCode; + + /** + * 仓库编码 + */ + private String invCode; + +} diff --git a/src/main/java/com/glxp/api/service/basic/impl/BasicBussinessTypeServiceImpl.java b/src/main/java/com/glxp/api/service/basic/impl/BasicBussinessTypeServiceImpl.java index 5d3719fc..b8d5c385 100644 --- a/src/main/java/com/glxp/api/service/basic/impl/BasicBussinessTypeServiceImpl.java +++ b/src/main/java/com/glxp/api/service/basic/impl/BasicBussinessTypeServiceImpl.java @@ -209,13 +209,17 @@ public class BasicBussinessTypeServiceImpl implements IBasicBussinessTypeService switch (vueType) { case Constant.ORDER_ACTION_NOR_DETAIL: bussinessTypeEntities = basicBussinessTypeDao.selectList(new QueryWrapper() - .eq("actionType", 1).eq("inStock", true)); + .eq("actionType", 1).eq("inStock", true).eq("enable", true)); break; case Constant.ORDER_ACTION_PRE_DETAIL: bussinessTypeEntities = basicBussinessTypeDao.selectList(new QueryWrapper() .eq("actionType", 3).eq("inStock", true).eq("enable", true)); break; + case Constant.ORDER_ACTION_PREIN_DETAIL: + bussinessTypeEntities = basicBussinessTypeDao.selectList(new QueryWrapper() + .eq("actionType", 2).eq("inStock", true).eq("enable", true)); + break; case Constant.ORDER_ACTION_SUP_DELIVERY: //允许送货单直接入库变更库存,则不判断送货单是否入库 String deliveryInstock = systemParamConfigService.selectValueByParamKey("deliveryInstock"); diff --git a/src/main/java/com/glxp/api/service/inout/IoChangeInoutService.java b/src/main/java/com/glxp/api/service/inout/IoChangeInoutService.java index e64170fb..f2e1da49 100644 --- a/src/main/java/com/glxp/api/service/inout/IoChangeInoutService.java +++ b/src/main/java/com/glxp/api/service/inout/IoChangeInoutService.java @@ -218,11 +218,7 @@ public class IoChangeInoutService { outOrder.setInvCode(invWarehouseEntity.getCode()); outOrder.setDeptCode(invWarehouseEntity.getParentId()); SystemParamConfigEntity systemParamConfigEntity = systemParamConfigService.selectByParamKey("additional_auto_submit"); - if ("1".equals(systemParamConfigEntity.getParamValue())) { - outOrder.setStatus(ConstantStatus.ORDER_STATUS_PROCESS); - } else { - outOrder.setStatus(ConstantStatus.ORDER_STATUS_ADDITIONAL); - } + outOrder.setStatus(ConstantStatus.ORDER_STATUS_PROCESS); //互填单号 orderEntity.setUllageSupNo(outOrder.getBillNo()); diff --git a/src/main/java/com/glxp/api/service/inout/IoCheckInoutService.java b/src/main/java/com/glxp/api/service/inout/IoCheckInoutService.java index 90a8275d..6d229505 100644 --- a/src/main/java/com/glxp/api/service/inout/IoCheckInoutService.java +++ b/src/main/java/com/glxp/api/service/inout/IoCheckInoutService.java @@ -2,13 +2,16 @@ package com.glxp.api.service.inout; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.lang.UUID; +import cn.hutool.core.thread.ThreadUtil; import cn.hutool.core.util.StrUtil; import com.glxp.api.common.util.ResultVOUtils; +import com.glxp.api.constant.Constant; import com.glxp.api.constant.ConstantStatus; import com.glxp.api.constant.ConstantType; import com.glxp.api.entity.basic.BasicBussinessTypeEntity; import com.glxp.api.entity.basic.UdiEntity; import com.glxp.api.entity.inout.*; +import com.glxp.api.entity.inv.InvInnerOrderPdfTempEntity; import com.glxp.api.entity.inv.InvPreinDetailEntity; import com.glxp.api.res.inout.IoOrderCheckResultResponse; import com.glxp.api.res.inout.IoOrderDetailBizResponse; @@ -16,18 +19,26 @@ import com.glxp.api.res.inout.IoOrderDetailCodeResponse; import com.glxp.api.service.basic.IBasicBussinessTypeService; import com.glxp.api.service.inv.InvPreinDetailService; import com.glxp.api.service.inv.InvPreinOrderService; +import com.glxp.api.util.CustomUtil; +import com.glxp.api.util.GennerOrderUtils; +import com.glxp.api.util.JasperUtils; +import com.glxp.api.util.OrderNoTypeBean; import com.glxp.api.util.udi.FilterUdiUtils; +import net.sf.jasperreports.engine.JRException; import org.springframework.beans.BeanUtils; import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; +import java.io.IOException; import java.util.*; /** * 校验出入库服务 */ @Service +@Transactional(rollbackFor = Exception.class) public class IoCheckInoutService { @Resource @@ -48,6 +59,8 @@ public class IoCheckInoutService { InvPreinDetailService invPreinDetailService; @Resource IoGenInvService genInvService; + @Resource + IoAddInoutService addInoutService; //判断是否需要手动校验 public boolean checkManual(String billNo) { @@ -722,93 +735,172 @@ public class IoCheckInoutService { //校验完成后生成库存 public void genInv(IoOrderEntity orderEntity, BasicBussinessTypeEntity bussinessTypeEntity) { - //预验收出库,删掉对应预验收库存 if (bussinessTypeEntity.getMainAction().equals(ConstantType.TYPE_OUT) && bussinessTypeEntity.isScanPreIn()) { - List codeList = codeService.findByOrderId(orderEntity.getBillNo()); - - //找出UDI码对应的预验收入库单号 - Map preInOrder = new HashMap<>(); - for (IoCodeEntity warehouseEntity : codeList) { - List invProductDetailEntities = invPreinDetailService.findByCode(warehouseEntity.getCode()); - if (invProductDetailEntities.size() > 0) { - for (InvPreinDetailEntity invPreinDetailEntity : invProductDetailEntities) { - preInOrder.put(invPreinDetailEntity.getOrderId(), invPreinDetailEntity.getOrderId()); - invPreinDetailEntity.setStatus(ConstantStatus.INVIN_USE); - invPreinDetailService.update(invPreinDetailEntity); - } + ThreadUtil.execAsync(() -> { + + List codeList = codeService.findByOrderId(orderEntity.getBillNo()); + //找出UDI码对应的预验收入库单号 + Map preInOrder = new HashMap<>(); + for (IoCodeEntity warehouseEntity : codeList) { + List invProductDetailEntities = invPreinDetailService.findByCode(warehouseEntity.getCode()); + if (invProductDetailEntities.size() > 0) { + for (InvPreinDetailEntity invPreinDetailEntity : invProductDetailEntities) + preInOrder.put(invPreinDetailEntity.getOrderId(), invPreinDetailEntity.getOrderId()); + } } - } - if (preInOrder.size() > 0) { - - if (StrUtil.isEmpty(orderEntity.getRelKey())) { - orderEntity.setRelKey(UUID.fastUUID().toString(true)); - } - - String preInBillNo = ""; - boolean isBreak = false; - for (String key : preInOrder.keySet()) { - if (!isBreak) { - preInBillNo = preInBillNo + "," + key; - IoOrderEntity preInEntity = orderService.findByBillNo(key); - preInEntity.setPreOutBillNo(orderEntity.getBillNo()); - preInEntity.setRelKey(orderEntity.getRelKey()); - orderService.update(preInEntity); - BasicBussinessTypeEntity preBusType = basicBussinessTypeService.findByAction(preInEntity.getAction()); - //预验收不删除单号,方便后续查询 - if (preBusType.isPreInBack()) { //预验收如果带回,则清空相关预验收库存; - invPreinDetailService.updateBack(preInEntity.getBillNo()); -// invPreinDetailService.deleteByOrderId(preInEntity.getBillNo()); - } else { //预验收如果不带回,则清除已出库相关库存 - for (IoCodeEntity codeEntity : codeList) { - if (StrUtil.isEmpty(codeEntity.getSerialNo())) { - InvPreinDetailEntity invPreinDetailEntity = invPreinDetailService.findByCode(key, codeEntity.getCode()); - if (invPreinDetailEntity != null) { - int count = 0; - if (invPreinDetailEntity.getCount() < codeEntity.getCount()) { - count = 0; - } else { - count = invPreinDetailEntity.getCount() - codeEntity.getCount(); - } - if (count >= 0) { - isBreak = true; - if (count == 0) { -// invPreinDetailService.deleteByCode(key, codeEntity.getCode()); + if (preInOrder.size() > 0) { + String preInBillNo = ""; + boolean isBreak = false; + List backCodeList = new ArrayList<>(); + for (String key : preInOrder.keySet()) { + if (!isBreak) { + preInBillNo = preInBillNo + "," + key; + IoOrderEntity preInEntity = orderService.findByBillNo(key); + preInEntity.setPreOutBillNo(orderEntity.getBillNo()); + orderService.update(preInEntity); + BasicBussinessTypeEntity preBusType = basicBussinessTypeService.findByAction(preInEntity.getAction()); + //预验收不删除单号,方便后续查询 + if (preBusType.isPreInBack()) { //预验收如果带回,则清空相关预验收库存; + invPreinDetailService.deleteByOrderId(preInEntity.getBillNo()); + //剩余UDI码生成退货单 todo + List codeEntities = codeService.findByOrderId(preInBillNo); + backCodeList.addAll(codeEntities); + } else { //预验收如果不带回,则清除已出库相关库存 + for (IoCodeEntity codeEntity : codeList) { + if (StrUtil.isEmpty(codeEntity.getSerialNo())) { + InvPreinDetailEntity invPreinDetailEntity = invPreinDetailService.findByCode(key, codeEntity.getCode()); + if (invPreinDetailEntity != null) { + int count = 0; + if (invPreinDetailEntity.getCount() < codeEntity.getCount()) { + count = 0; } else { - invPreinDetailEntity.setStatus(ConstantStatus.INVIN_IN); - invPreinDetailEntity.setCount(count); - invPreinDetailService.update(invPreinDetailEntity); + count = invPreinDetailEntity.getCount() - codeEntity.getCount(); } - int reCount = invPreinDetailEntity.getReCount() - codeEntity.getMyReCount(); - if (reCount == 0) { -// invPreinDetailService.deleteByCode(key, codeEntity.getCode()); - } else { - invPreinDetailEntity.setStatus(ConstantStatus.INVIN_IN); - invPreinDetailEntity.setReCount(reCount); - invPreinDetailService.update(invPreinDetailEntity); + if (count >= 0) { + isBreak = true; + if (count == 0) { + invPreinDetailService.deleteByCode(key, codeEntity.getCode()); + } else { + invPreinDetailEntity.setCount(count); + invPreinDetailService.update(invPreinDetailEntity); + } + int reCount = invPreinDetailEntity.getReCount() - codeEntity.getMyReCount(); + if (reCount == 0) { + invPreinDetailService.deleteByCode(key, codeEntity.getCode()); + } else { + invPreinDetailEntity.setReCount(reCount); + invPreinDetailService.update(invPreinDetailEntity); + } } } + } else { + invPreinDetailService.deleteByCode(key, codeEntity.getCode()); + } + } + + } + } + + + } + orderEntity.setPreInBillNo(preInBillNo.substring(1)); + orderService.update(orderEntity); + + //生成退货单 1.查出所有关联的单据条码,2.扣减当前出库数量;3.生成单据类型对应绑定的出库单 + if (CollUtil.isNotEmpty(backCodeList)) { + List realBackCodeList = new ArrayList<>(); + for (IoCodeEntity backCodeEntity : backCodeList) { + for (IoCodeEntity codeEntity : codeList) { + if (codeEntity.getCount() != 0 && backCodeEntity.getCode().equals(codeEntity.getCode())) { + int count = backCodeEntity.getCount() - codeEntity.getCount(); + int reCount = backCodeEntity.getReCount() - codeEntity.getReCount(); + if (count > 0) { + codeEntity.setCount(0); + codeEntity.setReCount(0); + backCodeEntity.setCount(count); + backCodeEntity.setReCount(reCount); + realBackCodeList.add(backCodeEntity); + } else if (count == 0) { + codeEntity.setCount(0); + codeEntity.setReCount(0); + } else if (count < 0) { + codeEntity.setCount(-count); + codeEntity.setReCount(-reCount); } + } + } - } else { -// invPreinDetailService.deleteByCode(key, codeEntity.getCode()); + } + if (CollUtil.isNotEmpty(realBackCodeList)) { + Map> backPreInOrder = new HashMap<>(); + for (IoCodeEntity codeEntity : codeList) { + List codeEntities = backPreInOrder.get(codeEntity.getOrderId()); + if (CollUtil.isEmpty(codeEntities)) { + codeEntities = new ArrayList<>(); } + codeEntities.add(codeEntity); + backPreInOrder.put(codeEntity.getOrderId(), codeEntities); } + for (String key : backPreInOrder.keySet()) { + IoOrderEntity originOrder = orderService.findByBillNo(key); + BasicBussinessTypeEntity basicBussinessTypeEntity = basicBussinessTypeService.findByAction(originOrder.getAction()); + if (StrUtil.isNotEmpty(basicBussinessTypeEntity.getPreInBackAction())) { + IoOrderEntity outOrder = new IoOrderEntity(); + BeanUtils.copyProperties(originOrder, outOrder); + outOrder.setId(null); + outOrder.setMainAction(ConstantType.TYPE_OUT); + outOrder.setAction(basicBussinessTypeEntity.getAction()); + outOrder.setCreateTime(new Date()); + outOrder.setFromType(ConstantStatus.FROM_CHANGE); + String orderNo = gennerOrderUtils.createScOrderNo(new OrderNoTypeBean(Constant.SCAN_ORDER + StrUtil.trimToEmpty(basicBussinessTypeEntity.getPrefix()), "yyyyMMdd")); + outOrder.setBillNo(orderNo); + outOrder.setCustomerId(Constant.SYSTEM_CUSTOMER_ID); + outOrder.setCorpOrderId(CustomUtil.getId() + "x"); + outOrder.setStatus(ConstantStatus.ORDER_STATUS_PROCESS); + originOrder.setUllageSupNo(outOrder.getBillNo()); + originOrder.setUpdateTime(new Date()); + orderService.update(originOrder); + outOrder.setOriginUllageSupNo(originOrder.getBillNo()); + outOrder.setCreateUser(null); + outOrder.setReviewUser(null); + orderService.insertOrder(outOrder); + + //生成条码 + List codeTempEntities = new ArrayList<>(); + for (IoCodeEntity warehouseEntity : backPreInOrder.get(key)) { + IoCodeTempEntity codeTempEntity = new IoCodeTempEntity(); + BeanUtils.copyProperties(warehouseEntity, codeTempEntity); + codeTempEntity.setId(null); + codeTempEntity.setOrderId(outOrder.getBillNo()); + codeTempEntity.setAction(outOrder.getAction()); + codeTempEntity.setMainAction(outOrder.getMainAction()); + codeTempEntity.setCreateTime(new Date()); + codeTempEntity.setUpdateTime(new Date()); + codeTempEntities.add(codeTempEntity); + } + codeTempService.insertBatch(codeTempEntities); + addInoutService.dealProcess(outOrder); + if (!checkManual(outOrder.getBillNo())) { + check(outOrder.getBillNo()); + } + + + } + } } } + } - } - orderEntity.setPreInBillNo(preInBillNo.substring(1)); - orderService.update(orderEntity); - } + }); } + //校验是否是不入库存单据 if (bussinessTypeEntity.isInStock()) { -// if (bussinessTypeEntity.getBusType() == ConstantStatus.BUS_TYPE_NORMAL) { //生成库存 if (bussinessTypeEntity.getActionType() == ConstantStatus.ACTION_TYPE_PREIN) { genInvService.genPreInInv(orderEntity.getBillNo()); @@ -825,6 +917,10 @@ public class IoCheckInoutService { } + // 预验收使用出库处理1.不带回扣库存;2.带回时生成退货出库单 + @Resource + GennerOrderUtils gennerOrderUtils; + public String checkId(IoOrderDetailBizEntity bizEntity, IoOrderDetailCodeEntity codeEntity) { diff --git a/src/main/java/com/glxp/api/service/inout/IoGenInvService.java b/src/main/java/com/glxp/api/service/inout/IoGenInvService.java index 302e8404..b7dda8f0 100644 --- a/src/main/java/com/glxp/api/service/inout/IoGenInvService.java +++ b/src/main/java/com/glxp/api/service/inout/IoGenInvService.java @@ -119,6 +119,8 @@ public class IoGenInvService { InvPreProductService invPreProductService; @Resource InvPreProductDetailService invPreProductDetailService; + @Resource + InvPreinProductDetailService invPreinProductDetailService; //生成寄售库存 public void genPreInv(String orderId) { @@ -171,27 +173,78 @@ public class IoGenInvService { } + @Resource + InvPreinProductService invPreinProductService; + //生成预验收库存 public void genPreInInv(String orderId) { + + //入库预验收进入到实际在库码表 IoOrderEntity orderEntity = orderService.findByBillNo(orderId); - InvPreinOrderEntity invPreinOrderEntity = new InvPreinOrderEntity(); - BeanUtils.copyProperties(orderEntity, invPreinOrderEntity); - invPreinOrderService.insert(invPreinOrderEntity); + if (orderEntity.getMainAction().equals(ConstantType.TYPE_PUT)) { + InvPreinOrderEntity invPreinOrderEntity = new InvPreinOrderEntity(); + BeanUtils.copyProperties(orderEntity, invPreinOrderEntity); + invPreinOrderService.insert(invPreinOrderEntity); + List codeEnttities = codeService.findByOrderId(orderId); + List invPreinDetailEntities = new ArrayList<>(); + codeEnttities.forEach(codeEntity -> + { + InvPreinDetailEntity invPreinDetailEntity = new InvPreinDetailEntity(); + BeanUtils.copyProperties(codeEntity, invPreinDetailEntity); + invPreinDetailEntity.setId(null); + invPreinDetailEntity.setStatus(ConstantStatus.INVIN_IN); + invPreinDetailEntity.setOriginCount(codeEntity.getCount()); + invPreinDetailEntity.setOriginReCount(codeEntity.getReCount()); + invPreinDetailEntities.add(invPreinDetailEntity); + }); + invPreinDetailService.insertList(invPreinDetailEntities); + } + + //走正常流程,生成对应库存 +// 生成库存产品信息表 + List orderDetailResultEntities = orderDetailResultService.findByOrderId(orderId); + //生成库存产品表 + for (IoOrderDetailResultEntity orderDetailResultEntity : orderDetailResultEntities) { + InvPreinProductEntity invProductEntity = invPreinProductService.selectByUnique(orderDetailResultEntity.getBindRlFk(), orderDetailResultEntity.getBatchNo(), orderDetailResultEntity.getSupId(), orderEntity.getDeptCode(), orderEntity.getInvCode()); + if (invProductEntity == null) { + invProductEntity = new InvPreinProductEntity(); + invProductEntity.setRelIdFk(orderDetailResultEntity.getBindRlFk()); + invProductEntity.setNameCode(orderDetailResultEntity.getNameCode()); + invProductEntity.setBatchNo(orderDetailResultEntity.getBatchNo()); + invProductEntity.setProductionDate(orderDetailResultEntity.getProductDate()); + invProductEntity.setExpireDate(orderDetailResultEntity.getExpireDate()); + invProductEntity.setInCount(0); + invProductEntity.setOutCount(0); + invProductEntity.setSupId(orderDetailResultEntity.getSupId()); + invProductEntity.setDeptCode(orderEntity.getDeptCode()); + invProductEntity.setInvCode(orderEntity.getInvCode()); + invProductEntity.setCreateTime(new Date()); + invProductEntity.setUpdateTime(new Date()); + invPreinProductService.insert(invProductEntity); + } + if (orderEntity.getMainAction().equals(ConstantType.TYPE_OUT)) { + invProductEntity.setOutCount(invProductEntity.getOutCount() + orderDetailResultEntity.getReCount()); + } else if (orderEntity.getMainAction().equals(ConstantType.TYPE_PUT)) { + invProductEntity.setInCount(invProductEntity.getInCount() + orderDetailResultEntity.getReCount()); + } + invProductEntity.setReCount(invProductEntity.getInCount() - invProductEntity.getOutCount()); + invProductEntity.setUpdateTime(new Date()); + invPreinProductService.update(invProductEntity); + } List codeEnttities = codeService.findByOrderId(orderId); - List invPreinDetailEntities = new ArrayList<>(); - codeEnttities.forEach(codeEntity -> - { - InvPreinDetailEntity invPreinDetailEntity = new InvPreinDetailEntity(); - BeanUtils.copyProperties(codeEntity, invPreinDetailEntity); - invPreinDetailEntity.setId(null); - invPreinDetailEntity.setStatus(ConstantStatus.INVIN_IN); - invPreinDetailEntity.setOriginCount(codeEntity.getCount()); - invPreinDetailEntity.setOriginReCount(codeEntity.getReCount()); - invPreinDetailEntities.add(invPreinDetailEntity); - }); - - invPreinDetailService.insertList(invPreinDetailEntities); + //生成库存码详情 + List invProductDetailEntities = new ArrayList<>(); + for (IoCodeEntity codeEntity : codeEnttities) { + InvPreInProductDetailEntity invProductDetailEntity = new InvPreInProductDetailEntity(); + BeanUtils.copyProperties(codeEntity, invProductDetailEntity); + invProductDetailEntity.setRelId(codeEntity.getRelId()); + invProductDetailEntity.setUpdateTime(new Date()); + invProductDetailEntity.setPurchaseType(ConstantStatus.PRUCHASE_COMMON); + invProductDetailEntities.add(invProductDetailEntity); + } + invPreinProductDetailService.insertList(invProductDetailEntities); + } diff --git a/src/main/java/com/glxp/api/service/inv/InvPreinDetailService.java b/src/main/java/com/glxp/api/service/inv/InvPreinDetailService.java index 2ded2a0c..d68c38eb 100644 --- a/src/main/java/com/glxp/api/service/inv/InvPreinDetailService.java +++ b/src/main/java/com/glxp/api/service/inv/InvPreinDetailService.java @@ -1,8 +1,12 @@ package com.glxp.api.service.inv; +import com.glxp.api.entity.inv.InvPreProductDetailEntity; import com.glxp.api.entity.inv.InvPreinDetailEntity; +import com.glxp.api.req.inv.FilterInvPreProductDetailRequest; import com.glxp.api.req.inv.FilterInvPreinDetailRequest; +import com.glxp.api.req.inv.FilterInvPreinProductRequest; import com.glxp.api.req.inv.FilterInvPreinRequest; +import com.glxp.api.res.inv.InvPreProductDetailResponse; import com.glxp.api.res.inv.InvPreinDetailResponse; import com.glxp.api.res.inv.InvPreinOrderResponse; @@ -36,4 +40,5 @@ public interface InvPreinDetailService { int updateBack(String orderId); + int findCountByCode(String code); } diff --git a/src/main/java/com/glxp/api/service/inv/InvPreinProductDetailService.java b/src/main/java/com/glxp/api/service/inv/InvPreinProductDetailService.java new file mode 100644 index 00000000..e595b7c4 --- /dev/null +++ b/src/main/java/com/glxp/api/service/inv/InvPreinProductDetailService.java @@ -0,0 +1,53 @@ +package com.glxp.api.service.inv; + +import com.glxp.api.entity.inv.InvPreInProductDetailEntity; +import com.glxp.api.entity.inv.InvPreProductDetailEntity; +import com.glxp.api.req.inv.FilterInvPreProductDetailRequest; +import com.glxp.api.req.inv.FilterInvProductDetailRequest; +import com.glxp.api.res.inv.InvPreProductDetailResponse; + +import java.util.List; + +/** + * 预验收库存详情Service + */ +public interface InvPreinProductDetailService { + + int insert(InvPreInProductDetailEntity invPreInProductDetailEntity); + + boolean insertList(List invPreProductDetailEntities); + + List selectByOrderIdFk(String billNo); + + InvPreInProductDetailEntity selectByCode(String billNo, String code); + + boolean update(InvPreInProductDetailEntity invPreInProductDetailEntity); + + boolean deleteById(String id); + + int deleteByOrderId(String billNo); + + /** + * 查询寄售库存详情列表 + * + * @param invPreProductDetailRequest + * @return + */ + List filterPreProductDetailList(FilterInvPreProductDetailRequest invPreProductDetailRequest); + + /** + * 设置单据类型名称等单据相关参数 + * + * @param response + */ + void setOrderInfo(InvPreProductDetailResponse response); + + /** + * 删除寄售库存详情 + * + * @param detailRequest + */ + boolean deleteInvPreProductDetail(FilterInvProductDetailRequest detailRequest); + + +} diff --git a/src/main/java/com/glxp/api/service/inv/InvPreinProductService.java b/src/main/java/com/glxp/api/service/inv/InvPreinProductService.java new file mode 100644 index 00000000..70d71cc5 --- /dev/null +++ b/src/main/java/com/glxp/api/service/inv/InvPreinProductService.java @@ -0,0 +1,49 @@ +package com.glxp.api.service.inv; + +import com.glxp.api.entity.inv.InvPreinProductEntity; +import com.glxp.api.req.inv.FilterInvPreinDetailRequest; +import com.glxp.api.req.inv.FilterInvPreinProductRequest; +import com.glxp.api.res.inv.InvPreinProductResponse; + +import java.util.List; + +/** + * 预验收库存Service + */ +public interface InvPreinProductService { + + int insert(InvPreinProductEntity invPreinProductEntity); + + + boolean update(InvPreinProductEntity invPreinProductEntity); + + InvPreinProductEntity selectByUnique(Long relId, String batchNo, String supId, String deptCode, String invCode); + + boolean deleteById(Integer id); + + /** + * 查询寄售库存VO + * + * @param filterInvPreinDetailRequest + * @return + */ + List filterList(FilterInvPreinProductRequest filterInvPreinDetailRequest); + + /** + * 查询寄售库存列表 + * + * @param invPreProductRequest + * @return + */ + List filterPreinProductList(FilterInvPreinProductRequest invPreProductRequest); + + /** + * 根据ID查询寄售库存信息 + * + * @param id + * @return + */ + InvPreinProductEntity findById(String id); + + boolean isExitByRelId(String relId); +} diff --git a/src/main/java/com/glxp/api/service/inv/impl/InvPreInProductDetailServiceImpl.java b/src/main/java/com/glxp/api/service/inv/impl/InvPreInProductDetailServiceImpl.java new file mode 100644 index 00000000..e4b7c1be --- /dev/null +++ b/src/main/java/com/glxp/api/service/inv/impl/InvPreInProductDetailServiceImpl.java @@ -0,0 +1,135 @@ +package com.glxp.api.service.inv.impl; + +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.github.pagehelper.PageHelper; +import com.glxp.api.constant.ConstantType; +import com.glxp.api.dao.basic.BasicBussinessTypeDao; +import com.glxp.api.dao.basic.UdiProductDao; +import com.glxp.api.dao.inout.IoOrderDao; +import com.glxp.api.dao.inv.InvPreInProductDetailDao; +import com.glxp.api.dao.inv.InvPreProductDetailDao; +import com.glxp.api.entity.basic.BasicBussinessTypeEntity; +import com.glxp.api.entity.inout.IoOrderEntity; +import com.glxp.api.entity.inv.InvPreInProductDetailEntity; +import com.glxp.api.req.inv.FilterInvPreProductDetailRequest; +import com.glxp.api.req.inv.FilterInvProductDetailRequest; +import com.glxp.api.res.inv.InvPreProductDetailResponse; +import com.glxp.api.service.inv.InvPreProductDetailService; +import com.glxp.api.service.inv.InvPreinProductDetailService; +import com.glxp.api.util.DateUtil; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import javax.annotation.Resource; +import java.util.Collections; +import java.util.List; + +@Slf4j +@Service +@Transactional(rollbackFor = Exception.class) +public class InvPreInProductDetailServiceImpl implements InvPreinProductDetailService { + + @Resource + private InvPreInProductDetailDao invPreInProductDetailDao; + @Resource + private BasicBussinessTypeDao bussinessTypeDao; + @Resource + private IoOrderDao orderDao; + @Resource + private UdiProductDao udiProductDao; + + @Override + public int insert(InvPreInProductDetailEntity invPreInProductDetailEntity) { + return invPreInProductDetailDao.insert(invPreInProductDetailEntity); + } + + @Override + public boolean insertList(List invPreProductDetailEntities) { + return invPreInProductDetailDao.insertBatch(invPreProductDetailEntities); + } + + @Override + public List selectByOrderIdFk(String billNo) { + if (StrUtil.isEmpty(billNo)) + return null; + List invProductDetailEntities = invPreInProductDetailDao.selectList(new QueryWrapper().eq("orderId", billNo)); + return invProductDetailEntities; + } + + @Override + public InvPreInProductDetailEntity selectByCode(String billNo, String code) { + List invProductDetailEntities = invPreInProductDetailDao.selectList + (new QueryWrapper().eq("code", code).eq("orderId", billNo)); + if (CollUtil.isNotEmpty(invProductDetailEntities)) + return invProductDetailEntities.get(0); + else + return null; + } + + @Override + public boolean update(InvPreInProductDetailEntity invPreInProductDetailEntity) { + return invPreInProductDetailDao.updateById(invPreInProductDetailEntity) == 1 ? true : false; + } + + @Override + public boolean deleteById(String id) { + return invPreInProductDetailDao.deleteById(id) == 1 ? true : false; + } + + @Override + public int deleteByOrderId(String billNo) { + return invPreInProductDetailDao.delete(new QueryWrapper().eq("orderId", billNo)); + } + + @Override + public List filterPreProductDetailList(FilterInvPreProductDetailRequest invPreProductDetailRequest) { + if (null == invPreProductDetailRequest) { + return Collections.emptyList(); + } + if (null != invPreProductDetailRequest.getPage() && null != invPreProductDetailRequest.getLimit()) { + PageHelper.offsetPage((invPreProductDetailRequest.getPage() - 1) * invPreProductDetailRequest.getLimit(), invPreProductDetailRequest.getLimit()); + } + return invPreInProductDetailDao.filterPreProductDetailList(invPreProductDetailRequest); + } + + @Override + public void setOrderInfo(InvPreProductDetailResponse response) { + //查询DI层级,根据DI层级设置数量取值 + Integer packLevel = udiProductDao.selectPackLevel(response.getNameCode()); + //设置出入库中文及出入库数量 + if (null != packLevel && packLevel != 1) { + //多级包装 + if (response.getMainAction().equals(ConstantType.TYPE_OUT)) { + response.setMainActionStr("出库"); + response.setOutCount(response.getReCount()); + } else { + response.setMainActionStr("入库"); + response.setInCount(response.getReCount()); + } + } else { + //单层包装 + if (response.getMainAction().equals(ConstantType.TYPE_OUT)) { + response.setMainActionStr("出库"); + response.setOutCount(response.getCount()); + } else { + response.setMainActionStr("入库"); + response.setInCount(response.getCount()); + } + } + //设置单据类型名称 + BasicBussinessTypeEntity busType = bussinessTypeDao.selectOne(new QueryWrapper().select("name").eq("action", response.getAction())); + response.setActionName(busType.getName()); + //设置单据日期 + IoOrderEntity order = orderDao.selectOne(new QueryWrapper().select("createTime").eq("billNo", response.getOrderId())); + response.setOrderTime(DateUtil.toDateStr(order.getCreateTime(), "yyyy-MM-dd HH:mm:ss")); + } + + @Override + public boolean deleteInvPreProductDetail(FilterInvProductDetailRequest detailRequest) { + return invPreInProductDetailDao.deleteInvPreProductDetail(detailRequest); + } + +} diff --git a/src/main/java/com/glxp/api/service/inv/impl/InvPreinDetailServiceImpl.java b/src/main/java/com/glxp/api/service/inv/impl/InvPreinDetailServiceImpl.java index 633a4e66..b2b773a0 100644 --- a/src/main/java/com/glxp/api/service/inv/impl/InvPreinDetailServiceImpl.java +++ b/src/main/java/com/glxp/api/service/inv/impl/InvPreinDetailServiceImpl.java @@ -4,13 +4,21 @@ import cn.hutool.core.collection.CollUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.github.pagehelper.PageHelper; import com.glxp.api.constant.ConstantStatus; +import com.glxp.api.constant.ConstantType; import com.glxp.api.dao.inv.InvPreinDetailDao; import com.glxp.api.dao.inv.InvPreinOrderDao; +import com.glxp.api.entity.basic.BasicBussinessTypeEntity; +import com.glxp.api.entity.inout.IoOrderEntity; import com.glxp.api.entity.inv.InvPreProductDetailEntity; import com.glxp.api.entity.inv.InvPreinDetailEntity; +import com.glxp.api.entity.inv.InvProductDetailEntity; +import com.glxp.api.req.inv.FilterInvPreProductDetailRequest; import com.glxp.api.req.inv.FilterInvPreinDetailRequest; +import com.glxp.api.req.inv.FilterInvPreinProductRequest; +import com.glxp.api.res.inv.InvPreProductDetailResponse; import com.glxp.api.res.inv.InvPreinDetailResponse; import com.glxp.api.service.inv.InvPreinDetailService; +import com.glxp.api.util.DateUtil; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -60,15 +68,6 @@ public class InvPreinDetailServiceImpl implements InvPreinDetailService { public List findByCode(String code) { return invPreinDetailDao.selectList(new QueryWrapper().eq("code", code)); } -// -// @Override -// public InvPreinDetailEntity findOneByCode(String code) { -// List invPreinDetailEntities = invPreinDetailDao.selectList(new QueryWrapper().eq("code", code).last("limit 1")); -// if (CollUtil.isNotEmpty(invPreinDetailEntities)) { -// return invPreinDetailEntities.get(0); -// } -// return null; -// } @Override public int deleteByOrderId(String orderId) { @@ -110,5 +109,21 @@ public class InvPreinDetailServiceImpl implements InvPreinDetailService { return 1; } + @Override + public int findCountByCode(String code) { + List invPreinDetailEntities = invPreinDetailDao.selectList(new QueryWrapper().eq("code", code)); + int count = 0; + if (CollUtil.isNotEmpty(invPreinDetailEntities)) { + for (InvPreinDetailEntity invProductDetailEntity : invPreinDetailEntities) { + if (invProductDetailEntity.getMainAction().equals(ConstantType.TYPE_PUT)) + count = count + invProductDetailEntity.getReCount(); + else { + count = count - invProductDetailEntity.getReCount(); + } + } + } + return count; + } + } diff --git a/src/main/java/com/glxp/api/service/inv/impl/InvPreinProductServiceImpl.java b/src/main/java/com/glxp/api/service/inv/impl/InvPreinProductServiceImpl.java new file mode 100644 index 00000000..fa195182 --- /dev/null +++ b/src/main/java/com/glxp/api/service/inv/impl/InvPreinProductServiceImpl.java @@ -0,0 +1,83 @@ +package com.glxp.api.service.inv.impl; + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.github.pagehelper.PageHelper; +import com.glxp.api.dao.inv.InvPreinProductDao; +import com.glxp.api.entity.inv.InvPreinProductEntity; +import com.glxp.api.req.inv.FilterInvPreinProductRequest; +import com.glxp.api.res.inv.InvPreinProductResponse; +import com.glxp.api.service.inv.InvPreinProductService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import javax.annotation.Resource; +import java.util.Collections; +import java.util.List; + +@Slf4j +@Service +@Transactional(rollbackFor = Exception.class) +public class InvPreinProductServiceImpl implements InvPreinProductService { + + @Resource + private InvPreinProductDao invPreinProductDao; + + @Override + public int insert(InvPreinProductEntity invPreinProductEntity) { + return invPreinProductDao.insert(invPreinProductEntity); + } + + @Override + public boolean update(InvPreinProductEntity invPreinProductEntity) { + return invPreinProductDao.updateById(invPreinProductEntity) == 1 ? true : false; + } + + @Override + public InvPreinProductEntity selectByUnique(Long relId, String batchNo, String supId, String deptCode, String invCode) { + return invPreinProductDao.selectOne(new QueryWrapper().eq("relIdFk", relId).eq(StrUtil.isNotEmpty(batchNo), "batchNo", batchNo) + .isNull(StrUtil.isEmpty(batchNo), "batchNo").eq("supId", supId).eq("deptCode", deptCode).eq("invCode", invCode)); + + } + + @Override + public boolean deleteById(Integer id) { + return invPreinProductDao.deleteById(id) == 1 ? true : false; + } + + @Override + public List filterList(FilterInvPreinProductRequest invPreProductRequest) { + if (null == invPreProductRequest) { + return Collections.emptyList(); + } + if (null != invPreProductRequest.getPage()) { + PageHelper.offsetPage((invPreProductRequest.getPage() - 1) * invPreProductRequest.getLimit(), invPreProductRequest.getLimit()); + } + return invPreinProductDao.filterList(invPreProductRequest); + } + + @Override + public List filterPreinProductList(FilterInvPreinProductRequest invPreProductRequest) { + if (null == invPreProductRequest) { + return Collections.emptyList(); + } + if (null != invPreProductRequest.getPage() && null != invPreProductRequest.getLimit()) { + PageHelper.offsetPage((invPreProductRequest.getPage() - 1) * invPreProductRequest.getLimit(), invPreProductRequest.getLimit()); + } + return invPreinProductDao.filterPreProductList(invPreProductRequest); + } + + @Override + public InvPreinProductEntity findById(String id) { + return invPreinProductDao.selectById(id); + } + + + @Override + public boolean isExitByRelId(String relId) { + return invPreinProductDao.exists(new QueryWrapper().eq("relIdFk", relId)); + + } + +} diff --git a/src/main/resources/application-dev.yml b/src/main/resources/application-dev.yml index 79ecbc91..eed086a0 100644 --- a/src/main/resources/application-dev.yml +++ b/src/main/resources/application-dev.yml @@ -2,8 +2,8 @@ server: port: 9993 spring: datasource: - driver-class-name: com.mysql.cj.jdbc.Driver - jdbc-url: jdbc:mysql://127.0.0.1:3306/udi_spms?allowMultiQueries=true&serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&allowPublicKeyRetrieval=true + driver-class-name: com.p6spy.engine.spy.P6SpyDriver + jdbc-url: jdbc:p6spy:mysql://127.0.0.1:3306/udi_spms?allowMultiQueries=true&serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&allowPublicKeyRetrieval=true username: root password: 123456 hikari: diff --git a/src/main/resources/mybatis/mapper/basic/BasicBussinessTypeDao.xml b/src/main/resources/mybatis/mapper/basic/BasicBussinessTypeDao.xml index 3c4e93d7..16b81750 100644 --- a/src/main/resources/mybatis/mapper/basic/BasicBussinessTypeDao.xml +++ b/src/main/resources/mybatis/mapper/basic/BasicBussinessTypeDao.xml @@ -70,7 +70,7 @@ vailGroupBuy, busType, inStock, actionType, thrCheckEnable, thrCheckWebNew, thrCheckPdaUn, thrCheckPdaEd, thrCheckUdims, thrCheckPc, thrCheckSp, thrCheckChange, thrCheckBalance, thrCheckCopy, fillCodeRel, checkVailDate, - checkExpire, checkCertExpire) + checkExpire, checkCertExpire,preInBackAction) values (#{mainAction}, #{action}, #{name}, #{enable}, #{remark}, #{thirdSysFk}, #{genUnit}, #{innerOrder}, #{secCheckEnable}, #{checkEnable}, #{checkUdims}, #{checkPdaEd}, #{checkPdaUn}, #{checkPc}, #{checkWebNew}, #{checkSp}, #{checkChange}, #{secCheckUdims}, #{secCheckPdaEd}, #{secCheckPdaUn}, @@ -82,7 +82,7 @@ #{vailGroupBuy}, #{busType}, #{inStock}, #{actionType}, #{thrCheckEnable}, #{thrCheckWebNew}, #{thrCheckPdaUn}, #{thrCheckPdaEd}, #{thrCheckUdims}, #{thrCheckPc}, #{thrCheckSp}, #{thrCheckChange}, #{thrCheckBalance}, #{thrCheckCopy}, #{fillCodeRel}, #{checkVailDate}, - #{checkExpire}, #{checkCertExpire}) + #{checkExpire}, #{checkCertExpire},#{preInBackAction}) + select * + from inv_prein_product_detail + + + AND code = #{code} + + + AND mainAction = #{mainAction} + + + AND action = #{action} + + + and supId = #{supId} + + + AND relId = #{relId} + + + AND nameCode like concat('%', #{nameCode}, '%') + + + AND orderId = #{orderId} + + + AND deptCode = #{deptCode} + + + AND invCode = #{invCode} + + + AND invSpaceCode = #{invSpaceCode} + + + AND batchNo = #{batchNo} + + + AND batchNo is null + + + AND relId in + + #{item} + + + + AND updateTime #{updateTime} + + + + + + delete + from inv_prein_product_detail + + + AND relId = #{relId} + + + AND batchNo = #{batchNo} + + + AND batchNo is null + + + AND supId = #{supId} + + + AND invCode = #{invCode} + + + + diff --git a/src/main/resources/mybatis/mapper/inv/InvPreinProductDao.xml b/src/main/resources/mybatis/mapper/inv/InvPreinProductDao.xml new file mode 100644 index 00000000..fa398454 --- /dev/null +++ b/src/main/resources/mybatis/mapper/inv/InvPreinProductDao.xml @@ -0,0 +1,138 @@ + + + + + + + diff --git a/src/main/resources/schemas/schema_v2.1.sql b/src/main/resources/schemas/schema_v2.1.sql index dfde2a43..01675371 100644 --- a/src/main/resources/schemas/schema_v2.1.sql +++ b/src/main/resources/schemas/schema_v2.1.sql @@ -28,7 +28,6 @@ CALL Pro_Temp_ColumnWork('thr_products', 'createTime', 'varchar(255) ', 1); - CALL Pro_Temp_ColumnWork('auth_warehouse', 'advanceType', 'tinyint', 1); CALL Pro_Temp_ColumnWork('auth_warehouse', 'spUse', 'tinyint', 1); @@ -65,7 +64,7 @@ CALL Pro_Temp_ColumnWork('basic_bussiness_type', 'fillCodeRel', 'tinyint', 1); CALL Pro_Temp_ColumnWork('basic_bussiness_type', 'checkVailDate', 'tinyint', 1); CALL Pro_Temp_ColumnWork('basic_bussiness_type', 'checkExpire', 'tinyint', 1); CALL Pro_Temp_ColumnWork('basic_bussiness_type', 'checkCertExpire', 'tinyint', 1); - +CALL Pro_Temp_ColumnWork('basic_bussiness_type', 'preInBackAction', 'varchar(255) ', 1); CALL Pro_Temp_ColumnWork('pur_delivery_detail', 'batchNo', 'varchar(255) ', 1); CALL Pro_Temp_ColumnWork('pur_delivery_detail', 'productDate', 'varchar(255) ', 1); @@ -109,6 +108,9 @@ CALL Pro_Temp_ColumnWork('inv_prein_detail', 'status', 'tinyint', 1); CALL Pro_Temp_ColumnWork('inv_prein_detail', 'originCount', 'int', 1); CALL Pro_Temp_ColumnWork('inv_prein_detail', 'originReCount', 'int', 1); +CALL Pro_Temp_ColumnWork('inv_prein_detail', 'mainAction', 'varchar(255)', 1); +CALL Pro_Temp_ColumnWork('inv_prein_detail', 'action', 'varchar(255)', 1); + CALL Pro_Temp_ColumnWork('io_code_lost', 'nameCode', 'varchar(255)', 1); INSERT ignore INTO `sys_param_config`(`id`, `parentId`, `paramName`, `paramKey`, `paramValue`, `paramStatus`, @@ -154,3 +156,59 @@ CALL Pro_Temp_ColumnWork('sync_data_set', 'basicDept', 'tinyint', 1); # CALL Pro_Temp_ColumnWork('sup_cert_set', 'needForeign', 'tinyint', 1); +CREATE TABLE IF NOT EXISTS `inv_prein_product` +( + `id` int NOT NULL AUTO_INCREMENT, + `relIdFk` bigint NULL DEFAULT NULL COMMENT '耗材字典ID', + `nameCode` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '最小销售标识', + `batchNo` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '批次号', + `productionDate` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '生产日期', + `expireDate` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '失效日期', + `inCount` int NULL DEFAULT NULL COMMENT '入库数量', + `outCount` int NULL DEFAULT NULL COMMENT '出库数量', + `reCount` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '实际数量', + `customerId` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '客户ID', + `supId` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '供应商ID', + `deptCode` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '部门编码', + `invCode` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '仓库编码', + `createTime` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', + `updateTime` datetime(0) NULL DEFAULT NULL COMMENT '更新时间', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB + CHARACTER SET = utf8mb4 + COLLATE = utf8mb4_0900_ai_ci COMMENT = '预验收库存表' + ROW_FORMAT = DYNAMIC; + +SET FOREIGN_KEY_CHECKS = 1; + + + +CREATE TABLE IF NOT EXISTS `inv_prein_product_detail` +( + `id` int NOT NULL AUTO_INCREMENT, + `code` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT 'UDI码', + `mainAction` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '出入单据类型', + `action` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '单据类型', + `orderId` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '订单号外键', + `relId` int NOT NULL COMMENT '耗材字典ID', + `nameCode` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '最小销售标识', + `batchNo` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '批次号', + `produceDate` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '生产日期', + `expireDate` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '失效日期', + `serialNo` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '序列号', + `supId` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '供应商', + `count` int NULL DEFAULT NULL COMMENT '扫码数量', + `reCount` int NULL DEFAULT NULL COMMENT '实际数量', + `deptCode` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '部门编码', + `invCode` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '仓库编码', + `invSpaceCode` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '货位编码', + `purchaseType` tinyint NULL DEFAULT NULL COMMENT '采购类型', + `updateTime` datetime(0) NULL DEFAULT NULL COMMENT '更新时间', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB + CHARACTER SET = utf8mb4 + COLLATE = utf8mb4_0900_ai_ci COMMENT = '预验收库存详情表' + ROW_FORMAT = DYNAMIC; + + +