From 8be0b3b5a87ae0f4abe5928d602cc573fd85d882 Mon Sep 17 00:00:00 2001 From: qiuyt Date: Thu, 21 Nov 2024 14:28:55 +0800 Subject: [PATCH] =?UTF-8?q?1=E3=80=81=E5=8D=95=E6=8D=AE=E4=B8=8A=E4=BC=A0?= =?UTF-8?q?=E7=BB=9F=E8=AE=A1=E7=95=8C=E9=9D=A2=E5=A2=9E=E5=8A=A0=E9=87=87?= =?UTF-8?q?=E8=B4=AD=E5=92=8C=E9=94=80=E5=94=AE=20=E7=A0=81=E6=95=B0?= =?UTF-8?q?=E8=BF=9B=E8=A1=8C=E8=AE=A1=E7=AE=97=E5=BC=80=E5=8F=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../IoCollectOrderBackupController.java | 41 ++++++++- .../collect/IoCollectOrderBackupMapper.java | 1 + .../IoCollectOrderBizBackupMapper.java | 5 ++ .../com/glxp/api/http/ErpBasicClient.java | 24 +++++- .../res/collect/CollectOrderBizResponse.java | 3 + .../CollectOrderUploadCountResponse.java | 22 +++++ .../collect/IoCollectOrderBackupService.java | 3 + .../IoCollectOrderBizBackupService.java | 86 ++++++++++++++++++- .../collect/IoCollectOrderBackupMapper.xml | 1 + .../collect/IoCollectOrderBizBackupMapper.xml | 9 ++ 10 files changed, 188 insertions(+), 7 deletions(-) create mode 100644 src/main/java/com/glxp/api/res/collect/CollectOrderUploadCountResponse.java diff --git a/src/main/java/com/glxp/api/controller/collect/IoCollectOrderBackupController.java b/src/main/java/com/glxp/api/controller/collect/IoCollectOrderBackupController.java index 7e0fd0881..4836622ca 100644 --- a/src/main/java/com/glxp/api/controller/collect/IoCollectOrderBackupController.java +++ b/src/main/java/com/glxp/api/controller/collect/IoCollectOrderBackupController.java @@ -16,9 +16,13 @@ import com.glxp.api.req.collect.CollectOrderUploadCountRequest; import com.glxp.api.res.PageSimpleResponse; import com.glxp.api.res.basic.UserWorkResponse; import com.glxp.api.res.collect.CollectOrderBizResponse; +import com.glxp.api.res.collect.CollectOrderUploadCountResponse; import com.glxp.api.res.collect.IoCollectOrderResponse; import com.glxp.api.service.basic.BasicCollectUserService; import com.glxp.api.service.collect.IoCollectOrderBackupService; +import com.glxp.api.service.collect.IoCollectOrderBizBackupService; +import com.glxp.api.service.collect.IoCollectOrderService; +import io.swagger.models.auth.In; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; @@ -39,11 +43,13 @@ import java.util.stream.Collectors; public class IoCollectOrderBackupController extends BaseController { @Resource - IoCollectOrderBackupService ioCollectOrderBackupService; + private IoCollectOrderBackupService ioCollectOrderBackupService; @Resource private BasicCollectUserService basicCollectUserService; + @Resource + private IoCollectOrderBizBackupService ioCollectOrderBizBackupService; @PostMapping("/udiwms/basic/collect/orderFinish/filter") public BaseResponse filterOrder(@RequestBody CollectOrderRequest collectOrderRequest) { @@ -131,15 +137,42 @@ public class IoCollectOrderBackupController extends BaseController { */ @PostMapping ("/udiwms/basic/collect/orderFinish/uploadCount") public BaseResponse uploadCount(@RequestBody CollectOrderUploadCountRequest collectOrderUploadCountRequest) { + CollectOrderUploadCountResponse collectOrderUploadCountResponse = new CollectOrderUploadCountResponse(); + if(collectOrderUploadCountRequest.getStartTime()!=null + && collectOrderUploadCountRequest.getEndTime() !=null){ + collectOrderUploadCountRequest.setStartTime(collectOrderUploadCountRequest.getStartTime()+" 00:00:00"); + collectOrderUploadCountRequest.setEndTime(collectOrderUploadCountRequest.getEndTime()+" 23:59:59"); - List> map = ioCollectOrderBackupService.listMaps(new QueryWrapper() + } + List> list = ioCollectOrderBackupService.listMaps(new QueryWrapper() .groupBy("uploadStatus") .between(collectOrderUploadCountRequest.getStartTime()!=null && collectOrderUploadCountRequest.getEndTime() !=null - ,"updateTime",collectOrderUploadCountRequest.getStartTime()+" 00:00:00",collectOrderUploadCountRequest.getEndTime()+" 23:59:59") + ,"updateTime",collectOrderUploadCountRequest.getStartTime(),collectOrderUploadCountRequest.getEndTime()) .select("uploadStatus","count(1) as count") ); - return ResultVOUtils.success(map); + Long notUploadingCount=0L; + Long alreadyUploadingCount=0L; + Long uploadingFailCount=0L; + if(list!=null && list.size() >0){ + for (Map stringObjectMap : list) { + if(1 == (Integer)stringObjectMap.get("uploadStatus")){ + notUploadingCount += (Long) stringObjectMap.get("count"); + }else if(2 == (Integer)stringObjectMap.get("uploadStatus")){ + alreadyUploadingCount += (Long)stringObjectMap.get("count"); + }else if(3 == (Integer)stringObjectMap.get("uploadStatus")){ + uploadingFailCount += (Long)stringObjectMap.get("count"); + } + } + } + + + collectOrderUploadCountResponse.setNotUploadingCount(notUploadingCount); + collectOrderUploadCountResponse.setAlreadyUploadingCount(alreadyUploadingCount); + collectOrderUploadCountResponse.setUploadingFailCount(uploadingFailCount); + // 总上传码数量 获取采购上传率 销售上传率 计算 + ioCollectOrderBizBackupService.CalculatedUploadRate( collectOrderUploadCountRequest,collectOrderUploadCountResponse); + return ResultVOUtils.success(collectOrderUploadCountResponse); } } diff --git a/src/main/java/com/glxp/api/dao/collect/IoCollectOrderBackupMapper.java b/src/main/java/com/glxp/api/dao/collect/IoCollectOrderBackupMapper.java index f207b6946..6711851fd 100644 --- a/src/main/java/com/glxp/api/dao/collect/IoCollectOrderBackupMapper.java +++ b/src/main/java/com/glxp/api/dao/collect/IoCollectOrderBackupMapper.java @@ -14,4 +14,5 @@ import java.util.List; public interface IoCollectOrderBackupMapper extends BaseMapper { List filterList(CollectOrderRequest collectOrderRequest); + } diff --git a/src/main/java/com/glxp/api/dao/collect/IoCollectOrderBizBackupMapper.java b/src/main/java/com/glxp/api/dao/collect/IoCollectOrderBizBackupMapper.java index e41f7af83..847969628 100644 --- a/src/main/java/com/glxp/api/dao/collect/IoCollectOrderBizBackupMapper.java +++ b/src/main/java/com/glxp/api/dao/collect/IoCollectOrderBizBackupMapper.java @@ -4,8 +4,10 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.glxp.api.entity.collect.IoCollectOrderBizBackup; import com.glxp.api.req.collect.CollectOrderBizRequest; +import com.glxp.api.req.collect.CollectOrderUploadCountRequest; import com.glxp.api.res.collect.CollectOrderBizResponse; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; import java.util.List; @@ -14,4 +16,7 @@ import java.util.List; public interface IoCollectOrderBizBackupMapper extends BaseMapper { List filterList(CollectOrderBizRequest collectOrderRequest); + + List getList(CollectOrderUploadCountRequest collectOrderUploadCountRequest); + } diff --git a/src/main/java/com/glxp/api/http/ErpBasicClient.java b/src/main/java/com/glxp/api/http/ErpBasicClient.java index f83c3042e..f840131ed 100644 --- a/src/main/java/com/glxp/api/http/ErpBasicClient.java +++ b/src/main/java/com/glxp/api/http/ErpBasicClient.java @@ -21,6 +21,7 @@ import com.glxp.api.res.thrsys.ThrCorpsResponse; import com.glxp.api.res.thrsys.ThrProductsResponse; import com.glxp.api.res.thrsys.UdiwmsWarehouseDetail; import com.glxp.api.service.thrsys.ThrSystemService; +import com.glxp.api.util.OkHttpCli; import lombok.extern.slf4j.Slf4j; import okhttp3.*; import org.apache.commons.lang3.exception.ExceptionUtils; @@ -28,8 +29,8 @@ import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; import javax.annotation.Resource; -import java.util.ArrayList; import java.util.List; +import java.util.Map; /** * 第三方服务HttpClient @@ -44,6 +45,8 @@ public class ErpBasicClient { HttpOkClient httpOkClient; @Resource private ThrSystemService basicThirdSysService; + @Resource + private OkHttpCli okHttpCli; /** * 获取往来单位 @@ -497,4 +500,23 @@ public class ErpBasicClient { return ResultVOUtils.error(500, "连接第三方系统接口服务出错"); } } + + public BaseResponse> getBuyType(String thirdSys) { + ThrSystemEntity basicThirdSysEntity = basicThirdSysService.selectByThirdId(thirdSys); + String url = basicThirdSysEntity.getThridUrl() + "/udiwms/erp/getBuyType"; + try { + String response = okHttpCli.doGet(url); + if (StrUtil.isEmpty(response)) { + return ResultVOUtils.error(500, "连接第三方系统接口服务出错"); + } + BaseResponse> listBaseResponse = + JSONObject.parseObject(response, new TypeReference>>() { + }); + + return listBaseResponse; + } catch (Exception e) { + log.error("获取交易类型集合", e); + return ResultVOUtils.error(500, "连接第三方系统接口服务出错"+e.getMessage()); + } + } } diff --git a/src/main/java/com/glxp/api/res/collect/CollectOrderBizResponse.java b/src/main/java/com/glxp/api/res/collect/CollectOrderBizResponse.java index fcc9ea5df..58a56a426 100644 --- a/src/main/java/com/glxp/api/res/collect/CollectOrderBizResponse.java +++ b/src/main/java/com/glxp/api/res/collect/CollectOrderBizResponse.java @@ -163,6 +163,9 @@ public class CollectOrderBizResponse { private String workplaceQueueCode; private String spec; + + private String busType; + private Integer uploadStatus; // /** // * 未赋码数量 // */ diff --git a/src/main/java/com/glxp/api/res/collect/CollectOrderUploadCountResponse.java b/src/main/java/com/glxp/api/res/collect/CollectOrderUploadCountResponse.java new file mode 100644 index 000000000..3392b8bce --- /dev/null +++ b/src/main/java/com/glxp/api/res/collect/CollectOrderUploadCountResponse.java @@ -0,0 +1,22 @@ +package com.glxp.api.res.collect; + +import io.swagger.models.auth.In; +import lombok.Data; + +import java.math.BigDecimal; + +/** + * 单据上传统计返回 + * qyt + */ +@Data +public class CollectOrderUploadCountResponse { + private Long notUploadingCount; + private Long alreadyUploadingCount; + private Long uploadingFailCount; + + private BigDecimal buyerCentage; + private BigDecimal salesCentage; + private Integer codeCount; + +} diff --git a/src/main/java/com/glxp/api/service/collect/IoCollectOrderBackupService.java b/src/main/java/com/glxp/api/service/collect/IoCollectOrderBackupService.java index 303bbdd48..137d8c101 100644 --- a/src/main/java/com/glxp/api/service/collect/IoCollectOrderBackupService.java +++ b/src/main/java/com/glxp/api/service/collect/IoCollectOrderBackupService.java @@ -393,4 +393,7 @@ public class IoCollectOrderBackupService extends ServiceImpl filterList(CollectOrderBizRequest collectOrderRequest) { if (collectOrderRequest == null) { @@ -32,4 +39,79 @@ public class IoCollectOrderBizBackupService extends ServiceImpl data = ioCollectOrderBizBackupMapper.filterList(collectOrderRequest); return data; } + + /** + * 计算上传率 + */ + public void CalculatedUploadRate(CollectOrderUploadCountRequest collectOrderUploadCountRequest, CollectOrderUploadCountResponse collectOrderUploadCountResponse) { + List list = ioCollectOrderBizBackupMapper.getList(collectOrderUploadCountRequest); + Map buyTypeMap = new HashMap<>(); + List buyTypeBuyer = new ArrayList<>(); + List buyTypeSales = new ArrayList<>(); + Integer buyerCount = 0; + Integer salesCount = 0; + Integer buyerScanCount = 0; + Integer salesScanCount = 0; + BigDecimal buyerCentage = new BigDecimal(0); + BigDecimal salesCentage = new BigDecimal(0); + Integer codeCount = 0; + if (list != null && list.size() > 0) { + BaseResponse> baseResponse = erpBasicClient.getBuyType("thirdId"); + if (baseResponse.getCode() == 20000) { + buyTypeMap = baseResponse.getData(); + buyTypeBuyer = new ArrayList<>(Arrays.asList(buyTypeMap.get("buyType_3501"))); + buyTypeBuyer.addAll(Arrays.asList(buyTypeMap.get("buyType_3502"))); + + buyTypeSales = new ArrayList<>(Arrays.asList(buyTypeMap.get("buyType_3505"))); + buyTypeSales.addAll(Arrays.asList(buyTypeMap.get("buyType_3506"))); + } + + for (CollectOrderBizResponse collectOrderBizResponse : list) { + for (String buyType : buyTypeBuyer) { + if (buyType.equals(collectOrderBizResponse.getBusType())) { + buyerCount += collectOrderBizResponse.getCount(); + // 只有已上传的码才是正确的码 + if (2 == collectOrderBizResponse.getUploadStatus()) { + buyerScanCount += collectOrderBizResponse.getScanCount(); + } + } + } + for (String buyType : buyTypeSales) { + if (buyType.equals(collectOrderBizResponse.getBusType())) { + salesCount += collectOrderBizResponse.getCount(); + if (2 == collectOrderBizResponse.getUploadStatus()) { + salesScanCount += collectOrderBizResponse.getScanCount(); + } + } + } + } + + // 计算采购率和销售率 + + BigDecimal buyerCountBigDecimal = BigDecimal.valueOf(buyerCount); + BigDecimal buyerScanCountBigDecimal = BigDecimal.valueOf(buyerScanCount); + if(buyerCountBigDecimal.equals(new BigDecimal(0))){ + buyerCentage = new BigDecimal(0).setScale(2, BigDecimal.ROUND_HALF_UP); + }else { + buyerCentage = buyerScanCountBigDecimal.divide(buyerCountBigDecimal,4, BigDecimal.ROUND_HALF_UP ).multiply(new BigDecimal(100)).setScale(2, BigDecimal.ROUND_HALF_UP); + } + + BigDecimal salesCountBigDecimal = BigDecimal.valueOf(salesCount); + BigDecimal salesScanCountBigDecimal = BigDecimal.valueOf(salesScanCount); + if(salesCountBigDecimal.equals(new BigDecimal(0))){ + salesCentage = new BigDecimal(0).setScale(2, BigDecimal.ROUND_HALF_UP); + }else { + salesCentage = salesScanCountBigDecimal.divide(salesCountBigDecimal,4, BigDecimal.ROUND_HALF_UP ).multiply(new BigDecimal(100)).setScale(2, BigDecimal.ROUND_HALF_UP); + } + codeCount = buyerScanCount + salesScanCount; + } + collectOrderUploadCountResponse.setBuyerCentage(buyerCentage); + collectOrderUploadCountResponse.setSalesCentage(salesCentage); + collectOrderUploadCountResponse.setCodeCount(codeCount); + } + + public static void main(String[] args) { + System.out.println(new BigDecimal(0).setScale(2, BigDecimal.ROUND_HALF_UP)); + } + } diff --git a/src/main/resources/mybatis/mapper/collect/IoCollectOrderBackupMapper.xml b/src/main/resources/mybatis/mapper/collect/IoCollectOrderBackupMapper.xml index 757908851..9089dac07 100644 --- a/src/main/resources/mybatis/mapper/collect/IoCollectOrderBackupMapper.xml +++ b/src/main/resources/mybatis/mapper/collect/IoCollectOrderBackupMapper.xml @@ -140,4 +140,5 @@ GROUP BY icob.billNo order by case when icob.orderTime is null then icob.createTime else icob.orderTime end desc + diff --git a/src/main/resources/mybatis/mapper/collect/IoCollectOrderBizBackupMapper.xml b/src/main/resources/mybatis/mapper/collect/IoCollectOrderBizBackupMapper.xml index 7eb5ae7a5..5a2266a37 100644 --- a/src/main/resources/mybatis/mapper/collect/IoCollectOrderBizBackupMapper.xml +++ b/src/main/resources/mybatis/mapper/collect/IoCollectOrderBizBackupMapper.xml @@ -36,4 +36,13 @@ group by icobb.id +