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); 
 | 
    } 
 | 
} 
 |