Pārlūkot izejas kodu

完成添加 业主车辆

java110 3 gadi atpakaļ
vecāks
revīzija
40bdbf5ab1

+ 0 - 142
service-api/src/main/java/com/java110/api/listener/owner/SaveOwnerCarListener.java

@@ -1,142 +0,0 @@
-package com.java110.api.listener.owner;
-
-import com.alibaba.fastjson.JSONObject;
-import com.java110.api.bmo.parkingSpace.IParkingSpaceBMO;
-import com.java110.api.listener.AbstractServiceApiPlusListener;
-import com.java110.core.annotation.Java110Listener;
-import com.java110.core.context.DataFlowContext;
-import com.java110.core.event.service.api.ServiceDataFlowEvent;
-import com.java110.dto.owner.OwnerCarDto;
-import com.java110.intf.community.IParkingSpaceInnerServiceSMO;
-import com.java110.intf.fee.IFeeConfigInnerServiceSMO;
-import com.java110.intf.user.IOwnerCarAttrInnerServiceSMO;
-import com.java110.intf.user.IOwnerCarInnerServiceSMO;
-import com.java110.utils.constant.ResponseConstant;
-import com.java110.utils.constant.ServiceCodeConstant;
-import com.java110.utils.exception.ListenerExecuteException;
-import com.java110.utils.util.Assert;
-import org.slf4j.Logger;
-import com.java110.core.log.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.http.HttpMethod;
-
-
-/**
- * @ClassName SaveParkingSpaceListener
- * @Description 保存小区楼信息
- * @Author wuxw
- * @Date 2019/4/26 14:51
- * @Version 1.0
- * add by wuxw 2019/4/26
- **/
-
-@Java110Listener("saveOwnerCarListener")
-public class SaveOwnerCarListener extends AbstractServiceApiPlusListener {
-
-
-    private static Logger logger = LoggerFactory.getLogger(SaveOwnerCarListener.class);
-
-    @Autowired
-    private IParkingSpaceBMO parkingSpaceBMOImpl;
-
-    @Autowired
-    private IFeeConfigInnerServiceSMO feeConfigInnerServiceSMOImpl;
-
-    @Autowired
-    private IParkingSpaceInnerServiceSMO parkingSpaceInnerServiceSMOImpl;
-
-    @Autowired
-    private IOwnerCarInnerServiceSMO ownerCarInnerServiceSMOImpl;
-
-    @Autowired
-    private IOwnerCarAttrInnerServiceSMO ownerCarAttrInnerServiceSMOImpl;
-
-    @Override
-    public String getServiceCode() {
-        return ServiceCodeConstant.SERVICE_CODE_SAVE_OWNER_CAR;
-    }
-
-    @Override
-    public HttpMethod getHttpMethod() {
-        return HttpMethod.POST;
-    }
-
-
-    /**
-     * {"communityId":"7020181217000001",
-     * "data":[
-     * {
-     * "flowComponent":"viewSelectParkingSpace","parkingSpaceFlag":"","num":"lbwnb","area":"11.00","state":"F",
-     * "stateName":"空闲 ","remark":"","areaNum":"3","psId":"792020082657940123","typeCd":"1001"},
-     * {"flowComponent":"viewOwnerInfo","viewOwnerFlag":"","ownerId":"772020082849180061","name":"王鹏飞","age":"28",
-     * "sex":"0","userName":"wuxw","remark":"","idCard":"340803199211182134","link":"17721036947","ownerPhoto":"/img/noPhoto.jpg",
-     * "showCallBackButton":"false"},
-     * {"flowComponent":"addCar","carNum":"青AGK916","carBrand":"传祺","carType":"9901","carColor":"白色","carRemark":"",
-     * "startTime":"2020-08-29 14:55:04","endTime":"2021-08-29 14:55:04","carNumType":"H","index":2}
-     * ]}
-     *
-     * @param event   事件对象
-     * @param reqJson 请求报文数据
-     */
-    @Override
-    protected void validate(ServiceDataFlowEvent event, JSONObject reqJson) {
-        Assert.jsonObjectHaveKey(reqJson, "communityId", "未包含小区ID");
-        Assert.jsonObjectHaveKey(reqJson, "ownerId", "请求报文中未包含ownerId");
-        Assert.jsonObjectHaveKey(reqJson, "carNum", "请求报文中未包含carNum");
-        Assert.jsonObjectHaveKey(reqJson, "carBrand", "请求报文中未包含carBrand");
-        Assert.jsonObjectHaveKey(reqJson, "carType", "请求报文中未包含carType");
-        Assert.jsonObjectHaveKey(reqJson, "carColor", "未包含carColor");
-        Assert.jsonObjectHaveKey(reqJson, "psId", "未包含psId");
-        Assert.jsonObjectHaveKey(reqJson, "storeId", "未包含storeId");
-        Assert.jsonObjectHaveKey(reqJson, "carNumType", "未包含carNumType");
-
-        Assert.hasLength(reqJson.getString("communityId"), "小区ID不能为空");
-        Assert.hasLength(reqJson.getString("ownerId"), "ownerId不能为空");
-        Assert.hasLength(reqJson.getString("psId"), "psId不能为空");
-
-        if (!"H".equals(reqJson.getString("carNumType"))
-                && !"S".equals(reqJson.getString("carNumType"))) {
-            throw new ListenerExecuteException(ResponseConstant.RESULT_CODE_ERROR, "请求报文中sellOrFire值错误 ,出售为S 出租为H");
-        }
-
-        //校验车牌号是否存在
-        OwnerCarDto ownerCarDto = new OwnerCarDto();
-        ownerCarDto.setCommunityId(reqJson.getString("communityId"));
-        ownerCarDto.setCarNum(reqJson.getString("carNum"));
-        int count = ownerCarInnerServiceSMOImpl.queryOwnerCarsCount(ownerCarDto);
-
-        if (count > 0) {
-            throw new IllegalArgumentException("车辆已存在");
-        }
-
-    }
-
-    @Override
-    protected void doSoService(ServiceDataFlowEvent event, DataFlowContext context, JSONObject reqJson) {
-        //添加车辆
-        parkingSpaceBMOImpl.sellParkingSpace(reqJson, context);
-        parkingSpaceBMOImpl.modifySellParkingSpaceState(reqJson, context);
-    }
-
-
-    @Override
-    public int getOrder() {
-        return 0;
-    }
-
-    public IFeeConfigInnerServiceSMO getFeeConfigInnerServiceSMOImpl() {
-        return feeConfigInnerServiceSMOImpl;
-    }
-
-    public void setFeeConfigInnerServiceSMOImpl(IFeeConfigInnerServiceSMO feeConfigInnerServiceSMOImpl) {
-        this.feeConfigInnerServiceSMOImpl = feeConfigInnerServiceSMOImpl;
-    }
-
-    public IParkingSpaceInnerServiceSMO getParkingSpaceInnerServiceSMOImpl() {
-        return parkingSpaceInnerServiceSMOImpl;
-    }
-
-    public void setParkingSpaceInnerServiceSMOImpl(IParkingSpaceInnerServiceSMO parkingSpaceInnerServiceSMOImpl) {
-        this.parkingSpaceInnerServiceSMOImpl = parkingSpaceInnerServiceSMOImpl;
-    }
-}

+ 161 - 0
service-user/src/main/java/com/java110/user/cmd/owner/SaveOwnerCarCmd.java

@@ -0,0 +1,161 @@
+package com.java110.user.cmd.owner;
+
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.java110.core.annotation.Java110Cmd;
+import com.java110.core.annotation.Java110Transactional;
+import com.java110.core.context.ICmdDataFlowContext;
+import com.java110.core.event.cmd.Cmd;
+import com.java110.core.event.cmd.CmdEvent;
+import com.java110.core.factory.GenerateCodeFactory;
+import com.java110.dto.owner.OwnerCarDto;
+import com.java110.dto.parking.ParkingSpaceDto;
+import com.java110.intf.community.IParkingSpaceInnerServiceSMO;
+import com.java110.intf.community.IParkingSpaceV1InnerServiceSMO;
+import com.java110.intf.fee.IFeeConfigInnerServiceSMO;
+import com.java110.intf.user.IOwnerCarAttrInnerServiceSMO;
+import com.java110.intf.user.IOwnerCarInnerServiceSMO;
+import com.java110.intf.user.IOwnerCarV1InnerServiceSMO;
+import com.java110.po.car.OwnerCarPo;
+import com.java110.po.ownerCarAttr.OwnerCarAttrPo;
+import com.java110.po.parking.ParkingSpacePo;
+import com.java110.utils.constant.ResponseConstant;
+import com.java110.utils.exception.CmdException;
+import com.java110.utils.exception.ListenerExecuteException;
+import com.java110.utils.util.Assert;
+import com.java110.utils.util.BeanConvertUtil;
+import com.java110.utils.util.StringUtil;
+import org.springframework.beans.factory.annotation.Autowired;
+
+import java.util.List;
+
+@Java110Cmd(serviceCode = "owner.saveOwnerCar")
+public class SaveOwnerCarCmd extends Cmd {
+
+
+    @Autowired
+    private IFeeConfigInnerServiceSMO feeConfigInnerServiceSMOImpl;
+
+    @Autowired
+    private IParkingSpaceInnerServiceSMO parkingSpaceInnerServiceSMOImpl;
+
+    @Autowired
+    private IOwnerCarInnerServiceSMO ownerCarInnerServiceSMOImpl;
+
+    @Autowired
+    private IOwnerCarAttrInnerServiceSMO ownerCarAttrInnerServiceSMOImpl;
+
+    @Autowired
+    private IOwnerCarV1InnerServiceSMO ownerCarV1InnerServiceSMOImpl;
+
+    @Autowired
+    private IParkingSpaceV1InnerServiceSMO parkingSpaceV1InnerServiceSMOImpl;
+
+    @Override
+    public void validate(CmdEvent event, ICmdDataFlowContext context, JSONObject reqJson) throws CmdException {
+        Assert.jsonObjectHaveKey(reqJson, "communityId", "未包含小区ID");
+        Assert.jsonObjectHaveKey(reqJson, "ownerId", "请求报文中未包含ownerId");
+        Assert.jsonObjectHaveKey(reqJson, "carNum", "请求报文中未包含carNum");
+        Assert.jsonObjectHaveKey(reqJson, "carBrand", "请求报文中未包含carBrand");
+        Assert.jsonObjectHaveKey(reqJson, "carType", "请求报文中未包含carType");
+        Assert.jsonObjectHaveKey(reqJson, "carColor", "未包含carColor");
+        Assert.jsonObjectHaveKey(reqJson, "psId", "未包含psId");
+        Assert.jsonObjectHaveKey(reqJson, "storeId", "未包含storeId");
+        Assert.jsonObjectHaveKey(reqJson, "carNumType", "未包含carNumType");
+
+        Assert.hasLength(reqJson.getString("communityId"), "小区ID不能为空");
+        Assert.hasLength(reqJson.getString("ownerId"), "ownerId不能为空");
+        Assert.hasLength(reqJson.getString("psId"), "psId不能为空");
+
+        if (!"H".equals(reqJson.getString("carNumType"))
+                && !"S".equals(reqJson.getString("carNumType"))) {
+            throw new ListenerExecuteException(ResponseConstant.RESULT_CODE_ERROR, "请求报文中sellOrFire值错误 ,出售为S 出租为H");
+        }
+
+        //校验车牌号是否存在
+        OwnerCarDto ownerCarDto = new OwnerCarDto();
+        ownerCarDto.setCommunityId(reqJson.getString("communityId"));
+        ownerCarDto.setCarNum(reqJson.getString("carNum"));
+        int count = ownerCarInnerServiceSMOImpl.queryOwnerCarsCount(ownerCarDto);
+
+        if (count > 0) {
+            throw new IllegalArgumentException("车辆已存在");
+        }
+    }
+
+    @Override
+    @Java110Transactional
+    public void doCmd(CmdEvent event, ICmdDataFlowContext context, JSONObject reqJson) throws CmdException {
+        JSONObject businessOwnerCar = new JSONObject();
+        businessOwnerCar.putAll(reqJson);
+        businessOwnerCar.put("memberId", GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_carId));
+        if (!reqJson.containsKey("carId") || reqJson.getString("carId").startsWith("-")) {
+            businessOwnerCar.put("carId", businessOwnerCar.getString("memberId"));
+        }
+        OwnerCarPo ownerCarPo = BeanConvertUtil.covertBean(businessOwnerCar, OwnerCarPo.class);
+        ownerCarPo.setState(OwnerCarDto.STATE_NORMAL);
+
+        //没有指定时为主要车辆
+        if (!reqJson.containsKey("carTypeCd") || StringUtil.isEmpty(reqJson.getString("carTypeCd"))) {
+            ownerCarPo.setCarTypeCd(OwnerCarDto.CAR_TYPE_PRIMARY);
+        }
+        //添加车辆属性
+        dealOwnerCarAttr(reqJson, ownerCarPo);
+        int flag = ownerCarV1InnerServiceSMOImpl.saveOwnerCar(ownerCarPo);
+        if (flag < 1) {
+            throw new CmdException("保存车辆属性失败");
+        }
+
+        ParkingSpaceDto parkingSpaceDto = new ParkingSpaceDto();
+        parkingSpaceDto.setCommunityId(reqJson.getString("communityId"));
+        parkingSpaceDto.setPsId(reqJson.getString("psId"));
+        List<ParkingSpaceDto> parkingSpaceDtos = parkingSpaceInnerServiceSMOImpl.queryParkingSpaces(parkingSpaceDto);
+
+        if (parkingSpaceDtos == null || parkingSpaceDtos.size() != 1) {
+            //throw new ListenerExecuteException(ResponseConstant.RESULT_CODE_ERROR, "未查询到停车位信息" + JSONObject.toJSONString(parkingSpaceDto));
+            return;
+        }
+
+        parkingSpaceDto = parkingSpaceDtos.get(0);
+
+        JSONObject businessParkingSpace = new JSONObject();
+
+        businessParkingSpace.putAll(BeanConvertUtil.beanCovertMap(parkingSpaceDto));
+        businessParkingSpace.put("state", reqJson.getString("carNumType"));
+        ParkingSpacePo parkingSpacePo = BeanConvertUtil.covertBean(businessParkingSpace, ParkingSpacePo.class);
+        flag = parkingSpaceV1InnerServiceSMOImpl.updateParkingSpace(parkingSpacePo);
+        if (flag < 1) {
+            throw new CmdException("修改车位状态失败");
+        }
+
+    }
+
+
+    private void dealOwnerCarAttr(JSONObject paramInJson, OwnerCarPo ownerCarPo) {
+
+        if (!paramInJson.containsKey("attrs")) {
+            return;
+        }
+
+        JSONArray attrs = paramInJson.getJSONArray("attrs");
+        if (attrs.size() < 1) {
+            return;
+        }
+        JSONObject attr = null;
+        int flag = 0;
+        for (int attrIndex = 0; attrIndex < attrs.size(); attrIndex++) {
+            attr = attrs.getJSONObject(attrIndex);
+            OwnerCarAttrPo ownerCarAttrPo = new OwnerCarAttrPo();
+            ownerCarAttrPo.setAttrId(GenerateCodeFactory.getAttrId());
+            ownerCarAttrPo.setCommunityId(ownerCarPo.getCommunityId());
+            ownerCarAttrPo.setCarId(ownerCarPo.getCarId());
+            ownerCarAttrPo.setSpecCd(attr.getString("specCd"));
+            ownerCarAttrPo.setValue(attr.getString("value"));
+            flag = ownerCarAttrInnerServiceSMOImpl.saveOwnerCarAttr(ownerCarAttrPo);
+            if (flag < 1) {
+                throw new CmdException("保存车辆属性失败");
+            }
+        }
+
+    }
+}