From 7d5b6ab73e22ddc95cfd00e7cdad7cf36348bd53 Mon Sep 17 00:00:00 2001 From: xia Date: Wed, 8 Jun 2022 11:12:12 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E7=9B=92=E7=AE=A1=E7=90=86?= =?UTF-8?q?=E6=A8=A1=E5=9D=97=20=E6=96=B0=E5=A2=9E=E6=89=8B=E6=8C=81?= =?UTF-8?q?=E7=9B=98=E7=82=B9=E6=9C=BA=E6=A8=A1=E5=9D=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- archives/pom.xml | 5 + .../controller/ArchivesController.java | 8 + .../archives/controller/CaseController.java | 52 ++++++ .../archives/controller/RFIDController.java | 149 ++++++++++++++++++ .../modules/archives/domain/ArchivesCase.java | 48 ++++++ .../repository/ArchivesCaseRepository.java | 14 ++ .../repository/ArchivesSummaryRepository.java | 1 + .../archives/service/ArchivesCaseService.java | 15 ++ .../archives/service/ArchivesService.java | 2 + .../service/impl/ArchivesCaseServiceImpl.java | 61 +++++++ .../service/impl/ArchivesServiceImpl.java | 46 +++--- .../ArchivesDictionaryRepository.java | 8 +- .../dictionary/service/dto/CaseDTO.java | 20 +++ system/src/main/resources/application.yml | 4 + 14 files changed, 409 insertions(+), 24 deletions(-) create mode 100644 archives/src/main/java/com/storeroom/modules/archives/controller/CaseController.java create mode 100644 archives/src/main/java/com/storeroom/modules/archives/controller/RFIDController.java create mode 100644 archives/src/main/java/com/storeroom/modules/archives/domain/ArchivesCase.java create mode 100644 archives/src/main/java/com/storeroom/modules/archives/repository/ArchivesCaseRepository.java create mode 100644 archives/src/main/java/com/storeroom/modules/archives/service/ArchivesCaseService.java create mode 100644 archives/src/main/java/com/storeroom/modules/archives/service/impl/ArchivesCaseServiceImpl.java create mode 100644 archives/src/main/java/com/storeroom/modules/dictionary/service/dto/CaseDTO.java diff --git a/archives/pom.xml b/archives/pom.xml index 87889a6..a433380 100644 --- a/archives/pom.xml +++ b/archives/pom.xml @@ -29,6 +29,11 @@ logging 1.0 + + org.apache.httpcomponents + httpclient + 4.5.13 + \ No newline at end of file diff --git a/archives/src/main/java/com/storeroom/modules/archives/controller/ArchivesController.java b/archives/src/main/java/com/storeroom/modules/archives/controller/ArchivesController.java index ad9a972..646c06a 100644 --- a/archives/src/main/java/com/storeroom/modules/archives/controller/ArchivesController.java +++ b/archives/src/main/java/com/storeroom/modules/archives/controller/ArchivesController.java @@ -20,6 +20,14 @@ public class ArchivesController { private final ArchivesService archivesService; + @ApiOperation("档案列表") + @GetMapping("/initArchivesViewTable") + public ApiResponse initArchivesViewTable( + String categoryId + ){ + return ApiResponse.success(archivesService.initArchivesViewTable(categoryId)); + } + @ApiOperation("档案列表") @GetMapping("/initArchivesView") public ApiResponse initArchivesView( diff --git a/archives/src/main/java/com/storeroom/modules/archives/controller/CaseController.java b/archives/src/main/java/com/storeroom/modules/archives/controller/CaseController.java new file mode 100644 index 0000000..4528209 --- /dev/null +++ b/archives/src/main/java/com/storeroom/modules/archives/controller/CaseController.java @@ -0,0 +1,52 @@ +package com.storeroom.modules.archives.controller; + +import com.storeroom.modules.archives.service.ArchivesCaseService; +import com.storeroom.modules.dictionary.service.dto.CaseDTO; +import com.storeroom.utils.ApiResponse; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import org.springframework.data.domain.Pageable; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +@RestController +@RequiredArgsConstructor +@Api(tags = "盒管理") +@RequestMapping("/api/case") +public class CaseController { + + private final ArchivesCaseService caseService; + + @ApiOperation("档案盒列表") + @GetMapping("/initCaseList") + public ApiResponse initCaseList( + String tid, String caseName, Pageable page + ){ + return ApiResponse.success(caseService.initCaseList(tid,caseName,page)); + } + + @ApiOperation("档案盒编辑") + @PostMapping("/edit") + public ApiResponse edit( + @Validated @RequestBody CaseDTO dto + ){ + return ApiResponse.success(caseService.edit(dto)); + } + + @ApiOperation("档案盒绑定标签") + @PostMapping("/bingdingLabel") + public ApiResponse bingdingLabel( + @Validated @RequestBody CaseDTO dto + ){ + Integer bindingCount = caseService.findIsBingdingLabel(dto.getTid(),dto.getLabelType()); + if(bindingCount == 0){ + return ApiResponse.success(null); + }else{ + return ApiResponse.error(); + } + } + + + +} diff --git a/archives/src/main/java/com/storeroom/modules/archives/controller/RFIDController.java b/archives/src/main/java/com/storeroom/modules/archives/controller/RFIDController.java new file mode 100644 index 0000000..ffe8797 --- /dev/null +++ b/archives/src/main/java/com/storeroom/modules/archives/controller/RFIDController.java @@ -0,0 +1,149 @@ +package com.storeroom.modules.archives.controller; + + +import cn.hutool.http.HttpResource; +import com.storeroom.utils.ApiResponse; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import org.apache.http.HttpEntity; +import org.apache.http.HttpResponse; +import org.apache.http.client.HttpClient; +import org.apache.http.client.methods.HttpGet; +import org.apache.http.client.methods.HttpPost; +import org.apache.http.entity.StringEntity; +import org.apache.http.impl.client.CloseableHttpClient; +import org.apache.http.impl.client.HttpClients; +import org.apache.http.util.EntityUtils; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStreamReader; + +@RestController +@RequiredArgsConstructor +@Api(tags = "RFID手持机") +@RequestMapping("/api/RFID") +public class RFIDController { + + @Value("${hand-held.ip}") + private String ip; + + @ApiOperation("读取epc和Tid号") + @GetMapping("/ReadEpc") + public ApiResponse ReadEpc(String op,String sDevID) throws IOException { + String result = ""; + try { + HttpClient client = HttpClients.createDefault(); + String url = "http://"+ip+"/RFIDInterface.aspx?op="+op+"&sDevID="+sDevID; + HttpGet httpGet = new HttpGet(url); + httpGet.setHeader("Content-Type", "application/x-www-form-urlencoded"); + System.out.println("调用URL: " + httpGet.getURI()); + //httpClient实例化 + CloseableHttpClient httpClient = HttpClients.createDefault(); + // 执行请求并获取返回 + HttpResponse response = httpClient.execute(httpGet); + HttpEntity entity = response.getEntity(); + System.out.println("返回状态码:" + response.getStatusLine()); + // 显示结果 + BufferedReader reader = new BufferedReader(new InputStreamReader(entity.getContent(), "UTF-8")); + String line = null; + StringBuffer responseSB = new StringBuffer(); + while ((line = reader.readLine()) != null) { + if(line.contains(" WriteEPC(String op,String sDevID,String EAS,String Type,String Code,String Tid) throws IOException { + String result = ""; + try { + HttpClient client = HttpClients.createDefault(); + String url = "http://"+ip+"/RFIDInterface.aspx?op="+op + +"&sDevID="+sDevID + +"&EAS="+EAS + +"&Type="+Type + +"&Code="+Code + +"&Tid="+Tid; + HttpGet httpGet = new HttpGet(url); + httpGet.setHeader("Content-Type", "application/x-www-form-urlencoded"); + System.out.println("调用URL: " + httpGet.getURI()); + //httpClient实例化 + CloseableHttpClient httpClient = HttpClients.createDefault(); + // 执行请求并获取返回 + HttpResponse response = httpClient.execute(httpGet); + HttpEntity entity = response.getEntity(); + System.out.println("返回状态码:" + response.getStatusLine()); + // 显示结果 + BufferedReader reader = new BufferedReader(new InputStreamReader(entity.getContent(), "UTF-8")); + String line = null; + StringBuffer responseSB = new StringBuffer(); + while ((line = reader.readLine()) != null) { + if(line.contains(" CheckStatus(String op,String sDevID) throws IOException { + String result = ""; + try { + HttpClient client = HttpClients.createDefault(); + String url = "http://"+ip+"/RFIDInterface.aspx?op="+op+"&sDevID="+sDevID; + HttpGet httpGet = new HttpGet(url); + httpGet.setHeader("Content-Type", "application/x-www-form-urlencoded"); + System.out.println("调用URL: " + httpGet.getURI()); + //httpClient实例化 + CloseableHttpClient httpClient = HttpClients.createDefault(); + // 执行请求并获取返回 + HttpResponse response = httpClient.execute(httpGet); + HttpEntity entity = response.getEntity(); + System.out.println("返回状态码:" + response.getStatusLine()); + // 显示结果 + BufferedReader reader = new BufferedReader(new InputStreamReader(entity.getContent(), "UTF-8")); + String line = null; + StringBuffer responseSB = new StringBuffer(); + while ((line = reader.readLine()) != null) { + if(line.contains("{ + + Page findAllByCaseNameLikeAndTidLike(String caseName, String tid, Pageable page); + + Integer countAllByTid(String tid); + +} diff --git a/archives/src/main/java/com/storeroom/modules/archives/repository/ArchivesSummaryRepository.java b/archives/src/main/java/com/storeroom/modules/archives/repository/ArchivesSummaryRepository.java index 8324144..869d118 100644 --- a/archives/src/main/java/com/storeroom/modules/archives/repository/ArchivesSummaryRepository.java +++ b/archives/src/main/java/com/storeroom/modules/archives/repository/ArchivesSummaryRepository.java @@ -9,5 +9,6 @@ import java.util.Map; public interface ArchivesSummaryRepository extends JpaRepository{ + Integer countAllByTagNo(String tid); } diff --git a/archives/src/main/java/com/storeroom/modules/archives/service/ArchivesCaseService.java b/archives/src/main/java/com/storeroom/modules/archives/service/ArchivesCaseService.java new file mode 100644 index 0000000..8bb5b79 --- /dev/null +++ b/archives/src/main/java/com/storeroom/modules/archives/service/ArchivesCaseService.java @@ -0,0 +1,15 @@ +package com.storeroom.modules.archives.service; + +import com.storeroom.modules.dictionary.service.dto.CaseDTO; +import org.springframework.data.domain.Pageable; + +public interface ArchivesCaseService { + //初始化档案盒列表 + Object initCaseList(String tid, String caseName, Pageable page); + //编辑档案盒信息 + Object edit(CaseDTO dto); + //查询该标签是否绑定过 + Integer findIsBingdingLabel(String label,Integer labelType); + + +} diff --git a/archives/src/main/java/com/storeroom/modules/archives/service/ArchivesService.java b/archives/src/main/java/com/storeroom/modules/archives/service/ArchivesService.java index fc5117b..49be169 100644 --- a/archives/src/main/java/com/storeroom/modules/archives/service/ArchivesService.java +++ b/archives/src/main/java/com/storeroom/modules/archives/service/ArchivesService.java @@ -4,6 +4,8 @@ import com.storeroom.modules.archives.service.dto.ArchivesDTO; import org.springframework.data.domain.Pageable; public interface ArchivesService { + //初始化档案列表标题 + Object initArchivesViewTable(String categoryId); //初始化档案列表 Object initArchivesView(String categoryId, String query, boolean isdel,Pageable page); //预编辑档案 初始化信息 diff --git a/archives/src/main/java/com/storeroom/modules/archives/service/impl/ArchivesCaseServiceImpl.java b/archives/src/main/java/com/storeroom/modules/archives/service/impl/ArchivesCaseServiceImpl.java new file mode 100644 index 0000000..dfac286 --- /dev/null +++ b/archives/src/main/java/com/storeroom/modules/archives/service/impl/ArchivesCaseServiceImpl.java @@ -0,0 +1,61 @@ +package com.storeroom.modules.archives.service.impl; + +import com.storeroom.modules.archives.domain.ArchivesCase; +import com.storeroom.modules.archives.repository.ArchivesCaseRepository; +import com.storeroom.modules.archives.repository.ArchivesSummaryRepository; +import com.storeroom.modules.archives.service.ArchivesCaseService; +import com.storeroom.modules.dictionary.service.dto.CaseDTO; +import com.storeroom.utils.NanoIdUtils; +import com.storeroom.utils.PageUtil; +import com.storeroom.utils.StringUtils; +import lombok.RequiredArgsConstructor; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; +import org.springframework.stereotype.Service; + +import java.sql.Timestamp; + + +@Service +@RequiredArgsConstructor +public class ArchivesCaseServiceImpl implements ArchivesCaseService { + + private final ArchivesCaseRepository caseRepository; + private final ArchivesSummaryRepository archivesSummaryRepository; + + @Override + public Object initCaseList(String tid, String caseName, Pageable page) { + tid = StringUtils.isEmpty(tid) ? "%%" : "%"+tid+"%"; + caseName = StringUtils.isEmpty(caseName) ? "%%" : "%"+caseName+"%"; + Page pageCase = caseRepository.findAllByCaseNameLikeAndTidLike(caseName,tid,page); + return PageUtil.toPage(pageCase); + } + + @Override + public Object edit(CaseDTO dto) { + ArchivesCase archivesCase = null; + if(!StringUtils.isEmpty(dto.getId())){ + archivesCase = caseRepository.findById(dto.getId()).get(); + }else{ + archivesCase = new ArchivesCase(); + archivesCase.setId(NanoIdUtils.randomNanoId()); + archivesCase.setCaseType(0); + archivesCase.setDepositNum(0); + } + archivesCase.setCaseName(dto.getCaseName()); + return caseRepository.saveAndFlush(archivesCase); + } + + @Override + public Integer findIsBingdingLabel(String tid,Integer labelType) { + if(labelType==1){ + return archivesSummaryRepository.countAllByTagNo(tid); + }else if(labelType==2){ + return caseRepository.countAllByTid(tid); + }else if(labelType==3){ + return 0; + }else{ + return 0; + } + } +} diff --git a/archives/src/main/java/com/storeroom/modules/archives/service/impl/ArchivesServiceImpl.java b/archives/src/main/java/com/storeroom/modules/archives/service/impl/ArchivesServiceImpl.java index 80026b1..90117a0 100644 --- a/archives/src/main/java/com/storeroom/modules/archives/service/impl/ArchivesServiceImpl.java +++ b/archives/src/main/java/com/storeroom/modules/archives/service/impl/ArchivesServiceImpl.java @@ -11,6 +11,7 @@ import com.storeroom.modules.dictionary.domain.ArchivesType; import com.storeroom.modules.dictionary.repository.ArchivesDictionaryRepository; import com.storeroom.modules.dictionary.repository.ArchivesTypeRepository; import com.storeroom.utils.NanoIdUtils; +import com.storeroom.utils.PageUtil; import com.storeroom.utils.StringUtils; import lombok.RequiredArgsConstructor; import org.springframework.data.domain.Pageable; @@ -36,15 +37,19 @@ public class ArchivesServiceImpl implements ArchivesService { @PersistenceContext EntityManager entityManager; + @Override + public Object initArchivesViewTable(String categoryId) { + List queryShow = archivesDictionaryRepository.findDisPlay(categoryId); + return queryShow; + } + @Override public Object initArchivesView(String categoryId, String query, boolean isdel,Pageable page) { - categoryId = "FFAFBB1647D459C82080A"; Optional optional = archivesTypeRepository.findById(categoryId); if(!optional.isPresent()) return "未查询到到门类信息!"; ArchivesType archivesType = optional.get(); List queryFields = archivesDictionaryRepository.findDisPlayField(categoryId); - List queryShow = archivesDictionaryRepository.findDisPlay(categoryId); String queryField = queryFields.stream().map(String::valueOf).collect(Collectors.joining(",")); String queryTable = archivesType.getEnName(); String quertOrder = ""; @@ -58,16 +63,24 @@ public class ArchivesServiceImpl implements ArchivesService { if(objects.length > 0) quertOrder = " order by " + quertOrder.substring(0,quertOrder.length()-1); + List countList = entityManager.createNativeQuery("select count(1) from "+queryTable+additional).getResultList(); + Object count = countList.get(0); List list = entityManager.createNativeQuery("select "+queryField+" from "+queryTable+additional+quertOrder).getResultList(); - JSONObject json = new JSONObject(); - json.put("queryFields",queryShow); - json.put("showlist",list); - return json; + List returnlist = new ArrayList<>(); + for(Object[] objs:list){ + Map map = new HashMap(); + for(int i = 0;i allFiled = archivesDictionaryRepository.findAllByCategoryIdOrderByIsSequenceAsc(categoryId); List showFiled = archivesDictionaryRepository.findAllByCategoryIdAndIsInputOrderByIsSequenceAsc(categoryId,true); if(!StringUtils.isEmpty(archivesId)){ ArchivesType archivesType = archivesTypeRepository.findById(categoryId).get(); @@ -87,6 +100,7 @@ public class ArchivesServiceImpl implements ArchivesService { json.put("echo",echo); } } + json.put("allFiled",allFiled); json.put("showFiled",showFiled); return json; } @@ -94,14 +108,10 @@ public class ArchivesServiceImpl implements ArchivesService { @Override @Transactional(rollbackFor = Exception.class) public Object edit(ArchivesDTO dto) { - dto = new ArchivesDTO(); - dto.setJsonString("{'category_name':'测试111','remarks':'这是一个备注2'}"); - String dtoId = "42DA07A3174510955C5636"; // String dtoId = null; JSONObject json = new JSONObject(dto.getJsonString()); - String categoryId = "FFAFBB1647D459C82080A"; - ArchivesType archivesType = archivesTypeRepository.findById(categoryId).get(); - List showFiled = archivesDictionaryRepository.findAllByCategoryIdAndIsInputOrderByIsSequenceAsc(categoryId,true); + ArchivesType archivesType = archivesTypeRepository.findById(dto.getCategoryId()).get(); + List showFiled = archivesDictionaryRepository.findAllByCategoryIdAndIsInputOrderByIsSequenceAsc(dto.getCategoryId(),true); String insertFiled = ""; String insertValue = ""; String updateValue = ""; @@ -122,7 +132,7 @@ public class ArchivesServiceImpl implements ArchivesService { if(list.size()!=0){ for(Object[] objs:list){ if(json.get(archivesDictionary.getFieldName()).equals(objs[1])){ - if(!dtoId.equals(objs[0])){ + if(!dto.getId().equals(objs[0])){ return archivesDictionary.getFieldName()+"不可重复"; } } @@ -131,7 +141,7 @@ public class ArchivesServiceImpl implements ArchivesService { } } - if(StringUtils.isEmpty(dtoId)){ + if(StringUtils.isEmpty(dto.getId())){ insertFiled +=archivesDictionary.getFieldName()+","; insertValue += archivesDictionary.getIsDataType() == 1 ? null == json.get(archivesDictionary.getFieldName()) ? null+"," : "'"+json.get(archivesDictionary.getFieldName())+"'," @@ -148,8 +158,8 @@ public class ArchivesServiceImpl implements ArchivesService { updateValue = updateValue.length() != 0 ? updateValue.substring(0,updateValue.length()-1) : ""; insertFiled = "id,"+insertFiled; insertValue = "'"+NanoIdUtils.randomNanoId()+"',"+insertValue; - String sql = StringUtils.isEmpty(dtoId) ? "insert into " + archivesType.getEnName() + "(" + insertFiled +") values ("+insertValue+")" - : "update "+archivesType.getEnName() +" set "+updateValue+" where id = '"+dtoId+"'"; + String sql = StringUtils.isEmpty(dto.getId()) ? "insert into " + archivesType.getEnName() + "(" + insertFiled +") values ("+insertValue+")" + : "update "+archivesType.getEnName() +" set "+updateValue+" where id = '"+dto.getId()+"'"; int result = entityManager.createNativeQuery(sql).executeUpdate(); return "成功更新"+result+"条数据。"; } @@ -157,8 +167,6 @@ public class ArchivesServiceImpl implements ArchivesService { @Override @Transactional(rollbackFor = Exception.class) public Object delete(ArchivesDTO dto) { - dto.setId("42DA07A3174510955C5635"); - dto.setCategoryId("FFAFBB1647D459C82080A"); ArchivesType archivesType = archivesTypeRepository.findById(dto.getCategoryId()).get(); String queryTable = archivesType.getEnName(); String sql = "update " + queryTable + " set is_delete_time = '" +sdf.format(new Date())+"',is_delete_man='"+dto.getDelMan()+"' where id = '"+dto.getId()+"'"; @@ -169,8 +177,6 @@ public class ArchivesServiceImpl implements ArchivesService { @Override @Transactional(rollbackFor = Exception.class) public Object completelyDelete(ArchivesDTO dto) { - dto.setId("42DA07A3174510955C5635"); - dto.setCategoryId("FFAFBB1647D459C82080A"); ArchivesType archivesType = archivesTypeRepository.findById(dto.getCategoryId()).get(); String queryTable = archivesType.getEnName(); String sql = "delete from " +queryTable+" where id = '"+dto.getId()+"'"; diff --git a/archives/src/main/java/com/storeroom/modules/dictionary/repository/ArchivesDictionaryRepository.java b/archives/src/main/java/com/storeroom/modules/dictionary/repository/ArchivesDictionaryRepository.java index 57027ef..0a7f4df 100644 --- a/archives/src/main/java/com/storeroom/modules/dictionary/repository/ArchivesDictionaryRepository.java +++ b/archives/src/main/java/com/storeroom/modules/dictionary/repository/ArchivesDictionaryRepository.java @@ -10,12 +10,14 @@ import java.util.List; public interface ArchivesDictionaryRepository extends JpaRepository, JpaSpecificationExecutor { @Query(nativeQuery = true, - value = "select field_name from archives_dictionary where category_id = ?1 and is_display is true order by is_displayorder asc") + value = "select field_name from archives_dictionary where category_id = ?1 and is_display is true order by display_order asc") List findDisPlayField(String categoryId); List findAllByCategoryIdAndIsInputOrderByIsSequenceAsc(String categoryId, boolean isInput); + List findAllByCategoryIdOrderByIsSequenceAsc(String categoryId); + // @Query(value = "INSERT INTO yxk_storeroom.archives_dictionary(id,category_id,field_name,field_cn_name,dictionary_id,is_data_type,is_data_type_details,is_column_length,is_sequence,is_type,is_system VALUES ())", nativeQuery = true) // void insertData(String id,String categoryId, // String fieldName,String fieldCnName, @@ -23,9 +25,7 @@ public interface ArchivesDictionaryRepository extends JpaRepository findDisPlay(String categoryId); -// -// List findAllByCategoryIdAndIsInputOrderByIsSequenceAsc(String categoryId,boolean isInput); } diff --git a/archives/src/main/java/com/storeroom/modules/dictionary/service/dto/CaseDTO.java b/archives/src/main/java/com/storeroom/modules/dictionary/service/dto/CaseDTO.java new file mode 100644 index 0000000..bfe5b28 --- /dev/null +++ b/archives/src/main/java/com/storeroom/modules/dictionary/service/dto/CaseDTO.java @@ -0,0 +1,20 @@ +package com.storeroom.modules.dictionary.service.dto; + +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class CaseDTO { + //盒id + private String id; + //盒名称 + private String caseName; + //盒标签 + private String tid; + //标签类型 + private Integer labelType; + //盒架位 + private String folderLocation; + +} diff --git a/system/src/main/resources/application.yml b/system/src/main/resources/application.yml index 3c1f751..cd2e77e 100644 --- a/system/src/main/resources/application.yml +++ b/system/src/main/resources/application.yml @@ -72,6 +72,10 @@ user-cache: # 最小存活时间 (ms) min-idle-time: 3600000 +# 手持机参数 +hand-held: + ip: 47.98.148.152:8057 + # 生成表模板 table-template: #生成表名称