package com.yuanchu.limslaboratory.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.yuanchu.limslaboratory.mapper.*;
import com.yuanchu.limslaboratory.pojo.*;
import com.yuanchu.limslaboratory.pojo.dto.InspectionProductListDto;
import com.yuanchu.limslaboratory.pojo.vo.FinPlanVo;
import com.yuanchu.limslaboratory.pojo.vo.PlanVo;
import com.yuanchu.limslaboratory.service.InspectionProductListService;
import com.yuanchu.limslaboratory.service.PlanService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.Date;
import java.util.List;
/**
*
* 服务实现类
*
*
* @author 江苏鵷雏网络科技有限公司
* @since 2023-07-17
*/
@Service
public class PlanServiceImpl extends ServiceImpl implements PlanService {
@Resource
PlanMapper planMapper;
@Resource
InspectionProductListMapper inspectionProductListMapper;
@Resource
InspectionMaterialListMapper inspectionMaterialListMapper;
@Resource
InspectionProductListService inspectionProductListService;
//查询所有检验计划分配
@Override
public List selectAllPlan(int pageSize, int countSize, Integer state) {
if (state == null) {
state = 2;
}
return planMapper.selectAllPlan((pageSize - 1) * countSize, pageSize * countSize, state);
}
//作废检验计划
@Override
public void delPlan(Integer id) {
Plan plan = planMapper.selectById(id);
/*检验计划作废*/
//状态改为作废0
plan.setState(0);
planMapper.updateById(plan);
/*检验样品作废(根据报检单id删除样品信息)*/
UpdateWrapper wrapper1 = new UpdateWrapper<>();
wrapper1.eq("inspection_id", plan.getInspectionId()).set("state", 0);
inspectionMaterialListMapper.update(new InspectionMaterialList(), wrapper1);
/*检验样品中的检验项目作废*/
//查出检验样品id
LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(InspectionMaterialList::getInspectionId, plan.getInspectionId());
List inspectionMaterialLists = inspectionMaterialListMapper.selectList(queryWrapper);
for (InspectionMaterialList inspectionMaterialList : inspectionMaterialLists) {
UpdateWrapper wrapper = new UpdateWrapper<>();
wrapper.eq("inspection_material_list_id", inspectionMaterialList.getId()).set("state", 0);
inspectionProductListService.update(new InspectionProductList(), wrapper);
}
}
//修改(分配)检验计划里分配计划的信息
@Override
public void upPlan(Integer id, InspectionProductListDto inspectionProductListDto) {
/*更新计划表中的状态(3:已分配),更新时间*/
//查询报检单id
InspectionMaterialList inspectionMaterialList = inspectionMaterialListMapper.selectById(id);
LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(Plan::getInspectionId, inspectionMaterialList.getInspectionId());
Plan plan = planMapper.selectOne(queryWrapper);
plan.setState(3).setUpdateTime(new Date());
//根据报检单id进行更新计划表
LambdaUpdateWrapper updateWrapper1 = new LambdaUpdateWrapper<>();
updateWrapper1.eq(Plan::getInspectionId, plan.getInspectionId());
planMapper.update(plan, updateWrapper1);
/*更新检验项目表中的项目检验开始日期,项目检验结束日期,项目试验员,试验要求,更新时间,设备id*/
InspectionProductList inspectionProductList = new InspectionProductList();
BeanUtils.copyProperties(inspectionProductListDto, inspectionProductList);
inspectionProductList.setInspectionMaterialListId(id);
//根据报检样品id和项目名称进行更新检验项目表
LambdaUpdateWrapper updateWrapper2 = new LambdaUpdateWrapper<>();
updateWrapper2.eq(InspectionProductList::getInspectionMaterialListId, inspectionProductList.getInspectionMaterialListId())
.eq(InspectionProductList::getName, inspectionProductList.getName());
inspectionProductListMapper.update(inspectionProductList, updateWrapper2);
}
//查询成品检验
@Override
public List selectInspection(int pageSize, int countSize, Integer state) {
return planMapper.selectInspection((pageSize - 1) * countSize, pageSize * countSize, state);
}
}