package com.jcdm.main.bs.orderScheduling.service.impl; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.ObjectUtil; import com.jcdm.common.utils.DateUtils; import com.jcdm.common.utils.StringUtils; import com.jcdm.main.bs.orderScheduling.Query.PrepareOnlineQuery; import com.jcdm.main.bs.orderScheduling.common.Constants; import com.jcdm.main.bs.orderScheduling.domain.BsOrderScheduling; import com.jcdm.main.bs.orderScheduling.mapper.BsOrderSchedulingMapper; import com.jcdm.main.bs.orderScheduling.service.IBsOrderSchedulingService; import com.jcdm.main.bs.orderScheduling.vo.FollowReportVO; import com.jcdm.main.bs.orderScheduling.vo.LineChartVO; import com.jcdm.main.da.paramCollection.domain.DaParamCollection; import com.jcdm.main.da.paramCollection.mapper.DaParamCollectionMapper; import com.jcdm.main.da.paramCollection.service.impl.DaParamCollectionServiceImpl; import com.jcdm.main.da.passingStationCollection.domain.DaPassingStationCollection; import com.jcdm.main.da.passingStationCollection.mapper.DaPassingStationCollectionMapper; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.text.SimpleDateFormat; import java.time.LocalDate; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.stream.Collectors; /** * 订单排产Service业务层处理 * * @author jiang * @date 2024-01-13 */ @Service public class BsOrderSchedulingServiceImpl implements IBsOrderSchedulingService { @Autowired private BsOrderSchedulingMapper bsOrderSchedulingMapper; @Resource private DaParamCollectionMapper daParamCollectionMapper; @Resource private DaPassingStationCollectionMapper daPassingStationCollectionMapper; /** * 查询订单排产 * * @param id 订单排产主键 * @return 订单排产 */ @Override public BsOrderScheduling selectBsOrderSchedulingById(Long id) { return bsOrderSchedulingMapper.selectBsOrderSchedulingById(id); } /** * 查询订单排产 * * @param sncode 订单排产发动机号 * @return 订单排产 */ @Override public BsOrderScheduling selectBsOrderSchedulingSNCode(String sncode) { return bsOrderSchedulingMapper.selectBsOrderSchedulingSNCode(sncode); } /** * 查询订单排产列表 * * @param bsOrderScheduling 订单排产 * @return 订单排产 */ @Override public List selectBsOrderSchedulingList(BsOrderScheduling bsOrderScheduling) { if(bsOrderScheduling.getDateConditions()!=null){ String[] conditions = bsOrderScheduling.getDateConditions(); bsOrderScheduling.setStartTime(conditions[0]); bsOrderScheduling.setEndTime(conditions[1]); } return bsOrderSchedulingMapper.selectBsOrderSchedulingList(bsOrderScheduling); } @Override public FollowReportVO getFollowReportList(BsOrderScheduling bsOrderScheduling) { FollowReportVO vo = new FollowReportVO(); if(bsOrderScheduling.getDateConditions()!=null){ String[] conditions = bsOrderScheduling.getDateConditions(); bsOrderScheduling.setStartTime(conditions[0]); bsOrderScheduling.setEndTime(conditions[1]); } //主表数据 List mainList = bsOrderSchedulingMapper.selectBsOrderSchedulingList(bsOrderScheduling); vo.setMainList(mainList); List engineNoList = mainList.stream().map(BsOrderScheduling::getEngineNo).distinct().collect(Collectors.toList()); List allChildList = new ArrayList<>(); List collect5 = new ArrayList<>(); if (CollUtil.isNotEmpty(engineNoList)){ allChildList = daParamCollectionMapper.getListBySfcCode(engineNoList); collect5 = daPassingStationCollectionMapper.getListBySfcCode(engineNoList); } if (CollUtil.isNotEmpty(allChildList)){ //拿到所有子数据 List collect1 = allChildList.stream().filter(x -> Constants.DATA1.equals(x.getType())).collect(Collectors.toList()); List collect2 = allChildList.stream().filter(x -> Constants.DATA2.equals(x.getType())).collect(Collectors.toList()); List collect3 = allChildList.stream().filter(x -> Constants.DATA3.equals(x.getType())).collect(Collectors.toList()); List collect4 = allChildList.stream().filter(x -> Constants.DATA4.equals(x.getType())).collect(Collectors.toList()); vo.setList1(collect1); vo.setList2(collect2); vo.setList3(collect3); vo.setList4(collect4); } vo.setList5(collect5); return vo; } @Override public List getOffLineNum() { List result = new ArrayList<>(); BsOrderScheduling bsOrderScheduling = new BsOrderScheduling(); DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); LocalDateTime now = LocalDateTime.now(); LocalDateTime startTime = LocalDateTime.of(now.getYear(),now.getMonthValue(),now.getDayOfMonth(),8,0,0); LocalDateTime endTime = LocalDateTime.of(now.getYear(),now.getMonthValue(),now.plusDays(1).getDayOfMonth(),22,0,0); String s1 = startTime.format(formatter); String s2 = endTime.format(formatter); bsOrderScheduling.setStartTime(s1); bsOrderScheduling.setEndTime(s2); List todayList = bsOrderSchedulingMapper.selectBsOrderSchedulingList(bsOrderScheduling); todayList = todayList.stream().filter(x -> ObjectUtil.isNotEmpty(x.getCvtOfflineTime())).collect(Collectors.toList()); if (CollUtil.isNotEmpty(todayList)){ List allModel = todayList.stream().map(BsOrderScheduling::getModel).distinct().collect(Collectors.toList()); Map> collect = new HashMap<>(); for (String s : allModel) { LineChartVO vo = new LineChartVO(); List arr = new ArrayList<>(); vo.setName(s); collect = todayList.stream().filter(x -> s.equals(x.getModel())).collect(Collectors.groupingBy(item -> new SimpleDateFormat("yyyy-MM-dd HH").format(item .getCvtOfflineTime()))); Map temp = new HashMap<>(); if (CollUtil.isNotEmpty(collect)){ for (String string : collect.keySet()) { int size = collect.get(string).size(); String s3 = string.split(StringUtils.SPACE)[1]; if (StringUtils.isNotEmpty(s3)){ int i = Integer.parseInt(s3); temp.put(i+1,size); } } } for (int i = 8; i < 23; i++) { if (i==8){ arr.add(0); }else { arr.add(temp.getOrDefault(i, 0)); } } vo.setData(arr); vo.setType("line"); result.add(vo); } } return result; } /** * 查询合箱上线列表 * @param prepareOnlineQuery * @return list */ public List getPrepareOnlineList(PrepareOnlineQuery prepareOnlineQuery){ return bsOrderSchedulingMapper.getPrepareOnlineList(prepareOnlineQuery); } /** * 新增订单排产 * * @param bsOrderScheduling 订单排产 * @return 结果 */ @Override public int insertBsOrderScheduling(BsOrderScheduling bsOrderScheduling) { bsOrderScheduling.setCreateTime(DateUtils.getNowDate()); return bsOrderSchedulingMapper.insertBsOrderScheduling(bsOrderScheduling); } /** * 修改订单排产 * * @param bsOrderScheduling 订单排产 * @return 结果 */ @Override public int updateBsOrderScheduling(BsOrderScheduling bsOrderScheduling) { bsOrderScheduling.setUpdateTime(DateUtils.getNowDate()); return bsOrderSchedulingMapper.updateBsOrderScheduling(bsOrderScheduling); } /** * 批量删除订单排产 * * @param ids 需要删除的订单排产主键 * @return 结果 */ @Override public int deleteBsOrderSchedulingByIds(Long[] ids) { return bsOrderSchedulingMapper.deleteBsOrderSchedulingByIds(ids); } /** * 删除订单排产信息 * * @param id 订单排产主键 * @return 结果 */ @Override public int deleteBsOrderSchedulingById(Long id) { return bsOrderSchedulingMapper.deleteBsOrderSchedulingById(id); } }