| package com.doumee.service.business.impl; | 
|   | 
| import com.alibaba.fastjson.JSONObject; | 
| import com.doumee.biz.system.SystemDictDataBiz; | 
| import com.doumee.core.utils.Constants; | 
| import com.doumee.dao.business.JkCustomerNavigationMapper; | 
| import com.doumee.dao.business.JkSketchMapper; | 
| import com.doumee.dao.business.model.*; | 
| import com.doumee.service.business.third.model.PageData; | 
| import com.doumee.service.business.third.model.PageWrap; | 
| import com.doumee.core.utils.Utils; | 
| import com.doumee.dao.business.JkSketchCustomerMapper; | 
| import com.doumee.service.business.JkSketchCustomerService; | 
| import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; | 
| import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; | 
| import com.baomidou.mybatisplus.core.metadata.IPage; | 
| import com.baomidou.mybatisplus.extension.plugins.pagination.Page; | 
| import com.github.yulichang.wrapper.MPJLambdaWrapper; | 
| import org.apache.commons.lang3.StringUtils; | 
| import org.springframework.beans.factory.annotation.Autowired; | 
| import org.springframework.stereotype.Service; | 
| import org.springframework.util.CollectionUtils; | 
|   | 
| import java.math.BigDecimal; | 
| import java.math.RoundingMode; | 
| import java.util.ArrayList; | 
| import java.util.List; | 
|   | 
| /** | 
|  * 交控-线路优化线路客户记录信息表Service实现 | 
|  * @author 江蹄蹄 | 
|  * @date 2025/09/28 09:01 | 
|  */ | 
| @Service | 
| public class JkSketchCustomerServiceImpl implements JkSketchCustomerService { | 
|   | 
|     @Autowired | 
|     private SystemDictDataBiz systemDictDataBiz; | 
|     @Autowired | 
|     private JkSketchCustomerMapper jkSketchCustomerMapper; | 
|     @Autowired | 
|     private JkSketchMapper jkSketchMapper; | 
|     @Autowired | 
|     private JkCustomerNavigationMapper jkCustomerNavigationMapper; | 
|   | 
|     @Override | 
|     public Integer create(JkSketchCustomer jkSketchCustomer) { | 
|         jkSketchCustomerMapper.insert(jkSketchCustomer); | 
|         return jkSketchCustomer.getId(); | 
|     } | 
|   | 
|     @Override | 
|     public void deleteById(Integer id) { | 
|         jkSketchCustomerMapper.deleteById(id); | 
|     } | 
|   | 
|     @Override | 
|     public void delete(JkSketchCustomer jkSketchCustomer) { | 
|         UpdateWrapper<JkSketchCustomer> deleteWrapper = new UpdateWrapper<>(jkSketchCustomer); | 
|         jkSketchCustomerMapper.delete(deleteWrapper); | 
|     } | 
|   | 
|     @Override | 
|     public void deleteByIdInBatch(List<Integer> ids) { | 
|         if (CollectionUtils.isEmpty(ids)) { | 
|             return; | 
|         } | 
|         jkSketchCustomerMapper.deleteBatchIds(ids); | 
|     } | 
|   | 
|     @Override | 
|     public void updateById(JkSketchCustomer jkSketchCustomer) { | 
|         jkSketchCustomerMapper.updateById(jkSketchCustomer); | 
|     } | 
|   | 
|     @Override | 
|     public void updateByIdInBatch(List<JkSketchCustomer> jkSketchCustomers) { | 
|         if (CollectionUtils.isEmpty(jkSketchCustomers)) { | 
|             return; | 
|         } | 
|         for (JkSketchCustomer jkSketchCustomer: jkSketchCustomers) { | 
|             this.updateById(jkSketchCustomer); | 
|         } | 
|     } | 
|   | 
|     @Override | 
|     public JkSketchCustomer findById(Integer id) { | 
|         return jkSketchCustomerMapper.selectById(id); | 
|     } | 
|   | 
|     @Override | 
|     public JkSketchCustomer findOne(JkSketchCustomer jkSketchCustomer) { | 
|         QueryWrapper<JkSketchCustomer> wrapper = new QueryWrapper<>(jkSketchCustomer); | 
|         return jkSketchCustomerMapper.selectOne(wrapper); | 
|     } | 
|   | 
|     /** | 
|      * 查询全部交通规划路线 | 
|      * @param jkSketchCustomer | 
|      * @return | 
|      */ | 
|     @Override | 
|     public List<JkCustomerNavigation>  allMapList(JkSketchCustomer jkSketchCustomer) { | 
|         List<JkCustomerNavigation> list = new ArrayList<>(); | 
|         MPJLambdaWrapper<JkSketchCustomer> queryWrapper = new MPJLambdaWrapper<>(); | 
|         jkSketchCustomer.setIsdeleted(Constants.ZERO); | 
|         queryWrapper.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 ) ; | 
|         queryWrapper.eq( JkSketchCustomer::getSketchLineId,jkSketchCustomer.getSketchLineId()) | 
|                     .eq( JkSketchCustomer::getIsdeleted,Constants.ZERO); | 
|   | 
|         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){ | 
|         } | 
|         List<JkSketchCustomer> allList =  jkSketchCustomerMapper.selectJoinList(JkSketchCustomer.class,queryWrapper); | 
|         if(allList !=null && allList.size()>0){ | 
|             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; | 
|     } | 
|   | 
|   | 
|   | 
|   | 
|   | 
|   | 
|     @Override | 
|     public List<JkSketchCustomer> findList(JkSketchCustomer jkSketchCustomer) { | 
|    /*     if(jkSketchCustomer.getSketchId()!=null){ | 
|             JkSketch sketch = jkSketchMapper.selectById(jkSketchCustomer.getSketchId()); | 
|             if(sketch!=null){ | 
|                 jkSketchCustomer.setType(Constants.formatIntegerNum(sketch.getOptStatus())); | 
|             } | 
|         }*/ | 
|         MPJLambdaWrapper<JkSketchCustomer> queryWrapper = new MPJLambdaWrapper<>(); | 
|         jkSketchCustomer.setIsdeleted(Constants.ZERO); | 
|         queryWrapper.selectAll(JkSketchCustomer.class ) | 
|                 .selectAs(JkCustomer::getName,JkSketchCustomer::getName) | 
|                 .selectAs(JkCustomer::getCode,JkSketchCustomer::getCode) | 
|                 .selectAs(JkCustomer::getLatitude,JkSketchCustomer::getLatitude) | 
|                 .selectAs(JkCustomer::getLongitude,JkSketchCustomer::getLongitude) | 
|                 .selectAs(JkCustomer::getLocation,JkSketchCustomer::getLocation) | 
|                 .leftJoin(JkCustomer.class,JkCustomer::getId,JkSketchCustomer::getCustomerId ) ; | 
|         queryWrapper.like(jkSketchCustomer.getCode()!=null,JkCustomer::getCode,jkSketchCustomer.getCode()); | 
|         queryWrapper.like(jkSketchCustomer.getName()!=null,JkCustomer::getName,jkSketchCustomer.getName()); | 
|         queryWrapper.eq(jkSketchCustomer.getType() != null,JkSketchCustomer::getType,jkSketchCustomer.getType()); | 
|         if (jkSketchCustomer.getId() != null) { | 
|             queryWrapper.eq(JkSketchCustomer::getId,jkSketchCustomer.getId()); | 
|         } | 
|         if (jkSketchCustomer.getCreateDate() != null) { | 
|             queryWrapper.ge(JkSketchCustomer::getCreateDate, Utils.Date.getStart(jkSketchCustomer.getCreateDate())); | 
|             queryWrapper.le(JkSketchCustomer::getCreateDate, Utils.Date.getEnd(jkSketchCustomer.getCreateDate())); | 
|         } | 
|         if (jkSketchCustomer.getEditor() != null) { | 
|             queryWrapper.eq(JkSketchCustomer::getEditor,jkSketchCustomer.getEditor()); | 
|         } | 
|         if (jkSketchCustomer.getEditDate() != null) { | 
|             queryWrapper.ge(JkSketchCustomer::getEditDate, Utils.Date.getStart(jkSketchCustomer.getEditDate())); | 
|             queryWrapper.le(JkSketchCustomer::getEditDate, Utils.Date.getEnd(jkSketchCustomer.getEditDate())); | 
|         } | 
|         if (jkSketchCustomer.getIsdeleted() != null) { | 
|             queryWrapper.eq(JkSketchCustomer::getIsdeleted,jkSketchCustomer.getIsdeleted()); | 
|         } | 
|         if (jkSketchCustomer.getInfo() != null) { | 
|             queryWrapper.eq(JkSketchCustomer::getInfo,jkSketchCustomer.getInfo()); | 
|         } | 
|         if (jkSketchCustomer.getSketchLineId() != null) { | 
|             queryWrapper.eq(JkSketchCustomer::getSketchLineId,jkSketchCustomer.getSketchLineId()); | 
|         } | 
|         if (jkSketchCustomer.getSketchId() != null) { | 
|             queryWrapper.eq(JkSketchCustomer::getSketchId,jkSketchCustomer.getSketchId()); | 
|         } | 
|         if (jkSketchCustomer.getTotalNum() != null) { | 
|             queryWrapper.eq(JkSketchCustomer::getTotalNum,jkSketchCustomer.getTotalNum()); | 
|         } | 
|         if (jkSketchCustomer.getOrderId() != null) { | 
|             queryWrapper.eq(JkSketchCustomer::getOrderId,jkSketchCustomer.getOrderId()); | 
|         } | 
|         if (jkSketchCustomer.getSortnum() != null) { | 
|             queryWrapper.eq(JkSketchCustomer::getSortnum,jkSketchCustomer.getSortnum()); | 
|         } | 
|   | 
|         queryWrapper.orderByAsc(JkSketchCustomer::getSketchLineId,JkSketchCustomer::getSortnum); | 
|        return   jkSketchCustomerMapper.selectJoinList(JkSketchCustomer.class,queryWrapper); | 
|     } | 
|    | 
|     @Override | 
|     public PageData<JkSketchCustomer> findPage(PageWrap<JkSketchCustomer> pageWrap) { | 
|         if(pageWrap.getModel().getSketchId()!=null){ | 
|             JkSketch sketch = jkSketchMapper.selectById(pageWrap.getModel().getSketchId()); | 
|             if(sketch!=null){ | 
|                 pageWrap.getModel().setType(Constants.formatIntegerNum(sketch.getOptStatus())); | 
|             } | 
|         } | 
|         IPage<JkSketchCustomer> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity()); | 
|         MPJLambdaWrapper<JkSketchCustomer> queryWrapper = new MPJLambdaWrapper<>(); | 
|         Utils.MP.blankToNull(pageWrap.getModel()); | 
|         pageWrap.getModel().setIsdeleted(Constants.ZERO); | 
|         queryWrapper.selectAll(JkSketchCustomer.class ) | 
|                 .selectAs(JkCustomer::getName,JkSketchCustomer::getName) | 
|                 .selectAs(JkCustomer::getCode,JkSketchCustomer::getCode) | 
|                 .selectAs(JkLine::getName,JkSketchCustomer::getLineName) | 
|                 .selectAs(Category::getId,JkSketchCustomer::getCategoryId) | 
|                 .selectAs(Category::getName,JkSketchCustomer::getCategoryName) | 
|                 .leftJoin(JkOrders.class,JkOrders::getId,JkSketchCustomer::getOrderId ) | 
|                 .leftJoin(JkCustomer.class,JkCustomer::getId,JkSketchCustomer::getCustomerId ) | 
|                 .leftJoin(JkSketchLine.class,JkSketchLine::getId,JkSketchCustomer::getSketchLineId ) | 
|                 .leftJoin(JkLine.class,JkLine::getId,JkSketchLine::getLineId ) | 
|                 .leftJoin(Category.class,Category::getId,JkLine::getCategoryId ); | 
|         queryWrapper.eq( pageWrap.getModel().getType()!=null,JkSketchCustomer::getType, pageWrap.getModel().getType()); | 
|         queryWrapper.eq( pageWrap.getModel().getCategoryId()!=null,JkLine::getCategoryId, pageWrap.getModel().getCategoryId()); | 
|         queryWrapper.eq( pageWrap.getModel().getDateInfo()!=null,JkSketchCustomer::getDateInfo, pageWrap.getModel().getDateInfo()); | 
|         queryWrapper.like( pageWrap.getModel().getCode()!=null,JkCustomer::getCode, pageWrap.getModel().getCode()); | 
|         queryWrapper.like( pageWrap.getModel().getName()!=null,JkCustomer::getName, pageWrap.getModel().getName()); | 
|   | 
|         if (pageWrap.getModel().getId() != null) { | 
|             queryWrapper.eq(JkSketchCustomer::getId, pageWrap.getModel().getId()); | 
|         } | 
|         if (pageWrap.getModel().getCreator() != null) { | 
|             queryWrapper.eq(JkSketchCustomer::getCreator, pageWrap.getModel().getCreator()); | 
|         } | 
|         if (pageWrap.getModel().getCreateDate() != null) { | 
|             queryWrapper.ge(JkSketchCustomer::getCreateDate, Utils.Date.getStart(pageWrap.getModel().getCreateDate())); | 
|             queryWrapper.le(JkSketchCustomer::getCreateDate, Utils.Date.getEnd(pageWrap.getModel().getCreateDate())); | 
|         } | 
|         if (pageWrap.getModel().getEditor() != null) { | 
|             queryWrapper.eq(JkSketchCustomer::getEditor, pageWrap.getModel().getEditor()); | 
|         } | 
|         if (pageWrap.getModel().getEditDate() != null) { | 
|             queryWrapper.ge(JkSketchCustomer::getEditDate, Utils.Date.getStart(pageWrap.getModel().getEditDate())); | 
|             queryWrapper.le(JkSketchCustomer::getEditDate, Utils.Date.getEnd(pageWrap.getModel().getEditDate())); | 
|         } | 
|         if (pageWrap.getModel().getIsdeleted() != null) { | 
|             queryWrapper.eq(JkSketchCustomer::getIsdeleted, pageWrap.getModel().getIsdeleted()); | 
|         } | 
|         if (pageWrap.getModel().getInfo() != null) { | 
|             queryWrapper.eq(JkSketchCustomer::getInfo, pageWrap.getModel().getInfo()); | 
|         } | 
|         if (pageWrap.getModel().getSketchLineId() != null) { | 
|             queryWrapper.eq(JkSketchCustomer::getSketchLineId, pageWrap.getModel().getSketchLineId()); | 
|         } | 
|         if (pageWrap.getModel().getSketchId() != null) { | 
|             queryWrapper.eq(JkSketchCustomer::getSketchId, pageWrap.getModel().getSketchId()); | 
|         } | 
|         if (pageWrap.getModel().getTotalNum() != null) { | 
|             queryWrapper.eq(JkSketchCustomer::getTotalNum, pageWrap.getModel().getTotalNum()); | 
|         } | 
|         if (pageWrap.getModel().getOrderId() != null) { | 
|             queryWrapper.eq(JkSketchCustomer::getOrderId, pageWrap.getModel().getOrderId()); | 
|         } | 
|         if (pageWrap.getModel().getSortnum() != null) { | 
|             queryWrapper.eq(JkSketchCustomer::getSortnum, pageWrap.getModel().getSortnum()); | 
|         } | 
|   | 
|         queryWrapper.orderByAsc(JkSketchCustomer::getSketchLineId,JkSketchCustomer::getSortnum); | 
|         IPage<JkSketchCustomer> result = jkSketchCustomerMapper.selectJoinPage(page, JkSketchCustomer.class,queryWrapper); | 
|         return PageData.from(result); | 
|     } | 
|   | 
|     @Override | 
|     public long count(JkSketchCustomer jkSketchCustomer) { | 
|         QueryWrapper<JkSketchCustomer> wrapper = new QueryWrapper<>(jkSketchCustomer); | 
|         return jkSketchCustomerMapper.selectCount(wrapper); | 
|     } | 
| } |