diff --git a/src/main/java/com/glxp/api/controller/collect/IoCollectOrderController.java b/src/main/java/com/glxp/api/controller/collect/IoCollectOrderController.java index d52a36a7b..e697779fb 100644 --- a/src/main/java/com/glxp/api/controller/collect/IoCollectOrderController.java +++ b/src/main/java/com/glxp/api/controller/collect/IoCollectOrderController.java @@ -163,5 +163,11 @@ public class IoCollectOrderController extends BaseController { return ResultVOUtils.success("绑定成功"); } + @GetMapping("/udiwms/collect/order/import") + public BaseResponse importOrder() { + collectOrderService.importOrder(); + return ResultVOUtils.success(); + } + } diff --git a/src/main/java/com/glxp/api/controller/inout/IoCodeTempController.java b/src/main/java/com/glxp/api/controller/inout/IoCodeTempController.java index 7bd7e564e..4a3a8aad8 100644 --- a/src/main/java/com/glxp/api/controller/inout/IoCodeTempController.java +++ b/src/main/java/com/glxp/api/controller/inout/IoCodeTempController.java @@ -143,6 +143,8 @@ public class IoCodeTempController extends BaseController { originCode = ""; code = originCode + addEnterCodeRequest.getCode(); String newCode = addEnterCodeRequest.getCode(); + + //重复判断 if (StrUtil.isNotEmpty(addEnterCodeRequest.getOriginCode())) { String tempOriginCode = addEnterCodeRequest.getOriginCode(); @@ -228,6 +230,11 @@ public class IoCodeTempController extends BaseController { baseResponse.setData(originCode); return baseResponse; } + if (IntUtil.value(udiEntity.getProductType()) == 2) { + //药品 + udiEntity.setCode(code); + return ResultVOUtils.success(udiEntity); + } if (StrUtil.isNotEmpty(udiEntity.getBatchNo())) { if (code.endsWith("10" + udiEntity.getBatchNo())) { @@ -324,9 +331,7 @@ public class IoCodeTempController extends BaseController { if (bindingResult.hasErrors()) { return ResultVOUtils.error(ResultEnum.PARAM_VERIFY_FALL, bindingResult.getFieldError().getDefaultMessage()); } - AddCodeResult addCodeResult = new AddCodeResult(); - BasicBussinessTypeEntity bussinessTypeEntity = basicBussinessTypeService.findByAction(addOrderRequest.getAction()); - InvWarehouseEntity invWarehouseEntity = invWarehouseService.findByInvSubByCode(addOrderRequest.getInvCode()); + String code = addOrderRequest.getCode(); if (StringUtils.isBlank(code)) return ResultVOUtils.error(ResultEnum.DATA_ERROR); if (code.endsWith("\u001D")) { @@ -348,6 +353,21 @@ public class IoCodeTempController extends BaseController { if (StrUtil.isNotEmpty(addOrderRequest.getSerialNo())) { udiEntity.setSerialNo(addOrderRequest.getSerialNo()); } + if (IntUtil.value(udiEntity.getProductType()) == 2) { + return adddGrugOrder(addOrderRequest, udiEntity, code); + } else { + return addMaterOrder(addOrderRequest, udiEntity, code); + } + + } + + + public BaseResponse addMaterOrder(AddOrderRequest addOrderRequest, UdiEntity udiEntity, String code) { + + AddCodeResult addCodeResult = new AddCodeResult(); + BasicBussinessTypeEntity bussinessTypeEntity = basicBussinessTypeService.findByAction(addOrderRequest.getAction()); + InvWarehouseEntity invWarehouseEntity = invWarehouseService.findByInvSubByCode(addOrderRequest.getInvCode()); + if (StrUtil.isNotEmpty(udiEntity.getSerialNo()) && udiEntity.getSerialNo().length() > 20) { return ResultVOUtils.error(500, "无效条码!序列号超出最大范围"); @@ -908,41 +928,10 @@ public class IoCodeTempController extends BaseController { return ResultVOUtils.success(addCodeResult); } - - //前端扫码提交(药品) - @RepeatSubmit() - @AuthRuleAnnotation("") - @PostMapping("warehouse/inout/drug/addOrderWeb") - @CusRedissonAnnotation(cacheName = RedissonCacheKey.WEB_ADD_CODE, key = {"#addOrderRequest.corpOrderId", "#addOrderRequest.code"}, timeOutMsg = "系统正在处理,请勿重复扫码") - @Log(title = "单据管理", businessType = BusinessType.INSERT) - public BaseResponse addDrugOrderWeb(@RequestBody AddOrderRequest addOrderRequest, BindingResult bindingResult) { - if (bindingResult.hasErrors()) { - return ResultVOUtils.error(ResultEnum.PARAM_VERIFY_FALL, bindingResult.getFieldError().getDefaultMessage()); - } + public BaseResponse adddGrugOrder(AddOrderRequest addOrderRequest, UdiEntity udiEntity, String code) { AddCodeResult addCodeResult = new AddCodeResult(); BasicBussinessTypeEntity bussinessTypeEntity = basicBussinessTypeService.findByAction(addOrderRequest.getAction()); InvWarehouseEntity invWarehouseEntity = invWarehouseService.findByInvSubByCode(addOrderRequest.getInvCode()); - String code = addOrderRequest.getCode(); - if (StringUtils.isBlank(code)) return ResultVOUtils.error(ResultEnum.DATA_ERROR); - if (code.endsWith("\u001D")) { - code = code.replace("\u001D", ""); - } - UdiEntity udiEntity = FilterUdiUtils.getUdi(code); - if (udiEntity == null) - return ResultVOUtils.error(500, "无效条码!"); - - if (StrUtil.isNotEmpty(addOrderRequest.getBatchNo())) { - udiEntity.setBatchNo(addOrderRequest.getBatchNo()); - } - if (StrUtil.isNotEmpty(addOrderRequest.getProduceDate())) { - udiEntity.setProduceDate(addOrderRequest.getProduceDate()); - } - if (StrUtil.isNotEmpty(addOrderRequest.getExpireDate())) { - udiEntity.setExpireDate(addOrderRequest.getExpireDate()); - } - if (StrUtil.isNotEmpty(addOrderRequest.getSerialNo())) { - udiEntity.setSerialNo(addOrderRequest.getSerialNo()); - } //批次号校验 @@ -1302,7 +1291,7 @@ public class IoCodeTempController extends BaseController { } else codeTempService.insert(codeEnttity); // } else if (bussinessTypeEntity.getCheckWebNew() == 2 && bussinessTypeEntity.isCheckEnable()) { - } else if (addOrderRequest.getOrderType() == ConstantStatus.ORDER_TYPE_WAIT && bussinessTypeEntity.isCheckEnable()) { + } else if (IntUtil.value(addOrderRequest.getOrderType()) == ConstantStatus.ORDER_TYPE_WAIT && bussinessTypeEntity.isCheckEnable()) { String errMsg = ioCheckInoutService.checkDrugNoPiCode(codeEnttity); if (errMsg != null) { return ResultVOUtils.error(500, errMsg); @@ -1318,8 +1307,46 @@ public class IoCodeTempController extends BaseController { return ResultVOUtils.success(addCodeResult); } + //前端扫码提交(药品) + @RepeatSubmit() + @AuthRuleAnnotation("") + @PostMapping("warehouse/inout/drug/addOrderWeb") + @CusRedissonAnnotation(cacheName = RedissonCacheKey.WEB_ADD_CODE, key = {"#addOrderRequest.corpOrderId", "#addOrderRequest.code"}, timeOutMsg = "系统正在处理,请勿重复扫码") + @Log(title = "单据管理", businessType = BusinessType.INSERT) + public BaseResponse addDrugOrderWeb(@RequestBody AddOrderRequest addOrderRequest, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + return ResultVOUtils.error(ResultEnum.PARAM_VERIFY_FALL, bindingResult.getFieldError().getDefaultMessage()); + } + if (bindingResult.hasErrors()) { + return ResultVOUtils.error(ResultEnum.PARAM_VERIFY_FALL, bindingResult.getFieldError().getDefaultMessage()); + } + + String code = addOrderRequest.getCode(); + if (StringUtils.isBlank(code)) return ResultVOUtils.error(ResultEnum.DATA_ERROR); + if (code.endsWith("\u001D")) { + code = code.replace("\u001D", ""); + } + UdiEntity udiEntity = FilterUdiUtils.getUdi(code); + if (udiEntity == null) + return ResultVOUtils.error(500, "无效条码!"); + + if (StrUtil.isNotEmpty(addOrderRequest.getBatchNo())) { + udiEntity.setBatchNo(addOrderRequest.getBatchNo()); + } + if (StrUtil.isNotEmpty(addOrderRequest.getProduceDate())) { + udiEntity.setProduceDate(addOrderRequest.getProduceDate()); + } + if (StrUtil.isNotEmpty(addOrderRequest.getExpireDate())) { + udiEntity.setExpireDate(addOrderRequest.getExpireDate()); + } + if (StrUtil.isNotEmpty(addOrderRequest.getSerialNo())) { + udiEntity.setSerialNo(addOrderRequest.getSerialNo()); + } + return adddGrugOrder(addOrderRequest, udiEntity, code); + } - public void checkPrice(IoCodeTempEntity codeTempEntity, BasicBussinessTypeEntity bussinessTypeEntity, String inBatch, List codeTempEntities) { + public void checkPrice(IoCodeTempEntity codeTempEntity, BasicBussinessTypeEntity bussinessTypeEntity, String + inBatch, List codeTempEntities) { String priceFifo = systemParamConfigService.selectValueByParamKey("price_fifo"); if (IntUtil.value(priceFifo) > 0) { //入库时添加入库批号 @@ -1362,7 +1389,8 @@ public class IoCodeTempController extends BaseController { } //校验供应商是否配送此产品 - public BaseResponse checkCorp(IoCodeTempEntity codeEnttity, BasicBussinessTypeEntity bussinessTypeEntity, String unitFk) { + public BaseResponse checkCorp(IoCodeTempEntity codeEnttity, BasicBussinessTypeEntity + bussinessTypeEntity, String unitFk) { CompanyProductRelevanceRequest companyProductRelevanceRequest = new CompanyProductRelevanceRequest(); UdiEntity udiEntity = FilterUdiUtils.getUdi(codeEnttity.getCode()); companyProductRelevanceRequest.setNameCode(udiEntity.getUdi()); @@ -1440,7 +1468,8 @@ public class IoCodeTempController extends BaseController { } //校验供应商唯一性 - public BaseResponse checkSupId(BasicBussinessTypeEntity bussinessTypeEntity, IoCodeTempEntity codeEnttity, String unitFk) { + public BaseResponse checkSupId(BasicBussinessTypeEntity bussinessTypeEntity, IoCodeTempEntity + codeEnttity, String unitFk) { String originSupId = unitFk; if (originSupId != null) { codeEnttity.setSupId(originSupId); @@ -2200,7 +2229,8 @@ public class IoCodeTempController extends BaseController { /** * @param purType 1:入账库;2:预验收库;3:寄售库 */ - public boolean checkDiAttribute(BasicBussinessTypeEntity bussinessTypeEntity, UdiRelevanceResponse udiRelevanceEntity, Integer purType) { + public boolean checkDiAttribute(BasicBussinessTypeEntity bussinessTypeEntity, UdiRelevanceResponse + udiRelevanceEntity, Integer purType) { if (bussinessTypeEntity.getUseDyCount() == 2) { if (IntUtil.value(udiRelevanceEntity.getPurType()) == IntUtil.value(purType)) { return true; diff --git a/src/main/java/com/glxp/api/controller/inout/IoOrderDetailBizController.java b/src/main/java/com/glxp/api/controller/inout/IoOrderDetailBizController.java index f43ea9087..25321e1d6 100644 --- a/src/main/java/com/glxp/api/controller/inout/IoOrderDetailBizController.java +++ b/src/main/java/com/glxp/api/controller/inout/IoOrderDetailBizController.java @@ -172,6 +172,7 @@ public class IoOrderDetailBizController extends BaseController { orderEntity.setDeptCode(invWarehouseEntity.getParentId()); orderEntity.setInvCode(orderEntity.getInvCode()); orderEntity.setBusType(bussinessTypeEntity.getBusType()); + orderEntity.setProductType(1); orderService.insertOrder(orderEntity); } @@ -401,6 +402,7 @@ public class IoOrderDetailBizController extends BaseController { orderEntity.setFromType(ConstantStatus.FROM_THRORDER); orderEntity.setOrderType(ConstantStatus.ORDER_TYPE_BIZ); orderEntity.setBusType(bussinessTypeEntity.getBusType()); + orderEntity.setProductType(1); orderService.insertOrder(orderEntity); for (ThrOrderDetailEntity thrOrderDetailEntity : thrOrderDetailEntities) { @@ -506,7 +508,9 @@ public class IoOrderDetailBizController extends BaseController { orderEntity.setOrderType(ConstantStatus.ORDER_TYPE_BIZ); orderEntity.setFromDeptCode(purReceiveEntity.getDeptCode()); orderEntity.setFromInvCode(purReceiveEntity.getInvCode()); + orderEntity.setProductType(1); orderEntity.setBusType(bussinessTypeEntity.getBusType()); + orderService.insertOrder(orderEntity); for (PurReceiveDetailEntity purReceiveDetailEntity : purReceiveDetailEntities) { IoOrderDetailBizEntity ioOrderDetailBizEntity = new IoOrderDetailBizEntity(); @@ -578,6 +582,7 @@ public class IoOrderDetailBizController extends BaseController { orderEntity.setFromType(ConstantStatus.FROM_RECEIVE); orderEntity.setOrderType(ConstantStatus.ORDER_TYPE_BIZ); orderEntity.setBusType(bussinessTypeEntity.getBusType()); + orderEntity.setProductType(1); orderService.insertOrder(orderEntity); for (PurOrderDetailEntity purReceiveDetailEntity : purOrderDetailEntities) { IoOrderDetailBizEntity ioOrderDetailBizEntity = new IoOrderDetailBizEntity(); diff --git a/src/main/java/com/glxp/api/entity/basic/UdiEntity.java b/src/main/java/com/glxp/api/entity/basic/UdiEntity.java index 56ec2b0f7..ea51e5053 100644 --- a/src/main/java/com/glxp/api/entity/basic/UdiEntity.java +++ b/src/main/java/com/glxp/api/entity/basic/UdiEntity.java @@ -18,6 +18,8 @@ public class UdiEntity { private String serialNo; private String udi; + private Integer productType; + @Override public String toString() { return "UdiEntity{" + diff --git a/src/main/java/com/glxp/api/service/basic/BasicCollectBustypeService.java b/src/main/java/com/glxp/api/service/basic/BasicCollectBustypeService.java index b396851c3..71c35a350 100644 --- a/src/main/java/com/glxp/api/service/basic/BasicCollectBustypeService.java +++ b/src/main/java/com/glxp/api/service/basic/BasicCollectBustypeService.java @@ -40,12 +40,21 @@ public class BasicCollectBustypeService extends ServiceImpl().eq(BasicCollectBustypeEntity::getCode, code).last("limit 1 ")); } + public BasicCollectBustypeEntity findByAddr(String addr) { + return basicCollectBustypeMapper.selectOne(new LambdaQueryWrapper().eq(BasicCollectBustypeEntity::getFromInterAddress, addr).last("limit 1 ")); + } + + public BasicCollectBustypeEntity findByName(String name) { + return basicCollectBustypeMapper.selectOne(new LambdaQueryWrapper().eq(BasicCollectBustypeEntity::getName, name).last("limit 1 ")); + } + + public String genCode() { String code = this.getCode(); - return code; + return code; } - private String getCode(){ + private String getCode() { long workerId = IdUtil.getSnowflakeNextId(); String s = String.valueOf(workerId); Random random = new Random(); @@ -53,7 +62,7 @@ public class BasicCollectBustypeService extends ServiceImpl().eq(BasicCollectBustypeEntity::getCode, randomNumber)); - if (basicCollectBustypeEntity != null){ + if (basicCollectBustypeEntity != null) { String code1 = this.getCode(); return code1; } @@ -61,5 +70,4 @@ public class BasicCollectBustypeService extends ServiceImpl list = orderService.selectAll(); + List collectOrderList = new ArrayList<>(); + for (IoOrderEntity ioOrderEntity : list) { + BasicCollectBustypeEntity collectBustypeEntity = collectBustypeService.findByAddr(ioOrderEntity.getAction()); + if (collectBustypeEntity == null) + continue; + if (collectOrderMapper.exists(new LambdaQueryWrapper().eq(IoCollectOrder::getBillNo, ioOrderEntity.getBillNo()))) { + continue; + } + IoCollectOrder collectOrder = IoCollectOrder.builder() + .billNo(ioOrderEntity.getBillNo()) + .busType(collectBustypeEntity.getCode()) + .fromType("内部单据") + .fromCorp(ioOrderEntity.getFromCorp()) + .billTime(ioOrderEntity.getCreateTime()) + .createTime(ioOrderEntity.getCreateTime()) + .createUser(ioOrderEntity.getCreateUser()) + .fromCorp(ioOrderEntity.getFromCorp()) + .updateTime(new Date()) + .splitStatus(0) + .tagStatus(0) + .build(); + collectOrderList.add(collectOrder); + List orderDetailBizEntities = orderDetailBizService.findByOrderId(ioOrderEntity.getBillNo()); + + List collectOrderBizs = new ArrayList<>(); + for (IoOrderDetailBizEntity bizEntity : orderDetailBizEntities) { + IoCollectOrderBiz collectOrderBiz = IoCollectOrderBiz.builder().orderIdFk(collectOrder.getBillNo()) + .relId(bizEntity.getBindRlFk()) + .cpmctymc(bizEntity.getCoName()) + .nameCode(bizEntity.getNameCode()) + .ggxh(bizEntity.getSpec()) + .batchNo(bizEntity.getBatchNo()) + .productDate(bizEntity.getProductDate()) + .expireDate(bizEntity.getExpireDate()) + .count(bizEntity.getCount()) + .measureUnit(bizEntity.getMeasname()) + .tagStatus(1) + .unTagCount(bizEntity.getCount()).build(); + collectOrderBizs.add(collectOrderBiz); + } + if (CollUtil.isNotEmpty(collectOrderBizs)) + collectOrderBizService.saveBatch(collectOrderBizs); + } + if (CollUtil.isNotEmpty(collectOrderList)) + saveBatch(collectOrderList); + + } + } diff --git a/src/main/java/com/glxp/api/service/inout/impl/IoOrderServiceImpl.java b/src/main/java/com/glxp/api/service/inout/impl/IoOrderServiceImpl.java index f2d115334..1599a2955 100644 --- a/src/main/java/com/glxp/api/service/inout/impl/IoOrderServiceImpl.java +++ b/src/main/java/com/glxp/api/service/inout/impl/IoOrderServiceImpl.java @@ -185,6 +185,8 @@ public class IoOrderServiceImpl implements IoOrderService { } orderEntity.setExportStatus(0); //上传状态:未上传 orderEntity.setInCodeStatus(0); + if (orderEntity.getProductType() == null) + orderEntity.setProductType(1); return orderDao.insert(orderEntity); } @@ -819,8 +821,8 @@ public class IoOrderServiceImpl implements IoOrderService { @Override - public List filterOrderTrace(String billNo,Integer productType) { - IoOrderEntity order = orderDao.selectOne(new QueryWrapper().eq("billNo", billNo).eq("productType",productType).in("status", 5, 7, 10).in("dealStatus", 2, 3, 4)); + public List filterOrderTrace(String billNo, Integer productType) { + IoOrderEntity order = orderDao.selectOne(new QueryWrapper().eq("billNo", billNo).eq("productType", productType).in("status", 5, 7, 10).in("dealStatus", 2, 3, 4)); if (null == order) { return Collections.emptyList(); diff --git a/src/main/java/com/glxp/api/util/udi/FilterUdiUtils.java b/src/main/java/com/glxp/api/util/udi/FilterUdiUtils.java index cd89d6476..fd5dd1310 100644 --- a/src/main/java/com/glxp/api/util/udi/FilterUdiUtils.java +++ b/src/main/java/com/glxp/api/util/udi/FilterUdiUtils.java @@ -179,6 +179,7 @@ public class FilterUdiUtils { udiEntity.setProduceDate(null); udiEntity.setUdi(prefix); udiEntity.setSerialNo(serialNo); + udiEntity.setProductType(2); return udiEntity; }