Procházet zdrojové kódy

1. 增加日期工具类,可以进行日期相关计算。
2. 增加待报废设备统计接口。

yucheng před 3 roky
rodič
revize
a2ecdfb048

+ 49 - 0
dmp-business/dmp-rwd/src/main/java/com/persagy/dmp/rwd/simple/controller/EquipmentReportController.java

@@ -0,0 +1,49 @@
+package com.persagy.dmp.rwd.simple.controller;
+
+import com.persagy.dmp.common.constant.CommonConstant;
+import com.persagy.dmp.common.model.response.CommonResult;
+import com.persagy.dmp.common.utils.ParamCheckUtil;
+import com.persagy.dmp.common.utils.ResultHelper;
+import com.persagy.dmp.rwd.digital.service.IObjectDigitalService;
+import com.persagy.dmp.rwd.simple.service.IEquipmentReportService;
+import lombok.extern.slf4j.Slf4j;
+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;
+
+/**
+ * 简洁API - 设备统计相关接口
+ * @author Charlie Yu
+ * @date 2021-09-02
+ */
+@Slf4j
+@RestController
+@RequestMapping("/api/report/equipment")
+public class EquipmentReportController {
+
+    @Autowired
+    private IObjectDigitalService digitalService;
+    @Autowired
+    private IEquipmentReportService reportService;
+
+    /**
+     * 统计项目设备总数和待报废设备数量
+     * 待报废设备 = ifnull(预计报废日期, '9999-12-31') < (当前日期+6个月)
+     * @param projectIds 为空查所有
+     * @return
+     */
+    @PostMapping("/queryExpectScrapCountByProjects")
+    public CommonResult<List<Map<String, Object>>> queryExpectScrapCountByProjects(
+            @RequestBody(required = false) List<String> projectIds) {
+        //基础参数校验
+        ParamCheckUtil.checkParam(CommonConstant.QUERY_GROUPCODE);
+        // 统计
+        List<Map<String, Object>> result = reportService.queryExpectScrapCountByProjects(projectIds);
+        return ResultHelper.multi(result);
+    }
+}

+ 20 - 0
dmp-business/dmp-rwd/src/main/java/com/persagy/dmp/rwd/simple/dao/EquipmentReportMapper.java

@@ -0,0 +1,20 @@
+package com.persagy.dmp.rwd.simple.dao;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 数字孪生 设备统计相关接口 DAO
+ * @author Charlie Yu
+ * @date 2021-08-04
+ */
+public interface EquipmentReportMapper {
+
+    /**
+     * 统计项目设备总数和待报废设备数量
+     * @param scrapDate 报废日期
+     * @param projectIds 项目ID
+     * @return
+     */
+    List<Map<String, Object>> queryExpectScrapCountByProjects(String scrapDate, List<String> projectIds);
+}

+ 20 - 0
dmp-business/dmp-rwd/src/main/java/com/persagy/dmp/rwd/simple/service/IEquipmentReportService.java

@@ -0,0 +1,20 @@
+package com.persagy.dmp.rwd.simple.service;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 数字孪生 设备统计相关接口
+ * @author Charlie Yu
+ * @date 2021-09-02
+ */
+public interface IEquipmentReportService {
+
+    /**
+     * 统计项目设备总数和待报废设备数量
+     * 待报废设备 = ifnull(预计报废日期, '9999-12-31') < (当前日期+6个月)
+     * @param projectIds
+     * @return
+     */
+    List<Map<String, Object>> queryExpectScrapCountByProjects(List<String> projectIds);
+}

+ 35 - 0
dmp-business/dmp-rwd/src/main/java/com/persagy/dmp/rwd/simple/service/impl/EquipmentReportServiceImpl.java

@@ -0,0 +1,35 @@
+package com.persagy.dmp.rwd.simple.service.impl;
+
+import com.persagy.dmp.common.utils.DateHelper;
+import com.persagy.dmp.rwd.simple.dao.EquipmentReportMapper;
+import com.persagy.dmp.rwd.simple.service.IEquipmentReportService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import javax.annotation.Resource;
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 数字孪生 设备统计相关接口实现类
+ * @author Charlie Yu
+ * @date 2021-09-02
+ */
+@Service
+@Slf4j
+@Transactional(rollbackFor = Exception.class)
+public class EquipmentReportServiceImpl implements IEquipmentReportService {
+
+    @Resource
+    private EquipmentReportMapper mapper;
+
+    @Override
+    public List<Map<String, Object>> queryExpectScrapCountByProjects(List<String> projectIds) {
+        Date date = DateHelper.addMonth(new Date(), 6);
+        // 日期格式,标准字典是yyyy-MM-dd,应该不会改。有改动再改为查字典获取格式
+        String scrapDate = DateHelper.DateToString(date, "yyyy-MM-dd");
+        return mapper.queryExpectScrapCountByProjects(scrapDate, projectIds);
+    }
+}

+ 20 - 0
dmp-business/dmp-rwd/src/main/resources/mapper/EquipmentReportMapper.xml

@@ -0,0 +1,20 @@
+<?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.persagy.dmp.rwd.simple.dao.EquipmentReportMapper">
+
+    <select id="queryExpectScrapCountByProjects" resultType="java.util.HashMap">
+        select pj.project_id as projectId, pj.name as projectName, count(*) as equipmentTotal,
+          sum(case when
+            ifnull(json_extract(eq.infos, '$.expectScrapDate'), '9999-12-31') &lt; ${scrapDate}
+            then 1 else 0 end) as expectScrapToal
+        from dt_object eq inner join dt_object pj on eq.project_id = pj.id
+          and eq.obj_type = 'equipment' and eq.valid = 1
+        <if test="projectIds != null and projectIds.size() &gt; 0" >
+            where pj.project_id in
+            <foreach collection="projectIds" item="projectId" open="(" close=")" separator="," >
+                #{projectId}
+            </foreach>
+        </if>
+        group by pj.project_id, pj.name
+	</select>
+</mapper>

+ 59 - 0
dmp-common/src/main/java/com/persagy/dmp/common/constant/DateStyle.java

@@ -0,0 +1,59 @@
+package com.persagy.dmp.common.constant;
+
+/**
+ * 日期格式
+ * @author Charlie Yu
+ * @date 2021-09-02
+ */
+public enum DateStyle {
+	/** 日期格式 */
+	YYYY("yyyy", false),
+	MM("MM", false),
+	YYYY_MM("yyyy-MM", false),
+	YYYYMM("yyyyMM", false),
+	YYYY_MM_DD("yyyy-MM-dd", false),
+	YYYY_MM_DD_HH_MM("yyyy-MM-dd HH:mm", false),
+	YYYY_MM_DD_HH_MM_SS("yyyy-MM-dd HH:mm:ss", false),
+	YYYYMMDDHHMMSS("yyyyMMddHHmmss", false),
+	YYYY_MM_EN("yyyy/MM", false),
+	YYYY_MM_DD_EN("yyyy/MM/dd", false),
+	YYYY_MM_DD_HH_MM_EN("yyyy/MM/dd HH:mm", false),
+	YYYY_MM_DD_HH_MM_SS_EN("yyyy/MM/dd HH:mm:ss", false),
+	
+	YYYY_MM_CN("yyyy年MM月", false),
+	YYYY_MM_DD_CN("yyyy年MM月dd日", false),
+	YYYY_MM_DD_HH_MM_CN("yyyy年MM月dd日 HH:mm", false),
+	YYYY_MM_DD_HH_MM_SS_CN("yyyy年MM月dd日 HH:mm:ss", false),
+	
+	HH_MM("HH:mm", true),
+	HH_MM_SS("HH:mm:ss", true),
+	
+	MM_DD("MM-dd", true),
+	MM_DD_HH_MM("MM-dd HH:mm", true),
+	MM_DD_HH_MM_SS("MM-dd HH:mm:ss", true),
+	
+	MM_DD_EN("MM/dd", true),
+	MM_DD_HH_MM_EN("MM/dd HH:mm", true),
+	MM_DD_HH_MM_SS_EN("MM/dd HH:mm:ss", true),
+	
+	MM_DD_CN("MM月dd日", true),
+	MM_DD_HH_MM_CN("MM月dd日 HH:mm", true),
+	MM_DD_HH_MM_SS_CN("MM月dd日 HH:mm:ss", true);
+	
+	private String value;
+	
+	private boolean isShowOnly;
+	
+	DateStyle(String value, boolean isShowOnly) {
+		this.value = value;
+		this.isShowOnly = isShowOnly;
+	}
+	
+	public String getValue() {
+		return value;
+	}
+	
+	public boolean isShowOnly() {
+		return isShowOnly;
+	}
+}

Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 1026 - 0
dmp-common/src/main/java/com/persagy/dmp/common/utils/DateHelper.java