Преглед изворни кода

优化房屋扩展字段功能

java110 пре 5 година
родитељ
комит
33dd982626

+ 17 - 10
java110-bean/src/main/java/com/java110/dto/RoomAttrDto.java

@@ -15,9 +15,9 @@ import java.util.Date;
 public class RoomAttrDto extends PageDto implements Serializable {
 
     private String attrId;
-private String specCd;
-private String value;
-private String roomId;
+    private String specCd;
+    private String value;
+    private String roomId;
 
 
     private Date createTime;
@@ -28,25 +28,32 @@ private String roomId;
     public String getAttrId() {
         return attrId;
     }
-public void setAttrId(String attrId) {
+
+    public void setAttrId(String attrId) {
         this.attrId = attrId;
     }
-public String getSpecCd() {
+
+    public String getSpecCd() {
         return specCd;
     }
-public void setSpecCd(String specCd) {
+
+    public void setSpecCd(String specCd) {
         this.specCd = specCd;
     }
-public String getValue() {
+
+    public String getValue() {
         return value;
     }
-public void setValue(String value) {
+
+    public void setValue(String value) {
         this.value = value;
     }
-public String getRoomId() {
+
+    public String getRoomId() {
         return roomId;
     }
-public void setRoomId(String roomId) {
+
+    public void setRoomId(String roomId) {
         this.roomId = roomId;
     }
 

+ 48 - 25
java110-bean/src/main/java/com/java110/dto/attrSpec/AttrSpecDto.java

@@ -1,6 +1,9 @@
 package com.java110.dto.attrSpec;
 
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
 import com.java110.dto.PageDto;
+
 import java.io.Serializable;
 import java.util.Date;
 
@@ -15,14 +18,14 @@ import java.util.Date;
 public class AttrSpecDto extends PageDto implements Serializable {
 
     private String specType;
-private String specName;
-private String specHoldplace;
-private String specValueType;
-private String specCd;
-private String specShow;
-private String required;
-private String tableName;
-private String listShow;
+    private String specName;
+    private String specHoldplace;
+    private String specValueType;
+    private String specCd;
+    private String specShow;
+    private String required;
+    private String tableName;
+    private String listShow;
 
 
     private Date createTime;
@@ -33,55 +36,72 @@ private String listShow;
     public String getSpecType() {
         return specType;
     }
-public void setSpecType(String specType) {
+
+    public void setSpecType(String specType) {
         this.specType = specType;
     }
-public String getSpecName() {
+
+    public String getSpecName() {
         return specName;
     }
-public void setSpecName(String specName) {
+
+    public void setSpecName(String specName) {
         this.specName = specName;
     }
-public String getSpecHoldplace() {
+
+    public String getSpecHoldplace() {
         return specHoldplace;
     }
-public void setSpecHoldplace(String specHoldplace) {
+
+    public void setSpecHoldplace(String specHoldplace) {
         this.specHoldplace = specHoldplace;
     }
-public String getSpecValueType() {
+
+    public String getSpecValueType() {
         return specValueType;
     }
-public void setSpecValueType(String specValueType) {
+
+    public void setSpecValueType(String specValueType) {
         this.specValueType = specValueType;
     }
-public String getSpecCd() {
+
+    public String getSpecCd() {
         return specCd;
     }
-public void setSpecCd(String specCd) {
+
+    public void setSpecCd(String specCd) {
         this.specCd = specCd;
     }
-public String getSpecShow() {
+
+    public String getSpecShow() {
         return specShow;
     }
-public void setSpecShow(String specShow) {
+
+    public void setSpecShow(String specShow) {
         this.specShow = specShow;
     }
-public String getRequired() {
+
+    public String getRequired() {
         return required;
     }
-public void setRequired(String required) {
+
+    public void setRequired(String required) {
         this.required = required;
     }
-public String getTableName() {
+
+    public String getTableName() {
         return tableName;
     }
-public void setTableName(String tableName) {
+
+    public void setTableName(String tableName) {
         this.tableName = tableName;
     }
-public String getListShow() {
+
+    public String getListShow() {
         return listShow;
     }
-public void setListShow(String listShow) {
+
+    public void setListShow(String listShow) {
         this.listShow = listShow;
     }
 
@@ -101,4 +121,7 @@ public void setListShow(String listShow) {
     public void setStatusCd(String statusCd) {
         this.statusCd = statusCd;
     }
+
+
+
 }

+ 13 - 0
java110-bean/src/main/java/com/java110/vo/api/ApiRoomDataVo.java

@@ -1,6 +1,9 @@
 package com.java110.vo.api;
 
+import com.java110.dto.RoomAttrDto;
+
 import java.io.Serializable;
+import java.util.List;
 
 /**
  * @ClassName ApiRoomVo
@@ -33,6 +36,8 @@ public class ApiRoomDataVo implements Serializable {
     private String idCard;
     private String link;
 
+    private List<RoomAttrDto> roomAttrDtos;
+
 
 
     public String getUnitPrice() {
@@ -187,4 +192,12 @@ public class ApiRoomDataVo implements Serializable {
     public void setLink(String link) {
         this.link = link;
     }
+
+    public List<RoomAttrDto> getRoomAttrDtos() {
+        return roomAttrDtos;
+    }
+
+    public void setRoomAttrDtos(List<RoomAttrDto> roomAttrDtos) {
+        this.roomAttrDtos = roomAttrDtos;
+    }
 }

+ 39 - 0
java110-utils/src/main/java/com/java110/utils/util/Assert.java

@@ -347,5 +347,44 @@ public class Assert extends org.springframework.util.Assert {
         }
     }
 
+    public static void judgeAttrValue(JSONObject paramObj){
+        if (!paramObj.containsKey("attrs")) {
+            return;
+        }
+
+        JSONArray attrs = paramObj.getJSONArray("attrs");
+        if (attrs.size() < 1) {
+            return;
+        }
+        JSONObject attr = null;
+        for (int attrIndex = 0; attrIndex < attrs.size(); attrIndex++) {
+            attr = attrs.getJSONObject(attrIndex);
+            if (!"Y".equals(attr.getString("required"))) {
+                continue;
+            }
+            Assert.hasKeyAndValue(attr, "value", attr.getString("specName") + "不能为空");
+
+            //整数
+            if ("2002".equals(attr.getString("specValueType"))) {
+                Assert.isInteger(attr.getString("value"), attr.getString("specName") + "不是整数");
+            }
+
+            //整数
+            if ("3003".equals(attr.getString("specValueType"))) {
+                Assert.isMoney(attr.getString("value"), attr.getString("specName") + "不是金额类型 如 3.00");
+            }
+
+            // 日期4004
+            if ("4004".equals(attr.getString("specValueType"))) {
+                Assert.isDate(attr.getString("value"), DateUtil.DATE_FORMATE_STRING_B, attr.getString("specName") + "不是日期格式 YYYY-MM-DD");
+            }
+
+            // 日期5005
+            if ("5005".equals(attr.getString("specValueType"))) {
+                Assert.isDate(attr.getString("value"), DateUtil.DATE_FORMATE_STRING_A, attr.getString("specName") + "不是日期格式 YYYY-MM-DD hh:mm:ss");
+            }
+        }
+    }
+
 
 }

+ 18 - 0
service-api/src/main/java/com/java110/api/bmo/room/IRoomBMO.java

@@ -60,6 +60,24 @@ public interface IRoomBMO extends IApiBaseBMO {
      * @return 订单服务能够接受的报文
      */
     public void addRoom(JSONObject paramInJson, DataFlowContext dataFlowContext);
+
+    /**
+     * 添加小区楼信息
+     *
+     * @param paramInJson     接口调用放传入入参
+     * @param dataFlowContext 数据上下文
+     * @return 订单服务能够接受的报文
+     */
+    public void addRoomAttr(JSONObject paramInJson, DataFlowContext dataFlowContext);
+
+    /**
+     * 添加小区楼信息
+     *
+     * @param paramInJson     接口调用放传入入参
+     * @param dataFlowContext 数据上下文
+     * @return 订单服务能够接受的报文
+     */
+    public void updateRoomAttr(JSONObject paramInJson, DataFlowContext dataFlowContext);
     /**
      * 添加小区楼信息
      *

+ 28 - 5
service-api/src/main/java/com/java110/api/bmo/room/impl/RoomBMOImpl.java

@@ -4,18 +4,20 @@ import com.alibaba.fastjson.JSONObject;
 import com.java110.api.bmo.ApiBaseBMO;
 import com.java110.api.bmo.room.IRoomBMO;
 import com.java110.core.context.DataFlowContext;
-import com.java110.intf.community.IRoomInnerServiceSMO;
-import com.java110.intf.fee.IFeeConfigInnerServiceSMO;
-import com.java110.intf.fee.IFeeInnerServiceSMO;
-import com.java110.intf.user.IOwnerRoomRelInnerServiceSMO;
+import com.java110.core.factory.GenerateCodeFactory;
 import com.java110.dto.RoomDto;
 import com.java110.dto.fee.FeeConfigDto;
 import com.java110.dto.fee.FeeDto;
 import com.java110.dto.owner.OwnerRoomRelDto;
+import com.java110.intf.community.IRoomInnerServiceSMO;
+import com.java110.intf.fee.IFeeConfigInnerServiceSMO;
+import com.java110.intf.fee.IFeeInnerServiceSMO;
+import com.java110.intf.user.IOwnerRoomRelInnerServiceSMO;
 import com.java110.po.community.CommunityMemberPo;
 import com.java110.po.fee.PayFeePo;
 import com.java110.po.floor.FloorPo;
 import com.java110.po.owner.OwnerRoomRelPo;
+import com.java110.po.room.RoomAttrPo;
 import com.java110.po.room.RoomPo;
 import com.java110.po.unit.UnitPo;
 import com.java110.utils.constant.BusinessTypeConstant;
@@ -205,7 +207,28 @@ public class RoomBMOImpl extends ApiBaseBMO implements IRoomBMO {
         businessUnit.put("roomId", "-1");
         businessUnit.put("userId", dataFlowContext.getRequestCurrentHeaders().get(CommonConstant.HTTP_USER_ID));
         RoomPo roomPo = BeanConvertUtil.covertBean(businessUnit, RoomPo.class);
-        super.delete(dataFlowContext, roomPo, BusinessTypeConstant.BUSINESS_TYPE_SAVE_ROOM_INFO);
+        super.insert(dataFlowContext, roomPo, BusinessTypeConstant.BUSINESS_TYPE_SAVE_ROOM_INFO);
+    }
+
+    @Override
+    public void addRoomAttr(JSONObject paramInJson, DataFlowContext dataFlowContext) {
+        RoomAttrPo roomAttrPo = new RoomAttrPo();
+        roomAttrPo.setAttrId(GenerateCodeFactory.getAttrId());
+        roomAttrPo.setRoomId(paramInJson.getString("roomId"));
+        roomAttrPo.setSpecCd(paramInJson.getString("specCd"));
+        roomAttrPo.setValue(paramInJson.getString("value"));
+        super.insert(dataFlowContext, roomAttrPo, BusinessTypeConstant.BUSINESS_TYPE_SAVE_ROOM_INFO);
+    }
+
+
+    @Override
+    public void updateRoomAttr(JSONObject paramInJson, DataFlowContext dataFlowContext) {
+        RoomAttrPo roomAttrPo = new RoomAttrPo();
+        roomAttrPo.setAttrId(paramInJson.getString("attrId"));
+        roomAttrPo.setRoomId(paramInJson.getString("roomId"));
+        roomAttrPo.setSpecCd(paramInJson.getString("specCd"));
+        roomAttrPo.setValue(paramInJson.getString("value"));
+        super.update(dataFlowContext, roomAttrPo, BusinessTypeConstant.BUSINESS_TYPE_UPDATE_ROOM_INFO);
     }
 
     /**

+ 40 - 2
service-api/src/main/java/com/java110/api/listener/room/BindingAddRoomBindingListener.java

@@ -6,8 +6,8 @@ import com.java110.api.bmo.room.IRoomBMO;
 import com.java110.api.listener.AbstractServiceApiPlusListener;
 import com.java110.core.annotation.Java110Listener;
 import com.java110.core.context.DataFlowContext;
-import com.java110.core.factory.GenerateCodeFactory;
 import com.java110.core.event.service.api.ServiceDataFlowEvent;
+import com.java110.core.factory.GenerateCodeFactory;
 import com.java110.utils.constant.CommonConstant;
 import com.java110.utils.constant.ServiceCodeAddRoomBindingConstant;
 import com.java110.utils.util.Assert;
@@ -41,6 +41,20 @@ public class BindingAddRoomBindingListener extends AbstractServiceApiPlusListene
         Assert.hasKeyByFlowData(infos, "addRoomView", "unitPrice", "必填,请填写房屋每平米单价");
         Assert.hasKeyByFlowData(infos, "addRoomView", "state", "必填,请选择房屋状态");
 
+        JSONObject addRoomView = null;
+        for (int roomIndex = 0; roomIndex < infos.size(); roomIndex++) {
+            JSONObject _info = infos.getJSONObject(roomIndex);
+            if (_info.containsKey("addRoomView") && _info.getString("flowComponent").equals("addRoomView")) {
+                addRoomView = _info;
+                break;
+            }
+        }
+
+        if (addRoomView == null) {
+            return;
+        }
+
+        Assert.judgeAttrValue(addRoomView);
     }
 
     @Override
@@ -70,14 +84,17 @@ public class BindingAddRoomBindingListener extends AbstractServiceApiPlusListene
             addRoomView.put("userId", context.getRequestCurrentHeaders().get(CommonConstant.HTTP_USER_ID));
             addRoomView.put("unitId", viewUnitInfo.getString("unitId"));
             roomBMOImpl.addBusinessRoom(addRoomView, context);
+            //处理房屋属性
+            dealRoomAttr(addRoomView, context);
         }
 
+
         commit(context);
 
         JSONObject paramOutObj = new JSONObject();
         paramOutObj.put("floorId", viewFloorInfo.getString("floorId"));
         paramOutObj.put("unitId", viewUnitInfo.getString("unitId"));
-        paramOutObj.put("roomId", addRoomView.getString("floorId"));
+        paramOutObj.put("roomId", addRoomView.getString("roomId"));
         ResponseEntity<String> responseEntity = null;
         if (context.getResponseEntity().getStatusCode() == HttpStatus.OK) {
             responseEntity = new ResponseEntity<String>(paramOutObj.toJSONString(), HttpStatus.OK);
@@ -85,6 +102,27 @@ public class BindingAddRoomBindingListener extends AbstractServiceApiPlusListene
         context.setResponseEntity(responseEntity);
     }
 
+    private void dealRoomAttr(JSONObject addRoomView, DataFlowContext context) {
+
+        if (!addRoomView.containsKey("attrs")) {
+            return;
+        }
+
+        JSONArray attrs = addRoomView.getJSONArray("attrs");
+        if (attrs.size() < 1) {
+            return;
+        }
+
+
+        JSONObject attr = null;
+        for (int attrIndex = 0; attrIndex < attrs.size(); attrIndex++) {
+            attr = attrs.getJSONObject(attrIndex);
+            attr.put("roomId", addRoomView.getString("roomId"));
+            roomBMOImpl.addRoomAttr(attr, context);
+        }
+
+    }
+
     @Override
     public String getServiceCode() {
         return ServiceCodeAddRoomBindingConstant.BINDING_ADDROOMBINDING;

+ 27 - 2
service-api/src/main/java/com/java110/api/listener/room/UpdateRoomListener.java

@@ -1,13 +1,14 @@
 package com.java110.api.listener.room;
 
+import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.java110.api.bmo.room.IRoomBMO;
 import com.java110.api.listener.AbstractServiceApiPlusListener;
 import com.java110.core.annotation.Java110Listener;
 import com.java110.core.context.DataFlowContext;
-import com.java110.intf.community.IUnitInnerServiceSMO;
-import com.java110.dto.UnitDto;
 import com.java110.core.event.service.api.ServiceDataFlowEvent;
+import com.java110.dto.UnitDto;
+import com.java110.intf.community.IUnitInnerServiceSMO;
 import com.java110.utils.constant.ServiceCodeConstant;
 import com.java110.utils.util.Assert;
 import org.slf4j.Logger;
@@ -83,11 +84,35 @@ public class UpdateRoomListener extends AbstractServiceApiPlusListener {
         if (units == null || units.size() < 1) {
             throw new IllegalArgumentException("传入单元ID不是该小区的单元");
         }
+
+        Assert.judgeAttrValue(reqJson);
+
     }
 
     @Override
     protected void doSoService(ServiceDataFlowEvent event, DataFlowContext context, JSONObject reqJson) {
         roomBMOImpl.updateShellRoom(reqJson, context);
+
+        if (!reqJson.containsKey("attrs")) {
+            return;
+        }
+
+        JSONArray attrs = reqJson.getJSONArray("attrs");
+        if (attrs.size() < 1) {
+            return;
+        }
+
+
+        JSONObject attr = null;
+        for (int attrIndex = 0; attrIndex < attrs.size(); attrIndex++) {
+            attr = attrs.getJSONObject(attrIndex);
+            attr.put("roomId", reqJson.getString("roomId"));
+            if (!attr.containsKey("attrId") || attr.getString("attrId").startsWith("-")) {
+                roomBMOImpl.addRoomAttr(attr, context);
+                continue;
+            }
+            roomBMOImpl.updateRoomAttr(attr, context);
+        }
     }