| package doumeemes.service.business.impl; | 
|   | 
| 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.ProceduresMapper; | 
| import doumeemes.dao.business.model.Procedures; | 
| import doumeemes.dao.business.model.RouteProcedure; | 
| import doumeemes.service.business.ProceduresService; | 
| 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.service.ext.ProceduresExtService; | 
| 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.util.CollectionUtils; | 
|   | 
| import java.util.Date; | 
| import java.util.List; | 
|   | 
| /** | 
|  * 工序信息表Service实现 | 
|  * @author 江蹄蹄 | 
|  * @date 2022/04/20 09:34 | 
|  */ | 
| @Service | 
| public class ProceduresServiceImpl implements ProceduresService { | 
|   | 
|     @Autowired | 
|     private ProceduresMapper proceduresMapper; | 
|     @Autowired | 
|     private ProceduresExtService proceduresExtService; | 
|   | 
|   | 
|     @Autowired | 
|     private  RouteProcedureServiceImpl routeProcedureServiceimpl; | 
|   | 
|   | 
|     @Autowired | 
|     private RedisTemplate<String, Object> redisTemplate; | 
|   | 
|     @Override | 
|     public synchronized String  getNextCode(Integer comId ){ | 
|         String prefix =  "GX-" + DateUtil.getDate(new Date(),"yyyyMMdd") +"-"; | 
|         Integer countNum  = RedisUtil.getObject(redisTemplate,Constants.RedisKeys.COM_PROCEDURES_CHECK_KEY+comId,Integer.class); | 
|         countNum = Constants.formatIntegerNum(countNum)+1; | 
|         //更新缓存 | 
|         RedisUtil.addObject(redisTemplate,Constants.RedisKeys.COM_PROCEDURES_CHECK_KEY+comId,countNum); | 
|         String nextIndex =Integer.toString( countNum ); | 
|         return prefix + StringUtils.leftPad(nextIndex,4,"0"); | 
|     } | 
|   | 
|     @Override | 
|     public Integer create(Procedures procedures) { | 
|         proceduresMapper.insert(procedures); | 
|         LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); | 
|         proceduresExtService.loadCom(user.getCompany()); | 
|         return procedures.getId(); | 
|     } | 
|   | 
|     @Override | 
|     public void deleteById(Integer id) { | 
|         proceduresMapper.deleteById(id); | 
|     } | 
|   | 
|     @Override | 
|     public ApiResponse delete(Procedures procedures) { | 
|         LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); | 
|         UpdateWrapper<Procedures> deleteWrapper = new UpdateWrapper<>(procedures); | 
|   | 
|         RouteProcedure routeProcedure=new RouteProcedure(); | 
|         routeProcedure.setDeleted(Constants.ZERO); | 
|         routeProcedure.setProcedureId(procedures.getId()); | 
|         List<RouteProcedure> list= routeProcedureServiceimpl.findList(routeProcedure); | 
|         if(list!=null&&list.size()>0){ | 
|             return ApiResponse.failed("当前工序已使用,无法删除"); | 
|         } | 
|       //  proceduresMapper.delete(deleteWrapper); | 
|         Procedures pr=   this.findById(procedures.getId()); | 
|         pr.setDeleted(Constants.ONE); | 
|         proceduresMapper.updateById(pr); | 
|         proceduresExtService.loadCom(user.getCompany()); | 
|         return ApiResponse.success(null); | 
|     } | 
|   | 
|     @Override | 
|     public void deleteByIdInBatch(List<Integer> ids) { | 
|         if (CollectionUtils.isEmpty(ids)) { | 
|             return; | 
|         } | 
|         proceduresMapper.deleteBatchIds(ids); | 
|     } | 
|   | 
|     @Override | 
|     public void updateById(Procedures procedures) { | 
|         proceduresMapper.updateById(procedures); | 
|         LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); | 
|         proceduresExtService.loadCom(user.getCompany()); | 
|     } | 
|   | 
|     @Override | 
|     public ApiResponse updateByIdInBatch(List<Procedures> proceduress) { | 
|         if (CollectionUtils.isEmpty(proceduress)) { | 
|             return ApiResponse.success(null); | 
|         } | 
|         for (Procedures procedures: proceduress) { | 
|   | 
|             RouteProcedure routeProcedure=new RouteProcedure(); | 
|             routeProcedure.setDeleted(Constants.ZERO); | 
|             routeProcedure.setProcedureId(procedures.getId()); | 
|             List<RouteProcedure> list= routeProcedureServiceimpl.findList(routeProcedure); | 
|             if(list!=null&&list.size()>0){ | 
|                 return ApiResponse.failed("当前工序已使用,无法删除"); | 
|             } | 
|             Procedures pr=   this.findById(procedures.getId()); | 
|             pr.setDeleted(Constants.ONE); | 
|             proceduresMapper.updateById(pr); | 
|         } | 
|         LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); | 
|         proceduresExtService.loadCom(user.getCompany()); | 
|         return ApiResponse.success(null); | 
|     } | 
|   | 
|     @Override | 
|     public Procedures findById(Integer id) { | 
|         return proceduresMapper.selectById(id); | 
|     } | 
|   | 
|     @Override | 
|     public Procedures findOne(Procedures procedures) { | 
|         QueryWrapper<Procedures> wrapper = new QueryWrapper<>(procedures); | 
|         return proceduresMapper.selectOne(wrapper); | 
|     } | 
|   | 
|     @Override | 
|     public List<Procedures> findList(Procedures procedures) { | 
|         QueryWrapper<Procedures> wrapper = new QueryWrapper<>(procedures); | 
|         return proceduresMapper.selectList(wrapper); | 
|     } | 
|    | 
|     @Override | 
|     public PageData<Procedures> findPage(PageWrap<Procedures> pageWrap) { | 
|         IPage<Procedures> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity()); | 
|         QueryWrapper<Procedures> queryWrapper = new QueryWrapper<>(); | 
|         Utils.MP.blankToNull(pageWrap.getModel()); | 
|         if (pageWrap.getModel().getId() != null) { | 
|             queryWrapper.lambda().eq(Procedures::getId, pageWrap.getModel().getId()); | 
|         } | 
|         if (pageWrap.getModel().getDeleted() != null) { | 
|             queryWrapper.lambda().eq(Procedures::getDeleted, pageWrap.getModel().getDeleted()); | 
|         } | 
|         if (pageWrap.getModel().getCreateUser() != null) { | 
|             queryWrapper.lambda().eq(Procedures::getCreateUser, pageWrap.getModel().getCreateUser()); | 
|         } | 
|         if (pageWrap.getModel().getCreateTime() != null) { | 
|             queryWrapper.lambda().ge(Procedures::getCreateTime, Utils.Date.getStart(pageWrap.getModel().getCreateTime())); | 
|             queryWrapper.lambda().le(Procedures::getCreateTime, Utils.Date.getEnd(pageWrap.getModel().getCreateTime())); | 
|         } | 
|         if (pageWrap.getModel().getUpdateUser() != null) { | 
|             queryWrapper.lambda().eq(Procedures::getUpdateUser, pageWrap.getModel().getUpdateUser()); | 
|         } | 
|         if (pageWrap.getModel().getUpdateTime() != null) { | 
|             queryWrapper.lambda().ge(Procedures::getUpdateTime, Utils.Date.getStart(pageWrap.getModel().getUpdateTime())); | 
|             queryWrapper.lambda().le(Procedures::getUpdateTime, Utils.Date.getEnd(pageWrap.getModel().getUpdateTime())); | 
|         } | 
|         if (pageWrap.getModel().getRemark() != null) { | 
|             queryWrapper.lambda().eq(Procedures::getRemark, pageWrap.getModel().getRemark()); | 
|         } | 
|         if (pageWrap.getModel().getRootDepartId() != null) { | 
|             queryWrapper.lambda().eq(Procedures::getRootDepartId, pageWrap.getModel().getRootDepartId()); | 
|         } | 
|         if (pageWrap.getModel().getDepartId() != null) { | 
|             queryWrapper.lambda().eq(Procedures::getDepartId, pageWrap.getModel().getDepartId()); | 
|         } | 
|         if (pageWrap.getModel().getCode() != null) { | 
|             queryWrapper.lambda().eq(Procedures::getCode, pageWrap.getModel().getCode()); | 
|         } | 
|         if (pageWrap.getModel().getName() != null) { | 
|             queryWrapper.lambda().eq(Procedures::getName, pageWrap.getModel().getName()); | 
|         } | 
|         if (pageWrap.getModel().getSortnum() != null) { | 
|             queryWrapper.lambda().eq(Procedures::getSortnum, pageWrap.getModel().getSortnum()); | 
|         } | 
|         if (pageWrap.getModel().getOrgId() != null) { | 
|             queryWrapper.lambda().eq(Procedures::getOrgId, pageWrap.getModel().getOrgId()); | 
|         } | 
|         if (pageWrap.getModel().getUserId() != null) { | 
|             queryWrapper.lambda().eq(Procedures::getUserId, pageWrap.getModel().getUserId()); | 
|         } | 
|         if (pageWrap.getModel().getPickingWarehouseId() != null) { | 
|             queryWrapper.lambda().eq(Procedures::getPickingWarehouseId, pageWrap.getModel().getPickingWarehouseId()); | 
|         } | 
|         if (pageWrap.getModel().getProduceWarehouseId() != null) { | 
|             queryWrapper.lambda().eq(Procedures::getProduceWarehouseId, pageWrap.getModel().getProduceWarehouseId()); | 
|         } | 
|         if (pageWrap.getModel().getLevel() != null) { | 
|             queryWrapper.lambda().eq(Procedures::getLevel, pageWrap.getModel().getLevel()); | 
|         } | 
|         for(PageWrap.SortData sortData: pageWrap.getSorts()) { | 
|             if (sortData.getDirection().equalsIgnoreCase(PageWrap.DESC)) { | 
|                 queryWrapper.orderByDesc(sortData.getProperty()); | 
|             } else { | 
|                 queryWrapper.orderByAsc(sortData.getProperty()); | 
|             } | 
|         } | 
|         return PageData.from(proceduresMapper.selectPage(page, queryWrapper)); | 
|     } | 
|   | 
|     @Override | 
|     public long count(Procedures procedures) { | 
|         QueryWrapper<Procedures> wrapper = new QueryWrapper<>(procedures); | 
|         return proceduresMapper.selectCount(wrapper); | 
|     } | 
| } |