12/13 码校验调整1.0

dev_unify
wangwei 7 months ago
parent a987057b46
commit 7520e93a91

@ -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<IoCollectOrderCheckCode> list = ioCollectOrderCheckCodeService.list(new LambdaQueryWrapper<IoCollectOrderCheckCode>().eq(IoCollectOrderCheckCode::getBillNo, request.getBillNo()));
if (list.size() > 0){
ioCollectOrderCheckCodeService.removeBatchByIds(list);
}
List<IoCollectCodeBackup> list1 = ioCollectCodeBackService.list(new LambdaQueryWrapper<IoCollectCodeBackup>().eq(IoCollectCodeBackup::getBillNo, request.getBillNo()));
List<IoCollectCodeBackup> filteredList = list1.stream()
.filter(item -> item.getScanCodeCheckStatus() != null && item.getScanCodeCheckStatus() == 3)
.collect(Collectors.toList());
if (filteredList.size() > 0){
ioCollectCodeBackService.removeBatchByIds(filteredList);
}
List<IoCollectCodeBackup> 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<IoCollectCodeResponse> ioCollectCodeResponses = ioCollectCodeBackService.filterList(request);
for (IoCollectCodeResponse ioCollectCodeResponse : ioCollectCodeResponses){

@ -88,7 +88,8 @@ public class IoCollectOrderBackupController extends BaseController {
if (collectOrder == null) {
return ResultVOUtils.error(500, "未找到单据");
}
List<CollectOrderBizResponse> collectOrderBizResponses = ioCollectOrderBackupService.combieOrderDetail(collectOrderBizRequest);
// List<CollectOrderBizResponse> collectOrderBizResponses = ioCollectOrderBackupService.combieOrderDetail(collectOrderBizRequest);
List<CollectOrderBizResponse> collectOrderBizResponses = ioCollectOrderBackupService.setScanCodeOrderDetail(collectOrderBizRequest);
for (CollectOrderBizResponse response : collectOrderBizResponses) {
if (response.getGgxh() == null) {
response.setGgxh(response.getSpec());

@ -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;
}

@ -21,4 +21,9 @@ public class IoCollectCodeRequest extends ListPageRequest {
private String fromCorp;
private List<String> codeList;
//1正常查询 2码校验查询
private Integer selectType;
private Long relId;
}

@ -111,4 +111,6 @@ public class IoCollectCodeResponse {
private String expireDate;
private String serialNo;
private Integer scanActCount;
private Integer scanCodeCheckStatus;
}

@ -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);
});
}
}

@ -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<IoCollectOrderBacku
@Resource
private RelCodeDetailService relCodeDetailService;
@Resource
UdiRelevanceService udiRelevanceService;
public List<IoCollectOrderResponse> filterList(CollectOrderRequest collectOrderRequest) {
if (collectOrderRequest == null) {
return Collections.emptyList();
@ -445,4 +448,27 @@ public class IoCollectOrderBackupService extends ServiceImpl<IoCollectOrderBacku
}
public List<CollectOrderBizResponse> setScanCodeOrderDetail(CollectOrderBizRequest collectOrderBizRequest) {
List<CollectOrderBizResponse> list = ioCollectOrderBizBackupService.filterList(collectOrderBizRequest);
List<IoCollectCodeBackup> ioCollectCodeBackups = ioCollectCodeBackService.listByBillNo(collectOrderBizRequest.getOrderIdFk());;
List<CollectOrderBizResponse> 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;
}
}

@ -32,6 +32,9 @@
<if test="billNo != null and billNo != ''">
AND iccb.billNo LIKE concat('%', #{billNo}, '%')
</if>
<if test="relId != null and relId != ''">
AND iccb.relId = #{relId}
</if>
<if test="fromType != null and fromType != ''">
AND iccb.fromType LIKE concat('%', #{fromType}, '%')
</if>

@ -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);

Loading…
Cancel
Save