linwe
2024-05-29 c10d6358b9f014375a13821465bc978d0c0da22e
通过E呼即办数据统计
6 files modified
1 files added
197 ■■■■ changed files
src/main/java/org/springblade/modules/eCallEventTwo/controller/ECallEventTwoController.java 46 ●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/eCallEventTwo/dto/EcOrderParamDTO.java 33 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/eCallEventTwo/mapper/EcOrderMapper.java 2 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/eCallEventTwo/mapper/EcOrderMapper.xml 14 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/eCallEventTwo/service/EcOrderService.java 17 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/eCallEventTwo/service/impl/EcOrderServiceImpl.java 67 ●●●● patch | view | raw | blame | history
src/main/java/org/springblade/xxljob/jobhandler/LabelHandleJob.java 18 ●●●●● patch | view | raw | blame | history
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呼即办定时任务-结束自动创建任务...");