package com.mes.damage.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.github.yulichang.base.MPJBaseServiceImpl; import com.github.yulichang.query.MPJQueryWrapper; import com.mes.damage.entity.Damage; import com.mes.damage.entity.DamagePrint; import com.mes.damage.mapper.DamageMapper; import com.mes.damage.service.DamageService; import com.mes.glassinfo.entity.GlassInfo; import com.mes.glassinfo.mapper.GlassInfoMapper; import com.mes.work_assignment.entity.WorkAssignment; import com.mes.work_assignment.mapper.WorkAssignmentMapper; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.sql.Timestamp; import java.time.LocalDateTime; import java.util.Collections; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.stream.Collectors; /** *

* 服务实现类 *

* * @author wu * @since 2024-06-13 */ @Service public class DamageServiceImpl extends MPJBaseServiceImpl implements DamageService { @Resource GlassInfoMapper glassInfoMapper; @Resource WorkAssignmentMapper workAssignmentMapper; @Autowired private DamageMapper damageMapper; /** * 查询报工信息 */ @Override public List selectDamage(String startTime, String endTime, int type, int status, String workingProcedure) { LambdaQueryWrapper damageSelectWrapper = new LambdaQueryWrapper<>(); damageSelectWrapper.between(Damage::getDamageTime, startTime, endTime); if (type != 0) { damageSelectWrapper.eq(Damage::getType, type); } if (status != 0) { damageSelectWrapper.eq(Damage::getStatus, status); } if (!"0".equals(workingProcedure)) { damageSelectWrapper.eq(Damage::getWorkingProcedure, workingProcedure); } List damageList = baseMapper.selectList(damageSelectWrapper); for (Damage damage : damageList) { damage.setStatus(2); } return baseMapper.selectList(damageSelectWrapper); } /** * 提交报工 */ @Override public void submitDamage(List damageList) { Map> firstMap = damageList.stream().collect(Collectors.groupingBy(e -> e.getProcessId() + ":" + e.getWorkingProcedure() + ":" + e.getDeviceName() + ":" + e.getTeamsGroupsName())); for (Map.Entry> entry : firstMap.entrySet()) { String key = entry.getKey(); List damages = entry.getValue(); System.out.println("Key: " + key); Map> secondMap = damageList.stream().collect(Collectors.groupingBy(e -> e.getProcessId() + ":" + e.getWorkingProcedure() + ":" + e.getDeviceName() + ":" + e.getTeamsGroupsName())); for (Map.Entry> entrys : secondMap.entrySet()) { } } } /** * 添加报工信息 */ @Override public void insertDamage(Damage damage) { LambdaQueryWrapper glassInfoSelectWrapper = new LambdaQueryWrapper<>(); glassInfoSelectWrapper.eq(GlassInfo::getGlassId, damage.getGlassId()); GlassInfo glassInfo = glassInfoMapper.selectOne(glassInfoSelectWrapper); BeanUtils.copyProperties(glassInfo, damage); LambdaQueryWrapper workAssignmentSelectWrapper = new LambdaQueryWrapper<>(); workAssignmentSelectWrapper .eq(WorkAssignment::getLine, damage.getLine()) .eq(WorkAssignment::getWorkProcesses, damage.getWorkingProcedure()); WorkAssignment workAssignment = workAssignmentMapper.selectOne(workAssignmentSelectWrapper); if (workAssignment != null) { damage.setTeamsGroupsName(workAssignment.getTeamsGroupsName()); damage.setDeviceName(workAssignment.getDeviceName()); } damage.setProcessId(glassInfo.getFlowCardId()); damage.setOrderNumber(glassInfo.getGlassType()); damage.setTechnologyNumber(glassInfo.getLayer()); damage.setDamageTime(Timestamp.valueOf(LocalDateTime.now())); baseMapper.insert(damage); } /** * 添加报工信息 */ @Override public void batchInsertDamage(List damageList) { WorkAssignment workAssignment = workAssignmentMapper.selectOne(new LambdaQueryWrapper() .eq(WorkAssignment::getLine, damageList.get(0).getLine()) .eq(WorkAssignment::getWorkProcesses, damageList.get(0).getWorkingProcedure())); List glassList = damageList.stream().map(Damage::getGlassId).collect(Collectors.toList()); List glassInfoList = glassInfoMapper.selectList(new LambdaQueryWrapper().in(GlassInfo::getGlassId, glassList)); Map> listMap = glassInfoList.stream().collect(Collectors.groupingBy(GlassInfo::getGlassId)); for (Damage damage : damageList) { GlassInfo glassInfo = listMap.get(damage.getGlassId()).get(0); BeanUtils.copyProperties(glassInfo, damage); if (workAssignment != null) { damage.setTeamsGroupsName(workAssignment.getTeamsGroupsName()); damage.setDeviceName(workAssignment.getDeviceName()); } damage.setProcessId(glassInfo.getFlowCardId()); damage.setOrderNumber(glassInfo.getGlassType()); damage.setTechnologyNumber(glassInfo.getLayer()); damage.setDamageTime(Timestamp.valueOf(LocalDateTime.now())); } this.saveBatch(damageList); } @Override public List selectDamagePrint(Damage damage) { QueryWrapper wrapper = new QueryWrapper<>(); wrapper.select("working_procedure,engineer_id,teams_groups_name,device_name,count(glass_id)as glass_id") .eq("type",damage.getType()) .eq("working_procedure",damage.getWorkingProcedure()) .groupBy("working_procedure,engineer_id,teams_groups_name,device_name"); if (damage.getEngineerId() != null) { wrapper.eq("engineer_id", damage.getEngineerId()); } return this.list(wrapper); } @Override public List selectDamagePrintDetails(Damage damage) { List listDamage=damageMapper.selectJoinList(DamagePrint.class,new MPJQueryWrapper() .select("b.flow_card_id,b.layer,t.engineer_id,b.tempering_layout_id,b.tempering_feed_sequence,t.glass_id,b.width,b.height,b.thickness") .leftJoin("glass_info as b on t.glass_id=b.glass_id") .eq("t.working_procedure",damage.getWorkingProcedure()) .eq("t.type",damage.getType()) .eq("t.engineer_id",damage.getEngineerId()) ); return listDamage; } }