From 5b999730e081bb5ba934ebf361280ca477a0e714 Mon Sep 17 00:00:00 2001
From: cuijian <cuijian@xalxzn.com>
Date: 星期四, 14 八月 2025 17:03:04 +0800
Subject: [PATCH] 工厂建模功能调整
---
src/main/java/org/jeecg/modules/mes/service/impl/MesProductionWorkOrderServiceImpl.java | 112 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 112 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..407a954 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,33 @@
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.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
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 +37,94 @@
*/
@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;
+ }
+
+ @Override
+ public IPage<MesProductionWorkOrder> queryPageList(Page<MesProductionWorkOrder> page, Map<String, String[]> parameterMap) {
+ QueryWrapper<MesProductionWorkOrder> queryWrapper = Wrappers.query();
+ String[] factoryIds = parameterMap.get("factoryId");
+ if (factoryIds != null && factoryIds.length > 0) {
+ queryWrapper.eq("t1.factory_id", factoryIds[0]);
+ }
+ String[] startDates = parameterMap.get("startDate");
+ String[] endDates = parameterMap.get("endDate");
+ if (startDates != null && startDates.length > 0) {
+ queryWrapper.ge("t1.work_order_date", startDates[0]);
+ }
+ if (endDates != null && endDates.length > 0) {
+ queryWrapper.le("t1.work_order_date", endDates[0]);
+ }
+ String[] workOrderStatuses = parameterMap.get("workOrderStatus");
+ if (workOrderStatuses != null && workOrderStatuses.length > 0) {
+ queryWrapper.eq("t1.work_order_status", workOrderStatuses[0]);
+ }
+ queryWrapper.eq("t1.del_flag", CommonConstant.DEL_FLAG_0);
+ queryWrapper.orderByAsc("t1.work_order_date");
+ return this.baseMapper.queryPageList(page, queryWrapper);
+ }
}
--
Gitblit v1.9.3