package com.yuanchu.limslaboratory.service.impl;
import cn.hutool.core.date.DateUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yuanchu.limslaboratory.mapper.InstrumentMapper;
import com.yuanchu.limslaboratory.mapper.MetricalInformationMapper;
import com.yuanchu.limslaboratory.pojo.*;
import com.yuanchu.limslaboratory.mapper.MeteringPlanMapper;
import com.yuanchu.limslaboratory.pojo.dto.AddPlanDto;
import com.yuanchu.limslaboratory.pojo.dto.GetPlanMeasureInstrumentDto;
import com.yuanchu.limslaboratory.pojo.dto.SelectMeasurementLedgerDto;
import com.yuanchu.limslaboratory.pojo.dto.SelectMeteringPlanDto;
import com.yuanchu.limslaboratory.pojo.vo.UserAndInsVo;
import com.yuanchu.limslaboratory.service.MeteringPlanService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.yuanchu.limslaboratory.utils.MyUtil;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.util.*;
import java.util.concurrent.atomic.AtomicBoolean;
/**
*
* 服务实现类
*
*
* @author 江苏鵷雏网络科技有限公司
* @since 2023-07-27
*/
@Service
public class MeteringPlanServiceImpl extends ServiceImpl implements MeteringPlanService {
@Resource
private MeteringPlanMapper meteringPlanMapper;
@Resource
private InstrumentMapper instrumentMapper;
@Resource
private MetricalInformationMapper metricalInformationMapper;
@Override
public Integer addMeteringPlanInformation(MeteringPlan meteringPlan) {
String timeSixNumber = MyUtil.getTimeSixNumberCode("P","P");
meteringPlan.setPlannedOrderNumber(timeSixNumber);
return meteringPlanMapper.insert(meteringPlan);
}
@Override
public Map pagingQueryOfMeteringPlan(SelectMeteringPlanDto dto) {
List page= meteringPlanMapper
.limitConditionMeteringPlan(dto,new LimitPage((dto.getCurrentPage()-1)*dto.getPageSize(), dto.getPageSize()));
page.forEach(l->{
AtomicBoolean haveZero= new AtomicBoolean(false);
l.getResultList().forEach(r->{
if (r.getResult()<1) {
haveZero.set(true);
}else {
l.setStatus(1);
}
});
if(haveZero.get()){
l.setStatus(0);
}
l.setResultList(null);
});
Mapall=new HashMap<>(2);
all.put("total",meteringPlanMapper.getTotal(dto).get("num"));
all.put("list",page);
return all;
}
@Override
public IPage