Commit d9d0ae72 zshaohui

海康功能对接提交

1 个父辈 bc5b7568
正在显示 29 个修改的文件 包含 428 行增加35 行删除
...@@ -45,10 +45,10 @@ public class DataInitManager { ...@@ -45,10 +45,10 @@ public class DataInitManager {
MainTimer mainTimer; MainTimer mainTimer;
//@Value("${menu.show}") //@Value("${menu.show}")
private String[] menuShowList = new String[]{"commonIn","returnIn","cutIn"}; private String[] menuShowList = new String[]{""};
//@Value("${menu.hide}") //@Value("${menu.hide}")
private String[] menuHideList = new String[]{"singleDiskWarehousing"}; private String[] menuHideList = new String[]{"mslOut","inList","dumpWarehousing","commonIn","returnIn","cutIn","sluggishMaterials","safetyInventory","outList","orderSet","reelOut","orderSheet","orderShortageOut","orderShortageSheet","productionLineReple","productionLineOut","interfaceException"};
@Autowired @Autowired
PermissionInitUtil annotationUtil; PermissionInitUtil annotationUtil;
......
...@@ -59,4 +59,33 @@ public class HttpHelper { ...@@ -59,4 +59,33 @@ public class HttpHelper {
} }
public static String postJson(String url, String paramStr, Map<String, String> headerMap) throws ApiException {
CloseableHttpClient httpClient = HttpClients.createDefault();
HttpPost httpPost = new HttpPost(url);
httpPost.addHeader("Content-Type", "application/json;charset=utf-8");
for (Entry<String, String> entry : headerMap.entrySet()) {
httpPost.addHeader(entry.getKey(),entry.getValue());
}
// 设置请求参数
ObjectMapper mapper = new ObjectMapper();
try {
httpPost.setEntity(new StringEntity(paramStr));
} catch (UnsupportedEncodingException e) {
throw new ApiException("Request params to [" + url + "] failed:" + e.getMessage());
}
try {
CloseableHttpResponse response = httpClient.execute(httpPost);
//System.out.println(response.getStatusLine().getStatusCode() + "\n");
HttpEntity entity = response.getEntity();
String responseContent = EntityUtils.toString(entity, CONTENT_CHARSET);
response.close();
httpClient.close();
return responseContent;
} catch (Exception e) {
throw new ApiException("Request to [" + url + "] failed:" + e.getMessage());
}
}
} }
...@@ -21,6 +21,7 @@ import com.neotel.smfcore.core.barcode.service.po.Barcode; ...@@ -21,6 +21,7 @@ import com.neotel.smfcore.core.barcode.service.po.Barcode;
import com.neotel.smfcore.core.barcode.service.po.Component; import com.neotel.smfcore.core.barcode.service.po.Component;
import com.neotel.smfcore.core.barcode.utils.QrcodeUtils; import com.neotel.smfcore.core.barcode.utils.QrcodeUtils;
import com.neotel.smfcore.core.storage.service.manager.IStoragePosManager; import com.neotel.smfcore.core.storage.service.manager.IStoragePosManager;
import com.neotel.smfcore.security.annotation.AnonymousAccess;
import com.neotel.smfcore.security.bean.FileProperties; import com.neotel.smfcore.security.bean.FileProperties;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
...@@ -250,6 +251,7 @@ public class ComponentController { ...@@ -250,6 +251,7 @@ public class ComponentController {
} }
@ApiOperation("下载元器件模板") @ApiOperation("下载元器件模板")
@GetMapping(value = "/downloadModel") @GetMapping(value = "/downloadModel")
@AnonymousAccess
@PreAuthorize("@el.check('component:list')") @PreAuthorize("@el.check('component:list')")
public void downloadModel(HttpServletResponse response) throws IOException { public void downloadModel(HttpServletResponse response) throws IOException {
downloadComponentModel(response); downloadComponentModel(response);
......
...@@ -53,7 +53,7 @@ public class Barcode extends BasePo implements Serializable { ...@@ -53,7 +53,7 @@ public class Barcode extends BasePo implements Serializable {
/** /**
* 锡膏状态 * 锡膏状态
*/ */
private int solderStatus = SOLDER_STATUS.NONE; //private int solderStatus = SOLDER_STATUS.NONE;
/** /**
* 锡膏指定时间出库 * 锡膏指定时间出库
...@@ -382,7 +382,7 @@ public class Barcode extends BasePo implements Serializable { ...@@ -382,7 +382,7 @@ public class Barcode extends BasePo implements Serializable {
} }
} }
public int getSolderStatus() { /*public int getSolderStatus() {
if (solderStatus == SOLDER_STATUS.REWARMING) { if (solderStatus == SOLDER_STATUS.REWARMING) {
//如果状态是回温中,且回温时间已经大于warmTime,修改状态为待搅拌 //如果状态是回温中,且回温时间已经大于warmTime,修改状态为待搅拌
long now = System.currentTimeMillis(); long now = System.currentTimeMillis();
...@@ -391,7 +391,7 @@ public class Barcode extends BasePo implements Serializable { ...@@ -391,7 +391,7 @@ public class Barcode extends BasePo implements Serializable {
} }
} }
return solderStatus; return solderStatus;
} }*/
public String getNeedOutDateStr() { public String getNeedOutDateStr() {
if (needOutDate == null) { if (needOutDate == null) {
......
...@@ -632,7 +632,7 @@ public class BaseDeviceHandler implements IDeviceHandler { ...@@ -632,7 +632,7 @@ public class BaseDeviceHandler implements IDeviceHandler {
barcode.setInOpor(task.getOperator()); barcode.setInOpor(task.getOperator());
barcode.setCheckOutDate(null, ""); barcode.setCheckOutDate(null, "");
barcode.setPosName(task.getPosName()); barcode.setPosName(task.getPosName());
if (barcode.isSolder()) { /*if (barcode.isSolder()) {
if (storagePos.isWarmPos()) { if (storagePos.isWarmPos()) {
//回温仓位 //回温仓位
barcode.setSolderStatus(SOLDER_STATUS.RETREAT_STORAGE); barcode.setSolderStatus(SOLDER_STATUS.RETREAT_STORAGE);
...@@ -640,7 +640,7 @@ public class BaseDeviceHandler implements IDeviceHandler { ...@@ -640,7 +640,7 @@ public class BaseDeviceHandler implements IDeviceHandler {
barcode.setSolderStatus(SOLDER_STATUS.UNDER_REFRIGERATION); barcode.setSolderStatus(SOLDER_STATUS.UNDER_REFRIGERATION);
} }
barcode.setNeedOutDate(null); barcode.setNeedOutDate(null);
} }*/
barcodeManager.save(barcode); barcodeManager.save(barcode);
} }
......
...@@ -2,12 +2,9 @@ package com.neotel.smfcore.core.device.handler.impl; ...@@ -2,12 +2,9 @@ package com.neotel.smfcore.core.device.handler.impl;
import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.ObjectUtil;
import com.neotel.smfcore.common.bean.ResultBean; import com.neotel.smfcore.common.bean.ResultBean;
import com.neotel.smfcore.common.exception.ValidateException;
import com.neotel.smfcore.core.barcode.service.po.Barcode; import com.neotel.smfcore.core.barcode.service.po.Barcode;
import com.neotel.smfcore.core.device.api.CodeValidateParam;
import com.neotel.smfcore.core.device.api.IOpAuthApi; import com.neotel.smfcore.core.device.api.IOpAuthApi;
import com.neotel.smfcore.core.device.bean.StatusBean; import com.neotel.smfcore.core.device.bean.StatusBean;
import com.neotel.smfcore.core.device.enums.OP;
import com.neotel.smfcore.core.device.enums.OP_STATUS; import com.neotel.smfcore.core.device.enums.OP_STATUS;
import com.neotel.smfcore.core.inList.service.po.InList; import com.neotel.smfcore.core.inList.service.po.InList;
import com.neotel.smfcore.core.inList.service.po.InListItem; import com.neotel.smfcore.core.inList.service.po.InListItem;
...@@ -16,32 +13,25 @@ import com.neotel.smfcore.core.order.enums.ORDER_COLOR; ...@@ -16,32 +13,25 @@ import com.neotel.smfcore.core.order.enums.ORDER_COLOR;
import com.neotel.smfcore.core.storage.enums.DeviceType; import com.neotel.smfcore.core.storage.enums.DeviceType;
import com.neotel.smfcore.core.storage.service.po.Storage; import com.neotel.smfcore.core.storage.service.po.Storage;
import com.neotel.smfcore.core.storage.service.po.StoragePos; import com.neotel.smfcore.core.storage.service.po.StoragePos;
import com.neotel.smfcore.core.system.bean.OrderSetting;
import com.neotel.smfcore.core.system.service.po.DataLog; import com.neotel.smfcore.core.system.service.po.DataLog;
import com.neotel.smfcore.core.system.util.DevicesStatusUtil; import com.neotel.smfcore.core.system.util.DevicesStatusUtil;
import com.neotel.smfcore.core.system.websocket.MsgType;
import com.neotel.smfcore.core.system.websocket.SocketMsg;
import com.neotel.smfcore.core.system.websocket.WebSocketServer;
import com.neotel.smfcore.hikvision.HikApi;
import com.neotel.smfcore.hikvision.bean.InOutApiInfo;
import com.neotel.smfcore.hikvision.bean.TransferOrderInInfo; import com.neotel.smfcore.hikvision.bean.TransferOrderInInfo;
import com.neotel.smfcore.security.TokenProvider; import com.neotel.smfcore.hikvision_mobile.HikVisionApi;
import com.neotel.smfcore.security.annotation.AnonymousAccess; import com.neotel.smfcore.security.annotation.AnonymousAccess;
import com.neotel.smfcore.security.service.manager.IUserManager; import com.neotel.smfcore.security.service.manager.IUserManager;
import com.neotel.smfcore.security.service.po.User;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.logging.log4j.util.Strings; 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.mongodb.core.query.Criteria; import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.data.mongodb.core.query.Query; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession; import javax.servlet.http.HttpSession;
import java.util.*; import java.util.*;
import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.locks.ReentrantLock;
@Api(tags = "SHELF: NLP感应料架") @Api(tags = "SHELF: NLP感应料架")
@RestController @RestController
...@@ -54,6 +44,9 @@ public class NLPShelfHandler extends BaseDeviceHandler{ ...@@ -54,6 +44,9 @@ public class NLPShelfHandler extends BaseDeviceHandler{
@Autowired @Autowired
private IUserManager userManager; private IUserManager userManager;
@Autowired
HikVisionApi hikVisionApi;
/** /**
* 库位盘点料架CID列表 * 库位盘点料架CID列表
*/ */
...@@ -204,6 +197,7 @@ public class NLPShelfHandler extends BaseDeviceHandler{ ...@@ -204,6 +197,7 @@ public class NLPShelfHandler extends BaseDeviceHandler{
} }
hasReelPosList=newList.toArray(new String[newList.size()]); hasReelPosList=newList.toArray(new String[newList.size()]);
hikVisionApi.posChange(storage,hasReelPosList,0+"");
//入库的库位列表 //入库的库位列表
if(hasReelPosList.length > 1){ if(hasReelPosList.length > 1){
...@@ -242,6 +236,7 @@ public class NLPShelfHandler extends BaseDeviceHandler{ ...@@ -242,6 +236,7 @@ public class NLPShelfHandler extends BaseDeviceHandler{
String[] noReelPosList = request.getParameterValues("noReelPosList"); String[] noReelPosList = request.getParameterValues("noReelPosList");
if(noReelPosList != null){ if(noReelPosList != null){
hikVisionApi.posChange(storage,noReelPosList,1+"");
//出库 //出库
for (String noReelPosName : noReelPosList) { for (String noReelPosName : noReelPosList) {
log.info(cid + "处理无料库位:["+noReelPosName+"]"); log.info(cid + "处理无料库位:["+noReelPosName+"]");
...@@ -304,9 +299,12 @@ public class NLPShelfHandler extends BaseDeviceHandler{ ...@@ -304,9 +299,12 @@ public class NLPShelfHandler extends BaseDeviceHandler{
try { try {
//入库完成,发送入库完成请求 //入库完成,发送入库完成请求
log.info(queueTask.getBarcode() + "入库完成,发送入库完成请求"); log.info(queueTask.getBarcode() + "入库完成,发送入库完成请求");
boolean accept = hikVisionApi.acceptTaskStatus(queueTask);
if (accept){
super.finishedPutIn(storage.getCid(), pos.getPosName()); super.finishedPutIn(storage.getCid(), pos.getPosName());
String msg = queueTask.getBarcode() + "入库到" + pos.getPosName() + "成功"; String msg = queueTask.getBarcode() + "入库到" + pos.getPosName() + "成功";
log.info(msg); log.info(msg);
}
inResult = true; inResult = true;
try { try {
//判断是否是入库单入库 //判断是否是入库单入库
...@@ -318,13 +316,13 @@ public class NLPShelfHandler extends BaseDeviceHandler{ ...@@ -318,13 +316,13 @@ public class NLPShelfHandler extends BaseDeviceHandler{
InList inList = inListCache.getInList(queueTask.getSourceName()); InList inList = inListCache.getInList(queueTask.getSourceName());
//入库完成,调用 7.2转储单入库过账接口 //入库完成,调用 7.2转储单入库过账接口
TransferOrderInInfo inInfo = new TransferOrderInInfo(inList.getName(), inList.getDocType(), queueTask.getBarcode(), item.getBaseCode(), item.getInLgort(), queueTask.getNum()); TransferOrderInInfo inInfo = new TransferOrderInInfo(inList.getName(), inList.getDocType(), queueTask.getBarcode(), item.getBaseCode(), item.getInLgort(), queueTask.getNum());
HikApi.transferOrderInApi(queueTask.getOperator(), inInfo); //HikApi.transferOrderInApi(queueTask.getOperator(), inInfo);
} }
} else { } else {
log.info("调用 7.5入库上架过账接口"); log.info("调用 7.5入库上架过账接口");
//入库完成,调用 7.5入库上架过账接口 //入库完成,调用 7.5入库上架过账接口
HikApi.putInApi(queueTask.getOperator(), InOutApiInfo.inputInfo(queueTask.getInType(), queueTask.getBarcode(), queueTask.getNum())); //HikApi.putInApi(queueTask.getOperator(), InOutApiInfo.inputInfo(queueTask.getInType(), queueTask.getBarcode(), queueTask.getNum()));
} }
} catch (Exception e) { } catch (Exception e) {
...@@ -377,10 +375,13 @@ public class NLPShelfHandler extends BaseDeviceHandler{ ...@@ -377,10 +375,13 @@ public class NLPShelfHandler extends BaseDeviceHandler{
//出库完成 //出库完成
try { try {
outResult = noReelPosName; outResult = noReelPosName;
boolean accept = hikVisionApi.acceptTaskStatus(queueTask);
if (accept){
super.finishedOutPos(storage.getCid(),noReelPosName); super.finishedOutPos(storage.getCid(),noReelPosName);
String msg = queueTask.getBarcode()+ "从"+ noReelPosName+"出库成功"; String msg = queueTask.getBarcode()+ "从"+ noReelPosName+"出库成功";
log.info(msg); log.info(msg);
break; break;
}
} catch (Exception e) { } catch (Exception e) {
log.error("库位:" + noReelPosName+"出库出错",e); log.error("库位:" + noReelPosName+"出库出错",e);
break; break;
......
...@@ -383,7 +383,7 @@ public class SpBoxHandler extends BaseDeviceHandler { ...@@ -383,7 +383,7 @@ public class SpBoxHandler extends BaseDeviceHandler {
Barcode barcode = barcodeManager.findByBarcode(puttingTask.getBarcode()); Barcode barcode = barcodeManager.findByBarcode(puttingTask.getBarcode());
barcode.setPosName(puttingTask.getPosName()); barcode.setPosName(puttingTask.getPosName());
barcode.setStartWarmTime(System.currentTimeMillis()); barcode.setStartWarmTime(System.currentTimeMillis());
barcode.setSolderStatus(SOLDER_STATUS.REWARMING); //barcode.setSolderStatus(SOLDER_STATUS.REWARMING);
barcodeManager.save(barcode); barcodeManager.save(barcode);
/** /**
* 仓位状态 * 仓位状态
...@@ -438,13 +438,13 @@ public class SpBoxHandler extends BaseDeviceHandler { ...@@ -438,13 +438,13 @@ public class SpBoxHandler extends BaseDeviceHandler {
return; return;
} }
Barcode barcode = storagePos.getBarcode(); Barcode barcode = storagePos.getBarcode();
if (barcode != null && barcode.getSolderStatus() != solderStatus) { /*if (barcode != null && barcode.getSolderStatus() != solderStatus) {
barcode.setSolderStatus(solderStatus); barcode.setSolderStatus(solderStatus);
barcode = barcodeManager.save(barcode); barcode = barcodeManager.save(barcode);
storagePos.setBarcode(barcode); storagePos.setBarcode(barcode);
storagePosManager.save(storagePos); storagePosManager.save(storagePos);
} }*/
} }
private void mixEnd(DataLog mixTask) throws ValidateException { private void mixEnd(DataLog mixTask) throws ValidateException {
......
...@@ -3,6 +3,7 @@ package com.neotel.smfcore.core.storage.service.manager; ...@@ -3,6 +3,7 @@ package com.neotel.smfcore.core.storage.service.manager;
import com.neotel.smfcore.common.base.IBaseManager; import com.neotel.smfcore.common.base.IBaseManager;
import com.neotel.smfcore.core.report.bean.ChartItem; import com.neotel.smfcore.core.report.bean.ChartItem;
import com.neotel.smfcore.core.storage.service.po.Storage; import com.neotel.smfcore.core.storage.service.po.Storage;
import com.neotel.smfcore.core.storage.service.po.StoragePos;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
......
package com.neotel.smfcore.core.storage.service.manager.impl; package com.neotel.smfcore.core.storage.service.manager.impl;
import com.google.common.base.Strings;
import com.neotel.smfcore.common.bean.PageData; import com.neotel.smfcore.common.bean.PageData;
import com.neotel.smfcore.common.exception.ValidateException; import com.neotel.smfcore.common.exception.ValidateException;
import com.neotel.smfcore.common.utils.DateUtil; import com.neotel.smfcore.common.utils.DateUtil;
...@@ -8,6 +9,7 @@ import com.neotel.smfcore.core.report.bean.ChartItem; ...@@ -8,6 +9,7 @@ import com.neotel.smfcore.core.report.bean.ChartItem;
import com.neotel.smfcore.core.storage.service.dao.IStorageDao; import com.neotel.smfcore.core.storage.service.dao.IStorageDao;
import com.neotel.smfcore.core.storage.service.manager.IStorageManager; import com.neotel.smfcore.core.storage.service.manager.IStorageManager;
import com.neotel.smfcore.core.storage.service.po.Storage; import com.neotel.smfcore.core.storage.service.po.Storage;
import com.neotel.smfcore.core.storage.service.po.StoragePos;
import com.neotel.smfcore.core.system.service.dao.IDataLogDao; import com.neotel.smfcore.core.system.service.dao.IDataLogDao;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
......
...@@ -16,4 +16,6 @@ public interface IDataLogManager extends IBaseManager<DataLog> { ...@@ -16,4 +16,6 @@ public interface IDataLogManager extends IBaseManager<DataLog> {
DataLog findLastOutTask(String barcode,boolean addOutbound); DataLog findLastOutTask(String barcode,boolean addOutbound);
void download(Query query, Pageable pageable, HttpServletResponse response, Locale locale) throws IOException; void download(Query query, Pageable pageable, HttpServletResponse response, Locale locale) throws IOException;
int countByReqCode(String reqCode);
} }
...@@ -145,4 +145,9 @@ public class DataLogManagerImpl implements IDataLogManager { ...@@ -145,4 +145,9 @@ public class DataLogManagerImpl implements IDataLogManager {
} }
}); });
} }
@Override
public int countByReqCode(String reqCode) {
return dataLogDao.countByQuery(new Query(Criteria.where("reqCode").is(reqCode)));
}
} }
...@@ -258,6 +258,11 @@ public class DataLog extends BasePo implements Serializable { ...@@ -258,6 +258,11 @@ public class DataLog extends BasePo implements Serializable {
*/ */
private MSDAppendInfo msdAppendInfo; private MSDAppendInfo msdAppendInfo;
/**
* 请求序列号
*/
private String reqCode;
public String getBarcode() { public String getBarcode() {
if(barcode == null){ if(barcode == null){
return ""; return "";
......
...@@ -184,7 +184,7 @@ public class TaskService { ...@@ -184,7 +184,7 @@ public class TaskService {
tiggerTaskChangeListener(task); tiggerTaskChangeListener(task);
} }
public void addTaskToExecute(DataLog taskToExecute) throws ValidateException { public DataLog addTaskToExecute(DataLog taskToExecute) throws ValidateException {
Collection<DataLog> tasks = taskMap.values(); Collection<DataLog> tasks = taskMap.values();
for (DataLog task : tasks) { for (DataLog task : tasks) {
String barcode = taskToExecute.getBarcode(); String barcode = taskToExecute.getBarcode();
...@@ -197,7 +197,7 @@ public class TaskService { ...@@ -197,7 +197,7 @@ public class TaskService {
throw new ValidateException("smfcore.error.pos.inQueue", "位置:[{0}}]已在操作队列中,操作失败", new String[]{posName}); throw new ValidateException("smfcore.error.pos.inQueue", "位置:[{0}}]已在操作队列中,操作失败", new String[]{posName});
} }
} }
updateQueueTask(taskToExecute); return updateQueueTask(taskToExecute);
} }
/** /**
......
package com.neotel.smfcore.hikvision_mobile;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.neotel.smfcore.common.exception.ApiException;
import com.neotel.smfcore.common.utils.HttpHelper;
import com.neotel.smfcore.core.device.util.DataCache;
import com.neotel.smfcore.core.storage.service.po.Storage;
import com.neotel.smfcore.core.system.listener.ITaskListener;
import com.neotel.smfcore.core.system.service.po.DataLog;
import com.neotel.smfcore.hikvision_mobile.bean.request.ApiRequest;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import javax.annotation.PostConstruct;
import java.text.SimpleDateFormat;
import java.util.*;
@Slf4j
@Component
public class HikVisionApi implements ITaskListener {
@Value("${hik.inOutTaskUrl}")
private String inOutTaskUrl = "";
@Value("${hik.posChangeUrl}")
private String posChangeUrl = "";
@Value("${hik.machineId}")
private String machineId = "";
@Value("${hik.authorization}")
private String authorization = "";
@Value("hik.onOff")
private String onOff = "";
@Autowired
private DataCache dataCache;
@PostConstruct
public void initHikVision() {
inOutTaskUrl = dataCache.GetConfigCache("hik.inOutTaskUrl", "hik.inOutTaskUrl", inOutTaskUrl);
posChangeUrl = dataCache.GetConfigCache("hik.posChangeUrl", "hik.posChangeUrl", posChangeUrl);
machineId = dataCache.GetConfigCache("hik.machineId", "hik.machineId", machineId);
authorization = dataCache.GetConfigCache("hik.authorization", "hik.authorization", authorization);
onOff = dataCache.GetConfigCache("hik.onOff", "hik.onOff", onOff);
}
/**
* taskCode String 32 是 任务单号
* status String 20 是 任务状态 0成功 1失败
* shelfCode String 20 是 货架编码
* uniqueCode String 54 是 物料唯一码,41位
* storageCode String 20 是 库位号
*
* @param task
*/
@Override
public void onTaskStatusChange(DataLog task) {
}
public boolean acceptTaskStatus(DataLog task) {
boolean flag = true;
if (!task.isFinished()) {
//构造查询条件
Map<String, Object> map = new HashMap<>();
map.put("taskCode", task.getId());
//if (task.isFinished()) {
map.put("status", 0);
/* } else {
map.put("status", 1);
}*/
map.put("shelfCode", task.getStorageName());
map.put("uniqueCode", task.getBarcode());
map.put("storageCode", task.getPosName());
ApiRequest apiRequest = new ApiRequest(getReqCode(), task.getCreator(), Arrays.asList(map));
String requestBody = JSON.toJSONString(apiRequest);
log.info("出入库通知hik请求为:" + requestBody);
try {
String result = HttpHelper.postJson(inOutTaskUrl, requestBody, getHeaderMap());
log.info("出入库通知hik返回为:" + result);
JSONObject jsonObject = JSONObject.parseObject(result);
if (jsonObject.getInteger("code") != null && jsonObject.getInteger("code") == 0) {
flag = true;
} else {
flag = false;
}
} catch (ApiException e) {
e.printStackTrace();
flag = false;
}
}
return flag;
}
public void posChange(Storage storage,String[] posNameList,String flag) {
if ("0".equals(onOff)) {
log.info("库位变化,白盒接口预留,暂不开启");
return;
}
List<Map<String, String>> paramList = new ArrayList<>();
for (String posName : posNameList) {
Map<String, String> paramMap = new HashMap<>();
paramMap.put("shelfCode", storage.getName());
paramMap.put("storageCode", posName);
paramMap.put("flag", flag);
paramList.add(paramMap);
}
ApiRequest apiRequest = new ApiRequest(getReqCode(), "", paramList);
String paramStr = JSON.toJSONString(apiRequest);
log.info("接受库位变化信息接口入参为:" + paramStr);
try {
String result = HttpHelper.postJson(posChangeUrl, paramStr, getHeaderMap());
log.info("接受库位变化信息接口出参为:" + result);
} catch (ApiException e) {
e.printStackTrace();
}
}
private Map<String, String> getHeaderMap() {
Map<String, String> headerMap = new HashMap<>();
headerMap.put("MachineId", machineId);
headerMap.put("Authorization", authorization);
return headerMap;
}
private synchronized static String getReqCode() {
SimpleDateFormat format = new SimpleDateFormat("yyyyMMddHHmmss");
return "100000" + format.format(new Date());
}
}
package com.neotel.smfcore.hikvision_mobile.bean;
import lombok.Data;
@Data
public class CancelTaskInfo {
/**
* taskCode String 20 是 任务单号
*/
private String taskCode;
}
package com.neotel.smfcore.hikvision_mobile.bean;
import lombok.AllArgsConstructor;
import lombok.Data;
@Data
@AllArgsConstructor
public class LightUpInfo {
/**
* shelfCode String 20 是 货架编码
* storageCode String 20 是 库位号
* lightType String 5 是 亮灯类型/亮灯颜色 (7种灯,业务场景)
*/
private String shelfCode;
private String storageCode;
private String lightType;
}
package com.neotel.smfcore.hikvision_mobile.bean;
import lombok.Data;
/**
* 库位变化信息
*/
@Data
public class PosChangeInfo {
/**
* shelfCode String 20 是 货架编码
* storageCode String 20 是 库位号
* flag String 1 是 上/下架标识 0上架 1下架
*/
private String shelfCode;
private String storageCode;
private String flag;
}
package com.neotel.smfcore.hikvision_mobile.bean;
import lombok.Data;
/**
* 下架信息
*/
@Data
public class PutOffShelvesInfo {
/**
* uniqueCode String 54 是 物料唯一码,41位
* matnr String 20 否 物料编码
* shelfCode String 20 是 货架编码
*/
private String shelfCode;
private String uniqueCode;
private String matnr;
}
package com.neotel.smfcore.hikvision_mobile.bean;
import lombok.Data;
/**
* 上架信息
*/
@Data
public class PutOnShelvesInfo {
/**
* uniqueCode String 54 是 物料唯一码,41位
* matnr String 20 否 物料编码
* qty Integer 是 数量
* shelfCode String 20 是 货架编码
*/
private String uniqueCode;
private String matnr;
private Integer qty;
private String shelfCode;
}
package com.neotel.smfcore.hikvision_mobile.bean;
import lombok.Data;
/**
* 库存信息
*/
@Data
public class StockInfo {
/**
* shelfCode String 20 否 货架编码
* uniqueCode String 54 否 物料唯一码,41位
* storageCode String 20 否 库位号
*/
private String shelfCode;
private String uniqueCode;
private String storageCode;
}
package com.neotel.smfcore.hikvision_mobile.bean;
import lombok.Data;
@Data
public class StockResponseInfo {
/**
* shelfCode String 20 是 货架编码
* uniqueCode String 54 是 物料唯一码,41位
* storageCode String 20 是 库位号
* qty Integer 否 数量
* matnr String 20 否 物料编码
* seq Integer 否 排序字段
*/
private String shelfCode;
private String uniqueCode;
private String storageCode;
private Integer qty;
private String matnr;
private String seq;
}
package com.neotel.smfcore.hikvision_mobile.bean.enums;
public enum ResponseCode {
/**
* 0 成功
* 1 参数错误,需要重发
* 6 报文已处理,无需重发
* 99 其他未知错误,需要重发
*/
SUCCESS(0),
REQUEST_ERROR(1),
PROCESSED(6),
ERROR(99);
private Integer code;
ResponseCode(Integer code) {
this.code = code;
}
public Integer getCode() {
return code;
}
}
package com.neotel.smfcore.hikvision_mobile.bean.request;
import lombok.AllArgsConstructor;
import lombok.Data;
import org.apache.poi.ss.formula.functions.T;
/**
* 接口入参
*/
@Data
@AllArgsConstructor
public class ApiRequest {
/**
* reqCode String 32 是 唯一请求号,保证每次请求不重复
* userCode String 32 是 操作人
*/
private String reqCode;
private String userCode;
private Object data;
}
package com.neotel.smfcore.hikvision_mobile.bean.response;
import com.neotel.smfcore.common.bean.ResultBean;
import com.neotel.smfcore.common.utils.SecurityUtils;
import com.neotel.smfcore.core.language.util.MessageUtils;
import lombok.AllArgsConstructor;
import lombok.Data;
import java.util.Locale;
@Data
public class ApiResponse {
/**
* reqCode 是 String 唯一请求号,与传入的参数reqCode保持一致
* code 是 String 结果码:0-成功,1~N-失败
* message 是 String 0:成功 1~N:失败原因
* data 选填 Json 返回的数据结构
*/
private String reqCode;
private Integer code;
private String message;
private Object data;
public static ApiResponse apiResponse(String reqCode, Integer code, Object data, String msgKey, String[] params, String defaultMsg) {
ApiResponse apiResponse = new ApiResponse();
apiResponse.setReqCode(reqCode);
apiResponse.setCode(code);
apiResponse.setMessage(MessageUtils.getText(msgKey, params, new Locale(SecurityUtils.getCurrentUserLanguage()), defaultMsg));
apiResponse.setData(data);
return apiResponse;
}
}
...@@ -445,13 +445,13 @@ public class PanaApiController implements IOpAuthApi, ITaskListener{ ...@@ -445,13 +445,13 @@ public class PanaApiController implements IOpAuthApi, ITaskListener{
@Override @Override
public void onTaskStatusChange(DataLog task) { public void onTaskStatusChange(DataLog task) {
if(task.isFinished()){ /*if(task.isFinished()){
if(task.isPutInTask()){ if(task.isPutInTask()){
checkInNotification(task); checkInNotification(task);
}else{ }else{
deliverNotification(task); deliverNotification(task);
} }
} }*/
} }
/** /**
......
...@@ -2,9 +2,9 @@ ...@@ -2,9 +2,9 @@
spring: spring:
data: data:
mongodb: mongodb:
host: 10.1.129.59 # 主机地址 host: localhost # 主机地址
port: 27017 # 端口 port: 27017 # 端口
database: hikvision # 数据库 database: smf # 数据库
minConSize: 1000 minConSize: 1000
maxConSize: 2000 maxConSize: 2000
......
server: server:
port: 8800 port: 8800
hik: hik:
inOutTaskUrl: http://meshz-uat.hikvision.com.cn:8000/hiscada/mesapi/mobileShelf/receiveTaskChange
machineId: NEO_SMF
authorization: 1211111111111
posChangeUrl: http://meshz-uat.hikvision.com.cn:8000/hiscada/mesapi/mobileShelfWM/receiveStorageChange
onOff: 1 #白盒接口预留开关,0是关闭 1是开启
# server: http://cloudapi-uat.hikvision.com.cn/api/ # server: http://cloudapi-uat.hikvision.com.cn/api/
# baseCode: "8001" # baseCode: "8001"
# lgort: "M9142" # lgort: "M9142"
...@@ -93,7 +98,7 @@ spring: ...@@ -93,7 +98,7 @@ spring:
mongodb: mongodb:
host: localhost # 主机地址 host: localhost # 主机地址
port: 27017 # 端口 port: 27017 # 端口
database: hikvision # 数据库 database: smf # 数据库
minConSize: 5 minConSize: 5
maxConSize: 5 maxConSize: 5
......
...@@ -266,7 +266,7 @@ smfcore.order.noBind=\u64CD\u4F5C\u5931\u8D25\uFF0C\u8BF7\u5148\u4E3A\u5DE5\u535 ...@@ -266,7 +266,7 @@ smfcore.order.noBind=\u64CD\u4F5C\u5931\u8D25\uFF0C\u8BF7\u5148\u4E3A\u5DE5\u535
#smfcore.order.out.short=\u5DE5\u5355\u51FA\u5E93\u5931\u8D25\uFF0C\u5DE5\u5355\u7F3A\u6599 #smfcore.order.out.short=\u5DE5\u5355\u51FA\u5E93\u5931\u8D25\uFF0C\u5DE5\u5355\u7F3A\u6599
#smfclient.nlp.onlyOneTray=\u4E0D\u53EF\u540C\u65F6\u653E\u5165\u591A\u76D8\u7269\u6599:{0} #smfclient.nlp.onlyOneTray=\u4E0D\u53EF\u540C\u65F6\u653E\u5165\u591A\u76D8\u7269\u6599:{0}
#smfclient.nlp.cannotFindPos={0}\u672A\u627E\u5230\u5E93\u4F4D:{1} smfclient.nlp.cannotFindPos=\u672A\u627E\u5230\u5E93\u4F4D:{0}
#smfclient.nlp.inputOk={0}\u5165\u5E93\u5230{1}\u6210\u529F #smfclient.nlp.inputOk={0}\u5165\u5E93\u5230{1}\u6210\u529F
#smfclient.nlp.outputOk={0}\u4ECE{1}\u51FA\u5E93\u6210\u529F #smfclient.nlp.outputOk={0}\u4ECE{1}\u51FA\u5E93\u6210\u529F
#smfclient.nlp.noOutTask=\u672A\u627E\u5230[{0}]\u7684\u51FA\u5E93\u4EFB\u52A1 #smfclient.nlp.noOutTask=\u672A\u627E\u5230[{0}]\u7684\u51FA\u5E93\u4EFB\u52A1
......
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!