From 17c2f222e5a17aa08c0c025209d6c8ac16989c13 Mon Sep 17 00:00:00 2001 From: anthonywj Date: Wed, 6 Mar 2024 17:29:55 +0800 Subject: [PATCH] =?UTF-8?q?=E9=AB=98=E5=80=BC=E5=87=BA=E5=BA=93=E6=98=8E?= =?UTF-8?q?=E7=BB=86=E7=94=9F=E6=88=90=E5=BA=93=E5=AD=98=E6=A0=A1=E9=AA=8C?= =?UTF-8?q?=E7=AD=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../inout/IoCodeTempController.java | 242 ++------------- .../controller/inout/IoOrderController.java | 12 +- .../api/service/inout/IoAddInoutService.java | 46 ++- .../api/service/inout/IoCheckInvService.java | 292 ++++++++++++++++++ .../thrsys/impl/ThrInvOrderServiceImpl.java | 8 +- 5 files changed, 357 insertions(+), 243 deletions(-) create mode 100644 src/main/java/com/glxp/api/service/inout/IoCheckInvService.java 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 68aeac7d0..cfeb91a0e 100644 --- a/src/main/java/com/glxp/api/controller/inout/IoCodeTempController.java +++ b/src/main/java/com/glxp/api/controller/inout/IoCodeTempController.java @@ -21,7 +21,6 @@ import com.glxp.api.controller.BaseController; import com.glxp.api.entity.auth.AuthAdmin; import com.glxp.api.entity.auth.InvWarehouseEntity; import com.glxp.api.entity.inout.*; -import com.glxp.api.entity.inv.InvPreInProductDetailEntity; import com.glxp.api.req.basic.CompanyProductRelevanceRequest; import com.glxp.api.req.inout.*; import com.glxp.api.res.PageSimpleResponse; @@ -39,8 +38,6 @@ import com.glxp.api.util.*; import com.glxp.api.util.udi.FilterUdiUtils; import com.glxp.api.util.udi.UdiCalCountUtil; import org.apache.commons.lang3.StringUtils; -import org.apache.regexp.RE; -import org.springframework.beans.BeanUtils; import org.springframework.validation.BindingResult; import org.springframework.web.bind.annotation.*; @@ -93,6 +90,8 @@ public class IoCodeTempController extends BaseController { IoAddInoutService ioAddInoutService; @Resource IoOrderDetailCodeService ioOrderDetailCodeService; + @Resource + IoCheckInvService checkInvService; /** * PDA-----单据上传 @@ -555,21 +554,21 @@ public class IoCodeTempController extends BaseController { BaseResponse invRes = null; if (IntUtil.value(bussinessTypeEntity.getUseDyCount()) == 2) { if (bussinessTypeEntity.isScanPreIn() && checkDiAttribute(bussinessTypeEntity, udiRelevanceResponse, 2)) { //校验预验收库存 - invRes = checkPreInInv(bussinessTypeEntity, genDetaiEntity, false); + invRes = checkInvService.checkPreInInv(bussinessTypeEntity, genDetaiEntity, false); } if (bussinessTypeEntity.isAdvancePreIn() && checkDiAttribute(bussinessTypeEntity, udiRelevanceResponse, 3)) { //校验寄售库存 - invRes = checkPreInv(bussinessTypeEntity, genDetaiEntity, false); + invRes = checkInvService.checkPreInv(bussinessTypeEntity, genDetaiEntity, false); } if (bussinessTypeEntity.isVailInv() && checkDiAttribute(bussinessTypeEntity, udiRelevanceResponse, 1)) { - invRes = checkInv(bussinessTypeEntity, genDetaiEntity, false); + invRes = checkInvService.checkInv(bussinessTypeEntity, genDetaiEntity, false); } } else { if (bussinessTypeEntity.isScanPreIn()) { //校验预验收库存 - invRes = checkPreInInv(bussinessTypeEntity, genDetaiEntity, false); + invRes = checkInvService.checkPreInInv(bussinessTypeEntity, genDetaiEntity, false); } else if (bussinessTypeEntity.isAdvancePreIn()) { //校验寄售库存 - invRes = checkPreInv(bussinessTypeEntity, genDetaiEntity, false); + invRes = checkInvService.checkPreInv(bussinessTypeEntity, genDetaiEntity, false); } else { - invRes = checkInv(bussinessTypeEntity, genDetaiEntity, false); + invRes = checkInvService.checkInv(bussinessTypeEntity, genDetaiEntity, false); } } @@ -745,21 +744,21 @@ public class IoCodeTempController extends BaseController { if (IntUtil.value(bussinessTypeEntity.getUseDyCount()) == 2) { if (bussinessTypeEntity.isScanPreIn() && checkDiAttribute(bussinessTypeEntity, udiRelevanceResponse.getId(), 2)) { //校验预验收库存 - BaseResponse invRes = checkPreInInv(bussinessTypeEntity, codeEnttity, false); + BaseResponse invRes = checkInvService.checkPreInInv(bussinessTypeEntity, codeEnttity, false); if (invRes != null) { deleteEmptyBillNo(orderEntity); return invRes; } } if (bussinessTypeEntity.isAdvancePreIn() && checkDiAttribute(bussinessTypeEntity, udiRelevanceResponse.getId(), 3)) { //校验寄售库存 - BaseResponse invRes = checkPreInv(bussinessTypeEntity, codeEnttity, false); + BaseResponse invRes = checkInvService.checkPreInv(bussinessTypeEntity, codeEnttity, false); if (invRes != null) { deleteEmptyBillNo(orderEntity); return invRes; } } if (bussinessTypeEntity.isVailInv() && checkDiAttribute(bussinessTypeEntity, udiRelevanceResponse.getId(), 1)) { - BaseResponse invRes = checkInv(bussinessTypeEntity, codeEnttity, false); + BaseResponse invRes = checkInvService.checkInv(bussinessTypeEntity, codeEnttity, false); if (invRes != null) { deleteEmptyBillNo(orderEntity); return invRes; @@ -767,19 +766,19 @@ public class IoCodeTempController extends BaseController { } } else { if (bussinessTypeEntity.isScanPreIn()) { //校验预验收库存 - BaseResponse invRes = checkPreInInv(bussinessTypeEntity, codeEnttity, false); + BaseResponse invRes = checkInvService.checkPreInInv(bussinessTypeEntity, codeEnttity, false); if (invRes != null) { deleteEmptyBillNo(orderEntity); return invRes; } } else if (bussinessTypeEntity.isAdvancePreIn()) { //校验寄售库存 - BaseResponse invRes = checkPreInv(bussinessTypeEntity, codeEnttity, false); + BaseResponse invRes = checkInvService.checkPreInv(bussinessTypeEntity, codeEnttity, false); if (invRes != null) { deleteEmptyBillNo(orderEntity); return invRes; } } else { - BaseResponse invRes = checkInv(bussinessTypeEntity, codeEnttity, false); + BaseResponse invRes = checkInvService.checkInv(bussinessTypeEntity, codeEnttity, false); if (invRes != null) { deleteEmptyBillNo(orderEntity); return invRes; @@ -825,201 +824,6 @@ public class IoCodeTempController extends BaseController { } - public BaseResponse checkInv(BasicBussinessTypeEntity bussinessTypeEntity, IoCodeTempEntity codeTempEntity, boolean isEdit) { - if (bussinessTypeEntity.isVailInv() && bussinessTypeEntity.getMainAction().equals(ConstantType.TYPE_OUT)) { - String outInvCode = codeTempEntity.getInvCode(); - InvWarehouseEntity invWarehouseEntity = invWarehouseService.findNoInvTypeInv(bussinessTypeEntity.getDeptNoInvType(), outInvCode); - if (invWarehouseEntity != null) { - outInvCode = invWarehouseEntity.getCode(); - } - int count = 0; - if (bussinessTypeEntity.getSpaceOut() == ConstantStatus.SPACE_OUT_NULL) { - count = invProductDetailService.vailStockCount(codeTempEntity.getRelId(), codeTempEntity.getBatchNo(), codeTempEntity.getSupId(), null, outInvCode, null); - } else if (bussinessTypeEntity.getSpaceOut() == ConstantStatus.SPACE_OUT_SET) { - count = invProductDetailService.vailStockCount(codeTempEntity.getRelId(), codeTempEntity.getBatchNo(), codeTempEntity.getSupId(), codeTempEntity.getDeptCode(), codeTempEntity.getInvCode(), codeTempEntity.getWarehouseCode()); - } else if (bussinessTypeEntity.getSpaceOut() == ConstantStatus.SPACE_OUT_CODE) { - //按指定货位出库 - if (StrUtil.isEmpty(codeTempEntity.getWarehouseCode())) { - List invProductDetailEntities = invProductDetailService.findByGroupCode(codeTempEntity.getInvCode(), codeTempEntity.getCode(), true); - if (CollUtil.isNotEmpty(invProductDetailEntities) && invProductDetailEntities.size() > 1) { - BaseResponse baseResponse = ResultVOUtils.error(511, "存在多个货位,请指定当前货位!"); - baseResponse.setData(invProductDetailEntities); - return baseResponse; - } else if (invProductDetailEntities.size() == 1) { - InvPlaceDetailResponse invPlaceDetailResponse = invProductDetailEntities.get(0); - count = invPlaceDetailResponse.getReCount(); - } else { - return ResultVOUtils.error(500, "添加失败,该产品未上架货位!"); - } - } else { - count = invProductDetailService.vailStockCount(codeTempEntity.getRelId(), codeTempEntity.getBatchNo(), codeTempEntity.getSupId(), codeTempEntity.getDeptCode(), codeTempEntity.getInvCode(), codeTempEntity.getWarehouseCode()); - } - } - if (count <= 0) { - if (count == -1) { - return ResultVOUtils.error(500, "该产品未入库"); - } else - return ResultVOUtils.error(500, "当前库存不足"); - } else { - //查询此单据已扫描的条码数量 - if (bussinessTypeEntity.getSpaceOut() == ConstantStatus.SPACE_OUT_CODE) { - int exitCount = IntUtil.value(codeTempService.selectExitCount(codeTempEntity.getOrderId(), codeTempEntity.getCode())); - if (isEdit) { - if (exitCount > count) { - return ResultVOUtils.error(500, "当前库存不足"); - } - } else { - if ((codeTempEntity.getMyReCount() + exitCount) > count) { - return ResultVOUtils.error(500, "当前库存不足"); - } - } - - } else { - int exitCount = IntUtil.value(codeTempService.selectExitCount(codeTempEntity.getOrderId(), codeTempEntity.getBatchNo(), codeTempEntity.getRelId(), codeTempEntity.getSupId())); - if (isEdit) { - if (exitCount > count) { - return ResultVOUtils.error(500, "当前库存不足"); - } - } else { - if ((codeTempEntity.getMyReCount() + exitCount) > count) { - return ResultVOUtils.error(500, "当前库存不足"); - } - } - - } - - } - } - return null; - } - - /** - * 校验寄售库存 - */ - public BaseResponse checkPreInv(BasicBussinessTypeEntity bussinessTypeEntity, IoCodeTempEntity codeTempEntity, boolean isEdit) { - - InvWarehouseEntity invWarehouseEntity = invWarehouseService.findByOne(ConstantStatus.ACTION_TYPE_ADVANCE); - int count = 0; - if (bussinessTypeEntity.getSpaceOut() == ConstantStatus.SPACE_OUT_NULL) { - count = invPreProductDetailService.vailStockCount(codeTempEntity.getRelId(), codeTempEntity.getBatchNo(), codeTempEntity.getSupId(), null, invWarehouseEntity.getCode(), null); - } else if (bussinessTypeEntity.getSpaceOut() == ConstantStatus.SPACE_OUT_SET) { - count = invPreProductDetailService.vailStockCount(codeTempEntity.getRelId(), codeTempEntity.getBatchNo(), codeTempEntity.getSupId(), null, invWarehouseEntity.getCode(), codeTempEntity.getPreSpaceCode()); - } else if (bussinessTypeEntity.getSpaceOut() == ConstantStatus.SPACE_OUT_CODE) { - //按指定货位出库 - if (StrUtil.isEmpty(codeTempEntity.getPreSpaceCode())) { - List invProductDetailEntities = invPreProductDetailService.findByGroupCode(invWarehouseEntity.getCode(), codeTempEntity.getCode()); - if (CollUtil.isNotEmpty(invProductDetailEntities) && invProductDetailEntities.size() > 1) { - BaseResponse baseResponse = ResultVOUtils.error(511, "存在多个货位,请指定当前货位!"); - baseResponse.setData(invProductDetailEntities); - return baseResponse; - } else if (invProductDetailEntities.size() == 1) { - InvPlaceDetailResponse invPlaceDetailResponse = invProductDetailEntities.get(0); - count = invPlaceDetailResponse.getReCount(); - codeTempEntity.setPreSpaceCode(invPlaceDetailResponse.getInvSpaceCode()); - } else { - return ResultVOUtils.error(500, "添加失败,该产品未上架货位!"); - } - } else { - count = invPreProductDetailService.vailStockCount(codeTempEntity.getRelId(), codeTempEntity.getBatchNo(), codeTempEntity.getSupId(), null, invWarehouseEntity.getCode(), codeTempEntity.getPreSpaceCode()); - } - } - if (count <= 0) { - if (count == -1) { - return ResultVOUtils.error(500, "该产品未入库"); - } else - return ResultVOUtils.error(500, "寄售库存数量不足!"); - } else { - int exitCount = IntUtil.value(codeTempService.selectExitCount(codeTempEntity.getOrderId(), codeTempEntity.getBatchNo(), codeTempEntity.getRelId(), codeTempEntity.getSupId())); - if (isEdit) { - if (exitCount > count) { - return ResultVOUtils.error(500, "寄售库存数量不足"); - } - } else { - - if ((codeTempEntity.getMyReCount() + exitCount) > count) { - return ResultVOUtils.error(500, "寄售库存数量不足"); - } - } - - } - return null; - } - - // 校验预验收库存 - public BaseResponse checkPreInInv(BasicBussinessTypeEntity bussinessTypeEntity, IoCodeTempEntity codeTempEntity, boolean isEdit) { - - InvWarehouseEntity invWarehouseEntity = invWarehouseService.findByOne(ConstantStatus.ACTION_TYPE_PREIN); - - int count = 0; - if (bussinessTypeEntity.getSpaceOut() == ConstantStatus.SPACE_OUT_NULL) { - if (StrUtil.isNotEmpty(codeTempEntity.getSerialNo())) { - count = invPreinProductDetailService.vailStockCountByCode(null, invWarehouseEntity.getCode(), null, codeTempEntity.getCode()); - } else - count = invPreinProductDetailService.vailStockCount(codeTempEntity.getRelId(), codeTempEntity.getBatchNo(), codeTempEntity.getSupId(), null, invWarehouseEntity.getCode(), null); - } else if (bussinessTypeEntity.getSpaceOut() == ConstantStatus.SPACE_OUT_SET) { - if (StrUtil.isNotEmpty(codeTempEntity.getSerialNo())) { - count = invPreinProductDetailService.vailStockCountByCode(null, invWarehouseEntity.getCode(), codeTempEntity.getPreInSpaceCode(), codeTempEntity.getCode()); - } else - count = invPreinProductDetailService.vailStockCount(codeTempEntity.getRelId(), codeTempEntity.getBatchNo(), codeTempEntity.getSupId(), null, invWarehouseEntity.getCode(), codeTempEntity.getPreInSpaceCode()); - } else if (bussinessTypeEntity.getSpaceOut() == ConstantStatus.SPACE_OUT_CODE) { - //按指定货位出库 - if (StrUtil.isEmpty(codeTempEntity.getPreSpaceCode())) { - List invProductDetailEntities = invPreinProductDetailService.findByGroupCode(invWarehouseEntity.getCode(), codeTempEntity.getCode()); - if (CollUtil.isNotEmpty(invProductDetailEntities) && invProductDetailEntities.size() > 1) { - BaseResponse baseResponse = ResultVOUtils.error(511, "存在多个货位,请指定当前货位!"); - baseResponse.setData(invProductDetailEntities); - return baseResponse; - } else if (invProductDetailEntities.size() == 1) { - InvPlaceDetailResponse invPlaceDetailResponse = invProductDetailEntities.get(0); - count = invPlaceDetailResponse.getReCount(); - codeTempEntity.setPreSpaceCode(invPlaceDetailResponse.getInvSpaceCode()); - } else { - return ResultVOUtils.error(500, "添加失败,该产品未上架货位!"); - } - } else { - if (StrUtil.isNotEmpty(codeTempEntity.getSerialNo())) { - count = invPreinProductDetailService.vailStockCountByCode(null, codeTempEntity.getInvCode(), codeTempEntity.getPreInSpaceCode(), codeTempEntity.getCode()); - } else - count = invPreinProductDetailService.vailStockCount(codeTempEntity.getRelId(), codeTempEntity.getBatchNo(), codeTempEntity.getSupId(), null, codeTempEntity.getInvCode(), codeTempEntity.getPreInSpaceCode()); - } - } - -// InvPreInProductDetailEntity invPreinDetailEntity = invPreinProductDetailService.findUseOneByCode(codeTempEntity.getCode()); - if (count <= 0) { - if (count == -1) { - return ResultVOUtils.error(500, "该产品未入库"); - } else - return ResultVOUtils.error(500, "预验收库存数量不足!"); - } else { -// if (StrUtil.isNotEmpty(invPreinDetailEntity.getBatchNo()) && StrUtil.isNotEmpty(codeTempEntity.getBatchNo()) -// && !invPreinDetailEntity.getBatchNo().equals(codeTempEntity.getBatchNo())) { -// return ResultVOUtils.error(500, "当前批次号与预验收录入批次号不匹配!"); -// } - if (StrUtil.isNotEmpty(codeTempEntity.getOrderId())) {//非首次添加 - if (StrUtil.isEmpty(codeTempEntity.getSerialNo())) {//该单据已有该产品 - //无序列号,则可能存在多个预验收入库单 - IoCodeTempEntity tempEntity = codeTempService.findByUnique(codeTempEntity.getOrderId(), codeTempEntity.getCode()); - if (tempEntity != null) { - if (isEdit) { - if (count < (tempEntity.getReCount())) { - return ResultVOUtils.error(500, "超出预验收存数量"); - } - } else { - if (count < (tempEntity.getReCount() + codeTempEntity.getReCount())) { - return ResultVOUtils.error(500, "超出预验收存数量"); - } - } - } - } else { - if (count < 1) { - return ResultVOUtils.error(500, "预验收库存数量不足"); - } - } - } - } - return null; - } - //校验条码完整性 public BaseResponse checkOriginCode(UdiEntity udiEntity) { //校验条码的完整性 @@ -1356,11 +1160,11 @@ public class IoCodeTempController extends BaseController { BasicBussinessTypeEntity bussinessTypeEntity = basicBussinessTypeService.findByAction(tempEntity.getAction()); BaseResponse invRes = null; if (bussinessTypeEntity.isScanPreIn() && checkDiAttribute(bussinessTypeEntity, codeTempEntity.getRelId(), 2)) { //校验预验收库存 - invRes = checkPreInInv(bussinessTypeEntity, codeTempEntity, true); + invRes = checkInvService.checkPreInInv(bussinessTypeEntity, codeTempEntity, true); } else if (bussinessTypeEntity.isAdvancePreIn() && checkDiAttribute(bussinessTypeEntity, codeTempEntity.getRelId(), 3)) { //校验寄售库存 - invRes = checkPreInv(bussinessTypeEntity, codeTempEntity, true); + invRes = checkInvService.checkPreInv(bussinessTypeEntity, codeTempEntity, true); } else if (bussinessTypeEntity.isAdvancePreIn() && checkDiAttribute(bussinessTypeEntity, codeTempEntity.getRelId(), 1)) { - invRes = checkInv(bussinessTypeEntity, codeTempEntity, true); + invRes = checkInvService.checkInv(bussinessTypeEntity, codeTempEntity, true); } if (invRes != null) { codeTempService.updateById(tempEntity); @@ -1650,11 +1454,11 @@ public class IoCodeTempController extends BaseController { BaseResponse invRes = null; if (bussinessTypeEntity.isScanPreIn()) { //校验预验收库存 - invRes = checkPreInInv(bussinessTypeEntity, genDetaiEntity, false); + invRes = checkInvService.checkPreInInv(bussinessTypeEntity, genDetaiEntity, false); } else if (bussinessTypeEntity.isAdvancePreIn()) { //校验寄售库存 - invRes = checkPreInv(bussinessTypeEntity, genDetaiEntity, false); + invRes = checkInvService.checkPreInv(bussinessTypeEntity, genDetaiEntity, false); } else { - invRes = checkInv(bussinessTypeEntity, genDetaiEntity, false); + invRes = checkInvService.checkInv(bussinessTypeEntity, genDetaiEntity, false); } if (invRes != null) { return invRes; @@ -1805,19 +1609,19 @@ public class IoCodeTempController extends BaseController { if (bussinessTypeEntity.isScanPreIn()) { //校验预验收库存 - BaseResponse invRes = checkPreInInv(bussinessTypeEntity, codeEnttity, false); + BaseResponse invRes = checkInvService.checkPreInInv(bussinessTypeEntity, codeEnttity, false); if (invRes != null) { deleteEmptyBillNo(orderEntity); return invRes; } } else if (bussinessTypeEntity.isAdvancePreIn()) { //校验寄售库存 - BaseResponse invRes = checkPreInv(bussinessTypeEntity, codeEnttity, false); + BaseResponse invRes = checkInvService.checkPreInv(bussinessTypeEntity, codeEnttity, false); if (invRes != null) { deleteEmptyBillNo(orderEntity); return invRes; } } else { - BaseResponse invRes = checkInv(bussinessTypeEntity, codeEnttity, false); + BaseResponse invRes = checkInvService.checkInv(bussinessTypeEntity, codeEnttity, false); if (invRes != null) { deleteEmptyBillNo(orderEntity); return invRes; diff --git a/src/main/java/com/glxp/api/controller/inout/IoOrderController.java b/src/main/java/com/glxp/api/controller/inout/IoOrderController.java index 9ccab1510..87fd0ec1e 100644 --- a/src/main/java/com/glxp/api/controller/inout/IoOrderController.java +++ b/src/main/java/com/glxp/api/controller/inout/IoOrderController.java @@ -272,6 +272,9 @@ public class IoOrderController extends BaseController { return ResultVOUtils.success("提交成功!"); } + @Resource + IoCheckInvService checkInvService; + //新增扫码单据-立即提交 @RepeatSubmit() @AuthRuleAnnotation("") @@ -291,12 +294,9 @@ public class IoOrderController extends BaseController { BaseResponse tempResponse = checkSubmitEnable(orderEntity); if (tempResponse != null) return tempResponse; - //todo 目前先去掉因为不能改变状态 有问题可以看一下这个方法 -// if (orderEntity.getStatus() != ConstantStatus.ORDER_STATUS_TEMP_SAVE){ - ioAddInoutService.dealProcess(orderEntity); -// } - - + BaseResponse baseResponse = ioAddInoutService.dealProcess(orderEntity); + if (baseResponse != null) + return baseResponse; //不需要手动校验,则走正常单据校验处理流程 if (!ioCheckInoutService.checkManual(orderEntity.getBillNo())) { ioCheckInoutService.check(orderEntity.getBillNo()); 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 2253fd364..dff0d779d 100644 --- a/src/main/java/com/glxp/api/service/inout/IoAddInoutService.java +++ b/src/main/java/com/glxp/api/service/inout/IoAddInoutService.java @@ -79,9 +79,11 @@ public class IoAddInoutService { InvWarehouseService invWarehouseService; @Resource InvProductService invProductService; + @Resource + IoCheckInvService checkInvService; //新增扫码单据处理 - public void dealProcess(IoOrderEntity orderEntity) { + public BaseResponse dealProcess(IoOrderEntity orderEntity) { orderEntity.setErrMsg("正在处理!"); orderEntity.setStatus(ConstantStatus.ORDER_STATUS_PROCESSING); @@ -96,7 +98,7 @@ public class IoAddInoutService { orderEntity.setStatus(ConstantStatus.ORDER_STATS_ERROR); orderEntity.setUpdateTime(new Date()); orderService.update(orderEntity); - return; + return ResultVOUtils.error(orderEntity.getErrMsg()); } BasicBussinessTypeEntity bussinessTypeEntity = basicBussinessTypeService.findByAction(orderEntity.getAction()); @@ -105,14 +107,14 @@ public class IoAddInoutService { orderEntity.setStatus(ConstantStatus.ORDER_STATS_ERROR); orderEntity.setUpdateTime(new Date()); orderService.update(orderEntity); - return; + return ResultVOUtils.error(orderEntity.getErrMsg()); } if (StrUtil.isEmpty(orderEntity.getFromCorp()) && StrUtil.isEmpty(orderEntity.getFromInvCode())) { orderEntity.setErrMsg("未选择往来单位"); orderEntity.setStatus(ConstantStatus.ORDER_STATS_ERROR); orderEntity.setUpdateTime(new Date()); orderService.update(orderEntity); - return; + return ResultVOUtils.error(orderEntity.getErrMsg()); } else if (StrUtil.isNotEmpty(orderEntity.getFromCorp())) { updateCorp(bussinessTypeEntity, orderEntity.getFromCorp(), orderEntity.getSickerAdNum()); } @@ -123,7 +125,7 @@ public class IoAddInoutService { orderEntity.setStatus(ConstantStatus.ORDER_STATS_ERROR); orderEntity.setUpdateTime(new Date()); orderService.update(orderEntity); - return; + return ResultVOUtils.error(orderEntity.getErrMsg()); } @@ -141,7 +143,7 @@ public class IoAddInoutService { orderEntity.setErrMsg(result); orderService.update(orderEntity); insertList.clear(); - return; + return ResultVOUtils.error(orderEntity.getErrMsg()); } if (bussinessTypeEntity.isCodeFillCheck()) { @@ -153,7 +155,7 @@ public class IoAddInoutService { orderEntity.setUpdateTime(new Date()); orderService.update(orderEntity); insertList.clear(); - return; + return ResultVOUtils.error(orderEntity.getErrMsg()); } } @@ -164,7 +166,7 @@ public class IoAddInoutService { orderEntity.setUpdateTime(new Date()); orderEntity.setErrMsg("udi码:" + warehouseEntity.getCode() + "上传时对照数据丢失!"); orderService.update(orderEntity); - return; + return ResultVOUtils.error(orderEntity.getErrMsg()); } //产品是否指定供应商 @@ -173,7 +175,7 @@ public class IoAddInoutService { orderEntity.setUpdateTime(new Date()); orderEntity.setErrMsg("udi码:" + warehouseEntity.getCode() + "未指定供应商!"); orderService.update(orderEntity); - return; + return ResultVOUtils.error(orderEntity.getErrMsg()); } //校验是否是当前供应商 @@ -184,7 +186,7 @@ public class IoAddInoutService { orderEntity.setUpdateTime(new Date()); orderEntity.setErrMsg("udi码:" + warehouseEntity.getCode() + "当前供应商不存在此配送产品"); orderService.update(orderEntity); - return; + return ResultVOUtils.error(orderEntity.getErrMsg()); } } @@ -195,16 +197,26 @@ public class IoAddInoutService { orderEntity.setUpdateTime(new Date()); orderEntity.setErrMsg("udi码:" + warehouseEntity.getCode() + "该产品信息未维护"); orderService.update(orderEntity); - return; + return ResultVOUtils.error(orderEntity.getErrMsg()); } else if (!udiRelevanceResponse.getUseDy() && udiRelevanceResponse.getDiType() == ConstantStatus.DITYPE_SYDY) { orderEntity.setStatus(ConstantStatus.ORDER_STATS_ERROR); orderEntity.setUpdateTime(new Date()); orderEntity.setErrMsg("udi码:" + warehouseEntity.getCode() + "该产品不允许以使用单元入库"); orderService.update(orderEntity); - return; + return ResultVOUtils.error(orderEntity.getErrMsg()); + } + + BaseResponse baseResponse = checkInvService.check(bussinessTypeEntity, warehouseEntity, udiRelevanceResponse); + if (baseResponse != null) { + orderEntity.setStatus(ConstantStatus.ORDER_STATS_ERROR); + orderEntity.setUpdateTime(new Date()); + orderEntity.setErrMsg(baseResponse.getMessage()); + orderService.update(orderEntity); + return baseResponse; } + } if (CollUtil.isNotEmpty(insertList)) { @@ -218,11 +230,13 @@ public class IoAddInoutService { orderEntity.setUpdateTime(new Date()); orderEntity.setErrMsg(""); orderService.update(orderEntity); + return null; } else { orderEntity.setStatus(ConstantStatus.ORDER_STATS_ERROR); orderEntity.setUpdateTime(new Date()); orderEntity.setErrMsg("未添加UDI码"); orderService.update(orderEntity); + return ResultVOUtils.error(orderEntity.getErrMsg()); } } @@ -244,7 +258,7 @@ public class IoAddInoutService { orderEntity.setStatus(ConstantStatus.ORDER_STATS_ERROR); orderEntity.setUpdateTime(new Date()); orderService.update(orderEntity); - return ResultVOUtils.error(500, "单据重复上传"); + return ResultVOUtils.error(orderEntity.getErrMsg()); } @@ -253,7 +267,7 @@ public class IoAddInoutService { orderEntity.setStatus(ConstantStatus.ORDER_STATS_ERROR); orderEntity.setUpdateTime(new Date()); orderService.update(orderEntity); - return ResultVOUtils.error(500, "未选择往来单位"); + return ResultVOUtils.error(orderEntity.getErrMsg()); } if (StrUtil.isEmpty(orderEntity.getInvCode())) { @@ -261,7 +275,7 @@ public class IoAddInoutService { orderEntity.setStatus(ConstantStatus.ORDER_STATS_ERROR); orderEntity.setUpdateTime(new Date()); orderService.update(orderEntity); - return ResultVOUtils.error(500, "未选择当前仓库信息"); + return ResultVOUtils.error(orderEntity.getErrMsg()); } @@ -283,7 +297,7 @@ public class IoAddInoutService { orderEntity.setStatus(ConstantStatus.ORDER_STATS_ERROR); orderEntity.setUpdateTime(new Date()); orderService.update(orderEntity); - return ResultVOUtils.error(500, "errMsg"); + return ResultVOUtils.error(orderEntity.getErrMsg()); } orderEntity.setStatus(ConstantStatus.ORDER_STATUS_CHECK); orderEntity.setDealStatus(ConstantStatus.ORDER_DEAL_POST); diff --git a/src/main/java/com/glxp/api/service/inout/IoCheckInvService.java b/src/main/java/com/glxp/api/service/inout/IoCheckInvService.java new file mode 100644 index 000000000..995a1480f --- /dev/null +++ b/src/main/java/com/glxp/api/service/inout/IoCheckInvService.java @@ -0,0 +1,292 @@ +package com.glxp.api.service.inout; + +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.StrUtil; +import com.glxp.api.common.res.BaseResponse; +import com.glxp.api.common.util.ResultVOUtils; +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.inout.IoCodeTempEntity; +import com.glxp.api.res.basic.UdiRelevanceResponse; +import com.glxp.api.res.inv.InvPlaceDetailResponse; +import com.glxp.api.service.auth.InvWarehouseService; +import com.glxp.api.service.inv.InvPreProductDetailService; +import com.glxp.api.service.inv.InvPreinProductDetailService; +import com.glxp.api.service.inv.impl.InvProductDetailService; +import com.glxp.api.util.IntUtil; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.List; + +@Service +public class IoCheckInvService { + + @Resource + private IoCodeTempService codeTempService; + @Resource + InvWarehouseService invWarehouseService; + @Resource + InvProductDetailService invProductDetailService; + @Resource + InvPreinProductDetailService invPreinProductDetailService; + @Resource + InvPreProductDetailService invPreProductDetailService; + + + public BaseResponse check(BasicBussinessTypeEntity bussinessTypeEntity, IoCodeTempEntity genDetaiEntity, UdiRelevanceResponse udiRelevanceResponse) { + BaseResponse invRes = null; + if (IntUtil.value(bussinessTypeEntity.getUseDyCount()) == 2) { + if (bussinessTypeEntity.isScanPreIn() && checkDiAttribute(bussinessTypeEntity, udiRelevanceResponse, 2)) { //校验预验收库存 + invRes = checkPreInInv(bussinessTypeEntity, genDetaiEntity, false); + } + if (bussinessTypeEntity.isAdvancePreIn() && checkDiAttribute(bussinessTypeEntity, udiRelevanceResponse, 3)) { //校验寄售库存 + invRes = checkPreInv(bussinessTypeEntity, genDetaiEntity, false); + } + if (bussinessTypeEntity.isVailInv() && checkDiAttribute(bussinessTypeEntity, udiRelevanceResponse, 1)) { + invRes = checkInv(bussinessTypeEntity, genDetaiEntity, false); + } + } else { + if (bussinessTypeEntity.isScanPreIn()) { //校验预验收库存 + invRes = checkPreInInv(bussinessTypeEntity, genDetaiEntity, false); + } else if (bussinessTypeEntity.isAdvancePreIn()) { //校验寄售库存 + invRes = checkPreInv(bussinessTypeEntity, genDetaiEntity, false); + } else { + invRes = checkInv(bussinessTypeEntity, genDetaiEntity, false); + } + } + return invRes; + } + + + /** + * 校验入账库库存 + * + * @param bussinessTypeEntity + * @param codeTempEntity + * @param isEdit + * @return + */ + public BaseResponse checkInv(BasicBussinessTypeEntity bussinessTypeEntity, IoCodeTempEntity codeTempEntity, boolean isEdit) { + if (bussinessTypeEntity.isVailInv() && bussinessTypeEntity.getMainAction().equals(ConstantType.TYPE_OUT)) { + String outInvCode = codeTempEntity.getInvCode(); + InvWarehouseEntity invWarehouseEntity = invWarehouseService.findNoInvTypeInv(bussinessTypeEntity.getDeptNoInvType(), outInvCode); + if (invWarehouseEntity != null) { + outInvCode = invWarehouseEntity.getCode(); + } + int count = 0; + if (bussinessTypeEntity.getSpaceOut() == ConstantStatus.SPACE_OUT_NULL) { + count = invProductDetailService.vailStockCount(codeTempEntity.getRelId(), codeTempEntity.getBatchNo(), codeTempEntity.getSupId(), null, outInvCode, null); + } else if (bussinessTypeEntity.getSpaceOut() == ConstantStatus.SPACE_OUT_SET) { + count = invProductDetailService.vailStockCount(codeTempEntity.getRelId(), codeTempEntity.getBatchNo(), codeTempEntity.getSupId(), codeTempEntity.getDeptCode(), codeTempEntity.getInvCode(), codeTempEntity.getWarehouseCode()); + } else if (bussinessTypeEntity.getSpaceOut() == ConstantStatus.SPACE_OUT_CODE) { + //按指定货位出库 + if (StrUtil.isEmpty(codeTempEntity.getWarehouseCode())) { + List invProductDetailEntities = invProductDetailService.findByGroupCode(codeTempEntity.getInvCode(), codeTempEntity.getCode(), true); + if (CollUtil.isNotEmpty(invProductDetailEntities) && invProductDetailEntities.size() > 1) { + BaseResponse baseResponse = ResultVOUtils.error(511, "存在多个货位,请指定当前货位!"); + baseResponse.setData(invProductDetailEntities); + return baseResponse; + } else if (invProductDetailEntities.size() == 1) { + InvPlaceDetailResponse invPlaceDetailResponse = invProductDetailEntities.get(0); + count = invPlaceDetailResponse.getReCount(); + } else { + return ResultVOUtils.error(500, "添加失败,该产品未上架货位!"); + } + } else { + count = invProductDetailService.vailStockCount(codeTempEntity.getRelId(), codeTempEntity.getBatchNo(), codeTempEntity.getSupId(), codeTempEntity.getDeptCode(), codeTempEntity.getInvCode(), codeTempEntity.getWarehouseCode()); + } + } + if (count <= 0) { + if (count == -1) { + return ResultVOUtils.error(500, "该产品未入库"); + } else + return ResultVOUtils.error(500, "当前库存不足"); + } else { + //查询此单据已扫描的条码数量 + if (bussinessTypeEntity.getSpaceOut() == ConstantStatus.SPACE_OUT_CODE) { + int exitCount = IntUtil.value(codeTempService.selectExitCount(codeTempEntity.getOrderId(), codeTempEntity.getCode())); + if (isEdit) { + if (exitCount > count) { + return ResultVOUtils.error(500, "当前库存不足"); + } + } else { + if ((codeTempEntity.getMyReCount() + exitCount) > count) { + return ResultVOUtils.error(500, "当前库存不足"); + } + } + + } else { + int exitCount = IntUtil.value(codeTempService.selectExitCount(codeTempEntity.getOrderId(), codeTempEntity.getBatchNo(), codeTempEntity.getRelId(), codeTempEntity.getSupId())); + if (isEdit) { + if (exitCount > count) { + return ResultVOUtils.error(500, "当前库存不足"); + } + } else { + if ((codeTempEntity.getMyReCount() + exitCount) > count) { + return ResultVOUtils.error(500, "当前库存不足"); + } + } + + } + + } + } + return null; + } + + + /** + * 校验预验收库存 + * + * @param bussinessTypeEntity + * @param codeTempEntity + * @param isEdit + * @return + */ + public BaseResponse checkPreInInv(BasicBussinessTypeEntity bussinessTypeEntity, IoCodeTempEntity codeTempEntity, boolean isEdit) { + + InvWarehouseEntity invWarehouseEntity = invWarehouseService.findByOne(ConstantStatus.ACTION_TYPE_PREIN); + + int count = 0; + if (bussinessTypeEntity.getSpaceOut() == ConstantStatus.SPACE_OUT_NULL) { + if (StrUtil.isNotEmpty(codeTempEntity.getSerialNo())) { + count = invPreinProductDetailService.vailStockCountByCode(null, invWarehouseEntity.getCode(), null, codeTempEntity.getCode()); + } else + count = invPreinProductDetailService.vailStockCount(codeTempEntity.getRelId(), codeTempEntity.getBatchNo(), codeTempEntity.getSupId(), null, invWarehouseEntity.getCode(), null); + } else if (bussinessTypeEntity.getSpaceOut() == ConstantStatus.SPACE_OUT_SET) { + if (StrUtil.isNotEmpty(codeTempEntity.getSerialNo())) { + count = invPreinProductDetailService.vailStockCountByCode(null, invWarehouseEntity.getCode(), codeTempEntity.getPreInSpaceCode(), codeTempEntity.getCode()); + } else + count = invPreinProductDetailService.vailStockCount(codeTempEntity.getRelId(), codeTempEntity.getBatchNo(), codeTempEntity.getSupId(), null, invWarehouseEntity.getCode(), codeTempEntity.getPreInSpaceCode()); + } else if (bussinessTypeEntity.getSpaceOut() == ConstantStatus.SPACE_OUT_CODE) { + //按指定货位出库 + if (StrUtil.isEmpty(codeTempEntity.getPreSpaceCode())) { + List invProductDetailEntities = invPreinProductDetailService.findByGroupCode(invWarehouseEntity.getCode(), codeTempEntity.getCode()); + if (CollUtil.isNotEmpty(invProductDetailEntities) && invProductDetailEntities.size() > 1) { + BaseResponse baseResponse = ResultVOUtils.error(511, "存在多个货位,请指定当前货位!"); + baseResponse.setData(invProductDetailEntities); + return baseResponse; + } else if (invProductDetailEntities.size() == 1) { + InvPlaceDetailResponse invPlaceDetailResponse = invProductDetailEntities.get(0); + count = invPlaceDetailResponse.getReCount(); + codeTempEntity.setPreSpaceCode(invPlaceDetailResponse.getInvSpaceCode()); + } else { + return ResultVOUtils.error(500, "添加失败,该产品未上架货位!"); + } + } else { + if (StrUtil.isNotEmpty(codeTempEntity.getSerialNo())) { + count = invPreinProductDetailService.vailStockCountByCode(null, codeTempEntity.getInvCode(), codeTempEntity.getPreInSpaceCode(), codeTempEntity.getCode()); + } else + count = invPreinProductDetailService.vailStockCount(codeTempEntity.getRelId(), codeTempEntity.getBatchNo(), codeTempEntity.getSupId(), null, codeTempEntity.getInvCode(), codeTempEntity.getPreInSpaceCode()); + } + } +// InvPreInProductDetailEntity invPreinDetailEntity = invPreinProductDetailService.findUseOneByCode(codeTempEntity.getCode()); + if (count <= 0) { + if (count == -1) { + return ResultVOUtils.error(500, "该产品未入库"); + } else + return ResultVOUtils.error(500, "预验收库存数量不足!"); + } else { +// if (StrUtil.isNotEmpty(invPreinDetailEntity.getBatchNo()) && StrUtil.isNotEmpty(codeTempEntity.getBatchNo()) +// && !invPreinDetailEntity.getBatchNo().equals(codeTempEntity.getBatchNo())) { +// return ResultVOUtils.error(500, "当前批次号与预验收录入批次号不匹配!"); +// } + if (StrUtil.isNotEmpty(codeTempEntity.getOrderId())) {//非首次添加 + if (StrUtil.isEmpty(codeTempEntity.getSerialNo())) {//该单据已有该产品 + //无序列号,则可能存在多个预验收入库单 + IoCodeTempEntity tempEntity = codeTempService.findByUnique(codeTempEntity.getOrderId(), codeTempEntity.getCode()); + if (tempEntity != null) { + if (isEdit) { + if (count < (tempEntity.getReCount())) { + return ResultVOUtils.error(500, "超出预验收存数量"); + } + } else { + if (count < (tempEntity.getReCount() + codeTempEntity.getReCount())) { + return ResultVOUtils.error(500, "超出预验收存数量"); + } + } + } + } else { + if (count < 1) { + return ResultVOUtils.error(500, "预验收库存数量不足"); + } + } + } + } + return null; + } + + + /** + * 校验寄售库存 + * + * @param bussinessTypeEntity + * @param codeTempEntity + * @param isEdit + * @return + */ + public BaseResponse checkPreInv(BasicBussinessTypeEntity bussinessTypeEntity, IoCodeTempEntity codeTempEntity, boolean isEdit) { + + InvWarehouseEntity invWarehouseEntity = invWarehouseService.findByOne(ConstantStatus.ACTION_TYPE_ADVANCE); + int count = 0; + if (bussinessTypeEntity.getSpaceOut() == ConstantStatus.SPACE_OUT_NULL) { + count = invPreProductDetailService.vailStockCount(codeTempEntity.getRelId(), codeTempEntity.getBatchNo(), codeTempEntity.getSupId(), null, invWarehouseEntity.getCode(), null); + } else if (bussinessTypeEntity.getSpaceOut() == ConstantStatus.SPACE_OUT_SET) { + count = invPreProductDetailService.vailStockCount(codeTempEntity.getRelId(), codeTempEntity.getBatchNo(), codeTempEntity.getSupId(), null, invWarehouseEntity.getCode(), codeTempEntity.getPreSpaceCode()); + } else if (bussinessTypeEntity.getSpaceOut() == ConstantStatus.SPACE_OUT_CODE) { + //按指定货位出库 + if (StrUtil.isEmpty(codeTempEntity.getPreSpaceCode())) { + List invProductDetailEntities = invPreProductDetailService.findByGroupCode(invWarehouseEntity.getCode(), codeTempEntity.getCode()); + if (CollUtil.isNotEmpty(invProductDetailEntities) && invProductDetailEntities.size() > 1) { + BaseResponse baseResponse = ResultVOUtils.error(511, "存在多个货位,请指定当前货位!"); + baseResponse.setData(invProductDetailEntities); + return baseResponse; + } else if (invProductDetailEntities.size() == 1) { + InvPlaceDetailResponse invPlaceDetailResponse = invProductDetailEntities.get(0); + count = invPlaceDetailResponse.getReCount(); + codeTempEntity.setPreSpaceCode(invPlaceDetailResponse.getInvSpaceCode()); + } else { + return ResultVOUtils.error(500, "添加失败,该产品未上架货位!"); + } + } else { + count = invPreProductDetailService.vailStockCount(codeTempEntity.getRelId(), codeTempEntity.getBatchNo(), codeTempEntity.getSupId(), null, invWarehouseEntity.getCode(), codeTempEntity.getPreSpaceCode()); + } + } + if (count <= 0) { + if (count == -1) { + return ResultVOUtils.error(500, "该产品未入库"); + } else + return ResultVOUtils.error(500, "寄售库存数量不足!"); + } else { + int exitCount = IntUtil.value(codeTempService.selectExitCount(codeTempEntity.getOrderId(), codeTempEntity.getBatchNo(), codeTempEntity.getRelId(), codeTempEntity.getSupId())); + if (isEdit) { + if (exitCount > count) { + return ResultVOUtils.error(500, "寄售库存数量不足"); + } + } else { + + if ((codeTempEntity.getMyReCount() + exitCount) > count) { + return ResultVOUtils.error(500, "寄售库存数量不足"); + } + } + + } + return null; + } + + /** + * @param purType 1:入账库;2:预验收库;3:寄售库 + */ + public boolean checkDiAttribute(BasicBussinessTypeEntity bussinessTypeEntity, UdiRelevanceResponse udiRelevanceEntity, Integer purType) { + if (bussinessTypeEntity.getUseDyCount() == 2) { + if (IntUtil.value(udiRelevanceEntity.getPurType()) == IntUtil.value(purType)) { + return true; + } else + return false; + } + return true; + } +} diff --git a/src/main/java/com/glxp/api/service/thrsys/impl/ThrInvOrderServiceImpl.java b/src/main/java/com/glxp/api/service/thrsys/impl/ThrInvOrderServiceImpl.java index 1540d8fcf..dd4c22d42 100644 --- a/src/main/java/com/glxp/api/service/thrsys/impl/ThrInvOrderServiceImpl.java +++ b/src/main/java/com/glxp/api/service/thrsys/impl/ThrInvOrderServiceImpl.java @@ -439,7 +439,8 @@ public class ThrInvOrderServiceImpl implements ThrInvOrderService { IoOrderEntity ioOrderEntity = new IoOrderEntity(); ioOrderEntity.setBillNo(newBillNo); ioOrderEntity.setMainAction(thrInvOrder.getMainAction()); - ioOrderEntity.setFromCorp(generateOrderRequest.getFromCorp()); + String fromCorp = addInoutService.updateCorp(bussinessTypeEntity, entry.getValue().get(0).getSickerName(), entry.getKey()); + ioOrderEntity.setFromCorp(fromCorp); ioOrderEntity.setInvCode(thrInvOrder.getInvCode()); ioOrderEntity.setDeptCode(thrInvOrder.getDeptCode()); ioOrderEntity.setAction(generateOrderRequest.getAction()); @@ -462,7 +463,7 @@ public class ThrInvOrderServiceImpl implements ThrInvOrderService { return false; } - if (!copyIoCodeTemps(thrInvOrderDetails, newIoCodeTemps, newBillNo, generateOrderRequest)) { + if (!copyIoCodeTemps(entry.getValue(), newIoCodeTemps, newBillNo, generateOrderRequest)) { return false; } @@ -472,6 +473,9 @@ public class ThrInvOrderServiceImpl implements ThrInvOrderService { thrInvOrder.setUpdateUser(userId + ""); thrInvOrderMapper.updateByPrimaryKey(thrInvOrder); ioCodeTempDao.insertBatch(newIoCodeTemps); + for (IoCodeTempEntity codeTempEntity : newIoCodeTemps) { + addInoutService.genOrderDetailCode(ioOrderEntity, codeTempEntity); + } }