package com.zy.asrs.wms.asrs.controller; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.zy.asrs.framework.common.DateUtils; import com.zy.asrs.framework.common.R; import com.zy.asrs.wms.asrs.entity.Loc; import com.zy.asrs.wms.asrs.entity.TaskLog; import com.zy.asrs.wms.asrs.entity.echart.EChartLineBean; import com.zy.asrs.wms.asrs.entity.echart.EChartPieBean; import com.zy.asrs.wms.asrs.entity.enums.LocStsType; import com.zy.asrs.wms.asrs.entity.statistics.InformationTop; import com.zy.asrs.wms.asrs.entity.statistics.ViewInOut; import com.zy.asrs.wms.asrs.mapper.statistics.ViewInOutMapper; import com.zy.asrs.wms.asrs.service.LocService; import com.zy.asrs.wms.asrs.service.MatService; import com.zy.asrs.wms.asrs.service.TaskDetlLogService; import com.zy.asrs.wms.asrs.service.TaskLogService; import com.zy.asrs.wms.common.annotation.CacheData; import com.zy.asrs.wms.system.controller.BaseController; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import java.text.SimpleDateFormat; import java.util.*; @RestController @RequestMapping("/api") public class EChartController extends BaseController { @Autowired private LocService locService; @Autowired private TaskLogService taskLogService; @Autowired private TaskDetlLogService taskDetlLogService; @Autowired private ViewInOutMapper viewInOutMapper; @Autowired private MatService matService; @PostMapping("/charts/loc/use") @CacheData(tableName = {"man_loc"}) public R locUse(){ List list = new ArrayList<>(); long fqty = locService.count(new LambdaQueryWrapper().in(Loc::getLocStsId, LocStsType.F.val(), LocStsType.D.val())); long oqty = locService.count(new LambdaQueryWrapper().in(Loc::getLocStsId, LocStsType.O.val())); long uqty = locService.count(new LambdaQueryWrapper().in(Loc::getLocStsId, LocStsType.S.val(), LocStsType.R.val())); long xqty = locService.count(new LambdaQueryWrapper().in(Loc::getLocStsId, LocStsType.X.val())); EChartPieBean fbean = new EChartPieBean(); fbean.setName("在库库位"); fbean.setValue(fqty); list.add(fbean); EChartPieBean obean = new EChartPieBean(); obean.setName("空库位"); obean.setValue(oqty); list.add(obean); EChartPieBean ubean = new EChartPieBean(); ubean.setName("使用库位"); ubean.setValue(uqty); list.add(ubean); EChartPieBean xbean = new EChartPieBean(); xbean.setName("禁用库位"); xbean.setValue(xqty); list.add(xbean); return R.ok(list); } @PostMapping("/charts/loc/line") @CacheData(tableName = {"man_task_log"}) public R locIoLineCharts(){ SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd"); Calendar calendar = Calendar.getInstance(); calendar.add(Calendar.DATE, -12); ArrayList days = new ArrayList<>(); ArrayList inData = new ArrayList<>(); ArrayList outData = new ArrayList<>(); for (int i = 0; i < 12; i++) { calendar.add(Calendar.DATE, 1); Date time = calendar.getTime(); days.add(sf.format(time)); Date startOfDay = DateUtils.getStartOfDay(time); Date endOfDay = DateUtils.getEndOfDay(time); LambdaQueryWrapper inWrapper = new LambdaQueryWrapper() .ge(TaskLog::getCreateTime, startOfDay) .le(TaskLog::getCreateTime, endOfDay) .eq(TaskLog::getTaskSts, 100) .in(TaskLog::getTaskType, 1, 53, 57); LambdaQueryWrapper outWrapper = new LambdaQueryWrapper() .ge(TaskLog::getCreateTime, startOfDay) .le(TaskLog::getCreateTime, endOfDay) .eq(TaskLog::getTaskSts, 200) .in(TaskLog::getTaskType, 101, 103, 107); long inCount = taskLogService.count(inWrapper); long outCount = taskLogService.count(outWrapper); inData.add(inCount); outData.add(outCount); } EChartLineBean inBean = new EChartLineBean(); inBean.setName("入库数量"); inBean.setValue(inData); EChartLineBean outBean = new EChartLineBean(); outBean.setName("出库数量"); outBean.setValue(outData); HashMap map = new HashMap<>(); map.put("in", inBean); map.put("out", outBean); map.put("days", days); return R.ok().add(map); } @PostMapping("/charts/information") @CacheData(tableName = {"man_mat", "man_task", "man_task_log"}) public R information() { HashMap data = new HashMap<>(); long matCount = matService.count(); Long inQty = 0L; Long outQty = 0L; Long totalQty = 0L; SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd"); ViewInOut viewInOut = viewInOutMapper.selectOne(new LambdaQueryWrapper().eq(ViewInOut::getYmd, format.format(new Date())).orderByDesc(ViewInOut::getYmd).last("limit 0,1")); if (viewInOut != null) { inQty = viewInOut.getInQty(); outQty = viewInOut.getOutQty(); totalQty = viewInOut.getTotalQty(); } data.put("inCount", inQty); data.put("outCount", outQty); data.put("totalCount", totalQty); data.put("matCount", matCount); return R.ok().add(data); } @PostMapping("/charts/information/top") @CacheData(tableName = {"man_task_detl_log"}) public R informationTop() { List topIn = taskDetlLogService.getInformationTopIn(10); List topOut = taskDetlLogService.getInformationTopOut(10); HashMap data = new HashMap<>(); data.put("topIn", topIn); data.put("topOut", topOut); return R.ok().add(data); } }