From 7520e93a91a7837ce22f7145731da0c328147265 Mon Sep 17 00:00:00 2001 From: wangwei <1610949092@qq.com> Date: Fri, 13 Dec 2024 18:39:18 +0800 Subject: [PATCH] =?UTF-8?q?12/13=20=E7=A0=81=E6=A0=A1=E9=AA=8C=E8=B0=83?= =?UTF-8?q?=E6=95=B41.0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../IoCollectCodeBackupController.java | 18 ++- .../IoCollectOrderBackupController.java | 3 +- .../entity/collect/IoCollectCodeBackup.java | 7 + .../api/req/collect/IoCollectCodeRequest.java | 5 + .../res/collect/IoCollectCodeResponse.java | 2 + .../collect/IoCollectCodeBackService.java | 153 ++++++++++++++---- .../collect/IoCollectOrderBackupService.java | 34 +++- .../collect/IoCollectCodeBackMapper.xml | 3 + src/main/resources/schemas/schema_v2.4.sql | 4 +- 9 files changed, 188 insertions(+), 41 deletions(-) diff --git a/src/main/java/com/glxp/api/controller/collect/IoCollectCodeBackupController.java b/src/main/java/com/glxp/api/controller/collect/IoCollectCodeBackupController.java index 8e3efb802..db6484898 100644 --- a/src/main/java/com/glxp/api/controller/collect/IoCollectCodeBackupController.java +++ b/src/main/java/com/glxp/api/controller/collect/IoCollectCodeBackupController.java @@ -38,6 +38,7 @@ import java.util.List; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.Future; +import java.util.stream.Collectors; @Slf4j @@ -127,11 +128,26 @@ public class IoCollectCodeBackupController extends BaseController { @GetMapping("/udiwms/basic/collect/ioCollectCode/endList") public BaseResponse filterList(IoCollectCodeRequest request) { IoCollectOrderBackup order = ioCollectOrderBackupService.getByBillNo(request.getBillNo()); - if (order.getCheckCodeStatus() != 1){ + if (order.getCheckCodeStatus() != 1 && request.getSelectType() == 2){ List list = ioCollectOrderCheckCodeService.list(new LambdaQueryWrapper().eq(IoCollectOrderCheckCode::getBillNo, request.getBillNo())); if (list.size() > 0){ ioCollectOrderCheckCodeService.removeBatchByIds(list); } + List list1 = ioCollectCodeBackService.list(new LambdaQueryWrapper().eq(IoCollectCodeBackup::getBillNo, request.getBillNo())); + List filteredList = list1.stream() + .filter(item -> item.getScanCodeCheckStatus() != null && item.getScanCodeCheckStatus() == 3) + .collect(Collectors.toList()); + if (filteredList.size() > 0){ + ioCollectCodeBackService.removeBatchByIds(filteredList); + } + List filteredList2 = list1.stream() + .filter(item ->item.getScanCodeCheckStatus() != null && item.getScanCodeCheckStatus() == 1) + .collect(Collectors.toList()); + if (filteredList2.size() > 0){ + filteredList2.forEach(item -> item.setScanCodeCheckStatus(0)); + // 调用服务层方法批量更新 + ioCollectCodeBackService.updateBatchById(filteredList2); + } } List ioCollectCodeResponses = ioCollectCodeBackService.filterList(request); for (IoCollectCodeResponse ioCollectCodeResponse : ioCollectCodeResponses){ diff --git a/src/main/java/com/glxp/api/controller/collect/IoCollectOrderBackupController.java b/src/main/java/com/glxp/api/controller/collect/IoCollectOrderBackupController.java index e604d6167..e35e34f29 100644 --- a/src/main/java/com/glxp/api/controller/collect/IoCollectOrderBackupController.java +++ b/src/main/java/com/glxp/api/controller/collect/IoCollectOrderBackupController.java @@ -88,7 +88,8 @@ public class IoCollectOrderBackupController extends BaseController { if (collectOrder == null) { return ResultVOUtils.error(500, "未找到单据"); } - List collectOrderBizResponses = ioCollectOrderBackupService.combieOrderDetail(collectOrderBizRequest); +// List collectOrderBizResponses = ioCollectOrderBackupService.combieOrderDetail(collectOrderBizRequest); + List collectOrderBizResponses = ioCollectOrderBackupService.setScanCodeOrderDetail(collectOrderBizRequest); for (CollectOrderBizResponse response : collectOrderBizResponses) { if (response.getGgxh() == null) { response.setGgxh(response.getSpec()); diff --git a/src/main/java/com/glxp/api/entity/collect/IoCollectCodeBackup.java b/src/main/java/com/glxp/api/entity/collect/IoCollectCodeBackup.java index 7aa630240..7495c78ed 100644 --- a/src/main/java/com/glxp/api/entity/collect/IoCollectCodeBackup.java +++ b/src/main/java/com/glxp/api/entity/collect/IoCollectCodeBackup.java @@ -139,6 +139,13 @@ public class IoCollectCodeBackup implements Serializable { @ApiModelProperty(value = "耗材字典外键id") private Long relId; + /** + * 校验码状态 + */ + @TableField(value = "scanCodeCheckStatus") + @ApiModelProperty(value = "码校验状态 0 or null:未校验 1:已校验 3:已替换") + private Integer scanCodeCheckStatus; + private static final long serialVersionUID = 1L; } diff --git a/src/main/java/com/glxp/api/req/collect/IoCollectCodeRequest.java b/src/main/java/com/glxp/api/req/collect/IoCollectCodeRequest.java index 3170062d7..d0386f15b 100644 --- a/src/main/java/com/glxp/api/req/collect/IoCollectCodeRequest.java +++ b/src/main/java/com/glxp/api/req/collect/IoCollectCodeRequest.java @@ -21,4 +21,9 @@ public class IoCollectCodeRequest extends ListPageRequest { private String fromCorp; private List codeList; + //1:正常查询 2:码校验查询 + private Integer selectType; + + private Long relId; + } diff --git a/src/main/java/com/glxp/api/res/collect/IoCollectCodeResponse.java b/src/main/java/com/glxp/api/res/collect/IoCollectCodeResponse.java index 5a3e3d001..0ad8df81d 100644 --- a/src/main/java/com/glxp/api/res/collect/IoCollectCodeResponse.java +++ b/src/main/java/com/glxp/api/res/collect/IoCollectCodeResponse.java @@ -111,4 +111,6 @@ public class IoCollectCodeResponse { private String expireDate; private String serialNo; private Integer scanActCount; + private Integer scanCodeCheckStatus; + } diff --git a/src/main/java/com/glxp/api/service/collect/IoCollectCodeBackService.java b/src/main/java/com/glxp/api/service/collect/IoCollectCodeBackService.java index 42e02e986..b292c3179 100644 --- a/src/main/java/com/glxp/api/service/collect/IoCollectCodeBackService.java +++ b/src/main/java/com/glxp/api/service/collect/IoCollectCodeBackService.java @@ -29,6 +29,7 @@ import com.glxp.api.service.basic.UdiProductService; import com.glxp.api.service.basic.UdiRelevanceService; import com.glxp.api.service.inout.IoSplitFifoCodeService; import com.glxp.api.util.udi.FilterUdiUtils; +import org.apache.bcel.classfile.Code; import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; @@ -84,12 +85,31 @@ public class IoCollectCodeBackService extends ServiceImpl().eq(IoCollectOrderCheckCode::getCode, filterCodeRequest.getCode())); - if (one != null) { - return ResultVOUtils.error(500, "该追溯码已被其他单据校验"); + if (orderBackup.getCheckCodeStatus() == 1) { + return ResultVOUtils.error(500, "该单据已校验完成"); } + //判断 + CollectOrderBizRequest collectOrderBizRequest = new CollectOrderBizRequest(); + collectOrderBizRequest.setOrderIdFk(filterCodeRequest.getBillNo()); + List collectOrderBizResponses = ioCollectOrderBizBackupService.filterList(collectOrderBizRequest); + if (StrUtil.isNotEmpty(filterCodeRequest.getCode())) { + IoCollectOrderCheckCode one = ioCollectOrderCheckCodeService.getOne(new LambdaQueryWrapper().eq(IoCollectOrderCheckCode::getCode, filterCodeRequest.getCode())); + if (one != null) { + return ResultVOUtils.error(500, "该追溯码已被其他单据校验"); + } + for (CollectOrderBizResponse collectOrderBizResponse : collectOrderBizResponses) { + UdiRelevanceResponse udiRelevanceResponse = udiRelevanceService.selectByNameCode(collectOrderBizResponse.getNameCode()); + Integer checkCount = ioCollectOrderCheckCodeService.getCountByRelIdAndBillNo(udiRelevanceResponse.getId(), filterCodeRequest.getBillNo()); + if (checkCount == collectOrderBizResponse.getScanActCount()) { + BaseResponse response = new BaseResponse(); + response.setData(filterCodeRequest.getCode()); + response.setCode(504); + response.setMessage("追溯码校验校验超出"); + return response; + } + } IoCollectCodeBackup ioCollectCodeBackup = ioCollectCodeBackMapper.selectOne(new LambdaQueryWrapper() .eq(IoCollectCodeBackup::getBillNo, filterCodeRequest.getBillNo()) .eq(IoCollectCodeBackup::getCode, filterCodeRequest.getCode())); @@ -100,14 +120,10 @@ public class IoCollectCodeBackService extends ServiceImpl ioCollectOrderBizBackups = ioCollectOrderBizBackupService.listByBillNo(filterCodeRequest.getBillNo()); - UdiEntity udiEntity = FilterUdiUtils.getUdi(filterCodeRequest.getCode()); - UdiRelevanceResponse udiRelevanceResponse; - List udiRelevanceResponses = udiRelevanceService.selectGroupByNameCode(udiEntity.getUdi(), null); - if (CollUtil.isEmpty(udiRelevanceResponses)) throw new JsonException(500, "字典不存在此产品!"); - else udiRelevanceResponse = udiRelevanceResponses.get(0); + //校验是否本单产品 - IoCollectOrderBizBackup collectOrderBizBackup = vailByBatchNo(udiRelevanceResponses, ioCollectOrderBizBackups, udiEntity); + UdiEntity udiEntity = FilterUdiUtils.getUdi(filterCodeRequest.getCode()); + IoCollectOrderBizBackup collectOrderBizBackup = checkProduct(filterCodeRequest.getBillNo(), udiEntity); if (collectOrderBizBackup == null) { BaseResponse response = new BaseResponse(); response.setData(filterCodeRequest.getCode()); @@ -115,30 +131,63 @@ public class IoCollectCodeBackService extends ServiceImpl { - ioCollectOrderCheckCodeService.save(ioCollectOrderCheckCode); -// ioCollectOrderBackupService.updateByBillNo(orderBackup); - }); + setOrderCheckStatus(ioCollectCodeBackup); + return ResultVOUtils.success(addEnterCodeResponse); } else { List vailCodeResultResponses = new ArrayList<>(); for (String code : filterCodeRequest.getCodeList()) { + VailCodeResultResponse vailCodeResultResponse = new VailCodeResultResponse(); + IoCollectOrderCheckCode one = ioCollectOrderCheckCodeService.getOne(new LambdaQueryWrapper().eq(IoCollectOrderCheckCode::getCode, code)); + if (one != null) { + vailCodeResultResponse.setStatus(2); + vailCodeResultResponse.setCode(code); + vailCodeResultResponse.setErrMsg("该追溯码已被单据校验"); + vailCodeResultResponses.add(vailCodeResultResponse); + continue; + } + boolean shouldContinue = false; + for (CollectOrderBizResponse collectOrderBizResponse : collectOrderBizResponses) { + UdiRelevanceResponse udiRelevanceResponse = udiRelevanceService.selectByNameCode(collectOrderBizResponse.getNameCode()); + Integer checkCount = ioCollectOrderCheckCodeService.getCountByRelIdAndBillNo(udiRelevanceResponse.getId(), filterCodeRequest.getBillNo()); + if (checkCount == collectOrderBizResponse.getScanActCount()) { + vailCodeResultResponse.setStatus(3); + vailCodeResultResponse.setCode(code); + vailCodeResultResponse.setErrMsg("追溯码校验校验超出"); + vailCodeResultResponses.add(vailCodeResultResponse); + shouldContinue = true; + break; // 跳出内部循环 + } + } + if (shouldContinue) { + continue; + } + //校验是否本单产品 + UdiEntity udiEntity = FilterUdiUtils.getUdi(code); + IoCollectOrderBizBackup collectOrderBizBackup = checkProduct(filterCodeRequest.getBillNo(), udiEntity); + if (collectOrderBizBackup == null) { + vailCodeResultResponse.setStatus(4); + vailCodeResultResponse.setCode(code); + vailCodeResultResponse.setErrMsg("非此单产品"); + vailCodeResultResponses.add(vailCodeResultResponse); + continue; + } IoCollectCodeBackup ioCollectCodeBackup = ioCollectCodeBackMapper.selectOne(new LambdaQueryWrapper() .eq(IoCollectCodeBackup::getBillNo, filterCodeRequest.getBillNo()) .eq(IoCollectCodeBackup::getCode, code)); - VailCodeResultResponse vailCodeResultResponse = new VailCodeResultResponse(); if (ioCollectCodeBackup != null) { vailCodeResultResponse.setStatus(1); vailCodeResultResponse.setCode(code); vailCodeResultResponse.setSucMsg("校验成功"); vailCodeResultResponses.add(vailCodeResultResponse); + //校验成功 加入校验表 + //todo 更改完成之后 需要放开注释 + setOrderCheckStatus(ioCollectCodeBackup); } else { - vailCodeResultResponse.setStatus(2); + vailCodeResultResponse.setStatus(5); vailCodeResultResponse.setCode(code); vailCodeResultResponse.setErrMsg("追溯码不存在"); vailCodeResultResponses.add(vailCodeResultResponse); @@ -149,6 +198,8 @@ public class IoCollectCodeBackService extends ServiceImpl codeList = filterCodeRequest.getCodeList(); for (String code : codeList) { filterCodeRequest.setCode(code); - response = insert(filterCodeRequest); + insert(filterCodeRequest,orderBackup); } } - return response; + return ResultVOUtils.success(orderBackup); } - public BaseResponse insert(IoCollectCodeRequest filterCodeRequest) { - IoCollectOrderBackup orderBackup = ioCollectOrderBackupService.getByBillNo(filterCodeRequest.getBillNo()); - if (orderBackup.getCheckCodeConfirm() == 0 || orderBackup.getCheckCodeConfirm() == null){ - orderBackup.setCheckCodeConfirm(1); - ioCollectOrderBackupService.updateByBillNo(orderBackup); - } + public void insert(IoCollectCodeRequest filterCodeRequest,IoCollectOrderBackup orderBackup) { IoCollectOrderCheckCode one = ioCollectOrderCheckCodeService.getOne(new LambdaQueryWrapper().eq(IoCollectOrderCheckCode::getCode, filterCodeRequest.getCode())); if (one != null) { - return ResultVOUtils.error(500, "该追溯码已被其他单据校验"); + throw new JsonException(500, "该追溯码已被其他单据校验"); } if (orderBackup == null) { - return ResultVOUtils.error(500, "订单不存在"); + throw new JsonException(500, "订单不存在"); } UdiEntity udiEntity = FilterUdiUtils.getUdi(filterCodeRequest.getCode()); if (udiEntity == null) { - return ResultVOUtils.error(500, "产品不存在"); + throw new JsonException(500, "产品不存在"); } UdiRelevanceResponse udiRelevanceResponse = udiRelevanceService.selectByNameCode(udiEntity.getUdi()); //吗替换的接口 替换哪个码 @@ -221,11 +272,18 @@ public class IoCollectCodeBackService extends ServiceImpl ioCollectCodeBackups = list(new LambdaQueryWrapper().eq(IoCollectCodeBackup::getBillNo, filterCodeRequest.getBillNo())); //已经校验码表 @@ -237,7 +295,7 @@ public class IoCollectCodeBackService extends ServiceImpl listByBillNo(String billNo) { + return ioCollectCodeBackMapper.selectList(new LambdaQueryWrapper() + .eq(IoCollectCodeBackup::getBillNo, billNo)); + } + + public IoCollectOrderBizBackup checkProduct(String billNo,UdiEntity udiEntity){ + List ioCollectOrderBizBackups = ioCollectOrderBizBackupService.listByBillNo(billNo); + List udiRelevanceResponses = udiRelevanceService.selectGroupByNameCode(udiEntity.getUdi(), null); + if (CollUtil.isEmpty(udiRelevanceResponses)) throw new JsonException(500, "字典不存在此产品!"); + //校验是否本单产品 + IoCollectOrderBizBackup collectOrderBizBackup = vailByBatchNo(udiRelevanceResponses, ioCollectOrderBizBackups, udiEntity); + return collectOrderBizBackup; + } + + private void setOrderCheckStatus(IoCollectCodeBackup ioCollectCodeBackup) { + IoCollectOrderCheckCode ioCollectOrderCheckCode = new IoCollectOrderCheckCode(); + BeanUtils.copyProperties(ioCollectCodeBackup, ioCollectOrderCheckCode); + ioCollectCodeBackup.setScanCodeCheckStatus(1); + updateById(ioCollectCodeBackup); +// orderBackup.setCheckCodeStatus(1); + ThreadUtil.execAsync(() -> { + ioCollectOrderCheckCodeService.save(ioCollectOrderCheckCode); +// ioCollectOrderBackupService.updateByBillNo(orderBackup); + }); + } } diff --git a/src/main/java/com/glxp/api/service/collect/IoCollectOrderBackupService.java b/src/main/java/com/glxp/api/service/collect/IoCollectOrderBackupService.java index cbc39fdfd..e62509c2a 100644 --- a/src/main/java/com/glxp/api/service/collect/IoCollectOrderBackupService.java +++ b/src/main/java/com/glxp/api/service/collect/IoCollectOrderBackupService.java @@ -29,16 +29,16 @@ import com.glxp.api.http.ErpBasicClient; import com.glxp.api.http.sync.SpGetHttpClient; import com.glxp.api.req.collect.CollectOrderBizRequest; import com.glxp.api.req.collect.CollectOrderRequest; +import com.glxp.api.req.collect.IoCollectCodeRequest; import com.glxp.api.req.collect.PostCollectOrderRequest; import com.glxp.api.req.inout.ReviewFinishRequest; import com.glxp.api.res.basic.BasicSkPrescribeResponse; +import com.glxp.api.res.basic.UdiRelevanceResponse; import com.glxp.api.res.collect.CollectOrderBizResponse; +import com.glxp.api.res.collect.IoCollectCodeResponse; import com.glxp.api.res.collect.IoCollectOrderResponse; import com.glxp.api.service.auth.InvWarehouseService; -import com.glxp.api.service.basic.CompanyProductRelevanceService; -import com.glxp.api.service.basic.IBasicBussinessTypeService; -import com.glxp.api.service.basic.SysWorkplaceDocumentService; -import com.glxp.api.service.basic.UdiRlSupService; +import com.glxp.api.service.basic.*; import com.glxp.api.service.inout.IoAddInoutService; import com.glxp.api.service.inout.IoCheckInoutService; import com.glxp.api.service.inout.IoOrderService; @@ -109,6 +109,9 @@ public class IoCollectOrderBackupService extends ServiceImpl filterList(CollectOrderRequest collectOrderRequest) { if (collectOrderRequest == null) { return Collections.emptyList(); @@ -445,4 +448,27 @@ public class IoCollectOrderBackupService extends ServiceImpl setScanCodeOrderDetail(CollectOrderBizRequest collectOrderBizRequest) { + List list = ioCollectOrderBizBackupService.filterList(collectOrderBizRequest); + + List ioCollectCodeBackups = ioCollectCodeBackService.listByBillNo(collectOrderBizRequest.getOrderIdFk());; + List collectOrderBizResponses = new ArrayList<>(); + for (CollectOrderBizResponse collectOrderBiz : list) { + CollectOrderBizResponse collectOrderBizResponse = new CollectOrderBizResponse(); + BeanUtils.copyProperties(collectOrderBiz, collectOrderBizResponse); + + //查询手动赋码的code + for (IoCollectCodeBackup ioCollectCodeBackup : ioCollectCodeBackups) { + UdiRelevanceResponse udiRelevanceResponse = udiRelevanceService.selectByNameCode(collectOrderBizResponse.getNameCode()); + if (ioCollectCodeBackup.getRelId().equals(udiRelevanceResponse.getId())) { + collectOrderBizResponse.setScanUdiCode(StrUtil.trimToEmpty(collectOrderBizResponse.getScanUdiCode()) + "," + ioCollectCodeBackup.getCode()); + } + } + if (StrUtil.isNotEmpty(collectOrderBizResponse.getScanUdiCode())){ + collectOrderBizResponse.setFinishUdiCode(collectOrderBizResponse.getScanUdiCode() == null ? "" : collectOrderBizResponse.getScanUdiCode().substring(1)); + } + collectOrderBizResponses.add(collectOrderBizResponse); + } + return collectOrderBizResponses; + } } diff --git a/src/main/resources/mybatis/mapper/collect/IoCollectCodeBackMapper.xml b/src/main/resources/mybatis/mapper/collect/IoCollectCodeBackMapper.xml index 7816a9b87..dd864913f 100644 --- a/src/main/resources/mybatis/mapper/collect/IoCollectCodeBackMapper.xml +++ b/src/main/resources/mybatis/mapper/collect/IoCollectCodeBackMapper.xml @@ -32,6 +32,9 @@ AND iccb.billNo LIKE concat('%', #{billNo}, '%') + + AND iccb.relId = #{relId} + AND iccb.fromType LIKE concat('%', #{fromType}, '%') diff --git a/src/main/resources/schemas/schema_v2.4.sql b/src/main/resources/schemas/schema_v2.4.sql index ffdb87b44..64e384d1f 100644 --- a/src/main/resources/schemas/schema_v2.4.sql +++ b/src/main/resources/schemas/schema_v2.4.sql @@ -4943,4 +4943,6 @@ CALL Pro_Temp_ColumnWork('io_collect_order_backup', 'checkCodeConfirm', ' tinyint NULL DEFAULT b''0''COMMENT ''是否需要扫码校验 0:不需要校验 1:需要校验''', 1); - +CALL Pro_Temp_ColumnWork('io_collect_code_backup', 'scanCodeCheckStatus', + ' tinyint NULL DEFAULT b''0''COMMENT ''码校验状态 0 or null:未校验 1:已校验 3:已替换''', + 1);