生产管理接口开发

liweidong
李涛 2 months ago
parent f8f20293c7
commit 2bce33fe02
  1. 2
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/order/pojo/entity/YieldOrder.java
  2. 6
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/dto/TaskCompleteDTO.java
  3. 29
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/entity/OrderDeclare.java
  4. 3
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/vo/CacheWorkOrderVO.java
  5. 8
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/vo/TaskCompleteVO.java
  6. 6
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/vo/WorkOrderVO.java
  7. 19
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/vo/WorkPlanRunVO.java
  8. 18
      blade-service-api/blade-erpdata-api/src/main/java/org/springblade/erpdata/feign/IErpDataProduceClient.java
  9. 12
      blade-service-api/blade-erpdata-api/src/main/java/org/springblade/erpdata/feign/IErpDataProduceClientFallback.java
  10. 2
      blade-service-api/blade-erpdata-api/src/main/java/org/springblade/erpdata/pojo/vo/ReworkProcessVO.java
  11. 5
      blade-service/blade-desk/pom.xml
  12. 7
      blade-service/blade-desk/src/main/java/org/springblade/desk/order/service/impl/YieldOrderServiceImpl.java
  13. 8
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/controller/DeductionPreserveController.java
  14. 36
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/controller/DisTaskingController.java
  15. 41
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/controller/RbProduceManageController.java
  16. 57
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/controller/ReworkProcessController.java
  17. 63
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/controller/WorkProcessController.java
  18. 4
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/DisTaskingMapper.xml
  19. 1
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/MacToolUseMapper.java
  20. 5
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/WorkOrderMapper.java
  21. 17
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/WorkOrderMapper.xml
  22. 2
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IDisTaskingService.java
  23. 2
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IMacToolUseService.java
  24. 4
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IWorkOrderService.java
  25. 37
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/DisTaskingServiceImpl.java
  26. 5
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/MacToolUseServiceImpl.java
  27. 29
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/OrderCacheService.java
  28. 178
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/WorkOrderServiceImpl.java
  29. 4
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/wrapper/WorkOrderWrapper.java
  30. 12
      blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/feign/ErpDataProduceClient.java
  31. 5
      blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/mapper/ErpDataProduceMapper.java
  32. 8
      blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/mapper/ErpDataProduceMapper.xml
  33. 6
      blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/service/IErpDataProduceService.java
  34. 12
      blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/service/impl/ErpDataProduceServiceImpl.java

@ -147,7 +147,7 @@ public class YieldOrder extends BaseEntity {
* todo 只有字段没有动 mapper * todo 只有字段没有动 mapper
* 零件号版本号 * 零件号版本号
*/ */
@TableField(value = "PART_VERSION") @TableField(value = "PART_VERSION", exist = false)
private String partVersion; private String partVersion;
/** /**

@ -44,5 +44,11 @@ public class TaskCompleteDTO {
@Schema(description = "调度员") @Schema(description = "调度员")
private Long disAssignMan; private Long disAssignMan;
@Schema(description = "调度处理人")
private Long dispatchMan;
@Schema(description = "转派备注")
private String resolution;
} }

@ -1,5 +1,6 @@
package org.springblade.desk.produce.pojo.entity; package org.springblade.desk.produce.pojo.entity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data; import lombok.Data;
@ -21,6 +22,28 @@ import java.util.Map;
@EqualsAndHashCode(callSuper = true) @EqualsAndHashCode(callSuper = true)
public class OrderDeclare extends BaseEntity { 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<Short, String> podStatusMap = new HashMap<>(5);
static {
podStatusMap.put(NEW_DATA, "已申报");
podStatusMap.put(DATA_OK, "申报完成");
podStatusMap.put(DATA_CREATE_OK, "已创建订单");
}
@Schema(description = "领用单号") @Schema(description = "领用单号")
private String useCode; private String useCode;
@ -51,9 +74,13 @@ public class OrderDeclare extends BaseEntity {
@Schema(description = "计划员") @Schema(description = "计划员")
private String planMan; private String planMan;
@Schema(description = "状态 1、新建") @Schema(description = "状态 1-已申报 2-申报完成 3-已创建订单")
private Short podStatus; private Short podStatus;
@Schema(description = "库位") @Schema(description = "库位")
private String locationNo; private String locationNo;
@TableField(exist = false)
@Schema(description = "状态名称")
private String podStatusName;
} }

@ -95,6 +95,9 @@ public class CacheWorkOrderVO {
@Schema(description = "接收人员") @Schema(description = "接收人员")
private Integer receiveUserNamr; private Integer receiveUserNamr;
@Schema(description = "状态")
private Integer runStatus;
@Schema(description = "工序集合") @Schema(description = "工序集合")
private List<CacheWorkPlanVO> processList; private List<CacheWorkPlanVO> processList;

@ -52,4 +52,12 @@ public class TaskCompleteVO {
@Schema(description = "任务时间") @Schema(description = "任务时间")
private Date taskTime; private Date taskTime;
@Schema(description = "态度")
private String status;
private Long dispatchMan;
@Schema(description = "调度处理人")
private String dispatchManName;
} }

@ -100,4 +100,10 @@ public class WorkOrderVO extends WorkOrder {
@Schema(description = "接收人员") @Schema(description = "接收人员")
private Integer receiveUserNamr; private Integer receiveUserNamr;
@Schema(description = "状态")
private String runStatusName;
@Schema(description = "优先级;1.正常,2.项目要求日期急件,3.合同急件,4.绩效零件,5.调度标注急件")
private String priorityName;
} }

@ -25,4 +25,23 @@ public class WorkPlanRunVO extends WorkPlanRun {
@Schema(description = "工艺能力") @Schema(description = "工艺能力")
private ProcessAbility processAbility; 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;
} }

@ -10,6 +10,8 @@ import org.springblade.erpdata.pojo.vo.ReworkProcessVO;
import org.springframework.cloud.openfeign.FeignClient; import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.GetMapping;
import java.util.Map;
/** /**
* Feign接口类 * Feign接口类
* *
@ -24,6 +26,8 @@ public interface IErpDataProduceClient {
String API_PREFIX = "/feign/erpdata/produce"; String API_PREFIX = "/feign/erpdata/produce";
String QUERY_BATCH = API_PREFIX + "/queryBatch"; String QUERY_BATCH = API_PREFIX + "/queryBatch";
String REWORK_ORDER = API_PREFIX + "/loadReworkOrder"; 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) @GetMapping(QUERY_BATCH)
R<QueryBatchVO> queryBatch(String partCode); R<QueryBatchVO> queryBatch(String partCode);
/**
* 返工订单
*/
@GetMapping(REWORK_ORDER) @GetMapping(REWORK_ORDER)
R<IPage<ReworkProcessVO>> loadReworkOrder(ReworkProcessDTO query); R<IPage<ReworkProcessVO>> loadReworkOrder(ReworkProcessDTO query);
/**
* 获取产品区域
*/
@GetMapping(PRODUCT_APP_AREA)
R<Map<String, String>> getProductAppareaByPartCode(String partCode);
/**
* 获取产品版本
*/
@GetMapping(VERSION)
R<String> getVersionByPartCode(String partCode);
} }

@ -7,6 +7,8 @@ import org.springblade.erpdata.pojo.vo.QueryBatchVO;
import org.springblade.erpdata.pojo.vo.ReworkProcessVO; import org.springblade.erpdata.pojo.vo.ReworkProcessVO;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import java.util.Map;
/** /**
* Feign失败配置 * Feign失败配置
* *
@ -25,4 +27,14 @@ public class IErpDataProduceClientFallback implements IErpDataProduceClient {
public R<IPage<ReworkProcessVO>> loadReworkOrder(ReworkProcessDTO query) { public R<IPage<ReworkProcessVO>> loadReworkOrder(ReworkProcessDTO query) {
return R.fail("获取数据失败"); return R.fail("获取数据失败");
} }
@Override
public R<Map<String, String>> getProductAppareaByPartCode(String partCode) {
return R.fail("获取数据失败");
}
@Override
public R<String> getVersionByPartCode(String partCode) {
return R.fail("获取数据失败");
}
} }

@ -35,7 +35,7 @@ public class ReworkProcessVO {
* 执行状态 * 执行状态
*/ */
@Schema(description = "执行状态") @Schema(description = "执行状态")
private Short excstatus; private Integer excstatus;
/** /**
* 加工数量 * 加工数量
*/ */

@ -124,6 +124,11 @@
<!-- <version>4.6.0.RELEASE</version>--> <!-- <version>4.6.0.RELEASE</version>-->
<!-- <scope>compile</scope>--> <!-- <scope>compile</scope>-->
<!-- </dependency>--> <!-- </dependency>-->
<dependency>
<groupId>net.sourceforge.barbecue</groupId>
<artifactId>barbecue</artifactId>
<version>1.5-beta1</version>
</dependency>
</dependencies> </dependencies>
<build> <build>

@ -6,6 +6,7 @@ import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
@ -644,12 +645,12 @@ public class YieldOrderServiceImpl extends BaseServiceImpl<YieldOrderMapper, Yie
@Override @Override
public YieldOrder getYoByCardNo(String cardNo) { public YieldOrder getYoByCardNo(String cardNo) {
LambdaQueryWrapper<YieldOrder> queryWrapper = Wrappers.lambdaQuery(YieldOrder.class).eq(YieldOrder::getCardNo, cardNo); LambdaQueryWrapper<YieldOrder> queryWrapper = Wrappers.lambdaQuery(YieldOrder.class).eq(YieldOrder::getCardNo, cardNo);
YieldOrder yieldOrder = baseMapper.selectOne(queryWrapper); List<YieldOrder> yieldOrders = baseMapper.selectList(queryWrapper);
// TODO : 待完善 // TODO : 待完善
if (yieldOrder == null) { if (CollectionUtils.isEmpty(yieldOrders)) {
throw new ServiceException("生产订单未同步,请稍后操作"); throw new ServiceException("生产订单未同步,请稍后操作");
} }
return yieldOrder; return yieldOrders.get(0);
} }
@Override @Override

@ -23,6 +23,8 @@ import org.springblade.desk.produce.service.IOrderDeclareService;
import org.springblade.erpdata.pojo.vo.QueryBatchVO; import org.springblade.erpdata.pojo.vo.QueryBatchVO;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import java.util.List;
/** /**
* 扣数维护 * 扣数维护
* *
@ -69,7 +71,11 @@ public class DeductionPreserveController extends BladeController {
wrapper.like(orderDeclareDto.getPartCode() != null, OrderDeclare::getPartCode, orderDeclareDto.getPartCode()); wrapper.like(orderDeclareDto.getPartCode() != null, OrderDeclare::getPartCode, orderDeclareDto.getPartCode());
wrapper.like(orderDeclareDto.getBatchNo() != null, OrderDeclare::getBatchNo, orderDeclareDto.getBatchNo()); wrapper.like(orderDeclareDto.getBatchNo() != null, OrderDeclare::getBatchNo, orderDeclareDto.getBatchNo());
wrapper.like(orderDeclareDto.getQuaLevel() != null, OrderDeclare::getQuaLevel, orderDeclareDto.getQuaLevel()); wrapper.like(orderDeclareDto.getQuaLevel() != null, OrderDeclare::getQuaLevel, orderDeclareDto.getQuaLevel());
return R.data(orderDeclareService.page(Condition.getPage(query), wrapper)); IPage<OrderDeclare> page = orderDeclareService.page(Condition.getPage(query), wrapper);
for (OrderDeclare pageRecord : page.getRecords()) {
pageRecord.setPodStatusName(OrderDeclare.podStatusMap.get(pageRecord.getPodStatus()));
}
return R.data(page);
} }
@PostMapping("/signDelete") @PostMapping("/signDelete")

@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport; import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag; import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.validation.Valid;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.springblade.common.utils.CommonUtil; import org.springblade.common.utils.CommonUtil;
@ -14,14 +15,17 @@ import org.springblade.core.mp.support.Condition;
import org.springblade.core.mp.support.Query; import org.springblade.core.mp.support.Query;
import org.springblade.core.secure.utils.AuthUtil; import org.springblade.core.secure.utils.AuthUtil;
import org.springblade.core.tool.api.R; import org.springblade.core.tool.api.R;
import org.springblade.desk.produce.pojo.dto.ShiftTransferDTO;
import org.springblade.desk.produce.pojo.dto.TaskCompleteDTO; import org.springblade.desk.produce.pojo.dto.TaskCompleteDTO;
import org.springblade.desk.produce.pojo.dto.TaskCompleteOrderDTO; import org.springblade.desk.produce.pojo.dto.TaskCompleteOrderDTO;
import org.springblade.desk.produce.pojo.entity.DisTasking; import org.springblade.desk.produce.pojo.entity.DisTasking;
import org.springblade.desk.produce.pojo.entity.MakeRec; import org.springblade.desk.produce.pojo.entity.MakeRec;
import org.springblade.desk.produce.pojo.entity.WorkPlan;
import org.springblade.desk.produce.pojo.entity.WorkPlanLog; import org.springblade.desk.produce.pojo.entity.WorkPlanLog;
import org.springblade.desk.produce.pojo.vo.ByCardNoByPlanVO; import org.springblade.desk.produce.pojo.vo.ByCardNoByPlanVO;
import org.springblade.desk.produce.pojo.vo.TaskCompleteVO; import org.springblade.desk.produce.pojo.vo.TaskCompleteVO;
import org.springblade.desk.produce.service.IDisTaskingService; import org.springblade.desk.produce.service.IDisTaskingService;
import org.springblade.desk.produce.service.IPdaSaveService;
import org.springblade.desk.produce.service.IWorkPlanLogService; import org.springblade.desk.produce.service.IWorkPlanLogService;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
@ -43,6 +47,8 @@ public class DisTaskingController extends BladeController {
private final IWorkPlanLogService workPlanLogService; private final IWorkPlanLogService workPlanLogService;
private final IPdaSaveService pdaSaveService;
@GetMapping("/disTaskHandle") @GetMapping("/disTaskHandle")
@ApiOperationSupport(order = 1) @ApiOperationSupport(order = 1)
@Operation(summary = "调度任务分派", description = "传入taskCompleteDTO") @Operation(summary = "调度任务分派", description = "传入taskCompleteDTO")
@ -57,7 +63,7 @@ public class DisTaskingController extends BladeController {
@PostMapping("/taskComplete") @PostMapping("/taskComplete")
@ApiOperationSupport(order = 2) @ApiOperationSupport(order = 2)
@Operation(summary = "任务完成", description = "传入taskCompleteDTO") @Operation(summary = "任务处理", description = "传入taskCompleteDTO")
public R taskComplete(@RequestBody TaskCompleteDTO taskCompleteDTO) { public R taskComplete(@RequestBody TaskCompleteDTO taskCompleteDTO) {
List<Long> ddtIdList = taskCompleteDTO.getDdtIdList(); List<Long> ddtIdList = taskCompleteDTO.getDdtIdList();
String rsCode = taskCompleteDTO.getRsCode(); String rsCode = taskCompleteDTO.getRsCode();
@ -111,5 +117,33 @@ public class DisTaskingController extends BladeController {
return R.success(); return R.success();
} }
@PostMapping("/disTechnician")
@ApiOperationSupport(order = 7)
@Operation(summary = "转派", description = "")
public R disTechnician(@RequestBody TaskCompleteDTO taskCompleteDTO) {
List<Long> ddtIdList = taskCompleteDTO.getDdtIdList();
Long dispatchMan = taskCompleteDTO.getDispatchMan();
String resolution = taskCompleteDTO.getResolution();
if (CollectionUtils.isEmpty(ddtIdList) || dispatchMan == null || StringUtils.isBlank(resolution)) {
return R.fail("参数错误");
}
return R.data(disTaskingService.disTechnician(taskCompleteDTO));
}
@PostMapping("/uploadPlan")
@ApiOperationSupport(order = 8)
@Operation(summary = "报工调整-保存", description = "传入workPlanList")
public R uploadPlan(@Valid @RequestBody List<WorkPlan> workPlanList) {
pdaSaveService.uploadPlan(workPlanList);
return R.success();
}
@PostMapping("/shiftTransfer")
@ApiOperationSupport(order = 9)
@Operation(summary = "报工调整-转班", description = "传入shiftTransferDTO")
public R shiftTransfer(@Valid @RequestBody ShiftTransferDTO shiftTransferDTO) {
pdaSaveService.shiftTransfer(shiftTransferDTO);
return R.success();
}
} }

@ -19,12 +19,15 @@ import org.springblade.desk.produce.pojo.vo.WorkPlanRunVO;
import org.springblade.desk.produce.service.IWorkOrderService; import org.springblade.desk.produce.service.IWorkOrderService;
import org.springblade.desk.produce.service.impl.OrderCacheService; import org.springblade.desk.produce.service.impl.OrderCacheService;
import org.springblade.desk.produce.wrapper.WorkOrderWrapper; import org.springblade.desk.produce.wrapper.WorkOrderWrapper;
import org.springblade.desk.quality.util.CodeUtil;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import java.util.List; import java.util.List;
import java.util.Map;
/** /**
* 热表生产管理 * 热表生产管理
*
* @author litao * @author litao
*/ */
@RestController @RestController
@ -39,7 +42,7 @@ public class RbProduceManageController extends BladeController {
@GetMapping("/page") @GetMapping("/page")
@ApiOperationSupport(order = 1) @ApiOperationSupport(order = 1)
@Operation(summary = "车间订单列表分页", description = "传入WorkOrderVO") @Operation(summary = "车间订单列表分页", description = "传入WorkOrderVO")
public R<IPage<WorkOrderVO>> page(WorkOrderDTO workOrder, Query query) { public R<IPage<WorkOrderVO>> page(WorkOrderDTO workOrder, Query query) {
IPage<WorkOrderVO> pages = workOrderService.selectWorkOrderPage(Condition.getPage(query), workOrder); IPage<WorkOrderVO> pages = workOrderService.selectWorkOrderPage(Condition.getPage(query), workOrder);
return R.data(WorkOrderWrapper.build().listWorkOrderVO(pages)); return R.data(WorkOrderWrapper.build().listWorkOrderVO(pages));
@ -47,14 +50,14 @@ public class RbProduceManageController extends BladeController {
@GetMapping(value = "/batchesPrepare/{woId}") @GetMapping(value = "/batchesPrepare/{woId}")
@ApiOperationSupport(order = 2) @ApiOperationSupport(order = 2)
@Operation(summary = "分批准备数据", description = "传入车间订单ID") @Operation(summary = "分批准备数据", description = "传入车间订单ID")
public R<BatchPrepareVO> batchesPrepare(@PathVariable Long woId) { public R<BatchPrepareVO> batchesPrepare(@PathVariable Long woId) {
return R.data(workOrderService.batchesPrepare(woId)); return R.data(workOrderService.batchesPrepare(woId));
} }
@PostMapping(value = "/inBatches") @PostMapping(value = "/inBatches")
@ApiOperationSupport(order = 3) @ApiOperationSupport(order = 3)
@Operation(summary = "分批", description = "传入WorkOrder") @Operation(summary = "分批", description = "传入WorkOrder")
public R inBatches(@RequestBody InBatchesDTO inBatchesDTO) { public R inBatches(@RequestBody InBatchesDTO inBatchesDTO) {
Long userId = AuthUtil.getUserId(); Long userId = AuthUtil.getUserId();
return R.data(workOrderService.inBatches(inBatchesDTO.getId(), inBatchesDTO, userId)); return R.data(workOrderService.inBatches(inBatchesDTO.getId(), inBatchesDTO, userId));
@ -62,7 +65,7 @@ public class RbProduceManageController extends BladeController {
@PostMapping(value = "/turnType") @PostMapping(value = "/turnType")
@ApiOperationSupport(order = 4) @ApiOperationSupport(order = 4)
@Operation(summary = "转烧结", description = "传入YieldOrder") @Operation(summary = "转烧结", description = "传入YieldOrder")
public R turnType(@RequestBody TurnTypeDTO turnTypeDTO) { public R turnType(@RequestBody TurnTypeDTO turnTypeDTO) {
Long userId = AuthUtil.getUserId(); Long userId = AuthUtil.getUserId();
return R.data(workOrderService.turnType(turnTypeDTO.getYoId(), turnTypeDTO.getYieldType(), userId)); return R.data(workOrderService.turnType(turnTypeDTO.getYoId(), turnTypeDTO.getYieldType(), userId));
@ -70,7 +73,7 @@ public class RbProduceManageController extends BladeController {
@PostMapping(value = "/updateStatus") @PostMapping(value = "/updateStatus")
@ApiOperationSupport(order = 5) @ApiOperationSupport(order = 5)
@Operation(summary = "关闭", description = "传入UpdateStatusDTO") @Operation(summary = "关闭", description = "传入UpdateStatusDTO")
public R updateStatus(@RequestBody UpdateStatusDTO updateStatusDTO) { public R updateStatus(@RequestBody UpdateStatusDTO updateStatusDTO) {
Long userId = AuthUtil.getUserId(); Long userId = AuthUtil.getUserId();
return R.data(workOrderService.updateStatus(updateStatusDTO.getIdArr(), updateStatusDTO.getStatus(), userId, updateStatusDTO.getMemo())); return R.data(workOrderService.updateStatus(updateStatusDTO.getIdArr(), updateStatusDTO.getStatus(), userId, updateStatusDTO.getMemo()));
@ -78,14 +81,14 @@ public class RbProduceManageController extends BladeController {
@PostMapping(value = "/listProProcess") @PostMapping(value = "/listProProcess")
@ApiOperationSupport(order = 6) @ApiOperationSupport(order = 6)
@Operation(summary = "获取转外协所需数据", description = "传入produceManageDTO") @Operation(summary = "获取转外协所需数据", description = "传入produceManageDTO")
public R<List<WorkPlanRunVO>> listProProcess(@RequestBody ListProProcessDTO listProProcessDTO) { public R<List<WorkPlanRunVO>> listProProcess(@RequestBody ListProProcessDTO listProProcessDTO) {
return R.data(workOrderService.listProProcess(listProProcessDTO)); return R.data(workOrderService.listProProcess(listProProcessDTO));
} }
@PostMapping(value = "/transferBill") @PostMapping(value = "/transferBill")
@ApiOperationSupport(order = 7) @ApiOperationSupport(order = 7)
@Operation(summary = "转外协(单个/批量)", description = "传入produceManageDTO") @Operation(summary = "转外协(单个/批量)", description = "传入produceManageDTO")
public R transferBill(@RequestBody TransferBillDTO transferBillDTO) { public R transferBill(@RequestBody TransferBillDTO transferBillDTO) {
Long userId = AuthUtil.getUserId(); Long userId = AuthUtil.getUserId();
return R.data(workOrderService.transferBill(transferBillDTO.getWorkOrderRuns(), transferBillDTO.getWorkPlanRuns())); return R.data(workOrderService.transferBill(transferBillDTO.getWorkOrderRuns(), transferBillDTO.getWorkPlanRuns()));
@ -93,7 +96,7 @@ public class RbProduceManageController extends BladeController {
@PostMapping(value = "/updatePriority") @PostMapping(value = "/updatePriority")
@ApiOperationSupport(order = 8) @ApiOperationSupport(order = 8)
@Operation(summary = "更改车间订单优先级", description = "传入WorkOrder") @Operation(summary = "更改车间订单优先级", description = "传入WorkOrder")
public R updatePriority(@RequestBody UpdatePriorityDTO updatePriorityDTO) { public R updatePriority(@RequestBody UpdatePriorityDTO updatePriorityDTO) {
WorkOrder wo = workOrderService.getById(updatePriorityDTO.getWoId()); WorkOrder wo = workOrderService.getById(updatePriorityDTO.getWoId());
// wo.setPriority(WorkOrder.PRIORITY_SCH_IMP); // wo.setPriority(WorkOrder.PRIORITY_SCH_IMP);
@ -104,9 +107,29 @@ public class RbProduceManageController extends BladeController {
@GetMapping(value = "/getWorkOrderCache/{woId}") @GetMapping(value = "/getWorkOrderCache/{woId}")
@ApiOperationSupport(order = 9) @ApiOperationSupport(order = 9)
@Operation(summary = "缓存获取订单相关数据", description = "传入车间订单ID") @Operation(summary = "缓存获取订单相关数据", description = "传入车间订单ID")
public R<CacheWorkOrderVO> getWorkOrderCache(@PathVariable Long woId) { public R<CacheWorkOrderVO> getWorkOrderCache(@PathVariable Long woId) {
return R.data(orderCacheService.getOrderFromCache(woId)); return R.data(orderCacheService.getOrderFromCache(woId));
} }
@GetMapping(value = "/getWorkOrderCachePage")
@ApiOperationSupport(order = 10)
@Operation(summary = "缓存获取订单相关数据", description = "传入车间订单ID")
public R<IPage<CacheWorkOrderVO>> getWorkOrderCachePage(Query query) {
return R.data(orderCacheService.listRunningOrderByCache(Condition.getPage(query)));
}
@GetMapping("/getBarCode")
@Operation(summary = "工艺流程卡获取条形码", description = "传入车间订单ID")
public Map<String, Object> getBarCode(Long woId) {
return workOrderService.getBarCode(woId);
}
@GetMapping("/getPartSubSj")
@Operation(summary = "工艺流程卡获取烧结子件信息", description = "传入车间订单ID")
public Map<String, Object> getPartSubSj(Long woId) {
return workOrderService.getPartSubSj(woId);
}
} }

@ -4,18 +4,24 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport; import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag; import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.annotation.Resource; import jakarta.validation.Valid;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.springblade.core.boot.ctrl.BladeController; import org.springblade.core.boot.ctrl.BladeController;
import org.springblade.core.mp.support.Condition; import org.springblade.core.mp.support.Condition;
import org.springblade.core.mp.support.Query; import org.springblade.core.mp.support.Query;
import org.springblade.core.secure.utils.AuthUtil;
import org.springblade.core.tool.api.R; import org.springblade.core.tool.api.R;
import org.springblade.desk.dashboard.service.IPrReworkProcessService; import org.springblade.desk.dashboard.service.IPrReworkProcessService;
import org.springblade.desk.produce.pojo.dto.MesRbRedoRoutDTO;
import org.springblade.desk.produce.service.IPdaSaveService;
import org.springblade.erpdata.feign.IErpDataProduceClient; import org.springblade.erpdata.feign.IErpDataProduceClient;
import org.springblade.erpdata.pojo.dto.ReworkProcessDTO; import org.springblade.erpdata.pojo.dto.ReworkProcessDTO;
import org.springblade.erpdata.pojo.vo.ReworkProcessVO; import org.springblade.erpdata.pojo.vo.ReworkProcessVO;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import java.util.ArrayList;
import java.util.List;
/** /**
* 返工订单 * 返工订单
* *
@ -29,6 +35,8 @@ public class ReworkProcessController extends BladeController {
private final IErpDataProduceClient erpDataProduceClient; private final IErpDataProduceClient erpDataProduceClient;
private final IPdaSaveService pdaSaveService;
private final IPrReworkProcessService reworkProcessService; private final IPrReworkProcessService reworkProcessService;
@GetMapping("/loadReworkOrder") @GetMapping("/loadReworkOrder")
@ -36,7 +44,36 @@ public class ReworkProcessController extends BladeController {
@Operation(summary = "erp查询返工订单", description = "传入ReworkProcessDTO") @Operation(summary = "erp查询返工订单", description = "传入ReworkProcessDTO")
public R<IPage<ReworkProcessVO>> page(ReworkProcessDTO prReworkProcess, Query query) { public R<IPage<ReworkProcessVO>> page(ReworkProcessDTO prReworkProcess, Query query) {
prReworkProcess.setQuery(query); prReworkProcess.setQuery(query);
return erpDataProduceClient.loadReworkOrder(prReworkProcess); IPage<ReworkProcessVO> page = Condition.getPage(query);
List<ReworkProcessVO> records = new ArrayList<>();
ReworkProcessVO reworkProcessVO = new ReworkProcessVO();
reworkProcessVO.setRedono("返修单号");
reworkProcessVO.setSeqno(1);
reworkProcessVO.setSeqdept("处理单位");
reworkProcessVO.setPrtno("物料号");
reworkProcessVO.setExcstatus(1);
reworkProcessVO.setAmount(1.0);
reworkProcessVO.setReqdate("2026-02-04");
reworkProcessVO.setReqqty("需求数量");
reworkProcessVO.setRecdate("2026-02-04");
reworkProcessVO.setRecman("接收人");
reworkProcessVO.setRecqty("接收数量");
reworkProcessVO.setEnddat("2026-02-04");
reworkProcessVO.setEndman("完成人");
reworkProcessVO.setEndqty("完成数量");
reworkProcessVO.setSplcode("批次号");
reworkProcessVO.setRemark("备注");
reworkProcessVO.setHrecdate("2026-02-04");
reworkProcessVO.setBfqty(1);
reworkProcessVO.setUsedept("发生单位");
reworkProcessVO.setDetail("处理意见");
reworkProcessVO.setPrtlotno("生产标识");
reworkProcessVO.setDeptcode("工艺路线");
reworkProcessVO.setSono("开单车间订单号");
records.add(reworkProcessVO);
page.setRecords(records);
return R.data(page);
// return erpDataProduceClient.loadReworkOrder(prReworkProcess);
} }
// @GetMapping("/treeProcess") // @GetMapping("/treeProcess")
@ -46,4 +83,20 @@ public class ReworkProcessController extends BladeController {
// return R.data(reworkProcessService.treeProcess(prReworkProcess)); // return R.data(reworkProcessService.treeProcess(prReworkProcess));
// } // }
@PostMapping("/receiveOrder")
@ApiOperationSupport(order = 2)
@Operation(summary = "订单接收", description = "传入prReworkProcess")
public R receiveOrder(@Valid @RequestBody MesRbRedoRoutDTO mesRbRedoRoutDTO) {
pdaSaveService.receiveOrder(mesRbRedoRoutDTO);
return R.success();
}
@PostMapping("/completeOrder")
@ApiOperationSupport(order = 3)
@Operation(summary = "订单完成", description = "传入mesRbRedoRoutDTO")
public R completeOrder(@Valid @RequestBody MesRbRedoRoutDTO mesRbRedoRoutDTO) {
pdaSaveService.completeOrder(mesRbRedoRoutDTO, AuthUtil.getUser().getUserName());
return R.success();
}
} }

@ -3,34 +3,18 @@ package org.springblade.desk.produce.controller;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport; import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.tags.Tag; import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.validation.Valid;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import org.springblade.core.boot.ctrl.BladeController; import org.springblade.core.boot.ctrl.BladeController;
import org.springblade.core.mp.support.Condition; import org.springblade.core.mp.support.Condition;
import org.springblade.core.mp.support.Query; import org.springblade.core.mp.support.Query;
import org.springblade.core.secure.utils.AuthUtil;
import org.springblade.core.tool.api.R; import org.springblade.core.tool.api.R;
import org.springblade.core.tool.utils.Func;
import org.springblade.desk.dashboard.pojo.entity.PrReworkProcessEntity;
import org.springblade.desk.dashboard.pojo.vo.PrReworkProcessVO;
import org.springblade.desk.dashboard.service.IPrReworkProcessService;
import org.springblade.desk.dashboard.wrapper.PrReworkProcessWrapper;
import org.springblade.desk.produce.pojo.dto.MesRbRedoRoutDTO;
import org.springblade.desk.produce.pojo.dto.ShiftTransferDTO;
import org.springblade.desk.produce.pojo.entity.MacToolUse; import org.springblade.desk.produce.pojo.entity.MacToolUse;
import org.springblade.desk.produce.pojo.entity.WorkPlan;
import org.springblade.desk.produce.pojo.vo.WorkPlanVO;
import org.springblade.desk.produce.service.IMacToolUseService; import org.springblade.desk.produce.service.IMacToolUseService;
import org.springblade.desk.produce.service.IPdaSaveService;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import java.util.List;
import java.util.Map;
/** /**
* 返工任务表 控制器 * 同炉查询 控制器
* *
* @author BladeX * @author BladeX
* @since 2025-12-03 * @since 2025-12-03
@ -38,57 +22,16 @@ import java.util.Map;
@RestController @RestController
@AllArgsConstructor @AllArgsConstructor
@RequestMapping("/workProcess") @RequestMapping("/workProcess")
@Tag(name = "返工任务表", description = "返工任务表接口") @Tag(name = "同炉(槽)查询", description = "同炉(槽)查询接口")
public class WorkProcessController extends BladeController { public class WorkProcessController extends BladeController {
private final IPdaSaveService pdaSaveService;
private final IMacToolUseService macToolUseService; private final IMacToolUseService macToolUseService;
/**
*订单接收
*/
@PostMapping("/receiveOrder")
@ApiOperationSupport(order = 1)
@Operation(summary = "订单接收", description = "传入prReworkProcess")
public R receiveOrder(@Valid @RequestBody MesRbRedoRoutDTO mesRbRedoRoutDTO) {
pdaSaveService.receiveOrder(mesRbRedoRoutDTO);
return R.success();
}
/**
*订单接收
*/
@PostMapping("/completeOrder")
@ApiOperationSupport(order = 2)
@Operation(summary = "订单完成", description = "传入mesRbRedoRoutDTO")
public R completeOrder(@Valid @RequestBody MesRbRedoRoutDTO mesRbRedoRoutDTO) {
pdaSaveService.completeOrder(mesRbRedoRoutDTO,AuthUtil.getUser().getUserName());
return R.success();
}
/**
*订单接收
*/
@PostMapping("/uploadPlan")
@ApiOperationSupport(order = 3)
@Operation(summary = "更新车间作业计划", description = "传入workPlanList")
public R uploadPlan(@Valid @RequestBody List<WorkPlan> workPlanList) {
pdaSaveService.uploadPlan(workPlanList);
return R.success();
}
@PostMapping("/shiftTransfer")
@ApiOperationSupport(order = 4)
@Operation(summary = "转班", description = "传入shiftTransferDTO")
public R shiftTransfer(@Valid @RequestBody ShiftTransferDTO shiftTransferDTO) {
pdaSaveService.shiftTransfer(shiftTransferDTO);
return R.success();
}
@GetMapping("/queryData") @GetMapping("/queryData")
@ApiOperationSupport(order = 5) @ApiOperationSupport(order = 1)
@Operation(summary = "分页", description = "传入macToolUse") @Operation(summary = "分页", description = "传入macToolUse")
public R<IPage<MacToolUse>> page(MacToolUse macToolUse, Query query) { public R<IPage<MacToolUse>> page(MacToolUse macToolUse, Query query) {
IPage<MacToolUse> pages = macToolUseService.queryMacToolUse(Condition.getPage(query), macToolUse); IPage<MacToolUse> pages = macToolUseService.queryMacToolUse(Condition.getPage(query), macToolUse);
return R.data(pages); return R.data(pages);
} }
} }

@ -16,11 +16,11 @@
b.wip_take as wipTake, b.wip_take as wipTake,
b.change_no as changeNo, b.change_no as changeNo,
b.craft_time as craftTime, b.craft_time as craftTime,
a.DIS_ASSIGN_TIME as taskTime a.DIS_ASSIGN_TIME as taskTime,
case a.DIS_TASK_STATUS when 0 then '待分派' when 1 then '已分派' when 2 then '已处理' when 3 then '待质量处理' end as status
FROM FROM
MES_DIS_TASKING a INNER JOIN DS_TASKING b ON a.DT_ID = b.ID MES_DIS_TASKING a INNER JOIN DS_TASKING b ON a.DT_ID = b.ID
<where> <where>
a.DISPATCH_MAN = #{query.loginUser} AND
a.DIS_TASK_STATUS != 3 a.DIS_TASK_STATUS != 3
<if test="query.isDefault == 1"> <if test="query.isDefault == 1">
AND a.DIS_TASK_STATUS = 1 AND a.DIS_TASK_STATUS = 1

@ -13,5 +13,6 @@ import java.util.List;
*/ */
public interface MacToolUseMapper extends BaseMapper<MacToolUse> { public interface MacToolUseMapper extends BaseMapper<MacToolUse> {
MacToolUse getTcDataByWoId(Long woId);
List<MacToolUse> queryMacToolUse(IPage<MacToolUse> page, MacToolUse macToolUse); List<MacToolUse> queryMacToolUse(IPage<MacToolUse> page, MacToolUse macToolUse);
} }

@ -12,6 +12,7 @@ import org.springblade.desk.produce.pojo.vo.WorkOrderVO;
import org.springblade.scheduling.pojo.entity.WorkOrderEntity; import org.springblade.scheduling.pojo.entity.WorkOrderEntity;
import java.util.List; import java.util.List;
import java.util.Map;
/** /**
* 车间订单表 Mapper 接口 * 车间订单表 Mapper 接口
@ -47,4 +48,8 @@ public interface WorkOrderMapper extends BaseMapper<WorkOrder> {
YieldOrder selectByPartCOdeAndBatchNo(@Param("partCode") String partCode,@Param("batchNo") String batchNo); YieldOrder selectByPartCOdeAndBatchNo(@Param("partCode") String partCode,@Param("batchNo") String batchNo);
WorkOrderEntity selectByYoId(@Param("yoId") Long yoId); WorkOrderEntity selectByYoId(@Param("yoId") Long yoId);
List<WorkOrder> findCubByYoId(Long id);
List<WorkOrder> findByPartCodeAndMemo(String partCode, String ypCode);
} }

@ -54,7 +54,7 @@
mwo.MES_CARD_NO mesCardNo, mwo.MES_CARD_NO mesCardNo,
myo.PLATE plate, myo.PLATE plate,
myo.PRODUCT_TYPE productType, myo.PRODUCT_TYPE productType,
mwo.PRIORITY priority, myo.PRIORITY_ERP priority,
myo.USE_DEPT useDept, myo.USE_DEPT useDept,
ROUND(myo.YP_AREA * mwo.MAKE_QTY,10) totalArea, ROUND(myo.YP_AREA * mwo.MAKE_QTY,10) totalArea,
myo.YP_AREA area, myo.YP_AREA area,
@ -170,7 +170,7 @@
AND b.PRODUCT_IDENT LIKE concat(concat('%', #{query.productIdent}),'%') AND b.PRODUCT_IDENT LIKE concat(concat('%', #{query.productIdent}),'%')
</if> </if>
<if test="query.priority != null"> <if test="query.priority != null">
AND b.priority = #{query.priority} AND b.PRIORITY_ERP = #{query.priority}
</if> </if>
<if test="query.demandDateStart != null and query.demandDateEnd != null"> <if test="query.demandDateStart != null and query.demandDateEnd != null">
AND b.DEMAND_DATE BETWEEN #{query.demandDateStart} AND #{query.demandDateEnd} AND b.DEMAND_DATE BETWEEN #{query.demandDateStart} AND #{query.demandDateEnd}
@ -191,5 +191,18 @@
<select id="selectByYoId" resultType="org.springblade.scheduling.pojo.entity.WorkOrderEntity"> <select id="selectByYoId" resultType="org.springblade.scheduling.pojo.entity.WorkOrderEntity">
select * from MES_WORK_ORDER where IS_DELETED = 0 and YO_ID = #{yoId} select * from MES_WORK_ORDER where IS_DELETED = 0 and YO_ID = #{yoId}
</select> </select>
<select id="getProductAppareaByPartCode" resultType="java.util.Map">
</select>
<select id="findCubByYoId" resultType="org.springblade.desk.produce.pojo.entity.WorkOrder">
SELECT mwo.*
FROM MES_WORK_ORDER mwo INNER JOIN MES_YIELD_ORDER myo ON mwo.YO_ID = myo.ID
WHERE myo.FATHER_YO_ID = #{id}
</select>
<select id="findByPartCodeAndMemo" resultType="org.springblade.desk.produce.pojo.entity.WorkOrder">
SELECT mwo.*
FROM MES_WORK_ORDER mwo INNER JOIN MES_YIELD_ORDER myo ON mwo.YO_ID = myo.ID
WHERE myo.PART_CODE = #{partCode} AND myo.MEMO = #{ypCode}
</select>
</mapper> </mapper>

@ -25,4 +25,6 @@ public interface IDisTaskingService extends BaseService<DisTasking> {
List<MakeRec> queryByWpIdlLst(Long wpId); List<MakeRec> queryByWpIdlLst(Long wpId);
void taskCompleteOrder(TaskCompleteOrderDTO taskCompleteDTO); void taskCompleteOrder(TaskCompleteOrderDTO taskCompleteDTO);
boolean disTechnician(TaskCompleteDTO taskCompleteDTO);
} }

@ -29,4 +29,6 @@ public interface IMacToolUseService extends BaseService<MacToolUse> {
void unMacToolUseBind(List<MacToolUse> mtuList); void unMacToolUseBind(List<MacToolUse> mtuList);
IPage<MacToolUse> queryMacToolUse(IPage<MacToolUse> page, MacToolUse macToolUse); IPage<MacToolUse> queryMacToolUse(IPage<MacToolUse> page, MacToolUse macToolUse);
MacToolUse getTcDataByWoId(Long woId);
} }

@ -16,6 +16,7 @@ import org.springblade.desk.produce.pojo.vo.WorkPlanRunVO;
import org.springblade.scheduling.pojo.entity.WorkOrderEntity; import org.springblade.scheduling.pojo.entity.WorkOrderEntity;
import org.springblade.desk.produce.pojo.vo.*; import org.springblade.desk.produce.pojo.vo.*;
import java.util.List; import java.util.List;
import java.util.Map;
/** /**
* 车间订单表 服务类 * 车间订单表 服务类
@ -69,4 +70,7 @@ public interface IWorkOrderService extends BaseService<WorkOrder> {
List<CacheWorkPlanVO> selectProcessByOrderIds(List<Long> orderIds); List<CacheWorkPlanVO> selectProcessByOrderIds(List<Long> orderIds);
Map<String, Object> getBarCode(Long woId);
Map<String, Object> getPartSubSj(Long woId);
} }

@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.springblade.core.log.exception.ServiceException; import org.springblade.core.log.exception.ServiceException;
import org.springblade.core.mp.base.BaseServiceImpl; import org.springblade.core.mp.base.BaseServiceImpl;
@ -54,7 +55,14 @@ public class DisTaskingServiceImpl extends BaseServiceImpl<DisTaskingMapper, Dis
@Override @Override
public IPage<TaskCompleteVO> disTaskHandle(IPage<TaskCompleteVO> page, TaskCompleteDTO taskCompleteDTO) { public IPage<TaskCompleteVO> disTaskHandle(IPage<TaskCompleteVO> page, TaskCompleteDTO taskCompleteDTO) {
return page.setRecords(baseMapper.disTaskHandle(page, taskCompleteDTO)); IPage<TaskCompleteVO> 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 @Override
@ -89,7 +97,7 @@ public class DisTaskingServiceImpl extends BaseServiceImpl<DisTaskingMapper, Dis
@Override @Override
public void taskCompleteOrder(TaskCompleteOrderDTO taskCompleteDTO) { public void taskCompleteOrder(TaskCompleteOrderDTO taskCompleteDTO) {
List<Long> ddtIds=taskCompleteDTO.getDdtIdList(); List<Long> ddtIds = taskCompleteDTO.getDdtIdList();
for (Long ddtId : ddtIds) { for (Long ddtId : ddtIds) {
DisTasking dsDisTasking = baseMapper.selectById(ddtId); DisTasking dsDisTasking = baseMapper.selectById(ddtId);
dsDisTasking.setDispatchTime(new Date()); dsDisTasking.setDispatchTime(new Date());
@ -99,19 +107,19 @@ public class DisTaskingServiceImpl extends BaseServiceImpl<DisTaskingMapper, Dis
dsDisTasking.setDisTaskStatus(DisTasking.TASK_STATUS_COMPLETED); dsDisTasking.setDisTaskStatus(DisTasking.TASK_STATUS_COMPLETED);
DsTaskingEntity dsTaskingEntity = dsTaskingService.getById(dsDisTasking.getDtId()); DsTaskingEntity dsTaskingEntity = dsTaskingService.getById(dsDisTasking.getDtId());
// 通过零件号查询所有工艺变更的单子 // 通过零件号查询所有工艺变更的单子
if (dsDisTasking.getDtId() != null && dsTaskingEntity.getId() != null ) { if (dsDisTasking.getDtId() != null && dsTaskingEntity.getId() != null) {
String partCode = dsTaskingEntity.getPartCode(); String partCode = dsTaskingEntity.getPartCode();
if (StringUtils.isNotBlank(partCode) && dsTaskingEntity.getTaskStatus().equals(DisTasking.TASK_STATUS_COMPLETED)) { if (StringUtils.isNotBlank(partCode) && dsTaskingEntity.getTaskStatus().equals(DisTasking.TASK_STATUS_COMPLETED)) {
List<WorkOrder> prWorkOrderList=workOrderService.list(Wrappers.lambdaQuery(WorkOrder.class).eq(WorkOrder::getPartCode, partCode).eq(WorkOrder::getRunStatus, WorkOrder.RUN_STATUS_CRAFT_CHANGE)); List<WorkOrder> prWorkOrderList = workOrderService.list(Wrappers.lambdaQuery(WorkOrder.class).eq(WorkOrder::getPartCode, partCode).eq(WorkOrder::getRunStatus, WorkOrder.RUN_STATUS_CRAFT_CHANGE));
for (WorkOrder prWorkOrder : prWorkOrderList) { for (WorkOrder prWorkOrder : prWorkOrderList) {
if (prWorkOrder != null && prWorkOrder.getId() != null) { if (prWorkOrder != null && prWorkOrder.getId() != null) {
prWorkOrder.setRunStatus(WorkOrder.RUN_STATUS_RECEIVE); prWorkOrder.setRunStatus(WorkOrder.RUN_STATUS_RECEIVE);
//zxh 20250522 增加记录订单变更为加工中日志 //zxh 20250522 增加记录订单变更为加工中日志
// syDockingLogService.sendDockingLog("修改订单执行状态为加工中",prWorkOrder.getWoCode(),"taskCompleteOrder()"); // syDockingLogService.sendDockingLog("修改订单执行状态为加工中",prWorkOrder.getWoCode(),"taskCompleteOrder()");
//判定是否是检验项目,并且还有未检验 //判定是否是检验项目,并且还有未检验
WorkPlan wp=workPlanService.getById(prWorkOrder.getWpId()); WorkPlan wp = workPlanService.getById(prWorkOrder.getWpId());
List<WorkPlanItem> list =workPlanItemService.list(Wrappers.lambdaQuery(WorkPlanItem.class) List<WorkPlanItem> list = workPlanItemService.list(Wrappers.lambdaQuery(WorkPlanItem.class)
.eq(WorkPlanItem::getWpId,wp.getId()).eq(WorkPlanItem::getCheckResult, -1)); .eq(WorkPlanItem::getWpId, wp.getId()).eq(WorkPlanItem::getCheckResult, -1));
if (list != null && list.size() > 0) { if (list != null && list.size() > 0) {
prWorkOrder.setRunStatus(WorkOrder.RUN_STATUS_CHECK); prWorkOrder.setRunStatus(WorkOrder.RUN_STATUS_CHECK);
} }
@ -122,4 +130,17 @@ public class DisTaskingServiceImpl extends BaseServiceImpl<DisTaskingMapper, Dis
} }
} }
} }
@Override
public boolean disTechnician(TaskCompleteDTO taskCompleteDTO) {
List<DisTasking> 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);
}
} }

@ -79,6 +79,11 @@ public class MacToolUseServiceImpl extends BaseServiceImpl<MacToolUseMapper, Mac
return page.setRecords(baseMapper.queryMacToolUse(page, macToolUse)); return page.setRecords(baseMapper.queryMacToolUse(page, macToolUse));
} }
@Override
public MacToolUse getTcDataByWoId(Long woId) {
return baseMapper.getTcDataByWoId(woId);
}
public static final int time2Integer(Date d) { public static final int time2Integer(Date d) {
Calendar cal = Calendar.getInstance(); Calendar cal = Calendar.getInstance();
cal.setTime(d); cal.setTime(d);

@ -1,5 +1,6 @@
package org.springblade.desk.produce.service.impl; package org.springblade.desk.produce.service.impl;
import com.baomidou.mybatisplus.core.metadata.IPage;
import jakarta.annotation.PostConstruct; import jakarta.annotation.PostConstruct;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
@ -40,6 +41,7 @@ public class OrderCacheService {
// 声明订单缓存实例(初始化后赋值,避免多次获取) // 声明订单缓存实例(初始化后赋值,避免多次获取)
private Cache runningOrderCache; private Cache runningOrderCache;
private final Map<Long, CacheWorkOrderVO> cacheOrderLocalMap = new ConcurrentHashMap<>();
// 初始化缓存实例(项目启动后执行,仅一次) // 初始化缓存实例(项目启动后执行,仅一次)
@PostConstruct @PostConstruct
@ -73,7 +75,13 @@ public class OrderCacheService {
lock.lock(); lock.lock();
try { try {
// 查库获取最新数据,更新到缓存 // 查库获取最新数据,更新到缓存
return loadOrderFromDB(orderId); CacheWorkOrderVO cacheWorkOrderVO = loadOrderFromDB(orderId);
if (Objects.nonNull(cacheWorkOrderVO)) {
cacheOrderLocalMap.put(orderId, cacheWorkOrderVO);
} else {
cacheOrderLocalMap.remove(orderId);
}
return cacheWorkOrderVO;
} finally { } finally {
// 必须释放锁,避免死锁 // 必须释放锁,避免死锁
lock.unlock(); lock.unlock();
@ -88,6 +96,7 @@ public class OrderCacheService {
public void removeOrderCache(Long orderId) { public void removeOrderCache(Long orderId) {
// 方法体可留空,注解自动完成删除 // 方法体可留空,注解自动完成删除
log.info("订单[{}]已变为非运行中状态,从本地缓存移除", orderId); log.info("订单[{}]已变为非运行中状态,从本地缓存移除", orderId);
cacheOrderLocalMap.remove(orderId);
} }
/** /**
@ -125,6 +134,7 @@ public class OrderCacheService {
// updateOrderCache(orderId); // updateOrderCache(orderId);
// 手动存入缓存:直接用缓存实例put,无二次查库(核心优化) // 手动存入缓存:直接用缓存实例put,无二次查库(核心优化)
runningOrderCache.put(orderId, cacheVO); runningOrderCache.put(orderId, cacheVO);
cacheOrderLocalMap.put(orderId, cacheVO);
} finally { } finally {
lock.unlock(); lock.unlock();
} }
@ -170,4 +180,21 @@ public class OrderCacheService {
// 不存在则创建新锁,存在则返回已有锁 // 不存在则创建新锁,存在则返回已有锁
return orderLockMap.computeIfAbsent(orderId, k -> new ReentrantLock()); return orderLockMap.computeIfAbsent(orderId, k -> new ReentrantLock());
} }
public IPage<CacheWorkOrderVO> listRunningOrderByCache(IPage<CacheWorkOrderVO> page) {
// 1. 分页参数校验(不变)
int currentPage = (int) page.getCurrent();
int pageSizeVal = (int) page.getSize();
// 直接从本地副本获取所有VO,过滤【仅进行中(状态1)】的订单
List<CacheWorkOrderVO> 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<CacheWorkOrderVO> pageList = runningOrderList.subList(startIndex, endIndex);
return page.setRecords(pageList);
}
} }

@ -1,19 +1,26 @@
package org.springblade.desk.produce.service.impl; package org.springblade.desk.produce.service.impl;
import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.bean.BeanUtil;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; 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.apache.commons.lang3.StringUtils;
import org.springblade.core.log.exception.ServiceException; import org.springblade.core.log.exception.ServiceException;
import org.springblade.core.mp.base.BaseServiceImpl; import org.springblade.core.mp.base.BaseServiceImpl;
import org.springblade.core.secure.utils.AuthUtil; 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.basic.service.IProcessAbilityService;
import org.springblade.desk.dashboard.pojo.entity.BsProcessSetEntity; 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.IBsProcessSetService;
import org.springblade.desk.dashboard.service.IDsPartService;
import org.springblade.desk.order.pojo.entity.YieldOrder; import org.springblade.desk.order.pojo.entity.YieldOrder;
import org.springblade.desk.order.pojo.enums.YieldOrderEnum; import org.springblade.desk.order.pojo.enums.YieldOrderEnum;
import org.springblade.desk.order.service.IYieldOrderService; 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.IPlanTestService;
import org.springblade.desk.quality.service.IWorkPlanItemService; import org.springblade.desk.quality.service.IWorkPlanItemService;
import org.springblade.scheduling.pojo.entity.WorkOrderEntity; 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.beans.BeanUtils;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; 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.Instant;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.*; import java.util.*;
@ -77,6 +89,10 @@ public class WorkOrderServiceImpl extends BaseServiceImpl<WorkOrderMapper, WorkO
private final IProcessAbilityService processAbilityService; private final IProcessAbilityService processAbilityService;
private final IErpDataProduceClient erpDataProduceClient;
private final IDsPartService dsPartService;
@Override @Override
public IPage<WorkOrderVO> selectWorkOrderPage(IPage<WorkOrderVO> page, WorkOrderDTO workOrder) { public IPage<WorkOrderVO> selectWorkOrderPage(IPage<WorkOrderVO> page, WorkOrderDTO workOrder) {
return page.setRecords(baseMapper.selectWorkOrderPage(page, workOrder)); return page.setRecords(baseMapper.selectWorkOrderPage(page, workOrder));
@ -92,7 +108,9 @@ public class WorkOrderServiceImpl extends BaseServiceImpl<WorkOrderMapper, WorkO
batchPrepareVO.setWoCode(this.nextCode(yieldOrder.getYpCode())); batchPrepareVO.setWoCode(this.nextCode(yieldOrder.getYpCode()));
batchPrepareVO.setCardNo(this.nextCardNo(yieldOrder.getYpCode(),workOrder.getCardNo())); batchPrepareVO.setCardNo(this.nextCardNo(yieldOrder.getYpCode(),workOrder.getCardNo()));
batchPrepareVO.setBatchNo(this.nextBatchNo(yieldOrder.getYpCode(),workOrder.getBatchNo())); batchPrepareVO.setBatchNo(this.nextBatchNo(yieldOrder.getYpCode(),workOrder.getBatchNo()));
batchPrepareVO.setMesCardNo(this.nextMesCardNo(workOrder.getMesCardNo())); if (workOrder.getMesCardNo() != null) {
batchPrepareVO.setMesCardNo(this.nextMesCardNo(workOrder.getMesCardNo()));
}
return batchPrepareVO; return batchPrepareVO;
} }
@ -122,7 +140,7 @@ public class WorkOrderServiceImpl extends BaseServiceImpl<WorkOrderMapper, WorkO
newWo.setOemType(-1); newWo.setOemType(-1);
newWo.setCardNo(inBatchesDTO.getCardNo()); newWo.setCardNo(inBatchesDTO.getCardNo());
newWo.setMemo(inBatchesDTO.getMemo()); newWo.setMemo(inBatchesDTO.getMemo());
newWo.setMesCardNo(this.nextMesCardNo(oldWo.getMesCardNo())); newWo.setMesCardNo(oldWo.getMesCardNo() != null ? this.nextMesCardNo(oldWo.getMesCardNo()) : "");
oldWo.setMakeQty(oldWo.getMakeQty() - newWo.getMakeQty()); oldWo.setMakeQty(oldWo.getMakeQty() - newWo.getMakeQty());
@ -147,7 +165,7 @@ public class WorkOrderServiceImpl extends BaseServiceImpl<WorkOrderMapper, WorkO
wp.setQualifiedQty(0d); wp.setQualifiedQty(0d);
} }
BsProcessSetEntity processSet = bsProcessSetService.getById(wp.getPpsId()); BsProcessSetEntity processSet = bsProcessSetService.getById(wp.getPpsId());
if (!"镀后接收".equals(processSet.getName())) { if (processSet != null && !"镀后接收".equals(processSet.getName())) {
wp.setFactEndTime(oldWp.getFactEndTime()); wp.setFactEndTime(oldWp.getFactEndTime());
} }
@ -483,6 +501,160 @@ public class WorkOrderServiceImpl extends BaseServiceImpl<WorkOrderMapper, WorkO
return workPlanList; return workPlanList;
} }
@Override
public Map<String, Object> getBarCode(Long woId) {
Map<String, Object> data = new HashMap<>(1);
List<Map<String, String>> list = new ArrayList<>();
Map<String, String> 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<JSONObject> 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<String, String> 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<String, Object> getPartSubSj(Long woId) {
Map<String, Object> data = new HashMap<>(1);
List<Map<String, String>> list = new ArrayList<>();
WorkOrder wo = this.getById(woId);
YieldOrder yieldOrder = yieldOrderService.getById(wo.getYoId());
List<WorkOrder> prWorkOrderList = this.checkOrderSj(wo, yieldOrder);
List<DsPartEntity> dsPartSubList = dsPartService.selectDsPartByPatCode(yieldOrder.getPartCode(), null);
if (dsPartSubList != null && !dsPartSubList.isEmpty()) {
for (DsPartEntity dsPartSub : dsPartSubList) {
Map<String, String> 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<WorkOrder> checkOrderSj(WorkOrder wo, YieldOrder yieldOrder) {
//B号为空则直接跳过
if (StringUtils.isBlank(yieldOrder.getRoamNo())) {
return null;
}
//非烧结零件跳过子件验证
if (!yieldOrder.getYieldType().equals(YieldOrder.YIELD_TYPE_2)) {
return null;
}
List<WorkOrder> subList = this.findCubByYoId(yieldOrder.getId());
//获取到部件下面的玻璃饼信息
List<DsPartEntity> dpsList = dsPartService.selectDsPartByPatCode(yieldOrder.getPartCode(), 3);
if (dpsList != null && !dpsList.isEmpty()) {
List<WorkOrder> blbList;
for (DsPartEntity dps : dpsList) {
blbList = this.findByPartCodeAndMemo(dps.getPartCode(), yieldOrder.getYpCode());
subList.addAll(blbList);
}
}
return subList;
}
private List<WorkOrder> findByPartCodeAndMemo(String partCode, String ypCode) {
return baseMapper.findByPartCodeAndMemo(partCode, ypCode);
}
private List<WorkOrder> findCubByYoId(Long id) {
return baseMapper.findCubByYoId(id);
}
private String getVersionByPartCode(String partCode) {
return erpDataProduceClient.getVersionByPartCode(partCode).getData();
}
private Map<String, String> getProductAppareaByPartCode(String partCode) {
R<Map<String, String>> 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) { private boolean checkWp(WorkPlan wp, Integer runType) {
//不分派工序不能操作 //不分派工序不能操作
BsProcessSetEntity processSet = bsProcessSetService.getById(wp.getPpsId()); BsProcessSetEntity processSet = bsProcessSetService.getById(wp.getPpsId());

@ -3,7 +3,9 @@ package org.springblade.desk.produce.wrapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import org.springblade.core.mp.support.BaseEntityWrapper; import org.springblade.core.mp.support.BaseEntityWrapper;
import org.springblade.core.tool.utils.BeanUtil; 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.entity.WorkOrder;
import org.springblade.desk.produce.pojo.enums.WorkOrderEnum;
import org.springblade.desk.produce.pojo.vo.WorkOrderVO; import org.springblade.desk.produce.pojo.vo.WorkOrderVO;
import org.springblade.system.cache.UserCache; import org.springblade.system.cache.UserCache;
import org.springblade.system.pojo.entity.User; import org.springblade.system.pojo.entity.User;
@ -37,6 +39,8 @@ public class WorkOrderWrapper extends BaseEntityWrapper<WorkOrder, WorkOrderVO>
for (WorkOrderVO workOrderVo : workOrderVos) { for (WorkOrderVO workOrderVo : workOrderVos) {
User user = UserCache.getUser(workOrderVo.getDispatcher()); User user = UserCache.getUser(workOrderVo.getDispatcher());
workOrderVo.setDispatcherName(user.getRealName()); workOrderVo.setDispatcherName(user.getRealName());
workOrderVo.setRunStatusName(WorkOrderEnum.getName(workOrderVo.getRunStatus()));
workOrderVo.setPriorityName(WorkOrder.priorityMap.get(workOrderVo.getPriority()));
} }
pages.setRecords(workOrderVos); pages.setRecords(workOrderVos);
return pages; return pages;

@ -13,6 +13,8 @@ import org.springblade.erpdata.service.IErpDataProduceService;
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
import java.util.Map;
/** /**
* 字典服务Feign实现类 * 字典服务Feign实现类
@ -38,4 +40,14 @@ public class ErpDataProduceClient implements IErpDataProduceClient {
public R<IPage<ReworkProcessVO>> loadReworkOrder(ReworkProcessDTO query) { public R<IPage<ReworkProcessVO>> loadReworkOrder(ReworkProcessDTO query) {
return R.data(erpDataProduceService.loadReworkOrder(Condition.getPage(query.getQuery()), query)); return R.data(erpDataProduceService.loadReworkOrder(Condition.getPage(query.getQuery()), query));
} }
@Override
public R<Map<String, String>> getProductAppareaByPartCode(String partCode) {
return R.data(erpDataProduceService.getProductAppareaByPartCode(partCode));
}
@Override
public R<String> getVersionByPartCode(String partCode) {
return R.data(erpDataProduceService.getVersionByPartCode(partCode));
}
} }

@ -7,6 +7,7 @@ import org.springblade.erpdata.pojo.vo.QueryBatchVO;
import org.springblade.erpdata.pojo.vo.ReworkProcessVO; import org.springblade.erpdata.pojo.vo.ReworkProcessVO;
import java.util.List; import java.util.List;
import java.util.Map;
/** /**
* Mapper 接口 * Mapper 接口
@ -18,4 +19,8 @@ public interface ErpDataProduceMapper extends Mapper {
QueryBatchVO queryBatch(String partCode); QueryBatchVO queryBatch(String partCode);
List<ReworkProcessVO> loadReworkOrder(IPage<ReworkProcessVO> page, ReworkProcessDTO query); List<ReworkProcessVO> loadReworkOrder(IPage<ReworkProcessVO> page, ReworkProcessDTO query);
Map<String, String> getProductAppareaByPartCode(String partCode);
String getVersionByPartCode(String partCode);
} }

@ -62,4 +62,12 @@
</where> </where>
ORDER BY a.reqdate DESC ORDER BY a.reqdate DESC
</select> </select>
<select id="getProductAppareaByPartCode" resultType="java.util.Map">
select b.productapparea, b.cgzmark from ( select a.* from dba_mgr.t_prtbasdef@erp_mes_link a
where a.prtno = #{partCode}) b where rownum = 1
</select>
<select id="getVersionByPartCode" resultType="java.lang.String">
select b.version from (select version from dba_mgr.drwversion@erp_mes_link a where a.drwpartno in (
select drwpartno from dba_mgr.t_prtbasdef@erp_mes_link where prtno = #{partCode})) b where rownum=1
</select>
</mapper> </mapper>

@ -5,6 +5,8 @@ import org.springblade.erpdata.pojo.dto.ReworkProcessDTO;
import org.springblade.erpdata.pojo.vo.QueryBatchVO; import org.springblade.erpdata.pojo.vo.QueryBatchVO;
import org.springblade.erpdata.pojo.vo.ReworkProcessVO; import org.springblade.erpdata.pojo.vo.ReworkProcessVO;
import java.util.Map;
/** /**
* ERP数据查询service * ERP数据查询service
* *
@ -16,4 +18,8 @@ public interface IErpDataProduceService {
QueryBatchVO queryBatch(String partCode); QueryBatchVO queryBatch(String partCode);
IPage<ReworkProcessVO> loadReworkOrder(IPage<ReworkProcessVO> page, ReworkProcessDTO query); IPage<ReworkProcessVO> loadReworkOrder(IPage<ReworkProcessVO> page, ReworkProcessDTO query);
Map<String, String> getProductAppareaByPartCode(String partCode);
String getVersionByPartCode(String partCode);
} }

@ -10,6 +10,8 @@ import org.springblade.erpdata.pojo.vo.ReworkProcessVO;
import org.springblade.erpdata.service.IErpDataProduceService; import org.springblade.erpdata.service.IErpDataProduceService;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.Map;
/** /**
* @author litao * @author litao
* @date 2026-1-31 * @date 2026-1-31
@ -29,4 +31,14 @@ public class ErpDataProduceServiceImpl implements IErpDataProduceService {
public IPage<ReworkProcessVO> loadReworkOrder(IPage<ReworkProcessVO> page, ReworkProcessDTO query) { public IPage<ReworkProcessVO> loadReworkOrder(IPage<ReworkProcessVO> page, ReworkProcessDTO query) {
return page.setRecords(erpDataProduceMapper.loadReworkOrder(page, query)); return page.setRecords(erpDataProduceMapper.loadReworkOrder(page, query));
} }
@Override
public Map<String, String> getProductAppareaByPartCode(String partCode) {
return erpDataProduceMapper.getProductAppareaByPartCode(partCode);
}
@Override
public String getVersionByPartCode(String partCode) {
return erpDataProduceMapper.getVersionByPartCode(partCode);
}
} }

Loading…
Cancel
Save