package com.ruoyi.requier.service.impl;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.ObjectUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.basic.vo.StandardProductVO;
import com.ruoyi.common.core.domain.entity.User;
import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.framework.exception.ErrorException;
import com.ruoyi.inspect.mapper.*;
import com.ruoyi.inspect.pojo.*;
import com.ruoyi.inspect.vo.ProductVo;
import com.ruoyi.performance.mapper.AuxiliaryOutputWorkingHoursMapper;
import com.ruoyi.performance.mapper.PerformanceShiftMapper;
import com.ruoyi.performance.mapper.ShiftTimeMapper;
import com.ruoyi.performance.pojo.AuxiliaryOutputWorkingHours;
import com.ruoyi.performance.pojo.PerformanceShift;
import com.ruoyi.performance.pojo.ShiftTime;
import com.ruoyi.requier.mapper.PkMasterMapper;
import com.ruoyi.requier.mapper.PkSlaveMapper;
import com.ruoyi.requier.pojo.PkMaster;
import com.ruoyi.requier.pojo.PkSlave;
import com.ruoyi.requier.service.InsOrderPlanService;
import com.ruoyi.requier.service.PkMasterService;
import com.ruoyi.system.mapper.UserMapper;
import lombok.extern.slf4j.Slf4j;
import org.apache.logging.log4j.util.Strings;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.time.format.DateTimeFormatter;
import java.util.*;
import java.util.stream.Collectors;
/**
*
* 服务实现类
*
*
* @author 江苏鵷雏网络科技有限公司
* @since 2024-07-29 01:16:26
*/
@Service
@Slf4j
public class PkMasterServiceImpl extends ServiceImpl implements PkMasterService {
@Resource
private PkMasterMapper pkMasterMapper;
@Resource
private PkSlaveMapper pkSlaveMapper;
@Resource
private InsOrderMapper insOrderMapper;
@Resource
private InsSampleMapper insSampleMapper;
@Resource
private InsProductMapper insProductMapper;
@Resource
private InsProductResultMapper insProductResultMapper;
@Resource
private InsProductUserMapper insProductUserMapper;
@Resource
private UserMapper userMapper;
@Resource
private InsOrderPlanService insOrderPlanService;
@Resource
private InsOrderPlanServiceImpl insOrderPlanServiceImpl;
@Resource
private ShiftTimeMapper shiftTimeMapper;
@Resource
private PerformanceShiftMapper performanceShiftMapper;
@Resource
private AuxiliaryOutputWorkingHoursMapper auxiliaryOutputWorkingHoursMapper;
//温度循环数采
@Override
@Transactional(rollbackFor = Exception.class)
public int temDataAcquisition(PkMaster pkMaster) {
Integer userId = SecurityUtils.getUserId().intValue();
//查询数采关联的子表信息
PkMaster master = new PkMaster();
List pkMasters = pkMasterMapper.selectList(Wrappers.lambdaQuery()
.eq(PkMaster::getEntrustCode, pkMaster.getEntrustCode())
.eq(PkMaster::getSampleCode, pkMaster.getSampleCode())
.eq(PkMaster::getModel, pkMaster.getModel())
.eq(PkMaster::getCycles, pkMaster.getCycles())
.eq(PkMaster::getTemperature, pkMaster.getTemperature()).orderByDesc(PkMaster::getId));
if(!pkMasters.isEmpty()){
master = pkMasters.get(0);
}
//查询对应的检验单表
InsOrder insOrder = insOrderMapper.selectOne(Wrappers.lambdaQuery().eq(InsOrder::getState, 1).eq(InsOrder::getEntrustCode, pkMaster.getEntrustCode()));
if (ObjectUtils.isEmpty(insOrder)) {
throw new ErrorException("没有找到对应委托单" + pkMaster.getEntrustCode());
}
//查询对应检验样品id
InsSample insSample = insSampleMapper.selectOne(Wrappers.lambdaQuery()
.eq(InsSample::getInsOrderId, insOrder.getId())
.eq(InsSample::getSampleCode, pkMaster.getSampleCode())
.eq(InsSample::getModel, pkMaster.getModel()));
if (ObjectUtils.isEmpty(insSample)) {
throw new ErrorException("没有找到对应委托单下的该样品" + pkMaster.getSampleCode());
} if (ObjectUtils.isNotEmpty(master)) {
//throw new ErrorException("没有找到对应委托单" + pkMaster.getEntrustCode() + "的数采数据");
List pkSlaves = pkSlaveMapper.selectList1(master.getIsid());
if (CollectionUtils.isEmpty(pkSlaves)) {
throw new ErrorException("没有找到对应委托单" + pkMaster.getEntrustCode() + "的数采子数据");
}
//查询对应检验项目
Map map = insOrderPlanService.temCycle(insSample.getId(), pkMaster.getCycles(), pkMaster.getTemperature());
List productVos = (List) map.get("productVos");
if (CollectionUtils.isNotEmpty(productVos)) {
//todo 如果温度循环的项目nm有改动这里需要改动 @zss
for (PkSlave pkSlave : pkSlaves) {
for (ProductVo productVo : productVos) {
if (pkSlave.getInsBushingId().equals(productVo.getBushColor()) &&
pkSlave.getInsFibersId().equals(productVo.getCode()) &&
pkSlave.getInsFiberId().equals(productVo.getColor())) {
//找到对应的数据(对应套管光纤的数据)
List results = insProductResultMapper.selectList(Wrappers.lambdaQuery().eq(InsProductResult::getInsProductId, productVo.getInsProduct().getId()));
InsProductResult result;
if (CollectionUtils.isEmpty(results)) {
result = new InsProductResult();
} else {
result = results.get(0);
}
result.setInsProductId(productVo.getInsProduct().getId());//检验项目id
List