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 feeDetailData = baseDataStatisticsInnerServiceSMOImpl.getCommunityFeeDetailCountAnalysis(reqJson); feeDetailData = fillDate(feeDetailData, startTime, endTime); data.put("feeDetailData", feeDetailData); //todo 查询小区报修单订单数 List repairData = baseDataStatisticsInnerServiceSMOImpl.getCommunityRepairCountAnalysis(reqJson); repairData = fillDate(repairData, startTime, endTime); data.put("repairData", repairData); //todo 查询巡检数据数 List inspectionData = baseDataStatisticsInnerServiceSMOImpl.getCommunityInspectionAnalysis(reqJson); inspectionData = fillDate(inspectionData, startTime, endTime); data.put("inspectionData", inspectionData); //todo 查询保养数据数 List maintainanceData = baseDataStatisticsInnerServiceSMOImpl.getCommunityMaintainanceAnalysis(reqJson); maintainanceData = fillDate(maintainanceData, startTime, endTime); data.put("maintainanceData", maintainanceData); //todo 查询采购订单数 List itemInData = baseDataStatisticsInnerServiceSMOImpl.getCommunityItemInAnalysis(reqJson); itemInData = fillDate(itemInData, startTime, endTime); data.put("itemInData", itemInData); //todo 查询领用订单数 List itemOutData = baseDataStatisticsInnerServiceSMOImpl.getCommunityItemOutAnalysis(reqJson); itemOutData = fillDate(itemOutData, startTime, endTime); data.put("itemOutData", itemOutData); //todo 查询车辆进场数 List carInData = baseDataStatisticsInnerServiceSMOImpl.getCommunityCarInAnalysis(reqJson); carInData = fillDate(carInData, startTime, endTime); data.put("carInData", carInData); //todo 查询人员进场数 List personInData = baseDataStatisticsInnerServiceSMOImpl.getCommunityPersonInAnalysis(reqJson); personInData = fillDate(personInData, startTime, endTime); data.put("personInData", personInData); //todo 查询起草合同数 reqJson.put("storeId",storeId); List contractData = baseDataStatisticsInnerServiceSMOImpl.getCommunityContractAnalysis(reqJson); contractData = fillDate(contractData, startTime, endTime); data.put("contractData", contractData); context.setResponseEntity(ResultVo.createResponseEntity(data)); } private List fillDate(List datas, String startTime, String endTime) { Date sTime = DateUtil.getDateFromStringB(startTime); Date eTime = DateUtil.getDateFromStringB(endTime); List 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 datas) { String curTime = DateUtil.getFormatTimeStringB(sTime); for (Map data : datas) { if (curTime.equals(data.get("createTime"))) { return data; } } return null; } }