UpdateRoomCmd.java 8.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187
  1. package com.java110.community.cmd.room;
  2. import com.alibaba.fastjson.JSONArray;
  3. import com.alibaba.fastjson.JSONObject;
  4. import com.java110.core.annotation.Java110Cmd;
  5. import com.java110.core.annotation.Java110Transactional;
  6. import com.java110.core.context.ICmdDataFlowContext;
  7. import com.java110.core.event.cmd.Cmd;
  8. import com.java110.core.event.cmd.CmdEvent;
  9. import com.java110.core.factory.GenerateCodeFactory;
  10. import com.java110.dto.UnitDto;
  11. import com.java110.dto.owner.OwnerRoomRelDto;
  12. import com.java110.intf.community.*;
  13. import com.java110.intf.user.IOwnerRoomRelInnerServiceSMO;
  14. import com.java110.po.owner.OwnerRoomRelPo;
  15. import com.java110.po.room.RoomAttrPo;
  16. import com.java110.po.room.RoomPo;
  17. import com.java110.utils.exception.CmdException;
  18. import com.java110.utils.util.Assert;
  19. import com.java110.utils.util.BeanConvertUtil;
  20. import com.java110.utils.util.DateUtil;
  21. import com.java110.utils.util.StringUtil;
  22. import org.springframework.beans.factory.annotation.Autowired;
  23. import java.util.Date;
  24. import java.util.List;
  25. @Java110Cmd(serviceCode = "room.updateRoom")
  26. public class UpdateRoomCmd extends Cmd {
  27. @Autowired
  28. private IUnitV1InnerServiceSMO unitV1InnerServiceSMOImpl;
  29. @Autowired
  30. private IUnitInnerServiceSMO unitInnerServiceSMOImpl;
  31. @Autowired
  32. private IFloorV1InnerServiceSMO floorV1InnerServiceSMOImpl;
  33. @Autowired
  34. private IRoomV1InnerServiceSMO roomV1InnerServiceSMOImpl;
  35. @Autowired
  36. private IRoomAttrV1InnerServiceSMO roomAttrV1InnerServiceSMOImpl;
  37. @Autowired
  38. private IOwnerRoomRelInnerServiceSMO ownerRoomRelInnerServiceSMOImpl;
  39. @Override
  40. public void validate(CmdEvent event, ICmdDataFlowContext cmdDataFlowContext, JSONObject reqJson) throws CmdException {
  41. Assert.jsonObjectHaveKey(reqJson, "roomId", "请求报文中未包含roomId节点");
  42. Assert.jsonObjectHaveKey(reqJson, "communityId", "请求报文中未包含communityId节点");
  43. Assert.jsonObjectHaveKey(reqJson, "roomNum", "请求报文中未包含roomNum节点");
  44. Assert.jsonObjectHaveKey(reqJson, "layer", "请求报文中未包含layer节点");
  45. /*Assert.jsonObjectHaveKey(paramIn, "section", "请求报文中未包含section节点");*/
  46. Assert.jsonObjectHaveKey(reqJson, "builtUpArea", "请求报文中未包含builtUpArea节点");
  47. if (reqJson.containsKey("builtUpArea")) {
  48. Assert.isMoney(reqJson.getString("builtUpArea"), "建筑面积数据格式错误");
  49. }
  50. if (reqJson.containsKey("feeCoefficient")) {
  51. Assert.isMoney(reqJson.getString("feeCoefficient"), "算费系数数据格式错误");
  52. }
  53. //获取房屋状态
  54. String state = reqJson.getString("state");
  55. if (!StringUtil.isEmpty(state) && state.equals("2006")) { //已出租
  56. //获取起租时间
  57. Date startTime = null;
  58. Date endTime = null;
  59. try {
  60. startTime = DateUtil.getDateFromString(reqJson.getString("startTime"), DateUtil.DATE_FORMATE_STRING_B);
  61. endTime = DateUtil.getDateFromString(reqJson.getString("endTime"), DateUtil.DATE_FORMATE_STRING_B);
  62. } catch (Exception e) {
  63. throw new CmdException(e.getMessage());
  64. }
  65. //获取截租时间
  66. if (startTime.getTime() > endTime.getTime()) {
  67. throw new IllegalArgumentException("起租时间不能大于截租时间!");
  68. }
  69. }
  70. UnitDto unitDto = new UnitDto();
  71. unitDto.setCommunityId(reqJson.getString("communityId"));
  72. unitDto.setUnitId(reqJson.getString("unitId"));
  73. //校验小区楼ID和小区是否有对应关系
  74. List<UnitDto> units = unitInnerServiceSMOImpl.queryUnitsByCommunityId(unitDto);
  75. if (units == null || units.size() < 1) {
  76. throw new IllegalArgumentException("传入单元ID不是该小区的单元");
  77. }
  78. Assert.judgeAttrValue(reqJson);
  79. }
  80. @Override
  81. @Java110Transactional
  82. public void doCmd(CmdEvent event, ICmdDataFlowContext cmdDataFlowContext, JSONObject reqJson) throws CmdException {
  83. updateShellRoom(reqJson, cmdDataFlowContext);
  84. String state = reqJson.getString("state");
  85. if (!StringUtil.isEmpty(state) && state.equals("2006")) { //已出租
  86. OwnerRoomRelDto ownerRoomRelDto = new OwnerRoomRelDto();
  87. ownerRoomRelDto.setRoomId(reqJson.getString("roomId"));
  88. List<OwnerRoomRelDto> ownerRoomRelDtoList = ownerRoomRelInnerServiceSMOImpl.queryOwnerRoomRels(ownerRoomRelDto);
  89. OwnerRoomRelPo ownerRoomRelPo = BeanConvertUtil.covertBean(ownerRoomRelDtoList.get(0), OwnerRoomRelPo.class);
  90. ownerRoomRelPo.setStartTime(reqJson.getString("startTime"));
  91. ownerRoomRelPo.setEndTime(reqJson.getString("endTime") + " 23:59:59");
  92. ownerRoomRelInnerServiceSMOImpl.updateOwnerRoomRels(ownerRoomRelPo);
  93. }
  94. if (!reqJson.containsKey("attrs")) {
  95. return;
  96. }
  97. JSONArray attrs = reqJson.getJSONArray("attrs");
  98. if (attrs.size() < 1) {
  99. return;
  100. }
  101. JSONObject attr = null;
  102. int flag = 0;
  103. for (int attrIndex = 0; attrIndex < attrs.size(); attrIndex++) {
  104. attr = attrs.getJSONObject(attrIndex);
  105. attr.put("roomId", reqJson.getString("roomId"));
  106. if (!attr.containsKey("attrId") || attr.getString("attrId").startsWith("-") || StringUtil.isEmpty(attr.getString("attrId"))) {
  107. RoomAttrPo roomAttrPo = new RoomAttrPo();
  108. roomAttrPo.setAttrId(GenerateCodeFactory.getAttrId());
  109. roomAttrPo.setRoomId(attr.getString("roomId"));
  110. roomAttrPo.setSpecCd(attr.getString("specCd"));
  111. roomAttrPo.setValue(attr.getString("value"));
  112. flag = roomAttrV1InnerServiceSMOImpl.saveRoomAttr(roomAttrPo);
  113. if (flag < 1) {
  114. throw new CmdException("保存单元失败");
  115. }
  116. continue;
  117. }
  118. RoomAttrPo roomAttrPo = new RoomAttrPo();
  119. roomAttrPo.setAttrId(attr.getString("attrId"));
  120. roomAttrPo.setRoomId(attr.getString("roomId"));
  121. roomAttrPo.setSpecCd(attr.getString("specCd"));
  122. roomAttrPo.setValue(attr.getString("value"));
  123. flag = roomAttrV1InnerServiceSMOImpl.updateRoomAttr(roomAttrPo);
  124. if (flag < 1) {
  125. throw new CmdException("保存单元失败");
  126. }
  127. }
  128. }
  129. /**
  130. * 添加小区楼信息
  131. *
  132. * @param paramInJson 接口调用放传入入参
  133. * @param cmdDataFlowContext 数据上下文
  134. * @return 订单服务能够接受的报文
  135. */
  136. public void updateShellRoom(JSONObject paramInJson, ICmdDataFlowContext cmdDataFlowContext) {
  137. JSONObject businessUnit = new JSONObject();
  138. businessUnit.putAll(paramInJson);
  139. RoomPo roomPo = BeanConvertUtil.covertBean(businessUnit, RoomPo.class);
  140. if (paramInJson.containsKey("apartment1") && paramInJson.getString("apartment1").equals("10")) {
  141. roomPo.setSection("1");
  142. } else if (paramInJson.containsKey("apartment1") && paramInJson.getString("apartment1").equals("20")) {
  143. roomPo.setSection("2");
  144. } else if (paramInJson.containsKey("apartment1") && paramInJson.getString("apartment1").equals("30")) {
  145. roomPo.setSection("3");
  146. } else if (paramInJson.containsKey("apartment1") && paramInJson.getString("apartment1").equals("40")) {
  147. roomPo.setSection("4");
  148. } else if (paramInJson.containsKey("apartment1") && paramInJson.getString("apartment1").equals("50")) {
  149. roomPo.setSection("5");
  150. } else if (paramInJson.containsKey("apartment1") && paramInJson.getString("apartment1").equals("60")) {
  151. roomPo.setSection("6");
  152. } else if (paramInJson.containsKey("apartment1") && paramInJson.getString("apartment1").equals("70")) {
  153. roomPo.setSection("7");
  154. } else if (paramInJson.containsKey("apartment1") && paramInJson.getString("apartment1").equals("80")) {
  155. roomPo.setSection("8");
  156. }
  157. int flag = roomV1InnerServiceSMOImpl.updateRoom(roomPo);
  158. if (flag < 1) {
  159. throw new CmdException("修改房屋失败");
  160. }
  161. }
  162. }