| | |
| | | package org.springblade.mdm.basesetting.producedivision.service; |
| | | |
| | | 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.tool.utils.BeanUtil; |
| | | import org.springblade.mdm.basesetting.producedivision.entity.ProduceDivision; |
| | | 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; |
| | | /** |
| | | * 新增分工表 |
| | | * @param vo |
| | |
| | | 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; |
| | | } |
| | | |
| | | public ProduceDivision getByDrawingNo(String drawingNo){ |
| | | List<ProduceDivision> divs = lambdaQuery().eq(ProduceDivision::getDrawingNo, drawingNo).list(); |
| | | if(divs.isEmpty()){ |
| | | return null; |
| | | }else{ |
| | | return divs.get(0); |
| | | } |
| | | } |
| | | } |