From 8e2a922f5bb5a99f73e2d6fd274195ef29d4928a Mon Sep 17 00:00:00 2001 From: liuqingkun Date: Sat, 13 Dec 2025 17:06:06 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E5=90=8C=E6=AD=A5=E6=8E=92?= =?UTF-8?q?=E4=BA=A7=E7=BB=93=E6=9E=9C=E7=9B=B8=E5=85=B3=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/YieldOrderServiceImpl.java | 13 +++- blade-service/blade-scheduling/pom.xml | 9 ++- .../controller/WorkPlanController.java | 34 +++++---- .../scheduling/service/IWorkOrderService.java | 12 +++- .../scheduling/service/IWorkPlanService.java | 9 +++ .../service/impl/WorkOrderServiceImpl.java | 72 +++++++++++++------ .../service/impl/WorkPlanServiceImpl.java | 16 ++++- .../src/main/resources/application-dev.yml | 4 ++ 8 files changed, 130 insertions(+), 39 deletions(-) diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/order/service/impl/YieldOrderServiceImpl.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/order/service/impl/YieldOrderServiceImpl.java index 0eff8ac..3635a0e 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/order/service/impl/YieldOrderServiceImpl.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/order/service/impl/YieldOrderServiceImpl.java @@ -275,7 +275,18 @@ public class YieldOrderServiceImpl extends BaseServiceImpl orderList = baseMapper.selectList(Wrappers.lambdaQuery(YieldOrder.class).eq(YieldOrder::getCardNo, yieldOrder.getCardNo())); + if(orderList.size() == 0) { + this.save(yieldOrder); + } else { + yieldOrder.setId(orderList.get(0).getId()); + this.updateById(yieldOrder); + + // 先删除原有的订单工艺信息 + yieldOrderCraftService.remove(Wrappers.lambdaQuery(YieldOrderCraft.class).eq(YieldOrderCraft::getYoId, yieldOrder.getId())); + } // 构建生产订单工艺信息并保存 JSONArray craftArray = jsonItem.getJSONArray("craftList"); diff --git a/blade-service/blade-scheduling/pom.xml b/blade-service/blade-scheduling/pom.xml index ab16ed5..aad0f22 100644 --- a/blade-service/blade-scheduling/pom.xml +++ b/blade-service/blade-scheduling/pom.xml @@ -39,7 +39,12 @@ org.springblade blade-starter-excel - + + + cn.hutool + hutool-all + 5.8.16 + - \ No newline at end of file + diff --git a/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/controller/WorkPlanController.java b/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/controller/WorkPlanController.java index e3fcf41..4dd0d0e 100644 --- a/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/controller/WorkPlanController.java +++ b/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/controller/WorkPlanController.java @@ -25,18 +25,23 @@ */ package org.springblade.scheduling.scheduling.controller; -import io.swagger.v3.oas.annotations.tags.Tag; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Parameter; -import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport; -import lombok.AllArgsConstructor; +import io.swagger.v3.oas.annotations.tags.Tag; +import jakarta.servlet.http.HttpServletResponse; import jakarta.validation.Valid; - -import org.springblade.core.secure.BladeUser; -import org.springblade.core.secure.annotation.IsAdmin; +import lombok.AllArgsConstructor; +import org.springblade.core.boot.ctrl.BladeController; +import org.springblade.core.excel.util.ExcelUtil; import org.springblade.core.mp.support.Condition; import org.springblade.core.mp.support.Query; +import org.springblade.core.secure.BladeUser; +import org.springblade.core.secure.annotation.IsAdmin; import org.springblade.core.tool.api.R; +import org.springblade.core.tool.utils.DateUtil; import org.springblade.core.tool.utils.Func; import org.springblade.scheduling.scheduling.entity.WorkPlanEntity; import org.springblade.scheduling.scheduling.excel.WorkPlanExcel; @@ -44,15 +49,9 @@ import org.springblade.scheduling.scheduling.service.IWorkPlanService; import org.springblade.scheduling.scheduling.vo.WorkPlanVO; import org.springblade.scheduling.scheduling.wrapper.WorkPlanWrapper; import org.springframework.web.bind.annotation.*; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.core.metadata.IPage; -import org.springblade.core.boot.ctrl.BladeController; -import org.springblade.core.tool.utils.DateUtil; -import org.springblade.core.excel.util.ExcelUtil; -import java.util.Map; import java.util.List; -import jakarta.servlet.http.HttpServletResponse; +import java.util.Map; /** * 车间作业计划 控制器 @@ -158,4 +157,13 @@ public class WorkPlanController extends BladeController { ExcelUtil.export(response, "车间作业计划数据" + DateUtil.time(), "车间作业计划数据表", list, WorkPlanExcel.class); } + /** + * 车间作业计划 更新实际开始结束时间 + */ + @PostMapping("/updateWorkPlan") + @Operation(summary = "更新作业计划", description = "") + public R updateWorkPlan(@RequestBody WorkPlanEntity entity) { + workPlanService.updateWorkPlan(entity.getId(), entity.getFactStartTime(), entity.getFactEndTime()); + return R.success(); + } } diff --git a/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/service/IWorkOrderService.java b/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/service/IWorkOrderService.java index 06a11b9..48093c6 100644 --- a/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/service/IWorkOrderService.java +++ b/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/service/IWorkOrderService.java @@ -63,11 +63,19 @@ public interface IWorkOrderService extends BaseService { /** * TODO:排产 + * + * @return null * @author sjx * @since 2025/11/28 13:30 - * @return null **/ void scheduling(); - Map> schedulingBoard(WorkOrderDto workOrder); + Map> schedulingBoard(WorkOrderDto workOrder); + + /** + * 向旧mes发送排产结果数据 + * + * @param workOrderEntityList + */ + void sendWorkOrderToOldMes(List workOrderEntityList); } diff --git a/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/service/IWorkPlanService.java b/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/service/IWorkPlanService.java index f81efd2..e0e5df7 100644 --- a/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/service/IWorkPlanService.java +++ b/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/service/IWorkPlanService.java @@ -32,6 +32,7 @@ import org.springblade.scheduling.scheduling.entity.WorkPlanEntity; import org.springblade.scheduling.scheduling.excel.WorkPlanExcel; import org.springblade.scheduling.scheduling.vo.WorkPlanVO; +import java.util.Date; import java.util.List; /** @@ -59,4 +60,12 @@ public interface IWorkPlanService extends BaseService { */ List export(Wrapper queryWrapper); + /** + * 更新作业计划 + * + * @param id + * @param factStartTime + * @param factEndTime + */ + void updateWorkPlan(Long id, Date factStartTime, Date factEndTime); } diff --git a/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/service/impl/WorkOrderServiceImpl.java b/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/service/impl/WorkOrderServiceImpl.java index ed01e80..88e180b 100644 --- a/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/service/impl/WorkOrderServiceImpl.java +++ b/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/service/impl/WorkOrderServiceImpl.java @@ -25,8 +25,9 @@ */ package org.springblade.scheduling.scheduling.service.impl; +import cn.hutool.http.HttpUtil; +import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.Wrapper; -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.CollectionUtils; @@ -42,6 +43,7 @@ import org.springblade.scheduling.scheduling.excel.WorkOrderExcel; import org.springblade.scheduling.scheduling.mapper.WorkOrderMapper; import org.springblade.scheduling.scheduling.service.*; import org.springblade.scheduling.scheduling.vo.WorkOrderVO; +import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -76,7 +78,13 @@ public class WorkOrderServiceImpl extends BaseServiceImpl CRAFT_LOCK_MAP = new ConcurrentHashMap<>(); // 获取工艺ID对应的锁(不存在则创建) @@ -343,23 +351,47 @@ public class WorkOrderServiceImpl extends BaseServiceImpl list) { - //查询订单下的工序,计算cr值 - for (YieldOrderEntity entity : list) { - List craftList = yieldOrderCraftService.list(Wrappers.lambdaQuery().eq(YieldOrderCraftEntity::getYoId, entity.getId())); - //定义订单总工时 - BigDecimal total = new BigDecimal(0); - for (YieldOrderCraftEntity craftEntity : craftList) { - total = total.add(craftEntity.getHourQuota()); - } - //换算成天 - total = total.divide(BigDecimal.valueOf(1440), 2, RoundingMode.HALF_UP); - //获取交期剩余天数 - BigDecimal restDays = new BigDecimal(TimeUnit.DAYS.convert(entity.getDemandDate().getTime() - DateUtil.now().getTime(), TimeUnit.MILLISECONDS)); - //计算cr值剩余交期天数/生产所需额定时长 - entity.setCrValue(restDays.divide(total, 2, RoundingMode.HALF_UP)); - } - } + @Override + public void sendWorkOrderToOldMes(List workOrderEntityList) { + List requestList = new ArrayList<>(); + + for (WorkOrderEntity workOrderEntity : workOrderEntityList) { + JSONObject requestJson = new JSONObject(); + + List workPlanList = workPlanService.list(Wrappers.lambdaQuery() + .eq(WorkPlanEntity::getWoId, workOrderEntity.getId())); + + requestJson.put("workOrder", workOrderEntity); + requestJson.put("workPlanList", workPlanList); + requestList.add(requestJson); + } + + // 向旧MES推送排产结果数据 + String url = oldMesUrl + pushApsResult; + try { + HttpUtil.post(url, JSONObject.toJSONString(requestList)); + } catch (Exception e) { + e.printStackTrace(); + } + } + + void calculateCr(List list) { + //查询订单下的工序,计算cr值 + for (YieldOrderEntity entity : list) { + List craftList = yieldOrderCraftService.list(Wrappers.lambdaQuery().eq(YieldOrderCraftEntity::getYoId, entity.getId())); + //定义订单总工时 + BigDecimal total = new BigDecimal(0); + for (YieldOrderCraftEntity craftEntity : craftList) { + total = total.add(craftEntity.getHourQuota()); + } + //换算成天 + total = total.divide(BigDecimal.valueOf(1440), 2, RoundingMode.HALF_UP); + //获取交期剩余天数 + BigDecimal restDays = new BigDecimal(TimeUnit.DAYS.convert(entity.getDemandDate().getTime() - DateUtil.now().getTime(), TimeUnit.MILLISECONDS)); + //计算cr值剩余交期天数/生产所需额定时长 + entity.setCrValue(restDays.divide(total, 2, RoundingMode.HALF_UP)); + } + } /** * 处理有前置公共工序的分组(WC=镀金大批量,镀金小批量,镀银):轮流每次取指定数量进行资源匹配 @@ -425,7 +457,7 @@ public class WorkOrderServiceImpl extends BaseServiceImpl list,Map personAbilityMap,Map mainProducerMap) { for (YieldOrderEntity order : list) { diff --git a/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/service/impl/WorkPlanServiceImpl.java b/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/service/impl/WorkPlanServiceImpl.java index 50c92fb..c6f3db5 100644 --- a/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/service/impl/WorkPlanServiceImpl.java +++ b/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/service/impl/WorkPlanServiceImpl.java @@ -25,6 +25,7 @@ */ package org.springblade.scheduling.scheduling.service.impl; +import org.apache.commons.lang3.ObjectUtils; import org.springblade.scheduling.scheduling.entity.WorkPlanEntity; import org.springblade.scheduling.scheduling.excel.WorkPlanExcel; import org.springblade.scheduling.scheduling.mapper.WorkPlanMapper; @@ -34,6 +35,8 @@ import org.springframework.stereotype.Service; import com.baomidou.mybatisplus.core.conditions.Wrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import org.springblade.core.mp.base.BaseServiceImpl; + +import java.util.Date; import java.util.List; /** @@ -50,7 +53,6 @@ public class WorkPlanServiceImpl extends BaseServiceImpl export(Wrapper queryWrapper) { List workPlanList = baseMapper.export(queryWrapper); @@ -60,4 +62,16 @@ public class WorkPlanServiceImpl extends BaseServiceImpl