Procházet zdrojové kódy

用户列表 相关接口调整

daili před 3 roky
rodič
revize
d9ecbc1fa2

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

@@ -9,6 +9,16 @@ import java.util.ArrayList;
 import java.util.List;
 import java.util.function.Function;
 
+import cn.hutool.core.convert.Convert;
+import com.alibaba.excel.EasyExcel;
+import com.alibaba.excel.ExcelWriter;
+import com.alibaba.excel.write.metadata.WriteSheet;
+import com.alibaba.excel.write.metadata.fill.FillConfig;
+import com.factory.config.MyHandler;
+import com.factory.user.entity.vo.res.FileRes;
+import com.factory.user.service.CommonService;
+import com.factory.web.entity.fa.req.*;
+import com.factory.web.entity.fa.res.*;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -32,43 +42,10 @@ import com.factory.web.entity.fa.FirstArticleTaskHisBlob;
 import com.factory.web.entity.fa.FirstArticleTitle;
 import com.factory.web.entity.fa.FirstArticleTitleBlob;
 import com.factory.web.entity.fa.FirstArticleWorkshop;
-import com.factory.web.entity.fa.req.AddFaItemResultListReq;
-import com.factory.web.entity.fa.req.AddFaItemResultReq;
-import com.factory.web.entity.fa.req.AddFaPlanReq;
-import com.factory.web.entity.fa.req.EditFaItemResultListReq;
-import com.factory.web.entity.fa.req.EditFaItemResultReq;
-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.SearchFaItemResultListReq;
-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.SearchFaWsItemResultCountReq;
-import com.factory.web.entity.fa.req.SearchUserListReq;
-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.fa.res.UserListRes;
 import com.factory.web.entity.pm.OnsiteApprovalPlan;
 import com.factory.web.entity.pm.res.ApprovalUserRes;
 import com.factory.web.mapper.fa.FirstArticleMapper;
+import com.factory.web.service.BentelerIssueService;
 import com.factory.web.service.BentelerPlanService;
 import com.factory.web.service.fa.FirstArticleApprovalTaskService;
 import com.factory.web.service.fa.FirstArticleCalendarService;
@@ -81,6 +58,19 @@ import com.factory.web.service.fa.FirstArticleTitleBlobService;
 import com.factory.web.service.fa.FirstArticleWorkshopService;
 import com.factory.web.service.pm.OnsiteApprovalPlanService;
 import com.factory.web.service.pm.PreventMistakeService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.io.*;
+import java.time.LocalDate;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.function.Function;
+import java.util.stream.Collectors;
+import java.util.stream.IntStream;
+import java.util.stream.Stream;
 
 
 /**
@@ -94,50 +84,53 @@ import com.factory.web.service.pm.PreventMistakeService;
 public class FirstArticleServiceImpl extends ServiceImpl<FirstArticleMapper, BentelerPlan> implements FirstArticleService {
 
 	private static long ROLE_ID = -1;
-	
+
 	@Autowired
 	private FirstArticleMapper firstArticleMapper;
 
 	@Autowired
 	private PreventMistakeService preventMistakeService;
-	
+
 	@Autowired
 	private OnsiteApprovalPlanService onsiteApprovalPlanService;
 
 	@Autowired
 	private BentelerPlanService planService;
-	
+
 	@Autowired
 	private FirstArticleCalendarService firstArticleCalendarService;
-	
+
 	@Autowired
 	private FirstArticleTitleBlobService firstArticleTitleBlobService;
-	
+
 	@Autowired
 	private FirstArticleWorkshopService firstArticleWorkshopService;
-	
+
 	@Autowired
 	private FirstArticleItemService firstArticleItemService;
-	
+
 	@Autowired
 	private FirstArticleItemResultService firstArticleItemResultService;
-	
+
 	@Autowired
 	private FirstArticleTaskService firstArticleTaskService;
-	
+
 	@Autowired
 	private FirstArticleApprovalTaskService firstArticleApprovalTaskService;
-	
+
 	@Autowired
 	private FirstArticleTaskHisBlobService firstArticleTaskHisBlobService;
-	
-	
-	
-	
+
+    @Autowired
+    private CommonService commonService;
+
+
+
+
 
 	/**
 	 * 新建防错计划
-	 * 
+     *
 	 * @param req
 	 * @return
 	 */
@@ -173,7 +166,7 @@ public class FirstArticleServiceImpl extends ServiceImpl<FirstArticleMapper, Ben
 					.build();
 			firstArticleCalendarService.save(firstArticleCalendar);
 		}
-		
+
 		/* 默认插入一条中断点检规则 */
 		FirstArticleCalendar firstArticleCalendar = FirstArticleCalendar.builder()
 				.bentelerPlanId(plan.getId())
@@ -253,7 +246,7 @@ public class FirstArticleServiceImpl extends ServiceImpl<FirstArticleMapper, Ben
 
 	/**
 	 * 校验计划名是否存在
-	 * 
+     *
 	 * @param name
 	 * @return true存在,false不存在
 	 */
@@ -270,7 +263,7 @@ public class FirstArticleServiceImpl extends ServiceImpl<FirstArticleMapper, Ben
 
 	/**
 	 * 校验工作站名是否存在
-	 * 
+     *
 	 * @param wsName
 	 * @return true存在,false不存在
 	 */
@@ -298,11 +291,11 @@ public class FirstArticleServiceImpl extends ServiceImpl<FirstArticleMapper, Ben
 		faPlanRes.setBentelerPlanName(plan.getName());
 		faPlanRes.setPlanType(plan.getPlanType());
 		faPlanRes.setEffectiveDate(plan.getEffectiveDate());;
-		
+
 		List<FirstArticleCalendar> firstArticleCalendarList = firstArticleCalendarService.list(Wrappers.<FirstArticleCalendar>lambdaQuery()
                 .eq(FirstArticleCalendar::getBentelerPlanId, plan.getId()));
 		faPlanRes.setFirstArticleCalendarList(firstArticleCalendarList);
-		
+
 		try {
 			FirstArticleTitleBlob firstArticleTitleBlob = firstArticleTitleBlobService.getOne(new LambdaQueryWrapper<FirstArticleTitleBlob>()
 	    			.eq(FirstArticleTitleBlob::getBentelerPlanId, req.getBentelerPlanId()));
@@ -320,19 +313,19 @@ public class FirstArticleServiceImpl extends ServiceImpl<FirstArticleMapper, Ben
 			firstArticleWorkshop.setFirstArticleItemList(firstArticleItemList);
 		}
 		faPlanRes.setFirstArticleWorkshopList(firstArticleWorkshopList);
-		
+
 		return faPlanRes;
     }
-	
-	
-	/**
+
+
+    /**
      * 修改首件计划
      * @param req
-     * @return 
+     * @return
      */
 	@Override
 	public ResponseBean editFaPlan(EditFaPlanReq req) {
-		
+
 		BentelerPlan oldPlan = planService.getById(req.getBentelerPlanId());
 		if (!req.getBentelerPlanName().equals(oldPlan.getName())) {
 			/* 校验计划名称是否存在 */
@@ -457,13 +450,13 @@ public class FirstArticleServiceImpl extends ServiceImpl<FirstArticleMapper, Ben
 					.build();
 			onsiteApprovalPlanService.save(onsiteApprovalPlan);
 		}
-		
+
 		return ResponseBeanBuilder.ok();
 	}
 
 	/**
 	 * 取得首件计划点检列表
-	 * 
+     *
 	 * @param req
 	 * @return 首件计划点检列表
 	 */
@@ -473,9 +466,9 @@ public class FirstArticleServiceImpl extends ServiceImpl<FirstArticleMapper, Ben
 		Page<FaPlanListRes> listResPage = firstArticleMapper.getFaPlanCheckList(page, req);
 		return ResponseBeanBuilder.ok(listResPage, Function.identity());
     }
-	
-	
-	/**
+
+
+    /**
      * 取得Pad端防错计划列表
      * @param req
      * @return Pad端防错计划列表
@@ -485,7 +478,7 @@ public class FirstArticleServiceImpl extends ServiceImpl<FirstArticleMapper, Ben
     	List<FaPlanListForPadRes> listRes = firstArticleMapper.getFaPlanListForPad(req);
 		return ResponseBeanBuilder.ok(listRes, Function.identity());
     }
-	
+
     /**
      * 得Pad端首件计划对应的工作站
      * @param req
@@ -497,7 +490,7 @@ public class FirstArticleServiceImpl extends ServiceImpl<FirstArticleMapper, Ben
     	SearchFaTaskInfoReq searchFaTaskInfoReq = new SearchFaTaskInfoReq();
     	searchFaTaskInfoReq.setBentelerPlanId(req.getBentelerPlanId());
     	searchFaTaskInfoReq.setTypeFlag(req.getTypeFlag());
-    	
+
     	FirstArticleTask faTaskInfo = null;
     	if (req.getTypeFlag() == 0 || req.getTypeFlag() == 1) { // 0表示首件 1表示200件
     		searchFaTaskInfoReq.setUserId(req.getUserId());
@@ -506,14 +499,14 @@ public class FirstArticleServiceImpl extends ServiceImpl<FirstArticleMapper, Ben
     		/* 取得中断最新的task */
     		faTaskInfo = this.getFaTaskInfoCatchLatest(searchFaTaskInfoReq);
     	}
-    	
+
     	long firstArticleTaskId = 0;
     	if (faTaskInfo != null) {
     		firstArticleTaskId = faTaskInfo.getId();
 		}
-    	
+
     	List<FirstArticleWorkshop> listRes = firstArticleMapper.getFaWorkshopListForPad(req);
-    	
+
     	SearchFaItemListForPadReq searchFaItemListReq = null;
     	SearchFaWsItemResultCountReq searchFaWsItemResultCountReq = null;
     	for (FirstArticleWorkshop firstArticleWorkshop : listRes) {
@@ -527,10 +520,10 @@ public class FirstArticleServiceImpl extends ServiceImpl<FirstArticleMapper, Ben
         	for (FaItemListForPadRes faItem : listResTemp) {
         		int start = faItem.getSnoStart();
         		int end = faItem.getSnoEnd();
-        		
+
         		itemCount += (end - start + 1);
         	}
-    		
+
         	searchFaWsItemResultCountReq = new SearchFaWsItemResultCountReq();
     		searchFaWsItemResultCountReq.setFirstArticleTaskId(firstArticleTaskId);
     		searchFaWsItemResultCountReq.setWorkshopId(firstArticleWorkshop.getId());
@@ -545,7 +538,7 @@ public class FirstArticleServiceImpl extends ServiceImpl<FirstArticleMapper, Ben
 
 		return ResponseBeanBuilder.ok(listRes, Function.identity());
     }
-    
+
     /**
      * 取得Pad端巡检项目
      * @param req
@@ -557,8 +550,8 @@ public class FirstArticleServiceImpl extends ServiceImpl<FirstArticleMapper, Ben
     	SearchFaTaskInfoReq searchFaTaskInfoReq = new SearchFaTaskInfoReq();
     	searchFaTaskInfoReq.setBentelerPlanId(req.getBentelerPlanId());
     	searchFaTaskInfoReq.setTypeFlag(req.getTypeFlag());
-    	
-    	FirstArticleTask faTaskInfo = null;
+
+        FirstArticleTask faTaskInfo = null;
     	if (req.getTypeFlag() == 0 || req.getTypeFlag() == 1) { // 0表示首件 1表示200件
     		searchFaTaskInfoReq.setUserId(req.getUserId());
     		faTaskInfo = this.getFaTaskInfo(searchFaTaskInfoReq);
@@ -566,44 +559,44 @@ public class FirstArticleServiceImpl extends ServiceImpl<FirstArticleMapper, Ben
     		/* 取得中断最新的task */
     		faTaskInfo = this.getFaTaskInfoCatchLatest(searchFaTaskInfoReq);
     	}
-    	
-    	long firstArticleTaskId = 0;
+
+        long firstArticleTaskId = 0;
     	if (faTaskInfo != null) {
     		firstArticleTaskId = faTaskInfo.getId();
 		}
 
     	/* 取得点检项目 */
     	List<FaItemListForPadRes> listResTemp = firstArticleMapper.getFaItemListForPad(req);
-    	
-    	List<FaItemListForPadRes> listRes = new ArrayList<FaItemListForPadRes>();
+
+        List<FaItemListForPadRes> listRes = new ArrayList<FaItemListForPadRes>();
     	for (FaItemListForPadRes faItemListForPadRes : listResTemp) {
     		/* 序号拆分(从1到10,就拆分成10条) */
     		int snoStart = faItemListForPadRes.getSnoStart();
     		int snoEnd = faItemListForPadRes.getSnoEnd();
-    		
-    		FaItemListForPadRes itemInfo = null;
+
+            FaItemListForPadRes itemInfo = null;
     		for (int i = snoStart; i <= snoEnd; i++) {
     			itemInfo = new FaItemListForPadRes();
-    			
-    			itemInfo.setSno(i);
-    			itemInfo.setId(faItemListForPadRes.getId());    
+
+                itemInfo.setSno(i);
+                itemInfo.setId(faItemListForPadRes.getId());
     			itemInfo.setWorkshopId(faItemListForPadRes.getWorkshopId());
-    			itemInfo.setItemContent(faItemListForPadRes.getItemContent());    			
+                itemInfo.setItemContent(faItemListForPadRes.getItemContent());
     			itemInfo.setItemStandard(faItemListForPadRes.getItemStandard());
-    			itemInfo.setPrefix(faItemListForPadRes.getPrefix());    			
+                itemInfo.setPrefix(faItemListForPadRes.getPrefix());
     			itemInfo.setSnoStart(faItemListForPadRes.getSnoStart());
-    			itemInfo.setSnoEnd(faItemListForPadRes.getSnoEnd());  
+                itemInfo.setSnoEnd(faItemListForPadRes.getSnoEnd());
     			itemInfo.setValFlag(faItemListForPadRes.getValFlag());
     			itemInfo.setValUp(faItemListForPadRes.getValUp());
-    			itemInfo.setValDown(faItemListForPadRes.getValDown());  
-    			itemInfo.setValOk(faItemListForPadRes.getValOk());    			
+                itemInfo.setValDown(faItemListForPadRes.getValDown());
+                itemInfo.setValOk(faItemListForPadRes.getValOk());
     			itemInfo.setValDesc(faItemListForPadRes.getValDesc());
-    			itemInfo.setLevelInfo(faItemListForPadRes.getLevelInfo());    			
+                itemInfo.setLevelInfo(faItemListForPadRes.getLevelInfo());
     			itemInfo.setProductInfo(faItemListForPadRes.getProductInfo());
     			itemInfo.setToolId(faItemListForPadRes.getToolId());
     			itemInfo.setToolDesc(faItemListForPadRes.getToolDesc());
     			itemInfo.setFirstFlag(faItemListForPadRes.getFirstFlag());
-    			itemInfo.setTwoHundredFlag(faItemListForPadRes.getTwoHundredFlag());    			
+                itemInfo.setTwoHundredFlag(faItemListForPadRes.getTwoHundredFlag());
     			itemInfo.setCatchFlag(faItemListForPadRes.getCatchFlag());
     			itemInfo.setValUnit(faItemListForPadRes.getValUnit());
 
@@ -625,7 +618,7 @@ public class FirstArticleServiceImpl extends ServiceImpl<FirstArticleMapper, Ben
 
 		return ResponseBeanBuilder.ok(listRes, Function.identity());
     }
-    
+
     /**
      * 添加巡检项目检查结果
      * @param req
@@ -643,8 +636,8 @@ public class FirstArticleServiceImpl extends ServiceImpl<FirstArticleMapper, Ben
     		searchFaTaskInfoReq.setStatus(0); // task状态为0初始化
     	}
     	FirstArticleTask faTaskInfo = this.getFaTaskInfo(searchFaTaskInfoReq);
-    	
-    	long firstArticleTaskId = 0;
+
+        long firstArticleTaskId = 0;
     	if (req.getTypeFlag() == 0 || req.getTypeFlag() == 1) { // 0表示首件 1表示200件
     		if (faTaskInfo == null) {
     			return ResponseBeanBuilder.fail("计划任务不存在!");
@@ -671,8 +664,8 @@ public class FirstArticleServiceImpl extends ServiceImpl<FirstArticleMapper, Ben
     					.remindNoworkFlag(0)
     					.build();
     			firstArticleTaskService.save(firstArticleTask);
-    			
-    			firstArticleTaskId = firstArticleTask.getId();
+
+                firstArticleTaskId = firstArticleTask.getId();
     		} else { // 存在一个初始化状态的task,就用这个
     			firstArticleTaskId = faTaskInfo.getId();
     		}
@@ -684,12 +677,12 @@ public class FirstArticleServiceImpl extends ServiceImpl<FirstArticleMapper, Ben
         for (AddFaItemResultReq itemResult : addFaItemResultList) {
         	firstArticleItemIdList.add(itemResult.getFirstArticleItemId());
         }
-    	
-    	firstArticleItemResultService.remove(Wrappers.<FirstArticleItemResult>lambdaQuery()
+
+        firstArticleItemResultService.remove(Wrappers.<FirstArticleItemResult>lambdaQuery()
                 .eq(FirstArticleItemResult::getFirstArticleTaskId, firstArticleTaskId)
                 .in(FirstArticleItemResult::getFirstArticleItemId, firstArticleItemIdList));
-    	
-    	/* 添加新的检查结果 */
+
+        /* 添加新的检查结果 */
 //    	List<AddFaItemResultReq> addFaItemResultList = req.getAddFaItemResultList();
     	for (AddFaItemResultReq addFaItemResult : addFaItemResultList) {
     		FirstArticleItemResult firstArticleItemResult = FirstArticleItemResult.builder()
@@ -725,8 +718,8 @@ public class FirstArticleServiceImpl extends ServiceImpl<FirstArticleMapper, Ben
     		searchFaTaskInfoReq.setStatus(0); // task状态为0初始化
     	}
     	FirstArticleTask faTaskInfo = this.getFaTaskInfo(searchFaTaskInfoReq);
-    	
-    	long firstArticleTaskId = 0;
+
+        long firstArticleTaskId = 0;
     	if (req.getTypeFlag() == 0 || req.getTypeFlag() == 1) { // 0表示首件 1表示200件
     		if (faTaskInfo == null) {
     			return ResponseBeanBuilder.fail("计划任务不存在!");
@@ -748,8 +741,8 @@ public class FirstArticleServiceImpl extends ServiceImpl<FirstArticleMapper, Ben
 		/* 取得task下的所有条目检查结果 */
 		List<FirstArticleItemResult> firstArticleItemResultList = firstArticleItemResultService.list(Wrappers.<FirstArticleItemResult>lambdaQuery()
                 .eq(FirstArticleItemResult::getFirstArticleTaskId, firstArticleTaskId));
-		
-		boolean flag = true; // true表示巡检项目都通过,false表示巡检项目有不通过的
+
+        boolean flag = true; // true表示巡检项目都通过,false表示巡检项目有不通过的
 		for (FirstArticleItemResult firstArticleItemResult : firstArticleItemResultList) {
 			if (firstArticleItemResult.getResult() == 1) {
 				flag = false;
@@ -788,8 +781,8 @@ public class FirstArticleServiceImpl extends ServiceImpl<FirstArticleMapper, Ben
 				firstArticleApprovalTaskService.save(firstArticleApprovalTask);
 			}
 		}
-		
-		/* 更新中断的操作人 */
+
+        /* 更新中断的操作人 */
 		if (req.getTypeFlag() == 2) {
 			LambdaUpdateWrapper<FirstArticleCalendar> lambdaUpdateWrapper = new LambdaUpdateWrapper<>();
 	        lambdaUpdateWrapper.eq(FirstArticleCalendar::getBentelerPlanId, req.getBentelerPlanId())
@@ -800,8 +793,8 @@ public class FirstArticleServiceImpl extends ServiceImpl<FirstArticleMapper, Ben
 
 		return ResponseBeanBuilder.ok();
 	}
-	
-	/**
+
+    /**
 	 * 取得不放行任务对应的工作站
 	 *
 	 * @param req
@@ -824,9 +817,9 @@ public class FirstArticleServiceImpl extends ServiceImpl<FirstArticleMapper, Ben
 		List<FaItemNoGoListRes> faItemNoGoList = firstArticleMapper.getFaItemNoGoList(req);
     	return ResponseBeanBuilder.ok(faItemNoGoList, Function.identity());
 	}
-	
-	
-	/**
+
+
+    /**
 	 * 修改巡检项目检查结果(这里只有重检走这里)
 	 *
 	 * @param req
@@ -851,9 +844,9 @@ public class FirstArticleServiceImpl extends ServiceImpl<FirstArticleMapper, Ben
 
 		return ResponseBeanBuilder.ok();
 	}
-	
-	
-	/**
+
+
+    /**
 	 * 任务和巡检结果记录历史
 	 *
 	 * @param onsiteTaskId
@@ -886,8 +879,8 @@ public class FirstArticleServiceImpl extends ServiceImpl<FirstArticleMapper, Ben
 			e.printStackTrace();
 		}
 	}
-	
-	/**
+
+    /**
      * 取得表头信息
      * @param bentelerPlanId
      * @return 表头信息
@@ -896,8 +889,8 @@ public class FirstArticleServiceImpl extends ServiceImpl<FirstArticleMapper, Ben
     public FirstArticleTitle getFaTitle(Long bentelerPlanId) {
     	FirstArticleTitleBlob firstArticleTitleBlob = firstArticleTitleBlobService.getOne(new LambdaQueryWrapper<FirstArticleTitleBlob>()
     			.eq(FirstArticleTitleBlob::getBentelerPlanId, bentelerPlanId));
-    	
-    	FirstArticleTitle firstArticleTitle = new FirstArticleTitle();
+
+        FirstArticleTitle firstArticleTitle = new FirstArticleTitle();
 		try {
 			firstArticleTitle = (FirstArticleTitle)this.byteArrayToObject(firstArticleTitleBlob.getTitleContent());
 		} catch (Exception e) {
@@ -906,8 +899,8 @@ public class FirstArticleServiceImpl extends ServiceImpl<FirstArticleMapper, Ben
 		}
 		return firstArticleTitle;
     }
-	
-    
+
+
     /**
      * 取得任务(首件、200件都是后台生成的任务,每个用户、计划、当天、类型(首件或200件))对应的应该是一个task。中断的task可以随便提交,所以要取状态是0初始化的,用户是-1这个userId不用传
      * @param req
@@ -918,7 +911,7 @@ public class FirstArticleServiceImpl extends ServiceImpl<FirstArticleMapper, Ben
     	FirstArticleTask firstArticleTask = firstArticleMapper.getFaTaskInfo(req);
         return firstArticleTask;
     }
-    
+
     /**
      * 查询中断最新的task
      * @param req
@@ -929,10 +922,10 @@ public class FirstArticleServiceImpl extends ServiceImpl<FirstArticleMapper, Ben
     	FirstArticleTask firstArticleTask = firstArticleMapper.getFaTaskInfoCatchLatest(req);
         return firstArticleTask;
     }
-    
+
     /**
 	 * 取得不放行任务对应的质量经理审批信息
-	 * 
+     *
 	 * @param req
 	 * @return 不放行任务对应的质量经理审批信息
 	 */
@@ -941,10 +934,10 @@ public class FirstArticleServiceImpl extends ServiceImpl<FirstArticleMapper, Ben
     	FaNoGoTaskAapprovalRes faNoGoTaskAapprovalRes = firstArticleMapper.getFaNoGoTaskAapproval(req);
     	return ResponseBeanBuilder.ok(faNoGoTaskAapprovalRes);
     }
-    
+
     /**
 	 * 取得所有计划
-	 * 
+     *
 	 * @param req
 	 * @return 所有计划
 	 */
@@ -955,10 +948,10 @@ public class FirstArticleServiceImpl extends ServiceImpl<FirstArticleMapper, Ben
                 .eq(BentelerPlan::getPauseFlag, false));
         return ResponseBeanBuilder.ok(aLLPlanList, Function.identity());
 	}
-    
+
     /**
 	 * 检查记录列表
-	 * 
+     *
 	 * @param req
 	 * @return 检查记录列表
 	 */
@@ -978,8 +971,8 @@ public class FirstArticleServiceImpl extends ServiceImpl<FirstArticleMapper, Ben
 				/* 200件检查结果 */
 				List<FirstArticleItemResult> twoHundredItemResultList = this.getItemResultList(firstArticleItem.getId(), req.getCheckDate(), 1);
 				firstArticleItem.setTwoHundredItemResultList(twoHundredItemResultList);
-				
-				/* 中断检查结果(一天提交多个中断task,暂时都取出来了) */
+
+                /* 中断检查结果(一天提交多个中断task,暂时都取出来了) */
 				List<FirstArticleItemResult> catchItemResultList = this.getItemResultList(firstArticleItem.getId(), req.getCheckDate(), 2);
 				firstArticleItem.setCatchItemResultList(catchItemResultList);
 
@@ -999,10 +992,10 @@ public class FirstArticleServiceImpl extends ServiceImpl<FirstArticleMapper, Ben
 			firstArticleWorkshop.setFirstArticleItemList(firstArticleItemList);
 		}
 		FaCheckRecordListRes.setFirstArticleWorkshopList(firstArticleWorkshopList);
-    	
-		return ResponseBeanBuilder.ok(FaCheckRecordListRes);
+
+        return ResponseBeanBuilder.ok(FaCheckRecordListRes);
     }
-    
+
     /**
      * 取得首件、200件、中断每天的点检记录
      * @param req
@@ -1013,7 +1006,7 @@ public class FirstArticleServiceImpl extends ServiceImpl<FirstArticleMapper, Ben
     	List<FirstArticleItemResult> faItemResultList = firstArticleMapper.getFaItemResultList(req);
         return faItemResultList;
     }
-    
+
     /**
      * 取得首件、200件、中断每天的点检记录
      * @param firstArticleItemId
@@ -1026,11 +1019,11 @@ public class FirstArticleServiceImpl extends ServiceImpl<FirstArticleMapper, Ben
 		searchFaItemResultListReq.setFirstArticleItemId(firstArticleItemId);
 		searchFaItemResultListReq.setCheckDate(checkDate);
 		searchFaItemResultListReq.setTypeFlag(typeFlag);
-		
-		List<FirstArticleItemResult> faItemResultList = this.getFaItemResultList(searchFaItemResultListReq);
+
+        List<FirstArticleItemResult> faItemResultList = this.getFaItemResultList(searchFaItemResultListReq);
 		return faItemResultList;
     }
-    
+
 //    /**
 //     * 判断检验结果是否填写完成
 //     * @param req
@@ -1075,9 +1068,9 @@ public class FirstArticleServiceImpl extends ServiceImpl<FirstArticleMapper, Ben
 //
 //		return faAllCheckFlagRes;
 //	}
-	
-	
-	/**
+
+
+    /**
      * 取得用户列表
      * @param req
      * @return 取得用户列表
@@ -1091,10 +1084,12 @@ public class FirstArticleServiceImpl extends ServiceImpl<FirstArticleMapper, Ben
 
     @Override
     public ResponseBean<FileRes> exportFaCheckRecordList(SearchFaCheckRecordListReq req) {
+        BentelerPlan plan = planService.getById(req.getBentelerPlanId());
+
         List<FirstArticleWorkshop> firstArticleWorkshopList = getFaCheckRecordList(req).getData().getFirstArticleWorkshopList();
         FirstArticleTitle title = getFaTitle(req.getBentelerPlanId());
         Map<String, String> titleMap = Convert.toMap(String.class, String.class, title);
-
+        titleMap.put("title", plan.getName());
 
         ArrayList<Map<String, String>> arrayList = new ArrayList<>();
         //返回工作站结果
@@ -1102,22 +1097,70 @@ public class FirstArticleServiceImpl extends ServiceImpl<FirstArticleMapper, Ben
             Map<String, String> workMap = Convert.toMap(String.class, String.class, item);
             workMap.remove("firstArticleItemList");
             workMap.remove("allCheckFlag");
+            workMap.remove("id");
             //返回巡检结果
             item.getFirstArticleItemList().forEach(item1 -> {
+
                 Map<String, String> beanMap = Convert.toMap(String.class, String.class, item1);
+
+                List<Integer> worksNumList = IntStream.rangeClosed(item1.getSnoStart(), item1.getSnoEnd()).boxed().collect(Collectors.toList());
                 workMap.forEach((key, value) -> {
+                    List<String> frequencyList = new ArrayList<String>();
 					beanMap.merge(key, value, (v1, v2) -> v1);
-                    String s = item1.getValFlag().equals(0) ? item1.getValDown().toString()+"NM -" + item1.getValUp().toString()+"NM" : (item1.getValOk().equals(0) ? "OK" : "NoK");
-                    beanMap.put("valFlag",s);
-                    if (item1.getFirstFlag().equals(1)){
+                    boolean numType = item1.getValFlag().equals(0);
+                    String greadScope = numType ? item1.getSnoStart().toString() + "Nm - " + item1.getSnoEnd().toString() + "Nm" : (item1.getValOk().equals(0) ? "OK" : "NoK");
+                    beanMap.put("valFlag", greadScope);
 
+                    if (item1.getFirstFlag().equals(1)){
+                        frequencyList.add("首件");
+                        Map<Integer, List<FirstArticleItemResult>> fisWorkMap = item1.getFirstItemResultList().stream().collect(Collectors.groupingBy(FirstArticleItemResult::getSno));
+                        String greads = worksNumList.stream().map(work -> {
+                            return fisWorkMap.get(work) != null ? fisWorkMap.get(work).stream().map(result -> {
+                                if (numType) {
+                                    return result.getVal();
+                                } else {
+                                    return result.getValDesc();
+                                }
+                            }).findFirst().orElse("未填写") : "未填写";
+                        }).collect(Collectors.joining(","));
+                        beanMap.put("inigread", greads);
+                    } else {
+                        beanMap.put("inigread", "------未要求检测------");
                     }
                     if (item1.getTwoHundredFlag().equals(1)){
-
+                        frequencyList.add("200件");
+                        Map<Integer, List<FirstArticleItemResult>> fisWorkMap = item1.getTwoHundredItemResultList().stream().collect(Collectors.groupingBy(FirstArticleItemResult::getSno));
+                        String greads = worksNumList.stream().map(work -> {
+                            return fisWorkMap.get(work) != null ? fisWorkMap.get(work).stream().map(result -> {
+                                if (numType) {
+                                    return result.getVal();
+                                } else {
+                                    return result.getValDesc();
+                                }
+                            }).findFirst().orElse("未填写") : "未填写";
+                        }).collect(Collectors.joining(","));
+                        beanMap.put("twoGread", greads);
+                    } else {
+                        beanMap.put("twoGread", "------未要求检测------");
                     }
                     if (item1.getCatchFlag().equals(1)){
-
+                        frequencyList.add("中断");
+                        Map<Integer, List<FirstArticleItemResult>> fisWorkMap = item1.getCatchItemResultList().stream().collect(Collectors.groupingBy(FirstArticleItemResult::getSno));
+                        String greads = worksNumList.stream().map(work -> {
+                            return fisWorkMap.get(work) != null ? fisWorkMap.get(work).stream().map(result -> {
+                                if (numType) {
+                                    return result.getVal();
+                                } else {
+                                    return result.getValDesc();
+                                }
+                            }).findFirst().orElse("未填写") : "未填写";
+                        }).collect(Collectors.joining(","));
+                        beanMap.put("breakOffgread", greads);
+                    } else {
+                        beanMap.put("breakOffgread", "------未要求检测------");
                     }
+                    String collect = Stream.of(frequencyList.toArray(new String[frequencyList.size()])).collect(Collectors.joining("&"));
+                    beanMap.put("frequency", collect);
 
                     arrayList.add(beanMap);
                 });
@@ -1179,7 +1222,7 @@ public class FirstArticleServiceImpl extends ServiceImpl<FirstArticleMapper, Ben
 		baos.close();
 		return bytes;
 	}
- 
+
     /**
      * byte[]转成Object
      * @param byte[]
@@ -1192,5 +1235,5 @@ public class FirstArticleServiceImpl extends ServiceImpl<FirstArticleMapper, Ben
 		ois.close();
 		return ob;
 	}
-   
+
 }