diff --git a/src/main/java/com/glxp/api/controller/basic/UdiContrastController.java b/src/main/java/com/glxp/api/controller/basic/UdiContrastController.java index 385850000..3d3da5208 100644 --- a/src/main/java/com/glxp/api/controller/basic/UdiContrastController.java +++ b/src/main/java/com/glxp/api/controller/basic/UdiContrastController.java @@ -128,9 +128,9 @@ public class UdiContrastController { @Log(title = "耗材字典", businessType = BusinessType.UPDATE) public BaseResponse changeVersion(@RequestBody UdiCombineRequest udiCombineRequest) { UdiRelevanceEntity udiRelevanceEntity = udiRelevanceService.selectById(udiCombineRequest.getRelId()); - if (udiContrastService.isExit(udiCombineRequest.getKeys().get(0), udiRelevanceEntity.getMainId(), null)) { - return ResultVOUtils.error(500, "已存在相同的对照关系,无法切换版本"); - } +// if (udiContrastService.isExit(udiCombineRequest.getKeys().get(0), udiRelevanceEntity.getMainId(), null)) { +// return ResultVOUtils.error(500, "已存在相同的对照关系,无法切换版本"); +// } List udiInfoEntities = udiDlHttpClient.getUdiByUuid(udiCombineRequest.getKeys().get(0)); udiProductService.deleteByUuid(udiRelevanceEntity.getUuid()); diff --git a/src/main/java/com/glxp/api/dao/basic/UdiProductDao.java b/src/main/java/com/glxp/api/dao/basic/UdiProductDao.java index 9f0a8ee85..9046e194d 100644 --- a/src/main/java/com/glxp/api/dao/basic/UdiProductDao.java +++ b/src/main/java/com/glxp/api/dao/basic/UdiProductDao.java @@ -20,6 +20,8 @@ public interface UdiProductDao { List findByUuids(@Param("uuid") String uuid); + List findByOriginUuid(@Param("originUuid") String originUuid); + UdiProductEntity findById(@Param("id") String id); boolean insertUdiInfo(UdiProductEntity udiProductEntity); diff --git a/src/main/java/com/glxp/api/req/basic/FilterUdiRelRequest.java b/src/main/java/com/glxp/api/req/basic/FilterUdiRelRequest.java index 2b28d185c..688c5a6a0 100644 --- a/src/main/java/com/glxp/api/req/basic/FilterUdiRelRequest.java +++ b/src/main/java/com/glxp/api/req/basic/FilterUdiRelRequest.java @@ -100,5 +100,7 @@ public class FilterUdiRelRequest extends ListPageRequest { private String remark; private String key; + private String deviceRecordKey; + } diff --git a/src/main/java/com/glxp/api/service/basic/UdiContrastService.java b/src/main/java/com/glxp/api/service/basic/UdiContrastService.java index be0055951..f67dce64a 100644 --- a/src/main/java/com/glxp/api/service/basic/UdiContrastService.java +++ b/src/main/java/com/glxp/api/service/basic/UdiContrastService.java @@ -48,14 +48,21 @@ public class UdiContrastService { public boolean isExit(String originUuid, String mainId, String thirdSys) { - if (StrUtil.isNotEmpty(originUuid) && StrUtil.isNotEmpty(mainId) && StrUtil.isBlank(thirdSys)) { - List udiRelevanceEntities = findByUnion(originUuid, mainId); + String deviceRecordKey = null; + if (StrUtil.isNotEmpty(originUuid)) { + UdiProductEntity udiProductEntity = udiProductService.findOneByOriginUuid(originUuid); + if (udiProductEntity != null) + deviceRecordKey = udiProductEntity.getDeviceRecordKey(); + } + + if (StrUtil.isNotEmpty(deviceRecordKey) && StrUtil.isNotEmpty(mainId) && StrUtil.isBlank(thirdSys)) { + List udiRelevanceEntities = findDrkByUnion(deviceRecordKey, mainId); if (CollUtil.isNotEmpty(udiRelevanceEntities)) { return true; } else return false; - } else if (StrUtil.isNotEmpty(originUuid) && StrUtil.isEmpty(mainId)) { - List udiRelevanceEntities = findByOriginUuid(originUuid); + } else if (StrUtil.isNotEmpty(deviceRecordKey) && StrUtil.isEmpty(mainId)) { + List udiRelevanceEntities = findByDeviceRecordKey(deviceRecordKey); if (CollUtil.isNotEmpty(udiRelevanceEntities)) { for (UdiRelevanceResponse udiRelevanceEntity : udiRelevanceEntities) { if (StrUtil.isEmpty(udiRelevanceEntity.getMainId()) && StrUtil.isNotEmpty(udiRelevanceEntity.getOriginUuid())) { @@ -74,8 +81,8 @@ public class UdiContrastService { } } return false; - } else if (StrUtil.isNotBlank(originUuid) && StrUtil.isNotBlank(mainId) && StrUtil.isNotBlank(thirdSys)) { - List udiRelevanceEntities = findByUnion2(originUuid, mainId, thirdSys); + } else if (StrUtil.isNotBlank(deviceRecordKey) && StrUtil.isNotBlank(mainId) && StrUtil.isNotBlank(thirdSys)) { + List udiRelevanceEntities = findByUnion2(deviceRecordKey, mainId, thirdSys); if (CollUtil.isNotEmpty(udiRelevanceEntities)) { return true; } else @@ -84,10 +91,10 @@ public class UdiContrastService { return false; } - private List findByUnion2(String originUuid, String mainId, String thirdSys) { + private List findByUnion2(String deviceRecordKey, String mainId, String thirdSys) { FilterUdiRelRequest filterUdiRelRequest = new FilterUdiRelRequest(); filterUdiRelRequest.setMainId(mainId); - filterUdiRelRequest.setOriginUuid(originUuid); + filterUdiRelRequest.setDeviceRecordKey(deviceRecordKey); filterUdiRelRequest.setThirdSys(thirdSys); List udiRelevanceEntities = udiRelevanceDao.contrastJoinSelect(filterUdiRelRequest); return udiRelevanceEntities; @@ -101,6 +108,14 @@ public class UdiContrastService { return udiRelevanceEntities; } + public List findDrkByUnion(String deviceRecordKey, String mainId) { + FilterUdiRelRequest filterUdiRelRequest = new FilterUdiRelRequest(); + filterUdiRelRequest.setMainId(mainId); + filterUdiRelRequest.setDeviceRecordKey(deviceRecordKey); + List udiRelevanceEntities = udiRelevanceDao.contrastJoinSelect(filterUdiRelRequest); + return udiRelevanceEntities; + } + public List findByUuid(String uuid) { FilterUdiRelRequest filterUdiRelRequest = new FilterUdiRelRequest(); filterUdiRelRequest.setUuid(uuid); @@ -124,6 +139,13 @@ public class UdiContrastService { return udiRelevanceEntities; } + public List findByDeviceRecordKey(String deviceRecordKey) { + FilterUdiRelRequest filterUdiRelRequest = new FilterUdiRelRequest(); + filterUdiRelRequest.setDeviceRecordKey(deviceRecordKey); + List udiRelevanceEntities = udiRelevanceDao.contrastJoinSelect(filterUdiRelRequest); + return udiRelevanceEntities; + } + public List findByMainId(String mainId) { FilterUdiRelRequest filterUdiRelRequest = new FilterUdiRelRequest(); filterUdiRelRequest.setMainId(mainId); @@ -209,26 +231,26 @@ public class UdiContrastService { } public void insertUdiInfos(List udiInfoEntities) { - Boolean falg=false; - String uuid=""; + Boolean falg = false; + String uuid = ""; if (CollUtil.isNotEmpty(udiInfoEntities)) { UdiProductEntity udiProductEntity = udiProductService.findByUuid(udiInfoEntities.get(0).getUuid()); if (udiProductEntity == null) { for (UdiProductEntity udiInfoEntity : udiInfoEntities) { udiInfoEntity.setId(IdUtil.getSnowflakeNextId()); - if(udiInfoEntity.getZxxsbzbhsydysl()>0){ - uuid=udiInfoEntity.getUuid(); - falg=true; + if (udiInfoEntity.getZxxsbzbhsydysl() > 0) { + uuid = udiInfoEntity.getUuid(); + falg = true; } } udiProductService.insertUdiInfos(UdiInfoUtil.initUdiInfoEntitys(udiInfoEntities)); //判断产品zxxsbzbhsydysl大于0就启动使用单元 - if(falg){ - QueryWrapper ew=new QueryWrapper<>(); - ew.eq("uuid",uuid); - UdiRelevanceEntity udiRelevanceEntity=new UdiRelevanceEntity(); + if (falg) { + QueryWrapper ew = new QueryWrapper<>(); + ew.eq("uuid", uuid); + UdiRelevanceEntity udiRelevanceEntity = new UdiRelevanceEntity(); udiRelevanceEntity.setIsUseDy(true); - udiRelevanceService.update(udiRelevanceEntity,ew); + udiRelevanceService.update(udiRelevanceEntity, ew); } } } diff --git a/src/main/java/com/glxp/api/service/basic/UdiProductService.java b/src/main/java/com/glxp/api/service/basic/UdiProductService.java index ff8844c55..8e0758d80 100644 --- a/src/main/java/com/glxp/api/service/basic/UdiProductService.java +++ b/src/main/java/com/glxp/api/service/basic/UdiProductService.java @@ -29,6 +29,10 @@ public interface UdiProductService { UdiProductEntity findByUuid(String uuid); + List findByOriginUuid(String originUuid); + + UdiProductEntity findOneByOriginUuid(String originUuid); + List findByUuids(String uuid); boolean insertUdiInfo(UdiProductEntity udiProductEntity); diff --git a/src/main/java/com/glxp/api/service/basic/impl/UdiProductServiceImpl.java b/src/main/java/com/glxp/api/service/basic/impl/UdiProductServiceImpl.java index fd230fbe1..2a99e0226 100644 --- a/src/main/java/com/glxp/api/service/basic/impl/UdiProductServiceImpl.java +++ b/src/main/java/com/glxp/api/service/basic/impl/UdiProductServiceImpl.java @@ -102,6 +102,20 @@ public class UdiProductServiceImpl implements UdiProductService { return udiProductDao.findByUuid(uuid); } + @Override + public List findByOriginUuid(String originUuid) { + return udiProductDao.findByOriginUuid(originUuid); + } + + + @Override + public UdiProductEntity findOneByOriginUuid(String originUuid) { + List udiProductEntities = findByOriginUuid(originUuid); + if (CollUtil.isNotEmpty(udiProductEntities)) + return udiProductEntities.get(0); + return null; + } + @Override public List findByUuids(String uuid) { return udiProductDao.findByUuids(uuid); @@ -112,11 +126,11 @@ public class UdiProductServiceImpl implements UdiProductService { if (udiProductEntity.getId() == null) { udiProductEntity.setId(IdUtil.getSnowflakeNextId()); } - if(StrUtil.isNotBlank(udiProductEntity.getCpmctymc()) && StrUtil.isBlank(udiProductEntity.getPinyinInitial())){ + if (StrUtil.isNotBlank(udiProductEntity.getCpmctymc()) && StrUtil.isBlank(udiProductEntity.getPinyinInitial())) { try { - String pinyin= PinyinUtils.converterToFirstSpell(udiProductEntity.getCpmctymc()); + String pinyin = PinyinUtils.converterToFirstSpell(udiProductEntity.getCpmctymc()); udiProductEntity.setPinyinInitial(pinyin); - }catch (Exception e){ + } catch (Exception e) { logger.error(ExceptionUtils.getStackTrace(e)); e.printStackTrace(); } diff --git a/src/main/java/com/glxp/api/service/inout/IoAddInoutService.java b/src/main/java/com/glxp/api/service/inout/IoAddInoutService.java index ccfc27537..ad9e98f12 100644 --- a/src/main/java/com/glxp/api/service/inout/IoAddInoutService.java +++ b/src/main/java/com/glxp/api/service/inout/IoAddInoutService.java @@ -10,12 +10,15 @@ import com.glxp.api.common.res.BaseResponse; import com.glxp.api.common.util.ResultVOUtils; import com.glxp.api.constant.Constant; import com.glxp.api.constant.ConstantStatus; +import com.glxp.api.constant.ConstantType; import com.glxp.api.dao.inout.IoOrderDetailCodeDao; +import com.glxp.api.entity.auth.InvWarehouseEntity; import com.glxp.api.entity.basic.BasicBussinessTypeEntity; import com.glxp.api.entity.basic.BasicCorpEntity; import com.glxp.api.entity.basic.UdiEntity; import com.glxp.api.entity.basic.UdiRlSupEntity; import com.glxp.api.entity.inout.*; +import com.glxp.api.entity.inv.InvPreInProductDetailEntity; import com.glxp.api.entity.inv.InvProductDetailEntity; import com.glxp.api.entity.system.SystemParamConfigEntity; import com.glxp.api.req.basic.FilterCompanyProductRelevanceRequest; @@ -23,10 +26,14 @@ import com.glxp.api.entity.inout.PdaCodeEntity; import com.glxp.api.req.inout.PdaPostOrderRequest; import com.glxp.api.req.inout.PostOrderRequest; import com.glxp.api.res.basic.UdiRelevanceResponse; +import com.glxp.api.res.inv.InvPlaceDetailResponse; +import com.glxp.api.service.auth.InvWarehouseService; import com.glxp.api.service.basic.BasicCorpService; import com.glxp.api.service.basic.IBasicBussinessTypeService; import com.glxp.api.service.basic.UdiRelevanceService; import com.glxp.api.service.basic.UdiRlSupService; +import com.glxp.api.service.inv.InvPreProductDetailService; +import com.glxp.api.service.inv.InvPreinProductDetailService; import com.glxp.api.service.inv.InvProductDetailService; import com.glxp.api.service.system.SystemParamConfigService; import com.glxp.api.util.*; @@ -74,6 +81,8 @@ public class IoAddInoutService { IoOrderDetailBizService orderDetailBizService; @Resource private IoOrderDetailCodeDao orderDetailCodeDao; + @Resource + InvWarehouseService invWarehouseService; //新增扫码单据处理 public void dealProcess(IoOrderEntity orderEntity) { @@ -426,6 +435,11 @@ public class IoAddInoutService { } BasicBussinessTypeEntity bussinessTypeEntity = basicBussinessTypeService.findByAction(orderEntity.getAction()); + + BaseResponse baseResponse = checkInv(bussinessTypeEntity, pdaPostOrderRequest.getOrderDetailCodeEntities(), orderEntity, pdaPostOrderRequest.getCodeTempEntities()); + if (baseResponse != null) + return baseResponse; + String orderNo = gennerOrderUtils.createScOrderNo(new OrderNoTypeBean(Constant.SCAN_ORDER + StrUtil.trimToEmpty(bussinessTypeEntity.getPrefix()), "yyyyMMdd")); orderEntity.setBillNo(orderNo); orderService.insertOrder(orderEntity); @@ -800,4 +814,68 @@ public class IoAddInoutService { } return null; } + + @Resource + InvPreProductDetailService invPreProductDetailService; + @Resource + InvPreinProductDetailService invPreinProductDetailService; + + /** + * 手持终端上传校验库存 + */ + public BaseResponse checkInv(BasicBussinessTypeEntity bussinessTypeEntity, List orderDetailCodeEntities, IoOrderEntity orderEntity, List codeTempEntities) { + if (bussinessTypeEntity.isScanPreIn()) { //校验预验收库存 + + InvWarehouseEntity invWarehouseEntity = invWarehouseService.findByOne(ConstantStatus.ACTION_TYPE_PREIN); + for (IoCodeTempEntity codeTempEntity : codeTempEntities) { + int count = 0; + if (bussinessTypeEntity.getSpaceOut() == ConstantStatus.SPACE_OUT_NULL) { + if (StrUtil.isNotEmpty(codeTempEntity.getSerialNo())) { + count = invPreinProductDetailService.vailStockCountByCode(null, invWarehouseEntity.getCode(), null, codeTempEntity.getCode()); + } else + count = invPreinProductDetailService.vailStockCount(codeTempEntity.getRelId(), codeTempEntity.getBatchNo(), codeTempEntity.getSupId(), null, invWarehouseEntity.getCode(), null); + } else if (bussinessTypeEntity.getSpaceOut() == ConstantStatus.SPACE_OUT_SET) { + if (StrUtil.isNotEmpty(codeTempEntity.getSerialNo())) { + count = invPreinProductDetailService.vailStockCountByCode(null, invWarehouseEntity.getCode(), codeTempEntity.getPreInSpaceCode(), codeTempEntity.getCode()); + } else + count = invPreinProductDetailService.vailStockCount(codeTempEntity.getRelId(), codeTempEntity.getBatchNo(), codeTempEntity.getSupId(), null, invWarehouseEntity.getCode(), codeTempEntity.getPreInSpaceCode()); + } + if (count <= 0) { + return ResultVOUtils.error(500, "UDI码:" + codeTempEntity.getCode() + "预验收库存数量不足!"); + } + } + } else if (bussinessTypeEntity.isAdvancePreIn()) { //校验寄售库存 + + InvWarehouseEntity invWarehouseEntity = invWarehouseService.findByOne(ConstantStatus.ACTION_TYPE_ADVANCE); + for (IoOrderDetailCodeEntity orderDetailCodeEntity : orderDetailCodeEntities) { + int count = 0; + if (bussinessTypeEntity.getSpaceOut() == ConstantStatus.SPACE_OUT_NULL) { + count = invPreProductDetailService.vailStockCount(orderDetailCodeEntity.getBindRlFk(), orderDetailCodeEntity.getBatchNo(), orderDetailCodeEntity.getSupId(), null, invWarehouseEntity.getCode(), null); + } else if (bussinessTypeEntity.getSpaceOut() == ConstantStatus.SPACE_OUT_SET) { + count = invPreProductDetailService.vailStockCount(orderDetailCodeEntity.getBindRlFk(), orderDetailCodeEntity.getBatchNo(), orderDetailCodeEntity.getSupId(), null, invWarehouseEntity.getCode(), orderEntity.getPreCurSpaceCode()); + } + if (count <= 0) { + return ResultVOUtils.error(500, "提交失败," + orderDetailCodeEntity.getCoName() + "库存数量不足!"); + } + } + + } else { //校验普通库存 + if (bussinessTypeEntity.isVailInv() && bussinessTypeEntity.getMainAction().equals(ConstantType.TYPE_OUT)) { + for (IoOrderDetailCodeEntity orderDetailCodeEntity : orderDetailCodeEntities) { + int count = 0; + if (bussinessTypeEntity.getSpaceOut() == ConstantStatus.SPACE_OUT_NULL) { + count = invProductDetailService.vailStockCount(orderDetailCodeEntity.getBindRlFk(), orderDetailCodeEntity.getBatchNo(), orderDetailCodeEntity.getSupId(), orderEntity.getDeptCode(), orderEntity.getInvCode(), null); + } else if (bussinessTypeEntity.getSpaceOut() == ConstantStatus.SPACE_OUT_SET) { + count = invProductDetailService.vailStockCount(orderDetailCodeEntity.getBindRlFk(), orderDetailCodeEntity.getBatchNo(), orderDetailCodeEntity.getSupId(), orderEntity.getDeptCode(), orderEntity.getInvCode(), orderEntity.getCurSpaceCode()); + } + if (count <= 0) { + return ResultVOUtils.error(500, "提交失败," + orderDetailCodeEntity.getCoName() + "库存数量不足!"); + } + } + } + } + + return null; + } + } diff --git a/src/main/resources/mybatis/mapper/basic/UdiRelevanceDao.xml b/src/main/resources/mybatis/mapper/basic/UdiRelevanceDao.xml index 38c75c8b5..a0632a679 100644 --- a/src/main/resources/mybatis/mapper/basic/UdiRelevanceDao.xml +++ b/src/main/resources/mybatis/mapper/basic/UdiRelevanceDao.xml @@ -5,7 +5,7 @@