Commit 04c3bd32 LN

修改:1.增加重新获取库位号接口。2.温湿度报表增加过滤。

1 个父辈 56bc8e1e
package com.neotel.smfcore.core;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.web.PageableHandlerMethodArgumentResolver;
import org.springframework.web.method.support.HandlerMethodArgumentResolver;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
import java.util.List;
@Configuration
public class PageConfig extends WebMvcConfigurerAdapter {
private static final int PMP_MAX_PAGE_SIZE = 20000;
@Override
public void addArgumentResolvers(List<HandlerMethodArgumentResolver> argumentResolvers) {
PageableHandlerMethodArgumentResolver resolver = new PageableHandlerMethodArgumentResolver();
resolver.setMaxPageSize(PMP_MAX_PAGE_SIZE);
argumentResolvers.add(resolver);
super.addArgumentResolvers(argumentResolvers);
}
}
\ No newline at end of file
......@@ -7,6 +7,7 @@ import com.google.common.collect.Maps;
import com.neotel.smfcore.common.bean.ResultBean;
import com.neotel.smfcore.common.exception.ValidateException;
import com.neotel.smfcore.common.utils.Constants;
import com.neotel.smfcore.common.utils.ReelLockPosUtil;
import com.neotel.smfcore.core.barcode.bean.CodeBean;
import com.neotel.smfcore.core.barcode.enums.COMPONENT_TYPE;
import com.neotel.smfcore.core.barcode.service.po.Barcode;
......@@ -268,6 +269,33 @@ public class RobotBoxHandler extends BaseDeviceHandler {
return statusBean;
}
@ApiOperation("第二次重新获取新入库库位")
@PostMapping(value = "/service/store/robotBox/renewPosForPutin")
@ResponseBody
@AnonymousAccess
public Map<String, Object> renewPosForPutin(HttpServletRequest request) {
//返回:97=已有入库任务,需继续执行入库动作
//返回:98=已有出库任务,需继续执行出库动作
//返回:99=所在料仓有出库任务,暂停入库
//返回:100=系统更新中,暂停出入库
//返回:104=未找到可用的仓位
//返回 105=查找空库位失败
//返回 106=唯一码已有入库任务
//返回 107=物料已过期,无法入库
//返回108=已有待完成的出入库任务,直接NG
String code = request.getParameter("code");
String cids = request.getParameter("cids");
String preCid=request.getParameter("preCid");
log.info(" renewPosForPutin 流水线[" + cids + "]重新获取[" + code + "]的入库库位, 需要排除上个料仓,cid=["+preCid+"],并取消入库任务");
return posForPutin(code,cids,preCid);
}
@ApiOperation("扫码后获取库位号")
@PostMapping(value = "/service/store/robotBox/emptyPosForPutin")
@ResponseBody
......@@ -291,6 +319,15 @@ public class RobotBoxHandler extends BaseDeviceHandler {
String lastPosId = "";
String lineMsg = "";
log.info("流水线[" + cids + "]获取[" + code + "]的入库库位");
return posForPutin(code,cids,"");
}
public Map<String, Object> posForPutin(String code,String cids,String preCid){
log.info("posForPutin,code=["+code+"],cids=["+cids+"],preCid=["+preCid+"]");
String lastPosId = "";
String lineMsg = "";
Map<String, Object> resultMap = Maps.newHashMap();
if (dataCache.getCache(Constants.CACHE_StopOut)) {
// lineMsg = "系统更新中,暂停出入库";
......@@ -312,21 +349,28 @@ public class RobotBoxHandler extends BaseDeviceHandler {
List<String> thirdList=dataCache.getAvailableStorageIds(DeviceType.SMDBOX_THIRD);
cidList.addAll(thirdList);
// for (String cid : cidList) {
for(String cid:cidArray) {
if (cidList.contains(cid)) {
String notIntoCids = dataCache.getSettings().getNotIntoCids();
if (notIntoCids != null) {
if (notIntoCids.contains(cid)) {
log.info("料仓[" + cid + "]已被屏蔽入库");
continue;
}
for(String cid:cidArray) {
if (cidList.contains(cid)) {
String notIntoCids = dataCache.getSettings().getNotIntoCids();
if (notIntoCids != null) {
if (notIntoCids.contains(cid)) {
log.info("料仓[" + cid + "]已被屏蔽入库");
continue;
}
Storage storage = dataCache.getStorage(cid);
if (storage != null) {
storageList.add(storage);
}
if(ObjectUtil.isNotEmpty(preCid)) {
if (cid.equals(preCid)) {
log.info("料仓[" + cid + "]是上个入库料仓,排除此料仓");
}
}
Storage storage = dataCache.getStorage(cid);
if (storage != null ) {
storageList.add(storage);
}
}
}
if (storageList.isEmpty()) {
//无可用的料仓
resultMap.put("result", "99");
......@@ -345,6 +389,31 @@ public class RobotBoxHandler extends BaseDeviceHandler {
return resultMap;
}
try {
if(ObjectUtil.isNotEmpty(preCid)) {
log.info("preCid="+preCid+",["+barcode.getBarcode()+"]开始取消上个入库任务");
Collection<DataLog> tasks = taskService.getAllTasks();
for (DataLog task : tasks) {
if (task.isFinished() || task.isCancel()) {
continue;
}
if (task.getBarcode().equals(barcode.getBarcode())) {
if (task.isPutInTask()) {
boolean cancelResult = taskService.cancelTask(task.getId());
log.info("renewPosForPutin 重新获取库位号时,取消[" + barcode.getBarcode() + "]上个入库任务[" + task.getPosName() + "-" + task.getCid() + "]结果:" + cancelResult);
}
}
}
log.info("preCid="+preCid+",["+barcode.getBarcode()+"]清除锁定库位");
ReelLockPosUtil.removeReelLockPosInfo(barcode.getBarcode());
}
} catch (Exception e) {
log.error("取消上个入库任务出错:" + e.toString());
}
for (DataLog dataLog : taskService.getQueueTasks()) {
//已取消或已完成的任务不返回
if(dataLog.isFinished()||dataLog.isCancel()){
......@@ -399,6 +468,7 @@ public class RobotBoxHandler extends BaseDeviceHandler {
boolean smallReel = barcode.isSmallReel();
resultMap.put("smallReel", smallReel + "");
resultMap.put("taskId", dataLog.getId());
resultMap.put("cid", dataLog.getCid());
log.info("条码[" + dataLog.getBarcode() + "]已有出库任务["+dataLog.getPosName()+"],需继续执行出库动作");
return resultMap;
}
......@@ -434,7 +504,7 @@ public class RobotBoxHandler extends BaseDeviceHandler {
if(barcode.getPlateSize()==13){
if(barcode.getHeight()==44||barcode.getHeight()==56||barcode.getHeight()==72){
//只能入robot
inStorageType=1;
inStorageType=1;
}else {
inStorageType=2;
}
......
......@@ -66,6 +66,19 @@ public class HumitureController {
}
PageData<Humiture> humitureList = humitureManager.findByPage(query,pageable);
HumitureDto restultDto = new HumitureDto();
if(humitureList.getContent().size()>=pageable.getPageSize()) {
restultDto.setHasNextPage(true);
}else
{
restultDto.setHasNextPage(false);
}
if(criteria.isChart()) {
//需要过滤
List<Humiture> newList = filteringData(humitureList.getContent());
int totalCount = humitureList.getTotalElements();
humitureList = new PageData<Humiture>(newList, totalCount);
}
restultDto.setMaxHumidity(maxHumidity);
restultDto.setMinTemperature(minTemperature);
restultDto.setMaxTemperature(maxTemperature);
......@@ -74,6 +87,30 @@ public class HumitureController {
return restultDto;
}
private List<Humiture> filteringData(List<Humiture> sList){
//key=时间,value=设备列表,
Map<String,List<String>> dataMap=new HashMap<>();
List<Humiture> humitures=new ArrayList<>();
for (Humiture humiture :sList
) {
String time=DateUtil.toDateString(humiture.getCreateDate(),"yyyyMMdd HH");
List<String> cidList=dataMap.get(time);
if(cidList==null){
cidList=new ArrayList<>();
}
if(cidList.contains(humiture.getCid())){
continue;
}
cidList.add(humiture.getCid());
dataMap.put(time,cidList);
humitures.add(humiture);
}
return humitures;
}
@ApiOperation("导出温湿度列表")
@GetMapping(value = "api/humiture/list/download")
......
......@@ -31,4 +31,8 @@ public class HumitureDto {
private float minHumidity = 0.0F;
@ApiModelProperty("温湿度数据")
PageData<Humiture> humitureList;
@ApiModelProperty("是否有下一页")
private boolean hasNextPage = false;
}
......@@ -25,4 +25,7 @@ public class HumitureQueryCriteria {
@QueryCondition(type = QueryCondition.Type.BETWEEN, propName = "createDate")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private BetweenData<Date> createDate;
@ApiModelProperty("是否是图表数据。false=非图表不需要过滤,true=图表需要过滤")
private boolean isChart=false;
}
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!