|  |  |  | @ -3,15 +3,20 @@ package com.glxp.api.service.collect; | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; | 
			
		
	
		
			
				
					|  |  |  |  | import com.github.pagehelper.PageHelper; | 
			
		
	
		
			
				
					|  |  |  |  | import com.glxp.api.common.res.BaseResponse; | 
			
		
	
		
			
				
					|  |  |  |  | import com.glxp.api.dao.collect.IoCollectOrderBizBackupMapper; | 
			
		
	
		
			
				
					|  |  |  |  | import com.glxp.api.entity.collect.IoCollectOrderBizBackup; | 
			
		
	
		
			
				
					|  |  |  |  | import com.glxp.api.http.ErpBasicClient; | 
			
		
	
		
			
				
					|  |  |  |  | import com.glxp.api.req.collect.CollectOrderBizRequest; | 
			
		
	
		
			
				
					|  |  |  |  | import com.glxp.api.req.collect.CollectOrderUploadCountRequest; | 
			
		
	
		
			
				
					|  |  |  |  | import com.glxp.api.res.collect.CollectOrderBizResponse; | 
			
		
	
		
			
				
					|  |  |  |  | import com.glxp.api.res.collect.CollectOrderUploadCountResponse; | 
			
		
	
		
			
				
					|  |  |  |  | import io.swagger.models.auth.In; | 
			
		
	
		
			
				
					|  |  |  |  | import org.springframework.stereotype.Service; | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | import javax.annotation.Resource; | 
			
		
	
		
			
				
					|  |  |  |  | import java.util.Collections; | 
			
		
	
		
			
				
					|  |  |  |  | import java.util.List; | 
			
		
	
		
			
				
					|  |  |  |  | import java.math.BigDecimal; | 
			
		
	
		
			
				
					|  |  |  |  | import java.util.*; | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | @Service | 
			
		
	
	
		
			
				
					|  |  |  | @ -20,6 +25,8 @@ public class IoCollectOrderBizBackupService extends ServiceImpl<IoCollectOrderBi | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |     @Resource | 
			
		
	
		
			
				
					|  |  |  |  |     IoCollectOrderBizBackupMapper ioCollectOrderBizBackupMapper; | 
			
		
	
		
			
				
					|  |  |  |  |     @Resource | 
			
		
	
		
			
				
					|  |  |  |  |     private ErpBasicClient erpBasicClient; | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |     public List<CollectOrderBizResponse> filterList(CollectOrderBizRequest collectOrderRequest) { | 
			
		
	
		
			
				
					|  |  |  |  |         if (collectOrderRequest == null) { | 
			
		
	
	
		
			
				
					|  |  |  | @ -32,4 +39,79 @@ public class IoCollectOrderBizBackupService extends ServiceImpl<IoCollectOrderBi | 
			
		
	
		
			
				
					|  |  |  |  |         List<CollectOrderBizResponse> data = ioCollectOrderBizBackupMapper.filterList(collectOrderRequest); | 
			
		
	
		
			
				
					|  |  |  |  |         return data; | 
			
		
	
		
			
				
					|  |  |  |  |     } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |     /** | 
			
		
	
		
			
				
					|  |  |  |  |      * 计算上传率 | 
			
		
	
		
			
				
					|  |  |  |  |      */ | 
			
		
	
		
			
				
					|  |  |  |  |     public void CalculatedUploadRate(CollectOrderUploadCountRequest collectOrderUploadCountRequest, CollectOrderUploadCountResponse collectOrderUploadCountResponse) { | 
			
		
	
		
			
				
					|  |  |  |  |         List<CollectOrderBizResponse> list = ioCollectOrderBizBackupMapper.getList(collectOrderUploadCountRequest); | 
			
		
	
		
			
				
					|  |  |  |  |         Map<String, String[]> buyTypeMap = new HashMap<>(); | 
			
		
	
		
			
				
					|  |  |  |  |         List<String> buyTypeBuyer = new ArrayList<>(); | 
			
		
	
		
			
				
					|  |  |  |  |         List<String> 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<Map<String, String[]>> 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)); | 
			
		
	
		
			
				
					|  |  |  |  |     } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | } | 
			
		
	
	
		
			
				
					|  |  |  | 
 |