| | |
| | | package org.springblade.mdm.basesetting.producedivision.service; |
| | | |
| | | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | | import org.apache.commons.lang3.StringUtils; |
| | | import org.springblade.core.excel.util.ExcelUtil; |
| | | import org.springblade.core.log.exception.ServiceException; |
| | | import org.springblade.core.mp.base.BizServiceImpl; |
| | | import org.springblade.core.mp.support.Condition; |
| | | import org.springblade.core.mp.support.Query; |
| | | import org.springblade.core.tool.utils.BeanUtil; |
| | | import org.springblade.mdm.basesetting.producedivision.entity.ProduceDivision; |
| | | import org.springblade.mdm.basesetting.producedivision.entity.QinzheFgb; |
| | | import org.springblade.mdm.basesetting.producedivision.mapper.ProduceDivisionMapper; |
| | | import org.springblade.mdm.basesetting.producedivision.vo.DivisionExcel; |
| | | import org.springblade.mdm.basesetting.producedivision.vo.ImportResult; |
| | | import org.springblade.mdm.basesetting.producedivision.vo.ProduceDivisionVO; |
| | | import org.springblade.mdm.basesetting.producedivision.vo.ProduceDivisionViewVO; |
| | | 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.ArrayList; |
| | | import java.util.List; |
| | | |
| | | @Service |
| | | public class ProduceDivisionService extends BizServiceImpl<ProduceDivisionMapper, ProduceDivision> { |
| | | @Autowired |
| | | private MdmUserService tUserService; |
| | | @Autowired |
| | | private QinzheFgbService qinzheFgbService; |
| | | |
| | | /** |
| | | * 新增分工表 |
| | | * @param vo |
| | | */ |
| | | @Transactional |
| | | public void savePlan(ProduceDivisionVO vo){ |
| | | //TODO |
| | | public void saveDivision(ProduceDivisionVO vo){ |
| | | /* |
| | | if(drawingNoExists(vo.getpro,null)){ |
| | | throw new ServiceException("图号已存在:"+vo.getDrawingNo()); |
| | | }*/ |
| | | ProduceDivision plan = new ProduceDivision(); |
| | | BeanUtil.copyProperties(vo, plan); |
| | | this.save(plan); |
| | | } |
| | | |
| | | public boolean updatePlan(ProduceDivisionVO vo) { |
| | | /** |
| | | * 判断图号是否已存在 |
| | | * @param drawingNo 图号 |
| | | * @param excludeId 排除id |
| | | * @return 是否存在 |
| | | */ |
| | | /* |
| | | boolean drawingNoExists(String drawingNo,Long excludeId){ |
| | | return this.lambdaQuery() |
| | | .eq(ProduceDivision::getDrawingNo, drawingNo) |
| | | .ne(excludeId!=null,ProduceDivision::getId,excludeId).count()>0; |
| | | }*/ |
| | | |
| | | /** |
| | | * 修改分工表 |
| | | * @param vo 数据VO |
| | | * @return 是否成功 |
| | | */ |
| | | public boolean updateDivision(ProduceDivisionVO vo) { |
| | | if(vo.getId() == null){ |
| | | throw new ServiceException("id不能未空"); |
| | | } |
| | | /* |
| | | if(drawingNoExists(vo.getDrawingNo(),vo.getId())){ |
| | | throw new ServiceException("图号已存在:"+vo.getDrawingNo()); |
| | | }*/ |
| | | |
| | | ProduceDivision plan = this.getById(vo.getId()); |
| | | |
| | | plan.setTeamLeaderId(vo.getTeamLeaderId()); |
| | |
| | | public IPage<ProduceDivisionViewVO> pageQuery(String name, Query query) { |
| | | return this.getBaseMapper().pageQuery(Condition.getPage(query),name); |
| | | } |
| | | |
| | | /** |
| | | * 分工i表导入 |
| | | * @param file |
| | | */ |
| | | @Transactional |
| | | public ImportResult importDivision(MultipartFile file) { |
| | | List<DivisionExcel> list = ExcelUtil.read(file, DivisionExcel.class); |
| | | return transAndSave(list); |
| | | } |
| | | |
| | | /** |
| | | * 将人员姓名转换未对应用户的id |
| | | * @param list |
| | | */ |
| | | @Transactional |
| | | ImportResult transAndSave(List<DivisionExcel> list){ |
| | | |
| | | List<ProduceDivision> entityList = new ArrayList<>(); |
| | | |
| | | for(DivisionExcel divisionExcel:list){ |
| | | ProduceDivision division = new ProduceDivision(); |
| | | |
| | | division.setProgrammerId(tUserService.getUserIdByName(divisionExcel.getProgrammer())); |
| | | division.setCheckerId(tUserService.getUserIdByName(divisionExcel.getChecker())); |
| | | division.setSeniorId(tUserService.getUserIdByName(divisionExcel.getSenior())); |
| | | division.setTeamLeaderId(tUserService.getUserIdByName(divisionExcel.getTeamLeader())); |
| | | division.setProgrammer(divisionExcel.getProgrammer()); |
| | | entityList.add(division); |
| | | } |
| | | |
| | | List<ProduceDivision> notMatchList = entityList.stream() |
| | | .filter(d -> d.getProgrammerId()==null || d.getCheckerId()==null || d.getSeniorId()==null || d.getTeamLeaderId()==null).toList(); |
| | | |
| | | List<ProduceDivision> matchList = entityList.stream() |
| | | .filter(d -> d.getProgrammerId()!=null && d.getCheckerId()!=null && d.getSeniorId()!=null && d.getTeamLeaderId()!=null).toList(); |
| | | |
| | | for(ProduceDivision division : matchList){ |
| | | if(!this.existsSame(division)){ |
| | | this.save(division); |
| | | } |
| | | } |
| | | |
| | | ImportResult ir = new ImportResult(); |
| | | ir.setSuccess(matchList.size()); |
| | | ir.setFailure(notMatchList.size()); |
| | | |
| | | if(ir.getFailure() > 0){ |
| | | String msg = ""; |
| | | StringBuilder sb = new StringBuilder(); |
| | | sb.append("编程人员:"); |
| | | for(ProduceDivision division:notMatchList){ |
| | | sb.append(division.getProgrammer()).append(","); |
| | | } |
| | | msg = StringUtils.removeEnd(sb.toString(),",")+"有姓名无法匹配用户数据"; |
| | | ir.setMessage(msg); |
| | | }else{ |
| | | ir.setMessage("导入成功"); |
| | | } |
| | | return ir; |
| | | } |
| | | |
| | | /** |
| | | * 检查记录是否已经存在 通过4个人的id |
| | | * @param division 分工表数据 |
| | | * @return 是否存在 |
| | | */ |
| | | boolean existsSame(ProduceDivision division){ |
| | | return this.lambdaQuery().eq(ProduceDivision::getProgrammerId,division.getProgrammerId()) |
| | | .eq(ProduceDivision::getCheckerId,division.getCheckerId()).eq(ProduceDivision::getSeniorId,division.getSeniorId()) |
| | | .eq(ProduceDivision::getTeamLeaderId,division.getTeamLeaderId()).count()>0; |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 根据勤哲零件号于主管编制获取分工表数据 图号->勤哲数据(编制) -> 主制分工表数据 |
| | | * |
| | | * @param drawingNo |
| | | * @return |
| | | */ |
| | | public ProduceDivision getByDrawingNoWithQinzhe(String drawingNo){ |
| | | QinzheFgb qinzheFgb = qinzheFgbService.getByLjh(drawingNo); |
| | | if(qinzheFgb == null){ |
| | | throw new ServiceException("未找到零组件号:"+drawingNo); |
| | | } |
| | | |
| | | Long programmerId = tUserService.getUserIdByName(qinzheFgb.getZggy()); |
| | | if(programmerId == null){ |
| | | throw new ServiceException("根据["+qinzheFgb.getZggy()+"]未找到对应的系统用户,请检查用户是否存在"); |
| | | } |
| | | ProduceDivision division = lambdaQuery().eq(ProduceDivision::getProgrammerId, programmerId).list().stream().findFirst().orElse(null); |
| | | if(division == null){ |
| | | throw new ServiceException("人员职责表无主管工艺["+qinzheFgb.getZggy()+"]对应的数据"); |
| | | } |
| | | |
| | | return division; |
| | | } |
| | | |
| | | /** |
| | | * 选择主管工艺数据 |
| | | * @param programmer |
| | | * @return |
| | | */ |
| | | public List<ProduceDivisionViewVO> queryProgrammer(String programmer) { |
| | | return baseMapper.queryProgrammer(programmer); |
| | | } |
| | | } |