质量检验任务提交增加病疵项目

master
Yangwl 5 days ago
parent f673a179ec
commit 31895aa837

@ -8,6 +8,8 @@ import lombok.EqualsAndHashCode;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
import java.util.List;
/**
* qc_inspection_task
@ -108,5 +110,6 @@ public class QcInspectionTaskBo {
*/
private String attr4;
private List<QcInspectionTaskDefectBo> qcInspectionTaskDefectBoList;
}

@ -0,0 +1,60 @@
package org.dromara.pda.api.model;
import jakarta.validation.constraints.NotNull;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
import java.io.Serial;
/**
* qc_inspection_task_defect
*
* @author Yangwl
* @date 2025-07-16
*/
@Data
public class QcInspectionTaskDefectBo {
@Serial
private static final long serialVersionUID = 1L;
/**
*
*/
private Long taskDefectId;
/**
*
*/
@NotNull(message = "检验任务主键不能为空", groups = { AddGroup.class, EditGroup.class })
private Long taskId;
/**
*
*/
@NotNull(message = "缺陷信息主键不能为空", groups = { AddGroup.class, EditGroup.class })
private Long defectId;
/**
* 1
*/
private String attr1;
/**
* 2
*/
private String attr2;
/**
*
*/
private String attr3;
/**
*
*/
private String attr4;
}

@ -0,0 +1,103 @@
package org.dromara.pda.api.model.vo;
import jakarta.validation.constraints.NotBlank;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
import java.io.Serializable;
@Data
@NoArgsConstructor
public class RemoteQcInspectionTaskVo implements Serializable {
/**
*
*/
@NotBlank(message = "主键标识不能为空", groups = { AddGroup.class })
private String taskId;
/**
*
*/
private String category;
/**
*
*/
private String taskNo;
/**
*
*/
private String description;
/**
*
*/
private String status;
/**
*
*/
private String workCenter;
/**
*
*/
private String shopOrder;
/**
*
*/
@NotBlank(message = "生产批次不能为空", groups = { AddGroup.class, EditGroup.class })
private String sfc;
/**
*
*/
@NotBlank(message = "工序编号不能为空", groups = { AddGroup.class, EditGroup.class })
private String operation;
/**
* 线
*/
private String stepId;
/**
*
*/
private String resrce;
/**
*
*/
@NotBlank(message = "任务结果不能为空", groups = { AddGroup.class, EditGroup.class })
private String result;
/**
* PDA
*/
private String qcMaterialCode;
/**
* id
*/
private Long materialId;
/**
*
*/
private String attr3;
/**
*
*/
private String attr4;
}

@ -0,0 +1,64 @@
package org.dromara.api.domain.bo;
import io.github.linpeilie.annotations.AutoMapper;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
import org.dromara.common.mybatis.core.domain.BaseEntity;
import java.io.Serial;
/**
* qc_inspection_task_defect
*
* @author Yangwl
* @date 2025-07-16
*/
@Data
@EqualsAndHashCode(callSuper = true)
public class QcInspectionTaskDefectBo extends BaseEntity {
@Serial
private static final long serialVersionUID = 1L;
/**
*
*/
private Long taskDefectId;
/**
*
*/
@NotNull(message = "检验任务主键不能为空", groups = { AddGroup.class, EditGroup.class })
private Long taskId;
/**
*
*/
@NotNull(message = "缺陷信息主键不能为空", groups = { AddGroup.class, EditGroup.class })
private Long defectId;
/**
* 1
*/
private String attr1;
/**
* 2
*/
private String attr2;
/**
*
*/
private String attr3;
/**
*
*/
private String attr4;
}

@ -0,0 +1,117 @@
package org.dromara.qms.controller;
import java.util.List;
import lombok.RequiredArgsConstructor;
import jakarta.servlet.http.HttpServletResponse;
import jakarta.validation.constraints.*;
import cn.dev33.satoken.annotation.SaCheckPermission;
import org.springframework.web.bind.annotation.*;
import org.springframework.validation.annotation.Validated;
import org.dromara.common.idempotent.annotation.RepeatSubmit;
import org.dromara.common.log.annotation.Log;
import org.dromara.common.web.core.BaseController;
import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.common.core.domain.R;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
import org.dromara.common.log.enums.BusinessType;
import org.dromara.common.excel.utils.ExcelUtil;
import org.dromara.qms.domain.vo.QcInspectionTaskDefectVo;
import org.dromara.qms.domain.bo.QcInspectionTaskDefectBo;
import org.dromara.qms.service.IQcInspectionTaskDefectService;
import org.dromara.common.mybatis.core.page.TableDataInfo;
/**
*
* 访:/qms/inspectionTaskDefect
*
* @author Yangwl
* @date 2025-07-16
*/
@Validated
@RequiredArgsConstructor
@RestController
@RequestMapping("/inspectionTaskDefect")
public class QcInspectionTaskDefectController extends BaseController {
private final IQcInspectionTaskDefectService qcInspectionTaskDefectService;
/**
*
*/
@SaCheckPermission("qms:inspectionTaskDefect:list")
@GetMapping("/list")
public TableDataInfo<QcInspectionTaskDefectVo> list(QcInspectionTaskDefectBo bo, PageQuery pageQuery) {
return qcInspectionTaskDefectService.queryPageList(bo, pageQuery);
}
/**
*
*/
@SaCheckPermission("qms:inspectionTaskDefect:export")
@Log(title = "检验任务缺陷信息", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(QcInspectionTaskDefectBo bo, HttpServletResponse response) {
List<QcInspectionTaskDefectVo> list = qcInspectionTaskDefectService.queryList(bo);
ExcelUtil.exportExcel(list, "检验任务缺陷信息", QcInspectionTaskDefectVo.class, response);
}
/**
*
*
* @param taskDefectId
*/
@SaCheckPermission("qms:inspectionTaskDefect:query")
@GetMapping("/{taskDefectId}")
public R<QcInspectionTaskDefectVo> getInfo(@NotNull(message = "主键不能为空")
@PathVariable Long taskDefectId) {
return R.ok(qcInspectionTaskDefectService.queryById(taskDefectId));
}
/**
*
*/
@SaCheckPermission("qms:inspectionTaskDefect:add")
@Log(title = "检验任务缺陷信息", businessType = BusinessType.INSERT)
@RepeatSubmit()
@PostMapping()
public R<Void> add(@Validated(AddGroup.class) @RequestBody QcInspectionTaskDefectBo bo) {
return toAjax(qcInspectionTaskDefectService.insertByBo(bo));
}
/**
*
*/
@SaCheckPermission("qms:inspectionTaskDefect:edit")
@Log(title = "检验任务缺陷信息", businessType = BusinessType.UPDATE)
@RepeatSubmit()
@PutMapping()
public R<Void> edit(@Validated(EditGroup.class) @RequestBody QcInspectionTaskDefectBo bo) {
return toAjax(qcInspectionTaskDefectService.updateByBo(bo));
}
/**
*
*
* @param taskDefectIds
*/
@SaCheckPermission("qms:inspectionTaskDefect:remove")
@Log(title = "检验任务缺陷信息", businessType = BusinessType.DELETE)
@DeleteMapping("/{taskDefectIds}")
public R<Void> remove(@NotEmpty(message = "主键不能为空")
@PathVariable Long[] taskDefectIds) {
return toAjax(qcInspectionTaskDefectService.deleteWithValidByIds(List.of(taskDefectIds), true));
}
/**
*
*/
@GetMapping("/getQcInspectionTaskDefectList")
public R<List<QcInspectionTaskDefectVo>> getQcInspectionTaskDefectList(QcInspectionTaskDefectBo bo) {
List<QcInspectionTaskDefectVo> list = qcInspectionTaskDefectService.queryList(bo);
return R.ok(list);
}
}

@ -0,0 +1,60 @@
package org.dromara.qms.domain;
import org.dromara.common.tenant.core.TenantEntity;
import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.io.Serial;
/**
* qc_inspection_task_defect
*
* @author Yangwl
* @date 2025-07-16
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("qc_inspection_task_defect")
public class QcInspectionTaskDefect extends TenantEntity {
@Serial
private static final long serialVersionUID = 1L;
/**
*
*/
private Long taskDefectId;
/**
*
*/
private Long taskId;
/**
*
*/
private Long defectId;
/**
* 1
*/
private String attr1;
/**
* 2
*/
private String attr2;
/**
*
*/
private String attr3;
/**
*
*/
private String attr4;
}

@ -0,0 +1,66 @@
package org.dromara.qms.domain.bo;
import org.dromara.qms.domain.QcInspectionTaskDefect;
import org.dromara.common.mybatis.core.domain.BaseEntity;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import lombok.EqualsAndHashCode;
import jakarta.validation.constraints.*;
/**
* qc_inspection_task_defect
*
* @author Yangwl
* @date 2025-07-16
*/
@Data
@EqualsAndHashCode(callSuper = true)
@AutoMapper(target = QcInspectionTaskDefect.class, reverseConvertGenerate = false)
public class QcInspectionTaskDefectBo extends BaseEntity {
/**
*
*/
@NotNull(message = "主键不能为空", groups = { AddGroup.class, EditGroup.class })
private Long taskDefectId;
/**
*
*/
@NotNull(message = "检验任务主键不能为空", groups = { AddGroup.class, EditGroup.class })
private Long taskId;
/**
*
*/
@NotNull(message = "缺陷信息主键不能为空", groups = { AddGroup.class, EditGroup.class })
private Long defectId;
/**
* 1
*/
@NotBlank(message = "预留字段1不能为空", groups = { AddGroup.class, EditGroup.class })
private String attr1;
/**
* 2
*/
@NotBlank(message = "预留字段2不能为空", groups = { AddGroup.class, EditGroup.class })
private String attr2;
/**
*
*/
@NotBlank(message = "不能为空", groups = { AddGroup.class, EditGroup.class })
private String attr3;
/**
*
*/
@NotBlank(message = "不能为空", groups = { AddGroup.class, EditGroup.class })
private String attr4;
}

@ -0,0 +1,110 @@
package org.dromara.qms.domain.vo;
import org.dromara.qms.domain.QcInspectionTaskDefect;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import org.dromara.common.excel.annotation.ExcelDictFormat;
import org.dromara.common.excel.convert.ExcelDictConvert;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import java.io.Serial;
import java.io.Serializable;
import java.util.Date;
/**
* qc_inspection_task_defect
*
* @author Yangwl
* @date 2025-07-16
*/
@Data
@ExcelIgnoreUnannotated
@AutoMapper(target = QcInspectionTaskDefect.class)
public class QcInspectionTaskDefectVo implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
/**
*
*/
@ExcelProperty(value = "主键")
private Long taskDefectId;
/**
*
*/
@ExcelProperty(value = "检验任务主键")
private Long taskId;
/**
*
*/
@ExcelProperty(value = "缺陷信息主键")
private Long defectId;
/**
* 1
*/
@ExcelProperty(value = "预留字段1")
private String attr1;
/**
* 2
*/
@ExcelProperty(value = "预留字段2")
private String attr2;
/**
*
*/
@ExcelProperty(value = "")
private String attr3;
/**
*
*/
@ExcelProperty(value = "")
private String attr4;
/**
*
*/
@ExcelProperty(value = "租户号")
private String tenantId;
/**
*
*/
@ExcelProperty(value = "")
private String createDept;
/**
*
*/
@ExcelProperty(value = "创建人")
private String createBy;
/**
*
*/
@ExcelProperty(value = "创建时间")
private Date createTime;
/**
*
*/
@ExcelProperty(value = "更新人")
private String updateBy;
/**
*
*/
@ExcelProperty(value = "更新时间")
private Date updateTime;
}

@ -1,5 +1,6 @@
package org.dromara.qms.dubbo;
import cn.hutool.core.bean.BeanUtil;
import lombok.RequiredArgsConstructor;
import org.apache.dubbo.config.annotation.DubboService;
import org.dromara.common.core.domain.R;
@ -10,15 +11,18 @@ import org.dromara.pda.api.RemotePdaQmsApiService;
import org.dromara.pda.api.model.QcInspectionTaskBo;
import org.dromara.pda.api.model.vo.RemoteDefectVo;
import org.dromara.qms.domain.QcInspectionTask;
import org.dromara.qms.domain.QcInspectionTaskDefect;
import org.dromara.qms.domain.bo.QcDefectDetailBo;
import org.dromara.qms.domain.vo.QcDefectDetailVo;
import org.dromara.qms.mapper.QcDefectDetailMapper;
import org.dromara.qms.mapper.QcDefectInfoMapper;
import org.dromara.qms.mapper.QcInspectionTaskDefectMapper;
import org.dromara.qms.mapper.QcInspectionTaskMapper;
import org.dromara.qms.service.IQcDefectDetailService;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
@RequiredArgsConstructor
@ -30,6 +34,7 @@ public class RemoteQmsApiServiceImpl implements RemotePdaQmsApiService {
private final QcDefectDetailMapper qcDefectDetailMapper;
private final QcInspectionTaskMapper qcInspectionTaskMapper;
private final IQcDefectDetailService iQcDefectDetailService;
private final QcInspectionTaskDefectMapper qcInspectionTaskDefectMapper;
/**
*
@ -63,6 +68,8 @@ public class RemoteQmsApiServiceImpl implements RemotePdaQmsApiService {
QcInspectionTask qcInspectionTask = new QcInspectionTask();
qcInspectionTask = MapstructUtils.convert(bo, QcInspectionTask.class);
int i = qcInspectionTaskMapper.updateById(qcInspectionTask);
List<QcInspectionTaskDefect> qcInspectionTaskDefectList=BeanUtil.copyToList(bo.getQcInspectionTaskDefectBoList(),QcInspectionTaskDefect.class);
qcInspectionTaskDefectMapper.insertBatch(qcInspectionTaskDefectList);
if (i > 0) {
return R.ok();
}

@ -0,0 +1,15 @@
package org.dromara.qms.mapper;
import org.dromara.qms.domain.QcInspectionTaskDefect;
import org.dromara.qms.domain.vo.QcInspectionTaskDefectVo;
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
/**
* Mapper
*
* @author Yangwl
* @date 2025-07-16
*/
public interface QcInspectionTaskDefectMapper extends BaseMapperPlus<QcInspectionTaskDefect, QcInspectionTaskDefectVo> {
}

@ -0,0 +1,69 @@
package org.dromara.qms.service;
import org.dromara.qms.domain.QcInspectionTaskDefect;
import org.dromara.qms.domain.vo.QcInspectionTaskDefectVo;
import org.dromara.qms.domain.bo.QcInspectionTaskDefectBo;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.mybatis.core.page.PageQuery;
import java.util.Collection;
import java.util.List;
/**
* Service
*
* @author Yangwl
* @date 2025-07-16
*/
public interface IQcInspectionTaskDefectService {
/**
*
*
* @param taskDefectId
* @return
*/
QcInspectionTaskDefectVo queryById(Long taskDefectId);
/**
*
*
* @param bo
* @param pageQuery
* @return
*/
TableDataInfo<QcInspectionTaskDefectVo> queryPageList(QcInspectionTaskDefectBo bo, PageQuery pageQuery);
/**
*
*
* @param bo
* @return
*/
List<QcInspectionTaskDefectVo> queryList(QcInspectionTaskDefectBo bo);
/**
*
*
* @param bo
* @return
*/
Boolean insertByBo(QcInspectionTaskDefectBo bo);
/**
*
*
* @param bo
* @return
*/
Boolean updateByBo(QcInspectionTaskDefectBo bo);
/**
*
*
* @param ids
* @param isValid
* @return
*/
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
}

@ -0,0 +1,144 @@
package org.dromara.qms.service.impl;
import org.dromara.common.core.utils.MapstructUtils;
import org.dromara.common.core.utils.StringUtils;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.mybatis.core.page.PageQuery;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.github.yulichang.toolkit.JoinWrappers;
import com.github.yulichang.wrapper.MPJLambdaWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import org.dromara.qms.domain.bo.QcInspectionTaskDefectBo;
import org.dromara.qms.domain.vo.QcInspectionTaskDefectVo;
import org.dromara.qms.domain.QcInspectionTaskDefect;
import org.dromara.qms.mapper.QcInspectionTaskDefectMapper;
import org.dromara.qms.service.IQcInspectionTaskDefectService;
import java.util.List;
import java.util.Map;
import java.util.Collection;
/**
* Service
*
* @author Yangwl
* @date 2025-07-16
*/
@RequiredArgsConstructor
@Service
public class QcInspectionTaskDefectServiceImpl implements IQcInspectionTaskDefectService {
private final QcInspectionTaskDefectMapper baseMapper;
/**
*
*
* @param taskDefectId
* @return
*/
@Override
public QcInspectionTaskDefectVo queryById(Long taskDefectId){
return baseMapper.selectVoById(taskDefectId);
}
/**
*
*
* @param bo
* @param pageQuery
* @return
*/
@Override
public TableDataInfo<QcInspectionTaskDefectVo> queryPageList(QcInspectionTaskDefectBo bo, PageQuery pageQuery) {
MPJLambdaWrapper<QcInspectionTaskDefect> lqw = buildQueryWrapper(bo);
Page<QcInspectionTaskDefectVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
return TableDataInfo.build(result);
}
/**
*
*
* @param bo
* @return
*/
@Override
public List<QcInspectionTaskDefectVo> queryList(QcInspectionTaskDefectBo bo) {
MPJLambdaWrapper<QcInspectionTaskDefect> lqw = buildQueryWrapper(bo);
return baseMapper.selectVoList(lqw);
}
private MPJLambdaWrapper<QcInspectionTaskDefect> buildQueryWrapper(QcInspectionTaskDefectBo bo) {
Map<String, Object> params = bo.getParams();
MPJLambdaWrapper<QcInspectionTaskDefect> lqw = JoinWrappers.lambda(QcInspectionTaskDefect.class)
.selectAll(QcInspectionTaskDefect.class)
.eq(bo.getTaskDefectId() != null, QcInspectionTaskDefect::getTaskDefectId, bo.getTaskDefectId())
.eq(bo.getTaskId() != null, QcInspectionTaskDefect::getTaskId, bo.getTaskId())
.eq(bo.getDefectId() != null, QcInspectionTaskDefect::getDefectId, bo.getDefectId())
.eq(StringUtils.isNotBlank(bo.getAttr1()), QcInspectionTaskDefect::getAttr1, bo.getAttr1())
.eq(StringUtils.isNotBlank(bo.getAttr2()), QcInspectionTaskDefect::getAttr2, bo.getAttr2())
.eq(StringUtils.isNotBlank(bo.getAttr3()), QcInspectionTaskDefect::getAttr3, bo.getAttr3())
.eq(StringUtils.isNotBlank(bo.getAttr4()), QcInspectionTaskDefect::getAttr4, bo.getAttr4())
.eq(StringUtils.isNotBlank(bo.getTenantId()), QcInspectionTaskDefect::getTenantId, bo.getTenantId())
.eq(StringUtils.isNotBlank(bo.getCreateDept()), QcInspectionTaskDefect::getCreateDept, bo.getCreateDept())
.eq(StringUtils.isNotBlank(bo.getCreateBy()), QcInspectionTaskDefect::getCreateBy, bo.getCreateBy())
.eq(bo.getCreateTime() != null, QcInspectionTaskDefect::getCreateTime, bo.getCreateTime())
.eq(StringUtils.isNotBlank(bo.getUpdateBy()), QcInspectionTaskDefect::getUpdateBy, bo.getUpdateBy())
.eq(bo.getUpdateTime() != null, QcInspectionTaskDefect::getUpdateTime, bo.getUpdateTime())
.orderByDesc(QcInspectionTaskDefect::getCreateTime);
return lqw;
}
/**
*
*
* @param bo
* @return
*/
@Override
public Boolean insertByBo(QcInspectionTaskDefectBo bo) {
QcInspectionTaskDefect add = MapstructUtils.convert(bo, QcInspectionTaskDefect.class);
validEntityBeforeSave(add);
boolean flag = baseMapper.insert(add) > 0;
if (flag) {
bo.setTaskDefectId(add.getTaskDefectId());
}
return flag;
}
/**
*
*
* @param bo
* @return
*/
@Override
public Boolean updateByBo(QcInspectionTaskDefectBo bo) {
QcInspectionTaskDefect update = MapstructUtils.convert(bo, QcInspectionTaskDefect.class);
validEntityBeforeSave(update);
return baseMapper.updateById(update) > 0;
}
/**
*
*/
private void validEntityBeforeSave(QcInspectionTaskDefect entity){
//TODO 做一些数据校验,如唯一约束
}
/**
*
*
* @param ids
* @param isValid
* @return
*/
@Override
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
if(isValid){
//TODO 做一些业务上的校验,判断是否需要校验
}
return baseMapper.deleteByIds(ids) > 0;
}
}

@ -0,0 +1,7 @@
<?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="org.dromara.qms.mapper.QcInspectionTaskDefectMapper">
</mapper>
Loading…
Cancel
Save