| | |
| | | package com.yuanchu.mom.service.impl; |
| | | |
| | | import cn.hutool.core.date.DateUtil; |
| | | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
| | | import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | | import com.baomidou.mybatisplus.core.toolkit.Wrappers; |
| | | import com.yuanchu.mom.pojo.ManufactureOrderProcess; |
| | | import com.yuanchu.mom.mapper.ManufactureOrderProcessMapper; |
| | | import com.yuanchu.mom.pojo.ManufactureScheduling; |
| | | import com.yuanchu.mom.service.ManufactureOrderProcessService; |
| | | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
| | | import com.yuanchu.mom.service.ManufactureSchedulingService; |
| | | import com.yuanchu.mom.utils.MyUtil; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.data.domain.Page; |
| | | import org.springframework.stereotype.Service; |
| | | |
| | | import javax.annotation.Resource; |
| | | import java.util.Date; |
| | | import java.util.List; |
| | | import java.util.Objects; |
| | | |
| | | /** |
| | | * <p> |
| | |
| | | @Resource |
| | | private ManufactureOrderProcessMapper manufactureOrderProcessMapper; |
| | | |
| | | @Autowired |
| | | private ManufactureSchedulingService manufactureSchedulingService; |
| | | |
| | | @Override |
| | | public void batchInsert(List<ManufactureOrderProcess> manufactureOrderProcessesDate) { |
| | | manufactureOrderProcessMapper.insertBatchSomeColumn(manufactureOrderProcessesDate); |
| | | } |
| | | |
| | | @Override |
| | | public void updateTime(Integer technologyId, Integer schedulingId, String startTime, Integer period) { |
| | | // 先更新周期 |
| | | LambdaUpdateWrapper<ManufactureOrderProcess> updateWrapper = Wrappers.<ManufactureOrderProcess>lambdaUpdate() |
| | | .eq(ManufactureOrderProcess::getId, technologyId) |
| | | .set(ManufactureOrderProcess::getPeriod, period); |
| | | manufactureOrderProcessMapper.update(new ManufactureOrderProcess(), updateWrapper); |
| | | |
| | | |
| | | // 如果周期更新完成,根据排产Id查询所有的工序Id与每道工序周期,经过处理然后批量更新开始时间与结束时间 |
| | | // Hutool 工具类计算间隔小时 |
| | | Date startTime1 = DateUtil.parse(startTime); |
| | | // 根据排产Id查询所有对应的工序数据 |
| | | LambdaQueryWrapper<ManufactureOrderProcess> queryWrapper = Wrappers.<ManufactureOrderProcess>lambdaQuery() |
| | | .eq(ManufactureOrderProcess::getManufactureSchedulingId, schedulingId) |
| | | .select(ManufactureOrderProcess::getId, ManufactureOrderProcess::getPeriod); |
| | | List<ManufactureOrderProcess> list = manufactureOrderProcessMapper.selectList(queryWrapper); |
| | | // 开始处理日期 |
| | | for (int i = 0; i < list.size(); i++) { |
| | | if (Objects.equals(list.get(i).getId(), technologyId)){ |
| | | list.get(i).setStartTime(startTime1); |
| | | list.get(i).setEndTime(DateUtil.offsetDay(startTime1, list.get(i).getPeriod())); |
| | | for (int j = i + 1; j < list.size(); j++) { |
| | | // 获取上一个工序的结束时间,并且在此基础上加一天 |
| | | list.get(j).setStartTime(DateUtil.offsetDay(list.get(j - 1).getEndTime(), 1)); |
| | | // 获取第j个位置的周期,周期与开始时间相加 |
| | | list.get(j).setEndTime(DateUtil.offsetDay(list.get(j).getStartTime(), list.get(j).getPeriod())); |
| | | } |
| | | break; |
| | | } |
| | | } |
| | | manufactureOrderProcessMapper.updateTime(list); |
| | | |
| | | |
| | | // 如果批量更新时间成功,开始更新排产表中的开始时间与结束时间 |
| | | // 获取工艺的计划开始时间 |
| | | Date startDate = manufactureOrderProcessMapper.selectSchedulingStartTime(schedulingId); |
| | | // 获取工艺的最晚完成时间 |
| | | Date endDate = list.get(list.size() - 1).getEndTime(); |
| | | LambdaUpdateWrapper<ManufactureScheduling> updateWrapper1 = Wrappers.<ManufactureScheduling>lambdaUpdate() |
| | | .eq(ManufactureScheduling::getId, schedulingId) |
| | | .set(ManufactureScheduling::getStartTime, startDate) |
| | | .set(ManufactureScheduling::getEndTime, endDate); |
| | | manufactureSchedulingService.update(new ManufactureScheduling(), updateWrapper1); |
| | | } |
| | | } |