Преглед изворни кода

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

jiakai пре 4 месеци
родитељ
комит
b93ef2b46e

+ 3 - 0
commons/src/main/java/com/jzg/commons/entity/dto/SysDeptParam.java

@@ -13,4 +13,7 @@ public class SysDeptParam {
 
     @Schema(description = "搜索名称")
     private String name;
+
+    @Schema(description = "机构下用户的信息")
+    private String userInfo;
 }

+ 5 - 2
commons/src/main/java/com/jzg/commons/entity/finance/po/InsPlyIncomeInvoiceSettlement.java

@@ -1,19 +1,22 @@
 package com.jzg.commons.entity.finance.po;
 
-//import cn.hutool.core.date.DateTime;
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.jzg.commons.core.base.BaseModel;
 import com.jzg.commons.util.idgen.IdGenerate;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;
+import lombok.EqualsAndHashCode;
 
-import java.math.BigDecimal;
+import java.io.Serial;
 import java.util.Date;
 import java.util.List;
 
+@EqualsAndHashCode(callSuper = true)
 @Data
 @Schema(description = "财务应收开票结算表")
 public class InsPlyIncomeInvoiceSettlement extends BaseModel {
+    @Serial
+    private static final long serialVersionUID = -2019053289601744522L;
     private String id;
 
     @Schema(description = "票据iD")

+ 4 - 5
tenant/organization/src/main/java/com/jzg/organization/controller/ReceivableController.java

@@ -2,8 +2,8 @@ package com.jzg.organization.controller;
 
 import cn.hutool.core.util.StrUtil;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.jzg.commons.constants.dict.InsOrderStatusEnum;
 import com.jzg.commons.core.page.HttpResult;
+import com.jzg.commons.entity.finance.dto.CompanySuperviseSettlementReportDto;
 import com.jzg.commons.entity.finance.po.InsPlyIncome;
 import com.jzg.commons.entity.finance.po.InsPlyIncomeInvoiceSettlement;
 import com.jzg.commons.entity.finance.vo.*;
@@ -53,8 +53,7 @@ public class ReceivableController {
     @PostMapping("getUnauditedOrder")
     @Operation(summary = "获取未审核的订单")
     public HttpResult getUnauditedOrder(@RequestBody ReceivableQueryVo receivableQueryVo){
-        if (Objects.isNull(receivableQueryVo.getAgreementType()) || receivableQueryVo.getAgreementType().equals(""))
-        {
+        if (Objects.isNull(receivableQueryVo.getAgreementType()) || receivableQueryVo.getAgreementType().equals("")) {
             receivableQueryVo.setAgreementType("1");
         }
         InsPlyIncome auditedOrder  = receivableService.getUnauditedOrder(receivableQueryVo);
@@ -74,7 +73,7 @@ public class ReceivableController {
 
     @PostMapping("getCommissionReceivableList")
     @Operation(summary = "获取私有协议手续费列表")
-    public HttpResult getCommissionReceivableList(@RequestBody ReceivableQueryVo receivableQueryVo){
+    public HttpResult<Page<InsPlyIncome>> getCommissionReceivableList(@RequestBody ReceivableQueryVo receivableQueryVo){
         receivableQueryVo.setQueryType("2");
         receivableQueryVo.setAgreementType("2");
         return HttpResult.ok(receivableService.getReceivablePage(receivableQueryVo));
@@ -349,7 +348,7 @@ public class ReceivableController {
 
     @PostMapping("companySuperviseSettlementReport")
     @Operation(summary = "保险公司结算报表")
-    public HttpResult companySuperviseSettlementReport(@RequestBody SettlementReportQueryVo settlementReportQueryVo) {
+    public HttpResult<List<CompanySuperviseSettlementReportDto>> companySuperviseSettlementReport(@RequestBody SettlementReportQueryVo settlementReportQueryVo) {
         return HttpResult.ok(receivableService.companySuperviseSettlementReport(settlementReportQueryVo));
     }
 

+ 1 - 1
tenant/organization/src/main/java/com/jzg/organization/mapper/ReceivableMapper.java

@@ -42,7 +42,7 @@ public interface ReceivableMapper extends BaseMapper<InsPlyIncome> {
     /**
      * 获取车险应收列表
      * @param receivableQueryVo
-     * @return
+     * @return Page<InsPlyIncome>
      */
     Page<InsPlyIncome> getReceivablePage(Page page,@Param("receivableQueryVo") ReceivableQueryVo receivableQueryVo);
 

+ 9 - 2
tenant/organization/src/main/java/com/jzg/organization/service/ReceivableService.java

@@ -47,9 +47,10 @@ public interface ReceivableService extends IService<InsPlyIncome> {
     List<EsmInsCompany> getReceivableCompany(InvoicingVo invoicingVo);
 
     /**
-     * 获取手续费应收列表
+     * 获取私有协议手续费列表
+     *
      * @param receivableQueryVo
-     * @return
+     * @return Page<InsPlyIncome>
      */
     Page<InsPlyIncome> getReceivablePage(ReceivableQueryVo receivableQueryVo);
 
@@ -265,6 +266,12 @@ public interface ReceivableService extends IService<InsPlyIncome> {
      */
     void exportOtherSettlementDetailJyExcel(Page page,SettlementQueryVo settlementQueryVo) throws IOException;
 
+    /**
+     * 查询保险公司结算报表
+     *
+     * @author lipf
+     * @date 2026/4/30 14:48
+     */
     List<CompanySuperviseSettlementReportDto> companySuperviseSettlementReport(SettlementReportQueryVo settlementReportQueryVo);
 
     Page<ReceiverSettlementReportDto> receiverSettlementReport(Page page,SettlementReportQueryVo settlementReportQueryVo);

+ 15 - 4
tenant/organization/src/main/java/com/jzg/organization/service/impl/ReceivableServiceImpl.java

@@ -162,6 +162,12 @@ public class ReceivableServiceImpl extends ServiceImpl<ReceivableMapper, InsPlyI
         return baseMapper.getReceivableCompany(invoicingVo);
     }
 
+    /**
+     * 获取私有协议手续费列表
+     *
+     * @param receivableQueryVo
+     * @return Page<InsPlyIncome>
+     */
     @Override
     public Page<InsPlyIncome> getReceivablePage(ReceivableQueryVo receivableQueryVo) {
         log.info("获取私有协议手续费列表。receivableQueryVo=[{}]", JSONUtil.toJsonStr(receivableQueryVo));
@@ -333,11 +339,11 @@ public class ReceivableServiceImpl extends ServiceImpl<ReceivableMapper, InsPlyI
             AssertionUtils.isFail(Objects.isNull(insPlyIncomeInvoice), "发票数据不存在");
 
             // 实际已经收的了金额
-            BigDecimal ctualReceivedAmount = getInvoicingAmount(settlementVo.getInvoicingId());
+            BigDecimal ctualReceivedAmount = this.getInvoicingAmount(settlementVo.getInvoicingId());
 
             // 剩余的金额
             BigDecimal surplusPremium = insPlyIncomeInvoice.getReceivableSupervisePremium().subtract(ctualReceivedAmount);
-
+            log.info("invoiceId=[{}],一共需要结算的金额[{}],实际已经结算的金额[{}],本次计划结算的金额[{}]",settlementVo.getInvoicingId(), insPlyIncomeInvoice.getReceivableSupervisePremium(),ctualReceivedAmount.toString(),settlementVo.getActualReceivedAmount());
             // 校验是否超出了剩余的金额
             AssertionUtils.isFail(surplusPremium.compareTo(settlementVo.getActualReceivedAmount()) < 0, "已超出应收金额,请核对!");
 
@@ -371,11 +377,11 @@ public class ReceivableServiceImpl extends ServiceImpl<ReceivableMapper, InsPlyI
                         .forEach(item -> {
                             incomeIds.add(item.getIncomeId());
                         });
-
                 // 判断是需要更新哪个字段
                 this.updateIncomeSettlementStatus(insPlyIncomeInvoice.getInvoiceType(), incomeIds);
+            }else{
+                log.info("invoiceId=[{}], 还剩[{}]钱没有结算",settlementVo.getInvoicingId(), surplusPremium.subtract(settlementVo.getActualReceivedAmount()));
             }
-
             return true;
         } catch (Exception e) {
             log.error("结算异常. settlementVo=[{}]",JSONUtil.toJsonStr(settlementVo), e);
@@ -1304,6 +1310,11 @@ public class ReceivableServiceImpl extends ServiceImpl<ReceivableMapper, InsPlyI
         EasyExcelUtils.exportForWeb(ServletUtils.getResponse(), ExportOtherSettlementDetailJyExcelDto.class, list, "非车险跟单费结算明细");
     }
 
+    /**
+     * 查询保险公司结算报表
+     *
+     * @date 2026/4/30 14:48
+     */
     @Override
     public List<CompanySuperviseSettlementReportDto> companySuperviseSettlementReport(SettlementReportQueryVo settlementReportQueryVo) {
         log.info("私有协议查询结算报表:settlementReportQueryVo=[{}]", JSONUtil.toJsonStr(settlementReportQueryVo));

+ 39 - 12
tenant/organization/src/main/java/com/jzg/organization/service/impl/SysDeptServiceImpl.java

@@ -1,20 +1,20 @@
 package com.jzg.organization.service.impl;
 
+import cn.hutool.core.collection.CollUtil;
 import cn.hutool.json.JSONUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.jzg.commons.core.base.BaseController;
 import com.jzg.commons.core.page.HttpResult;
+import com.jzg.commons.entity.dto.SysUserJzgInfoDto;
 import com.jzg.commons.entity.po.*;
 import com.jzg.commons.entity.dto.SysDeptParam;
-import com.jzg.commons.entity.vo.ChangeDeptVo;
-import com.jzg.commons.entity.vo.DeptLeaderVo;
-import com.jzg.commons.entity.vo.SysUserVo;
+import com.jzg.commons.entity.vo.*;
 import com.jzg.commons.exception.SystemException;
 import com.jzg.commons.util.AssertionUtils;
 import com.jzg.commons.util.StringUtils;
 import com.jzg.commons.util.idgen.IdGenerate;
-import com.jzg.commons.entity.vo.SysDeptVo;
 import com.jzg.organization.mapper.SysDeptMapper;
 import com.jzg.organization.service.*;
 import org.slf4j.Logger;
@@ -147,7 +147,7 @@ public class SysDeptServiceImpl extends ServiceImpl<SysDeptMapper, SysDept> impl
 
     @Override
     @Transactional
-    public HttpResult deleteDept(SysDeptVo sysDeptVo) {
+    public HttpResult<String> deleteDept(SysDeptVo sysDeptVo) {
         SysDept sysDept = getById(sysDeptVo.getId());
         if (sysDept == null) {
             throw new SystemException("机构不存在");
@@ -159,7 +159,7 @@ public class SysDeptServiceImpl extends ServiceImpl<SysDeptMapper, SysDept> impl
         SysUserVo vo = new SysUserVo();
         vo.setDeptId(sysDept.getId());
         List<SysUserVo> userInfo = userService.getUserInfo(vo);
-        if (userInfo.stream().count() > 0) {
+        if ((long) userInfo.size() > 0) {
             throw new SystemException(sysDept.getName() + "机构下还有其他用户请将这些用户删除后,再进行删除");
         }
         sysDeptMapper.deleteById(sysDeptVo.getId());
@@ -168,7 +168,7 @@ public class SysDeptServiceImpl extends ServiceImpl<SysDeptMapper, SysDept> impl
 
     @Override
     @Transactional
-    public HttpResult batchDeleteDept(SysDeptVo sysDeptVo) {
+    public HttpResult<String> batchDeleteDept(SysDeptVo sysDeptVo) {
         sysDeptVo.getDeptIds().forEach(id->{
             SysDeptVo vo = new SysDeptVo();
             vo.setId(id);
@@ -179,6 +179,7 @@ public class SysDeptServiceImpl extends ServiceImpl<SysDeptMapper, SysDept> impl
 
     @Override
     public List<SysDeptVo> getDeptTree(String deptId, SysDeptParam param) {
+        log.info("查询部门信息:deptTid=[{}],param=[{}]",deptId, JSONUtil.toJsonStr(param));
         deptId = Objects.toString(deptId, "");
 
         String userSystemCode = Optional.ofNullable(param.getSysCode())
@@ -189,9 +190,15 @@ public class SysDeptServiceImpl extends ServiceImpl<SysDeptMapper, SysDept> impl
         SysSystem bySysCode = sysSystemService.getBySysCode(userSystemCode);
         SysDept sysDept = getById(deptId);
 
+        List<String> deptTids = this.obatinDeptTids(param.getUserInfo());
         List<SysDeptVo> voDept = baseMapper.selectDeptVoList(deptId, userSystemCode, param.getName())
                 .stream()
-                .map(item -> {
+                .filter(action->{
+                    if(CollUtil.isEmpty(deptTids)){
+                        return true;
+                    }
+                    return deptTids.contains(action.getId());
+                }).map(item -> {
                     SysDeptVo sysDeptVo = new SysDeptVo(item);
 
                     // 获取区域信息
@@ -212,7 +219,7 @@ public class SysDeptServiceImpl extends ServiceImpl<SysDeptMapper, SysDept> impl
 
                     return sysDeptVo;
                 })
-                .collect(Collectors.toList());
+                .toList();
 
         // 按父ID分组
         Map<String, List<SysDeptVo>> deptMap = voDept.stream()
@@ -231,6 +238,28 @@ public class SysDeptServiceImpl extends ServiceImpl<SysDeptMapper, SysDept> impl
         return sysDeptVos;
     }
 
+    /**
+     * 根据用户信息查询用户关联的机构的序号
+     *
+     * @author lipf
+     * @date 2026/5/6 15:48
+     */
+    private List<String> obatinDeptTids(String userInfo) {
+        List<String> deptTids = new ArrayList<>();
+        if(StringUtils.isNotEmpty(userInfo)){
+            Page page = new Page();
+            SysUserInfoListVo sysUserInfoListVo =  new SysUserInfoListVo();
+            sysUserInfoListVo.setIsMember("1");
+            sysUserInfoListVo.setSalesman(userInfo);
+            Page<SysUserJzgInfoDto> userInfoList = userService.getUserInfoList(page, sysUserInfoListVo);
+            List<SysUserJzgInfoDto> records = userInfoList.getRecords();
+            if(CollUtil.isNotEmpty(records)){
+                deptTids = records.stream().map(SysUserJzgInfoDto::getDeptId).toList();
+                log.info("查询出的用户信息所在部门:[{}]", JSONUtil.toJsonStr(deptTids));
+            }
+        }
+        return deptTids;
+    }
 
 
     @Override
@@ -241,9 +270,7 @@ public class SysDeptServiceImpl extends ServiceImpl<SysDeptMapper, SysDept> impl
         if(Objects.isNull(user)){
             throw new SystemException("用户不存在");
         }
-        depts.forEach(item->{
-            item.setLeaderId(deptLeaderVo.getLeaderId());
-        });
+        depts.forEach(item-> item.setLeaderId(deptLeaderVo.getLeaderId()));
         return this.updateBatchById(depts);
     }
 

+ 2 - 13
tenant/organization/src/main/resources/mapper/ReceivableMapper.xml

@@ -248,8 +248,7 @@
             LEFT JOIN ins_orders_risk ior1 ON ipi.order_no = ior1.order_no and ior1.risk_code = '0507'
             LEFT JOIN ins_orders_risk ior2 ON ipi.order_no = ior2.order_no and ior2.risk_code = '0510'
             LEFT JOIN ins_orders_policy iop ON ipi.order_no = iop.order_no
-        WHERE
-            1=1
+        WHERE 1=1
         AND NOT EXISTS ( SELECT 1 FROM ins_ply_income_invoice_link ipil WHERE ipil.income_id = ipi.id )
         <if test = "receivableQueryVo.agreementType != null and receivableQueryVo.agreementType == 1">
             AND ipi.agreement_type = #{receivableQueryVo.agreementType}
@@ -304,40 +303,30 @@
         <if test="receivableQueryVo.insuredName != null and receivableQueryVo.insuredName != ''">
             AND iocui.name = #{receivableQueryVo.insuredName}
         </if>
-
         <if test="receivableQueryVo.orderType != null and receivableQueryVo.orderType != ''">
             AND io.entry_status = #{receivableQueryVo.orderType}
         </if>
-
         <if test="receivableQueryVo.productName != null and receivableQueryVo.productName != ''">
             AND io.product_name = #{receivableQueryVo.productName}
         </if>
-
         <if test="receivableQueryVo.jqPolicyNo != null and receivableQueryVo.jqPolicyNo != ''">
             AND iop.jq_policy_no = #{receivableQueryVo.jqPolicyNo}
         </if>
-
         <if test="receivableQueryVo.syPolicyNo != null and receivableQueryVo.syPolicyNo != ''">
             AND iop.sy_policy_no = #{receivableQueryVo.syPolicyNo}
         </if>
-
         <if test="receivableQueryVo.jyPolicyNo != null and receivableQueryVo.jyPolicyNo != ''">
             AND iop.jy_policy_no = #{receivableQueryVo.jyPolicyNo}
         </if>
-
         <if test="receivableQueryVo.dockingPerson != null and receivableQueryVo.dockingPerson != ''">
             AND io.docking_person = #{receivableQueryVo.dockingPerson}
         </if>
-
         <if test="receivableQueryVo.jqStartDate != null and receivableQueryVo.jqStartDate != ''">
             AND ior1.start_date between #{receivableQueryVo.jqStartDate} and  #{receivableQueryVo.jqEndDate}
         </if>
-
         <if test="receivableQueryVo.syStartDate != null and receivableQueryVo.syStartDate != ''">
             AND ior2.start_date between #{receivableQueryVo.syStartDate} and  #{receivableQueryVo.syStartDate}
         </if>
-
-
     </select>
 
 
@@ -581,7 +570,7 @@
         ipiis.create_time as settlementTime -- 结算时间
         FROM
         ins_ply_income_invoice ipii
-        LEFT JOIN ins_ply_income_invoice_settlement ipiis ON ipiis.invoice_id = ipiis.id
+        LEFT JOIN ins_ply_income_invoice_settlement ipiis ON ipiis.invoice_id = ipii.id
         LEFT JOIN ins_ply_income_invoice_link ipil ON ipil.invoice_id = ipiis.invoice_id
         LEFT JOIN ins_ply_income ipi ON ipi.id = ipil.income_id
         LEFT JOIN ins_orders io ON ipi.order_no = io.id