From 428afb64e7fc9b7c3701eacab98086fb622cca7b Mon Sep 17 00:00:00 2001
From: 1 <1>
Date: 星期四, 06 十一月 2025 09:30:03 +0800
Subject: [PATCH] #
---
src/main/resources/mapper/WrkDetlMapper.xml | 3 +
src/main/java/com/zy/asrs/mapper/WrkDetlMapper.java | 1
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java | 84 ++++++++++++++++++++++++---
src/main/java/com/zy/asrs/service/impl/WrkDetlServiceImpl.java | 4 +
src/main/webapp/views/console.html | 14 ++++
src/main/java/com/zy/asrs/entity/WrkDetl.java | 5 +
src/main/java/com/zy/core/MainProcess.java | 19 +++---
src/main/java/com/zy/core/model/protocol/RgvProtocol.java | 22 +++---
src/main/resources/application.yml | 9 +++
src/main/java/com/zy/asrs/service/WrkDetlService.java | 1
src/main/resources/mapper/WrkMastStaMapper.xml | 7 +
11 files changed, 135 insertions(+), 34 deletions(-)
diff --git a/src/main/java/com/zy/asrs/entity/WrkDetl.java b/src/main/java/com/zy/asrs/entity/WrkDetl.java
index 05c9703..d44342c 100644
--- a/src/main/java/com/zy/asrs/entity/WrkDetl.java
+++ b/src/main/java/com/zy/asrs/entity/WrkDetl.java
@@ -262,6 +262,11 @@
@TableField("appe_time")
private Date appeTime;
+ @ApiModelProperty(value= "瀹㈡埛鍚嶇О")
+ private String owner;
+
+ @ApiModelProperty(value= "瀹㈡埛缂栧彿")
+ private Long uuid;
/**
* 澶囨敞
*/
diff --git a/src/main/java/com/zy/asrs/mapper/WrkDetlMapper.java b/src/main/java/com/zy/asrs/mapper/WrkDetlMapper.java
index 3ff2711..a0c6d8d 100644
--- a/src/main/java/com/zy/asrs/mapper/WrkDetlMapper.java
+++ b/src/main/java/com/zy/asrs/mapper/WrkDetlMapper.java
@@ -14,6 +14,7 @@
public interface WrkDetlMapper extends BaseMapper<WrkDetl> {
List<WrkDetl> findByWorkNo(Integer workNo);
+ List<WrkDetl> findByBarcode(String barcode);
int updateIoTime(@Param("workNo") Integer workNo, @Param("ioTime") Date ioTime);
diff --git a/src/main/java/com/zy/asrs/service/WrkDetlService.java b/src/main/java/com/zy/asrs/service/WrkDetlService.java
index 18f7637..1590279 100644
--- a/src/main/java/com/zy/asrs/service/WrkDetlService.java
+++ b/src/main/java/com/zy/asrs/service/WrkDetlService.java
@@ -12,6 +12,7 @@
void createWorkDetail(Integer workNo, List<WaitPakin> waitPakins, String barcode);
List<WrkDetl> findByWorkNo(Integer workNo);
+ List<WrkDetl> findByBarcode(String barcode);
boolean updateIoTime(Integer workNo, Date ioTime);
diff --git a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
index 3db0c17..412410d 100644
--- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -121,7 +121,7 @@
private Integer inventoryNumber;
public Integer wrkNo = 10001;
- public static final List<Integer> LEFT_POSITION = Arrays.asList(1018,2018);
+ public static final List<Integer> LEFT_POSITION = Arrays.asList(1004,1014,1018,1028,1035,2006,2012,2018,2024,2030);
/**
* 缁勬墭
* 鍏ュ簱绔欙紝鏍规嵁鏉$爜鎵弿鐢熸垚鍏ュ簱宸ヤ綔妗o紝宸ヤ綔鐘舵�� 2
@@ -496,7 +496,6 @@
staProtocol.setStaNo((short) (pickSta.getStaNo().shortValue()));
devpThread.setPakMk(staProtocol.getSiteId(), false);
MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
- log.error("杈撻�佺嚎涓嬪彂4锛�"+9996+","+(pickSta.getStaNo().shortValue()-(short)1));
//LED
LedThread ledThread = (LedThread) SlaveConnection.get(SlaveType.Led, pickSta.getLed());
// led 寮傚父鏄剧ず
@@ -1378,6 +1377,13 @@
staProtocol2 = staProtocol2.clone();
}
SiemensDevpThread devpThread2 = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, 2);
+ StaProtocol staProtocol4004 = devpThread2.getStation().get(4004);
+ if (staProtocol4004 == null) {
+ News.infoNoLog("" + mark + " - 2" + " - 3" + " - 鍫嗗灈鏈哄嚭搴撶珯淇℃伅(staProtocol!=null缁х画鎵ц,鍚﹀垯寰幆缁堟)锛歴taProtocol=" + staProtocol4004);
+ break;
+ } else {
+ staProtocol4004 = staProtocol4004.clone();
+ }
StaProtocol staProtocol3 = devpThread2.getStation().get(2016);
if (staProtocol3 == null) {
News.infoNoLog("" + mark + " - 2" + " - 3" + " - 鍫嗗灈鏈哄嚭搴撶珯淇℃伅(staProtocol!=null缁х画鎵ц,鍚﹀垯寰幆缁堟)锛歴taProtocol=" + staProtocol2);
@@ -1401,6 +1407,9 @@
if (wrkMastMapper.selectWorking(slave.getId()) != null) {
break;
// return;
+ }
+ if(staProtocol4004.isLoading()){
+ continue;
}
// 1.鍫嗗灈鏈哄紑濮嬬Щ鍔�
CrnCommand crnCommand = new CrnCommand();
@@ -1440,6 +1449,9 @@
break;
// return;
}
+ if(staProtocol4004.isLoading()){
+ continue;
+ }
// 1.鍫嗗灈鏈哄紑濮嬬Щ鍔�
CrnCommand crnCommand = new CrnCommand();
crnCommand.setCrnNo(slave.getId()); // 鍫嗗灈鏈虹紪鍙�
@@ -1469,6 +1481,8 @@
}
}
if (slave.getId() == 3 && wrkMast9996 != null) {
+ SiemensDevpThread devpThread1 = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, 1);
+
SiemensDevpThread devpThread2 = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, 2);
StaProtocol staProtocol4001 = devpThread2.getStation().get(4001);
if (staProtocol4001 == null) {
@@ -1476,6 +1490,20 @@
break;
} else {
staProtocol4001 = staProtocol4001.clone();
+ }
+ StaProtocol staProtocol2013 = devpThread2.getStation().get(2013);
+ if (staProtocol2013 == null) {
+ News.infoNoLog("" + mark + " - 2" + " - 3" + " - 鍫嗗灈鏈哄嚭搴撶珯淇℃伅(staProtocol!=null缁х画鎵ц,鍚﹀垯寰幆缁堟)锛歴taProtocol=" + staProtocol2013);
+ break;
+ } else {
+ staProtocol2013 = staProtocol2013.clone();
+ }
+ StaProtocol staProtocol1019 = devpThread1.getStation().get(1019);
+ if (staProtocol1019 == null) {
+ News.infoNoLog("" + mark + " - 2" + " - 3" + " - 鍫嗗灈鏈哄嚭搴撶珯淇℃伅(staProtocol!=null缁х画鎵ц,鍚﹀垯寰幆缁堟)锛歴taProtocol=" + staProtocol1019);
+ break;
+ } else {
+ staProtocol1019 = staProtocol1019.clone();
}
BasDevp staDetl = basDevpService.selectById(crnStn.getStaNo());
if (staDetl == null) {
@@ -1493,6 +1521,12 @@
if (wrkMastMapper.selectWorking(slave.getId()) != null) {
break;
// return;
+ }
+ if(staProtocol1019.isLoading() && wrkMast9996.getStaNo() < 2000){
+ continue;
+ }
+ if(staProtocol2013.isLoading() && wrkMast9996.getStaNo() > 2000){
+ continue;
}
// 1.鍫嗗灈鏈哄紑濮嬬Щ鍔�
CrnCommand crnCommand = new CrnCommand();
@@ -2242,6 +2276,12 @@
case 10:
ledCommand.setTitle("绌烘澘鍏ュ簱");
break;
+ case 12:
+ ledCommand.setTitle("鐗╂枡琛旀帴");
+ break;
+ case 57:
+ ledCommand.setTitle("鐩樼偣鍐嶅叆搴�");
+ break;
case 101:
ledCommand.setTitle("鍏ㄦ澘鍑哄簱");
break;
@@ -2265,6 +2305,20 @@
ledCommand.setSourceLocNo(wrkMast.getSourceLocNo());
ledCommand.setStaNo(wrkMast.getStaNo());
ledCommand.setBarcode(wrkMast.getBarcode());
+ if(wrkMast.getIoType() == 12){
+ List<WrkDetl> wrkDetls = wrkDetlService.findByBarcode(wrkMast.getBarcode());
+ wrkDetls.forEach(wrkDetl -> {
+ Double total = 0.0;
+ EntityWrapper<LocDetl> wrapper = new EntityWrapper<>();
+ LocDetl locDetl = locDetlService.selectOne(wrapper.eq("zpallet", wrkDetl.getZpallet()).eq("matnr", wrkDetl.getMatnr()));
+ if (Cools.isEmpty(locDetl)) {
+ total = wrkDetl.getAnfme();
+ } else {
+ total = locDetl.getAnfme();
+ }
+ ledCommand.getMatDtos().add(new MatDto(wrkDetl.getMatnr(), wrkDetl.getMaktx(), wrkDetl.getOrderNo(), wrkDetl.getSupp(), wrkDetl.getSku(),wrkDetl.getAnfme(),total));
+ });
+ }
if (wrkMast.getIoType() != 110 && wrkMast.getIoType() != 10) {
List<WrkDetl> wrkDetls = wrkDetlService.findByWorkNo(wrkMast.getWrkNo());
@@ -3357,7 +3411,7 @@
continue;
}
- if (staProtocol.isAutoing() && !staProtocol.isLoading() && staDetl.getCanouting() != null && staDetl.getCanouting().equals("Y")) {
+ if (staProtocol.isAutoing() && staDetl.getCanouting() != null && staDetl.getCanouting().equals("Y")) {
flag = true;
}
if (!flag) {
@@ -3503,7 +3557,7 @@
// 鍙湁褰揜GV绌洪棽 骞朵笖 鏃犱换鍔℃椂鎵嶇户缁墽琛�
if (rgvProtocol.getStatusType1() == RgvStatusType.IDLE &&
rgvProtocol.getModeType() == RgvModeType.AUTO && rgvThread.isPakMk()
- && basRgv.getPakToCrn().equals("1") && rgvThread.isPaking()) {
+ && rgvThread.isPaking()) {
News.warnNoLog(""+mark+" - 0"+" - 寮�濮嬫墽琛孯GV鍏ュ嚭搴撲綔涓氫笅鍙�");
// 濡傛灉鏈�杩戜竴娆℃槸鍏ュ簱妯″紡
// rgvRunWrkMastInTest();
@@ -3749,13 +3803,13 @@
basRgvMap.setNowRoute(rgvProtocol.getRgvNo() == 1?rgvProtocol.getRgvPosI1():rgvProtocol.getRgvPosI2()); //鏇存柊灏忚溅褰撳墠浣嶇疆绔欑偣鍙�
basRgvMapService.updateById(basRgvMap);
WrkMastSta wrkMastSta = wrkMastStaMapper.selectNoInterfere(route, route, Long.valueOf(staProtocol.getWorkNo()));//鏍规嵁绔欑偣宸ヤ綔鍙峰拰灏忚溅宸ヤ綔鑼冨洿妫�绱换鍔℃。
- if( null == wrkMastSta ) {
- News.infoNoLog("" + mark + " - 1" + " - 4" + " - 鏌ヨ鏃犲緟鍏ュ簱鏁版嵁--wrk_sts0, 宸ヤ綔鍙�={}", staProtocol.getWorkNo());
- continue;
- }
WrkMastSta wrkMastSta1 = wrkMastStaMapper.selectByWrkNo( rgvProtocol.getTaskNo1());
if(basRgv.getPakToCrn().equals("0")){
wrkMastSta = wrkMastStaMapper.selectNoInterfereCrn(route, route, Long.valueOf(staProtocol.getWorkNo()));//澶勭悊鎺ラ┏浠诲姟鏃讹紝杩炵画鍙彇鎺ラ┏浠诲姟
+ }
+ if( null == wrkMastSta ) {
+ News.infoNoLog("" + mark + " - 1" + " - 4" + " - 鏌ヨ鏃犲緟鍏ュ簱鏁版嵁--wrk_sts0, 宸ヤ綔鍙�={}", staProtocol.getWorkNo());
+ continue;
}
boolean result = false;
if(wrkMastSta1!= null && rgvProtocol.getRgvNo() == 1){ //璺濈璁$畻 2妤煎崟鍏ュ簱鍙d笉闇�瑕佽绠�
@@ -3766,6 +3820,18 @@
basRgvService.updateById(basRgv);
continue;
+ }
+ if(wrkMastSta != null &&LEFT_POSITION.contains(wrkMastSta.getStaEnd())){
+ StaProtocol staProtocolSta = devpThread.getStation().get(wrkMastSta.getStaEnd());
+ if (staProtocolSta == null) {
+ News.infoNoLog("" + mark + " - 1" + " - 1" + " - Rgv鍏ュ簱绔欎俊鎭�(staProtocol!=null缁х画鎵ц)锛歴taProtocol=" + staProtocol);
+ continue;
+ } else {
+ staProtocolSta = staProtocolSta.clone();
+ }
+ if(staProtocolSta.isLoading()){
+ continue;
+ }
}
wrkMastSta.setWorkSta(wrkMastSta1 !=null ? 2 : 1);//鑻�1鍙峰伐浣嶆湁浠诲姟缁�2鍙峰伐浣�
wrkMastSta.setRgvNo((int) rgvProtocol.getRgvNo());
@@ -3781,7 +3847,6 @@
}
}
}
-
if(wrkMastSta3 != null ){
List<WrkMastSta> wrkMastStaPaking = wrkMastStaService.selectPakingWrk(wrkMastSta3.getStaStart());
if(wrkMastStaPaking.size() < 1){
@@ -3800,7 +3865,6 @@
basRgvService.updateById(basRgv);
rgvThread.setPaking(false);
-// rgvThread.setPakIn(false);//鍏ュ簱涓嶅厑璁�
try{
wrkMastSta.setWrkSts(1);
wrkMastStaMapper.updateById(wrkMastSta);
diff --git a/src/main/java/com/zy/asrs/service/impl/WrkDetlServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/WrkDetlServiceImpl.java
index 017911a..57fe089 100644
--- a/src/main/java/com/zy/asrs/service/impl/WrkDetlServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/WrkDetlServiceImpl.java
@@ -52,6 +52,10 @@
public List<WrkDetl> findByWorkNo(Integer workNo) {
return this.baseMapper.findByWorkNo(workNo);
}
+ @Override
+ public List<WrkDetl> findByBarcode(String barcode) {
+ return this.baseMapper.findByBarcode(barcode);
+ }
@Override
public boolean updateIoTime(Integer workNo, Date ioTime) {
diff --git a/src/main/java/com/zy/core/MainProcess.java b/src/main/java/com/zy/core/MainProcess.java
index 7d05137..fbb579c 100644
--- a/src/main/java/com/zy/core/MainProcess.java
+++ b/src/main/java/com/zy/core/MainProcess.java
@@ -115,6 +115,7 @@
k = 0;
}
}catch (Exception e){
+ e.printStackTrace();
log.error("RGV ===>> 灏忚溅浠诲姟浣滀笟涓嬪彂寮傚父"+e);
}
// //瀹屾垚灏忚溅浠诲姟
@@ -164,15 +165,15 @@
continue;
}
//agv浠诲姟涓嬪彂
- mainService.agvTaskAssignment0();//0===銆�1 AGV搴撲綅==銆嬭緭閫佺嚎绔欑偣 0
- mainService.agvTaskAssignment1();//0===銆�1 AGV搴撲綅==銆婣GV搴撲綅 1
- mainService.agvTaskAssignment2();//0===銆�1 杈撻�佺嚎绔欑偣==銆婣GV搴撲綅 2
- mainService.agvTaskAssignment3();//0===銆�1 杈撻�佺嚎绔欑偣==銆嬭緭閫佺嚎绔欑偣 3
-
-
- mainService.agvTaskCreateFull();//浠诲姟鐢熸垚 鍑哄簱鍙�==銆婣GV搴撲綅
- mainService.agvTaskCreateEmpty();//浠诲姟鐢熸垚 鍑哄簱鍙�==銆婣GV搴撲綅
- mainService.agvTaskCreateR();//浠诲姟鐢熸垚 AGV搴撲綅==銆嬪叆搴撳彛
+// mainService.agvTaskAssignment0();//0===銆�1 AGV搴撲綅==銆嬭緭閫佺嚎绔欑偣 0
+// mainService.agvTaskAssignment1();//0===銆�1 AGV搴撲綅==銆婣GV搴撲綅 1
+// mainService.agvTaskAssignment2();//0===銆�1 杈撻�佺嚎绔欑偣==銆婣GV搴撲綅 2
+// mainService.agvTaskAssignment3();//0===銆�1 杈撻�佺嚎绔欑偣==銆嬭緭閫佺嚎绔欑偣 3
+//
+//
+// mainService.agvTaskCreateFull();//浠诲姟鐢熸垚 鍑哄簱鍙�==銆婣GV搴撲綅
+// mainService.agvTaskCreateEmpty();//浠诲姟鐢熸垚 鍑哄簱鍙�==銆婣GV搴撲綅
+// mainService.agvTaskCreateR();//浠诲姟鐢熸垚 AGV搴撲綅==銆嬪叆搴撳彛
} catch (Exception e) {
e.printStackTrace();
diff --git a/src/main/java/com/zy/core/model/protocol/RgvProtocol.java b/src/main/java/com/zy/core/model/protocol/RgvProtocol.java
index be7cb68..ac5bec5 100644
--- a/src/main/java/com/zy/core/model/protocol/RgvProtocol.java
+++ b/src/main/java/com/zy/core/model/protocol/RgvProtocol.java
@@ -461,17 +461,17 @@
public Integer getRgvPosI2() {
// key: 绔欑偣鍙� value: 鍩哄噯鐗╃悊浣嶇疆
Map<Integer, Integer> posMap = new HashMap<>();
- posMap.put(2003, 314954);
- posMap.put(2006, 288094);
- posMap.put(2009, 246574);
- posMap.put(2012, 219584);
- posMap.put(2015, 177934);
- posMap.put(2018, 138126);
- posMap.put(2021, 102124);
- posMap.put(2024, 75174);
- posMap.put(2027, 33748);
- posMap.put(2030, 6449);
- int tolerance = 200; // 鍏佽璇樊鑼冨洿
+ posMap.put(2030, 314954);
+ posMap.put(2027, 288094);
+ posMap.put(2024, 246574);
+ posMap.put(2021, 219584);
+ posMap.put(2018, 177934);
+ posMap.put(2015, 138126);
+ posMap.put(2012, 102124);
+ posMap.put(2009, 75174);
+ posMap.put(2006, 33748);
+ posMap.put(2003, 6449);
+ int tolerance = 500; // 鍏佽璇樊鑼冨洿
for (Map.Entry<Integer, Integer> entry : posMap.entrySet()) {
int site = entry.getKey();
diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml
index 6ef6c0f..37ff093 100644
--- a/src/main/resources/application.yml
+++ b/src/main/resources/application.yml
@@ -346,18 +346,27 @@
rgvOutTStn[0]:
devpPlcId: ${wcs-slave.devp[1].id}
staNo: 2003
+ staNo2: 2001
rgvOutTStn[1]:
devpPlcId: ${wcs-slave.devp[1].id}
staNo: 2009
+ staNo2: 2007
+
rgvOutTStn[2]:
devpPlcId: ${wcs-slave.devp[1].id}
staNo: 2015
+ staNo2: 2013
+
rgvOutTStn[3]:
devpPlcId: ${wcs-slave.devp[1].id}
staNo: 2021
+ staNo2: 2019
+
rgvOutTStn[4]:
devpPlcId: ${wcs-slave.devp[1].id}
staNo: 2027
+ staNo2: 2025
+
#RGV鍑哄簱鏀捐揣绔欑偣
rgvOutPStn[0]:
devpPlcId: ${wcs-slave.devp[1].id}
diff --git a/src/main/resources/mapper/WrkDetlMapper.xml b/src/main/resources/mapper/WrkDetlMapper.xml
index 6bd7ea2..55e9157 100644
--- a/src/main/resources/mapper/WrkDetlMapper.xml
+++ b/src/main/resources/mapper/WrkDetlMapper.xml
@@ -29,6 +29,9 @@
<select id="findByWorkNo" resultMap="BaseResultMap">
select * from asr_wrk_detl where 1=1 and wrk_no = #{workNo}
</select>
+ <select id="findByBarcode" resultMap="BaseResultMap">
+ select * from asr_wrk_detl where 1=1 and zpallet = #{barcode} and wrk_no != 9996
+ </select>
<update id="updateIoTime">
update asr_wrk_detl
diff --git a/src/main/resources/mapper/WrkMastStaMapper.xml b/src/main/resources/mapper/WrkMastStaMapper.xml
index 4e90fba..ebc1221 100644
--- a/src/main/resources/mapper/WrkMastStaMapper.xml
+++ b/src/main/resources/mapper/WrkMastStaMapper.xml
@@ -119,9 +119,12 @@
or sta_end = 0
)
and wrk_sts=0
- and sta_end in (1018,2018)
+ and sta_end in (2006.2012,2018,2024,2030,1004,1014,1018,1028,1035)
and wrk_no = #{workNo}
- order by line_number,id
+ order by
+ case when mk = 1 then 0 else 1 end,
+ line_number,
+ id
</select>
<select id="selectNoInterfereToCrn" resultMap="BaseResultMap">
diff --git a/src/main/webapp/views/console.html b/src/main/webapp/views/console.html
index a31638f..b2c4243 100644
--- a/src/main/webapp/views/console.html
+++ b/src/main/webapp/views/console.html
@@ -555,6 +555,7 @@
var sites = res.data;
for (var i = 0; i < sites.length; i++) {
var siteEl = $("#site-" + sites[i].siteId);
+ // console.log(sites[i].siteStatus);
siteEl.attr("class", "site " + sites[i].siteStatus);
if (sites[i].workNo != null && sites[i].workNo > 0) {
siteEl.html(sites[i].siteId + "[" + sites[i].workNo + "]");
@@ -761,11 +762,19 @@
targetTop += 580;
break;
default:
+ console.log("鏃犳晥鐨勭洰鏍囩珯鐐癸細" + target);
return; // 鏃犳晥鐨勭珯鐐癸紝璺宠繃
}
+ // 纭繚鐩爣绔欑偣鐨� DOM 鍏冪礌瀛樺湪
+ var siteElement = $("#site-" + id);
+ if (!siteElement.length) {
+ console.log("鏈壘鍒扮珯鐐瑰厓绱狅細" + id);
+ return; // 濡傛灉绔欑偣鍏冪礌涓嶅瓨鍦紝璺宠繃
+ }
+
// 鑾峰彇褰撳墠绔欑偣浣嶇疆
- var currentTop = $("#site-" + id).position().top;
+ var currentTop = siteElement.position().top;
// 璁$畻涓や釜绔欑偣涔嬮棿鐨勮窛绂�
var distance = Math.abs(targetTop - currentTop);
@@ -774,10 +783,11 @@
var duration = Math.max(500, Math.min(distance / 2, 2000));
// 鎵ц鍔ㄧ敾锛屽钩婊戝湴绉诲姩鍒扮洰鏍囦綅缃�
- $("#site-" + id).animate({ top: targetTop + 'px' }, duration);
+ siteElement.animate({ top: targetTop + 'px' }, duration);
}
+
// 妫�鏌� URL 涓槸鍚﹀寘鍚� fullscreen=true 鍙傛暟
function checkFullscreen() {
const urlParams = new URLSearchParams(window.location.search);
--
Gitblit v1.9.1