diff --git a/src/main/java/com/glxp/api/entity/basic/UdiRelevanceEntity.java b/src/main/java/com/glxp/api/entity/basic/UdiRelevanceEntity.java index 2376f1e1e..12e73bf9d 100644 --- a/src/main/java/com/glxp/api/entity/basic/UdiRelevanceEntity.java +++ b/src/main/java/com/glxp/api/entity/basic/UdiRelevanceEntity.java @@ -4,6 +4,8 @@ import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import lombok.AllArgsConstructor; +import lombok.Builder; import lombok.Data; import java.util.Date; @@ -13,6 +15,9 @@ import java.util.Date; */ @Data +@Builder +@AllArgsConstructor +@NoArgsConstructor @TableName("basic_udirel") public class UdiRelevanceEntity { diff --git a/src/main/java/com/glxp/api/http/ErpBasicClient.java b/src/main/java/com/glxp/api/http/ErpBasicClient.java index be4a3b21a..4921898d6 100644 --- a/src/main/java/com/glxp/api/http/ErpBasicClient.java +++ b/src/main/java/com/glxp/api/http/ErpBasicClient.java @@ -237,16 +237,17 @@ public class ErpBasicClient { /** * 获取三方单据信息 + * * @param filterThrOrderRequest * @return */ - public BaseResponse> getThrOrders(FilterThrOrderRequest filterThrOrderRequest) { + public BaseResponse> getThrOrders(FilterThrOrderRequest filterThrOrderRequest) { ThrSystemEntity basicThirdSysEntity = basicThirdSysService.selectByThirdId(filterThrOrderRequest.getThirdSys()); String url = basicThirdSysEntity.getThridUrl() + "/udiwms/erp/getThrOrders"; try { String response = httpOkClient.uCloudPost(url, filterThrOrderRequest); - BaseResponse> listBaseResponse = - JSONObject.parseObject(response, new TypeReference>>() { + BaseResponse> listBaseResponse = + JSONObject.parseObject(response, new TypeReference>>() { }); return listBaseResponse; diff --git a/src/main/java/com/glxp/api/req/basic/WorkBindBusTypeRequest.java b/src/main/java/com/glxp/api/req/basic/WorkBindBusTypeRequest.java index 33c4a54a9..594e2bb6a 100644 --- a/src/main/java/com/glxp/api/req/basic/WorkBindBusTypeRequest.java +++ b/src/main/java/com/glxp/api/req/basic/WorkBindBusTypeRequest.java @@ -13,7 +13,7 @@ import java.util.List; @Data public class WorkBindBusTypeRequest extends ListPageRequest { -// private List documentTypeCode; + // private List documentTypeCode; private Long workplaceCode; private String code; private String busKey; diff --git a/src/main/java/com/glxp/api/service/collect/DownloadFactory.java b/src/main/java/com/glxp/api/service/collect/DownloadFactory.java index aa3f50d6f..9e1d0c176 100644 --- a/src/main/java/com/glxp/api/service/collect/DownloadFactory.java +++ b/src/main/java/com/glxp/api/service/collect/DownloadFactory.java @@ -1,6 +1,5 @@ package com.glxp.api.service.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.constant.BusTypeConstant; @@ -30,22 +29,14 @@ public class DownloadFactory { */ public BaseResponse downloadOrder(CollectOrderRequest collectOrderRequest) { String busType = collectOrderRequest.getBusType(); - if (StrUtil.isBlank(busType)) { + if (busType == null) { return ResultVOUtils.error("下载失败,未配置业务类型"); } if (busType.equals(BusTypeConstant.YPCF002.getBusType())) { return ypcf002Download.downloadOrder(collectOrderRequest); - } else if (busType.equals(BusTypeConstant.CGJH001.getBusType())) { - return thrOrderDownload.downloadOrder(collectOrderRequest); - } else if (busType.equals(BusTypeConstant.LYRK.getBusType())) { - return thrOrderDownload.downloadOrder(collectOrderRequest); - } else if (busType.equals(BusTypeConstant.GMRK.getBusType())) { - return thrOrderDownload.downloadOrder(collectOrderRequest); - } else if (busType.equals(BusTypeConstant.LYCK.getBusType())) { + } else { return thrOrderDownload.downloadOrder(collectOrderRequest); } - - return ResultVOUtils.error("下载失败,未配置业务类型"); } } 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 4097dfbdd..59b547f77 100644 --- a/src/main/java/com/glxp/api/service/collect/IoCollectOriginService.java +++ b/src/main/java/com/glxp/api/service/collect/IoCollectOriginService.java @@ -99,20 +99,20 @@ public class IoCollectOriginService { public BaseResponse downloadOrderV2(CollectOrderRequest collectOrderRequest) { //条件 String busType = collectOrderRequest.getBusType(); - if(StrUtil.isBlank(busType)){ + if (StrUtil.isBlank(busType)) { //下载工位下的类型 WorkBindBusTypeRequest workBindBusTypeRequest = new WorkBindBusTypeRequest(); workBindBusTypeRequest.setWorkplaceCode(collectOrderRequest.getWorkPlaceCode()); List sysWorkplaceDocumentResponses = sysWorkplaceDocumentDao.filterList(workBindBusTypeRequest); - if(CollUtil.isNotEmpty(sysWorkplaceDocumentResponses)){ - for (SysWorkplaceDocumentResponse sysWorkplaceDocumentResponse :sysWorkplaceDocumentResponses){ + if (CollUtil.isNotEmpty(sysWorkplaceDocumentResponses)) { + for (SysWorkplaceDocumentResponse sysWorkplaceDocumentResponse : sysWorkplaceDocumentResponses) { String documentTypeCode = sysWorkplaceDocumentResponse.getDocumentTypeCode(); collectOrderRequest.setBusType(documentTypeCode); downloadFactory.downloadOrder(collectOrderRequest); } } return ResultVOUtils.success("下载成功"); - }else{ + } else { return downloadFactory.downloadOrder(collectOrderRequest); } @@ -121,28 +121,29 @@ public class IoCollectOriginService { /** * 异常处理 + * * @param collectOrderRequest */ @Transactional(rollbackFor = Exception.class) public void errorHandle(CollectOrderRequest collectOrderRequest) { - if (StrUtil.isBlank(collectOrderRequest.getBillNo())){ + if (StrUtil.isBlank(collectOrderRequest.getBillNo())) { throw new JsonException(500, "单据号不能为空"); } - if (collectOrderRequest.getTagStatus() != 4){ + if (collectOrderRequest.getTagStatus() != 4) { throw new JsonException(500, "非异常单据,无需处理"); } - if(StrUtil.isBlank(collectOrderRequest.getBusType())){ + if (StrUtil.isBlank(collectOrderRequest.getBusType())) { throw new JsonException(500, "单据类型不能为空"); } - if(collectOrderRequest.getWorkPlaceCode() == null){ + if (collectOrderRequest.getWorkPlaceCode() == null) { throw new JsonException(500, "工位号不能为空"); } //删除异常单据 collectOrderBizService.remove(new LambdaQueryWrapper() - .eq(IoCollectOrderBiz::getOrderIdFk,collectOrderRequest.getBillNo())); + .eq(IoCollectOrderBiz::getOrderIdFk, collectOrderRequest.getBillNo())); collectOrderService.remove(new LambdaQueryWrapper() - .eq(IoCollectOrder::getBillNo,collectOrderRequest.getBillNo()) - .eq(IoCollectOrder::getTagStatus,4)); + .eq(IoCollectOrder::getBillNo, collectOrderRequest.getBillNo()) + .eq(IoCollectOrder::getTagStatus, 4)); //重新拉取 this.downloadOrderV2(collectOrderRequest); } diff --git a/src/main/java/com/glxp/api/service/collect/down/ThrOrderDownload.java b/src/main/java/com/glxp/api/service/collect/down/ThrOrderDownload.java index 2ec727114..ce5314892 100644 --- a/src/main/java/com/glxp/api/service/collect/down/ThrOrderDownload.java +++ b/src/main/java/com/glxp/api/service/collect/down/ThrOrderDownload.java @@ -7,8 +7,10 @@ import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.glxp.api.common.res.BaseResponse; import com.glxp.api.common.util.ResultVOUtils; +import com.glxp.api.dao.basic.UdiRelevanceDao; import com.glxp.api.dao.thrsys.ThrOrderDao; import com.glxp.api.dao.thrsys.ThrOrderDetailDao; +import com.glxp.api.entity.basic.UdiRelevanceEntity; import com.glxp.api.entity.collect.IoCollectOrder; import com.glxp.api.entity.collect.IoCollectOrderBiz; import com.glxp.api.entity.thrsys.ThrOrderDetailEntity; @@ -19,6 +21,7 @@ import com.glxp.api.req.thrsys.FilterThrOrderRequest; import com.glxp.api.res.PageSimpleResponse; import com.glxp.api.res.thrsys.ThrOrderResponse; import com.glxp.api.service.collect.IoCollectOrderService; +import com.glxp.api.util.MsDateUtil; import org.springframework.stereotype.Service; import javax.annotation.Resource; @@ -44,50 +47,32 @@ public class ThrOrderDownload implements IDownload { @Override public BaseResponse downloadOrder(CollectOrderRequest collectOrderRequest) { - LambdaQueryWrapper w = new LambdaQueryWrapper<>(); - w.eq(StrUtil.isNotBlank(collectOrderRequest.getBillNo()), ThrOrderEntity::getBillNo, collectOrderRequest.getBillNo()); - List thrOrderEntities = thrOrderDao.selectList(w); - if (CollUtil.isNotEmpty(thrOrderEntities)) { - return this.importThrOrder(thrOrderEntities, collectOrderRequest); - } else { - //三方拉取 - FilterThrOrderRequest filterThrOrderRequest = new FilterThrOrderRequest(); - filterThrOrderRequest.setPage(1); - filterThrOrderRequest.setLimit(100); - filterThrOrderRequest.setBillNo(collectOrderRequest.getBillNo()); - filterThrOrderRequest.setThirdSys("thirdId"); - filterThrOrderRequest.setBusType(collectOrderRequest.getBusType()); - filterThrOrderRequest.setWorkPlaceCode(collectOrderRequest.getWorkPlaceCode()); - filterThrOrderRequest.setFromType(collectOrderRequest.getFromType()); - BaseResponse> baseResponse = erpBasicClient.getThrOrders(filterThrOrderRequest); - if (baseResponse.getCode() == 20000) { - List list = baseResponse.getData().getList(); - if (CollUtil.isNotEmpty(list)) { - list.forEach(item -> { - ThrOrderEntity thrOrderEntity = new ThrOrderEntity(); - BeanUtil.copyProperties(item, thrOrderEntity); - thrOrderEntity.setCreateTime(new Date()); - thrOrderEntity.setUpdateTime(new Date()); - List detailList = item.getDetailList(); - if (CollUtil.isNotEmpty(detailList)) { - thrOrderDetailDao.delete(new LambdaQueryWrapper().eq(ThrOrderDetailEntity::getOrderIdFk, item.getBillNo())); - for (ThrOrderDetailEntity detail : detailList) { - detail.setCreateTime(thrOrderEntity.getCreateTime()); - detail.setUpdateTime(thrOrderEntity.getUpdateTime()); - thrOrderDetailDao.insert(detail); - } - } - thrOrderDao.insertOrUpdate(thrOrderEntity); - }); - //再次获取 - thrOrderEntities = thrOrderDao.selectList(w); - return this.importThrOrder(thrOrderEntities, collectOrderRequest); - } - } +// LambdaQueryWrapper w = new LambdaQueryWrapper<>(); +// w.eq(StrUtil.isNotBlank(collectOrderRequest.getBillNo()), ThrOrderEntity::getBillNo, collectOrderRequest.getBillNo()); +// List thrOrderEntities = thrOrderDao.selectList(w); +// if (CollUtil.isNotEmpty(thrOrderEntities)) { +// return this.importThrOrder(thrOrderEntities, collectOrderRequest); +// } else { + //三方拉取 + FilterThrOrderRequest filterThrOrderRequest = new FilterThrOrderRequest(); + filterThrOrderRequest.setPage(1); + filterThrOrderRequest.setLimit(100); + filterThrOrderRequest.setBillNo(collectOrderRequest.getBillNo()); + filterThrOrderRequest.setThirdSys("thirdId"); + filterThrOrderRequest.setBusType(collectOrderRequest.getBusType()); + filterThrOrderRequest.setWorkPlaceCode(collectOrderRequest.getWorkPlaceCode()); + filterThrOrderRequest.setFromType(collectOrderRequest.getFromType()); + BaseResponse> baseResponse = erpBasicClient.getThrOrders(filterThrOrderRequest); + if (baseResponse.getCode() == 20000) { + List list = baseResponse.getData().getList(); + return this.importThrOrder(list, collectOrderRequest); } return ResultVOUtils.error("下载失败"); } + // } + @Resource + UdiRelevanceDao udiRelevanceDao; /** * 下载至单据 @@ -95,41 +80,31 @@ public class ThrOrderDownload implements IDownload { * @param thrOrderEntities * @param collectOrderRequest */ - private BaseResponse importThrOrder(List thrOrderEntities, CollectOrderRequest collectOrderRequest) { + private BaseResponse importThrOrder(List thrOrderEntities, CollectOrderRequest collectOrderRequest) { List ioCollectOrderList = new ArrayList<>(); if (CollUtil.isNotEmpty(thrOrderEntities)) { - for (ThrOrderEntity thrOrder : thrOrderEntities) { + for (IoCollectOrder thrOrder : thrOrderEntities) { IoCollectOrder ioCollectOrder = new IoCollectOrder(); + BeanUtil.copyProperties(thrOrder, ioCollectOrder); StringBuilder errorMsg = new StringBuilder(); - ioCollectOrder.setBillNo(thrOrder.getBillNo()); ioCollectOrder.setFromType("HIS系统"); - ioCollectOrder.setFromCorp(null); ioCollectOrder.setWorkPlaceCode(collectOrderRequest.getWorkPlaceCode()); - ioCollectOrder.setFromCorpName(""); - ioCollectOrder.setBillTime(DateUtil.parseTime(thrOrder.getBilldate())); ioCollectOrder.setCreateTime(new Date()); ioCollectOrder.setCreateUser(collectOrderRequest.getCreateUser()); ioCollectOrder.setBackupOrderRemark1(null); ioCollectOrder.setUpdateTime(new Date()); ioCollectOrder.setSplitStatus(0); ioCollectOrder.setTagStatus(0); - List thrOrderDetailEntities = thrOrderDetailDao.selectList(new LambdaQueryWrapper().eq(ThrOrderDetailEntity::getOrderIdFk, thrOrder.getBillNo())); List bizList = new ArrayList<>(); - for (ThrOrderDetailEntity entity : thrOrderDetailEntities) { + for (IoCollectOrderBiz entity : thrOrder.getBizList()) { IoCollectOrderBiz collectOrderBiz = new IoCollectOrderBiz(); -// BasicUdirelEntity basicUdirelEntity = basicUdirelDao.selectOne(new LambdaQueryWrapper().eq(BasicUdirelEntity::getMainId, entity.getPHYSIC_CODE())); -// if (basicUdirelEntity != null) { -// collectOrderBiz.setRelId(basicUdirelEntity.getId()); -// } else { -// errorMsg.append(entity.getPHYSIC_NAME()).append("字典未对照").append(";"); -// } - collectOrderBiz.setThrCode(null); - collectOrderBiz.setCpmctymc(null); - collectOrderBiz.setGgxh(null); - collectOrderBiz.setBatchNo(entity.getBatchNo()); - collectOrderBiz.setOrderIdFk(ioCollectOrder.getBillNo()); - collectOrderBiz.setCount(entity.getCount()); - collectOrderBiz.setMeasureUnit(null); + BeanUtil.copyProperties(entity, collectOrderBiz); + UdiRelevanceEntity basicUdirelEntity = udiRelevanceDao.selectOne(new LambdaQueryWrapper().eq(UdiRelevanceEntity::getMainId, entity.getThrCode())); + if (basicUdirelEntity != null) { + collectOrderBiz.setRelId(basicUdirelEntity.getId()); + } else { + errorMsg.append(entity.getCpmctymc()).append("字典未对照").append(";"); + } collectOrderBiz.setTagStatus(1); collectOrderBiz.setUnTagCount(0); bizList.add(collectOrderBiz); diff --git a/src/main/java/com/glxp/api/service/collect/down/YPCF002Download.java b/src/main/java/com/glxp/api/service/collect/down/YPCF002Download.java index 3b5a078fb..b0e053016 100644 --- a/src/main/java/com/glxp/api/service/collect/down/YPCF002Download.java +++ b/src/main/java/com/glxp/api/service/collect/down/YPCF002Download.java @@ -8,6 +8,7 @@ import com.glxp.api.req.basic.GetSickPrescribeRequest; import com.glxp.api.req.collect.CollectOrderRequest; import com.glxp.api.res.PageSimpleResponse; import com.glxp.api.service.collect.IoCollectOrderService; +import com.glxp.api.util.IntUtil; import org.springframework.stereotype.Service; import javax.annotation.Resource; @@ -22,19 +23,29 @@ public class YPCF002Download implements IDownload{ @Override public BaseResponse downloadOrder(CollectOrderRequest collectOrderRequest) { + int page = 1; + int limit = 100; GetSickPrescribeRequest getSickPrescribeRequest = new GetSickPrescribeRequest(); - getSickPrescribeRequest.setPage(1); - getSickPrescribeRequest.setLimit(100); + getSickPrescribeRequest.setLimit(limit); 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(); - collectOrderService.importPrescribe(list,collectOrderRequest.getBusType()); - return ResultVOUtils.success("下载成功"); + while (true){ + getSickPrescribeRequest.setPage(page); + BaseResponse> baseResponse = erpBasicClient.getPrescribeV2(getSickPrescribeRequest); + if (baseResponse.getCode() == 20000) { + List list = baseResponse.getData().getList(); + collectOrderService.importPrescribe(list,collectOrderRequest.getBusType()); + if ((list.size() >= limit && !baseResponse.getData().getTotal().equals(-666)) || IntUtil.value(baseResponse.getData().getTotal()) == -555) { + page++; + } else { + break; + } + }else { + return ResultVOUtils.error(500, "下载第三方系统产品信息异常"); + } } - return ResultVOUtils.error("下载失败"); + return ResultVOUtils.success("下载成功"); } }