Commit 17b6c565 sunke

阳光电源看板

1 个父辈 b1cd5c35
...@@ -17,6 +17,8 @@ public class ChartItem { ...@@ -17,6 +17,8 @@ public class ChartItem {
private int value4; private int value4;
private int value5;
public String getLabel() { public String getLabel() {
return label; return label;
} }
...@@ -53,6 +55,14 @@ public class ChartItem { ...@@ -53,6 +55,14 @@ public class ChartItem {
return value4; return value4;
} }
public int getValue5() {
return value5;
}
public void setValue5(int value5) {
this.value5 = value5;
}
public void setValue4(int value4) { public void setValue4(int value4) {
this.value4 = value4; this.value4 = value4;
} }
......
...@@ -24,7 +24,11 @@ public interface IDataLogDao extends IMongoDao { ...@@ -24,7 +24,11 @@ public interface IDataLogDao extends IMongoDao {
List<ChartItem> putInChart(Date fromTime, Date toTime,String partNumber); List<ChartItem> putInChart(Date fromTime, Date toTime,String partNumber);
List<ChartItem> checkOutChart(Date fromTime, Date toTime,String partNumber); int countCheckOut(Date fromTime, Date toTime);
int countPutIn(Date fromTime, Date toTime);
List<ChartItem> checkOutChart(Date fromTime, Date toTime, String partNumber);
DataLog findLastOut(String areaId, String barcode); DataLog findLastOut(String areaId, String barcode);
...@@ -46,5 +50,5 @@ public interface IDataLogDao extends IMongoDao { ...@@ -46,5 +50,5 @@ public interface IDataLogDao extends IMongoDao {
*/ */
List<DataLog> findByFeedPosId(String feederPosId); List<DataLog> findByFeedPosId(String feederPosId);
List<DataLog> findHistory(String barcode, Date startDate, Date endDate); List<DataLog> findHistory(String barcode, int num);
} }
package com.myproject.dao.mongo; package com.myproject.dao.mongo;
import com.myproject.bean.json.ChartItem;
import com.myproject.bean.json.LiteOrder; import com.myproject.bean.json.LiteOrder;
import java.util.Date;
import java.util.List; import java.util.List;
public interface ILiteOrderDao extends IMongoDao { public interface ILiteOrderDao extends IMongoDao {
...@@ -12,6 +14,10 @@ public interface ILiteOrderDao extends IMongoDao { ...@@ -12,6 +14,10 @@ public interface ILiteOrderDao extends IMongoDao {
LiteOrder findWithItemsByOrderNo(String orderNo); LiteOrder findWithItemsByOrderNo(String orderNo);
int countFinishOrder(Date fromTime, Date toTime);
List<ChartItem> orderChart(Date fromTime, Date toTime);
LiteOrder findBySource(String source); LiteOrder findBySource(String source);
List<LiteOrder> findUnCloseOrders(); List<LiteOrder> findUnCloseOrders();
......
...@@ -52,6 +52,24 @@ public class DataLogDaoImpl extends AbstractMongoDao implements IDataLogDao { ...@@ -52,6 +52,24 @@ public class DataLogDaoImpl extends AbstractMongoDao implements IDataLogDao {
} }
@Override @Override
public int countCheckOut(Date fromTime, Date toTime){
return count(fromTime, toTime, StorageConstants.OP.CHECKOUT);
}
@Override
public int countPutIn(Date fromTime, Date toTime){
return count(fromTime, toTime, StorageConstants.OP.PUT_IN);
}
private int count(Date fromTime, Date toTime, int type){
Date addOneDayToTime = DateUtil.addOneDayNoTime(toTime);
Criteria c = new Criteria().andOperator(Criteria.where("updateDate").gte(fromTime),
Criteria.where("updateDate").lt(addOneDayToTime)).and("type").is(type);
c.and("status").in(StorageConstants.OP_STATUS.END.name(),StorageConstants.OP_STATUS.FINISHED.name());
return countByQuery(Query.query(c));
}
@Override
public List<ChartItem> checkOutChart(Date fromTime, Date toTime,String partNumber){ public List<ChartItem> checkOutChart(Date fromTime, Date toTime,String partNumber){
return chart(fromTime, toTime, StorageConstants.OP.CHECKOUT,partNumber); return chart(fromTime, toTime, StorageConstants.OP.CHECKOUT,partNumber);
} }
...@@ -151,19 +169,15 @@ public class DataLogDaoImpl extends AbstractMongoDao implements IDataLogDao { ...@@ -151,19 +169,15 @@ public class DataLogDaoImpl extends AbstractMongoDao implements IDataLogDao {
} }
@Override @Override
public List<DataLog> findHistory(String barcode, Date startDate, Date endDate) { public List<DataLog> findHistory(String barcode, int num) {
Criteria c = new Criteria(); Criteria c = new Criteria();
if(barcode != null && !barcode.isEmpty()){ if(barcode != null && !barcode.isEmpty()){
c.and("barcode").is(barcode); c.and("barcode").is(barcode);
} }
if(startDate != null){ Query q = Query.query(c);
c.and("createDate").gte(startDate); q.limit(num);
} q.with(new Sort(Sort.Direction.DESC, "updateDate"));
return findByQuery(q);
if(endDate != null){
c.and("updateDate").lte(endDate);
}
return findByQuery(Query.query(c));
} }
} }
package com.myproject.dao.mongo.impl; package com.myproject.dao.mongo.impl;
import com.google.common.collect.Lists; import com.google.common.collect.Lists;
import com.myproject.bean.json.ChartItem;
import com.myproject.bean.json.LiteOrder; import com.myproject.bean.json.LiteOrder;
import com.myproject.bean.json.LiteOrderItem; import com.myproject.bean.json.LiteOrderItem;
import com.myproject.dao.mongo.AbstractMongoDao; import com.myproject.dao.mongo.AbstractMongoDao;
import com.myproject.dao.mongo.ILiteOrderDao; import com.myproject.dao.mongo.ILiteOrderDao;
import com.myproject.dao.mongo.ILiteOrderItemDao; import com.myproject.dao.mongo.ILiteOrderItemDao;
import com.myproject.util.DateUtil;
import com.myproject.util.StorageConstants; import com.myproject.util.StorageConstants;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.apache.logging.log4j.util.Strings;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Sort; import org.springframework.data.domain.Sort;
import org.springframework.data.mongodb.core.aggregation.Aggregation;
import org.springframework.data.mongodb.core.aggregation.AggregationResults;
import org.springframework.data.mongodb.core.query.Criteria; import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query; import org.springframework.data.mongodb.core.query.Query;
import org.springframework.stereotype.Repository; import org.springframework.stereotype.Repository;
...@@ -56,6 +61,29 @@ public class LiteOrderDaoImpl extends AbstractMongoDao implements ILiteOrderDao ...@@ -56,6 +61,29 @@ public class LiteOrderDaoImpl extends AbstractMongoDao implements ILiteOrderDao
} }
@Override @Override
public int countFinishOrder(Date fromTime, Date toTime){
Date addOneDayToTime = DateUtil.addOneDayNoTime(toTime);
Criteria c = new Criteria().andOperator(Criteria.where("updateDate").gte(fromTime),
Criteria.where("updateDate").lt(addOneDayToTime));
return countByQuery(Query.query(c));
}
@Override
public List<ChartItem> orderChart(Date fromTime, Date toTime){
Date addOneDayToTime = DateUtil.addOneDayNoTime(toTime);
Criteria c = new Criteria().andOperator(Criteria.where("updateDate").gte(fromTime),
Criteria.where("updateDate").lt(addOneDayToTime));
Aggregation agg = Aggregation.newAggregation(
Aggregation.match(c),
Aggregation.project().and("updateDate").extractDayOfYear().as("label"),
Aggregation.group("label").count().as("value"),
Aggregation.project("value").and("label").previousOperation()
);
AggregationResults<ChartItem> results = getMongoTemplate().aggregate(agg, getEntityClass(), ChartItem.class);
return results.getMappedResults();
}
@Override
public LiteOrder findBySource(String source) { public LiteOrder findBySource(String source) {
if (StringUtils.isEmpty(source)) if (StringUtils.isEmpty(source))
return null; return null;
......
...@@ -17,6 +17,8 @@ public interface IStorageManager extends IManager<Storage> { ...@@ -17,6 +17,8 @@ public interface IStorageManager extends IManager<Storage> {
public Storage findEmptyStorage(); public Storage findEmptyStorage();
ChartItem getWeekData();
Collection<ChartItem> getRunStatusData(Date fromDate, Date toDate, String partNumber); Collection<ChartItem> getRunStatusData(Date fromDate, Date toDate, String partNumber);
List<Storage> findByArea(String areaId); List<Storage> findByArea(String areaId);
......
...@@ -6,6 +6,7 @@ import com.myproject.bean.search.PageList; ...@@ -6,6 +6,7 @@ import com.myproject.bean.search.PageList;
import com.myproject.bean.update.Storage; import com.myproject.bean.update.Storage;
import com.myproject.dao.mongo.IAlarmInfoDao; import com.myproject.dao.mongo.IAlarmInfoDao;
import com.myproject.dao.mongo.IDataLogDao; import com.myproject.dao.mongo.IDataLogDao;
import com.myproject.dao.mongo.ILiteOrderDao;
import com.myproject.dao.mongo.IStorageDao; import com.myproject.dao.mongo.IStorageDao;
import com.myproject.exception.ValidateException; import com.myproject.exception.ValidateException;
import com.myproject.manager.IStorageManager; import com.myproject.manager.IStorageManager;
...@@ -27,6 +28,9 @@ public class StorageManagerImpl implements IStorageManager { ...@@ -27,6 +28,9 @@ public class StorageManagerImpl implements IStorageManager {
IDataLogDao dataLogDao; IDataLogDao dataLogDao;
@Autowired @Autowired
IAlarmInfoDao alarmInfoDao; IAlarmInfoDao alarmInfoDao;
@Autowired
ILiteOrderDao liteOrderDao;
protected final transient Logger log = LogManager.getLogger(getClass()); protected final transient Logger log = LogManager.getLogger(getClass());
...@@ -59,6 +63,20 @@ public class StorageManagerImpl implements IStorageManager { ...@@ -59,6 +63,20 @@ public class StorageManagerImpl implements IStorageManager {
return storage; return storage;
} }
@Override
public ChartItem getWeekData(){
Date startDay = DateUtil.getFirstDayOfThisWeek();
Date endDay = new Date();
int putInCount = dataLogDao.countPutIn(startDay, endDay);
int checkOutCount = dataLogDao.countCheckOut(startDay, endDay);
int orderCount = liteOrderDao.countFinishOrder(startDay, endDay);
ChartItem item = new ChartItem();
item.setValue(putInCount);
item.setValue2(checkOutCount);
item.setValue3(orderCount);
return item;
}
/** /**
* 获取某个时间段的统计信息ChartItem 的 value 为入库量,value2为出库量,value3为报警次数,value4为报警持续时间 * 获取某个时间段的统计信息ChartItem 的 value 为入库量,value2为出库量,value3为报警次数,value4为报警持续时间
*/ */
...@@ -115,6 +133,15 @@ public class StorageManagerImpl implements IStorageManager { ...@@ -115,6 +133,15 @@ public class StorageManagerImpl implements IStorageManager {
item.setValue4(alarmItem.getValue2()); item.setValue4(alarmItem.getValue2());
} }
} }
List<ChartItem> orderData = liteOrderDao.orderChart(startDay, endDay);
for (ChartItem orderItem : orderData){
String dayOfYear = orderItem.getLabel();
ChartItem item = inOutDataMap.get(dayOfYear);
if(item != null){
item.setValue5(orderItem.getValue());
}
}
//alarmInfoDao.alarmChartByType(startDay,endDay); //alarmInfoDao.alarmChartByType(startDay,endDay);
//alarmInfoDao.alarmChartByBox(startDay,endDay); //alarmInfoDao.alarmChartByBox(startDay,endDay);
return inOutDataMap.values(); return inOutDataMap.values();
......
...@@ -126,6 +126,15 @@ public final class DateUtil { ...@@ -126,6 +126,15 @@ public final class DateUtil {
} }
/** /**
* 获取本周的第一天
*/
public static Date getFirstDayOfThisWeek(){
Calendar c = noTimeCalendar();
c.set(Calendar.DAY_OF_WEEK,Calendar.MONDAY);
return c.getTime();
}
/**
* 将日期添加一天,时间设置为00:00:00 * 将日期添加一天,时间设置为00:00:00
*/ */
public static Date addOneDayNoTime(Date date){ public static Date addOneDayNoTime(Date date){
......
...@@ -75,6 +75,12 @@ public class ChartController extends BaseController{ ...@@ -75,6 +75,12 @@ public class ChartController extends BaseController{
return storageManager.getRunStatusData(startDay, today, null); return storageManager.getRunStatusData(startDay, today, null);
} }
@RequestMapping("/rest/api/weekData")
@ResponseBody
public ChartItem weekData(HttpServletRequest request){
return storageManager.getWeekData();
}
@RequestMapping("/rest/api/humiture") @RequestMapping("/rest/api/humiture")
@ResponseBody @ResponseBody
public HumitureData humitureData(HttpServletRequest request){ public HumitureData humitureData(HttpServletRequest request){
......
...@@ -6,6 +6,8 @@ import com.google.common.collect.Maps; ...@@ -6,6 +6,8 @@ import com.google.common.collect.Maps;
import com.google.common.collect.Sets; import com.google.common.collect.Sets;
import com.myproject.bean.CodeBean; import com.myproject.bean.CodeBean;
import com.myproject.bean.update.*; import com.myproject.bean.update.*;
import com.myproject.bean.utils.BoxStatusBean;
import com.myproject.bean.utils.StatusBean;
import com.myproject.dao.mongo.IDataLogDao; import com.myproject.dao.mongo.IDataLogDao;
import com.myproject.exception.ValidateException; import com.myproject.exception.ValidateException;
import com.myproject.manager.IBarcodeManager; import com.myproject.manager.IBarcodeManager;
...@@ -306,22 +308,34 @@ public class MesApiController extends BaseController { ...@@ -306,22 +308,34 @@ public class MesApiController extends BaseController {
} }
@RequestMapping(value = "/history") @RequestMapping(value = "/history")
@ResponseBody @ResponseBody
public List<Map<String,Object>> history(HttpServletRequest request) { public List<Map<String,Object>> history(HttpServletRequest request) {
String bid = request.getParameter("bid"); String bid = request.getParameter("bid");
String start = request.getParameter("start"); // String start = request.getParameter("start");
String end = request.getParameter("end"); // String end = request.getParameter("end");
Date startDate = toDate(start); // Date startDate = toDate(start);
Date endDate = toDate(end); // Date endDate = toDate(end);
String numStr = request.getParameter("num");
int num = 20;
if(!Strings.isNullOrEmpty(numStr)){
try{
num = Integer.valueOf(numStr);
}catch (Exception e){
}
}
List<Map<String,Object>> results = Lists.newArrayList(); List<Map<String,Object>> results = Lists.newArrayList();
List<DataLog> datas = dataLogDao.findHistory(bid,startDate,endDate); List<DataLog> datas = dataLogDao.findHistory(bid,num);
datas.sort(new Comparator<DataLog>() {
@Override
public int compare(DataLog o1, DataLog o2) {
return o1.getCreateDate().compareTo(o2.getCreateDate());
}
});
for (DataLog dataItem : datas){ for (DataLog dataItem : datas){
Map<String,Object> item = Maps.newHashMap(); Map<String,Object> item = Maps.newHashMap();
item.put("barcode",dataItem.getBarcode()); item.put("barcode",dataItem.getBarcode());
...@@ -329,15 +343,41 @@ public class MesApiController extends BaseController { ...@@ -329,15 +343,41 @@ public class MesApiController extends BaseController {
item.put("qty",dataItem.getNum()); item.put("qty",dataItem.getNum());
item.put("type", dataItem.getType()); item.put("type", dataItem.getType());
item.put("opor", dataItem.getOperator()); item.put("opor", dataItem.getOperator());
item.put("pos",dataItem.getPosStr()); item.put("boxName",dataItem.getStorageName());
item.put("posName",dataItem.getPosName());
item.put("source",dataItem.getSourceId());
item.put("status", dataItem.getStatus()); item.put("status", dataItem.getStatus());
item.put("memo", dataItem.getMemo());
item.put("date", DateUtil.toDateTimeString(dataItem.getCreateDate())); item.put("date", DateUtil.toDateTimeString(dataItem.getCreateDate()));
results.add(item); results.add(item);
} }
return results; return results;
} }
@RequestMapping(value = "/status")
@ResponseBody
public Map<String,Object> status(HttpServletRequest request) {
Map<String,Object> results = Maps.newHashMap();
for (Storage storage : dataCache.getAllStorage().values()){
StatusBean statusBean = taskService.getStatus(storage.getCid());
Map<Integer, BoxStatusBean> boxStatusMap = statusBean.getBoxStatus();
int status = -1;
if(boxStatusMap != null){
BoxStatusBean boxStatusBean = boxStatusMap.get(1);
if(boxStatusBean != null){
status = boxStatusBean.getStatus();
}
}
int storageStatus = status;
if(status == StorageConstants.STATUS.OFFLINE || statusBean.timeOut()){
//离线
storageStatus = -1;
}
results.put(storage.getName(), storageStatus);
}
return results;
}
private Date toDate(String dateStr){ private Date toDate(String dateStr){
try { try {
return DateUtil.toDate(dateStr,"yyyyMMddHHmmss"); return DateUtil.toDate(dateStr,"yyyyMMddHHmmss");
......
...@@ -541,7 +541,7 @@ public class StorageDataController extends BaseController { ...@@ -541,7 +541,7 @@ public class StorageDataController extends BaseController {
@RequestMapping(value = "/getLineMsg") @RequestMapping(value = "/getLineMsg")
@ResponseBody @ResponseBody
public String getLineMsg(HttpServletRequest request) { public String getLineMsg(HttpServletRequest request) {
if(lineMsgParams != null){ if(lineMsgParams == null){
return ""; return "";
} }
return getText(lineMsgParams.getMessage(),lineMsgParams.getParams(), request.getLocale(),lineMsgParams.getDefaultMsg()); return getText(lineMsgParams.getMessage(),lineMsgParams.getParams(), request.getLocale(),lineMsgParams.getDefaultMsg());
...@@ -600,7 +600,7 @@ public class StorageDataController extends BaseController { ...@@ -600,7 +600,7 @@ public class StorageDataController extends BaseController {
Storage theStorage = dataCache.getStorageById(pos.getStorageId()); Storage theStorage = dataCache.getStorageById(pos.getStorageId());
resultMap.put("cid",theStorage.getCid()); resultMap.put("cid",theStorage.getCid());
String lineMsg = "["+barcode.getBarcode()+"]准备入库到["+pos.getPosName()+"]"; String lineMsg = "["+barcode.getBarcode()+"]准备入库到["+pos.getPosName()+"]";
lineMsgParams = new ValidateException("msg.line.putIn",new String[]{code}, lineMsg); lineMsgParams = new ValidateException("msg.line.putIn",new String[]{code,pos.getPosName()}, lineMsg);
}else{ }else{
resultMap.put("result","104"); resultMap.put("result","104");
lineMsgParams = new ValidateException("error.storage.noPosFind",new String[]{code}, "未找到可用的仓位"); lineMsgParams = new ValidateException("error.storage.noPosFind",new String[]{code}, "未找到可用的仓位");
......
...@@ -1690,7 +1690,7 @@ public class TaskService implements ITaskService { ...@@ -1690,7 +1690,7 @@ public class TaskService implements ITaskService {
items.add(liteOrderItem); items.add(liteOrderItem);
} }
order.setOrderItems(items); order.setOrderItems(items);
if(order.isClosed()){ if(!order.isClosed()){
//工单未关闭的话,检查状态,全部都出完进行关闭 //工单未关闭的话,检查状态,全部都出完进行关闭
boolean closed = true; boolean closed = true;
for (LiteOrderItem liteOrderItem : order.getOrderItems()) { for (LiteOrderItem liteOrderItem : order.getOrderItems()) {
......
...@@ -101,6 +101,11 @@ ...@@ -101,6 +101,11 @@
<fmt:message key="menu.bigdata.runStatus" /><span class="selected"></span> <fmt:message key="menu.bigdata.runStatus" /><span class="selected"></span>
</a> </a>
</li> </li>
<li class="classic-menu-dropdown">
<a href="${ctx}/storage/chart.html" name="data">
<fmt:message key="数据看板" /><span class="selected"></span>
</a>
</li>
<%--<li class="classic-menu-dropdown">--%> <%--<li class="classic-menu-dropdown">--%>
<%--<a href="${ctx}/system/dataReport.html" name="data">--%> <%--<a href="${ctx}/system/dataReport.html" name="data">--%>
......
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!