质量检验通用接口修改

This commit is contained in:
yinjinlu-pc\尹金路 2024-12-11 00:31:17 +08:00
parent b9fae61a0f
commit 13aca75b88
8 changed files with 1234 additions and 0 deletions

View File

@ -0,0 +1,83 @@
package com.ktg.mes.qc.controller.mobile;
import com.ktg.common.annotation.Log;
import com.ktg.common.core.controller.BaseController;
import com.ktg.common.core.domain.AjaxResult;
import com.ktg.common.core.page.TableDataInfo;
import com.ktg.common.enums.BusinessType;
import com.ktg.mes.qc.domain.QcIpqcLine;
import com.ktg.mes.qc.service.IQcIpqcLineService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
* 移动端过程检验质量巡检完工检验行接口
*/
@RestController
@RequestMapping("/mobile/qc/ipqcline")
public class QCIpqcLineMobController extends BaseController {
@Autowired
private IQcIpqcLineService qcIpqcLineService;
/**
* 查询过程检验单行列表
*/
@PreAuthorize("@ss.hasPermi('mes:qc:ipqc:list')")
@GetMapping("/list")
public TableDataInfo list(QcIpqcLine qcIpqcLine)
{
startPage();
List<QcIpqcLine> list = qcIpqcLineService.selectQcIpqcLineList(qcIpqcLine);
return getDataTable(list);
}
/**
* 获取过程检验单行详细信息
*/
@PreAuthorize("@ss.hasPermi('mes:qc:ipqc:query')")
@GetMapping(value = "/{lineId}")
public AjaxResult getInfo(@PathVariable("lineId") Long lineId)
{
return AjaxResult.success(qcIpqcLineService.selectQcIpqcLineByLineId(lineId));
}
/**
* 新增过程检验单行
*/
@PreAuthorize("@ss.hasPermi('mes:qc:ipqc:add')")
@Log(title = "过程检验单行", businessType = BusinessType.INSERT)
@PostMapping
public AjaxResult add(@RequestBody QcIpqcLine qcIpqcLine)
{
qcIpqcLine.setCreateBy(getUsername());
qcIpqcLineService.insertQcIpqcLine(qcIpqcLine);
return AjaxResult.success(qcIpqcLine);
}
/**
* 修改过程检验单行
*/
@PreAuthorize("@ss.hasPermi('mes:qc:ipqc:edit')")
@Log(title = "过程检验单行", businessType = BusinessType.UPDATE)
@PutMapping
public AjaxResult edit(@RequestBody QcIpqcLine qcIpqcLine)
{
return toAjax(qcIpqcLineService.updateQcIpqcLine(qcIpqcLine));
}
/**
* 删除过程检验单行
*/
@PreAuthorize("@ss.hasPermi('mes:qc:ipqc:remove')")
@Log(title = "过程检验单行", businessType = BusinessType.DELETE)
@DeleteMapping("/{lineIds}")
public AjaxResult remove(@PathVariable Long[] lineIds)
{
return toAjax(qcIpqcLineService.deleteQcIpqcLineByLineIds(lineIds));
}
}

View File

@ -0,0 +1,253 @@
package com.ktg.mes.qc.controller.mobile;
import cn.hutool.core.collection.CollUtil;
import com.ktg.common.annotation.Log;
import com.ktg.common.constant.UserConstants;
import com.ktg.common.core.controller.BaseController;
import com.ktg.common.core.domain.AjaxResult;
import com.ktg.common.core.page.TableDataInfo;
import com.ktg.common.enums.BusinessType;
import com.ktg.common.utils.StringUtils;
import com.ktg.mes.md.domain.MdWorkstation;
import com.ktg.mes.md.service.IMdWorkstationService;
import com.ktg.mes.pro.domain.ProFeedback;
import com.ktg.mes.pro.domain.ProWorkorder;
import com.ktg.mes.pro.service.IProFeedbackService;
import com.ktg.mes.pro.service.IProWorkorderService;
import com.ktg.mes.qc.domain.*;
import com.ktg.mes.qc.service.*;
import com.ktg.system.strategy.AutoCodeUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import org.springframework.web.bind.annotation.*;
import java.math.BigDecimal;
import java.util.List;
/**
* 过程检验质量巡检完工检验接口
*/
@RestController
@RequestMapping("/mobile/qc/ipqc")
public class QCIpqcMobController extends BaseController {
@Autowired
private IQcIpqcService qcIpqcService;
@Autowired
private AutoCodeUtil autoCodeUtil;
@Autowired
private IProWorkorderService proWorkorderService;
@Autowired
private IMdWorkstationService mdWorkstationService;
@Autowired
private IQcTemplateIndexService qcTemplateIndexService;
@Autowired
private IQcTemplateService qcTemplateService;
@Autowired
private IQcIpqcLineService qcIpqcLineService;
@Autowired
private IQcDefectRecordService qcDefectRecordService;
@Autowired
private IProFeedbackService proFeedbackService;
/**
* 查询过程检验单列表
*/
@GetMapping("/list")
public TableDataInfo list(QcIpqc qcIpqc)
{
startPage();
List<QcIpqc> list = qcIpqcService.selectQcIpqcList(qcIpqc);
return getDataTable(list);
}
/**
* 获取过程检验单详细信息
*/
@GetMapping(value = "/{ipqcId}")
public AjaxResult getInfo(@PathVariable("ipqcId") Long ipqcId)
{
return AjaxResult.success(qcIpqcService.selectQcIpqcByIpqcId(ipqcId));
}
/**
* 新增过程检验单
*/
@Log(title = "过程检验单", businessType = BusinessType.INSERT)
@Transactional
@PostMapping
public AjaxResult add(@RequestBody QcIpqc qcIpqc)
{
//质量的质检记录编码自动生成
String resultCode = autoCodeUtil.genSerialCode(UserConstants.QC_IPQC_CODE,null);
qcIpqc.setIpqcCode(resultCode);
//过程检验完工检验按物资搜索
//根据工单获取产品信息
ProWorkorder workorder = proWorkorderService.selectProWorkorderByWorkorderId(qcIpqc.getWorkorderId());
qcIpqc.setWorkorderId(workorder.getWorkorderId());
qcIpqc.setWorkorderCode(workorder.getWorkorderCode());
qcIpqc.setWorkorderName(workorder.getWorkorderName());
qcIpqc.setItemId(workorder.getProductId());
qcIpqc.setItemCode(workorder.getProductCode());
qcIpqc.setItemName(workorder.getProductName());
qcIpqc.setSpecification(workorder.getProductSpc());
qcIpqc.setUnitOfMeasure(workorder.getUnitOfMeasure());
//查询工序相关信息
List<QcIpqc> infos = qcIpqcService.getProcessInfo(qcIpqc);
if(!CollectionUtils.isEmpty(infos)&&infos.size() ==1){
qcIpqc.setProcessId(infos.get(0).getProcessId());
qcIpqc.setProcessCode(infos.get(0).getProcessCode());
qcIpqc.setProcessName(infos.get(0).getProcessName());
}
//根据产品和检测类型获取检测模板
QcTemplate param = new QcTemplate();
param.setQcTypes(qcIpqc.getIpqcType());
param.setItemId(workorder.getProductId());
QcTemplate template = qcTemplateService.selectQcTemplateByProductAndQcType(param);
if(StringUtils.isNotNull(template)){
qcIpqc.setTemplateId(template.getTemplateId());
}else{
return AjaxResult.error("当前工单生产的产品未配置此类型的检验模板!");
}
qcIpqc.setCreateBy(getUsername());
//先保存
qcIpqcService.insertQcIpqc(qcIpqc);
//生成行信息
generateLine(qcIpqc);
return AjaxResult.success(qcIpqc);
}
/**
* 修改过程检验单
*/
@Log(title = "过程检验单", businessType = BusinessType.UPDATE)
@Transactional
@PutMapping
public AjaxResult edit(@RequestBody QcIpqc qcIpqc)
{
if(UserConstants.NOT_UNIQUE.equals(qcIpqcService.checkIpqcCodeUnique(qcIpqc))){
return AjaxResult.error("检测单编码已存在!");
}
//根据工单获取产品信息
ProWorkorder workorder = proWorkorderService.selectProWorkorderByWorkorderId(qcIpqc.getWorkorderId());
qcIpqc.setWorkorderId(workorder.getWorkorderId());
qcIpqc.setWorkorderCode(workorder.getWorkorderCode());
qcIpqc.setWorkorderName(workorder.getWorkorderName());
qcIpqc.setItemId(workorder.getProductId());
qcIpqc.setItemCode(workorder.getProductCode());
qcIpqc.setItemName(workorder.getProductName());
qcIpqc.setSpecification(workorder.getProductSpc());
qcIpqc.setUnitOfMeasure(workorder.getUnitOfMeasure());
//查询工序相关信息
List<QcIpqc> infos = qcIpqcService.getProcessInfo(qcIpqc);
if(!CollectionUtils.isEmpty(infos)&&infos.size() ==1){
qcIpqc.setProcessId(infos.get(0).getProcessId());
qcIpqc.setProcessCode(infos.get(0).getProcessCode());
qcIpqc.setProcessName(infos.get(0).getProcessName());
}
//根据产品和检测类型获取检测模板
QcTemplate param = new QcTemplate();
param.setQcTypes(qcIpqc.getIpqcType());
param.setItemId(workorder.getProductId());
QcTemplate template = qcTemplateService.selectQcTemplateByProductAndQcType(param);
if(StringUtils.isNotNull(template)){
qcIpqc.setTemplateId(template.getTemplateId());
}else{
return AjaxResult.error("当前工单生产的产品未配置此类型的检验模板!");
}
//如果是完成单据则根据单据上的来源单据更新对应的关联单据信息
if(UserConstants.ORDER_STATUS_FINISHED.equals(qcIpqc.getStatus())){
//如果来源是生产报工单
ProFeedback feedback = proFeedbackService.selectProFeedbackByRecordId(qcIpqc.getSourceDocId());
if(StringUtils.isNotNull(feedback)){
feedback.setQuantityQualified(qcIpqc.getQuantityQualified());
feedback.setQuantityUnquanlified(qcIpqc.getQuantityUnqualified());
feedback.setQuantityUncheck(BigDecimal.ZERO);
proFeedbackService.updateProFeedback(feedback);
}
}
return toAjax(qcIpqcService.updateQcIpqc(qcIpqc));
}
/**
* 删除过程检验单
*/
@Log(title = "过程检验单", businessType = BusinessType.DELETE)
@Transactional
@DeleteMapping("/{ipqcIds}")
public AjaxResult remove(@PathVariable Long[] ipqcIds)
{
for (Long ipqcId: ipqcIds
) {
QcIpqc ipqc = qcIpqcService.selectQcIpqcByIpqcId(ipqcId);
if(!UserConstants.ORDER_STATUS_PREPARE.equals(ipqc.getStatus())){
return AjaxResult.error("只能删除草稿状态的单据!");
}
qcIpqcLineService.deleteByIpqcId(ipqcId); //删除对应的行信息
QcDefectRecord p2 = new QcDefectRecord();
p2.setQcId(ipqcId);
qcDefectRecordService.deleteByQcIdAndType(p2);//删除对应的缺陷记录
//TODO: 删除对应的质检值记录
}
return toAjax(qcIpqcService.deleteQcIpqcByIpqcIds(ipqcIds));
}
/**
* 根据头信息生成行信息
* @param iqc
*/
private void generateLine(QcIpqc iqc){
QcTemplateIndex param = new QcTemplateIndex();
param.setTemplateId(iqc.getTemplateId());
List<QcTemplateIndex > indexs = qcTemplateIndexService.selectQcTemplateIndexList(param);
if(CollUtil.isNotEmpty(indexs)){
for (QcTemplateIndex index:indexs
) {
QcIpqcLine line = new QcIpqcLine();
line.setIpqcId(iqc.getIpqcId());
line.setIndexId(index.getIndexId());
line.setIndexCode(index.getIndexCode());
line.setIndexName(index.getIndexName());
line.setIndexType(index.getIndexType());
line.setQcTool(index.getQcTool());
line.setCheckMethod(index.getCheckMethod());
line.setStanderVal(index.getStanderVal());
line.setUnitOfMeasure(index.getUnitOfMeasure());
line.setThresholdMax(index.getThresholdMax());
line.setThresholdMin(index.getThresholdMin());
line.setCrQuantity(new BigDecimal(0L));
line.setMajQuantity(new BigDecimal(0L));
line.setMajQuantity(new BigDecimal(0L));
qcIpqcLineService.insertQcIpqcLine(line);
}
}
}
}

View File

@ -0,0 +1,84 @@
package com.ktg.mes.qc.controller.mobile;
import com.ktg.common.annotation.Log;
import com.ktg.common.core.controller.BaseController;
import com.ktg.common.core.domain.AjaxResult;
import com.ktg.common.core.page.TableDataInfo;
import com.ktg.common.enums.BusinessType;
import com.ktg.mes.qc.domain.QcIqcLine;
import com.ktg.mes.qc.domain.QcOqcLine;
import com.ktg.mes.qc.service.IQcIqcLineService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
* 移动端来料检验单行接口
*/
@RestController
@RequestMapping("/mobile/qc/iqcline")
public class QCIqcLineMobController extends BaseController {
@Autowired
private IQcIqcLineService qcIqcLineService;
/**
* 查询来料检验单行列表
*/
@PreAuthorize("@ss.hasPermi('mes:qc:iqc:list')")
@GetMapping("/list")
public TableDataInfo list(QcIqcLine qcIqcLine)
{
startPage();
List<QcIqcLine> list = qcIqcLineService.selectQcIqcLineList(qcIqcLine);
return getDataTable(list);
}
/**
* 获取来料检验单行详细信息
*/
@PreAuthorize("@ss.hasPermi('mes:qc:iqc:query')")
@GetMapping(value = "/{lineId}")
public AjaxResult getInfo(@PathVariable("lineId") Long lineId)
{
return AjaxResult.success(qcIqcLineService.selectQcIqcLineByLineId(lineId));
}
/**
* 新增来料检验单行
*/
@PreAuthorize("@ss.hasPermi('mes:qc:iqc:add')")
@Log(title = "来料检验单行", businessType = BusinessType.INSERT)
@PostMapping
public AjaxResult add(@RequestBody QcIqcLine qcIqcLine)
{
qcIqcLine.setCreateBy(getUsername());
qcIqcLineService.insertQcIqcLine(qcIqcLine);
return AjaxResult.success(qcIqcLine);
}
/**
* 修改来料检验单行
*/
@PreAuthorize("@ss.hasPermi('mes:qc:iqc:edit')")
@Log(title = "来料检验单行", businessType = BusinessType.UPDATE)
@PutMapping
public AjaxResult edit(@RequestBody QcIqcLine qcIqcLine)
{
return toAjax(qcIqcLineService.updateQcIqcLine(qcIqcLine));
}
/**
* 删除来料检验单行
*/
@PreAuthorize("@ss.hasPermi('mes:qc:iqc:remove')")
@Log(title = "来料检验单行", businessType = BusinessType.DELETE)
@DeleteMapping("/{lineIds}")
public AjaxResult remove(@PathVariable Long[] lineIds)
{
return toAjax(qcIqcLineService.deleteQcIqcLineByLineIds(lineIds));
}
}

View File

@ -0,0 +1,198 @@
package com.ktg.mes.qc.controller.mobile;
import cn.hutool.core.collection.CollUtil;
import com.ktg.common.annotation.Log;
import com.ktg.common.constant.UserConstants;
import com.ktg.common.core.controller.BaseController;
import com.ktg.common.core.domain.AjaxResult;
import com.ktg.common.core.page.TableDataInfo;
import com.ktg.common.enums.BusinessType;
import com.ktg.common.utils.StringUtils;
import com.ktg.mes.qc.domain.*;
import com.ktg.mes.qc.service.*;
import com.ktg.mes.wm.domain.WmItemRecptLine;
import com.ktg.mes.wm.service.IWmItemRecptLineService;
import com.ktg.system.strategy.AutoCodeUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.*;
import java.math.BigDecimal;
import java.util.List;
/**
* 移动端来料检验单接口
*/
@RestController
@RequestMapping("/mobile/qc/iqc")
public class QCIqcMobController extends BaseController {
@Autowired
private IQcIqcService qcIqcService;
@Autowired
private AutoCodeUtil autoCodeUtil;
@Autowired
private IQcTemplateProductService qcTemplateProductService;
@Autowired
private IQcTemplateIndexService qcTemplateIndexService;
@Autowired
private IQcIqcLineService qcIqcLineService;
@Autowired
private IQcDefectRecordService qcDefectRecordService;
@Autowired
private IWmItemRecptLineService wmItemRecptLineService;
/**
* 查询来料检验单列表
*/
@GetMapping("/list")
public TableDataInfo list(QcIqc qcIqc)
{
startPage();
List<QcIqc> list = qcIqcService.selectQcIqcList(qcIqc);
return getDataTable(list);
}
/**
* 获取来料检验单详细信息
*/
@PreAuthorize("@ss.hasPermi('mes:qc:iqc:query')")
@GetMapping(value = "/{iqcId}")
public AjaxResult getInfo(@PathVariable("iqcId") Long iqcId)
{
return AjaxResult.success(qcIqcService.selectQcIqcByIqcId(iqcId));
}
/**
* 新增来料检验单
*/
@PreAuthorize("@ss.hasPermi('mes:qc:iqc:add')")
@Log(title = "来料检验单", businessType = BusinessType.INSERT)
@Transactional
@PostMapping
public AjaxResult add(@RequestBody QcIqc qcIqc)
{
//质量的质检记录编码自动生成
String resultCode = autoCodeUtil.genSerialCode(UserConstants.QC_IQC_CODE,null);
qcIqc.setIqcCode(resultCode);
QcTemplateProduct param = new QcTemplateProduct();
param.setItemId(qcIqc.getItemId());
List<QcTemplateProduct> templates = qcTemplateProductService.selectQcTemplateProductList(param);
if(CollUtil.isNotEmpty(templates)){
qcIqc.setTemplateId(templates.get(0).getTemplateId());
}else{
return AjaxResult.error("当前产品未配置检测模板!");
}
qcIqc.setInspector(getUsername());
qcIqc.setCreateBy(getUsername());
qcIqcService.insertQcIqc(qcIqc);
generateLine(qcIqc);
return AjaxResult.success(qcIqc);
}
/**
* 修改来料检验单
*/
@PreAuthorize("@ss.hasPermi('mes:qc:iqc:edit')")
@Log(title = "来料检验单", businessType = BusinessType.UPDATE)
@Transactional
@PutMapping
public AjaxResult edit(@RequestBody QcIqc qcIqc)
{
if(UserConstants.NOT_UNIQUE.equals(qcIqcService.checkIqcCodeUnique(qcIqc))){
return AjaxResult.error("单据编号已存在!");
}
QcTemplateProduct param = new QcTemplateProduct();
param.setItemId(qcIqc.getItemId());
List<QcTemplateProduct> templates = qcTemplateProductService.selectQcTemplateProductList(param);
if(CollUtil.isNotEmpty(templates)){
qcIqc.setTemplateId(templates.get(0).getTemplateId());
}else{
return AjaxResult.error("当前产品未配置检测模板!");
}
qcIqc.setInspector(getUsername());
//如果是完成状态则根据来源单据更新其对应的检测单
if(UserConstants.ORDER_STATUS_FINISHED.equals(qcIqc.getStatus())){
if(StringUtils.isNotNull(qcIqc.getSourceDocCode())){
//这里默认是采购入库单后续有其他单据则根据单据类型(sourceDocType)进行区分
WmItemRecptLine line = wmItemRecptLineService.selectWmItemRecptLineByLineId(qcIqc.getSourceLineId());
if(StringUtils.isNotNull(line)){
line.setIqcCode(qcIqc.getIqcCode());
line.setIqcId(qcIqc.getIqcId());
wmItemRecptLineService.updateWmItemRecptLine(line);
}
}
}
return toAjax(qcIqcService.updateQcIqc(qcIqc));
}
/**
* 删除来料检验单
*/
@PreAuthorize("@ss.hasPermi('mes:qc:iqc:remove')")
@Log(title = "来料检验单", businessType = BusinessType.DELETE)
@Transactional
@DeleteMapping("/{iqcIds}")
public AjaxResult remove(@PathVariable Long[] iqcIds)
{
for (Long iqcId:iqcIds
) {
QcIqc iqc = qcIqcService.selectQcIqcByIqcId(iqcId);
if(!UserConstants.ORDER_STATUS_PREPARE.equals(iqc.getStatus())){
return AjaxResult.error("只能删除草稿状态单据!");
}
qcIqcLineService.deleteByIqcId(iqcId);
QcDefectRecord p2 = new QcDefectRecord();
p2.setQcId(iqcId);
p2.setQcType(UserConstants.QC_TYPE_IQC);
qcDefectRecordService.deleteByQcIdAndType(p2);//删除对应的缺陷记录
}
return toAjax(qcIqcService.deleteQcIqcByIqcIds(iqcIds));
}
/**
* 根据头信息生成行信息
* @param iqc
*/
private void generateLine(QcIqc iqc){
QcTemplateIndex param = new QcTemplateIndex();
param.setTemplateId(iqc.getTemplateId());
List<QcTemplateIndex > indexs = qcTemplateIndexService.selectQcTemplateIndexList(param);
if(CollUtil.isNotEmpty(indexs)){
for (QcTemplateIndex index:indexs
) {
QcIqcLine line = new QcIqcLine();
line.setIqcId(iqc.getIqcId());
line.setIndexId(index.getIndexId());
line.setIndexCode(index.getIndexCode());
line.setIndexName(index.getIndexName());
line.setIndexType(index.getIndexType());
line.setQcTool(index.getQcTool());
line.setCheckMethod(index.getCheckMethod());
line.setStanderVal(index.getStanderVal());
line.setUnitOfMeasure(index.getUnitOfMeasure());
line.setThresholdMax(index.getThresholdMax());
line.setThresholdMin(index.getThresholdMin());
line.setCrQuantity(BigDecimal.ZERO);
line.setMajQuantity(BigDecimal.ZERO);
line.setMajQuantity(BigDecimal.ZERO);
qcIqcLineService.insertQcIqcLine(line);
}
}
}
}

View File

@ -0,0 +1,83 @@
package com.ktg.mes.qc.controller.mobile;
import com.ktg.common.annotation.Log;
import com.ktg.common.core.controller.BaseController;
import com.ktg.common.core.domain.AjaxResult;
import com.ktg.common.core.page.TableDataInfo;
import com.ktg.common.enums.BusinessType;
import com.ktg.mes.qc.domain.QcOqcLine;
import com.ktg.mes.qc.service.IQcOqcLineService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
* 移动端出厂检验单行接口
*/
@RestController
@RequestMapping("/mobile/qc/oqcline")
public class QCOqcLineMobController extends BaseController {
@Autowired
private IQcOqcLineService qcOqcLineService;
/**
* 查询出货检验单行列表
*/
@PreAuthorize("@ss.hasPermi('mes:qc:oqc:list')")
@GetMapping("/list")
public TableDataInfo list(QcOqcLine qcOqcLine)
{
startPage();
List<QcOqcLine> list = qcOqcLineService.selectQcOqcLineList(qcOqcLine);
return getDataTable(list);
}
/**
* 获取出货检验单行详细信息
*/
@PreAuthorize("@ss.hasPermi('mes:qc:oqc:query')")
@GetMapping(value = "/{lineId}")
public AjaxResult getInfo(@PathVariable("lineId") Long lineId)
{
return AjaxResult.success(qcOqcLineService.selectQcOqcLineByLineId(lineId));
}
/**
* 新增出货检验单行
*/
@PreAuthorize("@ss.hasPermi('mes:qc:oqc:add')")
@Log(title = "出货检验单行", businessType = BusinessType.INSERT)
@PostMapping
public AjaxResult add(@RequestBody QcOqcLine qcOqcLine)
{
qcOqcLine.setCreateBy(getUsername());
qcOqcLineService.insertQcOqcLine(qcOqcLine);
return AjaxResult.success(qcOqcLine);
}
/**
* 修改出货检验单行
*/
@PreAuthorize("@ss.hasPermi('mes:qc:oqc:edit')")
@Log(title = "出货检验单行", businessType = BusinessType.UPDATE)
@PutMapping
public AjaxResult edit(@RequestBody QcOqcLine qcOqcLine)
{
return toAjax(qcOqcLineService.updateQcOqcLine(qcOqcLine));
}
/**
* 删除出货检验单行
*/
@PreAuthorize("@ss.hasPermi('mes:qc:oqc:remove')")
@Log(title = "出货检验单行", businessType = BusinessType.DELETE)
@DeleteMapping("/{lineIds}")
public AjaxResult remove(@PathVariable Long[] lineIds)
{
return toAjax(qcOqcLineService.deleteQcOqcLineByLineIds(lineIds));
}
}

View File

@ -0,0 +1,198 @@
package com.ktg.mes.qc.controller.mobile;
import cn.hutool.core.collection.CollUtil;
import com.ktg.common.annotation.Log;
import com.ktg.common.constant.UserConstants;
import com.ktg.common.core.controller.BaseController;
import com.ktg.common.core.domain.AjaxResult;
import com.ktg.common.core.page.TableDataInfo;
import com.ktg.common.enums.BusinessType;
import com.ktg.common.utils.StringUtils;
import com.ktg.mes.qc.domain.QcOqc;
import com.ktg.mes.qc.domain.QcOqcLine;
import com.ktg.mes.qc.domain.QcTemplateIndex;
import com.ktg.mes.qc.domain.QcTemplateProduct;
import com.ktg.mes.qc.service.IQcOqcLineService;
import com.ktg.mes.qc.service.IQcOqcService;
import com.ktg.mes.qc.service.IQcTemplateIndexService;
import com.ktg.mes.qc.service.IQcTemplateProductService;
import com.ktg.mes.wm.domain.WmProductSalseLine;
import com.ktg.mes.wm.service.IWmProductSalseLineService;
import com.ktg.system.strategy.AutoCodeUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.*;
import java.math.BigDecimal;
import java.util.List;
/**
* 移动端出厂检验接口
*/
@RestController
@RequestMapping("/mobile/qc/oqc")
public class QCOqcMobController extends BaseController {
@Autowired
private IQcOqcService qcOqcService;
@Autowired
private AutoCodeUtil autoCodeUtil;
@Autowired
private IQcOqcLineService qcOqcLineService;
@Autowired
private IQcTemplateProductService qcTemplateProductService;
@Autowired
private IQcTemplateIndexService qcTemplateIndexService;
@Autowired
private IWmProductSalseLineService wmProductSalseLineService;
/**
* 查询出货检验单列表
*/
@GetMapping("/list")
public TableDataInfo list(QcOqc qcOqc)
{
startPage();
List<QcOqc> list = qcOqcService.selectQcOqcList(qcOqc);
return getDataTable(list);
}
/**
* 获取出货检验单详细信息
*/
@PreAuthorize("@ss.hasPermi('mes:qc:oqc:query')")
@GetMapping(value = "/{oqcId}")
public AjaxResult getInfo(@PathVariable("oqcId") Long oqcId)
{
return AjaxResult.success(qcOqcService.selectQcOqcByOqcId(oqcId));
}
/**
* 新增出货检验单
*/
@PreAuthorize("@ss.hasPermi('mes:qc:oqc:add')")
@Log(title = "出货检验单", businessType = BusinessType.INSERT)
@PostMapping
public AjaxResult add(@RequestBody QcOqc qcOqc)
{
//质量的质检记录编码自动生成
String resultCode = autoCodeUtil.genSerialCode(UserConstants.QC_OQC_CODE,null);
qcOqc.setOqcCode(resultCode);
//自动获取对应的检测模板
QcTemplateProduct param = new QcTemplateProduct();
param.setItemId(qcOqc.getItemId());
List<QcTemplateProduct> templates = qcTemplateProductService.selectQcTemplateProductList(param);
if(CollUtil.isNotEmpty(templates)){
qcOqc.setTemplateId(templates.get(0).getTemplateId());
}else{
return AjaxResult.error("当前产品未配置检测模板!");
}
//设置检测人
qcOqc.setInspector(getUsername());
qcOqc.setCreateBy(getUsername());
//先保存单据
qcOqcService.insertQcOqc(qcOqc);
//生成行信息
generateLine(qcOqc);
return AjaxResult.success(qcOqc);
}
/**
* 修改出货检验单
*/
@PreAuthorize("@ss.hasPermi('mes:qc:oqc:edit')")
@Log(title = "出货检验单", businessType = BusinessType.UPDATE)
@PutMapping
public AjaxResult edit(@RequestBody QcOqc qcOqc)
{
if(UserConstants.NOT_UNIQUE.equals(qcOqcService.checkOqcCodeUnique(qcOqc))){
return AjaxResult.error("出货单编号已存在!");
}
//自动获取对应的检测模板
QcTemplateProduct param = new QcTemplateProduct();
param.setItemId(qcOqc.getItemId());
List<QcTemplateProduct> templates = qcTemplateProductService.selectQcTemplateProductList(param);
if(CollUtil.isNotEmpty(templates)){
qcOqc.setTemplateId(templates.get(0).getTemplateId());
}else{
return AjaxResult.error("当前产品未配置检测模板!");
}
//设置检测人
qcOqc.setInspector(getUsername());
if(UserConstants.ORDER_STATUS_FINISHED.equals(qcOqc.getStatus())){
if(StringUtils.isNotNull(qcOqc.getSourceDocCode())){
WmProductSalseLine line = wmProductSalseLineService.selectWmProductSalseLineByLineId(qcOqc.getSourceLineId());
if(StringUtils.isNotNull(line)){
line.setOqcId(qcOqc.getOqcId());
line.setOqcCode(qcOqc.getOqcCode());
wmProductSalseLineService.updateWmProductSalseLine(line);
}
}
}
return toAjax(qcOqcService.updateQcOqc(qcOqc));
}
/**
* 删除出货检验单
*/
@PreAuthorize("@ss.hasPermi('mes:qc:oqc:remove')")
@Log(title = "出货检验单", businessType = BusinessType.DELETE)
@Transactional
@DeleteMapping("/{oqcIds}")
public AjaxResult remove(@PathVariable Long[] oqcIds)
{
for (Long oqcId: oqcIds
) {
QcOqc oqc = qcOqcService.selectQcOqcByOqcId(oqcId);
if(!UserConstants.ORDER_STATUS_PREPARE.equals(oqc.getStatus())){
return AjaxResult.error("只能删除状态为草稿的单据!");
}
qcOqcLineService.deleteByOqcId(oqcId);
}
return toAjax(qcOqcService.deleteQcOqcByOqcIds(oqcIds));
}
/**
* 根据头信息生成行信息
* @param oqc
*/
private void generateLine(QcOqc oqc){
QcTemplateIndex param = new QcTemplateIndex();
param.setTemplateId(oqc.getTemplateId());
List<QcTemplateIndex> indexs = qcTemplateIndexService.selectQcTemplateIndexList(param);
if(CollUtil.isNotEmpty(indexs)){
for (QcTemplateIndex index:indexs
) {
QcOqcLine line = new QcOqcLine();
line.setOqcId(oqc.getOqcId());
line.setIndexId(index.getIndexId());
line.setIndexCode(index.getIndexCode());
line.setIndexName(index.getIndexName());
line.setIndexType(index.getIndexType());
line.setQcTool(index.getQcTool());
line.setCheckMethod(index.getCheckMethod());
line.setStanderVal(index.getStanderVal());
line.setUnitOfMeasure(index.getUnitOfMeasure());
line.setThresholdMax(index.getThresholdMax());
line.setThresholdMin(index.getThresholdMin());
line.setCrQuantity(new BigDecimal(0L));
line.setMajQuantity(new BigDecimal(0L));
line.setMajQuantity(new BigDecimal(0L));
qcOqcLineService.insertQcOqcLine(line);
}
}
}
}

View File

@ -0,0 +1,90 @@
package com.ktg.mes.qc.controller.mobile;
import com.ktg.common.annotation.Log;
import com.ktg.common.constant.UserConstants;
import com.ktg.common.core.controller.BaseController;
import com.ktg.common.core.domain.AjaxResult;
import com.ktg.common.core.page.TableDataInfo;
import com.ktg.common.enums.BusinessType;
import com.ktg.common.utils.StringUtils;
import com.ktg.mes.qc.domain.QcResultDetail;
import com.ktg.mes.qc.domain.ValidList;
import com.ktg.mes.qc.service.IQcResultDetailService;
import org.apache.commons.collections.CollectionUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
* @author yinjinlu
* @description
* @date 2024/12/9
*/
@RestController
@RequestMapping("/mobile/qc/qcresultdetail")
public class QCResultDetailMobController extends BaseController {
@Autowired
private IQcResultDetailService qcResultDetailService;
/**
* 查询检测结果明细记录列表
*/
@GetMapping("/list")
public TableDataInfo list(QcResultDetail qcResultDetail)
{
startPage();
List<QcResultDetail> list = qcResultDetailService.selectQcResultDetailList(qcResultDetail);
return getDataTable(list);
}
/**
* 修改检验单结果
*/
@Log(title = "更新质检记录列表", businessType = BusinessType.UPDATE)
@Transactional
@PutMapping
public AjaxResult updateList(@Validated @RequestBody ValidList<QcResultDetail> defects){
if(CollectionUtils.isNotEmpty(defects)){
for(QcResultDetail index: defects){
switch (index.getQcResultType()){
case UserConstants.QC_RESULT_TYPE_FLOAT:
if(StringUtils.isNull(index.getQcValFloat())){
return AjaxResult.error("请填写检测值!【"+index.getIndexName()+"");
}
break;
case UserConstants.QC_RESULT_TYPE_INTEGER:
if(StringUtils.isNull(index.getQcValInteger())){
return AjaxResult.error("请填写检测值!【"+index.getIndexName()+"");
}
break;
case UserConstants.QC_RESULT_TYPE_TEXT:
if(StringUtils.isNull(index.getQcValText())){
return AjaxResult.error("请填写检测值!【"+index.getIndexName()+"");
}
break;
case UserConstants.QC_RESULT_TYPE_DICT:
if(StringUtils.isNull(index.getQcValDict())){
return AjaxResult.error("请填写检测值!【"+index.getIndexName()+"");
}
break;
case UserConstants.QC_RESULT_TYPE_FILE:
if(StringUtils.isNull(index.getQcValFile())){
return AjaxResult.error("请填写检测值!【"+index.getIndexName()+"");
}
break;
default:
break;
}
qcResultDetailService.updateQcResultDetail(index);
}
}
return AjaxResult.success();
}
}

View File

@ -0,0 +1,245 @@
package com.ktg.mes.qc.controller.mobile;
import com.ktg.common.annotation.Log;
import com.ktg.common.constant.UserConstants;
import com.ktg.common.core.controller.BaseController;
import com.ktg.common.core.domain.AjaxResult;
import com.ktg.common.core.page.TableDataInfo;
import com.ktg.common.enums.BusinessType;
import com.ktg.common.utils.StringUtils;
import com.ktg.common.utils.bean.BeanUtils;
import com.ktg.common.utils.poi.ExcelUtil;
import com.ktg.mes.qc.domain.*;
import com.ktg.mes.qc.service.*;
import com.ktg.system.strategy.AutoCodeUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletResponse;
import java.util.List;
/**
* 质检记录Controller
*
* @author yinjinlu
* @date 2023-11-19
*/
@RestController
@RequestMapping("/mobile/qc/qcresult")
public class QCResultMobController extends BaseController
{
@Autowired
private IQcResultService qcResultService;
@Autowired
private IQcResultDetailService qcResultDetailService;
@Autowired
private AutoCodeUtil autoCodeUtil;
@Autowired
private IQcIqcService qcIqcService;
@Autowired
private IQcIqcLineService qcIqcLineService;
@Autowired
private IQcIpqcService qcIpqcService;
@Autowired
private IQcIpqcLineService qcIpqcLineService;
@Autowired
private IQcOqcService qcOqcService;
@Autowired
private IQcOqcLineService qcOqcLineService;
/**
* 查询质检记录列表
*/
@GetMapping("/list")
public TableDataInfo list(QcResult qcResult)
{
startPage();
List<QcResult> list = qcResultService.selectQcResultList(qcResult);
return getDataTable(list);
}
/**
* 导出质检记录列表
*/
@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, "质检记录数据");
}
/**
* 获取质检记录详细信息
*/
@GetMapping(value = "/{resultId}")
public AjaxResult getInfo(@PathVariable("resultId") Long resultId)
{
return AjaxResult.success(qcResultService.selectQcResultByResultId(resultId));
}
/**
* 新增质检记录
*/
@Log(title = "质检记录", businessType = BusinessType.INSERT)
@PostMapping
public AjaxResult add(@RequestBody QcResult qcResult)
{
//质量的质检记录编码自动生成
String resultCode = autoCodeUtil.genSerialCode(UserConstants.QC_RESULT_CODE,null);
qcResult.setResultCode(resultCode);
//根据传入的sourceDocId和sourceDocType初始化其他信息
if(StringUtils.isNull(qcResult.getSourceDocId()) || StringUtils.isNull(qcResult.getSourceDocType())){
return AjaxResult.error("来源单据类型和ID不能为空");
}
String sourceDocType = qcResult.getSourceDocType();
Long sourceDocId = qcResult.getSourceDocId();
Long resultId = -1L;
switch (sourceDocType){
case UserConstants.QC_TYPE_IQC:
//根据iqcId查询对应的单据编号和名称
QcIqc iqc = qcIqcService.selectQcIqcByIqcId(sourceDocId);
if(StringUtils.isNotNull(iqc)){
qcResult.setSourceDocCode(iqc.getIqcCode());
qcResult.setSourceDocName(iqc.getIqcName());
qcResult.setItemId(iqc.getItemId());
qcResult.setItemName(iqc.getItemName());
qcResult.setItemCode(iqc.getItemCode());
qcResult.setSpecification(iqc.getSpecification());
qcResult.setUnitOfMeasure(iqc.getUnitOfMeasure());
}
qcResultService.insertQcResult(qcResult);
resultId = qcResult.getResultId();
generateIQCRecordIndex(resultId,sourceDocId);
break;
case UserConstants.QC_TYPE_IPQC:
QcIpqc ipqc = qcIpqcService.selectQcIpqcByIpqcId(sourceDocId);
if(StringUtils.isNotNull(ipqc)){
qcResult.setSourceDocCode(ipqc.getIpqcCode());
qcResult.setSourceDocName(ipqc.getIpqcName());
qcResult.setItemId(ipqc.getItemId());
qcResult.setItemName(ipqc.getItemName());
qcResult.setItemCode(ipqc.getItemCode());
qcResult.setSpecification(ipqc.getSpecification());
qcResult.setUnitOfMeasure(ipqc.getUnitOfMeasure());
}
qcResultService.insertQcResult(qcResult);
resultId = qcResult.getResultId();
generateIPQCRecordIndex(resultId,sourceDocId);
break;
case UserConstants.QC_TYPE_OQC:
QcOqc oqc = qcOqcService.selectQcOqcByOqcId(sourceDocId);
if(StringUtils.isNotNull(oqc)){
qcResult.setSourceDocCode(oqc.getOqcCode());
qcResult.setSourceDocName(oqc.getOqcName());
qcResult.setItemId(oqc.getItemId());
qcResult.setItemName(oqc.getItemName());
qcResult.setItemCode(oqc.getItemCode());
qcResult.setSpecification(oqc.getSpecification());
qcResult.setUnitOfMeasure(oqc.getUnitOfMeasure());
}
qcResultService.insertQcResult(qcResult);
resultId = qcResult.getResultId();
generateOQCRecordIndex(resultId,sourceDocId);
break;
default:
return AjaxResult.error("错误的检测单类型!");
}
return AjaxResult.success(qcResult);
}
/**
* 修改质检记录
*/
@Log(title = "质检记录", businessType = BusinessType.UPDATE)
@PutMapping
public AjaxResult edit(@RequestBody QcResult qcResult)
{
return toAjax(qcResultService.updateQcResult(qcResult));
}
/**
* 删除质检记录
*/
@Log(title = "质检记录", businessType = BusinessType.DELETE)
@Transactional
@DeleteMapping("/{resultIds}")
public AjaxResult remove(@PathVariable Long[] resultIds)
{
return toAjax(qcResultService.deleteQcResultByResultIds(resultIds));
}
/**
* 根据来料检验单ID自动生成对应的检测记录-检测项
* @param resultId
*/
private void generateIQCRecordIndex(Long resultId,Long iqcId){
QcResultDetail qcResultDetail = new QcResultDetail();
qcResultDetail.setResultId(resultId);
qcResultDetail.setQcId(iqcId);
List<QcResultDetail> details = qcResultDetailService.selectQcResultDetailByResultIdAndIQCId(qcResultDetail);
if(!CollectionUtils.isEmpty(details)){
for (QcResultDetail line: details
) {
line.setResultId(resultId);
qcResultDetailService.insertQcResultDetail(line);
}
}
}
/**
* 根据过程检验单ID自动生成对应的检测记录-检测项
* @param resultId
*/
private void generateIPQCRecordIndex(Long resultId,Long ipqcId){
QcResultDetail qcResultDetail = new QcResultDetail();
qcResultDetail.setResultId(resultId);
qcResultDetail.setQcId(ipqcId);
List<QcResultDetail> details = qcResultDetailService.selectQcResultDetailByResultIdAndIPQCId(qcResultDetail);
if(!CollectionUtils.isEmpty(details)){
for (QcResultDetail line: details
) {
line.setResultId(resultId);
qcResultDetailService.insertQcResultDetail(line);
}
}
}
/**
* 根据出厂检验单ID自动生成对应的检测记录-检测项
* @param resultId
*/
private void generateOQCRecordIndex(Long resultId,Long oqcId){
QcResultDetail qcResultDetail = new QcResultDetail();
qcResultDetail.setResultId(resultId);
qcResultDetail.setQcId(oqcId);
List<QcResultDetail> details = qcResultDetailService.selectQcResultDetailByResultIdAndOQCId(qcResultDetail);
if(!CollectionUtils.isEmpty(details)){
for (QcResultDetail line: details
) {
line.setResultId(resultId);
qcResultDetailService.insertQcResultDetail(line);
}
}
}
}