Merge branch 'dev_2.5_csconfilt' into dev_2.5_mutiscan

# Conflicts:
#	src/main/java/com/glxp/api/controller/collect/IoCollectOrderController.java
#	src/main/java/com/glxp/api/service/collect/IoCollectOrderCodeManService.java
#	src/main/java/com/glxp/api/service/collect/IoCollectOrderService.java
dev_2.5_mutiscan
yewj 3 months ago
commit 08610634a4

@ -206,7 +206,7 @@ public class IoCollectCodeBackupController extends BaseController {
@GetMapping("/udiwms/basic/collect/ioCollectCodeBackup/retrace") @GetMapping("/udiwms/basic/collect/ioCollectCodeBackup/retrace")
public BaseResponse retraceCodeList(IoCollectCodeRequest ioCollectCodeRequest, public BaseResponse retraceCodeList(IoCollectCodeRequest ioCollectCodeRequest,
BindingResult bindingResult) { BindingResult bindingResult) {
if (bindingResult.hasErrors()) { if (bindingResult.hasErrors()) {
return ResultVOUtils.error(ResultEnum.PARAM_VERIFY_FALL, bindingResult.getFieldError().getDefaultMessage()); return ResultVOUtils.error(ResultEnum.PARAM_VERIFY_FALL, bindingResult.getFieldError().getDefaultMessage());
} }

@ -36,7 +36,6 @@ import com.glxp.api.service.inout.IoSplitCodeService;
import com.glxp.api.util.Excel.ExcelHandler; import com.glxp.api.util.Excel.ExcelHandler;
import com.glxp.api.util.Excel.Exception.RenException; import com.glxp.api.util.Excel.Exception.RenException;
import com.glxp.api.util.IntUtil; import com.glxp.api.util.IntUtil;
import com.glxp.api.util.StringUtils;
import com.glxp.api.util.udi.FilterUdiUtils; import com.glxp.api.util.udi.FilterUdiUtils;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
@ -81,9 +80,7 @@ public class IoCollectOrderController extends BaseController {
request.setUserId(userId.toString()); request.setUserId(userId.toString());
page = basicCollectUserService.filterList(request); page = basicCollectUserService.filterList(request);
if (page != null && page.size() > 0) { if (page != null && page.size() > 0) {
workPlaceCodes = page.stream() workPlaceCodes = page.stream().map(UserWorkResponse::getWorkplaceId).collect(Collectors.toList());
.map(UserWorkResponse::getWorkplaceId)
.collect(Collectors.toList());
} }
//通过工位列表 获取出 业务列表 //通过工位列表 获取出 业务列表
workBindBusTypeRequest.setWorkPlaceCodes(workPlaceCodes); workBindBusTypeRequest.setWorkPlaceCodes(workPlaceCodes);
@ -99,9 +96,7 @@ public class IoCollectOrderController extends BaseController {
} }
if (CollUtil.isNotEmpty(sysWorkplaceDocumentResponses)) { if (CollUtil.isNotEmpty(sysWorkplaceDocumentResponses)) {
Set<String> uniqueDocumentTypeCodesLinkedHashSet = sysWorkplaceDocumentResponses.stream() Set<String> uniqueDocumentTypeCodesLinkedHashSet = sysWorkplaceDocumentResponses.stream().map(SysWorkplaceDocumentResponse::getDocumentTypeCode).collect(Collectors.toCollection(LinkedHashSet::new));
.map(SysWorkplaceDocumentResponse::getDocumentTypeCode)
.collect(Collectors.toCollection(LinkedHashSet::new));
List<String> documentTypeCodes = new ArrayList<>(uniqueDocumentTypeCodesLinkedHashSet); List<String> documentTypeCodes = new ArrayList<>(uniqueDocumentTypeCodesLinkedHashSet);
collectOrderRequest.setDocumentTypeCodes(documentTypeCodes); collectOrderRequest.setDocumentTypeCodes(documentTypeCodes);
@ -129,8 +124,7 @@ public class IoCollectOrderController extends BaseController {
request.setBusType(collectOrderRequest.getBusType()); request.setBusType(collectOrderRequest.getBusType());
request.setTagStatusList(List.of(1)); request.setTagStatusList(List.of(1));
List<IoCollectOrderResponse> orderResponses = collectOrderService.filterList(request); List<IoCollectOrderResponse> orderResponses = collectOrderService.filterList(request);
if (CollUtil.isNotEmpty(orderResponses)) if (CollUtil.isNotEmpty(orderResponses)) return ResultVOUtils.success(orderResponses.get(0));
return ResultVOUtils.success(orderResponses.get(0));
return ResultVOUtils.error(500, "该工位已无待处理单据"); return ResultVOUtils.error(500, "该工位已无待处理单据");
} }
@ -155,20 +149,17 @@ public class IoCollectOrderController extends BaseController {
request.setUpdateUser(getUserId()); request.setUpdateUser(getUserId());
request.setTagStatus(2); request.setTagStatus(2);
List<IoCollectOrderResponse> orderResponses = collectOrderService.filterList(request); List<IoCollectOrderResponse> orderResponses = collectOrderService.filterList(request);
if (CollUtil.isNotEmpty(orderResponses)) if (CollUtil.isNotEmpty(orderResponses)) return ResultVOUtils.success(orderResponses.get(0));
return ResultVOUtils.success(orderResponses.get(0));
else { else {
request.setTagStatus(-1); request.setTagStatus(-1);
orderResponses = collectOrderService.filterList(request); orderResponses = collectOrderService.filterList(request);
if (CollUtil.isNotEmpty(orderResponses)) if (CollUtil.isNotEmpty(orderResponses)) return ResultVOUtils.success(orderResponses.get(0));
return ResultVOUtils.success(orderResponses.get(0));
else { else {
IoCollectSet collectSet = collectSetService.getSet(); IoCollectSet collectSet = collectSetService.getSet();
if (IntUtil.value(collectSet.getAutoAllotOrder())) { if (IntUtil.value(collectSet.getAutoAllotOrder())) {
request.setTagStatus(1); request.setTagStatus(1);
orderResponses = collectOrderService.filterList(request); orderResponses = collectOrderService.filterList(request);
if (CollUtil.isNotEmpty(orderResponses)) if (CollUtil.isNotEmpty(orderResponses)) return ResultVOUtils.success(orderResponses.get(0));
return ResultVOUtils.success(orderResponses.get(0));
} }
} }
} }
@ -193,13 +184,11 @@ public class IoCollectOrderController extends BaseController {
request.setLimit(1); request.setLimit(1);
request.setBillNo(collectOrderRequest.getBillNo()); request.setBillNo(collectOrderRequest.getBillNo());
List<IoCollectOrderResponse> orderResponses = collectOrderService.filterList(request); List<IoCollectOrderResponse> orderResponses = collectOrderService.filterList(request);
if (CollUtil.isNotEmpty(orderResponses)) if (CollUtil.isNotEmpty(orderResponses)) return ResultVOUtils.success(orderResponses.get(0));
return ResultVOUtils.success(orderResponses.get(0));
else { else {
request.setTagStatus(-1); request.setTagStatus(-1);
orderResponses = collectOrderService.filterList(request); orderResponses = collectOrderService.filterList(request);
if (CollUtil.isNotEmpty(orderResponses)) if (CollUtil.isNotEmpty(orderResponses)) return ResultVOUtils.success(orderResponses.get(0));
return ResultVOUtils.success(orderResponses.get(0));
} }
return ResultVOUtils.error(500, "未查到待处理单据"); return ResultVOUtils.error(500, "未查到待处理单据");
} }
@ -415,31 +404,54 @@ public class IoCollectOrderController extends BaseController {
@PostMapping("/udiwms/basic/collect/order/finish") @PostMapping("/udiwms/basic/collect/order/finish")
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public BaseResponse saveFinishOrder(@RequestBody CollectOrderRequest collectOrderRequest) { public BaseResponse saveFinishOrder(@RequestBody CollectOrderRequest collectOrderRequest) {
List<String> billNos = new ArrayList<>();
if (StrUtil.isEmpty(collectOrderRequest.getBillNo())) return ResultVOUtils.error(500, "单号不能为空!");
IoCollectOrder collectOrder = collectOrderService.getByBillNo(collectOrderRequest.getBillNo());
if (StrUtil.isNotEmpty(collectOrder.getSummaryNo())) {
billNos = collectOrderService.getBillBySummary(collectOrder.getSummaryNo());
} else {
billNos.add(collectOrderRequest.getBillNo());
}
boolean isAllTag = true;
if (!IntUtil.value(collectOrderRequest.getConfirmFinish())) { if (!IntUtil.value(collectOrderRequest.getConfirmFinish())) {
//1.校验是否全部自动赋码 //1.校验是否全部自动赋码
CollectOrderBizRequest collectOrderBizRequest = new CollectOrderBizRequest(); CollectOrderBizRequest collectOrderBizRequest = new CollectOrderBizRequest();
collectOrderBizRequest.setOrderIdFk(collectOrderRequest.getBillNo()); collectOrderBizRequest.setOrderIdFk(collectOrderRequest.getBillNo());
List<CollectOrderBizResponse> collectOrderBizResponses = collectOrderService.combieOrderDetail(collectOrderBizRequest);
boolean isAllTag = true;
String msg = ""; String msg = "";
if (CollUtil.isNotEmpty(collectOrderBizResponses)) { for (String billNo : billNos) {
for (int i = 0; i < collectOrderBizResponses.size(); i++) { collectOrderBizRequest.setOrderIdFk(billNo);
CollectOrderBizResponse collectOrderBizResponse = collectOrderBizResponses.get(i); List<CollectOrderBizResponse> collectOrderBizResponses = collectOrderService.combieOrderDetail(collectOrderBizRequest);
if (!(StrUtil.isNotEmpty(collectOrderBizResponse.getFinishUdiCode()) || collectOrderBizResponse.getAutoTagStatus() == 2)) { if (CollUtil.isNotEmpty(collectOrderBizResponses)) {
isAllTag = false; for (int i = 0; i < collectOrderBizResponses.size(); i++) {
String cpmctymc = collectOrderBizResponse.getCpmctymc(); CollectOrderBizResponse collectOrderBizResponse = collectOrderBizResponses.get(i);
Integer count = collectOrderBizResponse.getCount(); if (!(StrUtil.isNotEmpty(collectOrderBizResponse.getFinishUdiCode()) || collectOrderBizResponse.getAutoTagStatus() == 2)) {
Integer autoResCount = IntUtil.value(collectOrderBizResponse.getAutoResCount()); isAllTag = false;
msg = msg + " " + cpmctymc + ":未采集数量" + (count - autoResCount) + ";"; String cpmctymc = collectOrderBizResponse.getCpmctymc();
Integer count = collectOrderBizResponse.getCount();
Integer autoResCount = IntUtil.value(collectOrderBizResponse.getAutoResCount());
msg = msg + " " + cpmctymc + ":未采集数量" + (count - autoResCount) + ";";
}
} }
} }
} }
if (!isAllTag) { if (!isAllTag) {
return ResultVOUtils.error(502, "该业务单据未全部赋码【" + msg.replaceAll(";$", "") + "】,是否强制完成单据?"); return ResultVOUtils.error(502, "该业务单据未全部赋码【" + msg.replaceAll(";$", "") + "】,是否强制完成单据?");
} }
} }
collectOrderService.finishOrder(collectOrderRequest, getUser(), false); if (CollUtil.isNotEmpty(billNos)) {
List<IoCollectOrder> collectOrders = collectOrderService.list(new LambdaQueryWrapper<IoCollectOrder>().in(IoCollectOrder::getBillNo, billNos));
if (CollUtil.isNotEmpty(collectOrders)) {
for (IoCollectOrder temp : collectOrders) {
CollectOrderRequest tempRequest = new CollectOrderRequest();
BeanUtils.copyProperties(temp, tempRequest);
collectOrderService.finishOrder(tempRequest, getUser(), false);
}
}
} else {
collectOrderService.finishOrder(collectOrderRequest, getUser(), false);
}
return ResultVOUtils.success(); return ResultVOUtils.success();
} }
@ -453,9 +465,14 @@ public class IoCollectOrderController extends BaseController {
if (collectOrderRequest.getIsCheckFinish() != null) { if (collectOrderRequest.getIsCheckFinish() != null) {
collectOrderBizRequest.setIsOrderCheck(collectOrderRequest.getIsCheckFinish()); collectOrderBizRequest.setIsOrderCheck(collectOrderRequest.getIsCheckFinish());
} }
IoCollectOrder collectOrder = collectOrderService.getByBillNo(collectOrderRequest.getBillNo());
if (StrUtil.isNotEmpty(collectOrder.getSummaryNo())) {
collectOrderBizRequest.setSummaryNo(collectOrder.getSummaryNo());
}
List<CollectOrderBizResponse> collectOrderBizResponses = collectOrderService.combieOrderDetail(collectOrderBizRequest); List<CollectOrderBizResponse> collectOrderBizResponses = collectOrderService.combieOrderDetail(collectOrderBizRequest);
boolean isAllTag = collectOrderBizResponses.stream() boolean isAllTag = collectOrderBizResponses.stream().allMatch(obj -> StrUtil.isNotEmpty(obj.getFinishUdiCode()) || obj.getAutoTagStatus() == 2);
.allMatch(obj -> StrUtil.isNotEmpty(obj.getFinishUdiCode()) || obj.getAutoTagStatus() == 2);
} }
collectOrderService.finishOrder(collectOrderRequest, getUser(), false); collectOrderService.finishOrder(collectOrderRequest, getUser(), false);
return ResultVOUtils.success(); return ResultVOUtils.success();
@ -480,8 +497,7 @@ public class IoCollectOrderController extends BaseController {
if (!IntUtil.value(collectSet.getGetSplitConfirm())) { if (!IntUtil.value(collectSet.getGetSplitConfirm())) {
confirmOrderBiz.setSkipSplitConfirm(true); confirmOrderBiz.setSkipSplitConfirm(true);
} }
ConfirmResponse splitInfo = splitCodeService.confirmBizAutiTagCode(confirmOrderBiz, confirmOrderBiz.getQueueCode(), ConfirmResponse splitInfo = splitCodeService.confirmBizAutiTagCode(confirmOrderBiz, confirmOrderBiz.getQueueCode(), confirmOrderBiz.getConfirmSplitCode(), confirmOrderBiz.getSkipSplitConfirm());
confirmOrderBiz.getConfirmSplitCode(), confirmOrderBiz.getSkipSplitConfirm());
return ResultVOUtils.success(splitInfo); return ResultVOUtils.success(splitInfo);
} }
@ -498,8 +514,7 @@ public class IoCollectOrderController extends BaseController {
return ResultVOUtils.error(500, "单据号不能为空!"); return ResultVOUtils.error(500, "单据号不能为空!");
} }
List<IoCollectOrderBiz> collectOrderBizs = collectOrderBizService.listByBillNo(collectOrderRequest.getBillNo()); List<IoCollectOrderBiz> collectOrderBizs = collectOrderBizService.listByBillNo(collectOrderRequest.getBillNo());
boolean allConfirmed = CollUtil.isNotEmpty(collectOrderBizs) && boolean allConfirmed = CollUtil.isNotEmpty(collectOrderBizs) && collectOrderBizs.stream().allMatch(biz -> IntUtil.value(biz.getGetConfirm()));
collectOrderBizs.stream().allMatch(biz -> IntUtil.value(biz.getGetConfirm()));
if (allConfirmed) { if (allConfirmed) {
collectOrderService.confirmFinishOrder(collectOrderRequest, getUser()); collectOrderService.confirmFinishOrder(collectOrderRequest, getUser());
return ResultVOUtils.success("单据完成!"); return ResultVOUtils.success("单据完成!");
@ -634,8 +649,7 @@ public class IoCollectOrderController extends BaseController {
@PostMapping("/udiwms/basic/collect/order/finishReturnOrder") @PostMapping("/udiwms/basic/collect/order/finishReturnOrder")
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public BaseResponse finishReturnOrder(@RequestBody CollectOrderRequest collectOrderRequest) { public BaseResponse finishReturnOrder(@RequestBody CollectOrderRequest collectOrderRequest) {
return collectOriginService.finishReturnOrder(collectOrderRequest); return collectOriginService.submitreturnOrder(collectOrderRequest,1);
// return collectOriginService.submitreturnOrder(collectOrderRequest,1);
} }

@ -1830,12 +1830,16 @@ public class IoCodeTempController extends BaseController {
return ResultVOUtils.error(533, "扫码重复!"); return ResultVOUtils.error(533, "扫码重复!");
} }
} else if (bussinessTypeEntity.getAction().equals(ConstantType.SPLIT_RETURN)) { } else if (bussinessTypeEntity.getAction().equals(ConstantType.SPLIT_RETURN)) {
if (fifoCodeEntity == null) { IoCollectSet collectSet = collectSetService.getSet();
return ResultVOUtils.error(500, "当前追溯码未上货或已出库完毕!"); if (!IntUtil.value(collectSet.getConflictReturn())) {
} if (fifoCodeEntity == null) {
if (splitCodeEntity != null) {//&& StrUtil.isNotEmpty(splitCodeEntity.getSerialNo()) return ResultVOUtils.error(500, "当前追溯码未上货或已出库完毕!");
return ResultVOUtils.error(533, "当前追溯码已经拆零,无法退货!"); }
if (splitCodeEntity != null) {//&& StrUtil.isNotEmpty(splitCodeEntity.getSerialNo())
return ResultVOUtils.error(533, "当前追溯码已经拆零,无法退货!");
}
} }
if (codeTempEntity != null) { if (codeTempEntity != null) {
return ResultVOUtils.error(533, "扫码重复!"); return ResultVOUtils.error(533, "扫码重复!");
} }

@ -433,11 +433,11 @@ public class IoOrderController extends BaseController {
if (bussinessTypeEntity.getAction().equals(ConstantType.SPLIT_RETURN)) { if (bussinessTypeEntity.getAction().equals(ConstantType.SPLIT_RETURN)) {
for (IoCodeTempEntity codeTempEntity : codeTempEntities) { for (IoCodeTempEntity codeTempEntity : codeTempEntities) {
IoSplitFifoCodeEntity fifoCodeEntity = fifoCodeService.findByCode(codeTempEntity.getCode(), addOrderRequest.getWorkPlaceCode()); IoSplitFifoCodeEntity fifoCodeEntity = fifoCodeService.findByCode(codeTempEntity.getCode(), addOrderRequest.getWorkPlaceCode());
if (fifoCodeEntity == null && StrUtil.isEmpty(fifoCodeEntity.getSerialNo())) { // if (fifoCodeEntity == null) {
return ResultVOUtils.error(500, "当前追溯码:" + fifoCodeEntity.getCode() + "未上货!"); // return ResultVOUtils.error(500, "当前追溯码:" + fifoCodeEntity.getCode() + "未上货!");
} // }
//校验工位库存 //校验工位库存
if (fifoCodeEntity.getTotalCount() < codeTempEntity.getReCount()) { if (fifoCodeEntity!=null && fifoCodeEntity.getTotalCount() < codeTempEntity.getReCount()) {
return ResultVOUtils.error(500, "当前码:" + fifoCodeEntity.getCode() + "库存不足,请更改码明细!"); return ResultVOUtils.error(500, "当前码:" + fifoCodeEntity.getCode() + "库存不足,请更改码明细!");
} }
} }

@ -130,6 +130,15 @@ public class IoCollectSet implements Serializable {
private Boolean delayTageCode; private Boolean delayTageCode;
@TableField(value = "conflictScan")
@ApiModelProperty(value = "是否启用扫码冲突替换10否")
private Boolean conflictScan;
@TableField(value = "conflictReturn")
@ApiModelProperty(value = "是否启用退货扫码冲突替换10否")
private Boolean conflictReturn;
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
@TableField(exist = false) @TableField(exist = false)

@ -57,7 +57,10 @@ import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.util.*; import java.util.ArrayList;
import java.util.Collections;
import java.util.Date;
import java.util.List;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@Service @Service
@ -139,18 +142,12 @@ public class IoCollectOrderCodeManService extends ServiceImpl<IoCollectOrderCode
SysWorkplacePutRel sysWorkplacePutRel = workplacePutRelService.findPutWorkPlace(workPlace.getWorkplaceId(), null); SysWorkplacePutRel sysWorkplacePutRel = workplacePutRelService.findPutWorkPlace(workPlace.getWorkplaceId(), null);
IoCollectSet collectSet = collectSetService.getSet(); IoCollectSet collectSet = collectSetService.getSet();
Long putWorkPlaceCode = null; Long putWorkPlaceCode = null;
if (sysWorkplacePutRel != null) if (sysWorkplacePutRel != null) putWorkPlaceCode = sysWorkplacePutRel.getWorkPlaceCode();
putWorkPlaceCode = sysWorkplacePutRel.getWorkPlaceCode();
if (workPlace == null) throw new JsonException(500, "请先选择工位"); if (workPlace == null) throw new JsonException(500, "请先选择工位");
SysWorkplaceDocumentEntity sysWorkplaceDocumentEntity = sysWorkplaceDocumentService.findByWorkplaceCode(workPlace.getWorkplaceId(), addTagCodeReqeust.getBusType()); SysWorkplaceDocumentEntity sysWorkplaceDocumentEntity = sysWorkplaceDocumentService.findByWorkplaceCode(workPlace.getWorkplaceId(), addTagCodeReqeust.getBusType());
IoCollectOrderBiz collectOrderBiz = null; IoCollectOrderBiz collectOrderBiz = null;
IoCollectOrder collectOrder = null; IoCollectOrder collectOrder = null;
// try {
// Thread.sleep(3*1000);
// } catch (InterruptedException e) {
// throw new RuntimeException(e);
// }
//1.校验UDI码完整性 //1.校验UDI码完整性
String code = addTagCodeReqeust.getCode(); String code = addTagCodeReqeust.getCode();
if (StringUtils.isBlank(code)) throw new JsonException(ResultEnum.DATA_ERROR.getMessage()); if (StringUtils.isBlank(code)) throw new JsonException(ResultEnum.DATA_ERROR.getMessage());
@ -181,7 +178,6 @@ public class IoCollectOrderCodeManService extends ServiceImpl<IoCollectOrderCode
} }
} }
} else { } else {
if (udiRelevanceResponse.getDistributeMaxLevel() != null && IntUtil.value(udiRelevanceResponse.getDistributeMaxLevel()) < IntUtil.value(udiRelevanceResponse.getPackLevel())) { if (udiRelevanceResponse.getDistributeMaxLevel() != null && IntUtil.value(udiRelevanceResponse.getDistributeMaxLevel()) < IntUtil.value(udiRelevanceResponse.getPackLevel())) {
throw new JsonException(500, "当前产品不支持采集该包装层级追溯码!"); throw new JsonException(500, "当前产品不支持采集该包装层级追溯码!");
@ -272,7 +268,13 @@ public class IoCollectOrderCodeManService extends ServiceImpl<IoCollectOrderCode
} }
} }
IoSplitCodeEntity splitCodeEntity = splitCodeService.findByCode(code, putWorkPlaceCode); IoSplitCodeEntity splitCodeEntity = splitCodeService.findByCode(code, putWorkPlaceCode);
List<IoCollectOrderBiz> collectOrderBizs = collectOrderBizService.listByBillNo(addTagCodeReqeust.getBillNo()); List<IoCollectOrderBiz> collectOrderBizs;
collectOrder = collectOrderService.getByBillNo(addTagCodeReqeust.getBillNo());
if (StrUtil.isNotEmpty(collectOrder.getSummaryNo())) {
collectOrderBizs = collectOrderService.getOrderBizs(collectOrder.getSummaryNo());
} else {
collectOrderBizs = collectOrderBizService.listByBillNo(addTagCodeReqeust.getBillNo());
}
//2.校验是否处方单UDI码 //2.校验是否处方单UDI码
if (IntUtil.value(sysWorkplaceDocumentEntity.getScanType()) == WorkOperType.TYPE_GEN_ORDER) { if (IntUtil.value(sysWorkplaceDocumentEntity.getScanType()) == WorkOperType.TYPE_GEN_ORDER) {
if (StrUtil.isEmpty(addTagCodeReqeust.getBillNo())) { if (StrUtil.isEmpty(addTagCodeReqeust.getBillNo())) {
@ -544,26 +546,11 @@ public class IoCollectOrderCodeManService extends ServiceImpl<IoCollectOrderCode
if (isExitRel(code, collectOrder.getBillNo())) { if (isExitRel(code, collectOrder.getBillNo())) {
throw new JsonException(500, "当前追溯码已上传关联关系,请勿重复扫码!"); throw new JsonException(500, "当前追溯码已上传关联关系,请勿重复扫码!");
} }
IoCollectOrderCodeMan collectOrderCodeMan = IoCollectOrderCodeMan collectOrderCodeMan = IoCollectOrderCodeMan.builder().udiCode(code)
IoCollectOrderCodeMan.builder() .orderIdFk(collectOrderBiz.getOrderIdFk())
.udiCode(code) .bizIdFk(collectOrderBiz.getId()).relId(collectOrderBiz.getRelId()).nameCode(udiEntity.getUdi()).batchNo(udiEntity.getBatchNo() == null ? collectOrderBiz.getBatchNo() : udiEntity.getBatchNo()).serialNo(udiEntity.getSerialNo()).productDate(udiEntity.getProduceDate() == null ? collectOrderBiz.getProductDate() : udiEntity.getProduceDate()).expireDate(udiEntity.getExpireDate() == null ? collectOrderBiz.getExpireDate() : udiEntity.getExpireDate()).createTime(new Date()).createUser(userId).updateTime(new Date()).updateUser(userId).scanCount(count + 1)
.orderIdFk(collectOrder.getBillNo())
.bizIdFk(collectOrderBiz.getId())
.relId(collectOrderBiz.getRelId())
.nameCode(udiEntity.getUdi())
.batchNo(udiEntity.getBatchNo() == null ? collectOrderBiz.getBatchNo() : udiEntity.getBatchNo())
.serialNo(udiEntity.getSerialNo())
.productDate(udiEntity.getProduceDate() == null ? collectOrderBiz.getProductDate() : udiEntity.getProduceDate())
.expireDate(udiEntity.getExpireDate() == null ? collectOrderBiz.getExpireDate() : udiEntity.getExpireDate())
.createTime(new Date())
.createUser(userId)
.updateTime(new Date())
.updateUser(userId)
.scanCount(count + 1)
// .scanCount(scanCount) // .scanCount(scanCount)
.isSplitCode(addTagCodeReqeust.getIsSplitCode()) .isSplitCode(addTagCodeReqeust.getIsSplitCode()).scanActCount(scanCount).build();
.scanActCount(scanCount)
.build();
RelCodeDetailResponse codeRelEntity = relCodeDetailService.findByCode(code); RelCodeDetailResponse codeRelEntity = relCodeDetailService.findByCode(code);
@ -630,9 +617,7 @@ public class IoCollectOrderCodeManService extends ServiceImpl<IoCollectOrderCode
public IoCollectOrderBiz scanGenOrder(List<UdiRelevanceResponse> udiRelevanceResponses, List<IoCollectOrderBiz> collectOrderBizs, UdiEntity udiEntity, IoCollectOrder collectOrder) { public IoCollectOrderBiz scanGenOrder(List<UdiRelevanceResponse> udiRelevanceResponses, List<IoCollectOrderBiz> collectOrderBizs, UdiEntity udiEntity, IoCollectOrder collectOrder) {
for (UdiRelevanceResponse udiRelevanceResponse : udiRelevanceResponses) { for (UdiRelevanceResponse udiRelevanceResponse : udiRelevanceResponses) {
for (IoCollectOrderBiz collectOrderBiz : collectOrderBizs) { for (IoCollectOrderBiz collectOrderBiz : collectOrderBizs) {
if (udiRelevanceResponse.getId().equals(collectOrderBiz.getRelId()) && if (udiRelevanceResponse.getId().equals(collectOrderBiz.getRelId()) && (StrUtil.trimToEmpty(collectOrderBiz.getBatchNo()).equals(StrUtil.trimToEmpty(udiEntity.getBatchNo())))) {
(StrUtil.trimToEmpty(collectOrderBiz.getBatchNo()).equals(StrUtil.trimToEmpty(udiEntity.getBatchNo())))
) {
int actCount = 0; int actCount = 0;
if (IntUtil.value(collectOrder.getOrderCirType()) == 1) { if (IntUtil.value(collectOrder.getOrderCirType()) == 1) {
actCount = +calCountUtil.getCirActCount(udiRelevanceResponse); actCount = +calCountUtil.getCirActCount(udiRelevanceResponse);
@ -780,9 +765,7 @@ public class IoCollectOrderCodeManService extends ServiceImpl<IoCollectOrderCode
} else { } else {
List<VailCodeResultResponse> vailCodeResultResponses = new ArrayList<>(); List<VailCodeResultResponse> vailCodeResultResponses = new ArrayList<>();
for (String code : request.getUdiCodeList()) { for (String code : request.getUdiCodeList()) {
IoCollectOrderCodeMan ioCollectOrderCodeMan = collectOrderCodeManMapper.selectOne(new LambdaQueryWrapper<IoCollectOrderCodeMan>() IoCollectOrderCodeMan ioCollectOrderCodeMan = collectOrderCodeManMapper.selectOne(new LambdaQueryWrapper<IoCollectOrderCodeMan>().eq(IoCollectOrderCodeMan::getOrderIdFk, request.getOrderIdFk()).eq(IoCollectOrderCodeMan::getUdiCode, code));
.eq(IoCollectOrderCodeMan::getOrderIdFk, request.getOrderIdFk())
.eq(IoCollectOrderCodeMan::getUdiCode, code));
VailCodeResultResponse vailCodeResultResponse = new VailCodeResultResponse(); VailCodeResultResponse vailCodeResultResponse = new VailCodeResultResponse();
if (ioCollectOrderCodeMan != null) { if (ioCollectOrderCodeMan != null) {
vailCodeResultResponse.setStatus(1); vailCodeResultResponse.setStatus(1);

@ -1013,4 +1013,19 @@ public class IoCollectOrderService extends ServiceImpl<IoCollectOrderMapper, IoC
return new ArrayList<>(summarizedMap.values()); return new ArrayList<>(summarizedMap.values());
} }
public List<String> getBillBySummary(String summaryNo) {
List<String> billNos = listObjs(new LambdaQueryWrapper<IoCollectOrder>().select(IoCollectOrder::getBillNo).eq(IoCollectOrder::getSummaryNo, summaryNo), Object::toString);
return billNos;
}
public List<IoCollectOrderBiz> getOrderBizs(String summaryNo) {
List<IoCollectOrderBiz> collectOrderBizs = null;
List<String> billNos = getBillBySummary(summaryNo);
if (CollUtil.isNotEmpty(billNos)) {
collectOrderBizs = collectOrderBizService.list(new LambdaQueryWrapper<IoCollectOrderBiz>().in(IoCollectOrderBiz::getOrderIdFk, billNos));
}
return collectOrderBizs;
}
} }

@ -919,11 +919,14 @@ public class AddCoodeService {
return ResultVOUtils.error(533, "扫码重复!"); return ResultVOUtils.error(533, "扫码重复!");
} }
} else if (bussinessTypeEntity.getAction().equals(ConstantType.SPLIT_RETURN)) { } else if (bussinessTypeEntity.getAction().equals(ConstantType.SPLIT_RETURN)) {
if (fifoCodeEntity == null) { IoCollectSet collectSet = collectSetService.getSet();
return ResultVOUtils.error(500, "当前追溯码未上货或已出库完毕!"); if (!IntUtil.value(collectSet.getConflictReturn())) {
} if (fifoCodeEntity == null) {
if (splitCodeEntity != null) {//&& StrUtil.isNotEmpty(splitCodeEntity.getSerialNo()) return ResultVOUtils.error(500, "当前追溯码未上货或已出库完毕!");
return ResultVOUtils.error(533, "当前追溯码已经拆零,无法退货!"); }
if (splitCodeEntity != null) {//&& StrUtil.isNotEmpty(splitCodeEntity.getSerialNo())
return ResultVOUtils.error(533, "当前追溯码已经拆零,无法退货!");
}
} }
if (codeTempEntity != null) { if (codeTempEntity != null) {
return ResultVOUtils.error(533, "扫码重复!"); return ResultVOUtils.error(533, "扫码重复!");

@ -1283,7 +1283,7 @@ public class IoCheckInoutService {
} else if (orderEntity.getAction().equals(ConstantType.SPLIT_RETURN)) { } else if (orderEntity.getAction().equals(ConstantType.SPLIT_RETURN)) {
//拆零预出库退回 //拆零预出库退回
List<IoCodeEntity> codeList = codeService.findByOrderId(orderEntity.getBillNo()); List<IoCodeEntity> codeList = codeService.findByOrderId(orderEntity.getBillNo());
fifoInvService.removeInv(codeList, orderEntity.getWorkPlaceCode()); fifoInvService.removeInv(codeList, orderEntity);
splitFifoCodeService.updateAllInvAlert(orderEntity.getWorkPlaceCode()); splitFifoCodeService.updateAllInvAlert(orderEntity.getWorkPlaceCode());
} }
} }

@ -199,20 +199,24 @@ public class IoSplitCodeService extends ServiceImpl<IoSplitCodeMapper, IoSplitCo
collectOrderBizService.updateById(collectOrderBiz); collectOrderBizService.updateById(collectOrderBiz);
} }
@Resource
IoCollectSetService collectSetService;
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public void finishAutoTagCode(IoCollectOrder collectOrder, Boolean isAuto, String queueCode) { public void finishAutoTagCode(IoCollectOrder collectOrder, Boolean isAuto, String queueCode) {
IoCollectSet collectSet = collectSetService.getSet();
SysWorkplacePutRel sysWorkplacePutRel = workplacePutRelService.findPutWorkPlace(collectOrder.getWorkPlaceCode(), collectOrder.getBusType()); SysWorkplacePutRel sysWorkplacePutRel = workplacePutRelService.findPutWorkPlace(collectOrder.getWorkPlaceCode(), collectOrder.getBusType());
Long putWorkPlaceCode = null; Long putWorkPlaceCode = null;
if (sysWorkplacePutRel != null) putWorkPlaceCode = sysWorkplacePutRel.getWorkPlaceCode(); if (sysWorkplacePutRel != null) putWorkPlaceCode = sysWorkplacePutRel.getWorkPlaceCode();
List<IoCollectOrderBiz> collectOrderBizs = collectOrderBizService.listByBillNo(collectOrder.getBillNo()); List<IoCollectOrderBiz> collectOrderBizs = null;
collectOrderBizs = collectOrderBizService.listByBillNo(collectOrder.getBillNo());
//如果手动扫码判断该码是否在队列里,如果已在队列,则队列里剔除 //如果手动扫码判断该码是否在队列里,如果已在队列,则队列里剔除
List<IoCollectOrderCodeMan> collectOrderCodeMEN = collectOrderCodeManService.listByBillNo(collectOrder.getBillNo()); List<IoCollectOrderCodeMan> collectOrderCodeMEN = collectOrderCodeManService.listByBillNo(collectOrder.getBillNo());
if (CollUtil.isNotEmpty(collectOrderCodeMEN)) { if (CollUtil.isNotEmpty(collectOrderCodeMEN)) {
//扫码冲突 //扫码冲突
// dealOrderReplace(collectOrderCodeMEN, collectOrder,putWorkPlaceCode); if (IntUtil.value(collectSet.getConflictScan())) {
dealOrderReplace(collectOrderCodeMEN, collectOrder, putWorkPlaceCode);
}
for (IoCollectOrderCodeMan collectOrderCodeMan : collectOrderCodeMEN) { for (IoCollectOrderCodeMan collectOrderCodeMan : collectOrderCodeMEN) {
if (IntUtil.value(collectOrderCodeMan.getRemoveFlag())) { if (IntUtil.value(collectOrderCodeMan.getRemoveFlag())) {
continue; continue;
@ -371,17 +375,22 @@ public class IoSplitCodeService extends ServiceImpl<IoSplitCodeMapper, IoSplitCo
/** /**
* *
*/ */
public void dealOrderReplace(List<IoCollectOrderCodeMan> collectOrderCodeManList, IoCollectOrder collectOrder,Long putWorkPlaceCode) { public void dealOrderReplace(List<IoCollectOrderCodeMan> collectOrderCodeManList, IoCollectOrder collectOrder, Long putWorkPlaceCode) {
for (IoCollectOrderCodeMan collectOrderCodeMan : collectOrderCodeManList) { for (IoCollectOrderCodeMan collectOrderCodeMan : collectOrderCodeManList) {
// 1. 查找已完成成单据扫码是否已被分配 // 1. 查找已完成成单据扫码是否已被分配
List<IoCollectCodeBackup> collectCodeBackups = collectCodeBackMapper.selectList(new LambdaQueryWrapper<IoCollectCodeBackup>().eq(IoCollectCodeBackup::getBusType, collectOrder.getBusType()).eq(IoCollectCodeBackup::getCode, collectOrderCodeMan.getUdiCode()).eq(IoCollectCodeBackup::getIsSplitCode, 0)); List<IoCollectCodeBackup> collectCodeBackups = collectCodeBackMapper.selectList(new LambdaQueryWrapper<IoCollectCodeBackup>().eq(IoCollectCodeBackup::getBusType, collectOrder.getBusType()).eq(IoCollectCodeBackup::getCode, collectOrderCodeMan.getUdiCode()));
if (CollUtil.isNotEmpty(collectCodeBackups)) { if (CollUtil.isNotEmpty(collectCodeBackups)) {
IoCollectCodeBackup collectCodeBackup = collectCodeBackups.get(0); IoCollectCodeBackup collectCodeBackup = collectCodeBackups.get(0);
// 1. 如果本身标记为手动整取,则应报错提示,重复扫码
if (IntUtil.value(collectCodeBackup.getFifoSplit()) == 3) { if (IntUtil.value(collectCodeBackup.getFifoSplit()) == 3) {
throw new JsonException(500, collectCodeBackup.getCode() + "重复扫码,请盘查后重试!"); throw new JsonException(500, collectCodeBackup.getCode() + "重复扫码,请盘查后重试!");
} }
// 不管是自动拆零或者手动拆零直接忽略,不走冲突赋码逻辑
if (IntUtil.value(collectCodeBackup.getFifoSplit()) != 2) {
break;
}
IoCollectOrderBackup collectOrderBackup = collectOrderBackupMapper.selectOne(new LambdaQueryWrapper<IoCollectOrderBackup>().eq(IoCollectOrderBackup::getBillNo, collectCodeBackup.getBillNo())); IoCollectOrderBackup collectOrderBackup = collectOrderBackupMapper.selectOne(new LambdaQueryWrapper<IoCollectOrderBackup>().eq(IoCollectOrderBackup::getBillNo, collectCodeBackup.getBillNo()));
collectOrderCodeMan.setRemoveFlag(true); collectOrderCodeMan.setRemoveFlag(true);
@ -403,7 +412,7 @@ public class IoSplitCodeService extends ServiceImpl<IoSplitCodeMapper, IoSplitCo
if (splitFifoCodeEntity == null) { if (splitFifoCodeEntity == null) {
throw new JsonException(500, "工位存量不足!"); throw new JsonException(500, "工位存量不足!");
} }
IoCollectErrorLog ioCollectErrorLog = IoCollectErrorLog.builder().orderId(collectOrder.getId() + "").autoCode(splitFifoCodeEntity.getCode()).manuCode(collectOrderCodeMan.getUdiCode()).type(1) //未上传医保替换码 IoCollectErrorLog ioCollectErrorLog = IoCollectErrorLog.builder().orderId(collectOrder.getBillNo()).autoCode(splitFifoCodeEntity.getCode()).manuCode(collectOrderCodeMan.getUdiCode()).type(1) //未上传医保替换码
.updateTime(new Date()).build(); .updateTime(new Date()).build();
collectErrorLogMapper.insert(ioCollectErrorLog); collectErrorLogMapper.insert(ioCollectErrorLog);
//替换已完成单据的码 //替换已完成单据的码
@ -421,66 +430,59 @@ public class IoSplitCodeService extends ServiceImpl<IoSplitCodeMapper, IoSplitCo
*/ */
public void workReturnReplace(IoCodeEntity codeEntity, Long workPlaceCode) { public void workReturnReplace(IoCodeEntity codeEntity, Long workPlaceCode) {
IoSplitFifoCodeEntity ioSplitFifoCodeEntity = splitFifoCodeService.findByCode(codeEntity.getCode(), workPlaceCode); // 1.判断工位库存是否足够
if (ioSplitFifoCodeEntity == null) { // 2.工位库存足够的话,判断已完成单是否存在,
// 1.判断工位库存是否足够 // 3.存在的话,判断已完成单是否已上传医保
// 2.工位库存足够的话,判断已完成单是否存在, // 4.已上传医保的话,调用医保删除接口
// 3.存在的话,判断已完成单是否已上传医保
// 4.已上传医保的话,调用医保删除接口
List<IoSplitFifoCodeEntity> splitFifoCodeEntitys = splitFifoCodeService.findByRelId(workPlaceCode, codeEntity.getRelId(), codeEntity.getBatchNo(), null);
if (CollUtil.isEmpty(splitFifoCodeEntitys)) {
throw new JsonException(500, "工位库存不足!");
}
// ioSplitFifoCodeEntity = splitFifoCodeEntitys.get(0);
List<IoCollectCodeBackup> collectCodeBackups = collectCodeBackMapper.selectList(new LambdaQueryWrapper<IoCollectCodeBackup>().eq(IoCollectCodeBackup::getCode, ioSplitFifoCodeEntity.getCode()));
if (CollUtil.isNotEmpty(collectCodeBackups)) {
IoCollectCodeBackup collectCodeBackup = collectCodeBackups.get(0);
if (IntUtil.value(collectCodeBackup.getFifoSplit()) == 3) { List<IoSplitFifoCodeEntity> splitFifoCodeEntitys = splitFifoCodeService.findByRelId(workPlaceCode, codeEntity.getRelId(), codeEntity.getBatchNo(), null);
throw new JsonException(500, collectCodeBackup.getCode() + "重复扫码,请盘查后重试!"); if (CollUtil.isEmpty(splitFifoCodeEntitys)) {
throw new JsonException(500, "工位库存不足!");
}
IoSplitFifoCodeEntity ioSplitFifoCodeEntity = splitFifoCodeEntitys.get(0);
List<IoCollectCodeBackup> collectCodeBackups = collectCodeBackMapper.selectList(new LambdaQueryWrapper<IoCollectCodeBackup>().eq(IoCollectCodeBackup::getCode, codeEntity.getCode()));
if (CollUtil.isNotEmpty(collectCodeBackups)) {
IoCollectCodeBackup collectCodeBackup = collectCodeBackups.get(0);
// if (IntUtil.value(collectCodeBackup.getFifoSplit()) == 3) {
// throw new JsonException(500, collectCodeBackup.getCode() + "重复扫码,请盘查后重试!");
// }
IoCollectOrderBackup collectOrderBackup = collectOrderBackupMapper.selectOne(new LambdaQueryWrapper<IoCollectOrderBackup>().eq(IoCollectOrderBackup::getBillNo, collectCodeBackup.getBillNo()));
if (IntUtil.value(collectOrderBackup.getUploadStatus()) == 2) {
// 单据已被上传至医保 ---- 取当前库存的码替换至已完成单的码,并退库,以当前的码为退库单的码,并生成替换日志
IoSplitFifoCodeEntity splitFifoCodeEntity = removeInvByCode(ioSplitFifoCodeEntity);
if (splitFifoCodeEntity == null) {
throw new JsonException(500, "工位存量不足!");
} }
IoCollectOrderBackup collectOrderBackup = collectOrderBackupMapper.selectOne(new LambdaQueryWrapper<IoCollectOrderBackup>().eq(IoCollectOrderBackup::getBillNo, collectCodeBackup.getBillNo())); IoCollectErrorLog ioCollectErrorLog = IoCollectErrorLog.builder().orderId(codeEntity.getOrderId()).autoCode(splitFifoCodeEntity.getCode()).manuCode(codeEntity.getCode()).type(4) //退货已上传医保替换码
.updateTime(new Date()).build();
collectErrorLogMapper.insert(ioCollectErrorLog);
collectCodeBackup.setCode(splitFifoCodeEntity.getCode());
collectCodeBackMapper.updateById(collectCodeBackup);
if (IntUtil.value(collectOrderBackup.getUploadStatus()) == 2) { // 若已完成单已上传医保,则当前已完成单的码就与医保实际已上传的码不匹配;
// 单据已被上传至医保 ---- 取当前库存的码替换至已完成单的码,并退库,以当前的码为退库单的码,并生成替换日志 // 解决方案1 调用医保接口删除当前单据,并重新把最新的单据上传;
IoSplitFifoCodeEntity splitFifoCodeEntity = removeInvByCode(ioSplitFifoCodeEntity);
if (splitFifoCodeEntity == null) {
throw new JsonException(500, "工位存量不足!");
}
IoCollectErrorLog ioCollectErrorLog = IoCollectErrorLog.builder().orderId(codeEntity.getOrderId()).autoCode(splitFifoCodeEntity.getCode()).manuCode(ioSplitFifoCodeEntity.getCode()).type(4) //退货已上传医保替换码 // 解决方案2 不管,保留替换记录
.updateTime(new Date()).build();
collectErrorLogMapper.insert(ioCollectErrorLog);
collectCodeBackup.setCode(splitFifoCodeEntity.getCode());
collectCodeBackMapper.updateById(collectCodeBackup);
// 若已完成单已上传医保,则当前已完成单的码就与医保实际已上传的码不匹配;
// 解决方案1 调用医保接口删除当前单据,并重新把最新的单据上传;
// 解决方案2 不管,保留替换记录
} else { } else {
//单据未上传医保,上传医保失败 //单据未上传医保,上传医保失败
IoSplitFifoCodeEntity splitFifoCodeEntity = removeInvByCode(ioSplitFifoCodeEntity); IoSplitFifoCodeEntity splitFifoCodeEntity = removeInvByCode(ioSplitFifoCodeEntity);
if (splitFifoCodeEntity == null) { if (splitFifoCodeEntity == null) {
throw new JsonException(500, "工位存量不足!"); throw new JsonException(500, "工位存量不足!");
}
IoCollectErrorLog ioCollectErrorLog = IoCollectErrorLog.builder().orderId(codeEntity.getOrderId()).autoCode(splitFifoCodeEntity.getCode()).manuCode(codeEntity.getCode()).type(3) //退货未上传医保替换码
.updateTime(new Date()).build();
collectErrorLogMapper.insert(ioCollectErrorLog);
//替换已完成单据的码
collectCodeBackup.setCode(splitFifoCodeEntity.getCode());
collectCodeBackMapper.updateById(collectCodeBackup);
} }
IoCollectErrorLog ioCollectErrorLog = IoCollectErrorLog.builder().orderId(codeEntity.getOrderId()).autoCode(splitFifoCodeEntity.getCode()).manuCode(codeEntity.getCode()).type(3) //退货未上传医保替换码
.updateTime(new Date()).build();
collectErrorLogMapper.insert(ioCollectErrorLog);
//替换已完成单据的码
collectCodeBackup.setCode(splitFifoCodeEntity.getCode());
collectCodeBackMapper.updateById(collectCodeBackup);
} }
} }
} }
@ -501,8 +503,9 @@ public class IoSplitCodeService extends ServiceImpl<IoSplitCodeMapper, IoSplitCo
remainder = unTagCount % IntUtil.value(udiRelevanceResponse.getBhxjsl()); remainder = unTagCount % IntUtil.value(udiRelevanceResponse.getBhxjsl());
if (remainder > 0) { if (remainder > 0) {
collectOrder.setTagStatus(6); //拆零未赋码 collectOrder.setTagStatus(6); //拆零未赋码
break;
} }
break;
} }
} }
collectOrderBackupService.updateByBillNo(collectOrder); collectOrderBackupService.updateByBillNo(collectOrder);
@ -593,7 +596,8 @@ public class IoSplitCodeService extends ServiceImpl<IoSplitCodeMapper, IoSplitCo
for (IoSplitCodeEntity ioSplitCodeEntity : ioSplitCodeEntities) { for (IoSplitCodeEntity ioSplitCodeEntity : ioSplitCodeEntities) {
if (IntUtil.value(ioSplitCodeEntity.getRemainCount()) > 0) { if (IntUtil.value(ioSplitCodeEntity.getRemainCount()) > 0) {
count = IntUtil.value(ioSplitCodeEntity.getRemainCount()) - unCount; count = IntUtil.value(ioSplitCodeEntity.getRemainCount()) - unCount;
IoCollectOrderCodeAuto collectOrderCodeAuto = IoCollectOrderCodeAuto.builder().codeIdFk(ioSplitCodeEntity.getId()).udiCode(ioSplitCodeEntity.getCode()).orderIdFk(collectOrder.getBillNo()).batchNo(ioSplitCodeEntity.getBatchNo()).productDate(ioSplitCodeEntity.getProduceDate()).expireDate(ioSplitCodeEntity.getExpireDate()).serialNo(ioSplitCodeEntity.getSerialNo()).relId(collectOrderBiz.getRelId()).bizIdFk(collectOrderBiz.getId()).fifoSplit(count > 0 ? count : 0).reCount(count).createTime(new Date()).updateTime(new Date()).build(); IoCollectOrderCodeAuto collectOrderCodeAuto = IoCollectOrderCodeAuto.builder().codeIdFk(ioSplitCodeEntity.getId()).udiCode(ioSplitCodeEntity.getCode()).orderIdFk(collectOrder.getBillNo()).batchNo(ioSplitCodeEntity.getBatchNo()).productDate(ioSplitCodeEntity.getProduceDate()).expireDate(ioSplitCodeEntity.getExpireDate()).serialNo(ioSplitCodeEntity.getSerialNo()).relId(collectOrderBiz.getRelId()).bizIdFk(collectOrderBiz.getId())
.fifoSplit(1).reCount(count > 0 ? count : 0).createTime(new Date()).updateTime(new Date()).build();
collectOrderCodeAutoService.save(collectOrderCodeAuto); collectOrderCodeAutoService.save(collectOrderCodeAuto);
codeAutoList.add(collectOrderCodeAuto); codeAutoList.add(collectOrderCodeAuto);
if (count > 0) { if (count > 0) {
@ -635,26 +639,11 @@ public class IoSplitCodeService extends ServiceImpl<IoSplitCodeMapper, IoSplitCo
} }
public void saveSplitCode(List<IoCollectOrderCodeAuto> codeAutoList, IoCollectOrderBackup collectOrder) { public void saveSplitCode(List<IoCollectOrderCodeAuto> codeAutoList, IoCollectOrderBackup collectOrder) {
if (CollUtil.isEmpty(codeAutoList)) if (CollUtil.isEmpty(codeAutoList)) return;
return;
List<IoCollectCodeBackup> ioCollectCodes = new ArrayList<>(); List<IoCollectCodeBackup> ioCollectCodes = new ArrayList<>();
for (IoCollectOrderCodeAuto collectOrderCodeAuto : codeAutoList) { for (IoCollectOrderCodeAuto collectOrderCodeAuto : codeAutoList) {
UdiRelevanceResponse udiRelevanceResponse = udiRelevanceService.selectByRelId(collectOrderCodeAuto.getRelId() + ""); UdiRelevanceResponse udiRelevanceResponse = udiRelevanceService.selectByRelId(collectOrderCodeAuto.getRelId() + "");
ioCollectCodes.add(IoCollectCodeBackup.builder().code(collectOrderCodeAuto.getUdiCode()) ioCollectCodes.add(IoCollectCodeBackup.builder().code(collectOrderCodeAuto.getUdiCode()).fromType(collectOrder.getFromType()).busType(collectOrder.getBusType()).billNo(collectOrder.getBillNo()).fromCorp(collectOrder.getFromCorp()).operTime(collectOrder.getUpdateTime()).operUser(collectOrder.getCreateUser()).fifoSplit(1).relId(collectOrderCodeAuto.getRelId()).workPlaceCode(collectOrder.getWorkPlaceCode()).remark(collectOrder.getRemark()).purType(udiRelevanceResponse.getPurType()).inBatchNo(System.currentTimeMillis()).reCount(collectOrderCodeAuto.getReCount()).build());
.fromType(collectOrder.getFromType())
.busType(collectOrder.getBusType())
.billNo(collectOrder.getBillNo())
.fromCorp(collectOrder.getFromCorp())
.operTime(collectOrder.getUpdateTime())
.operUser(collectOrder.getCreateUser())
.fifoSplit(1)
.relId(collectOrderCodeAuto.getRelId())
.workPlaceCode(collectOrder.getWorkPlaceCode())
.remark(collectOrder.getRemark())
.purType(udiRelevanceResponse.getPurType())
.inBatchNo(System.currentTimeMillis())
.reCount(collectOrderCodeAuto.getReCount())
.build());
} }
collectCodeBackService.saveBatch(ioCollectCodes); collectCodeBackService.saveBatch(ioCollectCodes);
} }

@ -13,10 +13,7 @@ import com.glxp.api.dao.inout.IoSplitFifoInvMapper;
import com.glxp.api.entity.basic.SysWorkplaceLayer; import com.glxp.api.entity.basic.SysWorkplaceLayer;
import com.glxp.api.entity.basic.SysWorkplacePutRel; import com.glxp.api.entity.basic.SysWorkplacePutRel;
import com.glxp.api.entity.basic.SysWorkplaceQueue; import com.glxp.api.entity.basic.SysWorkplaceQueue;
import com.glxp.api.entity.collect.IoCollectCodeBackup; import com.glxp.api.entity.collect.*;
import com.glxp.api.entity.collect.IoCollectErrorLog;
import com.glxp.api.entity.collect.IoCollectOrderBackup;
import com.glxp.api.entity.collect.IoSplitFifoInvRel;
import com.glxp.api.entity.inout.*; import com.glxp.api.entity.inout.*;
import com.glxp.api.exception.JsonException; import com.glxp.api.exception.JsonException;
import com.glxp.api.req.basic.SysWorkplaceLayerRequest; import com.glxp.api.req.basic.SysWorkplaceLayerRequest;
@ -28,6 +25,7 @@ import com.glxp.api.service.basic.SysWorkplaceDocumentService;
import com.glxp.api.service.basic.SysWorkplaceLayerService; import com.glxp.api.service.basic.SysWorkplaceLayerService;
import com.glxp.api.service.basic.SysWorkplaceQueueService; import com.glxp.api.service.basic.SysWorkplaceQueueService;
import com.glxp.api.service.basic.UdiRelevanceService; import com.glxp.api.service.basic.UdiRelevanceService;
import com.glxp.api.service.collect.IoCollectSetService;
import com.glxp.api.service.collect.IoSplitFifoInvRelService; import com.glxp.api.service.collect.IoSplitFifoInvRelService;
import com.glxp.api.service.thrsys.SysWorkplacePutRelService; import com.glxp.api.service.thrsys.SysWorkplacePutRelService;
import com.glxp.api.util.IntUtil; import com.glxp.api.util.IntUtil;
@ -226,58 +224,62 @@ public class IoSplitFifoInvService extends ServiceImpl<IoSplitFifoInvMapper, IoS
IoCollectOrderBackupMapper collectOrderBackupMapper; IoCollectOrderBackupMapper collectOrderBackupMapper;
@Resource @Resource
IoCollectCodeBackMapper collectCodeBackMapper; IoCollectCodeBackMapper collectCodeBackMapper;
@Resource
IoCollectSetService collectSetService;
/** /**
* *
*
* @param codeList
* @param workPlaceCode
*/ */
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public void removeInv(List<IoCodeEntity> codeList, Long workPlaceCode) { public void removeInv(List<IoCodeEntity> codeList, IoOrderEntity orderEntity) {
List<IoSplitFifoCodeEntity> splitCodeEntities = new ArrayList<>(); List<IoSplitFifoCodeEntity> splitCodeEntities = new ArrayList<>();
IoCollectSet collectSet = collectSetService.getSet();
if (CollUtil.isNotEmpty(codeList)) { if (CollUtil.isNotEmpty(codeList)) {
for (IoCodeEntity codeEntity : codeList) { for (IoCodeEntity codeEntity : codeList) {
IoSplitFifoCodeEntity ioSplitFifoCodeEntity = splitFifoCodeService.findByCode(codeEntity.getCode(), workPlaceCode); IoSplitFifoCodeEntity ioSplitFifoCodeEntity = splitFifoCodeService.findByCode(codeEntity.getCode(), orderEntity.getWorkPlaceCode());
if (ioSplitFifoCodeEntity == null && IntUtil.value(collectSet.getConflictReturn())) {
ioSplitCodeService.workReturnReplace(codeEntity, orderEntity.getWorkPlaceCode());
} else {
if (StrUtil.isEmpty(codeEntity.getSerialNo())) { //退库扫码冲突判断
if (ioSplitFifoCodeEntity != null) { if (StrUtil.isEmpty(codeEntity.getSerialNo())) {
ioSplitFifoCodeEntity.setScanCount(IntUtil.value(ioSplitFifoCodeEntity.getScanCount()) - IntUtil.value(codeEntity.getCount())); if (ioSplitFifoCodeEntity != null) {
ioSplitFifoCodeEntity.setTotalCount(IntUtil.value(ioSplitFifoCodeEntity.getTotalCount()) - IntUtil.value(codeEntity.getReCount())); ioSplitFifoCodeEntity.setScanCount(IntUtil.value(ioSplitFifoCodeEntity.getScanCount()) - IntUtil.value(codeEntity.getCount()));
ioSplitFifoCodeEntity.setUpdateTime(new Date()); ioSplitFifoCodeEntity.setTotalCount(IntUtil.value(ioSplitFifoCodeEntity.getTotalCount()) - IntUtil.value(codeEntity.getReCount()));
splitFifoCodeService.updateById(ioSplitFifoCodeEntity); ioSplitFifoCodeEntity.setUpdateTime(new Date());
IoSplitFifoInv splitFifoInv = findByFifoCode(ioSplitFifoCodeEntity); splitFifoCodeService.updateById(ioSplitFifoCodeEntity);
if (splitFifoInv != null) { IoSplitFifoInv splitFifoInv = findByFifoCode(ioSplitFifoCodeEntity);
splitFifoInv.setOutCount(IntUtil.value(splitFifoInv.getOutCount()) + IntUtil.value(codeEntity.getReCount())); if (splitFifoInv != null) {
splitFifoInv.setOutCodeCount(IntUtil.value(splitFifoInv.getOutCodeCount()) + IntUtil.value(codeEntity.getCount())); splitFifoInv.setOutCount(IntUtil.value(splitFifoInv.getOutCount()) + IntUtil.value(codeEntity.getReCount()));
splitFifoInv.setReCount(IntUtil.value(splitFifoInv.getInCount()) - IntUtil.value(codeEntity.getReCount())); splitFifoInv.setOutCodeCount(IntUtil.value(splitFifoInv.getOutCodeCount()) + IntUtil.value(codeEntity.getCount()));
splitFifoInv.setReCodeCount(IntUtil.value(splitFifoInv.getInCodeCount()) - IntUtil.value(splitFifoInv.getOutCodeCount())); splitFifoInv.setReCount(IntUtil.value(splitFifoInv.getInCount()) - IntUtil.value(codeEntity.getReCount()));
splitFifoInv.setAvailableCount(IntUtil.value(splitFifoInv.getInCount()) - IntUtil.value(splitFifoInv.getOutCount()) - IntUtil.value(splitFifoInv.getLockCount())); splitFifoInv.setReCodeCount(IntUtil.value(splitFifoInv.getInCodeCount()) - IntUtil.value(splitFifoInv.getOutCodeCount()));
updateById(splitFifoInv); splitFifoInv.setAvailableCount(IntUtil.value(splitFifoInv.getInCount()) - IntUtil.value(splitFifoInv.getOutCount()) - IntUtil.value(splitFifoInv.getLockCount()));
updateById(splitFifoInv);
}
if (ioSplitFifoCodeEntity.getScanCount() == 0) {
splitFifoCodeService.removeById(ioSplitFifoCodeEntity);
}
} }
if (ioSplitFifoCodeEntity.getScanCount() == 0) { } else {
splitFifoCodeService.removeById(ioSplitFifoCodeEntity); if (ioSplitFifoCodeEntity != null) splitCodeEntities.add(ioSplitFifoCodeEntity);
splitFifoCodeService.removeBatchByIds(splitCodeEntities);
for (IoSplitFifoCodeEntity tempEntity : splitCodeEntities) {
IoSplitFifoInv splitFifoInv = findByFifoCode(tempEntity);
if (splitFifoInv != null) {
splitFifoInv.setOutCount(IntUtil.value(splitFifoInv.getOutCount()) + IntUtil.value(tempEntity.getTotalCount()));
splitFifoInv.setOutCodeCount(IntUtil.value(splitFifoInv.getOutCodeCount()) + 1);
splitFifoInv.setReCount(IntUtil.value(splitFifoInv.getInCount()) - IntUtil.value(splitFifoInv.getOutCount()));
splitFifoInv.setReCodeCount(IntUtil.value(splitFifoInv.getInCodeCount()) - IntUtil.value(splitFifoInv.getOutCodeCount()));
splitFifoInv.setAvailableCount(IntUtil.value(splitFifoInv.getInCount()) - IntUtil.value(splitFifoInv.getOutCount()) - IntUtil.value(splitFifoInv.getLockCount()));
updateById(splitFifoInv);
}
} }
} }
} else {
if (ioSplitFifoCodeEntity != null) splitCodeEntities.add(ioSplitFifoCodeEntity);
} }
} }
} }
splitFifoCodeService.removeBatchByIds(splitCodeEntities);
for (IoSplitFifoCodeEntity ioSplitFifoCodeEntity : splitCodeEntities) {
IoSplitFifoInv splitFifoInv = findByFifoCode(ioSplitFifoCodeEntity);
if (splitFifoInv != null) {
splitFifoInv.setOutCount(IntUtil.value(splitFifoInv.getOutCount()) + IntUtil.value(ioSplitFifoCodeEntity.getTotalCount()));
splitFifoInv.setOutCodeCount(IntUtil.value(splitFifoInv.getOutCodeCount()) + 1);
splitFifoInv.setReCount(IntUtil.value(splitFifoInv.getInCount()) - IntUtil.value(splitFifoInv.getOutCount()));
splitFifoInv.setReCodeCount(IntUtil.value(splitFifoInv.getInCodeCount()) - IntUtil.value(splitFifoInv.getOutCodeCount()));
splitFifoInv.setAvailableCount(IntUtil.value(splitFifoInv.getInCount()) - IntUtil.value(splitFifoInv.getOutCount()) - IntUtil.value(splitFifoInv.getLockCount()));
updateById(splitFifoInv);
}
}
} }

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

@ -5590,6 +5590,15 @@ CALL Pro_Temp_ColumnWork('io_collect_set', 'delayTageCode',
1); 1);
CALL Pro_Temp_ColumnWork('io_collect_set', 'conflictScan',
'tinyint NULL DEFAULT NULL COMMENT ''是否启用扫码冲突替换10''',
1);
CALL Pro_Temp_ColumnWork('io_collect_set', 'conflictReturn',
'tinyint NULL DEFAULT NULL COMMENT ''是否启用退货扫码冲突替换10''',
1);
CREATE TABLE IF NOT EXISTS `yb_uploading_log` ( CREATE TABLE IF NOT EXISTS `yb_uploading_log` (
`id` int NOT NULL AUTO_INCREMENT, `id` int NOT NULL AUTO_INCREMENT,
`ybParam` text CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci COMMENT '医保入参', `ybParam` text CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci COMMENT '医保入参',

Loading…
Cancel
Save