Просмотр исходного кода

Merge remote-tracking branch 'origin/master'

dongke 1 год назад
Родитель
Сommit
10f721ce3e
21 измененных файлов с 417 добавлено и 50 удалено
  1. 15 0
      src/main/java/com/dk/mdm/controller/mst/GoodsSkuController.java
  2. 5 1
      src/main/java/com/dk/mdm/mapper/ivt/InventoryMapper.xml
  3. 7 0
      src/main/java/com/dk/mdm/mapper/mst/GoodsBrandMapper.java
  4. 13 0
      src/main/java/com/dk/mdm/mapper/mst/GoodsBrandMapper.xml
  5. 7 0
      src/main/java/com/dk/mdm/mapper/mst/GoodsCategoryMapper.java
  6. 12 0
      src/main/java/com/dk/mdm/mapper/mst/GoodsCategoryMapper.xml
  7. 9 0
      src/main/java/com/dk/mdm/mapper/mst/GoodsSeriesMapper.java
  8. 28 1
      src/main/java/com/dk/mdm/mapper/mst/GoodsSeriesMapper.xml
  9. 18 9
      src/main/java/com/dk/mdm/mapper/mst/GoodsSkuMapper.xml
  10. 6 0
      src/main/java/com/dk/mdm/mapper/mst/RoleMapper.xml
  11. 9 0
      src/main/java/com/dk/mdm/mapper/mst/UnitMapper.java
  12. 30 1
      src/main/java/com/dk/mdm/mapper/mst/UnitMapper.xml
  13. 60 25
      src/main/java/com/dk/mdm/model/pojo/mst/GoodsSku.java
  14. 2 0
      src/main/java/com/dk/mdm/model/query/ivt/InventoryQuery.java
  15. 7 2
      src/main/java/com/dk/mdm/model/query/mst/GoodsSkuQuery.java
  16. 9 0
      src/main/java/com/dk/mdm/model/response/ivt/InventoryResponse.java
  17. 7 0
      src/main/java/com/dk/mdm/model/response/mst/GoodsSkuResponse.java
  18. 8 1
      src/main/java/com/dk/mdm/model/vo/mst/GoodsSkuVO.java
  19. 28 1
      src/main/java/com/dk/mdm/service/ivt/inventory/InventoryService.java
  20. 131 9
      src/main/java/com/dk/mdm/service/mst/GoodsSkuService.java
  21. 6 0
      src/main/java/com/dk/mdm/service/mst/StaffService.java

+ 15 - 0
src/main/java/com/dk/mdm/controller/mst/GoodsSkuController.java

@@ -2,6 +2,7 @@ package com.dk.mdm.controller.mst;
 
 import com.dk.common.model.pojo.PageList;
 import com.dk.common.response.ResponseResultVO;
+import com.dk.common.util.ExcelUtils;
 import com.dk.mdm.model.pojo.mst.GoodsSku;
 import com.dk.common.service.BaseService;
 import com.dk.mdm.model.query.mst.GoodsSkuQuery;
@@ -9,10 +10,15 @@ import com.dk.mdm.model.response.mst.GoodsSkuResponse;
 import com.dk.mdm.model.vo.mst.GoodsSkuVO;
 import com.dk.mdm.model.vo.mst.SupplierVo;
 import io.swagger.annotations.ApiOperation;
+import org.apache.poi.ss.usermodel.Workbook;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.beans.factory.annotation.Autowired;
 import io.swagger.annotations.Api;
 import com.dk.mdm.service.mst.GoodsSkuService;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.servlet.http.HttpServletResponse;
+import java.util.List;
 
 @Api(tags = "商品档案API接口")
 @RestController
@@ -88,4 +94,13 @@ public class GoodsSkuController{
     public ResponseResultVO<?> insert(@RequestBody GoodsSkuVO goodsSkuVO) {
         return goodsSkuService.insert(goodsSkuVO);
     }
+
+
+    @ApiOperation(value = "导入", notes = "导入")
+    @PostMapping("import/{cpId}")
+    public ResponseResultVO<String > importList(MultipartFile file, HttpServletResponse response , @PathVariable Integer cpId) {
+        List<GoodsSku> list = ExcelUtils.importExcel(file, 1, 1, GoodsSku.class);
+       return goodsSkuService.importSKU(list,response,cpId);
+    }
+
 }

+ 5 - 1
src/main/java/com/dk/mdm/mapper/ivt/InventoryMapper.xml

@@ -57,7 +57,7 @@
                 <result column="cp_id" property="cpId"/>
                 <result column="sku_code" property="skuCode"/>
                 <result column="sku_name" property="skuName"/>
-                  <result column="sku_spec" property="skuSpec"/>
+                <result column="sku_spec" property="skuSpec"/>
                 <result column="sku_model" property="skuModel"/>
                 <result column="brand_name" property="brandName"/>
                 <result column="short_name" property="shortName"/>
@@ -75,6 +75,8 @@
         <result column="seriesName" property="seriesName"/>
         <result column="catName" property="catName"/>
         <result column="price_other" property="priceOther"/>
+        <result column="warning_upper_limit" property="warningUpperLimit"/>
+        <result column="warning_lower_limit" property="warningLowerLimit"/>
         <result column="sku_images" property="skuImages" typeHandler="JsonTypeHandler"/>
         <result column="decimalPlaces" property="decimalPlaces"/>
     </resultMap>
@@ -165,6 +167,8 @@
         ,tmgs.sku_images
         ,tmgs.unit_id
         ,tmgs.sub_unit_id
+        ,tmgs.warning_upper_limit
+        ,tmgs.warning_lower_limit
         ,tmgs.pack_box
         ,tmu.unit_name    AS "unitName"
         ,subtmu.unit_name AS "subUnitName"

+ 7 - 0
src/main/java/com/dk/mdm/mapper/mst/GoodsBrandMapper.java

@@ -32,5 +32,12 @@ public interface GoodsBrandMapper extends BaseMapper<GoodsBrand>{
 
     Integer saveSupplierBrand(String supId,String brandId);
 
+    /**
+     * @desc   : 根据名称查ID
+     * @author : 常皓宁
+     * @date   : 2024/6/12 8:38
+     */
+    GoodsBrandResponse selectByUuId(GoodsBrandQuery goodsBrandQuery);
+
 }
 

+ 13 - 0
src/main/java/com/dk/mdm/mapper/mst/GoodsBrandMapper.xml

@@ -207,4 +207,17 @@
         values (#{supId}::uuid,
                 #{brandId}::uuid)
     </insert>
+
+
+    <!-- 根据名称查ID -->
+    <select id="selectByUuId" resultMap="BaseResultMapResponse">
+        SELECT brand_id
+        FROM dkic_b.t_mst_goods_brand
+        WHERE
+        cp_id = #{cpId}
+        AND flg_valid = TRUE
+        <if test="brandName != null and brandName != ''">
+            AND brand_name = #{brandName}
+        </if>
+    </select>
 </mapper>

+ 7 - 0
src/main/java/com/dk/mdm/mapper/mst/GoodsCategoryMapper.java

@@ -56,6 +56,13 @@ public interface GoodsCategoryMapper extends BaseMapper<GoodsCategory> {
      */
     Integer disableBachByParentId(String id);
 
+    /**
+     * @desc   : 根据名称查ID
+     * @author : 常皓宁
+     * @date   : 2024/6/12 8:38
+     */
+    GoodsCategoryResponse selectByUuId(GoodsCategoryQuery goodsCategoryQuery);
+
 
 }
 

+ 12 - 0
src/main/java/com/dk/mdm/mapper/mst/GoodsCategoryMapper.xml

@@ -256,4 +256,16 @@
             AND cat_name = #{catName}
         </if>
     </select>
+
+    <!-- 根据名称查ID -->
+    <select id="selectByUuId" resultMap="BaseResultMapResponse">
+        SELECT cat_id
+        FROM dkic_b.t_mst_goods_category
+        WHERE
+        cp_id = #{cpId}
+        AND flg_valid = TRUE
+        <if test="catName != null and catName != ''">
+            AND cat_name = #{catName}
+        </if>
+    </select>
 </mapper>

+ 9 - 0
src/main/java/com/dk/mdm/mapper/mst/GoodsSeriesMapper.java

@@ -5,8 +5,10 @@ import com.dk.mdm.model.pojo.mst.GoodsSeries;
 import com.dk.common.mapper.BaseMapper;
 import com.dk.mdm.model.query.mst.GoodsBrandQuery;
 import com.dk.mdm.model.query.mst.GoodsSeriesQuery;
+import com.dk.mdm.model.query.mst.UnitQuery;
 import com.dk.mdm.model.response.mst.GoodsBrandResponse;
 import com.dk.mdm.model.response.mst.GoodsSeriesResponse;
+import com.dk.mdm.model.response.mst.UnitResponse;
 import org.springframework.stereotype.Repository;
 
 import java.util.List;
@@ -36,6 +38,13 @@ public interface GoodsSeriesMapper extends BaseMapper<GoodsSeries>{
      */
     Long countByCond(GoodsSeriesQuery goodsSeriesQuery);
 
+    /**
+     * @desc   : 根据名称查ID
+     * @author : 常皓宁
+     * @date   : 2024/6/12 8:38
+     */
+    GoodsSeriesResponse selectByUuId(GoodsSeriesQuery goodsSeriesQuery);
+
 
 }
 

+ 28 - 1
src/main/java/com/dk/mdm/mapper/mst/GoodsSeriesMapper.xml

@@ -27,6 +27,23 @@
         <result column="op_db_user" property="opDbUser"/>
     </resultMap>
 
+    <resultMap id="BaseResultMapResponse" type="com.dk.mdm.model.response.mst.GoodsSeriesResponse">
+        <id column="series_id" property="seriesId"/>
+        <result column="series_code" property="seriesCode"/>
+        <result column="series_name" property="seriesName"/>
+        <result column="display_no" property="displayNo"/>
+        <result column="remarks" property="remarks"/>
+        <result column="flg_valid" property="flgValid"/>
+        <result column="cp_id" property="cpId"/>
+        <result column="op_create_time" property="opCreateTime" typeHandler="TimestampTypeHandler"/>
+        <result column="op_create_user_id" property="opCreateUserId" typeHandler="UuidTypeHandler"/>
+        <result column="op_update_time" property="opUpdateTime" typeHandler="TimestampTypeHandler"/>
+        <result column="op_update_user_id" property="opUpdateUserId" typeHandler="UuidTypeHandler"/>
+        <result column="op_app_code" property="opAppCode"/>
+        <result column="op_timestamp" property="opTimestamp" typeHandler="TimestampTypeHandler"/>
+        <result column="op_db_user" property="opDbUser"/>
+    </resultMap>
+
     <!-- 通用条件列 -->
     <sql id="Condition">
         <where>
@@ -188,6 +205,16 @@
         </if>
     </select>
 
-
+    <!-- 根据名称查ID -->
+    <select id="selectByUuId" resultMap="BaseResultMapResponse">
+        SELECT series_id
+        FROM dkic_b.t_mst_goods_series
+        WHERE
+        cp_id = #{cpId}
+        AND flg_valid = TRUE
+        <if test="seriesName != null and seriesName != ''">
+            AND series_name = #{seriesName}
+        </if>
+    </select>
 
 </mapper>

+ 18 - 9
src/main/java/com/dk/mdm/mapper/mst/GoodsSkuMapper.xml

@@ -8,7 +8,7 @@
         sku_id, sku_code, sku_name, sku_model, brand_id, category_id, unit_id, sub_unit_id, conversion_factor
         , series_id, sku_spec, price_purchase, price_standard, price_wholesale, price_limited, price_other,sku_images
         , remarks, flg_valid, cp_id, op_create_time, op_create_user_id, op_update_time, op_update_user_id
-        , op_app_code, op_timestamp, op_db_user
+        , op_app_code, op_timestamp, op_db_user, warning_upper_limit, warning_lower_limit
     </sql>
 
     <!-- 通用查询映射结果 -->
@@ -30,18 +30,20 @@
                 <result column="price_limited" property="priceLimited"/>
                 <result column="price_other" property="priceOther"/>
                 <result column="sku_images" property="skuImages" typeHandler="JsonTypeHandler"/>
+                <result column="warning_lower_limit" property="warningLowerLimit"/>
+                <result column="warning_upper_limit" property="warningUpperLimit"/>
                 <result column="remarks" property="remarks"/>
-        <result column="flg_valid" property="flgValid"/>
-        <result column="flg_sub_unit" property="flgSubUnit"/>
-        <result column="flg_opening_inv" property="flgOpeningInv"/>
-        <result column="flg_price" property="flgPrice"/>
+                <result column="flg_valid" property="flgValid"/>
+                <result column="flg_sub_unit" property="flgSubUnit"/>
+                <result column="flg_opening_inv" property="flgOpeningInv"/>
+                <result column="flg_price" property="flgPrice"/>
                 <result column="cp_id" property="cpId"/>
-            <result column="op_create_time" property="opCreateTime" typeHandler="TimestampTypeHandler"/>
+                <result column="op_create_time" property="opCreateTime" typeHandler="TimestampTypeHandler"/>
                 <result column="op_create_user_id" property="opCreateUserId" typeHandler="UuidTypeHandler"/>
-            <result column="op_update_time" property="opUpdateTime" typeHandler="TimestampTypeHandler"/>
+                <result column="op_update_time" property="opUpdateTime" typeHandler="TimestampTypeHandler"/>
                 <result column="op_update_user_id" property="opUpdateUserId" typeHandler="UuidTypeHandler"/>
                 <result column="op_app_code" property="opAppCode"/>
-            <result column="op_timestamp" property="opTimestamp" typeHandler="TimestampTypeHandler"/>
+                <result column="op_timestamp" property="opTimestamp" typeHandler="TimestampTypeHandler"/>
                 <result column="op_db_user" property="opDbUser"/>
         <result column="decimalPlaces" property="decimalPlaces"/>
     </resultMap>
@@ -49,7 +51,8 @@
     <sql id="Base_Column_List_JOIN">
         tmgs.price_other,tmgs.sku_id, tmgs.sku_code, tmgs.sku_name, tmgs.sku_model, tmgs.brand_id, tmgs.category_id, tmgs.unit_id, tmgs.sub_unit_id,
               tmgs.conversion_factor, tmgs.series_id, tmgs.sku_spec, tmgs.price_purchase, tmgs.price_standard,
-           tmgs.pack_box,   tmgs.price_wholesale, tmgs.price_limited, tmgs.price_other,tmgs.sku_images, tmgs.remarks, tmgs.flg_valid, tmgs.flg_sub_unit,  tmgs.flg_opening_inv,  tmgs.flg_price,  tmgs.cp_id
+           tmgs.pack_box,   tmgs.price_wholesale, tmgs.price_limited, tmgs.price_other,tmgs.sku_images, tmgs.remarks, tmgs.flg_valid, tmgs.flg_sub_unit,  tmgs.flg_opening_inv,  tmgs.flg_price,  tmgs.cp_id,
+        tmgs.warning_lower_limit, tmgs.warning_upper_limit
     </sql>
     <resultMap id="BaseResultMapResponse" type="com.dk.mdm.model.response.mst.GoodsSkuResponse">
         <id column="sku_id" property="skuId"/>
@@ -87,6 +90,8 @@
         <result column="decimalPlaces" property="decimalPlaces"/>
         <result column="intoing_box" property="box" />
         <result column="intoing_piece" property="piece" />
+        <result column="warning_lower_limit" property="warningLowerLimit"/>
+        <result column="warning_upper_limit" property="warningUpperLimit"/>
     </resultMap>
 
     <!-- 通用条件列 -->
@@ -290,6 +295,8 @@
             remarks,
             cp_id,
             op_app_code,
+            warning_lower_limit,
+            warning_upper_limit
         </trim>
         )
         values
@@ -314,6 +321,8 @@
                 #{item.remarks},
                 #{item.cpId},
                 #{item.opAppCode},
+                #{item.warningLowerLimit},
+                #{item.warningUpperLimit}
             </trim>
             )
         </foreach>

+ 6 - 0
src/main/java/com/dk/mdm/mapper/mst/RoleMapper.xml

@@ -196,6 +196,9 @@
             cp_id,
             op_app_code,
             sys_code,
+            flg_nolimit_fun,
+            flg_nolimit_pvw,
+            flg_nolimit_sen,
             op_create_user_id,
         </trim>
         )
@@ -211,6 +214,9 @@
                 #{item.cpId},
                 #{item.opAppCode},
                 #{item.sysCode},
+                #{item.flgNolimitFun},
+                #{item.flgNolimitPvw},
+                #{item.flgNolimitSen},
                 #{item.opCreateUserId}::uuid,
             </trim>
             )

+ 9 - 0
src/main/java/com/dk/mdm/mapper/mst/UnitMapper.java

@@ -2,8 +2,10 @@ package com.dk.mdm.mapper.mst;
 
 import com.dk.mdm.model.pojo.mst.Unit;
 import com.dk.common.mapper.BaseMapper;
+import com.dk.mdm.model.query.mst.GoodsCategoryQuery;
 import com.dk.mdm.model.query.mst.UnitQuery;
 import com.dk.mdm.model.response.mst.GoodsBrandResponse;
+import com.dk.mdm.model.response.mst.GoodsCategoryResponse;
 import com.dk.mdm.model.response.mst.UnitResponse;
 import org.springframework.stereotype.Repository;
 
@@ -28,6 +30,13 @@ public interface UnitMapper extends BaseMapper<Unit>{
      */
     Long countByCond(UnitQuery UnitQuery);
 
+    /**
+     * @desc   : 根据名称查ID
+     * @author : 常皓宁
+     * @date   : 2024/6/12 8:38
+     */
+    UnitResponse selectByUuId(UnitQuery unitQuery);
+
 
 }
 

+ 30 - 1
src/main/java/com/dk/mdm/mapper/mst/UnitMapper.xml

@@ -27,6 +27,25 @@
                 <result column="op_db_user" property="opDbUser"/>
     </resultMap>
 
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMapResponse" type="com.dk.mdm.model.response.mst.UnitResponse">
+        <id column="unit_id" property="unitId"/>
+        <result column="unit_code" property="unitCode"/>
+        <result column="unit_name" property="unitName"/>
+        <result column="decimal_places" property="decimalPlaces"/>
+        <result column="display_no" property="displayNo"/>
+        <result column="remarks" property="remarks"/>
+        <result column="flg_valid" property="flgValid"/>
+        <result column="cp_id" property="cpId"/>
+        <result column="op_create_time" property="opCreateTime" typeHandler="TimestampTypeHandler"/>
+        <result column="op_create_user_id" property="opCreateUserId" typeHandler="UuidTypeHandler"/>
+        <result column="op_update_time" property="opUpdateTime" typeHandler="TimestampTypeHandler"/>
+        <result column="op_update_user_id" property="opUpdateUserId" typeHandler="UuidTypeHandler"/>
+        <result column="op_app_code" property="opAppCode"/>
+        <result column="op_timestamp" property="opTimestamp" typeHandler="TimestampTypeHandler"/>
+        <result column="op_db_user" property="opDbUser"/>
+    </resultMap>
+
     <!-- 通用条件列 -->
     <sql id="Condition">
         <where>
@@ -184,6 +203,16 @@
         </if>
     </select>
 
-
+    <!-- 根据名称查ID -->
+    <select id="selectByUuId" resultMap="BaseResultMapResponse">
+        SELECT unit_id
+        FROM dkic_b.t_mst_unit
+        WHERE
+        cp_id = #{cpId}
+        AND flg_valid = TRUE
+        <if test="unitName != null and unitName != ''">
+            AND unit_name = #{unitName}
+        </if>
+    </select>
 
 </mapper>

+ 60 - 25
src/main/java/com/dk/mdm/model/pojo/mst/GoodsSku.java

@@ -35,6 +35,13 @@ import java.time.LocalDateTime;
 @ApiModel(value="实体类:商品档案", description="表名:t_mst_goods_sku")
 public class GoodsSku extends PageInfo<GoodsSku> implements Serializable {
 
+    /**
+     * 错误信息
+     */
+    @Excel(name = "错误提示")
+    @ApiModelProperty(value = "错误提示")
+    private String errorMessage;
+
     /*
      * 数据库字段
      */
@@ -50,25 +57,21 @@ public class GoodsSku extends PageInfo<GoodsSku> implements Serializable {
     /**
      * 辅助单位标识
      */
-    @Excel(name = "辅助单位标识")
     @ApiModelProperty(value = "辅助单位标识")
     private Boolean flgSubUnit;
     /**
      * 期初库存标识
      */
-    @Excel(name = "期初库存标识")
     @ApiModelProperty(value = "期初库存标识")
     private Boolean flgOpeningInv;
     /**
      * 价格体系标识
      */
-    @Excel(name = "价格体系标识")
     @ApiModelProperty(value = "价格体系标识")
     private Boolean flgPrice;
     /**
      * 包装
      */
-    @Excel(name = "包装")
     @ApiModelProperty(value = "包装")
     private BigDecimal packBox;
     /**
@@ -79,12 +82,6 @@ public class GoodsSku extends PageInfo<GoodsSku> implements Serializable {
     private String skuCode;
 
     /**
-     * 批发价
-     */
-    @Excel(name = "其他价格")
-    @ApiModelProperty(value = "其他价格")
-    private BigDecimal priceOther;
-    /**
      * 商品名称
      */
     @Excel(name = "商品名称")
@@ -101,18 +98,55 @@ public class GoodsSku extends PageInfo<GoodsSku> implements Serializable {
 
 
     /**
-     * 商品品牌
+     * 品牌名称
      */
     @Excel(name = "商品品牌")
     @ApiModelProperty(value = "商品品牌")
     @TableField(typeHandler = UuidTypeHandler.class)
+    private String brandName;
+
+    /**
+     * 商品种类
+     */
+    @Excel(name = "商品种类")
+    @ApiModelProperty(value = "商品种类")
+    @TableField(typeHandler = UuidTypeHandler.class)
+    private String categoryName;
+
+    /**
+     * 计量单位
+     */
+    @Excel(name = "计量单位")
+    @ApiModelProperty(value = "计量单位")
+    @TableField(typeHandler = UuidTypeHandler.class)
+    private String unitName;
+
+    /**
+     * 辅助单位
+     */
+    @Excel(name = "辅助单位")
+    @ApiModelProperty(value = "辅助单位")
+    @TableField(typeHandler = UuidTypeHandler.class)
+    private String subUnitName;
+
+    /**
+     * 商品系列
+     */
+    @Excel(name = "商品系列")
+    @ApiModelProperty(value = "商品系列")
+    private String seriesName;
+
+    /**
+     * 商品品牌
+     */
+    @ApiModelProperty(value = "商品品牌")
+    @TableField(typeHandler = UuidTypeHandler.class)
     private String brandId;
 
 
     /**
      * 商品种类
      */
-    @Excel(name = "商品种类")
     @ApiModelProperty(value = "商品种类")
     @TableField(typeHandler = UuidTypeHandler.class)
     private String categoryId;
@@ -121,7 +155,6 @@ public class GoodsSku extends PageInfo<GoodsSku> implements Serializable {
     /**
      * 计量单位
      */
-    @Excel(name = "计量单位")
     @ApiModelProperty(value = "计量单位")
     @TableField(typeHandler = UuidTypeHandler.class)
     private String unitId;
@@ -130,7 +163,6 @@ public class GoodsSku extends PageInfo<GoodsSku> implements Serializable {
     /**
      * 辅助单位
      */
-    @Excel(name = "辅助单位")
     @ApiModelProperty(value = "辅助单位")
     @TableField(typeHandler = UuidTypeHandler.class)
     private String subUnitId;
@@ -147,7 +179,6 @@ public class GoodsSku extends PageInfo<GoodsSku> implements Serializable {
     /**
      * 商品系列
      */
-    @Excel(name = "商品系列")
     @ApiModelProperty(value = "商品系列")
     @TableField(typeHandler = UuidTypeHandler.class)
     private String seriesId;
@@ -192,13 +223,19 @@ public class GoodsSku extends PageInfo<GoodsSku> implements Serializable {
     @ApiModelProperty(value = "销售限价")
     private BigDecimal priceLimited;
 
+    /**
+     * 其他价
+     */
+    @Excel(name = "其他价")
+    @ApiModelProperty(value = "其他价")
+    private BigDecimal priceOther;
+
 
 
 
     /**
      * 商品图片 (index(显示顺序)、name(文件名)、path(路径)、type(类型)、time(上传时间)...)
      */
-    @Excel(name = "商品图片 (index(显示顺序)、name(文件名)、path(路径)、type(类型)、time(上传时间)...)")
     @ApiModelProperty(value = "商品图片 (index(显示顺序)、name(文件名)、path(路径)、type(类型)、time(上传时间)...)")
     @TableField(typeHandler = JsonTypeHandler.class)
     private JSONArray skuImages;
@@ -215,7 +252,6 @@ public class GoodsSku extends PageInfo<GoodsSku> implements Serializable {
     /**
      * 有效标识 (1:正常 0:停用)
      */
-    @Excel(name = "有效标识 (1:正常 0:停用)")
     @ApiModelProperty(value = "有效标识 (1:正常 0:停用)")
     private Boolean flgValid;
 
@@ -223,7 +259,6 @@ public class GoodsSku extends PageInfo<GoodsSku> implements Serializable {
     /**
      * 企业ID
      */
-    @Excel(name = "企业ID")
     @ApiModelProperty(value = "企业ID")
     @TableField(fill = FieldFill.INSERT)
     private Integer cpId;
@@ -232,7 +267,6 @@ public class GoodsSku extends PageInfo<GoodsSku> implements Serializable {
     /**
      * 创建时间 (触发器自动处理)
      */
-    @Excel(name = "创建时间 (触发器自动处理)", format = "yyyy-MM-dd HH:mm:ss", width = 20)
     @ApiModelProperty(value = "创建时间 (触发器自动处理)")
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
     @TableField(typeHandler = TimestampTypeHandler.class)
@@ -242,7 +276,6 @@ public class GoodsSku extends PageInfo<GoodsSku> implements Serializable {
     /**
      * 创建用户 (触发器自动处理)
      */
-    @Excel(name = "创建用户 (触发器自动处理)")
     @ApiModelProperty(value = "创建用户 (触发器自动处理)")
     @TableField(typeHandler = UuidTypeHandler.class)
     private String opCreateUserId;
@@ -251,7 +284,6 @@ public class GoodsSku extends PageInfo<GoodsSku> implements Serializable {
     /**
      * 修改时间 (触发器自动处理)
      */
-    @Excel(name = "修改时间 (触发器自动处理)", format = "yyyy-MM-dd HH:mm:ss", width = 20)
     @ApiModelProperty(value = "修改时间 (触发器自动处理)")
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
     @TableField(typeHandler = TimestampTypeHandler.class)
@@ -261,7 +293,6 @@ public class GoodsSku extends PageInfo<GoodsSku> implements Serializable {
     /**
      * 修改用户 (触发器自动处理)
      */
-    @Excel(name = "修改用户 (触发器自动处理)")
     @ApiModelProperty(value = "修改用户 (触发器自动处理)")
     @TableField(typeHandler = UuidTypeHandler.class)
     private String opUpdateUserId;
@@ -270,7 +301,6 @@ public class GoodsSku extends PageInfo<GoodsSku> implements Serializable {
     /**
      * 数据操作应用 (触发器自动处理)
      */
-    @Excel(name = "数据操作应用 (触发器自动处理)")
     @ApiModelProperty(value = "数据操作应用 (触发器自动处理)")
     private String opAppCode;
 
@@ -278,7 +308,6 @@ public class GoodsSku extends PageInfo<GoodsSku> implements Serializable {
     /**
      * 数据时间戳 (触发器自动处理)
      */
-    @Excel(name = "数据时间戳 (触发器自动处理)")
     @ApiModelProperty(value = "数据时间戳 (触发器自动处理)")
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
     @TableField(typeHandler = TimestampTypeHandler.class)
@@ -288,7 +317,6 @@ public class GoodsSku extends PageInfo<GoodsSku> implements Serializable {
     /**
      * 数据操作数据库用户 (触发器自动处理)
      */
-    @Excel(name = "数据操作数据库用户 (触发器自动处理)")
     @ApiModelProperty(value = "数据操作数据库用户 (触发器自动处理)")
     private String opDbUser;
 
@@ -309,6 +337,13 @@ public class GoodsSku extends PageInfo<GoodsSku> implements Serializable {
      * @TableField(exist = false)
      */
 
+    @Excel(name = "警戒下限")
+    @ApiModelProperty(value = "警戒下限")
+    private Long warningLowerLimit;
+
+    @Excel(name = "警戒上限")
+    @ApiModelProperty(value = "警戒上限")
+    private Long warningUpperLimit;
 
     private static final long serialVersionUID = 1L;
 

+ 2 - 0
src/main/java/com/dk/mdm/model/query/ivt/InventoryQuery.java

@@ -152,6 +152,8 @@ public class InventoryQuery extends PageInfo<InventoryQuery>{
     private String desc;
 
     private Boolean invQtyFlag;
+
+    private Boolean winning;
     /*
      * 相关属性
      * @TableField(exist = false)

+ 7 - 2
src/main/java/com/dk/mdm/model/query/mst/GoodsSkuQuery.java

@@ -179,7 +179,6 @@ public class GoodsSkuQuery extends PageInfo<GoodsSku> implements Serializable {
     /**
      * 商品图片 (index(显示顺序)、name(文件名)、path(路径)、type(类型)、time(上传时间)...)
      */
-    @Excel(name = "商品图片 (index(显示顺序)、name(文件名)、path(路径)、type(类型)、time(上传时间)...)")
     @ApiModelProperty(value = "商品图片 (index(显示顺序)、name(文件名)、path(路径)、type(类型)、time(上传时间)...)")
     @TableField(typeHandler = JsonTypeHandler.class)
     private JSONArray skuImages;
@@ -286,7 +285,6 @@ public class GoodsSkuQuery extends PageInfo<GoodsSku> implements Serializable {
      * @author : 宋扬
      * @date   : 2024/3/2 9:31
      */
-    @Excel(name = "有效标识 (1:正常 0:停用)")
     @ApiModelProperty(value = "有效标识 (1:正常 0:停用)")
     private List<Boolean> flgValidList;
 
@@ -309,6 +307,13 @@ public class GoodsSkuQuery extends PageInfo<GoodsSku> implements Serializable {
      * @TableField(exist = false)
      */
 
+    @Excel(name = "警戒下限")
+    @ApiModelProperty(value = "警戒下限")
+    private Long warningLowerLimit;
+
+    @Excel(name = "警戒上限")
+    @ApiModelProperty(value = "警戒上限")
+    private Long warningUpperLimit;
 
     private static final long serialVersionUID = 1L;
 

+ 9 - 0
src/main/java/com/dk/mdm/model/response/ivt/InventoryResponse.java

@@ -285,6 +285,15 @@ public class InventoryResponse {
     @TableField(exist = false)
     private Integer decimalPlaces;
 
+    // 警戒上限
+    private Long warningUpperLimit;
+    // 警戒下限
+    private Long warningLowerLimit;
+
+    /**
+     * 库存预警消息
+     * */
+    private String warningMsg;
 
     private static final long serialVersionUID = 1L;
 

+ 7 - 0
src/main/java/com/dk/mdm/model/response/mst/GoodsSkuResponse.java

@@ -387,6 +387,13 @@ public class GoodsSkuResponse implements Serializable {
      * @TableField(exist = false)
      */
 
+    @Excel(name = "警戒下限")
+    @ApiModelProperty(value = "警戒下限")
+    private Long warningLowerLimit;
+
+    @Excel(name = "警戒上限")
+    @ApiModelProperty(value = "警戒上限")
+    private Long warningUpperLimit;
 
     private static final long serialVersionUID = 1L;
 

+ 8 - 1
src/main/java/com/dk/mdm/model/vo/mst/GoodsSkuVO.java

@@ -215,7 +215,6 @@ public class GoodsSkuVO implements Serializable {
     /**
      * 商品图片 (index(显示顺序)、name(文件名)、path(路径)、type(类型)、time(上传时间)...)
      */
-    @Excel(name = "商品图片 (index(显示顺序)、name(文件名)、path(路径)、type(类型)、time(上传时间)...)")
     @ApiModelProperty(value = "商品图片 (index(显示顺序)、name(文件名)、path(路径)、type(类型)、time(上传时间)...)")
     @TableField(typeHandler = JsonTypeHandler.class)
     private JSONArray skuImages;
@@ -337,6 +336,14 @@ public class GoodsSkuVO implements Serializable {
      * @TableField(exist = false)
      */
 
+    @Excel(name = "警戒下限")
+    @ApiModelProperty(value = "警戒下限")
+    private Long warningLowerLimit;
+
+    @Excel(name = "警戒上限")
+    @ApiModelProperty(value = "警戒上限")
+    private Long warningUpperLimit;
+
 
     private static final long serialVersionUID = 1L;
 

+ 28 - 1
src/main/java/com/dk/mdm/service/ivt/inventory/InventoryService.java

@@ -101,7 +101,34 @@ public class InventoryService extends BaseService<Inventory> {
      */
     @Pagination
     public ResponseResultVO<PageList<InventoryResponse>> selectByCond(InventoryQuery inboundQuery) {
-        return super.mergeListWithCount(inboundQuery, inventoryMapper.selectByCond(inboundQuery), inventoryMapper.countByCond(inboundQuery));
+
+        ResponseResultVO<PageList<InventoryResponse>> pageListResponseResultVO = super.mergeListWithCount(inboundQuery, inventoryMapper.selectByCond(inboundQuery), inventoryMapper.countByCond(inboundQuery));
+        if (inboundQuery.getWinning()!=null && inboundQuery.getWinning() == true){
+            PageList<InventoryResponse> data = pageListResponseResultVO.getData();
+            List<InventoryResponse> list = data.getList();
+            List<InventoryResponse> newList = list.stream().filter(item ->
+                    (
+                            item.getWarningLowerLimit()!= 0
+                            || item.getWarningUpperLimit() != 0)
+                            && (item.getInvQty().longValue()>item.getWarningLowerLimit()
+                            || item.getInvQty().longValue()>item.getWarningUpperLimit())
+                    ).collect(Collectors.toList());
+            newList.forEach(item -> {
+                int invQty = item.getInvQty().intValue();
+                Long warningLowerLimit = item.getWarningLowerLimit();
+                Long warningUpperLimit = item.getWarningUpperLimit();
+                if (invQty > warningLowerLimit){
+                    item.setWarningMsg("超出警戒上限");
+                }
+                if (invQty > warningUpperLimit){
+                    item.setWarningMsg("超出警戒下限");
+                }
+            });
+            data.setList(newList);
+            pageListResponseResultVO.setData(data);
+        }
+
+        return pageListResponseResultVO;
     }
 
 

+ 131 - 9
src/main/java/com/dk/mdm/service/mst/GoodsSkuService.java

@@ -1,23 +1,26 @@
 package com.dk.mdm.service.mst;
 
+import com.dk.common.exception.BaseBusinessException;
 import com.dk.common.infrastructure.annotaiton.Pagination;
 import com.dk.common.infrastructure.constant.Constant;
+import com.dk.common.infrastructure.enums.ErrorCodeEnum;
 import com.dk.common.model.pojo.PageList;
 import com.dk.common.response.ResponseResultUtil;
 import com.dk.common.response.ResponseResultVO;
+import com.dk.common.util.ExcelUtils;
 import com.dk.mdm.infrastructure.convert.mst.GoodsSkuConvert;
 import com.dk.mdm.infrastructure.util.AuthUtils;
+import com.dk.mdm.mapper.mst.*;
+import com.dk.mdm.model.pojo.mst.GoodsBrand;
+import com.dk.mdm.model.pojo.mst.GoodsCategory;
 import com.dk.mdm.model.pojo.mst.GoodsSku;
-import com.dk.mdm.mapper.mst.GoodsSkuMapper;
 import com.dk.common.service.BaseService;
 import com.dk.common.mapper.BaseMapper;
 import com.dk.mdm.model.pojo.mst.Role;
 import com.dk.mdm.model.query.mac.OtherReceivableItemQuery;
-import com.dk.mdm.model.query.mst.GoodsSkuQuery;
-import com.dk.mdm.model.query.mst.RoleQuery;
+import com.dk.mdm.model.query.mst.*;
 import com.dk.mdm.model.response.mac.OtherReceivableItemResponse;
-import com.dk.mdm.model.response.mst.GoodsSkuResponse;
-import com.dk.mdm.model.response.mst.RoleResponse;
+import com.dk.mdm.model.response.mst.*;
 import com.dk.mdm.model.vo.ivt.InOutRecordVO;
 import com.dk.mdm.model.vo.ivt.InboundItemVO;
 import com.dk.mdm.model.vo.ivt.InboundVO;
@@ -26,17 +29,20 @@ import com.dk.mdm.model.vo.mst.RoleVo;
 import com.dk.mdm.service.common.CommonService;
 import com.dk.mdm.service.ivt.inbound.InboundCheckService;
 import com.dk.mdm.service.ivt.inventory.InventoryService;
+import org.apache.poi.ss.usermodel.Workbook;
 import org.springframework.stereotype.Service;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.transaction.annotation.Transactional;
+import org.springframework.web.bind.annotation.PathVariable;
 
+import javax.servlet.http.HttpServletResponse;
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.IOException;
 import java.math.BigDecimal;
 import java.time.LocalDate;
 import java.time.LocalDateTime;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 
 @Service
 @Transactional
@@ -59,6 +65,19 @@ public class GoodsSkuService extends BaseService<GoodsSku> {
 
 	@Autowired
 	InventoryService inventoryService;
+
+	@Autowired
+	private GoodsBrandMapper goodsBrandMapper;
+
+	@Autowired
+	private GoodsCategoryMapper	goodsCategoryMapper;
+
+	@Autowired
+	private UnitMapper unitMapper;
+
+	@Autowired
+	private GoodsSeriesMapper goodsSeriesMapper;
+
  /**
      * @desc   : 重写组件
      * @author : 王英杰
@@ -153,4 +172,107 @@ public class GoodsSkuService extends BaseService<GoodsSku> {
 		return ResponseResultUtil.success();
 	}
 
+	/**
+	 * @desc   : 导入
+	 * @author : 常皓宁
+	 * @date   : 2024/6/7 11:41
+	 */
+	@Transactional(rollbackFor = {Exception.class})
+	public ResponseResultVO<String> importSKU(List<GoodsSku> list, HttpServletResponse response,@PathVariable Integer cpId) {
+		List<GoodsSku> messageList = new ArrayList<>();
+		Workbook workbook = null;
+		Boolean importMessage = false;
+		//规则校验
+		for (GoodsSku goodsSku : list) {
+			goodsSku.setCpId(cpId);
+			goodsSku.setErrorMessage("");
+			//TODO 校验规则
+			//品牌
+			if (goodsSku.getBrandName()!=null ||goodsSku.getBrandName()!= "") {
+				String brandName = goodsSku.getBrandName();
+				GoodsBrandResponse goodsBrandResponse = goodsBrandMapper.selectByUuId(new GoodsBrandQuery().setBrandName(brandName).setCpId(goodsSku.getCpId()));
+				if(goodsBrandResponse == null){
+					goodsSku.setErrorMessage("1.商品品牌填写错误");
+					importMessage = true;
+				}else{
+					goodsSku.setBrandId(goodsBrandResponse.getBrandId());
+				}
+			}
+			//种类
+			if (goodsSku.getCategoryName()!=null ||goodsSku.getCategoryName()!= "") {
+				String CatagoryName = goodsSku.getCategoryName();
+				GoodsCategoryResponse goodsCategoryResponse = goodsCategoryMapper.selectByUuId(new GoodsCategoryQuery().setCatName(CatagoryName).setCpId(goodsSku.getCpId()));
+				if(goodsCategoryResponse == null){
+					goodsSku.setErrorMessage(goodsSku.getErrorMessage() + "2.商品种类填写错误");
+					importMessage = true;
+				}else{
+					goodsSku.setCategoryId(goodsCategoryResponse.getCatId());
+				}
+			}
+			//计量单位
+			if (goodsSku.getUnitName()!=null ||goodsSku.getUnitName()!= "") {
+				String unintName = goodsSku.getUnitName();
+				UnitResponse unitResponse = unitMapper.selectByUuId(new UnitQuery().setUnitName(unintName).setCpId(goodsSku.getCpId()));
+				if(unitResponse == null){
+					goodsSku.setErrorMessage(goodsSku.getErrorMessage() + "3.计量单位填写错误");
+					importMessage = true;
+				}else{
+					goodsSku.setUnitId(unitResponse.getUnitId());
+				}
+			}
+			//辅助单位
+			if (goodsSku.getSubUnitName()!=null ||goodsSku.getSubUnitName()!= "") {
+				String subUnintName = goodsSku.getSubUnitName();
+				UnitResponse unitResponse = unitMapper.selectByUuId(new UnitQuery().setUnitName(subUnintName).setCpId(goodsSku.getCpId()));
+				if(unitResponse == null){
+					goodsSku.setErrorMessage(goodsSku.getErrorMessage()  + "4.辅助单位填写错误");
+					importMessage = true;
+				}else{
+					goodsSku.setSubUnitId(unitResponse.getUnitId());
+				}
+			}
+			//商品系列
+			if (goodsSku.getSeriesName()!=null ||goodsSku.getSeriesName()!= "") {
+				String seriesName = goodsSku.getSeriesName();
+				GoodsSeriesResponse goodsSeriesResponse = goodsSeriesMapper.selectByUuId(new GoodsSeriesQuery().setSeriesName(seriesName).setCpId(goodsSku.getCpId()));
+				if(goodsSeriesResponse == null){
+					goodsSku.setErrorMessage(goodsSku.getErrorMessage() + "5.商品系列填写错误");
+					importMessage = true;
+				}else{
+					goodsSku.setSubUnitId(goodsSeriesResponse.getSeriesId());
+				}
+			}
+			messageList.add(goodsSku);
+		}
+
+
+		//导出错误提示
+		if (importMessage) {
+			workbook = ExcelUtils.exportExcelUrl(messageList, "错误数据反馈", "错误数据反馈", GoodsSku.class, "错误数据反馈" + ".xls", response);
+			UUID uuid = UUID.randomUUID();
+			String randomUUIDString = uuid.toString();
+			//TODO 导出文件位置
+			String fileName = "D:/练习/" + randomUUIDString;
+			File outputFile = new File(fileName);
+			//创建文件夹
+			if (!outputFile.exists()) {
+				outputFile.mkdir();
+			}
+			File uploadFile = new File(fileName, "错误数据反馈.xls");
+			try (FileOutputStream fos = new FileOutputStream(uploadFile)) {
+				workbook.write(fos);
+			} catch (IOException e) {
+				e.printStackTrace();
+			}
+			return ResponseResultUtil.error(-300,"D:/练习/" + randomUUIDString + "/错误数据反馈.xls");
+		}
+		else{
+			//插入数据
+			for (GoodsSku goodsSku : messageList) {
+				super.insert(goodsSku);
+			}
+			return ResponseResultUtil.success();
+		}
+	}
+
 }

+ 6 - 0
src/main/java/com/dk/mdm/service/mst/StaffService.java

@@ -335,6 +335,12 @@ public class StaffService extends BaseService<Staff> {
             role.setDisplayNo((Integer) m.get("displayNo"));
             role.setCpId(cpId);
             role.setOpCreateUserId(staffId);
+            // 标准版 不限制权限
+            if (Constant.STD.equals(gradeCode)) {
+                role.setFlgNolimitFun(true);
+                role.setFlgNolimitPvw(true);
+                role.setFlgNolimitSen(true);
+            }
             listR.add(role);
         }
         roleMapper.insertBatch(listR);