From 77b9104e71dc807c28af09414a00f14423e7733c Mon Sep 17 00:00:00 2001 From: anthonywj Date: Thu, 20 Apr 2023 09:54:33 +0800 Subject: [PATCH] =?UTF-8?q?=E9=A2=84=E9=AA=8C=E6=94=B6=E8=A1=A5=E5=8D=95?= =?UTF-8?q?=E7=9B=B8=E5=85=B3=E6=B5=81=E7=A8=8B=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/glxp/api/constant/Constant.java | 7 + .../basic/BasicBussinessTypeController.java | 2 +- .../inout/IoCodeTempController.java | 59 +++------ .../api/dao/inv/InvPreInProductDetailDao.java | 2 + .../glxp/api/dao/inv/InvPreinProductDao.java | 2 + .../entity/basic/BasicBusTypePreEntity.java | 2 +- .../basic/BasicBussinessTypeEntity.java | 2 - .../glxp/api/entity/inout/IoOrderEntity.java | 3 + .../inv/InvPreInProductDetailEntity.java | 2 +- .../glxp/api/req/inout/AddOrderRequest.java | 1 + .../api/req/inout/FilterOrderRequest.java | 1 + .../glxp/api/service/auth/DeptService.java | 5 +- .../impl/BasicBussinessTypeServiceImpl.java | 4 + .../api/service/inout/IoAddInoutService.java | 2 +- .../service/inout/IoChangeInoutService.java | 24 ++-- .../service/inout/IoCheckInoutService.java | 121 ++++++++++-------- src/main/resources/application-dev.yml | 2 +- .../mybatis/mapper/inv/InvPreinProductDao.xml | 59 +++++---- src/main/resources/schemas/schema_v2.1.sql | 2 +- 19 files changed, 154 insertions(+), 148 deletions(-) diff --git a/src/main/java/com/glxp/api/constant/Constant.java b/src/main/java/com/glxp/api/constant/Constant.java index ade64717..2d683c52 100644 --- a/src/main/java/com/glxp/api/constant/Constant.java +++ b/src/main/java/com/glxp/api/constant/Constant.java @@ -3,6 +3,11 @@ package com.glxp.api.constant; public class Constant { public static String SYSTEM_CUSTOMER_ID = "110"; + + public static final String INV_PRE_IN_CODE = "1000001";//默认预验收仓库号 + public static final String INV_PRE_CODE = "1000002";//默认寄售仓库号 + + public static String MUTI = "MUTI"; public static final String SERIAL_CACHE_PREFIX = "serial_"; @@ -245,5 +250,7 @@ public class Constant { public static final String ORDER_ACTION_SUP_INVOICE = "supInvoice"; public static final String ORDER_ACTION_SUP_DELAUDIT = "supDelAudit"; public static final String ORDER_ACTION_SUP_INOUT = "supInout"; + public static final String ORDER_ACTION_SUP_PREIN = "preInOrder"; + } diff --git a/src/main/java/com/glxp/api/controller/basic/BasicBussinessTypeController.java b/src/main/java/com/glxp/api/controller/basic/BasicBussinessTypeController.java index 5f4978ad..8800cd57 100644 --- a/src/main/java/com/glxp/api/controller/basic/BasicBussinessTypeController.java +++ b/src/main/java/com/glxp/api/controller/basic/BasicBussinessTypeController.java @@ -449,7 +449,7 @@ public class BasicBussinessTypeController extends BaseController { FilterBussinessTypeRequest bussinessTypeFilterRequest = new FilterBussinessTypeRequest(); bussinessTypeFilterRequest.setActionType(2); - bussinessTypeFilterRequest.setMainAction("WareHouseOut"); + bussinessTypeFilterRequest.setMainAction(ConstantType.TYPE_OUT); bussinessTypeFilterRequest.setCorpType(2); List bussinessTypeEntities = basicBussinessTypeService.findList(bussinessTypeFilterRequest); return ResultVOUtils.success(bussinessTypeEntities); 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 84c51c04..e317b5e4 100644 --- a/src/main/java/com/glxp/api/controller/inout/IoCodeTempController.java +++ b/src/main/java/com/glxp/api/controller/inout/IoCodeTempController.java @@ -32,15 +32,13 @@ import com.glxp.api.req.inout.FilterCodeRequest; import com.glxp.api.req.inout.PostOrderRequest; import com.glxp.api.res.PageSimpleResponse; import com.glxp.api.res.basic.UdiRelevanceResponse; +import com.glxp.api.res.basic.UdiRlSupResponse; import com.glxp.api.res.inout.AddCodeResult; import com.glxp.api.res.inout.IoCodeTempResponse; import com.glxp.api.service.auth.InvWarehouseService; import com.glxp.api.service.basic.*; import com.glxp.api.service.inout.*; -import com.glxp.api.service.inv.InvPreProductDetailService; -import com.glxp.api.service.inv.InvPreinDetailService; -import com.glxp.api.service.inv.InvPreinProductDetailService; -import com.glxp.api.service.inv.InvProductDetailService; +import com.glxp.api.service.inv.*; import com.glxp.api.service.purchase.SupProductService; import com.glxp.api.service.system.SystemParamConfigService; import com.glxp.api.util.CustomUtil; @@ -92,14 +90,15 @@ public class IoCodeTempController extends BaseController { @Resource InvPreinProductDetailService invPreinProductDetailService; @Resource - InvPreProductDetailService invPreProductDetailService; - @Resource InvProductDetailService invProductDetailService; - + @Resource + IoCodeLostService codeLostService; @Resource IoOrderDetailBizService orderDetailBizService; @Resource IoCodeService codeService; + @Resource + InvPreProductDetailService invPreProductDetailService; //手持端扫码单据上传调用接口 @AuthRuleAnnotation("") @@ -332,11 +331,6 @@ public class IoCodeTempController extends BaseController { return null; } - @Resource - IoCodeLostService codeLostService; - @Resource - SupProductService supProductService; - //前端扫码提交 @AuthRuleAnnotation("") @PostMapping("warehouse/inout/addOrderWeb") @@ -413,14 +407,14 @@ public class IoCodeTempController extends BaseController { udiEntity.setProduceDate(codeLostEntity.getProduceDate()); } -// if (StrUtil.isNotEmpty(orderId)) { -// List ioCodeEnttities = codeTempService.findByOrderId(orderId); -// IoCodeTempEntity ioCodeEnttity = isExitLocal(code, ioCodeEnttities); -// if (ioCodeEnttity == null) { -// return checkOriginCodeRes; -// } -// } else -// return checkOriginCodeRes; + if (StrUtil.isNotEmpty(orderId)) { + List ioCodeEnttities = codeTempService.findByOrderId(orderId); + IoCodeTempEntity ioCodeEnttity = isExitLocal(code, ioCodeEnttities); + if (ioCodeEnttity == null) { + return checkOriginCodeRes; + } + } else + return checkOriginCodeRes; } } @@ -428,22 +422,12 @@ public class IoCodeTempController extends BaseController { //过期提醒: // SystemParamConfigEntity expireParamConfigEntity = systemParamConfigService.selectByParamKey("expire_date_tip"); - if (bussinessTypeEntity.getCheckExpire() == 1 && !addOrderRequest.isIgnoreExpire()) { + if (bussinessTypeEntity.getCheckVailDate() == 1 && !addOrderRequest.isIgnoreExpire()) { if (StrUtil.isNotEmpty(udiEntity.getExpireDate())) { String expireDate = "20" + udiEntity.getExpireDate(); long expireTime = DateUtil.parseDateExpire(expireDate); if (expireTime - System.currentTimeMillis() < 0) { - return ResultVOUtils.error(504, "当前产品已过期,是否继续添加?"); - } - } - } - - if (bussinessTypeEntity.getCheckExpire() == 2) { - if (StrUtil.isNotEmpty(udiEntity.getExpireDate())) { - String expireDate = "20" + udiEntity.getExpireDate(); - long expireTime = DateUtil.parseDateExpire(expireDate); - if (expireTime - System.currentTimeMillis() < 0) { - return ResultVOUtils.error(509, "当前产品已过期,无法继续添加?"); + return ResultVOUtils.error(504, "当前产品已过期,是否确定继续添加?"); } } } @@ -502,14 +486,13 @@ public class IoCodeTempController extends BaseController { if (bussinessTypeEntity.isScanPreIn()) { if (bussinessTypeEntity.getBackPreinType() == 1) {//按单出库 - - String orderIds = bussinessTypeEntity.getCheckPreInOrders(); + String orderIds = addOrderRequest.getCheckPreInOrders(); if (StrUtil.isNotEmpty(orderIds)) { - String[] orderIdArray = StringUtils.split(","); + String[] orderIdArray = orderIds.split(","); List orderList = CollUtil.toList(orderIdArray); int count = codeService.findByOrderIdsCount(orderList, code); if (count <= 0) { - return ResultVOUtils.error(500, "预验收库存数量不足!"); + return ResultVOUtils.error(500, "非预验收单产品或预验收库存数量不足!"); } if (StrUtil.isNotEmpty(orderId)) {//非首次添加 if (StrUtil.isEmpty(udiEntity.getSerialNo())) {//该单据已有该产品 @@ -734,6 +717,7 @@ public class IoCodeTempController extends BaseController { orderEntity.setUpdateTime(new Date()); orderEntity.setCustomerId(authAdmin.getCustomerId() + ""); orderEntity.setDeptCode(invWarehouseEntity.getParentId()); + orderEntity.setCheckPreInOrders(addOrderRequest.getCheckPreInOrders()); orderEntity.setInvCode(addOrderRequest.getInvCode()); orderEntity.setOrderType(addOrderRequest.getOrderType()); orderEntity.setBusType(bussinessTypeEntity.getBusType()); @@ -1107,9 +1091,6 @@ public class IoCodeTempController extends BaseController { return ResultVOUtils.error(500, "数量不能小于0"); } codeTempEntity.setReCount(codeTempEntity.getMyCount() * udiCalCountUtil.getActCount(codeTempEntity.getNameCode())); - if (codeTempEntity.getId() == null) { - - } int b = codeTempService.updateById(codeTempEntity); if (b > 0) return ResultVOUtils.success("修改成功"); diff --git a/src/main/java/com/glxp/api/dao/inv/InvPreInProductDetailDao.java b/src/main/java/com/glxp/api/dao/inv/InvPreInProductDetailDao.java index f4d4e267..9f75c43f 100644 --- a/src/main/java/com/glxp/api/dao/inv/InvPreInProductDetailDao.java +++ b/src/main/java/com/glxp/api/dao/inv/InvPreInProductDetailDao.java @@ -4,12 +4,14 @@ 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 org.apache.ibatis.annotations.Mapper; import java.util.List; /** * 预验收库存详情Dao */ +@Mapper public interface InvPreInProductDetailDao extends BaseMapperPlus { /** diff --git a/src/main/java/com/glxp/api/dao/inv/InvPreinProductDao.java b/src/main/java/com/glxp/api/dao/inv/InvPreinProductDao.java index 546153ba..9063aa7c 100644 --- a/src/main/java/com/glxp/api/dao/inv/InvPreinProductDao.java +++ b/src/main/java/com/glxp/api/dao/inv/InvPreinProductDao.java @@ -4,12 +4,14 @@ 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 org.apache.ibatis.annotations.Mapper; import java.util.List; /** * 预验收库存Dao */ +@Mapper public interface InvPreinProductDao extends BaseMapperPlus { /** diff --git a/src/main/java/com/glxp/api/entity/basic/BasicBusTypePreEntity.java b/src/main/java/com/glxp/api/entity/basic/BasicBusTypePreEntity.java index 67375786..c0fdbba9 100644 --- a/src/main/java/com/glxp/api/entity/basic/BasicBusTypePreEntity.java +++ b/src/main/java/com/glxp/api/entity/basic/BasicBusTypePreEntity.java @@ -123,7 +123,7 @@ public class BasicBusTypePreEntity { @TableField(value = "remark") private String remark; -// 创建单模式:1:送货至入库单模式;2.向上级补单模式;3.预验收/寄售转入库单模式 +// 创建单模式:1:送货至入库单模式;2.向上级补单模式;3.预验收转入库单模式,4.寄售转入库单模式 @TableField(value = "createType") private int createType; 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 cba7b385..b13ef518 100644 --- a/src/main/java/com/glxp/api/entity/basic/BasicBussinessTypeEntity.java +++ b/src/main/java/com/glxp/api/entity/basic/BasicBussinessTypeEntity.java @@ -402,8 +402,6 @@ public class BasicBussinessTypeEntity { // 预验收剩余库存退库方式 1:按单使用或退库,2:按货位/仓库使用或退库 @TableField(value = "backPreinType") private Integer backPreinType; - @TableField(value = "checkPreInOrders") - private String checkPreInOrders; // 寄售使用禁止无库存出库 @TableField(value = "advancePreIn") diff --git a/src/main/java/com/glxp/api/entity/inout/IoOrderEntity.java b/src/main/java/com/glxp/api/entity/inout/IoOrderEntity.java index 5c733377..b6b8fd5c 100644 --- a/src/main/java/com/glxp/api/entity/inout/IoOrderEntity.java +++ b/src/main/java/com/glxp/api/entity/inout/IoOrderEntity.java @@ -241,4 +241,7 @@ public class IoOrderEntity { @TableField(value = "checkStatus") private Integer checkStatus; //确认状态 + @TableField(value = "checkPreInOrders") + private String checkPreInOrders; + } diff --git a/src/main/java/com/glxp/api/entity/inv/InvPreInProductDetailEntity.java b/src/main/java/com/glxp/api/entity/inv/InvPreInProductDetailEntity.java index ac07b29c..f258cb6b 100644 --- a/src/main/java/com/glxp/api/entity/inv/InvPreInProductDetailEntity.java +++ b/src/main/java/com/glxp/api/entity/inv/InvPreInProductDetailEntity.java @@ -12,7 +12,7 @@ import java.util.Date; * 寄售库存详情表 */ @Data -@TableName(value = "inv_pre_product_detail") +@TableName(value = "inv_prein_product_detail") public class InvPreInProductDetailEntity { @TableId(value = "id", type = IdType.AUTO) private Integer id; diff --git a/src/main/java/com/glxp/api/req/inout/AddOrderRequest.java b/src/main/java/com/glxp/api/req/inout/AddOrderRequest.java index 18444203..6b1531cf 100644 --- a/src/main/java/com/glxp/api/req/inout/AddOrderRequest.java +++ b/src/main/java/com/glxp/api/req/inout/AddOrderRequest.java @@ -27,4 +27,5 @@ public class AddOrderRequest { private boolean codeFillCheck; private Integer orderType; private String remark; + private String checkPreInOrders; } diff --git a/src/main/java/com/glxp/api/req/inout/FilterOrderRequest.java b/src/main/java/com/glxp/api/req/inout/FilterOrderRequest.java index 8a40a0d6..0e785c35 100644 --- a/src/main/java/com/glxp/api/req/inout/FilterOrderRequest.java +++ b/src/main/java/com/glxp/api/req/inout/FilterOrderRequest.java @@ -136,6 +136,7 @@ public class FilterOrderRequest extends ListPageRequest { * 校验异常:checkedError * 已校验:checkSuccess * 已审核:audited + * * 预验收入库单 preInOrder */ private String statusType; diff --git a/src/main/java/com/glxp/api/service/auth/DeptService.java b/src/main/java/com/glxp/api/service/auth/DeptService.java index fa89c528..3bf5314f 100644 --- a/src/main/java/com/glxp/api/service/auth/DeptService.java +++ b/src/main/java/com/glxp/api/service/auth/DeptService.java @@ -11,6 +11,7 @@ import java.util.List; public interface DeptService { List selectByIdCode(List list); + DeptEntity findDefault(Integer advaceType, Boolean isDefault); DeptEntity selectMaxCode(FilterInvWarehouseRequest filterInvWarehouseRequest); @@ -31,7 +32,7 @@ public interface DeptService { DeptEntity selectByName(String name); - Long getIdByCode( Long fromCorpId); + Long getIdByCode(Long fromCorpId); boolean deleteById(String id); @@ -73,7 +74,7 @@ public interface DeptService { boolean updateTime(String code, Date updateTime); - List getDeptById( List ids); + List getDeptById(List ids); List selectByPcode(String pcode); 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 b8d5c385..d7d4dc58 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 @@ -251,6 +251,10 @@ public class BasicBussinessTypeServiceImpl implements IBasicBussinessTypeService bussinessTypeEntities = basicBussinessTypeDao.selectList(new QueryWrapper() .gt("spUse", 0).eq("enable", true)); break; + case Constant.ORDER_ACTION_SUP_PREIN: + bussinessTypeEntities = basicBussinessTypeDao.selectList(new QueryWrapper() + .gt("spUse", 0).eq("enable", true).eq("corpType", ConstantStatus.CORP_TYPE_OUT).eq("actionType", 2)); + default: break; } diff --git a/src/main/java/com/glxp/api/service/inout/IoAddInoutService.java b/src/main/java/com/glxp/api/service/inout/IoAddInoutService.java index b43771e8..1401d1cb 100644 --- a/src/main/java/com/glxp/api/service/inout/IoAddInoutService.java +++ b/src/main/java/com/glxp/api/service/inout/IoAddInoutService.java @@ -338,7 +338,7 @@ public class IoAddInoutService { IoOrderEntity order = orderService.findByBillNo(orderId); BasicBussinessTypeEntity bussinessTypeEntity = basicBussinessTypeService.findByAction(order.getAction()); if (StrUtil.isBlank(bussinessTypeEntity.getSupplementOrderType())) { - return ResultVOUtils.error(ResultEnum.valueOf("此类型单据不可补单")); + return ResultVOUtils.error(500, "此类型单据不可补单"); } IoOrderEntity supplementOrder = new IoOrderEntity(); BeanUtil.copyProperties(order, supplementOrder); 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 9aa37fe0..1bb7225f 100644 --- a/src/main/java/com/glxp/api/service/inout/IoChangeInoutService.java +++ b/src/main/java/com/glxp/api/service/inout/IoChangeInoutService.java @@ -196,19 +196,17 @@ public class IoChangeInoutService { outOrder.setFromInvCode(null); outOrder.setFromDeptCode(null); } else if (bussinessChangeTypeEntity.getCreateType() == 3) { //寄售、预验收补单 - if (targetBustypeEntity.getActionType() == 2) { - outOrder.setCustomerId(null); - outOrder.setFromCorp(null); - InvWarehouseEntity invWarehouseEntity = invWarehouseService.findByInvSubByCode("1000001"); - outOrder.setFromInvCode(invWarehouseEntity.getCode()); - outOrder.setFromDeptCode(invWarehouseEntity.getParentId()); - } else if (targetBustypeEntity.getActionType() == 3) { - outOrder.setCustomerId(null); - outOrder.setFromCorp(null); - InvWarehouseEntity invWarehouseEntity = invWarehouseService.findByInvSubByCode("1000002"); - outOrder.setFromInvCode(invWarehouseEntity.getCode()); - outOrder.setFromDeptCode(invWarehouseEntity.getParentId()); - } + outOrder.setCustomerId(null); + outOrder.setFromCorp(null); + InvWarehouseEntity invWarehouseEntity = invWarehouseService.findByInvSubByCode(Constant.INV_PRE_IN_CODE); + outOrder.setFromInvCode(invWarehouseEntity.getCode()); + outOrder.setFromDeptCode(invWarehouseEntity.getParentId()); + } else if (targetBustypeEntity.getActionType() == 4) { + outOrder.setCustomerId(null); + outOrder.setFromCorp(null); + InvWarehouseEntity invWarehouseEntity = invWarehouseService.findByInvSubByCode(Constant.INV_PRE_CODE); + outOrder.setFromInvCode(invWarehouseEntity.getCode()); + outOrder.setFromDeptCode(invWarehouseEntity.getParentId()); } else { outOrder.setCustomerId(Constant.SYSTEM_CUSTOMER_ID); InvWarehouseEntity curInv = invWarehouseService.findByInvSubByCode(orderEntity.getInvCode()); 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 ef81f845..a2e4b497 100644 --- a/src/main/java/com/glxp/api/service/inout/IoCheckInoutService.java +++ b/src/main/java/com/glxp/api/service/inout/IoCheckInoutService.java @@ -8,6 +8,7 @@ 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.auth.InvWarehouseEntity; import com.glxp.api.entity.basic.BasicBussinessTypeEntity; import com.glxp.api.entity.basic.UdiEntity; import com.glxp.api.entity.inout.*; @@ -16,6 +17,7 @@ import com.glxp.api.entity.inv.InvPreinDetailEntity; import com.glxp.api.res.inout.IoOrderCheckResultResponse; import com.glxp.api.res.inout.IoOrderDetailBizResponse; import com.glxp.api.res.inout.IoOrderDetailCodeResponse; +import com.glxp.api.service.auth.InvWarehouseService; import com.glxp.api.service.basic.IBasicBussinessTypeService; import com.glxp.api.service.inv.InvPreinDetailService; import com.glxp.api.service.inv.InvPreinOrderService; @@ -728,6 +730,7 @@ public class IoCheckInoutService { orderEntity.setUpdateTime(new Date()); orderEntity.setAuditTime(new Date()); orderService.update(orderEntity); + List codeEntities = codeService.findByOrderId(orderEntity.getBillNo()); genInv(orderEntity, bussinessTypeEntity); } } @@ -743,76 +746,75 @@ public class IoCheckInoutService { public void genInv(IoOrderEntity orderEntity, BasicBussinessTypeEntity bussinessTypeEntity) { if (bussinessTypeEntity.getMainAction().equals(ConstantType.TYPE_OUT) && bussinessTypeEntity.isScanPreIn()) { - ThreadUtil.execAsync(() -> { - if (StrUtil.isNotEmpty(bussinessTypeEntity.getPreInBackAction())) { - if (bussinessTypeEntity.getBackPreinType() == 1) { //按单退货 - - String orderIds = bussinessTypeEntity.getCheckPreInOrders(); - if (StrUtil.isNotEmpty(orderIds)) { - String[] orderIdArray = StringUtils.split(","); - List orderList = CollUtil.toList(orderIdArray); - List outCodeEntitys = codeService.findByOrderId(orderEntity.getBillNo()); - List preInCodeEntities = codeService.findByOrderIds(orderList, null); - - // 扣减数量 - for (IoCodeEntity preInCodeEntity : preInCodeEntities) { - for (IoCodeEntity codeEntity : outCodeEntitys) { - if (preInCodeEntity.getCode().equals(codeEntity.getCode())) { - int count = preInCodeEntity.getMyCount() - codeEntity.getMyCount(); - int reCount = preInCodeEntity.getMyReCount() - codeEntity.getMyReCount(); - - if (count > 0) { - preInCodeEntity.setCount(count); - preInCodeEntity.setReCount(reCount); - codeEntity.setCount(0); - codeEntity.setReCount(0); - } else if (count < 0) { - preInCodeEntity.setCount(0); - preInCodeEntity.setReCount(0); - codeEntity.setCount(-count); - codeEntity.setReCount(-reCount); - } else { - preInCodeEntity.setCount(0); - preInCodeEntity.setReCount(0); - codeEntity.setCount(0); - codeEntity.setReCount(0); - } +// ThreadUtil.execAsync(() -> { + if (StrUtil.isNotEmpty(bussinessTypeEntity.getPreInBackAction())) { + if (bussinessTypeEntity.getBackPreinType() == 1) { //按单退货 + + String orderIds = orderEntity.getCheckPreInOrders(); + if (StrUtil.isNotEmpty(orderIds)) { + String[] orderIdArray = orderIds.split(","); + List orderList = CollUtil.toList(orderIdArray); + List outCodeEntitys = codeService.findByOrderId(orderEntity.getBillNo()); + List preInCodeEntities = codeService.findByOrderIds(orderList, null); + + // 扣减数量 + for (IoCodeEntity preInCodeEntity : preInCodeEntities) { + for (IoCodeEntity codeEntity : outCodeEntitys) { + if (preInCodeEntity.getCode().equals(codeEntity.getCode())) { + int count = preInCodeEntity.getMyCount() - codeEntity.getMyCount(); + int reCount = preInCodeEntity.getMyReCount() - codeEntity.getMyReCount(); + + if (count > 0) { + preInCodeEntity.setCount(count); + preInCodeEntity.setReCount(reCount); + codeEntity.setCount(0); + codeEntity.setReCount(0); + } else if (count < 0) { + preInCodeEntity.setCount(0); + preInCodeEntity.setReCount(0); + codeEntity.setCount(-count); + codeEntity.setReCount(-reCount); + } else { + preInCodeEntity.setCount(0); + preInCodeEntity.setReCount(0); + codeEntity.setCount(0); + codeEntity.setReCount(0); } } - } - List backCodeList = new ArrayList<>(); - for (IoCodeEntity codeEntity : preInCodeEntities) { - if (codeEntity.getMyCount() > 0) { - backCodeList.add(codeEntity); - } - } - genBackOrder(orderEntity, backCodeList); - - } - - } else { //按仓库货位退货 List backCodeList = new ArrayList<>(); - List codeList = codeService.findByOrderId(orderEntity.getBillNo()); - for (IoCodeEntity codeEntity : codeList) { - int count = invPreinProductDetailService.findCountByCode(codeEntity.getCode()); - if (count > 0) { - codeEntity.setCount(count); - codeEntity.setReCount(udiCalCountUtil.getActCount(codeEntity.getNameCode())); + for (IoCodeEntity codeEntity : preInCodeEntities) { + if (codeEntity.getMyCount() > 0) { backCodeList.add(codeEntity); - genBackOrder(orderEntity, backCodeList); } } + genBackOrder(orderEntity, backCodeList); + + + } + + + } else { //按仓库货位退货 + List backCodeList = new ArrayList<>(); + List codeList = codeService.findByOrderId(orderEntity.getBillNo()); + for (IoCodeEntity codeEntity : codeList) { + int count = invPreinProductDetailService.findCountByCode(codeEntity.getCode()); + if (count > 0) { + codeEntity.setCount(count); + codeEntity.setReCount(udiCalCountUtil.getActCount(codeEntity.getNameCode())); + backCodeList.add(codeEntity); + genBackOrder(orderEntity, backCodeList); + } } } - }); + } +// }); } - //校验是否是不入库存单据 if (bussinessTypeEntity.isInStock()) { //生成库存 @@ -829,6 +831,8 @@ public class IoCheckInoutService { } } + @Resource + InvWarehouseService invWarehouseService; public void genBackOrder(IoOrderEntity orderEntity, List backCodeList) { if (CollUtil.isEmpty(backCodeList)) @@ -836,9 +840,14 @@ public class IoCheckInoutService { BasicBussinessTypeEntity basicBussinessTypeEntity = basicBussinessTypeService.findByAction(orderEntity.getAction()); if (StrUtil.isNotEmpty(basicBussinessTypeEntity.getPreInBackAction())) { IoOrderEntity outOrder = new IoOrderEntity(); + IoCodeEntity codeEntity = backCodeList.get(0); outOrder.setId(null); outOrder.setMainAction(ConstantType.TYPE_OUT); - outOrder.setAction(basicBussinessTypeEntity.getAction()); + outOrder.setAction(basicBussinessTypeEntity.getPreInBackAction()); + InvWarehouseEntity invWarehouseEntity = invWarehouseService.findByInvSubByCode(Constant.INV_PRE_IN_CODE); + outOrder.setInvCode(invWarehouseEntity.getCode()); + outOrder.setDeptCode(invWarehouseEntity.getParentId()); + outOrder.setFromCorp(codeEntity.getSupId()); outOrder.setCreateTime(new Date()); outOrder.setFromType(ConstantStatus.FROM_BACK); String orderNo = gennerOrderUtils.createScOrderNo(new OrderNoTypeBean(Constant.SCAN_ORDER + StrUtil.trimToEmpty(basicBussinessTypeEntity.getPrefix()), "yyyyMMdd")); diff --git a/src/main/resources/application-dev.yml b/src/main/resources/application-dev.yml index a5be266c..eed086a0 100644 --- a/src/main/resources/application-dev.yml +++ b/src/main/resources/application-dev.yml @@ -3,7 +3,7 @@ server: spring: datasource: driver-class-name: com.p6spy.engine.spy.P6SpyDriver - jdbc-url: jdbc:p6spy:mysql://127.0.0.1:3306/udi_spms_wyp?allowMultiQueries=true&serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&allowPublicKeyRetrieval=true + 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/inv/InvPreinProductDao.xml b/src/main/resources/mybatis/mapper/inv/InvPreinProductDao.xml index fa398454..9633c6fc 100644 --- a/src/main/resources/mybatis/mapper/inv/InvPreinProductDao.xml +++ b/src/main/resources/mybatis/mapper/inv/InvPreinProductDao.xml @@ -3,33 +3,32 @@ select ipp.* from inv_prein_product ipp - inner join basic_udirel on ipp.relIdFk = basic_udirel.id - inner join basic_products bp on basic_udirel.uuid = bp.uuid - left join basic_corp on ipp.supId = basic_corp.erpId - left join auth_dept on auth_dept.code = ipp.deptCode - left join auth_warehouse on auth_warehouse.code = ipp.invCode + inner join basic_udirel on ipp.relIdFk = basic_udirel.id + inner join basic_products bp on basic_udirel.uuid = bp.uuid + left join basic_corp on ipp.supId = basic_corp.erpId + left join auth_dept on auth_dept.code = ipp.deptCode + left join auth_warehouse on auth_warehouse.code = ipp.invCode bp.diType = 1 diff --git a/src/main/resources/schemas/schema_v2.1.sql b/src/main/resources/schemas/schema_v2.1.sql index 89f6faa3..b444e28a 100644 --- a/src/main/resources/schemas/schema_v2.1.sql +++ b/src/main/resources/schemas/schema_v2.1.sql @@ -69,7 +69,7 @@ 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('basic_bussiness_type', 'backPreinType', 'tinyint', 1); -CALL Pro_Temp_ColumnWork('basic_bussiness_type', 'checkPreInOrders', 'varchar(255)', 1); +CALL Pro_Temp_ColumnWork('io_order', 'checkPreInOrders', 'varchar(255)', 1); CALL Pro_Temp_ColumnWork('basic_bussiness_type', 'sortNum', 'int', 1);