From 71687a71fc23e9c9c5dd1c98c16334d23fdcb010 Mon Sep 17 00:00:00 2001 From: yewj Date: Mon, 9 Sep 2024 16:36:11 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8E=BB=E9=99=A4=E6=8E=89=E4=B8=AD=E9=97=B4?= =?UTF-8?q?=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../api/entity/basic/UdiRelevanceEntity.java | 5 + .../com/glxp/api/http/ErpBasicClient.java | 7 +- .../api/req/basic/WorkBindBusTypeRequest.java | 2 +- .../api/service/collect/DownloadFactory.java | 13 +- .../collect/IoCollectOriginService.java | 23 ++-- .../collect/down/ThrOrderDownload.java | 117 ++++++------------ 6 files changed, 61 insertions(+), 106 deletions(-) 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 ac0442aa5..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,7 +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.IntUtil; +import com.glxp.api.util.MsDateUtil; import org.springframework.stereotype.Service; import javax.annotation.Resource; @@ -45,67 +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 { - int page = 1; - int limit = 100; - FilterThrOrderRequest filterThrOrderRequest = new FilterThrOrderRequest(); - filterThrOrderRequest.setLimit(limit); - filterThrOrderRequest.setBillNo(collectOrderRequest.getBillNo()); - filterThrOrderRequest.setThirdSys("thirdId"); - filterThrOrderRequest.setBusType(collectOrderRequest.getBusType()); - filterThrOrderRequest.setWorkPlaceCode(collectOrderRequest.getWorkPlaceCode()); - filterThrOrderRequest.setFromType(collectOrderRequest.getFromType()); - while (true){ - filterThrOrderRequest.setPage(page); - 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(); - ThrOrderEntity old = thrOrderDao.selectOne(new LambdaQueryWrapper().eq(ThrOrderEntity::getBillNo, item.getBillNo()).last("limit 1")); - BeanUtil.copyProperties(item, thrOrderEntity); - if(old == null){ - //新增 - thrOrderEntity.setCreateTime(new Date()); - thrOrderEntity.setUpdateTime(new Date()); - }else{ - //更新 - thrOrderEntity.setId(old.getId()); - 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); - }); - } - if ((list.size() >= limit && !baseResponse.getData().getTotal().equals(-666)) || IntUtil.value(baseResponse.getData().getTotal()) == -555) { - page++; - } else { - break; - } - }else { - return ResultVOUtils.error(500, "下载第三方系统产品信息异常"); - } - } - //再次获取 - 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; /** * 下载至单据 @@ -113,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);