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
|
ManualProductService manualProductService;
|
|
@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);
|
/*批量新增过程检验项目表*/
|
List<ManualProduct> manualProductList = manualProductService.selByMtid(processInspectVo.getMtId());
|
List<InspectionItem> inspectionItemList = manualProductList.stream().map(manualProduct -> {
|
InspectionItem inspectionItem = new InspectionItem();
|
BeanUtils.copyProperties(manualProduct, 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, Integer number) {
|
/*更新检验单里面的检验结论*/
|
//先判断检验结果
|
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) {
|
//查询该检验单哪些检验项目不合格
|
List<InspectionItem> inspectionItemList = inspectionItemMapper.selectList(Wrappers.<InspectionItem>query()
|
.eq("inspect_id", id)
|
.eq("result", 0)
|
.eq("type", 1));
|
String msg = "";
|
for (InspectionItem inspectionItem : inspectionItemList) {
|
msg = msg + inspectionItem.getName() + "-";
|
}
|
InspectUnaccepted processUnaccepted = InspectUnaccepted.builder()
|
.reason(processInspect.getTechname() + "-" + msg + "不合格") //定义为工艺+项目不合格
|
.number(number)
|
.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);
|
}
|
|
}
|