diff --git a/blade-ops/blade-job/src/main/java/org/springblade/job/processor/scheduling/SchedulingProcessor.java b/blade-ops/blade-job/src/main/java/org/springblade/job/processor/scheduling/SchedulingProcessor.java index 334adac8..c8a523bc 100644 --- a/blade-ops/blade-job/src/main/java/org/springblade/job/processor/scheduling/SchedulingProcessor.java +++ b/blade-ops/blade-job/src/main/java/org/springblade/job/processor/scheduling/SchedulingProcessor.java @@ -10,6 +10,7 @@ import tech.powerjob.worker.core.processor.TaskContext; import tech.powerjob.worker.core.processor.sdk.BasicProcessor; import java.util.concurrent.CompletableFuture; +import java.util.concurrent.TimeUnit; /** * 排产-排产定时任务 @@ -24,9 +25,28 @@ public class SchedulingProcessor implements BasicProcessor { @Override public ProcessResult process(TaskContext context) throws Exception { - log.info("排产定时任务开始"); - CompletableFuture runFuture = CompletableFuture.runAsync(()->client.scheduling()); - log.info("排产定时任务结束"); - return new ProcessResult(true); + log.info("排产定时任务开始,任务ID:{}", context.getTaskId()); // 增加任务ID便于排查 + try { + // 同步执行(或等待异步执行完成),避免任务提前返回 + CompletableFuture runFuture = CompletableFuture.runAsync(() -> { + try { + log.info("开始执行排产逻辑"); + client.scheduling(); + log.info("排产逻辑执行完成"); + } catch (Exception e) { + log.error("client.scheduling()执行异常", e); + throw new RuntimeException(e); // 抛出异常让外层感知 + } + }); + + // 等待异步任务完成(避免任务提前结束),可设置超时时间 + runFuture.get(60, TimeUnit.MINUTES); // 假设排产最多执行60分钟,根据实际调整 + + log.info("排产定时任务结束"); + return new ProcessResult(true); + } catch (Exception e) { + log.error("排产定时任务执行失败", e); + return new ProcessResult(false); // 明确返回失败,避免框架重试 + } } } diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/order/pojo/entity/PlateGoodsApply.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/order/pojo/entity/PlateGoodsApply.java index 4aa9b834..795646d8 100644 --- a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/order/pojo/entity/PlateGoodsApply.java +++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/order/pojo/entity/PlateGoodsApply.java @@ -68,12 +68,6 @@ public class PlateGoodsApply extends BaseEntity { @TableField(value = "PGR_ID") private Long pgrId; - /** - * 涉及订单要添加的数量 - */ - @TableField(value = "CODE_NUM") - private String codeNum; - /** * 需求单号 */ @@ -164,10 +158,21 @@ public class PlateGoodsApply extends BaseEntity { @TableField(value = "INVOLVING_RECORD_CODE") private String involvingRecordCode; + /** + * 本次剩余单号余量 + */ + @TableField(value = "INVOLVING_SURPLUS") + private String involvingSurplus; + /** * 本次关联订单数量 */ @TableField(value = "DETAIL_ORDER_NUM") private Integer detailOrderNum; + /** + * 涉及订单要添加的数量 + */ + @TableField(value = "CODE_NUM") + private String codeNum; } diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/order/pojo/entity/YieldOrder.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/order/pojo/entity/YieldOrder.java index bb79c525..c3624806 100644 --- a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/order/pojo/entity/YieldOrder.java +++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/order/pojo/entity/YieldOrder.java @@ -147,7 +147,7 @@ public class YieldOrder extends BaseEntity { * todo 只有字段没有动 表 和 mapper * 零件号版本号 */ - @TableField(value = "PART_VERSION") + @TableField(value = "PART_VERSION", exist = false) private String partVersion; /** diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/order/pojo/vo/PlateGoodsApplyVo.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/order/pojo/vo/PlateGoodsApplyVo.java index 3540ec75..d2d9d2ea 100644 --- a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/order/pojo/vo/PlateGoodsApplyVo.java +++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/order/pojo/vo/PlateGoodsApplyVo.java @@ -39,5 +39,15 @@ public class PlateGoodsApplyVo extends PlateGoodsApply { */ String createUserName; + /** + * 审批人 + */ + String approvalManName; + + /** + * 审批结果 + */ + String approvalStatusName; + List yieldOrderList; } diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/dto/TaskCompleteDTO.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/dto/TaskCompleteDTO.java index ea823c6b..4f0f28d4 100644 --- a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/dto/TaskCompleteDTO.java +++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/dto/TaskCompleteDTO.java @@ -44,5 +44,11 @@ public class TaskCompleteDTO { @Schema(description = "调度员") private Long disAssignMan; + @Schema(description = "调度处理人") + private Long dispatchMan; + + @Schema(description = "转派备注") + private String resolution; + } diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/entity/OrderDeclare.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/entity/OrderDeclare.java index 288cafbf..260c1416 100644 --- a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/entity/OrderDeclare.java +++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/entity/OrderDeclare.java @@ -1,5 +1,6 @@ package org.springblade.desk.produce.pojo.entity; +import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; @@ -21,6 +22,28 @@ import java.util.Map; @EqualsAndHashCode(callSuper = true) public class OrderDeclare extends BaseEntity { + /** + * 已申报 + */ + public static Short NEW_DATA = 1; + /** + * 申报完成 + */ + public static Short DATA_OK = 2; + /** + * 已创建订单 + */ + public static Short DATA_CREATE_OK = 3; + + public static Map podStatusMap = new HashMap<>(5); + + + static { + podStatusMap.put(NEW_DATA, "已申报"); + podStatusMap.put(DATA_OK, "申报完成"); + podStatusMap.put(DATA_CREATE_OK, "已创建订单"); + } + @Schema(description = "领用单号") private String useCode; @@ -51,9 +74,13 @@ public class OrderDeclare extends BaseEntity { @Schema(description = "计划员") private String planMan; - @Schema(description = "状态 1、新建") + @Schema(description = "状态 1-已申报 2-申报完成 3-已创建订单") private Short podStatus; @Schema(description = "库位") private String locationNo; + + @TableField(exist = false) + @Schema(description = "状态名称") + private String podStatusName; } diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/vo/CacheWorkOrderVO.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/vo/CacheWorkOrderVO.java index d856a9c2..e849258b 100644 --- a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/vo/CacheWorkOrderVO.java +++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/vo/CacheWorkOrderVO.java @@ -95,6 +95,9 @@ public class CacheWorkOrderVO { @Schema(description = "接收人员") private Integer receiveUserNamr; + @Schema(description = "状态") + private Integer runStatus; + @Schema(description = "工序集合") private List processList; diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/vo/TaskCompleteVO.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/vo/TaskCompleteVO.java index 7035f8fa..7aaf0fcd 100644 --- a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/vo/TaskCompleteVO.java +++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/vo/TaskCompleteVO.java @@ -52,4 +52,12 @@ public class TaskCompleteVO { @Schema(description = "任务时间") private Date taskTime; + @Schema(description = "态度") + private String status; + + private Long dispatchMan; + + @Schema(description = "调度处理人") + private String dispatchManName; + } diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/vo/WorkOrderVO.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/vo/WorkOrderVO.java index d39348de..d2896923 100644 --- a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/vo/WorkOrderVO.java +++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/vo/WorkOrderVO.java @@ -100,4 +100,10 @@ public class WorkOrderVO extends WorkOrder { @Schema(description = "接收人员") private Integer receiveUserNamr; + @Schema(description = "状态") + private String runStatusName; + + @Schema(description = "优先级;1.正常,2.项目要求日期急件,3.合同急件,4.绩效零件,5.调度标注急件") + private String priorityName; + } diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/vo/WorkPlanRunVO.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/vo/WorkPlanRunVO.java index a3ec1ffa..97701183 100644 --- a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/vo/WorkPlanRunVO.java +++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/vo/WorkPlanRunVO.java @@ -25,4 +25,23 @@ public class WorkPlanRunVO extends WorkPlanRun { @Schema(description = "工艺能力") private ProcessAbility processAbility; + +// @Schema(description = "工序号") +// private String orders; +// +// @Schema(description = "工序代码") +// private String ppsCode; +// +// @Schema(description = "工序名称") +// private String ppsName; +// +// @Schema(description = "工艺能力") +// private String caName; +// +// @Schema(description = "工序描述") +// private String makeMemo; +// +// @Schema(description = "不可转外协原因") +// private String reason; + } diff --git a/blade-service-api/blade-erpdata-api/src/main/java/org/springblade/erpdata/feign/IErpDataProduceClient.java b/blade-service-api/blade-erpdata-api/src/main/java/org/springblade/erpdata/feign/IErpDataProduceClient.java index fa6a0867..d5f2b763 100644 --- a/blade-service-api/blade-erpdata-api/src/main/java/org/springblade/erpdata/feign/IErpDataProduceClient.java +++ b/blade-service-api/blade-erpdata-api/src/main/java/org/springblade/erpdata/feign/IErpDataProduceClient.java @@ -10,6 +10,8 @@ import org.springblade.erpdata.pojo.vo.ReworkProcessVO; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.web.bind.annotation.GetMapping; +import java.util.Map; + /** * Feign接口类 * @@ -24,6 +26,8 @@ public interface IErpDataProduceClient { String API_PREFIX = "/feign/erpdata/produce"; String QUERY_BATCH = API_PREFIX + "/queryBatch"; String REWORK_ORDER = API_PREFIX + "/loadReworkOrder"; + String PRODUCT_APP_AREA = API_PREFIX + "/productAppArea"; + String VERSION = API_PREFIX + "/version"; /** * 缺件申报-通过零件号获取批次号 @@ -31,7 +35,21 @@ public interface IErpDataProduceClient { @GetMapping(QUERY_BATCH) R queryBatch(String partCode); + /** + * 返工订单 + */ @GetMapping(REWORK_ORDER) R> loadReworkOrder(ReworkProcessDTO query); + /** + * 获取产品区域 + */ + @GetMapping(PRODUCT_APP_AREA) + R> getProductAppareaByPartCode(String partCode); + + /** + * 获取产品版本 + */ + @GetMapping(VERSION) + R getVersionByPartCode(String partCode); } diff --git a/blade-service-api/blade-erpdata-api/src/main/java/org/springblade/erpdata/feign/IErpDataProduceClientFallback.java b/blade-service-api/blade-erpdata-api/src/main/java/org/springblade/erpdata/feign/IErpDataProduceClientFallback.java index 7adb8f96..6256a549 100644 --- a/blade-service-api/blade-erpdata-api/src/main/java/org/springblade/erpdata/feign/IErpDataProduceClientFallback.java +++ b/blade-service-api/blade-erpdata-api/src/main/java/org/springblade/erpdata/feign/IErpDataProduceClientFallback.java @@ -7,6 +7,8 @@ import org.springblade.erpdata.pojo.vo.QueryBatchVO; import org.springblade.erpdata.pojo.vo.ReworkProcessVO; import org.springframework.stereotype.Component; +import java.util.Map; + /** * Feign失败配置 * @@ -25,4 +27,14 @@ public class IErpDataProduceClientFallback implements IErpDataProduceClient { public R> loadReworkOrder(ReworkProcessDTO query) { return R.fail("获取数据失败"); } + + @Override + public R> getProductAppareaByPartCode(String partCode) { + return R.fail("获取数据失败"); + } + + @Override + public R getVersionByPartCode(String partCode) { + return R.fail("获取数据失败"); + } } diff --git a/blade-service-api/blade-erpdata-api/src/main/java/org/springblade/erpdata/pojo/vo/ReworkProcessVO.java b/blade-service-api/blade-erpdata-api/src/main/java/org/springblade/erpdata/pojo/vo/ReworkProcessVO.java index d7d2a6ca..2e0dad8e 100644 --- a/blade-service-api/blade-erpdata-api/src/main/java/org/springblade/erpdata/pojo/vo/ReworkProcessVO.java +++ b/blade-service-api/blade-erpdata-api/src/main/java/org/springblade/erpdata/pojo/vo/ReworkProcessVO.java @@ -35,7 +35,7 @@ public class ReworkProcessVO { * 执行状态 */ @Schema(description = "执行状态") - private Short excstatus; + private Integer excstatus; /** * 加工数量 */ diff --git a/blade-service/blade-desk/pom.xml b/blade-service/blade-desk/pom.xml index fc2889f7..eaaf1afa 100644 --- a/blade-service/blade-desk/pom.xml +++ b/blade-service/blade-desk/pom.xml @@ -124,6 +124,11 @@ + + net.sourceforge.barbecue + barbecue + 1.5-beta1 + diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/order/controller/PlateGoodsApplyController.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/order/controller/PlateGoodsApplyController.java index c896fa9a..bd4d97e2 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/order/controller/PlateGoodsApplyController.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/order/controller/PlateGoodsApplyController.java @@ -20,7 +20,6 @@ import org.springblade.desk.order.pojo.entity.YieldOrder; import org.springblade.desk.order.pojo.request.PlateGoodsApplySave; import org.springblade.desk.order.pojo.vo.PlateGoodsApplyVo; import org.springblade.desk.order.service.IPlateGoodsApplyService; -import org.springblade.desk.order.service.IPlateGoodsRecordService; import org.springblade.desk.order.wrapper.PlateGoodsApplyWrapper; import org.springblade.desk.order.wrapper.YieldOrderWrapper; import org.springframework.web.bind.annotation.*; @@ -29,6 +28,7 @@ import java.util.List; /** * 应用管理控制器 - 镀层物料添加量申报 + * 参考旧mes:prPlateGoodsApply/queryApply * * @author lqk */ @@ -39,7 +39,6 @@ import java.util.List; public class PlateGoodsApplyController extends BladeController { private final IPlateGoodsApplyService plateGoodsApplyService; - private final IPlateGoodsRecordService plateGoodsRecordService; /** * 分页 @@ -61,12 +60,12 @@ public class PlateGoodsApplyController extends BladeController { @GetMapping("/detail") @Operation(summary = "详情", description = "") public R detail(String id) { - PlateGoodsApply detail = plateGoodsApplyService.getById(id); + PlateGoodsApply apply = plateGoodsApplyService.getById(id); - PlateGoodsApplyVo vo = PlateGoodsApplyWrapper.build().entityVO(detail); + PlateGoodsApplyVo vo = PlateGoodsApplyWrapper.build().entityVO(apply); // 查询关联订单列表 - List yieldOrderList = plateGoodsRecordService.listDetailYieldOrder(detail.getId()); + List yieldOrderList = plateGoodsApplyService.listDetailYieldOrder(apply.getId()); if(Func.isNotEmpty(yieldOrderList)) { vo.setYieldOrderList(YieldOrderWrapper.build().listVO(yieldOrderList)); } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/order/controller/PlateGoodsRecordController.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/order/controller/PlateGoodsRecordController.java index eebdb813..9b173278 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/order/controller/PlateGoodsRecordController.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/order/controller/PlateGoodsRecordController.java @@ -30,6 +30,7 @@ import java.util.List; /** * 应用管理控制器 - 镀层物料需求申报 + * 参考旧mes:prPlateGoodsRecord/queryRecord * * @author lqk */ diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/order/mapper/PlateGoodsApplyMapper.xml b/blade-service/blade-desk/src/main/java/org/springblade/desk/order/mapper/PlateGoodsApplyMapper.xml index 8505abc8..260d9b62 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/order/mapper/PlateGoodsApplyMapper.xml +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/order/mapper/PlateGoodsApplyMapper.xml @@ -4,8 +4,11 @@ "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> - ID, TENANT_ID, CREATE_USER, CREATE_DEPT, CREATE_TIME, UPDATE_USER, UPDATE_TIME, STATUS, IS_DELETED, - APPROVAL_STATUS, BO_ID, BR_ID, AC_ID, PGR_ID, CODE_NUM, APPROVAL_MAN, APPROVAL_TIME, APPROVAL_MEMO, DEMAND_CODE + ID, TENANT_ID, CREATE_USER, CREATE_TIME, CREATE_DEPT, UPDATE_USER, UPDATE_TIME, STATUS, IS_DELETED, + APPROVAL_MAN, APPROVAL_TIME, APPROVAL_STATUS, APPROVAL_MEMO, BO_ID, BR_ID, AC_ID, PGR_ID, CODE_NUM, + WC_ID, GOODS_CODE, GOODS_DEMAND, SILVER_POTASSIUM, COEFFICIENT, DECLARED_QUOTA, DECLARED_SILVER, DECLARED_STATUS, + GOODS_BO_ID, COEFFICIENT_BO_ID, PGR_CODE, SURPLUS, SILVER_POTASSIUM_RESIDUE, DEMAND_CODE, INVOLVING_RECORD_CODE, + NOT_ADD_VAL, DETAIL_ORDER_NUM, GOODS_NAME select * from MES_WORK_ORDER where IS_DELETED = 0 and YO_ID = #{yoId} + + + diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IDisTaskingService.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IDisTaskingService.java index a815a352..f97baf2a 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IDisTaskingService.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IDisTaskingService.java @@ -25,4 +25,6 @@ public interface IDisTaskingService extends BaseService { List queryByWpIdlLst(Long wpId); void taskCompleteOrder(TaskCompleteOrderDTO taskCompleteDTO); + + boolean disTechnician(TaskCompleteDTO taskCompleteDTO); } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IMacToolUseService.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IMacToolUseService.java index 4be9164b..bc68102c 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IMacToolUseService.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IMacToolUseService.java @@ -29,4 +29,6 @@ public interface IMacToolUseService extends BaseService { void unMacToolUseBind(List mtuList); IPage queryMacToolUse(IPage page, MacToolUse macToolUse); + + MacToolUse getTcDataByWoId(Long woId); } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IWorkOrderService.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IWorkOrderService.java index c1370f07..7df8c13a 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IWorkOrderService.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IWorkOrderService.java @@ -16,6 +16,7 @@ import org.springblade.desk.produce.pojo.vo.WorkPlanRunVO; import org.springblade.scheduling.pojo.entity.WorkOrderEntity; import org.springblade.desk.produce.pojo.vo.*; import java.util.List; +import java.util.Map; /** * 车间订单表 服务类 @@ -69,4 +70,7 @@ public interface IWorkOrderService extends BaseService { List selectProcessByOrderIds(List orderIds); + Map getBarCode(Long woId); + + Map getPartSubSj(Long woId); } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/DisTaskingServiceImpl.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/DisTaskingServiceImpl.java index 7414cf97..d57e7d20 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/DisTaskingServiceImpl.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/DisTaskingServiceImpl.java @@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; +import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.StringUtils; import org.springblade.core.log.exception.ServiceException; import org.springblade.core.mp.base.BaseServiceImpl; @@ -54,7 +55,14 @@ public class DisTaskingServiceImpl extends BaseServiceImpl disTaskHandle(IPage page, TaskCompleteDTO taskCompleteDTO) { - return page.setRecords(baseMapper.disTaskHandle(page, taskCompleteDTO)); + IPage iPage = page.setRecords(baseMapper.disTaskHandle(page, taskCompleteDTO)); + iPage.getRecords().forEach(taskCompleteVO -> { + User user = UserCache.getUser(taskCompleteVO.getDispatchMan()); + if (user != null) { + taskCompleteVO.setDispatchManName(user.getRealName()); + } + }); + return iPage; } @Override @@ -89,7 +97,7 @@ public class DisTaskingServiceImpl extends BaseServiceImpl ddtIds=taskCompleteDTO.getDdtIdList(); + List ddtIds = taskCompleteDTO.getDdtIdList(); for (Long ddtId : ddtIds) { DisTasking dsDisTasking = baseMapper.selectById(ddtId); dsDisTasking.setDispatchTime(new Date()); @@ -99,19 +107,19 @@ public class DisTaskingServiceImpl extends BaseServiceImpl prWorkOrderList=workOrderService.list(Wrappers.lambdaQuery(WorkOrder.class).eq(WorkOrder::getPartCode, partCode).eq(WorkOrder::getRunStatus, WorkOrder.RUN_STATUS_CRAFT_CHANGE)); + List prWorkOrderList = workOrderService.list(Wrappers.lambdaQuery(WorkOrder.class).eq(WorkOrder::getPartCode, partCode).eq(WorkOrder::getRunStatus, WorkOrder.RUN_STATUS_CRAFT_CHANGE)); for (WorkOrder prWorkOrder : prWorkOrderList) { if (prWorkOrder != null && prWorkOrder.getId() != null) { prWorkOrder.setRunStatus(WorkOrder.RUN_STATUS_RECEIVE); //zxh 20250522 增加记录订单变更为加工中日志 - // syDockingLogService.sendDockingLog("修改订单执行状态为加工中",prWorkOrder.getWoCode(),"taskCompleteOrder()"); + // syDockingLogService.sendDockingLog("修改订单执行状态为加工中",prWorkOrder.getWoCode(),"taskCompleteOrder()"); //判定是否是检验项目,并且还有未检验 - WorkPlan wp=workPlanService.getById(prWorkOrder.getWpId()); - List list =workPlanItemService.list(Wrappers.lambdaQuery(WorkPlanItem.class) - .eq(WorkPlanItem::getWpId,wp.getId()).eq(WorkPlanItem::getCheckResult, -1)); + WorkPlan wp = workPlanService.getById(prWorkOrder.getWpId()); + List list = workPlanItemService.list(Wrappers.lambdaQuery(WorkPlanItem.class) + .eq(WorkPlanItem::getWpId, wp.getId()).eq(WorkPlanItem::getCheckResult, -1)); if (list != null && list.size() > 0) { prWorkOrder.setRunStatus(WorkOrder.RUN_STATUS_CHECK); } @@ -122,4 +130,17 @@ public class DisTaskingServiceImpl extends BaseServiceImpl disTaskings = this.list(Wrappers.lambdaQuery(DisTasking.class).in(DisTasking::getId, taskCompleteDTO.getDdtIdList())); + disTaskings.forEach(disTasking -> { + disTasking.setDisTaskStatus(DisTasking.TASK_STATUS_ALREADY); + disTasking.setMemo(taskCompleteDTO.getResolution()); + disTasking.setDispatchMan(taskCompleteDTO.getDispatchMan()); + disTasking.setDisAssignTime(new Date()); + disTasking.setDisAssignMan(AuthUtil.getUserId()); + }); + return this.updateBatchById(disTaskings); + } } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/MacToolUseServiceImpl.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/MacToolUseServiceImpl.java index b4ca573a..1ea939ed 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/MacToolUseServiceImpl.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/MacToolUseServiceImpl.java @@ -79,6 +79,11 @@ public class MacToolUseServiceImpl extends BaseServiceImpl cacheOrderLocalMap = new ConcurrentHashMap<>(); // 初始化缓存实例(项目启动后执行,仅一次) @PostConstruct @@ -73,7 +75,13 @@ public class OrderCacheService { lock.lock(); try { // 查库获取最新数据,更新到缓存 - return loadOrderFromDB(orderId); + CacheWorkOrderVO cacheWorkOrderVO = loadOrderFromDB(orderId); + if (Objects.nonNull(cacheWorkOrderVO)) { + cacheOrderLocalMap.put(orderId, cacheWorkOrderVO); + } else { + cacheOrderLocalMap.remove(orderId); + } + return cacheWorkOrderVO; } finally { // 必须释放锁,避免死锁 lock.unlock(); @@ -88,6 +96,7 @@ public class OrderCacheService { public void removeOrderCache(Long orderId) { // 方法体可留空,注解自动完成删除 log.info("订单[{}]已变为非运行中状态,从本地缓存移除", orderId); + cacheOrderLocalMap.remove(orderId); } /** @@ -125,6 +134,7 @@ public class OrderCacheService { // updateOrderCache(orderId); // 手动存入缓存:直接用缓存实例put,无二次查库(核心优化) runningOrderCache.put(orderId, cacheVO); + cacheOrderLocalMap.put(orderId, cacheVO); } finally { lock.unlock(); } @@ -170,4 +180,21 @@ public class OrderCacheService { // 不存在则创建新锁,存在则返回已有锁 return orderLockMap.computeIfAbsent(orderId, k -> new ReentrantLock()); } + + public IPage listRunningOrderByCache(IPage page) { + // 1. 分页参数校验(不变) + int currentPage = (int) page.getCurrent(); + int pageSizeVal = (int) page.getSize(); + // 直接从本地副本获取所有VO,过滤【仅进行中(状态1)】的订单 + List runningOrderList = cacheOrderLocalMap.values().stream() + .filter(vo -> Objects.equals(vo.getRunStatus(), WorkOrder.RUN_STATUS_RECEIVE)) + .collect(Collectors.toList()); + log.info("本地副本中总运行中订单={},过滤后进行中(状态1)订单={}", cacheOrderLocalMap.size(), runningOrderList.size()); + int total = runningOrderList.size(); + page.setTotal(runningOrderList.size()); + int startIndex = (currentPage - 1) * pageSizeVal; + int endIndex = Math.min(startIndex + pageSizeVal, runningOrderList.size()); + List pageList = runningOrderList.subList(startIndex, endIndex); + return page.setRecords(pageList); + } } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/WorkOrderServiceImpl.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/WorkOrderServiceImpl.java index d8b65326..82e30bd3 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/WorkOrderServiceImpl.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/WorkOrderServiceImpl.java @@ -1,19 +1,26 @@ package org.springblade.desk.produce.service.impl; import cn.hutool.core.bean.BeanUtil; +import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; +import net.sourceforge.barbecue.Barcode; +import net.sourceforge.barbecue.BarcodeFactory; +import net.sourceforge.barbecue.BarcodeImageHandler; import org.apache.commons.lang3.StringUtils; import org.springblade.core.log.exception.ServiceException; import org.springblade.core.mp.base.BaseServiceImpl; import org.springblade.core.secure.utils.AuthUtil; +import org.springblade.core.tool.api.R; import org.springblade.desk.basic.service.IProcessAbilityService; import org.springblade.desk.dashboard.pojo.entity.BsProcessSetEntity; +import org.springblade.desk.dashboard.pojo.entity.DsPartEntity; import org.springblade.desk.dashboard.service.IBsProcessSetService; +import org.springblade.desk.dashboard.service.IDsPartService; import org.springblade.desk.order.pojo.entity.YieldOrder; import org.springblade.desk.order.pojo.enums.YieldOrderEnum; import org.springblade.desk.order.service.IYieldOrderService; @@ -32,10 +39,15 @@ import org.springblade.desk.quality.service.IInspectionTaskService; import org.springblade.desk.quality.service.IPlanTestService; import org.springblade.desk.quality.service.IWorkPlanItemService; import org.springblade.scheduling.pojo.entity.WorkOrderEntity; +import org.springblade.erpdata.feign.IErpDataProduceClient; +import org.springblade.system.cache.DictCache; import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import javax.imageio.ImageIO; +import java.awt.image.BufferedImage; +import java.io.ByteArrayOutputStream; import java.time.Instant; import java.time.LocalDateTime; import java.util.*; @@ -77,6 +89,10 @@ public class WorkOrderServiceImpl extends BaseServiceImpl selectWorkOrderPage(IPage page, WorkOrderDTO workOrder) { return page.setRecords(baseMapper.selectWorkOrderPage(page, workOrder)); @@ -92,7 +108,9 @@ public class WorkOrderServiceImpl extends BaseServiceImpl getBarCode(Long woId) { + Map data = new HashMap<>(1); + List> list = new ArrayList<>(); + Map map = new HashMap<>(); + // 查询车间订单 + WorkOrder prWorkOrder = this.getById(woId); + // 流程卡号 + map.put("cardNo", StringUtils.isNotBlank(prWorkOrder.getCardNo()) ? prWorkOrder.getCardNo() : ""); + map.put("cardNoBar", generateBarcodeAsBase64(StringUtils.isNotBlank(prWorkOrder.getCardNo()) ? prWorkOrder.getCardNo() : "/", 200, 50)); + // 热表流程卡号 + map.put("mesCardNo", StringUtils.isNotBlank(prWorkOrder.getMesCardNo()) ? prWorkOrder.getMesCardNo() : ""); + map.put("mesCardNoBar", generateBarcodeAsBase64(StringUtils.isNotBlank(prWorkOrder.getMesCardNo()) ? prWorkOrder.getMesCardNo() : "/", 200, 25)); + // 同槽编号 + MacToolUse prMacToolUse = macToolUseService.getTcDataByWoId(woId); + map.put("mtnCode", prMacToolUse != null && prMacToolUse.getMtnCode() != null ? prMacToolUse.getMtnCode() : ""); + map.put("mtnCodeBar", generateBarcodeAsBase64(prMacToolUse != null && prMacToolUse.getMtnCode() != null ? prMacToolUse.getMtnCode() : "/", 200, 25)); + map.put("clmc", "/"); + map.put("clzt", "/"); + map.put("clgg", "/"); + map.put("clph", "/"); + map.put("cljybh", "/"); + map.put("productApparea", "/"); + map.put("version", "/"); + + // 获取生产订单 + YieldOrder yo = yieldOrderService.getById(prWorkOrder.getYoId()); + if (yo != null) { + // 获取材料名称、材料牌号、材料规格、材料状态、材料检验编号 + List newErpClData = new ArrayList<>(); +// if (yo.getBatchNo().startsWith("A") || yo.getBatchNo().startsWith("E")) { +// newErpClData = baseMapper.getNewErpClData(yo.getPartCode(), yo.getBatchNo()); +// } else if (yo.getNewLevFlag() != null && "采购".equals(yo.getNewLevFlag())) { +// newErpClData = baseMapper.getErpClData(yo.getPartCode(), yo.getBatchNo()); +// } + if (CollectionUtils.isNotEmpty(newErpClData)) { + map.put("clmc", newErpClData.get(0).getString("clmc")); + map.put("clzt", newErpClData.get(0).getString("clzt")); + map.put("clgg", newErpClData.get(0).getString("clgg")); + map.put("clph", newErpClData.get(0).getString("clph")); + map.put("cljybh", newErpClData.get(0).getString("cljybh")); + } + + // 产品应用领域 + if (yo.getPartCode() != null) { + Map productInfo = this.getProductAppareaByPartCode(yo.getPartCode()); + map.put("productApparea", StringUtils.isNotBlank(productInfo.get("productapparea")) ? productInfo.get("productapparea") : "/"); + } + // 图纸版次 + if (yo.getPartCode() != null) { + String version = this.getVersionByPartCode(yo.getPartCode()); + map.put("version", StringUtils.isNotBlank(version) ? version : "/"); + } + } + + list.add(map); + data.put("data", list); + return data; + } + + @Override + public Map getPartSubSj(Long woId) { + Map data = new HashMap<>(1); + List> list = new ArrayList<>(); + WorkOrder wo = this.getById(woId); + YieldOrder yieldOrder = yieldOrderService.getById(wo.getYoId()); + List prWorkOrderList = this.checkOrderSj(wo, yieldOrder); + List dsPartSubList = dsPartService.selectDsPartByPatCode(yieldOrder.getPartCode(), null); + if (dsPartSubList != null && !dsPartSubList.isEmpty()) { + for (DsPartEntity dsPartSub : dsPartSubList) { + Map sub = new HashMap<>(); + sub.put("partCode", dsPartSub.getPartCode());//零件号 + sub.put("partType", (DictCache.getValue("processTemplateType", dsPartSub.getSinTerType())));//零件类型 + sub.put("partName", (dsPartSub.getMaterial() != null) ? dsPartSub.getMaterial() : "/");//材料 + sub.put("plate", (dsPartSub.getPlate() != null) ? dsPartSub.getPlate() : "/");//镀种 + if (dsPartSub.getArea() != null && dsPartSub.getQuota() != null) { + sub.put("poArea", String.valueOf(dsPartSub.getArea() * dsPartSub.getQuota()));//面积 + } else { + sub.put("poArea", "/"); + } + if (prWorkOrderList != null && !prWorkOrderList.isEmpty()) { + for (WorkOrder prWorkOrder : prWorkOrderList) { + if (yieldOrder.getPartCode().equals(dsPartSub.getPartCode())) { + sub.put("cardNo", prWorkOrder.getCardNo());//流程卡号 + sub.put("cardNoBar", generateBarcodeAsBase64(StringUtils.isNotBlank(prWorkOrder.getCardNo()) ? prWorkOrder.getCardNo() : "/", 200, 50)); + } + } + } + list.add(sub); + } + } + data.put("data", list); + return data; + } + + private List checkOrderSj(WorkOrder wo, YieldOrder yieldOrder) { + //B号为空则直接跳过 + if (StringUtils.isBlank(yieldOrder.getRoamNo())) { + return null; + } + //非烧结零件跳过子件验证 + if (!yieldOrder.getYieldType().equals(YieldOrder.YIELD_TYPE_2)) { + return null; + } + + List subList = this.findCubByYoId(yieldOrder.getId()); + //获取到部件下面的玻璃饼信息 + List dpsList = dsPartService.selectDsPartByPatCode(yieldOrder.getPartCode(), 3); + if (dpsList != null && !dpsList.isEmpty()) { + List blbList; + for (DsPartEntity dps : dpsList) { + blbList = this.findByPartCodeAndMemo(dps.getPartCode(), yieldOrder.getYpCode()); + subList.addAll(blbList); + } + } + return subList; + } + + private List findByPartCodeAndMemo(String partCode, String ypCode) { + return baseMapper.findByPartCodeAndMemo(partCode, ypCode); + } + + private List findCubByYoId(Long id) { + return baseMapper.findCubByYoId(id); + } + + private String getVersionByPartCode(String partCode) { + return erpDataProduceClient.getVersionByPartCode(partCode).getData(); + } + + private Map getProductAppareaByPartCode(String partCode) { + R> byPartCode = erpDataProduceClient.getProductAppareaByPartCode(partCode); + return byPartCode.getData(); + } + + private String generateBarcodeAsBase64(String content, int width, int height) { + try { + // 1. 创建条形码(Code128 类型) + Barcode barcode = BarcodeFactory.createCode128(content); + // 2. 生成 BufferedImage(关键:使用 BarcodeImageHandler) + BufferedImage image = BarcodeImageHandler.getImage(barcode); + + // 3. 转换为 PNG 字节数组 + ByteArrayOutputStream baos = new ByteArrayOutputStream(); + ImageIO.write(image, "png", baos); + byte[] imageBytes = baos.toByteArray(); + + // 4. 转换为 Base64 字符串(添加 data URL 前缀) + return "data:image/png;base64," + Base64.getEncoder().encodeToString(imageBytes); + } catch (Exception e) { + throw new ServiceException("生成条形码失败: " + e.getMessage()); + } + } + private boolean checkWp(WorkPlan wp, Integer runType) { //不分派工序不能操作 BsProcessSetEntity processSet = bsProcessSetService.getById(wp.getPpsId()); diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/wrapper/WorkOrderWrapper.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/wrapper/WorkOrderWrapper.java index cca7191b..485b2bca 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/wrapper/WorkOrderWrapper.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/wrapper/WorkOrderWrapper.java @@ -3,7 +3,9 @@ package org.springblade.desk.produce.wrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import org.springblade.core.mp.support.BaseEntityWrapper; import org.springblade.core.tool.utils.BeanUtil; +import org.springblade.desk.order.pojo.enums.YieldOrderEnum; import org.springblade.desk.produce.pojo.entity.WorkOrder; +import org.springblade.desk.produce.pojo.enums.WorkOrderEnum; import org.springblade.desk.produce.pojo.vo.WorkOrderVO; import org.springblade.system.cache.UserCache; import org.springblade.system.pojo.entity.User; @@ -37,6 +39,8 @@ public class WorkOrderWrapper extends BaseEntityWrapper for (WorkOrderVO workOrderVo : workOrderVos) { User user = UserCache.getUser(workOrderVo.getDispatcher()); workOrderVo.setDispatcherName(user.getRealName()); + workOrderVo.setRunStatusName(WorkOrderEnum.getName(workOrderVo.getRunStatus())); + workOrderVo.setPriorityName(WorkOrder.priorityMap.get(workOrderVo.getPriority())); } pages.setRecords(workOrderVos); return pages; diff --git a/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/feign/ErpDataProduceClient.java b/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/feign/ErpDataProduceClient.java index 17c4d65c..072dfed7 100644 --- a/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/feign/ErpDataProduceClient.java +++ b/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/feign/ErpDataProduceClient.java @@ -13,6 +13,8 @@ import org.springblade.erpdata.service.IErpDataProduceService; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; +import java.util.Map; + /** * 字典服务Feign实现类 @@ -38,4 +40,14 @@ public class ErpDataProduceClient implements IErpDataProduceClient { public R> loadReworkOrder(ReworkProcessDTO query) { return R.data(erpDataProduceService.loadReworkOrder(Condition.getPage(query.getQuery()), query)); } + + @Override + public R> getProductAppareaByPartCode(String partCode) { + return R.data(erpDataProduceService.getProductAppareaByPartCode(partCode)); + } + + @Override + public R getVersionByPartCode(String partCode) { + return R.data(erpDataProduceService.getVersionByPartCode(partCode)); + } } diff --git a/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/mapper/ErpDataProduceMapper.java b/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/mapper/ErpDataProduceMapper.java index d4a0bd93..e6f27808 100644 --- a/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/mapper/ErpDataProduceMapper.java +++ b/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/mapper/ErpDataProduceMapper.java @@ -7,6 +7,7 @@ import org.springblade.erpdata.pojo.vo.QueryBatchVO; import org.springblade.erpdata.pojo.vo.ReworkProcessVO; import java.util.List; +import java.util.Map; /** * Mapper 接口 @@ -18,4 +19,8 @@ public interface ErpDataProduceMapper extends Mapper { QueryBatchVO queryBatch(String partCode); List loadReworkOrder(IPage page, ReworkProcessDTO query); + + Map getProductAppareaByPartCode(String partCode); + + String getVersionByPartCode(String partCode); } diff --git a/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/mapper/ErpDataProduceMapper.xml b/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/mapper/ErpDataProduceMapper.xml index e9a51bc0..17d7b3d3 100644 --- a/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/mapper/ErpDataProduceMapper.xml +++ b/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/mapper/ErpDataProduceMapper.xml @@ -62,4 +62,12 @@ ORDER BY a.reqdate DESC + + diff --git a/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/service/IErpDataProduceService.java b/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/service/IErpDataProduceService.java index be902617..a1f5f332 100644 --- a/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/service/IErpDataProduceService.java +++ b/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/service/IErpDataProduceService.java @@ -5,6 +5,8 @@ import org.springblade.erpdata.pojo.dto.ReworkProcessDTO; import org.springblade.erpdata.pojo.vo.QueryBatchVO; import org.springblade.erpdata.pojo.vo.ReworkProcessVO; +import java.util.Map; + /** * ERP数据查询service * @@ -16,4 +18,8 @@ public interface IErpDataProduceService { QueryBatchVO queryBatch(String partCode); IPage loadReworkOrder(IPage page, ReworkProcessDTO query); + + Map getProductAppareaByPartCode(String partCode); + + String getVersionByPartCode(String partCode); } diff --git a/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/service/impl/ErpDataProduceServiceImpl.java b/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/service/impl/ErpDataProduceServiceImpl.java index 9dc8f733..08370dc0 100644 --- a/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/service/impl/ErpDataProduceServiceImpl.java +++ b/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/service/impl/ErpDataProduceServiceImpl.java @@ -10,6 +10,8 @@ import org.springblade.erpdata.pojo.vo.ReworkProcessVO; import org.springblade.erpdata.service.IErpDataProduceService; import org.springframework.stereotype.Service; +import java.util.Map; + /** * @author litao * @date 2026-1-31 @@ -29,4 +31,14 @@ public class ErpDataProduceServiceImpl implements IErpDataProduceService { public IPage loadReworkOrder(IPage page, ReworkProcessDTO query) { return page.setRecords(erpDataProduceMapper.loadReworkOrder(page, query)); } + + @Override + public Map getProductAppareaByPartCode(String partCode) { + return erpDataProduceMapper.getProductAppareaByPartCode(partCode); + } + + @Override + public String getVersionByPartCode(String partCode) { + return erpDataProduceMapper.getVersionByPartCode(partCode); + } } diff --git a/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/feign/WorkOrderClient.java b/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/feign/WorkOrderClient.java index 490f17e0..dfc4b659 100644 --- a/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/feign/WorkOrderClient.java +++ b/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/feign/WorkOrderClient.java @@ -70,7 +70,7 @@ public class WorkOrderClient implements IWorkOrderClient { public R scheduling() { log.info("排产任务开始:"+ DateFormatUtils.format(new Date(),"yyyy-MM-dd HH:mm:ss")); workOrderService.scheduling(); - log.info("排查任务结束:"+ DateFormatUtils.format(new Date(),"yyyy-MM-dd HH:mm:ss")); + log.info("排产任务结束:"+ DateFormatUtils.format(new Date(),"yyyy-MM-dd HH:mm:ss")); return R.success(); }