Forráskód Böngészése

供应商管理配合联调完成

wany 1 éve
szülő
commit
710d2f74fe
24 módosított fájl, 1479 hozzáadás és 3 törlés
  1. 2 0
      .gitignore
  2. 2 2
      src/main/java/com/kingtom/shengtai/SRMApplication.java
  3. 24 0
      src/main/java/com/kingtom/shengtai/api/SrmConst.java
  4. 129 0
      src/main/java/com/kingtom/shengtai/api/controller/SrmCooperateController.java
  5. 132 0
      src/main/java/com/kingtom/shengtai/api/controller/SrmSupplierController.java
  6. 91 0
      src/main/java/com/kingtom/shengtai/api/mapper/SrmMapper.java
  7. 78 0
      src/main/java/com/kingtom/shengtai/api/model/SrmCooperateDTO.java
  8. 98 0
      src/main/java/com/kingtom/shengtai/api/model/SrmSupplierDTO.java
  9. 14 0
      src/main/java/com/kingtom/shengtai/app/srm/dao/ISrmCooperateDao.java
  10. 14 0
      src/main/java/com/kingtom/shengtai/app/srm/dao/ISrmSupplierDao.java
  11. 86 0
      src/main/java/com/kingtom/shengtai/app/srm/model/SrmCooperate.java
  12. 27 0
      src/main/java/com/kingtom/shengtai/app/srm/model/SrmCooperateDO.java
  13. 117 0
      src/main/java/com/kingtom/shengtai/app/srm/model/SrmSupplier.java
  14. 30 0
      src/main/java/com/kingtom/shengtai/app/srm/model/SrmSupplierDO.java
  15. 93 0
      src/main/java/com/kingtom/shengtai/app/srm/model/table/SrmCooperateTableDef.java
  16. 125 0
      src/main/java/com/kingtom/shengtai/app/srm/model/table/SrmSupplierTableDef.java
  17. 30 0
      src/main/java/com/kingtom/shengtai/app/srm/service/ISrmCooperateService.java
  18. 31 0
      src/main/java/com/kingtom/shengtai/app/srm/service/ISrmSupplierService.java
  19. 139 0
      src/main/java/com/kingtom/shengtai/app/srm/service/impl/SrmCooperateServiceImpl.java
  20. 142 0
      src/main/java/com/kingtom/shengtai/app/srm/service/impl/SrmSupplierServiceImpl.java
  21. 1 1
      src/main/resources/application-common.yml
  22. 1 0
      src/main/resources/application-dev-conf.yml
  23. 1 0
      src/main/resources/application-local-conf.yml
  24. 72 0
      src/main/resources/db/V2.01__20231221_initsrm.sql

+ 2 - 0
.gitignore

@@ -0,0 +1,2 @@
+/target/
+/.idea/

+ 2 - 2
src/main/java/com/kingtom/shengtai/RSMApplication.java → src/main/java/com/kingtom/shengtai/SRMApplication.java

@@ -19,10 +19,10 @@ import org.springframework.web.servlet.config.annotation.EnableWebMvc;
 @EnableWebMvc
 @ComponentScan({"com.kingtom.shengtai", "com.kingtom.kirin"})
 @MapperScan({"com.kingtom.kirin.app.*.dao", "com.kingtom.shengtai.app.*.dao"})
-public class RSMApplication{
+public class SRMApplication{
 
     public static void main(String[] args){
-        SpringApplication.run(RSMApplication.class, args);
+        SpringApplication.run(SRMApplication.class, args);
     }
 
 }

+ 24 - 0
src/main/java/com/kingtom/shengtai/api/SrmConst.java

@@ -0,0 +1,24 @@
+package com.kingtom.shengtai.api;
+
+/**
+ * 应用模块名称</p>
+ * 代码描述</p>
+ * Copyright: Copyright (C) 2023 , Inc. All rights reserved. <p>
+ * Company: 成都诚唐科技有限责任公司</p>
+ *
+ * @author wany
+ * @since 2023/12/21
+ */
+public final class SrmConst{
+
+    /**
+     * 产品类型字典
+     */
+    public static final String DDIC_PRODUCT_TYPE = "productType";
+
+    /**
+     * 供应商状态字典
+     */
+    public static final String DDIC_SUPPLIER_STATE = "supplierState";
+
+}

+ 129 - 0
src/main/java/com/kingtom/shengtai/api/controller/SrmCooperateController.java

@@ -0,0 +1,129 @@
+package com.kingtom.shengtai.api.controller;
+
+import java.util.List;
+import java.util.Map;
+
+import com.kingtom.kirin.app.auth.base.AuthInit;
+import com.kingtom.kirin.app.auth.base.Role;
+import com.kingtom.kirin.core.common.base.PageInfo;
+import com.kingtom.kirin.core.common.base.Result;
+import com.kingtom.kirin.core.common.utils.CollectionUtils;
+import com.kingtom.kirin.core.common.utils.JsonUtils;
+import com.kingtom.shengtai.api.mapper.SrmMapper;
+import com.kingtom.shengtai.api.model.SrmCooperateDTO;
+import com.kingtom.shengtai.app.srm.model.SrmCooperate;
+import com.kingtom.shengtai.app.srm.model.SrmCooperateDO;
+import com.kingtom.shengtai.app.srm.service.ISrmCooperateService;
+import com.mybatisflex.core.paginate.Page;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.enums.ParameterIn;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+/**
+ * 供应商合作记录表 控制层。
+ *
+ * @author 86181
+ * @since 2023-12-21
+ */
+@Tag(name = "SrmCooperateController", description = "供应商合作记录表 控制层。")
+@RestController
+@RequestMapping("/srmCooperates")
+@AuthInit(menus = {},
+        roles = {@Role(name = "业务管理员", code = "businessAdmin"), @Role(name = "供应商", code = "supplier")})
+public class SrmCooperateController{
+
+    @Autowired
+    private ISrmCooperateService iSrmCooperateService;
+
+    /**
+     * 添加 供应商合作记录表。
+     *
+     * @param dto 供应商合作记录表
+     * @return {@code true} 添加成功,{@code false} 添加失败
+     */
+    @Operation(summary = "添加 供应商合作记录表。", description = "添加 供应商合作记录表。")
+    @PostMapping("/")
+    public Result<SrmCooperateDTO> save(@RequestBody SrmCooperateDTO dto){
+        SrmCooperate convert = SrmMapper.INSTANCE.convert(dto);
+        SrmCooperateDO srmCooperateDO = iSrmCooperateService.create(convert);
+        return Result.ok(SrmCooperateDTO.convert(srmCooperateDO));
+    }
+
+    /**
+     * 根据主键删除 供应商合作记录表。
+     *
+     * @param id 主键
+     * @return {@code true} 删除成功,{@code false} 删除失败
+     */
+    @Parameter(name = "id", description = "主键", in = ParameterIn.PATH, required = true)
+    @Operation(summary = "根据主键删除 供应商合作记录表。", description = "根据主键删除 供应商合作记录表。")
+    @PostMapping("/{id}/")
+    public Result<String> remove(@PathVariable String id){
+        iSrmCooperateService.deleteById(id);
+        return Result.ok(null);
+    }
+
+    /**
+     * 根据主键批量删除供应商信息表。
+     *
+     * @param ids 主键
+     * @return {@code true} 删除成功,{@code false} 删除失败
+     */
+    @Operation(summary = "根据主键批量删除供应商信息表。", description = "根据主键批量删除供应商信息表。")
+    @PostMapping("/remove_batch")
+    public Result<String> remove(@RequestBody List<String> ids){
+        iSrmCooperateService.deleteByIds(ids);
+        return Result.ok(null);
+    }
+
+    /**
+     * 根据主键更新 供应商合作记录表。
+     *
+     * @param dto 供应商合作记录表
+     * @return {@code true} 更新成功,{@code false} 更新失败
+     */
+    @Operation(summary = "根据主键更新 供应商合作记录表。", description = "根据主键更新 供应商合作记录表。")
+    @PostMapping("/{id}/info")
+    public Result<SrmCooperateDTO> update(@RequestBody SrmCooperateDTO dto){
+        SrmCooperate convert = SrmMapper.INSTANCE.convert(dto);
+        SrmCooperateDO srmCooperateDO = iSrmCooperateService.update(convert);
+        return Result.ok(SrmCooperateDTO.convert(srmCooperateDO));
+    }
+
+    /**
+     * 根据 供应商合作记录表主键获取详细信息。
+     *
+     * @param id 供应商合作记录表主键
+     * @return 供应商合作记录表详情
+     */
+    @Parameter(name = "id", description = "供应商合作记录表主键", in = ParameterIn.PATH, required = true)
+    @Operation(summary = "根据 供应商合作记录表主键获取详细信息。",
+            description = "根据 供应商合作记录表主键获取详细信息。")
+    @GetMapping("/{id}/info")
+    public Result<SrmCooperateDTO> getInfo(@PathVariable String id){
+        SrmCooperateDO srmCooperateDO = iSrmCooperateService.findById(id);
+        return Result.ok(SrmCooperateDTO.convert(srmCooperateDO));
+    }
+
+    /**
+     * 分页查询 供应商合作记录表。
+     *
+     * @param query    查询条件
+     * @param pageNum  当前页码
+     * @param pageSize 每页数量
+     * @return 分页对象
+     */
+    @Operation(summary = "分页查询 供应商合作记录表。", description = "分页查询 供应商合作记录表。")
+    @GetMapping("/page")
+    public Result<PageInfo<SrmCooperateDTO>> page(String query, Integer pageNum, Integer pageSize){
+        Map<String, Object> object = JsonUtils.toObject(query, Map.class);
+        String search = object.get("search") == null ? null : object.get("search").toString();
+        String supplierId = object.get("supplierId") instanceof String ? object.get("supplierId").toString() : null;
+        Page<SrmCooperateDO> page = iSrmCooperateService.page(search, supplierId, pageNum, pageSize);
+        return Result.ok(CollectionUtils.convertPage(page, SrmCooperateDTO::convert));
+    }
+
+}

+ 132 - 0
src/main/java/com/kingtom/shengtai/api/controller/SrmSupplierController.java

@@ -0,0 +1,132 @@
+package com.kingtom.shengtai.api.controller;
+
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+import com.kingtom.kirin.core.common.base.PageInfo;
+import com.kingtom.kirin.core.common.base.Result;
+import com.kingtom.kirin.core.common.utils.CollectionUtils;
+import com.kingtom.kirin.core.common.utils.JsonUtils;
+import com.kingtom.shengtai.api.mapper.SrmMapper;
+import com.kingtom.shengtai.api.model.SrmSupplierDTO;
+import com.kingtom.shengtai.app.srm.model.SrmSupplier;
+import com.kingtom.shengtai.app.srm.model.SrmSupplierDO;
+import com.kingtom.shengtai.app.srm.service.ISrmSupplierService;
+import com.mybatisflex.core.paginate.Page;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.enums.ParameterIn;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+/**
+ * 供应商信息表 控制层。
+ *
+ * @author 86181
+ * @since 2023-12-21
+ */
+@Tag(name = "SrmSupplierController", description = "供应商信息表 控制层。")
+@RestController
+@RequestMapping("/srmSuppliers")
+public class SrmSupplierController{
+
+    @Autowired
+    private ISrmSupplierService iSrmSupplierService;
+
+    /**
+     * 添加供应商信息表。
+     *
+     * @param dto 供应商信息表
+     * @return {@code true} 添加成功,{@code false} 添加失败
+     */
+    @Operation(summary = "添加供应商信息表。", description = "添加供应商信息表。")
+    @PostMapping("/")
+    public Result<SrmSupplierDTO> save(@RequestBody SrmSupplierDTO dto){
+        SrmSupplier convert = SrmMapper.INSTANCE.convert(dto);
+        SrmSupplierDO supplierDO = iSrmSupplierService.create(convert);
+        return Result.ok(SrmSupplierDTO.convert(supplierDO));
+    }
+
+    /**
+     * 根据主键删除供应商信息表。
+     *
+     * @param id 主键
+     * @return {@code true} 删除成功,{@code false} 删除失败
+     */
+    @Parameter(name = "id", description = "主键", in = ParameterIn.PATH, required = true)
+    @Operation(summary = "根据主键删除供应商信息表。", description = "根据主键删除供应商信息表。")
+    @PostMapping("/{id}/")
+    public Result<String> remove(@PathVariable String id){
+        iSrmSupplierService.deleteById(id);
+        return Result.ok(null);
+    }
+
+    /**
+     * 根据主键删除供应商信息表。
+     *
+     * @param ids 主键
+     * @return {@code true} 删除成功,{@code false} 删除失败
+     */
+    @Operation(summary = "根据主键批量删除供应商信息表。", description = "根据主键批量删除供应商信息表。")
+    @PostMapping("/remove_batch")
+    public Result<String> remove(@RequestBody List<String> ids){
+        iSrmSupplierService.deleteByIds(ids);
+        return Result.ok(null);
+    }
+
+    /**
+     * 根据主键更新供应商信息表。
+     *
+     * @param dto 供应商信息表
+     * @return {@code true} 更新成功,{@code false} 更新失败
+     */
+    @Parameter(name = "id", description = "", in = ParameterIn.PATH, required = true)
+    @Operation(summary = "根据主键更新供应商信息表。", description = "根据主键更新供应商信息表。")
+    @PostMapping("/{id}/info")
+    public Result<SrmSupplierDTO> update(@RequestBody SrmSupplierDTO dto, @PathVariable String id){
+        SrmSupplier convert = SrmMapper.INSTANCE.convert(dto);
+        convert.setId(id);
+        SrmSupplierDO supplierDO = iSrmSupplierService.update(convert);
+        return Result.ok(SrmSupplierDTO.convert(supplierDO));
+    }
+
+    /**
+     * 根据供应商信息表主键获取详细信息。
+     *
+     * @param id 供应商信息表主键
+     * @return 供应商信息表详情
+     */
+    @Parameter(name = "id", description = "供应商信息表主键", in = ParameterIn.PATH, required = true)
+    @Operation(summary = "根据供应商信息表主键获取详细信息。", description = "根据供应商信息表主键获取详细信息。")
+    @GetMapping("/{id}/info")
+    public Result<SrmSupplierDTO> getInfo(@PathVariable String id){
+        SrmSupplierDO supplierDO = iSrmSupplierService.findById(id);
+        return Result.ok(SrmSupplierDTO.convert(supplierDO));
+    }
+
+    /**
+     * 分页查询供应商信息表。
+     *
+     * @param query    查询条件
+     * @param pageNum  当前页码
+     * @param pageSize 每页数量
+     * @return 分页对象
+     */
+    @Operation(summary = "分页查询供应商信息表。", description = "分页查询供应商信息表。")
+    @GetMapping("/page")
+    public Result<PageInfo<SrmSupplierDTO>> page(String query, Integer pageNum, Integer pageSize){
+        Map<String, Object> object = JsonUtils.toObject(query, Map.class);
+        String name = object.get("name") instanceof String ? object.get("name").toString() : null;
+        String type = object.get("type") instanceof String ? object.get("type").toString() : null;
+        String state = object.get("state") instanceof String ? object.get("state").toString() : null;
+        List<String> products = object.get("products") instanceof Collection<?> ?
+                ((Collection<?>) object.get("products")).stream().map(e -> e instanceof String ? ((String) e) : null)
+                        .collect(Collectors.toList()) : null;
+        Page<SrmSupplierDO> page = iSrmSupplierService.page(name, type, state, products, pageNum, pageSize);
+        return Result.ok(CollectionUtils.convertPage(page, SrmSupplierDTO::convert));
+    }
+
+}

+ 91 - 0
src/main/java/com/kingtom/shengtai/api/mapper/SrmMapper.java

@@ -0,0 +1,91 @@
+package com.kingtom.shengtai.api.mapper;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import com.kingtom.kirin.core.common.utils.JsonUtils;
+import com.kingtom.shengtai.api.model.SrmCooperateDTO;
+import com.kingtom.shengtai.api.model.SrmSupplierDTO;
+import com.kingtom.shengtai.app.srm.model.SrmCooperate;
+import com.kingtom.shengtai.app.srm.model.SrmSupplier;
+import org.mapstruct.Mapper;
+import org.mapstruct.Mapping;
+import org.mapstruct.Named;
+import org.mapstruct.factory.Mappers;
+
+/**
+ * 应用模块名称</p>
+ * 代码描述</p>
+ * Copyright: Copyright (C) 2023 , Inc. All rights reserved. <p>
+ * Company: 成都诚唐科技有限责任公司</p>
+ *
+ * @author wany
+ * @since 2023/12/21
+ */
+@Mapper
+public interface SrmMapper{
+
+    public static final SrmMapper INSTANCE = Mappers.getMapper(SrmMapper.class);
+
+    @Mapping(target = "gmtCreate", dateFormat = "yyyy-MM-dd HH:mm:ss")
+    @Mapping(target = "gmtModified", dateFormat = "yyyy-MM-dd HH:mm:ss")
+    @Mapping(target = "ext3", qualifiedByName = "mapToString")
+    @Mapping(target = "image", qualifiedByName = "listToString")
+    @Mapping(target = "product", qualifiedByName = "listToString")
+    SrmSupplier convert(SrmSupplierDTO dto);
+
+    @Mapping(target = "gmtCreate", dateFormat = "yyyy-MM-dd HH:mm:ss")
+    @Mapping(target = "gmtModified", dateFormat = "yyyy-MM-dd HH:mm:ss")
+    @Mapping(target = "ext3", qualifiedByName = "stringToMap")
+    @Mapping(target = "image", qualifiedByName = "stringToList")
+    @Mapping(target = "product", qualifiedByName = "stringToList")
+    SrmSupplierDTO convert(SrmSupplier dto);
+
+    @Mapping(target = "gmtCreate", dateFormat = "yyyy-MM-dd HH:mm:ss")
+    @Mapping(target = "gmtModified", dateFormat = "yyyy-MM-dd HH:mm:ss")
+    @Mapping(target = "ext3", qualifiedByName = "mapToString")
+    @Mapping(target = "time",  dateFormat = "yyyy-MM-dd")
+    SrmCooperate convert(SrmCooperateDTO dto);
+
+    @Mapping(target = "gmtCreate", dateFormat = "yyyy-MM-dd HH:mm:ss")
+    @Mapping(target = "gmtModified", dateFormat = "yyyy-MM-dd HH:mm:ss")
+    @Mapping(target = "ext3", qualifiedByName = "stringToMap")
+    @Mapping(target = "time",  dateFormat = "yyyy-MM-dd")
+    SrmCooperateDTO convert(SrmCooperate dto);
+
+
+    @Named("mapToString")
+    default String mapToString(Map<String, Object> map){
+        if(map == null){
+            map = new HashMap<>();
+        }
+        return JsonUtils.toJson(map);
+    }
+
+    @Named("stringToMap")
+    default Map<String, Object> stringToMap(String str){
+        if(str == null){
+            return new HashMap<>();
+        }
+        return JsonUtils.toObject(str, Map.class);
+    }
+
+    @Named("listToString")
+    default String listToString(List<String> list){
+        if(list == null){
+            list = new ArrayList<>();
+        }
+        return JsonUtils.toJson(list);
+    }
+
+    @Named("stringToList")
+    default List<String> stringToList(String str){
+        if(str == null){
+            return new ArrayList<>();
+        }
+        return JsonUtils.toObjectList(str, String.class);
+    }
+
+}

+ 78 - 0
src/main/java/com/kingtom/shengtai/api/model/SrmCooperateDTO.java

@@ -0,0 +1,78 @@
+package com.kingtom.shengtai.api.model;
+
+import java.util.Map;
+
+import com.kingtom.shengtai.api.mapper.SrmMapper;
+import com.kingtom.shengtai.app.srm.model.SrmCooperateDO;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * 应用模块名称</p>
+ * 代码描述</p>
+ * Copyright: Copyright (C) 2023 , Inc. All rights reserved. <p>
+ * Company: 成都诚唐科技有限责任公司</p>
+ *
+ * @author wany
+ * @since 2023/12/21
+ */
+@Data
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+@Schema(description = "供应商合作记录")
+public class SrmCooperateDTO{
+
+    @Schema(description = "id")
+    private String id;
+
+    @Schema(description = "供应商Id")
+    private String supplierId;
+
+    @Schema(description = "产品")
+    private String product;
+
+    @Schema(description = "内容")
+    private String content;
+
+    @Schema(description = "时间")
+    private String time;
+
+    @Schema(description = "扩展字段1")
+    private String ext1;
+
+    @Schema(description = "扩展字段2")
+    private String ext2;
+
+    @Schema(description = "扩展字段3")
+    private Map<String, Object> ext3;
+
+    @Schema(description = "创建时间")
+    private String gmtCreate;
+
+    @Schema(description = "更新时间")
+    private String gmtModified;
+
+    @Schema(description = "系统ID")
+    private String sysId;
+
+
+    @Schema(description = "供应商名称")
+    private String supplierName;
+
+    public static SrmCooperateDTO convert(SrmCooperateDO cooperateDO){
+        if(cooperateDO == null || cooperateDO.getSupplier() == null){
+            return null;
+        }
+        SrmCooperateDTO convert = SrmMapper.INSTANCE.convert(cooperateDO.getCooperate());
+        if(convert == null){
+            return null;
+        }
+        convert.setSupplierName(cooperateDO.getSupplier() == null ? null : cooperateDO.getSupplier().getName());
+        return convert;
+    }
+
+}

+ 98 - 0
src/main/java/com/kingtom/shengtai/api/model/SrmSupplierDTO.java

@@ -0,0 +1,98 @@
+package com.kingtom.shengtai.api.model;
+
+import java.math.BigDecimal;
+import java.util.List;
+import java.util.Map;
+
+import com.kingtom.shengtai.api.mapper.SrmMapper;
+import com.kingtom.shengtai.app.srm.model.SrmSupplierDO;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * 应用模块名称</p>
+ * 代码描述</p>
+ * Copyright: Copyright (C) 2023 , Inc. All rights reserved. <p>
+ * Company: 成都诚唐科技有限责任公司</p>
+ *
+ * @author wany
+ * @since 2023/12/21
+ */
+@Data
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+@Schema(description = "供应商信息")
+public class SrmSupplierDTO{
+
+    @Schema(description = "id")
+    private String id;
+
+    @Schema(description = "名称")
+    private String name;
+
+    @Schema(description = "联系人")
+    private String person;
+
+    @Schema(description = "联系电话")
+    private String phone;
+
+    @Schema(description = "联系地址")
+    private String address;
+
+    @Schema(description = "供应商类型")
+    private String type;
+
+    @Schema(description = "评分")
+    private String mark;
+
+    @Schema(description = "备注")
+    private String remark;
+
+    @Schema(description = "图片集合")
+    private List<String> image;
+
+    @Schema(description = "产品集合")
+    private List<String> product;
+
+    @Schema(description = "供应商状态")
+    private Integer state;
+
+    @Schema(description = "扩展字段1")
+    private String ext1;
+
+    @Schema(description = "扩展字段2")
+    private String ext2;
+
+    @Schema(description = "扩展字段3")
+    private Map<String, Object> ext3;
+
+    @Schema(description = "创建时间")
+    private String gmtCreate;
+
+    @Schema(description = "更新时间")
+    private String gmtModified;
+
+    @Schema(description = "系统ID")
+    private String sysId;
+
+    @Schema(description = "联系人姓名")
+    private String personName;
+
+
+    public static SrmSupplierDTO convert(SrmSupplierDO supplierDO){
+        if(supplierDO == null || supplierDO.getSupplier() == null){
+            return null;
+        }
+        SrmSupplierDTO convert = SrmMapper.INSTANCE.convert(supplierDO.getSupplier());
+        if(convert == null){
+            return null;
+        }
+        convert.setPersonName(supplierDO.getPerson() == null ? null : supplierDO.getPerson().getName());
+        return convert;
+    }
+
+}

+ 14 - 0
src/main/java/com/kingtom/shengtai/app/srm/dao/ISrmCooperateDao.java

@@ -0,0 +1,14 @@
+package com.kingtom.shengtai.app.srm.dao;
+
+import com.kingtom.kirin.core.common.base.dao.IBaseDao;
+import com.kingtom.shengtai.app.srm.model.SrmCooperate;
+
+/**
+ * 供应商合作记录表 映射层。
+ *
+ * @author 86181
+ * @since 2023-12-21
+ */
+public interface ISrmCooperateDao extends IBaseDao<SrmCooperate> {
+
+}

+ 14 - 0
src/main/java/com/kingtom/shengtai/app/srm/dao/ISrmSupplierDao.java

@@ -0,0 +1,14 @@
+package com.kingtom.shengtai.app.srm.dao;
+
+import com.kingtom.kirin.core.common.base.dao.IBaseDao;
+import com.kingtom.shengtai.app.srm.model.SrmSupplier;
+
+/**
+ * 供应商信息表 映射层。
+ *
+ * @author 86181
+ * @since 2023-12-21
+ */
+public interface ISrmSupplierDao extends IBaseDao<SrmSupplier> {
+
+}

+ 86 - 0
src/main/java/com/kingtom/shengtai/app/srm/model/SrmCooperate.java

@@ -0,0 +1,86 @@
+package com.kingtom.shengtai.app.srm.model;
+
+import com.mybatisflex.annotation.Id;
+import com.mybatisflex.annotation.Table;
+
+import java.io.Serial;
+import java.io.Serializable;
+import java.util.Date;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * 供应商合作记录表 实体类。
+ *
+ * @author 86181
+ * @since 2023-12-21
+ */
+@Data
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+@Table(value = "srm_cooperate", schema = "public")
+public class SrmCooperate implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 2226327211206224144L;
+
+    /**
+     * id
+     */
+    @Id
+    private String id;
+
+    /**
+     * 供应商Id
+     */
+    private String supplierId;
+
+    /**
+     * 产品
+     */
+    private String product;
+
+    /**
+     * 内容
+     */
+    private String content;
+
+    /**
+     * 时间
+     */
+    private Date time;
+
+    /**
+     * 扩展字段1
+     */
+    private String ext1;
+
+    /**
+     * 扩展字段2
+     */
+    private String ext2;
+
+    /**
+     * 扩展字段3
+     */
+    private String ext3;
+
+    /**
+     * 创建时间
+     */
+    private Date gmtCreate;
+
+    /**
+     * 更新时间
+     */
+    private Date gmtModified;
+
+    /**
+     * 系统ID
+     */
+    private String sysId;
+
+}

+ 27 - 0
src/main/java/com/kingtom/shengtai/app/srm/model/SrmCooperateDO.java

@@ -0,0 +1,27 @@
+package com.kingtom.shengtai.app.srm.model;
+
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * 应用模块名称</p>
+ * 代码描述</p>
+ * Copyright: Copyright (C) 2023 , Inc. All rights reserved. <p>
+ * Company: 成都诚唐科技有限责任公司</p>
+ *
+ * @author wany
+ * @since 2023/12/22
+ */
+@Data
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class SrmCooperateDO{
+
+    private SrmCooperate cooperate;
+
+    private SrmSupplier supplier;
+
+}

+ 117 - 0
src/main/java/com/kingtom/shengtai/app/srm/model/SrmSupplier.java

@@ -0,0 +1,117 @@
+package com.kingtom.shengtai.app.srm.model;
+
+import com.mybatisflex.annotation.Id;
+import com.mybatisflex.annotation.Table;
+
+import java.io.Serial;
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.util.Date;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * 供应商信息表 实体类。
+ *
+ * @author 86181
+ * @since 2023-12-21
+ */
+@Data
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+@Table(value = "srm_supplier", schema = "public")
+public class SrmSupplier implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 4840288776471213341L;
+
+    /**
+     * id
+     */
+    @Id
+    private String id;
+
+    /**
+     * 名称
+     */
+    private String name;
+
+    /**
+     * 联系人
+     */
+    private String person;
+
+    /**
+     * 联系电话
+     */
+    private String phone;
+
+    /**
+     * 联系地址
+     */
+    private String address;
+
+    /**
+     * 供应商类型
+     */
+    private String type;
+
+    /**
+     * 评分
+     */
+    private String mark;
+
+    /**
+     * 备注
+     */
+    private String remark;
+
+    /**
+     * 图片集合
+     */
+    private String image;
+
+    /**
+     * 产品集合
+     */
+    private String product;
+
+    /**
+     * 供应商状态
+     */
+    private Integer state;
+
+    /**
+     * 扩展字段1
+     */
+    private String ext1;
+
+    /**
+     * 扩展字段2
+     */
+    private String ext2;
+
+    /**
+     * 扩展字段3
+     */
+    private String ext3;
+
+    /**
+     * 创建时间
+     */
+    private Date gmtCreate;
+
+    /**
+     * 更新时间
+     */
+    private Date gmtModified;
+
+    /**
+     * 系统ID
+     */
+    private String sysId;
+
+}

+ 30 - 0
src/main/java/com/kingtom/shengtai/app/srm/model/SrmSupplierDO.java

@@ -0,0 +1,30 @@
+package com.kingtom.shengtai.app.srm.model;
+
+import com.kingtom.kirin.app.org.model.OrgPerson;
+import com.kingtom.shengtai.api.mapper.SrmMapper;
+import com.kingtom.shengtai.api.model.SrmSupplierDTO;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * 应用模块名称</p>
+ * 代码描述</p>
+ * Copyright: Copyright (C) 2023 , Inc. All rights reserved. <p>
+ * Company: 成都诚唐科技有限责任公司</p>
+ *
+ * @author wany
+ * @since 2023/12/22
+ */
+@Data
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class SrmSupplierDO{
+
+    private SrmSupplier supplier;
+
+    private OrgPerson person;
+
+}

+ 93 - 0
src/main/java/com/kingtom/shengtai/app/srm/model/table/SrmCooperateTableDef.java

@@ -0,0 +1,93 @@
+package com.kingtom.shengtai.app.srm.model.table;
+
+import java.io.Serial;
+
+import com.mybatisflex.core.query.QueryColumn;
+import com.mybatisflex.core.table.TableDef;
+
+/**
+ * 供应商合作记录表 表定义层。
+ *
+ * @author 86181
+ * @since 2023-12-21
+ */
+public class SrmCooperateTableDef extends TableDef {
+
+    /**
+     * 供应商合作记录表
+     */
+    public static final SrmCooperateTableDef SRM_COOPERATE = new SrmCooperateTableDef();
+
+    @Serial
+    private static final long serialVersionUID = 1496262111775862114L;
+
+    /**
+     * id
+     */
+    public final QueryColumn ID = new QueryColumn(this, "id");
+
+    /**
+     * 扩展字段1
+     */
+    public final QueryColumn EXT1 = new QueryColumn(this, "ext1");
+
+    /**
+     * 扩展字段2
+     */
+    public final QueryColumn EXT2 = new QueryColumn(this, "ext2");
+
+    /**
+     * 扩展字段3
+     */
+    public final QueryColumn EXT3 = new QueryColumn(this, "ext3");
+
+    /**
+     * 时间
+     */
+    public final QueryColumn TIME = new QueryColumn(this, "time");
+
+    /**
+     * 系统ID
+     */
+    public final QueryColumn SYS_ID = new QueryColumn(this, "sys_id");
+
+    /**
+     * 内容
+     */
+    public final QueryColumn CONTENT = new QueryColumn(this, "content");
+
+    /**
+     * 产品
+     */
+    public final QueryColumn PRODUCT = new QueryColumn(this, "product");
+
+    /**
+     * 创建时间
+     */
+    public final QueryColumn GMT_CREATE = new QueryColumn(this, "gmt_create");
+
+    /**
+     * 供应商Id
+     */
+    public final QueryColumn SUPPLIER_ID = new QueryColumn(this, "supplier_id");
+
+    /**
+     * 更新时间
+     */
+    public final QueryColumn GMT_MODIFIED = new QueryColumn(this, "gmt_modified");
+
+    /**
+     * 所有字段。
+     */
+    public final QueryColumn ALL_COLUMNS = new QueryColumn(this, "*");
+
+    /**
+     * 默认字段,不包含逻辑删除或者 large 等字段。
+     */
+    public final QueryColumn[] DEFAULT_COLUMNS = new QueryColumn[]{ID, SUPPLIER_ID, PRODUCT, CONTENT, TIME, EXT1, EXT2, EXT3, GMT_CREATE, GMT_MODIFIED, SYS_ID};
+
+    public SrmCooperateTableDef() {
+        super("public", "srm_cooperate");
+    }
+
+}

+ 125 - 0
src/main/java/com/kingtom/shengtai/app/srm/model/table/SrmSupplierTableDef.java

@@ -0,0 +1,125 @@
+package com.kingtom.shengtai.app.srm.model.table;
+
+import java.io.Serial;
+
+import com.mybatisflex.core.query.QueryColumn;
+import com.mybatisflex.core.table.TableDef;
+
+/**
+ * 供应商信息表 表定义层。
+ *
+ * @author 86181
+ * @since 2023-12-21
+ */
+public class SrmSupplierTableDef extends TableDef{
+
+    @Serial
+    private static final long serialVersionUID = -3547416580688383712L;
+
+    /**
+     * 供应商信息表
+     */
+    public static final SrmSupplierTableDef SRM_SUPPLIER = new SrmSupplierTableDef();
+
+    /**
+     * id
+     */
+    public final QueryColumn ID = new QueryColumn(this, "id");
+
+    /**
+     * 扩展字段1
+     */
+    public final QueryColumn EXT1 = new QueryColumn(this, "ext1");
+
+    /**
+     * 扩展字段2
+     */
+    public final QueryColumn EXT2 = new QueryColumn(this, "ext2");
+
+    /**
+     * 扩展字段3
+     */
+    public final QueryColumn EXT3 = new QueryColumn(this, "ext3");
+
+    /**
+     * 评分
+     */
+    public final QueryColumn MARK = new QueryColumn(this, "mark");
+
+    /**
+     * 名称
+     */
+    public final QueryColumn NAME = new QueryColumn(this, "name");
+
+    /**
+     * 供应商类型
+     */
+    public final QueryColumn TYPE = new QueryColumn(this, "type");
+
+    /**
+     * 图片集合
+     */
+    public final QueryColumn IMAGE = new QueryColumn(this, "image");
+
+    /**
+     * 联系电话
+     */
+    public final QueryColumn PHONE = new QueryColumn(this, "phone");
+
+    /**
+     * 供应商状态
+     */
+    public final QueryColumn STATE = new QueryColumn(this, "state");
+
+    /**
+     * 系统ID
+     */
+    public final QueryColumn SYS_ID = new QueryColumn(this, "sys_id");
+
+    /**
+     * 联系人
+     */
+    public final QueryColumn PERSON = new QueryColumn(this, "person");
+
+    /**
+     * 备注
+     */
+    public final QueryColumn REMARK = new QueryColumn(this, "remark");
+
+    /**
+     * 联系地址
+     */
+    public final QueryColumn ADDRESS = new QueryColumn(this, "address");
+
+    /**
+     * 产品集合
+     */
+    public final QueryColumn PRODUCT = new QueryColumn(this, "product");
+
+    /**
+     * 创建时间
+     */
+    public final QueryColumn GMT_CREATE = new QueryColumn(this, "gmt_create");
+
+    /**
+     * 更新时间
+     */
+    public final QueryColumn GMT_MODIFIED = new QueryColumn(this, "gmt_modified");
+
+    /**
+     * 所有字段。
+     */
+    public final QueryColumn ALL_COLUMNS = new QueryColumn(this, "*");
+
+    /**
+     * 默认字段,不包含逻辑删除或者 large 等字段。
+     */
+    public final QueryColumn[] DEFAULT_COLUMNS =
+            new QueryColumn[]{ID, NAME, PERSON, PHONE, ADDRESS, TYPE, MARK, REMARK, IMAGE, PRODUCT, STATE, EXT1, EXT2,
+                    EXT3, GMT_CREATE, GMT_MODIFIED, SYS_ID};
+
+    public SrmSupplierTableDef(){
+        super("public", "srm_supplier");
+    }
+
+}

+ 30 - 0
src/main/java/com/kingtom/shengtai/app/srm/service/ISrmCooperateService.java

@@ -0,0 +1,30 @@
+package com.kingtom.shengtai.app.srm.service;
+
+import java.util.List;
+
+import com.kingtom.kirin.core.common.base.service.IBaseService;
+import com.kingtom.shengtai.app.srm.model.SrmCooperate;
+import com.kingtom.shengtai.app.srm.model.SrmCooperateDO;
+import com.mybatisflex.core.paginate.Page;
+
+/**
+ * 供应商合作记录表 服务层。
+ *
+ * @author 86181
+ * @since 2023-12-21
+ */
+public interface ISrmCooperateService extends IBaseService<SrmCooperate>{
+
+    SrmCooperateDO create(SrmCooperate entity);
+
+    void deleteById(String id);
+
+    void deleteByIds(List<String> ids);
+
+    SrmCooperateDO update(SrmCooperate entity);
+
+    SrmCooperateDO findById(String id);
+
+    Page<SrmCooperateDO> page(String search, String supplierId, Integer pageNum, Integer pageSize);
+
+}

+ 31 - 0
src/main/java/com/kingtom/shengtai/app/srm/service/ISrmSupplierService.java

@@ -0,0 +1,31 @@
+package com.kingtom.shengtai.app.srm.service;
+
+import java.util.List;
+
+import com.kingtom.kirin.core.common.base.service.IBaseService;
+import com.kingtom.shengtai.app.srm.model.SrmSupplier;
+import com.kingtom.shengtai.app.srm.model.SrmSupplierDO;
+import com.mybatisflex.core.paginate.Page;
+
+/**
+ * 供应商信息表 服务层。
+ *
+ * @author 86181
+ * @since 2023 -12-21
+ */
+public interface ISrmSupplierService extends IBaseService<SrmSupplier>{
+
+    SrmSupplierDO create(SrmSupplier entity);
+
+    void deleteById(String id);
+
+    void deleteByIds(List<String> ids);
+
+    SrmSupplierDO update(SrmSupplier entity);
+
+    SrmSupplierDO findById(String id);
+
+    Page<SrmSupplierDO> page(String name, String type, String state, List<String> products, Integer pageNum,
+            Integer pageSize);
+
+}

+ 139 - 0
src/main/java/com/kingtom/shengtai/app/srm/service/impl/SrmCooperateServiceImpl.java

@@ -0,0 +1,139 @@
+package com.kingtom.shengtai.app.srm.service.impl;
+
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+import com.kingtom.kirin.app.system.utils.SystemUtils;
+import com.kingtom.kirin.core.common.base.service.impl.BaseServiceImpl;
+import com.kingtom.kirin.core.common.exception.AppException;
+import com.kingtom.kirin.core.common.utils.CollectionUtils;
+import com.kingtom.kirin.core.common.utils.IDUtils;
+import com.kingtom.shengtai.app.srm.dao.ISrmCooperateDao;
+import com.kingtom.shengtai.app.srm.model.SrmCooperate;
+import com.kingtom.shengtai.app.srm.model.SrmCooperateDO;
+import com.kingtom.shengtai.app.srm.model.SrmSupplier;
+import com.kingtom.shengtai.app.srm.service.ISrmCooperateService;
+import com.kingtom.shengtai.app.srm.service.ISrmSupplierService;
+import com.mybatisflex.core.paginate.Page;
+import com.mybatisflex.core.query.QueryCondition;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import static com.kingtom.shengtai.app.srm.model.table.SrmCooperateTableDef.SRM_COOPERATE;
+
+/**
+ * 供应商合作记录表 服务层实现。
+ *
+ * @author 86181
+ * @since 2023-12-21
+ */
+@Service
+public class SrmCooperateServiceImpl extends BaseServiceImpl<ISrmCooperateDao, SrmCooperate>
+        implements ISrmCooperateService{
+
+    @Autowired
+    private ISrmSupplierService supplierService;
+
+    @Override
+    public SrmCooperateDO create(SrmCooperate entity){
+        if(entity.getId() == null){
+            entity.setId(IDUtils.newUUID());
+        }
+        if(StringUtils.isEmpty(entity.getSupplierId())){
+            throw new AppException("供应商为空,新建合作记录失败!");
+        }
+        if(StringUtils.isEmpty(entity.getContent())){
+            throw new AppException("合作内容为空,新建合作记录失败!");
+        }
+        if(entity.getTime() == null){
+            throw new AppException("合作时间为空,新建合作记录失败!");
+        }
+        entity.setGmtCreate(new Date());
+        entity.setGmtModified(entity.getGmtCreate());
+        entity.setSysId(SystemUtils.getCurrentSystemId());
+        boolean f = mapper.insert(entity) > 0;
+        if(!f){
+            throw new AppException("落库出错,新建合作记录失败!");
+        }
+        return findById(entity.getId());
+    }
+
+    @Override
+    public void deleteById(String id){
+        if(StringUtils.isEmpty(id)){
+            return;
+        }
+        boolean f = mapper.deleteById(id) > 0;
+        if(!f){
+            throw new AppException("落库出错,删除合作记录失败!");
+        }
+    }
+
+    @Override
+    public void deleteByIds(List<String> ids){
+        if(CollectionUtils.isEmpty(ids)){
+            return;
+        }
+        boolean f = mapper.deleteBatchByIds(ids) > 0;
+        if(!f){
+            throw new AppException("落库出错,删除合作记录失败!");
+        }
+    }
+
+    @Override
+    public SrmCooperateDO update(SrmCooperate entity){
+        if(entity == null || entity.getId() == null){
+            throw new AppException("参数错误,更新合作记录失败!");
+        }
+        entity.setGmtModified(new Date());
+        boolean f = mapper.update(entity) > 0;
+        if(!f){
+            throw new AppException("落库出错,更新合作记录失败!");
+        }
+        return findById(entity.getId());
+    }
+
+    @Override
+    public SrmCooperateDO findById(String id){
+        if(StringUtils.isEmpty(id)){
+            return null;
+        }
+        SrmCooperate srmCooperate = mapper.selectOneById(id);
+        if(srmCooperate == null){
+            return null;
+        }
+        SrmCooperateDO build = SrmCooperateDO.builder().cooperate(srmCooperate).build();
+        if(srmCooperate.getSupplierId() != null){
+            build.setSupplier(supplierService.getById(srmCooperate.getSupplierId()));
+        }
+        return build;
+    }
+
+    @Override
+    public Page<SrmCooperateDO> page(String search, String supplierId, Integer pageNum, Integer pageSize){
+        QueryCondition condition = QueryCondition.createEmpty()
+                .and(SRM_COOPERATE.SUPPLIER_ID.eq(supplierId).when(StringUtils.isNotEmpty(supplierId)))
+                .and(SRM_COOPERATE.CONTENT.like(search).when(StringUtils.isNotEmpty(search)));
+        Page<SrmCooperate> paginate = mapper.paginate(pageNum, pageSize, condition);
+        if(CollectionUtils.isEmpty(paginate.getRecords())){
+            return new Page<>(new ArrayList<>(), pageNum, pageSize, paginate.getTotalRow());
+        }
+        List<String> supplierIds =
+                paginate.getRecords().stream().map(SrmCooperate::getSupplierId).collect(Collectors.toList());
+        List<SrmSupplier> suppliers = new ArrayList<>();
+        if(CollectionUtils.isNotEmpty(supplierIds)){
+            suppliers = supplierService.listByIds(supplierIds);
+        }
+        Map<String, SrmSupplier> supplierMap = suppliers.stream().collect(Collectors.toMap(SrmSupplier::getId, e -> e));
+        List<SrmCooperateDO> collect = paginate.getRecords().stream()
+                .map(e -> SrmCooperateDO.builder().cooperate(e).supplier(supplierMap.get(e.getSupplierId())).build())
+                .collect(Collectors.toList());
+        return new Page<>(collect, pageNum, pageSize, paginate.getTotalRow());
+
+    }
+
+}

+ 142 - 0
src/main/java/com/kingtom/shengtai/app/srm/service/impl/SrmSupplierServiceImpl.java

@@ -0,0 +1,142 @@
+package com.kingtom.shengtai.app.srm.service.impl;
+
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+import com.kingtom.kirin.app.org.model.OrgPerson;
+import com.kingtom.kirin.app.org.service.IOrgPersonService;
+import com.kingtom.kirin.app.system.utils.SystemUtils;
+import com.kingtom.kirin.core.common.base.service.impl.BaseServiceImpl;
+import com.kingtom.kirin.core.common.exception.AppException;
+import com.kingtom.kirin.core.common.utils.CollectionUtils;
+import com.kingtom.kirin.core.common.utils.IDUtils;
+import com.kingtom.shengtai.app.srm.dao.ISrmSupplierDao;
+import com.kingtom.shengtai.app.srm.model.SrmSupplier;
+import com.kingtom.shengtai.app.srm.model.SrmSupplierDO;
+import com.kingtom.shengtai.app.srm.service.ISrmSupplierService;
+import com.mybatisflex.core.paginate.Page;
+import com.mybatisflex.core.query.QueryCondition;
+import com.mybatisflex.core.query.RawQueryCondition;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import static com.kingtom.shengtai.app.srm.model.table.SrmSupplierTableDef.SRM_SUPPLIER;
+
+/**
+ * 供应商信息表 服务层实现。
+ *
+ * @author 86181
+ * @since 2023-12-21
+ */
+@Service
+public class SrmSupplierServiceImpl extends BaseServiceImpl<ISrmSupplierDao, SrmSupplier>
+        implements ISrmSupplierService{
+
+    @Autowired
+    private IOrgPersonService personService;
+
+    @Override
+    public SrmSupplierDO create(SrmSupplier entity){
+        if(entity.getId() == null){
+            entity.setId(IDUtils.newUUID());
+        }
+        if(StringUtils.isEmpty(entity.getName())){
+            throw new AppException("供应商名称为空,新建供应商失败!");
+        }
+        if(StringUtils.isEmpty(entity.getType())){
+            throw new AppException("供应商类型为空,新建供应商失败!");
+        }
+        entity.setGmtCreate(new Date());
+        entity.setGmtModified(entity.getGmtCreate());
+        entity.setSysId(SystemUtils.getCurrentSystemId());
+        boolean f = mapper.insert(entity) > 0;
+        if(!f){
+            throw new AppException("落库出错,新建供应商失败!");
+        }
+        return findById(entity.getId());
+    }
+
+    @Override
+    public void deleteById(String id){
+        if(StringUtils.isEmpty(id)){
+            return;
+        }
+        boolean f = mapper.deleteById(id) > 0;
+        if(!f){
+            throw new AppException("落库出错,删除供应商失败!");
+        }
+    }
+
+    @Override
+    public void deleteByIds(List<String> ids){
+        if(CollectionUtils.isEmpty(ids)){
+            return;
+        }
+        boolean f = mapper.deleteBatchByIds(ids) > 0;
+        if(!f){
+            throw new AppException("落库出错,删除供应商失败!");
+        }
+    }
+
+    @Override
+    public SrmSupplierDO update(SrmSupplier entity){
+        if(entity == null || entity.getId() == null){
+            throw new AppException("参数错误,更新供应商失败!");
+        }
+        entity.setGmtModified(new Date());
+        boolean f = mapper.update(entity) > 0;
+        if(!f){
+            throw new AppException("落库出错,更新供应商失败!");
+        }
+        return findById(entity.getId());
+    }
+
+    @Override
+    public SrmSupplierDO findById(String id){
+        if(StringUtils.isEmpty(id)){
+            return null;
+        }
+        SrmSupplier srmSupplier = mapper.selectOneById(id);
+        if(srmSupplier == null){
+            return null;
+        }
+        SrmSupplierDO build = SrmSupplierDO.builder().supplier(srmSupplier).build();
+        if(StringUtils.isNotEmpty(srmSupplier.getPerson())){
+            build.setPerson(personService.findById(srmSupplier.getPerson()));
+        }
+        return build;
+    }
+
+    @Override
+    public Page<SrmSupplierDO> page(String name, String type, String state, List<String> products, Integer pageNum,
+            Integer pageSize){
+        products = products == null ? new ArrayList<>() : products;
+        QueryCondition condition =
+                QueryCondition.createEmpty().and(SRM_SUPPLIER.NAME.like(name).when(StringUtils.isNotEmpty(name)))
+                        .and(SRM_SUPPLIER.TYPE.like(type).when(StringUtils.isNotEmpty(type)))
+                        .and(SRM_SUPPLIER.STATE.like(state).when(StringUtils.isNotEmpty(state)))
+                        .and(new RawQueryCondition(
+                                "product::jsonb ??& array['" + StringUtils.join(products, "','") + "']").when(
+                                CollectionUtils.isNotEmpty(products)));
+        Page<SrmSupplier> paginate = mapper.paginate(pageNum, pageSize, condition);
+        if(CollectionUtils.isEmpty(paginate.getRecords())){
+            return new Page<>(new ArrayList<>(), pageNum, pageSize, paginate.getTotalRow());
+        }
+        List<String> personIds =
+                paginate.getRecords().stream().map(SrmSupplier::getPerson).collect(Collectors.toList());
+        List<OrgPerson> people = new ArrayList<>();
+        if(CollectionUtils.isNotEmpty(personIds)){
+            people = personService.listByIds(personIds);
+        }
+        Map<String, OrgPerson> personMap = people.stream().collect(Collectors.toMap(OrgPerson::getId, e -> e));
+        List<SrmSupplierDO> collect = paginate.getRecords().stream()
+                .map(e -> SrmSupplierDO.builder().supplier(e).person(personMap.get(e.getPerson())).build())
+                .collect(Collectors.toList());
+        return new Page<>(collect, pageNum, pageSize, paginate.getTotalRow());
+    }
+
+}

+ 1 - 1
src/main/resources/application-common.yml

@@ -19,7 +19,7 @@ server:
 logging:
   config: classpath:log4j2-${spring.profiles.active}.xml
 springdoc:
-  packages-to-scan: com.kingtom.kirin
+  packages-to-scan: com.kingtom.kirin,com.kingtom.shengtai
 spring:
   cache:
     type: caffeine

+ 1 - 0
src/main/resources/application-dev-conf.yml

@@ -37,6 +37,7 @@ app:
         - 370748737@qq.com
       legal-name: 杨成
       legal-phone: 18111618069
+      username: yangcheng
   init:
     ddic: sex,district
   storage:

+ 1 - 0
src/main/resources/application-local-conf.yml

@@ -37,6 +37,7 @@ app:
         - 370748737@qq.com
       legal-name: 杨成
       legal-phone: 18111618069
+      username: yangcheng
   init:
     ddic: sex,district
   storage:

+ 72 - 0
src/main/resources/db/V2.01__20231221_initsrm.sql

@@ -0,0 +1,72 @@
+-- ----------------------------
+-- Table structure for srm_supplier
+-- ----------------------------
+DROP TABLE IF EXISTS "public"."srm_supplier";
+CREATE TABLE "public"."srm_supplier" (
+    "id"           VARCHAR(36) COLLATE "pg_catalog"."default"  NOT NULL PRIMARY KEY,
+    "name"         VARCHAR(128) COLLATE "pg_catalog"."default" NOT NULL,
+    "person"       VARCHAR(64) COLLATE "pg_catalog"."default",
+    "phone"        VARCHAR(64) COLLATE "pg_catalog"."default",
+    "address"      VARCHAR(128) COLLATE "pg_catalog"."default",
+    "type"         VARCHAR(64) COLLATE "pg_catalog"."default",
+    "mark"         VARCHAR(64) COLLATE "pg_catalog"."default",
+    "remark"       VARCHAR(256) COLLATE "pg_catalog"."default",
+    "image"        TEXT COLLATE "pg_catalog"."default",
+    "product"      TEXT COLLATE "pg_catalog"."default",
+    "state"        int4,
+    "ext1"         VARCHAR(1024) COLLATE "pg_catalog"."default",
+    "ext2"         VARCHAR(1024) COLLATE "pg_catalog"."default",
+    "ext3"         TEXT COLLATE "pg_catalog"."default",
+    "gmt_create"   TIMESTAMP(3)                                NOT NULL,
+    "gmt_modified" TIMESTAMP(3)                                NOT NULL,
+    "sys_id"       VARCHAR(36) COLLATE "pg_catalog"."default"  NOT NULL
+);
+COMMENT ON TABLE "public"."srm_supplier" IS '供应商信息表';
+COMMENT ON COLUMN "public"."srm_supplier"."id" IS 'id';
+COMMENT ON COLUMN "public"."srm_supplier"."name" IS '名称';
+COMMENT ON COLUMN "public"."srm_supplier"."person" IS '联系人';
+COMMENT ON COLUMN "public"."srm_supplier"."phone" IS '联系电话';
+COMMENT ON COLUMN "public"."srm_supplier"."address" IS '联系地址';
+COMMENT ON COLUMN "public"."srm_supplier"."type" IS '供应商类型';
+COMMENT ON COLUMN "public"."srm_supplier"."mark" IS '评分';
+COMMENT ON COLUMN "public"."srm_supplier"."remark" IS '备注';
+COMMENT ON COLUMN "public"."srm_supplier"."image" IS '图片集合';
+COMMENT ON COLUMN "public"."srm_supplier"."product" IS '产品集合';
+COMMENT ON COLUMN "public"."srm_supplier"."state" IS '供应商状态';
+COMMENT ON COLUMN "public"."srm_supplier"."ext1" IS '扩展字段1';
+COMMENT ON COLUMN "public"."srm_supplier"."ext2" IS '扩展字段2';
+COMMENT ON COLUMN "public"."srm_supplier"."ext3" IS '扩展字段3';
+COMMENT ON COLUMN "public"."srm_supplier"."gmt_create" IS '创建时间';
+COMMENT ON COLUMN "public"."srm_supplier"."gmt_modified" IS '更新时间';
+COMMENT ON COLUMN "public"."srm_supplier"."sys_id" IS '系统ID';
+
+
+-- ----------------------------
+-- Table structure for srm_cooperate
+-- ----------------------------
+DROP TABLE IF EXISTS "public"."srm_cooperate";
+CREATE TABLE "public"."srm_cooperate" (
+    "id"           VARCHAR(36) COLLATE "pg_catalog"."default" NOT NULL PRIMARY KEY,
+    "supplier_id"  VARCHAR(36) COLLATE "pg_catalog"."default" NOT NULL,
+    "product"      VARCHAR(64) COLLATE "pg_catalog"."default",
+    "content"      VARCHAR(2048) COLLATE "pg_catalog"."default",
+    "time"         TIMESTAMP(3)                               NOT NULL,
+    "ext1"         VARCHAR(1024) COLLATE "pg_catalog"."default",
+    "ext2"         VARCHAR(1024) COLLATE "pg_catalog"."default",
+    "ext3"         TEXT COLLATE "pg_catalog"."default",
+    "gmt_create"   TIMESTAMP(3)                               NOT NULL,
+    "gmt_modified" TIMESTAMP(3)                               NOT NULL,
+    "sys_id"       VARCHAR(36) COLLATE "pg_catalog"."default" NOT NULL
+);
+COMMENT ON TABLE "public"."srm_cooperate" IS '供应商合作记录表';
+COMMENT ON COLUMN "public"."srm_cooperate"."id" IS 'id';
+COMMENT ON COLUMN "public"."srm_cooperate"."supplier_id" IS '供应商Id';
+COMMENT ON COLUMN "public"."srm_cooperate"."product" IS '产品';
+COMMENT ON COLUMN "public"."srm_cooperate"."content" IS '内容';
+COMMENT ON COLUMN "public"."srm_cooperate"."time" IS '时间';
+COMMENT ON COLUMN "public"."srm_cooperate"."ext1" IS '扩展字段1';
+COMMENT ON COLUMN "public"."srm_cooperate"."ext2" IS '扩展字段2';
+COMMENT ON COLUMN "public"."srm_cooperate"."ext3" IS '扩展字段3';
+COMMENT ON COLUMN "public"."srm_cooperate"."gmt_create" IS '创建时间';
+COMMENT ON COLUMN "public"."srm_cooperate"."gmt_modified" IS '更新时间';
+COMMENT ON COLUMN "public"."srm_cooperate"."sys_id" IS '系统ID';