提交质检

ccongli-dev-0920
tengxi 1 year ago
parent 19f36ef0f3
commit d254acfa37

@ -0,0 +1,102 @@
package com.yunxi.scm.module.xxjj.controller.admin.qualityinspection;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import org.springframework.validation.annotation.Validated;
import org.springframework.security.access.prepost.PreAuthorize;
import io.swagger.v3.oas.annotations.tags.Tag;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.Operation;
import javax.validation.constraints.*;
import javax.validation.*;
import javax.servlet.http.*;
import java.util.*;
import java.io.IOException;
import com.yunxi.scm.framework.common.pojo.PageResult;
import com.yunxi.scm.framework.common.pojo.CommonResult;
import static com.yunxi.scm.framework.common.pojo.CommonResult.success;
import com.yunxi.scm.framework.excel.core.util.ExcelUtils;
import com.yunxi.scm.framework.operatelog.core.annotations.OperateLog;
import static com.yunxi.scm.framework.operatelog.core.enums.OperateTypeEnum.*;
import com.yunxi.scm.module.xxjj.controller.admin.qualityinspection.vo.*;
import com.yunxi.scm.module.xxjj.dal.dataobject.qualityinspection.QualityInspectionDO;
import com.yunxi.scm.module.xxjj.convert.qualityinspection.QualityInspectionConvert;
import com.yunxi.scm.module.xxjj.service.qualityinspection.QualityInspectionService;
@Tag(name = "管理后台 - 质检报告")
@RestController
@RequestMapping("/xxjj/quality-inspection")
@Validated
public class QualityInspectionController {
@Resource
private QualityInspectionService qualityInspectionService;
@PostMapping("/create")
@Operation(summary = "创建质检报告")
@PreAuthorize("@ss.hasPermission('xxjj:quality-inspection:create')")
public CommonResult<Long> createQualityInspection(@Valid @RequestBody QualityInspectionCreateReqVO createReqVO) {
return success(qualityInspectionService.createQualityInspection(createReqVO));
}
@PutMapping("/update")
@Operation(summary = "更新质检报告")
@PreAuthorize("@ss.hasPermission('xxjj:quality-inspection:update')")
public CommonResult<Boolean> updateQualityInspection(@Valid @RequestBody QualityInspectionUpdateReqVO updateReqVO) {
qualityInspectionService.updateQualityInspection(updateReqVO);
return success(true);
}
@DeleteMapping("/delete")
@Operation(summary = "删除质检报告")
@Parameter(name = "id", description = "编号", required = true)
@PreAuthorize("@ss.hasPermission('xxjj:quality-inspection:delete')")
public CommonResult<Boolean> deleteQualityInspection(@RequestParam("id") Long id) {
qualityInspectionService.deleteQualityInspection(id);
return success(true);
}
@GetMapping("/get")
@Operation(summary = "获得质检报告")
@Parameter(name = "id", description = "编号", required = true, example = "1024")
@PreAuthorize("@ss.hasPermission('xxjj:quality-inspection:query')")
public CommonResult<QualityInspectionRespVO> getQualityInspection(@RequestParam("id") Long id) {
QualityInspectionDO qualityInspection = qualityInspectionService.getQualityInspection(id);
return success(QualityInspectionConvert.INSTANCE.convert(qualityInspection));
}
@GetMapping("/list")
@Operation(summary = "获得质检报告列表")
@Parameter(name = "ids", description = "编号列表", required = true, example = "1024,2048")
@PreAuthorize("@ss.hasPermission('xxjj:quality-inspection:query')")
public CommonResult<List<QualityInspectionRespVO>> getQualityInspectionList(@RequestParam("ids") Collection<Long> ids) {
List<QualityInspectionDO> list = qualityInspectionService.getQualityInspectionList(ids);
return success(QualityInspectionConvert.INSTANCE.convertList(list));
}
@GetMapping("/page")
@Operation(summary = "获得质检报告分页")
@PreAuthorize("@ss.hasPermission('xxjj:quality-inspection:query')")
public CommonResult<PageResult<QualityInspectionRespVO>> getQualityInspectionPage(@Valid QualityInspectionPageReqVO pageVO) {
PageResult<QualityInspectionDO> pageResult = qualityInspectionService.getQualityInspectionPage(pageVO);
return success(QualityInspectionConvert.INSTANCE.convertPage(pageResult));
}
@GetMapping("/export-excel")
@Operation(summary = "导出质检报告 Excel")
@PreAuthorize("@ss.hasPermission('xxjj:quality-inspection:export')")
@OperateLog(type = EXPORT)
public void exportQualityInspectionExcel(@Valid QualityInspectionExportReqVO exportReqVO,
HttpServletResponse response) throws IOException {
List<QualityInspectionDO> list = qualityInspectionService.getQualityInspectionList(exportReqVO);
// 导出 Excel
List<QualityInspectionExcelVO> datas = QualityInspectionConvert.INSTANCE.convertList02(list);
ExcelUtils.write(response, "质检报告.xls", "数据", QualityInspectionExcelVO.class, datas);
}
}

@ -0,0 +1,51 @@
package com.yunxi.scm.module.xxjj.controller.admin.qualityinspection.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.util.*;
import java.time.LocalDateTime;
import java.time.LocalDateTime;
import javax.validation.constraints.*;
/**
* Base VO VO 使
* VO Swagger
*/
@Data
public class QualityInspectionBaseVO {
@Schema(description = "提交人")
private Set<Long> presenter;
@Schema(description = "提交类型", example = "2")
private String presenterType;
@Schema(description = "关联任务id", example = "16165")
private String associatedTaskId;
@Schema(description = "关联订单id", example = "25103")
private String relatedOrderId;
@Schema(description = "状态", requiredMode = Schema.RequiredMode.REQUIRED, example = "2")
@NotNull(message = "状态不能为空")
private String qualityStatus;
@Schema(description = "所属团队id", example = "25814")
private String teamId;
@Schema(description = "质检品名", example = "王五")
private String qualityName;
@Schema(description = "总结")
private String summarize;
@Schema(description = "附件图片")
private String pictures;
@Schema(description = "批阅人员id", example = "6566")
private String readOverId;
@Schema(description = "抄送人员id", example = "30999")
private String carbonCopyId;
}

@ -0,0 +1,14 @@
package com.yunxi.scm.module.xxjj.controller.admin.qualityinspection.vo;
import lombok.*;
import java.util.*;
import io.swagger.v3.oas.annotations.media.Schema;
import javax.validation.constraints.*;
@Schema(description = "管理后台 - 质检报告创建 Request VO")
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
public class QualityInspectionCreateReqVO extends QualityInspectionBaseVO {
}

@ -0,0 +1,63 @@
package com.yunxi.scm.module.xxjj.controller.admin.qualityinspection.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.util.*;
import java.time.LocalDateTime;
import java.time.LocalDateTime;
import com.alibaba.excel.annotation.ExcelProperty;
import com.yunxi.scm.framework.excel.core.annotations.DictFormat;
import com.yunxi.scm.framework.excel.core.convert.DictConvert;
/**
* Excel VO
*
* @author
*/
@Data
public class QualityInspectionExcelVO {
@ExcelProperty("编号")
private Long id;
@ExcelProperty("提交人")
private Set<Long> presenter;
@ExcelProperty(value = "提交类型", converter = DictConvert.class)
@DictFormat("presenter_type") // TODO 代码优化:建议设置到对应的 XXXDictTypeConstants 枚举类中
private String presenterType;
@ExcelProperty("关联任务id")
private String associatedTaskId;
@ExcelProperty("关联订单id")
private String relatedOrderId;
@ExcelProperty(value = "状态", converter = DictConvert.class)
@DictFormat("status") // TODO 代码优化:建议设置到对应的 XXXDictTypeConstants 枚举类中
private String qualityStatus;
@ExcelProperty("所属团队id")
private String teamId;
@ExcelProperty("质检品名")
private String qualityName;
@ExcelProperty("总结")
private String summarize;
@ExcelProperty("附件图片")
private String pictures;
@ExcelProperty("批阅人员id")
private String readOverId;
@ExcelProperty("抄送人员id")
private String carbonCopyId;
@ExcelProperty("创建时间")
private LocalDateTime createTime;
}

@ -0,0 +1,53 @@
package com.yunxi.scm.module.xxjj.controller.admin.qualityinspection.vo;
import lombok.*;
import java.util.*;
import io.swagger.v3.oas.annotations.media.Schema;
import com.yunxi.scm.framework.common.pojo.PageParam;
import java.time.LocalDateTime;
import org.springframework.format.annotation.DateTimeFormat;
import static com.yunxi.scm.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
@Schema(description = "管理后台 - 质检报告 Excel 导出 Request VO参数和 QualityInspectionPageReqVO 是一致的")
@Data
public class QualityInspectionExportReqVO {
@Schema(description = "提交人")
private Set<Long> presenter;
@Schema(description = "提交类型", example = "2")
private String presenterType;
@Schema(description = "关联任务id", example = "16165")
private String associatedTaskId;
@Schema(description = "关联订单id", example = "25103")
private String relatedOrderId;
@Schema(description = "状态", example = "2")
private String qualityStatus;
@Schema(description = "所属团队id", example = "25814")
private String teamId;
@Schema(description = "质检品名", example = "王五")
private String qualityName;
@Schema(description = "总结")
private String summarize;
@Schema(description = "附件图片")
private String pictures;
@Schema(description = "批阅人员id", example = "6566")
private String readOverId;
@Schema(description = "抄送人员id", example = "30999")
private String carbonCopyId;
@Schema(description = "创建时间")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime[] createTime;
}

@ -0,0 +1,55 @@
package com.yunxi.scm.module.xxjj.controller.admin.qualityinspection.vo;
import lombok.*;
import java.util.*;
import io.swagger.v3.oas.annotations.media.Schema;
import com.yunxi.scm.framework.common.pojo.PageParam;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime;
import static com.yunxi.scm.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
@Schema(description = "管理后台 - 质检报告分页 Request VO")
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
public class QualityInspectionPageReqVO extends PageParam {
@Schema(description = "提交人")
private Set<Long> presenter;
@Schema(description = "提交类型", example = "2")
private String presenterType;
@Schema(description = "关联任务id", example = "16165")
private String associatedTaskId;
@Schema(description = "关联订单id", example = "25103")
private String relatedOrderId;
@Schema(description = "状态", example = "2")
private String qualityStatus;
@Schema(description = "所属团队id", example = "25814")
private String teamId;
@Schema(description = "质检品名", example = "王五")
private String qualityName;
@Schema(description = "总结")
private String summarize;
@Schema(description = "附件图片")
private String pictures;
@Schema(description = "批阅人员id", example = "6566")
private String readOverId;
@Schema(description = "抄送人员id", example = "30999")
private String carbonCopyId;
@Schema(description = "创建时间")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime[] createTime;
}

@ -0,0 +1,19 @@
package com.yunxi.scm.module.xxjj.controller.admin.qualityinspection.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.time.LocalDateTime;
@Schema(description = "管理后台 - 质检报告 Response VO")
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
public class QualityInspectionRespVO extends QualityInspectionBaseVO {
@Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "11682")
private Long id;
@Schema(description = "创建时间")
private LocalDateTime createTime;
}

@ -0,0 +1,18 @@
package com.yunxi.scm.module.xxjj.controller.admin.qualityinspection.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.util.*;
import javax.validation.constraints.*;
@Schema(description = "管理后台 - 质检报告更新 Request VO")
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
public class QualityInspectionUpdateReqVO extends QualityInspectionBaseVO {
@Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "11682")
@NotNull(message = "编号不能为空")
private Long id;
}

@ -0,0 +1,34 @@
package com.yunxi.scm.module.xxjj.convert.qualityinspection;
import java.util.*;
import com.yunxi.scm.framework.common.pojo.PageResult;
import org.mapstruct.Mapper;
import org.mapstruct.factory.Mappers;
import com.yunxi.scm.module.xxjj.controller.admin.qualityinspection.vo.*;
import com.yunxi.scm.module.xxjj.dal.dataobject.qualityinspection.QualityInspectionDO;
/**
* Convert
*
* @author
*/
@Mapper
public interface QualityInspectionConvert {
QualityInspectionConvert INSTANCE = Mappers.getMapper(QualityInspectionConvert.class);
QualityInspectionDO convert(QualityInspectionCreateReqVO bean);
QualityInspectionDO convert(QualityInspectionUpdateReqVO bean);
QualityInspectionRespVO convert(QualityInspectionDO bean);
List<QualityInspectionRespVO> convertList(List<QualityInspectionDO> list);
PageResult<QualityInspectionRespVO> convertPage(PageResult<QualityInspectionDO> page);
List<QualityInspectionExcelVO> convertList02(List<QualityInspectionDO> list);
}

@ -0,0 +1,82 @@
package com.yunxi.scm.module.xxjj.dal.dataobject.qualityinspection;
import com.yunxi.scm.framework.mybatis.core.type.JsonLongSetTypeHandler;
import lombok.*;
import java.util.*;
import java.time.LocalDateTime;
import java.time.LocalDateTime;
import com.baomidou.mybatisplus.annotation.*;
import com.yunxi.scm.framework.mybatis.core.dataobject.BaseDO;
/**
* DO
*
* @author
*/
@TableName(value = "xxjj_quality_inspection", autoResultMap = true)
@KeySequence("xxjj_quality_inspection_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class QualityInspectionDO extends BaseDO {
/**
*
*/
@TableId
private Long id;
/**
*
*/
// private String presenter;
@TableField(typeHandler = JsonLongSetTypeHandler.class)
private Set<Long> presenter;
/**
*
*
* {@link TODO presenter_type }
*/
private String presenterType;
/**
* id
*/
private String associatedTaskId;
/**
* id
*/
private String relatedOrderId;
/**
*
*
* {@link TODO status }
*/
private String qualityStatus;
/**
* id
*/
private String teamId;
/**
*
*/
private String qualityName;
/**
*
*/
private String summarize;
/**
*
*/
private String pictures;
/**
* id
*/
private String readOverId;
/**
* id
*/
private String carbonCopyId;
}

@ -0,0 +1,54 @@
package com.yunxi.scm.module.xxjj.dal.mysql.qualityinspection;
import java.util.*;
import com.yunxi.scm.framework.common.pojo.PageResult;
import com.yunxi.scm.framework.mybatis.core.query.LambdaQueryWrapperX;
import com.yunxi.scm.framework.mybatis.core.mapper.BaseMapperX;
import com.yunxi.scm.module.xxjj.dal.dataobject.qualityinspection.QualityInspectionDO;
import org.apache.ibatis.annotations.Mapper;
import com.yunxi.scm.module.xxjj.controller.admin.qualityinspection.vo.*;
/**
* Mapper
*
* @author
*/
@Mapper
public interface QualityInspectionMapper extends BaseMapperX<QualityInspectionDO> {
default PageResult<QualityInspectionDO> selectPage(QualityInspectionPageReqVO reqVO) {
return selectPage(reqVO, new LambdaQueryWrapperX<QualityInspectionDO>()
.eqIfPresent(QualityInspectionDO::getPresenter, reqVO.getPresenter())
.eqIfPresent(QualityInspectionDO::getPresenterType, reqVO.getPresenterType())
.eqIfPresent(QualityInspectionDO::getAssociatedTaskId, reqVO.getAssociatedTaskId())
.eqIfPresent(QualityInspectionDO::getRelatedOrderId, reqVO.getRelatedOrderId())
.eqIfPresent(QualityInspectionDO::getQualityStatus, reqVO.getQualityStatus())
.eqIfPresent(QualityInspectionDO::getTeamId, reqVO.getTeamId())
.likeIfPresent(QualityInspectionDO::getQualityName, reqVO.getQualityName())
.eqIfPresent(QualityInspectionDO::getSummarize, reqVO.getSummarize())
.eqIfPresent(QualityInspectionDO::getPictures, reqVO.getPictures())
.eqIfPresent(QualityInspectionDO::getReadOverId, reqVO.getReadOverId())
.eqIfPresent(QualityInspectionDO::getCarbonCopyId, reqVO.getCarbonCopyId())
.betweenIfPresent(QualityInspectionDO::getCreateTime, reqVO.getCreateTime())
.orderByDesc(QualityInspectionDO::getId));
}
default List<QualityInspectionDO> selectList(QualityInspectionExportReqVO reqVO) {
return selectList(new LambdaQueryWrapperX<QualityInspectionDO>()
.eqIfPresent(QualityInspectionDO::getPresenter, reqVO.getPresenter())
.eqIfPresent(QualityInspectionDO::getPresenterType, reqVO.getPresenterType())
.eqIfPresent(QualityInspectionDO::getAssociatedTaskId, reqVO.getAssociatedTaskId())
.eqIfPresent(QualityInspectionDO::getRelatedOrderId, reqVO.getRelatedOrderId())
.eqIfPresent(QualityInspectionDO::getQualityStatus, reqVO.getQualityStatus())
.eqIfPresent(QualityInspectionDO::getTeamId, reqVO.getTeamId())
.likeIfPresent(QualityInspectionDO::getQualityName, reqVO.getQualityName())
.eqIfPresent(QualityInspectionDO::getSummarize, reqVO.getSummarize())
.eqIfPresent(QualityInspectionDO::getPictures, reqVO.getPictures())
.eqIfPresent(QualityInspectionDO::getReadOverId, reqVO.getReadOverId())
.eqIfPresent(QualityInspectionDO::getCarbonCopyId, reqVO.getCarbonCopyId())
.betweenIfPresent(QualityInspectionDO::getCreateTime, reqVO.getCreateTime())
.orderByDesc(QualityInspectionDO::getId));
}
}

@ -29,7 +29,8 @@ public interface ErrorCodeConstants {
ErrorCode WAREHOUSE_RECEIPT_NOT_EXISTS = new ErrorCode(1002025013, "入库单不存在");
// ========== 领料单 TODO 补充编号 ==========
ErrorCode WAREHOUSE_OUT_NOT_EXISTS = new ErrorCode(1002025014, "领料单不存在");
// ========== 质检报告 TODO 补充编号 ==========
ErrorCode QUALITY_INSPECTION_NOT_EXISTS = new ErrorCode(1002025114, "质检报告不存在");
// ========== 部门模块 1002004000 ==========
ErrorCode MaterialCategory_NAME_DUPLICATE = new ErrorCode(1002004000, "已经存在该名字的部门");

@ -0,0 +1,70 @@
package com.yunxi.scm.module.xxjj.service.qualityinspection;
import java.util.*;
import javax.validation.*;
import com.yunxi.scm.module.xxjj.controller.admin.qualityinspection.vo.*;
import com.yunxi.scm.module.xxjj.dal.dataobject.qualityinspection.QualityInspectionDO;
import com.yunxi.scm.framework.common.pojo.PageResult;
/**
* Service
*
* @author
*/
public interface QualityInspectionService {
/**
*
*
* @param createReqVO
* @return
*/
Long createQualityInspection(@Valid QualityInspectionCreateReqVO createReqVO);
/**
*
*
* @param updateReqVO
*/
void updateQualityInspection(@Valid QualityInspectionUpdateReqVO updateReqVO);
/**
*
*
* @param id
*/
void deleteQualityInspection(Long id);
/**
*
*
* @param id
* @return
*/
QualityInspectionDO getQualityInspection(Long id);
/**
*
*
* @param ids
* @return
*/
List<QualityInspectionDO> getQualityInspectionList(Collection<Long> ids);
/**
*
*
* @param pageReqVO
* @return
*/
PageResult<QualityInspectionDO> getQualityInspectionPage(QualityInspectionPageReqVO pageReqVO);
/**
* , Excel
*
* @param exportReqVO
* @return
*/
List<QualityInspectionDO> getQualityInspectionList(QualityInspectionExportReqVO exportReqVO);
}

@ -0,0 +1,82 @@
package com.yunxi.scm.module.xxjj.service.qualityinspection;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import org.springframework.validation.annotation.Validated;
import java.util.*;
import com.yunxi.scm.module.xxjj.controller.admin.qualityinspection.vo.*;
import com.yunxi.scm.module.xxjj.dal.dataobject.qualityinspection.QualityInspectionDO;
import com.yunxi.scm.framework.common.pojo.PageResult;
import com.yunxi.scm.module.xxjj.convert.qualityinspection.QualityInspectionConvert;
import com.yunxi.scm.module.xxjj.dal.mysql.qualityinspection.QualityInspectionMapper;
import static com.yunxi.scm.framework.common.exception.util.ServiceExceptionUtil.exception;
import static com.yunxi.scm.module.xxjj.enums.ErrorCodeConstants.*;
/**
* Service
*
* @author
*/
@Service
@Validated
public class QualityInspectionServiceImpl implements QualityInspectionService {
@Resource
private QualityInspectionMapper qualityInspectionMapper;
@Override
public Long createQualityInspection(QualityInspectionCreateReqVO createReqVO) {
// 插入
QualityInspectionDO qualityInspection = QualityInspectionConvert.INSTANCE.convert(createReqVO);
qualityInspectionMapper.insert(qualityInspection);
// 返回
return qualityInspection.getId();
}
@Override
public void updateQualityInspection(QualityInspectionUpdateReqVO updateReqVO) {
// 校验存在
validateQualityInspectionExists(updateReqVO.getId());
// 更新
QualityInspectionDO updateObj = QualityInspectionConvert.INSTANCE.convert(updateReqVO);
qualityInspectionMapper.updateById(updateObj);
}
@Override
public void deleteQualityInspection(Long id) {
// 校验存在
validateQualityInspectionExists(id);
// 删除
qualityInspectionMapper.deleteById(id);
}
private void validateQualityInspectionExists(Long id) {
if (qualityInspectionMapper.selectById(id) == null) {
throw exception(QUALITY_INSPECTION_NOT_EXISTS);
}
}
@Override
public QualityInspectionDO getQualityInspection(Long id) {
return qualityInspectionMapper.selectById(id);
}
@Override
public List<QualityInspectionDO> getQualityInspectionList(Collection<Long> ids) {
return qualityInspectionMapper.selectBatchIds(ids);
}
@Override
public PageResult<QualityInspectionDO> getQualityInspectionPage(QualityInspectionPageReqVO pageReqVO) {
return qualityInspectionMapper.selectPage(pageReqVO);
}
@Override
public List<QualityInspectionDO> getQualityInspectionList(QualityInspectionExportReqVO exportReqVO) {
return qualityInspectionMapper.selectList(exportReqVO);
}
}

@ -0,0 +1,12 @@
<?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.yunxi.scm.module.xxjj.dal.mysql.qualityinspection.QualityInspectionMapper">
<!--
一般情况下,尽可能使用 Mapper 进行 CRUD 增删改查即可。
无法满足的场景,例如说多表关联查询,才使用 XML 编写 SQL。
代码生成器暂时只生成 Mapper XML 文件本身,更多推荐 MybatisX 快速开发插件来生成查询。
文档可见https://www.iocoder.cn/MyBatis/x-plugins/
-->
</mapper>

@ -0,0 +1,239 @@
package com.yunxi.scm.module.xxjj.service.qualityinspection;
import org.junit.jupiter.api.Disabled;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.mock.mockito.MockBean;
import javax.annotation.Resource;
import com.yunxi.scm.framework.test.core.ut.BaseDbUnitTest;
import com.yunxi.scm.module.xxjj.controller.admin.qualityinspection.vo.*;
import com.yunxi.scm.module.xxjj.dal.dataobject.qualityinspection.QualityInspectionDO;
import com.yunxi.scm.module.xxjj.dal.mysql.qualityinspection.QualityInspectionMapper;
import com.yunxi.scm.framework.common.pojo.PageResult;
import javax.annotation.Resource;
import org.springframework.context.annotation.Import;
import java.util.*;
import java.time.LocalDateTime;
import static cn.hutool.core.util.RandomUtil.*;
import static com.yunxi.scm.module.xxjj.enums.ErrorCodeConstants.*;
import static com.yunxi.scm.framework.test.core.util.AssertUtils.*;
import static com.yunxi.scm.framework.test.core.util.RandomUtils.*;
import static com.yunxi.scm.framework.common.util.date.LocalDateTimeUtils.*;
import static com.yunxi.scm.framework.common.util.object.ObjectUtils.*;
import static com.yunxi.scm.framework.common.util.date.DateUtils.*;
import static org.junit.jupiter.api.Assertions.*;
import static org.mockito.Mockito.*;
/**
* {@link QualityInspectionServiceImpl}
*
* @author
*/
@Import(QualityInspectionServiceImpl.class)
public class QualityInspectionServiceImplTest extends BaseDbUnitTest {
@Resource
private QualityInspectionServiceImpl qualityInspectionService;
@Resource
private QualityInspectionMapper qualityInspectionMapper;
@Test
public void testCreateQualityInspection_success() {
// 准备参数
QualityInspectionCreateReqVO reqVO = randomPojo(QualityInspectionCreateReqVO.class);
// 调用
Long qualityInspectionId = qualityInspectionService.createQualityInspection(reqVO);
// 断言
assertNotNull(qualityInspectionId);
// 校验记录的属性是否正确
QualityInspectionDO qualityInspection = qualityInspectionMapper.selectById(qualityInspectionId);
assertPojoEquals(reqVO, qualityInspection);
}
@Test
public void testUpdateQualityInspection_success() {
// mock 数据
QualityInspectionDO dbQualityInspection = randomPojo(QualityInspectionDO.class);
qualityInspectionMapper.insert(dbQualityInspection);// @Sql: 先插入出一条存在的数据
// 准备参数
QualityInspectionUpdateReqVO reqVO = randomPojo(QualityInspectionUpdateReqVO.class, o -> {
o.setId(dbQualityInspection.getId()); // 设置更新的 ID
});
// 调用
qualityInspectionService.updateQualityInspection(reqVO);
// 校验是否更新正确
QualityInspectionDO qualityInspection = qualityInspectionMapper.selectById(reqVO.getId()); // 获取最新的
assertPojoEquals(reqVO, qualityInspection);
}
@Test
public void testUpdateQualityInspection_notExists() {
// 准备参数
QualityInspectionUpdateReqVO reqVO = randomPojo(QualityInspectionUpdateReqVO.class);
// 调用, 并断言异常
assertServiceException(() -> qualityInspectionService.updateQualityInspection(reqVO), QUALITY_INSPECTION_NOT_EXISTS);
}
@Test
public void testDeleteQualityInspection_success() {
// mock 数据
QualityInspectionDO dbQualityInspection = randomPojo(QualityInspectionDO.class);
qualityInspectionMapper.insert(dbQualityInspection);// @Sql: 先插入出一条存在的数据
// 准备参数
Long id = dbQualityInspection.getId();
// 调用
qualityInspectionService.deleteQualityInspection(id);
// 校验数据不存在了
assertNull(qualityInspectionMapper.selectById(id));
}
@Test
public void testDeleteQualityInspection_notExists() {
// 准备参数
Long id = randomLongId();
// 调用, 并断言异常
assertServiceException(() -> qualityInspectionService.deleteQualityInspection(id), QUALITY_INSPECTION_NOT_EXISTS);
}
@Test
@Disabled // TODO 请修改 null 为需要的值,然后删除 @Disabled 注解
public void testGetQualityInspectionPage() {
// mock 数据
QualityInspectionDO dbQualityInspection = randomPojo(QualityInspectionDO.class, o -> { // 等会查询到
o.setPresenter(null);
o.setPresenterType(null);
o.setAssociatedTaskId(null);
o.setRelatedOrderId(null);
o.setQualityStatus(null);
o.setTeamId(null);
o.setQualityName(null);
o.setSummarize(null);
o.setPictures(null);
o.setReadOverId(null);
o.setCarbonCopyId(null);
o.setCreateTime(null);
});
qualityInspectionMapper.insert(dbQualityInspection);
// 测试 presenter 不匹配
qualityInspectionMapper.insert(cloneIgnoreId(dbQualityInspection, o -> o.setPresenter(null)));
// 测试 presenterType 不匹配
qualityInspectionMapper.insert(cloneIgnoreId(dbQualityInspection, o -> o.setPresenterType(null)));
// 测试 associatedTaskId 不匹配
qualityInspectionMapper.insert(cloneIgnoreId(dbQualityInspection, o -> o.setAssociatedTaskId(null)));
// 测试 relatedOrderId 不匹配
qualityInspectionMapper.insert(cloneIgnoreId(dbQualityInspection, o -> o.setRelatedOrderId(null)));
// 测试 qualityStatus 不匹配
qualityInspectionMapper.insert(cloneIgnoreId(dbQualityInspection, o -> o.setQualityStatus(null)));
// 测试 teamId 不匹配
qualityInspectionMapper.insert(cloneIgnoreId(dbQualityInspection, o -> o.setTeamId(null)));
// 测试 qualityName 不匹配
qualityInspectionMapper.insert(cloneIgnoreId(dbQualityInspection, o -> o.setQualityName(null)));
// 测试 summarize 不匹配
qualityInspectionMapper.insert(cloneIgnoreId(dbQualityInspection, o -> o.setSummarize(null)));
// 测试 pictures 不匹配
qualityInspectionMapper.insert(cloneIgnoreId(dbQualityInspection, o -> o.setPictures(null)));
// 测试 readOverId 不匹配
qualityInspectionMapper.insert(cloneIgnoreId(dbQualityInspection, o -> o.setReadOverId(null)));
// 测试 carbonCopyId 不匹配
qualityInspectionMapper.insert(cloneIgnoreId(dbQualityInspection, o -> o.setCarbonCopyId(null)));
// 测试 createTime 不匹配
qualityInspectionMapper.insert(cloneIgnoreId(dbQualityInspection, o -> o.setCreateTime(null)));
// 准备参数
QualityInspectionPageReqVO reqVO = new QualityInspectionPageReqVO();
reqVO.setPresenter(null);
reqVO.setPresenterType(null);
reqVO.setAssociatedTaskId(null);
reqVO.setRelatedOrderId(null);
reqVO.setQualityStatus(null);
reqVO.setTeamId(null);
reqVO.setQualityName(null);
reqVO.setSummarize(null);
reqVO.setPictures(null);
reqVO.setReadOverId(null);
reqVO.setCarbonCopyId(null);
reqVO.setCreateTime(buildBetweenTime(2023, 2, 1, 2023, 2, 28));
// 调用
PageResult<QualityInspectionDO> pageResult = qualityInspectionService.getQualityInspectionPage(reqVO);
// 断言
assertEquals(1, pageResult.getTotal());
assertEquals(1, pageResult.getList().size());
assertPojoEquals(dbQualityInspection, pageResult.getList().get(0));
}
@Test
@Disabled // TODO 请修改 null 为需要的值,然后删除 @Disabled 注解
public void testGetQualityInspectionList() {
// mock 数据
QualityInspectionDO dbQualityInspection = randomPojo(QualityInspectionDO.class, o -> { // 等会查询到
o.setPresenter(null);
o.setPresenterType(null);
o.setAssociatedTaskId(null);
o.setRelatedOrderId(null);
o.setQualityStatus(null);
o.setTeamId(null);
o.setQualityName(null);
o.setSummarize(null);
o.setPictures(null);
o.setReadOverId(null);
o.setCarbonCopyId(null);
o.setCreateTime(null);
});
qualityInspectionMapper.insert(dbQualityInspection);
// 测试 presenter 不匹配
qualityInspectionMapper.insert(cloneIgnoreId(dbQualityInspection, o -> o.setPresenter(null)));
// 测试 presenterType 不匹配
qualityInspectionMapper.insert(cloneIgnoreId(dbQualityInspection, o -> o.setPresenterType(null)));
// 测试 associatedTaskId 不匹配
qualityInspectionMapper.insert(cloneIgnoreId(dbQualityInspection, o -> o.setAssociatedTaskId(null)));
// 测试 relatedOrderId 不匹配
qualityInspectionMapper.insert(cloneIgnoreId(dbQualityInspection, o -> o.setRelatedOrderId(null)));
// 测试 qualityStatus 不匹配
qualityInspectionMapper.insert(cloneIgnoreId(dbQualityInspection, o -> o.setQualityStatus(null)));
// 测试 teamId 不匹配
qualityInspectionMapper.insert(cloneIgnoreId(dbQualityInspection, o -> o.setTeamId(null)));
// 测试 qualityName 不匹配
qualityInspectionMapper.insert(cloneIgnoreId(dbQualityInspection, o -> o.setQualityName(null)));
// 测试 summarize 不匹配
qualityInspectionMapper.insert(cloneIgnoreId(dbQualityInspection, o -> o.setSummarize(null)));
// 测试 pictures 不匹配
qualityInspectionMapper.insert(cloneIgnoreId(dbQualityInspection, o -> o.setPictures(null)));
// 测试 readOverId 不匹配
qualityInspectionMapper.insert(cloneIgnoreId(dbQualityInspection, o -> o.setReadOverId(null)));
// 测试 carbonCopyId 不匹配
qualityInspectionMapper.insert(cloneIgnoreId(dbQualityInspection, o -> o.setCarbonCopyId(null)));
// 测试 createTime 不匹配
qualityInspectionMapper.insert(cloneIgnoreId(dbQualityInspection, o -> o.setCreateTime(null)));
// 准备参数
QualityInspectionExportReqVO reqVO = new QualityInspectionExportReqVO();
reqVO.setPresenter(null);
reqVO.setPresenterType(null);
reqVO.setAssociatedTaskId(null);
reqVO.setRelatedOrderId(null);
reqVO.setQualityStatus(null);
reqVO.setTeamId(null);
reqVO.setQualityName(null);
reqVO.setSummarize(null);
reqVO.setPictures(null);
reqVO.setReadOverId(null);
reqVO.setCarbonCopyId(null);
reqVO.setCreateTime(buildBetweenTime(2023, 2, 1, 2023, 2, 28));
// 调用
List<QualityInspectionDO> list = qualityInspectionService.getQualityInspectionList(reqVO);
// 断言
assertEquals(1, list.size());
assertPojoEquals(dbQualityInspection, list.get(0));
}
}

@ -0,0 +1,54 @@
import request from '@/utils/request'
// 创建质检报告
export function createQualityInspection(data) {
return request({
url: '/xxjj/quality-inspection/create',
method: 'post',
data: data
})
}
// 更新质检报告
export function updateQualityInspection(data) {
return request({
url: '/xxjj/quality-inspection/update',
method: 'put',
data: data
})
}
// 删除质检报告
export function deleteQualityInspection(id) {
return request({
url: '/xxjj/quality-inspection/delete?id=' + id,
method: 'delete'
})
}
// 获得质检报告
export function getQualityInspection(id) {
return request({
url: '/xxjj/quality-inspection/get?id=' + id,
method: 'get'
})
}
// 获得质检报告分页
export function getQualityInspectionPage(query) {
return request({
url: '/xxjj/quality-inspection/page',
method: 'get',
params: query
})
}
// 导出质检报告 Excel
export function exportQualityInspectionExcel(query) {
return request({
url: '/xxjj/quality-inspection/export-excel',
method: 'get',
params: query,
responseType: 'blob'
})
}

@ -115,6 +115,10 @@ export const DICT_TYPE = {
SUPPLIER_TYPE: 'supplier_type', //供应商类型
SUPPLIER_NATURE1: 'supplier_nature', //供应商性质
// ============= QUALITY_INSPECTION 模块=================
PRESENTER_TYPE: 'presenter_type', //质检报告提交类型
QUALITY_STATUS: 'quality_status', //质检报告状态
}
/**

@ -0,0 +1,284 @@
<template>
<div class="app-container">
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
<el-form-item label="公告标题" prop="title">
<el-input v-model="queryParams.title" placeholder="请输入公告标题" clearable @keyup.enter.native="handleQuery"/>
</el-form-item>
<el-form-item label="公告状态" prop="status">
<el-select v-model="queryParams.status" placeholder="公告状态" clearable>
<el-option v-for="dict in statusDictDatas" :key="parseInt(dict.value)" :label="dict.label" :value="parseInt(dict.value)"/>
</el-select>
</el-form-item>
<el-form-item>
<el-button type="primary" icon="el-icon-search" @click="handleQuery"></el-button>
<el-button icon="el-icon-refresh" @click="resetQuery"></el-button>
</el-form-item>
</el-form>
<el-row :gutter="10" class="mb8">
<el-col :span="1.5">
<el-button type="primary" plain icon="el-icon-plus" size="mini" @click="handleAdd"
v-hasPermi="['system:notice:create']"s>新增</el-button>
</el-col>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
</el-row>
<el-table v-loading="loading" :data="noticeList">
<el-table-column label="序号" align="center" prop="id" width="100" />
<el-table-column label="公告标题" align="center" prop="title" :show-overflow-tooltip="true"/>
<el-table-column label="公告类型" align="center" prop="type" width="100">
<template v-slot="scope">
<dict-tag :type="DICT_TYPE.SYSTEM_NOTICE_TYPE" :value="scope.row.type"/>
</template>
</el-table-column>
<el-table-column label="状态" align="center" prop="status" width="100">
<template v-slot="scope">
<dict-tag :type="DICT_TYPE.COMMON_STATUS" :value="scope.row.status"/>
</template>
</el-table-column>
<el-table-column label="创建者" align="center" prop="createBy" width="100" />
<el-table-column label="创建时间" align="center" prop="createTime" width="100">
<template v-slot="scope">
<span>{{ parseTime(scope.row.createTime, '{y}-{m}-{d}') }}</span>
</template>
</el-table-column>
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<template v-slot="scope">
<el-button size="mini" type="text" icon="el-icon-edit" @click="handleUpdate(scope.row)"
v-hasPermi="['system:notice:update']">修改</el-button>
<el-button size="mini" type="text" icon="el-icon-delete" @click="handleDelete(scope.row)"
v-hasPermi="['system:notice:delete']">删除</el-button>
<el-button size="mini" type="text" icon="el-icon-edit" @click="handleDetail(scope.row)"
v-hasPermi="['system:notice:Detail']">详情</el-button>
</template>
</el-table-column>
</el-table>
<pagination v-show="total>0" :total="total" :page.sync="queryParams.pageNo" :limit.sync="queryParams.pageSize"
@pagination="getList"/>
<!-- 添加或修改公告对话框 -->
<el-dialog :title="title" :visible.sync="open" width="780px" append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="80px">
<el-row>
<el-col :span="12">
<el-form-item label="公告标题" prop="title">
<el-input v-model="form.title" placeholder="请输入公告标题" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="公告类型" prop="type">
<el-select v-model="form.type" placeholder="请选择">
<el-option
v-for="dict in noticeTypeDictDatas"
:key="parseInt(dict.value)"
:label="dict.label"
:value="parseInt(dict.value)"
/>
</el-select>
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="状态">
<el-radio-group v-model="form.status">
<el-radio
v-for="dict in statusDictDatas"
:key="parseInt(dict.value)"
:label="parseInt(dict.value)"
>{{dict.label}}</el-radio>
</el-radio-group>
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="内容">
<editor v-model="form.content" :min-height="192"/>
</el-form-item>
</el-col>
</el-row>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitForm"> </el-button>
<el-button @click="cancel"> </el-button>
</div>
</el-dialog>
<!-- 详情-->
<el-dialog :title="title1" :visible.sync="open" width="780px" append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="80px">
<el-row>
<el-col :span="24">
<el-form-item label="内容">
<editor v-model="form.content" :min-height="192"/>
</el-form-item>
</el-col>
</el-row>
</el-form>
<div slot="footer" class="dialog-footer">
<!-- <el-button type="primary" @click="submitForm"> </el-button>-->
<el-button @click="cancel"> </el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import { listNotice, getNotice, delNotice, addNotice, updateNotice } from "@/api/system/notice";
import Editor from '@/components/Editor';
import {CommonStatusEnum} from '@/utils/constants'
import { getDictDatas, DICT_TYPE } from '@/utils/dict'
export default {
name: "SystemNotice",
components: {
Editor
},
data() {
return {
//
loading: true,
//
showSearch: true,
//
total: 0,
//
noticeList: [],
//
title: "",
title1: "",
//
open: false,
//
queryParams: {
pageNo: 1,
pageSize: 10,
title: undefined,
title1: undefined,
status: undefined
},
//
form: {},
//
rules: {
title: [
{ required: true, message: "公告标题不能为空", trigger: "blur" }
],
type: [
{ required: true, message: "公告类型不能为空", trigger: "change" }
]
},
//
CommonStatusEnum: CommonStatusEnum,
//
noticeTypeDictDatas: getDictDatas(DICT_TYPE.SYSTEM_NOTICE_TYPE),
statusDictDatas: getDictDatas(DICT_TYPE.COMMON_STATUS)
};
},
created() {
this.getList();
},
methods: {
/** 查询公告列表 */
getList() {
this.loading = true;
listNotice(this.queryParams).then(response => {
this.noticeList = response.data.list;
this.total = response.data.total;
this.loading = false;
});
},
//
cancel() {
this.open = false;
this.reset();
},
//
reset() {
this.form = {
id: undefined,
title: undefined,
title1:undefined,
type: undefined,
content: undefined,
status: CommonStatusEnum.ENABLE
};
this.resetForm("form");
},
/** 搜索按钮操作 */
handleQuery() {
this.queryParams.pageNo = 1;
this.getList();
},
/** 重置按钮操作 */
resetQuery() {
this.resetForm("queryForm");
this.handleQuery();
},
/** 新增按钮操作 */
handleAdd() {
this.reset();
this.open = true;
this.title = "添加公告";
},
/** 修改按钮操作 */
handleUpdate(row) {
this.reset();
const id = row.id || this.ids
getNotice(id).then(response => {
this.form = response.data;
this.open = true;
this.title = "修改公告";
});
},
handleDetail(row) {
this.reset();
const id = row.id || this.ids
getNotice(id).then(response => {
this.form = response.data;
this.open = true;
this.title1 = "详情公告";
});
},
/** 提交按钮 */
submitForm: function() {
this.$refs["form"].validate(valid => {
if (valid) {
if (this.form.id !== undefined) {
updateNotice(this.form).then(response => {
this.$modal.msgSuccess("修改成功");
this.open = false;
this.getList();
});
} else {
addNotice(this.form).then(response => {
this.$modal.msgSuccess("新增成功");
this.open = false;
this.getList();
});
}
}
});
},
/** 删除按钮操作 */
handleDelete(row) {
const ids = row.id || this.ids
this.$modal.confirm('是否确认删除公告编号为"' + ids + '"的数据项?').then(function() {
return delNotice(ids);
}).then(() => {
this.getList();
this.$modal.msgSuccess("删除成功");
}).catch(() => {});
}
}
};
</script>

File diff suppressed because it is too large Load Diff

@ -0,0 +1,371 @@
<template>
<div class="app-container">
<!-- 搜索工作栏 -->
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
<el-form-item label="提交人" prop="presenter">
<el-input v-model="queryParams.presenter" placeholder="请输入提交人" clearable @keyup.enter.native="handleQuery"/>
</el-form-item>
<el-form-item label="提交类型" prop="presenterType">
<el-select v-model="queryParams.presenterType" placeholder="请选择提交类型" clearable size="small">
<el-option v-for="dict in this.getDictDatas(DICT_TYPE.PRESENTER_TYPE)"
:key="dict.value" :label="dict.label" :value="dict.value"/>
</el-select>
</el-form-item>
<el-form-item label="关联任务id" prop="associatedTaskId">
<el-input v-model="queryParams.associatedTaskId" placeholder="请输入关联任务id" clearable @keyup.enter.native="handleQuery"/>
</el-form-item>
<el-form-item label="关联订单id" prop="relatedOrderId">
<el-input v-model="queryParams.relatedOrderId" placeholder="请输入关联订单id" clearable @keyup.enter.native="handleQuery"/>
</el-form-item>
<el-form-item label="状态" prop="qualityStatus">
<el-select v-model="queryParams.qualityStatus" placeholder="请选择状态" clearable size="small">
<el-option v-for="dict in this.getDictDatas(DICT_TYPE.QUALITY_STATUS)"
:key="dict.value" :label="dict.label" :value="dict.value"/>
</el-select>
</el-form-item>
<el-form-item label="所属团队id" prop="teamId">
<el-input v-model="queryParams.teamId" placeholder="请输入所属团队id" clearable @keyup.enter.native="handleQuery"/>
</el-form-item>
<el-form-item label="质检品名" prop="qualityName">
<el-input v-model="queryParams.qualityName" placeholder="请输入质检品名" clearable @keyup.enter.native="handleQuery"/>
</el-form-item>
<el-form-item label="批阅人员id" prop="readOverId">
<el-input v-model="queryParams.readOverId" placeholder="请输入批阅人员id" clearable @keyup.enter.native="handleQuery"/>
</el-form-item>
<el-form-item label="抄送人员id" prop="carbonCopyId">
<el-input v-model="queryParams.carbonCopyId" placeholder="请输入抄送人员id" clearable @keyup.enter.native="handleQuery"/>
</el-form-item>
<el-form-item label="创建时间" prop="createTime">
<el-date-picker v-model="queryParams.createTime" style="width: 240px" value-format="yyyy-MM-dd HH:mm:ss" type="daterange"
range-separator="-" start-placeholder="开始日期" end-placeholder="结束日期" :default-time="['00:00:00', '23:59:59']" />
</el-form-item>
<el-form-item>
<el-button type="primary" icon="el-icon-search" @click="handleQuery"></el-button>
<el-button icon="el-icon-refresh" @click="resetQuery"></el-button>
</el-form-item>
</el-form>
<!-- 操作工具栏 -->
<el-row :gutter="10" class="mb8">
<el-col :span="1.5">
<el-button type="primary" plain icon="el-icon-plus" size="mini" @click="handleAdd"
v-hasPermi="['xxjj:quality-inspection:create']">新增</el-button>
</el-col>
<el-col :span="1.5">
<el-button type="warning" plain icon="el-icon-download" size="mini" @click="handleExport" :loading="exportLoading"
v-hasPermi="['xxjj:quality-inspection:export']">导出</el-button>
</el-col>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList" :columns="columns"></right-toolbar>
</el-row>
<!-- 列表 -->
<el-table v-loading="loading" :data="list" @selection-change="handleSelectionChange" sortable border custom-column stripe>
<el-table-column type="selection" width="55"align=center ></el-table-column>
<el-table-column label="编号" align="center" sortable prop="id" v-if="columns[0].visible" />
<!-- <el-table-column label="提交人" align="center" prop="presenter" v-if="columns[1].visible" />-->
<el-table-column label="提交人" align="center" v-if="columns[8].visible">
<template v-slot="scope">
<span v-for="userId in scope.row.presenter">
{{ getUserNickname(userId) }}
</span>
</template>
</el-table-column>
<el-table-column label="提交类型" align="center" prop="presenterType" v-if="columns[2].visible">
<template v-slot="scope">
<dict-tag :type="DICT_TYPE.PRESENTER_TYPE" :value="scope.row.presenterType" />
</template>
</el-table-column>
<el-table-column label="关联任务id" align="center" prop="associatedTaskId" v-if="columns[3].visible" />
<el-table-column label="关联订单id" align="center" prop="relatedOrderId" v-if="columns[4].visible" />
<el-table-column label="状态" align="center" sortable prop="qualityStatus" v-if="columns[5].visible" >
<template v-slot="scope">
<dict-tag :type="DICT_TYPE.QUALITY_STATUS" :value="scope.row.qualityStatus" />
</template>
</el-table-column>
<!-- <el-table-column label="所属团队id" align="center" prop="teamId" v-if="columns[6].visible" />-->
<!-- <el-table-column label="质检品名" align="center" prop="qualityName" v-if="columns[7].visible" />-->
<!-- <el-table-column label="总结" align="center" prop="summarize" v-if="columns[8].visible" />-->
<!-- <el-table-column label="附件图片" align="center" prop="pictures" v-if="columns[9].visible" />-->
<!-- <el-table-column label="批阅人员id" align="center" prop="readOverId" v-if="columns[10].visible" />-->
<!-- <el-table-column label="抄送人员id" align="center" prop="carbonCopyId" v-if="columns[11].visible" />-->
<el-table-column label="创建时间" align="center" prop="createTime" width="180" v-if="columns[12].visible">
<template v-slot="scope">
<span>{{ parseTime(scope.row.createTime) }}</span>
</template>
</el-table-column>
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<template v-slot="scope">
<el-button size="mini" type="text" icon="el-icon-edit" @click="handleUpdate(scope.row)"
v-hasPermi="['xxjj:quality-inspection:update']">修改</el-button>
<el-button size="mini" type="text" icon="el-icon-delete" @click="handleDelete(scope.row)"
v-hasPermi="['xxjj:quality-inspection:delete']">删除</el-button>
</template>
</el-table-column>
</el-table>
<!-- 分页组件 -->
<pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNo" :limit.sync="queryParams.pageSize"
@pagination="getList"/>
<!-- 对话框(添加 / 修改) -->
<el-dialog :title="title" :visible.sync="open" width="900px" v-dialogDrag append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="80px">
<!-- <el-form-item label="提交人" prop="presenter">-->
<!-- <el-input v-model="form.presenter" placeholder="请输入提交人" />-->
<!-- </el-form-item>-->
<el-form-item label="提交人" prop="presenter">
<el-select v-model="form.presenter" multiple placeholder="请选择提交人">
<el-option v-for="user in users" :key="parseInt(user.id)" :label="user.nickname" :value="parseInt(user.id)"/>
</el-select>
</el-form-item>
<el-form-item label="提交类型" prop="presenterType">
<el-select v-model="form.presenterType" placeholder="请选择提交类型">
<el-option v-for="dict in this.getDictDatas(DICT_TYPE.PRESENTER_TYPE)"
:key="dict.value" :label="dict.label" :value="dict.value" />
</el-select>
</el-form-item>
<el-form-item label="关联任务id" prop="associatedTaskId">
<el-input v-model="form.associatedTaskId" placeholder="请输入关联任务id" />
</el-form-item>
<el-form-item label="关联订单id" prop="relatedOrderId">
<el-input v-model="form.relatedOrderId" placeholder="请输入关联订单id" />
</el-form-item>
<el-form-item label="状态" prop="qualityStatus">
<el-select v-model="form.qualityStatus" placeholder="请选择状态">
<el-option v-for="dict in this.getDictDatas(DICT_TYPE.QUALITY_STATUS)"
:key="dict.value" :label="dict.label" :value="dict.value" />
</el-select>
</el-form-item>
<el-form-item label="所属团队id" prop="teamId">
<el-input v-model="form.teamId" placeholder="请输入所属团队id" />
</el-form-item>
<el-form-item label="质检品名" prop="qualityName">
<el-input v-model="form.qualityName" placeholder="请输入质检品名" />
</el-form-item>
<el-form-item label="总结">
<editor v-model="form.summarize" :min-height="192"/>
</el-form-item>
<el-form-item label="附件图片">
<fileUpload v-model="form.pictures"/>
</el-form-item>
<el-form-item label="批阅人员id" prop="readOverId">
<el-input v-model="form.readOverId" placeholder="请输入批阅人员id" />
</el-form-item>
<el-form-item label="抄送人员id" prop="carbonCopyId">
<el-input v-model="form.carbonCopyId" placeholder="请输入抄送人员id" />
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitForm"> </el-button>
<el-button @click="cancel"> </el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import { createQualityInspection, updateQualityInspection, deleteQualityInspection, getQualityInspection, getQualityInspectionPage, exportQualityInspectionExcel } from "@/api/xxjj/qualityInspection";
import FileUpload from '@/components/FileUpload';
import Editor from '@/components/Editor';
import { listSimpleUsers } from "@/api/system/user";
export default {
name: "QualityInspection",
components: {
FileUpload,
Editor,
},
data() {
return {
//
loading: true,
//
exportLoading: false,
//
showSearch: true,
//
total: 0,
//
list: [],
//
title: "",
//
open: false,
users: [],
//
queryParams: {
pageNo: 1,
pageSize: 10,
presenter: null,
presenterType: null,
associatedTaskId: null,
relatedOrderId: null,
qualityStatus: null,
teamId: null,
qualityName: null,
summarize: null,
pictures: null,
readOverId: null,
carbonCopyId: null,
createTime: [],
},
//
form: {},
//
rules: {
qualityStatus: [{ required: true, message: "状态不能为空", trigger: "change" }],
},
//
columns: [
{ key: 0, label: `编号`, visible: true },
{ key: 1, label: `提交人`, visible: true },
{ key: 2, label: `提交类型`, visible: true },
{ key: 3, label: `关联任务id`, visible: true },
{ key: 4, label: `关联订单id`, visible: true },
{ key: 5, label: `状态`, visible: true },
// { key: 6, label: `id`, visible: true },
// { key: 7, label: ``, visible: true },
// { key: 8, label: ``, visible: true },
// { key: 9, label: ``, visible: true },
// { key: 10, label: `id`, visible: true },
// { key: 11, label: `id`, visible: true },
{ key: 12, label: `创建时间`, visible: true },
],
};
},
created() {
this.getList();
//
listSimpleUsers().then(response => {
this.users = response.data;
})
},
methods: {
//id
getUserNickname(userId) {
for (const user of this.users) {
if (user.id === userId) {
return user.nickname;
}
}
return '未知(' + userId + ')';
},
/** 查询列表 */
getList() {
this.loading = true;
//
getQualityInspectionPage(this.queryParams).then(response => {
this.list = response.data.list;
this.total = response.data.total;
this.loading = false;
});
},
/** 取消按钮 */
cancel() {
this.open = false;
this.reset();
},
/** 表单重置 */
reset() {
this.form = {
id: undefined,
presenter: undefined,
presenterType: undefined,
associatedTaskId: undefined,
relatedOrderId: undefined,
qualityStatus: undefined,
teamId: undefined,
qualityName: undefined,
summarize: undefined,
pictures: undefined,
readOverId: undefined,
carbonCopyId: undefined,
};
this.resetForm("form");
},
/** 搜索按钮操作 */
handleQuery() {
this.queryParams.pageNo = 1;
this.getList();
},
/** 重置按钮操作 */
resetQuery() {
this.resetForm("queryForm");
this.handleQuery();
},
/** 新增按钮操作 */
handleAdd() {
this.reset();
this.open = true;
this.title = "添加质检报告";
},
/** 修改按钮操作 */
handleUpdate(row) {
this.reset();
const id = row.id;
getQualityInspection(id).then(response => {
this.form = response.data;
this.open = true;
this.title = "修改质检报告";
});
},
/** 提交按钮 */
submitForm() {
this.$refs["form"].validate(valid => {
if (!valid) {
return;
}
//
if (this.form.id != null) {
updateQualityInspection(this.form).then(response => {
this.$modal.msgSuccess("修改成功");
this.open = false;
this.getList();
});
return;
}
//
createQualityInspection(this.form).then(response => {
this.$modal.msgSuccess("新增成功");
this.open = false;
this.getList();
});
});
},
/** 删除按钮操作 */
handleDelete(row) {
const id = row.id;
this.$modal.confirm('是否确认删除质检报告编号为"' + id + '"的数据项?').then(function() {
return deleteQualityInspection(id);
}).then(() => {
this.getList();
this.$modal.msgSuccess("删除成功");
}).catch(() => {});
},
/** 导出按钮操作 */
handleExport() {
//
let params = {...this.queryParams};
params.pageNo = undefined;
params.pageSize = undefined;
this.$modal.confirm('是否确认导出所有质检报告数据项?').then(() => {
this.exportLoading = true;
return exportQualityInspectionExcel(params);
}).then(response => {
this.$download.excel(response, '质检报告.xls');
this.exportLoading = false;
}).catch(() => {});
}
}
};
</script>
Loading…
Cancel
Save