baihe 3 роки тому
батько
коміт
770a349690
29 змінених файлів з 318 додано та 202 видалено
  1. 0 1
      application-facade/src/main/java/com/factory/controller/web/FirstArticleController.java
  2. 2 2
      application-facade/src/main/java/com/factory/controller/wx/PlanPassController.java
  3. 9 0
      application-facade/src/main/java/com/factory/web/service/fa/FirstArticleService.java
  4. 24 14
      application-facade/src/main/java/com/factory/web/service/impl/fa/FirstArticleServiceImpl.java
  5. 13 3
      application-facade/src/main/java/com/factory/web/service/impl/pm/PreventMistakeServiceImpl.java
  6. 8 0
      application-facade/src/main/java/com/factory/web/service/pm/PreventMistakeService.java
  7. 3 0
      application-facade/src/main/java/com/factory/wx/entity/req/SearchPlanPassReq.java
  8. 3 0
      application-facade/src/main/java/com/factory/wx/entity/req/SendMsgReq.java
  9. 3 0
      application-facade/src/main/java/com/factory/wx/entity/res/PlanPassRes.java
  10. 35 33
      application-facade/src/main/java/com/factory/wx/service/impl/PlanPassFAServiceImpl.java
  11. 11 19
      application-facade/src/main/java/com/factory/wx/service/impl/PlanPassPMServiceImpl.java
  12. 1 3
      application-facade/src/main/java/com/factory/wx/service/impl/PlanPassServiceImpl.java
  13. 31 2
      application-facade/src/main/resources/mapper/PlanPassMapper.xml
  14. 27 0
      application-task/src/main/java/com/factory/common/TaskProperties.java
  15. 1 1
      application-task/src/main/java/com/factory/init/AutoApproveErrorTaskJob.java
  16. 20 13
      application-task/src/main/java/com/factory/init/TimerTaskInit.java
  17. 6 0
      application-task/src/main/java/com/factory/mapper/FirstTaskMapper.java
  18. 7 0
      application-task/src/main/java/com/factory/mapper/OnsiteTaskMapper.java
  19. 16 12
      application-task/src/main/java/com/factory/service/impl/FirstTaskServiceImp.java
  20. 7 5
      application-task/src/main/java/com/factory/service/impl/MsgServiceImpl.java
  21. 28 22
      application-task/src/main/java/com/factory/service/impl/OnsiteTaskServiceImp.java
  22. 0 12
      application-task/src/main/resources/application-test.yml
  23. 0 16
      application-task/src/main/resources/application-uat.yml
  24. 15 0
      application-task/src/main/resources/application.yml
  25. 16 1
      application-task/src/main/resources/mappers/FirstTaskMapper.xml
  26. 17 2
      application-task/src/main/resources/mappers/OnsiteTaskMapper.xml
  27. 5 0
      common-base/src/main/java/com/factory/base/entity/task/ApprovalUserRes.java
  28. 1 1
      common-base/src/main/java/com/factory/base/entity/task/PushWxMessage.java
  29. 9 40
      common-base/src/main/java/com/factory/base/entity/task/SendMsgReq.java

+ 0 - 1
application-facade/src/main/java/com/factory/controller/web/FirstArticleController.java

@@ -53,7 +53,6 @@ import com.factory.web.service.pm.PreventMistakeService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiOperationSupport;
-import lombok.extern.slf4j.Slf4j;
 
 /**
  * 首件计划

+ 2 - 2
application-facade/src/main/java/com/factory/controller/wx/PlanPassController.java

@@ -45,9 +45,9 @@ public class PlanPassController {
 
     @ApiOperation(value = "计划放行列表")
     @PostMapping("/list")
-    public ResponseBean<Map> pass(@RequestBody PlanPageReq planPageReq) {
+    public ResponseBean<Map<String,Object>> pass(@RequestBody PlanPageReq planPageReq) {
         List<PlanPassRes> passList = planPassService.getPassList(planPageReq);
-        Map map = new HashMap<>();
+        Map<String,Object> map = new HashMap<>();
         map.put("row", passList);
         return ResponseBeanBuilder.ok(map);
     }

+ 9 - 0
application-facade/src/main/java/com/factory/web/service/fa/FirstArticleService.java

@@ -11,6 +11,7 @@ import com.factory.web.entity.fa.FirstArticleTitle;
 import com.factory.web.entity.fa.FirstArticleWorkshop;
 import com.factory.web.entity.fa.req.*;
 import com.factory.web.entity.fa.res.*;
+import com.factory.web.entity.pm.ApprovalRule;
 import com.factory.web.entity.vo.req.exportInitialPlanDetailsReq;
 
 import java.util.List;
@@ -249,4 +250,12 @@ public interface FirstArticleService extends IService<BentelerPlan> {
      * @return
      */
     public void setFaRepeatResult(long firstArticleTaskId);
+    
+    /**
+     * 审批信息和通知
+     * @param approvalRuleNextLevel
+     * @param taskId
+     * @param userId
+     */
+    public void setApproval(ApprovalRule approvalRuleNextLevel,Long taskId,Long userId);
 }

+ 24 - 14
application-facade/src/main/java/com/factory/web/service/impl/fa/FirstArticleServiceImpl.java

@@ -910,21 +910,31 @@ public class FirstArticleServiceImpl extends ServiceImpl<FirstArticleMapper, Ben
                 .eq(ApprovalRule::getType, ApprovalRule.APPROVAL_TYPE_FA)
                 .orderByAsc(ApprovalRule::getApprovalLevel)
                 .last("limit 1"));
-		 if (approvalRuleNextLevel!=null) {
-			 firstArticleApprovalTaskService.save(FirstArticleApprovalTask.builder()
-	                    .firstArticleTaskId(taskId)
-	                    .approvalLevel(approvalRuleNextLevel.getApprovalLevel())
-	                    .approvalRole(approvalRuleNextLevel.getRoleId())
-	                    .status(0)
-	                    .build());
-	            //向下一级别发送提醒
-	            wxService.sendWechatMessageByRole(SendMsgReq.builder()
-	                    .title("计划放行")
-	                    .content("您有待放行的计划审批,请登录小程序查看")
-	                    .fromUserId(userId)
-	                    .build(),approvalRuleNextLevel.getRoleId());
-	        }
+		setApproval(approvalRuleNextLevel,taskId,userId);
 	}
+    @Override
+    public void setApproval(ApprovalRule approvalRuleNextLevel,Long taskId,Long userId) {
+	    if (approvalRuleNextLevel!=null) {
+	    	firstArticleApprovalTaskService.save(FirstArticleApprovalTask.builder()
+            .firstArticleTaskId(taskId)
+            .approvalLevel(approvalRuleNextLevel.getApprovalLevel())
+            .approvalRole(approvalRuleNextLevel.getRoleId())
+            .status(0)
+            .build());
+		 	FirstArticleTask firstArticleTask = firstArticleTaskService.getById(taskId);
+	        FirstArticleCalendar calendar = firstArticleCalendarService.getById(firstArticleTask.getFirstArticleCalendarId());
+	        BentelerPlan plan = this.getById(calendar.getBentelerPlanId());
+	        String type= firstArticleTask.getTypeFlag()==0?"首件":firstArticleTask.getTypeFlag()==1?"200件":"中断";
+	        String planName = plan.getName().length()>15?(plan.getName().substring(0,12)+"..."):plan.getName();
+			//向下一级别发送提醒
+			wxService.sendWechatMessageByRole(SendMsgReq.builder()
+				.title("计划放行("+type+")提醒")
+		        .content(planName+"待审批")
+		        .pageIndex("/pagesPlan/approval")
+	            .fromUserId(userId)
+	            .build(),approvalRuleNextLevel.getRoleId());
+		}
+    }
     /**
      * 取得不放行任务对应的工作站
      *

+ 13 - 3
application-facade/src/main/java/com/factory/web/service/impl/pm/PreventMistakeServiceImpl.java

@@ -921,17 +921,27 @@ public class PreventMistakeServiceImpl extends ServiceImpl<PreventMistakeMapper,
                 .eq(ApprovalRule::getType, ApprovalRule.APPROVAL_TYPE_PM)
                 .orderByAsc(ApprovalRule::getApprovalLevel)
                 .last("limit 1"));
-		 if (approvalRuleNextLevel!=null) {
+		setApproval(approvalRuleNextLevel,taskId,userId);
+	}
+	@Override
+	public void setApproval(ApprovalRule approvalRuleNextLevel,Long taskId,Long userId) {
+		if (approvalRuleNextLevel!=null) {
 			 onsiteApprovalTaskService.save(OnsiteApprovalTask.builder()
 	                    .onsiteTaskId(taskId)
 	                    .approvalLevel(approvalRuleNextLevel.getApprovalLevel())
 	                    .approvalRole(approvalRuleNextLevel.getRoleId())
 	                    .status(0)
 	                    .build());
+			 OnsiteTask onsiteTask = onsiteTaskService.getById(taskId);
+	         OnsiteCalendar calendar = onsiteCalendarService.getById(onsiteTask.getOnsiteCalendarId());
+	         BentelerPlan plan = this.getById(calendar.getBentelerPlanId());
+	         String type= calendar.getTypeFlag()==0?"日":calendar.getTypeFlag()==1?"周":"月";
+	         String planName = plan.getName().length()>15?(plan.getName().substring(0,12)+"..."):plan.getName();
 	            //向下一级别发送提醒
 	            wxService.sendWechatMessageByRole(SendMsgReq.builder()
-	                    .title("计划放行")
-	                    .content("您有待放行的计划审批,请登录小程序查看")
+	            		.title("计划放行("+type+"-防错)提醒")
+	            		.content(planName+"待审批")
+	    		        .pageIndex("/pagesPlan/approval")
 	                    .fromUserId(userId)
 	                    .build(),approvalRuleNextLevel.getRoleId());
 	        }

+ 8 - 0
application-facade/src/main/java/com/factory/web/service/pm/PreventMistakeService.java

@@ -287,5 +287,13 @@ public interface PreventMistakeService extends IService<BentelerPlan> {
      * @return
      */
     public void setPmRepeatResult(long onsiteTaskId);
+    
+    /**
+     * 审批信息和通知
+     * @param approvalRuleNextLevel
+     * @param taskId
+     * @param userId
+     */
+    public void setApproval(ApprovalRule approvalRuleNextLevel,Long taskId,Long userId) ;
 
 }

+ 3 - 0
application-facade/src/main/java/com/factory/wx/entity/req/SearchPlanPassReq.java

@@ -28,4 +28,7 @@ public class SearchPlanPassReq {
 
     @ApiModelProperty(value = "0表示首件 1表示200件 2表示中断")
     private Integer typeFlag;
+    
+    @ApiModelProperty(value = "0标识正常1标志检查异常2未检查")
+    private Integer resultFlag;
 }

+ 3 - 0
application-facade/src/main/java/com/factory/wx/entity/req/SendMsgReq.java

@@ -31,4 +31,7 @@ public class SendMsgReq {
 
     @ApiModelProperty(value = "发布人员id")
     private Long fromUserId;
+    
+    @ApiModelProperty(value = "跳转页面")
+    private String pageIndex;
 }

+ 3 - 0
application-facade/src/main/java/com/factory/wx/entity/res/PlanPassRes.java

@@ -24,4 +24,7 @@ public class PlanPassRes {
 
     @ApiModelProperty(value = "计划类型")
     private int planType;
+    
+    @ApiModelProperty(value = "任务ID")
+    private Long taskId;
 }

+ 35 - 33
application-facade/src/main/java/com/factory/wx/service/impl/PlanPassFAServiceImpl.java

@@ -1,18 +1,26 @@
 package com.factory.wx.service.impl;
 
+import java.util.ArrayList;
+import java.util.List;
+import java.util.stream.Collectors;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.factory.base.entity.aggregates.ResponseBean;
+import com.factory.base.entity.po.benteler.BentelerPlan;
 import com.factory.base.util.res.ResponseBeanBuilder;
 import com.factory.user.service.UserRoleService;
 import com.factory.web.entity.fa.FirstArticleApprovalTask;
+import com.factory.web.entity.fa.FirstArticleCalendar;
 import com.factory.web.entity.fa.FirstArticleTask;
 import com.factory.web.entity.fa.FirstArticleTitle;
 import com.factory.web.entity.fa.FirstArticleWorkshop;
 import com.factory.web.entity.pm.ApprovalRule;
-import com.factory.web.entity.pm.OnsiteApprovalTask;
-import com.factory.web.entity.pm.res.ApprovalUserRes;
 import com.factory.web.mapper.fa.FirstArticleApprovalTaskMapper;
 import com.factory.web.mapper.pm.ApprovalRuleMapper;
+import com.factory.web.service.fa.FirstArticleCalendarService;
 import com.factory.web.service.fa.FirstArticleService;
 import com.factory.web.service.fa.FirstArticleTaskService;
 import com.factory.web.service.fa.FirstArticleWorkshopService;
@@ -21,17 +29,16 @@ import com.factory.wx.entity.req.PlanApprovalTaskReq;
 import com.factory.wx.entity.req.PlanPassReq;
 import com.factory.wx.entity.req.SearchPlanPassReq;
 import com.factory.wx.entity.req.SendMsgReq;
-import com.factory.wx.entity.res.*;
+import com.factory.wx.entity.res.PlanPassDetailRes;
+import com.factory.wx.entity.res.PlanPassItemRes;
+import com.factory.wx.entity.res.PlanPassItemResultRes;
+import com.factory.wx.entity.res.PlanPassTaskRes;
+import com.factory.wx.entity.res.PlanPassWorkshopRes;
+import com.factory.wx.entity.res.WxPlanBaseInfoRes;
 import com.factory.wx.mapper.PlanPassMapper;
 import com.factory.wx.service.PlanPassFAService;
 import com.factory.wx.service.WxPlanService;
 import com.factory.wx.service.WxService;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.stream.Collectors;
 
 /**
  * @author sMArT
@@ -44,10 +51,11 @@ public class PlanPassFAServiceImpl implements PlanPassFAService {
     /**
      * 审批规则类型为:2首件
      */
-    private static int APPROVAL_TYPE_FIRST_ARTICLE = 2;
     @Autowired
     private PlanPassMapper planPassMapper;
     @Autowired
+    private FirstArticleCalendarService firstArticleCalendarService;
+    @Autowired
     private FirstArticleTaskService firstArticleTaskService;
     @Autowired
     private FirstArticleApprovalTaskMapper firstArticleApprovalTaskMapper;
@@ -65,6 +73,8 @@ public class PlanPassFAServiceImpl implements PlanPassFAService {
     private WxService wxService;
     @Autowired
     private UserRoleService userRoleService;
+    
+    
     /**
      * 计划放行详情-首件
      *
@@ -77,11 +87,10 @@ public class PlanPassFAServiceImpl implements PlanPassFAService {
     	planPassReq.setRoleIds(roleIds);
         WxPlanBaseInfoRes wxPlanBaseInfoRes = wxPlanService.getFirstArticlePlanBaseInfo(planPassReq.getPlanId());
         List<PlanPassTaskRes> planPassTaskResList = null;
-        List<Integer> itemType = null;
+        List<Integer> itemType = wxPlanBaseInfoRes.getFrequency();
         if(!roleIds.isEmpty()) {
         	planPassTaskResList = getFATaskList(planPassReq);
-
-            itemType = getItemFAFrequency(planPassTaskResList);
+//            itemType = getItemFAFrequency(planPassTaskResList);
         }
        
 
@@ -104,8 +113,9 @@ public class PlanPassFAServiceImpl implements PlanPassFAService {
      * @return
      */
     private List<PlanPassTaskRes> getFATaskList(PlanPassReq planPassReq) {
+    	
+    	//modify 按照taskId和planId查询
         List<PlanPassTaskRes> faList = planPassMapper.getFaPassTaskListByPlanId(planPassReq);
-
         for (PlanPassTaskRes faInfo : faList) {
             List<FirstArticleWorkshop> firstArticleWorkshopList = firstArticleWorkshopService.list(Wrappers.<FirstArticleWorkshop>lambdaQuery()
                     .eq(FirstArticleWorkshop::getBentelerPlanId, planPassReq.getPlanId()));
@@ -124,16 +134,19 @@ public class PlanPassFAServiceImpl implements PlanPassFAService {
 
                 SearchPlanPassReq searchReq = new SearchPlanPassReq();
                 searchReq.setWorkshopId(planPassWorkshopList.get(i).getWorkshopId());
+                searchReq.setResultFlag(1);
+                //只选择有问题的
                 List<PlanPassItemRes> planPassItemList = planPassMapper.getFaPassItemList(searchReq);
 
                 for (PlanPassItemRes planPassItemRes : planPassItemList) {
-                    List<PlanPassItemResultRes> firstItemResultList = this.getFaItemResultList(faInfo.getTaskId(), planPassItemRes.getItemId(), 0);
+                	
+                    List<PlanPassItemResultRes> firstItemResultList = this.getFaItemResultList(faInfo.getTaskId(), planPassItemRes.getItemId(), 0,1);
                     planPassItemRes.setFirstItemResultList(firstItemResultList);
 
-                    List<PlanPassItemResultRes> twoHundredItemResultList = this.getFaItemResultList(faInfo.getTaskId(), planPassItemRes.getItemId(), 1);
+                    List<PlanPassItemResultRes> twoHundredItemResultList = this.getFaItemResultList(faInfo.getTaskId(), planPassItemRes.getItemId(), 1,1);
                     planPassItemRes.setTwoHundredItemResultList(twoHundredItemResultList);
 
-                    List<PlanPassItemResultRes> catchItemResultList = this.getFaItemResultList(faInfo.getTaskId(), planPassItemRes.getItemId(), 2);
+                    List<PlanPassItemResultRes> catchItemResultList = this.getFaItemResultList(faInfo.getTaskId(), planPassItemRes.getItemId(), 2,1);
                     planPassItemRes.setCatchItemResultList(catchItemResultList);
                 }
                 planPassWorkshopList.get(i).setItemList(planPassItemList);
@@ -252,20 +265,7 @@ public class PlanPassFAServiceImpl implements PlanPassFAService {
                   .orderByAsc(ApprovalRule::getApprovalLevel)
                   .last("limit 1"));
         if (approvalRuleNextLevel!=null) {
-            firstArticleApprovalTaskMapper.insert(FirstArticleApprovalTask.builder()
-                    .firstArticleTaskId(planApprovalTaskReq.getTaskId())
-                    .approvalLevel(approvalRuleNextLevel.getApprovalLevel())
-                    .approvalRole(approvalRuleNextLevel.getRoleId())
-                    .status(0)
-                    .build());
-
-            //向下一级别发送提醒
-            //发送微信消息
-            wxService.sendWechatMessageByRole(SendMsgReq.builder()
-                    .title("计划放行")
-                    .content("您有待放行的计划审批,请登录小程序查看")
-                    .fromUserId(planApprovalTaskReq.getUserId())
-                    .build(),approvalRuleNextLevel.getRoleId());
+        	firstArticleService.setApproval(approvalRuleNextLevel, planApprovalTaskReq.getTaskId(), planApprovalTaskReq.getUserId());
         } else {
             //如果是最后一个审批级别则设置task状态为不通过
             updateFirstArticleTask(planApprovalTaskReq);
@@ -280,14 +280,16 @@ public class PlanPassFAServiceImpl implements PlanPassFAService {
      *
      * @param taskId
      * @param itemId
-     * @param typeFlag
+     * @param typeFlag 0首件,1二百建,2中断
+     * @param resultFlag 0没问题结果1有问题结果 其他全部
      * @return
      */
-    private List<PlanPassItemResultRes> getFaItemResultList(long taskId, long itemId, int typeFlag) {
+    private List<PlanPassItemResultRes> getFaItemResultList(long taskId, long itemId, int typeFlag,Integer resultFlag) {
         SearchPlanPassReq searchReq = new SearchPlanPassReq();
         searchReq.setTaskId(taskId);
         searchReq.setItemId(itemId);
         searchReq.setTypeFlag(typeFlag);
+        searchReq.setTypeFlag(resultFlag);
         List<PlanPassItemResultRes> planPassItemResultResList = planPassMapper.getFaPassItemResultList(searchReq);
         return planPassItemResultResList;
     }

+ 11 - 19
application-facade/src/main/java/com/factory/wx/service/impl/PlanPassPMServiceImpl.java

@@ -9,17 +9,19 @@ import org.springframework.stereotype.Service;
 
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.factory.base.entity.aggregates.ResponseBean;
+import com.factory.base.entity.po.benteler.BentelerPlan;
 import com.factory.base.util.res.ResponseBeanBuilder;
 import com.factory.user.service.UserRoleService;
 import com.factory.web.entity.pm.ApprovalRule;
 import com.factory.web.entity.pm.OnsiteApprovalTask;
+import com.factory.web.entity.pm.OnsiteCalendar;
 import com.factory.web.entity.pm.OnsiteTask;
 import com.factory.web.entity.pm.OnsiteTitle;
 import com.factory.web.entity.pm.OnsiteWorkshop;
-import com.factory.web.entity.pm.res.ApprovalUserRes;
 import com.factory.web.mapper.pm.ApprovalRuleMapper;
 import com.factory.web.mapper.pm.OnsiteApprovalTaskMapper;
 import com.factory.web.mapper.pm.OnsiteTaskMapper;
+import com.factory.web.service.pm.OnsiteCalendarService;
 import com.factory.web.service.pm.OnsiteWorkshopService;
 import com.factory.web.service.pm.PreventMistakeService;
 import com.factory.wx.entity.req.PlanApprovalTaskReq;
@@ -44,10 +46,6 @@ import com.factory.wx.service.WxService;
 
 @Service("planPassPMService")
 public class PlanPassPMServiceImpl implements PlanPassPMService {
-    /**
-     * 审批规则类型为:3防错
-     */
-    private static int APPROVAL_TYPE_PM = 3;
     @Autowired
     private PlanPassMapper planPassMapper;
     @Autowired
@@ -66,6 +64,9 @@ public class PlanPassPMServiceImpl implements PlanPassPMService {
     private WxService wxService;
     @Autowired
     private UserRoleService userRoleService;
+    
+    @Autowired
+    private OnsiteCalendarService onsiteCalendarService;
     /**
      * 计划放行详情-防错
      *
@@ -79,10 +80,10 @@ public class PlanPassPMServiceImpl implements PlanPassPMService {
     	planPassReq.setRoleIds(roleIds);
         WxPlanBaseInfoRes wxPlanBaseInfoRes = wxPlanService.getOnsitePlanBaseInfo(planPassReq.getPlanId());
         List<PlanPassTaskRes> planPassTaskResList = null;
-        List<Integer> itemType = null;
+        List<Integer> itemType = wxPlanBaseInfoRes.getFrequency();
         if(!roleIds.isEmpty()) {
         	planPassTaskResList = getPMTaskList(planPassReq);
-        	itemType = getItemPMFrequency(planPassTaskResList);
+//        	itemType = getItemPMFrequency(planPassTaskResList);
         }
 
         return PlanPassDetailRes.builder()
@@ -104,6 +105,7 @@ public class PlanPassPMServiceImpl implements PlanPassPMService {
      * @return
      */
     private List<PlanPassTaskRes> getPMTaskList(PlanPassReq planPassReq) {
+    	//只去当前任务
         List<PlanPassTaskRes> pmList = planPassMapper.getPmPassTaskListByPlanId(planPassReq);
         for (PlanPassTaskRes pmInfo : pmList) {
             List<OnsiteWorkshop> onsiteWorkshopList = onsiteWorkshopService.list(Wrappers.<OnsiteWorkshop>lambdaQuery()
@@ -121,6 +123,7 @@ public class PlanPassPMServiceImpl implements PlanPassPMService {
                 SearchPlanPassReq searchReq = new SearchPlanPassReq();
                 searchReq.setWorkshopId(workshopList.get(i).getWorkshopId());
                 searchReq.setTaskId(pmInfo.getTaskId());
+                searchReq.setResultFlag(1);
                 List<PlanPassItemRes> planPassItemList = planPassMapper.getPmPassItemList(searchReq).stream().filter(item -> item.getResult() > 0).collect(Collectors.toList());
                 for (PlanPassItemRes planPassItemRes : planPassItemList) {
                     Long userId = planPassItemRes.getItemResultUserId();
@@ -244,18 +247,7 @@ public class PlanPassPMServiceImpl implements PlanPassPMService {
                 .orderByAsc(ApprovalRule::getApprovalLevel)
                 .last("limit 1"));
         if (approvalRuleNextLevel!=null) {
-            onsiteApprovalTaskMapper.insert(OnsiteApprovalTask.builder()
-                    .onsiteTaskId(planApprovalTaskReq.getTaskId())
-                    .approvalLevel(approvalRuleNextLevel.getApprovalLevel())
-                    .approvalRole(approvalRuleNextLevel.getRoleId())
-                    .status(0)
-                    .build());
-            //向下一级别发送提醒
-            wxService.sendWechatMessageByRole(SendMsgReq.builder()
-                    .title("计划放行")
-                    .content("您有待放行的计划审批,请登录小程序查看")
-                    .fromUserId(planApprovalTaskReq.getUserId())
-                    .build(),approvalRuleNextLevel.getRoleId());
+        	preventMistakeService.setApproval(approvalRuleNextLevel, planApprovalTaskReq.getTaskId(), planApprovalTaskReq.getUserId());
         } else {
             //如果是最后一个审批级别则设置task状态为不通过
             updateOnsiteTask(planApprovalTaskReq);

+ 1 - 3
application-facade/src/main/java/com/factory/wx/service/impl/PlanPassServiceImpl.java

@@ -55,9 +55,7 @@ public class PlanPassServiceImpl implements PlanPassService {
 	        //首件列表
 	        if(planPageReq.getCheckType() == 1) {
 	            planPassResList = planPassMapper.getPlanPassList(page,planPageReq);
-	        }
-	        //防错列表
-	        if (planPageReq.getCheckType() == 2) {
+	        }else if (planPageReq.getCheckType() == 2) {//防错列表
 	            planPassResList = planPassMapper.getPlanPassPMList(page,planPageReq);
 	        }
     	}

+ 31 - 2
application-facade/src/main/resources/mapper/PlanPassMapper.xml

@@ -9,6 +9,7 @@
         bp.id AS id,
         bp.`name` AS NAME,
         bp.plan_type AS plan_type
+        ot.id as taskId
         FROM
         onsite_approval_task rat,
         onsite_task ot,
@@ -34,7 +35,8 @@
         SELECT DISTINCT
         bp.id AS id,
         bp.`name` AS NAME,
-        bp.plan_type AS plan_type
+        bp.plan_type AS plan_type,
+        ot.id as task_id
         FROM
         first_article_approval_task rat,
         first_article_task ot,
@@ -131,6 +133,7 @@
           AND fac.benteler_plan_id = bp.id
           AND bp.id = #{req.planId}
           AND fat.id = faat.first_article_task_id
+          AND fat.id = #{req.taskId}
           AND faat.`status` = 0
           AND fat.`status` = 1
           AND faat.approval_role  in
@@ -163,6 +166,14 @@
              first_article_item_result fair
         WHERE fai.id = fair.first_article_item_id
           AND fai.workshop_id = #{req.workshopId}
+          <choose>
+	         <when test="req.resultFlag!=null and req.resultFlag==1">
+	          	and fair.result = 1
+	         </when>
+	         <when test="req.resultFlag!=null and req.resultFlag==0">
+	          	and fair.result = 0
+	         </when>
+          </choose>
     </select>
     <!-- 取得首件检查结果 -->
     <select id="getFaPassItemResultList" resultType="com.factory.wx.entity.res.PlanPassItemResultRes">
@@ -191,6 +202,14 @@
         <if test="req.typeFlag == 2"> <!-- 中断 -->
             AND fai.catch_flag = 1
         </if>
+		<choose>
+			<when test="req.resultFlag!=null and req.resultFlag==1">
+			 	and fair.result = 1
+			</when>
+			<when test="req.resultFlag!=null and req.resultFlag==0">
+			 	and fair.result = 0
+			</when>
+		</choose>
     </select>
 
 
@@ -210,7 +229,9 @@
           AND oc.benteler_plan_id = bp.id
           AND ot.id = oat.onsite_task_id
           AND ot.`status` = 1
-          AND bp.id = #{req.planId} and bp.`status` &gt; 3
+          AND ot.id = #{taskId}
+          AND bp.id = #{req.planId} 
+          AND bp.`status` &gt; 3
           AND oat.`status` = 0
           AND oat.approval_role  in
 	        <foreach collection="req.roleIds" item="roleId" open="(" close=")" separator=",">
@@ -229,5 +250,13 @@
         WHERE oir.onsite_item_id = oi.id
           AND oir.onsite_task_id = #{req.taskId}
           AND oi.workshop_id = #{req.workshopId}
+          <choose>
+	         <when test="req.resultFlag!=null and req.resultFlag==1">
+	          	and oir.result=1
+	         </when>
+	         <when test="req.resultFlag!=null and req.resultFlag==0">
+	          	and oir.result=0
+	         </when>
+          </choose>
     </select>
 </mapper>

+ 27 - 0
application-task/src/main/java/com/factory/common/TaskProperties.java

@@ -0,0 +1,27 @@
+package com.factory.common;
+
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+import lombok.Data;
+
+@Data
+@ConfigurationProperties(prefix = "task")
+@Component
+public class TaskProperties {
+	
+	private Cron onsite;
+	
+	private Cron first;
+	
+	private Cron pass;
+	
+	@Data
+	public static class Cron{
+		
+		String cron;
+		
+		String remind;
+	}
+
+}

+ 1 - 1
application-task/src/main/java/com/factory/init/AutoApproveErrorTaskJob.java

@@ -49,7 +49,7 @@ public class AutoApproveErrorTaskJob implements Job {
     	ExecutorService executorService = (ExecutorService) paramMap.get("executorService");
         Integer result = 0;//没什么意义只是为了不出现整体并行
         List<Callable<Integer>> tasks = new ArrayList<>();
-//        tasks.add(getFutureTask(paramMap, type2));
+        tasks.add(getFutureTask(paramMap, type2));
         tasks.add(getFutureTask(paramMap, type3));
         try {
         	List<Future<Integer>> rlist = executorService.invokeAll(tasks);

+ 20 - 13
application-task/src/main/java/com/factory/init/TimerTaskInit.java

@@ -12,6 +12,7 @@ import org.springframework.beans.factory.annotation.Value;
 import org.springframework.scheduling.quartz.SchedulerFactoryBean;
 import org.springframework.stereotype.Component;
 
+import com.factory.common.TaskProperties;
 import com.factory.service.FirstTaskService;
 import com.factory.service.MsgService;
 import com.factory.service.OnsiteTaskService;
@@ -22,16 +23,22 @@ import com.factory.service.OnsiteTaskService;
 @Component
 public class TimerTaskInit {
 
-    @Value("${onsite.task.cron}")
-    private String cron_1;
-    @Value("${onsite.remind.work.cron}")
-    private String cron_2;
+    @Value("${task.onsite.cron:'0 */5 * * * ?'}")
+    private String taskOnsiteCron;
+    @Value("${task.onsite.remind:'0 */5 * * * ?'}")
+    private String taskOnsiteRemind;
 
-    @Value("${first.task.cron}")
-    private String cron_3;
-    @Value("${first.remind.work.cron}")
-    private String cron_4;
+    @Value("${task.first.cron:'0 */5 * * * ?'}")
+    private String taskFirstCron;
+    @Value("${task.first.remind:'0 */5 * * * ?'}")
+    private String taskFirstRemind;
+    
+    @Value("${task.pass.cron:'0 */1 * * * ?'}")
+    private String taskPassCron;
 
+    @Autowired
+    private TaskProperties taskProperties;
+    
     @Autowired
     OnsiteTaskService onsiteTaskService;
 
@@ -72,7 +79,7 @@ public class TimerTaskInit {
         onsite.setJobGroupName(QuartzManager.JOB_GROUP_NAME);
         onsite.setJobName("errAutoTask");
         onsite.setParamMap(param);
-        onsite.setTriggerRule("0 */5 * * * ? ");
+        onsite.setTriggerRule(taskProperties.getPass().getCron());
         onsite.setClazz(AutoApproveErrorTaskJob.class);
         QuartzManager.addJob(sche, onsite);
     }
@@ -88,7 +95,7 @@ public class TimerTaskInit {
         onsite.setJobGroupName(QuartzManager.JOB_GROUP_NAME);
         onsite.setJobName("onsiteTask");
         onsite.setParamMap(param);
-        onsite.setTriggerRule(cron_1);//"0 */1 * * * ?" 这个用于测试一分钟一次
+        onsite.setTriggerRule(taskProperties.getOnsite().getCron());//"0 */1 * * * ?" 这个用于测试一分钟一次
         onsite.setClazz(OnsiteTaskJob.class);
         QuartzManager.addJob(sche, onsite);
     }
@@ -98,7 +105,7 @@ public class TimerTaskInit {
         onsite.setJobGroupName(QuartzManager.JOB_GROUP_NAME);
         onsite.setJobName("firstTask");
         onsite.setParamMap(param);
-        onsite.setTriggerRule(cron_3);//"0 */1 * * * ?" 这个用于测试一分钟一次
+        onsite.setTriggerRule(taskProperties.getFirst().getCron());//"0 */1 * * * ?" 这个用于测试一分钟一次
         onsite.setClazz(FirstTaskJob.class);
         QuartzManager.addJob(sche, onsite);
     }
@@ -115,7 +122,7 @@ public class TimerTaskInit {
         onsite.setJobGroupName(QuartzManager.JOB_GROUP_NAME);
         onsite.setJobName("onsiteRemindWork");
         onsite.setParamMap(param);
-        onsite.setTriggerRule(cron_2);//"0 */1 * * * ?" 这个用于测试一分钟一次
+        onsite.setTriggerRule(taskProperties.getOnsite().getRemind());//"0 */1 * * * ?" 这个用于测试一分钟一次
         onsite.setClazz(OnsiteRemindJob.class);
         QuartzManager.addJob(sche, onsite);
     }
@@ -125,7 +132,7 @@ public class TimerTaskInit {
         onsite.setJobGroupName(QuartzManager.JOB_GROUP_NAME);
         onsite.setJobName("firstRemindWork");
         onsite.setParamMap(param);
-        onsite.setTriggerRule(cron_4);//"0 */1 * * * ?" 这个用于测试一分钟一次
+        onsite.setTriggerRule(taskProperties.getFirst().getRemind());//"0 */1 * * * ?" 这个用于测试一分钟一次
         onsite.setClazz(FirstRemindJob.class);
         QuartzManager.addJob(sche, onsite);
     }

+ 6 - 0
application-task/src/main/java/com/factory/mapper/FirstTaskMapper.java

@@ -93,6 +93,12 @@ public interface FirstTaskMapper {
     public int addApproveTask(ApproveEntry vo);
 
     public ApprovalUserRes getApprovalNextUser(Map map);
+    /**
+     * 获取放行的计划基本信息
+     * @param taskId
+     * @return
+     */
+    public Map<String,Object> getApprovalPlanInfo(Long taskId);
 
 
 }

+ 7 - 0
application-task/src/main/java/com/factory/mapper/OnsiteTaskMapper.java

@@ -90,6 +90,13 @@ public interface OnsiteTaskMapper {
     public int addApproveTask(ApproveEntry vo);
 
     public ApprovalUserRes getApprovalNextUser(Map map);
+    
+    /**
+     * 获取放行的计划基本信息
+     * @param taskId
+     * @return
+     */
+    public Map<String,Object> getApprovalPlanInfo(Long taskId);
 
 
 }

+ 16 - 12
application-task/src/main/java/com/factory/service/impl/FirstTaskServiceImp.java

@@ -1,6 +1,7 @@
 package com.factory.service.impl;
 
 import java.text.SimpleDateFormat;
+import java.time.LocalDateTime;
 import java.util.Date;
 import java.util.HashMap;
 import java.util.List;
@@ -15,6 +16,7 @@ import com.factory.base.entity.task.ApproveEntry;
 import com.factory.base.entity.task.FirstCalendar;
 import com.factory.base.entity.task.FirstTask;
 import com.factory.base.entity.task.SendMsgReq;
+import com.factory.base.util.time.TimeUtils;
 import com.factory.mapper.FirstTaskMapper;
 import com.factory.service.FirstTaskService;
 import com.factory.service.MsgService;
@@ -127,27 +129,29 @@ public class FirstTaskServiceImp implements FirstTaskService {
         HashMap<String,Object> map = new HashMap<>();
         map.put("approvalLevel", vo.getApproval_level());
         vo.setStatus(2);
-        vo.setApproval_user_id(1l);
-        ApprovalUserRes nextUser = firstTaskMapper.getApprovalNextUser(map);
-        if (nextUser != null) {
+        vo.setApproval_user_id(0);
+        ApprovalUserRes nextRole = firstTaskMapper.getApprovalNextUser(map);
+        if (nextRole != null) {
             int result = firstTaskMapper.updateApproveTask(vo);
             if (result > 0) {
                 ApproveEntry approve = new ApproveEntry();
                 approve.setTask_id(vo.getTask_id());
-                approve.setApproval_level(nextUser.getApproval_level());
-                approve.setApproval_role(nextUser.getRole_id());
+                approve.setApproval_level(nextRole.getApproval_level());
+                approve.setApproval_role(nextRole.getRole_id());
                 
                 int status = firstTaskMapper.addApproveTask(approve);
                 if (status > 0) {
-                    Date date = new Date();
-                    SimpleDateFormat ft = new SimpleDateFormat("yyyy-MM-dd");
                     //发送微信消息
+                    Map<String,Object> plan = firstTaskMapper.getApprovalPlanInfo(vo.getTask_id());
+            		String planName = plan.get("planName").toString();
+            		planName = planName.length()>15?(planName.substring(0,12)+"..."):planName;
                     SendMsgReq sendMsgReq = new SendMsgReq();
-                    sendMsgReq.setToUserId(nextUser.getUser_id());
-                    sendMsgReq.setTitle("计划放行提醒");
-                    sendMsgReq.setContent("您有待放行的计划审批,请登录小程序查看【计划放行】");
-                    sendMsgReq.setEndTime(ft.format(date));
-                    msgService.sendWechatMessageByRole(sendMsgReq,nextUser.getRole_id());
+                    sendMsgReq.setToUserId(nextRole.getUser_id());
+                    sendMsgReq.setTitle("计划放行("+plan.get("typeFlagStr")+")提醒");
+                    sendMsgReq.setContent(planName+"待审批");
+                    sendMsgReq.setEndTime(TimeUtils.getDayString(LocalDateTime.now()));
+                    sendMsgReq.setPageIndex("/pagesPlan/approval");
+                    msgService.sendWechatMessageByRole(sendMsgReq,nextRole.getRole_id());
                 }
                 return status;
             }

+ 7 - 5
application-task/src/main/java/com/factory/service/impl/MsgServiceImpl.java

@@ -1,6 +1,7 @@
 package com.factory.service.impl;
 
 import java.text.SimpleDateFormat;
+import java.time.LocalDateTime;
 import java.util.Date;
 import java.util.HashMap;
 import java.util.List;
@@ -17,6 +18,7 @@ import com.factory.base.entity.task.PushWxMessage;
 import com.factory.base.entity.task.SendMsgReq;
 import com.factory.base.entity.task.TemplateEntry;
 import com.factory.base.entity.task.ValEntry;
+import com.factory.base.util.time.TimeUtils;
 import com.factory.common.HttpCilentUntil;
 import com.factory.mapper.UserMapper;
 import com.factory.service.MsgService;
@@ -73,7 +75,7 @@ public class MsgServiceImpl implements MsgService {
             TemplateEntry template = new TemplateEntry();
             template.setTemplate_id(templateId);
             template.setTouser(openId);
-            template.setPage(page);
+            template.setPage(sendMsgReq.getPageIndex()==null?page:sendMsgReq.getPageIndex());
             template.setMiniprogram_state(miniprogramState);
             template.setData(dataMap);
 
@@ -101,6 +103,7 @@ public class MsgServiceImpl implements MsgService {
 	        log.error("下发微信消息,角色:{}接收人为空", roleId);
 			return "-1";
 		}
+		log.info("发消息内容{}",sendMsgReq);
 		HashMap<String, ValEntry> dataMap = new HashMap<>();
 		 //提醒内容
         dataMap.put("thing1", ValEntry.builder().value(sendMsgReq.getContent()).build());
@@ -110,9 +113,7 @@ public class MsgServiceImpl implements MsgService {
         if (null != sendMsgReq.getEndTime()) {
             dataMap.put("time3", ValEntry.builder().value(sendMsgReq.getEndTime()).build());
         } else {
-            Date date = new Date();
-            SimpleDateFormat ft = new SimpleDateFormat("yyyy-MM-dd");
-            dataMap.put("time3", ValEntry.builder().value(ft.format(date)).build());
+            dataMap.put("time3", ValEntry.builder().value(TimeUtils.getDayString(LocalDateTime.now())).build());
         }
         dataMap.put("thing4", new ValEntry("智云工厂系统"));
 		for(Long userId:list) {
@@ -120,7 +121,8 @@ public class MsgServiceImpl implements MsgService {
 				String openId = userMapper.getOpenIdByUserId(userId);
 				if (null != openId && !openId.isEmpty()) {
 					AppEntry appEntry = AppEntry.builder().appId(appid).secret(appsecret).build();
-					TemplateEntry tpl = TemplateEntry.builder().template_id(templateId).touser(openId).page(page)
+					TemplateEntry tpl = TemplateEntry.builder().template_id(templateId).touser(openId)
+							.page(sendMsgReq.getPageIndex()==null?page:sendMsgReq.getPageIndex())
 							.miniprogram_state(miniprogramState).data(dataMap).build();
 					PushWxMessage.sendMessage(appEntry, tpl);
 				} else {

+ 28 - 22
application-task/src/main/java/com/factory/service/impl/OnsiteTaskServiceImp.java

@@ -1,18 +1,23 @@
 package com.factory.service.impl;
 
-import com.factory.base.entity.task.*;
-import com.factory.mapper.OnsiteTaskMapper;
-import com.factory.service.MsgService;
-import com.factory.service.OnsiteTaskService;
+import java.time.LocalDateTime;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
-import java.text.SimpleDateFormat;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import com.factory.base.entity.task.ApprovalUserRes;
+import com.factory.base.entity.task.ApproveEntry;
+import com.factory.base.entity.task.OnsiteCalendar;
+import com.factory.base.entity.task.OnsiteTask;
+import com.factory.base.entity.task.SendMsgReq;
+import com.factory.base.util.time.TimeUtils;
+import com.factory.mapper.OnsiteTaskMapper;
+import com.factory.service.MsgService;
+import com.factory.service.OnsiteTaskService;
 
 @Service("onsiteTaskServiceImp")
 public class OnsiteTaskServiceImp implements OnsiteTaskService {
@@ -118,29 +123,30 @@ public class OnsiteTaskServiceImp implements OnsiteTaskService {
     @Transactional(rollbackFor = Throwable.class)
     public int addTaskForNext(ApproveEntry vo) {
         vo.setStatus(2);
-        vo.setApproval_user_id(1l);
-        
+        vo.setApproval_user_id(0);
         HashMap<String,Object> map = new HashMap<>();
         map.put("approvalLevel", vo.getApproval_level());
-        ApprovalUserRes nextUser = onsiteTaskMapper.getApprovalNextUser(map);
-        if (nextUser != null) {
+        ApprovalUserRes nextRole = onsiteTaskMapper.getApprovalNextUser(map);
+        if (nextRole != null) {
             int result = onsiteTaskMapper.updateApproveTask(vo);
             if (result > 0) {
                 ApproveEntry approve = new ApproveEntry();
                 approve.setTask_id(vo.getTask_id());
-                approve.setApproval_level(nextUser.getApproval_level());
-                approve.setApproval_role(nextUser.getRole_id());
+                approve.setApproval_level(nextRole.getApproval_level());
+                approve.setApproval_role(nextRole.getRole_id());
                 int status = onsiteTaskMapper.addApproveTask(approve);
                 if (status > 0) {
-                    Date date = new Date();
-                    SimpleDateFormat ft = new SimpleDateFormat("yyyy-MM-dd");
+                    Map<String,Object> plan = onsiteTaskMapper.getApprovalPlanInfo(vo.getTask_id());
                     //发送微信消息
+                    String planName = plan.get("planName").toString();
+            		planName = planName.length()>15?(planName.substring(0,12)+"..."):planName;
                     SendMsgReq sendMsgReq = new SendMsgReq();
-                    sendMsgReq.setToUserId(nextUser.getUser_id());
-                    sendMsgReq.setTitle("计划放行提醒");
-                    sendMsgReq.setContent("您有待放行的计划审批,请登录小程序查看【计划放行】");
-                    sendMsgReq.setEndTime(ft.format(date));
-                    msgService.sendWechatMessageByRole(sendMsgReq,nextUser.getRole_id());
+                    sendMsgReq.setToUserId(nextRole.getUser_id());
+                    sendMsgReq.setTitle("计划放行("+plan.get("typeFlagStr")+"-防错)提醒");
+                    sendMsgReq.setContent(""+planName+"待审批");
+                    sendMsgReq.setEndTime(TimeUtils.getDayString(LocalDateTime.now()));
+                    sendMsgReq.setPageIndex("/pagesPlan/approval");
+                    msgService.sendWechatMessageByRole(sendMsgReq,nextRole.getRole_id());
                 }
                 return status;
             }

+ 0 - 12
application-task/src/main/resources/application-test.yml

@@ -18,18 +18,6 @@ spring:
      poolPreparedStatements: false
      maxOpenPreparedStatements: 20
      validationQuery: 'show status like "%Service_Status%"'
-onsite: 
-  task: 
-    cron: 0 */5 * * * ?
-  remind: 
-    work: 
-      cron: 0 */5 * * * ?
-first: 
-  task: 
-    cron: 0 */5 * * * ?
-  remind: 
-    work: 
-      cron: 0 */5 * * * ?
 wx:
   minprogram:
     miniprogramState: trial

+ 0 - 16
application-task/src/main/resources/application-uat.yml

@@ -18,22 +18,6 @@ spring:
      poolPreparedStatements: false
      maxOpenPreparedStatements: 20
      validationQuery: 'show status like "%Service_Status%"'
-onsite: 
-  task: 
-    cron: 0 0 2 * * ?
-#每日执行job时间 每日2点用于执行onsite任务的生成
-  remind: 
-    work: 
-      cron: 0 */5 * * * ? 
-#onsite 工作提醒      
-first: 
-  task: 
-    cron: 0 0 2 * * ?
-#每日执行job时间 每日2点用于执行onsite任务的生成
-  remind: 
-    work: 
-      cron: 0 */5 * * * ? 
-#onsite 工作提醒
 wx:
   minprogram:
     miniprogramState: trial

+ 15 - 0
application-task/src/main/resources/application.yml

@@ -27,3 +27,18 @@ wx:
     templateId: 3RatcsOA-T0Dsgevr-1UGvYzZvhS0UY9A86fnTFax50
     page: pages/login/index
     miniprogramState: formal
+
+task:
+  onsite:
+    cron: 0 */5 * * * ?
+    #执行job时间给还没做任务的计划创建任务
+    remind: 0 */5 * * * ? 
+    #防错工作提醒:发送pad提醒
+  first:
+    cron: 0 */5 * * * ?
+    #执行job时间给还没做任务的计划创建任务
+    remind: 0 */5 * * * ? 
+    #首件工作提醒:发送pad提醒
+  pass: 
+    cron: 0 */1 * * * ? 
+    #放行自动升级:发送小程序消息提醒

+ 16 - 1
application-task/src/main/resources/mappers/FirstTaskMapper.xml

@@ -60,7 +60,22 @@
           ar.role_id
         FROM approval_rule ar
         WHERE ar.approval_level &gt; #{approvalLevel} AND ar.type = 2 
-        ORDER BY ar.approval_level desc LIMIT   1
+        ORDER BY ar.approval_level asc LIMIT   1
+    </select>
+    <select id="getApprovalPlanInfo" resultType="map">
+         SELECT 
+         bp.id as bentelerPlanId,
+         bp.name as planName,
+         fat.type_flag  typeFlag,
+         case fac.type_flag
+         when 0 then '首件'
+         when 1 then '200件'
+         ELSE '中断'
+         END typeFlagStr
+        FROM benteler_plan bp
+        join first_article_calendar fac on fac.benteler_plan_id = bp.id
+        join first_article_task fat on fat.first_article_calendar_id = fac.id
+        WHERE fat.id = #{taskId}
     </select>
 
 

+ 17 - 2
application-task/src/main/resources/mappers/OnsiteTaskMapper.xml

@@ -31,7 +31,22 @@
         <result column="role_id" property="role_id"/>
         <result column="approval_level" property="approval_level"/>
     </resultMap>
-
+	<select id="getApprovalPlanInfo" resultType="map">
+         SELECT 
+         bp.id as bentelerPlanId,
+         bp.name as planName,
+         oc.type_flag  typeFlag,
+         case oc.type_flag
+         when 0 then '日'
+         when 1 then '周'
+         ELSE '月'
+         END typeFlagStr
+        FROM benteler_plan bp
+        join onsite_calendar oc on oc.benteler_plan_id = bp.id
+        join onsite_task ot on ot.onsite_calendar_id = oc.id
+        WHERE ot.id = #{taskId}
+    </select>
+    
     <select id="getMaxApproveLevel" resultType="int">
         select max(approval_level)
         from approval_rule
@@ -63,7 +78,7 @@
           ar.role_id
         FROM approval_rule ar
         WHERE ar.approval_level &gt; #{approvalLevel} AND ar.type = 3
-        ORDER BY ar.approval_level desc LIMIT   1
+        ORDER BY ar.approval_level asc LIMIT   1
     </select>
 
 

+ 5 - 0
common-base/src/main/java/com/factory/base/entity/task/ApprovalUserRes.java

@@ -4,6 +4,11 @@ import java.io.Serializable;
 
 import lombok.Data;
 
+/**
+ * 角色为主
+ * @author edz
+ *
+ */
 @Data
 public class ApprovalUserRes implements Serializable{
 

+ 1 - 1
common-base/src/main/java/com/factory/base/entity/task/PushWxMessage.java

@@ -27,7 +27,7 @@ public class PushWxMessage {
 			jsonObject = JacksonJsonUtils.readObject(result, HashMap.class);
 			String errCode = jsonObject.get("errcode").toString();
 			String errMsg = jsonObject.get("errmsg").toString();
-			log.info("下发微信消息结果:{}", jsonObject);
+			log.info("下发微信消息结果:{},内容:{}", jsonObject,JacksonJsonUtils.writeObject(template));
 			if (!"0".equals(errCode)) {
 				log.error("下发微信消息错误code:{},errMsg:{}", errCode, errMsg);
 			}

+ 9 - 40
common-base/src/main/java/com/factory/base/entity/task/SendMsgReq.java

@@ -1,10 +1,13 @@
 package com.factory.base.entity.task;
 
+import lombok.Data;
+
 /**
  * @author sMArT
  * @version 1.0
  * @date 2021-08-04 10:00 上午
  */
+@Data
 public class SendMsgReq {
 
     /**
@@ -30,44 +33,10 @@ public class SendMsgReq {
      * 发布人员id
      */
     private Long fromUserId;
+    /**
+     * 跳转页面
+     */
+    private String pageIndex;
 
-    public Long getToUserId() {
-        return toUserId;
-    }
-
-    public void setToUserId(Long toUserId) {
-        this.toUserId = toUserId;
-    }
-
-    public String getTitle() {
-        return title;
-    }
-
-    public void setTitle(String title) {
-        this.title = title;
-    }
-
-    public String getContent() {
-        return content;
-    }
-
-    public void setContent(String content) {
-        this.content = content;
-    }
-
-    public String getEndTime() {
-        return endTime;
-    }
-
-    public void setEndTime(String endTime) {
-        this.endTime = endTime;
-    }
-
-    public Long getFromUserId() {
-        return fromUserId;
-    }
-
-    public void setFromUserId(Long fromUserId) {
-        this.fromUserId = fromUserId;
-    }
-}
+   
+}