feat(qms): 添加检测项类别、检测项定义、质检主表、质检结果子表、检测模板主表、检测类型、检测模板子表的导入功能

- 在各个控制器中添加了 /importData 接口用于数据导入
- 在服务层实现了数据导入的逻辑
- 增加了数据导入的权限控制和日志记录
- 优化了数据校验逻辑,增加了编码和名称的唯一性校验
master
zch 7 days ago
parent 186b7d10d9
commit 7ea5724eff

@ -175,7 +175,7 @@ public class RemoteLubeInstanceServiceImpl implements RemoteLubeInstanceService
return R.fail();
}
// 创建新的润滑工单实例对象
// 创建新的润滑工单对象
DmsBillsLubeInstance dmsBillsLubeInstance = new DmsBillsLubeInstance();
// 设置润滑工单的计划ID
dmsBillsLubeInstance.setPlanLubeId(dmsPlanLube.getPlanLubeId());

@ -333,7 +333,7 @@ public class DmsBillsMaintInstanceServiceImpl implements IDmsBillsMaintInstanceS
RemoteStartProcess startProcess = new RemoteStartProcess();
// 设置流程代码
startProcess.setFlowCode(DmsConstants.DMS_BILLS_MAINT_INSTANCE_WF_CODE);
// 获取业务ID保养实例ID
// 获取业务ID保养ID
String businessId = dmsBillsMaintInstance.getMaintInstanceId().toString();
// 设置业务ID
startProcess.setBusinessId(businessId);

@ -1,6 +1,7 @@
package org.dromara.mes.service.impl;
import org.apache.commons.lang3.ObjectUtils;
import org.dromara.common.core.exception.ServiceException;
import org.dromara.common.core.utils.MapstructUtils;
import org.dromara.common.core.utils.StringUtils;
import org.dromara.common.mybatis.core.page.TableDataInfo;
@ -11,6 +12,7 @@ import com.github.yulichang.wrapper.MPJLambdaWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import lombok.RequiredArgsConstructor;
import org.dromara.mes.domain.BaseDeviceCategory;
import org.dromara.mes.domain.BaseMaterialType;
import org.dromara.mes.domain.vo.BaseMaterialTypeVo;
import org.springframework.stereotype.Service;
import org.dromara.mes.domain.bo.BaseDeviceTypeBo;
@ -18,6 +20,7 @@ import org.dromara.mes.domain.vo.BaseDeviceTypeVo;
import org.dromara.mes.domain.BaseDeviceType;
import org.dromara.mes.mapper.BaseDeviceTypeMapper;
import org.dromara.mes.service.IBaseDeviceTypeService;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
import java.util.Map;
@ -149,10 +152,19 @@ public class BaseDeviceTypeServiceImpl implements IBaseDeviceTypeService {
* @return
*/
@Override
@Transactional
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
if(isValid){
//TODO 做一些业务上的校验,判断是否需要校验
}
for (Long id : ids) {
//监测删除的节点是否有子节点
BaseDeviceType query = new BaseDeviceType();
query.setParentId(id);
if (baseMapper.selectCount(Wrappers.lambdaQuery(query)) > 0) {
throw new ServiceException("存在子节点,不允许删除");
}
}
return baseMapper.deleteByIds(ids) > 0;
}
}

@ -6,6 +6,9 @@ import lombok.RequiredArgsConstructor;
import jakarta.servlet.http.HttpServletResponse;
import jakarta.validation.constraints.*;
import cn.dev33.satoken.annotation.SaCheckPermission;
import org.dromara.common.excel.core.DefaultExcelListener;
import org.dromara.common.excel.core.ExcelResult;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.*;
import org.springframework.validation.annotation.Validated;
import org.dromara.common.idempotent.annotation.RepeatSubmit;
@ -20,6 +23,9 @@ import org.dromara.common.excel.utils.ExcelUtil;
import org.dromara.qms.domain.vo.QcInspectionItemCategoryVo;
import org.dromara.qms.domain.bo.QcInspectionItemCategoryBo;
import org.dromara.qms.service.IQcInspectionItemCategoryService;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.beans.BeanUtils;
/**
*
@ -126,4 +132,28 @@ public class QcInspectionItemCategoryController extends BaseController {
List<QcInspectionItemCategoryVo> list = qcInspectionItemCategoryService.queryList(bo);
return R.ok(list);
}
/**
*
*
* @param file
* @param updateSupport
*/
@SaCheckPermission("qms:qcInspectionItemCategory:add")
@Log(title = "检测项类别", businessType = BusinessType.IMPORT)
@PostMapping(value = "/importData", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
public R<Void> importData(@RequestPart("file") MultipartFile file, boolean updateSupport) throws Exception {
ExcelResult<QcInspectionItemCategoryVo> result = ExcelUtil.importExcel(file.getInputStream(), QcInspectionItemCategoryVo.class, new DefaultExcelListener<>(true));
int successCount = 0;
for (QcInspectionItemCategoryVo vo : result.getList()) {
QcInspectionItemCategoryBo bo = new QcInspectionItemCategoryBo();
BeanUtils.copyProperties(vo, bo);
if (qcInspectionItemCategoryService.insertByBo(bo)) {
successCount++;
}
}
return R.ok("导入成功: " + successCount + " 条" + result.getAnalysis());
}
}

@ -22,6 +22,11 @@ import org.dromara.qms.domain.vo.QcInspectionItemVo;
import org.dromara.qms.domain.bo.QcInspectionItemBo;
import org.dromara.qms.service.IQcInspectionItemService;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.springframework.beans.BeanUtils;
import org.springframework.http.MediaType;
import org.springframework.web.multipart.MultipartFile;
import org.dromara.common.excel.core.DefaultExcelListener;
import org.dromara.common.excel.core.ExcelResult;
/**
*
@ -126,4 +131,20 @@ public class QcInspectionItemController extends BaseController {
List<QcInspectionItemVo> list = qcInspectionItemService.queryList(bo);
return R.ok(list);
}
@SaCheckPermission("qms:qcInspectionItem:add")
@Log(title = "检测项定义", businessType = BusinessType.IMPORT)
@PostMapping(value = "/importData", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
public R<Void> importData(@RequestPart("file") MultipartFile file, boolean updateSupport) throws Exception {
ExcelResult<QcInspectionItemVo> result = ExcelUtil.importExcel(file.getInputStream(), QcInspectionItemVo.class, new DefaultExcelListener<>(true));
int successCount = 0;
for (QcInspectionItemVo vo : result.getList()) {
QcInspectionItemBo bo = new QcInspectionItemBo();
BeanUtils.copyProperties(vo, bo);
if (qcInspectionItemService.insertByBo(bo)) {
successCount++;
}
}
return R.ok("导入成功: " + successCount + " 条" + result.getAnalysis());
}
}

@ -22,6 +22,11 @@ import org.dromara.qms.domain.vo.QcInspectionMainVo;
import org.dromara.qms.domain.bo.QcInspectionMainBo;
import org.dromara.qms.service.IQcInspectionMainService;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.springframework.http.MediaType;
import org.springframework.web.multipart.MultipartFile;
import org.dromara.common.excel.core.DefaultExcelListener;
import org.dromara.common.excel.core.ExcelResult;
import org.springframework.beans.BeanUtils;
/**
*
@ -126,4 +131,28 @@ public class QcInspectionMainController extends BaseController {
List<QcInspectionMainVo> list = qcInspectionMainService.queryList(bo);
return R.ok(list);
}
/**
*
*
* @param file
* @param updateSupport
*/
@SaCheckPermission("qms:QcInspectionMain:add")
@Log(title = "质检主表", businessType = BusinessType.IMPORT)
@PostMapping(value = "/importData", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
public R<Void> importData(@RequestPart("file") MultipartFile file, boolean updateSupport) throws Exception {
ExcelResult<QcInspectionMainVo> result = ExcelUtil.importExcel(file.getInputStream(), QcInspectionMainVo.class, new DefaultExcelListener<>(true));
int successCount = 0;
for (QcInspectionMainVo vo : result.getList()) {
QcInspectionMainBo bo = new QcInspectionMainBo();
BeanUtils.copyProperties(vo, bo);
if (qcInspectionMainService.insertByBo(bo)) {
successCount++;
}
}
return R.ok("导入成功: " + successCount + " 条" + result.getAnalysis());
}
}

@ -6,6 +6,9 @@ import lombok.RequiredArgsConstructor;
import jakarta.servlet.http.HttpServletResponse;
import jakarta.validation.constraints.*;
import cn.dev33.satoken.annotation.SaCheckPermission;
import org.dromara.common.excel.core.DefaultExcelListener;
import org.dromara.common.excel.core.ExcelResult;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.*;
import org.springframework.validation.annotation.Validated;
import org.dromara.common.idempotent.annotation.RepeatSubmit;
@ -21,6 +24,8 @@ import org.dromara.qms.domain.vo.QcInspectionResultVo;
import org.dromara.qms.domain.bo.QcInspectionResultBo;
import org.dromara.qms.service.IQcInspectionResultService;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.springframework.beans.BeanUtils;
import org.springframework.web.multipart.MultipartFile;
/**
*
@ -114,4 +119,20 @@ public class QcInspectionResultController extends BaseController {
List<QcInspectionResultVo> list = qcInspectionResultService.queryList(bo);
return R.ok(list);
}
@SaCheckPermission("qms:qcInspectionResult:add")
@Log(title = "质检结果子表", businessType = BusinessType.IMPORT)
@PostMapping(value = "/importData", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
public R<Void> importData(@RequestPart("file") MultipartFile file, boolean updateSupport) throws Exception {
ExcelResult<QcInspectionResultVo> result = ExcelUtil.importExcel(file.getInputStream(), QcInspectionResultVo.class, new DefaultExcelListener<>(true));
int successCount = 0;
for (QcInspectionResultVo vo : result.getList()) {
QcInspectionResultBo bo = new QcInspectionResultBo();
BeanUtils.copyProperties(vo, bo);
if (qcInspectionResultService.insertByBo(bo)) {
successCount++;
}
}
return R.ok("导入成功: " + successCount + " 条" + result.getAnalysis());
}
}

@ -22,6 +22,11 @@ import org.dromara.qms.domain.vo.QcInspectionTemplateVo;
import org.dromara.qms.domain.bo.QcInspectionTemplateBo;
import org.dromara.qms.service.IQcInspectionTemplateService;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.springframework.http.MediaType;
import org.dromara.common.excel.core.DefaultExcelListener;
import org.springframework.web.multipart.MultipartFile;
import org.dromara.common.excel.core.ExcelResult;
import org.springframework.beans.BeanUtils;
/**
*
@ -51,7 +56,7 @@ public class QcInspectionTemplateController extends BaseController {
*
*/
@SaCheckPermission("qms:qcInspectionTemplate:export")
@Log(title = "检测模板主", businessType = BusinessType.EXPORT)
@Log(title = "检测模板主", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(QcInspectionTemplateBo bo, HttpServletResponse response) {
List<QcInspectionTemplateVo> list = qcInspectionTemplateService.queryList(bo);
@ -62,7 +67,7 @@ public class QcInspectionTemplateController extends BaseController {
*
*/
@SaCheckPermission("qms:qcInspectionTemplate:export")
@Log(title = "检测模板主", businessType = BusinessType.EXPORT)
@Log(title = "检测模板主", businessType = BusinessType.EXPORT)
@PostMapping("/exportTemplate")
public void exportTemplate(HttpServletResponse response) {
List<QcInspectionTemplateVo> list = new ArrayList<>();
@ -85,7 +90,7 @@ public class QcInspectionTemplateController extends BaseController {
*
*/
@SaCheckPermission("qms:qcInspectionTemplate:add")
@Log(title = "检测模板主", businessType = BusinessType.INSERT)
@Log(title = "检测模板主", businessType = BusinessType.INSERT)
@RepeatSubmit()
@PostMapping()
public R<Void> add(@Validated(AddGroup.class) @RequestBody QcInspectionTemplateBo bo) {
@ -96,7 +101,7 @@ public class QcInspectionTemplateController extends BaseController {
*
*/
@SaCheckPermission("qms:qcInspectionTemplate:edit")
@Log(title = "检测模板主", businessType = BusinessType.UPDATE)
@Log(title = "检测模板主", businessType = BusinessType.UPDATE)
@RepeatSubmit()
@PutMapping()
public R<Void> edit(@Validated(EditGroup.class) @RequestBody QcInspectionTemplateBo bo) {
@ -109,7 +114,7 @@ public class QcInspectionTemplateController extends BaseController {
* @param templateIds
*/
@SaCheckPermission("qms:qcInspectionTemplate:remove")
@Log(title = "检测模板主", businessType = BusinessType.DELETE)
@Log(title = "检测模板主", businessType = BusinessType.DELETE)
@DeleteMapping("/{templateIds}")
public R<Void> remove(@NotEmpty(message = "主键不能为空")
@PathVariable Long[] templateIds) {
@ -126,4 +131,27 @@ public class QcInspectionTemplateController extends BaseController {
List<QcInspectionTemplateVo> list = qcInspectionTemplateService.queryList(bo);
return R.ok(list);
}
/**
*
*
* @param file
* @param updateSupport
*/
@SaCheckPermission("qms:qcInspectionTemplate:add")
@Log(title = "检测模板主表", businessType = BusinessType.IMPORT)
@PostMapping(value = "/importData", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
public R<Void> importData(@RequestPart("file") MultipartFile file, boolean updateSupport) throws Exception {
ExcelResult<QcInspectionTemplateVo> result = ExcelUtil.importExcel(file.getInputStream(), QcInspectionTemplateVo.class, new DefaultExcelListener<>(true));
int successCount = 0;
for (QcInspectionTemplateVo vo : result.getList()) {
QcInspectionTemplateBo bo = new QcInspectionTemplateBo();
BeanUtils.copyProperties(vo, bo);
if (qcInspectionTemplateService.insertByBo(bo)) {
successCount++;
}
}
return R.ok("导入成功: " + successCount + " 条" + result.getAnalysis());
}
}

@ -7,6 +7,8 @@ import lombok.RequiredArgsConstructor;
import jakarta.servlet.http.HttpServletResponse;
import jakarta.validation.constraints.*;
import cn.dev33.satoken.annotation.SaCheckPermission;
import org.dromara.common.core.utils.MapstructUtils;
import org.dromara.common.excel.core.ExcelResult;
import org.springframework.web.bind.annotation.*;
import org.springframework.validation.annotation.Validated;
import org.dromara.common.idempotent.annotation.RepeatSubmit;
@ -22,6 +24,11 @@ import org.dromara.qms.domain.vo.QcInspectionTypeVo;
import org.dromara.qms.domain.bo.QcInspectionTypeBo;
import org.dromara.qms.service.IQcInspectionTypeService;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.springframework.http.MediaType;
import org.dromara.common.excel.core.DefaultExcelListener;
import org.springframework.web.multipart.MultipartFile;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils;
/**
*
@ -32,6 +39,7 @@ import org.dromara.common.mybatis.core.page.TableDataInfo;
*/
@Validated
@RequiredArgsConstructor
@Slf4j
@RestController
@RequestMapping("/qcInspectionType")
public class QcInspectionTypeController extends BaseController {
@ -126,4 +134,29 @@ public class QcInspectionTypeController extends BaseController {
List<QcInspectionTypeVo> list = qcInspectionTypeService.queryList(bo);
return R.ok(list);
}
/**
*
*
* @param file
* @param updateSupport
*/
@SaCheckPermission("qms:qcInspectionType:add")
@Log(title = "检测类型", businessType = BusinessType.IMPORT)
@PostMapping(value = "/importData", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
public R<Void> importData(@RequestPart("file") MultipartFile file, boolean updateSupport) throws Exception {
ExcelResult<QcInspectionTypeVo> result = ExcelUtil.importExcel(file.getInputStream(), QcInspectionTypeVo.class, new DefaultExcelListener<>(true));
int successCount = 0;
for (QcInspectionTypeVo vo : result.getList()) {
QcInspectionTypeBo bo = new QcInspectionTypeBo();
BeanUtils.copyProperties(vo, bo);
if (qcInspectionTypeService.insertByBo(bo)) {
successCount++;
}
}
return R.ok("导入成功: " + successCount + " 条" + result.getAnalysis());
}
}

@ -6,6 +6,10 @@ import lombok.RequiredArgsConstructor;
import jakarta.servlet.http.HttpServletResponse;
import jakarta.validation.constraints.*;
import cn.dev33.satoken.annotation.SaCheckPermission;
import org.dromara.common.excel.core.DefaultExcelListener;
import org.dromara.common.excel.core.ExcelResult;
import org.springframework.beans.BeanUtils;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.*;
import org.springframework.validation.annotation.Validated;
import org.dromara.common.idempotent.annotation.RepeatSubmit;
@ -21,6 +25,7 @@ import org.dromara.qms.domain.vo.QcTemplateItemVo;
import org.dromara.qms.domain.bo.QcTemplateItemBo;
import org.dromara.qms.service.IQcTemplateItemService;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.springframework.web.multipart.MultipartFile;
/**
*
@ -114,4 +119,22 @@ public class QcTemplateItemController extends BaseController {
List<QcTemplateItemVo> list = qcTemplateItemService.queryList(bo);
return R.ok(list);
}
@SaCheckPermission("qms:qcTemplateItem:add")
@Log(title = "检测模板子表", businessType = BusinessType.IMPORT)
@PostMapping(value = "/importData", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
public R<Void> importData(@RequestPart("file") MultipartFile file, boolean updateSupport) throws Exception {
ExcelResult<QcTemplateItemVo> result = ExcelUtil.importExcel(file.getInputStream(), QcTemplateItemVo.class, new DefaultExcelListener<>(true));
int successCount = 0;
for (QcTemplateItemVo vo : result.getList()) {
QcTemplateItemBo bo = new QcTemplateItemBo();
BeanUtils.copyProperties(vo, bo);
if (qcTemplateItemService.insertByBo(bo)) {
successCount++;
}
}
return R.ok("导入成功: " + successCount + " 条" + result.getAnalysis());
}
}

@ -39,7 +39,7 @@ public class QcInspectionResult extends TenantEntity {
private Long itemId;
/**
* 01
* 012
*/
private Long detectResult;

@ -38,7 +38,7 @@ public class QcInspectionResultBo extends BaseEntity {
private Long itemId;
/**
* 01
* 012
*/
private Long detectResult;

@ -31,7 +31,7 @@ public class QcInspectionItemCategoryVo implements Serializable {
/**
*
*/
@ExcelProperty(value = "检测项类别主键")
// @ExcelProperty(value = "检测项类别主键")
private Long categoryId;
/**

@ -31,7 +31,7 @@ public class QcInspectionItemVo implements Serializable {
/**
*
*/
@ExcelProperty(value = "检测项主键")
// @ExcelProperty(value = "检测项主键")
private Long itemId;
/**

@ -35,7 +35,7 @@ public class QcInspectionMainVo implements Serializable {
/**
*
*/
@ExcelProperty(value = "质检主键")
// @ExcelProperty(value = "质检主键")
private Long inspectionId;
/**

@ -48,7 +48,7 @@ public class QcInspectionResultVo implements Serializable {
private Long itemId;
/**
* 01
* 012
*/
@ExcelProperty(value = "检测结果", converter = ExcelDictConvert.class)
@ExcelDictFormat(dictType = "qc_result")

@ -31,7 +31,7 @@ public class QcInspectionTemplateVo implements Serializable {
/**
*
*/
@ExcelProperty(value = "模板主键")
// @ExcelProperty(value = "模板主键")
private Long templateId;
/**

@ -31,7 +31,7 @@ public class QcInspectionTypeVo implements Serializable {
/**
*
*/
@ExcelProperty(value = "检测类型主键")
// @ExcelProperty(value = "检测类型主键")
private Long typeId;
/**

@ -34,7 +34,7 @@ public class QcTemplateItemVo implements Serializable {
/**
*
*/
@ExcelProperty(value = "模板子表主键")
// @ExcelProperty(value = "模板子表主键")
private Long templateItemId;
/**

@ -1,6 +1,5 @@
package org.dromara.qms.service.impl;
import org.apache.commons.lang3.ObjectUtils;
import org.dromara.common.core.exception.ServiceException;
import org.dromara.common.core.utils.MapstructUtils;
import org.dromara.common.core.utils.StringUtils;
@ -15,10 +14,11 @@ import org.dromara.qms.domain.vo.QcInspectionItemCategoryVo;
import org.dromara.qms.domain.QcInspectionItemCategory;
import org.dromara.qms.mapper.QcInspectionItemCategoryMapper;
import org.dromara.qms.service.IQcInspectionItemCategoryService;
import java.util.List;
import java.util.Map;
import java.util.Collection;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.ObjectUtils;
/**
* Service
@ -89,7 +89,7 @@ public class QcInspectionItemCategoryServiceImpl implements IQcInspectionItemCat
// 获取父节点信息
QcInspectionItemCategoryVo query = baseMapper.selectVoById(bo.getParentId());
if (ObjectUtils.isNotEmpty(query)) {
if (!ObjectUtils.isEmpty(query)) {
//若父节点不为空则将父节点的ancestors拼接父节点id拼接成ancestors
add.setAncestors(query.getAncestors() + "," + bo.getParentId());
}else{
@ -123,6 +123,29 @@ public class QcInspectionItemCategoryServiceImpl implements IQcInspectionItemCat
*/
private void validEntityBeforeSave(QcInspectionItemCategory entity){
//TODO 做一些数据校验,如唯一约束
if (StringUtils.isNotBlank(entity.getCategoryCode())) {
QcInspectionItemCategoryBo query = new QcInspectionItemCategoryBo();
query.setCategoryCode(entity.getCategoryCode());
MPJLambdaWrapper<QcInspectionItemCategory> lqw = buildQueryWrapper(query);
QcInspectionItemCategory baseQcInspectionItemCategory = baseMapper.selectOne(lqw);
if (!ObjectUtils.isEmpty(baseQcInspectionItemCategory)
&& !baseQcInspectionItemCategory.getCategoryId().equals(entity.getCategoryId())) {
throw new ServiceException("编码已存在");
}
}
if (StringUtils.isNotBlank(entity.getCategoryName())) {
QcInspectionItemCategoryBo query = new QcInspectionItemCategoryBo();
query.setCategoryName(entity.getCategoryName());
MPJLambdaWrapper<QcInspectionItemCategory> lqw = buildQueryWrapper(query);
QcInspectionItemCategory baseQcInspectionItemCategory = baseMapper.selectOne(lqw);
if (!ObjectUtils.isEmpty(baseQcInspectionItemCategory)
&& !baseQcInspectionItemCategory.getCategoryId().equals(entity.getCategoryId())) {
throw new ServiceException("名称已存在");
}
}
}
/**
@ -133,6 +156,7 @@ public class QcInspectionItemCategoryServiceImpl implements IQcInspectionItemCat
* @return
*/
@Override
@Transactional(rollbackFor = Exception.class)
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
if(isValid){
//TODO 做一些业务上的校验,判断是否需要校验

@ -1,5 +1,6 @@
package org.dromara.qms.service.impl;
import org.dromara.common.core.exception.ServiceException;
import org.dromara.common.core.utils.MapstructUtils;
import org.dromara.common.core.utils.StringUtils;
import org.dromara.common.mybatis.core.page.TableDataInfo;
@ -15,6 +16,7 @@ import org.dromara.qms.domain.vo.QcInspectionTypeVo;
import org.dromara.qms.domain.QcInspectionType;
import org.dromara.qms.mapper.QcInspectionTypeMapper;
import org.dromara.qms.service.IQcInspectionTypeService;
import org.springframework.util.ObjectUtils;
import java.util.List;
import java.util.Map;
@ -117,6 +119,29 @@ public class QcInspectionTypeServiceImpl implements IQcInspectionTypeService {
*/
private void validEntityBeforeSave(QcInspectionType entity){
//TODO 做一些数据校验,如唯一约束
if (StringUtils.isNotBlank(entity.getTypeCode())) {
QcInspectionTypeBo query = new QcInspectionTypeBo();
query.setTypeCode(entity.getTypeCode());
MPJLambdaWrapper<QcInspectionType> lqw = buildQueryWrapper(query);
QcInspectionType baseQcInspectionType = baseMapper.selectOne(lqw);
if (!ObjectUtils.isEmpty(baseQcInspectionType)
&& !baseQcInspectionType.getTypeId().equals(entity.getTypeId())) {
throw new ServiceException("编码已存在");
}
}
if (StringUtils.isNotBlank(entity.getTypeName())) {
QcInspectionTypeBo query = new QcInspectionTypeBo();
query.setTypeName(entity.getTypeName());
MPJLambdaWrapper<QcInspectionType> lqw = buildQueryWrapper(query);
QcInspectionType baseQcInspectionType = baseMapper.selectOne(lqw);
if (!ObjectUtils.isEmpty(baseQcInspectionType)
&& !baseQcInspectionType.getTypeId().equals(entity.getTypeId())) {
throw new ServiceException("名称已存在");
}
}
}
/**

@ -29,7 +29,7 @@ CREATE TABLE qc_inspection_type (
-- 添加表备注
EXEC sp_addextendedproperty
@name = N'MS_Description',
@value = N'检测类型表,其他表绑定检测类型主键来查询编码、名称、类型(字典,通过字典键值来进行一定的逻辑操作)',
@value = N'检测类型表',
@level0type = N'SCHEMA', @level0name = N'dbo',
@level1type = N'TABLE', @level1name = N'qc_inspection_type';
@ -38,7 +38,7 @@ EXEC sp_addextendedproperty @name=N'MS_Description', @value=N'检测类型主键
EXEC sp_addextendedproperty @name=N'MS_Description', @value=N'租户号' , @level0type=N'SCHEMA',@level0name=N'dbo',@level1type=N'TABLE',@level1name=N'qc_inspection_type',@level2type=N'COLUMN',@level2name=N'tenant_id';
EXEC sp_addextendedproperty @name=N'MS_Description', @value=N'检测类型编码' , @level0type=N'SCHEMA',@level0name=N'dbo',@level1type=N'TABLE',@level1name=N'qc_inspection_type',@level2type=N'COLUMN',@level2name=N'type_code';
EXEC sp_addextendedproperty @name=N'MS_Description', @value=N'检测类型名称' , @level0type=N'SCHEMA',@level0name=N'dbo',@level1type=N'TABLE',@level1name=N'qc_inspection_type',@level2type=N'COLUMN',@level2name=N'type_name';
EXEC sp_addextendedproperty @name=N'MS_Description', @value=N'检测类型(字典:首检 专检 自检 互检 原材料检 抽检 成品检),其他表绑定检测类型主键来查类型(通过字典键值来进行一定的逻辑操作)' , @level0type=N'SCHEMA',@level0name=N'dbo',@level1type=N'TABLE',@level1name=N'qc_inspection_type',@level2type=N'COLUMN',@level2name=N'qc_inspection_type';
EXEC sp_addextendedproperty @name=N'MS_Description', @value=N'检测类型(字典:首检 专检 自检 互检 原材料检 抽检 成品检)' , @level0type=N'SCHEMA',@level0name=N'dbo',@level1type=N'TABLE',@level1name=N'qc_inspection_type',@level2type=N'COLUMN',@level2name=N'qc_inspection_type';
EXEC sp_addextendedproperty @name=N'MS_Description', @value=N'创建方式1人工创建 2自动创建' , @level0type=N'SCHEMA',@level0name=N'dbo',@level1type=N'TABLE',@level1name=N'qc_inspection_type',@level2type=N'COLUMN',@level2name=N'create_method';
EXEC sp_addextendedproperty @name=N'MS_Description', @value=N'创建人' , @level0type=N'SCHEMA',@level0name=N'dbo',@level1type=N'TABLE',@level1name=N'qc_inspection_type',@level2type=N'COLUMN',@level2name=N'create_by';
EXEC sp_addextendedproperty @name=N'MS_Description', @value=N'创建时间' , @level0type=N'SCHEMA',@level0name=N'dbo',@level1type=N'TABLE',@level1name=N'qc_inspection_type',@level2type=N'COLUMN',@level2name=N'create_time';
@ -52,6 +52,8 @@ EXEC sp_addextendedproperty @name=N'MS_Description', @value=N'是否删除0
CREATE TABLE qc_inspection_item_category (
category_id BIGINT PRIMARY KEY, -- 检测项类别主键
tenant_id VARCHAR(32), -- 租户号
parent_id BIGINT, -- 父级ID
ancestors VARCHAR(500), -- 祖级列表
category_code VARCHAR(30) NOT NULL, -- 检测项类别编码
category_name VARCHAR(255) NOT NULL, -- 检测项类别名称
type_id BIGINT NULL, -- 检测单类型(关联检测类型表)
@ -73,6 +75,8 @@ EXEC sp_addextendedproperty
-- 为检测项类别表字段添加中文备注
EXEC sp_addextendedproperty @name=N'MS_Description', @value=N'检测项类别主键' , @level0type=N'SCHEMA',@level0name=N'dbo',@level1type=N'TABLE',@level1name=N'qc_inspection_item_category',@level2type=N'COLUMN',@level2name=N'category_id';
EXEC sp_addextendedproperty @name=N'MS_Description', @value=N'租户号' , @level0type=N'SCHEMA',@level0name=N'dbo',@level1type=N'TABLE',@level1name=N'qc_inspection_item_category',@level2type=N'COLUMN',@level2name=N'tenant_id';
EXEC sp_addextendedproperty @name=N'MS_Description', @value=N'父级ID' , @level0type=N'SCHEMA',@level0name=N'dbo',@level1type=N'TABLE',@level1name=N'qc_inspection_item_category',@level2type=N'COLUMN',@level2name=N'parent_id';
EXEC sp_addextendedproperty @name=N'MS_Description', @value=N'祖级列表' , @level0type=N'SCHEMA',@level0name=N'dbo',@level1type=N'TABLE',@level1name=N'qc_inspection_item_category',@level2type=N'COLUMN',@level2name=N'ancestors';
EXEC sp_addextendedproperty @name=N'MS_Description', @value=N'检测项类别编码' , @level0type=N'SCHEMA',@level0name=N'dbo',@level1type=N'TABLE',@level1name=N'qc_inspection_item_category',@level2type=N'COLUMN',@level2name=N'category_code';
EXEC sp_addextendedproperty @name=N'MS_Description', @value=N'检测项类别名称' , @level0type=N'SCHEMA',@level0name=N'dbo',@level1type=N'TABLE',@level1name=N'qc_inspection_item_category',@level2type=N'COLUMN',@level2name=N'category_name';
EXEC sp_addextendedproperty @name=N'MS_Description', @value=N'检测单类型(关联检测类型表)' , @level0type=N'SCHEMA',@level0name=N'dbo',@level1type=N'TABLE',@level1name=N'qc_inspection_item_category',@level2type=N'COLUMN',@level2name=N'type_id';
@ -273,13 +277,13 @@ CREATE TABLE qc_inspection_main (
material_name VARCHAR(255), -- 物料名称
process_name VARCHAR(255), -- 工序名称
station_name VARCHAR(255), -- 工位名称
inspection_qty INT NOT NULL, -- 质检数量
qualified_qty INT DEFAULT 0, -- 合格数
unqualified_qty INT DEFAULT 0, -- 不合格数
inspection_qty DECIMAL(16,2), -- 质检数量
qualified_qty DECIMAL(16,2), -- 合格数
unqualified_qty DECIMAL(16,2), -- 不合格数
result CHAR(1), -- 质检结果0合格1不合格
workshop VARCHAR(50), -- 车间
inspection_category CHAR(1 ), -- TODO检验类别0首检1过程检?
status CHAR(1) NOT NULL, -- 单据状态0未处理1完成
status CHAR(1) , -- 单据状态0未处理1完成
inspector VARCHAR(32), -- 检测人员
shift VARCHAR(10), -- 班次
team VARCHAR(50), -- 班组
@ -317,7 +321,7 @@ EXEC sp_addextendedproperty @name=N'MS_Description', @value=N'合格数' , @leve
EXEC sp_addextendedproperty @name=N'MS_Description', @value=N'不合格数' , @level0type=N'SCHEMA',@level0name=N'dbo',@level1type=N'TABLE',@level1name=N'qc_inspection_main',@level2type=N'COLUMN',@level2name=N'unqualified_qty';
EXEC sp_addextendedproperty @name=N'MS_Description', @value=N'质检结果0合格/1不合格' , @level0type=N'SCHEMA',@level0name=N'dbo',@level1type=N'TABLE',@level1name=N'qc_inspection_main',@level2type=N'COLUMN',@level2name=N'result';
EXEC sp_addextendedproperty @name=N'MS_Description', @value=N'车间' , @level0type=N'SCHEMA',@level0name=N'dbo',@level1type=N'TABLE',@level1name=N'qc_inspection_main',@level2type=N'COLUMN',@level2name=N'workshop';
EXEC sp_addextendedproperty @name=N'MS_Description', @value=N'检验类别(首检/过程检' , @level0type=N'SCHEMA',@level0name=N'dbo',@level1type=N'TABLE',@level1name=N'qc_inspection_main',@level2type=N'COLUMN',@level2name=N'inspection_category';
EXEC sp_addextendedproperty @name=N'MS_Description', @value=N'检验类别(首检/过程检等等' , @level0type=N'SCHEMA',@level0name=N'dbo',@level1type=N'TABLE',@level1name=N'qc_inspection_main',@level2type=N'COLUMN',@level2name=N'inspection_category';
EXEC sp_addextendedproperty @name=N'MS_Description', @value=N'单据状态0未处理/1完成' , @level0type=N'SCHEMA',@level0name=N'dbo',@level1type=N'TABLE',@level1name=N'qc_inspection_main',@level2type=N'COLUMN',@level2name=N'status';
EXEC sp_addextendedproperty @name=N'MS_Description', @value=N'检测人员' , @level0type=N'SCHEMA',@level0name=N'dbo',@level1type=N'TABLE',@level1name=N'qc_inspection_main',@level2type=N'COLUMN',@level2name=N'inspector';
EXEC sp_addextendedproperty @name=N'MS_Description', @value=N'班次' , @level0type=N'SCHEMA',@level0name=N'dbo',@level1type=N'TABLE',@level1name=N'qc_inspection_main',@level2type=N'COLUMN',@level2name=N'shift';
@ -342,7 +346,7 @@ CREATE TABLE qc_inspection_result (
tenant_id VARCHAR(32), -- 租户号
inspection_id BIGINT NOT NULL, -- 关联质检主表ID
item_id BIGINT NOT NULL, -- 关联检测项ID
detect_result CHAR(1), -- 检测结果0合格1不合格
detect_result CHAR(1), -- 检测结果0合格1不合格2未判定
detect_value DECIMAL(18,2), -- 定量检测值
spec_inspection VARCHAR(50), -- 规格质检值
problem_detail VARCHAR(500), -- 定性不合格明细
@ -366,7 +370,7 @@ EXEC sp_addextendedproperty @name=N'MS_Description', @value=N'结果主键' , @l
EXEC sp_addextendedproperty @name=N'MS_Description', @value=N'租户号' , @level0type=N'SCHEMA',@level0name=N'dbo',@level1type=N'TABLE',@level1name=N'qc_inspection_result',@level2type=N'COLUMN',@level2name=N'tenant_id';
EXEC sp_addextendedproperty @name=N'MS_Description', @value=N'关联质检主表ID' , @level0type=N'SCHEMA',@level0name=N'dbo',@level1type=N'TABLE',@level1name=N'qc_inspection_result',@level2type=N'COLUMN',@level2name=N'inspection_id';
EXEC sp_addextendedproperty @name=N'MS_Description', @value=N'关联检测项ID' , @level0type=N'SCHEMA',@level0name=N'dbo',@level1type=N'TABLE',@level1name=N'qc_inspection_result',@level2type=N'COLUMN',@level2name=N'item_id';
EXEC sp_addextendedproperty @name=N'MS_Description', @value=N'检测结果0合格1不合格' , @level0type=N'SCHEMA',@level0name=N'dbo',@level1type=N'TABLE',@level1name=N'qc_inspection_result',@level2type=N'COLUMN',@level2name=N'detect_result';
EXEC sp_addextendedproperty @name=N'MS_Description', @value=N'检测结果0合格1不合格2未判定' , @level0type=N'SCHEMA',@level0name=N'dbo',@level1type=N'TABLE',@level1name=N'qc_inspection_result',@level2type=N'COLUMN',@level2name=N'detect_result';
EXEC sp_addextendedproperty @name=N'MS_Description', @value=N'定量检测值' , @level0type=N'SCHEMA',@level0name=N'dbo',@level1type=N'TABLE',@level1name=N'qc_inspection_result',@level2type=N'COLUMN',@level2name=N'detect_value';
EXEC sp_addextendedproperty @name=N'MS_Description', @value=N'规格质检值' , @level0type=N'SCHEMA',@level0name=N'dbo',@level1type=N'TABLE',@level1name=N'qc_inspection_result',@level2type=N'COLUMN',@level2name=N'spec_inspection';
EXEC sp_addextendedproperty @name=N'MS_Description', @value=N'定性不合格明细' , @level0type=N'SCHEMA',@level0name=N'dbo',@level1type=N'TABLE',@level1name=N'qc_inspection_result',@level2type=N'COLUMN',@level2name=N'problem_detail';
@ -414,7 +418,7 @@ EXEC sp_addextendedproperty @name=N'MS_Description', @value=N'评审主键' , @l
EXEC sp_addextendedproperty @name=N'MS_Description', @value=N'租户号' , @level0type=N'SCHEMA',@level0name=N'dbo',@level1type=N'TABLE',@level1name=N'qc_unqualified_review',@level2type=N'COLUMN',@level2name=N'tenant_id';
EXEC sp_addextendedproperty @name=N'MS_Description', @value=N'不合格检测单号' , @level0type=N'SCHEMA',@level0name=N'dbo',@level1type=N'TABLE',@level1name=N'qc_unqualified_review',@level2type=N'COLUMN',@level2name=N'unqualified_no';
EXEC sp_addextendedproperty @name=N'MS_Description', @value=N'关联质检主表ID' , @level0type=N'SCHEMA',@level0name=N'dbo',@level1type=N'TABLE',@level1name=N'qc_unqualified_review',@level2type=N'COLUMN',@level2name=N'inspection_id';
EXEC sp_addextendedproperty @name=N'MS_Description', @value=N'检测类型ID' , @level0type=N'SCHEMA',@level0name=N'dbo',@level1type=N'TABLE',@level2type=N'COLUMN',@level2name=N'type_id';
EXEC sp_addextendedproperty @name=N'MS_Description', @value=N'检测类型ID' , @level0type=N'SCHEMA',@level0name=N'dbo',@level1type=N'TABLE',@level1name=N'qc_unqualified_review',@level2type=N'COLUMN',@level2name=N'type_id';
EXEC sp_addextendedproperty @name=N'MS_Description', @value=N'派工单号' , @level0type=N'SCHEMA',@level0name=N'dbo',@level1type=N'TABLE',@level1name=N'qc_unqualified_review',@level2type=N'COLUMN',@level2name=N'work_order';
EXEC sp_addextendedproperty @name=N'MS_Description', @value=N'工序编码' , @level0type=N'SCHEMA',@level0name=N'dbo',@level1type=N'TABLE',@level1name=N'qc_unqualified_review',@level2type=N'COLUMN',@level2name=N'process_code';
EXEC sp_addextendedproperty @name=N'MS_Description', @value=N'工序名称' , @level0type=N'SCHEMA',@level0name=N'dbo',@level1type=N'TABLE',@level1name=N'qc_unqualified_review',@level2type=N'COLUMN',@level2name=N'process_name';
@ -422,15 +426,15 @@ EXEC sp_addextendedproperty @name=N'MS_Description', @value=N'批次号' , @leve
EXEC sp_addextendedproperty @name=N'MS_Description', @value=N'物料名称' , @level0type=N'SCHEMA',@level0name=N'dbo',@level1type=N'TABLE',@level1name=N'qc_unqualified_review',@level2type=N'COLUMN',@level2name=N'material_name';
EXEC sp_addextendedproperty @name=N'MS_Description', @value=N'物料编码' , @level0type=N'SCHEMA',@level0name=N'dbo',@level1type=N'TABLE',@level1name=N'qc_unqualified_review',@level2type=N'COLUMN',@level2name=N'material_code';
EXEC sp_addextendedproperty @name=N'MS_Description', @value=N'质检员检测结果' , @level0type=N'SCHEMA',@level0name=N'dbo',@level1type=N'TABLE',@level1name=N'qc_unqualified_review',@level2type=N'COLUMN',@level2name=N'inspector_result';
EXEC sp_addextendedproperty @name=N'MS_Description', @value=N'评审结果0报废/1返工/2退货' , @level0type=N'SCHEMA',@level0name=N'dbo',@level1type=N'TABLE',@level2type=N'COLUMN',@level2name=N'review_result';
EXEC sp_addextendedproperty @name=N'MS_Description', @value=N'评审结果0报废/1返工/2退货' , @level0type=N'SCHEMA',@level0name=N'dbo',@level1type=N'TABLE',@level1name=N'qc_unqualified_review',@level2type=N'COLUMN',@level2name=N'review_result';
EXEC sp_addextendedproperty @name=N'MS_Description', @value=N'评审人' , @level0type=N'SCHEMA',@level0name=N'dbo',@level1type=N'TABLE',@level1name=N'qc_unqualified_review',@level2type=N'COLUMN',@level2name=N'reviewer';
EXEC sp_addextendedproperty @name=N'MS_Description', @value=N'评审时间' , @level0type=N'SCHEMA',@level0name=N'dbo',@level1type=N'TABLE',@level1name=N'qc_unqualified_review',@level2type=N'COLUMN',@level2name=N'review_time';
EXEC sp_addextendedproperty @name=N'MS_Description', @value=N'创建人' , @level0type=N'SCHEMA',@level0name=N'dbo',@level1type=N'TABLE',@level1name=N'qc_inspection_result',@level2type=N'COLUMN',@level2name=N'create_by';
EXEC sp_addextendedproperty @name=N'MS_Description', @value=N'创建时间' , @level0type=N'SCHEMA',@level0name=N'dbo',@level1type=N'TABLE',@level1name=N'qc_inspection_result',@level2type=N'COLUMN',@level2name=N'create_time';
EXEC sp_addextendedproperty @name=N'MS_Description', @value=N'修改人' , @level0type=N'SCHEMA',@level0name=N'dbo',@level1type=N'TABLE',@level1name=N'qc_inspection_result',@level2type=N'COLUMN',@level2name=N'update_by';
EXEC sp_addextendedproperty @name=N'MS_Description', @value=N'修改时间' , @level0type=N'SCHEMA',@level0name=N'dbo',@level1type=N'TABLE',@level1name=N'qc_inspection_result',@level2type=N'COLUMN',@level2name=N'update_time';
EXEC sp_addextendedproperty @name=N'MS_Description', @value=N'是否删除0表示存在2表示删除' , @level0type=N'SCHEMA',@level0name=N'dbo',@level1type=N'TABLE',@level1name=N'qc_inspection_result',@level2type=N'COLUMN',@level2name=N'del_flag';
EXEC sp_addextendedproperty @name=N'MS_Description', @value=N'创建部门' , @level0type=N'SCHEMA',@level0name=N'dbo',@level1type=N'TABLE',@level1name=N'qc_inspection_result',@level2type=N'COLUMN',@level2name=N'create_dept';
EXEC sp_addextendedproperty @name=N'MS_Description', @value=N'创建人' , @level0type=N'SCHEMA',@level0name=N'dbo',@level1type=N'TABLE',@level1name=N'qc_unqualified_review',@level2type=N'COLUMN',@level2name=N'create_by';
EXEC sp_addextendedproperty @name=N'MS_Description', @value=N'创建时间' , @level0type=N'SCHEMA',@level0name=N'dbo',@level1type=N'TABLE',@level1name=N'qc_unqualified_review',@level2type=N'COLUMN',@level2name=N'create_time';
EXEC sp_addextendedproperty @name=N'MS_Description', @value=N'修改人' , @level0type=N'SCHEMA',@level0name=N'dbo',@level1type=N'TABLE',@level1name=N'qc_unqualified_review',@level2type=N'COLUMN',@level2name=N'update_by';
EXEC sp_addextendedproperty @name=N'MS_Description', @value=N'修改时间' , @level0type=N'SCHEMA',@level0name=N'dbo',@level1type=N'TABLE',@level1name=N'qc_unqualified_review',@level2type=N'COLUMN',@level2name=N'update_time';
EXEC sp_addextendedproperty @name=N'MS_Description', @value=N'是否删除0表示存在2表示删除' , @level0type=N'SCHEMA',@level0name=N'dbo',@level1type=N'TABLE',@level1name=N'qc_unqualified_review',@level2type=N'COLUMN',@level2name=N'del_flag';
EXEC sp_addextendedproperty @name=N'MS_Description', @value=N'创建部门' , @level0type=N'SCHEMA',@level0name=N'dbo',@level1type=N'TABLE',@level1name=N'qc_unqualified_review',@level2type=N'COLUMN',@level2name=N'create_dept';
-- 11. 不合格品评审记录表(存储不合格品的评审历史记录)

Loading…
Cancel
Save