Explorar o código

根据企业查询以往十二个月的新增用户数

Memory_LG hai 10 meses
pai
achega
4e46014010

+ 5 - 0
pom.xml

@@ -93,6 +93,11 @@
             <version>3.4.0</version>
             <version>3.4.0</version>
             <scope>compile</scope>
             <scope>compile</scope>
         </dependency>
         </dependency>
+        <dependency>
+            <groupId>cn.hutool</groupId>
+            <artifactId>hutool-all</artifactId>
+            <version>5.8.24</version>
+        </dependency>
 
 
     </dependencies>
     </dependencies>
 
 

+ 5 - 0
src/main/java/com/sooka/sponest/data/housingconstruction/controller/CenterdataTHousingconstructionViewController.java

@@ -221,4 +221,9 @@ public class CenterdataTHousingconstructionViewController extends BaseController
         return R.ok(housingconstructionViewService.getItems(safetyinspectionrecordsdetail));
         return R.ok(housingconstructionViewService.getItems(safetyinspectionrecordsdetail));
     }
     }
 
 
+    @GetMapping("/getNewUserSumByEnterpriseId")
+    public AjaxResult getNewUserSumByEnterpriseId(CenterdataTHousingconstructionSteelcylinder steelcylinder){
+        return AjaxResult.success(housingconstructionViewService.getNewUserSumByEnterpriseId(steelcylinder));
+    }
+
 }
 }

+ 1 - 0
src/main/java/com/sooka/sponest/data/housingconstruction/mapper/CenterdataTHousingconstructionViewMapper.java

@@ -50,4 +50,5 @@ public interface CenterdataTHousingconstructionViewMapper {
 
 
     public List<Map<String,Object>> getItems(CenterdataTHousingconstructionSafetyinspectionrecordsdetail safetyinspectionrecordsdetail);
     public List<Map<String,Object>> getItems(CenterdataTHousingconstructionSafetyinspectionrecordsdetail safetyinspectionrecordsdetail);
 
 
+    List<Map<String, Object>> getNewUserSumByEnterpriseId(CenterdataTHousingconstructionSteelcylinder steelcylinder);
 }
 }

+ 1 - 0
src/main/java/com/sooka/sponest/data/housingconstruction/service/ICenterdataTHousingconstructionViewService.java

@@ -50,4 +50,5 @@ public interface ICenterdataTHousingconstructionViewService {
 
 
     public List<Map<String,Object>> getItems(CenterdataTHousingconstructionSafetyinspectionrecordsdetail safetyinspectionrecordsdetail);
     public List<Map<String,Object>> getItems(CenterdataTHousingconstructionSafetyinspectionrecordsdetail safetyinspectionrecordsdetail);
 
 
+    List<Map<String, Object>> getNewUserSumByEnterpriseId(CenterdataTHousingconstructionSteelcylinder steelcylinder);
 }
 }

+ 47 - 0
src/main/java/com/sooka/sponest/data/housingconstruction/service/impl/CenterdataTHousingconstructionViewServiceImpl.java

@@ -10,10 +10,13 @@ import com.sooka.sponest.data.housingconstruction.mapper.CenterdataTHousingconst
 import com.sooka.sponest.data.housingconstruction.mapper.CenterdataTHousingconstructionRealnameuserMapper;
 import com.sooka.sponest.data.housingconstruction.mapper.CenterdataTHousingconstructionRealnameuserMapper;
 import com.sooka.sponest.data.housingconstruction.mapper.CenterdataTHousingconstructionViewMapper;
 import com.sooka.sponest.data.housingconstruction.mapper.CenterdataTHousingconstructionViewMapper;
 import com.sooka.sponest.data.housingconstruction.service.ICenterdataTHousingconstructionViewService;
 import com.sooka.sponest.data.housingconstruction.service.ICenterdataTHousingconstructionViewService;
+import org.apache.commons.collections4.MapUtils;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;
 
 
+import java.time.LocalDate;
+import java.time.format.DateTimeFormatter;
 import java.util.*;
 import java.util.*;
 import java.util.stream.Collectors;
 import java.util.stream.Collectors;
 
 
@@ -340,4 +343,48 @@ public class CenterdataTHousingconstructionViewServiceImpl extends BaseServiceIm
         }
         }
         return list;
         return list;
     }
     }
+
+    @Override
+    @DataScopeMutiDept(deptAlias = "d")
+    public List<Map<String, Object>> getNewUserSumByEnterpriseId(CenterdataTHousingconstructionSteelcylinder steelcylinder) {
+        setSookaDataBase(steelcylinder);
+        List<Map<String, Object>> getData = centerdataTHousingconstructionViewMapper.getNewUserSumByEnterpriseId(steelcylinder);
+        Map<String, Map<String, Object>> data = new HashMap<>();
+        for (Map<String, Object> resultDatum : getData) {
+            data.put(MapUtils.getString(resultDatum,"month"), resultDatum);
+        }
+        List<String> twelveMonths = getTwelveMonths();
+
+        List<Map<String, Object>> resultData = new ArrayList<>();
+        twelveMonths.forEach(month->{
+            if(!data.containsKey(month)){
+                HashMap<String, Object> newMonth = new HashMap<>();
+                newMonth.put("sum",0);
+                newMonth.put("month",month);
+                resultData.add(newMonth);
+            }else{
+                resultData.add(data.get(month));
+            }
+        });
+        return resultData;
+    }
+
+    private List<String> getTwelveMonths(){
+        // 获取当前日期
+        LocalDate currentDate = LocalDate.now();
+
+        // 存储过去12个月的月份
+        List<String> lastTwelveMonths = new ArrayList<>();
+
+        // 设置日期格式
+        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM");
+
+        for (int i = 0; i < 12; i++) {
+            // 计算月份
+            LocalDate date = currentDate.minusMonths(i);
+            // 格式化并添加到列表
+            lastTwelveMonths.add(date.format(formatter));
+        }
+        return lastTwelveMonths;
+    }
 }
 }

+ 17 - 0
src/main/resources/mapper/housingconstruction/CenterdataTHousingconstructionViewMapper.xml

@@ -436,4 +436,21 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         GROUP BY a.id
         GROUP BY a.id
         ORDER BY b.inspection_sort
         ORDER BY b.inspection_sort
     </select>
     </select>
+
+    <select id="getNewUserSumByEnterpriseId" parameterType="CenterdataTHousingconstructionSteelcylinder" resultType="map">
+        SELECT
+            COUNT(1) AS sum,
+            DATE_FORMAT(r.account_open_time, '%Y-%m') AS month
+        FROM centerdata_t_housingconstruction_realnameuser r
+        LEFT JOIN centerdata_t_housingconstruction_enterprise e ON r.enterprise_id = e.id
+        left join ${database_system}.sys_dept d on r.dept_id = d.dept_id
+        <where>
+            <if test="enterpriseId != null and enterpriseId != ''">
+                and e.id = #{enterpriseId}
+            </if>
+            AND r.account_open_time >= DATE_SUB(CURDATE(), INTERVAL 12 MONTH)
+            ${params.dataScope}
+        </where>
+        GROUP BY e.enterprise_name, DATE_FORMAT(r.account_open_time, '%Y-%m');
+    </select>
 </mapper>
 </mapper>