单据处理相关修改,代码备份

panjc_field_management
yewj 8 months ago
parent c992490c13
commit f08e86703a

@ -1,12 +1,14 @@
package com.glxp.api.controller.collect;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.StrUtil;
import com.github.pagehelper.PageInfo;
import com.glxp.api.common.enums.ResultEnum;
import com.glxp.api.common.res.BaseResponse;
import com.glxp.api.common.util.ResultVOUtils;
import com.glxp.api.controller.BaseController;
import com.glxp.api.entity.collect.IoCollectOrder;
import com.glxp.api.entity.collect.IoCollectOrderCodeMan;
import com.glxp.api.exception.JsonException;
import com.glxp.api.req.collect.CollectOrderCodeManRequest;
import com.glxp.api.req.inout.AddTagCodeReqeust;
@ -17,6 +19,7 @@ import com.glxp.api.res.inout.VailCodeResultResponse;
import com.glxp.api.res.inout.VailTagResultResponse;
import com.glxp.api.service.collect.IoCollectOrderCodeManService;
import com.glxp.api.service.collect.IoCollectOrderService;
import com.glxp.api.util.IntUtil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.GetMapping;
@ -27,7 +30,9 @@ import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import javax.validation.Valid;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@Slf4j
@RestController
@ -88,6 +93,7 @@ public class IoCollectOrderCodeManController extends BaseController {
IoCollectOrder collectOrder = null;
VailTagResultResponse vailTagResultResponse = new VailTagResultResponse();
List<VailCodeResultResponse> vailCodeResultResponses = new ArrayList<>();
List<String> vailCodesList = new ArrayList<String>();
if (CollUtil.isNotEmpty(addTagCodeReqeust.getCodeList())) {
for (String code : addTagCodeReqeust.getCodeList()) {
VailCodeResultResponse vailCodeResultResponse = new VailCodeResultResponse();
@ -97,21 +103,87 @@ public class IoCollectOrderCodeManController extends BaseController {
try {
collectOrder = collectOrderCodeManService.prescribeTagCode(addTagCodeReqeust);
} catch (JsonException e) {
vailCodeResultResponse.setErrMsg(e.getMessage());
if (e.getCode() == 502) {
vailCodeResultResponse.setStatus(3);
} else if (e.getCode() == 503) {
// 单据扫码数量大于1 的需要拆零确认
String msg = e.getMessage();
String[] data = msg.split(";");
String count = data[1];
if (IntUtil.value(count) > 1) {
vailCodeResultResponse.setStatus(4);
vailCodeResultResponse.setBizId(data[0]);
vailCodeResultResponse.setErrMsg(data[2]);
}
vailCodesList.add(code);
} else {
vailCodeResultResponse.setStatus(2);
}
vailCodeResultResponse.setErrMsg(e.getMessage());
}
vailCodeResultResponses.add(vailCodeResultResponse);
}
}
vailTagResultResponse.setCollectOrder(collectOrder);
vailTagResultResponse.setVailCodeResultResponses(vailCodeResultResponses);
String errMsg = countSameErrMsg(vailCodeResultResponses);
if (StrUtil.isNotEmpty(errMsg)) {
return ResultVOUtils.error(500, errMsg);
} else {
addTagCodeReqeust.setCodeList(vailCodesList);
addTagCodeReqeust.setInsert(true);
for (String code : vailCodesList) {
addTagCodeReqeust.setCode(code);
collectOrderCodeManService.prescribeTagCode(addTagCodeReqeust);
}
}
return ResultVOUtils.success(vailTagResultResponse);
}
/**
* @param
* @return
*/
@PostMapping("/udiwms/ioSplit/collect/order/batchUpdateCode")
public BaseResponse batchUpdate(@RequestBody AddTagCodeReqeust addTagCodeReqeust,
BindingResult bindingResult) {
if (bindingResult.hasErrors()) {
return ResultVOUtils.error(ResultEnum.PARAM_VERIFY_FALL, bindingResult.getFieldError().getDefaultMessage());
}
List<IoCollectOrderCodeMan> collectOrderCodeMEN = addTagCodeReqeust.getCollectOrderCodeManList();
if (CollUtil.isNotEmpty(collectOrderCodeMEN)) {
for (IoCollectOrderCodeMan collectOrderCodeMan : collectOrderCodeMEN) {
collectOrderCodeManService.updateById(collectOrderCodeMan);
}
return ResultVOUtils.success("更新成功!");
} else {
return ResultVOUtils.error("数据不能为空");
}
}
public String countSameErrMsg(List<VailCodeResultResponse> vailCodeResultResponses) {
Map<String, Integer> errMsgCountMap = new HashMap<>();
for (VailCodeResultResponse response : vailCodeResultResponses) {
String errMsg = response.getCode().substring(0, 7) + ";" + response.getErrMsg();
if (errMsgCountMap.containsKey(errMsg)) {
errMsgCountMap.put(errMsg, errMsgCountMap.get(errMsg) + 1);
} else {
errMsgCountMap.put(errMsg, 1);
}
}
for (Map.Entry<String, Integer> entry : errMsgCountMap.entrySet()) {
String key = entry.getKey();
Integer value = entry.getValue();
if (value > 1) {
return key.substring(8);
}
}
return null;
}
@PostMapping("/udiwms/ioSplit/collect/code/remove")
public BaseResponse removeCode(@RequestBody @Valid DeleteTageCodeRequest deleteTageCodeRequest,

@ -383,7 +383,7 @@ public class IoCollectOrderController extends BaseController {
SysWorkplaceDocumentService sysWorkplaceDocumentService;
/**
*
*
*
* @return
*/

@ -97,12 +97,17 @@ public class IoCollectOrderCodeMan implements Serializable {
@ApiModelProperty(value = "")
private Long updateUser;
@TableField(value = "isSplitCode")
@ApiModelProperty(value = "是否拆零码")
private Boolean isSplitCode;
@TableField(exist = false)
private Boolean removeFlag;
@TableField(exist = false)
private Boolean splitFlag;
@TableField(exist = false)
private Integer remainCount;
private static final long serialVersionUID = 1L;
}

@ -12,6 +12,9 @@ import lombok.NoArgsConstructor;
import java.io.Serializable;
import java.util.Date;
/**
*
*/
@Data
@Builder
@AllArgsConstructor

@ -1,5 +1,6 @@
package com.glxp.api.req.inout;
import com.glxp.api.entity.collect.IoCollectOrderCodeMan;
import lombok.Data;
import javax.validation.constraints.NotNull;
@ -54,5 +55,12 @@ public class AddTagCodeReqeust {
private String shipper;
/**
*
*/
private Boolean isSplitCode;
List<IoCollectOrderCodeMan> collectOrderCodeManList;
}

@ -11,4 +11,6 @@ public class VailCodeResultResponse {
*/
private Integer status;
private String errMsg;
private String productInfo;
private String bizId;
}

@ -279,7 +279,7 @@ public class IoCollectOrderCodeManService extends ServiceImpl<IoCollectOrderCode
throw new JsonException(502, collectOrderBiz.getCpmctymc() + "拆零数量还有剩余,是否继续添加?");
}
}
throw new JsonException(500, "扫码数量超出!");
throw new JsonException(500, collectOrderBiz.getCpmctymc() + "扫码数量超出!");
}
collectOrderBiz.setScanCount(count);
collectOrderBiz.setScanActCount(actCount);
@ -298,7 +298,7 @@ public class IoCollectOrderCodeManService extends ServiceImpl<IoCollectOrderCode
throw new JsonException(502, collectOrderBiz.getCpmctymc() + "拆零数量还有剩余,是否继续扫码?");
}
}
throw new JsonException(502, collectOrderBiz.getCpmctymc() + "扫码数量超出,是否继续添加!");
throw new JsonException(503, collectOrderBiz.getId() + ";" + count1 + ";" + collectOrderBiz.getCpmctymc() + "扫码数量超出!");
}
collectOrderBiz.setScanCount(count1);
collectOrderBiz.setScanActCount(actCount1);
@ -369,10 +369,10 @@ public class IoCollectOrderCodeManService extends ServiceImpl<IoCollectOrderCode
int needCount = IntUtil.value(collectOrderBiz.getCount()) - IntUtil.value(collectOrderBiz.getScanActCount());
if (needCount > 0) {
if (vailInSplit(collectOrderBiz, putWorkPlaceCode, needCount)) {
throw new JsonException(502, "当前拆零数量还有剩余,是否继续扫码");
throw new JsonException(502, collectOrderBiz.getCpmctymc() + "当前拆零数量还有剩余,是否继续扫码进行拆零");
}
}
throw new JsonException(500, "扫码数量超出!");
throw new JsonException(500, collectOrderBiz.getCpmctymc() + "扫码数量超出!");
}
collectOrderBiz.setScanCount(count);
collectOrderBiz.setScanActCount(actCount);
@ -393,7 +393,7 @@ public class IoCollectOrderCodeManService extends ServiceImpl<IoCollectOrderCode
throw new JsonException(502, collectOrderBiz.getCpmctymc() + "拆零数量还有剩余,是否继续添加?");
}
}
throw new JsonException(502, collectOrderBiz.getCpmctymc() + "扫码数量超出,是否继续添加");
throw new JsonException(503, collectOrderBiz.getId() + ";" + count1 + ";" + collectOrderBiz.getCpmctymc() + "扫码数量超出!");
}
collectOrderBiz.setScanCount(count1);
collectOrderBiz.setScanActCount(actCount1);
@ -415,7 +415,8 @@ public class IoCollectOrderCodeManService extends ServiceImpl<IoCollectOrderCode
if (StrUtil.isEmpty(udiEntity.getSerialNo()) && exitCode != null) {
exitCode.setScanCount(IntUtil.value(exitCode.getScanCount()) + scanCount);
exitCode.setScanCount(IntUtil.value(exitCode.getScanCount()) + 1);
exitCode.setScanActCount(IntUtil.value(exitCode.getScanActCount()) + scanCount);
exitCode.setBizIdFk(collectOrderBiz.getId());
this.updateById(exitCode);
} else {
@ -434,7 +435,8 @@ public class IoCollectOrderCodeManService extends ServiceImpl<IoCollectOrderCode
.createUser(userId)
.updateTime(new Date())
.updateUser(userId)
.scanCount(scanCount)
.scanCount(1)
.isSplitCode(addTagCodeReqeust.getIsSplitCode())
.scanActCount(scanCount)
.build();
this.save(collectOrderCodeMan);

@ -701,16 +701,26 @@ public class IoCollectOrderService extends ServiceImpl<IoCollectOrderMapper, IoC
Long codeManId = deleteTageCodeRequest.getCodeManId();
IoCollectOrderCodeMan ioCollectOrderCodeMan = ioCollectOrderCodeManService.getById(codeManId);
if (ioCollectOrderCodeMan == null) throw new JsonException("码明细id有误");
List<UdiRelevanceResponse> udiRelevanceResponses = udiRelevanceService.selectGroupByNameCode(ioCollectOrderCodeMan.getNameCode(), null);
IoCollectOrder ioCollectOrder = collectOrderMapper.selectOne(new LambdaQueryWrapper<IoCollectOrder>().eq(IoCollectOrder::getBillNo, ioCollectOrderCodeMan.getOrderIdFk()));
String busType = ioCollectOrder.getBusType();
Long workPlaceCode = ioCollectOrder.getWorkPlaceCode();
SysWorkplaceDocumentEntity byWorkplaceCode = sysWorkplaceDocumentService.findByWorkplaceCode(workPlaceCode, busType);
Long bizIdFk = ioCollectOrderCodeMan.getBizIdFk();
Integer scanCount = ioCollectOrderCodeMan.getScanCount();
Integer delCount = 0;
if (delType == 1) {//1.减一IoCollectOrderCodeMan-1 IoCollectOrderBiz-1
Integer newCount = scanCount - 1;
delCount = 1;
if (newCount == 0) {
if (newCount <= 0) {
ioCollectOrderCodeManService.removeById(codeManId);
} else {
ioCollectOrderCodeMan.setScanCount(newCount);
if (IntUtil.value(byWorkplaceCode.getOrderCirType()) == 1) {
ioCollectOrderCodeMan.setScanActCount(IntUtil.value(ioCollectOrderCodeMan.getScanActCount()) - delCount * udiCalCountUtil.getCirActCount(udiRelevanceResponses.get(0)));
} else {
ioCollectOrderCodeMan.setScanActCount(IntUtil.value(ioCollectOrderCodeMan.getScanActCount()) - delCount * udiCalCountUtil.getUseActCount(udiRelevanceResponses.get(0)));
}
ioCollectOrderCodeManService.updateById(ioCollectOrderCodeMan);
}
} else if (delType == 2) {//2.删除 IoCollectOrderCodeMan-删除 IoCollectOrderBiz-数量
@ -723,12 +733,9 @@ public class IoCollectOrderService extends ServiceImpl<IoCollectOrderMapper, IoC
.eq(IoCollectOrderBiz::getId, bizIdFk));
if (bizServiceOne == null) throw new JsonException("扫码详情未查找到");
//反查单据类型 查看是否来源业务单
String orderIdFk = bizServiceOne.getOrderIdFk();
IoCollectOrder ioCollectOrder = collectOrderMapper.selectOne(new LambdaQueryWrapper<IoCollectOrder>().eq(IoCollectOrder::getBillNo, orderIdFk));
if (ioCollectOrder == null) throw new JsonException("反查单据失败");
String busType = ioCollectOrder.getBusType();
Long workPlaceCode = ioCollectOrder.getWorkPlaceCode();
SysWorkplaceDocumentEntity byWorkplaceCode = sysWorkplaceDocumentService.findByWorkplaceCode(workPlaceCode, busType);
if (byWorkplaceCode == null) throw new JsonException("反查工位单据类型失败");
Integer scanType = byWorkplaceCode.getScanType();
Integer oneScanCount = bizServiceOne.getScanCount();
@ -738,7 +745,6 @@ public class IoCollectOrderService extends ServiceImpl<IoCollectOrderMapper, IoC
} else {
bizServiceOne.setScanCount(newCount);
List<UdiRelevanceResponse> udiRelevanceResponses = udiRelevanceService.selectGroupByNameCode(ioCollectOrderCodeMan.getNameCode(), null);
if (IntUtil.value(byWorkplaceCode.getOrderCirType()) == 1) {
bizServiceOne.setScanActCount(IntUtil.value(bizServiceOne.getScanActCount()) - delCount * udiCalCountUtil.getCirActCount(udiRelevanceResponses.get(0)));
} else {

@ -281,60 +281,37 @@ public class IoSplitCodeService extends ServiceImpl<IoSplitCodeMapper, IoSplitCo
collectOrderBiz.setTagStatus(3);
//手动扫码时涉及到拆零时,把拆零剩余数量插入至拆零表里
if (unTagCount < 0) {
if (IntUtil.value(udiRelevanceResponse.getBhxjsl()) > -unTagCount) {
Optional<IoCollectOrderCodeMan> firstMatch = collectOrderCodeMEN.stream()
.filter(item ->
IntUtil.value(item.getRemoveFlag()) && item.getBizIdFk().equals(collectOrderBiz.getId()))
.findFirst();
IoCollectOrderCodeMan result = null;
if (firstMatch.isPresent()) {
result = firstMatch.get();
List<IoCollectOrderCodeMan> newList = filterCode(collectOrderCodeMEN, collectOrderBiz, udiRelevanceResponse);
if (CollUtil.isNotEmpty(newList)) {
for (IoCollectOrderCodeMan item : newList) {
if (IntUtil.value(item.getSplitFlag())) {
IoSplitCodeEntity splitCodeEntity = splitCodeService.findByCode(item.getUdiCode(), putWorkPlaceCode);
splitCodeEntity.setRemainCount(-unTagCount);
splitCodeService.updateById(splitCodeEntity);
} else {
Optional<IoCollectOrderCodeMan> firstMatch1 = collectOrderCodeMEN.stream()
.filter(item ->
!IntUtil.value(item.getSplitFlag()) && item.getBizIdFk().equals(collectOrderBiz.getId()))
.findFirst();
if (firstMatch1.isPresent()) {
result = firstMatch1.get();
if (result != null) {
IoSplitCodeEntity ioSplitCodeEntity = IoSplitCodeEntity.builder().code(result.getUdiCode())
.errUdiCode(result.getUdiCode())
.orderId(result.getOrderIdFk())
IoSplitCodeEntity ioSplitCodeEntity = IoSplitCodeEntity.builder().code(item.getUdiCode())
.errUdiCode(item.getUdiCode())
.orderId(item.getOrderIdFk())
.action(collectOrder.getBusType())
.relId(result.getRelId())
.nameCode(result.getNameCode())
.batchNo(result.getBatchNo())
.produceDate(result.getProductDate())
.expireDate(result.getExpireDate())
.serialNo(result.getSerialNo())
.scanCount(result.getScanCount())
.totalCount(result.getScanCount())
.relId(item.getRelId())
.nameCode(item.getNameCode())
.batchNo(item.getBatchNo())
.produceDate(item.getProductDate())
.expireDate(item.getExpireDate())
.serialNo(item.getSerialNo())
.scanCount(item.getScanCount())
.totalCount(item.getScanCount())
.workPlaceCode(putWorkPlaceCode)
.status(2)
.fifoSplit(1)
.createTime(new Date()).updateTime(new Date())
.remainCount(-unTagCount).build();
.remainCount(item.getRemainCount()).build();
this.decorateUnpackExpireTime(ioSplitCodeEntity);
splitCodeService.save(ioSplitCodeEntity);
}
} else {
firstMatch1 = collectOrderCodeMEN.stream()
.filter(item ->
IntUtil.value(item.getSplitFlag()) && item.getBizIdFk().equals(collectOrderBiz.getId()))
.findFirst();
if (firstMatch1.isPresent()) {
result = firstMatch1.get();
IoSplitCodeEntity splitCodeEntity = splitCodeService.findByCode(result.getUdiCode(), putWorkPlaceCode);
splitCodeEntity.setRemainCount(-unTagCount);
splitCodeService.updateById(splitCodeEntity);
}
}
}
}
}
}
continue;
}
@ -395,7 +372,43 @@ public class IoSplitCodeService extends ServiceImpl<IoSplitCodeMapper, IoSplitCo
.collect(Collectors.toList());
} else
return null;
}
public List<IoCollectOrderCodeMan> filterCode(List<IoCollectOrderCodeMan> collectOrderCodes, IoCollectOrderBiz collectOrderBiz, UdiRelevanceResponse udiRelevanceResponse) {
int unTagCount = IntUtil.value(collectOrderBiz.getScanActCount()) - collectOrderBiz.getCount();
List<IoCollectOrderCodeMan> newList = new ArrayList<IoCollectOrderCodeMan>();
int count = 0;
boolean first = true;
for (IoCollectOrderCodeMan collectOrderCode : collectOrderCodes) {
if (collectOrderCode.getBizIdFk().equals(collectOrderBiz.getId())) {
if (IntUtil.value(collectOrderCode.getIsSplitCode())) {
if (first) {
int remainder = unTagCount % IntUtil.value(udiRelevanceResponse.getBhxjsl());
collectOrderCode.setRemainCount(remainder);
first = false;
} else {
collectOrderCode.setRemainCount(collectOrderCode.getScanActCount());
}
newList.add(collectOrderCode);
} else {
count = count + collectOrderCode.getScanActCount();
if (!IntUtil.value(collectOrderCode.getRemoveFlag())) {
if (count > collectOrderBiz.getCount()) {
if (first) {
int remainder = unTagCount % IntUtil.value(udiRelevanceResponse.getBhxjsl());
collectOrderCode.setRemainCount(remainder);
first = false;
} else {
collectOrderCode.setRemainCount(collectOrderCode.getScanActCount());
}
newList.add(collectOrderCode);
}
}
}
}
}
return newList;
}

@ -4556,6 +4556,12 @@ CALL Pro_Temp_ColumnWork('io_collect_order_code_man', 'scanActCount',
'int NULL DEFAULT NULL COMMENT ''扫码实际数量''',
1);
CALL Pro_Temp_ColumnWork('io_collect_order_code_man', 'isSplitCode',
' tinyint NULL DEFAULT NULL COMMENT ''是否拆零码''',
1);
CALL Pro_Temp_ColumnWork('io_code_temp', 'drugLink',
' tinyint NULL DEFAULT b''0''COMMENT ''药品关联关系是否存在 0不存在 1存在''',
1);

Loading…
Cancel
Save