src/main/java/org/springblade/modules/eCallEventTwo/controller/ECallEventTwoController.java
@@ -16,30 +16,29 @@ */ package org.springblade.modules.eCallEventTwo.controller; import com.baomidou.mybatisplus.core.metadata.IPage; import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiParam; import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport; import lombok.AllArgsConstructor; import javax.validation.Valid; import org.springblade.core.secure.BladeUser; import org.springblade.core.boot.ctrl.BladeController; import org.springblade.core.mp.support.Condition; import org.springblade.core.mp.support.Query; import org.springblade.core.secure.utils.AuthUtil; import org.springblade.core.tool.api.R; import org.springblade.core.tool.utils.Func; import org.springblade.modules.eCallEventTwo.entity.EcOrder; import org.springblade.modules.eCallEventTwo.service.EcOrderService; import org.springframework.web.bind.annotation.*; import com.baomidou.mybatisplus.core.metadata.IPage; import org.springblade.modules.eCallEventTwo.dto.EcOrderParamDTO; import org.springblade.modules.eCallEventTwo.entity.ECallEventTwoEntity; import org.springblade.modules.eCallEventTwo.service.EcOrderService; import org.springblade.modules.eCallEventTwo.service.IECallEventTwoService; import org.springblade.modules.eCallEventTwo.vo.ECallEventTwoVO; import org.springblade.modules.eCallEventTwo.wrapper.ECallEventTwoWrapper; import org.springblade.modules.eCallEventTwo.service.IECallEventTwoService; import org.springblade.core.boot.ctrl.BladeController; import org.springframework.web.bind.annotation.*; import javax.validation.Valid; import java.util.List; import java.util.Map; /** * 工单 控制器 @@ -138,9 +137,34 @@ @ApiOperationSupport(order = 8) @ApiOperation(value = "工单 同步") public R synchronizeData() { boolean b = ecOrderService.SynchronizeData(); EcOrderParamDTO ecOrderParamDTO = new EcOrderParamDTO(); boolean b = ecOrderService.SynchronizeData(ecOrderParamDTO); return R.status(b); } /** * 工单 同步 */ @PostMapping("/getCount") @ApiOperationSupport(order = 8) @ApiOperation(value = "工单统计") public R getCount(@Valid @RequestBody EcOrderParamDTO ecOrderParamDTO) { Map<String, String> count = ecOrderService.getCount(ecOrderParamDTO); return R.data(count); } /** * 工单 同步 */ @GetMapping("/getUnitAssessmentIndicators") @ApiOperationSupport(order = 8) @ApiOperation(value = "单位考核指标") public R getUnitAssessmentIndicators( ) { List<Map<String, String>> count = ecOrderService.getUnitAssessmentIndicators(); return R.data(count); } } src/main/java/org/springblade/modules/eCallEventTwo/dto/EcOrderParamDTO.java
New file @@ -0,0 +1,33 @@ package org.springblade.modules.eCallEventTwo.dto; import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import org.springframework.format.annotation.DateTimeFormat; import java.time.LocalDateTime; @ApiModel(value = "EcOrderParamDTO参数") @Data public class EcOrderParamDTO { @ApiModelProperty(value = "开始时间", example = "") @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") private LocalDateTime startTime; @ApiModelProperty(value = "结束时间", example = "") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") private LocalDateTime endTime; @ApiModelProperty(value = "调度单位", example = "") private String objectOrgCode; @ApiModelProperty(value = "主办单位", example = "") private String sinkOrgCode; @ApiModelProperty(value = "是否主办(Y/N)", example = "") private String tagMain; } src/main/java/org/springblade/modules/eCallEventTwo/mapper/EcOrderMapper.java
@@ -6,6 +6,7 @@ import org.springblade.modules.eCallEventTwo.entity.EcOrder; import java.util.List; import java.util.Map; @DS("slave_1") public interface EcOrderMapper extends BaseMapper<EcOrder>{ @@ -90,4 +91,5 @@ */ public int selectEcOrderSuperviseCount(EcOrderSuperviseDTO ecOrderSuperviseDTO); List<Map<String, String>> getUnitAssessmentIndicators(); } src/main/java/org/springblade/modules/eCallEventTwo/mapper/EcOrderMapper.xml
@@ -122,8 +122,14 @@ </select> <select id="selectEcOrderList" parameterType="org.springblade.modules.eCallEventTwo.dto.EcOrderDTO" resultMap="EcOrderDTOResult"> <include refid="selectEcOrder"/> SELECT eo.* FROM ec_order_cti eoc LEFT JOIN ec_order eo on eo.order_id= eoc.order_id <where> <if test="startTime != null and endTime != null">and eoc.callin_time BETWEEN #{startTime} AND #{endTime} </if> <if test="orderId != null "> and order_id = #{orderId}</if> <if test="orderCode != null and orderCode != ''"> and order_code = #{orderCode}</if> <if test="issueOrigin != null and issueOrigin != ''"> and issue_origin = #{issueOrigin}</if> @@ -537,4 +543,10 @@ </where> </select> <select id="getUnitAssessmentIndicators" resultType="java.util.Map"> select * from `v_statistics_examine_2` </select> </mapper> src/main/java/org/springblade/modules/eCallEventTwo/service/EcOrderService.java
@@ -2,9 +2,11 @@ import com.baomidou.mybatisplus.extension.service.IService; import org.springblade.modules.eCallEventTwo.dto.EcOrderDTO; import org.springblade.modules.eCallEventTwo.dto.EcOrderParamDTO; import org.springblade.modules.eCallEventTwo.entity.EcOrder; import java.util.List; import java.util.Map; /** * EcOrderService接口 @@ -61,5 +63,18 @@ */ public int deleteEcOrderById(Long orderId); boolean SynchronizeData(); boolean SynchronizeData(EcOrderParamDTO ecOrderParamDTO); /** * 单位考核指标 * @return */ List<Map<String, String>> getUnitAssessmentIndicators(); /** * 统计工单 * @param ecOrderParamDTO * @return */ Map<String, String> getCount(EcOrderParamDTO ecOrderParamDTO); } src/main/java/org/springblade/modules/eCallEventTwo/service/impl/EcOrderServiceImpl.java
@@ -31,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; @@ -101,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); // 计算总页数 @@ -121,51 +123,68 @@ } /** * 获取单位考核指标 * @return */ @Override public List<Map<String, String>> getUnitAssessmentIndicators() { List<Map<String, String>> result = baseMapper.getUnitAssessmentIndicators(); return result; } /** * 统计办结率 */ public Map<String, String> getCount(Map<String, String> map) { @Override public Map<String, String> getCount(EcOrderParamDTO ecOrderParamDTO) { // 统计订单 EcOrderDTO ecOrderDTO = new EcOrderDTO(); EcOrderDTO ecOrderDTO = BeanUtil.copy(ecOrderParamDTO, EcOrderDTO.class); int i = baseMapper.selectEcOrderCount(ecOrderDTO); // 统计派发 EcDispatchDTO ecDispatchDTO = new EcDispatchDTO(); EcDispatchDTO ecDispatchDTO = BeanUtil.copy(ecOrderParamDTO, EcDispatchDTO.class); int i1 = baseMapper.selectEcDispatchCount(ecDispatchDTO); // 统计处理 EcHandleDTO ecHandleDTO = new EcHandleDTO(); EcHandleDTO ecHandleDTO = BeanUtil.copy(ecOrderParamDTO, EcHandleDTO.class); int i2 = baseMapper.selectEcHandleCount(ecHandleDTO); // 统计回访 EcOrderCheckDTO ecOrderCheckDTO = new EcOrderCheckDTO(); EcOrderCheckDTO ecOrderCheckDTO = BeanUtil.copy(ecOrderParamDTO, EcOrderCheckDTO.class); int i3 = baseMapper.selectEcOrderCheckCount(ecOrderCheckDTO); // 统计办结 EcOrderDoneDTO ecOrderDoneDTO = new EcOrderDoneDTO(); EcOrderDoneDTO ecOrderDoneDTO = BeanUtil.copy(ecOrderParamDTO, EcOrderDoneDTO.class); int i4 = baseMapper.selectEcOrderDoneCount(ecOrderDoneDTO); // 统计答复 EcOrderRespDTO ecOrderRespDTO = new EcOrderRespDTO(); EcOrderRespDTO ecOrderRespDTO = BeanUtil.copy(ecOrderParamDTO, EcOrderRespDTO.class); int i5 = baseMapper.selectEcOrderRespCount(ecOrderRespDTO); // 统计核实 EcOrderReviewDTO ecOrderReviewDTO = new EcOrderReviewDTO(); EcOrderReviewDTO ecOrderReviewDTO = BeanUtil.copy(ecOrderParamDTO, EcOrderReviewDTO.class); int i6 = baseMapper.selectEcOrderReviewCount(ecOrderReviewDTO); // 统计督办 EcOrderSuperviseDTO ecOrderSuperviseDTO = new EcOrderSuperviseDTO(); EcOrderSuperviseDTO ecOrderSuperviseDTO = BeanUtil.copy(ecOrderParamDTO, EcOrderSuperviseDTO.class); int i7 = baseMapper.selectEcOrderSuperviseCount(ecOrderSuperviseDTO); // 工单数 派发单数 办理单数(率) 办结单数(率) 答复单数(率) 回访单数(率) 核实单数 督办单数 Map<String, String> result = new HashMap<>(); // 工单数 result.put("order", String.valueOf(i)); 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("supervise", String.valueOf(i7)); result.put("superviseNumber", String.valueOf(i7)); // 返回结果 return result; @@ -176,18 +195,26 @@ System.out.println(rate); } public static String getRate(int dividend, int divisor) { // int dividend = 10; // 被除数 // int divisor = 3; // 除数 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 = 2; // 保留两位小数 RoundingMode roundingMode = RoundingMode.HALF_UP; // 四舍五入 int scale = DEFAULT_SCALE; RoundingMode roundingMode = DEFAULT_ROUNDING_MODE; // 进行除法运算 BigDecimal result = bdDividend.divide(bdDivisor, scale, roundingMode); BigDecimal result; try { result = bdDividend.divide(bdDivisor, scale, roundingMode); } catch (ArithmeticException e) { // 处理因除数为0或其他原因引发的算术异常 throw new RuntimeException("除法运算出错", e); } return result.toString(); } src/main/java/org/springblade/xxljob/jobhandler/LabelHandleJob.java
@@ -7,6 +7,7 @@ import com.xxl.job.core.handler.annotation.XxlJob; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springblade.modules.eCallEventTwo.dto.EcOrderParamDTO; import org.springblade.modules.eCallEventTwo.service.EcOrderService; import org.springblade.modules.task.service.ITaskService; import org.springframework.beans.factory.annotation.Autowired; @@ -18,6 +19,12 @@ import java.io.InputStreamReader; import java.net.HttpURLConnection; import java.net.URL; import java.time.LocalDateTime; import java.time.LocalTime; import java.time.ZoneId; import java.time.ZonedDateTime; import java.time.format.DateTimeFormatter; import java.time.temporal.ChronoUnit; import java.util.Arrays; import java.util.List; import java.util.concurrent.TimeUnit; @@ -87,7 +94,16 @@ public void ehjbJobHandler (){ XxlJobHelper.log("开始执行任务...E呼即办定时任务"); // 创建居住证发送短信定时任务 boolean result = ecOrderService.SynchronizeData(); EcOrderParamDTO ecOrderParamDTO = new EcOrderParamDTO(); // 获取当前日期时间 LocalDateTime now = LocalDateTime.now(); // 获取前一天的开始时间 LocalDateTime yesterdayStart = now.minus(1, ChronoUnit.DAYS).with(LocalTime.MIN); // 获取前一天的结束时间 LocalDateTime yesterdayEnd = now.minus(1, ChronoUnit.DAYS).with(LocalTime.MAX); ecOrderParamDTO.setEndTime(yesterdayEnd); ecOrderParamDTO.setStartTime(yesterdayStart); boolean result = ecOrderService.SynchronizeData(ecOrderParamDTO); XxlJobHelper.log("任务响应结果..." + result); // 创建居住证发送短信定时任务 XxlJobHelper.log("E呼即办定时任务-结束自动创建任务...");