生产管理修改

liweidong
李涛 2 days ago
parent eee551485c
commit fb5d864e48
  1. 14
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/dto/WorkPlanPreserveDTO.java
  2. 44
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/entity/WorkPlanPreserve.java
  3. 37
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/vo/AllWorkPlanVO.java
  4. 30
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/controller/DisTaskingController.java
  5. 2
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/WorkPlanMapper.java
  6. 16
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/WorkPlanMapper.xml
  7. 14
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/WorkPlanPreserveMapper.java
  8. 9
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IDisTaskingService.java
  9. 2
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IHandoverRecordService.java
  10. 4
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IWorkOrderService.java
  11. 13
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IWorkPlanPreserveService.java
  12. 3
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IWorkPlanService.java
  13. 228
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/DisTaskingServiceImpl.java
  14. 5
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/HandoverRecordServiceImpl.java
  15. 19
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/WorkOrderServiceImpl.java
  16. 24
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/WorkPlanPreserveServiceImpl.java
  17. 6
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/WorkPlanServiceImpl.java

@ -0,0 +1,14 @@
package org.springblade.desk.produce.pojo.dto;
import lombok.Data;
/**
* @author litao
*/
@Data
public class WorkPlanPreserveDTO {
private String memo;
private Long wpId;
}

@ -0,0 +1,44 @@
package org.springblade.desk.produce.pojo.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.springblade.core.mp.base.BaseEntity;
import java.util.Date;
/**
* 车间作业计划回退记录 实体类
* @author litao
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("MES_WORK_PLAN_PRESERVE")
public class WorkPlanPreserve extends BaseEntity {
@Schema(description = "流程卡号")
private String cardNo;
@Schema(description = "车间订单号")
private String woCode;
@Schema(description = "零件号")
private String partCode;
@Schema(description = "批次号")
private String batchNo;
@Schema(description = "回退工序")
private String ppsName;
@Schema(description = "回退工序号")
private String orders;
@Schema(description = "备注")
private String memo;
@Schema(description = "修改人")
private String updateName;
}

@ -0,0 +1,37 @@
package org.springblade.desk.produce.pojo.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
/**
* 订单工序试图 视图实体类
* @author litao
*/
@Data
public class AllWorkPlanVO {
@Schema(description = "wpId")
private Long wpId;
@Schema(description = "流程卡号")
private String cardNo;
@Schema(description = "车间订单号")
private String woCode;
@Schema(description = "零件号")
private String partCode;
@Schema(description = "批次号")
private String batchNo;
@Schema(description = "工序名称")
private String ppsName;
@Schema(description = "工序号")
private String orders;
@Schema(description = "提交备注")
private String memo;
}

@ -15,14 +15,9 @@ 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.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.dto.UploadPlanDto;
import org.springblade.desk.produce.pojo.dto.*;
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.pojo.vo.WorkOrderAdjustVO;
import org.springblade.desk.produce.pojo.vo.*;
import org.springblade.desk.produce.service.IDisTaskingService;
import org.springblade.desk.produce.service.IPdaSaveService;
import org.springblade.desk.produce.service.IWorkOrderAdjustService;
@ -176,4 +171,25 @@ public class DisTaskingController extends BladeController {
return R.status(workOrderAdjustService.markComplete(Func.toLongList(ids)));
}
@GetMapping("/getByCardNoByPlanAll")
@ApiOperationSupport(order = 13)
@Operation(summary = "根据流程卡查询车间作业计划数据(所有)", description = "根据流程卡查询车间作业计划数据(所有)")
public R<List<AllWorkPlanVO>> getByCardNoByPlanAll(String cardNo) {
return R.data(disTaskingService.getByCardNoByPlanAll(cardNo));
}
@PostMapping("/returnThisProcess")
@ApiOperationSupport(order = 14)
@Operation(summary = "订单回退至此工序")
public R returnThisProcess(@RequestBody WorkPlanPreserveDTO workPlanPreserveDTO) {
return R.status(disTaskingService.returnThisProcess(workPlanPreserveDTO));
}
@GetMapping("/getWorkPlanPreserve")
@ApiOperationSupport(order = 15)
@Operation(summary = "获取回退记录")
public R<List<WorkPlanPreserve>> getWorkPlanPreserve(String cardNo) {
return R.data(disTaskingService.getWorkPlanPreserve(cardNo));
}
}

@ -93,4 +93,6 @@ public interface WorkPlanMapper extends BaseMapper<WorkPlan> {
List<WorkPlanProVO> getWorkOrderProcess(String cardNo);
List<BsSalaryCalculationVO> selectBsSalaryCalculationPage(IPage<BsSalaryCalculationVO> page, BsSalaryCalculationDTO bsSalaryCalculation);
List<AllWorkPlanVO> getByCardNoByPlanAll(Long id);
}

@ -555,5 +555,21 @@
</where>
</select>
<select id="getByCardNoByPlanAll" resultType="org.springblade.desk.produce.pojo.vo.AllWorkPlanVO">
SELECT
b.CARD_NO AS cardNo,
b.WO_CODE AS woCode,
b.PART_CODE AS partCode,
b.BATCH_NO AS batchNo,
a.ID AS wpId,
a.orders AS orders,
c.NAME AS ppsName
FROM
mes_work_plan a
INNER JOIN mes_work_order b ON a.WO_ID = b.ID
LEFT JOIN BS_PROCESS_SET c ON a.PPS_ID = c.ID
WHERE a.WO_ID = #{id} AND b.IS_DELETED = 0
ORDER BY a.ORDERS
</select>
</mapper>

@ -0,0 +1,14 @@
package org.springblade.desk.produce.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.springblade.desk.produce.pojo.entity.WorkPlanPreserve;
/**
* 车间作业计划回退记录 Mapper 接口
*
* @author BladeX
*/
public interface WorkPlanPreserveMapper extends BaseMapper<WorkPlanPreserve> {
}

@ -4,8 +4,11 @@ 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.dto.WorkPlanPreserveDTO;
import org.springblade.desk.produce.pojo.entity.DisTasking;
import org.springblade.desk.produce.pojo.entity.MakeRec;
import org.springblade.desk.produce.pojo.entity.WorkPlanPreserve;
import org.springblade.desk.produce.pojo.vo.AllWorkPlanVO;
import org.springblade.desk.produce.pojo.vo.ByCardNoByPlanVO;
import org.springblade.desk.produce.pojo.vo.TaskCompleteVO;
@ -29,4 +32,10 @@ public interface IDisTaskingService extends BaseService<DisTasking> {
boolean disTechnician(TaskCompleteDTO taskCompleteDTO);
boolean syncDisTasking(boolean isAll);
List<AllWorkPlanVO> getByCardNoByPlanAll(String cardNo);
boolean returnThisProcess(WorkPlanPreserveDTO workPlanPreserveDTO);
List<WorkPlanPreserve> getWorkPlanPreserve(String cardNo);
}

@ -24,4 +24,6 @@ public interface IHandoverRecordService extends BaseService<HandoverRecord> {
String nextCode(String codePattern);
boolean rbTransferOrder();
void returnHandoverRecord(String hrCode, String partCode, String batchNo);
}

@ -282,4 +282,8 @@ public interface IWorkOrderService extends BaseService<WorkOrder> {
* @return 分配信息
*/
Map<String, Object> queryAllocationStatistics(AllocationMessPageDTO dto);
WorkOrder getWorkOrderByCardNoAll(String cardNo);
void returnOemErpByWxno(String wxNo);
}

@ -0,0 +1,13 @@
package org.springblade.desk.produce.service;
import org.springblade.core.mp.base.BaseService;
import org.springblade.desk.produce.pojo.entity.WorkPlanPreserve;
/**
* 车间作业计划回退记录 服务类
*
* @author BladeX
*/
public interface IWorkPlanPreserveService extends BaseService<WorkPlanPreserve> {
}

@ -9,6 +9,7 @@ import org.springblade.desk.efficiency.pojo.dto.BsSalaryCalculationDTO;
import org.springblade.desk.efficiency.pojo.vo.BsSalaryCalculationVO;
import org.springblade.desk.produce.pojo.entity.WorkOrder;
import org.springblade.desk.produce.pojo.entity.WorkPlan;
import org.springblade.desk.produce.pojo.vo.AllWorkPlanVO;
import org.springblade.desk.produce.pojo.vo.ProduceMonitorWorkPlanVO;
import org.springblade.desk.produce.pojo.vo.WorkPlanProVO;
import org.springblade.desk.quality.pojo.entity.WorkPlanItem;
@ -61,4 +62,6 @@ public interface IWorkPlanService extends BaseService<WorkPlan> {
List<WorkPlanProVO> getWorkOrderProcess(String cardNo);
IPage<BsSalaryCalculationVO> selectBsSalaryCalculationPage(IPage<BsSalaryCalculationVO> page, BsSalaryCalculationDTO bsSalaryCalculation);
List<AllWorkPlanVO> getByCardNoByPlanAll(Long id);
}

@ -1,6 +1,7 @@
package org.springblade.desk.produce.service.impl;
import cn.hutool.core.date.DateUtil;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import lombok.RequiredArgsConstructor;
@ -10,20 +11,28 @@ 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.mapper.BsProcessSetMapper;
import org.springblade.desk.dashboard.pojo.entity.BsProcessSetEntity;
import org.springblade.desk.dashboard.pojo.entity.DsTaskingEntity;
import org.springblade.desk.dashboard.service.IDsTaskingService;
import org.springblade.desk.logistics.pojo.entity.PrWorkOrder;
import org.springblade.desk.order.mapper.YieldOrderMapper;
import org.springblade.desk.order.pojo.entity.YieldOrder;
import org.springblade.desk.produce.mapper.DisTaskingMapper;
import org.springblade.desk.produce.pojo.dto.TaskCompleteDTO;
import org.springblade.desk.produce.pojo.dto.TaskCompleteOrderDTO;
import org.springblade.desk.produce.pojo.dto.WorkPlanPreserveDTO;
import org.springblade.desk.produce.pojo.entity.*;
import org.springblade.desk.produce.pojo.vo.AllWorkPlanVO;
import org.springblade.desk.produce.pojo.vo.ByCardNoByPlanVO;
import org.springblade.desk.produce.pojo.vo.TaskCompleteVO;
import org.springblade.desk.produce.pojo.vo.WorkInProcessVO;
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.produce.service.*;
import org.springblade.desk.quality.pojo.entity.InspectionTask;
import org.springblade.desk.quality.pojo.entity.ReviewSheet;
import org.springblade.desk.quality.pojo.entity.WorkPlanItem;
import org.springblade.desk.quality.service.IInspectionTaskService;
import org.springblade.desk.quality.service.IReviewSheetService;
import org.springblade.desk.quality.service.IWorkPlanItemService;
import org.springblade.system.cache.UserCache;
import org.springblade.system.pojo.entity.User;
@ -55,6 +64,22 @@ public class DisTaskingServiceImpl extends BaseServiceImpl<DisTaskingMapper, Dis
private final IWorkPlanItemService workPlanItemService;
private final IWorkPlanPreserveService workPlanPreserveService;
private final YieldOrderMapper yieldOrderMapper;
private final BsProcessSetMapper bsProcessSetMapper;
private final IHandoverRecordService handoverRecordService;
private final IPlateAroundService plateAroundService;
private final IReviewSheetService reviewSheetService;
private final IInspectionTaskService inspectionTaskService;
private final IMakeRecService makeRecService;
@Override
public IPage<TaskCompleteVO> disTaskHandle(IPage<TaskCompleteVO> page, TaskCompleteDTO taskCompleteDTO) {
IPage<TaskCompleteVO> iPage = page.setRecords(baseMapper.disTaskHandle(page, taskCompleteDTO));
@ -76,9 +101,7 @@ public class DisTaskingServiceImpl extends BaseServiceImpl<DisTaskingMapper, Dis
String oem = workOrder.getOem();
if ("1".equals(oem)) {
WorkOrderRun workOrderRun = workOrderRunService.getById(workOrder.getWorId());
if (!(WorkOrderRun.RUN_STATUS_DELIVERED.equals(workOrderRun.getRunStatus())
|| WorkOrderRun.RUN_STATUS_COMPLETED.equals(workOrderRun.getRunStatus())
|| WorkOrderRun.RUN_STATUS_VOIDED.equals(workOrderRun.getRunStatus()))) {
if (!(WorkOrderRun.RUN_STATUS_DELIVERED.equals(workOrderRun.getRunStatus()) || WorkOrderRun.RUN_STATUS_COMPLETED.equals(workOrderRun.getRunStatus()) || WorkOrderRun.RUN_STATUS_VOIDED.equals(workOrderRun.getRunStatus()))) {
throw new ServiceException("外协订单不允许修改!");
}
}
@ -127,8 +150,7 @@ public class DisTaskingServiceImpl extends BaseServiceImpl<DisTaskingMapper, Dis
prWorkOrder.setRunStatus(WorkOrder.RUN_STATUS_RECEIVE);
//判定是否是检验项目,并且还有未检验
WorkPlan wp = workPlanService.getById(prWorkOrder.getWpId());
List<WorkPlanItem> list = workPlanItemService.list(Wrappers.lambdaQuery(WorkPlanItem.class)
.eq(WorkPlanItem::getWpId, wp.getId()).eq(WorkPlanItem::getCheckResult, 0));
List<WorkPlanItem> list = workPlanItemService.list(Wrappers.lambdaQuery(WorkPlanItem.class).eq(WorkPlanItem::getWpId, wp.getId()).eq(WorkPlanItem::getCheckResult, 0));
if (list != null && !list.isEmpty()) {
prWorkOrder.setRunStatus(WorkOrder.RUN_STATUS_CHECK);
}
@ -159,16 +181,13 @@ public class DisTaskingServiceImpl extends BaseServiceImpl<DisTaskingMapper, Dis
List<DsTaskingEntity> dsTaskingEntities;
if (isAll) {
// 全量同步
dsTaskingEntities = dsTaskingService.list(Wrappers.lambdaQuery(DsTaskingEntity.class)
.eq(DsTaskingEntity::getInProduction, "1").ne(DsTaskingEntity::getWipTake, "继续使用"));
dsTaskingEntities = dsTaskingService.list(Wrappers.lambdaQuery(DsTaskingEntity.class).eq(DsTaskingEntity::getInProduction, "1").ne(DsTaskingEntity::getWipTake, "继续使用"));
} else {
// 获取上一个小时的开始结束时间
Date startTime = Date.from(getLastHourStart().atZone(ZoneId.systemDefault()).toInstant());
Date endTime = Date.from(getLastHourEnd().atZone(ZoneId.systemDefault()).toInstant());
// 获取30分钟之前到现在的工艺任务分派数据
dsTaskingEntities = dsTaskingService.list(Wrappers.lambdaQuery(DsTaskingEntity.class)
.eq(DsTaskingEntity::getInProduction, "1").ne(DsTaskingEntity::getWipTake, "继续使用")
.between(DsTaskingEntity::getSyncTime, startTime, endTime));
dsTaskingEntities = dsTaskingService.list(Wrappers.lambdaQuery(DsTaskingEntity.class).eq(DsTaskingEntity::getInProduction, "1").ne(DsTaskingEntity::getWipTake, "继续使用").between(DsTaskingEntity::getSyncTime, startTime, endTime));
}
if (CollectionUtils.isEmpty(dsTaskingEntities)) {
@ -176,10 +195,7 @@ public class DisTaskingServiceImpl extends BaseServiceImpl<DisTaskingMapper, Dis
return false;
}
Set<String> partCodes = dsTaskingEntities.stream()
.map(DsTaskingEntity::getPartCode)
.filter(Objects::nonNull)
.collect(Collectors.toSet());
Set<String> partCodes = dsTaskingEntities.stream().map(DsTaskingEntity::getPartCode).filter(Objects::nonNull).collect(Collectors.toSet());
if (partCodes.isEmpty()) {
return false;
@ -246,13 +262,179 @@ public class DisTaskingServiceImpl extends BaseServiceImpl<DisTaskingMapper, Dis
return saveResult;
}
@Override
public List<AllWorkPlanVO> getByCardNoByPlanAll(String cardNo) {
WorkOrder wo = workOrderService.getWorkOrderByCardNoAll(cardNo);
if (wo == null) {
throw new ServiceException("车间订单不存在!");
}
return workPlanService.getByCardNoByPlanAll(wo.getId());
}
@Override
@Transactional(rollbackFor = Exception.class)
public boolean returnThisProcess(WorkPlanPreserveDTO workPlanPreserveDTO) {
WorkPlan prWorkPlan = workPlanService.getById(workPlanPreserveDTO.getWpId());
List<WorkPlan> prWorkPlanList = workPlanService.list(Wrappers.lambdaQuery(WorkPlan.class)
.eq(WorkPlan::getWoId, prWorkPlan.getWoId()).ge(WorkPlan::getOrders, prWorkPlan.getOrders())
.gt(WorkPlan::getStatus, WorkPlan.STATUS_NO_START).orderByDesc(WorkPlan::getOrders));
// 构建操作记录
WorkPlanPreserve workPlanPreserve = new WorkPlanPreserve();
workPlanPreserve.setMemo(workPlanPreserveDTO.getMemo());
workPlanPreserve.setOrders(prWorkPlan.getOrders());
BsProcessSetEntity processSet = bsProcessSetMapper.selectById(prWorkPlan.getPpsId());
workPlanPreserve.setPpsName(processSet != null ? processSet.getName() : "");
if (prWorkPlanList != null && !prWorkPlanList.isEmpty()) {
for (WorkPlan workPlan : prWorkPlanList) {
// 删除本序对应的数据
this.returnThisProcessSon(workPlan);
// 如果本序是外协需要删除erp外协订单、加工单位、是否外协类型、 并判断上序是否是外协
this.oemProcess(workPlan);
}
//修改prWorkOrder
//拿到车间订单
WorkOrder prWorkOrder = workOrderService.getById(prWorkPlan.getWoId());
//拿到车间订单的当前工序
WorkPlan workPlan = workPlanService.getById(prWorkOrder.getWpId());
//车间订单的入库数清零
prWorkOrder.setInventoryQty(0d);
// 2025-07-23 线上迁移修改if判断条件
//如果回退工序的前道工序不为空,将车间订单执行状态改为3,车间订单加工数量改为前工序完成数
if (prWorkPlan.getFrontWpId() != null) {
WorkPlan frontWp = workPlanService.getById(prWorkPlan.getFrontWpId());
prWorkOrder.setMakeQty(frontWp.getWorkQty());
prWorkOrder.setRunStatus(WorkOrder.RUN_STATUS_RECEIVE);
}
//如果回退工序的前道工序为空,代表回退至首工序,将车间订单执行状态改为2,车间订单加工数量改为需求数量
else {
prWorkOrder.setRunStatus(WorkOrder.RUN_STATUS_ISSUED);
YieldOrder yieldOrder = yieldOrderMapper.selectById(prWorkOrder.getYoId());
prWorkOrder.setMakeQty(yieldOrder.getYpQty());
}
List<WorkPlan> prWorkPlanListSmall = workPlanService.list(Wrappers.lambdaQuery(WorkPlan.class)
.eq(WorkPlan::getWoId, prWorkPlan.getWoId()).le(WorkPlan::getOrders, workPlan.getOrders())
.gt(WorkPlan::getStatus, WorkPlan.STATUS_NO_START).orderByDesc(WorkPlan::getOrders));
double sumScrapQtySmall = 0d;
double sumTestQtySmall = 0;
double sumLossQtySmall = 0;
if (prWorkPlanListSmall != null && !prWorkPlanListSmall.isEmpty()) {
for (WorkPlan workPlanSmall : prWorkPlanListSmall) {
sumScrapQtySmall = sumScrapQtySmall + workPlanSmall.getScrapQty();
sumTestQtySmall = sumTestQtySmall + workPlanSmall.getTestQty();
sumLossQtySmall = sumLossQtySmall + workPlanSmall.getLossQty();
}
}
prWorkOrder.setScrapQty(sumScrapQtySmall);
prWorkOrder.setTestQty(sumTestQtySmall);
prWorkOrder.setLossQty(sumLossQtySmall);
prWorkOrder.setOemType(-1);
workOrderService.updateById(prWorkOrder);
workPlanPreserve.setCardNo(prWorkOrder.getCardNo());
workPlanPreserve.setWoCode(prWorkOrder.getWoCode());
workPlanPreserve.setPartCode(prWorkOrder.getPartCode());
workPlanPreserve.setBatchNo(prWorkOrder.getBatchNo());
workPlanPreserve.setUpdateName(AuthUtil.getUserName());
// WorkPlan workPlan1 = workPlanService.getById(prWorkOrder.getWpId());
// if (workPlan1.getFrontWpId() == null) {
// if (workPlan1.getOcId() == null && workPlan1.getMakeTeam() == null) {
// //调用自动分派处理类
// pjAutomaticDispatchService.beforePlatingAutomatic(prWorkOrder.getCardNo(), curUserInfo);
// }
// }
}
return workPlanPreserveService.save(workPlanPreserve);
}
@Override
public List<WorkPlanPreserve> getWorkPlanPreserve(String cardNo) {
return workPlanPreserveService.list(Wrappers.lambdaQuery(WorkPlanPreserve.class).like(WorkPlanPreserve::getCardNo, cardNo).orderByDesc(WorkPlanPreserve::getCreateTime));
}
private void oemProcess(WorkPlan workPlan) {
if (workPlan.getOcId() != null) {
workPlan.setOem("1");
workPlan.setOcId(null);
workPlan.setPlanStartTime(null);
workPlan.setPlanEndTime(null);
workPlanService.updateById(workPlan);
WorkOrder workOrder = workOrderService.getById(workPlan.getWoId());
WorkOrderRun workOrderRun = workOrderRunService.getById(workOrder.getWorId());
workOrderRun.setWoCode(workOrder.getWoCode());
workOrderRunService.updateById(workOrderRun);
if (StringUtils.isNotBlank(workPlan.getWxNo())) {
workOrderService.returnOemErpByWxno(workPlan.getWxNo());
}
//删除前工序镀前镀后出入库记录
WorkPlan frontWorkPlan1 = workPlanService.getById(workPlan.getFrontWpId());
if (frontWorkPlan1 != null) {
plateAroundService.remove(Wrappers.lambdaQuery(PlateAround.class).eq(PlateAround::getWpId, frontWorkPlan1.getId()));
}
if (frontWorkPlan1 != null && frontWorkPlan1.getOcId() != null) {
this.returnThisProcessSon(frontWorkPlan1);
// 调用自己
this.oemProcess(frontWorkPlan1);
}
}
}
private void returnThisProcessSon(WorkPlan workPlan) {
List<HandoverRecord> handoverRecords = handoverRecordService.list(Wrappers.lambdaQuery(HandoverRecord.class).eq(HandoverRecord::getWoId, workPlan.getWoId()));
if (CollectionUtils.isEmpty(handoverRecords)) {
for (HandoverRecord handoverRecord : handoverRecords) {
if (handoverRecord.getStatus().equals(HandoverRecord.RUN_STATUS_COMPLETE)) {
handoverRecordService.returnHandoverRecord(handoverRecord.getHrCode(), handoverRecord.getPartCode(), handoverRecord.getBatchNo());
}
}
handoverRecordService.removeBatchByIds(handoverRecords);
}
//删除prPlateAround
plateAroundService.remove(Wrappers.lambdaQuery(PlateAround.class).eq(PlateAround::getWpId, workPlan.getId()));
//清除prWorkPLanItem记录
workPlanItemService.remove(Wrappers.lambdaQuery(WorkPlanItem.class).eq(WorkPlanItem::getWpId, workPlan.getId()));
//删除qcReviewSheet
reviewSheetService.remove(Wrappers.lambdaQuery(ReviewSheet.class).eq(ReviewSheet::getWpId, workPlan.getId()));
//删除prWorkCheck
inspectionTaskService.remove(Wrappers.lambdaQuery(InspectionTask.class).eq(InspectionTask::getWpId, workPlan.getId()));
//删除prMakeRec
makeRecService.remove(Wrappers.lambdaQuery(MakeRec.class).eq(MakeRec::getWpId, workPlan.getId()));
//修改prworkplan
workPlan.setFactStartTime(null);
workPlan.setFactEndTime(null);
workPlan.setStatus(1);
WorkPlan frontWorkPlan = workPlanService.getById(workPlan.getFrontWpId());
WorkOrder workOrder = workOrderService.getById(workPlan.getWoId());
if (frontWorkPlan != null) {
frontWorkPlan.setStatus(3);
frontWorkPlan.setFactEndTime(null);
workOrder.setWpId(frontWorkPlan.getId());
workPlanService.updateById(frontWorkPlan);
} else {
workOrder.setWpId(workPlan.getId());
}
workOrderService.updateById(workOrder);
workPlan.setTestQty(0d);
workPlan.setLossQty(0d);
workPlan.setQualifiedQty(0d);
workPlan.setScrapQty(0d);
workPlan.setUnqualifiedQty(0d);
workPlan.setWorkQty(0d);
workPlan.setReceiveMan(null);
workPlanService.updateById(workPlan);
}
/**
* 获取上一小时的开始时间
* 当前是 2025-12-29 15:34:22 返回 2025-12-29 14:00:00
*/
private static LocalDateTime getLastHourStart() {
return LocalDateTime.now()
.minusHours(1) // 减1小时
return LocalDateTime.now().minusHours(1) // 减1小时
.withMinute(0) // 分归零
.withSecond(0) // 秒归零
.withNano(0); // 纳秒归零
@ -263,10 +445,6 @@ public class DisTaskingServiceImpl extends BaseServiceImpl<DisTaskingMapper, Dis
* 当前是 2025-12-29 15:34:22 返回 2025-12-29 14:59:59.999999999
*/
private static LocalDateTime getLastHourEnd() {
return LocalDateTime.now()
.minusHours(1)
.withMinute(59)
.withSecond(59)
.withNano(999_999_999); // 保留毫秒/纳秒精度
return LocalDateTime.now().minusHours(1).withMinute(59).withSecond(59).withNano(999_999_999); // 保留毫秒/纳秒精度
}
}

@ -282,6 +282,11 @@ public class HandoverRecordServiceImpl extends BaseServiceImpl<HandoverRecordMap
return false;
}
@Override
public void returnHandoverRecord(String hrCode, String partCode, String batchNo) {
// todo 入库工序调用接口回退(调用erp)
}
private String getCustodianByRecDept(String partCode, String recDept) {
R<String> byPartCode = erpDataProduceClient.getCustodianByRecDept(partCode, recDept);
return byPartCode.getData();

@ -2703,6 +2703,25 @@ public class WorkOrderServiceImpl extends BaseServiceImpl<WorkOrderMapper, WorkO
return result;
}
@Override
public WorkOrder getWorkOrderByCardNoAll(String cardNo) {
WorkOrder workOrder = null;
List<WorkOrder> orders = this.list(Wrappers.lambdaQuery(WorkOrder.class).eq(WorkOrder::getCardNo, cardNo).le(WorkOrder::getRunStatus, WorkOrder.RUN_STATUS_HANDOVER));
if (CollectionUtils.isEmpty(orders)) {
String newCardNo = yieldOrderService.getNewCardNo(cardNo);
orders = this.list(Wrappers.lambdaQuery(WorkOrder.class).eq(WorkOrder::getCardNo, newCardNo).le(WorkOrder::getRunStatus, WorkOrder.RUN_STATUS_HANDOVER));
}
if (CollectionUtils.isNotEmpty(orders)) {
workOrder = orders.get(0);
}
return workOrder;
}
@Override
public void returnOemErpByWxno(String wxNo) {
// todo 外协订单调用接口回退(调用erp)
}
@Override
public void launchTest(Map<String, Object> data, BladeUser user) throws Exception {
// 提取参数

@ -0,0 +1,24 @@
package org.springblade.desk.produce.service.impl;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springblade.core.mp.base.BaseServiceImpl;
import org.springblade.desk.produce.mapper.PlateAroundDelLogMapper;
import org.springblade.desk.produce.mapper.WorkPlanPreserveMapper;
import org.springblade.desk.produce.pojo.entity.PlateAroundDelLog;
import org.springblade.desk.produce.pojo.entity.WorkPlanPreserve;
import org.springblade.desk.produce.service.IPlateAroundDelLogService;
import org.springblade.desk.produce.service.IWorkPlanPreserveService;
import org.springframework.stereotype.Service;
/**
* 车间作业计划回退记录 服务实现类
*
* @author BladeX
*/
@Slf4j
@Service
@RequiredArgsConstructor
public class WorkPlanPreserveServiceImpl extends BaseServiceImpl<WorkPlanPreserveMapper, WorkPlanPreserve> implements IWorkPlanPreserveService {
}

@ -28,6 +28,7 @@ import org.springblade.desk.order.service.IYieldOrderService;
import org.springblade.desk.produce.mapper.PlateAroundMapper;
import org.springblade.desk.produce.mapper.WorkPlanMapper;
import org.springblade.desk.produce.pojo.entity.*;
import org.springblade.desk.produce.pojo.vo.AllWorkPlanVO;
import org.springblade.desk.produce.pojo.vo.ProduceMonitorWorkPlanVO;
import org.springblade.desk.produce.pojo.vo.WorkPlanProVO;
import org.springblade.desk.produce.pojo.vo.WorkPlanVO;
@ -327,4 +328,9 @@ public class WorkPlanServiceImpl extends BaseServiceImpl<WorkPlanMapper, WorkPla
public IPage<BsSalaryCalculationVO> selectBsSalaryCalculationPage(IPage<BsSalaryCalculationVO> page, BsSalaryCalculationDTO bsSalaryCalculation) {
return page.setRecords(baseMapper.selectBsSalaryCalculationPage(page, bsSalaryCalculation));
}
@Override
public List<AllWorkPlanVO> getByCardNoByPlanAll(Long id) {
return baseMapper.getByCardNoByPlanAll(id);
}
}

Loading…
Cancel
Save