diff --git a/src/main/java/com/glxp/api/controller/basic/BasicSkPrescribeController.java b/src/main/java/com/glxp/api/controller/basic/BasicSkPrescribeController.java index 7ead29290..a2277a3f9 100644 --- a/src/main/java/com/glxp/api/controller/basic/BasicSkPrescribeController.java +++ b/src/main/java/com/glxp/api/controller/basic/BasicSkPrescribeController.java @@ -1,6 +1,7 @@ package com.glxp.api.controller.basic; import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.collection.CollUtil; import cn.hutool.core.thread.ThreadUtil; import cn.hutool.core.util.StrUtil; import com.github.pagehelper.PageInfo; @@ -13,13 +14,16 @@ import com.glxp.api.controller.BaseController; import com.glxp.api.entity.basic.BasicSkPrescribeEntity; import com.glxp.api.entity.basic.BasicSkPrescribeItemEntity; import com.glxp.api.entity.basic.BasicSkSickerEntity; +import com.glxp.api.entity.collect.IoCollectOrder; import com.glxp.api.req.basic.*; +import com.glxp.api.req.collect.CollectOrderRequest; import com.glxp.api.res.PageSimpleResponse; import com.glxp.api.res.basic.BasicSkPrescribeResponse; import com.glxp.api.res.basic.BasicSkSickerResponse; import com.glxp.api.service.BasicSkPrescribeItemService; import com.glxp.api.service.basic.BasicSkPrescribeService; import com.glxp.api.service.basic.BasicSkSickerService; +import com.glxp.api.service.collect.IoCollectOriginService; import com.glxp.api.vo.basic.BasicSkPrescribeDetailVo; import org.apache.poi.ss.formula.functions.Offset; import org.springframework.validation.BindingResult; @@ -27,6 +31,7 @@ import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RestController; +import com.glxp.api.service.collect.DownloadFactory; import javax.annotation.Resource; import java.util.List; @@ -45,6 +50,10 @@ public class BasicSkPrescribeController extends BaseController { @Resource BasicSkPrescribeItemService basicSkPrescribeItemService; + @Resource + DownloadFactory downloadFactory; + @Resource + IoCollectOriginService collectOriginService; @GetMapping("/udiwms/basic/sk/prescribe/filter") public BaseResponse filterSicker(BasicSkPrescribeRequest basicSkPrescribeRequest) { @@ -106,10 +115,28 @@ public class BasicSkPrescribeController extends BaseController { * * @return */ - @GetMapping("/udiwms/basic/sk/prescribe/save") + @PostMapping("/udiwms/basic/sk/prescribe/save") public BaseResponse sickerPrescribeSave(@RequestBody SickerPrescribeSaveRequest sickerPrescribeSaveRequest) { - List list = sickerPrescribeSaveRequest.getList(); - basicSkPrescribeService.saveOrUpdateBatch(list); + Integer stauts = sickerPrescribeSaveRequest.getStauts(); + if (stauts == 1){ + List list = sickerPrescribeSaveRequest.getList(); + if (CollUtil.isNotEmpty(list)){ + CollectOrderRequest collectOrderRequest = new CollectOrderRequest(); + for (IoCollectOrder ioCollectOrder : list) { + collectOrderRequest.setBillNo(ioCollectOrder.getBillNo()); + collectOrderRequest.setBusType(ioCollectOrder.getBusType()); + return downloadFactory.downloadOrder(collectOrderRequest); + } + } + }else if (stauts == 2){ + CollectOrderRequest collectOrderRequest = new CollectOrderRequest(); + collectOrderRequest.setStartTime(sickerPrescribeSaveRequest.getStartTime()); + collectOrderRequest.setEndTime(sickerPrescribeSaveRequest.getEndTime()); + collectOrderRequest.setBusType(sickerPrescribeSaveRequest.getBusType()); + collectOrderRequest.setBillNo(sickerPrescribeSaveRequest.getBillNo()); + return collectOriginService.downloadOrderV2(collectOrderRequest); + } + return ResultVOUtils.success(); } 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 ca71971bf..8a9e149f6 100644 --- a/src/main/java/com/glxp/api/controller/collect/IoCollectOrderController.java +++ b/src/main/java/com/glxp/api/controller/collect/IoCollectOrderController.java @@ -53,6 +53,8 @@ public class IoCollectOrderController extends BaseController { @Resource IoCollectOrderOriginService collectOrderOriginService; + @Resource + IoCollectOrderBizOriginService collectOrderBizOriginService; @Resource IoCollectOrderBizService collectOrderBizService; @@ -238,6 +240,17 @@ public class IoCollectOrderController extends BaseController { return ResultVOUtils.success(); } + @PostMapping("/udiwms/basic/collect/order/deleteOriginOrder") + public BaseResponse deleteOrderOrigin(@RequestBody DeleteRequest deleteRequest) { + String billNo = deleteRequest.getBillNo(); + if (StrUtil.isBlank(billNo)) { + return ResultVOUtils.error(ResultEnum.PARAM_VERIFY_FALL); + } + collectOrderOriginService.remove(new LambdaQueryWrapper().eq(IoCollectOrderOrigin::getBillNo, billNo)); + collectOrderBizOriginService.remove(new LambdaQueryWrapper().eq(IoCollectOrderBizOrigin::getOrderIdFk, billNo)); + return ResultVOUtils.success(); + } + /** * 保存前端处方信息 * diff --git a/src/main/java/com/glxp/api/controller/collect/IoCollectOriginController.java b/src/main/java/com/glxp/api/controller/collect/IoCollectOriginController.java index 6846bd400..af906e216 100644 --- a/src/main/java/com/glxp/api/controller/collect/IoCollectOriginController.java +++ b/src/main/java/com/glxp/api/controller/collect/IoCollectOriginController.java @@ -9,10 +9,12 @@ import com.glxp.api.controller.BaseController; import com.glxp.api.dao.basic.SysWorkplaceDocumentDao; import com.glxp.api.entity.collect.IoCollectOrder; import com.glxp.api.entity.collect.IoCollectOrderOrigin; +import com.glxp.api.http.ErpBasicClient; import com.glxp.api.req.basic.BasicCollectUserRequest; import com.glxp.api.req.basic.WorkBindBusTypeRequest; import com.glxp.api.req.collect.CollectOrderBizRequest; import com.glxp.api.req.collect.CollectOrderRequest; +import com.glxp.api.req.thrsys.FilterThrOrderRequest; import com.glxp.api.res.PageSimpleResponse; import com.glxp.api.res.basic.SysWorkplaceDocumentResponse; import com.glxp.api.res.basic.UserWorkResponse; @@ -24,6 +26,7 @@ import com.glxp.api.service.collect.DownloadFactory; import com.glxp.api.service.collect.IoCollectOrderBizOriginService; import com.glxp.api.service.collect.IoCollectOrderOriginService; import com.glxp.api.service.collect.IoCollectOriginService; +import com.glxp.api.util.IntUtil; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; @@ -55,13 +58,30 @@ public class IoCollectOriginController extends BaseController { SysWorkplaceDocumentDao sysWorkplaceDocumentDao; @Resource SysWorkplaceDocumentService sysWorkplaceDocumentService; - + @Resource + private ErpBasicClient erpBasicClient; @PostMapping("/udiwms/basic/collect/origin/order/download") public BaseResponse downloadOrder(@RequestBody CollectOrderRequest collectOrderRequest) { return collectOriginService.downloadOrderV2(collectOrderRequest); } + @PostMapping("/udiwms/basic/collect/origin/order/getThrOrderPage") + public BaseResponse getThrOrders(@RequestBody CollectOrderRequest collectOrderRequest) { + FilterThrOrderRequest filterThrOrderRequest = new FilterThrOrderRequest(); + filterThrOrderRequest.setLimit(collectOrderRequest.getLimit()); + filterThrOrderRequest.setBillNo(collectOrderRequest.getBillNo()); + filterThrOrderRequest.setThirdSys("thirdId"); + filterThrOrderRequest.setBusType(collectOrderRequest.getBusType()); + filterThrOrderRequest.setWorkPlaceCode(collectOrderRequest.getWorkPlaceCode()); + filterThrOrderRequest.setFromType(collectOrderRequest.getFromType()); + filterThrOrderRequest.setStartTime(collectOrderRequest.getStartTime()); + filterThrOrderRequest.setEndTime(collectOrderRequest.getEndTime()); + filterThrOrderRequest.setPage(collectOrderRequest.getPage()); + BaseResponse> baseResponse = erpBasicClient.getThrOrders(filterThrOrderRequest); + return baseResponse; + } + /** * 异常处理 @@ -71,8 +91,18 @@ public class IoCollectOriginController extends BaseController { */ @PostMapping("/udiwms/basic/collect/origin/order/errorHandle") public BaseResponse errorHandle(@RequestBody CollectOrderRequest collectOrderRequest) { - collectOriginService.errorHandle(collectOrderRequest); - return ResultVOUtils.success(); + return collectOriginService.errorHandle(collectOrderRequest); + } + + /** + * 异常处理-提交 + * + * @param collectOrderRequest + * @return + */ + @PostMapping("/udiwms/basic/collect/origin/order/errorHandleSubmit") + public BaseResponse errorHandleSubmit(@RequestBody CollectOrderRequest collectOrderRequest) { + return collectOriginService.errorHandleSubmit(collectOrderRequest); } @GetMapping("/udiwms/basic/collect/origin/order/filter") diff --git a/src/main/java/com/glxp/api/req/basic/SickerPrescribeSaveRequest.java b/src/main/java/com/glxp/api/req/basic/SickerPrescribeSaveRequest.java index 2d5410f5b..230f35a06 100644 --- a/src/main/java/com/glxp/api/req/basic/SickerPrescribeSaveRequest.java +++ b/src/main/java/com/glxp/api/req/basic/SickerPrescribeSaveRequest.java @@ -1,6 +1,7 @@ package com.glxp.api.req.basic; import com.glxp.api.entity.basic.BasicSkPrescribeEntity; +import com.glxp.api.entity.collect.IoCollectOrder; import com.glxp.api.res.basic.BasicSkSickerResponse; import lombok.Data; @@ -10,6 +11,15 @@ import java.util.List; @Data public class SickerPrescribeSaveRequest { + private Integer stauts; + + private String billNo; + + private String busType; + + private String endTime; + private String startTime; + @NotNull(message = "处方列表不可以为空!") - private List list; + private List list; } diff --git a/src/main/java/com/glxp/api/service/collect/IoCollectOrderService.java b/src/main/java/com/glxp/api/service/collect/IoCollectOrderService.java index c98ae3e8a..ee08985ce 100644 --- a/src/main/java/com/glxp/api/service/collect/IoCollectOrderService.java +++ b/src/main/java/com/glxp/api/service/collect/IoCollectOrderService.java @@ -521,6 +521,10 @@ public class IoCollectOrderService extends ServiceImpl bizList = collectOrder.getBizList(); if (CollUtil.isNotEmpty(bizList)) { + //先清空 原来的biz + String billNo = collectOrder.getBillNo(); + collectOrderBizOriginService.remove(new LambdaUpdateWrapper().eq(IoCollectOrderBizOrigin::getOrderIdFk,billNo)); + for (IoCollectOrderBiz collectOrderBiz : bizList) { if (collectOrderBiz.getRelId() != null) { UdiRelevanceResponse udiRelevanceResponse = udiRelevanceService.selectByRelId(collectOrderBiz.getRelId() + ""); diff --git a/src/main/java/com/glxp/api/service/collect/IoCollectOriginService.java b/src/main/java/com/glxp/api/service/collect/IoCollectOriginService.java index 2a33ab0c7..f50954289 100644 --- a/src/main/java/com/glxp/api/service/collect/IoCollectOriginService.java +++ b/src/main/java/com/glxp/api/service/collect/IoCollectOriginService.java @@ -7,14 +7,17 @@ import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.glxp.api.common.res.BaseResponse; import com.glxp.api.common.util.ResultVOUtils; +import com.glxp.api.dao.basic.BasicProductsDao; import com.glxp.api.dao.basic.SysWorkplaceDocumentDao; -import com.glxp.api.entity.basic.BasicSkPrescribeEntity; -import com.glxp.api.entity.basic.BasicSkPrescribeItemEntity; -import com.glxp.api.entity.basic.SysWorkplaceDocumentEntity; +import com.glxp.api.dao.basic.UdiRelevanceDao; +import com.glxp.api.entity.basic.*; import com.glxp.api.entity.collect.IoCollectOrder; import com.glxp.api.entity.collect.IoCollectOrderBiz; +import com.glxp.api.entity.collect.IoCollectOrderBizOrigin; +import com.glxp.api.entity.collect.IoCollectOrderOrigin; import com.glxp.api.exception.JsonException; import com.glxp.api.http.ErpBasicClient; import com.glxp.api.req.basic.GetSickPrescribeRequest; @@ -25,12 +28,14 @@ import com.glxp.api.res.PageSimpleResponse; import com.glxp.api.res.basic.BasicSkPrescribeResponse; import com.glxp.api.res.basic.SysWorkplaceDocumentResponse; import com.glxp.api.service.basic.*; +import com.glxp.api.util.BeanCopyUtils; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; import java.time.LocalDateTime; import java.util.ArrayList; +import java.util.Date; import java.util.List; /** @@ -57,6 +62,14 @@ public class IoCollectOriginService { private SysWorkplaceDocumentDao sysWorkplaceDocumentDao; @Resource private SysWorkplaceDocumentService sysWorkplaceDocumentService; + @Resource + private IoCollectOrderOriginService collectOrderOriginService; + @Resource + private IoCollectOrderBizOriginService collectOrderBizOriginService; + @Resource + private UdiRelevanceDao udiRelevanceDao; + @Resource + private BasicProductsDao basicProductsDao; public BaseResponse downloadOrderV2(CollectOrderRequest collectOrderRequest) { //条件 @@ -86,7 +99,7 @@ public class IoCollectOriginService { * @param collectOrderRequest */ @Transactional(rollbackFor = Exception.class) - public void errorHandle(CollectOrderRequest collectOrderRequest) { + public BaseResponse errorHandle(CollectOrderRequest collectOrderRequest) { if (StrUtil.isBlank(collectOrderRequest.getBillNo())) { throw new JsonException(500, "单据号不能为空"); } @@ -103,7 +116,78 @@ public class IoCollectOriginService { .eq(IoCollectOrder::getBillNo, collectOrderRequest.getBillNo()) .eq(IoCollectOrder::getTagStatus, 4)); //重新拉取 - this.downloadOrderV2(collectOrderRequest); + return this.downloadOrderV2(collectOrderRequest); } -} + @Transactional(rollbackFor = Exception.class) + public BaseResponse errorHandleSubmit(CollectOrderRequest collectOrderRequest) { + if (StrUtil.isBlank(collectOrderRequest.getBillNo())) { + throw new JsonException(500, "单据号不能为空"); + } + if (collectOrderRequest.getTagStatus() != 4) { + throw new JsonException(500, "非异常单据,无需处理"); + } + if (StrUtil.isBlank(collectOrderRequest.getBusType())) { + throw new JsonException(500, "单据类型不能为空"); + } + String billNo = collectOrderRequest.getBillNo(); + List thrOrderEntities = collectOrderOriginService.list(new LambdaUpdateWrapper().eq(IoCollectOrderOrigin::getBillNo, billNo)); + + List ioCollectOrderList = new ArrayList<>(); + if (CollUtil.isNotEmpty(thrOrderEntities)) { + for (IoCollectOrderOrigin thrOrder : thrOrderEntities) { + IoCollectOrder ioCollectOrder = new IoCollectOrder(); + BeanUtil.copyProperties(thrOrder, ioCollectOrder); + StringBuilder errorMsg = new StringBuilder(); + List bizList = new ArrayList<>(); + + List list = collectOrderBizOriginService.list(new LambdaUpdateWrapper().eq(IoCollectOrderBizOrigin::getOrderIdFk, thrOrder.getBillNo())); + for (IoCollectOrderBizOrigin entity : list) { + IoCollectOrderBiz collectOrderBiz = new IoCollectOrderBiz(); + BeanUtil.copyProperties(entity, collectOrderBiz); + UdiRelevanceEntity basicUdirelEntity = udiRelevanceDao.selectOne(new LambdaQueryWrapper().eq(UdiRelevanceEntity::getMainId, entity.getThrCode())); + if (basicUdirelEntity != null) { + collectOrderBiz.setRelId(basicUdirelEntity.getId()); + BasicProductsEntity basicProductsEntity = basicProductsDao.selectOne(new LambdaQueryWrapper().eq(BasicProductsEntity::getUuid, basicUdirelEntity.getUuid()).last("limit 1")); + if (StrUtil.isEmpty(basicProductsEntity.getNameCode())) { + errorMsg.append(entity.getCpmctymc()).append("字典未对照").append(";"); + } + } else { + errorMsg.append(entity.getCpmctymc()).append("字典未对照").append(";"); + } + collectOrderBiz.setTagStatus(1); + collectOrderBiz.setUnTagCount(0); + bizList.add(collectOrderBiz); + } + if (StrUtil.isNotBlank(errorMsg)) { + thrOrder.setTagStatus(4); + thrOrder.setErrorMsg(errorMsg.toString()); + collectOrderOriginService.updateById(thrOrder); + + List ioCollectOrderBizOrigins = BeanCopyUtils.copyList(bizList, IoCollectOrderBizOrigin.class); + collectOrderBizOriginService.updateBatchById(ioCollectOrderBizOrigins); + }else { + thrOrder.setTagStatus(0); + collectOrderOriginService.updateById(thrOrder); + + List ioCollectOrderBizOrigins = BeanCopyUtils.copyList(bizList, IoCollectOrderBizOrigin.class); + collectOrderBizOriginService.updateBatchById(ioCollectOrderBizOrigins); + + collectOrderBizService.saveBatch(bizList); + ioCollectOrder.setFromType("HIS系统"); + ioCollectOrder.setWorkPlaceCode(collectOrderRequest.getWorkPlaceCode()); + ioCollectOrder.setCreateTime(new Date()); + ioCollectOrder.setCreateUser(collectOrderRequest.getCreateUser()); + ioCollectOrder.setBackupOrderRemark1(null); + ioCollectOrder.setUpdateTime(new Date()); + ioCollectOrder.setSplitStatus(0); + ioCollectOrder.setTagStatus(0); + + collectOrderService.save(ioCollectOrder); + } + } + + } + return ResultVOUtils.success("提交成功"); + } +} \ No newline at end of file