wuzhenyue 3 жил өмнө
parent
commit
4c5e545da8
16 өөрчлөгдсөн 558 нэмэгдсэн , 18 устгасан
  1. 37 2
      application-facade/src/main/java/com/factory/controller/web/FirstArticleController.java
  2. 1 1
      application-facade/src/main/java/com/factory/web/entity/fa/FirstArticleCalendar.java
  3. 14 0
      application-facade/src/main/java/com/factory/web/entity/fa/FirstArticleItem.java
  4. 11 2
      application-facade/src/main/java/com/factory/web/entity/fa/req/AddFaItemResultListReq.java
  5. 29 0
      application-facade/src/main/java/com/factory/web/entity/fa/req/SearchALLPlanListReq.java
  6. 32 0
      application-facade/src/main/java/com/factory/web/entity/fa/req/SearchFaCheckRecordListReq.java
  7. 38 0
      application-facade/src/main/java/com/factory/web/entity/fa/req/SearchFaTaskInfoReq.java
  8. 38 0
      application-facade/src/main/java/com/factory/web/entity/fa/req/SubmitFaTaskReq.java
  9. 33 0
      application-facade/src/main/java/com/factory/web/entity/fa/res/FaCheckRecordListRes.java
  10. 0 1
      application-facade/src/main/java/com/factory/web/entity/fa/res/FaItemListForPadRes.java
  11. 41 0
      application-facade/src/main/java/com/factory/web/entity/fa/res/FaNoGoTaskAapprovalRes.java
  12. 18 0
      application-facade/src/main/java/com/factory/web/mapper/fa/FirstArticleMapper.java
  13. 37 1
      application-facade/src/main/java/com/factory/web/service/fa/FirstArticleService.java
  14. 168 10
      application-facade/src/main/java/com/factory/web/service/impl/fa/FirstArticleServiceImpl.java
  15. 60 0
      application-facade/src/main/resources/mapper/FirstArticleMapper.xml
  16. 1 1
      common-base/src/main/java/com/factory/base/entity/po/benteler/BentelerPlan.java

+ 37 - 2
application-facade/src/main/java/com/factory/controller/web/FirstArticleController.java

@@ -10,6 +10,7 @@ import org.springframework.web.bind.annotation.RestController;
 
 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.web.entity.fa.FirstArticleTitle;
 import com.factory.web.entity.fa.FirstArticleWorkshop;
@@ -17,6 +18,8 @@ import com.factory.web.entity.fa.req.AddFaItemResultListReq;
 import com.factory.web.entity.fa.req.AddFaPlanReq;
 import com.factory.web.entity.fa.req.EditFaItemResultListReq;
 import com.factory.web.entity.fa.req.EditFaPlanReq;
+import com.factory.web.entity.fa.req.SearchALLPlanListReq;
+import com.factory.web.entity.fa.req.SearchFaCheckRecordListReq;
 import com.factory.web.entity.fa.req.SearchFaItemListForPadReq;
 import com.factory.web.entity.fa.req.SearchFaItemNoGoListReq;
 import com.factory.web.entity.fa.req.SearchFaPlanCheckListReq;
@@ -25,14 +28,18 @@ import com.factory.web.entity.fa.req.SearchFaPlanReq;
 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.SubmitFaTaskReq;
+import com.factory.web.entity.fa.res.FaCheckRecordListRes;
 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.FaPlanRes;
 import com.factory.web.entity.fa.res.FaWorkshopNoGoListRes;
-import com.factory.web.entity.pm.OnsiteTitle;
+import com.factory.web.entity.pm.OnsiteApprovalPlan;
 import com.factory.web.entity.pm.req.PmPlanPauseFlagReq;
+import com.factory.web.entity.pm.req.SearchPmPlanReq;
 import com.factory.web.service.fa.FirstArticleService;
 import com.factory.web.service.pm.PreventMistakeService;
 
@@ -125,7 +132,7 @@ public class FirstArticleController {
 	@ApiOperation(value = "任务检查完后提交")
 	@PostMapping("/submitFaTask")
 	@ApiOperationSupport(order = 17)
-	public ResponseBean submitFaTask(@RequestBody SearchFaTaskReq req) {
+	public ResponseBean submitFaTask(@RequestBody SubmitFaTaskReq req) {
 		return ResponseBeanBuilder.ok(firstArticleService.submitFaTask(req));
 	}
 	
@@ -159,4 +166,32 @@ public class FirstArticleController {
 		return ResponseBeanBuilder.ok(firstArticleTitle);
 	}
 	
+	@ApiOperation(value = "取得不放行任务对应的质量经理审批信息")
+	@ApiOperationSupport(order = 20)
+	@PostMapping("/getFaNoGoTaskAapproval")
+	public ResponseBean<FaNoGoTaskAapprovalRes> getFaNoGoTaskAapproval(@RequestBody SearchFaTaskReq req) {
+		return firstArticleService.getFaNoGoTaskAapproval(req);
+	}
+	
+	@ApiOperation(value = "取得计划审批信息")
+	@ApiOperationSupport(order = 8)
+	@PostMapping("/getFaPlanApprovalList")
+	public ResponseBean<List<OnsiteApprovalPlan>> getFaPlanApprovalList(@RequestBody SearchPmPlanReq req) {
+		return preventMistakeService.getPmPlanApprovalList(req);
+	}
+	
+	@ApiOperation(value = "取得所有计划(首件、防错)")
+	@ApiOperationSupport(order = 8)
+	@PostMapping("/getALLPlanList")
+	public ResponseBean<List<BentelerPlan>> getALLPlanList(@RequestBody SearchALLPlanListReq req) {
+		return firstArticleService.getALLPlanList(req);
+	}
+	
+	@ApiOperation(value = "检查记录列表")
+	@ApiOperationSupport(order = 11)
+	@PostMapping("/getFaCheckRecordList")
+	public ResponseBean<FaCheckRecordListRes> getFaCheckRecordList(@RequestBody SearchFaCheckRecordListReq req) {
+		return firstArticleService.getFaCheckRecordList(req);
+	}
+	
 }

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

@@ -50,7 +50,7 @@ public class FirstArticleCalendar implements Serializable {
 	@ApiModelProperty(value = "点检人对应的用户ID")
 	private Long userId;
 	
-	@ApiModelProperty(value = "0表示首件 1表示200件")
+	@ApiModelProperty(value = "0表示首件 1表示200件 2表示中断")
 	private Integer typeFlag;
 
 }

+ 14 - 0
application-facade/src/main/java/com/factory/web/entity/fa/FirstArticleItem.java

@@ -1,8 +1,10 @@
 package com.factory.web.entity.fa;
 
 import java.io.Serializable;
+import java.util.List;
 
 import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
 
@@ -85,4 +87,16 @@ public class FirstArticleItem implements Serializable {
 	
 	@ApiModelProperty(value = "检验频次中断 0没选择 1选择")
 	private Integer catchFlag;
+	
+	@TableField(exist = false)
+	@ApiModelProperty(value = "首件检查结果")
+    private List<FirstArticleItemResult> firstItemResultList; // 用于页面返回值
+	
+	@TableField(exist = false)
+	@ApiModelProperty(value = "200件检查结果")
+    private List<FirstArticleItemResult> twoHundredItemResultList; // 用于页面返回值
+	
+	@TableField(exist = false)
+	@ApiModelProperty(value = "中断检查结果")
+    private List<FirstArticleItemResult> catchItemResultList; // 用于页面返回值
 }

+ 11 - 2
application-facade/src/main/java/com/factory/web/entity/fa/req/AddFaItemResultListReq.java

@@ -25,8 +25,17 @@ import lombok.NoArgsConstructor;
 @ApiModel("")
 public class AddFaItemResultListReq {
 	
-	@ApiModelProperty(value = "任务id")
-	private Long firstArticleTaskId;
+//	@ApiModelProperty(value = "任务id")
+//	private Long firstArticleTaskId;
+	
+	@ApiModelProperty(value = "计划id")
+	private Long bentelerPlanId;
+	
+	@ApiModelProperty(value = "0表示首件 1表示200件 2表示中断")
+	private Integer typeFlag;
+	
+	@ApiModelProperty(value = "点检人对应的用户ID")
+	private Long userId;
 	
 	@ApiModelProperty(value = "巡检项目检查结果")
 	private List<AddFaItemResultReq> addFaItemResultList;

+ 29 - 0
application-facade/src/main/java/com/factory/web/entity/fa/req/SearchALLPlanListReq.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 SearchALLPlanListReq {
+	
+	@ApiModelProperty(value = "计划类型 1首件 2防错")
+    private Integer planType;
+	
+}

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

@@ -0,0 +1,32 @@
+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 SearchFaCheckRecordListReq {
+	
+	@ApiModelProperty(value = "计划Id")
+	private Long bentelerPlanId;
+	
+	@ApiModelProperty(value = "日期", example = "2021-06-08")
+	private String date;
+	
+}

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

@@ -0,0 +1,38 @@
+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 SearchFaTaskInfoReq {
+	
+	@ApiModelProperty(value = "计划id")
+	private Long bentelerPlanId;
+	
+	@ApiModelProperty(value = "0表示首件 1表示200件 2表示中断")
+	private Integer typeFlag;
+	
+	@ApiModelProperty(value = "点检人对应的用户ID")
+	private Long userId;
+	
+	@ApiModelProperty(value = "0初始化 1待审核状态 2放行 3不通过 4通过")
+	private Integer status;
+
+}

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

@@ -0,0 +1,38 @@
+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 SubmitFaTaskReq {
+	
+//	@ApiModelProperty(value = "任务id")
+//	private Long firstArticleTaskId;
+	
+	@ApiModelProperty(value = "计划id")
+	private Long bentelerPlanId;
+	
+	@ApiModelProperty(value = "0表示首件 1表示200件 2表示中断")
+	private Integer typeFlag;
+	
+	@ApiModelProperty(value = "点检人对应的用户ID")
+	private Long userId;
+
+}

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

@@ -0,0 +1,33 @@
+package com.factory.web.entity.fa.res;
+
+import java.io.Serializable;
+import java.util.List;
+
+import com.factory.web.entity.fa.FirstArticleWorkshop;
+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 FaCheckRecordListRes implements Serializable {
+	
+	@ApiModelProperty(value = "检查记录信息")
+	private List<FirstArticleWorkshop> firstArticleWorkshopList;
+
+}

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

@@ -19,7 +19,6 @@ import lombok.NoArgsConstructor;
  * @date 2021-07-09 12:00:00
  */
 @Data
-@TableName("first_article_item")
 @Builder
 @NoArgsConstructor
 @AllArgsConstructor

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

@@ -0,0 +1,41 @@
+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 FaNoGoTaskAapprovalRes implements Serializable {
+
+	@ApiModelProperty(value = "质量经理用户id")
+	private Long approvalUserId;
+
+	@ApiModelProperty(value = "质量经理")
+	private String approvalPerson;
+	
+	@ApiModelProperty(value = "评审意见")
+	private String reason;
+	
+	@ApiModelProperty(value = "审批时间")
+	private LocalDateTime approvalTime;
+	
+}

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

@@ -8,15 +8,19 @@ import org.apache.ibatis.annotations.Param;
 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.fa.FirstArticleTask;
 import com.factory.web.entity.fa.FirstArticleWorkshop;
 import com.factory.web.entity.fa.req.SearchFaItemListForPadReq;
 import com.factory.web.entity.fa.req.SearchFaItemNoGoListReq;
 import com.factory.web.entity.fa.req.SearchFaPlanCheckListReq;
 import com.factory.web.entity.fa.req.SearchFaPlanListForPadReq;
+import com.factory.web.entity.fa.req.SearchFaTaskInfoReq;
+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.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;
@@ -72,4 +76,18 @@ public interface FirstArticleMapper extends BaseMapper<BentelerPlan> {
      * @return 不放行任务对应的点检项目
      */
     public List<FaItemNoGoListRes> getFaItemNoGoList(@Param("req") SearchFaItemNoGoListReq req);
+    
+    /**
+     * 取得任务(首件、200件都是后台生成的任务,每个用户、计划、当天、类型(首件或200件))对应的应该是一个task。中断的task可以随便提交,所以要取状态是0初始化的,用户是-1这个userId不用传
+     * @param req
+     * @return 任务
+     */
+    public FirstArticleTask getFaTaskInfo(@Param("req") SearchFaTaskInfoReq req);
+    
+    /**
+     * 取得不放行任务对应的审批人、审批意见、审批时间
+     * @param req
+     * @return 不放行任务对应的审批人、审批意见、审批时间
+     */
+    public FaNoGoTaskAapprovalRes getFaNoGoTaskAapproval(@Param("req") SearchFaTaskReq req);
 }

+ 37 - 1
application-facade/src/main/java/com/factory/web/service/fa/FirstArticleService.java

@@ -6,22 +6,29 @@ import com.baomidou.mybatisplus.extension.service.IService;
 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.web.entity.fa.FirstArticleTask;
 import com.factory.web.entity.fa.FirstArticleTitle;
 import com.factory.web.entity.fa.FirstArticleWorkshop;
 import com.factory.web.entity.fa.req.AddFaItemResultListReq;
 import com.factory.web.entity.fa.req.AddFaPlanReq;
 import com.factory.web.entity.fa.req.EditFaItemResultListReq;
 import com.factory.web.entity.fa.req.EditFaPlanReq;
+import com.factory.web.entity.fa.req.SearchALLPlanListReq;
+import com.factory.web.entity.fa.req.SearchFaCheckRecordListReq;
 import com.factory.web.entity.fa.req.SearchFaItemListForPadReq;
 import com.factory.web.entity.fa.req.SearchFaItemNoGoListReq;
 import com.factory.web.entity.fa.req.SearchFaPlanCheckListReq;
 import com.factory.web.entity.fa.req.SearchFaPlanListForPadReq;
 import com.factory.web.entity.fa.req.SearchFaPlanReq;
+import com.factory.web.entity.fa.req.SearchFaTaskInfoReq;
 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.SubmitFaTaskReq;
+import com.factory.web.entity.fa.res.FaCheckRecordListRes;
 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.FaPlanRes;
@@ -119,7 +126,7 @@ public interface FirstArticleService extends IService<BentelerPlan> {
 	 * @param req
 	 * @return
 	 */
-	public ResponseBean submitFaTask(SearchFaTaskReq req);
+	public ResponseBean submitFaTask(SubmitFaTaskReq req);
 	
 	/**
 	 * 取得不放行任务对应的工作站
@@ -161,5 +168,34 @@ public interface FirstArticleService extends IService<BentelerPlan> {
 	 */
 	public FirstArticleTitle getFaTitle(Long bentelerPlanId);
 
+	/**
+     * 取得任务(首件、200件都是后台生成的任务,每个用户、计划、当天、类型(首件或200件))对应的应该是一个task。中断的task可以随便提交,所以要取状态是0初始化的,用户是-1这个userId不用传
+     * @param req
+     * @return 任务
+     */
+    public FirstArticleTask getFaTaskInfo(SearchFaTaskInfoReq req);
+    
+    /**
+	 * 取得不放行任务对应的质量经理审批信息
+	 * 
+	 * @param req
+	 * @return 不放行任务对应的质量经理审批信息
+	 */
+	public ResponseBean<FaNoGoTaskAapprovalRes> getFaNoGoTaskAapproval(SearchFaTaskReq req);
 	
+	/**
+	 * 取得所有计划
+	 * 
+	 * @param req
+	 * @return 所有计划
+	 */
+	public ResponseBean<List<BentelerPlan>> getALLPlanList(SearchALLPlanListReq req);
+	
+	/**
+	 * 检查记录列表
+	 * 
+	 * @param req
+	 * @return 检查记录列表
+	 */
+	public ResponseBean<FaCheckRecordListRes> getFaCheckRecordList(SearchFaCheckRecordListReq req);
 }

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

@@ -4,6 +4,7 @@ import java.io.ByteArrayInputStream;
 import java.io.ByteArrayOutputStream;
 import java.io.ObjectInputStream;
 import java.io.ObjectOutputStream;
+import java.time.LocalDate;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.function.Function;
@@ -40,24 +41,28 @@ import com.factory.web.entity.fa.req.EditFaPlanReq;
 import com.factory.web.entity.fa.req.FirstArticleCalendarReq;
 import com.factory.web.entity.fa.req.FirstArticleItemReq;
 import com.factory.web.entity.fa.req.FirstArticleWorkshopReq;
+import com.factory.web.entity.fa.req.SearchALLPlanListReq;
+import com.factory.web.entity.fa.req.SearchFaCheckRecordListReq;
 import com.factory.web.entity.fa.req.SearchFaItemListForPadReq;
 import com.factory.web.entity.fa.req.SearchFaItemNoGoListReq;
 import com.factory.web.entity.fa.req.SearchFaPlanCheckListReq;
 import com.factory.web.entity.fa.req.SearchFaPlanListForPadReq;
 import com.factory.web.entity.fa.req.SearchFaPlanReq;
+import com.factory.web.entity.fa.req.SearchFaTaskInfoReq;
 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.SubmitFaTaskReq;
+import com.factory.web.entity.fa.res.FaCheckRecordListRes;
 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.FaPlanRes;
 import com.factory.web.entity.fa.res.FaTaskRes;
 import com.factory.web.entity.fa.res.FaWorkshopNoGoListRes;
 import com.factory.web.entity.pm.OnsiteApprovalPlan;
-import com.factory.web.entity.pm.OnsiteTitle;
-import com.factory.web.entity.pm.OnsiteTitleBlob;
 import com.factory.web.entity.pm.res.ApprovalUserRes;
 import com.factory.web.mapper.fa.FirstArticleMapper;
 import com.factory.web.service.BentelerPlanService;
@@ -515,10 +520,55 @@ public class FirstArticleServiceImpl extends ServiceImpl<FirstArticleMapper, Ben
      */
     @Override
     public ResponseBean addFaItemResult(AddFaItemResultListReq req) {
+    	/* 取得task信息 */
+    	SearchFaTaskInfoReq searchFaTaskInfoReq = new SearchFaTaskInfoReq();
+    	searchFaTaskInfoReq.setBentelerPlanId(req.getBentelerPlanId());
+    	searchFaTaskInfoReq.setTypeFlag(req.getTypeFlag());
+    	if (req.getTypeFlag() == 0 || req.getTypeFlag() == 1) { // 0表示首件 1表示200件
+    		searchFaTaskInfoReq.setUserId(req.getUserId());
+    	} else { // 2表示中断
+    		searchFaTaskInfoReq.setStatus(0); // task状态为0初始化
+    	}
+    	FirstArticleTask faTaskInfo = this.getFaTaskInfo(searchFaTaskInfoReq);
+    	
+    	long firstArticleTaskId = 0;
+    	if (req.getTypeFlag() == 0 || req.getTypeFlag() == 1) { // 0表示首件 1表示200件
+    		if (faTaskInfo == null) {
+    			return ResponseBeanBuilder.fail("计划任务不存在!");
+    		} else {
+    			if (faTaskInfo.getStatus() == 0) {
+    				firstArticleTaskId = faTaskInfo.getId();
+    			} else {
+    				return ResponseBeanBuilder.fail("该计划任务已处理!无需重复提交!");
+    			}
+    		}
+    	} else { // 2表示中断
+    		if (faTaskInfo == null) { // 没有初始化状态的task,新建一个
+    			/* 取得中断对应的规则 */
+    			FirstArticleCalendar firstArticleCalendar = firstArticleCalendarService.getOne(new LambdaQueryWrapper<FirstArticleCalendar>()
+    	    			.eq(FirstArticleCalendar::getBentelerPlanId, req.getBentelerPlanId())
+    	    			.eq(FirstArticleCalendar::getTypeFlag, 2));
+
+    			/* 创建一个新的中断task */
+    			FirstArticleTask firstArticleTask = FirstArticleTask.builder()
+    					.firstArticleCalendarId(firstArticleCalendar.getId())
+    					.status(0)
+    					.taskTime(LocalDate.now())
+    					.remindTaskFlag(0)
+    					.remindNoworkFlag(0)
+    					.build();
+    			firstArticleTaskService.save(firstArticleTask);
+    			
+    			firstArticleTaskId = firstArticleTask.getId();
+    		} else { // 存在一个初始化状态的task,就用这个
+    			firstArticleTaskId = faTaskInfo.getId();
+    		}
+    	}
+
     	List<AddFaItemResultReq> addFaItemResultList = req.getAddFaItemResultList();
     	for (AddFaItemResultReq addFaItemResult : addFaItemResultList) {
     		FirstArticleItemResult firstArticleItemResult = FirstArticleItemResult.builder()
-    				.firstArticleTaskId(req.getFirstArticleTaskId())
+    				.firstArticleTaskId(firstArticleTaskId)
     				.firstArticleItemId(addFaItemResult.getFirstArticleItemId())
     				.val(addFaItemResult.getVal())
     				.valDesc(addFaItemResult.getValDesc())
@@ -532,19 +582,63 @@ public class FirstArticleServiceImpl extends ServiceImpl<FirstArticleMapper, Ben
 
 		return ResponseBeanBuilder.ok();
 	}
-	
-    
-    
+
     /**
      * 任务提交
      * @param req
      * @return
      */
 	@Override
-	public ResponseBean submitFaTask(SearchFaTaskReq req) {
+	public ResponseBean submitFaTask(SubmitFaTaskReq req) {
+		/* 取得task信息 */
+    	SearchFaTaskInfoReq searchFaTaskInfoReq = new SearchFaTaskInfoReq();
+    	searchFaTaskInfoReq.setBentelerPlanId(req.getBentelerPlanId());
+    	searchFaTaskInfoReq.setTypeFlag(req.getTypeFlag());
+    	if (req.getTypeFlag() == 0 || req.getTypeFlag() == 1) { // 0表示首件 1表示200件
+    		searchFaTaskInfoReq.setUserId(req.getUserId());
+    	} else { // 2表示中断
+    		searchFaTaskInfoReq.setStatus(0); // task状态为0初始化
+    	}
+    	FirstArticleTask faTaskInfo = this.getFaTaskInfo(searchFaTaskInfoReq);
+    	
+    	long firstArticleTaskId = 0;
+    	if (req.getTypeFlag() == 0 || req.getTypeFlag() == 1) { // 0表示首件 1表示200件
+    		if (faTaskInfo == null) {
+    			return ResponseBeanBuilder.fail("计划任务不存在!");
+    		} else {
+    			if (faTaskInfo.getStatus() == 0) {
+    				firstArticleTaskId = faTaskInfo.getId();
+    			} else {
+    				return ResponseBeanBuilder.fail("该计划任务已处理!无需重复提交!");
+    			}
+    		}
+    	} else { // 2表示中断
+    		if (faTaskInfo == null) { // 没有初始化状态的task,新建一个
+    			return ResponseBeanBuilder.fail("计划任务不存在!");
+//    			/* 取得中断对应的规则 */
+//    			FirstArticleCalendar firstArticleCalendar = firstArticleCalendarService.getOne(new LambdaQueryWrapper<FirstArticleCalendar>()
+//    	    			.eq(FirstArticleCalendar::getBentelerPlanId, req.getBentelerPlanId())
+//    	    			.eq(FirstArticleCalendar::getTypeFlag, 2));
+//
+//    			/* 创建一个新的中断task */
+//    			FirstArticleTask firstArticleTask = FirstArticleTask.builder()
+//    					.firstArticleCalendarId(firstArticleCalendar.getId())
+//    					.status(0)
+//    					.taskTime(LocalDate.now())
+//    					.remindTaskFlag(0)
+//    					.remindNoworkFlag(0)
+//    					.build();
+//    			firstArticleTaskService.save(firstArticleTask);
+//    			
+//    			firstArticleTaskId = firstArticleTask.getId();
+    		} else { // 存在一个初始化状态的task,就用这个
+    			firstArticleTaskId = faTaskInfo.getId();
+    		}
+    	}
+
 		/* 取得task下的所有条目检查结果 */
 		List<FirstArticleItemResult> firstArticleItemResultList = firstArticleItemResultService.list(Wrappers.<FirstArticleItemResult>lambdaQuery()
-                .eq(FirstArticleItemResult::getFirstArticleTaskId, req.getFirstArticleTaskId()));
+                .eq(FirstArticleItemResult::getFirstArticleTaskId, firstArticleTaskId));
 		
 		boolean flag = true; // true表示巡检项目都通过,false表示巡检项目有不通过的
 		for (FirstArticleItemResult firstArticleItemResult : firstArticleItemResultList) {
@@ -556,14 +650,14 @@ public class FirstArticleServiceImpl extends ServiceImpl<FirstArticleMapper, Ben
 
 		if (flag) { // 巡检项目都通过
 			FirstArticleTask firstArticleTask = FirstArticleTask.builder()
-					.id(req.getFirstArticleTaskId())
+					.id(firstArticleTaskId)
 					.status(4)
 					.build();
 			firstArticleTaskService.updateById(firstArticleTask);
 		} else { // 巡检项目有不通过的
 			/* 更新任务为1待审核状态。等待后续审核 */
 			FirstArticleTask firstArticleTask = FirstArticleTask.builder()
-					.id(req.getFirstArticleTaskId())
+					.id(firstArticleTaskId)
 					.status(1)
 					.build();
 			firstArticleTaskService.updateById(firstArticleTask);
@@ -695,6 +789,70 @@ public class FirstArticleServiceImpl extends ServiceImpl<FirstArticleMapper, Ben
 		return firstArticleTitle;
     }
 	
+    
+    /**
+     * 取得任务(首件、200件都是后台生成的任务,每个用户、计划、当天、类型(首件或200件))对应的应该是一个task。中断的task可以随便提交,所以要取状态是0初始化的,用户是-1这个userId不用传
+     * @param req
+     * @return 任务
+     */
+    @Override
+    public FirstArticleTask getFaTaskInfo(SearchFaTaskInfoReq req) {
+    	FirstArticleTask firstArticleTask = firstArticleMapper.getFaTaskInfo(req);
+        return firstArticleTask;
+    }
+    
+    /**
+	 * 取得不放行任务对应的质量经理审批信息
+	 * 
+	 * @param req
+	 * @return 不放行任务对应的质量经理审批信息
+	 */
+    @Override
+	public ResponseBean<FaNoGoTaskAapprovalRes> getFaNoGoTaskAapproval(SearchFaTaskReq req) {
+    	FaNoGoTaskAapprovalRes faNoGoTaskAapprovalRes = firstArticleMapper.getFaNoGoTaskAapproval(req);
+    	return ResponseBeanBuilder.ok(faNoGoTaskAapprovalRes);
+    }
+    
+    /**
+	 * 取得所有计划
+	 * 
+	 * @param req
+	 * @return 所有计划
+	 */
+    @Override
+	public ResponseBean<List<BentelerPlan>> getALLPlanList(SearchALLPlanListReq req) {
+    	List<BentelerPlan> aLLPlanList = planService.list(Wrappers.<BentelerPlan>lambdaQuery()
+                .eq(BentelerPlan::getPlanType, req.getPlanType())
+                .eq(BentelerPlan::getPauseFlag, false));
+        return ResponseBeanBuilder.ok(aLLPlanList, Function.identity());
+	}
+    
+    /**
+	 * 检查记录列表
+	 * 
+	 * @param req
+	 * @return 检查记录列表
+	 */
+    @Override
+	public ResponseBean<FaCheckRecordListRes> getFaCheckRecordList(SearchFaCheckRecordListReq req) {
+    	FaCheckRecordListRes FaCheckRecordListRes = new FaCheckRecordListRes();
+    	List<FirstArticleWorkshop> firstArticleWorkshopList = firstArticleWorkshopService.list(Wrappers.<FirstArticleWorkshop>lambdaQuery()
+                .eq(FirstArticleWorkshop::getBentelerPlanId, req.getBentelerPlanId()));
+		for (FirstArticleWorkshop firstArticleWorkshop : firstArticleWorkshopList) {
+			List<FirstArticleItem> firstArticleItemList = firstArticleItemService.list(Wrappers.<FirstArticleItem>lambdaQuery()
+	                .eq(FirstArticleItem::getWorkshopId, firstArticleWorkshop.getId()));
+//			for (FirstArticleItem firstArticleItem : firstArticleItemList) {
+//				
+//			}
+			
+			
+			
+			firstArticleWorkshop.setFirstArticleItemList(firstArticleItemList);
+		}
+		FaCheckRecordListRes.setFirstArticleWorkshopList(firstArticleWorkshopList);
+    	
+		return ResponseBeanBuilder.ok(FaCheckRecordListRes);
+    }
 	
 	
 	/**

+ 60 - 0
application-facade/src/main/resources/mapper/FirstArticleMapper.xml

@@ -206,6 +206,66 @@
     </select>
     
     
+    <!-- 取得任务(首件、200件都是后台生成的任务,每个用户、计划、当天、类型(首件或200件))对应的应该是一个task。中断的task可以随便提交,所以要取状态是0初始化的,用户是-1这个userId不用传 -->
+    <!-- 查询首件或200件task,传bentelerPlanId、typeFlag、userId -->
+    <!-- 查询中断task,传bentelerPlanId、typeFlag、status=0初始化 -->
+    <select id="getFaTaskInfo" resultType="com.factory.web.entity.fa.FirstArticleTask">
+        SELECT  fat.id,
+			    fat.`status`
+		FROM    first_article_task fat,
+		        first_article_calendar fac
+		WHERE   fat.first_article_calendar_id = fac.id
+		AND     fac.benteler_plan_id = #{req.bentelerPlanId}
+		AND     TO_DAYS(fat.task_time) = TO_DAYS(NOW())
+		AND     fac.type_flag = #{req.typeFlag}
+		<if test="req.userId != null">
+		AND     fac.user_id = #{req.userId}
+		</if>
+		<if test="req.status != null">
+		AND     fat.`status` = #{req.status}
+        </if>
+    </select>
+    
+    <!-- 取得不放行任务对应的审批人、审批意见、审批时间 -->
+    <select id="getFaNoGoTaskAapproval" resultType="com.factory.web.entity.fa.res.FaNoGoTaskAapprovalRes">
+        SELECT
+			faat.approval_user_id,
+			uu.`name` AS approval_person,
+			faat.reason,
+			faat.updated_time AS approval_time 
+		FROM
+			first_article_task fat,
+			first_article_approval_task faat,
+			us_user uu 
+		WHERE
+			fat.id = faat.first_article_task_id 
+			AND faat.approval_user_id = uu.id 
+			AND fat.`status` = 3 
+			AND faat.approval_level = 2 
+			AND faat.`status` = 2 
+			AND fat.id = #{req.firstArticleTaskId}
+    </select>
+    
+    
+    <!-- 取得不放行任务对应的审批人、审批意见、审批时间 -->
+    <select id="getFaNoGoTaskAapproval" 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_calendar fac
+		WHERE  fair.first_article_task_id = fat.id
+		AND    fat.first_article_calendar_id = fac.id
+		AND    fair.first_article_item_id = #{req.firstArticleItemId}
+		AND    DATE_FORMAT(fat.task_time, '%Y-%m-%d') = #{req.date}
+		AND    fac.type_flag = #{req.typeFlag}
+    </select>
+    
+    
     
     
     

+ 1 - 1
common-base/src/main/java/com/factory/base/entity/po/benteler/BentelerPlan.java

@@ -38,7 +38,7 @@ public class BentelerPlan implements Serializable {
     @ApiModelProperty(value = "计划类型 1首件 2防错")
     private Integer planType;
 
-    @ApiModelProperty(value = "是否禁用暂停 0否 1是")
+    @ApiModelProperty(value = "是否禁用暂停 false否0 true是1")
     private Boolean pauseFlag;
     
     @ApiModelProperty(value = "生效日期")