分批接口优化

liweidong
李涛 1 month ago
parent 2ef400db70
commit 1d597c3504
  1. 73
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/controller/PrMakeRecController.java
  2. 5
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/controller/ProduceMonitorController.java
  3. 2
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IMakeRecService.java
  4. 4
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IWorkOrderService.java
  5. 22
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/MakeRecServiceImpl.java
  6. 112
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/WorkOrderServiceImpl.java

@ -16,6 +16,7 @@ import org.springblade.desk.produce.pojo.entity.WorkPlan;
import org.springblade.desk.produce.pojo.vo.MesMakeRecVO; import org.springblade.desk.produce.pojo.vo.MesMakeRecVO;
import org.springblade.desk.produce.pojo.vo.WorkPlanLoadVO; import org.springblade.desk.produce.pojo.vo.WorkPlanLoadVO;
import org.springblade.desk.produce.service.IMakeRecService; import org.springblade.desk.produce.service.IMakeRecService;
import org.springblade.desk.produce.service.IWorkOrderService;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import java.util.List; import java.util.List;
@ -32,44 +33,48 @@ import java.util.List;
@Tag(name = "工作台", description = "接口") @Tag(name = "工作台", description = "接口")
public class PrMakeRecController extends BladeController { public class PrMakeRecController extends BladeController {
private final IMakeRecService makeRecService; private final IMakeRecService makeRecService;
@GetMapping(value = "/loadCurrentWp/{cardNo}") private final IWorkOrderService workOrderService;
@ApiOperationSupport(order = 1)
@Operation(summary = "工序报工-加载当前工序", description = "传入cardNo")
public R<WorkPlanDto> loadSubOrder(@PathVariable String cardNo) {
return R.data(makeRecService.loadCurrentWp(cardNo));
}
@Operation(summary = "报工提交") @GetMapping(value = "/loadCurrentWp")
@PostMapping("/saveMakeRec") @ApiOperationSupport(order = 1)
public R saveMakeRec(@RequestBody MakeRecDTO makeRecDTO) { @Operation(summary = "工序报工-加载当前工序", description = "传入cardNo")
return R.status(makeRecService.saveMakeRec(makeRecDTO)) ; public R<WorkPlanDto> loadSubOrder(@RequestParam String cardNo) {
} return R.data(makeRecService.loadCurrentWp(cardNo));
}
@GetMapping("/queryMakeRec") @Operation(summary = "报工提交")
@ApiOperationSupport(order = 3) @PostMapping("/saveMakeRec")
@Operation(summary = "报工记录", description = "传入mesMakeRec") public R saveMakeRec(@RequestBody MakeRecDTO makeRecDTO) {
public R<IPage<MesMakeRecVO>> page(MesMakeRecVO mesMakeRec, Query query) { return R.status(makeRecService.saveMakeRec(makeRecDTO));
return R.data(makeRecService.selectMesMakeRecPage(Condition.getPage(query), mesMakeRec)); }
}
@GetMapping(value = "/loadNotReceived/{cardNo}") @GetMapping("/queryMakeRec")
@Operation(summary = "任务接收查询", description = "传入cardNo") @ApiOperationSupport(order = 3)
public R<List<WorkPlanLoadVO>> loadNotReceived(@PathVariable String cardNo) { @Operation(summary = "报工记录", description = "传入mesMakeRec")
return R.data(makeRecService.loadNotReceived(cardNo)); public R<IPage<MesMakeRecVO>> page(MesMakeRecVO mesMakeRec, Query query) {
} return R.data(makeRecService.selectMesMakeRecPage(Condition.getPage(query), mesMakeRec));
}
@GetMapping(value = "/afterPlaReceive/{cardNo}") @GetMapping(value = "/loadNotReceived")
@Operation(summary = "加载镀后接收数据", description = "传入cardNo") @Operation(summary = "工序接收查询", description = "传入cardNo")
public R<List<WorkPlan>> afterPlaReceive(@PathVariable String cardNo) { public R<WorkPlanLoadVO> loadNotReceived(@RequestParam String cardNo) {
return R.data(makeRecService.afterPlaReceive(cardNo)); WorkPlanLoadVO workPlanLoadVO = makeRecService.loadNotReceived(cardNo);
} workOrderService.dataValidation(workPlanLoadVO.getWpId());
return R.data(workPlanLoadVO);
}
@Operation(summary = "手动维护生产追溯") @GetMapping(value = "/afterPlaReceive")
@PostMapping("/saveRetrospectDefend") @Operation(summary = "加载镀后接收数据", description = "传入cardNo")
public R saveRetrospectDefend(@RequestBody RetrospectDefendDTO retrospectDefendDTO) { public R<List<WorkPlan>> afterPlaReceive(@RequestParam String cardNo) {
makeRecService.saveRetrospectDefend(retrospectDefendDTO); return R.data(makeRecService.afterPlaReceive(cardNo));
return R.success() ; }
}
@Operation(summary = "手动维护生产追溯")
@PostMapping("/saveRetrospectDefend")
public R saveRetrospectDefend(@RequestBody RetrospectDefendDTO retrospectDefendDTO) {
makeRecService.saveRetrospectDefend(retrospectDefendDTO);
return R.success();
}
} }

@ -58,8 +58,9 @@ public class ProduceMonitorController extends BladeController {
@PostMapping("/workPlanReceive") @PostMapping("/workPlanReceive")
@ApiOperationSupport(order = 5) @ApiOperationSupport(order = 5)
@Operation(summary = "工序接收") @Operation(summary = "工序接收")
public R workPlanReceive(@RequestParam Long wpId) { public R workPlanReceive(@RequestParam String wpIds) {
return R.data(workOrderService.workPlanReceive(wpId)); List<Long> wpIdList = Func.toLongList(wpIds);
return R.data(workOrderService.workPlanReceive(wpIdList));
} }
} }

@ -30,7 +30,7 @@ public interface IMakeRecService extends BaseService<MakeRec> {
IPage<MesMakeRecVO> selectMesMakeRecPage(IPage<MesMakeRecVO> page, MesMakeRecVO mesMakeRec); IPage<MesMakeRecVO> selectMesMakeRecPage(IPage<MesMakeRecVO> page, MesMakeRecVO mesMakeRec);
List<WorkPlanLoadVO> loadNotReceived(String cardNo); WorkPlanLoadVO loadNotReceived(String cardNo);
List<WorkPlan> afterPlaReceive(String cardNo); List<WorkPlan> afterPlaReceive(String cardNo);
/** /**

@ -178,7 +178,7 @@ public interface IWorkOrderService extends BaseService<WorkOrder> {
* *
* @param wpId 工序id * @param wpId 工序id
*/ */
boolean workPlanReceive(Long wpId); boolean workPlanReceive(List<Long> wpId);
/** /**
* <p>方法名: updateHostWorkUnit </p> * <p>方法名: updateHostWorkUnit </p>
@ -189,4 +189,6 @@ public interface IWorkOrderService extends BaseService<WorkOrder> {
void updateHostWorkUnit(WorkOrder workOrder); void updateHostWorkUnit(WorkOrder workOrder);
boolean updatePriority(UpdatePriorityDTO updatePriorityDTO); boolean updatePriority(UpdatePriorityDTO updatePriorityDTO);
void dataValidation(Long wpId);
} }

@ -38,6 +38,8 @@ import org.springblade.desk.produce.pojo.vo.MesMakeRecVO;
import org.springblade.desk.produce.pojo.vo.WorkPlanLoadVO; import org.springblade.desk.produce.pojo.vo.WorkPlanLoadVO;
import org.springblade.desk.produce.service.*; import org.springblade.desk.produce.service.*;
import org.springblade.desk.quality.pojo.entity.AuditFile; import org.springblade.desk.quality.pojo.entity.AuditFile;
import org.springblade.desk.quality.pojo.entity.InspectionTask;
import org.springblade.desk.quality.pojo.entity.ReviewSheet;
import org.springblade.desk.quality.service.IAuditFileService; import org.springblade.desk.quality.service.IAuditFileService;
import org.springblade.system.cache.UserCache; import org.springblade.system.cache.UserCache;
import org.springblade.system.pojo.entity.DataScope; import org.springblade.system.pojo.entity.DataScope;
@ -484,22 +486,24 @@ public class MakeRecServiceImpl extends BaseServiceImpl<MakeRecMapper, MakeRec>
} }
@Override @Override
public List<WorkPlanLoadVO> loadNotReceived(String cardNo) { public WorkPlanLoadVO loadNotReceived(String cardNo) {
List<Long> tsIds = relTeamSetUserService.list(Wrappers.lambdaQuery(RelTeamSetUser.class).eq(RelTeamSetUser::getUserId, 1297)).stream().map(RelTeamSetUser::getTeamSetId).collect(Collectors.toList()); List<Long> tsIds = relTeamSetUserService.list(Wrappers.lambdaQuery(RelTeamSetUser.class).eq(RelTeamSetUser::getUserId, 1297)).stream().map(RelTeamSetUser::getTeamSetId).collect(Collectors.toList());
List<WorkPlanLoadVO> rtnList = new ArrayList<>(); WorkPlanLoadVO rtn = new WorkPlanLoadVO();
if (CollectionUtils.isEmpty(tsIds)) { if (CollectionUtils.isEmpty(tsIds)) {
return rtnList; return rtn;
} }
WorkOrder wo = workOrderMapper.getWorkOrderByCardNo(cardNo, (short) 0); WorkOrder wo = workOrderMapper.getWorkOrderByCardNo(cardNo, (short) 0);
Optional.ofNullable(wo).orElseThrow(() -> new ServiceException("车间订单不存在!")); Optional.ofNullable(wo).orElseThrow(() -> new ServiceException("车间订单不存在!"));
List<WorkPlanLoadVO> wpList = workPlanMapper.loadNotReceived(tsIds, wo.getId()); List<WorkPlanLoadVO> wpList = workPlanMapper.loadNotReceived(tsIds, wo.getId());
for (WorkPlanLoadVO workPlanLoadVO : wpList) { if (CollectionUtils.isEmpty(wpList)) {
workPlanLoadVO.setRunStatusTitle(WorkOrderEnum.getName(workPlanLoadVO.getRunStatus())); return rtn;
workPlanLoadVO.setPriorityTitle(WorkOrder.priorityMap.get(workPlanLoadVO.getPriority()));
workPlanLoadVO.setPickingStatusTitle(WorkOrder.pickingStatusMap.get(workPlanLoadVO.getPickingStatus()));
workPlanLoadVO.setIsBing(0);
} }
return wpList; WorkPlanLoadVO workPlanLoadVO = wpList.get(0);
workPlanLoadVO.setRunStatusTitle(WorkOrderEnum.getName(workPlanLoadVO.getRunStatus()));
workPlanLoadVO.setPriorityTitle(WorkOrder.priorityMap.get(workPlanLoadVO.getPriority()));
workPlanLoadVO.setPickingStatusTitle(WorkOrder.pickingStatusMap.get(workPlanLoadVO.getPickingStatus()));
workPlanLoadVO.setIsBing(0);
return workPlanLoadVO;
} }
@Override @Override

@ -19,10 +19,14 @@ import org.springblade.core.tool.api.R;
import org.springblade.core.tool.utils.DateUtil; import org.springblade.core.tool.utils.DateUtil;
import org.springblade.core.tool.utils.StringUtil; import org.springblade.core.tool.utils.StringUtil;
import org.springblade.desk.basic.constant.FlowConst; import org.springblade.desk.basic.constant.FlowConst;
import org.springblade.desk.basic.feign.WorkCenterClient;
import org.springblade.desk.basic.pojo.entity.OemCraftAbilityEntity; import org.springblade.desk.basic.pojo.entity.OemCraftAbilityEntity;
import org.springblade.desk.basic.pojo.entity.RelTeamSetUser;
import org.springblade.desk.basic.pojo.entity.WorkCenter;
import org.springblade.desk.basic.service.IOemCraftAbilityService; import org.springblade.desk.basic.service.IOemCraftAbilityService;
import org.springblade.desk.basic.service.IOemService; import org.springblade.desk.basic.service.IOemService;
import org.springblade.desk.basic.service.IProcessAbilityService; import org.springblade.desk.basic.service.IProcessAbilityService;
import org.springblade.desk.basic.service.IWorkCenterService;
import org.springblade.desk.dashboard.pojo.entity.BsProcessSetEntity; import org.springblade.desk.dashboard.pojo.entity.BsProcessSetEntity;
import org.springblade.desk.dashboard.pojo.entity.BsTeamSetEntity; import org.springblade.desk.dashboard.pojo.entity.BsTeamSetEntity;
import org.springblade.desk.dashboard.pojo.entity.DsPartEntity; import org.springblade.desk.dashboard.pojo.entity.DsPartEntity;
@ -142,6 +146,8 @@ public class WorkOrderServiceImpl extends BaseServiceImpl<WorkOrderMapper, WorkO
private final IOemCraftAbilityService oemCraftAbilityService; private final IOemCraftAbilityService oemCraftAbilityService;
private final IWorkCenterService workCenterService;
@Override @Override
public IPage<WorkOrderVO> selectWorkOrderPage(IPage<WorkOrderVO> page, WorkOrderDTO workOrder) { public IPage<WorkOrderVO> selectWorkOrderPage(IPage<WorkOrderVO> page, WorkOrderDTO workOrder) {
return page.setRecords(baseMapper.selectWorkOrderPage(page, workOrder)); return page.setRecords(baseMapper.selectWorkOrderPage(page, workOrder));
@ -167,7 +173,7 @@ public class WorkOrderServiceImpl extends BaseServiceImpl<WorkOrderMapper, WorkO
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public boolean inBatches(Long oldWoId, InBatchesDTO inBatchesDTO, Long userId) { public boolean inBatches(Long oldWoId, InBatchesDTO inBatchesDTO, Long userId) {
WorkOrder oldWo = this.getById(oldWoId); WorkOrder oldWo = this.getById(oldWoId);
WorkOrder newWo = this.addWorkOrderAndYieldOrder(oldWo,inBatchesDTO); WorkOrder newWo = this.addWorkOrderAndYieldOrder(oldWo, inBatchesDTO);
List<WorkPlan> oldList = workPlanService.list(Wrappers.lambdaQuery(WorkPlan.class).eq(WorkPlan::getWoId, oldWoId)); List<WorkPlan> oldList = workPlanService.list(Wrappers.lambdaQuery(WorkPlan.class).eq(WorkPlan::getWoId, oldWoId));
//保存作业计划 //保存作业计划
List<WorkPlan> wpList = this.saveWorkPlan(oldList, newWo, oldWoId); List<WorkPlan> wpList = this.saveWorkPlan(oldList, newWo, oldWoId);
@ -1466,37 +1472,58 @@ public class WorkOrderServiceImpl extends BaseServiceImpl<WorkOrderMapper, WorkO
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public boolean workPlanReceive(Long wpId) { public boolean workPlanReceive(List<Long> wpIdList) {
WorkPlan workPlan = workPlanService.getById(wpId); List<WorkPlan> workPlans = workPlanService.listByIds(wpIdList);
WorkPlan frontWorkPlan = workPlanService.getById(workPlan.getFrontWpId()); if (CollectionUtils.isEmpty(workPlans)) {
WorkOrder workOrder = this.getById(workPlan.getWoId()); return false;
// 上序不为空时进行审理单验证
if (frontWorkPlan != null) {
// 验证上序是否存在未完成审理,如果存在则不允许接收
InspectionTask checkByWpId = iInspectionTaskService.getPrWorkCheckByWpId(frontWorkPlan.getId());
if (checkByWpId != null) {
// 查询是否存在未完的审理单
List<ReviewSheet> rsLst = reviewSheetService.getNoCompleteByWcId(checkByWpId.getId());
if (CollectionUtils.isNotEmpty(rsLst)) {
throw new ServiceException("存在未完成审理单,请处理后再进行接收");
}
}
// 验证车间订单状态
if (!WorkOrder.RUN_STATUS_RECEIVE.equals(workOrder.getRunStatus())) {
throw new ServiceException("存在未完成审理单,请处理后再进行接收");
}
} }
// workPlans根据ID转为map
Map<Long, WorkPlan> workPlanMap = workPlans.stream().collect(Collectors.toMap(WorkPlan::getId, workPlan -> workPlan));
for (Long wpId : wpIdList) {
this.dataValidation(wpId);
WorkPlan workPlan = workPlanMap.get(wpId);
WorkPlan frontWorkPlan = workPlanService.getById(workPlan.getFrontWpId());
WorkOrder workOrder = this.getById(workPlan.getWoId());
Date newDate = new Date(); Date newDate = new Date();
// 完成上序 // 完成上序
this.workPlanEnd(frontWorkPlan, newDate, workOrder.getMakeQty()); this.workPlanEnd(frontWorkPlan, newDate, workOrder.getMakeQty());
// 开始本序
this.workPlanStart(workPlan, newDate, AuthUtil.getUserId(), workOrder);
// 开始本序
this.workPlanStart(workPlan, newDate, AuthUtil.getUserId(), workOrder);
}
return true; return true;
} }
private void verifyMakeUnit(WorkPlan workPlan, WorkPlan frontWorkPlan) {
if (workPlan.getFrontWpId() == null) {
return;
}
//当前序作业中心为检验单位,不验证镀前出入库
if (workPlan.getMakeTeam() != null) {
BsTeamSetEntity ct = teamSetService.getById(workPlan.getMakeTeam());
if (ct != null) {
WorkCenter workCenter = workCenterService.getById(ct.getWcId());
if (1 == workCenter.getCheckout()) {
return;
}
}
}
if ("1".equals(frontWorkPlan.getOem()) && "1".equals(workPlan.getOem())) {
return;
}
List<PlateAround> pa = plateAroundMapper.selectList(Wrappers.lambdaQuery(PlateAround.class).eq(PlateAround::getPaType, PlateAround.BEFORE_PLAN_OUT).eq(PlateAround::getWpId, workPlan.getId()));
if (CollectionUtils.isEmpty(pa)) {
if ("1".equals(frontWorkPlan.getOem())) {
//上序外协,本序如果可以接收,验证镀前出库记录
throw new ServiceException("工序加工单位不同,未找到镀前出库记录,无法接收!");
} else if (!frontWorkPlan.getMakeTeam().equals(workPlan.getMakeTeam())) {
//加工班组不同,验证镀前出库记录
throw new ServiceException("工序加工单位不同,未找到镀前出库记录,无法接收!");
}
}
}
private void workPlanStart(WorkPlan workPlan, Date startDate, Long userId, WorkOrder workOrder) { private void workPlanStart(WorkPlan workPlan, Date startDate, Long userId, WorkOrder workOrder) {
if (workPlan == null) { if (workPlan == null) {
return; return;
@ -1662,6 +1689,39 @@ public class WorkOrderServiceImpl extends BaseServiceImpl<WorkOrderMapper, WorkO
return true; return true;
} }
@Override
public void dataValidation(Long wpId) {
WorkPlan workPlan = workPlanService.getById(wpId);
WorkPlan frontWorkPlan = workPlanService.getById(workPlan.getFrontWpId());
WorkOrder workOrder = this.getById(workPlan.getWoId());
// 上序不为空时进行审理单验证
if (frontWorkPlan != null) {
// 验证上序是否存在未完成审理,如果存在则不允许接收
InspectionTask checkByWpId = iInspectionTaskService.getPrWorkCheckByWpId(frontWorkPlan.getId());
if (checkByWpId != null) {
// 查询是否存在未完的审理单
List<ReviewSheet> rsLst = reviewSheetService.getNoCompleteByWcId(checkByWpId.getId());
if (CollectionUtils.isNotEmpty(rsLst)) {
throw new ServiceException("存在未完成审理单,请处理后再进行接收");
}
}
// 验证车间订单状态
if (!WorkOrder.RUN_STATUS_RECEIVE.equals(workOrder.getRunStatus())) {
throw new ServiceException("存在未完成审理单,请处理后再进行接收");
}
}
//验证接收工序与上序是否需要镀前出入库
if (workPlan.getNextWpId() != null) {
this.verifyMakeUnit(workPlan, frontWorkPlan);
if (frontWorkPlan != null) {
//验证上道工序是否报工完成
if (!WorkPlan.STATUS_WORK_OK.equals(frontWorkPlan.getStatus())) {
throw new ServiceException("上序未报工完成,请联系相关人员处理!");
}
}
}
}
private void workPlanEnd(WorkPlan workPlan, Date newDate, Double makeQty) { private void workPlanEnd(WorkPlan workPlan, Date newDate, Double makeQty) {
if (workPlan == null) { if (workPlan == null) {
return; return;

Loading…
Cancel
Save