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/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/service/impl/YieldOrderServiceImpl.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/order/service/impl/YieldOrderServiceImpl.java index 41a8d0f6..75d5c1da 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/order/service/impl/YieldOrderServiceImpl.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/order/service/impl/YieldOrderServiceImpl.java @@ -6,6 +6,7 @@ import com.alibaba.fastjson.JSONArray; 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 org.apache.commons.lang3.StringUtils; @@ -644,12 +645,12 @@ public class YieldOrderServiceImpl extends BaseServiceImpl queryWrapper = Wrappers.lambdaQuery(YieldOrder.class).eq(YieldOrder::getCardNo, cardNo); - YieldOrder yieldOrder = baseMapper.selectOne(queryWrapper); + List yieldOrders = baseMapper.selectList(queryWrapper); // TODO : 待完善 - if (yieldOrder == null) { + if (CollectionUtils.isEmpty(yieldOrders)) { throw new ServiceException("生产订单未同步,请稍后操作"); } - return yieldOrder; + return yieldOrders.get(0); } @Override diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/controller/DeductionPreserveController.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/controller/DeductionPreserveController.java index 50531641..65c65cc9 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/controller/DeductionPreserveController.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/controller/DeductionPreserveController.java @@ -23,6 +23,8 @@ import org.springblade.desk.produce.service.IOrderDeclareService; import org.springblade.erpdata.pojo.vo.QueryBatchVO; 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.getBatchNo() != null, OrderDeclare::getBatchNo, orderDeclareDto.getBatchNo()); wrapper.like(orderDeclareDto.getQuaLevel() != null, OrderDeclare::getQuaLevel, orderDeclareDto.getQuaLevel()); - return R.data(orderDeclareService.page(Condition.getPage(query), wrapper)); + IPage 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") diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/controller/DisTaskingController.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/controller/DisTaskingController.java index b52bf5ee..ca315c7b 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/controller/DisTaskingController.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/controller/DisTaskingController.java @@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; +import jakarta.validation.Valid; import lombok.RequiredArgsConstructor; import org.apache.commons.lang3.StringUtils; 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.secure.utils.AuthUtil; 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.TaskCompleteOrderDTO; import org.springblade.desk.produce.pojo.entity.DisTasking; 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.vo.ByCardNoByPlanVO; import org.springblade.desk.produce.pojo.vo.TaskCompleteVO; import org.springblade.desk.produce.service.IDisTaskingService; +import org.springblade.desk.produce.service.IPdaSaveService; import org.springblade.desk.produce.service.IWorkPlanLogService; import org.springframework.web.bind.annotation.*; @@ -43,6 +47,8 @@ public class DisTaskingController extends BladeController { private final IWorkPlanLogService workPlanLogService; + private final IPdaSaveService pdaSaveService; + @GetMapping("/disTaskHandle") @ApiOperationSupport(order = 1) @Operation(summary = "调度任务分派", description = "传入taskCompleteDTO") @@ -57,7 +63,7 @@ public class DisTaskingController extends BladeController { @PostMapping("/taskComplete") @ApiOperationSupport(order = 2) - @Operation(summary = "任务完成", description = "传入taskCompleteDTO") + @Operation(summary = "任务处理", description = "传入taskCompleteDTO") public R taskComplete(@RequestBody TaskCompleteDTO taskCompleteDTO) { List ddtIdList = taskCompleteDTO.getDdtIdList(); String rsCode = taskCompleteDTO.getRsCode(); @@ -111,5 +117,33 @@ public class DisTaskingController extends BladeController { return R.success(); } + @PostMapping("/disTechnician") + @ApiOperationSupport(order = 7) + @Operation(summary = "转派", description = "") + public R disTechnician(@RequestBody TaskCompleteDTO taskCompleteDTO) { + List 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 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(); + } } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/controller/RbProduceManageController.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/controller/RbProduceManageController.java index 087a5260..91fdbbc9 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/controller/RbProduceManageController.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/controller/RbProduceManageController.java @@ -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.impl.OrderCacheService; import org.springblade.desk.produce.wrapper.WorkOrderWrapper; +import org.springblade.desk.quality.util.CodeUtil; import org.springframework.web.bind.annotation.*; import java.util.List; +import java.util.Map; /** * 热表生产管理 + * * @author litao */ @RestController @@ -39,7 +42,7 @@ public class RbProduceManageController extends BladeController { @GetMapping("/page") @ApiOperationSupport(order = 1) - @Operation(summary = "车间订单列表分页", description = "传入WorkOrderVO") + @Operation(summary = "车间订单列表分页", description = "传入WorkOrderVO") public R> page(WorkOrderDTO workOrder, Query query) { IPage pages = workOrderService.selectWorkOrderPage(Condition.getPage(query), workOrder); return R.data(WorkOrderWrapper.build().listWorkOrderVO(pages)); @@ -47,14 +50,14 @@ public class RbProduceManageController extends BladeController { @GetMapping(value = "/batchesPrepare/{woId}") @ApiOperationSupport(order = 2) - @Operation(summary = "分批准备数据", description = "传入车间订单ID") + @Operation(summary = "分批准备数据", description = "传入车间订单ID") public R batchesPrepare(@PathVariable Long woId) { return R.data(workOrderService.batchesPrepare(woId)); } @PostMapping(value = "/inBatches") @ApiOperationSupport(order = 3) - @Operation(summary = "分批", description = "传入WorkOrder") + @Operation(summary = "分批", description = "传入WorkOrder") public R inBatches(@RequestBody InBatchesDTO inBatchesDTO) { Long userId = AuthUtil.getUserId(); return R.data(workOrderService.inBatches(inBatchesDTO.getId(), inBatchesDTO, userId)); @@ -62,7 +65,7 @@ public class RbProduceManageController extends BladeController { @PostMapping(value = "/turnType") @ApiOperationSupport(order = 4) - @Operation(summary = "转烧结", description = "传入YieldOrder") + @Operation(summary = "转烧结", description = "传入YieldOrder") public R turnType(@RequestBody TurnTypeDTO turnTypeDTO) { Long userId = AuthUtil.getUserId(); return R.data(workOrderService.turnType(turnTypeDTO.getYoId(), turnTypeDTO.getYieldType(), userId)); @@ -70,7 +73,7 @@ public class RbProduceManageController extends BladeController { @PostMapping(value = "/updateStatus") @ApiOperationSupport(order = 5) - @Operation(summary = "关闭", description = "传入UpdateStatusDTO") + @Operation(summary = "关闭", description = "传入UpdateStatusDTO") public R updateStatus(@RequestBody UpdateStatusDTO updateStatusDTO) { Long userId = AuthUtil.getUserId(); return R.data(workOrderService.updateStatus(updateStatusDTO.getIdArr(), updateStatusDTO.getStatus(), userId, updateStatusDTO.getMemo())); @@ -78,14 +81,14 @@ public class RbProduceManageController extends BladeController { @PostMapping(value = "/listProProcess") @ApiOperationSupport(order = 6) - @Operation(summary = "获取转外协所需数据", description = "传入produceManageDTO") + @Operation(summary = "获取转外协所需数据", description = "传入produceManageDTO") public R> listProProcess(@RequestBody ListProProcessDTO listProProcessDTO) { return R.data(workOrderService.listProProcess(listProProcessDTO)); } @PostMapping(value = "/transferBill") @ApiOperationSupport(order = 7) - @Operation(summary = "转外协(单个/批量)", description = "传入produceManageDTO") + @Operation(summary = "转外协(单个/批量)", description = "传入produceManageDTO") public R transferBill(@RequestBody TransferBillDTO transferBillDTO) { Long userId = AuthUtil.getUserId(); return R.data(workOrderService.transferBill(transferBillDTO.getWorkOrderRuns(), transferBillDTO.getWorkPlanRuns())); @@ -93,7 +96,7 @@ public class RbProduceManageController extends BladeController { @PostMapping(value = "/updatePriority") @ApiOperationSupport(order = 8) - @Operation(summary = "更改车间订单优先级", description = "传入WorkOrder") + @Operation(summary = "更改车间订单优先级", description = "传入WorkOrder") public R updatePriority(@RequestBody UpdatePriorityDTO updatePriorityDTO) { WorkOrder wo = workOrderService.getById(updatePriorityDTO.getWoId()); // wo.setPriority(WorkOrder.PRIORITY_SCH_IMP); @@ -104,9 +107,29 @@ public class RbProduceManageController extends BladeController { @GetMapping(value = "/getWorkOrderCache/{woId}") @ApiOperationSupport(order = 9) - @Operation(summary = "缓存获取订单相关数据", description = "传入车间订单ID") + @Operation(summary = "缓存获取订单相关数据", description = "传入车间订单ID") public R getWorkOrderCache(@PathVariable Long woId) { return R.data(orderCacheService.getOrderFromCache(woId)); } + @GetMapping(value = "/getWorkOrderCachePage") + @ApiOperationSupport(order = 10) + @Operation(summary = "缓存获取订单相关数据", description = "传入车间订单ID") + public R> getWorkOrderCachePage(Query query) { + return R.data(orderCacheService.listRunningOrderByCache(Condition.getPage(query))); + } + + @GetMapping("/getBarCode") + @Operation(summary = "工艺流程卡获取条形码", description = "传入车间订单ID") + public Map getBarCode(Long woId) { + return workOrderService.getBarCode(woId); + } + + + @GetMapping("/getPartSubSj") + @Operation(summary = "工艺流程卡获取烧结子件信息", description = "传入车间订单ID") + public Map getPartSubSj(Long woId) { + return workOrderService.getPartSubSj(woId); + } + } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/controller/ReworkProcessController.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/controller/ReworkProcessController.java index a340ebc0..283c4f96 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/controller/ReworkProcessController.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/controller/ReworkProcessController.java @@ -4,18 +4,24 @@ import com.baomidou.mybatisplus.core.metadata.IPage; import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; -import jakarta.annotation.Resource; +import jakarta.validation.Valid; import lombok.RequiredArgsConstructor; import org.springblade.core.boot.ctrl.BladeController; import org.springblade.core.mp.support.Condition; import org.springblade.core.mp.support.Query; +import org.springblade.core.secure.utils.AuthUtil; import org.springblade.core.tool.api.R; 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.pojo.dto.ReworkProcessDTO; import org.springblade.erpdata.pojo.vo.ReworkProcessVO; 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 IPdaSaveService pdaSaveService; + private final IPrReworkProcessService reworkProcessService; @GetMapping("/loadReworkOrder") @@ -36,7 +44,36 @@ public class ReworkProcessController extends BladeController { @Operation(summary = "erp查询返工订单", description = "传入ReworkProcessDTO") public R> page(ReworkProcessDTO prReworkProcess, Query query) { prReworkProcess.setQuery(query); - return erpDataProduceClient.loadReworkOrder(prReworkProcess); + IPage page = Condition.getPage(query); + List 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") @@ -46,4 +83,20 @@ public class ReworkProcessController extends BladeController { // 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(); + } + } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/controller/WorkProcessController.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/controller/WorkProcessController.java index a99c6479..699a2d82 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/controller/WorkProcessController.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/controller/WorkProcessController.java @@ -3,34 +3,18 @@ package org.springblade.desk.produce.controller; import com.baomidou.mybatisplus.core.metadata.IPage; import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport; import io.swagger.v3.oas.annotations.Operation; -import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.tags.Tag; -import jakarta.validation.Valid; import lombok.AllArgsConstructor; import org.springblade.core.boot.ctrl.BladeController; import org.springblade.core.mp.support.Condition; 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.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.WorkPlan; -import org.springblade.desk.produce.pojo.vo.WorkPlanVO; import org.springblade.desk.produce.service.IMacToolUseService; -import org.springblade.desk.produce.service.IPdaSaveService; import org.springframework.web.bind.annotation.*; -import java.util.List; -import java.util.Map; - /** - * 返工任务表 控制器 + * 同炉(槽)查询 控制器 * * @author BladeX * @since 2025-12-03 @@ -38,57 +22,16 @@ import java.util.Map; @RestController @AllArgsConstructor @RequestMapping("/workProcess") -@Tag(name = "返工任务表", description = "返工任务表接口") +@Tag(name = "同炉(槽)查询", description = "同炉(槽)查询接口") public class WorkProcessController extends BladeController { - private final IPdaSaveService pdaSaveService; - 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 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") - @ApiOperationSupport(order = 5) + @ApiOperationSupport(order = 1) @Operation(summary = "分页", description = "传入macToolUse") public R> page(MacToolUse macToolUse, Query query) { IPage pages = macToolUseService.queryMacToolUse(Condition.getPage(query), macToolUse); return R.data(pages); } - - } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/DisTaskingMapper.xml b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/DisTaskingMapper.xml index 6f902482..816fffb4 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/DisTaskingMapper.xml +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/DisTaskingMapper.xml @@ -16,11 +16,11 @@ b.wip_take as wipTake, b.change_no as changeNo, 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 MES_DIS_TASKING a INNER JOIN DS_TASKING b ON a.DT_ID = b.ID - a.DISPATCH_MAN = #{query.loginUser} AND a.DIS_TASK_STATUS != 3 AND a.DIS_TASK_STATUS = 1 diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/MacToolUseMapper.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/MacToolUseMapper.java index f2fc6084..5fcd0c40 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/MacToolUseMapper.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/MacToolUseMapper.java @@ -13,5 +13,6 @@ import java.util.List; */ public interface MacToolUseMapper extends BaseMapper { + MacToolUse getTcDataByWoId(Long woId); List queryMacToolUse(IPage page, MacToolUse macToolUse); } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/WorkOrderMapper.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/WorkOrderMapper.java index be7e01e6..0edbf323 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/WorkOrderMapper.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/WorkOrderMapper.java @@ -12,6 +12,7 @@ import org.springblade.desk.produce.pojo.vo.WorkOrderVO; import org.springblade.scheduling.pojo.entity.WorkOrderEntity; import java.util.List; +import java.util.Map; /** * 车间订单表 Mapper 接口 @@ -47,4 +48,8 @@ public interface WorkOrderMapper extends BaseMapper { YieldOrder selectByPartCOdeAndBatchNo(@Param("partCode") String partCode,@Param("batchNo") String batchNo); WorkOrderEntity selectByYoId(@Param("yoId") Long yoId); + + List findCubByYoId(Long id); + + List findByPartCodeAndMemo(String partCode, String ypCode); } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/WorkOrderMapper.xml b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/WorkOrderMapper.xml index 3d29d87f..b2ffc995 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/WorkOrderMapper.xml +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/WorkOrderMapper.xml @@ -54,7 +54,7 @@ mwo.MES_CARD_NO mesCardNo, myo.PLATE plate, myo.PRODUCT_TYPE productType, - mwo.PRIORITY priority, + myo.PRIORITY_ERP priority, myo.USE_DEPT useDept, ROUND(myo.YP_AREA * mwo.MAKE_QTY,10) totalArea, myo.YP_AREA area, @@ -170,7 +170,7 @@ AND b.PRODUCT_IDENT LIKE concat(concat('%', #{query.productIdent}),'%') - AND b.priority = #{query.priority} + AND b.PRIORITY_ERP = #{query.priority} AND b.DEMAND_DATE BETWEEN #{query.demandDateStart} AND #{query.demandDateEnd} @@ -191,5 +191,18 @@ + + + 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); + } }