Procházet zdrojové kódy

改造,提取column配置到配置文件

ximinghao před 2 týdny
rodič
revize
64296e0c86

+ 5 - 2
src/main/java/com/skyversation/xjcy/controller/OtherController.java

@@ -7,6 +7,7 @@ import com.google.zxing.common.HybridBinarizer;
 import com.skyversation.xjcy.bean.Lcxm;
 import com.skyversation.xjcy.bean.User;
 import com.skyversation.xjcy.dms.DMSColumn;
+import com.skyversation.xjcy.dms.DMSColumnConfig;
 import com.skyversation.xjcy.dms.DMSService;
 import com.skyversation.xjcy.service.AlyOCRService;
 import com.skyversation.xjcy.service.AuthService;
@@ -40,13 +41,15 @@ public class OtherController {
     private final DMSService dMSService;
     private final AlyOCRService alyOCRService;
     private final MessageService messageService;
+    private final DMSColumnConfig dMSColumnConfig;
 
-    public OtherController(WeChatService weChatService, AuthService authService, DMSService dMSService, AlyOCRService alyOCRService, MessageService messageService) {
+    public OtherController(WeChatService weChatService, AuthService authService, DMSService dMSService, AlyOCRService alyOCRService, MessageService messageService, DMSColumnConfig dMSColumnConfig) {
         this.weChatService = weChatService;
         this.authService = authService;
         this.dMSService = dMSService;
         this.alyOCRService = alyOCRService;
         this.messageService = messageService;
+        this.dMSColumnConfig = dMSColumnConfig;
     }
 
     @RequestMapping(value = "/wxacode", produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
@@ -135,7 +138,7 @@ public class OtherController {
     public String lcxm(@RequestParam Map<String,String> map, HttpServletRequest request) {
         String token = request.getHeader("token");
         if (!authService.checkToken(token)) {return MessageManage.error(-1,"不可用的token");}
-        boolean success = dMSService.insertToDms(map, token, DMSColumn.LCXM);
+        boolean success = dMSService.insertToDms(map, token,DMSColumn.LCXM);
         if (success) {
             String type = map.get("c_service_type");
             String[] types = type.split(",");

+ 4 - 2
src/main/java/com/skyversation/xjcy/controller/SerialNumberController.java

@@ -11,6 +11,7 @@ import org.springframework.web.bind.annotation.RestController;
 import javax.annotation.Resource;
 import javax.servlet.http.HttpServletRequest;
 import java.util.Arrays;
+import java.util.stream.Collectors;
 
 
 @Slf4j
@@ -27,9 +28,10 @@ public class SerialNumberController {
             String prefix = request.getParameter("prefix");
             SerialNumberGenerator.Prefix p = null;
             try {
-                p = SerialNumberGenerator.Prefix.valueOf(prefix);
+                p = serialNumberGenerator.getPrefix(prefix);
             } catch (IllegalArgumentException e) {
-                return MessageManage.getInstance().getResultContent(-1,"可用前缀: " + Arrays.toString(SerialNumberGenerator.Prefix.values()),"可用前缀: " + Arrays.toString(SerialNumberGenerator.Prefix.values()));
+                String prefixes = serialNumberGenerator.getPrefixList().stream().map(SerialNumberGenerator.Prefix::toString).collect(Collectors.joining(","));
+                return MessageManage.getInstance().getResultContent(-1,"可用前缀: " +prefixes ,"可用前缀: " + prefixes);
             }
             String value = serialNumberGenerator.generate(p);
             return MessageManage.getInstance().getResultContent(200, value, "成功生成流水号");

+ 22 - 18
src/main/java/com/skyversation/xjcy/dms/DMSColumn.java

@@ -2,29 +2,33 @@ package com.skyversation.xjcy.dms;
 
 import lombok.Getter;
 
-public enum DMSColumn {
-    INDUSTRIAL_PARK("1580","1525"),
-    ENTERPRISE("1593","1537"),
-    ENTERPRISE_ECONOMIC("1594","1538"),
-    ORDER("1587","1531"),
-    LEASE_DETAIL("1574","1520"),
-    INVESTMENT_TARGET("1578","1523"),
-    CLUE("1576","1521"),
-    CLUE_FOLLOW("1577","1522"),
-    ENTERPRISE_HEALTH("1643","1643"),
-    WECHAT_ARTICLE("1599","1544"),
-    MESSAGE("1646","1649" ),
-    USER("1579","1524" ),
-    MESSAGE_TARGET("1661","1671"),
-    LCXM("1660","1669"),;
+public class DMSColumn {
+    public static String INDUSTRIAL_PARK = "INDUSTRIAL_PARK";
+    public static String ENTERPRISE = "ENTERPRISE";
+    public static String ENTERPRISE_ECONOMIC = "ENTERPRISE_ECONOMIC";
+    public static String ORDER = "ORDER";
+    public static String LEASE_DETAIL = "LEASE_DETAIL";
+    public static String INVESTMENT_TARGET = "INVESTMENT_TARGET";
+    public static String CLUE = "CLUE";
+    public static String CLUE_FOLLOW = "CLUE_FOLLOW";
+    public static String ENTERPRISE_HEALTH = "ENTERPRISE_HEALTH";
+    public static String WECHAT_ARTICLE = "WECHAT_ARTICLE";
+    public static String MESSAGE = "MESSAGE";
+    public static String USER = "USER";
+    public static String MESSAGE_TARGET = "MESSAGE_TARGET";
+    public static String LCXM = "LCXM";
+    public static String INSPECTION_TASK = "INSPECTION_TASK";
+    public static String ENTERPRISE_PRODUCT = "ENTERPRISE_PRODUCT";
+    public static String ENTERPRISE_PURCHASE = "ENTERPRISE_PURCHASE";
+    public static String INDUSTRIAL_MANAGE = "INDUSTRIAL_MANAGE";
+    
     @Getter
-    private final String id;
+    private String id;
     @Getter
-    private final String modelId;
+    private String modelId;
 
     DMSColumn(String id , String modelId) {
         this.id = id;
         this.modelId = modelId;
     }
-
 }

+ 35 - 0
src/main/java/com/skyversation/xjcy/dms/DMSColumnConfig.java

@@ -0,0 +1,35 @@
+package com.skyversation.xjcy.dms;
+
+import com.alibaba.fastjson.JSONObject;
+import lombok.Getter;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Component;
+
+import javax.annotation.PostConstruct;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.Map;
+
+@Component
+public class DMSColumnConfig {
+    @Value("${app.dms.column.data}")
+    private String data;
+
+    @Getter
+    private Map<String, DMSColumn> dmsColumns;
+    
+    @PostConstruct
+    public void init() {
+        JSONObject jsonObject = JSONObject.parseObject(data);
+        Map<String,DMSColumn> dmsColumns = new HashMap<>();
+        for (String key : jsonObject.keySet()) {
+            JSONObject value = jsonObject.getJSONObject(key);
+            dmsColumns.put(key,new DMSColumn(value.getString("id"),value.getString("modelId")));
+        }
+        this.dmsColumns = Collections.unmodifiableMap(dmsColumns);
+    }
+    
+    public DMSColumn getDMSColumn(String columnName) {
+        return dmsColumns.get(columnName);
+    }
+}

+ 2 - 2
src/main/java/com/skyversation/xjcy/dms/DMSImport.java

@@ -18,13 +18,13 @@ public enum DMSImport {
             true, true);
     private final String relation;
     private final String mainKey;
-    private final DMSColumn column;
+    private final String column;
     private final String title;
     private final String content;
     private final boolean updatable;
     private final boolean insertable;
 
-    DMSImport(String relation, String mainKey, DMSColumn column, String title, String content, boolean isUpdate, boolean insertable) {
+    DMSImport(String relation, String mainKey, String column, String title, String content, boolean isUpdate, boolean insertable) {
         this.relation = relation;
         this.mainKey = mainKey;
         this.column = column;

+ 1 - 4
src/main/java/com/skyversation/xjcy/dms/DMSQuery.java

@@ -95,12 +95,9 @@ public enum DMSQuery {
         }
     };
 
-    private final DMSColumn column;
+    private final String column;
     private final Class<? extends FromJSON> resultType;
 
     abstract DMSQueryRequest preRequest(LocalDate now);
 
-    public String getColumnId() {
-        return column.getId();
-    }
 }

+ 34 - 18
src/main/java/com/skyversation/xjcy/dms/DMSService.java

@@ -20,9 +20,14 @@ import java.util.stream.Collectors;
 
 @Service
 public class DMSService {
+    private final DMSColumnConfig dMSColumnConfig;
     @Value("${app.dms.path}")
     private String path;
 
+    public DMSService(DMSColumnConfig dMSColumnConfig) {
+        this.dMSColumnConfig = dMSColumnConfig;
+    }
+
     private static final class QueryResult {
         final LocalDateTime time = LocalDateTime.now();
         final List<JSONObject> dmsResult;
@@ -164,7 +169,7 @@ public class DMSService {
         List<JSONObject> dmsResult;
         dmsResult = getQueryCache(query);
         if (dmsResult == null) {
-            dmsResult = queryDmsList(query.preRequest(now), token, query.getColumnId());
+            dmsResult = queryDmsList(query.preRequest(now), token, dMSColumnConfig.getDMSColumn(query.getColumn()).getId());
             queryCache.put(query, new QueryResult(dmsResult));
         }
 
@@ -182,10 +187,13 @@ public class DMSService {
         headers.put("token", token);
         HttpUtil.requestPost(path + "/content/updateContentByJson", params, headers);
     }
+    public void updateToDms(Collection<JSONObject> objs, String token, String column) {
+        updateToDms(objs,token,dMSColumnConfig.getDMSColumn( column));
+    }
 
-    public String importToDms(Resource resource, String token, DMSImport importType) {
+        public String importToDms(Resource resource, String token, DMSImport importType) {
         MultiValueMap<String, Object> params = new LinkedMultiValueMap<>();
-        params.add("columnId", importType.getColumn().getId());
+        params.add("columnId", dMSColumnConfig.getDMSColumn(importType.getColumn()).getId());
         params.add("contentParam", importType.getContent());
         params.add("titleParam", importType.getTitle());
         params.add("parseArray", importType.getRelation());
@@ -198,7 +206,8 @@ public class DMSService {
         headers.put("token", token);
         return HttpUtil.requestPost(path + "/content/importBeautifiedExcel", params, headers);
     }
-    public String uploadFile(Resource resource, String token, DMSColumn column ,String paramName,FileType fileType) {
+
+    public String uploadFile(Resource resource, String token, DMSColumn column, String paramName, FileType fileType) {
         MultiValueMap<String, Object> params = new LinkedMultiValueMap<>();
         params.add("columnId", column.getId());
         params.add("contentId", "uploadFile");
@@ -211,14 +220,18 @@ public class DMSService {
         JSONObject jsonObject = JSON.parseObject(json);
         if (jsonObject.getString("code").equals("200")) {
             return jsonObject.getString("content");
-        }else {
+        } else {
             throw new RuntimeException("上传失败");
         }
     }
-    public boolean insertToDms(Object objs, String token, DMSColumn column) {
+    public String uploadFile(Resource resource, String token, String column, String paramName, FileType fileType) {
+        return uploadFile(resource, token, dMSColumnConfig.getDMSColumn(column), paramName, fileType);
+    }
+
+        public boolean insertToDms(Object objs, String token, DMSColumn column) {
 
         MultiValueMap<String, Object> params = new LinkedMultiValueMap<>();
-        params.add("modelId",column.getModelId());
+        params.add("modelId", column.getModelId());
         params.add("columnId", column.getId());
         params.add("content", objs);
         Map<String, String> headers = new HashMap<>();
@@ -227,22 +240,25 @@ public class DMSService {
         JSONObject jsonObject = JSON.parseObject(json);
         return jsonObject.getString("code").equals("200");
     }
+    public boolean insertToDms(Object objs, String token, String column) {
+        return insertToDms(objs, token, dMSColumnConfig.getDMSColumn( column));
+    }
 
-    public List<JSONObject> queryBeautifiedClue(String token, String cClueName, String cEnterpriseName, String constructionMethod, String timeStart, String timeEnd) {
+        public List<JSONObject> queryBeautifiedClue(String token, String cClueName, String cEnterpriseName, String constructionMethod, String timeStart, String timeEnd) {
         DMSQueryRequest request = new DMSQueryRequest();
         request.type = DMSQueryRequest.DMSRequestType.Beautified;
         if (cClueName != null) request.addWhere("c_clue_name", "2", cClueName);
         if (cEnterpriseName != null) request.addWhere("c_enterprise_name", "2", cEnterpriseName);
         if (constructionMethod != null) request.addWhere("construction_method", "2", constructionMethod);
-        if (timeStart != null&&timeEnd!=null) request.addWhere("create_time", "3", timeStart,timeEnd);
-        return queryDmsList(request, token, DMSColumn.CLUE.getId());
+        if (timeStart != null && timeEnd != null) request.addWhere("create_time", "3", timeStart, timeEnd);
+        return queryDmsList(request, token, dMSColumnConfig.getDMSColumn(DMSColumn.CLUE).getId());
     }
 
-    public List<JSONObject> getUserJSONByCode(String userCode,String token) {
+    public List<JSONObject> getUserJSONByCode(String userCode, String token) {
         DMSQueryRequest request = new DMSQueryRequest();
         request.type = DMSQueryRequest.DMSRequestType.List;
         request.addWhere("c_usercode", "1", userCode);
-        List<JSONObject> result = queryDmsList(request, token, DMSColumn.USER.getId());
+        List<JSONObject> result = queryDmsList(request, token, dMSColumnConfig.getDMSColumn(DMSColumn.USER).getId());
         return result;
     }
 
@@ -251,31 +267,31 @@ public class DMSService {
     public List<JSONObject> getAllParkByLy(String lyCode, String token) {
         DMSQueryRequest requestChildren = new DMSQueryRequest();
         requestChildren.addWhere("parent_cyy_code", "1", lyCode);
-        List<JSONObject> result = queryDmsList(requestChildren, token, DMSColumn.INDUSTRIAL_PARK.getId());
+        List<JSONObject> result = queryDmsList(requestChildren, token, dMSColumnConfig.getDMSColumn(DMSColumn.INDUSTRIAL_PARK).getId());
         DMSQueryRequest requestFarther = new DMSQueryRequest();
         requestFarther.addWhere("c_park_code", "1", lyCode);
-        result.addAll(queryDmsList(requestFarther, token, DMSColumn.INDUSTRIAL_PARK.getId()));
+        result.addAll(queryDmsList(requestFarther, token, dMSColumnConfig.getDMSColumn(DMSColumn.INDUSTRIAL_PARK).getId()));
         return result;
     }
 
     public List<JSONObject> getAllPark(String token) {
         DMSQueryRequest request = new DMSQueryRequest();
-        return queryDmsList(request, token, DMSColumn.INDUSTRIAL_PARK.getId());
+        return queryDmsList(request, token, dMSColumnConfig.getDMSColumn(DMSColumn.INDUSTRIAL_PARK).getId());
     }
 
     public List<JSONObject> getAllLeaseByRooms(Set<String> roomString, String token) {
         DMSQueryRequest request = new DMSQueryRequest();
         request.addWhere("c_room_code", "5", roomString);
-        return queryDmsList(request, token, DMSColumn.LEASE_DETAIL.getId());
+        return queryDmsList(request, token, dMSColumnConfig.getDMSColumn(DMSColumn.LEASE_DETAIL).getId());
     }
 
     public List<JSONObject> getAllLease(String token) {
         DMSQueryRequest request = new DMSQueryRequest();
-        return queryDmsList(request, token, DMSColumn.LEASE_DETAIL.getId());
+        return queryDmsList(request, token, dMSColumnConfig.getDMSColumn(DMSColumn.LEASE_DETAIL).getId());
     }
 
     public List<JSONObject> getAllInvestmentTarget(String token) {
         DMSQueryRequest request = new DMSQueryRequest();
-        return queryDmsList(request, token, DMSColumn.INVESTMENT_TARGET.getId());
+        return queryDmsList(request, token, dMSColumnConfig.getDMSColumn(DMSColumn.INVESTMENT_TARGET).getId());
     }
 }

+ 2 - 2
src/main/java/com/skyversation/xjcy/service/DataCountService.java

@@ -492,9 +492,9 @@ public class DataCountService {
         Map<String, Integer> industryCount = new HashMap<>();
 
         for (Enterprise enterPrise : allEnterprise) {
-            boolean isInTown = "1".equals(Optional.ofNullable(enterPrise.getRegType()).orElse("1"));
+            boolean isInTown =Arrays.asList("1","3","4").contains(Optional.ofNullable(enterPrise.getRegType()).orElse("1"));
             boolean isGsqy = "2".equals(Optional.ofNullable(enterPrise.getIsGsqy()).orElse("1"));
-            boolean isAlive = "存续".equals(Optional.ofNullable(enterPrise.getOperationStatus()).orElse("存续"));
+            boolean isAlive = true;
 
             if (isAlive) {
                 aliveCount++;

+ 49 - 20
src/main/java/com/skyversation/xjcy/service/SerialNumberGenerator.java

@@ -1,14 +1,18 @@
 package com.skyversation.xjcy.service;
 
+import com.skyversation.xjcy.dms.DMSColumn;
+import com.skyversation.xjcy.dms.DMSColumnConfig;
 import com.skyversation.xjcy.dms.DMSService;
 import lombok.Getter;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import javax.annotation.PostConstruct;
 import javax.annotation.Resource;
 import java.time.LocalDate;
 import java.time.format.DateTimeFormatter;
-import java.util.EnumMap;
+import java.util.ArrayList;
+import java.util.List;
 import java.util.Map;
 import java.util.concurrent.ConcurrentHashMap;
 import java.util.concurrent.atomic.AtomicInteger;
@@ -20,41 +24,66 @@ public class SerialNumberGenerator {
     private DMSService dmsService;
     @Resource
     private AuthService authService;
+    @Autowired
+    private DMSColumnConfig dMSColumnConfig;
 
-    // 前缀枚举定义(可根据需要扩展)
+    // 前缀配置类(替代原来的枚举)
     @Getter
-    public enum Prefix {
-        XS("XS", "1576", "c_clue_code"),
-        PT("PT", "1616", "c_task_code"),
-        ED("ED", "1587", "c_work_order_code"),
-        EP("EP", "1592", "c_product_code"),
-        PR("PR", "1591", "c_requirement_code"),
-        ZL("ZL", "1645", "code");
+    public static class Prefix {
         private final String code;
-        private final String columId;
+        private final DMSColumn column;
         private final String codeColumn;
 
-        Prefix(String code, String columId, String codeColumn) {
+        public Prefix(String code, DMSColumn column, String codeColumn) {
             this.code = code;
-            this.columId = columId;
+            this.column = column;
             this.codeColumn = codeColumn;
         }
 
+        @Override
+        public String toString() {
+            return code;
+        }
     }
 
+    // 存储所有前缀配置的列表
+    @Getter
+    private List<Prefix> prefixList;
+
     // 存储每个前缀的当前状态
     private final Map<Prefix, SerialState> stateMap = new ConcurrentHashMap<>();
     // 用于初始化时的同步锁
-    private final Map<Prefix, ReentrantLock> initLocks = new EnumMap<>(Prefix.class);
+    private final Map<Prefix, ReentrantLock> initLocks = new ConcurrentHashMap<>();
 
     // 日期格式化器(线程安全)
     private static final DateTimeFormatter DATE_FORMATTER = DateTimeFormatter.BASIC_ISO_DATE;
 
-    public SerialNumberGenerator() {
+    public Prefix getPrefix(String prefix) {
+        return prefixList.stream()
+                .filter(p -> p.code.equals(prefix))
+                .findFirst()
+                .orElse(null);
+    }
+
+    /**
+     * Spring初始化方法,在Bean创建后自动执行
+     */
+    @PostConstruct
+    public void init() {
+        // 初始化前缀配置列表
+        prefixList = new ArrayList<>();
+        prefixList.add(new Prefix("XS", dMSColumnConfig.getDMSColumn(DMSColumn.CLUE), "c_clue_code"));
+        prefixList.add(new Prefix("PT", dMSColumnConfig.getDMSColumn(DMSColumn.INSPECTION_TASK), "c_task_code"));
+        prefixList.add(new Prefix("ED", dMSColumnConfig.getDMSColumn(DMSColumn.ORDER), "c_work_order_code"));
+        prefixList.add(new Prefix("EP", dMSColumnConfig.getDMSColumn(DMSColumn.ENTERPRISE_PRODUCT), "c_product_code"));
+        prefixList.add(new Prefix("PR", dMSColumnConfig.getDMSColumn(DMSColumn.ENTERPRISE_PURCHASE), "c_requirement_code"));
+        prefixList.add(new Prefix("ZL", dMSColumnConfig.getDMSColumn(DMSColumn.INDUSTRIAL_MANAGE), "code"));
+
         // 为每个前缀初始化锁
-        for (Prefix prefix : Prefix.values()) {
+        for (Prefix prefix : prefixList) {
             initLocks.put(prefix, new ReentrantLock());
         }
+
     }
 
     public void autoInit() {
@@ -64,10 +93,10 @@ public class SerialNumberGenerator {
         } catch (Exception e) {
             throw new RuntimeException(e);
         }
-        for (Prefix prefix : Prefix.values()) {
+        for (Prefix prefix : prefixList) {
             try {
                 String today = currentDate();
-                int max = dmsService.getLargestCode(token, prefix.getColumId(), prefix.getCodeColumn(), today);
+                int max = dmsService.getLargestCode(token, prefix.getColumn().getId(), prefix.getCodeColumn(), today);
                 initPrefix(prefix, max + 1, today);
             } catch (Exception e) {
                 System.out.println(prefix + "流水号初始化失败");
@@ -79,7 +108,7 @@ public class SerialNumberGenerator {
     /**
      * 生成流水号
      *
-     * @param prefix 前缀枚举
+     * @param prefix 前缀
      * @return 生成的流水号字符串
      * @throws IllegalStateException 如果前缀未初始化
      */
@@ -100,7 +129,7 @@ public class SerialNumberGenerator {
     /**
      * 初始化指定前缀的流水号
      *
-     * @param prefix       前缀枚举
+     * @param prefix       前缀
      * @param initialValue 初始值(1-999)
      * @param today        初始化数据的时间
      * @throws IllegalArgumentException 初始值不在有效范围
@@ -140,7 +169,7 @@ public class SerialNumberGenerator {
             if (currentState == null) {
                 // 首次初始化:从DMS查询当天最大流水号
                 String token = authService.getTokenOfServiceAccount();
-                int max = dmsService.getLargestCode(token, prefix.getColumId(), prefix.getCodeColumn(), today);
+                int max = dmsService.getLargestCode(token, prefix.getColumn().getId(), prefix.getCodeColumn(), today);
                 // max为当天已使用的最大序号(无记录时为0),计数器设为max
                 SerialState newState = new SerialState(today, new AtomicInteger(max));
                 stateMap.put(prefix, newState);

+ 2 - 0
src/main/resources/application.yml

@@ -25,6 +25,8 @@ app:
   dms:
     #    path: http://127.0.0.1:10081/dms
     path: ${DMS_PATH:http://121.43.55.7:10081/dms}
+    column:
+      data: '{"INDUSTRIAL_PARK":{"id":"1580","modelId":"1525"},"ENTERPRISE":{"id":"1593","modelId":"1537"},"ENTERPRISE_ECONOMIC":{"id":"1594","modelId":"1538"},"ORDER":{"id":"1587","modelId":"1531"},"LEASE_DETAIL":{"id":"1574","modelId":"1520"},"INVESTMENT_TARGET":{"id":"1578","modelId":"1523"},"CLUE":{"id":"1576","modelId":"1521"},"CLUE_FOLLOW":{"id":"1577","modelId":"1522"},"ENTERPRISE_HEALTH":{"id":"1643","modelId":"1643"},"WECHAT_ARTICLE":{"id":"1599","modelId":"1544"},"MESSAGE":{"id":"1646","modelId":"1649"},"USER":{"id":"1579","modelId":"1524"},"MESSAGE_TARGET":{"id":"1661","modelId":"1671"},"LCXM":{"id":"1660","modelId":"1669"},"INSPECTION_TASK":{"id":"1616","modelId":"1576"},"ENTERPRISE_PRODUCT":{"id":"1592","modelId":"1536"},"ENTERPRISE_PURCHASE":{"id":"1591","modelId":"1535"},"INDUSTRIAL_MANAGE":{"id":"1645","modelId":"1647"}}'
   oauth:
     login-name: ${DMS_LOGIN_NAME:user_hj}
     password: ${DMS_PASSWORD:Hj@123456}