package com.billion.main.da.service.impl; import cn.hutool.http.HttpRequest; import cn.hutool.http.HttpResponse; import cn.hutool.json.JSONUtil; import com.billion.main.api.domain.CollectQualityData; import com.billion.main.constant.Constants; import com.billion.main.da.domain.CollectTrack; import com.billion.main.da.domain.DaParamCollection; import com.billion.main.da.mapper.DaParamCollectionMapper; import com.billion.main.da.service.IDaParamCollectionService; import com.billion.main.om.domain.OmOrderScheduling; import com.billion.main.om.service.IOmOrderSchedulingService; import lombok.extern.slf4j.Slf4j; import org.apache.ibatis.session.ExecutorType; import org.apache.ibatis.session.SqlSession; import org.apache.ibatis.session.SqlSessionFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.text.SimpleDateFormat; import java.util.List; import java.util.Objects; /** * 参数采集Service业务层处理 * * @author Billion-Yi * @date 2024-11-20 */ @Slf4j @Service public class DaParamCollectionServiceImpl implements IDaParamCollectionService { @Autowired private DaParamCollectionMapper daParamCollectionMapper; @Autowired private IDaParamCollectionService daParamCollectionService; @Resource private SqlSessionFactory sqlSessionFactory; public IOmOrderSchedulingService omOrderSchedulingService; /** * 查询参数采集 * * @param id 参数采集主键 * @return 参数采集 */ @Override public DaParamCollection selectDaParamCollectionById(Long id) { return daParamCollectionMapper.selectDaParamCollectionById(id); } /** * 查询参数采集列表 * * @param daParamCollection 参数采集 * @return 参数采集 */ @Override public List selectDaParamCollectionList(DaParamCollection daParamCollection) { return daParamCollectionMapper.selectDaParamCollectionList(daParamCollection); } /** * 新增参数采集 * * @param daParamCollection 参数采集 * @return 结果 */ @Override public int insertDaParamCollection(DaParamCollection daParamCollection) { String url = "http://172.40.161.71:8890/Interaction/CollectQualityData"; OmOrderScheduling omOrderScheduling = new OmOrderScheduling(); CollectQualityData collectQualityData = new CollectQualityData(); omOrderScheduling.setSfcCode(daParamCollection.getSfcCode()); if(Objects.equals(daParamCollection.getLocationCode(), Constants.PLC1.toString()) || Objects.equals(daParamCollection.getLocationCode(), Constants.C005) || Objects.equals(daParamCollection.getLocationCode(), Constants.C060)) {omOrderScheduling.setRemarks("Head");} else if(Objects.equals(daParamCollection.getLocationCode(), Constants.PLC2.toString()) || Objects.equals(daParamCollection.getLocationCode(), Constants.OP005) || Objects.equals(daParamCollection.getLocationCode(), Constants.OP310)) {omOrderScheduling.setRemarks("Body");} else if(Objects.equals(daParamCollection.getLocationCode(), Constants.P010)) {omOrderScheduling.setRemarks("Pre");} List omOrderSchedulingList = omOrderSchedulingService.selectOmOrderSchedulingList(omOrderScheduling); collectQualityData.setOrderNumber(omOrderSchedulingList.get(0).getWorkOrderNo()); collectQualityData.setStationName(daParamCollection.getLocationCode()); collectQualityData.setEngineNumber(daParamCollection.getSfcCode()); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); collectQualityData.setInsertTime(sdf.format(daParamCollection.getCollectTime())); collectQualityData.setDetectionName(daParamCollection.getParamName()); collectQualityData.setActualValue(daParamCollection.getParamValue()); try { HttpResponse response = HttpRequest.post(url).body(JSONUtil.toJsonStr(collectQualityData)).execute(); log.info("推送成功,响应报文: {}", response); } catch (Exception e) { // 记录日志 log.error("推送失败, sfcCode: {}",collectQualityData.getFactoryNumber()); } return daParamCollectionMapper.insertDaParamCollection(daParamCollection); } /** * 修改参数采集 * * @param daParamCollection 参数采集 * @return 结果 */ @Override public int updateDaParamCollection(DaParamCollection daParamCollection) { return daParamCollectionMapper.updateDaParamCollection(daParamCollection); } /** * 批量删除参数采集 * * @param ids 需要删除的参数采集主键 * @return 结果 */ @Override public int deleteDaParamCollectionByIds(Long[] ids) { return daParamCollectionMapper.deleteDaParamCollectionByIds(ids); } /** * 删除参数采集信息 * * @param id 参数采集主键 * @return 结果 */ @Override public int deleteDaParamCollectionById(Long id) { return daParamCollectionMapper.deleteDaParamCollectionById(id); } @Override public void saveBeachDaParamCollection(List list) { // ExecutorType.SIMPLE: 这个执行器类型不做特殊的事情。它为每个语句的执行创建一个新的预处理语句。 // ExecutorType.REUSE: 这个执行器类型会复用预处理语句。 // ExecutorType.BATCH: 这个执行器会批量执行所有更新语句,如果 SELECT 在它们中间执行还会标定它们是 必须的,来保证一个简单并易于理解的行为。 // 关闭session的自动提交 SqlSession sqlSession = sqlSessionFactory.openSession(ExecutorType.BATCH, false); try { DaParamCollectionMapper userMapper = sqlSession.getMapper(DaParamCollectionMapper.class); list.stream().forEach(DaParamCollection -> userMapper.insertDaParamCollection(DaParamCollection)); // 提交数据 sqlSession.commit(); sqlSession.rollback(); } catch (Exception e) { sqlSession.rollback(); } finally { sqlSession.close(); } } }