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;
|
|
/**
|
* <p>
|
* 服务实现类
|
* </p>
|
*
|
* @author 江苏鵷雏网络科技有限公司
|
* @since 2023-07-27
|
*/
|
@Service
|
public class MeteringPlanServiceImpl extends ServiceImpl<MeteringPlanMapper, MeteringPlan> 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<String, Object> pagingQueryOfMeteringPlan(SelectMeteringPlanDto dto) {
|
List<MeteringPlanAndInfo> 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);
|
});
|
Map<String, Object>all=new HashMap<>(2);
|
all.put("total",meteringPlanMapper.getTotal(dto).get("num"));
|
all.put("list",page);
|
return all;
|
}
|
|
@Override
|
public IPage<Map<String, Object>> pagingQueryOfMeasurementLedger(SelectMeasurementLedgerDto dto) {
|
return meteringPlanMapper.pagingQueryOfMeasurementLedger(new Page<>(dto.getCurrentPage(),dto.getPageSize(),true),dto);
|
}
|
|
@Override
|
public Map<String, Object> getPlanMeasureInstrument(GetPlanMeasureInstrumentDto dto) {
|
MeteringPlanAndInfoAndIns planMeasureInstrument =
|
meteringPlanMapper.getPlanMeasureInstrument
|
(new LimitPage((dto.getCurrentPage()-1)*dto.getPageSize(),
|
dto.getPageSize()), dto.getId());
|
Map<String, Object> map = meteringPlanMapper.countPlanMeasurIns(dto.getId());
|
map.put("list",planMeasureInstrument);
|
return map;
|
}
|
|
@Override
|
public Map<String, Object> limitGetPlanMeasureInstrument(GetPlanMeasureInstrumentDto dto) {
|
Map<String, Object> map = meteringPlanMapper.countPlanMeasurIns(dto.getId());
|
map.put("list",meteringPlanMapper
|
.limitGetPlanMeasureInstrument(new LimitPage((dto.getCurrentPage()-1)*dto.getPageSize()
|
,dto.getPageSize()),dto.getId()));
|
return map;
|
}
|
|
@Override
|
public UserAndInsVo getListUserAndListIns(List<Map<String, Object>> userNameAndId) {
|
QueryWrapper<Instrument>queryWrapper=new QueryWrapper<Instrument>();
|
queryWrapper.lambda()
|
.select(Instrument::getEquipmentName,Instrument::getId,Instrument::getMeasuringRange,Instrument::getTermValidity)
|
.eq(Instrument::getState,true);
|
List<Instrument> instruments = instrumentMapper.selectList(queryWrapper);
|
return new UserAndInsVo(userNameAndId,instruments);
|
}
|
|
@Override
|
@Transactional(rollbackFor = Exception.class)
|
public boolean addPlanAndMeasure(Map<String, Object> userInfo, AddPlanDto addPlanDto) {
|
//计划添加
|
MeteringPlan meteringPlan=new MeteringPlan();
|
String timeSixNumber = MyUtil.getTimeSixNumberCode("P","P");
|
meteringPlan.setPlannedOrderNumber(timeSixNumber);
|
meteringPlan.setCreatePerson(Integer.parseInt(String.valueOf(userInfo.get("id"))));
|
meteringPlan.setUnit(String.valueOf(addPlanDto.getPlan().get("unit")));
|
meteringPlan
|
.setBeginTime(DateUtil.
|
parseDate(String.valueOf(addPlanDto.getPlan().get("startTime"))));
|
meteringPlan.setEndTime(DateUtil.
|
parseDate(String.valueOf(addPlanDto.getPlan().get("endTime"))));
|
meteringPlan.setCreateTime(DateUtil.date());
|
meteringPlan.setMeasurePerson(Integer.parseInt(String.valueOf(addPlanDto.getPlan().get("measurePerson"))));
|
meteringPlan.setUpdateTime(DateUtil.date());
|
meteringPlan.setPlanningStatus(3);
|
boolean addPlan = meteringPlanMapper.insert(meteringPlan) > 0;
|
//新增计量
|
List<MetricalInformation>informationList=new ArrayList<>();
|
addPlanDto.getMeasureList().forEach(l->{
|
MetricalInformation info=new MetricalInformation();
|
info.setInstrumentId(Integer.parseInt(String.valueOf(l.get("equipmentPointName"))));
|
info.setUserId(Integer.parseInt(String.valueOf(userInfo.get("id"))));
|
info.setCreateTime(DateUtil.date());
|
Date endDate=Objects.nonNull(l.get("endDate"))?DateUtil.parseDate(String.valueOf(l.get("endDate"))):null;
|
info.setEndDate(endDate);
|
Integer result=Objects.nonNull(l.get("result"))?Integer.parseInt(String.valueOf(l.get("result"))):null;
|
info.setResult(result);
|
info.setMeasurementUnit(meteringPlan.getUnit());
|
info.setCode(MyUtil.getTimeSixNumberCode("METRICALCODE","METRICALCODE"));
|
info.setUpdateTime(DateUtil.date());
|
info.setPlan(meteringPlan.getId());
|
informationList.add(info);
|
});
|
return addPlan&&metricalInformationMapper.insertBatchInformation(informationList)>0;
|
}
|
|
|
}
|