Selaa lähdekoodia

大中型提成申报审核

wucl 1 vuosi sitten
vanhempi
commit
7b0d6a9a99

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

@@ -7,6 +7,8 @@ import com.dayou.vo.CommissionDeclareTodoCheckVO;
 import com.dayou.vo.CommissionDeclareVO;
 import org.apache.ibatis.annotations.Param;
 
+import java.util.List;
+
 /**
  * <p>
  * 提成申报 Mapper 接口
@@ -24,4 +26,6 @@ public interface CommissionDeclareMapper extends CustomBaseMapper<CommissionDecl
     CommissionDeclareVO detail(@Param("id") Long id);
 
     Page<CommissionDeclareTodoCheckVO> todoCheckPage(Page page, @Param("checkVO")CommissionDeclareTodoCheckVO checkVO);
+
+    List<CommissionDeclareTodoCheckVO> todoCheckList(@Param("checkVO")CommissionDeclareTodoCheckVO checkVO);
 }

+ 16 - 8
dao/src/main/resources/mapper/CommissionDeclareMapper.xml

@@ -54,15 +54,15 @@
                                            FROM
                                                major m
                                                    LEFT JOIN ( SELECT id, NAME, major_id, report_no,created FROM major_production WHERE deleted = 0 ) mp ON m.id = mp.major_id
-                                                   LEFT JOIN USER u ON u.id = m.client_manager_id
-                                                   LEFT JOIN USER u1 ON u1.id = m.principal_id
+                                                   LEFT JOIN user u ON u.id = m.client_manager_id
+                                                   LEFT JOIN user u1 ON u1.id = m.principal_id
                                                    LEFT JOIN customer_company cc1 ON cc1.id = m.clientele_id
                                                    LEFT JOIN customer_company cc2 ON cc2.id = m.clientele_sub_id
                                            WHERE
                                                m.deleted = 0
                                              AND m.client_manager_id = #{marketUserId}
                                        ) major
-                                           LEFT JOIN ( SELECT id, ifnull( production_id, business_id ) AS xId, commission_rate_id,declare_result FROM commission_declare WHERE deleted = 0 ) cd ON major.mId = cd.xId) bus left join business_commission_rate bcr on
+                                           LEFT JOIN ( SELECT id, ifnull( production_id, business_id ) AS xId, commission_rate_id,declare_result FROM commission_declare WHERE deleted = 0  and declare_user_id = #{marketUserId}) cd ON major.mId = cd.xId) bus left join business_commission_rate bcr on
             bus.commission_rate_id = bcr.id left join dict_data dd on dd.id = bcr.business_cate_id
                             <where>
                                 <if test="declare!=null and declare.orderId!=null and declare.orderId!=''">
@@ -129,15 +129,15 @@
         FROM
         major m
         LEFT JOIN ( SELECT id, NAME, major_id, report_no,created FROM major_production WHERE deleted = 0 ) mp ON m.id = mp.major_id
-        LEFT JOIN USER u ON u.id = m.client_manager_id
-        LEFT JOIN USER u1 ON u1.id = m.principal_id
+        LEFT JOIN user u ON u.id = m.client_manager_id
+        LEFT JOIN user u1 ON u1.id = m.principal_id
         LEFT JOIN customer_company cc1 ON cc1.id = m.clientele_id
         LEFT JOIN customer_company cc2 ON cc2.id = m.clientele_sub_id
         WHERE
         m.deleted = 0
         AND m.principal_id = #{evaluateUserId}
         ) major
-        LEFT JOIN ( SELECT id, ifnull( production_id, business_id ) AS xId, commission_rate_id,declare_result FROM commission_declare WHERE deleted = 0 ) cd ON major.mId = cd.xId) bus left join business_commission_rate bcr on
+        LEFT JOIN ( SELECT id, ifnull( production_id, business_id ) AS xId, commission_rate_id,declare_result FROM commission_declare WHERE deleted = 0 and declare_user_id = #{evaluateUserId} ) cd ON major.mId = cd.xId) bus left join business_commission_rate bcr on
         bus.commission_rate_id = bcr.id left join dict_data dd on dd.id = bcr.business_cate_id
         <where>
             <if test="declare!=null and declare.orderId!=null and declare.orderId!=''">
@@ -195,7 +195,7 @@
             where cd.deleted = 0 and bcr.deleted = 0 and cd.id =#{id}
     </select>
 
-    <select id="todoCheckPage" parameterType="com.dayou.vo.CommissionDeclareTodoCheckVO"  resultType="com.dayou.vo.CommissionDeclareTodoCheckVO">
+    <sql id="majorDeclareTodoCheck">
         SELECT
             wfni.id,
             wtr.id AS taskId,
@@ -234,7 +234,7 @@
                   AND wfni.deleted = 0
                   AND wn.deleted = 0
             ) wfni ON wtr.instance_id = wfni.id
-                LEFT JOIN ( SELECT id, ifnull( production_id, business_id ) AS xId, commission_rate_id, declare_result, declare_user_id,created FROM commission_declare WHERE deleted = 0 ) cd ON cd.id = wfni.business_id
+                INNER JOIN ( SELECT id, ifnull( production_id, business_id ) AS xId, commission_rate_id, declare_result, declare_user_id,created FROM commission_declare WHERE deleted = 0 ) cd ON cd.id = wfni.business_id
                 LEFT JOIN (
                 SELECT
                     ifnull( mp.id, m.id ) AS mId,
@@ -255,5 +255,13 @@
             wtr.handler_id = #{checkVO.handlerId}
           AND u.deleted = 0
           AND wtr.deleted = 0
+    </sql>
+    <select id="todoCheckPage" parameterType="com.dayou.vo.CommissionDeclareTodoCheckVO"  resultType="com.dayou.vo.CommissionDeclareTodoCheckVO">
+        <include refid="majorDeclareTodoCheck"/>
+    </select>
+
+    <select id="todoCheckList" resultType="com.dayou.vo.CommissionDeclareTodoCheckVO">
+        <include refid="majorDeclareTodoCheck"/>
+        limit 8
     </select>
 </mapper>

+ 4 - 0
domain/src/main/java/com/dayou/vo/CommissionDeclareDetailVO.java

@@ -32,5 +32,9 @@ public class CommissionDeclareDetailVO {
 
     private String production;
 
+    private String declareResult;
+
+    private List<String> remarks;
+
     private List<UserShareRate> userShareRates;
 }

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

@@ -10,6 +10,9 @@ import com.dayou.vo.CommissionDeclareTodoCheckVO;
 import com.dayou.vo.CommissionDeclareVO;
 import org.apache.poi.xssf.usermodel.XSSFWorkbook;
 import org.springframework.web.multipart.MultipartFile;
+
+import java.util.List;
+
 /**
  * <p>
  * 提成申报 服务类
@@ -32,4 +35,6 @@ public interface ICommissionDeclareService extends IService<CommissionDeclare> {
     CommissionDeclareDetailVO detail(Long id);
 
     Page<CommissionDeclareTodoCheckVO> todoCheckPage(Page page, CommissionDeclareTodoCheckVO checkVO);
+
+    List<CommissionDeclareTodoCheckVO> todoCheckList();
 }

+ 25 - 2
service/src/main/java/com/dayou/service/impl/CommissionDeclareServiceImpl.java

@@ -13,6 +13,7 @@ import com.dayou.enums.UserTypeEnum;
 import com.dayou.mapper.CommissionDeclareMapper;
 import com.dayou.service.*;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.dayou.service.workflow.IWorkFlowNodeInstanceService;
 import com.dayou.service.workflow.IWorkFlowService;
 import com.dayou.utils.LoginContext;
 import com.dayou.vo.CommissionDeclareDetailVO;
@@ -23,9 +24,13 @@ import org.springframework.stereotype.Service;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import org.springframework.transaction.annotation.Transactional;
 
+import java.util.Arrays;
 import java.util.List;
 import java.util.stream.Collectors;
 
+import static com.dayou.enums.MainBusinessEnum.COMMISSION_DECLARE_MAJOR_EVALUATE;
+import static com.dayou.enums.MainBusinessEnum.COMMISSION_DECLARE_MAJOR_MARKET;
+
 
 /**
  * <p>
@@ -54,6 +59,9 @@ public class CommissionDeclareServiceImpl extends ServiceImpl<CommissionDeclareM
     @Autowired
     private IMajorService majorService;
 
+    @Autowired
+    private IWorkFlowNodeInstanceService workFlowNodeInstanceService;
+
 
 
     @Override
@@ -106,6 +114,11 @@ public class CommissionDeclareServiceImpl extends ServiceImpl<CommissionDeclareM
         CommissionDeclareVO declare = commissionDeclareMapper.detail(id);
         BeanUtil.copyProperties(declare,commissionDeclareDetailVO);
         if (declare.getBusinessType().equals(MainBusinessEnum.MAJOR_BUSINESS.name())){
+            List<MainBusinessEnum> majorDeclareEnums = Arrays.asList(COMMISSION_DECLARE_MAJOR_MARKET, COMMISSION_DECLARE_MAJOR_EVALUATE);
+            List<WorkFlowNodeInstance> instances = workFlowNodeInstanceService.list(new LambdaQueryWrapper<WorkFlowNodeInstance>().eq(WorkFlowNodeInstance::getBusinessId, id)
+                    .in(WorkFlowNodeInstance::getBusinessType, majorDeclareEnums));
+            List<String> remarks = instances.stream().map(WorkFlowNodeInstance::getComment).collect(Collectors.toList());
+            commissionDeclareDetailVO.setRemarks(remarks);
             if (declare.getBusinessId()!=null){
                 Major order = majorService.getOne(new LambdaQueryWrapper<Major>().select(Major::getOrderId, Major::getName).eq(BaseEntity::getId, declare.getBusinessId()).eq(BaseEntity::getDeleted, Boolean.FALSE));
                 commissionDeclareDetailVO.setOrderId(order.getOrderId());
@@ -136,6 +149,14 @@ public class CommissionDeclareServiceImpl extends ServiceImpl<CommissionDeclareM
         return ret;
     }
 
+    @Override
+    public List<CommissionDeclareTodoCheckVO> todoCheckList() {
+        CommissionDeclareTodoCheckVO checkVO = new CommissionDeclareTodoCheckVO();
+        checkVO.setHandlerId(LoginContext.getCurrentUserId());
+        List<CommissionDeclareTodoCheckVO> list = commissionDeclareMapper.todoCheckList(checkVO);
+        return list;
+    }
+
     /**
      * 删除之前被拒绝的申报
      * @param declareDTO
@@ -146,11 +167,13 @@ public class CommissionDeclareServiceImpl extends ServiceImpl<CommissionDeclareM
         CommissionDeclare commissionDeclare = null;
         if (businessId!=null && productionId!=null){
             commissionDeclare = this.getOne(new LambdaQueryWrapper<CommissionDeclare>().eq(CommissionDeclare::getBusinessId, businessId)
-                    .eq(CommissionDeclare::getProductionId, productionId));
+                    .eq(CommissionDeclare::getProductionId, productionId).eq(CommissionDeclare::getBusinessType,declareDTO.getBusinessType())
+                    .eq(CommissionDeclare::getDeclareUserId,LoginContext.getCurrentUserId()));
         }
         if (businessId!=null && productionId==null){
             commissionDeclare = this.getOne(new LambdaQueryWrapper<CommissionDeclare>().eq(CommissionDeclare::getBusinessId, businessId)
-                    .isNull(CommissionDeclare::getProductionId));
+                    .isNull(CommissionDeclare::getProductionId).eq(CommissionDeclare::getBusinessType,declareDTO.getBusinessType())
+                    .eq(CommissionDeclare::getDeclareUserId,LoginContext.getCurrentUserId()));
         }
         if (commissionDeclare!=null){
             this.delete(commissionDeclare.getId());

+ 18 - 3
service/src/main/java/com/dayou/workflow/config/WorkNodeProcessable.java

@@ -39,6 +39,7 @@ import java.util.stream.Collectors;
 import static com.dayou.common.Constants.MAJOR_HANDLER;
 import static com.dayou.common.Constants.PERSONAL_HANDLER;
 import static com.dayou.enums.FinanceInvoiceState.审核拒绝;
+import static com.dayou.enums.FinanceInvoiceState.审核通过;
 import static com.dayou.enums.GlobalConfigEnum.COMMISSION_MAJOR_EVALUATE_DEPARTMENT;
 import static com.dayou.enums.GlobalConfigEnum.COMMISSION_MAJOR_MARKET_DEPARTMENT;
 import static com.dayou.enums.workflow.NodeLogEnum.PASS;
@@ -112,7 +113,7 @@ public class WorkNodeProcessable {
         //寻找下一个节点,有可能下一个节点并非流程配置的节点,需根据业务数据变动
         WorkNodeDTO nextWorkNode = workNodeService.getNextWorkNode(currentInstanceNode.getFlowId(), currentInstanceNode.getNodeId());
 
-//        if (nextWorkNode==null && !currentInstanceNode.getNodeCode().equals(WorkflowNodeEnum.BUSINESS_ARCHIVING.name())){
+//        if (nextWorkNode==null){
 //            ErrorCode.throwBusinessException(ErrorCode.NEXT_NODE_NOT_EXISTS);
 //        }
 
@@ -125,9 +126,23 @@ public class WorkNodeProcessable {
         WorkNodeDTO nextWorkNode = beforeForward(workNodeCommit,currentInstanceNode);
         if (nextWorkNode!=null){
             addNextInstanceNode(currentInstanceNode,nextWorkNode, workNodeCommit.getNextHandlerId(),workNodeCommit.getBusinessSubId(),workNodeCommit.getBusinessMinId());
-            return Boolean.TRUE;
+        }else {
+            //下一个节点为空,代表整体流程结束。如果需要对业务数据的修改请在这个方法里处理
+            afterForward(currentInstanceNode);
+        }
+        return Boolean.TRUE;
+    }
+
+    private void afterForward(WorkFlowNodeInstance currentInstanceNode) {
+        //终止前节点控制前置处理。
+        MainBusinessEnum mainBusinessEnum = MainBusinessEnum.valueOf(currentInstanceNode.getBusinessType());
+        switch (mainBusinessEnum){
+            case COMMISSION_DECLARE_MAJOR_EVALUATE:
+            case COMMISSION_DECLARE_MAJOR_MARKET:
+                commissionDeclareService.update(new LambdaUpdateWrapper<CommissionDeclare>().set(CommissionDeclare::getDeclareResult,审核通过.name())
+                        .eq(BaseEntity::getId,currentInstanceNode.getBusinessId()));
+                break;
         }
-        return Boolean.FALSE;
     }
 
 

+ 6 - 6
sql/update_sql.sql

@@ -429,11 +429,11 @@ CREATE TABLE `business_production_choice_log`
   COLLATE = utf8mb4_general_ci COMMENT = '产品选择记录'
   ROW_FORMAT = Dynamic;
 
-ALTER TABLE work_flow_node_instance MODIFY COLUMN business_type varchar(128) comment '业务类型';
-
 /**
-  日期:2024-05-16
-  修改人:苟耕铨
+  日期:2024-05-20
+  修改人:吴长林
  */
-# 选择记录表新增字段
-ALTER TABLE business_production_choice_log ADD COLUMN production_id bigint(20) NULL COMMENT '产品id';
+ALTER TABLE work_flow MODIFY COLUMN code varchar(128) comment '流程编码';
+ALTER TABLE work_node_task MODIFY COLUMN code varchar(128) comment '流程编码';
+ALTER TABLE work_flow_node_instance MODIFY COLUMN business_type varchar(128) comment '业务类型';
+DROP TABLE IF EXISTS `business_attachment`;