diff --git a/quotation-admin/src/main/java/net/ferrum/web/controller/business/QsSupplierController.java b/quotation-admin/src/main/java/net/ferrum/web/controller/business/QsSupplierController.java new file mode 100644 index 0000000..9bcd011 --- /dev/null +++ b/quotation-admin/src/main/java/net/ferrum/web/controller/business/QsSupplierController.java @@ -0,0 +1,109 @@ +package net.ferrum.web.controller.business; + +import cn.dev33.satoken.annotation.SaCheckPermission; +import lombok.RequiredArgsConstructor; +import net.ferrum.business.domain.bo.QsSupplierBo; +import net.ferrum.business.domain.vo.QsSupplierVo; +import net.ferrum.business.service.IQsSupplierService; +import net.ferrum.common.annotation.Log; +import net.ferrum.common.annotation.RepeatSubmit; +import net.ferrum.common.core.controller.BaseController; +import net.ferrum.common.core.domain.PageQuery; +import net.ferrum.common.core.domain.R; +import net.ferrum.common.core.page.TableDataInfo; +import net.ferrum.common.core.validate.AddGroup; +import net.ferrum.common.core.validate.EditGroup; +import net.ferrum.common.enums.BusinessType; +import net.ferrum.common.utils.poi.ExcelUtil; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import javax.servlet.http.HttpServletResponse; +import javax.validation.constraints.NotEmpty; +import javax.validation.constraints.NotNull; +import java.util.Arrays; +import java.util.List; + +/** + * 供应商信息 + * + * @author ferrum + * @version 1.0.0 + * @since 2025-03-05 + */ +@Validated +@RequiredArgsConstructor +@RestController +@RequestMapping("/business/supplier") +public class QsSupplierController extends BaseController { + + private final IQsSupplierService iQsSupplierService; + + /** + * 查询供应商信息列表 + */ + @SaCheckPermission("business:supplier:list") + @GetMapping("/list") + public TableDataInfo list(QsSupplierBo bo, PageQuery pageQuery) { + return iQsSupplierService.queryPageList(bo, pageQuery); + } + + /** + * 导出供应商信息列表 + */ + @SaCheckPermission("business:supplier:export") + @Log(title = "供应商信息", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(QsSupplierBo bo, HttpServletResponse response) { + List list = iQsSupplierService.queryList(bo); + ExcelUtil.exportExcel(list, "供应商信息", QsSupplierVo.class, response); + } + + /** + * 获取供应商信息详细信息 + * + * @param supplierId 主键 + */ + @SaCheckPermission("business:supplier:query") + @GetMapping("/{supplierId}") + public R getInfo(@NotNull(message = "主键不能为空") + @PathVariable Long supplierId) { + return R.ok(iQsSupplierService.queryById(supplierId)); + } + + /** + * 新增供应商信息 + */ + @SaCheckPermission("business:supplier:add") + @Log(title = "供应商信息", businessType = BusinessType.INSERT) + @RepeatSubmit() + @PostMapping() + public R add(@Validated(AddGroup.class) @RequestBody QsSupplierBo bo) { + return toAjax(iQsSupplierService.insertByBo(bo)); + } + + /** + * 修改供应商信息 + */ + @SaCheckPermission("business:supplier:edit") + @Log(title = "供应商信息", businessType = BusinessType.UPDATE) + @RepeatSubmit() + @PutMapping() + public R edit(@Validated(EditGroup.class) @RequestBody QsSupplierBo bo) { + return toAjax(iQsSupplierService.updateByBo(bo)); + } + + /** + * 删除供应商信息 + * + * @param supplierIds 主键串 + */ + @SaCheckPermission("business:supplier:remove") + @Log(title = "供应商信息", businessType = BusinessType.DELETE) + @DeleteMapping("/{supplierIds}") + public R remove(@NotEmpty(message = "主键不能为空") + @PathVariable Long[] supplierIds) { + return toAjax(iQsSupplierService.deleteWithValidByIds(Arrays.asList(supplierIds), true)); + } + +} diff --git a/quotation-admin/src/main/resources/application-dev.yml b/quotation-admin/src/main/resources/application-dev.yml index 57485c3..cca2ca2 100644 --- a/quotation-admin/src/main/resources/application-dev.yml +++ b/quotation-admin/src/main/resources/application-dev.yml @@ -50,7 +50,8 @@ spring: # jdbc 所有参数配置参考 https://lionli.blog.csdn.net/article/details/122018562 # rewriteBatchedStatements=true 批处理优化 大幅提升批量插入更新删除性能(对数据库有性能损耗 使用批量操作应考虑性能问题) # url: jdbc:mysql://localhost:3306/ry_flowable_plus?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&autoReconnect=true&rewriteBatchedStatements=true&nullCatalogMeansCurrent=true - url: jdbc:mysql://192.168.137.20:3306/ry_flowable_plus?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&autoReconnect=true&rewriteBatchedStatements=true&nullCatalogMeansCurrent=true + # url: jdbc:mysql://192.168.137.20:3306/ry_flowable_plus?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&autoReconnect=true&rewriteBatchedStatements=true&nullCatalogMeansCurrent=true + url: jdbc:mysql://10.168.1.206:3306/ry_flowable_plus?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&autoReconnect=true&rewriteBatchedStatements=true&nullCatalogMeansCurrent=true username: remote password: Tieth@121308 # 从库数据源 @@ -59,7 +60,8 @@ spring: type: ${spring.datasource.type} driverClassName: com.mysql.cj.jdbc.Driver # url: jdbc:mysql://localhost:3306/ry-ry_flowable_plus-plus?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&autoReconnect=true&rewriteBatchedStatements=true&nullCatalogMeansCurrent=true - url: jdbc:mysql://192.168.137.20:3306/ry-ry_flowable_plus-plus?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&autoReconnect=true&rewriteBatchedStatements=true&nullCatalogMeansCurrent=true + # url: jdbc:mysql://192.168.137.20:3306/ry-ry_flowable_plus-plus?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&autoReconnect=true&rewriteBatchedStatements=true&nullCatalogMeansCurrent=true + url: jdbc:mysql://10.168.1.206:3306/ry-ry_flowable_plus-plus?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&autoReconnect=true&rewriteBatchedStatements=true&nullCatalogMeansCurrent=true username: remote password: Tieth@121308 # oracle: @@ -104,7 +106,8 @@ spring: spring: redis: # 地址 - host: 192.168.137.20 + # host: 192.168.137.20 + host: 10.168.1.206 # 端口,默认为6379 port: 6379 # 数据库索引 diff --git a/quotation-common/src/main/java/net/ferrum/common/constant/BusinessConstants.java b/quotation-common/src/main/java/net/ferrum/common/constant/BusinessConstants.java new file mode 100644 index 0000000..b747b75 --- /dev/null +++ b/quotation-common/src/main/java/net/ferrum/common/constant/BusinessConstants.java @@ -0,0 +1,17 @@ +package net.ferrum.common.constant; + +/** + * 业务常量 + * + * @author 26554 + * @version 1.0.0 + * @since 2025/3/3 + */ +public interface BusinessConstants { + + /** + * 发布模板通知标题 + */ + String NOTICE_TITLE = "新的模板已经通过审批,请尽快申领!"; + +} diff --git a/quotation-common/src/main/java/net/ferrum/common/enums/NoticeType.java b/quotation-common/src/main/java/net/ferrum/common/enums/NoticeType.java new file mode 100644 index 0000000..d503e8a --- /dev/null +++ b/quotation-common/src/main/java/net/ferrum/common/enums/NoticeType.java @@ -0,0 +1,24 @@ +package net.ferrum.common.enums; + +import lombok.AllArgsConstructor; +import lombok.Getter; + +/** + * 通知类型 + * + * @author 26554 + * @version 1.0.0 + * @since 2025/3/3 + */ +@Getter +@AllArgsConstructor +public enum NoticeType { + + NOTICE("1", "通知"), + ANNOUNCEMENT("2", "公告"), + DESIGN_PUBLISH("3", "规格设计发布"), + ; + private final String type; + private final String info; + +} diff --git a/quotation-common/src/main/java/net/ferrum/common/enums/UserStatus.java b/quotation-common/src/main/java/net/ferrum/common/enums/UserStatus.java index 57cab59..7997415 100644 --- a/quotation-common/src/main/java/net/ferrum/common/enums/UserStatus.java +++ b/quotation-common/src/main/java/net/ferrum/common/enums/UserStatus.java @@ -6,7 +6,9 @@ package net.ferrum.common.enums; * @author ruoyi */ public enum UserStatus { - OK("0", "正常"), DISABLE("1", "停用"), DELETED("2", "删除"); + OK("0", "正常"), + DISABLE("1", "停用"), + DELETED("2", "删除"); private final String code; private final String info; diff --git a/quotation-generator/src/main/resources/mapper/generator/GenTableColumnMapper.xml b/quotation-generator/src/main/resources/mapper/generator/GenTableColumnMapper.xml index d61c0f1..59367a8 100644 --- a/quotation-generator/src/main/resources/mapper/generator/GenTableColumnMapper.xml +++ b/quotation-generator/src/main/resources/mapper/generator/GenTableColumnMapper.xml @@ -2,9 +2,9 @@ - + - + diff --git a/quotation-generator/src/main/resources/mapper/generator/GenTableMapper.xml b/quotation-generator/src/main/resources/mapper/generator/GenTableMapper.xml index fb222bf..6fc15b8 100644 --- a/quotation-generator/src/main/resources/mapper/generator/GenTableMapper.xml +++ b/quotation-generator/src/main/resources/mapper/generator/GenTableMapper.xml @@ -2,9 +2,9 @@ - + - + @@ -28,7 +28,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" - + diff --git a/quotation-system/src/main/java/net/ferrum/business/domain/QsOperatorRecord.java b/quotation-system/src/main/java/net/ferrum/business/domain/QsOperatorRecord.java new file mode 100644 index 0000000..426267e --- /dev/null +++ b/quotation-system/src/main/java/net/ferrum/business/domain/QsOperatorRecord.java @@ -0,0 +1,40 @@ +package net.ferrum.business.domain; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; +import lombok.EqualsAndHashCode; +import net.ferrum.common.core.domain.BaseEntity; + +/** + * 操作员操作记录对象 qs_operator_record + * + * @author 26554 + * @date 2025-04-21 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@TableName("qs_operator_record") +public class QsOperatorRecord extends BaseEntity { + + private static final long serialVersionUID=1L; + + /** + * 记录Id + */ + @TableId(value = "id") + private Long id; + /** + * 操作员Id + */ + private Long operatorId; + /** + * 操作类型 + */ + private Integer operation; + /** + * 对应样品模板 + */ + private Long projectId; + +} diff --git a/quotation-system/src/main/java/net/ferrum/business/domain/QsProject.java b/quotation-system/src/main/java/net/ferrum/business/domain/QsProject.java new file mode 100644 index 0000000..d04d6da --- /dev/null +++ b/quotation-system/src/main/java/net/ferrum/business/domain/QsProject.java @@ -0,0 +1,56 @@ +package net.ferrum.business.domain; + +import com.baomidou.mybatisplus.annotation.*; +import lombok.Data; +import lombok.EqualsAndHashCode; +import java.io.Serializable; +import java.util.Date; +import java.math.BigDecimal; + +import net.ferrum.common.core.domain.BaseEntity; + +/** + * 模板信息对象 qs_project + * + * @author 26554 + * @date 2025-04-21 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@TableName("qs_project") +public class QsProject extends BaseEntity { + + private static final long serialVersionUID=1L; + + /** + * 模板Id + */ + @TableId(value = "id") + private Long id; + /** + * 模板信息 + */ + private String projectInfo; + /** + * 对接人Id + */ + private Long dockerUserId; + /** + * 是否采用 + */ + private String adoptFlag; + /** + * 设计生产数量 + */ + private Integer designAmount; + /** + * 备注 + */ + private String remark; + /** + * 逻辑删除标志 + */ + @TableLogic + private String delFlag; + +} diff --git a/quotation-system/src/main/java/net/ferrum/business/domain/QsSupplier.java b/quotation-system/src/main/java/net/ferrum/business/domain/QsSupplier.java new file mode 100644 index 0000000..e120a5d --- /dev/null +++ b/quotation-system/src/main/java/net/ferrum/business/domain/QsSupplier.java @@ -0,0 +1,55 @@ +package net.ferrum.business.domain; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableLogic; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; +import lombok.EqualsAndHashCode; +import net.ferrum.common.core.domain.BaseEntity; + +/** + * 供应商信息对象 qs_supplier + * + * @author 26554 + * @version 1.0.0 + * @since 2025/3/5 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@TableName("qs_supplier") +public class QsSupplier extends BaseEntity { + + private static final long serialVersionUID=1L; + + /** + * 供应商Id + */ + @TableId(value = "supplier_id") + private Long supplierId; + /** + * 供应商名称 + */ + private String supplierName; + /** + * 供应商地址 + */ + private String supplierAddress; + /** + * 供应商联系人 + */ + private String supplierContact; + /** + * 供应商联系方式 + */ + private String supplierContactNum; + /** + * 备注 + */ + private String remark; + /** + * 逻辑删除标志 + */ + @TableLogic + private String delFlag; + +} diff --git a/quotation-system/src/main/java/net/ferrum/business/domain/QsUserSupplier.java b/quotation-system/src/main/java/net/ferrum/business/domain/QsUserSupplier.java new file mode 100644 index 0000000..6bb6671 --- /dev/null +++ b/quotation-system/src/main/java/net/ferrum/business/domain/QsUserSupplier.java @@ -0,0 +1,34 @@ +package net.ferrum.business.domain; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * 用户-供应商关系表 + * + * @author 26554 + * @version 1.0.0 + * @since 2025-03-05 + */ +@Data +@TableName("qs_user_supplier") +@NoArgsConstructor +@AllArgsConstructor +public class QsUserSupplier { + + /** + * 用户主键 + */ + @TableField + private Long userId; + + /** + * 供应商主键 + */ + @TableField + private Long supplierId; + +} diff --git a/quotation-system/src/main/java/net/ferrum/business/domain/bo/QsOperatorRecordBo.java b/quotation-system/src/main/java/net/ferrum/business/domain/bo/QsOperatorRecordBo.java new file mode 100644 index 0000000..f8584f3 --- /dev/null +++ b/quotation-system/src/main/java/net/ferrum/business/domain/bo/QsOperatorRecordBo.java @@ -0,0 +1,49 @@ +package net.ferrum.business.domain.bo; + +import net.ferrum.common.core.validate.AddGroup; +import net.ferrum.common.core.validate.EditGroup; +import lombok.Data; +import lombok.EqualsAndHashCode; +import javax.validation.constraints.*; + +import java.util.Date; + +import net.ferrum.common.core.domain.BaseEntity; + +/** + * 操作员操作记录业务对象 qs_operator_record + * + * @author 26554 + * @date 2025-04-21 + */ + +@Data +@EqualsAndHashCode(callSuper = true) +public class QsOperatorRecordBo extends BaseEntity { + + /** + * 记录Id + */ + @NotNull(message = "记录Id不能为空", groups = { EditGroup.class }) + private Long id; + + /** + * 操作员Id + */ + @NotNull(message = "操作员Id不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long operatorId; + + /** + * 操作类型 + */ + @NotNull(message = "操作类型不能为空", groups = { AddGroup.class, EditGroup.class }) + private Integer operation; + + /** + * 对应样品模板 + */ + @NotNull(message = "对应样品模板不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long projectId; + + +} diff --git a/quotation-system/src/main/java/net/ferrum/business/domain/bo/QsProjectBo.java b/quotation-system/src/main/java/net/ferrum/business/domain/bo/QsProjectBo.java new file mode 100644 index 0000000..57b3893 --- /dev/null +++ b/quotation-system/src/main/java/net/ferrum/business/domain/bo/QsProjectBo.java @@ -0,0 +1,59 @@ +package net.ferrum.business.domain.bo; + +import net.ferrum.common.core.validate.AddGroup; +import net.ferrum.common.core.validate.EditGroup; +import lombok.Data; +import lombok.EqualsAndHashCode; +import javax.validation.constraints.*; + +import java.util.Date; + +import net.ferrum.common.core.domain.BaseEntity; + +/** + * 模板信息业务对象 qs_project + * + * @author 26554 + * @date 2025-04-21 + */ + +@Data +@EqualsAndHashCode(callSuper = true) +public class QsProjectBo extends BaseEntity { + + /** + * 模板Id + */ + @NotNull(message = "模板Id不能为空", groups = { EditGroup.class }) + private Long id; + + /** + * 模板信息 + */ + private String projectInfo; + + /** + * 对接人Id + */ + @NotNull(message = "对接人Id不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long dockerUserId; + + /** + * 是否采用 + */ + @NotBlank(message = "是否采用不能为空", groups = { AddGroup.class, EditGroup.class }) + private String adoptFlag; + + /** + * 设计生产数量 + */ + @NotNull(message = "设计生产数量不能为空", groups = { AddGroup.class, EditGroup.class }) + private Integer designAmount; + + /** + * 备注 + */ + private String remark; + + +} diff --git a/quotation-system/src/main/java/net/ferrum/business/domain/bo/QsSupplierBo.java b/quotation-system/src/main/java/net/ferrum/business/domain/bo/QsSupplierBo.java new file mode 100644 index 0000000..0be50d4 --- /dev/null +++ b/quotation-system/src/main/java/net/ferrum/business/domain/bo/QsSupplierBo.java @@ -0,0 +1,61 @@ +package net.ferrum.business.domain.bo; + +import lombok.Data; +import lombok.EqualsAndHashCode; +import net.ferrum.common.core.domain.BaseEntity; +import net.ferrum.common.core.validate.AddGroup; +import net.ferrum.common.core.validate.EditGroup; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; + +/** + * 供应商信息业务对象 qs_supplier + * + * @author ferrum + * @version 1.0.0 + * @since 2025/3/5 + */ + +@Data +@EqualsAndHashCode(callSuper = true) +public class QsSupplierBo extends BaseEntity { + + /** + * 供应商Id + */ + @NotNull(message = "供应商Id不能为空", groups = { EditGroup.class }) + private Long supplierId; + + /** + * 供应商名称 + */ + @NotBlank(message = "供应商名称不能为空", groups = { AddGroup.class, EditGroup.class }) + private String supplierName; + + /** + * 供应商地址 + */ + //@NotBlank(message = "供应商地址不能为空", groups = { AddGroup.class, EditGroup.class }) + private String supplierAddress; + + /** + * 供应商联系人 + */ + //@NotBlank(message = "供应商联系人不能为空", groups = { AddGroup.class, EditGroup.class }) + private String supplierContact; + + /** + * 供应商联系方式 + */ + //@NotBlank(message = "供应商联系方式不能为空", groups = { AddGroup.class, EditGroup.class }) + private String supplierContactNum; + + /** + * 备注 + */ + //@NotBlank(message = "备注不能为空", groups = { AddGroup.class, EditGroup.class }) + private String remark; + + +} diff --git a/quotation-system/src/main/java/net/ferrum/business/domain/vo/QsOperatorRecordVo.java b/quotation-system/src/main/java/net/ferrum/business/domain/vo/QsOperatorRecordVo.java new file mode 100644 index 0000000..2876f02 --- /dev/null +++ b/quotation-system/src/main/java/net/ferrum/business/domain/vo/QsOperatorRecordVo.java @@ -0,0 +1,49 @@ +package net.ferrum.business.domain.vo; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import net.ferrum.common.annotation.ExcelDictFormat; +import net.ferrum.common.convert.ExcelDictConvert; +import lombok.Data; +import java.util.Date; + + + +/** + * 操作员操作记录视图对象 qs_operator_record + * + * @author 26554 + * @date 2025-04-21 + */ +@Data +@ExcelIgnoreUnannotated +public class QsOperatorRecordVo { + + private static final long serialVersionUID = 1L; + + /** + * 记录Id + */ + @ExcelProperty(value = "记录Id") + private Long id; + + /** + * 操作员Id + */ + @ExcelProperty(value = "操作员Id") + private Long operatorId; + + /** + * 操作类型 + */ + @ExcelProperty(value = "操作类型") + private Integer operation; + + /** + * 对应样品模板 + */ + @ExcelProperty(value = "对应样品模板") + private Long projectId; + + +} diff --git a/quotation-system/src/main/java/net/ferrum/business/domain/vo/QsProjectVo.java b/quotation-system/src/main/java/net/ferrum/business/domain/vo/QsProjectVo.java new file mode 100644 index 0000000..4113b44 --- /dev/null +++ b/quotation-system/src/main/java/net/ferrum/business/domain/vo/QsProjectVo.java @@ -0,0 +1,61 @@ +package net.ferrum.business.domain.vo; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import net.ferrum.common.annotation.ExcelDictFormat; +import net.ferrum.common.convert.ExcelDictConvert; +import lombok.Data; +import java.util.Date; + + + +/** + * 模板信息视图对象 qs_project + * + * @author 26554 + * @date 2025-04-21 + */ +@Data +@ExcelIgnoreUnannotated +public class QsProjectVo { + + private static final long serialVersionUID = 1L; + + /** + * 模板Id + */ + @ExcelProperty(value = "模板Id") + private Long id; + + /** + * 模板信息 + */ + @ExcelProperty(value = "模板信息") + private String projectInfo; + + /** + * 对接人Id + */ + @ExcelProperty(value = "对接人Id") + private Long dockerUserId; + + /** + * 是否采用 + */ + @ExcelProperty(value = "是否采用") + private String adoptFlag; + + /** + * 设计生产数量 + */ + @ExcelProperty(value = "设计生产数量") + private Integer designAmount; + + /** + * 备注 + */ + @ExcelProperty(value = "备注") + private String remark; + + +} diff --git a/quotation-system/src/main/java/net/ferrum/business/domain/vo/QsSupplierVo.java b/quotation-system/src/main/java/net/ferrum/business/domain/vo/QsSupplierVo.java new file mode 100644 index 0000000..809826e --- /dev/null +++ b/quotation-system/src/main/java/net/ferrum/business/domain/vo/QsSupplierVo.java @@ -0,0 +1,64 @@ +package net.ferrum.business.domain.vo; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import lombok.Data; +import net.ferrum.system.domain.vo.SysUserBasicInfoVo; + +import java.io.Serializable; +import java.util.List; + +/** + * 供应商信息视图对象 qs_supplier + * + * @author ferrum + * @version 1.0.0 + * @since 2025/3/5 + */ +@Data +@ExcelIgnoreUnannotated +public class QsSupplierVo implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 供应商Id + */ + @ExcelProperty(value = "供应商Id") + private Long supplierId; + + /** + * 供应商名称 + */ + @ExcelProperty(value = "供应商名称") + private String supplierName; + + /** + * 供应商地址 + */ + @ExcelProperty(value = "供应商地址") + private String supplierAddress; + + /** + * 供应商联系人 + */ + @ExcelProperty(value = "供应商联系人") + private String supplierContact; + + /** + * 供应商联系方式 + */ + @ExcelProperty(value = "供应商联系方式") + private String supplierContactNum; + + /** + * 备注 + */ + @ExcelProperty(value = "备注") + private String remark; + + /** + * 对接人 + */ + private List dockerUsers; +} diff --git a/quotation-system/src/main/java/net/ferrum/business/mapper/QsOperatorRecordMapper.java b/quotation-system/src/main/java/net/ferrum/business/mapper/QsOperatorRecordMapper.java new file mode 100644 index 0000000..b43403d --- /dev/null +++ b/quotation-system/src/main/java/net/ferrum/business/mapper/QsOperatorRecordMapper.java @@ -0,0 +1,15 @@ +package net.ferrum.business.mapper; + +import net.ferrum.business.domain.QsOperatorRecord; +import net.ferrum.business.domain.vo.QsOperatorRecordVo; +import net.ferrum.common.core.mapper.BaseMapperPlus; + +/** + * 操作员操作记录Mapper接口 + * + * @author 26554 + * @date 2025-04-21 + */ +public interface QsOperatorRecordMapper extends BaseMapperPlus { + +} diff --git a/quotation-system/src/main/java/net/ferrum/business/mapper/QsProjectMapper.java b/quotation-system/src/main/java/net/ferrum/business/mapper/QsProjectMapper.java new file mode 100644 index 0000000..8cc8ed5 --- /dev/null +++ b/quotation-system/src/main/java/net/ferrum/business/mapper/QsProjectMapper.java @@ -0,0 +1,15 @@ +package net.ferrum.business.mapper; + +import net.ferrum.business.domain.QsProject; +import net.ferrum.business.domain.vo.QsProjectVo; +import net.ferrum.common.core.mapper.BaseMapperPlus; + +/** + * 模板信息Mapper接口 + * + * @author 26554 + * @date 2025-04-21 + */ +public interface QsProjectMapper extends BaseMapperPlus { + +} diff --git a/quotation-system/src/main/java/net/ferrum/business/mapper/QsSupplierMapper.java b/quotation-system/src/main/java/net/ferrum/business/mapper/QsSupplierMapper.java new file mode 100644 index 0000000..db13219 --- /dev/null +++ b/quotation-system/src/main/java/net/ferrum/business/mapper/QsSupplierMapper.java @@ -0,0 +1,16 @@ +package net.ferrum.business.mapper; + +import net.ferrum.business.domain.QsSupplier; +import net.ferrum.business.domain.vo.QsSupplierVo; +import net.ferrum.common.core.mapper.BaseMapperPlus; + +/** + * 供应商信息Mapper接口 + * + * @author ferrum + * @version 1.0.0 + * @since 2025-03-05 + */ +public interface QsSupplierMapper extends BaseMapperPlus { + +} diff --git a/quotation-system/src/main/java/net/ferrum/business/mapper/QsUserSupplierMapper.java b/quotation-system/src/main/java/net/ferrum/business/mapper/QsUserSupplierMapper.java new file mode 100644 index 0000000..fb43685 --- /dev/null +++ b/quotation-system/src/main/java/net/ferrum/business/mapper/QsUserSupplierMapper.java @@ -0,0 +1,14 @@ +package net.ferrum.business.mapper; + +import net.ferrum.business.domain.QsUserSupplier; +import net.ferrum.common.core.mapper.BaseMapperPlus; + +/** + * 用户-供应商关联表 数据层 + * + * @author 26554 + * @version 1.0.0 + * @since 2025-03-05 + */ +public interface QsUserSupplierMapper extends BaseMapperPlus { +} diff --git a/quotation-system/src/main/java/net/ferrum/business/service/IQsOperatorRecordService.java b/quotation-system/src/main/java/net/ferrum/business/service/IQsOperatorRecordService.java new file mode 100644 index 0000000..c0275a2 --- /dev/null +++ b/quotation-system/src/main/java/net/ferrum/business/service/IQsOperatorRecordService.java @@ -0,0 +1,48 @@ +package net.ferrum.business.service; + +import net.ferrum.business.domain.bo.QsOperatorRecordBo; +import net.ferrum.business.domain.vo.QsOperatorRecordVo; +import net.ferrum.common.core.domain.PageQuery; +import net.ferrum.common.core.page.TableDataInfo; + +import java.util.Collection; +import java.util.List; + +/** + * 操作员操作记录Service接口 + * + * @author 26554 + * @date 2025-04-21 + */ +public interface IQsOperatorRecordService { + + /** + * 查询操作员操作记录 + */ + QsOperatorRecordVo queryById(Long id); + + /** + * 查询操作员操作记录列表 + */ + TableDataInfo queryPageList(QsOperatorRecordBo bo, PageQuery pageQuery); + + /** + * 查询操作员操作记录列表 + */ + List queryList(QsOperatorRecordBo bo); + + /** + * 新增操作员操作记录 + */ + Boolean insertByBo(QsOperatorRecordBo bo); + + /** + * 修改操作员操作记录 + */ + Boolean updateByBo(QsOperatorRecordBo bo); + + /** + * 校验并批量删除操作员操作记录信息 + */ + Boolean deleteWithValidByIds(Collection ids, Boolean isValid); +} diff --git a/quotation-system/src/main/java/net/ferrum/business/service/IQsProjectService.java b/quotation-system/src/main/java/net/ferrum/business/service/IQsProjectService.java new file mode 100644 index 0000000..22813f6 --- /dev/null +++ b/quotation-system/src/main/java/net/ferrum/business/service/IQsProjectService.java @@ -0,0 +1,48 @@ +package net.ferrum.business.service; + +import net.ferrum.business.domain.bo.QsProjectBo; +import net.ferrum.business.domain.vo.QsProjectVo; +import net.ferrum.common.core.domain.PageQuery; +import net.ferrum.common.core.page.TableDataInfo; + +import java.util.Collection; +import java.util.List; + +/** + * 模板信息Service接口 + * + * @author 26554 + * @date 2025-04-21 + */ +public interface IQsProjectService { + + /** + * 查询模板信息 + */ + QsProjectVo queryById(Long id); + + /** + * 查询模板信息列表 + */ + TableDataInfo queryPageList(QsProjectBo bo, PageQuery pageQuery); + + /** + * 查询模板信息列表 + */ + List queryList(QsProjectBo bo); + + /** + * 新增模板信息 + */ + Boolean insertByBo(QsProjectBo bo); + + /** + * 修改模板信息 + */ + Boolean updateByBo(QsProjectBo bo); + + /** + * 校验并批量删除模板信息信息 + */ + Boolean deleteWithValidByIds(Collection ids, Boolean isValid); +} diff --git a/quotation-system/src/main/java/net/ferrum/business/service/IQsSupplierService.java b/quotation-system/src/main/java/net/ferrum/business/service/IQsSupplierService.java new file mode 100644 index 0000000..f11ed9d --- /dev/null +++ b/quotation-system/src/main/java/net/ferrum/business/service/IQsSupplierService.java @@ -0,0 +1,59 @@ +package net.ferrum.business.service; + +import net.ferrum.business.domain.bo.QsSupplierBo; +import net.ferrum.business.domain.vo.QsSupplierVo; +import net.ferrum.common.core.domain.PageQuery; +import net.ferrum.common.core.page.TableDataInfo; + +import java.util.Collection; +import java.util.List; + +/** + * 供应商信息Service接口 + * + * @author ferrum + * @version 1.0.0 + * @since 2025-03-05 + */ +public interface IQsSupplierService { + + /** + * 查询供应商信息 + */ + QsSupplierVo queryById(Long supplierId); + + /** + * 查询供应商信息列表 + */ + TableDataInfo queryPageList(QsSupplierBo bo, PageQuery pageQuery); + + /** + * 查询供应商信息列表 + */ + List queryList(QsSupplierBo bo); + + /** + * 新增供应商信息 + */ + Boolean insertByBo(QsSupplierBo bo); + + /** + * 修改供应商信息 + */ + Boolean updateByBo(QsSupplierBo bo); + + /** + * 校验并批量删除供应商信息信息 + */ + Boolean deleteWithValidByIds(Collection ids, Boolean isValid); + + /** + * 申领供应商 + */ + Boolean claimSuppliers(Collection supplierIds, Long userId); + + /** + * 分配供应商 + */ + Boolean resignSuppliers(Collection userIds, Long supplierId); +} diff --git a/quotation-system/src/main/java/net/ferrum/business/service/impl/QsOperatorRecordServiceImpl.java b/quotation-system/src/main/java/net/ferrum/business/service/impl/QsOperatorRecordServiceImpl.java new file mode 100644 index 0000000..ddcffa0 --- /dev/null +++ b/quotation-system/src/main/java/net/ferrum/business/service/impl/QsOperatorRecordServiceImpl.java @@ -0,0 +1,110 @@ +package net.ferrum.business.service.impl; + +import cn.hutool.core.bean.BeanUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import lombok.RequiredArgsConstructor; +import net.ferrum.business.domain.QsOperatorRecord; +import net.ferrum.business.domain.bo.QsOperatorRecordBo; +import net.ferrum.business.domain.vo.QsOperatorRecordVo; +import net.ferrum.business.mapper.QsOperatorRecordMapper; +import net.ferrum.business.service.IQsOperatorRecordService; +import net.ferrum.common.core.domain.PageQuery; +import net.ferrum.common.core.page.TableDataInfo; +import org.springframework.stereotype.Service; + +import java.util.Collection; +import java.util.List; +import java.util.Map; + +/** + * 操作员操作记录Service业务层处理 + * + * @author 26554 + * @date 2025-04-21 + */ +@RequiredArgsConstructor +@Service +public class QsOperatorRecordServiceImpl implements IQsOperatorRecordService { + + private final QsOperatorRecordMapper baseMapper; + + /** + * 查询操作员操作记录 + */ + @Override + public QsOperatorRecordVo queryById(Long id){ + return baseMapper.selectVoById(id); + } + + /** + * 查询操作员操作记录列表 + */ + @Override + public TableDataInfo queryPageList(QsOperatorRecordBo bo, PageQuery pageQuery) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + Page result = baseMapper.selectVoPage(pageQuery.build(), lqw); + return TableDataInfo.build(result); + } + + /** + * 查询操作员操作记录列表 + */ + @Override + public List queryList(QsOperatorRecordBo bo) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + return baseMapper.selectVoList(lqw); + } + + private LambdaQueryWrapper buildQueryWrapper(QsOperatorRecordBo bo) { + Map params = bo.getParams(); + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.like(bo.getOperatorId() != null, QsOperatorRecord::getOperatorId, bo.getOperatorId()); + lqw.eq(bo.getOperation() != null, QsOperatorRecord::getOperation, bo.getOperation()); + lqw.like(bo.getProjectId() != null, QsOperatorRecord::getProjectId, bo.getProjectId()); + return lqw; + } + + /** + * 新增操作员操作记录 + */ + @Override + public Boolean insertByBo(QsOperatorRecordBo bo) { + QsOperatorRecord add = BeanUtil.toBean(bo, QsOperatorRecord.class); + validEntityBeforeSave(add); + boolean flag = baseMapper.insert(add) > 0; + if (flag) { + bo.setId(add.getId()); + } + return flag; + } + + /** + * 修改操作员操作记录 + */ + @Override + public Boolean updateByBo(QsOperatorRecordBo bo) { + QsOperatorRecord update = BeanUtil.toBean(bo, QsOperatorRecord.class); + validEntityBeforeSave(update); + return baseMapper.updateById(update) > 0; + } + + /** + * 保存前的数据校验 + */ + private void validEntityBeforeSave(QsOperatorRecord entity){ + //TODO 做一些数据校验,如唯一约束 + } + + /** + * 批量删除操作员操作记录 + */ + @Override + public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) { + if(isValid){ + //TODO 做一些业务上的校验,判断是否需要校验 + } + return baseMapper.deleteBatchIds(ids) > 0; + } +} diff --git a/quotation-system/src/main/java/net/ferrum/business/service/impl/QsProjectServiceImpl.java b/quotation-system/src/main/java/net/ferrum/business/service/impl/QsProjectServiceImpl.java new file mode 100644 index 0000000..7cef123 --- /dev/null +++ b/quotation-system/src/main/java/net/ferrum/business/service/impl/QsProjectServiceImpl.java @@ -0,0 +1,112 @@ +package net.ferrum.business.service.impl; + +import cn.hutool.core.bean.BeanUtil; +import net.ferrum.common.utils.StringUtils; +import net.ferrum.common.core.page.TableDataInfo; +import net.ferrum.common.core.domain.PageQuery; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import net.ferrum.business.domain.bo.QsProjectBo; +import net.ferrum.business.domain.vo.QsProjectVo; +import net.ferrum.business.domain.QsProject; +import net.ferrum.business.mapper.QsProjectMapper; +import net.ferrum.business.service.IQsProjectService; + +import java.util.List; +import java.util.Map; +import java.util.Collection; + +/** + * 模板信息Service业务层处理 + * + * @author 26554 + * @date 2025-04-21 + */ +@RequiredArgsConstructor +@Service +public class QsProjectServiceImpl implements IQsProjectService { + + private final QsProjectMapper baseMapper; + + /** + * 查询模板信息 + */ + @Override + public QsProjectVo queryById(Long id){ + return baseMapper.selectVoById(id); + } + + /** + * 查询模板信息列表 + */ + @Override + public TableDataInfo queryPageList(QsProjectBo bo, PageQuery pageQuery) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + Page result = baseMapper.selectVoPage(pageQuery.build(), lqw); + return TableDataInfo.build(result); + } + + /** + * 查询模板信息列表 + */ + @Override + public List queryList(QsProjectBo bo) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + return baseMapper.selectVoList(lqw); + } + + private LambdaQueryWrapper buildQueryWrapper(QsProjectBo bo) { + Map params = bo.getParams(); + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.like(bo.getDockerUserId() != null, QsProject::getDockerUserId, bo.getDockerUserId()); + lqw.eq(StringUtils.isNotBlank(bo.getAdoptFlag()), QsProject::getAdoptFlag, bo.getAdoptFlag()); + lqw.between(params.get("beginDesignAmount") != null && params.get("endDesignAmount") != null, + QsProject::getDesignAmount ,params.get("beginDesignAmount"), params.get("endDesignAmount")); + return lqw; + } + + /** + * 新增模板信息 + */ + @Override + public Boolean insertByBo(QsProjectBo bo) { + QsProject add = BeanUtil.toBean(bo, QsProject.class); + validEntityBeforeSave(add); + boolean flag = baseMapper.insert(add) > 0; + if (flag) { + bo.setId(add.getId()); + } + return flag; + } + + /** + * 修改模板信息 + */ + @Override + public Boolean updateByBo(QsProjectBo bo) { + QsProject update = BeanUtil.toBean(bo, QsProject.class); + validEntityBeforeSave(update); + return baseMapper.updateById(update) > 0; + } + + /** + * 保存前的数据校验 + */ + private void validEntityBeforeSave(QsProject entity){ + //TODO 做一些数据校验,如唯一约束 + } + + /** + * 批量删除模板信息 + */ + @Override + public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) { + if(isValid){ + //TODO 做一些业务上的校验,判断是否需要校验 + } + return baseMapper.deleteBatchIds(ids) > 0; + } +} diff --git a/quotation-system/src/main/java/net/ferrum/business/service/impl/QsSupplierServiceImpl.java b/quotation-system/src/main/java/net/ferrum/business/service/impl/QsSupplierServiceImpl.java new file mode 100644 index 0000000..40572b0 --- /dev/null +++ b/quotation-system/src/main/java/net/ferrum/business/service/impl/QsSupplierServiceImpl.java @@ -0,0 +1,157 @@ +package net.ferrum.business.service.impl; + +import cn.hutool.core.bean.BeanUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import net.ferrum.business.domain.QsSupplier; +import net.ferrum.business.domain.QsUserSupplier; +import net.ferrum.business.domain.bo.QsSupplierBo; +import net.ferrum.business.domain.vo.QsSupplierVo; +import net.ferrum.business.mapper.QsSupplierMapper; +import net.ferrum.business.mapper.QsUserSupplierMapper; +import net.ferrum.business.service.IQsSupplierService; +import net.ferrum.common.core.domain.PageQuery; +import net.ferrum.common.core.page.TableDataInfo; +import net.ferrum.common.utils.StringUtils; +import net.ferrum.system.domain.vo.SysUserBasicInfoVo; +import net.ferrum.system.mapper.SysUserMapper; +import org.springframework.stereotype.Service; +import org.springframework.util.CollectionUtils; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.List; +import java.util.Map; + +/** + * 供应商信息Service业务层处理 + * + * @author ferrum + * @version 1.0.0 + * @since 2025-03-05 + */ +@Slf4j +@Service +@RequiredArgsConstructor +public class QsSupplierServiceImpl implements IQsSupplierService { + + private final QsSupplierMapper supplierMapper; + private final QsUserSupplierMapper userSupplierMapper; + private final SysUserMapper userMapper; + + /** + * 查询供应商信息 + */ + @Override + public QsSupplierVo queryById(Long supplierId){ + QsSupplierVo result = supplierMapper.selectVoById(supplierId); + List relations = userSupplierMapper.selectList(new LambdaQueryWrapper().eq(QsUserSupplier::getSupplierId, supplierId)); + List userInfos = new ArrayList<>(); + if (!CollectionUtils.isEmpty(relations)) { + relations.forEach(relation -> { + userInfos.add(userMapper.selectUserBasicInfoById(relation.getUserId())); + }); + } + result.setDockerUsers(userInfos); + return result; + } + + /** + * 查询供应商信息列表 + */ + @Override + public TableDataInfo queryPageList(QsSupplierBo bo, PageQuery pageQuery) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + Page result = supplierMapper.selectVoPage(pageQuery.build(), lqw); + return TableDataInfo.build(result); + } + + /** + * 查询供应商信息列表 + */ + @Override + public List queryList(QsSupplierBo bo) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + return supplierMapper.selectVoList(lqw); + } + + private LambdaQueryWrapper buildQueryWrapper(QsSupplierBo bo) { + Map params = bo.getParams(); + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.like(StringUtils.isNotBlank(bo.getSupplierName()), QsSupplier::getSupplierName, bo.getSupplierName()); + lqw.like(StringUtils.isNotBlank(bo.getSupplierAddress()), QsSupplier::getSupplierAddress, bo.getSupplierAddress()); + lqw.like(StringUtils.isNotBlank(bo.getSupplierContact()), QsSupplier::getSupplierContact, bo.getSupplierContact()); + lqw.like(StringUtils.isNotBlank(bo.getSupplierContactNum()), QsSupplier::getSupplierContactNum, bo.getSupplierContactNum()); + return lqw; + } + + /** + * 新增供应商信息 + */ + @Override + public Boolean insertByBo(QsSupplierBo bo) { + QsSupplier add = BeanUtil.toBean(bo, QsSupplier.class); + validEntityBeforeSave(add); + boolean flag = supplierMapper.insert(add) > 0; + if (flag) { + bo.setSupplierId(add.getSupplierId()); + } + return flag; + } + + /** + * 修改供应商信息 + */ + @Override + public Boolean updateByBo(QsSupplierBo bo) { + QsSupplier update = BeanUtil.toBean(bo, QsSupplier.class); + validEntityBeforeSave(update); + return supplierMapper.updateById(update) > 0; + } + + /** + * 保存前的数据校验 + */ + private void validEntityBeforeSave(QsSupplier entity){ + //TODO 做一些数据校验,如唯一约束 + } + + /** + * 批量删除供应商信息 + */ + @Override + public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) { + if(isValid){ + //TODO 做一些业务上的校验,判断是否需要校验 + } + return supplierMapper.deleteBatchIds(ids) > 0; + } + + /** + * 申领供应商 + * + * @param supplierIds 供应商主键集合 + * @param userId 当前登录用户Id + * @return 是否成功申领 + */ + @Override + public Boolean claimSuppliers(Collection supplierIds, Long userId) { + List relations = new ArrayList<>(0); + supplierIds.forEach(id -> { + relations.add(new QsUserSupplier(userId, id)); + }); + return userSupplierMapper.insertBatch(relations); + } + + @Override + public Boolean resignSuppliers(Collection userIds, Long supplierId) { + List relations = new ArrayList<>(0); + userIds.forEach(id -> { + relations.add(new QsUserSupplier(id, supplierId)); + }); + return userSupplierMapper.insertBatch(relations); + } +} diff --git a/quotation-system/src/main/java/net/ferrum/system/domain/SysNotice.java b/quotation-system/src/main/java/net/ferrum/system/domain/SysNotice.java index 96a1ed5..e7e1304 100644 --- a/quotation-system/src/main/java/net/ferrum/system/domain/SysNotice.java +++ b/quotation-system/src/main/java/net/ferrum/system/domain/SysNotice.java @@ -1,5 +1,6 @@ package net.ferrum.system.domain; +import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import net.ferrum.common.core.domain.BaseEntity; @@ -21,10 +22,11 @@ import javax.validation.constraints.Size; @TableName("sys_notice") public class SysNotice extends BaseEntity { + private static final long serialVersionUID = 6332813813221195765L; /** * 公告ID */ - @TableId(value = "notice_id") + @TableId(value = "notice_id", type = IdType.AUTO) private Long noticeId; /** diff --git a/quotation-system/src/main/java/net/ferrum/system/domain/vo/SysUserBasicInfoVo.java b/quotation-system/src/main/java/net/ferrum/system/domain/vo/SysUserBasicInfoVo.java new file mode 100644 index 0000000..b7f9598 --- /dev/null +++ b/quotation-system/src/main/java/net/ferrum/system/domain/vo/SysUserBasicInfoVo.java @@ -0,0 +1,38 @@ +package net.ferrum.system.domain.vo; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; + +/** + * 用户基础信息 + * + * @author 26554 + * @version 1.0.0 + * @since 2025-03-18 + */ +@Data +@AllArgsConstructor +@NoArgsConstructor +public class SysUserBasicInfoVo implements Serializable { + private static final long serialVersionUID = -5272592280264695130L; + + /** + * 用户Id + */ + private Long userId; + + /** + * 用户账号 + */ + private String userName; + + /** + * 用户昵称 + */ + private String nickName; + + +} diff --git a/quotation-system/src/main/java/net/ferrum/system/mapper/SysUserMapper.java b/quotation-system/src/main/java/net/ferrum/system/mapper/SysUserMapper.java index aa1345e..638fdd1 100644 --- a/quotation-system/src/main/java/net/ferrum/system/mapper/SysUserMapper.java +++ b/quotation-system/src/main/java/net/ferrum/system/mapper/SysUserMapper.java @@ -7,6 +7,7 @@ import net.ferrum.common.annotation.DataColumn; import net.ferrum.common.annotation.DataPermission; import net.ferrum.common.core.domain.entity.SysUser; import net.ferrum.common.core.mapper.BaseMapperPlus; +import net.ferrum.system.domain.vo.SysUserBasicInfoVo; import org.apache.ibatis.annotations.Param; import java.util.List; @@ -92,4 +93,10 @@ public interface SysUserMapper extends BaseMapperPlus taskList = taskQuery.list(); - taskList.forEach(task -> { - Field[] fields = task.getClass().getDeclaredFields(); - for (Field field : fields) { - field.setAccessible(true); - try { - log.info("属性[{}]值为:{}", field.getName(), field.get(task)); - } catch (IllegalAccessException e) { - throw new RuntimeException(e); - } - } - }); + WfDetailVo wfDetailVo = processService.queryProcessDetail(delegateExecution.getProcessInstanceId(), delegateExecution.getId()); + SysNotice notice = new SysNotice(); + notice.setNoticeTitle(BusinessConstants.NOTICE_TITLE); + notice.setNoticeType(NoticeType.DESIGN_PUBLISH.getType()); + notice.setNoticeContent(JsonUtils.toJsonString(wfDetailVo.getProcessFormList())); + log.info("插入通知内容:{}", notice); + noticeService.insertNotice(notice); } diff --git a/quotation-system/src/main/java/net/ferrum/workflow/listener/VariablePublishListener.java b/quotation-system/src/main/java/net/ferrum/workflow/listener/VariablePublishListener.java new file mode 100644 index 0000000..5e0dfbf --- /dev/null +++ b/quotation-system/src/main/java/net/ferrum/workflow/listener/VariablePublishListener.java @@ -0,0 +1,65 @@ +package net.ferrum.workflow.listener; + +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import net.ferrum.common.exception.ServiceException; +import net.ferrum.flowable.utils.TaskUtils; +import org.flowable.engine.TaskService; +import org.flowable.engine.delegate.DelegateExecution; +import org.flowable.engine.delegate.ExecutionListener; +import org.flowable.task.api.Task; +import org.flowable.task.api.TaskQuery; +import org.springframework.stereotype.Component; + +import java.lang.reflect.Field; + +/** + * 流程节点携带参数记录监听类 + * + * @author 26554 + * @version 1.0.0 + * @since 2025/2/26 + */ + +@Slf4j +@Component("variablePublishListener") +@RequiredArgsConstructor +public class VariablePublishListener implements ExecutionListener { + + private final TaskService taskService; + + @Override + public void notify(DelegateExecution delegateExecution) { + TaskQuery taskQuery = taskService.createTaskQuery() + .active() + .includeProcessVariables() + .includeCaseVariables() + .includeTaskLocalVariables() + .taskCandidateOrAssigned(TaskUtils.getUserId()) + .taskCandidateGroupIn(TaskUtils.getCandidateGroup()) + .processDefinitionId(delegateExecution.getProcessDefinitionId()) + .orderByTaskCreateTime().desc(); + Task task = taskQuery.singleResult(); + if (task == null) { + throw new ServiceException("任务没找到"); + } + Field[] fields = delegateExecution.getClass().getDeclaredFields(); + for (Field field : fields) { + field.setAccessible(true); + try { + log.info("delegateExecution当前[{}]属性值为[{}]", field.getName(), field.get(delegateExecution)); + } catch (IllegalAccessException e) { + throw new RuntimeException(e); + } + } + Field[] fields1 = task.getClass().getDeclaredFields(); + for (Field field : fields1) { + field.setAccessible(true); + try { + log.info("task当前[{}]属性值为[{}]", field.getName(), field.get(task)); + } catch (IllegalAccessException e) { + throw new RuntimeException(e); + } + } + } +} diff --git a/quotation-system/src/main/resources/mapper/business/QsOperatorRecordMapper.xml b/quotation-system/src/main/resources/mapper/business/QsOperatorRecordMapper.xml new file mode 100644 index 0000000..12b14b7 --- /dev/null +++ b/quotation-system/src/main/resources/mapper/business/QsOperatorRecordMapper.xml @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + diff --git a/quotation-system/src/main/resources/mapper/business/QsProjectMapper.xml b/quotation-system/src/main/resources/mapper/business/QsProjectMapper.xml new file mode 100644 index 0000000..47a992e --- /dev/null +++ b/quotation-system/src/main/resources/mapper/business/QsProjectMapper.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/quotation-system/src/main/resources/mapper/business/QsSupplierMapper.xml b/quotation-system/src/main/resources/mapper/business/QsSupplierMapper.xml new file mode 100644 index 0000000..6c04153 --- /dev/null +++ b/quotation-system/src/main/resources/mapper/business/QsSupplierMapper.xml @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + diff --git a/quotation-system/src/main/resources/mapper/business/QsUserSupplierMapper.xml b/quotation-system/src/main/resources/mapper/business/QsUserSupplierMapper.xml new file mode 100644 index 0000000..d54bb65 --- /dev/null +++ b/quotation-system/src/main/resources/mapper/business/QsUserSupplierMapper.xml @@ -0,0 +1,12 @@ + + + + + + + + + + diff --git a/quotation-system/src/main/resources/mapper/system/SysUserMapper.xml b/quotation-system/src/main/resources/mapper/system/SysUserMapper.xml index da26e6f..ec74bd1 100644 --- a/quotation-system/src/main/resources/mapper/system/SysUserMapper.xml +++ b/quotation-system/src/main/resources/mapper/system/SysUserMapper.xml @@ -1,7 +1,7 @@ + PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> @@ -24,11 +24,11 @@ - + - + @@ -38,7 +38,7 @@ - + @@ -47,74 +47,89 @@ + + + + + + - select u.user_id, - u.dept_id, - u.user_name, - u.nick_name, - u.user_type, - u.email, - u.avatar, - u.phonenumber, - u.password, - u.sex, - u.status, - u.del_flag, - u.login_ip, - u.login_date, - u.create_by, - u.create_time, - u.remark, - d.dept_id, - d.parent_id, - d.ancestors, - d.dept_name, - d.order_num, - d.leader, - d.status as dept_status, - r.role_id, - r.role_name, - r.role_key, - r.role_sort, - r.data_scope, - r.status as role_status + select + u.user_id, + u.dept_id, + u.user_name, + u.nick_name, + u.user_type, + u.email, + u.avatar, + u.phonenumber, + u.password, + u.sex, + u.status, + u.del_flag, + u.login_ip, + u.login_date, + u.create_by, + u.create_time, + u.remark, + d.dept_id, + d.parent_id, + d.ancestors, + d.dept_name, + d.order_num, + d.leader, + d.status as dept_status, + r.role_id, + r.role_name, + r.role_key, + r.role_sort, + r.data_scope, + r.status as role_status + from sys_user u + left join sys_dept d on u.dept_id = d.dept_id + left join sys_user_role sur on u.user_id = sur.user_id + left join sys_role r on r.role_id = sur.role_id + + + + select + u.user_id, + u.user_name, + u.nick_name from sys_user u - left join sys_dept d on u.dept_id = d.dept_id - left join sys_user_role sur on u.user_id = sur.user_id - left join sys_role r on r.role_id = sur.role_id @@ -138,5 +153,10 @@ where u.del_flag = '0' and u.user_id = #{userId} + + diff --git a/script/sql/mysql/quotation_system.sql b/script/sql/mysql/quotation_system.sql new file mode 100644 index 0000000..c5a67e5 --- /dev/null +++ b/script/sql/mysql/quotation_system.sql @@ -0,0 +1,42 @@ +use ry_flowable_plus; +create table if not exists `qs_supplier` ( + `supplier_id` bigint NOT NULL COMMENT '供应商Id', + `supplier_name` varchar(100) COLLATE utf8mb4_bin NOT NULL COMMENT '供应商名称', + `supplier_address` varchar(1024) COLLATE utf8mb4_bin DEFAULT NULL COMMENT '供应商地址', + `supplier_contact` varchar(30) COLLATE utf8mb4_bin DEFAULT NULL COMMENT '供应商联系人', + `supplier_contact_num` varchar(50) COLLATE utf8mb4_bin DEFAULT NULL COMMENT '供应商联系方式', + `create_by` varchar(64) COLLATE utf8mb4_bin DEFAULT '' COMMENT '创建人', + `create_time` datetime DEFAULT NULL COMMENT '创建时间', + `update_by` varchar(64) COLLATE utf8mb4_bin DEFAULT '' COMMENT '更新人', + `update_time` datetime DEFAULT NULL COMMENT '更新时间', + `remark` varchar(500) COLLATE utf8mb4_bin DEFAULT NULL COMMENT '备注', + `del_flag` char(1) COLLATE utf8mb4_bin NOT NULL DEFAULT '0' COMMENT '逻辑删除标志', + PRIMARY KEY (`supplier_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin COMMENT='供应商信息'; +create table if not exists `qs_user_supplier` ( + `user_id` bigint NOT NULL COMMENT '用户主键', + `supplier_id` bigint NOT NULL COMMENT '供应商主键', + PRIMARY KEY (`user_id`,`supplier_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin COMMENT='用户-供应商关联表'; +create table if not exists qs_project( + id bigint not null comment '模板Id', + project_info longblob comment '模板信息', + docker_user_id bigint not null comment '对接人Id', + adopt_flag char(1) not null default '0' comment '是否采用', + design_amount int not null default 0 comment '设计生产数量', + create_by varchar(64) comment '创建人', + create_time datetime comment '创建时间', + update_by varchar(64) coment '更新人', + update_time datetime comment '更新时间', + remark varchar(500) comment '备注', + del_flag char(1) not null default '0' comment '逻辑删除标志', + primary key (id) +) comment '模板信息'; +create table if not exists qs_operator_record( + id bigint not null comment '记录Id', + operator_id bigint not null comment '操作员Id', + operation tinyint not null comment '操作类型', + project_id bigint not null comment '对应样品模板', + create_time datetime not null comment '记录时间', + primary key (id) +) comment '操作员操作记录'; \ No newline at end of file