Jelajahi Sumber

整理代码

孙伟 3 tahun lalu
induk
melakukan
b96b04ecf0
28 mengubah file dengan 1145 tambahan dan 390 penghapusan
  1. 26 12
      application-facade/pom.xml
  2. 14 4
      application-facade/src/main/java/com/factory/controller/wx/PlanPassController.java
  3. 10 2
      application-facade/src/main/java/com/factory/controller/wx/StatisticsController.java
  4. 29 20
      application-facade/src/main/java/com/factory/web/entity/pm/res/AbnormalItemRes.java
  5. 27 0
      application-facade/src/main/java/com/factory/wx/entity/req/AbnormalDetailReq.java
  6. 31 0
      application-facade/src/main/java/com/factory/wx/entity/req/SearchPlanPassReq.java
  7. 47 0
      application-facade/src/main/java/com/factory/wx/entity/res/AbnormalDetailRes.java
  8. 4 3
      application-facade/src/main/java/com/factory/wx/entity/res/PlanPassDetailRes.java
  9. 105 0
      application-facade/src/main/java/com/factory/wx/entity/res/PlanPassItemRes.java
  10. 41 0
      application-facade/src/main/java/com/factory/wx/entity/res/PlanPassItemResultRes.java
  11. 0 3
      application-facade/src/main/java/com/factory/wx/entity/res/PlanPassRes.java
  12. 42 0
      application-facade/src/main/java/com/factory/wx/entity/res/PlanPassTaskRes.java
  13. 30 0
      application-facade/src/main/java/com/factory/wx/entity/res/PlanPassWorkshopRes.java
  14. 17 0
      application-facade/src/main/java/com/factory/wx/mapper/AbnormalStatisticsMapper.java
  15. 45 8
      application-facade/src/main/java/com/factory/wx/mapper/PlanPassMapper.java
  16. 11 1
      application-facade/src/main/java/com/factory/wx/service/AbnormalStatisticsService.java
  17. 0 8
      application-facade/src/main/java/com/factory/wx/service/PlanPassService.java
  18. 1 10
      application-facade/src/main/java/com/factory/wx/service/PlanReminderService.java
  19. 7 0
      application-facade/src/main/java/com/factory/wx/service/WxPlanService.java
  20. 192 0
      application-facade/src/main/java/com/factory/wx/service/impl/AbnormalStatisticsServiceImpl.java
  21. 2 0
      application-facade/src/main/java/com/factory/wx/service/impl/PlanApprovalServiceImpl.java
  22. 164 151
      application-facade/src/main/java/com/factory/wx/service/impl/PlanPassServiceImpl.java
  23. 3 44
      application-facade/src/main/java/com/factory/wx/service/impl/PlanReminderServiceImpl.java
  24. 3 2
      application-facade/src/main/java/com/factory/wx/service/impl/WxPlanServiceImpl.java
  25. 53 0
      application-facade/src/main/resources/mapper/AbnormalStatisticsMapper.xml
  26. 171 53
      application-facade/src/main/resources/mapper/PlanPassMapper.xml
  27. 68 67
      application-facade/src/main/resources/mapper/PreventMistakeMapper.xml
  28. 2 2
      common-config/src/main/java/com/factory/config/log/RequestLogAspect.java

+ 26 - 12
application-facade/pom.xml

@@ -38,18 +38,6 @@
             <artifactId>hutool-all</artifactId>
         </dependency>
 
-<!--        <dependency>-->
-<!--            <groupId>org.springframework</groupId>-->
-<!--            <artifactId>spring-messaging</artifactId>-->
-<!--            <version>5.3.8</version>-->
-<!--        </dependency>-->
-
-<!--        <dependency>-->
-<!--            <groupId>org.springframework</groupId>-->
-<!--            <artifactId>spring-websocket</artifactId>-->
-<!--            <version>5.3.8</version>-->
-<!--        </dependency>-->
-
         <dependency>
             <groupId>org.springframework.boot</groupId>
             <artifactId>spring-boot-starter-websocket</artifactId>
@@ -118,6 +106,32 @@
 
     </dependencies>
 
+    <profiles>
+        <!-- 测试环境,默认激活 -->
+        <profile>
+            <id>dev</id>
+            <properties>
+                <env>dev</env>
+            </properties>
+            <activation>
+                <activeByDefault>true</activeByDefault><!--默认启用的是测试环境配置 -->
+            </activation>
+        </profile>
+        <!-- 测试环境,默认激活 -->
+        <profile>
+            <id>test</id>
+            <properties>
+                <env>test</env>
+            </properties>
+        </profile>
+        <!-- 生产环境 -->
+        <profile>
+            <id>release</id>
+            <properties>
+                <env>release</env>
+            </properties>
+        </profile>
+    </profiles>
     <build>
         <finalName>application-web</finalName>
         <plugins>

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

@@ -5,12 +5,11 @@ import com.factory.base.util.res.ResponseBeanBuilder;
 import com.factory.web.entity.fa.req.SearchFaPlanReq;
 import com.factory.web.entity.fa.res.FaPlanRes;
 import com.factory.web.service.fa.FirstArticleService;
-import com.factory.wx.entity.req.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.req.*;
+import com.factory.wx.entity.res.AbnormalDetailRes;
 import com.factory.wx.entity.res.PlanPassDetailRes;
 import com.factory.wx.entity.res.PlanPassRes;
+import com.factory.wx.service.AbnormalStatisticsService;
 import com.factory.wx.service.PlanPassService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
@@ -42,6 +41,8 @@ public class PlanPassController {
     private PlanPassService planPassService;
     @Autowired
     private FirstArticleService firstArticleService;
+    @Autowired
+    private AbnormalStatisticsService abnormalStatisticsService;
 
     @ApiOperation(value = "计划放行列表")
     @PostMapping("/list")
@@ -59,6 +60,15 @@ public class PlanPassController {
         return ResponseBeanBuilder.ok(planPassDetailRes);
     }
 
+//    @ApiOperation(value = "计划放行详情-防错")
+//    @PostMapping("/detail/pm")
+//    public ResponseBean<AbnormalDetailRes> passDetailPM(@RequestBody PlanPassReq planPassReq) {
+//        AbnormalDetailReq abnormalDetailReq = new AbnormalDetailReq();
+//        abnormalDetailReq.setPlanId(planPassReq.getPlanId());
+//        abnormalDetailReq.setCheckType((long) planPassReq.getPlanType());
+//        AbnormalDetailRes abnormalDetailRes = abnormalStatisticsService.getAbnormalDetail(planPassReq);
+//        return ResponseBeanBuilder.ok(abnormalDetailRes);
+//    }
     @ApiOperation(value = "计划放行详情-防错")
     @PostMapping("/detail/pm")
     public ResponseBean<PlanPassDetailRes> passDetailPM(@RequestBody PlanPassReq planPassReq) {

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

@@ -4,9 +4,10 @@ import com.factory.base.entity.aggregates.ResponseBean;
 import com.factory.base.util.res.ResponseBeanBuilder;
 import com.factory.web.entity.statistics.ExceptionCountRes;
 import com.factory.web.entity.statistics.StatisticsDateReq;
-import com.factory.web.entity.vo.res.pad.ini.planlistRes;
 import com.factory.web.service.statistics.StatisticsService;
+import com.factory.wx.entity.req.AbnormalDetailReq;
 import com.factory.wx.entity.req.AbnormalPlanReq;
+import com.factory.wx.entity.res.AbnormalDetailRes;
 import com.factory.wx.entity.res.AbnormalPlanRes;
 import com.factory.wx.service.AbnormalStatisticsService;
 import io.swagger.annotations.Api;
@@ -56,7 +57,14 @@ public class StatisticsController {
 
     @ApiOperation(value = "异常计划详情")
     @PostMapping("/detail")
-    public ResponseBean<planlistRes> statisticsDetail() {
+    public ResponseBean<AbnormalDetailRes> abnormalDetail(@RequestBody AbnormalDetailReq abnormalDetailReq) {
+        AbnormalDetailRes abnormalDetailRes = abnormalStatisticsService.getAbnormalDetail(abnormalDetailReq);
+        return ResponseBeanBuilder.ok(abnormalDetailRes);
+    }
+
+    @ApiOperation(value = "异常防错计划详情")
+    @PostMapping("/detail/pm")
+    public ResponseBean<AbnormalDetailRes> abnormalDetailPM(@RequestBody AbnormalDetailReq abnormalDetailReq) {
         return ResponseBeanBuilder.ok();
     }
 }

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

@@ -27,76 +27,85 @@ import lombok.NoArgsConstructor;
 @JsonInclude()
 @ApiModel("")
 public class AbnormalItemRes implements Serializable {
-	
+
 	@ApiModelProperty(value = "巡检项目id")
 	private Long itemId;
-	
+
 	@ApiModelProperty(value = "巡检项目内容")
 	private String itemContent;
-	
+
 	@ApiModelProperty(value = "防错检查结果:0通过 1巡检不通过 2没有巡检")
 	private Integer result;
-	
+
 	@ApiModelProperty(value = "防错异常信息")
 	private String abnormal;
-	
+
 	@ApiModelProperty(value = "判断标准")
 	private String itemStandard;
-	
+
+	@ApiModelProperty(value = "点检时间")
+	private String itemResultCreateTime;
+
+	@ApiModelProperty(value = "点检人id")
+	private Long itemResultUserId;
+
+	@ApiModelProperty(value = "点检人")
+	private String itemResultUser;
+
 	@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 Double valUp;
-	
+
 	@ApiModelProperty(value = "下限 对应数据类型0数值")
 	private Double valDown;
 
 	@ApiModelProperty(value = "单位 对应数据类型0数值")
 	private String 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 String 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; // 用于页面返回值
 

+ 27 - 0
application-facade/src/main/java/com/factory/wx/entity/req/AbnormalDetailReq.java

@@ -0,0 +1,27 @@
+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-29 3:36 下午
+ */
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+@Builder
+public class AbnormalDetailReq {
+    @ApiModelProperty(value = "用户id")
+    private Long userId;
+
+    @ApiModelProperty(value = "计划Id")
+    private Long planId;
+
+    @ApiModelProperty(value = "计划类型 1首件 2防错")
+    private Long checkType;
+}

+ 31 - 0
application-facade/src/main/java/com/factory/wx/entity/req/SearchPlanPassReq.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-08-02 12:07 上午
+ */
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+@Builder
+public class SearchPlanPassReq {
+
+    @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;
+}

+ 47 - 0
application-facade/src/main/java/com/factory/wx/entity/res/AbnormalDetailRes.java

@@ -0,0 +1,47 @@
+package com.factory.wx.entity.res;
+
+import com.factory.web.entity.fa.FirstArticleTitle;
+import com.factory.web.entity.pm.OnsiteTitle;
+import com.factory.web.entity.pm.res.AbnormalTaskInfoRes;
+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 3:08 下午
+ */
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+@Builder
+public class AbnormalDetailRes {
+    @ApiModelProperty(value = "计划Id")
+    private Long planId;
+    @ApiModelProperty(value = "计划名称")
+    private String planName;
+    @ApiModelProperty(value = "计划类型")
+    private Integer planType;
+    @ApiModelProperty(value = "检验负责人")
+    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 FirstArticleTitle firstArticleTitle;
+    @ApiModelProperty(value = "任务信息-首件")
+    private List<AbnormalTaskInfoRes> abnormalTaskInfos;
+}

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

@@ -1,7 +1,6 @@
 package com.factory.wx.entity.res;
 
 import com.factory.web.entity.fa.*;
-import com.factory.web.entity.pm.OnsiteCalendar;
 import com.factory.web.entity.pm.OnsiteTitle;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.AllArgsConstructor;
@@ -41,8 +40,10 @@ public class PlanPassDetailRes {
 
     @ApiModelProperty(value = "防错表头信息")
     private OnsiteTitle titleInfo;
-    @ApiModelProperty(value = "待审批任务-防错")
-    private List<PlanApprovalTaskRes> planApprovalTasks;
+    @ApiModelProperty(value = "待审批任务")
+    private List<PlanPassTaskRes> taskList;
+//    @ApiModelProperty(value = "待审批任务-防错")
+//    private List<PlanApprovalTaskRes> planApprovalTasks;
 
     @ApiModelProperty(value = "表头信息-首件")
     private FirstArticleTitle firstArticleTitle;

+ 105 - 0
application-facade/src/main/java/com/factory/wx/entity/res/PlanPassItemRes.java

@@ -0,0 +1,105 @@
+package com.factory.wx.entity.res;
+
+import com.factory.web.entity.pm.res.AbnormalItemResultRes;
+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;
+
+import java.io.Serializable;
+import java.util.List;
+
+@Data
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class PlanPassItemRes implements Serializable {
+
+	@ApiModelProperty(value = "巡检项目id")
+	private Long itemId;
+
+	@ApiModelProperty(value = "巡检项目内容")
+	private String itemContent;
+
+	@ApiModelProperty(value = "巡检类型")
+	private int itemType;
+
+	@ApiModelProperty(value = "防错检查结果:0通过 1巡检不通过 2没有巡检")
+	private Integer result;
+
+	@ApiModelProperty(value = "防错异常信息")
+	private String abnormal;
+
+	@ApiModelProperty(value = "判断标准")
+	private String itemStandard;
+
+	@ApiModelProperty(value = "点检时间")
+	private String itemResultCreateTime;
+
+	@ApiModelProperty(value = "点检人id")
+	private Long itemResultUserId;
+
+	@ApiModelProperty(value = "点检人")
+	private String itemResultUser;
+
+	@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 Double valUp;
+
+	@ApiModelProperty(value = "下限 对应数据类型0数值")
+	private Double valDown;
+
+	@ApiModelProperty(value = "单位 对应数据类型0数值")
+	private String 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 String 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<PlanPassItemResultRes> firstItemResultList; // 用于页面返回值
+
+	@ApiModelProperty(value = "200件检查结果")
+    private List<PlanPassItemResultRes> twoHundredItemResultList; // 用于页面返回值
+
+	@ApiModelProperty(value = "中断检查结果")
+    private List<PlanPassItemResultRes> catchItemResultList; // 用于页面返回值
+
+}

+ 41 - 0
application-facade/src/main/java/com/factory/wx/entity/res/PlanPassItemResultRes.java

@@ -0,0 +1,41 @@
+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.io.Serializable;
+
+@Data
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class PlanPassItemResultRes 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;
+
+    @ApiModelProperty(value = "异常信息")
+    private String abnormal;
+
+    @ApiModelProperty(value = "订单号")
+    private String orderNumber;
+
+}

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

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

+ 42 - 0
application-facade/src/main/java/com/factory/wx/entity/res/PlanPassTaskRes.java

@@ -0,0 +1,42 @@
+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.io.Serializable;
+import java.util.List;
+
+@Data
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class PlanPassTaskRes implements Serializable {
+
+    @ApiModelProperty(value = "计划Id")
+    private Long planId;
+
+    @ApiModelProperty(value = "计划名称")
+    private String planName;
+
+    @ApiModelProperty(value = "计划类型 1首件 2防错")
+    private Integer planType;
+
+    @ApiModelProperty(value = "1质量工程师审批 2质量经理审批")
+    private Integer approvalLevel;
+
+    @ApiModelProperty(value = "0初始化 1待审核状态 2放行 3不通过 4通过")
+    private Integer status;
+
+    @ApiModelProperty(value = "首件:0表示首件 1表示200件 2表示中断;防错:0日巡检  1周巡检  2月巡检")
+    private Integer typeFlag;
+
+    @ApiModelProperty(value = "任务id")
+    private Long taskId;
+
+    @ApiModelProperty(value = "工作站")
+    private List<PlanPassWorkshopRes> workshopList;
+
+}

+ 30 - 0
application-facade/src/main/java/com/factory/wx/entity/res/PlanPassWorkshopRes.java

@@ -0,0 +1,30 @@
+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.io.Serializable;
+import java.util.List;
+
+@Data
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class PlanPassWorkshopRes implements Serializable {
+
+    @ApiModelProperty(value = "工作站id")
+    private Long workshopId;
+
+    @ApiModelProperty(value = "工作站名称")
+    private String wsName;
+
+    @ApiModelProperty(value = "生产线名称")
+    private String plName;
+
+    @ApiModelProperty(value = "巡检项及检查结果")
+    private List<PlanPassItemRes> itemList;
+
+}

+ 17 - 0
application-facade/src/main/java/com/factory/wx/mapper/AbnormalStatisticsMapper.java

@@ -1,5 +1,6 @@
 package com.factory.wx.mapper;
 
+import com.factory.web.entity.pm.res.AbnormalTaskInfoRes;
 import com.factory.wx.entity.req.AbnormalPlanReq;
 import com.factory.wx.entity.res.AbnormalPlanRes;
 import org.apache.ibatis.annotations.Mapper;
@@ -27,4 +28,20 @@ public interface AbnormalStatisticsMapper {
      * @return
      */
     List<AbnormalPlanRes> getRecheckedAbnormalPlans(AbnormalPlanReq abnormalPlanReq);
+
+    /**
+     * 根据计划id获取首件放行
+     *
+     * @param planId
+     * @return
+     */
+    List<AbnormalTaskInfoRes> getFaReleaseListByPlanId(Long planId);
+
+    /**
+     * 根据计划id获取防错放行
+     *
+     * @param planId
+     * @return
+     */
+    List<AbnormalTaskInfoRes> getPmReleaseListByPlanId(Long planId);
 }

+ 45 - 8
application-facade/src/main/java/com/factory/wx/mapper/PlanPassMapper.java

@@ -1,13 +1,15 @@
 package com.factory.wx.mapper;
 
-import com.factory.web.entity.fa.FirstArticleApprovalTask;
 import com.factory.wx.entity.req.PlanPageReq;
-import com.factory.wx.entity.res.PlanApprovalTaskRes;
+import com.factory.wx.entity.req.SearchPlanPassReq;
+import com.factory.wx.entity.res.PlanPassItemRes;
+import com.factory.wx.entity.res.PlanPassItemResultRes;
 import com.factory.wx.entity.res.PlanPassRes;
+import com.factory.wx.entity.res.PlanPassTaskRes;
 import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
-import java.util.Map;
 
 /**
  * @author sMArT
@@ -32,18 +34,53 @@ public interface PlanPassMapper {
      */
     List<PlanPassRes> getPlanPassPMList(PlanPageReq planPageReq);
 
+//    /**
+//     * 获取待放行任务-首件
+//     *
+//     * @param userId
+//     * @return
+//     */
+//    List<FirstArticleApprovalTask> getFirstArticleApprovalTaskList(Long userId);
+
+    /**
+     * 获取待放行防错任务
+     *
+     * @param planId
+     * @return
+     */
+    List<PlanPassTaskRes> getPmPassTaskListByPlanId(Long planId);
+
+
+    /**
+     * 获取检测点信息
+     *
+     * @param req
+     * @return
+     */
+    List<PlanPassItemRes> getPmPassItemList(@Param("req") SearchPlanPassReq req);
+
     /**
-     * 获取待放行任务-首件
-     * @param userId
+     * 获取待放行首件任务
+     *
+     * @param planId
+     * @return
+     */
+    List<PlanPassTaskRes> getFaPassTaskListByPlanId(Long planId);
+
+    /**
+     * 获取首件监测点信息
+     *
+     * @param req
      * @return
      */
-    List<FirstArticleApprovalTask> getFirstArticleApprovalTaskList(Long userId);
+    List<PlanPassItemRes> getFaPassItemList(@Param("req") SearchPlanPassReq req);
 
     /**
+     * 获取首件检测结果
      *
-     * @param map
+     * @param searchReq
      * @return
      */
-    List<PlanApprovalTaskRes> getApprovalTaskList(Map map);
+    List<PlanPassItemResultRes> getFaPassItemResultList(@Param("req") SearchPlanPassReq searchReq);
 
 }

+ 11 - 1
application-facade/src/main/java/com/factory/wx/service/AbnormalStatisticsService.java

@@ -1,7 +1,8 @@
 package com.factory.wx.service;
 
-import com.factory.web.entity.statistics.StatisticsDateReq;
+import com.factory.wx.entity.req.AbnormalDetailReq;
 import com.factory.wx.entity.req.AbnormalPlanReq;
+import com.factory.wx.entity.res.AbnormalDetailRes;
 import com.factory.wx.entity.res.AbnormalPlanRes;
 
 import java.util.List;
@@ -20,4 +21,13 @@ public interface AbnormalStatisticsService {
      * @return
      */
     List<AbnormalPlanRes> getExceptionPlansByMonth(AbnormalPlanReq abnormalPlanReq);
+
+
+    /**
+     * 异常首件详情
+     *
+     * @param abnormalDetailReq
+     * @return
+     */
+    AbnormalDetailRes getAbnormalDetail(AbnormalDetailReq abnormalDetailReq);
 }

+ 0 - 8
application-facade/src/main/java/com/factory/wx/service/PlanPassService.java

@@ -19,14 +19,6 @@ import java.util.List;
  */
 public interface PlanPassService {
 
-    /**
-     * 计划放行列表
-     *
-     * @param planPageReq
-     * @return
-     */
-    PageBean<BentelerPlan> getPassListByPage(PlanPageReq planPageReq);
-
     /**
      * 计划放行详情-首件
      *

+ 1 - 10
application-facade/src/main/java/com/factory/wx/service/PlanReminderService.java

@@ -1,7 +1,5 @@
 package com.factory.wx.service;
 
-import com.factory.base.entity.aggregates.PageBean;
-import com.factory.base.entity.po.benteler.BentelerPlan;
 import com.factory.wx.entity.req.PlanInfoReq;
 import com.factory.wx.entity.req.PlanPageReq;
 import com.factory.wx.entity.res.PlanReminderDetailRes;
@@ -24,14 +22,6 @@ public interface PlanReminderService {
      */
     List<ReminderRes> getReminderList(PlanPageReq planPageReq);
 
-    /**
-     * 分页获得计划提醒列表
-     *
-     * @param planPageReq
-     * @return
-     */
-    PageBean<BentelerPlan> getReminderListByPage(PlanPageReq planPageReq);
-
     /**
      * 防错计划提醒详情
      *
@@ -49,6 +39,7 @@ public interface PlanReminderService {
 
     /**
      * 首件计划提醒详情
+     *
      * @param planInfoReq
      * @return
      */

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

@@ -23,4 +23,11 @@ public interface WxPlanService {
      * @return
      */
     WxPlanBaseInfoRes getOnsitePlanBaseInfo(Long planId);
+
+    /**
+     * 根据用户id获取用户姓名
+     * @param userId
+     * @return
+     */
+    String getUserNameById(Long userId);
 }

+ 192 - 0
application-facade/src/main/java/com/factory/wx/service/impl/AbnormalStatisticsServiceImpl.java

@@ -1,10 +1,32 @@
 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.util.res.ResponseBeanBuilder;
+import com.factory.web.entity.fa.FirstArticleTitle;
+import com.factory.web.entity.fa.FirstArticleWorkshop;
+import com.factory.web.entity.pm.OnsiteTitle;
+import com.factory.web.entity.pm.OnsiteWorkshop;
+import com.factory.web.entity.pm.req.SearchAbnormalReq;
+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.mapper.BentelerPlanMapper;
+import com.factory.web.mapper.FileMapper;
+import com.factory.web.mapper.pm.PreventMistakeMapper;
+import com.factory.web.service.fa.FirstArticleService;
+import com.factory.web.service.fa.FirstArticleWorkshopService;
+import com.factory.web.service.impl.FileEntry;
+import com.factory.web.service.pm.OnsiteWorkshopService;
+import com.factory.web.service.pm.PreventMistakeService;
+import com.factory.wx.entity.req.AbnormalDetailReq;
 import com.factory.wx.entity.req.AbnormalPlanReq;
+import com.factory.wx.entity.res.AbnormalDetailRes;
 import com.factory.wx.entity.res.AbnormalPlanRes;
 import com.factory.wx.mapper.AbnormalStatisticsMapper;
 import com.factory.wx.service.AbnormalStatisticsService;
+import com.factory.wx.service.WxPlanService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
@@ -13,6 +35,7 @@ import java.text.SimpleDateFormat;
 import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
+import java.util.stream.Collectors;
 
 /**
  * @author sMArT
@@ -23,6 +46,22 @@ import java.util.List;
 public class AbnormalStatisticsServiceImpl implements AbnormalStatisticsService {
     @Autowired
     private AbnormalStatisticsMapper abnormalStatisticsMapper;
+    @Autowired
+    private FileMapper fileMapper;
+    @Autowired
+    private BentelerPlanMapper bentelerPlanMapper;
+    @Autowired
+    private PreventMistakeMapper preventMistakeMapper;
+    @Autowired
+    private FirstArticleWorkshopService firstArticleWorkshopService;
+    @Autowired
+    private FirstArticleService firstArticleService;
+    @Autowired
+    private OnsiteWorkshopService onsiteWorkshopService;
+    @Autowired
+    private PreventMistakeService preventMistakeService;
+    @Autowired
+    private WxPlanService wxPlanService;
 
     /**
      * 根据年月获取异常计划
@@ -47,6 +86,159 @@ public class AbnormalStatisticsServiceImpl implements AbnormalStatisticsService
         return releasedAbnormalPlans;
     }
 
+    /**
+     * 取得检查结果
+     *
+     * @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;
+    }
+
+    /**
+     * 异常放行详情
+     *
+     * @param abnormalDetailReq
+     * @return
+     */
+    @Override
+    public AbnormalDetailRes getAbnormalDetail(AbnormalDetailReq abnormalDetailReq) {
+        AbnormalDetailRes abnormalDetailRes = new AbnormalDetailRes();
+        BentelerPlan bentelerPlan = bentelerPlanMapper.selectById(abnormalDetailReq.getPlanId());
+        abnormalDetailRes.setPlanId(bentelerPlan.getId());
+        abnormalDetailRes.setPlanName(bentelerPlan.getName());
+
+        //获取title
+        if (abnormalDetailReq.getCheckType() == 1) {
+            FirstArticleTitle title = firstArticleService.getFaTitle(abnormalDetailReq.getPlanId());
+            //判断是否有附件
+            int attrCount = fileMapper.selectCount(Wrappers.<FileEntry>lambdaQuery()
+                    .eq(FileEntry::getId, title.getUploadAttachmentId()));
+            abnormalDetailRes.setFirstArticleTitle(title);
+            abnormalDetailRes.setAttachment(attrCount == 0 ? 0 : 1);
+        }
+        if (abnormalDetailReq.getCheckType() == 2) {
+            //获取title
+            OnsiteTitle title = preventMistakeService.getTitle(abnormalDetailReq.getPlanId());
+            //判断是否有附件
+            int attrCount = fileMapper.selectCount(Wrappers.<FileEntry>lambdaQuery()
+                    .eq(FileEntry::getId, title.getUploadAttachmentId()));
+            abnormalDetailRes.setTitleInfo(title);
+            abnormalDetailRes.setAttachment(attrCount == 0 ? 0 : 1);
+        }
+
+        //取放行信息
+        if (abnormalDetailReq.getCheckType() == 1) {
+            List<AbnormalTaskInfoRes> abnormalTaskInfoResList = getFaAbnormalTaskInfoRes(abnormalDetailReq.getPlanId());
+            abnormalDetailRes.setAbnormalTaskInfos(abnormalTaskInfoResList);
+        }
+        if (abnormalDetailReq.getCheckType() == 2) {
+            List<AbnormalTaskInfoRes> abnormalTaskInfoResList = getPMAbnormalTaskInfoRes(abnormalDetailReq.getPlanId());
+            abnormalDetailRes.setAbnormalTaskInfos(abnormalTaskInfoResList);
+        }
+
+        return abnormalDetailRes;
+    }
+
+    /**
+     * 获取首件放行信息
+     *
+     * @param planId
+     * @return
+     */
+    private List<AbnormalTaskInfoRes> getFaAbnormalTaskInfoRes(Long planId) {
+        List<AbnormalTaskInfoRes> faList = abnormalStatisticsMapper.getFaReleaseListByPlanId(planId);
+
+        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 (int i = 0; i < abnormalWorkshopList.size(); i++) {
+
+                SearchAbnormalReq searchReq = new SearchAbnormalReq();
+                searchReq.setWorkshopId(abnormalWorkshopList.get(i).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);
+                }
+
+                abnormalWorkshopList.get(i).setAbnormalItemList(abnormalItemList);
+                faInfo.setAbnormalWorkshopList(abnormalWorkshopList);
+            }
+        }
+        return faList;
+    }
+
+    /**
+     * 获取防错放行信息
+     *
+     * @param planId
+     * @return
+     */
+    private List<AbnormalTaskInfoRes> getPMAbnormalTaskInfoRes(Long planId) {
+        List<AbnormalTaskInfoRes> pmList = abnormalStatisticsMapper.getPmReleaseListByPlanId(planId);
+        for (AbnormalTaskInfoRes pmInfo : pmList) {
+            List<OnsiteWorkshop> onsiteWorkshopList = onsiteWorkshopService.list(Wrappers.<OnsiteWorkshop>lambdaQuery()
+                    .eq(OnsiteWorkshop::getBentelerPlanId, pmInfo.getBentelerPlanId()));
+
+            List<AbnormalWorkshopRes> abnormalWorkshopList = new ArrayList<AbnormalWorkshopRes>();
+            for (OnsiteWorkshop workshop : onsiteWorkshopList) {
+                AbnormalWorkshopRes abnormalWorkshop = new AbnormalWorkshopRes();
+                abnormalWorkshop.setWorkshopId(workshop.getId());
+                abnormalWorkshop.setWsName(workshop.getWsName());
+                abnormalWorkshopList.add(abnormalWorkshop);
+            }
+
+            for (int i = 0; i < abnormalWorkshopList.size(); i++) {
+
+                SearchAbnormalReq searchReq = new SearchAbnormalReq();
+                searchReq.setWorkshopId(abnormalWorkshopList.get(i).getWorkshopId());
+                searchReq.setTaskId(pmInfo.getTaskId());
+                List<AbnormalItemRes> abnormalItemList = preventMistakeMapper.getPmAbnormalItemList(searchReq).stream().filter(abnormalItemRes -> abnormalItemRes.getResult() > 0).collect(Collectors.toList());
+                if (abnormalItemList.size() == 0) {
+                    abnormalWorkshopList.remove(i);
+                } else {
+                    for (AbnormalItemRes abnormalItemRes : abnormalItemList) {
+                        Long userId = abnormalItemRes.getItemResultUserId();
+                        if (null != userId) {
+                            String userName = wxPlanService.getUserNameById(abnormalItemRes.getItemResultUserId());
+                            abnormalItemRes.setItemResultUser(userName);
+                        }
+                    }
+                    abnormalWorkshopList.get(i).setAbnormalItemList(abnormalItemList);
+                }
+            }
+
+            pmInfo.setAbnormalWorkshopList(abnormalWorkshopList);
+        }
+        return pmList;
+    }
+
     /**
      * 验证日期格式
      *

+ 2 - 0
application-facade/src/main/java/com/factory/wx/service/impl/PlanApprovalServiceImpl.java

@@ -158,6 +158,8 @@ public class PlanApprovalServiceImpl implements PlanApprovalService {
                     .eq(OnsiteItem::getWorkshopId, onsiteWorkshop.getId())));
         });
 
+//       List<Integer> a =onsiteWorkshopList.stream().map(OnsiteWorkshop::getOnsiteItemList).map(OnsiteItem::getTypeFlag).distinct().collect(Collectors.toList());
+
         return PlanApprovalDetailRes.builder()
                 .planId(wxPlanBaseInfoRes.getPlanId())
                 .planName(wxPlanBaseInfoRes.getPlanName())

+ 164 - 151
application-facade/src/main/java/com/factory/wx/service/impl/PlanPassServiceImpl.java

@@ -1,45 +1,39 @@
 package com.factory.wx.service.impl;
 
-import cn.hutool.core.collection.CollUtil;
-import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import com.baomidou.mybatisplus.core.metadata.IPage;
 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.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.*;
+import com.factory.web.entity.fa.FirstArticleApprovalTask;
+import com.factory.web.entity.fa.FirstArticleTask;
+import com.factory.web.entity.fa.FirstArticleTitle;
+import com.factory.web.entity.fa.FirstArticleWorkshop;
 import com.factory.web.entity.pm.*;
 import com.factory.web.entity.pm.res.ApprovalUserRes;
 import com.factory.web.mapper.BentelerPlanMapper;
 import com.factory.web.mapper.fa.FirstArticleApprovalTaskMapper;
-import com.factory.web.mapper.fa.FirstArticleCalendarMapper;
 import com.factory.web.mapper.pm.ApprovalRuleMapper;
 import com.factory.web.mapper.pm.OnsiteApprovalTaskMapper;
 import com.factory.web.mapper.pm.OnsiteCalendarMapper;
 import com.factory.web.mapper.pm.OnsiteTaskMapper;
 import com.factory.web.service.fa.*;
+import com.factory.web.service.pm.OnsiteWorkshopService;
 import com.factory.web.service.pm.PreventMistakeService;
 import com.factory.wx.entity.req.PlanApprovalTaskReq;
 import com.factory.wx.entity.req.PlanPageReq;
 import com.factory.wx.entity.req.PlanPassReq;
-import com.factory.wx.entity.res.PlanApprovalTaskRes;
-import com.factory.wx.entity.res.PlanPassDetailRes;
-import com.factory.wx.entity.res.PlanPassRes;
-import com.factory.wx.entity.res.WxPlanBaseInfoRes;
+import com.factory.wx.entity.req.SearchPlanPassReq;
+import com.factory.wx.entity.res.*;
 import com.factory.wx.mapper.PlanPassMapper;
+import com.factory.wx.service.AbnormalStatisticsService;
 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.util.*;
+import java.util.ArrayList;
+import java.util.List;
 import java.util.stream.Collectors;
 
 /**
@@ -51,10 +45,6 @@ import java.util.stream.Collectors;
 public class PlanPassServiceImpl implements PlanPassService {
 
     private final static Logger LOGGER = LoggerFactory.getLogger(PlanPassServiceImpl.class);
-    /**
-     * 审批规则类型为:1新建计划审批
-     */
-    private static int APPROVAL_TYPE_NEW = 1;
     /**
      * 审批规则类型为:2首件
      */
@@ -91,23 +81,10 @@ public class PlanPassServiceImpl implements PlanPassService {
     private FirstArticleTaskService firstArticleTaskService;
     @Autowired
     private WxPlanService wxPlanService;
-
-    private static IPage<BentelerPlan> getBentelerPlanIPage(PlanPageReq planPageReq, List<OnsiteCalendar> onsiteCalendarList, BentelerPlanMapper bentelerPlanMapper) {
-        IPage<BentelerPlan> bentelerPlanIPage;
-        List<Long> planIds = onsiteCalendarList.stream().map(OnsiteCalendar::getBentelerPlanId).collect(Collectors.toList());
-
-        LambdaQueryWrapper<BentelerPlan> wrapper = new LambdaQueryWrapper<>();
-        wrapper.in(BentelerPlan::getId, planIds);
-        wrapper.eq(BentelerPlan::getPlanType, planPageReq.getCheckType());
-
-        if (StringUtils.isNotEmpty(planPageReq.getName())) {
-            wrapper.like(BentelerPlan::getName, planPageReq.getName());
-        }
-        IPage<BentelerPlan> page = new Page<>(planPageReq.getPage(), planPageReq.getSize());
-        bentelerPlanIPage = bentelerPlanMapper.selectPage(page, wrapper);
-        return bentelerPlanIPage;
-    }
-
+    @Autowired
+    private AbnormalStatisticsService abnormalStatisticsService;
+    @Autowired
+    private OnsiteWorkshopService onsiteWorkshopService;
 
     /**
      * 计划放行列表
@@ -115,122 +92,120 @@ public class PlanPassServiceImpl implements PlanPassService {
      * @param planPageReq
      * @return
      */
-    @Override
-    public PageBean<BentelerPlan> getPassListByPage(PlanPageReq planPageReq) {
-
-        LambdaQueryWrapper<OnsiteApprovalTask> approvalTaskWrapper = new LambdaQueryWrapper<>();
-        approvalTaskWrapper.eq(OnsiteApprovalTask::getApprovalUserId, planPageReq.getUserId());
-        approvalTaskWrapper.eq(OnsiteApprovalTask::getStatus, 0);//获取未处理过的计划
-
-        List<OnsiteApprovalTask> onsiteApprovalTaskList = onsiteApprovalTaskMapper.selectList(approvalTaskWrapper);
-        IPage<BentelerPlan> bentelerPlanIPage = new Page<>();
-        if (CollUtil.isNotEmpty(onsiteApprovalTaskList)) {
-            List<Long> taskIds = onsiteApprovalTaskList.stream().map(OnsiteApprovalTask::getOnsiteTaskId).collect(Collectors.toList());
-            List<OnsiteTask> onsiteTaskList = onsiteTaskMapper.selectBatchIds(taskIds);
-            if (CollUtil.isNotEmpty(onsiteTaskList)) {
-                List<Long> calendarIds = onsiteTaskList.stream().map(OnsiteTask::getOnsiteCalendarId).collect(Collectors.toList());
-                List<OnsiteCalendar> onsiteCalendarList = onsiteCalendarMapper.selectBatchIds(calendarIds);
-                if (CollUtil.isNotEmpty(onsiteCalendarList)) {
-                    bentelerPlanIPage = getBentelerPlanIPage(planPageReq, onsiteCalendarList, bentelerPlanMapper);
-                }
-            }
+//    @Override
+    public List<PlanPassRes> getPassList(PlanPageReq planPageReq) {
+        //分页
+        planPageReq.setPage((planPageReq.getPage() - 1) * planPageReq.getSize());
+        List<PlanPassRes> planPassResList = new ArrayList<>();
+        //首件列表
+        if (planPageReq.getCheckType() == 1) {
+            planPassResList = planPassMapper.getPlanPassList(planPageReq);
+        }
+        //防错列表
+        if (planPageReq.getCheckType() == 2) {
+            planPassResList = planPassMapper.getPlanPassPMList(planPageReq);
         }
-        return PageBean.<BentelerPlan>builder().row(bentelerPlanIPage.getRecords()).total(bentelerPlanIPage.getTotal()).page(bentelerPlanIPage.getPages()).build();
+        return planPassResList;
     }
 
     /**
-     * 计划放行详情-首件
+     * 计划放行详情-防错
      *
      * @param planPassReq
      * @return
      */
 
     @Override
-    public PlanPassDetailRes getPassDetail(PlanPassReq planPassReq) {
-        WxPlanBaseInfoRes wxPlanBaseInfoRes =
-                wxPlanService.getFirstArticlePlanBaseInfo(planPassReq.getPlanId());
-
-        //工作站
-        List<FirstArticleWorkshop> firstArticleWorkshopList = firstArticleWorkshopService.list(Wrappers.<FirstArticleWorkshop>lambdaQuery()
-                .eq(FirstArticleWorkshop::getBentelerPlanId, planPassReq.getPlanId()));
-        // 每个workshop下的item
-        for (int i = 0; i < firstArticleWorkshopList.size(); i++) {
-            FirstArticleWorkshop workshop = firstArticleWorkshopList.get(i);
-            List<FirstArticleItem> firstArticleItemList = firstArticleItemService.list(Wrappers.<FirstArticleItem>lambdaQuery()
-                    .eq(FirstArticleItem::getWorkshopId, workshop.getId()));
-            //每个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 {
-                    // 首件列表
-                    if (item.getFirstFlag() == 1 && firstArticleItemResults.stream().count() > 0) {
-                        item.setFirstItemResultList(firstArticleItemResults);
-                    }
-                    // 200件
-                    if (item.getTwoHundredFlag() == 1 && firstArticleItemResults.stream().count() > 0) {
-                        item.setTwoHundredItemResultList(firstArticleItemResults);
-                    }
-                    // 中断
-                    if (item.getCatchFlag() == 1 && firstArticleItemResults.stream().count() > 0) {
-                        item.setCatchItemResultList(firstArticleItemResults);
-                    }
-                    if (firstArticleItemResults.stream().count() > 0) {
-                        Optional<Long> taskId = firstArticleItemResults.stream().findFirst().map(FirstArticleItemResult::getFirstArticleTaskId);
-                        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::getApprovalLevel, firstArticleApprovalTask.getApprovalLevel())
-                                    .eq(FirstArticleApprovalTask::getApprovalUserId, planPassReq.getUserId()));
-                            item.setFirstArticleApprovalTaskStatus(approvalTask.getStatus());
-                        }
-                    }
-                }
-            }
-            //工作站下面没有异常的item则不显示工作站
-            if (firstArticleItemList.size() > 0) {
-                workshop.setFirstArticleItemList(firstArticleItemList);
-            } else {
-                firstArticleWorkshopList.remove(i);
-            }
-        }
+    public PlanPassDetailRes getPassDetailPM(PlanPassReq planPassReq) {
+        WxPlanBaseInfoRes wxPlanBaseInfoRes = wxPlanService.getOnsitePlanBaseInfo(planPassReq.getPlanId());
+
+        List<PlanPassTaskRes> planPassTaskResList = getPMTaskList(planPassReq.getPlanId());
+
+        List<Integer> itemType = getItemFrequency(planPassTaskResList);
 
         return PlanPassDetailRes.builder()
                 .planId(wxPlanBaseInfoRes.getPlanId())
                 .planName(wxPlanBaseInfoRes.getPlanName())
                 .usersName(wxPlanBaseInfoRes.getUsersName())
-                .frequency(wxPlanBaseInfoRes.getFrequency())
+                .frequency(itemType)
                 .effectiveDate(wxPlanBaseInfoRes.getEffectiveDate())
-                .firstArticleTitle((FirstArticleTitle) wxPlanBaseInfoRes.getTitle())
+                .titleInfo((OnsiteTitle) wxPlanBaseInfoRes.getTitle())
+                .taskList(planPassTaskResList)
                 .attachment(wxPlanBaseInfoRes.getAttachment())
-                .firstArticleWorkshops(firstArticleWorkshopList)
                 .build();
     }
 
     /**
-     * 计划放行详情-防错
+     * 获取防错点检错误列表
+     *
+     * @param planId
+     * @return
+     */
+    private List<PlanPassTaskRes> getPMTaskList(Long planId) {
+        List<PlanPassTaskRes> pmList = planPassMapper.getPmPassTaskListByPlanId(planId);
+        for (PlanPassTaskRes pmInfo : pmList) {
+            List<OnsiteWorkshop> onsiteWorkshopList = onsiteWorkshopService.list(Wrappers.<OnsiteWorkshop>lambdaQuery()
+                    .eq(OnsiteWorkshop::getBentelerPlanId, pmInfo.getPlanId()));
+
+            List<PlanPassWorkshopRes> workshopList = new ArrayList<PlanPassWorkshopRes>();
+            for (OnsiteWorkshop workshop : onsiteWorkshopList) {
+                PlanPassWorkshopRes planPassWorkshopRes = new PlanPassWorkshopRes();
+                planPassWorkshopRes.setWorkshopId(workshop.getId());
+                planPassWorkshopRes.setWsName(workshop.getWsName());
+                workshopList.add(planPassWorkshopRes);
+            }
+
+            for (int i = 0; i < workshopList.size(); i++) {
+                SearchPlanPassReq searchReq = new SearchPlanPassReq();
+                searchReq.setWorkshopId(workshopList.get(i).getWorkshopId());
+                searchReq.setTaskId(pmInfo.getTaskId());
+                List<PlanPassItemRes> planPassItemList = planPassMapper.getPmPassItemList(searchReq).stream().filter(item -> item.getResult() > 0).collect(Collectors.toList());
+                if (planPassItemList.size() == 0) {
+                    workshopList.remove(i);
+                } else {
+                    for (PlanPassItemRes planPassItemRes : planPassItemList) {
+                        Long userId = planPassItemRes.getItemResultUserId();
+                        if (null != userId) {
+                            String userName = wxPlanService.getUserNameById(planPassItemRes.getItemResultUserId());
+                            planPassItemRes.setItemResultUser(userName);
+                        }
+                    }
+                    workshopList.get(i).setItemList(planPassItemList);
+                }
+            }
+            pmInfo.setWorkshopList(workshopList);
+        }
+        return pmList;
+    }
+
+    /**
+     * 获取防错频次
+     *
+     * @param planPassTaskResList
+     */
+    private List<Integer> getItemFrequency(List<PlanPassTaskRes> planPassTaskResList) {
+        List<Integer> frequency = new ArrayList<>();
+        planPassTaskResList.forEach(task -> {
+            task.getWorkshopList().forEach(workshop -> {
+                workshop.getItemList().forEach(item -> {
+                    frequency.add(item.getItemType());
+                });
+            });
+        });
+        return frequency.stream().distinct().collect(Collectors.toList());
+    }
+
+    /**
+     * 计划放行详情-首件
      *
      * @param planPassReq
      * @return
      */
     @Override
-    public PlanPassDetailRes getPassDetailPM(PlanPassReq planPassReq) {
-        WxPlanBaseInfoRes wxPlanBaseInfoRes =
-                wxPlanService.getOnsitePlanBaseInfo(planPassReq.getPlanId());
+    public PlanPassDetailRes getPassDetail(PlanPassReq planPassReq) {
+        WxPlanBaseInfoRes wxPlanBaseInfoRes = wxPlanService.getFirstArticlePlanBaseInfo(planPassReq.getPlanId());
 
-        //获取待审批任务
-        Map map = new HashMap();
-        map.put("userId", planPassReq.getUserId());
-        List<PlanApprovalTaskRes> planApprovalTaskResList = planPassMapper.getApprovalTaskList(map);
+        List<PlanPassTaskRes> planPassTaskResList = getFATaskList(planPassReq.getPlanId());
 
         return PlanPassDetailRes.builder()
                 .planId(wxPlanBaseInfoRes.getPlanId())
@@ -238,12 +213,73 @@ public class PlanPassServiceImpl implements PlanPassService {
                 .usersName(wxPlanBaseInfoRes.getUsersName())
                 .frequency(wxPlanBaseInfoRes.getFrequency())
                 .effectiveDate(wxPlanBaseInfoRes.getEffectiveDate())
-                .titleInfo((OnsiteTitle) wxPlanBaseInfoRes.getTitle())
+                .firstArticleTitle((FirstArticleTitle) wxPlanBaseInfoRes.getTitle())
+                .taskList(planPassTaskResList)
                 .attachment(wxPlanBaseInfoRes.getAttachment())
-                .planApprovalTasks(planApprovalTaskResList)
                 .build();
     }
 
+    private List<PlanPassTaskRes> getFATaskList(Long planId) {
+        List<PlanPassTaskRes> faList = planPassMapper.getFaPassTaskListByPlanId(planId);
+
+        for (PlanPassTaskRes faInfo : faList) {
+            List<FirstArticleWorkshop> firstArticleWorkshopList = firstArticleWorkshopService.list(Wrappers.<FirstArticleWorkshop>lambdaQuery()
+                    .eq(FirstArticleWorkshop::getBentelerPlanId, planId));
+
+            List<PlanPassWorkshopRes> planPassWorkshopList = new ArrayList<PlanPassWorkshopRes>();
+            PlanPassWorkshopRes planPassWorkshop = null;
+            for (FirstArticleWorkshop workshop : firstArticleWorkshopList) {
+                planPassWorkshop = new PlanPassWorkshopRes();
+                planPassWorkshop.setWorkshopId(workshop.getId());
+                planPassWorkshop.setWsName(workshop.getWsName());
+                planPassWorkshop.setPlName(workshop.getPlName());
+                planPassWorkshopList.add(planPassWorkshop);
+            }
+
+            for (int i = 0; i < planPassWorkshopList.size(); i++) {
+
+                SearchPlanPassReq searchReq = new SearchPlanPassReq();
+                searchReq.setWorkshopId(planPassWorkshopList.get(i).getWorkshopId());
+                List<PlanPassItemRes> planPassItemList = planPassMapper.getFaPassItemList(searchReq);
+
+                for (PlanPassItemRes planPassItemRes : planPassItemList) {
+                    List<PlanPassItemResultRes> firstItemResultList = this.getFaItemResultList(faInfo.getTaskId(), planPassItemRes.getItemId(), 0);
+                    planPassItemRes.setFirstItemResultList(firstItemResultList);
+
+                    List<PlanPassItemResultRes> twoHundredItemResultList = this.getFaItemResultList(faInfo.getTaskId(), planPassItemRes.getItemId(), 1);
+                    planPassItemRes.setTwoHundredItemResultList(twoHundredItemResultList);
+
+                    List<PlanPassItemResultRes> catchItemResultList = this.getFaItemResultList(faInfo.getTaskId(), planPassItemRes.getItemId(), 2);
+                    planPassItemRes.setCatchItemResultList(catchItemResultList);
+                }
+                if (planPassItemList.size() == 0) {
+                    planPassWorkshopList.remove(i);
+                } else {
+                    planPassWorkshopList.get(i).setItemList(planPassItemList);
+                }
+
+                faInfo.setWorkshopList(planPassWorkshopList);
+            }
+        }
+        return faList;
+    }
+
+    private List<PlanPassItemResultRes> getFaItemResultList(long taskId, long itemId, int typeFlag) {
+        SearchPlanPassReq searchReq = new SearchPlanPassReq();
+        searchReq.setTaskId(taskId);
+        searchReq.setItemId(itemId);
+        searchReq.setTypeFlag(typeFlag);
+        List<PlanPassItemResultRes> planPassItemResultResList = planPassMapper.getFaPassItemResultList(searchReq);
+        return planPassItemResultResList;
+    }
+    /**
+     * 计划放行详情-首件
+     *
+     * @param planPassReq
+     * @return
+     */
+
+
     /**
      * 计划放行
      *
@@ -402,27 +438,4 @@ public class PlanPassServiceImpl implements PlanPassService {
         }
     }
 
-
-    /**
-     * 计划放行列表
-     *
-     * @param planPageReq
-     * @return
-     */
-    @Override
-    public List<PlanPassRes> getPassList(PlanPageReq planPageReq) {
-        //分页
-        planPageReq.setPage((planPageReq.getPage() - 1) * planPageReq.getSize());
-        List<PlanPassRes> planPassResList = new ArrayList<>();
-        //首件列表
-        if (planPageReq.getCheckType() == 1) {
-            planPassResList = planPassMapper.getPlanPassList(planPageReq);
-        }
-        //防错列表
-        if (planPageReq.getCheckType() == 2) {
-            planPassResList = planPassMapper.getPlanPassPMList(planPageReq);
-        }
-        return planPassResList;
-    }
-
 }

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

@@ -1,16 +1,12 @@
 package com.factory.wx.service.impl;
 
-import cn.hutool.core.collection.CollUtil;
-import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import com.baomidou.mybatisplus.core.metadata.IPage;
 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.web.entity.fa.FirstArticleItem;
 import com.factory.web.entity.fa.FirstArticleTitle;
 import com.factory.web.entity.fa.FirstArticleWorkshop;
-import com.factory.web.entity.pm.*;
+import com.factory.web.entity.pm.OnsiteItem;
+import com.factory.web.entity.pm.OnsiteTitle;
+import com.factory.web.entity.pm.OnsiteWorkshop;
 import com.factory.web.mapper.BentelerPlanMapper;
 import com.factory.web.mapper.fa.FirstArticleItemMapper;
 import com.factory.web.mapper.fa.FirstArticleWorkshopMapper;
@@ -29,7 +25,6 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import java.util.List;
-import java.util.stream.Collectors;
 
 /**
  * @author sMArT
@@ -73,42 +68,6 @@ public class PlanReminderServiceImpl implements PlanReminderService {
         return reminderMapper.getReminderList(planPageReq);
     }
 
-    /**
-     * 分页获取计划提醒列表
-     *
-     * @param planPageReq
-     * @return
-     */
-    @Override
-    public PageBean<BentelerPlan> getReminderListByPage(PlanPageReq planPageReq) {
-        LambdaQueryWrapper<RemindApprovalTask> remindApprovalTaskWrapper = new LambdaQueryWrapper<>();
-        remindApprovalTaskWrapper.eq(RemindApprovalTask::getApprovalUserId, planPageReq.getUserId());
-
-        List<RemindApprovalTask> remindApprovalTaskList = remindApprovalTaskMapper.selectList(remindApprovalTaskWrapper);
-
-        IPage<BentelerPlan> bentelerPlanIPage = new Page<>();
-        if (CollUtil.isNotEmpty(remindApprovalTaskList)) {
-            List<Long> taskIds = remindApprovalTaskList.stream().map(RemindApprovalTask::getTaskId).collect(Collectors.toList());
-            List<OnsiteTask> onsiteTaskList = onsiteTaskMapper.selectBatchIds(taskIds);
-            List<Long> calendarIds = onsiteTaskList.stream().map(OnsiteTask::getOnsiteCalendarId).collect(Collectors.toList());
-            List<OnsiteCalendar> onsiteCalendarList = onsiteCalendarMapper.selectBatchIds(calendarIds);
-            List<Long> planIds = onsiteCalendarList.stream().map(OnsiteCalendar::getBentelerPlanId).collect(Collectors.toList());
-
-            IPage<BentelerPlan> page = new Page<>(planPageReq.getPage(), planPageReq.getSize());
-            LambdaQueryWrapper<BentelerPlan> wrapper = new LambdaQueryWrapper<>();
-            wrapper.in(BentelerPlan::getId, planIds);
-
-            bentelerPlanIPage = bentelerPlanMapper.selectPage(page, wrapper);
-        }
-
-        return PageBean.<BentelerPlan>builder()
-                .row(bentelerPlanIPage.getRecords())
-                .total(bentelerPlanIPage.getTotal())
-                .page(bentelerPlanIPage.getPages())
-                .build();
-
-    }
-
     /**
      * 防错提醒详情
      *

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

@@ -132,11 +132,12 @@ public class WxPlanServiceImpl implements WxPlanService {
      * @param userId
      * @return 返回用户名,未找到时返回空字符串
      */
+    @Override
     public String getUserNameById(Long userId) {
         if (userId > 0) {
             UserInfo userInfo = userInfoMapper.selectById(userId);
-            if (null != userInfo && null != userInfo.getName()) {
-                return userInfo.getName();
+            if (null != userInfo && null != userInfo.getUsername()) {
+                return userInfo.getUsername();
             }
         }
         return "";

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

@@ -79,4 +79,57 @@
         AND ot.task_time LIKE CONCAT(#{month},'%');
     </select>
 
+    <!-- 取得防错放行 -->
+    <select id="getPmReleaseListByPlanId" 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.`username` 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     bp.id = #{planId}
+    </select>
+    <!-- 取得首件放行 -->
+    <select id="getFaReleaseListByPlanId" 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.`username` 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     bp.id = #{planId}
+    </select>
+
 </mapper>

+ 171 - 53
application-facade/src/main/resources/mapper/PlanPassMapper.xml

@@ -2,14 +2,13 @@
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 
 <mapper namespace="com.factory.wx.mapper.PlanPassMapper">
-    <!-- 获取用户待审批计划列表 -->
+    <!-- 获取用户待审批防错计划列表 -->
     <select id="getPlanPassPMList" parameterType="com.factory.wx.entity.req.PlanPageReq"
             resultType="com.factory.wx.entity.res.PlanPassRes">
         SELECT DISTINCT
             bp.id AS id,
             bp.`name` AS NAME,
-            bp.plan_type AS plan_type,
-            rat.onsite_task_id AS task_id
+            bp.plan_type AS plan_type
         FROM
             onsite_approval_task rat,
             onsite_task ot,
@@ -19,20 +18,20 @@
             rat.onsite_task_id = ot.id
             AND ot.onsite_calendar_id = oc.id
             AND oc.benteler_plan_id = bp.id
+            AND rat.`status` = 0
             AND rat.approval_user_id = #{userId}
         <if test="name != ''">
             AND bp.`name` LIKE CONCAT('%',#{name},'%')
         </if>
         LIMIT #{page},#{size}
     </select>
-
+    <!-- 获取用户待审批首件计划列表 -->
     <select id="getPlanPassList" parameterType="com.factory.wx.entity.req.PlanPageReq"
             resultType="com.factory.wx.entity.res.PlanPassRes">
         SELECT DISTINCT
             bp.id AS id,
             bp.`name` AS NAME,
-            bp.plan_type AS plan_type,
-            rat.first_article_task_id AS task_id
+            bp.plan_type AS plan_type
         FROM
             first_article_approval_task rat,
             first_article_task ot,
@@ -42,66 +41,185 @@
             rat.first_article_task_id = ot.id
             AND ot.first_article_calendar_id = oc.id
             AND oc.benteler_plan_id = bp.id
+            AND rat.`status` = 0
             AND rat.approval_user_id = #{userId}
         <if test="name != ''">
             AND bp.`name` LIKE CONCAT('%',#{name},'%')
         </if>
         LIMIT #{page},#{size}
     </select>
-    <!-- 获取用户待审批任务列表 -->
-    <select id="getApprovalTaskList" resultType="com.factory.wx.entity.res.PlanApprovalTaskRes">
+<!--    &lt;!&ndash; 防错计划放行详情 &ndash;&gt;-->
+<!--    <select id="getApprovalTaskList" resultType="com.factory.wx.entity.res.PlanApprovalTaskRes">-->
+<!--        SELECT-->
+<!--            ow.ws_name,-->
+<!--            ot.id as onsite_task_id,-->
+<!--            oi.id as item_id,-->
+<!--            oi.item_content,-->
+<!--            oir.result,-->
+<!--            oir.created_time as item_time,-->
+<!--            oir.abnormal,-->
+<!--            oc.type_flag,-->
+<!--            oat.`status`-->
+<!--        FROM-->
+<!--            onsite_item oi,-->
+<!--            onsite_item_result oir,-->
+<!--            onsite_workshop ow,-->
+<!--            onsite_calendar oc,-->
+<!--            onsite_task ot,-->
+<!--            onsite_approval_task oat-->
+<!--        WHERE-->
+<!--            oir.onsite_item_id = oi.id-->
+<!--          AND oi.workshop_id = ow.id-->
+<!--          AND oir.onsite_task_id = ot.id-->
+<!--          AND ot.onsite_calendar_id = oc.id-->
+<!--          AND ot.id = oat.onsite_task_id-->
+<!--          AND oat.approval_user_id = #{userId}-->
+<!--          AND oir.result = 1-->
+<!--    </select>-->
+
+<!--    &lt;!&ndash; 首件计划放行详情 &ndash;&gt;-->
+<!--    <select id="getFirstArticleApprovalTaskList" resultType="com.factory.wx.entity.res.PlanApprovalTaskRes">-->
+<!--        SELECT-->
+<!--            ow.ws_name,-->
+<!--            ot.id as onsite_task_id,-->
+<!--            oi.id as item_id,-->
+<!--            oi.item_content,-->
+<!--            oir.result,-->
+<!--            oir.created_time as item_time,-->
+<!--            oc.type_flag,-->
+<!--            oat.`status`-->
+<!--        FROM-->
+<!--            first_article_item oi,-->
+<!--            first_article_item_result oir,-->
+<!--            first_article_workshop ow,-->
+<!--            first_article_calendar oc,-->
+<!--            first_article_task ot,-->
+<!--            first_article_approval_task oat-->
+<!--        WHERE-->
+<!--            oir.first_article_item_id = oi.id-->
+<!--          AND oi.workshop_id = ow.id-->
+<!--          AND oir.first_article_task_id = ot.id-->
+<!--          AND ot.first_article_calendar_id = oc.id-->
+<!--          AND ot.id = oat.first_article_task_id-->
+<!--          AND oat.approval_user_id = #{userId}-->
+<!--          AND oir.result = 1-->
+<!--    </select>-->
+
+
+
+
+
+
+
+    <!-- 取得首件放行 -->
+    <select id="getFaPassTaskListByPlanId" resultType="com.factory.wx.entity.res.PlanPassTaskRes">
+        SELECT   fac.benteler_plan_id AS plan_id,
+                 bp.`name` AS plan_name,
+                 bp.plan_type,
+                 faat.approval_level,
+                 faat.`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
+        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.`status` = 0
+          AND     fat.`status` = 1
+          AND     bp.id = #{planId}
+    </select>
+    <!-- 取得首件工作站下的巡检项目 -->
+    <select id="getFaPassItemList" resultType="com.factory.wx.entity.res.PlanPassItemRes">
         SELECT
-            ow.ws_name,
-            ot.id as onsite_task_id,
-            oi.id as item_id,
-            oi.item_content,
-            oir.result,
-            oir.created_time as item_time,
-            oir.abnormal,
-            oc.type_flag,
-            oat.`status`
+            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
-            onsite_item oi,
-            onsite_item_result oir,
-            onsite_workshop ow,
-            onsite_calendar oc,
-            onsite_task ot,
-            onsite_approval_task oat
+            first_article_item fai,
+            first_article_item_result fair
         WHERE
-            oir.onsite_item_id = oi.id
-          AND oi.workshop_id = ow.id
-          AND oir.onsite_task_id = ot.id
-          AND ot.onsite_calendar_id = oc.id
-          AND ot.id = oat.onsite_task_id
-          AND oat.approval_user_id = #{userId}
-          AND oir.result = 1
+            fai.id = fair.first_article_item_id
+          AND	fai.workshop_id =  #{req.workshopId}
     </select>
-
-    <select id="getFirstArticleApprovalTaskList" resultType="com.factory.wx.entity.res.PlanApprovalTaskRes">
+    <!-- 取得首件检查结果 -->
+    <select id="getFaPassItemResultList" resultType="com.factory.wx.entity.res.PlanPassItemResultRes">
         SELECT
-            ow.ws_name,
-            ot.id as onsite_task_id,
-            oi.id as item_id,
-            oi.item_content,
-            oir.result,
-            oir.created_time as item_time,
-            oc.type_flag,
-            oat.`status`
+        fair.prefix,
+        fair.sno,
+        fair.val,
+        fair.val_desc,
+        fair.result,
+        fair.tool_desc,
+        fair.abnormal,
+        fair.order_number
         FROM
-            first_article_item oi,
-            first_article_item_result oir,
-            first_article_workshop ow,
-            first_article_calendar oc,
-            first_article_task ot,
-            first_article_approval_task oat
+        first_article_item_result fair,
+        first_article_item fai
         WHERE
-            oir.first_article_item_id = oi.id
-          AND oi.workshop_id = ow.id
-          AND oir.first_article_task_id = ot.id
-          AND ot.first_article_calendar_id = oc.id
-          AND ot.id = oat.first_article_task_id
-          AND oat.approval_user_id = #{userId}
-          AND oir.result = 1
+        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>
 
+
+    <!-- 取得计划下防错待放行 -->
+    <select id="getPmPassTaskListByPlanId" resultType="com.factory.wx.entity.res.PlanPassTaskRes">
+        SELECT  oc.benteler_plan_id AS plan_id,
+                bp.`name` AS plan_name,
+                bp.plan_type,
+                oat.`status`,
+                oc.type_flag,
+                ot.id AS task_id
+        FROM    onsite_task ot,
+                onsite_calendar oc,
+                benteler_plan bp,
+                onsite_approval_task oat
+        WHERE   ot.onsite_calendar_id = oc.id
+          AND     oc.benteler_plan_id = bp.id
+          AND     ot.id = oat.onsite_task_id
+          AND     oat.`status` = 0
+          AND     ot.`status` = 1
+          AND     bp.id = #{planId}
+    </select>
+    <select id="getPmPassItemList" resultType="com.factory.wx.entity.res.PlanPassItemRes">
+        SELECT  oir.onsite_item_id AS item_id,
+                oi.item_content,
+                oi.type_flag AS item_type,
+                oir.result,
+                oir.abnormal,
+               oir.created_time AS item_result_create_time
+        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>
 </mapper>

+ 68 - 67
application-facade/src/main/resources/mapper/PreventMistakeMapper.xml

@@ -19,12 +19,12 @@
 			onsite_approval_plan oap,
 			(
 				SELECT c.benteler_plan_id,
-					   CASE 
-						   WHEN c.count0 &gt; 0 THEN 0 
+					   CASE
+						   WHEN c.count0 &gt; 0 THEN 0
 						   WHEN c.count1 &gt; 0 THEN 0
 						   WHEN (c.count2 + c.count4) = c.count THEN 1
 						   WHEN c.count3 &gt; 0 THEN 2
-						   ELSE -1 
+						   ELSE -1
 					   END AS plan_status
 				FROM   (
 						SELECT  bp.id AS benteler_plan_id,
@@ -45,13 +45,13 @@
 				) c
 			) ps
 		WHERE
-			bp.id = oc.benteler_plan_id 
-			AND oc.user_id = uu.id 
-			AND bp.id = oap.benteler_plan_id 
-			AND bp.id = ps.benteler_plan_id 
-			AND bp.plan_type = 2 
-			AND oap.approval_level = 2 
-			AND oap.`status` = 1 
+			bp.id = oc.benteler_plan_id
+			AND oc.user_id = uu.id
+			AND bp.id = oap.benteler_plan_id
+			AND bp.id = ps.benteler_plan_id
+			AND bp.plan_type = 2
+			AND oap.approval_level = 2
+			AND oap.`status` = 1
 			<if test="req.bentelerPlanName != null and req.bentelerPlanName != ''">
 		    AND bp.`name` LIKE CONCAT('%', #{req.bentelerPlanName}, '%')
 		    </if>
@@ -61,7 +61,7 @@
 		GROUP BY
 			bp.id
     </select>
-    
+
     <!-- 取得防错计划列表(查询所有的防错计划)(计划审批状态plan_status 0待质量经理审批、1待生产经理审批、2已驳回待修改、3审批通过) -->
     <select id="getPmPlanList" resultType="com.factory.web.entity.pm.res.PmPlanListRes">
         SELECT
@@ -86,13 +86,13 @@
                          a.updated_time,
                          uu.username AS approval_person,
 						 a.`status`,
-						 CASE 
+						 CASE
 								 WHEN a.approval_level = 2 AND a.`status` = 0 THEN 1
 								 WHEN a.approval_level = 2 AND a.`status` = 1 THEN 3
 								 WHEN a.approval_level = 2 AND a.`status` = 2 THEN 2
 								 WHEN a.approval_level = 1 AND a.`status` = 0 THEN 0
 								 WHEN a.approval_level = 1 AND a.`status` = 2 THEN 2
-								 ELSE -1 
+								 ELSE -1
 						 END AS plan_status
 				FROM   onsite_approval_plan a,
 							 (
@@ -101,10 +101,10 @@
 									MAX( oap.approval_level ) AS approval_level
 								FROM
 									benteler_plan bp,
-									onsite_approval_plan oap 
+									onsite_approval_plan oap
 								WHERE
-									bp.id = oap.benteler_plan_id 
-									 
+									bp.id = oap.benteler_plan_id
+
 								GROUP BY
 									bp.id
 							 ) b,
@@ -123,7 +123,7 @@
 		    AND bp.plan_type = #{req.planType}
 		    </if>
     </select>
-    
+
     <!--取得防错计划当天任务信息-->
     <select id="getTaskList" resultType="com.factory.web.entity.pm.res.PmTaskListRes">
         SELECT  bp.id AS benteler_plan_id,
@@ -138,29 +138,29 @@
 		AND     TO_DAYS(ot.task_time) = TO_DAYS(NOW())
 		AND     bp.id = #{req.bentelerPlanId}
     </select>
-    
+
     <!--取得检查记录 -->
     <!-- 取得计划下的工作站和巡检项目 -->
     <select id="getPmWorkshopItemList" resultType="com.factory.web.entity.pm.res.PmCheckRecordListRes">
         SELECT oi.workshop_id,
 			   ow.ws_name,
 			   oi.id AS onsite_item_id,
-			   oi.item_content 
+			   oi.item_content
 		FROM   onsite_item oi,
-			   onsite_workshop ow 
-		WHERE  oi.workshop_id = ow.id 
+			   onsite_workshop ow
+		WHERE  oi.workshop_id = ow.id
 		AND    ow.benteler_plan_id = #{req.bentelerPlanId}
 		ORDER BY oi.workshop_id, oi.id
     </select>
     <!-- 取得一个月里巡检项目每天的检查结果 --><!-- 暂时取onsite_task的时间,如果取onsite_item_result的时间,会不会有第二天才处理头一天的任务的 -->
     <select id="getPmItemResultList" resultType="com.factory.web.entity.pm.res.PmCheckRecordRes">
         SELECT ot.task_time,
-			   oir.result 
+			   oir.result
 		FROM   onsite_item_result oir,
 			   onsite_task ot,
 			   onsite_item oi
-		WHERE  oir.onsite_task_id = ot.id 
-		AND    oir.onsite_item_id = oi.id 
+		WHERE  oir.onsite_task_id = ot.id
+		AND    oir.onsite_item_id = oi.id
 		AND    oi.type_flag = #{req.typeFlag}
 		<if test="req.yearMonth != null and req.yearMonth != ''">
 		AND    DATE_FORMAT(ot.task_time, '%Y-%m') = #{req.yearMonth}
@@ -196,7 +196,7 @@
 		AND    oc.user_id = #{req.userId}
         -- GROUP BY ot.id
     </select>
-    
+
     <!--取得审批人 -->
     <select id="getApprovalUser" resultType="com.factory.web.entity.pm.res.ApprovalUserRes">
         SELECT  uur.user_id,
@@ -228,7 +228,7 @@
 			JOIN us_user uu ON (oc.user_id = uu.id )
 			LEFT JOIN onsite_task ot ON (oc.id = ot.onsite_calendar_id )
 			LEFT JOIN onsite_item_result oir ON (ot.id = oir.onsite_task_id )
-		WHERE TO_DAYS( ot.task_time ) = TO_DAYS( NOW( ) ) 
+		WHERE TO_DAYS( ot.task_time ) = TO_DAYS( NOW( ) )
 			AND bp.id = #{req.bentelerPlanId}
 		GROUP BY
 			ot.onsite_calendar_id
@@ -248,7 +248,7 @@
 		AND     oir.onsite_task_id = #{req.onsiteTaskId}
 		AND     oi.type_flag = #{req.typeFlag}
     </select>
-    
+
     <!-- 取得不放行任务对应的点检项目 -->
     <select id="getPmItemNoGoList" resultType="com.factory.web.entity.pm.res.PmItemNoGoListRes">
         SELECT
@@ -259,12 +259,12 @@
 		FROM
 			onsite_item_result oir,
 			onsite_task ot,
-			onsite_item oi 
+			onsite_item oi
 		WHERE
-			oir.onsite_task_id = ot.id 
-			AND oir.onsite_item_id = oi.id 
-			AND ot.`status` = 3 
-			AND oir.result = 1 
+			oir.onsite_task_id = ot.id
+			AND oir.onsite_item_id = oi.id
+			AND ot.`status` = 3
+			AND oir.result = 1
 			AND oi.workshop_id = #{req.workshopId}
 			AND oir.onsite_task_id = #{req.onsiteTaskId}
 			AND oi.type_flag = #{req.typeFlag}
@@ -275,20 +275,20 @@
 			oat.approval_user_id,
 			uu.username AS approval_person,
 			oat.reason,
-			oat.updated_time AS approval_time 
+			oat.updated_time AS approval_time
 		FROM
 			onsite_task ot,
 			onsite_approval_task oat,
-			us_user uu 
+			us_user uu
 		WHERE
-			ot.id = oat.onsite_task_id 
-			AND oat.approval_user_id = uu.id 
-			AND ot.`status` = 3 
-			AND oat.approval_level = 2 
-			AND oat.`status` = 2 
+			ot.id = oat.onsite_task_id
+			AND oat.approval_user_id = uu.id
+			AND ot.`status` = 3
+			AND oat.approval_level = 2
+			AND oat.`status` = 2
 			AND ot.id = #{req.onsiteTaskId}
     </select>
-    <!-- 
+    <!--
     <select id="getPmItemNoGoList" resultType="com.factory.web.entity.pm.res.PmItemNoGoListRes">
         SELECT  oir.onsite_item_id,
 		        oi.item_content,
@@ -312,7 +312,7 @@
 		AND     oir.onsite_task_id = #{req.onsiteTaskId}
     </select>
      -->
-    
+
     <!--取得审批人 -->
     <select id="getLatestApprovalInfo" resultType="com.factory.web.entity.pm.OnsiteApprovalPlan">
         SELECT  oap.benteler_plan_id,
@@ -332,7 +332,7 @@
 		AND     oap.approval_level = a.approval_level
 		AND     oap.benteler_plan_id = #{req.bentelerPlanId}
     </select>
-    
+
     <!-- 取得计划下的点检项目数 -->
 	<select id="getPmItemCount" resultType="int">
 		SELECT COUNT(oi.id)
@@ -341,7 +341,7 @@
 		WHERE  oi.workshop_id = ow.id
 		AND    ow.benteler_plan_id = #{req.bentelerPlanId}
 	</select>
-	
+
 	<!-- 取得计划下当前task的点检结果数 -->
 	<select id="getPmItemResultCount" resultType="int">
 		SELECT  COUNT(oir.id)
@@ -353,7 +353,7 @@
 		AND     ow.benteler_plan_id = #{req.bentelerPlanId}
 		AND     oir.onsite_task_id = #{req.onsiteTaskId}
 	</select>
-	
+
 	<!-- 取得工作站下的点检项目数 -->
 	<select id="getPmWsItemCount" resultType="int">
 	    SELECT COUNT(oi.id)
@@ -361,7 +361,7 @@
 		WHERE  oi.workshop_id = #{req.workshopId}
 		AND    oi.type_flag = #{req.typeFlag}
 	</select>
-	
+
 	<!-- 取得工作站下当前task的点检结果数 -->
 	<select id="getPmWsItemResultCount" resultType="int">
 		SELECT  COUNT(oir.id)
@@ -372,11 +372,11 @@
 		AND     oir.onsite_task_id = #{req.onsiteTaskId}
 		AND     oi.type_flag = #{req.typeFlag}
 	</select>
-	
-	
-	
-	
-	
+
+
+
+
+
 	<!-- 取得防错放行 -->
     <select id="getPmReleaseList" resultType="com.factory.web.entity.pm.res.AbnormalTaskInfoRes">
         SELECT  oc.benteler_plan_id,
@@ -403,7 +403,7 @@
 		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,
@@ -430,23 +430,24 @@
 		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,
-				oir.abnormal
+				oir.abnormal,
+                oir.created_time AS item_result_create_time
 		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,
@@ -473,7 +474,7 @@
 		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,
@@ -500,7 +501,7 @@
 		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
@@ -522,13 +523,13 @@
 			fai.first_flag,
 			fai.two_hundred_flag,
 			fai.catch_flag,
-			fai.val_unit 
+			fai.val_unit
 		FROM
-			first_article_item fai 
+			first_article_item fai
 		WHERE
 			fai.workshop_id = #{req.workshopId}
     </select>
-    
+
     <!-- 取得首件检查结果 -->
     <select id="getFaAbnormalItemResultList" resultType="com.factory.web.entity.pm.res.AbnormalItemResultRes">
         SELECT
@@ -539,7 +540,7 @@
 			fair.result,
 			fair.tool_desc,
 			fair.abnormal,
-			fair.order_number 
+			fair.order_number
 		FROM
 			first_article_item_result fair,
 			first_article_item fai
@@ -548,16 +549,16 @@
 			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 
+			AND fai.first_flag = 1
 			</if>
 			<if test="req.typeFlag == 1"> <!-- 200件 -->
-			AND fai.two_hundred_flag = 1 
+			AND fai.two_hundred_flag = 1
 			</if>
 			<if test="req.typeFlag == 2"> <!-- 中断 -->
 			AND fai.catch_flag = 1
 			</if>
     </select>
-    
+
     <!--取得PAD端工作站 -->
     <select id="getPmWorkshopListForPad" resultType="com.factory.web.entity.pm.OnsiteWorkshop">
         SELECT  DISTINCT ow.id,
@@ -569,5 +570,5 @@
 		AND     ow.benteler_plan_id = #{req.bentelerPlanId}
 		AND     oi.type_flag = #{req.typeFlag}
     </select>
-    
+
 </mapper>

+ 2 - 2
common-config/src/main/java/com/factory/config/log/RequestLogAspect.java

@@ -46,7 +46,7 @@ public class RequestLogAspect {
         requestInfo.setRequestParams(getRequestParamsByProceedingJoinPoint(proceedingJoinPoint));
         requestInfo.setResponseResult(result);
         requestInfo.setTimeCost(System.currentTimeMillis() - start);
-        LOGGER.info("Request Info ::: {}", JSON.toJSONString(requestInfo));
+//        LOGGER.info("Request Info ::: {}", JSON.toJSONString(requestInfo));
         return result;
     }
 
@@ -63,7 +63,7 @@ public class RequestLogAspect {
                 joinPoint.getSignature().getName()));
         requestErrorInfo.setRequestParams(getRequestParamsByJoinPoint(joinPoint));
         requestErrorInfo.setException(e);
-        LOGGER.info("Error Request Info ::: {}", JSON.toJSONString(requestErrorInfo));
+//        LOGGER.info("Error Request Info ::: {}", JSON.toJSONString(requestErrorInfo));
     }
 
     /**