生产质量检验

liweidong
maxiangong 3 days ago
parent e5784e474d
commit d81ecf7230
  1. 3
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/quality/pojo/vo/WorkPlanItemVO.java
  2. 1
      blade-service/blade-desk/src/main/java/org/springblade/desk/quality/controller/InspectionTaskController.java
  3. 2
      blade-service/blade-desk/src/main/java/org/springblade/desk/quality/mapper/WorkPlanItemMapper.java
  4. 51
      blade-service/blade-desk/src/main/java/org/springblade/desk/quality/mapper/WorkPlanItemMapper.xml
  5. 108
      blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/impl/WorkPlanItemServiceImpl.java

@ -90,6 +90,9 @@ public class WorkPlanItemVO extends WorkPlanItem {
@Schema(description = "检查结果") @Schema(description = "检查结果")
private String checkResultValue; private String checkResultValue;
@Schema(description = "检验名称")
private String checkName;
public String getCoatingTypeValue(){ public String getCoatingTypeValue(){
return coatTypeMap.get(getCoatingType()); return coatTypeMap.get(getCoatingType());
} }

@ -749,6 +749,7 @@ public class InspectionTaskController extends BladeController {
List<ProduceMonitorSlotListVO> list = new ArrayList<>(); List<ProduceMonitorSlotListVO> list = new ArrayList<>();
if (null != workPlan) { if (null != workPlan) {
list = macToolUseService.listSlotInfo(workPlan); list = macToolUseService.listSlotInfo(workPlan);
list = list.stream().filter(vo -> !vo.getWpId().equals(detail.getWpId())).collect(Collectors.toList());
if (null != listSheet && listSheet.size() > 0) { if (null != listSheet && listSheet.size() > 0) {
list.forEach(one -> { list.forEach(one -> {
one.setIsShow("1"); one.setIsShow("1");

@ -43,4 +43,6 @@ public interface WorkPlanItemMapper extends BaseMapper<WorkPlanItem> {
List<WorkPlanItemVO> listByWoIdNotNG(Long woId); List<WorkPlanItemVO> listByWoIdNotNG(Long woId);
List<WorkPlanItemVO> listShareByWpiId(Long wpiId); List<WorkPlanItemVO> listShareByWpiId(Long wpiId);
List<WorkPlanItemVO> listShareBySameSlot(List<Long> wpIds, String psName, String partCode, String itemName);
} }

@ -91,4 +91,55 @@
WHERE a.is_deleted = 0 AND a.SOURCE_TYPE = 1 WHERE a.is_deleted = 0 AND a.SOURCE_TYPE = 1
</select> </select>
<select id="listShareBySameSlot" resultMap="workPlanItemVOResultMap">
SELECT
a.*, c.WO_CODE, b.ORDERS as PROCESS_ORDERS, d.NAME as PROCESS_NAME
FROM
QA_WORK_PLAN_ITEM a
LEFT JOIN MES_WORK_PLAN b ON a.WP_ID = b.ID
LEFT JOIN MES_WORK_ORDER c ON b.WO_ID = c.ID
LEFT JOIN BS_PROCESS_SET d ON b.PPS_ID = d.ID
WHERE
a.wp_id IN (
WITH base_list AS (
SELECT id base_id, wo_id, orders base_orders FROM MES_WORK_PLAN
<if test="wpIds != null">
WHERE id IN
<foreach collection="wpIds" item="wpId" open="(" separator="," close=")">
#{wpId}
</foreach>
</if>
),
join_data AS (
SELECT
a.*,
b.base_orders,
b.base_id,
d.PART_CODE,
ROW_NUMBER ( ) OVER ( PARTITION BY b.base_id ORDER BY a.orders ASC ) rn
FROM
MES_WORK_PLAN a
INNER JOIN base_list b ON a.wo_id = b.wo_id
AND a.orders > b.base_orders
INNER JOIN BS_PROCESS_SET c ON a.PPS_ID = c.ID
INNER JOIN MES_WORK_ORDER d ON a.wo_id = d.id
<if test="psName != null and psName != ''">
WHERE c.name = #{psName}
</if>
) SELECT
ID
FROM
join_data
WHERE
rn = 1
<if test="partCode != null and partCode != ''">
AND part_code = #{partCode}
</if>
)
<if test="itemName != null and itemName != ''">
AND a.item_name = #{itemName}
</if>
and a.SOURCE_TYPE = 1
</select>
</mapper> </mapper>

@ -3,9 +3,13 @@
*/ */
package org.springblade.desk.quality.service.impl; 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.Wrapper;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage; 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 com.baomidou.mybatisplus.core.toolkit.Wrappers;
import io.jsonwebtoken.lang.Collections; import io.jsonwebtoken.lang.Collections;
import jakarta.annotation.Resource; import jakarta.annotation.Resource;
@ -13,14 +17,17 @@ import lombok.AllArgsConstructor;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springblade.core.log.exception.ServiceException; import org.springblade.core.log.exception.ServiceException;
import org.springblade.core.mp.base.BaseServiceImpl; import org.springblade.core.mp.base.BaseServiceImpl;
import org.springblade.core.tool.api.R; 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.basic.util.IdUtil;
import org.springblade.desk.produce.mapper.WorkOrderMapper;
import org.springblade.desk.produce.mapper.WorkPlanMapper; 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.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.excel.WorkPlanItemExcel;
import org.springblade.desk.quality.mapper.WorkPlanItemMapper; import org.springblade.desk.quality.mapper.WorkPlanItemMapper;
import org.springblade.desk.quality.pojo.entity.InspectionItem; 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.InspectionItemWrapper;
import org.springblade.desk.quality.wrapper.StandardWrapper; import org.springblade.desk.quality.wrapper.StandardWrapper;
import org.springblade.desk.quality.wrapper.WorkPlanItemWrapper; 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.IDictClient;
import org.springblade.system.feign.IUserClient; import org.springblade.system.feign.IUserClient;
import org.springblade.system.pojo.entity.Dict;
import org.springblade.system.pojo.entity.UserInfo; import org.springblade.system.pojo.entity.UserInfo;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.ArrayList; import java.util.*;
import java.util.List;
import java.util.stream.Collectors; import java.util.stream.Collectors;
/** /**
@ -73,6 +81,13 @@ public class WorkPlanItemServiceImpl extends BaseServiceImpl<WorkPlanItemMapper,
@Resource @Resource
private WorkPlanMapper workPlanMapper; private WorkPlanMapper workPlanMapper;
@Resource
private IMacToolUseService macToolUseService;
@Resource
private ICraftAbilityService craftAbilityService;
@Resource
private WorkOrderMapper workOrderMapper;
@Override @Override
public IPage<WorkPlanItemVO> selectWorkPlanItemPage(IPage<WorkPlanItemVO> page, WorkPlanItemVO workPlanItem) { 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); List<WorkPlanItemVO> listVO = baseMapper.listShareByWpiId(wpiId);
for (WorkPlanItemVO vo : listVO) { for (WorkPlanItemVO vo : listVO) {
setVOValue(vo); setVOValue(vo);
vo.setCheckName("工序检验");
}
List<WorkPlanItemVO> itemVOS = listShareBySameSlot(wpiId);
if (CollectionUtils.isNotEmpty(itemVOS)) {
for (WorkPlanItemVO vo : itemVOS) {
setVOValue(vo);
vo.setCheckName("同槽订单");
}
} }
return listVO; 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;
}
} }

Loading…
Cancel
Save