Эх сурвалжийг харах

Merge branch 'master' of http://git.jihengcc.cn/daili/smart-factory

guozx 3 жил өмнө
parent
commit
809ea7bf90
28 өөрчлөгдсөн 1017 нэмэгдсэн , 116 устгасан
  1. 13 5
      application-facade/src/main/java/com/factory/controller/web/FirstArticleController.java
  2. 14 5
      application-facade/src/main/java/com/factory/controller/web/PreventMistakeController.java
  3. 3 3
      application-facade/src/main/java/com/factory/controller/wx/PlanApprovalController.java
  4. 9 10
      application-facade/src/main/java/com/factory/controller/wx/PlanReminderController.java
  5. 6 2
      application-facade/src/main/java/com/factory/controller/wx/StatisticsController.java
  6. 29 0
      application-facade/src/main/java/com/factory/web/entity/fa/req/SearchUserListReq.java
  7. 38 0
      application-facade/src/main/java/com/factory/web/entity/fa/res/UserListRes.java
  8. 29 0
      application-facade/src/main/java/com/factory/web/entity/pm/req/SearchAbnormalListReq.java
  9. 41 0
      application-facade/src/main/java/com/factory/web/entity/pm/req/SearchAbnormalReq.java
  10. 71 6
      application-facade/src/main/java/com/factory/web/entity/pm/res/AbnormalItemRes.java
  11. 53 0
      application-facade/src/main/java/com/factory/web/entity/pm/res/AbnormalItemResultRes.java
  12. 9 0
      application-facade/src/main/java/com/factory/web/mapper/fa/FirstArticleMapper.java
  13. 59 0
      application-facade/src/main/java/com/factory/web/mapper/pm/PreventMistakeMapper.java
  14. 11 3
      application-facade/src/main/java/com/factory/web/service/fa/FirstArticleService.java
  15. 118 55
      application-facade/src/main/java/com/factory/web/service/impl/fa/FirstArticleServiceImpl.java
  16. 136 0
      application-facade/src/main/java/com/factory/web/service/impl/pm/PreventMistakeServiceImpl.java
  17. 10 0
      application-facade/src/main/java/com/factory/web/service/pm/PreventMistakeService.java
  18. 6 0
      application-facade/src/main/java/com/factory/wx/entity/req/AbnormalPlanReq.java
  19. 5 4
      application-facade/src/main/java/com/factory/wx/entity/req/PlanApprovalReq.java
  20. 10 3
      application-facade/src/main/java/com/factory/wx/entity/res/PlanApprovalDetailRes.java
  21. 11 3
      application-facade/src/main/java/com/factory/wx/service/PlanApprovalService.java
  22. 9 2
      application-facade/src/main/java/com/factory/wx/service/PlanReminderService.java
  23. 28 2
      application-facade/src/main/java/com/factory/wx/service/impl/AbnormalStatisticsServiceImpl.java
  24. 50 1
      application-facade/src/main/java/com/factory/wx/service/impl/PlanApprovalServiceImpl.java
  25. 13 2
      application-facade/src/main/java/com/factory/wx/service/impl/PlanReminderServiceImpl.java
  26. 5 5
      application-facade/src/main/resources/mapper/AbnormalStatisticsMapper.xml
  27. 47 4
      application-facade/src/main/resources/mapper/FirstArticleMapper.xml
  28. 184 1
      application-facade/src/main/resources/mapper/PreventMistakeMapper.xml

+ 13 - 5
application-facade/src/main/java/com/factory/controller/web/FirstArticleController.java

@@ -39,6 +39,7 @@ import com.factory.web.entity.fa.res.FaPlanListForPadRes;
 import com.factory.web.entity.fa.res.FaPlanListRes;
 import com.factory.web.entity.fa.res.FaPlanRes;
 import com.factory.web.entity.fa.res.FaWorkshopNoGoListRes;
+import com.factory.web.entity.fa.res.UserListRes;
 import com.factory.web.entity.pm.OnsiteApprovalPlan;
 import com.factory.web.entity.pm.req.PmPlanPauseFlagReq;
 import com.factory.web.entity.pm.req.SearchPmPlanReq;
@@ -195,11 +196,18 @@ public class FirstArticleController {
 		return firstArticleService.getFaCheckRecordList(req);
 	}
 	
-	@ApiOperation(value = "判断检验结果是否填写完成")
-	@PostMapping("/getFaAllCheckFlag")
-	@ApiOperationSupport(order = 19)
-	public ResponseBean<FaAllCheckFlagRes> getFaAllCheckFlag(@RequestBody SearchFaAllCheckFlagReq req) {
-		return ResponseBeanBuilder.ok(firstArticleService.getFaAllCheckFlag(req));
+//	@ApiOperation(value = "判断检验结果是否填写完成")
+//	@PostMapping("/getFaAllCheckFlag")
+//	@ApiOperationSupport(order = 19)
+//	public ResponseBean<FaAllCheckFlagRes> getFaAllCheckFlag(@RequestBody SearchFaAllCheckFlagReq req) {
+//		return ResponseBeanBuilder.ok(firstArticleService.getFaAllCheckFlag(req));
+//	}
+	
+	@ApiOperation(value = "取得用户列表")
+	@PostMapping("/getUserList")
+	@ApiOperationSupport(order = 20)
+	public ResponseBean<List<UserListRes>> getUserList() {
+		return ResponseBeanBuilder.ok(firstArticleService.getUserList());
 	}
 	
 }

+ 14 - 5
application-facade/src/main/java/com/factory/controller/web/PreventMistakeController.java

@@ -21,6 +21,7 @@ import com.factory.web.entity.pm.req.AddPmPlanReq;
 import com.factory.web.entity.pm.req.EditItemResultListReq;
 import com.factory.web.entity.pm.req.EditPmPlanReq;
 import com.factory.web.entity.pm.req.PmPlanPauseFlagReq;
+import com.factory.web.entity.pm.req.SearchAbnormalListReq;
 import com.factory.web.entity.pm.req.SearchAllWorkshopReq;
 import com.factory.web.entity.pm.req.SearchItemListReq;
 import com.factory.web.entity.pm.req.SearchPmAllCheckFlagReq;
@@ -33,6 +34,7 @@ import com.factory.web.entity.pm.req.SearchPmPlanReq;
 import com.factory.web.entity.pm.req.SearchPmWorkshopNoGoListReq;
 import com.factory.web.entity.pm.req.SearchTaskReq;
 import com.factory.web.entity.pm.req.SearchWorkshopReq;
+import com.factory.web.entity.pm.res.AbnormalTaskInfoRes;
 import com.factory.web.entity.pm.res.PmAllCheckFlagRes;
 import com.factory.web.entity.pm.res.PmAllWorkshopListRes;
 import com.factory.web.entity.pm.res.PmCheckListRes;
@@ -221,11 +223,18 @@ public class PreventMistakeController {
 		return preventMistakeService.getAllWorkshopList(req);
 	}
 	
-	@ApiOperation(value = "判断检验结果是否填写完成")
-	@PostMapping("/getPmAllCheckFlag")
-	@ApiOperationSupport(order = 23)
-	public ResponseBean<PmAllCheckFlagRes> getPmAllCheckFlag(@RequestBody SearchPmAllCheckFlagReq req) {
-		return ResponseBeanBuilder.ok(preventMistakeService.getPmAllCheckFlag(req));
+//	@ApiOperation(value = "判断检验结果是否填写完成")
+//	@PostMapping("/getPmAllCheckFlag")
+//	@ApiOperationSupport(order = 23)
+//	public ResponseBean<PmAllCheckFlagRes> getPmAllCheckFlag(@RequestBody SearchPmAllCheckFlagReq req) {
+//		return ResponseBeanBuilder.ok(preventMistakeService.getPmAllCheckFlag(req));
+//	}
+
+	@ApiOperation(value = "取得异常列表")
+	@PostMapping("/getAbnormalList")
+	@ApiOperationSupport(order = 24)
+	public ResponseBean<List<AbnormalTaskInfoRes>> getAbnormalList(@RequestBody SearchAbnormalListReq req) {
+		return preventMistakeService.getAbnormalList(req);
 	}
 
 	// 计划审批、任务审批,都在小程序端做

+ 3 - 3
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) {
-        // TODO
-        return ResponseBeanBuilder.ok();
+        PlanApprovalDetailRes planApprovalDetailRes = planApprovalService.getApprovalDetailInitial(planInfoReq);
+        return ResponseBeanBuilder.ok(planApprovalDetailRes);
     }
 
     @ApiOperation(value = "计划审批详情-防错")
     @PostMapping("/detail/pm")
     public ResponseBean<PlanApprovalDetailRes> approvalDetailPM(@RequestBody PlanInfoReq planInfoReq) {
-        PlanApprovalDetailRes planApprovalDetailRes = planApprovalService.getApprovalDetail(planInfoReq);
+        PlanApprovalDetailRes planApprovalDetailRes = planApprovalService.getApprovalDetailPM(planInfoReq);
         return ResponseBeanBuilder.ok(planApprovalDetailRes);
     }
 

+ 9 - 10
application-facade/src/main/java/com/factory/controller/wx/PlanReminderController.java

@@ -1,8 +1,6 @@
 package com.factory.controller.wx;
 
-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.wx.entity.req.PlanInfoReq;
 import com.factory.wx.entity.req.PlanPageReq;
@@ -47,13 +45,20 @@ public class PlanReminderController {
         return ResponseBeanBuilder.ok(map);
     }
 
-    @ApiOperation(value = "计划提醒详情")
-    @PostMapping("/detail")
+    @ApiOperation(value = "首件计划提醒详情")
+    @PostMapping("/detail/initial")
     public ResponseBean<PlanReminderDetailRes> reminderDetail(@RequestBody PlanInfoReq planInfoReq) {
         PlanReminderDetailRes planReminderDetailRes = planReminderService.getReminderDetail(planInfoReq);
         return ResponseBeanBuilder.ok(planReminderDetailRes);
     }
 
+    @ApiOperation(value = "防错计划提醒详情")
+    @PostMapping("/detail/pm")
+    public ResponseBean<PlanReminderDetailRes> reminderDetailPM(@RequestBody PlanInfoReq planInfoReq) {
+        PlanReminderDetailRes planReminderDetailRes = planReminderService.getReminderDetailPM(planInfoReq);
+        return ResponseBeanBuilder.ok(planReminderDetailRes);
+    }
+
     @ApiOperation(value = "计划提醒确认")
     @PostMapping("/operate")
     public ResponseBean passOperate(@RequestBody PlanInfoReq planInfoReq) {
@@ -61,10 +66,4 @@ public class PlanReminderController {
         return ResponseBeanBuilder.ok();
     }
 
-
-    @PostMapping("/test")
-    public ResponseBean<PageBean<BentelerPlan>> reminder(@RequestBody PlanPageReq planPageReq) {
-        PageBean<BentelerPlan> reminderList = planReminderService.getReminderListByPage(planPageReq);
-        return ResponseBeanBuilder.ok(reminderList);
-    }
 }

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

@@ -18,7 +18,9 @@ import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
 
 /**
  * 微信小程序端异常统计
@@ -45,9 +47,11 @@ public class StatisticsController {
 
     @ApiOperation(value = "异常计划列表")
     @PostMapping("/list")
-    public ResponseBean<List<AbnormalPlanRes>> statisticsList(@RequestBody AbnormalPlanReq abnormalPlanReq) {
+    public ResponseBean<Map> statisticsList(@RequestBody AbnormalPlanReq abnormalPlanReq) {
         List<AbnormalPlanRes> abnormalPlanResList = abnormalStatisticsService.getExceptionPlansByMonth(abnormalPlanReq);
-        return ResponseBeanBuilder.ok(abnormalPlanResList);
+        Map map = new HashMap<>();
+        map.put("row", abnormalPlanResList);
+        return ResponseBeanBuilder.ok(map);
     }
 
     @ApiOperation(value = "异常计划详情")

+ 29 - 0
application-facade/src/main/java/com/factory/web/entity/fa/req/SearchUserListReq.java

@@ -0,0 +1,29 @@
+package com.factory.web.entity.fa.req;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * 用户列表
+ *
+ * @author wzy
+ * @date 2021-07-09 12:00:00
+ */
+@Data
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+@JsonInclude()
+@ApiModel("")
+public class SearchUserListReq {
+	
+	@ApiModelProperty(value = "角色Id")
+	private Long roleId;
+	
+}

+ 38 - 0
application-facade/src/main/java/com/factory/web/entity/fa/res/UserListRes.java

@@ -0,0 +1,38 @@
+package com.factory.web.entity.fa.res;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * 用户
+ *
+ * @author wzy
+ * @date 2021-07-09 12:00:00
+ */
+@Data
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+@JsonInclude()
+@ApiModel("")
+public class UserListRes implements Serializable {
+
+	@ApiModelProperty(value = "用户ID")
+	private Long id;
+
+	@ApiModelProperty(value = "用户名")
+	private String username;
+
+	@ApiModelProperty(value = "姓名")
+	private String name;
+
+}

+ 29 - 0
application-facade/src/main/java/com/factory/web/entity/pm/req/SearchAbnormalListReq.java

@@ -0,0 +1,29 @@
+package com.factory.web.entity.pm.req;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * 工作站
+ *
+ * @author wzy
+ * @date 2021-07-09 12:00:00
+ */
+@Data
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+@JsonInclude()
+@ApiModel("")
+public class SearchAbnormalListReq {
+	
+	@ApiModelProperty(value = "年月日", example = "2021-06-08")
+	private String checkDate;
+
+}

+ 41 - 0
application-facade/src/main/java/com/factory/web/entity/pm/req/SearchAbnormalReq.java

@@ -0,0 +1,41 @@
+package com.factory.web.entity.pm.req;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * 工作站
+ *
+ * @author wzy
+ * @date 2021-07-09 12:00:00
+ */
+@Data
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+@JsonInclude()
+@ApiModel("")
+public class SearchAbnormalReq {
+	
+	@ApiModelProperty(value = "年月日", example = "2021-06-08")
+	private String checkDate;
+	
+	@ApiModelProperty(value = "工作站id")
+	private Long workshopId;
+	
+	@ApiModelProperty(value = "任务id")
+	private Long taskId;
+	
+	@ApiModelProperty(value = "巡检项目id")
+	private Long itemId;
+	
+	@ApiModelProperty(value = "0表示首件 1表示200件 2表示中断")
+	private Integer typeFlag;
+	
+}

+ 71 - 6
application-facade/src/main/java/com/factory/web/entity/pm/res/AbnormalItemRes.java

@@ -1,14 +1,10 @@
 package com.factory.web.entity.pm.res;
 
 import java.io.Serializable;
-import java.time.LocalDateTime;
 import java.util.List;
 
-import javax.validation.constraints.NotEmpty;
-
-import com.baomidou.mybatisplus.annotation.FieldFill;
 import com.baomidou.mybatisplus.annotation.TableField;
-import com.factory.web.entity.pm.OnsiteWorkshop;
+import com.factory.web.entity.fa.FirstArticleItemResult;
 import com.fasterxml.jackson.annotation.JsonInclude;
 
 import io.swagger.annotations.ApiModel;
@@ -33,6 +29,75 @@ import lombok.NoArgsConstructor;
 public class AbnormalItemRes implements Serializable {
 	
 	@ApiModelProperty(value = "巡检项目id")
-	private Long onsiteItemId;
+	private Long itemId;
+	
+	@ApiModelProperty(value = "巡检项目内容")
+	private String itemContent;
+	
+	@ApiModelProperty(value = "防错检查结果:0通过 1巡检不通过 2没有巡检")
+	private Integer result;
+	
+	@ApiModelProperty(value = "判断标准")
+	private String itemStandard;
+	
+	@ApiModelProperty(value = "测量点前缀")
+	private String prefix;
+	
+	@ApiModelProperty(value = "测量点序号开始")
+	private Integer snoStart;
+	
+	@ApiModelProperty(value = "测量点序号结束")
+	private Integer snoEnd;
+
+	@ApiModelProperty(value = "数据类型 0数值 1属性")
+	private Integer valFlag;
+	
+	@ApiModelProperty(value = "上限 对应数据类型0数值")
+	private Integer valUp;
+	
+	@ApiModelProperty(value = "下限 对应数据类型0数值")
+	private Integer valDown;
+
+	@ApiModelProperty(value = "单位 对应数据类型0数值")
+	private Integer valUnit;
+	
+	@ApiModelProperty(value = "0表示ok 1表示nook 对应数据类型1属性")
+	private Integer valOk;
+	
+	@ApiModelProperty(value = "描述 对应数据类型1属性")
+	private String valDesc;
+
+	@ApiModelProperty(value = "特性等级")
+	private String levelInfo;
+	
+	@ApiModelProperty(value = "产品特性")
+	private String productInfo;
+	
+	@ApiModelProperty(value = "检验工具id")
+	private Integer toolId;
+	
+	@ApiModelProperty(value = "检验工具描述")
+	private String toolDesc;
+
+	@ApiModelProperty(value = "检验频次首件 0没选择 1选择")
+	private Integer firstFlag;
+	
+	@ApiModelProperty(value = "检验频次200件 0没选择 1选择")
+	private Integer twoHundredFlag;
+	
+	@ApiModelProperty(value = "检验频次中断 0没选择 1选择")
+	private Integer catchFlag;
+	
+//	@ApiModelProperty(value = "首件检查结果")
+//	private List<AbnormalItemResultRes> abnormalItemResultList;
+	
+	@ApiModelProperty(value = "首件检查结果")
+    private List<AbnormalItemResultRes> firstItemResultList; // 用于页面返回值
+	
+	@ApiModelProperty(value = "200件检查结果")
+    private List<AbnormalItemResultRes> twoHundredItemResultList; // 用于页面返回值
+
+	@ApiModelProperty(value = "中断检查结果")
+    private List<AbnormalItemResultRes> catchItemResultList; // 用于页面返回值
 
 }

+ 53 - 0
application-facade/src/main/java/com/factory/web/entity/pm/res/AbnormalItemResultRes.java

@@ -0,0 +1,53 @@
+package com.factory.web.entity.pm.res;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import java.util.List;
+
+import javax.validation.constraints.NotEmpty;
+
+import com.baomidou.mybatisplus.annotation.FieldFill;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.factory.web.entity.pm.OnsiteWorkshop;
+import com.fasterxml.jackson.annotation.JsonInclude;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * 防错计划
+ *
+ * @author wzy
+ * @date 2021-07-09 12:00:00
+ */
+@Data
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+@JsonInclude()
+@ApiModel("")
+public class AbnormalItemResultRes implements Serializable {
+	
+	@ApiModelProperty(value = "对应数据类型0数值")
+	private String val;
+	
+	@ApiModelProperty(value = "对应数据类型1属性")
+	private String valDesc;
+
+	@ApiModelProperty(value = "0通过 1巡检不通过 2没有巡检")
+	private Integer result;
+
+	@ApiModelProperty(value = "测量点前缀")
+	private String prefix;
+
+	@ApiModelProperty(value = "测量点序号")
+	private Integer sno;
+
+	@ApiModelProperty(value = "工具")
+	private String toolDesc;
+
+}

+ 9 - 0
application-facade/src/main/java/com/factory/web/mapper/fa/FirstArticleMapper.java

@@ -23,12 +23,14 @@ import com.factory.web.entity.fa.req.SearchFaTaskReq;
 import com.factory.web.entity.fa.req.SearchFaWorkshopListForPadReq;
 import com.factory.web.entity.fa.req.SearchFaWorkshopNoGoListReq;
 import com.factory.web.entity.fa.req.SearchFaWsItemResultCountReq;
+import com.factory.web.entity.fa.req.SearchUserListReq;
 import com.factory.web.entity.fa.res.FaItemListForPadRes;
 import com.factory.web.entity.fa.res.FaItemNoGoListRes;
 import com.factory.web.entity.fa.res.FaNoGoTaskAapprovalRes;
 import com.factory.web.entity.fa.res.FaPlanListForPadRes;
 import com.factory.web.entity.fa.res.FaPlanListRes;
 import com.factory.web.entity.fa.res.FaWorkshopNoGoListRes;
+import com.factory.web.entity.fa.res.UserListRes;
 
 /**
  * 首件计划
@@ -138,4 +140,11 @@ public interface FirstArticleMapper extends BaseMapper<BentelerPlan> {
      */
     public int getFaWsItemResultCount(@Param("req") SearchFaWsItemResultCountReq req);
     
+    /**
+     * 取得用户列表
+     * @param req
+     * @return 用户列表
+     */
+    public List<UserListRes> getUserList(@Param("req") SearchUserListReq req);
+    
 }

+ 59 - 0
application-facade/src/main/java/com/factory/web/mapper/pm/PreventMistakeMapper.java

@@ -9,6 +9,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.factory.base.entity.po.benteler.BentelerPlan;
 import com.factory.web.entity.pm.OnsiteApprovalPlan;
+import com.factory.web.entity.pm.req.SearchAbnormalReq;
 import com.factory.web.entity.pm.req.SearchApprovalUserReq;
 import com.factory.web.entity.pm.req.SearchCheckRecordReq;
 import com.factory.web.entity.pm.req.SearchPmAllCheckFlagReq;
@@ -20,6 +21,9 @@ import com.factory.web.entity.pm.req.SearchPmPlanReq;
 import com.factory.web.entity.pm.req.SearchPmWorkshopNoGoListReq;
 import com.factory.web.entity.pm.req.SearchPmWsAllCheckFlagReq;
 import com.factory.web.entity.pm.req.SearchTaskReq;
+import com.factory.web.entity.pm.res.AbnormalItemRes;
+import com.factory.web.entity.pm.res.AbnormalItemResultRes;
+import com.factory.web.entity.pm.res.AbnormalTaskInfoRes;
 import com.factory.web.entity.pm.res.ApprovalUserRes;
 import com.factory.web.entity.pm.res.PmCheckListRes;
 import com.factory.web.entity.pm.res.PmCheckRecordListRes;
@@ -154,4 +158,59 @@ public interface PreventMistakeMapper extends BaseMapper<BentelerPlan> {
      * @return 工作站下当前task的点检结果数
      */
     public int getPmWsItemResultCount(@Param("req") SearchPmWsAllCheckFlagReq req);
+    
+    
+    
+    /**
+     * 取得防错放行
+     * @param req
+     * @return 防错放行
+     */
+    public List<AbnormalTaskInfoRes> getPmReleaseList(@Param("req") SearchAbnormalReq req);
+    
+    /**
+     * 取得防错重检
+     * @param req
+     * @return 防错重检
+     */
+    public List<AbnormalTaskInfoRes> getPmRepeatList(@Param("req") SearchAbnormalReq req);
+    
+    /**
+     * 取得防错工作站下的巡检项目和检查结果
+     * @param req
+     * @return 防错工作站下的巡检项目和检查结果
+     */
+    public List<AbnormalItemRes> getPmAbnormalItemList(@Param("req") SearchAbnormalReq req);
+    
+    /**
+     * 取得首件放行
+     * @param req
+     * @return 首件放行
+     */
+    public List<AbnormalTaskInfoRes> getFaReleaseList(@Param("req") SearchAbnormalReq req);
+
+    /**
+     * 取得首件重检
+     * @param req
+     * @return 首件重检
+     */
+    public List<AbnormalTaskInfoRes> getFaRepeatList(@Param("req") SearchAbnormalReq req);
+    
+    /**
+     * 取得首件工作站下的巡检项目
+     * @param req
+     * @return 首件工作站下的巡检项目
+     */
+    public List<AbnormalItemRes> getFaAbnormalItemList(@Param("req") SearchAbnormalReq req);
+    
+    /**
+     * 取得首件检查结果
+     * @param req
+     * @return 首件检查结果
+     */
+    public List<AbnormalItemResultRes> getFaAbnormalItemResultList(@Param("req") SearchAbnormalReq req);
+    
+    
+    
+    
 }

+ 11 - 3
application-facade/src/main/java/com/factory/web/service/fa/FirstArticleService.java

@@ -37,6 +37,7 @@ import com.factory.web.entity.fa.res.FaPlanListForPadRes;
 import com.factory.web.entity.fa.res.FaPlanListRes;
 import com.factory.web.entity.fa.res.FaPlanRes;
 import com.factory.web.entity.fa.res.FaWorkshopNoGoListRes;
+import com.factory.web.entity.fa.res.UserListRes;
 
 /**
  * 首件计划
@@ -217,10 +218,17 @@ public interface FirstArticleService extends IService<BentelerPlan> {
      */
     public List<FirstArticleItemResult> getFaItemResultList(SearchFaItemResultListReq req);
     
+//    /**
+//     * 判断检验结果是否填写完成
+//     * @param req
+//     * @return 判断检验结果是否填写完成
+//     */
+//    public FaAllCheckFlagRes getFaAllCheckFlag(SearchFaAllCheckFlagReq req);
+    
     /**
-     * 判断检验结果是否填写完成
+     * 取得用户列表
      * @param req
-     * @return 判断检验结果是否填写完成
+     * @return 取得用户列表
      */
-    public FaAllCheckFlagRes getFaAllCheckFlag(SearchFaAllCheckFlagReq req);
+    public List<UserListRes> getUserList();
 }

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

@@ -56,6 +56,7 @@ import com.factory.web.entity.fa.req.SearchFaTaskReq;
 import com.factory.web.entity.fa.req.SearchFaWorkshopListForPadReq;
 import com.factory.web.entity.fa.req.SearchFaWorkshopNoGoListReq;
 import com.factory.web.entity.fa.req.SearchFaWsItemResultCountReq;
+import com.factory.web.entity.fa.req.SearchUserListReq;
 import com.factory.web.entity.fa.req.SubmitFaTaskReq;
 import com.factory.web.entity.fa.res.FaAllCheckFlagRes;
 import com.factory.web.entity.fa.res.FaCheckRecordListRes;
@@ -67,6 +68,7 @@ import com.factory.web.entity.fa.res.FaPlanListRes;
 import com.factory.web.entity.fa.res.FaPlanRes;
 import com.factory.web.entity.fa.res.FaTaskRes;
 import com.factory.web.entity.fa.res.FaWorkshopNoGoListRes;
+import com.factory.web.entity.fa.res.UserListRes;
 import com.factory.web.entity.pm.OnsiteApprovalPlan;
 import com.factory.web.entity.pm.res.ApprovalUserRes;
 import com.factory.web.mapper.fa.FirstArticleMapper;
@@ -94,6 +96,8 @@ import com.factory.web.service.pm.PreventMistakeService;
 @Transactional(rollbackFor = Exception.class)
 public class FirstArticleServiceImpl extends ServiceImpl<FirstArticleMapper, BentelerPlan> implements FirstArticleService {
 
+	private static long ROLE_ID = -1;
+	
 	@Autowired
 	private FirstArticleMapper firstArticleMapper;
 
@@ -511,13 +515,27 @@ public class FirstArticleServiceImpl extends ServiceImpl<FirstArticleMapper, Ben
     	
     	List<FirstArticleWorkshop> listRes = firstArticleMapper.getFaWorkshopListForPad(req);
     	
+    	SearchFaItemListForPadReq searchFaItemListReq = null;
     	SearchFaWsItemResultCountReq searchFaWsItemResultCountReq = null;
     	for (FirstArticleWorkshop firstArticleWorkshop : listRes) {
-    		searchFaWsItemResultCountReq = new SearchFaWsItemResultCountReq();
+    		/* 取得点检项目 */
+    		searchFaItemListReq = new SearchFaItemListForPadReq();
+    		searchFaItemListReq.setWorkshopId(firstArticleWorkshop.getId());
+    		searchFaItemListReq.setTypeFlag(req.getTypeFlag());
+        	List<FaItemListForPadRes> listResTemp = firstArticleMapper.getFaItemListForPad(searchFaItemListReq);
+        	/* 计算点检项目数 */
+        	int itemCount = 0;
+        	for (FaItemListForPadRes faItem : listResTemp) {
+        		int start = faItem.getSnoStart();
+        		int end = faItem.getSnoEnd();
+        		
+        		itemCount += (end - start + 1);
+        	}
+    		
+        	searchFaWsItemResultCountReq = new SearchFaWsItemResultCountReq();
     		searchFaWsItemResultCountReq.setFirstArticleTaskId(firstArticleTaskId);
     		searchFaWsItemResultCountReq.setWorkshopId(firstArticleWorkshop.getId());
-    		
-    		int itemCount = firstArticleMapper.getFaWsItemCount(searchFaWsItemResultCountReq);
+//    		int itemCount = firstArticleMapper.getFaWsItemCount(searchFaWsItemResultCountReq);
     		int itemResultCount = firstArticleMapper.getFaWsItemResultCount(searchFaWsItemResultCountReq);
     		if (itemCount == itemResultCount) {
     			firstArticleWorkshop.setAllCheckFlag(1);
@@ -563,22 +581,46 @@ public class FirstArticleServiceImpl extends ServiceImpl<FirstArticleMapper, Ben
     		/* 序号拆分(从1到10,就拆分成10条) */
     		int snoStart = faItemListForPadRes.getSnoStart();
     		int snoEnd = faItemListForPadRes.getSnoEnd();
+    		
+    		FaItemListForPadRes itemInfo = null;
     		for (int i = snoStart; i <= snoEnd; i++) {
-    			faItemListForPadRes.setSno(i);
+    			itemInfo = new FaItemListForPadRes();
+    			
+    			itemInfo.setSno(i);
+    			itemInfo.setId(faItemListForPadRes.getId());    
+    			itemInfo.setWorkshopId(faItemListForPadRes.getWorkshopId());
+    			itemInfo.setItemContent(faItemListForPadRes.getItemContent());    			
+    			itemInfo.setItemStandard(faItemListForPadRes.getItemStandard());
+    			itemInfo.setPrefix(faItemListForPadRes.getPrefix());    			
+    			itemInfo.setSnoStart(faItemListForPadRes.getSnoStart());
+    			itemInfo.setSnoEnd(faItemListForPadRes.getSnoEnd());  
+    			itemInfo.setValFlag(faItemListForPadRes.getValFlag());
+    			itemInfo.setValUp(faItemListForPadRes.getValUp());
+    			itemInfo.setValDown(faItemListForPadRes.getValDown());  
+    			itemInfo.setValOk(faItemListForPadRes.getValOk());    			
+    			itemInfo.setValDesc(faItemListForPadRes.getValDesc());
+    			itemInfo.setLevelInfo(faItemListForPadRes.getLevelInfo());    			
+    			itemInfo.setProductInfo(faItemListForPadRes.getProductInfo());
+    			itemInfo.setToolId(faItemListForPadRes.getToolId());
+    			itemInfo.setToolDesc(faItemListForPadRes.getToolDesc());
+    			itemInfo.setFirstFlag(faItemListForPadRes.getFirstFlag());
+    			itemInfo.setTwoHundredFlag(faItemListForPadRes.getTwoHundredFlag());    			
+    			itemInfo.setCatchFlag(faItemListForPadRes.getCatchFlag());
+    			itemInfo.setValUnit(faItemListForPadRes.getValUnit());
 
     			/* 取得检查结果 */
     			FirstArticleItemResult firstArticleItemResult = firstArticleItemResultService.getOne(Wrappers.<FirstArticleItemResult>lambdaQuery()
     	                .eq(FirstArticleItemResult::getFirstArticleTaskId, firstArticleTaskId)
-    	                .eq(FirstArticleItemResult::getFirstArticleItemId, faItemListForPadRes.getId())
-    	                .eq(FirstArticleItemResult::getSno, faItemListForPadRes.getSno()));
+    	                .eq(FirstArticleItemResult::getFirstArticleItemId, itemInfo.getId())
+    	                .eq(FirstArticleItemResult::getSno, itemInfo.getSno()));
     			if (firstArticleItemResult != null) {
-    				faItemListForPadRes.setResult(firstArticleItemResult.getResult());
-    				faItemListForPadRes.setValCheck(firstArticleItemResult.getVal());
-    				faItemListForPadRes.setValDescCheck(firstArticleItemResult.getValDesc());
-    				faItemListForPadRes.setToolDescCheck(firstArticleItemResult.getToolDesc());
+    				itemInfo.setResult(firstArticleItemResult.getResult());
+    				itemInfo.setValCheck(firstArticleItemResult.getVal());
+    				itemInfo.setValDescCheck(firstArticleItemResult.getValDesc());
+    				itemInfo.setToolDescCheck(firstArticleItemResult.getToolDesc());
     			}
 
-    			listRes.add(faItemListForPadRes);
+    			listRes.add(itemInfo);
     		}
     	}
 
@@ -678,7 +720,7 @@ public class FirstArticleServiceImpl extends ServiceImpl<FirstArticleMapper, Ben
     		if (faTaskInfo == null) {
     			return ResponseBeanBuilder.fail("计划任务不存在!");
     		} else {
-    			if (faTaskInfo.getStatus() == 0) {
+    			if (faTaskInfo.getStatus() == 0 || faTaskInfo.getStatus() == 3) { // 首次提交和重检提交
     				firstArticleTaskId = faTaskInfo.getId();
     			} else {
     				return ResponseBeanBuilder.fail("该计划任务已处理!无需重复提交!");
@@ -735,6 +777,15 @@ public class FirstArticleServiceImpl extends ServiceImpl<FirstArticleMapper, Ben
 				firstArticleApprovalTaskService.save(firstArticleApprovalTask);
 			}
 		}
+		
+		/* 更新中断的操作人 */
+		if (req.getTypeFlag() == 2) {
+			LambdaUpdateWrapper<FirstArticleCalendar> lambdaUpdateWrapper = new LambdaUpdateWrapper<>();
+	        lambdaUpdateWrapper.eq(FirstArticleCalendar::getBentelerPlanId, req.getBentelerPlanId())
+	                           .eq(FirstArticleCalendar::getTypeFlag, 2)
+	                           .set(FirstArticleCalendar::getUserId, req.getUserId());
+	        firstArticleCalendarService.update(lambdaUpdateWrapper);
+		}
 
 		return ResponseBeanBuilder.ok();
 	}
@@ -957,51 +1008,63 @@ public class FirstArticleServiceImpl extends ServiceImpl<FirstArticleMapper, Ben
 		return faItemResultList;
     }
     
-    /**
-     * 判断检验结果是否填写完成
+//    /**
+//     * 判断检验结果是否填写完成
+//     * @param req
+//     * @return 检验结果是否填写完成
+//     */
+//	@Override
+//	public FaAllCheckFlagRes getFaAllCheckFlag(SearchFaAllCheckFlagReq req) {
+//		/* 取得task信息 */
+//    	SearchFaTaskInfoReq searchFaTaskInfoReq = new SearchFaTaskInfoReq();
+//    	searchFaTaskInfoReq.setBentelerPlanId(req.getBentelerPlanId());
+//    	searchFaTaskInfoReq.setTypeFlag(req.getTypeFlag());
+//    	
+//    	FirstArticleTask faTaskInfo = null;
+//    	if (req.getTypeFlag() == 0 || req.getTypeFlag() == 1) { // 0表示首件 1表示200件
+//    		searchFaTaskInfoReq.setUserId(req.getUserId());
+//    		faTaskInfo = this.getFaTaskInfo(searchFaTaskInfoReq);
+//    	} else { // 2表示中断
+//    		/* 取得中断最新的task */
+//    		faTaskInfo = this.getFaTaskInfoCatchLatest(searchFaTaskInfoReq);
+//    	}
+//    	
+//    	long firstArticleTaskId = 0;
+//    	if (faTaskInfo != null) {
+//    		firstArticleTaskId = faTaskInfo.getId();
+//		}
+//
+//		SearchFaPlanReq searchFaPlanReq = new SearchFaPlanReq();
+//		searchFaPlanReq.setBentelerPlanId(req.getBentelerPlanId());
+//		int itemCount = firstArticleMapper.getFaItemCount(searchFaPlanReq);
+//
+//		SearchFaItemResultCountReq searchFaItemResultCountReq = new SearchFaItemResultCountReq();
+//		searchFaItemResultCountReq.setBentelerPlanId(req.getBentelerPlanId());
+//		searchFaItemResultCountReq.setFirstArticleTaskId(firstArticleTaskId);
+//		int itemResultCount = firstArticleMapper.getFaItemResultCount(searchFaItemResultCountReq);
+//
+//		FaAllCheckFlagRes faAllCheckFlagRes = new FaAllCheckFlagRes();
+//		if (itemCount == itemResultCount) {
+//			faAllCheckFlagRes.setAllCheckFlag(1); // 全部完成
+//		} else {
+//			faAllCheckFlagRes.setAllCheckFlag(0); // 没完成
+//		}
+//
+//		return faAllCheckFlagRes;
+//	}
+	
+	
+	/**
+     * 取得用户列表
      * @param req
-     * @return 检验结果是否填写完成
+     * @return 取得用户列表
      */
-	@Override
-	public FaAllCheckFlagRes getFaAllCheckFlag(SearchFaAllCheckFlagReq req) {
-		/* 取得task信息 */
-    	SearchFaTaskInfoReq searchFaTaskInfoReq = new SearchFaTaskInfoReq();
-    	searchFaTaskInfoReq.setBentelerPlanId(req.getBentelerPlanId());
-    	searchFaTaskInfoReq.setTypeFlag(req.getTypeFlag());
-    	
-    	FirstArticleTask faTaskInfo = null;
-    	if (req.getTypeFlag() == 0 || req.getTypeFlag() == 1) { // 0表示首件 1表示200件
-    		searchFaTaskInfoReq.setUserId(req.getUserId());
-    		faTaskInfo = this.getFaTaskInfo(searchFaTaskInfoReq);
-    	} else { // 2表示中断
-    		/* 取得中断最新的task */
-    		faTaskInfo = this.getFaTaskInfoCatchLatest(searchFaTaskInfoReq);
-    	}
-    	
-    	long firstArticleTaskId = 0;
-    	if (faTaskInfo != null) {
-    		firstArticleTaskId = faTaskInfo.getId();
-		}
-
-		SearchFaPlanReq searchFaPlanReq = new SearchFaPlanReq();
-		searchFaPlanReq.setBentelerPlanId(req.getBentelerPlanId());
-		int itemCount = firstArticleMapper.getFaItemCount(searchFaPlanReq);
-
-		SearchFaItemResultCountReq searchFaItemResultCountReq = new SearchFaItemResultCountReq();
-		searchFaItemResultCountReq.setBentelerPlanId(req.getBentelerPlanId());
-		searchFaItemResultCountReq.setFirstArticleTaskId(firstArticleTaskId);
-		int itemResultCount = firstArticleMapper.getFaItemResultCount(searchFaItemResultCountReq);
-
-		FaAllCheckFlagRes faAllCheckFlagRes = new FaAllCheckFlagRes();
-		if (itemCount == itemResultCount) {
-			faAllCheckFlagRes.setAllCheckFlag(1); // 全部完成
-		} else {
-			faAllCheckFlagRes.setAllCheckFlag(0); // 没完成
-		}
-
-		return faAllCheckFlagRes;
-	}
-	
+    public List<UserListRes> getUserList() {
+    	SearchUserListReq searchUserListReq = new SearchUserListReq();
+    	searchUserListReq.setRoleId(ROLE_ID);
+    	List<UserListRes> userList = firstArticleMapper.getUserList(searchUserListReq);
+        return userList;
+    }
 	
 	/**
      * Object转成byte[]

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

@@ -23,6 +23,7 @@ import com.factory.base.entity.aggregates.ResponseBean;
 import com.factory.base.entity.enumPo.PlanType;
 import com.factory.base.entity.po.benteler.BentelerPlan;
 import com.factory.base.util.res.ResponseBeanBuilder;
+import com.factory.web.entity.fa.FirstArticleWorkshop;
 import com.factory.web.entity.pm.OnsiteApprovalPlan;
 import com.factory.web.entity.pm.OnsiteApprovalTask;
 import com.factory.web.entity.pm.OnsiteCalendar;
@@ -44,6 +45,8 @@ import com.factory.web.entity.pm.req.OnsiteCalendarReq;
 import com.factory.web.entity.pm.req.OnsiteItemReq;
 import com.factory.web.entity.pm.req.OnsiteWorkshopReq;
 import com.factory.web.entity.pm.req.PmPlanPauseFlagReq;
+import com.factory.web.entity.pm.req.SearchAbnormalListReq;
+import com.factory.web.entity.pm.req.SearchAbnormalReq;
 import com.factory.web.entity.pm.req.SearchAllWorkshopReq;
 import com.factory.web.entity.pm.req.SearchApprovalUserReq;
 import com.factory.web.entity.pm.req.SearchCheckRecordReq;
@@ -59,6 +62,10 @@ import com.factory.web.entity.pm.req.SearchPmWorkshopNoGoListReq;
 import com.factory.web.entity.pm.req.SearchPmWsAllCheckFlagReq;
 import com.factory.web.entity.pm.req.SearchTaskReq;
 import com.factory.web.entity.pm.req.SearchWorkshopReq;
+import com.factory.web.entity.pm.res.AbnormalItemRes;
+import com.factory.web.entity.pm.res.AbnormalItemResultRes;
+import com.factory.web.entity.pm.res.AbnormalTaskInfoRes;
+import com.factory.web.entity.pm.res.AbnormalWorkshopRes;
 import com.factory.web.entity.pm.res.ApprovalUserRes;
 import com.factory.web.entity.pm.res.PmAllCheckFlagRes;
 import com.factory.web.entity.pm.res.PmAllWorkshopListRes;
@@ -76,6 +83,7 @@ import com.factory.web.entity.pm.res.PmTaskRes;
 import com.factory.web.entity.pm.res.PmWorkshopNoGoListRes;
 import com.factory.web.mapper.pm.PreventMistakeMapper;
 import com.factory.web.service.BentelerPlanService;
+import com.factory.web.service.fa.FirstArticleWorkshopService;
 import com.factory.web.service.pm.OnsiteApprovalPlanService;
 import com.factory.web.service.pm.OnsiteApprovalTaskService;
 import com.factory.web.service.pm.OnsiteCalendarService;
@@ -88,6 +96,8 @@ import com.factory.web.service.pm.OnsiteTitleBlobService;
 import com.factory.web.service.pm.OnsiteWorkshopService;
 import com.factory.web.service.pm.PreventMistakeService;
 
+import io.swagger.annotations.ApiModelProperty;
+
 
 /**
  * 防错计划
@@ -134,6 +144,9 @@ public class PreventMistakeServiceImpl extends ServiceImpl<PreventMistakeMapper,
 
 	@Autowired
 	private OnsiteTaskHisBlobService onsiteTaskHisBlobService;
+	
+	@Autowired
+	private FirstArticleWorkshopService firstArticleWorkshopService;
 
 	/**
 	 * 新建防错计划
@@ -994,6 +1007,129 @@ public class PreventMistakeServiceImpl extends ServiceImpl<PreventMistakeMapper,
 		
 		return pmAllCheckFlagRes;
 	}
+	
+	/**
+	 * 取得异常列表
+	 * 
+	 * @param req
+	 * @return 异常列表
+	 */
+	@Override
+	public ResponseBean<List<AbnormalTaskInfoRes>> getAbnormalList(SearchAbnormalListReq req) {
+		/* 防错 */
+		SearchAbnormalReq searchReq = new SearchAbnormalReq();
+		searchReq.setCheckDate(req.getCheckDate());
+		List<AbnormalTaskInfoRes> pmReleaseList = preventMistakeMapper.getPmReleaseList(searchReq);
+		List<AbnormalTaskInfoRes> pmRepeatList = preventMistakeMapper.getPmRepeatList(searchReq);
+		List<AbnormalTaskInfoRes> pmList = new ArrayList<AbnormalTaskInfoRes>();
+		for (AbnormalTaskInfoRes pmRelease : pmReleaseList) {
+			pmList.add(pmRelease);
+		}
+		for (AbnormalTaskInfoRes pmRepeat : pmRepeatList) {
+			pmList.add(pmRepeat);
+		}
+		for (AbnormalTaskInfoRes pmInfo : pmList) {
+			List<OnsiteWorkshop> onsiteWorkshopList = onsiteWorkshopService.list(Wrappers.<OnsiteWorkshop>lambdaQuery()
+	                .eq(OnsiteWorkshop::getBentelerPlanId, pmInfo.getBentelerPlanId()));
+			
+			List<AbnormalWorkshopRes> abnormalWorkshopList = new ArrayList<AbnormalWorkshopRes>();
+			AbnormalWorkshopRes abnormalWorkshop = null;
+			for (OnsiteWorkshop workshop : onsiteWorkshopList) {
+				abnormalWorkshop = new AbnormalWorkshopRes();
+				abnormalWorkshop.setWorkshopId(workshop.getId());
+				abnormalWorkshop.setWsName(workshop.getWsName());
+				abnormalWorkshopList.add(abnormalWorkshop);
+			}
+			
+			for (AbnormalWorkshopRes abnormalWorkshopInfo : abnormalWorkshopList) {
+				searchReq = new SearchAbnormalReq();
+				searchReq.setWorkshopId(abnormalWorkshopInfo.getWorkshopId());
+				searchReq.setTaskId(pmInfo.getTaskId());
+				List<AbnormalItemRes> abnormalItemList = preventMistakeMapper.getPmAbnormalItemList(searchReq);
+				abnormalWorkshopInfo.setAbnormalItemList(abnormalItemList);
+			}
+			
+			pmInfo.setAbnormalWorkshopList(abnormalWorkshopList);
+		}
+		
+		/* 首件 */
+		searchReq = new SearchAbnormalReq();
+		searchReq.setCheckDate(req.getCheckDate());
+		List<AbnormalTaskInfoRes> faReleaseList = preventMistakeMapper.getFaReleaseList(searchReq);
+		List<AbnormalTaskInfoRes> faRepeatList = preventMistakeMapper.getFaRepeatList(searchReq);
+		
+		List<AbnormalTaskInfoRes> faList = new ArrayList<AbnormalTaskInfoRes>();
+		for (AbnormalTaskInfoRes faRelease : faReleaseList) {
+			faList.add(faRelease);
+		}
+		for (AbnormalTaskInfoRes faRepeat : faRepeatList) {
+			faList.add(faRepeat);
+		}
+		
+		for (AbnormalTaskInfoRes faInfo : faList) {
+			List<FirstArticleWorkshop> firstArticleWorkshopList = firstArticleWorkshopService.list(Wrappers.<FirstArticleWorkshop>lambdaQuery()
+	                .eq(FirstArticleWorkshop::getBentelerPlanId, faInfo.getBentelerPlanId()));
+
+			List<AbnormalWorkshopRes> abnormalWorkshopList = new ArrayList<AbnormalWorkshopRes>();
+			AbnormalWorkshopRes abnormalWorkshop = null;
+			for (FirstArticleWorkshop workshop : firstArticleWorkshopList) {
+				abnormalWorkshop = new AbnormalWorkshopRes();
+				abnormalWorkshop.setWorkshopId(workshop.getId());
+				abnormalWorkshop.setWsName(workshop.getWsName());
+				abnormalWorkshopList.add(abnormalWorkshop);
+			}
+			
+			for (AbnormalWorkshopRes abnormalWorkshopInfo : abnormalWorkshopList) {
+				searchReq = new SearchAbnormalReq();
+				searchReq.setWorkshopId(abnormalWorkshopInfo.getWorkshopId());
+				List<AbnormalItemRes> abnormalItemList = preventMistakeMapper.getFaAbnormalItemList(searchReq);
+				
+				for (AbnormalItemRes abnormalItemInfo : abnormalItemList) {
+					List<AbnormalItemResultRes> firstItemResultList = this.getAbnormalItemResultList(faInfo.getTaskId(), abnormalItemInfo.getItemId(), 0);
+					abnormalItemInfo.setFirstItemResultList(firstItemResultList);
+					
+					List<AbnormalItemResultRes> twoHundredItemResultList = this.getAbnormalItemResultList(faInfo.getTaskId(), abnormalItemInfo.getItemId(), 1);
+					abnormalItemInfo.setTwoHundredItemResultList(twoHundredItemResultList);
+
+					List<AbnormalItemResultRes> catchItemResultList = this.getAbnormalItemResultList(faInfo.getTaskId(), abnormalItemInfo.getItemId(), 2);
+					abnormalItemInfo.setCatchItemResultList(catchItemResultList);
+				}
+
+				abnormalWorkshopInfo.setAbnormalItemList(abnormalItemList);
+			}
+
+			faInfo.setAbnormalWorkshopList(abnormalWorkshopList);
+		}
+		
+		List<AbnormalTaskInfoRes> abnormalList = new ArrayList<AbnormalTaskInfoRes>();
+		for (AbnormalTaskInfoRes pm : pmList) {
+			abnormalList.add(pm);
+		}
+		for (AbnormalTaskInfoRes fa : faList) {
+			abnormalList.add(fa);
+		}
+
+		return ResponseBeanBuilder.ok(abnormalList, Function.identity());
+	}
+	
+	
+
+	/**
+	 * 取得检查结果
+	 * 
+	 * @param taskId
+	 * @param itemId
+	 * @param typeFlag 0表示首件 1表示200件 2表示中断
+	 * @return 检查结果
+	 */
+	private List<AbnormalItemResultRes> getAbnormalItemResultList(long taskId, long itemId, int typeFlag) {
+		SearchAbnormalReq searchReq = new SearchAbnormalReq();
+		searchReq.setTaskId(taskId);
+		searchReq.setItemId(itemId);
+		searchReq.setTypeFlag(typeFlag);
+		List<AbnormalItemResultRes> abnormalItemResultList = preventMistakeMapper.getFaAbnormalItemResultList(searchReq);
+	    return abnormalItemResultList;
+	}
 
 
     /**

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

@@ -16,6 +16,7 @@ import com.factory.web.entity.pm.req.AddPmPlanReq;
 import com.factory.web.entity.pm.req.EditItemResultListReq;
 import com.factory.web.entity.pm.req.EditPmPlanReq;
 import com.factory.web.entity.pm.req.PmPlanPauseFlagReq;
+import com.factory.web.entity.pm.req.SearchAbnormalListReq;
 import com.factory.web.entity.pm.req.SearchAllWorkshopReq;
 import com.factory.web.entity.pm.req.SearchApprovalUserReq;
 import com.factory.web.entity.pm.req.SearchItemListReq;
@@ -29,6 +30,7 @@ import com.factory.web.entity.pm.req.SearchPmPlanReq;
 import com.factory.web.entity.pm.req.SearchPmWorkshopNoGoListReq;
 import com.factory.web.entity.pm.req.SearchTaskReq;
 import com.factory.web.entity.pm.req.SearchWorkshopReq;
+import com.factory.web.entity.pm.res.AbnormalTaskInfoRes;
 import com.factory.web.entity.pm.res.ApprovalUserRes;
 import com.factory.web.entity.pm.res.PmAllCheckFlagRes;
 import com.factory.web.entity.pm.res.PmAllWorkshopListRes;
@@ -295,5 +297,13 @@ public interface PreventMistakeService extends IService<BentelerPlan> {
      * @return 判断检验结果是否填写完成
      */
     public PmAllCheckFlagRes getPmAllCheckFlag(SearchPmAllCheckFlagReq req);
+    
+    /**
+	 * 取得异常列表
+	 * 
+	 * @param req
+	 * @return 异常列表
+	 */
+	public ResponseBean<List<AbnormalTaskInfoRes>> getAbnormalList(SearchAbnormalListReq req);
 
 }

+ 6 - 0
application-facade/src/main/java/com/factory/wx/entity/req/AbnormalPlanReq.java

@@ -24,4 +24,10 @@ public class AbnormalPlanReq {
 
     @ApiModelProperty(value = "异常类型 1已重检 2已放行")
     private int abnormalType;
+
+    @ApiModelProperty(value = "计划列表页号")
+    private int page;
+
+    @ApiModelProperty(value = "计划列表每页数量")
+    private int size;
 }

+ 5 - 4
application-facade/src/main/java/com/factory/wx/entity/req/PlanApprovalReq.java

@@ -23,9 +23,10 @@ public class PlanApprovalReq {
 
     @ApiModelProperty(value = "计划Id")
     private Long planId;
-    /**
-     * 默认0,通过1,不通过2
-     */
-    @ApiModelProperty(value = "审批状态")
+
+    @ApiModelProperty(value = "计划类型")
+    private Long checkType;
+
+    @ApiModelProperty(value = "审批状态 默认0,通过1,不通过2")
     private int status;
 }

+ 10 - 3
application-facade/src/main/java/com/factory/wx/entity/res/PlanApprovalDetailRes.java

@@ -1,5 +1,7 @@
 package com.factory.wx.entity.res;
 
+import com.factory.web.entity.fa.FirstArticleCalendar;
+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;
@@ -10,7 +12,6 @@ import lombok.Data;
 import lombok.NoArgsConstructor;
 
 import java.time.LocalDate;
-import java.util.Date;
 import java.util.List;
 
 /**
@@ -36,11 +37,17 @@ public class PlanApprovalDetailRes {
     private LocalDate effectiveDate;
     @ApiModelProperty(value = "表头信息")
     private OnsiteTitle titleInfo;
+    @ApiModelProperty(value = "当前用户审批级别")
+    private String approvalLevel;
+
     @ApiModelProperty(value = "防错计划基本信息")
     private List<OnsiteCalendar> onsiteCalendars;
     @ApiModelProperty(value = "防错计划工作站点检")
     private List<OnsiteWorkshop> onsiteWorkshops;
-    @ApiModelProperty(value = "当前用户审批级别")
-    private String approvalLevel;
+
+    @ApiModelProperty(value = "首件计划基本信息")
+    private List<FirstArticleCalendar> firstArticleCalendars;
+    @ApiModelProperty(value = "首件计划工作站")
+    private List<FirstArticleWorkshop> firstArticleWorkshops;
 
 }

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

@@ -33,13 +33,22 @@ public interface PlanApprovalService {
      */
     PageBean<BentelerPlan> getApprovalListByPage(PlanPageReq planPageReq);
 
+
+    /**
+     * 获取首件审批计划详情
+     *
+     * @param planInfoReq
+     * @return
+     */
+    PlanApprovalDetailRes getApprovalDetailInitial(PlanInfoReq planInfoReq);
+
     /**
-     * 获取审批计划详情
+     * 获取防错审批计划详情
      *
      * @param planInfoReq
      * @return
      */
-    PlanApprovalDetailRes getApprovalDetail(PlanInfoReq planInfoReq);
+    PlanApprovalDetailRes getApprovalDetailPM(PlanInfoReq planInfoReq);
 
     /**
      * 计划审批
@@ -48,5 +57,4 @@ public interface PlanApprovalService {
      * @return
      */
     ResponseBean approvalOperate(PlanApprovalReq planApprovalReq);
-
 }

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

@@ -33,12 +33,12 @@ public interface PlanReminderService {
     PageBean<BentelerPlan> getReminderListByPage(PlanPageReq planPageReq);
 
     /**
-     * 计划提醒详情
+     * 防错计划提醒详情
      *
      * @param planInfoReq
      * @return
      */
-    PlanReminderDetailRes getReminderDetail(PlanInfoReq planInfoReq);
+    PlanReminderDetailRes getReminderDetailPM(PlanInfoReq planInfoReq);
 
     /**
      * 确认已提醒
@@ -46,4 +46,11 @@ public interface PlanReminderService {
      * @param planInfoReq
      */
     void confirmReminder(PlanInfoReq planInfoReq);
+
+    /**
+     * 首件计划提醒详情
+     * @param planInfoReq
+     * @return
+     */
+    PlanReminderDetailRes getReminderDetail(PlanInfoReq planInfoReq);
 }

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

@@ -1,5 +1,6 @@
 package com.factory.wx.service.impl;
 
+import com.factory.base.util.res.ResponseBeanBuilder;
 import com.factory.wx.entity.req.AbnormalPlanReq;
 import com.factory.wx.entity.res.AbnormalPlanRes;
 import com.factory.wx.mapper.AbnormalStatisticsMapper;
@@ -7,7 +8,10 @@ import com.factory.wx.service.AbnormalStatisticsService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
 import java.util.ArrayList;
+import java.util.Date;
 import java.util.List;
 
 /**
@@ -28,14 +32,36 @@ public class AbnormalStatisticsServiceImpl implements AbnormalStatisticsService
      */
     @Override
     public List<AbnormalPlanRes> getExceptionPlansByMonth(AbnormalPlanReq abnormalPlanReq) {
+        String month = getMonth(abnormalPlanReq);
+        abnormalPlanReq.setMonth(month);
+
         List<AbnormalPlanRes> releasedAbnormalPlans = new ArrayList<>();
         if (abnormalPlanReq.getAbnormalType() == 1) {
-            abnormalStatisticsMapper.getReleasedAbnormalPlans(abnormalPlanReq);
+            releasedAbnormalPlans.addAll(abnormalStatisticsMapper.getReleasedAbnormalPlans(abnormalPlanReq));
         }
         if (abnormalPlanReq.getAbnormalType() == 2) {
-            abnormalStatisticsMapper.getRecheckedAbnormalPlans(abnormalPlanReq);
+            releasedAbnormalPlans.addAll(abnormalStatisticsMapper.getRecheckedAbnormalPlans(abnormalPlanReq));
         }
         return releasedAbnormalPlans;
     }
 
+    /**
+     * 验证日期格式
+     *
+     * @param abnormalPlanReq 默认2021-06
+     * @return
+     */
+    private String getMonth(AbnormalPlanReq abnormalPlanReq) {
+        String month = "2021-06";
+        try {
+            SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM");
+            Date date = simpleDateFormat.parse(abnormalPlanReq.getMonth());
+            month = simpleDateFormat.format(date);
+        } catch (ParseException e) {
+            e.printStackTrace();
+            ResponseBeanBuilder.fail("年月格式错误");
+        }
+        return month;
+    }
+
 }

+ 50 - 1
application-facade/src/main/java/com/factory/wx/service/impl/PlanApprovalServiceImpl.java

@@ -11,9 +11,15 @@ 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.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.pm.PreventMistakeService;
 import com.factory.wx.entity.req.PlanApprovalReq;
@@ -68,6 +74,12 @@ public class PlanApprovalServiceImpl implements PlanApprovalService {
     private UserInfoMapper userInfoMapper;
     @Autowired
     private PreventMistakeService preventMistakeService;
+    @Autowired
+    private FirstArticleCalendarMapper firstArticleCalendarMapper;
+    @Autowired
+    private FirstArticleWorkshopMapper firstArticleWorkshopMapper;
+    @Autowired
+    private FirstArticleItemMapper firstArticleItemMapper;
 
 
     /**
@@ -111,6 +123,42 @@ public class PlanApprovalServiceImpl implements PlanApprovalService {
         return PageBean.<BentelerPlan>builder().row(bentelerPlanIPage.getRecords()).total(bentelerPlanIPage.getTotal()).page(bentelerPlanIPage.getPages()).build();
     }
 
+    /**
+     * 获取审批计划详情-首件
+     *
+     * @param planInfoReq
+     * @return
+     */
+    @Override
+    public PlanApprovalDetailRes getApprovalDetailInitial(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());
+        });
+        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
+        OnsiteTitle title = preventMistakeService.getTitle(planInfoReq.getPlanId());
+        return PlanApprovalDetailRes.builder()
+                .planId(bentelerPlan.getId())
+                .planName(bentelerPlan.getName())
+                .effectiveDate(bentelerPlan.getEffectiveDate())
+                .usersName(usersName)
+                .titleInfo(title)
+                .firstArticleCalendars(firstArticleCalendarList)
+                .firstArticleWorkshops(firstArticleWorkshopList)
+                .build();
+    }
+
     /**
      * 获取审批计划详情-防错
      *
@@ -118,7 +166,7 @@ public class PlanApprovalServiceImpl implements PlanApprovalService {
      * @return
      */
     @Override
-    public PlanApprovalDetailRes getApprovalDetail(PlanInfoReq planInfoReq) {
+    public PlanApprovalDetailRes getApprovalDetailPM(PlanInfoReq planInfoReq) {
         BentelerPlan bentelerPlan = bentelerPlanMapper.selectById(planInfoReq.getPlanId());
         List<OnsiteCalendar> onsiteCalendarList = onsiteCalendarMapper.selectList(Wrappers.<OnsiteCalendar>lambdaQuery()
                 .eq(OnsiteCalendar::getBentelerPlanId, planInfoReq.getPlanId()));
@@ -131,6 +179,7 @@ public class PlanApprovalServiceImpl implements PlanApprovalService {
 
         //获取title
         OnsiteTitle title = preventMistakeService.getTitle(planInfoReq.getPlanId());
+        title.setUploadAttachmentId(null);//去除附件
 
         List<OnsiteWorkshop> onsiteWorkshopList = onsiteWorkshopMapper.selectList(Wrappers.<OnsiteWorkshop>lambdaQuery()
                 .eq(OnsiteWorkshop::getBentelerPlanId, planInfoReq.getPlanId()));

+ 13 - 2
application-facade/src/main/java/com/factory/wx/service/impl/PlanReminderServiceImpl.java

@@ -104,13 +104,13 @@ public class PlanReminderServiceImpl implements PlanReminderService {
     }
 
     /**
-     * 提醒详情
+     * 防错提醒详情
      *
      * @param planInfoReq
      * @return
      */
     @Override
-    public PlanReminderDetailRes getReminderDetail(PlanInfoReq planInfoReq) {
+    public PlanReminderDetailRes getReminderDetailPM(PlanInfoReq planInfoReq) {
         BentelerPlan bentelerPlan = bentelerPlanMapper.selectById(planInfoReq.getPlanId());
         List<OnsiteCalendar> onsiteCalendarList = onsiteCalendarMapper.selectList(Wrappers.<OnsiteCalendar>lambdaQuery()
                 .eq(OnsiteCalendar::getBentelerPlanId, planInfoReq.getPlanId()));
@@ -145,4 +145,15 @@ public class PlanReminderServiceImpl implements PlanReminderService {
         reminderMapper.confirmReminder(planInfoReq);
     }
 
+    /**
+     * 首件提醒
+     *
+     * @param planInfoReq
+     * @return
+     */
+    @Override
+    public PlanReminderDetailRes getReminderDetail(PlanInfoReq planInfoReq) {
+        return null;
+    }
+
 }

+ 5 - 5
application-facade/src/main/resources/mapper/AbnormalStatisticsMapper.xml

@@ -43,8 +43,8 @@
     <select id="getRecheckedAbnormalPlans" parameterType="com.factory.wx.entity.req.AbnormalPlanReq"
             resultType="com.factory.wx.entity.res.AbnormalPlanRes">
         SELECT DISTINCT
-            bp.id,
-            bp.`name`,
+            bp.id AS plan_id,
+            bp.`name` AS plan_name,
             bp.plan_type
         FROM
             onsite_task_his_blob othb,
@@ -58,11 +58,11 @@
         <if test="name != ''">
             AND bp.`name` LIKE CONCAT('%',#{name},'%')
         </if>
-        AND ot.task_time LIKE CONCAT(#{month},'%');
+        AND ot.task_time LIKE CONCAT(#{month},'%')
         UNION
         SELECT DISTINCT
-            bp.id,
-            bp.`name`,
+            bp.id AS plan_id,
+            bp.`name` AS plan_name,
             bp.plan_type
         FROM
             first_article_task_his_blob othb,

+ 47 - 4
application-facade/src/main/resources/mapper/FirstArticleMapper.xml

@@ -55,7 +55,7 @@
 			<if test="req.bentelerPlanName != null and req.bentelerPlanName != ''">
 		    AND bp.`name` LIKE CONCAT('%', #{req.bentelerPlanName}, '%')
 		    </if>
-		    <if test="req.planStatus != null and req.planStatus != ''">
+		    <if test="req.planStatus != null">
 		    AND ps.plan_status = #{req.planStatus}
 		    </if>
 		GROUP BY
@@ -64,11 +64,11 @@
     
     <!--取得Pad端首件计划列表 -->
     <select id="getFaPlanListForPad" resultType="com.factory.web.entity.fa.res.FaPlanListForPadRes">
-        SELECT fat.id AS onsite_task_id,
+        SELECT fat.id AS first_article_task_id,
 		       fat.`status`,
 			   fac.benteler_plan_id,
 			   bp.`name` AS benteler_plan_name,
-			   fac.id AS onsite_calendar_id,
+			   fac.id AS first_article_calendar_id,
 			   fac.type_flag
 		FROM   first_article_task fat,
 		       first_article_calendar fac,
@@ -85,7 +85,7 @@
 		<if test="req.type == 2"> <!-- 待重检(不放行) -->
 		AND    fat.`status` = 3
 		</if>
-		<if test="req.typeFlag != null and req.typeFlag != ''"><!-- 0表示首件 1表示200件 -->
+		<if test="req.typeFlag != null"><!-- 0表示首件 1表示200件 -->
 		AND    fac.type_flag = #{req.typeFlag}
 		</if>
 		AND    TO_DAYS(fat.task_time) = TO_DAYS(NOW())
@@ -268,6 +268,7 @@
     </select>
 
     <!-- 取得首件、200件、中断每天的点检记录 -->
+    <!-- 
     <select id="getFaItemResultList" resultType="com.factory.web.entity.fa.FirstArticleItemResult">
         SELECT fair.sno,
 			   fair.result,
@@ -284,6 +285,33 @@
 		AND    DATE_FORMAT(fat.task_time, '%Y-%m-%d') = #{req.checkDate}
 		AND    fac.type_flag = #{req.typeFlag}
     </select>
+     -->
+    <select id="getFaItemResultList" resultType="com.factory.web.entity.fa.FirstArticleItemResult">
+        SELECT fair.sno,
+			   fair.result,
+			   fair.val,
+			   fair.val_desc,
+			   fair.prefix,
+			   fair.tool_desc
+		FROM   first_article_item_result fair,
+			   first_article_task fat,
+			   first_article_item fai
+		WHERE  fair.first_article_task_id = fat.id
+		AND    fair.first_article_item_id = fai.id
+		AND    fair.first_article_item_id = #{req.firstArticleItemId}
+		AND    DATE_FORMAT(fat.task_time, '%Y-%m-%d') = #{req.checkDate}
+		<if test="req.typeFlag == 0"> <!-- 首件 -->
+		AND    fai.first_flag = 1 
+		</if>
+		<if test="req.typeFlag == 1"> <!-- 200件 -->
+		AND    fai.two_hundred_flag = 1 
+		</if>
+		<if test="req.typeFlag == 2"> <!-- 中断 -->
+		AND    fai.catch_flag = 1
+		</if>
+    </select>
+    
+    
     
     <!-- 取得计划下的点检项目数 -->
 	<select id="getFaItemCount" resultType="int">
@@ -325,4 +353,19 @@
     
     
     
+    <!--取得用户列表 -->
+    <select id="getUserList" resultType="com.factory.web.entity.fa.res.UserListRes">
+        SELECT  uu.id,
+		        uu.username,
+		        uu.`name`
+		FROM    us_user uu,
+		        us_user_role uur
+		WHERE   uu.id = uur.user_id
+		AND     uu.`lock` = 0
+		AND     uu.del_flag = 0
+		<if test="req.roleId != -1">
+		AND     uur.role_id = #{req.roleId}
+		</if>
+    </select>
+    
 </mapper>

+ 184 - 1
application-facade/src/main/resources/mapper/PreventMistakeMapper.xml

@@ -55,7 +55,7 @@
 			<if test="req.bentelerPlanName != null and req.bentelerPlanName != ''">
 		    AND bp.`name` LIKE CONCAT('%', #{req.bentelerPlanName}, '%')
 		    </if>
-		    <if test="req.planStatus != null and req.planStatus != ''">
+		    <if test="req.planStatus != null">
 		    AND ps.plan_status = #{req.planStatus}
 		    </if>
 		GROUP BY
@@ -354,4 +354,187 @@
 		AND     oi.workshop_id = #{req.workshopId}
 		AND     oir.onsite_task_id = #{req.onsiteTaskId}
 	</select>
+	
+	
+	
+	
+	
+	<!-- 取得防错放行 -->
+    <select id="getPmReleaseList" resultType="com.factory.web.entity.pm.res.AbnormalTaskInfoRes">
+        SELECT  oc.benteler_plan_id,
+		        bp.`name` AS benteler_plan_name,
+				bp.plan_type,
+				oat.approval_level,
+				uu.`name` AS person,
+				1 AS method,
+				oat.reason,
+				oat.updated_time,
+				ot.`status`,
+				oc.type_flag,
+				ot.id AS task_id
+		FROM    onsite_task ot,
+		        onsite_calendar oc,
+				benteler_plan bp,
+				onsite_approval_task oat,
+				us_user uu
+		WHERE   ot.onsite_calendar_id = oc.id
+		AND     oc.benteler_plan_id = bp.id
+		AND     ot.id = oat.onsite_task_id
+		AND     oat.approval_user_id = uu.id
+		AND     oat.`status` = 1
+		AND     ot.`status` = 2
+		AND     DATE_FORMAT(ot.task_time, '%Y-%m-%d') = #{req.checkDate}
+    </select>
+    
+    <!-- 取得防错重检 -->
+    <select id="getPmRepeatList" resultType="com.factory.web.entity.pm.res.AbnormalTaskInfoRes">
+        SELECT  oc.benteler_plan_id,
+        		bp.`name` AS benteler_plan_name,
+			    bp.plan_type,
+				uu.`name` AS person,
+				2 AS method,
+				ot.`status`,
+				oc.type_flag,
+				ot.id AS task_id
+		FROM    onsite_task ot,
+		        onsite_calendar oc,
+				benteler_plan bp,
+				us_user uu,
+		        (
+				SELECT DISTINCT othb.onsite_task_id
+				FROM   onsite_task_his_blob othb,
+					   onsite_task ot
+				WHERE  othb.onsite_task_id = ot.id
+				) r
+		WHERE   ot.id = r.onsite_task_id
+		AND     ot.onsite_calendar_id = oc.id
+		AND     oc.benteler_plan_id = bp.id
+		AND     oc.user_id = uu.id
+		AND     DATE_FORMAT(ot.task_time, '%Y-%m-%d') = #{req.checkDate}
+    </select>
+    
+    <!-- 取得防错工作站下的巡检项目和检查结果 -->
+    <select id="getPmAbnormalItemList" resultType="com.factory.web.entity.pm.res.AbnormalItemRes">
+        SELECT  oir.onsite_item_id AS item_id,
+		        oi.item_content,
+				oir.result
+		FROM    onsite_item_result oir,
+		        onsite_item oi
+		WHERE   oir.onsite_item_id = oi.id
+		AND     oir.onsite_task_id = #{req.taskId}
+		AND     oi.workshop_id = #{req.workshopId}
+    </select>
+    
+    
+    
+    
+    <!-- 取得首件放行 -->
+    <select id="getFaReleaseList" resultType="com.factory.web.entity.pm.res.AbnormalTaskInfoRes">
+       SELECT   fac.benteler_plan_id,
+        		bp.`name` AS benteler_plan_name,
+			    bp.plan_type,
+				faat.approval_level,
+				uu.`name` AS person,
+				1 AS method,
+				faat.reason,
+				faat.updated_time,
+				fat.`status`,
+				fac.type_flag,
+				fat.id AS task_id
+		FROM    first_article_task fat,
+		        first_article_calendar fac,
+				benteler_plan bp,
+				first_article_approval_task faat,
+				us_user uu
+		WHERE   fat.first_article_calendar_id = fac.id
+		AND     fac.benteler_plan_id = bp.id
+		AND     fat.id = faat.first_article_task_id
+		AND     faat.approval_user_id = uu.id
+		AND     faat.`status` = 1
+		AND     fat.`status` = 2
+		AND     DATE_FORMAT(fat.task_time, '%Y-%m-%d') = #{req.checkDate}
+    </select>
+    
+    <!-- 取得首件重检 -->
+    <select id="getFaRepeatList" resultType="com.factory.web.entity.pm.res.AbnormalTaskInfoRes">
+        SELECT  fac.benteler_plan_id,
+        		bp.`name` AS benteler_plan_name,
+			    bp.plan_type,
+				uu.`name` AS person,
+				2 AS method,
+				fat.`status`,
+				fac.type_flag,
+				fat.id AS task_id
+		FROM    first_article_task fat,
+		        first_article_calendar fac,
+				benteler_plan bp,
+				us_user uu,
+       		    (
+				SELECT DISTINCT fathb.first_article_task_id
+				FROM   first_article_task_his_blob fathb,
+					   first_article_task fat
+				WHERE  fathb.first_article_task_id = fat.id
+				) r
+		WHERE   fat.id = r.first_article_task_id
+		AND     fat.first_article_calendar_id = fac.id
+		AND     fac.benteler_plan_id = bp.id
+		AND     fac.user_id = uu.id
+		AND     DATE_FORMAT(fat.task_time, '%Y-%m-%d') = #{req.checkDate}
+    </select>
+    
+    <!-- 取得首件工作站下的巡检项目 -->
+    <select id="getFaAbnormalItemList" resultType="com.factory.web.entity.pm.res.AbnormalItemRes">
+        SELECT
+			fai.id AS item_id,
+			fai.item_content,
+			fai.item_standard,
+			fai.prefix,
+			fai.sno_start,
+			fai.sno_end,
+			fai.val_flag,
+			fai.val_up,
+			fai.val_down,
+			fai.val_ok,
+			fai.val_desc,
+			fai.level_info,
+			fai.product_info,
+			fai.tool_id,
+			fai.tool_desc,
+			fai.first_flag,
+			fai.two_hundred_flag,
+			fai.catch_flag,
+			fai.val_unit 
+		FROM
+			first_article_item fai 
+		WHERE
+			fai.workshop_id = #{req.workshopId}
+    </select>
+    
+    <!-- 取得首件检查结果 -->
+    <select id="getFaAbnormalItemResultList" resultType="com.factory.web.entity.pm.res.AbnormalItemResultRes">
+        SELECT
+			fair.prefix,
+			fair.sno,
+			fair.val,
+			fair.val_desc,
+			fair.result,
+			fair.tool_desc 
+		FROM
+			first_article_item_result fair,
+			first_article_item fai
+		WHERE
+		    fair.first_article_item_id = fai.id
+			AND fair.first_article_task_id = #{req.taskId}
+			AND fair.first_article_item_id = #{req.itemId}
+			<if test="req.typeFlag == 0"> <!-- 首件 -->
+			AND fai.first_flag = 1 
+			</if>
+			<if test="req.typeFlag == 1"> <!-- 200件 -->
+			AND fai.two_hundred_flag = 1 
+			</if>
+			<if test="req.typeFlag == 2"> <!-- 中断 -->
+			AND fai.catch_flag = 1
+			</if>
+    </select>
+    
 </mapper>