package org.jeecg.modules.dnc.service.impl; import cn.hutool.core.util.StrUtil; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.apache.shiro.SecurityUtils; import org.jeecg.common.system.vo.LoginUser; import org.jeecg.modules.dnc.exception.ExceptionCast; import org.jeecg.modules.dnc.mapper.ProcessStreamMapper; import org.jeecg.modules.dnc.response.*; import org.jeecg.modules.dnc.service.*; import org.jeecg.modules.dnc.utils.ValidateUtil; import org.jeecg.modules.dnc.request.ProcessStreamRequest; import org.jeecg.modules.dnc.entity.*; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.Collections; import java.util.List; @Service public class ProcessStreamServiceImpl extends ServiceImpl implements IProcessStreamService { @Autowired @Lazy private IComponentInfoService componentInfoService; @Autowired private IProcessInfoService processInfoService; @Autowired private IPartsInfoService partsInfoService; @Autowired private IDocInfoService docInfoService; @Autowired @Lazy private IDeviceInfoService deviceInfoService; @Autowired private INcLogInfoService iNcLogInfoService; @Autowired private IPermissionStreamService permissionStreamService; @Override @Transactional(rollbackFor = {Exception.class}) public boolean addProcessStream(ProcessStream stream) { if(stream == null) ExceptionCast.cast(CommonCode.INVALID_PARAM); if(!ValidateUtil.validateString(stream.getProductId())) ExceptionCast.cast(ProcessInfoCode.PROCESS_PRODUCT_NONE); if(!ValidateUtil.validateString(stream.getComponentId())) ExceptionCast.cast(ProcessInfoCode.PROCESS_COMPONENT_NONE); if(!ValidateUtil.validateString(stream.getProcessName())) ExceptionCast.cast(ProcessInfoCode.PROCESS_NAME_NONE); if(!ValidateUtil.validateString(stream.getProcessCode())) ExceptionCast.cast(ProcessInfoCode.PROCESS_CODE_NONE); LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal(); String userId = user.getId(); if(!ValidateUtil.validateString(userId)) ExceptionCast.cast(UcenterCode.UCENTER_ACCOUNT_NOT_EXIST); if(ValidateUtil.validateString(stream.getPartsId())) { PartsInfo partsInfo = partsInfoService.getById(stream.getPartsId()); if(partsInfo == null) ExceptionCast.cast(ProcessInfoCode.PROCESS_PARTS_NONE); if(!stream.getProductId().equals(partsInfo.getProductId())) ExceptionCast.cast(ProcessInfoCode.PROCESS_PRODUCT_NONE); if(!stream.getComponentId().equals(partsInfo.getComponentId())) ExceptionCast.cast(ProcessInfoCode.PROCESS_COMPONENT_NONE); ProcessStream en = findByProcessNoAndPartsId(stream.getProcessCode(), partsInfo.getPartsId()); if(en != null) { ExceptionCast.cast(ProcessInfoCode.PROCESS_IS_EXIST); } }else { ComponentInfo componentInfo = componentInfoService.getById(stream.getComponentId()); if(componentInfo == null) ExceptionCast.cast(ProcessInfoCode.PROCESS_COMPONENT_NONE); if(!stream.getProductId().equals(componentInfo.getProductId())) ExceptionCast.cast(ProcessInfoCode.PROCESS_PRODUCT_NONE); stream.setPartsId(null); ProcessStream en = findByProcessNoAndComponentId(stream.getProcessCode(), componentInfo.getComponentId()); if(en != null) { ExceptionCast.cast(ProcessInfoCode.PROCESS_IS_EXIST); } } //添加日志 NcLogInfo ncLogInfo = new NcLogInfo(); //模块 ncLogInfo.setModuleInfo("产品结构树"); //类型 ncLogInfo.setOperateType(2); //日志内容 ncLogInfo.setLogContent("工序名称:"+stream.getProcessName()+",工序号:"+stream.getProcessCode()); iNcLogInfoService.saveLogNcInfos(ncLogInfo); boolean b = super.save(stream); if(!b) ExceptionCast.cast(CommonCode.FAIL); // ProcessInfo processInfo = new ProcessInfo(); // processInfo.setProcessName(stream.getProcessName()); // processInfo.setDescription(stream.getDescription()); // boolean processInfoB= processInfoService.addOrEdit(processInfo); // if(!processInfoB) // ExceptionCast.cast(CommonCode.FAIL); //添加权限验证 PermissionStream permissionStream = new PermissionStream(); permissionStream.setUserId(userId); permissionStream.setProductId(stream.getProductId()); permissionStream.setComponentId(stream.getComponentId()); if (StrUtil.isNotEmpty(stream.getPartsId())){ permissionStream.setPartsId(stream.getPartsId()); } permissionStream.setProcessId(stream.getProcessId()); return permissionStreamService.save(permissionStream); } @Override @Transactional(rollbackFor = {Exception.class}) public boolean editProcessStream(String id, ProcessStream stream) { if(!ValidateUtil.validateString(id) || stream == null) ExceptionCast.cast(CommonCode.INVALID_PARAM); if(!ValidateUtil.validateString(stream.getProcessName())) ExceptionCast.cast(ProcessInfoCode.PROCESS_NAME_NONE); ProcessStream en = super.getById(id); if(en == null) ExceptionCast.cast(ProcessInfoCode.PROCESS_NOT_EXIST); stream.setProcessId(id); stream.setProductId(null); stream.setComponentId(null); stream.setPartsId(null); stream.setProcessName(stream.getProcessName().toUpperCase()); stream.setProcessCode(null); //添加日志 NcLogInfo ncLogInfo = new NcLogInfo(); //模块 ncLogInfo.setModuleInfo("产品结构树"); //类型 ncLogInfo.setOperateType(3); //日志内容 ncLogInfo.setLogContent("工序号:"+en.getProcessCode()); ncLogInfo.setRemark(JSONObject.toJSONString(en)); iNcLogInfoService.saveLogNcInfos(ncLogInfo); boolean b = super.updateById(stream); if(!b) ExceptionCast.cast(CommonCode.FAIL); ProcessInfo processInfo = new ProcessInfo(); processInfo.setProcessName(stream.getProcessName()); processInfo.setDescription(stream.getDescription()); return processInfoService.addOrEdit(processInfo); } @Override @Transactional(rollbackFor = {Exception.class}) public boolean deleteProcessStream(String id) { if(!ValidateUtil.validateString(id)) ExceptionCast.cast(CommonCode.INVALID_PARAM); ProcessStream en = super.getById(id); if(en == null) ExceptionCast.cast(ProcessInfoCode.PROCESS_NOT_EXIST); boolean b = docInfoService.deleteByProcessId(en.getProcessId()); if(!b) ExceptionCast.cast(CommonCode.FAIL); //添加日志 NcLogInfo ncLogInfo = new NcLogInfo(); //模块 ncLogInfo.setModuleInfo("产品结构树"); //类型 ncLogInfo.setOperateType(4); //日志内容 ncLogInfo.setLogContent("工序号:"+en.getProcessCode()); iNcLogInfoService.saveLogNcInfos(ncLogInfo); return super.removeById(id); } @Override public List findByNodeParams(ProcessStreamRequest request) { if(request == null || !ValidateUtil.validateString(request.getProductId()) || !ValidateUtil.validateString(request.getComponentId())) return Collections.emptyList(); LambdaQueryChainWrapper lambdaQuery = super.lambdaQuery().eq(ProcessStream::getProductId, request.getProductId()).eq(ProcessStream::getComponentId, request.getComponentId()); if(ValidateUtil.validateString(request.getPartsId())) { lambdaQuery.eq(ProcessStream::getPartsId, request.getPartsId()); }else { lambdaQuery.isNull(ProcessStream::getPartsId); } return lambdaQuery.list(); } @Override public List findByProductId(String productId) { return super.lambdaQuery().eq(ProcessStream::getProductId, productId).list(); } @Override public List findByComponentId(String componentId) { return super.lambdaQuery().eq(ProcessStream::getComponentId, componentId).list(); } @Override public List findByPartsId(String partsId) { return super.lambdaQuery().eq(ProcessStream::getPartsId, partsId).list(); } @Override public ProcessStream findByProcessNoAndPartsId(String processNo, String partsId) { List list = super.lambdaQuery().eq(ProcessStream::getPartsId, partsId).eq(ProcessStream::getProcessCode, processNo).list(); if(list == null || list.isEmpty()) return null; return list.get(0); } @Override public ProcessStream findByProcessNoAndComponentId(String processNo, String componentId) { List list = super.lambdaQuery().eq(ProcessStream::getComponentId, componentId).eq(ProcessStream::getProcessCode, processNo).list(); if(list == null || list.isEmpty()) return null; return list.get(0); } @Override public List validateDeviceProcessInfo(String pnCode, String deviceNo) { if(!ValidateUtil.validateString(pnCode) || !ValidateUtil.validateString(deviceNo)) ExceptionCast.cast(CommonCode.INVALID_PARAM); DeviceInfo deviceInfo = deviceInfoService.getByDeviceNo(deviceNo); if(deviceInfo == null) ExceptionCast.cast(DeviceCode.DEVICE_NOT_EXIST); PermissionStream stream = componentInfoService.validateComponentOrPartsPnCode(pnCode); if(stream == null) ExceptionCast.cast(ComponentInfoCode.COMPONENT_PN_NOT_EXIST); LambdaQueryWrapper lambdaQueryWrapper = Wrappers.lambdaQuery(); lambdaQueryWrapper.eq(ProcessStream::getProductId, stream.getProductId()); lambdaQueryWrapper.eq(ProcessStream::getComponentId, stream.getComponentId()); if(ValidateUtil.validateString(stream.getPartsId())) { lambdaQueryWrapper.eq(ProcessStream::getPartsId, stream.getPartsId()); } lambdaQueryWrapper.like(ProcessStream::getProcessingEquipmentCode, deviceNo); List list = super.list(lambdaQueryWrapper); if(list == null || list.isEmpty()) ExceptionCast.cast(ProcessInfoCode.PROCESS_NOT_EXIST); return list; } @Override public List getByuserPerms(String userId){ if(!ValidateUtil.validateString(userId)) return Collections.emptyList(); return super.getBaseMapper().getByUserPerms(userId); } @Override public List getByuserPerms(String userId,String queryParam){ if(!ValidateUtil.validateString(userId)) return Collections.emptyList(); if(!ValidateUtil.validateString(queryParam)) return Collections.emptyList(); LambdaQueryWrapper queryWrapper = Wrappers.lambdaQuery(); if(ValidateUtil.validateString(queryParam)) { queryWrapper.and(wrapper->wrapper.like(ProcessStream::getProcessName, queryParam) .or() .like(ProcessStream::getProcessName, queryParam)); } queryWrapper.orderByAsc(ProcessStream::getCreateTime); return super.list(queryWrapper); } }