package org.springblade.modules.eCallEventTwo.service.impl; import cn.hutool.core.convert.Convert; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; 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.*; import org.springblade.modules.eCallEventTwo.entity.ECallEventTwoEntity; import org.springblade.modules.eCallEventTwo.entity.EcOrder; import org.springblade.modules.eCallEventTwo.mapper.EcOrderMapper; import org.springblade.modules.eCallEventTwo.service.EcOrderService; import org.springblade.modules.eCallEventTwo.service.IECallEventTwoService; 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业务层处理 * * @author ${context.author} * @date 2024-05-27 16:26:59 */ @Service public class EcOrderServiceImpl extends ServiceImpl implements EcOrderService { @Autowired private IECallEventTwoService ecOrderService; /** * 查询工单 * * @param orderId 工单ID * @return 工单 */ @Override public EcOrderDTO selectEcOrderById(Long orderId) { return this.baseMapper.selectEcOrderById(orderId); } /** * 查询工单列表 * * @param ecOrderDTO 工单 * @return 工单集合 */ @Override public List selectEcOrderList(EcOrderDTO ecOrderDTO) { return this.baseMapper.selectEcOrderList(ecOrderDTO); } /** * 新增工单 * * @param ecOrderDTO 工单 * @return 结果 */ @Override public int insertEcOrder(EcOrderDTO ecOrderDTO) { return this.baseMapper.insert(ecOrderDTO); } /** * 修改工单 * * @param ecOrderDTO 工单 * @return 结果 */ @Override public int updateEcOrder(EcOrderDTO ecOrderDTO) { return this.baseMapper.updateById(ecOrderDTO); } /** * 删除工单对象 * * @param ids 需要删除的数据ID * @return 结果 */ @Override public int deleteEcOrderByIds(String ids) { return this.removeByIds(Arrays.asList(Convert.toStrArray(ids))) ? 1 : 0; } /** * 删除工单信息 * * @param orderId 工单ID * @return 结果 */ @Override public int deleteEcOrderById(Long orderId) { return this.removeById(orderId) ? 1 : 0; } @Override public boolean SynchronizeData() { processPages(100); return true; } public void processPages(int pageSize) { long count = count(new QueryWrapper<>()); int totalPages = (int) Math.ceil((double) count / pageSize); // 计算总页数 for (int pageNum = 1; pageNum <= totalPages; pageNum++) { Page page = new Page<>(pageNum, pageSize); IPage resultPage = baseMapper.selectPage(page, new QueryWrapper<>()); List records = resultPage.getRecords(); List recordEntityList = BeanUtil.copy(records, ECallEventTwoEntity.class); boolean b = ecOrderService.saveOrUpdateBatch(recordEntityList); System.out.println("更新第" + pageNum + "页" + b); } } /** * 统计办结率 */ public Map getCount(Map map) { // 统计订单 EcOrderDTO ecOrderDTO = new EcOrderDTO(); int i = baseMapper.selectEcOrderCount(ecOrderDTO); // 统计派发 EcDispatchDTO ecDispatchDTO = new EcDispatchDTO(); int i1 = baseMapper.selectEcDispatchCount(ecDispatchDTO); // 统计处理 EcHandleDTO ecHandleDTO = new EcHandleDTO(); int i2 = baseMapper.selectEcHandleCount(ecHandleDTO); // 统计回访 EcOrderCheckDTO ecOrderCheckDTO = new EcOrderCheckDTO(); int i3 = baseMapper.selectEcOrderCheckCount(ecOrderCheckDTO); // 统计办结 EcOrderDoneDTO ecOrderDoneDTO = new EcOrderDoneDTO(); int i4 = baseMapper.selectEcOrderDoneCount(ecOrderDoneDTO); // 统计答复 EcOrderRespDTO ecOrderRespDTO = new EcOrderRespDTO(); int i5 = baseMapper.selectEcOrderRespCount(ecOrderRespDTO); // 统计核实 EcOrderReviewDTO ecOrderReviewDTO = new EcOrderReviewDTO(); int i6 = baseMapper.selectEcOrderReviewCount(ecOrderReviewDTO); // 统计督办 EcOrderSuperviseDTO ecOrderSuperviseDTO = new EcOrderSuperviseDTO(); int i7 = baseMapper.selectEcOrderSuperviseCount(ecOrderSuperviseDTO); // 工单数 派发单数 办理单数(率) 办结单数(率) 答复单数(率) 回访单数(率) 核实单数 督办单数 Map result = new HashMap<>(); // 工单数 result.put("order", String.valueOf(i)); // 派发单数(率) result.put("dispatchRate", getRate(i1, i)); // 办理单数(率) result.put("handRate", getRate(i2, i)); // 办结单数(率) result.put("checkRate", getRate(i3, i)); // 答复单数(率) result.put("doneRate", getRate(i4, i)); // 回访单数(率) result.put("respRate", getRate(i5, i)); // 核实单数(率) result.put("reviewRate", getRate(i6, i)); // 督办单数 result.put("supervise", 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) { // int dividend = 10; // 被除数 // int divisor = 3; // 除数 // 将int转换为BigDecimal BigDecimal bdDividend = BigDecimal.valueOf(dividend); BigDecimal bdDivisor = BigDecimal.valueOf(divisor); // 执行除法操作,设置精度(scale)和舍入模式(RoundingMode) int scale = 2; // 保留两位小数 RoundingMode roundingMode = RoundingMode.HALF_UP; // 四舍五入 // 进行除法运算 BigDecimal result = bdDividend.divide(bdDivisor, scale, roundingMode); return result.toString(); } }