分批接口优化

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

@ -178,7 +178,7 @@ public interface IWorkOrderService extends BaseService<WorkOrder> {
*
* @param wpId 工序id
*/
boolean workPlanReceive(Long wpId);
boolean workPlanReceive(List<Long> wpId);
/**
* <p>方法名: updateHostWorkUnit </p>
@ -189,4 +189,6 @@ public interface IWorkOrderService extends BaseService<WorkOrder> {
void updateHostWorkUnit(WorkOrder workOrder);
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.service.*;
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.system.cache.UserCache;
import org.springblade.system.pojo.entity.DataScope;
@ -484,22 +486,24 @@ public class MakeRecServiceImpl extends BaseServiceImpl<MakeRecMapper, MakeRec>
}
@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<WorkPlanLoadVO> rtnList = new ArrayList<>();
WorkPlanLoadVO rtn = new WorkPlanLoadVO();
if (CollectionUtils.isEmpty(tsIds)) {
return rtnList;
return rtn;
}
WorkOrder wo = workOrderMapper.getWorkOrderByCardNo(cardNo, (short) 0);
Optional.ofNullable(wo).orElseThrow(() -> new ServiceException("车间订单不存在!"));
List<WorkPlanLoadVO> wpList = workPlanMapper.loadNotReceived(tsIds, wo.getId());
for (WorkPlanLoadVO workPlanLoadVO : wpList) {
workPlanLoadVO.setRunStatusTitle(WorkOrderEnum.getName(workPlanLoadVO.getRunStatus()));
workPlanLoadVO.setPriorityTitle(WorkOrder.priorityMap.get(workPlanLoadVO.getPriority()));
workPlanLoadVO.setPickingStatusTitle(WorkOrder.pickingStatusMap.get(workPlanLoadVO.getPickingStatus()));
workPlanLoadVO.setIsBing(0);
if (CollectionUtils.isEmpty(wpList)) {
return rtn;
}
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

@ -19,10 +19,14 @@ import org.springblade.core.tool.api.R;
import org.springblade.core.tool.utils.DateUtil;
import org.springblade.core.tool.utils.StringUtil;
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.RelTeamSetUser;
import org.springblade.desk.basic.pojo.entity.WorkCenter;
import org.springblade.desk.basic.service.IOemCraftAbilityService;
import org.springblade.desk.basic.service.IOemService;
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.BsTeamSetEntity;
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 IWorkCenterService workCenterService;
@Override
public IPage<WorkOrderVO> selectWorkOrderPage(IPage<WorkOrderVO> page, WorkOrderDTO workOrder) {
return page.setRecords(baseMapper.selectWorkOrderPage(page, workOrder));
@ -167,7 +173,7 @@ public class WorkOrderServiceImpl extends BaseServiceImpl<WorkOrderMapper, WorkO
@Transactional(rollbackFor = Exception.class)
public boolean inBatches(Long oldWoId, InBatchesDTO inBatchesDTO, Long userId) {
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> wpList = this.saveWorkPlan(oldList, newWo, oldWoId);
@ -1466,37 +1472,58 @@ public class WorkOrderServiceImpl extends BaseServiceImpl<WorkOrderMapper, WorkO
@Override
@Transactional(rollbackFor = Exception.class)
public boolean workPlanReceive(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("存在未完成审理单,请处理后再进行接收");
}
public boolean workPlanReceive(List<Long> wpIdList) {
List<WorkPlan> workPlans = workPlanService.listByIds(wpIdList);
if (CollectionUtils.isEmpty(workPlans)) {
return false;
}
// 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();
// 完成上序
this.workPlanEnd(frontWorkPlan, newDate, workOrder.getMakeQty());
// 开始本序
this.workPlanStart(workPlan, newDate, AuthUtil.getUserId(), workOrder);
Date newDate = new Date();
// 完成上序
this.workPlanEnd(frontWorkPlan, newDate, workOrder.getMakeQty());
// 开始本序
this.workPlanStart(workPlan, newDate, AuthUtil.getUserId(), workOrder);
}
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) {
if (workPlan == null) {
return;
@ -1662,6 +1689,39 @@ public class WorkOrderServiceImpl extends BaseServiceImpl<WorkOrderMapper, WorkO
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) {
if (workPlan == null) {
return;

Loading…
Cancel
Save