package com.java110.report.cmd.room; import com.alibaba.fastjson.JSONObject; import com.java110.core.annotation.Java110Cmd; import com.java110.core.context.ICmdDataFlowContext; import com.java110.core.event.cmd.Cmd; import com.java110.core.event.cmd.CmdEvent; import com.java110.dto.room.RoomDto; import com.java110.intf.report.IReportCommunityInnerServiceSMO; import com.java110.utils.exception.CmdException; import com.java110.utils.util.Assert; import com.java110.utils.util.BeanConvertUtil; import com.java110.vo.api.ApiRoomDataVo; import com.java110.vo.api.ApiRoomVo; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import java.util.List; @Java110Cmd(serviceCode = "room.queryRoomsTree") public class QueryRoomsTreeCmd extends Cmd { @Autowired private IReportCommunityInnerServiceSMO reportCommunityInnerServiceSMOImpl; @Override public void validate(CmdEvent event, ICmdDataFlowContext cmdDataFlowContext, JSONObject reqJson) { Assert.jsonObjectHaveKey(reqJson, "communityId", "请求中未包含communityId信息"); Assert.jsonObjectHaveKey(reqJson, "unitId", "请求中未包含单元信息"); Assert.jsonObjectHaveKey(reqJson, "page", "请求报文中未包含page节点"); Assert.jsonObjectHaveKey(reqJson, "row", "请求报文中未包含row节点"); Assert.isInteger(reqJson.getString("page"), "page不是数字"); Assert.isInteger(reqJson.getString("row"), "row不是数字"); Assert.hasLength(reqJson.getString("communityId"), "小区ID不能为空"); } @Override public void doCmd(CmdEvent event, ICmdDataFlowContext cmdDataFlowContext, JSONObject reqJson) throws CmdException { RoomDto roomDto = BeanConvertUtil.covertBean(reqJson, RoomDto.class); ApiRoomVo apiRoomVo = new ApiRoomVo(); List roomDtoList = null; roomDtoList = reportCommunityInnerServiceSMOImpl.queryRoomsTree(roomDto); apiRoomVo.setTotal(0); if (roomDtoList != null && roomDtoList.size() > 0) { apiRoomVo.setTotal(roomDtoList.size()); } apiRoomVo.setRooms(BeanConvertUtil.covertBeanList(roomDtoList, ApiRoomDataVo.class)); int row = reqJson.getInteger("row"); apiRoomVo.setRecords((int) Math.ceil((double) apiRoomVo.getTotal() / (double) row)); ResponseEntity responseEntity = new ResponseEntity(JSONObject.toJSONString(apiRoomVo), HttpStatus.OK); cmdDataFlowContext.setResponseEntity(responseEntity); } }