You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
udi-wms-java/src/main/java/com/glxp/api/service/collect/IoCollectOrderCodeManServic...

580 lines
31 KiB
Java

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<IoCollectOrderCodeManMapper, IoCollectOrderCodeMan> {
@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<CollectOrderCodeManResponse> 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<IoCollectOrderCodeMan> listByBillNo(String billNo) {
return collectOrderCodeManMapper.selectList(new LambdaQueryWrapper<IoCollectOrderCodeMan>()
.eq(IoCollectOrderCodeMan::getOrderIdFk, billNo));
}
public IoCollectOrderCodeMan findByCode(String billNo, String code) {
return collectOrderCodeManMapper.selectOne(new LambdaQueryWrapper<IoCollectOrderCodeMan>().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<UdiRelevanceResponse> 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<AnncmntProductEntity>().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<IoCollectOrderBiz> 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<ThrBusTypeOriginEntity>()
.eq(ThrBusTypeOriginEntity::getAction, sysWorkplaceDocumentEntity.getDocumentTypeCode()));
if (one != null) {
ThrSystemEntity thrSystemEntity = thrSystemService.getOne(new LambdaQueryWrapper<ThrSystemEntity>().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<IoSplitCodeEntity> 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<UdiRelevanceResponse> udiRelevanceResponses, List<IoCollectOrderBiz> 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<UdiRelevanceResponse> udiRelevanceResponses, List<IoCollectOrderBiz> 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<UdiRelevanceResponse> udiRelevanceResponses, List<IoCollectOrderBiz> collectOrderBizs, UdiEntity udiEntity) {
List<IoCollectOrderBiz> 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<IoCollectOrderCodeMan>().eq(IoCollectOrderCodeMan::getOrderIdFk, billNo));
}
IoCollectOrderCodeMan exitCode(CollectOrderCodeManRequest collectOrderCodeManRequest) {
return collectOrderCodeManMapper.exitCode(collectOrderCodeManRequest);
}
public List<IoCollectOrderCodeMan> selectByCodeAndOrderId(List<String> codes, String orderId) {
QueryWrapper<IoCollectOrderCodeMan> ew = new QueryWrapper<>();
ew.eq("orderIdFk", orderId);
ew.in("udiCode", codes);
return collectOrderCodeManMapper.selectList(ew);
}
}