Sfoglia il codice sorgente

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

785834757 2 anni fa
parent
commit
ebc13078da
24 ha cambiato i file con 1046 aggiunte e 640 eliminazioni
  1. 1 2
      docker/Dockerfile
  2. 5 5
      docker/shell-pre.sh
  3. 3 3
      docker/shell-prod.sh
  4. 39 0
      docker/shell-test.sh
  5. 5 2
      src/main/java/com/ydtech/modules/admin/dao/SysUserMapper.java
  6. 29 0
      src/main/java/com/ydtech/modules/admin/model/QuOrders.java
  7. 9 1
      src/main/java/com/ydtech/modules/admin/model/QuTeamNum.java
  8. 89 34
      src/main/java/com/ydtech/modules/admin/service/impl/SysUserServiceImpl.java
  9. 1 1
      src/main/java/com/ydtech/modules/fnc/dao/InsPlySettleMapper.java
  10. 117 42
      src/main/java/com/ydtech/modules/fnc/service/impl/InsFeeAuditServiceImpl.java
  11. 145 105
      src/main/java/com/ydtech/modules/ins/controller/InsPayApplyController.java
  12. 2 0
      src/main/java/com/ydtech/modules/ins/dao/InsPayApplyDao.java
  13. 3 3
      src/main/java/com/ydtech/modules/ins/dao/impl/InsCommissionDaoImpl.java
  14. 3 3
      src/main/java/com/ydtech/modules/ins/dao/impl/InsCompanyFeeDaoImpl.java
  15. 3 3
      src/main/java/com/ydtech/modules/ins/dao/impl/InsDeptFeeDaoImpl.java
  16. 48 0
      src/main/java/com/ydtech/modules/ins/dao/impl/InsPayApplyDaoImpl.java
  17. 6 79
      src/main/java/com/ydtech/modules/ins/model/InsCommission.java
  18. 5 192
      src/main/java/com/ydtech/modules/ins/model/InsCompanyFee.java
  19. 5 103
      src/main/java/com/ydtech/modules/ins/model/InsDeptFee.java
  20. 140 0
      src/main/java/com/ydtech/modules/ins/model/InsUserAccount.java
  21. 0 1
      src/main/java/com/ydtech/modules/protocol/service/ITaxSourceService.java
  22. 296 0
      src/main/resources/application-pre.yml
  23. 1 1
      src/main/resources/application.yml
  24. 91 60
      src/main/resources/mapper/modules/admin/SysUserMapper.xml

+ 1 - 2
docker/Dockerfile

@@ -9,7 +9,6 @@ COPY /lib /ins/lib/
 COPY *.jar  /ins/ROOT.jar
 
 ENV SERVER_PORT=8888
-
 ENV TimeZone=Asia/Shanghai
 
 RUN ln -snf /usr/share/zoneinfo/$TimeZone /etc/localtime && echo $TimeZone > /etc/timezone
@@ -18,4 +17,4 @@ EXPOSE ${SERVER_PORT}
 
 RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories && apk add --update ttf-dejavu fontconfig && rm -rf /var/cache/apk/* && mkfontscale && mkfontdir && fc-cache
 
-ENTRYPOINT ["java", "-Dloader.path=/ins/lib/", "-jar", "/ins/ROOT.jar", "--spring.profiles.active=prod", "--server.port=8888"]
+ENTRYPOINT ["java", "-Dloader.path=/ins/lib/", "-jar", "/ins/ROOT.jar", "--server.port=8888"]

+ 5 - 5
docker/shell-pre.sh

@@ -1,9 +1,9 @@
 # 源jar路径
 # SOURCE_PATH=/usr/local/data/jenkins/workspace/insagent/target
 # Dockerfile路径
-DOCKER_FILE_PATH=/usr/local/java/insAgency
+DOCKER_FILE_PATH=/usr/local/java/insAgency-pre
 # 容器id
-CID=$(''docker ps | grep "ins" | awk '{print $1}''')
+CID=$(''docker ps | grep "ins-pre" | awk '{print $1}''')
 echo $CID
 # 运行docker容器
 function run(){
@@ -19,20 +19,20 @@ function run(){
     # 删除容器
     sudo docker rm $CID
     # 删除镜像
-    sudo docker rmi insagent
+    sudo docker rmi ins-pre
     echo "删除镜像和容器成功,下面开始构建新镜像"
   else
     echo "不存在people-healthy容器,下面直接开始构建镜像"
   fi
   # 构建镜像
-  docker build -t insagent .
+  docker build -t ins-pre .
   echo "创建容器成功"
   docker images
   # 杀死特定端口进程
   # mypid=$(netstat -apn|grep 9001|awk '{print $7}'|cut -d/ -f1);
   # echo $mypid
   # kill -9 $mypid
-  docker run -it --name ins -p 8081:8080 -p 9991:9999 --restart=always -v /usr/local/java/insAgency:/ins --mount type=bind,source=/nasData,destination=/nasData -v /usr/local/java/insAgency/logs:/ins/logs -d ins:latest
+  docker run -it --name ins-pre -p 8081:8888 -e "--spring.profiles.active=pre" -p 9911:9999 --restart=always -v /usr/local/java/insAgency-pre:/ins --mount type=bind,source=/nasData,destination=/nasData -v /usr/local/java/insAgency-pre/logs:/ins/logs -d ins-pre:latest
 }
 
 #入口

+ 3 - 3
docker/shell.sh → docker/shell-prod.sh

@@ -19,20 +19,20 @@ function run(){
     # 删除容器
     sudo docker rm $CID
     # 删除镜像
-    sudo docker rmi insagent
+    sudo docker rmi ins
     echo "删除镜像和容器成功,下面开始构建新镜像"
   else
     echo "不存在people-healthy容器,下面直接开始构建镜像"
   fi
   # 构建镜像
-  docker build -t insagent .
+  docker build -t ins .
   echo "创建容器成功"
   docker images
   # 杀死特定端口进程
   # mypid=$(netstat -apn|grep 9001|awk '{print $7}'|cut -d/ -f1);
   # echo $mypid
   # kill -9 $mypid
-  docker run -it --name ins -p 8080:8080 -p 9999:9999 --restart=always -v /usr/local/java/insAgency:/ins --mount type=bind,source=/nasData,destination=/nasData -v /usr/local/java/insAgency/logs:/ins/logs -d ins:latest
+  docker run -it --name ins -p 8080:8888 -e "--spring.profiles.active=prod" -p 9999:9999 --restart=always -v /usr/local/java/insAgency:/ins --mount type=bind,source=/nasData,destination=/nasData -v /usr/local/java/insAgency/logs:/ins/logs -d ins:latest
 }
 
 #入口

+ 39 - 0
docker/shell-test.sh

@@ -0,0 +1,39 @@
+# 源jar路径
+# SOURCE_PATH=/usr/local/data/jenkins/workspace/insagent/target
+# Dockerfile路径
+DOCKER_FILE_PATH=/usr/local/java/insAgency
+# 容器id
+CID=$(''docker ps | grep "ins" | awk '{print $1}''')
+echo $CID
+# 运行docker容器
+function run(){
+  echo "开始构建镜像..."
+  cd $DOCKER_FILE_PATH
+  echo "当前路径如下"
+  pwd
+  # 构建前判断是否存在镜像,存在则删除
+  if [ -n "$CID" ]; then
+    echo "存在demo容器,CID=$CID,重启docker容器 ..."
+    # 停止容器运行
+    sudo docker stop $CID
+    # 删除容器
+    sudo docker rm $CID
+    # 删除镜像
+    sudo docker rmi ins
+    echo "删除镜像和容器成功,下面开始构建新镜像"
+  else
+    echo "不存在people-healthy容器,下面直接开始构建镜像"
+  fi
+  # 构建镜像
+  docker build -t ins .
+  echo "创建容器成功"
+  docker images
+  # 杀死特定端口进程
+  # mypid=$(netstat -apn|grep 9001|awk '{print $7}'|cut -d/ -f1);
+  # echo $mypid
+  # kill -9 $mypid
+  docker run -it --name ins -p 8080:8888 -e "--spring.profiles.active=test" -p 9999:9999 --restart=always -v /usr/local/java/insAgency:/ins --mount type=bind,source=/nasData,destination=/nasData -v /usr/local/java/insAgency/logs:/ins/logs -d ins:latest
+}
+
+#入口
+run

+ 5 - 2
src/main/java/com/ydtech/modules/admin/dao/SysUserMapper.java

@@ -4,7 +4,9 @@ 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.core.page.PageResult;
+import com.ydtech.modules.admin.model.QuOrders;
 import com.ydtech.modules.admin.model.QuTeamNum;
+import com.ydtech.modules.admin.model.SysDept;
 import com.ydtech.modules.admin.model.SysUser;
 import com.ydtech.modules.admin.model.dto.QuTeamNumDto;
 import com.ydtech.modules.admin.model.dto.SysUserDto;
@@ -153,9 +155,10 @@ public interface SysUserMapper extends BaseMapper<SysUser> {
     @Select({"<script>",selectSql,"</script>"})
     List<SysUser> findAllAgentRoleUser(@Param("userId") String userId,@Param("roleId") String roleId);
 
-    IPage<QuTeamNum> quTeamNum(Page page,@Param("quTeamNumDto")QuTeamNumDto quTeamNumDto);
+    List<QuTeamNum> getDept(@Param("quTeamNumDto")QuTeamNumDto quTeamNumDto);
+
+    List<QuTeamNum> getUser(@Param("quTeamNumDto")QuTeamNumDto quTeamNumDto);
 
-    IPage<QuTeamNum> quUserNum(Page page,@Param("quTeamNumDto")QuTeamNumDto quTeamNumDto);
 }
 
 

+ 29 - 0
src/main/java/com/ydtech/modules/admin/model/QuOrders.java

@@ -0,0 +1,29 @@
+package com.ydtech.modules.admin.model;
+
+import lombok.Data;
+
+/**
+ * @author jianlong
+ * @date 2024-01-17 17:21
+ */
+@Data
+public class QuOrders {
+
+    private String orderNo;
+
+    private String orderStatus;
+
+    private String jqPremium;
+
+    private String syPremium;
+
+    private String taxAmount;
+
+    private String deptId;
+
+    private String deptName;
+
+    private String userId;
+
+    private String userName;
+}

+ 9 - 1
src/main/java/com/ydtech/modules/admin/model/QuTeamNum.java

@@ -4,12 +4,14 @@ import io.swagger.annotations.ApiModelProperty;
 import io.swagger.annotations.ApiOperation;
 import lombok.Data;
 
+import java.math.BigDecimal;
+
 /**
  * @author jianlong
  * @date 2024-01-16 11:57
  */
 @Data
-public class QuTeamNum {
+public class QuTeamNum{
 
 
     @ApiModelProperty(value = "部门名称")
@@ -26,6 +28,12 @@ public class QuTeamNum {
     @ApiModelProperty(value = "成员ID")
     private String userId;
 
+    @ApiModelProperty(value = "订单状态")
+    private String orderStatus;
+
+    @ApiModelProperty(value = "该订单状态下次数")
+    private String count;
+
 
     @ApiModelProperty(value = "报价次数")
     private String quoteNum;

+ 89 - 34
src/main/java/com/ydtech/modules/admin/service/impl/SysUserServiceImpl.java

@@ -23,11 +23,13 @@ import com.ydtech.modules.admin.service.*;
 import com.ydtech.modules.base.controller.BaseController;
 import com.ydtech.modules.base.model.dto.PageDto;
 import com.ydtech.modules.base.model.vo.PageVo;
+import com.ydtech.modules.esm.model.EsmInsAttributionTemplate;
 import com.ydtech.modules.esm.model.EsmUserImage;
 import com.ydtech.modules.esm.model.EsmUserReferrer;
 import com.ydtech.modules.esm.model.vo.EsmUserImageVo;
 import com.ydtech.modules.esm.service.EsmUserImageService;
 import com.ydtech.modules.esm.service.EsmUserReferrerService;
+import com.ydtech.modules.ins.model.InsOrdersExcel;
 import com.ydtech.security.utils.PasswordUtils;
 import com.ydtech.utils.StringUtils;
 import com.ydtech.utils.idgen.IdGenerate;
@@ -88,43 +90,96 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
     @Override
     public IPage<QuTeamNum> quTeamNum(QuTeamNumDto quTeamNumDto) {
         //判断必传标识是否为空
-        if (quTeamNumDto.getTeamOrUserFlag() != null) {
-            //判断是要查询用户还是团队
-            if ("1".equals(quTeamNumDto.getTeamOrUserFlag())) {
-                PageRequest pageRequest = new PageRequest();
-                pageRequest.setPageNum(quTeamNumDto.getPageNo());
-                pageRequest.setPageSize(quTeamNumDto.getPageSize());
-                Page page = PageRequest.buildPageRequest(pageRequest);
-
-                if (quTeamNumDto.getCreateTimeStart() == null && quTeamNumDto.getCreateTimeEnd() == null) {
-                    LocalDate date = LocalDate.now();
-                    LocalDate firstDay = date.with(TemporalAdjusters.firstDayOfMonth()); // 获取当前月的第一天
-                    LocalDate lastDay = date.with(TemporalAdjusters.lastDayOfMonth()); // 获取当前月的最后一天
-
-                    quTeamNumDto.setCreateTimeStart(firstDay);
-                    quTeamNumDto.setCreateTimeEnd(lastDay);
-                }
+        if (quTeamNumDto.getTeamOrUserFlag() == null) {
+            throw new SystemException("必传参数未传");
+        }
+        //判断是要查询用户还是团队
+        if ("1".equals(quTeamNumDto.getTeamOrUserFlag())) {
+            List<QuTeamNum> dept = sysUserMapper.getDept(quTeamNumDto);
 
-                return sysUserMapper.quTeamNum(page, quTeamNumDto);
-            } else if ("2".equals(quTeamNumDto.getTeamOrUserFlag())) {
-                PageRequest pageRequest = new PageRequest();
-                pageRequest.setPageNum(quTeamNumDto.getPageNo());
-                pageRequest.setPageSize(quTeamNumDto.getPageSize());
-                Page page = PageRequest.buildPageRequest(pageRequest);
+            return getQuTeamNumIPage(quTeamNumDto, dept);
 
-                if (quTeamNumDto.getCreateTimeStart() == null && quTeamNumDto.getCreateTimeEnd() == null) {
-                    LocalDate date = LocalDate.now();
-                    LocalDate firstDay = date.with(TemporalAdjusters.firstDayOfMonth()); // 获取当前月的第一天
-                    LocalDate lastDay = date.with(TemporalAdjusters.lastDayOfMonth()); // 获取当前月的最后一天
+        } else if ("2".equals(quTeamNumDto.getTeamOrUserFlag())) {
+            List<QuTeamNum> dept = sysUserMapper.getUser(quTeamNumDto);
 
-                    quTeamNumDto.setCreateTimeStart(firstDay);
-                    quTeamNumDto.setCreateTimeEnd(lastDay);
-                }
-                return sysUserMapper.quUserNum(page, quTeamNumDto);
-            }
-            throw new SystemException("参数错误");
+
+            return getQuTeamNumIPage(quTeamNumDto, dept);
         }
-        throw new SystemException("必传参数未传");
+        throw new SystemException("参数错误");
+    }
+
+    private IPage<QuTeamNum> getQuTeamNumIPage(QuTeamNumDto quTeamNumDto, List<QuTeamNum> dept) {
+        Map<String, List<QuTeamNum>> collect = new HashMap<>();
+        int flag;
+        if (quTeamNumDto.getTeamOrUserFlag().equals("1")) {
+            collect = dept.stream()
+                    .collect(Collectors.groupingBy(QuTeamNum::getDeptId));
+            flag = 1;
+        } else if ("2".equals(quTeamNumDto.getTeamOrUserFlag())) {
+            collect = dept.stream()
+                    .collect(Collectors.groupingBy(QuTeamNum::getUserId));
+            flag = 2;
+        } else {
+            flag = 0;
+        }
+
+        List<QuTeamNum> quTeamNums = new ArrayList<>();
+        collect.forEach((k, v) -> {
+            QuTeamNum teamNum = new QuTeamNum();
+            teamNum.setHasInsuredNum("0");
+            teamNum.setSubmitNum("0");
+            teamNum.setSyPremiumSum("0");
+            teamNum.setJqPremiumSum("0");
+            teamNum.setTaxaMountSum("0");
+            teamNum.setTotalSumpremium("0");
+            teamNum.setQuoteNum("0");
+
+            if (!v.isEmpty()) {
+                v.forEach(quTeamNum -> {
+                    if (quTeamNum.getOrderStatus() != null) {
+                        if (quTeamNum.getOrderStatus().equals("3")) {
+                            if (quTeamNum.getJqPremiumSum() == null) {
+                                quTeamNum.setJqPremiumSum("0");
+                            }
+                            if (quTeamNum.getSyPremiumSum() == null) {
+                                quTeamNum.setSyPremiumSum("0");
+                            }
+                            //添加总额
+                            teamNum.setTotalSumpremium(String.valueOf(new BigDecimal(teamNum.getTotalSumpremium())
+                                    .add(new BigDecimal(quTeamNum.getSyPremiumSum())).add(new BigDecimal(quTeamNum.getJqPremiumSum()))));
+                            teamNum.setSyPremiumSum(String.valueOf(new BigDecimal(teamNum.getSyPremiumSum()).add(new BigDecimal(quTeamNum.getSyPremiumSum()))));
+                            teamNum.setJqPremiumSum(String.valueOf(new BigDecimal(teamNum.getJqPremiumSum()).add(new BigDecimal(quTeamNum.getJqPremiumSum()))));
+                            teamNum.setQuoteNum(String.valueOf(new BigDecimal(teamNum.getQuoteNum()).add(new BigDecimal(quTeamNum.getCount()))));
+                            teamNum.setHasInsuredNum(String.valueOf(new BigDecimal(teamNum.getHasInsuredNum()).add(new BigDecimal(quTeamNum.getCount()))));
+                        }
+                        if (quTeamNum.getOrderStatus().equals("2")) {
+                            teamNum.setSubmitNum(String.valueOf(new BigDecimal(teamNum.getSubmitNum()).add(new BigDecimal(quTeamNum.getCount()))));
+                            teamNum.setQuoteNum(String.valueOf(new BigDecimal(teamNum.getQuoteNum()).add(new BigDecimal(quTeamNum.getCount()))));
+                        }
+                        if (quTeamNum.getOrderStatus().equals("1")) {
+                            teamNum.setQuoteNum(String.valueOf(new BigDecimal(teamNum.getQuoteNum()).add(new BigDecimal(quTeamNum.getCount()))));
+                        }
+                    }
+                });
+            }
+
+            if (flag == 1) {
+                teamNum.setDeptId(v.get(0).getDeptId());
+                teamNum.setDeptName(v.get(0).getDeptName());
+            } else if (flag == 2) {
+                teamNum.setUserId(v.get(0).getUserId());
+                teamNum.setUserName(v.get(0).getUserName());
+            }
+
+            quTeamNums.add(teamNum);
+        });
+
+        List<QuTeamNum> collect1 = quTeamNums.stream().skip((quTeamNumDto.getPageNo() - 1) * quTeamNumDto.getPageSize()).limit(quTeamNumDto.getPageSize()).
+                collect(Collectors.toList());
+        IPage<QuTeamNum> page = new Page<>(quTeamNumDto.getPageNo(), quTeamNumDto.getPageSize());
+        page.setRecords(collect1);
+        page.setTotal(quTeamNums.size());
+        return page;
     }
 
 
@@ -456,7 +511,7 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
         if (StringUtils.isNotEmpty(sysUser.getReferrerId())) {
             //推荐人
             esmUserReferrerService.addReferrer(sysUser.getReferrerId(), userId);
-        }else if("20".equals(sysUser.getRoleId()) || "21".equals(sysUser.getRoleId())){
+        } else if ("20".equals(sysUser.getRoleId()) || "21".equals(sysUser.getRoleId())) {
             //如果是 团队长或代码人 并且没有推荐人 则默认推荐人为自己
             esmUserReferrerService.addReferrer(sysUser.getId(), userId);
         }

+ 1 - 1
src/main/java/com/ydtech/modules/fnc/dao/InsPlySettleMapper.java

@@ -26,7 +26,7 @@ public interface InsPlySettleMapper extends BaseMapper<InsPlySettle> {
     String getMaxBatch(InsPlySettle insPlySettle);
 
     @Select({"<script>"," " +
-            "select a.*,b.`name` dept_name ,c.`name` companyName,d.hxamount ,d.commissionHxamount , d.otherHxamount " +
+            "select a.*,b.`name` dept_name ,c.`name` companyName,ifnull(d.hxamount,0) hxamount ,ifnull(d.commissionHxamount,0) commissionHxamount , ifnull(d.otherHxamount,0) otherHxamount " +
             "from ins_ply_settle a " +
             "left join sys_dept b on a.dept_id=b.id " +
             "left join esm_ins_company c on a.company_id=c.id " +

+ 117 - 42
src/main/java/com/ydtech/modules/fnc/service/impl/InsFeeAuditServiceImpl.java

@@ -85,16 +85,18 @@ public class InsFeeAuditServiceImpl extends ServiceImpl<InsFeeAuditMapper, InsFe
 
         InsOrders order=insOrdersMapper.selectById(orderNo);
         InsFeeOrder insFeeOrder=insFeeOrderService.getByInsOrderNo(insFeeAudit.getInsOrderNo());
+        InsAreaCompany insAreaCompany=insAreaCompanyService.getById(insFeeAudit.getInsOrderNo());
+
         //bigdecimal为null时设置为0
         handleBigdecimal(insFeeOrder);
         //生成保司费用(应收费用)
-        gene_orderIncome( order, insFeeOrder);
+        gene_orderIncome( order, insFeeOrder,insAreaCompany);
         //生成机构费用
-        gene_deptfee( order, insFeeOrder);
+        gene_deptfee( order, insFeeOrder,insAreaCompany);
         //生成分销费用
-        saveRetail(order,insFeeOrder);
+        saveRetail(order,insFeeOrder,insAreaCompany);
         //个代费用生成
-        saveInsCompanyFee(order,insFeeOrder);
+        saveInsCompanyFee(order,insFeeOrder,insAreaCompany);
     }
 
     private void handleBigdecimal(InsFeeOrder insFeeOrder)
@@ -139,8 +141,8 @@ public class InsFeeAuditServiceImpl extends ServiceImpl<InsFeeAuditMapper, InsFe
      * @param insFeeOrder
      * @throws Exception
      */
-    private void gene_orderIncome( InsOrders order, InsFeeOrder insFeeOrder) throws Exception{
-        InsAreaCompanyQueryDto plyDto=insAreaCompanyService.getByOrderNo(order.getOrderno()).get(0);
+    private void gene_orderIncome( InsOrders order, InsFeeOrder insFeeOrder,InsAreaCompany plyDto) throws Exception{
+
         InsPlyIncome insPlyIncome =new InsPlyIncome();
         insPlyIncome.setOrderno(order.getOrderno());
         insPlyIncome.setDeptId(order.getDeptid());
@@ -181,13 +183,29 @@ public class InsFeeAuditServiceImpl extends ServiceImpl<InsFeeAuditMapper, InsFe
      * @param insFeeOrder
      * @throws Exception
      */
-    private void gene_deptfee( InsOrders order, InsFeeOrder insFeeOrder) throws Exception{
+    private void gene_deptfee( InsOrders order, InsFeeOrder insFeeOrder,InsAreaCompany plyDto) throws Exception{
         InsDeptFee deptFee = new InsDeptFee();
         deptFee.setOrderno(order.getOrderno());
         deptFee.setQuoteno(insFeeOrder.getInsOrderNo());
-        deptFee.setAgreeid(insFeeOrder.getAgreementId());
+        deptFee.setAgreeid(plyDto.getAgreementId());
         deptFee.setAuditstatus("1");
         deptFee.setSettlestatus("0");
+        if(StringUtils.isNotEmpty(plyDto.getJqpolicyno())){
+            deptFee.setPolicyno(plyDto.getJqpolicyno());
+            deptFee.setRiskcode("交强");
+            deptFee.setLicenseno(order.getLicenseno());
+            geneInsDeptFee(order, insFeeOrder, deptFee);
+        }
+        if(StringUtils.isNotEmpty(plyDto.getSypolicyno())){
+            deptFee.setPolicyno(plyDto.getSypolicyno());
+            deptFee.setRiskcode("商业");
+            deptFee.setLicenseno(order.getLicenseno());
+            geneInsDeptFee(order, insFeeOrder, deptFee);
+        }
+
+    }
+
+    private void geneInsDeptFee(InsOrders order, InsFeeOrder insFeeOrder, InsDeptFee deptFee) {
         if (insFeeOrder.getFirstDeptPremiums().doubleValue() > 0) {
             deptFee.setComcode(order.getDeptid().substring(0, 2));  //99140302M01D01
             deptFee.setKeeprate(insFeeOrder.getFirstDeptProportion().doubleValue() * 0.01);
@@ -231,9 +249,10 @@ public class InsFeeAuditServiceImpl extends ServiceImpl<InsFeeAuditMapper, InsFe
      * @param order
      * @return
      */
-    public void saveRetail(InsOrders order,InsFeeOrder insFeeOrder) throws Exception{
+    public void saveRetail(InsOrders order,InsFeeOrder insFeeOrder,InsAreaCompany plyDto) throws Exception{
         List<String> userlist=new ArrayList<>();
         esmUserReferrerService.getUpUser(order.getUserid(),userlist);
+
         //userlist:包括本人在内向上所有人
         if(userlist.size()-1>0){
             if(userlist.size()-1>=1
@@ -245,13 +264,27 @@ public class InsFeeAuditServiceImpl extends ServiceImpl<InsFeeAuditMapper, InsFe
                 commission.setQuoteno(insFeeOrder.getInsOrderNo());
                 commission.setRefereescode(user.getId());
                 commission.setRefereesname(user.getName());
-                commission.setCommissionrate(insFeeOrder.getThirdRetailProportion().doubleValue()* 0.01);
-                commission.setCommissionamount(insFeeOrder.getThirdRetailPremiums().doubleValue());
                 commission.setLevel("3");
                 commission.setAuditstatus("1");  //0未审核 1已审核
                 commission.setSettlestatus("0"); //0未结算 1已结算
                 commission.setInsuredtime(DateUtil.getDateFormat(new Date(),DateUtil.FULL_TIME_SPLIT_PATTERN)); //承保确认时间
-                insCommissionService.insert(commission);
+                if(StringUtils.isNotEmpty(plyDto.getJqpolicyno())){
+                    commission.setPolicyno(plyDto.getJqpolicyno());
+                    commission.setRiskcode("交强");
+                    commission.setLicenseno(order.getLicenseno());
+                    commission.setCommissionrate(insFeeOrder.getThirdRetailProportion().doubleValue()* 0.01);
+                    commission.setCommissionamount(insFeeOrder.getJqNoTaxPremium().multiply(insFeeOrder.getThirdRetailProportion()).divide(new BigDecimal(100)).doubleValue());
+                    insCommissionService.insert(commission);
+                }
+                if(StringUtils.isNotEmpty(plyDto.getSypolicyno())){
+                    commission.setPolicyno(plyDto.getSypolicyno());
+                    commission.setRiskcode("商业");
+                    commission.setLicenseno(order.getLicenseno());
+                    commission.setCommissionrate(insFeeOrder.getThirdRetailProportion().doubleValue()* 0.01);
+                    commission.setCommissionamount(insFeeOrder.getSyNoTaxPremium().multiply(insFeeOrder.getThirdRetailProportion()).divide(new BigDecimal(100)).doubleValue());
+                    insCommissionService.insert(commission);
+                }
+
             }
             if(userlist.size()-1>=2
                     &&insFeeOrder.getSecondRetailPremiums().doubleValue()>0)
@@ -262,14 +295,28 @@ public class InsFeeAuditServiceImpl extends ServiceImpl<InsFeeAuditMapper, InsFe
                 commission.setQuoteno(insFeeOrder.getInsOrderNo());
                 commission.setRefereescode(user.getId());
                 commission.setRefereesname(user.getName());
-                commission.setCommissionrate(insFeeOrder.getSecondRetailProportion().doubleValue()* 0.01);
-                commission.setCommissionamount(insFeeOrder.getSecondRetailPremiums().doubleValue());
+//                commission.setCommissionrate(insFeeOrder.getSecondRetailProportion().doubleValue()* 0.01);
+//                commission.setCommissionamount(insFeeOrder.getSecondRetailPremiums().doubleValue());
                 commission.setLevel("2");
                 commission.setAuditstatus("1");  //0未审核 1已审核
                 commission.setSettlestatus("0"); //0未结算 1已结算
                 commission.setInsuredtime(DateUtil.getDateFormat(new Date(),DateUtil.FULL_TIME_SPLIT_PATTERN)); //承保确认时间
-
-                insCommissionService.insert(commission);
+                if(StringUtils.isNotEmpty(plyDto.getJqpolicyno())){
+                    commission.setPolicyno(plyDto.getJqpolicyno());
+                    commission.setRiskcode("交强");
+                    commission.setLicenseno(order.getLicenseno());
+                    commission.setCommissionrate(insFeeOrder.getSecondRetailProportion().doubleValue()* 0.01);
+                    commission.setCommissionamount(insFeeOrder.getJqNoTaxPremium().multiply(insFeeOrder.getSecondRetailProportion()).divide(new BigDecimal(100)).doubleValue());
+                    insCommissionService.insert(commission);
+                }
+                if(StringUtils.isNotEmpty(plyDto.getSypolicyno())){
+                    commission.setPolicyno(plyDto.getSypolicyno());
+                    commission.setRiskcode("商业");
+                    commission.setLicenseno(order.getLicenseno());
+                    commission.setCommissionrate(insFeeOrder.getSecondRetailProportion().doubleValue()* 0.01);
+                    commission.setCommissionamount(insFeeOrder.getSyNoTaxPremium().multiply(insFeeOrder.getSecondRetailProportion()).divide(new BigDecimal(100)).doubleValue());
+                    insCommissionService.insert(commission);
+                }
             }
             if(userlist.size()-1>=3
                     &&insFeeOrder.getFirstRetailPremiums().doubleValue()>0)
@@ -280,14 +327,28 @@ public class InsFeeAuditServiceImpl extends ServiceImpl<InsFeeAuditMapper, InsFe
                 commission.setQuoteno(insFeeOrder.getInsOrderNo());
                 commission.setRefereescode(user.getId());
                 commission.setRefereesname(user.getName());
-                commission.setCommissionrate(insFeeOrder.getFirstRetailProportion().doubleValue()* 0.01);
-                commission.setCommissionamount(insFeeOrder.getFirstRetailPremiums().doubleValue());
+//                commission.setCommissionrate(insFeeOrder.getFirstRetailProportion().doubleValue()* 0.01);
+//                commission.setCommissionamount(insFeeOrder.getFirstRetailPremiums().doubleValue());
                 commission.setLevel("1");
                 commission.setAuditstatus("1");  //0未审核 1已审核
                 commission.setSettlestatus("0"); //0未结算 1已结算
                 commission.setInsuredtime(DateUtil.getDateFormat(new Date(),DateUtil.FULL_TIME_SPLIT_PATTERN)); //承保确认时间
-
-                insCommissionService.insert(commission);
+                if(StringUtils.isNotEmpty(plyDto.getJqpolicyno())){
+                    commission.setPolicyno(plyDto.getJqpolicyno());
+                    commission.setRiskcode("交强");
+                    commission.setLicenseno(order.getLicenseno());
+                    commission.setCommissionrate(insFeeOrder.getFirstRetailProportion().doubleValue()* 0.01);
+                    commission.setCommissionamount(insFeeOrder.getJqNoTaxPremium().multiply(insFeeOrder.getFirstRetailProportion()).divide(new BigDecimal(100)).doubleValue());
+                    insCommissionService.insert(commission);
+                }
+                if(StringUtils.isNotEmpty(plyDto.getSypolicyno())){
+                    commission.setPolicyno(plyDto.getSypolicyno());
+                    commission.setRiskcode("商业");
+                    commission.setLicenseno(order.getLicenseno());
+                    commission.setCommissionrate(insFeeOrder.getFirstRetailProportion().doubleValue()* 0.01);
+                    commission.setCommissionamount(insFeeOrder.getSyNoTaxPremium().multiply(insFeeOrder.getFirstRetailProportion()).divide(new BigDecimal(100)).doubleValue());
+                    insCommissionService.insert(commission);
+                }
             }
         }
     }
@@ -299,31 +360,14 @@ public class InsFeeAuditServiceImpl extends ServiceImpl<InsFeeAuditMapper, InsFe
      * @param insFeeOrder
      * @throws Exception
      */
-    public void saveInsCompanyFee(InsOrders order,InsFeeOrder insFeeOrder) throws Exception {
-        InsAreaCompany insAreaCompany=insAreaCompanyService.getById(insFeeOrder.getInsOrderNo());
+    public void saveInsCompanyFee(InsOrders order,InsFeeOrder insFeeOrder,InsAreaCompany plyDto) throws Exception {
 
         InsCompanyFee insCompanyFee = new InsCompanyFee();
         insCompanyFee.setOrderno(order.getOrderno());
-        BigDecimal dept_rate=insFeeOrder.getFirstDeptProportion()
-                .add(insFeeOrder.getSecondDeptProportion())
-                .add(insFeeOrder.getThirdDeptProportion())
-                .add(insFeeOrder.getForthDeptProportion())
-                .add(insFeeOrder.getFifthDeptProportion());
-        BigDecimal retail_rate=insFeeOrder.getFirstRetailProportion()
-                .add(insFeeOrder.getSecondRetailProportion())
-                .add(insFeeOrder.getThirdRetailProportion());
-        //交强费用比例=交强险费用比例-五级机构管理费比例-三级分销比例
-        insCompanyFee.setFeerate(insFeeOrder.getJqCostsProportion().subtract(dept_rate).subtract(retail_rate).doubleValue());
-        //商业费用比例=商业险费用比例-五级机构管理费比例-三级分销比例
-        insCompanyFee.setDisrate(insFeeOrder.getSyCostsProportion().subtract(dept_rate).subtract(retail_rate).doubleValue());
-        insCompanyFee.setFeeamount(insFeeOrder.getJqNoTaxPremium().multiply(insFeeOrder.getJqCostsProportion().subtract(dept_rate).subtract(retail_rate)).divide(new BigDecimal(100)).setScale(2,BigDecimal.ROUND_HALF_UP).doubleValue());
-        insCompanyFee.setDisamount(insFeeOrder.getSyNoTaxPremium().multiply(insFeeOrder.getSyCostsProportion().subtract(dept_rate).subtract(retail_rate)).divide(new BigDecimal(100)).setScale(2,BigDecimal.ROUND_HALF_UP).doubleValue());
-        insCompanyFee.setJqpremium(insFeeOrder.getJqNoTaxPremium().doubleValue());
-        insCompanyFee.setSypremium(insFeeOrder.getSyNoTaxPremium().doubleValue());
         insCompanyFee.setFrameNo(order.getFrameno());
         insCompanyFee.setLicenseNo(order.getLicenseno());
-        insCompanyFee.setInscompany(insAreaCompany.getCompanyId());
-        insCompanyFee.setAgreeid(insFeeOrder.getAgreementId());
+        insCompanyFee.setInscompany(plyDto.getCompanyId());
+        insCompanyFee.setAgreeid(plyDto.getAgreementId());
         insCompanyFee.setUserid(order.getUserid());
         insCompanyFee.setUsername(order.getUsername());
         insCompanyFee.setDeptid(order.getDeptid());
@@ -331,7 +375,38 @@ public class InsFeeAuditServiceImpl extends ServiceImpl<InsFeeAuditMapper, InsFe
         insCompanyFee.setSettletype("B");
         insCompanyFee.setSettlestatus("0");
         insCompanyFee.setCreatetime(DateUtil.getDateFormat(new Date(),DateUtil.FULL_TIME_SPLIT_PATTERN));
-        //保存业务员费用
-        insCompanyFeeService.insert(insCompanyFee);
+
+        BigDecimal dept_rate=insFeeOrder.getFirstDeptProportion()
+                .add(insFeeOrder.getSecondDeptProportion())
+                .add(insFeeOrder.getThirdDeptProportion())
+                .add(insFeeOrder.getForthDeptProportion())
+                .add(insFeeOrder.getFifthDeptProportion());
+        BigDecimal retail_rate=insFeeOrder.getFirstRetailProportion()
+                .add(insFeeOrder.getSecondRetailProportion())
+                .add(insFeeOrder.getThirdRetailProportion());
+        if(StringUtils.isNotEmpty(plyDto.getJqpolicyno())){
+            insCompanyFee.setPolicyno(plyDto.getJqpolicyno());
+            insCompanyFee.setRiskcode("交强");
+            //交强费用比例=交强险费用比例-五级机构管理费比例-三级分销比例
+            insCompanyFee.setFeerate(insFeeOrder.getJqCostsProportion().subtract(dept_rate).subtract(retail_rate).doubleValue());
+            insCompanyFee.setFeeamount(insFeeOrder.getJqNoTaxPremium().multiply(insFeeOrder.getJqCostsProportion().subtract(dept_rate).subtract(retail_rate)).divide(new BigDecimal(100)).setScale(2,BigDecimal.ROUND_HALF_UP).doubleValue());
+            insCompanyFee.setJqpremium(insFeeOrder.getJqNoTaxPremium().doubleValue());
+            //保存业务员费用
+            insCompanyFeeService.insert(insCompanyFee);
+        }
+        if(StringUtils.isNotEmpty(plyDto.getSypolicyno())){
+            insCompanyFee.setPolicyno(plyDto.getSypolicyno());
+            insCompanyFee.setRiskcode("商业");
+            insCompanyFee.setFeerate(0);
+            insCompanyFee.setFeeamount(0);
+            insCompanyFee.setJqpremium(0);
+            //商业费用比例=商业险费用比例-五级机构管理费比例-三级分销比例
+            insCompanyFee.setDisrate(insFeeOrder.getSyCostsProportion().subtract(dept_rate).subtract(retail_rate).doubleValue());
+            insCompanyFee.setDisamount(insFeeOrder.getSyNoTaxPremium().multiply(insFeeOrder.getSyCostsProportion().subtract(dept_rate).subtract(retail_rate)).divide(new BigDecimal(100)).setScale(2,BigDecimal.ROUND_HALF_UP).doubleValue());
+            insCompanyFee.setSypremium(insFeeOrder.getSyNoTaxPremium().doubleValue());
+            //保存业务员费用
+            insCompanyFeeService.insert(insCompanyFee);
+        }
+
     }
 }

+ 145 - 105
src/main/java/com/ydtech/modules/ins/controller/InsPayApplyController.java

@@ -6,7 +6,9 @@ import com.ydtech.core.page.PageRequest;
 import com.ydtech.core.page.PageResult;
 import com.ydtech.modules.admin.model.SysDept;
 import com.ydtech.modules.admin.model.SysUser;
+import com.ydtech.modules.admin.model.SysUserInfo;
 import com.ydtech.modules.admin.service.SysDeptService;
+import com.ydtech.modules.admin.service.SysUserInfoService;
 import com.ydtech.modules.admin.service.SysUserService;
 import com.ydtech.modules.base.controller.BaseController;
 import com.ydtech.modules.esm.model.vo.ExtensionVO;
@@ -48,6 +50,8 @@ public class InsPayApplyController extends BaseController {
     @Autowired
     SysUserService sysUserService;
     @Autowired
+    SysUserInfoService sysUserInfoService;
+    @Autowired
     SysDeptService sysDeptService;
     @Autowired
     InsCommissionService insCommissionService;
@@ -117,6 +121,39 @@ public class InsPayApplyController extends BaseController {
         return HttpResult.ok(pageResult);
     }
 
+    /**
+     * 人员账户分页查询
+     *
+     * @param pageRequest
+     * @return
+     */
+    @PostMapping(value = "/findPageAccount")
+    public HttpResult findPageAccount(@RequestBody PageRequest pageRequest) {
+
+        int pageNum = pageRequest.getPageNum();
+        int pageSize = pageRequest.getPageSize();
+
+
+        String userid = pageRequest.getColumnFilterValue(pageRequest, "userid"); // 出单员
+        String deptid = pageRequest.getColumnFilterValue(pageRequest, "deptid"); // 所属机构
+
+        StringBuffer whereStr = new StringBuffer(" where 1=1");
+        ArrayList array = new ArrayList();
+
+        if (!StringUtils.isEmpty(userid)) {
+            whereStr.append(" and userid=?");
+            array.add(userid);
+        }
+        if (!StringUtils.isEmpty(deptid)) {
+            whereStr.append(" and deptid like ?");
+            array.add(deptid + "%");
+        }
+
+        PageResult pageResult = insPayApplyService.selectAccountPaging(pageNum, pageSize, whereStr.toString(), array.toArray());
+
+        return HttpResult.ok(pageResult);
+    }
+
     /**
      * 查询提现详情
      *
@@ -270,7 +307,7 @@ public class InsPayApplyController extends BaseController {
 
         AccountVo account = new AccountVo();
         //账户总金额
-        double sumAmount = insCommissionService.sumAmount(" where t.refereescode=? and t.auditstatus=?", new Object[]{userid, "1"});
+        double sumAmount = insCommissionService.sumAmount(" where t.refereescode=?", new Object[]{userid});
         //已提现金额
         double totalAmount = insPayApplyService.sumAmount(" where t.userid=? and t.applytype=?", new Object[]{userid, "B"});
         //可提现余额
@@ -293,58 +330,60 @@ public class InsPayApplyController extends BaseController {
         return httpResult;
     }
 
-//    /**
-//     * 推广费提现申请
-//     *
-//     * @param userid
-//     * @param amount
-//     * @return
-//     */
-//    @PostMapping(value = "/extendApply")
-//    public HttpResult extendApply(@RequestParam String userid, @RequestParam double amount) {
-//        HttpResult httpResult = new HttpResult();
-//        //推广账户总金额
-//        double sumAmount = insCommissionService.sumAmount(" where t.refereescode=? and t.auditstatus=?", new Object[]{userid, "1"});
-//        //已提现金额
-//        double totalAmount = insPayApplyService.sumAmount(" where t.userid=? and t.applytype=?", new Object[]{userid, "B"});
-//        double accountBalance = sumAmount - totalAmount;
-//
-//        if (amount > accountBalance) {
-//            return HttpResult.error("可提现余额不足");
-//        }
-//        InsPayApply apply = new InsPayApply();
-//        String applyno = IdGenerate.nextId();
-//        SysUser user = sysUserService.getById(userid);
-//        if (user == null) {
-//            httpResult.setMsg("userId不存在");
-//            return httpResult;
-//        }
-//        apply.setApplyno(applyno);
-//        apply.setUserid(userid);
-//        apply.setUsername(user.getName());
-//        apply.setDeptid(user.getDeptId());
-//        SysDept dept = sysDeptService.getById(user.getDeptId());
-//        apply.setDeptname(dept == null ? "" : dept.getName());
-//        BigDecimal decimal = new BigDecimal(accountBalance);
-//        decimal = decimal.setScale(2, BigDecimal.ROUND_HALF_UP);
-//        apply.setAccountbalance(decimal.doubleValue());
-//        apply.setApplyamount(amount);
-//        decimal = new BigDecimal(accountBalance - amount);
-//        decimal = decimal.setScale(2, BigDecimal.ROUND_HALF_UP);
-//        apply.setBalance(decimal.doubleValue());
-//        apply.setDisrate("");
-//        EsmUserInternal userInternal = esmUserInternalService.getById(userid);
-//        apply.setBankname(userInternal.getBankname());
-//        apply.setAccountno(userInternal.getAccountno());
-//        apply.setApplystatus("0"); //0申请中 1支付中 2已支付
-//        apply.setApplytype("B");  //A跟单绩效  B推广佣金
-//        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
-//        apply.setCreatetime(sdf.format(new Date()));
-//
-//        insPayApplyService.insert(apply);
-//
-//        return HttpResult.ok("保存成功");
-//    }
+    /**
+     * 推广费提现申请
+     *
+     * @param userid
+     * @param amount
+     * @return
+     */
+    @PostMapping(value = "/extendApply")
+    public HttpResult extendApply(@RequestParam String userid, @RequestParam double amount) {
+        HttpResult httpResult = new HttpResult();
+        //推广账户总金额
+        double sumAmount = insCommissionService.sumAmount(" where t.refereescode=?", new Object[]{userid});
+        //已提现金额
+        double totalAmount = insPayApplyService.sumAmount(" where t.userid=? and t.applytype=?", new Object[]{userid, "B"});
+        double accountBalance = sumAmount - totalAmount;
+
+        if (amount > accountBalance) {
+            return HttpResult.error("可提现余额不足");
+        }
+        InsPayApply apply = new InsPayApply();
+        String applyno = IdGenerate.nextId();
+        SysUser user = sysUserService.getById(userid);
+        if (user == null) {
+            httpResult.setMsg("userId不存在");
+            return httpResult;
+        }
+        apply.setApplyno(applyno);
+        apply.setUserid(userid);
+        apply.setUsername(user.getName());
+        apply.setDeptid(user.getDeptId());
+        SysDept dept = sysDeptService.getById(user.getDeptId());
+        apply.setDeptname(dept == null ? "" : dept.getName());
+        BigDecimal decimal = new BigDecimal(accountBalance);
+        decimal = decimal.setScale(2, BigDecimal.ROUND_HALF_UP);
+        apply.setAccountbalance(decimal.doubleValue());
+        apply.setApplyamount(amount);
+        decimal = new BigDecimal(accountBalance - amount);
+        decimal = decimal.setScale(2, BigDecimal.ROUND_HALF_UP);
+        apply.setBalance(decimal.doubleValue());
+        apply.setDisrate("");
+
+        //查询详情信息
+        SysUserInfo userInfo = sysUserInfoService.getById(userid);
+        apply.setBankname(userInfo.getBankName());
+        apply.setAccountno(userInfo.getAccountno());
+        apply.setApplystatus("0"); //0申请中 1支付中 2已支付
+        apply.setApplytype("B");  //A跟单绩效  B推广佣金
+        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+        apply.setCreatetime(sdf.format(new Date()));
+
+        insPayApplyService.insert(apply);
+
+        return HttpResult.ok("保存成功");
+    }
 
     /**
      * 提现账户
@@ -358,7 +397,7 @@ public class InsPayApplyController extends BaseController {
         AccountVo account = new AccountVo();
 
         //账户总金额
-        double sumAmount = insCompanyFeeService.sumAmount(" where t.userid=? and t.settlestatus=?", new Object[]{userid, "1"});
+        double sumAmount = insCompanyFeeService.sumAmount(" where t.userid=?", new Object[]{userid});
         //已提现金额
         double totalAmount = insPayApplyService.sumAmount(" where t.userid=? and t.applytype=?", new Object[]{userid, "A"});
         //可提现余额
@@ -378,57 +417,58 @@ public class InsPayApplyController extends BaseController {
         return httpResult;
     }
 
-//    /**
-//     * 提现申请
-//     *
-//     * @param userid
-//     * @param amount
-//     * @return
-//     */
-//    @PostMapping(value = "/applyPay")
-//    public HttpResult applyPay(@RequestParam String userid, @RequestParam double amount) {
-//        HttpResult httpResult = new HttpResult();
-//        //账户总金额
-//        double sumAmount = insCompanyFeeService.sumAmount(" where t.userid=? and t.settlestatus=?", new Object[]{userid, "1"});
-//        //已提现金额
-//        double applyAmount = insPayApplyService.sumAmount(" where t.userid=? and t.applytype=?", new Object[]{userid, "A"});
-//        double accountBalance = sumAmount - applyAmount;
-//        if (amount > accountBalance) {
-//            return HttpResult.error("可提现余额不足");
-//        }
-//        InsPayApply apply = new InsPayApply();
-//        String applyno = IdGenerate.nextId();
-//        SysUser user = sysUserService.getById(userid);
-//        if (user == null) {
-//            httpResult.setMsg("userId不存在");
-//            return httpResult;
-//        }
-//        apply.setApplyno(applyno);
-//        apply.setUserid(userid);
-//        apply.setUsername(user.getName());
-//        apply.setDeptid(user.getDeptId());
-//        SysDept dept = sysDeptService.getById(user.getDeptId());
-//        apply.setDeptname(dept == null ? "" : dept.getName());
-//        BigDecimal decimal = new BigDecimal(accountBalance);
-//        decimal = decimal.setScale(2, BigDecimal.ROUND_HALF_UP);
-//        apply.setAccountbalance(decimal.doubleValue());
-//        apply.setApplyamount(amount);
-//        decimal = new BigDecimal(accountBalance - amount);
-//        decimal = decimal.setScale(2, BigDecimal.ROUND_HALF_UP);
-//        apply.setBalance(decimal.doubleValue());
-//        apply.setDisrate("");
-//        EsmUserInternal userInternal = esmUserInternalService.getById(userid);
-//        apply.setBankname(userInternal.getBankname());
-//        apply.setAccountno(userInternal.getAccountno());
-//        apply.setApplystatus("0"); //0申请中 1支付中 2已支付
-//        apply.setApplytype("A");  //A跟单绩效  B推广佣金
-//        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
-//        apply.setCreatetime(sdf.format(new Date()));
-//
-//        insPayApplyService.insert(apply);
-//
-//        return HttpResult.ok("保存成功");
-//    }
+    /**
+     * 提现申请
+     *
+     * @param userid
+     * @param amount
+     * @return
+     */
+    @PostMapping(value = "/applyPay")
+    public HttpResult applyPay(@RequestParam String userid, @RequestParam double amount) {
+        HttpResult httpResult = new HttpResult();
+        //账户总金额
+        double sumAmount = insCompanyFeeService.sumAmount(" where t.userid=? ", new Object[]{userid});
+        //已提现金额
+        double applyAmount = insPayApplyService.sumAmount(" where t.userid=? and t.applytype=?", new Object[]{userid, "A"});
+        double accountBalance = sumAmount - applyAmount;
+        if (amount > accountBalance) {
+            return HttpResult.error("可提现余额不足");
+        }
+        InsPayApply apply = new InsPayApply();
+        String applyno = IdGenerate.nextId();
+        SysUser user = sysUserService.getById(userid);
+        if (user == null) {
+            httpResult.setMsg("userId不存在");
+            return httpResult;
+        }
+        apply.setApplyno(applyno);
+        apply.setUserid(userid);
+        apply.setUsername(user.getName());
+        apply.setDeptid(user.getDeptId());
+        SysDept dept = sysDeptService.getById(user.getDeptId());
+        apply.setDeptname(dept == null ? "" : dept.getName());
+        BigDecimal decimal = new BigDecimal(accountBalance);
+        decimal = decimal.setScale(2, BigDecimal.ROUND_HALF_UP);
+        apply.setAccountbalance(decimal.doubleValue());
+        apply.setApplyamount(amount);
+        decimal = new BigDecimal(accountBalance - amount);
+        decimal = decimal.setScale(2, BigDecimal.ROUND_HALF_UP);
+        apply.setBalance(decimal.doubleValue());
+        apply.setDisrate("");
+        //查询详情信息
+        SysUserInfo userInfo = sysUserInfoService.getById(userid);
+        apply.setBankname(userInfo.getBankName());
+        apply.setAccountno(userInfo.getAccountno());
+        apply.setApplystatus("0"); //0申请中 1支付中 2已支付
+        apply.setApplytype("A");  //A跟单绩效  B推广佣金
+        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+        apply.setCreatetime(sdf.format(new Date()));
+
+        insPayApplyService.insert(apply);
+
+        return HttpResult.ok("保存成功");
+    }
 
     /**
      * 提现审核

+ 2 - 0
src/main/java/com/ydtech/modules/ins/dao/InsPayApplyDao.java

@@ -20,6 +20,8 @@ public interface InsPayApplyDao {
 
     public PageResult selectPaging(int pageNumber, int pageSize, String whereCase, Object[] paramValues);
 
+    public PageResult selectAccountPaging(int pageNumber, int pageSize, String whereCase, Object[] paramValues);
+
     public Integer insert(InsPayApply model);
 
     public Integer update(InsPayApply model);

+ 3 - 3
src/main/java/com/ydtech/modules/ins/dao/impl/InsCommissionDaoImpl.java

@@ -118,12 +118,12 @@ public class InsCommissionDaoImpl implements InsCommissionDao {
     @Override
     public Integer insert(InsCommission model) {
 
-        String sql = "insert into ins_commission (orderno,quoteno,refereescode,refereesname,commissionrate,commissionamount,level,auditstatus,settlestatus,insuredtime) " +
-                "values ( ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) ";
+        String sql = "insert into ins_commission (orderno,policyno,licenseno,riskcode,quoteno,refereescode,refereesname,commissionrate,commissionamount,level,auditstatus,settlestatus,insuredtime) " +
+                "values ( ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) ";
 
         JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
 
-        Object[] params = new Object[]{model.getOrderno(), model.getQuoteno(), model.getRefereescode(), model.getRefereesname(), model.getCommissionrate(), model.getCommissionamount(), model.getLevel(), model.getAuditstatus(), model.getSettlestatus(), model.getInsuredtime()};
+        Object[] params = new Object[]{model.getOrderno(),model.getPolicyno(),model.getLicenseno(),model.getRiskcode(), model.getQuoteno(), model.getRefereescode(), model.getRefereesname(), model.getCommissionrate(), model.getCommissionamount(), model.getLevel(), model.getAuditstatus(), model.getSettlestatus(), model.getInsuredtime()};
 
         int out = jdbcTemplate.update(sql, params);
 

+ 3 - 3
src/main/java/com/ydtech/modules/ins/dao/impl/InsCompanyFeeDaoImpl.java

@@ -156,12 +156,12 @@ public class InsCompanyFeeDaoImpl implements InsCompanyFeeDao {
     @Override
     public Integer insert(InsCompanyFee model) {
 
-        String sql = "insert into ins_companyfee (orderno,settleno,feerate,disrate,feeamount,disamount,jqpremium,sypremium,frameNo,licenseNo,inscompany,agreeid,agreementcode,agreeprodid,producname,agreetype,settlestatus,settletime,settletype,userid,username,deptid,deptname,createtime) " +
-                "values ( ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?,?, ?, ?, ?, ?, ?,?, ?, ?) ";
+        String sql = "insert into ins_companyfee (orderno,policyno,licenseno,riskcode,settleno,feerate,disrate,feeamount,disamount,jqpremium,sypremium,frameNo,inscompany,agreeid,agreementcode,agreeprodid,producname,agreetype,settlestatus,settletime,settletype,userid,username,deptid,deptname,createtime) " +
+                "values ( ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?,?, ?, ?, ?, ?,?, ?,?, ?, ?) ";
 
         JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
 
-        Object[] params = new Object[]{model.getOrderno(), model.getSettleno(), model.getFeerate(), model.getDisrate(), model.getFeeamount(), model.getDisamount(), model.getJqpremium(), model.getSypremium(), model.getFrameNo(), model.getLicenseNo(),
+        Object[] params = new Object[]{model.getOrderno(),model.getPolicyno(),model.getLicenseNo(),model.getRiskcode(), model.getSettleno(), model.getFeerate(), model.getDisrate(), model.getFeeamount(), model.getDisamount(), model.getJqpremium(), model.getSypremium(), model.getFrameNo(),
                 model.getInscompany(), model.getAgreeid(), model.getAgreementcode(), model.getAgreeprodid(), model.getProducname(), model.getAgreetype(), model.getSettlestatus(), model.getSettletime(), model.getSettletype(), model.getUserid(), model.getUsername(), model.getDeptid(), model.getDeptname(), model.getCreatetime()};
 
         int out = jdbcTemplate.update(sql, params);

+ 3 - 3
src/main/java/com/ydtech/modules/ins/dao/impl/InsDeptFeeDaoImpl.java

@@ -155,12 +155,12 @@ public class InsDeptFeeDaoImpl implements InsDeptFeeDao {
     @Override
     public Integer insert(InsDeptFee model) {
 
-        String sql = "insert into ins_deptfee (orderno,quoteno,agreeid,agreeprodid,comlevel,comcode,keeprate,addrate,keepamount,addamount,auditstatus,settlestatus) " +
-                "values ( ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) ";
+        String sql = "insert into ins_deptfee (orderno,policyno,licenseno,riskcode,quoteno,agreeid,agreeprodid,comlevel,comcode,keeprate,addrate,keepamount,addamount,auditstatus,settlestatus) " +
+                "values ( ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) ";
 
         JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
 
-        Object[] params = new Object[]{model.getOrderno(), model.getQuoteno(), model.getAgreeid(), model.getAgreeprodid(), model.getComlevel(), model.getComcode(), model.getKeeprate(), model.getAddrate(), model.getKeepamount(), model.getAddamount(), model.getAuditstatus(), model.getSettlestatus()};
+        Object[] params = new Object[]{model.getOrderno(),model.getPolicyno(),model.getLicenseno(),model.getRiskcode(), model.getQuoteno(), model.getAgreeid(), model.getAgreeprodid(), model.getComlevel(), model.getComcode(), model.getKeeprate(), model.getAddrate(), model.getKeepamount(), model.getAddamount(), model.getAuditstatus(), model.getSettlestatus()};
 
         int out = jdbcTemplate.update(sql, params);
 

+ 48 - 0
src/main/java/com/ydtech/modules/ins/dao/impl/InsPayApplyDaoImpl.java

@@ -4,6 +4,7 @@ import com.github.drinkjava2.jdialects.Dialect;
 import com.ydtech.core.page.PageResult;
 import com.ydtech.modules.ins.dao.InsPayApplyDao;
 import com.ydtech.modules.ins.model.InsPayApply;
+import com.ydtech.modules.ins.model.InsUserAccount;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.jdbc.core.JdbcTemplate;
 import org.springframework.jdbc.core.RowMapper;
@@ -58,6 +59,30 @@ public class InsPayApplyDaoImpl implements InsPayApplyDao {
         }
     }
 
+    public static class InsUserAccountRowMapper implements RowMapper {
+        public InsUserAccount mapRow(ResultSet resultSet, int rowNum) throws SQLException {
+            InsUserAccount model = new InsUserAccount();
+
+            model.setMobile(resultSet.getString("mobile"));
+            model.setUserid(resultSet.getString("userid"));
+            model.setUsername(resultSet.getString("username"));
+            model.setDeptid(resultSet.getString("deptid"));
+            model.setDeptname(resultSet.getString("deptname"));
+            model.setTotalfee(resultSet.getDouble("totalfee"));
+            model.setFxtotalfee(resultSet.getDouble("fxtotalfee"));
+            model.setApplyfee(resultSet.getDouble("applyfee"));
+            model.setPayamount(resultSet.getDouble("payamount"));
+            model.setApply(resultSet.getDouble("apply"));
+            model.setBalance(resultSet.getDouble("balance"));
+            model.setFxapplyfee(resultSet.getDouble("fxapplyfee"));
+            model.setFxpayamount(resultSet.getDouble("fxpayamount"));
+            model.setFxapply(resultSet.getDouble("fxapply"));
+            model.setFxbalance(resultSet.getDouble("fxbalance"));
+
+            return model;
+        }
+    }
+
     @Override
     public InsPayApply selectByPk(String orderno) {
         String sql = " select t.applyno,t.userid,t.username,t.deptid,t.deptname,t.accountbalance,t.applyamount,t.balance,t.disrate,t.bankname,t.accountno,t.createtime,t.paytime,t.auditid,t.auditname,t.applystatus,t.applytype from ins_pay_apply t  where applyno=? ";
@@ -124,6 +149,29 @@ public class InsPayApplyDaoImpl implements InsPayApplyDao {
         return pageResult;
     }
 
+    public PageResult selectAccountPaging(int pageNumber, int pageSize, String whereCase, Object[] paramValues) {
+
+        Dialect dialect = Dialect.guessDialect(dataSource);
+        String sql = dialect.pagin(pageNumber, pageSize, "select mobile,userid,username,deptid,deptname,totalfee,fxtotalfee,applyfee,payamount,apply,balance,fxapplyfee,fxpayamount,fxapply,fxbalance from v_user_account t  " + whereCase);
+
+        JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
+        List<InsUserAccount> recordList = jdbcTemplate.query(sql, paramValues, new InsUserAccountRowMapper());
+
+        int totalCount = countAccount(whereCase, paramValues);
+
+        PageResult pageResult = new PageResult(pageNumber, pageSize, totalCount, recordList);
+
+        return pageResult;
+    }
+
+    public Integer countAccount(String whereCase, Object[] paramValues) {
+        String sql = "select count(1) from v_user_account t " + whereCase;
+
+        JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
+
+        return jdbcTemplate.queryForObject(sql, paramValues, Integer.class);
+    }
+
 
     @Override
     public Integer insert(InsPayApply model) {

+ 6 - 79
src/main/java/com/ydtech/modules/ins/model/InsCommission.java

@@ -1,11 +1,14 @@
 package com.ydtech.modules.ins.model;
 
+import lombok.Data;
+
 /**
  * @author qinfenglong
  * @version 1.0.0
  * @description InsCommission
  * @since 2021/1/3 20:52
  */
+@Data
 public class InsCommission {
     private String orderno;
     private String quoteno;
@@ -17,84 +20,8 @@ public class InsCommission {
     private String auditstatus;
     private String settlestatus;
     private String insuredtime;
+    private String licenseno;
+    private String policyno;
+    private String riskcode;
 
-    public String getOrderno() {
-        return orderno;
-    }
-
-    public void setOrderno(String orderno) {
-        this.orderno = orderno;
-    }
-
-    public String getQuoteno() {
-        return quoteno;
-    }
-
-    public void setQuoteno(String quoteno) {
-        this.quoteno = quoteno;
-    }
-
-    public String getRefereescode() {
-        return refereescode;
-    }
-
-    public void setRefereescode(String refereescode) {
-        this.refereescode = refereescode;
-    }
-
-    public String getRefereesname() {
-        return refereesname;
-    }
-
-    public void setRefereesname(String refereesname) {
-        this.refereesname = refereesname;
-    }
-
-    public double getCommissionrate() {
-        return commissionrate;
-    }
-
-    public void setCommissionrate(double commissionrate) {
-        this.commissionrate = commissionrate;
-    }
-
-    public double getCommissionamount() {
-        return commissionamount;
-    }
-
-    public void setCommissionamount(double commissionamount) {
-        this.commissionamount = commissionamount;
-    }
-
-    public String getLevel() {
-        return level;
-    }
-
-    public void setLevel(String level) {
-        this.level = level;
-    }
-
-    public String getAuditstatus() {
-        return auditstatus;
-    }
-
-    public void setAuditstatus(String auditstatus) {
-        this.auditstatus = auditstatus;
-    }
-
-    public String getSettlestatus() {
-        return settlestatus;
-    }
-
-    public void setSettlestatus(String settlestatus) {
-        this.settlestatus = settlestatus;
-    }
-
-    public String getInsuredtime() {
-        return insuredtime;
-    }
-
-    public void setInsuredtime(String insuredtime) {
-        this.insuredtime = insuredtime;
-    }
 }

+ 5 - 192
src/main/java/com/ydtech/modules/ins/model/InsCompanyFee.java

@@ -1,11 +1,14 @@
 package com.ydtech.modules.ins.model;
 
+import lombok.Data;
+
 /**
  * @author qinfenglong
  * @version 1.0.0
  * @description InsFeeDetail
  * @since 2021/1/3 20:46
  */
+@Data
 public class InsCompanyFee {
     private String orderno;
     private double feerate;
@@ -31,196 +34,6 @@ public class InsCompanyFee {
     private String deptid;
     private String deptname;
     private String createtime;
-
-    public String getOrderno() {
-        return orderno;
-    }
-
-    public void setOrderno(String orderno) {
-        this.orderno = orderno;
-    }
-
-    public double getFeerate() {
-        return feerate;
-    }
-
-    public void setFeerate(double feerate) {
-        this.feerate = feerate;
-    }
-
-    public double getDisrate() {
-        return disrate;
-    }
-
-    public void setDisrate(double disrate) {
-        this.disrate = disrate;
-    }
-
-    public double getFeeamount() {
-        return feeamount;
-    }
-
-    public void setFeeamount(double feeamount) {
-        this.feeamount = feeamount;
-    }
-
-    public double getDisamount() {
-        return disamount;
-    }
-
-    public void setDisamount(double disamount) {
-        this.disamount = disamount;
-    }
-
-    public double getJqpremium() {
-        return jqpremium;
-    }
-
-    public void setJqpremium(double jqpremium) {
-        this.jqpremium = jqpremium;
-    }
-
-    public double getSypremium() {
-        return sypremium;
-    }
-
-    public void setSypremium(double sypremium) {
-        this.sypremium = sypremium;
-    }
-
-    public String getInscompany() {
-        return inscompany;
-    }
-
-    public void setInscompany(String inscompany) {
-        this.inscompany = inscompany;
-    }
-
-    public String getAgreeid() {
-        return agreeid;
-    }
-
-    public void setAgreeid(String agreeid) {
-        this.agreeid = agreeid;
-    }
-
-    public String getAgreementcode() {
-        return agreementcode;
-    }
-
-    public void setAgreementcode(String agreementcode) {
-        this.agreementcode = agreementcode;
-    }
-
-    public String getAgreeprodid() {
-        return agreeprodid;
-    }
-
-    public void setAgreeprodid(String agreeprodid) {
-        this.agreeprodid = agreeprodid;
-    }
-
-    public String getProducname() {
-        return producname;
-    }
-
-    public void setProducname(String producname) {
-        this.producname = producname;
-    }
-
-    public String getAgreetype() {
-        return agreetype;
-    }
-
-    public void setAgreetype(String agreetype) {
-        this.agreetype = agreetype;
-    }
-
-    public String getSettlestatus() {
-        return settlestatus;
-    }
-
-    public void setSettlestatus(String settlestatus) {
-        this.settlestatus = settlestatus;
-    }
-
-    public String getSettleno() {
-        return settleno;
-    }
-
-    public void setSettleno(String settleno) {
-        this.settleno = settleno;
-    }
-
-    public String getSettletime() {
-        return settletime;
-    }
-
-    public void setSettletime(String settletime) {
-        this.settletime = settletime;
-    }
-
-    public String getFrameNo() {
-        return frameNo;
-    }
-
-    public void setFrameNo(String frameNo) {
-        this.frameNo = frameNo;
-    }
-
-    public String getLicenseNo() {
-        return licenseNo;
-    }
-
-    public void setLicenseNo(String licenseNo) {
-        this.licenseNo = licenseNo;
-    }
-
-    public String getSettletype() {
-        return settletype;
-    }
-
-    public void setSettletype(String settletype) {
-        this.settletype = settletype;
-    }
-
-    public String getUserid() {
-        return userid;
-    }
-
-    public void setUserid(String userid) {
-        this.userid = userid;
-    }
-
-    public String getUsername() {
-        return username;
-    }
-
-    public void setUsername(String username) {
-        this.username = username;
-    }
-
-    public String getDeptid() {
-        return deptid;
-    }
-
-    public void setDeptid(String deptid) {
-        this.deptid = deptid;
-    }
-
-    public String getDeptname() {
-        return deptname;
-    }
-
-    public void setDeptname(String deptname) {
-        this.deptname = deptname;
-    }
-
-    public String getCreatetime() {
-        return createtime;
-    }
-
-    public void setCreatetime(String createtime) {
-        this.createtime = createtime;
-    }
+    private String policyno;
+    private String riskcode;
 }

+ 5 - 103
src/main/java/com/ydtech/modules/ins/model/InsDeptFee.java

@@ -1,11 +1,14 @@
 package com.ydtech.modules.ins.model;
 
+import lombok.Data;
+
 /**
  * @author qinfenglong
  * @version 1.0.0
  * @description InsDeptFee
  * @since 2021/1/3 20:49
  */
+@Data
 public class InsDeptFee {
     private String orderno;
     private String quoteno;
@@ -20,108 +23,7 @@ public class InsDeptFee {
     private String auditstatus;
     private String settlestatus;
     private String licenseno;
+    private String policyno;
+    private String riskcode;
 
-    public String getOrderno() {
-        return orderno;
-    }
-
-    public void setOrderno(String orderno) {
-        this.orderno = orderno;
-    }
-
-    public String getQuoteno() {
-        return quoteno;
-    }
-
-    public void setQuoteno(String quoteno) {
-        this.quoteno = quoteno;
-    }
-
-    public String getAgreeid() {
-        return agreeid;
-    }
-
-    public void setAgreeid(String agreeid) {
-        this.agreeid = agreeid;
-    }
-
-    public String getAgreeprodid() {
-        return agreeprodid;
-    }
-
-    public void setAgreeprodid(String agreeprodid) {
-        this.agreeprodid = agreeprodid;
-    }
-
-    public String getComlevel() {
-        return comlevel;
-    }
-
-    public void setComlevel(String comlevel) {
-        this.comlevel = comlevel;
-    }
-
-    public String getComcode() {
-        return comcode;
-    }
-
-    public void setComcode(String comcode) {
-        this.comcode = comcode;
-    }
-
-    public double getKeeprate() {
-        return keeprate;
-    }
-
-    public void setKeeprate(double keeprate) {
-        this.keeprate = keeprate;
-    }
-
-    public double getAddrate() {
-        return addrate;
-    }
-
-    public void setAddrate(double addrate) {
-        this.addrate = addrate;
-    }
-
-    public double getKeepamount() {
-        return keepamount;
-    }
-
-    public void setKeepamount(double keepamount) {
-        this.keepamount = keepamount;
-    }
-
-    public double getAddamount() {
-        return addamount;
-    }
-
-    public void setAddamount(double addamount) {
-        this.addamount = addamount;
-    }
-
-    public String getAuditstatus() {
-        return auditstatus;
-    }
-
-    public void setAuditstatus(String auditstatus) {
-        this.auditstatus = auditstatus;
-    }
-
-    public String getSettlestatus() {
-        return settlestatus;
-    }
-
-    public void setSettlestatus(String settlestatus) {
-        this.settlestatus = settlestatus;
-    }
-
-    public String getLicenseno() {
-        return licenseno;
-    }
-
-    public void setLicenseno(String licenseno) {
-        this.licenseno = licenseno;
-    }
 }

+ 140 - 0
src/main/java/com/ydtech/modules/ins/model/InsUserAccount.java

@@ -0,0 +1,140 @@
+package com.ydtech.modules.ins.model;
+
+public class InsUserAccount {
+
+    private String userid;
+    private String username;
+    private String mobile;
+    private String deptid;
+    private String deptname;
+    private double totalfee;
+    private double fxtotalfee;
+    private double applyfee;
+    private double payamount;
+    private double apply;
+    private double balance;
+    private double fxapplyfee;
+    private double fxpayamount;
+    private double fxapply;
+    private double fxbalance;
+
+    public String getUserid() {
+        return userid;
+    }
+
+    public void setUserid(String userid) {
+        this.userid = userid;
+    }
+
+    public String getUsername() {
+        return username;
+    }
+
+    public void setUsername(String username) {
+        this.username = username;
+    }
+
+    public String getDeptid() {
+        return deptid;
+    }
+
+    public void setDeptid(String deptid) {
+        this.deptid = deptid;
+    }
+
+    public String getDeptname() {
+        return deptname;
+    }
+
+    public void setDeptname(String deptname) {
+        this.deptname = deptname;
+    }
+
+    public double getTotalfee() {
+        return totalfee;
+    }
+
+    public void setTotalfee(double totalfee) {
+        this.totalfee = totalfee;
+    }
+
+    public double getFxtotalfee() {
+        return fxtotalfee;
+    }
+
+    public void setFxtotalfee(double fxtotalfee) {
+        this.fxtotalfee = fxtotalfee;
+    }
+
+    public double getApplyfee() {
+        return applyfee;
+    }
+
+    public void setApplyfee(double applyfee) {
+        this.applyfee = applyfee;
+    }
+
+    public double getPayamount() {
+        return payamount;
+    }
+
+    public void setPayamount(double payamount) {
+        this.payamount = payamount;
+    }
+
+    public double getApply() {
+        return apply;
+    }
+
+    public void setApply(double apply) {
+        this.apply = apply;
+    }
+
+    public double getBalance() {
+        return balance;
+    }
+
+    public void setBalance(double balance) {
+        this.balance = balance;
+    }
+
+    public double getFxapplyfee() {
+        return fxapplyfee;
+    }
+
+    public void setFxapplyfee(double fxapplyfee) {
+        this.fxapplyfee = fxapplyfee;
+    }
+
+    public double getFxpayamount() {
+        return fxpayamount;
+    }
+
+    public void setFxpayamount(double fxpayamount) {
+        this.fxpayamount = fxpayamount;
+    }
+
+    public double getFxapply() {
+        return fxapply;
+    }
+
+    public void setFxapply(double fxapply) {
+        this.fxapply = fxapply;
+    }
+
+    public double getFxbalance() {
+        return fxbalance;
+    }
+
+    public void setFxbalance(double fxbalance) {
+        this.fxbalance = fxbalance;
+    }
+
+    public String getMobile() {
+        return mobile;
+    }
+
+    public void setMobile(String mobile) {
+        this.mobile = mobile;
+    }
+}

+ 0 - 1
src/main/java/com/ydtech/modules/protocol/service/ITaxSourceService.java

@@ -14,7 +14,6 @@ import org.springframework.stereotype.Service;
 
 import java.util.List;
 
-@Service
 public interface ITaxSourceService extends IService<TaxSourceDto> {
 
     IPage<EsmInsCompany> getInsureCompany(Page page);

+ 296 - 0
src/main/resources/application-pre.yml

@@ -0,0 +1,296 @@
+CallbackUrl: http://39.101.143.165:8080/zm/Underwriting
+RGCallbackUrl: http://39.101.143.165:8080/zm/ArtificialUnderwriting
+Specialaccount: 99999999999999
+TAInsureUrl: https://cpf.95505.cn/tianan_cpf/access/car/insureConfirmation.mvc
+TAModelUrl: https://cpf.95505.cn/tianan_cpf/access/car/queryCarModel.mvc
+TAPayUrl: https://cpf.95505.cn/tianan_cpf/common/pay/applyPay.do
+TAQuoteUrl: https://cpf.95505.cn/tianan_cpf/access/car/premiumAccurate.mvc
+TASign: gIpr5j5haL7T8WJY7ZS54JdlYL/7PToQOy505Mr/iH3qN4SMpJJVdvxFE1/KsWH0EjDxR9qVwRC/t6kLCJo+Y1AB+FD1qNjkbLyEQ+9aeQEF2Af/4bJqUDArewHHT879o5IqzHg/lcg=
+TAUploadUrl: https://cpf.95505.cn/tianan_cpf/access/car/thirdUploadAttach.mvc
+ZMIMGUrl: https://www.echinacoal.com/singlePlatform/others/
+ZMSMSUrl: https://www.echinacoal.com/singlePlatform/prpall/
+ZMToken: THIRDSCOuloft2020052818346904zmYBSXQYTQ
+ZMUrl: https://www.echinacoal.com/singlePlatform/
+aly:
+  cbit:
+    url_pre: http://223.70.186.115:80/CBIT/API/insCBIT
+  pay:
+    html_path: /usr/local/apache-tomcat-8.5.73/webapps/html/
+    url_pre: http://baoxianzhanggui.com:8080
+apk:
+  path: /usr/local/apache-tomcat-8.5.73/webapps/app/android/
+
+
+cbit:
+  HZHB_PRIVATE_KEY: MIICeAIBADANBgkqhkiG9w0BAQEFAASCAmIwggJeAgEAAoGBAJnWpyVLFBli1kakBXUjk/SmH+X1X0kGGik0ub1MXnNUOk9NBqRQjO6G9A6wdiGzo9j9w26u5u9R6R6De843YMhgW6iIoDodexvZzInxTE+YY52iUBDCcksHYAM7uHZBtdXKovm+bEzL0nwa89Xw6zyuCm8x7enoDiVzs/75WoqrAgMBAAECgYAnEcC5U+vy1oscvaM1MKfuxhHr0Pk2DnquZFmXncGPAKEeaq15JYvlOBjbci1OOdUu0qPDhF/Z/694tGPI53+If0MkS3VpxaOYc+i/G/KQiYZIu1hjUb2F8j8xQrF60WkIsqwzjJYF9T5MCjLEZvDg9cPzFY+QpS8yl5Cbl0aOYQJBAMd+0VtQYV9q3nsZgEk4ux6Vz19SakRbk9zkz1yBUKRfWcLa1T9DleaBqGdkdZbO8v6PCtyz6Fdymq+USYWeV3UCQQDFaU5O8GeNr07J6quTgHgsbN8IV28Wp4wKmDAXCWlehkGGoTm11FOL2zxItjgmmHGyXBA08osPCojBPptOazWfAkEAmG3K04WwUPLcOZy7i7cAKpd3ErNrJP4AFcjytBDOqDl+4UbJp4QhljW9kfqNaoSH4H81YntIbQDRNpUMND9PPQJBAKWfnBuOhtLQagHt6NVvy2M6VETjVkhjeZLJ7E7njofHi+IwEgMDiLSl0wYOGz4GWB2UL+S8OP79j47Rv+si93ECQQCNqD8nMcVXIHKze7aM9c8v1yfgEdk8IpVhAbiXbRs3ANTT4Jx2M6GNBEeEAorHqO4eOTxdObNuz/RADoRnpzHk
+  HZHB_PUBLIC_KEY: MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCZ1qclSxQZYtZGpAV1I5P0ph/l9V9JBhopNLm9TF5zVDpPTQakUIzuhvQOsHYhs6PY/cNurubvUekeg3vON2DIYFuoiKA6HXsb2cyJ8UxPmGOdolAQwnJLB2ADO7h2QbXVyqL5vmxMy9J8GvPV8Os8rgpvMe3p6A4lc7P++VqKqwIDAQAB
+  ZJPT_PRIVATE_KEY: MIICdQIBADANBgkqhkiG9w0BAQEFAASCAl8wggJbAgEAAoGBAMpskeUA+JfNr0Dsrenbaox+zZwu/KwprkaN0y0bVBC/ygAOQCBx26NGrRodWM0VehWbtvUN2WEQB2EpcntfJj/bOgRumhThjHMh+2WgdnS93+Ti+ACDlt4f3vaOlZmPo3cRH4SBHvf5SLSnSl1chGMMXijyZZIvDxbxn3d4gu0uDQNw4jAgMBAAECgYAyOnqBPppw4KLqE1cQmIBcjA157c9vg9qxhTB6QSG3ciFd6QR0tQvZN5YCjpD7h4WjVkdlu+alBz+Io/MiDVVK1qt+EsqWBKSx7fAi5UFmoVPHcmw7ZrnBmQLlduo9CUbyTQKGvVlEY+lHwRjuko40jSDRJQVHCbIDc/kxmipukQJBAOqf44+b+agA3RJBYLPqsaUShK8ykor2nZptUNFtMBiuGPuQ0sT3cfZMB9upc586ckFDZcqChqFLUAfpmgMIgYUCQQDc3ay6RJ9owqkkPTKeeppeZqDoD5Nk3nipuMyJwTL0GR0A1AfUXcA0F8BxEQob1k65Tcw7ol2j7DmRqjA8uw2HAkAr92RUT/07r1W+CwRNEsjRTyQQFKEDa21jN+LyK8zcgxtpYN0uTdRMPDkov5tMFk68zh1wEn+aEBviL7NNqDVlAkBlu6mzBqbSj09vhMzLGLgAIY+eNIZ04NB9hMSZ8yawLt0gI4oTtLcyh3o52lpophcO3ZnkIg610bpWsSiU4KgDAkA+vyBe7spxLR1S/k4FhPP9YZay6vmuzwzSNUKF5JquTLuI9iqZRf+n3Yfy6wgQzkP2WIeQDRe074p09MFGc+pp
+  ZJPT_PUBLIC_KEY: MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDKbJHlAPiXza9A7Mfs2cLvysKa5GjdMtG1QQv8oADkAgcdujRq0aHVjNFXoVm7b1DdlhEAdhKXJ7XyY/2zoEbpoU4YxzIftloHZ0vd/k4vgAg5beH972jpWZj6N3ER+EgR73+Ui0p0pdXIRjDF4o8mWSLw8W8Z93eILtLg0DcOIwIDAQAB
+  aly:
+    url_pre: http://39.101.143.165:8080/API/insCBIT
+  api10: /pjms/insurance/open/unify/order/cancelUnderwriting
+  api11: /pjms/insurance/open/unify/order/getVerificationCode
+  api12: /pjms/insurance/open/unify/order/commitVerificationCode
+  api14: /pjms/insurance/open/unify/order/sendEleApplicationSign
+  api17: /pjms/insurance/open/unify/order/viewToPay
+  api18: /pjms/insurance/open/unify/order/queryPolicy
+  api2: /pjms/insurance/open/unify/order/getInitParams
+  api3: /pjms/insurance/open/unify/order/generateOrderNo
+  api4: /pjms/insurance/open/unify/vehicle/getTMBVerificationCode
+  api5: /pjms/insurance/open/unify/vehicle/queryVehicleModel
+  api6: /pjms/insurance/open/unify/vehicle/confirmVehicle
+  api7: /pjms/insurance/open/unify/order/quote
+  api8: /pjms/insurance/open/unify/order/postUnderwriting
+  api9: /pjms/insurance/open/unify/order/applyPay
+  carDealerCode_pingan: 224189117001
+  franchiserChannelCode_pingan: QIAOYRXX-00001
+  franchiserChannelId_pingan: CBIT01240000
+  franchiserChannelId_taiping: CBIT01240000
+  franchiserChannelId_taipingyang: CBIT01240000
+  franchiserId: taiyuantianqin-001
+  groupCode_taiping: S132001
+  insurerBranchCode_pingan: 140000
+  insurerBranchCode_taiping: 140000
+  insurerBranchCode_taipingyang: 140000
+  ip: 10.23.69.91
+  url_pre: http://88.88.1.52:5017
+filePath: /usr/local/apache-tomcat-8.5.73/webapps/upload/
+
+master:
+  password:
+    ciphertext: 9d3b721959d63c10173d378e82aaecf2
+    salt: 7cb112e917a8446f8616
+mybatis:
+  configuration:
+    map-underscore-to-camel-case: true
+  mapper-locations: classpath:mapper/**/*.xml
+  type-aliases-package: com.ydtech.modules.*.model
+mybatis-plus:
+  configuration:
+    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
+netUrl: http://baoxianzhanggui.com:8080/
+
+
+pagehelper:
+  helper-dialect: mysql
+  params: count=countSql
+  reasonable: true
+  support-methods-arguments: true
+pyramid:
+  dept:
+    id: 99140109M03D01
+
+resp_json: '{"status":"Z00001","msg":"success","data":{"invoiceType":[],"payWayList":[{"payWayCode":"Z000005"}],"switchList":[{"cityName":null,"insurerId":null,"configCode":"Z00002","configValue":"ON","remark":"��Ҫ����ǩ��"},{"cityName":null,"insurerId":null,"configCode":"Z00009","configValue":"ON","remark":"��Ҫǰ���ύ��ת����̨֧��"},{"cityName":null,"insurerId":null,"configCode":"Z00007","configValue":"ON","remark":"��Ҫ���ó���ȷ��"},{"cityName":null,"insurerId":null,"configCode":"Z00001","configValue":"ON","remark":"��Ҫ���Ͷ���(�ֻ�ʵ����֤)"}]},"insurerId":"000108","baseParam":{"requestNo":"baodafang-00197e79fcc-f39c-4c54-86fc-a88668b0647e"},"success":true}'
+
+spring:
+  datasource:
+    driver-class-name: com.mysql.cj.jdbc.Driver
+    druid:
+      password: 'Iy$@$koH@oURxyvw'
+      url: jdbc:mysql://rm-8vbaejxof1xh06o9r.mysql.zhangbei.rds.aliyuncs.com:3306/agent?serverTimezone=Asia/Shanghai&allowMultiQueries=true&useUnicode=true&characterEncoding=UTF-8&rewriteBatchedStatements=true
+      username: sxzgkj
+      # 连接池配置
+      initial-size: 5                                #连接池的初始化连接数。
+      max-active: 20                                 #连接池的最大活跃连接数。
+      min-idle: 5                                    #连接池的最小空闲连接数。
+      max-wait: 6000                                 #获取连接的最大等待时间,单位毫秒
+      # 数据库连接池验证配置
+      validation-query: SELECT 1                     # 用于验证连接的 SQL 查询语句
+      test-on-borrow: true                           # 从连接池获取连接时是否进行验证
+      test-on-return: true                           # 回连接池时,会执行一次有效性检查
+      test-while-idle: true                          # 连接在空闲时会定期执行一次有效性检查
+      # 连接池任务清理
+      time-between-eviction-runs-millis: 60000       # 连接池清理任务每隔60秒执行一次。
+      min-evictable-idle-time-millis: 300000         # 连接在空闲时间达到5分钟后才会被标记为可回收状态
+      # 预编译
+      pool-prepared-statements: true                      # 否启用预编译语句池
+      max-pool-prepared-statement-per-connection-size: 20 # 表示每个连接最多可以缓存20个预编译语句对象。
+      # 连接池监控配置
+      stat-view-servlet:
+        enabled: true                                # 启用 Druid 的监控页面
+        url-pattern: /druid/*
+        login-username: admin
+        login-password: 123456
+        allow: 'sxzgkj.baoxianzhanggui.com'
+      filters: stat,wall
+      async-init: true #连接池的初始化将以异步方式进行
+      db-type: mysql
+
+  redis:
+    database: 0
+    host: 172.24.144.218
+    lettuce:
+      pool:
+        max-active: 8
+        max-idle: 8
+        max-wait: 100
+        min-idle: 0
+    password: sxzgkj@2023
+    port: 6379
+    timeOut: 3000
+  servlet:
+    multipart:
+      # 最大支持文件大小
+      max-file-size: 2000MB
+      # 最大支持请求大小
+      max-request-size: 2000MB
+  thymeleaf:
+    prefix: classpath:/template/html/
+    suffix: .html
+    encoding: UTF-8
+    cache: false
+
+upload:
+  basepath: ${filePath}
+  file:
+    path: /nasData/
+    url: /upload/
+  host: ''
+  password: ''
+  url: ${netUrl}
+  username: ''
+wechat:
+  open:
+    componentAppId: wx612ca90988c46947
+    componentSecret: 75b7d4cda453b2075dec23f849278bc0
+ya:
+  callbackUrl: http://www.baoxianzhanggui.com:8080/order/yongAn/updatePolicy
+  #  comCode: 214040020000
+  #  consumerAccessKey: xE1cA7dK
+  #  consumerID: 102120
+  #  matchCode: 10212014040001
+  url: https://api.yaic.com.cn/auto/issue
+  sign: https://api.yaic.com.cn/auto/debug/generate-access-key
+#  userCode: 10061765
+
+##永诚
+yc:
+  #api方式
+  api:
+    # 回调地址
+    payCallBack: http://sxzgkj.baoxianzhanggui.com/web-api/api/yongCheng/callBack
+    url: http://www.yongcheng.com:17002/
+  #    url: http://140.206.189.151:17000/
+
+zm:
+  ascription:
+    url: ${zm.domain}/ascription
+  audit:
+    url: ${zm.domain}/audit
+  domain: http://sxzgkj.baoxianzhanggui.com/zm/zm
+  getPolicyPrint:
+    url: ${zm.domain}/getPolicyPrint
+  image:
+    url: ${zm.domain}/yxsc
+  manualUnderwriting:
+    url: ${zm.domain}/manualUnderwriting
+  modelQuery:
+    url: ${zm.domain}/modelQuery
+  quote:
+    url: ${zm.domain}/quotedPrice
+  verifyPayment:
+    url: ${zm.domain}/verifyPayment
+  vinSearch:
+    url: ${zm.domain}/vinSearch
+
+
+# 中煤配置信息
+zhongmei:
+  api:
+    #    source: 326
+    #    token: THIRDSCOuloft2020052818346904zmYBSXXHTQ
+    url: https://www.echinacoal.com/singlePlatform/
+    imageUrl: https://www.echinacoal.com/singlePlatform/others/
+    smsUrl: https://www.echinacoal.com/singlePlatform/prpall/
+    pageUrl: http://www.baidu.com
+    callbackDomain: http://sxzgkj.baoxianzhanggui.com/web-api
+    callbackUrl: /order/zhongMeiApi/underwritingCallback
+    passMsgUrl: /order/zhongMeiApi/auditCallback
+    sessionKey: 3788034787907281
+
+image:
+  # 验证码识别
+  identificationUrl: http://sxzgkj.baoxianzhanggui.com/zm/images/recognition
+
+# 紫金财险
+zijin:
+  api:
+    # 为接入方提供获取token服务
+    accessTokenUrl: https://open.zking.com/api/v1/public/token/getAccessToken
+    # 车险业务
+    url: http://open.zking.com/api/v1/insurance/autoMobile/carInsurance/
+    # 支付
+    payUrl: http://open.zking.com/api/v1/public/payment/cashier/zbfAggregatePay
+    # 订单详情查询服务
+    orderUrl: http://open.zking.com/api/v1/insurance/public/getOrderDetail
+    # 订单状态查询
+    orderDetailUrl: http://open.zking.com/api/v1/insurance/autoMobile/geelyCarInsurance/queryOrderDetail
+    # 下载保单地址
+    downLoadDocument: http://open.zking.com/temp/api/v1/insurance/nonAutoMobile/queryPolicy/downLoadDocument
+
+
+agreement:
+  shutdown: true
+
+# 华泰
+huatai:
+  api:
+    insuredCode: HTf02fb8988203427491
+    sourceCode: '016'
+    baseUrl: https://gears.pc.ehuatai.com:9003/interFaces/common/AutoInsuranceQuotation.do
+    selfPublicKey: MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCYUuKVmeF5N66v6MQmOR8pt4o33yrio/ZrDf2ehk/kHJ2BYdI+xE9dLrZW5dm0y8yPpIHN39JaLuYOlWz5DVsWJTSPj9eaq0hOiY9BGAHJ3yMHdX3wygpcD11BVc5v4wbX/kyAhmatK69sb4zzAtEve1NS/YwZVuGch0CrkGw3YQIDAQAB
+    selfPrivateKey: MIICdQIBADANBgkqhkiG9w0BAQEFAASCAl8wggJbAgEAAoGBAJhS4pWZ4Xk3rq/oxCY5Hym3ijffKuKj9msN/Z6GT+QcnYFh0j7ET10utlbl2bTLzI+kgc3f0lou5g6VbPkNWxYlNI+P15qrSE6Jj0EYAcnfIwd1ffDKClwPXUFVzm/jBtf+TICGZq0rr2xvjPMC0S97U1L9jBlW4ZyHQKuQbDdhAgMBAAECgYAktOyXYoK8RFfbWjtSfrdsxScQub3K6foq6C8y8Wj1LpQiJqGUsJfze5tDK5agA/CiuODy7LnzM5QK9aVSCw7k0r8EeGpHcYRdLYZM0vXVFK2gIQctFemK4c6sg5p0Bn1LNRbJG7rgMMEA/OxcF6vyQahhFtPVtAQwc+dT0PV51QJBANd66rfTuxSRvIC/RE4W6iqzed2YZtx+0kd7KiN78Y4X6spposFCH4ALf4jUeRRXZAm+Qu71cq21m2GsQZ8bZdMCQQC096ilZXEjmEuvopQR3JvPbgAF+MtItusyDDsMR1CWwXq9XGMmxi6GhFY7r7C8b40j1IchVAEY5BcwxJwfjql7AkAp5QYZs5reBu/FgGqBXEcvAjIheW4WVLoBl9q7h2+RlujZbexs8rQ5KwMi0VyxLcSPeGR/HU2spHCPbvRbQPJtAkBANK4tIHSnwFz6D6ChRbgyPEDd3YuiXOPNefFpRdQd6L93d9Pl6eKP71v5CTiXYqyczcaz2G4bOrHPp7IMsD0JAkBO/q3ZMT+Nj2jdMn2AR1h+ngn38JnK46PznU0WoRPx72YoWbLxvaGWpu8scZAhpYeq/n+52NHFfu8ayDRNWjP2
+    huaTaiPublicKey: MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCYyF2SBNzLOP5N5fFW2T2eQ5+iaI5wVpsedu+UY290TVuG152tkdtSuTXsx+8BKnd79/PF966/2aSP4EUm7vD9kvQUnX2EDUiMooorGvDTRxoHNXFGqOtxdMiUOuqx19HwNb4gOXZ1WdjWJwSmqC6ZP6OgxKIotCHJwe826Q/w8wIDAQAB
+
+# api url
+api:
+  url: http://sxzgkj.baoxianzhanggui.com/web-api
+
+
+# 国任财险生产
+guoren:
+  api:
+    baseUrl: https://rbt.guorenpcic.com/api/grchannel-interface/httpCurrency/httpJsonCommonEntrance
+    uploadUrl: https://rbt.guorenpcic.com/api/grecar/photo/upload
+    redirectUrl: http://sxzgkj.baoxianzhanggui.com/web-api/api/guoRen/callBack
+    policyUrl: https://rbt.guorenpcic.com/api/grsavecarcore/savecarcore/getElePolicyForGrecar?certiNo=
+    policyFlagUrl: https://rbt.guorenpcic.com/api/grsavecarcore/savecarcore/getElePolicyFlagForGrecar?certiNo=
+    serveCode: GR0002
+    channelCode: TQDL
+    interfaceUserCode: TQDL
+    interfacePwd: $2a$04$r4neihDJh420OyWEji5w5OMbiyHqYEZHJGLZP0FHFEjXmr7nVW7te
+    iftest: N
+
+qrcode:
+  genAddress: http://sxzgkj.baoxianzhanggui.com/web-api/order/qrCode/index
+
+#大家财险api
+dajia:
+  api:
+    url: https://ics.djbx.com/sip-agent/simpleRequest/
+    encryptKey: "By92YPLvG89XyFqv"
+
+knife4j:
+  enable: false
+
+xxl:
+  job:
+    admin:
+      # 调度中心部署跟地址 [选填]:如调度中心集群部署存在多个地址则用逗号分隔。
+      addresses: http://sxzgkj.baoxianzhanggui.com/xxl-job-admin
+      # 执行器通讯TOKEN [选填]:非空时启用 系统默认 default_token
+      accessToken:
+    executor:
+      # 执行器的应用名称
+      appname: xxl-job-executor-sample
+      # 执行器注册 [选填]:优先使用该配置作为注册地址
+      address: ""
+      # 执行器IP [选填]:默认为空表示自动获取IP
+      ip: "172.24.144.220"
+      # 执行器端口号 [选填]:小于等于0则自动获取;默认端口为9999
+      port: 0
+      # 执行器运行日志文件存储磁盘路径 [选填] :需要对该路径拥有读写权限;为空则使用默认路径;
+      logpath:
+      #logpath: /data/logs/mls/job
+      # 执行器日志文件保存天数 [选填] : 过期日志自动清理, 限制值大于等于3时生效; 否则, 如-1, 关闭自动清理功能;
+      logretentiondays: 7

+ 1 - 1
src/main/resources/application.yml

@@ -7,7 +7,7 @@ server:
 
 spring:
   profiles:
-      active: pre
+      active: dev
 
 
 

+ 91 - 60
src/main/resources/mapper/modules/admin/SysUserMapper.xml

@@ -165,84 +165,115 @@
             </if>
         </if>
     </select>
-    <select id="quTeamNum" resultType="com.ydtech.modules.admin.model.QuTeamNum">
+
+
+
+    <resultMap id="QuTeamNumMap" type="com.ydtech.modules.admin.model.QuTeamNum">
+        <id column="id" javaType="String" jdbcType="VARCHAR"  property="deptId"/>
+        <result column="name" javaType="String" jdbcType="VARCHAR" property="deptName"/>
+        <result column="orderstatus" javaType="String" jdbcType="VARCHAR" property="orderStatus"/>
+        <result column="count" javaType="String" jdbcType="VARCHAR" property="count"/>
+        <result column="jqpremium" javaType="String" jdbcType="VARCHAR" property="jqPremiumSum"/>
+        <result column="sypremium" javaType="String" jdbcType="VARCHAR" property="syPremiumSum"/>
+        <result column="taxamount" javaType="String" jdbcType="VARCHAR" property="taxaMountSum"/>
+    </resultMap>
+
+    <select id="getDept" resultMap="QuTeamNumMap">
+        SELECT
+        sd.id,
+        sd.name,
+        i.orderstatus,
+        i.count,
+        i.jqpremium,
+        i.sypremium,
+        i.taxamount
+        FROM
+        sys_dept sd
+        LEFT JOIN (
         SELECT
-        a.deptid,
-        a.deptname,
-        count( CASE WHEN b.orderstatus = 2 THEN 1 ELSE NULL END ) submitNum,
-        count( CASE WHEN b.orderstatus >= 1 THEN 1 ELSE NULL END ) quoteNum,
-        count( CASE WHEN b.orderstatus = 3 THEN 1 ELSE NULL END ) hasInsuredNum,
-        sum(CASE WHEN b.orderstatus = '3' THEN b.jqpremium ELSE NULL END) jqPremiumSum,
-        sum(CASE WHEN b.orderstatus = '3' THEN b.sypremium ELSE NULL END) syPremiumSum,
-        sum(CASE WHEN b.orderstatus = '3' THEN b.taxamount ELSE NULL END) taxaMountSum,
-        sum( CASE WHEN b.orderstatus = '3' THEN b.jqpremium + b.sypremium ELSE 0 END ) AS totalSumpremium
+        io.deptid AS deptid,
+        iac.orderstatus AS orderstatus,
+        count(*) AS count,
+        sum( iac.jqpremium ) AS jqpremium,
+        sum( iac.sypremium ) AS sypremium,
+        sum( iac.taxamount ) AS taxamount
         FROM
-        ins_orders a
-        LEFT JOIN ins_area_company b ON a.orderno = b.orderno
-        JOIN sys_dept c ON a.deptid = c.id
-        JOIN ( SELECT a.id FROM sys_dept a WHERE a.comlevel = '5' AND a.management_source = '1' AND a.del_flag = '0' ) d ON c.parent_id = d.id
+        ins_orders io
+        RIGHT JOIN ins_area_company iac ON iac.orderno = io.orderno
         WHERE
-        b.orderstatus IN ( '1', '2', '3' )
-        AND c.del_flag = '0'
-        <if test="quTeamNumDto.deptName != null and quTeamNumDto.deptName != '' ">
-            AND a.deptname LIKE concat('%',#{quTeamNumDto.deptName},'%')
-        </if>
-        <if test="quTeamNumDto.deptId != null and quTeamNumDto.deptId != '' ">
-            AND a.deptId = #{quTeamNumDto.deptId}
+        iac.orderstatus in (1,2,3)
+        <if test="quTeamNumDto.deptId != null and quTeamNumDto.deptId != ''">
+            and io.deptid = #{quTeamNumDto.deptId}
         </if>
         <if test="quTeamNumDto.createTimeStart != null">
-            AND b.createtime &gt;= #{quTeamNumDto.createTimeStart}
+            and io.createtime &gt;= #{quTeamNumDto.createTimeStart}
         </if>
         <if test="quTeamNumDto.createTimeEnd != null">
-            AND b.createtime &lt;= #{quTeamNumDto.createTimeEnd}
+            and io.createtime &lt;= #{quTeamNumDto.createTimeEnd}
         </if>
         GROUP BY
-        a.deptid,
-        a.deptname
-        ORDER BY
-        a.deptname
+        iac.orderstatus,
+        io.userid
+        ) AS i ON i.deptid = sd.id
+        WHERE
+        sd.del_flag = 0
+        <if test="quTeamNumDto.deptId != null and quTeamNumDto.deptId != ''">
+            and sd.id like concat('%',#{quTeamNumDto.deptId},'%')
+        </if>
+
     </select>
-    <select id="quUserNum" resultType="com.ydtech.modules.admin.model.QuTeamNum">
+
+    <resultMap id="QuUserNumMap" type="com.ydtech.modules.admin.model.QuTeamNum">
+        <id column="id" javaType="String" jdbcType="VARCHAR"  property="userId"/>
+        <result column="name" javaType="String" jdbcType="VARCHAR" property="userName"/>
+        <result column="orderstatus" javaType="String" jdbcType="VARCHAR" property="orderStatus"/>
+        <result column="count" javaType="String" jdbcType="VARCHAR" property="count"/>
+        <result column="jqpremium" javaType="String" jdbcType="VARCHAR" property="jqPremiumSum"/>
+        <result column="sypremium" javaType="String" jdbcType="VARCHAR" property="syPremiumSum"/>
+        <result column="taxamount" javaType="String" jdbcType="VARCHAR" property="taxaMountSum"/>
+    </resultMap>
+
+    <select id="getUser" resultMap="QuUserNumMap">
+        SELECT
+        su.id,
+        su.name,
+        i.orderstatus,
+        i.count,
+        i.jqpremium,
+        i.sypremium,
+        i.taxamount
+        FROM
+        sys_user su
+        LEFT JOIN (
         SELECT
-        a.userid,
-        a.username,
-        count( CASE WHEN b.orderstatus = 2 THEN 1 ELSE NULL END ) submitNum,
-        count( CASE WHEN b.orderstatus >= 1 THEN 1 ELSE NULL END ) quoteNum,
-        count( CASE WHEN b.orderstatus = 3 THEN 1 ELSE NULL END ) hasInsuredNum,
-        sum(CASE WHEN b.orderstatus = '3' THEN b.jqpremium ELSE NULL END) jqPremiumSum,
-        sum(CASE WHEN b.orderstatus = '3' THEN b.sypremium ELSE NULL END) syPremiumSum,
-        sum(CASE WHEN b.orderstatus = '3' THEN b.taxamount ELSE NULL END) taxaMountSum,
-        sum( CASE WHEN b.orderstatus = '3' THEN b.jqpremium + b.sypremium ELSE 0 END ) AS totalSumpremium
+        io.userid AS userid,
+        iac.orderstatus AS orderstatus,
+        count(*) AS count,
+        sum( iac.jqpremium ) AS jqpremium,
+        sum( iac.sypremium ) AS sypremium,
+        sum( iac.taxamount ) AS taxamount
         FROM
-        ins_orders a
-        LEFT JOIN ins_area_company b ON a.orderno = b.orderno
-        JOIN sys_dept c ON a.deptid = c.id
-        JOIN ( SELECT a.id FROM sys_dept a WHERE a.comlevel = '5' AND a.management_source = '1' AND a.del_flag = '0' ) d ON c.parent_id = d.id
+        ins_orders io
+        RIGHT JOIN ins_area_company iac ON iac.orderno = io.orderno
         WHERE
-        b.orderstatus IN ( '1', '2', '3' )
-        AND c.del_flag = '0'
-        <if test="quTeamNumDto.userName != null and quTeamNumDto.userName != '' ">
-            AND a.username LIKE concat('%',#{quTeamNumDto.userName},'%')
-        </if>
-        <if test="quTeamNumDto.userId != null and quTeamNumDto.userId != '' ">
-            AND a.userId = #{quTeamNumDto.userId}
-        </if>
-        <if test="quTeamNumDto.deptId != null and quTeamNumDto.deptId != '' ">
-            AND a.deptId = #{quTeamNumDto.deptId}
-        </if>
-        <if test="quTeamNumDto.deptName != null and quTeamNumDto.deptName != '' ">
-            AND a.deptname LIKE concat('%',#{quTeamNumDto.deptName},'%')
+        iac.orderstatus in (1,2,3)
+        <if test="quTeamNumDto.deptId != null and quTeamNumDto.deptId != ''">
+            and io.deptid = #{quTeamNumDto.deptId}
         </if>
         <if test="quTeamNumDto.createTimeStart != null">
-            AND b.createtime &gt;= #{quTeamNumDto.createTimeStart}
+            and io.createtime &gt;= #{quTeamNumDto.createTimeStart}
         </if>
         <if test="quTeamNumDto.createTimeEnd != null">
-            AND b.createtime &lt;= #{quTeamNumDto.createTimeEnd}
+            and io.createtime &lt;= #{quTeamNumDto.createTimeEnd}
         </if>
         GROUP BY
-        a.userid,
-        a.username
-        ORDER BY
-        a.username
+        iac.orderstatus,
+        io.userid
+        ) AS i ON i.userid = su.id
+        WHERE
+        su.status = 1
+        <if test="quTeamNumDto.deptId != null and quTeamNumDto.deptId != ''">
+            and su.id like concat('%',#{quTeamNumDto.deptId},'%')
+        </if>
     </select>
 </mapper>