From c10d6358b9f014375a13821465bc978d0c0da22e Mon Sep 17 00:00:00 2001
From: linwe <872216996@qq.com>
Date: Wed, 29 May 2024 17:17:08 +0800
Subject: [PATCH] 通过E呼即办数据统计

---
 src/main/java/org/springblade/modules/eCallEventTwo/service/impl/EcOrderServiceImpl.java    |   67 +++++++++++-----
 src/main/java/org/springblade/modules/eCallEventTwo/dto/EcOrderParamDTO.java                |   33 ++++++++
 src/main/java/org/springblade/xxljob/jobhandler/LabelHandleJob.java                         |   18 ++++
 src/main/java/org/springblade/modules/eCallEventTwo/controller/ECallEventTwoController.java |   46 ++++++++--
 src/main/java/org/springblade/modules/eCallEventTwo/mapper/EcOrderMapper.java               |    2 
 src/main/java/org/springblade/modules/eCallEventTwo/mapper/EcOrderMapper.xml                |   14 +++
 src/main/java/org/springblade/modules/eCallEventTwo/service/EcOrderService.java             |   17 ++++
 7 files changed, 163 insertions(+), 34 deletions(-)

diff --git a/src/main/java/org/springblade/modules/eCallEventTwo/controller/ECallEventTwoController.java b/src/main/java/org/springblade/modules/eCallEventTwo/controller/ECallEventTwoController.java
index e44c869..36716d8 100644
--- a/src/main/java/org/springblade/modules/eCallEventTwo/controller/ECallEventTwoController.java
+++ b/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);
+	}
+
+
 }
diff --git a/src/main/java/org/springblade/modules/eCallEventTwo/dto/EcOrderParamDTO.java b/src/main/java/org/springblade/modules/eCallEventTwo/dto/EcOrderParamDTO.java
new file mode 100644
index 0000000..af0dc7d
--- /dev/null
+++ b/src/main/java/org/springblade/modules/eCallEventTwo/dto/EcOrderParamDTO.java
@@ -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;
+}
diff --git a/src/main/java/org/springblade/modules/eCallEventTwo/mapper/EcOrderMapper.java b/src/main/java/org/springblade/modules/eCallEventTwo/mapper/EcOrderMapper.java
index c752fe4..a1ea701 100644
--- a/src/main/java/org/springblade/modules/eCallEventTwo/mapper/EcOrderMapper.java
+++ b/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();
 }
diff --git a/src/main/java/org/springblade/modules/eCallEventTwo/mapper/EcOrderMapper.xml b/src/main/java/org/springblade/modules/eCallEventTwo/mapper/EcOrderMapper.xml
index a6e011f..ade451d 100644
--- a/src/main/java/org/springblade/modules/eCallEventTwo/mapper/EcOrderMapper.xml
+++ b/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>
diff --git a/src/main/java/org/springblade/modules/eCallEventTwo/service/EcOrderService.java b/src/main/java/org/springblade/modules/eCallEventTwo/service/EcOrderService.java
index 4038062..dd848b7 100644
--- a/src/main/java/org/springblade/modules/eCallEventTwo/service/EcOrderService.java
+++ b/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);
 }
diff --git a/src/main/java/org/springblade/modules/eCallEventTwo/service/impl/EcOrderServiceImpl.java b/src/main/java/org/springblade/modules/eCallEventTwo/service/impl/EcOrderServiceImpl.java
index 761f83e..aa4624a 100644
--- a/src/main/java/org/springblade/modules/eCallEventTwo/service/impl/EcOrderServiceImpl.java
+++ b/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();
 	}
 
diff --git a/src/main/java/org/springblade/xxljob/jobhandler/LabelHandleJob.java b/src/main/java/org/springblade/xxljob/jobhandler/LabelHandleJob.java
index 4206d72..6cf6630 100644
--- a/src/main/java/org/springblade/xxljob/jobhandler/LabelHandleJob.java
+++ b/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呼即办定时任务-结束自动创建任务...");

--
Gitblit v1.9.3