Qchen пре 2 година
родитељ
комит
f9cbddcde1

+ 7 - 5
src/main/java/com/ydtech/modules/admin/service/impl/WechatCpServiceImpl.java

@@ -7,7 +7,6 @@ import cn.hutool.http.HttpUtil;
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import com.ydtech.config.WechatWorkConfig;
 import com.ydtech.constants.sys.SysPasswordEnum;
 import com.ydtech.exception.SystemException;
 import com.ydtech.modules.admin.model.SysPassword;
@@ -45,30 +44,33 @@ public class WechatCpServiceImpl implements WechatCpService {
     @Value("${wechat.cp.secret}")
     private String corpSecret;
 
+    @Value("${wechat.cp.agent-id}")
+    private Integer agentId;
+
     private static final String ACCESS_TOKEN_KEY = "access_token";
 
     private final StringRedisTemplate redisTemplate;
 
     //  获取accessToken
-    private String fetchAccessToken() throws Exception {
+    private String fetchAccessToken() {
         String accessTokenUrl = String.format("https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=%s&corpsecret=%s", corpId, corpSecret);
         String response = HttpUtil.get(accessTokenUrl);
         JSONObject jsonObject = JSON.parseObject(response);
         return jsonObject.getString("access_token");
     }
 
-    public String getAccessToken() throws Exception {
+    public String getAccessToken() {
         String accessToken = redisTemplate.opsForValue().get(ACCESS_TOKEN_KEY);
 
         if (StringUtils.isEmpty(accessToken)) {
             accessToken = fetchAccessToken();
-            // 假设 access_token 有效期为 7200 秒
+            // access_token 有效期为 7200 秒
             redisTemplate.opsForValue().set(ACCESS_TOKEN_KEY, accessToken, 7000, TimeUnit.SECONDS);
         }
         return accessToken;
     }
 
-    //  通过 accessToken和code 获取企业微信用户信息
+    //  通过 accessToken  code 获取企业微信用户信息
     private JSONObject getUserInfo(String code) {
         try {
             String userInfoUrl = String.format("https://qyapi.weixin.qq.com/cgi-bin/auth/getuserinfo?access_token=%s&code=%s", getAccessToken(), code);

+ 32 - 0
src/main/java/com/ydtech/modules/order/controller/InsOrdersController.java

@@ -3,6 +3,7 @@ package com.ydtech.modules.order.controller;
 import cn.keking.anti_reptile.annotation.AntiReptile;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.ydtech.aop.request.RequestSingleParam;
 import com.ydtech.core.page.HttpResult;
@@ -12,6 +13,7 @@ import com.ydtech.modules.admin.model.po.SysUserIsDial;
 import com.ydtech.modules.admin.service.SysUserIsDialService;
 import com.ydtech.modules.base.controller.BaseController;
 import com.ydtech.modules.ins.model.InsOrdersExcelVo;
+import com.ydtech.modules.inv.utils.EasyExcelUtils;
 import com.ydtech.modules.order.components.InsOrdersComponents;
 import com.ydtech.modules.order.constants.OrderLinkTypeConstants;
 import com.ydtech.modules.order.entity.*;
@@ -24,11 +26,16 @@ import com.ydtech.utils.StringUtils;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.util.ObjectUtils;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
 
 import javax.validation.Valid;
+import java.io.IOException;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.Paths;
 import java.util.List;
 import java.util.stream.Collectors;
 
@@ -50,6 +57,11 @@ public class InsOrdersController extends BaseController {
     private final BatchOrderService batchOrderService;
 
     private final InsAreaCompanyPositionService insAreaCompanyPositionService;
+    @Value("${upload.file.path}")
+    private String uploadPath;
+
+    @Value("${upload.file.url}")
+    private String uploadUrl;
 
     public InsOrdersController(InsAreaCompanyService insAreaCompanyService, InsOrdersService insOrdersService,
                                InsOrdersComponents insOrdersComponents, InsAccidentalDrivingService insAccidentalDrivingService,
@@ -415,4 +427,24 @@ public class InsOrdersController extends BaseController {
     public HttpResult<InquiryDetalsVo> getInquiryDetalsBySubOrderNos(@RequestBody InquiryDetalsQueryDto inquiryDetalsDto){
         return HttpResult.ok(insOrdersService.getInquiryDetalsBySubOrderIds(inquiryDetalsDto));
     }
+
+    @PostMapping("/queryHxOrdersCount")
+    @ApiOperation(value = "查询后线人员代课录单次数")
+    public HttpResult<IPage<QueryHxOrdersCountVo>> queryHxOrdersCount(@RequestBody QueryHxOrdersCountVo queryHxOrdersCountVo){
+        IPage<QueryHxOrdersCountVo> result = insOrdersService.queryHxOrdersCount(queryHxOrdersCountVo);
+        return HttpResult.ok("success", result);
+    }
+
+    @PostMapping("/exportHxOrdersCount")
+    @ApiOperation(value = "导出后线人员代课录单次数")
+    public HttpResult exportHxOrdersCount(@RequestBody QueryHxOrdersCountVo queryHxOrdersCountVo) throws IOException {
+        List<QueryHxOrdersCountExcel> result = insOrdersService.exportHxOrdersCount(queryHxOrdersCountVo);
+        String uploadPath = this.uploadPath + "/excel/";
+        Path path = Paths.get(uploadPath);
+        if (!Files.exists(path)) {
+            Files.createDirectories(path);
+        }
+        String fileName = EasyExcelUtils.downExcel(uploadPath, "后线人员代课录单统计报表", QueryHxOrdersCountExcel.class, result);
+        return HttpResult.ok("",uploadUrl + "excel/" + fileName);
+    }
 }

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

@@ -1,6 +1,7 @@
 package com.ydtech.modules.order.dao;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.ydtech.modules.ins.model.InsOrdersExcel;
 import com.ydtech.modules.ins.model.InsOrdersExcelVo;
@@ -113,4 +114,7 @@ public interface InsOrdersMapper extends BaseMapper<InsOrders> {
      */
     List<AuditExportVo> getAuditExportList(@Param("param") AuditExportQueryVo auditExportQueryVo);
 
+
+    List<QueryHxOrdersCountExcel> queryHxOrdersCount(@Param("queryHxOrdersCountVo") QueryHxOrdersCountVo queryHxOrdersCountVo);
+
 }

+ 34 - 0
src/main/java/com/ydtech/modules/order/entity/vo/QueryHxOrdersCountExcel.java

@@ -0,0 +1,34 @@
+package com.ydtech.modules.order.entity.vo;
+
+import com.alibaba.excel.annotation.ExcelProperty;
+import lombok.Data;
+
+@Data
+public class QueryHxOrdersCountExcel {
+    @ExcelProperty("工号")
+    private String operatorId;
+    @ExcelProperty("姓名")
+    private String name;
+
+    @ExcelProperty("录单次数")
+    private String count;
+    //报价中
+    @ExcelProperty("报价中次数")
+    private String orderStatus0;
+
+    @ExcelProperty("待核保次数")
+    //待核保
+    private String orderStatus1;
+
+    @ExcelProperty("已核保待缴费次数")
+    //已核保待缴费
+    private String orderStatus2;
+
+    @ExcelProperty("已承保次数")
+    //已承保
+    private String orderStatus3;
+
+    @ExcelProperty("核保退回次数")
+    //核保退回
+    private String orderStatus4;
+}

+ 55 - 0
src/main/java/com/ydtech/modules/order/entity/vo/QueryHxOrdersCountVo.java

@@ -0,0 +1,55 @@
+package com.ydtech.modules.order.entity.vo;
+
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+import java.util.List;
+
+@Data
+@ExcelIgnoreUnannotated
+public class QueryHxOrdersCountVo implements Serializable {
+    @ExcelProperty("工号")
+    private String operatorId;
+    @ExcelProperty("姓名")
+    private String name;
+
+    @ExcelProperty("录单次数")
+    private String count;
+
+    //报价中
+    @ExcelProperty("报价中次数")
+    private String orderStatus0;
+
+    @ExcelProperty("待核保次数")
+    //待核保
+    private String orderStatus1;
+
+    @ExcelProperty("已核保待缴费次数")
+    //已核保待缴费
+    private String orderStatus2;
+
+    @ExcelProperty("已承保次数")
+    //已承保
+    private String orderStatus3;
+
+    @ExcelProperty("核保退回次数")
+    //核保退回
+    private String orderStatus4;
+
+    private Date createTime;
+
+    private String createTimeStart;
+
+    private String createTimeEnd;
+
+    private List<String> ids;
+
+
+    private int pageNum;
+
+
+    private int pageSize;
+}

+ 6 - 0
src/main/java/com/ydtech/modules/order/service/InsOrdersService.java

@@ -1,5 +1,6 @@
 package com.ydtech.modules.order.service;
 
+import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.ydtech.core.page.HttpResult;
@@ -215,4 +216,9 @@ public interface InsOrdersService extends IService<InsOrders> {
      * @Description: 通过子订单号查询询价信息
      */
     InquiryDetalsVo getInquiryDetalsBySubOrderIds(InquiryDetalsQueryDto inquiryDetalsDto);
+
+    IPage<QueryHxOrdersCountVo> queryHxOrdersCount(QueryHxOrdersCountVo queryHxOrdersCountVo);
+
+    List<QueryHxOrdersCountExcel> exportHxOrdersCount(QueryHxOrdersCountVo queryHxOrdersCountVo);
+
 }

+ 3 - 0
src/main/java/com/ydtech/modules/order/service/impl/DaJiaOrderServiceImpl.java

@@ -202,6 +202,9 @@ public class DaJiaOrderServiceImpl implements DaJiaOrderService {
             // 2.车型查询
             ODR2009Request odr2009Request = new ODR2009Request(orderNo, quoteInfoVo, daJiaConfigureParameters);
             ODR2009Response odr2009Response = daJiaRequestApiComponents.queryVehicleTypes(odr2009Request);
+            if (odr2009Response.getStatus().equals(Message.M0003.getCode())) {
+                return HttpResult.error(odr2009Response.getMessage());
+            }
 
             // 3.车辆与客户信息确认
             CoreModelsVo coreModelsVo = new CoreModelsVo();

+ 23 - 0
src/main/java/com/ydtech/modules/order/service/impl/InsOrdersServiceImpl.java

@@ -4,6 +4,7 @@ import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.ydtech.components.OrderComponents;
@@ -25,6 +26,8 @@ import com.ydtech.modules.admin.dao.SysUserLinkPtlAgreementMapper;
 import com.ydtech.modules.admin.dao.SysUserMapper;
 import com.ydtech.modules.admin.model.*;
 import com.ydtech.modules.admin.model.dto.SysUserLinkPtlAgreementDto;
+import com.ydtech.modules.admin.model.po.SysUserAccount;
+import com.ydtech.modules.admin.model.po.SysUserBankCard;
 import com.ydtech.modules.admin.model.po.SysUserIsDial;
 import com.ydtech.modules.admin.service.*;
 import com.ydtech.modules.base.controller.BaseController;
@@ -45,6 +48,7 @@ import com.ydtech.modules.ins.model.vo.RiskInfoVo;
 import com.ydtech.modules.ins.model.ya.CarModelDTO;
 import com.ydtech.modules.ins.model.ya.ExtendInfoDto;
 import com.ydtech.modules.ins.model.ya.ResponseDataC2;
+import com.ydtech.modules.inv.model.excel.InvDisburseExcel;
 import com.ydtech.modules.inv.utils.EasyExcelUtils;
 import com.ydtech.modules.order.constants.JqInsuranceType;
 import com.ydtech.modules.order.dao.InsOrdersMapper;
@@ -84,6 +88,9 @@ import org.springframework.util.ObjectUtils;
 import javax.validation.constraints.NotBlank;
 import java.io.File;
 import java.math.BigDecimal;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.Paths;
 import java.time.LocalDateTime;
 import java.time.format.DateTimeFormatter;
 import java.time.temporal.ChronoUnit;
@@ -1642,4 +1649,20 @@ public class InsOrdersServiceImpl extends ServiceImpl<InsOrdersMapper, InsOrders
         }
         return identify;
     }
+
+    public IPage<QueryHxOrdersCountVo> queryHxOrdersCount(QueryHxOrdersCountVo queryHxOrdersCountVo) {
+        PageRequest pageRequest = new PageRequest();
+        pageRequest.setPageNum(queryHxOrdersCountVo.getPageNum());
+        pageRequest.setPageSize(queryHxOrdersCountVo.getPageSize());
+        List<QueryHxOrdersCountExcel> queryHxOrdersCount = baseMapper.queryHxOrdersCount(queryHxOrdersCountVo);
+        IPage ipage = PageRequest.buildPageRequest(pageRequest);
+        ipage.setRecords(queryHxOrdersCount.stream().skip((queryHxOrdersCountVo.getPageNum() - 1) * queryHxOrdersCountVo.getPageSize()).limit(queryHxOrdersCountVo.getPageSize()).
+                collect(Collectors.toList()));
+        ipage.setTotal(queryHxOrdersCount.size());
+        return ipage;
+    }
+
+    public List<QueryHxOrdersCountExcel> exportHxOrdersCount(QueryHxOrdersCountVo queryHxOrdersCountVo) {
+        return baseMapper.queryHxOrdersCount(queryHxOrdersCountVo);
+    }
 }

+ 54 - 0
src/main/resources/mapper/modules/order/InsOrdersMapper.xml

@@ -1571,4 +1571,58 @@
         </if>
 
     </select>
+
+
+    <resultMap id="hxOrderCountMap" type="com.ydtech.modules.order.entity.vo.QueryHxOrdersCountVo">
+        <result property="operatorId" column="operatorid" jdbcType="VARCHAR"/>
+        <result property="name" column="name" jdbcType="VARCHAR"/>
+        <result property="orderStatus0" column="orderstatus0" jdbcType="VARCHAR"/>
+        <result property="orderStatus1" column="orderstatus1" jdbcType="VARCHAR"/>
+        <result property="orderStatus2" column="orderstatus2" jdbcType="VARCHAR"/>
+        <result property="orderStatus3" column="orderstatus3" jdbcType="VARCHAR"/>
+        <result property="orderStatus4" column="orderstatus4" jdbcType="VARCHAR"/>
+        <result property="createTime" column="createtime" jdbcType="TIMESTAMP"/>
+        <result property="createTimeStart" column="createTimeStart" jdbcType="VARCHAR"/>
+        <result property="createTimeEnd" column="createTimeEnd" jdbcType="VARCHAR"/>
+        <result property="count" column="count1" jdbcType="VARCHAR"/>
+    </resultMap>
+
+
+    <select id="queryHxOrdersCount" resultMap="hxOrderCountMap">
+        select
+            operatorid,
+            su.name,
+            count(*) as count1,
+            SUM(CASE WHEN orderstatus = '1' THEN 1 ELSE 0 END) AS orderstatus1,
+            SUM(CASE WHEN orderstatus = '2' THEN 1 ELSE 0 END) AS orderstatus2,
+            SUM(CASE WHEN orderstatus = '3' THEN 1 ELSE 0 END) AS orderstatus3,
+            SUM(CASE WHEN orderstatus = '4' THEN 1 ELSE 0 END) AS orderstatus4,
+            SUM(CASE WHEN orderstatus = '0' THEN 1 ELSE 0 END) AS orderstatus0
+        from
+            ins_orders
+        LEFT JOIN
+            sys_user su ON operatorid = su.id
+        WHERE operatorid IS NOT NULL
+          AND operatorid NOT LIKE '%M%'
+        <if test="queryHxOrdersCountVo.ids != null and !queryHxOrdersCountVo.ids.isEmpty()">
+            and operatorid IN
+            <foreach item="item" index="index" collection="queryHxOrdersCountVo.ids" open="(" separator="," close=")">
+                #{item}
+            </foreach>
+        </if>
+        <if test="queryHxOrdersCountVo.operatorId !=null and  queryHxOrdersCountVo.operatorId  !=''">
+            and operatorid =#{queryHxOrdersCountVo.operatorId}
+        </if>
+        <if test="queryHxOrdersCountVo.name !=null and  queryHxOrdersCountVo.name  !=''">
+            and su.name =#{queryHxOrdersCountVo.name}
+        </if>
+        <if test="queryHxOrdersCountVo.createTimeStart != null and queryHxOrdersCountVo.createTimeStart != ''">
+            and createtime &gt;= #{queryHxOrdersCountVo.createTimeStart}
+        </if>
+        <if test="queryHxOrdersCountVo.createTimeEnd != null and queryHxOrdersCountVo.createTimeEnd != ''">
+            and createtime &lt;= #{queryHxOrdersCountVo.createTimeEnd}
+        </if>
+        group by
+            operatorid,su.name
+    </select>
 </mapper>