Explorar o código

aps-车间作业跟踪增加排单功能

sucheng hai 5 meses
pai
achega
474b5e3fa9

+ 2 - 0
cx-aps/cx-aps-common/src/main/java/com/rongwei/bscommon/sys/service/ApsProcessOperationProcessEquService.java

@@ -27,4 +27,6 @@ public interface ApsProcessOperationProcessEquService extends IService<ApsProces
     R splitDetails(List<ProcessOperationDetailSplitVo> processOperationDetailSplitVos);
 
     R workshopLocked(OrderLockVo orderLockVo);
+
+    R scheduling(ChangingScheduleVo req);
 }

+ 42 - 0
cx-aps/cx-aps-common/src/main/java/com/rongwei/bscommon/sys/service/impl/ApsProcessOperationProcessEquServiceImpl.java

@@ -2003,6 +2003,48 @@ public class ApsProcessOperationProcessEquServiceImpl extends ServiceImpl<ApsPro
         return apsBlankOrderService.processDetailLock(orderLockVo);
     }
 
+    @Override
+    public R scheduling(ChangingScheduleVo req) {
+        ApsUtils.checkScheduling(null);
+
+        //作业明细集合
+        List<String> processEquIdList = req.getProcessEquIdList();
+        List<ApsProcessOperationProcessEquDo> apsProcessOperationProcessEquDos = apsProcessOperationProcessEquService.listByIds(processEquIdList).stream().collect(Collectors.toList());
+
+//        List<String> blankIdList = apsProcessOperationProcessEquDos.stream().map(ApsProcessOperationProcessEquDo::getBlankid).distinct().collect(Collectors.toList());
+        apsProcessOperationProcessEquDos.sort(Comparator.comparing(ApsProcessOperationProcessEquDo::getPlanstartdate));
+        //需要更新的集合
+//        List<ApsProcessOperationProcessEquDo> needUpdateList = new LinkedList<>();
+        //下一道明细的开始时间
+        Date nextStartDate = req.getProcessingTime();
+        for (ApsProcessOperationProcessEquDo apsProcessOperationProcessEquDo : apsProcessOperationProcessEquDos) {
+            Date planstartdate = apsProcessOperationProcessEquDo.getPlanstartdate();
+            Date planenddate = apsProcessOperationProcessEquDo.getPlanenddate();
+            ApsProcessOperationProcessEquDo needUpdate = new ApsProcessOperationProcessEquDo();
+            needUpdate.setId(apsProcessOperationProcessEquDo.getId());
+            needUpdate.setProcessdeviceid(req.getEquId());
+            needUpdate.setProcessdevice(req.getEquName());
+            needUpdate.setProcessworkshopid(req.getWorkshopId());
+            needUpdate.setProcessworkshop(req.getWorkshopName());
+            needUpdate.setPlanstartdate(nextStartDate);
+            needUpdate.setPlanenddate(DateUtil.offsetSecond(nextStartDate,(int)DateUtil.between(planstartdate,planenddate,DateUnit.SECOND)));
+            nextStartDate = needUpdate.getPlanenddate();
+//            needUpdateList.add(needUpdate);
+            apsProcessOperationProcessEquService.updateById(needUpdate);
+            checkProcessingTimeConflict(apsProcessOperationProcessEquDo,
+                    planstartdate, planenddate, apsProcessOperationProcessEquDo.getProcessdeviceid(), "非合并加工", new LinkedList<>());
+            // 判断是否存在设备不可用
+            apsProcessOperationProcessEquDo = this.getById(apsProcessOperationProcessEquDo.getId());
+            inspectionEquipmentIsAvailable(apsProcessOperationProcessEquDo,
+                    apsProcessOperationProcessEquDo.getProcessdeviceid(),
+                    apsProcessOperationProcessEquDo.getPlanstartdate(),
+                    apsProcessOperationProcessEquDo.getPlanenddate(),
+                    new LinkedList<>());
+        }
+
+        return R.ok();
+    }
+
 
 }
 

+ 46 - 0
cx-aps/cx-aps-entity/src/main/java/com/rongwei/bsentity/vo/ChangingScheduleVo.java

@@ -0,0 +1,46 @@
+package com.rongwei.bsentity.vo;
+
+import lombok.Data;
+
+import javax.validation.constraints.Future;
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * @author :sc
+ * @since :2025/2/25
+ */
+@Data
+public class ChangingScheduleVo {
+    //明细ID集合
+    private List<String> processEquIdList;
+
+    /**
+     * 设备ID
+     */
+    @NotBlank(message = "设备必填")
+    private String equId;
+    /**
+     * 设备名称
+     */
+    @NotBlank(message = "设备必填")
+    private String equName;
+    /**
+     * 车间ID
+     */
+    @NotBlank(message = "车间必填")
+    private String workshopId;
+    /**
+     * 车间名称
+     */
+    @NotBlank(message = "车间必填")
+    private String workshopName;
+    /**
+     * 加工时间必填
+     */
+    @NotNull(message = "加工时间必填")
+    @Future(message = "加工时间必须大于当前时间")
+    private Date processingTime;
+}

+ 11 - 0
cx-aps/cx-aps-server/src/main/java/com/rongwei/bsserver/controller/ApsProcessOperationProcessEquController.java

@@ -67,6 +67,17 @@ public class ApsProcessOperationProcessEquController {
         log.info("开始进行换线作业");
         return apsProcessOperationProcessEquService.changingWires(changingWiresVos);
     }
+    /**
+     * 排单
+     *
+     * @param req
+     * @return
+     */
+    @PostMapping("/scheduling")
+    public R scheduling(@RequestBody @Validated ChangingScheduleVo req) {
+        log.info("开始进行排单作业");
+        return apsProcessOperationProcessEquService.scheduling(req);
+    }
 
     /**
      * 换线获取可选设备