1/13 码校验优化1.0

dev_fifo_z
wangwei 6 months ago
parent 3de25f7dfc
commit fe5fc6a089

@ -5,6 +5,7 @@ import com.glxp.api.entity.collect.IoCollectOrderCodeAuto;
import com.glxp.api.req.collect.CollectOrderCodeAutoRequest;
import com.glxp.api.res.collect.CollectOrderCodeAutoResponse;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
@ -12,5 +13,5 @@ import java.util.List;
public interface IoCollectOrderCodeAutoMapper extends BaseMapper<IoCollectOrderCodeAuto> {
List<CollectOrderCodeAutoResponse> filterList(CollectOrderCodeAutoRequest collectOrderCodeAutoRequest);
Integer getScanCount(@Param("billNo")String billNo,@Param("relId") Long relId);
}

@ -6,6 +6,7 @@ import com.glxp.api.req.collect.CollectOrderCodeManRequest;
import com.glxp.api.res.collect.CollectOrderCodeAutoResponse;
import com.glxp.api.res.collect.CollectOrderCodeManResponse;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
@ -17,4 +18,5 @@ public interface IoCollectOrderCodeManMapper extends BaseMapper<IoCollectOrderCo
IoCollectOrderCodeMan exitCode(CollectOrderCodeManRequest collectOrderCodeManRequest);
Integer getScanCount(@Param("billNo")String billNo, @Param("relId") Long relId);
}

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

@ -38,4 +38,8 @@ public class IoCollectOrderCodeAutoService extends ServiceImpl<IoCollectOrderCod
return collectOrderCodeAutoMapper.filterList(collectOrderCodeAutoRequest);
}
public Integer getScanCount(String billNo, Long relId) {
return collectOrderCodeAutoMapper.getScanCount(billNo,relId);
}
}

@ -759,4 +759,8 @@ public class IoCollectOrderCodeManService extends ServiceImpl<IoCollectOrderCode
addEnterCodeResponse.setGgxh(checkUdi.getGgxh());
return addEnterCodeResponse;
}
public Integer getScanCount(String billNo, Long relId) {
return collectOrderCodeManMapper.getScanCount(billNo,relId);
}
}

@ -43,6 +43,6 @@
</if>
</where>
group by iccb.id
order by bp.nameCode
order by bp.nameCode,iccb.code
</select>
</mapper>

@ -30,4 +30,9 @@
</if>
</where>
</select>
<select id="getScanCount" resultType="java.lang.Integer">
SELECT COUNT(*)
FROM io_collect_order_code_auto
WHERE orderIdFk = #{billNo} AND relId = #{relId}
</select>
</mapper>

@ -44,4 +44,9 @@
</where>
limit 1
</select>
<select id="getScanCount" resultType="java.lang.Integer">
SELECT COUNT(*)
FROM io_collect_order_code_man
WHERE orderIdFk = #{billNo} AND relId = #{relId}
</select>
</mapper>

Loading…
Cancel
Save