package com.yuanchu.mom.service.impl;
|
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import com.yuanchu.mom.mapper.*;
|
import com.yuanchu.mom.pojo.*;
|
import com.yuanchu.mom.pojo.vo.ProcessInspectVo;
|
import com.yuanchu.mom.service.*;
|
import org.springframework.beans.BeanUtils;
|
import org.springframework.stereotype.Service;
|
import org.springframework.transaction.annotation.Transactional;
|
|
import javax.annotation.Resource;
|
import java.util.Date;
|
import java.util.List;
|
import java.util.Map;
|
import java.util.Objects;
|
import java.util.stream.Collectors;
|
|
/**
|
* 过程检验(ProcessInspect)表服务实现类
|
*
|
* @author zss
|
* @since 2023-09-06 13:36:03
|
*/
|
@Service
|
public class ProcessInspectServiceImpl extends ServiceImpl<ProcessInspectMapper, ProcessInspect> implements ProcessInspectService {
|
|
@Resource
|
ProcessInspectMapper processInspectMapper;
|
|
@Resource
|
ProductService productService;
|
|
@Resource
|
InspectionItemMapper inspectionItemMapper;
|
|
@Resource
|
InspectionItemService inspectionItemService;
|
|
@Resource
|
InspectUnacceptedMapper inspectUnacceptedMapper;
|
|
//新增过程检验单-->根据订单号选择产品信息和工艺
|
@Override
|
public List<Map<String, Object>> chooseMater(String orderNumber) {
|
return processInspectMapper.chooseMater(orderNumber);
|
}
|
|
//新增过程检验单
|
@Override
|
@Transactional(rollbackFor = Exception.class)
|
public Integer addProcess(String userId, ProcessInspectVo processInspectVo) {
|
/*新增过程检验单*/
|
ProcessInspect processInspect = new ProcessInspect();
|
processInspect.setUserId(Integer.parseInt(userId));
|
BeanUtils.copyProperties(processInspectVo, processInspect);
|
processInspectMapper.insert(processInspect);
|
/*批量新增过程检验项目表*/
|
/*//获取型号id
|
Integer specificationId = getSpecificationId(processInspectVo.getMaterial(), processInspectVo.getMaterialCode(), processInspectVo.getSpecificationsModel());
|
//查询标准BOM技术指标中该型号工艺下最新版本的检验项目
|
Integer ver = productService.selectVerByPro(specificationId).get(0);//该型号下技术指标最新版本*/
|
List<Product> productList = productService.selProByVerSpe(processInspectVo.getTechId());
|
List<InspectionItem> inspectionItemList = productList.stream().map(product -> {
|
InspectionItem inspectionItem = new InspectionItem();
|
BeanUtils.copyProperties(product, inspectionItem);
|
inspectionItem.setCreateTime(new Date());
|
inspectionItem.setUpdateTime(new Date());
|
inspectionItem.setInspectId(processInspect.getId());
|
inspectionItem.setType(1);
|
return inspectionItem;
|
}).collect(Collectors.toList());
|
inspectionItemService.saveBatch(inspectionItemList);
|
return processInspect.getId();
|
}
|
|
//上报(更新检验状态)
|
@Override
|
@Transactional(rollbackFor = Exception.class)
|
public String updateProcessInspectsById(Integer id) {
|
/*更新检验单里面的检验结论*/
|
//先判断检验结果
|
List<Integer> results = inspectionItemMapper.getResult(id,1);
|
int count = 0;
|
for (Integer result : results) {
|
if (result != null && result == 1) {
|
count++;
|
}
|
}
|
ProcessInspect processInspect = processInspectMapper.selectById(id);
|
//如果检验项目中的结论包含不合格则检验单不合格
|
if (results.contains(0)) {
|
processInspect.setResult(0);//不合格
|
//更新检验单
|
processInspectMapper.updateById(processInspect);
|
} else if (count == results.size()) {
|
processInspect.setResult(1);//合格
|
processInspectMapper.updateById(processInspect);
|
} else return "项目未检验完!";
|
/*如果检验结论为不合格,则需要新增不合格检验单*/
|
if (processInspect.getResult() == 0) {
|
InspectUnaccepted processUnaccepted = InspectUnaccepted.builder()
|
.reason(processInspect.getMaterial() +processInspect.getTechname()+ "不合格") //暂且定义为产品名称+工艺不合格
|
.rawInspectId(id)
|
.type(2) //类型为过程检验
|
.build();
|
inspectUnacceptedMapper.insert(processUnaccepted);
|
}
|
return "上报成功!";
|
}
|
|
//根据检验单id查询过程检验单详情
|
@Override
|
public List<Map<String, Object>> selectProcessInspectsListById(Integer id) {
|
return processInspectMapper.selectProcessInspectsListById(id);
|
}
|
|
//分页查询过程检验单列表
|
@Override
|
public IPage<Map<String, Object>> selectProcessInspectsList(Page<Object> page, String techfather, Integer result, String name) {
|
return processInspectMapper.selectProcessInspectsList(page,techfather,result,name);
|
}
|
|
}
|