|
|
|
@ -32,13 +32,11 @@ 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.transaction.annotation.Transactional;
|
|
|
|
|
import org.springframework.util.StringUtils;
|
|
|
|
|
|
|
|
|
|
import javax.annotation.Resource;
|
|
|
|
|
import java.util.ArrayList;
|
|
|
|
|
import java.util.Collections;
|
|
|
|
|
import java.util.Date;
|
|
|
|
|
import java.util.List;
|
|
|
|
|
import java.util.*;
|
|
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
|
|
|
|
@Service
|
|
|
|
@ -62,6 +60,11 @@ public class IoCollectCodeBackService extends ServiceImpl<IoCollectCodeBackMappe
|
|
|
|
|
@Resource
|
|
|
|
|
IoSplitFifoCodeService ioSplitFifoCodeService;
|
|
|
|
|
|
|
|
|
|
@Resource
|
|
|
|
|
IoCollectOrderCodeAutoService ioCollectOrderCodeAutoService;
|
|
|
|
|
|
|
|
|
|
@Resource
|
|
|
|
|
IoCollectOrderCodeManService ioCollectOrderCodeManService;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 追溯码查询
|
|
|
|
@ -122,8 +125,9 @@ public class IoCollectCodeBackService extends ServiceImpl<IoCollectCodeBackMappe
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 校验扫码次数是否超出
|
|
|
|
|
Integer scanCount = getScanCount(filterCodeRequest,udiRelevanceResponse);
|
|
|
|
|
Integer checkCount = ioCollectOrderCheckCodeService.getCountByRelIdAndBillNo(udiRelevanceResponse.getId(), filterCodeRequest.getBillNo());
|
|
|
|
|
if (checkCount >= collectOrderBizBackup.getScanCount()) {
|
|
|
|
|
if (checkCount >= scanCount) {
|
|
|
|
|
return ResultVOUtils.error(500, "追溯码数量超出");
|
|
|
|
|
}
|
|
|
|
|
IoCollectCodeBackup ioCollectCodeBackup = getIoCollectCodeBackup(filterCodeRequest.getBillNo(), filterCodeRequest.getCode());
|
|
|
|
@ -167,7 +171,7 @@ public class IoCollectCodeBackService extends ServiceImpl<IoCollectCodeBackMappe
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 校验扫码次数相关逻辑
|
|
|
|
|
boolean isScanCountExceeded = checkScanCountExceeded(filterCodeRequest, udiRelevanceResponse, code);
|
|
|
|
|
boolean isScanCountExceeded = checkScanCountExceeded(filterCodeRequest, udiRelevanceResponse, collectOrderBizBackup);
|
|
|
|
|
if (isScanCountExceeded) {
|
|
|
|
|
vailCodeResultResponse.setStatus(3);
|
|
|
|
|
vailCodeResultResponse.setErrMsg("追溯码校验校验超出");
|
|
|
|
@ -202,22 +206,15 @@ public class IoCollectCodeBackService extends ServiceImpl<IoCollectCodeBackMappe
|
|
|
|
|
.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<CollectOrderBizResponse> 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()){
|
|
|
|
|
private boolean checkScanCountExceeded(IoCollectCodeRequest filterCodeRequest, UdiRelevanceResponse udiRelevanceResponse, IoCollectOrderBizBackup collectOrderBizBackup) {
|
|
|
|
|
Integer scanCount = getScanCount(filterCodeRequest,udiRelevanceResponse);
|
|
|
|
|
// if (udiRelevanceResponse.getId().equals(collectOrderBizBackup.getRelId())){
|
|
|
|
|
if ( filterCodeRequest.getCodeList().size() > scanCount){
|
|
|
|
|
throw new JsonException(500,"追溯码数量超出");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
// }
|
|
|
|
|
Integer checkCount = ioCollectOrderCheckCodeService.getCountByRelIdAndBillNo(udiRelevanceResponse.getId(), filterCodeRequest.getBillNo());
|
|
|
|
|
return checkCount == collectOrderBizResponse.getScanCount();
|
|
|
|
|
return checkCount == scanCount;
|
|
|
|
|
}
|
|
|
|
|
public AddEnterCodeResponse setAddEnterCodeResponse(UdiEntity udiEntity, UdiRelevanceResponse checkUdi) {
|
|
|
|
|
AddEnterCodeResponse addEnterCodeResponse = new AddEnterCodeResponse();
|
|
|
|
@ -243,6 +240,14 @@ public class IoCollectCodeBackService extends ServiceImpl<IoCollectCodeBackMappe
|
|
|
|
|
return null;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public Integer getScanCount(IoCollectCodeRequest filterCodeRequest,UdiRelevanceResponse udiRelevanceResponse){
|
|
|
|
|
Integer scanCount = 0;
|
|
|
|
|
Integer autoScanCount = ioCollectOrderCodeAutoService.getScanCount(filterCodeRequest.getBillNo(),udiRelevanceResponse.getId());
|
|
|
|
|
Integer manScanCount = ioCollectOrderCodeManService.getScanCount(filterCodeRequest.getBillNo(),udiRelevanceResponse.getId());
|
|
|
|
|
scanCount = Optional.ofNullable(autoScanCount).orElse(0) + Optional.ofNullable(manScanCount).orElse(0);
|
|
|
|
|
return scanCount;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public BaseResponse replaceScanCode(IoCollectCodeRequest filterCodeRequest) {
|
|
|
|
|
IoCollectOrderBackup orderBackup = ioCollectOrderBackupService.getByBillNo(filterCodeRequest.getBillNo());
|
|
|
|
@ -298,6 +303,7 @@ public class IoCollectCodeBackService extends ServiceImpl<IoCollectCodeBackMappe
|
|
|
|
|
save(ioCollectCodeBackup);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
|
|
public BaseResponse commitCheckCodeOrder(IoCollectCodeRequest filterCodeRequest) {
|
|
|
|
|
IoCollectOrderBackup orderBackup = ioCollectOrderBackupService.getByBillNo(filterCodeRequest.getBillNo());
|
|
|
|
|
if (orderBackup.getCheckCodeStatus() == 1) {
|
|
|
|
@ -328,7 +334,7 @@ public class IoCollectCodeBackService extends ServiceImpl<IoCollectCodeBackMappe
|
|
|
|
|
uniqueBackupsCodes.addAll(ioCollectCodeBackups1);
|
|
|
|
|
//如果有数据说明改产品已经 替换过码了需要全部校验
|
|
|
|
|
Integer checkCount = ioCollectOrderCheckCodeService.getCountByRelIdAndBillNo(udiRelevanceResponse.getId(), filterCodeRequest.getBillNo());
|
|
|
|
|
if (checkCount < collectOrderBizResponse.getScanCount()) {
|
|
|
|
|
if (checkCount < getScanCount(filterCodeRequest,udiRelevanceResponse)) {
|
|
|
|
|
return ResultVOUtils.error(500, udiRelevanceResponse.getCpmctymc() + "追溯码未校验完成");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
@ -345,17 +351,24 @@ public class IoCollectCodeBackService extends ServiceImpl<IoCollectCodeBackMappe
|
|
|
|
|
//uniqueCodes 替换掉的码
|
|
|
|
|
|
|
|
|
|
System.out.println(uniqueCodes);
|
|
|
|
|
List<String> checkCodeList = ioCollectOrderCheckCodes.stream()
|
|
|
|
|
.map(IoCollectOrderCheckCode::getCode)
|
|
|
|
|
.filter(code -> !ioCollectCodeBackups.stream()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
List<IoCollectOrderCheckCode> checkCodeList = ioCollectOrderCheckCodes.stream()
|
|
|
|
|
.filter(ioc -> !ioCollectCodeBackups.stream()
|
|
|
|
|
.filter(backup -> backup.getScanCodeCheckStatus() != null && backup.getScanCodeCheckStatus() != 3)
|
|
|
|
|
.map(IoCollectCodeBackup::getCode)
|
|
|
|
|
.anyMatch(code::equals))
|
|
|
|
|
.anyMatch(ioc.getCode()::equals))
|
|
|
|
|
.collect(Collectors.toList());
|
|
|
|
|
|
|
|
|
|
System.out.println(checkCodeList);
|
|
|
|
|
// 对比原始码表多出来的码 checkCodeList
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//检查码是否存在队列如果存在移除
|
|
|
|
|
for (String code : checkCodeList) {
|
|
|
|
|
IoSplitFifoCodeEntity ioSplitFifoCodeEntity = ioSplitFifoCodeService.getOne(new LambdaQueryWrapper<IoSplitFifoCodeEntity>().eq(IoSplitFifoCodeEntity::getCode, code));
|
|
|
|
|
for (IoCollectOrderCheckCode checkCode : checkCodeList) {
|
|
|
|
|
IoSplitFifoCodeEntity ioSplitFifoCodeEntity = ioSplitFifoCodeService.getOne(new LambdaQueryWrapper<IoSplitFifoCodeEntity>().eq(IoSplitFifoCodeEntity::getCode, checkCode.getCode()));
|
|
|
|
|
if (ioSplitFifoCodeEntity != null) {
|
|
|
|
|
ioSplitFifoCodeService.removeById(ioSplitFifoCodeEntity);
|
|
|
|
|
}
|
|
|
|
@ -364,10 +377,14 @@ public class IoCollectCodeBackService extends ServiceImpl<IoCollectCodeBackMappe
|
|
|
|
|
boolean b = removeBatchByIds(uniqueBackupsCodes);
|
|
|
|
|
ArrayList<IoCollectCodeBackup> collectCodeBackups = new ArrayList<>();
|
|
|
|
|
for (IoCollectOrderCheckCode ioCollectOrderCheckCode : ioCollectOrderCheckCodes) {
|
|
|
|
|
IoCollectCodeBackup ioCollectCodeBackup = new IoCollectCodeBackup();
|
|
|
|
|
BeanUtils.copyProperties(ioCollectOrderCheckCode, ioCollectCodeBackup);
|
|
|
|
|
ioCollectCodeBackup.setScanCodeCheckStatus(1);
|
|
|
|
|
collectCodeBackups.add(ioCollectCodeBackup);
|
|
|
|
|
IoCollectCodeBackup one = getOne(new LambdaQueryWrapper<IoCollectCodeBackup>().eq(IoCollectCodeBackup::getCode, ioCollectOrderCheckCode.getCode()));
|
|
|
|
|
if (one == null){
|
|
|
|
|
IoCollectCodeBackup ioCollectCodeBackup = new IoCollectCodeBackup();
|
|
|
|
|
BeanUtils.copyProperties(ioCollectOrderCheckCode, ioCollectCodeBackup);
|
|
|
|
|
ioCollectCodeBackup.setId(null);
|
|
|
|
|
ioCollectCodeBackup.setScanCodeCheckStatus(1);
|
|
|
|
|
collectCodeBackups.add(ioCollectCodeBackup);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
saveBatch(collectCodeBackups);
|
|
|
|
|
orderBackup.setCheckCodeStatus(1);
|
|
|
|
|