Browse Source

公司产品库,客户产品库,维多利亚供应商修改

yzc 2 years ago
parent
commit
9574d4c151

+ 4 - 0
hx-item/pom.xml

@@ -29,6 +29,10 @@
             <artifactId>easyexcel</artifactId>
             <version>2.2.11</version>
         </dependency>
+        <dependency>
+            <groupId>com.fjhx</groupId>
+            <artifactId>hx-customer</artifactId>
+        </dependency>
 
     </dependencies>
 

+ 39 - 0
hx-item/src/main/java/com/fjhx/item/controller/product/ProductInfoController.java

@@ -58,6 +58,45 @@ public class ProductInfoController {
     }
 
     /**
+     * 客户产品库分页
+     */
+    @PostMapping("/getCustomerProductList")
+    public Page<ProductInfoVo> getCustomerProductList(@RequestBody ProductInfoSelectDto dto) {
+        return productInfoService.getCustomerProductList(dto);
+    }
+
+    /**
+     * 公司产品库分页
+     */
+    @PostMapping("/getConditionProductList")
+    public Page<ProductInfoVo> getConditionProductList(@RequestBody ProductInfoSelectDto dto) {
+        return productInfoService.getConditionProductList(dto);
+    }
+
+    /**
+     * 产品库新增 尔泓扩展
+     */
+    @PostMapping("/addByEhsd")
+    public void addByEhsd(@RequestBody ProductInfoDto productInfoDto) {
+        productInfoService.addByEhsd(productInfoDto);
+    }
+
+    /**
+     * 产品库编辑 尔泓扩展
+     */
+    @PostMapping("/editByEhsd")
+    public void editByEhsd(@RequestBody ProductInfoDto productInfoDto) {
+        productInfoService.editByEhsd(productInfoDto);
+    }
+    /**
+     * 产品库明细 尔泓扩展
+     */
+    @PostMapping("/detailByEhsd")
+    public ProductInfoVo detailByEhsd(@RequestBody BaseSelectDto dto) {
+        return productInfoService.detailByEhsd(dto.getId());
+    }
+
+    /**
      * 产品库明细
      */
     @PostMapping("/detail")

+ 5 - 0
hx-item/src/main/java/com/fjhx/item/entity/product/dto/ProductInfoDto.java

@@ -57,4 +57,9 @@ public class ProductInfoDto extends ProductInfo {
 
 
 
+    /**
+     * 图片列表
+     */
+    private List<ObsFile> imgList;
+
 }

+ 9 - 0
hx-item/src/main/java/com/fjhx/item/entity/product/dto/ProductInfoSelectDto.java

@@ -66,4 +66,13 @@ public class ProductInfoSelectDto extends BaseSelectDto {
     private  Integer orderBy;
 
 
+    /**
+     * 产品编号 ehsd
+     */
+    private String code;
+    /**
+     * 产品名称 ehsd
+     */
+    private String name;
+
 }

+ 11 - 2
hx-item/src/main/java/com/fjhx/item/entity/product/po/ProductInfo.java

@@ -69,13 +69,22 @@ public class ProductInfo extends BasePo {
      */
     private String remark;
 
-    /**维多利亚json*/
+    /**
+     * 维多利亚json
+     */
     private String victoriatouristJson;
 
-    /**产品spuid*/
+    /**
+     * 产品spuid
+     */
     private Long productSpuId;
 
     @TableField(exist = false)
     private Integer count;
 
+    /**
+     * 尔泓json
+     */
+    private String ehsdJson;
+
 }

+ 152 - 0
hx-item/src/main/java/com/fjhx/item/entity/product/po/ProductInfoEhsdJson.java

@@ -0,0 +1,152 @@
+package com.fjhx.item.entity.product.po;
+
+import com.fjhx.file.entity.ObsFile;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.math.BigDecimal;
+import java.util.List;
+
+@Getter
+@Setter
+public class ProductInfoEhsdJson {
+    /**
+     * 产品名称英文名
+     */
+    private String nameEnglish;
+    /**
+     * 销售指导价格
+     */
+    private BigDecimal price;
+    /**
+     * 产品成本价
+     */
+    private BigDecimal costPrice;
+    /**
+     * 材质英文
+     */
+    private String material;
+    /**
+     * 材质中文
+     */
+    private String materialChinese;
+    /**
+     * 产品型号 英文
+     */
+    private String productModelEn;
+    /**
+     * 产品尺寸 长
+     */
+    private String productLong;
+    /**
+     * 产品尺寸 宽
+     */
+    private String productWide;
+    /**
+     * 产品尺寸 高
+     */
+    private String productHigh;
+    /**
+     * 装箱尺寸 长
+     */
+    private String packagLong;
+    /**
+     * 装箱尺寸 宽
+     */
+    private String packagWide;
+    /**
+     * 装箱尺寸 高
+     */
+    private String packagHigh;
+    /**
+     * 内包装方式
+     */
+    private String innerPackMethod;
+    /**
+     * 外包装方式
+     */
+    private String outerPackMethod;
+    /**
+     * 净重(单位g)
+     */
+    private Double netWeight;
+
+    /**
+     * 毛重(单位g)
+     */
+    private Double grossWeight;
+
+    /**
+     * 海关编码
+     */
+    private String customsCode;
+    /**
+     * MOQ(最低订购量)
+     */
+    private Integer moq;
+    /**
+     * 销售单位
+     */
+    private String salesUnit;
+    /**
+     * 出入库单位
+     */
+    private String issueReceiptUnit;
+    /**
+     * 换算比例
+     */
+    private Double conversionScale;
+    /**
+     * 安全库存
+     */
+    private BigDecimal safetyStock;
+    /**
+     * 采购周期(单位:天)
+     */
+    private Integer procurementCycle;
+    /**
+     * 质检合格率
+     */
+    private BigDecimal qualityQualifiedRate;
+    /**
+     * (云仓)出入库规则:0、不启用;1、一物一码;2、一物一码&先入先出
+     */
+    private Integer firstInFirstOut;
+    /**
+     * 状态
+     */
+    private Integer status;
+    /**
+     * 评估状态
+     */
+    private Integer assessStatus;
+    /**
+     * 产品分类英文名
+     */
+    private String categoryEnName;
+    /**
+     * 分类中文名
+     */
+    private String categoryCnName;
+    /**
+     * 客户id
+     */
+    private Long customerId;
+    /**
+     * 客户名称
+     */
+    private String customerName;
+    /**
+     * 图片列表
+     */
+    private List<ObsFile> imgList;
+    /**
+     * 附件列表
+     */
+    private List<ObsFile> attachmentList;
+
+    /**
+     * 产品类型 1公司产品 2客户产品
+     */
+    private String type;
+}

+ 5 - 0
hx-item/src/main/java/com/fjhx/item/entity/product/vo/ProductInfoVo.java

@@ -46,4 +46,9 @@ public class ProductInfoVo extends ProductInfo {
      */
     private BigDecimal purchaseQuantity;
 
+    /**
+     * 创建人名称
+     */
+    private String createUserName;
+
 }

+ 5 - 2
hx-item/src/main/java/com/fjhx/item/mapper/product/ProductInfoMapper.java

@@ -3,12 +3,11 @@ package com.fjhx.item.mapper.product;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fjhx.item.entity.product.dto.ProductInfoSelectDto;
 import com.fjhx.item.entity.product.po.ProductInfo;
 import com.fjhx.item.entity.product.vo.ProductInfoVo;
-import com.ruoyi.common.annotation.TenantIgnore;
 import com.ruoyi.common.utils.wrapper.IWrapper;
 import org.apache.ibatis.annotations.Param;
-import org.springframework.security.core.parameters.P;
 
 import java.util.List;
 
@@ -51,4 +50,8 @@ public interface ProductInfoMapper extends BaseMapper<ProductInfo> {
      * @param query
      */
     Page<ProductInfoVo> productRanking(@Param("page") Page<Object> page,@Param("ew") QueryWrapper<Object> query);
+    /**
+     * 客户产品库
+     */
+    Page<ProductInfoVo> getCustomerProductList(@Param("page") Page<Object> page, @Param("ew") IWrapper<ProductInfo> wrapper);
 }

+ 25 - 0
hx-item/src/main/java/com/fjhx/item/service/product/ProductInfoService.java

@@ -38,6 +38,16 @@ public interface ProductInfoService extends BaseService<ProductInfo> {
     Page<ProductInfoVo> getCombinationPage(ProductInfoSelectDto dto);
 
     /**
+     * 客户产品库 尔泓扩展
+     */
+    Page<ProductInfoVo> getCustomerProductList(ProductInfoSelectDto dto);
+
+    /**
+     * 公司产品库 尔泓扩展
+     */
+    Page<ProductInfoVo> getConditionProductList(ProductInfoSelectDto dto);
+
+    /**
      * 产品库明细
      */
     ProductInfoVo detail(Long id);
@@ -48,6 +58,21 @@ public interface ProductInfoService extends BaseService<ProductInfo> {
     void add(ProductInfoDto productInfoDto);
 
     /**
+     * 产品库新增 尔泓扩展
+     */
+    void addByEhsd(ProductInfoDto productInfoDto);
+
+    /**
+     * 产品库编辑 尔泓扩展
+     */
+    void editByEhsd(ProductInfoDto productInfoDto);
+
+    /**
+     * 产品库明细 尔泓扩展
+     */
+    ProductInfoVo detailByEhsd(Long id);
+
+    /**
      * 产品库新增 维多利亚
      */
     void addByWdly(ProductInfoDto productInfoDto);

+ 134 - 5
hx-item/src/main/java/com/fjhx/item/service/product/impl/ProductInfoServiceImpl.java

@@ -6,15 +6,17 @@ import com.alibaba.fastjson.JSONObject;
 import com.baomidou.dynamic.datasource.annotation.DS;
 import com.baomidou.dynamic.datasource.annotation.DSTransactional;
 import com.baomidou.dynamic.datasource.toolkit.DynamicDataSourceContextHolder;
-import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.fjhx.common.constant.SourceConstant;
+import com.fjhx.customer.entity.customer.po.Customer;
+import com.fjhx.customer.service.customer.CustomerService;
 import com.fjhx.file.utils.ObsFileUtil;
 import com.fjhx.item.entity.product.dto.ProductInfoDto;
 import com.fjhx.item.entity.product.dto.ProductInfoSelectDto;
+import com.fjhx.item.entity.product.po.ProductInfoEhsdJson;
 import com.fjhx.item.entity.product.po.ProductClassify;
 import com.fjhx.item.entity.product.po.ProductInfo;
 import com.fjhx.item.entity.product.vo.ProductInfoVo;
@@ -33,14 +35,12 @@ import com.ruoyi.common.utils.StringUtils;
 import com.ruoyi.common.utils.wrapper.IWrapper;
 import com.ruoyi.common.utils.wrapper.SqlField;
 import com.ruoyi.system.service.ISysDeptService;
+import com.ruoyi.system.utils.UserUtil;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.web.multipart.MultipartFile;
 
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 import java.util.function.Function;
 import java.util.stream.Collectors;
 
@@ -61,6 +61,8 @@ public class ProductInfoServiceImpl extends ServiceImpl<ProductInfoMapper, Produ
     private ProductClassifyService productClassifyService;
     @Autowired
     private ISysDeptService sysDeptService;
+    @Autowired
+    private CustomerService customerService;
 
     @Autowired
     private DictTenantDataService dictTenantDataService;
@@ -168,6 +170,82 @@ public class ProductInfoServiceImpl extends ServiceImpl<ProductInfoMapper, Produ
     }
 
     @Override
+    public Page<ProductInfoVo> getCustomerProductList(ProductInfoSelectDto dto) {
+        IWrapper<ProductInfo> wrapper = getWrapper();
+        wrapper.eq("json_unquote(pi.ehsd_json -> '$.status')", 0);//状态 启用
+        wrapper.eq("json_unquote(pi.ehsd_json -> '$.assessStatus')", 3);//评估状态 具备
+//        wrapper.ne("json_unquote(pi.ehsd_json -> '$.customerId')", 0);//客户id不等于0
+        wrapper.eq("json_unquote(pi.ehsd_json -> '$.type')", 2);//客户产品
+        //根据产品名称/产品编号过滤
+        wrapper.like("pi", ProductInfo::getCode, dto.getCode());
+        if (ObjectUtil.isNotEmpty(dto.getName())) {
+            wrapper.and(q -> q.like("pi", ProductInfo::getName, dto.getName()))
+                    .or().like("json_unquote(pi.ehsd_json -> '$.englishName')", dto.getName());
+        }
+        //根据产品分类id过滤
+        wrapper.eq("pi", ProductInfo::getProductClassifyId, dto.getProductClassifyId());
+
+        Page<ProductInfoVo> page = baseMapper.getCustomerProductList(dto.getPage(), wrapper);
+        List<ProductInfoVo> records = page.getRecords();
+        //赋值客户名称
+        List<Long> customerIds = new ArrayList<>();
+        for (ProductInfoVo record : records) {
+            ProductInfoEhsdJson productInfoEhsdJson = JSONObject.parseObject(record.getEhsdJson(), ProductInfoEhsdJson.class);
+            customerIds.add(productInfoEhsdJson.getCustomerId());
+        }
+        if (ObjectUtil.isNotEmpty(customerIds)) {
+            Map<Long, String> customerMap = customerService.mapKV(Customer::getId, Customer::getName, q -> q.in(Customer::getId, customerIds));
+            for (ProductInfoVo record : records) {
+                ProductInfoEhsdJson productInfoEhsdJson = JSONObject.parseObject(record.getEhsdJson(), ProductInfoEhsdJson.class);
+                String customerName = customerMap.get(productInfoEhsdJson.getCustomerId());
+                productInfoEhsdJson.setCustomerName(customerName);
+                record.setEhsdJson(JSONObject.toJSONString(productInfoEhsdJson));
+            }
+        }
+        //赋值创建人名称
+        UserUtil.assignmentNickName(page.getRecords(), ProductInfo::getCreateUser, ProductInfoVo::setCreateUserName);
+        return page;
+    }
+
+    @Override
+    public Page<ProductInfoVo> getConditionProductList(ProductInfoSelectDto dto) {
+        IWrapper<ProductInfo> wrapper = getWrapper();
+        wrapper.eq("json_unquote(pi.ehsd_json -> '$.status')", 0);//状态 启用
+        wrapper.eq("json_unquote(pi.ehsd_json -> '$.assessStatus')", 3);//评估状态 具备
+//        wrapper.eq("json_unquote(pi.ehsd_json -> '$.customerId')", 0);//客户id等于0
+        wrapper.eq("json_unquote(pi.ehsd_json -> '$.type')", 1);//公司产品
+        //根据产品名称/产品编号过滤
+        wrapper.like("pi", ProductInfo::getCode, dto.getCode());
+        if (ObjectUtil.isNotEmpty(dto.getName())) {
+            wrapper.and(q -> q.like("pi", ProductInfo::getName, dto.getName()))
+                    .or().like("json_unquote(pi.ehsd_json -> '$.englishName')", dto.getName());
+        }
+        //根据产品分类id过滤
+        wrapper.eq("pi", ProductInfo::getProductClassifyId, dto.getProductClassifyId());
+
+        Page<ProductInfoVo> page = baseMapper.getCustomerProductList(dto.getPage(), wrapper);
+        List<ProductInfoVo> records = page.getRecords();
+        //赋值客户名称
+        List<Long> customerIds = new ArrayList<>();
+        for (ProductInfoVo record : records) {
+            ProductInfoEhsdJson productInfoEhsdJson = JSONObject.parseObject(record.getEhsdJson(), ProductInfoEhsdJson.class);
+            customerIds.add(productInfoEhsdJson.getCustomerId());
+        }
+        if (ObjectUtil.isNotEmpty(customerIds)) {
+            Map<Long, String> customerMap = customerService.mapKV(Customer::getId, Customer::getName, q -> q.in(Customer::getId, customerIds));
+            for (ProductInfoVo record : records) {
+                ProductInfoEhsdJson productInfoEhsdJson = JSONObject.parseObject(record.getEhsdJson(), ProductInfoEhsdJson.class);
+                String customerName = customerMap.get(productInfoEhsdJson.getCustomerId());
+                productInfoEhsdJson.setCustomerName(customerName);
+                record.setEhsdJson(JSONObject.toJSONString(productInfoEhsdJson));
+            }
+        }
+        //赋值创建人名称
+        UserUtil.assignmentNickName(page.getRecords(), ProductInfo::getCreateUser, ProductInfoVo::setCreateUserName);
+        return page;
+    }
+
+    @Override
     public ProductInfoVo detail(Long id) {
         ProductInfo ProductInfo = this.getById(id);
         ProductInfoVo result = BeanUtil.toBean(ProductInfo, ProductInfoVo.class);
@@ -187,6 +265,57 @@ public class ProductInfoServiceImpl extends ServiceImpl<ProductInfoMapper, Produ
 
     @DSTransactional
     @Override
+    public void addByEhsd(ProductInfoDto productInfoDto) {
+        //赋值初始状态
+        ProductInfoEhsdJson productInfoEhsdJson = JSONObject.parseObject(productInfoDto.getEhsdJson(), ProductInfoEhsdJson.class);
+        productInfoEhsdJson.setStatus(0);
+        productInfoEhsdJson.setAssessStatus(3);
+        if(ObjectUtil.isEmpty(productInfoEhsdJson.getCustomerId())){
+            //如果客户id为空就赋值为0 公司产品
+            productInfoEhsdJson.setCustomerId(0l);
+        }
+        productInfoDto.setEhsdJson(JSONObject.toJSONString(productInfoEhsdJson));
+
+        // 赋值产品编号
+        productInfoDto.setCode(CodeEnum.PRODUCT.getCode());
+        // 排除名称重复
+        this.nameDuplication(ProductInfo::getName, productInfoDto.getName(), "产品名称重复");
+        this.save(productInfoDto);
+        //图片列表
+        ObsFileUtil.saveFile(productInfoDto.getImgList(), productInfoDto.getId(),1);
+        //附件列表
+        ObsFileUtil.saveFile(productInfoDto.getFileList(), productInfoDto.getId(),2);
+    }
+
+    @DSTransactional
+    @Override
+    public void editByEhsd(ProductInfoDto productInfoDto) {
+        // 禁止产品编号修改
+        productInfoDto.setCode(null);
+        // 排除名称重复
+        this.nameDuplication(ProductInfo::getName, productInfoDto.getName(), productInfoDto.getId(), "产品名称重复");
+        this.updateById(productInfoDto);
+        ObsFileUtil.editFile(productInfoDto.getImgList(), productInfoDto.getId(),1);
+        ObsFileUtil.editFile(productInfoDto.getFileList(), productInfoDto.getId(),2);
+    }
+
+    @Override
+    public ProductInfoVo detailByEhsd(Long id) {
+        ProductInfo ProductInfo = this.getById(id);
+        ProductInfoVo result = BeanUtil.toBean(ProductInfo, ProductInfoVo.class);
+
+        ProductInfoEhsdJson productInfoEhsdJson = JSONObject.parseObject(result.getEhsdJson(), ProductInfoEhsdJson.class);
+        //赋值客户名称
+        Customer customer = customerService.getById(productInfoEhsdJson.getCustomerId());
+        productInfoEhsdJson.setCustomerName(customer.getName());
+        result.setEhsdJson(JSONObject.toJSONString(productInfoEhsdJson));
+        //赋值创建人名称
+        UserUtil.assignmentNickName(Arrays.asList(result), ProductInfoVo::getCreateUser, ProductInfoVo::setCreateUserName);
+        return result;
+    }
+
+    @DSTransactional
+    @Override
     public void addByWdly(ProductInfoDto productInfoDto) {
         //处理维多利亚扩展
         String victoriatouristJson = productInfoDto.getVictoriatouristJson();

+ 21 - 0
hx-item/src/main/resources/mapper/product/ProductInfoMapper.xml

@@ -82,4 +82,25 @@
                 left join bytesailing_purchase.purchase_detail pd on pi.id = pd.bussiness_id
             ${ew.customSqlSegment}
     </select>
+
+    <select id="getCustomerProductList" resultType="com.fjhx.item.entity.product.vo.ProductInfoVo">
+        SELECT pi.id,
+               pi.definition,
+               pi.product_classify_id,
+               pi.CODE,
+               pi.type,
+               pi.NAME,
+               pi.spec,
+               pi.unit,
+               pi.remark,
+               pi.custom_code,
+               pi.create_user,
+               pi.create_time,
+               pi.update_user,
+               pi.update_time,
+               pi.ehsd_json
+        FROM product_info pi
+                 LEFT JOIN product_classify pc ON pi.product_classify_id = pc.id
+            ${ew.customSqlSegment}
+    </select>
 </mapper>

+ 5 - 0
hx-supply/src/main/java/com/fjhx/supply/controller/supplier/SupplierInfoController.java

@@ -55,6 +55,11 @@ public class SupplierInfoController {
         return supplierInfoService.detail(dto.getId());
     }
 
+    @PostMapping("/detailByWdly")
+    public SupplierInfoVo detailByWdly(@RequestBody BaseSelectDto dto) {
+        return supplierInfoService.detailByWdly(dto.getId());
+    }
+
     /**
      * 供应商新增
      */

+ 5 - 0
hx-supply/src/main/java/com/fjhx/supply/service/supplier/SupplierInfoService.java

@@ -33,6 +33,11 @@ public interface SupplierInfoService extends BaseService<SupplierInfo> {
     SupplierInfoVo detail(Long id);
 
     /**
+     * 供应商明细 维多利亚
+     */
+    SupplierInfoVo detailByWdly(Long id);
+
+    /**
      * 供应商新增
      */
     void add(SupplierInfoDto supplierInfoDto);

+ 13 - 0
hx-supply/src/main/java/com/fjhx/supply/service/supplier/impl/SupplierInfoServiceImpl.java

@@ -2,6 +2,7 @@ package com.fjhx.supply.service.supplier.impl;
 
 import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.util.ObjectUtil;
+import com.alibaba.fastjson.JSONObject;
 import com.baomidou.dynamic.datasource.annotation.DS;
 import com.baomidou.dynamic.datasource.annotation.DSTransactional;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@@ -99,6 +100,18 @@ public class SupplierInfoServiceImpl extends ServiceImpl<SupplierInfoMapper, Sup
         return result;
     }
 
+    @Override
+    public SupplierInfoVo detailByWdly(Long id) {
+        SupplierInfoVo result = detail(id);
+
+        //辅助前端 将账期和退换货期限 两个字段转为字符串
+        JSONObject json = ObjectUtil.isNotEmpty(result.getVictoriatouristJson()) ? JSONObject.parseObject(result.getVictoriatouristJson()) : new JSONObject();
+        json.put("accountPeriod",json.getString("accountPeriod"));
+        json.put("returnPeriod",json.getString("returnPeriod"));
+        result.setVictoriatouristJson(json.toJSONString());
+        return result;
+    }
+
     @DSTransactional
     @Override
     public void add(SupplierInfoDto supplierInfoDto) {