Quellcode durchsuchen

新增推送服务

ChengHongYu vor 1 Jahr
Ursprung
Commit
599f6c79ee

+ 179 - 3
src/main/java/com/ydtech/modules/fnc/service/impl/InsFeeAuditServiceImpl.java

@@ -11,6 +11,7 @@ import com.ydtech.exception.SystemException;
 import com.ydtech.modules.admin.model.SysDept;
 import com.ydtech.modules.admin.model.SysDeptAccount;
 import com.ydtech.modules.admin.model.SysUser;
+import com.ydtech.modules.admin.model.SysUserRole;
 import com.ydtech.modules.admin.model.po.SysChannelCost;
 import com.ydtech.modules.admin.model.po.SysUserAccount;
 import com.ydtech.modules.admin.model.vo.SysUserBaseVO;
@@ -33,18 +34,25 @@ import com.ydtech.modules.ins.model.InsDeptFee;
 import com.ydtech.modules.ins.service.InsCommissionService;
 import com.ydtech.modules.ins.service.InsCompanyFeeService;
 import com.ydtech.modules.ins.service.InsDeptFeeService;
+import com.ydtech.modules.order.constants.BusinessConstant;
 import com.ydtech.modules.order.dao.InsOrdersMapper;
 import com.ydtech.modules.order.entity.InsFeeOrder;
 import com.ydtech.modules.order.entity.InsOrders;
+import com.ydtech.modules.order.entity.vo.FeeOrderNewVo;
+import com.ydtech.modules.order.entity.vo.sendProject.SendProjectInfo;
 import com.ydtech.modules.protocol.service.PtlAgreementService;
 import com.ydtech.modules.protocol.utils.AssertionUtils;
 import com.ydtech.modules.protocols.entity.po.InsFeeOrderNew;
 import com.ydtech.modules.protocols.entity.po.InsFeeOrderNewDistribution;
 import com.ydtech.modules.protocols.service.InsFeeOrderNewDistributionService;
 import com.ydtech.modules.protocols.service.InsFeeOrderNewService;
+import com.ydtech.modules.sendProject.dao.SendProjectMapper;
+import com.ydtech.modules.sendProject.entity.SendProjectEntity;
 import com.ydtech.utils.DateUtil;
 import com.ydtech.utils.StringUtils;
 import com.ydtech.utils.idgen.IdGenerate;
+import com.ydtech.utils.sendProjectUtils.SendProjrctUtils;
+import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.ObjectUtils;
 import org.redisson.Redisson;
 import org.redisson.api.RLock;
@@ -55,10 +63,11 @@ import org.springframework.transaction.annotation.Transactional;
 
 import javax.annotation.Resource;
 import java.math.BigDecimal;
+import java.text.SimpleDateFormat;
 import java.time.LocalDateTime;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.List;
+import java.util.*;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
 import java.util.concurrent.TimeUnit;
 
 /**
@@ -70,6 +79,7 @@ import java.util.concurrent.TimeUnit;
  * @since 2023-11-22
  */
 @Service
+@Slf4j
 public class InsFeeAuditServiceImpl extends ServiceImpl<InsFeeAuditMapper, InsFeeAudit> implements InsFeeAuditService {
 
     private final InsOrdersMapper insOrdersMapper;
@@ -121,6 +131,22 @@ public class InsFeeAuditServiceImpl extends ServiceImpl<InsFeeAuditMapper, InsFe
     @Resource
     private InsFeeOrderNewDistributionService insFeeOrderNewDistributionService;
 
+    @Autowired
+    private SendProjrctUtils sendProjrctUtils;
+
+    @Autowired
+    private SysUserRoleService sysUserRoleService;
+
+    @Autowired
+    private SendProjectMapper sendProjectMapper;
+
+    private ExecutorService executorService= Executors.newCachedThreadPool();
+
+    private static final String STRING_0 = "0";
+    private static final String STRING_1 = "1";
+    private static final String STRING_2 = "2";
+    private static final Integer INTEGER_0 = 0;
+
 
     public InsFeeAuditServiceImpl(FncInsAreaCompanyMapper insAreaCompanyMapper, InsOrdersMapper insOrdersMapper,
                                   InsDeptFeeService insDeptFeeService, EsmUserReferrerService esmUserReferrerService,
@@ -917,5 +943,155 @@ public class InsFeeAuditServiceImpl extends ServiceImpl<InsFeeAuditMapper, InsFe
         return this.getOne(queryWrapper);
     }
 
+    @Override
+    public void sendProject(String insOrderNo) {
+        log.info("订单:{},审核通过后首次推送服务", insOrderNo);
+        executorService.submit(new Runnable() {
+            @Override
+            public void run() {
+                log.info("异步线程开始!程序启动时间:{}", new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"));
+                //查询费用信息
+                log.info("查询ins_fee_order_new数据库");
+                InsFeeOrderNew insFeeOrderNew = insFeeOrderNewService.getOne(new LambdaQueryWrapper<InsFeeOrderNew>()
+                        .eq(InsFeeOrderNew::getInsOrderNo, insOrderNo));
+                FeeOrderNewVo.ExportFee exportFee = exportFee(insFeeOrderNew);
+                BigDecimal totalAmount = exportFee.getTotalAmount();
+
+                StringBuffer uuid = new StringBuffer();
+                uuid.append(new SimpleDateFormat("yyyyMMddHHmmss"))
+                        .append(UUID.randomUUID());
+
+                SendProjectInfo userInfo = new SendProjectInfo();
+                try {
+                    log.info("查询数据库保险订单表入参:{}", insOrderNo);
+                    userInfo = insOrdersMapper.getOrderByCompanyId(insOrderNo);
+                    log.info("查询数据库保险订单表出参:{}", userInfo);
+                } catch (Exception e) {
+                    log.error("查询数据库保险订单表报错:{}", e.getMessage());
+                }
+
+                if (userInfo == null) {
+                    return;
+                }
+
+                SendProjectInfo sendProjectInfo = new SendProjectInfo();
+                sendProjectInfo.setGiveBudget(totalAmount);
+                sendProjectInfo.setUuid(uuid.toString());
+                sendProjectInfo.setUserName(userInfo.getUserName());
+                sendProjectInfo.setUserPhone(userInfo.getUserPhone());
+                sendProjectInfo.setUserCarNum(userInfo.getUserCarNum());
+
+                SendProjectEntity addSendProject = new SendProjectEntity();
+                addSendProject.setTotalAmount(sendProjectInfo.getGiveBudget());
+                addSendProject.setUserName(sendProjectInfo.getUserName());
+                addSendProject.setUserCarNum(sendProjectInfo.getUserCarNum());
+                addSendProject.setUserPhone(sendProjectInfo.getUserPhone());
+                addSendProject.setSendState(STRING_2);
+                addSendProject.setSendUuid(sendProjectInfo.getSendUuid());
+                addSendProject.setFailNum(INTEGER_0);
+                addSendProject.setState(STRING_1);
+                addSendProject.setIsDelete(STRING_0);
+                addSendProject.setCreateTime(new Date());
+                addSendProject.setUpdateTime(new Date());
+                try {
+                    log.info("新增推送服务数据库入参:{}", addSendProject);
+                    sendProjectMapper.addSendProjectInfo(addSendProject);
+                } catch (Exception e) {
+                    e.printStackTrace();
+                    log.error("新增推送服务数据库报错:{}", e.getMessage());
+                }
+                sendProjrctUtils.firstSendProject(sendProjectInfo);
+            }
+        });
+    }
+
+    private FeeOrderNewVo.ExportFee exportFee(InsFeeOrderNew insFeeOrderNew) {
+        List<FeeOrderNewVo.ExportFee> exportFeeList = new ArrayList<>();
+        //region 出口费用
+        //交强
+        FeeOrderNewVo.ExportFee jqExportFee = this.assignExportFee(BusinessConstant.FEE_INSURANCE_TYPE_1,
+                insFeeOrderNew.getJqPremium(), insFeeOrderNew.getJqCostsExportProportion(),
+                insFeeOrderNew.getJqExportOtherCostsProportion(),
+                insFeeOrderNew.getJqExportSuperviseCostsPremiums(), insFeeOrderNew.getJqExportOtherCostsPremiums()
+        );
+        //exportFeeList.add(jqExportFee);
+
+        //交强
+        FeeOrderNewVo.ExportFee syExportFee = this.assignExportFee(BusinessConstant.FEE_INSURANCE_TYPE_2,
+                insFeeOrderNew.getSyPremium(), insFeeOrderNew.getSyCostsExportProportion(),
+                insFeeOrderNew.getSyExportOtherCostsProportion(),
+                insFeeOrderNew.getSyExportSuperviseCostsPremiums(), insFeeOrderNew.getSyExportOtherCostsPremiums()
+        );
+        //exportFeeList.add(syExportFee);
+
+        //交强
+        FeeOrderNewVo.ExportFee noExportFee = this.assignExportFee(BusinessConstant.FEE_INSURANCE_TYPE_3,
+                insFeeOrderNew.getNoPremium(), insFeeOrderNew.getNoCostsExportProportion(),
+                insFeeOrderNew.getNoExportOtherCostsProportion(),
+                insFeeOrderNew.getNoExportSuperviseCostsPremiums(), insFeeOrderNew.getNoExportOtherCostsPremiums());
+
+        // exportFeeList.add(noExportFee);
+        //add  by  hxl   添加出单员不能查看优惠的限制    2024-07-11
+        String userId = BaseController.getUserId();
+        SysUserRole sysUserRole = sysUserRoleService.selectByUserId(userId);
+        if (sysUserRole != null && sysUserRole.getRoleId() == 19) {
+            jqExportFee.setTotalAmount(BigDecimal.ZERO);
+            jqExportFee.setTotalProportion(BigDecimal.ZERO);
+            syExportFee.setTotalAmount(BigDecimal.ZERO);
+            syExportFee.setTotalProportion(BigDecimal.ZERO);
+            noExportFee.setTotalAmount(BigDecimal.ZERO);
+            noExportFee.setTotalProportion(BigDecimal.ZERO);
+        }
+        exportFeeList.add(jqExportFee);
+        exportFeeList.add(syExportFee);
+        exportFeeList.add(noExportFee);
+        //出口费用合计
+        FeeOrderNewVo.ExportFee exportFeeTotal = assignExportFeeTotal(exportFeeList);
+        return exportFeeTotal;
+    }
+
+    private FeeOrderNewVo.ExportFee assignExportFeeTotal(List<FeeOrderNewVo.ExportFee> exportFeeList) {
+        FeeOrderNewVo.ExportFee exportFee = new FeeOrderNewVo.ExportFee();
+        exportFee.setInsuranceType(BusinessConstant.FEE_INSURANCE_TYPE_4);
+        //总费用合计
+        BigDecimal totalAmount = exportFeeList.stream().map(FeeOrderNewVo.ExportFee::getTotalAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
+        exportFee.setTotalAmount(Optional.of(totalAmount).orElse(BigDecimal.ZERO));
+        return exportFee;
+    }
+
+    /**
+     * 出口费用赋值
+     *
+     * @param title
+     * @param premium
+     * @param superviseCostsProportion
+     * @param otherCostsProportion
+     * @param superviseCostsPremiums
+     * @param otherCostsPremiums
+     * @return
+     */
+    public FeeOrderNewVo.ExportFee assignExportFee(String title, BigDecimal premium, BigDecimal superviseCostsProportion,
+                                                   BigDecimal otherCostsProportion,
+                                                   BigDecimal superviseCostsPremiums, BigDecimal otherCostsPremiums
+    ) {
+        FeeOrderNewVo.ExportFee exportFee = new FeeOrderNewVo.ExportFee();
+        exportFee.setInsuranceType(title);
+        //保费
+        exportFee.setPremium(premium);
+        //手续费比例
+        exportFee.setSuperviseCosts(superviseCostsProportion);
+        //跟单比例
+        exportFee.setOtherCostsProportion(otherCostsProportion);
+        //总比例
+        exportFee.setTotalProportion(superviseCostsProportion.add(otherCostsProportion));
+        //手续费
+        exportFee.setSuperviseCostsPremiums(superviseCostsPremiums);
+        //跟单费
+        exportFee.setOtherCostsPremiums(otherCostsPremiums);
+        //总费用
+        exportFee.setTotalAmount(superviseCostsPremiums.add(otherCostsPremiums));
+
+        return exportFee;
+    }
 
 }

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

@@ -1802,4 +1802,23 @@
         </if>
     </select>
 
+    <resultMap id="SendProjectInfoMap" type="com.ydtech.modules.order.entity.vo.sendProject.SendProjectInfo">
+        <result property="userName" column="user_name" jdbcType="VARCHAR"/>
+        <result property="userPhone" column="user_phone" jdbcType="VARCHAR"/>
+        <result property="userCarNum" column="user_car_num" jdbcType="VARCHAR"/>
+    </resultMap>
+
+    <select id="getOrderByCompanyId" resultMap="SendProjectInfoMap" parameterType="java.lang.String">
+        SELECT
+            REPLACE(o.applyinfo -> '$.name', '"', '') AS user_name,
+            REPLACE(o.applyinfo -> '$.mobile', '"', '') AS user_phone,
+            REPLACE(o.carinfo -> '$.licenseNo', '"', '') AS user_car_num
+        FROM
+            ins_orders AS o
+            JOIN
+                ins_area_company iac ON o.orderno = iac.orderno
+        WHERE
+            iac.id = #{companyId}
+    </select>
+
 </mapper>