package doumeemes.service.business.impl; 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 doumeemes.core.model.ApiResponse; import doumeemes.core.model.LoginUserInfo; import doumeemes.core.model.PageData; import doumeemes.core.model.PageWrap; import doumeemes.core.utils.Constants; import doumeemes.core.utils.DateUtil; import doumeemes.core.utils.Utils; import doumeemes.core.utils.redis.RedisUtil; import doumeemes.dao.business.RouteMapper; import doumeemes.dao.business.model.*; import doumeemes.dao.ext.vo.ProceduresExtListVO; import doumeemes.service.business.RouteService; import doumeemes.service.ext.impl.ProceduresExtServiceImpl; import org.apache.commons.lang3.StringUtils; import org.apache.shiro.SecurityUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.CollectionUtils; import java.util.Date; import java.util.List; /** * 工艺路线信息表Service实现 * @author 江蹄蹄 * @date 2022/04/20 09:34 */ @Service public class RouteServiceImpl implements RouteService { @Autowired private RouteMapper routeMapper; @Autowired private ProceduresExtServiceImpl proceduresExtService; @Autowired private RouteProcedureServiceImpl routeProcedureService; @Autowired private RedisTemplate redisTemplate; @Autowired private BomServiceImpl bomServiceimpl; @Override public Integer create(Route route) { routeMapper.insert(route); return route.getId(); } @Override public ApiResponse insert(Route route) { LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); if(StringUtils.isBlank(route.getCode())){ route.setCode(this.getNextCode(user.getCompany().getId())); } Route find1=new Route(); find1.setDeleted(Constants.ZERO); find1.setRootDepartId(user.getRootDepartment().getId()); find1.setCode(route.getCode()); List list1= this.findList(find1); if(list1.size()>0){ return ApiResponse.failed("主组织下工艺编码已存在,不允许添加"); } Route find2=new Route(); find2.setDeleted(Constants.ZERO); find2.setRootDepartId(user.getRootDepartment().getId()); find2.setDepartId(route.getDepartId()); find2.setName(route.getName()); List list2= this.findList(find2); if(list2.size()>0){ return ApiResponse.failed("所属部门工艺名称已存在,不允许添加"); } route.setDeleted(Constants.ZERO); route.setCreateTime(new Date()); route.setCreateUser(user.getId()); route.setStatus(Constants.ONE); route.setRootDepartId(user.getRootDepartment().getId()); Integer routeId=this.create(route); if(route.getRpList()!=null&&route.getRpList().size()>0){ for(int i=0;i deleteWrapper = new UpdateWrapper<>(route); routeMapper.delete(deleteWrapper); } @Override public void deleteByIdInBatch(List ids) { if (CollectionUtils.isEmpty(ids)) { return; } routeMapper.deleteBatchIds(ids); } @Override public void updateById(Route route) { routeMapper.updateById(route); } @Override public void updateByIdInBatch(List routes) { if (CollectionUtils.isEmpty(routes)) { return; } for (Route route: routes) { this.updateById(route); } } @Override public Route findById(Integer id) { Route route= routeMapper.selectById(id); return route; } @Override public Route findOne(Route route) { QueryWrapper wrapper = new QueryWrapper<>(route); return routeMapper.selectOne(wrapper); } @Override public List findList(Route route) { QueryWrapper wrapper = new QueryWrapper<>(route); return routeMapper.selectList(wrapper); } @Override public PageData findPage(PageWrap pageWrap) { IPage page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity()); QueryWrapper queryWrapper = new QueryWrapper<>(); Utils.MP.blankToNull(pageWrap.getModel()); if (pageWrap.getModel().getId() != null) { queryWrapper.lambda().eq(Route::getId, pageWrap.getModel().getId()); } if (pageWrap.getModel().getDeleted() != null) { queryWrapper.lambda().eq(Route::getDeleted, pageWrap.getModel().getDeleted()); } if (pageWrap.getModel().getCreateUser() != null) { queryWrapper.lambda().eq(Route::getCreateUser, pageWrap.getModel().getCreateUser()); } if (pageWrap.getModel().getCreateTime() != null) { queryWrapper.lambda().ge(Route::getCreateTime, Utils.Date.getStart(pageWrap.getModel().getCreateTime())); queryWrapper.lambda().le(Route::getCreateTime, Utils.Date.getEnd(pageWrap.getModel().getCreateTime())); } if (pageWrap.getModel().getUpdateUser() != null) { queryWrapper.lambda().eq(Route::getUpdateUser, pageWrap.getModel().getUpdateUser()); } if (pageWrap.getModel().getUpdateTime() != null) { queryWrapper.lambda().ge(Route::getUpdateTime, Utils.Date.getStart(pageWrap.getModel().getUpdateTime())); queryWrapper.lambda().le(Route::getUpdateTime, Utils.Date.getEnd(pageWrap.getModel().getUpdateTime())); } if (pageWrap.getModel().getRemark() != null) { queryWrapper.lambda().eq(Route::getRemark, pageWrap.getModel().getRemark()); } if (pageWrap.getModel().getDepartId() != null) { queryWrapper.lambda().eq(Route::getDepartId, pageWrap.getModel().getDepartId()); } if (pageWrap.getModel().getRootDepartId() != null) { queryWrapper.lambda().eq(Route::getRootDepartId, pageWrap.getModel().getRootDepartId()); } if (pageWrap.getModel().getCode() != null) { queryWrapper.lambda().eq(Route::getCode, pageWrap.getModel().getCode()); } if (pageWrap.getModel().getName() != null) { queryWrapper.lambda().eq(Route::getName, pageWrap.getModel().getName()); } if (pageWrap.getModel().getStatus() != null) { queryWrapper.lambda().eq(Route::getStatus, pageWrap.getModel().getStatus()); } for(PageWrap.SortData sortData: pageWrap.getSorts()) { if (sortData.getDirection().equalsIgnoreCase(PageWrap.DESC)) { queryWrapper.orderByDesc(sortData.getProperty()); } else { queryWrapper.orderByAsc(sortData.getProperty()); } } return PageData.from(routeMapper.selectPage(page, queryWrapper)); } @Override public long count(Route route) { QueryWrapper wrapper = new QueryWrapper<>(route); return routeMapper.selectCount(wrapper); } @Override public Route findConditionById(Integer id) { Route route= routeMapper.selectById(id); RouteProcedure rou=new RouteProcedure(); rou.setDeleted(Constants.ZERO); rou.setRouteId(route.getId()); List list= proceduresExtService.getGYListByCondition(route.getId()); route.setProceList(list); return route; } @Override @Transactional public void updateStatus(List routes) { if (CollectionUtils.isEmpty(routes)) { return; } for (Route route: routes) { this.updateById(route); RouteProcedure findroute=new RouteProcedure(); findroute.setDeleted(Constants.ZERO); findroute.setRouteId(route.getId()); List list=routeProcedureService.findList(findroute); for(RouteProcedure rp:list){ rp.setStatus(route.getStatus()); } routeProcedureService.updateByIdInBatch(list); } } @Override public ApiResponse editupdate(Route route) { LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); Route find1=new Route(); find1.setDeleted(Constants.ZERO); find1.setRootDepartId(user.getRootDepartment().getId()); find1.setCode(route.getCode()); List list1= this.findList(find1); if(list1.size()>0){ if(list1.get(0).getId()!=route.getId()){ return ApiResponse.failed("主组织下工艺编码已存在,不允许添加"); } } Route find2=new Route(); find2.setDeleted(Constants.ZERO); find2.setRootDepartId(user.getRootDepartment().getId()); find2.setDepartId(route.getDepartId()); find2.setName(route.getName()); List list2= this.findList(find2); if(list2.size()>0){ if(!list1.get(0).getId().equals(route.getId())){ return ApiResponse.failed("所属部门工艺名称已存在,不允许添加"); } } route.setUpdateTime(new Date()); route.setUpdateUser(user.getRootDepartment().getId()); this.updateById(route); if(route.getRpList()!=null&&route.getRpList().size()>0){ RouteProcedure deleteRP=new RouteProcedure(); // deleteRP.setDepartId(route.getDepartId()); deleteRP.setRouteId(route.getId()); routeProcedureService.delete(deleteRP); for(int i=0;i