소스 검색

办理月租车时,如办理时,该车已在场且是办理当天之前就入的场,要么给提示,要么就不准办理

java110 3 년 전
부모
커밋
84ba7f9caa

+ 38 - 0
service-common/src/main/java/com/java110/common/cmd/machine/CustomCarInOutCmd.java

@@ -21,13 +21,23 @@ import com.java110.core.annotation.Java110Cmd;
 import com.java110.core.context.ICmdDataFlowContext;
 import com.java110.core.context.ICmdDataFlowContext;
 import com.java110.core.event.cmd.Cmd;
 import com.java110.core.event.cmd.Cmd;
 import com.java110.core.event.cmd.CmdEvent;
 import com.java110.core.event.cmd.CmdEvent;
+import com.java110.core.factory.GenerateCodeFactory;
+import com.java110.dto.parkingBoxArea.ParkingBoxAreaDto;
+import com.java110.dto.tempCarFeeConfig.TempCarPayOrderDto;
+import com.java110.intf.community.IParkingBoxAreaV1InnerServiceSMO;
+import com.java110.intf.job.IDataBusInnerServiceSMO;
 import com.java110.utils.exception.CmdException;
 import com.java110.utils.exception.CmdException;
 import com.java110.utils.util.Assert;
 import com.java110.utils.util.Assert;
+import com.java110.utils.util.DateUtil;
+import com.java110.utils.util.StringUtil;
+import com.java110.vo.ResultVo;
 import org.slf4j.Logger;
 import org.slf4j.Logger;
 import com.java110.core.log.LoggerFactory;
 import com.java110.core.log.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.http.ResponseEntity;
 import org.springframework.http.ResponseEntity;
 
 
+import java.util.List;
+
 /**
 /**
  * 类表述:保存
  * 类表述:保存
  * 服务编码:machine.customCarInOutCmd
  * 服务编码:machine.customCarInOutCmd
@@ -48,6 +58,13 @@ public class CustomCarInOutCmd extends Cmd {
     @Autowired
     @Autowired
     private IMachineOpenDoorBMO machineOpenDoorBMOImpl;
     private IMachineOpenDoorBMO machineOpenDoorBMOImpl;
 
 
+
+    @Autowired
+    private IDataBusInnerServiceSMO dataBusInnerServiceSMOImpl;
+
+    @Autowired
+    private IParkingBoxAreaV1InnerServiceSMO parkingBoxAreaV1InnerServiceSMOImpl;
+
     @Override
     @Override
     public void validate(CmdEvent event, ICmdDataFlowContext cmdDataFlowContext, JSONObject reqJson) {
     public void validate(CmdEvent event, ICmdDataFlowContext cmdDataFlowContext, JSONObject reqJson) {
         Assert.hasKeyAndValue(reqJson, "communityId", "请求报文中未包含小区信息");
         Assert.hasKeyAndValue(reqJson, "communityId", "请求报文中未包含小区信息");
@@ -60,6 +77,27 @@ public class CustomCarInOutCmd extends Cmd {
     @Override
     @Override
     public void doCmd(CmdEvent event, ICmdDataFlowContext cmdDataFlowContext, JSONObject reqJson) throws CmdException {
     public void doCmd(CmdEvent event, ICmdDataFlowContext cmdDataFlowContext, JSONObject reqJson) throws CmdException {
 
 
+        //出场时 先 补充费用信息
+        if(!"1101".equals(reqJson.getString("type"))) {
+
+            ParkingBoxAreaDto parkingBoxAreaDto = new ParkingBoxAreaDto();
+            parkingBoxAreaDto.setBoxId(reqJson.getString("boxId"));
+            parkingBoxAreaDto.setDefaultArea(ParkingBoxAreaDto.DEFAULT_AREA_TRUE);
+            List<ParkingBoxAreaDto> parkingBoxAreaDtos = parkingBoxAreaV1InnerServiceSMOImpl.queryParkingBoxAreas(parkingBoxAreaDto);
+
+            if(parkingBoxAreaDtos == null  || parkingBoxAreaDtos.size()< 1){
+                throw new CmdException("未包含停车场信息");
+            }
+
+            TempCarPayOrderDto tempCarPayOrderDto = new TempCarPayOrderDto();
+            tempCarPayOrderDto.setCarNum(reqJson.getString("carNum"));
+            tempCarPayOrderDto.setPaId(parkingBoxAreaDtos.get(0).getPaId());
+            tempCarPayOrderDto.setOrderId(reqJson.getString("inoutId"));
+            tempCarPayOrderDto.setAmount(Double.parseDouble(reqJson.getString("payCharge")));
+            tempCarPayOrderDto.setPayType(reqJson.getString("payType"));
+            //tempCarPayOrderDto.setMachineId(reqJson.getString("machineId"));
+            ResultVo resultVo = dataBusInnerServiceSMOImpl.notifyTempCarFeeOrder(tempCarPayOrderDto);
+        }
         ResponseEntity<String> responseEntity = machineOpenDoorBMOImpl.customCarInOut(reqJson);
         ResponseEntity<String> responseEntity = machineOpenDoorBMOImpl.customCarInOut(reqJson);
         cmdDataFlowContext.setResponseEntity(responseEntity);
         cmdDataFlowContext.setResponseEntity(responseEntity);
     }
     }

+ 1 - 1
service-fee/src/main/java/com/java110/fee/cmd/fee/SaveTempCarFeeConfigCmd.java

@@ -81,7 +81,7 @@ public class SaveTempCarFeeConfigCmd extends Cmd {
         payFeeConfigPo.setAdditionalAmount("0");
         payFeeConfigPo.setAdditionalAmount("0");
         payFeeConfigPo.setBillType(FeeConfigDto.BILL_TYPE_YEAR);
         payFeeConfigPo.setBillType(FeeConfigDto.BILL_TYPE_YEAR);
         payFeeConfigPo.setCommunityId(reqJson.getString("communityId"));
         payFeeConfigPo.setCommunityId(reqJson.getString("communityId"));
-        payFeeConfigPo.setComputingFormula(FeeConfigDto.COMPUTING_FORMULA_TEMP_CAR);
+        payFeeConfigPo.setComputingFormula(FeeConfigDto.COMPUTING_FORMULA_DYNAMIC);
         payFeeConfigPo.setComputingFormulaText("");
         payFeeConfigPo.setComputingFormulaText("");
         payFeeConfigPo.setConfigId(reqJson.getString("feeConfigId"));
         payFeeConfigPo.setConfigId(reqJson.getString("feeConfigId"));
         payFeeConfigPo.setEndTime(reqJson.getString("endTime"));
         payFeeConfigPo.setEndTime(reqJson.getString("endTime"));

+ 1 - 0
service-job/src/main/java/com/java110/job/adapt/hcIot/OpenDoorAdapt.java

@@ -234,6 +234,7 @@ public class OpenDoorAdapt extends DatabusAdaptImpl {
         postParameters.put("type", paramIn.getString("type"));
         postParameters.put("type", paramIn.getString("type"));
         postParameters.put("amount", paramIn.getString("amount"));
         postParameters.put("amount", paramIn.getString("amount"));
         postParameters.put("payCharge", paramIn.getString("payCharge"));
         postParameters.put("payCharge", paramIn.getString("payCharge"));
+        postParameters.put("payType", paramIn.getString("payType"));
         HttpEntity<MultiValueMap<String, Object>> httpEntity = new HttpEntity(postParameters.toJSONString(), getHeaders(outRestTemplate));
         HttpEntity<MultiValueMap<String, Object>> httpEntity = new HttpEntity(postParameters.toJSONString(), getHeaders(outRestTemplate));
         ResponseEntity<String> responseEntity = outRestTemplate.exchange(IotConstant.getUrl(IotConstant.CUSTOM_CAR_INOUT), HttpMethod.POST, httpEntity, String.class);
         ResponseEntity<String> responseEntity = outRestTemplate.exchange(IotConstant.getUrl(IotConstant.CUSTOM_CAR_INOUT), HttpMethod.POST, httpEntity, String.class);
         if (responseEntity.getStatusCode() != HttpStatus.OK) {
         if (responseEntity.getStatusCode() != HttpStatus.OK) {

+ 31 - 1
service-user/src/main/java/com/java110/user/cmd/owner/SaveOwnerCarCmd.java

@@ -8,8 +8,10 @@ import com.java110.core.context.ICmdDataFlowContext;
 import com.java110.core.event.cmd.Cmd;
 import com.java110.core.event.cmd.Cmd;
 import com.java110.core.event.cmd.CmdEvent;
 import com.java110.core.event.cmd.CmdEvent;
 import com.java110.core.factory.GenerateCodeFactory;
 import com.java110.core.factory.GenerateCodeFactory;
+import com.java110.dto.machine.CarInoutDto;
 import com.java110.dto.owner.OwnerCarDto;
 import com.java110.dto.owner.OwnerCarDto;
 import com.java110.dto.parking.ParkingSpaceDto;
 import com.java110.dto.parking.ParkingSpaceDto;
+import com.java110.intf.common.ICarInoutInnerServiceSMO;
 import com.java110.intf.community.IParkingSpaceInnerServiceSMO;
 import com.java110.intf.community.IParkingSpaceInnerServiceSMO;
 import com.java110.intf.community.IParkingSpaceV1InnerServiceSMO;
 import com.java110.intf.community.IParkingSpaceV1InnerServiceSMO;
 import com.java110.intf.fee.IFeeConfigInnerServiceSMO;
 import com.java110.intf.fee.IFeeConfigInnerServiceSMO;
@@ -19,6 +21,7 @@ import com.java110.intf.user.IOwnerCarV1InnerServiceSMO;
 import com.java110.po.car.OwnerCarPo;
 import com.java110.po.car.OwnerCarPo;
 import com.java110.po.ownerCarAttr.OwnerCarAttrPo;
 import com.java110.po.ownerCarAttr.OwnerCarAttrPo;
 import com.java110.po.parking.ParkingSpacePo;
 import com.java110.po.parking.ParkingSpacePo;
+import com.java110.utils.cache.MappingCache;
 import com.java110.utils.constant.ResponseConstant;
 import com.java110.utils.constant.ResponseConstant;
 import com.java110.utils.exception.CmdException;
 import com.java110.utils.exception.CmdException;
 import com.java110.utils.exception.ListenerExecuteException;
 import com.java110.utils.exception.ListenerExecuteException;
@@ -51,6 +54,9 @@ public class SaveOwnerCarCmd extends Cmd {
     @Autowired
     @Autowired
     private IParkingSpaceV1InnerServiceSMO parkingSpaceV1InnerServiceSMOImpl;
     private IParkingSpaceV1InnerServiceSMO parkingSpaceV1InnerServiceSMOImpl;
 
 
+    @Autowired
+    private ICarInoutInnerServiceSMO carInoutInnerServiceSMOImpl;
+
     @Override
     @Override
     public void validate(CmdEvent event, ICmdDataFlowContext context, JSONObject reqJson) throws CmdException {
     public void validate(CmdEvent event, ICmdDataFlowContext context, JSONObject reqJson) throws CmdException {
         Assert.jsonObjectHaveKey(reqJson, "communityId", "未包含小区ID");
         Assert.jsonObjectHaveKey(reqJson, "communityId", "未包含小区ID");
@@ -76,12 +82,36 @@ public class SaveOwnerCarCmd extends Cmd {
         OwnerCarDto ownerCarDto = new OwnerCarDto();
         OwnerCarDto ownerCarDto = new OwnerCarDto();
         ownerCarDto.setCommunityId(reqJson.getString("communityId"));
         ownerCarDto.setCommunityId(reqJson.getString("communityId"));
         ownerCarDto.setCarNum(reqJson.getString("carNum"));
         ownerCarDto.setCarNum(reqJson.getString("carNum"));
-        ownerCarDto.setCarTypeCds(new String[]{OwnerCarDto.CAR_TYPE_PRIMARY,OwnerCarDto.CAR_TYPE_MEMBER}); // 临时车除外
+        ownerCarDto.setCarTypeCds(new String[]{OwnerCarDto.CAR_TYPE_PRIMARY, OwnerCarDto.CAR_TYPE_MEMBER}); // 临时车除外
         int count = ownerCarInnerServiceSMOImpl.queryOwnerCarsCount(ownerCarDto);
         int count = ownerCarInnerServiceSMOImpl.queryOwnerCarsCount(ownerCarDto);
 
 
         if (count > 0) {
         if (count > 0) {
             throw new IllegalArgumentException("车辆已存在");
             throw new IllegalArgumentException("车辆已存在");
         }
         }
+
+        //判断临时车 是否在场
+        String parkingIn = MappingCache.getValue("TEMP_CAR_IN_PARKING");
+
+        if (!"ON".equals(parkingIn)) {
+            return;
+        }
+
+        ownerCarDto = new OwnerCarDto();
+        ownerCarDto.setCommunityId(reqJson.getString("communityId"));
+        ownerCarDto.setCarNum(reqJson.getString("carNum"));
+        ownerCarDto.setCarTypeCds(new String[]{OwnerCarDto.CAR_TYPE_TEMP}); // 临时车除外
+        count = ownerCarInnerServiceSMOImpl.queryOwnerCarsCount(ownerCarDto);
+        if (count < 1) {
+            return;
+        }
+
+        CarInoutDto carInoutDto = new CarInoutDto();
+        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) {
+            throw new CmdException("车辆在场,请出场后再办理月租车");
+        }
     }
     }
 
 
     @Override
     @Override