ソースを参照

优化查询在场车辆

java110 4 年 前
コミット
764dac8231

+ 1 - 1
java110-core/src/main/java/com/java110/core/smo/IComputeFeeSMO.java

@@ -149,5 +149,5 @@ public interface IComputeFeeSMO {
      *
      * @param carInoutDtos
      */
-    void computeTempCarStopTimeAndFee(List<CarInoutDto> carInoutDtos);
+    List<CarInoutDto> computeTempCarStopTimeAndFee(List<CarInoutDto> carInoutDtos);
 }

+ 6 - 32
java110-core/src/main/java/com/java110/core/smo/impl/ComputeFeeSMOImpl.java

@@ -10,7 +10,6 @@ import com.java110.dto.fee.BillOweFeeDto;
 import com.java110.dto.fee.FeeAttrDto;
 import com.java110.dto.fee.FeeConfigDto;
 import com.java110.dto.fee.FeeDto;
-import com.java110.dto.fee.TempCarFeeResult;
 import com.java110.dto.machine.CarInoutDto;
 import com.java110.dto.owner.OwnerCarDto;
 import com.java110.dto.owner.OwnerDto;
@@ -18,12 +17,9 @@ import com.java110.dto.parking.ParkingSpaceDto;
 import com.java110.dto.report.ReportCarDto;
 import com.java110.dto.report.ReportFeeDto;
 import com.java110.dto.report.ReportRoomDto;
-import com.java110.dto.tempCarFeeConfig.TempCarFeeConfigAttrDto;
-import com.java110.dto.tempCarFeeConfig.TempCarFeeConfigDto;
 import com.java110.intf.community.ICommunityInnerServiceSMO;
 import com.java110.intf.community.IParkingSpaceInnerServiceSMO;
 import com.java110.intf.community.IRoomInnerServiceSMO;
-import com.java110.intf.fee.IComputeTempCarFee;
 import com.java110.intf.fee.IFeeInnerServiceSMO;
 import com.java110.intf.fee.ITempCarFeeConfigAttrInnerServiceSMO;
 import com.java110.intf.fee.ITempCarFeeConfigInnerServiceSMO;
@@ -34,7 +30,6 @@ import com.java110.intf.user.IOwnerInnerServiceSMO;
 import com.java110.po.feeReceiptDetail.FeeReceiptDetailPo;
 import com.java110.utils.constant.ResponseConstant;
 import com.java110.utils.exception.ListenerExecuteException;
-import com.java110.utils.factory.ApplicationContextFactory;
 import com.java110.utils.util.Assert;
 import com.java110.utils.util.BeanConvertUtil;
 import com.java110.utils.util.DateUtil;
@@ -1554,38 +1549,17 @@ public class ComputeFeeSMOImpl implements IComputeFeeSMO {
 
 
     @Override
-    public void computeTempCarStopTimeAndFee(List<CarInoutDto> carInoutDtos) {
+    public List<CarInoutDto> computeTempCarStopTimeAndFee(List<CarInoutDto> carInoutDtos) {
 
         if (carInoutDtos == null || carInoutDtos.size() < 1) {
-            return;
+            return null;
         }
 
-//计算停车时间
-        TempCarFeeConfigDto tempCarFeeConfigDto = new TempCarFeeConfigDto();
-        tempCarFeeConfigDto.setPaId(carInoutDtos.get(0).getPaId());
-        tempCarFeeConfigDto.setCommunityId(carInoutDtos.get(0).getCommunityId());
-        List<TempCarFeeConfigDto> tempCarFeeConfigDtos = tempCarFeeConfigInnerServiceSMOImpl.queryTempCarFeeConfigs(tempCarFeeConfigDto);
 
-        if (tempCarFeeConfigDtos == null || tempCarFeeConfigDtos.size() < 1) {
-            return;
-        }
-        TempCarFeeConfigAttrDto tempCarFeeConfigAttrDto = new TempCarFeeConfigAttrDto();
-        tempCarFeeConfigAttrDto.setConfigId(tempCarFeeConfigDto.getConfigId());
-        tempCarFeeConfigAttrDto.setCommunityId(tempCarFeeConfigDto.getCommunityId());
-
-        List<TempCarFeeConfigAttrDto> tempCarFeeConfigAttrDtos = tempCarFeeConfigAttrInnerServiceSMOImpl.queryTempCarFeeConfigAttrs(tempCarFeeConfigAttrDto);
-        long time = 0;
-        for (CarInoutDto carInoutDto : carInoutDtos) {
-            try {
-                IComputeTempCarFee computeTempCarFee = ApplicationContextFactory.getBean(tempCarFeeConfigDtos.get(0).getRuleId(), IComputeTempCarFee.class);
-                TempCarFeeResult result = computeTempCarFee.computeTempCarFee(carInoutDtos.get(0), tempCarFeeConfigDtos.get(0),tempCarFeeConfigAttrDtos);
-                carInoutDto.setMin(result.getMin());
-                carInoutDto.setHours(result.getHours());
-                carInoutDto.setPayCharge(result.getPayCharge()+"");
-            } catch (Exception e) {
-                logger.error("临时车算费失败", e);
-            }
-        }
+        carInoutDtos = tempCarFeeConfigInnerServiceSMOImpl.computeTempCarFee(carInoutDtos);
+
+        return carInoutDtos;
+
     }
 
 

+ 10 - 0
java110-interface/src/main/java/com/java110/intf/fee/ITempCarFeeConfigInnerServiceSMO.java

@@ -1,6 +1,7 @@
 package com.java110.intf.fee;
 
 import com.java110.config.feign.FeignConfiguration;
+import com.java110.dto.machine.CarInoutDto;
 import com.java110.dto.tempCarFeeConfig.TempCarFeeConfigDto;
 import com.java110.dto.tempCarFeeConfig.TempCarFeeRuleDto;
 import org.springframework.cloud.openfeign.FeignClient;
@@ -48,4 +49,13 @@ public interface ITempCarFeeConfigInnerServiceSMO {
      */
     @RequestMapping(value = "/queryTempCarFeeRules", method = RequestMethod.POST)
     List<TempCarFeeRuleDto> queryTempCarFeeRules(@RequestBody TempCarFeeRuleDto tempCarFeeRuleDto);
+
+    /**
+     * 计算临时车费用
+     *
+     * @param carInoutDtos
+     * @return
+     */
+    @RequestMapping(value = "/computeTempCarFee", method = RequestMethod.POST)
+    List<CarInoutDto> computeTempCarFee(@RequestBody List<CarInoutDto> carInoutDtos);
 }

+ 4 - 4
service-common/src/main/java/com/java110/common/cmd/carInout/ListCarInParkingAreaCmd.java

@@ -75,7 +75,7 @@ public class ListCarInParkingAreaCmd extends AbstractServiceCmdListener {
 
         if (count > 0) {
             carInoutDtos = carInoutV1InnerServiceSMOImpl.queryCarInouts(carInoutDto);
-            computeCarInouts(carInoutDtos);
+            carInoutDtos = computeCarInouts(carInoutDtos);
         } else {
             carInoutDtos = new ArrayList<>();
         }
@@ -84,10 +84,10 @@ public class ListCarInParkingAreaCmd extends AbstractServiceCmdListener {
 
         ResponseEntity<String> responseEntity = new ResponseEntity<String>(resultVo.toString(), HttpStatus.OK);
 
-        cmdDataFlowContext.setResponseEntity(ResultVo.success());
+        cmdDataFlowContext.setResponseEntity(responseEntity);
     }
 
-    private void computeCarInouts(List<CarInoutDto> carInoutDtos) {
-        computeFeeSMOImpl.computeTempCarStopTimeAndFee(carInoutDtos);
+    private List<CarInoutDto> computeCarInouts(List<CarInoutDto> carInoutDtos) {
+        return computeFeeSMOImpl.computeTempCarStopTimeAndFee(carInoutDtos);
     }
 }

+ 38 - 0
service-fee/src/main/java/com/java110/fee/smo/impl/TempCarFeeConfigInnerServiceSMOImpl.java

@@ -3,14 +3,20 @@ package com.java110.fee.smo.impl;
 
 import com.java110.core.base.smo.BaseServiceSMO;
 import com.java110.dto.PageDto;
+import com.java110.dto.fee.TempCarFeeResult;
+import com.java110.dto.machine.CarInoutDto;
 import com.java110.dto.tempCarFeeConfig.TempCarFeeConfigAttrDto;
 import com.java110.dto.tempCarFeeConfig.TempCarFeeConfigDto;
 import com.java110.dto.tempCarFeeConfig.TempCarFeeRuleDto;
 import com.java110.dto.tempCarFeeConfig.TempCarFeeRuleSpecDto;
 import com.java110.fee.dao.ITempCarFeeConfigServiceDao;
+import com.java110.intf.fee.IComputeTempCarFee;
 import com.java110.intf.fee.ITempCarFeeConfigAttrInnerServiceSMO;
 import com.java110.intf.fee.ITempCarFeeConfigInnerServiceSMO;
+import com.java110.utils.factory.ApplicationContextFactory;
 import com.java110.utils.util.BeanConvertUtil;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RestController;
@@ -28,6 +34,7 @@ import java.util.List;
  **/
 @RestController
 public class TempCarFeeConfigInnerServiceSMOImpl extends BaseServiceSMO implements ITempCarFeeConfigInnerServiceSMO {
+    private static Logger logger = LoggerFactory.getLogger(TempCarFeeConfigInnerServiceSMOImpl.class);
 
     @Autowired
     private ITempCarFeeConfigServiceDao tempCarFeeConfigServiceDaoImpl;
@@ -101,6 +108,37 @@ public class TempCarFeeConfigInnerServiceSMOImpl extends BaseServiceSMO implemen
         return tempCarFeeRuleDtos;
     }
 
+    @Override
+    public List<CarInoutDto> computeTempCarFee(@RequestBody List<CarInoutDto> carInoutDtos) {
+        TempCarFeeConfigDto tempCarFeeConfigDto = new TempCarFeeConfigDto();
+        tempCarFeeConfigDto.setPaId(carInoutDtos.get(0).getPaId());
+        tempCarFeeConfigDto.setCommunityId(carInoutDtos.get(0).getCommunityId());
+        List<TempCarFeeConfigDto> tempCarFeeConfigDtos = queryTempCarFeeConfigs(tempCarFeeConfigDto);
+
+        if (tempCarFeeConfigDtos == null || tempCarFeeConfigDtos.size() < 1) {
+            return carInoutDtos;
+        }
+        TempCarFeeConfigAttrDto tempCarFeeConfigAttrDto = new TempCarFeeConfigAttrDto();
+        tempCarFeeConfigAttrDto.setConfigId(tempCarFeeConfigDto.getConfigId());
+        tempCarFeeConfigAttrDto.setCommunityId(tempCarFeeConfigDto.getCommunityId());
+
+        List<TempCarFeeConfigAttrDto> tempCarFeeConfigAttrDtos = tempCarFeeConfigAttrInnerServiceSMOImpl.queryTempCarFeeConfigAttrs(tempCarFeeConfigAttrDto);
+        long time = 0;
+        for (CarInoutDto carInoutDto : carInoutDtos) {
+            try {
+                IComputeTempCarFee computeTempCarFee = ApplicationContextFactory.getBean(tempCarFeeConfigDtos.get(0).getRuleId(), IComputeTempCarFee.class);
+                TempCarFeeResult result = computeTempCarFee.computeTempCarFee(carInoutDtos.get(0), tempCarFeeConfigDtos.get(0), tempCarFeeConfigAttrDtos);
+                carInoutDto.setMin(result.getMin());
+                carInoutDto.setHours(result.getHours());
+                carInoutDto.setPayCharge(result.getPayCharge() + "");
+            } catch (Exception e) {
+                logger.error("临时车算费失败", e);
+            }
+        }
+
+        return carInoutDtos;
+    }
+
     private void freshRuleSpecs(List<TempCarFeeRuleDto> tempCarFeeRuleDtos) {
         if (tempCarFeeRuleDtos == null || tempCarFeeRuleDtos.size() < 1) {
             return;