From 88419bc51de62ffe6640a4c9d48489cdbddc46a8 Mon Sep 17 00:00:00 2001
From: jiangping <jp@doumee.com>
Date: 星期四, 19 十二月 2024 19:46:00 +0800
Subject: [PATCH] 最新版本541200007

---
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/thrid/BoardServiceImpl.java |  364 +++++++++++++++++++++++++++++++++++++++++++++++++---
 1 files changed, 343 insertions(+), 21 deletions(-)

diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/thrid/BoardServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/thrid/BoardServiceImpl.java
index 19ca4b2..4fdc968 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/thrid/BoardServiceImpl.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/thrid/BoardServiceImpl.java
@@ -14,9 +14,12 @@
 import com.doumee.core.haikang.model.param.respose.*;
 import com.doumee.core.haikang.service.HKCarOpenService;
 import com.doumee.core.haikang.service.HKService;
-import com.doumee.core.model.ApiResponse;
-import com.doumee.core.model.PageData;
-import com.doumee.core.model.PageWrap;
+import com.doumee.core.tms.model.request.TmsFacrotyCodeListRequest;
+import com.doumee.core.tms.model.request.TmsOutQtyAndVehicleQtyRequest;
+import com.doumee.core.tms.model.response.TmsDistributionOfDeliveryLocResponse;
+import com.doumee.core.tms.model.response.TmsInventoryListResponse;
+import com.doumee.core.tms.model.response.TmsOutQtyAndVehicleQtyResponse;
+import com.doumee.core.tms.model.response.TmsTotalAndReportVehicleQtyResponse;
 import com.doumee.core.utils.Constants;
 import com.doumee.core.utils.DateUtil;
 import com.doumee.core.utils.Utils;
@@ -30,8 +33,8 @@
 import com.doumee.dao.web.reqeust.CarsJobAndContractDTO;
 import com.doumee.dao.web.response.platformReport.*;
 import com.doumee.service.business.impl.PlatformJobServiceImpl;
-import com.doumee.service.business.impl.VisitsServiceImpl;
 import com.doumee.service.business.third.BoardService;
+import com.doumee.service.business.third.TmsService;
 import com.doumee.service.business.third.WmsService;
 import com.github.xiaoymin.knife4j.core.util.CollectionUtils;
 import com.github.yulichang.wrapper.MPJLambdaWrapper;
@@ -40,9 +43,7 @@
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
-import org.springframework.web.bind.annotation.RequestBody;
 
-import javax.servlet.http.HttpServletResponse;
 import java.math.BigDecimal;
 import java.util.*;
 import java.util.stream.Collectors;
@@ -66,6 +67,8 @@
     @Autowired
     private SystemDictDataBiz systemDictDataBiz;
     @Autowired
+    private TmsFactoryParamMapper tmsFactoryParamMapper;
+    @Autowired
     private PlatformWarnEventJoinMapper platformWarnEventJoinMapper;
     @Autowired
     private PlatformJobMapper platformJobMapper;
@@ -83,6 +86,8 @@
     private RetentionMapper retentionMapper;
     @Autowired
     private PlatformGroupMapper platformGroupMapper;
+    @Autowired
+    private TmsService tmsService;
     /**
      * 鑾峰彇鍖哄煙鏍戝舰缁撴瀯鏁版嵁
      * @return
@@ -581,7 +586,7 @@
         param.setPage(1);
         param.setUserId("admin");
 //        param.setRegionIndexCodes("root000000");
-        param.setAlarmStartTime(DateUtil.getPlusTime2(DateUtil.addDaysToDate(new Date(),-1)));
+        param.setAlarmStartTime(DateUtil.getFomartDate(new Date(),"yyyy-MM-dd") + " 00:00:00");
         param.setAlarmEndTime(DateUtil.getPlusTime2(new Date()));
         param.setPageSize(20);
         BaseResponse<BaseListPageResponse<FindHomeAlarmInfoPageResponse>> response = HKService.findHomeAlarmInfoPage(param);
@@ -608,9 +613,14 @@
         MinitorDataSearchRequest param = new MinitorDataSearchRequest();
         param.setResourceTypeCodes(new String[]{});
         param.setRegionIndexCode("root000000");
+        param.setResourceTypeCodes("60,61".split(","));
         param.setIncludeDown("1");
         param.setUserId("admin");
+        param.setPageNo(1);
+        param.setPageSize(100);
         BaseResponse<BaseListPageResponse<MonitorDataSearchResponse>> response = HKService.minitorDataSearch(param);
+        String pressure = systemDictDataBiz.queryByCode(Constants.WMS_PARAM,Constants.WMS_PRESSURE_LEVEL).getCode();
+        String liquid = systemDictDataBiz.queryByCode(Constants.WMS_PARAM,Constants.WMS_LIQUID_LEVEL).getCode();
         if(response != null && StringUtils.equals(response.getCode(), HKConstants.RESPONSE_SUCCEE)
                 && response.getData()!=null ) {
             List<MonitorDataSearchResponse> r = response.getData().getList();
@@ -618,17 +628,37 @@
                 for(MonitorDataSearchResponse model : r){
                     MonitorDataVO m = new MonitorDataVO();
                     m.setName(model.getName());
+                    m.setLevel(Constants.equalsInteger(model.getType(),60)?liquid:pressure);
                     m.setDataList(new ArrayList<>());
                     if(model.getValues()!=null){
+                        List<MonitorDataInfoVO> dataList = new ArrayList<>();
                         for(MonitorDataValResponse v : model.getValues()){
-                            MonitorDataInfoVO vm = new MonitorDataInfoVO();
-                            vm.setValue(v.getMonitorValue());
-                            vm.setCateName(v.getMonitorSpecificName());
-                            vm.setCateCode(v.getMonitorTypeKey());
-                            vm.setTypeCode(v.getMonitorTypeCode());
-                            vm.setTypeName(v.getMonitorTypeName());
+                            if(Constants.equalsInteger(model.getType(),60)){
+                                if(v.getMonitorTypeCode().equals("254001")){
+                                    MonitorDataInfoVO vm = new MonitorDataInfoVO();
+                                    vm.setValue(v.getMonitorValue());
+                                    vm.setCateName(v.getMonitorSpecificName());
+                                    vm.setCateCode(v.getMonitorTypeKey());
+                                    vm.setTypeCode(v.getMonitorTypeCode());
+                                    vm.setTypeName(v.getMonitorTypeName());
+                                    dataList.add(vm);
+                                }
+                            }else{
+                                if(v.getMonitorTypeCode().equals("253958")){
+                                    MonitorDataInfoVO vm = new MonitorDataInfoVO();
+                                    vm.setValue(v.getMonitorValue());
+                                    vm.setCateName(v.getMonitorSpecificName());
+                                    vm.setCateCode(v.getMonitorTypeKey());
+                                    vm.setTypeCode(v.getMonitorTypeCode());
+                                    vm.setTypeName(v.getMonitorTypeName());
+                                    dataList.add(vm);
+                                }
+                            }
+
                         }
+                        m.setDataList(dataList);
                     }
+                    list.add(m);
                 }
             }
         }
@@ -1268,18 +1298,22 @@
         BigDecimal carbonWater = new BigDecimal(0);//鏈湀鐢ㄦ按
         BigDecimal carbonElec = new BigDecimal(0);//鐢ㄧ數
 
+        data.setYesterdayElectricity(getDefaultData());//鏄ㄦ棩鐢ㄧ數
         data.setTodayElectricity(getDefaultData());//浠婃棩鐢ㄧ數
         data.setElectricityQuantity(getDefaultData());//涓婃湀鐢ㄧ數
-        data.setWaterQuantity(getDefaultData());//涓婃湀鐢ㄦ按
-        data.setGasQuantity(getDefaultData());//涓婃湀鐢ㄦ皵
         data.setMonthElectricity(getDefaultData());//鏈湀鐢ㄧ數
-        data.setYesterdayElectricity(getDefaultData());//鏄ㄦ棩鐢ㄧ數
+
+
         getMonthElectricityData(data.getMonthElectricity());//閫氳繃瀹夐槻骞宠幏鍙栨湰鏈堢敤鐢甸噺鏁版嵁
         carbonElec = new BigDecimal(StringUtils.defaultString(data.getMonthElectricity().getTotal(), "0"));
 
         getLastMonthElectricityData(data.getElectricityQuantity());//閫氳繃瀹夐槻骞宠幏鍙栦笂鏈堢敤鐢甸噺鏁版嵁
-        getCurrentDateElectircityData(data.getTodayElectricity(),0);//閫氳繃瀹夐槻骞宠幏鍙栦粖鏃ョ敤鐢甸噺鏁版嵁
         getCurrentDateElectircityData(data.getYesterdayElectricity(),-1);//閫氳繃瀹夐槻骞宠幏鍙栨槰鏃ョ敤鐢甸噺鏁版嵁
+        getCurrentDateElectircityData(data.getTodayElectricity(),0);//閫氳繃瀹夐槻骞宠幏鍙栦粖鏃ョ敤鐢甸噺鏁版嵁
+
+        data.setWaterQuantity(getDefaultData());//涓婃湀鐢ㄦ按
+        data.setGasQuantity(getDefaultData());//涓婃湀鐢ㄦ皵
+        carbonElec = new BigDecimal(StringUtils.defaultString(data.getMonthElectricity().getTotal(), "0"));
         String firstDate = DateUtil.getFirstDayCurrentMonth() +" 00:00:00";
         Date month0 = DateUtil.getDateFromString(firstDate);
         Date month1 = DateUtil.increaseMonth(month0,-1);//涓婃湀
@@ -1369,12 +1403,62 @@
      */
     private void getLastMonthElectricityData(EnergyModelDataVO data) {
          BaseResponse<LastMonthFeeByMeterTypeResponse> response = HKService.lastMonthFeeByMeterType("1");
-        if(response != null && StringUtils.equals(response.getCode(), HKConstants.RESPONSE_SUCCEE) && response.getData()!=null ){
-           data.setRingRate(StringUtils.defaultString(response.getData().getRingPercent(),"0"));
-           data.setSameRate(StringUtils.defaultString(response.getData().getSamePercent(),"0"));
-           data.setTotal(StringUtils.defaultString(response.getData().getValue(),"0"));
+//        if(response != null && StringUtils.equals(response.getCode(), HKConstants.RESPONSE_SUCCEE) && response.getData()!=null ){
+//           data.setRingRate(StringUtils.defaultString(response.getData().getRingPercent(),"0"));
+//           data.setSameRate(StringUtils.defaultString(response.getData().getSamePercent(),"0"));
+//           data.setTotal(StringUtils.defaultString(response.getData().getValue(),"0"));
+//        }
+//        String nowMonth = DateUtil.getFomartDate(new Date(),"yyyy-MM-dd");
+//        //涓婃湀鏃ユ湡
+//        DateUtil.getBeforMonthStr(new Date(),1);
+//        //涓婁笂鏈堟棩鏈�
+//        DateUtil.getBeforMonthStr(new Date(),2);
+//        //涓婂勾鏃ユ湡
+//        DateUtil.getBeforMonthStr(new Date(),13);
+
+        EnergyTotalDataRequest param = new EnergyTotalDataRequest();
+        param.setPeriodType("month");
+        param.setDate(DateUtil.getBeforMonthStr(new Date(),1).substring(0,7));
+        BaseResponse<EnergyTotalDataResponse> beforMonthResponse = HKService.energyTotal(param);
+        if(beforMonthResponse != null && StringUtils.equals(beforMonthResponse.getCode(), HKConstants.RESPONSE_SUCCEE) && beforMonthResponse.getData()!=null ){
+            data.setTotal(beforMonthResponse.getData().getElectricity());
+            data.setTotalNum(new BigDecimal(beforMonthResponse.getData().getElectricity()));
+        }
+        param.setDate(DateUtil.getBeforMonthStr(new Date(),2).substring(0,7));
+        BaseResponse<EnergyTotalDataResponse> beforBeforMonthResponse = HKService.energyTotal(param);
+        if(beforBeforMonthResponse != null && StringUtils.equals(beforBeforMonthResponse.getCode(), HKConstants.RESPONSE_SUCCEE) && beforBeforMonthResponse.getData()!=null ){
+            if(Objects.nonNull(beforBeforMonthResponse.getData()) && StringUtils.isNotBlank(beforBeforMonthResponse.getData().getElectricity())){
+                data.setRingNum(new BigDecimal(beforBeforMonthResponse.getData().getElectricity()));
+            }else{
+                data.setRingNum(BigDecimal.ZERO);
+            }
+            if(Objects.isNull(data.getTotal()) || Objects.isNull(data.getRingNum())
+                    || data.getTotalNum().compareTo(BigDecimal.ZERO) ==0  || data.getRingNum().compareTo(BigDecimal.ZERO) ==0 ){
+               data.setRingRate("0");
+            }else{
+               data.setRingRate(new BigDecimal(data.getTotal()).divide(data.getRingNum(),2,BigDecimal.ROUND_HALF_UP).toString());
+            }
+        }
+        param.setDate(DateUtil.getBeforMonthStr(new Date(),13).substring(0,7));
+        BaseResponse<EnergyTotalDataResponse> beforYearMonthResponse = HKService.energyTotal(param);
+        if(beforYearMonthResponse != null && StringUtils.equals(beforYearMonthResponse.getCode(), HKConstants.RESPONSE_SUCCEE) && beforBeforMonthResponse.getData()!=null ){
+            if(Objects.nonNull(beforYearMonthResponse.getData()) && StringUtils.isNotBlank(beforYearMonthResponse.getData().getElectricity())){
+                data.setSameNum(new BigDecimal(beforYearMonthResponse.getData().getElectricity()));
+            }else{
+                data.setSameNum(BigDecimal.ZERO);
+            }
+            if(Objects.isNull(data.getTotal()) || Objects.isNull(data.getSameNum())
+                    || data.getTotalNum().compareTo(BigDecimal.ZERO) ==0  || data.getSameNum().compareTo(BigDecimal.ZERO) ==0 ){
+                data.setSameRate("0");
+            }else{
+                data.setSameRate(new BigDecimal(data.getTotal()).divide(data.getSameNum(),2,BigDecimal.ROUND_HALF_UP).toString());
+            }
         }
     }
+
+
+
+
 
     /**
      * 閫氳繃瀹夐槻骞宠幏鍙栦粖鏃ョ敤鐢甸噺
@@ -1668,18 +1752,21 @@
         if(platformList!=null && platformList.size()>0){
             List<PlatformJob> jobList = platformJobMapper.selectJoinList(PlatformJob.class, new MPJLambdaWrapper<PlatformJob>()
                     .selectAll( PlatformJob.class)
+//                    .selectAs(Platform::getCode,PlatformJob::getPlatformCode)
                     .select("( select pl.CREATE_DATE from platform_log pl where t.id = pl.obj_id and pl.OBJ_TYPE = "+Constants.PlatformJobLogType.WORKING.getKey()+"  order by pl.CREATE_DATE desc  limit 1  ) as newStartDate")
                     //.select(" (  select sum(ifnull(pl.IO_QTY , 0 ))   from platform_wms_detail pl  where   pl.job_id = t.id and pl.isdeleted=0 )",PlatformJob::getWorkNum)
                     .select(" (  case when t.total_num is null  then ( select sum(pwd.IO_QTY) from platform_wms_detail pwd where pwd.JOB_ID = t.id  ) else t.total_num end )",PlatformJob::getWorkNum)
                     .apply("to_days(t.create_date) = to_days(now())")
                     .eq(Platform::getIsdeleted, Constants.ZERO)
                     .in(PlatformJob ::getStatus,new Integer[]{Constants.PlatformJobStatus.WORKING.getKey(),Constants.PlatformJobStatus.CALLED.getKey() })
+//                    .leftJoin(Platform.class,Platform::getId,PlatformJob::getPlatformId)
                     .orderByDesc(PlatformJob::getStatus ));
             //鏈堝彴鐘舵�侊細0=浣滀笟涓紱1=绌洪棽涓紱2=浣滀笟瓒呮椂;3=鍙彿
             for(Platform model : platformList){
                 PlatformWorkDataVO platformDurationVO = new PlatformWorkDataVO();
                 platformDurationVO.setPlatformName(model.getName());
                 platformDurationVO.setPlatformId(model.getId());
+                platformDurationVO.setPlatformCode(model.getCode());
                 platformDurationVO.setPlatformSort(model.getSortnum());
                 PlatformJob job = getJobFromListById(model.getId(),jobList);
                 if(job != null){
@@ -1954,7 +2041,242 @@
             return null;
         }
     }
+    /**
+     * 鍑哄簱鑳藉姏鏉庢案鍒�
+     * @return
+     */
+    @Override
+    public WholeProvinceZXTVO outAbilityUseRate(){
+        WholeProvinceZXTVO result = new WholeProvinceZXTVO();
+        result.setCurrentNum(new BigDecimal(0));
+        result.setTotalNum(new BigDecimal(0));
+        result.setUseRate(new BigDecimal(0));
+        result.setDetailList(new ArrayList<>());
+        List<TmsFactoryParam> paramList = factoryList();
+        List<WholeProvinceZxtDetailVO> list = new ArrayList<>();
+        TmsOutQtyAndVehicleQtyRequest param = new TmsOutQtyAndVehicleQtyRequest();
+        if(paramList!=null){
+            String startDate = DateUtil.formatDate(new Date(),"yyyy-MM-dd");
+            String endDate = DateUtil.formatDate(new Date(),"yyyy-MM-dd");
+            for(TmsFactoryParam p : paramList){
+                WholeProvinceZxtDetailVO t = new WholeProvinceZxtDetailVO();
+                t.setFactoryName(p.getName());
+                t.setCurrentNum(new BigDecimal(0));
+                t.setUseRate(new BigDecimal(0));
+                t.setTotalNum(Constants.formatBigdecimal(p.getNum2()));//鎬诲嚭搴撹兘鍔�
+                if(StringUtils.isBlank(p.getCode())){
+                    param.setFacrotyCodeList(new ArrayList<>());
+                    param.setDateStart(startDate);
+                    param.setDateEnd(endDate);
+                    param.getFacrotyCodeList().add(p.getCode());
+                    List<TmsOutQtyAndVehicleQtyResponse> response = tmsService.getOutQtyAndVehicleQty(param);//鏌ヨ鍑哄簱閲�
+                    t.setCurrentNum(getCurrentOutQryByList(response));
+                    if(t.getTotalNum().compareTo(new BigDecimal(0)) !=0){
+                        t.setUseRate(t.getCurrentNum().divide(t.getTotalNum(),4,BigDecimal.ROUND_HALF_UP));
+                    }
+                }
+                result.getDetailList().add(t);
+                result.setCurrentNum(result.getCurrentNum().add(t.getCurrentNum()));
+                result.setTotalNum(result.getTotalNum().add(t.getTotalNum()));
+            }
+        }
+        if(result.getTotalNum().compareTo(new BigDecimal(0)) !=0){
+            result.setUseRate(result.getCurrentNum().divide(result.getTotalNum(),4,BigDecimal.ROUND_HALF_UP));
+        }
+        return result;
+    }
+    /**
+     * 鍑哄簱鑳藉姏鏉庢案鍒�
+     * @return
+     */
+    @Override
+    public    TotalOutQtyNumVO totalOutQtyNum(){
+        TotalOutQtyNumVO  data = new TotalOutQtyNumVO();
+        data.setCurrentInYearNum(new BigDecimal(0));
+        data.setCurrentInWeekNum(new BigDecimal(0));
+        data.setCurrentInMonthNum(new BigDecimal(0));
+        data.setLastInYearNum(new BigDecimal(0));
+        data.setLastInMonthNum(new BigDecimal(0));
+        data.setLastInWeekNum(new BigDecimal(0));
+        data.setSameInMonthNum(new BigDecimal(0));
+        //---------鐪佸----------------
+        data.setCurrentOutYearNum(new BigDecimal(0));
+        data.setCurrentOutWeekNum(new BigDecimal(0));
+        data.setCurrentOutMonthNum(new BigDecimal(0));
+        data.setLastOutYearNum(new BigDecimal(0));
+        data.setLastOutMonthNum(new BigDecimal(0));
+        data.setLastOutWeekNum(new BigDecimal(0));
+        data.setSameOutMonthNum(new BigDecimal(0));
 
+        return data;
+    }
+    /**
+     * 鍑哄簱鑳藉姏鏉庢案鍒�
+     * @return
+     */
+    @Override
+    public    List<WholeProvinceMapVO> mapYearAndMonthOutList(){
+        List<WholeProvinceMapVO> result = new ArrayList<>();
+        List<TmsFactoryParam> paramList =factoryList();
+        if(paramList!=null && paramList.size()>0){
+            List<String> codes = new ArrayList<>();
+            for(TmsFactoryParam p : paramList){
+                if(StringUtils.isBlank(p.getCode())){
+                    continue;
+                }
+                codes.add(p.getCode());
+            }
+            if(codes.size()>0){
+                TmsFacrotyCodeListRequest param = new TmsFacrotyCodeListRequest();
+                param.setFacrotyCodeList(codes);
+                List<TmsDistributionOfDeliveryLocResponse> response  = tmsService.getDistributionOfDeliveryLocations(param);//鏌ヨ鍑哄簱閲�
+                if(response!=null &&response.size()>0){
+                    for(TmsDistributionOfDeliveryLocResponse model : response){
+                        WholeProvinceMapVO tt = getFromProvinceResultList(model ,result);
+                        if(tt == null){
+                            tt =new WholeProvinceMapVO();
+                            tt.setMonthNum( Constants.formatBigdecimal0Float(model.getMonthOutboundQuantity()));
+                            tt.setYearNum( Constants.formatBigdecimal0Float(model.getYearOutboundQuantity()));
+                            tt.setProvinceCode(model.getFromProvinceCode());
+                            tt.setProvinceName(model.getFromProvinceName());
+                            result.add(tt);
+                        }
+                    }
+                }
+            }
+
+        }
+        return result;
+    }
+
+    private WholeProvinceMapVO getFromProvinceResultList(TmsDistributionOfDeliveryLocResponse model, List<WholeProvinceMapVO> result) {
+        for(WholeProvinceMapVO t : result){
+            if(StringUtils.equals(t.getProvinceCode(), model.getFromProvinceCode())){
+                t.setMonthNum(Constants.formatBigdecimal(t.getMonthNum()).add(Constants.formatBigdecimal0Float(model.getMonthOutboundQuantity())));
+                t.setYearNum(Constants.formatBigdecimal(t.getYearNum()).add(Constants.formatBigdecimal0Float(model.getYearOutboundQuantity())));
+                return   t;
+            }
+        }
+
+        return  null;
+    }
+
+    /**
+     * 鍑哄簱鑳藉姏鏉庢案鍒�
+     * @return
+     */
+    @Override
+    public     List<TmsFactoryParam> factoryList(){
+        List<TmsFactoryParam> paramList = tmsFactoryParamMapper.selectList(new QueryWrapper<TmsFactoryParam>().lambda()
+                .eq(TmsFactoryParam::getIsdeleted,Constants.ZERO)
+                .orderByAsc(TmsFactoryParam::getSortnum));
+        return paramList;
+    }
+    /**
+     * 鍑哄簱鑳藉姏鏉庢案鍒�
+     * @return
+     */
+    @Override
+    public WholeProvinceZXTVO tranportAbilityUseRate(){
+        WholeProvinceZXTVO result = new WholeProvinceZXTVO();
+        result.setCurrentNum(new BigDecimal(0));
+        result.setTotalNum(new BigDecimal(0));
+        result.setUseRate(new BigDecimal(0));
+        result.setDetailList(new ArrayList<>());
+        List<TmsFactoryParam> paramList =factoryList();
+        if(paramList!=null){
+            List<TmsTotalAndReportVehicleQtyResponse> response = tmsService.getTotalAndReportVehicleQty();//鏌ヨ鍑哄簱閲�
+            for(TmsFactoryParam p : paramList){
+                WholeProvinceZxtDetailVO t = new WholeProvinceZxtDetailVO();
+                t.setFactoryName(p.getName());
+                t.setCurrentNum(new BigDecimal(0));
+                t.setTotalNum(Constants.formatBigdecimal(p.getNum1()));//鎬诲簱瀛橀噺
+                getFromReportVehicleQtyList(p.getCode(),t,response);//澶勭悊鎻愭姤杩愬姏鍜屾�昏繍鍔涙暟鎹�
+                t.setUseRate(new BigDecimal(0));
+                if(t.getTotalNum().compareTo(new BigDecimal(0)) !=0){
+                    t.setUseRate(t.getCurrentNum().divide(t.getTotalNum(),4,BigDecimal.ROUND_HALF_UP));
+                }
+                result.getDetailList().add(t);
+                result.setCurrentNum(result.getCurrentNum().add(t.getCurrentNum()));
+                result.setTotalNum(result.getTotalNum().add(t.getTotalNum()));
+            }
+        }
+        if(result.getTotalNum().compareTo(new BigDecimal(0)) !=0){
+            result.setUseRate(result.getCurrentNum().divide(result.getTotalNum(),4,BigDecimal.ROUND_HALF_UP));
+        }
+        return result;
+    }
+    private void getFromReportVehicleQtyList(String code,WholeProvinceZxtDetailVO t, List<TmsTotalAndReportVehicleQtyResponse> responses) {
+        BigDecimal current = new BigDecimal(0);
+        BigDecimal total= new BigDecimal(0);
+        if(responses!=null && responses.size()>0){
+            for(TmsTotalAndReportVehicleQtyResponse model: responses){
+                if(StringUtils.equals(model.getFactoryCode(),code)){
+                    total = total.add(Constants.formatBigdecimal(model.getTotalQty()));
+                    current = current.add(Constants.formatBigdecimal(model.getReportQty()));
+                }
+            }
+        }
+        t.setCurrentNum(current);
+        t.setTotalNum(total);
+    }
+    private BigDecimal getCurrentOutQryByList(List<TmsOutQtyAndVehicleQtyResponse> response) {
+        BigDecimal r = new BigDecimal(0);
+        if(response!=null && response.size()>0){
+            for(TmsOutQtyAndVehicleQtyResponse model: response){
+                    r = r.add(Constants.formatBigdecimal(model.getTotalOutQty()));
+            }
+        }
+        return r ;
+    }
+
+    /**
+     * 浠撳簱璧勬簮鍒╃敤鐜�
+     * @return
+     */
+    @Override
+    public WholeProvinceZXTVO inventoryUseRate(){
+        WholeProvinceZXTVO result = new WholeProvinceZXTVO();
+        result.setCurrentNum(new BigDecimal(0));
+        result.setTotalNum(new BigDecimal(0));
+        result.setUseRate(new BigDecimal(0));
+        result.setDetailList(new ArrayList<>());
+        List<TmsFactoryParam> paramList = factoryList();
+        List<TmsInventoryListResponse> responses = tmsService.getRealTimeInventory();
+        if(paramList!=null){
+            for(TmsFactoryParam p : paramList){
+                WholeProvinceZxtDetailVO t = new WholeProvinceZxtDetailVO();
+                t.setFactoryName(p.getName());
+                t.setCurrentNum(new BigDecimal(0));
+                t.setTotalNum(Constants.formatBigdecimal(p.getNum1()));//鎬诲簱瀛橀噺
+                t.setCurrentNum(getFromInventoryList(p.getCode(),responses));
+                t.setUseRate(new BigDecimal(0));
+                if(t.getTotalNum().compareTo(new BigDecimal(0)) !=0){
+                    t.setUseRate(t.getCurrentNum().divide(t.getTotalNum(),4,BigDecimal.ROUND_HALF_UP));
+                }
+                result.getDetailList().add(t);
+                result.setCurrentNum(result.getCurrentNum().add(t.getCurrentNum()));
+                result.setTotalNum(result.getTotalNum().add(t.getTotalNum()));
+            }
+        }
+        if(result.getTotalNum().compareTo(new BigDecimal(0)) !=0){
+            result.setUseRate(result.getCurrentNum().divide(result.getTotalNum(),4,BigDecimal.ROUND_HALF_UP));
+        }
+        return result;
+    }
+
+    private BigDecimal getFromInventoryList(String code, List<TmsInventoryListResponse> responses) {
+        BigDecimal r = new BigDecimal(0);
+        if(responses!=null && responses.size()>0){
+            for(TmsInventoryListResponse model: responses){
+                if(StringUtils.equals(model.getFactoryCode(),code)){
+                   r = r.add(Constants.formatBigdecimal(model.getStockQty()));
+                }
+            }
+        }
+        return r ;
+
+    }
 
 
 }

--
Gitblit v1.9.3