| | |
| | | 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.owner.OwnerCarAttrPo; |
| | | import com.java110.po.parking.ParkingSpacePo; |
| | | import com.java110.utils.cache.MappingCache; |
| | | 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 com.java110.utils.util.*; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | |
| | | import java.util.Date; |
| | | import java.util.List; |
| | | |
| | | @Java110Cmd(serviceCode = "owner.saveOwnerCar") |
| | |
| | | |
| | | @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.hasKeyAndValue(reqJson, "communityId", "未包含小区ID"); |
| | | Assert.hasKeyAndValue(reqJson, "ownerId", "请求报文中未包含ownerId"); |
| | | Assert.hasKeyAndValue(reqJson, "carNum", "请求报文中未包含carNum"); |
| | | Assert.hasKeyAndValue(reqJson, "carType", "请求报文中未包含carType"); |
| | | Assert.hasKeyAndValue(reqJson, "psId", "未包含psId"); |
| | | |
| | | Assert.hasLength(reqJson.getString("communityId"), "小区ID不能为空"); |
| | | Assert.hasLength(reqJson.getString("ownerId"), "ownerId不能为空"); |
| | | Assert.hasLength(reqJson.getString("psId"), "psId不能为空"); |
| | | if (OwnerCarDto.LEASE_TYPE_MONTH.equals(reqJson.getString("leaseType"))) { |
| | | Assert.hasKeyAndValue(reqJson, "startTime", "请求报文中未包含开始时间"); |
| | | Assert.hasKeyAndValue(reqJson, "endTime", "请求报文中未包含结束时间"); |
| | | Assert.isDate(reqJson.getString("startTime"),DateUtil.DATE_FORMATE_STRING_B,"开始时间格式错误"); |
| | | Assert.isDate(reqJson.getString("endTime"),DateUtil.DATE_FORMATE_STRING_B,"结束时间格式错误"); |
| | | } |
| | | |
| | | if (!"H".equals(reqJson.getString("carNumType")) |
| | | && !"S".equals(reqJson.getString("carNumType"))) { |
| | | throw new ListenerExecuteException(ResponseConstant.RESULT_CODE_ERROR, "请求报文中sellOrFire值错误 ,出售为S 出租为H"); |
| | | String startTime = reqJson.getString("startTime"); |
| | | String endTime = reqJson.getString("endTime"); |
| | | if(StringUtil.isEmpty(startTime)){ |
| | | startTime = DateUtil.getFormatTimeString(new Date(), DateUtil.DATE_FORMATE_STRING_B); |
| | | reqJson.put("startTime",startTime); |
| | | } |
| | | if(StringUtil.isEmpty(endTime)){ |
| | | endTime = "2050-01-01"; |
| | | reqJson.put("endTime",endTime); |
| | | } |
| | | |
| | | //检查车位是否是空闲状态 |
| | | ParkingSpaceDto parkingSpaceDto = new ParkingSpaceDto(); |
| | | parkingSpaceDto.setPsId(reqJson.getString("psId")); |
| | | List<ParkingSpaceDto> parkingSpaceDtos = parkingSpaceInnerServiceSMOImpl.queryParkingSpaces(parkingSpaceDto); |
| | | Assert.listOnlyOne(parkingSpaceDtos, "查询车位错误!"); |
| | | //获取车位状态 |
| | | String state = parkingSpaceDtos.get(0).getState(); |
| | | if (StringUtil.isEmpty(state) || !ParkingSpaceDto.STATE_FREE.equals(state)) { |
| | | throw new IllegalArgumentException("该车位不是空闲状态!"); |
| | | } |
| | | |
| | | //校验车牌号是否存在 |
| | | OwnerCarDto ownerCarDto = new OwnerCarDto(); |
| | | ownerCarDto.setCommunityId(reqJson.getString("communityId")); |
| | | ownerCarDto.setCarNum(reqJson.getString("carNum")); |
| | | ownerCarDto.setPaIds(new String[]{parkingSpaceDtos.get(0).getPaId()}); |
| | | ownerCarDto.setCarTypeCds(new String[]{OwnerCarDto.CAR_TYPE_PRIMARY, OwnerCarDto.CAR_TYPE_MEMBER}); // 临时车除外 |
| | | int count = ownerCarInnerServiceSMOImpl.queryOwnerCarsCount(ownerCarDto); |
| | | |
| | |
| | | carInoutDto.setCarNum(reqJson.getString("carNum")); |
| | | carInoutDto.setStates(new String[]{CarInoutDto.STATE_PAY, CarInoutDto.STATE_IN, CarInoutDto.STATE_REPAY}); |
| | | List<CarInoutDto> carInoutDtos = carInoutInnerServiceSMOImpl.queryCarInouts(carInoutDto); |
| | | if (carInoutDtos != null && carInoutDtos.size() > 0) { |
| | | if (!ListUtil.isNull(carInoutDtos)) { |
| | | throw new CmdException("车辆在场,请出场后再办理月租车"); |
| | | } |
| | | } |
| | |
| | | @Override |
| | | @Java110Transactional |
| | | public void doCmd(CmdEvent event, ICmdDataFlowContext context, JSONObject reqJson) throws CmdException { |
| | | if (!reqJson.containsKey("leaseType")) { |
| | | reqJson.put("leaseType", OwnerCarDto.LEASE_TYPE_MONTH); |
| | | } |
| | | |
| | | JSONObject businessOwnerCar = new JSONObject(); |
| | | businessOwnerCar.putAll(reqJson); |
| | | businessOwnerCar.put("memberId", GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_carId)); |
| | |
| | | } |
| | | //添加车辆属性 |
| | | dealOwnerCarAttr(reqJson, ownerCarPo); |
| | | |
| | | |
| | | int flag = ownerCarV1InnerServiceSMOImpl.saveOwnerCar(ownerCarPo); |
| | | if (flag < 1) { |
| | | throw new CmdException("保存车辆属性失败"); |
| | |
| | | JSONObject businessParkingSpace = new JSONObject(); |
| | | |
| | | businessParkingSpace.putAll(BeanConvertUtil.beanCovertMap(parkingSpaceDto)); |
| | | businessParkingSpace.put("state", reqJson.getString("carNumType")); |
| | | ParkingSpacePo parkingSpacePo = BeanConvertUtil.covertBean(businessParkingSpace, ParkingSpacePo.class); |
| | | parkingSpacePo.setState("H"); //S 出售 H 出租 F 空闲 |
| | | flag = parkingSpaceV1InnerServiceSMOImpl.updateParkingSpace(parkingSpacePo); |
| | | if (flag < 1) { |
| | | throw new CmdException("修改车位状态失败"); |