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); 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); return R.ok().add(detainMatVoList); } /** * 设备运行信息 * * @param areaId * @return */ @RequestMapping(value = "/equipment") // @ManagerAuth public R equipment(@RequestParam(required = false) String areaId){ return R.ok(digitalTwinService.equipment(areaId)); } /** * 库位和库存详情 * * @param areaId * @return */ @RequestMapping(value = "/warehouseDetail") // @ManagerAuth public R warehouseDetail(@RequestParam(required = false) String areaId){ return R.ok(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); } }