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 8adc1d1d3..2b94e7256 100644 --- a/src/main/java/com/glxp/api/controller/collect/IoCollectOriginController.java +++ b/src/main/java/com/glxp/api/controller/collect/IoCollectOriginController.java @@ -1,6 +1,8 @@ package com.glxp.api.controller.collect; +import cn.hutool.core.util.StrUtil; import com.glxp.api.common.res.BaseResponse; +import com.glxp.api.common.util.ResultVOUtils; import com.glxp.api.req.collect.CollectOrderRequest; import com.glxp.api.service.collect.IoCollectOriginService; import org.springframework.web.bind.annotation.PostMapping; @@ -24,4 +26,17 @@ public class IoCollectOriginController { public BaseResponse downloadOrder(@RequestBody CollectOrderRequest collectOrderRequest) { return collectOriginService.downloadOrderV2(collectOrderRequest); } + + + /** + * 异常处理 + * @param collectOrderRequest + * @return + */ + @PostMapping("/udiwms/basic/collect/origin/order/errorHandle") + public BaseResponse errorHandle(@RequestBody CollectOrderRequest collectOrderRequest) { + collectOriginService.errorHandle(collectOrderRequest); + return ResultVOUtils.success(); + } + } diff --git a/src/main/java/com/glxp/api/req/basic/GetSickPrescribeRequest.java b/src/main/java/com/glxp/api/req/basic/GetSickPrescribeRequest.java index 1f718aa19..7749e2d6d 100644 --- a/src/main/java/com/glxp/api/req/basic/GetSickPrescribeRequest.java +++ b/src/main/java/com/glxp/api/req/basic/GetSickPrescribeRequest.java @@ -23,4 +23,9 @@ public class GetSickPrescribeRequest extends ListPageRequest { * 工位编码 */ private Long workPlaceCode; + + /** + * 来源业务 + */ + private String fromType; } diff --git a/src/main/java/com/glxp/api/res/collect/IoCollectOrderResponse.java b/src/main/java/com/glxp/api/res/collect/IoCollectOrderResponse.java index edac10b22..863c97250 100644 --- a/src/main/java/com/glxp/api/res/collect/IoCollectOrderResponse.java +++ b/src/main/java/com/glxp/api/res/collect/IoCollectOrderResponse.java @@ -164,6 +164,11 @@ public class IoCollectOrderResponse { */ private String uploadError; + /** + * 异常信息 + */ + private String errorMsg; + public String getFromName() { if (StrUtil.isNotEmpty(fromCorpName)) 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 df6b2efa4..496880533 100644 --- a/src/main/java/com/glxp/api/service/collect/IoCollectOrderService.java +++ b/src/main/java/com/glxp/api/service/collect/IoCollectOrderService.java @@ -450,6 +450,7 @@ public class IoCollectOrderService extends ServiceImpl ioCollectOrderList,String addr) { //下载处方 if (CollUtil.isNotEmpty(ioCollectOrderList)){ @@ -500,14 +501,16 @@ public class IoCollectOrderService extends ServiceImpl bizList = collectOrder.getBizList(); if (CollUtil.isNotEmpty(bizList)){ for(IoCollectOrderBiz collectOrderBiz : bizList){ - UdiRelevanceResponse udiRelevanceResponse = udiRelevanceService.selectByRelId(collectOrderBiz.getRelId() + ""); - if (udiRelevanceResponse != null) { - collectOrderBiz.setYbbm(udiRelevanceResponse.getYbbm()); - collectOrderBiz.setPayFeeCode(udiRelevanceResponse.getPayFeeCode()); - collectOrderBiz.setNameCode(udiRelevanceResponse.getNameCode()); - if (IntUtil.value(udiRelevanceResponse.getProductsType()) == 2) { - collectOrderBiz.setGgxh(udiRelevanceResponse.getBzgg()); - collectOrderBiz.setMeasureUnit(udiRelevanceResponse.getPrepnUnit()); + if(collectOrderBiz.getRelId() != null){ + UdiRelevanceResponse udiRelevanceResponse = udiRelevanceService.selectByRelId(collectOrderBiz.getRelId() + ""); + if (udiRelevanceResponse != null) { + collectOrderBiz.setYbbm(udiRelevanceResponse.getYbbm()); + collectOrderBiz.setPayFeeCode(udiRelevanceResponse.getPayFeeCode()); + collectOrderBiz.setNameCode(udiRelevanceResponse.getNameCode()); + if (IntUtil.value(udiRelevanceResponse.getProductsType()) == 2) { + collectOrderBiz.setGgxh(udiRelevanceResponse.getBzgg()); + collectOrderBiz.setMeasureUnit(udiRelevanceResponse.getPrepnUnit()); + } } } } 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 b245173bd..7005874e7 100644 --- a/src/main/java/com/glxp/api/service/collect/IoCollectOriginService.java +++ b/src/main/java/com/glxp/api/service/collect/IoCollectOriginService.java @@ -2,7 +2,9 @@ package com.glxp.api.service.collect; import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.lang.Assert; 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.glxp.api.common.res.BaseResponse; @@ -10,6 +12,8 @@ import com.glxp.api.common.util.ResultVOUtils; import com.glxp.api.entity.basic.BasicSkPrescribeEntity; import com.glxp.api.entity.basic.BasicSkPrescribeItemEntity; import com.glxp.api.entity.collect.IoCollectOrder; +import com.glxp.api.entity.collect.IoCollectOrderBiz; +import com.glxp.api.exception.JsonException; import com.glxp.api.http.ErpBasicClient; import com.glxp.api.req.basic.GetSickPrescribeRequest; import com.glxp.api.req.collect.CollectOrderRequest; @@ -18,6 +22,7 @@ import com.glxp.api.res.PageSimpleResponse; import com.glxp.api.res.basic.BasicSkPrescribeResponse; import com.glxp.api.service.basic.*; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; import java.time.LocalDateTime; @@ -40,6 +45,8 @@ public class IoCollectOriginService { @Resource IoCollectOrderService collectOrderService; + @Resource + IoCollectOrderBizService collectOrderBizService; public BaseResponse downloadOrder(CollectOrderRequest collectOrderRequest) { @@ -91,6 +98,7 @@ public class IoCollectOriginService { getSickPrescribeRequest.setCode(collectOrderRequest.getBillNo()); getSickPrescribeRequest.setThirdSys("thirdId"); getSickPrescribeRequest.setWorkPlaceCode(collectOrderRequest.getWorkPlaceCode()); + getSickPrescribeRequest.setFromType(collectOrderRequest.getFromType()); BaseResponse> baseResponse = erpBasicClient.getPrescribeV2(getSickPrescribeRequest); if (baseResponse.getCode() == 20000) { List list = baseResponse.getData().getList(); @@ -101,4 +109,34 @@ public class IoCollectOriginService { return ResultVOUtils.error("下载失败"); } + + + /** + * 异常处理 + * @param collectOrderRequest + */ + @Transactional(rollbackFor = Exception.class) + public void errorHandle(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, "单据类型不能为空"); + } + if(collectOrderRequest.getWorkPlaceCode() == null){ + throw new JsonException(500, "工位号不能为空"); + } + //删除异常单据 + collectOrderBizService.remove(new LambdaQueryWrapper() + .eq(IoCollectOrderBiz::getOrderIdFk,collectOrderRequest.getBillNo())); + collectOrderService.remove(new LambdaQueryWrapper() + .eq(IoCollectOrder::getBillNo,collectOrderRequest.getBillNo()) + .eq(IoCollectOrder::getTagStatus,4)); + //重新拉取 + this.downloadOrderV2(collectOrderRequest); + } + } diff --git a/src/main/resources/mybatis/mapper/collect/IoCollectOrderMapper.xml b/src/main/resources/mybatis/mapper/collect/IoCollectOrderMapper.xml index d32301675..59c66af77 100644 --- a/src/main/resources/mybatis/mapper/collect/IoCollectOrderMapper.xml +++ b/src/main/resources/mybatis/mapper/collect/IoCollectOrderMapper.xml @@ -30,6 +30,7 @@ ico.orderTime, ico.uploadStatus, ico.uploadError, + ico.errorMsg, row_number() over ( order by case when ico.orderTime is null then ico.createTime else ico.orderTime end desc ) as orderSequence FROM io_collect_order ico left join sys_workplace_document on ico.busType = sys_workplace_document.documentTypeCode