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){ //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){ // 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){ // 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){ // 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){ // 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){ // digitalTwinService.warehouseDetail(areaId); 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); return R.ok().add(dtLocDetailVoList); } }