fix:优化货位表查询

This commit is contained in:
zhangzq
2026-04-09 19:33:34 +08:00
parent 0d5aa1d376
commit b87d2d6cea
35 changed files with 123 additions and 663 deletions

View File

@@ -14,6 +14,7 @@ import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.Collection;
import java.util.List;
import java.util.Map;
import java.util.Set;
@@ -42,12 +43,7 @@ public interface DeviceService extends CommonService<Device> {
* @return List<DeviceDto>
*/
List<DeviceDto> queryAll(DeviceQueryParam query);
/**
* 根据id获取类
* @param id
* @return
*/
Device getById(String id);
/**
* 根据id获取Dto
* @param id
@@ -55,24 +51,7 @@ public interface DeviceService extends CommonService<Device> {
*/
DeviceDto findById(String id);
/**
* 插入
* @param resources
* @return
*/
int insert(DeviceDto resources);
/**
* 更新
* @param resources
* @return
*/
int updateById(DeviceDto resources);
/**
* 删除
* @param id
* @return
*/
int removeById(String id);
/**
* 批量删除
* @param ids
@@ -89,7 +68,7 @@ public interface DeviceService extends CommonService<Device> {
* @param page 分页参数
* @return Map<String, Object>
*/
Map<String, Object> queryAll(Map whereJson, Pageable page);
PageInfo queryAll(Map whereJson, Pageable page);
/**
* 查询设备协议
@@ -292,10 +271,6 @@ public interface DeviceService extends CommonService<Device> {
*/
String queryScannerByCode(String code) throws Exception;
/**
* 加载货位信息
*/
void reload();
/**
* 查找所有货位
@@ -308,7 +283,7 @@ public interface DeviceService extends CommonService<Device> {
*
* @return
*/
List<StorageCellDto> findAllStorageCellFromCache();
Collection<StorageCellDto> findAllStorageCellFromCache();
/**
* 根据code获取地址

View File

@@ -258,7 +258,6 @@ public class DeviceAppServiceImpl implements DeviceAppService, ApplicationAutoIn
device.setDeviceDriverDefination(defination);
DeviceDriver driver = defination.getDriverInstance(device);
device.setDeviceDriver(driver);
}
}

View File

@@ -20,8 +20,8 @@ import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.collections4.map.ListOrderedMap;
import org.nl.acs.device.deviceDriver.service.defination.opcDefination.standardInspectSite.StandardInspectSiteDeviceDriver;
import org.nl.acs.device.deviceDriver.service.defination.ordinaryDefination.standardOrdinarySite.StandardOrdinarySiteDeviceDriver;
import org.nl.acs.device.storageMgt.service.StorageCellService;
import org.nl.acs.iot.opc.opcPlc.service.OpcPlcService;
import org.nl.ApplicationAutoInitial;
import org.nl.acs.device.device.service.entity.Device;
import org.nl.acs.device.deviceExtInfo.service.entity.DeviceExtra;
import org.nl.acs.device.deviceDriver.service.dto.ItemDto;
@@ -31,7 +31,6 @@ import org.nl.acs.device.device.service.mapper.DeviceMapper;
import org.nl.acs.task.route.domain.RouteLine;
import org.nl.acs.task.route.service.mapper.RouteLineMapper;
import org.nl.acs.device.storageMgt.service.entity.StorageCell;
import org.nl.acs.device.storageMgt.service.mapper.StorageCellMapper;
import org.nl.common.utils.ConvertUtil;
import org.nl.common.utils.PageUtil;
import org.nl.common.utils.ReadUtil;
@@ -60,13 +59,14 @@ import org.nl.system.service.dict.dao.Dict;
import org.nl.common.utils.CodeUtil;
import org.nl.config.SpringContextHolder;
import org.openscada.opc.lib.da.Server;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.data.domain.Pageable;
import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
@@ -80,122 +80,52 @@ import java.util.*;
@Service
@AllArgsConstructor
@Slf4j
// @CacheConfig(cacheNames = DeviceService.CACHE_KEY)
@Transactional(propagation = Propagation.SUPPORTS, readOnly = true, rollbackFor = Exception.class)
public class DeviceServiceImpl extends CommonServiceImpl<DeviceMapper, Device> implements DeviceService, ApplicationAutoInitial {
private final DeviceMapper deviceMapper;
private final RouteLineMapper routeLineMapper;
private final StorageCellMapper storageCellMapper;
private final DeviceExtraMapper deviceExtraMapper;
private final DeviceExtraService deviceExtraService;
private final OpcService opcService;
private final OpcPlcService opcPlcService;
private final DeviceDriverDefinationAppService deviceDriverDefinationAppService;
private final DeviceAppService deviceAppService;
private final ISysDictService iSysDictService;
List<StorageCellDto> storageCells = new ArrayList<>();
public class DeviceServiceImpl extends CommonServiceImpl<DeviceMapper, Device> implements DeviceService {
@Resource
private RouteLineMapper routeLineMapper;
@Resource
private DeviceExtraMapper deviceExtraMapper;
@Autowired
private StorageCellService storageCellService;
@Autowired
private DeviceExtraService deviceExtraService;
@Autowired
private OpcService opcService;
@Autowired
private OpcPlcService opcPlcService;
@Autowired
private DeviceDriverDefinationAppService deviceDriverDefinationAppService;
@Autowired
private DeviceAppService deviceAppService;
@Autowired
private ISysDictService iSysDictService;
@Override
public PageInfo<DeviceDto> queryAll(DeviceQueryParam query, Pageable pageable) {
IPage<Device> queryPage = PageUtil.toMybatisPage(pageable);
IPage<Device> page = deviceMapper.selectPage(queryPage, QueryHelpMybatisPlus.getPredicate(query));
IPage<Device> page = this.baseMapper.selectPage(queryPage, QueryHelpMybatisPlus.getPredicate(query));
return ConvertUtil.convertPage(page, DeviceDto.class);
}
@Override
public List<DeviceDto> queryAll(DeviceQueryParam query) {
return ConvertUtil.convertList(deviceMapper.selectList(QueryHelpMybatisPlus.getPredicate(query)), DeviceDto.class);
return ConvertUtil.convertList(this.baseMapper.selectList(QueryHelpMybatisPlus.getPredicate(query)), DeviceDto.class);
}
@Override
public Device getById(String id) {
return deviceMapper.selectById(id);
}
@Override
// @Cacheable(key = "'id:' + #p0")
public DeviceDto findById(String id) {
return ConvertUtil.convert(getById(id), DeviceDto.class);
return ConvertUtil.convert(this.baseMapper.selectById(id), DeviceDto.class);
}
@Override
@Transactional(rollbackFor = Exception.class)
public int insert(DeviceDto resources) {
Device entity = ConvertUtil.convert(resources, Device.class);
return deviceMapper.insert(entity);
}
@Override
@Transactional(rollbackFor = Exception.class)
public int updateById(DeviceDto resources) {
Device entity = ConvertUtil.convert(resources, Device.class);
int ret = deviceMapper.updateById(entity);
// delCaches(resources.id);
return ret;
}
@Override
@Transactional(rollbackFor = Exception.class)
public int removeByIds(Set<String> ids) {
// delCaches(ids);
return deviceMapper.deleteBatchIds(ids);
return this.baseMapper.deleteBatchIds(ids);
}
@Override
@Transactional(rollbackFor = Exception.class)
public int removeById(String id) {
Set<String> set = new HashSet<>(1);
set.add(id);
return this.removeByIds(set);
}
/*
private void delCaches(String id) {
redisUtils.delByKey(CACHE_KEY + "::id:", id);
}
private void delCaches(Set<String> ids) {
for (String id: ids) {
delCaches(id);
}
}*/
/*
@Override
public void download(List<DeviceDto> all, HttpServletResponse response) throws IOException {
List<Map<String, Object>> list = new ArrayList<>();
for (DeviceDto device : all) {
Map<String,Object> map = new LinkedHashMap<>();
map.put("设备编码", device.getDeviceCode());
map.put("设备名字", device.getDeviceName());
map.put("设备类型", device.getDeviceType());
map.put("所属区域", device.getRegion());
map.put("生产厂家", device.getManufacturer());
map.put("生产厂家电话", device.getManufacturerPhone());
map.put("是否配置", device.getIsConfig());
map.put("opcServer标识", device.getOpcServerId());
map.put("opcPlc标识", device.getOpcPlcId());
map.put("是否为路由设备", device.getIsRoute());
map.put("设备驱动类型", device.getDriverCode());
map.put("备注", device.getRemark());
map.put("是否启用", device.getIsActive());
map.put("顺序号", device.getSeqNum());
map.put("是否删除", device.getIsDelete());
map.put("创建者", device.getCreateBy());
map.put("创建时间", device.getCreateTime());
map.put("修改者", device.getUpdateBy());
map.put("修改时间", device.getUpdateTime());
map.put("地址号", device.getAddress());
list.add(map);
}
FileUtil.downloadExcel(list, response);
}*/
@Override
public Map<String, Object> queryAll(Map whereJson, Pageable page) {
public PageInfo queryAll(Map whereJson, Pageable page) {
IPage<Device> queryPage = PageUtil.toMybatisPage(page);
LambdaQueryWrapper<Device> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(StringUtils.isNotBlank((String) whereJson.get("device_type")), Device::getDevice_type, whereJson.get("device_type"));
@@ -204,9 +134,8 @@ public class DeviceServiceImpl extends CommonServiceImpl<DeviceMapper, Device> i
wrapper.nested(StringUtils.isNotBlank((String) whereJson.get("blurry")), i -> i.like(Device::getDevice_code, whereJson.get("blurry")).or().like(Device::getDevice_name, whereJson.get("blurry")));
wrapper.orderByAsc(Device::getIs_config).orderByDesc(Device::getSeq_num).orderByDesc(Device::getUpdate_time);
wrapper.orderByDesc(Device::getCreate_time);
IPage<Device> devicePage = deviceMapper.queryPage(queryPage, wrapper);
final JSONObject json = (JSONObject) JSON.toJSON(ConvertUtil.convertPage(devicePage, Device.class));
return json;
IPage<Device> devicePage = this.baseMapper.queryPage(queryPage, wrapper);
return ConvertUtil.convertPage(devicePage, Device.class);
}
@Override
@@ -239,7 +168,7 @@ public class DeviceServiceImpl extends CommonServiceImpl<DeviceMapper, Device> i
@Override
public List<DeviceDto> queryAll(Map whereJson) {
List<Device> deviceList = new LambdaQueryChainWrapper<>(deviceMapper)
List<Device> deviceList = new LambdaQueryChainWrapper<>(this.baseMapper)
.list();
return ConvertUtil.convertList(deviceList, DeviceDto.class);
}
@@ -254,7 +183,7 @@ public class DeviceServiceImpl extends CommonServiceImpl<DeviceMapper, Device> i
@Override
public DeviceDto findByCode(String code) {
Device device = new LambdaQueryChainWrapper<>(deviceMapper)
Device device = new LambdaQueryChainWrapper<>(this.baseMapper)
.eq(Device::getDevice_code, code)
.one();
return ConvertUtil.convert(device, DeviceDto.class);
@@ -280,7 +209,7 @@ public class DeviceServiceImpl extends CommonServiceImpl<DeviceMapper, Device> i
Device entity = ConvertUtil.convert(dto, Device.class);
deviceMapper.insert(entity);
this.baseMapper.insert(entity);
}
@Override
@@ -304,56 +233,28 @@ public class DeviceServiceImpl extends CommonServiceImpl<DeviceMapper, Device> i
dto.setUpdate_by(currentUsername);
Device device = ConvertUtil.convert(dto, Device.class);
deviceMapper.updateById(device);
this.baseMapper.updateById(device);
}
@Override
@Transactional(rollbackFor = Exception.class)
public void deleteAll(String[] ids) {
// WQLObject wo = WQLObject.getWQLObject("acs_device");
// WQLObject storageTab = WQLObject.getWQLObject("acs_storage_cell");
// //路由路线表【acs_route_line】
// WQLObject routeLineTab = WQLObject.getWQLObject("acs_route_line");
// //路由路线表【stage_actor】
// WQLObject stageActorTab = WQLObject.getWQLObject("stage_actor");
for (String device_id : ids) {
// JSONObject deviceJson = wo.query("device_id = '" + device_id + "'").uniqueResult(0);
Device deviceJson = new LambdaQueryChainWrapper<>(deviceMapper)
Device deviceJson = new LambdaQueryChainWrapper<>(this.baseMapper)
.eq(Device::getDevice_id, device_id)
.one();
if (deviceJson == null) {
continue;
}
String device_code = deviceJson.getDevice_code();
log.debug("删除设备时候判断路由是否存在,如果存在,则不允许删除设备!");
// JSONObject json = routeLineTab.query("device_code = '" + device_code + "' or next_device_code = '" + device_code + "'").uniqueResult(0);
//"删除设备时候判断路由是否存在,如果存在,则不允许删除设备!"
LambdaQueryChainWrapper<RouteLine> eq = new LambdaQueryChainWrapper<>(routeLineMapper)
.eq(RouteLine::getDevice_code, device_code)
.or().eq(RouteLine::getNext_device_code, device_code);
if (eq != null && eq.count() > 0) {
throw new BadRequestException(LangProcess.msg("device_checkRoute", device_code));
}
log.debug("删除舞台里面的设备!");
// Map<String, String> map = new HashMap<>();
// map.put("device_id", "");
// map.put("device_code", "");
// map.put("device_name", "");
// stageActorTab.update(map, "device_code = '" + device_code + "'");
// stageActorMapper.lambdaUpdate().eq(StageActor::getDevice_code,device_code)
// .set(StageActor::getDevice_code,"")
// .set(StageActor::getDevice_name,"")
// .update();
log.debug("根据设备编码查询在缓存里面的舞台数据,并删除掉!");
// JSONArray jsonArr = WQL.getWO("QStage_01").addParam("flag", "1").addParam("device_code", device_code).process().getResultJSONArray(0);
// List<Stage> stageList = stageMapper.selectByDeviceCode(device_code);
// for (int i = 0; i < stageList.size(); i++) {
// String stage_code = stageList.get(i).getStage_code();
// redisUtils.del("stage:mst:" + stage_code);
// redisUtils.del("stage:dtl:" + stage_code);
// }
log.debug("删除缓存里面的设备!");
Device deviceByCode = deviceAppService.findDeviceByCode(device_code);
List<Device> allDevice = deviceAppService.findAllDevice();
Iterator<Device> iterator = allDevice.iterator();
@@ -363,32 +264,12 @@ public class DeviceServiceImpl extends CommonServiceImpl<DeviceMapper, Device> i
iterator.remove();
}
}
// allDevice.remove(deviceByCode);
log.info("设备删除成功!");
if (deviceByCode != null) {
if (StrUtil.equals("storage", deviceByCode.getDeviceDriverDefination().getFitDeviceTypes().get(0).name())) {
// storageTab.delete("substring_index( storage_code,'-',1)= '" + device_code + "'");
storageCellMapper.deleteByStorageCode(device_code);
} else {
// JSONObject data = storageTab.query("storage_code ='" + device_code + "'").uniqueResult(0);
StorageCell storageCell = new LambdaQueryChainWrapper<>(storageCellMapper)
.eq(StorageCell::getStorage_code, device_code)
.one();
if (storageCell != null) {
// storageTab.delete("storage_code = '" + device_code + "'");
Map<String, Object> map = new HashMap<>();
map.put("storage_code", device_code);
storageCellMapper.deleteByMap(map);
}
}
storageCellService.deleteByStorageCode(device_code);
}
// wo.delete("device_id = '" + device_id + "'");
Map<String, Object> map = new HashMap<>();
map.put("device_id", device_id);
deviceMapper.deleteByMap(map);
this.baseMapper.deleteByMap(map);
}
}
@@ -451,7 +332,7 @@ public class DeviceServiceImpl extends CommonServiceImpl<DeviceMapper, Device> i
@Override
public JSONArray selectList() {
List<Device> deviceList = new LambdaQueryChainWrapper<>(deviceMapper)
List<Device> deviceList = new LambdaQueryChainWrapper<>(this.baseMapper)
.apply("is_delete= '0' AND is_active= '1' AND is_config = 'true'")
.orderByAsc(Device::getDevice_code)
.list();
@@ -473,7 +354,7 @@ public class DeviceServiceImpl extends CommonServiceImpl<DeviceMapper, Device> i
public JSONArray selectConveyorList() {
//设备基础信息表【acs_device】
// JSONArray arr = WQLObject.getWQLObject("acs_device").query("is_delete= '0' AND is_active= '1' AND device_type = 'conveyor'").getResultJSONArray(0);
List<Device> deviceList = new LambdaQueryChainWrapper<>(deviceMapper)
List<Device> deviceList = new LambdaQueryChainWrapper<>(this.baseMapper)
.apply("is_delete= '0' AND is_active= '1' AND device_type = 'conveyor'")
.list();
JSONArray arr = JSONArray.parseArray(JSON.toJSONString(deviceList));
@@ -493,7 +374,7 @@ public class DeviceServiceImpl extends CommonServiceImpl<DeviceMapper, Device> i
@Override
public JSONArray selectDeviceListByRegion(String region) {
//设备基础信息表【acs_device】
List<Device> deviceList = new LambdaQueryChainWrapper<>(deviceMapper)
List<Device> deviceList = new LambdaQueryChainWrapper<>(this.baseMapper)
.apply("is_delete= '0' AND is_active= '1' and region = '" + region + "'")
.orderByAsc(Device::getDevice_code)
.list();
@@ -545,7 +426,7 @@ public class DeviceServiceImpl extends CommonServiceImpl<DeviceMapper, Device> i
DeviceAppService appService = SpringContextHolder.getBean(DeviceAppServiceImpl.class);
StandardOrdinarySiteDeviceDriver standardOrdinarySiteDeviceDriver;
// JSONArray arr = WQLObject.getWQLObject("acs_device").query("is_delete= '0' AND is_active= '1' and region != '' and is_config= 'true' ").getResultJSONArray(0);
List<Device> deviceList = new LambdaQueryChainWrapper<>(deviceMapper)
List<Device> deviceList = new LambdaQueryChainWrapper<>(this.baseMapper)
.apply("is_delete= '0' AND is_active= '1' and region != '' and is_config= 'true' ")
.list();
JSONArray arr = JSONArray.parseArray(JSON.toJSONString(deviceList));
@@ -745,10 +626,9 @@ public class DeviceServiceImpl extends CommonServiceImpl<DeviceMapper, Device> i
int minZ = form.getInteger("minZ");
for (int i = minY; i <= maxY; i++) {
for (int j = minZ; j <= maxZ; j++) {
// JSONObject json = wo.query("storage_code='" + device_code + "-" + formatNum(i) + "-" + formatNum(j) + "'").uniqueResult(0);
StorageCell storageCell = new LambdaQueryChainWrapper<>(storageCellMapper)
.eq(StorageCell::getStorage_code, device_code + "-" + formatNum(i) + "-" + formatNum(j))
.one();
StorageCell storageCell = storageCellService.getOne(new LambdaQueryWrapper<StorageCell>()
.eq(StorageCell::getStorage_code, device_code + "-" + formatNum(i) + "-" + formatNum(j)));
if (ObjectUtil.isEmpty(storageCell)) {
StorageCellDto celldto = new StorageCellDto();
celldto.setStorage_id(IdUtil.simpleUUID());
@@ -757,12 +637,10 @@ public class DeviceServiceImpl extends CommonServiceImpl<DeviceMapper, Device> i
celldto.setX(formatNum(x));
celldto.setY(formatNum(i));
celldto.setZ(formatNum(j));
//celldto.setAddress(Integer.parseInt(CodeUtil.getNewCode("NDCADDRESS_NO")));
celldto.setCreate_by("init");
celldto.setCreate_time(SecurityUtils.getCurrentNickName());
// wo.insert((JSONObject) JSONObject.toJSON(celldto));
StorageCell entity = ConvertUtil.convert(celldto, StorageCell.class);
storageCellMapper.insert(entity);
storageCellService.save(entity);
}
}
}
@@ -771,10 +649,8 @@ public class DeviceServiceImpl extends CommonServiceImpl<DeviceMapper, Device> i
if (StrUtil.equals(driver_code, "standard_emptypallet_site") && form.containsKey("max_emptypalletnum")) {
int num = form.getInteger("max_emptypalletnum");
for (int i = 1; i < num + 1; i++) {
// JSONObject json = wo.query("storage_code ='" + device_code + "." + i + "'").uniqueResult(0);
StorageCell storageCell = new LambdaQueryChainWrapper<>(storageCellMapper)
.eq(StorageCell::getStorage_code, device_code + "." + i)
.one();
StorageCell storageCell = storageCellService.getOne(new LambdaQueryWrapper<StorageCell>()
.eq(StorageCell::getStorage_code, device_code + "." + i));
if (ObjectUtil.isEmpty(storageCell)) {
StorageCellDto celldto = new StorageCellDto();
celldto.setStorage_id(IdUtil.simpleUUID());
@@ -788,14 +664,12 @@ public class DeviceServiceImpl extends CommonServiceImpl<DeviceMapper, Device> i
String now = DateUtil.now();
celldto.setCreate_time(now);
StorageCell entity = ConvertUtil.convert(celldto, StorageCell.class);
storageCellMapper.insert(entity);
storageCellService.save(entity);
}
}
} else {
// JSONObject json = wo.query("storage_code ='" + device_code + "'").uniqueResult(0);
StorageCell storageCell = new LambdaQueryChainWrapper<>(storageCellMapper)
.eq(StorageCell::getStorage_code, device_code)
.one();
StorageCell storageCell = storageCellService.getOne(new LambdaQueryWrapper<StorageCell>()
.eq(StorageCell::getStorage_code, device_code));
if (ObjectUtil.isEmpty(storageCell)) {
StorageCellDto celldto = new StorageCellDto();
celldto.setStorage_id(IdUtil.simpleUUID());
@@ -809,8 +683,7 @@ public class DeviceServiceImpl extends CommonServiceImpl<DeviceMapper, Device> i
String now = DateUtil.now();
celldto.setCreate_time(now);
StorageCell entity = ConvertUtil.convert(celldto, StorageCell.class);
storageCellMapper.insert(entity);
storageCells.add(celldto);
storageCellService.save(entity);
}
}
@@ -1358,7 +1231,7 @@ public class DeviceServiceImpl extends CommonServiceImpl<DeviceMapper, Device> i
public JSONArray selectDeviceListByType(String type) {
// JSONArray arr = WQLObject.getWQLObject("acs_device").query("is_delete= '0' AND is_active= '1' and device_type = '" + type + "' AND is_config = 'true'", "device_code").getResultJSONArray(0);
// return arr;
List<Device> deviceList = new LambdaQueryChainWrapper<>(deviceMapper)
List<Device> deviceList = new LambdaQueryChainWrapper<>(this.baseMapper)
.eq(Device::getIs_delete, "0")
.eq(Device::getIs_active, "1")
.eq(Device::getDevice_type, type)
@@ -1372,7 +1245,7 @@ public class DeviceServiceImpl extends CommonServiceImpl<DeviceMapper, Device> i
@Override
public JSONObject queryStorageExtra(String device_code) {
// JSONObject device = WQLObject.getWQLObject("acs_device").query("device_code = '" + device_code + "'").uniqueResult(0);
Device device = new LambdaQueryChainWrapper<>(deviceMapper)
Device device = new LambdaQueryChainWrapper<>(this.baseMapper)
.eq(Device::getDevice_code, device_code)
.one();
String device_id = device.getDevice_id();
@@ -1397,65 +1270,34 @@ public class DeviceServiceImpl extends CommonServiceImpl<DeviceMapper, Device> i
}
@Override
public void autoInitial() throws Exception {
this.reload();
}
/**
* 加载货位信息
*/
@Override
public void reload() {
this.storageCells = queryAllStorageCell();
}
@Override
public List<StorageCellDto> queryAllStorageCell() {
List<StorageCell> list = new LambdaQueryChainWrapper<>(storageCellMapper)
.list();
List<StorageCell> list = storageCellService.list();
return ConvertUtil.convertList(list, StorageCellDto.class);
}
@Override
public List<StorageCellDto> findAllStorageCellFromCache() {
return storageCells;
public Collection<StorageCellDto> findAllStorageCellFromCache() {
Map<String, StorageCellDto> storageCacheMap = storageCellService.Storage_Cache_Map;
return storageCacheMap.values();
}
@Override
public int queryAddressBydeviceCode(String code) {
Iterator iterator = storageCells.iterator();
while (iterator.hasNext()) {
StorageCellDto storageCellDto = (StorageCellDto) iterator.next();
if (storageCellDto.getStorage_code().equals(code)) {
return storageCellDto.getAddress();
}
}
return 0;
StorageCell one = storageCellService.getOne(new LambdaQueryWrapper<StorageCell>().eq(StorageCell::getStorage_code, code));
return one.getAddress();
}
@Override
public int queryAddressBynextdeviceCode(String code) {
Iterator iterator = storageCells.iterator();
while (iterator.hasNext()) {
StorageCellDto storageCellDto = (StorageCellDto) iterator.next();
if (storageCellDto.getStorage_code().equals(code)) {
return storageCellDto.getAddress1();
}
}
return 0;
StorageCell one = storageCellService.getOne(new LambdaQueryWrapper<StorageCell>().eq(StorageCell::getStorage_code, code));
return one.getAddress1();
}
@Override
public String queryDeviceCodeByAddress(int code) {
Iterator iterator = storageCells.iterator();
while (iterator.hasNext()) {
StorageCellDto storageCellDto = (StorageCellDto) iterator.next();
if (storageCellDto.getAddress() == code) {
return storageCellDto.getStorage_code();
}
}
return "0";
public String queryDeviceCodeByAddress(int add) {
StorageCell one = storageCellService.getOne(new LambdaQueryWrapper<StorageCell>().eq(StorageCell::getAddress, add));
return one.getStorage_code();
}
@Override
@@ -1852,7 +1694,7 @@ public class DeviceServiceImpl extends CommonServiceImpl<DeviceMapper, Device> i
param.put("zh_device_name", zh_device_name);
Device entity = ConvertUtil.convert(param, Device.class);
deviceMapper.insert(entity);
this.baseMapper.insert(entity);
}
}
@@ -1931,7 +1773,7 @@ public class DeviceServiceImpl extends CommonServiceImpl<DeviceMapper, Device> i
}
public JSONArray selectCarList() {
List<Device> deviceList = new LambdaQueryChainWrapper<>(deviceMapper).apply("device_type = 'agv' AND is_delete= '0' AND is_active= '1' AND is_config = 'true'").orderByAsc(Device::getDevice_code).list();
List<Device> deviceList = new LambdaQueryChainWrapper<>(this.baseMapper).apply("device_type = 'agv' AND is_delete= '0' AND is_active= '1' AND is_config = 'true'").orderByAsc(Device::getDevice_code).list();
JSONArray arr = JSONArray.parseArray(JSON.toJSONString(deviceList));
JSONArray result = new JSONArray();
for (int i = 0; i < arr.size(); i++) {

View File

@@ -0,0 +1,15 @@
### appInit
项目启动时候对项目进行初始化初始化器包括6项目
1.AutoRunService :根据配置判断哪些自动线程需要启动
2.自动线程继承AbstractAutoRunnable目前系统一共有4个自动线程
#### DeviceExecuteAutoRun
设备自动线程,完成每个设备驱动的加载
设备驱动通过while循环判断信号状态
#### NDCAutoRun
NDC自动线程通过该线程与NDC创建socket通讯做phace逻辑交互
该版本废弃统一改agvKit交互
#### DeviceOpcSynchronizeAutoRun
同步所有OpcService信号
该版本固定使用KEP-SERVER 进行信号同步
#### SocketListenerAutoRun
socket同步监听测试类在startconfig中配置不用

View File

@@ -1,5 +1,6 @@
package org.nl.acs.device.storageMgt.service;
import org.apache.ibatis.annotations.Param;
import org.nl.common.db.PageInfo;
import org.nl.common.db.CommonService;
import org.nl.acs.device.storageMgt.service.entity.StorageCell;
@@ -9,6 +10,7 @@ import org.springframework.data.domain.Pageable;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;
@@ -18,6 +20,7 @@ import java.util.Set;
* @date 2023-05-09
*/
public interface StorageCellService extends CommonService<StorageCell> {
Map<String,StorageCellDto> Storage_Cache_Map = new HashMap<>();
static final String CACHE_KEY = "storageCell";
@@ -157,4 +160,7 @@ public interface StorageCellService extends CommonService<StorageCell> {
void download(List<StorageCellDto> dtos, HttpServletResponse response) throws IOException;
StorageCell findByAddress(String taskPoint);
int deleteByStorageCode(@Param("storage_code") String storage_code);
}

View File

@@ -42,7 +42,6 @@ import java.util.*;
@Service
public class StorageCellServiceImpl extends CommonServiceImpl<StorageCellMapper, StorageCell> implements StorageCellService , ApplicationAutoInitial {
public static Map<String,StorageCellDto> Storage_Cache_Map = new HashMap<>();
@Override
@@ -193,6 +192,13 @@ public class StorageCellServiceImpl extends CommonServiceImpl<StorageCellMapper,
return storageCell;
}
@Override
public int deleteByStorageCode(String storage_code) {
if (!org.apache.commons.lang3.StringUtils.isEmpty(storage_code)){
return this.baseMapper.deleteByStorageCode(storage_code);
}
return 0;
}
public void initCache(){
List<StorageCell> list = this.list();

View File

@@ -19,7 +19,7 @@ public interface StorageCellMapper extends CommonMapper<StorageCell> {
* @param storage_code
* @return
*/
@Select("delete from acs_storage_cell where substring_index( storage_code,'-',1) = #{storage_code}")
@Select("delete from acs_storage_cell where storage_code = #{storage_code}")
int deleteByStorageCode(@Param("storage_code") String storage_code);

View File

@@ -0,0 +1,22 @@
### ApplicationAutoInitial
项目启动时候对项目进行资源初始化初始化器包括8项
#### 1.AutoRunServiceImpl
[自动线程初始化](./acs/autoThread/初始化自动线程.md)
1.包括opc信号同步自动线程-根据配置的opcServer(KEP)进行信号同步
2.设备驱动线程-execute方法用于设备信号判断
#### 2.DeviceAppServiceImpl
[设备信息加载](./acs/device/device/设备信息.md)
加载所有设备信息devices至本地内存
#### 3.StorageCellServiceImpl
加载货位信息至内存
#### NDCAutoRun
NDC自动线程通过该线程与NDC创建socket通讯做phace逻辑交互
该版本废弃统一改agvKit交互
#### DeviceOpcSynchronizeAutoRun
同步所有OpcService信号
该版本固定使用KEP-SERVER 进行信号同步
#### SocketListenerAutoRun
socket同步监听测试类在startconfig中配置不用

View File

@@ -1,156 +0,0 @@
server:
port: 8010
#配置数据源
spring:
datasource:
druid:
db-type: com.alibaba.druid.pool.DruidDataSource
driverClassName: net.sf.log4jdbc.sql.jdbcapi.DriverSpy
url: jdbc:log4jdbc:mysql://${DB_HOST:47.111.78.178}:${DB_PORT:3306}/${DB_NAME:ndxy3_lms}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&useOldAliasMetadataBehavior=true
username: ${DB_USER:root}
password: ${DB_PWD:P@ssw0rd}
# 初始连接数
initial-size: 5
# 最小连接数
min-idle: 15
# 最大连接数
max-active: 60
# 获取连接超时时间
max-wait: 5000
# 连接有效性检测时间
time-between-eviction-runs-millis: 60000
# 连接在池中最小生存的时间
min-evictable-idle-time-millis: 300000
# 连接在池中最大生存的时间
max-evictable-idle-time-millis: 900000
# 指明连接是否被空闲连接回收器(如果有)进行检验.如果检测失败,则连接将被从池中去除
test-while-idle: true
# 指明是否在从池中取出连接前进行检验,如果检验失败, 则从池中去除连接并尝试取出另一个
test-on-borrow: true
# 是否在归还到池中前进行检验
test-on-return: false
# 检测连接是否有效
validation-query: select 1
# 配置监控统计
webStatFilter:
enabled: true
stat-view-servlet:
enabled: true
# 控制台管理用户名和密码
url-pattern: /druid/*
reset-enable: false
login-username: admin
login-password: 123456
filter:
stat:
enabled: true
# 记录慢SQL
log-slow-sql: true
slow-sql-millis: 1000
merge-sql: true
wall:
config:
multi-statement-allow: true
redis:
#数据库索引
host: ${REDIS_HOST:127.0.0.1}
port: ${REDIS_PORT:6379}
#连接超时时间
timeout: 5000
redisson:
config: |
threads: 4
nettyThreads: 4
singleServerConfig:
database: 1
connectionMinimumIdleSize: 8
connectionPoolSize: 8
address: redis://127.0.0.1:6379
idleConnectionTimeout: 10000
timeout: 3000
# 登录相关配置
login:
# 登录缓存
cache-enable: true
# 是否限制单用户登录
single-login: false
# 验证码
login-code:
# 验证码类型配置 查看 LoginProperties 类
code-type: arithmetic
# 登录图形验证码有效时间/分钟
expiration: 2
# 验证码高度
width: 111
# 验证码宽度
heigth: 36
# 内容长度
length: 2
# 字体名称,为空则使用默认字体,如遇到线上乱码,设置其他字体即可
font-name:
# 字体大小
font-size: 25
#jwt
jwt:
header: Authorization
# 令牌前缀
token-start-with: Bearer
# 必须使用最少88位的Base64对该令牌进行编码
base64-secret: ZmQ0ZGI5NjQ0MDQwY2I4MjMxY2Y3ZmI3MjdhN2ZmMjNhODViOTg1ZGE0NTBjMGM4NDA5NzYxMjdjOWMwYWRmZTBlZjlhNGY3ZTg4Y2U3YTE1ODVkZDU5Y2Y3OGYwZWE1NzUzNWQ2YjFjZDc0NGMxZWU2MmQ3MjY1NzJmNTE0MzI=
# 令牌过期时间 此处单位/毫秒 默认2小时可在此网站生成 https://www.convertworld.com/zh-hans/time/milliseconds.html
token-validity-in-seconds: 7200000
# 在线用户key
online-key: online-token-
# 验证码
code-key: code-key-
# token 续期检查时间范围默认30分钟单位默认毫秒在token即将过期的一段时间内用户操作了则给用户的token续期
detect: 1800000
# 续期时间范围,默认 1小时这里单位毫秒
renew: 3600000
# IP 本地解析
ip:
local-parsing: true
#是否允许生成代码生产环境设置为false
generator:
enabled: false
# 文件存储路径
file:
mac:
path: ~/file/
avatar: ~/avatar/
linux:
path: /home/eladmin/file/
avatar: /home/eladmin/avatar/
windows:
path: C:\eladmin\file\
avatar: C:\eladmin\avatar\
# 文件大小 /M
maxSize: 100
avatarMaxSize: 5
logging:
file:
path: /app/jar/logs
config: classpath:logback-spring.xml
# Sa-Token配置
sa-token:
# token 名称 (同时也是cookie名称)
token-name: Authorization
# token 有效期单位s 默认30天, -1代表永不过期
timeout: 2592000
# token 临时有效期 (指定时间内无操作就视为token过期) 单位: 秒
activity-timeout: -1
# 是否允许同一账号并发登录 (为true时允许一起登录, 为false时新登录挤掉旧登录)
is-concurrent: true
# 在多人登录同一账号时是否共用一个token (为true时所有登录共用一个token, 为false时每次登录新建一个token)
is-share: false
# token风格
token-style: random-128
# 是否输出操作日志
is-log: false
jwt-secret-key: opsjajisdnnca0sdkksdfaaasdfwwq
# token 前缀
token-prefix: Bearer

View File

@@ -1,29 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<included>
<springProperty scope="context" name="logPath" source="logging.file.path" defaultValue="logs"/>
<property name="LOG_HOME" value="${logPath}"/>
<!-- 按照每天生成日志文件 -->
<appender name="ACSToLMS" class="ch.qos.logback.core.rolling.RollingFileAppender">
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<!--日志文件输出的文件名-->
<FileNamePattern>${LOG_HOME}/ACS请求LMS/%d{yyyy-MM-dd}.%i.log</FileNamePattern>
<!--日志文件保留天数-->
<maxHistory>15</maxHistory>
<!--单个日志最大容量 至少10MB才能看得出来-->
<maxFileSize>50MB</maxFileSize>
<!--所有日志最多占多大容量-->
<totalSizeCap>2GB</totalSizeCap>
</rollingPolicy>
<encoder class="com.yomahub.tlog.core.enhance.logback.AspectLogbackEncoder">
<!--格式化输出:%d表示日期%thread表示线程名%-5level级别从左显示5个字符宽度%msg日志消息%n是换行符-->
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
<charset>${log.charset}</charset>
</encoder>
</appender>
<!-- 打印sql -->
<logger name="org.nl.acs.api.wms.service.impl.AcsToWmsServiceImpl" level="info" additivity="true">
<appender-ref ref="ACSToLMS"/>
</logger>
</included>

View File

@@ -1,29 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<included>
<springProperty scope="context" name="logPath" source="logging.file.path" defaultValue="logs"/>
<property name="LOG_HOME" value="${logPath}"/>
<!-- 按照每天生成日志文件 -->
<appender name="LMSToACS" class="ch.qos.logback.core.rolling.RollingFileAppender">
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<!--日志文件输出的文件名-->
<FileNamePattern>${LOG_HOME}/LMS下发ACS/%d{yyyy-MM-dd}.%i.log</FileNamePattern>
<!--日志文件保留天数-->
<maxHistory>15</maxHistory>
<!--单个日志最大容量 至少10MB才能看得出来-->
<maxFileSize>50MB</maxFileSize>
<!--所有日志最多占多大容量-->
<totalSizeCap>2GB</totalSizeCap>
</rollingPolicy>
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<!--格式化输出:%d表示日期%thread表示线程名%-5level级别从左显示5个字符宽度%msg日志消息%n是换行符-->
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
<charset>${log.charset}</charset>
</encoder>
</appender>
<!-- 打印sql -->
<logger name="org.nl.acs.api.wms.service.impl.WmsToAcsServiceImpl" level="info" additivity="true">
<appender-ref ref="LMSToACS"/>
</logger>
</included>

View File

@@ -1,33 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<included>
<springProperty scope="context" name="logPath" source="logging.file.path" defaultValue="logs"/>
<property name="LOG_HOME" value="${logPath}"/>
<!-- 按照每天生成日志文件 -->
<appender name="FILE18" class="ch.qos.logback.core.rolling.RollingFileAppender">
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<!--日志文件输出的文件名-->
<FileNamePattern>${LOG_HOME}/agv下发/%d{yyyy-MM-dd}.%i.log</FileNamePattern>
<!--日志文件保留天数-->
<maxHistory>15</maxHistory>
<!--单个日志最大容量 至少10MB才能看得出来-->
<maxFileSize>50MB</maxFileSize>
<!--所有日志最多占多大容量-->
<totalSizeCap>2GB</totalSizeCap>
</rollingPolicy>
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<!--格式化输出:%d表示日期%thread表示线程名%-5level级别从左显示5个字符宽度%msg日志消息%n是换行符-->
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
<charset>${log.charset}</charset>
</encoder>
</appender>
<!-- <logger name="org.nl.start.Init" level="info" additivity="true">
<appender-ref ref="FILE3"/>
</logger>-->
<!-- 打印sql -->
<logger name="org.nl.acs.agv.server.impl.NDCAgvServiceImpl" level="info" additivity="true">
<appender-ref ref="FILE18"/>
</logger>
</included>

View File

@@ -1,33 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<included>
<springProperty scope="context" name="logPath" source="logging.file.path" defaultValue="logs"/>
<property name="LOG_HOME" value="${logPath}"/>
<!-- 按照每天生成日志文件 -->
<appender name="FILE11" class="ch.qos.logback.core.rolling.RollingFileAppender">
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<!--日志文件输出的文件名-->
<FileNamePattern>${LOG_HOME}/一楼NDC系统/%d{yyyy-MM-dd}.%i.log</FileNamePattern>
<!--日志文件保留天数-->
<maxHistory>15</maxHistory>
<!--单个日志最大容量 至少10MB才能看得出来-->
<maxFileSize>50MB</maxFileSize>
<!--所有日志最多占多大容量-->
<totalSizeCap>2GB</totalSizeCap>
</rollingPolicy>
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<!--格式化输出:%d表示日期%thread表示线程名%-5level级别从左显示5个字符宽度%msg日志消息%n是换行符-->
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
<charset>${log.charset}</charset>
</encoder>
</appender>
<!-- <logger name="org.nl.start.Init" level="info" additivity="true">
<appender-ref ref="FILE3"/>
</logger>-->
<!-- 打印sql -->
<logger name="org.nl.acs.autoThread.autoRunThread.OneNDCSocketConnectionAutoRun" level="info" additivity="true">
<appender-ref ref="FILE11"/>
</logger>
</included>

View File

@@ -1,33 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<included>
<springProperty scope="context" name="logPath" source="logging.file.path" defaultValue="logs"/>
<property name="LOG_HOME" value="${logPath}"/>
<!-- 按照每天生成日志文件 -->
<appender name="FILE10" class="ch.qos.logback.core.rolling.RollingFileAppender">
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<!--日志文件输出的文件名-->
<FileNamePattern>${LOG_HOME}/二楼NDC系统/%d{yyyy-MM-dd}.%i.log</FileNamePattern>
<!--日志文件保留天数-->
<maxHistory>15</maxHistory>
<!--单个日志最大容量 至少10MB才能看得出来-->
<maxFileSize>50MB</maxFileSize>
<!--所有日志最多占多大容量-->
<totalSizeCap>2GB</totalSizeCap>
</rollingPolicy>
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<!--格式化输出:%d表示日期%thread表示线程名%-5level级别从左显示5个字符宽度%msg日志消息%n是换行符-->
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
<charset>${log.charset}</charset>
</encoder>
</appender>
<!-- <logger name="org.nl.start.Init" level="info" additivity="true">
<appender-ref ref="FILE3"/>
</logger>-->
<!-- 打印sql -->
<logger name="org.nl.acs.autoThread.autoRunThread.service.impl.TwoNDCSocketConnectionAutoRun" level="info" additivity="true">
<appender-ref ref="FILE10"/>
</logger>
</included>

View File

@@ -1,34 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<included>
<springProperty scope="context" name="logPath" source="logging.file.path" defaultValue="logs"/>
<property name="LOG_HOME" value="${logPath}"/>
<!-- 按照每天生成日志文件 -->
<appender name="XgagvDeviceDriver" class="ch.qos.logback.core.rolling.RollingFileAppender">
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<!--日志文件输出的文件名-->
<FileNamePattern>${LOG_HOME}/XgAgvDeviceDriver/${DEVICECODE}/%d{yyyy-MM-dd}.%i.log</FileNamePattern>
<!--日志文件保留天数-->
<maxHistory>15</maxHistory>
<!--单个日志最大容量 至少10MB才能看得出来-->
<maxFileSize>50MB</maxFileSize>
<!--所有日志最多占多大容量-->
<totalSizeCap>2GB</totalSizeCap>
</rollingPolicy>
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<!--格式化输出:%d表示日期%thread表示线程名%-5level级别从左显示5个字符宽度%msg日志消息%n是换行符-->
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
<charset>${log.charset}</charset>
</encoder>
</appender>
<appender name="asyncFileAppender" class="ch.qos.logback.classic.AsyncAppender">
<appender-ref ref="XgagvDeviceDriver" />
<!-- 设置队列大小,根据您的需求调整 -->
<queueSize>512</queueSize>
</appender>
<logger name="org.nl.acs.device_driver.agv.xg_agv.XgagvDeviceDriver" level="info" additivity="true">
<appender-ref ref="asyncFileAppender"/>
</logger>
</included>

View File

@@ -1,29 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<included>
<springProperty scope="context" name="logPath" source="logging.file.path" defaultValue="logs"/>
<property name="LOG_HOME" value="${logPath}"/>
<!-- 按照每天生成日志文件 -->
<appender name="XianGongAgvServiceImpl" class="ch.qos.logback.core.rolling.RollingFileAppender">
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<!--日志文件输出的文件名-->
<FileNamePattern>${LOG_HOME}/仙工agv请求/%d{yyyy-MM-dd}.%i.log</FileNamePattern>
<!--日志文件保留天数-->
<maxHistory>15</maxHistory>
<!--单个日志最大容量 至少10MB才能看得出来-->
<maxFileSize>50MB</maxFileSize>
<!--所有日志最多占多大容量-->
<totalSizeCap>2GB</totalSizeCap>
</rollingPolicy>
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<!--格式化输出:%d表示日期%thread表示线程名%-5level级别从左显示5个字符宽度%msg日志消息%n是换行符-->
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
<charset>${log.charset}</charset>
</encoder>
</appender>
<!-- 打印sql -->
<logger name="org.nl.acs.agv.server.impl.XianGongAgvServiceImpl" level="info" additivity="true">
<appender-ref ref="XianGongAgvServiceImpl"/>
</logger>
</included>

View File

@@ -1,4 +0,0 @@
# If you use SLF4J. First, you need to tell log4jdbc-log4j2 that you want to use the SLF4J logger
log4jdbc.spylogdelegator.name=net.sf.log4jdbc.log.slf4j.Slf4jSpyLogDelegator
log4jdbc.auto.load.popular.drivers=false
log4jdbc.drivers=com.mysql.cj.jdbc.Driver

View File

@@ -18,12 +18,7 @@ https://juejin.cn/post/6844903775631572999
<!--定义日志文件的存储地址 勿在 LogBack 的配置中使用相对路径-->
<property name="LOG_HOME" value="${logPath}"/>
<!--引入默认的一些设置-->
<include resource="log/ACSToLMS.xml"/>
<include resource="log/LMSToACS.xml"/>
<include resource="log/TwoNDCSocketConnectionAutoRun.xml"/>
<include resource="log/NDCAgvServiceImpl.xml"/>
<include resource="log/XgAgvDeviceDriver.xml"/>
<include resource="log/XianGongAgvServiceImpl.xml"/>
<include resource="log/OpcLog.xml"/>
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<!--withJansi 参数改为true-->

View File

@@ -1,10 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.nl.acs.angle.mapper.AcsPointAngleMapper">
<!-- 通用查询结果列 -->
<sql id="Base_Column_List">
id, start_point_code, start_device_code, next_point_code, next_device_code, start_point_angle, next_point_angle, is_active, create_by, create_time, update_by, update_time
</sql>
</mapper>

View File

@@ -1,10 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.nl.acs.angle.mapper.AcsTaskMapper">
<!-- 通用查询结果列 -->
<sql id="Base_Column_List">
task_id, ext_task_id, task_code, vehicle_code, vehicle_type, task_type, task_status, compound_task, compound_task_data, request_again, request_again_success, link_num, is_send, material, quantity, priority, create_type, finish_type, execute_code, execute_message, start_point_code, start_device_code, put_point_code, put_device_code, start_point_code2, start_device_code2, next_point_code, next_device_code, next_point_code2, next_device_code2, from_x, from_y, from_z, put_x, put_y, put_z, to_x, to_y, to_z, from_x2, from_y2, from_z2, to_x2, to_y2, to_z2, route_plan_name, route_plan_code, is_needfeedback, emptypallet_num, remark, is_active, is_delete, create_by, create_time, update_by, update_time, weight, agv_system_type, storage_task_type, temperature, oven_time, car_no, start_height, next_height
</sql>
</mapper>