zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/controller/LedApiController.java
@@ -3,14 +3,19 @@ import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.zy.asrs.framework.common.Arith; import com.zy.asrs.framework.common.Cools; import com.zy.asrs.framework.common.R; import com.zy.asrs.wcs.core.domain.dto.AxisBean; import com.zy.asrs.wcs.core.domain.dto.WorkChartAxis; import com.zy.asrs.wcs.core.domain.vo.LocChartPie; import com.zy.asrs.wcs.core.entity.BasConveyorSta; import com.zy.asrs.wcs.core.entity.BasShuttle; import com.zy.asrs.wcs.core.entity.Loc; import com.zy.asrs.wcs.core.service.BasConveyorStaService; import com.zy.asrs.wcs.core.service.BasShuttleService; import com.zy.asrs.wcs.core.service.LocService; import com.zy.asrs.wcs.core.service.TaskService; import com.zy.asrs.wcs.rcs.model.protocol.ShuttleProtocol; import com.zy.asrs.wcs.system.controller.BaseController; import io.swagger.models.auth.In; @@ -21,9 +26,8 @@ import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; import java.util.Calendar; import java.util.Date; import java.util.List; import java.text.SimpleDateFormat; import java.util.*; @RestController @RequestMapping("/monitor") @@ -36,6 +40,101 @@ private BasShuttleService basShuttleService; @Autowired private LocService locService; @Autowired private TaskService taskService; @GetMapping("/loc/rep") public R monitorLocRep(){ List<Map<String, Object>> pie = new ArrayList<>(); LocChartPie locUseRate = locService.getLocUseRate(); if(locUseRate!=null) { Map<String, Object> map = new HashMap<>(); map.put("name", "在库"); map.put("value", locUseRate.getFqty()); pie.add(map); Map<String, Object> map1 = new HashMap<>(); map1.put("name", "空"); map1.put("value", locUseRate.getOqty()); pie.add(map1); Map<String, Object> map2 = new HashMap<>(); map2.put("name", "使用"); map2.put("value", locUseRate.getUqty()); pie.add(map2); Map<String, Object> map3 = new HashMap<>(); map3.put("name", "禁用"); map3.put("value", locUseRate.getXqty()); pie.add(map3); } // 总库位数 Integer total = (int) Arith.add(0, locUseRate.getFqty(), locUseRate.getOqty(), locUseRate.getUqty(), locUseRate.getXqty()); // 使用中 Integer used = locUseRate.getFqty() + locUseRate.getUqty(); // 库位使用率 double usedDivides = Arith.divides(3, used, total); double usedPr = Arith.multiplys(1, usedDivides, 100); return R.ok( Cools.add("pie", pie) .add("stockCunt", locUseRate.getFqty()) .add("emptyCount", locUseRate.getOqty()) .add("noneCount", locUseRate.getXqty()) .add("total", total) .add("used", used) .add("usedPr", usedPr) ); } @GetMapping("/line/charts") public R locIoLineCharts(){ Map<String,Object> map=new HashMap<String, Object>(); List<AxisBean> list = new ArrayList<AxisBean>(); List<WorkChartAxis> listChart = taskService.selectByLineCharts(); if(listChart!=null) { ArrayList<Integer> data1 = new ArrayList<Integer>(); ArrayList<Integer> data2 = new ArrayList<Integer>(); SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd"); Calendar calendar = Calendar.getInstance(); calendar.add(Calendar.DATE, -12); for(int i=0;i<12;i++) { boolean flag = true; calendar.add(Calendar.DATE, 1); String str = sf.format(calendar.getTime()); for(WorkChartAxis workChart : listChart) { if(str.equals(workChart.getYmd())) { data1.add(workChart.getInqty()); data2.add(workChart.getOutqty()); flag = false; break; } } if(flag) { data1.add(0); data2.add(0); } } AxisBean inqty = new AxisBean(); inqty.setName("入库数量"); Integer[] array1 = new Integer[data1.size()]; inqty.setData(data1.toArray(array1)); list.add(inqty); AxisBean outqty = new AxisBean(); outqty.setName("出库数量"); Integer[] array2 = new Integer[data2.size()]; outqty.setData(data2.toArray(array2)); list.add(outqty); } map.put("rows",list); return R.ok(map); } @GetMapping("/date") zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/domain/dto/AxisBean.java
New file @@ -0,0 +1,16 @@ package com.zy.asrs.wcs.core.domain.dto; import lombok.Data; /** * 曲线图表json键 * @author admin * */ @Data public class AxisBean { private String name; private Integer[] data; } zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/domain/dto/WorkChartAxis.java
New file @@ -0,0 +1,17 @@ package com.zy.asrs.wcs.core.domain.dto; import lombok.Data; /** * 入出库统计曲线图 * @author admin * @date 2018年12月12日 */ @Data public class WorkChartAxis { private String ymd; private int inqty; private int outqty; } zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/domain/vo/LocChartPie.java
New file @@ -0,0 +1,17 @@ package com.zy.asrs.wcs.core.domain.vo; import lombok.Data; /** * 库位占用百分比 * @author admin * @date 2018年12月12日 */ @Data public class LocChartPie { private int fqty; private int oqty; private int uqty; private int xqty; } zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/mapper/LocMapper.java
@@ -1,12 +1,15 @@ package com.zy.asrs.wcs.core.mapper; import com.zy.asrs.wcs.core.domain.vo.LocChartPie; import com.zy.asrs.wcs.core.entity.Loc; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Select; import org.springframework.stereotype.Repository; @Mapper @Repository public interface LocMapper extends BaseMapper<Loc> { @Select("select * from asr_loc_use_view") LocChartPie getLocUseRate(); } zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/mapper/TaskMapper.java
@@ -1,9 +1,11 @@ package com.zy.asrs.wcs.core.mapper; import com.zy.asrs.wcs.core.domain.dto.WorkChartAxis; import com.zy.asrs.wcs.core.entity.Task; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; import org.springframework.stereotype.Repository; import java.util.List; @@ -54,4 +56,17 @@ Task selectChargeWorking(Integer shuttleNo); @Select("SELECT\n" + " ymd,\n" + " SUM(sto_qty) AS inqty,\n" + " SUM(ret_qty) AS outqty\n" + "FROM\n" + " asr_sta_inout_view\n" + "WHERE\n" + " ymd >= DATE_FORMAT(DATE_SUB(NOW(), INTERVAL 12 DAY), '%Y-%m-%d')\n" + "GROUP BY\n" + " ymd\n" + "ORDER BY\n" + " ymd;") List<WorkChartAxis> selectByLineCharts(); } zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/service/LocService.java
@@ -1,10 +1,12 @@ package com.zy.asrs.wcs.core.service; import com.baomidou.mybatisplus.extension.service.IService; import com.zy.asrs.wcs.core.domain.vo.LocChartPie; import com.zy.asrs.wcs.core.entity.Loc; public interface LocService extends IService<Loc> { Loc selectByLocNo(String locNo); LocChartPie getLocUseRate(); } zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/service/TaskService.java
@@ -1,6 +1,7 @@ package com.zy.asrs.wcs.core.service; import com.baomidou.mybatisplus.extension.service.IService; import com.zy.asrs.wcs.core.domain.dto.WorkChartAxis; import com.zy.asrs.wcs.core.entity.Task; import org.apache.ibatis.annotations.Param; @@ -52,4 +53,5 @@ Task selectChargeWorking(Integer shuttleNo); List<WorkChartAxis> selectByLineCharts(); } zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/service/impl/LocServiceImpl.java
@@ -2,6 +2,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.zy.asrs.framework.common.Cools; import com.zy.asrs.wcs.core.domain.vo.LocChartPie; import com.zy.asrs.wcs.core.mapper.LocMapper; import com.zy.asrs.wcs.core.entity.Loc; import com.zy.asrs.wcs.core.service.LocService; @@ -19,4 +20,9 @@ return this.getOne(new LambdaQueryWrapper<Loc>().eq(Loc::getLocNo, locNo)); } @Override public LocChartPie getLocUseRate() { return this.baseMapper.getLocUseRate(); } } zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/service/impl/TaskServiceImpl.java
@@ -1,6 +1,7 @@ package com.zy.asrs.wcs.core.service.impl; import com.zy.asrs.framework.common.Cools; import com.zy.asrs.wcs.core.domain.dto.WorkChartAxis; import com.zy.asrs.wcs.core.mapper.TaskMapper; import com.zy.asrs.wcs.core.entity.Task; import com.zy.asrs.wcs.core.model.enums.DeviceCtgType; @@ -155,4 +156,9 @@ public Task selectChargeWorking(Integer shuttleNo) { return this.baseMapper.selectChargeWorking(shuttleNo); } @Override public List<WorkChartAxis> selectByLineCharts() { return this.baseMapper.selectByLineCharts(); } }