质量检验添加质检结果填报功能

This commit is contained in:
yinjinlu-pc\尹金路 2024-12-03 23:54:26 +08:00
parent 76f6ffbe09
commit a529dc1bc9
14 changed files with 1929 additions and 6 deletions

View File

@ -20,15 +20,9 @@
系统将提供“售前”、“实施”、“用户培训”、“运维”等多个阶段的指导文档和教学视频以帮助非IT专业人士顺利完成MES项目的实施应用。 系统将提供“售前”、“实施”、“用户培训”、“运维”等多个阶段的指导文档和教学视频以帮助非IT专业人士顺利完成MES项目的实施应用。
- 前端代码地址https://gitee.com/kutangguo/ktg-mes-ui - 前端代码地址https://gitee.com/kutangguo/ktg-mes-ui
- 触控屏端地址https://gitee.com/kutangguo/ktg-mes-pad
- PC端在线体验地址 [http://www.029tec.com](http://www.029tec.com/) <font color='red'>【请不要修改账户密码,以免影响其他人体验】</font> - PC端在线体验地址 [http://www.029tec.com](http://www.029tec.com/) <font color='red'>【请不要修改账户密码,以免影响其他人体验】</font>
- 当前开发进度请参考doc->开发进度->进度甘特图.xlsx - 当前开发进度请参考doc->开发进度->进度甘特图.xlsx
- 第一版售前PPT请查看doc->售前资料->《苦糖果MES系统产品介绍A4横板.pptx》 - 第一版售前PPT请查看doc->售前资料->《苦糖果MES系统产品介绍A4横板.pptx》
- 操作手册/软件说明书请参考doc->售前资料->《苦糖果生产执行管理系统-【软件说明书】.docx》 - 操作手册/软件说明书请参考doc->售前资料->《苦糖果生产执行管理系统-【软件说明书】.docx》
欢迎交流沟通QQ411641505 欢迎交流沟通QQ411641505

View File

@ -8,6 +8,8 @@ create table qc_index (
index_name varchar(255) not null comment '检测项名称', index_name varchar(255) not null comment '检测项名称',
index_type varchar(64) not null comment '检测项类型', index_type varchar(64) not null comment '检测项类型',
qc_tool varchar(255) comment '检测工具', qc_tool varchar(255) comment '检测工具',
qc_result_type varchar(64) not null comment '质检值类型',
qc_result_spc varchar(255) comment '值属性',
remark varchar(500) default '' comment '备注', remark varchar(500) default '' comment '备注',
attr1 varchar(64) default null comment '预留字段1', attr1 varchar(64) default null comment '预留字段1',
attr2 varchar(255) default null comment '预留字段2', attr2 varchar(255) default null comment '预留字段2',
@ -432,3 +434,68 @@ create table qc_oqc_line (
-- ----------------------------
-- 14、检测结果记录表
-- ----------------------------
drop table if exists qc_result;
create table qc_result (
result_id bigint(20) not null auto_increment comment '记录ID',
result_code varchar(64) not null comment '样品编号',
source_doc_id bigint(20) comment '关联的质检单ID',
source_doc_code varchar(64) comment '关联的质检单编号',
source_doc_name varchar(255) comment '关联的质检单名称',
source_doc_type varchar(64) comment '关联的质检单类型',
item_id bigint(20) not null comment '产品物料ID',
item_code varchar(64) comment '产品物料编码',
item_name varchar(255) comment '产品物料名称',
specification varchar(500) comment '规格型号',
unit_of_measure varchar(64) comment '单位',
sn_code varchar(255) comment '对应的物资SN',
remark varchar(500) default '' comment '备注',
attr1 varchar(64) default null comment '预留字段1',
attr2 varchar(255) default null comment '预留字段2',
attr3 int(11) default 0 comment '预留字段3',
attr4 int(11) default 0 comment '预留字段4',
create_by varchar(64) default '' comment '创建者',
create_time datetime comment '创建时间',
update_by varchar(64) default '' comment '更新者',
update_time datetime comment '更新时间',
primary key (result_id)
) engine=innodb auto_increment=200 comment = '检测结果记录表';
-- ----------------------------
-- 14、检测结果明细记录表
-- ----------------------------
drop table if exists qc_result_detail;
create table qc_result_detail (
detail_id bigint(20) not null auto_increment comment '流水号',
result_id bigint(20) not null comment '结果记录ID',
index_id bigint(20) not null comment '检测项ID',
index_type varchar(64) comment '检测项类型',
qc_tool varchar(255) comment '检测工具',
check_method varchar(500) comment '检测要求',
stander_val double(12,4) comment '标准值',
unit_of_measure varchar(64) comment '单位',
threshold_max double(12,4) comment '误差上限',
threshold_min double(12,4) comment '误差下限',
qc_result_type varchar(64) not null comment '质检值类型',
qc_result_spc varchar(255) comment '值属性',
qc_val_float float(14,4) comment '浮点值',
qc_val_integer int(11) comment '整数',
qc_val_text varchar(500) comment '文字',
qc_val_dict varchar(64) comment '字典项',
qc_val_file varchar(255) comment '文件',
defect_flag varchar(64) default 'normarl' comment '判定',
remark varchar(500) default '' comment '备注',
attr1 varchar(64) default null comment '预留字段1',
attr2 varchar(255) default null comment '预留字段2',
attr3 int(11) default 0 comment '预留字段3',
attr4 int(11) default 0 comment '预留字段4',
create_by varchar(64) default '' comment '创建者',
create_time datetime comment '创建时间',
update_by varchar(64) default '' comment '更新者',
update_time datetime comment '更新时间',
primary key (detail_id)
) engine=innodb auto_increment=200 comment = '检测结果明细记录表';

View File

@ -0,0 +1,203 @@
package com.ktg.mes.qc.controller;
import java.util.List;
import javax.servlet.http.HttpServletResponse;
import com.ktg.common.constant.UserConstants;
import com.ktg.common.utils.StringUtils;
import com.ktg.mes.qc.domain.*;
import com.ktg.mes.qc.service.*;
import net.sf.jsqlparser.util.validation.metadata.DatabaseException;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.ktg.common.annotation.Log;
import com.ktg.common.core.controller.BaseController;
import com.ktg.common.core.domain.AjaxResult;
import com.ktg.common.enums.BusinessType;
import com.ktg.common.utils.poi.ExcelUtil;
import com.ktg.common.core.page.TableDataInfo;
/**
* 检测结果记录Controller
*
* @author yinjinlu
* @date 2024-11-29
*/
@RestController
@RequestMapping("/mes/qc/qcresult")
public class QcResultController extends BaseController
{
@Autowired
private IQcResultService qcResultService;
@Autowired
private IQcResultDetailService qcResultDetailService;
@Autowired
private IQcIndexService qcIndexService;
@Autowired
private IQcIqcService iqcService;
@Autowired
private IQcIpqcService pqcService;
@Autowired
private IQcOqcService oqcService;
/**
* 查询检测结果记录列表
*/
@PreAuthorize("@ss.hasPermi('mes:qc:qcresult:list')")
@GetMapping("/list")
public TableDataInfo list(QcResult qcResult)
{
startPage();
List<QcResult> list = qcResultService.selectQcResultList(qcResult);
return getDataTable(list);
}
/**
* 导出检测结果记录列表
*/
@PreAuthorize("@ss.hasPermi('mes:qc:qcresult:export')")
@Log(title = "检测结果记录", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(HttpServletResponse response, QcResult qcResult)
{
List<QcResult> list = qcResultService.selectQcResultList(qcResult);
ExcelUtil<QcResult> util = new ExcelUtil<QcResult>(QcResult.class);
util.exportExcel(response, list, "检测结果记录数据");
}
/**
* 获取检测结果记录详细信息
*/
@PreAuthorize("@ss.hasPermi('mes:qc:qcresult:query')")
@GetMapping(value = "/{resultId}")
public AjaxResult getInfo(@PathVariable("resultId") Long resultId)
{
return AjaxResult.success(qcResultService.selectQcResultByResultId(resultId));
}
/**
* 新增检测结果记录
*/
@PreAuthorize("@ss.hasPermi('mes:qc:qcresult:add')")
@Log(title = "检测结果记录", businessType = BusinessType.INSERT)
@Transactional
@PostMapping
public AjaxResult add(@RequestBody QcResult qcResult)
{
List<QcResultDetail> items = qcResult.getItems();
if(CollectionUtils.isEmpty(items)){
return AjaxResult.error("检测项以及对应的结果值不能为空!");
}
switch (qcResult.getSourceDocType()){
case UserConstants.QC_TYPE_IQC:
QcIqc iqc = iqcService.selectQcIqcByIqcId(qcResult.getSourceDocId());
if(!StringUtils.isNotNull(iqc)){
return AjaxResult.error("检测结果对应的来料检验单不存在!");
}
qcResult.setSourceDocCode(iqc.getIqcCode());
qcResult.setSourceDocName(iqc.getIqcName());
qcResult.setItemId(iqc.getItemId());
qcResult.setItemCode(iqc.getItemCode());
qcResult.setItemName(iqc.getItemName());
qcResult.setSpecification(iqc.getSpecification());
qcResult.setUnitOfMeasure(iqc.getUnitOfMeasure());
break;
case UserConstants.QC_TYPE_IPQC:
QcIpqc pqc = pqcService.selectQcIpqcByIpqcId(qcResult.getSourceDocId());
if(!StringUtils.isNotNull(pqc)){
return AjaxResult.error("检测结果对应的过程检验单不存在!");
}
qcResult.setSourceDocCode(pqc.getIpqcCode());
qcResult.setSourceDocName(pqc.getIpqcName());
qcResult.setItemId(pqc.getItemId());
qcResult.setItemCode(pqc.getItemCode());
qcResult.setItemName(pqc.getItemName());
qcResult.setSpecification(pqc.getSpecification());
qcResult.setUnitOfMeasure(pqc.getUnitOfMeasure());
break;
case UserConstants.QC_TYPE_OQC:
QcOqc oqc = oqcService.selectQcOqcByOqcId(qcResult.getSourceDocId());
if(!StringUtils.isNotNull(oqc)){
return AjaxResult.error("检测结果对应的出货检验单不存在!");
}
qcResult.setSourceDocCode(oqc.getOqcCode());
qcResult.setSourceDocName(oqc.getOqcName());
qcResult.setItemId(oqc.getItemId());
qcResult.setItemCode(oqc.getItemCode());
qcResult.setItemName(oqc.getItemName());
qcResult.setSpecification(oqc.getSpecification());
qcResult.setUnitOfMeasure(oqc.getUnitOfMeasure());
break;
default:
return AjaxResult.error("不支持的来源单据类型!请检查sourceDocType参数!");
}
qcResultService.insertQcResult(qcResult);
for(QcResultDetail detail : items){
detail.setResultId(qcResult.getResultId());
if(StringUtils.isNotNull(detail.getIndexId())){
QcIndex index = qcIndexService.selectQcIndexByIndexId(detail.getIndexId());
if(!StringUtils.isNotNull(index)){
return AjaxResult.error("检测项:【"+detail.getIndexName()+"】在系统中不存在,请检查检测项设置;重新编辑检测模板,再重新起草此检测单!");
}
}
qcResultDetailService.insertQcResultDetail(detail);
}
return AjaxResult.success(qcResult);
}
/**
* 修改检测结果记录
*/
@PreAuthorize("@ss.hasPermi('mes:qc:qcresult:edit')")
@Log(title = "检测结果记录", businessType = BusinessType.UPDATE)
@Transactional
@PutMapping
public AjaxResult edit(@RequestBody QcResult qcResult)
{
List<QcResultDetail> items = qcResult.getItems();
if(CollectionUtils.isEmpty(items)){
return AjaxResult.error("检测项以及对应的结果值不能为空!");
}
for(QcResultDetail detail : items){
qcResultDetailService.updateQcResultDetail(detail);
}
return toAjax(qcResultService.updateQcResult(qcResult));
}
/**
* 删除检测结果记录
*/
@PreAuthorize("@ss.hasPermi('mes:qc:qcresult:remove')")
@Log(title = "检测结果记录", businessType = BusinessType.DELETE)
@Transactional
@DeleteMapping("/{resultIds}")
public AjaxResult remove(@PathVariable Long[] resultIds)
{
//先删除检测结果明细
for(Long resultId :resultIds){
qcResultDetailService.deleteQcResultDetailByResultId(resultId);
}
return toAjax(qcResultService.deleteQcResultByResultIds(resultIds));
}
}

View File

@ -0,0 +1,135 @@
package com.ktg.mes.qc.controller;
import java.util.List;
import javax.servlet.http.HttpServletResponse;
import com.ktg.common.constant.UserConstants;
import com.ktg.common.utils.StringUtils;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.ktg.common.annotation.Log;
import com.ktg.common.core.controller.BaseController;
import com.ktg.common.core.domain.AjaxResult;
import com.ktg.common.enums.BusinessType;
import com.ktg.mes.qc.domain.QcResultDetail;
import com.ktg.mes.qc.service.IQcResultDetailService;
import com.ktg.common.utils.poi.ExcelUtil;
import com.ktg.common.core.page.TableDataInfo;
/**
* 检测结果明细记录Controller
*
* @author yinjinlu
* @date 2024-11-29
*/
@RestController
@RequestMapping("/mes/qc/qcresultdetail")
public class QcResultDetailController extends BaseController
{
@Autowired
private IQcResultDetailService qcResultDetailService;
/**
* 查询检测结果明细记录列表
*/
@PreAuthorize("@ss.hasPermi('mes:qc:qcresult:list')")
@GetMapping("/list")
public TableDataInfo list(QcResultDetail qcResultDetail)
{
startPage();
List<QcResultDetail> list = qcResultDetailService.selectQcResultDetailList(qcResultDetail);
return getDataTable(list);
}
/**
*
* @param qcResultDetail
* @return
*/
@PreAuthorize("@ss.hasPermi('mes:qc:qcresult:list')")
@GetMapping("/listDetails")
public AjaxResult listDetails(QcResultDetail qcResultDetail){
List<QcResultDetail> details = null;
if(StringUtils.isNotNull(qcResultDetail.getQcType())){
switch (qcResultDetail.getQcType()){
case UserConstants.QC_TYPE_IQC:
details = qcResultDetailService.selectQcResultDetailByResultIdAndIQCId(qcResultDetail);
break;
case UserConstants.QC_TYPE_IPQC:
details = qcResultDetailService.selectQcResultDetailByResultIdAndIPQCId(qcResultDetail);
break;
case UserConstants.QC_TYPE_OQC:
details = qcResultDetailService.selectQcResultDetailByResultIdAndOQCId(qcResultDetail);
break;
default:
return AjaxResult.error("来源单据类型错误!");
}
}
return AjaxResult.success(details);
}
/**
* 导出检测结果明细记录列表
*/
@PreAuthorize("@ss.hasPermi('mes:qc:qcresult:export')")
@Log(title = "检测结果明细记录", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(HttpServletResponse response, QcResultDetail qcResultDetail)
{
List<QcResultDetail> list = qcResultDetailService.selectQcResultDetailList(qcResultDetail);
ExcelUtil<QcResultDetail> util = new ExcelUtil<QcResultDetail>(QcResultDetail.class);
util.exportExcel(response, list, "检测结果明细记录数据");
}
/**
* 获取检测结果明细记录详细信息
*/
@PreAuthorize("@ss.hasPermi('mes:qc:qcresult:query')")
@GetMapping(value = "/{detailId}")
public AjaxResult getInfo(@PathVariable("detailId") Long detailId)
{
return AjaxResult.success(qcResultDetailService.selectQcResultDetailByDetailId(detailId));
}
/**
* 新增检测结果明细记录
*/
@PreAuthorize("@ss.hasPermi('mes:qc:qcresult:add')")
@Log(title = "检测结果明细记录", businessType = BusinessType.INSERT)
@PostMapping
public AjaxResult add(@RequestBody QcResultDetail qcResultDetail)
{
return toAjax(qcResultDetailService.insertQcResultDetail(qcResultDetail));
}
/**
* 修改检测结果明细记录
*/
@PreAuthorize("@ss.hasPermi('mes:qc:qcresult:edit')")
@Log(title = "检测结果明细记录", businessType = BusinessType.UPDATE)
@PutMapping
public AjaxResult edit(@RequestBody QcResultDetail qcResultDetail)
{
return toAjax(qcResultDetailService.updateQcResultDetail(qcResultDetail));
}
/**
* 删除检测结果明细记录
*/
@PreAuthorize("@ss.hasPermi('mes:qc:qcresult:remove')")
@Log(title = "检测结果明细记录", businessType = BusinessType.DELETE)
@DeleteMapping("/{detailIds}")
public AjaxResult remove(@PathVariable Long[] detailIds)
{
return toAjax(qcResultDetailService.deleteQcResultDetailByDetailIds(detailIds));
}
}

View File

@ -0,0 +1,260 @@
package com.ktg.mes.qc.domain;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ktg.common.annotation.Excel;
import com.ktg.common.core.domain.BaseEntity;
import java.util.List;
/**
* 检测结果记录对象 qc_result
*
* @author yinjinlu
* @date 2024-11-29
*/
public class QcResult extends BaseEntity
{
private static final long serialVersionUID = 1L;
/** 记录ID */
private Long resultId;
/** 记录编号 */
@Excel(name = "记录编号")
private String resultCode;
/** 关联的质检单ID */
@Excel(name = "关联的质检单ID")
private Long sourceDocId;
/** 关联的质检单编号 */
@Excel(name = "关联的质检单编号")
private String sourceDocCode;
/** 关联的质检单名称 */
@Excel(name = "关联的质检单名称")
private String sourceDocName;
/** 关联的质检单类型 */
@Excel(name = "关联的质检单类型")
private String sourceDocType;
/** 产品物料ID */
@Excel(name = "产品物料ID")
private Long itemId;
/** 产品物料编码 */
@Excel(name = "产品物料编码")
private String itemCode;
/** 产品物料名称 */
@Excel(name = "产品物料名称")
private String itemName;
/** 规格型号 */
@Excel(name = "规格型号")
private String specification;
/** 单位 */
@Excel(name = "单位")
private String unitOfMeasure;
/** 对应的物资SN */
@Excel(name = "对应的物资SN")
private String snCode;
/** 预留字段1 */
private String attr1;
/** 预留字段2 */
private String attr2;
/** 预留字段3 */
private Long attr3;
/** 预留字段4 */
private Long attr4;
private List<QcResultDetail> items;
public void setResultId(Long resultId)
{
this.resultId = resultId;
}
public Long getResultId()
{
return resultId;
}
public String getResultCode() {
return resultCode;
}
public void setResultCode(String resultCode) {
this.resultCode = resultCode;
}
public void setSourceDocId(Long sourceDocId)
{
this.sourceDocId = sourceDocId;
}
public Long getSourceDocId()
{
return sourceDocId;
}
public void setSourceDocCode(String sourceDocCode)
{
this.sourceDocCode = sourceDocCode;
}
public String getSourceDocCode()
{
return sourceDocCode;
}
public void setSourceDocName(String sourceDocName)
{
this.sourceDocName = sourceDocName;
}
public String getSourceDocName()
{
return sourceDocName;
}
public void setSourceDocType(String sourceDocType)
{
this.sourceDocType = sourceDocType;
}
public String getSourceDocType()
{
return sourceDocType;
}
public void setItemId(Long itemId)
{
this.itemId = itemId;
}
public Long getItemId()
{
return itemId;
}
public void setItemCode(String itemCode)
{
this.itemCode = itemCode;
}
public String getItemCode()
{
return itemCode;
}
public void setItemName(String itemName)
{
this.itemName = itemName;
}
public String getItemName()
{
return itemName;
}
public void setSpecification(String specification)
{
this.specification = specification;
}
public String getSpecification()
{
return specification;
}
public void setUnitOfMeasure(String unitOfMeasure)
{
this.unitOfMeasure = unitOfMeasure;
}
public String getUnitOfMeasure()
{
return unitOfMeasure;
}
public void setSnCode(String snCode)
{
this.snCode = snCode;
}
public String getSnCode()
{
return snCode;
}
public void setAttr1(String attr1)
{
this.attr1 = attr1;
}
public String getAttr1()
{
return attr1;
}
public void setAttr2(String attr2)
{
this.attr2 = attr2;
}
public String getAttr2()
{
return attr2;
}
public void setAttr3(Long attr3)
{
this.attr3 = attr3;
}
public Long getAttr3()
{
return attr3;
}
public void setAttr4(Long attr4)
{
this.attr4 = attr4;
}
public Long getAttr4()
{
return attr4;
}
public List<QcResultDetail> getItems() {
return items;
}
public void setItems(List<QcResultDetail> items) {
this.items = items;
}
@Override
public String toString() {
return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
.append("resultId", getResultId())
.append("resultCode", getResultCode())
.append("sourceDocId", getSourceDocId())
.append("sourceDocCode", getSourceDocCode())
.append("sourceDocName", getSourceDocName())
.append("sourceDocType", getSourceDocType())
.append("itemId", getItemId())
.append("itemCode", getItemCode())
.append("itemName", getItemName())
.append("specification", getSpecification())
.append("unitOfMeasure", getUnitOfMeasure())
.append("snCode", getSnCode())
.append("remark", getRemark())
.append("attr1", getAttr1())
.append("attr2", getAttr2())
.append("attr3", getAttr3())
.append("attr4", getAttr4())
.append("createBy", getCreateBy())
.append("createTime", getCreateTime())
.append("updateBy", getUpdateBy())
.append("updateTime", getUpdateTime())
.toString();
}
}

View File

@ -0,0 +1,367 @@
package com.ktg.mes.qc.domain;
import java.math.BigDecimal;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ktg.common.annotation.Excel;
import com.ktg.common.core.domain.BaseEntity;
/**
* 检测结果明细记录对象 qc_result_detail
*
* @author yinjinlu
* @date 2024-11-29
*/
public class QcResultDetail extends BaseEntity
{
private static final long serialVersionUID = 1L;
private Long qcId;
private String qcType;
/** 流水号 */
private Long detailId;
/** 结果记录ID */
@Excel(name = "结果记录ID")
private Long resultId;
/** 检测项ID */
@Excel(name = "检测项ID")
private Long indexId;
private String indexCode;
private String indexName;
/** 检测项类型 */
@Excel(name = "检测项类型")
private String indexType;
/** 检测工具 */
@Excel(name = "检测工具")
private String qcTool;
/** 检测要求 */
@Excel(name = "检测要求")
private String checkMethod;
/** 标准值 */
@Excel(name = "标准值")
private BigDecimal standerVal;
/** 单位 */
@Excel(name = "单位")
private String unitOfMeasure;
/** 误差上限 */
@Excel(name = "误差上限")
private BigDecimal thresholdMax;
/** 误差下限 */
@Excel(name = "误差下限")
private BigDecimal thresholdMin;
/** 质检值类型 */
@Excel(name = "质检值类型")
private String qcResultType;
/** 值属性 */
@Excel(name = "值属性")
private String qcResultSpc;
/** 浮点值 */
@Excel(name = "浮点值")
private BigDecimal qcValFloat;
/** 整数 */
@Excel(name = "整数")
private Long qcValInteger;
/** 文字 */
@Excel(name = "文字")
private String qcValText;
/** 字典项 */
@Excel(name = "字典项")
private String qcValDict;
/** 文件 */
@Excel(name = "文件")
private String qcValFile;
/** 预留字段1 */
@Excel(name = "预留字段1")
private String attr1;
/** 预留字段2 */
@Excel(name = "预留字段2")
private String attr2;
/** 预留字段3 */
@Excel(name = "预留字段3")
private Long attr3;
/** 预留字段4 */
@Excel(name = "预留字段4")
private Long attr4;
public Long getQcId() {
return qcId;
}
public void setQcId(Long qcId) {
this.qcId = qcId;
}
public String getQcType() {
return qcType;
}
public void setQcType(String qcType) {
this.qcType = qcType;
}
public void setDetailId(Long detailId)
{
this.detailId = detailId;
}
public Long getDetailId()
{
return detailId;
}
public void setResultId(Long resultId)
{
this.resultId = resultId;
}
public Long getResultId()
{
return resultId;
}
public void setIndexId(Long indexId)
{
this.indexId = indexId;
}
public Long getIndexId()
{
return indexId;
}
public String getIndexCode() {
return indexCode;
}
public void setIndexCode(String indexCode) {
this.indexCode = indexCode;
}
public String getIndexName() {
return indexName;
}
public void setIndexName(String indexName) {
this.indexName = indexName;
}
public void setIndexType(String indexType)
{
this.indexType = indexType;
}
public String getIndexType()
{
return indexType;
}
public void setQcTool(String qcTool)
{
this.qcTool = qcTool;
}
public String getQcTool()
{
return qcTool;
}
public void setCheckMethod(String checkMethod)
{
this.checkMethod = checkMethod;
}
public String getCheckMethod()
{
return checkMethod;
}
public void setStanderVal(BigDecimal standerVal)
{
this.standerVal = standerVal;
}
public BigDecimal getStanderVal()
{
return standerVal;
}
public void setUnitOfMeasure(String unitOfMeasure)
{
this.unitOfMeasure = unitOfMeasure;
}
public String getUnitOfMeasure()
{
return unitOfMeasure;
}
public void setThresholdMax(BigDecimal thresholdMax)
{
this.thresholdMax = thresholdMax;
}
public BigDecimal getThresholdMax()
{
return thresholdMax;
}
public void setThresholdMin(BigDecimal thresholdMin)
{
this.thresholdMin = thresholdMin;
}
public BigDecimal getThresholdMin()
{
return thresholdMin;
}
public void setQcResultType(String qcResultType)
{
this.qcResultType = qcResultType;
}
public String getQcResultType()
{
return qcResultType;
}
public void setQcResultSpc(String qcResultSpc)
{
this.qcResultSpc = qcResultSpc;
}
public String getQcResultSpc()
{
return qcResultSpc;
}
public void setQcValFloat(BigDecimal qcValFloat)
{
this.qcValFloat = qcValFloat;
}
public BigDecimal getQcValFloat()
{
return qcValFloat;
}
public void setQcValInteger(Long qcValInteger)
{
this.qcValInteger = qcValInteger;
}
public Long getQcValInteger()
{
return qcValInteger;
}
public void setQcValText(String qcValText)
{
this.qcValText = qcValText;
}
public String getQcValText()
{
return qcValText;
}
public void setQcValDict(String qcValDict)
{
this.qcValDict = qcValDict;
}
public String getQcValDict()
{
return qcValDict;
}
public void setQcValFile(String qcValFile)
{
this.qcValFile = qcValFile;
}
public String getQcValFile()
{
return qcValFile;
}
public void setAttr1(String attr1)
{
this.attr1 = attr1;
}
public String getAttr1()
{
return attr1;
}
public void setAttr2(String attr2)
{
this.attr2 = attr2;
}
public String getAttr2()
{
return attr2;
}
public void setAttr3(Long attr3)
{
this.attr3 = attr3;
}
public Long getAttr3()
{
return attr3;
}
public void setAttr4(Long attr4)
{
this.attr4 = attr4;
}
public Long getAttr4()
{
return attr4;
}
@Override
public String toString() {
return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
.append("detailId", getDetailId())
.append("resultId", getResultId())
.append("indexId", getIndexId())
.append("indexType", getIndexType())
.append("qcTool", getQcTool())
.append("checkMethod", getCheckMethod())
.append("standerVal", getStanderVal())
.append("unitOfMeasure", getUnitOfMeasure())
.append("thresholdMax", getThresholdMax())
.append("thresholdMin", getThresholdMin())
.append("qcResultType", getQcResultType())
.append("qcResultSpc", getQcResultSpc())
.append("qcValFloat", getQcValFloat())
.append("qcValInteger", getQcValInteger())
.append("qcValText", getQcValText())
.append("qcValDict", getQcValDict())
.append("qcValFile", getQcValFile())
.append("remark", getRemark())
.append("attr1", getAttr1())
.append("attr2", getAttr2())
.append("attr3", getAttr3())
.append("attr4", getAttr4())
.append("createBy", getCreateBy())
.append("createTime", getCreateTime())
.append("updateBy", getUpdateBy())
.append("updateTime", getUpdateTime())
.toString();
}
}

View File

@ -0,0 +1,93 @@
package com.ktg.mes.qc.mapper;
import java.util.List;
import com.ktg.mes.qc.domain.QcResultDetail;
/**
* 检测结果明细记录Mapper接口
*
* @author yinjinlu
* @date 2024-11-29
*/
public interface QcResultDetailMapper
{
/**
* 查询检测结果明细记录
*
* @param detailId 检测结果明细记录主键
* @return 检测结果明细记录
*/
public QcResultDetail selectQcResultDetailByDetailId(Long detailId);
/**
* 查询检测结果明细记录列表
*
* @param qcResultDetail 检测结果明细记录
* @return 检测结果明细记录集合
*/
public List<QcResultDetail> selectQcResultDetailList(QcResultDetail qcResultDetail);
/**
* 查询某个IQC单据下某个ResultId的检测值列表
* 如果ResultId为空则返回此单据的根据index检查项构造的列表
* @param qcResultDetail
* @return
*/
public List<QcResultDetail> selectQcResultDetailByResultIdAndIQCId(QcResultDetail qcResultDetail);
/**
* 查询某个IPQC单据下某个ResultId的检测值列表
* 如果ResultId为空则返回此单据的根据index检查项构造的列表
* @param qcResultDetail
* @return
*/
public List<QcResultDetail> selectQcResultDetailByResultIdAndIPQCId(QcResultDetail qcResultDetail);
/**
* 查询某个OQC单据下某个ResultId的检测值列表
* 如果ResultId为空则返回此单据的根据index检查项构造的列表
* @param qcResultDetail
* @return
*/
public List<QcResultDetail> selectQcResultDetailByResultIdAndOQCId(QcResultDetail qcResultDetail);
/**
* 新增检测结果明细记录
*
* @param qcResultDetail 检测结果明细记录
* @return 结果
*/
public int insertQcResultDetail(QcResultDetail qcResultDetail);
/**
* 修改检测结果明细记录
*
* @param qcResultDetail 检测结果明细记录
* @return 结果
*/
public int updateQcResultDetail(QcResultDetail qcResultDetail);
/**
* 删除检测结果明细记录
*
* @param detailId 检测结果明细记录主键
* @return 结果
*/
public int deleteQcResultDetailByDetailId(Long detailId);
/**
* 批量删除检测结果明细记录
*
* @param detailIds 需要删除的数据主键集合
* @return 结果
*/
public int deleteQcResultDetailByDetailIds(Long[] detailIds);
/**
* 根据检测结果ID删除所有明细信息
* @param resultId
* @return
*/
public int deleteQcResultDetailByResultId(long resultId);
}

View File

@ -0,0 +1,61 @@
package com.ktg.mes.qc.mapper;
import java.util.List;
import com.ktg.mes.qc.domain.QcResult;
/**
* 检测结果记录Mapper接口
*
* @author yinjinlu
* @date 2024-11-29
*/
public interface QcResultMapper
{
/**
* 查询检测结果记录
*
* @param resultId 检测结果记录主键
* @return 检测结果记录
*/
public QcResult selectQcResultByResultId(Long resultId);
/**
* 查询检测结果记录列表
*
* @param qcResult 检测结果记录
* @return 检测结果记录集合
*/
public List<QcResult> selectQcResultList(QcResult qcResult);
/**
* 新增检测结果记录
*
* @param qcResult 检测结果记录
* @return 结果
*/
public int insertQcResult(QcResult qcResult);
/**
* 修改检测结果记录
*
* @param qcResult 检测结果记录
* @return 结果
*/
public int updateQcResult(QcResult qcResult);
/**
* 删除检测结果记录
*
* @param resultId 检测结果记录主键
* @return 结果
*/
public int deleteQcResultByResultId(Long resultId);
/**
* 批量删除检测结果记录
*
* @param resultIds 需要删除的数据主键集合
* @return 结果
*/
public int deleteQcResultByResultIds(Long[] resultIds);
}

View File

@ -0,0 +1,93 @@
package com.ktg.mes.qc.service;
import java.util.List;
import com.ktg.mes.qc.domain.QcResultDetail;
/**
* 检测结果明细记录Service接口
*
* @author yinjinlu
* @date 2024-11-29
*/
public interface IQcResultDetailService
{
/**
* 查询检测结果明细记录
*
* @param detailId 检测结果明细记录主键
* @return 检测结果明细记录
*/
public QcResultDetail selectQcResultDetailByDetailId(Long detailId);
/**
* 查询检测结果明细记录列表
*
* @param qcResultDetail 检测结果明细记录
* @return 检测结果明细记录集合
*/
public List<QcResultDetail> selectQcResultDetailList(QcResultDetail qcResultDetail);
/**
* 查询某个IQC单据下某个ResultId的检测值列表
* 如果ResultId为空则返回此单据的根据index检查项构造的列表
* @param qcResultDetail
* @return
*/
public List<QcResultDetail> selectQcResultDetailByResultIdAndIQCId(QcResultDetail qcResultDetail);
/**
* 查询某个IPQC单据下某个ResultId的检测值列表
* 如果ResultId为空则返回此单据的根据index检查项构造的列表
* @param qcResultDetail
* @return
*/
public List<QcResultDetail> selectQcResultDetailByResultIdAndIPQCId(QcResultDetail qcResultDetail);
/**
* 查询某个OQC单据下某个ResultId的检测值列表
* 如果ResultId为空则返回此单据的根据index检查项构造的列表
* @param qcResultDetail
* @return
*/
public List<QcResultDetail> selectQcResultDetailByResultIdAndOQCId(QcResultDetail qcResultDetail);
/**
* 新增检测结果明细记录
*
* @param qcResultDetail 检测结果明细记录
* @return 结果
*/
public int insertQcResultDetail(QcResultDetail qcResultDetail);
/**
* 修改检测结果明细记录
*
* @param qcResultDetail 检测结果明细记录
* @return 结果
*/
public int updateQcResultDetail(QcResultDetail qcResultDetail);
/**
* 批量删除检测结果明细记录
*
* @param detailIds 需要删除的检测结果明细记录主键集合
* @return 结果
*/
public int deleteQcResultDetailByDetailIds(Long[] detailIds);
/**
* 删除检测结果明细记录信息
*
* @param detailId 检测结果明细记录主键
* @return 结果
*/
public int deleteQcResultDetailByDetailId(Long detailId);
/**
* 根据检测结果ID删除所有明细信息
* @param resultId
* @return
*/
public int deleteQcResultDetailByResultId(long resultId);
}

View File

@ -0,0 +1,61 @@
package com.ktg.mes.qc.service;
import java.util.List;
import com.ktg.mes.qc.domain.QcResult;
/**
* 检测结果记录Service接口
*
* @author yinjinlu
* @date 2024-11-29
*/
public interface IQcResultService
{
/**
* 查询检测结果记录
*
* @param resultId 检测结果记录主键
* @return 检测结果记录
*/
public QcResult selectQcResultByResultId(Long resultId);
/**
* 查询检测结果记录列表
*
* @param qcResult 检测结果记录
* @return 检测结果记录集合
*/
public List<QcResult> selectQcResultList(QcResult qcResult);
/**
* 新增检测结果记录
*
* @param qcResult 检测结果记录
* @return 结果
*/
public int insertQcResult(QcResult qcResult);
/**
* 修改检测结果记录
*
* @param qcResult 检测结果记录
* @return 结果
*/
public int updateQcResult(QcResult qcResult);
/**
* 批量删除检测结果记录
*
* @param resultIds 需要删除的检测结果记录主键集合
* @return 结果
*/
public int deleteQcResultByResultIds(Long[] resultIds);
/**
* 删除检测结果记录信息
*
* @param resultId 检测结果记录主键
* @return 结果
*/
public int deleteQcResultByResultId(Long resultId);
}

View File

@ -0,0 +1,116 @@
package com.ktg.mes.qc.service.impl;
import java.util.List;
import com.ktg.common.utils.DateUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.ktg.mes.qc.mapper.QcResultDetailMapper;
import com.ktg.mes.qc.domain.QcResultDetail;
import com.ktg.mes.qc.service.IQcResultDetailService;
/**
* 检测结果明细记录Service业务层处理
*
* @author yinjinlu
* @date 2024-11-29
*/
@Service
public class QcResultDetailServiceImpl implements IQcResultDetailService
{
@Autowired
private QcResultDetailMapper qcResultDetailMapper;
/**
* 查询检测结果明细记录
*
* @param detailId 检测结果明细记录主键
* @return 检测结果明细记录
*/
@Override
public QcResultDetail selectQcResultDetailByDetailId(Long detailId)
{
return qcResultDetailMapper.selectQcResultDetailByDetailId(detailId);
}
/**
* 查询检测结果明细记录列表
*
* @param qcResultDetail 检测结果明细记录
* @return 检测结果明细记录
*/
@Override
public List<QcResultDetail> selectQcResultDetailList(QcResultDetail qcResultDetail)
{
return qcResultDetailMapper.selectQcResultDetailList(qcResultDetail);
}
@Override
public List<QcResultDetail> selectQcResultDetailByResultIdAndIQCId(QcResultDetail qcResultDetail) {
return qcResultDetailMapper.selectQcResultDetailByResultIdAndIQCId(qcResultDetail);
}
@Override
public List<QcResultDetail> selectQcResultDetailByResultIdAndIPQCId(QcResultDetail qcResultDetail) {
return qcResultDetailMapper.selectQcResultDetailByResultIdAndIPQCId(qcResultDetail);
}
@Override
public List<QcResultDetail> selectQcResultDetailByResultIdAndOQCId(QcResultDetail qcResultDetail) {
return qcResultDetailMapper.selectQcResultDetailByResultIdAndOQCId(qcResultDetail);
}
/**
* 新增检测结果明细记录
*
* @param qcResultDetail 检测结果明细记录
* @return 结果
*/
@Override
public int insertQcResultDetail(QcResultDetail qcResultDetail)
{
qcResultDetail.setCreateTime(DateUtils.getNowDate());
return qcResultDetailMapper.insertQcResultDetail(qcResultDetail);
}
/**
* 修改检测结果明细记录
*
* @param qcResultDetail 检测结果明细记录
* @return 结果
*/
@Override
public int updateQcResultDetail(QcResultDetail qcResultDetail)
{
qcResultDetail.setUpdateTime(DateUtils.getNowDate());
return qcResultDetailMapper.updateQcResultDetail(qcResultDetail);
}
/**
* 批量删除检测结果明细记录
*
* @param detailIds 需要删除的检测结果明细记录主键
* @return 结果
*/
@Override
public int deleteQcResultDetailByDetailIds(Long[] detailIds)
{
return qcResultDetailMapper.deleteQcResultDetailByDetailIds(detailIds);
}
/**
* 删除检测结果明细记录信息
*
* @param detailId 检测结果明细记录主键
* @return 结果
*/
@Override
public int deleteQcResultDetailByDetailId(Long detailId)
{
return qcResultDetailMapper.deleteQcResultDetailByDetailId(detailId);
}
@Override
public int deleteQcResultDetailByResultId(long resultId) {
return qcResultDetailMapper.deleteQcResultDetailByResultId(resultId);
}
}

View File

@ -0,0 +1,96 @@
package com.ktg.mes.qc.service.impl;
import java.util.List;
import com.ktg.common.utils.DateUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.ktg.mes.qc.mapper.QcResultMapper;
import com.ktg.mes.qc.domain.QcResult;
import com.ktg.mes.qc.service.IQcResultService;
/**
* 检测结果记录Service业务层处理
*
* @author yinjinlu
* @date 2024-11-29
*/
@Service
public class QcResultServiceImpl implements IQcResultService
{
@Autowired
private QcResultMapper qcResultMapper;
/**
* 查询检测结果记录
*
* @param resultId 检测结果记录主键
* @return 检测结果记录
*/
@Override
public QcResult selectQcResultByResultId(Long resultId)
{
return qcResultMapper.selectQcResultByResultId(resultId);
}
/**
* 查询检测结果记录列表
*
* @param qcResult 检测结果记录
* @return 检测结果记录
*/
@Override
public List<QcResult> selectQcResultList(QcResult qcResult)
{
return qcResultMapper.selectQcResultList(qcResult);
}
/**
* 新增检测结果记录
*
* @param qcResult 检测结果记录
* @return 结果
*/
@Override
public int insertQcResult(QcResult qcResult)
{
qcResult.setCreateTime(DateUtils.getNowDate());
return qcResultMapper.insertQcResult(qcResult);
}
/**
* 修改检测结果记录
*
* @param qcResult 检测结果记录
* @return 结果
*/
@Override
public int updateQcResult(QcResult qcResult)
{
qcResult.setUpdateTime(DateUtils.getNowDate());
return qcResultMapper.updateQcResult(qcResult);
}
/**
* 批量删除检测结果记录
*
* @param resultIds 需要删除的检测结果记录主键
* @return 结果
*/
@Override
public int deleteQcResultByResultIds(Long[] resultIds)
{
return qcResultMapper.deleteQcResultByResultIds(resultIds);
}
/**
* 删除检测结果记录信息
*
* @param resultId 检测结果记录主键
* @return 结果
*/
@Override
public int deleteQcResultByResultId(Long resultId)
{
return qcResultMapper.deleteQcResultByResultId(resultId);
}
}

View File

@ -0,0 +1,235 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ktg.mes.qc.mapper.QcResultDetailMapper">
<resultMap type="QcResultDetail" id="QcResultDetailResult">
<result property="detailId" column="detail_id" />
<result property="resultId" column="result_id" />
<result property="indexId" column="index_id" />
<result property="indexCode" column="index_code" />
<result property="indexName" column="index_name" />
<result property="indexType" column="index_type" />
<result property="qcTool" column="qc_tool" />
<result property="checkMethod" column="check_method" />
<result property="standerVal" column="stander_val" />
<result property="unitOfMeasure" column="unit_of_measure" />
<result property="thresholdMax" column="threshold_max" />
<result property="thresholdMin" column="threshold_min" />
<result property="qcResultType" column="qc_result_type" />
<result property="qcResultSpc" column="qc_result_spc" />
<result property="qcValFloat" column="qc_val_float" />
<result property="qcValInteger" column="qc_val_integer" />
<result property="qcValText" column="qc_val_text" />
<result property="qcValDict" column="qc_val_dict" />
<result property="qcValFile" column="qc_val_file" />
<result property="remark" column="remark" />
<result property="attr1" column="attr1" />
<result property="attr2" column="attr2" />
<result property="attr3" column="attr3" />
<result property="attr4" column="attr4" />
<result property="createBy" column="create_by" />
<result property="createTime" column="create_time" />
<result property="updateBy" column="update_by" />
<result property="updateTime" column="update_time" />
</resultMap>
<sql id="selectQcResultDetailVo">
select detail_id, result_id, index_id, index_type, qc_tool, check_method, stander_val, unit_of_measure, threshold_max, threshold_min, qc_result_type, qc_result_spc, qc_val_float, qc_val_integer, qc_val_text, qc_val_dict, qc_val_file, remark, attr1, attr2, attr3, attr4, create_by, create_time, update_by, update_time from qc_result_detail
</sql>
<select id="selectQcResultDetailList" parameterType="QcResultDetail" resultMap="QcResultDetailResult">
<include refid="selectQcResultDetailVo"/>
<where>
<if test="resultId != null "> and result_id = #{resultId}</if>
<if test="indexId != null "> and index_id = #{indexId}</if>
<if test="indexType != null and indexType != ''"> and index_type = #{indexType}</if>
<if test="qcTool != null and qcTool != ''"> and qc_tool = #{qcTool}</if>
<if test="checkMethod != null and checkMethod != ''"> and check_method = #{checkMethod}</if>
<if test="standerVal != null "> and stander_val = #{standerVal}</if>
<if test="unitOfMeasure != null and unitOfMeasure != ''"> and unit_of_measure = #{unitOfMeasure}</if>
<if test="thresholdMax != null "> and threshold_max = #{thresholdMax}</if>
<if test="thresholdMin != null "> and threshold_min = #{thresholdMin}</if>
<if test="qcResultType != null and qcResultType != ''"> and qc_result_type = #{qcResultType}</if>
<if test="qcResultSpc != null and qcResultSpc != ''"> and qc_result_spc = #{qcResultSpc}</if>
<if test="qcValFloat != null "> and qc_val_float = #{qcValFloat}</if>
<if test="qcValInteger != null "> and qc_val_integer = #{qcValInteger}</if>
<if test="qcValText != null and qcValText != ''"> and qc_val_text = #{qcValText}</if>
<if test="qcValDict != null and qcValDict != ''"> and qc_val_dict = #{qcValDict}</if>
<if test="qcValFile != null and qcValFile != ''"> and qc_val_file = #{qcValFile}</if>
<if test="attr1 != null and attr1 != ''"> and attr1 = #{attr1}</if>
<if test="attr2 != null and attr2 != ''"> and attr2 = #{attr2}</if>
<if test="attr3 != null "> and attr3 = #{attr3}</if>
<if test="attr4 != null "> and attr4 = #{attr4}</if>
</where>
</select>
<select id="selectQcResultDetailByResultIdAndIQCId" parameterType="QcResultDetail" resultMap="QcResultDetailResult">
select detail_id, result_id, ql.index_id, ql.index_code, ql.index_name, ql.index_type, ql.qc_tool, ql.check_method, ql.stander_val, ql.unit_of_measure, ql.threshold_max, ql.threshold_min, qi.qc_result_type, qi.qc_result_spc, d.qc_val_float, d.qc_val_integer, d.qc_val_text, d.qc_val_dict, d.qc_val_file, d.remark, d.create_by, d.create_time, d.update_by, d.update_time
from qc_iqc_line ql
left join qc_index qi
on ql.index_id = qi.index_id
left join qc_result_detail d
<choose>
<when test="resultId !=null " >
on qi.index_id = d.index_id and d.result_id = #{resultId}
</when>
<otherwise>
on qi.index_id = d.index_id and d.result_id = -1
</otherwise>
</choose>
where 1=1
and ql.iqc_id = #{qcId}
order by qi.index_id asc
</select>
<select id="selectQcResultDetailByResultIdAndIPQCId" parameterType="QcResultDetail" resultMap="QcResultDetailResult">
select detail_id, result_id, ql.index_id, ql.index_code, ql.index_name, ql.index_type, ql.qc_tool, ql.check_method, ql.stander_val, ql.unit_of_measure, ql.threshold_max, ql.threshold_min, qi.qc_result_type, qi.qc_result_spc, d.qc_val_float, d.qc_val_integer, d.qc_val_text, d.qc_val_dict, d.qc_val_file, d.remark, d.create_by, d.create_time, d.update_by, d.update_time
from qc_ipqc_line ql
left join qc_index qi
on ql.index_id = qi.index_id
left join qc_result_detail d
<choose>
<when test="resultId !=null " >
on qi.index_id = d.index_id and d.result_id = #{resultId}
</when>
<otherwise>
on qi.index_id = d.index_id and d.result_id = -1
</otherwise>
</choose>
where 1=1
and ql.ipqc_id = #{qcId}
order by qi.index_id asc
</select>
<select id="selectQcResultDetailByResultIdAndOQCId" parameterType="QcResultDetail" resultMap="QcResultDetailResult">
select detail_id, result_id, ql.index_id, ql.index_code, ql.index_name, ql.index_type, ql.qc_tool, ql.check_method, ql.stander_val, ql.unit_of_measure, ql.threshold_max, ql.threshold_min, qi.qc_result_type, qi.qc_result_spc, d.qc_val_float, d.qc_val_integer, d.qc_val_text, d.qc_val_dict, d.qc_val_file, d.remark, d.create_by, d.create_time, d.update_by, d.update_time
from qc_oqc_line ql
left join qc_index qi
on ql.index_id = qi.index_id
left join qc_result_detail d
<choose>
<when test="resultId !=null " >
on qi.index_id = d.index_id and d.result_id = #{resultId}
</when>
<otherwise>
on qi.index_id = d.index_id and d.result_id = -1
</otherwise>
</choose>
where 1=1
and ql.oqc_id = #{qcId}
order by qi.index_id asc
</select>
<select id="selectQcResultDetailByDetailId" parameterType="Long" resultMap="QcResultDetailResult">
<include refid="selectQcResultDetailVo"/>
where detail_id = #{detailId}
</select>
<insert id="insertQcResultDetail" parameterType="QcResultDetail" useGeneratedKeys="true" keyProperty="detailId">
insert into qc_result_detail
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="resultId != null">result_id,</if>
<if test="indexId != null">index_id,</if>
<if test="indexType != null">index_type,</if>
<if test="qcTool != null">qc_tool,</if>
<if test="checkMethod != null">check_method,</if>
<if test="standerVal != null">stander_val,</if>
<if test="unitOfMeasure != null">unit_of_measure,</if>
<if test="thresholdMax != null">threshold_max,</if>
<if test="thresholdMin != null">threshold_min,</if>
<if test="qcResultType != null and qcResultType != ''">qc_result_type,</if>
<if test="qcResultSpc != null">qc_result_spc,</if>
<if test="qcValFloat != null">qc_val_float,</if>
<if test="qcValInteger != null">qc_val_integer,</if>
<if test="qcValText != null">qc_val_text,</if>
<if test="qcValDict != null">qc_val_dict,</if>
<if test="qcValFile != null">qc_val_file,</if>
<if test="remark != null">remark,</if>
<if test="attr1 != null">attr1,</if>
<if test="attr2 != null">attr2,</if>
<if test="attr3 != null">attr3,</if>
<if test="attr4 != null">attr4,</if>
<if test="createBy != null">create_by,</if>
<if test="createTime != null">create_time,</if>
<if test="updateBy != null">update_by,</if>
<if test="updateTime != null">update_time,</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="resultId != null">#{resultId},</if>
<if test="indexId != null">#{indexId},</if>
<if test="indexType != null">#{indexType},</if>
<if test="qcTool != null">#{qcTool},</if>
<if test="checkMethod != null">#{checkMethod},</if>
<if test="standerVal != null">#{standerVal},</if>
<if test="unitOfMeasure != null">#{unitOfMeasure},</if>
<if test="thresholdMax != null">#{thresholdMax},</if>
<if test="thresholdMin != null">#{thresholdMin},</if>
<if test="qcResultType != null and qcResultType != ''">#{qcResultType},</if>
<if test="qcResultSpc != null">#{qcResultSpc},</if>
<if test="qcValFloat != null">#{qcValFloat},</if>
<if test="qcValInteger != null">#{qcValInteger},</if>
<if test="qcValText != null">#{qcValText},</if>
<if test="qcValDict != null">#{qcValDict},</if>
<if test="qcValFile != null">#{qcValFile},</if>
<if test="remark != null">#{remark},</if>
<if test="attr1 != null">#{attr1},</if>
<if test="attr2 != null">#{attr2},</if>
<if test="attr3 != null">#{attr3},</if>
<if test="attr4 != null">#{attr4},</if>
<if test="createBy != null">#{createBy},</if>
<if test="createTime != null">#{createTime},</if>
<if test="updateBy != null">#{updateBy},</if>
<if test="updateTime != null">#{updateTime},</if>
</trim>
</insert>
<update id="updateQcResultDetail" parameterType="QcResultDetail">
update qc_result_detail
<trim prefix="SET" suffixOverrides=",">
<if test="resultId != null">result_id = #{resultId},</if>
<if test="indexId != null">index_id = #{indexId},</if>
<if test="indexType != null">index_type = #{indexType},</if>
<if test="qcTool != null">qc_tool = #{qcTool},</if>
<if test="checkMethod != null">check_method = #{checkMethod},</if>
<if test="standerVal != null">stander_val = #{standerVal},</if>
<if test="unitOfMeasure != null">unit_of_measure = #{unitOfMeasure},</if>
<if test="thresholdMax != null">threshold_max = #{thresholdMax},</if>
<if test="thresholdMin != null">threshold_min = #{thresholdMin},</if>
<if test="qcResultType != null and qcResultType != ''">qc_result_type = #{qcResultType},</if>
<if test="qcResultSpc != null">qc_result_spc = #{qcResultSpc},</if>
<if test="qcValFloat != null">qc_val_float = #{qcValFloat},</if>
<if test="qcValInteger != null">qc_val_integer = #{qcValInteger},</if>
<if test="qcValText != null">qc_val_text = #{qcValText},</if>
<if test="qcValDict != null">qc_val_dict = #{qcValDict},</if>
<if test="qcValFile != null">qc_val_file = #{qcValFile},</if>
<if test="remark != null">remark = #{remark},</if>
<if test="attr1 != null">attr1 = #{attr1},</if>
<if test="attr2 != null">attr2 = #{attr2},</if>
<if test="attr3 != null">attr3 = #{attr3},</if>
<if test="attr4 != null">attr4 = #{attr4},</if>
<if test="createBy != null">create_by = #{createBy},</if>
<if test="createTime != null">create_time = #{createTime},</if>
<if test="updateBy != null">update_by = #{updateBy},</if>
<if test="updateTime != null">update_time = #{updateTime},</if>
</trim>
where detail_id = #{detailId}
</update>
<delete id="deleteQcResultDetailByDetailId" parameterType="Long">
delete from qc_result_detail where detail_id = #{detailId}
</delete>
<delete id="deleteQcResultDetailByDetailIds" parameterType="String">
delete from qc_result_detail where detail_id in
<foreach item="detailId" collection="array" open="(" separator="," close=")">
#{detailId}
</foreach>
</delete>
<delete id="deleteQcResultDetailByResultId" parameterType="Long">
delete from qc_result_detail where result_id = #{resultId}
</delete>
</mapper>

View File

@ -0,0 +1,142 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ktg.mes.qc.mapper.QcResultMapper">
<resultMap type="QcResult" id="QcResultResult">
<result property="resultId" column="result_id" />
<result property="resultCode" column="result_code" />
<result property="sourceDocId" column="source_doc_id" />
<result property="sourceDocCode" column="source_doc_code" />
<result property="sourceDocName" column="source_doc_name" />
<result property="sourceDocType" column="source_doc_type" />
<result property="itemId" column="item_id" />
<result property="itemCode" column="item_code" />
<result property="itemName" column="item_name" />
<result property="specification" column="specification" />
<result property="unitOfMeasure" column="unit_of_measure" />
<result property="snCode" column="sn_code" />
<result property="remark" column="remark" />
<result property="attr1" column="attr1" />
<result property="attr2" column="attr2" />
<result property="attr3" column="attr3" />
<result property="attr4" column="attr4" />
<result property="createBy" column="create_by" />
<result property="createTime" column="create_time" />
<result property="updateBy" column="update_by" />
<result property="updateTime" column="update_time" />
</resultMap>
<sql id="selectQcResultVo">
select result_id, result_code, source_doc_id, source_doc_code, source_doc_name, source_doc_type, item_id, item_code, item_name, specification, unit_of_measure, sn_code, remark, attr1, attr2, attr3, attr4, create_by, create_time, update_by, update_time from qc_result
</sql>
<select id="selectQcResultList" parameterType="QcResult" resultMap="QcResultResult">
<include refid="selectQcResultVo"/>
<where>
<if test="resultCode != null "> and result_code = #{resultCode}</if>
<if test="sourceDocId != null "> and source_doc_id = #{sourceDocId}</if>
<if test="sourceDocCode != null and sourceDocCode != ''"> and source_doc_code = #{sourceDocCode}</if>
<if test="sourceDocName != null and sourceDocName != ''"> and source_doc_name like concat('%', #{sourceDocName}, '%')</if>
<if test="sourceDocType != null and sourceDocType != ''"> and source_doc_type = #{sourceDocType}</if>
<if test="itemId != null "> and item_id = #{itemId}</if>
<if test="itemCode != null and itemCode != ''"> and item_code = #{itemCode}</if>
<if test="itemName != null and itemName != ''"> and item_name like concat('%', #{itemName}, '%')</if>
<if test="specification != null and specification != ''"> and specification = #{specification}</if>
<if test="unitOfMeasure != null and unitOfMeasure != ''"> and unit_of_measure = #{unitOfMeasure}</if>
<if test="snCode != null and snCode != ''"> and sn_code = #{snCode}</if>
</where>
</select>
<select id="selectQcResultByResultId" parameterType="Long" resultMap="QcResultResult">
<include refid="selectQcResultVo"/>
where result_id = #{resultId}
</select>
<insert id="insertQcResult" parameterType="QcResult" useGeneratedKeys="true" keyProperty="resultId">
insert into qc_result
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="resultCode != null">result_code,</if>
<if test="sourceDocId != null">source_doc_id,</if>
<if test="sourceDocCode != null">source_doc_code,</if>
<if test="sourceDocName != null">source_doc_name,</if>
<if test="sourceDocType != null">source_doc_type,</if>
<if test="itemId != null">item_id,</if>
<if test="itemCode != null">item_code,</if>
<if test="itemName != null">item_name,</if>
<if test="specification != null">specification,</if>
<if test="unitOfMeasure != null">unit_of_measure,</if>
<if test="snCode != null">sn_code,</if>
<if test="remark != null">remark,</if>
<if test="attr1 != null">attr1,</if>
<if test="attr2 != null">attr2,</if>
<if test="attr3 != null">attr3,</if>
<if test="attr4 != null">attr4,</if>
<if test="createBy != null">create_by,</if>
<if test="createTime != null">create_time,</if>
<if test="updateBy != null">update_by,</if>
<if test="updateTime != null">update_time,</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="resultCode != null">#{resultCode},</if>
<if test="sourceDocId != null">#{sourceDocId},</if>
<if test="sourceDocCode != null">#{sourceDocCode},</if>
<if test="sourceDocName != null">#{sourceDocName},</if>
<if test="sourceDocType != null">#{sourceDocType},</if>
<if test="itemId != null">#{itemId},</if>
<if test="itemCode != null">#{itemCode},</if>
<if test="itemName != null">#{itemName},</if>
<if test="specification != null">#{specification},</if>
<if test="unitOfMeasure != null">#{unitOfMeasure},</if>
<if test="snCode != null">#{snCode},</if>
<if test="remark != null">#{remark},</if>
<if test="attr1 != null">#{attr1},</if>
<if test="attr2 != null">#{attr2},</if>
<if test="attr3 != null">#{attr3},</if>
<if test="attr4 != null">#{attr4},</if>
<if test="createBy != null">#{createBy},</if>
<if test="createTime != null">#{createTime},</if>
<if test="updateBy != null">#{updateBy},</if>
<if test="updateTime != null">#{updateTime},</if>
</trim>
</insert>
<update id="updateQcResult" parameterType="QcResult">
update qc_result
<trim prefix="SET" suffixOverrides=",">
<if test="resultCode != null">result_code = #{resultCode},</if>
<if test="sourceDocId != null">source_doc_id = #{sourceDocId},</if>
<if test="sourceDocCode != null">source_doc_code = #{sourceDocCode},</if>
<if test="sourceDocName != null">source_doc_name = #{sourceDocName},</if>
<if test="sourceDocType != null">source_doc_type = #{sourceDocType},</if>
<if test="itemId != null">item_id = #{itemId},</if>
<if test="itemCode != null">item_code = #{itemCode},</if>
<if test="itemName != null">item_name = #{itemName},</if>
<if test="specification != null">specification = #{specification},</if>
<if test="unitOfMeasure != null">unit_of_measure = #{unitOfMeasure},</if>
<if test="snCode != null">sn_code = #{snCode},</if>
<if test="remark != null">remark = #{remark},</if>
<if test="attr1 != null">attr1 = #{attr1},</if>
<if test="attr2 != null">attr2 = #{attr2},</if>
<if test="attr3 != null">attr3 = #{attr3},</if>
<if test="attr4 != null">attr4 = #{attr4},</if>
<if test="createBy != null">create_by = #{createBy},</if>
<if test="createTime != null">create_time = #{createTime},</if>
<if test="updateBy != null">update_by = #{updateBy},</if>
<if test="updateTime != null">update_time = #{updateTime},</if>
</trim>
where result_id = #{resultId}
</update>
<delete id="deleteQcResultByResultId" parameterType="Long">
delete from qc_result where result_id = #{resultId}
</delete>
<delete id="deleteQcResultByResultIds" parameterType="String">
delete from qc_result where result_id in
<foreach item="resultId" collection="array" open="(" separator="," close=")">
#{resultId}
</foreach>
</delete>
</mapper>