From e685fb17dc5ecdfb16e64fdc31a15c7a01630686 Mon Sep 17 00:00:00 2001 From: anthonywj Date: Wed, 6 Mar 2024 11:58:09 +0800 Subject: [PATCH] =?UTF-8?q?=E5=BE=80=E6=9D=A5=E7=B1=BB=E5=9E=8B=E4=B8=BA?= =?UTF-8?q?=E6=82=A3=E8=80=85=EF=BC=8C=E6=A0=B9=E6=8D=AE=E6=82=A3=E8=80=85?= =?UTF-8?q?=E8=BF=9B=E8=A1=8C=E6=8B=86=E5=8D=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../thrsys/ThrInvOrderController.java | 12 +++ .../thrsys/impl/ThrInvOrderServiceImpl.java | 98 ++++++++++++------- 2 files changed, 77 insertions(+), 33 deletions(-) diff --git a/src/main/java/com/glxp/api/controller/thrsys/ThrInvOrderController.java b/src/main/java/com/glxp/api/controller/thrsys/ThrInvOrderController.java index 5801ea412..246c77120 100644 --- a/src/main/java/com/glxp/api/controller/thrsys/ThrInvOrderController.java +++ b/src/main/java/com/glxp/api/controller/thrsys/ThrInvOrderController.java @@ -95,6 +95,12 @@ public class ThrInvOrderController { } else return ResultVOUtils.error(500, "无法删除!"); } + /** + * 普耗与收费单据生成 + * @param generateOrderRequest + * @param bindingResult + * @return + */ @AuthRuleAnnotation("") @PostMapping("/udiwms/thrsys/generateOrder") public BaseResponse generateOrder(@RequestBody @Valid GenerateOrderRequest generateOrderRequest, BindingResult bindingResult) { @@ -107,6 +113,12 @@ public class ThrInvOrderController { return ResultVOUtils.error(500, "生成失败!"); } + /** + * 高值耗材单据生成 + * @param generateOrderRequest + * @param bindingResult + * @return + */ @AuthRuleAnnotation("") @PostMapping("/udiwms/thrsys/generateGhOrder") public BaseResponse generateGhOrder(@RequestBody @Valid GenerateOrderRequest generateOrderRequest, BindingResult bindingResult) { diff --git a/src/main/java/com/glxp/api/service/thrsys/impl/ThrInvOrderServiceImpl.java b/src/main/java/com/glxp/api/service/thrsys/impl/ThrInvOrderServiceImpl.java index 6d572bfc6..9822ed8d2 100644 --- a/src/main/java/com/glxp/api/service/thrsys/impl/ThrInvOrderServiceImpl.java +++ b/src/main/java/com/glxp/api/service/thrsys/impl/ThrInvOrderServiceImpl.java @@ -34,6 +34,7 @@ import com.glxp.api.res.PageSimpleResponse; import com.glxp.api.res.basic.MainIdRelIdAndProductResponse; import com.glxp.api.res.inv.ThrInvResultResponse; import com.glxp.api.service.auth.CustomerService; +import com.glxp.api.service.basic.IBasicBussinessTypeService; import com.glxp.api.service.basic.ProductInfoService; import com.glxp.api.service.basic.UdiRelevanceService; import com.glxp.api.service.basic.UdiRlSupService; @@ -310,6 +311,11 @@ public class ThrInvOrderServiceImpl implements ThrInvOrderService { return thrInvOrderMapper.delete(uw); } + @Resource + IBasicBussinessTypeService bussinessTypeService; + @Resource + IoAddInoutService addInoutService; + @Override public boolean generateOrder(GenerateOrderRequest generateOrderRequest) { String billNo = generateOrderRequest.getBillNo(); @@ -329,39 +335,57 @@ public class ThrInvOrderServiceImpl implements ThrInvOrderService { //校验单据的relId有null不生成单据 if (!inspectionDocuments(thrInvOrderDetails)) return false; - //新单号 - String newBillNo = gennerOrderUtils.createScOrderNo(new OrderNoTypeBean(Constant.SCAN_ORDER, "yyyyMMdd")); + //todo 如果是患者收费明细需要根据患者进行分组拆单而且往来单位为患者信息 - IoOrderEntity ioOrderEntity = new IoOrderEntity(); - ioOrderEntity.setBillNo(newBillNo); - ioOrderEntity.setMainAction(thrInvOrder.getMainAction()); - ioOrderEntity.setFromCorp(generateOrderRequest.getFromCorp()); - ioOrderEntity.setInvCode(thrInvOrder.getInvCode()); - ioOrderEntity.setDeptCode(thrInvOrder.getDeptCode()); - ioOrderEntity.setAction(generateOrderRequest.getAction()); - ioOrderEntity.setFromType(ConstantStatus.FROM_WEBNEW);//网页新增 - ioOrderEntity.setStatus(ConstantStatus.ORDER_STATUS_TEMP_SAVE);//草稿 - ioOrderEntity.setDealStatus(ConstantStatus.ORDER_DEAL_DRAFT);//草稿 - ioOrderEntity.setCorpOrderId(billNo);//单据号 - ioOrderEntity.setUpdateTime(new Date()); - ioOrderEntity.setCreateTime(new Date()); - Long userId = customerService.getUserId(); - ioOrderEntity.setCreateUser(userId + ""); - ioOrderEntity.setUpdateUser(userId + ""); - ioOrderEntity.setOrderType(ConstantStatus.ORDER_TYPE_SCAN);//正常单据处理 + BasicBussinessTypeEntity bussinessTypeEntity = bussinessTypeService.findByAction(generateOrderRequest.getAction()); + + List fromCorpList = new ArrayList<>(); + Map> grouped = new HashMap<>(); + //往来类型为患者,则需要根据患者进行拆单 + if (bussinessTypeEntity.getCorpType() == ConstantStatus.CORP_TYPE_INPUT) { + + grouped = thrInvOrderDetails.stream() + .collect(Collectors.groupingBy(ThrInvOrderDetail::getSickerCode)); + } else { + grouped.put(generateOrderRequest.getFromCorp(), thrInvOrderDetails); + } + for (Map.Entry> entry : grouped.entrySet()) { + //新单号 + String newBillNo = gennerOrderUtils.createScOrderNo(new OrderNoTypeBean(Constant.SCAN_ORDER, "yyyyMMdd")); + IoOrderEntity ioOrderEntity = new IoOrderEntity(); + ioOrderEntity.setBillNo(newBillNo); + ioOrderEntity.setMainAction(thrInvOrder.getMainAction()); + String fromCorp = addInoutService.updateCorp(bussinessTypeEntity, entry.getValue().get(0).getSickerName(), entry.getKey()); + ioOrderEntity.setFromCorp(fromCorp); + ioOrderEntity.setInvCode(thrInvOrder.getInvCode()); + ioOrderEntity.setDeptCode(thrInvOrder.getDeptCode()); + ioOrderEntity.setAction(generateOrderRequest.getAction()); + ioOrderEntity.setFromType(ConstantStatus.FROM_WEBNEW);//网页新增 + ioOrderEntity.setStatus(ConstantStatus.ORDER_STATUS_TEMP_SAVE);//草稿 + ioOrderEntity.setDealStatus(ConstantStatus.ORDER_DEAL_DRAFT);//草稿 + ioOrderEntity.setCorpOrderId(billNo);//单据号 + ioOrderEntity.setUpdateTime(new Date()); + ioOrderEntity.setCreateTime(new Date()); + Long userId = customerService.getUserId(); + ioOrderEntity.setCreateUser(userId + ""); + ioOrderEntity.setUpdateUser(userId + ""); + ioOrderEntity.setOrderType(ConstantStatus.ORDER_TYPE_SCAN);//正常单据处理 + + List newOrderDetailBiz = new ArrayList<>(grouped.values().size()); + if (!copyOrderDetailBiz(entry.getValue(), newOrderDetailBiz, newBillNo)) { + return false; + } + + ioOrderService.insertOrder(ioOrderEntity); + thrInvOrder.setStatus(ConstantStatus.SFIO_CFMD);//已确认 + thrInvOrder.setUpdateTime(new Date()); + thrInvOrder.setUpdateUser(userId + ""); + thrInvOrderMapper.updateByPrimaryKey(thrInvOrder); + ioOrderDetailBizService.batchInsertBizs(newOrderDetailBiz); - List newOrderDetailBiz = new ArrayList<>(thrInvOrderDetails.size()); - if (!copyOrderDetailBiz(thrInvOrderDetails, newOrderDetailBiz, newBillNo)) { - return false; } - ioOrderService.insertOrder(ioOrderEntity); - thrInvOrder.setStatus(ConstantStatus.SFIO_CFMD);//已确认 - thrInvOrder.setUpdateTime(new Date()); - thrInvOrder.setUpdateUser(userId + ""); - thrInvOrderMapper.updateByPrimaryKey(thrInvOrder); - ioOrderDetailBizService.batchInsertBizs(newOrderDetailBiz); // ioAddInoutService.stockGenScan(ioOrderEntity); return true; @@ -636,7 +660,9 @@ public class ThrInvOrderServiceImpl implements ThrInvOrderService { * @param newOrderDetailBiz * @return */ - private boolean copyOrderDetailBiz(List thrInvOrderDetails, List newOrderDetailBiz, String newBillNo) { + private boolean copyOrderDetailBiz + (List thrInvOrderDetails, List newOrderDetailBiz, String + newBillNo) { List relIds = thrInvOrderDetails.stream().filter(x -> ObjectUtil.isNotNull(x.getRelId())) .map(ThrInvOrderDetail::getRelId).collect(Collectors.toList()); List basicProductsEntities = udiRelevanceDao.selectProductByRelIds(relIds); @@ -661,7 +687,9 @@ public class ThrInvOrderServiceImpl implements ThrInvOrderService { * @param newBillNo * @return */ - private boolean copyIoCodeTemps(List thrInvOrderDetails, List newIoCodeTemps, String newBillNo, GenerateOrderRequest generateOrderRequest) { + private boolean copyIoCodeTemps + (List thrInvOrderDetails, List newIoCodeTemps, String + newBillNo, GenerateOrderRequest generateOrderRequest) { thrInvOrderDetails.forEach(item -> { IoCodeTempEntity ioCodeTempEntity = new IoCodeTempEntity(); @@ -685,7 +713,8 @@ public class ThrInvOrderServiceImpl implements ThrInvOrderService { * @param basicProductsEntity * @param ioOrderDetailBizEntity */ - private void parameterPackag(BasicProductsEntity basicProductsEntity, IoOrderDetailBizEntity ioOrderDetailBizEntity, ThrInvOrderDetail thrInvOrderDetail) { + private void parameterPackag(BasicProductsEntity basicProductsEntity, IoOrderDetailBizEntity + ioOrderDetailBizEntity, ThrInvOrderDetail thrInvOrderDetail) { ioOrderDetailBizEntity.setId(IdUtil.getSnowflakeNextId()); if (ObjectUtil.isNotNull(basicProductsEntity)) { BeanUtils.copyProperties(basicProductsEntity, ioOrderDetailBizEntity); @@ -724,7 +753,8 @@ public class ThrInvOrderServiceImpl implements ThrInvOrderService { * @param thrInvOrder * @param thrInvResultResponse */ - private void handleExternalConvertThrInvOrder(String billNo, FilterInvProductRequest filterInvProductRequest, ThrInvOrder thrInvOrder, ThrInvResultResponse thrInvResultResponse, Integer SourceType) { + private void handleExternalConvertThrInvOrder(String billNo, FilterInvProductRequest + filterInvProductRequest, ThrInvOrder thrInvOrder, ThrInvResultResponse thrInvResultResponse, Integer SourceType) { Date newDate = new Date(); thrInvOrder.setBillNo(billNo);//单据号 @@ -751,7 +781,9 @@ public class ThrInvOrderServiceImpl implements ThrInvOrderService { * @param thrInvOrderDetails * @param billNo */ - private void handleExternalConvertThrInvOrderDetail(List list, List thrInvOrderDetails, String billNo, String thirdSys, ThrInvOrder thrInvOrder) { + private void handleExternalConvertThrInvOrderDetail + (List list, List thrInvOrderDetails, String billNo, String + thirdSys, ThrInvOrder thrInvOrder) { Integer inv_set_enable = Integer.valueOf(systemParamConfigService.selectValueByParamKey("inv_set_enable")); if (inv_set_enable == null || inv_set_enable == 0) {//直接明细 不走项目组套 thrInvOrder.setSkProject(0);