Преглед изворни кода

Merge branch 'test-cyr' of sxzgd/java-insagent-pc into test

caiyaru пре 2 година
родитељ
комит
a77d3be4ae

+ 1 - 1
src/main/java/com/ydtech/modules/order/dao/InsOrdersMapper.java

@@ -90,7 +90,7 @@ public interface InsOrdersMapper extends BaseMapper<InsOrders> {
 
     int getExpirationInsureCount(@Param("userId") String userId,@Param("startDate") String startTime,@Param("endDate") String endTime,@Param("isJq")Integer isJq,@Param("param") String param);
 
-    Page<OrderExpirationVo> getExpirationInsure(@Param("page") Page page,@Param("userId") String userId,@Param("startDate") String startTime,@Param("endDate") String endTime,@Param("isJq")Integer isJq,@Param("param") String param);
+    Page<OrderExpirationVo> getExpirationInsure(@Param("page") Page page,@Param("order")OrderExpirationQueryVo orderExpirationQueryVo);
 
 
     /**

+ 28 - 4
src/main/java/com/ydtech/modules/order/entity/vo/OrderExpirationQueryVo.java

@@ -5,9 +5,11 @@ import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
 import com.ydtech.core.page.PageRequest;
 import io.swagger.annotations.ApiModelProperty;
+import lombok.Builder;
 import lombok.Data;
 
 import java.io.Serializable;
+import java.util.Date;
 
 @Data
 @TableName(autoResultMap = true)
@@ -22,17 +24,39 @@ public class OrderExpirationQueryVo extends PageRequest {
     private String userid;
 
     /**
-     * 交强终保时间
+     * 交强终保时间-开始时间
      */
-    @ApiModelProperty(value = "交强终保时间")
+    @ApiModelProperty(value = "交强终保时间-开始时间")
+    private String jqStartDate;
+    /**
+     * 交强终保时间-结束时间
+     */
+    @ApiModelProperty(value = "交强终保时间-结束时间")
     private String jqEndDate;
 
     /**
-     * 商业终保时间
+     * 是否启用交强时间范围查询
+     */
+    @ApiModelProperty(value = "是否启用交强时间范围查询,true:启用 false:不启用")
+    private Boolean jqEnable = Boolean.TRUE;
+
+    /**
+     * 商业终保时间-开始时间
      */
-    @ApiModelProperty(value = "商业终保时间")
+    @ApiModelProperty(value = "商业终保时间-开始时间")
+    private String syStartDate;
+    /**
+     * 商业终保时间-结束时间
+     */
+    @ApiModelProperty(value = "商业终保时间-结束时间")
     private String syEndDate;
 
+    /**
+     * 是否启用商业时间范围查询
+     */
+    @ApiModelProperty(value = "是否启用商业时间范围查询,true:启用 false:不启用")
+    private Boolean syEnable = Boolean.TRUE;
+
     @ApiModelProperty(value = "查询参数")
     private String param;
 

+ 8 - 2
src/main/java/com/ydtech/modules/order/entity/vo/OrderExpirationVo.java

@@ -75,7 +75,13 @@ public class OrderExpirationVo implements Serializable {
     @TableField(value = "syenddate")
     private String syenddate;
 
-    @TableField(value = "difference")
-    private String difference;
+
+    @TableField(value = "jqDiff")
+    @ApiModelProperty(value = "交强保单距离到期天数")
+    private String jqDiff;
+
+    @TableField(value = "syDiff")
+    @ApiModelProperty(value = "商业保单距离到期天数")
+    private String syDiff;
 
 }

+ 20 - 18
src/main/java/com/ydtech/modules/order/service/impl/InsOrdersServiceImpl.java

@@ -74,6 +74,7 @@ import com.ydtech.utils.SnowFlakeUtil;
 import com.ydtech.utils.idgen.IdGenerate;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.BeanUtils;
+import org.springframework.beans.InvalidPropertyException;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.context.annotation.Lazy;
@@ -85,6 +86,7 @@ import org.springframework.util.ObjectUtils;
 import javax.validation.constraints.NotBlank;
 import java.io.File;
 import java.math.BigDecimal;
+import java.time.Instant;
 import java.time.LocalDateTime;
 import java.time.format.DateTimeFormatter;
 import java.time.temporal.ChronoUnit;
@@ -1385,27 +1387,27 @@ public class InsOrdersServiceImpl extends ServiceImpl<InsOrdersMapper, InsOrders
 
     @Override
     public Page<OrderExpirationVo> getExpirationInsure(Page page, OrderExpirationQueryVo orderExpirationQueryVo) {
-        LocalDateTime currentTime, oneMonthAgo;
-        Integer isJq = 1;
-        if (orderExpirationQueryVo.getJqEndDate() != null) {
-            currentTime = LocalDateTime.parse(orderExpirationQueryVo.getJqEndDate(), DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
-            oneMonthAgo = currentTime.plus(1, ChronoUnit.MONTHS);
-        } else if (orderExpirationQueryVo.getSyEndDate() != null) {
-            currentTime = LocalDateTime.parse(orderExpirationQueryVo.getSyEndDate(), DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
-            oneMonthAgo = currentTime.plus(1, ChronoUnit.MONTHS);
-            isJq = 2;
+        LocalDateTime currentTime = LocalDateTime.now();
+        LocalDateTime oneYearAgo = currentTime.plus(1, ChronoUnit.YEARS);
+        DateTimeFormatter datePat = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
+        if (orderExpirationQueryVo.getJqEnable() &&( StringUtils.isEmpty(orderExpirationQueryVo.getJqStartDate()) ||
+                StringUtils.isEmpty(orderExpirationQueryVo.getJqEndDate()))) {
+            throw new InvalidPropertyException(getClass(),"jqStartDate/jqEndDate","请输入交强查询起止日期!");
+
         } else {
-            currentTime = LocalDateTime.now();
-            oneMonthAgo = currentTime.plus(1, ChronoUnit.MONTHS);
+            orderExpirationQueryVo.setJqStartDate(currentTime.format(datePat) );
+            orderExpirationQueryVo.setJqEndDate(oneYearAgo.format(datePat) );
         }
-        Page<OrderExpirationVo> expirationInsure = baseMapper.getExpirationInsure(page, orderExpirationQueryVo.getUserid(),
-                currentTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")),
-                oneMonthAgo.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")), isJq, orderExpirationQueryVo.getParam());
-        List<OrderExpirationVo> records = expirationInsure.getRecords();
-        for (OrderExpirationVo record : records) {
-            Integer difference = Integer.parseInt(record.getDifference());
-            record.setDifference(String.valueOf(-difference));
+
+        if (orderExpirationQueryVo.getSyEnable() &&(StringUtils.isEmpty(orderExpirationQueryVo.getSyStartDate()) ||
+                StringUtils.isEmpty(orderExpirationQueryVo.getSyEndDate() ))) {
+            throw new InvalidPropertyException(getClass(),"syStartDate/syEndDate","请输入商业查询起止日期!");
+        } else {
+            orderExpirationQueryVo.setSyStartDate(currentTime.format(datePat));
+            orderExpirationQueryVo.setSyEndDate(oneYearAgo.format(datePat)  );
         }
+        Page<OrderExpirationVo> expirationInsure = baseMapper.getExpirationInsure(page, orderExpirationQueryVo);
+        List<OrderExpirationVo> records = expirationInsure.getRecords();
         expirationInsure.setRecords(records);
         return expirationInsure;
     }

+ 17 - 34
src/main/resources/mapper/modules/order/InsOrdersMapper.xml

@@ -1332,43 +1332,26 @@
 
     <select id="getExpirationInsure" resultType="com.ydtech.modules.order.entity.vo.OrderExpirationVo">
         SELECT
-            a.ins_company,
-            b.id as orderno,
-            a.jqenddate,
-            a.syenddate,
-            a.productid,
-            a.product,
-            a.licenseno,
-            <if test="isJq == 1">
-                DATEDIFF( NOW(), jqenddate ) AS difference
-            </if>
-            <if test="isJq == 2">
-                DATEDIFF( NOW(), syenddate ) AS difference
-            </if>
-
-        FROM
-            ins_orders a
-        left join
-            ins_area_company b
-        on a.orderno = b.orderno
-        WHERE
-            <if test="isJq == 1">
-                jqenddate BETWEEN #{startDate} AND #{endDate}
-            </if>
-            <if test="isJq == 2">
-                syenddate BETWEEN #{startDate} AND #{endDate}
-            </if>
-
-          AND a.orderstatus = 3
+        a.ins_company,
+        b.id as orderno,
+        b.jq_end_date,
+        b.sy_end_date,
+        b.productid,
+        b.product,
+        a.licenseno,
+        case when b.jq_end_date is not null then DATEDIFF( b.jq_end_date,NOW() ) else null end AS jqDiff,
+        case when b.sy_end_date is not null then DATEDIFF( b.sy_end_date,NOW() ) else null end AS syDiff
+        FROM ins_orders a,ins_area_company b
+        WHERE a.orderno = b.orderno
+        AND (b.jq_end_date BETWEEN #{order.jqStartDate} AND #{order.jqEndDate}  or b.sy_end_date BETWEEN #{order.syStartDate} AND #{order.syEndDate})
         AND b.orderstatus = 3
-        <if test="param != null and param != ''">
-        AND (a.licenseno = #{param} or a.ins_company = #{param})
+        <if test="order.param != null and order.param != ''">
+        AND (a.licenseno = #{order.param} or a.ins_company = #{order.param})
         </if>
-        <if test="userId != null and userId != ''">
-            AND a.userid = #{userId}
+        <if test="order.userid != null and order.userid != ''">
+            AND a.userid = #{order.userid}
         </if>
-        ORDER BY
-            difference DESC
+        ORDER BY least(IFNULL(jqDiff, 9999999) , IFNULL(syDiff, 9999999)) asc
     </select>