Przeglądaj źródła

个贷后续细节优化1

wucl 1 rok temu
rodzic
commit
76cd9e36be

+ 15 - 0
biz-base/src/main/java/com/dayou/controller/BusinessProductionController.java

@@ -6,6 +6,7 @@ import com.dayou.dto.OrderProductionsBag;
 import com.dayou.dto.OrderReportDTO;
 import com.dayou.dto.ReportDTO;
 import com.dayou.service.IBusinessProductionService;
+import com.dayou.service.IFinanceClaimService;
 import com.dayou.service.IMajorProductionService;
 import com.dayou.service.IPersonalProductionService;
 import lombok.extern.slf4j.Slf4j;
@@ -35,6 +36,9 @@ public class BusinessProductionController {
     @Autowired
     private IPersonalProductionService personalProductionService;
 
+    @Autowired
+    private IFinanceClaimService financeClaimService;
+
     /**
      * 大中型产品包
      */
@@ -73,6 +77,7 @@ public class BusinessProductionController {
         return RestResponse.data(list);
     }
 
+
     /**
      * 实收款认领
      * @return
@@ -103,4 +108,14 @@ public class BusinessProductionController {
         Boolean ret = businessProductionService.addPublicStamp(nameUrlDTO.getUrl());
         return RestResponse.data(ret);
     }
+
+    /**
+     * 个贷实收款选择认领
+     * @return
+     */
+    @PostMapping("/allotRealAmount/personal")
+    public RestResponse<Boolean> personalAllotRealAmount(@RequestBody List<OrderReportDTO> claimOrders){
+        Boolean ret = financeClaimService.personalAllotRealAmount(claimOrders);
+        return RestResponse.data(ret);
+    }
 }

+ 13 - 4
biz-base/src/main/java/com/dayou/controller/WorkTaskRecordController.java

@@ -1,9 +1,6 @@
 package com.dayou.controller;
 
-import com.dayou.vo.MajorTaskDoneVO;
-import com.dayou.vo.PersonalTodoVO;
-import com.dayou.vo.TaskTodoVO;
-import com.dayou.vo.WorkTaskRecordVO;
+import com.dayou.vo.*;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.RequestMapping;
@@ -123,5 +120,17 @@ public class WorkTaskRecordController extends BaseController {
         return RestResponse.data(ret);
     }
 
+    /**
+     * 个贷业务我的已办
+     * @param doneVO
+     * @param page
+     * @return
+     */
+    @GetMapping("/personal/done")
+    public RestResponse<Page<PersonalTaskDoneVO>> personalTaskDonePage(PersonalTaskDoneVO doneVO, Page page, String keyword){
+        Page<PersonalTaskDoneVO> ret = workTaskRecordService.personalTaskDonePage(doneVO,page,keyword);
+        return RestResponse.data(ret);
+    }
+
 }
 

+ 3 - 4
dao/src/main/java/com/dayou/mapper/WorkTaskRecordMapper.java

@@ -4,10 +4,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.dayou.dto.WorkNodeInstanceTaskDTO;
 import com.dayou.entity.WorkTaskRecord;
 import com.dayou.dao.CustomBaseMapper;
-import com.dayou.vo.MajorTaskDoneVO;
-import com.dayou.vo.PersonalTodoVO;
-import com.dayou.vo.TaskTodoVO;
-import com.dayou.vo.WorkTaskRecordVO;
+import com.dayou.vo.*;
 import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
@@ -37,4 +34,6 @@ public interface WorkTaskRecordMapper extends CustomBaseMapper<WorkTaskRecord> {
     void batchFinishTask(@Param("ids") List<Long> ids);
 
     Page<PersonalTodoVO> personalTodoPage(Page page, @Param("todoVO") PersonalTodoVO  todoVO, @Param("keyword")String keyword);
+
+    Page<PersonalTaskDoneVO> personalTaskDonePage(Page page, @Param("todoVO")PersonalTaskDoneVO doneVO, @Param("keyword")String keyword);
 }

+ 1 - 1
dao/src/main/resources/mapper/FinanceClaimMapper.xml

@@ -28,7 +28,7 @@
         SELECT
             fc.id,
             fc.real_fund_id,
-            ( CASE orf.business_type WHEN 'MAJOR_BUSINESS' THEN '大中型业务' ELSE '-' END ) AS businessType,
+            ( CASE orf.business_type WHEN 'MAJOR_BUSINESS' THEN '大中型业务' WHEN 'PERSONAL_BUSINESS' THEN '个贷业务' ELSE '-' END ) AS businessType,
             orf.should_amount,
             fc.claim_amount,
             u.NAME AS claimName,

+ 60 - 2
dao/src/main/resources/mapper/WorkTaskRecordMapper.xml

@@ -182,7 +182,7 @@
             wf.id,
             u.name AS handler,
             wf.handler_id,
-            wf.state,
+        (case wf.state when 'PASS' then '提交' when 'REVERSE' then '退回' when 'TERMINATE' then '终止' else '-' end) as state,
             wf.handing_time as handingTimeLong,
             wf.comments,
             wf.business_type,
@@ -197,7 +197,7 @@
         (select name from major_production where deleted = 0 and report_no= (ifnull(wf.business_min_id,wf.business_sub_id))) as productionName
         FROM
             (
-                    ( SELECT * FROM work_flow_log WHERE handler_id = #{todoVO.handlerId} ) wf
+                    ( SELECT * FROM work_flow_log WHERE handler_id = #{todoVO.handlerId}  and business_type='MAJOR_BUSINESS' ) wf
                     LEFT JOIN ( SELECT id, node_id, business_id ,state FROM work_flow_node_instance ) wfni ON wf.instance_id = wfni.id
                     LEFT JOIN ( SELECT id, NAME FROM work_node WHERE deleted = 0 ) wn ON wn.id = wfni.node_id
                     LEFT JOIN ( SELECT id, order_id, NAME FROM major WHERE deleted = 0 ) m ON m.id = wf.business_id
@@ -304,4 +304,62 @@
         AND wtr.deleted = 0
     </select>
 
+    <select id="personalTaskDonePage" parameterType="com.dayou.vo.PersonalTaskDoneVO" resultType="com.dayou.vo.PersonalTaskDoneVO">
+        SELECT
+            wf.id,
+            u.name AS handler,
+            wf.handler_id,
+            (case wf.state when 'PASS' then '提交' when 'REVERSE' then '退回' when 'TERMINATE' then '终止' else '-' end) as state,
+            wf.handing_time as handingTimeLong,
+            wf.comments,
+            wf.business_type,
+            p.id AS personalId,
+            p.order_id,
+            p.location,
+            p.clientName,
+            p.clientSubName,
+            p.bailorA,
+            p.bailorB,
+            wn.name AS nodeName,
+            wf.created as finishTime,
+            ifnull(wf.business_min_id,wf.business_sub_id) as reportNo,
+            wfni.state as instanceState,
+            wfni.id as instanceId
+
+        FROM
+            (
+                ( SELECT * FROM work_flow_log WHERE handler_id = #{todoVO.handlerId} and business_type='PERSONAL_BUSINESS' ) wf
+                    LEFT JOIN ( SELECT id, node_id, business_id ,state FROM work_flow_node_instance ) wfni ON wf.instance_id = wfni.id
+                    LEFT JOIN ( SELECT id, name FROM work_node WHERE deleted = 0 ) wn ON wn.id = wfni.node_id
+                    LEFT JOIN ( 	SELECT p.id, p.order_id, p.location,cc.name as clientName,cc1.name as clientSubName,p.bailorA,p.bailorB FROM personal p left join customer_company cc on cc.id =
+                                                                                                                                                                                            p.clientele_id left join customer_company cc1 on cc1.id = p.clientele_sub_id
+                                   WHERE p.deleted = 0) p ON p.id = wf.business_id
+                    LEFT JOIN user u ON u.id = wf.handler_id
+                )
+        <where>
+            <if test="keyword!=null and keyword!='' ">
+                and (
+                p.location like concat ('%',#{keyword},'%')
+                or p.order_id like concat('%',#{keyword},'%')
+                or p.clientName like concat('%',#{keyword},'%')
+                or p.clientSubName like concat('%',#{keyword},'%')
+                )
+            </if>
+            <if test="todoVO!=null and todoVO.nodeName!=null and todoVO.nodeName!='' ">
+                and wn.name = #{todoVO.nodeName}
+            </if>
+            <if test="todoVO!=null and todoVO.state!=null and todoVO.state!='' ">
+                and wf.state = #{todoVO.state}
+            </if>
+            <if test="todoVO!=null and todoVO.startDate!=null and todoVO.startDate!=''">
+                and wf.created &gt;= #{todoVO.startDate}
+            </if>
+            <if test="todoVO!=null and todoVO.endDate!=null and todoVO.endDate!=''">
+                and wf.created &lt;= #{todoVO.endDate}
+            </if>
+        </where>
+        ORDER BY
+        wf.created DESC
+    </select>
+
 </mapper>

+ 97 - 0
domain/src/main/java/com/dayou/vo/PersonalTaskDoneVO.java

@@ -0,0 +1,97 @@
+package com.dayou.vo;
+
+import lombok.Data;
+
+import java.time.LocalDate;
+
+/**
+ * 类说明:
+ *
+ * @author: wucl
+ * @since: 2024/4/11
+ * created with IntelliJ IDEA.
+ */
+@Data
+public class PersonalTaskDoneVO {
+
+    /**
+     * id
+     */
+    private Long id;
+    /**
+     * 订单id
+     */
+    private Long personalId;
+
+    /**
+     * 处理人id
+     */
+    private Long handlerId;
+
+    /**
+     * 处理人
+     */
+    private String handler;
+
+
+    private String state;
+
+
+    /**
+     * 完成时间
+     */
+    private LocalDate finishTime;
+
+    /**
+     * 完成时长
+     */
+    private String handingTime;
+
+    private Long  handingTimeLong;
+
+    /**
+     * 处理意见
+     */
+    private String comments;
+
+
+    /**
+     * 市场订单号
+     */
+    private String orderId;
+
+    /**
+     * 坐落
+     */
+    private String location;
+
+    /**
+     * 节点名称
+     */
+    private String nodeName;
+
+    /**
+     * 客户名称
+     */
+    private String clientName;
+
+    /**
+     * 业务来源
+     */
+    private String clientSubName;
+    /**
+     * 委托人A
+     */
+    private String bailorA;
+    /**
+     * 委托人B
+     */
+    private String bailorB;
+
+    private Long instanceId;
+
+    private String startDate;
+
+    private String endDate;
+
+}

+ 3 - 0
service/src/main/java/com/dayou/service/IFinanceClaimService.java

@@ -1,4 +1,5 @@
 package com.dayou.service;
+import com.dayou.dto.OrderReportDTO;
 import com.dayou.dto.PersonalClaimDTO;
 import com.dayou.entity.FinanceClaim;
 import com.baomidou.mybatisplus.extension.service.IService;
@@ -43,4 +44,6 @@ public interface IFinanceClaimService extends IService<FinanceClaim> {
 
     Boolean doClaimByTemplateDTO(List<PersonalClaimDTO> personalClaimDTOS, Long financeFundId, BigDecimal residueAmount);
     BigDecimal residueAmount(Long financeFundId);
+
+    Boolean personalAllotRealAmount(List<OrderReportDTO> claimOrders);
 }

+ 5 - 0
service/src/main/java/com/dayou/service/IPersonalProductionService.java

@@ -1,5 +1,6 @@
 package com.dayou.service;
 import com.dayou.dto.OrderProductionsBag;
+import com.dayou.dto.OrderReportDTO;
 import com.dayou.dto.TaskRecordDTO;
 import com.dayou.entity.PersonalProduction;
 import com.baomidou.mybatisplus.extension.service.IService;
@@ -7,6 +8,9 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import org.apache.poi.xssf.usermodel.XSSFWorkbook;
 import org.springframework.web.multipart.MultipartFile;
+
+import java.util.List;
+
 /**
  * <p>
  * 个贷产品 服务类
@@ -40,4 +44,5 @@ public interface IPersonalProductionService extends IService<PersonalProduction>
     Boolean repertoryOut(TaskRecordDTO<PersonalProduction> taskRecordDTO);
 
     OrderProductionsBag productionBag(Long id);
+
 }

+ 7 - 0
service/src/main/java/com/dayou/service/impl/FinanceClaimServiceImpl.java

@@ -4,6 +4,7 @@ import cn.hutool.core.collection.CollectionUtil;
 import cn.hutool.core.util.StrUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.dayou.common.BaseEntity;
+import com.dayou.dto.OrderReportDTO;
 import com.dayou.dto.PersonalClaimDTO;
 import com.dayou.entity.FinanceClaim;
 import com.dayou.entity.FinanceRealFund;
@@ -169,6 +170,12 @@ public class FinanceClaimServiceImpl extends ServiceImpl<FinanceClaimMapper, Fin
         return financeClaimMapper.residueAmount(financeFundId);
     }
 
+    @Override
+    public Boolean personalAllotRealAmount(List<OrderReportDTO> claimOrders) {
+        //todo
+        return null;
+    }
+
     private BigDecimal checkFinanceFound(Long financeFundId) {
         BigDecimal residueAmount = residueAmount(financeFundId);
         if (residueAmount==null){

+ 3 - 4
service/src/main/java/com/dayou/service/workflow/IWorkTaskRecordService.java

@@ -4,10 +4,7 @@ import com.dayou.entity.WorkNodeTask;
 import com.dayou.entity.WorkTaskRecord;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.dayou.vo.MajorTaskDoneVO;
-import com.dayou.vo.PersonalTodoVO;
-import com.dayou.vo.TaskTodoVO;
-import com.dayou.vo.WorkTaskRecordVO;
+import com.dayou.vo.*;
 import com.dayou.workflow.config.WorkNodeProcessable;
 
 import java.util.List;
@@ -41,4 +38,6 @@ public interface IWorkTaskRecordService extends IService<WorkTaskRecord> {
     Page<MajorTaskDoneVO> majorTaskDonePage(MajorTaskDoneVO doneVO, Page page,String keyword);
 
     Page<PersonalTodoVO> personalTodoPage(PersonalTodoVO todoVO, Page page, String keyword);
+
+    Page<PersonalTaskDoneVO> personalTaskDonePage(PersonalTaskDoneVO doneVO, Page page, String keyword);
 }

+ 11 - 4
service/src/main/java/com/dayou/service/workflow/WorkTaskRecordServiceImpl.java

@@ -8,10 +8,7 @@ import com.dayou.mapper.WorkTaskRecordMapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.dayou.utils.DateUtils;
 import com.dayou.utils.LoginContext;
-import com.dayou.vo.MajorTaskDoneVO;
-import com.dayou.vo.PersonalTodoVO;
-import com.dayou.vo.TaskTodoVO;
-import com.dayou.vo.WorkTaskRecordVO;
+import com.dayou.vo.*;
 import com.dayou.workflow.config.WorkNodeProcessable;
 import com.google.common.collect.Lists;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -128,4 +125,14 @@ public class WorkTaskRecordServiceImpl extends ServiceImpl<WorkTaskRecordMapper,
         return ret;
     }
 
+    @Override
+    public Page<PersonalTaskDoneVO> personalTaskDonePage(PersonalTaskDoneVO doneVO, Page page, String keyword) {
+        doneVO.setHandlerId(LoginContext.getCurrentUserId());
+        Page<PersonalTaskDoneVO> done =workTaskRecordMapper.personalTaskDonePage(page,doneVO,keyword);
+        done.getRecords().stream().forEach(x->{
+            x.setHandingTime(DateUtils.getTimeLong(x.getHandingTimeLong()==null?0L:x.getHandingTimeLong()));
+        });
+        return done;
+    }
+
 }