|
@@ -5,10 +5,17 @@ import java.io.ByteArrayOutputStream;
|
|
|
import java.io.File;
|
|
|
import java.io.ObjectInputStream;
|
|
|
import java.io.ObjectOutputStream;
|
|
|
+import java.io.OutputStream;
|
|
|
import java.time.LocalDate;
|
|
|
import java.time.LocalDateTime;
|
|
|
import java.time.format.DateTimeFormatter;
|
|
|
-import java.util.*;
|
|
|
+import java.util.ArrayList;
|
|
|
+import java.util.Arrays;
|
|
|
+import java.util.List;
|
|
|
+import java.util.Map;
|
|
|
+import java.util.Optional;
|
|
|
+import java.util.Set;
|
|
|
+import java.util.TreeSet;
|
|
|
import java.util.concurrent.atomic.AtomicInteger;
|
|
|
import java.util.concurrent.atomic.AtomicReference;
|
|
|
import java.util.function.Function;
|
|
@@ -16,15 +23,6 @@ import java.util.stream.Collectors;
|
|
|
import java.util.stream.IntStream;
|
|
|
import java.util.stream.Stream;
|
|
|
|
|
|
-import com.alibaba.excel.metadata.Head;
|
|
|
-import com.alibaba.excel.write.merge.AbstractMergeStrategy;
|
|
|
-import com.factory.base.entity.po.remote.Dept;
|
|
|
-import com.factory.base.entity.po.remote.UserInfo;
|
|
|
-import com.factory.user.config.handler.LoginContext;
|
|
|
-import com.factory.user.service.UsersService;
|
|
|
-import com.factory.user.util.AuthUtils;
|
|
|
-import com.factory.web.entity.pm.OnsiteCalendar;
|
|
|
-import com.factory.web.service.pm.OnsiteCalendarService;
|
|
|
import org.apache.poi.ss.usermodel.Cell;
|
|
|
import org.apache.poi.ss.usermodel.Sheet;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
@@ -34,6 +32,8 @@ import org.springframework.transaction.interceptor.TransactionAspectSupport;
|
|
|
|
|
|
import com.alibaba.excel.EasyExcel;
|
|
|
import com.alibaba.excel.ExcelWriter;
|
|
|
+import com.alibaba.excel.metadata.Head;
|
|
|
+import com.alibaba.excel.write.merge.AbstractMergeStrategy;
|
|
|
import com.alibaba.excel.write.metadata.WriteSheet;
|
|
|
import com.alibaba.excel.write.metadata.fill.FillConfig;
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
@@ -49,8 +49,8 @@ import com.factory.base.entity.enumPo.PlanType;
|
|
|
import com.factory.base.entity.po.benteler.BentelerPlan;
|
|
|
import com.factory.base.util.res.ResponseBeanBuilder;
|
|
|
import com.factory.base.util.time.TimeConvert;
|
|
|
-import com.factory.user.entity.vo.res.FileRes;
|
|
|
import com.factory.user.service.CommonService;
|
|
|
+import com.factory.user.service.UsersService;
|
|
|
import com.factory.web.entity.fa.FirstArticleApprovalTask;
|
|
|
import com.factory.web.entity.fa.FirstArticleCalendar;
|
|
|
import com.factory.web.entity.fa.FirstArticleItem;
|
|
@@ -100,6 +100,7 @@ import com.factory.web.entity.fa.res.FaWorkshopNoGoListRes;
|
|
|
import com.factory.web.entity.fa.res.UserListRes;
|
|
|
import com.factory.web.entity.pm.ApprovalRule;
|
|
|
import com.factory.web.entity.pm.OnsiteApprovalPlan;
|
|
|
+import com.factory.web.entity.pm.OnsiteCalendar;
|
|
|
import com.factory.web.entity.vo.req.ExportInitialPlanDetailsReq;
|
|
|
import com.factory.web.mapper.fa.FirstArticleMapper;
|
|
|
import com.factory.web.mapper.pm.ApprovalRuleMapper;
|
|
@@ -116,6 +117,7 @@ import com.factory.web.service.fa.FirstArticleTitleBlobService;
|
|
|
import com.factory.web.service.fa.FirstArticleWorkshopService;
|
|
|
import com.factory.web.service.impl.FileEntry;
|
|
|
import com.factory.web.service.pm.OnsiteApprovalPlanService;
|
|
|
+import com.factory.web.service.pm.OnsiteCalendarService;
|
|
|
import com.factory.web.service.pm.PlanBindService;
|
|
|
import com.factory.web.service.pm.PreventMistakeService;
|
|
|
import com.factory.wx.entity.req.SendMsgReq;
|
|
@@ -275,6 +277,10 @@ public class FirstArticleServiceImpl extends ServiceImpl<FirstArticleMapper, Ben
|
|
|
.twoHundredFlag(firstArticleItemReq.getTwoHundredFlag())
|
|
|
.catchFlag(firstArticleItemReq.getCatchFlag())
|
|
|
.build();
|
|
|
+ if(firstArticleItemReq.getSnoEnd()<firstArticleItemReq.getSnoStart()) {
|
|
|
+ firstArticleItem.setSnoStart(firstArticleItemReq.getSnoEnd());
|
|
|
+ firstArticleItem.setSnoEnd(firstArticleItemReq.getSnoStart());
|
|
|
+ }
|
|
|
firstArticleItemService.save(firstArticleItem);
|
|
|
}
|
|
|
}
|
|
@@ -495,6 +501,10 @@ public class FirstArticleServiceImpl extends ServiceImpl<FirstArticleMapper, Ben
|
|
|
.twoHundredFlag(firstArticleItemReq.getTwoHundredFlag())
|
|
|
.catchFlag(firstArticleItemReq.getCatchFlag())
|
|
|
.build();
|
|
|
+ if(firstArticleItemReq.getSnoEnd()<firstArticleItemReq.getSnoStart()) {
|
|
|
+ firstArticleItem.setSnoStart(firstArticleItemReq.getSnoEnd());
|
|
|
+ firstArticleItem.setSnoEnd(firstArticleItemReq.getSnoStart());
|
|
|
+ }
|
|
|
firstArticleItemService.save(firstArticleItem);
|
|
|
}
|
|
|
}
|
|
@@ -576,6 +586,10 @@ public class FirstArticleServiceImpl extends ServiceImpl<FirstArticleMapper, Ben
|
|
|
.twoHundredFlag(firstArticleItemReq.getTwoHundredFlag())
|
|
|
.catchFlag(firstArticleItemReq.getCatchFlag())
|
|
|
.build();
|
|
|
+ if(firstArticleItemReq.getSnoEnd()<firstArticleItemReq.getSnoStart()) {
|
|
|
+ firstArticleItem.setSnoStart(firstArticleItemReq.getSnoEnd());
|
|
|
+ firstArticleItem.setSnoEnd(firstArticleItemReq.getSnoStart());
|
|
|
+ }
|
|
|
firstArticleItemService.save(firstArticleItem);
|
|
|
}
|
|
|
}
|
|
@@ -638,6 +652,9 @@ public class FirstArticleServiceImpl extends ServiceImpl<FirstArticleMapper, Ben
|
|
|
/* 取得中断最新的task */
|
|
|
faTaskInfo = this.getFaTaskInfoCatchLatest(searchFaTaskInfoReq);
|
|
|
}
|
|
|
+ if(faTaskInfo==null) {
|
|
|
+ return ResponseBeanBuilder.fail("任务不存在");
|
|
|
+ }
|
|
|
FirstArticleCalendar calendar = firstArticleCalendarService.getById(faTaskInfo.getFirstArticleCalendarId());
|
|
|
|
|
|
long firstArticleTaskId = 0;
|
|
@@ -716,9 +733,10 @@ public class FirstArticleServiceImpl extends ServiceImpl<FirstArticleMapper, Ben
|
|
|
List<FaItemListForPadRes> listRes = new ArrayList<FaItemListForPadRes>();
|
|
|
for (FaItemListForPadRes faItemListForPadRes : listResTemp) {
|
|
|
/* 序号拆分(从1到10,就拆分成10条) */
|
|
|
- int snoStart = faItemListForPadRes.getSnoStart();
|
|
|
- int snoEnd = faItemListForPadRes.getSnoEnd();
|
|
|
-
|
|
|
+ int snoStart = Math.min(faItemListForPadRes.getSnoStart(), faItemListForPadRes.getSnoEnd());
|
|
|
+ int snoEnd = Math.max(faItemListForPadRes.getSnoStart(), faItemListForPadRes.getSnoEnd());
|
|
|
+
|
|
|
+
|
|
|
FaItemListForPadRes itemInfo = null;
|
|
|
for (int i = snoStart; i <= snoEnd; i++) {
|
|
|
itemInfo = new FaItemListForPadRes();
|
|
@@ -1261,28 +1279,43 @@ public class FirstArticleServiceImpl extends ServiceImpl<FirstArticleMapper, Ben
|
|
|
/* 200件检查结果 */
|
|
|
/* 中断检查结果(一天提交多个中断task,暂时都取出来了) */
|
|
|
/* 判断当前检查项目是否是放行 */
|
|
|
- firstArticleItemList.stream().filter(item -> LocalDate.now().getDayOfWeek().getValue() != 1 && item.getPrefix().equals("W") || !item.getPrefix().equals("W")).forEach(firstArticleItem -> {
|
|
|
+ firstArticleItemList.stream().
|
|
|
+ filter(item -> LocalDate.now().getDayOfWeek().getValue() != 1 && item.getPrefix().equals("W") || !item.getPrefix().equals("W"))
|
|
|
+ .forEach(firstArticleItem -> {
|
|
|
FirstArticleWorkshop workshop = firstArticleWorkshopService.getById(firstArticleItem.getWorkshopId());
|
|
|
firstArticleItem.setWorkshopName(workshop.getPlName() + "__" + workshop.getWsName());
|
|
|
+
|
|
|
List<FirstArticleItemResult> firstItemResultList = this.getItemResultList(firstArticleItem.getId(), req.getCheckDate(), 0);
|
|
|
firstArticleItem.setFirstItemResultList(firstItemResultList);
|
|
|
+
|
|
|
List<FirstArticleItemResult> twoHundredItemResultList = this.getItemResultList(firstArticleItem.getId(), req.getCheckDate(), 1);
|
|
|
firstArticleItem.setTwoHundredItemResultList(twoHundredItemResultList);
|
|
|
+
|
|
|
List<FirstArticleItemResult> catchItemResultList = this.getItemResultList(firstArticleItem.getId(), req.getCheckDate(), 2);
|
|
|
firstArticleItem.setCatchItemResultList(catchItemResultList);
|
|
|
+
|
|
|
SearchFaItemReleaseCountReq searchFaItemReleaseCountReq = new SearchFaItemReleaseCountReq();
|
|
|
searchFaItemReleaseCountReq.setCheckDate(req.getCheckDate());
|
|
|
searchFaItemReleaseCountReq.setFirstArticleItemId(firstArticleItem.getId());
|
|
|
+
|
|
|
int count = firstArticleMapper.getFaItemReleaseCount(searchFaItemReleaseCountReq);
|
|
|
+
|
|
|
if (count > 0) {
|
|
|
firstArticleItem.setReleaseFlag(1); // 1有
|
|
|
|
|
|
-
|
|
|
} else {
|
|
|
firstArticleItem.setReleaseFlag(0); // 0没有
|
|
|
}
|
|
|
List<FirstArticleApprovalTask> faItemRelease = firstArticleMapper.getFaItemRelease(searchFaItemReleaseCountReq);
|
|
|
- faItemRelease.stream().filter(item -> !item.getResult().equals(0));
|
|
|
+
|
|
|
+ if(!faItemRelease.isEmpty()) {//每个任务取最新的一次
|
|
|
+ Set<String> set = new TreeSet<>();
|
|
|
+ faItemRelease = faItemRelease.stream()
|
|
|
+ .filter(item -> !item.getResult().equals(0))
|
|
|
+ .sorted((a,b)->b.getCreatedTime().compareTo(a.getCreatedTime()))
|
|
|
+ .filter(item -> set.add(item.getFirstArticleTaskId()+"/"+item.getApprovalLevel()))
|
|
|
+ .collect(Collectors.toList());
|
|
|
+ }
|
|
|
firstArticleItem.setPermitDesc(faItemRelease); // 备注
|
|
|
});
|
|
|
|
|
@@ -1391,7 +1424,7 @@ public class FirstArticleServiceImpl extends ServiceImpl<FirstArticleMapper, Ben
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
- public ResponseBean<FileRes> exportFaCheckRecordList(SearchFaCheckRecordListReq req) {
|
|
|
+ public void exportFaCheckRecordList(SearchFaCheckRecordListReq req,OutputStream outputStream) {
|
|
|
Long bentelerPlanId = req.getBentelerPlanId();
|
|
|
BentelerPlan plan = planService.getById(bentelerPlanId);
|
|
|
|
|
@@ -1422,7 +1455,7 @@ public class FirstArticleServiceImpl extends ServiceImpl<FirstArticleMapper, Ben
|
|
|
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());
|
|
|
+ List<Integer> worksNumList = IntStream.rangeClosed(Math.min(item1.getSnoStart(), item1.getSnoEnd()),Math.max(item1.getSnoStart(), item1.getSnoEnd())).boxed().collect(Collectors.toList());
|
|
|
workMap.forEach((key, value) -> {
|
|
|
if (value != null) {
|
|
|
beanMap.merge(key, value, (v1, v2) -> v1);
|
|
@@ -1520,15 +1553,12 @@ public class FirstArticleServiceImpl extends ServiceImpl<FirstArticleMapper, Ben
|
|
|
titleMap.put("remark", remarkStr.get());
|
|
|
// 模板注意 用{} 来表示你要用的变量 如果本来就有"{","}" 特殊字符 用"\{","\}"代替
|
|
|
String templateFileName = "systemLib/template/首件计划表.xlsx";
|
|
|
- File tempFile = null;
|
|
|
ExcelWriter excelWriter = null;
|
|
|
try {
|
|
|
// 模板文件
|
|
|
- tempFile = File.createTempFile("shoujian", ".xlsx");
|
|
|
-
|
|
|
// 这里 会填充到第一个sheet, 然后文件流会自动关闭
|
|
|
//设置识别自动换行
|
|
|
- excelWriter = EasyExcel.write(tempFile).withTemplate(templateFileName).registerWriteHandler(new AbstractMergeStrategy() {
|
|
|
+ excelWriter = EasyExcel.write(outputStream).withTemplate(templateFileName).registerWriteHandler(new AbstractMergeStrategy() {
|
|
|
@Override
|
|
|
protected void merge(Sheet sheet, Cell cell, Head head, Integer relativeRowIndex) {
|
|
|
if (cell.getColumnIndex() >= 4) {
|
|
@@ -1551,11 +1581,10 @@ public class FirstArticleServiceImpl extends ServiceImpl<FirstArticleMapper, Ben
|
|
|
} finally {
|
|
|
excelWriter.finish();
|
|
|
}
|
|
|
- return commonService.exportExcel(tempFile);
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
- public ResponseBean<FileRes> exportInitialPlanDetails(ExportInitialPlanDetailsReq req) {
|
|
|
+ public void exportInitialPlanDetails(ExportInitialPlanDetailsReq req,OutputStream out) {
|
|
|
|
|
|
Long bentelerPlanId = req.getIniPlnaId();
|
|
|
BentelerPlan plan = planService.getById(bentelerPlanId);
|
|
@@ -1621,14 +1650,10 @@ public class FirstArticleServiceImpl extends ServiceImpl<FirstArticleMapper, Ben
|
|
|
|
|
|
// 模板注意 用{} 来表示你要用的变量 如果本来就有"{","}" 特殊字符 用"\{","\}"代替
|
|
|
String templateFileName = "systemLib/template/首件计划受控文件.xlsx";
|
|
|
- File tempFile = null;
|
|
|
ExcelWriter excelWriter = null;
|
|
|
try {
|
|
|
- // 模板文件
|
|
|
- tempFile = File.createTempFile("shoujian", ".xlsx");
|
|
|
-
|
|
|
// 这里 会填充到第一个sheet, 然后文件流会自动关闭
|
|
|
- excelWriter = EasyExcel.write(tempFile).withTemplate(templateFileName).build();
|
|
|
+ excelWriter = EasyExcel.write(out).withTemplate(templateFileName).build();
|
|
|
|
|
|
|
|
|
WriteSheet writeSheet = EasyExcel.writerSheet("首件")
|
|
@@ -1643,7 +1668,6 @@ public class FirstArticleServiceImpl extends ServiceImpl<FirstArticleMapper, Ben
|
|
|
} finally {
|
|
|
excelWriter.finish();
|
|
|
}
|
|
|
- return commonService.exportExcel(tempFile);
|
|
|
}
|
|
|
|
|
|
/**
|