Răsfoiți Sursa

对接前台数据区域树接口,已对接完成,

修改查询登陆人关联的区域代理人信息

添加报价失败的业务逻辑
hxl13994548489 2 ani în urmă
părinte
comite
43dc61d585

+ 16 - 0
sql/Online.sql

@@ -0,0 +1,16 @@
+--  add by hxl   2024-04-27 添加 后线人员关联区域表
+DROP TABLE IF EXISTS `sys_user_link_area`;
+CREATE TABLE `sys_user_link_area`  (
+                                       `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键/自增',
+                                       `user_id` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '用户id',
+                                       `area_code` int(11) NULL DEFAULT NULL COMMENT '区域编码',
+                                       `create_id` varchar(30) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '创建人ID',
+                                       `create_name` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '创建人名称',
+                                       `create_time` datetime NULL DEFAULT NULL COMMENT '创建时间',
+                                       `update_id` varchar(30) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '修改人ID',
+                                       `update_name` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '修改人名称',
+                                       `update_time` datetime NULL DEFAULT NULL COMMENT '修改时间',
+                                       PRIMARY KEY (`id`) USING BTREE,
+                                       INDEX `user_id_index`(`user_id`) USING BTREE COMMENT '用户id索引',
+                                       INDEX `area_code_index`(`area_code`) USING BTREE COMMENT '部门code索引'
+) ENGINE = InnoDB AUTO_INCREMENT = 7 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '后线人员关联区域表' ROW_FORMAT = Dynamic;

+ 7 - 2
src/main/java/com/ydtech/modules/admin/dao/SysUserLinkAreaMapper.java

@@ -42,6 +42,11 @@ public interface SysUserLinkAreaMapper extends BaseMapper<SysUserLinkArea> {
      */
     List<SysArea> findAreaListByUserId(@Param("userId") String userId);
 
-
-
+    /**
+     *  @version
+     *  @author: hxl
+     *  @Date: 2024/4/26 18:28
+     *  @Description: 通过用户id查询绑定的代理人集合
+     */
+    List<String> findAreaIdsByAgentUserId(@Param("userId") String userId);
 }

+ 7 - 0
src/main/java/com/ydtech/modules/admin/dao/SysUserMapper.java

@@ -257,6 +257,13 @@ public interface SysUserMapper extends BaseMapper<SysUser> {
      *  @Description: 查询用户分页+区域标志显示
      */
     Page<SysUserBaseVO> findUserListByAreaPage(@Param("page") Page<SysUserBaseVO> page, @Param("user") SysUserDto sysUserDto);
+    /**
+     *  @version
+     *  @author: hxl
+     *  @Date: 2024/4/27 09:55
+     *  @Description:  查询所有的代理人
+     */
+    List<SysUserBaseVO> getAgentUserList();
 }
 
 

+ 1 - 1
src/main/java/com/ydtech/modules/admin/model/dto/SysUserLinkAreaDto.java

@@ -24,5 +24,5 @@ public class SysUserLinkAreaDto extends PageRequest {
     private SysUser sysUser;
 
     @ApiModelProperty("区域信息")
-    private SysArea sysArea;
+    private SysArea area;
 }

+ 9 - 0
src/main/java/com/ydtech/modules/admin/service/SysUserLinkAreaService.java

@@ -63,4 +63,13 @@ public interface SysUserLinkAreaService extends IService<SysUserLinkArea> {
       *  @Description: 查询用户分页
       */
     BasePageResult<SysUserBaseVO> findUserListByPage(SysUserDto sysUserDto);
+
+
+    /**
+     *  @version
+     *  @author: hxl
+     *  @Date: 2024/4/27 13:29
+     *  @Description: 查询用户绑定区域的代理人信息
+     */
+    List<String> findUserIdsByLoginUserId(String  userId);
 }

+ 11 - 0
src/main/java/com/ydtech/modules/admin/service/impl/SysUserLinkAreaServiceImpl.java

@@ -157,4 +157,15 @@ public class SysUserLinkAreaServiceImpl extends ServiceImpl<SysUserLinkAreaMappe
         return  new BasePageResult<>(sysUserDto.getPageNum(), page.getSize(), userPageResult.getTotal(), page.getPages(),
                 userPageResult.getRecords());
     }
+    /**
+     *  @version
+     *  @author: hxl
+     *  @Date: 2024/4/27 9:45
+     *  @Description:  获取当前用户绑定区域的代理人ids 或者  代理人机构信息
+     *  1 为用户ids   2 为机构ids
+     */
+    @Override
+    public List<String> findUserIdsByLoginUserId(String  userId) {
+       return  sysUserLinkAreaMapper.findAreaIdsByAgentUserId(userId);
+    }
 }

+ 66 - 1
src/main/java/com/ydtech/modules/order/aop/aspect/QuoteVerificationAspect.java

@@ -2,20 +2,26 @@ package com.ydtech.modules.order.aop.aspect;
 
 
 import com.ydtech.constants.enums.InsuranceRisk;
+import com.ydtech.constants.enums.dict.InsOrderStatusEnum;
 import com.ydtech.constants.enums.dict.agreement.ProductsType;
 import com.ydtech.constants.sys.SystemConstant;
+import com.ydtech.core.page.HttpResult;
 import com.ydtech.modules.admin.model.SysUserRole;
 import com.ydtech.modules.admin.service.SysUserRoleService;
-import com.ydtech.modules.admin.service.SysUserService;
 import com.ydtech.modules.base.controller.BaseController;
+import com.ydtech.modules.esm.model.EsmInsCompany;
+import com.ydtech.modules.esm.service.EsmInsCompanyService;
 import com.ydtech.modules.ins.model.vo.KindInfoVo;
 import com.ydtech.modules.ins.model.vo.RiskInfoVo;
 import com.ydtech.modules.order.components.InsOrdersComponents;
+import com.ydtech.modules.order.entity.InsAreaCompany;
 import com.ydtech.modules.order.entity.vo.BaseQuoteInfoVo;
 import com.ydtech.modules.order.entity.vo.BaseQuoteVo;
+import com.ydtech.modules.order.service.InsAreaCompanyService;
 import com.ydtech.modules.protocol.service.PtlAgreementDeptService;
 import com.ydtech.modules.protocol.service.impl.TaxSourceServiceImpl;
 import com.ydtech.utils.StringUtils;
+import com.ydtech.utils.idgen.IdGenerate;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.aspectj.lang.JoinPoint;
@@ -40,6 +46,10 @@ public class QuoteVerificationAspect {
 
     private final TaxSourceServiceImpl taxSourceService;
 
+    private final EsmInsCompanyService esmInsCompanyService;
+
+    private final InsAreaCompanyService insAreaCompanyService;
+
 
     @Before("@annotation(com.ydtech.modules.order.aop.QuoteVerification)")
     public void doBefore(JoinPoint point) {
@@ -103,4 +113,59 @@ public class QuoteVerificationAspect {
         }
     }
 
+    /**
+     *  @version
+     *  @author: hxl
+     *  @Date: 2024/4/27 15:18
+     *  @Description: 添加报价接口的报价失败状态的后置通知
+     */
+   // @AfterReturning(value="@annotation(com.ydtech.modules.order.aop.QuoteVerification)", returning="response")
+    public void after(JoinPoint point, HttpResult response) {
+        Object[] args = point.getArgs();
+        if (response.getCode() != 200) {
+            //报价失败 查询信息的信息表
+            for (Object arg : args) {
+                if (arg instanceof BaseQuoteVo) {
+                    String companyId = ((BaseQuoteVo<?>) arg).getCompanyId();
+                    String agreementId = ((BaseQuoteVo<?>) arg).getAgreementId();
+                    String orderno = ((BaseQuoteVo<?>) arg).getOrderNo();
+                    insertInsAreaCompany(companyId, orderno, agreementId);
+                }
+            }
+        }
+    }
+    /**
+     *  @version
+     *  @author: hxl
+     *  @Date: 2024/4/27 16:54
+     *  @Description: 添加报价接口的报价失败状态的异常通知
+     */
+    //@AfterThrowing(pointcut="@annotation(com.ydtech.modules.order.aop.QuoteVerification)", throwing="ex")
+    public void handleException(JoinPoint point, Exception ex) {
+        // 处理异常的逻辑
+        Object[] args = point.getArgs();
+        //报价失败 查询信息的信息表
+        for (Object arg : args) {
+            if (arg instanceof BaseQuoteVo) {
+                String companyId = ((BaseQuoteVo<?>) arg).getCompanyId();
+                String agreementId = ((BaseQuoteVo<?>) arg).getAgreementId();
+                String orderno = ((BaseQuoteVo<?>) arg).getOrderNo();
+                insertInsAreaCompany(companyId, orderno, agreementId);
+            }
+        }
+    }
+    public void insertInsAreaCompany(String companyId, String orderno, String agreementId) {
+        EsmInsCompany esmInsCompany = esmInsCompanyService.getById(companyId);
+        //保存订单信息
+        InsAreaCompany insAreaCompany = new InsAreaCompany();
+        insAreaCompany.setId(IdGenerate.nextId());
+        insAreaCompany.setOrderno(orderno);
+        insAreaCompany.setAgreementId(agreementId);
+        insAreaCompany.setOrderstatus(InsOrderStatusEnum.QUOTE_ING.getCode()); // "1"
+        insAreaCompany.setCompanyId(esmInsCompany.getId());
+        insAreaCompany.setInscompany(esmInsCompany.getNamesimple());
+        //insAreaCompany.setErrorStatus(500);
+        insAreaCompanyService.insertCompanyAndOrders(insAreaCompany);
+    }
+
 }

+ 6 - 0
src/main/java/com/ydtech/modules/order/entity/InsAreaCompany.java

@@ -399,6 +399,12 @@ public class InsAreaCompany implements Serializable {
     @TableField(value = "new_operator_name")
     private String newOperatorName;
 
+    /**
+     *  报价成功或者失败状态
+     */
+    //@TableField(value = "error_status")
+    //private Integer errorStatus;
+
     public InsAreaCompany(QuoteRespVo quoteRespVo, PtlAgreementAttribution ptlAgreementAttribution) {
         this.id = IdGenerate.nextId();
         this.orderno = quoteRespVo.getOrderno();

+ 7 - 2
src/main/java/com/ydtech/modules/order/service/impl/InsOrdersServiceImpl.java

@@ -17,6 +17,7 @@ import com.ydtech.core.page.HttpResult;
 import com.ydtech.core.page.PageRequest;
 import com.ydtech.exception.SystemException;
 import com.ydtech.modules.admin.constants.RoleConstants;
+import com.ydtech.modules.admin.dao.SysUserLinkAreaMapper;
 import com.ydtech.modules.admin.dao.SysUserLinkPtlAgreementMapper;
 import com.ydtech.modules.admin.dao.SysUserMapper;
 import com.ydtech.modules.admin.model.SysDept;
@@ -129,6 +130,9 @@ public class InsOrdersServiceImpl extends ServiceImpl<InsOrdersMapper, InsOrders
     @Autowired
     private SysUserLinkPtlAgreementMapper sysUserLinkPtlAgreementMapper;
 
+    @Autowired
+    private SysUserLinkAreaMapper sysUserLinkAreaMapper;
+
 
     public InsOrdersServiceImpl(OrderComponents orderComponents, SysUserService sysUserService,
                                 SysUserRoleService sysUserRoleService,
@@ -813,8 +817,9 @@ public class InsOrdersServiceImpl extends ServiceImpl<InsOrdersMapper, InsOrders
             deptIds= sysUserMapper.getDeptIdsByUserIds(orderQueryVo.getUserId());
         } else if (type == 2) {
             //查询所有的代理人
-            agentUserIds = sysUserMapper.getAgentUserIds();
-
+            //agentUserIds = sysUserMapper.getAgentUserIds();
+            //查询绑定的区域的代理人信息
+            agentUserIds =sysUserLinkAreaMapper.findAreaIdsByAgentUserId(orderQueryVo.getUserId());
         } else if (type == 3) {
             //查询用户关联的协议
             List<SysUserLinkPtlAgreementDto> ptlAgreementListByUserIds =

+ 27 - 0
src/main/resources/mapper/modules/admin/SysUserLinkAreaMapper.xml

@@ -68,4 +68,31 @@
         </where>
         order by area.area_code
     </select>
+
+    <select id="findAreaIdsByAgentUserId"  resultType="String">
+        SELECT
+            su.id
+        FROM
+            sys_user su
+                LEFT JOIN sys_user_info info ON info.id = su.id
+                LEFT JOIN sys_dept sd ON su.dept_id = sd.id
+                LEFT JOIN sys_user_role t3 ON su.id = t3.user_id
+                AND sd.del_flag = '0'
+        WHERE
+            t3.role_id = 20
+          AND sd.management_source = 2
+          AND
+            (CONCAT( SUBSTRING(RPAD(su.dept_id, 8, '0'), 3, 2), SUBSTRING(RPAD(su.dept_id, 8, '0'), 5, 2), SUBSTRING(RPAD(su.dept_id, 8, '0'), 7, 2) ) ) IN
+
+            (
+                SELECT
+                    DISTINCT link.area_code
+                FROM
+                    sys_user_link_area link
+                WHERE
+                    link.user_id = #{userId}
+                ORDER BY
+                    link.area_code
+            )
+    </select>
 </mapper>

+ 19 - 0
src/main/resources/mapper/modules/admin/SysUserMapper.xml

@@ -654,4 +654,23 @@
         </if>
         order by flag desc
     </select>
+
+
+    <select id="getAgentUserIdsByAreaIds" resultType="com.ydtech.modules.admin.model.vo.SysUserBaseVO">
+        SELECT
+            su.id,
+            su.dept_id AS deptId
+        FROM
+            sys_user su
+                LEFT JOIN sys_user_info info ON info.id = su.id
+                LEFT JOIN sys_dept sd ON su.dept_id = sd.id
+                LEFT JOIN sys_dept psd ON psd.id = sd.parent_id
+                LEFT JOIN sys_user_role t3 ON su.id = t3.user_id
+                LEFT JOIN sys_role t4 ON t3.role_id = t4.id
+                AND sd.del_flag = '0'
+                AND su.STATUS = 1
+        WHERE
+            t3.role_id =20
+          AND sd.management_source = 2
+    </select>
 </mapper>