package com.glxp.api.service.collect; import com.baomidou.mybatisplus.core.toolkit.Wrappers; 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 org.springframework.stereotype.Service; import javax.annotation.Resource; import java.math.BigDecimal; import java.util.*; @Service public class IoCollectOrderBizBackupService extends ServiceImpl { @Resource IoCollectOrderBizBackupMapper ioCollectOrderBizBackupMapper; @Resource private ErpBasicClient erpBasicClient; public List filterList(CollectOrderBizRequest collectOrderRequest) { if (collectOrderRequest == null) { return Collections.emptyList(); } if (collectOrderRequest.getPage() != null) { int offset = (collectOrderRequest.getPage() - 1) * collectOrderRequest.getLimit(); PageHelper.offsetPage(offset, collectOrderRequest.getLimit()); } List 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 buyerScanCount = 0; Integer salesScanCount = 0; BigDecimal buyerCentage = new BigDecimal(0); BigDecimal salesCentage = new BigDecimal(0); Integer codeCount = 0; Integer fifoSplitOneCount = 0; Integer fifoSplitTwoCount = 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) { collectOrderBizResponse.setCount(collectOrderBizResponse.getCount() == null ? 0 : collectOrderBizResponse.getCount()); collectOrderBizResponse.setScanCount(collectOrderBizResponse.getScanCount() == null ? 0 : collectOrderBizResponse.getScanCount()); if(2 == collectOrderBizResponse.getUploadStatus()){ for (String buyType : buyTypeSales) { if (buyType.equals(collectOrderBizResponse.getBusType())) { // salesCount += collectOrderBizResponse.getCount(); if(collectOrderBizResponse.getRelCodeCount() != null && collectOrderBizResponse.getRelCodeCount() >0){ buyerScanCount += collectOrderBizResponse.getRelCodeCount(); }else { buyerScanCount ++; } } } for (String buyType : buyTypeBuyer) { if (buyType.equals(collectOrderBizResponse.getBusType())) { // buyerCount += collectOrderBizResponse.getCount(); // 只有已上传的码才是正确的码 if(collectOrderBizResponse.getRelCodeCount() != null && collectOrderBizResponse.getRelCodeCount() >0){ salesScanCount += collectOrderBizResponse.getRelCodeCount(); }else { salesScanCount ++; } } } if(collectOrderBizResponse.getFifoSplit() == 1 ){ fifoSplitOneCount ++; }else if(collectOrderBizResponse.getFifoSplit() == 2){ fifoSplitTwoCount ++; }else if(collectOrderBizResponse.getFifoSplit() == 3){ fifoSplitTwoCount ++; }else if(collectOrderBizResponse.getFifoSplit() == 4){ fifoSplitOneCount ++; } } if(collectOrderBizResponse.getRelCodeCount() != null && collectOrderBizResponse.getRelCodeCount() >0){ codeCount += collectOrderBizResponse.getRelCodeCount(); }else { codeCount ++; } } } collectOrderUploadCountResponse.setBuyerCentage(buyerCentage); collectOrderUploadCountResponse.setSalesCentage(salesCentage); collectOrderUploadCountResponse.setBuyerScanCount(buyerScanCount); collectOrderUploadCountResponse.setSalesScanCount(salesScanCount); collectOrderUploadCountResponse.setCodeCount(codeCount); collectOrderUploadCountResponse.setFifoSplitOneCount(fifoSplitOneCount); collectOrderUploadCountResponse.setFifoSplitTwoCount(fifoSplitTwoCount); } public static void main(String[] args) { System.out.println(new BigDecimal(0).setScale(2, BigDecimal.ROUND_HALF_UP)); } public List listByBillNo(String billNo) { List list = super.list(Wrappers.lambdaQuery(IoCollectOrderBizBackup.class) .eq(IoCollectOrderBizBackup::getOrderIdFk, billNo) ); return list; } public List filterListByBillNo(CollectOrderBizRequest collectOrderRequest) { List data = ioCollectOrderBizBackupMapper.filterList(collectOrderRequest); return data; } }