Commit 2be5999c 孙克

增加设备版本更新和获取接口

1 个父辈 567364e3
package com.neotel.smfcore.core.version.bean;
import com.neotel.smfcore.common.base.BasePo;
import lombok.*;
// 版本信息
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Version extends BasePo {
// 版本号
private String versionNo;
// 名称 NameEnum
private String name;
// 设备类型
private String type;
}
package com.neotel.smfcore.core.version.enums;
public class NameEnum {
public static final String RAW = "RAW";
}
package com.neotel.smfcore.core.version.service;
import com.neotel.smfcore.common.base.IBaseManager;
import com.neotel.smfcore.core.version.bean.Version;
public interface IVersionManager extends IBaseManager<Version> {
Version findByName(String raw);
Version findByTypeAndName(String type, String raw);
}
package com.neotel.smfcore.core.version.service.dao;
import com.neotel.smfcore.common.base.IBaseDao;
import com.neotel.smfcore.core.version.bean.Version;
public interface IVersionDao extends IBaseDao {
Version findByName(String name);
Version findByTypeAndName(String type, String name);
}
package com.neotel.smfcore.core.version.service.dao.impl;
import com.neotel.smfcore.common.base.AbstractBaseDao;
import com.neotel.smfcore.core.version.bean.Version;
import com.neotel.smfcore.core.version.service.dao.IVersionDao;
import lombok.extern.slf4j.Slf4j;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.stereotype.Service;
@Service
@Slf4j
public class VersionDaoImpl extends AbstractBaseDao implements IVersionDao {
@Override
public Class getEntityClass() {
return Version.class;
}
@Override
public Version findByName(String name) {
return findOne(Query.query(Criteria.where("name").is(name)));
}
@Override
public Version findByTypeAndName(String type, String name) {
return findOne(Query.query(Criteria.where("name").is(name)
.and("type").is(type)));
}
}
package com.neotel.smfcore.core.version.service.impl;
import cn.hutool.core.util.ObjectUtil;
import com.neotel.smfcore.common.bean.PageData;
import com.neotel.smfcore.common.exception.ValidateException;
import com.neotel.smfcore.core.version.bean.Version;
import com.neotel.smfcore.core.version.enums.NameEnum;
import com.neotel.smfcore.core.version.service.IVersionManager;
import com.neotel.smfcore.core.version.service.dao.IVersionDao;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Pageable;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.stereotype.Service;
import java.util.Collections;
import java.util.List;
@Service
@Slf4j
public class VersionManagerImpl implements IVersionManager {
@Autowired
private IVersionDao versionDao;
@Override
public Version findByName(String name) {
return versionDao.findByName(name);
}
@Override
public Version findByTypeAndName(String type, String name) {
return versionDao.findByTypeAndName(type, name);
}
@Override
public Version save(Version newVersion) {
// 默认原材料
Version version = versionDao.findByTypeAndName(newVersion.getType(), newVersion.getName());
if (ObjectUtil.isNull(version)) {
return versionDao.save(newVersion);
}
version.setVersionNo(newVersion.getVersionNo());
return versionDao.save(version);
}
@Override
public Version get(String id) {
return null;
}
@Override
public void delete(Version object) throws ValidateException {
}
@Override
public PageData<Version> findByPage(Query query, Pageable pageable) {
return null;
}
@Override
public List<Version> findByQuery(Query query) {
return Collections.emptyList();
}
}
package com.neotel.smfcore.core.version.controller;
package com.neotel.smfcore.custom.luxsan.factory_c.rawstor.controller;
import cn.hutool.core.util.ObjectUtil;
import com.neotel.smfcore.common.bean.ResultBean;
import com.neotel.smfcore.core.version.bean.Version;
import com.neotel.smfcore.core.version.enums.NameEnum;
import com.neotel.smfcore.core.version.service.IVersionManager;
import com.neotel.smfcore.core.device.util.DataCache;
import com.neotel.smfcore.security.annotation.AnonymousAccess;
import com.neotel.smfcore.security.annotation.AnonymousGetMapping;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.RequiredArgsConstructor;
......@@ -18,40 +18,31 @@ import org.springframework.web.bind.annotation.*;
*/
@Slf4j
@RestController
@RequiredArgsConstructor
@Api(tags = "版本管理")
@RequestMapping("api/version")
public class VersionController {
@Autowired
private IVersionManager versionManager;
private DataCache dataCache;
@ApiOperation("获取版本")
@RequestMapping
public ResultBean getVersion(Version query) {
// 默认原材料
Version version = versionManager.findByTypeAndName(query.getType(), NameEnum.RAW);
if (ObjectUtil.isNull(version)) {
log.info("未找到原材料版本");
return ResultBean.newErrorResult(-1, "", "未找到版本");
@ApiOperation("设备端版本上传并比对")
@AnonymousAccess
@AnonymousGetMapping("/getVersion")
public ResultBean getVersion(String deviceType) {
String cacheKey = deviceType + "_Version";
String version = dataCache.getCache(deviceType + "_Version");
log.info("获取设备" + cacheKey + "的版本:" + version);
if(version == null){
return ResultBean.newErrorResult(-1,"", "未找到设备["+deviceType+"]的版本信息");
}
return ResultBean.newOkResult(version);
}
@ApiOperation("提交版本")
@RequestMapping("/save")
public ResultBean editVersion(@RequestBody(required = false) Version query) {
// 默认原材料
query.setName(NameEnum.RAW);
if (ObjectUtil.isEmpty(query.getVersionNo())) {
return ResultBean.newErrorResult(-1, "", "版本号不能为空");
}
if (ObjectUtil.isEmpty(query.getName())) {
return ResultBean.newErrorResult(-1, "", "name不能为空");
}
if (ObjectUtil.isEmpty(query.getType())) {
return ResultBean.newErrorResult(-1, "", "类型不能为空");
}
versionManager.save(query);
@RequestMapping("/updateVersion")
public ResultBean editVersion(String deviceType, String version) {
String cacheKey = deviceType + "_Version";
log.info("更新"+cacheKey+"的版本为:" + version);
dataCache.updateCache(cacheKey,version);
return ResultBean.newOkResult("");
}
......
......@@ -3,17 +3,33 @@
地址: /cdevice/validBin
>
>参数: {"stackerId":"B000009", binList:"C0700001-1,C0700001-2,C0700001-3"}
>参数: {"stackerId":"B000009", binList:"C0700001-1,C0700001-2,C0700001-3","boxCode":"C0700001"}
>> stackerId: 料串编号
>> binList: 料格列表, 多个料格用,分割
>> source: 入料机构编号, In1_FeedingInlet入料机构1, In2_FeedingInlet入料机构2
>> binList: 料格列表, 多个料格用,分割;如果工作位没有料箱,binList可传空,此时服务器会返回其他箱子的箱格号, 若binList不为空, 只会返回binList中可用的箱格
>
> 返回:
>>` {"code":0,"msg":"ok","data":{"validBinList":["C0700001-1","C0700001-2"]}}`
>>` {
"code":0,
"msg":"ok",
"data":{
"validBinList":["C0700001-1","C0700001-2"],
boxCode: "C0700001",
boxLoc: "In1_FeedingInlet",
stackerLoc: "In1_FeedingInlet"
}
}`
>>
>> - code: 0为正常,其他为异常(料串未绑定等), 注意, 没有可用的料格时, code为0, 不是异常
>> - msg:消息,
>> - data:
>> - validBinList: 可用的料格列表, 如果没有可用的料格, 那么列表为空
>> - boxCode: 箱子编号
>> - boxLoc: 箱子位置, CTU1-3表示在1号CTU的第三层, In1_FeedingInlet入料机构1,In2_FeedingInlet入料机构2
>> - stackerLoc: 料串位置,In1_FeedingInlet入料机构1,In2_FeedingInlet入料机构2
20240509 原材料CTU接口
......@@ -92,4 +108,5 @@
>> - taskType: 任务类型, 入库=1或出库=2
>> - fromLoc: 起点位置,值为库位号
>> - toLoc: 目的地位置,可能的值为 In1_FeedingInlet,In2_FeedingInlet,Out1_FeedingInlet,Out2_FeedingInlet,In_FeedingInlet(入料机构入料口,不指定哪个入料机构),Out_FeedingInlet(出料机构入料口,不指定哪个出料机构)
>> - createDate: 任务创建时间
\ No newline at end of file
>> - createDate: 任务创建时间
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!