linwe
2024-05-29 c10d6358b9f014375a13821465bc978d0c0da22e
src/main/java/org/springblade/modules/eCallEventTwo/service/impl/EcOrderServiceImpl.java
@@ -6,7 +6,7 @@
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springblade.core.tool.utils.BeanUtil;
import org.springblade.modules.eCallEventTwo.dto.EcOrderDTO;
import org.springblade.modules.eCallEventTwo.dto.*;
import org.springblade.modules.eCallEventTwo.entity.ECallEventTwoEntity;
import org.springblade.modules.eCallEventTwo.entity.EcOrder;
import org.springblade.modules.eCallEventTwo.mapper.EcOrderMapper;
@@ -15,8 +15,12 @@
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
 * EcOrderService业务层处理
@@ -27,6 +31,8 @@
@Service
public class EcOrderServiceImpl extends ServiceImpl<EcOrderMapper, EcOrder> implements EcOrderService {
   private static final int DEFAULT_SCALE = 2; // 默认保留两位小数
   private static final RoundingMode DEFAULT_ROUNDING_MODE = RoundingMode.HALF_UP; // 默认四舍五入
   @Autowired
   private IECallEventTwoService ecOrderService;
@@ -97,12 +103,12 @@
   }
   @Override
   public boolean SynchronizeData() {
      processPages(100);
   public boolean SynchronizeData(EcOrderParamDTO ecOrderParamDTO) {
      processPages(100, ecOrderParamDTO);
      return true;
   }
   public void processPages(int pageSize) {
   public void processPages(int pageSize, EcOrderParamDTO ecOrderParamDTO) {
      long count = count(new QueryWrapper<>());
      int totalPages = (int) Math.ceil((double) count / pageSize); // 计算总页数
@@ -115,4 +121,101 @@
         System.out.println("更新第" + pageNum + "页" + b);
      }
   }
   /**
    * 获取单位考核指标
    * @return
    */
   @Override
   public List<Map<String, String>> getUnitAssessmentIndicators() {
      List<Map<String, String>> result = baseMapper.getUnitAssessmentIndicators();
      return result;
   }
   /**
    * 统计办结率
    */
   @Override
   public Map<String, String> getCount(EcOrderParamDTO ecOrderParamDTO) {
      // 统计订单
      EcOrderDTO ecOrderDTO = BeanUtil.copy(ecOrderParamDTO, EcOrderDTO.class);
      int i = baseMapper.selectEcOrderCount(ecOrderDTO);
      // 统计派发
      EcDispatchDTO ecDispatchDTO = BeanUtil.copy(ecOrderParamDTO, EcDispatchDTO.class);
      int i1 = baseMapper.selectEcDispatchCount(ecDispatchDTO);
      // 统计处理
      EcHandleDTO ecHandleDTO = BeanUtil.copy(ecOrderParamDTO, EcHandleDTO.class);
      int i2 = baseMapper.selectEcHandleCount(ecHandleDTO);
      // 统计回访
      EcOrderCheckDTO ecOrderCheckDTO = BeanUtil.copy(ecOrderParamDTO, EcOrderCheckDTO.class);
      int i3 = baseMapper.selectEcOrderCheckCount(ecOrderCheckDTO);
      // 统计办结
      EcOrderDoneDTO ecOrderDoneDTO = BeanUtil.copy(ecOrderParamDTO, EcOrderDoneDTO.class);
      int i4 = baseMapper.selectEcOrderDoneCount(ecOrderDoneDTO);
      // 统计答复
      EcOrderRespDTO ecOrderRespDTO = BeanUtil.copy(ecOrderParamDTO, EcOrderRespDTO.class);
      int i5 = baseMapper.selectEcOrderRespCount(ecOrderRespDTO);
      // 统计核实
      EcOrderReviewDTO ecOrderReviewDTO = BeanUtil.copy(ecOrderParamDTO, EcOrderReviewDTO.class);
      int i6 = baseMapper.selectEcOrderReviewCount(ecOrderReviewDTO);
      // 统计督办
      EcOrderSuperviseDTO ecOrderSuperviseDTO = BeanUtil.copy(ecOrderParamDTO, EcOrderSuperviseDTO.class);
      int i7 = baseMapper.selectEcOrderSuperviseCount(ecOrderSuperviseDTO);
      // 工单数   派发单数   办理单数(率)   办结单数(率)   答复单数(率)   回访单数(率)   核实单数   督办单数
      Map<String, String> result = new HashMap<>();
      // 工单数
      result.put("orderNumber", String.valueOf(i));
      // 派发单数(率)
      result.put("dispatchRate", getRate(i1, i));
      result.put("dispatchNumber", String.valueOf(i1));
      // 办理单数(率)
      result.put("handRate", getRate(i2, i));
      result.put("handNumber", String.valueOf(i2));
      // 办结单数(率)
      result.put("checkRate", getRate(i3, i));
      result.put("checkNumber", String.valueOf(i3));
      // 答复单数(率)
      result.put("doneRate", getRate(i4, i));
      result.put("doneNumber", String.valueOf(i4));
      // 回访单数(率)
      result.put("respRate", getRate(i5, i));
      result.put("respNumber", String.valueOf(i5));
      // 核实单数(率)
      result.put("reviewRate", getRate(i6, i));
      result.put("reviewNumber", String.valueOf(i6));
      // 督办单数
      result.put("superviseNumber", String.valueOf(i7));
      // 返回结果
      return result;
   }
   public static void main(String[] args) {
      String rate = getRate(10, 3);
      System.out.println(rate);
   }
   public static String getRate(int dividend, int divisor) {
      // 检查除数是否为0
      if (divisor == 0) {
         return "0";
      }
      // 将int转换为BigDecimal
      BigDecimal bdDividend = BigDecimal.valueOf(dividend);
      BigDecimal bdDivisor = BigDecimal.valueOf(divisor);
      // 执行除法操作,设置精度(scale)和舍入模式(RoundingMode)
      int scale = DEFAULT_SCALE;
      RoundingMode roundingMode = DEFAULT_ROUNDING_MODE;
      // 进行除法运算
      BigDecimal result;
      try {
         result = bdDividend.divide(bdDivisor, scale, roundingMode);
      } catch (ArithmeticException e) {
         // 处理因除数为0或其他原因引发的算术异常
         throw new RuntimeException("除法运算出错", e);
      }
      return result.toString();
   }
}