diff --git a/lib/EmergencyBaseLib/EmergencyCommon/src/main/java/com/zdxt/common/util/IdCardCryptoUtil.java b/lib/EmergencyBaseLib/EmergencyCommon/src/main/java/com/zdxt/common/util/IdCardCryptoUtil.java index 40e84692..31fe0ac6 100644 --- a/lib/EmergencyBaseLib/EmergencyCommon/src/main/java/com/zdxt/common/util/IdCardCryptoUtil.java +++ b/lib/EmergencyBaseLib/EmergencyCommon/src/main/java/com/zdxt/common/util/IdCardCryptoUtil.java @@ -32,7 +32,7 @@ public class IdCardCryptoUtil { String key = "VRJHzFqJpsSZhwnsKTWNspv_GZMxTWl-bgH6DyE9Ty0"; System.out.println("====================== 示例 ======================"); // 加密 - String source_dec = "13418867033"; + String source_dec = "17727553917"; String enc = IdCardCryptoUtil.symmetricEncryptIdCard(key, source_dec); System.out.println(source_dec+" 加密后 : "+enc); // 解密 diff --git a/lib/EmergencyService/zdxtEmergencyAuthService/src/main/java/com/zdxt/auth/framework/config/CorsFilter.java b/lib/EmergencyService/zdxtEmergencyAuthService/src/main/java/com/zdxt/auth/framework/config/CorsFilter.java index 8938a622..c07cd7eb 100644 --- a/lib/EmergencyService/zdxtEmergencyAuthService/src/main/java/com/zdxt/auth/framework/config/CorsFilter.java +++ b/lib/EmergencyService/zdxtEmergencyAuthService/src/main/java/com/zdxt/auth/framework/config/CorsFilter.java @@ -32,9 +32,10 @@ public class CorsFilter implements Filter { public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { //配置可信域名 - String[] authhosts = {"http://10.132.108.3:85","http://jdm.szssfj.cn","http://localhost:85","http://192.168.31.196:3301","http://172.16.20.74:85", "http://192.168.145.155", "http://zfjdm.lggov.cn", "https://zfjdm.lggov.cn", + // https 站点 Origin 带 https://,与 http 不是同一个值;漏配会导致跨域接口直接 403,前端拿不到 JWT + String[] authhosts = {"http://10.132.108.3:85","http://jdm.szssfj.cn","https://jdm.szssfj.cn","http://localhost:85","http://192.168.31.196:3301","http://172.16.20.74:85", "http://192.168.145.155", "http://zfjdm.lggov.cn", "https://zfjdm.lggov.cn", "http://localhost:3301","http://10.132.108.3:81","http://10.132.108.3:85", "http://192.168.1.130:3301", "http://172.16.20.74:3301", "http://10.132.108.1", "http://10.132.108.6", - "http://192.168.129.149","http://192.168.129.150","http://192.168.129.151","http://192.168.129.512","http://192.168.129.513","http://192.168.129.154","http://192.168.129.157","http://192.168.129.158", "http://10.132.108.18","http://10.132.108.18:12004"}; + "http://192.168.129.149","http://192.168.129.150","http://192.168.129.151","http://192.168.129.512","http://192.168.129.513","http://192.168.129.154","http://192.168.129.157","http://192.168.129.158", "http://10.132.108.18","http://10.132.108.18:12004","https://10.132.108.18","https://10.132.108.18:12004"}; String authost = ""; HttpServletRequest httprequest = (HttpServletRequest) request; String origin = httprequest.getHeader("Origin"); @@ -66,7 +67,7 @@ public class CorsFilter implements Filter { LocalDate start = LocalDate.of(2026, 6, 19); LocalDate end = LocalDate.of(2026, 10, 1); if (!now.isBefore(start) && !now.isAfter(end)) { - httpresponse.addHeader("Content-Security-Policy", "frame-ancestors 'self' http://localhost:85 http://localhost:12004 http://58.250.157.161 http://10.132.108.3:85 http://10.132.108.3 http://10.132.108.18 http://10.132.108.18:12004"); + httpresponse.addHeader("Content-Security-Policy", "frame-ancestors 'self' http://localhost:85 http://localhost:12004 https://localhost:85 https://localhost:12004 http://58.250.157.161 https://58.250.157.161 http://10.132.108.3:85 http://10.132.108.3 http://10.132.108.18 http://10.132.108.18:12004 https://10.132.108.18 https://10.132.108.18:12004 https://jdm.szssfj.cn http://jdm.szssfj.cn"); } else { httpresponse.addHeader("X-Frame-Options", "SAMEORIGIN"); } diff --git a/lib/EmergencyService/zdxtEmergencyAuthService/src/main/java/com/zdxt/auth/framework/config/XssAndSqlFilter.java b/lib/EmergencyService/zdxtEmergencyAuthService/src/main/java/com/zdxt/auth/framework/config/XssAndSqlFilter.java index b9c510f4..93e85dd6 100644 --- a/lib/EmergencyService/zdxtEmergencyAuthService/src/main/java/com/zdxt/auth/framework/config/XssAndSqlFilter.java +++ b/lib/EmergencyService/zdxtEmergencyAuthService/src/main/java/com/zdxt/auth/framework/config/XssAndSqlFilter.java @@ -37,9 +37,11 @@ public class XssAndSqlFilter implements Filter { HttpServletRequest req = (HttpServletRequest) request; //获取请求你ip后的全部路径 String uri = req.getRequestURI(); + // 登录/换票接口 body 常含 Base64(含 +/%),不能走 checkXSSAndSql 的 +/% 拦截 if (uri.indexOf("/system/notice/") >= 0 || uri.indexOf("/app/code/registration/") >= 0 || uri.indexOf("/app/enterpriseInformation/getEnterpriseInfoBySj") >= 0 + || uri.indexOf("/app/thirdLogin/") >= 0 || uri.indexOf("/external/") >= 0) { chain.doFilter(request, response); return; diff --git a/lib/EmergencyService/zdxtEmergencyAuthService/src/main/java/com/zdxt/auth/framework/config/XssAndSqlHttpServletRequestWrapper.java b/lib/EmergencyService/zdxtEmergencyAuthService/src/main/java/com/zdxt/auth/framework/config/XssAndSqlHttpServletRequestWrapper.java index c67fa836..f0932d1b 100644 --- a/lib/EmergencyService/zdxtEmergencyAuthService/src/main/java/com/zdxt/auth/framework/config/XssAndSqlHttpServletRequestWrapper.java +++ b/lib/EmergencyService/zdxtEmergencyAuthService/src/main/java/com/zdxt/auth/framework/config/XssAndSqlHttpServletRequestWrapper.java @@ -87,7 +87,12 @@ public class XssAndSqlHttpServletRequestWrapper extends HttpServletRequestWrappe */ @Override public String getHeader(String name) { - + // token / Authorization / Referer 不做全角转义: + // 1) JWT 若被改写会直接验签失败;2) Referer 里的 & 被改成 & 会误导排查(日志里看起来像参数坏了) + String lower = name == null ? "" : name.toLowerCase(); + if ("token".equals(lower) || "authorization".equals(lower) || "referer".equals(lower)) { + return super.getHeader(name); + } String value = super.getHeader(xssEncode(name)); if (value != null) { value = xssEncode(value); diff --git a/lib/EmergencyService/zdxtEmergencyAuthService/src/main/java/com/zdxt/auth/framework/shiro/jwt/JWTInterceptor.java b/lib/EmergencyService/zdxtEmergencyAuthService/src/main/java/com/zdxt/auth/framework/shiro/jwt/JWTInterceptor.java index 3c08a543..7353238d 100644 --- a/lib/EmergencyService/zdxtEmergencyAuthService/src/main/java/com/zdxt/auth/framework/shiro/jwt/JWTInterceptor.java +++ b/lib/EmergencyService/zdxtEmergencyAuthService/src/main/java/com/zdxt/auth/framework/shiro/jwt/JWTInterceptor.java @@ -5,6 +5,9 @@ import com.auth0.jwt.exceptions.AlgorithmMismatchException; import com.auth0.jwt.exceptions.SignatureGenerationException; import com.auth0.jwt.exceptions.TokenExpiredException; import com.fasterxml.jackson.databind.ObjectMapper; +import org.apache.commons.lang3.StringUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.web.servlet.HandlerInterceptor; import javax.servlet.http.HttpServletRequest; @@ -20,6 +23,8 @@ import java.util.Map; */ public class JWTInterceptor implements HandlerInterceptor { + private static final Logger log = LoggerFactory.getLogger(JWTInterceptor.class); + @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { @@ -29,23 +34,37 @@ public class JWTInterceptor implements HandlerInterceptor { String token = request.getHeader("token"); Map map = new HashMap<>(); + // 空 token 直接拒,避免 JWT 库抛 “expected 3 parts, but got 1” 刷屏;同时打出真实 URI 便于排查 + if (StringUtils.isBlank(token)) { + log.warn("JWT校验失败:token为空, method={}, uri={}, query={}", + method, request.getRequestURI(), request.getQueryString()); + map.put("state", false); + map.put("msg", "token为空"); + String json = new ObjectMapper().writeValueAsString(map); + response.setContentType("application/json;charset=UTF-8"); + response.getWriter().println(json); + return false; + } + try { JWTVerifier verify = JWTUtils.verify(token); map.put("state", true); map.put("msg", "请求成功"); return true; }catch (SignatureGenerationException e){ - e.printStackTrace(); + log.warn("JWT校验失败:无效签名, method={}, uri={}", method, request.getRequestURI()); map.put("msg","无效签名"); }catch (TokenExpiredException e){ - e.printStackTrace(); + log.warn("JWT校验失败:token过期, method={}, uri={}", method, request.getRequestURI()); map.put("msg","token过期"); }catch (AlgorithmMismatchException e){ - e.printStackTrace(); + log.warn("JWT校验失败:算法不一致, method={}, uri={}", method, request.getRequestURI()); map.put("msg","token算法不一致"); } catch (Exception e) { - e.printStackTrace(); + // token 非空但仍不是合法 JWT(例如误传了深i企 accessKey),只打摘要不打堆栈 + log.warn("JWT校验失败:token无效, method={}, uri={}, tokenParts={}, err={}", + method, request.getRequestURI(), token.split("\\.").length, e.getMessage()); map.put("msg","token无效"); } map.put("state", false); // 设置状态 diff --git a/lib/EmergencyService/zdxtEmergencyAuthService/src/main/java/com/zdxt/auth/project/system/user/controller/LoginByUserIdController.java b/lib/EmergencyService/zdxtEmergencyAuthService/src/main/java/com/zdxt/auth/project/system/user/controller/LoginByUserIdController.java index 4a910c53..24b66f0f 100644 --- a/lib/EmergencyService/zdxtEmergencyAuthService/src/main/java/com/zdxt/auth/project/system/user/controller/LoginByUserIdController.java +++ b/lib/EmergencyService/zdxtEmergencyAuthService/src/main/java/com/zdxt/auth/project/system/user/controller/LoginByUserIdController.java @@ -54,7 +54,7 @@ public class LoginByUserIdController extends BaseController { /** * 允许登录的结束日期时间(格式 yyyy-MM-dd HH:mm) */ - private static final String ALLOWED_END_TIME = "2026-09-01 22:00"; + private static final String ALLOWED_END_TIME = "2027-12-01 22:00"; @Autowired private IUserService userService; diff --git a/lib/EmergencyService/zdxtEmergencyBootStart/src/main/resources/static/statistical-new/scripts/charts-rank.js b/lib/EmergencyService/zdxtEmergencyBootStart/src/main/resources/static/statistical-new/scripts/charts-rank.js index 114820ee..213d7e5e 100644 --- a/lib/EmergencyService/zdxtEmergencyBootStart/src/main/resources/static/statistical-new/scripts/charts-rank.js +++ b/lib/EmergencyService/zdxtEmergencyBootStart/src/main/resources/static/statistical-new/scripts/charts-rank.js @@ -113,8 +113,10 @@ function rankCommpany(data) { /*******执法单位执法数量排行***********/ function rankInspect(data) { - const names = data.map(item => item.bureau_dept_name); - const cnts = data.map(item => item.cnt); + // const names = data.map(item => item.bureau_dept_name); + // const cnts = data.map(item => item.cnt); + const names = ['消防救援', '公安', '交通运输', '住房和建设', '卫生健康', '生态环境', '应急管理', '市场监督管理', '规划和自然资源', '水务']; + const cnts = [3953,1741,1399,1275,470,121,43,25,12, 9] var myChart = echarts.init(document.getElementById('rankInspect')); // 指定图表的配置项和数据 diff --git a/lib/EmergencyService/zdxtEmergencyBootStart/src/main/resources/static/statistical-new/styles/analysis.css b/lib/EmergencyService/zdxtEmergencyBootStart/src/main/resources/static/statistical-new/styles/analysis.css index 0135df09..edf81210 100644 --- a/lib/EmergencyService/zdxtEmergencyBootStart/src/main/resources/static/statistical-new/styles/analysis.css +++ b/lib/EmergencyService/zdxtEmergencyBootStart/src/main/resources/static/statistical-new/styles/analysis.css @@ -414,6 +414,45 @@ body { text-align: left; } +.xzjc .count_item { + float: left; + position: relative; + margin: -0.5% 0.5% 0.5% 0.5%; + width: 19%; + height: 6.25rem; + background: url(../images/bg_analy_card.jpg) no-repeat; + background-size: cover; + border-radius: 10px; + font-size: 1rem; + text-align: center; +} + +.xzjc .count_item .count_lab { + display: inline-flex; + margin: 5.5% 5% 3%; + width: 90%; + color: #666; + font-size: 0.9rem; + text-align: left; +} +.xzjc .count_div { + display: flex; +} + +.xzjc .count_div img { + display: inline-block; + margin: 2% 2% 5%; + width: 50px !important; + height: 50px; +} + +.xzjc .count_div .count_cont { + margin: 0 1% 0 -5%; + width: 62%; + position: absolute; + top: 0px; + right: 0px; +} .count_div { display: flex; } diff --git a/lib/EmergencyService/zdxtEmergencyBootStart/src/main/resources/templates/jump.html b/lib/EmergencyService/zdxtEmergencyBootStart/src/main/resources/templates/jump.html index e02dd2f7..37eee162 100644 --- a/lib/EmergencyService/zdxtEmergencyBootStart/src/main/resources/templates/jump.html +++ b/lib/EmergencyService/zdxtEmergencyBootStart/src/main/resources/templates/jump.html @@ -24,7 +24,7 @@ (function(){ var now = new Date(); var start = new Date('2026-06-19'); - var end = new Date('2026-12-01'); + var end = new Date('2027-12-01'); var inAllowedPeriod = (now >= start && now <= end); if(!inAllowedPeriod && window.top!==window.self){window.top.location=window.location} })(); diff --git a/lib/EmergencyService/zdxtEmergencyBootStart/src/main/resources/templates/login.html b/lib/EmergencyService/zdxtEmergencyBootStart/src/main/resources/templates/login.html index e48455a7..b8a3ea0e 100644 --- a/lib/EmergencyService/zdxtEmergencyBootStart/src/main/resources/templates/login.html +++ b/lib/EmergencyService/zdxtEmergencyBootStart/src/main/resources/templates/login.html @@ -206,7 +206,7 @@ (function(){ var now = new Date(); var start = new Date('2026-06-19'); - var end = new Date('2026-12-01'); + var end = new Date('2027-12-01'); var inAllowedPeriod = (now >= start && now <= end); if(!inAllowedPeriod && window.top!==window.self){window.top.location=window.location} })(); diff --git a/lib/EmergencyService/zdxtEmergencyBootStart/src/main/resources/templates/project/code/statistical-new/city-direct-bak.html b/lib/EmergencyService/zdxtEmergencyBootStart/src/main/resources/templates/project/code/statistical-new/city-direct-bak.html new file mode 100644 index 00000000..22e0ddf1 --- /dev/null +++ b/lib/EmergencyService/zdxtEmergencyBootStart/src/main/resources/templates/project/code/statistical-new/city-direct-bak.html @@ -0,0 +1,882 @@ + + + + + + 市直综合分析--执法监督码 + + + + + + + + + + +
+
+
+ +
+
+
+ + 综合数据 +
+
+ +
+
+
单部门执法数量
+
- +
+
+ + -
+
+ + -
+
+
+
+ + -%
+
+ + -%
+
+
+
联合执法数量
+
- +
+
+ + -
+
+ + -
+
+
+
+ + -%
+
+ + -%
+
+
+
被执法企业数量
+
- +
+
+ + -
+
+ + -
+
+
+
+ + -%
+
+ + -%
+
+
+
入企压减率
+
- +
+
+ + -
+
+ + -
+
+
+
-%
+
+
+
涉企投诉数量
+
- +
+
+ + -
+
+ + -
+
+
+
+ + -%
+
+ + -%
+
+
+
企业数量
+
- +
+
+ + -
+
+ + -
+
+
+
+ + -%
+
+ + -%
+
+
+
+
+
+
+

行政执法类别及占比

+
+
+
行政检查
+
+ 行政检查 +
+ - + -% +
+
+
+
+
行政处罚
+
行政处罚 +
--%
+
+
+
+
行政许可
+
行政许可 +
--%
+
+
+
+
行政强制
+
行政强制 +
--%
+
+
+
+
行政征收
+
行政征收 +
--%
+
+
+
+
行政给付
+
行政给付 +
--%
+
+
+
+
行政确认
+
行政确认 +
--%
+
+
+
+
行政登记
+
行政登记 +
--%
+
+
+
+
行政裁决
+
行政裁决 +
--%
+
+
+
+
文书送达
+
文书送达 +
--%
+
+
+
+
文书送达
+
文书送达 +
--%
+
+
+
+
+
+

行政执法投诉类别及占比

+
+
+
违规执法
+
违法执法 +
--%
+
+
+
+
违法执法
+
违规执法 +
--%
+
+
+
+
入企不扫码
+
入企不扫码 +
--%
+
+
+
+
其他
+
其他 +
--%
+
+
+
+
+
+
+
+

重点领域类别及占比

+
+
+
市场监督管理
+
--%
+
+
+
规划和自然资源
+
--%
+
+
+
生态环境
+
--%
+
+
+
交通运输
+
--%
+
+
+
卫生健康
+
--%
+
+
+
应急管理
+
--%
+
+
+
住房和建设
+
--%
+
+
+
消防救援
+
--%
+
+
+
公安
+
--%
+
+
+
+
+

行政执法投诉反馈

+
+
+

投诉

+
+
投诉总量- +
+ + -%
+
+ + -%
+
+
已办结--%
+
未办结--%
+
+
+
+

反馈

+
+
满意--%
+
较满意--%
+
不满意--%
+
未反馈--%
+
+
+
+
+
+
+
+

被执法企业次数排行

+ + + +
+
+
+

执法单位执法数量排行

+ + + +
+
+
+

被投诉单位次数排行

+ + + +
+
+
+

委托执法数量及占比

+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ + + + diff --git a/lib/EmergencyService/zdxtEmergencyBootStart/src/main/resources/templates/project/code/statistical-new/city-direct.html b/lib/EmergencyService/zdxtEmergencyBootStart/src/main/resources/templates/project/code/statistical-new/city-direct.html index 340146e8..52ae03ac 100644 --- a/lib/EmergencyService/zdxtEmergencyBootStart/src/main/resources/templates/project/code/statistical-new/city-direct.html +++ b/lib/EmergencyService/zdxtEmergencyBootStart/src/main/resources/templates/project/code/statistical-new/city-direct.html @@ -28,8 +28,8 @@
-
单独执法数量
-
- +
单部门执法数量
+
9605
@@ -48,7 +48,7 @@
联合执法数量
-
- +
3
@@ -67,7 +67,7 @@
被执法企业数量
-
- +
485
@@ -86,7 +86,7 @@
入企压减率
-
- +
3
@@ -100,7 +100,7 @@
涉企投诉数量
-
- +
3
@@ -119,7 +119,7 @@
企业数量
-
- +
4439328
@@ -140,7 +140,7 @@
-
+

行政执法类别及占比

@@ -148,7 +148,7 @@
行政检查
- - + 9402 -%
@@ -156,13 +156,13 @@
行政处罚
行政处罚 -
--%
+
176-%
行政许可
行政许可 -
--%
+
2-%
@@ -204,18 +204,24 @@
文书送达
文书送达 -
--%
+
21-%
+
+
+
+
其他
+
其他 +
10-%
-
+

行政执法投诉类别及占比

违规执法
违法执法 -
--%
+
1-%
@@ -227,13 +233,13 @@
入企不扫码
入企不扫码 -
--%
+
1-%
其他
其他 -
--%
+
1-%
@@ -245,49 +251,49 @@
市场监督管理
-
--%
+
25-%
规划和自然资源
-
--%
+
12-%
生态环境
-
--%
+
121-%
交通运输
-
--%
+
1399-%
卫生健康
-
--%
+
470-%
应急管理
-
--%
+
43-%
住房和建设
-
--%
+
1275-%
消防救援
-
--%
+
3953-%
公安
-
--%
+
1741-%
-

行政执法投诉评价

+

行政执法投诉反馈

投诉

-
投诉总量- +
投诉总量3
-%
@@ -295,17 +301,17 @@ -%
-
已办结--%
+
已办结3-%
未办结--%
-

评价

+

反馈

-
满意--%
+
满意3-%
较满意--%
不满意--%
-
未评价--%
+
未反馈--%
@@ -507,16 +513,16 @@ dataType: 'json', contentType: "application/json", success: function (result) { - // 上方六个指标 - topSixMetrics(result.data); - // 行政执法类别及占比 - lawCategoryRatio(result.data.lawCategory, result.data.lawCategoryTotal); - // 行政执法投诉类别及占比 - caseTypeRatio(result.data.caseType, result.data.totalCaseType); - // 重点领域类别及占比 - lawFieldRatio(result.data.lawField, result.data.lawFieldTotal); - // 行政执法投诉评价 - evaRatio(result.data.eva) + // // 上方六个指标 + // topSixMetrics(result.data); + // // 行政执法类别及占比 + // lawCategoryRatio(result.data.lawCategory, result.data.lawCategoryTotal); + // // 行政执法投诉类别及占比 + // caseTypeRatio(result.data.caseType, result.data.totalCaseType); + // // 重点领域类别及占比 + // lawFieldRatio(result.data.lawField, result.data.lawFieldTotal); + // // 行政执法投诉评价 + // evaRatio(result.data.eva) } }); } @@ -688,7 +694,7 @@ queryEnforcementSort(10); } else { $("#enforcementSort-dom").text("联合检查单位排行"); - $("#entCSort-dom").text("执法人员涉企检查数是排行"); + $("#entCSort-dom").text("执法人员涉企检查数量排行"); queryUnionSort(10); queryLawEntSort(10); } @@ -696,7 +702,7 @@ } function topSixMetrics(data) { - // 单独执法 + // 单部门执法 singleLaw = data.singleLaw; $("#single-count").text(singleLaw.count) $("#single-yesterday").text(singleLaw.yesterday) diff --git a/lib/EmergencyService/zdxtEmergencyBootStart/src/main/resources/templates/project/code/statistical-new/district-direct.html b/lib/EmergencyService/zdxtEmergencyBootStart/src/main/resources/templates/project/code/statistical-new/district-direct.html index ee3b357e..365a257a 100644 --- a/lib/EmergencyService/zdxtEmergencyBootStart/src/main/resources/templates/project/code/statistical-new/district-direct.html +++ b/lib/EmergencyService/zdxtEmergencyBootStart/src/main/resources/templates/project/code/statistical-new/district-direct.html @@ -50,7 +50,7 @@
-
单独执法数量
+
单部门执法数量
-
@@ -416,7 +416,7 @@ } function topSixMetrics(data) { - // 单独执法 + // 单部门执法 singleLaw = data.singleLaw; $("#single-count").text(singleLaw.count) $("#single-yesterday").text(singleLaw.yesterday) diff --git a/lib/EmergencyService/zdxtEmergencyBootStart/src/main/resources/templates/project/code/statistical/home.html b/lib/EmergencyService/zdxtEmergencyBootStart/src/main/resources/templates/project/code/statistical/home.html index f7ddafcb..51792d3a 100644 --- a/lib/EmergencyService/zdxtEmergencyBootStart/src/main/resources/templates/project/code/statistical/home.html +++ b/lib/EmergencyService/zdxtEmergencyBootStart/src/main/resources/templates/project/code/statistical/home.html @@ -18,7 +18,7 @@

行政执法

- +
00.0%
@@ -225,7 +225,7 @@ base_html += '
'; base_html += '
(行政执法总数:{all_num})
'; base_html += '
    '; - base_html += '
  • {single_num}{single_per}%
  • '; + base_html += '
  • {single_num}{single_per}%
  • '; base_html += '
  • {nuite_num}{nuite_per}%
  • '; base_html += '
  • {cut_num}{cut_per}%
  • '; base_html += '
  • {ent_num}
  • '; @@ -778,6 +778,24 @@ } + /** 趋势图排除当月,只展示到上个月(当月数据未完整,末尾会骤降) */ + function trimTrendToLastMonth(times, ins, ent) { + if (!times || !times.length) { + return { times: times || [], ins: ins || [], ent: ent || [] }; + } + var now = new Date(); + var curYm = now.getFullYear() + '-' + ('0' + (now.getMonth() + 1)).slice(-2); + var t = times.slice(); + var i = (ins || []).slice(); + var e = (ent || []).slice(); + while (t.length && t[t.length - 1] === curYm) { + t.pop(); + i.pop(); + e.pop(); + } + return { times: t, ins: i, ent: e }; + } + /** 时间维度 */ function analysisTime(beginTime, endTime) { $.ajax({ @@ -787,7 +805,8 @@ dataType: 'json', contentType: "application/json", success: function (result) { - timesCharts(result.data.times, result.data.ins, result.data.ent); + var trimmed = trimTrendToLastMonth(result.data.times, result.data.ins, result.data.ent); + timesCharts(trimmed.times, trimmed.ins, trimmed.ent); } }); } @@ -800,7 +819,8 @@ dataType: 'json', contentType: "application/json", success: function (result) { - timesCharts2(result.data.times, result.data.ins, result.data.ent); + var trimmed = trimTrendToLastMonth(result.data.times, result.data.ins, result.data.ent); + timesCharts2(trimmed.times, trimmed.ins, trimmed.ent); } }); } diff --git a/lib/EmergencyService/zdxtLawEnforcementCodeService/src/main/java/com/zdxt/code/service/impl/ThirdLoginServiceImpl.java b/lib/EmergencyService/zdxtLawEnforcementCodeService/src/main/java/com/zdxt/code/service/impl/ThirdLoginServiceImpl.java index d9bc1a1b..d1a13ec5 100644 --- a/lib/EmergencyService/zdxtLawEnforcementCodeService/src/main/java/com/zdxt/code/service/impl/ThirdLoginServiceImpl.java +++ b/lib/EmergencyService/zdxtLawEnforcementCodeService/src/main/java/com/zdxt/code/service/impl/ThirdLoginServiceImpl.java @@ -219,7 +219,8 @@ public class ThirdLoginServiceImpl implements ThirdLoginService { payload.put("name", user.getLoginName()); String token1 = JWTUtils.sign(payload); user.setToken(token1); - user.setArea(dept.getAreaNode()); +// user.setArea(dept.getAreaNode()); + user.setArea(user.getBureauDept().getAreaNode()); return ZDResponse.success("登录成功",user); } catch (Exception e) { log.error(e.getMessage()); diff --git a/lib/EmergencyServiceApi/emergencyAuthServiceApi/src/main/java/com/zdxt/auth/dto/UserBean.java b/lib/EmergencyServiceApi/emergencyAuthServiceApi/src/main/java/com/zdxt/auth/dto/UserBean.java index 734bda97..ef5e5e96 100644 --- a/lib/EmergencyServiceApi/emergencyAuthServiceApi/src/main/java/com/zdxt/auth/dto/UserBean.java +++ b/lib/EmergencyServiceApi/emergencyAuthServiceApi/src/main/java/com/zdxt/auth/dto/UserBean.java @@ -1,6 +1,8 @@ package com.zdxt.auth.dto; import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import org.springframework.format.annotation.DateTimeFormat; @@ -28,8 +30,10 @@ public class UserBean implements Serializable { /** * 用户ID + * 出站 JSON 写成字符串,避免前端 JS Number 对雪花 ID 丢精度 */ @ApiModelProperty("用户ID") + @JsonSerialize(using = ToStringSerializer.class) private Long userId; /**