Commit 6284782a sunke

Merge remote-tracking branch 'origin/master'

2 个父辈 c24e222b cc3a9e06
......@@ -469,7 +469,7 @@ public class BoxKanbanController {
Integer warmUseCount=dataCache.getSpUsePosCount(storage.getCid(),DataCache.warmPosUseCount);
Integer coldingUseCount=dataCache.getSpUsePosCount(storage.getCid(),DataCache.coldingPosUseCount);
boxDto.getData().put(DataCache.warmPosUseCount,warmUseCount.toString());
boxDto.getData().put(DataCache.warmPosUseCount,coldingUseCount.toString());
boxDto.getData().put(DataCache.coldingPosUseCount,coldingUseCount.toString());
}
return boxDto;
}
......
......@@ -286,7 +286,7 @@ public class StoragePosManagerImpl implements IStoragePosManager {
/**
* 根据出库方式获取不同的 Sort
*/
private Sort getSortByCheckOutType(CHECKOUT_TYPE checkoutType){
public Sort getSortByCheckOutType(CHECKOUT_TYPE checkoutType){
Sort sort = null;
if(CHECKOUT_TYPE.EXPIRE_FIRST.equals(checkoutType)){//先过期先出
sort = Sort.by(Sort.Direction.ASC, "barcode.expTime","barcode.expireDate","canCheckOutTime");
......@@ -622,5 +622,4 @@ public class StoragePosManagerImpl implements IStoragePosManager {
return getEmptyPos(storage,barcode, excludePosIds,true);
}
}
......@@ -5,8 +5,10 @@ import com.google.common.base.Strings;
import com.neotel.smfcore.common.bean.ResultBean;
import com.neotel.smfcore.core.device.bean.StatusBean;
import com.neotel.smfcore.core.device.util.DataCache;
import com.neotel.smfcore.core.language.util.MessageUtils;
import com.neotel.smfcore.core.storage.service.po.Storage;
import com.neotel.smfcore.core.system.util.DevicesStatusUtil;
import com.neotel.smfcore.custom.djk20388.bean.AgvLogInfo;
import com.neotel.smfcore.custom.djk20388.bean.AgvViewDto;
import com.neotel.smfcore.custom.djk20388.bean.LabelingStatus;
import com.neotel.smfcore.custom.djk20388.util.AgvDataUtil;
......@@ -19,6 +21,9 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest;
import java.util.HashMap;
import java.util.List;
import java.util.Locale;
import java.util.Map;
@Slf4j
......@@ -40,6 +45,23 @@ public class DJK20388AGVController {
labelingStatus.setMimoCid(getMimoCid());
}
labelingStatus = AgvDataUtil.process(labelingStatus);
//锡膏料仓data中的X16需要返回给贴标机
String mimoCid=labelingStatus.getMimoCid() ;
if(ObjectUtil.isEmpty(mimoCid)){
mimoCid=getMimoCid();
}
if (ObjectUtil.isNotEmpty(mimoCid)) {
StatusBean bean = DevicesStatusUtil.getStatusBean(mimoCid);
if (bean != null && bean.getBoxStatus() != null && (bean.timeOut() == false)) {
String X16=bean.getFromData("X16");
Map<String,String> x16Data=new HashMap<>();
x16Data.put("X16",X16);
labelingStatus.addOp(x16Data);
}
}
} catch (Exception e) {
log.error("", e);
}
......@@ -64,7 +86,16 @@ public class DJK20388AGVController {
agvViewDto.setMimoData(bean.getData());
}
}
agvViewDto.setLogList(AgvDataUtil.getLastLogs(10));
Locale locale= servletRequest.getLocale();
//国际化
List<AgvLogInfo> logs=AgvDataUtil.getLastLogs(10);
for (int i=0;i<=logs.size();i++){
if(ObjectUtil.isNotEmpty(logs.get(i).getMsgCode())){
String msg=MessageUtils.getText(logs.get(i).getMsgCode(),logs.get(i).getMsgParams(),locale,logs.get(i).getMsg());
logs.get(i).setMsg(msg);
}
}
agvViewDto.setLogList(logs);
return agvViewDto;
}
private String getMimoCid() {
......
......@@ -22,7 +22,7 @@ public class DJK20388Menu {
String menuLabel = "20388";
//AGV
MenuInit.addMenu(menuLabel,null,163, "AGV","agv", "djk/agvKanban/index","agv");
MenuInit.addMenu(menuLabel,null,163, "AGV","agv", "djk/agvkanban/index","agv");
String apiName = smfApi.getApiName();
if(Strings.isNotBlank(apiName) && apiName.equals(menuLabel)){
......
......@@ -71,11 +71,16 @@ public class LabelingStatus implements Serializable {
* 添加一些服务器的操作发送到客户端(批量入库)
* @param opMap
*/
public void addOp(Map<String, String> opMap){
if(opMap != null && !opMap.isEmpty()){
public void addOp(Map<String, String> opMap) {
if (opMap != null && !opMap.isEmpty()) {
for (Map.Entry<String, String> op : opMap.entrySet()) {
addData(op.getKey(), op.getValue());
log.info("LabelingStatus addOp ["+op.getKey()+"]=["+op.getValue()+"]");
// addData(op.getKey(), op.getValue());
data.put(op.getKey(), op.getValue());
if (op.getKey().equals("X16")) {
log.debug("LabelingStatus addOp [" + op.getKey() + "]=[" + op.getValue() + "]");
} else {
log.info("LabelingStatus addOp [" + op.getKey() + "]=[" + op.getValue() + "]");
}
}
}
}
......@@ -88,14 +93,14 @@ public class LabelingStatus implements Serializable {
mimoOpMap.put(cid, opMap);
}
}
private void addData(String key, String value){
String oldValue = data.get(key);
String valueStr = value;
if(!Strings.isNullOrEmpty(oldValue)){
valueStr = valueStr + "|" + oldValue;
}
data.put(key, valueStr);
}
// private void addData(String key, String value){
// String oldValue = data.get(key);
// String valueStr = value;
// if(!Strings.isNullOrEmpty(oldValue)){
// valueStr = valueStr + "|" + oldValue;
// }
// data.put(key, valueStr);
// }
}
......@@ -9,6 +9,8 @@ import com.neotel.smfcore.core.barcode.service.po.Barcode;
import com.neotel.smfcore.custom.micron20031.bean.DepositMatReqBean;
import com.neotel.smfcore.custom.micron20031.bean.MatOrderBean;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import java.util.*;
......@@ -17,6 +19,7 @@ import java.util.*;
* @date 2022/12/21 9:11 AM
*/
@Slf4j
@Service
public class Micron20031Api {
public static String MODE_DISABLE_SAP="DISABLE_SAP";
public static String MODE_DISABLE_MAM="DISABLE_MAM";
......@@ -28,12 +31,33 @@ public class Micron20031Api {
public static String Email_TO="";
public static String Email_CC="";
private static String apiAddr = "";
@Value("${micron.email.to:}")
public void setEmaillTo(String to) {
Micron20031Api.Email_TO = to;
}
@Value("${micron.email.cc:}")
public void setEmaillCc(String cc) {
Micron20031Api.Email_CC = cc;
}
@Value("${micron.apiAddr:}")
public void setApiaddr(String apiAddr) {
Micron20031Api.apiAddr = apiAddr;
}
private static String AUTH_TOKEN = "";
private static String MATERIAL_TYPE = "SOLDER_PASTE";
public static boolean isEnable(){
if(ObjectUtil.isEmpty(apiAddr)){
return false;
}
return true;
}
public static String getAuthToken(){
String url = "https://boapi3testgtwy.micron.com/token";
try {
......@@ -355,6 +379,7 @@ public class Micron20031Api {
List<String> result = new ArrayList<String>();
result.add("test1");
result.add("test2");
return result;
}
String auth = getAuthToken();
Map<String,String> dataMap = new HashMap<>();
......@@ -387,6 +412,9 @@ public class Micron20031Api {
*/
public static String getMicronPN(String micronLotId, String equipId) throws ApiException {
String checkStockAvailableUrl = "";
if(ObjectUtil.isEmpty(checkStockAvailableUrl)){
return "2K.K2275.010";
}
String auth = getAuthToken();
Map<String,String> dataMap = new HashMap<>();
dataMap.put("MicronLotID",micronLotId);
......
......@@ -21,7 +21,7 @@ public class MicronSpApiListener extends BaseSmfApiListener {
private InListCache inListCache;
@Override
public boolean isForThisApi(String apiName) {
return false;
return Micron20031Api.isEnable();
}
@Override
public Barcode canPutInAfterResolve(String inCheckUrl, CodeValidateParam params, Barcode barcode) throws ValidateException {
......
package com.neotel.smfcore.custom.micron20031;
import cn.hutool.core.util.ObjectUtil;
import com.google.common.base.Strings;
import com.neotel.smfcore.common.bean.ResultBean;
import com.neotel.smfcore.common.exception.ApiException;
......@@ -7,10 +8,12 @@ import com.neotel.smfcore.common.exception.ValidateException;
import com.neotel.smfcore.common.utils.SecurityUtils;
import com.neotel.smfcore.core.barcode.service.po.Barcode;
import com.neotel.smfcore.core.device.util.DataCache;
import com.neotel.smfcore.core.storage.enums.CHECKOUT_TYPE;
import com.neotel.smfcore.core.storage.rest.dto.CheckOutDto;
import com.neotel.smfcore.core.storage.rest.dto.StoragePosDto;
import com.neotel.smfcore.core.storage.rest.mapstruct.StoragePosMapper;
import com.neotel.smfcore.core.storage.service.manager.IStoragePosManager;
import com.neotel.smfcore.core.storage.service.manager.impl.StoragePosManagerImpl;
import com.neotel.smfcore.core.storage.service.po.Storage;
import com.neotel.smfcore.core.storage.service.po.StoragePos;
import com.neotel.smfcore.core.system.util.TaskService;
......@@ -20,12 +23,14 @@ import io.swagger.annotations.ApiOperation;
import lombok.Data;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Sort;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.Map;
......@@ -42,7 +47,7 @@ public class MicronSpUnloadController {
private TaskService taskService;
@Autowired
private IStoragePosManager storagePosManager;
private StoragePosManagerImpl storagePosManager;
@Autowired
private StoragePosMapper storagePosMapper;
......@@ -65,13 +70,24 @@ public class MicronSpUnloadController {
@GetMapping(value = "/unload/getMicronPN")
public ResultBean getMicronPN(String lotId,String lineId) {
if(ObjectUtil.isEmpty(lotId)||ObjectUtil.isEmpty(lineId)){
return ResultBean.newErrorResult(-1, "smfcore.micron.operationFailure", "操作失败");
}
try {
String pn = Micron20031Api.getMicronPN(lotId, lineId);
Collection<String> excludePosIds = taskService.excludePosIds();
CHECKOUT_TYPE checkoutType = dataCache.getCheckOutType();
//根据PN查找对应的物料,验证成功后返回
Criteria c = Criteria.where("used").is(true);
c.and("barcode.partNumber").is(pn);
c.and("enable").is(true);
c.and("barcode.lockId").is(null);
c.and("barcode.appendData.AuthoriseNg").ne(true);
c.and("id").nin(excludePosIds);
Query q = new Query(c);
Sort sort =storagePosManager.getSortByCheckOutType(checkoutType);
q.with(sort);
List<StoragePos> posList = storagePosManager.findByQuery(new Query(c));
for (StoragePos pos :
posList) {
......@@ -92,7 +108,7 @@ public class MicronSpUnloadController {
log.info("unload/getMicronPN [" + pn + "] barcode [" + pos.getBarcode().getBarcode() + "] 标记为NG");
}
}
return ResultBean.newOkResult(pn);
return ResultBean.newErrorResult(-1, "smfcore.micron.checkoutByPnFail", "未找到可出库物料");
} catch (ApiException e) {
return ResultBean.newErrorResult(1, e.getMessage(), e.getMessage());
}
......@@ -111,6 +127,9 @@ public class MicronSpUnloadController {
String posName = params.get("posName");
if(ObjectUtil.isEmpty(posName)){
return ResultBean.newErrorResult(-1, "smfcore.micron.operationFailure", "操作失败");
}
StoragePos pos = storagePosManager.getByPosName(posName);
if (pos == null) {
return ResultBean.newErrorResult(-1, "smfcore.micron.operationFailure", "操作失败");
......
......@@ -14,6 +14,7 @@ import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.stereotype.Service;
import javax.annotation.PostConstruct;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
......@@ -37,7 +38,11 @@ public class MicronSpTimerProcess {
private boolean isRunning = false;
@PostConstruct
public void init() {
if (!Micron20031Api.isEnable()) {
return;
}
if (!isRunning) {
isRunning = true;
log.info("开始20031入库任务定时处理");
......@@ -49,7 +54,7 @@ public class MicronSpTimerProcess {
DespositProcess();
InlistTimeoutProcess();
}
}, 10, 60, TimeUnit.SECONDS);
}, 60, 60, TimeUnit.SECONDS);
}
}
......@@ -68,9 +73,9 @@ public class MicronSpTimerProcess {
for (InListItem item :
inList.getInListItems()) {
if (item.getInNum() <= 0) {
//发送邮件
Micron20031Api.sendEmail(Micron20031Api.Email_TO, Micron20031Api.Email_CC, inList.getName(), item.getRi());
log.info("sendEmail [" + inList.getName() + "] [" + item.getRi() + "] 给[" + Micron20031Api.Email_TO + "][" + Micron20031Api.Email_CC + "] 成功");
}
}
inList.setSendEmail(true);
......@@ -94,11 +99,11 @@ public class MicronSpTimerProcess {
for (Barcode barcode :
barcodeList) {
//发送邮件
Micron20031Api.mATrackOut(barcode);
barcode.updateAppendData("maTrackOut", true);
barcodeManager.saveBarcode(barcode);
log.info("DespositProcess barcode=[" + barcode.getBarcode() + "] 调用maTrackOut 成功");
}
} catch (Exception ex) {
log.info("条码stabilizationEndDate到达后发送 maTrackOut出错:" + ex.getMessage());
......
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!