Browse Source

Merge remote-tracking branch 'origin/master'

home 2 years ago
parent
commit
42c67ff5be
25 changed files with 1299 additions and 10 deletions
  1. 27 0
      hx-common/hx-tool/src/main/java/com/fjhx/utils/ListUtil.java
  2. 195 0
      hx-service-api/storage-api/src/main/java/com/fjhx/entity/purchase/PurchaseContract.java
  3. 23 0
      hx-service-api/storage-api/src/main/java/com/fjhx/entity/supplier/Supplier.java
  4. 117 0
      hx-service-api/storage-api/src/main/java/com/fjhx/entity/supplier/SupplierPricechange.java
  5. 64 0
      hx-service/storage/src/main/java/com/fjhx/purchase/controller/PurchaseContractController.java
  6. 34 0
      hx-service/storage/src/main/java/com/fjhx/purchase/mapper/PurchaseContractMapper.java
  7. 46 0
      hx-service/storage/src/main/java/com/fjhx/purchase/mapper/PurchaseContractMapper.xml
  8. 38 0
      hx-service/storage/src/main/java/com/fjhx/purchase/service/PurchaseContractService.java
  9. 59 0
      hx-service/storage/src/main/java/com/fjhx/purchase/service/impl/PurchaseContractServiceImpl.java
  10. 1 1
      hx-service/storage/src/main/java/com/fjhx/stock/controller/StockWaterController.java
  11. 79 0
      hx-service/storage/src/main/java/com/fjhx/supplier/controller/SupplierController.java
  12. 55 0
      hx-service/storage/src/main/java/com/fjhx/supplier/controller/SupplierPricechangeController.java
  13. 22 0
      hx-service/storage/src/main/java/com/fjhx/supplier/controller/SupplierProblemController.java
  14. 64 0
      hx-service/storage/src/main/java/com/fjhx/supplier/mapper/SupplierMapper.java
  15. 132 6
      hx-service/storage/src/main/java/com/fjhx/supplier/mapper/SupplierMapper.xml
  16. 34 0
      hx-service/storage/src/main/java/com/fjhx/supplier/mapper/SupplierPricechangeMapper.java
  17. 30 0
      hx-service/storage/src/main/java/com/fjhx/supplier/mapper/SupplierPricechangeMapper.xml
  18. 8 0
      hx-service/storage/src/main/java/com/fjhx/supplier/mapper/SupplierProblemMapper.java
  19. 8 0
      hx-service/storage/src/main/java/com/fjhx/supplier/mapper/SupplierProblemMapper.xml
  20. 35 0
      hx-service/storage/src/main/java/com/fjhx/supplier/service/SupplierPricechangeService.java
  21. 13 0
      hx-service/storage/src/main/java/com/fjhx/supplier/service/SupplierProblemService.java
  22. 49 0
      hx-service/storage/src/main/java/com/fjhx/supplier/service/SupplierService.java
  23. 43 0
      hx-service/storage/src/main/java/com/fjhx/supplier/service/impl/SupplierPricechangeServiceImpl.java
  24. 25 3
      hx-service/storage/src/main/java/com/fjhx/supplier/service/impl/SupplierProblemServiceImpl.java
  25. 98 0
      hx-service/storage/src/main/java/com/fjhx/supplier/service/impl/SupplierServiceImpl.java

+ 27 - 0
hx-common/hx-tool/src/main/java/com/fjhx/utils/ListUtil.java

@@ -0,0 +1,27 @@
+package com.fjhx.utils;
+
+import io.swagger.models.auth.In;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @Author:caozj
+ * @DATE:2022/7/13 20:10
+ */
+public class ListUtil {
+
+    public static Map<String, Integer> duplicateCheckingCount(List<String> list){
+        Map<String,Integer> map = new HashMap<>();
+        for (String string : list) {
+            if(map.containsKey(string)) {
+                map.put(string, map.get(string).intValue()+1);
+            }else {
+                map.put(string, new Integer(1));
+            }
+        }
+        return map;
+    }
+
+}

+ 195 - 0
hx-service-api/storage-api/src/main/java/com/fjhx/entity/purchase/PurchaseContract.java

@@ -0,0 +1,195 @@
+package com.fjhx.entity.purchase;
+
+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.fjhx.base.BaseEntity;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.fjhx.base.BasicEntity;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * <p>
+ * 采购合同
+ * </p>
+ *
+ * @author ${author}
+ * @since 2022-07-14
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class PurchaseContract extends BasicEntity {
+
+
+    /**
+     * 软删除
+     */
+    @TableField("IsDelete")
+    private Boolean isDelete;
+
+    /**
+     * 申购单号
+     */
+    @TableField("ApplyBillNo")
+    private String applyBillNo;
+
+    /**
+     * 采购合同单号
+     */
+    @TableField("PurchaseBillNo")
+    private String purchaseBillNo;
+
+    /**
+     * 供应商ID(对应表ord_factory的ID)
+     */
+    @TableField("SupplierId")
+    private String supplierId;
+
+    /**
+     * 物料Code
+     */
+    @TableField("MaterialCode")
+    private String materialCode;
+
+    /**
+     * 采购数量
+     */
+    @TableField("PurchaseQty")
+    private BigDecimal purchaseQty;
+
+    /**
+     * 单价
+     */
+    @TableField("Price")
+    private BigDecimal price;
+
+    /**
+     * 金额
+     */
+    @TableField("TotalAmount")
+    private BigDecimal totalAmount;
+
+    /**
+     * 交付日期
+     */
+    @TableField("DeliverTime")
+    private Date deliverTime;
+
+    /**
+     * 账期
+     */
+    @TableField("AccountPeriod")
+    private Integer accountPeriod;
+
+    /**
+     * 增值税
+     */
+    @TableField("TaxValue")
+    private BigDecimal taxValue;
+
+    /**
+     * 发票类型 (枚举定义:0=专用,1=普通)
+     */
+    @TableField("InvoiceType")
+    private Integer invoiceType;
+
+    /**
+     * 签约时间
+     */
+    @TableField("SignTime")
+    private Date signTime;
+
+    /**
+     * 采购合同状态 (枚举定义:0=待确认,1=审批中,2=进行中,3=已完成)
+     */
+    @TableField("PurContractState")
+    private Integer purContractState;
+
+    /**
+     * 合同付款状态 (枚举定义:0=审批中,1=进行中,2=已完成)
+     */
+    @TableField("ContractPayState")
+    private Integer contractPayState;
+
+    /**
+     * 供应商出货状态 (枚举定义:0=进行中,1=已完成)
+     */
+    @TableField("SupplierShipState")
+    private Integer supplierShipState;
+
+    /**
+     * 审批状态 (枚举定义:0=待审批,1=审批中,2=已审批,3=已驳回,4=已撤回)
+     */
+    @TableField("ApproveBillState")
+    private Integer approveBillState;
+
+    /**
+     * 创建人ID
+     */
+    @TableField("CreateUserID")
+    private String createUserId;
+
+    /**
+     * 作废合同单号
+     */
+    @TableField("OldPurchaseBillNo")
+    private String oldPurchaseBillNo;
+
+    /**
+     * 审核时间
+     */
+    @TableField("ApprovalTime")
+    private Date approvalTime;
+
+    /**
+     * 备注
+     */
+    @TableField("Remark")
+    private String remark;
+
+    /**
+     * 质检修正金额
+     */
+    @TableField("AdjustAmount")
+    private BigDecimal adjustAmount;
+
+    /**
+     * 质检修正数量
+     */
+    @TableField("AdjustQty")
+    private BigDecimal adjustQty;
+
+    /**
+     * 已付金额
+     */
+    @TableField("HadPayAmount")
+    private BigDecimal hadPayAmount;
+
+    /**
+     * 申请付款金额
+     */
+    @TableField("ApplyPayAmount")
+    private BigDecimal applyPayAmount;
+
+    /**
+     * 退货数量
+     */
+    @TableField("RetBackQty")
+    private BigDecimal retBackQty;
+
+    /**
+     * 物料名称
+     */
+    @TableField(exist = false)
+    private String materialName;
+
+    /**
+     * 供应商名称
+     */
+    @TableField(exist = false)
+    private String supplierName;
+
+}

+ 23 - 0
hx-service-api/storage-api/src/main/java/com/fjhx/entity/supplier/Supplier.java

@@ -227,6 +227,12 @@ public class Supplier extends BasicEntity {
     private String categoryName;
     private String categoryName;
 
 
     /**
     /**
+     * 物料类型名称
+     */
+    @TableField(exist = false)
+    private String materialName;
+
+    /**
      * 物料分类名称
      * 物料分类名称
      */
      */
     @TableField(exist = false)
     @TableField(exist = false)
@@ -263,6 +269,11 @@ public class Supplier extends BasicEntity {
     private List<StockAttachment> attr;
     private List<StockAttachment> attr;
 
 
     /**
     /**
+     * 采购占比
+     */
+    @TableField(exist = false)
+    private BigDecimal purProportion;
+    /**
      * 总金额
      * 总金额
      */
      */
     @TableField(exist = false)
     @TableField(exist = false)
@@ -291,4 +302,16 @@ public class Supplier extends BasicEntity {
      */
      */
     @TableField(exist = false)
     @TableField(exist = false)
     private String monthMoney;
     private String monthMoney;
+
+    /**
+     * 条数
+     */
+    @TableField(exist = false)
+    private Integer count;
+
+    /**
+     * 金额
+     */
+    @TableField(exist = false)
+    private BigDecimal money;
 }
 }

+ 117 - 0
hx-service-api/storage-api/src/main/java/com/fjhx/entity/supplier/SupplierPricechange.java

@@ -0,0 +1,117 @@
+package com.fjhx.entity.supplier;
+
+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.fjhx.base.BaseEntity;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.fjhx.base.BasicEntity;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * <p>
+ * 供应商价格变更记录
+ * </p>
+ *
+ * @author ${author}
+ * @since 2022-07-14
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class SupplierPricechange extends BasicEntity {
+
+
+    /**
+     * 软删除
+     */
+    @TableField("IsDelete")
+    private Boolean isdelete;
+
+    /**
+     * 创建时间
+     */
+    @TableField("CreatedTime")
+    private Date createdTime;
+
+    /**
+     * 修改时间
+     */
+    @TableField("UpdatedTime")
+    private Date updatedTime;
+
+    /**
+     * 申请部门
+     */
+    @TableField("ApplyDepartment")
+    private String applyDepartment;
+
+    /**
+     * 申请时间
+     */
+    @TableField("ApplyDateTime")
+    private Date applyDateTime;
+
+    /**
+     * 变更事由
+     */
+    @TableField("Remark")
+    private String remark;
+
+    /**
+     * 原单价
+     */
+    @TableField("OldPrice")
+    private BigDecimal oldPrice;
+
+    /**
+     * 变更单价
+     */
+    @TableField("NewPrice")
+    private BigDecimal newPrice;
+
+    /**
+     * 审批状态 (枚举定义:0=待审批,1=审批中,2=已审批,3=已驳回,4=已撤回)
+     */
+    @TableField("ApproveBillState")
+    private Integer approveBillState;
+
+    /**
+     * 创建人ID
+     */
+    @TableField("CreateUserID")
+    private String createUserId;
+
+    /**
+     * 物料Code
+     */
+    @TableField("MaterialCode")
+    private String materialCode;
+
+    /**
+     * 供应商ID(对应表ord_factory的ID)
+     */
+    @TableField("SupplierId")
+    private String supplierId;
+
+    /**
+     * 供应商价格ID
+     */
+    @TableField("SupplierPriceId")
+    private String supplierPriceId;
+
+    /**
+     * 审核时间
+     */
+    @TableField("ApprovalTime")
+    private Date approvalTime;
+
+    /**
+     * 物料名称
+     */
+    @TableField(exist = false)
+    private String materialName;
+
+}

+ 64 - 0
hx-service/storage/src/main/java/com/fjhx/purchase/controller/PurchaseContractController.java

@@ -0,0 +1,64 @@
+package com.fjhx.purchase.controller;
+
+import com.fjhx.entity.purchase.PurchaseContract;
+import com.fjhx.entity.supplier.Supplier;
+import org.springblade.core.tool.api.R;
+import com.fjhx.purchase.service.PurchaseContractService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * <p>
+ * 采购合同 前端控制器
+ * </p>
+ *
+ * @author ${author}
+ * @since 2022-07-14
+ */
+@RestController
+@RequestMapping("/purchaseContract")
+public class PurchaseContractController {
+
+    @Autowired
+    private PurchaseContractService purchaseContractService;
+
+    /**
+     * 校验是否为新供应商
+     * @param supplierId
+     * @param materialCode
+     * @return
+     */
+    @GetMapping("/check/isNewSu")
+    public R monthGetSum(@RequestParam("supplierId")String supplierId,
+                         @RequestParam("materialCode")String materialCode){
+        int count = purchaseContractService.checkNewSupplier(supplierId,materialCode);
+        return R.success(count);
+    }
+
+    /**
+     * 上次面料采购
+     * @param materialCode
+     * @return
+     */
+    @GetMapping("last/newPur")
+    public R newPur(@RequestParam("materialCode")String materialCode){
+        PurchaseContract data = purchaseContractService.newPur(materialCode);
+        return R.success(data);
+    }
+
+    /**
+     * 合同历史付款记录
+     * @return
+     */
+    @GetMapping("history/list")
+    public R newPur(){
+        List<Map<String,Object>> data = purchaseContractService.historyPayList();
+        return R.success(data);
+    }
+
+
+}
+

+ 34 - 0
hx-service/storage/src/main/java/com/fjhx/purchase/mapper/PurchaseContractMapper.java

@@ -0,0 +1,34 @@
+package com.fjhx.purchase.mapper;
+
+import com.fjhx.entity.purchase.PurchaseContract;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.springblade.core.tenant.annotation.TenantIgnore;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * <p>
+ * 采购合同 Mapper 接口
+ * </p>
+ *
+ * @author ${author}
+ * @since 2022-07-14
+ */
+public interface PurchaseContractMapper extends BaseMapper<PurchaseContract> {
+
+    /**
+     * 根据物料编码查询最新得面料
+     * @param materialCode
+     * @return
+     */
+    @TenantIgnore
+    PurchaseContract getNewDataByMaterialCode(String materialCode);
+
+    /**
+     * 合同历史付款记录
+     * @return
+     */
+    @TenantIgnore
+    List<Map<String,Object>> historyPayList();
+}

+ 46 - 0
hx-service/storage/src/main/java/com/fjhx/purchase/mapper/PurchaseContractMapper.xml

@@ -0,0 +1,46 @@
+<?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.purchase.mapper.PurchaseContractMapper">
+
+    <select id="getNewDataByMaterialCode" resultType="com.fjhx.entity.purchase.PurchaseContract">
+        SELECT
+            t1.*,
+            t2.`Name` AS materialName,
+            t3.`Name` AS supplierName
+        FROM
+            purchase_contract t1
+        LEFT JOIN material t2 ON t1.MaterialCode = t2.`Code`
+        LEFT JOIN supplier t3 ON t1.SupplierId = t3.ID
+        WHERE
+          t1.ApproveBillState = 2
+          AND MaterialCode = #{materialCode}
+        ORDER BY
+            t2.CreatedTime
+            LIMIT 1
+    </select>
+
+    <select id="historyPayList" resultType="java.util.Map">
+        SELECT
+            fac.LinkId AS payBillId,
+            IFNULL(ur.`Name`,'') AS roleName,
+            IF
+                ( fac.CheckState = 0, '已驳回', '' ) AS state
+        FROM
+            (
+                SELECT
+                    LinkId,
+                    NodeId,
+                    CheckState,
+                    ROW_NUMBER() over ( PARTITION BY LinkId ORDER BY CreatedTime DESC ) AS seq
+                FROM
+                    flow_applycheck
+                WHERE
+                    1 = 1
+                  AND FlowId = '18349246d2a940bbaf5011508e3b0b70'
+            ) fac
+                LEFT JOIN flow_node fn ON fn.id = fac.NodeId
+                LEFT JOIN u_role ur ON fn.RoleKey = ur.`Key`
+        WHERE
+            fac.seq = 1
+    </select>
+</mapper>

+ 38 - 0
hx-service/storage/src/main/java/com/fjhx/purchase/service/PurchaseContractService.java

@@ -0,0 +1,38 @@
+package com.fjhx.purchase.service;
+
+import com.fjhx.entity.purchase.PurchaseContract;
+import com.fjhx.base.BaseService;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * <p>
+ * 采购合同 服务类
+ * </p>
+ *
+ * @author ${author}
+ * @since 2022-07-14
+ */
+public interface PurchaseContractService extends BaseService<PurchaseContract> {
+
+    /**
+     * 校验是否为第一次购买此物料得供应商
+     * @param supplierId
+     * @param materialCode
+     * @return
+     */
+    int checkNewSupplier(String supplierId,String materialCode);
+
+    /**
+     * 上次面料采购
+     * @return
+     */
+    PurchaseContract newPur(String materialCode);
+
+    /**
+     * 合同历史付款记录
+     * @return
+     */
+    List<Map<String,Object>> historyPayList();
+}

+ 59 - 0
hx-service/storage/src/main/java/com/fjhx/purchase/service/impl/PurchaseContractServiceImpl.java

@@ -0,0 +1,59 @@
+package com.fjhx.purchase.service.impl;
+
+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.fjhx.utils.WrapperUtil;
+import com.fjhx.entity.purchase.PurchaseContract;
+import com.fjhx.purchase.mapper.PurchaseContractMapper;
+import com.fjhx.purchase.service.PurchaseContractService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * <p>
+ * 采购合同 服务实现类
+ * </p>
+ *
+ * @author ${author}
+ * @since 2022-07-14
+ */
+@Service
+public class PurchaseContractServiceImpl extends ServiceImpl<PurchaseContractMapper, PurchaseContract> implements PurchaseContractService {
+
+    /**
+     * 校验是否为第一次购买此物料得供应商
+     * @param supplierId
+     * @param materialCode
+     * @return
+     */
+    @Override
+    public int checkNewSupplier(String supplierId, String materialCode) {
+        int count = baseMapper.selectCount(Wrappers.<PurchaseContract>query().lambda().
+                eq(PurchaseContract::getSupplierId,supplierId).
+                eq(PurchaseContract::getMaterialCode,materialCode));
+        return count;
+    }
+
+    /**
+     * 上次面料采购
+     * @param materialCode
+     * @return
+     */
+    @Override
+    public PurchaseContract newPur(String materialCode) {
+        return baseMapper.getNewDataByMaterialCode(materialCode);
+    }
+
+    /**
+     * 合同历史付款记录
+     * @return
+     */
+    @Override
+    public List<Map<String,Object>> historyPayList() {
+        return baseMapper.historyPayList();
+    }
+}

+ 1 - 1
hx-service/storage/src/main/java/com/fjhx/stock/controller/StockWaterController.java

@@ -20,7 +20,7 @@ import java.util.Map;
  * @since 2022-07-04
  * @since 2022-07-04
  */
  */
 @RestController
 @RestController
-@RequestMapping("/cloudApi/stockWater")
+@RequestMapping("/stockWater")
 public class StockWaterController {
 public class StockWaterController {
 
 
     @Autowired
     @Autowired

+ 79 - 0
hx-service/storage/src/main/java/com/fjhx/supplier/controller/SupplierController.java

@@ -124,5 +124,84 @@ public class SupplierController {
     public R detail(@RequestParam("id")String id){
     public R detail(@RequestParam("id")String id){
         return R.success(supplierService.detail(id));
         return R.success(supplierService.detail(id));
     }
     }
+
+    /**
+     * 供应商决策辅助详情
+     * @param id
+     * @return
+     */
+    @GetMapping("/su/detail")
+    public R suDetail(@RequestParam("id")String id){
+        return R.success(supplierService.getSuById(id));
+    }
+
+    /**
+     * 供应商采购分析详情
+     * @param id
+     * @return
+     */
+    @GetMapping("/su/count")
+    public R suCount(@RequestParam("id")String id){
+        return R.success(supplierService.getSuCount(id));
+    }
+
+
+    /**
+     * 列表
+     * @param condition
+     * @return
+     */
+    @PostMapping("/su/spmAnalyse")
+    public R suSpmAnalyse(@RequestBody Map<String, Object> condition){
+        ListPageMap.getListPageMap(condition);
+        List<Supplier> result = supplierService.spmAnalyse(condition);
+        return R.success(result);
+    }
+
+    /**
+     * 列表条数
+     * @param condition
+     * @return
+     */
+    @PostMapping("/su/spmAnalyse/count")
+    public R suSpmAnalyseCount(@RequestBody Map<String, Object> condition){
+        ListPageMap.getListPageMap(condition);
+        Integer count = supplierService.spmAnalyseCount(condition);
+        return R.success(count);
+    }
+
+    /**
+     * 月度退货记录
+     * @param id
+     * @return
+     */
+    @GetMapping("/month/getSum")
+    public R monthGetSum(@RequestParam("id")String id,@RequestParam("date")String date){
+        List<Supplier> list = supplierService.getBackSumMoneyAndCount(id,date);
+        return R.success(list);
+    }
+
+    /**
+     * 退货记录总数和总金额
+     * @param id
+     * @return
+     */
+    @GetMapping("/back/sum")
+    public R backSum(@RequestParam("id")String id,@RequestParam("date")String date){
+        Map<String,Object> map = supplierService.getAllSumMoneyAndCount(id,date);
+        return R.success(map);
+    }
+    /**
+     * 月度采购金额统计
+     * @param id
+     * @return
+     */
+    @GetMapping("/purchase/month/sum")
+    public R purchaseSum(@RequestParam("id")String id,@RequestParam("date")String date){
+        List<Supplier> list = supplierService.getMonthSumPurMoney(id,date);
+        return R.success(list);
+    }
+
+
 }
 }
 
 

+ 55 - 0
hx-service/storage/src/main/java/com/fjhx/supplier/controller/SupplierPricechangeController.java

@@ -0,0 +1,55 @@
+package com.fjhx.supplier.controller;
+
+import com.fjhx.base.ListPageMap;
+import org.springblade.core.tool.api.R;
+import com.fjhx.entity.supplier.SupplierPricechange;
+import com.fjhx.supplier.service.SupplierPricechangeService;
+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.List;
+import java.util.Map;
+
+/**
+ * <p>
+ * 供应商价格变更记录 前端控制器
+ * </p>
+ *
+ * @author ${author}
+ * @since 2022-07-14
+ */
+@RestController
+@RequestMapping("/supplierPricechange")
+public class SupplierPricechangeController {
+
+    @Autowired
+    private SupplierPricechangeService supplierPricechangeService;
+
+    /**
+     * 列表
+     * @param condition
+     * @return
+     */
+    @PostMapping("/su/list")
+    public R list(@RequestBody Map<String, Object> condition){
+        ListPageMap.getListPageMap(condition);
+        List<SupplierPricechange> result = supplierPricechangeService.getListBySupplierId(condition);
+        return R.success(result);
+    }
+
+    /**
+     * 列表条数
+     * @param condition
+     * @return
+     */
+    @PostMapping("/su/list/count")
+    public R listCount(@RequestBody Map<String, Object> condition){
+        ListPageMap.getListPageMap(condition);
+        Integer count = supplierPricechangeService.getListCountBySupplierId(condition);
+        return R.success(count);
+    }
+}
+

+ 22 - 0
hx-service/storage/src/main/java/com/fjhx/supplier/controller/SupplierProblemController.java

@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.fjhx.entity.supplier.SupplierProblem;
 import com.fjhx.entity.supplier.SupplierProblem;
 import com.fjhx.params.supplier.SupplierProblemVo;
 import com.fjhx.params.supplier.SupplierProblemVo;
 import com.fjhx.supplier.service.SupplierProblemService;
 import com.fjhx.supplier.service.SupplierProblemService;
+import io.swagger.models.auth.In;
 import org.springblade.core.tool.api.R;
 import org.springblade.core.tool.api.R;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.bind.annotation.*;
@@ -75,5 +76,26 @@ public class SupplierProblemController {
         return R.success(data);
         return R.success(data);
     }
     }
 
 
+    /**
+     * 面料问题反馈统计
+     * @param id
+     * @return
+     */
+    @GetMapping("/statisticsProblem")
+    public R statisticsProblem(@RequestParam("id")String id){
+        Map<String, Integer> map = supplierProblemService.statisticsProblem(id);
+        return R.success(map);
+    }
+    /**
+     * 面料问题反馈统计条数
+     * @param id
+     * @return
+     */
+    @GetMapping("/statisticsProblemCount")
+    public R statisticsProblemCount(@RequestParam("id")String id){
+        Integer count = supplierProblemService.statisticsProblemCount(id);
+        return R.success(count);
+    }
+
 }
 }
 
 

+ 64 - 0
hx-service/storage/src/main/java/com/fjhx/supplier/mapper/SupplierMapper.java

@@ -63,4 +63,68 @@ public interface SupplierMapper extends BaseMapper<Supplier> {
      */
      */
     @TenantIgnore
     @TenantIgnore
     List<Supplier> getGroupByCategory();
     List<Supplier> getGroupByCategory();
+
+    /**
+     * 供应商详情
+     * @return
+     */
+    @TenantIgnore
+    Supplier getSuById(String id);
+
+    /**
+     * 获取采购物料款数
+     * @param id
+     * @return
+     */
+    @TenantIgnore
+    Integer getMaterialTypeCount(String id);
+
+    /**
+     * 获取供应商退货次数
+     * @param id
+     * @return
+     */
+    @TenantIgnore
+    Integer getBackCount(String id);
+
+    /**
+     * 供应商采购物料分析 列表
+     * @param condition
+     * @return
+     */
+    @TenantIgnore
+    List<Supplier> getSuPurMaterialAnalyse(Map<String, Object> condition);
+
+    /**
+     * 供应商采购物料分析 条数
+     * @param condition
+     * @return
+     */
+    @TenantIgnore
+    Integer getSuPurMaterialAnalyseCount(Map<String, Object> condition);
+
+    /**
+     * 月度退货记录分析
+     * @param id
+     * @return
+     */
+    @TenantIgnore
+    List<Supplier> getBackSumMoneyAndCount(@Param("id") String id,@Param("date")String date);
+
+    /**
+     * 退货记录总数和总金额
+     * @param id
+     * @return
+     */
+    @TenantIgnore
+    Map<String,Object> getAllSumMoneyAndCount(@Param("id") String id,@Param("date")String date);
+
+    /**
+     * 月度采购分析
+     * @param id
+     * @param date
+     * @return
+     */
+    @TenantIgnore
+    List<Supplier> getMonthSumPurMoney(@Param("id") String id,@Param("date")String date);
 }
 }

+ 132 - 6
hx-service/storage/src/main/java/com/fjhx/supplier/mapper/SupplierMapper.xml

@@ -10,8 +10,8 @@
             t3.Purpose AS Purpose,
             t3.Purpose AS Purpose,
             t4.`Name` AS materialCategoryName,
             t4.`Name` AS materialCategoryName,
             t4.ID,
             t4.ID,
-            ( SELECT count( 1 ) FROM supplier_problem WHERE SupplierId = t1.id ) AS warningCount,
-            ( SELECT SUM(ProblemTypeCount) FROM supplier_problem WHERE SupplierId = t1.id ) AS warningTypeCount,
+            (<include refid="warningCount_filed"/> ) AS warningCount,
+            (<include refid="warningTypeCount_filed"/> ) AS warningTypeCount,
             (select `Name` from material_category where `Code` = t1.CategoryCode) AS categoryName
             (select `Name` from material_category where `Code` = t1.CategoryCode) AS categoryName
         FROM
         FROM
             supplier t1
             supplier t1
@@ -34,13 +34,12 @@
     </select>
     </select>
     <select id="getPurList" resultType="com.fjhx.entity.supplier.Supplier">
     <select id="getPurList" resultType="com.fjhx.entity.supplier.Supplier">
         SELECT
         SELECT
-            t1.ID,
-            t1.`Name`,
+            t1.*
             t3.CategoryCode,
             t3.CategoryCode,
             t3.TechnologyType AS TechnologyType,
             t3.TechnologyType AS TechnologyType,
             t3.Purpose AS purpose,
             t3.Purpose AS purpose,
-            ( SELECT count( 1 ) FROM supplier_problem WHERE SupplierId = t1.id ) AS warningCount,
-            ( SELECT SUM(ProblemTypeCount) FROM supplier_problem WHERE SupplierId = t1.id ) AS warningTypeCount,
+            (<include refid="warningCount_filed"/> ) AS warningCount,
+            (<include refid="warningTypeCount_filed"/> ) AS warningTypeCount,
             FORMAT(IFNULL((<include refid="sumMoney_filed"/>),0),2)AS sumMoney,
             FORMAT(IFNULL((<include refid="sumMoney_filed"/>),0),2)AS sumMoney,
             FORMAT(IFNULL((<include refid="lastYearMoney_filed"/>),0),2)AS lastYearMoney,
             FORMAT(IFNULL((<include refid="lastYearMoney_filed"/>),0),2)AS lastYearMoney,
             FORMAT(IFNULL((<include refid="yearMoney_filed"/>),0),2)AS yearMoney,
             FORMAT(IFNULL((<include refid="yearMoney_filed"/>),0),2)AS yearMoney,
@@ -77,6 +76,133 @@
         GROUP BY
         GROUP BY
             t3.TechnologyType
             t3.TechnologyType
     </select>
     </select>
+    <select id="getSuById" resultType="com.fjhx.entity.supplier.Supplier">
+        SELECT
+            t1.*,
+            ( <include refid="warningCount_filed"/> ) AS warningCount,
+            ( <include refid="warningTypeCount_filed"/> ) AS warningTypeCount
+        FROM
+            supplier t1
+        WHERE IsDelete = 0
+        AND id = #{id}
+    </select>
+    <select id="getMaterialTypeCount" resultType="java.lang.Integer">
+        SELECT
+            count( 1 )
+        FROM
+            (SELECT
+                count( 1 )
+            FROM
+                supplier t1
+            LEFT JOIN purchase_contract t2 ON t1.ID = t2.SupplierId
+            WHERE
+                t1.`id` = #{id}
+            GROUP BY
+                t2.MaterialCode
+            ) AS t1
+    </select>
+    <select id="getBackCount" resultType="java.lang.Integer">
+        SELECT
+            count(1)
+        FROM
+            supplier t1
+        LEFT JOIN purchase_contract t2 ON t1.ID = t2.SupplierId
+        LEFT JOIN apply_scenebackdetail t3 ON t2.PurchaseBillNo = t3.PurchaseBillNo
+        WHERE
+            t1.`id` = #{id}
+          AND t3.PurchaseBillNo IS NOT NULL
+          AND t3.SceneBackType = 1
+    </select>
+    <select id="getSuPurMaterialAnalyse" resultType="com.fjhx.entity.supplier.Supplier">
+        SELECT
+            t3.`Name` AS materialName,
+            t4.`Name` AS categoryName,
+            FORMAT( IFNULL( SUM( t2.TotalAmount ), 0 ), 2 ) AS sumMoney,
+            FORMAT(IFNULL((<include refid="lastMonthMoney_filed"/> AND MaterialCode = t2.MaterialCode),0),2)AS lastMonthMoney,
+            FORMAT(IFNULL((<include refid="monthMoney_filed"/> AND MaterialCode = t2.MaterialCode),0),2)AS monthMoney,
+            count( 1 ) AS count
+        FROM
+            supplier t1
+            LEFT JOIN purchase_contract t2 ON t1.ID = t2.SupplierId
+            LEFT JOIN material t3 ON t2.MaterialCode = t3.`Code`
+            LEFT JOIN material_category t4 ON t1.CategoryCode = t4.`Code`
+        WHERE
+            t1.`id` = #{id}
+        GROUP BY
+            t2.MaterialCode
+        ORDER BY t2.CreatedTime DESC
+        <include refid="sql_limit"/>
+    </select>
+    <select id="getSuPurMaterialAnalyseCount" resultType="java.lang.Integer">
+        SELECT
+               count(1)
+        FROM
+        (SELECT
+            count( 1 ) AS count
+        FROM
+        supplier t1
+        LEFT JOIN purchase_contract t2 ON t1.ID = t2.SupplierId
+        LEFT JOIN material t3 ON t2.MaterialCode = t3.`Code`
+        LEFT JOIN material_category t4 ON t1.CategoryCode = t4.`Code`
+        WHERE
+        t1.`id` = #{id}
+        GROUP BY
+        t2.MaterialCode)AS a
+    </select>
+
+    <select id="getBackSumMoneyAndCount" resultType="com.fjhx.entity.supplier.Supplier">
+        SELECT
+            count(1)AS count,
+            SUM(t3.Amount)AS sumMoney,
+            t3.CreatedTime AS CreatedTime
+        FROM
+            supplier t1
+        LEFT JOIN purchase_contract t2 ON t1.ID = t2.SupplierId
+        LEFT JOIN apply_scenebackdetail t3 ON t2.PurchaseBillNo = t3.PurchaseBillNo
+        WHERE
+          t1.`id` = #{id}
+          AND t3.PurchaseBillNo IS NOT NULL
+          AND t3.SceneBackType = 1
+          AND DATE_FORMAT(t2.CreatedTime,'%Y') = #{date}
+        GROUP BY
+            DATE_FORMAT(t3.CreatedTime,"%Y-%m")
+    </select>
+
+    <select id="getAllSumMoneyAndCount" resultType="java.util.Map">
+        SELECT
+            Count(1) AS count,
+            IFNULL(SUM( t3.Amount ),0) AS sumMoney
+        FROM
+            supplier t1
+        LEFT JOIN purchase_contract t2 ON t1.ID = t2.SupplierId
+        LEFT JOIN apply_scenebackdetail t3 ON t2.PurchaseBillNo = t3.PurchaseBillNo
+        WHERE
+              t1.`id` = #{id}
+              AND t3.PurchaseBillNo IS NOT NULL
+              AND t3.SceneBackType = 1
+              AND DATE_FORMAT(t2.CreatedTime,'%Y') = #{date}
+    </select>
+
+    <select id="getMonthSumPurMoney" resultType="com.fjhx.entity.supplier.Supplier">
+        SELECT
+            SUM( TotalAmount ) AS money,
+            t2.CreatedTime AS CreatedTime
+        FROM
+            supplier t1
+        LEFT JOIN purchase_contract t2 ON t1.ID = t2.SupplierId
+        WHERE
+            t1.ID = #{id}
+          AND DATE_FORMAT( t2.CreatedTime, '%Y' ) = #{date}
+        GROUP BY
+            DATE_FORMAT( t2.CreatedTime, '%Y-%m' )
+    </select>
+
+    <sql id="warningCount_filed">
+        SELECT count( 1 ) FROM supplier_problem WHERE SupplierId = t1.id
+    </sql>
+    <sql id="warningTypeCount_filed">
+        SELECT SUM( ProblemTypeCount ) FROM supplier_problem WHERE SupplierId = t1.id
+    </sql>
     <sql id="sumMoney_filed">
     <sql id="sumMoney_filed">
         SELECT SUM( TotalAmount ) FROM purchase_contract WHERE IsDelete = 0 AND SupplierId = t1.ID
         SELECT SUM( TotalAmount ) FROM purchase_contract WHERE IsDelete = 0 AND SupplierId = t1.ID
     </sql>
     </sql>

+ 34 - 0
hx-service/storage/src/main/java/com/fjhx/supplier/mapper/SupplierPricechangeMapper.java

@@ -0,0 +1,34 @@
+package com.fjhx.supplier.mapper;
+
+import com.fjhx.entity.supplier.SupplierPricechange;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.springblade.core.tenant.annotation.TenantIgnore;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * <p>
+ * 供应商价格变更记录 Mapper 接口
+ * </p>
+ *
+ * @author ${author}
+ * @since 2022-07-14
+ */
+public interface SupplierPricechangeMapper extends BaseMapper<SupplierPricechange> {
+
+    /**
+     * 列表--根据供应商ID
+     * @return
+     */
+    @TenantIgnore
+    List<SupplierPricechange> getListBySupplierId(Map<String,Object> condition);
+
+    /**
+     * 列表条数--根据供应商ID
+     * @return
+     */
+    @TenantIgnore
+    Integer getListCountBySupplierId(Map<String,Object> condition);
+
+}

+ 30 - 0
hx-service/storage/src/main/java/com/fjhx/supplier/mapper/SupplierPricechangeMapper.xml

@@ -0,0 +1,30 @@
+<?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.supplier.mapper.SupplierPricechangeMapper">
+
+    <select id="getListBySupplierId" resultType="com.fjhx.entity.supplier.SupplierPricechange">
+        SELECT
+            t1.*,
+            t2.`Name` AS materialName
+        FROM
+            supplier_pricechange t1
+                LEFT JOIN material t2 ON t1.MaterialCode = t2.`Code`
+        WHERE
+            t1.SupplierId = #{id}
+            AND ApproveBillState = 2
+        ORDER BY
+            ApprovalTime DESC
+        <include refid="com.fjhx.supplier.mapper.SupplierMapper.sql_limit"/>
+    </select>
+
+    <select id="getListCountBySupplierId" resultType="java.lang.Integer">
+        SELECT
+            count(1)
+        FROM
+            supplier_pricechange t1
+        LEFT JOIN material t2 ON t1.MaterialCode = t2.`Code`
+        WHERE
+            t1.SupplierId = #{id}
+            AND ApproveBillState = 2
+    </select>
+</mapper>

+ 8 - 0
hx-service/storage/src/main/java/com/fjhx/supplier/mapper/SupplierProblemMapper.java

@@ -2,6 +2,7 @@ package com.fjhx.supplier.mapper;
 
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.fjhx.entity.supplier.SupplierProblem;
 import com.fjhx.entity.supplier.SupplierProblem;
+import org.springblade.core.tenant.annotation.TenantIgnore;
 
 
 /**
 /**
  * <p>
  * <p>
@@ -13,4 +14,11 @@ import com.fjhx.entity.supplier.SupplierProblem;
  */
  */
 public interface SupplierProblemMapper extends BaseMapper<SupplierProblem> {
 public interface SupplierProblemMapper extends BaseMapper<SupplierProblem> {
 
 
+    /**
+     * 获取所有类型
+     * @param id
+     * @return
+     */
+    @TenantIgnore
+    String getGroupConcatType(String id);
 }
 }

+ 8 - 0
hx-service/storage/src/main/java/com/fjhx/supplier/mapper/SupplierProblemMapper.xml

@@ -2,4 +2,12 @@
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.fjhx.supplier.mapper.SupplierProblemMapper">
 <mapper namespace="com.fjhx.supplier.mapper.SupplierProblemMapper">
 
 
+    <select id="getGroupConcatType" resultType="java.lang.String">
+        SELECT
+            GROUP_CONCAT( ProblemType )
+        FROM
+            supplier_problem
+        WHERE
+            SupplierId = #{id}
+    </select>
 </mapper>
 </mapper>

+ 35 - 0
hx-service/storage/src/main/java/com/fjhx/supplier/service/SupplierPricechangeService.java

@@ -0,0 +1,35 @@
+package com.fjhx.supplier.service;
+
+import com.fjhx.entity.supplier.Supplier;
+import com.fjhx.entity.supplier.SupplierPricechange;
+import com.fjhx.base.BaseService;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * <p>
+ * 供应商价格变更记录 服务类
+ * </p>
+ *
+ * @author ${author}
+ * @since 2022-07-14
+ */
+public interface SupplierPricechangeService extends BaseService<SupplierPricechange> {
+
+    /**
+     * 列表
+     *
+     * @param condition
+     * @return
+     */
+    List<SupplierPricechange> getListBySupplierId(Map<String, Object> condition);
+
+    /**
+     * 列表-总条数
+     *
+     * @param condition
+     * @return
+     */
+    Integer getListCountBySupplierId(Map<String, Object> condition);
+}

+ 13 - 0
hx-service/storage/src/main/java/com/fjhx/supplier/service/SupplierProblemService.java

@@ -27,4 +27,17 @@ public interface SupplierProblemService extends BaseService<SupplierProblem> {
 
 
     SupplierProblem detail(String id);
     SupplierProblem detail(String id);
 
 
+    /**
+     * 问题反馈统计
+     * @param supplierId
+     * @return
+     */
+    Map<String,Integer> statisticsProblem(String supplierId);
+
+    /**
+     * 问题反馈条数
+     * @param supplierId
+     * @return
+     */
+    Integer statisticsProblemCount(String supplierId);
 }
 }

+ 49 - 0
hx-service/storage/src/main/java/com/fjhx/supplier/service/SupplierService.java

@@ -83,4 +83,53 @@ public interface SupplierService extends BaseService<Supplier> {
      * @param id
      * @param id
      */
      */
     Supplier detail(String id);
     Supplier detail(String id);
+
+    /**
+     * 供应商决策辅助详情
+     * @param id
+     */
+    Supplier getSuById(String id);
+
+    /**
+     * 供应商采购分析详情
+     * @param id
+     * @return
+     */
+    Map<String,Integer> getSuCount(String id);
+
+    /**
+     * 供应商采购物料分析 列表
+     * @param condition
+     * @return
+     */
+    List<Supplier> spmAnalyse(Map<String, Object> condition);
+
+    /**
+     * 供应商采购物料分析 列表
+     * @param condition
+     * @return
+     */
+    Integer spmAnalyseCount(Map<String, Object> condition);
+
+    /**
+     * 月度退货记录分析
+     * @param id
+     * @return
+     */
+    List<Supplier> getBackSumMoneyAndCount(String id,String date);
+
+    /**
+     * 退货记录总数和总金额
+     * @param id
+     * @return
+     */
+    Map<String,Object> getAllSumMoneyAndCount(String id,String date);
+
+    /**
+     * 月度采购分析
+     * @param id
+     * @param date
+     * @return
+     */
+    List<Supplier> getMonthSumPurMoney(String id,String date);
 }
 }

+ 43 - 0
hx-service/storage/src/main/java/com/fjhx/supplier/service/impl/SupplierPricechangeServiceImpl.java

@@ -0,0 +1,43 @@
+package com.fjhx.supplier.service.impl;
+
+import com.fjhx.entity.supplier.Supplier;
+import com.fjhx.entity.supplier.SupplierPricechange;
+import com.fjhx.supplier.mapper.SupplierPricechangeMapper;
+import com.fjhx.supplier.service.SupplierPricechangeService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * <p>
+ * 供应商价格变更记录 服务实现类
+ * </p>
+ *
+ * @author ${author}
+ * @since 2022-07-14
+ */
+@Service
+public class SupplierPricechangeServiceImpl extends ServiceImpl<SupplierPricechangeMapper, SupplierPricechange> implements SupplierPricechangeService {
+
+    /**
+     * 列表--根据供应商ID
+     * @param condition
+     * @return
+     */
+    @Override
+    public List<SupplierPricechange> getListBySupplierId(Map<String, Object> condition) {
+        return baseMapper.getListBySupplierId(condition);
+    }
+
+    /**
+     * 列表条数--根据供应商ID
+     * @param condition
+     * @return
+     */
+    @Override
+    public Integer getListCountBySupplierId(Map<String, Object> condition) {
+        return baseMapper.getListCountBySupplierId(condition);
+    }
+}

+ 25 - 3
hx-service/storage/src/main/java/com/fjhx/supplier/service/impl/SupplierProblemServiceImpl.java

@@ -11,7 +11,9 @@ import com.fjhx.entity.supplier.SupplierProblem;
 import com.fjhx.params.supplier.SupplierProblemVo;
 import com.fjhx.params.supplier.SupplierProblemVo;
 import com.fjhx.supplier.mapper.SupplierProblemMapper;
 import com.fjhx.supplier.mapper.SupplierProblemMapper;
 import com.fjhx.supplier.service.SupplierProblemService;
 import com.fjhx.supplier.service.SupplierProblemService;
+import com.fjhx.utils.ListUtil;
 import com.fjhx.utils.WrapperUtil;
 import com.fjhx.utils.WrapperUtil;
+import io.swagger.models.auth.In;
 import org.springblade.core.log.exception.ServiceException;
 import org.springblade.core.log.exception.ServiceException;
 import org.springblade.core.tool.utils.CollectionUtil;
 import org.springblade.core.tool.utils.CollectionUtil;
 import org.springblade.core.tool.utils.ObjectUtil;
 import org.springblade.core.tool.utils.ObjectUtil;
@@ -20,9 +22,7 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.transaction.annotation.Transactional;
 
 
-import java.util.Date;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 
 
 /**
 /**
  * <p>
  * <p>
@@ -122,4 +122,26 @@ public class SupplierProblemServiceImpl extends ServiceImpl<SupplierProblemMappe
         return vo;
         return vo;
     }
     }
 
 
+    /**
+     * 面料问题反馈
+     * @param supplierId
+     * @return
+     */
+    @Override
+    public Map<String, Integer> statisticsProblem(String supplierId) {
+        List<String> list = Arrays.asList(baseMapper.getGroupConcatType(supplierId).split(","));
+        Map<String,Integer> map = ListUtil.duplicateCheckingCount(list);
+        return map;
+    }
+
+    /**
+     * 面料问题反馈条数
+     * @param supplierId
+     * @return
+     */
+    @Override
+    public Integer statisticsProblemCount(String supplierId) {
+        return baseMapper.selectCount(Wrappers.<SupplierProblem>query().lambda().eq(SupplierProblem::getSupplierId,supplierId));
+    }
+
 }
 }

+ 98 - 0
hx-service/storage/src/main/java/com/fjhx/supplier/service/impl/SupplierServiceImpl.java

@@ -14,18 +14,23 @@ import com.fjhx.params.supplier.SupplierVo;
 import com.fjhx.supplier.mapper.SupplierMapper;
 import com.fjhx.supplier.mapper.SupplierMapper;
 import com.fjhx.supplier.service.SupplierService;
 import com.fjhx.supplier.service.SupplierService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import io.swagger.models.auth.In;
 import org.springblade.core.log.exception.ServiceException;
 import org.springblade.core.log.exception.ServiceException;
 import org.springblade.core.tool.utils.CollectionUtil;
 import org.springblade.core.tool.utils.CollectionUtil;
 import org.springblade.core.tool.utils.ObjectUtil;
 import org.springblade.core.tool.utils.ObjectUtil;
 import org.springblade.core.tool.utils.StringUtil;
 import org.springblade.core.tool.utils.StringUtil;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.autoconfigure.security.SecurityProperties;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.transaction.annotation.Transactional;
 
 
+import java.math.BigDecimal;
 import java.text.ParseException;
 import java.text.ParseException;
 import java.util.Date;
 import java.util.Date;
+import java.util.HashMap;
 import java.util.List;
 import java.util.List;
 import java.util.Map;
 import java.util.Map;
+import java.util.stream.Collectors;
 
 
 /**
 /**
  * <p>
  * <p>
@@ -171,4 +176,97 @@ public class SupplierServiceImpl extends ServiceImpl<SupplierMapper, Supplier> i
         return supplier;
         return supplier;
     }
     }
 
 
+    /**
+     * 供应商决策辅助详情
+     * @param id
+     * @return
+     */
+    @Override
+    public Supplier getSuById(String id) {
+        return baseMapper.getSuById(id);
+    }
+
+    /**
+     * 供应商采购分析详情
+     * @param id
+     * @return
+     */
+    @Override
+    public Map<String, Integer> getSuCount(String id) {
+        if(StringUtil.isEmpty(id)){
+            throw new ServiceException("参数异常");
+        }
+        Map<String, Integer> map = new HashMap<>();
+        map.put("BackCount", baseMapper.getBackCount(id));
+        map.put("MaterialTypeCount", baseMapper.getMaterialTypeCount(id));
+        return map;
+    }
+
+    /**
+     * 供应商采购物料分析
+     * @param condition
+     * @return
+     */
+    @Override
+    public List<Supplier> spmAnalyse(Map<String, Object> condition) {
+        List<Supplier> list = baseMapper.getSuPurMaterialAnalyse(condition);
+        //统计出所有条数得总额
+        int countSum = list.stream().mapToInt(Supplier::getCount).sum();
+        for(Supplier s:list){
+            BigDecimal b1 = new BigDecimal(s.getCount());
+            BigDecimal b2 = new BigDecimal(countSum);
+            s.setPurProportion(b1.divide(b2,2,BigDecimal.ROUND_HALF_UP));
+        }
+        return list;
+    }
+
+    /**
+     * 供应商采购物料分析
+     * @param condition
+     * @return
+     */
+    @Override
+    public Integer spmAnalyseCount(Map<String, Object> condition) {
+        int count = baseMapper.getSuPurMaterialAnalyseCount(condition);
+        return count;
+    }
+
+    /**
+     * 月度退货记录分析
+     * @param id
+     * @return
+     */
+    @Override
+    public List<Supplier> getBackSumMoneyAndCount(String id,String date) {
+        return baseMapper.getBackSumMoneyAndCount(id,date);
+    }
+
+    /**
+     * 退货记录总数和总金额
+     * @param id
+     * @return
+     */
+    @Override
+    public Map<String, Object> getAllSumMoneyAndCount(String id,String date) {
+        return baseMapper.getAllSumMoneyAndCount(id,date);
+    }
+
+    /**
+     * 月度采购分析
+     * @param id
+     * @param date
+     * @return
+     */
+    @Override
+    public List<Supplier> getMonthSumPurMoney(String id, String date) {
+        List<Supplier> list = baseMapper.getMonthSumPurMoney(id,date);
+        //统计出所有条数得总额
+        BigDecimal totalMoney = list.stream()
+                .map(Supplier::getMoney)
+                .reduce(BigDecimal.ZERO,BigDecimal::add);
+        for(Supplier s:list){
+            s.setPurProportion(s.getMoney().divide(totalMoney,2,BigDecimal.ROUND_HALF_UP));
+        }
+        return list;
+    }
 }
 }