From 9845a541a24be1c2cffd6d20e86443033c76dfb3 Mon Sep 17 00:00:00 2001 From: wangwei <1610949092@qq.com> Date: Thu, 9 Jan 2025 12:01:04 +0800 Subject: [PATCH] =?UTF-8?q?1/9=20=E7=A0=81=E6=A0=A1=E9=AA=8C=E4=BB=A3?= =?UTF-8?q?=E7=A0=81=E4=BC=98=E5=8C=961.0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../collect/IoCollectCodeBackService.java | 215 ++++++++++-------- 1 file changed, 117 insertions(+), 98 deletions(-) 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 c5835ffa0..8b3450a90 100644 --- a/src/main/java/com/glxp/api/service/collect/IoCollectCodeBackService.java +++ b/src/main/java/com/glxp/api/service/collect/IoCollectCodeBackService.java @@ -32,6 +32,7 @@ import com.glxp.api.util.udi.FilterUdiUtils; import org.apache.bcel.classfile.Code; import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; +import org.springframework.util.StringUtils; import javax.annotation.Resource; import java.util.ArrayList; @@ -81,6 +82,7 @@ public class IoCollectCodeBackService extends ServiceImpl collectOrderBizResponses = ioCollectOrderBizBackupService.filterList(collectOrderBizRequest); + // 判断传入的校验码情况 + if (StringUtils.hasText(filterCodeRequest.getCode())) { + return handleSingleCode(filterCodeRequest); + } else { + return handleCodeList(filterCodeRequest); + } + } - 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(500); - response.setMessage("追溯码校验校验超出"); - return response; - } + + + + private BaseResponse handleSingleCode(IoCollectCodeRequest filterCodeRequest) { + // 检查校验码是否已被其他单据校验 + IoCollectOrderCheckCode existingCode = getExistingCheckCode(filterCodeRequest.getCode()); + if (existingCode!= null) { + return ResultVOUtils.error(500, "该追溯码已被其他单据校验"); + } + + // 校验是否本单产品 + UdiEntity udiEntity = FilterUdiUtils.getUdi(filterCodeRequest.getCode()); + UdiRelevanceResponse udiRelevanceResponse = udiRelevanceService.selectByNameCode(udiEntity.getUdi()); + IoCollectOrderBizBackup collectOrderBizBackup = checkProduct(filterCodeRequest.getBillNo(), udiEntity); + if (collectOrderBizBackup == null) { + BaseResponse response = new BaseResponse(); + response.setData(filterCodeRequest.getCode()); + response.setCode(500); + response.setMessage("非此单产品"); + return response; + } + + // 校验扫码次数是否超出 + Integer checkCount = ioCollectOrderCheckCodeService.getCountByRelIdAndBillNo(udiRelevanceResponse.getId(), filterCodeRequest.getBillNo()); + if (checkCount >= collectOrderBizBackup.getScanCount()) { + return ResultVOUtils.error(500, "追溯码数量超出"); + } + IoCollectCodeBackup ioCollectCodeBackup = getIoCollectCodeBackup(filterCodeRequest.getBillNo(), filterCodeRequest.getCode()); + if (ioCollectCodeBackup == null) { + BaseResponse response = new BaseResponse(); + response.setData(filterCodeRequest.getCode()); + response.setCode(503); + response.setMessage("追溯码不存在"); + return response; + } + + udiEntity.setCode(filterCodeRequest.getCode()); + AddEnterCodeResponse addEnterCodeResponse = setAddEnterCodeResponse(udiEntity, udiRelevanceResponse); + setOrderCheckStatus(ioCollectCodeBackup); + return ResultVOUtils.success(addEnterCodeResponse); + } + + private BaseResponse handleCodeList(IoCollectCodeRequest filterCodeRequest) { + List vailCodeResultResponses = new ArrayList<>(); + for (String code : filterCodeRequest.getCodeList()) { + VailCodeResultResponse vailCodeResultResponse = new VailCodeResultResponse(); + vailCodeResultResponse.setCode(code); + // 检查校验码是否已被其他单据校验 + IoCollectOrderCheckCode existingCode = getExistingCheckCode(code); + if (existingCode!= null) { + vailCodeResultResponse.setStatus(2); + vailCodeResultResponse.setErrMsg("该追溯码已被单据校验"); + vailCodeResultResponses.add(vailCodeResultResponse); + continue; } - //校验是否本单产品 - UdiEntity udiEntity = FilterUdiUtils.getUdi(filterCodeRequest.getCode()); + + UdiEntity udiEntity = FilterUdiUtils.getUdi(code); + UdiRelevanceResponse udiRelevanceResponse = udiRelevanceService.selectByNameCode(udiEntity.getUdi()); + // 校验是否本单产品 IoCollectOrderBizBackup collectOrderBizBackup = checkProduct(filterCodeRequest.getBillNo(), udiEntity); if (collectOrderBizBackup == null) { - BaseResponse response = new BaseResponse(); - response.setData(filterCodeRequest.getCode()); - response.setCode(500); - response.setMessage("非此单产品"); - return response; - } - IoCollectCodeBackup ioCollectCodeBackup = ioCollectCodeBackMapper.selectOne(new LambdaQueryWrapper() - .eq(IoCollectCodeBackup::getBillNo, filterCodeRequest.getBillNo()) - .eq(IoCollectCodeBackup::getCode, filterCodeRequest.getCode())); - if (ioCollectCodeBackup == null) { - BaseResponse response = new BaseResponse(); - response.setData(filterCodeRequest.getCode()); - response.setCode(503); - response.setMessage("追溯码不存在"); - return response; + vailCodeResultResponse.setStatus(4); + vailCodeResultResponse.setErrMsg("非此单产品"); + vailCodeResultResponses.add(vailCodeResultResponse); + continue; } + // 校验扫码次数相关逻辑 + boolean isScanCountExceeded = checkScanCountExceeded(filterCodeRequest, udiRelevanceResponse, code); + if (isScanCountExceeded) { + vailCodeResultResponse.setStatus(3); + vailCodeResultResponse.setErrMsg("追溯码校验校验超出"); + vailCodeResultResponses.add(vailCodeResultResponse); + continue; + } - UdiRelevanceResponse udiRelevanceResponse = udiRelevanceService.selectByNameCode(udiEntity.getUdi()); - udiEntity.setCode(filterCodeRequest.getCode()); - AddEnterCodeResponse addEnterCodeResponse = setAddEnterCodeResponse(udiEntity, udiRelevanceResponse); - 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; - - //扫入的校验码全是没有没有的 导致 checkCount 一直为0 - for (CollectOrderBizResponse collectOrderBizResponse : collectOrderBizResponses) { - UdiRelevanceResponse udiRelevanceResponse = udiRelevanceService.selectByNameCode(collectOrderBizResponse.getNameCode()); - Integer checkCount = ioCollectOrderCheckCodeService.getCountByRelIdAndBillNo(udiRelevanceResponse.getId(), filterCodeRequest.getBillNo()); - if (checkCount == collectOrderBizResponse.getScanCount()) { - 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)); - if (ioCollectCodeBackup != null) { - vailCodeResultResponse.setStatus(1); - vailCodeResultResponse.setCode(code); - vailCodeResultResponse.setSucMsg("校验成功"); - vailCodeResultResponses.add(vailCodeResultResponse); - //校验成功 加入校验表 - setOrderCheckStatus(ioCollectCodeBackup); - } else { - vailCodeResultResponse.setStatus(5); - vailCodeResultResponse.setCode(code); - vailCodeResultResponse.setErrMsg("追溯码不存在"); - vailCodeResultResponses.add(vailCodeResultResponse); - } + IoCollectCodeBackup ioCollectCodeBackup = getIoCollectCodeBackup(filterCodeRequest.getBillNo(), code); + if (ioCollectCodeBackup!= null) { + vailCodeResultResponse.setStatus(1); + vailCodeResultResponse.setSucMsg("校验成功"); + vailCodeResultResponses.add(vailCodeResultResponse); + // 校验成功 加入校验表 + setOrderCheckStatus(ioCollectCodeBackup); + } else { + vailCodeResultResponse.setStatus(5); + vailCodeResultResponse.setErrMsg("追溯码不存在"); + vailCodeResultResponses.add(vailCodeResultResponse); } - return ResultVOUtils.success(vailCodeResultResponses); } + return ResultVOUtils.success(vailCodeResultResponses); + } + + private IoCollectOrderCheckCode getExistingCheckCode(String code) { + return ioCollectOrderCheckCodeService.getOne(new LambdaQueryWrapper().eq(IoCollectOrderCheckCode::getCode, code)); } + private IoCollectCodeBackup getIoCollectCodeBackup(String billNo, String code) { + return ioCollectCodeBackMapper.selectOne(new LambdaQueryWrapper() + .eq(IoCollectCodeBackup::getBillNo, billNo) + .eq(IoCollectCodeBackup::getCode, code)); + } + private boolean checkScanCountExceeded(IoCollectCodeRequest filterCodeRequest, UdiRelevanceResponse udiRelevanceResponse, String code) { + CollectOrderBizRequest collectOrderBizRequest = new CollectOrderBizRequest(); + collectOrderBizRequest.setOrderIdFk(filterCodeRequest.getBillNo()); + collectOrderBizRequest.setRelId(udiRelevanceResponse.getId()); + List collectOrderBizResponses = ioCollectOrderBizBackupService.filterList(collectOrderBizRequest); + if (collectOrderBizResponses.isEmpty()) { + return false; + } + CollectOrderBizResponse collectOrderBizResponse = collectOrderBizResponses.get(0); + if (udiRelevanceResponse.getId().equals(collectOrderBizResponse.getRelId())){ + if ( filterCodeRequest.getCodeList().size() > collectOrderBizResponse.getScanCount()){ + throw new JsonException(500,"追溯码数量超出"); + } + } + Integer checkCount = ioCollectOrderCheckCodeService.getCountByRelIdAndBillNo(udiRelevanceResponse.getId(), filterCodeRequest.getBillNo()); + return checkCount == collectOrderBizResponse.getScanCount(); + } public AddEnterCodeResponse setAddEnterCodeResponse(UdiEntity udiEntity, UdiRelevanceResponse checkUdi) { AddEnterCodeResponse addEnterCodeResponse = new AddEnterCodeResponse(); BeanUtils.copyProperties(udiEntity, addEnterCodeResponse);