Browse Source

Merge branch 'master' of http://47.108.172.52:3000/dayou/item-management-1phase

# Conflicts:
#	sql/update_sql.sql
GouGengquan 1 year ago
parent
commit
343272e687
21 changed files with 297 additions and 51 deletions
  1. 9 0
      biz-base/src/main/java/com/dayou/controller/CommissionDeclareController.java
  2. 10 0
      biz-base/src/main/java/com/dayou/controller/WorkFlowNodeInstanceController.java
  3. 11 1
      biz-base/src/test/java/rich/TestMainSimple.java
  4. 3 0
      dao/src/main/java/com/dayou/mapper/CommissionDeclareMapper.java
  5. 2 0
      dao/src/main/java/com/dayou/mapper/MajorProductionAllotMapper.java
  6. 62 0
      dao/src/main/resources/mapper/CommissionDeclareMapper.xml
  7. 5 0
      dao/src/main/resources/mapper/MajorProductionAllotMapper.xml
  8. 2 1
      dao/src/main/resources/mapper/MajorProductionMapper.xml
  9. 55 0
      domain/src/main/java/com/dayou/vo/CommissionDeclareTodoCheckVO.java
  10. 3 1
      domain/src/main/java/com/dayou/vo/MajorProductionPerformanceVO.java
  11. 2 2
      gen/gen.iml
  12. 3 0
      service/src/main/java/com/dayou/service/ICommissionDeclareService.java
  13. 2 0
      service/src/main/java/com/dayou/service/IMajorProductionAllotService.java
  14. 35 5
      service/src/main/java/com/dayou/service/impl/CommissionDeclareServiceImpl.java
  15. 6 0
      service/src/main/java/com/dayou/service/impl/MajorProductionAllotServiceImpl.java
  16. 2 0
      service/src/main/java/com/dayou/service/workflow/IWorkFlowNodeInstanceService.java
  17. 24 0
      service/src/main/java/com/dayou/service/workflow/WorkFlowNodeInstanceServiceImpl.java
  18. 1 1
      service/src/main/java/com/dayou/service/workflow/WorkFlowServiceImpl.java
  19. 58 35
      service/src/main/java/com/dayou/workflow/config/WorkNodeProcessable.java
  20. 0 5
      service/src/main/java/com/dayou/workflow/handler/AssetsNodeHandler.java
  21. 2 0
      sql/update_sql.sql

+ 9 - 0
biz-base/src/main/java/com/dayou/controller/CommissionDeclareController.java

@@ -3,6 +3,7 @@ package com.dayou.controller;
 import com.dayou.dto.CommissionDeclareDTO;
 import com.dayou.dto.WorkNodeCommit;
 import com.dayou.vo.CommissionDeclareDetailVO;
+import com.dayou.vo.CommissionDeclareTodoCheckVO;
 import com.dayou.vo.CommissionDeclareVO;
 import org.apache.poi.xssf.usermodel.XSSFWorkbook;
 import lombok.extern.slf4j.Slf4j;
@@ -90,5 +91,13 @@ public class CommissionDeclareController extends BaseController {
         return RestResponse.data(detail);
     }
 
+    /**
+     * 大中型提成申报待审核列表
+     */
+    @GetMapping("/major/check")
+    public RestResponse<Page<CommissionDeclareTodoCheckVO>> todoCheckPage(CommissionDeclareTodoCheckVO checkVO, Page page){
+        Page<CommissionDeclareTodoCheckVO> ret = commissionDeclareService.todoCheckPage(page,checkVO);
+        return RestResponse.data(ret);
+    }
 }
 

+ 10 - 0
biz-base/src/main/java/com/dayou/controller/WorkFlowNodeInstanceController.java

@@ -87,6 +87,16 @@ public class WorkFlowNodeInstanceController extends BaseController {
     }
 
     /**
+     * 更通用一些的流程图
+     * @param instance
+     * @return
+     */
+    @PostMapping("/array")
+    public RestResponse<List<WorkNodeInstanceVO>> instanceArray(@RequestBody @Valid InstanceNodeDTO instance){
+        List<WorkNodeInstanceVO> queue = workFlowNodeInstanceService.instanceArray(instance);
+        return RestResponse.data(queue);
+    }
+    /**
      * 获取当前实例节点
      * @param instance
      * @return

+ 11 - 1
biz-base/src/test/java/rich/TestMainSimple.java

@@ -1,11 +1,14 @@
 //package rich;
 //
 //import com.dayou.BaseApplication;
+//import com.dayou.dto.InstanceNodeDTO;
 //import com.dayou.dto.SectionTitleDTO;
 //import com.dayou.bo.RichObject;
 //import com.dayou.service.IReportMainService;
+//import com.dayou.service.workflow.IWorkFlowNodeInstanceService;
 //import com.dayou.utils.RichHtmlHandler;
 //import com.dayou.utils.WordGeneratorWithFreemarker;
+//import com.dayou.vo.WorkNodeInstanceVO;
 //import lombok.extern.slf4j.Slf4j;
 //import org.junit.Test;
 //import org.junit.runner.RunWith;
@@ -31,6 +34,9 @@
 //    @Autowired
 //    private IReportMainService reportMainService;
 //
+//    @Autowired
+//    private IWorkFlowNodeInstanceService workFlowNodeInstanceService;
+//
 //
 //    @Test
 //    public void docreateDoc() throws Exception{
@@ -87,7 +93,11 @@
 //
 //    @Test
 //    public void testDoWord() throws Exception {
-//        Boolean aBoolean = reportMainService.generateReport(28L);
+//        InstanceNodeDTO instanceNodeDTO = new InstanceNodeDTO();
+//        instanceNodeDTO.setBusinessId(40L);
+//        instanceNodeDTO.setMainBusiness("COMMISSION_DECLARE_MAJOR_MARKET");
+//        List<WorkNodeInstanceVO> workNodeInstanceVOS = workFlowNodeInstanceService.instanceArray(instanceNodeDTO);
+//        System.out.println(workNodeInstanceVOS);
 //
 //    }
 //

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

@@ -3,6 +3,7 @@ package com.dayou.mapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.dayou.entity.CommissionDeclare;
 import com.dayou.dao.CustomBaseMapper;
+import com.dayou.vo.CommissionDeclareTodoCheckVO;
 import com.dayou.vo.CommissionDeclareVO;
 import org.apache.ibatis.annotations.Param;
 
@@ -21,4 +22,6 @@ public interface CommissionDeclareMapper extends CustomBaseMapper<CommissionDecl
     Page<CommissionDeclareVO> majorEvaluateDeclarePage(Page page, @Param("declare")CommissionDeclareVO commissionDeclare, @Param("evaluateUserId")Long currentEvaluateUserId);
 
     CommissionDeclareVO detail(@Param("id") Long id);
+
+    Page<CommissionDeclareTodoCheckVO> todoCheckPage(Page page, @Param("checkVO")CommissionDeclareTodoCheckVO checkVO);
 }

+ 2 - 0
dao/src/main/java/com/dayou/mapper/MajorProductionAllotMapper.java

@@ -27,4 +27,6 @@ public interface MajorProductionAllotMapper extends CustomBaseMapper<MajorProduc
     void deleteByMajorProductionId(@Param("productionId")Long productionId);
 
     List<UserShareRate> allotRateByDeclareId(@Param("declareId")Long declareId);
+
+    List<UserShareRate> getXList(@Param("productionId")Long productionId);
 }

+ 62 - 0
dao/src/main/resources/mapper/CommissionDeclareMapper.xml

@@ -194,4 +194,66 @@
                 LEFT JOIN user u ON u.id = cd.declare_user_id
             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">
+        SELECT
+            wfni.id,
+            wtr.id AS taskId,
+            wfni.id AS currentNodeId,
+            wfni.business_id,
+            wfni.business_type,
+            mm.orderName,
+            mm.NAME,
+            mm.report_no,
+            mm.order_id,
+            wfni.NAME AS nodeName,
+            wfni.CODE AS nodeCode,
+            u.NAME AS handler,
+            u1.name as declareUser,
+            dd.name as businessCate,
+            (case bcr.user_type when 'MARKETER' then '市场人员' when 'EVALUATOR' then '评估人员' else '--' end) as userType,
+            bcr.min_ratio as ratio,
+            cd.created,
+            mm.prodId
+        FROM
+            work_task_record wtr
+                INNER JOIN (
+                SELECT
+                    wn.NAME,
+                    wn.CODE,
+                    wfni.id,
+                    wfni.business_id,
+                    wfni.state,
+                    wfni.business_type
+                FROM
+                    work_flow_node_instance wfni
+                        LEFT JOIN work_node wn ON wn.id = wfni.node_id
+                WHERE
+                        wfni.business_type IN ( 'COMMISSION_DECLARE_MAJOR_MARKET', 'COMMISSION_DECLARE_MAJOR_EVALUATE' )
+                  AND wfni.state = 'PENDING'
+                  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
+                LEFT JOIN (
+                SELECT
+                    ifnull( mp.id, m.id ) AS mId,
+                    m.NAME AS orderName,
+                    m.order_id,
+                    mp.NAME,
+                    mp.report_no ,
+                    mp.id as prodId
+                FROM
+                    major m
+                        LEFT JOIN ( SELECT id, NAME, major_id, report_no FROM major_production WHERE deleted = 0 ) mp ON m.id = mp.major_id
+            ) mm ON mm.mId = cd.xId
+                LEFT JOIN user u ON u.id = wtr.handler_id
+                left join business_commission_rate bcr on bcr.id = cd.commission_rate_id
+                left join dict_data dd on dd.id = bcr.business_cate_id
+                left join user u1 on u1.id = cd.declare_user_id
+        WHERE
+            wtr.handler_id = #{checkVO.handlerId}
+          AND u.deleted = 0
+          AND wtr.deleted = 0
+    </select>
 </mapper>

+ 5 - 0
dao/src/main/resources/mapper/MajorProductionAllotMapper.xml

@@ -61,4 +61,9 @@
         select mpa.ratio as rate,mpa.user_id,u.name from major_production_allot mpa left join user u on u.id = mpa.user_id
         where mpa.declare_id = #{declareId} and mpa.deleted = 0
     </select>
+
+    <select id="getXList" parameterType="java.lang.Long" resultType="com.dayou.dto.UserShareRate">
+        select mpa.ratio as rate,mpa.user_id,u.name from major_production_allot mpa left join user u on u.id = mpa.user_id
+        where mpa.major_production_id = #{productionId} and mpa.deleted = 0
+    </select>
 </mapper>

+ 2 - 1
dao/src/main/resources/mapper/MajorProductionMapper.xml

@@ -361,10 +361,11 @@
         SELECT
             mp.id,
             m.order_id,
+            m.id as majorId,
             mp.NAME,
             mp.report_no,
             (case mp.production when 'REPORT' then '报告' when 'STATEMENT' THEN '价值意见书' else '复评函' end ) as production,
-            ( SELECT id FROM production_fund WHERE business_type = 'MAJOR_BUSINESS' AND business_id = m.id AND production_no = mp.report_no AND deleted = 0 ) AS productionFundId,
+            ( SELECT count(id) FROM production_fund WHERE business_type = 'MAJOR_BUSINESS' AND business_id = m.id AND production_no = mp.report_no AND deleted = 0 ) AS claimTimes,
             ( SELECT major_production_id FROM major_production_allot WHERE deleted = 0 GROUP BY major_production_id HAVING major_production_id = mp.id ) AS isAllot
         FROM
             major_production mp

+ 55 - 0
domain/src/main/java/com/dayou/vo/CommissionDeclareTodoCheckVO.java

@@ -0,0 +1,55 @@
+package com.dayou.vo;
+
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * 类说明:
+ *
+ * @author: wucl
+ * @since: 2024/5/17
+ * created with IntelliJ IDEA.
+ */
+@Data
+public class CommissionDeclareTodoCheckVO {
+
+    private Long id;
+
+    private Long taskId;
+
+    private Long currentNodeId;
+
+    private Long businessId;
+
+    private String orderName;
+
+    private String name;
+
+    private String reportNo;
+
+    private String orderId;
+
+    private String nodeName;
+
+    private String nodeCode;
+
+    private String handler;
+
+    private String declareUser;
+
+    private String businessCate;
+
+    private String userType;
+
+    private BigDecimal ratio;
+
+    private Date created;
+
+    private Long prodId;
+
+    private Long handlerId;
+
+    private String businessType;
+}

+ 3 - 1
domain/src/main/java/com/dayou/vo/MajorProductionPerformanceVO.java

@@ -14,6 +14,8 @@ public class MajorProductionPerformanceVO {
 
     private Long id;
 
+    private Long majorId;
+
     private String orderId;
 
     private String name;
@@ -22,7 +24,7 @@ public class MajorProductionPerformanceVO {
 
     private String production;
 
-    private Long productionFundId;
+    private Integer claimTimes;
 
     private Long isAllot;
 

+ 2 - 2
gen/gen.iml

@@ -7,10 +7,10 @@
           <map>
             <entry key="com.zeroturnaround.jrebel.FormatVersion" value="7.0.0" />
             <entry key="jrebelEnabled" value="true" />
-            <entry key="lastExternalPluginCheckTime" value="1695084137817" />
+            <entry key="lastExternalPluginCheckTime" value="1714005552727" />
           </map>
         </option>
-        <option name="version" value="4" />
+        <option name="version" value="5" />
       </configuration>
     </facet>
     <facet type="Spring" name="Spring">

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

@@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.extension.service.IService;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.dayou.vo.CommissionDeclareDetailVO;
+import com.dayou.vo.CommissionDeclareTodoCheckVO;
 import com.dayou.vo.CommissionDeclareVO;
 import org.apache.poi.xssf.usermodel.XSSFWorkbook;
 import org.springframework.web.multipart.MultipartFile;
@@ -29,4 +30,6 @@ public interface ICommissionDeclareService extends IService<CommissionDeclare> {
     Boolean commissionDeclare(CommissionDeclareDTO declareDTO);
 
     CommissionDeclareDetailVO detail(Long id);
+
+    Page<CommissionDeclareTodoCheckVO> todoCheckPage(Page page, CommissionDeclareTodoCheckVO checkVO);
 }

+ 2 - 0
service/src/main/java/com/dayou/service/IMajorProductionAllotService.java

@@ -24,4 +24,6 @@ public interface IMajorProductionAllotService extends IService<MajorProductionAl
         Boolean saveAllot(List<MajorProductionAllot> list);
 
         List<UserShareRate> allotRateByDeclareId(Long id);
+
+        List<UserShareRate> getXList(Long productionId);
 }

+ 35 - 5
service/src/main/java/com/dayou/service/impl/CommissionDeclareServiceImpl.java

@@ -2,10 +2,10 @@ package com.dayou.service.impl;
 
 import cn.hutool.core.bean.BeanUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
 import com.dayou.common.BaseEntity;
 import com.dayou.dto.CommissionDeclareDTO;
 import com.dayou.dto.UserShareRate;
-import com.dayou.dto.WorkNodeCommit;
 import com.dayou.entity.*;
 import com.dayou.enums.FinanceInvoiceState;
 import com.dayou.enums.MainBusinessEnum;
@@ -16,6 +16,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.dayou.service.workflow.IWorkFlowService;
 import com.dayou.utils.LoginContext;
 import com.dayou.vo.CommissionDeclareDetailVO;
+import com.dayou.vo.CommissionDeclareTodoCheckVO;
 import com.dayou.vo.CommissionDeclareVO;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -48,9 +49,6 @@ public class CommissionDeclareServiceImpl extends ServiceImpl<CommissionDeclareM
     private IWorkFlowService workFlowService;
 
     @Autowired
-    private IBusinessCommissionRateService commissionRateService;
-
-    @Autowired
     private IMajorProductionService majorProductionService;
 
     @Autowired
@@ -79,6 +77,7 @@ public class CommissionDeclareServiceImpl extends ServiceImpl<CommissionDeclareM
     @Override
     @Transactional
     public Boolean commissionDeclare(CommissionDeclareDTO declareDTO) {
+        removeRejectDeclare(declareDTO);
         //保存申报记录
         CommissionDeclare commissionDeclare = BeanUtil.copyProperties(declareDTO, CommissionDeclare.class);
         commissionDeclare.setDeclareResult(FinanceInvoiceState.审核中.name());
@@ -98,7 +97,7 @@ public class CommissionDeclareServiceImpl extends ServiceImpl<CommissionDeclareM
         }).collect(Collectors.toList());
         majorProductionAllotService.saveBatch(collect);
         //提交审核流程
-        return workFlowService.openingDeclare(MainBusinessEnum.COMMISSION_DECLARE_MAJOR_MARKET, commissionDeclare.getId());
+        return workFlowService.openingDeclare(MainBusinessEnum.valueOf(declareDTO.getBusinessType()), commissionDeclare.getId());
     }
 
     @Override
@@ -121,9 +120,40 @@ public class CommissionDeclareServiceImpl extends ServiceImpl<CommissionDeclareM
                 commissionDeclareDetailVO.setProduction(production.getProduction());
             }
             List<UserShareRate> rates = majorProductionAllotService.allotRateByDeclareId(id);
+            if (CollectionUtils.isEmpty(rates)){
+                rates = majorProductionAllotService.getXList(declare.getProductionId());
+            }
             commissionDeclareDetailVO.setUserShareRates(rates);
         }
 
         return commissionDeclareDetailVO;
     }
+
+    @Override
+    public Page<CommissionDeclareTodoCheckVO> todoCheckPage(Page page, CommissionDeclareTodoCheckVO checkVO) {
+        checkVO.setHandlerId(LoginContext.getCurrentUserId());
+        Page<CommissionDeclareTodoCheckVO> ret = commissionDeclareMapper.todoCheckPage(page,checkVO);
+        return ret;
+    }
+
+    /**
+     * 删除之前被拒绝的申报
+     * @param declareDTO
+     */
+    private void removeRejectDeclare(CommissionDeclareDTO declareDTO){
+        Long businessId = declareDTO.getBusinessId();
+        Long productionId = declareDTO.getProductionId();
+        CommissionDeclare commissionDeclare = null;
+        if (businessId!=null && productionId!=null){
+            commissionDeclare = this.getOne(new LambdaQueryWrapper<CommissionDeclare>().eq(CommissionDeclare::getBusinessId, businessId)
+                    .eq(CommissionDeclare::getProductionId, productionId));
+        }
+        if (businessId!=null && productionId==null){
+            commissionDeclare = this.getOne(new LambdaQueryWrapper<CommissionDeclare>().eq(CommissionDeclare::getBusinessId, businessId)
+                    .isNull(CommissionDeclare::getProductionId));
+        }
+        if (commissionDeclare!=null){
+            this.delete(commissionDeclare.getId());
+        }
+    }
 }

+ 6 - 0
service/src/main/java/com/dayou/service/impl/MajorProductionAllotServiceImpl.java

@@ -85,4 +85,10 @@ public class MajorProductionAllotServiceImpl extends ServiceImpl<MajorProduction
         return rates;
     }
 
+    @Override
+    public List<UserShareRate> getXList(Long productionId) {
+        List<UserShareRate> rates = majorProductionAllotMapper.getXList(productionId);
+        return rates;
+    }
+
 }

+ 2 - 0
service/src/main/java/com/dayou/service/workflow/IWorkFlowNodeInstanceService.java

@@ -42,4 +42,6 @@ public interface IWorkFlowNodeInstanceService extends IService<WorkFlowNodeInsta
     List<NightingaleEchartsVO> instanceNodeCountByCode(String businessType);
 
     Boolean activateInstanceNode(Long id);
+
+    List<WorkNodeInstanceVO> instanceArray(InstanceNodeDTO instance);
 }

+ 24 - 0
service/src/main/java/com/dayou/service/workflow/WorkFlowNodeInstanceServiceImpl.java

@@ -114,6 +114,30 @@ public class WorkFlowNodeInstanceServiceImpl extends ServiceImpl<WorkFlowNodeIns
     }
 
     @Override
+    public List<WorkNodeInstanceVO> instanceArray(InstanceNodeDTO instance) {
+        Long businessId = instance.getBusinessId();
+        String mainBusiness = instance.getMainBusiness();
+
+        List<WorkNodeInstanceVO> instanceNodeFlow = workFlowNodeInstanceMapper.getInstanceNodeFlow(mainBusiness, businessId, null,null);
+
+        List<WorkNodeInstanceVO> nodesSorted = Lists.newArrayList();
+        Optional<WorkNodeInstanceVO> first = instanceNodeFlow.stream().filter(x -> x.getPNodeId() == null).findFirst();
+        if (first.isPresent()){
+            WorkNodeInstanceVO fistNode = first.get();
+            nodesSorted.add(fistNode);
+            //根据业务类型确定节点组
+            for (WorkNodeInstanceVO workNodeInstanceVO : instanceNodeFlow){
+                WorkNodeInstanceVO next = findNext(fistNode.getNodeId(), instanceNodeFlow);
+                if (next !=null && !next.getNodeId().equals(fistNode.getNodeId())) {
+                    fistNode = next;
+                    nodesSorted.add(next);
+                }
+            }
+        }
+        return nodesSorted;
+    }
+
+    @Override
     public List<WorkNodeInstanceVO> instanceQueue(InstanceNodeDTO instance) {
         String businessMinId = instance.getBusinessMinId();
         String businessSubId = instance.getBusinessSubId();

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

@@ -135,7 +135,7 @@ public class WorkFlowServiceImpl extends ServiceImpl<WorkFlowMapper, WorkFlow> i
         if (businessEnum.equals(ASSET_BUSINESS)){
             return handleByState(assetsNodeHandler,workNodeCommit);
         }
-        return Boolean.FALSE;
+        return handleByState(workNodeProcessable,workNodeCommit);
     }
 
     /**

+ 58 - 35
service/src/main/java/com/dayou/workflow/config/WorkNodeProcessable.java

@@ -13,20 +13,13 @@ import com.dayou.dto.HandlerPermissionDTO;
 import com.dayou.dto.WorkNodeCommit;
 import com.dayou.dto.WorkNodeDTO;
 import com.dayou.entity.*;
+import com.dayou.enums.GlobalConfigEnum;
 import com.dayou.enums.MainBusinessEnum;
-import com.dayou.enums.workflow.HandlerPermissionEnum;
-import com.dayou.enums.workflow.NodeLogEnum;
-import com.dayou.enums.workflow.NodeStateEnum;
-import com.dayou.enums.workflow.WorkflowNodeEnum;
+import com.dayou.enums.ProductionEnum;
+import com.dayou.enums.workflow.*;
 import com.dayou.exception.ErrorCode;
-import com.dayou.mapper.DepartmentMapper;
-import com.dayou.mapper.MajorMapper;
-import com.dayou.mapper.PersonalMapper;
-import com.dayou.mapper.WorkTaskRecordMapper;
-import com.dayou.service.IDepartmentService;
-import com.dayou.service.IGlobalConfigService;
-import com.dayou.service.IUserPostService;
-import com.dayou.service.IUserService;
+import com.dayou.mapper.*;
+import com.dayou.service.*;
 import com.dayou.service.workflow.IWorkFlowLogService;
 import com.dayou.service.workflow.IWorkFlowNodeInstanceService;
 import com.dayou.service.workflow.IWorkNodeService;
@@ -45,6 +38,8 @@ 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.GlobalConfigEnum.COMMISSION_MAJOR_EVALUATE_DEPARTMENT;
 import static com.dayou.enums.GlobalConfigEnum.COMMISSION_MAJOR_MARKET_DEPARTMENT;
 import static com.dayou.enums.workflow.NodeLogEnum.PASS;
 import static com.dayou.enums.workflow.NodeStateEnum.*;
@@ -80,6 +75,12 @@ public class WorkNodeProcessable {
     @Autowired
     private IDepartmentService departmentService;
 
+    @Autowired
+    private WorkFlowNodeInstanceMapper workFlowNodeInstanceMapper;
+
+    @Autowired
+    private ICommissionDeclareService commissionDeclareService;
+
 
     /**
      * 提交流程前置处理
@@ -111,15 +112,21 @@ public class WorkNodeProcessable {
         //寻找下一个节点,有可能下一个节点并非流程配置的节点,需根据业务数据变动
         WorkNodeDTO nextWorkNode = workNodeService.getNextWorkNode(currentInstanceNode.getFlowId(), currentInstanceNode.getNodeId());
 
-        if (nextWorkNode==null && !currentInstanceNode.getNodeCode().equals(WorkflowNodeEnum.BUSINESS_ARCHIVING.name())){
-            ErrorCode.throwBusinessException(ErrorCode.NEXT_NODE_NOT_EXISTS);
-        }
+//        if (nextWorkNode==null && !currentInstanceNode.getNodeCode().equals(WorkflowNodeEnum.BUSINESS_ARCHIVING.name())){
+//            ErrorCode.throwBusinessException(ErrorCode.NEXT_NODE_NOT_EXISTS);
+//        }
 
         return nextWorkNode;
     }
 
 
     public boolean forward(WorkNodeCommit workNodeCommit) {
+        WorkFlowNodeInstance currentInstanceNode = workFlowNodeInstanceMapper.getById(workNodeCommit.getInstanceNodeId());
+        WorkNodeDTO nextWorkNode = beforeForward(workNodeCommit,currentInstanceNode);
+        if (nextWorkNode!=null){
+            addNextInstanceNode(currentInstanceNode,nextWorkNode, workNodeCommit.getNextHandlerId(),workNodeCommit.getBusinessSubId(),workNodeCommit.getBusinessMinId());
+            return Boolean.TRUE;
+        }
         return Boolean.FALSE;
     }
 
@@ -191,7 +198,7 @@ public class WorkNodeProcessable {
     @Transactional
     public boolean ending(WorkNodeCommit commit){
         WorkFlowNodeInstance currentNode = workFlowNodeInstanceService.getById(commit.getInstanceNodeId());
-
+        beforeEnding(currentNode);
         //只需将当前节点设置为终止状态。
         workFlowNodeInstanceService.update(new LambdaUpdateWrapper<WorkFlowNodeInstance>().set(WorkFlowNodeInstance::getState,CLOSED)
                         .set(WorkFlowNodeInstance::getComment,commit.getComments())
@@ -303,28 +310,44 @@ public class WorkNodeProcessable {
         }
         switch (MainBusinessEnum.valueOf(businessType)){
             case COMMISSION_DECLARE_MAJOR_MARKET:
-                List<GlobalConfig> list = globalConfigService.getConfigByKey( COMMISSION_MAJOR_MARKET_DEPARTMENT.name());
-                if (CollectionUtil.isEmpty(list)){
-                    ErrorCode.throwBusinessException(ErrorCode.CUSTOM_ERROR,"大中型市场部提成部门未配置。");
-                }
-                List<String> dIds = list.stream().filter(x->StrUtil.isNotBlank(x.getValue())).map(GlobalConfig::getValue).collect(Collectors.toList());
-                if (CollectionUtil.isEmpty(dIds)){
-                    ErrorCode.throwBusinessException(ErrorCode.CUSTOM_ERROR,"大中型市场部提成部门未配置。");
-                }
-                List<Long> xIds = dIds.stream().map(x -> { return  Long.valueOf(x);}).collect(Collectors.toList());
-                List<Long> targetIds = ownDepIds.stream().filter(xIds::contains).collect(Collectors.toList());
-                if (targetIds.size()==0){
-                    ErrorCode.throwBusinessException(ErrorCode.CUSTOM_ERROR,"抱歉,您不属于大中型市场部门人员。");
-                }
-                //多个默认第一个,保证流程顺畅
-                Department department = departmentService.getById(targetIds.get(0));
-                if (department.getLeaderId()==null){
-                    ErrorCode.throwBusinessException(ErrorCode.CUSTOM_ERROR,department.getName() +" 部门领导未设置。");
-                }
-                return department.getLeaderId();
+                return findDepartmentLeader(ownDepIds,COMMISSION_MAJOR_MARKET_DEPARTMENT);
+            case COMMISSION_DECLARE_MAJOR_EVALUATE:
+                return findDepartmentLeader(ownDepIds,COMMISSION_MAJOR_EVALUATE_DEPARTMENT);
         }
         return 0L;
     }
 
+    private Long findDepartmentLeader(List<Long> ownDepIds,GlobalConfigEnum configEnum){
+        List<GlobalConfig> list = globalConfigService.getConfigByKey( configEnum.name());
+        if (CollectionUtil.isEmpty(list)){
+            ErrorCode.throwBusinessException(ErrorCode.CUSTOM_ERROR, configEnum.getDesc()+"未配置。");
+        }
+        List<String> dIds = list.stream().filter(x->StrUtil.isNotBlank(x.getValue())).map(GlobalConfig::getValue).collect(Collectors.toList());
+        if (CollectionUtil.isEmpty(dIds)){
+            ErrorCode.throwBusinessException(ErrorCode.CUSTOM_ERROR,configEnum.getDesc()+"未配置。");
+        }
+        List<Long> xIds = dIds.stream().map(x -> { return  Long.valueOf(x);}).collect(Collectors.toList());
+        List<Long> targetIds = ownDepIds.stream().filter(xIds::contains).collect(Collectors.toList());
+        if (targetIds.size()==0){
+            ErrorCode.throwBusinessException(ErrorCode.CUSTOM_ERROR,"抱歉,您不属于"+configEnum.getDesc()+"人员。");
+        }
+        //多个默认第一个,保证流程顺畅
+        Department department = departmentService.getById(targetIds.get(0));
+        if (department.getLeaderId()==null){
+            ErrorCode.throwBusinessException(ErrorCode.CUSTOM_ERROR,department.getName() +" 部门领导未设置。");
+        }
+        return department.getLeaderId();
+    }
 
+    public void beforeEnding(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;
+        }
+    }
 }

+ 0 - 5
service/src/main/java/com/dayou/workflow/handler/AssetsNodeHandler.java

@@ -56,11 +56,6 @@ public class AssetsNodeHandler extends WorkNodeProcessable {
     @Autowired
     private IWorkFlowNodeInstanceService workFlowNodeInstanceService;
 
-    @Autowired
-    private IAssetsProductionService assetsProductionService;
-
-    @Autowired
-    private IWorkTaskRecordService workTaskRecordService;
 
     @Override
     public boolean forward(WorkNodeCommit workNodeCommit) {

+ 2 - 0
sql/update_sql.sql

@@ -429,6 +429,8 @@ 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
   修改人:苟耕铨