You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
udi-wms-java/src/main/java/com/glxp/api/service/collect/IoCollectOrderBizBackupServ...

173 lines
7.6 KiB
Java

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<IoCollectOrderBizBackupMapper, IoCollectOrderBizBackup> {
@Resource
IoCollectOrderBizBackupMapper ioCollectOrderBizBackupMapper;
@Resource
private ErpBasicClient erpBasicClient;
@Resource
private IoCollectCodeBackMapper ioCollectCodeBackMapper;
public List<CollectOrderBizResponse> 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<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;
Integer fifoSplitOneCount = 0;
Integer fifoSplitTwoCount = 0;
Integer fifoSplitThreeCount = 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) {
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<IoCollectOrderBizBackup> listByBillNo(String billNo) {
List<IoCollectOrderBizBackup> list = super.list(Wrappers.lambdaQuery(IoCollectOrderBizBackup.class)
.eq(IoCollectOrderBizBackup::getOrderIdFk, billNo)
);
return list;
}
public List<CollectOrderBizResponse> filterListByBillNo(CollectOrderBizRequest collectOrderRequest) {
List<CollectOrderBizResponse> data = ioCollectOrderBizBackupMapper.filterList(collectOrderRequest);
return data;
}
}