Преглед на файлове

解决驾驶仓手动填报数据

wukai преди 2 седмици
родител
ревизия
2e749ff0c0

+ 54 - 9
jjt-biz/src/main/java/com/jjt/biz/controller/ApiDriverController.java

@@ -1,12 +1,17 @@
 package com.jjt.biz.controller;
 
+import com.jjt.biz.vo.CostVO;
+import com.jjt.biz.vo.GlobalRevenueVO;
+import com.jjt.biz.vo.SalesVO;
 import com.jjt.common.core.controller.BaseController;
 import com.jjt.common.core.domain.R;
+import com.jjt.common.core.redis.RedisCache;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.web.bind.annotation.*;
 
+import javax.annotation.Resource;
 import java.util.*;
 
 /**
@@ -19,6 +24,9 @@ import java.util.*;
 @RequestMapping("/api/driver")
 @Slf4j
 public class ApiDriverController extends BaseController {
+    @Resource
+    private RedisCache redisCache;
+
     @ApiOperation("全球营收")
     @GetMapping("/rev")
     @CrossOrigin(origins = "*")
@@ -139,7 +147,21 @@ public class ApiDriverController extends BaseController {
             forecastList.add(forecastMap);
         }
         result.put("forecastList", forecastList);
-        return R.ok(result);
+        Object obj = redisCache.getCacheObject("driver:rev");
+        if (obj != null) {
+            return R.ok(obj);
+        } else {
+            return R.ok(result);
+        }
+    }
+
+    @ApiOperation("全球营收")
+    @PostMapping("/rev")
+    @CrossOrigin(origins = "*")
+    @ResponseBody
+    public R<?> saveRev(@RequestBody GlobalRevenueVO vo) {
+        redisCache.setCacheObject("driver:rev", vo);
+        return R.ok();
     }
 
     @ApiOperation("销售")
@@ -260,8 +282,21 @@ public class ApiDriverController extends BaseController {
             specRanking.add(specData);
         }
         result.put("bom", specRanking);
+        Object obj = redisCache.getCacheObject("driver:sales");
+        if (obj != null) {
+            return R.ok(obj);
+        } else {
+            return R.ok(result);
+        }
+    }
 
-        return R.ok(result);
+    @ApiOperation("销售")
+    @PostMapping("/sales")
+    @CrossOrigin(origins = "*")
+    @ResponseBody
+    public R<?> saveSales(@RequestBody SalesVO vo) {
+        redisCache.setCacheObject("driver:sales", vo);
+        return R.ok();
     }
 
     @ApiOperation("成本")
@@ -344,10 +379,6 @@ public class ApiDriverController extends BaseController {
                 put("month", month);
                 put("value", Math.round(v3 * 100) / 100.0);
             }});
-            n3List.add(new HashMap<String, Object>() {{
-                put("month", month);
-                put("value", Math.round(v3 * 100) / 100.0);
-            }});
             n4List.add(new HashMap<String, Object>() {{
                 put("month", month);
                 put("value", Math.round(v4 * 100) / 100.0);
@@ -396,8 +427,8 @@ public class ApiDriverController extends BaseController {
         // 成本明细数据
         List<Map<String, Object>> costDetails = new ArrayList<>();
         String[] costItems = {"产量", "人工工资", "计时工资", "社会保险费", "职工福利费", "委外加工费", "机物料(含柴油)",
-                            "修理费", "制版材料", "染料", "助剂", "辅料", "水", "水电费", "药剂", "其他", "折旧", "加工成本"};
-        String[] proc = {"加弹","经编", "前整", "印染", "后整", "成品"};
+                "修理费", "制版材料", "染料", "助剂", "辅料", "水", "水电费", "药剂", "其他", "折旧", "加工成本"};
+        String[] proc = {"加弹", "经编", "前整", "印染", "后整", "成品"};
 
         // 生成各成本项数据
         for (String item : costItems) {
@@ -429,7 +460,21 @@ public class ApiDriverController extends BaseController {
         }
         result.put("detail", costDetails);
 
-        return R.ok(result);
+        Object obj = redisCache.getCacheObject("driver:cogs");
+        if (obj != null) {
+            return R.ok(obj);
+        } else {
+            return R.ok(result);
+        }
+    }
+
+    @ApiOperation("成本")
+    @PostMapping("/cogs")
+    @CrossOrigin(origins = "*")
+    @ResponseBody
+    public R<?> saveCogs(@RequestBody CostVO vo) {
+        redisCache.setCacheObject("driver:cogs", vo);
+        return R.ok();
     }
 
     @ApiOperation("采购")

+ 240 - 0
jjt-biz/src/main/java/com/jjt/biz/vo/CostVO.java

@@ -0,0 +1,240 @@
+package com.jjt.biz.vo;
+
+import lombok.Data;
+import java.util.List;
+
+/**
+ * 成本数据VO类
+ *
+ * @author lingma
+ */
+@Data
+public class CostVO {
+
+    /**
+     * 当前成本数据
+     */
+    private CurrentCost curr;
+
+    /**
+     * 历史成本数据
+     */
+    private HistoricalCost his;
+
+    /**
+     * 成本趋势数据
+     */
+    private List<CostTrend> trend;
+
+    /**
+     * 生产效率数据
+     */
+    private List<Productivity> prod;
+
+    /**
+     * 成本明细数据
+     */
+    private List<CostDetail> detail;
+
+
+    /**
+     * 当前成本数据内部类
+     */
+    @Data
+    public static class CurrentCost {
+        /**
+         * 总成本
+         */
+        private String total;
+
+        /**
+         * 成本项1名称 - 人工工资+社保+福利
+         */
+        private String n1;
+
+        /**
+         * 成本项1值
+         */
+        private Double v1;
+
+        /**
+         * 成本项1占比
+         */
+        private Double p1;
+
+        /**
+         * 成本项2名称 - 电+汽
+         */
+        private String n2;
+
+        /**
+         * 成本项2值
+         */
+        private Double v2;
+
+        /**
+         * 成本项2占比
+         */
+        private Double p2;
+
+        /**
+         * 成本项3名称 - 运营+管理
+         */
+        private String n3;
+
+        /**
+         * 成本项3值
+         */
+        private Double v3;
+
+        /**
+         * 成本项3占比
+         */
+        private Double p3;
+
+        /**
+         * 成本项4名称 - 机物料+修理+制版材料+染料+助剂+辅料+水
+         */
+        private String n4;
+
+        /**
+         * 成本项4值
+         */
+        private Double v4;
+
+        /**
+         * 成本项4占比
+         */
+        private Double p4;
+
+        /**
+         * 成本项5名称 - 折旧
+         */
+        private String n5;
+
+        /**
+         * 成本项5值
+         */
+        private Double v5;
+
+        /**
+         * 成本项5占比
+         */
+        private Double p5;
+
+        /**
+         * 成本项6名称 - 其他
+         */
+        private String n6;
+
+        /**
+         * 成本项6值
+         */
+        private Double v6;
+
+        /**
+         * 成本项6占比
+         */
+        private Double p6;
+    }
+
+    /**
+     * 历史成本数据内部类
+     */
+    @Data
+    public static class HistoricalCost {
+        /**
+         * 成本项1历史数据列表 - 人工工资+社保+福利
+         */
+        private List<CostItem> n1;
+
+        /**
+         * 成本项2历史数据列表 - 电+汽
+         */
+        private List<CostItem> n2;
+
+        /**
+         * 成本项3历史数据列表 - 运营+管理
+         */
+        private List<CostItem> n3;
+
+        /**
+         * 成本项4历史数据列表 - 机物料+修理+制版材料+染料+助剂+辅料+水
+         */
+        private List<CostItem> n4;
+
+        /**
+         * 成本项5历史数据列表 - 折旧
+         */
+        private List<CostItem> n5;
+
+        /**
+         * 成本项6历史数据列表 - 其他
+         */
+        private List<CostItem> n6;
+    }
+
+    /**
+     * 成本项内部类
+     */
+    @Data
+    public static class CostItem {
+        /**
+         * 月份
+         */
+        private String month;
+
+        /**
+         * 成本值
+         */
+        private Double value;
+    }
+
+    /**
+     * 成本趋势内部类
+     */
+    @Data
+    public static class CostTrend {
+        /**
+         * 月份
+         */
+        private String month;
+
+        /**
+         * 成本值(万元)
+         */
+        private Double value;
+    }
+
+    /**
+     * 生产效率内部类
+     */
+    @Data
+    public static class Productivity {
+        /**
+         * 工序名称
+         */
+        private String name;
+
+        /**
+         * 效率值(米/人/天)
+         */
+        private Double value;
+    }
+
+    /**
+     * 成本明细内部类
+     */
+    @Data
+    public static class CostDetail {
+        /**
+         * 成本项目
+         */
+        private String item;
+
+        /**
+         * 各工序值列表
+         */
+        private List<Double> values;
+    }
+}

+ 242 - 0
jjt-biz/src/main/java/com/jjt/biz/vo/GlobalRevenueVO.java

@@ -0,0 +1,242 @@
+package com.jjt.biz.vo;
+
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * 全球营收数据VO类
+ *
+ * @author wukai
+ */
+@Data
+public class GlobalRevenueVO {
+
+    /**
+     * 年度总营收(单位:万元)
+     */
+    private Integer rev;
+
+    /**
+     * 年度总成本(单位:万元)
+     */
+    private Integer cogs;
+
+    /**
+     * 年度总利润(单位:万元)
+     */
+    private Integer gp;
+
+    /**
+     * 年度毛利率(百分比)
+     */
+    private Double gpm;
+
+    /**
+     * 总资产(单位:万元)
+     */
+    private Integer assets;
+
+    /**
+     * 业务覆盖国家数量
+     */
+    private Integer country;
+
+    /**
+     * 年度订单总量
+     */
+    private Integer order;
+
+    /**
+     * 营收构成明细数据
+     */
+    private List<RevenueDetail> revList;
+
+    /**
+     * 成本构成明细数据
+     */
+    private List<CostDetail> cogsList;
+
+    /**
+     * 各国业务数据
+     */
+    private List<CountryBusiness> orderList;
+
+    /**
+     * 产品线利润数据
+     */
+    private List<ProductProfit> gpList;
+
+    /**
+     * 产品线毛利率数据
+     */
+    private List<ProductGrossMargin> gpmList;
+
+    /**
+     * 月度经营数据
+     */
+    private List<MonthlyOperation> tradeList;
+
+    /**
+     * 月度预测数据
+     */
+    private List<MonthlyForecast> forecastList;
+
+
+    /**
+     * 营收构成明细内部类
+     */
+    @Data
+    public static class RevenueDetail {
+        /**
+         * 收入类型
+         */
+        private String type;
+
+        /**
+         * 收入金额(万元)
+         */
+        private Double value;
+
+    }
+
+    /**
+     * 成本构成明细内部类
+     */
+    @Data
+    public static class CostDetail {
+        /**
+         * 成本类型
+         */
+        private String type;
+
+        /**
+         * 成本金额(万元)
+         */
+        private Double value;
+
+    }
+
+    /**
+     * 各国业务数据内部类
+     */
+    @Data
+    public static class CountryBusiness {
+        /**
+         * 国家名称
+         */
+        private String country;
+
+        /**
+         * 订单数量
+         */
+        private Integer num;
+
+        /**
+         * 收入(万元)
+         */
+        private Integer rev;
+
+        /**
+         * 利润(万元)
+         */
+        private Double gp;
+    }
+
+    /**
+     * 产品线利润数据内部类
+     */
+    @Data
+    public static class ProductProfit {
+        /**
+         * 产品类型
+         */
+        private String type;
+
+        /**
+         * 利润金额(万元)
+         */
+        private Double value;
+
+        /**
+         * 毛利率百分比
+         */
+        private Double gmp;
+
+    }
+
+    /**
+     * 产品线毛利率数据内部类
+     */
+    @Data
+    public static class ProductGrossMargin {
+        /**
+         * 产品类型
+         */
+        private String type;
+
+        /**
+         * 毛利率百分比
+         */
+        private Double value;
+
+    }
+
+    /**
+     * 月度经营数据内部类
+     */
+    @Data
+    public static class MonthlyOperation {
+        /**
+         * 月份
+         */
+        private String month;
+
+        /**
+         * 月度收入(万元)
+         */
+        private Integer revenue;
+
+        /**
+         * 月度成本(万元)
+         */
+        private Integer cost;
+
+        /**
+         * 月度利润(万元)
+         */
+        private Integer profit;
+
+        /**
+         * 月度利润率(%)
+         */
+        private Double profitRate;
+
+    }
+
+    /**
+     * 月度预测数据内部类
+     */
+    @Data
+    public static class MonthlyForecast {
+        /**
+         * 预测月份
+         */
+        private String month;
+
+        /**
+         * 预测收入(万元)
+         */
+        private Integer revenue;
+
+        /**
+         * 预测利润率(%)
+         */
+        private Double profitRate;
+
+        /**
+         * 预测资产(万元)
+         */
+        private Integer assets;
+    }
+}

+ 166 - 0
jjt-biz/src/main/java/com/jjt/biz/vo/SalesVO.java

@@ -0,0 +1,166 @@
+package com.jjt.biz.vo;
+
+import lombok.Data;
+import java.util.List;
+
+/**
+ * 销售数据VO类
+ *
+ * @author lingma
+ */
+@Data
+public class SalesVO {
+
+    /**
+     * 月度销售数据
+     */
+    private List<MonthlySales> sales;
+
+    /**
+     * 渠道排名数据
+     */
+    private List<ChannelRanking> channel;
+
+    /**
+     * 花色排名数据
+     */
+    private List<PatternRanking> pattern;
+
+    /**
+     * 区域销售数据
+     */
+    private List<SalesTypeRegion> type;
+
+    /**
+     * 规格占比数据
+     */
+    private List<SpecRanking> bom;
+
+
+    /**
+     * 月度销售数据内部类
+     */
+    @Data
+    public static class MonthlySales {
+        /**
+         * 月份
+         */
+        private String month;
+
+        /**
+         * 销售收入
+         */
+        private Double revenue;
+    }
+
+    /**
+     * 渠道排名数据内部类
+     */
+    @Data
+    public static class ChannelRanking {
+        /**
+         * 渠道名称
+         */
+        private String channel;
+
+        /**
+         * 销售金额
+         */
+        private Double amount;
+
+        /**
+         * 占比百分比
+         */
+        private Double percentage;
+    }
+
+    /**
+     * 花色排名数据内部类
+     */
+    @Data
+    public static class PatternRanking {
+        /**
+         * 花色名称
+         */
+        private String pattern;
+
+        /**
+         * 销售金额
+         */
+        private Double amount;
+    }
+
+    /**
+     * 销售类型区域数据内部类
+     */
+    @Data
+    public static class SalesTypeRegion {
+        /**
+         * 销售类型
+         */
+        private String salesType;
+
+        /**
+         * 区域销售详情列表
+         */
+        private List<RegionDetail> regions;
+    }
+
+    /**
+     * 区域详情内部类
+     */
+    @Data
+    public static class RegionDetail {
+        /**
+         * 区域名称
+         */
+        private String region;
+
+        /**
+         * 销售金额
+         */
+        private Double amount;
+
+        /**
+         * 月度销售趋势
+         */
+        private List<MonthlyTrend> trend;
+    }
+
+    /**
+     * 月度趋势内部类
+     */
+    @Data
+    public static class MonthlyTrend {
+        /**
+         * 月份
+         */
+        private String month;
+
+        /**
+         * 销售金额
+         */
+        private Double amount;
+    }
+
+    /**
+     * 规格排名数据内部类
+     */
+    @Data
+    public static class SpecRanking {
+        /**
+         * 规格名称
+         */
+        private String bom;
+
+        /**
+         * 销售金额
+         */
+        private Double amount;
+
+        /**
+         * 占比百分比
+         */
+        private Double percentage;
+    }
+}