瀏覽代碼

个贷新增批量出入库

wucl 6 月之前
父節點
當前提交
0f0cef0a1b

+ 25 - 0
biz-base/src/main/java/com/dayou/controller/WorkTaskRecordController.java

@@ -173,5 +173,30 @@ public class WorkTaskRecordController extends BaseController {
     public RestResponse<Page<AssetsTaskDoneVO>> getAssetsTaskDoneList(AssetsSelectDTO assetsSelectDTO, Page page) {
         return RestResponse.data(workTaskRecordService.getAssetsTaskDoneList(assetsSelectDTO, page));
     }
+
+
+    /**
+     * 个贷业务我的待办(入库)
+     * @param todoVO
+     * @param keyword
+     * @return
+     */
+    @GetMapping("/personal/inRep/todo")
+    public RestResponse<List<PersonalTodoVO>> personalInRepTodoList(PersonalTodoVO todoVO, String keyword){
+        List<PersonalTodoVO> ret = workTaskRecordService.personalInRepTodoList(todoVO,keyword);
+        return RestResponse.data(ret);
+    }
+
+    /**
+     * 个贷业务我的待办(出库)
+     * @param todoVO
+     * @param keyword
+     * @return
+     */
+    @GetMapping("/personal/outRep/todo")
+    public RestResponse<List<PersonalTodoVO>> personalOutRepTodoList(PersonalTodoVO todoVO, String keyword){
+        List<PersonalTodoVO> ret = workTaskRecordService.personalOutRepTodoList(todoVO,keyword);
+        return RestResponse.data(ret);
+    }
 }
 

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

@@ -57,4 +57,8 @@ public interface WorkTaskRecordMapper extends CustomBaseMapper<WorkTaskRecord> {
     TaskReminderVO getTaskReminderInfo(@Param("instanceNodeId") Long instanceNodeId);
 
     List<Long> getHandlerIdByLastNode(@Param("businessType")String businessType, @Param("businessId")Long businessId, @Param("businessSubId")String businessSubId, @Param("businessMinId")String businessMinId);
+
+    List<PersonalTodoVO> personalInRepTodoList(@Param("personal") PersonalTodoVO  personal, @Param("keyword")String keyword);
+
+    List<PersonalTodoVO> personalOutRepTodoList(@Param("personal") PersonalTodoVO todoVO, @Param("keyword")String keyword);
 }

+ 156 - 0
dao/src/main/resources/mapper/WorkTaskRecordMapper.xml

@@ -681,4 +681,160 @@
                 </if>
             )
     </select>
+
+    <select id="personalInRepTodoList"  parameterType="com.dayou.vo.TaskTodoVO" resultType="com.dayou.vo.PersonalTodoVO">
+        SELECT
+        wfni.id,
+        wtr.id AS taskId,
+        wfni.id AS currentNodeId,
+        wfni.business_id,
+        p.location,
+        p.order_id,
+        u1.name AS clientManager,
+        wfni.name AS nodeName,
+        wfni.code AS nodeCode,
+        u.name AS handlerName,
+        wtr.handler_id,
+        wtr.finished AS taskFinished,
+        p.created,
+        cc.name AS clientName,
+        cc1.name AS clientSubName,
+        p.agent,
+        cl.name AS contactName,
+        cl.mobile AS contactTel,
+        p.bailorA,
+        p.bailorB,
+        p.bailorA_tel,
+        p.bailorB_tel,
+        u2.name AS outwardStaffName,
+        u3.name AS inwardStaffName,
+        u4.name AS pricingStaffName,
+        wfni.created AS nodeCreated,
+        pt.acreage,
+        pt.amount,
+        pt.price,
+        pt.is_online,
+        c.comments
+        FROM
+        work_task_record wtr
+        LEFT JOIN work_node_task wnt ON wnt.id = wtr.task_id
+        INNER JOIN (
+        SELECT
+        wn.name,
+        wn.CODE,
+        wfni.id,
+        wfni.business_id,
+        wfni.state,
+        wfni.created,
+        wfni.modified
+        FROM
+        work_flow_node_instance wfni
+        LEFT JOIN work_node wn ON wn.id = wfni.node_id
+        WHERE
+        wfni.business_type = 'PERSONAL_BUSINESS'
+        AND wfni.state = 'PENDING'
+        AND wfni.deleted = 0
+        AND wn.deleted = 0
+        ) wfni ON wtr.instance_id = wfni.id
+        LEFT JOIN personal p ON p.id = wfni.business_id
+        LEFT JOIN customer_company cc ON cc.id = p.clientele_id
+        LEFT JOIN customer_company cc1 ON cc1.id = p.clientele_sub_id
+        LEFT JOIN customer_linkman cl ON cl.id = p.clientele_contact_id
+        LEFT JOIN user u ON u.id = wtr.handler_id
+        LEFT JOIN user u1 ON u1.id = p.client_manager_id
+        LEFT JOIN user u2 ON u2.id = p.outward_staff
+        LEFT JOIN user u3 ON u3.id = p.inward_staff
+        LEFT JOIN user u4 ON u4.id = p.pricing_staff
+        LEFT JOIN personal_target pt ON pt.personal_id = p.id
+        left join (
+        select business_id,comments from work_flow_log where concat(business_id,created) in (
+        select concat(business_id,max(created)) from work_flow_log where business_type = 'PERSONAL_BUSINESS' and comments is not null  group BY business_id
+        )
+        ) c on c.business_id = p.id
+        WHERE
+        wtr.handler_id = #{personal.handlerId}
+        AND u.deleted = 0
+        AND wnt.deleted = 0
+        AND wtr.deleted = 0
+        AND wfni.code in ('STATEMENT_IN','REPORT_IN','LETTER_IN')
+        order by wfni.modified DESC
+    </select>
+
+    <select id="personalOutRepTodoList"  parameterType="com.dayou.vo.TaskTodoVO" resultType="com.dayou.vo.PersonalTodoVO">
+        SELECT
+            wfni.id,
+            wtr.id AS taskId,
+            wfni.id AS currentNodeId,
+            wfni.business_id,
+            p.location,
+            p.order_id,
+            u1.name AS clientManager,
+            wfni.name AS nodeName,
+            wfni.code AS nodeCode,
+            u.name AS handlerName,
+            wtr.handler_id,
+            wtr.finished AS taskFinished,
+            p.created,
+            cc.name AS clientName,
+            cc1.name AS clientSubName,
+            p.agent,
+            cl.name AS contactName,
+            cl.mobile AS contactTel,
+            p.bailorA,
+            p.bailorB,
+            p.bailorA_tel,
+            p.bailorB_tel,
+            u2.name AS outwardStaffName,
+            u3.name AS inwardStaffName,
+            u4.name AS pricingStaffName,
+            wfni.created AS nodeCreated,
+            pt.acreage,
+            pt.amount,
+            pt.price,
+            pt.is_online,
+            c.comments
+        FROM
+            work_task_record wtr
+                LEFT JOIN work_node_task wnt ON wnt.id = wtr.task_id
+                INNER JOIN (
+                SELECT
+                    wn.name,
+                    wn.CODE,
+                    wfni.id,
+                    wfni.business_id,
+                    wfni.state,
+                    wfni.created,
+                    wfni.modified
+                FROM
+                    work_flow_node_instance wfni
+                        LEFT JOIN work_node wn ON wn.id = wfni.node_id
+                WHERE
+                    wfni.business_type = 'PERSONAL_BUSINESS'
+                  AND wfni.state = 'PENDING'
+                  AND wfni.deleted = 0
+                  AND wn.deleted = 0
+            ) wfni ON wtr.instance_id = wfni.id
+                LEFT JOIN personal p ON p.id = wfni.business_id
+                LEFT JOIN customer_company cc ON cc.id = p.clientele_id
+                LEFT JOIN customer_company cc1 ON cc1.id = p.clientele_sub_id
+                LEFT JOIN customer_linkman cl ON cl.id = p.clientele_contact_id
+                LEFT JOIN user u ON u.id = wtr.handler_id
+                LEFT JOIN user u1 ON u1.id = p.client_manager_id
+                LEFT JOIN user u2 ON u2.id = p.outward_staff
+                LEFT JOIN user u3 ON u3.id = p.inward_staff
+                LEFT JOIN user u4 ON u4.id = p.pricing_staff
+                LEFT JOIN personal_target pt ON pt.personal_id = p.id
+                left join (
+                select business_id,comments from work_flow_log where concat(business_id,created) in (
+                    select concat(business_id,max(created)) from work_flow_log where business_type = 'PERSONAL_BUSINESS' and comments is not null  group BY business_id
+                )
+            ) c on c.business_id = p.id
+        WHERE
+            wtr.handler_id = #{personal.handlerId}
+          AND u.deleted = 0
+          AND wnt.deleted = 0
+          AND wtr.deleted = 0
+          AND wfni.code in ('STATEMENT_OUT','REPORT_OUT','LETTER_OUT')
+        order by wfni.modified DESC
+    </select>
 </mapper>

+ 4 - 0
domain/src/main/java/com/dayou/dto/WorkNodeCommit.java

@@ -100,4 +100,8 @@ public class WorkNodeCommit {
      */
     private Boolean ifPay;
 
+    private String nodeCode;
+
+    private Long businessId;
+
 }

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

@@ -72,4 +72,8 @@ public interface IWorkTaskRecordService extends IService<WorkTaskRecord> {
      * @return
      */
     Long getHandlerIdByLastNode(String businessType,Long businessId,String businessSubId,String businessMinId);
+
+    List<PersonalTodoVO> personalInRepTodoList(PersonalTodoVO todoVO, String keyword);
+
+    List<PersonalTodoVO> personalOutRepTodoList(PersonalTodoVO todoVO, String keyword);
 }

+ 26 - 3
service/src/main/java/com/dayou/service/workflow/WorkFlowServiceImpl.java

@@ -2,22 +2,25 @@ package com.dayou.service.workflow;
 
 import cn.hutool.core.collection.CollectionUtil;
 import cn.hutool.core.util.ObjectUtil;
+import com.alibaba.fastjson.JSON;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.dayou.common.BaseEntity;
 import com.dayou.dto.WorkNodeCommit;
 import com.dayou.dto.WorkNodeDTO;
 import com.dayou.dto.WorkNodeInstanceTaskDTO;
-import com.dayou.entity.WorkFlow;
-import com.dayou.entity.WorkFlowNodeInstance;
-import com.dayou.entity.WorkNodeTask;
+import com.dayou.entity.*;
 import com.dayou.enums.MainBusinessEnum;
+import com.dayou.enums.ProductionEnum;
 import com.dayou.enums.workflow.NodeLogEnum;
 import com.dayou.enums.workflow.NodeStateEnum;
 import com.dayou.exception.ErrorCode;
+import com.dayou.mapper.PersonalMapper;
+import com.dayou.mapper.PersonalTargetMapper;
 import com.dayou.mapper.WorkFlowMapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.dayou.mapper.WorkTaskRecordMapper;
 import com.dayou.message.annotation.SendMessage;
+import com.dayou.service.IPersonalService;
 import com.dayou.utils.LoginContext;
 import com.dayou.vo.NameCodeVO;
 import com.dayou.workflow.handler.AssetsNodeHandler;
@@ -36,6 +39,7 @@ import java.util.stream.Collectors;
 
 import static com.dayou.enums.MainBusinessEnum.*;
 import static com.dayou.enums.workflow.NodeLogEnum.*;
+import static com.dayou.enums.workflow.WorkflowNodeEnum.REPORT_OUT;
 import static com.dayou.message.MessageTypeEnum.NODE_TODO_REMINDER;
 
 /**
@@ -73,6 +77,12 @@ public class WorkFlowServiceImpl extends ServiceImpl<WorkFlowMapper, WorkFlow> i
     @Autowired
     private WorkNodeProcessable workNodeProcessable;
 
+    @Autowired
+    private PersonalTargetMapper personalTargetMapper;
+
+    @Autowired
+    private PersonalMapper personalMapper;
+
 
     @Override
     @SuppressWarnings("unchecked")
@@ -157,6 +167,7 @@ public class WorkFlowServiceImpl extends ServiceImpl<WorkFlowMapper, WorkFlow> i
     @Transactional(rollbackFor = Exception.class)
     public Boolean batchCommit(List<WorkNodeCommit> workNodeCommits) {
         for (WorkNodeCommit workNodeCommit : workNodeCommits){
+            appendWorkNodeCommit(workNodeCommit);
             Boolean success = commit(workNodeCommit);
             // 碰到提交失败的流程抛出异常
             if (!success){
@@ -281,4 +292,16 @@ public class WorkFlowServiceImpl extends ServiceImpl<WorkFlowMapper, WorkFlow> i
         }
         return Boolean.FALSE;
     }
+
+    private void appendWorkNodeCommit(WorkNodeCommit workNodeCommit){
+        if (REPORT_OUT.name().equals(workNodeCommit.getNodeCode())){
+            PersonalTarget personalTarget = personalTargetMapper.selectOne(new LambdaQueryWrapper<PersonalTarget>().eq(PersonalTarget::getPersonalId, workNodeCommit.getBusinessId())
+                    .select(PersonalTarget::getFeedback).eq(BaseEntity::getDeleted, Boolean.FALSE));
+            workNodeCommit.setProduction(JSON.parseArray(personalTarget.getFeedback(), ProductionEnum.class));
+            Personal personal = personalMapper.selectOne(new LambdaQueryWrapper<Personal>().select(Personal::getClienteleId).eq(BaseEntity::getId, workNodeCommit.getBusinessId()).eq(BaseEntity::getDeleted, Boolean.FALSE));
+            if (personal != null){
+                workNodeCommit.setCcId(personal.getClienteleId());
+            }
+        }
+    }
 }

+ 15 - 0
service/src/main/java/com/dayou/service/workflow/WorkTaskRecordServiceImpl.java

@@ -21,6 +21,7 @@ import org.springframework.stereotype.Service;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 
+import java.util.Collections;
 import java.util.List;
 import java.util.stream.Collectors;
 
@@ -193,4 +194,18 @@ public class WorkTaskRecordServiceImpl extends ServiceImpl<WorkTaskRecordMapper,
         return null;
     }
 
+    @Override
+    public List<PersonalTodoVO> personalInRepTodoList(PersonalTodoVO todoVO, String keyword) {
+        todoVO.setHandlerId(LoginContext.getCurrentUserId());
+        List<PersonalTodoVO> ret = workTaskRecordMapper.personalInRepTodoList(todoVO,keyword);
+        return ret;
+    }
+
+    @Override
+    public List<PersonalTodoVO> personalOutRepTodoList(PersonalTodoVO todoVO, String keyword) {
+        todoVO.setHandlerId(LoginContext.getCurrentUserId());
+        List<PersonalTodoVO> ret = workTaskRecordMapper.personalOutRepTodoList(todoVO,keyword);
+        return ret;
+    }
+
 }