diff --git a/casic-iris-acs/pom.xml b/casic-iris-acs/pom.xml index 3bc35aa..c13d0cf 100644 --- a/casic-iris-acs/pom.xml +++ b/casic-iris-acs/pom.xml @@ -27,6 +27,16 @@ casic-admin-support ${casic.version} + + com.casic + casic-export-support + 1.0.0-SNAPSHOT + + + com.casic + casic-expands-office + 1.0.0-SNAPSHOT + @@ -46,7 +56,6 @@ - diff --git a/casic-iris-acs/pom.xml b/casic-iris-acs/pom.xml index 3bc35aa..c13d0cf 100644 --- a/casic-iris-acs/pom.xml +++ b/casic-iris-acs/pom.xml @@ -27,6 +27,16 @@ casic-admin-support ${casic.version} + + com.casic + casic-export-support + 1.0.0-SNAPSHOT + + + com.casic + casic-expands-office + 1.0.0-SNAPSHOT + @@ -46,7 +56,6 @@ - diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/config/ExportProperties.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/config/ExportProperties.java new file mode 100644 index 0000000..edb8f92 --- /dev/null +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/config/ExportProperties.java @@ -0,0 +1,12 @@ +package com.casic.missiles.modular.system.config; + +import lombok.Data; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.stereotype.Component; + +@Component +@ConfigurationProperties(prefix = "iris.config") +@Data +public class ExportProperties { + private String exportPath; +} diff --git a/casic-iris-acs/pom.xml b/casic-iris-acs/pom.xml index 3bc35aa..c13d0cf 100644 --- a/casic-iris-acs/pom.xml +++ b/casic-iris-acs/pom.xml @@ -27,6 +27,16 @@ casic-admin-support ${casic.version} + + com.casic + casic-export-support + 1.0.0-SNAPSHOT + + + com.casic + casic-expands-office + 1.0.0-SNAPSHOT + @@ -46,7 +56,6 @@ - diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/config/ExportProperties.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/config/ExportProperties.java new file mode 100644 index 0000000..edb8f92 --- /dev/null +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/config/ExportProperties.java @@ -0,0 +1,12 @@ +package com.casic.missiles.modular.system.config; + +import lombok.Data; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.stereotype.Component; + +@Component +@ConfigurationProperties(prefix = "iris.config") +@Data +public class ExportProperties { + private String exportPath; +} diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/AcsPermissionController.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/AcsPermissionController.java index 61a158f..227fa57 100644 --- a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/AcsPermissionController.java +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/AcsPermissionController.java @@ -1,15 +1,22 @@ package com.casic.missiles.modular.system.controller; import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.base.response.ResponseData; import com.casic.missiles.core.common.service.ICommonPermissionService; import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.modular.system.enums.ExportEnum; import com.casic.missiles.modular.system.warpper.AcsPermissionWarpper; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.dao.DuplicateKeyException; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.*; import org.springframework.beans.factory.annotation.Autowired; import com.baomidou.mybatisplus.plugins.Page; import com.baomidou.mybatisplus.mapper.EntityWrapper; + +import java.io.IOException; import java.util.List; import java.util.Map; @@ -17,6 +24,8 @@ import com.casic.missiles.modular.system.model.AcsPermission; import com.casic.missiles.modular.system.service.IAcsPermissionService; +import javax.servlet.http.HttpServletResponse; + /** * 控制器 * @@ -25,8 +34,8 @@ */ @Controller @RequestMapping("/acsPermission") -public class AcsPermissionController extends BaseController { - +public class AcsPermissionController extends ExportController { + private static final Logger logger = LoggerFactory.getLogger(AcsPermissionController.class); @Autowired private IAcsPermissionService acsPermissionService; @@ -60,6 +69,21 @@ } /** + * 导出员工授权列表 + */ + @RequestMapping(value = "/exportStaffPerm") + @ResponseBody + public void exportStaffPerm(HttpServletResponse response, String doorCode, String keyword, Long deptId) throws IOException { + Page> page = new PageFactory>().defaultPage(); + page.setCurrent(1); + page.setSearchCount(false); + page.setSize(Integer.MAX_VALUE); + List> list = acsPermissionService.selectStaffList(page,doorCode,keyword,deptId); + new AcsPermissionWarpper(list).warp(); + super.exportExcel(ExportEnum.STAFF_PERMISSION_EXPORT, list, response); + } + + /** * 访客授权列表 */ @RequestMapping(value = "/listVisitorPerm") @@ -73,6 +97,21 @@ } /** + * 导出访客授权列表 + */ + @RequestMapping(value = "/exportVisitorPerm") + @ResponseBody + public void listVisitorPerm(HttpServletResponse response, String doorCode,String keyword,String beginTime,String endTime) throws IOException{ + Page> page = new PageFactory>().defaultPage(); + page.setCurrent(1); + page.setSearchCount(false); + page.setSize(Integer.MAX_VALUE); + List> list = acsPermissionService.selectVisitorList(page,doorCode,keyword,beginTime,endTime); + new AcsPermissionWarpper(list).warp(); + super.exportExcel(ExportEnum.VISITOR_PERMISSION_EXPORT, list, response); + } + + /** * 新增授权 * @param doorCode 门禁编号 * @param personList 人员ID列表 @@ -84,7 +123,15 @@ public Object add(@RequestParam("doorCode")String doorCode, @RequestParam("personList")List personList, @RequestParam("strategyId")Integer strategyId){ - acsPermissionService.addPermission(doorCode, personList, strategyId); + try{ + acsPermissionService.addPermission(doorCode, personList, strategyId); + }catch (Exception e){ + if (e instanceof DuplicateKeyException) { + return ResponseData.error("重复授权"); + } + logger.error("添加授权失败", e); + return ResponseData.error("添加授权失败"); + } return ResponseData.success(); } diff --git a/casic-iris-acs/pom.xml b/casic-iris-acs/pom.xml index 3bc35aa..c13d0cf 100644 --- a/casic-iris-acs/pom.xml +++ b/casic-iris-acs/pom.xml @@ -27,6 +27,16 @@ casic-admin-support ${casic.version} + + com.casic + casic-export-support + 1.0.0-SNAPSHOT + + + com.casic + casic-expands-office + 1.0.0-SNAPSHOT + @@ -46,7 +56,6 @@ - diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/config/ExportProperties.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/config/ExportProperties.java new file mode 100644 index 0000000..edb8f92 --- /dev/null +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/config/ExportProperties.java @@ -0,0 +1,12 @@ +package com.casic.missiles.modular.system.config; + +import lombok.Data; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.stereotype.Component; + +@Component +@ConfigurationProperties(prefix = "iris.config") +@Data +public class ExportProperties { + private String exportPath; +} diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/AcsPermissionController.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/AcsPermissionController.java index 61a158f..227fa57 100644 --- a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/AcsPermissionController.java +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/AcsPermissionController.java @@ -1,15 +1,22 @@ package com.casic.missiles.modular.system.controller; import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.base.response.ResponseData; import com.casic.missiles.core.common.service.ICommonPermissionService; import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.modular.system.enums.ExportEnum; import com.casic.missiles.modular.system.warpper.AcsPermissionWarpper; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.dao.DuplicateKeyException; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.*; import org.springframework.beans.factory.annotation.Autowired; import com.baomidou.mybatisplus.plugins.Page; import com.baomidou.mybatisplus.mapper.EntityWrapper; + +import java.io.IOException; import java.util.List; import java.util.Map; @@ -17,6 +24,8 @@ import com.casic.missiles.modular.system.model.AcsPermission; import com.casic.missiles.modular.system.service.IAcsPermissionService; +import javax.servlet.http.HttpServletResponse; + /** * 控制器 * @@ -25,8 +34,8 @@ */ @Controller @RequestMapping("/acsPermission") -public class AcsPermissionController extends BaseController { - +public class AcsPermissionController extends ExportController { + private static final Logger logger = LoggerFactory.getLogger(AcsPermissionController.class); @Autowired private IAcsPermissionService acsPermissionService; @@ -60,6 +69,21 @@ } /** + * 导出员工授权列表 + */ + @RequestMapping(value = "/exportStaffPerm") + @ResponseBody + public void exportStaffPerm(HttpServletResponse response, String doorCode, String keyword, Long deptId) throws IOException { + Page> page = new PageFactory>().defaultPage(); + page.setCurrent(1); + page.setSearchCount(false); + page.setSize(Integer.MAX_VALUE); + List> list = acsPermissionService.selectStaffList(page,doorCode,keyword,deptId); + new AcsPermissionWarpper(list).warp(); + super.exportExcel(ExportEnum.STAFF_PERMISSION_EXPORT, list, response); + } + + /** * 访客授权列表 */ @RequestMapping(value = "/listVisitorPerm") @@ -73,6 +97,21 @@ } /** + * 导出访客授权列表 + */ + @RequestMapping(value = "/exportVisitorPerm") + @ResponseBody + public void listVisitorPerm(HttpServletResponse response, String doorCode,String keyword,String beginTime,String endTime) throws IOException{ + Page> page = new PageFactory>().defaultPage(); + page.setCurrent(1); + page.setSearchCount(false); + page.setSize(Integer.MAX_VALUE); + List> list = acsPermissionService.selectVisitorList(page,doorCode,keyword,beginTime,endTime); + new AcsPermissionWarpper(list).warp(); + super.exportExcel(ExportEnum.VISITOR_PERMISSION_EXPORT, list, response); + } + + /** * 新增授权 * @param doorCode 门禁编号 * @param personList 人员ID列表 @@ -84,7 +123,15 @@ public Object add(@RequestParam("doorCode")String doorCode, @RequestParam("personList")List personList, @RequestParam("strategyId")Integer strategyId){ - acsPermissionService.addPermission(doorCode, personList, strategyId); + try{ + acsPermissionService.addPermission(doorCode, personList, strategyId); + }catch (Exception e){ + if (e instanceof DuplicateKeyException) { + return ResponseData.error("重复授权"); + } + logger.error("添加授权失败", e); + return ResponseData.error("添加授权失败"); + } return ResponseData.success(); } diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/RecognitionRecordsController.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/RecognitionRecordsController.java index afdee3f..d7ab253 100644 --- a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/RecognitionRecordsController.java +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/RecognitionRecordsController.java @@ -1,11 +1,17 @@ package com.casic.missiles.modular.system.controller; import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.base.response.ResponseData; import com.casic.missiles.core.common.service.ICommonPermissionService; import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.core.util.ToolUtil; +import com.casic.missiles.modular.system.enums.ExportEnum; import com.casic.missiles.modular.system.warpper.DeviceWarpper; import com.casic.missiles.modular.system.warpper.RecognitionRecordsWarpper; +import org.apache.commons.lang.StringUtils; +import org.hswebframework.expands.office.excel.ExcelIO; +import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; @@ -13,6 +19,10 @@ import org.springframework.beans.factory.annotation.Autowired; import com.baomidou.mybatisplus.plugins.Page; import com.baomidou.mybatisplus.mapper.EntityWrapper; + +import java.io.FileInputStream; +import java.io.IOException; +import java.util.HashMap; import java.util.List; import java.util.Map; @@ -21,6 +31,9 @@ import com.casic.missiles.modular.system.model.RecognitionRecords; import com.casic.missiles.modular.system.service.IRecognitionRecordsService; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + /** * 控制器 * @@ -29,7 +42,7 @@ */ @Controller @RequestMapping("/records") -public class RecognitionRecordsController extends BaseController { +public class RecognitionRecordsController extends ExportController { @Autowired private IRecognitionRecordsService recordsService; @@ -51,6 +64,22 @@ } /** + * 导出员工记录 + */ + @RequestMapping(value = "/exportStaff") + @ResponseBody + public void exportStaff(HttpServletResponse response,String keyword,Long personDeptId,String doorCode,String devCode,String beginTime,String endTime) throws IOException { + Page> page = new PageFactory>().defaultPage(); + page.setCurrent(1); + page.setSearchCount(false); + page.setSize(Integer.MAX_VALUE); + DataScope dataScope = permissionService.getCurrUserDataScope(); + List> list = recordsService.selectStaffDataScopePage(dataScope,page,keyword,personDeptId,doorCode,devCode,beginTime,endTime); + new RecognitionRecordsWarpper(list).warp(); + super.exportExcel(ExportEnum.STAFF_RECORDS_EXPORT, list, response); + } + + /** * 访客数据查询 */ @RequestMapping(value = "/listVisitor") @@ -65,6 +94,22 @@ } /** + * 导出访客记录 + */ + @RequestMapping(value = "/exportVisitor") + @ResponseBody + public void exportVisitor(HttpServletResponse response,String keyword,String doorCode,String devCode,String beginTime,String endTime) throws IOException{ + Page> page = new PageFactory>().defaultPage(); + page.setCurrent(1); + page.setSearchCount(false); + page.setSize(Integer.MAX_VALUE); + DataScope dataScope = permissionService.getCurrUserDataScope(); + List> list = recordsService.selectVisitorDataScopePage(dataScope,page,keyword,doorCode,devCode,beginTime,endTime); + new RecognitionRecordsWarpper(list).warp(); + super.exportExcel(ExportEnum.VISITOR_RECORDS_EXPORT, list, response); + } + + /** * 统计各部门进出记录 */ @RequestMapping(value = "/statisticByDept") diff --git a/casic-iris-acs/pom.xml b/casic-iris-acs/pom.xml index 3bc35aa..c13d0cf 100644 --- a/casic-iris-acs/pom.xml +++ b/casic-iris-acs/pom.xml @@ -27,6 +27,16 @@ casic-admin-support ${casic.version} + + com.casic + casic-export-support + 1.0.0-SNAPSHOT + + + com.casic + casic-expands-office + 1.0.0-SNAPSHOT + @@ -46,7 +56,6 @@ - diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/config/ExportProperties.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/config/ExportProperties.java new file mode 100644 index 0000000..edb8f92 --- /dev/null +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/config/ExportProperties.java @@ -0,0 +1,12 @@ +package com.casic.missiles.modular.system.config; + +import lombok.Data; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.stereotype.Component; + +@Component +@ConfigurationProperties(prefix = "iris.config") +@Data +public class ExportProperties { + private String exportPath; +} diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/AcsPermissionController.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/AcsPermissionController.java index 61a158f..227fa57 100644 --- a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/AcsPermissionController.java +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/AcsPermissionController.java @@ -1,15 +1,22 @@ package com.casic.missiles.modular.system.controller; import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.base.response.ResponseData; import com.casic.missiles.core.common.service.ICommonPermissionService; import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.modular.system.enums.ExportEnum; import com.casic.missiles.modular.system.warpper.AcsPermissionWarpper; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.dao.DuplicateKeyException; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.*; import org.springframework.beans.factory.annotation.Autowired; import com.baomidou.mybatisplus.plugins.Page; import com.baomidou.mybatisplus.mapper.EntityWrapper; + +import java.io.IOException; import java.util.List; import java.util.Map; @@ -17,6 +24,8 @@ import com.casic.missiles.modular.system.model.AcsPermission; import com.casic.missiles.modular.system.service.IAcsPermissionService; +import javax.servlet.http.HttpServletResponse; + /** * 控制器 * @@ -25,8 +34,8 @@ */ @Controller @RequestMapping("/acsPermission") -public class AcsPermissionController extends BaseController { - +public class AcsPermissionController extends ExportController { + private static final Logger logger = LoggerFactory.getLogger(AcsPermissionController.class); @Autowired private IAcsPermissionService acsPermissionService; @@ -60,6 +69,21 @@ } /** + * 导出员工授权列表 + */ + @RequestMapping(value = "/exportStaffPerm") + @ResponseBody + public void exportStaffPerm(HttpServletResponse response, String doorCode, String keyword, Long deptId) throws IOException { + Page> page = new PageFactory>().defaultPage(); + page.setCurrent(1); + page.setSearchCount(false); + page.setSize(Integer.MAX_VALUE); + List> list = acsPermissionService.selectStaffList(page,doorCode,keyword,deptId); + new AcsPermissionWarpper(list).warp(); + super.exportExcel(ExportEnum.STAFF_PERMISSION_EXPORT, list, response); + } + + /** * 访客授权列表 */ @RequestMapping(value = "/listVisitorPerm") @@ -73,6 +97,21 @@ } /** + * 导出访客授权列表 + */ + @RequestMapping(value = "/exportVisitorPerm") + @ResponseBody + public void listVisitorPerm(HttpServletResponse response, String doorCode,String keyword,String beginTime,String endTime) throws IOException{ + Page> page = new PageFactory>().defaultPage(); + page.setCurrent(1); + page.setSearchCount(false); + page.setSize(Integer.MAX_VALUE); + List> list = acsPermissionService.selectVisitorList(page,doorCode,keyword,beginTime,endTime); + new AcsPermissionWarpper(list).warp(); + super.exportExcel(ExportEnum.VISITOR_PERMISSION_EXPORT, list, response); + } + + /** * 新增授权 * @param doorCode 门禁编号 * @param personList 人员ID列表 @@ -84,7 +123,15 @@ public Object add(@RequestParam("doorCode")String doorCode, @RequestParam("personList")List personList, @RequestParam("strategyId")Integer strategyId){ - acsPermissionService.addPermission(doorCode, personList, strategyId); + try{ + acsPermissionService.addPermission(doorCode, personList, strategyId); + }catch (Exception e){ + if (e instanceof DuplicateKeyException) { + return ResponseData.error("重复授权"); + } + logger.error("添加授权失败", e); + return ResponseData.error("添加授权失败"); + } return ResponseData.success(); } diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/RecognitionRecordsController.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/RecognitionRecordsController.java index afdee3f..d7ab253 100644 --- a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/RecognitionRecordsController.java +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/RecognitionRecordsController.java @@ -1,11 +1,17 @@ package com.casic.missiles.modular.system.controller; import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.base.response.ResponseData; import com.casic.missiles.core.common.service.ICommonPermissionService; import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.core.util.ToolUtil; +import com.casic.missiles.modular.system.enums.ExportEnum; import com.casic.missiles.modular.system.warpper.DeviceWarpper; import com.casic.missiles.modular.system.warpper.RecognitionRecordsWarpper; +import org.apache.commons.lang.StringUtils; +import org.hswebframework.expands.office.excel.ExcelIO; +import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; @@ -13,6 +19,10 @@ import org.springframework.beans.factory.annotation.Autowired; import com.baomidou.mybatisplus.plugins.Page; import com.baomidou.mybatisplus.mapper.EntityWrapper; + +import java.io.FileInputStream; +import java.io.IOException; +import java.util.HashMap; import java.util.List; import java.util.Map; @@ -21,6 +31,9 @@ import com.casic.missiles.modular.system.model.RecognitionRecords; import com.casic.missiles.modular.system.service.IRecognitionRecordsService; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + /** * 控制器 * @@ -29,7 +42,7 @@ */ @Controller @RequestMapping("/records") -public class RecognitionRecordsController extends BaseController { +public class RecognitionRecordsController extends ExportController { @Autowired private IRecognitionRecordsService recordsService; @@ -51,6 +64,22 @@ } /** + * 导出员工记录 + */ + @RequestMapping(value = "/exportStaff") + @ResponseBody + public void exportStaff(HttpServletResponse response,String keyword,Long personDeptId,String doorCode,String devCode,String beginTime,String endTime) throws IOException { + Page> page = new PageFactory>().defaultPage(); + page.setCurrent(1); + page.setSearchCount(false); + page.setSize(Integer.MAX_VALUE); + DataScope dataScope = permissionService.getCurrUserDataScope(); + List> list = recordsService.selectStaffDataScopePage(dataScope,page,keyword,personDeptId,doorCode,devCode,beginTime,endTime); + new RecognitionRecordsWarpper(list).warp(); + super.exportExcel(ExportEnum.STAFF_RECORDS_EXPORT, list, response); + } + + /** * 访客数据查询 */ @RequestMapping(value = "/listVisitor") @@ -65,6 +94,22 @@ } /** + * 导出访客记录 + */ + @RequestMapping(value = "/exportVisitor") + @ResponseBody + public void exportVisitor(HttpServletResponse response,String keyword,String doorCode,String devCode,String beginTime,String endTime) throws IOException{ + Page> page = new PageFactory>().defaultPage(); + page.setCurrent(1); + page.setSearchCount(false); + page.setSize(Integer.MAX_VALUE); + DataScope dataScope = permissionService.getCurrUserDataScope(); + List> list = recordsService.selectVisitorDataScopePage(dataScope,page,keyword,doorCode,devCode,beginTime,endTime); + new RecognitionRecordsWarpper(list).warp(); + super.exportExcel(ExportEnum.VISITOR_RECORDS_EXPORT, list, response); + } + + /** * 统计各部门进出记录 */ @RequestMapping(value = "/statisticByDept") diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/AcsPermissionMapper.xml b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/AcsPermissionMapper.xml index 57db741..18e1925 100644 --- a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/AcsPermissionMapper.xml +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/AcsPermissionMapper.xml @@ -29,7 +29,7 @@ FROM acs_door door LEFT JOIN acs_permission per ON per.DOOR_CODE = door.DOOR_CODE - LEFT JOIN sys_person p ON per.PERSON_ID = p.ID + LEFT JOIN person_ext_view p ON per.PERSON_ID = p.ID WHERE p.DELFLAG = '0' OR p.DELFLAG IS NULL GROUP BY door.DOOR_CODE @@ -49,7 +49,7 @@ per.ID AS permissionId FROM acs_permission per LEFT JOIN acs_door door ON door.DOOR_CODE = per.DOOR_CODE - LEFT JOIN sys_person p ON per.PERSON_ID = p.ID + LEFT JOIN person_ext_view p ON per.PERSON_ID = p.ID LEFT JOIN acs_strategy stra ON per.STRATEGY_ID = stra.ID WHERE per.DOOR_CODE = #{doorCode} AND p.PERSON_TYPE = '1' @@ -76,13 +76,13 @@ per.ID AS permissionId FROM acs_permission per LEFT JOIN acs_door door ON door.DOOR_CODE = per.DOOR_CODE - LEFT JOIN sys_person p ON per.PERSON_ID = p.ID + LEFT JOIN person_ext_view p ON per.PERSON_ID = p.ID LEFT JOIN acs_strategy stra ON per.STRATEGY_ID = stra.ID WHERE per.DOOR_CODE = #{doorCode} AND p.PERSON_TYPE = '0' AND p.DELFLAG = '0' - AND ( (p.NAME LIKE CONNAT('%',#{keyword},'%')) OR (p.ID_CARD_NO LIKE CONNAT('%',#{keyword},'%')) ) + AND ( (p.NAME LIKE CONCAT('%',#{keyword},'%')) OR (p.ID_CARD_NO LIKE CONCAT('%',#{keyword},'%')) ) AND per.CREATE_TIME = ]]> #{beginTime} @@ -100,7 +100,7 @@ ID_CARD_NO as idCard, REMARKS as remarks, PERSON_CODE AS personCode - FROM sys_person + FROM person_ext_view WHERE ID NOT IN (SELECT PERSON_ID FROM acs_permission WHERE DOOR_CODE = #{doorCode}) AND PERSON_TYPE = #{personType} AND DELFLAG = '0' diff --git a/casic-iris-acs/pom.xml b/casic-iris-acs/pom.xml index 3bc35aa..c13d0cf 100644 --- a/casic-iris-acs/pom.xml +++ b/casic-iris-acs/pom.xml @@ -27,6 +27,16 @@ casic-admin-support ${casic.version} + + com.casic + casic-export-support + 1.0.0-SNAPSHOT + + + com.casic + casic-expands-office + 1.0.0-SNAPSHOT + @@ -46,7 +56,6 @@ - diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/config/ExportProperties.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/config/ExportProperties.java new file mode 100644 index 0000000..edb8f92 --- /dev/null +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/config/ExportProperties.java @@ -0,0 +1,12 @@ +package com.casic.missiles.modular.system.config; + +import lombok.Data; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.stereotype.Component; + +@Component +@ConfigurationProperties(prefix = "iris.config") +@Data +public class ExportProperties { + private String exportPath; +} diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/AcsPermissionController.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/AcsPermissionController.java index 61a158f..227fa57 100644 --- a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/AcsPermissionController.java +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/AcsPermissionController.java @@ -1,15 +1,22 @@ package com.casic.missiles.modular.system.controller; import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.base.response.ResponseData; import com.casic.missiles.core.common.service.ICommonPermissionService; import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.modular.system.enums.ExportEnum; import com.casic.missiles.modular.system.warpper.AcsPermissionWarpper; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.dao.DuplicateKeyException; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.*; import org.springframework.beans.factory.annotation.Autowired; import com.baomidou.mybatisplus.plugins.Page; import com.baomidou.mybatisplus.mapper.EntityWrapper; + +import java.io.IOException; import java.util.List; import java.util.Map; @@ -17,6 +24,8 @@ import com.casic.missiles.modular.system.model.AcsPermission; import com.casic.missiles.modular.system.service.IAcsPermissionService; +import javax.servlet.http.HttpServletResponse; + /** * 控制器 * @@ -25,8 +34,8 @@ */ @Controller @RequestMapping("/acsPermission") -public class AcsPermissionController extends BaseController { - +public class AcsPermissionController extends ExportController { + private static final Logger logger = LoggerFactory.getLogger(AcsPermissionController.class); @Autowired private IAcsPermissionService acsPermissionService; @@ -60,6 +69,21 @@ } /** + * 导出员工授权列表 + */ + @RequestMapping(value = "/exportStaffPerm") + @ResponseBody + public void exportStaffPerm(HttpServletResponse response, String doorCode, String keyword, Long deptId) throws IOException { + Page> page = new PageFactory>().defaultPage(); + page.setCurrent(1); + page.setSearchCount(false); + page.setSize(Integer.MAX_VALUE); + List> list = acsPermissionService.selectStaffList(page,doorCode,keyword,deptId); + new AcsPermissionWarpper(list).warp(); + super.exportExcel(ExportEnum.STAFF_PERMISSION_EXPORT, list, response); + } + + /** * 访客授权列表 */ @RequestMapping(value = "/listVisitorPerm") @@ -73,6 +97,21 @@ } /** + * 导出访客授权列表 + */ + @RequestMapping(value = "/exportVisitorPerm") + @ResponseBody + public void listVisitorPerm(HttpServletResponse response, String doorCode,String keyword,String beginTime,String endTime) throws IOException{ + Page> page = new PageFactory>().defaultPage(); + page.setCurrent(1); + page.setSearchCount(false); + page.setSize(Integer.MAX_VALUE); + List> list = acsPermissionService.selectVisitorList(page,doorCode,keyword,beginTime,endTime); + new AcsPermissionWarpper(list).warp(); + super.exportExcel(ExportEnum.VISITOR_PERMISSION_EXPORT, list, response); + } + + /** * 新增授权 * @param doorCode 门禁编号 * @param personList 人员ID列表 @@ -84,7 +123,15 @@ public Object add(@RequestParam("doorCode")String doorCode, @RequestParam("personList")List personList, @RequestParam("strategyId")Integer strategyId){ - acsPermissionService.addPermission(doorCode, personList, strategyId); + try{ + acsPermissionService.addPermission(doorCode, personList, strategyId); + }catch (Exception e){ + if (e instanceof DuplicateKeyException) { + return ResponseData.error("重复授权"); + } + logger.error("添加授权失败", e); + return ResponseData.error("添加授权失败"); + } return ResponseData.success(); } diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/RecognitionRecordsController.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/RecognitionRecordsController.java index afdee3f..d7ab253 100644 --- a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/RecognitionRecordsController.java +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/RecognitionRecordsController.java @@ -1,11 +1,17 @@ package com.casic.missiles.modular.system.controller; import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.base.response.ResponseData; import com.casic.missiles.core.common.service.ICommonPermissionService; import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.core.util.ToolUtil; +import com.casic.missiles.modular.system.enums.ExportEnum; import com.casic.missiles.modular.system.warpper.DeviceWarpper; import com.casic.missiles.modular.system.warpper.RecognitionRecordsWarpper; +import org.apache.commons.lang.StringUtils; +import org.hswebframework.expands.office.excel.ExcelIO; +import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; @@ -13,6 +19,10 @@ import org.springframework.beans.factory.annotation.Autowired; import com.baomidou.mybatisplus.plugins.Page; import com.baomidou.mybatisplus.mapper.EntityWrapper; + +import java.io.FileInputStream; +import java.io.IOException; +import java.util.HashMap; import java.util.List; import java.util.Map; @@ -21,6 +31,9 @@ import com.casic.missiles.modular.system.model.RecognitionRecords; import com.casic.missiles.modular.system.service.IRecognitionRecordsService; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + /** * 控制器 * @@ -29,7 +42,7 @@ */ @Controller @RequestMapping("/records") -public class RecognitionRecordsController extends BaseController { +public class RecognitionRecordsController extends ExportController { @Autowired private IRecognitionRecordsService recordsService; @@ -51,6 +64,22 @@ } /** + * 导出员工记录 + */ + @RequestMapping(value = "/exportStaff") + @ResponseBody + public void exportStaff(HttpServletResponse response,String keyword,Long personDeptId,String doorCode,String devCode,String beginTime,String endTime) throws IOException { + Page> page = new PageFactory>().defaultPage(); + page.setCurrent(1); + page.setSearchCount(false); + page.setSize(Integer.MAX_VALUE); + DataScope dataScope = permissionService.getCurrUserDataScope(); + List> list = recordsService.selectStaffDataScopePage(dataScope,page,keyword,personDeptId,doorCode,devCode,beginTime,endTime); + new RecognitionRecordsWarpper(list).warp(); + super.exportExcel(ExportEnum.STAFF_RECORDS_EXPORT, list, response); + } + + /** * 访客数据查询 */ @RequestMapping(value = "/listVisitor") @@ -65,6 +94,22 @@ } /** + * 导出访客记录 + */ + @RequestMapping(value = "/exportVisitor") + @ResponseBody + public void exportVisitor(HttpServletResponse response,String keyword,String doorCode,String devCode,String beginTime,String endTime) throws IOException{ + Page> page = new PageFactory>().defaultPage(); + page.setCurrent(1); + page.setSearchCount(false); + page.setSize(Integer.MAX_VALUE); + DataScope dataScope = permissionService.getCurrUserDataScope(); + List> list = recordsService.selectVisitorDataScopePage(dataScope,page,keyword,doorCode,devCode,beginTime,endTime); + new RecognitionRecordsWarpper(list).warp(); + super.exportExcel(ExportEnum.VISITOR_RECORDS_EXPORT, list, response); + } + + /** * 统计各部门进出记录 */ @RequestMapping(value = "/statisticByDept") diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/AcsPermissionMapper.xml b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/AcsPermissionMapper.xml index 57db741..18e1925 100644 --- a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/AcsPermissionMapper.xml +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/AcsPermissionMapper.xml @@ -29,7 +29,7 @@ FROM acs_door door LEFT JOIN acs_permission per ON per.DOOR_CODE = door.DOOR_CODE - LEFT JOIN sys_person p ON per.PERSON_ID = p.ID + LEFT JOIN person_ext_view p ON per.PERSON_ID = p.ID WHERE p.DELFLAG = '0' OR p.DELFLAG IS NULL GROUP BY door.DOOR_CODE @@ -49,7 +49,7 @@ per.ID AS permissionId FROM acs_permission per LEFT JOIN acs_door door ON door.DOOR_CODE = per.DOOR_CODE - LEFT JOIN sys_person p ON per.PERSON_ID = p.ID + LEFT JOIN person_ext_view p ON per.PERSON_ID = p.ID LEFT JOIN acs_strategy stra ON per.STRATEGY_ID = stra.ID WHERE per.DOOR_CODE = #{doorCode} AND p.PERSON_TYPE = '1' @@ -76,13 +76,13 @@ per.ID AS permissionId FROM acs_permission per LEFT JOIN acs_door door ON door.DOOR_CODE = per.DOOR_CODE - LEFT JOIN sys_person p ON per.PERSON_ID = p.ID + LEFT JOIN person_ext_view p ON per.PERSON_ID = p.ID LEFT JOIN acs_strategy stra ON per.STRATEGY_ID = stra.ID WHERE per.DOOR_CODE = #{doorCode} AND p.PERSON_TYPE = '0' AND p.DELFLAG = '0' - AND ( (p.NAME LIKE CONNAT('%',#{keyword},'%')) OR (p.ID_CARD_NO LIKE CONNAT('%',#{keyword},'%')) ) + AND ( (p.NAME LIKE CONCAT('%',#{keyword},'%')) OR (p.ID_CARD_NO LIKE CONCAT('%',#{keyword},'%')) ) AND per.CREATE_TIME = ]]> #{beginTime} @@ -100,7 +100,7 @@ ID_CARD_NO as idCard, REMARKS as remarks, PERSON_CODE AS personCode - FROM sys_person + FROM person_ext_view WHERE ID NOT IN (SELECT PERSON_ID FROM acs_permission WHERE DOOR_CODE = #{doorCode}) AND PERSON_TYPE = #{personType} AND DELFLAG = '0' diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/RecognitionRecordsMapper.xml b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/RecognitionRecordsMapper.xml index 42ce3b1..7a6573d 100644 --- a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/RecognitionRecordsMapper.xml +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/RecognitionRecordsMapper.xml @@ -31,7 +31,7 @@ FROM `recognition_records` re LEFT JOIN acs_door door ON door.DOOR_CODE = re.DOOR_CODE - LEFT JOIN sys_person p ON p.ID = re.PERSON_ID + LEFT JOIN person_ext_view p ON p.ID = re.PERSON_ID WHERE p.PERSON_TYPE = 1 AND ( p.NAME LIKE CONCAT('%',#{keyword},'%') @@ -62,13 +62,14 @@ re.INOUT_TYPE AS inoutType, p.NAME AS personName, p.PERSON_CODE AS personCode, + p.CERTIFICATION_UNIT AS personDeptName, p.ID_CARD_NO AS idCard, p.REMARKS AS remarks, re.DATETIME AS dateTime FROM `recognition_records` re LEFT JOIN acs_door door ON door.DOOR_CODE = re.DOOR_CODE - LEFT JOIN sys_person p ON p.ID = re.PERSON_ID + LEFT JOIN person_ext_view p ON p.ID = re.PERSON_ID WHERE p.PERSON_TYPE = 0 AND ( p.NAME LIKE CONCAT('%',#{keyword},'%') @@ -95,7 +96,7 @@ FROM `recognition_records` re LEFT JOIN acs_door door ON door.DOOR_CODE = re.DOOR_CODE - LEFT JOIN sys_person p ON p.ID = re.PERSON_ID + LEFT JOIN person_ext_view p ON p.ID = re.PERSON_ID WHERE p.PERSON_TYPE = 1 @@ -123,7 +124,7 @@ FROM `recognition_records` re LEFT JOIN acs_door door ON door.DOOR_CODE = re.DOOR_CODE - LEFT JOIN sys_person p ON p.ID = re.PERSON_ID + LEFT JOIN person_ext_view p ON p.ID = re.PERSON_ID WHERE p.PERSON_TYPE = 1 AND re.INOUT_TYPE = #{inoutType} diff --git a/casic-iris-acs/pom.xml b/casic-iris-acs/pom.xml index 3bc35aa..c13d0cf 100644 --- a/casic-iris-acs/pom.xml +++ b/casic-iris-acs/pom.xml @@ -27,6 +27,16 @@ casic-admin-support ${casic.version} + + com.casic + casic-export-support + 1.0.0-SNAPSHOT + + + com.casic + casic-expands-office + 1.0.0-SNAPSHOT + @@ -46,7 +56,6 @@ - diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/config/ExportProperties.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/config/ExportProperties.java new file mode 100644 index 0000000..edb8f92 --- /dev/null +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/config/ExportProperties.java @@ -0,0 +1,12 @@ +package com.casic.missiles.modular.system.config; + +import lombok.Data; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.stereotype.Component; + +@Component +@ConfigurationProperties(prefix = "iris.config") +@Data +public class ExportProperties { + private String exportPath; +} diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/AcsPermissionController.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/AcsPermissionController.java index 61a158f..227fa57 100644 --- a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/AcsPermissionController.java +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/AcsPermissionController.java @@ -1,15 +1,22 @@ package com.casic.missiles.modular.system.controller; import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.base.response.ResponseData; import com.casic.missiles.core.common.service.ICommonPermissionService; import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.modular.system.enums.ExportEnum; import com.casic.missiles.modular.system.warpper.AcsPermissionWarpper; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.dao.DuplicateKeyException; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.*; import org.springframework.beans.factory.annotation.Autowired; import com.baomidou.mybatisplus.plugins.Page; import com.baomidou.mybatisplus.mapper.EntityWrapper; + +import java.io.IOException; import java.util.List; import java.util.Map; @@ -17,6 +24,8 @@ import com.casic.missiles.modular.system.model.AcsPermission; import com.casic.missiles.modular.system.service.IAcsPermissionService; +import javax.servlet.http.HttpServletResponse; + /** * 控制器 * @@ -25,8 +34,8 @@ */ @Controller @RequestMapping("/acsPermission") -public class AcsPermissionController extends BaseController { - +public class AcsPermissionController extends ExportController { + private static final Logger logger = LoggerFactory.getLogger(AcsPermissionController.class); @Autowired private IAcsPermissionService acsPermissionService; @@ -60,6 +69,21 @@ } /** + * 导出员工授权列表 + */ + @RequestMapping(value = "/exportStaffPerm") + @ResponseBody + public void exportStaffPerm(HttpServletResponse response, String doorCode, String keyword, Long deptId) throws IOException { + Page> page = new PageFactory>().defaultPage(); + page.setCurrent(1); + page.setSearchCount(false); + page.setSize(Integer.MAX_VALUE); + List> list = acsPermissionService.selectStaffList(page,doorCode,keyword,deptId); + new AcsPermissionWarpper(list).warp(); + super.exportExcel(ExportEnum.STAFF_PERMISSION_EXPORT, list, response); + } + + /** * 访客授权列表 */ @RequestMapping(value = "/listVisitorPerm") @@ -73,6 +97,21 @@ } /** + * 导出访客授权列表 + */ + @RequestMapping(value = "/exportVisitorPerm") + @ResponseBody + public void listVisitorPerm(HttpServletResponse response, String doorCode,String keyword,String beginTime,String endTime) throws IOException{ + Page> page = new PageFactory>().defaultPage(); + page.setCurrent(1); + page.setSearchCount(false); + page.setSize(Integer.MAX_VALUE); + List> list = acsPermissionService.selectVisitorList(page,doorCode,keyword,beginTime,endTime); + new AcsPermissionWarpper(list).warp(); + super.exportExcel(ExportEnum.VISITOR_PERMISSION_EXPORT, list, response); + } + + /** * 新增授权 * @param doorCode 门禁编号 * @param personList 人员ID列表 @@ -84,7 +123,15 @@ public Object add(@RequestParam("doorCode")String doorCode, @RequestParam("personList")List personList, @RequestParam("strategyId")Integer strategyId){ - acsPermissionService.addPermission(doorCode, personList, strategyId); + try{ + acsPermissionService.addPermission(doorCode, personList, strategyId); + }catch (Exception e){ + if (e instanceof DuplicateKeyException) { + return ResponseData.error("重复授权"); + } + logger.error("添加授权失败", e); + return ResponseData.error("添加授权失败"); + } return ResponseData.success(); } diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/RecognitionRecordsController.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/RecognitionRecordsController.java index afdee3f..d7ab253 100644 --- a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/RecognitionRecordsController.java +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/RecognitionRecordsController.java @@ -1,11 +1,17 @@ package com.casic.missiles.modular.system.controller; import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.base.response.ResponseData; import com.casic.missiles.core.common.service.ICommonPermissionService; import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.core.util.ToolUtil; +import com.casic.missiles.modular.system.enums.ExportEnum; import com.casic.missiles.modular.system.warpper.DeviceWarpper; import com.casic.missiles.modular.system.warpper.RecognitionRecordsWarpper; +import org.apache.commons.lang.StringUtils; +import org.hswebframework.expands.office.excel.ExcelIO; +import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; @@ -13,6 +19,10 @@ import org.springframework.beans.factory.annotation.Autowired; import com.baomidou.mybatisplus.plugins.Page; import com.baomidou.mybatisplus.mapper.EntityWrapper; + +import java.io.FileInputStream; +import java.io.IOException; +import java.util.HashMap; import java.util.List; import java.util.Map; @@ -21,6 +31,9 @@ import com.casic.missiles.modular.system.model.RecognitionRecords; import com.casic.missiles.modular.system.service.IRecognitionRecordsService; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + /** * 控制器 * @@ -29,7 +42,7 @@ */ @Controller @RequestMapping("/records") -public class RecognitionRecordsController extends BaseController { +public class RecognitionRecordsController extends ExportController { @Autowired private IRecognitionRecordsService recordsService; @@ -51,6 +64,22 @@ } /** + * 导出员工记录 + */ + @RequestMapping(value = "/exportStaff") + @ResponseBody + public void exportStaff(HttpServletResponse response,String keyword,Long personDeptId,String doorCode,String devCode,String beginTime,String endTime) throws IOException { + Page> page = new PageFactory>().defaultPage(); + page.setCurrent(1); + page.setSearchCount(false); + page.setSize(Integer.MAX_VALUE); + DataScope dataScope = permissionService.getCurrUserDataScope(); + List> list = recordsService.selectStaffDataScopePage(dataScope,page,keyword,personDeptId,doorCode,devCode,beginTime,endTime); + new RecognitionRecordsWarpper(list).warp(); + super.exportExcel(ExportEnum.STAFF_RECORDS_EXPORT, list, response); + } + + /** * 访客数据查询 */ @RequestMapping(value = "/listVisitor") @@ -65,6 +94,22 @@ } /** + * 导出访客记录 + */ + @RequestMapping(value = "/exportVisitor") + @ResponseBody + public void exportVisitor(HttpServletResponse response,String keyword,String doorCode,String devCode,String beginTime,String endTime) throws IOException{ + Page> page = new PageFactory>().defaultPage(); + page.setCurrent(1); + page.setSearchCount(false); + page.setSize(Integer.MAX_VALUE); + DataScope dataScope = permissionService.getCurrUserDataScope(); + List> list = recordsService.selectVisitorDataScopePage(dataScope,page,keyword,doorCode,devCode,beginTime,endTime); + new RecognitionRecordsWarpper(list).warp(); + super.exportExcel(ExportEnum.VISITOR_RECORDS_EXPORT, list, response); + } + + /** * 统计各部门进出记录 */ @RequestMapping(value = "/statisticByDept") diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/AcsPermissionMapper.xml b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/AcsPermissionMapper.xml index 57db741..18e1925 100644 --- a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/AcsPermissionMapper.xml +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/AcsPermissionMapper.xml @@ -29,7 +29,7 @@ FROM acs_door door LEFT JOIN acs_permission per ON per.DOOR_CODE = door.DOOR_CODE - LEFT JOIN sys_person p ON per.PERSON_ID = p.ID + LEFT JOIN person_ext_view p ON per.PERSON_ID = p.ID WHERE p.DELFLAG = '0' OR p.DELFLAG IS NULL GROUP BY door.DOOR_CODE @@ -49,7 +49,7 @@ per.ID AS permissionId FROM acs_permission per LEFT JOIN acs_door door ON door.DOOR_CODE = per.DOOR_CODE - LEFT JOIN sys_person p ON per.PERSON_ID = p.ID + LEFT JOIN person_ext_view p ON per.PERSON_ID = p.ID LEFT JOIN acs_strategy stra ON per.STRATEGY_ID = stra.ID WHERE per.DOOR_CODE = #{doorCode} AND p.PERSON_TYPE = '1' @@ -76,13 +76,13 @@ per.ID AS permissionId FROM acs_permission per LEFT JOIN acs_door door ON door.DOOR_CODE = per.DOOR_CODE - LEFT JOIN sys_person p ON per.PERSON_ID = p.ID + LEFT JOIN person_ext_view p ON per.PERSON_ID = p.ID LEFT JOIN acs_strategy stra ON per.STRATEGY_ID = stra.ID WHERE per.DOOR_CODE = #{doorCode} AND p.PERSON_TYPE = '0' AND p.DELFLAG = '0' - AND ( (p.NAME LIKE CONNAT('%',#{keyword},'%')) OR (p.ID_CARD_NO LIKE CONNAT('%',#{keyword},'%')) ) + AND ( (p.NAME LIKE CONCAT('%',#{keyword},'%')) OR (p.ID_CARD_NO LIKE CONCAT('%',#{keyword},'%')) ) AND per.CREATE_TIME = ]]> #{beginTime} @@ -100,7 +100,7 @@ ID_CARD_NO as idCard, REMARKS as remarks, PERSON_CODE AS personCode - FROM sys_person + FROM person_ext_view WHERE ID NOT IN (SELECT PERSON_ID FROM acs_permission WHERE DOOR_CODE = #{doorCode}) AND PERSON_TYPE = #{personType} AND DELFLAG = '0' diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/RecognitionRecordsMapper.xml b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/RecognitionRecordsMapper.xml index 42ce3b1..7a6573d 100644 --- a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/RecognitionRecordsMapper.xml +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/RecognitionRecordsMapper.xml @@ -31,7 +31,7 @@ FROM `recognition_records` re LEFT JOIN acs_door door ON door.DOOR_CODE = re.DOOR_CODE - LEFT JOIN sys_person p ON p.ID = re.PERSON_ID + LEFT JOIN person_ext_view p ON p.ID = re.PERSON_ID WHERE p.PERSON_TYPE = 1 AND ( p.NAME LIKE CONCAT('%',#{keyword},'%') @@ -62,13 +62,14 @@ re.INOUT_TYPE AS inoutType, p.NAME AS personName, p.PERSON_CODE AS personCode, + p.CERTIFICATION_UNIT AS personDeptName, p.ID_CARD_NO AS idCard, p.REMARKS AS remarks, re.DATETIME AS dateTime FROM `recognition_records` re LEFT JOIN acs_door door ON door.DOOR_CODE = re.DOOR_CODE - LEFT JOIN sys_person p ON p.ID = re.PERSON_ID + LEFT JOIN person_ext_view p ON p.ID = re.PERSON_ID WHERE p.PERSON_TYPE = 0 AND ( p.NAME LIKE CONCAT('%',#{keyword},'%') @@ -95,7 +96,7 @@ FROM `recognition_records` re LEFT JOIN acs_door door ON door.DOOR_CODE = re.DOOR_CODE - LEFT JOIN sys_person p ON p.ID = re.PERSON_ID + LEFT JOIN person_ext_view p ON p.ID = re.PERSON_ID WHERE p.PERSON_TYPE = 1 @@ -123,7 +124,7 @@ FROM `recognition_records` re LEFT JOIN acs_door door ON door.DOOR_CODE = re.DOOR_CODE - LEFT JOIN sys_person p ON p.ID = re.PERSON_ID + LEFT JOIN person_ext_view p ON p.ID = re.PERSON_ID WHERE p.PERSON_TYPE = 1 AND re.INOUT_TYPE = #{inoutType} diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/enums/ExportEnum.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/enums/ExportEnum.java new file mode 100644 index 0000000..4ae6420 --- /dev/null +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/enums/ExportEnum.java @@ -0,0 +1,47 @@ +package com.casic.missiles.modular.system.enums; + +import com.casic.missiles.core.enums.ExportExcelEnum; +import com.casic.missiles.core.util.SpringContextHolder; +import com.casic.missiles.modular.system.config.ExportProperties; + +public enum ExportEnum implements ExportExcelEnum { + + STAFF_RECORDS_EXPORT("staffRecordsTemp.xlsx","staffRecordsTemp.xlsx","员工进出记录"), + VISITOR_RECORDS_EXPORT("visitorRecordsTemp.xlsx","visitorRecordsTemp.xlsx","访客进出记录"), + STAFF_PERMISSION_EXPORT("staffPermTemp.xlsx","staffPermTemp.xlsx","员工授权列表"), + VISITOR_PERMISSION_EXPORT("visitorPermTemp.xlsx","visitorPermTemp.xlsx","访客授权列表"); + + ExportEnum(String fileTempPath, String fileName, String description) { + this.fileTempPath = SpringContextHolder.getBean(ExportProperties.class).getExportPath().concat(fileTempPath); + this.fileName = fileName; + this.description = description; + } + + /** + * 导出模板相对路径 + */ + private String fileTempPath; + /** + * 下载文件名 + */ + private String fileName; + /** + * 描述信息 + */ + private String description; + + @Override + public String getFileTempPath() { + return fileTempPath; + } + + @Override + public String getFileName() { + return fileName; + } + + @Override + public String getDescription() { + return description; + } +} diff --git a/casic-iris-acs/pom.xml b/casic-iris-acs/pom.xml index 3bc35aa..c13d0cf 100644 --- a/casic-iris-acs/pom.xml +++ b/casic-iris-acs/pom.xml @@ -27,6 +27,16 @@ casic-admin-support ${casic.version} + + com.casic + casic-export-support + 1.0.0-SNAPSHOT + + + com.casic + casic-expands-office + 1.0.0-SNAPSHOT + @@ -46,7 +56,6 @@ - diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/config/ExportProperties.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/config/ExportProperties.java new file mode 100644 index 0000000..edb8f92 --- /dev/null +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/config/ExportProperties.java @@ -0,0 +1,12 @@ +package com.casic.missiles.modular.system.config; + +import lombok.Data; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.stereotype.Component; + +@Component +@ConfigurationProperties(prefix = "iris.config") +@Data +public class ExportProperties { + private String exportPath; +} diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/AcsPermissionController.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/AcsPermissionController.java index 61a158f..227fa57 100644 --- a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/AcsPermissionController.java +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/AcsPermissionController.java @@ -1,15 +1,22 @@ package com.casic.missiles.modular.system.controller; import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.base.response.ResponseData; import com.casic.missiles.core.common.service.ICommonPermissionService; import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.modular.system.enums.ExportEnum; import com.casic.missiles.modular.system.warpper.AcsPermissionWarpper; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.dao.DuplicateKeyException; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.*; import org.springframework.beans.factory.annotation.Autowired; import com.baomidou.mybatisplus.plugins.Page; import com.baomidou.mybatisplus.mapper.EntityWrapper; + +import java.io.IOException; import java.util.List; import java.util.Map; @@ -17,6 +24,8 @@ import com.casic.missiles.modular.system.model.AcsPermission; import com.casic.missiles.modular.system.service.IAcsPermissionService; +import javax.servlet.http.HttpServletResponse; + /** * 控制器 * @@ -25,8 +34,8 @@ */ @Controller @RequestMapping("/acsPermission") -public class AcsPermissionController extends BaseController { - +public class AcsPermissionController extends ExportController { + private static final Logger logger = LoggerFactory.getLogger(AcsPermissionController.class); @Autowired private IAcsPermissionService acsPermissionService; @@ -60,6 +69,21 @@ } /** + * 导出员工授权列表 + */ + @RequestMapping(value = "/exportStaffPerm") + @ResponseBody + public void exportStaffPerm(HttpServletResponse response, String doorCode, String keyword, Long deptId) throws IOException { + Page> page = new PageFactory>().defaultPage(); + page.setCurrent(1); + page.setSearchCount(false); + page.setSize(Integer.MAX_VALUE); + List> list = acsPermissionService.selectStaffList(page,doorCode,keyword,deptId); + new AcsPermissionWarpper(list).warp(); + super.exportExcel(ExportEnum.STAFF_PERMISSION_EXPORT, list, response); + } + + /** * 访客授权列表 */ @RequestMapping(value = "/listVisitorPerm") @@ -73,6 +97,21 @@ } /** + * 导出访客授权列表 + */ + @RequestMapping(value = "/exportVisitorPerm") + @ResponseBody + public void listVisitorPerm(HttpServletResponse response, String doorCode,String keyword,String beginTime,String endTime) throws IOException{ + Page> page = new PageFactory>().defaultPage(); + page.setCurrent(1); + page.setSearchCount(false); + page.setSize(Integer.MAX_VALUE); + List> list = acsPermissionService.selectVisitorList(page,doorCode,keyword,beginTime,endTime); + new AcsPermissionWarpper(list).warp(); + super.exportExcel(ExportEnum.VISITOR_PERMISSION_EXPORT, list, response); + } + + /** * 新增授权 * @param doorCode 门禁编号 * @param personList 人员ID列表 @@ -84,7 +123,15 @@ public Object add(@RequestParam("doorCode")String doorCode, @RequestParam("personList")List personList, @RequestParam("strategyId")Integer strategyId){ - acsPermissionService.addPermission(doorCode, personList, strategyId); + try{ + acsPermissionService.addPermission(doorCode, personList, strategyId); + }catch (Exception e){ + if (e instanceof DuplicateKeyException) { + return ResponseData.error("重复授权"); + } + logger.error("添加授权失败", e); + return ResponseData.error("添加授权失败"); + } return ResponseData.success(); } diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/RecognitionRecordsController.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/RecognitionRecordsController.java index afdee3f..d7ab253 100644 --- a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/RecognitionRecordsController.java +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/RecognitionRecordsController.java @@ -1,11 +1,17 @@ package com.casic.missiles.modular.system.controller; import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.base.response.ResponseData; import com.casic.missiles.core.common.service.ICommonPermissionService; import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.core.util.ToolUtil; +import com.casic.missiles.modular.system.enums.ExportEnum; import com.casic.missiles.modular.system.warpper.DeviceWarpper; import com.casic.missiles.modular.system.warpper.RecognitionRecordsWarpper; +import org.apache.commons.lang.StringUtils; +import org.hswebframework.expands.office.excel.ExcelIO; +import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; @@ -13,6 +19,10 @@ import org.springframework.beans.factory.annotation.Autowired; import com.baomidou.mybatisplus.plugins.Page; import com.baomidou.mybatisplus.mapper.EntityWrapper; + +import java.io.FileInputStream; +import java.io.IOException; +import java.util.HashMap; import java.util.List; import java.util.Map; @@ -21,6 +31,9 @@ import com.casic.missiles.modular.system.model.RecognitionRecords; import com.casic.missiles.modular.system.service.IRecognitionRecordsService; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + /** * 控制器 * @@ -29,7 +42,7 @@ */ @Controller @RequestMapping("/records") -public class RecognitionRecordsController extends BaseController { +public class RecognitionRecordsController extends ExportController { @Autowired private IRecognitionRecordsService recordsService; @@ -51,6 +64,22 @@ } /** + * 导出员工记录 + */ + @RequestMapping(value = "/exportStaff") + @ResponseBody + public void exportStaff(HttpServletResponse response,String keyword,Long personDeptId,String doorCode,String devCode,String beginTime,String endTime) throws IOException { + Page> page = new PageFactory>().defaultPage(); + page.setCurrent(1); + page.setSearchCount(false); + page.setSize(Integer.MAX_VALUE); + DataScope dataScope = permissionService.getCurrUserDataScope(); + List> list = recordsService.selectStaffDataScopePage(dataScope,page,keyword,personDeptId,doorCode,devCode,beginTime,endTime); + new RecognitionRecordsWarpper(list).warp(); + super.exportExcel(ExportEnum.STAFF_RECORDS_EXPORT, list, response); + } + + /** * 访客数据查询 */ @RequestMapping(value = "/listVisitor") @@ -65,6 +94,22 @@ } /** + * 导出访客记录 + */ + @RequestMapping(value = "/exportVisitor") + @ResponseBody + public void exportVisitor(HttpServletResponse response,String keyword,String doorCode,String devCode,String beginTime,String endTime) throws IOException{ + Page> page = new PageFactory>().defaultPage(); + page.setCurrent(1); + page.setSearchCount(false); + page.setSize(Integer.MAX_VALUE); + DataScope dataScope = permissionService.getCurrUserDataScope(); + List> list = recordsService.selectVisitorDataScopePage(dataScope,page,keyword,doorCode,devCode,beginTime,endTime); + new RecognitionRecordsWarpper(list).warp(); + super.exportExcel(ExportEnum.VISITOR_RECORDS_EXPORT, list, response); + } + + /** * 统计各部门进出记录 */ @RequestMapping(value = "/statisticByDept") diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/AcsPermissionMapper.xml b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/AcsPermissionMapper.xml index 57db741..18e1925 100644 --- a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/AcsPermissionMapper.xml +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/AcsPermissionMapper.xml @@ -29,7 +29,7 @@ FROM acs_door door LEFT JOIN acs_permission per ON per.DOOR_CODE = door.DOOR_CODE - LEFT JOIN sys_person p ON per.PERSON_ID = p.ID + LEFT JOIN person_ext_view p ON per.PERSON_ID = p.ID WHERE p.DELFLAG = '0' OR p.DELFLAG IS NULL GROUP BY door.DOOR_CODE @@ -49,7 +49,7 @@ per.ID AS permissionId FROM acs_permission per LEFT JOIN acs_door door ON door.DOOR_CODE = per.DOOR_CODE - LEFT JOIN sys_person p ON per.PERSON_ID = p.ID + LEFT JOIN person_ext_view p ON per.PERSON_ID = p.ID LEFT JOIN acs_strategy stra ON per.STRATEGY_ID = stra.ID WHERE per.DOOR_CODE = #{doorCode} AND p.PERSON_TYPE = '1' @@ -76,13 +76,13 @@ per.ID AS permissionId FROM acs_permission per LEFT JOIN acs_door door ON door.DOOR_CODE = per.DOOR_CODE - LEFT JOIN sys_person p ON per.PERSON_ID = p.ID + LEFT JOIN person_ext_view p ON per.PERSON_ID = p.ID LEFT JOIN acs_strategy stra ON per.STRATEGY_ID = stra.ID WHERE per.DOOR_CODE = #{doorCode} AND p.PERSON_TYPE = '0' AND p.DELFLAG = '0' - AND ( (p.NAME LIKE CONNAT('%',#{keyword},'%')) OR (p.ID_CARD_NO LIKE CONNAT('%',#{keyword},'%')) ) + AND ( (p.NAME LIKE CONCAT('%',#{keyword},'%')) OR (p.ID_CARD_NO LIKE CONCAT('%',#{keyword},'%')) ) AND per.CREATE_TIME = ]]> #{beginTime} @@ -100,7 +100,7 @@ ID_CARD_NO as idCard, REMARKS as remarks, PERSON_CODE AS personCode - FROM sys_person + FROM person_ext_view WHERE ID NOT IN (SELECT PERSON_ID FROM acs_permission WHERE DOOR_CODE = #{doorCode}) AND PERSON_TYPE = #{personType} AND DELFLAG = '0' diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/RecognitionRecordsMapper.xml b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/RecognitionRecordsMapper.xml index 42ce3b1..7a6573d 100644 --- a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/RecognitionRecordsMapper.xml +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/RecognitionRecordsMapper.xml @@ -31,7 +31,7 @@ FROM `recognition_records` re LEFT JOIN acs_door door ON door.DOOR_CODE = re.DOOR_CODE - LEFT JOIN sys_person p ON p.ID = re.PERSON_ID + LEFT JOIN person_ext_view p ON p.ID = re.PERSON_ID WHERE p.PERSON_TYPE = 1 AND ( p.NAME LIKE CONCAT('%',#{keyword},'%') @@ -62,13 +62,14 @@ re.INOUT_TYPE AS inoutType, p.NAME AS personName, p.PERSON_CODE AS personCode, + p.CERTIFICATION_UNIT AS personDeptName, p.ID_CARD_NO AS idCard, p.REMARKS AS remarks, re.DATETIME AS dateTime FROM `recognition_records` re LEFT JOIN acs_door door ON door.DOOR_CODE = re.DOOR_CODE - LEFT JOIN sys_person p ON p.ID = re.PERSON_ID + LEFT JOIN person_ext_view p ON p.ID = re.PERSON_ID WHERE p.PERSON_TYPE = 0 AND ( p.NAME LIKE CONCAT('%',#{keyword},'%') @@ -95,7 +96,7 @@ FROM `recognition_records` re LEFT JOIN acs_door door ON door.DOOR_CODE = re.DOOR_CODE - LEFT JOIN sys_person p ON p.ID = re.PERSON_ID + LEFT JOIN person_ext_view p ON p.ID = re.PERSON_ID WHERE p.PERSON_TYPE = 1 @@ -123,7 +124,7 @@ FROM `recognition_records` re LEFT JOIN acs_door door ON door.DOOR_CODE = re.DOOR_CODE - LEFT JOIN sys_person p ON p.ID = re.PERSON_ID + LEFT JOIN person_ext_view p ON p.ID = re.PERSON_ID WHERE p.PERSON_TYPE = 1 AND re.INOUT_TYPE = #{inoutType} diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/enums/ExportEnum.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/enums/ExportEnum.java new file mode 100644 index 0000000..4ae6420 --- /dev/null +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/enums/ExportEnum.java @@ -0,0 +1,47 @@ +package com.casic.missiles.modular.system.enums; + +import com.casic.missiles.core.enums.ExportExcelEnum; +import com.casic.missiles.core.util.SpringContextHolder; +import com.casic.missiles.modular.system.config.ExportProperties; + +public enum ExportEnum implements ExportExcelEnum { + + STAFF_RECORDS_EXPORT("staffRecordsTemp.xlsx","staffRecordsTemp.xlsx","员工进出记录"), + VISITOR_RECORDS_EXPORT("visitorRecordsTemp.xlsx","visitorRecordsTemp.xlsx","访客进出记录"), + STAFF_PERMISSION_EXPORT("staffPermTemp.xlsx","staffPermTemp.xlsx","员工授权列表"), + VISITOR_PERMISSION_EXPORT("visitorPermTemp.xlsx","visitorPermTemp.xlsx","访客授权列表"); + + ExportEnum(String fileTempPath, String fileName, String description) { + this.fileTempPath = SpringContextHolder.getBean(ExportProperties.class).getExportPath().concat(fileTempPath); + this.fileName = fileName; + this.description = description; + } + + /** + * 导出模板相对路径 + */ + private String fileTempPath; + /** + * 下载文件名 + */ + private String fileName; + /** + * 描述信息 + */ + private String description; + + @Override + public String getFileTempPath() { + return fileTempPath; + } + + @Override + public String getFileName() { + return fileName; + } + + @Override + public String getDescription() { + return description; + } +} diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/RecognitionRecordsServiceImpl.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/RecognitionRecordsServiceImpl.java index 42f87cf..73b88ab 100644 --- a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/RecognitionRecordsServiceImpl.java +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/RecognitionRecordsServiceImpl.java @@ -54,7 +54,8 @@ @Override public List> selectVisitorDataScopePage(DataScope dataScope, Page page, String keyword, String doorCode, String devCode, String beginTime, String endTime) { - return this.baseMapper.selectVisitorDataScopePage(dataScope, page, keyword, doorCode, devCode, beginTime, endTime); + List> list = this.baseMapper.selectVisitorDataScopePage(dataScope, page, keyword, doorCode, devCode, beginTime, endTime); + return list; } @Override diff --git a/casic-iris-acs/pom.xml b/casic-iris-acs/pom.xml index 3bc35aa..c13d0cf 100644 --- a/casic-iris-acs/pom.xml +++ b/casic-iris-acs/pom.xml @@ -27,6 +27,16 @@ casic-admin-support ${casic.version} + + com.casic + casic-export-support + 1.0.0-SNAPSHOT + + + com.casic + casic-expands-office + 1.0.0-SNAPSHOT + @@ -46,7 +56,6 @@ - diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/config/ExportProperties.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/config/ExportProperties.java new file mode 100644 index 0000000..edb8f92 --- /dev/null +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/config/ExportProperties.java @@ -0,0 +1,12 @@ +package com.casic.missiles.modular.system.config; + +import lombok.Data; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.stereotype.Component; + +@Component +@ConfigurationProperties(prefix = "iris.config") +@Data +public class ExportProperties { + private String exportPath; +} diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/AcsPermissionController.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/AcsPermissionController.java index 61a158f..227fa57 100644 --- a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/AcsPermissionController.java +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/AcsPermissionController.java @@ -1,15 +1,22 @@ package com.casic.missiles.modular.system.controller; import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.base.response.ResponseData; import com.casic.missiles.core.common.service.ICommonPermissionService; import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.modular.system.enums.ExportEnum; import com.casic.missiles.modular.system.warpper.AcsPermissionWarpper; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.dao.DuplicateKeyException; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.*; import org.springframework.beans.factory.annotation.Autowired; import com.baomidou.mybatisplus.plugins.Page; import com.baomidou.mybatisplus.mapper.EntityWrapper; + +import java.io.IOException; import java.util.List; import java.util.Map; @@ -17,6 +24,8 @@ import com.casic.missiles.modular.system.model.AcsPermission; import com.casic.missiles.modular.system.service.IAcsPermissionService; +import javax.servlet.http.HttpServletResponse; + /** * 控制器 * @@ -25,8 +34,8 @@ */ @Controller @RequestMapping("/acsPermission") -public class AcsPermissionController extends BaseController { - +public class AcsPermissionController extends ExportController { + private static final Logger logger = LoggerFactory.getLogger(AcsPermissionController.class); @Autowired private IAcsPermissionService acsPermissionService; @@ -60,6 +69,21 @@ } /** + * 导出员工授权列表 + */ + @RequestMapping(value = "/exportStaffPerm") + @ResponseBody + public void exportStaffPerm(HttpServletResponse response, String doorCode, String keyword, Long deptId) throws IOException { + Page> page = new PageFactory>().defaultPage(); + page.setCurrent(1); + page.setSearchCount(false); + page.setSize(Integer.MAX_VALUE); + List> list = acsPermissionService.selectStaffList(page,doorCode,keyword,deptId); + new AcsPermissionWarpper(list).warp(); + super.exportExcel(ExportEnum.STAFF_PERMISSION_EXPORT, list, response); + } + + /** * 访客授权列表 */ @RequestMapping(value = "/listVisitorPerm") @@ -73,6 +97,21 @@ } /** + * 导出访客授权列表 + */ + @RequestMapping(value = "/exportVisitorPerm") + @ResponseBody + public void listVisitorPerm(HttpServletResponse response, String doorCode,String keyword,String beginTime,String endTime) throws IOException{ + Page> page = new PageFactory>().defaultPage(); + page.setCurrent(1); + page.setSearchCount(false); + page.setSize(Integer.MAX_VALUE); + List> list = acsPermissionService.selectVisitorList(page,doorCode,keyword,beginTime,endTime); + new AcsPermissionWarpper(list).warp(); + super.exportExcel(ExportEnum.VISITOR_PERMISSION_EXPORT, list, response); + } + + /** * 新增授权 * @param doorCode 门禁编号 * @param personList 人员ID列表 @@ -84,7 +123,15 @@ public Object add(@RequestParam("doorCode")String doorCode, @RequestParam("personList")List personList, @RequestParam("strategyId")Integer strategyId){ - acsPermissionService.addPermission(doorCode, personList, strategyId); + try{ + acsPermissionService.addPermission(doorCode, personList, strategyId); + }catch (Exception e){ + if (e instanceof DuplicateKeyException) { + return ResponseData.error("重复授权"); + } + logger.error("添加授权失败", e); + return ResponseData.error("添加授权失败"); + } return ResponseData.success(); } diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/RecognitionRecordsController.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/RecognitionRecordsController.java index afdee3f..d7ab253 100644 --- a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/RecognitionRecordsController.java +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/RecognitionRecordsController.java @@ -1,11 +1,17 @@ package com.casic.missiles.modular.system.controller; import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.base.response.ResponseData; import com.casic.missiles.core.common.service.ICommonPermissionService; import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.core.util.ToolUtil; +import com.casic.missiles.modular.system.enums.ExportEnum; import com.casic.missiles.modular.system.warpper.DeviceWarpper; import com.casic.missiles.modular.system.warpper.RecognitionRecordsWarpper; +import org.apache.commons.lang.StringUtils; +import org.hswebframework.expands.office.excel.ExcelIO; +import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; @@ -13,6 +19,10 @@ import org.springframework.beans.factory.annotation.Autowired; import com.baomidou.mybatisplus.plugins.Page; import com.baomidou.mybatisplus.mapper.EntityWrapper; + +import java.io.FileInputStream; +import java.io.IOException; +import java.util.HashMap; import java.util.List; import java.util.Map; @@ -21,6 +31,9 @@ import com.casic.missiles.modular.system.model.RecognitionRecords; import com.casic.missiles.modular.system.service.IRecognitionRecordsService; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + /** * 控制器 * @@ -29,7 +42,7 @@ */ @Controller @RequestMapping("/records") -public class RecognitionRecordsController extends BaseController { +public class RecognitionRecordsController extends ExportController { @Autowired private IRecognitionRecordsService recordsService; @@ -51,6 +64,22 @@ } /** + * 导出员工记录 + */ + @RequestMapping(value = "/exportStaff") + @ResponseBody + public void exportStaff(HttpServletResponse response,String keyword,Long personDeptId,String doorCode,String devCode,String beginTime,String endTime) throws IOException { + Page> page = new PageFactory>().defaultPage(); + page.setCurrent(1); + page.setSearchCount(false); + page.setSize(Integer.MAX_VALUE); + DataScope dataScope = permissionService.getCurrUserDataScope(); + List> list = recordsService.selectStaffDataScopePage(dataScope,page,keyword,personDeptId,doorCode,devCode,beginTime,endTime); + new RecognitionRecordsWarpper(list).warp(); + super.exportExcel(ExportEnum.STAFF_RECORDS_EXPORT, list, response); + } + + /** * 访客数据查询 */ @RequestMapping(value = "/listVisitor") @@ -65,6 +94,22 @@ } /** + * 导出访客记录 + */ + @RequestMapping(value = "/exportVisitor") + @ResponseBody + public void exportVisitor(HttpServletResponse response,String keyword,String doorCode,String devCode,String beginTime,String endTime) throws IOException{ + Page> page = new PageFactory>().defaultPage(); + page.setCurrent(1); + page.setSearchCount(false); + page.setSize(Integer.MAX_VALUE); + DataScope dataScope = permissionService.getCurrUserDataScope(); + List> list = recordsService.selectVisitorDataScopePage(dataScope,page,keyword,doorCode,devCode,beginTime,endTime); + new RecognitionRecordsWarpper(list).warp(); + super.exportExcel(ExportEnum.VISITOR_RECORDS_EXPORT, list, response); + } + + /** * 统计各部门进出记录 */ @RequestMapping(value = "/statisticByDept") diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/AcsPermissionMapper.xml b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/AcsPermissionMapper.xml index 57db741..18e1925 100644 --- a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/AcsPermissionMapper.xml +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/AcsPermissionMapper.xml @@ -29,7 +29,7 @@ FROM acs_door door LEFT JOIN acs_permission per ON per.DOOR_CODE = door.DOOR_CODE - LEFT JOIN sys_person p ON per.PERSON_ID = p.ID + LEFT JOIN person_ext_view p ON per.PERSON_ID = p.ID WHERE p.DELFLAG = '0' OR p.DELFLAG IS NULL GROUP BY door.DOOR_CODE @@ -49,7 +49,7 @@ per.ID AS permissionId FROM acs_permission per LEFT JOIN acs_door door ON door.DOOR_CODE = per.DOOR_CODE - LEFT JOIN sys_person p ON per.PERSON_ID = p.ID + LEFT JOIN person_ext_view p ON per.PERSON_ID = p.ID LEFT JOIN acs_strategy stra ON per.STRATEGY_ID = stra.ID WHERE per.DOOR_CODE = #{doorCode} AND p.PERSON_TYPE = '1' @@ -76,13 +76,13 @@ per.ID AS permissionId FROM acs_permission per LEFT JOIN acs_door door ON door.DOOR_CODE = per.DOOR_CODE - LEFT JOIN sys_person p ON per.PERSON_ID = p.ID + LEFT JOIN person_ext_view p ON per.PERSON_ID = p.ID LEFT JOIN acs_strategy stra ON per.STRATEGY_ID = stra.ID WHERE per.DOOR_CODE = #{doorCode} AND p.PERSON_TYPE = '0' AND p.DELFLAG = '0' - AND ( (p.NAME LIKE CONNAT('%',#{keyword},'%')) OR (p.ID_CARD_NO LIKE CONNAT('%',#{keyword},'%')) ) + AND ( (p.NAME LIKE CONCAT('%',#{keyword},'%')) OR (p.ID_CARD_NO LIKE CONCAT('%',#{keyword},'%')) ) AND per.CREATE_TIME = ]]> #{beginTime} @@ -100,7 +100,7 @@ ID_CARD_NO as idCard, REMARKS as remarks, PERSON_CODE AS personCode - FROM sys_person + FROM person_ext_view WHERE ID NOT IN (SELECT PERSON_ID FROM acs_permission WHERE DOOR_CODE = #{doorCode}) AND PERSON_TYPE = #{personType} AND DELFLAG = '0' diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/RecognitionRecordsMapper.xml b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/RecognitionRecordsMapper.xml index 42ce3b1..7a6573d 100644 --- a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/RecognitionRecordsMapper.xml +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/RecognitionRecordsMapper.xml @@ -31,7 +31,7 @@ FROM `recognition_records` re LEFT JOIN acs_door door ON door.DOOR_CODE = re.DOOR_CODE - LEFT JOIN sys_person p ON p.ID = re.PERSON_ID + LEFT JOIN person_ext_view p ON p.ID = re.PERSON_ID WHERE p.PERSON_TYPE = 1 AND ( p.NAME LIKE CONCAT('%',#{keyword},'%') @@ -62,13 +62,14 @@ re.INOUT_TYPE AS inoutType, p.NAME AS personName, p.PERSON_CODE AS personCode, + p.CERTIFICATION_UNIT AS personDeptName, p.ID_CARD_NO AS idCard, p.REMARKS AS remarks, re.DATETIME AS dateTime FROM `recognition_records` re LEFT JOIN acs_door door ON door.DOOR_CODE = re.DOOR_CODE - LEFT JOIN sys_person p ON p.ID = re.PERSON_ID + LEFT JOIN person_ext_view p ON p.ID = re.PERSON_ID WHERE p.PERSON_TYPE = 0 AND ( p.NAME LIKE CONCAT('%',#{keyword},'%') @@ -95,7 +96,7 @@ FROM `recognition_records` re LEFT JOIN acs_door door ON door.DOOR_CODE = re.DOOR_CODE - LEFT JOIN sys_person p ON p.ID = re.PERSON_ID + LEFT JOIN person_ext_view p ON p.ID = re.PERSON_ID WHERE p.PERSON_TYPE = 1 @@ -123,7 +124,7 @@ FROM `recognition_records` re LEFT JOIN acs_door door ON door.DOOR_CODE = re.DOOR_CODE - LEFT JOIN sys_person p ON p.ID = re.PERSON_ID + LEFT JOIN person_ext_view p ON p.ID = re.PERSON_ID WHERE p.PERSON_TYPE = 1 AND re.INOUT_TYPE = #{inoutType} diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/enums/ExportEnum.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/enums/ExportEnum.java new file mode 100644 index 0000000..4ae6420 --- /dev/null +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/enums/ExportEnum.java @@ -0,0 +1,47 @@ +package com.casic.missiles.modular.system.enums; + +import com.casic.missiles.core.enums.ExportExcelEnum; +import com.casic.missiles.core.util.SpringContextHolder; +import com.casic.missiles.modular.system.config.ExportProperties; + +public enum ExportEnum implements ExportExcelEnum { + + STAFF_RECORDS_EXPORT("staffRecordsTemp.xlsx","staffRecordsTemp.xlsx","员工进出记录"), + VISITOR_RECORDS_EXPORT("visitorRecordsTemp.xlsx","visitorRecordsTemp.xlsx","访客进出记录"), + STAFF_PERMISSION_EXPORT("staffPermTemp.xlsx","staffPermTemp.xlsx","员工授权列表"), + VISITOR_PERMISSION_EXPORT("visitorPermTemp.xlsx","visitorPermTemp.xlsx","访客授权列表"); + + ExportEnum(String fileTempPath, String fileName, String description) { + this.fileTempPath = SpringContextHolder.getBean(ExportProperties.class).getExportPath().concat(fileTempPath); + this.fileName = fileName; + this.description = description; + } + + /** + * 导出模板相对路径 + */ + private String fileTempPath; + /** + * 下载文件名 + */ + private String fileName; + /** + * 描述信息 + */ + private String description; + + @Override + public String getFileTempPath() { + return fileTempPath; + } + + @Override + public String getFileName() { + return fileName; + } + + @Override + public String getDescription() { + return description; + } +} diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/RecognitionRecordsServiceImpl.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/RecognitionRecordsServiceImpl.java index 42f87cf..73b88ab 100644 --- a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/RecognitionRecordsServiceImpl.java +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/RecognitionRecordsServiceImpl.java @@ -54,7 +54,8 @@ @Override public List> selectVisitorDataScopePage(DataScope dataScope, Page page, String keyword, String doorCode, String devCode, String beginTime, String endTime) { - return this.baseMapper.selectVisitorDataScopePage(dataScope, page, keyword, doorCode, devCode, beginTime, endTime); + List> list = this.baseMapper.selectVisitorDataScopePage(dataScope, page, keyword, doorCode, devCode, beginTime, endTime); + return list; } @Override diff --git a/casic-web/pom.xml b/casic-web/pom.xml index f4d3527..718d9db 100644 --- a/casic-web/pom.xml +++ b/casic-web/pom.xml @@ -155,11 +155,11 @@ compile --> - - - - - + + org.codehaus.groovy + groovy-all + true + @@ -169,16 +169,19 @@ org.apache.maven.plugins maven-compiler-plugin + org.apache.maven.plugins maven-jar-plugin + /config/** **/MockController.class + diff --git a/casic-iris-acs/pom.xml b/casic-iris-acs/pom.xml index 3bc35aa..c13d0cf 100644 --- a/casic-iris-acs/pom.xml +++ b/casic-iris-acs/pom.xml @@ -27,6 +27,16 @@ casic-admin-support ${casic.version} + + com.casic + casic-export-support + 1.0.0-SNAPSHOT + + + com.casic + casic-expands-office + 1.0.0-SNAPSHOT + @@ -46,7 +56,6 @@ - diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/config/ExportProperties.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/config/ExportProperties.java new file mode 100644 index 0000000..edb8f92 --- /dev/null +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/config/ExportProperties.java @@ -0,0 +1,12 @@ +package com.casic.missiles.modular.system.config; + +import lombok.Data; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.stereotype.Component; + +@Component +@ConfigurationProperties(prefix = "iris.config") +@Data +public class ExportProperties { + private String exportPath; +} diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/AcsPermissionController.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/AcsPermissionController.java index 61a158f..227fa57 100644 --- a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/AcsPermissionController.java +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/AcsPermissionController.java @@ -1,15 +1,22 @@ package com.casic.missiles.modular.system.controller; import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.base.response.ResponseData; import com.casic.missiles.core.common.service.ICommonPermissionService; import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.modular.system.enums.ExportEnum; import com.casic.missiles.modular.system.warpper.AcsPermissionWarpper; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.dao.DuplicateKeyException; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.*; import org.springframework.beans.factory.annotation.Autowired; import com.baomidou.mybatisplus.plugins.Page; import com.baomidou.mybatisplus.mapper.EntityWrapper; + +import java.io.IOException; import java.util.List; import java.util.Map; @@ -17,6 +24,8 @@ import com.casic.missiles.modular.system.model.AcsPermission; import com.casic.missiles.modular.system.service.IAcsPermissionService; +import javax.servlet.http.HttpServletResponse; + /** * 控制器 * @@ -25,8 +34,8 @@ */ @Controller @RequestMapping("/acsPermission") -public class AcsPermissionController extends BaseController { - +public class AcsPermissionController extends ExportController { + private static final Logger logger = LoggerFactory.getLogger(AcsPermissionController.class); @Autowired private IAcsPermissionService acsPermissionService; @@ -60,6 +69,21 @@ } /** + * 导出员工授权列表 + */ + @RequestMapping(value = "/exportStaffPerm") + @ResponseBody + public void exportStaffPerm(HttpServletResponse response, String doorCode, String keyword, Long deptId) throws IOException { + Page> page = new PageFactory>().defaultPage(); + page.setCurrent(1); + page.setSearchCount(false); + page.setSize(Integer.MAX_VALUE); + List> list = acsPermissionService.selectStaffList(page,doorCode,keyword,deptId); + new AcsPermissionWarpper(list).warp(); + super.exportExcel(ExportEnum.STAFF_PERMISSION_EXPORT, list, response); + } + + /** * 访客授权列表 */ @RequestMapping(value = "/listVisitorPerm") @@ -73,6 +97,21 @@ } /** + * 导出访客授权列表 + */ + @RequestMapping(value = "/exportVisitorPerm") + @ResponseBody + public void listVisitorPerm(HttpServletResponse response, String doorCode,String keyword,String beginTime,String endTime) throws IOException{ + Page> page = new PageFactory>().defaultPage(); + page.setCurrent(1); + page.setSearchCount(false); + page.setSize(Integer.MAX_VALUE); + List> list = acsPermissionService.selectVisitorList(page,doorCode,keyword,beginTime,endTime); + new AcsPermissionWarpper(list).warp(); + super.exportExcel(ExportEnum.VISITOR_PERMISSION_EXPORT, list, response); + } + + /** * 新增授权 * @param doorCode 门禁编号 * @param personList 人员ID列表 @@ -84,7 +123,15 @@ public Object add(@RequestParam("doorCode")String doorCode, @RequestParam("personList")List personList, @RequestParam("strategyId")Integer strategyId){ - acsPermissionService.addPermission(doorCode, personList, strategyId); + try{ + acsPermissionService.addPermission(doorCode, personList, strategyId); + }catch (Exception e){ + if (e instanceof DuplicateKeyException) { + return ResponseData.error("重复授权"); + } + logger.error("添加授权失败", e); + return ResponseData.error("添加授权失败"); + } return ResponseData.success(); } diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/RecognitionRecordsController.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/RecognitionRecordsController.java index afdee3f..d7ab253 100644 --- a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/RecognitionRecordsController.java +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/RecognitionRecordsController.java @@ -1,11 +1,17 @@ package com.casic.missiles.modular.system.controller; import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.base.response.ResponseData; import com.casic.missiles.core.common.service.ICommonPermissionService; import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.core.util.ToolUtil; +import com.casic.missiles.modular.system.enums.ExportEnum; import com.casic.missiles.modular.system.warpper.DeviceWarpper; import com.casic.missiles.modular.system.warpper.RecognitionRecordsWarpper; +import org.apache.commons.lang.StringUtils; +import org.hswebframework.expands.office.excel.ExcelIO; +import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; @@ -13,6 +19,10 @@ import org.springframework.beans.factory.annotation.Autowired; import com.baomidou.mybatisplus.plugins.Page; import com.baomidou.mybatisplus.mapper.EntityWrapper; + +import java.io.FileInputStream; +import java.io.IOException; +import java.util.HashMap; import java.util.List; import java.util.Map; @@ -21,6 +31,9 @@ import com.casic.missiles.modular.system.model.RecognitionRecords; import com.casic.missiles.modular.system.service.IRecognitionRecordsService; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + /** * 控制器 * @@ -29,7 +42,7 @@ */ @Controller @RequestMapping("/records") -public class RecognitionRecordsController extends BaseController { +public class RecognitionRecordsController extends ExportController { @Autowired private IRecognitionRecordsService recordsService; @@ -51,6 +64,22 @@ } /** + * 导出员工记录 + */ + @RequestMapping(value = "/exportStaff") + @ResponseBody + public void exportStaff(HttpServletResponse response,String keyword,Long personDeptId,String doorCode,String devCode,String beginTime,String endTime) throws IOException { + Page> page = new PageFactory>().defaultPage(); + page.setCurrent(1); + page.setSearchCount(false); + page.setSize(Integer.MAX_VALUE); + DataScope dataScope = permissionService.getCurrUserDataScope(); + List> list = recordsService.selectStaffDataScopePage(dataScope,page,keyword,personDeptId,doorCode,devCode,beginTime,endTime); + new RecognitionRecordsWarpper(list).warp(); + super.exportExcel(ExportEnum.STAFF_RECORDS_EXPORT, list, response); + } + + /** * 访客数据查询 */ @RequestMapping(value = "/listVisitor") @@ -65,6 +94,22 @@ } /** + * 导出访客记录 + */ + @RequestMapping(value = "/exportVisitor") + @ResponseBody + public void exportVisitor(HttpServletResponse response,String keyword,String doorCode,String devCode,String beginTime,String endTime) throws IOException{ + Page> page = new PageFactory>().defaultPage(); + page.setCurrent(1); + page.setSearchCount(false); + page.setSize(Integer.MAX_VALUE); + DataScope dataScope = permissionService.getCurrUserDataScope(); + List> list = recordsService.selectVisitorDataScopePage(dataScope,page,keyword,doorCode,devCode,beginTime,endTime); + new RecognitionRecordsWarpper(list).warp(); + super.exportExcel(ExportEnum.VISITOR_RECORDS_EXPORT, list, response); + } + + /** * 统计各部门进出记录 */ @RequestMapping(value = "/statisticByDept") diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/AcsPermissionMapper.xml b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/AcsPermissionMapper.xml index 57db741..18e1925 100644 --- a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/AcsPermissionMapper.xml +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/AcsPermissionMapper.xml @@ -29,7 +29,7 @@ FROM acs_door door LEFT JOIN acs_permission per ON per.DOOR_CODE = door.DOOR_CODE - LEFT JOIN sys_person p ON per.PERSON_ID = p.ID + LEFT JOIN person_ext_view p ON per.PERSON_ID = p.ID WHERE p.DELFLAG = '0' OR p.DELFLAG IS NULL GROUP BY door.DOOR_CODE @@ -49,7 +49,7 @@ per.ID AS permissionId FROM acs_permission per LEFT JOIN acs_door door ON door.DOOR_CODE = per.DOOR_CODE - LEFT JOIN sys_person p ON per.PERSON_ID = p.ID + LEFT JOIN person_ext_view p ON per.PERSON_ID = p.ID LEFT JOIN acs_strategy stra ON per.STRATEGY_ID = stra.ID WHERE per.DOOR_CODE = #{doorCode} AND p.PERSON_TYPE = '1' @@ -76,13 +76,13 @@ per.ID AS permissionId FROM acs_permission per LEFT JOIN acs_door door ON door.DOOR_CODE = per.DOOR_CODE - LEFT JOIN sys_person p ON per.PERSON_ID = p.ID + LEFT JOIN person_ext_view p ON per.PERSON_ID = p.ID LEFT JOIN acs_strategy stra ON per.STRATEGY_ID = stra.ID WHERE per.DOOR_CODE = #{doorCode} AND p.PERSON_TYPE = '0' AND p.DELFLAG = '0' - AND ( (p.NAME LIKE CONNAT('%',#{keyword},'%')) OR (p.ID_CARD_NO LIKE CONNAT('%',#{keyword},'%')) ) + AND ( (p.NAME LIKE CONCAT('%',#{keyword},'%')) OR (p.ID_CARD_NO LIKE CONCAT('%',#{keyword},'%')) ) AND per.CREATE_TIME = ]]> #{beginTime} @@ -100,7 +100,7 @@ ID_CARD_NO as idCard, REMARKS as remarks, PERSON_CODE AS personCode - FROM sys_person + FROM person_ext_view WHERE ID NOT IN (SELECT PERSON_ID FROM acs_permission WHERE DOOR_CODE = #{doorCode}) AND PERSON_TYPE = #{personType} AND DELFLAG = '0' diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/RecognitionRecordsMapper.xml b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/RecognitionRecordsMapper.xml index 42ce3b1..7a6573d 100644 --- a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/RecognitionRecordsMapper.xml +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/RecognitionRecordsMapper.xml @@ -31,7 +31,7 @@ FROM `recognition_records` re LEFT JOIN acs_door door ON door.DOOR_CODE = re.DOOR_CODE - LEFT JOIN sys_person p ON p.ID = re.PERSON_ID + LEFT JOIN person_ext_view p ON p.ID = re.PERSON_ID WHERE p.PERSON_TYPE = 1 AND ( p.NAME LIKE CONCAT('%',#{keyword},'%') @@ -62,13 +62,14 @@ re.INOUT_TYPE AS inoutType, p.NAME AS personName, p.PERSON_CODE AS personCode, + p.CERTIFICATION_UNIT AS personDeptName, p.ID_CARD_NO AS idCard, p.REMARKS AS remarks, re.DATETIME AS dateTime FROM `recognition_records` re LEFT JOIN acs_door door ON door.DOOR_CODE = re.DOOR_CODE - LEFT JOIN sys_person p ON p.ID = re.PERSON_ID + LEFT JOIN person_ext_view p ON p.ID = re.PERSON_ID WHERE p.PERSON_TYPE = 0 AND ( p.NAME LIKE CONCAT('%',#{keyword},'%') @@ -95,7 +96,7 @@ FROM `recognition_records` re LEFT JOIN acs_door door ON door.DOOR_CODE = re.DOOR_CODE - LEFT JOIN sys_person p ON p.ID = re.PERSON_ID + LEFT JOIN person_ext_view p ON p.ID = re.PERSON_ID WHERE p.PERSON_TYPE = 1 @@ -123,7 +124,7 @@ FROM `recognition_records` re LEFT JOIN acs_door door ON door.DOOR_CODE = re.DOOR_CODE - LEFT JOIN sys_person p ON p.ID = re.PERSON_ID + LEFT JOIN person_ext_view p ON p.ID = re.PERSON_ID WHERE p.PERSON_TYPE = 1 AND re.INOUT_TYPE = #{inoutType} diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/enums/ExportEnum.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/enums/ExportEnum.java new file mode 100644 index 0000000..4ae6420 --- /dev/null +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/enums/ExportEnum.java @@ -0,0 +1,47 @@ +package com.casic.missiles.modular.system.enums; + +import com.casic.missiles.core.enums.ExportExcelEnum; +import com.casic.missiles.core.util.SpringContextHolder; +import com.casic.missiles.modular.system.config.ExportProperties; + +public enum ExportEnum implements ExportExcelEnum { + + STAFF_RECORDS_EXPORT("staffRecordsTemp.xlsx","staffRecordsTemp.xlsx","员工进出记录"), + VISITOR_RECORDS_EXPORT("visitorRecordsTemp.xlsx","visitorRecordsTemp.xlsx","访客进出记录"), + STAFF_PERMISSION_EXPORT("staffPermTemp.xlsx","staffPermTemp.xlsx","员工授权列表"), + VISITOR_PERMISSION_EXPORT("visitorPermTemp.xlsx","visitorPermTemp.xlsx","访客授权列表"); + + ExportEnum(String fileTempPath, String fileName, String description) { + this.fileTempPath = SpringContextHolder.getBean(ExportProperties.class).getExportPath().concat(fileTempPath); + this.fileName = fileName; + this.description = description; + } + + /** + * 导出模板相对路径 + */ + private String fileTempPath; + /** + * 下载文件名 + */ + private String fileName; + /** + * 描述信息 + */ + private String description; + + @Override + public String getFileTempPath() { + return fileTempPath; + } + + @Override + public String getFileName() { + return fileName; + } + + @Override + public String getDescription() { + return description; + } +} diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/RecognitionRecordsServiceImpl.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/RecognitionRecordsServiceImpl.java index 42f87cf..73b88ab 100644 --- a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/RecognitionRecordsServiceImpl.java +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/RecognitionRecordsServiceImpl.java @@ -54,7 +54,8 @@ @Override public List> selectVisitorDataScopePage(DataScope dataScope, Page page, String keyword, String doorCode, String devCode, String beginTime, String endTime) { - return this.baseMapper.selectVisitorDataScopePage(dataScope, page, keyword, doorCode, devCode, beginTime, endTime); + List> list = this.baseMapper.selectVisitorDataScopePage(dataScope, page, keyword, doorCode, devCode, beginTime, endTime); + return list; } @Override diff --git a/casic-web/pom.xml b/casic-web/pom.xml index f4d3527..718d9db 100644 --- a/casic-web/pom.xml +++ b/casic-web/pom.xml @@ -155,11 +155,11 @@ compile --> - - - - - + + org.codehaus.groovy + groovy-all + true + @@ -169,16 +169,19 @@ org.apache.maven.plugins maven-compiler-plugin + org.apache.maven.plugins maven-jar-plugin + /config/** **/MockController.class + diff --git a/casic-web/src/main/resources/config/application-dev.yml b/casic-web/src/main/resources/config/application-dev.yml index 74a8c85..955fa45 100644 --- a/casic-web/src/main/resources/config/application-dev.yml +++ b/casic-web/src/main/resources/config/application-dev.yml @@ -4,6 +4,7 @@ spring: datasource: url: jdbc:mysql://192.168.0.212:3306/casic_iris?autoReconnect=true&useUnicode=true&characterEncoding=utf8&useSSL=false&allowMultiQueries=true&zeroDateTimeBehavior=convertToNull + url: jdbc:mysql://119.254.103.80:3000/casic_iris?autoReconnect=true&useUnicode=true&characterEncoding=utf8&useSSL=false&allowMultiQueries=true&zeroDateTimeBehavior=convertToNull username: root password: root initial-size: 2 @@ -24,3 +25,5 @@ file: missiles.log iris: socket-port: 8000 + config: + export-path: D:\java\boot\casic-web-1.0.0-SNAPSHOT\export\ diff --git a/casic-iris-acs/pom.xml b/casic-iris-acs/pom.xml index 3bc35aa..c13d0cf 100644 --- a/casic-iris-acs/pom.xml +++ b/casic-iris-acs/pom.xml @@ -27,6 +27,16 @@ casic-admin-support ${casic.version} + + com.casic + casic-export-support + 1.0.0-SNAPSHOT + + + com.casic + casic-expands-office + 1.0.0-SNAPSHOT + @@ -46,7 +56,6 @@ - diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/config/ExportProperties.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/config/ExportProperties.java new file mode 100644 index 0000000..edb8f92 --- /dev/null +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/config/ExportProperties.java @@ -0,0 +1,12 @@ +package com.casic.missiles.modular.system.config; + +import lombok.Data; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.stereotype.Component; + +@Component +@ConfigurationProperties(prefix = "iris.config") +@Data +public class ExportProperties { + private String exportPath; +} diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/AcsPermissionController.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/AcsPermissionController.java index 61a158f..227fa57 100644 --- a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/AcsPermissionController.java +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/AcsPermissionController.java @@ -1,15 +1,22 @@ package com.casic.missiles.modular.system.controller; import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.base.response.ResponseData; import com.casic.missiles.core.common.service.ICommonPermissionService; import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.modular.system.enums.ExportEnum; import com.casic.missiles.modular.system.warpper.AcsPermissionWarpper; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.dao.DuplicateKeyException; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.*; import org.springframework.beans.factory.annotation.Autowired; import com.baomidou.mybatisplus.plugins.Page; import com.baomidou.mybatisplus.mapper.EntityWrapper; + +import java.io.IOException; import java.util.List; import java.util.Map; @@ -17,6 +24,8 @@ import com.casic.missiles.modular.system.model.AcsPermission; import com.casic.missiles.modular.system.service.IAcsPermissionService; +import javax.servlet.http.HttpServletResponse; + /** * 控制器 * @@ -25,8 +34,8 @@ */ @Controller @RequestMapping("/acsPermission") -public class AcsPermissionController extends BaseController { - +public class AcsPermissionController extends ExportController { + private static final Logger logger = LoggerFactory.getLogger(AcsPermissionController.class); @Autowired private IAcsPermissionService acsPermissionService; @@ -60,6 +69,21 @@ } /** + * 导出员工授权列表 + */ + @RequestMapping(value = "/exportStaffPerm") + @ResponseBody + public void exportStaffPerm(HttpServletResponse response, String doorCode, String keyword, Long deptId) throws IOException { + Page> page = new PageFactory>().defaultPage(); + page.setCurrent(1); + page.setSearchCount(false); + page.setSize(Integer.MAX_VALUE); + List> list = acsPermissionService.selectStaffList(page,doorCode,keyword,deptId); + new AcsPermissionWarpper(list).warp(); + super.exportExcel(ExportEnum.STAFF_PERMISSION_EXPORT, list, response); + } + + /** * 访客授权列表 */ @RequestMapping(value = "/listVisitorPerm") @@ -73,6 +97,21 @@ } /** + * 导出访客授权列表 + */ + @RequestMapping(value = "/exportVisitorPerm") + @ResponseBody + public void listVisitorPerm(HttpServletResponse response, String doorCode,String keyword,String beginTime,String endTime) throws IOException{ + Page> page = new PageFactory>().defaultPage(); + page.setCurrent(1); + page.setSearchCount(false); + page.setSize(Integer.MAX_VALUE); + List> list = acsPermissionService.selectVisitorList(page,doorCode,keyword,beginTime,endTime); + new AcsPermissionWarpper(list).warp(); + super.exportExcel(ExportEnum.VISITOR_PERMISSION_EXPORT, list, response); + } + + /** * 新增授权 * @param doorCode 门禁编号 * @param personList 人员ID列表 @@ -84,7 +123,15 @@ public Object add(@RequestParam("doorCode")String doorCode, @RequestParam("personList")List personList, @RequestParam("strategyId")Integer strategyId){ - acsPermissionService.addPermission(doorCode, personList, strategyId); + try{ + acsPermissionService.addPermission(doorCode, personList, strategyId); + }catch (Exception e){ + if (e instanceof DuplicateKeyException) { + return ResponseData.error("重复授权"); + } + logger.error("添加授权失败", e); + return ResponseData.error("添加授权失败"); + } return ResponseData.success(); } diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/RecognitionRecordsController.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/RecognitionRecordsController.java index afdee3f..d7ab253 100644 --- a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/RecognitionRecordsController.java +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/RecognitionRecordsController.java @@ -1,11 +1,17 @@ package com.casic.missiles.modular.system.controller; import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.base.response.ResponseData; import com.casic.missiles.core.common.service.ICommonPermissionService; import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.core.util.ToolUtil; +import com.casic.missiles.modular.system.enums.ExportEnum; import com.casic.missiles.modular.system.warpper.DeviceWarpper; import com.casic.missiles.modular.system.warpper.RecognitionRecordsWarpper; +import org.apache.commons.lang.StringUtils; +import org.hswebframework.expands.office.excel.ExcelIO; +import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; @@ -13,6 +19,10 @@ import org.springframework.beans.factory.annotation.Autowired; import com.baomidou.mybatisplus.plugins.Page; import com.baomidou.mybatisplus.mapper.EntityWrapper; + +import java.io.FileInputStream; +import java.io.IOException; +import java.util.HashMap; import java.util.List; import java.util.Map; @@ -21,6 +31,9 @@ import com.casic.missiles.modular.system.model.RecognitionRecords; import com.casic.missiles.modular.system.service.IRecognitionRecordsService; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + /** * 控制器 * @@ -29,7 +42,7 @@ */ @Controller @RequestMapping("/records") -public class RecognitionRecordsController extends BaseController { +public class RecognitionRecordsController extends ExportController { @Autowired private IRecognitionRecordsService recordsService; @@ -51,6 +64,22 @@ } /** + * 导出员工记录 + */ + @RequestMapping(value = "/exportStaff") + @ResponseBody + public void exportStaff(HttpServletResponse response,String keyword,Long personDeptId,String doorCode,String devCode,String beginTime,String endTime) throws IOException { + Page> page = new PageFactory>().defaultPage(); + page.setCurrent(1); + page.setSearchCount(false); + page.setSize(Integer.MAX_VALUE); + DataScope dataScope = permissionService.getCurrUserDataScope(); + List> list = recordsService.selectStaffDataScopePage(dataScope,page,keyword,personDeptId,doorCode,devCode,beginTime,endTime); + new RecognitionRecordsWarpper(list).warp(); + super.exportExcel(ExportEnum.STAFF_RECORDS_EXPORT, list, response); + } + + /** * 访客数据查询 */ @RequestMapping(value = "/listVisitor") @@ -65,6 +94,22 @@ } /** + * 导出访客记录 + */ + @RequestMapping(value = "/exportVisitor") + @ResponseBody + public void exportVisitor(HttpServletResponse response,String keyword,String doorCode,String devCode,String beginTime,String endTime) throws IOException{ + Page> page = new PageFactory>().defaultPage(); + page.setCurrent(1); + page.setSearchCount(false); + page.setSize(Integer.MAX_VALUE); + DataScope dataScope = permissionService.getCurrUserDataScope(); + List> list = recordsService.selectVisitorDataScopePage(dataScope,page,keyword,doorCode,devCode,beginTime,endTime); + new RecognitionRecordsWarpper(list).warp(); + super.exportExcel(ExportEnum.VISITOR_RECORDS_EXPORT, list, response); + } + + /** * 统计各部门进出记录 */ @RequestMapping(value = "/statisticByDept") diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/AcsPermissionMapper.xml b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/AcsPermissionMapper.xml index 57db741..18e1925 100644 --- a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/AcsPermissionMapper.xml +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/AcsPermissionMapper.xml @@ -29,7 +29,7 @@ FROM acs_door door LEFT JOIN acs_permission per ON per.DOOR_CODE = door.DOOR_CODE - LEFT JOIN sys_person p ON per.PERSON_ID = p.ID + LEFT JOIN person_ext_view p ON per.PERSON_ID = p.ID WHERE p.DELFLAG = '0' OR p.DELFLAG IS NULL GROUP BY door.DOOR_CODE @@ -49,7 +49,7 @@ per.ID AS permissionId FROM acs_permission per LEFT JOIN acs_door door ON door.DOOR_CODE = per.DOOR_CODE - LEFT JOIN sys_person p ON per.PERSON_ID = p.ID + LEFT JOIN person_ext_view p ON per.PERSON_ID = p.ID LEFT JOIN acs_strategy stra ON per.STRATEGY_ID = stra.ID WHERE per.DOOR_CODE = #{doorCode} AND p.PERSON_TYPE = '1' @@ -76,13 +76,13 @@ per.ID AS permissionId FROM acs_permission per LEFT JOIN acs_door door ON door.DOOR_CODE = per.DOOR_CODE - LEFT JOIN sys_person p ON per.PERSON_ID = p.ID + LEFT JOIN person_ext_view p ON per.PERSON_ID = p.ID LEFT JOIN acs_strategy stra ON per.STRATEGY_ID = stra.ID WHERE per.DOOR_CODE = #{doorCode} AND p.PERSON_TYPE = '0' AND p.DELFLAG = '0' - AND ( (p.NAME LIKE CONNAT('%',#{keyword},'%')) OR (p.ID_CARD_NO LIKE CONNAT('%',#{keyword},'%')) ) + AND ( (p.NAME LIKE CONCAT('%',#{keyword},'%')) OR (p.ID_CARD_NO LIKE CONCAT('%',#{keyword},'%')) ) AND per.CREATE_TIME = ]]> #{beginTime} @@ -100,7 +100,7 @@ ID_CARD_NO as idCard, REMARKS as remarks, PERSON_CODE AS personCode - FROM sys_person + FROM person_ext_view WHERE ID NOT IN (SELECT PERSON_ID FROM acs_permission WHERE DOOR_CODE = #{doorCode}) AND PERSON_TYPE = #{personType} AND DELFLAG = '0' diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/RecognitionRecordsMapper.xml b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/RecognitionRecordsMapper.xml index 42ce3b1..7a6573d 100644 --- a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/RecognitionRecordsMapper.xml +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/RecognitionRecordsMapper.xml @@ -31,7 +31,7 @@ FROM `recognition_records` re LEFT JOIN acs_door door ON door.DOOR_CODE = re.DOOR_CODE - LEFT JOIN sys_person p ON p.ID = re.PERSON_ID + LEFT JOIN person_ext_view p ON p.ID = re.PERSON_ID WHERE p.PERSON_TYPE = 1 AND ( p.NAME LIKE CONCAT('%',#{keyword},'%') @@ -62,13 +62,14 @@ re.INOUT_TYPE AS inoutType, p.NAME AS personName, p.PERSON_CODE AS personCode, + p.CERTIFICATION_UNIT AS personDeptName, p.ID_CARD_NO AS idCard, p.REMARKS AS remarks, re.DATETIME AS dateTime FROM `recognition_records` re LEFT JOIN acs_door door ON door.DOOR_CODE = re.DOOR_CODE - LEFT JOIN sys_person p ON p.ID = re.PERSON_ID + LEFT JOIN person_ext_view p ON p.ID = re.PERSON_ID WHERE p.PERSON_TYPE = 0 AND ( p.NAME LIKE CONCAT('%',#{keyword},'%') @@ -95,7 +96,7 @@ FROM `recognition_records` re LEFT JOIN acs_door door ON door.DOOR_CODE = re.DOOR_CODE - LEFT JOIN sys_person p ON p.ID = re.PERSON_ID + LEFT JOIN person_ext_view p ON p.ID = re.PERSON_ID WHERE p.PERSON_TYPE = 1 @@ -123,7 +124,7 @@ FROM `recognition_records` re LEFT JOIN acs_door door ON door.DOOR_CODE = re.DOOR_CODE - LEFT JOIN sys_person p ON p.ID = re.PERSON_ID + LEFT JOIN person_ext_view p ON p.ID = re.PERSON_ID WHERE p.PERSON_TYPE = 1 AND re.INOUT_TYPE = #{inoutType} diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/enums/ExportEnum.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/enums/ExportEnum.java new file mode 100644 index 0000000..4ae6420 --- /dev/null +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/enums/ExportEnum.java @@ -0,0 +1,47 @@ +package com.casic.missiles.modular.system.enums; + +import com.casic.missiles.core.enums.ExportExcelEnum; +import com.casic.missiles.core.util.SpringContextHolder; +import com.casic.missiles.modular.system.config.ExportProperties; + +public enum ExportEnum implements ExportExcelEnum { + + STAFF_RECORDS_EXPORT("staffRecordsTemp.xlsx","staffRecordsTemp.xlsx","员工进出记录"), + VISITOR_RECORDS_EXPORT("visitorRecordsTemp.xlsx","visitorRecordsTemp.xlsx","访客进出记录"), + STAFF_PERMISSION_EXPORT("staffPermTemp.xlsx","staffPermTemp.xlsx","员工授权列表"), + VISITOR_PERMISSION_EXPORT("visitorPermTemp.xlsx","visitorPermTemp.xlsx","访客授权列表"); + + ExportEnum(String fileTempPath, String fileName, String description) { + this.fileTempPath = SpringContextHolder.getBean(ExportProperties.class).getExportPath().concat(fileTempPath); + this.fileName = fileName; + this.description = description; + } + + /** + * 导出模板相对路径 + */ + private String fileTempPath; + /** + * 下载文件名 + */ + private String fileName; + /** + * 描述信息 + */ + private String description; + + @Override + public String getFileTempPath() { + return fileTempPath; + } + + @Override + public String getFileName() { + return fileName; + } + + @Override + public String getDescription() { + return description; + } +} diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/RecognitionRecordsServiceImpl.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/RecognitionRecordsServiceImpl.java index 42f87cf..73b88ab 100644 --- a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/RecognitionRecordsServiceImpl.java +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/RecognitionRecordsServiceImpl.java @@ -54,7 +54,8 @@ @Override public List> selectVisitorDataScopePage(DataScope dataScope, Page page, String keyword, String doorCode, String devCode, String beginTime, String endTime) { - return this.baseMapper.selectVisitorDataScopePage(dataScope, page, keyword, doorCode, devCode, beginTime, endTime); + List> list = this.baseMapper.selectVisitorDataScopePage(dataScope, page, keyword, doorCode, devCode, beginTime, endTime); + return list; } @Override diff --git a/casic-web/pom.xml b/casic-web/pom.xml index f4d3527..718d9db 100644 --- a/casic-web/pom.xml +++ b/casic-web/pom.xml @@ -155,11 +155,11 @@ compile --> - - - - - + + org.codehaus.groovy + groovy-all + true + @@ -169,16 +169,19 @@ org.apache.maven.plugins maven-compiler-plugin + org.apache.maven.plugins maven-jar-plugin + /config/** **/MockController.class + diff --git a/casic-web/src/main/resources/config/application-dev.yml b/casic-web/src/main/resources/config/application-dev.yml index 74a8c85..955fa45 100644 --- a/casic-web/src/main/resources/config/application-dev.yml +++ b/casic-web/src/main/resources/config/application-dev.yml @@ -4,6 +4,7 @@ spring: datasource: url: jdbc:mysql://192.168.0.212:3306/casic_iris?autoReconnect=true&useUnicode=true&characterEncoding=utf8&useSSL=false&allowMultiQueries=true&zeroDateTimeBehavior=convertToNull + url: jdbc:mysql://119.254.103.80:3000/casic_iris?autoReconnect=true&useUnicode=true&characterEncoding=utf8&useSSL=false&allowMultiQueries=true&zeroDateTimeBehavior=convertToNull username: root password: root initial-size: 2 @@ -24,3 +25,5 @@ file: missiles.log iris: socket-port: 8000 + config: + export-path: D:\java\boot\casic-web-1.0.0-SNAPSHOT\export\ diff --git a/casic-web/src/main/resources/config/application-test.yml b/casic-web/src/main/resources/config/application-test.yml index 39e13f0..34d2de1 100644 --- a/casic-web/src/main/resources/config/application-test.yml +++ b/casic-web/src/main/resources/config/application-test.yml @@ -1,11 +1,11 @@ server: - port: 8094 + port: 20002 ################### spring配置 ################### spring: datasource: - url: jdbc:mysql://192.168.8.201:3306/casic_iris?autoReconnect=true&useUnicode=true&characterEncoding=utf8&useSSL=false&allowMultiQueries=true&zeroDateTimeBehavior=convertToNull + url: jdbc:mysql://119.254.103.80:3306/casic_iris?autoReconnect=true&useUnicode=true&characterEncoding=utf8&useSSL=false&allowMultiQueries=true&zeroDateTimeBehavior=convertToNull username: root - password: Casic203 + password: root initial-size: 2 min-idle: 1 #flowable数据源和多数据源配置 diff --git a/casic-iris-acs/pom.xml b/casic-iris-acs/pom.xml index 3bc35aa..c13d0cf 100644 --- a/casic-iris-acs/pom.xml +++ b/casic-iris-acs/pom.xml @@ -27,6 +27,16 @@ casic-admin-support ${casic.version} + + com.casic + casic-export-support + 1.0.0-SNAPSHOT + + + com.casic + casic-expands-office + 1.0.0-SNAPSHOT + @@ -46,7 +56,6 @@ - diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/config/ExportProperties.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/config/ExportProperties.java new file mode 100644 index 0000000..edb8f92 --- /dev/null +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/config/ExportProperties.java @@ -0,0 +1,12 @@ +package com.casic.missiles.modular.system.config; + +import lombok.Data; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.stereotype.Component; + +@Component +@ConfigurationProperties(prefix = "iris.config") +@Data +public class ExportProperties { + private String exportPath; +} diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/AcsPermissionController.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/AcsPermissionController.java index 61a158f..227fa57 100644 --- a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/AcsPermissionController.java +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/AcsPermissionController.java @@ -1,15 +1,22 @@ package com.casic.missiles.modular.system.controller; import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.base.response.ResponseData; import com.casic.missiles.core.common.service.ICommonPermissionService; import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.modular.system.enums.ExportEnum; import com.casic.missiles.modular.system.warpper.AcsPermissionWarpper; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.dao.DuplicateKeyException; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.*; import org.springframework.beans.factory.annotation.Autowired; import com.baomidou.mybatisplus.plugins.Page; import com.baomidou.mybatisplus.mapper.EntityWrapper; + +import java.io.IOException; import java.util.List; import java.util.Map; @@ -17,6 +24,8 @@ import com.casic.missiles.modular.system.model.AcsPermission; import com.casic.missiles.modular.system.service.IAcsPermissionService; +import javax.servlet.http.HttpServletResponse; + /** * 控制器 * @@ -25,8 +34,8 @@ */ @Controller @RequestMapping("/acsPermission") -public class AcsPermissionController extends BaseController { - +public class AcsPermissionController extends ExportController { + private static final Logger logger = LoggerFactory.getLogger(AcsPermissionController.class); @Autowired private IAcsPermissionService acsPermissionService; @@ -60,6 +69,21 @@ } /** + * 导出员工授权列表 + */ + @RequestMapping(value = "/exportStaffPerm") + @ResponseBody + public void exportStaffPerm(HttpServletResponse response, String doorCode, String keyword, Long deptId) throws IOException { + Page> page = new PageFactory>().defaultPage(); + page.setCurrent(1); + page.setSearchCount(false); + page.setSize(Integer.MAX_VALUE); + List> list = acsPermissionService.selectStaffList(page,doorCode,keyword,deptId); + new AcsPermissionWarpper(list).warp(); + super.exportExcel(ExportEnum.STAFF_PERMISSION_EXPORT, list, response); + } + + /** * 访客授权列表 */ @RequestMapping(value = "/listVisitorPerm") @@ -73,6 +97,21 @@ } /** + * 导出访客授权列表 + */ + @RequestMapping(value = "/exportVisitorPerm") + @ResponseBody + public void listVisitorPerm(HttpServletResponse response, String doorCode,String keyword,String beginTime,String endTime) throws IOException{ + Page> page = new PageFactory>().defaultPage(); + page.setCurrent(1); + page.setSearchCount(false); + page.setSize(Integer.MAX_VALUE); + List> list = acsPermissionService.selectVisitorList(page,doorCode,keyword,beginTime,endTime); + new AcsPermissionWarpper(list).warp(); + super.exportExcel(ExportEnum.VISITOR_PERMISSION_EXPORT, list, response); + } + + /** * 新增授权 * @param doorCode 门禁编号 * @param personList 人员ID列表 @@ -84,7 +123,15 @@ public Object add(@RequestParam("doorCode")String doorCode, @RequestParam("personList")List personList, @RequestParam("strategyId")Integer strategyId){ - acsPermissionService.addPermission(doorCode, personList, strategyId); + try{ + acsPermissionService.addPermission(doorCode, personList, strategyId); + }catch (Exception e){ + if (e instanceof DuplicateKeyException) { + return ResponseData.error("重复授权"); + } + logger.error("添加授权失败", e); + return ResponseData.error("添加授权失败"); + } return ResponseData.success(); } diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/RecognitionRecordsController.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/RecognitionRecordsController.java index afdee3f..d7ab253 100644 --- a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/RecognitionRecordsController.java +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/RecognitionRecordsController.java @@ -1,11 +1,17 @@ package com.casic.missiles.modular.system.controller; import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.base.response.ResponseData; import com.casic.missiles.core.common.service.ICommonPermissionService; import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.core.util.ToolUtil; +import com.casic.missiles.modular.system.enums.ExportEnum; import com.casic.missiles.modular.system.warpper.DeviceWarpper; import com.casic.missiles.modular.system.warpper.RecognitionRecordsWarpper; +import org.apache.commons.lang.StringUtils; +import org.hswebframework.expands.office.excel.ExcelIO; +import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; @@ -13,6 +19,10 @@ import org.springframework.beans.factory.annotation.Autowired; import com.baomidou.mybatisplus.plugins.Page; import com.baomidou.mybatisplus.mapper.EntityWrapper; + +import java.io.FileInputStream; +import java.io.IOException; +import java.util.HashMap; import java.util.List; import java.util.Map; @@ -21,6 +31,9 @@ import com.casic.missiles.modular.system.model.RecognitionRecords; import com.casic.missiles.modular.system.service.IRecognitionRecordsService; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + /** * 控制器 * @@ -29,7 +42,7 @@ */ @Controller @RequestMapping("/records") -public class RecognitionRecordsController extends BaseController { +public class RecognitionRecordsController extends ExportController { @Autowired private IRecognitionRecordsService recordsService; @@ -51,6 +64,22 @@ } /** + * 导出员工记录 + */ + @RequestMapping(value = "/exportStaff") + @ResponseBody + public void exportStaff(HttpServletResponse response,String keyword,Long personDeptId,String doorCode,String devCode,String beginTime,String endTime) throws IOException { + Page> page = new PageFactory>().defaultPage(); + page.setCurrent(1); + page.setSearchCount(false); + page.setSize(Integer.MAX_VALUE); + DataScope dataScope = permissionService.getCurrUserDataScope(); + List> list = recordsService.selectStaffDataScopePage(dataScope,page,keyword,personDeptId,doorCode,devCode,beginTime,endTime); + new RecognitionRecordsWarpper(list).warp(); + super.exportExcel(ExportEnum.STAFF_RECORDS_EXPORT, list, response); + } + + /** * 访客数据查询 */ @RequestMapping(value = "/listVisitor") @@ -65,6 +94,22 @@ } /** + * 导出访客记录 + */ + @RequestMapping(value = "/exportVisitor") + @ResponseBody + public void exportVisitor(HttpServletResponse response,String keyword,String doorCode,String devCode,String beginTime,String endTime) throws IOException{ + Page> page = new PageFactory>().defaultPage(); + page.setCurrent(1); + page.setSearchCount(false); + page.setSize(Integer.MAX_VALUE); + DataScope dataScope = permissionService.getCurrUserDataScope(); + List> list = recordsService.selectVisitorDataScopePage(dataScope,page,keyword,doorCode,devCode,beginTime,endTime); + new RecognitionRecordsWarpper(list).warp(); + super.exportExcel(ExportEnum.VISITOR_RECORDS_EXPORT, list, response); + } + + /** * 统计各部门进出记录 */ @RequestMapping(value = "/statisticByDept") diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/AcsPermissionMapper.xml b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/AcsPermissionMapper.xml index 57db741..18e1925 100644 --- a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/AcsPermissionMapper.xml +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/AcsPermissionMapper.xml @@ -29,7 +29,7 @@ FROM acs_door door LEFT JOIN acs_permission per ON per.DOOR_CODE = door.DOOR_CODE - LEFT JOIN sys_person p ON per.PERSON_ID = p.ID + LEFT JOIN person_ext_view p ON per.PERSON_ID = p.ID WHERE p.DELFLAG = '0' OR p.DELFLAG IS NULL GROUP BY door.DOOR_CODE @@ -49,7 +49,7 @@ per.ID AS permissionId FROM acs_permission per LEFT JOIN acs_door door ON door.DOOR_CODE = per.DOOR_CODE - LEFT JOIN sys_person p ON per.PERSON_ID = p.ID + LEFT JOIN person_ext_view p ON per.PERSON_ID = p.ID LEFT JOIN acs_strategy stra ON per.STRATEGY_ID = stra.ID WHERE per.DOOR_CODE = #{doorCode} AND p.PERSON_TYPE = '1' @@ -76,13 +76,13 @@ per.ID AS permissionId FROM acs_permission per LEFT JOIN acs_door door ON door.DOOR_CODE = per.DOOR_CODE - LEFT JOIN sys_person p ON per.PERSON_ID = p.ID + LEFT JOIN person_ext_view p ON per.PERSON_ID = p.ID LEFT JOIN acs_strategy stra ON per.STRATEGY_ID = stra.ID WHERE per.DOOR_CODE = #{doorCode} AND p.PERSON_TYPE = '0' AND p.DELFLAG = '0' - AND ( (p.NAME LIKE CONNAT('%',#{keyword},'%')) OR (p.ID_CARD_NO LIKE CONNAT('%',#{keyword},'%')) ) + AND ( (p.NAME LIKE CONCAT('%',#{keyword},'%')) OR (p.ID_CARD_NO LIKE CONCAT('%',#{keyword},'%')) ) AND per.CREATE_TIME = ]]> #{beginTime} @@ -100,7 +100,7 @@ ID_CARD_NO as idCard, REMARKS as remarks, PERSON_CODE AS personCode - FROM sys_person + FROM person_ext_view WHERE ID NOT IN (SELECT PERSON_ID FROM acs_permission WHERE DOOR_CODE = #{doorCode}) AND PERSON_TYPE = #{personType} AND DELFLAG = '0' diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/RecognitionRecordsMapper.xml b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/RecognitionRecordsMapper.xml index 42ce3b1..7a6573d 100644 --- a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/RecognitionRecordsMapper.xml +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/RecognitionRecordsMapper.xml @@ -31,7 +31,7 @@ FROM `recognition_records` re LEFT JOIN acs_door door ON door.DOOR_CODE = re.DOOR_CODE - LEFT JOIN sys_person p ON p.ID = re.PERSON_ID + LEFT JOIN person_ext_view p ON p.ID = re.PERSON_ID WHERE p.PERSON_TYPE = 1 AND ( p.NAME LIKE CONCAT('%',#{keyword},'%') @@ -62,13 +62,14 @@ re.INOUT_TYPE AS inoutType, p.NAME AS personName, p.PERSON_CODE AS personCode, + p.CERTIFICATION_UNIT AS personDeptName, p.ID_CARD_NO AS idCard, p.REMARKS AS remarks, re.DATETIME AS dateTime FROM `recognition_records` re LEFT JOIN acs_door door ON door.DOOR_CODE = re.DOOR_CODE - LEFT JOIN sys_person p ON p.ID = re.PERSON_ID + LEFT JOIN person_ext_view p ON p.ID = re.PERSON_ID WHERE p.PERSON_TYPE = 0 AND ( p.NAME LIKE CONCAT('%',#{keyword},'%') @@ -95,7 +96,7 @@ FROM `recognition_records` re LEFT JOIN acs_door door ON door.DOOR_CODE = re.DOOR_CODE - LEFT JOIN sys_person p ON p.ID = re.PERSON_ID + LEFT JOIN person_ext_view p ON p.ID = re.PERSON_ID WHERE p.PERSON_TYPE = 1 @@ -123,7 +124,7 @@ FROM `recognition_records` re LEFT JOIN acs_door door ON door.DOOR_CODE = re.DOOR_CODE - LEFT JOIN sys_person p ON p.ID = re.PERSON_ID + LEFT JOIN person_ext_view p ON p.ID = re.PERSON_ID WHERE p.PERSON_TYPE = 1 AND re.INOUT_TYPE = #{inoutType} diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/enums/ExportEnum.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/enums/ExportEnum.java new file mode 100644 index 0000000..4ae6420 --- /dev/null +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/enums/ExportEnum.java @@ -0,0 +1,47 @@ +package com.casic.missiles.modular.system.enums; + +import com.casic.missiles.core.enums.ExportExcelEnum; +import com.casic.missiles.core.util.SpringContextHolder; +import com.casic.missiles.modular.system.config.ExportProperties; + +public enum ExportEnum implements ExportExcelEnum { + + STAFF_RECORDS_EXPORT("staffRecordsTemp.xlsx","staffRecordsTemp.xlsx","员工进出记录"), + VISITOR_RECORDS_EXPORT("visitorRecordsTemp.xlsx","visitorRecordsTemp.xlsx","访客进出记录"), + STAFF_PERMISSION_EXPORT("staffPermTemp.xlsx","staffPermTemp.xlsx","员工授权列表"), + VISITOR_PERMISSION_EXPORT("visitorPermTemp.xlsx","visitorPermTemp.xlsx","访客授权列表"); + + ExportEnum(String fileTempPath, String fileName, String description) { + this.fileTempPath = SpringContextHolder.getBean(ExportProperties.class).getExportPath().concat(fileTempPath); + this.fileName = fileName; + this.description = description; + } + + /** + * 导出模板相对路径 + */ + private String fileTempPath; + /** + * 下载文件名 + */ + private String fileName; + /** + * 描述信息 + */ + private String description; + + @Override + public String getFileTempPath() { + return fileTempPath; + } + + @Override + public String getFileName() { + return fileName; + } + + @Override + public String getDescription() { + return description; + } +} diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/RecognitionRecordsServiceImpl.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/RecognitionRecordsServiceImpl.java index 42f87cf..73b88ab 100644 --- a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/RecognitionRecordsServiceImpl.java +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/RecognitionRecordsServiceImpl.java @@ -54,7 +54,8 @@ @Override public List> selectVisitorDataScopePage(DataScope dataScope, Page page, String keyword, String doorCode, String devCode, String beginTime, String endTime) { - return this.baseMapper.selectVisitorDataScopePage(dataScope, page, keyword, doorCode, devCode, beginTime, endTime); + List> list = this.baseMapper.selectVisitorDataScopePage(dataScope, page, keyword, doorCode, devCode, beginTime, endTime); + return list; } @Override diff --git a/casic-web/pom.xml b/casic-web/pom.xml index f4d3527..718d9db 100644 --- a/casic-web/pom.xml +++ b/casic-web/pom.xml @@ -155,11 +155,11 @@ compile --> - - - - - + + org.codehaus.groovy + groovy-all + true + @@ -169,16 +169,19 @@ org.apache.maven.plugins maven-compiler-plugin + org.apache.maven.plugins maven-jar-plugin + /config/** **/MockController.class + diff --git a/casic-web/src/main/resources/config/application-dev.yml b/casic-web/src/main/resources/config/application-dev.yml index 74a8c85..955fa45 100644 --- a/casic-web/src/main/resources/config/application-dev.yml +++ b/casic-web/src/main/resources/config/application-dev.yml @@ -4,6 +4,7 @@ spring: datasource: url: jdbc:mysql://192.168.0.212:3306/casic_iris?autoReconnect=true&useUnicode=true&characterEncoding=utf8&useSSL=false&allowMultiQueries=true&zeroDateTimeBehavior=convertToNull + url: jdbc:mysql://119.254.103.80:3000/casic_iris?autoReconnect=true&useUnicode=true&characterEncoding=utf8&useSSL=false&allowMultiQueries=true&zeroDateTimeBehavior=convertToNull username: root password: root initial-size: 2 @@ -24,3 +25,5 @@ file: missiles.log iris: socket-port: 8000 + config: + export-path: D:\java\boot\casic-web-1.0.0-SNAPSHOT\export\ diff --git a/casic-web/src/main/resources/config/application-test.yml b/casic-web/src/main/resources/config/application-test.yml index 39e13f0..34d2de1 100644 --- a/casic-web/src/main/resources/config/application-test.yml +++ b/casic-web/src/main/resources/config/application-test.yml @@ -1,11 +1,11 @@ server: - port: 8094 + port: 20002 ################### spring配置 ################### spring: datasource: - url: jdbc:mysql://192.168.8.201:3306/casic_iris?autoReconnect=true&useUnicode=true&characterEncoding=utf8&useSSL=false&allowMultiQueries=true&zeroDateTimeBehavior=convertToNull + url: jdbc:mysql://119.254.103.80:3306/casic_iris?autoReconnect=true&useUnicode=true&characterEncoding=utf8&useSSL=false&allowMultiQueries=true&zeroDateTimeBehavior=convertToNull username: root - password: Casic203 + password: root initial-size: 2 min-idle: 1 #flowable数据源和多数据源配置 diff --git a/casic-web/src/main/resources/config/temp/staffPermTemp.xlsx b/casic-web/src/main/resources/config/temp/staffPermTemp.xlsx new file mode 100644 index 0000000..a5b1777 --- /dev/null +++ b/casic-web/src/main/resources/config/temp/staffPermTemp.xlsx Binary files differ diff --git a/casic-iris-acs/pom.xml b/casic-iris-acs/pom.xml index 3bc35aa..c13d0cf 100644 --- a/casic-iris-acs/pom.xml +++ b/casic-iris-acs/pom.xml @@ -27,6 +27,16 @@ casic-admin-support ${casic.version} + + com.casic + casic-export-support + 1.0.0-SNAPSHOT + + + com.casic + casic-expands-office + 1.0.0-SNAPSHOT + @@ -46,7 +56,6 @@ - diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/config/ExportProperties.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/config/ExportProperties.java new file mode 100644 index 0000000..edb8f92 --- /dev/null +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/config/ExportProperties.java @@ -0,0 +1,12 @@ +package com.casic.missiles.modular.system.config; + +import lombok.Data; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.stereotype.Component; + +@Component +@ConfigurationProperties(prefix = "iris.config") +@Data +public class ExportProperties { + private String exportPath; +} diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/AcsPermissionController.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/AcsPermissionController.java index 61a158f..227fa57 100644 --- a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/AcsPermissionController.java +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/AcsPermissionController.java @@ -1,15 +1,22 @@ package com.casic.missiles.modular.system.controller; import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.base.response.ResponseData; import com.casic.missiles.core.common.service.ICommonPermissionService; import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.modular.system.enums.ExportEnum; import com.casic.missiles.modular.system.warpper.AcsPermissionWarpper; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.dao.DuplicateKeyException; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.*; import org.springframework.beans.factory.annotation.Autowired; import com.baomidou.mybatisplus.plugins.Page; import com.baomidou.mybatisplus.mapper.EntityWrapper; + +import java.io.IOException; import java.util.List; import java.util.Map; @@ -17,6 +24,8 @@ import com.casic.missiles.modular.system.model.AcsPermission; import com.casic.missiles.modular.system.service.IAcsPermissionService; +import javax.servlet.http.HttpServletResponse; + /** * 控制器 * @@ -25,8 +34,8 @@ */ @Controller @RequestMapping("/acsPermission") -public class AcsPermissionController extends BaseController { - +public class AcsPermissionController extends ExportController { + private static final Logger logger = LoggerFactory.getLogger(AcsPermissionController.class); @Autowired private IAcsPermissionService acsPermissionService; @@ -60,6 +69,21 @@ } /** + * 导出员工授权列表 + */ + @RequestMapping(value = "/exportStaffPerm") + @ResponseBody + public void exportStaffPerm(HttpServletResponse response, String doorCode, String keyword, Long deptId) throws IOException { + Page> page = new PageFactory>().defaultPage(); + page.setCurrent(1); + page.setSearchCount(false); + page.setSize(Integer.MAX_VALUE); + List> list = acsPermissionService.selectStaffList(page,doorCode,keyword,deptId); + new AcsPermissionWarpper(list).warp(); + super.exportExcel(ExportEnum.STAFF_PERMISSION_EXPORT, list, response); + } + + /** * 访客授权列表 */ @RequestMapping(value = "/listVisitorPerm") @@ -73,6 +97,21 @@ } /** + * 导出访客授权列表 + */ + @RequestMapping(value = "/exportVisitorPerm") + @ResponseBody + public void listVisitorPerm(HttpServletResponse response, String doorCode,String keyword,String beginTime,String endTime) throws IOException{ + Page> page = new PageFactory>().defaultPage(); + page.setCurrent(1); + page.setSearchCount(false); + page.setSize(Integer.MAX_VALUE); + List> list = acsPermissionService.selectVisitorList(page,doorCode,keyword,beginTime,endTime); + new AcsPermissionWarpper(list).warp(); + super.exportExcel(ExportEnum.VISITOR_PERMISSION_EXPORT, list, response); + } + + /** * 新增授权 * @param doorCode 门禁编号 * @param personList 人员ID列表 @@ -84,7 +123,15 @@ public Object add(@RequestParam("doorCode")String doorCode, @RequestParam("personList")List personList, @RequestParam("strategyId")Integer strategyId){ - acsPermissionService.addPermission(doorCode, personList, strategyId); + try{ + acsPermissionService.addPermission(doorCode, personList, strategyId); + }catch (Exception e){ + if (e instanceof DuplicateKeyException) { + return ResponseData.error("重复授权"); + } + logger.error("添加授权失败", e); + return ResponseData.error("添加授权失败"); + } return ResponseData.success(); } diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/RecognitionRecordsController.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/RecognitionRecordsController.java index afdee3f..d7ab253 100644 --- a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/RecognitionRecordsController.java +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/RecognitionRecordsController.java @@ -1,11 +1,17 @@ package com.casic.missiles.modular.system.controller; import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.base.response.ResponseData; import com.casic.missiles.core.common.service.ICommonPermissionService; import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.core.util.ToolUtil; +import com.casic.missiles.modular.system.enums.ExportEnum; import com.casic.missiles.modular.system.warpper.DeviceWarpper; import com.casic.missiles.modular.system.warpper.RecognitionRecordsWarpper; +import org.apache.commons.lang.StringUtils; +import org.hswebframework.expands.office.excel.ExcelIO; +import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; @@ -13,6 +19,10 @@ import org.springframework.beans.factory.annotation.Autowired; import com.baomidou.mybatisplus.plugins.Page; import com.baomidou.mybatisplus.mapper.EntityWrapper; + +import java.io.FileInputStream; +import java.io.IOException; +import java.util.HashMap; import java.util.List; import java.util.Map; @@ -21,6 +31,9 @@ import com.casic.missiles.modular.system.model.RecognitionRecords; import com.casic.missiles.modular.system.service.IRecognitionRecordsService; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + /** * 控制器 * @@ -29,7 +42,7 @@ */ @Controller @RequestMapping("/records") -public class RecognitionRecordsController extends BaseController { +public class RecognitionRecordsController extends ExportController { @Autowired private IRecognitionRecordsService recordsService; @@ -51,6 +64,22 @@ } /** + * 导出员工记录 + */ + @RequestMapping(value = "/exportStaff") + @ResponseBody + public void exportStaff(HttpServletResponse response,String keyword,Long personDeptId,String doorCode,String devCode,String beginTime,String endTime) throws IOException { + Page> page = new PageFactory>().defaultPage(); + page.setCurrent(1); + page.setSearchCount(false); + page.setSize(Integer.MAX_VALUE); + DataScope dataScope = permissionService.getCurrUserDataScope(); + List> list = recordsService.selectStaffDataScopePage(dataScope,page,keyword,personDeptId,doorCode,devCode,beginTime,endTime); + new RecognitionRecordsWarpper(list).warp(); + super.exportExcel(ExportEnum.STAFF_RECORDS_EXPORT, list, response); + } + + /** * 访客数据查询 */ @RequestMapping(value = "/listVisitor") @@ -65,6 +94,22 @@ } /** + * 导出访客记录 + */ + @RequestMapping(value = "/exportVisitor") + @ResponseBody + public void exportVisitor(HttpServletResponse response,String keyword,String doorCode,String devCode,String beginTime,String endTime) throws IOException{ + Page> page = new PageFactory>().defaultPage(); + page.setCurrent(1); + page.setSearchCount(false); + page.setSize(Integer.MAX_VALUE); + DataScope dataScope = permissionService.getCurrUserDataScope(); + List> list = recordsService.selectVisitorDataScopePage(dataScope,page,keyword,doorCode,devCode,beginTime,endTime); + new RecognitionRecordsWarpper(list).warp(); + super.exportExcel(ExportEnum.VISITOR_RECORDS_EXPORT, list, response); + } + + /** * 统计各部门进出记录 */ @RequestMapping(value = "/statisticByDept") diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/AcsPermissionMapper.xml b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/AcsPermissionMapper.xml index 57db741..18e1925 100644 --- a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/AcsPermissionMapper.xml +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/AcsPermissionMapper.xml @@ -29,7 +29,7 @@ FROM acs_door door LEFT JOIN acs_permission per ON per.DOOR_CODE = door.DOOR_CODE - LEFT JOIN sys_person p ON per.PERSON_ID = p.ID + LEFT JOIN person_ext_view p ON per.PERSON_ID = p.ID WHERE p.DELFLAG = '0' OR p.DELFLAG IS NULL GROUP BY door.DOOR_CODE @@ -49,7 +49,7 @@ per.ID AS permissionId FROM acs_permission per LEFT JOIN acs_door door ON door.DOOR_CODE = per.DOOR_CODE - LEFT JOIN sys_person p ON per.PERSON_ID = p.ID + LEFT JOIN person_ext_view p ON per.PERSON_ID = p.ID LEFT JOIN acs_strategy stra ON per.STRATEGY_ID = stra.ID WHERE per.DOOR_CODE = #{doorCode} AND p.PERSON_TYPE = '1' @@ -76,13 +76,13 @@ per.ID AS permissionId FROM acs_permission per LEFT JOIN acs_door door ON door.DOOR_CODE = per.DOOR_CODE - LEFT JOIN sys_person p ON per.PERSON_ID = p.ID + LEFT JOIN person_ext_view p ON per.PERSON_ID = p.ID LEFT JOIN acs_strategy stra ON per.STRATEGY_ID = stra.ID WHERE per.DOOR_CODE = #{doorCode} AND p.PERSON_TYPE = '0' AND p.DELFLAG = '0' - AND ( (p.NAME LIKE CONNAT('%',#{keyword},'%')) OR (p.ID_CARD_NO LIKE CONNAT('%',#{keyword},'%')) ) + AND ( (p.NAME LIKE CONCAT('%',#{keyword},'%')) OR (p.ID_CARD_NO LIKE CONCAT('%',#{keyword},'%')) ) AND per.CREATE_TIME = ]]> #{beginTime} @@ -100,7 +100,7 @@ ID_CARD_NO as idCard, REMARKS as remarks, PERSON_CODE AS personCode - FROM sys_person + FROM person_ext_view WHERE ID NOT IN (SELECT PERSON_ID FROM acs_permission WHERE DOOR_CODE = #{doorCode}) AND PERSON_TYPE = #{personType} AND DELFLAG = '0' diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/RecognitionRecordsMapper.xml b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/RecognitionRecordsMapper.xml index 42ce3b1..7a6573d 100644 --- a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/RecognitionRecordsMapper.xml +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/RecognitionRecordsMapper.xml @@ -31,7 +31,7 @@ FROM `recognition_records` re LEFT JOIN acs_door door ON door.DOOR_CODE = re.DOOR_CODE - LEFT JOIN sys_person p ON p.ID = re.PERSON_ID + LEFT JOIN person_ext_view p ON p.ID = re.PERSON_ID WHERE p.PERSON_TYPE = 1 AND ( p.NAME LIKE CONCAT('%',#{keyword},'%') @@ -62,13 +62,14 @@ re.INOUT_TYPE AS inoutType, p.NAME AS personName, p.PERSON_CODE AS personCode, + p.CERTIFICATION_UNIT AS personDeptName, p.ID_CARD_NO AS idCard, p.REMARKS AS remarks, re.DATETIME AS dateTime FROM `recognition_records` re LEFT JOIN acs_door door ON door.DOOR_CODE = re.DOOR_CODE - LEFT JOIN sys_person p ON p.ID = re.PERSON_ID + LEFT JOIN person_ext_view p ON p.ID = re.PERSON_ID WHERE p.PERSON_TYPE = 0 AND ( p.NAME LIKE CONCAT('%',#{keyword},'%') @@ -95,7 +96,7 @@ FROM `recognition_records` re LEFT JOIN acs_door door ON door.DOOR_CODE = re.DOOR_CODE - LEFT JOIN sys_person p ON p.ID = re.PERSON_ID + LEFT JOIN person_ext_view p ON p.ID = re.PERSON_ID WHERE p.PERSON_TYPE = 1 @@ -123,7 +124,7 @@ FROM `recognition_records` re LEFT JOIN acs_door door ON door.DOOR_CODE = re.DOOR_CODE - LEFT JOIN sys_person p ON p.ID = re.PERSON_ID + LEFT JOIN person_ext_view p ON p.ID = re.PERSON_ID WHERE p.PERSON_TYPE = 1 AND re.INOUT_TYPE = #{inoutType} diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/enums/ExportEnum.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/enums/ExportEnum.java new file mode 100644 index 0000000..4ae6420 --- /dev/null +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/enums/ExportEnum.java @@ -0,0 +1,47 @@ +package com.casic.missiles.modular.system.enums; + +import com.casic.missiles.core.enums.ExportExcelEnum; +import com.casic.missiles.core.util.SpringContextHolder; +import com.casic.missiles.modular.system.config.ExportProperties; + +public enum ExportEnum implements ExportExcelEnum { + + STAFF_RECORDS_EXPORT("staffRecordsTemp.xlsx","staffRecordsTemp.xlsx","员工进出记录"), + VISITOR_RECORDS_EXPORT("visitorRecordsTemp.xlsx","visitorRecordsTemp.xlsx","访客进出记录"), + STAFF_PERMISSION_EXPORT("staffPermTemp.xlsx","staffPermTemp.xlsx","员工授权列表"), + VISITOR_PERMISSION_EXPORT("visitorPermTemp.xlsx","visitorPermTemp.xlsx","访客授权列表"); + + ExportEnum(String fileTempPath, String fileName, String description) { + this.fileTempPath = SpringContextHolder.getBean(ExportProperties.class).getExportPath().concat(fileTempPath); + this.fileName = fileName; + this.description = description; + } + + /** + * 导出模板相对路径 + */ + private String fileTempPath; + /** + * 下载文件名 + */ + private String fileName; + /** + * 描述信息 + */ + private String description; + + @Override + public String getFileTempPath() { + return fileTempPath; + } + + @Override + public String getFileName() { + return fileName; + } + + @Override + public String getDescription() { + return description; + } +} diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/RecognitionRecordsServiceImpl.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/RecognitionRecordsServiceImpl.java index 42f87cf..73b88ab 100644 --- a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/RecognitionRecordsServiceImpl.java +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/RecognitionRecordsServiceImpl.java @@ -54,7 +54,8 @@ @Override public List> selectVisitorDataScopePage(DataScope dataScope, Page page, String keyword, String doorCode, String devCode, String beginTime, String endTime) { - return this.baseMapper.selectVisitorDataScopePage(dataScope, page, keyword, doorCode, devCode, beginTime, endTime); + List> list = this.baseMapper.selectVisitorDataScopePage(dataScope, page, keyword, doorCode, devCode, beginTime, endTime); + return list; } @Override diff --git a/casic-web/pom.xml b/casic-web/pom.xml index f4d3527..718d9db 100644 --- a/casic-web/pom.xml +++ b/casic-web/pom.xml @@ -155,11 +155,11 @@ compile --> - - - - - + + org.codehaus.groovy + groovy-all + true + @@ -169,16 +169,19 @@ org.apache.maven.plugins maven-compiler-plugin + org.apache.maven.plugins maven-jar-plugin + /config/** **/MockController.class + diff --git a/casic-web/src/main/resources/config/application-dev.yml b/casic-web/src/main/resources/config/application-dev.yml index 74a8c85..955fa45 100644 --- a/casic-web/src/main/resources/config/application-dev.yml +++ b/casic-web/src/main/resources/config/application-dev.yml @@ -4,6 +4,7 @@ spring: datasource: url: jdbc:mysql://192.168.0.212:3306/casic_iris?autoReconnect=true&useUnicode=true&characterEncoding=utf8&useSSL=false&allowMultiQueries=true&zeroDateTimeBehavior=convertToNull + url: jdbc:mysql://119.254.103.80:3000/casic_iris?autoReconnect=true&useUnicode=true&characterEncoding=utf8&useSSL=false&allowMultiQueries=true&zeroDateTimeBehavior=convertToNull username: root password: root initial-size: 2 @@ -24,3 +25,5 @@ file: missiles.log iris: socket-port: 8000 + config: + export-path: D:\java\boot\casic-web-1.0.0-SNAPSHOT\export\ diff --git a/casic-web/src/main/resources/config/application-test.yml b/casic-web/src/main/resources/config/application-test.yml index 39e13f0..34d2de1 100644 --- a/casic-web/src/main/resources/config/application-test.yml +++ b/casic-web/src/main/resources/config/application-test.yml @@ -1,11 +1,11 @@ server: - port: 8094 + port: 20002 ################### spring配置 ################### spring: datasource: - url: jdbc:mysql://192.168.8.201:3306/casic_iris?autoReconnect=true&useUnicode=true&characterEncoding=utf8&useSSL=false&allowMultiQueries=true&zeroDateTimeBehavior=convertToNull + url: jdbc:mysql://119.254.103.80:3306/casic_iris?autoReconnect=true&useUnicode=true&characterEncoding=utf8&useSSL=false&allowMultiQueries=true&zeroDateTimeBehavior=convertToNull username: root - password: Casic203 + password: root initial-size: 2 min-idle: 1 #flowable数据源和多数据源配置 diff --git a/casic-web/src/main/resources/config/temp/staffPermTemp.xlsx b/casic-web/src/main/resources/config/temp/staffPermTemp.xlsx new file mode 100644 index 0000000..a5b1777 --- /dev/null +++ b/casic-web/src/main/resources/config/temp/staffPermTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/temp/staffRecordsTemp.xlsx b/casic-web/src/main/resources/config/temp/staffRecordsTemp.xlsx new file mode 100644 index 0000000..e86e036 --- /dev/null +++ b/casic-web/src/main/resources/config/temp/staffRecordsTemp.xlsx Binary files differ diff --git a/casic-iris-acs/pom.xml b/casic-iris-acs/pom.xml index 3bc35aa..c13d0cf 100644 --- a/casic-iris-acs/pom.xml +++ b/casic-iris-acs/pom.xml @@ -27,6 +27,16 @@ casic-admin-support ${casic.version} + + com.casic + casic-export-support + 1.0.0-SNAPSHOT + + + com.casic + casic-expands-office + 1.0.0-SNAPSHOT + @@ -46,7 +56,6 @@ - diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/config/ExportProperties.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/config/ExportProperties.java new file mode 100644 index 0000000..edb8f92 --- /dev/null +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/config/ExportProperties.java @@ -0,0 +1,12 @@ +package com.casic.missiles.modular.system.config; + +import lombok.Data; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.stereotype.Component; + +@Component +@ConfigurationProperties(prefix = "iris.config") +@Data +public class ExportProperties { + private String exportPath; +} diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/AcsPermissionController.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/AcsPermissionController.java index 61a158f..227fa57 100644 --- a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/AcsPermissionController.java +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/AcsPermissionController.java @@ -1,15 +1,22 @@ package com.casic.missiles.modular.system.controller; import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.base.response.ResponseData; import com.casic.missiles.core.common.service.ICommonPermissionService; import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.modular.system.enums.ExportEnum; import com.casic.missiles.modular.system.warpper.AcsPermissionWarpper; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.dao.DuplicateKeyException; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.*; import org.springframework.beans.factory.annotation.Autowired; import com.baomidou.mybatisplus.plugins.Page; import com.baomidou.mybatisplus.mapper.EntityWrapper; + +import java.io.IOException; import java.util.List; import java.util.Map; @@ -17,6 +24,8 @@ import com.casic.missiles.modular.system.model.AcsPermission; import com.casic.missiles.modular.system.service.IAcsPermissionService; +import javax.servlet.http.HttpServletResponse; + /** * 控制器 * @@ -25,8 +34,8 @@ */ @Controller @RequestMapping("/acsPermission") -public class AcsPermissionController extends BaseController { - +public class AcsPermissionController extends ExportController { + private static final Logger logger = LoggerFactory.getLogger(AcsPermissionController.class); @Autowired private IAcsPermissionService acsPermissionService; @@ -60,6 +69,21 @@ } /** + * 导出员工授权列表 + */ + @RequestMapping(value = "/exportStaffPerm") + @ResponseBody + public void exportStaffPerm(HttpServletResponse response, String doorCode, String keyword, Long deptId) throws IOException { + Page> page = new PageFactory>().defaultPage(); + page.setCurrent(1); + page.setSearchCount(false); + page.setSize(Integer.MAX_VALUE); + List> list = acsPermissionService.selectStaffList(page,doorCode,keyword,deptId); + new AcsPermissionWarpper(list).warp(); + super.exportExcel(ExportEnum.STAFF_PERMISSION_EXPORT, list, response); + } + + /** * 访客授权列表 */ @RequestMapping(value = "/listVisitorPerm") @@ -73,6 +97,21 @@ } /** + * 导出访客授权列表 + */ + @RequestMapping(value = "/exportVisitorPerm") + @ResponseBody + public void listVisitorPerm(HttpServletResponse response, String doorCode,String keyword,String beginTime,String endTime) throws IOException{ + Page> page = new PageFactory>().defaultPage(); + page.setCurrent(1); + page.setSearchCount(false); + page.setSize(Integer.MAX_VALUE); + List> list = acsPermissionService.selectVisitorList(page,doorCode,keyword,beginTime,endTime); + new AcsPermissionWarpper(list).warp(); + super.exportExcel(ExportEnum.VISITOR_PERMISSION_EXPORT, list, response); + } + + /** * 新增授权 * @param doorCode 门禁编号 * @param personList 人员ID列表 @@ -84,7 +123,15 @@ public Object add(@RequestParam("doorCode")String doorCode, @RequestParam("personList")List personList, @RequestParam("strategyId")Integer strategyId){ - acsPermissionService.addPermission(doorCode, personList, strategyId); + try{ + acsPermissionService.addPermission(doorCode, personList, strategyId); + }catch (Exception e){ + if (e instanceof DuplicateKeyException) { + return ResponseData.error("重复授权"); + } + logger.error("添加授权失败", e); + return ResponseData.error("添加授权失败"); + } return ResponseData.success(); } diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/RecognitionRecordsController.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/RecognitionRecordsController.java index afdee3f..d7ab253 100644 --- a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/RecognitionRecordsController.java +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/RecognitionRecordsController.java @@ -1,11 +1,17 @@ package com.casic.missiles.modular.system.controller; import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.base.response.ResponseData; import com.casic.missiles.core.common.service.ICommonPermissionService; import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.core.util.ToolUtil; +import com.casic.missiles.modular.system.enums.ExportEnum; import com.casic.missiles.modular.system.warpper.DeviceWarpper; import com.casic.missiles.modular.system.warpper.RecognitionRecordsWarpper; +import org.apache.commons.lang.StringUtils; +import org.hswebframework.expands.office.excel.ExcelIO; +import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; @@ -13,6 +19,10 @@ import org.springframework.beans.factory.annotation.Autowired; import com.baomidou.mybatisplus.plugins.Page; import com.baomidou.mybatisplus.mapper.EntityWrapper; + +import java.io.FileInputStream; +import java.io.IOException; +import java.util.HashMap; import java.util.List; import java.util.Map; @@ -21,6 +31,9 @@ import com.casic.missiles.modular.system.model.RecognitionRecords; import com.casic.missiles.modular.system.service.IRecognitionRecordsService; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + /** * 控制器 * @@ -29,7 +42,7 @@ */ @Controller @RequestMapping("/records") -public class RecognitionRecordsController extends BaseController { +public class RecognitionRecordsController extends ExportController { @Autowired private IRecognitionRecordsService recordsService; @@ -51,6 +64,22 @@ } /** + * 导出员工记录 + */ + @RequestMapping(value = "/exportStaff") + @ResponseBody + public void exportStaff(HttpServletResponse response,String keyword,Long personDeptId,String doorCode,String devCode,String beginTime,String endTime) throws IOException { + Page> page = new PageFactory>().defaultPage(); + page.setCurrent(1); + page.setSearchCount(false); + page.setSize(Integer.MAX_VALUE); + DataScope dataScope = permissionService.getCurrUserDataScope(); + List> list = recordsService.selectStaffDataScopePage(dataScope,page,keyword,personDeptId,doorCode,devCode,beginTime,endTime); + new RecognitionRecordsWarpper(list).warp(); + super.exportExcel(ExportEnum.STAFF_RECORDS_EXPORT, list, response); + } + + /** * 访客数据查询 */ @RequestMapping(value = "/listVisitor") @@ -65,6 +94,22 @@ } /** + * 导出访客记录 + */ + @RequestMapping(value = "/exportVisitor") + @ResponseBody + public void exportVisitor(HttpServletResponse response,String keyword,String doorCode,String devCode,String beginTime,String endTime) throws IOException{ + Page> page = new PageFactory>().defaultPage(); + page.setCurrent(1); + page.setSearchCount(false); + page.setSize(Integer.MAX_VALUE); + DataScope dataScope = permissionService.getCurrUserDataScope(); + List> list = recordsService.selectVisitorDataScopePage(dataScope,page,keyword,doorCode,devCode,beginTime,endTime); + new RecognitionRecordsWarpper(list).warp(); + super.exportExcel(ExportEnum.VISITOR_RECORDS_EXPORT, list, response); + } + + /** * 统计各部门进出记录 */ @RequestMapping(value = "/statisticByDept") diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/AcsPermissionMapper.xml b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/AcsPermissionMapper.xml index 57db741..18e1925 100644 --- a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/AcsPermissionMapper.xml +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/AcsPermissionMapper.xml @@ -29,7 +29,7 @@ FROM acs_door door LEFT JOIN acs_permission per ON per.DOOR_CODE = door.DOOR_CODE - LEFT JOIN sys_person p ON per.PERSON_ID = p.ID + LEFT JOIN person_ext_view p ON per.PERSON_ID = p.ID WHERE p.DELFLAG = '0' OR p.DELFLAG IS NULL GROUP BY door.DOOR_CODE @@ -49,7 +49,7 @@ per.ID AS permissionId FROM acs_permission per LEFT JOIN acs_door door ON door.DOOR_CODE = per.DOOR_CODE - LEFT JOIN sys_person p ON per.PERSON_ID = p.ID + LEFT JOIN person_ext_view p ON per.PERSON_ID = p.ID LEFT JOIN acs_strategy stra ON per.STRATEGY_ID = stra.ID WHERE per.DOOR_CODE = #{doorCode} AND p.PERSON_TYPE = '1' @@ -76,13 +76,13 @@ per.ID AS permissionId FROM acs_permission per LEFT JOIN acs_door door ON door.DOOR_CODE = per.DOOR_CODE - LEFT JOIN sys_person p ON per.PERSON_ID = p.ID + LEFT JOIN person_ext_view p ON per.PERSON_ID = p.ID LEFT JOIN acs_strategy stra ON per.STRATEGY_ID = stra.ID WHERE per.DOOR_CODE = #{doorCode} AND p.PERSON_TYPE = '0' AND p.DELFLAG = '0' - AND ( (p.NAME LIKE CONNAT('%',#{keyword},'%')) OR (p.ID_CARD_NO LIKE CONNAT('%',#{keyword},'%')) ) + AND ( (p.NAME LIKE CONCAT('%',#{keyword},'%')) OR (p.ID_CARD_NO LIKE CONCAT('%',#{keyword},'%')) ) AND per.CREATE_TIME = ]]> #{beginTime} @@ -100,7 +100,7 @@ ID_CARD_NO as idCard, REMARKS as remarks, PERSON_CODE AS personCode - FROM sys_person + FROM person_ext_view WHERE ID NOT IN (SELECT PERSON_ID FROM acs_permission WHERE DOOR_CODE = #{doorCode}) AND PERSON_TYPE = #{personType} AND DELFLAG = '0' diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/RecognitionRecordsMapper.xml b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/RecognitionRecordsMapper.xml index 42ce3b1..7a6573d 100644 --- a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/RecognitionRecordsMapper.xml +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/RecognitionRecordsMapper.xml @@ -31,7 +31,7 @@ FROM `recognition_records` re LEFT JOIN acs_door door ON door.DOOR_CODE = re.DOOR_CODE - LEFT JOIN sys_person p ON p.ID = re.PERSON_ID + LEFT JOIN person_ext_view p ON p.ID = re.PERSON_ID WHERE p.PERSON_TYPE = 1 AND ( p.NAME LIKE CONCAT('%',#{keyword},'%') @@ -62,13 +62,14 @@ re.INOUT_TYPE AS inoutType, p.NAME AS personName, p.PERSON_CODE AS personCode, + p.CERTIFICATION_UNIT AS personDeptName, p.ID_CARD_NO AS idCard, p.REMARKS AS remarks, re.DATETIME AS dateTime FROM `recognition_records` re LEFT JOIN acs_door door ON door.DOOR_CODE = re.DOOR_CODE - LEFT JOIN sys_person p ON p.ID = re.PERSON_ID + LEFT JOIN person_ext_view p ON p.ID = re.PERSON_ID WHERE p.PERSON_TYPE = 0 AND ( p.NAME LIKE CONCAT('%',#{keyword},'%') @@ -95,7 +96,7 @@ FROM `recognition_records` re LEFT JOIN acs_door door ON door.DOOR_CODE = re.DOOR_CODE - LEFT JOIN sys_person p ON p.ID = re.PERSON_ID + LEFT JOIN person_ext_view p ON p.ID = re.PERSON_ID WHERE p.PERSON_TYPE = 1 @@ -123,7 +124,7 @@ FROM `recognition_records` re LEFT JOIN acs_door door ON door.DOOR_CODE = re.DOOR_CODE - LEFT JOIN sys_person p ON p.ID = re.PERSON_ID + LEFT JOIN person_ext_view p ON p.ID = re.PERSON_ID WHERE p.PERSON_TYPE = 1 AND re.INOUT_TYPE = #{inoutType} diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/enums/ExportEnum.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/enums/ExportEnum.java new file mode 100644 index 0000000..4ae6420 --- /dev/null +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/enums/ExportEnum.java @@ -0,0 +1,47 @@ +package com.casic.missiles.modular.system.enums; + +import com.casic.missiles.core.enums.ExportExcelEnum; +import com.casic.missiles.core.util.SpringContextHolder; +import com.casic.missiles.modular.system.config.ExportProperties; + +public enum ExportEnum implements ExportExcelEnum { + + STAFF_RECORDS_EXPORT("staffRecordsTemp.xlsx","staffRecordsTemp.xlsx","员工进出记录"), + VISITOR_RECORDS_EXPORT("visitorRecordsTemp.xlsx","visitorRecordsTemp.xlsx","访客进出记录"), + STAFF_PERMISSION_EXPORT("staffPermTemp.xlsx","staffPermTemp.xlsx","员工授权列表"), + VISITOR_PERMISSION_EXPORT("visitorPermTemp.xlsx","visitorPermTemp.xlsx","访客授权列表"); + + ExportEnum(String fileTempPath, String fileName, String description) { + this.fileTempPath = SpringContextHolder.getBean(ExportProperties.class).getExportPath().concat(fileTempPath); + this.fileName = fileName; + this.description = description; + } + + /** + * 导出模板相对路径 + */ + private String fileTempPath; + /** + * 下载文件名 + */ + private String fileName; + /** + * 描述信息 + */ + private String description; + + @Override + public String getFileTempPath() { + return fileTempPath; + } + + @Override + public String getFileName() { + return fileName; + } + + @Override + public String getDescription() { + return description; + } +} diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/RecognitionRecordsServiceImpl.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/RecognitionRecordsServiceImpl.java index 42f87cf..73b88ab 100644 --- a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/RecognitionRecordsServiceImpl.java +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/RecognitionRecordsServiceImpl.java @@ -54,7 +54,8 @@ @Override public List> selectVisitorDataScopePage(DataScope dataScope, Page page, String keyword, String doorCode, String devCode, String beginTime, String endTime) { - return this.baseMapper.selectVisitorDataScopePage(dataScope, page, keyword, doorCode, devCode, beginTime, endTime); + List> list = this.baseMapper.selectVisitorDataScopePage(dataScope, page, keyword, doorCode, devCode, beginTime, endTime); + return list; } @Override diff --git a/casic-web/pom.xml b/casic-web/pom.xml index f4d3527..718d9db 100644 --- a/casic-web/pom.xml +++ b/casic-web/pom.xml @@ -155,11 +155,11 @@ compile --> - - - - - + + org.codehaus.groovy + groovy-all + true + @@ -169,16 +169,19 @@ org.apache.maven.plugins maven-compiler-plugin + org.apache.maven.plugins maven-jar-plugin + /config/** **/MockController.class + diff --git a/casic-web/src/main/resources/config/application-dev.yml b/casic-web/src/main/resources/config/application-dev.yml index 74a8c85..955fa45 100644 --- a/casic-web/src/main/resources/config/application-dev.yml +++ b/casic-web/src/main/resources/config/application-dev.yml @@ -4,6 +4,7 @@ spring: datasource: url: jdbc:mysql://192.168.0.212:3306/casic_iris?autoReconnect=true&useUnicode=true&characterEncoding=utf8&useSSL=false&allowMultiQueries=true&zeroDateTimeBehavior=convertToNull + url: jdbc:mysql://119.254.103.80:3000/casic_iris?autoReconnect=true&useUnicode=true&characterEncoding=utf8&useSSL=false&allowMultiQueries=true&zeroDateTimeBehavior=convertToNull username: root password: root initial-size: 2 @@ -24,3 +25,5 @@ file: missiles.log iris: socket-port: 8000 + config: + export-path: D:\java\boot\casic-web-1.0.0-SNAPSHOT\export\ diff --git a/casic-web/src/main/resources/config/application-test.yml b/casic-web/src/main/resources/config/application-test.yml index 39e13f0..34d2de1 100644 --- a/casic-web/src/main/resources/config/application-test.yml +++ b/casic-web/src/main/resources/config/application-test.yml @@ -1,11 +1,11 @@ server: - port: 8094 + port: 20002 ################### spring配置 ################### spring: datasource: - url: jdbc:mysql://192.168.8.201:3306/casic_iris?autoReconnect=true&useUnicode=true&characterEncoding=utf8&useSSL=false&allowMultiQueries=true&zeroDateTimeBehavior=convertToNull + url: jdbc:mysql://119.254.103.80:3306/casic_iris?autoReconnect=true&useUnicode=true&characterEncoding=utf8&useSSL=false&allowMultiQueries=true&zeroDateTimeBehavior=convertToNull username: root - password: Casic203 + password: root initial-size: 2 min-idle: 1 #flowable数据源和多数据源配置 diff --git a/casic-web/src/main/resources/config/temp/staffPermTemp.xlsx b/casic-web/src/main/resources/config/temp/staffPermTemp.xlsx new file mode 100644 index 0000000..a5b1777 --- /dev/null +++ b/casic-web/src/main/resources/config/temp/staffPermTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/temp/staffRecordsTemp.xlsx b/casic-web/src/main/resources/config/temp/staffRecordsTemp.xlsx new file mode 100644 index 0000000..e86e036 --- /dev/null +++ b/casic-web/src/main/resources/config/temp/staffRecordsTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/temp/visitorPermTemp.xlsx b/casic-web/src/main/resources/config/temp/visitorPermTemp.xlsx new file mode 100644 index 0000000..eebeaae --- /dev/null +++ b/casic-web/src/main/resources/config/temp/visitorPermTemp.xlsx Binary files differ diff --git a/casic-iris-acs/pom.xml b/casic-iris-acs/pom.xml index 3bc35aa..c13d0cf 100644 --- a/casic-iris-acs/pom.xml +++ b/casic-iris-acs/pom.xml @@ -27,6 +27,16 @@ casic-admin-support ${casic.version} + + com.casic + casic-export-support + 1.0.0-SNAPSHOT + + + com.casic + casic-expands-office + 1.0.0-SNAPSHOT + @@ -46,7 +56,6 @@ - diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/config/ExportProperties.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/config/ExportProperties.java new file mode 100644 index 0000000..edb8f92 --- /dev/null +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/config/ExportProperties.java @@ -0,0 +1,12 @@ +package com.casic.missiles.modular.system.config; + +import lombok.Data; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.stereotype.Component; + +@Component +@ConfigurationProperties(prefix = "iris.config") +@Data +public class ExportProperties { + private String exportPath; +} diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/AcsPermissionController.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/AcsPermissionController.java index 61a158f..227fa57 100644 --- a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/AcsPermissionController.java +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/AcsPermissionController.java @@ -1,15 +1,22 @@ package com.casic.missiles.modular.system.controller; import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.base.response.ResponseData; import com.casic.missiles.core.common.service.ICommonPermissionService; import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.modular.system.enums.ExportEnum; import com.casic.missiles.modular.system.warpper.AcsPermissionWarpper; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.dao.DuplicateKeyException; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.*; import org.springframework.beans.factory.annotation.Autowired; import com.baomidou.mybatisplus.plugins.Page; import com.baomidou.mybatisplus.mapper.EntityWrapper; + +import java.io.IOException; import java.util.List; import java.util.Map; @@ -17,6 +24,8 @@ import com.casic.missiles.modular.system.model.AcsPermission; import com.casic.missiles.modular.system.service.IAcsPermissionService; +import javax.servlet.http.HttpServletResponse; + /** * 控制器 * @@ -25,8 +34,8 @@ */ @Controller @RequestMapping("/acsPermission") -public class AcsPermissionController extends BaseController { - +public class AcsPermissionController extends ExportController { + private static final Logger logger = LoggerFactory.getLogger(AcsPermissionController.class); @Autowired private IAcsPermissionService acsPermissionService; @@ -60,6 +69,21 @@ } /** + * 导出员工授权列表 + */ + @RequestMapping(value = "/exportStaffPerm") + @ResponseBody + public void exportStaffPerm(HttpServletResponse response, String doorCode, String keyword, Long deptId) throws IOException { + Page> page = new PageFactory>().defaultPage(); + page.setCurrent(1); + page.setSearchCount(false); + page.setSize(Integer.MAX_VALUE); + List> list = acsPermissionService.selectStaffList(page,doorCode,keyword,deptId); + new AcsPermissionWarpper(list).warp(); + super.exportExcel(ExportEnum.STAFF_PERMISSION_EXPORT, list, response); + } + + /** * 访客授权列表 */ @RequestMapping(value = "/listVisitorPerm") @@ -73,6 +97,21 @@ } /** + * 导出访客授权列表 + */ + @RequestMapping(value = "/exportVisitorPerm") + @ResponseBody + public void listVisitorPerm(HttpServletResponse response, String doorCode,String keyword,String beginTime,String endTime) throws IOException{ + Page> page = new PageFactory>().defaultPage(); + page.setCurrent(1); + page.setSearchCount(false); + page.setSize(Integer.MAX_VALUE); + List> list = acsPermissionService.selectVisitorList(page,doorCode,keyword,beginTime,endTime); + new AcsPermissionWarpper(list).warp(); + super.exportExcel(ExportEnum.VISITOR_PERMISSION_EXPORT, list, response); + } + + /** * 新增授权 * @param doorCode 门禁编号 * @param personList 人员ID列表 @@ -84,7 +123,15 @@ public Object add(@RequestParam("doorCode")String doorCode, @RequestParam("personList")List personList, @RequestParam("strategyId")Integer strategyId){ - acsPermissionService.addPermission(doorCode, personList, strategyId); + try{ + acsPermissionService.addPermission(doorCode, personList, strategyId); + }catch (Exception e){ + if (e instanceof DuplicateKeyException) { + return ResponseData.error("重复授权"); + } + logger.error("添加授权失败", e); + return ResponseData.error("添加授权失败"); + } return ResponseData.success(); } diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/RecognitionRecordsController.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/RecognitionRecordsController.java index afdee3f..d7ab253 100644 --- a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/RecognitionRecordsController.java +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/controller/RecognitionRecordsController.java @@ -1,11 +1,17 @@ package com.casic.missiles.modular.system.controller; import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.base.response.ResponseData; import com.casic.missiles.core.common.service.ICommonPermissionService; import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.core.util.ToolUtil; +import com.casic.missiles.modular.system.enums.ExportEnum; import com.casic.missiles.modular.system.warpper.DeviceWarpper; import com.casic.missiles.modular.system.warpper.RecognitionRecordsWarpper; +import org.apache.commons.lang.StringUtils; +import org.hswebframework.expands.office.excel.ExcelIO; +import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; @@ -13,6 +19,10 @@ import org.springframework.beans.factory.annotation.Autowired; import com.baomidou.mybatisplus.plugins.Page; import com.baomidou.mybatisplus.mapper.EntityWrapper; + +import java.io.FileInputStream; +import java.io.IOException; +import java.util.HashMap; import java.util.List; import java.util.Map; @@ -21,6 +31,9 @@ import com.casic.missiles.modular.system.model.RecognitionRecords; import com.casic.missiles.modular.system.service.IRecognitionRecordsService; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + /** * 控制器 * @@ -29,7 +42,7 @@ */ @Controller @RequestMapping("/records") -public class RecognitionRecordsController extends BaseController { +public class RecognitionRecordsController extends ExportController { @Autowired private IRecognitionRecordsService recordsService; @@ -51,6 +64,22 @@ } /** + * 导出员工记录 + */ + @RequestMapping(value = "/exportStaff") + @ResponseBody + public void exportStaff(HttpServletResponse response,String keyword,Long personDeptId,String doorCode,String devCode,String beginTime,String endTime) throws IOException { + Page> page = new PageFactory>().defaultPage(); + page.setCurrent(1); + page.setSearchCount(false); + page.setSize(Integer.MAX_VALUE); + DataScope dataScope = permissionService.getCurrUserDataScope(); + List> list = recordsService.selectStaffDataScopePage(dataScope,page,keyword,personDeptId,doorCode,devCode,beginTime,endTime); + new RecognitionRecordsWarpper(list).warp(); + super.exportExcel(ExportEnum.STAFF_RECORDS_EXPORT, list, response); + } + + /** * 访客数据查询 */ @RequestMapping(value = "/listVisitor") @@ -65,6 +94,22 @@ } /** + * 导出访客记录 + */ + @RequestMapping(value = "/exportVisitor") + @ResponseBody + public void exportVisitor(HttpServletResponse response,String keyword,String doorCode,String devCode,String beginTime,String endTime) throws IOException{ + Page> page = new PageFactory>().defaultPage(); + page.setCurrent(1); + page.setSearchCount(false); + page.setSize(Integer.MAX_VALUE); + DataScope dataScope = permissionService.getCurrUserDataScope(); + List> list = recordsService.selectVisitorDataScopePage(dataScope,page,keyword,doorCode,devCode,beginTime,endTime); + new RecognitionRecordsWarpper(list).warp(); + super.exportExcel(ExportEnum.VISITOR_RECORDS_EXPORT, list, response); + } + + /** * 统计各部门进出记录 */ @RequestMapping(value = "/statisticByDept") diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/AcsPermissionMapper.xml b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/AcsPermissionMapper.xml index 57db741..18e1925 100644 --- a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/AcsPermissionMapper.xml +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/AcsPermissionMapper.xml @@ -29,7 +29,7 @@ FROM acs_door door LEFT JOIN acs_permission per ON per.DOOR_CODE = door.DOOR_CODE - LEFT JOIN sys_person p ON per.PERSON_ID = p.ID + LEFT JOIN person_ext_view p ON per.PERSON_ID = p.ID WHERE p.DELFLAG = '0' OR p.DELFLAG IS NULL GROUP BY door.DOOR_CODE @@ -49,7 +49,7 @@ per.ID AS permissionId FROM acs_permission per LEFT JOIN acs_door door ON door.DOOR_CODE = per.DOOR_CODE - LEFT JOIN sys_person p ON per.PERSON_ID = p.ID + LEFT JOIN person_ext_view p ON per.PERSON_ID = p.ID LEFT JOIN acs_strategy stra ON per.STRATEGY_ID = stra.ID WHERE per.DOOR_CODE = #{doorCode} AND p.PERSON_TYPE = '1' @@ -76,13 +76,13 @@ per.ID AS permissionId FROM acs_permission per LEFT JOIN acs_door door ON door.DOOR_CODE = per.DOOR_CODE - LEFT JOIN sys_person p ON per.PERSON_ID = p.ID + LEFT JOIN person_ext_view p ON per.PERSON_ID = p.ID LEFT JOIN acs_strategy stra ON per.STRATEGY_ID = stra.ID WHERE per.DOOR_CODE = #{doorCode} AND p.PERSON_TYPE = '0' AND p.DELFLAG = '0' - AND ( (p.NAME LIKE CONNAT('%',#{keyword},'%')) OR (p.ID_CARD_NO LIKE CONNAT('%',#{keyword},'%')) ) + AND ( (p.NAME LIKE CONCAT('%',#{keyword},'%')) OR (p.ID_CARD_NO LIKE CONCAT('%',#{keyword},'%')) ) AND per.CREATE_TIME = ]]> #{beginTime} @@ -100,7 +100,7 @@ ID_CARD_NO as idCard, REMARKS as remarks, PERSON_CODE AS personCode - FROM sys_person + FROM person_ext_view WHERE ID NOT IN (SELECT PERSON_ID FROM acs_permission WHERE DOOR_CODE = #{doorCode}) AND PERSON_TYPE = #{personType} AND DELFLAG = '0' diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/RecognitionRecordsMapper.xml b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/RecognitionRecordsMapper.xml index 42ce3b1..7a6573d 100644 --- a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/RecognitionRecordsMapper.xml +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/dao/mapping/RecognitionRecordsMapper.xml @@ -31,7 +31,7 @@ FROM `recognition_records` re LEFT JOIN acs_door door ON door.DOOR_CODE = re.DOOR_CODE - LEFT JOIN sys_person p ON p.ID = re.PERSON_ID + LEFT JOIN person_ext_view p ON p.ID = re.PERSON_ID WHERE p.PERSON_TYPE = 1 AND ( p.NAME LIKE CONCAT('%',#{keyword},'%') @@ -62,13 +62,14 @@ re.INOUT_TYPE AS inoutType, p.NAME AS personName, p.PERSON_CODE AS personCode, + p.CERTIFICATION_UNIT AS personDeptName, p.ID_CARD_NO AS idCard, p.REMARKS AS remarks, re.DATETIME AS dateTime FROM `recognition_records` re LEFT JOIN acs_door door ON door.DOOR_CODE = re.DOOR_CODE - LEFT JOIN sys_person p ON p.ID = re.PERSON_ID + LEFT JOIN person_ext_view p ON p.ID = re.PERSON_ID WHERE p.PERSON_TYPE = 0 AND ( p.NAME LIKE CONCAT('%',#{keyword},'%') @@ -95,7 +96,7 @@ FROM `recognition_records` re LEFT JOIN acs_door door ON door.DOOR_CODE = re.DOOR_CODE - LEFT JOIN sys_person p ON p.ID = re.PERSON_ID + LEFT JOIN person_ext_view p ON p.ID = re.PERSON_ID WHERE p.PERSON_TYPE = 1 @@ -123,7 +124,7 @@ FROM `recognition_records` re LEFT JOIN acs_door door ON door.DOOR_CODE = re.DOOR_CODE - LEFT JOIN sys_person p ON p.ID = re.PERSON_ID + LEFT JOIN person_ext_view p ON p.ID = re.PERSON_ID WHERE p.PERSON_TYPE = 1 AND re.INOUT_TYPE = #{inoutType} diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/enums/ExportEnum.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/enums/ExportEnum.java new file mode 100644 index 0000000..4ae6420 --- /dev/null +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/enums/ExportEnum.java @@ -0,0 +1,47 @@ +package com.casic.missiles.modular.system.enums; + +import com.casic.missiles.core.enums.ExportExcelEnum; +import com.casic.missiles.core.util.SpringContextHolder; +import com.casic.missiles.modular.system.config.ExportProperties; + +public enum ExportEnum implements ExportExcelEnum { + + STAFF_RECORDS_EXPORT("staffRecordsTemp.xlsx","staffRecordsTemp.xlsx","员工进出记录"), + VISITOR_RECORDS_EXPORT("visitorRecordsTemp.xlsx","visitorRecordsTemp.xlsx","访客进出记录"), + STAFF_PERMISSION_EXPORT("staffPermTemp.xlsx","staffPermTemp.xlsx","员工授权列表"), + VISITOR_PERMISSION_EXPORT("visitorPermTemp.xlsx","visitorPermTemp.xlsx","访客授权列表"); + + ExportEnum(String fileTempPath, String fileName, String description) { + this.fileTempPath = SpringContextHolder.getBean(ExportProperties.class).getExportPath().concat(fileTempPath); + this.fileName = fileName; + this.description = description; + } + + /** + * 导出模板相对路径 + */ + private String fileTempPath; + /** + * 下载文件名 + */ + private String fileName; + /** + * 描述信息 + */ + private String description; + + @Override + public String getFileTempPath() { + return fileTempPath; + } + + @Override + public String getFileName() { + return fileName; + } + + @Override + public String getDescription() { + return description; + } +} diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/RecognitionRecordsServiceImpl.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/RecognitionRecordsServiceImpl.java index 42f87cf..73b88ab 100644 --- a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/RecognitionRecordsServiceImpl.java +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/RecognitionRecordsServiceImpl.java @@ -54,7 +54,8 @@ @Override public List> selectVisitorDataScopePage(DataScope dataScope, Page page, String keyword, String doorCode, String devCode, String beginTime, String endTime) { - return this.baseMapper.selectVisitorDataScopePage(dataScope, page, keyword, doorCode, devCode, beginTime, endTime); + List> list = this.baseMapper.selectVisitorDataScopePage(dataScope, page, keyword, doorCode, devCode, beginTime, endTime); + return list; } @Override diff --git a/casic-web/pom.xml b/casic-web/pom.xml index f4d3527..718d9db 100644 --- a/casic-web/pom.xml +++ b/casic-web/pom.xml @@ -155,11 +155,11 @@ compile --> - - - - - + + org.codehaus.groovy + groovy-all + true + @@ -169,16 +169,19 @@ org.apache.maven.plugins maven-compiler-plugin + org.apache.maven.plugins maven-jar-plugin + /config/** **/MockController.class + diff --git a/casic-web/src/main/resources/config/application-dev.yml b/casic-web/src/main/resources/config/application-dev.yml index 74a8c85..955fa45 100644 --- a/casic-web/src/main/resources/config/application-dev.yml +++ b/casic-web/src/main/resources/config/application-dev.yml @@ -4,6 +4,7 @@ spring: datasource: url: jdbc:mysql://192.168.0.212:3306/casic_iris?autoReconnect=true&useUnicode=true&characterEncoding=utf8&useSSL=false&allowMultiQueries=true&zeroDateTimeBehavior=convertToNull + url: jdbc:mysql://119.254.103.80:3000/casic_iris?autoReconnect=true&useUnicode=true&characterEncoding=utf8&useSSL=false&allowMultiQueries=true&zeroDateTimeBehavior=convertToNull username: root password: root initial-size: 2 @@ -24,3 +25,5 @@ file: missiles.log iris: socket-port: 8000 + config: + export-path: D:\java\boot\casic-web-1.0.0-SNAPSHOT\export\ diff --git a/casic-web/src/main/resources/config/application-test.yml b/casic-web/src/main/resources/config/application-test.yml index 39e13f0..34d2de1 100644 --- a/casic-web/src/main/resources/config/application-test.yml +++ b/casic-web/src/main/resources/config/application-test.yml @@ -1,11 +1,11 @@ server: - port: 8094 + port: 20002 ################### spring配置 ################### spring: datasource: - url: jdbc:mysql://192.168.8.201:3306/casic_iris?autoReconnect=true&useUnicode=true&characterEncoding=utf8&useSSL=false&allowMultiQueries=true&zeroDateTimeBehavior=convertToNull + url: jdbc:mysql://119.254.103.80:3306/casic_iris?autoReconnect=true&useUnicode=true&characterEncoding=utf8&useSSL=false&allowMultiQueries=true&zeroDateTimeBehavior=convertToNull username: root - password: Casic203 + password: root initial-size: 2 min-idle: 1 #flowable数据源和多数据源配置 diff --git a/casic-web/src/main/resources/config/temp/staffPermTemp.xlsx b/casic-web/src/main/resources/config/temp/staffPermTemp.xlsx new file mode 100644 index 0000000..a5b1777 --- /dev/null +++ b/casic-web/src/main/resources/config/temp/staffPermTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/temp/staffRecordsTemp.xlsx b/casic-web/src/main/resources/config/temp/staffRecordsTemp.xlsx new file mode 100644 index 0000000..e86e036 --- /dev/null +++ b/casic-web/src/main/resources/config/temp/staffRecordsTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/temp/visitorPermTemp.xlsx b/casic-web/src/main/resources/config/temp/visitorPermTemp.xlsx new file mode 100644 index 0000000..eebeaae --- /dev/null +++ b/casic-web/src/main/resources/config/temp/visitorPermTemp.xlsx Binary files differ diff --git a/casic-web/src/main/resources/config/temp/visitorRecordsTemp.xlsx b/casic-web/src/main/resources/config/temp/visitorRecordsTemp.xlsx new file mode 100644 index 0000000..e040f51 --- /dev/null +++ b/casic-web/src/main/resources/config/temp/visitorRecordsTemp.xlsx Binary files differ