home преди 2 години
родител
ревизия
762718193a
променени са 21 файла, в които са добавени 789 реда и са изтрити 14 реда
  1. 3 9
      bladex/blade-service-api/blade-system-api/src/main/java/org/springblade/system/feign/ISysClientFallback.java
  2. 1 1
      hx-common/code-generator/src/main/java/com/fjhx/modular/Victoriatourist.java
  3. 2 1
      hx-common/common-client-util/src/main/java/com/fjhx/utils/UserClientUtil.java
  4. 10 2
      hx-common/common-tool/src/main/java/com/fjhx/utils/wrapperUtil/IWrapper.java
  5. 51 0
      hx-service-api/victoriatourist-api/src/main/java/com/fjhx/entity/product/ProductCombination.java
  6. 121 0
      hx-service-api/victoriatourist-api/src/main/java/com/fjhx/entity/product/ProductInfo.java
  7. 37 0
      hx-service-api/victoriatourist-api/src/main/java/com/fjhx/params/product/ProductCombinationEx.java
  8. 17 0
      hx-service-api/victoriatourist-api/src/main/java/com/fjhx/params/product/ProductCombinationVo.java
  9. 17 0
      hx-service-api/victoriatourist-api/src/main/java/com/fjhx/params/product/ProductInfoEx.java
  10. 23 0
      hx-service-api/victoriatourist-api/src/main/java/com/fjhx/params/product/ProductInfoVo.java
  11. 56 0
      hx-service/victoriatourist/src/main/java/com/fjhx/controller/product/ProductCombinationController.java
  12. 66 0
      hx-service/victoriatourist/src/main/java/com/fjhx/controller/product/ProductInfoController.java
  13. 16 0
      hx-service/victoriatourist/src/main/java/com/fjhx/mapper/product/ProductCombinationMapper.java
  14. 5 0
      hx-service/victoriatourist/src/main/java/com/fjhx/mapper/product/ProductCombinationMapper.xml
  15. 27 0
      hx-service/victoriatourist/src/main/java/com/fjhx/mapper/product/ProductInfoMapper.java
  16. 45 0
      hx-service/victoriatourist/src/main/java/com/fjhx/mapper/product/ProductInfoMapper.xml
  17. 28 0
      hx-service/victoriatourist/src/main/java/com/fjhx/service/product/ProductCombinationService.java
  18. 32 0
      hx-service/victoriatourist/src/main/java/com/fjhx/service/product/ProductInfoService.java
  19. 48 0
      hx-service/victoriatourist/src/main/java/com/fjhx/service/product/impl/ProductCombinationServiceImpl.java
  20. 174 0
      hx-service/victoriatourist/src/main/java/com/fjhx/service/product/impl/ProductInfoServiceImpl.java
  21. 10 1
      hx-service/victoriatourist/src/main/java/com/fjhx/uitl/code/CodeEnum.java

+ 3 - 9
bladex/blade-service-api/blade-system-api/src/main/java/org/springblade/system/feign/ISysClientFallback.java

@@ -17,16 +17,10 @@
 package org.springblade.system.feign;
 
 import org.springblade.core.tool.api.R;
-import org.springblade.system.entity.Dept;
-import org.springblade.system.entity.Menu;
-import org.springblade.system.entity.Param;
-import org.springblade.system.entity.Post;
-import org.springblade.system.entity.Region;
-import org.springblade.system.entity.Role;
-import org.springblade.system.entity.Tenant;
-import org.springblade.system.entity.TenantPackage;
+import org.springblade.system.entity.*;
 import org.springframework.stereotype.Component;
 
+import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
@@ -187,7 +181,7 @@ public class ISysClientFallback implements ISysClient {
      */
     @Override
     public Map<Long, Dept> getDeptByIdsToMap(List<Long> deptIds) {
-        return null;
+        return new HashMap<>();
     }
 
     /**

+ 1 - 1
hx-common/code-generator/src/main/java/com/fjhx/modular/Victoriatourist.java

@@ -12,7 +12,7 @@ public class Victoriatourist {
         CodeGenerator.MODULAR_NAME = "victoriatourist";
 
         // 需要生成的表名称,多表用,隔开
-        CodeGenerator.INCLUDE = "apply_purchase";
+        CodeGenerator.INCLUDE = "product_combination";
 
         // mysql连接
         CodeGenerator.MYSQL_URL = "36.134.91.96:17330";

+ 2 - 1
hx-common/common-client-util/src/main/java/com/fjhx/utils/UserClientUtil.java

@@ -82,8 +82,9 @@ public class UserClientUtil {
         }
     }
 
+
     /**
-     * 通过用户id获取用户、岗位、部门名称
+     * 通过用户id获取用户(userName)、岗位(postName)、部门(deptName)名称
      */
     public static Map<Long, Map<String, Object>> getNameByUserId(List<Long> userIdList) {
         R<Map<Long, Map<String, Object>>> r = getUserSearchClient().getNameByUserId(userIdList);

+ 10 - 2
hx-common/common-tool/src/main/java/com/fjhx/utils/wrapperUtil/IWrapper.java

@@ -53,14 +53,14 @@ public class IWrapper<T> extends AbstractWrapper<T, String, IWrapper<T>> impleme
         if (ArrayUtils.isNotEmpty(columns)) {
             this.sqlSelect.setStringValue(String.join(StringPool.COMMA, columns));
         }
-        return typedThis;
+        return this;
     }
 
     @Override
     public IWrapper<T> select(Class<T> entityClass, Predicate<TableFieldInfo> predicate) {
         super.setEntityClass(entityClass);
         this.sqlSelect.setStringValue(TableInfoHelper.getTableInfo(getEntityClass()).chooseSelect(predicate));
-        return typedThis;
+        return this;
     }
 
     @Override
@@ -184,10 +184,18 @@ public class IWrapper<T> extends AbstractWrapper<T, String, IWrapper<T>> impleme
         return orderByAsc(getSqlFieldName(function));
     }
 
+    public <K, V> IWrapper<T> orderByAsc(String alias, SFunction<K, V> function) {
+        return orderByAsc(getSqlFieldName(alias, function));
+    }
+
     public <K, V> IWrapper<T> orderByDesc(SFunction<K, V> function) {
         return orderByDesc(getSqlFieldName(function));
     }
 
+    public <K, V> IWrapper<T> orderByDesc(String alias, SFunction<K, V> function) {
+        return orderByDesc(getSqlFieldName(alias, function));
+    }
+
     /**
      * between
      */

+ 51 - 0
hx-service-api/victoriatourist-api/src/main/java/com/fjhx/entity/product/ProductCombination.java

@@ -0,0 +1,51 @@
+package com.fjhx.entity.product;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.Version;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.FieldFill;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import com.fjhx.base.BaseEntity;
+import com.baomidou.mybatisplus.annotation.TableField;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.math.BigDecimal;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author ${author}
+ * @since 2022-11-30
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class ProductCombination extends BaseEntity {
+
+
+    /**
+     * 产品id
+     */
+    private Long productId;
+
+    /**
+     * 关联产品id
+     */
+    private Long linkProductId;
+
+    /**
+     * 关联产品数量
+     */
+    private BigDecimal linkQuantity;
+
+    /**
+     * 逻辑删除 0未删除 1已删除
+     */
+    @TableField(fill = FieldFill.INSERT)
+    @TableLogic
+    private Integer delFlag;
+
+
+}

+ 121 - 0
hx-service-api/victoriatourist-api/src/main/java/com/fjhx/entity/product/ProductInfo.java

@@ -0,0 +1,121 @@
+package com.fjhx.entity.product;
+
+import java.math.BigDecimal;
+import com.baomidou.mybatisplus.annotation.IdType;
+import java.util.Date;
+import com.baomidou.mybatisplus.annotation.Version;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.FieldFill;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import com.fjhx.base.BaseEntity;
+import com.baomidou.mybatisplus.annotation.TableField;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author ${author}
+ * @since 2022-11-29
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class ProductInfo extends BaseEntity {
+
+
+    /**
+     * 产品编码
+     */
+    private String code;
+
+    /**
+     * 部门id
+     */
+    private Long deptId;
+
+    /**
+     * 产品名称
+     */
+    private String name;
+
+    /**
+     * 产品分类
+     */
+    private Long classifyId;
+
+    /**
+     * 产品类型
+     */
+    private Integer type;
+
+    /**
+     * 是否组合
+     */
+    private Integer combination;
+
+    /**
+     * 单位
+     */
+    private String unit;
+
+    /**
+     * 采购价
+     */
+    private BigDecimal purchasePrice;
+
+    /**
+     * 售价
+     */
+    private BigDecimal sellingPrice;
+
+    /**
+     * 京东供价
+     */
+    private BigDecimal jdPurchasePrice;
+
+    /**
+     * 新品天数
+     */
+    private Integer newProductsDay;
+
+    /**
+     * 成长天数
+     */
+    private Integer growUpDay;
+
+    /**
+     * 计算时间(计算新品成长成熟天,预留字段,目前大于创建时间)
+     */
+    private Date computingTime;
+
+    /**
+     * 新品预期销量
+     */
+    private BigDecimal newProductsExpectedSales;
+
+    /**
+     * 成长预期销量
+     */
+    private BigDecimal growUpExpectedSales;
+
+    /**
+     * 成熟预期销量
+     */
+    private BigDecimal matureExpectedSales;
+
+    /**
+     * 清空期限
+     */
+    private Date clearancePeriod;
+
+    /**
+     * 逻辑删除 0未删除 1已删除
+     */
+    @TableField(fill = FieldFill.INSERT)
+    @TableLogic
+    private Integer delFlag;
+
+
+}

+ 37 - 0
hx-service-api/victoriatourist-api/src/main/java/com/fjhx/params/product/ProductCombinationEx.java

@@ -0,0 +1,37 @@
+package com.fjhx.params.product;
+
+import com.fjhx.entity.product.ProductCombination;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * 
+ *
+ * @author ${author}
+ * @since 2022-11-30
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class ProductCombinationEx extends ProductCombination {
+
+    /**
+     * 产品编码
+     */
+    private String code;
+
+    /**
+     * 产品名称
+     */
+    private String name;
+
+    /**
+     * 单位
+     */
+    private String unit;
+
+    /**
+     * 是否组合
+     */
+    private Integer combination;
+
+}

+ 17 - 0
hx-service-api/victoriatourist-api/src/main/java/com/fjhx/params/product/ProductCombinationVo.java

@@ -0,0 +1,17 @@
+package com.fjhx.params.product;
+
+import com.fjhx.entity.product.ProductCombination;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * 
+ *
+ * @author ${author}
+ * @since 2022-11-30
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class ProductCombinationVo extends ProductCombination {
+
+}

+ 17 - 0
hx-service-api/victoriatourist-api/src/main/java/com/fjhx/params/product/ProductInfoEx.java

@@ -0,0 +1,17 @@
+package com.fjhx.params.product;
+
+import com.fjhx.entity.product.ProductInfo;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * 
+ *
+ * @author ${author}
+ * @since 2022-11-29
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class ProductInfoEx extends ProductInfo {
+
+}

+ 23 - 0
hx-service-api/victoriatourist-api/src/main/java/com/fjhx/params/product/ProductInfoVo.java

@@ -0,0 +1,23 @@
+package com.fjhx.params.product;
+
+import com.fjhx.entity.product.ProductCombination;
+import com.fjhx.entity.product.ProductInfo;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.util.List;
+
+/**
+ * @author ${author}
+ * @since 2022-11-29
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class ProductInfoVo extends ProductInfo {
+
+    /**
+     * 组合列表
+     */
+    private List<ProductCombination> productCombinationList;
+
+}

+ 56 - 0
hx-service/victoriatourist/src/main/java/com/fjhx/controller/product/ProductCombinationController.java

@@ -0,0 +1,56 @@
+package com.fjhx.controller.product;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import org.springblade.core.tool.api.R;
+import com.fjhx.entity.product.ProductCombination;
+import com.fjhx.params.product.ProductCombinationVo;
+import com.fjhx.service.product.ProductCombinationService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.Map;
+
+/**
+ * <p>
+ *  前端控制器
+ * </p>
+ *
+ * @author ${author}
+ * @since 2022-11-30
+ */
+@RestController
+@RequestMapping("/productCombination")
+public class ProductCombinationController {
+
+    @Autowired
+    private ProductCombinationService productCombinationService;
+
+    @PostMapping("/page")
+    public R page(@RequestBody Map<String, Object> condition){
+        Page<ProductCombination> result = productCombinationService.getPage(condition);
+        return R.success(result);
+    }
+
+    @PostMapping("/add")
+    public R add(@RequestBody ProductCombinationVo productCombinationVo){
+        productCombinationService.add(productCombinationVo);
+        return R.success();
+    }
+
+    @PostMapping("/edit")
+    public R edit(@RequestBody ProductCombinationVo productCombinationVo){
+        productCombinationService.edit(productCombinationVo);
+        return R.success();
+    }
+
+    @PostMapping("/delete")
+    public R delete(@RequestBody ProductCombinationVo productCombinationVo){
+        productCombinationService.delete(productCombinationVo);
+        return R.success();
+    }
+
+}
+

+ 66 - 0
hx-service/victoriatourist/src/main/java/com/fjhx/controller/product/ProductInfoController.java

@@ -0,0 +1,66 @@
+package com.fjhx.controller.product;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fjhx.base.Condition;
+import com.fjhx.params.product.ProductCombinationEx;
+import com.fjhx.params.product.ProductInfoVo;
+import com.fjhx.service.product.ProductInfoService;
+import org.springblade.core.tool.api.R;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.Map;
+
+/**
+ * <p>
+ * 前端控制器
+ * </p>
+ *
+ * @author ${author}
+ * @since 2022-11-29
+ */
+@RestController
+@RequestMapping("/productInfo")
+public class ProductInfoController {
+
+    @Autowired
+    private ProductInfoService productInfoService;
+
+    @PostMapping("/page")
+    public R page(@RequestBody Map<String, Object> condition) {
+        Page<Map<String, Object>> result = productInfoService.getPage(condition);
+        return R.success(result);
+    }
+
+    @PostMapping("/add")
+    public R add(@RequestBody ProductInfoVo productInfoVo) {
+        productInfoService.add(productInfoVo);
+        return R.success();
+    }
+
+    @PostMapping("/edit")
+    public R edit(@RequestBody ProductInfoVo productInfoVo) {
+        productInfoService.edit(productInfoVo);
+        return R.success();
+    }
+
+    @PostMapping("/delete")
+    public R delete(@RequestBody ProductInfoVo productInfoVo) {
+        productInfoService.delete(productInfoVo);
+        return R.success();
+    }
+
+    /**
+     * 获取组合
+     */
+    @PostMapping("/getCombinationPage")
+    public R getCombinationPage(@RequestBody Condition condition) {
+        Page<ProductCombinationEx> page = productInfoService.getCombinationPage(condition);
+        return R.success(page);
+    }
+
+}
+

+ 16 - 0
hx-service/victoriatourist/src/main/java/com/fjhx/mapper/product/ProductCombinationMapper.java

@@ -0,0 +1,16 @@
+package com.fjhx.mapper.product;
+
+import com.fjhx.entity.product.ProductCombination;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author ${author}
+ * @since 2022-11-30
+ */
+public interface ProductCombinationMapper extends BaseMapper<ProductCombination> {
+
+}

+ 5 - 0
hx-service/victoriatourist/src/main/java/com/fjhx/mapper/product/ProductCombinationMapper.xml

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.fjhx.mapper.product.ProductCombinationMapper">
+
+</mapper>

+ 27 - 0
hx-service/victoriatourist/src/main/java/com/fjhx/mapper/product/ProductInfoMapper.java

@@ -0,0 +1,27 @@
+package com.fjhx.mapper.product;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fjhx.entity.product.ProductInfo;
+import com.fjhx.params.product.ProductCombinationEx;
+import com.fjhx.utils.wrapperUtil.IWrapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.Map;
+
+/**
+ * <p>
+ * Mapper 接口
+ * </p>
+ *
+ * @author ${author}
+ * @since 2022-11-29
+ */
+public interface ProductInfoMapper extends BaseMapper<ProductInfo> {
+
+
+    Page<Map<String, Object>> getPage(@Param("page") Page<ProductInfo> page, @Param("ew") IWrapper<ProductInfo> wrapper);
+
+    Page<ProductCombinationEx> getCombinationPage(@Param("page") Page<ProductInfo> page, @Param("ew") IWrapper<Object> wrapper);
+
+}

+ 45 - 0
hx-service/victoriatourist/src/main/java/com/fjhx/mapper/product/ProductInfoMapper.xml

@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.fjhx.mapper.product.ProductInfoMapper">
+
+    <select id="getPage" resultType="java.util.LinkedHashMap">
+        select id,
+               code,
+               dept_id,
+               name,
+               classify_id,
+               type,
+               combination,
+               unit,
+               purchase_price,
+               selling_price,
+               jd_purchase_price,
+               new_products_day,
+               grow_up_day,
+               computing_time,
+               new_products_expected_sales,
+               grow_up_expected_sales,
+               mature_expected_sales,
+               clearance_period,
+               CASE
+                   WHEN datediff(now(), computing_time) &lt; new_products_day THEN 1
+                   WHEN datediff(now(), computing_time) &lt; (new_products_day + grow_up_day) THEN 2
+                   ELSE 3
+                   END life_cycle
+        from product_info ${ew.customSqlSegment}
+    </select>
+
+    <select id="getCombinationPage" resultType="com.fjhx.params.product.ProductCombinationEx">
+        select pc.id,
+               pc.link_product_id,
+               pc.link_quantity,
+               pi.name,
+               pi.code,
+               pi.unit,
+               pi.combination
+        from product_combination pc
+                 left join product_info pi on pc.link_product_id = pi.id
+            ${ew.customSqlSegment}
+    </select>
+
+</mapper>

+ 28 - 0
hx-service/victoriatourist/src/main/java/com/fjhx/service/product/ProductCombinationService.java

@@ -0,0 +1,28 @@
+package com.fjhx.service.product;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fjhx.entity.product.ProductCombination;
+import com.fjhx.params.product.ProductCombinationVo;
+import com.fjhx.base.BaseService;
+
+import java.util.Map;
+
+/**
+ * <p>
+ *  服务类
+ * </p>
+ *
+ * @author ${author}
+ * @since 2022-11-30
+ */
+public interface ProductCombinationService extends BaseService<ProductCombination> {
+
+    Page<ProductCombination> getPage(Map<String, Object> condition);
+
+    void add(ProductCombinationVo productCombinationVo);
+
+    void edit(ProductCombinationVo productCombinationVo);
+
+    void delete(ProductCombinationVo productCombinationVo);
+
+}

+ 32 - 0
hx-service/victoriatourist/src/main/java/com/fjhx/service/product/ProductInfoService.java

@@ -0,0 +1,32 @@
+package com.fjhx.service.product;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fjhx.base.Condition;
+import com.fjhx.entity.product.ProductInfo;
+import com.fjhx.params.product.ProductCombinationEx;
+import com.fjhx.params.product.ProductInfoVo;
+import com.fjhx.base.BaseService;
+
+import java.util.Map;
+
+/**
+ * <p>
+ *  服务类
+ * </p>
+ *
+ * @author ${author}
+ * @since 2022-11-29
+ */
+public interface ProductInfoService extends BaseService<ProductInfo> {
+
+    Page<Map<String, Object>> getPage(Map<String, Object> condition);
+
+    void add(ProductInfoVo productInfoVo);
+
+    void edit(ProductInfoVo productInfoVo);
+
+    void delete(ProductInfoVo productInfoVo);
+
+    Page<ProductCombinationEx> getCombinationPage(Condition condition);
+
+}

+ 48 - 0
hx-service/victoriatourist/src/main/java/com/fjhx/service/product/impl/ProductCombinationServiceImpl.java

@@ -0,0 +1,48 @@
+package com.fjhx.service.product.impl;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fjhx.entity.product.ProductCombination;
+import com.fjhx.params.product.ProductCombinationVo;
+import com.fjhx.mapper.product.ProductCombinationMapper;
+import com.fjhx.service.product.ProductCombinationService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.fjhx.utils.wrapperUtil.IWrapper;
+import org.springframework.stereotype.Service;
+
+import java.util.Map;
+
+/**
+ * <p>
+ *  服务实现类
+ * </p>
+ *
+ * @author ${author}
+ * @since 2022-11-30
+ */
+@Service
+public class ProductCombinationServiceImpl extends ServiceImpl<ProductCombinationMapper, ProductCombination> implements ProductCombinationService {
+
+    @Override
+    public Page<ProductCombination> getPage(Map<String, Object> condition) {
+
+        IWrapper<ProductCombination> wrapper = IWrapper.getWrapper(condition);
+
+        return page(condition, wrapper);
+    }
+
+    @Override
+    public void add(ProductCombinationVo productCombinationVo) {
+        save(productCombinationVo);
+    }
+
+    @Override
+    public void edit(ProductCombinationVo productCombinationVo) {
+        updateById(productCombinationVo);
+    }
+
+    @Override
+    public void delete(ProductCombinationVo productCombinationVo) {
+        removeById(productCombinationVo.getId());
+    }
+
+}

+ 174 - 0
hx-service/victoriatourist/src/main/java/com/fjhx/service/product/impl/ProductInfoServiceImpl.java

@@ -0,0 +1,174 @@
+package com.fjhx.service.product.impl;
+
+import cn.hutool.core.convert.Convert;
+import cn.hutool.core.util.ObjectUtil;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.fjhx.base.Condition;
+import com.fjhx.constants.StatusConstant;
+import com.fjhx.entity.product.ProductCombination;
+import com.fjhx.entity.product.ProductInfo;
+import com.fjhx.mapper.product.ProductInfoMapper;
+import com.fjhx.params.product.ProductCombinationEx;
+import com.fjhx.params.product.ProductInfoVo;
+import com.fjhx.service.product.ProductCombinationService;
+import com.fjhx.service.product.ProductInfoService;
+import com.fjhx.uitl.code.CodeEnum;
+import com.fjhx.utils.Assert;
+import com.fjhx.utils.wrapperUtil.IWrapper;
+import com.fjhx.utils.wrapperUtil.KeywordData;
+import org.springblade.system.entity.Dept;
+import org.springblade.system.feign.ISysClient;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import javax.annotation.Resource;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+/**
+ * <p>
+ * 服务实现类
+ * </p>
+ *
+ * @author ${author}
+ * @since 2022-11-29
+ */
+@Service
+public class ProductInfoServiceImpl extends ServiceImpl<ProductInfoMapper, ProductInfo> implements ProductInfoService {
+
+    @Resource
+    private ISysClient iSysClient;
+
+    @Autowired
+    private ProductCombinationService productCombinationService;
+
+    @Override
+    public Page<Map<String, Object>> getPage(Map<String, Object> condition) {
+        IWrapper<ProductInfo> wrapper = IWrapper.getWrapper(condition);
+        wrapper
+                .keyword(new KeywordData(ProductInfo::getName), new KeywordData(ProductInfo::getCode))
+                .eq(ProductInfo::getDeptId)
+                .eq(ProductInfo::getType)
+                .like(ProductInfo::getName)
+                .like(ProductInfo::getCode)
+                .ge(ProductInfo::getPurchasePrice, condition.get("purchasePriceMin"))
+                .le(ProductInfo::getPurchasePrice, condition.get("purchasePriceMax"))
+                .ge(ProductInfo::getSellingPrice, condition.get("sellingPriceMin"))
+                .le(ProductInfo::getSellingPrice, condition.get("sellingPriceMax"))
+                .ge(ProductInfo::getJdPurchasePrice, condition.get("jdPurchasePriceMin"))
+                .le(ProductInfo::getJdPurchasePrice, condition.get("jdPurchasePriceMax"))
+                .eq(ProductInfo::getCombination)
+                .periodTime(ProductInfo::getClearancePeriod)
+                .func(ObjectUtil.isNotEmpty(condition.get("lifeCycle")), q -> {
+                    Integer lifeCycle = Convert.toInt(condition.get("lifeCycle"));
+                    // 新品
+                    if (ObjectUtil.equals(lifeCycle, 1)) {
+                        q.gt("new_products_day - datediff(now(), computing_time)", 0);
+                    }
+                    // 成长
+                    else if (ObjectUtil.equals(lifeCycle, 2)) {
+                        q.gt("(new_products_day + grow_up_day) -  datediff(now(), computing_time)", 0);
+                    }
+                    // 成熟
+                    else {
+                        q.le("(new_products_day + grow_up_day) -  datediff(now(), computing_time)", 0);
+                    }
+                });
+
+        Page<Map<String, Object>> page = baseMapper.getPage(createPage(condition), wrapper);
+
+        List<Map<String, Object>> records = page.getRecords();
+
+        if (records.size() == 0) {
+            return page;
+        }
+
+        // 赋值部门名称
+        List<Long> deptIdList = records.stream().map(item -> Convert.toLong(item.get("deptId"))).collect(Collectors.toList());
+        Map<Long, Dept> deptMap = iSysClient.getDeptByIdsToMap(deptIdList);
+
+        for (Map<String, Object> record : records) {
+            Dept dept = deptMap.get(Convert.toLong(record.get("deptId")));
+            record.put("deptName", dept == null ? "" : dept.getDeptName());
+        }
+
+        return page;
+    }
+
+    @Transactional(rollbackFor = Exception.class)
+    @Override
+    public void add(ProductInfoVo productInfoVo) {
+
+        synchronized (this) {
+            productInfoVo.setCode(CodeEnum.PRODUCT.getCode(productInfoVo.getCode()));
+            productInfoVo.setComputingTime(new Date());
+            save(productInfoVo);
+        }
+
+        if (StatusConstant.YES.equals(productInfoVo.getCombination())) {
+            List<ProductCombination> productCombinationList = productInfoVo.getProductCombinationList();
+            Assert.notEmpty(productCombinationList, "组合信息不能为空");
+
+            for (ProductCombination productCombination : productCombinationList) {
+                productCombination.setProductId(productInfoVo.getId());
+            }
+
+            productCombinationService.saveBatch(productCombinationList);
+        }
+
+    }
+
+    @Transactional(rollbackFor = Exception.class)
+    @Override
+    public void edit(ProductInfoVo productInfoVo) {
+
+        updateById(productInfoVo);
+
+        if (StatusConstant.YES.equals(productInfoVo.getCombination())) {
+            List<ProductCombination> productCombinationList = productInfoVo.getProductCombinationList();
+            Assert.notEmpty(productCombinationList, "组合信息不能为空");
+
+            List<Long> productCombinationIdList = new ArrayList<>();
+
+            for (ProductCombination productCombination : productCombinationList) {
+                productCombination.setProductId(productInfoVo.getId());
+
+                if (ObjectUtil.isNotEmpty(productCombination.getId())) {
+                    productCombinationIdList.add(productCombination.getId());
+                }
+            }
+
+            productCombinationService.remove(q -> q
+                    .eq(ProductCombination::getProductId, productInfoVo.getId())
+                    .notIn(ProductCombination::getId, productCombinationIdList));
+
+            productCombinationService.saveOrUpdateBatch(productCombinationList);
+
+        }
+
+    }
+
+    @Override
+    public void delete(ProductInfoVo productInfoVo) {
+        // TODO 有库存不允许删除
+        removeById(productInfoVo.getId());
+    }
+
+    @Override
+    public Page<ProductCombinationEx> getCombinationPage(Condition condition) {
+        // 产品id
+        Long id = condition.getLong("id");
+        Assert.notEmpty(id, "产品id不能为空");
+
+        IWrapper<Object> wrapper = IWrapper.getWrapper();
+        wrapper.eq("pc", ProductCombination::getProductId, id);
+
+        return baseMapper.getCombinationPage(createPage(condition), wrapper);
+    }
+
+}

+ 10 - 1
hx-service/victoriatourist/src/main/java/com/fjhx/uitl/code/CodeEnum.java

@@ -7,6 +7,7 @@ import cn.hutool.extra.spring.SpringUtil;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.fjhx.service.apply.ApplyPurchaseService;
 import com.fjhx.service.material.MaterialService;
+import com.fjhx.service.product.ProductInfoService;
 import com.fjhx.service.product.ProductSpuService;
 import com.fjhx.service.supplier.SupplierService;
 import com.fjhx.utils.Assert;
@@ -26,6 +27,8 @@ public enum CodeEnum {
     SPU("SPU", null, "code", 5, ProductSpuService.class),
     //申购单
     APPLY_PURCHASE("AP", "yyyyMM-", "code", 5, ApplyPurchaseService.class),
+    // 产品
+    PRODUCT("P", null, "code", 5, ProductInfoService.class),
 
     ;
 
@@ -85,7 +88,13 @@ public enum CodeEnum {
      * 获取键值对
      */
     public String getCode(String code) {
-        return "";
+        if (ObjectUtil.isNotEmpty(code)) {
+            Long count = service.query().eq(codeFieldName, code).count();
+            Assert.eqZero(count, "编码重复");
+            return code;
+        } else {
+            return getCode();
+        }
     }
 
     /**