package com.glxp.api.service.collect; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.github.pagehelper.PageHelper; import com.glxp.api.common.enums.ResultEnum; import com.glxp.api.common.util.ResultVOUtils; import com.glxp.api.constant.Constant; import com.glxp.api.constant.WorkOperType; import com.glxp.api.dao.collect.IoCollectOrderCodeManMapper; import com.glxp.api.entity.auth.InvWarehouseEntity; import com.glxp.api.entity.auth.SysWorkplace; import com.glxp.api.entity.basic.SysWorkplaceDocumentEntity; import com.glxp.api.entity.basic.SysWorkplacePutRel; import com.glxp.api.entity.basic.UdiEntity; import com.glxp.api.entity.collect.IoCollectOrder; import com.glxp.api.entity.collect.IoCollectOrderBiz; import com.glxp.api.entity.collect.IoCollectOrderCodeMan; import com.glxp.api.entity.inout.IoCodeTempEntity; import com.glxp.api.entity.inout.IoSplitCodeEntity; import com.glxp.api.entity.inv.AnncmntProductEntity; import com.glxp.api.entity.thrsys.ThrBusTypeOriginEntity; import com.glxp.api.entity.thrsys.ThrSystemEntity; import com.glxp.api.exception.JsonException; import com.glxp.api.req.collect.CollectOrderCodeManRequest; import com.glxp.api.req.inout.AddTagCodeReqeust; import com.glxp.api.res.basic.UdiRelevanceResponse; import com.glxp.api.res.collect.CollectOrderCodeManResponse; import com.glxp.api.service.auth.CustomerService; import com.glxp.api.service.auth.InvWarehouseService; import com.glxp.api.service.auth.SysWorkplaceService; import com.glxp.api.service.basic.BasicCollectBustypeService; import com.glxp.api.service.basic.SysWorkplaceDocumentService; import com.glxp.api.service.basic.UdiRelevanceService; import com.glxp.api.service.inout.IoSplitCodeService; import com.glxp.api.service.inv.AnncmntProductService; import com.glxp.api.service.thrsys.IThrBusTypeOriginService; import com.glxp.api.service.thrsys.SysWorkplacePutRelService; import com.glxp.api.service.thrsys.ThrSystemService; import com.glxp.api.util.GennerOrderUtils; import com.glxp.api.util.IntUtil; import com.glxp.api.util.MsDateUtil; import com.glxp.api.util.OrderNoTypeBean; import com.glxp.api.util.udi.FilterUdiUtils; import com.glxp.api.util.udi.UdiCalCountUtil; import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; import java.util.ArrayList; import java.util.Collections; import java.util.Date; import java.util.List; @Service public class IoCollectOrderCodeManService extends ServiceImpl { @Resource IoCollectOrderCodeManMapper collectOrderCodeManMapper; @Resource SysWorkplaceService sysWorkPlaceService; @Resource UdiRelevanceService udiRelevanceService; @Resource IoCollectOrderBizService collectOrderBizService; @Resource GennerOrderUtils gennerOrderUtils; @Resource AnncmntProductService anncmntProductService; @Resource private ThrSystemService thrSystemService; @Resource private IThrBusTypeOriginService thrBusTypeOriginService; @Resource CustomerService customerService; @Resource IoCollectOrderService collectOrderService; @Resource SysWorkplaceDocumentService sysWorkplaceDocumentService; @Resource UdiCalCountUtil calCountUtil; @Resource IoSplitCodeService splitCodeService; public List filterList(CollectOrderCodeManRequest collectOrderCodeManRequest) { if (collectOrderCodeManRequest == null) { return Collections.emptyList(); } if (collectOrderCodeManRequest.getPage() != null) { int offset = (collectOrderCodeManRequest.getPage() - 1) * collectOrderCodeManRequest.getLimit(); PageHelper.offsetPage(offset, collectOrderCodeManRequest.getLimit()); } return collectOrderCodeManMapper.filterList(collectOrderCodeManRequest); } public List listByBillNo(String billNo) { return collectOrderCodeManMapper.selectList(new LambdaQueryWrapper() .eq(IoCollectOrderCodeMan::getOrderIdFk, billNo)); } public IoCollectOrderCodeMan findByCode(String billNo, String code) { return collectOrderCodeManMapper.selectOne(new LambdaQueryWrapper().eq(IoCollectOrderCodeMan::getOrderIdFk, billNo) .eq(IoCollectOrderCodeMan::getUdiCode, code).last("limit 1")); } @Resource InvWarehouseService invWarehouseService; @Resource SysWorkplacePutRelService workplacePutRelService; @Transactional(rollbackFor = Exception.class) public IoCollectOrder prescribeTagCode(AddTagCodeReqeust addTagCodeReqeust) { Long userId = customerService.getUserId(); String userIds = customerService.getUserId() + ""; SysWorkplace workPlace = sysWorkPlaceService.getWorkplace(addTagCodeReqeust.getWorkPlaceCode()); SysWorkplacePutRel sysWorkplacePutRel = workplacePutRelService.findPutWorkPlace(workPlace.getWorkplaceId(), null); Long putWorkPlaceCode = null; if (sysWorkplacePutRel != null) putWorkPlaceCode = sysWorkplacePutRel.getWorkPlaceCode(); if (workPlace == null) throw new JsonException(500, "请先选择工位"); SysWorkplaceDocumentEntity sysWorkplaceDocumentEntity = sysWorkplaceDocumentService.findByWorkplaceCode(workPlace.getWorkplaceId(), addTagCodeReqeust.getBusType()); IoCollectOrderBiz collectOrderBiz = null; IoCollectOrder collectOrder = null; //1.校验UDI码完整性 String code = addTagCodeReqeust.getCode(); if (StringUtils.isBlank(code)) throw new JsonException(ResultEnum.DATA_ERROR.getMessage()); if (code.endsWith("\u001D")) { code = code.replace("\u001D", ""); } UdiEntity udiEntity = FilterUdiUtils.getUdi(code); if (udiEntity == null) throw new JsonException(500, "无效条码!"); UdiRelevanceResponse udiRelevanceResponse; List udiRelevanceResponses = udiRelevanceService.selectGroupByNameCode(udiEntity.getUdi(), null); if (CollUtil.isEmpty(udiRelevanceResponses)) throw new JsonException(500, "耗材字典不存在此产品!"); else udiRelevanceResponse = udiRelevanceResponses.get(0); //判断层级标识是否正确 if (IntUtil.value(sysWorkplaceDocumentEntity.getOrderCirType()) == 2) { if (IntUtil.value(udiRelevanceResponse.getPackLevel()) > IntUtil.value(udiRelevanceResponse.getUseMaxLevel())) { throw new JsonException(500, "当前产品不支持采集该包装层级追溯码!"); } if (IntUtil.value(udiRelevanceResponse.getPackLevel()) < IntUtil.value(udiRelevanceResponse.getUseLevel())) { throw new JsonException(500, "当前产品不支持采集该包装层级追溯码!"); } } else { if (IntUtil.value(udiRelevanceResponse.getDistributeMaxLevel()) < IntUtil.value(udiRelevanceResponse.getPackLevel())) { throw new JsonException(500, "当前产品不支持采集该包装层级追溯码!"); } if (IntUtil.value(udiRelevanceResponse.getPackLevel()) < IntUtil.value(udiRelevanceResponse.getDistributeLevel())) { throw new JsonException(500, "当前产品不支持采集该包装层级追溯码!"); } } Integer circleCount = calCountUtil.getCirActCount(udiRelevanceResponse); Integer useCount = calCountUtil.getUseActCount(udiRelevanceResponse); Integer scanCount = 0; IoCollectOrderCodeMan exitCode = this.findByCode(addTagCodeReqeust.getBillNo(), code); if (StrUtil.isNotEmpty(udiEntity.getSerialNo()) && exitCode != null) { throw new JsonException(500, "重复扫码!"); } AnncmntProductEntity anncmntProductEntity = anncmntProductService.getOne(new QueryWrapper().eq("nameCode", udiEntity.getUdi()).last("limit 1")); if (anncmntProductEntity != null) { throw new JsonException(500, anncmntProductEntity.getErrMsg()); } if (StrUtil.isNotEmpty(udiEntity.getExpireDate())) { String expireDate = "20" + udiEntity.getExpireDate(); long expireTime = MsDateUtil.parseDateExpire(expireDate); if (expireTime - System.currentTimeMillis() < 0) { throw new JsonException(500, "当前产品已过期!"); } } IoSplitCodeEntity splitCodeEntity = splitCodeService.findByCode(code); List collectOrderBizs = collectOrderBizService.listByBillNo(addTagCodeReqeust.getBillNo()); //2.校验是否处方单UDI码 if (IntUtil.value(sysWorkplaceDocumentEntity.getScanType()) == WorkOperType.TYPE_GEN_ORDER) { if (StrUtil.isEmpty(addTagCodeReqeust.getBillNo())) { String orderNo = gennerOrderUtils.createWdOrderNo(new OrderNoTypeBean(Constant.SPLIT_ORDER, "yyyyMMdd")); collectOrder = IoCollectOrder.builder() .billNo(orderNo) .busType(sysWorkplaceDocumentEntity.getDocumentTypeCode()) .fromCorp(addTagCodeReqeust.getFromCorp()) .fromCorpName(addTagCodeReqeust.getFromCorpName()) .billTime(new Date()) .workPlaceCode(workPlace.getWorkplaceId()) .createTime(new Date()) .createUser(userIds) .shipper(addTagCodeReqeust.getInvCode()) .updateTime(new Date()) .orderCirType(sysWorkplaceDocumentEntity.getOrderCirType()) .tagStatus(1) .build(); if (StrUtil.isNotEmpty(addTagCodeReqeust.getInvCode())) { InvWarehouseEntity invWarehouseEntity = invWarehouseService.findByInvSubByCode(addTagCodeReqeust.getInvCode()); collectOrder.setShipperName(invWarehouseEntity.getName()); } if (IntUtil.value(sysWorkplaceDocumentEntity.getIsMatching()) == 1) { collectOrder.setFromType("UDI系统"); } else { ThrBusTypeOriginEntity one = thrBusTypeOriginService.getOne(new LambdaQueryWrapper() .eq(ThrBusTypeOriginEntity::getAction, sysWorkplaceDocumentEntity.getDocumentTypeCode())); if (one != null) { ThrSystemEntity thrSystemEntity = thrSystemService.getOne(new LambdaQueryWrapper().eq(ThrSystemEntity::getThirdId, one.getThirdSys())); if (thrSystemEntity != null) { collectOrder.setFromType(thrSystemEntity.getThirdName()); } } } collectOrderService.save(collectOrder); } else { collectOrder = collectOrderService.getByBillNo(addTagCodeReqeust.getBillNo()); } //直接扫码单生成业务单 collectOrderBiz = scanGenOrder(udiRelevanceResponses, collectOrderBizs, udiEntity, collectOrder); collectOrderBiz.setOrderIdFk(collectOrder.getBillNo()); collectOrderBizService.saveOrUpdate(collectOrderBiz); } else if (IntUtil.value(sysWorkplaceDocumentEntity.getScanType()) == WorkOperType.TYPE_VAIL_BATCH) { collectOrder = collectOrderService.getByBillNo(addTagCodeReqeust.getBillNo()); collectOrder.setWorkPlaceCode(addTagCodeReqeust.getWorkPlaceCode()); if (collectOrder == null) throw new JsonException(500, "单据不存在!"); if (splitCodeEntity != null && StrUtil.isNotEmpty(splitCodeEntity.getSerialNo())) { if (IntUtil.value(splitCodeEntity.getRemainCount()) < 1) { throw new JsonException(500, "当前追溯码已被拆零!"); } else { circleCount = splitCodeEntity.getRemainCount(); useCount = splitCodeEntity.getRemainCount(); } } if (IntUtil.value(collectOrder.getOrderCirType()) == 1) { scanCount = circleCount; } else { scanCount = useCount; } CollectOrderCodeManRequest collectOrderCodeManRequest = new CollectOrderCodeManRequest(); collectOrderCodeManRequest.setUdiCode(code); collectOrderCodeManRequest.setBusType(sysWorkplaceDocumentEntity.getDocumentTypeCode()); IoCollectOrderCodeMan collectOrderCodeMan = collectOrderCodeManMapper.exitCode(collectOrderCodeManRequest); if (collectOrderCodeMan != null && StrUtil.isNotEmpty(collectOrderCodeMan.getSerialNo())) { throw new JsonException(500, "当前追溯码已被其他单据关联!"); } collectOrderBiz = vailByBatchNo(udiRelevanceResponses, collectOrderBizs, udiEntity); switch (sysWorkplaceDocumentEntity.getCheckInsert()) { case 1: //插入 if (collectOrderBiz == null) { collectOrderBiz = scanGenOrder(udiRelevanceResponses, collectOrderBizs, udiEntity, collectOrder); collectOrderBiz.setOrderIdFk(collectOrder.getBillNo()); } else { collectOrderBiz.setScanCount(IntUtil.value(collectOrderBiz.getScanCount()) + 1); collectOrderBiz.setScanActCount(IntUtil.value(collectOrderBiz.getScanActCount()) + scanCount); } break; case 2: //不插入 if (collectOrderBiz == null) throw new JsonException(500, "非此单据追溯码!"); int count = IntUtil.value(collectOrderBiz.getScanCount()) + 1; int actCount = 0; actCount = IntUtil.value(collectOrderBiz.getScanActCount()) + scanCount; if (actCount > IntUtil.value(collectOrderBiz.getCount())) { int needCount = IntUtil.value(collectOrderBiz.getCount()) - IntUtil.value(collectOrderBiz.getScanActCount()); if (needCount > 0) { if (vailInSplit(collectOrderBiz, putWorkPlaceCode, needCount)) { throw new JsonException(502, collectOrderBiz.getCpmctymc() + "拆零数量还有剩余,是否继续添加?"); } } throw new JsonException(500, collectOrderBiz.getCpmctymc() + "扫码数量超出!"); } collectOrderBiz.setScanCount(count); collectOrderBiz.setScanActCount(actCount); break; case 3: //提醒是否插入 if (!IntUtil.value(addTagCodeReqeust.getInsert())) { if (collectOrderBiz == null) throw new JsonException(502, addTagCodeReqeust.getCode() + "非此单据追溯码,是否继续添加!"); int count1 = IntUtil.value(collectOrderBiz.getScanCount()) + 1; int actCount1 = 0; actCount1 = IntUtil.value(collectOrderBiz.getScanActCount()) + scanCount; if (actCount1 > collectOrderBiz.getCount()) { int needCount = IntUtil.value(collectOrderBiz.getCount()) - IntUtil.value(collectOrderBiz.getScanActCount()); if (needCount > 0) { if (vailInSplit(collectOrderBiz, putWorkPlaceCode, needCount)) { throw new JsonException(502, collectOrderBiz.getCpmctymc() + "拆零数量还有剩余,是否继续扫码?"); } int myUseCount = calCountUtil.getUseActCount(udiRelevanceResponse); if (needCount > myUseCount) { throw new JsonException(500, collectOrderBiz.getCpmctymc() + "扫码数量超出!"); } else { collectOrderBiz.setSplitUnCheck(true); throw new JsonException(503, collectOrderBiz.getId() + ";" + count1 + ";" + collectOrderBiz.getCpmctymc() + ";" + "扫码数量超出!"); } } } collectOrderBiz.setScanCount(count1); collectOrderBiz.setScanActCount(actCount1); } else { if (collectOrderBiz == null) { collectOrderBiz = scanGenOrder(udiRelevanceResponses, collectOrderBizs, udiEntity, collectOrder); collectOrderBiz.setOrderIdFk(collectOrder.getBillNo()); } else { collectOrderBiz.setScanCount(IntUtil.value(collectOrderBiz.getScanCount()) + 1); if (IntUtil.value(collectOrder.getOrderCirType()) == 1) { collectOrderBiz.setScanActCount(IntUtil.value(collectOrderBiz.getScanActCount()) + calCountUtil.getCirActCount(udiRelevanceResponse)); } else { collectOrderBiz.setScanActCount(IntUtil.value(collectOrderBiz.getScanActCount()) + calCountUtil.getUseActCount(udiRelevanceResponse)); } } } break; default: break; } } else if (IntUtil.value(sysWorkplaceDocumentEntity.getScanType()) == WorkOperType.TYPE_UNVAIL_BATCH) { collectOrder = collectOrderService.getByBillNo(addTagCodeReqeust.getBillNo()); collectOrder.setWorkPlaceCode(addTagCodeReqeust.getWorkPlaceCode()); if (collectOrder == null) throw new JsonException(500, "单据不存在!"); //按单不校验三期 collectOrderBiz = vailNoBatchNo(udiRelevanceResponses, collectOrderBizs, udiEntity); CollectOrderCodeManRequest collectOrderCodeManRequest = new CollectOrderCodeManRequest(); collectOrderCodeManRequest.setUdiCode(code); collectOrderCodeManRequest.setBusType(sysWorkplaceDocumentEntity.getDocumentTypeCode()); IoCollectOrderCodeMan collectOrderCodeMan = collectOrderCodeManMapper.exitCode(collectOrderCodeManRequest); if (collectOrderCodeMan != null && StrUtil.isNotEmpty(collectOrderCodeMan.getSerialNo())) { throw new JsonException(500, "当前追溯码已被其他单据关联!"); } if (splitCodeEntity != null && StrUtil.isNotEmpty(splitCodeEntity.getSerialNo())) { if (IntUtil.value(splitCodeEntity.getRemainCount()) < 1) { throw new JsonException(500, "当前追溯码已被拆零!"); } else { circleCount = splitCodeEntity.getRemainCount(); useCount = splitCodeEntity.getRemainCount(); } } if (IntUtil.value(collectOrder.getOrderCirType()) == 1) { scanCount = circleCount; } else { scanCount = useCount; } switch (sysWorkplaceDocumentEntity.getCheckInsert()) { case 1: //插入 if (collectOrderBiz == null) { collectOrderBiz = scanGenOrder(udiRelevanceResponses, collectOrderBizs, udiEntity, collectOrder); collectOrderBiz.setOrderIdFk(collectOrder.getBillNo()); } else { collectOrderBiz.setScanCount(IntUtil.value(collectOrderBiz.getScanCount()) + 1); collectOrderBiz.setScanActCount(IntUtil.value(collectOrderBiz.getScanActCount()) + scanCount); } break; case 2: //不插入 if (collectOrderBiz == null) throw new JsonException(500, "非此单据追溯码!"); int count = IntUtil.value(collectOrderBiz.getScanCount()) + 1; int actCount = 0; actCount = IntUtil.value(collectOrderBiz.getScanActCount()) + scanCount; if (actCount > IntUtil.value(collectOrderBiz.getCount())) { int needCount = IntUtil.value(collectOrderBiz.getCount()) - IntUtil.value(collectOrderBiz.getScanActCount()); if (needCount > 0) { if (vailInSplit(collectOrderBiz, putWorkPlaceCode, needCount)) { throw new JsonException(502, collectOrderBiz.getCpmctymc() + "当前拆零数量还有剩余,是否继续扫码进行拆零?"); } } throw new JsonException(500, collectOrderBiz.getCpmctymc() + "扫码数量超出!"); } collectOrderBiz.setScanCount(count); collectOrderBiz.setScanActCount(actCount); break; case 3: //提醒是否插入 if (!IntUtil.value(addTagCodeReqeust.getInsert())) { if (collectOrderBiz == null) throw new JsonException(502, addTagCodeReqeust.getCode() + "非此单据追溯码,是否继续添加?"); int count1 = IntUtil.value(collectOrderBiz.getScanCount()) + 1; int actCount1 = 0; actCount1 = IntUtil.value(collectOrderBiz.getScanActCount()) + scanCount; if (actCount1 > IntUtil.value(collectOrderBiz.getCount())) { int needCount = IntUtil.value(collectOrderBiz.getCount()) - IntUtil.value(collectOrderBiz.getScanActCount()); if (needCount > 0) { if (vailInSplit(collectOrderBiz, putWorkPlaceCode, needCount)) { throw new JsonException(502, collectOrderBiz.getCpmctymc() + "拆零数量还有剩余,是否继续添加?"); } int myUseCount = calCountUtil.getUseActCount(udiRelevanceResponse); if (needCount > myUseCount) { throw new JsonException(500, collectOrderBiz.getCpmctymc() + "扫码数量超出!"); } else { collectOrderBiz.setSplitUnCheck(true); throw new JsonException(503, collectOrderBiz.getId() + ";" + count1 + ";" + collectOrderBiz.getCpmctymc() + ";" + "扫码数量超出!"); } } } collectOrderBiz.setScanCount(count1); collectOrderBiz.setScanActCount(actCount1); } else { if (collectOrderBiz == null) { collectOrderBiz = scanGenOrder(udiRelevanceResponses, collectOrderBizs, udiEntity, collectOrder); collectOrderBiz.setOrderIdFk(collectOrder.getBillNo()); } else { collectOrderBiz.setScanCount(IntUtil.value(collectOrderBiz.getScanCount()) + 1); collectOrderBiz.setScanActCount(IntUtil.value(collectOrderBiz.getScanActCount()) + scanCount); } } break; default: break; } } collectOrderBizService.saveOrUpdate(collectOrderBiz); int count = 0; if (StrUtil.isEmpty(udiEntity.getSerialNo()) && exitCode != null) { exitCode.setScanCount(IntUtil.value(exitCode.getScanCount()) + 1); exitCode.setScanActCount(IntUtil.value(exitCode.getScanActCount()) + scanCount); exitCode.setBizIdFk(collectOrderBiz.getId()); this.updateById(exitCode); } else { IoCollectOrderCodeMan collectOrderCodeMan = IoCollectOrderCodeMan.builder() .udiCode(code) .orderIdFk(collectOrder.getBillNo()) .bizIdFk(collectOrderBiz.getId()) .relId(collectOrderBiz.getRelId()) .nameCode(udiRelevanceResponse.getNameCode()) .batchNo(udiEntity.getBatchNo()) .serialNo(udiEntity.getSerialNo()) .productDate(udiEntity.getProduceDate()) .expireDate(udiEntity.getExpireDate()) .createTime(new Date()) .createUser(userId) .updateTime(new Date()) .updateUser(userId) .scanCount(count + 1) // .scanCount(scanCount) .isSplitCode(addTagCodeReqeust.getIsSplitCode()) .scanActCount(scanCount) .build(); this.save(collectOrderCodeMan); } collectOrder.setTagStatus(2); collectOrderService.updateById(collectOrder); return collectOrder; } /** * 校验当前产品是否拆零表库存 */ public Boolean vailInSplit(IoCollectOrderBiz collectOrderBiz, Long workPlaceCode, Integer needCount) { List ioSplitCodeEntities = splitCodeService.findSplitCodes(collectOrderBiz.getRelId(), collectOrderBiz.getBatchNo(), workPlaceCode); for (IoSplitCodeEntity ioSplitCodeEntity : ioSplitCodeEntities) { if (IntUtil.value(ioSplitCodeEntity.getRemainCount()) > needCount) { return true; } } return false; } public IoCollectOrderBiz scanGenOrder(List udiRelevanceResponses, List collectOrderBizs, UdiEntity udiEntity, IoCollectOrder collectOrder) { for (UdiRelevanceResponse udiRelevanceResponse : udiRelevanceResponses) { for (IoCollectOrderBiz collectOrderBiz : collectOrderBizs) { if (udiRelevanceResponse.getId().equals(collectOrderBiz.getRelId()) && (StrUtil.isNotEmpty(collectOrderBiz.getBatchNo()) && collectOrderBiz.getBatchNo().equals(udiEntity.getBatchNo())) ) { int actCount = 0; if (IntUtil.value(collectOrder.getOrderCirType()) == 1) { actCount = IntUtil.value(collectOrderBiz.getScanActCount()) + calCountUtil.getCirActCount(udiRelevanceResponse); } else { actCount = IntUtil.value(collectOrderBiz.getScanActCount()) + calCountUtil.getUseActCount(udiRelevanceResponse); } collectOrderBiz.setScanActCount(actCount); collectOrderBiz.setCount(IntUtil.value(collectOrderBiz.getCount()) + 1); return collectOrderBiz; } } } UdiRelevanceResponse udiRelevanceResponse = udiRelevanceResponses.get(0); int actCount = 0; if (IntUtil.value(collectOrder.getOrderCirType()) == 1) { actCount = calCountUtil.getCirActCount(udiRelevanceResponse); } else { actCount = calCountUtil.getUseActCount(udiRelevanceResponse); } return IoCollectOrderBiz.builder() .id(IdUtil.getSnowflakeNextId()) .relId(udiRelevanceResponse.getId()) .thrCode(udiRelevanceResponse.getMainId()) .ybbm(udiRelevanceResponse.getYbbm()) .payFeeCode(udiRelevanceResponse.getPayFeeCode()) .cpmctymc(udiRelevanceResponse.getCpmctymc()) .nameCode(udiRelevanceResponse.getNameCode()) .ggxh(StrUtil.isNotEmpty(udiRelevanceResponse.getGgxh()) ? udiRelevanceResponse.getGgxh() : udiRelevanceResponse.getBzgg()) .batchNo(udiEntity.getBatchNo()) .productDate(udiEntity.getProduceDate()) .expireDate(udiEntity.getExpireDate()) .count(0) .actCount(0) .scanCount(1) .scanActCount(actCount) .measureUnit(udiRelevanceResponse.getMeasname()) .createTime(new Date()) .updateTime(new Date()) .build(); } public IoCollectOrderBiz vailByBatchNo(List udiRelevanceResponses, List collectOrderBizs, UdiEntity udiEntity) { for (UdiRelevanceResponse udiRelevanceResponse : udiRelevanceResponses) { for (IoCollectOrderBiz collectOrderBiz : collectOrderBizs) { if (udiRelevanceResponse.getId().equals(collectOrderBiz.getRelId()) && (StrUtil.emptyIfNull(collectOrderBiz.getBatchNo()).equals(StrUtil.emptyIfNull(udiEntity.getBatchNo())))) { return collectOrderBiz; } } } return null; } public IoCollectOrderBiz vailNoBatchNo(List udiRelevanceResponses, List collectOrderBizs, UdiEntity udiEntity) { List addList = new ArrayList<>(); for (UdiRelevanceResponse udiRelevanceResponse : udiRelevanceResponses) { for (IoCollectOrderBiz collectOrderBiz : collectOrderBizs) { if (udiRelevanceResponse.getId().equals(collectOrderBiz.getRelId())) { addList.add(collectOrderBiz); } } } if (addList.size() > 0) { for (IoCollectOrderBiz collectOrderBiz : addList) { if (StrUtil.trimToEmpty(collectOrderBiz.getBatchNo()).equals(StrUtil.trimToEmpty(udiEntity.getBatchNo()))) { return collectOrderBiz; } if (IntUtil.value(collectOrderBiz.getCount()) > IntUtil.value(collectOrderBiz.getScanCount())) { return collectOrderBiz; } } return addList.get(0); } return null; } public Boolean removeByBillNo(String billNo) { return remove(new LambdaQueryWrapper().eq(IoCollectOrderCodeMan::getOrderIdFk, billNo)); } IoCollectOrderCodeMan exitCode(CollectOrderCodeManRequest collectOrderCodeManRequest) { return collectOrderCodeManMapper.exitCode(collectOrderCodeManRequest); } public List selectByCodeAndOrderId(List codes, String orderId) { QueryWrapper ew = new QueryWrapper<>(); ew.eq("orderIdFk", orderId); ew.in("udiCode", codes); return collectOrderCodeManMapper.selectList(ew); } }