Commit 6987646e LN

1053:生成工单。麦康尼获取库位号失败修改。增加根据任务获取料架类型。

1 个父辈 c4c0caef
......@@ -236,6 +236,8 @@ public class RobotBoxHandler extends BaseDeviceHandler {
String errorMsg = "";
List<Storage> storageList = Lists.newArrayList();
List<String> cidList = dataCache.getAvailableStorageIds(this.getDeviceType());
List<String> thirdList=dataCache.getAvailableStorageIds(DeviceType.SMDBOX_THIRD);
cidList.addAll(thirdList);
for (String cid : cidList) {
String notIntoCids = dataCache.getSettings().getNotIntoCids();
if (notIntoCids != null) {
......
......@@ -611,4 +611,54 @@ public class OrderController {
return null;
}
@ApiOperation("生成工单")
@PostMapping(value = "/createOrder")
@PreAuthorize("@el.check('createOrder')")
public ResultBean createOrder(@RequestBody Map<String, Object> paramsMap) {
String orderNo = paramsMap.get("orderNo").toString();
List<String> realIds = (List<String>) paramsMap.get("realIds");
if(ObjectUtil.isEmpty(orderNo)) {
SimpleDateFormat format = new SimpleDateFormat("yyyyMMddHHmmss");
orderNo = "WO" + format.format(new Date());
}
//创建新工单
LiteOrder fileNameOrder = liteOrderManager.findBySource(orderNo);
if (fileNameOrder == null) {
try {
List<LiteOrderItem> items = new ArrayList<>();
for (String realId :
realIds) {
LiteOrderItem item = new LiteOrderItem();
item.setRi(realId);
item.setNeedReelCount(1);
item.setNeedNum(1);
items.add(item);
}
LiteOrder liteOrder = new LiteOrder(orderNo, items);
LiteOrder dbOrder = liteOrderManager.findByOrderNo(liteOrder.getOrderNo());
if (dbOrder != null) {
SimpleDateFormat format = new SimpleDateFormat("yyyyMMddHHmmss");
//把名字改为带时间的
String newOrderNo = liteOrder.getOrderNo() + "-" + format.format(new Date());
dbOrder = liteOrderManager.findByOrderNo(newOrderNo);
if (dbOrder == null) {
liteOrder.setOrderNo(newOrderNo);
} else {
return ResultBean.newErrorResult(-99, "smfcore.micron.operationFailure", "操作失败");
}
}
log.info("生成工单:" + liteOrder.getOrderNo() + ",共" + items.size() + "条工单详情");
liteOrder = liteOrderManager.createWithItems(liteOrder);
liteOrderCache.addOrderToMap(liteOrder);
} catch (Exception e) {
log.error("生成工单 error :", e);
//resultFile = new File(localDir+File.separator + "error",backupFileName);
}
}
return ResultBean.newOkResult("");
}
}
......@@ -6,6 +6,7 @@ import lombok.Data;
import java.io.Serializable;
import java.util.List;
import java.util.Map;
/**
* ML5页面状态
......@@ -30,4 +31,8 @@ public class ML5StatusDto implements Serializable {
@ApiModelProperty("消息列表")
private List<EquipMsg> msgList=null;
@ApiModelProperty("需要的料架列表,key=料架类型,value=数量")
private Map<String, Integer> needShelfs=null;
}
package com.neotel.smfcore.custom.micron1053.controller;
import com.neotel.smfcore.core.system.service.po.DataLog;
import com.neotel.smfcore.core.system.util.TaskService;
import com.neotel.smfcore.custom.micron1053.bean.EquipMsg;
import com.neotel.smfcore.custom.micron1053.bean.MicronEquipStatus;
import com.neotel.smfcore.custom.micron1053.bean.dto.ML5StatusDto;
......@@ -9,19 +11,23 @@ import com.neotel.smfcore.security.annotation.AnonymousAccess;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@Slf4j
@RestController
@Api(tags = "1053:ML5")
@RequestMapping("/rest/micron/ml5")
public class MicronML5Controller {
@Autowired
private TaskService taskService;
@ApiOperation("ML5页面数据获取")
@GetMapping("/status")
......@@ -46,6 +52,24 @@ public class MicronML5Controller {
msgs.addAll(l1.getMsgList());
msgs.addAll(l2.getMsgList());
dto.setMsgList(msgs);
Map<String,Integer> needShelfs=new HashMap<>();
List<DataLog> dataLogs= taskService.getAllTasks();
for (DataLog task :dataLogs
) {
String taskType=MicronDataCache.GetMaterialType(task);
String shelf=MicronDataCache.getShelfType(taskType);
if(needShelfs.containsKey(shelf)){
int newCount=needShelfs.get(shelf)+1;
needShelfs.put(shelf,newCount);
}else{
needShelfs.put(shelf,1);
}
}
if(needShelfs.size()>0){
dto.setNeedShelfs(needShelfs);
}
return dto;
}
}
package com.neotel.smfcore.custom.micron1053.controller;
import com.neotel.smfcore.common.bean.ResultBean;
import com.neotel.smfcore.common.utils.JsonUtil;
import com.neotel.smfcore.core.system.service.po.DataLog;
import com.neotel.smfcore.core.system.util.TaskService;
import com.neotel.smfcore.custom.micron1053.bean.MicronEquipStatus;
import com.neotel.smfcore.custom.micron1053.util.MicronDataCache;
import com.neotel.smfcore.security.annotation.AnonymousAccess;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest;
......@@ -17,24 +21,65 @@ import java.util.List;
@Api(tags = "1053:设备端接口")
@RequestMapping("/rest/micron/service")
public class MicronServiceController {
@Autowired
private TaskService taskService;
@ApiOperation("单个设备状态更新,可传集合,也可只传一个设备状态 (ML5,CI,R1,R2,R3) (1=正常运行,2=报警) ")
@PostMapping(value = "/updateStatus")
@ResponseBody
@AnonymousAccess
public ResultBean status(@RequestBody Object param, HttpServletRequest request) {
if(param instanceof MicronEquipStatus) {
MicronEquipStatus mStatusBean = (MicronEquipStatus) param;
MicronDataCache.updateEquipStatus(mStatusBean);
}
else{
List<MicronEquipStatus> list=(List<MicronEquipStatus>) param;
for (MicronEquipStatus mStatusBean:list
if (param instanceof List) {
List<Object> list = (List<Object>) param;
for (Object object : list
) {
MicronEquipStatus mStatusBean = JsonUtil.toObj(object.toString(), MicronEquipStatus.class);
MicronDataCache.updateEquipStatus(mStatusBean);
}
} else {
MicronEquipStatus mStatusBean = JsonUtil.toObj(param.toString(), MicronEquipStatus.class);
MicronDataCache.updateEquipStatus(mStatusBean);
}
return ResultBean.newOkResult("");
}
@ApiOperation(" 获取治具任务数量,料盘任务数量 ")
@PostMapping(value = "/getTaskCount")
@ResponseBody
@AnonymousAccess
public ResultBean getTaskCount( HttpServletRequest request) {
String type = request.getParameter("type");
int count=0;
List<DataLog> dataLogs= taskService.getAllTasks();
for (DataLog task :dataLogs
) {
String taskType=MicronDataCache.GetMaterialType(task);
if(taskType.toLowerCase().equals(type.toLowerCase())){
count++;
}
}
//SBSH1,SBSH2,SBDH1-1,SBDH1-2,SBDH2-1.SBDH2-2这些都是Pizza box,对应的料架是M01开头的,每个料架可以放5盘料
//SBDH3-1里面有pcb,对应的料架是M02开头,每个料架可以放5盘料。
// tray对应的料架是M03开头,每个料架可以放4盘料,
// 还有reel料盘尺寸是13*44,13*56,13*72
//SBDH3-2里面是pcb物料
// 310*80是PCB
// 330*120是tray
// 13*72的入13*44,13*56,13*72的料盘
//pizzaBox (料架M01,每个料架5盘) SBSH1,SBSH2,SBDH1-1,SBDH1-2,SBDH2-1.SBDH2-2
//pcb (料架M02,每个料架5盘) SBDH3-2,SBDH3-1部分
//tray (料架M03,每个料架4盘) SBDH3-1 里
//reel (料架M01,每个料架5盘) SBDH3-1 13*44,13*56,13*72
return ResultBean.newOkResult(count);
}
// @ApiOperation("ML5设备状态更新")
// @PostMapping(value = "ml5/updateStatus")
......
package com.neotel.smfcore.custom.micron1053.util;
import com.neotel.smfcore.core.system.service.po.DataLog;
import com.neotel.smfcore.custom.micron1053.bean.MicronEquipStatus;
import java.util.HashMap;
......@@ -35,4 +36,66 @@ public class MicronDataCache {
}
return new MicronEquipStatus();
}
public static String PIZZABOX="pizzaBox";
public static String PCB="pcb";
public static String TRAY="tray";
public static String REEL="reel";
public static String GetMaterialType(String cid,String storageId,int w,int h){
String[] pizzaCids=new String[]{"SBSH1","SBSH2","SBDH1-1","SBDH1-2","SBDH2-1","SBDH2-2"};
for (String pizzaCid :
pizzaCids) {
if (pizzaCid.equals(cid)) {
return PIZZABOX;
}
}
if(cid.equals("SBDH3-1")) {
if (w== 310 && h == 80) {
return PCB;
} else if (w == 330 &&h == 120) {
return TRAY;
} else if (w== 13) {
return PCB;
}
}
else if(cid.equals("SBDH3-2")){
return PCB;
}
// else if(storage.isType(new DeviceType[] {DeviceType.SMDBOX_THIRD} )){
// return REEL;
// }
return REEL;
//SBSH1,SBSH2,SBDH1-1,SBDH1-2,SBDH2-1.SBDH2-2这些都是Pizza box,对应的料架是M01开头的,每个料架可以放5盘料
//SBDH3-1里面有pcb,对应的料架是M02开头,每个料架可以放5盘料。
// tray对应的料架是M03开头,每个料架可以放4盘料,
// 还有reel料盘尺寸是13*44,13*56,13*72
//SBDH3-2里面是pcb物料
// 310*80是PCB
// 330*120是tray
// 13*72的入13*44,13*56,13*72的料盘
//386*86的这个库位设计的时候错了,就不使用了
//pizzaBox (料架M01,每个料架5盘) SBSH1,SBSH2,SBDH1-1,SBDH1-2,SBDH2-1.SBDH2-2
//pcb (料架M02,每个料架5盘) SBDH3-2,SBDH3-1部分
//tray (料架M03,每个料架4盘) SBDH3-1 里
//reel (料架M01,每个料架5盘) SBDH3-1 13*44,13*56,13*72
}
public static String GetMaterialType(DataLog dataLog){
return REEL;
}
public static String getShelfType(String materialType){
if(materialType.equals(PIZZABOX)){
return "M01";
}else if(materialType.equals(PCB)){
return "M02";
}else if(materialType.equals(TRAY)){
return "M03";
}
return "";
}
}
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!