parent
ab200cdffc
commit
d73674d374
@ -1,9 +1,13 @@
|
||||
package com.foreverwin.iep.qms.dto;
|
||||
|
||||
import com.foreverwin.iep.qms.entity.QmsInspecDetail;
|
||||
import com.foreverwin.iep.qms.entity.QmsInspecResult;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
public class QmsInspecDetailDTO extends QmsInspecDetail {
|
||||
@ -14,8 +18,19 @@ public class QmsInspecDetailDTO extends QmsInspecDetail {
|
||||
|
||||
private String itemType;
|
||||
|
||||
private String controlMode;
|
||||
|
||||
private String samplePlan;
|
||||
|
||||
private String samplePlanType;
|
||||
|
||||
private String areaInfo;
|
||||
|
||||
private String contentDesc;
|
||||
|
||||
private List<Map<String, Object>> resultList;
|
||||
|
||||
private QmsInspecResult contentResult;
|
||||
|
||||
private List<QmsInspecFactorDTO> factorList;
|
||||
}
|
||||
|
||||
@ -0,0 +1,14 @@
|
||||
package com.foreverwin.iep.qms.dto;
|
||||
|
||||
import com.foreverwin.iep.qms.entity.QmsInspecFactor;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
public class QmsInspecFactorDTO extends QmsInspecFactor {
|
||||
|
||||
private String factor;
|
||||
|
||||
private String description;
|
||||
}
|
||||
@ -0,0 +1,14 @@
|
||||
package com.foreverwin.iep.qms.dto;
|
||||
|
||||
import com.foreverwin.iep.qms.entity.QmsInspecResultNccode;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
public class QmsInspecResultNccodeDTO extends QmsInspecResultNccode {
|
||||
|
||||
private String ncCode;
|
||||
|
||||
private String description;
|
||||
}
|
||||
@ -5,12 +5,11 @@ import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import com.baomidou.mybatisplus.extension.activerecord.Model;
|
||||
import com.foreverwin.iep.common.utils.HandleBoProcessor;
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import java.io.Serializable;
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
/**
|
||||
* 要因主表
|
||||
@ -69,4 +68,7 @@ public class QmsFactor extends Model<QmsFactor> {
|
||||
@ApiModelProperty(value="是否预设")
|
||||
private String isDefault;
|
||||
|
||||
public static String genHandle(String site, String factor) {
|
||||
return HandleBoProcessor.genHandle("FactorBO:", site, factor);
|
||||
}
|
||||
}
|
||||
|
||||
@ -44,6 +44,4 @@ public class QmsInspecFactor extends Model<QmsInspecFactor> {
|
||||
*/
|
||||
@ApiModelProperty(value = "要因值")
|
||||
private String value;
|
||||
|
||||
|
||||
}
|
||||
|
||||
@ -2,6 +2,7 @@ package com.foreverwin.iep.qms.controller;
|
||||
|
||||
import com.foreverwin.iep.common.base.FrontPage;
|
||||
import com.foreverwin.iep.qms.domain.InspecJob;
|
||||
import com.foreverwin.iep.qms.dto.QmsInspecDetailDTO;
|
||||
import com.foreverwin.iep.qms.dto.QmsInspecJobDTO;
|
||||
import com.foreverwin.iep.qms.service.QmsInspecDetailService;
|
||||
import com.foreverwin.iep.qms.service.QmsInspecJobService;
|
||||
@ -72,4 +73,23 @@ public class QmsInspecJobController {
|
||||
qmsInspecJobService.operate(inspecJob);
|
||||
return R.ok();
|
||||
}
|
||||
|
||||
@ApiOperation(value = "檢驗任務明細-檢驗項目查詢", notes = "檢驗任務明細-檢驗項目查詢")
|
||||
@GetMapping("/detail/result/{inspecDetailBo}")
|
||||
public R getDetailResult(@PathVariable("inspecDetailBo") String inspecDetailBo) {
|
||||
return R.ok(qmsInspecDetailService.getDetailResult(inspecDetailBo));
|
||||
}
|
||||
|
||||
@ApiOperation(value = "檢驗任務明細-檢驗項目結果保存", notes = "檢驗任務明細-檢驗項目結果保存")
|
||||
@PostMapping("/detail/result")
|
||||
public R saveDetailResult(@RequestBody QmsInspecDetailDTO dto) {
|
||||
qmsInspecDetailService.saveResult(dto);
|
||||
return R.ok();
|
||||
}
|
||||
|
||||
@ApiOperation(value = "檢驗任務-不合格代碼", notes = "檢驗任務-不合格代碼")
|
||||
@GetMapping("/nc/{inspecJobBo}")
|
||||
public R getNc(@PathVariable("inspecJobBo") String inspecJobBo) {
|
||||
return R.ok(qmsInspecJobService.getNc(inspecJobBo));
|
||||
}
|
||||
}
|
||||
|
||||
@ -15,4 +15,8 @@ import java.util.List;
|
||||
public interface QmsInspecDetailService extends IService<QmsInspecDetail> {
|
||||
|
||||
List<QmsInspecDetailDTO> selectAll(String inspecJobBo);
|
||||
|
||||
QmsInspecDetailDTO getDetailResult(String inspecDetailBo);
|
||||
|
||||
void saveResult(QmsInspecDetailDTO dto);
|
||||
}
|
||||
|
||||
@ -1,8 +1,11 @@
|
||||
package com.foreverwin.iep.qms.service;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.foreverwin.iep.qms.dto.QmsInspecFactorDTO;
|
||||
import com.foreverwin.iep.qms.entity.QmsInspecFactor;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 检验任务-要因
|
||||
*
|
||||
@ -10,4 +13,6 @@ import com.foreverwin.iep.qms.entity.QmsInspecFactor;
|
||||
* @date 2023-07-17 09:29:13
|
||||
*/
|
||||
public interface QmsInspecFactorService extends IService<QmsInspecFactor> {
|
||||
|
||||
List<QmsInspecFactorDTO> selectAll(String inspecDetailBo);
|
||||
}
|
||||
|
||||
@ -3,12 +3,15 @@ package com.foreverwin.iep.qms.service;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.foreverwin.iep.common.base.FrontPage;
|
||||
import com.foreverwin.iep.prd.entity.NcBasis;
|
||||
import com.foreverwin.iep.qms.domain.InspecJob;
|
||||
import com.foreverwin.iep.qms.domain.Item;
|
||||
import com.foreverwin.iep.qms.domain.Resource;
|
||||
import com.foreverwin.iep.qms.dto.QmsInspecJobDTO;
|
||||
import com.foreverwin.iep.qms.entity.QmsInspecJob;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 产品检验任务作业-主文件
|
||||
*
|
||||
@ -28,4 +31,6 @@ public interface QmsInspecJobService extends IService<QmsInspecJob> {
|
||||
void update(InspecJob inspecJob);
|
||||
|
||||
void operate(InspecJob inspecJob);
|
||||
|
||||
List<NcBasis> getNc(String inspecJobBo);
|
||||
}
|
||||
|
||||
@ -1,8 +1,12 @@
|
||||
package com.foreverwin.iep.qms.service;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.foreverwin.iep.prd.entity.NcBasis;
|
||||
import com.foreverwin.iep.qms.dto.QmsInspecResultNccodeDTO;
|
||||
import com.foreverwin.iep.qms.entity.QmsInspecResultNccode;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 检验任务-不合格代码
|
||||
*
|
||||
@ -10,4 +14,8 @@ import com.foreverwin.iep.qms.entity.QmsInspecResultNccode;
|
||||
* @date 2023-07-17 09:32:45
|
||||
*/
|
||||
public interface QmsInspecResultNccodeService extends IService<QmsInspecResultNccode> {
|
||||
|
||||
List<QmsInspecResultNccodeDTO> selectAll(String inspecResultSid);
|
||||
|
||||
List<NcBasis> selectNc(String operationBo);
|
||||
}
|
||||
|
||||
@ -1,14 +1,36 @@
|
||||
package com.foreverwin.iep.qms.service.impl;
|
||||
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import cn.hutool.extra.spring.SpringUtil;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.alibaba.fastjson.TypeReference;
|
||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.foreverwin.iep.common.utils.ListUtils;
|
||||
import com.foreverwin.iep.common.utils.SidUtils;
|
||||
import com.foreverwin.iep.prd.entity.NcBasis;
|
||||
import com.foreverwin.iep.qms.dto.QmsInspecDetailDTO;
|
||||
import com.foreverwin.iep.qms.entity.QmsInspecDetail;
|
||||
import com.foreverwin.iep.qms.dto.QmsInspecFactorDTO;
|
||||
import com.foreverwin.iep.qms.dto.QmsInspecResultNccodeDTO;
|
||||
import com.foreverwin.iep.qms.entity.*;
|
||||
import com.foreverwin.iep.qms.mapper.QmsInspecDetailMapper;
|
||||
import com.foreverwin.iep.qms.service.QmsInspecDetailService;
|
||||
import com.foreverwin.iep.qms.service.*;
|
||||
import com.foreverwin.mom.common.data.tenant.TenantContextHolder;
|
||||
import com.foreverwin.mom.common.security.util.SecurityUtils;
|
||||
import lombok.AllArgsConstructor;
|
||||
import org.springframework.beans.BeanUtils;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.concurrent.atomic.AtomicBoolean;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* 检验任务-明细
|
||||
@ -20,8 +42,320 @@ import java.util.List;
|
||||
@AllArgsConstructor
|
||||
public class QmsInspecDetailServiceImpl extends ServiceImpl<QmsInspecDetailMapper, QmsInspecDetail> implements QmsInspecDetailService {
|
||||
|
||||
private QmsInspecJobService getQmsInspecJobService() {
|
||||
return SpringUtil.getBean(QmsInspecJobService.class);
|
||||
}
|
||||
|
||||
private final QmsInspecSnService qmsInspecSnService;
|
||||
private final QmsInspecResultService qmsInspecResultService;
|
||||
private final QmsQcPlanDetailService qmsQcPlanDetailService;
|
||||
private final QmsInspecFactorService qmsInspecFactorService;
|
||||
private final QmsInspecResultNccodeService qmsInspecResultNccodeService;
|
||||
|
||||
private static final String OK = "1";
|
||||
private static final String NG = "0";
|
||||
|
||||
@Override
|
||||
public List<QmsInspecDetailDTO> selectAll(String inspecJobBo) {
|
||||
return baseMapper.selectAll(inspecJobBo);
|
||||
}
|
||||
|
||||
@Override
|
||||
public QmsInspecDetailDTO getDetailResult(String inspecDetailBo) {
|
||||
QmsInspecDetailDTO inspecDetail = baseMapper.selectDetail(inspecDetailBo);
|
||||
String itemType = inspecDetail.getItemType();
|
||||
Map<String, String> area = area(inspecDetail.getAreaInfo());
|
||||
BigDecimal sampleSize = inspecDetail.getSampleSize();
|
||||
BigDecimal dieQty = inspecDetail.getDieQty();
|
||||
|
||||
List<QmsInspecSn> inspecSns = qmsInspecSnService.list(Wrappers.lambdaQuery(QmsInspecSn.class)
|
||||
.eq(QmsInspecSn::getInspecDetailBo, inspecDetailBo));
|
||||
List<QmsInspecResult> inspecResults = qmsInspecResultService.list(Wrappers.lambdaQuery(QmsInspecResult.class)
|
||||
.eq(QmsInspecResult::getInspecDetailBo, inspecDetailBo));
|
||||
|
||||
inspecDetail.setFactorList(qmsInspecFactorService.selectAll(inspecDetailBo));
|
||||
// 內文
|
||||
if ("2".equals(itemType)) {
|
||||
QmsQcPlanDetail qcPlanDetail = qmsQcPlanDetailService.getById(inspecDetail.getQcPlanDetailBo());
|
||||
inspecDetail.setContentDesc(qcPlanDetail.getContent());
|
||||
if (!ListUtils.isEmpty(inspecResults)) {
|
||||
inspecDetail.setContentResult(inspecResults.get(0));
|
||||
}
|
||||
return inspecDetail;
|
||||
}
|
||||
|
||||
// 計數
|
||||
// 計量
|
||||
int size = sampleSize.intValue();
|
||||
int die = 1;
|
||||
if (ObjectUtil.isNotNull(dieQty)) {
|
||||
die = dieQty.intValue();
|
||||
}
|
||||
|
||||
List<Map<String, Object>> resultList = new ArrayList<>();
|
||||
for (int i = 0; i < size; i++) {
|
||||
int seq = i + 1;
|
||||
QmsInspecSn sn = filterSn(inspecSns, String.valueOf(seq));
|
||||
String snValue = null;
|
||||
if (ObjectUtil.isNotNull(sn)) {
|
||||
snValue = sn.getSn();
|
||||
}
|
||||
|
||||
for (int j = 0; j < die; j++) {
|
||||
int series = j + 1;
|
||||
Map<String, Object> map = new HashMap<>();
|
||||
map.put("seq", seq);
|
||||
map.put("sn", snValue);
|
||||
|
||||
area.forEach((k, v) -> {
|
||||
String value = v;
|
||||
if (StrUtil.isBlank(value)) {
|
||||
value = k;
|
||||
}
|
||||
|
||||
QmsInspecResult result = filtersResult(inspecResults, String.valueOf(seq), Integer.parseInt(k), series);
|
||||
String resultValue = null;
|
||||
List<QmsInspecResultNccodeDTO> resultNcCodeList = new ArrayList<>();
|
||||
|
||||
if (ObjectUtil.isNotNull(result)) {
|
||||
resultValue = result.getResult().stripTrailingZeros().toPlainString();
|
||||
resultNcCodeList = qmsInspecResultNccodeService.selectAll(result.getSid());
|
||||
}
|
||||
map.put(value, resultValue);
|
||||
map.put(String.format("%s$%s", value, "NC"), resultNcCodeList);
|
||||
});
|
||||
map.put("series", series);
|
||||
resultList.add(map);
|
||||
}
|
||||
}
|
||||
inspecDetail.setResultList(resultList);
|
||||
return inspecDetail;
|
||||
}
|
||||
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
@Override
|
||||
public void saveResult(QmsInspecDetailDTO dto) {
|
||||
String site = TenantContextHolder.getTenantId();
|
||||
String inspecDetailBo = dto.getHandle();
|
||||
List<Map<String, Object>> resultList = dto.getResultList();
|
||||
List<QmsInspecFactorDTO> factorList = dto.getFactorList();
|
||||
|
||||
QmsInspecDetailDTO inspecDetail = baseMapper.selectDetail(inspecDetailBo);
|
||||
String inspecJobBo = inspecDetail.getInspecJobBo();
|
||||
String itemType = inspecDetail.getItemType();
|
||||
BigDecimal max = inspecDetail.getMaxValue();
|
||||
BigDecimal min = inspecDetail.getMinValue();
|
||||
Map<String, String> areaMap = area(inspecDetail.getAreaInfo());
|
||||
|
||||
remove(inspecDetailBo);
|
||||
updateJobStatus(inspecJobBo);
|
||||
saveFactor(inspecDetailBo, factorList);
|
||||
|
||||
// 內文
|
||||
if ("2".equals(itemType)) {
|
||||
QmsInspecResult inspecResult = new QmsInspecResult();
|
||||
inspecResult.setSid(SidUtils.genSid());
|
||||
inspecResult.setInspecDetailBo(inspecDetailBo);
|
||||
inspecResult.setContent(dto.getContentResult().getContent());
|
||||
qmsInspecResultService.save(inspecResult);
|
||||
|
||||
updateResult(inspecDetailBo, OK);
|
||||
return;
|
||||
}
|
||||
|
||||
// 計數
|
||||
// 計量
|
||||
saveSn(inspecDetailBo, resultList);
|
||||
|
||||
AtomicBoolean flag = new AtomicBoolean(true);
|
||||
List<String> oocRemarkList = new ArrayList<>();
|
||||
|
||||
List<QmsInspecResult> inspecResultList = new ArrayList<>();
|
||||
List<QmsInspecResultNccode> inspecResultNcList = new ArrayList<>();
|
||||
resultList.forEach(objectMap -> {
|
||||
String seq = String.valueOf(objectMap.get("seq"));
|
||||
int series = (int) objectMap.get("series");
|
||||
|
||||
areaMap.forEach((k, v) -> {
|
||||
QmsInspecResult inspecResult = new QmsInspecResult();
|
||||
inspecResult.setSid(SidUtils.genSid());
|
||||
inspecResult.setInspecDetailBo(inspecDetailBo);
|
||||
inspecResult.setSeq(seq);
|
||||
inspecResult.setArea(Integer.parseInt(k));
|
||||
inspecResult.setSeries(series);
|
||||
|
||||
String value = v;
|
||||
if (StrUtil.isBlank(value)) {
|
||||
value = k;
|
||||
}
|
||||
|
||||
BigDecimal result = new BigDecimal((String) objectMap.get(value));
|
||||
inspecResult.setResult(result);
|
||||
inspecResultList.add(inspecResult);
|
||||
|
||||
switch (itemType) {
|
||||
case "0":
|
||||
Object ncValue = objectMap.get(String.format("%s$%s", value, "NC"));
|
||||
if (ObjectUtil.isNotNull(ncValue)) {
|
||||
List<QmsInspecResultNccodeDTO> resultNcList = (List<QmsInspecResultNccodeDTO>) ncValue;
|
||||
if (!ListUtils.isEmpty(resultNcList)) {
|
||||
Map<String, Integer> count = new HashMap<>();
|
||||
resultNcList.forEach(resultNc -> {
|
||||
String ncCode = resultNc.getNcCode();
|
||||
|
||||
QmsInspecResultNccode inspecResultNc = new QmsInspecResultNccodeDTO();
|
||||
inspecResultNc.setSid(SidUtils.genSid());
|
||||
inspecResultNc.setInspecResultSid(inspecResult.getSid());
|
||||
inspecResultNc.setNcBasisBo(NcBasis.genHandle(site, ncCode));
|
||||
inspecResultNcList.add(inspecResultNc);
|
||||
|
||||
Integer qty = count.getOrDefault(ncCode, 0);
|
||||
count.put(ncCode, qty + 1);
|
||||
});
|
||||
|
||||
count.forEach((nc, qty) -> {
|
||||
oocRemarkList.add(String.format("%s:%%nc.description%%, %%nc.judge.qty%% %s", nc, qty));
|
||||
});
|
||||
flag.set(false);
|
||||
}
|
||||
}
|
||||
break;
|
||||
case "1":
|
||||
int spec = 0;
|
||||
if (ObjectUtil.isNotNull(min) && min.compareTo(result) > 0) {
|
||||
spec = 1;
|
||||
}
|
||||
|
||||
if (ObjectUtil.isNotNull(max) && max.compareTo(result) < 0) {
|
||||
spec = 2;
|
||||
}
|
||||
|
||||
if (spec > 0) {
|
||||
String remark = String.format("OOS: %s", result.stripTrailingZeros().toPlainString());
|
||||
switch (spec) {
|
||||
case 1:
|
||||
remark = String.format("%s %%out.of.spec.min%% %s", remark, min.stripTrailingZeros()
|
||||
.toPlainString());
|
||||
break;
|
||||
case 2:
|
||||
remark = String.format("%s %%out.of.spec.max%% %s", remark, max.stripTrailingZeros()
|
||||
.toPlainString());
|
||||
break;
|
||||
}
|
||||
oocRemarkList.add(remark);
|
||||
flag.set(false);
|
||||
}
|
||||
break;
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
String result = flag.get() ? OK : NG;
|
||||
updateResult(inspecDetailBo, result, String.join("|", oocRemarkList));
|
||||
qmsInspecResultService.saveBatch(inspecResultList);
|
||||
qmsInspecResultNccodeService.saveBatch(inspecResultNcList);
|
||||
}
|
||||
|
||||
private QmsInspecSn filterSn(List<QmsInspecSn> inspecSns, String seq) {
|
||||
return inspecSns.stream()
|
||||
.filter(filters -> filters.getSeq().equals(seq))
|
||||
.findFirst()
|
||||
.orElse(null);
|
||||
}
|
||||
|
||||
private QmsInspecResult filtersResult(List<QmsInspecResult> inspecResults, String seq, int area, int series) {
|
||||
return inspecResults.stream()
|
||||
.filter(filters -> filters.getSeq().equals(seq) &&
|
||||
filters.getArea() == area &&
|
||||
filters.getSeries() == series)
|
||||
.findFirst()
|
||||
.orElse(null);
|
||||
}
|
||||
|
||||
private void remove(String inspecDetailBo) {
|
||||
qmsInspecSnService.remove(Wrappers.lambdaQuery(QmsInspecSn.class)
|
||||
.eq(QmsInspecSn::getInspecDetailBo, inspecDetailBo));
|
||||
qmsInspecResultService.remove(Wrappers.lambdaQuery(QmsInspecResult.class)
|
||||
.eq(QmsInspecResult::getInspecDetailBo, inspecDetailBo));
|
||||
qmsInspecFactorService.remove(Wrappers.lambdaQuery(QmsInspecFactor.class)
|
||||
.eq(QmsInspecFactor::getInspecDetailBo, inspecDetailBo));
|
||||
}
|
||||
|
||||
private void updateJobStatus(String inspecJobBo) {
|
||||
getQmsInspecJobService().update(Wrappers.lambdaUpdate(QmsInspecJob.class)
|
||||
.set(QmsInspecJob::getStatus, "2")
|
||||
.eq(QmsInspecJob::getHandle, inspecJobBo));
|
||||
}
|
||||
|
||||
private void updateResult(String inspecDetailBo, String result) {
|
||||
updateResult(inspecDetailBo, result, null);
|
||||
}
|
||||
|
||||
private void updateResult(String inspecDetailBo, String result, String oocRemark) {
|
||||
update(Wrappers.lambdaUpdate(QmsInspecDetail.class)
|
||||
.set(QmsInspecDetail::getResult, result)
|
||||
.set(StrUtil.isNotBlank(oocRemark), QmsInspecDetail::getOocRemark, oocRemark)
|
||||
.eq(QmsInspecDetail::getHandle, inspecDetailBo));
|
||||
}
|
||||
|
||||
private void saveFactor(String inspecDetailBo, List<QmsInspecFactorDTO> factors) {
|
||||
String site = TenantContextHolder.getTenantId();
|
||||
qmsInspecFactorService.saveBatch(factors.stream()
|
||||
.map(dto -> {
|
||||
String factor = dto.getFactor();
|
||||
|
||||
QmsInspecFactor inspecFactor = new QmsInspecFactor();
|
||||
BeanUtils.copyProperties(dto, inspecFactor);
|
||||
|
||||
inspecFactor.setSid(SidUtils.genSid());
|
||||
inspecFactor.setInspecDetailBo(inspecDetailBo);
|
||||
inspecFactor.setFactorBo(QmsFactor.genHandle(site, factor));
|
||||
return inspecFactor;
|
||||
})
|
||||
.collect(Collectors.toList()));
|
||||
}
|
||||
|
||||
private void saveSn(String inspecDetailBo, List<Map<String, Object>> resultList) {
|
||||
String user = SecurityUtils.getUserName();
|
||||
LocalDateTime now = LocalDateTime.now();
|
||||
|
||||
List<QmsInspecSn> inspecSnList = new ArrayList<>();
|
||||
Map<String, List<Map<String, Object>>> snMap = resultList.stream()
|
||||
.collect(Collectors.groupingBy(group -> String.valueOf(group.get("seq"))));
|
||||
snMap.forEach((seq, v) -> {
|
||||
Map<String, Object> objectMap = v.stream()
|
||||
.findFirst()
|
||||
.orElse(null);
|
||||
if (ObjectUtil.isNotNull(objectMap)) {
|
||||
String sn = String.valueOf(objectMap.get("sn"));
|
||||
if ("null".equals(sn) || StrUtil.isBlank(sn)) {
|
||||
sn = null;
|
||||
}
|
||||
|
||||
QmsInspecSn inspecSn = new QmsInspecSn();
|
||||
inspecSn.setSid(SidUtils.genSid());
|
||||
inspecSn.setInspecDetailBo(inspecDetailBo);
|
||||
inspecSn.setSeq(seq);
|
||||
inspecSn.setSn(sn);
|
||||
inspecSn.setCreator(user);
|
||||
inspecSn.setDateCreate(now);
|
||||
inspecSnList.add(inspecSn);
|
||||
}
|
||||
});
|
||||
qmsInspecSnService.saveBatch(inspecSnList);
|
||||
}
|
||||
|
||||
private Map<String, String> area(String areaInfo) {
|
||||
if (StrUtil.isBlank(areaInfo)) {
|
||||
areaInfo = "{}";
|
||||
}
|
||||
|
||||
JSONObject object = JSONObject.parseObject(areaInfo);
|
||||
if (object.isEmpty()) {
|
||||
object.put("1", "");
|
||||
areaInfo = object.toJSONString();
|
||||
}
|
||||
return JSONObject.parseObject(areaInfo, new TypeReference<Map<String, String>>() {
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@ -1,12 +1,15 @@
|
||||
package com.foreverwin.iep.qms.service.impl;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.foreverwin.iep.qms.dto.QmsInspecFactorDTO;
|
||||
import com.foreverwin.iep.qms.entity.QmsInspecFactor;
|
||||
import com.foreverwin.iep.qms.mapper.QmsInspecFactorMapper;
|
||||
import com.foreverwin.iep.qms.service.QmsInspecFactorService;
|
||||
import lombok.AllArgsConstructor;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 检验任务-要因
|
||||
*
|
||||
@ -16,4 +19,9 @@ import org.springframework.stereotype.Service;
|
||||
@Service
|
||||
@AllArgsConstructor
|
||||
public class QmsInspecFactorServiceImpl extends ServiceImpl<QmsInspecFactorMapper, QmsInspecFactor> implements QmsInspecFactorService {
|
||||
|
||||
@Override
|
||||
public List<QmsInspecFactorDTO> selectAll(String inspecDetailBo) {
|
||||
return baseMapper.selectAll(inspecDetailBo);
|
||||
}
|
||||
}
|
||||
|
||||
@ -10,6 +10,7 @@ import com.foreverwin.iep.common.constant.BaseConstants;
|
||||
import com.foreverwin.iep.common.utils.HandleBoProcessor;
|
||||
import com.foreverwin.iep.common.utils.ListUtils;
|
||||
import com.foreverwin.iep.common.utils.SidUtils;
|
||||
import com.foreverwin.iep.prd.entity.NcBasis;
|
||||
import com.foreverwin.iep.prd.entity.Operation;
|
||||
import com.foreverwin.iep.production.dto.GenerateNextNumberRequest;
|
||||
import com.foreverwin.iep.production.dto.GenerateNextNumberResponse;
|
||||
@ -65,6 +66,7 @@ public class QmsInspecJobServiceImpl extends ServiceImpl<QmsInspecJobMapper, Qms
|
||||
private final QmsQcItemFactorService qmsQcItemFactorService;
|
||||
private final QmsInspecDetailService qmsInspecDetailService;
|
||||
private final QmsInspecFactorService qmsInspecFactorService;
|
||||
private final QmsInspecResultNccodeService qmsInspecResultNccodeService;
|
||||
private final RemoteRoleService remoteRoleService;
|
||||
|
||||
@Override
|
||||
@ -253,6 +255,12 @@ public class QmsInspecJobServiceImpl extends ServiceImpl<QmsInspecJobMapper, Qms
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<NcBasis> getNc(String inspecJobBo) {
|
||||
QmsInspecJob inspecJob = getById(inspecJobBo);
|
||||
return qmsInspecResultNccodeService.selectNc(inspecJob.getOperationBo());
|
||||
}
|
||||
|
||||
private LotState validation(InspecJob inspecJob) {
|
||||
String lotNo = inspecJob.getLotNo();
|
||||
|
||||
|
||||
@ -1,12 +1,16 @@
|
||||
package com.foreverwin.iep.qms.service.impl;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.foreverwin.iep.prd.entity.NcBasis;
|
||||
import com.foreverwin.iep.qms.dto.QmsInspecResultNccodeDTO;
|
||||
import com.foreverwin.iep.qms.entity.QmsInspecResultNccode;
|
||||
import com.foreverwin.iep.qms.mapper.QmsInspecResultNccodeMapper;
|
||||
import com.foreverwin.iep.qms.service.QmsInspecResultNccodeService;
|
||||
import lombok.AllArgsConstructor;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 检验任务-不合格代码
|
||||
*
|
||||
@ -16,4 +20,14 @@ import org.springframework.stereotype.Service;
|
||||
@Service
|
||||
@AllArgsConstructor
|
||||
public class QmsInspecResultNccodeServiceImpl extends ServiceImpl<QmsInspecResultNccodeMapper, QmsInspecResultNccode> implements QmsInspecResultNccodeService {
|
||||
|
||||
@Override
|
||||
public List<QmsInspecResultNccodeDTO> selectAll(String inspecResultSid) {
|
||||
return baseMapper.selectAll(inspecResultSid);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<NcBasis> selectNc(String operationBo) {
|
||||
return baseMapper.selectNcByOperation(operationBo);
|
||||
}
|
||||
}
|
||||
|
||||
@ -18,5 +18,10 @@
|
||||
<artifactId>qms-api</artifactId>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.foreverwin</groupId>
|
||||
<artifactId>mes-api</artifactId>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
</project>
|
||||
|
||||
@ -18,4 +18,6 @@ import java.util.List;
|
||||
public interface QmsInspecDetailMapper extends BaseMapper<QmsInspecDetail> {
|
||||
|
||||
List<QmsInspecDetailDTO> selectAll(@Param("inspecJobBo") String inspecJobBo);
|
||||
|
||||
QmsInspecDetailDTO selectDetail(@Param("inspecDetailBo") String inspecDetailBo);
|
||||
}
|
||||
|
||||
@ -1,8 +1,12 @@
|
||||
package com.foreverwin.iep.qms.mapper;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.foreverwin.iep.qms.dto.QmsInspecFactorDTO;
|
||||
import com.foreverwin.iep.qms.entity.QmsInspecFactor;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 检验任务-要因
|
||||
@ -13,4 +17,5 @@ import org.apache.ibatis.annotations.Mapper;
|
||||
@Mapper
|
||||
public interface QmsInspecFactorMapper extends BaseMapper<QmsInspecFactor> {
|
||||
|
||||
List<QmsInspecFactorDTO> selectAll(@Param("inspecDetailBo") String inspecDetailBo);
|
||||
}
|
||||
|
||||
@ -1,8 +1,13 @@
|
||||
package com.foreverwin.iep.qms.mapper;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.foreverwin.iep.prd.entity.NcBasis;
|
||||
import com.foreverwin.iep.qms.dto.QmsInspecResultNccodeDTO;
|
||||
import com.foreverwin.iep.qms.entity.QmsInspecResultNccode;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 检验任务-不合格代码
|
||||
@ -13,4 +18,7 @@ import org.apache.ibatis.annotations.Mapper;
|
||||
@Mapper
|
||||
public interface QmsInspecResultNccodeMapper extends BaseMapper<QmsInspecResultNccode> {
|
||||
|
||||
List<QmsInspecResultNccodeDTO> selectAll(@Param("inspecResultSid") String inspecResultSid);
|
||||
|
||||
List<NcBasis> selectNcByOperation(@Param("operationBo") String operationBo);
|
||||
}
|
||||
|
||||
@ -27,8 +27,10 @@
|
||||
<result property="qcItem" column="QC_ITEM"/>
|
||||
<result property="qcItemDesc" column="QC_ITEM_DESC"/>
|
||||
<result property="itemType" column="ITEM_TYPE"/>
|
||||
<result property="controlMode" column="CONTROL_MODE"/>
|
||||
<result property="samplePlan" column="SAMPLE_PLAN"/>
|
||||
<result property="samplePlanType" column="SAMPLE_PLAN_TYPE"/>
|
||||
<result property="areaInfo" column="AREA_INFO"/>
|
||||
</resultMap>
|
||||
|
||||
<select id="selectAll" resultMap="full">
|
||||
@ -44,4 +46,20 @@
|
||||
left join qms_sample_plan d on b.SAMPLE_PLAN_BO = d.HANDLE
|
||||
WHERE a.INSPEC_JOB_BO = #{inspecJobBo}
|
||||
</select>
|
||||
|
||||
<select id="selectDetail" resultMap="full">
|
||||
select a.*,
|
||||
c.QC_ITEM,
|
||||
c.DESCRIPTION QC_ITEM_DESC,
|
||||
c.ITEM_TYPE,
|
||||
c.CONTROL_MODE,
|
||||
d.SAMPLE_PLAN,
|
||||
d.SAMPLE_PLAN_TYPE,
|
||||
d.AREA_INFO
|
||||
from qms_inspec_detail a
|
||||
join qms_qc_plan_detail b on a.QC_PLAN_DETAIL_BO = b.HANDLE
|
||||
join qms_qc_item c on b.QC_ITEM_BO = c.HANDLE
|
||||
left join qms_sample_plan d on b.SAMPLE_PLAN_BO = d.HANDLE
|
||||
WHERE a.HANDLE = #{inspecDetailBo}
|
||||
</select>
|
||||
</mapper>
|
||||
|
||||
@ -10,4 +10,15 @@
|
||||
<result property="factorBo" column="FACTOR_BO"/>
|
||||
<result property="value" column="VALUE"/>
|
||||
</resultMap>
|
||||
<resultMap id="full" type="com.foreverwin.iep.qms.dto.QmsInspecFactorDTO" extends="qmsInspecFactorMap">
|
||||
<result property="factor" column="FACTOR"/>
|
||||
<result property="description" column="DESCRIPTION"/>
|
||||
</resultMap>
|
||||
|
||||
<select id="selectAll" resultMap="full">
|
||||
select a.*, b.FACTOR, b.DESCRIPTION
|
||||
from qms_inspec_factor a
|
||||
join qms_factor b on a.FACTOR_BO = b.HANDLE
|
||||
where a.INSPEC_DETAIL_BO = #{inspecDetailBo}
|
||||
</select>
|
||||
</mapper>
|
||||
|
||||
@ -10,4 +10,23 @@
|
||||
<result property="seq" column="SEQ"/>
|
||||
<result property="ncBasisBo" column="NC_BASIS_BO"/>
|
||||
</resultMap>
|
||||
<resultMap id="full" type="com.foreverwin.iep.qms.dto.QmsInspecResultNccodeDTO" extends="qmsInspecResultNccodeMap">
|
||||
<result property="ncCode" column="NC_CODE"/>
|
||||
<result property="description" column="DESCRIPTION"/>
|
||||
</resultMap>
|
||||
|
||||
<select id="selectAll" resultMap="full">
|
||||
select a.*, b.NC_CODE, b.DESCRIPTION
|
||||
from qms_inspec_result_nccode a
|
||||
join nc_basis b on a.NC_BASIS_BO = b.HANDLE
|
||||
where a.INSPEC_RESULT_SID = #{inspecResultSid}
|
||||
</select>
|
||||
|
||||
<select id="selectNcByOperation" resultMap="com.foreverwin.iep.prd.mapper.NcBasisMapper.ncBasisMap">
|
||||
select distinct c.HANDLE, c.NC_CODE, c.DESCRIPTION
|
||||
from NC_GROUP_VALID_OPER a
|
||||
join nc_group_member b on a.NC_GROUP_BO = b.NC_GROUP_BO
|
||||
join nc_basis c on b.NC_CODE_OR_GROUP_GBO = c.HANDLE
|
||||
where a.OPERATION_BO = #{operationBo}
|
||||
</select>
|
||||
</mapper>
|
||||
|
||||
Loading…
Reference in New Issue
Block a user