Compare commits

15 Commits

Author SHA1 Message Date
6738104534 bug 2026-04-16 01:13:03 +08:00
e5da30098f Merge branch 'deng' of http://101.43.41.9:13000/xzzn/SIPAIIS_WMS_JSSW into deng 2026-04-14 20:13:49 +08:00
65c2a978b8 feat(main_JS_Company): 重构主配置与企业模块数据加载逻辑 2026-04-14 20:13:47 +08:00
80fa5872fd bug 2026-04-13 21:37:01 +08:00
5c576ddfcb bug 2026-04-09 14:16:18 +08:00
f89ab0f90d bug 2026-04-09 09:09:00 +08:00
78ec2cbe85 Merge branch 'deng' into deng-release 2026-04-08 19:17:05 +08:00
6c08c4fd1b bug 2026-04-08 19:15:15 +08:00
3c9ba8a7f5 feat(process): 优化工艺列表初始化与测点值异步获取 2026-04-08 01:11:01 +08:00
abdd3b7add Merge branch 'deng' into deng-release 2026-04-05 23:21:52 +08:00
ebe3148a58 bug 2026-04-05 23:21:30 +08:00
6d5c8bfd65 fix(file): 优化文件上传及预览逻辑,完善当前用户信息设置 2026-04-05 22:36:07 +08:00
0c8b530339 bug 2026-04-05 22:16:12 +08:00
b9d6a7458f bug 2026-04-04 14:00:29 +08:00
784ac30847 style(webapp): 注释和调整前端页面部分元素及代码 2026-04-04 01:22:16 +08:00
55 changed files with 1562 additions and 81335 deletions

24
pom.xml
View File

@ -21,6 +21,12 @@
<!-- 数据<E695B0>?--> <!-- 数据<E695B0>?-->
</properties> </properties>
<dependencies> <dependencies>
<dependency>
<groupId>net.java.dev.jna</groupId>
<artifactId>jna</artifactId>
<version>5.4.0</version>
</dependency>
<!-- spring核心<E6A0B8>?--> <!-- spring核心<E6A0B8>?-->
<dependency> <dependency>
<groupId>org.springframework</groupId> <groupId>org.springframework</groupId>
@ -781,11 +787,11 @@
<version>1.6.1</version> <version>1.6.1</version>
</dependency> </dependency>
<!-- jna --> <!-- jna -->
<dependency> <!-- <dependency>-->
<groupId>net.java.dev.jna</groupId> <!-- <groupId>net.java.dev.jna</groupId>-->
<artifactId>jna</artifactId> <!-- <artifactId>jna</artifactId>-->
<version>1.0</version> <!-- <version>1.0</version>-->
</dependency> <!-- </dependency>-->
<!-- jna examples --> <!-- jna examples -->
<dependency> <dependency>
<groupId>net.java.dev.jna</groupId> <groupId>net.java.dev.jna</groupId>
@ -796,6 +802,14 @@
<build> <build>
<finalName>TGLW</finalName> <finalName>TGLW</finalName>
<resources> <resources>
<!-- <resource>-->
<!-- <directory>libs/win64</directory>-->
<!-- <targetPath>win64</targetPath>-->
<!-- <includes>-->
<!-- <include>*.dll</include>-->
<!-- </includes>-->
<!-- <filtering>false</filtering>-->
<!-- </resource>-->
<resource> <resource>
<directory>src/main/java</directory> <directory>src/main/java</directory>
<includes> <includes>

View File

@ -1,9 +0,0 @@
package com.sipai.activiti;
public class Test {
public static void main(String[] args) {
int a = 3;
int b = 3;
System.out.println(a % b);
}
}

View File

@ -2217,12 +2217,27 @@ public class EquipmentCardController {
HttpServletResponse response, Model model) throws IOException { HttpServletResponse response, Model model) throws IOException {
String wherestr = " where 1=1 "; String wherestr = " where 1=1 ";
String unitId = request.getParameter("unitId"); String unitId = request.getParameter("unitId");
if (unitId == null || unitId.isEmpty()) {
unitId = request.getParameter("companyId");
}
String search_name = request.getParameter("search_name"); String search_name = request.getParameter("search_name");
if (search_name == null || search_name.trim().isEmpty()) {
search_name = request.getParameter("equipmentName");
}
String processSectionId = request.getParameter("processSectionId"); String processSectionId = request.getParameter("processSectionId");
if (processSectionId == null || processSectionId.trim().isEmpty() || "undefined".equals(processSectionId)) {
processSectionId = request.getParameter("processSection");
}
String equipmentClassId = request.getParameter("equipmentClassId"); String equipmentClassId = request.getParameter("equipmentClassId");
if (equipmentClassId == null || equipmentClassId.trim().isEmpty() || "undefined".equals(equipmentClassId)) {
equipmentClassId = request.getParameter("search_pid1");
}
String equipmentLevel = request.getParameter("equipmentLevel"); String equipmentLevel = request.getParameter("equipmentLevel");
String equipmentClassCode = request.getParameter("equipmentClassCode");//类似竹一的计量表 该页面仅显示一种设备类型的 String equipmentClassCode = request.getParameter("equipmentClassCode");//类似竹一的计量表 该页面仅显示一种设备类型的
String ids = request.getParameter("ids");//页面勾选的设备id String ids = request.getParameter("ids");//页面勾选的设备id
if (ids == null || ids.trim().isEmpty()) {
ids = request.getParameter("equipmentIds");
}
if (unitId != null && !unitId.isEmpty()) { if (unitId != null && !unitId.isEmpty()) {
//获取公司下所有子节点 //获取公司下所有子节点
@ -2272,6 +2287,26 @@ public class EquipmentCardController {
// System.out.println(wherestr); // System.out.println(wherestr);
if (ids != null && !ids.trim().isEmpty()) {
// 兼容前端可能携带的首尾逗号与空白,确保仅导出选中设备。
String[] idArr = ids.split(",");
StringBuilder selectedIds = new StringBuilder();
for (String id : idArr) {
if (id != null) {
String trimmedId = id.trim();
if (!trimmedId.isEmpty()) {
if (selectedIds.length() > 0) {
selectedIds.append("','");
}
selectedIds.append(trimmedId);
}
}
}
if (selectedIds.length() > 0) {
wherestr += " and id in ('" + selectedIds + "') ";
}
}
List<EquipmentCard> equipmentCards = this.equipmentCardService.selectListByWhere(wherestr); List<EquipmentCard> equipmentCards = this.equipmentCardService.selectListByWhere(wherestr);
//导出文件到指定目录,兼容Linux //导出文件到指定目录,兼容Linux
this.equipmentCardService.downloadEquipmentExcel(response, equipmentCards); this.equipmentCardService.downloadEquipmentExcel(response, equipmentCards);

View File

@ -104,7 +104,7 @@ public class KpiPlanController {
if (StringUtils.isNotBlank(positonTypeList)) { if (StringUtils.isNotBlank(positonTypeList)) {
wherestr += " and j.level_type = " + positonTypeList; wherestr += " and j.level_type = " + positonTypeList;
} }
wherestr += "and p.create_user_id ='" + id + "'"; wherestr += " and p.create_user_id ='" + id + "'";
PageHelper.startPage(page, rows); PageHelper.startPage(page, rows);
List<KpiPlan> list = kpiPlanService.selectListByWhere(wherestr + orderstr); List<KpiPlan> list = kpiPlanService.selectListByWhere(wherestr + orderstr);
@ -387,7 +387,8 @@ public class KpiPlanController {
@RequestMapping("/export.do") @RequestMapping("/export.do")
public void export(HttpServletRequest request, HttpServletResponse response, public void export(HttpServletRequest request, HttpServletResponse response,
@RequestParam(value = "periodTypeName", required = false) String periodTypeList, @RequestParam(value = "periodTypeName", required = false) String periodTypeList,
@RequestParam(value = "positionType", required = false) String positonTypeList) throws IOException { @RequestParam(value = "positionType", required = false) String positonTypeList,
@RequestParam(value = "ids", required = false) String ids) throws IOException {
// 摘自列表查询接口 start // 摘自列表查询接口 start
User cu = (User) request.getSession().getAttribute("cu"); User cu = (User) request.getSession().getAttribute("cu");
String id = cu.getId(); String id = cu.getId();
@ -399,6 +400,10 @@ public class KpiPlanController {
if (StringUtils.isNotBlank(positonTypeList) && !"null".equals(positonTypeList)) { if (StringUtils.isNotBlank(positonTypeList) && !"null".equals(positonTypeList)) {
wherestr += " and j.level_type = " + positonTypeList; wherestr += " and j.level_type = " + positonTypeList;
} }
if (StringUtils.isNotBlank(ids)) {
String idstr = ids.replace("'", "").replace(",", "','");
wherestr += " and p.id in ('" + idstr + "')";
}
wherestr += "and p.create_user_id ='" + id + "'"; wherestr += "and p.create_user_id ='" + id + "'";
List<KpiPlan> list = kpiPlanService.selectListByWhere(wherestr + orderstr); List<KpiPlan> list = kpiPlanService.selectListByWhere(wherestr + orderstr);

View File

@ -122,14 +122,14 @@ public class RptDayLogController {
@RequestParam(value = "rptdt") String rptdt) throws IOException { @RequestParam(value = "rptdt") String rptdt) throws IOException {
User cu = (User) request.getSession().getAttribute("cu"); User cu = (User) request.getSession().getAttribute("cu");
String userId = cu.getId(); String userId = cu.getId();
// 权限验证:检查用户是否有填报权限 // 权限验证:检查用户是否有填报权限
if (!this.rptDayLogService.checkInputPermission(rptdeptId, cu)) { // if (!this.rptDayLogService.checkInputPermission(rptdeptId, cu)) {
Result result = Result.failed("您没有该报表的填报权限"); // Result result = Result.failed("您没有该报表的填报权限");
model.addAttribute("result", CommUtil.toJson(result)); // model.addAttribute("result", CommUtil.toJson(result));
return "result"; // return "result";
} // }
JSONObject jsonObject = this.rptDayLogService.getJson(null,rptdeptId,rptdt,userId); JSONObject jsonObject = this.rptDayLogService.getJson(null,rptdeptId,rptdt,userId);
Result result = Result.success(jsonObject); Result result = Result.success(jsonObject);
@ -251,6 +251,29 @@ public class RptDayLogController {
@RequestMapping("/dodeletes.do") @RequestMapping("/dodeletes.do")
public String dodels(HttpServletRequest request,Model model, public String dodels(HttpServletRequest request,Model model,
@RequestParam(value="ids") String ids){ @RequestParam(value="ids") String ids){
// User cu = (User) request.getSession().getAttribute("cu");
// String userId = cu.getId();
// 获取rptdeptId假设从参数或第一个ID推断
// String rptdeptId = request.getParameter("rptdeptId");
// if (rptdeptId == null || rptdeptId.isEmpty()) {
// // 如果没有提供rptdeptId从第一个ID获取
// String[] idArray = ids.split(",");
// if (idArray.length > 0) {
// RptDayLog rptDayLog = this.rptDayLogService.selectById(idArray[0]);
// if (rptDayLog != null) {
// rptdeptId = rptDayLog.getRptdeptId();
// }
// }
// }
// 权限验证:检查用户是否有生成权限
// if (!this.rptDayLogService.checkGeneratePermission(rptdeptId, cu)) {
// Result result = Result.failed("您没有该报表的删除权限,无法删除");// 生成权限=删除权限
// model.addAttribute("result", CommUtil.toJson(result));
// return "result";
// }
String[] idArray = ids.split(","); String[] idArray = ids.split(",");
try { try {
for (int i = 0; i < idArray.length; i++) { for (int i = 0; i < idArray.length; i++) {

View File

@ -134,6 +134,12 @@ public class SewageController {
public String dosave(HttpServletRequest request,Model model, public String dosave(HttpServletRequest request,Model model,
@ModelAttribute Sewage sewage) { @ModelAttribute Sewage sewage) {
User cu = (User) request.getSession().getAttribute("cu"); User cu = (User) request.getSession().getAttribute("cu");
String contractNumber = sewage.getContractNumber() == null ? null : sewage.getContractNumber().trim();
sewage.setContractNumber(contractNumber);
if (this.sewageService.existsByContractNumber(contractNumber)) {
model.addAttribute("result", "{\"res\":\"合同编号已存在,不可重复\"}");
return "result";
}
sewage.setId(CommUtil.getUUID()); sewage.setId(CommUtil.getUUID());
int result = this.sewageService.save(sewage); int result = this.sewageService.save(sewage);
String resultstr = "{\"res\":\""+result+"\",\"id\":\""+sewage.getId()+"\"}"; String resultstr = "{\"res\":\""+result+"\",\"id\":\""+sewage.getId()+"\"}";
@ -193,6 +199,12 @@ public class SewageController {
public String doupdate(HttpServletRequest request,Model model, public String doupdate(HttpServletRequest request,Model model,
@ModelAttribute Sewage sewage) { @ModelAttribute Sewage sewage) {
User cu = (User) request.getSession().getAttribute("cu"); User cu = (User) request.getSession().getAttribute("cu");
String contractNumber = sewage.getContractNumber() == null ? null : sewage.getContractNumber().trim();
sewage.setContractNumber(contractNumber);
if (this.sewageService.existsByContractNumberExcludeId(contractNumber, sewage.getId())) {
model.addAttribute("result", "{\"res\":\"合同编号已存在,不可重复\"}");
return "result";
}
int result = this.sewageService.update(sewage); int result = this.sewageService.update(sewage);
String resstr="{\"res\":\""+result+"\",\"id\":\""+sewage.getId()+"\"}"; String resstr="{\"res\":\""+result+"\",\"id\":\""+sewage.getId()+"\"}";
model.addAttribute("result", resstr); model.addAttribute("result", resstr);
@ -348,7 +360,8 @@ public class SewageController {
@RequestMapping(value = "downloadExcelFun.do") @RequestMapping(value = "downloadExcelFun.do")
public ModelAndView downloadExcelFun(HttpServletRequest request, public ModelAndView downloadExcelFun(HttpServletRequest request,
HttpServletResponse response, Model model) throws IOException { HttpServletResponse response, Model model) throws IOException {
this.sewageService.outExcelFun(response); String ids = request.getParameter("ids");
this.sewageService.outExcelFun(response, ids);
return null; return null;
} }

View File

@ -242,11 +242,20 @@ public class ProcessSectionController {
@RequestMapping("/getProcessSection4Select.do") @RequestMapping("/getProcessSection4Select.do")
public String getProcessSection4Select(HttpServletRequest request, Model model) { public String getProcessSection4Select(HttpServletRequest request, Model model) {
String companyId = request.getParameter("companyId"); // 默认查询JSBZ??? String companyId = request.getParameter("companyId"); // 默认查询JSBZ???
// 使用unitService获取Unit信息因为companyId来自tb_unit // companyId在不同页面可能来自tb_unit或tb_company统一兼容两种来源
Unit unit = this.unitService.getUnitById(companyId); Unit unit = this.unitService.getUnitById(companyId);
String unitType = null;
if (unit != null) {
unitType = unit.getType();
} else if (companyId != null && !companyId.isEmpty()) {
Company company = this.unitService.getCompById(companyId);
if (company != null) {
unitType = company.getType();
}
}
String wherestr = "where 1=1 and active='" + CommString.Active_True + "' "; String wherestr = "where 1=1 and active='" + CommString.Active_True + "' ";
if (unit != null && unit.getType().equals(CommString.UNIT_TYPE_COMPANY)) { // "C";//公司 if (CommString.UNIT_TYPE_COMPANY.equals(unitType)) { // "C";//公司
String bizs = "";//公司下属所有厂id String bizs = "";//公司下属所有厂id
List<Unit> blist = this.unitService.getParentCompanyChildrenBizByUnitid(companyId); List<Unit> blist = this.unitService.getParentCompanyChildrenBizByUnitid(companyId);
if (blist != null && blist.size() > 0) { if (blist != null && blist.size() > 0) {
@ -258,7 +267,7 @@ public class ProcessSectionController {
} }
bizs = bizs.replace(",", "','"); bizs = bizs.replace(",", "','");
wherestr += " and (unit_id='" + ProcessSection.UnitId_Sys + "' or (code not in (select code from tb_process_section where unit_id='" + ProcessSection.UnitId_Sys + "')) and unit_id in ('" + bizs + "') ) "; wherestr += " and (unit_id='" + ProcessSection.UnitId_Sys + "' or (code not in (select code from tb_process_section where unit_id='" + ProcessSection.UnitId_Sys + "')) and unit_id in ('" + bizs + "') ) ";
} else if (unit != null && unit.getType().equals(CommString.UNIT_TYPE_BIZ)) { // B 水厂 } else if (CommString.UNIT_TYPE_BIZ.equals(unitType)) { // B 水厂
wherestr += " and unit_id='" + companyId + "' "; wherestr += " and unit_id='" + companyId + "' ";
} }
if (request.getParameter("search_name") != null && !request.getParameter("search_name").isEmpty()) { if (request.getParameter("search_name") != null && !request.getParameter("search_name").isEmpty()) {
@ -273,13 +282,16 @@ public class ProcessSectionController {
for (int i = 0; i < processSections.size(); i++) { for (int i = 0; i < processSections.size(); i++) {
JSONObject jsonObject = new JSONObject(); JSONObject jsonObject = new JSONObject();
jsonObject.put("id", processSections.get(i).getCode()); jsonObject.put("id", processSections.get(i).getCode());
if (unit != null && unit.getType().equals(CommString.UNIT_TYPE_COMPANY)) { // "C";//公司 if (CommString.UNIT_TYPE_COMPANY.equals(unitType)) { // "C";//公司
if (!processSections.get(i).getUnitId().equals(ProcessSection.UnitId_Sys)) { if (!processSections.get(i).getUnitId().equals(ProcessSection.UnitId_Sys)) {
jsonObject.put("text", processSections.get(i).getSname() + "(" + processSections.get(i).getCompanySname() + ")"); jsonObject.put("text", processSections.get(i).getSname() + "(" + processSections.get(i).getCompanySname() + ")");
} else { } else {
jsonObject.put("text", processSections.get(i).getSname()); jsonObject.put("text", processSections.get(i).getSname());
} }
} else if (unit != null && unit.getType().equals(CommString.UNIT_TYPE_BIZ)) { // "B";//水厂 } else if (CommString.UNIT_TYPE_BIZ.equals(unitType)) { // "B";//水厂
jsonObject.put("text", processSections.get(i).getSname());
} else {
// 兜底避免前端下拉出现有id无text导致显示为空
jsonObject.put("text", processSections.get(i).getSname()); jsonObject.put("text", processSections.get(i).getSname());
} }

View File

@ -89,11 +89,26 @@ public class KPIPointController {
// List<MPointHistory> lists = mPointHistoryService.selectListByTableAWhere("tb_mp_11_GNJ1_F","MeasureDT='2016-01-10 10:16:57'"); // List<MPointHistory> lists = mPointHistoryService.selectListByTableAWhere("tb_mp_11_GNJ1_F","MeasureDT='2016-01-10 10:16:57'");
// int dd= mPointHistoryService.deleteByTableAWhere("tb_mp_11_GNJ1_F","MeasureDT='2016-01-10 10:16:57'"); // int dd= mPointHistoryService.deleteByTableAWhere("tb_mp_11_GNJ1_F","MeasureDT='2016-01-10 10:16:57'");
for (int i=0; i < list.size(); i++) { for (int i=0; i < list.size(); i++) {
ProcessSection processSection = this.processSectionService.selectById(list.get(i).getProcesssectionid()); String rawBizId = list.get(i).getBizid();
ProcessSection processSection = this.processSectionService.selectById(list.get(i).getProcesssectionid());
if (processSection == null && list.get(i).getProcesssectionid() != null && !list.get(i).getProcesssectionid().isEmpty()) {
// KPI里历史数据存在按code保存工艺段的场景优先按厂区code匹配再回退到系统库
List<ProcessSection> processSectionList = this.processSectionService.selectSimpleListByWhere(
"where code='" + list.get(i).getProcesssectionid() + "' and unit_id='" + rawBizId + "' "
);
if (processSectionList == null || processSectionList.isEmpty()) {
processSectionList = this.processSectionService.selectSimpleListByWhere(
"where code='" + list.get(i).getProcesssectionid() + "' and unit_id='" + ProcessSection.UnitId_Sys + "' "
);
}
if (processSectionList != null && !processSectionList.isEmpty()) {
processSection = processSectionList.get(0);
}
}
if (processSection != null) { if (processSection != null) {
list.get(i).setProcessectionname(processSection.getName()); list.get(i).setProcessectionname(processSection.getName());
} }
Company company = this.unitService.getCompById(list.get(i).getBizid()); Company company = this.unitService.getCompById(rawBizId);
if (company != null) { if (company != null) {
list.get(i).setBizid(company.getName()); list.get(i).setBizid(company.getName());
} }

View File

@ -481,7 +481,7 @@ public class SchedulingController {
JSONArray array = new JSONArray(); JSONArray array = new JSONArray();
String[] workpeopleids = scheduling.getWorkpeople().split(","); String[] workpeopleids = scheduling.getWorkpeople().split(",");
if (workpeopleids != null && workpeopleids.length > 0) { if (workpeopleids != null && workpeopleids.length > 0) {
if (!workpeopleids[0].equals("")) { if (!userId.equals(workpeopleids[0])) {
for (int i = 0; i < workpeopleids.length; i++) { for (int i = 0; i < workpeopleids.length; i++) {
if (!userId.equals(workpeopleids[i])) { if (!userId.equals(workpeopleids[i])) {
JSONObject object = new JSONObject(); JSONObject object = new JSONObject();
@ -1156,6 +1156,10 @@ public class SchedulingController {
} }
} }
// 获取交班表单数据
List<GroupContentFormData> formDataList = this.groupContentFormDataService.selectListByWhere(" where schedulingId='" + schedulingId + "' ");
model.addAttribute("formDataList", formDataList);
model.addAttribute("scheduling", scheduling); model.addAttribute("scheduling", scheduling);
return "work/schedulingView"; return "work/schedulingView";
} }

View File

@ -1252,21 +1252,14 @@ public class WorkorderDetailController {
@RequestMapping("/doExportRepair.do") @RequestMapping("/doExportRepair.do")
public ModelAndView doExportRepair(HttpServletRequest request, public ModelAndView doExportRepair(HttpServletRequest request,
HttpServletResponse response, Model model, HttpServletResponse response, Model model,
@RequestParam(value = "ids") String ids, @RequestParam(value = "ids", required = false) String ids,
@RequestParam(value = "type") String type) throws IOException { @RequestParam(value = "type") String type) throws IOException {
if (ids != null && !ids.equals("")) { String whereStr = buildExportWhereByIdsAndType(ids, type);
String[] id = ids.split(","); try {
String workorderDetailsIds = ""; List<WorkorderDetail> workorderDetails = workorderDetailService.selectListByWhere(whereStr);
for (String s : id) { this.workorderDetailService.doExportRepair(response, workorderDetails, type);
workorderDetailsIds += "'" + s + "',"; } catch (Exception e) {
} e.printStackTrace();
String whereStr = "where id in (" + workorderDetailsIds.substring(0, workorderDetailsIds.length() - 1) + ")";
try {
List<WorkorderDetail> workorderDetails = workorderDetailService.selectListByWhere(whereStr);
this.workorderDetailService.doExportRepair(response, workorderDetails, type);
} catch (Exception e) {
e.printStackTrace();
}
} }
return null; return null;
} }
@ -1292,21 +1285,14 @@ public class WorkorderDetailController {
@RequestMapping("/doExportRepairJS.do") @RequestMapping("/doExportRepairJS.do")
public ModelAndView doExportRepairJS(HttpServletRequest request, public ModelAndView doExportRepairJS(HttpServletRequest request,
HttpServletResponse response, Model model, HttpServletResponse response, Model model,
@RequestParam(value = "ids") String ids, @RequestParam(value = "ids", required = false) String ids,
@RequestParam(value = "type") String type) throws IOException { @RequestParam(value = "type") String type) throws IOException {
if (ids != null && !ids.equals("")) { String whereStr = buildExportWhereByIdsAndType(ids, type);
String[] id = ids.split(","); try {
String workorderDetailsIds = ""; List<WorkorderDetail> workorderDetails = workorderDetailService.selectListByWhere(whereStr);
for (String s : id) { this.workorderDetailService.doExportRepairJS(response, workorderDetails, type);
workorderDetailsIds += "'" + s + "',"; } catch (Exception e) {
} e.printStackTrace();
String whereStr = "where id in (" + workorderDetailsIds.substring(0, workorderDetailsIds.length() - 1) + ")";
try {
List<WorkorderDetail> workorderDetails = workorderDetailService.selectListByWhere(whereStr);
this.workorderDetailService.doExportRepairJS(response, workorderDetails, type);
} catch (Exception e) {
e.printStackTrace();
}
} }
return null; return null;
} }
@ -1332,26 +1318,47 @@ public class WorkorderDetailController {
@RequestMapping("/doExportMain.do") @RequestMapping("/doExportMain.do")
public ModelAndView doExportMain(HttpServletRequest request, public ModelAndView doExportMain(HttpServletRequest request,
HttpServletResponse response, Model model, HttpServletResponse response, Model model,
@RequestParam(value = "ids") String ids, @RequestParam(value = "ids", required = false) String ids,
@RequestParam(value = "type") String type) throws IOException { @RequestParam(value = "type") String type) throws IOException {
if (ids != null && !ids.equals("")) { String whereStr = buildExportWhereByIdsAndType(ids, type);
String[] id = ids.split(","); try {
String workorderDetailsIds = ""; List<WorkorderDetail> workorderDetails = workorderDetailService.selectListByWhere(whereStr);
for (String s : id) { this.workorderDetailService.doExportMain(response, workorderDetails, type);
workorderDetailsIds += "'" + s + "',"; } catch (Exception e) {
} e.printStackTrace();
String whereStr = "where id in (" + workorderDetailsIds.substring(0, workorderDetailsIds.length() - 1) + ")";
// System.out.println(whereStr);
try {
List<WorkorderDetail> workorderDetails = workorderDetailService.selectListByWhere(whereStr);
this.workorderDetailService.doExportMain(response, workorderDetails, type);
} catch (Exception e) {
e.printStackTrace();
}
} }
return null; return null;
} }
private String buildExportWhereByIdsAndType(String ids, String type) {
String normalizedIds = normalizeIds(ids);
if (!normalizedIds.isEmpty()) {
String[] idArr = normalizedIds.split(",");
StringBuilder idBuilder = new StringBuilder();
for (String item : idArr) {
String id = item.trim();
if (id.isEmpty()) {
continue;
}
if (idBuilder.length() > 0) {
idBuilder.append(",");
}
idBuilder.append("'").append(id).append("'");
}
if (idBuilder.length() > 0) {
return "where id in (" + idBuilder + ")";
}
}
return "where type = '" + type + "'";
}
private String normalizeIds(String ids) {
if (ids == null || ids.trim().isEmpty()) {
return "";
}
return ids.replace("'", "").replace(" ", "").replaceAll(",+$", "");
}
/** /**
* 日历中弹出指定日期的 维修单 * 日历中弹出指定日期的 维修单
* *

View File

@ -5,6 +5,7 @@ import com.sipai.entity.sparepart.Sewage;
import org.springframework.stereotype.Repository; import org.springframework.stereotype.Repository;
import java.util.List; import java.util.List;
import java.util.Map;
@Repository @Repository
public class SewageDao extends CommDaoImpl<Sewage> { public class SewageDao extends CommDaoImpl<Sewage> {
@ -16,5 +17,13 @@ public class SewageDao extends CommDaoImpl<Sewage> {
List<Sewage> list = getSqlSession().selectList(this.getMappernamespace()+"."+Thread.currentThread().getStackTrace()[1].getMethodName(), sewage); List<Sewage> list = getSqlSession().selectList(this.getMappernamespace()+"."+Thread.currentThread().getStackTrace()[1].getMethodName(), sewage);
return list; return list;
} }
public Integer selectCountByContractNumber(String contractNumber) {
return getSqlSession().selectOne(this.getMappernamespace() + "." + Thread.currentThread().getStackTrace()[1].getMethodName(), contractNumber);
}
public Integer selectCountByContractNumberExcludeId(Map<String, String> params) {
return getSqlSession().selectOne(this.getMappernamespace() + "." + Thread.currentThread().getStackTrace()[1].getMethodName(), params);
}
} }

View File

@ -312,6 +312,17 @@
delete from TB_Sewage_Source delete from TB_Sewage_Source
${where} ${where}
</delete> </delete>
<select id="selectCountByContractNumber" resultType="java.lang.Integer" parameterType="java.lang.String" >
select count(1)
from TB_Sewage_Source
where contract_number = #{contractNumber,jdbcType=VARCHAR}
</select>
<select id="selectCountByContractNumberExcludeId" resultType="java.lang.Integer" parameterType="java.util.Map" >
select count(1)
from TB_Sewage_Source
where contract_number = #{contractNumber,jdbcType=VARCHAR}
and id != #{id,jdbcType=VARCHAR}
</select>
<select id="selectDistinctCityByWhere" resultMap="BaseResultMap" parameterType="java.lang.String" > <select id="selectDistinctCityByWhere" resultMap="BaseResultMap" parameterType="java.lang.String" >
select Distinct [city] as [city] select Distinct [city] as [city]
from TB_Sewage_Source from TB_Sewage_Source

View File

@ -20,9 +20,12 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource; import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import java.io.ByteArrayOutputStream; import java.io.ByteArrayOutputStream;
import java.io.IOException; import java.io.IOException;
import java.io.InputStream; import java.io.InputStream;
@ -377,12 +380,12 @@ public class CommonFileServiceImpl implements CommonFileService {
try { try {
// 安全获取文件名(自动检测编码) // 安全获取文件名(自动检测编码)
fileName = getSafeFileName(item); fileName = getSafeFileName(item);
// 生成MinIO安全的对象名称 // 生成MinIO安全的对象名称
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd-HH-mm-ss"); SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd-HH-mm-ss");
String timestamp = dateFormat.format(new Date()); String timestamp = dateFormat.format(new Date());
filePath = generateMinioObjectName(fileName, timestamp); filePath = generateMinioObjectName(fileName, timestamp);
InputStream in = item.getInputStream(); InputStream in = item.getInputStream();
String contentType = item.getContentType(); String contentType = item.getContentType();
minioTemplate.makeBucket(nameSpace); minioTemplate.makeBucket(nameSpace);
@ -391,7 +394,7 @@ public class CommonFileServiceImpl implements CommonFileService {
CommonFile commonFile = new CommonFile(); CommonFile commonFile = new CommonFile();
commonFile.setId(CommUtil.getUUID()); commonFile.setId(CommUtil.getUUID());
commonFile.setMasterid(masterId); commonFile.setMasterid(masterId);
// 20210105 YYJ 用于文件表绑定料节点用字段 tb_doc_file内和masterId一样 // 20210105 YYJ 用于文件表绑定<EFBFBD><EFBFBD>料节点用字段 tb_doc_file内和masterId一样
// commonFile.setPid(masterId); // commonFile.setPid(masterId);
commonFile.setFilename(fileName); // 保存原始文件名用于显示 commonFile.setFilename(fileName); // 保存原始文件名用于显示
commonFile.setType(contentType); commonFile.setType(contentType);
@ -400,6 +403,19 @@ public class CommonFileServiceImpl implements CommonFileService {
commonFile.setAbspath(filePath); // 保存MinIO对象名称 commonFile.setAbspath(filePath); // 保存MinIO对象名称
commonFile.setInsdt(CommUtil.nowDate()); commonFile.setInsdt(CommUtil.nowDate());
commonFile.setSize((int) item.getSize()); commonFile.setSize((int) item.getSize());
// 获取当前用户ID并设置
try {
ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
if (attributes != null) {
HttpServletRequest request = attributes.getRequest();
User cu = (User) request.getSession().getAttribute("cu");
if (cu != null) {
commonFile.setInsuser(cu.getId());
}
}
} catch (Exception e) {
logger.warn("无法获取当前用户信息: {}", e.getMessage());
}
res = this.insertByTable(tableName, commonFile); res = this.insertByTable(tableName, commonFile);
} catch (Exception e) { } catch (Exception e) {
logger.error("Failed to update file to MinIO for masterId: {}", masterId, e); logger.error("Failed to update file to MinIO for masterId: {}", masterId, e);

View File

@ -67,4 +67,11 @@ public interface RptDayLogService {
* @return true=有权限, false=无权限 * @return true=有权限, false=无权限
*/ */
public abstract boolean checkInputPermission(String rptdeptId, User user); public abstract boolean checkInputPermission(String rptdeptId, User user);
/** 检查用户是否有生成权限
* @param rptdeptId 填报配置id
* @param user 当前用户
* @return true=有权限, false=无权限
*/
public abstract boolean checkGeneratePermission(String rptdeptId, User user);
} }

View File

@ -71,6 +71,14 @@ public interface RptInfoSetService {
* @return * @return
*/ */
public abstract String getRptInfoSetIds(String userId, String unitId, String type); public abstract String getRptInfoSetIds(String userId, String unitId, String type);
/**
* 检查用户是否有生成权限
* @param rptInfoSetId 报表配置ID
* @param user 用户
* @return true=有权限, false=无权限
*/
public abstract boolean checkGeneratePermission(String rptInfoSetId, com.sipai.entity.user.User user);
/** /**
* *

View File

@ -17,6 +17,7 @@ import com.sipai.service.msg.MsgTypeService;
import com.sipai.service.report.RptDayLogService; import com.sipai.service.report.RptDayLogService;
import com.sipai.service.report.RptDayValSetService; import com.sipai.service.report.RptDayValSetService;
import com.sipai.service.report.RptDeptSetService; import com.sipai.service.report.RptDeptSetService;
import com.sipai.service.report.RptInfoSetService;
import com.sipai.service.scada.MPointExpandService; import com.sipai.service.scada.MPointExpandService;
import com.sipai.service.scada.MPointHistoryService; import com.sipai.service.scada.MPointHistoryService;
import com.sipai.service.scada.MPointService; import com.sipai.service.scada.MPointService;
@ -70,6 +71,9 @@ public class RptDayLogServiceImpl implements RptDayLogService {
@Resource @Resource
private UserJobService userJobService; private UserJobService userJobService;
@Resource
private RptInfoSetService rptInfoSetService;
@Override @Override
public RptDayLog selectById(String id) { public RptDayLog selectById(String id) {
RptDayLog rptDayLog =this.rptDayLogDao.selectByPrimaryKey(id); RptDayLog rptDayLog =this.rptDayLogDao.selectByPrimaryKey(id);
@ -946,4 +950,23 @@ public class RptDayLogServiceImpl implements RptDayLogService {
return false; return false;
} }
@Override
public boolean checkGeneratePermission(String rptdeptId, User user) {
if (rptdeptId == null || user == null) {
return false;
}
RptDeptSet rptDeptSet = this.rptDeptSetService.selectById(rptdeptId);
if (rptDeptSet == null) {
return false;
}
String rptInfoSetId = rptDeptSet.getBizId(); // 假设bizId是RptInfoSet的ID
if (rptInfoSetId == null || rptInfoSetId.isEmpty()) {
return false;
}
return this.rptInfoSetService.checkGeneratePermission(rptInfoSetId, user);
}
} }

View File

@ -615,4 +615,49 @@ public class RptInfoSetServiceImpl implements RptInfoSetService {
} }
return list_result; return list_result;
} }
@Override
public boolean checkGeneratePermission(String rptInfoSetId, User user) {
if (rptInfoSetId == null || user == null) {
return false;
}
RptInfoSet rptInfoSet = this.selectById(rptInfoSetId);
if (rptInfoSet == null) {
return false;
}
String userId = user.getId();
String createusers = rptInfoSet.getCreateusers();
String generatePosition = rptInfoSet.getGeneratePosition();
// 检查createusers
if (createusers != null && !createusers.isEmpty()) {
String[] userIds = createusers.split(",");
for (String uid : userIds) {
if (userId.equals(uid.trim())) {
return true;
}
}
}
// 检查generatePosition
if (generatePosition != null && !generatePosition.isEmpty()) {
// 获取当前用户的所有岗位
List<UserJob> userJobs = userJobService.selectListByWhere("where userid = '" + userId + "'");
if (userJobs != null && !userJobs.isEmpty()) {
String[] jobIds = generatePosition.split(",");
for (UserJob userJob : userJobs) {
String userJobId = userJob.getJobid();
for (String jobId : jobIds) {
if (userJobId != null && userJobId.equals(jobId.trim())) {
return true;
}
}
}
}
}
return false;
}
} }

View File

@ -1474,7 +1474,7 @@ public class MPointService {
if (DateUtil.isCellDateFormatted(cell)) { if (DateUtil.isCellDateFormatted(cell)) {
//用于转化为日期格式 //用于转化为日期格式
Date d = cell.getDateCellValue(); Date d = cell.getDateCellValue();
SimpleDateFormat formater = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss"); SimpleDateFormat formater = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String cellDate = formater.format(d); String cellDate = formater.format(d);
return cellDate; return cellDate;
} else { } else {
@ -1510,7 +1510,7 @@ public class MPointService {
if (DateUtil.isCellDateFormatted(cell)) { if (DateUtil.isCellDateFormatted(cell)) {
//用于转化为日期格式 //用于转化为日期格式
Date d = cell.getDateCellValue(); Date d = cell.getDateCellValue();
SimpleDateFormat formater = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss"); SimpleDateFormat formater = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String cellDate = formater.format(d); String cellDate = formater.format(d);
return cellDate; return cellDate;
} else { } else {

View File

@ -26,24 +26,27 @@ import java.io.InputStream;
import java.io.OutputStream; import java.io.OutputStream;
import java.net.URLEncoder; import java.net.URLEncoder;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date; import java.util.Date;
import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map;
import static org.apache.poi.ss.usermodel.CellType.STRING; import static org.apache.poi.ss.usermodel.CellType.STRING;
@Service @Service
public class SewageService implements CommService<Sewage>{ public class SewageService implements CommService<Sewage> {
@Resource @Resource
private SewageDao SewageDao; private SewageDao SewageDao;
@Resource @Resource
private UnitService unitService; private UnitService unitService;
@Resource @Resource
private CompanyService companyService; private CompanyService companyService;
@Resource @Resource
private ProcessSectionService processSectionService; private ProcessSectionService processSectionService;
@Resource @Resource
private SewageInputService sewageInputService; private SewageInputService sewageInputService;
@Resource @Resource
private JsywPointService jsywPointService; private JsywPointService jsywPointService;
@ -62,84 +65,108 @@ public class SewageService implements CommService<Sewage>{
} }
return null; return null;
} }
@Override @Override
public Sewage selectById(String id) { public Sewage selectById(String id) {
Sewage sewage = SewageDao.selectByPrimaryKey(id); Sewage sewage = SewageDao.selectByPrimaryKey(id);
sewage.setCompany(this.unitService.getCompById(sewage.getUnitId())); sewage.setCompany(this.unitService.getCompById(sewage.getUnitId()));
ProcessSection processSection = this.getProcessSectionByStoredValue(sewage.getProcessSectionId()); ProcessSection processSection = this.getProcessSectionByStoredValue(sewage.getProcessSectionId());
if (processSection != null) { if (processSection != null) {
sewage.setProcessSection(processSection); sewage.setProcessSection(processSection);
} }
List<SewageInput> sewageInputList = this.sewageInputService.selectListByWhere("where sewage_id='"+sewage.getContractNumber()+"' order by insdt"); List<SewageInput> sewageInputList = this.sewageInputService.selectListByWhere("where sewage_id='" + sewage.getContractNumber() + "' order by insdt");
if(sewageInputList!=null && sewageInputList.size()>0){ if (sewageInputList != null && sewageInputList.size() > 0) {
sewage.set_input(true); sewage.set_input(true);
}else{ } else {
sewage.set_input(false); sewage.set_input(false);
} }
List<JsywPoint> jsywPointList = this.jsywPointService.selectListByWhere("where psname='"+sewage.getName()+"' order by update_date"); List<JsywPoint> jsywPointList = this.jsywPointService.selectListByWhere("where psname='" + sewage.getName() + "' order by update_date");
if(jsywPointList!=null && jsywPointList.size()>0){ if (jsywPointList != null && jsywPointList.size() > 0) {
sewage.set_point(true); sewage.set_point(true);
}else{ } else {
sewage.set_point(false); sewage.set_point(false);
} }
return sewage; return sewage;
} }
@Override
public int deleteById(String id) {
return SewageDao.deleteByPrimaryKey(id);
}
@Override
public int save(Sewage sewage) {
return SewageDao.insert(sewage);
}
@Override
public int update(Sewage sewage) {
return SewageDao.updateByPrimaryKeySelective(sewage);
}
@Override @Override
public List<Sewage> selectListByWhere(String wherestr) { public int deleteById(String id) {
Sewage sewage = new Sewage(); return SewageDao.deleteByPrimaryKey(id);
sewage.setWhere(wherestr); }
List<Sewage> list = SewageDao.selectListByWhere(sewage);
for (Sewage item : list) { @Override
item.setCompany(this.unitService.getCompById(item.getUnitId())); public int save(Sewage sewage) {
ProcessSection processSection = this.getProcessSectionByStoredValue(item.getProcessSectionId()); return SewageDao.insert(sewage);
if (processSection != null) { }
item.setProcessSection(processSection);
} @Override
List<SewageInput> sewageInputList = this.sewageInputService.selectListByWhere4Pure("where sewage_id='"+item.getContractNumber()+"' order by insdt"); public int update(Sewage sewage) {
if(sewageInputList!=null && sewageInputList.size()>0){ return SewageDao.updateByPrimaryKeySelective(sewage);
item.set_input(true); }
}else{
@Override
public List<Sewage> selectListByWhere(String wherestr) {
Sewage sewage = new Sewage();
sewage.setWhere(wherestr);
List<Sewage> list = SewageDao.selectListByWhere(sewage);
for (Sewage item : list) {
item.setCompany(this.unitService.getCompById(item.getUnitId()));
ProcessSection processSection = this.getProcessSectionByStoredValue(item.getProcessSectionId());
if (processSection != null) {
item.setProcessSection(processSection);
}
List<SewageInput> sewageInputList = this.sewageInputService.selectListByWhere4Pure("where sewage_id='" + item.getContractNumber() + "' order by insdt");
if (sewageInputList != null && sewageInputList.size() > 0) {
item.set_input(true);
} else {
item.set_input(false); item.set_input(false);
} }
List<JsywPoint> jsywPointList = this.jsywPointService.selectListByWhere("where psname='"+item.getName()+"' order by update_date"); List<JsywPoint> jsywPointList = this.jsywPointService.selectListByWhere("where psname='" + item.getName() + "' order by update_date");
if(jsywPointList!=null && jsywPointList.size()>0){ if (jsywPointList != null && jsywPointList.size() > 0) {
item.set_point(true); item.set_point(true);
}else{ } else {
item.set_point(false); item.set_point(false);
} }
} }
return list; return list;
} }
@Override
public int deleteByWhere(String wherestr) { @Override
Sewage sewage = new Sewage(); public int deleteByWhere(String wherestr) {
sewage.setWhere(wherestr); Sewage sewage = new Sewage();
return SewageDao.deleteByWhere(sewage); sewage.setWhere(wherestr);
} return SewageDao.deleteByWhere(sewage);
}
public List<Sewage> selectDistinctCityByWhere(String wherestr) { public List<Sewage> selectDistinctCityByWhere(String wherestr) {
Sewage sewage = new Sewage(); Sewage sewage = new Sewage();
sewage.setWhere(wherestr); sewage.setWhere(wherestr);
List<Sewage> list = SewageDao.selectDistinctCityByWhere(sewage); List<Sewage> list = SewageDao.selectDistinctCityByWhere(sewage);
return list; return list;
} }
public boolean existsByContractNumber(String contractNumber) {
if (contractNumber == null || contractNumber.trim().isEmpty()) {
return false;
}
Integer count = SewageDao.selectCountByContractNumber(contractNumber.trim());
return count != null && count > 0;
}
public boolean existsByContractNumberExcludeId(String contractNumber, String id) {
if (contractNumber == null || contractNumber.trim().isEmpty()) {
return false;
}
if (id == null || id.trim().isEmpty()) {
return existsByContractNumber(contractNumber);
}
Map<String, String> params = new HashMap<String, String>();
params.put("contractNumber", contractNumber.trim());
params.put("id", id.trim());
Integer count = SewageDao.selectCountByContractNumberExcludeId(params);
return count != null && count > 0;
}
/** /**
* xls文件数据转换 * xls文件数据转换
* *
@ -154,24 +181,26 @@ public class SewageService implements CommService<Sewage>{
return cell.getCellFormula(); return cell.getCellFormula();
case NUMERIC: case NUMERIC:
//判断是否为日期类型 //判断是否为日期类型
if (DateUtil.isCellDateFormatted(cell)) { if (DateUtil.isCellDateFormatted(cell)) {
//用于转化为日期格式 //用于转化为日期格式
Date d = cell.getDateCellValue(); Date d = cell.getDateCellValue();
SimpleDateFormat formater = new SimpleDateFormat("yyyy-MM-dd"); SimpleDateFormat formater = new SimpleDateFormat("yyyy-MM-dd");
String cellDate = formater.format(d); String cellDate = formater.format(d);
return cellDate; return cellDate;
} else { } else {
cell.setCellType(STRING); cell.setCellType(STRING);
return cell.getStringCellValue(); return cell.getStringCellValue();
} }
case STRING: case STRING:
return cell.getStringCellValue(); return cell.getStringCellValue();
default: default:
return null; return null;
} }
} private String getBizId(String bizName) { }
private String getBizId(String bizName) {
String bizId = ""; String bizId = "";
List<Company> CompanyList = this.companyService.selectListByWhere("where sname = '" + bizName + "' or name = '" + bizName + "' "); List<Company> CompanyList = this.companyService.selectListByWhere("where sname = '" + bizName + "' or name = '" + bizName + "' ");
if (CompanyList != null && CompanyList.size() > 0) { if (CompanyList != null && CompanyList.size() > 0) {
@ -201,20 +230,20 @@ public class SewageService implements CommService<Sewage>{
int maxCellNum = row.getLastCellNum();//最后一列 int maxCellNum = row.getLastCellNum();//最后一列
Sewage sewage = new Sewage(); Sewage sewage = new Sewage();
HSSFCell cell = row.getCell(1); HSSFCell cell = row.getCell(1);
if (getStringVal(cell)==null) { if (getStringVal(cell) == null) {
continue; continue;
} }
sewage.setContractNumber(getStringVal(cell)); sewage.setContractNumber(getStringVal(cell));
cell = row.getCell(2); cell = row.getCell(2);
System.out.println(getStringVal(cell)); System.out.println(getStringVal(cell));
sewage.setContractOrder(Integer.parseInt(getStringVal(cell))); sewage.setContractOrder(Integer.parseInt(getStringVal(cell)));
cell = row.getCell(3); cell = row.getCell(3);
sewage.setName(getStringVal(cell)); sewage.setName(getStringVal(cell));
cell = row.getCell(4); cell = row.getCell(4);
sewage.setAddress(getStringVal(cell)); sewage.setAddress(getStringVal(cell));
cell = row.getCell(5); cell = row.getCell(5);
@ -224,10 +253,10 @@ public class SewageService implements CommService<Sewage>{
cell = row.getCell(7); cell = row.getCell(7);
sewage.setPhone(getStringVal(cell)); sewage.setPhone(getStringVal(cell));
cell = row.getCell(8); cell = row.getCell(8);
List<ProcessSection> processSectionList = this.processSectionService.selectListByWhere("where name = '"+getStringVal(cell)+"' and unit_id = 'JSBZ'"); List<ProcessSection> processSectionList = this.processSectionService.selectListByWhere("where name = '" + getStringVal(cell) + "' and unit_id = 'JSBZ'");
if (processSectionList.size()>0) { if (processSectionList.size() > 0) {
sewage.setProcessSectionId(processSectionList.get(0)==null?"":processSectionList.get(0).getCode()); sewage.setProcessSectionId(processSectionList.get(0) == null ? "" : processSectionList.get(0).getCode());
} }
cell = row.getCell(9); cell = row.getCell(9);
sewage.setUnitId(this.getBizId(getStringVal(cell))); sewage.setUnitId(this.getBizId(getStringVal(cell)));
cell = row.getCell(10); cell = row.getCell(10);
@ -241,7 +270,7 @@ public class SewageService implements CommService<Sewage>{
cell = row.getCell(14); cell = row.getCell(14);
sewage.setPermit(getStringVal(cell)); sewage.setPermit(getStringVal(cell));
cell = row.getCell(15); cell = row.getCell(15);
sewage.setDisplacement(Integer.parseInt((getStringVal(cell)==null?"0":getStringVal(cell)))); sewage.setDisplacement(Integer.parseInt((getStringVal(cell) == null ? "0" : getStringVal(cell))));
cell = row.getCell(16); cell = row.getCell(16);
sewage.setStandard(getStringVal(cell)); sewage.setStandard(getStringVal(cell));
cell = row.getCell(17); cell = row.getCell(17);
@ -254,30 +283,30 @@ public class SewageService implements CommService<Sewage>{
sewage.setAttribute(getStringVal(cell)); sewage.setAttribute(getStringVal(cell));
cell = row.getCell(27); cell = row.getCell(27);
sewage.setRemark(getStringVal(cell)); sewage.setRemark(getStringVal(cell));
// sewage.setVentNum(ventNum); // sewage.setVentNum(ventNum);
sewage.setId(CommUtil.getUUID()); sewage.setId(CommUtil.getUUID());
List<Sewage> selectListByWhere = this.selectListByWhere("where contract_number = '"+sewage.getContractNumber()+"'"); List<Sewage> selectListByWhere = this.selectListByWhere("where contract_number = '" + sewage.getContractNumber() + "'");
if (selectListByWhere!=null&&selectListByWhere.size()>0) { if (selectListByWhere != null && selectListByWhere.size() > 0) {
sewage.setId(selectListByWhere.get(0).getId()); sewage.setId(selectListByWhere.get(0).getId());
int result = this.update(sewage); int result = this.update(sewage);
if (result == 1) { if (result == 1) {
sumNum++; sumNum++;
} else { } else {
failNum++; failNum++;
} }
}else { } else {
int result = this.save(sewage); int result = this.save(sewage);
if (result == 1) { if (result == 1) {
sumNum++; sumNum++;
} else { } else {
failNum++; failNum++;
} }
} }
} }
} }
@ -293,8 +322,12 @@ public class SewageService implements CommService<Sewage>{
return result; return result;
} }
public void outExcelFun(HttpServletResponse response) throws IOException { public void outExcelFun(HttpServletResponse response) throws IOException {
String fileName = "金山排海工程有限公司纳管企业表.xls"; outExcelFun(response, null);
}
public void outExcelFun(HttpServletResponse response, String ids) throws IOException {
String fileName = "金山卫污水厂纳管企业表.xls";
String title = "纳管企业"; String title = "纳管企业";
// 声明一个工作薄 // 声明一个工作薄
HSSFWorkbook workbook = new HSSFWorkbook(); HSSFWorkbook workbook = new HSSFWorkbook();
@ -372,7 +405,7 @@ public class SewageService implements CommService<Sewage>{
//产生表格表头 //产生表格表头
String excelTitleStr = "序号,合同编号,合同顺序,单位名称,单位地址,合同到期日,联系人,联系电话,*所属泵站,*所属车间,排污许可证编号,雨、污水管平面图,环评报告/登记表/批复,所属行业,排水许可证(编号)复印件/申请表,实际日排量(吨/天),排放标准(排水许可证),管网所有权单位,统一社会信用代码,地址位置(经纬度),接入管网坐标-经度(度),接入管网坐标-经度(分),接入管网坐标-经度(秒),接入管网坐标-纬度(度),接入管网坐标-纬度(分),接入管网坐标-纬度(秒),管网属性(分流/合流),备注"; String excelTitleStr = "序号,合同编号,合同顺序,单位名称,单位地址,合同到期日,联系人,联系电话,*所属泵站,*所属车间,排污许可证编号,雨、污水管平面图,环评报告/登记表/批复,所属行业,排水许可证(编号)复印件/申请表,实际日排量(吨/天),排放标准(排水许可证),管网所有权单位,统一社会信用代码,地址位置(经纬度),接入管网坐标-经度(度),接入管网坐标-经度(分),接入管网坐标-经度(秒),接入管网坐标-纬度(度),接入管网坐标-纬度(分),接入管网坐标-纬度(秒),管网属性(分流/合流),备注";
String[] excelTitle = excelTitleStr.split(","); String[] excelTitle = excelTitleStr.split(",");
HSSFRow row = sheet.createRow(1); HSSFRow row = sheet.createRow(1);
row.setHeight((short) 800); row.setHeight((short) 800);
@ -418,17 +451,17 @@ public class SewageService implements CommService<Sewage>{
handRow.setHeight((short) 500); handRow.setHeight((short) 500);
HSSFCell cell = handRow.createCell(0); HSSFCell cell = handRow.createCell(0);
cell.setCellStyle(headStyle); cell.setCellStyle(headStyle);
cell.setCellValue("金山排海工程有限公司纳管企业表"); cell.setCellValue("金山卫污水厂纳管企业表");
// 说明 // 说明
// HSSFCell smcell = handRow.createCell(5); // HSSFCell smcell = handRow.createCell(5);
// smcell.setCellStyle(tipStyle); // smcell.setCellStyle(tipStyle);
// smcell.setCellValue("注:日期格式(xxxx-xx-xx或xxxx/xx/xx), 班组类型,班组, 班次(根据系统配置名称填写),模式(填写巡检菜单里面的巡检模式) 排版日期,班组类型,班组,班次,模式都为必填项(集控班组可不填模式)。"); // smcell.setCellValue("注:日期格式(xxxx-xx-xx或xxxx/xx/xx), 班组类型,班组, 班次(根据系统配置名称填写),模式(填写巡检菜单里面的巡检模式) 排版日期,班组类型,班组,班次,模式都为必填项(集控班组可不填模式)。");
List<Sewage> list = this.selectListByWhere("where 1=1 order by contract_order asc"); List<Sewage> list = this.selectListByWhere(buildExportWhere(ids));
int n = 1; int n = 1;
if (list != null && list.size() > 0) { if (list != null && list.size() > 0) {
for (int i = 0; i < list.size(); i++) { for (int i = 0; i < list.size(); i++) {
Sewage sewage = list.get(i); Sewage sewage = list.get(i);
HSSFRow listrow1 = sheet.createRow(i + 2); HSSFRow listrow1 = sheet.createRow(i + 2);
listrow1.setHeight((short) 400); listrow1.setHeight((short) 400);
HSSFCell listcell0 = listrow1.createCell(0); HSSFCell listcell0 = listrow1.createCell(0);
@ -441,7 +474,7 @@ public class SewageService implements CommService<Sewage>{
HSSFCell listcell2 = listrow1.createCell(2); HSSFCell listcell2 = listrow1.createCell(2);
listcell2.setCellStyle(listStyle); listcell2.setCellStyle(listStyle);
listcell2.setCellValue(sewage.getContractOrder()); listcell2.setCellValue(sewage.getContractOrder() == null ? 1 : sewage.getContractOrder());
HSSFCell listcell3 = listrow1.createCell(3); HSSFCell listcell3 = listrow1.createCell(3);
listcell3.setCellStyle(listStyle); listcell3.setCellStyle(listStyle);
@ -501,7 +534,7 @@ public class SewageService implements CommService<Sewage>{
HSSFCell listcell15 = listrow1.createCell(15); HSSFCell listcell15 = listrow1.createCell(15);
listcell15.setCellStyle(listStyle); listcell15.setCellStyle(listStyle);
listcell15.setCellValue((sewage.getDisplacement()==null?0:sewage.getDisplacement())); listcell15.setCellValue((sewage.getDisplacement() == null ? 0 : sewage.getDisplacement()));
HSSFCell listcell16 = listrow1.createCell(16); HSSFCell listcell16 = listrow1.createCell(16);
listcell16.setCellStyle(listStyle); listcell16.setCellStyle(listStyle);
@ -572,31 +605,56 @@ public class SewageService implements CommService<Sewage>{
workbook.close(); workbook.close();
} }
} }
/**
private String buildExportWhere(String ids) {
String orderBy = " order by contract_order asc";
if (ids == null || ids.trim().isEmpty()) {
return "where 1=1" + orderBy;
}
String[] arr = ids.split(",");
List<String> idList = new ArrayList<String>();
for (String item : arr) {
if (item == null) {
continue;
}
String id = item.trim();
if (!id.isEmpty() && id.matches("[A-Za-z0-9-]+")) {
idList.add("'" + id + "'");
}
}
if (idList.isEmpty()) {
return "where 1=1" + orderBy;
}
String idstr = String.join(",", idList);
return "where id in (" + idstr + ")" + orderBy;
}
/**
* 获取树三层结构processSection为根节点sewage为子节点 * 获取树三层结构processSection为根节点sewage为子节点
* @方法名:getTreeList *
* @参数 @param * @方法名:getTreeList
* @参数 @return * @参数 @param
* @参数 @return
* @返回类型 String * @返回类型 String
*/ */
public String getTreeList(List<Sewage> list) { public String getTreeList(List<Sewage> list) {
JSONArray list_result = new JSONArray(); JSONArray list_result = new JSONArray();
if(list!=null && list.size()>0){ if (list != null && list.size() > 0) {
String processSectionId = null; String processSectionId = null;
String unitId = null; String unitId = null;
JSONObject root_childs = new JSONObject(); JSONObject root_childs = new JSONObject();
JSONArray root_childlist = new JSONArray(); JSONArray root_childlist = new JSONArray();
JSONObject childs = new JSONObject(); JSONObject childs = new JSONObject();
JSONArray childlist = new JSONArray(); JSONArray childlist = new JSONArray();
for(int i=0;i<list.size();i++){ for (int i = 0; i < list.size(); i++) {
Sewage sewage = list.get(i); Sewage sewage = list.get(i);
if(unitId==null || unitId.isEmpty()){ if (unitId == null || unitId.isEmpty()) {
unitId = sewage.getUnitId(); unitId = sewage.getUnitId();
Company company = sewage.getCompany(); Company company = sewage.getCompany();
if(company != null){ if (company != null) {
root_childs.put("id", company.getId()); root_childs.put("id", company.getId());
root_childs.put("text", company.getName()); root_childs.put("text", company.getName());
}else{ } else {
root_childs.put("id", unitId); root_childs.put("id", unitId);
//没有关联Company或者unitId不存在 //没有关联Company或者unitId不存在
root_childs.put("text", "无区域数据"); root_childs.put("text", "无区域数据");
@ -604,8 +662,8 @@ public class SewageService implements CommService<Sewage>{
root_childs.put("pid", "-1"); root_childs.put("pid", "-1");
root_childs.put("type", "unit"); root_childs.put("type", "unit");
} }
if(!unitId.equals(sewage.getUnitId())){ if (!unitId.equals(sewage.getUnitId())) {
//向当前根节点添加所有子节点 //向当前根节点添加所有子节点
childs.put("nodes", childlist); childs.put("nodes", childlist);
root_childlist.add(childs); root_childlist.add(childs);
root_childs.put("nodes", root_childlist); root_childs.put("nodes", root_childlist);
@ -618,10 +676,10 @@ public class SewageService implements CommService<Sewage>{
//初始设置根节点 //初始设置根节点
unitId = sewage.getUnitId(); unitId = sewage.getUnitId();
Company company = sewage.getCompany(); Company company = sewage.getCompany();
if(company != null){ if (company != null) {
root_childs.put("id", company.getId()); root_childs.put("id", company.getId());
root_childs.put("text", company.getName()); root_childs.put("text", company.getName());
}else{ } else {
root_childs.put("id", unitId); root_childs.put("id", unitId);
//没有关联Company或者unitId不存在 //没有关联Company或者unitId不存在
root_childs.put("text", "无区域数据"); root_childs.put("text", "无区域数据");
@ -631,15 +689,15 @@ public class SewageService implements CommService<Sewage>{
//初始设置根节点 //初始设置根节点
processSectionId = null; processSectionId = null;
} }
if(processSectionId==null || processSectionId.isEmpty()){ if (processSectionId == null || processSectionId.isEmpty()) {
//初始设置根节点 //初始设置根节点
processSectionId = sewage.getProcessSectionId(); processSectionId = sewage.getProcessSectionId();
ProcessSection processSection = sewage.getProcessSection(); ProcessSection processSection = sewage.getProcessSection();
if(processSection != null){ if (processSection != null) {
childs.put("id", processSection.getCode()); childs.put("id", processSection.getCode());
childs.put("text", processSection.getName()); childs.put("text", processSection.getName());
}else{ } else {
if(processSectionId.isEmpty()){ if (processSectionId.isEmpty()) {
processSectionId = "error"; processSectionId = "error";
} }
childs.put("id", processSectionId); childs.put("id", processSectionId);
@ -648,9 +706,9 @@ public class SewageService implements CommService<Sewage>{
} }
childs.put("pid", unitId); childs.put("pid", unitId);
childs.put("type", "processSection"); childs.put("type", "processSection");
} }
if(processSectionId.equals(sewage.getProcessSectionId())){ if (processSectionId.equals(sewage.getProcessSectionId())) {
//设置子节点sewage //设置子节点sewage
JSONObject child = new JSONObject(); JSONObject child = new JSONObject();
child.put("id", sewage.getId()); child.put("id", sewage.getId());
@ -658,7 +716,7 @@ public class SewageService implements CommService<Sewage>{
child.put("pid", processSectionId); child.put("pid", processSectionId);
child.put("type", "sewage"); child.put("type", "sewage");
childlist.add(child); childlist.add(child);
}else{ } else {
//向当前根节点添加所有子节点 //向当前根节点添加所有子节点
childs.put("nodes", childlist); childs.put("nodes", childlist);
root_childlist.add(childs); root_childlist.add(childs);
@ -668,11 +726,11 @@ public class SewageService implements CommService<Sewage>{
//初始设置根节点 //初始设置根节点
processSectionId = sewage.getProcessSectionId(); processSectionId = sewage.getProcessSectionId();
ProcessSection processSection = sewage.getProcessSection(); ProcessSection processSection = sewage.getProcessSection();
if(processSection != null){ if (processSection != null) {
childs.put("id", processSection.getCode()); childs.put("id", processSection.getCode());
childs.put("text", processSection.getName()); childs.put("text", processSection.getName());
}else{ } else {
if(processSectionId.isEmpty()){ if (processSectionId.isEmpty()) {
processSectionId = "error"; processSectionId = "error";
} }
childs.put("id", processSectionId); childs.put("id", processSectionId);
@ -688,7 +746,7 @@ public class SewageService implements CommService<Sewage>{
child.put("type", "sewage"); child.put("type", "sewage");
childlist.add(child); childlist.add(child);
} }
if((i+1)==list.size()){ if ((i + 1) == list.size()) {
//最后子节点结束时,向当前根节点添加所有子节点 //最后子节点结束时,向当前根节点添加所有子节点
childs.put("nodes", childlist); childs.put("nodes", childlist);
root_childlist.add(childs); root_childlist.add(childs);

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

View File

@ -116,8 +116,11 @@ var getFileListMinioPic = function (divId, status, entityId, previews, previewCo
tbName: tbName, tbName: tbName,
bucketName: bucketName bucketName: bucketName
}, function (data) { }, function (data) {
// 清空数组而不是重新赋值,这样可以保持引用不变
previews.length = 0;
previewConfigs.length = 0;
if (data.length > 0) { if (data.length > 0) {
previews = new Array();
$('#maintenancefile').show(); $('#maintenancefile').show();
for (var i = 0; i < data.length; i++) { for (var i = 0; i < data.length; i++) {
var previewConfig = new Object(); var previewConfig = new Object();
@ -133,10 +136,9 @@ var getFileListMinioPic = function (divId, status, entityId, previews, previewCo
} }
previewConfigs.push(previewConfig); previewConfigs.push(previewConfig);
} }
showFileInput_new(divId, previews, previewConfigs);
} else {
$('#' + divId).hide();
} }
// 无论是否有数据都重新初始化控件
showFileInput_new(divId, previews, previewConfigs);
}, 'json'); }, 'json');
}; };

View File

@ -174,7 +174,7 @@
page: params.offset/params.limit+1, // 每页显示数据的开始页码 page: params.offset/params.limit+1, // 每页显示数据的开始页码
sort: params.sort, // 要排序的字段 sort: params.sort, // 要排序的字段
order: params.order, order: params.order,
search_name: $('#search_name').val(), // search_name: $('#search_name').val(),
search_code: $('#search_code').val() search_code: $('#search_code').val()
} }
}, },
@ -301,14 +301,14 @@
<label class="form-label" id="companylabel">公司</label> <label class="form-label" id="companylabel">公司</label>
<select class="form-control select2 " id="search_code" name ="search_code" style="width: 220px;"></select> <select class="form-control select2 " id="search_code" name ="search_code" style="width: 220px;"></select>
<span class="select2-selection select2-selection--single" id="company" style="width:220px;border: none;background: transparent;" ></span> <span class="select2-selection select2-selection--single" id="company" style="width:220px;border: none;background: transparent;" ></span>
<div class="form-group pull-right" > <!-- <div class="form-group pull-right" >
<div class="input-group input-group-sm" style="width: 250px;"> <div class="input-group input-group-sm" style="width: 250px;">
<input type="text" id="search_name" name="search_name" class="form-control pull-right" placeholder="名称"> <input type="text" id="search_name" name="search_name" class="form-control pull-right" placeholder="名称">
<div class="input-group-btn"> <div class="input-group-btn">
<button class="btn btn-default" onclick="dosearch();"><i class="fa fa-search"></i></button> <button class="btn btn-default" onclick="dosearch();"><i class="fa fa-search"></i></button>
</div> </div>
</div> </div>
</div> </div> -->
</div> </div>
<table id="table"></table> <table id="table"></table>
</div> </div>

View File

@ -1,9 +1,10 @@
<%@ page language="java" pageEncoding="UTF-8" %> <%@ page language="java" pageEncoding="UTF-8" %>
<script type="text/javascript"> <script type="text/javascript">
var previews = new Array(); // 不重新定义这些变量,直接使用主页面的全局变量
var previewConfigs = new Array(); // var previews = new Array();
var filelist = new Array(); // var previewConfigs = new Array();
// var filelist = new Array();
//初始化fileinput控件第一次初始化 //初始化fileinput控件第一次初始化
function initFileInput(ctrlName, uploadUrl) { function initFileInput(ctrlName, uploadUrl) {
@ -55,9 +56,10 @@
//导入文件上传完成之后的事件 //导入文件上传完成之后的事件
control.on("fileuploaded", function (event, data, previewId, index) { control.on("fileuploaded", function (event, data, previewId, index) {
if (data.response.suc) { if (data.response.suc) {
<%--getFileListMinioPic('${param.divId}','edit');--%> // 直接使用主页面的全局变量重新加载文件列表
// getFileListMinioPic('abnormityFileId', 'edit', '', previews, previewConfigs);
getFileListMinioPic('${param.divId}', 'edit', '', previews, previewConfigs); getFileListMinioPic('${param.divId}', 'edit', '', previews, previewConfigs);
// 关闭上传弹窗,返回主页面
closeModal('fileInputModal');
} }
}); });
} }

View File

@ -296,7 +296,17 @@
function exportExcel() { function exportExcel() {
var periodTypeName = $('#periodTypeList').val(); var periodTypeName = $('#periodTypeList').val();
var positionType = $('#positionTypeList').val(); var positionType = $('#positionTypeList').val();
window.open(ext.contextPath + "/kpi/kpiPlan/export.do?periodTypeName=" + periodTypeName + "&positionType=" + positionType); let checkedItems = $("#table").bootstrapTable('getSelections');
let ids = "";
$.each(checkedItems, function (index, item) {
ids += item.id + ",";
});
if (ids !== "") {
ids = ids.substring(0, ids.length - 1);
window.open(ext.contextPath + "/kpi/kpiPlan/export.do?periodTypeName=" + periodTypeName + "&positionType=" + positionType + "&ids=" + encodeURIComponent(ids));
} else {
window.open(ext.contextPath + "/kpi/kpiPlan/export.do?periodTypeName=" + periodTypeName + "&positionType=" + positionType);
}
} }
</script> </script>

View File

@ -636,45 +636,77 @@
var enterpriseTotal = 0; var enterpriseTotal = 0;
var enterpriseOnline = 0; var enterpriseOnline = 0;
var enterpriseList = []; var enterpriseList = [];
var enterprisePageSize = 20; // 每页20条
var enterpriseCurrentPage = 1; // 当前页码
// 加载企业数据 // 加载企业数据(分页)
function loadEnterpriseData() { function loadEnterpriseData() {
loadEnterpriseList(enterpriseCurrentPage);
}
// 加载企业列表(分页)
function loadEnterpriseList(page) {
enterpriseCurrentPage = page;
$.ajax({ $.ajax({
type: 'POST', type: 'POST',
url: ext.contextPath + '/sparepart/sewage/getList.do', url: ext.contextPath + '/sparepart/sewage/getList.do',
data: { data: {
page: 1, page: page,
rows: 1000, rows: enterprisePageSize,
sort: "displacement", sort: "displacement",
order: "asc", order: "asc",
unitId: '0533JS', unitId: defaultUnitId,
}, },
// async: true, async: true,
// dataType: 'json', globle: false,
// globle: false,
error: function () { error: function () {
// loadEnterpriseDataMock(); // loadEnterpriseDataMock();
return false; return false;
}, },
success: function (data) { success: function (data) {
if (typeof data === "string") { if (typeof data === "string") {
var dataList = JSON.parse(data); var dataList = JSON.parse(data);
if (dataList && dataList.rows) { if (dataList && dataList.rows) {
var list = dataList.rows || []; var list = dataList.rows || [];
enterpriseTotal = dataList.total; enterpriseTotal = dataList.total;
enterpriseOnline = list.filter(function(item) { // 统计在线数量(全部数据,不仅仅是当前页)
return item._input; enterpriseOnline = list.filter(function(item) {
}).length; return item._input;
enterpriseList = list; }).length;
renderEnterpriseStats(); enterpriseList = list;
renderEnterpriseList(list);
} else { // 为每个企业查询瞬时流量
loadEnterpriseDataMock(); var promises = [];
list.forEach(function(item) {
if (item.ventNum) {
var mpointCode = item.ventNum + '_SSLL';
promises.push(
getMpointValueAsync(mpointCode).then(function(value) {
item.flow = value.parmvalue || '0';
})
);
} else {
item.flow = '--';
}
});
// 等待所有瞬时流量查询完成后渲染
Promise.all(promises).then(function() {
renderEnterpriseStats();
renderEnterpriseList(list);
renderEnterprisePagination();
}).catch(function() {
renderEnterpriseStats();
renderEnterpriseList(list);
renderEnterprisePagination();
});
} else {
loadEnterpriseDataMock();
}
} }
} }
} });
}); }
}
// Mock企业数据 // Mock企业数据
function loadEnterpriseDataMock() { function loadEnterpriseDataMock() {
@ -700,9 +732,10 @@
$('#enterprise_total').text(enterpriseTotal); $('#enterprise_total').text(enterpriseTotal);
$('#enterprise_online').text(enterpriseOnline); $('#enterprise_online').text(enterpriseOnline);
$('#enterprise_offline').text(enterpriseTotal - enterpriseOnline); $('#enterprise_offline').text(enterpriseTotal - enterpriseOnline);
// 计算总流量 // 计算总流量(当前页)
var totalFlow = enterpriseList.reduce(function(sum, item) { var totalFlow = enterpriseList.reduce(function(sum, item) {
return sum + (item.attributes && item.attributes.flow ? item.attributes.flow : 0); var flow = item.flow || 0;
return sum + (typeof flow === 'number' ? flow : 0);
}, 0); }, 0);
$('#enterprise_total_flow').text(formatNumber(totalFlow)); $('#enterprise_total_flow').text(formatNumber(totalFlow));
} }
@ -713,7 +746,7 @@
list.forEach(function(item) { list.forEach(function(item) {
var name = item.name || item.text || '--'; var name = item.name || item.text || '--';
var status = item._input ? 'online' : 'offline'; var status = item._input ? 'online' : 'offline';
var flow = item.attributes && item.attributes.flow ? item.attributes.flow : 0; var flow = item.flow || '--';
var statusClass = status === 'online' ? 'online' : 'offline'; var statusClass = status === 'online' ? 'online' : 'offline';
var statusText = status === 'online' ? '已接入' : '未接入'; var statusText = status === 'online' ? '已接入' : '未接入';
@ -734,9 +767,34 @@
$('#enterprise_list').html(html); $('#enterprise_list').html(html);
} }
// 渲染企业分页控件
function renderEnterprisePagination() {
var totalPages = Math.ceil(enterpriseTotal / enterprisePageSize);
// 更新分页信息
var pageInfo = '第 ' + enterpriseCurrentPage + '/' + totalPages + ' 页,共 ' + enterpriseTotal + ' 条';
$('#enterprise_page_info').text(pageInfo);
// 更新分页按钮
var btnHtml = '';
btnHtml += '<button class="pagination-btn" onclick="enterpriseGoToPage(1)" ' + (enterpriseCurrentPage === 1 ? 'disabled' : '') + '>首页</button>';
btnHtml += '<button class="pagination-btn" onclick="enterpriseGoToPage(' + (enterpriseCurrentPage - 1) + ')" ' + (enterpriseCurrentPage === 1 ? 'disabled' : '') + '>上一页</button>';
btnHtml += '<button class="pagination-btn" onclick="enterpriseGoToPage(' + (enterpriseCurrentPage + 1) + ')" ' + (enterpriseCurrentPage >= totalPages ? 'disabled' : '') + '>下一页</button>';
btnHtml += '<button class="pagination-btn" onclick="enterpriseGoToPage(' + totalPages + ')" ' + (enterpriseCurrentPage >= totalPages ? 'disabled' : '') + '>末页</button>';
$('#enterprise_page_btns').html(btnHtml);
}
// 企业列表分页跳转
function enterpriseGoToPage(page) {
var totalPages = Math.ceil(enterpriseTotal / enterprisePageSize);
if (page < 1) page = 1;
if (page > totalPages) page = totalPages;
loadEnterpriseList(page);
}
// 格式化数字 // 格式化数字
function formatNumber(num) { function formatNumber(num) {
if (num === null || num === undefined) return '--'; if (num === null || num === undefined || num === '--') return '--';
return num.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ','); return num.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ',');
} }
@ -746,7 +804,7 @@
type: 'GET', type: 'GET',
url: ext.contextPath + '/base/mainConfig/getJson.do', url: ext.contextPath + '/base/mainConfig/getJson.do',
async: true, async: true,
data: {unitId: unitId}, data: {unitId: defaultUnitId},
globle: false, globle: false,
error: function () { error: function () {
console.error('获取主配置数据失败'); console.error('获取主配置数据失败');
@ -849,18 +907,20 @@
if (!hasPumpConfig) { if (!hasPumpConfig) {
initPumpStations(); initPumpStations();
} }
// // 如果没有工艺配置,使用默认数据
// var hasProcessConfig = mpcode.some(function(item) { return item.type === 'process'; });
// if (!hasProcessConfig) {
// initProcessList();
// }
initProcessListByConfig(code, divid);
// 如果没有工艺配置,使用默认数据 // // 如果没有告警配置,使用默认数据
var hasProcessConfig = mpcode.some(function(item) { return item.type === 'process'; }); // var hasAlarmConfig = mpcode.some(function(item) { return item.type === 'alarm'; });
if (!hasProcessConfig) { // if (!hasAlarmConfig) {
initProcessList(); // initAlarmList();
} // }
initAlarmListByConfig(code, divid)
// 如果没有告警配置,使用默认数据
var hasAlarmConfig = mpcode.some(function(item) { return item.type === 'alarm'; });
if (!hasAlarmConfig) {
initAlarmList();
}
} }
function initData() { function initData() {
@ -900,7 +960,7 @@
page: page, page: page,
sort: 'equipmentcardid', sort: 'equipmentcardid',
order: 'asc', order: 'asc',
unitId: unitId, unitId: defaultUnitId,
}, },
async: true, async: true,
globle: false, globle: false,
@ -1109,41 +1169,113 @@
return data; return data;
} }
// 根据配置初始化工艺列表 // 根据配置初始化工艺列表 - 调用工艺段接口(支持分页)
// /TGLW/user/processSection/getlist.do?rows=50&page=1&order=asc&search_code=0533JS&unitId=0533JS&search_name=&_=1775558221772
var processTotal = 0; // 工艺段总数
function initProcessListByConfig(mpointCode, containerId) { function initProcessListByConfig(mpointCode, containerId) {
loadProcessList(processCurrentPage);
}
// 加载工艺列表(分页)
function loadProcessList(page) {
processCurrentPage = page;
$.ajax({ $.ajax({
type: 'GET', type: 'GET',
url: ext.contextPath + '/work/mpoint/getProcessList.do?unitId=' + unitId + '&mpointCode=' + mpointCode, url: ext.contextPath + '/user/processSection/getlist.do',
data: {
unitId: defaultUnitId,
rows: processPageSize,
page: page,
},
async: true, async: true,
dataType: 'json',
globle: false, globle: false,
error: function () { error: function () {
processData = generateProcessData(); // processData = generateProcessData();
renderProcessTable(); // renderProcessTable();
return false; return false;
}, },
success: function (data) { success: function (data) {
if (data != null && data !== '') { if (data && data.rows) {
try { // 更新总数
var result = eval('(' + data + ')'); processTotal = data.total || data.rows.length;
if (result.status === 'pass' && result.processList) {
processData = result.processList; // 将接口返回的工艺段数据转换为表格格式
renderProcessTable(); processData = [];
} else { var rows = data.rows || [];
processData = generateProcessData();
renderProcessTable(); // 为每个工艺段获取测点值
} var promises = [];
} catch (e) { rows.forEach(function(item, index) {
processData = generateProcessData(); var processItem = {
...item,
processName: item.text || item.name || '--',
param1: '--',
param2: '--',
param3: '--',
deviceId: item.id || ''
};
processData.push(processItem);
// 为param1, param2, param3创建获取值的Promise
['1', '2', '3'].forEach(function(suffix) {
var mpointCodeParam = item.id + '_' + suffix;
promises.push(
getMpointValueAsync(mpointCodeParam).then(function(value) {
let values = (value.parmname || '--') + ':' + (value.parmvalue || '--') + (value.unit || '')
if (suffix === '1') processItem.param1 = values;
else if (suffix === '2') processItem.param2 = values;
else if (suffix === '3') processItem.param3 = values;
})
);
});
});
// 等待所有测点值获取完成后渲染表格
Promise.all(promises).then(function() {
renderProcessTable(); renderProcessTable();
} renderProcessPagination();
}).catch(function() {
renderProcessTable();
renderProcessPagination();
});
} else { } else {
processData = generateProcessData(); // processData = generateProcessData();
renderProcessTable(); // renderProcessTable();
} }
} }
}); });
} }
// 异步获取测点值
function getMpointValueAsync(mpointCode) {
return new Promise(function(resolve) {
$.ajax({
type: 'GET',
url: ext.contextPath + '/work/mpoint/getValue.do',
data: {
unitId: defaultUnitId,
mpointCode: mpointCode
},
async: true,
dataType: 'json',
globle: false,
success: function(data) {
if (data && data.parmvalue !== undefined && data.parmvalue !== null) {
resolve(data);
// resolve(data.parmname + ':' + data.parmvalue + data.unit);
} else {
resolve('--');
}
},
error: function() {
resolve('--');
}
});
});
}
// 生成告警列表mock数据 // 生成告警列表mock数据
function generateAlarmData() { function generateAlarmData() {
var processNames = ['粗格栅间', '细格栅间', '曝气沉砂池', '厌氧池', '缺氧池', '好氧池', '二沉池', '消毒池', '污泥浓缩池', '污泥脱水间']; var processNames = ['粗格栅间', '细格栅间', '曝气沉砂池', '厌氧池', '缺氧池', '好氧池', '二沉池', '消毒池', '污泥浓缩池', '污泥脱水间'];
@ -1168,36 +1300,65 @@
return data; return data;
} }
// 根据配置初始化告警列表 // 根据配置初始化告警列表 - 调用告警接口
// 参考 proAlarmList.jsp 的接口调用
function initAlarmListByConfig(mpointCode, containerId) { function initAlarmListByConfig(mpointCode, containerId) {
// 获取当前时间和7天前时间
var endTime = new Date();
var startTime = new Date(endTime.getTime() - 7 * 24 * 60 * 60 * 1000);
var formatDate = function(date) {
return date.getFullYear() + '-' +
String(date.getMonth() + 1).padStart(2, '0') + '-' +
String(date.getDate()).padStart(2, '0') + ' ' +
String(date.getHours()).padStart(2, '0') + ':' +
String(date.getMinutes()).padStart(2, '0');
};
$.ajax({ $.ajax({
type: 'GET', type: 'POST',
url: ext.contextPath + '/work/mpoint/getAlarmList.do?unitId=' + unitId + '&mpointCode=' + mpointCode, url: ext.contextPath + '/alarm/proAlarm/getlist.do',
data: {
companyId: defaultUnitId,
search_name: '',
pSectionCode: '',
alarmType: '',
alarmlevel: '',
status: '',
sdt: formatDate(startTime),
edt: formatDate(endTime)
},
async: true, async: true,
dataType: 'json',
globle: false, globle: false,
error: function () { error: function () {
alarmData = generateAlarmData(); // alarmData = generateAlarmData();
renderAlarmTable(); // renderAlarmTable();
return false; return false;
}, },
success: function (data) { success: function (data) {
if (data != null && data !== '') { if (data && data.rows && data.rows.length > 0) {
try { // 将接口返回的告警数据转换为表格格式
var result = eval('(' + data + ')'); alarmData = [];
if (result.status === 'pass' && result.alarmList) { data.rows.forEach(function(item) {
alarmData = result.alarmList; alarmData.push({
renderAlarmTable(); id: item.id,
} else { process: item.pointName || item.processSectionName || '--',
alarmData = generateAlarmData(); pointCode: item.pointCode || '',
renderAlarmTable(); status: item.status || '',
} alarmLevel: item.alarmLevel || '',
} catch (e) { alarmTime: item.alarmTime || '',
alarmData = generateAlarmData(); describe: item.describe || '',
renderAlarmTable(); alarmTypeName: item.alarmTypeName || '',
} confirmerName: item.confirmerName || '',
} else { confirmTime: item.confirmTime || '',
alarmData = generateAlarmData(); time: item.alarmTime ? item.alarmTime.substring(0, 16) : '--',
bizId: item.bizId || ''
});
});
renderAlarmTable(); renderAlarmTable();
} else {
// alarmData = generateAlarmData();
// renderAlarmTable();
} }
} }
}); });
@ -1209,14 +1370,11 @@
} }
function renderProcessTable() { function renderProcessTable() {
var start = (processCurrentPage - 1) * processPageSize; // 服务端分页processData 已经是当前页数据
var end = Math.min(start + processPageSize, processData.length);
var pageData = processData.slice(start, end);
var html = ''; var html = '';
pageData.forEach(function(process) { processData.forEach(function(process) {
html += '<tr>'; html += '<tr>';
html += '<td>' + process.name + '</td>'; html += '<td>' + (process.processName || process.name || '--') + '</td>';
html += '<td>' + process.param1 + '</td>'; html += '<td>' + process.param1 + '</td>';
html += '<td>' + process.param2 + '</td>'; html += '<td>' + process.param2 + '</td>';
html += '<td>' + process.param3 + '</td>'; html += '<td>' + process.param3 + '</td>';
@ -1224,26 +1382,30 @@
html += '</tr>'; html += '</tr>';
}); });
$('#process_table tbody').html(html); $('#process_table tbody').html(html);
}
// 渲染工艺列表分页控件
function renderProcessPagination() {
var totalPages = Math.ceil(processTotal / processPageSize);
// 更新分页信息 // 更新分页信息
var totalPages = Math.ceil(processData.length / processPageSize); $('#process_page_info').text('第 ' + processCurrentPage + '/' + totalPages + ' 页,共 ' + processTotal + ' 条');
$('#process_page_info').text('第 ' + processCurrentPage + '/' + totalPages + ' 页,共 ' + processData.length + ' 条');
// 更新分页按钮 // 更新分页按钮
var btnHtml = ''; var btnHtml = '';
btnHtml += '<button class="pagination-btn" onclick="processGoToPage(1)" ' + (processCurrentPage === 1 ? 'disabled' : '') + '>首页</button>'; btnHtml += '<button class="pagination-btn" onclick="processGoToPage(1)" ' + (processCurrentPage === 1 ? 'disabled' : '') + '>首页</button>';
btnHtml += '<button class="pagination-btn" onclick="processGoToPage(' + (processCurrentPage - 1) + ')" ' + (processCurrentPage === 1 ? 'disabled' : '') + '>上一页</button>'; btnHtml += '<button class="pagination-btn" onclick="processGoToPage(' + (processCurrentPage - 1) + ')" ' + (processCurrentPage === 1 ? 'disabled' : '') + '>上一页</button>';
btnHtml += '<button class="pagination-btn" onclick="processGoToPage(' + (processCurrentPage + 1) + ')" ' + (processCurrentPage === totalPages ? 'disabled' : '') + '>下一页</button>'; btnHtml += '<button class="pagination-btn" onclick="processGoToPage(' + (processCurrentPage + 1) + ')" ' + (processCurrentPage >= totalPages ? 'disabled' : '') + '>下一页</button>';
// btnHtml += '<button class="pagination-btn" onclick="processGoToPage(' + totalPages + ')" ' + (processCurrentPage === totalPages ? 'disabled' : '') + '>末页</button>'; btnHtml += '<button class="pagination-btn" onclick="processGoToPage(' + totalPages + ')" ' + (processCurrentPage >= totalPages ? 'disabled' : '') + '>末页</button>';
$('#process_page_btns').html(btnHtml); $('#process_page_btns').html(btnHtml);
} }
// 工艺列表分页跳转
function processGoToPage(page) { function processGoToPage(page) {
var totalPages = Math.ceil(processData.length / processPageSize); var totalPages = Math.ceil(processTotal / processPageSize);
if (page < 1) page = 1; if (page < 1) page = 1;
if (page > totalPages) page = totalPages; if (page > totalPages) page = totalPages;
processCurrentPage = page; loadProcessList(page);
renderProcessTable();
} }
function initAlarmList() { function initAlarmList() {
@ -1595,6 +1757,12 @@
<div class="enterprise-list-wrapper" id="enterprise_list"> <div class="enterprise-list-wrapper" id="enterprise_list">
<!-- 企业卡片将通过JS动态生成 --> <!-- 企业卡片将通过JS动态生成 -->
</div> </div>
<!-- 企业分页 -->
<div class="pagination">
<span class="pagination-info" id="enterprise_page_info"></span>
<div class="pagination-btns" id="enterprise_page_btns"></div>
</div>
</div> </div>
</div> </div>
</div> </div>

View File

@ -173,8 +173,8 @@
return repo.text; return repo.text;
} // 函数用于呈现当前的选择 } // 函数用于呈现当前的选择
}); });
selelct_.val('').trigger("change"); selelct_.val('').trigger("change.select2");
selelct_.on('change', function () { selelct_.off("select2:select select2:clear").on("select2:select select2:clear", function () {
//工艺段选择后,清空原有工艺段选择的设备 //工艺段选择后,清空原有工艺段选择的设备
$("#equipmentIds").val(""); $("#equipmentIds").val("");
$("#equipname").val(""); $("#equipname").val("");

View File

@ -159,8 +159,8 @@
formatResult: function formatRepo(repo){return repo.text;}, // 函数用来渲染结果 formatResult: function formatRepo(repo){return repo.text;}, // 函数用来渲染结果
formatSelection: function formatRepoSelection(repo){return repo.text;} // 函数用于呈现当前的选择 formatSelection: function formatRepoSelection(repo){return repo.text;} // 函数用于呈现当前的选择
}); });
selelct_.val('${abnormity.processSectionId}').trigger("change"); selelct_.val('${abnormity.processSectionId}').trigger("change.select2");
},'json'); },'json');
}; };
var companyId = "${abnormity.bizId}"; var companyId = "${abnormity.bizId}";
$(function(){ $(function(){
@ -181,9 +181,9 @@
formatSelection: function formatRepoSelection(repo){return repo.text;} // 函数用于呈现当前的选择 formatSelection: function formatRepoSelection(repo){return repo.text;} // 函数用于呈现当前的选择
}); });
if(data!=null && data.length>0){ if(data!=null && data.length>0){
selelct_.val('${abnormity.processSectionId}').trigger("change"); selelct_.val('${abnormity.processSectionId}').trigger("change.select2");
} }
selelct_.on('change',function(){ selelct_.off("select2:select select2:clear").on("select2:select select2:clear",function(){
//工艺段选择后,清空原有工艺段选择的设备 //工艺段选择后,清空原有工艺段选择的设备
$("#equipmentIds").val(""); $("#equipmentIds").val("");
$("#equipname").val(""); $("#equipname").val("");

View File

@ -195,8 +195,8 @@
formatResult: function formatRepo(repo){return repo.text;}, // 函数用来渲染结果 formatResult: function formatRepo(repo){return repo.text;}, // 函数用来渲染结果
formatSelection: function formatRepoSelection(repo){return repo.text;} // 函数用于呈现当前的选择 formatSelection: function formatRepoSelection(repo){return repo.text;} // 函数用于呈现当前的选择
}); });
selelct_.val('').trigger("change"); selelct_.val('').trigger("change.select2");
selelct_.on("change",function(e){ selelct_.off("select2:select select2:clear").on("select2:select select2:clear",function(e){
dosearch(); dosearch();
}); });
},'json'); },'json');

View File

@ -156,8 +156,8 @@
return repo.text; return repo.text;
} // 函数用于呈现当前的选择 } // 函数用于呈现当前的选择
}); });
selelct_.val('').trigger("change"); selelct_.val('').trigger("change.select2");
selelct_.on("change", function (e) { selelct_.off("select2:select select2:clear").on("select2:select select2:clear", function (e) {
initAPPFun(); initAPPFun();
}); });
}, 'json'); }, 'json');
@ -493,8 +493,8 @@
return repo.text; return repo.text;
} // 函数用于呈现当前的选择 } // 函数用于呈现当前的选择
}); });
selelct_.val('').trigger("change"); selelct_.val('').trigger("change.select2");
selelct_.on("change", function (e) { selelct_.off("select2:select select2:clear").on("select2:select select2:clear", function (e) {
// dosearch(); // dosearch();
$("#table").bootstrapTable('refresh'); $("#table").bootstrapTable('refresh');
}); });

View File

@ -170,16 +170,16 @@
return repo.text; return repo.text;
} // 函数用于呈现当前的选择 } // 函数用于呈现当前的选择
}); });
selelct_.val('').trigger("change"); selelct_.val('').trigger("change.select2");
selelct_.on("change", function (e) { selelct_.off("select2:select select2:clear").on("select2:select select2:clear", function (e) {
dosearch(); dosearch();
}); });
}, 'json'); }, 'json');
var statusSelect = $("#statusSelect").select2({ var statusSelect = $("#statusSelect").select2({
minimumResultsForSearch: 10, minimumResultsForSearch: 10,
placeholder: '请选择', placeholder: '请选择',
}).val('').trigger("change"); }).val('').trigger("change.select2");
statusSelect.on("change", function (e) { statusSelect.off("select2:select select2:clear").on("select2:select select2:clear", function (e) {
dosearch(); dosearch();
}); });
$("#table").bootstrapTable({ // 对应table标签的id $("#table").bootstrapTable({ // 对应table标签的id

View File

@ -174,8 +174,8 @@
return repo.text; return repo.text;
} // 函数用于呈现当前的选择 } // 函数用于呈现当前的选择
}); });
selelct_.val("").trigger("change"); selelct_.val("").trigger("change.select2");
selelct_.on("change", function (e) { selelct_.off("select2:select select2:clear").on("select2:select select2:clear", function (e) {
dosearch(); dosearch();
}); });
}, 'json'); }, 'json');

View File

@ -354,7 +354,7 @@
</div>--%> </div>--%>
<div class="form-group" style="margin:8px"> <div class="form-group" style="margin:8px">
<button type="button" class="btn btn-default btn-file" onclick="fileinputPic('maintenanceDetailFile')" <button type="button" class="btn btn-default btn-file" onclick="fileinputPic('abnormityFileId')"
id="btn_save"><i id="btn_save"><i
class="fa fa-paperclip"></i>上传图片 class="fa fa-paperclip"></i>上传图片
</button> </button>

View File

@ -187,8 +187,8 @@
return repo.text; return repo.text;
} // 函数用于呈现当前的选择 } // 函数用于呈现当前的选择
}); });
selelct_.val("").trigger("change"); selelct_.val("").trigger("change.select2");
selelct_.on("change", function (e) { selelct_.off("select2:select select2:clear").on("select2:select select2:clear", function (e) {
dosearch(); dosearch();
}); });
}, 'json'); }, 'json');

View File

@ -271,8 +271,8 @@
formatResult: function formatRepo(repo) { return repo.text; }, // 函数用来渲染结果 formatResult: function formatRepo(repo) { return repo.text; }, // 函数用来渲染结果
formatSelection: function formatRepoSelection(repo) { return repo.text; } // 函数用于呈现当前的选择 formatSelection: function formatRepoSelection(repo) { return repo.text; } // 函数用于呈现当前的选择
}); });
selelct_.val("").trigger("change"); selelct_.val("").trigger("change.select2");
selelct_.on("change", function (e) { selelct_.off("select2:select select2:clear").on("select2:select select2:clear", function (e) {
dosearch(); dosearch();
}); });
}, 'json'); }, 'json');

View File

@ -78,8 +78,11 @@
rptdt: time, rptdt: time,
rptdeptId: '${param.rptdeptId}' rptdeptId: '${param.rptdeptId}'
}, function (data) { }, function (data) {
$("#rptDiv").html(data); if (data.code > 0) {
openModal('subModal'); $("#rptDiv").html(data); openModal('subModal');
} else {
showAlert('d', '您没有该报表的填报权限', 'mainAlertdiv');
}
}); });
}; };
@ -160,7 +163,7 @@
if (data.code > 0) { if (data.code > 0) {
$("#table").bootstrapTable('refresh'); $("#table").bootstrapTable('refresh');
} else { } else {
showAlert('d', '删除失败', 'mainAlertdiv'); showAlert('d', data.msg, 'mainAlertdiv');
} }
}, 'json'); }, 'json');

View File

@ -115,7 +115,7 @@ PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD
var fileinput = function () { var fileinput = function () {
$('#file').click(); $('#file').click();
}; };
var filedel = function () { var filedel = function (index) {
fileList.splice(index,1) fileList.splice(index,1)
$('#test').html(initFileInputView()) $('#test').html(initFileInputView())
}; };

View File

@ -400,7 +400,17 @@
//导出 //导出
function downloadExcelFun() { function downloadExcelFun() {
window.open(ext.contextPath + "/sparepart/sewage/downloadExcelFun.do"); var checkedItems = $("#table").bootstrapTable('getSelections');
var ids = "";
$.each(checkedItems, function(index, item){
ids += item.id + ",";
});
if(ids !== ""){
ids = ids.substring(0, ids.length - 1);
window.open(ext.contextPath + "/sparepart/sewage/downloadExcelFun.do?ids=" + encodeURIComponent(ids));
}else{
window.open(ext.contextPath + "/sparepart/sewage/downloadExcelFun.do");
}
} }
</script> </script>
</head> </head>

View File

@ -534,7 +534,7 @@
<img src="/images/大屏/企业简介.png" style="height:60px;width:420px;"/> <img src="/images/大屏/企业简介.png" style="height:60px;width:420px;"/>
</div> </div>
<div style="float: left;width: 100%;height: 137px;padding-top: 10px;padding-left: 20px;color: #ffffff;line-height: 30px;font-size: 20px;font-weight: 400;letter-spacing:2px;"> <div style="float: left;width: 100%;height: 137px;padding-top: 10px;padding-left: 20px;color: #ffffff;line-height: 30px;font-size: 20px;font-weight: 400;letter-spacing:2px;">
&nbsp;&nbsp;&nbsp;&nbsp;上海金山排海工程有限公司成立于1993年主要承担金山东部地区生活污水和工业废水的收集处理任务服务范围包括金山东部亭林、张堰、山阳、漕泾四镇及金山工业区、金山新城区、金山卫钱圩地区服务区域约155平方公里。 &nbsp;&nbsp;&nbsp;&nbsp;上海金山卫污水厂成立于1993年主要承担金山东部地区生活污水和工业废水的收集处理任务服务范围包括金山东部亭林、张堰、山阳、漕泾四镇及金山工业区、金山新城区、金山卫钱圩地区服务区域约155平方公里。
</div> </div>
</div> </div>
<div style='position: absolute;width: 440px;height: 470px;left: 21px; <div style='position: absolute;width: 440px;height: 470px;left: 21px;

View File

@ -233,12 +233,12 @@ pageEncoding="UTF-8"%>
class="drawer-nav-icon" class="drawer-nav-icon"
/>企业 />企业
</div> </div>
<div class="drawer-nav-item" onclick="switchTab('tab-pipeline', this)"> <!-- <div class="drawer-nav-item" onclick="switchTab('tab-pipeline', this)">
<img <img
src="<%=request.getContextPath()%>/IMG/icon_gd.png" src="<%=request.getContextPath()%>/IMG/icon_gd.png"
class="drawer-nav-icon" class="drawer-nav-icon"
/>管道 />管道
</div> </div> -->
<!-- <div class="drawer-nav-item" onclick="switchTab('tab-well', this)"> <!-- <div class="drawer-nav-item" onclick="switchTab('tab-well', this)">
<img <img
src="<%=request.getContextPath()%>/IMG/icon_gj.png" src="<%=request.getContextPath()%>/IMG/icon_gj.png"
@ -548,15 +548,6 @@ pageEncoding="UTF-8"%>
</div> </div>
<div style="max-height: 400px; overflow-y: auto" id="company-table-container"> <div style="max-height: 400px; overflow-y: auto" id="company-table-container">
<div id="company-loading" style="display: none; text-align: center; padding: 20px;">
<i class="glyphicon glyphicon-refresh" style="font-size: 24px; color: #007bff; animation: spin 1s infinite linear;"></i>
<p style="margin-top: 10px; color: #666; font-size: 12px">数据加载中...</p>
<style>
@keyframes spin {
100% { transform: rotate(360deg); }
}
</style>
</div>
<table <table
class="table table-bordered table-hover table-condensed table-custom" class="table table-bordered table-hover table-condensed table-custom"
style="font-size: 12px; white-space: nowrap" style="font-size: 12px; white-space: nowrap"
@ -578,6 +569,10 @@ pageEncoding="UTF-8"%>
</thead> </thead>
<tbody id="company-table-body"></tbody> <tbody id="company-table-body"></tbody>
</table> </table>
<div id="company-loading" style="display: none; text-align: center; padding: 20px;">
<i class="glyphicon glyphicon-refresh" style="font-size: 24px; color: #007bff; animation: spin 1s infinite linear;"></i>
<p style="margin-top: 10px; color: #666; font-size: 12px">数据加载中...</p>
</div>
</div> </div>
</div> </div>
@ -1330,7 +1325,9 @@ pageEncoding="UTF-8"%>
// 直接返回数组 // 直接返回数组
list = res; list = res;
} }
config.data = list.map(config.transform); config.data = list.map(function(item, idx) {
return config.transform(item, idx);
});
config.loaded = true; config.loaded = true;
console.log('[' + type + '] 加载完成:', config.data.length, '条'); console.log('[' + type + '] 加载完成:', config.data.length, '条');
return config.data; return config.data;

View File

@ -113,7 +113,7 @@ var selectMPint = function(pid) {
formatSelection: function formatRepoSelection(repo){return repo.text;} // 函数用于呈现当前的选择 formatSelection: function formatRepoSelection(repo){return repo.text;} // 函数用于呈现当前的选择
}); });
if(data!=null && data.length>0){ if(data!=null && data.length>0){
selelct_.val(data[0].id).trigger("change"); selelct_.val(data[0].id).trigger("change.select2");
} }
},'json'); },'json');
}else{ }else{
@ -131,8 +131,8 @@ var selectMPint = function(pid) {
formatResult: function formatRepo(repo){return repo.text;}, // 函数用来渲染结果 formatResult: function formatRepo(repo){return repo.text;}, // 函数用来渲染结果
formatSelection: function formatRepoSelection(repo){return repo.text;} // 函数用于呈现当前的选择 formatSelection: function formatRepoSelection(repo){return repo.text;} // 函数用于呈现当前的选择
}); });
selelct.val('').trigger("change"); selelct.val('').trigger("change.select2");
selelct.on("change",function(e){ selelct.off("select2:select select2:clear").on("select2:select select2:clear",function(){
var companyId= $(this).val(); var companyId= $(this).val();
$.post(ext.contextPath + "/user/processSection/getProcessSection4Select.do", {companyId:companyId}, function(data) { $.post(ext.contextPath + "/user/processSection/getProcessSection4Select.do", {companyId:companyId}, function(data) {
$("#processsectionid").empty(); $("#processsectionid").empty();
@ -147,8 +147,8 @@ var selectMPint = function(pid) {
formatResult: function formatRepo(repo){return repo.text;}, // 函数用来渲染结果 formatResult: function formatRepo(repo){return repo.text;}, // 函数用来渲染结果
formatSelection: function formatRepoSelection(repo){return repo.text;} // 函数用于呈现当前的选择 formatSelection: function formatRepoSelection(repo){return repo.text;} // 函数用于呈现当前的选择
}); });
selelct_.val('${kPIPoint.processsectionid}').trigger("change"); selelct_.val('${kPIPoint.processsectionid}').trigger("change.select2");
},'json'); },'json');
}); });
} }
},'json'); },'json');

View File

@ -89,8 +89,8 @@ var selectMPint = function(pid) {
formatResult: function formatRepo(repo){return repo.text;}, // 函数用来渲染结果 formatResult: function formatRepo(repo){return repo.text;}, // 函数用来渲染结果
formatSelection: function formatRepoSelection(repo){return repo.text;} // 函数用于呈现当前的选择 formatSelection: function formatRepoSelection(repo){return repo.text;} // 函数用于呈现当前的选择
}); });
selelct_.val('${kPIPoint.processsectionid}').trigger("change"); selelct_.val('${kPIPoint.processsectionid}').trigger("change.select2");
},'json'); },'json');
}; };
$(function(){ $(function(){
@ -116,8 +116,8 @@ var selectMPint = function(pid) {
formatResult: function formatRepo(repo){return repo.text;}, // 函数用来渲染结果 formatResult: function formatRepo(repo){return repo.text;}, // 函数用来渲染结果
formatSelection: function formatRepoSelection(repo){return repo.text;} // 函数用于呈现当前的选择 formatSelection: function formatRepoSelection(repo){return repo.text;} // 函数用于呈现当前的选择
}); });
selelct_.val('${kPIPoint.processsectionid}').trigger("change"); selelct_.val('${kPIPoint.processsectionid}').trigger("change.select2");
},'json'); },'json');
}else{ }else{
$("#hidden_bizid").attr("disabled","disabled"); $("#hidden_bizid").attr("disabled","disabled");
$("#input_bizid").css("display", "none"); $("#input_bizid").css("display", "none");
@ -133,8 +133,8 @@ var selectMPint = function(pid) {
formatResult: function formatRepo(repo){return repo.text;}, // 函数用来渲染结果 formatResult: function formatRepo(repo){return repo.text;}, // 函数用来渲染结果
formatSelection: function formatRepoSelection(repo){return repo.text;} // 函数用于呈现当前的选择 formatSelection: function formatRepoSelection(repo){return repo.text;} // 函数用于呈现当前的选择
}); });
selelct.val('${kPIPoint.bizid}').trigger("change"); selelct.val('${kPIPoint.bizid}').trigger("change.select2");
selelct.on("change",function(e){ selelct.off("select2:select select2:clear").on("select2:select select2:clear",function(){
var companyId= $(this).val(); var companyId= $(this).val();
$.post(ext.contextPath + "/user/processSection/getProcessSection4Select.do", {companyId:companyId}, function(data) { $.post(ext.contextPath + "/user/processSection/getProcessSection4Select.do", {companyId:companyId}, function(data) {
$("#processsectionid").empty(); $("#processsectionid").empty();
@ -149,8 +149,8 @@ var selectMPint = function(pid) {
formatResult: function formatRepo(repo){return repo.text;}, // 函数用来渲染结果 formatResult: function formatRepo(repo){return repo.text;}, // 函数用来渲染结果
formatSelection: function formatRepoSelection(repo){return repo.text;} // 函数用于呈现当前的选择 formatSelection: function formatRepoSelection(repo){return repo.text;} // 函数用于呈现当前的选择
}); });
selelct_.val('').trigger("change"); selelct_.val('').trigger("change.select2");
},'json'); },'json');
}); });
} }
},'json'); },'json');

View File

@ -1,406 +1,435 @@
<%@ page language="java" pageEncoding="UTF-8"%> <%@ page language="java" pageEncoding="UTF-8" %>
<%@ taglib uri="http://java.sun.com/jstl/core_rt" prefix="c"%> <%@ 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/functions" prefix="fn" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
<%@ page import="com.sipai.entity.base.ServerObject"%> <%@ page import="com.sipai.entity.base.ServerObject" %>
<%@ taglib uri="http://www.springsecurity.org/jsp" prefix="security"%> <%@ taglib uri="http://www.springsecurity.org/jsp" prefix="security" %>
<!DOCTYPE html> <!DOCTYPE html>
<!-- <html lang="zh-CN"> --> <!-- <html lang="zh-CN"> -->
<!-- BEGIN HEAD --> <!-- BEGIN HEAD -->
<head> <head>
<title><%= ServerObject.atttable.get("TOPTITLE")%></title> <title><%= ServerObject.atttable.get("TOPTITLE")%>
</title>
<!-- 引用页头及CSS页--> <!-- 引用页头及CSS页-->
<jsp:include page="/jsp/inc.jsp"></jsp:include> <jsp:include page="/jsp/inc.jsp"></jsp:include>
<style type="text/css"> <style type="text/css">
.select2-container .select2-selection--single{ .select2-container .select2-selection--single {
height:34px; height: 34px;
line-height: 34px; line-height: 34px;
} }
.select2-selection__arrow{
margin-top:3px;
}
</style>
<script type="text/javascript">
var companyId = "";
var showMaintenanceList = function(id) {
$.post(ext.contextPath + '/maintenance/showMaintenanceList4Equipment.do', {equipmentId:id} , function(data) {
$("#subDiv").html(data);
openModal('subMaintenanceModal');
});
};
var showHandleDetailList = function(id) {
stopBubbleDefaultEvent();
$.post(ext.contextPath + '/maintenance/showHandleDetailList4Equipment.do', {equipmentId:id} , function(data) {
$("#subDiv").html(data);
openModal('handleDetailModal');
});
};
var viewEquipmentFun = function(equipmentName,equipmentCardID,id) {
$.post(ext.contextPath + '/equipment/viewEquipmentCard.do', {equipmentName:equipmentName,equipmentCardID:equipmentCardID,id:id} , function(data) {
$("#subEquipmentDiv").html(data);
openModal('subEquipmentModal');
});
};
var addFun = function() { .select2-selection__arrow {
$.post(ext.contextPath + '/work/kpipoint/add.do', {} , function(data) { margin-top: 3px;
$("#subDiv").html(data); }
openModal('subModal'); </style>
}); <script type="text/javascript">
}; var companyId = "";
var showMaintenanceList = function (id) {
$.post(ext.contextPath + '/maintenance/showMaintenanceList4Equipment.do', {equipmentId: id}, function (data) {
$("#subDiv").html(data);
openModal('subMaintenanceModal');
});
};
var showHandleDetailList = function (id) {
stopBubbleDefaultEvent();
$.post(ext.contextPath + '/maintenance/showHandleDetailList4Equipment.do', {equipmentId: id}, function (data) {
$("#subDiv").html(data);
openModal('handleDetailModal');
});
};
var viewEquipmentFun = function (equipmentName, equipmentCardID, id) {
$.post(ext.contextPath + '/equipment/viewEquipmentCard.do', {
equipmentName: equipmentName,
equipmentCardID: equipmentCardID,
id: id
}, function (data) {
$("#subEquipmentDiv").html(data);
openModal('subEquipmentModal');
});
};
var editFun = function(id) { var addFun = function () {
stopBubbleDefaultEvent(); $.post(ext.contextPath + '/work/kpipoint/add.do', {}, function (data) {
$.post(ext.contextPath + '/work/kpipoint/edit.do', {id:id} , function(data) { $("#subDiv").html(data);
$("#subDiv").html(data); openModal('subModal');
openModal('subModal'); });
}); };
};
var viewFun = function(id){ var editFun = function (id) {
$.post(ext.contextPath + '/work/kpipoint/view.do', {id:id} , function(data) { stopBubbleDefaultEvent();
$("#subDiv").html(data); $.post(ext.contextPath + '/work/kpipoint/edit.do', {id: id}, function (data) {
openModal('subModal'); $("#subDiv").html(data);
}); openModal('subModal');
}; });
};
var viewFun = function (id) {
$.post(ext.contextPath + '/work/kpipoint/view.do', {id: id}, function (data) {
$("#subDiv").html(data);
openModal('subModal');
});
};
var deleteFun = function (id) {
stopBubbleDefaultEvent();
swal({
text: "您确定要删除此记录?",
dangerMode: true,
buttons: {
cancel: {
text: "取消",
value: null,
visible: true,
className: "btn btn-default btn-sm",
closeModal: true,
},
confirm: {
text: "确定",
value: true,
visible: true,
className: "btn btn-danger btn-sm",
closeModal: true
}
}
})
.then(function (willDelete) {
if (willDelete) {
$.post(ext.contextPath + '/work/kpipoint/delete.do', {id: id}, function (data) {
if (data == 1) {
$("#table").bootstrapTable('refresh');
} else {
showAlert('d', '删除失败', 'mainAlertdiv');
}
});
var deleteFun = function(id) {
stopBubbleDefaultEvent();
swal({
text: "您确定要删除此记录?",
dangerMode: true,
buttons: {
cancel: {
text: "取消",
value: null,
visible: true,
className: "btn btn-default btn-sm",
closeModal: true,
},
confirm: {
text: "确定",
value: true,
visible: true,
className: "btn btn-danger btn-sm",
closeModal: true
}
}
})
.then(function(willDelete) {
if (willDelete) {
$.post(ext.contextPath + '/work/kpipoint/delete.do', {id : id}, function(data) {
if(data==1){
$("#table").bootstrapTable('refresh');
}else{
showAlert('d','删除失败','mainAlertdiv');
} }
}); });
};
} //删除多条资产类型数据
}); var deletesFun = function () {
}; var checkedItems = $("#table").bootstrapTable('getSelections');
//删除多条资产类型数据 var datas = "";
var deletesFun = function() { $.each(checkedItems, function (index, item) {
var checkedItems = $("#table").bootstrapTable('getSelections'); datas += item.id + ",";
var datas=""; });
$.each(checkedItems, function(index, item){ if (datas == "") {
datas+=item.id+","; showAlert('d', '请先选择记录', 'mainAlertdiv');
}); } else {
if(datas==""){ swal({
showAlert('d','请先选择记录','mainAlertdiv'); text: "您确定要删除此记录?",
}else{ dangerMode: true,
swal({ buttons: {
text: "您确定要删除此记录?", cancel: {
dangerMode: true, text: "取消",
buttons: { value: null,
cancel: { visible: true,
text: "取消", className: "btn btn-default btn-sm",
value: null, closeModal: true,
visible: true, },
className: "btn btn-default btn-sm", confirm: {
closeModal: true, text: "确定",
}, value: true,
confirm: { visible: true,
text: "确定", className: "btn btn-danger btn-sm",
value: true, closeModal: true
visible: true, }
className: "btn btn-danger btn-sm", }
closeModal: true })
} .then(function (willDelete) {
} if (willDelete) {
}) $.post(ext.contextPath + '/work/kpipoint/deletes.do', {ids: datas}, function (data) {
.then(function(willDelete) { if (data > 0) {
if (willDelete) { $("#table").bootstrapTable('refresh');
$.post(ext.contextPath + '/work/kpipoint/deletes.do', {ids:datas} , function(data) { } else {
if(data>0){ showAlert('d', '删除失败', 'mainAlertdiv');
$("#table").bootstrapTable('refresh'); }
}else{ });
showAlert('d','删除失败','mainAlertdiv');
} }
}); });
}
} };
}); var dosearch = function () {
} $("#table").bootstrapTable('refresh');
}; };
var dosearch = function() { var loadProcessSectionSelect = function (bizId) {
$("#table").bootstrapTable('refresh'); if (!bizId) {
}; refreshSelect();
var refreshSelect = function() { return;
var selelct_ =$("#processSection").select2({ }
data: null, $.post(ext.contextPath + "/user/processSection/getProcessSection4Select.do", {companyId: bizId}, function (data) {
placeholder:'请选择',//默认文字提示 $("#processSection").empty();
allowClear: true,//允许清空 var selelct_ = $("#processSection").select2({
escapeMarkup: function (markup) { return markup; }, // 自定义格式化防止xss注入 data: data,
language: "zh-CN", cache: false,
minimumInputLength: 0, placeholder: '请选择',
minimumResultsForSearch: 10,//数据超过十个启用搜索框 allowClear: true,
}); escapeMarkup: function (markup) {
$("#processSection").empty(); return markup;
// $("#table").bootstrapTable('refresh', {data:null}); },
$(".select2-selection--single").css({'height':'30px','paddingTop':'4px'}) language: "zh-CN",
}; minimumInputLength: 0,
minimumResultsForSearch: 10,
formatResult: function formatRepo(repo) {
$(function() { return repo.text;
$.post(ext.contextPath + "/user/getSearchBizsByUserId4Select.do", {}, function(data) { },
if(data.length == 1){ formatSelection: function formatRepoSelection(repo) {
//选择厂区为一个厂时隐藏选择框 return repo.text;
$("#search_code").css("display", "none"); }
$("#company").text(data[0].text); });
companyId=data[0].id; $(".select2-selection--single").css({'height': '30px', 'paddingTop': '4px'});
dosearch(); // 初始化时仅刷新控件显示,不触发查询
$.post(ext.contextPath + "/user/processSection/getProcessSection4Select.do", {companyId:companyId}, function(data) { selelct_.val('').trigger("change.select2");
$("#processSection").empty(); // 用select2事件触发查询避免普通change导致选中文本被立即重置
var selelct_ =$("#processSection").select2({ selelct_.off("select2:select select2:clear").on("select2:select select2:clear", function () {
// 让select2先完成渲染再执行查询
setTimeout(function () {
dosearch();
}, 0);
});
}, 'json');
};
var refreshSelect = function () {
var selelct_ = $("#processSection").select2({
data: null,
placeholder: '请选择',//默认文字提示
allowClear: true,//允许清空
escapeMarkup: function (markup) {
return markup;
}, // 自定义格式化防止xss注入
language: "zh-CN",
minimumInputLength: 0,
minimumResultsForSearch: 10,//数据超过十个启用搜索框
});
$("#processSection").empty();
// $("#table").bootstrapTable('refresh', {data:null});
$(".select2-selection--single").css({'height': '30px', 'paddingTop': '4px'})
};
$(function () {
$.post(ext.contextPath + "/user/getSearchBizsByUserId4Select.do", {}, function (data) {
if (data.length == 1) {
//选择厂区为一个厂时隐藏选择框
$("#search_code").css("display", "none");
$("#company").text(data[0].text);
companyId = data[0].id;
loadProcessSectionSelect(companyId);
dosearch();
} else {
// 当前页面可能不展示厂区下拉search_code被注释兜底按当前厂区/首个厂区加载工艺段
if ($("#search_code").length == 0) {
companyId = (typeof unitId !== "undefined" && unitId) ? unitId : data[0].id;
loadProcessSectionSelect(companyId);
dosearch();
return;
}
$("#company").css("display", "none");
var selelct = $("#search_code").select2({
data: data, data: data,
cache : false, placeholder: '请选择',//默认文字提示
placeholder:'请选择',//默认文字提示
allowClear: true,//允许清空 allowClear: true,//允许清空
escapeMarkup: function (markup) { return markup; }, // 自定义格式化防止xss注入 escapeMarkup: function (markup) {
language: "zh-CN", return markup;
}, // 自定义格式化防止xss注入
language: "zh-CN",
minimumInputLength: 0, minimumInputLength: 0,
minimumResultsForSearch: 10,//数据超过十个启用搜索框 minimumResultsForSearch: 10,//数据超过十个启用搜索框
formatResult: function formatRepo(repo){return repo.text;}, // 函数用来渲染结果 formatResult: function formatRepo(repo) {
formatSelection: function formatRepoSelection(repo){return repo.text;} // 函数用于呈现当前的选择 return repo.text;
}); }, // 函数用来渲染结果
$(".select2-selection--single").css({'height':'30px','paddingTop':'4px'}) formatSelection: function formatRepoSelection(repo) {
selelct_.val('').trigger("change"); return repo.text;
selelct_.on("change",function(e){ } // 函数用于呈现当前的选择
dosearch(); });
}); $(".select2-selection--single").css({'height': '30px', 'paddingTop': '4px'})
selelct.val('').trigger("change.select2");
},'json'); refreshSelect();
}else{ selelct.off("select2:select select2:clear").on("select2:select select2:clear", function () {
$("#company").css("display", "none"); companyId = $(this).val();
var selelct=$("#search_code").select2({ dosearch();
data : data , refreshSelect();
placeholder:'请选择',//默认文字提示 loadProcessSectionSelect(companyId);
allowClear: true,//允许清空 });
escapeMarkup: function (markup) { return markup; }, // 自定义格式化防止xss注入
language: "zh-CN",
minimumInputLength: 0,
minimumResultsForSearch: 10,//数据超过十个启用搜索框
formatResult: function formatRepo(repo){return repo.text;}, // 函数用来渲染结果
formatSelection: function formatRepoSelection(repo){return repo.text;} // 函数用于呈现当前的选择
});
$(".select2-selection--single").css({'height':'30px','paddingTop':'4px'})
selelct.val('').trigger("change");
refreshSelect();
selelct.on("change",function(e){
companyId= $(this).val();
dosearch();
refreshSelect();
$.post(ext.contextPath + "/user/processSection/getProcessSection4Select.do", {companyId:companyId}, function(data) {
$("#processSection").empty();
var selelct_ =$("#processSection").select2({
data: data,
cache : false,
placeholder:'请选择',//默认文字提示
allowClear: true,//允许清空
escapeMarkup: function (markup) { return markup; }, // 自定义格式化防止xss注入
language: "zh-CN",
minimumInputLength: 0,
minimumResultsForSearch: 10,//数据超过十个启用搜索框
formatResult: function formatRepo(repo){return repo.text;}, // 函数用来渲染结果
formatSelection: function formatRepoSelection(repo){return repo.text;} // 函数用于呈现当前的选择
});
$(".select2-selection--single").css({'height':'30px','paddingTop':'4px'})
selelct_.val('').trigger("change");
selelct_.on("change",function(e){
dosearch();
});
},'json');
});
}
},'json');
$("#table").bootstrapTable({ // 对应table标签的id
url: ext.contextPath + '/work/kpipoint/getlist.do', // 获取表格数据的url
cache: false, // 设置为 false 禁用 AJAX 数据缓存, 默认为true
striped: true, //表格显示条纹默认为false
pagination: true, // 在表格底部显示分页组件默认false
pageList: [10, 20,50], // 设置页面可以显示的数据条数
pageSize: 50, // 页面数据条数
pageNumber: 1, // 首页页码
sidePagination: 'server', // 设置为服务器端分页
queryParams: function (params) { // 请求服务器数据时发送的参数可以在这里添加额外的查询参数返回false则终止请求
return {
rows: params.limit, // 每页要显示的数据条数
page: params.offset/params.limit+1, // 每页显示数据的开始页码
sort: params.sort, // 要排序的字段
order: params.order,
search_name : $('#search_name').val(),
companyId: unitId,
pSectionId: $("#processSection").val(),
} }
}, }, 'json');
sortName: 'grade', // 要排序的字段
sortOrder: 'asc', // 排序规则 $("#table").bootstrapTable({ // 对应table标签的id
onClickRow: function (row) {//单击行事件,执行查看功能 url: ext.contextPath + '/work/kpipoint/getlist.do', // 获取表格数据的url
viewFun(row.id); cache: false, // 设置为 false 禁用 AJAX 数据缓存, 默认为true
}, striped: true, //表格显示条纹默认为false
columns: [ pagination: true, // 在表格底部显示分页组件默认false
{ pageList: [10, 20, 50], // 设置页面可以显示的数据条数
checkbox: true, // 显示一个勾选框 pageSize: 50, // 页面数据条数
},{ pageNumber: 1, // 首页页码
field: 'mpointid', // 返回json数据中的name sidePagination: 'server', // 设置为服务器端分页
title: '测量点编号', // 表格表头显示文字 queryParams: function (params) { // 请求服务器数据时发送的参数可以在这里添加额外的查询参数返回false则终止请求
align: 'center', // 左右居中 return {
valign: 'middle' // 上下居中 rows: params.limit, // 每页要显示的数据条数
},{ page: params.offset / params.limit + 1, // 每页显示数据的开始页码
field: 'mpointname', // 返回json数据中的name sort: params.sort, // 要排序的字段
title: '测量点名称', // 表格表头显示文字 order: params.order,
align: 'center', // 左右居中 search_name: $('#search_name').val(),
valign: 'middle' // 上下居中 companyId: companyId,
},{ pSectionId: $("#processSection").val(),
field: 'bizid', // 返回json数据中的name
title: '所属厂区', // 表格表头显示文字
align: 'center', // 左右居中
valign: 'middle' // 上下居中
},{
field: 'processectionname', // 返回json数据中的name
title: '工艺段', // 表格表头显示文字
align: 'center', // 左右居中
valign: 'middle' // 上下居中
},{
field: 'grade', // 返回json数据中的name
title: '重要等级', // 表格表头显示文字
align: 'center', // 左右居中
valign: 'middle'
},{
title: "操作",
align: 'center',
valign: 'middle',
width: 120, // 定义列的宽度单位为像素px
formatter: function (value, row, index) {
var buts="";
buts+= '<security:authorize buttonUrl="work/scadaPic/edit.do">';
buts+= '<button class="btn btn-default btn-sm" title="编辑" onclick="editFun(\'' + row.id + '\')"><i class="fa fa-edit"></i><span class="hidden-md hidden-lg"> 编辑</span></button>';
buts+= '</security:authorize>';
buts+= '<security:authorize buttonUrl="work/scadaPic/delete.do">';
buts+='<button class="btn btn-default btn-sm" title="删除" onclick="deleteFun(\''+row.id+'\')"><i class="fa fa fa-trash-o"></i><span class="hidden-md hidden-lg">删除</span></button';
buts+= '</security:authorize>';
buts='<div class="btn-group" >'+buts+'</div>';
return buts;
} }
},
sortName: 'grade', // 要排序的字段
sortOrder: 'asc', // 排序规则
onClickRow: function (row) {//单击行事件,执行查看功能
viewFun(row.id);
},
columns: [
{
checkbox: true, // 显示一个勾选框
}, {
field: 'mpointid', // 返回json数据中的name
title: '测量点编号', // 表格表头显示文字
align: 'center', // 左右居中
valign: 'middle' // 上下居中
}, {
field: 'mpointname', // 返回json数据中的name
title: '测量点名称', // 表格表头显示文字
align: 'center', // 左右居中
valign: 'middle' // 上下居中
}, {
field: 'bizid', // 返回json数据中的name
title: '所属厂区', // 表格表头显示文字
align: 'center', // 左右居中
valign: 'middle' // 上下居中
}, {
field: 'processectionname', // 返回json数据中的name
title: '工艺段', // 表格表头显示文字
align: 'center', // 左右居中
valign: 'middle' // 上下居中
}, {
field: 'grade', // 返回json数据中的name
title: '重要等级', // 表格表头显示文字
align: 'center', // 左右居中
valign: 'middle'
}, {
title: "操作",
align: 'center',
valign: 'middle',
width: 120, // 定义列的宽度单位为像素px
formatter: function (value, row, index) {
var buts = "";
buts += '<security:authorize buttonUrl="work/scadaPic/edit.do">';
buts += '<button class="btn btn-default btn-sm" title="编辑" onclick="editFun(\'' + row.id + '\')"><i class="fa fa-edit"></i><span class="hidden-md hidden-lg"> 编辑</span></button>';
buts += '</security:authorize>';
buts += '<security:authorize buttonUrl="work/scadaPic/delete.do">';
buts += '<button class="btn btn-default btn-sm" title="删除" onclick="deleteFun(\'' + row.id + '\')"><i class="fa fa fa-trash-o"></i><span class="hidden-md hidden-lg">删除</span></button';
buts += '</security:authorize>';
buts = '<div class="btn-group" >' + buts + '</div>';
return buts;
}
}
],
onLoadSuccess: function () { //加载成功时执行
adjustBootstrapTableView("table");
},
onLoadError: function () { //加载失败时执行
console.info("加载数据失败");
} }
],
onLoadSuccess: function(){ //加载成功时执行 })
adjustBootstrapTableView("table");
},
onLoadError: function(){ //加载失败时执行 });
console.info("加载数据失败"); </script>
}
})
});
</script>
</head> </head>
<body onload="initMenu()" class="hold-transition ${cu.themeclass} sidebar-mini"> <body onload="initMenu()" class="hold-transition ${cu.themeclass} sidebar-mini">
<div class="wrapper"> <div class="wrapper">
<!-- 引用top --> <!-- 引用top -->
<%-- <jsp:include page="/jsp/top.jsp"></jsp:include> --%> <%-- <jsp:include page="/jsp/top.jsp"></jsp:include> --%>
<!-- 菜单栏 --> <!-- 菜单栏 -->
<%-- <jsp:include page="/jsp/left.jsp"></jsp:include> --%> <%-- <jsp:include page="/jsp/left.jsp"></jsp:include> --%>
<div class="content-wrapper"> <div class="content-wrapper">
<!-- Content Header (Page header) --> <!-- Content Header (Page header) -->
<section class="content-header"> <section class="content-header">
<h1 id ="head_title"></h1> <h1 id="head_title"></h1>
<ol class="breadcrumb"> <ol class="breadcrumb">
<li><a id ='head_firstlevel' href="#"><i class="fa fa-dashboard"></i> </a></li> <li><a id='head_firstlevel' href="#"><i class="fa fa-dashboard"></i> </a></li>
<!-- <li class="active">Here</li> --> <!-- <li class="active">Here</li> -->
</ol> </ol>
</section> </section>
<!-- Main content --> <!-- Main content -->
<section class="content container-fluid"> <section class="content container-fluid">
<div id="mainAlertdiv"></div> <div id="mainAlertdiv"></div>
<div id="subDiv"></div> <div id="subDiv"></div>
<div id="mpSubDiv"></div> <div id="mpSubDiv"></div>
<div > <div>
<!-- <div class="form-group"> <!-- <div class="form-group">
<label class="form-label" id="companylabel">水厂:</label> <label class="form-label" id="companylabel">水厂:</label>
<label class="form-label" id="company" style="width:180px;border: none;background: transparent;" ></label> <label class="form-label" id="company" style="width:180px;border: none;background: transparent;" ></label>
<select class="form-control select2 " id="search_code" name ="search_code" style="width: 220px;"></select> <select class="form-control select2 " id="search_code" name ="search_code" style="width: 220px;"></select>
</div> --> </div> -->
<div class="form-group form-inline" style="padding:0;"> <div class="form-group form-inline" style="padding:0;">
<div class="form-group form-inline">
<div class="form-group form-inline"> <div class="form-group form-inline">
<div class="form-group form-inline"> <div class="btn-group" style="width: 220px;padding-bottom:10px;">
<div class="btn-group" style="width: 220px;padding-bottom:10px;"> <security:authorize buttonUrl="work/scadaPic/add.do">
<security:authorize buttonUrl="work/scadaPic/add.do"> <button type="button" class="btn btn-default btn-sm" onclick="addFun();"><i
<button type="button" class="btn btn-default btn-sm" onclick="addFun();"><i class="fa fa-plus"></i> 新增</button> class="fa fa-plus"></i> 新增
<button type="button" class="btn btn-default btn-sm" onclick="deletesFun();"><i class="fa fa-trash-o"></i> 删除</button> </button>
</security:authorize> <button type="button" class="btn btn-default btn-sm" onclick="deletesFun();"><i
</div> class="fa fa-trash-o"></i> 删除
</div> </button>
</div> </security:authorize>
<div class="form-group pull-right" >
<div class="input-group input-group-sm" style="width: 250px;">
<input type="text" id="search_name" name="search_name" class="form-control pull-right" placeholder="编号">
<div class="input-group-btn">
<button class="btn btn-default" onclick="dosearch();"><i class="fa fa-search"></i></button>
</div>
</div> </div>
</div> </div>
<div class="form-group pull-right">
<label class="form-label">工艺段</label>
<select class="form-control select2 " id="processSection" name ="processSection" style="width: 220px;"></select>
</div>
</div> </div>
<div class="form-group pull-right">
<table id="table"></table> <div class="input-group input-group-sm" style="width: 250px;">
<input type="text" id="search_name" name="search_name" class="form-control pull-right"
placeholder="编号">
<div class="input-group-btn">
<button class="btn btn-default" onclick="dosearch();"><i class="fa fa-search"></i>
</button>
</div>
</div>
</div>
<div class="form-group pull-right">
<label class="form-label">工艺段</label>
<select class="form-control select2 " id="processSection" name="processSection"
style="width: 220px;"></select>
</div>
</div> </div>
<table id="table"></table>
</div>
</section>
<!-- /.content -->
</div> </section>
<%-- <jsp:include page="/jsp/bottom.jsp"></jsp:include> --%> <!-- /.content -->
<%-- <jsp:include page="/jsp/side.jsp"></jsp:include> --%>
</div> </div>
<%-- <jsp:include page="/jsp/bottom.jsp"></jsp:include> --%>
<%-- <jsp:include page="/jsp/side.jsp"></jsp:include> --%>
</div>
</body> </body>
<!-- 文件上传--> <!-- 文件上传-->
<link rel="stylesheet" href="<%=request.getContextPath()%>/node_modules/bootstrap-fileinput/css/fileinput.min.css"/> <link rel="stylesheet" href="<%=request.getContextPath()%>/node_modules/bootstrap-fileinput/css/fileinput.min.css"/>
<%-- <script type="text/javascript" src="<%=request.getContextPath()%>/node_modules/bootstrap-fileinput/js/fileinput.min.js" charset="utf-8"></script> <%-- <script type="text/javascript" src="<%=request.getContextPath()%>/node_modules/bootstrap-fileinput/js/fileinput.min.js" charset="utf-8"></script>
<script type="text/javascript" src="<%=request.getContextPath()%>/node_modules/bootstrap-fileinput/js/locales/zh.js" charset="utf-8"></script> --%> <script type="text/javascript" src="<%=request.getContextPath()%>/node_modules/bootstrap-fileinput/js/locales/zh.js" charset="utf-8"></script> --%>
<script type="text/javascript"> <script type="text/javascript">
document.write("<scr"+"ipt src=\"<%=request.getContextPath()%>/node_modules/bootstrap-fileinput/js/fileinput.min.js\"></sc"+"ript>") document.write("<scr" + "ipt src=\"<%=request.getContextPath()%>/node_modules/bootstrap-fileinput/js/fileinput.min.js\"></sc" + "ript>")
document.write("<scr"+"ipt src=\"<%=request.getContextPath()%>/node_modules/bootstrap-fileinput/js/locales/zh.js\"></sc"+"ript>") document.write("<scr" + "ipt src=\"<%=request.getContextPath()%>/node_modules/bootstrap-fileinput/js/locales/zh.js\"></sc" + "ript>")
</script> </script>
<!-- 引入ChartJS--> <!-- 引入ChartJS-->
<script type="text/javascript" src="<%=request.getContextPath()%>/node_modules/chart.js/dist/Chart.min.js" charset="utf-8"></script> <script type="text/javascript" src="<%=request.getContextPath()%>/node_modules/chart.js/dist/Chart.min.js"
<script type="text/javascript" src="<%=request.getContextPath()%>/node_modules/chart.js/dist/Chart.bundle.min.js" charset="utf-8"></script> charset="utf-8"></script>
<script type="text/javascript" src="<%=request.getContextPath()%>/node_modules/chart.js/dist/Chart.bundle.min.js"
charset="utf-8"></script>
<!-- 引入daterangepicker--> <!-- 引入daterangepicker-->
<link rel="stylesheet" href="<%=request.getContextPath()%>/plugins/bootstrap-daterangepicker/daterangepicker.css"/> <link rel="stylesheet" href="<%=request.getContextPath()%>/plugins/bootstrap-daterangepicker/daterangepicker.css"/>
<script type="text/javascript" src="<%=request.getContextPath()%>/plugins/bootstrap-daterangepicker/moment.min.js" charset="utf-8"></script> <script type="text/javascript" src="<%=request.getContextPath()%>/plugins/bootstrap-daterangepicker/moment.min.js"
<script type="text/javascript" src="<%=request.getContextPath()%>/plugins/bootstrap-daterangepicker/daterangepicker.js" charset="utf-8"></script> charset="utf-8"></script>
<script type="text/javascript" src="<%=request.getContextPath()%>/plugins/bootstrap-daterangepicker/daterangepicker.js"
charset="utf-8"></script>
<!-- echarts--> <!-- echarts-->
<script type="text/javascript" src="<%=request.getContextPath()%>/plugins/echarts/echarts.js" charset="utf-8"></script> <script type="text/javascript" src="<%=request.getContextPath()%>/plugins/echarts/echarts.js" charset="utf-8"></script>
<script type="text/javascript" src="<%=request.getContextPath()%>/plugins/echarts/macarons.js" charset="utf-8"></script> <script type="text/javascript" src="<%=request.getContextPath()%>/plugins/echarts/macarons.js" charset="utf-8"></script>

View File

@ -139,6 +139,34 @@ var companyId = "";
var dosearch = function() { var dosearch = function() {
$("#table").bootstrapTable('refresh'); $("#table").bootstrapTable('refresh');
}; };
var loadProcessSectionSelect = function(companyId) {
if (!companyId) {
refreshSelect();
return;
}
$.post(ext.contextPath + "/user/processSection/getProcessSection4Select.do", {companyId:companyId}, function(data) {
$("#processSection").empty();
var selelct_ =$("#processSection").select2({
data: data,
cache : false,
placeholder:'请选择',
allowClear: true,
escapeMarkup: function (markup) { return markup; },
language: "zh-CN",
minimumInputLength: 0,
minimumResultsForSearch: 10,
formatResult: function formatRepo(repo){return repo.text;},
formatSelection: function formatRepoSelection(repo){return repo.text;}
});
$(".select2-selection--single").css({'height':'30px','paddingTop':'4px'});
selelct_.val('').trigger("change.select2");
selelct_.off("select2:select select2:clear").on("select2:select select2:clear",function(){
setTimeout(function(){
dosearch();
},0);
});
},'json');
};
var refreshSelect = function() { var refreshSelect = function() {
var selelct_ =$("#processSection").select2({ var selelct_ =$("#processSection").select2({
data: null, data: null,
@ -163,27 +191,7 @@ var companyId = "";
$("#company").text(data[0].text); $("#company").text(data[0].text);
companyId=data[0].id; companyId=data[0].id;
dosearch(); dosearch();
$.post(ext.contextPath + "/user/processSection/getProcessSection4Select.do", {companyId:companyId}, function(data) { loadProcessSectionSelect(companyId);
$("#processSection").empty();
var selelct_ =$("#processSection").select2({
data: data,
cache : false,
placeholder:'请选择',//默认文字提示
allowClear: true,//允许清空
escapeMarkup: function (markup) { return markup; }, // 自定义格式化防止xss注入
language: "zh-CN",
minimumInputLength: 0,
minimumResultsForSearch: 10,//数据超过十个启用搜索框
formatResult: function formatRepo(repo){return repo.text;}, // 函数用来渲染结果
formatSelection: function formatRepoSelection(repo){return repo.text;} // 函数用于呈现当前的选择
});
$(".select2-selection--single").css({'height':'30px','paddingTop':'4px'})
selelct_.val('').trigger("change");
selelct_.on("change",function(e){
dosearch();
});
},'json');
}else{ }else{
$("#company").css("display", "none"); $("#company").css("display", "none");
var selelct=$("#search_code").select2({ var selelct=$("#search_code").select2({
@ -198,33 +206,14 @@ var companyId = "";
formatSelection: function formatRepoSelection(repo){return repo.text;} // 函数用于呈现当前的选择 formatSelection: function formatRepoSelection(repo){return repo.text;} // 函数用于呈现当前的选择
}); });
$(".select2-selection--single").css({'height':'30px','paddingTop':'4px'}) $(".select2-selection--single").css({'height':'30px','paddingTop':'4px'})
selelct.val('').trigger("change"); selelct.val('').trigger("change.select2");
refreshSelect(); refreshSelect();
selelct.on("change",function(e){ selelct.off("select2:select select2:clear").on("select2:select select2:clear",function(){
companyId= $(this).val(); companyId= $(this).val();
dosearch(); dosearch();
refreshSelect(); refreshSelect();
$.post(ext.contextPath + "/user/processSection/getProcessSection4Select.do", {companyId:companyId}, function(data) { loadProcessSectionSelect(companyId);
$("#processSection").empty(); });
var selelct_ =$("#processSection").select2({
data: data,
cache : false,
placeholder:'请选择',//默认文字提示
allowClear: true,//允许清空
escapeMarkup: function (markup) { return markup; }, // 自定义格式化防止xss注入
language: "zh-CN",
minimumInputLength: 0,
minimumResultsForSearch: 10,//数据超过十个启用搜索框
formatResult: function formatRepo(repo){return repo.text;}, // 函数用来渲染结果
formatSelection: function formatRepoSelection(repo){return repo.text;} // 函数用于呈现当前的选择
});
$(".select2-selection--single").css({'height':'30px','paddingTop':'4px'})
selelct_.val('').trigger("change");
selelct_.on("change",function(e){
dosearch();
});
},'json');
});
} }
},'json'); },'json');

View File

@ -366,8 +366,8 @@
} // 函数用于呈现当前的选择 } // 函数用于呈现当前的选择
}); });
$(".select2-selection--single").css({'height': '30px', 'paddingTop': '4px'}) $(".select2-selection--single").css({'height': '30px', 'paddingTop': '4px'})
selelct_.val('').trigger("change"); selelct_.val('').trigger("change.select2");
selelct_.on("change", function (e) { selelct_.off("select2:select select2:clear").on("select2:select select2:clear", function (e) {
dosearch(); dosearch();
}); });
}, 'json'); }, 'json');
@ -394,9 +394,8 @@
} // 函数用于呈现当前的选择 } // 函数用于呈现当前的选择
}); });
$(".select2-selection--single").css({'height': '30px', 'paddingTop': '4px'}) $(".select2-selection--single").css({'height': '30px', 'paddingTop': '4px'})
selelct.val('').trigger("change"); selelct.val('').trigger("change.select2");
//refreshSelect(); selelct.off("select2:select select2:clear").on("select2:select select2:clear", function (e) {
selelct.on("change", function (e) {
companyId = $(this).val(); companyId = $(this).val();
//dosearch(); //dosearch();
//refreshSelect(); //refreshSelect();
@ -422,8 +421,8 @@
} // 函数用于呈现当前的选择 } // 函数用于呈现当前的选择
}); });
$(".select2-selection--single").css({'height': '30px', 'paddingTop': '4px'}) $(".select2-selection--single").css({'height': '30px', 'paddingTop': '4px'})
selelct_.val('').trigger("change"); selelct_.val('').trigger("change.select2");
selelct_.on("change", function (e) { selelct_.off("select2:select select2:clear").on("select2:select select2:clear", function (e) {
dosearch(); dosearch();
}); });
}, 'json'); }, 'json');

View File

@ -325,8 +325,8 @@
} // 函数用于呈现当前的选择 } // 函数用于呈现当前的选择
}); });
$(".select2-selection--single").css({'height': '30px', 'paddingTop': '4px'}) $(".select2-selection--single").css({'height': '30px', 'paddingTop': '4px'})
selelct_.val('').trigger("change"); selelct_.val('').trigger("change.select2");
selelct_.on("change", function (e) { selelct_.off("select2:select select2:clear").on("select2:select select2:clear", function (e) {
dosearch(); dosearch();
}); });
}, 'json'); }, 'json');
@ -353,9 +353,8 @@
} // 函数用于呈现当前的选择 } // 函数用于呈现当前的选择
}); });
$(".select2-selection--single").css({'height': '30px', 'paddingTop': '4px'}) $(".select2-selection--single").css({'height': '30px', 'paddingTop': '4px'})
selelct.val('').trigger("change"); selelct.val('').trigger("change.select2");
//refreshSelect(); selelct.off("select2:select select2:clear").on("select2:select select2:clear", function (e) {
selelct.on("change", function (e) {
companyId = $(this).val(); companyId = $(this).val();
//dosearch(); //dosearch();
//refreshSelect(); //refreshSelect();
@ -381,8 +380,8 @@
} // 函数用于呈现当前的选择 } // 函数用于呈现当前的选择
}); });
$(".select2-selection--single").css({'height': '30px', 'paddingTop': '4px'}) $(".select2-selection--single").css({'height': '30px', 'paddingTop': '4px'})
selelct_.val('').trigger("change"); selelct_.val('').trigger("change.select2");
selelct_.on("change", function (e) { selelct_.off("select2:select select2:clear").on("select2:select select2:clear", function (e) {
dosearch(); dosearch();
}); });
}, 'json'); }, 'json');

View File

@ -133,8 +133,8 @@
formatSelection: function formatRepoSelection(repo) { return repo.text; } // 函数用于呈现当前的选择 formatSelection: function formatRepoSelection(repo) { return repo.text; } // 函数用于呈现当前的选择
}); });
$(".select2-selection--single").css({ 'height': '30px', 'paddingTop': '4px' }) $(".select2-selection--single").css({ 'height': '30px', 'paddingTop': '4px' })
selelct_.val('').trigger("change"); selelct_.val('').trigger("change.select2");
selelct_.on("change", function (e) { selelct_.off("select2:select select2:clear").on("select2:select select2:clear", function () {
$("#table").bootstrapTable('refresh'); $("#table").bootstrapTable('refresh');
}); });

View File

@ -149,8 +149,8 @@
minimumInputLength: 0, minimumInputLength: 0,
minimumResultsForSearch: 10,//数据超过十个启用搜索框 minimumResultsForSearch: 10,//数据超过十个启用搜索框
}); });
select.val('').trigger("change"); select.val('').trigger("change.select2");
select.on("change", function (e) { select.off("select2:select select2:clear").on("select2:select select2:clear", function () {
$("#table").bootstrapTable('refresh'); $("#table").bootstrapTable('refresh');
}); });
@ -166,8 +166,8 @@
minimumInputLength: 0, minimumInputLength: 0,
minimumResultsForSearch: 10,//数据超过十个启用搜索框 minimumResultsForSearch: 10,//数据超过十个启用搜索框
}); });
select.val("").trigger("change"); select.val("").trigger("change.select2");
select.on("change", function (e) { select.off("select2:select select2:clear").on("select2:select select2:clear", function () {
$("#table").bootstrapTable('refresh'); $("#table").bootstrapTable('refresh');
}); });
@ -196,8 +196,8 @@
} // 函数用于呈现当前的选择 } // 函数用于呈现当前的选择
}); });
$(".select2-selection--single").css({'height': '30px', 'paddingTop': '4px'}) $(".select2-selection--single").css({'height': '30px', 'paddingTop': '4px'})
selelct_.val('').trigger("change"); selelct_.val('').trigger("change.select2");
selelct_.on("change", function (e) { selelct_.off("select2:select select2:clear").on("select2:select select2:clear", function () {
$("#table").bootstrapTable('refresh'); $("#table").bootstrapTable('refresh');
}); });

View File

@ -181,8 +181,8 @@
minimumInputLength: 0, minimumInputLength: 0,
minimumResultsForSearch: 10,//数据超过十个启用搜索框 minimumResultsForSearch: 10,//数据超过十个启用搜索框
}); });
select.val('').trigger("change"); select.val('').trigger("change.select2");
select.on("change", function (e) { select.off("select2:select select2:clear").on("select2:select select2:clear", function () {
$("#table").bootstrapTable('refresh', {pageNumber: 1}); $("#table").bootstrapTable('refresh', {pageNumber: 1});
}); });
@ -200,8 +200,8 @@
minimumInputLength: 0, minimumInputLength: 0,
minimumResultsForSearch: 10,//数据超过十个启用搜索框 minimumResultsForSearch: 10,//数据超过十个启用搜索框
}); });
select.val("").trigger("change"); select.val("").trigger("change.select2");
select.on("change", function (e) { select.off("select2:select select2:clear").on("select2:select select2:clear", function () {
$("#table").bootstrapTable('refresh', {pageNumber: 1}); $("#table").bootstrapTable('refresh', {pageNumber: 1});
}); });
@ -231,8 +231,8 @@
} // 函数用于呈现当前的选择 } // 函数用于呈现当前的选择
}); });
$(".select2-selection--single").css({'height': '30px', 'paddingTop': '4px'}) $(".select2-selection--single").css({'height': '30px', 'paddingTop': '4px'})
selelct_.val('').trigger("change"); selelct_.val('').trigger("change.select2");
selelct_.on("change", function (e) { selelct_.off("select2:select select2:clear").on("select2:select select2:clear", function () {
$("#table").bootstrapTable('refresh', {pageNumber: 1}); $("#table").bootstrapTable('refresh', {pageNumber: 1});
}); });

View File

@ -108,7 +108,7 @@
formatSelection: function formatRepoSelection(repo){return repo.text;} // 函数用于呈现当前的选择 formatSelection: function formatRepoSelection(repo){return repo.text;} // 函数用于呈现当前的选择
}); });
if(data!=null && data.length>0){ if(data!=null && data.length>0){
selelct_.val(data[0].id).trigger("change"); selelct_.val(data[0].id).trigger("change.select2");
} }
},'json'); },'json');
}else{ }else{
@ -126,7 +126,7 @@
formatResult: function formatRepo(repo){return repo.text;}, // 函数用来渲染结果 formatResult: function formatRepo(repo){return repo.text;}, // 函数用来渲染结果
formatSelection: function formatRepoSelection(repo){return repo.text;} // 函数用于呈现当前的选择 formatSelection: function formatRepoSelection(repo){return repo.text;} // 函数用于呈现当前的选择
}); });
selelct.on("change",function(e){ selelct.off("select2:select select2:clear").on("select2:select select2:clear",function(){
companyId= $(this).val(); companyId= $(this).val();
//重新选择厂区后清空设备和工艺段数据 //重新选择厂区后清空设备和工艺段数据
$("#equipname").val(""); $("#equipname").val("");
@ -134,7 +134,7 @@
$("#processSectionId").val(""); $("#processSectionId").val("");
$("#processectionname").val(""); $("#processectionname").val("");
}); });
selelct.val('').trigger("change"); selelct.val('').trigger("change.select2");
} }
},'json'); },'json');
@ -149,9 +149,9 @@
.updateStatus('plannedenddt', 'NOT_VALIDATED',null) .updateStatus('plannedenddt', 'NOT_VALIDATED',null)
.validateField('plannedenddt'); .validateField('plannedenddt');
}); });
$("#active").select2({minimumResultsForSearch: 10}).val('${Active_True}').trigger("change"); $("#active").select2({minimumResultsForSearch: 10}).val('${Active_True}').trigger("change.select2");
$("#maintenanceWay").select2({minimumResultsForSearch: 10}).val('${INTER_MAINTENANCE}').trigger("change"); $("#maintenanceWay").select2({minimumResultsForSearch: 10}).val('${INTER_MAINTENANCE}').trigger("change.select2");
}); });
//选择设备根据厂区id选择厂内设备 //选择设备根据厂区id选择厂内设备
var selectEquipmentCard = function() { var selectEquipmentCard = function() {
$.post(ext.contextPath + '/equipment/showEquipmentCardForSelect.do', {companyId:companyId, equipmentId:$("#equipid").val()} , function(data) { $.post(ext.contextPath + '/equipment/showEquipmentCardForSelect.do', {companyId:companyId, equipmentId:$("#equipid").val()} , function(data) {

View File

@ -101,7 +101,7 @@
formatSelection: function formatRepoSelection(repo){return repo.text;} // 函数用于呈现当前的选择 formatSelection: function formatRepoSelection(repo){return repo.text;} // 函数用于呈现当前的选择
}); });
if(data!=null && data.length>0){ if(data!=null && data.length>0){
selelct_.val(data[0].id).trigger("change"); selelct_.val(data[0].id).trigger("change.select2");
} }
},'json'); },'json');
}else{ }else{
@ -119,7 +119,7 @@
formatSelection: function formatRepoSelection(repo){return repo.text;} // 函数用于呈现当前的选择 formatSelection: function formatRepoSelection(repo){return repo.text;} // 函数用于呈现当前的选择
}); });
selelct.on("change",function(e){ selelct.off("select2:select select2:clear").on("select2:select select2:clear", function(e){
companyId = $(this).val(); companyId = $(this).val();
//重新选择厂区后清空设备和工艺段数据 //重新选择厂区后清空设备和工艺段数据
if(companyId != "${maintenanceDetail.companyid}"){ if(companyId != "${maintenanceDetail.companyid}"){
@ -129,10 +129,10 @@
$("#processectionname").val(""); $("#processectionname").val("");
} }
}); });
selelct.val('${maintenanceDetail.companyid}').trigger("change"); selelct.val('${maintenanceDetail.companyid}').trigger("change.select2");
} }
},'json'); },'json');
$("#maintenanceWay").select2({minimumResultsForSearch: 10}).val("${maintenanceDetail.maintenanceWay}").trigger("change"); $("#maintenanceWay").select2({minimumResultsForSearch: 10}).val("${maintenanceDetail.maintenanceWay}").trigger("change.select2");
//选择时间 //选择时间
$('#startDate').datepicker({ $('#startDate').datepicker({
language: 'zh-CN', language: 'zh-CN',

View File

@ -133,8 +133,8 @@
formatSelection: function formatRepoSelection(repo){return repo.text;} // 函数用于呈现当前的选择 formatSelection: function formatRepoSelection(repo){return repo.text;} // 函数用于呈现当前的选择
}); });
$(".select2-selection--single").css({'height':'30px','paddingTop':'4px'}) $(".select2-selection--single").css({'height':'30px','paddingTop':'4px'})
selelct_.val('').trigger("change"); selelct_.val('').trigger("change.select2");
selelct_.on("change",function(e){ selelct_.off("select2:select select2:clear").on("select2:select select2:clear",function(){
dosearch(); dosearch();
}); });
@ -153,9 +153,9 @@
formatSelection: function formatRepoSelection(repo){return repo.text;} // 函数用于呈现当前的选择 formatSelection: function formatRepoSelection(repo){return repo.text;} // 函数用于呈现当前的选择
}); });
$(".select2-selection--single").css({'height':'30px','paddingTop':'4px'}) $(".select2-selection--single").css({'height':'30px','paddingTop':'4px'})
selelct.val('').trigger("change"); selelct.val('').trigger("change.select2");
refreshSelect(); refreshSelect();
selelct.on("change",function(e){ selelct.off("select2:select select2:clear").on("select2:select select2:clear",function(){
companyId= $(this).val(); companyId= $(this).val();
dosearch(); dosearch();
refreshSelect(); refreshSelect();
@ -174,8 +174,8 @@
formatSelection: function formatRepoSelection(repo){return repo.text;} // 函数用于呈现当前的选择 formatSelection: function formatRepoSelection(repo){return repo.text;} // 函数用于呈现当前的选择
}); });
$(".select2-selection--single").css({'height':'30px','paddingTop':'4px'}) $(".select2-selection--single").css({'height':'30px','paddingTop':'4px'})
selelct_.val('').trigger("change"); selelct_.val('').trigger("change.select2");
selelct_.on("change",function(e){ selelct_.off("select2:select select2:clear").on("select2:select select2:clear",function(){
dosearch(); dosearch();
}); });
},'json'); },'json');

View File

@ -418,17 +418,12 @@
var getExs = function () { var getExs = function () {
var datas = selectionIds.toString(); var datas = selectionIds.toString();
if (datas === "") { var params = {
showAlert('d', '请选中之后导出', 'mainAlertdiv'); responseType: 'blob',
} else { ids: datas,
// window.open(ext.contextPath + "/workorder/workorderDetail/doExportMain.do?ids=" + datas + "&type=maintain"); type: 'maintain'
var params = { };
responseType: 'blob', postExcelFile(params, ext.contextPath + '/workorder/workorderDetail/doExportMain.do');
ids: datas,
type: 'maintain'
};
postExcelFile(params, ext.contextPath + '/workorder/workorderDetail/doExportMain.do');
}
} }
function postExcelFile(params, url) { //params是post请求需要的参数url是请求url地址 function postExcelFile(params, url) { //params是post请求需要的参数url是请求url地址

View File

@ -117,11 +117,7 @@
//金山项目导出(暂时不用) //金山项目导出(暂时不用)
var getExs_JS = function () { var getExs_JS = function () {
var datas = selectionIds; var datas = selectionIds;
if (datas == 0) { window.open(ext.contextPath + "/workorder/workorderDetail/doExportRepairJS.do?ids=" + datas + "&type=repair");
showAlert('d', '请选中之后导出', 'mainAlertdiv');
} else {
window.open(ext.contextPath + "/workorder/workorderDetail/doExportRepairJS.do?ids=" + datas + "&type=repair");
}
} }
/** /**
@ -129,16 +125,12 @@
*/ */
var getExs = function () { var getExs = function () {
var datas = selectionIds; var datas = selectionIds;
if (datas == 0) { var params = {
showAlert('d', '请选中之后导出', 'mainAlertdiv'); responseType: 'blob',
} else { ids: datas,
var params = { type: 'repair'
responseType: 'blob', };
ids: datas, postExcelFile(params, ext.contextPath + '/workorder/workorderDetail/doExportRepair.do');
type: 'repair'
};
postExcelFile(params, ext.contextPath + '/workorder/workorderDetail/doExportRepair.do');
}
} }
function postExcelFile(params, url) { //params是post请求需要的参数url是请求url地址 function postExcelFile(params, url) { //params是post请求需要的参数url是请求url地址

205
使用说明文档.md Normal file
View File

@ -0,0 +1,205 @@
# SIPAIIS_WMS_JSSW 项目使用说明文档
## 项目概述
SIPAIIS_WMS_JSSW 是一个基于Java的污水处理管理平台SIPAIIS Wastewater Management System for JSSW旨在提供全过程的监控、管理和优化服务。该系统采用Spring框架、MyBatis ORM、Activiti工作流引擎等技术栈支持多种集成如Redis缓存、RabbitMQ消息队列、MQTT物联网通信等。
### 技术栈
- **后端框架**: Spring 5.1.12, Spring MVC, Spring Security
- **数据库ORM**: MyBatis 3.5.1
- **工作流**: Activiti 5.22.0
- **缓存**: Redis, Redisson
- **消息队列**: RabbitMQ, Spring AMQP
- **物联网**: MQTT (Eclipse Paho), Modbus
- **搜索**: Elasticsearch
- **定时任务**: Quartz, XXL-Job
- **WebSocket**: 实时通信
- **报表**: JasperReports, iText PDF
- **Excel处理**: Apache POI, EasyExcel
- **对象存储**: MinIO
- **其他**: Hutool工具库, Lombok, Knife4j API文档
### 部署环境
- **Java版本**: JDK 1.8
- **应用服务器**: 支持WAR包部署如Tomcat, Jetty
- **数据库**: SQL Server (推荐), 支持其他JDBC兼容数据库
- **端口**: 默认8088 (Jetty)
## 功能点梳理
基于项目中的功能清单,系统包含以下主要功能模块:
### 1. 用户管理
- 用户信息增删改查
- 部门组织架构管理
- 角色权限管理
- 菜单配置
### 2. 监控与报警
- 测点数据管理
- 报警记录管理
- 报警类型配置
- 设备监控
### 3. 设备管理
- 设备基本信息管理
- 设备类型分类
- 设备生命周期管理(采购、入库、出库、维修、保养、巡检、点检、润滑、校准、报废等)
- 设备统计、分析、排名、对比、预警
- BIM设备关联与巡检
### 4. 工单管理
- 工作工单管理
- 维修工单处理
- 保养工单管理
- 工单执行与跟踪
### 5. 备品备件管理
- 备件库存管理
- 采购记录管理
- 库存调拨管理
### 6. 视频监控
- 摄像头管理
- NVR设备管理
### 7. 巡检与考核
- 巡检计划与记录
- KPI考核指标、计划、结果
### 8. 消息与通知
- 系统消息管理
- 短信用户管理
### 9. 工作流管理
- 工作流流程管理
- 请假申请
- 任务管理
### 10. 文档管理
- 文档资料管理
- 图书资料管理
- 图纸管理
### 11. 报表与分析
- 数据报表管理
- 工作日报管理
- 能源数据监控
- 生产工艺参数
- 生产指标管理
### 12. 可视化展示
- 大屏数据可视化
- 工艺流程图管理
- 页面布局配置
### 13. 计划与交互
- 生产计划管理
- 页面交互配置
- 数据类型定义
### 14. BIM管理
- BIM模型管理
- BIM巡检路线
- BIM设备关联
- BIM报警记录
### 15. 其他模块
- 缓存数据管理
- JSP配置
- 第三方接口集成
## 功能点间相互依赖关系
### 核心依赖关系
- **设备管理** 是基础模块其他模块如报警、工单、巡检、BIM等均依赖设备数据。
- **测点与报警**: 报警依赖测点数据和设备状态。
- **工单管理**: 维修、保养工单依赖设备信息和工作流引擎。
- **工作流**: 工单、请假、任务等流程依赖Activiti工作流。
- **巡检与KPI**: 巡检记录影响KPI考核结果。
- **BIM**: BIM设备关联依赖设备管理BIM报警依赖报警模块。
- **报表与可视化**: 依赖各模块数据进行统计和展示。
- **消息通知**: 报警、工单等事件触发消息发送。
- **缓存与消息队列**: Redis用于缓存热点数据RabbitMQ用于异步处理MQTT用于设备通信。
### 数据流依赖
- 用户权限控制贯穿所有模块。
- 设备数据是中心,影响报警、工单、统计等。
- 工作流驱动业务流程,如工单审批。
- 集成技术Redis、MQ、ES支持高性能和实时性。
## 安装与部署
### 环境要求
- JDK 1.8+
- Maven 3.6+
- 数据库SQL Server 2012+ 或兼容JDBC数据库
- Redis 2.6+
- RabbitMQ 5.9+
- Elasticsearch 3.2+
- MinIO (可选,用于文件存储)
### 部署步骤
1. **克隆或下载项目**:
```
git clone <repository-url>
cd SIPAIIS_WMS_JSSW
```
2. **配置数据库**:
- 编辑 `src/main/resources/db.properties` 配置数据库连接。
- 执行数据库脚本初始化表结构。
3. **配置其他服务**:
- 编辑 `config.properties`, `redis.properties`, `rabbitmq.properties`, `mqtt.properties` 等配置文件。
- 启动Redis, RabbitMQ, Elasticsearch等服务。
4. **构建项目**:
```
mvn clean package
```
5. **部署WAR包**:
- 将 `target/TGLW.war` 部署到Tomcat或Jetty。
- 默认端口8088可在 `pom.xml` 中修改。
6. **启动应用**:
- 访问 `http://localhost:8088/` 进入系统。
### 配置说明
- **applicationContext.xml**: Spring上下文配置XXL-Job执行器。
- **log4j.properties**: 日志配置。
- **xxl-job-executor.properties**: 定时任务配置。
## 使用指南
### 系统登录
- 默认管理员账号:根据配置。
- 登录后,根据角色权限访问不同模块。
### 主要操作
- **设备管理**: 添加设备,配置参数,监控状态。
- **报警处理**: 查看报警记录,确认处理。
- **工单执行**: 创建工单,分配任务,跟踪进度。
- **巡检管理**: 设置巡检计划,记录巡检结果。
- **报表查看**: 生成各类统计报表。
- **BIM可视化**: 查看3D模型关联设备数据。
### API文档
- 使用Knife4j查看API接口`http://localhost:8088/doc.html`
### 维护与监控
- 日志文件:`logs/TGLW.log`
- 监控Redis、MQ连接状态。
- 使用XXL-Job管理定时任务。
## 注意事项
- 确保数据库和外部服务正常运行。
- 定期备份数据。
- 根据实际环境调整配置文件。
- 安全配置启用Spring Security定期更新密码。
## 联系与支持
- 项目维护者JSSW团队
- 版本0.0.1-SNAPSHOT
- 更新日期2026-04-05