diff --git a/src/main/java/com/sipai/controller/administration/AttendanceController.java b/src/main/java/com/sipai/controller/administration/AttendanceController.java new file mode 100644 index 00000000..401fc54d --- /dev/null +++ b/src/main/java/com/sipai/controller/administration/AttendanceController.java @@ -0,0 +1,194 @@ +package com.sipai.controller.administration; + +import net.sf.json.JSONArray; +import net.sf.json.JSONObject; +import org.springframework.stereotype.Controller; +import org.springframework.ui.Model; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.servlet.ModelAndView; + +import javax.servlet.http.HttpServletRequest; +import java.time.LocalDate; +import java.time.format.DateTimeFormatter; +import java.util.ArrayList; +import java.util.Collections; +import java.util.Comparator; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; + +@Controller +@RequestMapping("/administration/attendance") +public class AttendanceController { + private static final DateTimeFormatter DAY_FMT = DateTimeFormatter.ofPattern("yyyy-MM-dd"); + + @RequestMapping("/showList.do") + public String showList(HttpServletRequest request, Model model) { + return "/administration/attendanceRecordList"; + } + + @RequestMapping("/getList.do") + public ModelAndView getList(HttpServletRequest request, Model model, + @RequestParam(value = "page") Integer page, + @RequestParam(value = "rows") Integer rows, + @RequestParam(value = "sort", required = false) String sort, + @RequestParam(value = "order", required = false) String order) { + String name = safe(request.getParameter("search_name")); + String dept = safe(request.getParameter("search_dept")); + String status = safe(request.getParameter("search_status")); + String start = safe(request.getParameter("search_start")); + String end = safe(request.getParameter("search_end")); + + LocalDate startDate = parseDay(start); + LocalDate endDate = parseDay(end); + List> allRows = buildMockRows(); + List> filtered = new ArrayList>(); + + for (Map item : allRows) { + String employeeNo = str(item.get("employeeNo")); + String employeeName = str(item.get("employeeName")); + String deptName = str(item.get("deptName")); + String st = str(item.get("status")); + LocalDate day = parseDay(str(item.get("attendanceDate"))); + + if (!name.isEmpty()) { + String q = name.toLowerCase(); + if (!employeeNo.toLowerCase().contains(q) && !employeeName.toLowerCase().contains(q)) { + continue; + } + } + if (!dept.isEmpty() && !dept.equals(deptName)) { + continue; + } + if (!status.isEmpty() && !status.equals(st)) { + continue; + } + if (startDate != null && day != null && day.isBefore(startDate)) { + continue; + } + if (endDate != null && day != null && day.isAfter(endDate)) { + continue; + } + filtered.add(item); + } + + sortRows(filtered, sort, order); + int total = filtered.size(); + int from = Math.max(0, (page - 1) * rows); + int to = Math.min(total, from + rows); + List> pageRows = from >= to ? Collections.>emptyList() : filtered.subList(from, to); + + JSONObject result = new JSONObject(); + result.put("total", total); + result.put("rows", JSONArray.fromObject(pageRows)); + model.addAttribute("result", result.toString()); + return new ModelAndView("result"); + } + + private static void sortRows(List> rows, String sort, String order) { + final boolean asc = "asc".equalsIgnoreCase(order); + final String sortField = (sort == null || sort.trim().isEmpty() || "id".equals(sort)) ? "attendanceDate" : sort; + Collections.sort(rows, new Comparator>() { + @Override + public int compare(Map a, Map b) { + int cmp; + if ("employeeNo".equals(sortField)) { + cmp = str(a.get("employeeNo")).compareTo(str(b.get("employeeNo"))); + } else if ("employeeName".equals(sortField)) { + cmp = str(a.get("employeeName")).compareTo(str(b.get("employeeName"))); + } else if ("deptName".equals(sortField)) { + cmp = str(a.get("deptName")).compareTo(str(b.get("deptName"))); + } else if ("status".equals(sortField)) { + cmp = str(a.get("status")).compareTo(str(b.get("status"))); + } else if ("checkInTime".equals(sortField)) { + cmp = str(a.get("checkInTime")).compareTo(str(b.get("checkInTime"))); + } else { + cmp = str(a.get("attendanceDate")).compareTo(str(b.get("attendanceDate"))); + } + if (!asc) { + cmp = -cmp; + } + if (cmp == 0) { + return str(a.get("employeeNo")).compareTo(str(b.get("employeeNo"))); + } + return cmp; + } + }); + } + + private static List> buildMockRows() { + String[][] employees = { + {"E0001", "张三", "生产部"}, + {"E0002", "李四", "设备部"}, + {"E0003", "王五", "品控部"}, + {"E0004", "赵六", "仓储部"}, + {"E0005", "钱七", "行政部"} + }; + + List> rows = new ArrayList>(); + LocalDate today = LocalDate.now(); + int idSeq = 1; + + for (int d = 0; d < 45; d++) { + LocalDate day = today.minusDays(d); + String dayStr = DAY_FMT.format(day); + for (int i = 0; i < employees.length; i++) { + String[] emp = employees[i]; + int flag = d + i; + + String status = "正常"; + String checkIn = "08:55"; + String checkOut = "18:05"; + String workHours = "8.5"; + + if (flag % 19 == 0) { + status = "缺卡"; + checkOut = "--"; + workHours = "4.2"; + } else if (flag % 11 == 0) { + status = "迟到"; + checkIn = "09:" + (10 + (flag % 20)); + workHours = "7.8"; + } else if (flag % 13 == 0) { + status = "早退"; + checkOut = "17:" + (20 + (flag % 30)); + workHours = "7.1"; + } + + Map row = new LinkedHashMap(); + row.put("id", "mock-" + idSeq++); + row.put("employeeNo", emp[0]); + row.put("employeeName", emp[1]); + row.put("deptName", emp[2]); + row.put("attendanceDate", dayStr); + row.put("checkInTime", checkIn); + row.put("checkOutTime", checkOut); + row.put("workHours", workHours); + row.put("status", status); + row.put("source", "第三方接口(MOCK)"); + rows.add(row); + } + } + return rows; + } + + private static String safe(String s) { + return s == null ? "" : s.trim(); + } + + private static String str(Object o) { + return o == null ? "" : String.valueOf(o); + } + + private static LocalDate parseDay(String day) { + if (day == null || day.trim().isEmpty()) { + return null; + } + try { + return LocalDate.parse(day.trim(), DAY_FMT); + } catch (Exception ex) { + return null; + } + } +} diff --git a/src/main/java/com/sipai/controller/jsyw/VehicleGateController.java b/src/main/java/com/sipai/controller/jsyw/VehicleGateController.java new file mode 100644 index 00000000..9bef676a --- /dev/null +++ b/src/main/java/com/sipai/controller/jsyw/VehicleGateController.java @@ -0,0 +1,114 @@ +package com.sipai.controller.jsyw; + +import net.sf.json.JSONArray; +import org.springframework.stereotype.Controller; +import org.springframework.ui.Model; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.servlet.ModelAndView; + +import javax.servlet.http.HttpServletRequest; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Locale; +import java.util.Map; + +@Controller +@RequestMapping("/jsyw/vehicleGate") +public class VehicleGateController { + + @RequestMapping("/showList.do") + public String showList(HttpServletRequest request, Model model) { + return "/jsyw/vehicleGateList"; + } + + @RequestMapping("/getList.do") + public ModelAndView getList(HttpServletRequest request, Model model, + @RequestParam(value = "page", required = false, defaultValue = "1") Integer page, + @RequestParam(value = "rows", required = false, defaultValue = "10") Integer rows) { + String plateNo = safeStr(request.getParameter("plateNo")).toUpperCase(Locale.ROOT); + String passDate = safeStr(request.getParameter("passDate")); + String direction = safeStr(request.getParameter("direction")); + String status = safeStr(request.getParameter("status")); + + List> mockRows = buildMockRows(); + List> filteredRows = new ArrayList>(); + int inCount = 0; + int outCount = 0; + int abnormalCount = 0; + + for (Map item : mockRows) { + String itemPlateNo = safeStr(item.get("plateNo")).toUpperCase(Locale.ROOT); + String itemPassTime = safeStr(item.get("passTime")); + String itemDirection = safeStr(item.get("direction")); + String itemStatus = safeStr(item.get("status")); + + boolean matchPlate = plateNo.isEmpty() || itemPlateNo.contains(plateNo); + boolean matchDate = passDate.isEmpty() || itemPassTime.startsWith(passDate); + boolean matchDirection = direction.isEmpty() || direction.equals(itemDirection); + boolean matchStatus = status.isEmpty() || status.equals(itemStatus); + if (matchPlate && matchDate && matchDirection && matchStatus) { + filteredRows.add(item); + if ("IN".equals(itemDirection)) { + inCount++; + } else if ("OUT".equals(itemDirection)) { + outCount++; + } + if ("ABNORMAL".equals(itemStatus)) { + abnormalCount++; + } + } + } + + int total = filteredRows.size(); + int pageStart = Math.max((page - 1) * rows, 0); + int pageEnd = Math.min(pageStart + rows, total); + List> pageRows = new ArrayList>(); + if (pageStart < pageEnd) { + pageRows = filteredRows.subList(pageStart, pageEnd); + } + + JSONArray rowsJson = JSONArray.fromObject(pageRows); + String result = "{" + + "\"total\":" + total + "," + + "\"rows\":" + rowsJson + "," + + "\"summaryInCount\":" + inCount + "," + + "\"summaryOutCount\":" + outCount + "," + + "\"summaryInsideCount\":" + (inCount - outCount) + "," + + "\"summaryAbnormalCount\":" + abnormalCount + + "}"; + model.addAttribute("result", result); + return new ModelAndView("result"); + } + + private String safeStr(Object value) { + return value == null ? "" : String.valueOf(value).trim(); + } + + private List> buildMockRows() { + List> rows = new ArrayList>(); + rows.add(buildRow("鲁A12345", "IN", "2026-03-03 08:12:21", "东门1号闸", "张三", "NORMAL", "自动识别放行")); + rows.add(buildRow("鲁B66K88", "OUT", "2026-03-03 08:18:46", "东门1号闸", "李四", "NORMAL", "自动识别放行")); + rows.add(buildRow("鲁C99871", "IN", "2026-03-03 08:27:19", "南门2号闸", "王五", "ABNORMAL", "车牌识别异常,人工放行")); + rows.add(buildRow("鲁A77889", "IN", "2026-03-03 09:04:52", "北门1号闸", "赵六", "NORMAL", "自动识别放行")); + rows.add(buildRow("鲁D22319", "OUT", "2026-03-03 09:19:11", "南门2号闸", "钱七", "NORMAL", "自动识别放行")); + rows.add(buildRow("鲁E55120", "IN", "2026-03-03 10:03:35", "西门1号闸", "孙八", "NORMAL", "访客车辆")); + rows.add(buildRow("鲁F90111", "OUT", "2026-03-03 10:16:05", "北门1号闸", "周九", "ABNORMAL", "未登记离场,值班确认")); + rows.add(buildRow("鲁A0P365", "IN", "2026-03-03 10:42:30", "东门1号闸", "吴十", "NORMAL", "自动识别放行")); + return rows; + } + + private Map buildRow(String plateNo, String direction, String passTime, String gateName, + String driverName, String status, String note) { + Map row = new HashMap(); + row.put("plateNo", plateNo); + row.put("direction", direction); + row.put("passTime", passTime); + row.put("gateName", gateName); + row.put("driverName", driverName); + row.put("status", status); + row.put("note", note); + return row; + } +} diff --git a/src/main/java/com/sipai/controller/pipeline/PipelineDataController.java b/src/main/java/com/sipai/controller/pipeline/PipelineDataController.java index f93d7457..981b7d7f 100644 --- a/src/main/java/com/sipai/controller/pipeline/PipelineDataController.java +++ b/src/main/java/com/sipai/controller/pipeline/PipelineDataController.java @@ -74,7 +74,7 @@ public class PipelineDataController { @RequestMapping("/delete.do") public String dodelete(HttpServletRequest request, Model model, - @RequestParam(value = "id") String id) { + @RequestParam(value = "id") Long id) { int result = this.pipelineDataService.deleteById(id); model.addAttribute("result", result); return "result"; @@ -83,15 +83,14 @@ public class PipelineDataController { @RequestMapping("/deletes.do") public String dodeletes(HttpServletRequest request, Model model, @RequestParam(value = "ids") String ids) { - ids = ids.replace(",", "','"); - int result = this.pipelineDataService.deleteByWhere("where id in ('" + ids + "')"); + int result = this.pipelineDataService.deleteByWhere("where id in (" + ids + ")"); model.addAttribute("result", result); return "result"; } @RequestMapping("/edit.do") public String doedit(HttpServletRequest request, Model model, - @RequestParam(value = "id") String id) { + @RequestParam(value = "id") Long id) { PipelineData pipelineData = this.pipelineDataService.selectById(id); model.addAttribute("pipelineData", pipelineData); return "/pipeline/pipelineDataEdit"; @@ -109,7 +108,7 @@ public class PipelineDataController { @RequestMapping("/view.do") public String doview(HttpServletRequest request, Model model, - @RequestParam(value = "id") String id) { + @RequestParam(value = "id") Long id) { PipelineData pipelineData = this.pipelineDataService.selectById(id); model.addAttribute("pipelineData", pipelineData); return "/pipeline/pipelineDataView"; diff --git a/src/main/java/com/sipai/dao/base/CommDaoImpl.java b/src/main/java/com/sipai/dao/base/CommDaoImpl.java index 4516daef..e917f198 100644 --- a/src/main/java/com/sipai/dao/base/CommDaoImpl.java +++ b/src/main/java/com/sipai/dao/base/CommDaoImpl.java @@ -49,6 +49,14 @@ public class CommDaoImpl implements CommDao { T o = getSqlSession().selectOne(mappernamespace+"."+Thread.currentThread().getStackTrace()[1].getMethodName(), t); return o; } + + /** + * 根据ID查询(Long类型) + */ + public T selectByPrimaryKey(Long t){ + T o = getSqlSession().selectOne(mappernamespace+"."+Thread.currentThread().getStackTrace()[1].getMethodName(), t); + return o; + } /** * wxp为activiti测试修改 * @param t @@ -62,6 +70,13 @@ public class CommDaoImpl implements CommDao { return getSqlSession().delete(mappernamespace+"."+Thread.currentThread().getStackTrace()[1].getMethodName(), t); } + /** + * 根据ID删除(Long类型) + */ + public int deleteByPrimaryKey(Long t) { + return getSqlSession().delete(mappernamespace+"."+Thread.currentThread().getStackTrace()[1].getMethodName(), t); + } + public int insert(T t){ return getSqlSession().insert(mappernamespace+"."+Thread.currentThread().getStackTrace()[1].getMethodName(), t); } diff --git a/src/main/java/com/sipai/mapper/pipeline/PipelineDataMapper.xml b/src/main/java/com/sipai/mapper/pipeline/PipelineDataMapper.xml index ccaf5688..d4aa72fd 100644 --- a/src/main/java/com/sipai/mapper/pipeline/PipelineDataMapper.xml +++ b/src/main/java/com/sipai/mapper/pipeline/PipelineDataMapper.xml @@ -16,32 +16,30 @@ id, pipeline_name, diameter_mm, length_m, start_burial_depth_m, end_burial_depth_m, start_ground_elevation_m, end_ground_elevation_m, pipeline_invert_elevation_m - select - from pipeline_data - where id = #{id,jdbcType=VARCHAR} + from tb_pipeline_data + where id = #{id,jdbcType=BIGINT} - - delete from pipeline_data - where id = #{id,jdbcType=VARCHAR} + + delete from tb_pipeline_data + where id = #{id,jdbcType=BIGINT} - - insert into pipeline_data (id, pipeline_name, diameter_mm, + + insert into tb_pipeline_data (pipeline_name, diameter_mm, length_m, start_burial_depth_m, end_burial_depth_m, start_ground_elevation_m, end_ground_elevation_m, pipeline_invert_elevation_m) - values (#{id,jdbcType=VARCHAR}, #{pipelineName,jdbcType=VARCHAR}, #{diameterMm,jdbcType=DECIMAL}, + values (#{pipelineName,jdbcType=VARCHAR}, #{diameterMm,jdbcType=DECIMAL}, #{lengthM,jdbcType=DECIMAL}, #{startBurialDepthM,jdbcType=DECIMAL}, #{endBurialDepthM,jdbcType=DECIMAL}, #{startGroundElevationM,jdbcType=DECIMAL}, #{endGroundElevationM,jdbcType=DECIMAL}, #{pipelineInvertElevationM,jdbcType=DECIMAL}) - - insert into pipeline_data + + insert into tb_pipeline_data - - id, - + pipeline_name, @@ -68,9 +66,7 @@ - - #{id,jdbcType=VARCHAR}, - + #{pipelineName,jdbcType=VARCHAR}, @@ -98,7 +94,7 @@ - update pipeline_data + update tb_pipeline_data pipeline_name = #{pipelineName,jdbcType=VARCHAR}, @@ -125,10 +121,10 @@ pipeline_invert_elevation_m = #{pipelineInvertElevationM,jdbcType=DECIMAL}, - where id = #{id,jdbcType=VARCHAR} + where id = #{id,jdbcType=BIGINT} - update pipeline_data + update tb_pipeline_data set pipeline_name = #{pipelineName,jdbcType=VARCHAR}, diameter_mm = #{diameterMm,jdbcType=DECIMAL}, length_m = #{lengthM,jdbcType=DECIMAL}, @@ -137,17 +133,17 @@ start_ground_elevation_m = #{startGroundElevationM,jdbcType=DECIMAL}, end_ground_elevation_m = #{endGroundElevationM,jdbcType=DECIMAL}, pipeline_invert_elevation_m = #{pipelineInvertElevationM,jdbcType=DECIMAL} - where id = #{id,jdbcType=VARCHAR} + where id = #{id,jdbcType=BIGINT} delete from - pipeline_data + tb_pipeline_data ${where} diff --git a/src/main/java/com/sipai/service/pipeline/PipelineDataService.java b/src/main/java/com/sipai/service/pipeline/PipelineDataService.java index af267eaf..7e05d3c3 100644 --- a/src/main/java/com/sipai/service/pipeline/PipelineDataService.java +++ b/src/main/java/com/sipai/service/pipeline/PipelineDataService.java @@ -19,11 +19,25 @@ public class PipelineDataService implements CommService { return pipelineData; } + /** + * 根据ID查询(Long类型) + */ + public PipelineData selectById(Long id) { + return pipelineDataDao.selectByPrimaryKey(id); + } + @Override public int deleteById(String id) { return pipelineDataDao.deleteByPrimaryKey(id); } + /** + * 根据ID删除(Long类型) + */ + public int deleteById(Long id) { + return pipelineDataDao.deleteByPrimaryKey(id); + } + @Override public int save(PipelineData pipelineData) { return pipelineDataDao.insert(pipelineData); diff --git a/src/main/resources/es.properties b/src/main/resources/es.properties index 86073721..f7f2f6ec 100644 --- a/src/main/resources/es.properties +++ b/src/main/resources/es.properties @@ -2,8 +2,8 @@ es.nodes=127.0.0.1 #es.nodes=122.51.194.184 es.host=9300 #es.name=elastic -es.name=my-application +#es.name=elasticsearch #es.name=elasticsearch-sipaiis - +es.name=my-application diff --git a/src/main/resources/redis.properties b/src/main/resources/redis.properties index da61caaf..d86b5c6b 100644 --- a/src/main/resources/redis.properties +++ b/src/main/resources/redis.properties @@ -1,10 +1,10 @@ #redis���� -#redis.host=122.51.194.184 - redis.host=127.0.0.1 +redis.host=122.51.194.184 +# redis.host=127.0.0.1 #����single ��Ⱥcluster redis.mode=single -#redis.port=26739 - redis.port=6379 +redis.port=26739 +# redis.port=6379 redis.password=Aa112211 redis.maxIdle=100 redis.maxActive=300 diff --git a/src/main/webapp/CSS/module/jsyw-vehicle-gate.css b/src/main/webapp/CSS/module/jsyw-vehicle-gate.css new file mode 100644 index 00000000..65345a66 --- /dev/null +++ b/src/main/webapp/CSS/module/jsyw-vehicle-gate.css @@ -0,0 +1,39 @@ +.gate-summary-row .small-box { + margin-bottom: 12px; +} + +.gate-summary-row .small-box .icon { + top: 4px; +} + +.gate-search-line { + margin-bottom: 12px; +} + +.gate-input { + width: 170px; + margin-right: 8px; + margin-bottom: 8px; +} + +.gate-detail-line { + line-height: 28px; + font-size: 13px; +} + +.gate-detail-line span:first-child { + color: #666; + display: inline-block; + width: 72px; +} + +.gate-photo-placeholder { + margin-top: 12px; + border: 1px dashed #d2d6de; + background: #fafafa; + color: #999; + text-align: center; + line-height: 120px; + height: 120px; +} + diff --git a/src/main/webapp/JS/comm.js b/src/main/webapp/JS/comm.js index 63447865..c8ce9394 100644 --- a/src/main/webapp/JS/comm.js +++ b/src/main/webapp/JS/comm.js @@ -532,9 +532,9 @@ function initMenu() { // 注意:新菜单项可能直接是文本,也可能包含 i 标签 var exists = false; $treeviewMenu.find('li').each(function() { - if ($(this).text().indexOf('新源头GIS管理') > -1) { - exists = true; - } + // if ($(this).text().indexOf('管道管理') > -1) { + // exists = true; + // } }); if (!exists) { @@ -545,9 +545,6 @@ function initMenu() { var newMenuHtml = ''; if (typeof addTab === 'function') { // 假设 addTab(id, name, url) - // /jsp/pipeline/pipelineDataList.jsp - // newMenuHtml = '
  • 新源头GIS管理
  • '; - newMenuHtml = '
  • 管道管理
  • '; } else { // 如果没有 addTab,尝试使用 iframe 加载或者直接跳转(但在框架内) // refreshPage 通常是 location.replace,这会刷新整个页面。 @@ -565,8 +562,6 @@ function initMenu() { // 所以我们应该优先使用 addTab。 // 如果 addTab 未定义(可能在 index.jsp 中定义),我们尝试模拟它。 // 由于 comm.js 被 index.jsp 引用,addTab 应该可用。 - // newMenuHtml = '
  • 新源头GIS管理
  • '; - newMenuHtml = '
  • 管道管理
  • '; } $treeviewMenu.append(newMenuHtml); diff --git a/src/main/webapp/JS/jsyw/vehicleGateList.js b/src/main/webapp/JS/jsyw/vehicleGateList.js new file mode 100644 index 00000000..cffe7e68 --- /dev/null +++ b/src/main/webapp/JS/jsyw/vehicleGateList.js @@ -0,0 +1,161 @@ +function getDirectionText(direction) { + return direction === "IN" ? "进闸" : "出闸"; +} + +function getStatusText(status) { + return status === "ABNORMAL" ? "异常" : "正常"; +} + +function getDirectionLabel(direction) { + if (direction === "IN") { + return "进闸"; + } + return "出闸"; +} + +function getStatusLabel(status) { + if (status === "ABNORMAL") { + return "异常"; + } + return "正常"; +} + +function renderSummaryByResponse(res) { + $("#summaryInCount").text(res.summaryInCount || 0); + $("#summaryOutCount").text(res.summaryOutCount || 0); + $("#summaryInsideCount").text(res.summaryInsideCount || 0); + $("#summaryAbnormalCount").text(res.summaryAbnormalCount || 0); +} + +function initGateTable() { + $("#gateTable").bootstrapTable({ + url: ext.contextPath + "/jsyw/vehicleGate/getList.do", + method: "post", + cache: false, + striped: true, + pagination: true, + pageList: [10, 20, 50], + pageSize: 10, + pageNumber: 1, + sidePagination: "server", + queryParams: function (params) { + return { + rows: params.limit, + page: params.offset / params.limit + 1, + sort: params.sort, + order: params.order, + plateNo: $.trim($("#search_plateNo").val()), + passDate: $.trim($("#search_passDate").val()), + direction: $("#search_direction").val(), + status: $("#search_status").val() + }; + }, + responseHandler: function (res) { + renderSummaryByResponse(res || {}); + return { + total: (res && res.total) ? res.total : 0, + rows: (res && res.rows) ? res.rows : [] + }; + }, + columns: [ + { + field: "plateNo", + title: "车牌号", + align: "center", + valign: "middle" + }, + { + field: "direction", + title: "通行方向", + align: "center", + valign: "middle", + formatter: function (value) { + return getDirectionLabel(value); + } + }, + { + field: "passTime", + title: "通行时间", + align: "center", + valign: "middle" + }, + { + field: "gateName", + title: "闸机", + align: "center", + valign: "middle" + }, + { + field: "driverName", + title: "司机", + align: "center", + valign: "middle" + }, + { + field: "status", + title: "状态", + align: "center", + valign: "middle", + formatter: function (value) { + return getStatusLabel(value); + } + }, + { + field: "note", + title: "备注", + align: "center", + valign: "middle" + }, + { + title: "操作", + align: "center", + valign: "middle", + width: 100, + formatter: function (value, row, index) { + return ""; + } + } + ], + onLoadSuccess: function () { + adjustBootstrapTableView("gateTable"); + } + }); +} + +function searchGateRecords() { + $("#gateTable").bootstrapTable("refresh", {pageNumber: 1}); +} + +function resetGateSearch() { + $("#search_plateNo").val(""); + $("#search_passDate").val(""); + $("#search_direction").val(""); + $("#search_status").val(""); + $("#gateTable").bootstrapTable("refresh", {pageNumber: 1}); +} + +function showGateDetail(index) { + var pageRows = $("#gateTable").bootstrapTable("getData") || []; + var row = pageRows[index]; + if (!row) { + return; + } + $("#detail_plateNo").text(row.plateNo || ""); + $("#detail_direction").text(getDirectionText(row.direction || "")); + $("#detail_passTime").text(row.passTime || ""); + $("#detail_gateName").text(row.gateName || ""); + $("#detail_driverName").text(row.driverName || ""); + $("#detail_status").text(getStatusText(row.status || "")); + $("#detail_note").text(row.note || ""); + $("#gateDetailModal").modal("show"); +} + +$(function () { + $("#search_passDate").datepicker({ + autoclose: true, + language: "zh-CN", + format: "yyyy-mm-dd" + }); + initGateTable(); +}); + diff --git a/src/main/webapp/WEB-INF/lib/sqljdbc4-4.0.jar b/src/main/webapp/WEB-INF/lib/sqljdbc4-4.0.jar new file mode 100644 index 00000000..d6b7f6da Binary files /dev/null and b/src/main/webapp/WEB-INF/lib/sqljdbc4-4.0.jar differ diff --git a/src/main/webapp/jsp/administration/attendanceRecordList.jsp b/src/main/webapp/jsp/administration/attendanceRecordList.jsp new file mode 100644 index 00000000..bfdc2bf1 --- /dev/null +++ b/src/main/webapp/jsp/administration/attendanceRecordList.jsp @@ -0,0 +1,201 @@ +<%@ page language="java" pageEncoding="UTF-8"%> +<%@ taglib uri="http://java.sun.com/jstl/core_rt" prefix="c"%> +<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn"%> +<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt"%> +<%@ page import="com.sipai.entity.base.ServerObject"%> +<%@ taglib uri="http://www.springsecurity.org/jsp" prefix="security"%> + + +<%= ServerObject.atttable.get("TOPTITLE")%> + + + + + +
    +
    +
    +

    + +
    +
    +
    +
    + +
    +
    +

    员工考勤记录

    + 当前为第三方考勤接口模拟数据(MOCK) +
    +
    +
    +
    + +
    +
    + +
    +
    + +
    +
    + +
    +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    +
    +
    + + diff --git a/src/main/webapp/jsp/bigScreen.jsp b/src/main/webapp/jsp/bigScreen.jsp index 8ddb0cfc..94df6e72 100644 --- a/src/main/webapp/jsp/bigScreen.jsp +++ b/src/main/webapp/jsp/bigScreen.jsp @@ -1,70 +1,619 @@ <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> - + - - + + 水厂大屏展示 + + + - - + +
    - +
    +
    +
    6040
    +
    4197
    +
    12356
    +
    + + +
    +
    +
    + + +
    +
    +
    0
    +
    200
    +
    4.89
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    300
    +
    200
    +
    1
    +
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    参数当前值平均值最高最低指标
    COD (mg/L)13.18612.99614.66611.920.000–20.000
    TP (mg/L)13.18612.99614.66611.920.000–20.000
    NH3–N (mg/L)13.18612.99614.66611.920.000–20.000
    TN (mg/L)13.18612.99614.66611.920.000–20.000
    PH (mg/L)13.18612.99614.66611.920.000–20.000
    SS13.18612.99614.66611.920.000–20.000
    温度(℃)13.18612.99614.66611.920.000–20.000
    +
    + +
    +
    +
    +
    + +
    +
    +
    +
    +
    +
    +
    +
    + + +
    + +
    + +
    + +
    + + +
    + +
    + +
    +
    +
    + + +
    - + + diff --git a/src/main/webapp/jsp/bigScreen2.jsp b/src/main/webapp/jsp/bigScreen2.jsp index 943a1ecc..612bc938 100644 --- a/src/main/webapp/jsp/bigScreen2.jsp +++ b/src/main/webapp/jsp/bigScreen2.jsp @@ -1,462 +1,574 @@ -<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> - +<%@ page language="java" contentType="text/html; charset=UTF-8" +pageEncoding="UTF-8"%> + - - + + 区域管线大屏展示 - + - - + +
    -
    53829.5
    -
    2495
    -
    2460
    - -
    -
    -
    -
    - -
    -
    -
    -
    - -
    -
    -
    -
    - -
    -
    -
    -
    - -
    -
    -
    -
    - -
    -
    -
    -
    +
    53829.5
    +
    2495
    +
    2460
    + +
    +
    +
    +
    + +
    +
    +
    +
    + +
    +
    +
    +
    + +
    +
    +
    +
    + +
    +
    +
    +
    + +
    +
    +
    +
    - + diff --git a/src/main/webapp/jsp/bigScreen3.jsp b/src/main/webapp/jsp/bigScreen3.jsp index 22dcb9ae..fd32e68b 100644 --- a/src/main/webapp/jsp/bigScreen3.jsp +++ b/src/main/webapp/jsp/bigScreen3.jsp @@ -1,825 +1,970 @@ -<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> - +<%@ page language="java" contentType="text/html; charset=UTF-8" +pageEncoding="UTF-8"%> + - - + + 排污户大屏展示 - - + - - + +
    -
    - -
    -
    -
    辖区排污企业总数
    -
    0
    -
    -
    -
    已接入监控
    -
    0
    -
    -
    -
    正在接入中
    -
    0
    -
    +
    + +
    +
    +
    辖区排污企业总数
    +
    + 0
    - - -
    -
    +
    +
    +
    已接入监控
    +
    + 0
    +
    +
    +
    正在接入中
    +
    + 0 +
    +
    - -
    -
    企业名称加载中...
    -
    -
    -
    污水特性: --
    -
    当前排污量: --
    -
    接入状态: --
    -
    -
    - 现场照片 -
    现场监控画面
    -
    -
    -
    -
    -
    瞬时排污量历史曲线 (近3天)
    -
    -
    -
    -
    累计流量历史曲线 (日差值 - 近14天)
    -
    -
    -
    + +
    +
    - - -
    -
    +
    + + +
    +
    + 企业名称加载中...
    +
    +
    +
    + 污水特性: -- +
    +
    + 当前排污量: -- +
    +
    + 接入状态: -- +
    +
    +
    + 现场照片 +
    现场监控画面
    +
    +
    +
    +
    +
    瞬时排污量历史曲线 (近3天)
    +
    +
    +
    +
    累计流量历史曲线 (日差值 - 近14天)
    +
    +
    +
    +
    + + +
    +
    +
    - - + + diff --git a/src/main/webapp/jsp/jsyw/vehicleGateList.jsp b/src/main/webapp/jsp/jsyw/vehicleGateList.jsp new file mode 100644 index 00000000..0da09a75 --- /dev/null +++ b/src/main/webapp/jsp/jsyw/vehicleGateList.jsp @@ -0,0 +1,122 @@ +<%@ page language="java" pageEncoding="UTF-8" %> +<%@ taglib uri="http://java.sun.com/jstl/core_rt" prefix="c" %> +<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %> +<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %> +<%@ page import="com.sipai.entity.base.ServerObject" %> + + + <%= ServerObject.atttable.get("TOPTITLE")%> + + + + + + +
    +
    +
    +

    + +
    +
    +
    + +
    +
    +
    +
    +

    0

    +

    今日进闸

    +
    +
    +
    +
    +
    +
    +
    +

    0

    +

    今日出闸

    +
    +
    +
    +
    +
    +
    +
    +

    0

    +

    当前场内车辆

    +
    +
    +
    +
    +
    +
    +
    +

    0

    +

    异常记录

    +
    +
    +
    +
    +
    + +
    +
    +

    车辆通行记录(静态展示)

    +
    +
    +
    +
    + + + + + + +
    +
    +
    +
    +
    +
    +
    +
    + + + + + diff --git a/src/main/webapp/jsp/main_JS_Company.jsp b/src/main/webapp/jsp/main_JS_Company.jsp index 8c9e4e92..099eaeb3 100644 --- a/src/main/webapp/jsp/main_JS_Company.jsp +++ b/src/main/webapp/jsp/main_JS_Company.jsp @@ -179,7 +179,7 @@
    - 上海金山卫污水公司 + 上海金山卫污水公司11
    diff --git a/src/main/webapp/jsp/z_bigScreen/bigScreen1.html b/src/main/webapp/jsp/z_bigScreen/bigScreen1.html index a470a568..6147efe1 100644 --- a/src/main/webapp/jsp/z_bigScreen/bigScreen1.html +++ b/src/main/webapp/jsp/z_bigScreen/bigScreen1.html @@ -1,581 +1,617 @@ - + - - + + 水厂大屏展示 - + - - + +
    -
    -
    -
    6040
    -
    4197
    -
    12356
    -
    - - -
    -
    -
    - - -
    -
    -
    0
    -
    200
    -
    4.89
    -
    -
    -
    -
    -
    -
    -
    -
    - -
    -
    300
    -
    200
    -
    1
    -
    - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    参数当前值平均值最高最低指标
    COD (mg/L)13.18612.99614.66611.920.000–20.000
    TP (mg/L)13.18612.99614.66611.920.000–20.000
    NH3–N (mg/L)13.18612.99614.66611.920.000–20.000
    TN (mg/L)13.18612.99614.66611.920.000–20.000
    PH (mg/L)13.18612.99614.66611.920.000–20.000
    SS13.18612.99614.66611.920.000–20.000
    温度(℃)13.18612.99614.66611.920.000–20.000
    -
    - -
    -
    -
    -
    - -
    -
    -
    -
    -
    -
    -
    -
    - - -
    - -
    - -
    - -
    - - -
    - -
    - -
    -
    +
    +
    +
    6040
    +
    4197
    +
    12356
    - -
    - + +
    +
    + + +
    +
    +
    0
    +
    200
    +
    4.89
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    300
    +
    200
    +
    1
    +
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    参数当前值平均值最高最低指标
    COD (mg/L)13.18612.99614.66611.920.000–20.000
    TP (mg/L)13.18612.99614.66611.920.000–20.000
    NH3–N (mg/L)13.18612.99614.66611.920.000–20.000
    TN (mg/L)13.18612.99614.66611.920.000–20.000
    PH (mg/L)13.18612.99614.66611.920.000–20.000
    SS13.18612.99614.66611.920.000–20.000
    温度(℃)13.18612.99614.66611.920.000–20.000
    +
    + +
    +
    +
    +
    + +
    +
    +
    +
    +
    +
    +
    +
    + + +
    + +
    + +
    + +
    + + +
    + +
    + +
    +
    +
    + + +
    - + diff --git a/src/main/webapp/jsp/z_bigScreen/bigScreen2.html b/src/main/webapp/jsp/z_bigScreen/bigScreen2.html index 300a19af..0de6b864 100644 --- a/src/main/webapp/jsp/z_bigScreen/bigScreen2.html +++ b/src/main/webapp/jsp/z_bigScreen/bigScreen2.html @@ -1,462 +1,574 @@ -<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> - +<%@ page language="java" contentType="text/html; charset=UTF-8" +pageEncoding="UTF-8"%> + - - + + 区域管线大屏展示 - + - - + +
    -
    53829.5
    -
    2495
    -
    2460
    - -
    -
    -
    -
    - -
    -
    -
    -
    - -
    -
    -
    -
    - -
    -
    -
    -
    - -
    -
    -
    -
    - -
    -
    -
    -
    +
    53829.5
    +
    2495
    +
    2460
    + +
    +
    +
    +
    + +
    +
    +
    +
    + +
    +
    +
    +
    + +
    +
    +
    +
    + +
    +
    +
    +
    + +
    +
    +
    +
    - + diff --git a/src/main/webapp/jsp/z_bigScreen/bigScreen3.html b/src/main/webapp/jsp/z_bigScreen/bigScreen3.html index 91d41ad8..91b27b01 100644 --- a/src/main/webapp/jsp/z_bigScreen/bigScreen3.html +++ b/src/main/webapp/jsp/z_bigScreen/bigScreen3.html @@ -1,825 +1,970 @@ -<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> - +<%@ page language="java" contentType="text/html; charset=UTF-8" +pageEncoding="UTF-8"%> + - - + + 排污户大屏展示 - + - - + +
    -
    - -
    -
    -
    辖区排污企业总数
    -
    0
    -
    -
    -
    已接入监控
    -
    0
    -
    -
    -
    正在接入中
    -
    0
    -
    +
    + +
    +
    +
    辖区排污企业总数
    +
    + 0
    - - -
    -
    +
    +
    +
    已接入监控
    +
    + 0
    +
    +
    +
    正在接入中
    +
    + 0 +
    +
    - -
    -
    企业名称加载中...
    -
    -
    -
    污水特性: --
    -
    当前排污量: --
    -
    接入状态: --
    -
    -
    - 现场照片 -
    现场监控画面
    -
    -
    -
    -
    -
    瞬时排污量历史曲线 (近3天)
    -
    -
    -
    -
    累计流量历史曲线 (日差值 - 近14天)
    -
    -
    -
    + +
    +
    - - -
    -
    +
    + + +
    +
    + 企业名称加载中...
    +
    +
    +
    + 污水特性: -- +
    +
    + 当前排污量: -- +
    +
    + 接入状态: -- +
    +
    +
    + 现场照片 +
    现场监控画面
    +
    +
    +
    +
    +
    瞬时排污量历史曲线 (近3天)
    +
    +
    +
    +
    累计流量历史曲线 (日差值 - 近14天)
    +
    +
    +
    +
    + + +
    +
    +
    - - + +