jiangping
2024-12-20 9a68feaae561aee105a14430f86dc231c7c6c04b
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/thrid/BoardServiceImpl.java
@@ -1,5 +1,7 @@
package com.doumee.service.business.impl.thrid;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.TypeReference;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.doumee.biz.system.SystemDictDataBiz;
import com.doumee.core.constants.ResponseStatus;
@@ -14,12 +16,11 @@
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.tms.model.TMSContants;
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.tms.model.request.TmsSevenArrivalDetailsRequest;
import com.doumee.core.tms.model.response.*;
import com.doumee.core.utils.Constants;
import com.doumee.core.utils.DateUtil;
import com.doumee.core.utils.Utils;
@@ -42,6 +43,7 @@
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import java.math.BigDecimal;
@@ -88,6 +90,9 @@
    private PlatformGroupMapper platformGroupMapper;
    @Autowired
    private TmsService tmsService;
    @Value("${debug_model}")
    private Boolean isDebug;
    /**
     * 获取区域树形结构数据
     * @return
@@ -1042,7 +1047,7 @@
                    .isNotNull(PlatformLog::getParam3)
                    .ne(PlatformLog::getParam3,Constants.ZERO+""));
            if(platformLogList!=null && platformLogList.size()>0){
                return new BigDecimal((double)(platformLogList.stream().map(m->Long.valueOf(m.getParam3())).reduce(Long.valueOf(0),Long::sum))/(double)60);
                return new BigDecimal((double)(platformLogList.stream().map(m->Long.valueOf(m.getParam3())).reduce(Long.valueOf(0),Long::sum))/(double)3600);
            }
        }
        return r;
@@ -1861,6 +1866,9 @@
                curtotalNum += Constants.formatIntegerNum(workEfficiencyVO.getWorkNum()) ;
            }
            workEfficiencyVO.setTotalWorkNum(curtotalNum);//累计值
            if(System.currentTimeMillis() < curTime){
                workEfficiencyVO.setTotalWorkNum(0);
            }
            workEfficiencyVOList.add(workEfficiencyVO);
        }
        return workEfficiencyVOList;
@@ -2042,7 +2050,7 @@
        }
    }
    /**
     * 出库能力李永利
     * 出库能力
     * @return
     */
    @Override
@@ -2058,13 +2066,17 @@
        if(paramList!=null){
            String startDate = DateUtil.formatDate(new Date(),"yyyy-MM-dd");
            String endDate = DateUtil.formatDate(new Date(),"yyyy-MM-dd");
            if(isDebug){
                  startDate =  "2024-12-01";
                  endDate =   "2024-12-05";
            }
            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())){
                t.setTotalNum(Constants.formatBigdecimal(p.getParam3()));//8小时出库能力
                if(StringUtils.isNotBlank(p.getCode())){
                    param.setFacrotyCodeList(new ArrayList<>());
                    param.setDateStart(startDate);
                    param.setDateEnd(endDate);
@@ -2086,11 +2098,62 @@
        return result;
    }
    /**
     * 全身出库能力
     * @return
     */
    @Override
    public  WholeProvinceBoardVO centerProvinceData(String  factoryCode){
        WholeProvinceBoardVO data = new WholeProvinceBoardVO();
        data.setMaxAbility(new BigDecimal(0));
        data.setHoursAbility(new BigDecimal(0));
        List<TmsFactoryParam> paramList = factoryList();
        String code = null;
        if(paramList!=null){
            //处理最大出库能力和8小时出库能力
            for(TmsFactoryParam param : paramList){
                if(StringUtils.isNotBlank(factoryCode)){
                    if(StringUtils.equals(param.getCode(),factoryCode)){
                        data.setHoursAbility(data.getHoursAbility().add(Constants.formatBigdecimal(param.getParam3())));
                        data.setMaxAbility(data.getMaxAbility().add(Constants.formatBigdecimal(param.getNum2())));
                        code = param.getCode();
                        break;
                    }
                }else{
                    data.setHoursAbility(data.getHoursAbility().add(Constants.formatBigdecimal(param.getParam3())));
                    data.setMaxAbility(data.getMaxAbility().add(Constants.formatBigdecimal(param.getNum2())));
                }
            }
        }
        if(isDebug){
            data.setCurrentPlanNum(new BigDecimal(1220));
            data.setCurrentOrderNum(new BigDecimal(32340));
            data.setCrrentOutNum(new BigDecimal(3450));
            data.setCrrentRestNum(new BigDecimal(456450));
        }
        Date date = new Date();
        TmsOutQtyAndVehicleQtyRequest param = new TmsOutQtyAndVehicleQtyRequest();
        param.setDateEnd(DateUtil.getShortTime(date));
        param.setDateStart(DateUtil.getShortTime(date));
        if(StringUtils.isNotBlank(code)){
            param.setFacrotyCodeList(new ArrayList<>());
            param.getFacrotyCodeList().add(code);//查询指定厂区
        }
        List<TmsOutQtyAndVehicleQtyResponse> listSame=  tmsService.getOutQtyAndVehicleQty(param);//去年同期
        if(listSame!=null ){
            for(TmsOutQtyAndVehicleQtyResponse model : listSame){
                data.setCrrentOutNum(data.getCrrentOutNum().add(Constants.formatBigdecimal(model.getTotalOutQty())));//今日出库量
                data.setCrrentOutCarNum(data.getCrrentOutCarNum()+(Constants.formatIntegerNum(model.getVehicleQty())));//今日出库车次
            }
        }
        return  data;
    }
    /**
     * 出库能力李永利
     * @return
     */
    @Override
    public    TotalOutQtyNumVO totalOutQtyNum(int queryType){
    public    TotalOutQtyNumVO totalOutQtyNum(int type,String code){
        TotalOutQtyNumVO  data = new TotalOutQtyNumVO();
        data.setCurrentInNum(new BigDecimal(0));
        data.setLastInNum(new BigDecimal(0));
@@ -2100,6 +2163,68 @@
        data.setLastOutNum(new BigDecimal(0));
        data.setSameOutNum(new BigDecimal(0));
        Date sameStart = DateUtil.getBeginDayOfMonth(-1);
        Date sameEnd = DateUtil.getEndDayOfMonth(-1);
        Date curStart = DateUtil.getBeginDayOfMonth(0);
        Date curEnd = DateUtil.getEndDayOfMonth(0);
        Date lastStart = DateUtil.getBeginDayOfLastMonth();
        Date lastEnd = DateUtil.getEndDayOfLastMonth();
        if(type ==1){
            //本周
            sameStart= DateUtil.getBeginDayOfWeek(-1);
            sameEnd= DateUtil.getEndDayOfWeek(-1);
            curStart= DateUtil.getBeginDayOfWeek(0);
            curEnd= DateUtil.getEndDayOfWeek(0);
            lastStart = DateUtil.getBeginDayOfLastWeek();
            lastEnd= DateUtil.getEndDayOfLastWeek();
        }else if(type == 2){
            curStart= DateUtil.getBeginDayOfYear(0);
            curEnd= DateUtil.getEndDayOfYear(0);
            lastStart= DateUtil.getBeginDayOfYear(-1);
            lastEnd= DateUtil.getEndDayOfYear(-1);
            sameStart = null;
            sameEnd =null;
        }
        TmsOutQtyAndVehicleQtyRequest param = new TmsOutQtyAndVehicleQtyRequest();
        if(StringUtils.isNotBlank(code)){
            param.setFacrotyCodeList(new ArrayList<>());
            param.getFacrotyCodeList().add(code);
        }
        if(type !=2){
            //本年的不需要查去年同周期
            param.setDateEnd(DateUtil.getShortTime(sameEnd));
            param.setDateStart(DateUtil.getShortTime(sameStart));
            List<TmsOutQtyAndVehicleQtyResponse> listSame=  tmsService.getOutQtyAndVehicleQty(param);//去年同期
            if(listSame!=null ){
                for(TmsOutQtyAndVehicleQtyResponse model : listSame){
                    data.setSameOutNum(data.getSameOutNum().add(Constants.formatBigdecimal(model.getOutSideProvinceOutQty())));
                    data.setSameInNum(data.getSameInNum().add(Constants.formatBigdecimal(model.getInSideProvinceOutQty())));
                }
            }
        }
        param.setDateEnd(DateUtil.getShortTime(curEnd));
        param.setDateStart(DateUtil.getShortTime(curStart));
        List<TmsOutQtyAndVehicleQtyResponse> listCur =  tmsService.getOutQtyAndVehicleQty(param);//本周期
        if(listCur!=null ){
            for(TmsOutQtyAndVehicleQtyResponse model : listCur){
                data.setCurrentOutNum(data.getCurrentOutNum().add(Constants.formatBigdecimal(model.getOutSideProvinceOutQty())));
                data.setCurrentInNum(data.getCurrentInNum().add(Constants.formatBigdecimal(model.getInSideProvinceOutQty())));
                data.setTotalCarNum(data.getTotalCarNum()+Constants.formatIntegerNum(model.getVehicleQty()));//累计车次
            }
        }
        param.setDateEnd(DateUtil.getShortTime(lastEnd));
        param.setDateStart(DateUtil.getShortTime(lastStart));
        List<TmsOutQtyAndVehicleQtyResponse> listLast =  tmsService.getOutQtyAndVehicleQty(param);//上周期
        if(listCur!=null ){
            for(TmsOutQtyAndVehicleQtyResponse model : listLast){
                data.setLastOutNum(data.getLastOutNum().add(Constants.formatBigdecimal(model.getOutSideProvinceOutQty())));
                data.setLastInNum(data.getLastInNum().add(Constants.formatBigdecimal(model.getInSideProvinceOutQty())));
            }
        }
        if(type == 2){//本年的
            data.setSameOutNum(data.getLastOutNum());
            data.setSameInNum(data.getLastInNum());
        }
        return data;
    }
    /**
@@ -2107,20 +2232,13 @@
     * @return
     */
    @Override
    public    List<WholeProvinceMapVO> mapYearAndMonthOutList(){
    public    List<WholeProvinceMapVO> mapYearAndMonthOutList(String code){
        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);
        if(StringUtils.isNotBlank(code)){
            param.setFacrotyCodeList(new ArrayList<>());
            param.getFacrotyCodeList().add(code);
        }
                List<TmsDistributionOfDeliveryLocResponse> response  = tmsService.getDistributionOfDeliveryLocations(param);//查询出库量
                if(response!=null &&response.size()>0){
                    for(TmsDistributionOfDeliveryLocResponse model : response){
@@ -2134,9 +2252,6 @@
                            result.add(tt);
                        }
                    }
                }
            }
        }
        return result;
    }
@@ -2165,6 +2280,65 @@
        return paramList;
    }
    /**
     * 获取未完成订单集合
     * @return TmsBaseResponse
     */
    @Override
    public   List<TmsOrderNoFinishListResponse>  orderNoFinishList(String code){
        TmsFacrotyCodeListRequest param = new TmsFacrotyCodeListRequest();
        if(StringUtils.isNotBlank(code)){
            param.setFacrotyCodeList(new ArrayList<>());
            param.getFacrotyCodeList().add(code);//查询指定厂区
        }
        List<TmsOrderNoFinishListResponse> infoList =   tmsService.getNotFinishOrderList(param);//查询出库量
        return infoList;
    }
    /**
     * 近七日到货情况
     * @return
     */
    @Override
    public  List<LastSevenDaysOrderVo> arriveGoodsList(String code){
        List<LastSevenDaysOrderVo> list = new ArrayList<>();
        TmsSevenArrivalDetailsRequest param = new TmsSevenArrivalDetailsRequest();
        if(StringUtils.isNotBlank(code)){
            param.setFacrotyCodeList(new ArrayList<>());
            param.getFacrotyCodeList().add(code);//查询指定厂区
        }
        List<TmsSevenArrivalStatusAndDetailsResponse> infoList =   tmsService.getSevenArrivalStatusAndDetails(param);//查询出库量
        Date date = new Date();
        for (int i = 0; i < 7; i++) {
            LastSevenDaysOrderVo model = new LastSevenDaysOrderVo();
            Date td = DateUtil.addDaysToDate(date,-i);
            model.setDateStr(DateUtil.getShortTime(td));
            dealGoodsListFromResponse(model,infoList);
        }
        return list;
    }
    private void dealGoodsListFromResponse(  LastSevenDaysOrderVo model, List<TmsSevenArrivalStatusAndDetailsResponse> list) {
        model.setIngList(new ArrayList<>());
        model.setWaitList(new ArrayList<>());
        model.setDoneList(new ArrayList<>());
        if(list ==null || list.size()==0){
            return;
        }
        for(TmsSevenArrivalStatusAndDetailsResponse temp : list){
            if(StringUtils.equals(temp.getNcCreateDate(),model.getDateStr())){
                if(Constants.equalsInteger(temp.getStatus(),Constants.ZERO)){
                    model.getWaitList().add(temp);
                }else if(Constants.equalsInteger(temp.getStatus(),Constants.ONE)){
                    model.getIngList().add(temp);
                }else if(Constants.equalsInteger(temp.getStatus(),Constants.TWO)){
                    model.getDoneList().add(temp);
                }
            }
        }
        model.setDoneNum(model.getDoneList().size());
        model.setIngNum(model.getIngList().size());
        model.setWaitNum(model.getWaitList().size());
    }
    /**
     * 出库能力李永利
     * @return
     */