package doumeemes.service.ext.impl; 
 | 
  
 | 
import com.github.pagehelper.PageHelper; 
 | 
import com.github.pagehelper.PageInfo; 
 | 
import doumeemes.biz.system.SystemDictDataBiz; 
 | 
import doumeemes.core.constants.ResponseStatus; 
 | 
import doumeemes.core.exception.BusinessException; 
 | 
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.excel.EasyExcelUtil; 
 | 
import doumeemes.dao.business.RouteCardMapper; 
 | 
import doumeemes.dao.business.model.Bom; 
 | 
import doumeemes.dao.business.model.RouteCard; 
 | 
import doumeemes.dao.business.model.RouteProcedure; 
 | 
import doumeemes.dao.business.model.Workorder; 
 | 
import doumeemes.dao.ext.BomExtMapper; 
 | 
import doumeemes.dao.ext.BomVersionExtMapper; 
 | 
import doumeemes.dao.ext.RouteCardExtMapper; 
 | 
import doumeemes.dao.ext.beanDto.QueryBomDTO; 
 | 
import doumeemes.dao.ext.dto.QueryBomVersionExtDTO; 
 | 
import doumeemes.dao.ext.dto.QueryDepartmentExtDTO; 
 | 
import doumeemes.dao.ext.dto.QueryRouteCardExtDTO; 
 | 
import doumeemes.dao.ext.vo.*; 
 | 
import doumeemes.service.business.impl.*; 
 | 
import doumeemes.service.ext.RouteCardExtService; 
 | 
import org.apache.commons.lang3.StringUtils; 
 | 
import org.apache.shiro.SecurityUtils; 
 | 
import org.springframework.beans.factory.annotation.Autowired; 
 | 
import org.springframework.stereotype.Service; 
 | 
import org.springframework.transaction.annotation.Transactional; 
 | 
import org.springframework.web.multipart.MultipartFile; 
 | 
  
 | 
import java.util.Date; 
 | 
import java.util.List; 
 | 
import java.util.stream.Collectors; 
 | 
  
 | 
/** 
 | 
 * 工艺卡管理Service实现 
 | 
 * @author 江蹄蹄 
 | 
 * @date 2022/06/27 13:58 
 | 
 */ 
 | 
@Service 
 | 
public class RouteCardExtServiceImpl implements RouteCardExtService { 
 | 
  
 | 
    @Autowired 
 | 
    private RouteCardExtMapper routeCardExtMapper; 
 | 
  
 | 
    @Autowired 
 | 
    private RouteCardMapper routeCardMapper; 
 | 
    @Autowired 
 | 
    private DepartmentExtServiceImpl departmentExtServiceimpl; 
 | 
    @Autowired 
 | 
    private BomExtMapper bomExtMapper; 
 | 
    @Autowired 
 | 
    private RouteServiceImpl routeServiceimpl; 
 | 
  
 | 
    @Autowired 
 | 
    private ProceduresExtServiceImpl proceduresExtService; 
 | 
  
 | 
  
 | 
    @Autowired 
 | 
    private BomVersionExtMapper bomVersionExtMapper; 
 | 
    @Autowired 
 | 
    private RouteCardServiceImpl routeCardServiceimpl; 
 | 
  
 | 
    @Autowired 
 | 
    public SystemDictDataBiz systemDictDataBiz; 
 | 
  
 | 
    @Autowired 
 | 
    private WorkorderServiceImpl workorderServiceimpl; 
 | 
  
 | 
    @Autowired 
 | 
    private  BomServiceImpl bomServiceimpl; 
 | 
  
 | 
  
 | 
    @Autowired 
 | 
    private RouteProcedureServiceImpl routeProcedureServiceimpl; 
 | 
  
 | 
    @Override 
 | 
    public PageData<RouteCardExtListVO> findPage(PageWrap<QueryRouteCardExtDTO> pageWrap) { 
 | 
        LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); 
 | 
        pageWrap.getModel().setDeleted(Constants.ZERO); 
 | 
        pageWrap.getModel().setRootDepartId(user.getRootDepartment().getId()); 
 | 
        pageWrap.getModel().setDepartId(user.getCurComDepartment().getId()); 
 | 
        //当前登录用户所在所有工厂型组织 
 | 
        QueryDepartmentExtDTO querydepart=new QueryDepartmentExtDTO(); 
 | 
        querydepart.setType(Constants.ONE); 
 | 
        List<DepartmentExtListVO> departList= departmentExtServiceimpl.getDepartmentListByConditon(querydepart); 
 | 
        if(departList.size()>0){ 
 | 
            List<Integer> departIds =departList.stream().map(DepartmentExtListVO::getId).collect(Collectors.toList()); 
 | 
            pageWrap.getModel().setDepartIds(departIds); 
 | 
        } 
 | 
        PageHelper.startPage(pageWrap.getPage(), pageWrap.getCapacity()); 
 | 
  
 | 
        String resourcePath=  systemDictDataBiz.queryByCode(Constants.OSS,Constants.RESOURCE_PATH).getCode(); 
 | 
  
 | 
        List<RouteCardExtListVO> result = routeCardExtMapper.selectList(pageWrap.getModel()); 
 | 
        for(int i=0;i<result.size();i++){ 
 | 
            RouteCardExtListVO rev=result.get(i); 
 | 
            rev.setResourcePath(resourcePath); 
 | 
        } 
 | 
        return PageData.from(new PageInfo<>(result)); 
 | 
    } 
 | 
  
 | 
    @Transactional(rollbackFor = {BusinessException.class,Exception.class}) 
 | 
    @Override 
 | 
    public void importExcel(MultipartFile file)  { 
 | 
  
 | 
        LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); 
 | 
        if(!Constants.equalsInteger(user.getType(),Constants.USERTYPE.COM)){ 
 | 
            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "对不起,您无权限进行该操作!"); 
 | 
        } 
 | 
        //解析excel 
 | 
        List<RouteCardExtListVO> list = EasyExcelUtil.importExcel(file, 1, 1, RouteCardExtListVO.class); 
 | 
  
 | 
        if(list == null || list.size()==0){ 
 | 
            throw new BusinessException(ResponseStatus.SERVER_ERROR.getCode(), "导入数据内容有误!"); 
 | 
        } 
 | 
        for(int i=0;i<list.size();i++){ 
 | 
            RouteCardExtListVO routeCardExtListVO=list.get(i); 
 | 
            routeCardExtListVO.setDepartId(user.getCurComDepartment().getId()); 
 | 
  
 | 
  
 | 
            /** 
 | 
             * 工厂 
 | 
             */ 
 | 
          /*  if(StringUtils.isEmpty(routeCardExtListVO.getDepartName())){ 
 | 
                throw new BusinessException(ResponseStatus.SERVER_ERROR.getCode(), "工厂不能为空!"); 
 | 
            }*/ 
 | 
         /*   QueryDepartmentExtDTO queryDepartmentExtDTOpagewrap=new QueryDepartmentExtDTO(); 
 | 
            queryDepartmentExtDTOpagewrap.setType(Constants.ONE); 
 | 
            queryDepartmentExtDTOpagewrap.setName(routeCardExtListVO.getDepartName()); 
 | 
            List<DepartmentExtListVO> departList=  departmentExtServiceimpl.getDepartmentListByConditon(queryDepartmentExtDTOpagewrap); 
 | 
            if(departList==null||departList.size()<=0){ 
 | 
                throw new BusinessException(ResponseStatus.SERVER_ERROR.getCode(),"“"+routeCardExtListVO.getDepartName()+"“工厂不存在!"); 
 | 
            }else{ 
 | 
                routeCardExtListVO.setDepartId(departList.get(0).getId()); 
 | 
            }*/ 
 | 
  
 | 
            /** 
 | 
             * bom产品 
 | 
             */ 
 | 
            if(StringUtils.isEmpty(routeCardExtListVO.getMarterialName())){ 
 | 
                throw new BusinessException(ResponseStatus.SERVER_ERROR.getCode(),"产品名称不能为空"); 
 | 
  
 | 
            } 
 | 
            QueryBomDTO queryboxextpageWrap=new QueryBomDTO(); 
 | 
             queryboxextpageWrap.setDeleted(Constants.ZERO); 
 | 
            queryboxextpageWrap.setDepartId(user.getCurComDepartment().getId()); 
 | 
            queryboxextpageWrap.setRootDepartId(user.getRootDepartment().getId()); 
 | 
            queryboxextpageWrap.setAbsolutionMaterialName(routeCardExtListVO.getMarterialName()); 
 | 
            List<BomExtListVO> bomlist = bomExtMapper.selectAdminList(queryboxextpageWrap); 
 | 
            if(bomlist==null&&bomlist.size()<=0){ 
 | 
                throw new BusinessException(ResponseStatus.SERVER_ERROR.getCode(),"“"+routeCardExtListVO.getMarterialName()+"“产品名称不存在!"); 
 | 
  
 | 
            }else{ 
 | 
                routeCardExtListVO.setBomId(bomlist.get(0).getId()); 
 | 
            } 
 | 
  
 | 
            QueryBomVersionExtDTO bb=new QueryBomVersionExtDTO(); 
 | 
            bb.setBomId(bomlist.get(0).getId()); 
 | 
            BomVersionExtListVO bve= bomVersionExtMapper.selectListByOne(bb); 
 | 
            if(bve==null){ 
 | 
                throw new BusinessException(ResponseStatus.SERVER_ERROR.getCode(),"“"+routeCardExtListVO.getMarterialName()+"bom历史信息不存在"); 
 | 
  
 | 
            } 
 | 
  
 | 
            /** 
 | 
             * 工序 
 | 
             */ 
 | 
            if(StringUtils.isEmpty(routeCardExtListVO.getProductName())){ 
 | 
                throw new BusinessException(ResponseStatus.SERVER_ERROR.getCode(),"工序不能为空!"); 
 | 
  
 | 
            } 
 | 
            List<ProceduresExtListVO> producelist= proceduresExtService.getGYListByCondition(bomlist.get(0).getRouteId()); 
 | 
            if(producelist.size()>0){ 
 | 
                Boolean procutemark=true; 
 | 
                for(int p=0;p<producelist.size();p++){ 
 | 
                    ProceduresExtListVO pv=producelist.get(p); 
 | 
                    if(StringUtils.equals(pv.getName(),routeCardExtListVO.getProductName().trim())){ 
 | 
                        routeCardExtListVO.setRouteProcedureId(pv.getDmodelRouteProductId()); 
 | 
                        procutemark=false; 
 | 
                    } 
 | 
                } 
 | 
                if(procutemark){ 
 | 
                    throw new BusinessException(ResponseStatus.SERVER_ERROR.getCode(),"工序不存在,请重新输入!"); 
 | 
  
 | 
                } 
 | 
  
 | 
            }else{ 
 | 
                throw new BusinessException(ResponseStatus.SERVER_ERROR.getCode(),"“"+routeCardExtListVO.getMarterialName()+"“产品工序不存在!"); 
 | 
  
 | 
            } 
 | 
  
 | 
            if(StringUtils.isNotEmpty(routeCardExtListVO.getTips())&&routeCardExtListVO.getTips().length()>200){ 
 | 
  
 | 
                throw new BusinessException(ResponseStatus.SERVER_ERROR.getCode(),"工艺卡事项最多输入200字"); 
 | 
  
 | 
            } 
 | 
  
 | 
  
 | 
            RouteCard find=new RouteCard(); 
 | 
            find.setDeleted(Constants.ZERO); 
 | 
            find.setRootDepartId(user.getRootDepartment().getId()); 
 | 
            find.setDepartId(user.getCurComDepartment().getId()); 
 | 
            find.setBomId(bve.getId()); 
 | 
            find.setRouteProcedureId(routeCardExtListVO.getRouteProcedureId()); 
 | 
            RouteCard finddata= routeCardServiceimpl.findOne(find); 
 | 
            if(finddata!=null){ 
 | 
                throw new BusinessException(ResponseStatus.SERVER_ERROR.getCode(),"工序已存在,不允许添加"); 
 | 
                } 
 | 
  
 | 
            RouteCard routeCard=new RouteCard(); 
 | 
            routeCard.setDeleted(Constants.ZERO); 
 | 
            routeCard.setRootDepartId(user.getRootDepartment().getId()); 
 | 
            routeCard.setDepartId(user.getCurComDepartment().getId()); 
 | 
            routeCard.setCreateTime(new Date()); 
 | 
            routeCard.setCreateUser(user.getId()); 
 | 
            routeCard.setRouteProcedureId(routeCardExtListVO.getRouteProcedureId()); 
 | 
            routeCard.setBomId(bve.getId()); 
 | 
            routeCard.setTips(routeCardExtListVO.getTips()); 
 | 
            routeCardMapper.insert(routeCard); 
 | 
        } 
 | 
    } 
 | 
  
 | 
  
 | 
    @Override 
 | 
    public List<RouteCardExtListVO> findlistBycondition(PageWrap<QueryRouteCardExtDTO> pageWrap) { 
 | 
        LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); 
 | 
        pageWrap.getModel().setDeleted(Constants.ZERO); 
 | 
        pageWrap.getModel().setRootDepartId(user.getRootDepartment().getId()); 
 | 
        PageHelper.startPage(pageWrap.getPage(), pageWrap.getCapacity()); 
 | 
  
 | 
        String resourcePath=  systemDictDataBiz.queryByCode(Constants.OSS,Constants.RESOURCE_PATH).getCode(); 
 | 
  
 | 
        List<RouteCardExtListVO> result = routeCardExtMapper.selectList(pageWrap.getModel()); 
 | 
        for(int i=0;i<result.size();i++){ 
 | 
            RouteCardExtListVO rev=result.get(i); 
 | 
            rev.setResourcePath(resourcePath); 
 | 
        } 
 | 
        return result; 
 | 
    } 
 | 
  
 | 
  
 | 
  
 | 
    @Override 
 | 
    public ApiResponse<RouteCardExtListVO> getListByWorkOrderId(QueryRouteCardExtDTO pageWrap) { 
 | 
        LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); 
 | 
  
 | 
        Workorder workorder= workorderServiceimpl.findById(Integer.valueOf(pageWrap.getWorkOrderId())); 
 | 
  
 | 
  
 | 
        Bom bom=new Bom(); 
 | 
        bom.setRootDepartId(workorder.getRootDepartId()); 
 | 
        bom.setDepartId(workorder.getDepartId()); 
 | 
        bom.setMaterialId(workorder.getMaterialId()); 
 | 
        bom.setDeleted(Constants.ZERO); 
 | 
        bom.setProcedureId(workorder.getProcedureId()); 
 | 
        Bom bd=bomServiceimpl.findOne(bom); 
 | 
        Boolean  cardMark=false; 
 | 
        if(bd!=null){ 
 | 
  
 | 
            //查询工艺关联工序的id 
 | 
            RouteProcedure routeProcedure=new RouteProcedure(); 
 | 
          //  routeProcedure.setDepartId(workorder.getDepartId()); 
 | 
            routeProcedure.setRouteId(bd.getRouteId()); 
 | 
            routeProcedure.setProcedureId(bd.getProcedureId()); 
 | 
            routeProcedure.setDeleted(Constants.ZERO); 
 | 
            RouteProcedure findroute=  routeProcedureServiceimpl.findOne(routeProcedure); 
 | 
            if(findroute==null){ 
 | 
                return ApiResponse.failed("工艺卡关联的工序不存在!"); 
 | 
            } 
 | 
            String resourcePath=  systemDictDataBiz.queryByCode(Constants.OSS,Constants.RESOURCE_PATH).getCode(); 
 | 
            //查询BOM version的id 
 | 
            QueryBomVersionExtDTO bb=new QueryBomVersionExtDTO(); 
 | 
            bb.setBomId(bd.getId()); 
 | 
            bb.setRootDepartId(workorder.getRootDepartId()); 
 | 
            bb.setDepartId(workorder.getDepartId()); 
 | 
            bb.setMaterialId(workorder.getMaterialId()); 
 | 
            bb.setProcedureId(workorder.getProcedureId()); 
 | 
            List<BomVersionExtListVO> bomversionlist= bomVersionExtMapper.selectList(bb); 
 | 
            if(bomversionlist.size()>0){ 
 | 
  
 | 
                for(int i=0;i<bomversionlist.size();i++){ 
 | 
                    BomVersionExtListVO belv=bomversionlist.get(i); 
 | 
                    pageWrap.setRouteProcedureId(findroute.getId()); 
 | 
                    pageWrap.setBomId(belv.getId()); 
 | 
                    pageWrap.setRootDepartId(workorder.getRootDepartId()); 
 | 
                    pageWrap.setDepartId(workorder.getDepartId()); 
 | 
                    pageWrap.setDeleted(Constants.ZERO); 
 | 
                    List<RouteCardExtListVO> result = routeCardExtMapper.selectList(pageWrap); 
 | 
                    if(result.size()>0){ 
 | 
                        cardMark=true; 
 | 
  
 | 
                        result.get(0).setResourcePath(resourcePath); 
 | 
                        return ApiResponse.success(result.get(0)); 
 | 
                    } 
 | 
                } 
 | 
                if(!cardMark){ 
 | 
                    return ApiResponse.failed("工艺卡信息为空!"); 
 | 
                } 
 | 
            }else{ 
 | 
                return ApiResponse.failed("BOM历史信息不存在!"); 
 | 
            } 
 | 
  
 | 
        }else{ 
 | 
            return ApiResponse.failed("BOM不存在!"); 
 | 
        } 
 | 
  
 | 
        return ApiResponse.success(null); 
 | 
    } 
 | 
  
 | 
} 
 |