|
|
|
|
@ -3,9 +3,13 @@ |
|
|
|
|
*/ |
|
|
|
|
package org.springblade.desk.quality.service.impl; |
|
|
|
|
|
|
|
|
|
import cn.hutool.core.bean.BeanUtil; |
|
|
|
|
import cn.hutool.core.util.StrUtil; |
|
|
|
|
import com.baomidou.mybatisplus.core.conditions.Wrapper; |
|
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
|
|
|
|
import com.baomidou.mybatisplus.core.metadata.IPage; |
|
|
|
|
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; |
|
|
|
|
import com.baomidou.mybatisplus.core.toolkit.StringUtils; |
|
|
|
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers; |
|
|
|
|
import io.jsonwebtoken.lang.Collections; |
|
|
|
|
import jakarta.annotation.Resource; |
|
|
|
|
@ -13,14 +17,17 @@ import lombok.AllArgsConstructor; |
|
|
|
|
import lombok.Data; |
|
|
|
|
import lombok.EqualsAndHashCode; |
|
|
|
|
import lombok.extern.slf4j.Slf4j; |
|
|
|
|
import org.apache.commons.lang3.StringUtils; |
|
|
|
|
import org.springblade.core.log.exception.ServiceException; |
|
|
|
|
import org.springblade.core.mp.base.BaseServiceImpl; |
|
|
|
|
import org.springblade.core.tool.api.R; |
|
|
|
|
import org.springblade.desk.basic.service.ICraftAbilityService; |
|
|
|
|
import org.springblade.desk.basic.util.IdUtil; |
|
|
|
|
import org.springblade.desk.produce.mapper.WorkOrderMapper; |
|
|
|
|
import org.springblade.desk.produce.mapper.WorkPlanMapper; |
|
|
|
|
import org.springblade.desk.produce.pojo.entity.WorkOrder; |
|
|
|
|
import org.springblade.desk.produce.pojo.entity.WorkPlan; |
|
|
|
|
import org.springblade.desk.quality.constant.InspectionItemConst; |
|
|
|
|
import org.springblade.desk.produce.pojo.vo.ProduceMonitorSlotListVO; |
|
|
|
|
import org.springblade.desk.produce.service.IMacToolUseService; |
|
|
|
|
import org.springblade.desk.quality.excel.WorkPlanItemExcel; |
|
|
|
|
import org.springblade.desk.quality.mapper.WorkPlanItemMapper; |
|
|
|
|
import org.springblade.desk.quality.pojo.entity.InspectionItem; |
|
|
|
|
@ -35,13 +42,14 @@ import org.springblade.desk.quality.service.*; |
|
|
|
|
import org.springblade.desk.quality.wrapper.InspectionItemWrapper; |
|
|
|
|
import org.springblade.desk.quality.wrapper.StandardWrapper; |
|
|
|
|
import org.springblade.desk.quality.wrapper.WorkPlanItemWrapper; |
|
|
|
|
import org.springblade.scheduling.pojo.entity.CraftAbilityEntity; |
|
|
|
|
import org.springblade.system.feign.IDictClient; |
|
|
|
|
import org.springblade.system.feign.IUserClient; |
|
|
|
|
import org.springblade.system.pojo.entity.Dict; |
|
|
|
|
import org.springblade.system.pojo.entity.UserInfo; |
|
|
|
|
import org.springframework.stereotype.Service; |
|
|
|
|
|
|
|
|
|
import java.util.ArrayList; |
|
|
|
|
import java.util.List; |
|
|
|
|
import java.util.*; |
|
|
|
|
import java.util.stream.Collectors; |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
@ -73,6 +81,13 @@ public class WorkPlanItemServiceImpl extends BaseServiceImpl<WorkPlanItemMapper, |
|
|
|
|
@Resource |
|
|
|
|
private WorkPlanMapper workPlanMapper; |
|
|
|
|
|
|
|
|
|
@Resource |
|
|
|
|
private IMacToolUseService macToolUseService; |
|
|
|
|
@Resource |
|
|
|
|
private ICraftAbilityService craftAbilityService; |
|
|
|
|
@Resource |
|
|
|
|
private WorkOrderMapper workOrderMapper; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
public IPage<WorkPlanItemVO> selectWorkPlanItemPage(IPage<WorkPlanItemVO> page, WorkPlanItemVO workPlanItem) { |
|
|
|
|
@ -277,8 +292,93 @@ public class WorkPlanItemServiceImpl extends BaseServiceImpl<WorkPlanItemMapper, |
|
|
|
|
List<WorkPlanItemVO> listVO = baseMapper.listShareByWpiId(wpiId); |
|
|
|
|
for (WorkPlanItemVO vo : listVO) { |
|
|
|
|
setVOValue(vo); |
|
|
|
|
vo.setCheckName("工序检验"); |
|
|
|
|
} |
|
|
|
|
List<WorkPlanItemVO> itemVOS = listShareBySameSlot(wpiId); |
|
|
|
|
if (CollectionUtils.isNotEmpty(itemVOS)) { |
|
|
|
|
for (WorkPlanItemVO vo : itemVOS) { |
|
|
|
|
setVOValue(vo); |
|
|
|
|
vo.setCheckName("同槽订单"); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
return listVO; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* 同槽订单共享查询 |
|
|
|
|
* |
|
|
|
|
* @param wpiId |
|
|
|
|
* @return |
|
|
|
|
*/ |
|
|
|
|
private List<WorkPlanItemVO> listShareBySameSlot(Long wpiId) { |
|
|
|
|
WorkPlanItem workPlanItem = this.getById(wpiId); |
|
|
|
|
if (workPlanItem == null) { |
|
|
|
|
return null; |
|
|
|
|
} |
|
|
|
|
WorkPlan workPlan = workPlanMapper.selectById(workPlanItem.getWpId()); |
|
|
|
|
if (workPlan == null) { |
|
|
|
|
return null; |
|
|
|
|
} |
|
|
|
|
if (workPlan != null && workPlan.getFrontWpId() != null) { |
|
|
|
|
Long currentFrontWpId = workPlan.getFrontWpId(); |
|
|
|
|
//(A→B→A)
|
|
|
|
|
int maxIterations = 100; |
|
|
|
|
int iterations = 0; |
|
|
|
|
while (Objects.nonNull(currentFrontWpId) && iterations < maxIterations) { |
|
|
|
|
WorkPlan frontWorkPlan = workPlanMapper.selectById(currentFrontWpId); |
|
|
|
|
if (BeanUtil.isEmpty(frontWorkPlan)) { |
|
|
|
|
break; |
|
|
|
|
} |
|
|
|
|
// 关键工序
|
|
|
|
|
if (StrUtil.isNotEmpty(frontWorkPlan.getCruxProcess()) && "1".equals(frontWorkPlan.getCruxProcess().trim())) { |
|
|
|
|
workPlan = frontWorkPlan; |
|
|
|
|
break; |
|
|
|
|
} |
|
|
|
|
currentFrontWpId = frontWorkPlan.getFrontWpId(); |
|
|
|
|
iterations++; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
if (null != workPlan) { |
|
|
|
|
String partCode = null; |
|
|
|
|
if (workPlan.getCaId() != null) { |
|
|
|
|
CraftAbilityEntity craftAbility = craftAbilityService.getById(workPlan.getCaId()); |
|
|
|
|
Map<String, String> dictMap = getProcessCapabilityTypeMap(); |
|
|
|
|
String wxLimitName = dictMap.get(craftAbility.getWxLimit()); |
|
|
|
|
boolean checkCaType = !StringUtils.isEmpty(wxLimitName) && (wxLimitName.contains("镀金") || wxLimitName.contains("镀银")); |
|
|
|
|
WorkOrder workOrder = workOrderMapper.selectById(workPlan.getWoId()); |
|
|
|
|
if (workOrder == null) { |
|
|
|
|
return null; |
|
|
|
|
} |
|
|
|
|
if (checkCaType) { |
|
|
|
|
partCode = workOrder.getPartCode(); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
List<ProduceMonitorSlotListVO> list = macToolUseService.listSlotInfo(workPlan); |
|
|
|
|
if (CollectionUtils.isNotEmpty(list)) { |
|
|
|
|
List<ProduceMonitorSlotListVO> collect = list.stream().filter(vo -> !vo.getWpId().equals(workPlanItem.getWpId())).collect(Collectors.toList()); |
|
|
|
|
if (CollectionUtils.isNotEmpty(collect)) { |
|
|
|
|
List<Long> wpIds = collect.stream().map(vo -> vo.getWpId()).collect(Collectors.toList()); |
|
|
|
|
List<WorkPlanItemVO> itemVOS = baseMapper.listShareBySameSlot(wpIds, "镀后检验", partCode, "厚度检测"); |
|
|
|
|
return itemVOS; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
return null; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* 查询工艺能力类型 |
|
|
|
|
* |
|
|
|
|
* @return |
|
|
|
|
*/ |
|
|
|
|
private Map<String, String> getProcessCapabilityTypeMap() { |
|
|
|
|
Map<String, String> dictMap = new HashMap<>(); |
|
|
|
|
R<List<Dict>> RProcessCapabilityType = dictClient.getList("ProcessCapabilityType"); |
|
|
|
|
if (RProcessCapabilityType.isSuccess()) { |
|
|
|
|
List<Dict> dictList = RProcessCapabilityType.getData(); |
|
|
|
|
dictMap = dictList.stream().collect(Collectors.toMap(Dict::getDictKey, Dict::getDictValue, (oldVal, newVal) -> oldVal)); |
|
|
|
|
} |
|
|
|
|
return dictMap; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|