diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/feign/IApsProduceClient.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/feign/IApsProduceClient.java
new file mode 100644
index 00000000..11c88262
--- /dev/null
+++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/feign/IApsProduceClient.java
@@ -0,0 +1,30 @@
+package org.springblade.desk.produce.feign;
+
+import org.springblade.core.launch.constant.AppConstant;
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.GetMapping;
+
+/**
+ * 排产相关定时任务接口声明
+ *
+ * @author lqk
+ */
+@FeignClient(
+ value = AppConstant.APPLICATION_DESK_NAME
+)
+public interface IApsProduceClient {
+
+ String API_PREFIX = "/feign/aps/produce";
+
+ String SYNC_ORDER_FROM_OLD_MES = API_PREFIX + "/syncOrderFromOldMes";
+
+
+ /**
+ * 从旧mes平台同步生产订单
+ *
+ * @return
+ */
+ @GetMapping(SYNC_ORDER_FROM_OLD_MES)
+ Boolean syncOrderFromOldMes();
+
+}
diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/dto/MesRbRedoRoutDTO.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/dto/MesRbRedoRoutDTO.java
new file mode 100644
index 00000000..72d2614a
--- /dev/null
+++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/dto/MesRbRedoRoutDTO.java
@@ -0,0 +1,119 @@
+package org.springblade.desk.produce.pojo.dto;
+
+import lombok.Data;
+
+/**
+ *
Description: 返工订单
+ *
+ * @author lyj
+ * @date 2023-03-07 14:54
+ */
+@Data
+public class MesRbRedoRoutDTO {
+ /**
+ * 返修单号
+ */
+ private String redono;
+ /**
+ * 路线编号
+ */
+ private Integer seqno;
+ /**
+ * 处理单位
+ */
+ private String seqdept;
+ /**
+ * 物料号
+ */
+ private String prtno;
+ /**
+ * 执行状态
+ */
+ private Short excstatus;
+ /**
+ * 加工数量
+ */
+ private Double amount;
+ /**
+ * 需求日期
+ */
+ private String reqdate;
+ /**
+ * 需求数量
+ */
+ private String reqqty;
+ /**
+ * 接收日期
+ */
+ private String recdate;
+ /**
+ * 接收人
+ */
+ private String recman;
+ /**
+ * 接收数量
+ */
+ private String recqty;
+ /**
+ * 完成时间
+ */
+ private String enddat;
+ /**
+ * 完成人
+ */
+ private String endman;
+ /**
+ * 完成数量
+ */
+ private String endqty;
+ /**
+ * 批次号
+ */
+ private String splcode;
+ /**
+ * 备注
+ */
+ private String remark;
+ /**
+ * 交接日期
+ */
+ private String hrecdate;
+ /**
+ * 报废数量
+ */
+ private Integer bfqty;
+
+ /**
+ * 发生单位
+ */
+ private String usedept;
+ /**
+ * 处理意见
+ */
+ private String detail;
+ /**
+ * 生产标识
+ */
+ private String prtlotno;
+ /**
+ * 工艺路线
+ */
+ private String deptcode;
+ /**
+ * 是否无工艺
+ */
+ private String reworkgyFlag;
+ /**
+ * 开单车间订单号
+ */
+ private String sono;
+ /**
+ * 镀种
+ */
+ private String plate;
+ /**
+ * 工艺责任人
+ */
+ private String gyname;
+
+}
diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/dto/ShiftTransferDTO.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/dto/ShiftTransferDTO.java
new file mode 100644
index 00000000..5c499667
--- /dev/null
+++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/dto/ShiftTransferDTO.java
@@ -0,0 +1,12 @@
+package org.springblade.desk.produce.pojo.dto;
+
+import lombok.Data;
+
+@Data
+public class ShiftTransferDTO {
+ private Long woId;
+
+ private Long oldTsId;
+
+ private Long newTsId;
+}
diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/dto/TaskCompleteOrderDTO.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/dto/TaskCompleteOrderDTO.java
new file mode 100644
index 00000000..fd213e89
--- /dev/null
+++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/dto/TaskCompleteOrderDTO.java
@@ -0,0 +1,24 @@
+package org.springblade.desk.produce.pojo.dto;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * 调度任务分派 数据传输对象实体类
+ * @author litao
+ */
+@Data
+public class TaskCompleteOrderDTO {
+
+ @Schema(description = "id集合")
+ private List ddtIdList;
+
+ @Schema(description = "审理单号")
+ private String rsCode;
+
+ @Schema(description = "处理结果")
+ private String handleResult;
+
+}
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 ef27ce8b..b52bf5ee 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
@@ -15,6 +15,7 @@ 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.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.WorkPlanLog;
@@ -22,7 +23,6 @@ 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.IWorkPlanLogService;
-import org.springblade.job.pojo.entity.JobInfo;
import org.springframework.web.bind.annotation.*;
import java.util.Date;
@@ -103,6 +103,13 @@ public class DisTaskingController extends BladeController {
public R> workPlanLogPage(WorkPlanLog workPlanLog, Query query) {
return R.data(workPlanLogService.page(Condition.getPage(query), Wrappers.lambdaQuery(workPlanLog)));
}
+ @PostMapping("/taskCompleteOrder")
+ @ApiOperationSupport(order = 6)
+ @Operation(summary = "质量任务处理", description = "传入TaskCompleteOrderDTO")
+ public R taskCompleteOrder(@RequestBody TaskCompleteOrderDTO taskCompleteDTO) {
+ disTaskingService.taskCompleteOrder(taskCompleteDTO);
+ return R.success();
+ }
}
diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/controller/PlateAroundController.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/controller/PlateAroundController.java
index ee426dbf..9154caa3 100644
--- a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/controller/PlateAroundController.java
+++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/controller/PlateAroundController.java
@@ -5,25 +5,17 @@ import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.RequiredArgsConstructor;
-import org.apache.commons.lang3.StringUtils;
import org.springblade.core.boot.ctrl.BladeController;
import org.springblade.core.log.exception.ServiceException;
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.order.pojo.entity.YieldOrder;
-import org.springblade.desk.order.service.IYieldOrderService;
import org.springblade.desk.produce.pojo.dto.PlateAroundDto;
import org.springblade.desk.produce.pojo.dto.SavePlateAroundDto;
import org.springblade.desk.produce.pojo.entity.PlateAround;
-import org.springblade.desk.produce.pojo.entity.WorkOrder;
import org.springblade.desk.produce.pojo.entity.WorkPlan;
-import org.springblade.desk.produce.pojo.vo.AfterPlateInVO;
import org.springblade.desk.produce.pojo.vo.PlateAroundVO;
import org.springblade.desk.produce.service.IPlateAroundService;
-import org.springblade.desk.produce.service.IWorkOrderService;
-import org.springframework.beans.BeanUtils;
import org.springframework.web.bind.annotation.*;
import java.util.ArrayList;
@@ -113,4 +105,17 @@ public class PlateAroundController extends BladeController {
public R queryDelLogRecord(PlateAroundDto plateAroundDto, Query query) {
return R.data(plateAroundService.queryDelLogRecord(Condition.getPage(query), plateAroundDto));
}
+ @PostMapping(value = "/savePlateFrontEnter")
+ @ApiOperationSupport(order = 7)
+ @Operation(summary = "保存镀前入库", description = "")
+ public R savePlateFrontEnter(@RequestBody List plateArounds) {
+ plateAroundService.savePlateFrontEnter(plateArounds);
+ return R.success();
+ }
+ @PostMapping(value = "/getByPartCode")
+ @ApiOperationSupport(order = 8)
+ @Operation(summary = "获取零件信息", description = "")
+ public R getByPartCode(@RequestParam String partCode) {
+ return R.data(plateAroundService.getByPartCode(partCode));
+ }
}
diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/controller/PrWorkPlanController.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/controller/PrWorkPlanController.java
index fcac541c..c1fe2757 100644
--- a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/controller/PrWorkPlanController.java
+++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/controller/PrWorkPlanController.java
@@ -9,6 +9,7 @@ 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.tool.api.R;
+import org.springblade.desk.order.service.IYieldPlanService;
import org.springblade.desk.produce.pojo.vo.WorkPlanVO;
import org.springblade.desk.produce.service.IWorkPlanService;
import org.springframework.web.bind.annotation.GetMapping;
@@ -29,6 +30,8 @@ public class PrWorkPlanController extends BladeController {
private final IWorkPlanService workPlanService;
+ private final IYieldPlanService yieldPlanService;
+
/**
* 车间作业计划
*/
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
new file mode 100644
index 00000000..a99c6479
--- /dev/null
+++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/controller/WorkProcessController.java
@@ -0,0 +1,94 @@
+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
+ */
+@RestController
+@AllArgsConstructor
+@RequestMapping("/workProcess")
+@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)
+ @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/feign/ApsProduceClient.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/feign/ApsProduceClient.java
new file mode 100644
index 00000000..765ecf88
--- /dev/null
+++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/feign/ApsProduceClient.java
@@ -0,0 +1,38 @@
+package org.springblade.desk.produce.feign;
+
+import io.swagger.v3.oas.annotations.Hidden;
+import lombok.RequiredArgsConstructor;
+import org.springblade.core.tenant.annotation.NonDS;
+import org.springblade.desk.order.service.IYieldOrderService;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
+
+/**
+ * Feign 排产相关定时任务接口
+ *
+ * @author Chill
+ */
+@NonDS
+@Hidden()
+@RestController
+@RequiredArgsConstructor
+public class ApsProduceClient implements IApsProduceClient {
+
+ private final IYieldOrderService yieldOrderService;
+
+
+ @Override
+ @GetMapping(SYNC_ORDER_FROM_OLD_MES)
+ public Boolean syncOrderFromOldMes() {
+ // 同步生产订单
+ List cardNoList = yieldOrderService.syncYieldOrderFromOldMes();
+
+ // 推送同步结果,避免重复同步
+ yieldOrderService.syncYieldOrderResultToOldMes(cardNoList);
+
+ return Boolean.TRUE;
+ }
+
+}
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 ee879704..f2fc6084 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
@@ -1,8 +1,11 @@
package org.springblade.desk.produce.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
import org.springblade.desk.produce.pojo.entity.MacToolUse;
+import java.util.List;
+
/**
* 设备,工装使用记录 Mapper 接口
*
@@ -10,4 +13,5 @@ import org.springblade.desk.produce.pojo.entity.MacToolUse;
*/
public interface MacToolUseMapper extends BaseMapper {
+ List queryMacToolUse(IPage page, MacToolUse macToolUse);
}
diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/MacToolUseMapper.xml b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/MacToolUseMapper.xml
new file mode 100644
index 00000000..11a324c3
--- /dev/null
+++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/MacToolUseMapper.xml
@@ -0,0 +1,38 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
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 2fa7e0e8..a815a352 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
@@ -3,6 +3,7 @@ package org.springblade.desk.produce.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.springblade.core.mp.base.BaseService;
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.vo.ByCardNoByPlanVO;
@@ -22,4 +23,6 @@ public interface IDisTaskingService extends BaseService {
List getByCardNoByPlan(String cardNo);
List queryByWpIdlLst(Long wpId);
+
+ void taskCompleteOrder(TaskCompleteOrderDTO 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 22073f8f..4be9164b 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
@@ -1,5 +1,6 @@
package org.springblade.desk.produce.service;
+import com.baomidou.mybatisplus.core.metadata.IPage;
import org.springblade.core.mp.base.BaseService;
import org.springblade.desk.produce.pojo.entity.MacToolUse;
@@ -26,4 +27,6 @@ public interface IMacToolUseService extends BaseService {
* @param mtuList
*/
void unMacToolUseBind(List mtuList);
+
+ IPage queryMacToolUse(IPage page, MacToolUse macToolUse);
}
diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IPdaLoadService.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IPdaLoadService.java
index 4df91140..4597c67a 100644
--- a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IPdaLoadService.java
+++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IPdaLoadService.java
@@ -59,4 +59,6 @@ public interface IPdaLoadService extends BaseService {
List loadPrMacToolUseByMtnCode(String mtnCode);
void deletedProduceRun(String mtnCode);
+
+ public WorkOrder checkPrWorkOrder(String cardNo);
}
diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IPdaSaveService.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IPdaSaveService.java
index 1d4d2b28..9d577406 100644
--- a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IPdaSaveService.java
+++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IPdaSaveService.java
@@ -1,6 +1,8 @@
package org.springblade.desk.produce.service;
import org.springblade.core.mp.base.BaseService;
+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.SjEcBingCardVo;
@@ -58,4 +60,12 @@ public interface IPdaSaveService extends BaseService {
* @param unBingDeviceVo 解绑数据
*/
void sjDeviceUnBind(UnBingDeviceVo unBingDeviceVo);
+
+ void receiveOrder(MesRbRedoRoutDTO mesRbRedoRoutDTO);
+
+ void completeOrder(MesRbRedoRoutDTO mesRbRedoRoutDTO, String user);
+
+ void uploadPlan(List workPlanList);
+
+ void shiftTransfer(ShiftTransferDTO shiftTransferDTO);
}
diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IPlateAroundService.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IPlateAroundService.java
index 405d0f7a..45abe912 100644
--- a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IPlateAroundService.java
+++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IPlateAroundService.java
@@ -2,6 +2,7 @@ package org.springblade.desk.produce.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.springblade.core.mp.base.BaseService;
+import org.springblade.desk.dashboard.pojo.entity.DsPartEntity;
import org.springblade.desk.produce.pojo.dto.PlateAroundDto;
import org.springblade.desk.produce.pojo.dto.SavePlateAroundDto;
import org.springblade.desk.produce.pojo.entity.PlateAround;
@@ -33,4 +34,8 @@ public interface IPlateAroundService extends BaseService {
boolean deletePlateAround(Long id);
IPage queryDelLogRecord(IPage page, PlateAroundDto plateAroundDto);
+
+ void savePlateFrontEnter(List plateArounds);
+
+ DsPartEntity getByPartCode(String partCode);
}
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 2aa579b7..7414cf97 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
@@ -1,28 +1,33 @@
package org.springblade.desk.produce.service.impl;
import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
+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.desk.dashboard.pojo.entity.DsTaskingEntity;
+import org.springblade.desk.dashboard.service.IDsTaskingService;
import org.springblade.desk.produce.mapper.DisTaskingMapper;
import org.springblade.desk.produce.pojo.dto.TaskCompleteDTO;
-import org.springblade.desk.produce.pojo.entity.DisTasking;
-import org.springblade.desk.produce.pojo.entity.MakeRec;
-import org.springblade.desk.produce.pojo.entity.WorkOrder;
-import org.springblade.desk.produce.pojo.entity.WorkOrderRun;
+import org.springblade.desk.produce.pojo.dto.TaskCompleteOrderDTO;
+import org.springblade.desk.produce.pojo.entity.*;
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.IWorkOrderRunService;
import org.springblade.desk.produce.service.IWorkOrderService;
+import org.springblade.desk.produce.service.IWorkPlanService;
+import org.springblade.desk.quality.pojo.entity.WorkPlanItem;
+import org.springblade.desk.quality.service.IWorkPlanItemService;
import org.springblade.system.cache.UserCache;
import org.springblade.system.feign.IUserClient;
import org.springblade.system.pojo.entity.User;
import org.springframework.stereotype.Service;
+import java.util.Date;
import java.util.List;
/**
@@ -39,6 +44,12 @@ public class DisTaskingServiceImpl extends BaseServiceImpl queryByWpIdlLst(Long wpId) {
return baseMapper.queryByWpIdlLst(wpId);
}
+
+ @Override
+ public void taskCompleteOrder(TaskCompleteOrderDTO taskCompleteDTO) {
+ List ddtIds=taskCompleteDTO.getDdtIdList();
+ for (Long ddtId : ddtIds) {
+ DisTasking dsDisTasking = baseMapper.selectById(ddtId);
+ dsDisTasking.setDispatchTime(new Date());
+ dsDisTasking.setDispatchMan(AuthUtil.getUserId());
+ dsDisTasking.setRsCode(taskCompleteDTO.getRsCode());
+ dsDisTasking.setHandleResult(taskCompleteDTO.getHandleResult());
+ dsDisTasking.setDisTaskStatus(DisTasking.TASK_STATUS_COMPLETED);
+ DsTaskingEntity dsTaskingEntity = dsTaskingService.getById(dsDisTasking.getDtId());
+ // 通过零件号查询所有工艺变更的单子
+ if (dsDisTasking.getDtId() != null && dsTaskingEntity.getId() != null ) {
+ String partCode = dsTaskingEntity.getPartCode();
+ if (StringUtils.isNotBlank(partCode) && dsTaskingEntity.getTaskStatus().equals(DisTasking.TASK_STATUS_COMPLETED)) {
+ 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()");
+ //判定是否是检验项目,并且还有未检验
+ 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);
+ }
+ workOrderService.updateById(prWorkOrder);
+ }
+ }
+ }
+ }
+ }
+ }
}
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 b8ebd968..b4ca573a 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
@@ -1,5 +1,6 @@
package org.springblade.desk.produce.service.impl;
+import com.baomidou.mybatisplus.core.metadata.IPage;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springblade.core.mp.base.BaseServiceImpl;
@@ -73,6 +74,11 @@ public class MacToolUseServiceImpl extends BaseServiceImpl queryMacToolUse(IPage page, MacToolUse macToolUse) {
+ return page.setRecords(baseMapper.queryMacToolUse(page, macToolUse));
+ }
+
public static final int time2Integer(Date d) {
Calendar cal = Calendar.getInstance();
cal.setTime(d);
diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/PdaLoadServiceImpl.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/PdaLoadServiceImpl.java
index 9a7dbfa4..cdd47a9c 100644
--- a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/PdaLoadServiceImpl.java
+++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/PdaLoadServiceImpl.java
@@ -237,7 +237,7 @@ public class PdaLoadServiceImpl extends BaseServiceImpl WorkOrder.RUN_STATUS_RECEIVE) {
diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/PdaSaveServiceImpl.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/PdaSaveServiceImpl.java
index 8b36fb63..a7a0ae98 100644
--- a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/PdaSaveServiceImpl.java
+++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/PdaSaveServiceImpl.java
@@ -1,6 +1,8 @@
package org.springblade.desk.produce.service.impl;
import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.BeanUtils;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.google.common.collect.Lists;
import lombok.RequiredArgsConstructor;
@@ -10,13 +12,20 @@ import org.springblade.core.log.exception.ServiceException;
import org.springblade.core.mp.base.BaseServiceImpl;
import org.springblade.core.secure.utils.AuthUtil;
import org.springblade.desk.basic.service.IRelTeamSetUserService;
+import org.springblade.desk.dashboard.pojo.entity.BsProcessSetEntity;
+import org.springblade.desk.dashboard.pojo.entity.BsTeamSetEntity;
+import org.springblade.desk.dashboard.pojo.entity.PrReworkProcessEntity;
import org.springblade.desk.dashboard.service.*;
import org.springblade.desk.device.pojo.entity.FeiBaSetEntity;
import org.springblade.desk.device.pojo.entity.RackSetEntity;
import org.springblade.desk.device.service.IFeiBaSetService;
import org.springblade.desk.device.service.IRackSetService;
+import org.springblade.desk.order.pojo.entity.YieldOrder;
+import org.springblade.desk.order.service.IYieldOrderService;
import org.springblade.desk.produce.mapper.WorkPlanMapper;
+import org.springblade.desk.produce.pojo.dto.MesRbRedoRoutDTO;
import org.springblade.desk.produce.pojo.dto.PrMacTooUseSpec;
+import org.springblade.desk.produce.pojo.dto.ShiftTransferDTO;
import org.springblade.desk.produce.pojo.entity.*;
import org.springblade.desk.produce.pojo.vo.SjEcBingCardVo;
import org.springblade.desk.produce.pojo.vo.UnBingDeviceVo;
@@ -25,8 +34,10 @@ import org.springblade.desk.produce.service.*;
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.ProcessSetEntity;
import org.springframework.stereotype.Service;
+import java.time.ZoneId;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
@@ -79,6 +90,10 @@ public class PdaSaveServiceImpl extends BaseServiceImpl rpList = listByReworkCode(rr.getRedono(), rr.getSeqno(), rr.getPrtno(), rr.getSplcode());
+ if (rpList == null && rpList.size() == 0) {
+ //修改erp返工单工艺状态为无工艺
+ //prReworkProcessDao.receiveOrder(rr, user.getLdapName(), 0);
+ }else {
+ //查询原订单
+ // WorkOrder wo = prWorkOrderService.getWorkOrderUniqueRec(rr.getPrtno(), rr.getSplcode(), rr.getSono());
+ WorkOrder wo =workOrderService.getOne(Wrappers.lambdaQuery().eq(WorkOrder::getBatchNo, rr.getSplcode()));
+ //syDockingLogService.sendDockingLog("查询原单", rr.getRedono(), rr.getPrtno()+","+rr.getSplcode()+","+rr.getSono());
+ if (wo == null) {
+ wo = workOrderService.getOne(Wrappers.lambdaQuery().eq(WorkOrder::getBatchNo, rr.getSplcode()));
+ //syDockingLogService.sendDockingLog("查询原单", rr.getRedono(), rr.getPrtno()+","+rr.getSplcode());
+ }
+ memo = memo + "物料号:" + rr.getPrtno() + "批次号:" + rr.getSplcode() + " 订单号:" + rr.getSono() + " ---- ";
+ YieldOrder yieldOrder;
+ WorkOrder newWo = new WorkOrder();
+ //zxh 20250820 返修发现部门为3400的才进行原单覆盖
+ if (wo != null && rr.getUsedept().equals("3400")) {
+ memo = memo + "找到原单,woId:" + wo.getId() + " ---- ";
+ yieldOrder = yieldOrderService.getYoByCardNo(wo.getCardNo());
+ List wpList = null;
+ //返工路线是3400-3400内部返工的,需要COPY原订单且不更新上账时间和上账人,反之则走非车间内部返工处理
+ if (StringUtils.isNotBlank(rr.getDeptcode()) && rr.getDeptcode().trim().equals("3400-3400")) {
+ //顺延原WO号
+ //newWo.setWoCode(prWorkOrderCodeService.nextCode(yieldOrder.getPoCode()));
+ newWo.setWpId(wo.getWpId());
+ //zxh 20250520 返修路线为3400-3400的返修订单在车间订单级记录返修订单接收人
+ newWo.setMemo("返工路线是3400-3400,记录返修接收人为" + rr.getRecman());
+ //非3400返工
+ memo = memo + "返工路线是3400-3400 ---- ";
+ log.info("3400-3400新车间订单:woCode:{},oldYoCode:{}", newWo.getWoCode(), yieldOrder.getYoCode());
+ }else {
+ //copy原生产订单,更新单号和关键信息
+ YieldOrder newYieldOrder = yieldOrder;
+ newYieldOrder.setYoCode(null);
+ newYieldOrder.setDemandDate(new Date());
+ //如果接收人不为空,则默认此接收人和接收时间
+ if (StringUtils.isNotBlank(rr.getRecman())) {
+ //user = epDosingRecDao.getUserByLdapName(rr.getRecman().trim());
+ }
+ //zxh 20241128 接收人赋值为返修订单接收人
+ newYieldOrder.setReceiveUser(Long.valueOf(rr.getRecman()));
+// newYieldOrder.setFailureTime(StringUtils.isNotBlank(rr.getRecdate()) ?
+// DateTime.parse(rr.getRecdate()) : new Date());
+ newYieldOrder.setMemo(rr.getRemark());
+ newYieldOrder.setReworkMemo(rr.getDetail());
+ //newYieldOrder.setPoQty(Double.valueOf(rr.getAmount()));
+ newYieldOrder.setPrimaryCraft(rr.getDeptcode());
+ //newYieldOrder.setSyncTime(new Date());
+ newYieldOrder.setReworkCode(rr.getRedono());
+ newYieldOrder.setReworkNo(Long.valueOf(rr.getSeqno()));
+ newYieldOrder.setYoCode(rr.getRedono());
+ //zxh 20250522 找到原单,非3400-3400,复制pj后不再更改pocode
+ //newYieldOrder.setPoCode(rr.getRedono());
+ newYieldOrder.setProduceBool(Boolean.TRUE);
+ // newYieldOrder.setCurStatus(PjYieldOrder.CUR_STATUS_PROCESSING);
+ //周新昊 20240912 返修订单找到原单复制pj后为使用部门代码赋值
+ //newYieldOrder.setUseDeptcode(rr.getUsedept());
+ yieldOrderService.save(newYieldOrder);
+ log.info("不是厂内,保存新生产订单:yoId{},yoCode{}", newYieldOrder.getId(), newYieldOrder.getYoCode());
+ //原订单已经入库,则更新接收人、接收时间并且车间订单号不顺延原订单号,反之则需要顺延原订单号
+ if (wo.getPutStoreTime() != null) {
+ //newWo.setWoCode(prWorkOrderCodeService.nextCode(rr.getRedono()));
+ newWo.setReInStore("1");
+ //newYieldOrder.setPoCode(rr.getRedono());
+ } else {
+ // newWo.setWoCode(prWorkOrderCodeService.nextCode(yieldOrder.getPoCode()));
+ }
+ //绑定新车间订单的接收信息
+ //newWo.setPjYieldOrder(newYieldOrder);
+
+ //更新原生产订单状态为已关闭
+ YieldOrder oldYo = yieldOrderService.getById(wo.getYoId());
+ if (oldYo != null) {
+ // oldYo.setCurStatus(PjYieldOrder.CUR_STATUS_VOIDED);
+ oldYo.setCustodian(rr.getRecman());
+ yieldOrderService.updateById(oldYo);
+ }
+ memo = memo + "新生产订单,yoId:" + newYieldOrder.getId() + " ---- ";
+ }
+ //返工订单流程卡号重新生成
+ //newWo.setCardNo(prWorkOrderService.nextCardNo(wo.getPjYieldOrder().getPoCode(), wo.getCardNo()));
+ newWo.setBatchNo(rr.getSplcode());
+ newWo.setMakeQty(Double.valueOf(rr.getAmount()));
+ newWo.setRunStatus(WorkOrder.RUN_STATUS_NORMAL);
+ newWo.setPriority(wo.getPriority());
+ newWo.setReworkCode(rr.getRedono());
+ newWo.setReworkNo(rr.getSeqno().intValue());
+ newWo.setOem("0");
+ newWo.setOemOut("1");
+ //newWo.setOemType(FlowBusinessBean.STATUS_NEW);
+ newWo.setPlanner(wo.getPlanner());
+ newWo.setDispatcher(wo.getDispatcher());
+ newWo.setReworkMemo(rr.getDetail());
+ newWo.setDemandDate(new Date());
+ workOrderService.save(newWo);
+ log.info("保存新车间订单:woId{},woCode{}", newWo.getId(), newWo.getWoCode());
+ //组装生产工序
+ wpList = new ArrayList<>(rpList.size());
+ WorkPlan wp;
+ for (PrReworkProcessEntity rp : rpList) {
+ wp = new WorkPlan();
+ wp.setOrders(rp.getProcessNo());
+ wp.setHourQuota(rp.getHourQuota());
+ wp.setMakeMemo(rp.getMakeMemo());
+ wp.setStatus(WorkPlan.STATUS_NO_START);
+ wp.setStartTime(rp.getStartTime().toInstant()
+ .atZone(ZoneId.systemDefault()) // 指定时区(通常用系统默认)
+ .toLocalDateTime());
+ wp.setEndTime(rp.getEndTime().toInstant()
+ .atZone(ZoneId.systemDefault()) // 指定时区(通常用系统默认)
+ .toLocalDateTime());
+ wp.setRpId(rp.getId());
+ if (rp.getMakeTeam() != null) {
+ wp.setMakeTeam(rp.getMakeTeam());
+ wp.setOem("0");
+ } else {
+ wp.setOem(rp.getOcName());
+ wp.setOem("1");
+ }
+ wpList.add(wp);
+ }
+ }
+ }
+ }
+
+ private List listByReworkCode(String redono, Integer seqno, String prtno, String splcode) {
+ List prReworkProcessList = new ArrayList<>();
+ // 首先根据返工单号+零件号——批次号去查
+ prReworkProcessList = null; //prReworkProcessDao.listByReworkCode(reworkCode, reworkNo, partCode, batchNo);
+ if (prReworkProcessList != null && prReworkProcessList.size() > 0) {
+ return prReworkProcessList;
+ }
+ return prReworkProcessList;
+ }
+
+ public void completeOrder(MesRbRedoRoutDTO rr, String userName) {
+ WorkOrder wo =workOrderService.getOne(Wrappers.lambdaQuery(WorkOrder.class)
+ .eq(WorkOrder::getBatchNo, rr.getSplcode()));
+ if (wo != null) {
+ //记录返工单号
+ wo.setQcReworkCode(rr.getRedono());
+ //如果原车间订单状态小于已交接,就更改原订单状态为返工,否则不更改
+ if (wo.getRunStatus() < WorkOrder.RUN_STATUS_HANDOVER) {
+ //修改旧订单状态
+ workOrderService.updateStatus(null,WorkOrder.RUN_STATUS_REWORK,wo.getId(), null);
+ }
+ // 如果有 FatherYoId 有值,则代表他是子件 修改部件状态为返工
+ YieldOrder pjYieldOrder = yieldOrderService.getById(wo.getYoId());
+ if (pjYieldOrder.getFatherYoId() != null) {
+ List fatherPrWorkOrderList = workOrderService.list(Wrappers.lambdaQuery(WorkOrder.class).eq(WorkOrder::getYoId, pjYieldOrder.getFatherYoId()));
+ if (fatherPrWorkOrderList != null && fatherPrWorkOrderList.size() > 0) {
+ for (WorkOrder fatherPrWorkOrder : fatherPrWorkOrderList) {
+ // 记录原状态
+ fatherPrWorkOrder.setOldRunStatus(fatherPrWorkOrder.getRunStatus());
+ // 修改为返工
+ fatherPrWorkOrder.setRunStatus(WorkOrder.RUN_STATUS_REWORK);
+ workOrderService.updateById(fatherPrWorkOrder);
+ }
+ }
+ }
+ }else {
+
+ }
+ this.completeOrder(rr, userName);
+ }
+
+ @Override
+ public void uploadPlan(List list) {
+ if (list.size() == 0) {
+ return;
+ }
+ WorkPlan prWorkPlan;
+ List ptLst;
+ Long woId = null;
+ for (WorkPlan item : list) {
+
+ if (item.getMakeTeam() == null || item.getId() == null) {
+ continue;
+ }
+
+ //获取车间订单Id
+ woId = item.getWoId();
+
+ prWorkPlan = baseMapper.selectById(item.getWoId());
+ if (item.getReceiveMan() != null) {
+ prWorkPlan.setReceiveMan(item.getReceiveMan());
+ } else {
+ prWorkPlan.setReceiveMan(null);
+ }
+ //判定工序是否特殊工序,如果是,则附属班组存在值
+ if (prWorkPlan.getOcId() == null && prWorkPlan.getSubsidiaryTeam() == null && prWorkPlan.getOcId() == null) {
+ ptLst = bsProcedureTeamService.findBsProcedureTeamByPpsId(prWorkPlan.getPpsId());
+ if (ptLst != null && ptLst.size() > 0) {
+ prWorkPlan.setSubsidiaryTeam(ptLst.get(0).getPpsId());
+ }
+ }
+ if (prWorkPlan.getOem().equals("1")) {
+ prWorkPlan.setOem("0");
+ prWorkPlan.setOem(null);
+ }
+ prWorkPlan.setMakeTeam(item.getMakeTeam());
+ // 2025-07-23 线上迁移修改注释掉代码
+ if(item.getPapers() != null && (item.getMakeTeam() != null || item.getReceiveMan() != null)){
+ WorkPlanLog log = new WorkPlanLog();
+ log.setUpdateUser(AuthUtil.getUser().getUserId());
+ log.setUpdateTime(new Date());
+ log.setWoId(woId);
+ workPlanLogService.save(log);
+ }
+ }
+
+ }
+
+ @Override
+ public void shiftTransfer(ShiftTransferDTO shiftTransferDTO) {
+ List wpList = baseMapper.selectList(new QueryWrapper().eq("wo_id", shiftTransferDTO.getWoId()));
+
+ BsTeamSetEntity makeTeam = new BsTeamSetEntity();
+ makeTeam.setId(shiftTransferDTO.getNewTsId());
+ BsProcessSetEntity processSet = bsProcessSetService.getOne(Wrappers.lambdaQuery(BsProcessSetEntity.class).eq(BsProcessSetEntity::getId, shiftTransferDTO.getNewTsId()));
+ wpList.forEach(wp -> {
+ if (processSet.getIsSpecial() == null) {
+ return;
+ }
+ if (WorkPlan.STATUS_NO_START.equals(wp.getStatus())) {
+ wp.setMakeTeam(makeTeam.getId());
+ }
+ });
+ // prWorkOrderAdjustService.saveAdjust(woId, oldTsId, newTsId, userInfo);
+ //更新订单主加工单位
+ // prWorkOrderService.updateHostWorkUnit(woId);
+ }
+
private void unBindBsRackSet(RackSetEntity bsRackSet) {
if (bsRackSet != null) {
bsRackSet.setBindQty((short) 0);
diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/PlateAroundServiceImpl.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/PlateAroundServiceImpl.java
index 02b9484d..683ed52b 100644
--- a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/PlateAroundServiceImpl.java
+++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/PlateAroundServiceImpl.java
@@ -11,28 +11,33 @@ import org.apache.commons.lang3.StringUtils;
import org.springblade.core.log.exception.ServiceException;
import org.springblade.core.mp.base.BaseServiceImpl;
import org.springblade.core.mp.support.Condition;
+import org.springblade.core.secure.BladeUser;
import org.springblade.core.secure.utils.AuthUtil;
+import org.springblade.desk.dashboard.pojo.entity.BsTeamSetEntity;
+import org.springblade.desk.dashboard.pojo.entity.DsPartEntity;
+import org.springblade.desk.dashboard.service.IDsPartService;
import org.springblade.desk.order.pojo.entity.YieldOrder;
import org.springblade.desk.order.service.IYieldOrderService;
import org.springblade.desk.produce.mapper.PlateAroundMapper;
import org.springblade.desk.produce.pojo.dto.PlateAroundDto;
import org.springblade.desk.produce.pojo.dto.SavePlateAroundDto;
-import org.springblade.desk.produce.pojo.entity.PlateAround;
-import org.springblade.desk.produce.pojo.entity.PlateAroundDelLog;
-import org.springblade.desk.produce.pojo.entity.WorkOrder;
-import org.springblade.desk.produce.pojo.entity.WorkPlan;
+import org.springblade.desk.produce.pojo.entity.*;
import org.springblade.desk.produce.pojo.vo.AfterPlateInVO;
import org.springblade.desk.produce.pojo.vo.PlateAroundVO;
-import org.springblade.desk.produce.service.IPlateAroundDelLogService;
-import org.springblade.desk.produce.service.IPlateAroundService;
-import org.springblade.desk.produce.service.IWorkOrderService;
+import org.springblade.desk.produce.service.*;
import org.springblade.job.pojo.entity.JobInfo;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
+import java.text.SimpleDateFormat;
+import java.time.LocalDateTime;
+import java.util.ArrayList;
+import java.util.Date;
import java.util.List;
+import static com.fasterxml.jackson.databind.type.LogicalType.DateTime;
+
/**
* 镀前镀后 服务实现类
*
@@ -49,6 +54,15 @@ public class PlateAroundServiceImpl extends BaseServiceImpl queryByReadStatus(IPage page, PlateAroundDto plateAroundDto) {
return page.setRecords(baseMapper.queryByReadStatus(page, plateAroundDto));
@@ -164,4 +178,224 @@ public class PlateAroundServiceImpl extends BaseServiceImpl wrapper = Wrappers.lambdaQuery(PlateAroundDelLog.class);
return plateAroundDelLogService.page(page, wrapper);
}
+
+ @Override
+ public void savePlateFrontEnter(List list) {
+ if (list == null || list.size() == 0) {
+ return;
+ }
+ int next = 0;
+ List woList = new ArrayList<>(list.size());
+ WorkOrder wo;
+ Date date = new Date();
+ Short paType = PlateAround.CUR_STATUS_NEW;
+ for (PlateAround plateAround : list) {
+ this.savePlateAround(AuthUtil.getUser(), plateAround, paType, next, Boolean.FALSE);
+ if (paType.equals(PlateAround.AFTER_PLAN_IN)) {
+ WorkPlan prWorkPlan = workPlanService.getById(plateAround.getWpId());
+ wo = workOrderService.getById(prWorkPlan.getWoId());
+ wo.setHandoverTime( date);
+ woList.add(wo);
+ // 计算主工序对应的金额
+ //bsTeamWagesLevelService.countTeamSalary(wo.getWoId());
+ }
+ if (paType.equals(PlateAround.AFTER_PLAN_IN)) {
+ // prHandoverRecordService.saveHandoverRecord(woList, AuthUtil.getUser());
+ }
+ }
+ }
+
+ @Override
+ public DsPartEntity getByPartCode(String partCode) {
+ return dsPartService.getOne(Wrappers.lambdaQuery().eq(DsPartEntity::getPartCode, partCode));
+ }
+
+ private void savePlateAround(BladeUser user, PlateAround plateAround, Short paType, int next, Boolean aTure) {
+ PlateAround newPa = null;
+ PlateAround oldPa=null;
+ Date date = new Date();
+ WorkPlan wp = workPlanService.getById(plateAround.getWpId());
+ if (paType.equals(PlateAround.BEFORE_PLAT_IN) || paType.equals(PlateAround.AFTER_PLAN_IN)) {
+ plateAround.setPaType(paType);
+ plateAround.setCreateUser(user.getUserId());
+ plateAround.setCreateTime(date);
+ if (aTure) {
+ plateAround.setPaCode(this.nextCode(paType, next));
+ plateAround.setMakeTime(new Date());
+ plateAround.setMakeMan(user.getUserId());
+ }
+ plateAround = this.updatePrPlateAround(plateAround);
+ baseMapper.insert(plateAround);
+ if (paType.equals(PlateAround.BEFORE_PLAT_IN)) {
+ WorkPlan nextWorkPlan = workPlanService.getById(wp.getNextWpId());
+ if (nextWorkPlan != null && nextWorkPlan.getNextWpId()== null) {
+ throw new ServiceException("pda.nextWorkPlan.noNext");
+ }
+ WorkOrder prWorkOrder = workOrderService.getById(wp.getWoId());
+ pdaLoadService.checkPrWorkOrder(prWorkOrder.getCardNo());
+
+ //下序不能为空,并且下序班组或者供应商都没有值的情况下再进行自动分派
+ if (nextWorkPlan != null && nextWorkPlan.getMakeTeam() == null && nextWorkPlan.getOcId() == null) {
+ //调用自动分派处理类
+ //pjAutomaticDispatchService.beforePlatingAutomatic(prWorkOrder.getCardNo(), pfUserInfo);
+ } else {
+ // 如果下序是外协,将订单发外协的标记标为未发送
+ if (nextWorkPlan != null && nextWorkPlan.getOcId() != null && nextWorkPlan.getMakeTeam() == null) {
+ prWorkOrder.setOem("1");
+ prWorkOrder.setOemOut("0");
+ if (prWorkOrder.getOcId()== null) {
+ prWorkOrder.setTsId(null);
+ prWorkOrder.setOcId(nextWorkPlan.getOcId());
+ }
+ prWorkOrder.setOemType(WorkOrder.OEM_TYPE_WHOLE);
+ nextWorkPlan.setEndTime(LocalDateTime.now());
+ workPlanService.updateById(nextWorkPlan);
+ //产生外协生产进度记录信息
+ WorkOrderRun wr = new WorkOrderRun();
+ wr.setWoId(prWorkOrder.getId());
+ wr.setWoCode(prWorkOrder.getWoCode());
+ wr.setRunType(WorkOrderRun.RUN_TYPE_1);
+ wr.setInTeam(wp.getMakeTeam());
+ wr.setInCustomer(nextWorkPlan.getOcId());
+ wr.setMemo("入库派外协");
+ wr.setCreateTime(date);
+ wr.setCreateUser(user.getUserId());
+ wr.setUpdateTime(date);
+ wr.setUpdateUser(user.getUserId());
+ wr.setStatus(Integer.valueOf(WorkOrderRun.RUN_STATUS_UNDER));
+ wr.setSystemData("1");
+ wr.setCollaborate("1");
+ wr.setRunStatus(WorkOrderRun.RUN_STATUS_UNDER);
+ workOrderRunService.save(wr);
+ prWorkOrder.setWorId(wr.getId());
+ workOrderService.updateById(prWorkOrder);
+ }
+ }
+ wp = workPlanService.getById(wp.getId());
+ //通知下序进行镀前出库
+ if (nextWorkPlan.getMakeTeam() != null) {
+ String str = "流程卡号:【" + prWorkOrder.getCardNo() + "】,零件号:【" + prWorkOrder
+ .getPartCode() + "】批次号:【" + prWorkOrder.getBatchNo() + "】,已入镀前库,请及时处理!";
+// pfMessageService.sendMessage(str, nextWorkPlan.getMakeTeam().getTeamLeader().getUserId(),
+// PfMessageType.MTCODE_0200, null, Boolean.FALSE, null);
+ }
+ //镀前入库后默认拉满当前工序完成进度
+ wp.setFactEndTime(date);
+ workPlanService.updateById(wp);
+ }
+ if (paType.equals(PlateAround.AFTER_PLAN_IN)) {
+ WorkOrder prWorkOrder = workOrderService.getById(wp.getWoId());
+ pdaLoadService.checkPrWorkOrder(prWorkOrder.getCardNo());
+ }
+ }else {
+ WorkPlan nextWorkPlan = workPlanService.getById(plateAround.getWpId());
+ if (wp.getNextWpId() != null && nextWorkPlan.getNextWpId() == null) {
+ throw new ServiceException("pda.nextWorkPlan.noNext");
+ }
+ //如果是镀前出库,判定是否下序有班组或者供应商,若没有重新自动分派
+ if (nextWorkPlan.getNextWpId() != null) {
+ if (nextWorkPlan.getMakeTeam() == null && nextWorkPlan.getOcId() == null) {
+ //调用自动分派处理类
+ WorkOrderRun wor = workOrderRunService.getById(nextWorkPlan.getWoId());
+ // pjAutomaticDispatchService.beforePlatingAutomatic(wp.getPrWorkOrder().getCardNo(), pfUserInfo);
+ wp = workPlanService.getById(wp.getId());
+ //如果当前序是供应商,下序分派至班组(不是检验),或者其他供应商则调用erp关闭订单(待定)
+ if (nextWorkPlan.getOcId() != null && nextWorkPlan.getNextWpId() != null) {
+ if (nextWorkPlan.getPpsId()!= null) {
+ if (StringUtils.isNotBlank(wor.getDeliverKey())) {
+ //调用erp检验接口
+// prWorkCheckService.checkCompleteErpBackFill(wor.getWoCode(), wor.getDeliverKey(), wp.getWorkQty(),
+// 0, pfUserInfo);
+ }
+ }
+ }
+ //如果下序供应商不为空,则代表存在原有供应商,则根据此供应商获取最后一个该供应商未关闭的运行记录,并绑定
+ }else if (wp.getNextWpId() != null &&nextWorkPlan.getOcId() != null) {
+ WorkOrderRun prWorkOrderRun =workOrderRunService.getById(nextWorkPlan.getOcId());
+ if (prWorkOrderRun != null) {
+ WorkOrder workOrder = workOrderService.getById(prWorkOrderRun.getWoId());
+ workOrder.setWorId(prWorkOrderRun.getId());
+ workOrderService.updateById(workOrder);
+ //改回下达状态,让调度收回
+ prWorkOrderRun.setRunStatus(WorkOrderRun.RUN_STATUS_ISSUED);
+ workOrderRunService.updateById(prWorkOrderRun);
+ } else {
+ throw new ServiceException("pda.dataFormat.error");
+ }
+ }
+ }
+ BeanUtils.copyProperties(plateAround, newPa);
+ newPa.setPaCode(plateAround.getPaCode());
+ newPa.setPaType(paType);
+ newPa.setCreateUser(user.getUserId());
+ newPa.setCreateTime(date);
+ newPa.setPaCode(this.nextCode(paType, next));
+ if (aTure) {
+ newPa.setMakeTime(date);
+ newPa.setMakeMan(user.getUserId());
+ }
+ newPa.setWpId(wp.getNextWpId());
+
+ newPa = this.updatePrPlateAround(newPa);
+ baseMapper.insert(newPa);
+ oldPa = baseMapper.selectById(plateAround.getId());
+ oldPa.setCurStatus(PlateAround.CUR_STATUS_OK);
+ }
+ next++;
+ }
+
+ private PlateAround updatePrPlateAround(PlateAround plateAround) {
+ BsTeamSetEntity makeTeam;
+ // BsOemCustomer oemCustomer;
+ makeTeam = null;
+ // oemCustomer = plateAround.getOemCustomer();
+ if (makeTeam != null && makeTeam.getId() == null) {
+ plateAround.setMakeMan(null);
+ }
+// if (oemCustomer != null && oemCustomer.getOcId() == null) {
+// plateAround.setOemCustomer(null);
+// }
+ return plateAround;
+ }
+
+ private String nextCode(Short paType, int next) {
+ String prefix = null;
+ if (paType.equals(PlateAround.BEFORE_PLAT_IN)) {
+ // 镀前入库
+ prefix = "FE-";
+ } else if (paType.equals(PlateAround.BEFORE_PLAN_OUT)) {
+ // 镀前出库
+ prefix = "FI-";
+ } else if (paType.equals(PlateAround.AFTER_PLAN_IN)) {
+ // 镀后入库
+ prefix = "AE-";
+ }
+ // 自增总长度
+ int len = 3;
+ // 自增值
+ int num = 0;
+ // 编码模式
+ String codePattern = prefix + new SimpleDateFormat("yyyyMMdd").format(new Date());
+ // 当前模式下最大编码
+ List plateAroundList= baseMapper.selectList(Wrappers.lambdaQuery().
+ likeLeft(PlateAround::getPaCode, codePattern).orderByAsc(PlateAround::getPaCode));
+ String maxCode = plateAroundList.size() > 0 ? plateAroundList.get(0).getPaCode() : null;
+ if (maxCode != null) {
+ num = Integer.parseInt(maxCode.substring(codePattern.length()));
+ }
+ num = num + 1 + next;
+ // 下个编码
+ String code = codePattern
+ + prefix(String.valueOf(num), "0", len);
+ return code;
+ }
+ public static final String prefix(String StringToFix, String fixChar, int targetLen) {
+ int len = StringToFix.length();
+
+ for(int i = 0; i < targetLen - len; i += fixChar.length()) {
+ StringToFix = fixChar + StringToFix;
+ }
+
+ return StringToFix;
+ }
}