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);
|
}
|
|
}
|