浏览代码

同步下单部门,同步原有大中型产品出具时间,统计排序

wucl 5 月之前
父节点
当前提交
251b87fe22

+ 14 - 0
biz-base/src/main/java/com/dayou/controller/DyoaController.java

@@ -131,4 +131,18 @@ public class DyoaController {
         Boolean ret = dyoaHistoryService.updateAssetsMembers();
         return RestResponse.data(ret);
     }
+
+    @IgnoreAuth
+    @GetMapping("/update/majorMarketDepartmentId")
+    public RestResponse<Boolean> majorMarketDepartmentId(){
+        Boolean ret = dyoaHistoryService.majorMarketDepartmentId();
+        return RestResponse.data(ret);
+    }
+
+    @IgnoreAuth
+    @GetMapping("/update/majorProductionTime")
+    public RestResponse<Boolean> majorProductionTime(){
+        Boolean ret = dyoaHistoryService.majorProductionTime();
+        return RestResponse.data(ret);
+    }
 }

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

@@ -39,4 +39,6 @@ public interface WorkFlowNodeInstanceMapper extends CustomBaseMapper<WorkFlowNod
     Map<String, Object> getInOutInstanceNode(@Param("productionNo") String productionNo);
 
     Date getNodeFinishedTime(@Param("flowId")Long flowId, @Param("nodeId")Long nodeId, @Param("businessId")Long businessId, @Param("businessSubId")String businessSubId, @Param("businessMinId")String businessMinId,@Param("businessType") String businessType);
+
+    Date getMajorProductionFinishedTime(@Param("businessId") Long businessId, @Param("nodeId") Long nodeId);
 }

+ 2 - 2
dao/src/main/resources/mapper/MajorMapper.xml

@@ -499,8 +499,8 @@
         <if test="major!=null and major.endDate!=null and major.endDate!=''">
             and m.created &lt;= #{major.endDate}
         </if>
-        <if test="major!=null and major.nodeCode!=null and major.nodeCode!=''">
-            and wfni.nodeCode = #{major.nodeCode}
+        <if test="major!=null and major.nodeId!=null">
+            and wfni.node_id = #{major.nodeId}
         </if>
         <if test="major!=null and major.clientName!=null and major.clientName!=''">
             and wfni.client_name like concat('%',#{major.clientName},'%')

+ 2 - 0
dao/src/main/resources/mapper/MajorStatisticalStatementMapper.xml

@@ -1290,6 +1290,7 @@
         GROUP BY department.id
         ) AS department
         GROUP BY department.id
+        ORDER BY currentPeriodOrderVolume DESC
     </select>
 
     <select id="getMajorMarketPerEfficiencyVO" resultType="com.dayou.vo.MajorMarketEfficiencyVO">
@@ -1328,5 +1329,6 @@
                 GROUP BY user.id
             ) AS user
         GROUP BY user.id
+        order by currentPeriodOrderVolume DESC
     </select>
 </mapper>

+ 23 - 0
dao/src/main/resources/mapper/WorkFlowNodeInstanceMapper.xml

@@ -264,4 +264,27 @@
             )
           AND deleted =0 and state = 'PASS'
     </select>
+
+    <select id="getMajorProductionFinishedTime" resultType="java.util.Date">
+        SELECT
+            max(created)
+        FROM
+            work_flow_log
+        WHERE
+            instance_id = (
+                SELECT
+                    id
+                FROM
+                    work_flow_node_instance
+                WHERE
+                    flow_id = 6
+                  AND node_id = #{nodeId}
+                  AND business_id = #{businessId}
+                  AND business_type = 'MAJOR_BUSINESS'
+                  AND state = 'FINISHED'
+                  AND deleted = 0
+                order by created desc limit 1
+            )
+          AND deleted =0 and state = 'PASS'
+    </select>
 </mapper>

+ 5 - 0
domain/src/main/java/com/dayou/entity/Major.java

@@ -285,4 +285,9 @@ public class Major extends BaseEntity {
      */
     private String feedbackInfo;
 
+    /**
+     * 市场部id(下单部门)
+     */
+    private Long marketDepartmentId;
+
 }

+ 1 - 0
domain/src/main/java/com/dayou/vo/MajorVO.java

@@ -126,6 +126,7 @@ public class MajorVO extends Major {
 
     private Set<Long> userIds;
     private String comment;
+    private Long nodeId;
 
 
 }

+ 44 - 0
service/src/main/java/com/dayou/dyoa/DyoaHistoryServiceImpl.java

@@ -2023,6 +2023,50 @@ public class DyoaHistoryServiceImpl implements IDyoaHistoryService{
         return null;
     }
 
+    @Override
+    public Boolean majorMarketDepartmentId() {
+        List<Major> majors = majorServiceImpl.list(new LambdaQueryWrapper<Major>().select(BaseEntity::getId, Major::getClientManagerId));
+        for (Major major : majors){
+            Long clientManagerId = major.getClientManagerId();
+            Set<Long> departmentIdByUserId = userService.getDepartmentIdByUserId(clientManagerId);
+            if (CollectionUtil.isNotEmpty(departmentIdByUserId)){
+                Long departmentId = departmentIdByUserId.stream().findFirst().get();
+                majorServiceImpl.update(new LambdaUpdateWrapper<Major>().set(Major::getMarketDepartmentId,departmentId).eq(BaseEntity::getId,major.getId()));
+            }
+        }
+        return true;
+    }
+
+    @Override
+    public Boolean majorProductionTime() {
+        List<MajorProduction> mps = majorProductionService.list(new LambdaQueryWrapper<MajorProduction>().select(BaseEntity::getId, MajorProduction::getMajorId, MajorProduction::getProduction, MajorProduction::getRepertoryInTime)
+                .isNull(MajorProduction::getProductionTime).eq(BaseEntity::getDeleted, Boolean.FALSE));
+        for (MajorProduction mp : mps){
+            if (mp.getProduction().equals(STATEMENT.name())){
+                Date majorProductionFinishedTime = workFlowNodeInstanceService.getMajorProductionFinishedTime(mp.getMajorId(), 62L);
+                if (majorProductionFinishedTime==null){
+                    majorProductionFinishedTime = mp.getRepertoryInTime();
+                }
+                majorProductionService.update(new LambdaUpdateWrapper<MajorProduction>().set(MajorProduction::getProductionTime,majorProductionFinishedTime).eq(BaseEntity::getId,mp.getId()));
+            }
+            if (mp.getProduction().equals(REPORT.name())){
+                Date majorProductionFinishedTime = workFlowNodeInstanceService.getMajorProductionFinishedTime(mp.getMajorId(), 71L);
+                if (majorProductionFinishedTime==null){
+                    majorProductionFinishedTime = mp.getRepertoryInTime();
+                }
+                majorProductionService.update(new LambdaUpdateWrapper<MajorProduction>().set(MajorProduction::getProductionTime,majorProductionFinishedTime).eq(BaseEntity::getId,mp.getId()));
+            }
+            if (mp.getProduction().equals(LETTER.name())){
+                Date majorProductionFinishedTime = workFlowNodeInstanceService.getMajorProductionFinishedTime(mp.getMajorId(), 78L);
+                if (majorProductionFinishedTime==null){
+                    majorProductionFinishedTime = mp.getRepertoryInTime();
+                }
+                majorProductionService.update(new LambdaUpdateWrapper<MajorProduction>().set(MajorProduction::getProductionTime,majorProductionFinishedTime).eq(BaseEntity::getId,mp.getId()));
+            }
+        }
+        return true;
+    }
+
 
     @Override
     public Boolean updateProductionFund() {

+ 4 - 0
service/src/main/java/com/dayou/dyoa/IDyoaHistoryService.java

@@ -53,4 +53,8 @@ public interface IDyoaHistoryService {
     Boolean updateMajorSubClientId();
 
     Boolean updateAssetsMembers();
+
+    Boolean majorMarketDepartmentId();
+
+    Boolean majorProductionTime();
 }

+ 9 - 2
service/src/main/java/com/dayou/dyoa/task/FetchDyoaDataSchedule.java

@@ -65,13 +65,20 @@ public class FetchDyoaDataSchedule {
     }
 
 
-    //每天凌晨06:30触发
-    @Scheduled(cron = "0 30 6 * * ?")
+    //每天凌晨06:10触发
+    @Scheduled(cron = "0 10 6 * * ?")
     public void updateMajorProduction(){
         dyoaHistoryService.updateMajorProduction();
         log.info("同步大中型产品信息完成");
     }
 
+    //每天凌晨06:20触发
+    @Scheduled(cron = "0 20 6 * * ?")
+    public void updateMajorProductionTime(){
+        dyoaHistoryService.majorProductionTime();
+        log.info("同步大中型产品出具时间完成");
+    }
+
     //每天凌晨06:40触发
     @Scheduled(cron = "0 40 6 * * ?")
     public void updateProductionFund(){

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

@@ -51,4 +51,6 @@ public interface IWorkFlowNodeInstanceService extends IService<WorkFlowNodeInsta
     Boolean checkIfReverse(String productionType, String productionNo);
 
     Date getNodeFinishedTime(MainBusinessEnum businessEnum, WorkflowNodeEnum nodeEnum,Long businessId,String businessSubId,String businessMinId);
+
+    Date getMajorProductionFinishedTime(Long businessId,Long nodeId);
 }

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

@@ -173,6 +173,11 @@ public class WorkFlowNodeInstanceServiceImpl extends ServiceImpl<WorkFlowNodeIns
     }
 
     @Override
+    public Date getMajorProductionFinishedTime(Long businessId, Long nodeId) {
+        return workFlowNodeInstanceMapper.getMajorProductionFinishedTime(businessId,nodeId);
+    }
+
+    @Override
     public List<WorkNodeInstanceVO> instanceQueue(InstanceNodeDTO instance) {
         String businessMinId = instance.getBusinessMinId();
         String businessSubId = instance.getBusinessSubId();

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

@@ -294,7 +294,7 @@ public class MajorNodeHandler extends WorkNodeProcessable {
                 .eq(BaseEntity::getDeleted, false);
         switch (WorkflowNodeEnum.valueOf(currentInstanceNode.getNodeCode())){
             // 撰写意见书
-            case GENERATE_STATEMENT:
+            case WRITE_STATEMENT:
                 productionTimeUpdateWrapper.eq(MajorProduction::getProduction, STATEMENT.getCode()).eq(MajorProduction::getReportNo, currentInstanceNode.getBusinessSubId());
                 productionService.update(productionTimeUpdateWrapper);
                 break;