chengf
2026-03-11 b88a288f4f787b509463678e3cd9ccfa3f37014b
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
package com.java110.report.cmd.admin;
 
import com.alibaba.fastjson.JSONObject;
import com.java110.core.annotation.Java110Cmd;
import com.java110.core.context.CmdContextUtils;
import com.java110.core.context.ICmdDataFlowContext;
import com.java110.core.event.cmd.Cmd;
import com.java110.core.event.cmd.CmdEvent;
import com.java110.dto.store.StoreDto;
import com.java110.intf.report.IBaseDataStatisticsInnerServiceSMO;
import com.java110.intf.store.IStoreInnerServiceSMO;
import com.java110.utils.exception.CmdException;
import com.java110.utils.util.Assert;
import com.java110.utils.util.DateUtil;
import com.java110.utils.util.StringUtil;
import com.java110.vo.ResultVo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
 
import java.text.ParseException;
import java.util.*;
 
/**
 * 查询小区运营数据
 */
@Java110Cmd(serviceCode = "admin.getCommunityOperationalAnalysis")
public class GetCommunityOperationalAnalysisCmd extends Cmd {
 
    @Autowired
    private IStoreInnerServiceSMO storeInnerServiceSMOImpl;
 
    @Autowired
    private IBaseDataStatisticsInnerServiceSMO baseDataStatisticsInnerServiceSMOImpl;
 
    @Override
    public void validate(CmdEvent event, ICmdDataFlowContext context, JSONObject reqJson) throws CmdException, ParseException {
 
        Assert.hasKeyAndValue(reqJson, "communityId", "未包含小区信息");
 
        String storeId = CmdContextUtils.getStoreId(context);
 
        StoreDto storeDto = new StoreDto();
        storeDto.setStoreId(storeId);
        storeDto.setStoreTypeCd(StoreDto.STORE_TYPE_ADMIN);
        int count = storeInnerServiceSMOImpl.getStoreCount(storeDto);
        if (count < 1) {
            throw new CmdException("非法操作,请用系统管理员账户操作");
        }
    }
 
    @Override
    public void doCmd(CmdEvent event, ICmdDataFlowContext context, JSONObject reqJson) throws CmdException, ParseException {
        String startTime = reqJson.getString("startTime");
        String endTime = reqJson.getString("endTime");
        String storeId = CmdContextUtils.getStoreId(context);
        if (StringUtil.isEmpty(startTime)) {
            Calendar calendar = Calendar.getInstance();
            calendar.add(Calendar.DAY_OF_MONTH, -7);
            startTime = DateUtil.getFormatTimeString(calendar.getTime(), DateUtil.DATE_FORMATE_STRING_B);
        }
        if (StringUtil.isEmpty(endTime)) {
            endTime = DateUtil.getAddDayStringB(new Date(), 1);
        }
 
        reqJson.put("startTime", startTime);
        reqJson.put("endTime", endTime);
 
        //todo 查询小区七天内缴费订单数
        JSONObject data = new JSONObject();
 
        //todo 查询小区缴费订单数
        List<Map> feeDetailData = baseDataStatisticsInnerServiceSMOImpl.getCommunityFeeDetailCountAnalysis(reqJson);
        feeDetailData = fillDate(feeDetailData, startTime, endTime);
        data.put("feeDetailData", feeDetailData);
 
        //todo 查询小区报修单订单数
        List<Map> repairData = baseDataStatisticsInnerServiceSMOImpl.getCommunityRepairCountAnalysis(reqJson);
        repairData = fillDate(repairData, startTime, endTime);
        data.put("repairData", repairData);
 
        //todo 查询巡检数据数
        List<Map> inspectionData = baseDataStatisticsInnerServiceSMOImpl.getCommunityInspectionAnalysis(reqJson);
        inspectionData = fillDate(inspectionData, startTime, endTime);
        data.put("inspectionData", inspectionData);
 
        //todo 查询保养数据数
        List<Map> maintainanceData = baseDataStatisticsInnerServiceSMOImpl.getCommunityMaintainanceAnalysis(reqJson);
        maintainanceData = fillDate(maintainanceData, startTime, endTime);
        data.put("maintainanceData", maintainanceData);
 
        //todo 查询采购订单数
        List<Map> itemInData = baseDataStatisticsInnerServiceSMOImpl.getCommunityItemInAnalysis(reqJson);
        itemInData = fillDate(itemInData, startTime, endTime);
        data.put("itemInData", itemInData);
 
        //todo 查询领用订单数
        List<Map> itemOutData = baseDataStatisticsInnerServiceSMOImpl.getCommunityItemOutAnalysis(reqJson);
        itemOutData = fillDate(itemOutData, startTime, endTime);
        data.put("itemOutData", itemOutData);
 
        //todo 查询车辆进场数
        List<Map> carInData = baseDataStatisticsInnerServiceSMOImpl.getCommunityCarInAnalysis(reqJson);
        carInData = fillDate(carInData, startTime, endTime);
        data.put("carInData", carInData);
 
        //todo 查询人员进场数
        List<Map> personInData = baseDataStatisticsInnerServiceSMOImpl.getCommunityPersonInAnalysis(reqJson);
        personInData = fillDate(personInData, startTime, endTime);
        data.put("personInData", personInData);
 
        //todo 查询起草合同数
        reqJson.put("storeId",storeId);
        List<Map> contractData = baseDataStatisticsInnerServiceSMOImpl.getCommunityContractAnalysis(reqJson);
        contractData = fillDate(contractData, startTime, endTime);
        data.put("contractData", contractData);
        context.setResponseEntity(ResultVo.createResponseEntity(data));
 
    }
 
    private List<Map> fillDate(List<Map> datas, String startTime, String endTime) {
        Date sTime = DateUtil.getDateFromStringB(startTime);
        Date eTime = DateUtil.getDateFromStringB(endTime);
        List<Map> tempDatas = new ArrayList<>();
        while (sTime.getTime() <= eTime.getTime()) {
 
            Map data = hasInDatas(sTime, datas);
            if (data == null) {
                data = new HashMap();
                data.put("createTime", DateUtil.getFormatTimeStringB(sTime));
                data.put("countValue", "0");
            }
 
            tempDatas.add(data);
 
            Calendar calendar = Calendar.getInstance();
            calendar.setTime(sTime);
            calendar.add(Calendar.DAY_OF_MONTH, 1);
            sTime = calendar.getTime();
        }
 
        return tempDatas;
    }
 
    private Map hasInDatas(Date sTime, List<Map> datas) {
 
        String curTime = DateUtil.getFormatTimeStringB(sTime);
        for (Map data : datas) {
            if (curTime.equals(data.get("createTime"))) {
                return data;
            }
        }
 
        return null;
    }
}