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.req.collect.CollectOrderCodeAutoRequest;
import com.glxp.api.res.collect.CollectOrderCodeAutoResponse; import com.glxp.api.res.collect.CollectOrderCodeAutoResponse;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List; import java.util.List;
@ -12,5 +13,5 @@ import java.util.List;
public interface IoCollectOrderCodeAutoMapper extends BaseMapper<IoCollectOrderCodeAuto> { public interface IoCollectOrderCodeAutoMapper extends BaseMapper<IoCollectOrderCodeAuto> {
List<CollectOrderCodeAutoResponse> filterList(CollectOrderCodeAutoRequest collectOrderCodeAutoRequest); 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.CollectOrderCodeAutoResponse;
import com.glxp.api.res.collect.CollectOrderCodeManResponse; import com.glxp.api.res.collect.CollectOrderCodeManResponse;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List; import java.util.List;
@ -17,4 +18,5 @@ public interface IoCollectOrderCodeManMapper extends BaseMapper<IoCollectOrderCo
IoCollectOrderCodeMan exitCode(CollectOrderCodeManRequest collectOrderCodeManRequest); 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.apache.bcel.classfile.Code;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.StringUtils; import org.springframework.util.StringUtils;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.util.ArrayList; import java.util.*;
import java.util.Collections;
import java.util.Date;
import java.util.List;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@Service @Service
@ -62,6 +60,11 @@ public class IoCollectCodeBackService extends ServiceImpl<IoCollectCodeBackMappe
@Resource @Resource
IoSplitFifoCodeService ioSplitFifoCodeService; 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()); Integer checkCount = ioCollectOrderCheckCodeService.getCountByRelIdAndBillNo(udiRelevanceResponse.getId(), filterCodeRequest.getBillNo());
if (checkCount >= collectOrderBizBackup.getScanCount()) { if (checkCount >= scanCount) {
return ResultVOUtils.error(500, "追溯码数量超出"); return ResultVOUtils.error(500, "追溯码数量超出");
} }
IoCollectCodeBackup ioCollectCodeBackup = getIoCollectCodeBackup(filterCodeRequest.getBillNo(), filterCodeRequest.getCode()); 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) { if (isScanCountExceeded) {
vailCodeResultResponse.setStatus(3); vailCodeResultResponse.setStatus(3);
vailCodeResultResponse.setErrMsg("追溯码校验校验超出"); vailCodeResultResponse.setErrMsg("追溯码校验校验超出");
@ -202,22 +206,15 @@ public class IoCollectCodeBackService extends ServiceImpl<IoCollectCodeBackMappe
.eq(IoCollectCodeBackup::getCode, code)); .eq(IoCollectCodeBackup::getCode, code));
} }
private boolean checkScanCountExceeded(IoCollectCodeRequest filterCodeRequest, UdiRelevanceResponse udiRelevanceResponse, String code) { private boolean checkScanCountExceeded(IoCollectCodeRequest filterCodeRequest, UdiRelevanceResponse udiRelevanceResponse, IoCollectOrderBizBackup collectOrderBizBackup) {
CollectOrderBizRequest collectOrderBizRequest = new CollectOrderBizRequest(); Integer scanCount = getScanCount(filterCodeRequest,udiRelevanceResponse);
collectOrderBizRequest.setOrderIdFk(filterCodeRequest.getBillNo()); // if (udiRelevanceResponse.getId().equals(collectOrderBizBackup.getRelId())){
collectOrderBizRequest.setRelId(udiRelevanceResponse.getId()); if ( filterCodeRequest.getCodeList().size() > scanCount){
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()){
throw new JsonException(500,"追溯码数量超出"); throw new JsonException(500,"追溯码数量超出");
} }
} // }
Integer checkCount = ioCollectOrderCheckCodeService.getCountByRelIdAndBillNo(udiRelevanceResponse.getId(), filterCodeRequest.getBillNo()); Integer checkCount = ioCollectOrderCheckCodeService.getCountByRelIdAndBillNo(udiRelevanceResponse.getId(), filterCodeRequest.getBillNo());
return checkCount == collectOrderBizResponse.getScanCount(); return checkCount == scanCount;
} }
public AddEnterCodeResponse setAddEnterCodeResponse(UdiEntity udiEntity, UdiRelevanceResponse checkUdi) { public AddEnterCodeResponse setAddEnterCodeResponse(UdiEntity udiEntity, UdiRelevanceResponse checkUdi) {
AddEnterCodeResponse addEnterCodeResponse = new AddEnterCodeResponse(); AddEnterCodeResponse addEnterCodeResponse = new AddEnterCodeResponse();
@ -243,6 +240,14 @@ public class IoCollectCodeBackService extends ServiceImpl<IoCollectCodeBackMappe
return null; 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) { public BaseResponse replaceScanCode(IoCollectCodeRequest filterCodeRequest) {
IoCollectOrderBackup orderBackup = ioCollectOrderBackupService.getByBillNo(filterCodeRequest.getBillNo()); IoCollectOrderBackup orderBackup = ioCollectOrderBackupService.getByBillNo(filterCodeRequest.getBillNo());
@ -298,6 +303,7 @@ public class IoCollectCodeBackService extends ServiceImpl<IoCollectCodeBackMappe
save(ioCollectCodeBackup); save(ioCollectCodeBackup);
} }
@Transactional(rollbackFor = Exception.class)
public BaseResponse commitCheckCodeOrder(IoCollectCodeRequest filterCodeRequest) { public BaseResponse commitCheckCodeOrder(IoCollectCodeRequest filterCodeRequest) {
IoCollectOrderBackup orderBackup = ioCollectOrderBackupService.getByBillNo(filterCodeRequest.getBillNo()); IoCollectOrderBackup orderBackup = ioCollectOrderBackupService.getByBillNo(filterCodeRequest.getBillNo());
if (orderBackup.getCheckCodeStatus() == 1) { if (orderBackup.getCheckCodeStatus() == 1) {
@ -328,7 +334,7 @@ public class IoCollectCodeBackService extends ServiceImpl<IoCollectCodeBackMappe
uniqueBackupsCodes.addAll(ioCollectCodeBackups1); uniqueBackupsCodes.addAll(ioCollectCodeBackups1);
//如果有数据说明改产品已经 替换过码了需要全部校验 //如果有数据说明改产品已经 替换过码了需要全部校验
Integer checkCount = ioCollectOrderCheckCodeService.getCountByRelIdAndBillNo(udiRelevanceResponse.getId(), filterCodeRequest.getBillNo()); Integer checkCount = ioCollectOrderCheckCodeService.getCountByRelIdAndBillNo(udiRelevanceResponse.getId(), filterCodeRequest.getBillNo());
if (checkCount < collectOrderBizResponse.getScanCount()) { if (checkCount < getScanCount(filterCodeRequest,udiRelevanceResponse)) {
return ResultVOUtils.error(500, udiRelevanceResponse.getCpmctymc() + "追溯码未校验完成"); return ResultVOUtils.error(500, udiRelevanceResponse.getCpmctymc() + "追溯码未校验完成");
} }
} }
@ -345,17 +351,24 @@ public class IoCollectCodeBackService extends ServiceImpl<IoCollectCodeBackMappe
//uniqueCodes 替换掉的码 //uniqueCodes 替换掉的码
System.out.println(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) .map(IoCollectCodeBackup::getCode)
.anyMatch(code::equals)) .anyMatch(ioc.getCode()::equals))
.collect(Collectors.toList()); .collect(Collectors.toList());
System.out.println(checkCodeList);
// 对比原始码表多出来的码 checkCodeList // 对比原始码表多出来的码 checkCodeList
//检查码是否存在队列如果存在移除 //检查码是否存在队列如果存在移除
for (String code : checkCodeList) { for (IoCollectOrderCheckCode checkCode : checkCodeList) {
IoSplitFifoCodeEntity ioSplitFifoCodeEntity = ioSplitFifoCodeService.getOne(new LambdaQueryWrapper<IoSplitFifoCodeEntity>().eq(IoSplitFifoCodeEntity::getCode, code)); IoSplitFifoCodeEntity ioSplitFifoCodeEntity = ioSplitFifoCodeService.getOne(new LambdaQueryWrapper<IoSplitFifoCodeEntity>().eq(IoSplitFifoCodeEntity::getCode, checkCode.getCode()));
if (ioSplitFifoCodeEntity != null) { if (ioSplitFifoCodeEntity != null) {
ioSplitFifoCodeService.removeById(ioSplitFifoCodeEntity); ioSplitFifoCodeService.removeById(ioSplitFifoCodeEntity);
} }
@ -364,10 +377,14 @@ public class IoCollectCodeBackService extends ServiceImpl<IoCollectCodeBackMappe
boolean b = removeBatchByIds(uniqueBackupsCodes); boolean b = removeBatchByIds(uniqueBackupsCodes);
ArrayList<IoCollectCodeBackup> collectCodeBackups = new ArrayList<>(); ArrayList<IoCollectCodeBackup> collectCodeBackups = new ArrayList<>();
for (IoCollectOrderCheckCode ioCollectOrderCheckCode : ioCollectOrderCheckCodes) { for (IoCollectOrderCheckCode ioCollectOrderCheckCode : ioCollectOrderCheckCodes) {
IoCollectCodeBackup ioCollectCodeBackup = new IoCollectCodeBackup(); IoCollectCodeBackup one = getOne(new LambdaQueryWrapper<IoCollectCodeBackup>().eq(IoCollectCodeBackup::getCode, ioCollectOrderCheckCode.getCode()));
BeanUtils.copyProperties(ioCollectOrderCheckCode, ioCollectCodeBackup); if (one == null){
ioCollectCodeBackup.setScanCodeCheckStatus(1); IoCollectCodeBackup ioCollectCodeBackup = new IoCollectCodeBackup();
collectCodeBackups.add(ioCollectCodeBackup); BeanUtils.copyProperties(ioCollectOrderCheckCode, ioCollectCodeBackup);
ioCollectCodeBackup.setId(null);
ioCollectCodeBackup.setScanCodeCheckStatus(1);
collectCodeBackups.add(ioCollectCodeBackup);
}
} }
saveBatch(collectCodeBackups); saveBatch(collectCodeBackups);
orderBackup.setCheckCodeStatus(1); orderBackup.setCheckCodeStatus(1);

@ -38,4 +38,8 @@ public class IoCollectOrderCodeAutoService extends ServiceImpl<IoCollectOrderCod
return collectOrderCodeAutoMapper.filterList(collectOrderCodeAutoRequest); 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()); addEnterCodeResponse.setGgxh(checkUdi.getGgxh());
return addEnterCodeResponse; return addEnterCodeResponse;
} }
public Integer getScanCount(String billNo, Long relId) {
return collectOrderCodeManMapper.getScanCount(billNo,relId);
}
} }

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

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

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

Loading…
Cancel
Save