Compare commits

..

No commits in common. 'b065f502b2dd4dd020fac462dd19937efa0aa019' and 'c1bf5bd8b2a43680c98695369bad46d94c4ca586' have entirely different histories.

@ -454,7 +454,7 @@ public class LoginController extends BaseController {
public void getImage(HttpServletResponse response, public void getImage(HttpServletResponse response,
@RequestParam String type, @RequestParam String type,
@RequestParam String name) throws IOException { @RequestParam String name) throws IOException {
File file = new File(filePath + "/register/" + type + "/" + name); File file = new File(filePath + "/register/" + type + "/" + name);
// 检查文件是否存在 // 检查文件是否存在
if (!file.exists()) { if (!file.exists()) {
@ -488,4 +488,5 @@ public class LoginController extends BaseController {
} }
} }

@ -1295,8 +1295,7 @@ public class IoCodeTempController extends BaseController {
return ResultVOUtils.error(500, "药品字典不存在此产品!"); return ResultVOUtils.error(500, "药品字典不存在此产品!");
} }
IoCollectSet collectSet = collectSetService.getSet(); if (IntUtil.value(udiRelevanceResponse.getNotCodeType()) != 0) {
if (IntUtil.value(collectSet.getNoCodeScan()) && IntUtil.value(udiRelevanceResponse.getNotCodeType()) != 0) {
return ResultVOUtils.error(500, "当前为无码类型产品,无需扫码!"); return ResultVOUtils.error(500, "当前为无码类型产品,无需扫码!");
} }
@ -1325,9 +1324,13 @@ public class IoCodeTempController extends BaseController {
// 层级标识校验 // 层级标识校验
boolean packLevelValid; boolean packLevelValid;
if (bussinessTypeEntity.isUse()) { if (bussinessTypeEntity.isUse()) {
packLevelValid = isPackLevelValid(udiRelevanceResponse.getUseMaxLevel(), IntUtil.value(udiRelevanceResponse.getPackLevel()), udiRelevanceResponse.getUseLevel()); packLevelValid = isPackLevelValid(udiRelevanceResponse.getUseMaxLevel(),
IntUtil.value(udiRelevanceResponse.getPackLevel()),
udiRelevanceResponse.getUseLevel());
} else { } else {
packLevelValid = isPackLevelValid(udiRelevanceResponse.getDistributeMaxLevel(), IntUtil.value(udiRelevanceResponse.getPackLevel()), udiRelevanceResponse.getDistributeLevel()); packLevelValid = isPackLevelValid(udiRelevanceResponse.getDistributeMaxLevel(),
IntUtil.value(udiRelevanceResponse.getPackLevel()),
udiRelevanceResponse.getDistributeLevel());
} }
if (!packLevelValid) { if (!packLevelValid) {
@ -1528,8 +1531,10 @@ public class IoCodeTempController extends BaseController {
codeEnttity.setReCount(codeEnttity.getMyReCount() + udiCalCountUtil.getCirActCount(udiRelevanceResponse)); codeEnttity.setReCount(codeEnttity.getMyReCount() + udiCalCountUtil.getCirActCount(udiRelevanceResponse));
} }
} else { } else {
if (unitFk == null) return ResultVOUtils.error(500, "耗材字典不存在此产品!"); if (unitFk == null)
else return ResultVOUtils.error(500, "当前供应商不存在此配送产品!"); return ResultVOUtils.error(500, "耗材字典不存在此产品!");
else
return ResultVOUtils.error(500, "当前供应商不存在此配送产品!");
} }
if (!(bussinessTypeEntity.getAction().equals(ConstantType.SPLIT_RETURN) || bussinessTypeEntity.getAction().equals(ConstantType.SPLIT_OUT))) { if (!(bussinessTypeEntity.getAction().equals(ConstantType.SPLIT_RETURN) || bussinessTypeEntity.getAction().equals(ConstantType.SPLIT_OUT))) {
@ -1580,11 +1585,13 @@ public class IoCodeTempController extends BaseController {
if (bussinessTypeEntity.getAction().equals(ConstantType.SPLIT_OUT)) { if (bussinessTypeEntity.getAction().equals(ConstantType.SPLIT_OUT)) {
//工位上货 只允许上货一个产品 开关以及控制 //工位上货 只允许上货一个产品 开关以及控制
IoCollectSet collectSet = collectSetService.getSet();
// 判断货位里面是否有相同产品 // 判断货位里面是否有相同产品
if (orderEntity != null && StrUtil.isNotEmpty(orderEntity.getWorkPlaceQueueCode())) { if (orderEntity != null && StrUtil.isNotEmpty(orderEntity.getWorkPlaceQueueCode())) {
SysWorkplace sysWorkplace = sysWorkplaceService.getOne(new LambdaQueryWrapper<SysWorkplace>().eq(SysWorkplace::getWorkplaceId, addOrderRequest.getWorkPlaceCode())); SysWorkplace sysWorkplace = sysWorkplaceService.getOne(new LambdaQueryWrapper<SysWorkplace>().eq(SysWorkplace::getWorkplaceId, addOrderRequest.getWorkPlaceCode()));
if (sysWorkplace.getQueueStatus() == 1) { if (sysWorkplace.getQueueStatus() == 1) {
SysWorkplaceQueue workplaceQueue = sysWorkplaceQueueService.getOne(new LambdaQueryWrapper<SysWorkplaceQueue>().eq(SysWorkplaceQueue::getCode, orderEntity.getWorkPlaceQueueCode())); SysWorkplaceQueue workplaceQueue = sysWorkplaceQueueService.getOne(new LambdaQueryWrapper<SysWorkplaceQueue>()
.eq(SysWorkplaceQueue::getCode, orderEntity.getWorkPlaceQueueCode()));
if (workplaceQueue != null) { if (workplaceQueue != null) {
//判断槽位产品是否一样 //判断槽位产品是否一样
if (StrUtil.isNotBlank(workplaceQueue.getRelId())) { if (StrUtil.isNotBlank(workplaceQueue.getRelId())) {
@ -1614,7 +1621,8 @@ public class IoCodeTempController extends BaseController {
//校验完成 获取当前槽位 绑定产品 //校验完成 获取当前槽位 绑定产品
SysWorkplaceQueue sysWorkplaceQueue = sysWorkplaceQueueService.getOne(new LambdaQueryWrapper<SysWorkplaceQueue>().eq(SysWorkplaceQueue::getCode, orderEntity.getWorkPlaceQueueCode()).last("limit 1")); SysWorkplaceQueue sysWorkplaceQueue = sysWorkplaceQueueService.getOne(new LambdaQueryWrapper<SysWorkplaceQueue>()
.eq(SysWorkplaceQueue::getCode, orderEntity.getWorkPlaceQueueCode()).last("limit 1"));
if (sysWorkplaceQueue.getRelId() == null) { if (sysWorkplaceQueue.getRelId() == null) {
//虚拟槽位这个时候就要设置 //虚拟槽位这个时候就要设置
if (sysWorkplace.getQueueStatus() == 0) { if (sysWorkplace.getQueueStatus() == 0) {
@ -1630,7 +1638,8 @@ public class IoCodeTempController extends BaseController {
isSame = true; isSame = true;
} }
} }
if (!isSame) return ResultVOUtils.error(507, "当前单据下只允许上货单一产品!"); if (!isSame)
return ResultVOUtils.error(507, "当前单据下只允许上货单一产品!");
} }
} else if (orderEntity != null && CollUtil.isNotEmpty(codeEnttitys) && IntUtil.value(collectSet.getSplitOutOnlyProductSwitch())) { } else if (orderEntity != null && CollUtil.isNotEmpty(codeEnttitys) && IntUtil.value(collectSet.getSplitOutOnlyProductSwitch())) {
for (IoCodeTempEntity ioOrderDetailCodeEntity : codeEnttitys) { for (IoCodeTempEntity ioOrderDetailCodeEntity : codeEnttitys) {
@ -1660,7 +1669,8 @@ public class IoCodeTempController extends BaseController {
genDetaiEntity = codeEnttity; genDetaiEntity = codeEnttity;
if (baseResponse == null) { if (baseResponse == null) {
baseResponse = checkSupId(bussinessTypeEntity, codeEnttity, unitFk); baseResponse = checkSupId(bussinessTypeEntity, codeEnttity, unitFk);
if (baseResponse != null) return baseResponse; if (baseResponse != null)
return baseResponse;
} else { } else {
if (baseResponse.getCode() == 501) { if (baseResponse.getCode() == 501) {
return baseResponse; return baseResponse;
@ -1722,7 +1732,8 @@ public class IoCodeTempController extends BaseController {
String errMsg = ioCheckInoutService.checkCode(codeEnttity); String errMsg = ioCheckInoutService.checkCode(codeEnttity);
if (errMsg != null) { if (errMsg != null) {
return ResultVOUtils.error(500, errMsg); return ResultVOUtils.error(500, errMsg);
} else codeTempService.insert(codeEnttity); } else
codeTempService.insert(codeEnttity);
// 查询是否存在药品关联信息 后将结果更新至 temp表 // 查询是否存在药品关联信息 后将结果更新至 temp表
updateRelCode(bussinessTypeEntity, code); updateRelCode(bussinessTypeEntity, code);
// relCodeBatchService.threadUpdateIoCodeTempEntity(code); // relCodeBatchService.threadUpdateIoCodeTempEntity(code);
@ -1731,7 +1742,8 @@ public class IoCodeTempController extends BaseController {
String errMsg = ioCheckInoutService.checkDrugNoPiCode(codeEnttity); String errMsg = ioCheckInoutService.checkDrugNoPiCode(codeEnttity);
if (errMsg != null) { if (errMsg != null) {
return ResultVOUtils.error(500, errMsg); return ResultVOUtils.error(500, errMsg);
} else codeTempService.insert(codeEnttity); } else
codeTempService.insert(codeEnttity);
// 异步调用 查询是否存在药品关联信息 后将结果更新至 temp表 // 异步调用 查询是否存在药品关联信息 后将结果更新至 temp表
updateRelCode(bussinessTypeEntity, code); updateRelCode(bussinessTypeEntity, code);
// relCodeBatchService.threadUpdateIoCodeTempEntity(code); // relCodeBatchService.threadUpdateIoCodeTempEntity(code);

@ -138,11 +138,6 @@ public class IoCollectSet implements Serializable {
@ApiModelProperty(value = "是否启用退货扫码冲突替换10否") @ApiModelProperty(value = "是否启用退货扫码冲突替换10否")
private Boolean conflictReturn; private Boolean conflictReturn;
@TableField(value = "noCodeScan")
@ApiModelProperty(value = "无码类型是否允许上货10否")
private Boolean noCodeScan;
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;

@ -157,8 +157,6 @@ public class AddCoodeService {
* *
*/ */
public BaseResponse batchProcessDrugCodes(AddOrderCodeRequest addOrderCodeRequest, AuthAdmin authAdmin) { public BaseResponse batchProcessDrugCodes(AddOrderCodeRequest addOrderCodeRequest, AuthAdmin authAdmin) {
IoCollectSet collectSet = collectSetService.getSet();
long startTime = System.currentTimeMillis(); long startTime = System.currentTimeMillis();
AddCodeResult addCodeResult = new AddCodeResult(); AddCodeResult addCodeResult = new AddCodeResult();
List<String> codeList = addOrderCodeRequest.getCodeList(); List<String> codeList = addOrderCodeRequest.getCodeList();
@ -295,7 +293,8 @@ public class AddCoodeService {
orderEntity.setFifoSplitTag(addOrderRequest.getFifoSplitTag()); orderEntity.setFifoSplitTag(addOrderRequest.getFifoSplitTag());
orderService.insertOrder(orderEntity); orderService.insertOrder(orderEntity);
addOrderRequest.setBillNo(orderNo); addOrderRequest.setBillNo(orderNo);
} else orderEntity = isExit; } else
orderEntity = isExit;
try { try {
// 创建异步任务 // 创建异步任务
List<CompletableFuture<VailCodeResultResponse>> futures = udiEntityMap.entrySet().stream().map(entry -> { List<CompletableFuture<VailCodeResultResponse>> futures = udiEntityMap.entrySet().stream().map(entry -> {
@ -325,7 +324,7 @@ public class AddCoodeService {
udiEntity.setSerialNo(addOrderRequest.getSerialNo()); udiEntity.setSerialNo(addOrderRequest.getSerialNo());
} }
// 处理药品追溯码 // 处理药品追溯码
BaseResponse baseResponse = addDrugOrder(addOrderRequest, udiEntity, code, groupNumber, bussinessTypeEntity, udiRelevanceMap.get(udiEntity.getUdi()), authAdmin, invWarehouseEntity, collectSet); BaseResponse baseResponse = addDrugOrder(addOrderRequest, udiEntity, code, groupNumber, bussinessTypeEntity, udiRelevanceMap.get(udiEntity.getUdi()), authAdmin, invWarehouseEntity);
// 处理结果 // 处理结果
if (baseResponse.getCode() == 20000) { if (baseResponse.getCode() == 20000) {
resultResponse.setStatus(1); resultResponse.setStatus(1);
@ -379,7 +378,7 @@ public class AddCoodeService {
/** /**
* *
*/ */
public BaseResponse addDrugOrder(AddOrderRequest addOrderRequest, UdiEntity udiEntity, String code, Integer groupNumber, BasicBussinessTypeEntity bussinessTypeEntity, UdiRelevanceResponse udiRelevanceResponse, AuthAdmin authAdmin, InvWarehouseEntity invWarehouseEntity, IoCollectSet collectSet) { public BaseResponse addDrugOrder(AddOrderRequest addOrderRequest, UdiEntity udiEntity, String code, Integer groupNumber, BasicBussinessTypeEntity bussinessTypeEntity, UdiRelevanceResponse udiRelevanceResponse, AuthAdmin authAdmin, InvWarehouseEntity invWarehouseEntity) {
AddCodeResult addCodeResult = new AddCodeResult(); AddCodeResult addCodeResult = new AddCodeResult();
// 检查码是否空 // 检查码是否空
@ -387,7 +386,7 @@ public class AddCoodeService {
return ResultVOUtils.error(500, "无效条码"); return ResultVOUtils.error(500, "无效条码");
} }
if (IntUtil.value(collectSet.getNoCodeScan()) && IntUtil.value(udiRelevanceResponse.getNotCodeType()) != 0 && (bussinessTypeEntity.getAction().equals(ConstantType.SPLIT_OUT) || bussinessTypeEntity.getAction().equals(ConstantType.SPLIT_RETURN))) { if (IntUtil.value(udiRelevanceResponse.getNotCodeType()) != 0 && (bussinessTypeEntity.getAction().equals(ConstantType.SPLIT_OUT) || bussinessTypeEntity.getAction().equals(ConstantType.SPLIT_RETURN))) {
return ResultVOUtils.error(500, "当前为无码类型产品,无需扫码!"); return ResultVOUtils.error(500, "当前为无码类型产品,无需扫码!");
} }
@ -631,7 +630,7 @@ public class AddCoodeService {
} }
if (bussinessTypeEntity.getAction().equals(ConstantType.SPLIT_OUT)) { if (bussinessTypeEntity.getAction().equals(ConstantType.SPLIT_OUT)) {
//工位上货 只允许上货一个产品 开关以及控制 //工位上货 只允许上货一个产品 开关以及控制
// IoCollectSet collectSet = collectSetService.getSet(); IoCollectSet collectSet = collectSetService.getSet();
// 判断货位里面是否有相同产品 // 判断货位里面是否有相同产品
if (orderEntity != null && StrUtil.isNotEmpty(orderEntity.getWorkPlaceQueueCode())) { if (orderEntity != null && StrUtil.isNotEmpty(orderEntity.getWorkPlaceQueueCode())) {
SysWorkplace sysWorkplace = sysWorkplaceService.getOne(new LambdaQueryWrapper<SysWorkplace>().eq(SysWorkplace::getWorkplaceId, addOrderRequest.getWorkPlaceCode())); SysWorkplace sysWorkplace = sysWorkplaceService.getOne(new LambdaQueryWrapper<SysWorkplace>().eq(SysWorkplace::getWorkplaceId, addOrderRequest.getWorkPlaceCode()));
@ -776,7 +775,8 @@ public class AddCoodeService {
} }
// 按照关联ID和批次号分组码实体 // 按照关联ID和批次号分组码实体
Map<String, List<IoCodeTempEntity>> groupedTempEntities = codeTempEntities.stream().collect(Collectors.groupingBy(entity -> entity.getRelId() + ":" + StrUtil.trimToEmpty(entity.getBatchNo()))); Map<String, List<IoCodeTempEntity>> groupedTempEntities = codeTempEntities.stream()
.collect(Collectors.groupingBy(entity -> entity.getRelId() + ":" + StrUtil.trimToEmpty(entity.getBatchNo())));
// 使用synchronized块来保护关键部分 // 使用synchronized块来保护关键部分
// 获取当前订单的所有明细码 // 获取当前订单的所有明细码
@ -788,14 +788,21 @@ public class AddCoodeService {
} }
IoCodeTempEntity representative = group.get(0); IoCodeTempEntity representative = group.get(0);
UdiRelevanceResponse udiRelevanceResponse = udiRelevanceService.selectSupGroupById(representative.getRelId(), representative.getSupId()); UdiRelevanceResponse udiRelevanceResponse = udiRelevanceService.selectSupGroupById(
representative.getRelId(),
representative.getSupId());
// 计算该组的总数量 // 计算该组的总数量
int totalCount = group.stream().mapToInt(IoCodeTempEntity::getMyCount).sum(); int totalCount = group.stream().mapToInt(IoCodeTempEntity::getMyCount).sum();
int totalReCount = group.stream().mapToInt(IoCodeTempEntity::getMyReCount).sum(); int totalReCount = group.stream().mapToInt(IoCodeTempEntity::getMyReCount).sum();
// 在数据库层面使用悲观锁或乐观锁查询现有记录 // 在数据库层面使用悲观锁或乐观锁查询现有记录
IoOrderDetailCodeEntity existingEntity = orderDetailCodeDao.selectOne(new QueryWrapper<IoOrderDetailCodeEntity>().eq("orderIdFk", orderEntity.getBillNo()).eq("bindRlFk", representative.getRelId()).eq(StrUtil.isNotEmpty(representative.getBatchNo()), "batchNo", representative.getBatchNo()).last("limit 1 FOR UPDATE")); // 添加行级锁 IoOrderDetailCodeEntity existingEntity = orderDetailCodeDao.selectOne(
new QueryWrapper<IoOrderDetailCodeEntity>()
.eq("orderIdFk", orderEntity.getBillNo())
.eq("bindRlFk", representative.getRelId())
.eq(StrUtil.isNotEmpty(representative.getBatchNo()), "batchNo", representative.getBatchNo())
.last("limit 1 FOR UPDATE")); // 添加行级锁
IoOrderDetailCodeEntity resultDetailEntity; IoOrderDetailCodeEntity resultDetailEntity;
if (existingEntity != null) { if (existingEntity != null) {
@ -827,7 +834,10 @@ public class AddCoodeService {
} }
// 返回最新的明细码列表 // 返回最新的明细码列表
return orderDetailCodeDao.selectList(new QueryWrapper<IoOrderDetailCodeEntity>().select("id", "count", "reCount", "bindRlFk", "batchNo", "price").eq("orderIdFk", orderEntity.getBillNo())); return orderDetailCodeDao.selectList(
new QueryWrapper<IoOrderDetailCodeEntity>()
.select("id", "count", "reCount", "bindRlFk", "batchNo", "price")
.eq("orderIdFk", orderEntity.getBillNo()));
} }
public Integer getMaxGroupNumber() { public Integer getMaxGroupNumber() {

@ -5598,10 +5598,6 @@ CALL Pro_Temp_ColumnWork('io_collect_set', 'conflictReturn',
'tinyint NULL DEFAULT NULL COMMENT ''是否启用退货扫码冲突替换10''', 'tinyint NULL DEFAULT NULL COMMENT ''是否启用退货扫码冲突替换10''',
1); 1);
CALL Pro_Temp_ColumnWork('io_collect_set', 'noCodeScan',
'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,

Loading…
Cancel
Save