package com.glxp.api.service.collect; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; 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.IoCollectCodeBackMapper; import com.glxp.api.dao.collect.IoCollectCodeMapper; import com.glxp.api.dao.collect.IoCollectOrderBizBackupMapper; import com.glxp.api.entity.collect.IoCollectCode; import com.glxp.api.entity.collect.IoCollectCodeBackup; import com.glxp.api.entity.collect.IoCollectOrderBiz; 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.math.BigDecimal; import java.util.*; @Service public class IoCollectOrderBizBackupService extends ServiceImpl { @Resource IoCollectOrderBizBackupMapper ioCollectOrderBizBackupMapper; @Resource private ErpBasicClient erpBasicClient; @Resource private IoCollectCodeBackMapper ioCollectCodeBackMapper; 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 buyerCount = 0; // Integer salesCount = 0; 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; Integer fifoSplitThreeCount = 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(); salesScanCount ++; } } for (String buyType : buyTypeBuyer) { if (buyType.equals(collectOrderBizResponse.getBusType())) { // buyerCount += collectOrderBizResponse.getCount(); // 只有已上传的码才是正确的码 buyerScanCount ++; } } if(collectOrderBizResponse.getFifoSplit() == 1){ fifoSplitOneCount ++; }else if(collectOrderBizResponse.getFifoSplit() == 2){ fifoSplitTwoCount ++; }else if(collectOrderBizResponse.getFifoSplit() == 3){ fifoSplitThreeCount ++; } } codeCount++; } // 计算采购率和销售率 // 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.setBuyerScanCount(buyerScanCount); collectOrderUploadCountResponse.setSalesScanCount(salesScanCount); collectOrderUploadCountResponse.setCodeCount(codeCount); // collectOrderUploadCountResponse.setCount(buyerCount+salesCount); collectOrderUploadCountResponse.setFifoSplitOneCount(fifoSplitOneCount); collectOrderUploadCountResponse.setFifoSplitTwoCount(fifoSplitTwoCount); collectOrderUploadCountResponse.setFifoSplitThreeCount(fifoSplitThreeCount); } 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; } }