package com.huaheng.pc.config.pointPosition.service; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.huaheng.common.constant.QuantityConstant; import com.huaheng.common.utils.StringUtils; import com.huaheng.common.utils.Wrappers; import com.huaheng.common.utils.security.ShiroUtils; import com.huaheng.framework.web.domain.AjaxResult; import com.huaheng.pc.config.pointPosition.domain.PointPosition; import com.huaheng.pc.config.pointPosition.mapper.PointPositionMapper; import com.huaheng.pc.task.agvTask.domain.Shelf; import org.springframework.stereotype.Service; import java.util.ArrayList; import java.util.Date; import java.util.List; /** * 【请填写功能名称】 服务层实现 * * @author huaheng * @date 2022-08-29 */ @Service public class PointPositionServiceImpl extends ServiceImpl<PointPositionMapper, PointPosition> implements IPointPositionService { @Override public PointPosition getPositionByPositionName(String code, String warehouseCode) { PointPosition one = this.getOne(new LambdaQueryWrapper<PointPosition>() .eq(PointPosition::getPositionName,code) .last("LIMIT 1")); return one; } @Override public void updateStatus(String point, String status, String warehouseCode) { if (StringUtils.isNotEmpty(point)) { this.update(new LambdaUpdateWrapper<PointPosition>() .eq(PointPosition::getPositionName, point) .eq(PointPosition::getWarehouseCode, QuantityConstant.WAREHOUSE_CS) .set(PointPosition::getStatus, status)); } } @Override public void setContainerCode(String positionName, String containerCode, String warehouseCode) { if(StringUtils.isNotEmpty(positionName)){ this.update(new LambdaUpdateWrapper<PointPosition>() .eq(PointPosition::getPositionName, positionName) .eq(PointPosition::getWarehouseCode, QuantityConstant.WAREHOUSE_CS) .set(PointPosition::getContainerCode, containerCode)); } } @Override public AjaxResult<List<PointPosition>> insertPointPosition(String pointPositionType, Integer quantity) { List<PointPosition> containerList = new ArrayList<>(); List<PointPosition> containers =new ArrayList<>(); Integer number = getNumber(pointPositionType); for(int i=0; i<quantity; i++) { number++; PointPosition container = new PointPosition(); if(pointPositionType.equals("A")){ container.setPositionName(String.format("%s%01d", pointPositionType, number)); } if(pointPositionType.equals("P")){ container.setPositionName(String.format("%s%04d", pointPositionType, number)); } if(pointPositionType.equals("H")){ container.setPositionName(String.format("%s%04d", pointPositionType, number)); } container.setStatus(QuantityConstant.STATUS_CONTAINER_EMPTY); container.setCreated(new Date()); container.setUpdated(new Date()); container.setEnable("1"); container.setWarehouseCode(ShiroUtils.getWarehouseCode()); containers.add(container); if( i>0 && (i%1000==0 || i == quantity-1)){ this.saveBatch(containers); containers = new ArrayList<>(); } } return AjaxResult.success(containers); } @Override public boolean clearShelfByPositionName(String positionName) { LambdaUpdateWrapper<PointPosition> updateWrapper = Wrappers.lambdaUpdate(); updateWrapper.eq(PointPosition::getPositionName,positionName) .set(PointPosition::getStatus,QuantityConstant.STATUS_CONTAINER_EMPTY) .set(PointPosition::getShelfNo,null); return this.update(updateWrapper); } @Override public boolean fillShelfByPositionName(String positionName,String shelfNo) { LambdaUpdateWrapper<PointPosition> updateWrapper = Wrappers.lambdaUpdate(); updateWrapper.eq(PointPosition::getPositionName,positionName) .set(PointPosition::getStatus,QuantityConstant.STATUS_CONTAINER_SOME) .set(PointPosition::getShelfNo,shelfNo); return this.update(updateWrapper); } private Integer getNumber(String type) { if(type.equals("A")){ PointPosition pointPosition=getPointPositionByPositionName(type); //如果指定类型的最后的code存在,那么 code = 容器类型 + (排序号 + 1) if (pointPosition != null && pointPosition.getPositionName() != null) { Integer number = Integer.valueOf(pointPosition.getPositionName().substring(1, pointPosition.getPositionName().length())); return number; } else { return 0; } } if(type.equals("P")){ PointPosition pointPosition=getPointPositionByPositionName(type); //如果指定类型的最后的code存在,那么 code = 容器类型 + (排序号 + 1) if (pointPosition != null && pointPosition.getPositionName() != null) { Integer number = Integer.valueOf(pointPosition.getPositionName().substring( pointPosition.getPositionName().length()-4, pointPosition.getPositionName().length())); return number; } else { return 0; } } if(type.equals("H")){ PointPosition pointPosition=getPointPositionByPositionName(type); //如果指定类型的最后的code存在,那么 code = 容器类型 + (排序号 + 1) if (pointPosition != null && pointPosition.getPositionName() != null) { Integer number = Integer.valueOf(pointPosition.getPositionName().substring( pointPosition.getPositionName().length()-4, pointPosition.getPositionName().length())); return number; } else { return 0; } } return 0; } public PointPosition getPointPositionByPositionName(String positionName) { PointPosition one = this.getOne(new LambdaQueryWrapper<PointPosition>() .eq(PointPosition::getPositionName, positionName) .last("LIMIT 1")); return one; } }