package com.zy.asrs.controller; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.core.annotations.ManagerAuth; import com.core.common.R; import com.zy.asrs.domain.param.CreateCyclePlanParam; import com.zy.asrs.entity.BasCrnp; import com.zy.asrs.entity.BasDualCrnp; import com.zy.asrs.entity.WrkCyclePlan; import com.zy.asrs.entity.WrkCyclePlanLoc; import com.zy.asrs.service.BasCrnpService; import com.zy.asrs.service.BasDualCrnpService; import com.zy.asrs.service.WrkCyclePlanLocService; import com.zy.asrs.service.WrkCyclePlanService; import com.zy.common.web.BaseController; import com.zy.core.enums.SlaveType; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import java.util.ArrayList; import java.util.Collections; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.stream.Collectors; @Slf4j @RestController public class WrkCyclePlanController extends BaseController { @Autowired private WrkCyclePlanService wrkCyclePlanService; @Autowired private WrkCyclePlanLocService wrkCyclePlanLocService; @Autowired private BasCrnpService basCrnpService; @Autowired private BasDualCrnpService basDualCrnpService; @RequestMapping(value = "/wrkCyclePlan/list/auth") @ManagerAuth public R list(@RequestParam(defaultValue = "1") Integer curr, @RequestParam(defaultValue = "10") Integer limit) { QueryWrapper wrapper = new QueryWrapper<>(); wrapper.orderByDesc("id"); return R.ok(wrkCyclePlanService.page(new Page<>(curr, limit), wrapper)); } @RequestMapping(value = "/wrkCyclePlan/locList/auth") @ManagerAuth public R locList(@RequestParam Long planId, @RequestParam(defaultValue = "1") Integer curr, @RequestParam(defaultValue = "20") Integer limit) { QueryWrapper wrapper = new QueryWrapper<>(); wrapper.eq("plan_id", planId).orderByAsc("seq"); return R.ok(wrkCyclePlanLocService.page(new Page<>(curr, limit), wrapper)); } @PostMapping(value = "/wrkCyclePlan/create/auth") @ManagerAuth public R create(@RequestBody CreateCyclePlanParam param) { try { WrkCyclePlan plan = wrkCyclePlanService.createPlan(param); return R.ok(plan); } catch (Exception e) { return R.error(e.getMessage()); } } @PostMapping(value = "/wrkCyclePlan/start/auth") @ManagerAuth public R start(@RequestBody Map param) { try { wrkCyclePlanService.startPlan(param.get("planId")); return R.ok(); } catch (Exception e) { return R.error(e.getMessage()); } } @PostMapping(value = "/wrkCyclePlan/pause/auth") @ManagerAuth public R pause(@RequestBody Map param) { try { wrkCyclePlanService.pausePlan(param.get("planId")); return R.ok(); } catch (Exception e) { return R.error(e.getMessage()); } } @PostMapping(value = "/wrkCyclePlan/resume/auth") @ManagerAuth public R resume(@RequestBody Map param) { try { wrkCyclePlanService.resumePlan(param.get("planId")); return R.ok(); } catch (Exception e) { return R.error(e.getMessage()); } } @PostMapping(value = "/wrkCyclePlan/reset/auth") @ManagerAuth public R reset(@RequestBody Map param) { try { wrkCyclePlanService.resetPlan(param.get("planId")); return R.ok(); } catch (Exception e) { return R.error(e.getMessage()); } } @PostMapping(value = "/wrkCyclePlan/delete/auth") @ManagerAuth public R delete(@RequestBody Map param) { try { wrkCyclePlanService.deletePlan(param.get("planId")); return R.ok(); } catch (Exception e) { return R.error(e.getMessage()); } } @RequestMapping(value = "/wrkCyclePlan/craneOptions/auth") @ManagerAuth public R craneOptions() { List> options = new ArrayList<>(); List crnps = basCrnpService.list(new QueryWrapper<>()); for (BasCrnp crnp : crnps) { Map opt = new HashMap<>(); opt.put("crnNo", crnp.getCrnNo()); opt.put("crnType", SlaveType.Crn.name()); opt.put("label", "堆垛机" + crnp.getCrnNo()); options.add(opt); } List dualCrnps = basDualCrnpService.list(new QueryWrapper<>()); for (BasDualCrnp dualCrnp : dualCrnps) { Map opt = new HashMap<>(); opt.put("crnNo", dualCrnp.getCrnNo()); opt.put("crnType", SlaveType.DualCrn.name()); opt.put("label", "双工位堆垛机" + dualCrnp.getCrnNo()); options.add(opt); } return R.ok(options); } @PostMapping(value = "/wrkCyclePlan/availableRows/auth") @ManagerAuth public R availableRows(@RequestBody List crnOptions) { List rows = new ArrayList<>(); for (CreateCyclePlanParam.CrnOption opt : crnOptions) { if (SlaveType.Crn.name().equals(opt.getCrnType())) { BasCrnp crnp = basCrnpService.getOne(new QueryWrapper().eq("crn_no", opt.getCrnNo())); if (crnp != null) { for (List group : crnp.getControlRows$()) { rows.addAll(group); } } } else if (SlaveType.DualCrn.name().equals(opt.getCrnType())) { BasDualCrnp dualCrnp = basDualCrnpService.getOne(new QueryWrapper().eq("crn_no", opt.getCrnNo())); if (dualCrnp != null) { for (List group : dualCrnp.getControlRows$()) { rows.addAll(group); } } } } Collections.sort(rows); return R.ok(rows.stream().distinct().collect(java.util.stream.Collectors.toList())); } }