From c59fa07587dd4f29c593f8cf0a86d8e05dc93954 Mon Sep 17 00:00:00 2001 From: yewj Date: Mon, 7 Apr 2025 20:49:49 +0800 Subject: [PATCH] =?UTF-8?q?=E9=80=80=E8=B4=A7=E6=89=AB=E7=A0=81=E5=86=B2?= =?UTF-8?q?=E7=AA=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../inout/IoCodeTempController.java | 14 ++- .../controller/inout/IoOrderController.java | 8 +- .../glxp/api/entity/collect/IoCollectSet.java | 9 ++ .../api/service/inout/AddCoodeService.java | 13 ++- .../service/inout/IoCheckInoutService.java | 2 +- .../api/service/inout/IoSplitCodeService.java | 101 +++++++++--------- .../service/inout/IoSplitFifoInvService.java | 86 +++++++-------- src/main/resources/schemas/schema_v2.4.sql | 9 ++ 8 files changed, 133 insertions(+), 109 deletions(-) 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 cc893104c..ee3750bf9 100644 --- a/src/main/java/com/glxp/api/controller/inout/IoCodeTempController.java +++ b/src/main/java/com/glxp/api/controller/inout/IoCodeTempController.java @@ -1830,12 +1830,16 @@ public class IoCodeTempController extends BaseController { return ResultVOUtils.error(533, "扫码重复!"); } } else if (bussinessTypeEntity.getAction().equals(ConstantType.SPLIT_RETURN)) { - if (fifoCodeEntity == null) { - return ResultVOUtils.error(500, "当前追溯码未上货或已出库完毕!"); - } - if (splitCodeEntity != null) {//&& StrUtil.isNotEmpty(splitCodeEntity.getSerialNo()) - return ResultVOUtils.error(533, "当前追溯码已经拆零,无法退货!"); + IoCollectSet collectSet = collectSetService.getSet(); + if (!IntUtil.value(collectSet.getConflictReturn())) { + if (fifoCodeEntity == null) { + return ResultVOUtils.error(500, "当前追溯码未上货或已出库完毕!"); + } + if (splitCodeEntity != null) {//&& StrUtil.isNotEmpty(splitCodeEntity.getSerialNo()) + return ResultVOUtils.error(533, "当前追溯码已经拆零,无法退货!"); + } } + if (codeTempEntity != null) { return ResultVOUtils.error(533, "扫码重复!"); } 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 833010afb..fa4f76d86 100644 --- a/src/main/java/com/glxp/api/controller/inout/IoOrderController.java +++ b/src/main/java/com/glxp/api/controller/inout/IoOrderController.java @@ -433,11 +433,11 @@ public class IoOrderController extends BaseController { if (bussinessTypeEntity.getAction().equals(ConstantType.SPLIT_RETURN)) { for (IoCodeTempEntity codeTempEntity : codeTempEntities) { IoSplitFifoCodeEntity fifoCodeEntity = fifoCodeService.findByCode(codeTempEntity.getCode(), addOrderRequest.getWorkPlaceCode()); - if (fifoCodeEntity == null && StrUtil.isEmpty(fifoCodeEntity.getSerialNo())) { - return ResultVOUtils.error(500, "当前追溯码:" + fifoCodeEntity.getCode() + "未上货!"); - } +// if (fifoCodeEntity == null) { +// return ResultVOUtils.error(500, "当前追溯码:" + fifoCodeEntity.getCode() + "未上货!"); +// } //校验工位库存 - if (fifoCodeEntity.getTotalCount() < codeTempEntity.getReCount()) { + if (fifoCodeEntity!=null && fifoCodeEntity.getTotalCount() < codeTempEntity.getReCount()) { return ResultVOUtils.error(500, "当前码:" + fifoCodeEntity.getCode() + "库存不足,请更改码明细!"); } } diff --git a/src/main/java/com/glxp/api/entity/collect/IoCollectSet.java b/src/main/java/com/glxp/api/entity/collect/IoCollectSet.java index 6b3dfb09e..2e5202e30 100644 --- a/src/main/java/com/glxp/api/entity/collect/IoCollectSet.java +++ b/src/main/java/com/glxp/api/entity/collect/IoCollectSet.java @@ -130,6 +130,15 @@ public class IoCollectSet implements Serializable { private Boolean delayTageCode; + @TableField(value = "conflictScan") + @ApiModelProperty(value = "是否启用扫码冲突替换:1:是;0:否") + private Boolean conflictScan; + + @TableField(value = "conflictReturn") + @ApiModelProperty(value = "是否启用退货扫码冲突替换:1:是;0:否") + private Boolean conflictReturn; + + private static final long serialVersionUID = 1L; @TableField(exist = false) diff --git a/src/main/java/com/glxp/api/service/inout/AddCoodeService.java b/src/main/java/com/glxp/api/service/inout/AddCoodeService.java index 35ffd0082..0bc020f38 100644 --- a/src/main/java/com/glxp/api/service/inout/AddCoodeService.java +++ b/src/main/java/com/glxp/api/service/inout/AddCoodeService.java @@ -919,11 +919,14 @@ public class AddCoodeService { return ResultVOUtils.error(533, "扫码重复!"); } } else if (bussinessTypeEntity.getAction().equals(ConstantType.SPLIT_RETURN)) { - if (fifoCodeEntity == null) { - return ResultVOUtils.error(500, "当前追溯码未上货或已出库完毕!"); - } - if (splitCodeEntity != null) {//&& StrUtil.isNotEmpty(splitCodeEntity.getSerialNo()) - return ResultVOUtils.error(533, "当前追溯码已经拆零,无法退货!"); + IoCollectSet collectSet = collectSetService.getSet(); + if (!IntUtil.value(collectSet.getConflictReturn())) { + if (fifoCodeEntity == null) { + return ResultVOUtils.error(500, "当前追溯码未上货或已出库完毕!"); + } + if (splitCodeEntity != null) {//&& StrUtil.isNotEmpty(splitCodeEntity.getSerialNo()) + return ResultVOUtils.error(533, "当前追溯码已经拆零,无法退货!"); + } } if (codeTempEntity != null) { return ResultVOUtils.error(533, "扫码重复!"); 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 13b52f217..b87b68c20 100644 --- a/src/main/java/com/glxp/api/service/inout/IoCheckInoutService.java +++ b/src/main/java/com/glxp/api/service/inout/IoCheckInoutService.java @@ -1283,7 +1283,7 @@ public class IoCheckInoutService { } else if (orderEntity.getAction().equals(ConstantType.SPLIT_RETURN)) { //拆零预出库退回 List codeList = codeService.findByOrderId(orderEntity.getBillNo()); - fifoInvService.removeInv(codeList, orderEntity.getWorkPlaceCode()); + fifoInvService.removeInv(codeList, orderEntity); splitFifoCodeService.updateAllInvAlert(orderEntity.getWorkPlaceCode()); } } diff --git a/src/main/java/com/glxp/api/service/inout/IoSplitCodeService.java b/src/main/java/com/glxp/api/service/inout/IoSplitCodeService.java index 6c4e80f90..6ac79d7f5 100644 --- a/src/main/java/com/glxp/api/service/inout/IoSplitCodeService.java +++ b/src/main/java/com/glxp/api/service/inout/IoSplitCodeService.java @@ -199,10 +199,12 @@ public class IoSplitCodeService extends ServiceImpl collectOrderCodeMEN = collectOrderCodeManService.listByBillNo(collectOrder.getBillNo()); if (CollUtil.isNotEmpty(collectOrderCodeMEN)) { //扫码冲突 - dealOrderReplace(collectOrderCodeMEN, collectOrder, putWorkPlaceCode); + if (IntUtil.value(collectSet.getConflictScan())) { + dealOrderReplace(collectOrderCodeMEN, collectOrder, putWorkPlaceCode); + } for (IoCollectOrderCodeMan collectOrderCodeMan : collectOrderCodeMEN) { if (IntUtil.value(collectOrderCodeMan.getRemoveFlag())) { continue; @@ -408,7 +412,7 @@ public class IoSplitCodeService extends ServiceImpl splitFifoCodeEntitys = splitFifoCodeService.findByRelId(workPlaceCode, codeEntity.getRelId(), codeEntity.getBatchNo(), null); - if (CollUtil.isEmpty(splitFifoCodeEntitys)) { - throw new JsonException(500, "工位库存不足!"); - } -// ioSplitFifoCodeEntity = splitFifoCodeEntitys.get(0); + // 1.判断工位库存是否足够 + // 2.工位库存足够的话,判断已完成单是否存在, + // 3.存在的话,判断已完成单是否已上传医保 + // 4.已上传医保的话,调用医保删除接口 - List collectCodeBackups = collectCodeBackMapper.selectList(new LambdaQueryWrapper().eq(IoCollectCodeBackup::getCode, ioSplitFifoCodeEntity.getCode())); - if (CollUtil.isNotEmpty(collectCodeBackups)) { - IoCollectCodeBackup collectCodeBackup = collectCodeBackups.get(0); - - if (IntUtil.value(collectCodeBackup.getFifoSplit()) == 3) { - throw new JsonException(500, collectCodeBackup.getCode() + "重复扫码,请盘查后重试!"); + List splitFifoCodeEntitys = splitFifoCodeService.findByRelId(workPlaceCode, codeEntity.getRelId(), codeEntity.getBatchNo(), null); + if (CollUtil.isEmpty(splitFifoCodeEntitys)) { + throw new JsonException(500, "工位库存不足!"); + } + IoSplitFifoCodeEntity ioSplitFifoCodeEntity = splitFifoCodeEntitys.get(0); + + List collectCodeBackups = collectCodeBackMapper.selectList(new LambdaQueryWrapper().eq(IoCollectCodeBackup::getCode, codeEntity.getCode())); + if (CollUtil.isNotEmpty(collectCodeBackups)) { + IoCollectCodeBackup collectCodeBackup = collectCodeBackups.get(0); +// if (IntUtil.value(collectCodeBackup.getFifoSplit()) == 3) { +// throw new JsonException(500, collectCodeBackup.getCode() + "重复扫码,请盘查后重试!"); +// } + IoCollectOrderBackup collectOrderBackup = collectOrderBackupMapper.selectOne(new LambdaQueryWrapper().eq(IoCollectOrderBackup::getBillNo, collectCodeBackup.getBillNo())); + if (IntUtil.value(collectOrderBackup.getUploadStatus()) == 2) { + // 单据已被上传至医保 ---- 取当前库存的码替换至已完成单的码,并退库,以当前的码为退库单的码,并生成替换日志 + IoSplitFifoCodeEntity splitFifoCodeEntity = removeInvByCode(ioSplitFifoCodeEntity); + if (splitFifoCodeEntity == null) { + throw new JsonException(500, "工位存量不足!"); } - IoCollectOrderBackup collectOrderBackup = collectOrderBackupMapper.selectOne(new LambdaQueryWrapper().eq(IoCollectOrderBackup::getBillNo, collectCodeBackup.getBillNo())); - - if (IntUtil.value(collectOrderBackup.getUploadStatus()) == 2) { - // 单据已被上传至医保 ---- 取当前库存的码替换至已完成单的码,并退库,以当前的码为退库单的码,并生成替换日志 - IoSplitFifoCodeEntity splitFifoCodeEntity = removeInvByCode(ioSplitFifoCodeEntity); - if (splitFifoCodeEntity == null) { - throw new JsonException(500, "工位存量不足!"); - } - + IoCollectErrorLog ioCollectErrorLog = IoCollectErrorLog.builder().orderId(codeEntity.getOrderId()).autoCode(splitFifoCodeEntity.getCode()).manuCode(codeEntity.getCode()).type(4) //退货已上传医保替换码 + .updateTime(new Date()).build(); + collectErrorLogMapper.insert(ioCollectErrorLog); + collectCodeBackup.setCode(splitFifoCodeEntity.getCode()); + collectCodeBackMapper.updateById(collectCodeBackup); - IoCollectErrorLog ioCollectErrorLog = IoCollectErrorLog.builder().orderId(codeEntity.getOrderId()).autoCode(splitFifoCodeEntity.getCode()).manuCode(ioSplitFifoCodeEntity.getCode()).type(4) //退货已上传医保替换码 - .updateTime(new Date()).build(); - collectErrorLogMapper.insert(ioCollectErrorLog); - collectCodeBackup.setCode(splitFifoCodeEntity.getCode()); - collectCodeBackMapper.updateById(collectCodeBackup); - - // 若已完成单已上传医保,则当前已完成单的码就与医保实际已上传的码不匹配; - // 解决方案1: 调用医保接口删除当前单据,并重新把最新的单据上传; + // 若已完成单已上传医保,则当前已完成单的码就与医保实际已上传的码不匹配; + // 解决方案1: 调用医保接口删除当前单据,并重新把最新的单据上传; - // 解决方案2: 不管,保留替换记录 + // 解决方案2: 不管,保留替换记录 - } else { - //单据未上传医保,上传医保失败 - IoSplitFifoCodeEntity splitFifoCodeEntity = removeInvByCode(ioSplitFifoCodeEntity); - if (splitFifoCodeEntity == null) { - throw new JsonException(500, "工位存量不足!"); - } - IoCollectErrorLog ioCollectErrorLog = IoCollectErrorLog.builder().orderId(codeEntity.getOrderId()).autoCode(splitFifoCodeEntity.getCode()).manuCode(codeEntity.getCode()).type(3) //退货未上传医保替换码 - .updateTime(new Date()).build(); - collectErrorLogMapper.insert(ioCollectErrorLog); - //替换已完成单据的码 - collectCodeBackup.setCode(splitFifoCodeEntity.getCode()); - collectCodeBackMapper.updateById(collectCodeBackup); + } else { + //单据未上传医保,上传医保失败 + IoSplitFifoCodeEntity splitFifoCodeEntity = removeInvByCode(ioSplitFifoCodeEntity); + if (splitFifoCodeEntity == null) { + throw new JsonException(500, "工位存量不足!"); } + IoCollectErrorLog ioCollectErrorLog = IoCollectErrorLog.builder().orderId(codeEntity.getOrderId()).autoCode(splitFifoCodeEntity.getCode()).manuCode(codeEntity.getCode()).type(3) //退货未上传医保替换码 + .updateTime(new Date()).build(); + collectErrorLogMapper.insert(ioCollectErrorLog); + //替换已完成单据的码 + collectCodeBackup.setCode(splitFifoCodeEntity.getCode()); + collectCodeBackMapper.updateById(collectCodeBackup); } - } + } diff --git a/src/main/java/com/glxp/api/service/inout/IoSplitFifoInvService.java b/src/main/java/com/glxp/api/service/inout/IoSplitFifoInvService.java index 72d9b0846..a36f66540 100644 --- a/src/main/java/com/glxp/api/service/inout/IoSplitFifoInvService.java +++ b/src/main/java/com/glxp/api/service/inout/IoSplitFifoInvService.java @@ -13,10 +13,7 @@ import com.glxp.api.dao.inout.IoSplitFifoInvMapper; import com.glxp.api.entity.basic.SysWorkplaceLayer; import com.glxp.api.entity.basic.SysWorkplacePutRel; import com.glxp.api.entity.basic.SysWorkplaceQueue; -import com.glxp.api.entity.collect.IoCollectCodeBackup; -import com.glxp.api.entity.collect.IoCollectErrorLog; -import com.glxp.api.entity.collect.IoCollectOrderBackup; -import com.glxp.api.entity.collect.IoSplitFifoInvRel; +import com.glxp.api.entity.collect.*; import com.glxp.api.entity.inout.*; import com.glxp.api.exception.JsonException; import com.glxp.api.req.basic.SysWorkplaceLayerRequest; @@ -28,6 +25,7 @@ import com.glxp.api.service.basic.SysWorkplaceDocumentService; import com.glxp.api.service.basic.SysWorkplaceLayerService; import com.glxp.api.service.basic.SysWorkplaceQueueService; import com.glxp.api.service.basic.UdiRelevanceService; +import com.glxp.api.service.collect.IoCollectSetService; import com.glxp.api.service.collect.IoSplitFifoInvRelService; import com.glxp.api.service.thrsys.SysWorkplacePutRelService; import com.glxp.api.util.IntUtil; @@ -226,58 +224,62 @@ public class IoSplitFifoInvService extends ServiceImpl codeList, Long workPlaceCode) { + public void removeInv(List codeList, IoOrderEntity orderEntity) { List splitCodeEntities = new ArrayList<>(); + IoCollectSet collectSet = collectSetService.getSet(); if (CollUtil.isNotEmpty(codeList)) { for (IoCodeEntity codeEntity : codeList) { - IoSplitFifoCodeEntity ioSplitFifoCodeEntity = splitFifoCodeService.findByCode(codeEntity.getCode(), workPlaceCode); - - - - if (StrUtil.isEmpty(codeEntity.getSerialNo())) { - if (ioSplitFifoCodeEntity != null) { - ioSplitFifoCodeEntity.setScanCount(IntUtil.value(ioSplitFifoCodeEntity.getScanCount()) - IntUtil.value(codeEntity.getCount())); - ioSplitFifoCodeEntity.setTotalCount(IntUtil.value(ioSplitFifoCodeEntity.getTotalCount()) - IntUtil.value(codeEntity.getReCount())); - ioSplitFifoCodeEntity.setUpdateTime(new Date()); - splitFifoCodeService.updateById(ioSplitFifoCodeEntity); - IoSplitFifoInv splitFifoInv = findByFifoCode(ioSplitFifoCodeEntity); - if (splitFifoInv != null) { - splitFifoInv.setOutCount(IntUtil.value(splitFifoInv.getOutCount()) + IntUtil.value(codeEntity.getReCount())); - splitFifoInv.setOutCodeCount(IntUtil.value(splitFifoInv.getOutCodeCount()) + IntUtil.value(codeEntity.getCount())); - splitFifoInv.setReCount(IntUtil.value(splitFifoInv.getInCount()) - IntUtil.value(codeEntity.getReCount())); - splitFifoInv.setReCodeCount(IntUtil.value(splitFifoInv.getInCodeCount()) - IntUtil.value(splitFifoInv.getOutCodeCount())); - splitFifoInv.setAvailableCount(IntUtil.value(splitFifoInv.getInCount()) - IntUtil.value(splitFifoInv.getOutCount()) - IntUtil.value(splitFifoInv.getLockCount())); - updateById(splitFifoInv); + IoSplitFifoCodeEntity ioSplitFifoCodeEntity = splitFifoCodeService.findByCode(codeEntity.getCode(), orderEntity.getWorkPlaceCode()); + if (ioSplitFifoCodeEntity == null && IntUtil.value(collectSet.getConflictReturn())) { + ioSplitCodeService.workReturnReplace(codeEntity, orderEntity.getWorkPlaceCode()); + } else { + //退库扫码冲突判断 + if (StrUtil.isEmpty(codeEntity.getSerialNo())) { + if (ioSplitFifoCodeEntity != null) { + ioSplitFifoCodeEntity.setScanCount(IntUtil.value(ioSplitFifoCodeEntity.getScanCount()) - IntUtil.value(codeEntity.getCount())); + ioSplitFifoCodeEntity.setTotalCount(IntUtil.value(ioSplitFifoCodeEntity.getTotalCount()) - IntUtil.value(codeEntity.getReCount())); + ioSplitFifoCodeEntity.setUpdateTime(new Date()); + splitFifoCodeService.updateById(ioSplitFifoCodeEntity); + IoSplitFifoInv splitFifoInv = findByFifoCode(ioSplitFifoCodeEntity); + if (splitFifoInv != null) { + splitFifoInv.setOutCount(IntUtil.value(splitFifoInv.getOutCount()) + IntUtil.value(codeEntity.getReCount())); + splitFifoInv.setOutCodeCount(IntUtil.value(splitFifoInv.getOutCodeCount()) + IntUtil.value(codeEntity.getCount())); + splitFifoInv.setReCount(IntUtil.value(splitFifoInv.getInCount()) - IntUtil.value(codeEntity.getReCount())); + splitFifoInv.setReCodeCount(IntUtil.value(splitFifoInv.getInCodeCount()) - IntUtil.value(splitFifoInv.getOutCodeCount())); + splitFifoInv.setAvailableCount(IntUtil.value(splitFifoInv.getInCount()) - IntUtil.value(splitFifoInv.getOutCount()) - IntUtil.value(splitFifoInv.getLockCount())); + updateById(splitFifoInv); + } + if (ioSplitFifoCodeEntity.getScanCount() == 0) { + splitFifoCodeService.removeById(ioSplitFifoCodeEntity); + } } - if (ioSplitFifoCodeEntity.getScanCount() == 0) { - splitFifoCodeService.removeById(ioSplitFifoCodeEntity); + } else { + if (ioSplitFifoCodeEntity != null) splitCodeEntities.add(ioSplitFifoCodeEntity); + splitFifoCodeService.removeBatchByIds(splitCodeEntities); + for (IoSplitFifoCodeEntity tempEntity : splitCodeEntities) { + IoSplitFifoInv splitFifoInv = findByFifoCode(tempEntity); + if (splitFifoInv != null) { + splitFifoInv.setOutCount(IntUtil.value(splitFifoInv.getOutCount()) + IntUtil.value(tempEntity.getTotalCount())); + splitFifoInv.setOutCodeCount(IntUtil.value(splitFifoInv.getOutCodeCount()) + 1); + splitFifoInv.setReCount(IntUtil.value(splitFifoInv.getInCount()) - IntUtil.value(splitFifoInv.getOutCount())); + splitFifoInv.setReCodeCount(IntUtil.value(splitFifoInv.getInCodeCount()) - IntUtil.value(splitFifoInv.getOutCodeCount())); + splitFifoInv.setAvailableCount(IntUtil.value(splitFifoInv.getInCount()) - IntUtil.value(splitFifoInv.getOutCount()) - IntUtil.value(splitFifoInv.getLockCount())); + updateById(splitFifoInv); + } } } - } else { - if (ioSplitFifoCodeEntity != null) splitCodeEntities.add(ioSplitFifoCodeEntity); } + } } - splitFifoCodeService.removeBatchByIds(splitCodeEntities); - for (IoSplitFifoCodeEntity ioSplitFifoCodeEntity : splitCodeEntities) { - IoSplitFifoInv splitFifoInv = findByFifoCode(ioSplitFifoCodeEntity); - if (splitFifoInv != null) { - splitFifoInv.setOutCount(IntUtil.value(splitFifoInv.getOutCount()) + IntUtil.value(ioSplitFifoCodeEntity.getTotalCount())); - splitFifoInv.setOutCodeCount(IntUtil.value(splitFifoInv.getOutCodeCount()) + 1); - splitFifoInv.setReCount(IntUtil.value(splitFifoInv.getInCount()) - IntUtil.value(splitFifoInv.getOutCount())); - splitFifoInv.setReCodeCount(IntUtil.value(splitFifoInv.getInCodeCount()) - IntUtil.value(splitFifoInv.getOutCodeCount())); - splitFifoInv.setAvailableCount(IntUtil.value(splitFifoInv.getInCount()) - IntUtil.value(splitFifoInv.getOutCount()) - IntUtil.value(splitFifoInv.getLockCount())); - updateById(splitFifoInv); - } - } + } diff --git a/src/main/resources/schemas/schema_v2.4.sql b/src/main/resources/schemas/schema_v2.4.sql index abcf94a11..40ad2360a 100644 --- a/src/main/resources/schemas/schema_v2.4.sql +++ b/src/main/resources/schemas/schema_v2.4.sql @@ -5590,6 +5590,15 @@ CALL Pro_Temp_ColumnWork('io_collect_set', 'delayTageCode', 1); +CALL Pro_Temp_ColumnWork('io_collect_set', 'conflictScan', + 'tinyint NULL DEFAULT NULL COMMENT ''是否启用扫码冲突替换:1:是;0:否''', + 1); + +CALL Pro_Temp_ColumnWork('io_collect_set', 'conflictReturn', + 'tinyint NULL DEFAULT NULL COMMENT ''是否启用退货扫码冲突替换:1:是;0:否''', + 1); + + CREATE TABLE IF NOT EXISTS `yb_uploading_log` ( `id` int NOT NULL AUTO_INCREMENT, `ybParam` text CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci COMMENT '医保入参',