Browse Source

供应商项目试用,第一阶段反馈问题处理

wany 10 months ago
parent
commit
c70a15db06

+ 81 - 16
src/main/java/com/kingtom/shengtai/api/controller/SrmSupplierController.java

@@ -1,8 +1,6 @@
 package com.kingtom.shengtai.api.controller;
 
-import java.util.Collection;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 import java.util.stream.Collectors;
 
 import cn.dev33.satoken.annotation.SaCheckPermission;
@@ -13,12 +11,15 @@ import com.kingtom.kirin.api.system.model.SystemUserDTO;
 import com.kingtom.kirin.app.security.base.SessionData;
 import com.kingtom.kirin.app.system.SystemConst;
 import com.kingtom.kirin.app.system.model.SystemUser;
+import com.kingtom.kirin.core.common.CommonConst;
 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.product.model.ProductDir;
+import com.kingtom.shengtai.app.product.service.IProductDirService;
 import com.kingtom.shengtai.app.srm.model.SrmSupplier;
 import com.kingtom.shengtai.app.srm.model.SrmSupplierDO;
 import com.kingtom.shengtai.app.srm.service.ISrmSupplierService;
@@ -27,6 +28,7 @@ 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.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
@@ -44,10 +46,14 @@ public class SrmSupplierController{
     @Autowired
     private ISrmSupplierService iSrmSupplierService;
 
+    @Autowired
+    private IProductDirService productDirService;
+
     /**
      * 添加供应商信息表。
      *
-     * @param dto 供应商信息表
+     * @param dto
+     *         供应商信息表
      * @return {@code true} 添加成功,{@code false} 添加失败
      */
     @Operation(summary = "添加供应商信息表。", description = "添加供应商信息表。")
@@ -62,7 +68,8 @@ public class SrmSupplierController{
     /**
      * 根据主键删除供应商信息表。
      *
-     * @param id 主键
+     * @param id
+     *         主键
      * @return {@code true} 删除成功,{@code false} 删除失败
      */
     @Parameter(name = "id", description = "主键", in = ParameterIn.PATH, required = true)
@@ -77,7 +84,8 @@ public class SrmSupplierController{
     /**
      * 根据主键删除供应商信息表。
      *
-     * @param ids 主键
+     * @param ids
+     *         主键
      * @return {@code true} 删除成功,{@code false} 删除失败
      */
     @Operation(summary = "根据主键批量删除供应商信息表。", description = "根据主键批量删除供应商信息表。")
@@ -91,7 +99,8 @@ public class SrmSupplierController{
     /**
      * 根据主键更新供应商信息表。
      *
-     * @param dto 供应商信息表
+     * @param dto
+     *         供应商信息表
      * @return {@code true} 更新成功,{@code false} 更新失败
      */
     @Parameter(name = "id", description = "", in = ParameterIn.PATH, required = true)
@@ -99,16 +108,20 @@ public class SrmSupplierController{
     @PostMapping("/{id}/info")
     @SaCheckPermission(value = {"AuthMenu:srm_supplier:Execute"})
     public Result<SrmSupplierDTO> update(@RequestBody SrmSupplierDTO dto, @PathVariable String id){
-        SrmSupplier convert = SrmMapper.INSTANCE.convert(dto);
-        convert.setId(id);
-        SrmSupplierDO supplierDO = iSrmSupplierService.update(convert);
+        //只能更新评分和类型
+        SrmSupplier update = new SrmSupplier();
+        update.setId(id);
+        update.setMark(dto.getMark());
+        update.setType(dto.getType());
+        SrmSupplierDO supplierDO = iSrmSupplierService.update(update);
         return Result.ok(SrmSupplierDTO.convert(supplierDO));
     }
 
     /**
      * 根据供应商信息表主键获取详细信息。
      *
-     * @param id 供应商信息表主键
+     * @param id
+     *         供应商信息表主键
      * @return 供应商信息表详情
      */
     @Parameter(name = "id", description = "供应商信息表主键", in = ParameterIn.PATH, required = true)
@@ -123,9 +136,12 @@ public class SrmSupplierController{
     /**
      * 分页查询供应商信息表。
      *
-     * @param query    查询条件
-     * @param pageNum  当前页码
-     * @param pageSize 每页数量
+     * @param query
+     *         查询条件
+     * @param pageNum
+     *         当前页码
+     * @param pageSize
+     *         每页数量
      * @return 分页对象
      */
     @Operation(summary = "分页查询供应商信息表。", description = "分页查询供应商信息表。")
@@ -137,8 +153,8 @@ public class SrmSupplierController{
         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;
+                ((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));
     }
@@ -171,4 +187,53 @@ public class SrmSupplierController{
         return Result.ok(null);
     }
 
+    @Operation(description = "供应商修改自己的供应商信息")
+    @PostMapping("/self/info")
+    @SaCheckRole(value = {"supplier"})
+    public Result<SrmSupplierDTO> updateSelf(@RequestBody SrmSupplierDTO dto){
+        SessionData sessionData = SaSecurityUtils.findSessionData();
+        String userId = sessionData.getUserId();
+        SrmSupplier supplier = iSrmSupplierService.findByPerson(userId);
+        if(supplier == null){
+            return Result.fail("没有找到供应商信息");
+        }
+        SrmSupplier convert = SrmMapper.INSTANCE.convert(dto);
+        convert.setId(supplier.getId());
+        //不能更新评分和类型
+        convert.setMark(null);
+        convert.setType(null);
+        //兼容移动端不能发送字符串数组问题
+        if(StringUtils.isNotEmpty(dto.getImageStr())){
+            List<String> images = Arrays.asList(dto.getImageStr().split(CommonConst.COMMA_STRING));
+            convert.setImage(JsonUtils.toJson(images));
+        }
+        if(StringUtils.isNotEmpty(dto.getProductStr())){
+            List<String> products = Arrays.asList(dto.getProductStr().split(CommonConst.COMMA_STRING));
+            convert.setProduct(JsonUtils.toJson(products));
+        }
+        if(StringUtils.isNotEmpty(dto.getCertificatesStr())){
+            List<String> certificates = Arrays.asList(dto.getCertificatesStr().split(CommonConst.COMMA_STRING));
+            convert.setCertificates(JsonUtils.toJson(certificates));
+        }
+        SrmSupplierDO update = iSrmSupplierService.update(convert);
+        return Result.ok(SrmMapper.INSTANCE.convert(update.getSupplier()));
+    }
+
+    @Operation(description = "供应商移动端首页,获取自己的优势产品")
+    @GetMapping("/self/product/info")
+    @SaCheckRole(value = {"supplier"})
+    public Result<LinkedHashMap<String, String>> getSelfProducts(){
+        SessionData sessionData = SaSecurityUtils.findSessionData();
+        String userId = sessionData.getUserId();
+        SrmSupplier supplier = iSrmSupplierService.findByPerson(userId);
+        if(supplier == null){
+            return Result.fail("没有找到供应商信息");
+        }
+        List<String> productIds = JsonUtils.toObjectList(supplier.getProduct(), String.class);
+        List<ProductDir> dirs = productDirService.findByIds(productIds);
+        LinkedHashMap<String,String> map = new LinkedHashMap<>(dirs.size());
+        dirs.forEach(e-> map.put(e.getCode(),e.getName()));
+        return Result.ok(map);
+    }
+
 }

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

@@ -34,6 +34,7 @@ public interface SrmMapper{
     @Mapping(target = "ext3", qualifiedByName = "mapToString")
     @Mapping(target = "image", qualifiedByName = "listToString")
     @Mapping(target = "product", qualifiedByName = "listToString")
+    @Mapping(target = "certificates", qualifiedByName = "listToString")
     SrmSupplier convert(SrmSupplierDTO dto);
 
     @Mapping(target = "gmtCreate", dateFormat = "yyyy-MM-dd HH:mm:ss")
@@ -41,6 +42,7 @@ public interface SrmMapper{
     @Mapping(target = "ext3", qualifiedByName = "stringToMap")
     @Mapping(target = "image", qualifiedByName = "stringToList")
     @Mapping(target = "product", qualifiedByName = "stringToList")
+    @Mapping(target = "certificates", qualifiedByName = "stringToList")
     SrmSupplierDTO convert(SrmSupplier dto);
 
     @Mapping(target = "gmtCreate", dateFormat = "yyyy-MM-dd HH:mm:ss")

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

@@ -78,9 +78,34 @@ public class SrmSupplierDTO{
     @Schema(description = "系统ID")
     private String sysId;
 
+    @Schema(description = "企业简介")
+    private String intro;
+
+    @Schema(description = "企业营业执照")
+    private String businessLicense;
+
+    @Schema(description = "国家权威认证机构颁发的证书")
+    private List<String> certificates;
+
     @Schema(description = "联系人姓名")
     private String personName;
 
+    /**
+     * 兼容移动端修改供应商信息接口。
+     */
+    @Schema(description = "图片集合字符串,多个用逗号隔开")
+    private String imageStr;
+    /**
+     * 兼容移动端修改供应商信息接口。
+     */
+    @Schema(description = "产品集合字符串,多个用逗号隔开")
+    private String productStr;
+    /**
+     * 兼容移动端修改供应商信息接口。
+     */
+    @Schema(description = "国家权威认证机构颁发的证书字符串,多个用逗号隔开")
+    private String certificatesStr;
+
 
     public static SrmSupplierDTO convert(SrmSupplierDO supplierDO){
         if(supplierDO == null || supplierDO.getSupplier() == null){

+ 58 - 7
src/main/java/com/kingtom/shengtai/app/affair/service/SupplierJoinHandler.java

@@ -1,6 +1,8 @@
 package com.kingtom.shengtai.app.affair.service;
 
 import java.text.MessageFormat;
+import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.List;
 
 import com.kingtom.kirin.app.affair.AffairConst;
@@ -35,6 +37,7 @@ import jakarta.annotation.PostConstruct;
 import lombok.AllArgsConstructor;
 import lombok.Builder;
 import lombok.NoArgsConstructor;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
@@ -122,11 +125,26 @@ public class SupplierJoinHandler extends AbstractAffairOneHandler{
         SrmSupplier supplier = new SrmSupplier();
         supplier.setName(data.getName());
         supplier.setPerson(info.getSourceId());
-        supplier.setPerson(data.getPhone());
+        supplier.setPhone(data.getPhone());
         supplier.setAddress(data.getAddress());
-        supplier.setType(data.getType());
-        supplier.setProduct(JsonUtils.toJson(data.getProduct()));
-        supplier.setImage(JsonUtils.toJson(data.getImage()));
+        //supplier.setType(data.getType());
+        List<String> productIds = new ArrayList<>();
+        if(StringUtils.isNotEmpty(data.getProduct())){
+            productIds.addAll(Arrays.asList(data.getProduct().split(CommonConst.COMMA_STRING)));
+        }
+        supplier.setProduct(JsonUtils.toJson(productIds));
+        List<String> imageIds = new ArrayList<>();
+        if(StringUtils.isNotEmpty(data.getImage())){
+            imageIds.addAll(Arrays.asList(data.getImage().split(CommonConst.COMMA_STRING)));
+        }
+        supplier.setImage(JsonUtils.toJson(imageIds));
+        supplier.setIntro(data.getIntro());
+        supplier.setBusinessLicense(data.getBusinessLicense());
+        List<String> certificateIds = new ArrayList<>();
+        if(StringUtils.isNotEmpty(data.getCertificates())){
+            certificateIds.addAll(Arrays.asList(data.getCertificates().split(CommonConst.COMMA_STRING)));
+        }
+        supplier.setCertificates(JsonUtils.toJson(certificateIds));
         supplierService.create(supplier);
 
         MsgSummary msgSummary = new MsgSummary();
@@ -162,17 +180,50 @@ public class SupplierJoinHandler extends AbstractAffairOneHandler{
     @AllArgsConstructor
     private static class Data{
 
+        /**
+         * 名称
+         */
         private String name;
 
+        /**
+         * 手机号码
+         */
         private String phone;
 
+        /**
+         * 地址
+         */
         private String address;
 
+        /**
+         * 类型
+         */
         private String type;
 
-        private List<String> product;
-
-        private List<String> image;
+        /**
+         * 优势产品,多个用逗号隔开
+         */
+        private String product;
+
+        /**
+         * ,多个用逗号隔开
+         */
+        private String image;
+
+        /**
+         * 企业简介
+         */
+        private String intro;
+
+        /**
+         * 企业营业执照
+         */
+        private String businessLicense;
+
+        /**
+         * 国家权威认证机构颁发的证书,多个用逗号隔开
+         */
+        private String certificates;
 
     }
 

+ 18 - 4
src/main/java/com/kingtom/shengtai/app/srm/model/SrmSupplier.java

@@ -1,12 +1,11 @@
 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 com.mybatisflex.annotation.Id;
+import com.mybatisflex.annotation.Table;
 import lombok.AllArgsConstructor;
 import lombok.Builder;
 import lombok.Data;
@@ -114,4 +113,19 @@ public class SrmSupplier implements Serializable {
      */
     private String sysId;
 
+    /**
+     * 企业简介
+     */
+    private String intro;
+
+    /**
+     * 企业营业执照
+     */
+    private String businessLicense;
+
+    /**
+     * 国家权威认证机构颁发的证书
+     */
+    private String certificates;
+
 }

+ 16 - 1
src/main/java/com/kingtom/shengtai/app/srm/model/table/SrmSupplierTableDef.java

@@ -26,6 +26,16 @@ public class SrmSupplierTableDef extends TableDef{
      */
     public final QueryColumn ID = new QueryColumn(this, "id");
 
+    /**
+     * 企业营业执照
+     */
+    public final QueryColumn BUSINESS_LICENSE = new QueryColumn(this, "business_license");
+
+    /**
+     * 国家权威认证机构颁发的证书
+     */
+    public final QueryColumn CERTIFICATES = new QueryColumn(this, "certificates");
+
     /**
      * 扩展字段1
      */
@@ -61,6 +71,11 @@ public class SrmSupplierTableDef extends TableDef{
      */
     public final QueryColumn IMAGE = new QueryColumn(this, "image");
 
+    /**
+     * 企业简介
+     */
+    public final QueryColumn INTRO = new QueryColumn(this, "intro");
+
     /**
      * 联系电话
      */
@@ -116,7 +131,7 @@ public class SrmSupplierTableDef extends TableDef{
      */
     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};
+                    EXT3, GMT_CREATE, GMT_MODIFIED, SYS_ID, INTRO, BUSINESS_LICENSE, CERTIFICATES};
 
     public SrmSupplierTableDef(){
         super("public", "srm_supplier");

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

@@ -72,9 +72,9 @@ public class SrmSupplierServiceImpl extends BaseServiceImpl<ISrmSupplierDao, Srm
         if(StringUtils.isEmpty(entity.getName())){
             throw new AppException("供应商名称为空,新建供应商失败!");
         }
-        if(StringUtils.isEmpty(entity.getType())){
-            throw new AppException("供应商类型为空,新建供应商失败!");
-        }
+//        if(StringUtils.isEmpty(entity.getType())){
+//            throw new AppException("供应商类型为空,新建供应商失败!");
+//        }
         if(StringUtils.isEmpty(entity.getPerson())){
             throw new AppException("供应商联系人为空,新建供应商失败!");
         }

+ 8 - 0
src/main/resources/db/V2.04__20240424_modifySrm.sql

@@ -0,0 +1,8 @@
+--供应商信息增加三个属性
+ALTER TABLE "public"."srm_supplier" ADD COLUMN "intro" VARCHAR(1024) COLLATE "pg_catalog"."default";
+ALTER TABLE "public"."srm_supplier" ADD COLUMN "business_license" VARCHAR(64) COLLATE "pg_catalog"."default";
+ALTER TABLE "public"."srm_supplier" ADD COLUMN "certificates" TEXT COLLATE "pg_catalog"."default";
+
+COMMENT ON COLUMN "public"."srm_supplier"."intro" IS '企业简介';
+COMMENT ON COLUMN "public"."srm_supplier"."business_license" IS '企业营业执照';
+COMMENT ON COLUMN "public"."srm_supplier"."certificates" IS ' 国家权威认证机构颁发的证书';