浏览代码

仓储数据分析

hanqingsong 1 年之前
父节点
当前提交
60e6f46dec

+ 45 - 0
src/main/java/com/chinaitop/depot/intelligent/basicData/controller/WarehouseDataAnalysisController.java

@@ -0,0 +1,45 @@
1
+package com.chinaitop.depot.intelligent.basicData.controller;
2
+
3
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
4
+import com.chinaitop.depot.intelligent.basicData.param.WarehouseDataAnalysis;
5
+import com.chinaitop.depot.intelligent.basicData.param.WarehouseDataAnalysisChart;
6
+import com.chinaitop.depot.intelligent.basicData.param.WarehouseDataAnalysisPageParam;
7
+import com.chinaitop.depot.intelligent.basicData.service.WarehouseDataAnalysisService;
8
+import com.chinaitop.depot.intelligent.common.ResponseEntity;
9
+import com.chinaitop.depot.intelligent.devData.model.TLqDataPageParam;
10
+import io.swagger.annotations.Api;
11
+import io.swagger.annotations.ApiOperation;
12
+import org.springframework.validation.annotation.Validated;
13
+import org.springframework.web.bind.annotation.GetMapping;
14
+import org.springframework.web.bind.annotation.PathVariable;
15
+import org.springframework.web.bind.annotation.RequestMapping;
16
+import org.springframework.web.bind.annotation.RestController;
17
+
18
+import javax.annotation.Resource;
19
+import java.util.List;
20
+
21
+/**
22
+ * @author qingsong.han
23
+ * @description:
24
+ * @create 2024-07-16 15:39
25
+ */
26
+@RestController
27
+@RequestMapping("/warehouseDataAnalysis")
28
+@Api(tags = "仓储数据分析")
29
+public class WarehouseDataAnalysisController {
30
+    @Resource
31
+    private WarehouseDataAnalysisService warehouseDataAnalysisService;
32
+
33
+    @GetMapping("/getPageList")
34
+    @ApiOperation(value = "仓储数据分析分页列表", notes = "支持分页")
35
+    public ResponseEntity<Page<WarehouseDataAnalysis>> getPageList(@Validated WarehouseDataAnalysisPageParam param) {
36
+        return ResponseEntity.ok(warehouseDataAnalysisService.getPageList(param));
37
+    }
38
+
39
+    @GetMapping("/getChartList/{orgId}")
40
+    @ApiOperation(value = "仓储数据分析分页列表", notes = "图表数据")
41
+    public ResponseEntity<List<WarehouseDataAnalysisChart>> getChartList(@PathVariable("orgId") Integer orgId) {
42
+        return ResponseEntity.ok(warehouseDataAnalysisService.getChartList(orgId));
43
+    }
44
+
45
+}

+ 21 - 0
src/main/java/com/chinaitop/depot/intelligent/basicData/mapper/WarehouseDataAnalysisMapper.java

@@ -0,0 +1,21 @@
1
+package com.chinaitop.depot.intelligent.basicData.mapper;
2
+
3
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
4
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
5
+import com.chinaitop.depot.intelligent.basicData.param.WarehouseDataAnalysis;
6
+import com.chinaitop.depot.intelligent.basicData.param.WarehouseDataAnalysisChart;
7
+import org.apache.ibatis.annotations.Param;
8
+
9
+import java.util.List;
10
+import java.util.Map;
11
+
12
+/**
13
+ * @author qingsong.han
14
+ * @description:
15
+ * @create 2024-07-16 16:02
16
+ */
17
+public interface WarehouseDataAnalysisMapper extends BaseMapper<WarehouseDataAnalysis> {
18
+    Page<WarehouseDataAnalysis> getPageList(Page<WarehouseDataAnalysis> objectPage, @Param("map") Map<String, Object> map);
19
+
20
+    List<WarehouseDataAnalysisChart> getChartList(@Param("orgId") Integer orgId);
21
+}

+ 35 - 0
src/main/java/com/chinaitop/depot/intelligent/basicData/param/WarehouseDataAnalysis.java

@@ -0,0 +1,35 @@
1
+package com.chinaitop.depot.intelligent.basicData.param;
2
+
3
+import io.swagger.annotations.ApiModelProperty;
4
+import lombok.Data;
5
+
6
+import java.io.Serializable;
7
+import java.util.Date;
8
+
9
+/**
10
+ * @author qingsong.han
11
+ * @description:
12
+ * @create 2024-07-16 15:54
13
+ */
14
+@Data
15
+public class WarehouseDataAnalysis implements Serializable {
16
+    private static final long serialVersionUID = 4911550786144931845L;
17
+
18
+    @ApiModelProperty(value = "主键id")
19
+    private String id;
20
+
21
+    @ApiModelProperty(value = "库区id")
22
+    private String orgId;
23
+
24
+    @ApiModelProperty(value = "库区名称")
25
+    private String orgName;
26
+
27
+    @ApiModelProperty(value = "违规类型")
28
+    private String warnType;
29
+
30
+    @ApiModelProperty(value = "违规行为")
31
+    private String warnAct;
32
+
33
+    @ApiModelProperty(value = "预警时间")
34
+    private Date warnTime;
35
+}

+ 37 - 0
src/main/java/com/chinaitop/depot/intelligent/basicData/param/WarehouseDataAnalysisChart.java

@@ -0,0 +1,37 @@
1
+package com.chinaitop.depot.intelligent.basicData.param;
2
+
3
+import io.swagger.annotations.ApiModelProperty;
4
+import lombok.Data;
5
+
6
+import java.io.Serializable;
7
+
8
+/**
9
+ * @author qingsong.han
10
+ * @description:
11
+ * @create 2024-07-16 15:56
12
+ */
13
+@Data
14
+public class WarehouseDataAnalysisChart implements Serializable {
15
+    private static final long serialVersionUID = 8206246671256299046L;
16
+
17
+    @ApiModelProperty(value = "1-12月份")
18
+    private String months;
19
+
20
+    @ApiModelProperty(value = "在库时间异常-月份")
21
+    private String currentYearMonth_1;
22
+
23
+    @ApiModelProperty(value = "在库时间异常-异常数/月(1-12)")
24
+    private String monthCount_1;
25
+
26
+    @ApiModelProperty(value = "临近轮换期-月份")
27
+    private String currentYearMonth_2;
28
+
29
+    @ApiModelProperty(value = "临近轮换期-异常数/月(1-12)")
30
+    private String monthCount_2;
31
+
32
+    @ApiModelProperty(value = "超架空期-月份")
33
+    private String currentYearMonth_3;
34
+
35
+    @ApiModelProperty(value = "超架空期-异常数/月(1-12)")
36
+    private String monthCount_3;
37
+}

+ 26 - 0
src/main/java/com/chinaitop/depot/intelligent/basicData/param/WarehouseDataAnalysisPageParam.java

@@ -0,0 +1,26 @@
1
+package com.chinaitop.depot.intelligent.basicData.param;
2
+
3
+import com.chinaitop.depot.intelligent.common.PageParam;
4
+import io.swagger.annotations.ApiModelProperty;
5
+import lombok.Getter;
6
+import lombok.Setter;
7
+
8
+import javax.validation.constraints.NotNull;
9
+
10
+/**
11
+ * @author qingsong.han
12
+ * @description:
13
+ * @create 2024-07-16 15:42
14
+ */
15
+@Getter
16
+@Setter
17
+public class WarehouseDataAnalysisPageParam extends PageParam {
18
+    private static final long serialVersionUID = 4244633669674123132L;
19
+
20
+    @ApiModelProperty(value = "库区编码", required = true)
21
+    @NotNull(message = "库区编码不能为空")
22
+    private Integer orgId;
23
+
24
+    @ApiModelProperty(value = "预警类型")
25
+    private String warnType;
26
+}

+ 20 - 0
src/main/java/com/chinaitop/depot/intelligent/basicData/service/WarehouseDataAnalysisService.java

@@ -0,0 +1,20 @@
1
+package com.chinaitop.depot.intelligent.basicData.service;
2
+
3
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
4
+import com.baomidou.mybatisplus.extension.service.IService;
5
+import com.chinaitop.depot.intelligent.basicData.param.WarehouseDataAnalysis;
6
+import com.chinaitop.depot.intelligent.basicData.param.WarehouseDataAnalysisChart;
7
+import com.chinaitop.depot.intelligent.basicData.param.WarehouseDataAnalysisPageParam;
8
+
9
+import java.util.List;
10
+
11
+/**
12
+ * @author qingsong.han
13
+ * @description:
14
+ * @create 2024-07-16 15:49
15
+ */
16
+public interface WarehouseDataAnalysisService extends IService<WarehouseDataAnalysis> {
17
+    Page<WarehouseDataAnalysis> getPageList(WarehouseDataAnalysisPageParam param);
18
+
19
+    List<WarehouseDataAnalysisChart> getChartList(Integer orgId);
20
+}

+ 42 - 0
src/main/java/com/chinaitop/depot/intelligent/basicData/service/impl/WarehouseDataAnalysisServiceImpl.java

@@ -0,0 +1,42 @@
1
+package com.chinaitop.depot.intelligent.basicData.service.impl;
2
+
3
+import com.baomidou.mybatisplus.core.toolkit.StringUtils;
4
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
5
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
6
+import com.chinaitop.depot.intelligent.basicData.mapper.WarehouseDataAnalysisMapper;
7
+import com.chinaitop.depot.intelligent.basicData.param.WarehouseDataAnalysis;
8
+import com.chinaitop.depot.intelligent.basicData.param.WarehouseDataAnalysisChart;
9
+import com.chinaitop.depot.intelligent.basicData.param.WarehouseDataAnalysisPageParam;
10
+import com.chinaitop.depot.intelligent.basicData.service.WarehouseDataAnalysisService;
11
+import org.springframework.stereotype.Service;
12
+
13
+import javax.annotation.Resource;
14
+import java.util.HashMap;
15
+import java.util.List;
16
+import java.util.Map;
17
+
18
+/**
19
+ * @author qingsong.han
20
+ * @description:
21
+ * @create 2024-07-16 15:50
22
+ */
23
+@Service
24
+public class WarehouseDataAnalysisServiceImpl extends ServiceImpl<WarehouseDataAnalysisMapper, WarehouseDataAnalysis> implements WarehouseDataAnalysisService {
25
+    @Resource
26
+    private WarehouseDataAnalysisMapper warehouseDataAnalysisMapper;
27
+
28
+    @Override
29
+    public Page<WarehouseDataAnalysis> getPageList(WarehouseDataAnalysisPageParam param) {
30
+        Map<String, Object> map = new HashMap<>();
31
+        map.put("orgId", param.getOrgId());
32
+        if (StringUtils.isNotBlank(param.getWarnType())) {
33
+            map.put("warnType", param.getWarnType());
34
+        }
35
+        return warehouseDataAnalysisMapper.getPageList(new Page<>(param.getCurrent(), param.getSize()), map);
36
+    }
37
+
38
+    @Override
39
+    public List<WarehouseDataAnalysisChart> getChartList(Integer orgId) {
40
+        return warehouseDataAnalysisMapper.getChartList(orgId);
41
+    }
42
+}

+ 88 - 0
src/main/resources/mapper/basicData/WarehouseDataAnalysisMapper.xml

@@ -0,0 +1,88 @@
1
+<?xml version="1.0" encoding="UTF-8"?>
2
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
3
+<mapper namespace="com.chinaitop.depot.intelligent.basicData.mapper.WarehouseDataAnalysisMapper">
4
+    <select id="getPageList" parameterType="map" resultType="com.chinaitop.depot.intelligent.basicData.param.WarehouseDataAnalysis">
5
+        SELECT
6
+            t1.id,
7
+            t1.orgId,
8
+            t1.orgName,
9
+            t1.warnType,
10
+            t1.warnAct,
11
+            t1.warnTime
12
+        FROM
13
+        (
14
+        SELECT
15
+            pv.id,
16
+            pv.org_id orgId,
17
+            oi.org_name orgName,
18
+            CASE WHEN pv.violation_type = 1 THEN '疑转圈粮预警' ELSE '' END AS warnType,
19
+            pv.subject_type warnAct,
20
+            pv.publish_time warnTime
21
+        FROM
22
+            storage_pre_violation pv
23
+        LEFT JOIN org_info oi ON pv.org_id = oi.org_id
24
+        WHERE
25
+            pv.violation_type = 1
26
+        AND pv.org_id = #{map.orgId}
27
+        UNION ALL
28
+        SELECT
29
+            rw.id,
30
+            rw.org_id orgId,
31
+            oi.org_name orgName,
32
+            CASE WHEN rw.bjlx=0 THEN '轮换预警' ELSE '应轮未轮' END AS warnType,
33
+            CASE WHEN rw.bjlx=0 THEN '轮换预警' ELSE '应轮未轮' END AS warnAct,
34
+            rw.scsj warnTime
35
+        FROM
36
+            storage_rotation_warning rw
37
+        LEFT JOIN org_info oi ON rw.org_id = oi.org_id
38
+        WHERE rw.org_id = #{map.orgId}
39
+        UNION ALL
40
+        SELECT
41
+            jw.id,
42
+            jw.org_id orgId,
43
+            oi.org_name orgName,
44
+            '架空期预警' AS warnType,
45
+            '架空期预警' AS warnAct,
46
+            jw.yjrq warnTime
47
+        FROM
48
+        storage_jkq_warning jw
49
+        LEFT JOIN org_info oi ON jw.org_id = oi.org_id
50
+        WHERE
51
+            jw.jkqzt = 1
52
+        AND jw.org_id = #{map.orgId}
53
+        ) t1
54
+        <where>
55
+            <if test="map.warnType!=null and map.warnType!=''">
56
+                t1.warnType LIKE CONCAT("%",#{map.warnType},"%")
57
+            </if>
58
+        </where>
59
+    </select>
60
+    <select id="getChartList" parameterType="integer" resultType="com.chinaitop.depot.intelligent.basicData.param.WarehouseDataAnalysisChart">
61
+        SELECT
62
+            t1.months,
63
+            t2.currentYearMonth_1,
64
+            t2.monthCount_1,
65
+            t2.currentYearMonth_2,
66
+            t2.monthCount_2,
67
+            t2.currentYearMonth_3,
68
+            t2.monthCount_3
69
+        FROM
70
+        (SELECT 1 AS months UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9 UNION SELECT 10 UNION SELECT 11 UNION SELECT 12) AS t1
71
+        LEFT JOIN
72
+        (
73
+        SELECT
74
+            MONTH (sa.alarm_date) currentYearMonth_1,
75
+            COUNT(sa.id) monthCount_1,
76
+            MONTH (rw.scsj) currentYearMonth_2,
77
+            COUNT(rw.id) monthCount_2,
78
+            MONTH (jw.jkqjzr) currentYearMonth_3,
79
+            COUNT(jw.id) monthCount_3
80
+        FROM
81
+            province_all.biz_pss_storage_anomaly sa
82
+        INNER JOIN storage_rotation_warning rw ON sa.org_id = rw.org_id
83
+        INNER JOIN storage_jkq_warning jw ON sa.org_id = jw.org_id
84
+        WHERE
85
+            sa.org_id = #{orgId}
86
+        ) t2 ON t1.months = t2.currentYearMonth_1
87
+    </select>
88
+</mapper>