package com.yuanchu.mom.service.impl; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.yuanchu.mom.mapper.DeviceMapper; import com.yuanchu.mom.mapper.ManualTechnologyMapper; import com.yuanchu.mom.mapper.ManufactureOrderMapper; import com.yuanchu.mom.pojo.ManualTechnology; import com.yuanchu.mom.pojo.ManufactureOrder; import com.yuanchu.mom.pojo.dto.ManualTechnologyDto; import com.yuanchu.mom.service.ManualTechnologyService; import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import java.util.List; import java.util.Map; import java.util.stream.Collectors; /** * 编制工序表(ManualTechnology)表服务实现类 * * @author zss * @since 2023-08-17 14:16:46 */ @Service public class ManualTechnologyServiceImpl extends ServiceImpl implements ManualTechnologyService { @Resource ManualTechnologyMapper manualTechnologyMapper; @Resource ManufactureOrderMapper manufactureOrderMapper; //排产-->查看 @Override public List> seleDatil(Integer manOrdId) { return manualTechnologyMapper.seleDatil(manOrdId); } //排产-->更新 @Override @Transactional(rollbackFor = Exception.class) public void output(String date, List manualTechnologyDtoList) throws ParseException { //更新每个工序的设备 List manualTechnologies = manualTechnologyDtoList.stream().map(manualTechnologyDto -> { ManualTechnology manualTechnology = new ManualTechnology(); BeanUtils.copyProperties(manualTechnologyDto, manualTechnology); return manualTechnology; }).collect(Collectors.toList()); //批量更新设备id manualTechnologyMapper.updateBatchManualTechnology(manualTechnologies); Integer manufactureOrderId = manualTechnologyMapper.selectById(manualTechnologyDtoList.get(1).getId()).getManufactureOrderId(); List manualTechnologyList = manualTechnologyMapper.selectList(Wrappers.query().eq("manufacture_order_id", manufactureOrderId)); /*赋值(最开始第一个工序的开始日期)*/ DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); Date parse = dateFormat.parse(date); //将起始日期赋值给Calendar对象 Calendar calendar = Calendar.getInstance(); calendar.setTime(parse); //第一个工序 ManualTechnology manualTechnology = manualTechnologyList.get(0); calendar.add(Calendar.DATE, manualTechnology.getPeriod()); manualTechnology.setStartTime(parse).setEndTime(calendar.getTime()); //循环赋值时间 for (int i = 0; i < manualTechnologyList.size()-1 ; i++) { Calendar calendar1 = Calendar.getInstance(); calendar1.setTime(manualTechnologyList.get(i).getEndTime()); ManualTechnology technology = manualTechnologyList.get(i + 1); calendar1.add(Calendar.DATE,1); technology.setStartTime(calendar1.getTime()); calendar1.add(Calendar.DATE,technology.getPeriod()); technology.setEndTime(calendar1.getTime()); } //批量更新 manualTechnologyMapper.updateBatchManualTechnology(manualTechnologyList); //如果该产品下的所有工序都安排了,则将状态改为已排产还有待下达 if (checkFieldExistence(manualTechnologies)) { ManufactureOrder manufactureOrder = new ManufactureOrder(); manufactureOrder.setId(manufactureOrderId).setType(1).setGoState(0); manufactureOrderMapper.updateById(manufactureOrder); } } /*判断是否所有工序全部都安排了设备*/ public static boolean checkFieldExistence(List dataList) { for (ManualTechnology data : dataList) { if (data.getDeviceId() == null) { return false; } } return true; } }