|
|
|
@ -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<IoCollectCodeBackMappe
|
|
|
|
|
if (orderBackup == null) {
|
|
|
|
|
return ResultVOUtils.error(500, "订单不存在");
|
|
|
|
|
}
|
|
|
|
|
IoCollectOrderCheckCode one = ioCollectOrderCheckCodeService.getOne(new LambdaQueryWrapper<IoCollectOrderCheckCode>().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<CollectOrderBizResponse> collectOrderBizResponses = ioCollectOrderBizBackupService.filterList(collectOrderBizRequest);
|
|
|
|
|
|
|
|
|
|
if (StrUtil.isNotEmpty(filterCodeRequest.getCode())) {
|
|
|
|
|
IoCollectOrderCheckCode one = ioCollectOrderCheckCodeService.getOne(new LambdaQueryWrapper<IoCollectOrderCheckCode>().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<IoCollectCodeBackup>()
|
|
|
|
|
.eq(IoCollectCodeBackup::getBillNo, filterCodeRequest.getBillNo())
|
|
|
|
|
.eq(IoCollectCodeBackup::getCode, filterCodeRequest.getCode()));
|
|
|
|
@ -100,14 +120,10 @@ public class IoCollectCodeBackService extends ServiceImpl<IoCollectCodeBackMappe
|
|
|
|
|
response.setMessage("追溯码不存在");
|
|
|
|
|
return response;
|
|
|
|
|
}
|
|
|
|
|
List<IoCollectOrderBizBackup> ioCollectOrderBizBackups = ioCollectOrderBizBackupService.listByBillNo(filterCodeRequest.getBillNo());
|
|
|
|
|
UdiEntity udiEntity = FilterUdiUtils.getUdi(filterCodeRequest.getCode());
|
|
|
|
|
UdiRelevanceResponse udiRelevanceResponse;
|
|
|
|
|
List<UdiRelevanceResponse> 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<IoCollectCodeBackMappe
|
|
|
|
|
response.setMessage("非此单产品");
|
|
|
|
|
return response;
|
|
|
|
|
}
|
|
|
|
|
UdiRelevanceResponse udiRelevanceResponse = udiRelevanceService.selectByNameCode(udiEntity.getUdi());
|
|
|
|
|
udiEntity.setCode(filterCodeRequest.getCode());
|
|
|
|
|
AddEnterCodeResponse addEnterCodeResponse = setAddEnterCodeResponse(udiEntity, udiRelevanceResponse);
|
|
|
|
|
IoCollectOrderCheckCode ioCollectOrderCheckCode = new IoCollectOrderCheckCode();
|
|
|
|
|
BeanUtils.copyProperties(ioCollectCodeBackup, ioCollectOrderCheckCode);
|
|
|
|
|
orderBackup.setCheckCodeStatus(1);
|
|
|
|
|
ThreadUtil.execAsync(() -> {
|
|
|
|
|
ioCollectOrderCheckCodeService.save(ioCollectOrderCheckCode);
|
|
|
|
|
// ioCollectOrderBackupService.updateByBillNo(orderBackup);
|
|
|
|
|
});
|
|
|
|
|
setOrderCheckStatus(ioCollectCodeBackup);
|
|
|
|
|
|
|
|
|
|
return ResultVOUtils.success(addEnterCodeResponse);
|
|
|
|
|
} else {
|
|
|
|
|
List<VailCodeResultResponse> vailCodeResultResponses = new ArrayList<>();
|
|
|
|
|
for (String code : filterCodeRequest.getCodeList()) {
|
|
|
|
|
VailCodeResultResponse vailCodeResultResponse = new VailCodeResultResponse();
|
|
|
|
|
IoCollectOrderCheckCode one = ioCollectOrderCheckCodeService.getOne(new LambdaQueryWrapper<IoCollectOrderCheckCode>().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<IoCollectCodeBackup>()
|
|
|
|
|
.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<IoCollectCodeBackMappe
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public AddEnterCodeResponse setAddEnterCodeResponse(UdiEntity udiEntity, UdiRelevanceResponse checkUdi) {
|
|
|
|
|
AddEnterCodeResponse addEnterCodeResponse = new AddEnterCodeResponse();
|
|
|
|
|
BeanUtils.copyProperties(udiEntity, addEnterCodeResponse);
|
|
|
|
@ -175,35 +226,35 @@ public class IoCollectCodeBackService extends ServiceImpl<IoCollectCodeBackMappe
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public BaseResponse replaceScanCode(IoCollectCodeRequest filterCodeRequest) {
|
|
|
|
|
BaseResponse response = null;
|
|
|
|
|
IoCollectOrderBackup orderBackup = ioCollectOrderBackupService.getByBillNo(filterCodeRequest.getBillNo());
|
|
|
|
|
if (orderBackup.getCheckCodeConfirm() == 0 || orderBackup.getCheckCodeConfirm() == null){
|
|
|
|
|
orderBackup.setCheckCodeConfirm(1);
|
|
|
|
|
ioCollectOrderBackupService.updateByBillNo(orderBackup);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (StrUtil.isNotEmpty(filterCodeRequest.getCode())) {
|
|
|
|
|
response = insert(filterCodeRequest);
|
|
|
|
|
insert(filterCodeRequest,orderBackup);
|
|
|
|
|
} else {
|
|
|
|
|
List<String> 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<IoCollectOrderCheckCode>().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<IoCollectCodeBackMappe
|
|
|
|
|
.operTime(new Date())
|
|
|
|
|
.build();
|
|
|
|
|
ioCollectOrderCheckCodeService.save(ioCollectOrderCheckCode);
|
|
|
|
|
return ResultVOUtils.success(orderBackup);
|
|
|
|
|
IoCollectCodeBackup ioCollectCodeBackup = new IoCollectCodeBackup();
|
|
|
|
|
BeanUtils.copyProperties(ioCollectOrderCheckCode,ioCollectCodeBackup);
|
|
|
|
|
ioCollectCodeBackup.setScanCodeCheckStatus(3);
|
|
|
|
|
ioCollectCodeBackup.setId(null);
|
|
|
|
|
save(ioCollectCodeBackup);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public BaseResponse commitCheckCodeOrder(IoCollectCodeRequest filterCodeRequest) {
|
|
|
|
|
IoCollectOrderBackup orderBackup = ioCollectOrderBackupService.getByBillNo(filterCodeRequest.getBillNo());
|
|
|
|
|
if (orderBackup.getCheckCodeStatus() == 1){
|
|
|
|
|
return ResultVOUtils.error(500,"该单据已校验完成");
|
|
|
|
|
}
|
|
|
|
|
//已经完成单据码表
|
|
|
|
|
List<IoCollectCodeBackup> ioCollectCodeBackups = list(new LambdaQueryWrapper<IoCollectCodeBackup>().eq(IoCollectCodeBackup::getBillNo, filterCodeRequest.getBillNo()));
|
|
|
|
|
//已经校验码表
|
|
|
|
@ -237,7 +295,7 @@ public class IoCollectCodeBackService extends ServiceImpl<IoCollectCodeBackMappe
|
|
|
|
|
for (CollectOrderBizResponse collectOrderBizResponse : list) {
|
|
|
|
|
UdiRelevanceResponse udiRelevanceResponse = udiRelevanceService.selectByNameCode(collectOrderBizResponse.getNameCode());
|
|
|
|
|
Integer checkCount = ioCollectOrderCheckCodeService.getCountByRelIdAndBillNo(udiRelevanceResponse.getId(), filterCodeRequest.getBillNo());
|
|
|
|
|
if (checkCount != collectOrderBizResponse.getScanActCount()) {
|
|
|
|
|
if (checkCount < collectOrderBizResponse.getScanActCount()) {
|
|
|
|
|
return ResultVOUtils.error(500, udiRelevanceResponse.getCpmctymc() + "追溯码未校验完成");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
@ -275,6 +333,7 @@ public class IoCollectCodeBackService extends ServiceImpl<IoCollectCodeBackMappe
|
|
|
|
|
for (IoCollectOrderCheckCode ioCollectOrderCheckCode : ioCollectOrderCheckCodes){
|
|
|
|
|
IoCollectCodeBackup ioCollectCodeBackup = new IoCollectCodeBackup();
|
|
|
|
|
BeanUtils.copyProperties(ioCollectOrderCheckCode,ioCollectCodeBackup);
|
|
|
|
|
ioCollectCodeBackup.setScanCodeCheckStatus(1);
|
|
|
|
|
collectCodeBackups.add(ioCollectCodeBackup);
|
|
|
|
|
}
|
|
|
|
|
saveBatch(collectCodeBackups);
|
|
|
|
@ -282,4 +341,30 @@ public class IoCollectCodeBackService extends ServiceImpl<IoCollectCodeBackMappe
|
|
|
|
|
ioCollectOrderBackupService.updateByBillNo(orderBackup);
|
|
|
|
|
return ResultVOUtils.success();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public List<IoCollectCodeBackup> listByBillNo(String billNo) {
|
|
|
|
|
return ioCollectCodeBackMapper.selectList(new LambdaQueryWrapper<IoCollectCodeBackup>()
|
|
|
|
|
.eq(IoCollectCodeBackup::getBillNo, billNo));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public IoCollectOrderBizBackup checkProduct(String billNo,UdiEntity udiEntity){
|
|
|
|
|
List<IoCollectOrderBizBackup> ioCollectOrderBizBackups = ioCollectOrderBizBackupService.listByBillNo(billNo);
|
|
|
|
|
List<UdiRelevanceResponse> 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);
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|