package com.zy.acs.manager.manager.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.zy.acs.common.utils.CodeUtils; import com.zy.acs.manager.common.domain.CodeExcel; import com.zy.acs.manager.common.exception.BusinessException; import com.zy.acs.manager.manager.entity.Code; import com.zy.acs.manager.manager.entity.CodeGap; import com.zy.acs.manager.manager.mapper.CodeMapper; import com.zy.acs.manager.manager.service.CodeGapService; import com.zy.acs.manager.manager.service.CodeService; import com.zy.acs.manager.manager.service.RouteService; import com.zy.acs.framework.common.Cools; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.List; import java.util.Map; @Service("codeService") public class CodeServiceImpl extends ServiceImpl implements CodeService { @Autowired private CodeGapService codeGapService; @Autowired private RouteService routeService; @Override public Code selectByData(String data) { return this.getOne(new LambdaQueryWrapper().eq(Code::getData, data)); } @Override public void importExecute(List excelList) { for (CodeExcel excel : excelList) { Code code = this.selectByData(excel.getCode()); if (null == code) { code = new Code(); code.setUuid("code" + excel.getCode()); code.setData(excel.getCode()); code.setX(excel.getX()); code.setY(excel.getY()); code.setScale(CodeUtils.DEFAULT_SCALE); code.setMemo(excel.getMemo()); if (!save(code)) { throw new BusinessException(excel.getCode() + "保存失败"); } } } for (CodeExcel excel : excelList) { Code code = selectByData(excel.getCode()); if (!Cools.isEmpty(excel.getNearCode1())) { Code nearCode = selectByData(excel.getNearCode1()); if (null == nearCode) { throw new BusinessException(excel.getNearCode1() + "不存在"); } CodeGap codeGap = codeGapService.findByCodeOfBoth(code.getId(), nearCode.getId()); if (null == codeGap) { codeGap = new CodeGap(); codeGap.setCode0(code.getId()); codeGap.setCode1(nearCode.getId()); codeGap.setDistance(excel.getNearCodeDistance1()); if (!codeGapService.save(codeGap)) { throw new BusinessException(code.getData() + " - " + nearCode.getData() + "间距保存失败"); } else { routeService.createRouteByCode(code, nearCode); } } } if (!Cools.isEmpty(excel.getNearCode2())) { Code nearCode = selectByData(excel.getNearCode2()); if (null == nearCode) { throw new BusinessException(excel.getNearCode2() + "不存在"); } CodeGap codeGap = codeGapService.findByCodeOfBoth(code.getId(), nearCode.getId()); if (null == codeGap) { codeGap = new CodeGap(); codeGap.setCode0(code.getId()); codeGap.setCode1(nearCode.getId()); codeGap.setDistance(excel.getNearCodeDistance2()); if (!codeGapService.save(codeGap)) { throw new BusinessException(code.getData() + " - " + nearCode.getData() + "间距保存失败"); } else { routeService.createRouteByCode(code, nearCode); } } } if (!Cools.isEmpty(excel.getNearCode3())) { Code nearCode = selectByData(excel.getNearCode3()); if (null == nearCode) { throw new BusinessException(excel.getNearCode3() + "不存在"); } CodeGap codeGap = codeGapService.findByCodeOfBoth(code.getId(), nearCode.getId()); if (null == codeGap) { codeGap = new CodeGap(); codeGap.setCode0(code.getId()); codeGap.setCode1(nearCode.getId()); codeGap.setDistance(excel.getNearCodeDistance3()); if (!codeGapService.save(codeGap)) { throw new BusinessException(code.getData() + " - " + nearCode.getData() + "间距保存失败"); } else { routeService.createRouteByCode(code, nearCode); } } } if (!Cools.isEmpty(excel.getNearCode4())) { Code nearCode = selectByData(excel.getNearCode4()); if (null == nearCode) { throw new BusinessException(excel.getNearCode4() + "不存在"); } CodeGap codeGap = codeGapService.findByCodeOfBoth(code.getId(), nearCode.getId()); if (null == codeGap) { codeGap = new CodeGap(); codeGap.setCode0(code.getId()); codeGap.setCode1(nearCode.getId()); codeGap.setDistance(excel.getNearCodeDistance4()); if (!codeGapService.save(codeGap)) { throw new BusinessException(code.getData() + " - " + nearCode.getData() + "间距保存失败"); } else { routeService.createRouteByCode(code, nearCode); } } } } } @Override @Transactional public void adaptation(Double width, Double height) { width = width - CodeUtils.ADAPTATION_OFFSET_X; // 菜单栏 Map map = this.baseMapper.selectMinAndMaxByPoint(); Double minX = Double.parseDouble(String.valueOf(map.get("min_x"))); Double minY = Double.parseDouble(String.valueOf(map.get("min_y"))); Double maxX = Double.parseDouble(String.valueOf(map.get("max_x"))); Double maxY = Double.parseDouble(String.valueOf(map.get("max_y"))); // 缩放后需要的偏移量 double scaleOffsetX = width * (1 -CodeUtils.ADAPTATION_SCALE) / 2; double scaleOffsetY = height * (1 -CodeUtils.ADAPTATION_SCALE) / 2; List codeList = this.list(); for (Code code : codeList) { double adaptedX = ((code.getX() - minX) / (maxX - minX)) * width * CodeUtils.ADAPTATION_SCALE + scaleOffsetX; double adaptedY = ((code.getY() - minY) / (maxY - minY)) * height * CodeUtils.ADAPTATION_SCALE + scaleOffsetY; adaptedX = adaptedX + CodeUtils.ADAPTATION_OFFSET_X; // 菜单栏 code.setX(adaptedX); code.setY(adaptedY); if (!updateById(code)) { throw new BusinessException(code.getData() + "条码调整坐标失败"); } } } @Override public int selectDistinctCountFromX() { return this.baseMapper.selectDistinctCountFromX(); } @Override public int selectDistinctCountFromY() { return this.baseMapper.selectDistinctCountFromY(); } }