Răsfoiți Sursa

Merge remote-tracking branch 'origin/test' into test

wks 2 ani în urmă
părinte
comite
8f862e1289
20 a modificat fișierele cu 796 adăugiri și 7 ștergeri
  1. 14 0
      src/main/java/com/ydtech/modules/admin/controller/SysDeptController.java
  2. 6 0
      src/main/java/com/ydtech/modules/admin/controller/SysUserController.java
  3. 14 0
      src/main/java/com/ydtech/modules/admin/service/SysDeptService.java
  4. 7 0
      src/main/java/com/ydtech/modules/admin/service/SysUserService.java
  5. 32 0
      src/main/java/com/ydtech/modules/admin/service/impl/SysDeptServiceImpl.java
  6. 14 0
      src/main/java/com/ydtech/modules/admin/service/impl/SysUserServiceImpl.java
  7. 15 0
      src/main/java/com/ydtech/modules/fnc/service/InsPlySettleService.java
  8. 30 0
      src/main/java/com/ydtech/modules/fnc/service/impl/InsPlySettleServiceImpl.java
  9. 33 2
      src/main/java/com/ydtech/modules/report/controller/ReportController.java
  10. 26 0
      src/main/java/com/ydtech/modules/report/dao/ReportInsurancePolicyMapper.java
  11. 197 0
      src/main/java/com/ydtech/modules/report/model/ReportInsurancePolicy.java
  12. 25 0
      src/main/java/com/ydtech/modules/report/model/vo/InsPlySettleReportReqVo.java
  13. 60 0
      src/main/java/com/ydtech/modules/report/model/vo/InsPlySettleReportResVo.java
  14. 69 0
      src/main/java/com/ydtech/modules/report/model/vo/OrderVolumeAndCostStatisticsResVo.java
  15. 41 0
      src/main/java/com/ydtech/modules/report/model/vo/StatisticsReportReqVo.java
  16. 17 0
      src/main/java/com/ydtech/modules/report/service/ReportInsurancePolicyService.java
  17. 14 1
      src/main/java/com/ydtech/modules/report/service/ReportService.java
  18. 22 0
      src/main/java/com/ydtech/modules/report/service/impl/ReportInsurancePolicyServiceImpl.java
  19. 64 4
      src/main/java/com/ydtech/modules/report/service/impl/ReportServiceImpl.java
  20. 96 0
      src/main/resources/mapper/modules/report/ReportInsurancePolicyMapper.xml

+ 14 - 0
src/main/java/com/ydtech/modules/admin/controller/SysDeptController.java

@@ -110,4 +110,18 @@ public class SysDeptController extends BaseController {
         logger.info(sysDept.toString());
         return HttpResult.ok(sysDept);
     }
+
+
+    @ApiOperation(value = "获取机构树(不包含团队  dept_type=C)")
+    @GetMapping(value = "/findCompanyTree")
+    public HttpResult<List<SysDept>> findCompanyTree() {
+        SysUser user = getUser();
+        String deptId = user.getDeptId();
+        return HttpResult.ok(sysDeptService.findCompanyTree(deptId));
+    }
+    @ApiOperation(value = "根据传入机构,查询归属所有团队")
+    @GetMapping(value = "/findTeamList")
+    public HttpResult findTeamList(String deptId) {
+        return HttpResult.ok(sysDeptService.findTeamList(deptId));
+    }
 }

+ 6 - 0
src/main/java/com/ydtech/modules/admin/controller/SysUserController.java

@@ -829,4 +829,10 @@ public class SysUserController extends BaseController {
         return HttpResult.ok();
     }
 
+
+    @ApiOperation(value = "根据传入机构,查询所有人员")
+    @GetMapping(value = "/findUserList")
+    public HttpResult findUserList(String deptId) {
+        return HttpResult.ok(sysUserService.findUserList(deptId));
+    }
 }

+ 14 - 0
src/main/java/com/ydtech/modules/admin/service/SysDeptService.java

@@ -59,6 +59,20 @@ public interface SysDeptService extends IService<SysDept> {
      */
     List<SysDept> getUserList(String deptId);
 
+    /**
+     * 获取机构树(不包含团队  dept_type=C)
+     * @param deptId
+     * @return
+     */
+    public List<SysDept> findCompanyTree(String deptId);
+
+    /**
+     * 根据传入机构,查询归属所有团队
+     * @param deptId
+     * @return
+     */
+    public List<SysDept> findTeamList(String deptId);
+
 }
 
 

+ 7 - 0
src/main/java/com/ydtech/modules/admin/service/SysUserService.java

@@ -114,6 +114,13 @@ public interface SysUserService extends IService<SysUser> {
     public List<SysUser> findAllAgentRoleUser(String userId,String roleId);
 
     public int getDeptLevel(SysUser2Vo sysUser2Vo);
+
+    /**
+     * 根据机构代码,查询所有人员
+     * @param deptId
+     * @return
+     */
+    public List<SysUser> findUserList(String deptId);
 }
 
 

+ 32 - 0
src/main/java/com/ydtech/modules/admin/service/impl/SysDeptServiceImpl.java

@@ -222,6 +222,38 @@ public class SysDeptServiceImpl extends ServiceImpl<SysDeptMapper, SysDept>
         return recordList;
     }
 
+
+    /**
+     * 获取机构树(不包含团队  dept_type=C)
+     */
+    @Override
+    public List<SysDept> findCompanyTree(String deptId) {
+        SysDept sysDept = getById(deptId);
+        LambdaQueryWrapper<SysDept> lqw = new LambdaQueryWrapper<>();
+        lqw.eq(SysDept::getDelFlag, 0);
+        lqw.likeRight(SysDept::getId, deptId);
+        lqw.and((wrapper)->{wrapper.eq(SysDept::getDeptType,'C').or().eq(SysDept::getId,'9');});
+        List<SysDept> sysDeptList = list(lqw);
+        Map<String, List<SysDept>> map = sysDeptList.stream().collect(Collectors.groupingBy(SysDept::getParentId));
+        sysDeptList.forEach(i -> i.setChildren(map.getOrDefault(i.getId(), new ArrayList<>())));
+        return map.get(sysDept.getParentId());
+    }
+
+    /**
+     * 根据传入机构,查询归属所有团队
+     */
+    @Override
+    public List<SysDept> findTeamList(String deptId) {
+        SysDept sysDept = getById(deptId);
+        LambdaQueryWrapper<SysDept> lqw = new LambdaQueryWrapper<>();
+        lqw.eq(SysDept::getDelFlag, 0);
+        lqw.likeRight(SysDept::getId, deptId);
+        lqw.eq(SysDept::getDeptType,'D');
+        lqw.apply(" exists (SELECT 1 FROM  `sys_dept` b WHERE sys_dept.parent_id = b.`id` AND b.`comlevel`='5') ");
+        List<SysDept> sysDeptList = list(lqw);
+        return sysDeptList;
+    }
+
 }
 
 

+ 14 - 0
src/main/java/com/ydtech/modules/admin/service/impl/SysUserServiceImpl.java

@@ -670,6 +670,20 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
         }
         return level;
     }
+
+    /**
+     * 根据机构代码,查询所有人员
+     * @param deptId
+     * @return
+     */
+    @Override
+    public List<SysUser> findUserList(String deptId) {
+        LambdaQueryWrapper<SysUser> lqw = new LambdaQueryWrapper<>();
+        lqw.eq(SysUser::getStatus, "1");
+        lqw.eq(SysUser::getDeptId,deptId);
+        List<SysUser> lst = list(lqw);
+        return lst;
+    }
 }
 
 

+ 15 - 0
src/main/java/com/ydtech/modules/fnc/service/InsPlySettleService.java

@@ -10,6 +10,8 @@ import com.ydtech.modules.fnc.vo.GenerateSettleVo;
 import com.ydtech.modules.fnc.vo.InsPlyIncomeVo;
 import com.ydtech.modules.fnc.vo.InsPlySettleVo;
 import com.ydtech.modules.order.entity.BasePageResult;
+import com.ydtech.modules.report.model.vo.InsPlySettleReportReqVo;
+import com.ydtech.modules.report.model.vo.InsPlySettleReportResVo;
 
 import java.util.List;
 
@@ -33,4 +35,17 @@ public interface InsPlySettleService extends IService<InsPlySettle> {
 
     public HttpResult queryHxDetail(String settleno);
 
+    /**
+     * 报表-月度结算清单-查询
+     * @param insPlySettleReportReqVo
+     * @return
+     */
+    public BasePageResult<InsPlySettleReportResVo> getInsPlySettleReport(InsPlySettleReportReqVo insPlySettleReportReqVo) ;
+    /**
+     * 报表-月度结算清单-导出
+     * @param insPlySettleReportReqVo
+     * @return
+     */
+    public HttpResult<String> exportInsPlySettleReport(InsPlySettleReportReqVo insPlySettleReportReqVo) ;
+
 }

+ 30 - 0
src/main/java/com/ydtech/modules/fnc/service/impl/InsPlySettleServiceImpl.java

@@ -7,6 +7,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.github.pagehelper.PageHelper;
 import com.github.pagehelper.PageInfo;
 import com.ydtech.core.page.HttpResult;
+import com.ydtech.modules.admin.model.SysUser;
 import com.ydtech.modules.fnc.dao.InsPlyIncomeMapper;
 import com.ydtech.modules.fnc.dao.InsPlySettleDetailMapper;
 import com.ydtech.modules.fnc.dao.InsPlySettleHxMapper;
@@ -20,8 +21,13 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.ydtech.modules.fnc.vo.GenerateSettleVo;
 import com.ydtech.modules.fnc.vo.InsPlyIncomeVo;
 import com.ydtech.modules.fnc.vo.InsPlySettleVo;
+import com.ydtech.modules.inv.utils.EasyExcelUtils;
 import com.ydtech.modules.order.entity.BasePageResult;
 import com.ydtech.modules.order.entity.InsOrders;
+import com.ydtech.modules.order.entity.vo.PolicyInsuranceReportReqVo;
+import com.ydtech.modules.order.entity.vo.PolicyInsuranceReportResVo;
+import com.ydtech.modules.report.model.vo.InsPlySettleReportReqVo;
+import com.ydtech.modules.report.model.vo.InsPlySettleReportResVo;
 import com.ydtech.utils.DateUtil;
 import com.ydtech.utils.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -53,6 +59,8 @@ public class InsPlySettleServiceImpl extends ServiceImpl<InsPlySettleMapper, Ins
     private InsPlyIncomeMapper insPlyIncomeMapper;
     @Autowired
     private InsPlySettleHxMapper insPlySettleHxMapper;
+
+
     @Override
     @Transactional
     public HttpResult generateSettleAndDetail(GenerateSettleVo generateSettleVo) {
@@ -196,4 +204,26 @@ public class InsPlySettleServiceImpl extends ServiceImpl<InsPlySettleMapper, Ins
         List<InsPlySettleHx> list=insPlySettleHxMapper.selectList(queryWrapper);
         return HttpResult.ok(list);
     }
+    @Override
+    public BasePageResult<InsPlySettleReportResVo> getInsPlySettleReport( InsPlySettleReportReqVo insPlySettleReportReqVo) {
+       /* Page<InsOrders> page = new Page<>(insPlySettleReportReqVo.getPageNum(), insPlySettleReportReqVo.getPageSize());
+        page.setSearchCount(false).setOptimizeCountSql(false);//关闭count查询
+        Page<InsPlySettleReportResVo> policyInsuranceReportResVoPage = baseMapper.getPolicyInsuranceReport(page,
+                insPlySettleReportReqVo);
+        Long total = baseMapper.getPolicyInsuranceReportCount(insPlySettleReportReqVo);
+        policyInsuranceReportResVoPage.setTotal(total);
+        return new BasePageResult<>(insPlySettleReportReqVo.getPageNum(), insPlySettleReportReqVo.getPageSize(),
+                policyInsuranceReportResVoPage.getTotal(), policyInsuranceReportResVoPage.getPages()
+                , policyInsuranceReportResVoPage.getRecords());*/
+        return null;
+    }
+
+    @Override
+    public HttpResult<String> exportInsPlySettleReport(InsPlySettleReportReqVo insPlySettleReportReqVo) {
+        /*List<InsPlySettleReportResVo> policyInsuranceReportResVoPage = baseMapper.getPolicyInsuranceReport(insPlySettleReportReqVo);
+        String s = EasyExcelUtils.downExcel(uploadFilePath, PolicyInsuranceReportResVo.class, policyInsuranceReportResVoPage);
+        return HttpResult.ok("", s);*/
+        return null;
+    }
+
 }

+ 33 - 2
src/main/java/com/ydtech/modules/report/controller/ReportController.java

@@ -1,8 +1,11 @@
 package com.ydtech.modules.report.controller;
 
 import com.ydtech.core.page.HttpResult;
+import com.ydtech.modules.base.controller.BaseController;
+import com.ydtech.modules.fnc.service.InsPlySettleService;
+import com.ydtech.modules.order.entity.BasePageResult;
+import com.ydtech.modules.report.model.vo.*;
 import com.ydtech.modules.report.service.ReportService;
-import com.ydtech.modules.report.model.vo.ReportReq;
 import com.ydtech.utils.DateUtil;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
@@ -29,10 +32,12 @@ import javax.servlet.http.HttpServletResponse;
 @Slf4j
 @RestController
 @RequestMapping("/report")
-public class ReportController {
+public class ReportController extends BaseController {
 
     @Autowired
     private ReportService reportService;
+    @Autowired
+    private InsPlySettleService insPlySettleService;
 
     //@PreAuthorize("hasAuthority('sys:report:add')")
     @ApiOperation(value = "保险专业中介机构基本情况表导入")
@@ -165,4 +170,30 @@ public class ReportController {
             e.printStackTrace();
         }
     }
+
+    @PostMapping(value = "/queryOrderAndCostData")
+    @ApiOperation(value = "报表-出单量及费用统计-查询")
+    public HttpResult<BasePageResult<OrderVolumeAndCostStatisticsResVo>> queryOrderAndCostData(@RequestBody StatisticsReportReqVo reqDto) {
+        BasePageResult<OrderVolumeAndCostStatisticsResVo> quoteResult = reportService.queryOrderAndCostData(reqDto);
+        return HttpResult.ok("success", quoteResult);
+    }
+
+    @PostMapping("/exportOrderAndCostData")
+    @ApiOperation(value = "报表-出单量及费用统计-导出")
+    public HttpResult<String> exportOrderAndCostData(@RequestBody StatisticsReportReqVo reqDto) {
+        return reportService.exportOrderAndCostData(reqDto);
+    }
+
+
+    @PostMapping("/getInsPlySettleReport")
+    @ApiOperation(value = "分页获取月度结算清单数据")
+    public HttpResult<BasePageResult<InsPlySettleReportResVo>> getInsPlySettleReport(@RequestBody InsPlySettleReportReqVo insPlySettleReportReqVo) {
+        BasePageResult<InsPlySettleReportResVo> quoteResult = insPlySettleService.getInsPlySettleReport(insPlySettleReportReqVo);
+        return HttpResult.ok("success", quoteResult);
+    }
+    @PostMapping("/exportInsPlySettleReport")
+    @ApiOperation(value = "导出月度结算清单数据")
+    public HttpResult<String> exportInsPlySettleReport(@RequestBody InsPlySettleReportReqVo insPlySettleReportReqVo) {
+        return insPlySettleService.exportInsPlySettleReport(insPlySettleReportReqVo);
+    }
 }

+ 26 - 0
src/main/java/com/ydtech/modules/report/dao/ReportInsurancePolicyMapper.java

@@ -0,0 +1,26 @@
+package com.ydtech.modules.report.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ydtech.modules.report.model.ReportInsurancePolicy;
+import com.ydtech.modules.report.model.vo.OrderVolumeAndCostStatisticsResVo;
+import com.ydtech.modules.report.model.vo.StatisticsReportReqVo;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ * @Author: CXP
+ * @Date: 2024/1/18 22:39
+ */
+public interface ReportInsurancePolicyMapper extends BaseMapper<ReportInsurancePolicy> {
+
+
+    Page<OrderVolumeAndCostStatisticsResVo> queryOrderAndCostData(@Param("page") Page page, @Param("reportReqVo") StatisticsReportReqVo reqVo);
+
+    List<OrderVolumeAndCostStatisticsResVo> queryOrderAndCostData(@Param("reportReqVo")StatisticsReportReqVo reqVo);
+
+    Long queryOrderAndCostDataCount(@Param("reportReqVo") StatisticsReportReqVo reqVo);
+
+
+}

+ 197 - 0
src/main/java/com/ydtech/modules/report/model/ReportInsurancePolicy.java

@@ -0,0 +1,197 @@
+package com.ydtech.modules.report.model;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.ydtech.modules.ins.model.vo.QuoteRespVo;
+import com.ydtech.modules.protocol.entity.po.PtlAgreementAttribution;
+import io.swagger.annotations.ApiModel;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
+
+/**
+ * @Author: CXP
+ * @Date: 2024/1/18 22:19
+ */
+@TableName(value = "report_insurance_policy", autoResultMap = true)
+@Data
+@ApiModel(value = "保单清单基础报表")
+@NoArgsConstructor
+public class ReportInsurancePolicy {
+    /**
+     * 保险公司编号
+     */
+    @TableField(value = "company_id")
+    private String companyId;
+    /**
+     * 保险名称
+     */
+    @TableField(value = "ins_company")
+    private String insCompany;
+    /**
+     * 协议id
+     */
+    @TableField(value = "agreement_id")
+    private String agreementId;
+    /**
+     * 协议名称
+     */
+    @TableField(value = "agreement_name")
+    private String agreementName;
+    /**
+     * 保单号
+     */
+    @TableField(value = "policyno")
+    private String policyno;
+    /**
+     * 签单时间
+     */
+    @TableField(value = "inside_pay_time")
+    private LocalDateTime insidePayTime;
+    /**
+     * 保险起期
+     */
+    @TableField(value = "start_date")
+    private String startDate;
+    /**
+     * 保险止期
+     */
+    @TableField(value = "end_date")
+    private String endDate;
+    /**
+     * 险种代码
+     */
+    @TableField(value = "risk_code")
+    private String riskCode;
+    /**
+     * 险种名称
+     */
+    @TableField(value = "risk_name")
+    private String riskName;
+    /**
+     * 总保费
+     */
+    @TableField(value = "sumpremium")
+    private BigDecimal sumpremium;
+    /**
+     * 车船税
+     */
+    @TableField(value = "taxpremium")
+    private BigDecimal taxpremium;
+    /**
+     * 车船税滞纳金
+     */
+    @TableField(value = "tax_later_premium")
+    private BigDecimal taxLaterPremium;
+    /**
+     * 险种分保额
+     */
+    @TableField(value = "insurance_sub_amount")
+    private String insuranceSubAmount;
+    /**
+     * 车架号
+     */
+    @TableField(value = "frameno")
+    private String frameno;
+    /**
+     * 车牌号
+     */
+    @TableField(value = "licenseno")
+    private String licenseno;
+    /**
+     * 车辆使用性质
+     */
+    @TableField(value = "vehicle_use")
+    private String vehicleUse;
+    /**
+     * 能源种类
+     */
+    @TableField(value = "power_type")
+    private String powerType;
+    /**
+     * 车辆种类
+     */
+    @TableField(value = "cimodelclass")
+    private String cimodelclass;
+    /**
+     * 核定载质量
+     */
+    @TableField(value = "limit_load")
+    private String limitLoad;
+    /**
+     * 投保人名称
+     */
+    @TableField(value = "appli_name")
+    private String appliName;
+    /**
+     * 被保人名称
+     */
+    @TableField(value = "insure_name")
+    private String insureName;
+    /**
+     * 代理团队id
+     */
+    @TableField(value = "deptid")
+    private String deptid;
+    /**
+     * 代理团队名称
+     */
+    @TableField(value = "deptname")
+    private String deptname;
+    /**
+     * 用户id
+     */
+    @TableField(value = "userid")
+    private String userid;
+    /**
+     * 用户名称
+     */
+    @TableField(value = "username")
+    private String username;
+    /**
+     * 产品id
+     */
+    @TableField(value = "productid")
+    private String productid;
+    /**
+     * 产品名称
+     */
+    @TableField(value = "product")
+    private String product;
+    /**
+     * 代客录单时操作员ID
+     */
+    @TableField(value = "operatorid")
+    private String operatorid;
+    /**
+     * 总费用
+     */
+    @TableField(value = "sum_costs_premiums")
+    private BigDecimal sumCostsPremiums;
+    /**
+     * 监管费
+     */
+    @TableField(value = "supervise_costs_premiums")
+    private BigDecimal superviseCostsPremiums;
+    /**
+     * 其他费
+     */
+    @TableField(value = "other_costs_premiums")
+    private BigDecimal otherCostsPremiums;
+    /**
+     * 创建时间
+     */
+    @TableField(value = "create_time")
+    private LocalDateTime createTime;
+
+
+    @TableField(exist = false)
+    private static final long serialVersionUID = 1L;
+
+    public ReportInsurancePolicy(QuoteRespVo quoteRespVo, PtlAgreementAttribution ptlAgreementAttribution) {
+
+    }
+
+}

+ 25 - 0
src/main/java/com/ydtech/modules/report/model/vo/InsPlySettleReportReqVo.java

@@ -0,0 +1,25 @@
+package com.ydtech.modules.report.model.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.Max;
+import javax.validation.constraints.Min;
+
+/**
+ * @Author: CXP
+ * @Date: 2024/1/17 21:54
+ */
+@Data
+public class InsPlySettleReportReqVo {
+
+
+    @ApiModelProperty(value = "每页页数")
+    @Min(value = 20, message = "页数最小为20")
+    @Max(value = 100, message = "页数最大为100")
+    private int pageSize;
+
+    @ApiModelProperty(value = "页数")
+    @Min(value = 1, message = "页数最小为1")
+    private int pageNum;
+}

+ 60 - 0
src/main/java/com/ydtech/modules/report/model/vo/InsPlySettleReportResVo.java

@@ -0,0 +1,60 @@
+package com.ydtech.modules.report.model.vo;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
+
+/**
+ * @Author: CXP
+ * @Date: 2024/1/17 21:54
+ */
+@Data
+public class InsPlySettleReportResVo {
+
+    @ApiModelProperty("结算单号")
+    private String settleno;
+
+    @ApiModelProperty("保险公司")
+    private String companyId;
+    @ApiModelProperty("保险公司名称")
+    private String companyName;
+
+    @ApiModelProperty("结算月份")
+    private String settleMonth;
+
+    @ApiModelProperty("结算批次")
+    private String settleBatch;
+
+    @ApiModelProperty("手续费")
+    private BigDecimal commissionFeevalue;
+
+    @ApiModelProperty("其他费")
+    private BigDecimal otherFeevalue;
+
+    @ApiModelProperty("总费用")
+    private BigDecimal allFeeValue;
+
+    @ApiModelProperty("总费用核销金额")
+    private BigDecimal hxamount;
+    @ApiModelProperty("手续费核销金额")
+    private BigDecimal commissionHxamount;
+    @ApiModelProperty("其他费核销金额")
+    private BigDecimal otherHxamount;
+
+    @ApiModelProperty("机构")
+    private String deptId;
+    @ApiModelProperty("机构名称")
+    private String deptName;
+
+    @ApiModelProperty("结算单生成时间")
+    private LocalDateTime createTime;
+
+    @ApiModelProperty("生成操作人")
+    private String operator;
+
+    @ApiModelProperty("状态")
+    private String status;
+}

+ 69 - 0
src/main/java/com/ydtech/modules/report/model/vo/OrderVolumeAndCostStatisticsResVo.java

@@ -0,0 +1,69 @@
+package com.ydtech.modules.report.model.vo;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+@Data
+@TableName(autoResultMap = true)
+public class OrderVolumeAndCostStatisticsResVo {
+
+    /**
+     * 机构名称
+     */
+    @TableField(value = "institution")
+    private String institution;
+    /**
+     * 团队名称
+     */
+    @TableField(value = "deptname")
+    private String deptname;
+
+    /**
+     * 用户名称
+     */
+    @TableField(value = "username")
+    private String username;
+    /**
+     * 险种名称
+     */
+    @TableField(value = "risk_name")
+    private String riskName;
+    /**
+     * 保单数量
+     */
+    @TableField(value = "policy_count")
+    private BigDecimal policyCount;
+    /**
+     * 总保费
+     */
+    @TableField(value = "sumremium")
+    private BigDecimal sumpremium;
+    /**
+     * 总费用
+     */
+    @TableField(value = "sum_costs_premiums")
+    private BigDecimal sumCostsPremiums;
+    /**
+     * 监管费
+     */
+    @TableField(value = "supervise_costs_premiums")
+    private BigDecimal superviseCostsPremiums;
+    /**
+     * 其他费
+     */
+    @TableField(value = "other_costs_premiums")
+    private BigDecimal otherCostsPremiums;
+
+    /**
+     * 机构Id
+     */
+    private String institutionId;
+    /**
+     * 团队Id
+     */
+    private String deptId;
+
+}

+ 41 - 0
src/main/java/com/ydtech/modules/report/model/vo/StatisticsReportReqVo.java

@@ -0,0 +1,41 @@
+package com.ydtech.modules.report.model.vo;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.time.LocalDate;
+
+@Data
+public class StatisticsReportReqVo {
+
+
+    @ApiModelProperty(value = "机构ID")
+    private String deptId;
+
+    @ApiModelProperty(value = "团队代码")
+    private String teamCode;
+
+    @ApiModelProperty(value = "出单工号")
+    private String userId;
+
+    @ApiModelProperty(value = "保险公司")
+    private String insCompany;
+
+    @ApiModelProperty(value = "产品编码  ALL-全部  BZ-交强  BUS-商业")
+    private String riskCode;
+
+    @ApiModelProperty(value = "签单开始时间")
+    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+    private LocalDate quoteStartDate;
+
+    @ApiModelProperty(value = "签单结束时间")
+    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+    private LocalDate quoteEndDate;
+
+    @ApiModelProperty(value = "每页页数")
+    private int pageSize;
+
+    @ApiModelProperty(value = "页数")
+    private int pageNum;
+}

+ 17 - 0
src/main/java/com/ydtech/modules/report/service/ReportInsurancePolicyService.java

@@ -0,0 +1,17 @@
+package com.ydtech.modules.report.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ydtech.modules.order.entity.InsAreaCompany;
+import com.ydtech.modules.order.entity.dto.InsAreaCompanyQueryDto;
+import com.ydtech.modules.report.model.ReportInsurancePolicy;
+
+import java.util.List;
+
+/**
+ * @author Administrator
+ * @description 针对表【report_insurance_policy(保单清单基础报表)】的数据库操作Service
+ * @createDate 2024-1-18 22:57:22
+ */
+public interface ReportInsurancePolicyService extends IService<ReportInsurancePolicy> {
+
+}

+ 14 - 1
src/main/java/com/ydtech/modules/report/service/ReportService.java

@@ -1,7 +1,8 @@
 package com.ydtech.modules.report.service;
 
 import com.ydtech.core.page.HttpResult;
-import com.ydtech.modules.report.model.vo.ReportReq;
+import com.ydtech.modules.order.entity.BasePageResult;
+import com.ydtech.modules.report.model.vo.*;
 import org.springframework.web.multipart.MultipartFile;
 
 import javax.servlet.http.HttpServletRequest;
@@ -90,5 +91,17 @@ public interface ReportService {
      */
     void exportReportAgentBalanceSheet(ReportReq req, HttpServletRequest request, HttpServletResponse response) throws IOException, ParseException;
 
+    /**
+     * 报表-出单量及费用统计-查询
+     * @param reqVo
+     * @return
+     */
+    public BasePageResult<OrderVolumeAndCostStatisticsResVo> queryOrderAndCostData(StatisticsReportReqVo reqVo);
+    /**
+     * 报表-出单量及费用统计-导出
+     * @param reqDto
+     * @return
+     */
+    public HttpResult<String> exportOrderAndCostData(StatisticsReportReqVo reqDto);
 
 }

+ 22 - 0
src/main/java/com/ydtech/modules/report/service/impl/ReportInsurancePolicyServiceImpl.java

@@ -0,0 +1,22 @@
+package com.ydtech.modules.report.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ydtech.modules.report.dao.ReportInsurancePolicyMapper;
+import com.ydtech.modules.report.model.ReportInsurancePolicy;
+import com.ydtech.modules.report.service.ReportInsurancePolicyService;
+import org.springframework.stereotype.Service;
+
+/**
+ * @author Administrator
+ * @description 针对表【report_insurance_policy(保单清单基础报表)】的数据库操作Service
+ * @createDate 2024-1-18 22:57:22
+ */
+@Service
+public class ReportInsurancePolicyServiceImpl extends ServiceImpl<ReportInsurancePolicyMapper, ReportInsurancePolicy>
+        implements ReportInsurancePolicyService {
+
+}
+
+
+
+

+ 64 - 4
src/main/java/com/ydtech/modules/report/service/impl/ReportServiceImpl.java

@@ -2,29 +2,39 @@ package com.ydtech.modules.report.service.impl;
 
 import cn.afterturn.easypoi.excel.entity.ExportParams;
 import cn.afterturn.easypoi.excel.entity.enmus.ExcelType;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.github.pagehelper.PageHelper;
 import com.ydtech.aop.exception.DescribeException;
 import com.ydtech.core.page.HttpResult;
 import com.ydtech.core.page.PageResult;
+import com.ydtech.modules.admin.dao.SysDeptMapper;
+import com.ydtech.modules.admin.dao.SysUserMapper;
+import com.ydtech.modules.admin.model.SysDept;
+import com.ydtech.modules.admin.model.SysUser;
+import com.ydtech.modules.admin.service.SysDeptService;
+import com.ydtech.modules.admin.service.SysUserService;
 import com.ydtech.modules.ins.utils.ExcelStyleLeftUtil;
 import com.ydtech.modules.ins.utils.ExcelStyleUtil;
 import com.ydtech.modules.ins.utils.ExcelUtils2;
+import com.ydtech.modules.inv.utils.EasyExcelUtils;
+import com.ydtech.modules.order.entity.BasePageResult;
+import com.ydtech.modules.order.entity.InsOrders;
+import com.ydtech.modules.order.entity.vo.PolicyInsuranceReportResVo;
 import com.ydtech.modules.report.dao.ReportAgentBalanceSheetMapper;
 import com.ydtech.modules.report.dao.ReportAgentProfitMapper;
 import com.ydtech.modules.report.dao.ReportAgentStateMapper;
+import com.ydtech.modules.report.dao.ReportInsurancePolicyMapper;
 import com.ydtech.modules.report.model.ReportAgentBalanceSheet;
 import com.ydtech.modules.report.model.ReportAgentProfit;
 import com.ydtech.modules.report.model.ReportAgentState;
+import com.ydtech.modules.report.model.vo.*;
 import com.ydtech.modules.report.service.ReportService;
-import com.ydtech.modules.report.model.vo.ReportAgentBalanceSheetVo;
-import com.ydtech.modules.report.model.vo.ReportAgentProfitVo;
-import com.ydtech.modules.report.model.vo.ReportAgentStateVo;
-import com.ydtech.modules.report.model.vo.ReportReq;
 import com.ydtech.security.utils.PubUserInfo;
 import com.ydtech.utils.DateUtil;
 import com.ydtech.utils.StringUtils;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.multipart.MultipartFile;
@@ -50,6 +60,9 @@ public class ReportServiceImpl implements ReportService {
     private static final String TYPE_1 = "1";
     private static final String TYPE_2 = "2";
 
+    @Value("${upload.file.path}")
+    private String uploadFilePath;
+
     @Autowired
     private ReportAgentStateMapper reportAgentStateMapper;
 
@@ -58,6 +71,12 @@ public class ReportServiceImpl implements ReportService {
 
     @Autowired
     private ReportAgentBalanceSheetMapper reportAgentBalanceSheetMapper;
+    @Autowired
+    private ReportInsurancePolicyMapper reportInsurancePolicyMapper;
+    @Autowired
+    private SysDeptService sysDeptService;
+    @Autowired
+    private SysUserService sysUserService;
 
     /**
      * 保险专业中介机构基本情况表导入
@@ -910,4 +929,45 @@ public class ReportServiceImpl implements ReportService {
             }
         }
     }
+
+
+
+    /**
+     * 报表-出单量及费用统计-查询
+     * @param reqVo
+     * @return
+     */
+    public BasePageResult<OrderVolumeAndCostStatisticsResVo> queryOrderAndCostData(StatisticsReportReqVo reqVo){
+        com.baomidou.mybatisplus.extension.plugins.pagination.Page<InsOrders> page = new Page<>(reqVo.getPageNum(), reqVo.getPageSize());
+        page.setSearchCount(false).setOptimizeCountSql(false);//关闭count查询
+        Page<OrderVolumeAndCostStatisticsResVo> orderVolumeAndCostStatisticsResVoPage = reportInsurancePolicyMapper.queryOrderAndCostData(page,
+                reqVo);
+        orderVolumeAndCostStatisticsResVoPage.getRecords().stream().forEach(item->{
+            item.setInstitutionId(reqVo.getDeptId());
+            SysDept sysDept1=sysDeptService.getById(reqVo.getDeptId());
+            item.setInstitution(sysDept1.getName());
+            if(StringUtils.isNotEmpty(reqVo.getTeamCode())){
+                item.setDeptId(reqVo.getTeamCode());
+                SysDept sysDept2=sysDeptService.getById(reqVo.getTeamCode());
+                item.setDeptname(sysDept2.getName());
+            }
+            if(StringUtils.isNotEmpty(reqVo.getUserId())){
+                SysUser sysUser=sysUserService.getById(reqVo.getUserId());
+                item.setUsername(sysUser.getName());
+            }
+        });
+
+        Long total = reportInsurancePolicyMapper.queryOrderAndCostDataCount(reqVo);
+        orderVolumeAndCostStatisticsResVoPage.setTotal(total);
+        return new BasePageResult<>(reqVo.getPageNum(), reqVo.getPageSize(),
+                orderVolumeAndCostStatisticsResVoPage.getTotal(), orderVolumeAndCostStatisticsResVoPage.getPages()
+                , orderVolumeAndCostStatisticsResVoPage.getRecords());
+    }
+
+    @Override
+    public HttpResult<String> exportOrderAndCostData(StatisticsReportReqVo reqDto) {
+        List<OrderVolumeAndCostStatisticsResVo> orderVolumeAndCostStatisticsResVoPage = reportInsurancePolicyMapper.queryOrderAndCostData(reqDto);
+        String s = EasyExcelUtils.downExcel(uploadFilePath, OrderVolumeAndCostStatisticsResVo.class, orderVolumeAndCostStatisticsResVoPage);
+        return HttpResult.ok("", s);
+    }
 }

+ 96 - 0
src/main/resources/mapper/modules/report/ReportInsurancePolicyMapper.xml

@@ -0,0 +1,96 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper
+        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ydtech.modules.report.dao.ReportInsurancePolicyMapper">
+
+    <resultMap id="BaseResultMap" type="com.ydtech.modules.report.model.ReportInsurancePolicy">
+        <result property="companyId" column="company_id" jdbcType="VARCHAR"/>
+        <result property="insCompany" column="ins_company" jdbcType="VARCHAR"/>
+        <result property="agreementId" column="agreement_id" jdbcType="VARCHAR"/>
+        <result property="agreementName" column="agreement_name" jdbcType="VARCHAR"/>
+        <result property="policyno" column="policyno" jdbcType="VARCHAR"/>
+        <result property="insidePayTime" column="inside_pay_time" jdbcType="TIMESTAMP"/>
+        <result property="startDate" column="start_date" jdbcType="VARCHAR"/>
+        <result property="endDate" column="end_date" jdbcType="VARCHAR"/>
+        <result property="riskCode" column="risk_code" jdbcType="VARCHAR"/>
+        <result property="riskName" column="risk_name" jdbcType="VARCHAR"/>
+        <result property="sumpremium" column="sumpremium" jdbcType="DECIMAL"/>
+        <result property="taxpremium" column="taxpremium" jdbcType="DECIMAL"/>
+        <result property="taxLaterPremium" column="tax_later_premium" jdbcType="DECIMAL"/>
+        <result property="insuranceSubAmount" column="insurance_sub_amount" jdbcType="VARCHAR"/>
+        <result property="frameno" column="frameno" jdbcType="VARCHAR"/>
+        <result property="licenseno" column="licenseno" jdbcType="VARCHAR"/>
+        <result property="vehicleUse" column="vehicle_use" jdbcType="VARCHAR"/>
+        <result property="powerType" column="power_type" jdbcType="VARCHAR"/>
+        <result property="cimodelclass" column="cimodelclass" jdbcType="VARCHAR"/>
+        <result property="limitLoad" column="limit_load" jdbcType="VARCHAR"/>
+        <result property="appliName" column="appli_name" jdbcType="VARCHAR"/>
+        <result property="insureName" column="insure_name" jdbcType="VARCHAR"/>
+        <result property="deptid" column="deptid" jdbcType="VARCHAR"/>
+        <result property="deptname" column="deptname" jdbcType="VARCHAR"/>
+        <result property="userid" column="userid" jdbcType="VARCHAR"/>
+        <result property="username" column="username" jdbcType="VARCHAR"/>
+        <result property="productid" column="productid" jdbcType="VARCHAR"/>
+        <result property="product" column="product" jdbcType="VARCHAR"/>
+        <result property="operatorid" column="operatorid" jdbcType="VARCHAR"/>
+        <result property="sumCostsPremiums" column="sum_costs_premiums" jdbcType="DECIMAL"/>
+        <result property="superviseCostsPremiums" column="supervise_costs_premiums" jdbcType="DECIMAL"/>
+        <result property="otherCostsPremiums" column="other_costs_premiums" jdbcType="DECIMAL"/>
+        <result property="createTime" column="create_time" jdbcType="TIMESTAMP"/>
+    </resultMap>
+
+    <resultMap id="OrderAndCostDataMap" type="com.ydtech.modules.report.model.vo.OrderVolumeAndCostStatisticsResVo">
+        <result property="institution" column="institution" jdbcType="VARCHAR"/>
+        <result property="deptname" column="deptname" jdbcType="VARCHAR"/>
+        <result property="username" column="username" jdbcType="VARCHAR"/>
+        <result property="riskName" column="risk_name" jdbcType="VARCHAR"/>
+        <result property="policyCount" column="policy_count" jdbcType="DECIMAL"/>
+        <result property="sumPremium" column="sumremium" jdbcType="DECIMAL"/>
+        <result property="sumCostsPremiums" column="sum_costs_premiums" jdbcType="DECIMAL"/>
+        <result property="superviseCostsPremiums" column="supervise_costs_premiums" jdbcType="DECIMAL"/>
+        <result property="otherCostsPremiums" column="other_costs_premiums" jdbcType="DECIMAL"/>
+    </resultMap>
+
+    <select id="queryOrderAndCostData"  resultMap="OrderAndCostDataMap">
+
+        SELECT
+        ''institution,
+        ''deptname,
+        ''username,
+        p.`risk_name` risk_name,
+        count(1) policy_count,
+        SUM(p.`sumpremium`) sumpremium,
+        SUM(p.`supervise_costs_premiums`) supervise_costs_premiums,
+        SUM(p.`other_costs_premiums`) other_costs_premiums,
+        SUM(p.`sum_costs_premiums`) sum_costs_premiums
+        FROM
+        report_insurance_policy p WHERE 1=1
+        <if test="reportReqVo.deptId != null and reportReqVo.deptId != ''">
+            and p.deptid like "${reportReqVo.deptId}%"
+        </if>
+        GROUP BY p.`risk_name`
+    </select>
+    <select id="queryOrderAndCostDataCount" resultType="Long">
+        select
+        count(1)
+        from (
+        SELECT
+        ''institution,
+        ''deptname,
+        ''username,
+        p.`risk_name`,
+        count(1) policy_count,
+        SUM(p.`sumpremium`) sumprmium,
+        SUM(p.`supervise_costs_premiums`) supervise_costs_premiums,
+        SUM(p.`other_costs_premiums`) other_costs_premiums,
+        SUM(p.`sum_costs_premiums`) sum_costs_premiums
+        FROM
+        report_insurance_policy p WHERE 1=1
+        <if test="reportReqVo.deptId != null and reportReqVo.deptId != ''">
+            and p.deptid like "${reportReqVo.deptId}%"
+        </if>
+        GROUP BY p.`risk_name`
+        ) as s
+    </select>
+</mapper>