From 05683f2b2bdbdbe21cf17ad523c21ab338bd1c54 Mon Sep 17 00:00:00 2001
From: wuxw <928255095@qq.com>
Date: 星期二, 19 七月 2022 21:49:55 +0800
Subject: [PATCH] 优化添加设备 功能

---
 service-fee/src/main/java/com/java110/fee/smo/impl/TempCarFeeConfigInnerServiceSMOImpl.java |  122 ++++++++++++++++++++++++++++++++++++++--
 1 files changed, 115 insertions(+), 7 deletions(-)

diff --git a/service-fee/src/main/java/com/java110/fee/smo/impl/TempCarFeeConfigInnerServiceSMOImpl.java b/service-fee/src/main/java/com/java110/fee/smo/impl/TempCarFeeConfigInnerServiceSMOImpl.java
old mode 100644
new mode 100755
index 0bf72b3..5372462
--- a/service-fee/src/main/java/com/java110/fee/smo/impl/TempCarFeeConfigInnerServiceSMOImpl.java
+++ b/service-fee/src/main/java/com/java110/fee/smo/impl/TempCarFeeConfigInnerServiceSMOImpl.java
@@ -3,18 +3,28 @@
 
 import com.java110.core.base.smo.BaseServiceSMO;
 import com.java110.dto.PageDto;
+import com.java110.dto.fee.TempCarFeeResult;
+import com.java110.dto.machine.CarInoutDetailDto;
+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.dto.user.UserDto;
 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 com.java110.utils.util.DateUtil;
+import org.slf4j.Logger;
+import com.java110.core.log.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RestController;
 
 import java.util.ArrayList;
+import java.util.Date;
 import java.util.List;
 
 /**
@@ -27,9 +37,13 @@
  **/
 @RestController
 public class TempCarFeeConfigInnerServiceSMOImpl extends BaseServiceSMO implements ITempCarFeeConfigInnerServiceSMO {
+    private static Logger logger = LoggerFactory.getLogger(TempCarFeeConfigInnerServiceSMOImpl.class);
 
     @Autowired
     private ITempCarFeeConfigServiceDao tempCarFeeConfigServiceDaoImpl;
+
+    @Autowired
+    private ITempCarFeeConfigAttrInnerServiceSMO tempCarFeeConfigAttrInnerServiceSMOImpl;
 
 
     @Override
@@ -45,20 +59,42 @@
 
         List<TempCarFeeConfigDto> tempCarFeeConfigs = BeanConvertUtil.covertBeanList(tempCarFeeConfigServiceDaoImpl.getTempCarFeeConfigInfo(BeanConvertUtil.beanCovertMap(tempCarFeeConfigDto)), TempCarFeeConfigDto.class);
 
+        refreshTempCarFeeConfig(tempCarFeeConfigs);
+
         return tempCarFeeConfigs;
     }
 
     /**
      * 浠庣敤鎴峰垪琛ㄤ腑鏌ヨ鐢ㄦ埛锛屽皢鐢ㄦ埛涓殑淇℃伅 鍒锋柊鍒� floor瀵硅薄涓�
      *
-     * @param tempCarFeeConfig 灏忓尯涓存椂杞︽敹璐规爣鍑嗕俊鎭�
-     * @param users            鐢ㄦ埛鍒楄〃
+     * @param tempCarFeeConfigs 灏忓尯涓存椂杞︽敹璐规爣鍑嗕俊鎭�
      */
-    private void refreshTempCarFeeConfig(TempCarFeeConfigDto tempCarFeeConfig, List<UserDto> users) {
-        for (UserDto user : users) {
-            if (tempCarFeeConfig.getConfigId().equals(user.getUserId())) {
-                BeanConvertUtil.covertBean(user, tempCarFeeConfig);
+    private void refreshTempCarFeeConfig(List<TempCarFeeConfigDto> tempCarFeeConfigs) {
+        if (tempCarFeeConfigs == null || tempCarFeeConfigs.size() < 1) {
+            return;
+        }
+        List<String> configIds = new ArrayList<>();
+        for (TempCarFeeConfigDto tempCarFeeConfigDto : tempCarFeeConfigs) {
+            configIds.add(tempCarFeeConfigDto.getConfigId());
+        }
+
+        TempCarFeeConfigAttrDto tempCarFeeConfigAttrDto = new TempCarFeeConfigAttrDto();
+        tempCarFeeConfigAttrDto.setConfigIds(configIds.toArray(new String[configIds.size()]));
+        tempCarFeeConfigAttrDto.setCommunityId(tempCarFeeConfigs.get(0).getCommunityId());
+        List<TempCarFeeConfigAttrDto> tempCarFeeConfigAttrDtos = tempCarFeeConfigAttrInnerServiceSMOImpl.queryTempCarFeeConfigAttrs(tempCarFeeConfigAttrDto);
+
+        if (tempCarFeeConfigAttrDtos == null || tempCarFeeConfigAttrDtos.size() < 1) {
+            return;
+        }
+        List<TempCarFeeConfigAttrDto> tempCarFeeConfigAttrDtoList = null;
+        for (TempCarFeeConfigDto tempCarFeeConfigDto : tempCarFeeConfigs) {
+            tempCarFeeConfigAttrDtoList = new ArrayList<>();
+            for (TempCarFeeConfigAttrDto tCarFeeConfigAttrDto : tempCarFeeConfigAttrDtos) {
+                if (tempCarFeeConfigDto.getConfigId().equals(tCarFeeConfigAttrDto.getConfigId())) {
+                    tempCarFeeConfigAttrDtoList.add(tCarFeeConfigAttrDto);
+                }
             }
+            tempCarFeeConfigDto.setTempCarFeeConfigAttrs(tempCarFeeConfigAttrDtoList);
         }
     }
 
@@ -75,6 +111,78 @@
         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);
+        IComputeTempCarFee computeTempCarFee = ApplicationContextFactory.getBean(tempCarFeeConfigDtos.get(0).getRuleId(), IComputeTempCarFee.class);
+        for (CarInoutDto carInoutDto : carInoutDtos) {
+            try {
+                TempCarFeeResult result = computeTempCarFee.computeTempCarFee(carInoutDto, tempCarFeeConfigDtos.get(0), tempCarFeeConfigAttrDtos);
+                carInoutDto.setMin(result.getMin());
+                carInoutDto.setHours(result.getHours());
+                carInoutDto.setPayCharge(result.getPayCharge() + "");
+            } catch (Exception e) {
+                logger.error("涓存椂杞︾畻璐瑰け璐�", e);
+            }
+        }
+
+        return carInoutDtos;
+    }
+
+    @Override
+    public List<CarInoutDetailDto> computeTempCarInoutDetailFee(@RequestBody List<CarInoutDetailDto> 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);
+        IComputeTempCarFee computeTempCarFee = ApplicationContextFactory.getBean(tempCarFeeConfigDtos.get(0).getRuleId(), IComputeTempCarFee.class);
+        for (CarInoutDetailDto carInoutDto : carInoutDtos) {
+            try {
+                if (CarInoutDetailDto.CAR_INOUT_IN.equals(carInoutDto.getCarInout())) {
+                    TempCarFeeResult result = computeTempCarFee.computeTempCarFee(carInoutDto, tempCarFeeConfigDtos.get(0), tempCarFeeConfigAttrDtos);
+                    carInoutDto.setMin(result.getMin());
+                    carInoutDto.setHours(result.getHours());
+                    carInoutDto.setPayCharge(result.getPayCharge() + "");
+                } else {
+                    //鑾峰彇鍋滆溅鏃堕棿
+                    Date stateDate = DateUtil.getDateFromString(carInoutDto.getInTime(), DateUtil.DATE_FORMATE_STRING_A);
+                    Date endDate = DateUtil.getDateFromString(carInoutDto.getOutTime(), DateUtil.DATE_FORMATE_STRING_A);
+                    long min = (endDate.getTime() - stateDate.getTime()) / (60 * 1000);
+                    long hours = min / 60; //鍥犱负涓よ�呴兘鏄暣鏁帮紝浣犲緱鍒颁竴涓猧nt
+                    long minutes = min % 60;
+                    carInoutDto.setMin(minutes);
+                    carInoutDto.setHours(hours);
+                    carInoutDto.setPayCharge(carInoutDto.getRealCharge());
+                }
+            } catch (Exception e) {
+                logger.error("涓存椂杞︾畻璐瑰け璐�", e);
+            }
+        }
+
+        return carInoutDtos;
+    }
+
     private void freshRuleSpecs(List<TempCarFeeRuleDto> tempCarFeeRuleDtos) {
         if (tempCarFeeRuleDtos == null || tempCarFeeRuleDtos.size() < 1) {
             return;

--
Gitblit v1.8.0