|  |  |  | 
|---|
|  |  |  | package com.doumee.service.business.impl; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | import cn.hutool.core.bean.BeanUtil; | 
|---|
|  |  |  | import com.alibaba.fastjson.JSONObject; | 
|---|
|  |  |  | import com.alibaba.fastjson.TypeReference; | 
|---|
|  |  |  | import com.doumee.biz.system.SystemDictDataBiz; | 
|---|
|  |  |  | 
|---|
|  |  |  | import com.doumee.core.wms.model.response.WmsBaseResponse; | 
|---|
|  |  |  | import com.doumee.dao.admin.request.JkOrdersImport; | 
|---|
|  |  |  | import com.doumee.dao.business.*; | 
|---|
|  |  |  | import com.doumee.dao.business.dto.TelecomLineInfoDTO; | 
|---|
|  |  |  | import com.doumee.dao.business.model.*; | 
|---|
|  |  |  | import com.doumee.dao.business.vo.TelecomCategoryDataVO; | 
|---|
|  |  |  | import com.doumee.dao.business.vo.TelecomJkLineListVO; | 
|---|
|  |  |  | import com.doumee.dao.business.vo.TelecomLineCountVO; | 
|---|
|  |  |  | import com.doumee.dao.business.vo.TelecomLineDataVO; | 
|---|
|  |  |  | import com.doumee.service.business.third.model.LoginUserInfo; | 
|---|
|  |  |  | import com.doumee.service.business.third.model.PageData; | 
|---|
|  |  |  | import com.doumee.service.business.third.model.PageWrap; | 
|---|
|  |  |  | 
|---|
|  |  |  | import java.util.*; | 
|---|
|  |  |  | import java.util.Date; | 
|---|
|  |  |  | import java.util.concurrent.TimeUnit; | 
|---|
|  |  |  | import java.util.stream.Collectors; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 交控-线路优化记录信息表Service实现 | 
|---|
|  |  |  | 
|---|
|  |  |  | jkSketchMapper.insert(jkSketch); | 
|---|
|  |  |  | return jkSketch.getId(); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Override | 
|---|
|  |  |  | public void deleteById(Integer id) { | 
|---|
|  |  |  | jkSketchMapper.deleteById(id); | 
|---|
|  |  |  | 
|---|
|  |  |  | UpdateWrapper<JkSketch> deleteWrapper = new UpdateWrapper<>(jkSketch); | 
|---|
|  |  |  | jkSketchMapper.delete(deleteWrapper); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Override | 
|---|
|  |  |  | @PostConstruct | 
|---|
|  |  |  | 
|---|
|  |  |  | .selectAs(JkLine::getMaxCustomer,JkSketchLine::getMaxCustomer) | 
|---|
|  |  |  | .leftJoin(JkLine.class,JkLine::getId,JkOrders::getLineId ) | 
|---|
|  |  |  | .eq(JkSketchLine::getSketchId,jkSketch.getId()) | 
|---|
|  |  |  | .eq(JkSketchLine::getType, Constants.formatIntegerNum(model.getOptStatus())) | 
|---|
|  |  |  | .eq(JkSketchLine::getIsdeleted,Constants.ZERO)); | 
|---|
|  |  |  | if(lineList ==null ||lineList.size() ==0){ | 
|---|
|  |  |  | throw  new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"当前线路不满足优化方案调整条件!"); | 
|---|
|  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  | checkJketchCustomerLocation(model,true); | 
|---|
|  |  |  | model.setEditDate(new Date()); | 
|---|
|  |  |  | model.setEditor(jkSketch.getLoginUserInfo().getId()); | 
|---|
|  |  |  | model.setDistance(model.getOriginDistance()); | 
|---|
|  |  |  | jkSketchMapper.updateById(model); | 
|---|
|  |  |  | return model; | 
|---|
|  |  |  | 
|---|
|  |  |  | c.setCustomerList(customerList); | 
|---|
|  |  |  | return  c; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 开始异步执行线路优化任务 | 
|---|
|  |  |  | * @param model | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | @Override | 
|---|
|  |  |  | @Async | 
|---|
|  |  |  | public void startUpdateLineAsync(JkSketch model) { | 
|---|
|  |  |  | 
|---|
|  |  |  | .set(JkSketch::getStatus,Constants.THREE) | 
|---|
|  |  |  | .set(JkSketch::getPlanLineEndDate,new Date())); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  | @Override | 
|---|
|  |  |  | @Async | 
|---|
|  |  |  | public  void startInitOriginDistanceBatch( JkSketch  model) { | 
|---|
|  |  |  | initOriginDistance(model); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | @Override | 
|---|
|  |  |  | @Async | 
|---|
|  |  |  | 
|---|
|  |  |  | .selectAs(JkCustomer::getStartDistance,JkSketchCustomer::getStartDistance) | 
|---|
|  |  |  | .selectAs(JkCustomer::getEndDistance,JkSketchCustomer::getEndDistance) | 
|---|
|  |  |  | .leftJoin(JkCustomer.class,JkCustomer::getId,JkSketchCustomer::getCustomerId ) | 
|---|
|  |  |  | .eq(JkSketchCustomer::getType, Constants.equalsInteger(model.getOptStatus(),Constants.ONE)?1:0) | 
|---|
|  |  |  | .eq(JkSketchCustomer::getSketchId, model.getId()) | 
|---|
|  |  |  | .eq(JkSketchCustomer::getIsdeleted,Constants.ZERO) | 
|---|
|  |  |  | .orderByAsc(JkSketchCustomer::getSortnum); | 
|---|
|  |  |  | 
|---|
|  |  |  | for (int j = 0; j < customerListParam.size(); j++) { | 
|---|
|  |  |  | distanceMatrix1[i+1][j+1] =disList.get(j+1).getDistance() ; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  | //构造优化数据模型 | 
|---|
|  |  |  | dataModel.initDataInfo(vehicleNumber1,demands1,vehicleCapacities1,distanceMatrix1); | 
|---|
|  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  | line.setDistance(so.getDistance()); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | }catch (Exception e){ | 
|---|
|  |  |  | e.printStackTrace(); | 
|---|
|  |  |  | success =false; | 
|---|
|  |  |  | 
|---|
|  |  |  | .set(JkSketch::getStatus,success?Constants.TWO:Constants.THREE) | 
|---|
|  |  |  | .set(JkSketch::getPlanLineEndDate,new Date())); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | private List<JkSketchCustomer> initSketchCustomerListParam(List<JkSketchCustomer> customerList, List<JkSketchCustomer> customerList1) { | 
|---|
|  |  |  | for(JkSketchCustomer param : customerList){ | 
|---|
|  |  |  | for(JkSketchCustomer model : customerList1){ | 
|---|
|  |  |  | 
|---|
|  |  |  | tModel.setTotalNum(new BigDecimal(0)); | 
|---|
|  |  |  | tModel.setOrderNum(routes.size()-2); | 
|---|
|  |  |  | tModel.setDateInfo(model.getDateInfo()); | 
|---|
|  |  |  | tModel.setType(Constants.ONE); | 
|---|
|  |  |  | tModel.setSortnum(sketchLineList.size()+1); | 
|---|
|  |  |  | tModel.setEditDate(tModel.getCreateDate()); | 
|---|
|  |  |  | tModel.setEditor(tModel.getCreator()); | 
|---|
|  |  |  | 
|---|
|  |  |  | cModel.setCreator(tModel.getCreator()); | 
|---|
|  |  |  | cModel.setOrderId(customer.getOrderId()); | 
|---|
|  |  |  | cModel.setCreateDate(tModel.getCreateDate()); | 
|---|
|  |  |  | cModel.setType(Constants.ONE); | 
|---|
|  |  |  | cModel.setTotalNum(customer.getTotalNum()); | 
|---|
|  |  |  | cModel.setDateInfo(model.getDateInfo()); | 
|---|
|  |  |  | cModel.setSortnum(tModel.getCustomerList().size()+1); | 
|---|
|  |  |  | 
|---|
|  |  |  | jkSketchLineMapper.update(null,new UpdateWrapper<JkSketchLine>().lambda() | 
|---|
|  |  |  | .set(JkSketchLine::getIsdeleted,Constants.ONE) | 
|---|
|  |  |  | .eq(JkSketchLine::getIsdeleted,Constants.ZERO) | 
|---|
|  |  |  | .eq(JkSketchLine::getType,Constants.ONE) | 
|---|
|  |  |  | .eq(JkSketchLine::getDateInfo,model.getDateInfo())); | 
|---|
|  |  |  | jkSketchCustomerMapper.update(null,new UpdateWrapper<JkSketchCustomer>().lambda() | 
|---|
|  |  |  | .set(JkSketchCustomer::getIsdeleted,Constants.ONE) | 
|---|
|  |  |  | .eq(JkSketchCustomer::getIsdeleted,Constants.ZERO) | 
|---|
|  |  |  | .eq(JkSketchCustomer::getType,Constants.ONE) | 
|---|
|  |  |  | .eq(JkSketchCustomer::getDateInfo,model.getDateInfo())); | 
|---|
|  |  |  | if(sketchLineList.size()>0){ | 
|---|
|  |  |  | jkSketchLineMapper.insert(sketchLineList); | 
|---|
|  |  |  | 
|---|
|  |  |  | .eq(JkSketch::getId,model.getId() ) | 
|---|
|  |  |  | .eq(JkSketch::getJobId,model.getJobId() ) | 
|---|
|  |  |  | .set(JkSketch::getLineNum,sketchLineList.size() ) | 
|---|
|  |  |  | .set(JkSketch::getOptStatus,Constants.ONE)//已生成优化线路 | 
|---|
|  |  |  | .set(JkSketch::getDistance,totalDistance) | 
|---|
|  |  |  | .set(JkSketch::getPlanLineInfo,"最近一次线路优化成功,优化后总距离:"+(totalDistance/1000)+"公里!") | 
|---|
|  |  |  | .set(JkSketch::getStatus,Constants.TWO) | 
|---|
|  |  |  | 
|---|
|  |  |  | .selectAs(JkCustomer::getStartDistance,JkSketchCustomer::getStartDistance) | 
|---|
|  |  |  | .selectAs(JkCustomer::getEndDistance,JkSketchCustomer::getEndDistance) | 
|---|
|  |  |  | .leftJoin(JkCustomer.class,JkCustomer::getId,JkSketchCustomer::getCustomerId ) | 
|---|
|  |  |  | .eq(JkSketchCustomer::getType, Constants.formatIntegerNum(model.getOptStatus())) | 
|---|
|  |  |  | .eq(JkSketchCustomer::getSketchId, model.getId()) | 
|---|
|  |  |  | .eq(JkSketchCustomer::getIsdeleted,Constants.ZERO) | 
|---|
|  |  |  | .orderByAsc(JkSketchCustomer::getSortnum); | 
|---|
|  |  |  | 
|---|
|  |  |  | queryWrapper1.selectAll(JkSketchLine.class ) | 
|---|
|  |  |  | .eq(JkSketchLine::getSketchId, model.getId()) | 
|---|
|  |  |  | .eq(JkSketchLine::getIsdeleted,Constants.ZERO) | 
|---|
|  |  |  | .eq(JkSketchLine::getType, Constants.formatIntegerNum(model.getOptStatus())) | 
|---|
|  |  |  | .orderByAsc(JkSketchLine::getSortnum); | 
|---|
|  |  |  | List<JkSketchLine> lineList = jkSketchLineMapper.selectJoinList(JkSketchLine.class,queryWrapper1); | 
|---|
|  |  |  | initCustomerDistance(lineList,model,updateLineDistance); | 
|---|
|  |  |  | 
|---|
|  |  |  | tModel.setTotalNum(orders.getNum()); | 
|---|
|  |  |  | tModel.setDateInfo(orders.getDateInfo()); | 
|---|
|  |  |  | tModel.setSortnum(list.size()+1); | 
|---|
|  |  |  | tModel.setType(Constants.ZERO); | 
|---|
|  |  |  | tModel.setEditDate(tModel.getCreateDate()); | 
|---|
|  |  |  | tModel.setEditor(tModel.getCreator()); | 
|---|
|  |  |  | tModel.setIsdeleted(Constants.ZERO); | 
|---|
|  |  |  | 
|---|
|  |  |  | initOrderAndTotalNum(tModel,line.getId(),newOrderList); | 
|---|
|  |  |  | tModel.setDateInfo(newList.get(0).getDateInfo()); | 
|---|
|  |  |  | tModel.setSortnum(list.size()+1); | 
|---|
|  |  |  | tModel.setType(Constants.ZERO); | 
|---|
|  |  |  | tModel.setEditDate(tModel.getCreateDate()); | 
|---|
|  |  |  | tModel.setEditor(tModel.getCreator()); | 
|---|
|  |  |  | tModel.setIsdeleted(Constants.ZERO); | 
|---|
|  |  |  | 
|---|
|  |  |  | tModel.setCreateDate(orders.getCreateDate()); | 
|---|
|  |  |  | tModel.setCategoryId(orders.getCategoryId()); | 
|---|
|  |  |  | tModel.setTotalNum(orders.getNum()); | 
|---|
|  |  |  | tModel.setOptStatus(Constants.ZERO); | 
|---|
|  |  |  | tModel.setOrderNum(1); | 
|---|
|  |  |  | tModel.setDateInfo(orders.getDateInfo()); | 
|---|
|  |  |  | tModel.setSortnum(list.size()+1); | 
|---|
|  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  | return null; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Override | 
|---|
|  |  |  | public List<TelecomJkLineListVO>  getLineForTelecom(TelecomLineInfoDTO telecomLineInfoDTO){ | 
|---|
|  |  |  | if(StringUtils.isBlank(telecomLineInfoDTO.getDateInfo())){ | 
|---|
|  |  |  | telecomLineInfoDTO.setDateInfo(DateUtil.getDate(new Date(),"yyyy-MM-dd")); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | MPJLambdaWrapper<JkSketchLine> queryWrapper = new MPJLambdaWrapper<JkSketchLine>().selectAll(JkSketchLine.class ) | 
|---|
|  |  |  | .selectAs(Cars::getCode,JkSketchLine::getCarCode) | 
|---|
|  |  |  | .selectAs(Category::getName,JkSketchLine::getCategoryName) | 
|---|
|  |  |  | .selectAs(JkLine::getName,JkSketchLine::getLineName) | 
|---|
|  |  |  | .select(" ifnull((select count(1) from jk_sketch_customer jc where jc.ISDELETED= 0  and jc.SKETCH_LINE_ID = t.id),0)" ,JkSketchLine::getMaxCustomer) | 
|---|
|  |  |  | .leftJoin(JkSketch.class,JkSketch::getId,JkSketchLine::getSketchId) | 
|---|
|  |  |  | .leftJoin(JkLine.class,JkLine::getId,JkSketchLine::getLineId) | 
|---|
|  |  |  | .leftJoin(Category.class,Category::getId,JkLine::getCategoryId ) | 
|---|
|  |  |  | .leftJoin(Cars.class,Cars::getId,JkLine::getCarId) | 
|---|
|  |  |  | .and(StringUtils.isNotBlank(telecomLineInfoDTO.getSearchInfo()),i->i.like(Cars::getCode,telecomLineInfoDTO.getSearchInfo()).or().like(JkLine::getName,telecomLineInfoDTO.getSearchInfo())) | 
|---|
|  |  |  | .eq(StringUtils.isNotBlank(telecomLineInfoDTO.getDateInfo()),JkSketch::getDateInfo, telecomLineInfoDTO.getDateInfo()) | 
|---|
|  |  |  | .eq(Objects.nonNull(telecomLineInfoDTO.getCategoryId()),JkLine::getCategoryId, telecomLineInfoDTO.getCategoryId()) | 
|---|
|  |  |  | .eq(Objects.nonNull(telecomLineInfoDTO.getLineId()),JkLine::getId, telecomLineInfoDTO.getLineId()); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | List<JkSketchLine> jkSketchLineList = jkSketchLineMapper.selectJoinList(JkSketchLine.class,queryWrapper); | 
|---|
|  |  |  | List<TelecomJkLineListVO> telecomJkLineListVOList = new ArrayList<>(); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | if(org.apache.commons.collections.CollectionUtils.isNotEmpty(jkSketchLineList)){ | 
|---|
|  |  |  | //优化前数据 | 
|---|
|  |  |  | List<JkSketchLine> beforeList = jkSketchLineList.stream() | 
|---|
|  |  |  | .filter(i->Constants.equalsInteger(i.getType(),Constants.ZERO)).collect(Collectors.toList()); | 
|---|
|  |  |  | //优化后数据 | 
|---|
|  |  |  | List<JkSketchLine> afterList = jkSketchLineList.stream() | 
|---|
|  |  |  | .filter(i->Constants.equalsInteger(i.getType(),Constants.ONE)&&Constants.equalsInteger(i.getIsdeleted(),Constants.ZERO)).collect(Collectors.toList()); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | for (JkSketchLine sketchLine:beforeList) { | 
|---|
|  |  |  | JkSketchLine finalSketchLine = sketchLine; | 
|---|
|  |  |  | List<JkSketchLine> afterSelectList = afterList.stream().filter(i->Constants.equalsInteger(i.getLineId(), finalSketchLine.getLineId())).collect(Collectors.toList()); | 
|---|
|  |  |  | if(afterSelectList.size()>Constants.ZERO){ | 
|---|
|  |  |  | sketchLine = afterSelectList.get(Constants.ZERO); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | TelecomJkLineListVO telecomJkLineListVO = new TelecomJkLineListVO(); | 
|---|
|  |  |  | telecomJkLineListVO.setCategoryName(sketchLine.getCategoryName()); | 
|---|
|  |  |  | telecomJkLineListVO.setName(sketchLine.getLineName()); | 
|---|
|  |  |  | telecomJkLineListVO.setCarCode(sketchLine.getCarCode()); | 
|---|
|  |  |  | telecomJkLineListVO.setCustomerNum(sketchLine.getMaxCustomer()); | 
|---|
|  |  |  | telecomJkLineListVOList.add(telecomJkLineListVO); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  | return telecomJkLineListVOList; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Override | 
|---|
|  |  |  | public TelecomLineCountVO getTelecomLineCount(TelecomLineInfoDTO telecomLineInfoDTO){ | 
|---|
|  |  |  | if(StringUtils.isBlank(telecomLineInfoDTO.getDateInfo())){ | 
|---|
|  |  |  | telecomLineInfoDTO.setDateInfo(DateUtil.getDate(new Date(),"yyyy-MM-dd")); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | TelecomLineCountVO telecomLineCountVO = new TelecomLineCountVO(); | 
|---|
|  |  |  | telecomLineCountVO.setLineNum(Constants.ZERO); | 
|---|
|  |  |  | telecomLineCountVO.setCategoryNum(Constants.ZERO); | 
|---|
|  |  |  | telecomLineCountVO.setCustomerNum(Constants.ZERO); | 
|---|
|  |  |  | MPJLambdaWrapper<JkSketch> sketchMPJLambdaWrapper = new MPJLambdaWrapper<JkSketch>().selectAll(JkSketch.class ) | 
|---|
|  |  |  | .selectAs(Category::getName,JkSketch::getCategoryName) | 
|---|
|  |  |  | .select(" ifnull((select count(1) from jk_sketch_customer jc where jc.ISDELETED= 0 and  jc.SKETCH_ID = t.id),0)" ,JkSketch::getCustomerNum) | 
|---|
|  |  |  | .select(" ifnull((select count(1) from jk_sketch_line jc where   jc.TYPE = 0  and  jc.SKETCH_ID = t.id),0)" ,JkSketch::getBeforeLineNum) | 
|---|
|  |  |  | .leftJoin(Category.class,Category::getId,JkSketch::getCategoryId ) | 
|---|
|  |  |  | .eq(JkSketch::getDateInfo, telecomLineInfoDTO.getDateInfo()); | 
|---|
|  |  |  | List<JkSketch> sketchList = jkSketchMapper.selectJoinList(JkSketch.class,sketchMPJLambdaWrapper); | 
|---|
|  |  |  | if(CollectionUtils.isEmpty(sketchList)){ | 
|---|
|  |  |  | return telecomLineCountVO; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | MPJLambdaWrapper<JkSketchLine> queryWrapper = new MPJLambdaWrapper<JkSketchLine>().selectAll(JkSketchLine.class ) | 
|---|
|  |  |  | .selectAs(Cars::getCode,JkSketchLine::getCarCode) | 
|---|
|  |  |  | .selectAs(Category::getName,JkSketchLine::getCategoryName) | 
|---|
|  |  |  | .selectAs(JkLine::getName,JkSketchLine::getLineName) | 
|---|
|  |  |  | .select(" ifnull((select count(1) from jk_sketch_customer jc where jc.ISDELETED= 0 and jc.SKETCH_LINE_ID = t.id),0)" ,JkSketchLine::getMaxCustomer) | 
|---|
|  |  |  | .leftJoin(JkSketch.class,JkSketch::getId,JkSketchLine::getSketchId) | 
|---|
|  |  |  | .leftJoin(JkLine.class,JkLine::getId,JkSketchLine::getLineId) | 
|---|
|  |  |  | .leftJoin(Category.class,Category::getId,JkLine::getCategoryId ) | 
|---|
|  |  |  | .leftJoin(Cars.class,Cars::getId,JkLine::getCarId) | 
|---|
|  |  |  | .in(JkSketchLine::getSketchId,sketchList.stream().map(i->i.getId()).collect(Collectors.toList())); | 
|---|
|  |  |  | List<JkSketchLine> jkSketchLineList = jkSketchLineMapper.selectJoinList(JkSketchLine.class,queryWrapper); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | telecomLineCountVO.setCategoryNum(sketchList.size()); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | //        telecomLineCountVO.setLineNum(sketchList.stream().map(i->i.getBeforeLineNum()).reduce(Constants.ZERO,Integer::sum)); | 
|---|
|  |  |  | Integer lineNum = Constants.ZERO; | 
|---|
|  |  |  | List<TelecomCategoryDataVO> telecomCategoryDataVOList = new ArrayList<>(); | 
|---|
|  |  |  | for (JkSketch jkSketch:sketchList) { | 
|---|
|  |  |  | TelecomCategoryDataVO telecomCategoryDataVO = new TelecomCategoryDataVO(); | 
|---|
|  |  |  | telecomCategoryDataVO.setId(jkSketch.getCategoryId()); | 
|---|
|  |  |  | telecomCategoryDataVO.setName(jkSketch.getCategoryName()); | 
|---|
|  |  |  | telecomCategoryDataVO.setCustomerNum(jkSketch.getCustomerNum()); | 
|---|
|  |  |  | List<JkSketchLine> childLineList = jkSketchLineList.stream().filter(i->Constants.equalsInteger(i.getSketchId(),jkSketch.getId())).collect(Collectors.toList()); | 
|---|
|  |  |  | //优化前数据 | 
|---|
|  |  |  | List<JkSketchLine> beforeList = childLineList.stream() | 
|---|
|  |  |  | .filter(i->Constants.equalsInteger(i.getType(),Constants.ZERO)).collect(Collectors.toList()); | 
|---|
|  |  |  | //优化后数据 | 
|---|
|  |  |  | List<JkSketchLine> afterList = childLineList.stream() | 
|---|
|  |  |  | .filter(i->Constants.equalsInteger(i.getType(),Constants.ONE)&&Constants.equalsInteger(i.getIsdeleted(),Constants.ZERO)).collect(Collectors.toList()); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | lineNum = lineNum + (Constants.equalsInteger(jkSketch.getOptStatus(),Constants.ZERO)?beforeList.size():afterList.size()); | 
|---|
|  |  |  | List<TelecomLineDataVO> telecomLineDataVOList = new ArrayList<>(); | 
|---|
|  |  |  | for (JkSketchLine sketchLine: Constants.equalsInteger(jkSketch.getOptStatus(),Constants.ZERO)?beforeList:afterList) { | 
|---|
|  |  |  | //                JkSketchLine finalSketchLine = sketchLine; | 
|---|
|  |  |  | //                List<JkSketchLine> afterSelectList = afterList.stream().filter(i->Constants.equalsInteger(i.getLineId(), finalSketchLine.getLineId())).collect(Collectors.toList()); | 
|---|
|  |  |  | //                if(afterSelectList.size()>Constants.ZERO){ | 
|---|
|  |  |  | //                    sketchLine = afterSelectList.get(Constants.ZERO); | 
|---|
|  |  |  | //                } | 
|---|
|  |  |  | TelecomLineDataVO telecomLineDataVO = new TelecomLineDataVO(); | 
|---|
|  |  |  | telecomLineDataVO.setId(sketchLine.getId()); | 
|---|
|  |  |  | telecomLineDataVO.setName(sketchLine.getLineName()); | 
|---|
|  |  |  | telecomLineDataVOList.add(telecomLineDataVO); | 
|---|
|  |  |  | telecomLineCountVO.setCustomerNum( | 
|---|
|  |  |  | telecomLineCountVO.getCustomerNum() + sketchLine.getMaxCustomer() | 
|---|
|  |  |  | ); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | telecomCategoryDataVO.setTelecomLineDataVOList(telecomLineDataVOList); | 
|---|
|  |  |  | telecomCategoryDataVOList.add(telecomCategoryDataVO); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | telecomLineCountVO.setLineNum(lineNum); | 
|---|
|  |  |  | telecomLineCountVO.setTelecomCategoryDataVOList(telecomCategoryDataVOList); | 
|---|
|  |  |  | return telecomLineCountVO; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Override | 
|---|
|  |  |  | public List<TelecomCategoryDataVO> getTelecomLineDistance(TelecomLineInfoDTO telecomLineInfoDTO){ | 
|---|
|  |  |  | if(StringUtils.isBlank(telecomLineInfoDTO.getDateInfo())){ | 
|---|
|  |  |  | telecomLineInfoDTO.setDateInfo(DateUtil.getDate(new Date(),"yyyy-MM-dd")); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | MPJLambdaWrapper<JkSketch> sketchMPJLambdaWrapper = new MPJLambdaWrapper<JkSketch>().selectAll(JkSketch.class ) | 
|---|
|  |  |  | .selectAs(Category::getName,JkSketch::getCategoryName) | 
|---|
|  |  |  | .leftJoin(Category.class,Category::getId,JkSketch::getCategoryId ) | 
|---|
|  |  |  | .eq(JkSketch::getDateInfo, telecomLineInfoDTO.getDateInfo()); | 
|---|
|  |  |  | List<JkSketch> sketchList = jkSketchMapper.selectJoinList(JkSketch.class,sketchMPJLambdaWrapper); | 
|---|
|  |  |  | if(CollectionUtils.isEmpty(sketchList)){ | 
|---|
|  |  |  | return new ArrayList<TelecomCategoryDataVO>(); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | MPJLambdaWrapper<JkSketchLine> queryWrapper = new MPJLambdaWrapper<JkSketchLine>().selectAll(JkSketchLine.class ) | 
|---|
|  |  |  | .selectAs(Cars::getCode,JkSketchLine::getCarCode) | 
|---|
|  |  |  | .selectAs(Category::getName,JkSketchLine::getCategoryName) | 
|---|
|  |  |  | .selectAs(JkLine::getName,JkSketchLine::getLineName) | 
|---|
|  |  |  | .leftJoin(JkSketch.class,JkSketch::getId,JkSketchLine::getSketchId) | 
|---|
|  |  |  | .leftJoin(JkLine.class,JkLine::getId,JkSketchLine::getLineId) | 
|---|
|  |  |  | .leftJoin(Category.class,Category::getId,JkLine::getCategoryId ) | 
|---|
|  |  |  | .leftJoin(Cars.class,Cars::getId,JkLine::getCarId) | 
|---|
|  |  |  | .in(JkSketchLine::getSketchId,sketchList.stream().map(i->i.getId()).collect(Collectors.toList())); | 
|---|
|  |  |  | List<JkSketchLine> jkSketchLineList = jkSketchLineMapper.selectJoinList(JkSketchLine.class,queryWrapper); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | List<TelecomCategoryDataVO> telecomCategoryDataVOList = new ArrayList<>(); | 
|---|
|  |  |  | for (JkSketch jkSketch:sketchList) { | 
|---|
|  |  |  | TelecomCategoryDataVO telecomCategoryDataVO = new TelecomCategoryDataVO(); | 
|---|
|  |  |  | telecomCategoryDataVO.setId(jkSketch.getCategoryId()); | 
|---|
|  |  |  | telecomCategoryDataVO.setName(jkSketch.getCategoryName()); | 
|---|
|  |  |  | //优化前数据 | 
|---|
|  |  |  | List<JkSketchLine> beforeList = jkSketchLineList.stream() | 
|---|
|  |  |  | .filter(i->Constants.equalsInteger(i.getSketchId(),jkSketch.getId())&&Constants.equalsInteger(i.getType(),Constants.ZERO)).collect(Collectors.toList()); | 
|---|
|  |  |  | telecomCategoryDataVO.setDistance( | 
|---|
|  |  |  | beforeList.stream().map(i->i.getDistance()).reduce(Long.valueOf(0),Long::sum) | 
|---|
|  |  |  | ); | 
|---|
|  |  |  | if(Constants.equalsInteger(jkSketch.getOptStatus(),Constants.ZERO)){ | 
|---|
|  |  |  | telecomCategoryDataVO.setDistanceAfter(telecomCategoryDataVO.getDistance()); | 
|---|
|  |  |  | }else{ | 
|---|
|  |  |  | //优化后数据 | 
|---|
|  |  |  | List<JkSketchLine> afterList = jkSketchLineList.stream() | 
|---|
|  |  |  | .filter(i->Constants.equalsInteger(i.getSketchId(),jkSketch.getId())&&Constants.equalsInteger(i.getType(),Constants.ONE)&&Constants.equalsInteger(i.getIsdeleted(),Constants.ZERO)).collect(Collectors.toList()); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | Long distanceAfter = 0L; | 
|---|
|  |  |  | for (JkSketchLine jkSketchLine:afterList) { | 
|---|
|  |  |  | distanceAfter = distanceAfter + jkSketchLine.getDistance(); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | telecomCategoryDataVO.setDistanceAfter(distanceAfter); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  | telecomCategoryDataVOList.add(telecomCategoryDataVO); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | return telecomCategoryDataVOList; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Override | 
|---|
|  |  |  | public List<TelecomLineDataVO> getTelecomLineInfo(TelecomLineInfoDTO telecomLineInfoDTO){ | 
|---|
|  |  |  | if(StringUtils.isBlank(telecomLineInfoDTO.getDateInfo())){ | 
|---|
|  |  |  | telecomLineInfoDTO.setDateInfo(DateUtil.getDate(new Date(),"yyyy-MM-dd")); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | MPJLambdaWrapper<JkSketchLine> queryWrapper = new MPJLambdaWrapper<JkSketchLine>().selectAll(JkSketchLine.class ) | 
|---|
|  |  |  | .selectAs(Cars::getCode,JkSketchLine::getCarCode) | 
|---|
|  |  |  | .selectAs(Category::getName,JkSketchLine::getCategoryName) | 
|---|
|  |  |  | .selectAs(JkLine::getName,JkSketchLine::getLineName) | 
|---|
|  |  |  | .leftJoin(JkSketch.class,JkSketch::getId,JkSketchLine::getSketchId) | 
|---|
|  |  |  | .leftJoin(JkLine.class,JkLine::getId,JkSketchLine::getLineId) | 
|---|
|  |  |  | .leftJoin(Category.class,Category::getId,JkLine::getCategoryId ) | 
|---|
|  |  |  | .leftJoin(Cars.class,Cars::getId,JkLine::getCarId) | 
|---|
|  |  |  | .eq(JkSketchLine::getIsdeleted,Constants.ZERO) | 
|---|
|  |  |  | .eq(Objects.nonNull(telecomLineInfoDTO.getCategoryId()),JkSketchLine::getCategoryId,telecomLineInfoDTO.getCategoryId()) | 
|---|
|  |  |  | .eq(Objects.nonNull(telecomLineInfoDTO.getLineId()),JkSketchLine::getLineId,telecomLineInfoDTO.getLineId()) | 
|---|
|  |  |  | .apply(" ( t.TYPE = t1.OPT_STATUS ) ") | 
|---|
|  |  |  | .eq(JkSketch::getDateInfo, telecomLineInfoDTO.getDateInfo()); | 
|---|
|  |  |  | List<JkSketchLine> returnLineList = jkSketchLineMapper.selectJoinList(JkSketchLine.class,queryWrapper); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | //        //优化前数据 | 
|---|
|  |  |  | //        List<JkSketchLine> beforeList = jkSketchLineList.stream() | 
|---|
|  |  |  | //                .filter(i->Constants.equalsInteger(i.getType(),Constants.ZERO)).collect(Collectors.toList()); | 
|---|
|  |  |  | // | 
|---|
|  |  |  | //        //优化后数据 | 
|---|
|  |  |  | //        List<JkSketchLine> afterList = jkSketchLineList.stream() | 
|---|
|  |  |  | //                .filter(i->Constants.equalsInteger(i.getType(),Constants.ONE)&&Constants.equalsInteger(i.getIsdeleted(),Constants.ZERO)).collect(Collectors.toList()); | 
|---|
|  |  |  | // | 
|---|
|  |  |  | //        List<JkSketchLine> returnLineList = new ArrayList<>(); | 
|---|
|  |  |  | //        for (JkSketchLine jkSketchLine:beforeList) { | 
|---|
|  |  |  | //            List<JkSketchLine> afterSelectList = afterList.stream().filter(i->Constants.equalsInteger(i.getLineId(),jkSketchLine.getLineId())).collect(Collectors.toList()); | 
|---|
|  |  |  | //            if(afterSelectList.size()>Constants.ZERO){ | 
|---|
|  |  |  | //                returnLineList.add(afterList.get(Constants.ZERO)); | 
|---|
|  |  |  | //            }else{ | 
|---|
|  |  |  | //                returnLineList.add(jkSketchLine); | 
|---|
|  |  |  | //            } | 
|---|
|  |  |  | //        } | 
|---|
|  |  |  | List<TelecomLineDataVO> dataVOList = new ArrayList<>(); | 
|---|
|  |  |  | if(org.apache.commons.collections.CollectionUtils.isNotEmpty(returnLineList)){ | 
|---|
|  |  |  | //获取所有地图经纬度数据 | 
|---|
|  |  |  | MPJLambdaWrapper<JkSketchCustomer> jkSketchCustomerMPJLambdaWrapper = new MPJLambdaWrapper<>(); | 
|---|
|  |  |  | jkSketchCustomerMPJLambdaWrapper.selectAll(JkSketchCustomer.class ) | 
|---|
|  |  |  | .selectAs(JkCustomer::getName,JkSketchCustomer::getName) | 
|---|
|  |  |  | .selectAs(JkCustomer::getCode,JkSketchCustomer::getCode) | 
|---|
|  |  |  | .selectAs(JkCustomer::getStartDistance,JkSketchCustomer::getStartDistance) | 
|---|
|  |  |  | .selectAs(JkCustomer::getEndDistance,JkSketchCustomer::getEndDistance) | 
|---|
|  |  |  | .selectAs(JkCustomer::getLatitude,JkSketchCustomer::getLatitude) | 
|---|
|  |  |  | .selectAs(JkCustomer::getLongitude,JkSketchCustomer::getLongitude) | 
|---|
|  |  |  | .selectAs(JkCustomer::getStartSteps,JkSketchCustomer::getStartSteps) | 
|---|
|  |  |  | .selectAs(JkCustomer::getEndSteps,JkSketchCustomer::getEndSteps) | 
|---|
|  |  |  | .selectAs(JkCustomer::getLocation,JkSketchCustomer::getLocation) | 
|---|
|  |  |  | .leftJoin(JkCustomer.class,JkCustomer::getId,JkSketchCustomer::getCustomerId ) | 
|---|
|  |  |  | .eq( JkSketchCustomer::getIsdeleted,Constants.ZERO) | 
|---|
|  |  |  | .in( JkSketchCustomer::getSketchLineId,returnLineList.stream().map(i->i.getId()).collect(Collectors.toList())); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | List<JkSketchCustomer> allList =  jkSketchCustomerMapper.selectJoinList(JkSketchCustomer.class,jkSketchCustomerMPJLambdaWrapper); | 
|---|
|  |  |  | BigDecimal cLatitude =new BigDecimal(0); | 
|---|
|  |  |  | BigDecimal cLongitude =new BigDecimal(0); | 
|---|
|  |  |  | String comLocation = systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.COMPANY_LOCATION).getCode(); | 
|---|
|  |  |  | try { | 
|---|
|  |  |  | String[] ss = comLocation.split(","); | 
|---|
|  |  |  | cLongitude = new BigDecimal(ss[0]); | 
|---|
|  |  |  | cLatitude =  new BigDecimal(ss[1]); | 
|---|
|  |  |  | }catch (Exception e){ | 
|---|
|  |  |  | } | 
|---|
|  |  |  | for (JkSketchLine line:returnLineList) { | 
|---|
|  |  |  | TelecomLineDataVO telecomLineDataVO = new TelecomLineDataVO(); | 
|---|
|  |  |  | telecomLineDataVO.setId(line.getLineId()); | 
|---|
|  |  |  | telecomLineDataVO.setName(line.getLineName()); | 
|---|
|  |  |  | List<JkSketchCustomer> sketchCustomerList = allList.stream().filter(i->Constants.equalsInteger(i.getSketchLineId(),line.getId())).collect(Collectors.toList()); | 
|---|
|  |  |  | if(org.apache.commons.collections.CollectionUtils.isNotEmpty(sketchCustomerList)){ | 
|---|
|  |  |  | telecomLineDataVO.setNavigationList(this.dealLineCustomerInfo(cLatitude,cLongitude,comLocation,sketchCustomerList)); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | dataVOList.add(telecomLineDataVO); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | return dataVOList; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | public List<JkCustomerNavigation> dealLineCustomerInfo(BigDecimal cLatitude,BigDecimal cLongitude,String comLocation,List<JkSketchCustomer> allList){ | 
|---|
|  |  |  | List<JkCustomerNavigation> list = new ArrayList<>(); | 
|---|
|  |  |  | JkCustomerNavigation startmodel = new JkCustomerNavigation(); | 
|---|
|  |  |  | startmodel.setStartId(-1); | 
|---|
|  |  |  | startmodel.setName("园区"); | 
|---|
|  |  |  | startmodel.setStartLatitude(cLatitude); | 
|---|
|  |  |  | startmodel.setStartLogitude(cLongitude); | 
|---|
|  |  |  | startmodel.setEndLatitude(allList.get(0).getLatitude()); | 
|---|
|  |  |  | startmodel.setEndLogitude(allList.get(0).getLongitude()); | 
|---|
|  |  |  | startmodel.setDistance(allList.get(0).getStartDistance()); | 
|---|
|  |  |  | startmodel.setSteps(allList.get(0).getStartSteps()); | 
|---|
|  |  |  | if(StringUtils.isBlank(startmodel.getSteps())){ | 
|---|
|  |  |  | startmodel.setSteps(comLocation +";"+allList.get(0).getLongitude()+","+allList.get(0).getLatitude()); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | list.add(startmodel); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | for (int i = 0; i < allList.size(); i++) { | 
|---|
|  |  |  | if(allList.size() == i+1){ | 
|---|
|  |  |  | JkCustomerNavigation endmodel = new JkCustomerNavigation(); | 
|---|
|  |  |  | endmodel.setStartId(-1); | 
|---|
|  |  |  | endmodel.setLocation(allList.get(i).getLocation()); | 
|---|
|  |  |  | endmodel.setName(allList.get(i).getName()); | 
|---|
|  |  |  | endmodel.setSteps(allList.get(i).getEndSteps()); | 
|---|
|  |  |  | endmodel.setStartLatitude(allList.get(i).getLatitude()); | 
|---|
|  |  |  | endmodel.setStartLogitude(allList.get(i).getLongitude()); | 
|---|
|  |  |  | endmodel.setDistance(allList.get(0).getEndDistance()); | 
|---|
|  |  |  | endmodel.setEndLatitude(cLatitude); | 
|---|
|  |  |  | endmodel.setEndLogitude(cLongitude); | 
|---|
|  |  |  | if(StringUtils.isBlank(startmodel.getSteps())){ | 
|---|
|  |  |  | startmodel.setSteps(allList.get(i).getLongitude()+","+allList.get(i).getLatitude()+";"+comLocation); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | list.add(endmodel); | 
|---|
|  |  |  | break; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | JkSketchCustomer start = allList.get(i); | 
|---|
|  |  |  | JkSketchCustomer end = allList.get(i+1); | 
|---|
|  |  |  | JkCustomerNavigation tt = jkCustomerNavigationMapper.selectOne(new QueryWrapper<JkCustomerNavigation>().lambda() | 
|---|
|  |  |  | .eq(JkCustomerNavigation::getIsdeleted,Constants.ZERO) | 
|---|
|  |  |  | .eq(JkCustomerNavigation::getIdIndex, allList.get(i).getCustomerId()+"-"+ allList.get(i+1).getCustomerId()) | 
|---|
|  |  |  | .orderByDesc(JkCustomerNavigation::getId) | 
|---|
|  |  |  | .last("limit 1") | 
|---|
|  |  |  | ); | 
|---|
|  |  |  | if(tt==null){ | 
|---|
|  |  |  | //只有起止点 | 
|---|
|  |  |  | tt = new JkCustomerNavigation(); | 
|---|
|  |  |  | tt.setStartLatitude(start.getLatitude()); | 
|---|
|  |  |  | tt.setStartLogitude(start.getLongitude()); | 
|---|
|  |  |  | tt.setEndLatitude(end.getLatitude()); | 
|---|
|  |  |  | tt.setEndLogitude(end.getLongitude()); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | tt.setLocation(allList.get(i).getLocation()); | 
|---|
|  |  |  | tt.setName(allList.get(i).getName()); | 
|---|
|  |  |  | if(StringUtils.isBlank(tt.getSteps())){ | 
|---|
|  |  |  | tt.setSteps(start.getLongitude()+","+end.getLatitude()+";"+end.getLongitude()+","+end.getLatitude()); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | list.add(tt); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | return list; | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | } | 
|---|