From 1eefb88049771407e0d0f9c8711bd473e44a1ba6 Mon Sep 17 00:00:00 2001 From: zhangherong <571457620@qq.com> Date: 星期四, 07 八月 2025 16:36:19 +0800 Subject: [PATCH] art: SAP 生产订单报工、投料、关闭接口初始代码 --- src/main/java/org/jeecg/modules/mes/service/impl/MesProductionWorkOrderServiceImpl.java | 84 ++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 84 insertions(+), 0 deletions(-) diff --git a/src/main/java/org/jeecg/modules/mes/service/impl/MesProductionWorkOrderServiceImpl.java b/src/main/java/org/jeecg/modules/mes/service/impl/MesProductionWorkOrderServiceImpl.java index 0bfbfb8..51adc5b 100644 --- a/src/main/java/org/jeecg/modules/mes/service/impl/MesProductionWorkOrderServiceImpl.java +++ b/src/main/java/org/jeecg/modules/mes/service/impl/MesProductionWorkOrderServiceImpl.java @@ -1,10 +1,29 @@ package org.jeecg.modules.mes.service.impl; +import cn.hutool.core.collection.CollectionUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.jeecg.common.constant.CommonConstant; +import org.jeecg.modules.base.entity.Factory; +import org.jeecg.modules.base.entity.Shift; +import org.jeecg.modules.base.entity.ShiftGroup; +import org.jeecg.modules.base.service.IFactoryService; +import org.jeecg.modules.base.service.IShiftGroupService; +import org.jeecg.modules.base.service.IShiftService; +import org.jeecg.modules.mes.dto.MesProductionWorkScheduleRequest; import org.jeecg.modules.mes.service.IMesProductionWorkOrderService; import org.jeecg.modules.mes.entity.MesProductionWorkOrder; import org.jeecg.modules.mes.mapper.MesProductionWorkOrderMapper; +import org.jeecg.modules.system.service.ISysDictService; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; + +import java.time.LocalDate; +import java.time.ZoneId; +import java.time.temporal.ChronoUnit; +import java.util.*; +import java.util.stream.Collectors; +import java.util.stream.Stream; /** * @Description: 鎺掍骇宸ュ崟 @@ -14,5 +33,70 @@ */ @Service public class MesProductionWorkOrderServiceImpl extends ServiceImpl<MesProductionWorkOrderMapper, MesProductionWorkOrder> implements IMesProductionWorkOrderService { + @Autowired + private IShiftService shiftService; + @Autowired + private IShiftGroupService shiftGroupService; + @Autowired + private IFactoryService factoryService; + @Override + public List<MesProductionWorkOrder> schedule(MesProductionWorkScheduleRequest request) { + //鏌ヨ璧锋鏃ユ湡鑼冨洿鍐呯殑鎺掍骇璁″垝锛屽厛鎺掗櫎 + //鏌ヨ璇ヤ骇绾夸笅鎵�鏈夌殑鐝 + Map<String, ShiftGroup> shiftGroupMap = shiftGroupService.list(new LambdaQueryWrapper<ShiftGroup>() + .eq(ShiftGroup::getFactoryId, request.getFactoryId()) + .eq(ShiftGroup::getDelFlag, CommonConstant.DEL_FLAG_0)) + .stream().collect(Collectors.toMap(ShiftGroup::getShiftId, v1 -> v1, (v1, v2) -> v1)); + Factory factory = factoryService.getById(request.getFactoryId()); + Map<String, Shift> shiftNameMap = new HashMap<>(); + List<Shift> shifts = shiftService.list(new LambdaQueryWrapper<Shift>() + .in(Shift::getId, shiftGroupMap.keySet())); + shifts.forEach(shift -> shiftNameMap.put(shift.getId(), shift)); + + LocalDate startDate = request.getStartDate().toInstant().atZone(ZoneId.systemDefault()).toLocalDate(); + LocalDate endDate = request.getEndDate().toInstant().atZone(ZoneId.systemDefault()).toLocalDate(); + // 浣跨敤鏃ユ湡鑼冨洿杩涜閬嶅巻澶勭悊 + List<LocalDate> dateRange = Stream.iterate(startDate, date -> date.plusDays(1)) + .limit(ChronoUnit.DAYS.between(startDate, endDate) + 1) + .collect(Collectors.toList()); + List<MesProductionWorkOrder> newProductionWorkOrderList = CollectionUtil.newArrayList(); + + for (LocalDate date : dateRange) { + for (String shiftId : shiftGroupMap.keySet()) { + Date workOrderDate = Date.from(date.atStartOfDay(ZoneId.systemDefault()).toInstant()); + //鏌ヨ璇ヤ骇绾裤�佺彮娆″湪璇ユ棩鏈熶笅鏄惁鏈夋帓浜ц鍒� + Optional<MesProductionWorkOrder> optional = list(new LambdaQueryWrapper<MesProductionWorkOrder>() + .eq(MesProductionWorkOrder::getWorkOrderDate, workOrderDate) + .eq(MesProductionWorkOrder::getFactoryId, request.getFactoryId()) + .eq(MesProductionWorkOrder::getShiftId, shiftId)) + .stream().findAny(); + if (!optional.isPresent()) { + ShiftGroup shiftGroup = shiftGroupMap.get(shiftId); + //娌℃湁锛岀敓鎴愭柊鎺掍骇璁″垝 + MesProductionWorkOrder mesProductionWorkOrder = new MesProductionWorkOrder() + .setFactoryId(factory.getId()) + .setFactoryCode(factory.getFactoryCode()) + .setFactoryName(factory.getFactoryName()) + .setShiftId(shiftId) + .setShiftCode(shiftNameMap.get(shiftId).getShiftCode()) + .setShiftName(shiftNameMap.get(shiftId).getShiftName()) + .setGroupId(shiftGroup.getId()) + .setGroupName(shiftGroup.getGroupName()) + .setWorkOrderDate(workOrderDate); + + newProductionWorkOrderList.add(mesProductionWorkOrder); + } + } + } + //濡傛灉涓虹┖锛岄粯璁ょ粰涓�鏉★紝鐢ㄤ簬鎵嬪姩鏂板鏃惰〃鏍肩殑鍒濆鍖� + if (newProductionWorkOrderList.isEmpty()) { + MesProductionWorkOrder mesProductionWorkOrder = new MesProductionWorkOrder() + .setFactoryId(factory.getId()) + .setFactoryCode(factory.getFactoryCode()) + .setFactoryName(factory.getFactoryName()); + newProductionWorkOrderList.add(mesProductionWorkOrder); + } + return newProductionWorkOrderList; + } } -- Gitblit v1.9.3