From 9a1ea7a666a5c9acb189ddad066bd43312291251 Mon Sep 17 00:00:00 2001 From: Administrator <zhubaomin> Date: 星期三, 17 一月 2024 14:02:37 +0800 Subject: [PATCH] 2024-01-16 朱宝民 取水口与控制器的绑定与解绑 --- pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoPr/PrControllerMapper.java | 14 +++ pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoPr/PrControllerTrampMapper.java | 14 +++ pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/intakeController/IntakeControllerSv.java | 32 ++++++++ pipIrr-platform/pipIrr-global/src/main/resources/mapper/PrControllerTrampMapper.xml | 10 ++ pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/controller/ControllerSv.java | 22 +++++ pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/intakeController/DtoIntakeController.java | 4 pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/intakeController/IntakeControllerCtrl.java | 93 +++++++++++++++++----- pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/result/ProjectResultCode.java | 1 pipIrr-platform/pipIrr-global/src/main/resources/mapper/PrControllerMapper.xml | 10 ++ 9 files changed, 176 insertions(+), 24 deletions(-) diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoPr/PrControllerMapper.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoPr/PrControllerMapper.java index da7893b..f9dbdc5 100644 --- a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoPr/PrControllerMapper.java +++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoPr/PrControllerMapper.java @@ -72,4 +72,18 @@ * @return */ Integer getRecordCountOfController(@Param("controllerId") Long controllerId); + + /** + * 鏍规嵁鎺у埗鍣ㄧ紪鍙疯幏鍙栧凡缁戝畾璁板綍鏁� + * @param controllerId + * @return + */ + Integer getBindedCount(@Param("controllerId") Long controllerId); + + /** + * 鏍规嵁鎺у埗鍣ㄧ紪鍙峰垹闄ゅ彇姘村彛缂栧彿 + * @param controllerId + * @return + */ + Integer deleteIntakeId(@Param("controllerId") Long controllerId); } \ No newline at end of file diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoPr/PrControllerTrampMapper.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoPr/PrControllerTrampMapper.java index 2b4891a..4d1b995 100644 --- a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoPr/PrControllerTrampMapper.java +++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoPr/PrControllerTrampMapper.java @@ -63,4 +63,18 @@ * @return update count */ int updateByPrimaryKey(PrControllerTramp record); + + /** + * 鏍规嵁鎺у埗鍣ㄧ紪鍙疯幏鍙栨祦娴帶鍒跺櫒鍦板潃 + * @param controllerId 娴佹氮鎺у埗鍣ㄧ紪鍙� + * @return 璁板綍鏁伴噺 + */ + //String getTrampRtuAddr(@Param("controllerId") Long controllerId); + + /** + * 鏍规嵁鎺у埗鍣ㄧ紪鍙疯幏鍙栨祦娴帶鍒跺櫒淇℃伅 + * @param controllerId + * @return + */ + PrControllerTramp getTrampControllerInfo(@Param("controllerId") Long controllerId); } \ No newline at end of file diff --git a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/PrControllerMapper.xml b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/PrControllerMapper.xml index 209c07b..aa36478 100644 --- a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/PrControllerMapper.xml +++ b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/PrControllerMapper.xml @@ -158,6 +158,11 @@ where id = #{id,jdbcType=BIGINT} </update> + <!--鏍规嵁鎺у埗鍣ㄧ紪鍙峰垹闄ゅ彇姘村彛缂栧彿--> + <update id="deleteIntakeId"> + UPDATE pr_controller SET intakeId = null WHERE id = ${controllerId} + </update> + <!--鏍规嵁鎸囧畾鏉′欢鑾峰彇鎺у埗鍣ㄨ褰曟暟--> <select id="getRecordCount" resultType="java.lang.Long"> SELECT @@ -237,4 +242,9 @@ <select id="getRecordCountOfController" resultType="java.lang.Integer"> SELECT COUNT(*) AS recordCount FROM pr_controller WHERE deleted = 0 AND id = ${controllerId} </select> + + <!--鏍规嵁鎺у埗鍣ㄧ紪鍙疯幏鍙栧凡缁戝畾璁板綍鏁�--> + <select id="getBindedCount" resultType="java.lang.Integer"> + SELECT COUNT(*) AS recordCount FROM pr_controller WHERE rtuAddr = (SELECT rtuAddr FROM pr_controller_tramp WHERE id = ${controllerId}) AND intakeId IS NOT NULL + </select> </mapper> \ No newline at end of file diff --git a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/PrControllerTrampMapper.xml b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/PrControllerTrampMapper.xml index 28f8d9e..3753a1b 100644 --- a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/PrControllerTrampMapper.xml +++ b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/PrControllerTrampMapper.xml @@ -97,4 +97,14 @@ findDt = #{findDt,jdbcType=TIMESTAMP} where id = #{id,jdbcType=BIGINT} </update> + + <!--鏍规嵁鎺у埗鍣ㄧ紪鍙疯幏鍙栨祦娴帶鍒跺櫒鍦板潃--> +<!-- <select id="getTrampRtuAddr" resultType="java.lang.String">--> +<!-- SELECT rtuAddr FROM pr_controller_tramp WHERE id = ${controllerId}--> +<!-- </select>--> + + <!--鏍规嵁鎺у埗鍣ㄧ紪鍙疯幏鍙栨祦娴帶鍒跺櫒淇℃伅--> + <select id="getTrampControllerInfo" resultMap="BaseResultMap"> + SELECT rtuAddr, protocol, findDt FROM pr_controller_tramp WHERE id = ${controllerId} + </select> </mapper> \ No newline at end of file diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/controller/ControllerSv.java b/pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/controller/ControllerSv.java index 12af178..8f9fdd2 100644 --- a/pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/controller/ControllerSv.java +++ b/pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/controller/ControllerSv.java @@ -94,7 +94,29 @@ return rsVo ; } + /** + * 鏍规嵁鎺у埗鍣ㄧ紪鍙疯幏鍙栨湭鍒犻櫎鐨勬帶鍒跺櫒鏁伴噺 + * @param controllerId + * @return + */ public Integer getRecordCountOfController(Long controllerId) { return prControllerMapper.getRecordCountOfController(controllerId); } + /** + * 鏍规嵁鎺у埗鍣ㄧ紪鍙疯幏鍙栧凡缁戝畾璁板綍鏁� + * @param controllerId + * @return + */ + public Integer getBindedCount(Long controllerId) { + return prControllerMapper.getBindedCount(controllerId); + } + + /** + * 鏍规嵁涓婚敭鍒犻櫎澶栭敭 + * @param controllerId + * @return + */ + public Integer deleteIntakeId(Long controllerId) { + return prControllerMapper.deleteIntakeId(controllerId); + } } diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/intakeController/DtoIntakeController.java b/pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/intakeController/DtoIntakeController.java index 451f3a5..05e545b 100644 --- a/pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/intakeController/DtoIntakeController.java +++ b/pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/intakeController/DtoIntakeController.java @@ -19,14 +19,14 @@ public static final long serialVersionUID = 1L; /** - * 鍙栨按鍙g紪鍙� + * 鍙栨按鍙D */ @Schema(description = "鍙栨按鍙D", requiredMode = Schema.RequiredMode.REQUIRED) @NotNull(message = "鍙栨按鍙D涓嶈兘涓虹┖") private Long intakeId; /** - * 鎺у埗鍣ㄧ紪鍙� + * 鎺у埗鍣↖D */ @Schema(description = "鎺у埗鍣↖D", requiredMode = Schema.RequiredMode.REQUIRED) @NotNull(message = "鎺у埗鍣↖D涓嶈兘涓虹┖") diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/intakeController/IntakeControllerCtrl.java b/pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/intakeController/IntakeControllerCtrl.java index 1384dfa..d1324ff 100644 --- a/pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/intakeController/IntakeControllerCtrl.java +++ b/pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/intakeController/IntakeControllerCtrl.java @@ -6,6 +6,8 @@ import com.dy.common.webUtil.QueryResultVo; import com.dy.common.webUtil.ResultCodeMsg; import com.dy.pipIrrGlobal.pojoBa.BaClient; +import com.dy.pipIrrGlobal.pojoPr.PrController; +import com.dy.pipIrrGlobal.pojoPr.PrControllerTramp; import com.dy.pipIrrGlobal.pojoPr.PrIntakeController; import com.dy.pipIrrProject.controller.ControllerSv; import com.dy.pipIrrProject.intake.IntakeSv; @@ -24,6 +26,8 @@ import org.springframework.validation.BindingResult; import org.springframework.web.bind.annotation.*; +import java.text.ParseException; +import java.text.SimpleDateFormat; import java.util.*; /** @@ -44,9 +48,15 @@ private final ControllerSv controllerSv; /** - * 娣诲姞鍙栨按鍙�/鎺у埗鍣ㄦ崋缁戣褰� - * 鑻ュ彇姘村彛鎴栨帶鍒跺櫒涓嶅瓨鍦ㄩ渶鎻愮ず鐢ㄦ埛 - * 鑻ュ彇姘村彛宸茬粡涓庢帶鍒跺櫒缁戝畾闇�鎻愮ず鐢ㄦ埛 + * 鍙栨按鍙g粦瀹氭帶鍒跺櫒 + * 1. 鎺ユ敹鍙栨按鍙D鍙婃祦娴帶鍒跺櫒ID锛屽苟楠岃瘉鍙栨按鍙e拰鎺у埗鍣ㄦ槸鍚﹀瓨鍦� + * 2. 鍒ゆ柇璇ユ帶鍒跺櫒鏄惁瀛樺湪鏈В缁戣褰曪紝濡傛灉瀛樺湪鎻愮ず鐢ㄦ埛璇ユ帶鍒跺櫒瀛樺湪鏈В缁戣褰� + * 3. 缁勮鎺у埗鍣ㄥ璞℃彃鍏ユ帶鍒跺櫒琛ㄤ腑 + * 4. 娣诲姞缁戝畾璁板綍 + * 5. 鍒犻櫎娴佹氮鎺у埗鍣紙鐗╃悊鍒犻櫎锛� + * @param po + * @param bindingResult + * @return */ @Operation(summary = "娣诲姞缁戝畾璁板綍", description = "娣诲姞缁戝畾璁板綍") @ApiResponses(value = { @@ -60,39 +70,70 @@ @PostMapping(path = "bind", consumes = MediaType.APPLICATION_JSON_VALUE) @Transactional(rollbackFor = Exception.class) @SsoAop() - public BaseResponse<Boolean> bind(@RequestBody @Valid DtoIntakeController po, BindingResult bindingResult){ + public BaseResponse<Boolean> bind(@RequestBody @Valid DtoIntakeController po, BindingResult bindingResult) throws ParseException { + SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); if(bindingResult != null && bindingResult.hasErrors()){ return BaseResponseUtils.buildFail(Objects.requireNonNull(bindingResult.getFieldError()).getDefaultMessage()); } - // 鏍规嵁缂栧彿鍒嗗埆鑾峰彇鍙栨按鍙c�佹帶鍒跺櫒鏈垹闄よ褰曟暟 - Integer recIntke = Optional.ofNullable(intakeSv.getRecordCountOfIntake(po.getIntakeId())).orElse(0); - Integer recController = Optional.ofNullable(controllerSv.getRecordCountOfController(po.getControllerId())).orElse(0); - if(recIntke == 0 || recController == 0) { + // 鎺ユ敹鍙傛暟 + Long intakeId = po.getIntakeId(); + Long controllerId = po.getControllerId(); + String remarks = po.getRemarks(); + Long operator = po.getOperator(); + + // 鏍规嵁缂栧彿鍒嗗埆鑾峰彇鍙栨按鍙h褰曟暟銆佹祦娴帶鍒跺櫒淇℃伅锛屽垽鏂彇姘村彛鍙婃帶鍒跺櫒鏄惁瀛樺湪 + Integer recIntke = Optional.ofNullable(intakeSv.getRecordCountOfIntake(intakeId)).orElse(0); + PrControllerTramp prControllerTramp = intakeControllerSv.getTrampControllerInfo(controllerId); + //Map map_TrampController = Optional.ofNullable(intakeControllerSv.getTrampControllerInfo(controllerId)).orElse(new HashMap()); + if(recIntke == 0 || prControllerTramp == null) { return BaseResponseUtils.buildFail(ProjectResultCode.INTAKE_OR_CONTROLLER_NO_EXIST.getMessage()); } - Integer recordCount = Optional.ofNullable(intakeControllerSv.getBindRecordCount(po.getIntakeId(), po.getControllerId(), (byte)1)).orElse(0); - if(recordCount > 0) { - return BaseResponseUtils.buildFail(ProjectResultCode.INTAKE_HAS_BINDED_CONTROLLER.getMessage()); + // 鏍规嵁鎺у埗鍣ㄧ紪鍙峰垽鏂鎺у埗鍣ㄦ槸鍚﹀瓨鍦ㄦ湭瑙g粦璁板綍 + Integer recBinded = Optional.ofNullable(controllerSv.getBindedCount(controllerId)).orElse(0); + if(recBinded > 0) { + return BaseResponseUtils.buildFail(ProjectResultCode.CONTROLLER_BINDED.getMessage()); } - PrIntakeController prIntakeController = DtoToPojo.INSTANCT.po2vo(po); + // 娣诲姞鎺у埗鍣ㄨ褰� + PrController prController = new PrController(); + prController.setIntakeId(intakeId); + prController.setRtuAddr(prControllerTramp.getRtuAddr()); + prController.setProtocol(prControllerTramp.getProtocol()); + prController.setFindDt(prControllerTramp.getFindDt()); + prController.setAddWays((byte)1); + prController.setOperator(operator); Date operateTime = new Date(); + prController.setOperateDt(operateTime); + prController.setDeleted((byte)0); + Integer rec_addController = Optional.ofNullable(controllerSv.addController(prController)).orElse(0); + if(rec_addController == 0) { + return BaseResponseUtils.buildFail(ProjectResultCode.BIND_FAIL.getMessage()); + } + + // 娣诲姞缁戝畾璁板綍 + PrIntakeController prIntakeController = DtoToPojo.INSTANCT.po2vo(po); prIntakeController.setOperatedt(operateTime); prIntakeController.setOperatetype((byte)1); - Integer rec = Optional.ofNullable(intakeControllerSv.addRecord(prIntakeController)).orElse(0); if(rec == 0) { return BaseResponseUtils.buildFail(ProjectResultCode.BIND_FAIL.getMessage()); } + + // 鏍规嵁娴佹氮鎺у埗鍣ㄧ紪鍙峰垹闄ゆ祦娴帶鍒跺櫒璁板綍 + intakeControllerSv.deleteTrampController(controllerId); + return BaseResponseUtils.buildSuccess(true) ; } /** - * 娣诲姞鍙栨按鍙�/鎺у埗鍣ㄨВ缁戣褰� - * 1. 鍒ゆ柇鍙栨按鍙f槸鍚﹀瓨鍦� - * 2. 鍒ゆ柇鎺у埗鍣ㄦ槸鍚﹀瓨鍦� - * 3. 鍒ゆ柇鍙栨按鍙c�佹帶鍒跺櫒瑙g粦鍏崇郴鏄惁宸插瓨鍦� + * 鍙栨按鍙hВ缁戞帶鍒跺櫒 + * 1. 鎺ユ敹鍙栨按鍙D鍙婃祦娴帶鍒跺櫒ID锛屽苟楠岃瘉鍙栨按鍙e拰鎺у埗鍣ㄦ槸鍚﹀瓨鍦� + * 2. 娣诲姞瑙g粦璁板綍 + * 3. 鍒犻櫎鎺у埗鍣ㄥ閿� + * @param po + * @param bindingResult + * @return */ @Operation(summary = "娣诲姞瑙g粦璁板綍", description = "娣诲姞瑙g粦璁板綍") @ApiResponses(value = { @@ -118,20 +159,28 @@ return BaseResponseUtils.buildFail(ProjectResultCode.INTAKE_OR_CONTROLLER_NO_EXIST.getMessage()); } - Integer recordCount = Optional.ofNullable(intakeControllerSv.getBindRecordCount(po.getIntakeId(), po.getControllerId(), (byte)2)).orElse(0); - if(recordCount > 0) { - return BaseResponseUtils.buildFail(ProjectResultCode.INTAKE_CONTROLLER_HAS_UNBOUND.getMessage()); - } + // 鍒ゆ柇鏈�鍚庢搷浣滆褰曟槸鍚︿负瑙g粦璁板綍 + //Integer recordCount = Optional.ofNullable(intakeControllerSv.getBindRecordCount(po.getIntakeId(), po.getControllerId(), (byte)2)).orElse(0); + //if(recordCount > 0) { + // return BaseResponseUtils.buildFail(ProjectResultCode.INTAKE_CONTROLLER_HAS_UNBOUND.getMessage()); + //} + // 娣诲姞瑙g粦璁板綍 PrIntakeController prIntakeController = DtoToPojo.INSTANCT.po2vo(po); Date operateTime = new Date(); prIntakeController.setOperatedt(operateTime); prIntakeController.setOperatetype((byte)2); - Integer rec = Optional.ofNullable(intakeControllerSv.addRecord(prIntakeController)).orElse(0); if(rec == 0) { return BaseResponseUtils.buildFail(ProjectResultCode.BIND_FAIL.getMessage()); } + + // 鍒犻櫎鎺у埗鍣ㄥ閿� + Integer rec_deleteIntakeId = Optional.ofNullable(controllerSv.deleteIntakeId(po.getControllerId())).orElse(0); + if(rec_deleteIntakeId == 0) { + return BaseResponseUtils.buildFail(ProjectResultCode.BIND_FAIL.getMessage()); + } + return BaseResponseUtils.buildSuccess(true) ; } diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/intakeController/IntakeControllerSv.java b/pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/intakeController/IntakeControllerSv.java index 42a8910..11928ca 100644 --- a/pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/intakeController/IntakeControllerSv.java +++ b/pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/intakeController/IntakeControllerSv.java @@ -1,6 +1,8 @@ package com.dy.pipIrrProject.intakeController; +import com.dy.pipIrrGlobal.daoPr.PrControllerTrampMapper; import com.dy.pipIrrGlobal.daoPr.PrIntakeControllerMapper; +import com.dy.pipIrrGlobal.pojoPr.PrControllerTramp; import com.dy.pipIrrGlobal.pojoPr.PrIntakeController; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; @@ -21,6 +23,9 @@ public class IntakeControllerSv { @Autowired private PrIntakeControllerMapper prIntakeControllerMapper; + + @Autowired + private PrControllerTrampMapper prControllerTrampMapper; /** * 鏍规嵁鍙栨按鍙g紪鍙枫�佹帶鍒跺櫒缂栧彿銆佹搷浣滅被鍒幏鍙栬褰曟暟閲� @@ -59,4 +64,31 @@ List<Map<String, Object>> getBindsByControllerId(Long controllerId) { return prIntakeControllerMapper.getBindsByControllerId(controllerId); } + + /** + * 鏍规嵁鎺у埗鍣ㄧ紪鍙疯幏鍙栨祦娴帶鍒跺櫒鍦板潃 + * @param controllerId 娴佹氮鎺у埗鍣ㄧ紪鍙� + * @return 娴佹氮鎺у埗鍣ㄥ湴鍧� + */ + //public String getTrampRtuAddr(Long controllerId) { + // return prControllerTrampMapper.getTrampRtuAddr(controllerId); + //} + + /** + * 鏍规嵁鎺у埗鍣ㄧ紪鍙疯幏鍙栨祦娴帶鍒跺櫒淇℃伅 + * @param controllerId + * @return + */ + public PrControllerTramp getTrampControllerInfo(Long controllerId) { + return prControllerTrampMapper.getTrampControllerInfo(controllerId); + } + + /** + * 鏍规嵁娴佹氮鎺у埗鍣ㄧ紪鍙峰垹闄ゆ祦娴帶鍒跺櫒璁板綍 + * @param controllerId + * @return + */ + public Integer deleteTrampController(Long controllerId) { + return prControllerTrampMapper.deleteByPrimaryKey(controllerId); + } } diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/result/ProjectResultCode.java b/pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/result/ProjectResultCode.java index 95b9f3b..7c57992 100644 --- a/pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/result/ProjectResultCode.java +++ b/pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/result/ProjectResultCode.java @@ -46,6 +46,7 @@ INTAKE_NO_RECORDS(40004, "璇ュ彇姘村彛鏃犵粦瀹氳褰�"), CONTROLLER_NO_RECORDS(40005, "璇ユ帶鍒跺櫒鏃犵粦瀹氳褰�"), INTAKE_OR_CONTROLLER_NO_EXIST(40006, "鍙栨按鍙f垨鎺у埗鍣ㄤ笉瀛樺湪"), + CONTROLLER_BINDED(40007, "璇ユ帶鍒跺櫒灏氭湭瑙g粦"), /** * 娴侀噺鐩戞祴绔� -- Gitblit v1.8.0