Merge branch 'dev_2.5_scan' of http://116.204.71.86:3000/UDI/udi-wms-java into dev_2.5_scan

dev_2.5_inv
qiuyt 3 months ago
commit 3a9c19fd7a

@ -419,7 +419,7 @@ public class IoCodeTempController extends BaseController {
@RepeatSubmit()
@AuthRuleAnnotation("")
@PostMapping("warehouse/inout/batchAddCode")
@CusRedissonAnnotation(cacheName = RedissonCacheKey.WEB_ADD_CODE, key = {"#addOrderCodeRequest.corpOrderId", "#addOrderCodeRequest.codeList"}, timeOutMsg = "系统正在处理,请勿重复提交")
@CusRedissonAnnotation(cacheName = RedissonCacheKey.WEB_ADD_CODE, key = {"#addOrderCodeRequest.corpOrderId", "#addOrderCodeRequest.codeList","#addOrderCodeRequest.code"}, timeOutMsg = "系统正在处理,请勿重复提交")
@Log(title = "单据管理", businessType = BusinessType.INSERT)
public BaseResponse batchAddCode(@RequestBody AddOrderCodeRequest addOrderCodeRequest, BindingResult bindingResult) {
@ -430,9 +430,13 @@ public class IoCodeTempController extends BaseController {
AuthAdmin authAdmin = getUser();
AddCodeResult addCodeResult = new AddCodeResult();
List<String> codeList = addOrderCodeRequest.getCodeList();
if (CollUtil.isEmpty(codeList))
if (CollUtil.isEmpty(codeList) && StrUtil.isEmpty(addOrderCodeRequest.getCode()))
return ResultVOUtils.error(500, "追溯码不能为空");
if (StrUtil.isNotEmpty(addOrderCodeRequest.getCode()) && CollUtil.isEmpty(codeList)) {
codeList = new ArrayList<>();
codeList.add(addOrderCodeRequest.getCode());
addOrderCodeRequest.setCodeList(codeList);
}
// 获取第一个码判断类型,如果是药品类型则使用批量处理方法
if (!codeList.isEmpty()) {
String firstCode = codeList.get(0);
@ -511,6 +515,7 @@ public class IoCodeTempController extends BaseController {
addCodeResult.setOrderId(temp.getOrderId());
addOrderRequest.setBillNo(temp.getOrderId());
} else {
addCodeResult.setOrderId(addOrderRequest.getBillNo());
vailCodeResultResponse.setCode(code);
vailCodeResultResponse.setStatus(2);
vailCodeResultResponse.setErrMsg(baseResponse.getMessage());

@ -58,4 +58,12 @@ public class AddOrderCodeRequest {
private String action;
private String fromCorp;
private String fromCorpName;
private String invCode;
private Integer fromType;
}

@ -203,6 +203,8 @@ public class CollectOrderBizResponse {
private String trdnFlag;
private Integer shouldCount;

@ -6,9 +6,11 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.github.pagehelper.PageHelper;
import com.glxp.api.dao.collect.IoCollectOrderBizMapper;
import com.glxp.api.entity.basic.UdiProductEntity;
import com.glxp.api.entity.collect.IoCollectOrderBiz;
import com.glxp.api.req.collect.CollectOrderBizRequest;
import com.glxp.api.res.collect.CollectOrderBizResponse;
import com.glxp.api.service.basic.UdiProductService;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
@ -21,6 +23,10 @@ public class IoCollectOrderBizService extends ServiceImpl<IoCollectOrderBizMappe
@Resource
IoCollectOrderBizMapper collectOrderBizMapper;
@Resource
UdiProductService udiProductService;
public List<CollectOrderBizResponse> filterList(CollectOrderBizRequest collectOrderRequest) {
if (collectOrderRequest == null) {
return Collections.emptyList();
@ -35,6 +41,17 @@ public class IoCollectOrderBizService extends ServiceImpl<IoCollectOrderBizMappe
collectOrderBizResponse.setProductLocation(setProductName(collectOrderBizResponse));
}
}
//设置 应该扫码数量 shouldCount
if (data.size() > 0){
for (CollectOrderBizResponse collectOrderBizResponse : data){
UdiProductEntity product = udiProductService.selectUdiByName(collectOrderBizResponse.getNameCode());
Integer myBhxjsl = product.getMyBhxjsl();
collectOrderBizResponse.setShouldCount(collectOrderBizResponse.getCount() / myBhxjsl);
if (collectOrderBizResponse.getScanCount() == null){
collectOrderBizResponse.setScanCount(0);
}
}
}
return data;
}

@ -210,14 +210,19 @@ public class AddCoodeService {
if (bussinessTypeEntity == null) {
return ResultVOUtils.error(500, "业务类型不存在");
}
// 获取仓库信息
String invCode = authAdmin.getLocInvCode();
String invCode;
if (StrUtil.isNotEmpty(addOrderCodeRequest.getInvCode())) {
invCode = addOrderCodeRequest.getInvCode();
} else
// 获取仓库信息
invCode = authAdmin.getLocInvCode();
if (StrUtil.isEmpty(addOrderCodeRequest.getFromCorp()))
addOrderCodeRequest.setFromCorp(ConstantType.SPLIT_CORP);
// 批量获取UDI相关信息
List<String> udiCodes = new ArrayList<>();
nameCodes.keySet().forEach(code -> udiCodes.add(code));
Map<String, UdiRelevanceResponse> udiRelevanceMap = udiRelevanceService.batchSelectByNameCodes(udiCodes);
if (udiRelevanceMap == null) {
if (udiRelevanceMap == null || udiRelevanceMap.size() == 0) {
return ResultVOUtils.error(500, "药品字典不存在此产品!");
}
@ -287,8 +292,8 @@ public class AddCoodeService {
orderEntity.setFifoSplitTag(addOrderRequest.getFifoSplitTag());
orderService.insertOrder(orderEntity);
addOrderRequest.setBillNo(orderNo);
}
} else
orderEntity = isExit;
try {
// 创建异步任务
List<CompletableFuture<VailCodeResultResponse>> futures = udiEntityMap.entrySet().stream().map(entry -> {
@ -304,7 +309,7 @@ public class AddCoodeService {
} else {
addOrderRequest.setAction(ConstantType.SPLIT_OUT);
}
addOrderRequest.setFromCorp(ConstantType.SPLIT_CORP);
// 设置批次信息
if (StrUtil.isNotEmpty(addOrderRequest.getBatchNo())) {
@ -352,8 +357,19 @@ public class AddCoodeService {
} finally {
executor.shutdown();
}
List<IoCodeTempEntity> codeTempEntities = codeTempService.findByOrderId(addOrderRequest.getBillNo());
genOrderDetailCodeBatch(orderEntity, codeTempEntities);
List<String> successCodes = new ArrayList<>();
vailCodeResultResponses.forEach(vailCodeResultResponse -> {
if (vailCodeResultResponse.getStatus() == 1) {
successCodes.add(vailCodeResultResponse.getCode());
}
});
if (CollUtil.isNotEmpty(successCodes)) {
List<IoCodeTempEntity> codeTempEntities = codeTempService.selectByCodes(successCodes, orderEntity.getBillNo());
genOrderDetailCodeBatch(orderEntity, codeTempEntities);
}
addCodeResult.setOrderId(orderEntity.getBillNo());
addCodeResult.setVailCodeResultResponses(vailCodeResultResponses);
log.info("批量处理药品追溯码完成,共{}个,耗时{}ms", codeList.size(), (System.currentTimeMillis() - startTime));
return ResultVOUtils.success(addCodeResult);
@ -412,12 +428,16 @@ public class AddCoodeService {
if (checkResponse.getCode() == 505) {
return checkResponse;
}
// 工位上货相关校验
BaseResponse handleSplitOutAndSplitReturnResponse = handleSplitOutAndSplitReturn(code, udiEntity, bussinessTypeEntity);
if (handleSplitOutAndSplitReturnResponse.getCode() != 20000) {
return handleSplitOutAndSplitReturnResponse;
if (bussinessTypeEntity.getAction().equals(ConstantType.SPLIT_OUT) || bussinessTypeEntity.getAction().equals(ConstantType.SPLIT_RETURN)) {
// 工位上货相关校验
BaseResponse handleSplitOutAndSplitReturnResponse = handleSplitOutAndSplitReturn(code, udiEntity, bussinessTypeEntity);
if (handleSplitOutAndSplitReturnResponse.getCode() != 20000) {
return handleSplitOutAndSplitReturnResponse;
}
}
if (addOrderRequest.getFromCorp() == null || StrUtil.isNotEmpty(addOrderRequest.getSickerAdNum())) {
String fromCorp = ioAddInoutService.updateCorp(bussinessTypeEntity, addOrderRequest.getFromCorp(), addOrderRequest.getSickerAdNum());
addOrderRequest.setFromCorp(fromCorp);
@ -787,37 +807,6 @@ public class AddCoodeService {
private IoOrderDetailCodeDao orderDetailCodeDao;
public List<IoOrderDetailCodeEntity> genOrderDetailCode(IoOrderEntity orderEntity, IoCodeTempEntity codeTempEntity) {
List<IoOrderDetailCodeEntity> ioOrderDetailCodeEntities = orderDetailCodeDao.selectList(new QueryWrapper<IoOrderDetailCodeEntity>().select("id", "count", "reCount", "bindRlFk", "batchNo", "price").eq("orderIdFk", orderEntity.getBillNo()));
UdiRelevanceResponse udiRelevanceResponse = udiRelevanceService.selectSupGroupById(codeTempEntity.getRelId(), codeTempEntity.getSupId());
if (codeTempEntity.getPrice() == null && udiRelevanceResponse.getPrice() != null) {
codeTempService.updateById(IoCodeTempEntity.builder().id(codeTempEntity.getId()).price(udiRelevanceResponse.getPrice()).build());
}
if (CollUtil.isEmpty(ioOrderDetailCodeEntities)) {
orderDetailCodeDao.insert(ioAddInoutService.buildEntity(orderEntity, codeTempEntity, udiRelevanceResponse));
ioOrderDetailCodeEntities = orderDetailCodeDao.selectList(new QueryWrapper<IoOrderDetailCodeEntity>().select("id", "count", "reCount", "bindRlFk", "batchNo", "price").eq("orderIdFk", orderEntity.getBillNo()));
} else {
// && BigDecimalUtil.equalTo(IntUtil.value(orderDetailCodeEntity.getPrice()), IntUtil.value(codeTempEntity.getPrice())
boolean isUpdate = false;
for (IoOrderDetailCodeEntity orderDetailCodeEntity : ioOrderDetailCodeEntities) {
if (orderDetailCodeEntity.getBindRlFk().longValue() == udiRelevanceResponse.getId().longValue() && StrUtil.trimToEmpty(orderDetailCodeEntity.getBatchNo()).equals(StrUtil.trimToEmpty(codeTempEntity.getBatchNo()))) {
orderDetailCodeEntity.setCount(orderDetailCodeEntity.getCount() + codeTempEntity.getMyCount());
orderDetailCodeEntity.setReCount(orderDetailCodeEntity.getReCount() + codeTempEntity.getMyReCount());
UpdateWrapper<IoOrderDetailCodeEntity> updateWrapper = new UpdateWrapper<>();
updateWrapper.set("count", orderDetailCodeEntity.getCount()).set("reCount", orderDetailCodeEntity.getReCount());
orderDetailCodeEntity.setUpdateTime(new Date());
orderDetailCodeDao.updateCount(orderDetailCodeEntity);
isUpdate = true;
break;
}
}
if (!isUpdate) {
orderDetailCodeDao.insert(ioAddInoutService.buildEntity(orderEntity, codeTempEntity, udiRelevanceResponse));
}
}
return ioOrderDetailCodeEntities;
}
/**
*
*
@ -842,24 +831,15 @@ public class AddCoodeService {
if (CollUtil.isEmpty(group)) {
continue;
}
IoCodeTempEntity representative = group.get(0);
UdiRelevanceResponse udiRelevanceResponse = udiRelevanceService.selectSupGroupById(representative.getRelId(), representative.getSupId());
// 计算该组的总数量
int totalCount = group.stream().mapToInt(IoCodeTempEntity::getMyCount).sum();
int totalReCount = group.stream().mapToInt(IoCodeTempEntity::getMyReCount).sum();
// 更新价格信息
for (IoCodeTempEntity entity : group) {
if (entity.getPrice() == null && udiRelevanceResponse != null && udiRelevanceResponse.getPrice() != null) {
codeTempService.updateById(IoCodeTempEntity.builder().id(entity.getId()).price(udiRelevanceResponse.getPrice()).build());
}
}
// 如果没有现有明细码或未找到匹配的明细码,则创建新的
boolean isUpdate = false;
IoOrderDetailCodeEntity resultDetailEntity = null;
if (CollUtil.isNotEmpty(ioOrderDetailCodeEntities)) {
for (IoOrderDetailCodeEntity orderDetailCodeEntity : ioOrderDetailCodeEntities) {
if (orderDetailCodeEntity.getBindRlFk().longValue() == representative.getRelId().longValue() && StrUtil.trimToEmpty(orderDetailCodeEntity.getBatchNo()).equals(StrUtil.trimToEmpty(representative.getBatchNo()))) {
@ -869,6 +849,7 @@ public class AddCoodeService {
orderDetailCodeEntity.setUpdateTime(new Date());
orderDetailCodeDao.updateCount(orderDetailCodeEntity);
isUpdate = true;
resultDetailEntity = orderDetailCodeEntity;
break;
}
}
@ -876,8 +857,18 @@ public class AddCoodeService {
// 如果没有更新现有记录,则创建新记录
if (!isUpdate) {
orderDetailCodeDao.insert(buildEntity(orderEntity, representative, udiRelevanceResponse, totalCount, totalReCount));
resultDetailEntity = buildEntity(orderEntity, representative, udiRelevanceResponse, totalCount, totalReCount);
orderDetailCodeDao.insert(resultDetailEntity);
}
// 更新价格信息
for (IoCodeTempEntity entity : group) {
if (entity.getPrice() == null && udiRelevanceResponse != null && udiRelevanceResponse.getPrice() != null) {
entity.setPrice(udiRelevanceResponse.getPrice());
}
entity.setBizId(resultDetailEntity.getId());
codeTempService.updateById(entity);
}
}
// 返回最新的明细码列表

@ -345,8 +345,8 @@ public class IoSplitCodeService extends ServiceImpl<IoSplitCodeMapper, IoSplitCo
for (IoCollectOrderBiz ioCollectOrderBiz : collectOrderBizs) {
IoCollectOrderBizBackup ioCollectOrderBizBackup = new IoCollectOrderBizBackup();
BeanUtils.copyProperties(ioCollectOrderBiz, ioCollectOrderBizBackup);
// ioCollectOrderBizBackup.setId(IdUtil.getSnowflake().nextId());
ioCollectOrderBizBackup.setId(ioCollectOrderBiz.getId());
ioCollectOrderBizBackup.setId(IdUtil.getSnowflake().nextId());
// ioCollectOrderBizBackup.setId(ioCollectOrderBiz.getId());
ioCollectOrderBizBackups.add(ioCollectOrderBizBackup);
}
ioCollectOrderBizBackupService.saveBatch(ioCollectOrderBizBackups);

@ -4,9 +4,9 @@ server:
spring:
datasource:
driver-class-name: com.p6spy.engine.spy.P6SpyDriver
jdbc-url: jdbc:p6spy:mysql://192.168.0.206:3306/udiwms81?allowMultiQueries=true&serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&allowPublicKeyRetrieval=true
jdbc-url: jdbc:p6spy:mysql://127.0.0.1:3306/udi_wms_yxfy?allowMultiQueries=true&serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&allowPublicKeyRetrieval=true
username: root
password: Glxp@6066
password: 123456
hikari:
connection-timeout: 60000
maximum-pool-size: 20

Loading…
Cancel
Save