feat(检验任務): 新增檢驗任務-檢驗項目作業邏輯

refs: #13356
This commit is contained in:
YiLiLin 2023-07-19 17:12:58 +08:00
parent ab200cdffc
commit d73674d374
21 changed files with 523 additions and 6 deletions

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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);
}
}

View File

@ -44,6 +44,4 @@ public class QmsInspecFactor extends Model<QmsInspecFactor> {
*/
@ApiModelProperty(value = "要因值")
private String value;
}

View File

@ -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));
}
}

View File

@ -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);
}

View File

@ -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);
}

View File

@ -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);
}

View File

@ -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);
}

View File

@ -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>>() {
});
}
}

View File

@ -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);
}
}

View File

@ -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();

View File

@ -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);
}
}

View File

@ -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>

View File

@ -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);
}

View File

@ -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);
}

View File

@ -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);
}

View File

@ -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>

View File

@ -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>

View File

@ -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>