Explorar o código

整理小程序后端代码

孙伟 %!s(int64=3) %!d(string=hai) anos
pai
achega
ad2e83d398
Modificáronse 20 ficheiros con 524 adicións e 330 borrados
  1. 5 4
      application-facade/src/main/java/com/factory/controller/wx/PlanPassController.java
  2. 5 1
      application-facade/src/main/java/com/factory/web/entity/fa/FirstArticleItemResult.java
  3. 31 0
      application-facade/src/main/java/com/factory/wx/entity/req/PlanPassReq.java
  4. 4 7
      application-facade/src/main/java/com/factory/wx/entity/res/PlanApprovalDetailRes.java
  5. 3 0
      application-facade/src/main/java/com/factory/wx/entity/res/PlanApprovalTaskRes.java
  6. 5 5
      application-facade/src/main/java/com/factory/wx/entity/res/PlanPassDetailRes.java
  7. 3 0
      application-facade/src/main/java/com/factory/wx/entity/res/PlanPassRes.java
  8. 4 4
      application-facade/src/main/java/com/factory/wx/entity/res/PlanReminderDetailRes.java
  9. 40 0
      application-facade/src/main/java/com/factory/wx/entity/res/WxPlanBaseInfoRes.java
  10. 3 2
      application-facade/src/main/java/com/factory/wx/mapper/PlanPassMapper.java
  11. 0 10
      application-facade/src/main/java/com/factory/wx/service/PlanApprovalService.java
  12. 5 4
      application-facade/src/main/java/com/factory/wx/service/PlanPassService.java
  13. 26 0
      application-facade/src/main/java/com/factory/wx/service/WxPlanService.java
  14. 4 2
      application-facade/src/main/java/com/factory/wx/service/impl/AbnormalStatisticsServiceImpl.java
  15. 24 93
      application-facade/src/main/java/com/factory/wx/service/impl/PlanApprovalServiceImpl.java
  16. 187 143
      application-facade/src/main/java/com/factory/wx/service/impl/PlanPassServiceImpl.java
  17. 21 51
      application-facade/src/main/java/com/factory/wx/service/impl/PlanReminderServiceImpl.java
  18. 144 0
      application-facade/src/main/java/com/factory/wx/service/impl/WxPlanServiceImpl.java
  19. 8 4
      application-facade/src/main/resources/mapper/PlanPassMapper.xml
  20. 2 0
      application-facade/src/main/resources/mapper/ReminderMapper.xml

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

@@ -8,6 +8,7 @@ import com.factory.web.service.fa.FirstArticleService;
 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 com.factory.wx.service.PlanPassService;
@@ -53,15 +54,15 @@ public class PlanPassController {
 
     @ApiOperation(value = "计划放行详情-首件")
     @PostMapping("/detail/initial")
-    public ResponseBean<PlanPassDetailRes> passDetail(@RequestBody PlanInfoReq planInfoReq) {
-        PlanPassDetailRes planPassDetailRes = planPassService.getPassDetail(planInfoReq);
+    public ResponseBean<PlanPassDetailRes> passDetail(@RequestBody PlanPassReq planPassReq) {
+        PlanPassDetailRes planPassDetailRes = planPassService.getPassDetail(planPassReq);
         return ResponseBeanBuilder.ok(planPassDetailRes);
     }
 
     @ApiOperation(value = "计划放行详情-防错")
     @PostMapping("/detail/pm")
-    public ResponseBean<PlanPassDetailRes> passDetailPM(@RequestBody PlanInfoReq planInfoReq) {
-        PlanPassDetailRes planPassDetailRes = planPassService.getPassDetailPM(planInfoReq);
+    public ResponseBean<PlanPassDetailRes> passDetailPM(@RequestBody PlanPassReq planPassReq) {
+        PlanPassDetailRes planPassDetailRes = planPassService.getPassDetailPM(planPassReq);
         return ResponseBeanBuilder.ok(planPassDetailRes);
     }
 

+ 5 - 1
application-facade/src/main/java/com/factory/web/entity/fa/FirstArticleItemResult.java

@@ -40,7 +40,7 @@ public class FirstArticleItemResult implements Serializable {
 
 	@ApiModelProperty(value = "对应数据类型0数值")
 	private String val;
-	
+
 	@ApiModelProperty(value = "对应数据类型1属性")
 	private String valDesc;
 
@@ -66,4 +66,8 @@ public class FirstArticleItemResult implements Serializable {
 
 	@ApiModelProperty(value = "异常信息")
 	private String abnormal;
+
+	@TableField(exist = false)
+	@ApiModelProperty(value = "所属task状态-小程序用")
+	private int firstArticleApprovalTaskStatus;
 }

+ 31 - 0
application-facade/src/main/java/com/factory/wx/entity/req/PlanPassReq.java

@@ -0,0 +1,31 @@
+package com.factory.wx.entity.req;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * @author sMArT
+ * @version 1.0
+ * @date 2021-07-28 3:48 下午
+ */
+
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+@Builder
+public class PlanPassReq {
+    @ApiModelProperty(value = "用户id")
+    private Long userId;
+
+    @ApiModelProperty(value = "计划Id")
+    private Long planId;
+
+    @ApiModelProperty(value = "计划类型")
+    private int planType;
+
+    @ApiModelProperty(value = "任务Id")
+    private Long taskId;
+}

+ 4 - 7
application-facade/src/main/java/com/factory/wx/entity/res/PlanApprovalDetailRes.java

@@ -1,9 +1,7 @@
 package com.factory.wx.entity.res;
 
-import com.factory.web.entity.fa.FirstArticleCalendar;
 import com.factory.web.entity.fa.FirstArticleTitle;
 import com.factory.web.entity.fa.FirstArticleWorkshop;
-import com.factory.web.entity.pm.OnsiteCalendar;
 import com.factory.web.entity.pm.OnsiteTitle;
 import com.factory.web.entity.pm.OnsiteWorkshop;
 import io.swagger.annotations.ApiModelProperty;
@@ -34,23 +32,22 @@ public class PlanApprovalDetailRes {
     private String planName;
     @ApiModelProperty(value = "检验负责人")
     private List<String> usersName;
+    @ApiModelProperty(value = "检验频次")
+    private List<Integer> frequency;
     @ApiModelProperty(value = "计划生效日期")
     private LocalDate effectiveDate;
     @ApiModelProperty(value = "当前用户审批级别")
     private String approvalLevel;
+    @ApiModelProperty(value = "是否有附件 0无附件 1有附件")
+    private int attachment;
 
     @ApiModelProperty(value = "表头信息")
     private OnsiteTitle titleInfo;
-    @ApiModelProperty(value = "防错计划基本信息")
-    private List<OnsiteCalendar> onsiteCalendars;
     @ApiModelProperty(value = "防错计划工作站点检")
     private List<OnsiteWorkshop> onsiteWorkshops;
 
-
     @ApiModelProperty(value = "表头信息-首件")
     private FirstArticleTitle firstArticleTitle;
-    @ApiModelProperty(value = "首件计划基本信息")
-    private List<FirstArticleCalendar> firstArticleCalendars;
     @ApiModelProperty(value = "首件计划工作站")
     private List<FirstArticleWorkshop> firstArticleWorkshops;
 

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

@@ -31,6 +31,9 @@ public class PlanApprovalTaskRes {
     @ApiModelProperty(value = "内容")
     private String itemContent;
 
+    @ApiModelProperty(value = "异常信息")
+    private String abnormal;
+
     @ApiModelProperty(value = "发生时间")
     private LocalDate itemTime;
 

+ 5 - 5
application-facade/src/main/java/com/factory/wx/entity/res/PlanPassDetailRes.java

@@ -34,18 +34,18 @@ public class PlanPassDetailRes {
     private List<String> usersName;
     @ApiModelProperty(value = "计划生效日期")
     private LocalDate effectiveDate;
+    @ApiModelProperty(value = "检验频次")
+    private List<Integer> frequency;
+    @ApiModelProperty(value = "是否有附件 0无附件 1有附件")
+    private int attachment;
+
     @ApiModelProperty(value = "防错表头信息")
     private OnsiteTitle titleInfo;
-    @ApiModelProperty(value = "日周月点检规则-防错")
-    private List<OnsiteCalendar> onsiteCalendars;
     @ApiModelProperty(value = "待审批任务-防错")
     private List<PlanApprovalTaskRes> planApprovalTasks;
-//    private List<OnsiteTask> onsiteTasks;
 
     @ApiModelProperty(value = "表头信息-首件")
     private FirstArticleTitle firstArticleTitle;
-    @ApiModelProperty(value = "日周月点检规则")
-    private List<FirstArticleCalendar> firstArticleCalendars;
     @ApiModelProperty(value = "工作站及巡检内容")
     private List<FirstArticleWorkshop> firstArticleWorkshops;
 

+ 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;
 }

+ 4 - 4
application-facade/src/main/java/com/factory/wx/entity/res/PlanReminderDetailRes.java

@@ -34,18 +34,18 @@ public class PlanReminderDetailRes {
     private List<String> usersName;
     @ApiModelProperty(value = "计划生效日期")
     private LocalDate effectiveDate;
+    @ApiModelProperty(value = "检验频次")
+    private List<Integer> frequency;
+    @ApiModelProperty(value = "是否有附件 0无附件 1有附件")
+    private int attachment;
 
     @ApiModelProperty(value = "表头信息")
     private OnsiteTitle titleInfo;
-    @ApiModelProperty(value = "防错计划基本信息")
-    private List<OnsiteCalendar> onsiteCalendars;
     @ApiModelProperty(value = "防错计划工作站点检")
     private List<OnsiteWorkshop> onsiteWorkshops;
 
     @ApiModelProperty(value = "表头信息-首件")
     private FirstArticleTitle firstArticleTitle;
     @ApiModelProperty(value = "首件计划基本信息")
-    private List<FirstArticleCalendar> firstArticleCalendars;
-    @ApiModelProperty(value = "首件计划基本信息")
     private List<FirstArticleWorkshop> firstArticleWorkshops;
 }

+ 40 - 0
application-facade/src/main/java/com/factory/wx/entity/res/WxPlanBaseInfoRes.java

@@ -0,0 +1,40 @@
+package com.factory.wx.entity.res;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.time.LocalDate;
+import java.util.List;
+
+/**
+ * 微信端返回计划基础信息
+ *
+ * @author sMArT
+ * @version 1.0
+ * @date 2021-07-29 9:49 上午
+ */
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+@Builder
+public class WxPlanBaseInfoRes {
+    @ApiModelProperty(value = "计划Id")
+    private Long planId;
+    @ApiModelProperty(value = "计划名称")
+    private String planName;
+    @ApiModelProperty(value = "检验负责人")
+    private List<String> usersName;
+    @ApiModelProperty(value = "计划生效日期")
+    private LocalDate effectiveDate;
+    @ApiModelProperty(value = "检验频次")
+    private List<Integer> frequency;
+    @ApiModelProperty(value = "表头信息")
+    private Object title;
+    @ApiModelProperty(value = "是否有附件 0无附件 1有附件")
+    private int attachment;
+
+
+}

+ 3 - 2
application-facade/src/main/java/com/factory/wx/mapper/PlanPassMapper.java

@@ -7,6 +7,7 @@ import com.factory.wx.entity.res.PlanPassRes;
 import org.apache.ibatis.annotations.Mapper;
 
 import java.util.List;
+import java.util.Map;
 
 /**
  * @author sMArT
@@ -40,9 +41,9 @@ public interface PlanPassMapper {
 
     /**
      *
-     * @param userId
+     * @param map
      * @return
      */
-    List<PlanApprovalTaskRes> getApprovalTaskList(Long userId);
+    List<PlanApprovalTaskRes> getApprovalTaskList(Map map);
 
 }

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

@@ -7,9 +7,6 @@ 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 java.util.List;
 
 /**
  * @author sMArT
@@ -17,13 +14,6 @@ import java.util.List;
  * @date 2021-07-13 12:13 下午
  */
 public interface PlanApprovalService {
-    /**
-     * 获取审批计划列表
-     *
-     * @param userId
-     * @return
-     */
-    List<PlanApprovalRes> getApprovalList(Long userId);
 
     /**
      * 分页显示计划列表

+ 5 - 4
application-facade/src/main/java/com/factory/wx/service/PlanPassService.java

@@ -6,6 +6,7 @@ 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;
 
@@ -29,18 +30,18 @@ public interface PlanPassService {
     /**
      * 计划放行详情-首件
      *
-     * @param planInfoReq
+     * @param planPassReq
      * @return
      */
-    PlanPassDetailRes getPassDetail(PlanInfoReq planInfoReq);
+    PlanPassDetailRes getPassDetail(PlanPassReq planPassReq);
 
     /**
      * 计划放行详情-防错
      *
-     * @param planInfoReq
+     * @param planPassReq
      * @return
      */
-    PlanPassDetailRes getPassDetailPM(PlanInfoReq planInfoReq);
+    PlanPassDetailRes getPassDetailPM(PlanPassReq planPassReq);
 
     /**
      * 计划放行

+ 26 - 0
application-facade/src/main/java/com/factory/wx/service/WxPlanService.java

@@ -0,0 +1,26 @@
+package com.factory.wx.service;
+
+import com.factory.wx.entity.res.WxPlanBaseInfoRes;
+
+/**
+ * @author sMArT
+ * @version 1.0
+ * @date 2021-07-29 9:31 上午
+ */
+public interface WxPlanService {
+    /**
+     * 获取首件计划基础信息
+     *
+     * @param planId
+     */
+    WxPlanBaseInfoRes getFirstArticlePlanBaseInfo(Long planId);
+
+
+    /**
+     * 获取防错计划基础信息
+     *
+     * @param planId
+     * @return
+     */
+    WxPlanBaseInfoRes getOnsitePlanBaseInfo(Long planId);
+}

+ 4 - 2
application-facade/src/main/java/com/factory/wx/service/impl/AbnormalStatisticsServiceImpl.java

@@ -36,10 +36,12 @@ public class AbnormalStatisticsServiceImpl implements AbnormalStatisticsService
         abnormalPlanReq.setMonth(month);
 
         List<AbnormalPlanRes> releasedAbnormalPlans = new ArrayList<>();
-        if (abnormalPlanReq.getAbnormalType() == 1) {
+        //已放行
+        if (abnormalPlanReq.getAbnormalType() == 2) {
             releasedAbnormalPlans.addAll(abnormalStatisticsMapper.getReleasedAbnormalPlans(abnormalPlanReq));
         }
-        if (abnormalPlanReq.getAbnormalType() == 2) {
+        //已重检
+        if (abnormalPlanReq.getAbnormalType() == 1) {
             releasedAbnormalPlans.addAll(abnormalStatisticsMapper.getRecheckedAbnormalPlans(abnormalPlanReq));
         }
         return releasedAbnormalPlans;

+ 24 - 93
application-facade/src/main/java/com/factory/wx/service/impl/PlanApprovalServiceImpl.java

@@ -8,10 +8,8 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 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.entity.po.remote.UserInfo;
 import com.factory.base.util.res.ResponseBeanBuilder;
 import com.factory.user.mapper.UserInfoMapper;
-import com.factory.web.entity.fa.FirstArticleCalendar;
 import com.factory.web.entity.fa.FirstArticleItem;
 import com.factory.web.entity.fa.FirstArticleTitle;
 import com.factory.web.entity.fa.FirstArticleWorkshop;
@@ -29,15 +27,16 @@ 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;
 import org.slf4j.Logger;
 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;
 
@@ -59,12 +58,8 @@ public class PlanApprovalServiceImpl implements PlanApprovalService {
      */
     private static int APPROVAL_TYPE_PM = 3;
     @Autowired
-    private PlanApprovalMapper planApprovalMapper;
-    @Autowired
     private BentelerPlanMapper bentelerPlanMapper;
     @Autowired
-    private OnsiteCalendarMapper onsiteCalendarMapper;
-    @Autowired
     private OnsiteWorkshopMapper onsiteWorkshopMapper;
     @Autowired
     private OnsiteItemMapper onsiteItemMapper;
@@ -73,29 +68,13 @@ public class PlanApprovalServiceImpl implements PlanApprovalService {
     @Autowired
     private ApprovalRuleMapper approvalRuleMapper;
     @Autowired
-    private UserInfoMapper userInfoMapper;
-    @Autowired
     private PreventMistakeService preventMistakeService;
     @Autowired
-    private FirstArticleCalendarMapper firstArticleCalendarMapper;
-    @Autowired
     private FirstArticleWorkshopMapper firstArticleWorkshopMapper;
     @Autowired
     private FirstArticleItemMapper firstArticleItemMapper;
     @Autowired
-    private FirstArticleService firstArticleService;
-
-
-    /**
-     * 获取计划审批列表
-     *
-     * @param userId
-     * @return
-     */
-    @Override
-    public List<PlanApprovalRes> getApprovalList(Long userId) {
-        return planApprovalMapper.getApprovalList(userId);
-    }
+    private WxPlanService wxPlanService;
 
     /**
      * 分页显示计划列表
@@ -137,35 +116,26 @@ public class PlanApprovalServiceImpl implements PlanApprovalService {
      */
     @Override
     public PlanApprovalDetailRes getApprovalDetailInitial(PlanInfoReq planInfoReq) {
-        BentelerPlan bentelerPlan = bentelerPlanMapper.selectById(planInfoReq.getPlanId());
+        WxPlanBaseInfoRes wxPlanBaseInfoRes =
+                wxPlanService.getFirstArticlePlanBaseInfo(planInfoReq.getPlanId());
 
-        List<FirstArticleCalendar> firstArticleCalendarList = firstArticleCalendarMapper.selectList(Wrappers.<FirstArticleCalendar>lambdaQuery()
-                .eq(FirstArticleCalendar::getBentelerPlanId, planInfoReq.getPlanId()));
-
-        List<String> usersName = new ArrayList<>();
-        firstArticleCalendarList.forEach(firstArticleCalendar -> {
-            String name = assembleUserName(firstArticleCalendar.getUserId(), firstArticleCalendar.getShift());
-            if (!name.isEmpty()) usersName.add(name);
-        });
-
-        List<FirstArticleWorkshop> firstArticleWorkshopList = firstArticleWorkshopMapper.selectList(Wrappers.<FirstArticleWorkshop>lambdaQuery()
-                .eq(FirstArticleWorkshop::getBentelerPlanId, planInfoReq.getPlanId()));
+        List<FirstArticleWorkshop> firstArticleWorkshopList =
+                firstArticleWorkshopMapper.selectList(Wrappers.<FirstArticleWorkshop>lambdaQuery()
+                        .eq(FirstArticleWorkshop::getBentelerPlanId, planInfoReq.getPlanId()));
         firstArticleWorkshopList.forEach(firstArticleWorkshop -> {
             firstArticleWorkshop.setFirstArticleItemList(firstArticleItemMapper.selectList(Wrappers.<FirstArticleItem>lambdaQuery()
                     .eq(FirstArticleItem::getWorkshopId, firstArticleWorkshop.getId())));
         });
 
-        //获取title
-        FirstArticleTitle title = firstArticleService.getFaTitle(planInfoReq.getPlanId());
-
         return PlanApprovalDetailRes.builder()
-                .planId(bentelerPlan.getId())
-                .planName(bentelerPlan.getName())
-                .effectiveDate(bentelerPlan.getEffectiveDate())
-                .firstArticleCalendars(firstArticleCalendarList)
+                .planId(wxPlanBaseInfoRes.getPlanId())
+                .planName(wxPlanBaseInfoRes.getPlanName())
+                .usersName(wxPlanBaseInfoRes.getUsersName())
+                .frequency(wxPlanBaseInfoRes.getFrequency())
+                .effectiveDate(wxPlanBaseInfoRes.getEffectiveDate())
+                .firstArticleTitle((FirstArticleTitle) wxPlanBaseInfoRes.getTitle())
+                .attachment(wxPlanBaseInfoRes.getAttachment())
                 .firstArticleWorkshops(firstArticleWorkshopList)
-                .usersName(usersName)
-                .firstArticleTitle(title)
                 .build();
     }
 
@@ -178,18 +148,8 @@ public class PlanApprovalServiceImpl implements PlanApprovalService {
      */
     @Override
     public PlanApprovalDetailRes getApprovalDetailPM(PlanInfoReq planInfoReq) {
-        BentelerPlan bentelerPlan = bentelerPlanMapper.selectById(planInfoReq.getPlanId());
-        List<OnsiteCalendar> onsiteCalendarList = onsiteCalendarMapper.selectList(Wrappers.<OnsiteCalendar>lambdaQuery()
-                .eq(OnsiteCalendar::getBentelerPlanId, planInfoReq.getPlanId()));
-
-        List<String> usersName = new ArrayList<>();
-        onsiteCalendarList.forEach(onsiteCalendar -> {
-            String name = assembleUserName(onsiteCalendar.getUserId(), null);
-            if (!name.isEmpty()) usersName.add(name);
-        });
-
-        //获取title
-        OnsiteTitle title = preventMistakeService.getTitle(planInfoReq.getPlanId());
+        WxPlanBaseInfoRes wxPlanBaseInfoRes =
+                wxPlanService.getOnsitePlanBaseInfo(planInfoReq.getPlanId());
 
         List<OnsiteWorkshop> onsiteWorkshopList = onsiteWorkshopMapper.selectList(Wrappers.<OnsiteWorkshop>lambdaQuery()
                 .eq(OnsiteWorkshop::getBentelerPlanId, planInfoReq.getPlanId()));
@@ -199,12 +159,13 @@ public class PlanApprovalServiceImpl implements PlanApprovalService {
         });
 
         return PlanApprovalDetailRes.builder()
-                .planId(bentelerPlan.getId())
-                .planName(bentelerPlan.getName())
-                .effectiveDate(bentelerPlan.getEffectiveDate())
-                .usersName(usersName)
-                .titleInfo(title)
-                .onsiteCalendars(onsiteCalendarList)
+                .planId(wxPlanBaseInfoRes.getPlanId())
+                .planName(wxPlanBaseInfoRes.getPlanName())
+                .usersName(wxPlanBaseInfoRes.getUsersName())
+                .frequency(wxPlanBaseInfoRes.getFrequency())
+                .effectiveDate(wxPlanBaseInfoRes.getEffectiveDate())
+                .titleInfo((OnsiteTitle) wxPlanBaseInfoRes.getTitle())
+                .attachment(wxPlanBaseInfoRes.getAttachment())
                 .onsiteWorkshops(onsiteWorkshopList)
                 .build();
     }
@@ -254,34 +215,4 @@ public class PlanApprovalServiceImpl implements PlanApprovalService {
         return ResponseBeanBuilder.ok();
     }
 
-    /**
-     * 根据用户id及班次拼装用户姓名
-     *
-     * @param userId
-     * @param shift
-     * @return 取不到用户信息返回空字符串,取到用户信息拼接班次
-     */
-    private String assembleUserName(Long userId, String shift) {
-        if (userId > 0) {
-            UserInfo userInfo = userInfoMapper.selectById(userId);
-            if (null != userInfo && null != userInfo.getName()) {
-                return StringUtils.join(userInfo.getName(), " ", shift != null ? shift + "班" : "");
-            }
-        }
-        return "";
-    }
-
-    /**
-     * 根据用户id获取用户姓名
-     * @param userId
-     * @return name
-     */
-    private String getUserNameById(Long userId) {
-        UserInfo userInfo = userInfoMapper.selectById(userId);
-        if (null != userInfo && null != userInfo.getName()) {
-            return userInfo.getName();
-        }
-        return "";
-    }
-
 }

+ 187 - 143
application-facade/src/main/java/com/factory/wx/service/impl/PlanPassServiceImpl.java

@@ -21,29 +21,25 @@ 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.BentelerPlanService;
 import com.factory.web.service.fa.*;
 import com.factory.web.service.pm.PreventMistakeService;
 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.PlanApprovalTaskRes;
 import com.factory.wx.entity.res.PlanPassDetailRes;
 import com.factory.wx.entity.res.PlanPassRes;
-import com.factory.wx.mapper.PlanApprovalMapper;
+import com.factory.wx.entity.res.WxPlanBaseInfoRes;
 import com.factory.wx.mapper.PlanPassMapper;
 import com.factory.wx.service.PlanPassService;
+import com.factory.wx.service.WxPlanService;
 import org.apache.commons.lang3.StringUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
-import java.io.ByteArrayInputStream;
-import java.io.ObjectInputStream;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Optional;
+import java.util.*;
 import java.util.stream.Collectors;
 
 /**
@@ -59,23 +55,22 @@ public class PlanPassServiceImpl implements PlanPassService {
      * 审批规则类型为:1新建计划审批
      */
     private static int APPROVAL_TYPE_NEW = 1;
+    /**
+     * 审批规则类型为:2首件
+     */
+    private static int APPROVAL_TYPE_FIRST_ARTICLE = 2;
     /**
      * 审批规则类型为:3防错
      */
     private static int APPROVAL_TYPE_PM = 3;
     @Autowired
-    private PlanApprovalMapper planApprovalMapper;
-    @Autowired
     private BentelerPlanMapper bentelerPlanMapper;
     @Autowired
     private OnsiteCalendarMapper onsiteCalendarMapper;
     @Autowired
     private ApprovalRuleMapper approvalRuleMapper;
     @Autowired
-    private UserInfoMapper userInfoMapper;
-    @Autowired
     private PreventMistakeService preventMistakeService;
-
     @Autowired
     private OnsiteApprovalTaskMapper onsiteApprovalTaskMapper;
     @Autowired
@@ -83,16 +78,8 @@ public class PlanPassServiceImpl implements PlanPassService {
     @Autowired
     private PlanPassMapper planPassMapper;
     @Autowired
-    private FirstArticleCalendarMapper firstArticleCalendarMapper;
-    @Autowired
     private FirstArticleApprovalTaskMapper firstArticleApprovalTaskMapper;
     @Autowired
-    private BentelerPlanService planService;
-    @Autowired
-    private FirstArticleCalendarService firstArticleCalendarService;
-    @Autowired
-    private FirstArticleTitleBlobService firstArticleTitleBlobService;
-    @Autowired
     private FirstArticleWorkshopService firstArticleWorkshopService;
     @Autowired
     private FirstArticleItemService firstArticleItemService;
@@ -102,8 +89,8 @@ public class PlanPassServiceImpl implements PlanPassService {
     private FirstArticleService firstArticleService;
     @Autowired
     private FirstArticleTaskService firstArticleTaskService;
-//    @Autowired
-//    private FirstArticleApprovalTaskMapper firstArticleApprovalTaskMapper;
+    @Autowired
+    private WxPlanService wxPlanService;
 
     private static IPage<BentelerPlan> getBentelerPlanIPage(PlanPageReq planPageReq, List<OnsiteCalendar> onsiteCalendarList, BentelerPlanMapper bentelerPlanMapper) {
         IPage<BentelerPlan> bentelerPlanIPage;
@@ -154,25 +141,18 @@ public class PlanPassServiceImpl implements PlanPassService {
     /**
      * 计划放行详情-首件
      *
-     * @param planInfoReq
+     * @param planPassReq
      * @return
      */
 
     @Override
-    public PlanPassDetailRes getPassDetail(PlanInfoReq planInfoReq) {
-        BentelerPlan bentelerPlan = bentelerPlanMapper.selectById(planInfoReq.getPlanId());
-
-        List<FirstArticleCalendar> firstArticleCalendarList = firstArticleCalendarMapper.selectList(Wrappers.<FirstArticleCalendar>lambdaQuery()
-                .eq(FirstArticleCalendar::getBentelerPlanId, planInfoReq.getPlanId()));
-        List<String> usersName = new ArrayList<>();
-        firstArticleCalendarList.forEach(onsiteCalendar -> {
-            String name = assembleUserName(onsiteCalendar.getUserId(), onsiteCalendar.getShift());
-            if (!name.isEmpty()) usersName.add(name);
-        });
+    public PlanPassDetailRes getPassDetail(PlanPassReq planPassReq) {
+        WxPlanBaseInfoRes wxPlanBaseInfoRes =
+                wxPlanService.getFirstArticlePlanBaseInfo(planPassReq.getPlanId());
 
         //工作站
         List<FirstArticleWorkshop> firstArticleWorkshopList = firstArticleWorkshopService.list(Wrappers.<FirstArticleWorkshop>lambdaQuery()
-                .eq(FirstArticleWorkshop::getBentelerPlanId, planInfoReq.getPlanId()));
+                .eq(FirstArticleWorkshop::getBentelerPlanId, planPassReq.getPlanId()));
         // 每个workshop下的item
         for (int i = 0; i < firstArticleWorkshopList.size(); i++) {
             FirstArticleWorkshop workshop = firstArticleWorkshopList.get(i);
@@ -181,9 +161,11 @@ public class PlanPassServiceImpl implements PlanPassService {
             //每个item下的结果
             for (int j = 0; j < firstArticleItemList.size(); j++) {
                 FirstArticleItem item = firstArticleItemList.get(j);
+                //TODO 一个对应多个result
                 List<FirstArticleItemResult> firstArticleItemResults = firstArticleItemResultService.list(Wrappers.<FirstArticleItemResult>lambdaQuery()
                         .eq(FirstArticleItemResult::getFirstArticleItemId, item.getId())
                         .eq(FirstArticleItemResult::getResult, 1));
+                // 容错,没有result信息则删除
                 if (firstArticleItemResults.stream().count() == 0) {
                     firstArticleItemList.remove(j);
                 } else {
@@ -204,13 +186,17 @@ public class PlanPassServiceImpl implements PlanPassService {
                         if (taskId.isPresent()) {
                             FirstArticleTask firstArticleTask = firstArticleTaskService.getById(taskId.get().longValue());
                             item.setFirstArticleTask(firstArticleTask);
+
                             FirstArticleApprovalTask approvalTask = firstArticleApprovalTaskMapper.selectOne(Wrappers.<FirstArticleApprovalTask>lambdaQuery()
-                                    .eq(FirstArticleApprovalTask::getFirstArticleTaskId, taskId.get().longValue()));
+                                    .eq(FirstArticleApprovalTask::getFirstArticleTaskId, taskId.get().longValue())
+//                                    .eq(FirstArticleApprovalTask::getApprovalLevel, firstArticleApprovalTask.getApprovalLevel())
+                                    .eq(FirstArticleApprovalTask::getApprovalUserId, planPassReq.getUserId()));
                             item.setFirstArticleApprovalTaskStatus(approvalTask.getStatus());
                         }
                     }
                 }
             }
+            //工作站下面没有异常的item则不显示工作站
             if (firstArticleItemList.size() > 0) {
                 workshop.setFirstArticleItemList(firstArticleItemList);
             } else {
@@ -218,17 +204,14 @@ public class PlanPassServiceImpl implements PlanPassService {
             }
         }
 
-
-        //获取title
-        FirstArticleTitle title = firstArticleService.getFaTitle(planInfoReq.getPlanId());
-
         return PlanPassDetailRes.builder()
-                .planId(bentelerPlan.getId())
-                .planName(bentelerPlan.getName())
-                .effectiveDate(bentelerPlan.getEffectiveDate())
-                .usersName(usersName)
-                .firstArticleTitle(title)
-                .firstArticleCalendars(firstArticleCalendarList)
+                .planId(wxPlanBaseInfoRes.getPlanId())
+                .planName(wxPlanBaseInfoRes.getPlanName())
+                .usersName(wxPlanBaseInfoRes.getUsersName())
+                .frequency(wxPlanBaseInfoRes.getFrequency())
+                .effectiveDate(wxPlanBaseInfoRes.getEffectiveDate())
+                .firstArticleTitle((FirstArticleTitle) wxPlanBaseInfoRes.getTitle())
+                .attachment(wxPlanBaseInfoRes.getAttachment())
                 .firstArticleWorkshops(firstArticleWorkshopList)
                 .build();
     }
@@ -236,37 +219,29 @@ public class PlanPassServiceImpl implements PlanPassService {
     /**
      * 计划放行详情-防错
      *
-     * @param planInfoReq
+     * @param planPassReq
      * @return
      */
     @Override
-    public PlanPassDetailRes getPassDetailPM(PlanInfoReq planInfoReq) {
-        BentelerPlan bentelerPlan = bentelerPlanMapper.selectById(planInfoReq.getPlanId());
-        List<OnsiteCalendar> onsiteCalendarList = onsiteCalendarMapper.selectList(Wrappers.<OnsiteCalendar>lambdaQuery()
-                .eq(OnsiteCalendar::getBentelerPlanId, planInfoReq.getPlanId()));
-
-        List<String> usersName = new ArrayList<>();
-        onsiteCalendarList.forEach(onsiteCalendar -> {
-
-            String name = assembleUserName(onsiteCalendar.getUserId(), null);
-            if (!name.isEmpty()) usersName.add(name);
-        });
-
-        //获取title
-        OnsiteTitle title = preventMistakeService.getTitle(planInfoReq.getPlanId());
-        List<PlanApprovalTaskRes> planApprovalTaskResList = planPassMapper.getApprovalTaskList(planInfoReq.getUserId());
-
-        PlanPassDetailRes planPassDetailRes = PlanPassDetailRes.builder()
-                .planId(bentelerPlan.getId())
-                .planName(bentelerPlan.getName())
-                .effectiveDate(bentelerPlan.getEffectiveDate())
-                .usersName(usersName)
-                .titleInfo(title)
-                .onsiteCalendars(onsiteCalendarList)
+    public PlanPassDetailRes getPassDetailPM(PlanPassReq planPassReq) {
+        WxPlanBaseInfoRes wxPlanBaseInfoRes =
+                wxPlanService.getOnsitePlanBaseInfo(planPassReq.getPlanId());
+
+        //获取待审批任务
+        Map map = new HashMap();
+        map.put("userId", planPassReq.getUserId());
+        List<PlanApprovalTaskRes> planApprovalTaskResList = planPassMapper.getApprovalTaskList(map);
+
+        return PlanPassDetailRes.builder()
+                .planId(wxPlanBaseInfoRes.getPlanId())
+                .planName(wxPlanBaseInfoRes.getPlanName())
+                .usersName(wxPlanBaseInfoRes.getUsersName())
+                .frequency(wxPlanBaseInfoRes.getFrequency())
+                .effectiveDate(wxPlanBaseInfoRes.getEffectiveDate())
+                .titleInfo((OnsiteTitle) wxPlanBaseInfoRes.getTitle())
+                .attachment(wxPlanBaseInfoRes.getAttachment())
                 .planApprovalTasks(planApprovalTaskResList)
-                .effectiveDate(bentelerPlan.getEffectiveDate())
                 .build();
-        return planPassDetailRes;
     }
 
     /**
@@ -278,58 +253,156 @@ public class PlanPassServiceImpl implements PlanPassService {
     @Override
     public ResponseBean approvalTaskOperate(PlanApprovalTaskReq planApprovalTaskReq) {
 
-        int updateStatus = 0;
+        int updateStatus = 0; // 更新状态
+        int taskStatus = 0; //task表状态
+        if (planApprovalTaskReq.getStatus() == 1) taskStatus = 2; // 放行
+        if (planApprovalTaskReq.getStatus() == 2) taskStatus = 3; // 不通过
+
         if (planApprovalTaskReq.getPlanType() == 1) {
-            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()));
+            //更新首件审批信息
+            updateStatus = updateFirstArticleApprovalTask(planApprovalTaskReq, taskStatus);
         }
         if (planApprovalTaskReq.getPlanType() == 2) {
-            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()));
+            //更新防错审批信息
+            updateStatus = updateOnsiteApprovalTask(planApprovalTaskReq, taskStatus);
         }
 
         if (updateStatus > 0) {
-            //审批不通过触发下一级别
-            if (planApprovalTaskReq.getStatus() == 2) {
-                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());
-                }
+            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.getStatus() == 1) {
-                //审批通过,保存审批历史
-                preventMistakeService.getApprovalUserInfo(1, APPROVAL_TYPE_PM);
+            //防错
+            if (planApprovalTaskReq.getPlanType() == 2) {
+                preventMistakeService.setOnsiteTaskHis(planApprovalTaskReq.getTaskId());
             }
         }
+    }
 
-        return ResponseBeanBuilder.ok();
+    /**
+     * 设置防错下一级别人员
+     *
+     * @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());
+        }
     }
 
+
     /**
      * 计划放行列表
      *
@@ -338,6 +411,8 @@ public class PlanPassServiceImpl implements PlanPassService {
      */
     @Override
     public List<PlanPassRes> getPassList(PlanPageReq planPageReq) {
+        //分页
+        planPageReq.setPage((planPageReq.getPage() - 1) * planPageReq.getSize());
         List<PlanPassRes> planPassResList = new ArrayList<>();
         //首件列表
         if (planPageReq.getCheckType() == 1) {
@@ -350,35 +425,4 @@ public class PlanPassServiceImpl implements PlanPassService {
         return planPassResList;
     }
 
-    /**
-     * byte[]转成Object
-     *
-     * @param buffer byte[]
-     * @return Object
-     */
-    private Object byteArrayToObject(byte[] buffer) throws Exception {
-        Object ob = null;
-        ObjectInputStream ois = new ObjectInputStream(new ByteArrayInputStream(buffer));
-        ob = ois.readObject();
-        ois.close();
-        return ob;
-    }
-
-    /**
-     * 根据用户id及班次拼装用户姓名
-     *
-     * @param userId
-     * @param shift
-     * @return 取不到用户信息返回空字符串,取到用户信息拼接班次
-     */
-    private String assembleUserName(Long userId, String shift) {
-        if (userId > 0) {
-            UserInfo userInfo = userInfoMapper.selectById(userId);
-            if (null != userInfo && null != userInfo.getName()) {
-                return StringUtils.join(userInfo.getName(), " ", shift != null ? shift + "班" : "");
-            }
-        }
-        return "";
-    }
-
 }

+ 21 - 51
application-facade/src/main/java/com/factory/wx/service/impl/PlanReminderServiceImpl.java

@@ -7,32 +7,27 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.factory.base.entity.aggregates.PageBean;
 import com.factory.base.entity.po.benteler.BentelerPlan;
-import com.factory.base.entity.po.remote.UserInfo;
-import com.factory.user.mapper.UserInfoMapper;
-import com.factory.web.entity.fa.FirstArticleCalendar;
 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.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.service.pm.PreventMistakeService;
 import com.factory.wx.entity.req.PlanInfoReq;
 import com.factory.wx.entity.req.PlanPageReq;
 import com.factory.wx.entity.res.PlanReminderDetailRes;
 import com.factory.wx.entity.res.ReminderRes;
+import com.factory.wx.entity.res.WxPlanBaseInfoRes;
 import com.factory.wx.mapper.ReminderMapper;
 import com.factory.wx.service.PlanReminderService;
+import com.factory.wx.service.WxPlanService;
 import org.slf4j.Logger;
 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;
 
@@ -60,17 +55,11 @@ public class PlanReminderServiceImpl implements PlanReminderService {
     @Autowired
     private ReminderMapper reminderMapper;
     @Autowired
-    private UserInfoMapper userInfoMapper;
-    @Autowired
-    private PreventMistakeService preventMistakeService;
-    @Autowired
-    private FirstArticleCalendarMapper firstArticleCalendarMapper;
-    @Autowired
     private FirstArticleWorkshopMapper firstArticleWorkshopMapper;
     @Autowired
     private FirstArticleItemMapper firstArticleItemMapper;
     @Autowired
-    private FirstArticleService firstArticleService;
+    private WxPlanService wxPlanService;
 
     /**
      * 获取计划提醒列表
@@ -80,6 +69,7 @@ public class PlanReminderServiceImpl implements PlanReminderService {
      */
     @Override
     public List<ReminderRes> getReminderList(PlanPageReq planPageReq) {
+        planPageReq.setPage((planPageReq.getPage() - 1) * planPageReq.getSize());
         return reminderMapper.getReminderList(planPageReq);
     }
 
@@ -127,19 +117,7 @@ public class PlanReminderServiceImpl implements PlanReminderService {
      */
     @Override
     public PlanReminderDetailRes getReminderDetailPM(PlanInfoReq planInfoReq) {
-        BentelerPlan bentelerPlan = bentelerPlanMapper.selectById(planInfoReq.getPlanId());
-        List<OnsiteCalendar> onsiteCalendarList = onsiteCalendarMapper.selectList(Wrappers.<OnsiteCalendar>lambdaQuery()
-                .eq(OnsiteCalendar::getBentelerPlanId, planInfoReq.getPlanId()));
-
-        List<String> usersName = new ArrayList<>();
-        onsiteCalendarList.forEach(onsiteCalendar -> {
-            UserInfo userInfo = userInfoMapper.selectById(onsiteCalendar.getUserId());
-            usersName.add(userInfo.getName());
-        });
-
-        //获取title
-        OnsiteTitle title = preventMistakeService.getTitle(planInfoReq.getPlanId());
-
+        WxPlanBaseInfoRes wxPlanBaseInfoRes = wxPlanService.getOnsitePlanBaseInfo(planInfoReq.getPlanId());
         List<OnsiteWorkshop> onsiteWorkshopList = onsiteWorkshopMapper.selectList(Wrappers.<OnsiteWorkshop>lambdaQuery()
                 .eq(OnsiteWorkshop::getBentelerPlanId, planInfoReq.getPlanId()));
         onsiteWorkshopList.forEach(onsiteWorkshop -> {
@@ -147,14 +125,16 @@ public class PlanReminderServiceImpl implements PlanReminderService {
                     .eq(OnsiteItem::getWorkshopId, onsiteWorkshop.getId())));
         });
         return PlanReminderDetailRes.builder()
-                .planId(bentelerPlan.getId())
-                .planName(bentelerPlan.getName())
-                .usersName(usersName)
-                .effectiveDate(bentelerPlan.getEffectiveDate())
-                .titleInfo(title)
-                .onsiteCalendars(onsiteCalendarList)
+                .planId(wxPlanBaseInfoRes.getPlanId())
+                .planName(wxPlanBaseInfoRes.getPlanName())
+                .usersName(wxPlanBaseInfoRes.getUsersName())
+                .frequency(wxPlanBaseInfoRes.getFrequency())
+                .effectiveDate(wxPlanBaseInfoRes.getEffectiveDate())
+                .titleInfo((OnsiteTitle) wxPlanBaseInfoRes.getTitle())
+                .attachment(wxPlanBaseInfoRes.getAttachment())
                 .onsiteWorkshops(onsiteWorkshopList)
                 .build();
+
     }
 
     @Override
@@ -170,18 +150,7 @@ public class PlanReminderServiceImpl implements PlanReminderService {
      */
     @Override
     public PlanReminderDetailRes getReminderDetail(PlanInfoReq planInfoReq) {
-        BentelerPlan bentelerPlan = bentelerPlanMapper.selectById(planInfoReq.getPlanId());
-        List<FirstArticleCalendar> firstArticleCalendarList = firstArticleCalendarMapper.selectList(Wrappers.<FirstArticleCalendar>lambdaQuery()
-                .eq(FirstArticleCalendar::getBentelerPlanId, planInfoReq.getPlanId()));
-
-        List<String> usersName = new ArrayList<>();
-        firstArticleCalendarList.forEach(firstArticleCalendar -> {
-            UserInfo userInfo = userInfoMapper.selectById(firstArticleCalendar.getUserId());
-            usersName.add(userInfo.getName());
-        });
-
-        //获取title
-        FirstArticleTitle title = firstArticleService.getFaTitle(planInfoReq.getPlanId());
+        WxPlanBaseInfoRes wxPlanBaseInfoRes = wxPlanService.getFirstArticlePlanBaseInfo(planInfoReq.getPlanId());
 
         List<FirstArticleWorkshop> firstArticleWorkshopList = firstArticleWorkshopMapper.selectList(Wrappers.<FirstArticleWorkshop>lambdaQuery()
                 .eq(FirstArticleWorkshop::getBentelerPlanId, planInfoReq.getPlanId()));
@@ -190,12 +159,13 @@ public class PlanReminderServiceImpl implements PlanReminderService {
                     .eq(FirstArticleItem::getWorkshopId, firstArticleWorkshop.getId())));
         });
         return PlanReminderDetailRes.builder()
-                .planId(bentelerPlan.getId())
-                .planName(bentelerPlan.getName())
-                .usersName(usersName)
-                .effectiveDate(bentelerPlan.getEffectiveDate())
-                .firstArticleTitle(title)
-                .firstArticleCalendars(firstArticleCalendarList)
+                .planId(wxPlanBaseInfoRes.getPlanId())
+                .planName(wxPlanBaseInfoRes.getPlanName())
+                .usersName(wxPlanBaseInfoRes.getUsersName())
+                .frequency(wxPlanBaseInfoRes.getFrequency())
+                .effectiveDate(wxPlanBaseInfoRes.getEffectiveDate())
+                .firstArticleTitle((FirstArticleTitle) wxPlanBaseInfoRes.getTitle())
+                .attachment(wxPlanBaseInfoRes.getAttachment())
                 .firstArticleWorkshops(firstArticleWorkshopList)
                 .build();
     }

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

@@ -0,0 +1,144 @@
+package com.factory.wx.service.impl;
+
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.factory.base.entity.po.benteler.BentelerPlan;
+import com.factory.base.entity.po.remote.UserInfo;
+import com.factory.user.mapper.UserInfoMapper;
+import com.factory.web.entity.fa.FirstArticleCalendar;
+import com.factory.web.entity.fa.FirstArticleTitle;
+import com.factory.web.entity.pm.OnsiteCalendar;
+import com.factory.web.entity.pm.OnsiteTitle;
+import com.factory.web.mapper.BentelerPlanMapper;
+import com.factory.web.mapper.FileMapper;
+import com.factory.web.mapper.fa.FirstArticleCalendarMapper;
+import com.factory.web.mapper.pm.OnsiteCalendarMapper;
+import com.factory.web.service.fa.FirstArticleService;
+import com.factory.web.service.impl.FileEntry;
+import com.factory.web.service.pm.PreventMistakeService;
+import com.factory.wx.entity.res.WxPlanBaseInfoRes;
+import com.factory.wx.service.WxPlanService;
+import org.apache.commons.lang3.StringUtils;
+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-07-29 9:33 上午
+ */
+@Service("wxPlanService")
+public class WxPlanServiceImpl implements WxPlanService {
+
+    @Autowired
+    private UserInfoMapper userInfoMapper;
+    @Autowired
+    private BentelerPlanMapper bentelerPlanMapper;
+    @Autowired
+    private FirstArticleCalendarMapper firstArticleCalendarMapper;
+    @Autowired
+    private FirstArticleService firstArticleService;
+    @Autowired
+    private OnsiteCalendarMapper onsiteCalendarMapper;
+    @Autowired
+    private PreventMistakeService preventMistakeService;
+    @Autowired
+    private FileMapper fileMapper;
+
+    @Override
+    public WxPlanBaseInfoRes getFirstArticlePlanBaseInfo(Long planId) {
+        BentelerPlan bentelerPlan = bentelerPlanMapper.selectById(planId);
+        List<FirstArticleCalendar> firstArticleCalendarList = firstArticleCalendarMapper.selectList(Wrappers.<FirstArticleCalendar>lambdaQuery()
+                .eq(FirstArticleCalendar::getBentelerPlanId, planId));
+
+        //获取点检负责人
+        List<String> usersName = new ArrayList<>();
+        List<Integer> frequency = new ArrayList<>();
+        firstArticleCalendarList.forEach(firstArticleCalendar -> {
+            String name = assembleUserName(firstArticleCalendar.getUserId(), firstArticleCalendar.getShift());
+            if (!name.isEmpty()) usersName.add(name);
+            frequency.add(firstArticleCalendar.getTypeFlag());
+        });
+        //获取title
+        FirstArticleTitle title = firstArticleService.getFaTitle(planId);
+
+        //判断是否有附件
+        int attrCount = fileMapper.selectCount(Wrappers.<FileEntry>lambdaQuery().eq(FileEntry::getId, title.getUploadAttachmentId()));
+
+        return WxPlanBaseInfoRes.builder()
+                .planId(bentelerPlan.getId())
+                .planName(bentelerPlan.getName())
+                .usersName(usersName)
+                .frequency(frequency.stream().distinct().collect(Collectors.toList()))//频次去重
+                .attachment(attrCount == 0 ? 0 : 1)
+                .effectiveDate(bentelerPlan.getEffectiveDate())
+                .title(title)
+                .build();
+    }
+
+    @Override
+    public WxPlanBaseInfoRes getOnsitePlanBaseInfo(Long planId) {
+        BentelerPlan bentelerPlan = bentelerPlanMapper.selectById(planId);
+        List<OnsiteCalendar> onsiteCalendarList = onsiteCalendarMapper.selectList(Wrappers.<OnsiteCalendar>lambdaQuery()
+                .eq(OnsiteCalendar::getBentelerPlanId, planId));
+
+        //获取点检负责人
+        List<String> usersName = new ArrayList<>();
+        List<Integer> frequency = new ArrayList<>();
+        onsiteCalendarList.forEach(onsiteCalendar -> {
+            String name = assembleUserName(onsiteCalendar.getUserId(), null);
+            if (!name.isEmpty()) usersName.add(name);
+            frequency.add(onsiteCalendar.getTypeFlag());
+        });
+
+        //获取title
+        OnsiteTitle title = preventMistakeService.getTitle(planId);
+
+        //判断是否有附件
+        int attrCount = fileMapper.selectCount(Wrappers.<FileEntry>lambdaQuery().eq(FileEntry::getId, title.getUploadAttachmentId()));
+
+        return WxPlanBaseInfoRes.builder()
+                .planId(bentelerPlan.getId())
+                .planName(bentelerPlan.getName())
+                .usersName(usersName)
+                .frequency(frequency.stream().distinct().collect(Collectors.toList()))//频次去重
+                .effectiveDate(bentelerPlan.getEffectiveDate())
+                .title(title)
+                .attachment(attrCount == 0 ? 0 : 1)
+                .build();
+    }
+
+    /**
+     * 根据用户id及班次拼装用户姓名
+     *
+     * @param userId
+     * @param shift
+     * @return 取不到用户信息返回空字符串,取到用户信息拼接班次
+     */
+    private String assembleUserName(Long userId, String shift) {
+        String userName = getUserNameById(userId);
+        if (!userName.isEmpty()) {
+            userName = shift == null ? userName : StringUtils.join(userName, " ", shift, "班");
+        }
+        return userName;
+    }
+
+    /**
+     * 根据用户id获取用户名
+     *
+     * @param userId
+     * @return 返回用户名,未找到时返回空字符串
+     */
+    public String getUserNameById(Long userId) {
+        if (userId > 0) {
+            UserInfo userInfo = userInfoMapper.selectById(userId);
+            if (null != userInfo && null != userInfo.getName()) {
+                return userInfo.getName();
+            }
+        }
+        return "";
+    }
+}

+ 8 - 4
application-facade/src/main/resources/mapper/PlanPassMapper.xml

@@ -8,7 +8,8 @@
         SELECT DISTINCT
             bp.id AS id,
             bp.`name` AS NAME,
-            bp.plan_type AS plan_type
+            bp.plan_type AS plan_type,
+            rat.onsite_task_id AS task_id
         FROM
             onsite_approval_task rat,
             onsite_task ot,
@@ -22,7 +23,7 @@
         <if test="name != ''">
             AND bp.`name` LIKE CONCAT('%',#{name},'%')
         </if>
-
+        LIMIT #{page},#{size}
     </select>
 
     <select id="getPlanPassList" parameterType="com.factory.wx.entity.req.PlanPageReq"
@@ -30,7 +31,8 @@
         SELECT DISTINCT
             bp.id AS id,
             bp.`name` AS NAME,
-            bp.plan_type AS plan_type
+            bp.plan_type AS plan_type,
+            rat.first_article_task_id AS task_id
         FROM
             first_article_approval_task rat,
             first_article_task ot,
@@ -44,6 +46,7 @@
         <if test="name != ''">
             AND bp.`name` LIKE CONCAT('%',#{name},'%')
         </if>
+        LIMIT #{page},#{size}
     </select>
     <!-- 获取用户待审批任务列表 -->
     <select id="getApprovalTaskList" resultType="com.factory.wx.entity.res.PlanApprovalTaskRes">
@@ -53,7 +56,8 @@
             oi.id as item_id,
             oi.item_content,
             oir.result,
-            oir.created_time as time,
+            oir.created_time as item_time,
+            oir.abnormal,
             oc.type_flag,
             oat.`status`
         FROM

+ 2 - 0
application-facade/src/main/resources/mapper/ReminderMapper.xml

@@ -44,6 +44,8 @@
         <if test="name != ''">
             AND bp.`name` LIKE  CONCAT('%',#{name},'%')
         </if>
+        ORDER BY `status`
+        LIMIT #{page},#{size}
     </select>
     <update id="confirmReminder" parameterType="com.factory.wx.entity.req.PlanInfoReq">
         UPDATE remind_approval_task rat