package com.zy.asrs.controller; import com.core.common.R; import com.zy.asrs.entity.LocDetl; import com.zy.asrs.entity.LocMast; import com.zy.asrs.entity.digitaltwin.*; import com.zy.asrs.service.DigitalTwinService; import com.zy.common.web.BaseController; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; import javax.annotation.Resource; import java.util.ArrayList; import java.util.List; @RequestMapping("/digitalTwin") @RestController public class DigitalTwinController extends BaseController { @Resource private DigitalTwinService digitalTwinService; /** * 数据总览 * * @param areaId 库区编码 * @return */ @RequestMapping(value = "/overview") // @ManagerAuth public R overview(@RequestParam(required = false) String areaId){ DtOverviewVo dtOverviewVo = digitalTwinService.overview(areaId); // DtOverviewVo dtOverviewVo = DtOverviewVo.builder() // .totalLoc(999) // .useLoc(900) // .idleLoc(99) // .todayOutbound(160) // .todayWarehousing(170) // .remainingStock(180) // .build(); return R.ok().add(dtOverviewVo); } /** * 近期订单(默认7天) * * @param startDate 格式:yyyyMMdd,20251022 * @param endDate 格式:yyyyMMdd,20251027 * @return */ @RequestMapping(value = "/recentOrder") // @ManagerAuth public R recentOrder(@RequestParam(required = false) String startDate, @RequestParam(required = false) String endDate){ List orderVoList = digitalTwinService.order(startDate, endDate); // DtOrderVo dtOrderVo = DtOrderVo.builder() // .orderDate("2025-10-22") // .orderNum(156) // .build(); // DtOrderVo dtOrderVo2 = DtOrderVo.builder() // .orderDate("2025-10-23") // .orderNum(166) // .build(); // List orderVoList = new ArrayList<>(); // orderVoList.add(dtOrderVo); // orderVoList.add(dtOrderVo2); return R.ok().add(orderVoList); } /** * 近期剩余库位(默认7天) * * @param areaId 库区编码 * @param startDate 格式:yyyyMMdd,20251022 * @param endDate 格式:yyyyMMdd,20251027 * @return */ @RequestMapping(value = "/recentIdleLoc") // @ManagerAuth public R recentIdleLoc(@RequestParam(required = false) String areaId, @RequestParam(required = false) String startDate, @RequestParam(required = false) String endDate){ List locVoList = digitalTwinService.recentLoc(areaId, startDate, endDate); // DtLocVo dtLocVo = DtLocVo.builder() // .locDate("2025-10-22") // .idleNum(208) // .build(); // DtLocVo dtLocVo2 = DtLocVo.builder() // .locDate("2025-10-23") // .idleNum(177) // .build(); // List locVoList = new ArrayList<>(); // locVoList.add(dtLocVo); // locVoList.add(dtLocVo2); return R.ok().add(locVoList); } /** * 近期出入库(默认7天) * * @param areaId 库区编码 * @param startDate 格式:yyyyMMdd,20251022 * @param endDate 格式:yyyyMMdd,20251027 * @return */ @RequestMapping(value = "/recentInAndOutBound") // @ManagerAuth public R recentInAndOutBound(@RequestParam(required = false) String areaId, @RequestParam(required = false) String startDate, @RequestParam(required = false) String endDate){ List inAndOutBoundVoList = digitalTwinService.inAndOutBound(areaId, startDate, endDate); // DtInAndOutBoundVo dtInAndOutBoundVo = DtInAndOutBoundVo.builder() // .boundDate("2025-10-22") // .inBoundNum(237) // .outBoundNum(487) // .build(); // DtInAndOutBoundVo dtInAndOutBoundVo2 = DtInAndOutBoundVo.builder() // .boundDate("2025-10-23") // .inBoundNum(187) // .outBoundNum(287) // .build(); // List inAndOutBoundVoList = new ArrayList<>(); // inAndOutBoundVoList.add(dtInAndOutBoundVo); // inAndOutBoundVoList.add(dtInAndOutBoundVo2); return R.ok().add(inAndOutBoundVoList); } /** * 近期呆滞品(默认超30天) * * @param areaId 库区编码 * @param overDayNum 呆滞品天数,默认30天 * @return */ @RequestMapping(value = "/recentDetainMat") // @ManagerAuth public R recentDetainMat(@RequestParam(required = false) String areaId, @RequestParam(required = false) Integer overDayNum, @RequestParam(required = false) Integer pageIndex, @RequestParam(required = false) Integer pageSize){ List detainMatVoList = digitalTwinService.recentDetainMat(areaId, overDayNum, pageIndex, pageSize); // DtDetainMatVo dtDetainMatVo = DtDetainMatVo.builder() // .belongAreaId("A1") // .belongAreaName("刀具库") // .matId("mat10001") // .matName("道具把") // .lokId("loc1001") // .lokName("库位10001") // .detainTime(765) // .inBoundTime("2025-10-11T11:15:16") // .build(); // DtDetainMatVo dtDetainMatVo2 = DtDetainMatVo.builder() // .belongAreaId("A1") // .belongAreaName("刀具库") // .matId("mat10002") // .matName("道具把") // .lokId("loc1002") // .lokName("库位10002") // .detainTime(665) // .inBoundTime("2025-10-10T11:15:16") // .build(); // List detainMatVoList = new ArrayList<>(); // detainMatVoList.add(dtDetainMatVo); // detainMatVoList.add(dtDetainMatVo2); return R.ok().add(detainMatVoList); } /** * 设备运行信息 * * @param areaId * @return */ @RequestMapping(value = "/equipment") // @ManagerAuth public R equipment(@RequestParam(required = false) String areaId){ DtEquipmentVo dtDetainMatVo = DtEquipmentVo.builder() .equipmentId("eq1001") .equipmentName("堆垛机1") .equipmentType(1) .belongAreaId("A1") .belongAreaName("刀具库") .verticalSpeed(288) .horizontalSpeed(203) .voltage(48) .status(1) .operateMethod(1) .build(); DtEquipmentVo dtDetainMatVo2 = DtEquipmentVo.builder() .equipmentId("eq1002") .equipmentName("堆垛机2") .equipmentType(1) .belongAreaId("A1") .belongAreaName("刀具库") .verticalSpeed(208) .horizontalSpeed(253) .voltage(48) .status(1) .operateMethod(1) .build(); List dtEquipmentVoList = new ArrayList<>(); dtEquipmentVoList.add(dtDetainMatVo); dtEquipmentVoList.add(dtDetainMatVo2); return R.ok().add(dtEquipmentVoList); } /** * 库位和库存详情 * * @param areaId * @return */ @RequestMapping(value = "/warehouseDetail") // @ManagerAuth public R warehouseDetail(@RequestParam(required = false) String areaId){ List dtLocDetailVoList = digitalTwinService.warehouseDetail(areaId); return R.ok().add(dtLocDetailVoList); } // List dtLocDetailVoList = new ArrayList<>(); // DtLocDetailVo dtLocDetailVo = new DtLocDetailVo(); // dtLocDetailVo.setLocNo("CA0100202"); // dtLocDetailVo.setLocSts("O"); // dtLocDetailVo.setAreaId(10010L); // dtLocDetailVo.setAreaName("刀具库"); // dtLocDetailVo.setRow1(1); // dtLocDetailVo.setBay1(2); // dtLocDetailVo.setLev1(2); // // LocMast locMast = new LocMast(); // locMast.setLocNo("CA0100202"); // locMast.setLocSts("O"); // locMast.setRow1(1); // locMast.setBay1(2); // locMast.setLev1(2); // dtLocDetailVo.setLocMast(locMast); // // LocDetl locDetl = new LocDetl(); // locDetl.setLocNo("CA0100202"); // locDetl.setAreaId(10010L); // locDetl.setAreaName("刀具库"); // locDetl.setMatnr("mat10001"); // locDetl.setMaktx("刀把"); // dtLocDetailVo.setLocDetl(locDetl); // dtLocDetailVoList.add(dtLocDetailVo); // // // DtLocDetailVo dtLocDetailVo2 = new DtLocDetailVo(); // dtLocDetailVo2.setLocNo("CA0100202"); // dtLocDetailVo2.setLocSts("O"); // dtLocDetailVo2.setAreaId(10010L); // dtLocDetailVo2.setAreaName("刀具库"); // dtLocDetailVo2.setRow1(1); // dtLocDetailVo2.setBay1(2); // dtLocDetailVo2.setLev1(2); // // LocMast locMast2 = new LocMast(); // locMast2.setLocNo("CA0100203"); // locMast2.setLocSts("O"); // locMast2.setRow1(1); // locMast2.setBay1(2); // locMast2.setLev1(3); // dtLocDetailVo2.setLocMast(locMast2); // // LocDetl locDetl2 = new LocDetl(); // locDetl2.setLocNo("CA0100203"); // locDetl2.setAreaId(10010L); // locDetl2.setAreaName("刀具库"); // locDetl2.setMatnr("mat10001"); // locDetl2.setMaktx("刀把"); // dtLocDetailVo2.setLocDetl(locDetl2); // dtLocDetailVoList.add(dtLocDetailVo2); // // //// LocDetl locDetl2 = new LocDetl(); //// locDetl2.setLocNo("1001"); //// locDetl2.setAreaId(10010L); //// locDetl2.setAreaName("刀具库"); //// locDetl2.setMatnr("mat10001"); //// locDetl2.setMaktx("刀把"); //// ////// List locDetlList = new ArrayList<>(); ////// locDetlList.add(locDetl); ////// locDetlList.add(locDetl2); }