|
|
@@ -5,13 +5,18 @@ import java.text.SimpleDateFormat;
|
|
|
import java.util.Date;
|
|
|
import java.util.ArrayList;
|
|
|
import java.util.Comparator;
|
|
|
+import java.util.HashMap;
|
|
|
+import java.util.LinkedHashSet;
|
|
|
import java.util.List;
|
|
|
+import java.util.Map;
|
|
|
+import java.util.Set;
|
|
|
import javax.servlet.http.HttpServletRequest;
|
|
|
import javax.servlet.http.HttpServletResponse;
|
|
|
|
|
|
import com.alibaba.fastjson.JSON;
|
|
|
import com.jeesite.common.lang.ObjectUtils;
|
|
|
import com.jeesite.common.lang.StringUtils;
|
|
|
+import com.jeesite.common.mybatis.mapper.query.QueryType;
|
|
|
import com.jeesite.modules.mes.entity.MesProductQmwy;
|
|
|
import com.jeesite.modules.mes.req.MesSearchDateReq;
|
|
|
import com.jeesite.modules.mes.resp.CommonResp;
|
|
|
@@ -39,7 +44,9 @@ import org.springframework.web.multipart.MultipartFile;
|
|
|
import com.jeesite.common.web.BaseController;
|
|
|
import com.jeesite.modules.mes.entity.MesProductQm;
|
|
|
import com.jeesite.modules.mes.entity.MesProductHf;
|
|
|
+import com.jeesite.modules.mes.entity.MesProductRecord;
|
|
|
import com.jeesite.modules.mes.service.MesProductHfService;
|
|
|
+import com.jeesite.modules.mes.service.MesProductRecordService;
|
|
|
import com.jeesite.modules.mes.service.MesProductQmService;
|
|
|
|
|
|
/**
|
|
|
@@ -56,6 +63,9 @@ public class MesProductQmController extends BaseController {
|
|
|
|
|
|
@Autowired
|
|
|
private MesProductHfService mesProductHfService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private MesProductRecordService mesProductRecordService;
|
|
|
|
|
|
/**
|
|
|
* 获取数据
|
|
|
@@ -87,6 +97,9 @@ public class MesProductQmController extends BaseController {
|
|
|
public Page<MesProductQm> listData(MesProductQm mesProductQm, HttpServletRequest request, HttpServletResponse response) {
|
|
|
// 气密仪记录和客户端漏点记录分别存储,列表统一展示为同一数据结构。
|
|
|
List<MesProductQm> records = new ArrayList<>(mesProductQmService.findList(mesProductQm));
|
|
|
+ for (MesProductQm record : records) {
|
|
|
+ record.setTitle(CommonUitl.resolveQmTitle(record.getOprno(), record.getTitle()));
|
|
|
+ }
|
|
|
|
|
|
MesProductHf hfQuery = new MesProductHf();
|
|
|
hfQuery.setSn(mesProductQm.getComponentNum());
|
|
|
@@ -98,7 +111,16 @@ public class MesProductQmController extends BaseController {
|
|
|
if (testTimeGte != null) hfQuery.setCreateDate_gte(testTimeGte);
|
|
|
if (testTimeLte != null) hfQuery.setCreateDate_lte(testTimeLte);
|
|
|
|
|
|
+ Map<String, Set<String>> leakagePointsByProduct = new HashMap<>();
|
|
|
for (MesProductHf hf : mesProductHfService.findList(hfQuery)) {
|
|
|
+ Set<String> leakagePoints = leakagePointsByProduct.computeIfAbsent(
|
|
|
+ leakagePointKey(hf.getSn(), hf.getOprno()), key -> new LinkedHashSet<>());
|
|
|
+ for (String leakagePoint : normalizeLeakPointLabels(hf.getHfFlag()).split(",")) {
|
|
|
+ if (StringUtils.isNotBlank(leakagePoint)) {
|
|
|
+ leakagePoints.add(leakagePoint.trim());
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
if (StringUtils.isNotBlank(mesProductQm.getLeakagePoint())
|
|
|
&& !containsLeakPoint(hf.getHfFlag(), mesProductQm.getLeakagePoint())) {
|
|
|
continue;
|
|
|
@@ -112,10 +134,51 @@ public class MesProductQmController extends BaseController {
|
|
|
record.setTestTime(hf.getCreateDate());
|
|
|
record.setLeakagePoint(normalizeLeakPointLabels(hf.getHfFlag()));
|
|
|
record.setTestResult(hf.getResult());
|
|
|
- record.setTitle("漏点标记");
|
|
|
+ record.setTitle(CommonUitl.resolveQmTitle(hf.getOprno(), "漏点标记"));
|
|
|
records.add(record);
|
|
|
}
|
|
|
|
|
|
+ // INSP030A/B writes the overall air-tightness result to the production record.
|
|
|
+ String[] targetOprnos = {"INSP030A", "INSP030B"};
|
|
|
+ List<String> selectedOprnos = new ArrayList<>();
|
|
|
+ String oprnoFilter = mesProductQm.getOprno();
|
|
|
+ for (String targetOprno : targetOprnos) {
|
|
|
+ if (StringUtils.isBlank(oprnoFilter) || targetOprno.contains(oprnoFilter.trim())) {
|
|
|
+ selectedOprnos.add(targetOprno);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (!selectedOprnos.isEmpty()) {
|
|
|
+ MesProductRecord productRecordQuery = new MesProductRecord();
|
|
|
+ productRecordQuery.setSn(mesProductQm.getComponentNum());
|
|
|
+ productRecordQuery.setLineSn(mesProductQm.getProductCate());
|
|
|
+ productRecordQuery.setContent(mesProductQm.getTestResult());
|
|
|
+ productRecordQuery.setUpdateDate_gte(testTimeGte);
|
|
|
+ productRecordQuery.setUpdateDate_lte(testTimeLte);
|
|
|
+ productRecordQuery.getSqlMap().getWhere()
|
|
|
+ .and("a.oprno", QueryType.IN, selectedOprnos)
|
|
|
+ .and("a.craft", QueryType.EQ, "100000");
|
|
|
+
|
|
|
+ for (MesProductRecord productRecord : mesProductRecordService.findList(productRecordQuery)) {
|
|
|
+ String leakagePoint = String.join(",", leakagePointsByProduct.getOrDefault(
|
|
|
+ leakagePointKey(productRecord.getSn(), productRecord.getOprno()), new LinkedHashSet<>()));
|
|
|
+ if (StringUtils.isNotBlank(mesProductQm.getLeakagePoint())
|
|
|
+ && !containsLeakPoint(leakagePoint, mesProductQm.getLeakagePoint())) {
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ MesProductQm record = new MesProductQm();
|
|
|
+ record.setId(productRecord.getId());
|
|
|
+ record.setComponentNum(productRecord.getSn());
|
|
|
+ record.setProductCate(productRecord.getLineSn());
|
|
|
+ record.setOprno(productRecord.getOprno());
|
|
|
+ record.setWorkNum(productRecord.getCreateBy());
|
|
|
+ record.setTestTime(productRecord.getUpdateDate());
|
|
|
+ record.setLeakagePoint(leakagePoint);
|
|
|
+ record.setTestResult(productRecord.getContent());
|
|
|
+ record.setTitle(CommonUitl.resolveQmTitle(productRecord.getOprno(), "气密检测"));
|
|
|
+ records.add(record);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
records.sort(Comparator.comparing(MesProductQm::getTestTime,
|
|
|
Comparator.nullsLast(Comparator.reverseOrder())));
|
|
|
|
|
|
@@ -163,6 +226,10 @@ public class MesProductQmController extends BaseController {
|
|
|
return false;
|
|
|
}
|
|
|
|
|
|
+ private String leakagePointKey(String sn, String oprno) {
|
|
|
+ return StringUtils.defaultString(sn) + "|" + StringUtils.defaultString(oprno);
|
|
|
+ }
|
|
|
+
|
|
|
/**
|
|
|
* 查看编辑表单
|
|
|
*/
|
|
|
@@ -180,6 +247,7 @@ public class MesProductQmController extends BaseController {
|
|
|
@PostMapping(value = "save")
|
|
|
@ResponseBody
|
|
|
public String save(@Validated MesProductQm mesProductQm) {
|
|
|
+ mesProductQm.setTitle(CommonUitl.resolveQmTitle(mesProductQm.getOprno(), mesProductQm.getTitle()));
|
|
|
mesProductQmService.save(mesProductQm);
|
|
|
return renderResult(Global.TRUE, text("保存气密检测记录成功!"));
|
|
|
}
|
|
|
@@ -257,6 +325,7 @@ public class MesProductQmController extends BaseController {
|
|
|
// mesProductQm.setTestPressureUnit("Pa");
|
|
|
// mesProductQm.setTestResult("OK");
|
|
|
// mesProductQm.setTestTime(new Date());
|
|
|
+ mesProductQm.setTitle(CommonUitl.resolveQmTitle(mesProductQm.getOprno(), mesProductQm.getTitle()));
|
|
|
mesProductQmService.add(mesProductQm);
|
|
|
return renderResult(Global.TRUE, text("操作成功!"));
|
|
|
}
|