浏览代码

Merge remote-tracking branch 'origin/master'

guozx 3 年之前
父节点
当前提交
4b7d3d71c6

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

@@ -45,14 +45,14 @@ public class PlanApprovalController {
     @ApiOperation(value = "计划审批详情-首件")
     @PostMapping("/detail/initial")
     public ResponseBean<PlanApprovalDetailRes> approvalDetail(@RequestBody PlanInfoReq planInfoReq) {
-        PlanApprovalDetailRes planApprovalDetailRes = planApprovalService.getApprovalDetailInitial(planInfoReq);
+        PlanApprovalDetailRes planApprovalDetailRes = planApprovalService.getApprovalFADetail(planInfoReq);
         return ResponseBeanBuilder.ok(planApprovalDetailRes);
     }
 
     @ApiOperation(value = "计划审批详情-防错")
     @PostMapping("/detail/pm")
     public ResponseBean<PlanApprovalDetailRes> approvalDetailPM(@RequestBody PlanInfoReq planInfoReq) {
-        PlanApprovalDetailRes planApprovalDetailRes = planApprovalService.getApprovalDetailPM(planInfoReq);
+        PlanApprovalDetailRes planApprovalDetailRes = planApprovalService.getApprovalPMDetail(planInfoReq);
         return ResponseBeanBuilder.ok(planApprovalDetailRes);
     }
 

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

@@ -2,14 +2,13 @@ package com.factory.controller.wx;
 
 import com.factory.base.entity.aggregates.ResponseBean;
 import com.factory.base.util.res.ResponseBeanBuilder;
-import com.factory.web.entity.fa.req.SearchFaPlanReq;
-import com.factory.web.entity.fa.res.FaPlanRes;
-import com.factory.web.service.fa.FirstArticleService;
-import com.factory.wx.entity.req.*;
-import com.factory.wx.entity.res.AbnormalDetailRes;
+import com.factory.wx.entity.req.PlanApprovalTaskReq;
+import com.factory.wx.entity.req.PlanPageReq;
+import com.factory.wx.entity.req.PlanPassReq;
 import com.factory.wx.entity.res.PlanPassDetailRes;
 import com.factory.wx.entity.res.PlanPassRes;
-import com.factory.wx.service.AbnormalStatisticsService;
+import com.factory.wx.service.PlanPassFAService;
+import com.factory.wx.service.PlanPassPMService;
 import com.factory.wx.service.PlanPassService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
@@ -40,9 +39,9 @@ public class PlanPassController {
     @Autowired
     private PlanPassService planPassService;
     @Autowired
-    private FirstArticleService firstArticleService;
+    private PlanPassFAService planPassFAService;
     @Autowired
-    private AbnormalStatisticsService abnormalStatisticsService;
+    private PlanPassPMService planPassPMService;
 
     @ApiOperation(value = "计划放行列表")
     @PostMapping("/list")
@@ -56,23 +55,14 @@ public class PlanPassController {
     @ApiOperation(value = "计划放行详情-首件")
     @PostMapping("/detail/initial")
     public ResponseBean<PlanPassDetailRes> passDetail(@RequestBody PlanPassReq planPassReq) {
-        PlanPassDetailRes planPassDetailRes = planPassService.getPassDetail(planPassReq);
+        PlanPassDetailRes planPassDetailRes = planPassFAService.getPassFADetail(planPassReq);
         return ResponseBeanBuilder.ok(planPassDetailRes);
     }
 
-//    @ApiOperation(value = "计划放行详情-防错")
-//    @PostMapping("/detail/pm")
-//    public ResponseBean<AbnormalDetailRes> passDetailPM(@RequestBody PlanPassReq planPassReq) {
-//        AbnormalDetailReq abnormalDetailReq = new AbnormalDetailReq();
-//        abnormalDetailReq.setPlanId(planPassReq.getPlanId());
-//        abnormalDetailReq.setCheckType((long) planPassReq.getPlanType());
-//        AbnormalDetailRes abnormalDetailRes = abnormalStatisticsService.getAbnormalDetail(planPassReq);
-//        return ResponseBeanBuilder.ok(abnormalDetailRes);
-//    }
     @ApiOperation(value = "计划放行详情-防错")
     @PostMapping("/detail/pm")
     public ResponseBean<PlanPassDetailRes> passDetailPM(@RequestBody PlanPassReq planPassReq) {
-        PlanPassDetailRes planPassDetailRes = planPassService.getPassDetailPM(planPassReq);
+        PlanPassDetailRes planPassDetailRes = planPassPMService.getPassDetailPM(planPassReq);
         return ResponseBeanBuilder.ok(planPassDetailRes);
     }
 

+ 5 - 4
application-facade/src/main/java/com/factory/wx/mapper/PlanPassMapper.java

@@ -1,6 +1,7 @@
 package com.factory.wx.mapper;
 
 import com.factory.wx.entity.req.PlanPageReq;
+import com.factory.wx.entity.req.PlanPassReq;
 import com.factory.wx.entity.req.SearchPlanPassReq;
 import com.factory.wx.entity.res.PlanPassItemRes;
 import com.factory.wx.entity.res.PlanPassItemResultRes;
@@ -45,10 +46,10 @@ public interface PlanPassMapper {
     /**
      * 获取待放行防错任务
      *
-     * @param planId
+     * @param planPassReq
      * @return
      */
-    List<PlanPassTaskRes> getPmPassTaskListByPlanId(Long planId);
+    List<PlanPassTaskRes> getPmPassTaskListByPlanId(@Param("req") PlanPassReq planPassReq);
 
 
     /**
@@ -62,10 +63,10 @@ public interface PlanPassMapper {
     /**
      * 获取待放行首件任务
      *
-     * @param planId
+     * @param planPassReq
      * @return
      */
-    List<PlanPassTaskRes> getFaPassTaskListByPlanId(Long planId);
+    List<PlanPassTaskRes> getFaPassTaskListByPlanId(@Param("req") PlanPassReq planPassReq);
 
     /**
      * 获取首件监测点信息

+ 2 - 2
application-facade/src/main/java/com/factory/wx/service/PlanApprovalService.java

@@ -30,7 +30,7 @@ public interface PlanApprovalService {
      * @param planInfoReq
      * @return
      */
-    PlanApprovalDetailRes getApprovalDetailInitial(PlanInfoReq planInfoReq);
+    PlanApprovalDetailRes getApprovalFADetail(PlanInfoReq planInfoReq);
 
     /**
      * 获取防错审批计划详情
@@ -38,7 +38,7 @@ public interface PlanApprovalService {
      * @param planInfoReq
      * @return
      */
-    PlanApprovalDetailRes getApprovalDetailPM(PlanInfoReq planInfoReq);
+    PlanApprovalDetailRes getApprovalPMDetail(PlanInfoReq planInfoReq);
 
     /**
      * 计划审批

+ 30 - 0
application-facade/src/main/java/com/factory/wx/service/PlanPassFAService.java

@@ -0,0 +1,30 @@
+package com.factory.wx.service;
+
+import com.factory.base.entity.aggregates.ResponseBean;
+import com.factory.wx.entity.req.PlanApprovalTaskReq;
+import com.factory.wx.entity.req.PlanPassReq;
+import com.factory.wx.entity.res.PlanPassDetailRes;
+
+/**
+ * @author sMArT
+ * @version 1.0
+ * @date 2021-08-03 10:28 上午
+ */
+public interface PlanPassFAService {
+    /**
+     * 计划放行详情-首件
+     *
+     * @param planPassReq
+     * @return
+     */
+    PlanPassDetailRes getPassFADetail(PlanPassReq planPassReq);
+
+
+    /**
+     * 计划放行
+     *
+     * @param planApprovalTaskReq
+     * @return
+     */
+    ResponseBean approvalFATaskOperate(PlanApprovalTaskReq planApprovalTaskReq);
+}

+ 31 - 0
application-facade/src/main/java/com/factory/wx/service/PlanPassPMService.java

@@ -0,0 +1,31 @@
+package com.factory.wx.service;
+
+import com.factory.base.entity.aggregates.ResponseBean;
+import com.factory.wx.entity.req.PlanApprovalTaskReq;
+import com.factory.wx.entity.req.PlanPassReq;
+import com.factory.wx.entity.res.PlanPassDetailRes;
+
+/**
+ * @author sMArT
+ * @version 1.0
+ * @date 2021-08-03 10:28 上午
+ */
+public interface PlanPassPMService {
+
+    /**
+     * 计划放行详情-防错
+     *
+     * @param planPassReq
+     * @return
+     */
+    PlanPassDetailRes getPassDetailPM(PlanPassReq planPassReq);
+
+
+    /**
+     * 计划放行
+     *
+     * @param planApprovalTaskReq
+     * @return
+     */
+    ResponseBean approvalPMTaskOperate(PlanApprovalTaskReq planApprovalTaskReq);
+}

+ 3 - 23
application-facade/src/main/java/com/factory/wx/service/PlanPassService.java

@@ -1,13 +1,8 @@
 package com.factory.wx.service;
 
-import com.factory.base.entity.aggregates.PageBean;
 import com.factory.base.entity.aggregates.ResponseBean;
-import com.factory.base.entity.po.benteler.BentelerPlan;
 import com.factory.wx.entity.req.PlanApprovalTaskReq;
-import com.factory.wx.entity.req.PlanInfoReq;
 import com.factory.wx.entity.req.PlanPageReq;
-import com.factory.wx.entity.req.PlanPassReq;
-import com.factory.wx.entity.res.PlanPassDetailRes;
 import com.factory.wx.entity.res.PlanPassRes;
 
 import java.util.List;
@@ -19,21 +14,14 @@ import java.util.List;
  */
 public interface PlanPassService {
 
-    /**
-     * 计划放行详情-首件
-     *
-     * @param planPassReq
-     * @return
-     */
-    PlanPassDetailRes getPassDetail(PlanPassReq planPassReq);
 
     /**
-     * 计划放行详情-防错
+     * 计划放行列表
      *
-     * @param planPassReq
+     * @param planPageReq
      * @return
      */
-    PlanPassDetailRes getPassDetailPM(PlanPassReq planPassReq);
+    List<PlanPassRes> getPassList(PlanPageReq planPageReq);
 
     /**
      * 计划放行
@@ -42,12 +30,4 @@ public interface PlanPassService {
      * @return
      */
     ResponseBean approvalTaskOperate(PlanApprovalTaskReq planApprovalTaskReq);
-
-    /**
-     * 计划放行列表
-     *
-     * @param planPageReq
-     * @return
-     */
-    List<PlanPassRes> getPassList(PlanPageReq planPageReq);
 }

+ 7 - 11
application-facade/src/main/java/com/factory/wx/service/impl/AbnormalStatisticsServiceImpl.java

@@ -220,21 +220,17 @@ public class AbnormalStatisticsServiceImpl implements AbnormalStatisticsService
                 searchReq.setWorkshopId(abnormalWorkshopList.get(i).getWorkshopId());
                 searchReq.setTaskId(pmInfo.getTaskId());
                 List<AbnormalItemRes> abnormalItemList = preventMistakeMapper.getPmAbnormalItemList(searchReq).stream().filter(abnormalItemRes -> abnormalItemRes.getResult() > 0).collect(Collectors.toList());
-                if (abnormalItemList.size() == 0) {
-                    abnormalWorkshopList.remove(i);
-                } else {
-                    for (AbnormalItemRes abnormalItemRes : abnormalItemList) {
-                        Long userId = abnormalItemRes.getItemResultUserId();
-                        if (null != userId) {
-                            String userName = wxPlanService.getUserNameById(abnormalItemRes.getItemResultUserId());
-                            abnormalItemRes.setItemResultUser(userName);
-                        }
+                for (AbnormalItemRes abnormalItemRes : abnormalItemList) {
+                    Long userId = abnormalItemRes.getItemResultUserId();
+                    if (null != userId) {
+                        String userName = wxPlanService.getUserNameById(abnormalItemRes.getItemResultUserId());
+                        abnormalItemRes.setItemResultUser(userName);
                     }
-                    abnormalWorkshopList.get(i).setAbnormalItemList(abnormalItemList);
                 }
+                abnormalWorkshopList.get(i).setAbnormalItemList(abnormalItemList);
             }
 
-            pmInfo.setAbnormalWorkshopList(abnormalWorkshopList);
+            pmInfo.setAbnormalWorkshopList(abnormalWorkshopList.stream().filter(workshop -> workshop.getAbnormalItemList().size() > 0).collect(Collectors.toList()));
         }
         return pmList;
     }

+ 45 - 12
application-facade/src/main/java/com/factory/wx/service/impl/PlanApprovalServiceImpl.java

@@ -9,26 +9,24 @@ import com.factory.base.entity.aggregates.PageBean;
 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.mapper.UserInfoMapper;
 import com.factory.web.entity.fa.FirstArticleItem;
 import com.factory.web.entity.fa.FirstArticleTitle;
 import com.factory.web.entity.fa.FirstArticleWorkshop;
 import com.factory.web.entity.pm.*;
 import com.factory.web.entity.pm.res.ApprovalUserRes;
 import com.factory.web.mapper.BentelerPlanMapper;
-import com.factory.web.mapper.fa.FirstArticleCalendarMapper;
 import com.factory.web.mapper.fa.FirstArticleItemMapper;
 import com.factory.web.mapper.fa.FirstArticleWorkshopMapper;
-import com.factory.web.mapper.pm.*;
-import com.factory.web.service.fa.FirstArticleService;
+import com.factory.web.mapper.pm.ApprovalRuleMapper;
+import com.factory.web.mapper.pm.OnsiteApprovalPlanMapper;
+import com.factory.web.mapper.pm.OnsiteItemMapper;
+import com.factory.web.mapper.pm.OnsiteWorkshopMapper;
 import com.factory.web.service.pm.PreventMistakeService;
 import com.factory.wx.entity.req.PlanApprovalReq;
 import com.factory.wx.entity.req.PlanInfoReq;
 import com.factory.wx.entity.req.PlanPageReq;
 import com.factory.wx.entity.res.PlanApprovalDetailRes;
-import com.factory.wx.entity.res.PlanApprovalRes;
 import com.factory.wx.entity.res.WxPlanBaseInfoRes;
-import com.factory.wx.mapper.PlanApprovalMapper;
 import com.factory.wx.service.PlanApprovalService;
 import com.factory.wx.service.WxPlanService;
 import org.apache.commons.lang3.StringUtils;
@@ -37,6 +35,7 @@ import org.slf4j.LoggerFactory;
 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;
 
@@ -115,7 +114,7 @@ public class PlanApprovalServiceImpl implements PlanApprovalService {
      * @return
      */
     @Override
-    public PlanApprovalDetailRes getApprovalDetailInitial(PlanInfoReq planInfoReq) {
+    public PlanApprovalDetailRes getApprovalFADetail(PlanInfoReq planInfoReq) {
         WxPlanBaseInfoRes wxPlanBaseInfoRes =
                 wxPlanService.getFirstArticlePlanBaseInfo(planInfoReq.getPlanId());
 
@@ -127,11 +126,13 @@ public class PlanApprovalServiceImpl implements PlanApprovalService {
                     .eq(FirstArticleItem::getWorkshopId, firstArticleWorkshop.getId())));
         });
 
+        List<Integer> itemType = getFAItemFrequency(firstArticleWorkshopList);
+
         return PlanApprovalDetailRes.builder()
                 .planId(wxPlanBaseInfoRes.getPlanId())
                 .planName(wxPlanBaseInfoRes.getPlanName())
                 .usersName(wxPlanBaseInfoRes.getUsersName())
-                .frequency(wxPlanBaseInfoRes.getFrequency())
+                .frequency(itemType)
                 .effectiveDate(wxPlanBaseInfoRes.getEffectiveDate())
                 .firstArticleTitle((FirstArticleTitle) wxPlanBaseInfoRes.getTitle())
                 .attachment(wxPlanBaseInfoRes.getAttachment())
@@ -139,6 +140,24 @@ public class PlanApprovalServiceImpl implements PlanApprovalService {
                 .build();
     }
 
+    /**
+     * 首件频次归类
+     *
+     * @param firstArticleWorkshopList
+     * @return
+     */
+    private List<Integer> getFAItemFrequency(List<FirstArticleWorkshop> firstArticleWorkshopList) {
+        List<Integer> itemType = new ArrayList<>();
+        firstArticleWorkshopList.forEach(workshop -> {
+            workshop.getFirstArticleItemList().forEach(item -> {
+                if (item.getFirstFlag() == 1) itemType.add(0);
+                if (item.getTwoHundredFlag() == 1) itemType.add(1);
+                if (item.getCatchFlag() == 1) itemType.add(2);
+            });
+        });
+        return itemType.stream().distinct().collect(Collectors.toList());
+    }
+
 
     /**
      * 获取审批计划详情-防错
@@ -147,7 +166,7 @@ public class PlanApprovalServiceImpl implements PlanApprovalService {
      * @return
      */
     @Override
-    public PlanApprovalDetailRes getApprovalDetailPM(PlanInfoReq planInfoReq) {
+    public PlanApprovalDetailRes getApprovalPMDetail(PlanInfoReq planInfoReq) {
         WxPlanBaseInfoRes wxPlanBaseInfoRes =
                 wxPlanService.getOnsitePlanBaseInfo(planInfoReq.getPlanId());
 
@@ -157,14 +176,13 @@ public class PlanApprovalServiceImpl implements PlanApprovalService {
             onsiteWorkshop.setOnsiteItemList(onsiteItemMapper.selectList(Wrappers.<OnsiteItem>lambdaQuery()
                     .eq(OnsiteItem::getWorkshopId, onsiteWorkshop.getId())));
         });
-
-//       List<Integer> a =onsiteWorkshopList.stream().map(OnsiteWorkshop::getOnsiteItemList).map(OnsiteItem::getTypeFlag).distinct().collect(Collectors.toList());
+        List<Integer> itemType = getPMItemFrequency(onsiteWorkshopList);
 
         return PlanApprovalDetailRes.builder()
                 .planId(wxPlanBaseInfoRes.getPlanId())
                 .planName(wxPlanBaseInfoRes.getPlanName())
                 .usersName(wxPlanBaseInfoRes.getUsersName())
-                .frequency(wxPlanBaseInfoRes.getFrequency())
+                .frequency(itemType)
                 .effectiveDate(wxPlanBaseInfoRes.getEffectiveDate())
                 .titleInfo((OnsiteTitle) wxPlanBaseInfoRes.getTitle())
                 .attachment(wxPlanBaseInfoRes.getAttachment())
@@ -172,6 +190,21 @@ public class PlanApprovalServiceImpl implements PlanApprovalService {
                 .build();
     }
 
+    /**
+     * 获取防错频次
+     *
+     * @param onsiteWorkshopList
+     */
+    private List<Integer> getPMItemFrequency(List<OnsiteWorkshop> onsiteWorkshopList) {
+        List<Integer> frequency = new ArrayList<>();
+        onsiteWorkshopList.forEach(workshop -> {
+            workshop.getOnsiteItemList().forEach(item -> {
+                frequency.add(item.getTypeFlag());
+            });
+        });
+        return frequency.stream().distinct().collect(Collectors.toList());
+    }
+
     /**
      * 计划审批
      *

+ 268 - 0
application-facade/src/main/java/com/factory/wx/service/impl/PlanPassFAServiceImpl.java

@@ -0,0 +1,268 @@
+package com.factory.wx.service.impl;
+
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.factory.base.entity.aggregates.ResponseBean;
+import com.factory.base.util.res.ResponseBeanBuilder;
+import com.factory.web.entity.fa.FirstArticleApprovalTask;
+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.res.ApprovalUserRes;
+import com.factory.web.mapper.fa.FirstArticleApprovalTaskMapper;
+import com.factory.web.mapper.pm.ApprovalRuleMapper;
+import com.factory.web.service.fa.FirstArticleService;
+import com.factory.web.service.fa.FirstArticleTaskService;
+import com.factory.web.service.fa.FirstArticleWorkshopService;
+import com.factory.web.service.pm.PreventMistakeService;
+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.res.*;
+import com.factory.wx.mapper.PlanPassMapper;
+import com.factory.wx.service.PlanPassFAService;
+import com.factory.wx.service.WxPlanService;
+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
+ * @version 1.0
+ * @date 2021-08-03 10:29 上午
+ */
+
+@Service("planPassFAService")
+public class PlanPassFAServiceImpl implements PlanPassFAService {
+    /**
+     * 审批规则类型为:2首件
+     */
+    private static int APPROVAL_TYPE_FIRST_ARTICLE = 2;
+    @Autowired
+    private PlanPassMapper planPassMapper;
+    @Autowired
+    private FirstArticleTaskService firstArticleTaskService;
+    @Autowired
+    private FirstArticleApprovalTaskMapper firstArticleApprovalTaskMapper;
+    @Autowired
+    private FirstArticleService firstArticleService;
+    @Autowired
+    private WxPlanService wxPlanService;
+    @Autowired
+    private FirstArticleWorkshopService firstArticleWorkshopService;
+    @Autowired
+    private ApprovalRuleMapper approvalRuleMapper;
+    @Autowired
+    private PreventMistakeService preventMistakeService;
+
+    /**
+     * 计划放行详情-首件
+     *
+     * @param planPassReq
+     * @return
+     */
+    @Override
+    public PlanPassDetailRes getPassFADetail(PlanPassReq planPassReq) {
+        WxPlanBaseInfoRes wxPlanBaseInfoRes = wxPlanService.getFirstArticlePlanBaseInfo(planPassReq.getPlanId());
+
+        List<PlanPassTaskRes> planPassTaskResList = getFATaskList(planPassReq);
+
+        List<Integer> itemType = getItemFAFrequency(planPassTaskResList);
+
+        return PlanPassDetailRes.builder()
+                .planId(wxPlanBaseInfoRes.getPlanId())
+                .planName(wxPlanBaseInfoRes.getPlanName())
+                .usersName(wxPlanBaseInfoRes.getUsersName())
+                .frequency(itemType)
+                .effectiveDate(wxPlanBaseInfoRes.getEffectiveDate())
+                .firstArticleTitle((FirstArticleTitle) wxPlanBaseInfoRes.getTitle())
+                .taskList(planPassTaskResList)
+                .attachment(wxPlanBaseInfoRes.getAttachment())
+                .build();
+    }
+
+    /**
+     * 获取首件task
+     *
+     * @param planPassReq
+     * @return
+     */
+    private List<PlanPassTaskRes> getFATaskList(PlanPassReq planPassReq) {
+        List<PlanPassTaskRes> faList = planPassMapper.getFaPassTaskListByPlanId(planPassReq);
+
+        for (PlanPassTaskRes faInfo : faList) {
+            List<FirstArticleWorkshop> firstArticleWorkshopList = firstArticleWorkshopService.list(Wrappers.<FirstArticleWorkshop>lambdaQuery()
+                    .eq(FirstArticleWorkshop::getBentelerPlanId, planPassReq.getPlanId()));
+
+            List<PlanPassWorkshopRes> planPassWorkshopList = new ArrayList<PlanPassWorkshopRes>();
+            PlanPassWorkshopRes planPassWorkshop = null;
+            for (FirstArticleWorkshop workshop : firstArticleWorkshopList) {
+                planPassWorkshop = new PlanPassWorkshopRes();
+                planPassWorkshop.setWorkshopId(workshop.getId());
+                planPassWorkshop.setWsName(workshop.getWsName());
+                planPassWorkshop.setPlName(workshop.getPlName());
+                planPassWorkshopList.add(planPassWorkshop);
+            }
+
+            for (int i = 0; i < planPassWorkshopList.size(); i++) {
+
+                SearchPlanPassReq searchReq = new SearchPlanPassReq();
+                searchReq.setWorkshopId(planPassWorkshopList.get(i).getWorkshopId());
+                List<PlanPassItemRes> planPassItemList = planPassMapper.getFaPassItemList(searchReq);
+
+                for (PlanPassItemRes planPassItemRes : planPassItemList) {
+                    List<PlanPassItemResultRes> firstItemResultList = this.getFaItemResultList(faInfo.getTaskId(), planPassItemRes.getItemId(), 0);
+                    planPassItemRes.setFirstItemResultList(firstItemResultList);
+
+                    List<PlanPassItemResultRes> twoHundredItemResultList = this.getFaItemResultList(faInfo.getTaskId(), planPassItemRes.getItemId(), 1);
+                    planPassItemRes.setTwoHundredItemResultList(twoHundredItemResultList);
+
+                    List<PlanPassItemResultRes> catchItemResultList = this.getFaItemResultList(faInfo.getTaskId(), planPassItemRes.getItemId(), 2);
+                    planPassItemRes.setCatchItemResultList(catchItemResultList);
+                }
+                planPassWorkshopList.get(i).setItemList(planPassItemList);
+
+                faInfo.setWorkshopList(planPassWorkshopList.stream().filter(workshop -> workshop.getItemList().size() > 0).collect(Collectors.toList()));
+            }
+        }
+        return faList;
+    }
+
+    /**
+     * 首件频次拼装
+     *
+     * @param planPassTaskResList
+     * @return
+     */
+    private List<Integer> getItemFAFrequency(List<PlanPassTaskRes> planPassTaskResList) {
+        List<Integer> itemType = new ArrayList<>();
+        planPassTaskResList.forEach(task -> {
+            task.getWorkshopList().forEach(workshop -> {
+                workshop.getItemList().forEach(item -> {
+                    if (item.getFirstFlag() == 1) itemType.add(0);
+                    if (item.getTwoHundredFlag() == 1) itemType.add(1);
+                    if (item.getCatchFlag() == 1) itemType.add(2);
+                });
+            });
+        });
+        return itemType.stream().distinct().collect(Collectors.toList());
+    }
+
+    /**
+     * 计划放行
+     *
+     * @param planApprovalTaskReq
+     * @return
+     */
+    @Override
+    public ResponseBean approvalFATaskOperate(PlanApprovalTaskReq planApprovalTaskReq) {
+        int updateStatus = 0; // 更新状态
+        //更新首件审批信息
+        updateStatus = updateFirstArticleApprovalTask(planApprovalTaskReq);
+        if (updateStatus > 0) {
+            settingApprovalTask(planApprovalTaskReq);
+        }
+        return ResponseBeanBuilder.ok();
+    }
+
+    /**
+     * 更新首件任务审批状态
+     *
+     * @param planApprovalTaskReq
+     * @return
+     */
+    private int updateFirstArticleApprovalTask(PlanApprovalTaskReq planApprovalTaskReq) {
+        int updateStatus;
+        FirstArticleApprovalTask ot = new FirstArticleApprovalTask();
+        ot.setFirstArticleTaskId(planApprovalTaskReq.getTaskId());
+        ot.setReason(planApprovalTaskReq.getReason());
+        ot.setStatus(planApprovalTaskReq.getStatus());
+        updateStatus = firstArticleApprovalTaskMapper.update(ot, Wrappers.<FirstArticleApprovalTask>lambdaQuery()
+                .eq(FirstArticleApprovalTask::getFirstArticleTaskId, planApprovalTaskReq.getTaskId())
+                .eq(FirstArticleApprovalTask::getApprovalUserId, planApprovalTaskReq.getUserId()));
+        return updateStatus;
+    }
+
+    /**
+     * 更新task状态
+     *
+     * @return
+     */
+    private boolean updateFirstArticleTask(PlanApprovalTaskReq planApprovalTaskReq) {
+        int taskStatus = 0; //task表状态
+        if (planApprovalTaskReq.getStatus() == 1) taskStatus = 2; // 放行
+        if (planApprovalTaskReq.getStatus() == 2) taskStatus = 3; // 不通过
+
+        return firstArticleTaskService.updateById(FirstArticleTask.builder()
+                .id(planApprovalTaskReq.getTaskId())
+                .status(taskStatus).build());
+    }
+
+    /**
+     * 设置审批task任务
+     *
+     * @param planApprovalTaskReq
+     */
+    private void settingApprovalTask(PlanApprovalTaskReq planApprovalTaskReq) {
+        //审批不通过触发下一级别
+        if (planApprovalTaskReq.getStatus() == 2) {
+            //设置防错下一级别审批
+            setNextApprovalLevel(planApprovalTaskReq);
+        }
+        //审批通过,保存审批历史
+        if (planApprovalTaskReq.getStatus() == 1) {
+            //审批通过,更新task状态
+            updateFirstArticleTask(planApprovalTaskReq);
+            firstArticleService.setFirstArticleTaskHis(planApprovalTaskReq.getTaskId());
+        }
+    }
+
+    /**
+     * 设置首件下一级别人员
+     *
+     * @param planApprovalTaskReq
+     */
+    private void setNextApprovalLevel(PlanApprovalTaskReq planApprovalTaskReq) {
+        ApprovalRule approvalRuleMaxLevel = approvalRuleMapper.selectOne(Wrappers.<ApprovalRule>lambdaQuery()
+                .eq(ApprovalRule::getType, APPROVAL_TYPE_FIRST_ARTICLE)
+                .orderByDesc(ApprovalRule::getApprovalLevel)
+                .last("limit 1"));
+        //获取当前审批级别
+        FirstArticleApprovalTask firstArticleApprovalTask = firstArticleApprovalTaskMapper.selectOne(Wrappers.<FirstArticleApprovalTask>lambdaQuery()
+                .eq(FirstArticleApprovalTask::getFirstArticleTaskId, planApprovalTaskReq.getTaskId())
+                .eq(FirstArticleApprovalTask::getApprovalUserId, planApprovalTaskReq.getUserId()).last("limit 1"));
+        int userLevel = firstArticleApprovalTask.getApprovalLevel();
+        if (userLevel < approvalRuleMaxLevel.getApprovalLevel()) {
+            ApprovalUserRes approvalUserRes = preventMistakeService.getApprovalUserInfo(userLevel + 1, APPROVAL_TYPE_FIRST_ARTICLE);
+            firstArticleApprovalTaskMapper.insert(FirstArticleApprovalTask.builder()
+                    .firstArticleTaskId(firstArticleApprovalTask.getFirstArticleTaskId())
+                    .approvalLevel(approvalUserRes.getApprovalLevel())
+                    .approvalUserId(approvalUserRes.getUserId())
+                    .status(0)
+                    .build());
+        } else {
+            //如果是最后一个审批级别则设置task状态为不通过
+            updateFirstArticleTask(planApprovalTaskReq);
+        }
+    }
+
+    /**
+     * 获取首件item
+     *
+     * @param taskId
+     * @param itemId
+     * @param typeFlag
+     * @return
+     */
+    private List<PlanPassItemResultRes> getFaItemResultList(long taskId, long itemId, int typeFlag) {
+        SearchPlanPassReq searchReq = new SearchPlanPassReq();
+        searchReq.setTaskId(taskId);
+        searchReq.setItemId(itemId);
+        searchReq.setTypeFlag(typeFlag);
+        List<PlanPassItemResultRes> planPassItemResultResList = planPassMapper.getFaPassItemResultList(searchReq);
+        return planPassItemResultResList;
+    }
+}

+ 237 - 0
application-facade/src/main/java/com/factory/wx/service/impl/PlanPassPMServiceImpl.java

@@ -0,0 +1,237 @@
+package com.factory.wx.service.impl;
+
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.factory.base.entity.aggregates.ResponseBean;
+import com.factory.base.util.res.ResponseBeanBuilder;
+import com.factory.web.entity.pm.*;
+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.OnsiteWorkshopService;
+import com.factory.web.service.pm.PreventMistakeService;
+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.res.*;
+import com.factory.wx.mapper.PlanPassMapper;
+import com.factory.wx.service.PlanPassPMService;
+import com.factory.wx.service.WxPlanService;
+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
+ * @version 1.0
+ * @date 2021-08-03 10:29 上午
+ */
+
+@Service("planPassPMService")
+public class PlanPassPMServiceImpl implements PlanPassPMService {
+    /**
+     * 审批规则类型为:3防错
+     */
+    private static int APPROVAL_TYPE_PM = 3;
+    @Autowired
+    private PlanPassMapper planPassMapper;
+    @Autowired
+    private OnsiteTaskMapper onsiteTaskMapper;
+    @Autowired
+    private OnsiteApprovalTaskMapper onsiteApprovalTaskMapper;
+    @Autowired
+    private WxPlanService wxPlanService;
+    @Autowired
+    private OnsiteWorkshopService onsiteWorkshopService;
+    @Autowired
+    private ApprovalRuleMapper approvalRuleMapper;
+    @Autowired
+    private PreventMistakeService preventMistakeService;
+
+    /**
+     * 计划放行详情-防错
+     *
+     * @param planPassReq
+     * @return
+     */
+
+    @Override
+    public PlanPassDetailRes getPassDetailPM(PlanPassReq planPassReq) {
+        WxPlanBaseInfoRes wxPlanBaseInfoRes = wxPlanService.getOnsitePlanBaseInfo(planPassReq.getPlanId());
+
+        List<PlanPassTaskRes> planPassTaskResList = getPMTaskList(planPassReq);
+
+        List<Integer> itemType = getItemPMFrequency(planPassTaskResList);
+
+        return PlanPassDetailRes.builder()
+                .planId(wxPlanBaseInfoRes.getPlanId())
+                .planName(wxPlanBaseInfoRes.getPlanName())
+                .usersName(wxPlanBaseInfoRes.getUsersName())
+                .frequency(itemType)
+                .effectiveDate(wxPlanBaseInfoRes.getEffectiveDate())
+                .titleInfo((OnsiteTitle) wxPlanBaseInfoRes.getTitle())
+                .taskList(planPassTaskResList)
+                .attachment(wxPlanBaseInfoRes.getAttachment())
+                .build();
+    }
+
+    /**
+     * 获取防错点检错误列表
+     *
+     * @param planPassReq
+     * @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()
+                    .eq(OnsiteWorkshop::getBentelerPlanId, pmInfo.getPlanId()));
+
+            List<PlanPassWorkshopRes> workshopList = new ArrayList<PlanPassWorkshopRes>();
+            for (OnsiteWorkshop workshop : onsiteWorkshopList) {
+                PlanPassWorkshopRes planPassWorkshopRes = new PlanPassWorkshopRes();
+                planPassWorkshopRes.setWorkshopId(workshop.getId());
+                planPassWorkshopRes.setWsName(workshop.getWsName());
+                workshopList.add(planPassWorkshopRes);
+            }
+
+            for (int i = 0; i < workshopList.size(); i++) {
+                SearchPlanPassReq searchReq = new SearchPlanPassReq();
+                searchReq.setWorkshopId(workshopList.get(i).getWorkshopId());
+                searchReq.setTaskId(pmInfo.getTaskId());
+                List<PlanPassItemRes> planPassItemList = planPassMapper.getPmPassItemList(searchReq).stream().filter(item -> item.getResult() > 0).collect(Collectors.toList());
+                for (PlanPassItemRes planPassItemRes : planPassItemList) {
+                    Long userId = planPassItemRes.getItemResultUserId();
+                    if (null != userId) {
+                        String userName = wxPlanService.getUserNameById(planPassItemRes.getItemResultUserId());
+                        planPassItemRes.setItemResultUser(userName);
+                    }
+                }
+                workshopList.get(i).setItemList(planPassItemList);
+            }
+            pmInfo.setWorkshopList(workshopList.stream().filter(workshop -> workshop.getItemList().size() > 0).collect(Collectors.toList()));
+        }
+        return pmList;
+    }
+
+    /**
+     * 获取防错频次
+     *
+     * @param planPassTaskResList
+     */
+    private List<Integer> getItemPMFrequency(List<PlanPassTaskRes> planPassTaskResList) {
+        List<Integer> frequency = new ArrayList<>();
+        planPassTaskResList.forEach(task -> {
+            task.getWorkshopList().forEach(workshop -> {
+                workshop.getItemList().forEach(item -> {
+                    frequency.add(item.getItemType());
+                });
+            });
+        });
+        return frequency.stream().distinct().collect(Collectors.toList());
+    }
+
+    /**
+     * 计划放行
+     *
+     * @param planApprovalTaskReq
+     * @return
+     */
+    @Override
+    public ResponseBean approvalPMTaskOperate(PlanApprovalTaskReq planApprovalTaskReq) {
+        int updateStatus = 0; // 更新状态
+        //更新防错审批信息
+        updateStatus = updateOnsiteApprovalTask(planApprovalTaskReq);
+        if (updateStatus > 0) {
+            settingApprovalTask(planApprovalTaskReq);
+        }
+        return ResponseBeanBuilder.ok();
+    }
+
+
+    /**
+     * 更新防错任务审批状态
+     *
+     * @param planApprovalTaskReq
+     * @return
+     */
+    private int updateOnsiteApprovalTask(PlanApprovalTaskReq planApprovalTaskReq) {
+        int updateStatus;
+        OnsiteApprovalTask ot = new OnsiteApprovalTask();
+        ot.setOnsiteTaskId(planApprovalTaskReq.getTaskId());
+        ot.setReason(planApprovalTaskReq.getReason());
+        ot.setStatus(planApprovalTaskReq.getStatus());
+        updateStatus = onsiteApprovalTaskMapper.update(ot, Wrappers.<OnsiteApprovalTask>lambdaQuery()
+                .eq(OnsiteApprovalTask::getOnsiteTaskId, planApprovalTaskReq.getTaskId())
+                .eq(OnsiteApprovalTask::getApprovalUserId, planApprovalTaskReq.getUserId()));
+        return updateStatus;
+    }
+
+    /**
+     * 更新task状态
+     *
+     * @return
+     */
+    private int updateOnsiteTask(PlanApprovalTaskReq planApprovalTaskReq) {
+        int taskStatus = 0; //task表状态
+        if (planApprovalTaskReq.getStatus() == 1) taskStatus = 2; // 放行
+        if (planApprovalTaskReq.getStatus() == 2) taskStatus = 3; // 不通过
+        return onsiteTaskMapper.updateById(OnsiteTask.builder()
+                .id(planApprovalTaskReq.getTaskId())
+                .status(taskStatus).build());
+    }
+
+    /**
+     * 设置审批task任务
+     *
+     * @param planApprovalTaskReq
+     * @return boolean 是否有下一级别
+     */
+    private void settingApprovalTask(PlanApprovalTaskReq planApprovalTaskReq) {
+        //审批不通过触发下一级别
+        if (planApprovalTaskReq.getStatus() == 2) {
+            //设置防错下一级别审批
+            setNextPMApprovalLevel(planApprovalTaskReq);
+        }
+        //审批通过,保存审批历史
+        if (planApprovalTaskReq.getStatus() == 1) {
+            //审批通过,更新task状态
+            updateOnsiteTask(planApprovalTaskReq);
+            preventMistakeService.setOnsiteTaskHis(planApprovalTaskReq.getTaskId());
+        }
+    }
+
+    /**
+     * 设置防错下一级别人员
+     *
+     * @param planApprovalTaskReq
+     * @return boolean 是否有下一级别
+     */
+    private void setNextPMApprovalLevel(PlanApprovalTaskReq planApprovalTaskReq) {
+        ApprovalRule approvalRuleMaxLevel = approvalRuleMapper.selectOne(Wrappers.<ApprovalRule>lambdaQuery()
+                .eq(ApprovalRule::getType, APPROVAL_TYPE_PM)
+                .orderByDesc(ApprovalRule::getApprovalLevel)
+                .last("limit 1"));
+        //获取当前审批级别
+        OnsiteApprovalTask onsiteApprovalTask = onsiteApprovalTaskMapper.selectOne(Wrappers.<OnsiteApprovalTask>lambdaQuery()
+                .eq(OnsiteApprovalTask::getOnsiteTaskId, planApprovalTaskReq.getTaskId())
+                .eq(OnsiteApprovalTask::getApprovalUserId, planApprovalTaskReq.getUserId()).last("limit 1"));
+        int userLevel = onsiteApprovalTask.getApprovalLevel();
+        if (userLevel < approvalRuleMaxLevel.getApprovalLevel()) {
+            ApprovalUserRes approvalUserRes = preventMistakeService.getApprovalUserInfo(userLevel + 1, APPROVAL_TYPE_PM);
+            onsiteApprovalTaskMapper.insert(OnsiteApprovalTask.builder()
+                    .onsiteTaskId(onsiteApprovalTask.getOnsiteTaskId())
+                    .approvalLevel(approvalUserRes.getApprovalLevel())
+                    .approvalUserId(approvalUserRes.getUserId())
+                    .status(0)
+                    .build());
+        } else {
+            //如果是最后一个审批级别则设置task状态为不通过
+            updateOnsiteTask(planApprovalTaskReq);
+        }
+    }
+
+}

+ 10 - 376
application-facade/src/main/java/com/factory/wx/service/impl/PlanPassServiceImpl.java

@@ -1,32 +1,13 @@
 package com.factory.wx.service.impl;
 
-import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.factory.base.entity.aggregates.ResponseBean;
-import com.factory.base.util.res.ResponseBeanBuilder;
-import com.factory.web.entity.fa.FirstArticleApprovalTask;
-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.*;
-import com.factory.web.entity.pm.res.ApprovalUserRes;
-import com.factory.web.mapper.BentelerPlanMapper;
-import com.factory.web.mapper.fa.FirstArticleApprovalTaskMapper;
-import com.factory.web.mapper.pm.ApprovalRuleMapper;
-import com.factory.web.mapper.pm.OnsiteApprovalTaskMapper;
-import com.factory.web.mapper.pm.OnsiteCalendarMapper;
-import com.factory.web.mapper.pm.OnsiteTaskMapper;
-import com.factory.web.service.fa.*;
-import com.factory.web.service.pm.OnsiteWorkshopService;
-import com.factory.web.service.pm.PreventMistakeService;
 import com.factory.wx.entity.req.PlanApprovalTaskReq;
 import com.factory.wx.entity.req.PlanPageReq;
-import com.factory.wx.entity.req.PlanPassReq;
-import com.factory.wx.entity.req.SearchPlanPassReq;
-import com.factory.wx.entity.res.*;
+import com.factory.wx.entity.res.PlanPassRes;
 import com.factory.wx.mapper.PlanPassMapper;
-import com.factory.wx.service.AbnormalStatisticsService;
+import com.factory.wx.service.PlanPassFAService;
+import com.factory.wx.service.PlanPassPMService;
 import com.factory.wx.service.PlanPassService;
-import com.factory.wx.service.WxPlanService;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -34,7 +15,6 @@ import org.springframework.stereotype.Service;
 
 import java.util.ArrayList;
 import java.util.List;
-import java.util.stream.Collectors;
 
 /**
  * @author sMArT
@@ -45,46 +25,12 @@ import java.util.stream.Collectors;
 public class PlanPassServiceImpl implements PlanPassService {
 
     private final static Logger LOGGER = LoggerFactory.getLogger(PlanPassServiceImpl.class);
-    /**
-     * 审批规则类型为:2首件
-     */
-    private static int APPROVAL_TYPE_FIRST_ARTICLE = 2;
-    /**
-     * 审批规则类型为:3防错
-     */
-    private static int APPROVAL_TYPE_PM = 3;
-    @Autowired
-    private BentelerPlanMapper bentelerPlanMapper;
-    @Autowired
-    private OnsiteCalendarMapper onsiteCalendarMapper;
-    @Autowired
-    private ApprovalRuleMapper approvalRuleMapper;
-    @Autowired
-    private PreventMistakeService preventMistakeService;
-    @Autowired
-    private OnsiteApprovalTaskMapper onsiteApprovalTaskMapper;
-    @Autowired
-    private OnsiteTaskMapper onsiteTaskMapper;
     @Autowired
     private PlanPassMapper planPassMapper;
     @Autowired
-    private FirstArticleApprovalTaskMapper firstArticleApprovalTaskMapper;
-    @Autowired
-    private FirstArticleWorkshopService firstArticleWorkshopService;
-    @Autowired
-    private FirstArticleItemService firstArticleItemService;
-    @Autowired
-    private FirstArticleItemResultService firstArticleItemResultService;
-    @Autowired
-    private FirstArticleService firstArticleService;
+    private PlanPassFAService planPassFAService;
     @Autowired
-    private FirstArticleTaskService firstArticleTaskService;
-    @Autowired
-    private WxPlanService wxPlanService;
-    @Autowired
-    private AbnormalStatisticsService abnormalStatisticsService;
-    @Autowired
-    private OnsiteWorkshopService onsiteWorkshopService;
+    private PlanPassPMService planPassPMService;
 
     /**
      * 计划放行列表
@@ -92,7 +38,7 @@ public class PlanPassServiceImpl implements PlanPassService {
      * @param planPageReq
      * @return
      */
-//    @Override
+    @Override
     public List<PlanPassRes> getPassList(PlanPageReq planPageReq) {
         //分页
         planPageReq.setPage((planPageReq.getPage() - 1) * planPageReq.getSize());
@@ -108,178 +54,6 @@ public class PlanPassServiceImpl implements PlanPassService {
         return planPassResList;
     }
 
-    /**
-     * 计划放行详情-防错
-     *
-     * @param planPassReq
-     * @return
-     */
-
-    @Override
-    public PlanPassDetailRes getPassDetailPM(PlanPassReq planPassReq) {
-        WxPlanBaseInfoRes wxPlanBaseInfoRes = wxPlanService.getOnsitePlanBaseInfo(planPassReq.getPlanId());
-
-        List<PlanPassTaskRes> planPassTaskResList = getPMTaskList(planPassReq.getPlanId());
-
-        List<Integer> itemType = getItemFrequency(planPassTaskResList);
-
-        return PlanPassDetailRes.builder()
-                .planId(wxPlanBaseInfoRes.getPlanId())
-                .planName(wxPlanBaseInfoRes.getPlanName())
-                .usersName(wxPlanBaseInfoRes.getUsersName())
-                .frequency(itemType)
-                .effectiveDate(wxPlanBaseInfoRes.getEffectiveDate())
-                .titleInfo((OnsiteTitle) wxPlanBaseInfoRes.getTitle())
-                .taskList(planPassTaskResList)
-                .attachment(wxPlanBaseInfoRes.getAttachment())
-                .build();
-    }
-
-    /**
-     * 获取防错点检错误列表
-     *
-     * @param planId
-     * @return
-     */
-    private List<PlanPassTaskRes> getPMTaskList(Long planId) {
-        List<PlanPassTaskRes> pmList = planPassMapper.getPmPassTaskListByPlanId(planId);
-        for (PlanPassTaskRes pmInfo : pmList) {
-            List<OnsiteWorkshop> onsiteWorkshopList = onsiteWorkshopService.list(Wrappers.<OnsiteWorkshop>lambdaQuery()
-                    .eq(OnsiteWorkshop::getBentelerPlanId, pmInfo.getPlanId()));
-
-            List<PlanPassWorkshopRes> workshopList = new ArrayList<PlanPassWorkshopRes>();
-            for (OnsiteWorkshop workshop : onsiteWorkshopList) {
-                PlanPassWorkshopRes planPassWorkshopRes = new PlanPassWorkshopRes();
-                planPassWorkshopRes.setWorkshopId(workshop.getId());
-                planPassWorkshopRes.setWsName(workshop.getWsName());
-                workshopList.add(planPassWorkshopRes);
-            }
-
-            for (int i = 0; i < workshopList.size(); i++) {
-                SearchPlanPassReq searchReq = new SearchPlanPassReq();
-                searchReq.setWorkshopId(workshopList.get(i).getWorkshopId());
-                searchReq.setTaskId(pmInfo.getTaskId());
-                List<PlanPassItemRes> planPassItemList = planPassMapper.getPmPassItemList(searchReq).stream().filter(item -> item.getResult() > 0).collect(Collectors.toList());
-                if (planPassItemList.size() == 0) {
-                    workshopList.remove(i);
-                } else {
-                    for (PlanPassItemRes planPassItemRes : planPassItemList) {
-                        Long userId = planPassItemRes.getItemResultUserId();
-                        if (null != userId) {
-                            String userName = wxPlanService.getUserNameById(planPassItemRes.getItemResultUserId());
-                            planPassItemRes.setItemResultUser(userName);
-                        }
-                    }
-                    workshopList.get(i).setItemList(planPassItemList);
-                }
-            }
-            pmInfo.setWorkshopList(workshopList);
-        }
-        return pmList;
-    }
-
-    /**
-     * 获取防错频次
-     *
-     * @param planPassTaskResList
-     */
-    private List<Integer> getItemFrequency(List<PlanPassTaskRes> planPassTaskResList) {
-        List<Integer> frequency = new ArrayList<>();
-        planPassTaskResList.forEach(task -> {
-            task.getWorkshopList().forEach(workshop -> {
-                workshop.getItemList().forEach(item -> {
-                    frequency.add(item.getItemType());
-                });
-            });
-        });
-        return frequency.stream().distinct().collect(Collectors.toList());
-    }
-
-    /**
-     * 计划放行详情-首件
-     *
-     * @param planPassReq
-     * @return
-     */
-    @Override
-    public PlanPassDetailRes getPassDetail(PlanPassReq planPassReq) {
-        WxPlanBaseInfoRes wxPlanBaseInfoRes = wxPlanService.getFirstArticlePlanBaseInfo(planPassReq.getPlanId());
-
-        List<PlanPassTaskRes> planPassTaskResList = getFATaskList(planPassReq.getPlanId());
-
-        return PlanPassDetailRes.builder()
-                .planId(wxPlanBaseInfoRes.getPlanId())
-                .planName(wxPlanBaseInfoRes.getPlanName())
-                .usersName(wxPlanBaseInfoRes.getUsersName())
-                .frequency(wxPlanBaseInfoRes.getFrequency())
-                .effectiveDate(wxPlanBaseInfoRes.getEffectiveDate())
-                .firstArticleTitle((FirstArticleTitle) wxPlanBaseInfoRes.getTitle())
-                .taskList(planPassTaskResList)
-                .attachment(wxPlanBaseInfoRes.getAttachment())
-                .build();
-    }
-
-    private List<PlanPassTaskRes> getFATaskList(Long planId) {
-        List<PlanPassTaskRes> faList = planPassMapper.getFaPassTaskListByPlanId(planId);
-
-        for (PlanPassTaskRes faInfo : faList) {
-            List<FirstArticleWorkshop> firstArticleWorkshopList = firstArticleWorkshopService.list(Wrappers.<FirstArticleWorkshop>lambdaQuery()
-                    .eq(FirstArticleWorkshop::getBentelerPlanId, planId));
-
-            List<PlanPassWorkshopRes> planPassWorkshopList = new ArrayList<PlanPassWorkshopRes>();
-            PlanPassWorkshopRes planPassWorkshop = null;
-            for (FirstArticleWorkshop workshop : firstArticleWorkshopList) {
-                planPassWorkshop = new PlanPassWorkshopRes();
-                planPassWorkshop.setWorkshopId(workshop.getId());
-                planPassWorkshop.setWsName(workshop.getWsName());
-                planPassWorkshop.setPlName(workshop.getPlName());
-                planPassWorkshopList.add(planPassWorkshop);
-            }
-
-            for (int i = 0; i < planPassWorkshopList.size(); i++) {
-
-                SearchPlanPassReq searchReq = new SearchPlanPassReq();
-                searchReq.setWorkshopId(planPassWorkshopList.get(i).getWorkshopId());
-                List<PlanPassItemRes> planPassItemList = planPassMapper.getFaPassItemList(searchReq);
-
-                for (PlanPassItemRes planPassItemRes : planPassItemList) {
-                    List<PlanPassItemResultRes> firstItemResultList = this.getFaItemResultList(faInfo.getTaskId(), planPassItemRes.getItemId(), 0);
-                    planPassItemRes.setFirstItemResultList(firstItemResultList);
-
-                    List<PlanPassItemResultRes> twoHundredItemResultList = this.getFaItemResultList(faInfo.getTaskId(), planPassItemRes.getItemId(), 1);
-                    planPassItemRes.setTwoHundredItemResultList(twoHundredItemResultList);
-
-                    List<PlanPassItemResultRes> catchItemResultList = this.getFaItemResultList(faInfo.getTaskId(), planPassItemRes.getItemId(), 2);
-                    planPassItemRes.setCatchItemResultList(catchItemResultList);
-                }
-                if (planPassItemList.size() == 0) {
-                    planPassWorkshopList.remove(i);
-                } else {
-                    planPassWorkshopList.get(i).setItemList(planPassItemList);
-                }
-
-                faInfo.setWorkshopList(planPassWorkshopList);
-            }
-        }
-        return faList;
-    }
-
-    private List<PlanPassItemResultRes> getFaItemResultList(long taskId, long itemId, int typeFlag) {
-        SearchPlanPassReq searchReq = new SearchPlanPassReq();
-        searchReq.setTaskId(taskId);
-        searchReq.setItemId(itemId);
-        searchReq.setTypeFlag(typeFlag);
-        List<PlanPassItemResultRes> planPassItemResultResList = planPassMapper.getFaPassItemResultList(searchReq);
-        return planPassItemResultResList;
-    }
-    /**
-     * 计划放行详情-首件
-     *
-     * @param planPassReq
-     * @return
-     */
-
-
     /**
      * 计划放行
      *
@@ -288,154 +62,14 @@ public class PlanPassServiceImpl implements PlanPassService {
      */
     @Override
     public ResponseBean approvalTaskOperate(PlanApprovalTaskReq planApprovalTaskReq) {
-
-        int updateStatus = 0; // 更新状态
-        int taskStatus = 0; //task表状态
-        if (planApprovalTaskReq.getStatus() == 1) taskStatus = 2; // 放行
-        if (planApprovalTaskReq.getStatus() == 2) taskStatus = 3; // 不通过
-
+        ResponseBean responseBean = new ResponseBean();
         if (planApprovalTaskReq.getPlanType() == 1) {
-            //更新首件审批信息
-            updateStatus = updateFirstArticleApprovalTask(planApprovalTaskReq, taskStatus);
+            responseBean = planPassFAService.approvalFATaskOperate(planApprovalTaskReq);
         }
         if (planApprovalTaskReq.getPlanType() == 2) {
-            //更新防错审批信息
-            updateStatus = updateOnsiteApprovalTask(planApprovalTaskReq, taskStatus);
-        }
-
-        if (updateStatus > 0) {
-            settingApprovalTask(planApprovalTaskReq);
-        }
-
-        return ResponseBeanBuilder.ok();
-    }
-
-    /**
-     * 更新首件任务审批状态
-     *
-     * @param planApprovalTaskReq
-     * @param taskStatus
-     * @return
-     */
-    private int updateFirstArticleApprovalTask(PlanApprovalTaskReq planApprovalTaskReq, int taskStatus) {
-        int updateStatus;
-        FirstArticleApprovalTask ot = new FirstArticleApprovalTask();
-        ot.setFirstArticleTaskId(planApprovalTaskReq.getTaskId());
-        ot.setReason(planApprovalTaskReq.getReason());
-        ot.setStatus(planApprovalTaskReq.getStatus());
-        updateStatus = firstArticleApprovalTaskMapper.update(ot, Wrappers.<FirstArticleApprovalTask>lambdaQuery()
-                .eq(FirstArticleApprovalTask::getFirstArticleTaskId, planApprovalTaskReq.getTaskId())
-                .eq(FirstArticleApprovalTask::getApprovalUserId, planApprovalTaskReq.getUserId()));
-        //更新task表状态
-        firstArticleTaskService.updateById(FirstArticleTask.builder()
-                .id(planApprovalTaskReq.getTaskId())
-                .status(taskStatus).build());
-        return updateStatus;
-    }
-
-    /**
-     * 更新防错任务审批状态
-     *
-     * @param planApprovalTaskReq
-     * @param taskStatus
-     * @return
-     */
-    private int updateOnsiteApprovalTask(PlanApprovalTaskReq planApprovalTaskReq, int taskStatus) {
-        int updateStatus;
-        OnsiteApprovalTask ot = new OnsiteApprovalTask();
-        ot.setOnsiteTaskId(planApprovalTaskReq.getTaskId());
-        ot.setReason(planApprovalTaskReq.getReason());
-        ot.setStatus(planApprovalTaskReq.getStatus());
-        updateStatus = onsiteApprovalTaskMapper.update(ot, Wrappers.<OnsiteApprovalTask>lambdaQuery()
-                .eq(OnsiteApprovalTask::getOnsiteTaskId, planApprovalTaskReq.getTaskId())
-                .eq(OnsiteApprovalTask::getApprovalUserId, planApprovalTaskReq.getUserId()));
-        //更新task表状态
-        onsiteTaskMapper.updateById(OnsiteTask.builder()
-                .id(planApprovalTaskReq.getTaskId())
-                .status(taskStatus).build());
-        return updateStatus;
-    }
-
-    /**
-     * 设置审批task任务
-     *
-     * @param planApprovalTaskReq
-     */
-    private void settingApprovalTask(PlanApprovalTaskReq planApprovalTaskReq) {
-        //审批不通过触发下一级别
-        if (planApprovalTaskReq.getStatus() == 2) {
-            //设置首件下一级别审批
-            if (planApprovalTaskReq.getPlanType() == 1) {
-                setNextApprovalLevel(planApprovalTaskReq);
-            }
-            //设置防错下一级别审批
-            if (planApprovalTaskReq.getPlanType() == 2) {
-                setNextPMApprovalLevel(planApprovalTaskReq);
-            }
-        }
-        //审批通过,保存审批历史
-        if (planApprovalTaskReq.getStatus() == 1) {
-            //首件
-            if (planApprovalTaskReq.getPlanType() == 1) {
-                firstArticleService.setFirstArticleTaskHis(planApprovalTaskReq.getTaskId());
-            }
-            //防错
-            if (planApprovalTaskReq.getPlanType() == 2) {
-                preventMistakeService.setOnsiteTaskHis(planApprovalTaskReq.getTaskId());
-            }
-        }
-    }
-
-    /**
-     * 设置防错下一级别人员
-     *
-     * @param planApprovalTaskReq
-     */
-    private void setNextPMApprovalLevel(PlanApprovalTaskReq planApprovalTaskReq) {
-        ApprovalRule approvalRuleMaxLevel = approvalRuleMapper.selectOne(Wrappers.<ApprovalRule>lambdaQuery()
-                .eq(ApprovalRule::getType, APPROVAL_TYPE_PM)
-                .orderByDesc(ApprovalRule::getApprovalLevel)
-                .last("limit 1"));
-        //获取当前审批级别
-        OnsiteApprovalTask onsiteApprovalTask = onsiteApprovalTaskMapper.selectOne(Wrappers.<OnsiteApprovalTask>lambdaQuery()
-                .eq(OnsiteApprovalTask::getOnsiteTaskId, planApprovalTaskReq.getTaskId())
-                .eq(OnsiteApprovalTask::getApprovalUserId, planApprovalTaskReq.getUserId()).last("limit 1"));
-        int userLevel = onsiteApprovalTask.getApprovalLevel();
-        if (userLevel < approvalRuleMaxLevel.getApprovalLevel()) {
-            ApprovalUserRes approvalUserRes = preventMistakeService.getApprovalUserInfo(userLevel + 1, APPROVAL_TYPE_PM);
-            onsiteApprovalTaskMapper.insert(OnsiteApprovalTask.builder()
-                    .onsiteTaskId(onsiteApprovalTask.getOnsiteTaskId())
-                    .approvalLevel(approvalUserRes.getApprovalLevel())
-                    .approvalUserId(approvalUserRes.getUserId())
-                    .status(0)
-                    .build());
-        }
-    }
-
-    /**
-     * 设置首件下一级别人员
-     *
-     * @param planApprovalTaskReq
-     */
-    private void setNextApprovalLevel(PlanApprovalTaskReq planApprovalTaskReq) {
-        ApprovalRule approvalRuleMaxLevel = approvalRuleMapper.selectOne(Wrappers.<ApprovalRule>lambdaQuery()
-                .eq(ApprovalRule::getType, APPROVAL_TYPE_FIRST_ARTICLE)
-                .orderByDesc(ApprovalRule::getApprovalLevel)
-                .last("limit 1"));
-        //获取当前审批级别
-        FirstArticleApprovalTask firstArticleApprovalTask = firstArticleApprovalTaskMapper.selectOne(Wrappers.<FirstArticleApprovalTask>lambdaQuery()
-                .eq(FirstArticleApprovalTask::getFirstArticleTaskId, planApprovalTaskReq.getTaskId())
-                .eq(FirstArticleApprovalTask::getApprovalUserId, planApprovalTaskReq.getUserId()).last("limit 1"));
-        int userLevel = firstArticleApprovalTask.getApprovalLevel();
-        if (userLevel < approvalRuleMaxLevel.getApprovalLevel()) {
-            ApprovalUserRes approvalUserRes = preventMistakeService.getApprovalUserInfo(userLevel + 1, APPROVAL_TYPE_PM);
-            onsiteApprovalTaskMapper.insert(OnsiteApprovalTask.builder()
-                    .onsiteTaskId(firstArticleApprovalTask.getFirstArticleTaskId())
-                    .approvalLevel(approvalUserRes.getApprovalLevel())
-                    .approvalUserId(approvalUserRes.getUserId())
-                    .status(0)
-                    .build());
+            responseBean = planPassPMService.approvalPMTaskOperate(planApprovalTaskReq);
         }
+        return responseBean;
     }
 
 }

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

@@ -71,7 +71,7 @@ public class WxPlanServiceImpl implements WxPlanService {
         return WxPlanBaseInfoRes.builder()
                 .planId(bentelerPlan.getId())
                 .planName(bentelerPlan.getName())
-                .usersName(usersName)
+                .usersName(usersName.stream().distinct().collect(Collectors.toList()))
                 .frequency(frequency.stream().distinct().collect(Collectors.toList()))//频次去重
                 .attachment(attrCount == 0 ? 0 : 1)
                 .effectiveDate(bentelerPlan.getEffectiveDate())
@@ -89,7 +89,7 @@ public class WxPlanServiceImpl implements WxPlanService {
         List<String> usersName = new ArrayList<>();
         List<Integer> frequency = new ArrayList<>();
         onsiteCalendarList.forEach(onsiteCalendar -> {
-            String name = assembleUserName(onsiteCalendar.getUserId(), null);
+            String name = assembleUserName(onsiteCalendar.getUserId(), onsiteCalendar.getShift());
             if (!name.isEmpty()) usersName.add(name);
             frequency.add(onsiteCalendar.getTypeFlag());
         });
@@ -103,7 +103,7 @@ public class WxPlanServiceImpl implements WxPlanService {
         return WxPlanBaseInfoRes.builder()
                 .planId(bentelerPlan.getId())
                 .planName(bentelerPlan.getName())
-                .usersName(usersName)
+                .usersName(usersName.stream().distinct().collect(Collectors.toList()))
                 .frequency(frequency.stream().distinct().collect(Collectors.toList()))//频次去重
                 .effectiveDate(bentelerPlan.getEffectiveDate())
                 .title(title)

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

@@ -19,6 +19,7 @@
             AND ot.onsite_calendar_id = oc.id
             AND oc.benteler_plan_id = bp.id
             AND rat.`status` = 0
+            AND ot.`status` = 1
             AND rat.approval_user_id = #{userId}
         <if test="name != ''">
             AND bp.`name` LIKE CONCAT('%',#{name},'%')
@@ -42,6 +43,7 @@
             AND ot.first_article_calendar_id = oc.id
             AND oc.benteler_plan_id = bp.id
             AND rat.`status` = 0
+            AND ot.`status` = 1
             AND rat.approval_user_id = #{userId}
         <if test="name != ''">
             AND bp.`name` LIKE CONCAT('%',#{name},'%')
@@ -129,7 +131,8 @@
           AND     fat.id = faat.first_article_task_id
           AND     faat.`status` = 0
           AND     fat.`status` = 1
-          AND     bp.id = #{planId}
+          AND     faat.approval_user_id=#{req.userId}
+          AND     bp.id = #{req.planId}
     </select>
     <!-- 取得首件工作站下的巡检项目 -->
     <select id="getFaPassItemList" resultType="com.factory.wx.entity.res.PlanPassItemRes">
@@ -207,7 +210,8 @@
           AND     ot.id = oat.onsite_task_id
           AND     oat.`status` = 0
           AND     ot.`status` = 1
-          AND     bp.id = #{planId}
+          AND     oat.approval_user_id=#{req.userId}
+          AND     bp.id = #{req.planId}
     </select>
     <select id="getPmPassItemList" resultType="com.factory.wx.entity.res.PlanPassItemRes">
         SELECT  oir.onsite_item_id AS item_id,