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> pagingQueryOfMeasurementLedger(SelectMeasurementLedgerDto dto) { return meteringPlanMapper.pagingQueryOfMeasurementLedger(new Page<>(dto.getCurrentPage(),dto.getPageSize(),true),dto); } @Override public Map getPlanMeasureInstrument(GetPlanMeasureInstrumentDto dto) { MeteringPlanAndInfoAndIns planMeasureInstrument = meteringPlanMapper.getPlanMeasureInstrument (new LimitPage((dto.getCurrentPage()-1)*dto.getPageSize(), dto.getPageSize()), dto.getId()); Map map = meteringPlanMapper.countPlanMeasurIns(dto.getId()); map.put("list",planMeasureInstrument); return map; } @Override public Map limitGetPlanMeasureInstrument(GetPlanMeasureInstrumentDto dto) { Map 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> userNameAndId) { QueryWrapperqueryWrapper=new QueryWrapper(); queryWrapper.lambda() .select(Instrument::getEquipmentName,Instrument::getId,Instrument::getMeasuringRange,Instrument::getTermValidity) .eq(Instrument::getState,true); List instruments = instrumentMapper.selectList(queryWrapper); return new UserAndInsVo(userNameAndId,instruments); } @Override @Transactional(rollbackFor = Exception.class) public boolean addPlanAndMeasure(Map 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; //新增计量 ListinformationList=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; } }