From 0b1bbe32b1c89c9d5d931a6af034984fc9b93127 Mon Sep 17 00:00:00 2001 From: wanggeng <450292408@qq.com> Date: Thu, 20 Jan 2022 11:20:36 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=8C=E5=96=84=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../api/count/DutyCountController.java | 91 ++++++ .../ReportSummary88Controller.java | 19 +- .../ReportSummary88AppController.java | 21 +- .../ReportSummary88ResourceController.java | 21 +- .../catalogue/CatalogueRouteController.java | 3 +- .../DefaultPageRouteController.java | 64 ++++ ...DistributionDepartmentRouteController.java | 4 +- .../route/list/ListRouteController.java | 4 +- .../ReportContent88RouteController.java | 9 +- .../ReportSummary88RouteController.java | 10 +- .../reportcontent88/IReportContent88Dao.java | 27 ++ .../reportsummary88/IReportSummary88Dao.java | 4 +- .../ReportDepartmentCountDTO.java | 46 +++ .../reportcontent88/ReportListCountDTO.java | 46 +++ .../dtos/reportsummary88/ListSelfDTO.java | 68 ++++ .../ReportSummary88UpdateExamineVO.java | 39 +++ .../properties/SystemRoleProperties.java | 35 +++ .../service/count/IDutyCountService.java | 66 ++++ .../count/impl/DutyCountServiceImpl.java | 144 +++++++++ .../IReportContent88Service.java | 24 +- .../impl/ReportContent88ServiceImpl.java | 17 + .../IReportSummary88Service.java | 49 ++- .../impl/ReportSummary88ServiceImpl.java | 82 +++-- src/main/resources/application-dev.yml | 8 +- .../report-content88-mapper.xml | 89 ++++++ .../report-summary88-mapper.xml | 32 +- .../templates/default-page/home-admin.html | 290 ++++++++++++++++++ .../templates/default-page/home-examine.html | 32 ++ .../templates/default-page/home-report.html | 32 ++ .../report-content88/list-department.html | 2 +- .../report-content88/list-self-history.html | 202 ++++++++++++ .../report-summary88/list-examine.html | 33 +- .../report-summary88/list-list-self.html | 46 ++- .../templates/report-summary88/save.html | 170 ---------- .../report-summary88/update-examine.html | 133 ++++++++ .../templates/report-summary88/update.html | 187 ----------- 36 files changed, 1652 insertions(+), 497 deletions(-) create mode 100644 src/main/java/cn/com/tenlion/systemduty/controller/api/count/DutyCountController.java create mode 100644 src/main/java/cn/com/tenlion/systemduty/controller/route/defaultpage/DefaultPageRouteController.java create mode 100644 src/main/java/cn/com/tenlion/systemduty/pojo/dtos/reportcontent88/ReportDepartmentCountDTO.java create mode 100644 src/main/java/cn/com/tenlion/systemduty/pojo/dtos/reportcontent88/ReportListCountDTO.java create mode 100644 src/main/java/cn/com/tenlion/systemduty/pojo/dtos/reportsummary88/ListSelfDTO.java create mode 100644 src/main/java/cn/com/tenlion/systemduty/pojo/vos/reportsummary88/ReportSummary88UpdateExamineVO.java create mode 100644 src/main/java/cn/com/tenlion/systemduty/properties/SystemRoleProperties.java create mode 100644 src/main/java/cn/com/tenlion/systemduty/service/count/IDutyCountService.java create mode 100644 src/main/java/cn/com/tenlion/systemduty/service/count/impl/DutyCountServiceImpl.java create mode 100644 src/main/resources/templates/default-page/home-admin.html create mode 100644 src/main/resources/templates/default-page/home-examine.html create mode 100644 src/main/resources/templates/default-page/home-report.html create mode 100644 src/main/resources/templates/report-content88/list-self-history.html delete mode 100644 src/main/resources/templates/report-summary88/save.html create mode 100644 src/main/resources/templates/report-summary88/update-examine.html delete mode 100644 src/main/resources/templates/report-summary88/update.html diff --git a/src/main/java/cn/com/tenlion/systemduty/controller/api/count/DutyCountController.java b/src/main/java/cn/com/tenlion/systemduty/controller/api/count/DutyCountController.java new file mode 100644 index 0000000..e423afc --- /dev/null +++ b/src/main/java/cn/com/tenlion/systemduty/controller/api/count/DutyCountController.java @@ -0,0 +1,91 @@ +package cn.com.tenlion.systemduty.controller.api.count; + +import cn.com.tenlion.systemduty.pojo.dtos.reportcontent88.ReportListCountDTO; +import cn.com.tenlion.systemduty.service.count.IDutyCountService; +import ink.wgink.common.base.DefaultBaseController; +import ink.wgink.interfaces.consts.ISystemConstant; +import ink.wgink.pojo.result.ErrorResult; +import ink.wgink.pojo.result.SuccessResultData; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import io.swagger.annotations.ApiResponse; +import io.swagger.annotations.ApiResponses; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.util.List; +import java.util.Map; + +/** + * @ClassName: DutyCountController + * @Description: 责任统计 + * @Author: wanggeng + * @Date: 2022/1/19 10:01 PM + * @Version: 1.0 + */ +@Api(tags = ISystemConstant.API_TAGS_SYSTEM_PREFIX + "责任统计") +@RestController +@RequestMapping(ISystemConstant.API_PREFIX + "/duty-count") +public class DutyCountController extends DefaultBaseController { + + @Autowired + private IDutyCountService dutyCountService; + + @ApiOperation(value = "总上报量", notes = "总上报量接口") + @ApiResponses({@ApiResponse(code = 400, message = "请求失败", response = ErrorResult.class)}) + @GetMapping("count-total-report") + public SuccessResultData countTotalReport() { + Integer total = dutyCountService.countTotalReport(); + return new SuccessResultData<>(total); + } + + @ApiOperation(value = "年度上报量", notes = "年度上报量接口") + @ApiResponses({@ApiResponse(code = 400, message = "请求失败", response = ErrorResult.class)}) + @GetMapping("count-year-report") + public SuccessResultData countYearReport() { + Integer total = dutyCountService.countYearReport(); + return new SuccessResultData<>(total); + } + + @ApiOperation(value = "本月上报量", notes = "年度上报量接口") + @ApiResponses({@ApiResponse(code = 400, message = "请求失败", response = ErrorResult.class)}) + @GetMapping("count-month-report") + public SuccessResultData countMonthReport() { + Integer total = dutyCountService.countMonthReport(); + return new SuccessResultData<>(total); + } + + @ApiOperation(value = "本周上报量", notes = "本周上报量接口") + @ApiResponses({@ApiResponse(code = 400, message = "请求失败", response = ErrorResult.class)}) + @GetMapping("count-week-report") + public SuccessResultData countWeekReport() { + Integer total = dutyCountService.countWeekReport(); + return new SuccessResultData<>(total); + } + + @ApiOperation(value = "指标上报TOP10", notes = "指标上报TOP10接口") + @ApiResponses({@ApiResponse(code = 400, message = "请求失败", response = ErrorResult.class)}) + @GetMapping("list-report-list-top10") + public List listReportListTop10() { + return dutyCountService.listReportListTop10(); + } + + @ApiOperation(value = "本周每日上报量", notes = "本周每日上报量接口") + @ApiResponses({@ApiResponse(code = 400, message = "请求失败", response = ErrorResult.class)}) + @GetMapping("week-day-report") + public SuccessResultData> weekDayReport() { + Map result = dutyCountService.weekDayReport(); + return new SuccessResultData<>(result); + } + + @ApiOperation(value = "部门 上报量/通过量 排名", notes = "部门 上报量/通过量 排名接口") + @ApiResponses({@ApiResponse(code = 400, message = "请求失败", response = ErrorResult.class)}) + @GetMapping("department-report-total-pass") + public SuccessResultData> departmentReportTotalPass() { + Map result = dutyCountService.departmentReportTotalPass(); + return new SuccessResultData<>(result); + } + +} diff --git a/src/main/java/cn/com/tenlion/systemduty/controller/api/reportsummary88/ReportSummary88Controller.java b/src/main/java/cn/com/tenlion/systemduty/controller/api/reportsummary88/ReportSummary88Controller.java index d8708ee..fefdf72 100644 --- a/src/main/java/cn/com/tenlion/systemduty/controller/api/reportsummary88/ReportSummary88Controller.java +++ b/src/main/java/cn/com/tenlion/systemduty/controller/api/reportsummary88/ReportSummary88Controller.java @@ -1,7 +1,8 @@ package cn.com.tenlion.systemduty.controller.api.reportsummary88; -import cn.com.tenlion.systemduty.pojo.dtos.list.ListDTO; +import cn.com.tenlion.systemduty.pojo.dtos.reportsummary88.ListSelfDTO; import cn.com.tenlion.systemduty.pojo.dtos.reportsummary88.ReportSummary88DTO; +import cn.com.tenlion.systemduty.pojo.vos.reportsummary88.ReportSummary88UpdateExamineVO; import cn.com.tenlion.systemduty.pojo.vos.reportsummary88.ReportSummary88VO; import cn.com.tenlion.systemduty.service.reportsummary88.IReportSummary88Service; import ink.wgink.annotation.CheckRequestBodyAnnotation; @@ -55,15 +56,15 @@ public class ReportSummary88Controller extends DefaultBaseController { return new SuccessResult(); } - @ApiOperation(value = "修改88项考核指标上报汇总", notes = "修改88项考核指标上报汇总接口") + @ApiOperation(value = "修改88项考核指标上报审核", notes = "修改88项考核指标上报审核接口") @ApiImplicitParams({ @ApiImplicitParam(name = "reportSummary88Id", value = "88项考核指标上报汇总ID", paramType = "path") }) @ApiResponses({@ApiResponse(code = 400, message = "请求失败", response = ErrorResult.class)}) - @PutMapping("update/{reportSummary88Id}") + @PutMapping("update-examine/{reportSummary88Id}") @CheckRequestBodyAnnotation - public SuccessResult update(@PathVariable("reportSummary88Id") String reportSummary88Id, @RequestBody ReportSummary88VO reportSummary88VO) { - reportSummary88Service.update(reportSummary88Id, reportSummary88VO); + public SuccessResult updateExamine(@PathVariable("reportSummary88Id") String reportSummary88Id, @RequestBody ReportSummary88UpdateExamineVO reportSummary88UpdateExamineVO) { + reportSummary88Service.updateExamine(reportSummary88Id, reportSummary88UpdateExamineVO); return new SuccessResult(); } @@ -72,9 +73,9 @@ public class ReportSummary88Controller extends DefaultBaseController { @ApiImplicitParam(name = "reportSummary88Id", value = "88项考核指标上报汇总ID", paramType = "path") }) @ApiResponses({@ApiResponse(code = 400, message = "请求失败", response = ErrorResult.class)}) - @GetMapping("get/{reportSummary88Id}") - public ReportSummary88DTO get(@PathVariable("reportSummary88Id") String reportSummary88Id) { - return reportSummary88Service.get(reportSummary88Id); + @GetMapping("get/{reportSummaryId}") + public ReportSummary88DTO get(@PathVariable("reportSummaryId") String reportSummaryId) { + return reportSummary88Service.get(reportSummaryId); } @ApiOperation(value = "88项考核指标上报汇总列表", notes = "88项考核指标上报汇总列表接口") @@ -119,7 +120,7 @@ public class ReportSummary88Controller extends DefaultBaseController { }) @ApiResponses({@ApiResponse(code = 400, message = "请求失败", response = ErrorResult.class)}) @GetMapping("listpage-list/self") - public SuccessResultList> listPageListBySelf(ListPage page) { + public SuccessResultList> listPageListBySelf(ListPage page) { Map params = requestParams(); page.setParams(params); return reportSummary88Service.listPageListBySelf(page); diff --git a/src/main/java/cn/com/tenlion/systemduty/controller/app/api/reportsummary88/ReportSummary88AppController.java b/src/main/java/cn/com/tenlion/systemduty/controller/app/api/reportsummary88/ReportSummary88AppController.java index 0d17435..39e56bc 100644 --- a/src/main/java/cn/com/tenlion/systemduty/controller/app/api/reportsummary88/ReportSummary88AppController.java +++ b/src/main/java/cn/com/tenlion/systemduty/controller/app/api/reportsummary88/ReportSummary88AppController.java @@ -58,28 +58,15 @@ public class ReportSummary88AppController extends DefaultBaseController { return new SuccessResult(); } - @ApiOperation(value = "修改88项考核指标上报汇总", notes = "修改88项考核指标上报汇总接口") - @ApiImplicitParams({ - @ApiImplicitParam(name = "token", value = "token", paramType = "header"), - @ApiImplicitParam(name = "reportSummary88Id", value = "88项考核指标上报汇总ID", paramType = "path") - }) - @ApiResponses({@ApiResponse(code = 400, message = "请求失败", response = ErrorResult.class)}) - @PutMapping("updatereportsummary88/{reportSummary88Id}") - @CheckRequestBodyAnnotation - public SuccessResult updateReportSummary88(@RequestHeader("token") String token, @PathVariable("reportSummary88Id") String reportSummary88Id, @RequestBody ReportSummary88VO reportSummary88VO) { - reportSummary88Service.update(token, reportSummary88Id, reportSummary88VO); - return new SuccessResult(); - } - @ApiOperation(value = "88项考核指标上报汇总详情(通过ID)", notes = "88项考核指标上报汇总详情(通过ID)接口") @ApiImplicitParams({ @ApiImplicitParam(name = "token", value = "token", paramType = "header"), - @ApiImplicitParam(name = "reportSummary88Id", value = "88项考核指标上报汇总ID", paramType = "path") + @ApiImplicitParam(name = "reportSummaryId", value = "88项考核指标上报汇总ID", paramType = "path") }) @ApiResponses({@ApiResponse(code = 400, message = "请求失败", response = ErrorResult.class)}) - @GetMapping("get/{reportSummary88Id}") - public ReportSummary88DTO get(@RequestHeader("token") String token, @PathVariable("reportSummary88Id") String reportSummary88Id) { - return reportSummary88Service.get(reportSummary88Id); + @GetMapping("get/{reportSummaryId}") + public ReportSummary88DTO get(@RequestHeader("token") String token, @PathVariable("reportSummaryId") String reportSummaryId) { + return reportSummary88Service.get(reportSummaryId); } @ApiOperation(value = "88项考核指标上报汇总列表", notes = "88项考核指标上报汇总列表接口") diff --git a/src/main/java/cn/com/tenlion/systemduty/controller/resource/reportsummary88/ReportSummary88ResourceController.java b/src/main/java/cn/com/tenlion/systemduty/controller/resource/reportsummary88/ReportSummary88ResourceController.java index 0c2c853..345deaf 100644 --- a/src/main/java/cn/com/tenlion/systemduty/controller/resource/reportsummary88/ReportSummary88ResourceController.java +++ b/src/main/java/cn/com/tenlion/systemduty/controller/resource/reportsummary88/ReportSummary88ResourceController.java @@ -58,28 +58,15 @@ public class ReportSummary88ResourceController extends DefaultBaseController { return new SuccessResult(); } - @ApiOperation(value = "修改88项考核指标上报汇总", notes = "修改88项考核指标上报汇总接口") - @ApiImplicitParams({ - @ApiImplicitParam(name = "access_token", value = "access_token", paramType = "query"), - @ApiImplicitParam(name = "reportSummary88Id", value = "88项考核指标上报汇总ID", paramType = "path") - }) - @ApiResponses({@ApiResponse(code = 400, message = "请求失败", response = ErrorResult.class)}) - @PutMapping("update/{reportSummary88Id}") - @CheckRequestBodyAnnotation - public SuccessResult update(@PathVariable("reportSummary88Id") String reportSummary88Id, @RequestBody ReportSummary88VO reportSummary88VO) { - reportSummary88Service.update(reportSummary88Id, reportSummary88VO); - return new SuccessResult(); - } - @ApiOperation(value = "88项考核指标上报汇总详情", notes = "88项考核指标上报汇总详情接口") @ApiImplicitParams({ @ApiImplicitParam(name = "access_token", value = "access_token", paramType = "query"), - @ApiImplicitParam(name = "reportSummary88Id", value = "88项考核指标上报汇总ID", paramType = "path") + @ApiImplicitParam(name = "reportSummaryId", value = "88项考核指标上报汇总ID", paramType = "path") }) @ApiResponses({@ApiResponse(code = 400, message = "请求失败", response = ErrorResult.class)}) - @GetMapping("get/{reportSummary88Id}") - public ReportSummary88DTO get(@PathVariable("reportSummary88Id") String reportSummary88Id) { - return reportSummary88Service.get(reportSummary88Id); + @GetMapping("get/{reportSummaryId}") + public ReportSummary88DTO get(@PathVariable("reportSummaryId") String reportSummaryId) { + return reportSummary88Service.get(reportSummaryId); } @ApiOperation(value = "88项考核指标上报汇总列表", notes = "88项考核指标上报汇总列表接口") diff --git a/src/main/java/cn/com/tenlion/systemduty/controller/route/catalogue/CatalogueRouteController.java b/src/main/java/cn/com/tenlion/systemduty/controller/route/catalogue/CatalogueRouteController.java index 340e57c..bcacc89 100644 --- a/src/main/java/cn/com/tenlion/systemduty/controller/route/catalogue/CatalogueRouteController.java +++ b/src/main/java/cn/com/tenlion/systemduty/controller/route/catalogue/CatalogueRouteController.java @@ -3,6 +3,7 @@ package cn.com.tenlion.systemduty.controller.route.catalogue; import ink.wgink.common.base.DefaultBaseController; import ink.wgink.interfaces.consts.ISystemConstant; import io.swagger.annotations.Api; +import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @@ -16,7 +17,7 @@ import org.springframework.web.servlet.ModelAndView; * @Version: 3.0 **/ @Api(tags = ISystemConstant.ROUTE_TAGS_PREFIX + "责任目录路由") -@RestController +@Controller @RequestMapping(ISystemConstant.ROUTE_PREFIX + "/catalogue") public class CatalogueRouteController extends DefaultBaseController { diff --git a/src/main/java/cn/com/tenlion/systemduty/controller/route/defaultpage/DefaultPageRouteController.java b/src/main/java/cn/com/tenlion/systemduty/controller/route/defaultpage/DefaultPageRouteController.java new file mode 100644 index 0000000..dad865a --- /dev/null +++ b/src/main/java/cn/com/tenlion/systemduty/controller/route/defaultpage/DefaultPageRouteController.java @@ -0,0 +1,64 @@ +package cn.com.tenlion.systemduty.controller.route.defaultpage; + +import cn.com.tenlion.systemduty.properties.SystemRoleProperties; +import ink.wgink.common.component.SecurityComponent; +import ink.wgink.interfaces.consts.ISystemConstant; +import ink.wgink.pojo.dtos.role.RoleSimpleDTO; +import io.swagger.annotations.Api; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.servlet.ModelAndView; + +import java.util.List; + +/** + * @ClassName: DefaultPageRouteController + * @Description: 默认页面路由 + * @Author: wanggeng + * @Date: 2022/1/19 5:41 PM + * @Version: 1.0 + */ +@Api(tags = ISystemConstant.ROUTE_TAGS_PREFIX + "默认页面路由") +@Controller +@RequestMapping(ISystemConstant.ROUTE_PREFIX + "/default-page") +public class DefaultPageRouteController { + + @Autowired + private SystemRoleProperties systemRoleProperties; + @Autowired + private SecurityComponent securityComponent; + + @GetMapping("home") + public ModelAndView home() { + String roleId = getRole(securityComponent.getCurrentUser().getRoles()); + ModelAndView mv; +// if (StringUtils.equals(systemRoleProperties.getReporter(), roleId)) { +// mv = new ModelAndView("default-page/home-report"); +// } else if (StringUtils.equals(systemRoleProperties.getExaminer(), roleId)) { +// mv = new ModelAndView("default-page/home-examine"); +// } else { +// mv = new ModelAndView("default-page/home-admin"); +// } + mv = new ModelAndView("default-page/home-admin"); + return mv; + } + + /** + * @param roles + * @return + */ + private String getRole(List roles) { + for (RoleSimpleDTO roleSimpleDTO : roles) { + if (StringUtils.equals(systemRoleProperties.getExaminer(), roleSimpleDTO.getRoleId())) { + return systemRoleProperties.getExaminer(); + } else if (StringUtils.equals(systemRoleProperties.getReporter(), roleSimpleDTO.getRoleId())) { + return systemRoleProperties.getReporter(); + } + } + return ISystemConstant.ADMIN; + } + +} diff --git a/src/main/java/cn/com/tenlion/systemduty/controller/route/distribution/department/DistributionDepartmentRouteController.java b/src/main/java/cn/com/tenlion/systemduty/controller/route/distribution/department/DistributionDepartmentRouteController.java index f50a80f..8078d0a 100644 --- a/src/main/java/cn/com/tenlion/systemduty/controller/route/distribution/department/DistributionDepartmentRouteController.java +++ b/src/main/java/cn/com/tenlion/systemduty/controller/route/distribution/department/DistributionDepartmentRouteController.java @@ -3,9 +3,9 @@ package cn.com.tenlion.systemduty.controller.route.distribution.department; import ink.wgink.common.base.DefaultBaseController; import ink.wgink.interfaces.consts.ISystemConstant; import io.swagger.annotations.Api; +import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; import org.springframework.web.servlet.ModelAndView; /** @@ -16,7 +16,7 @@ import org.springframework.web.servlet.ModelAndView; * @Version: 3.0 **/ @Api(tags = ISystemConstant.ROUTE_TAGS_PREFIX + "责任清单路由") -@RestController +@Controller @RequestMapping(ISystemConstant.ROUTE_PREFIX + "/distribution/department") public class DistributionDepartmentRouteController extends DefaultBaseController { diff --git a/src/main/java/cn/com/tenlion/systemduty/controller/route/list/ListRouteController.java b/src/main/java/cn/com/tenlion/systemduty/controller/route/list/ListRouteController.java index f1aae5c..d68eac0 100644 --- a/src/main/java/cn/com/tenlion/systemduty/controller/route/list/ListRouteController.java +++ b/src/main/java/cn/com/tenlion/systemduty/controller/route/list/ListRouteController.java @@ -3,9 +3,9 @@ package cn.com.tenlion.systemduty.controller.route.list; import ink.wgink.common.base.DefaultBaseController; import ink.wgink.interfaces.consts.ISystemConstant; import io.swagger.annotations.Api; +import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; import org.springframework.web.servlet.ModelAndView; /** @@ -16,7 +16,7 @@ import org.springframework.web.servlet.ModelAndView; * @Version: 3.0 **/ @Api(tags = ISystemConstant.ROUTE_TAGS_PREFIX + "责任清单路由") -@RestController +@Controller @RequestMapping(ISystemConstant.ROUTE_PREFIX + "/list") public class ListRouteController extends DefaultBaseController { diff --git a/src/main/java/cn/com/tenlion/systemduty/controller/route/reportcontent88/ReportContent88RouteController.java b/src/main/java/cn/com/tenlion/systemduty/controller/route/reportcontent88/ReportContent88RouteController.java index 9feb130..bd061d9 100644 --- a/src/main/java/cn/com/tenlion/systemduty/controller/route/reportcontent88/ReportContent88RouteController.java +++ b/src/main/java/cn/com/tenlion/systemduty/controller/route/reportcontent88/ReportContent88RouteController.java @@ -3,9 +3,9 @@ package cn.com.tenlion.systemduty.controller.route.reportcontent88; import ink.wgink.common.base.DefaultBaseController; import ink.wgink.interfaces.consts.ISystemConstant; import io.swagger.annotations.Api; +import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; import org.springframework.web.servlet.ModelAndView; /** @@ -16,7 +16,7 @@ import org.springframework.web.servlet.ModelAndView; * @Version: 3.0 **/ @Api(tags = ISystemConstant.ROUTE_TAGS_PREFIX + "88项责任上报详情路由") -@RestController +@Controller @RequestMapping(ISystemConstant.ROUTE_PREFIX + "/report-content88") public class ReportContent88RouteController extends DefaultBaseController { @@ -45,6 +45,11 @@ public class ReportContent88RouteController extends DefaultBaseController { return new ModelAndView("report-content88/list-self"); } + @GetMapping("list-self-history") + public ModelAndView listMineHistory() { + return new ModelAndView("report-content88/list-self-history"); + } + @GetMapping("list-department") public ModelAndView listDepartment() { return new ModelAndView("report-content88/list-department"); diff --git a/src/main/java/cn/com/tenlion/systemduty/controller/route/reportsummary88/ReportSummary88RouteController.java b/src/main/java/cn/com/tenlion/systemduty/controller/route/reportsummary88/ReportSummary88RouteController.java index e53903c..893f6c5 100644 --- a/src/main/java/cn/com/tenlion/systemduty/controller/route/reportsummary88/ReportSummary88RouteController.java +++ b/src/main/java/cn/com/tenlion/systemduty/controller/route/reportsummary88/ReportSummary88RouteController.java @@ -3,9 +3,9 @@ package cn.com.tenlion.systemduty.controller.route.reportsummary88; import ink.wgink.common.base.DefaultBaseController; import ink.wgink.interfaces.consts.ISystemConstant; import io.swagger.annotations.Api; +import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; import org.springframework.web.servlet.ModelAndView; /** @@ -16,7 +16,7 @@ import org.springframework.web.servlet.ModelAndView; * @Version: 3.0 **/ @Api(tags = ISystemConstant.ROUTE_TAGS_PREFIX + "88项考核指标上报汇总路由") -@RestController +@Controller @RequestMapping(ISystemConstant.ROUTE_PREFIX + "/report-summary88") public class ReportSummary88RouteController extends DefaultBaseController { @@ -25,9 +25,9 @@ public class ReportSummary88RouteController extends DefaultBaseController { return new ModelAndView("report-summary88/save"); } - @GetMapping("update") - public ModelAndView update() { - return new ModelAndView("report-summary88/update"); + @GetMapping("update-examine") + public ModelAndView updateExamine() { + return new ModelAndView("report-summary88/update-examine"); } @GetMapping("list-examine") diff --git a/src/main/java/cn/com/tenlion/systemduty/dao/reportcontent88/IReportContent88Dao.java b/src/main/java/cn/com/tenlion/systemduty/dao/reportcontent88/IReportContent88Dao.java index 9cbcdaf..185aafa 100644 --- a/src/main/java/cn/com/tenlion/systemduty/dao/reportcontent88/IReportContent88Dao.java +++ b/src/main/java/cn/com/tenlion/systemduty/dao/reportcontent88/IReportContent88Dao.java @@ -2,6 +2,8 @@ package cn.com.tenlion.systemduty.dao.reportcontent88; import cn.com.tenlion.systemduty.pojo.bos.reportcontent88.ReportContent88BO; import cn.com.tenlion.systemduty.pojo.dtos.reportcontent88.ReportContent88DTO; +import cn.com.tenlion.systemduty.pojo.dtos.reportcontent88.ReportDepartmentCountDTO; +import cn.com.tenlion.systemduty.pojo.dtos.reportcontent88.ReportListCountDTO; import cn.com.tenlion.systemduty.pojo.pos.reportcontent88.ReportContent88PO; import ink.wgink.exceptions.RemoveException; import ink.wgink.exceptions.SaveException; @@ -56,6 +58,7 @@ public interface IReportContent88Dao { /** * 修改审核状态 + * * @param params * @throws UpdateException */ @@ -124,4 +127,28 @@ public interface IReportContent88Dao { */ Integer count(Map params) throws SearchException; + /** + * 指标上报TOP10 + * + * @return + * @throws SearchException + */ + List listReportListTop10() throws SearchException; + + /** + * 部门 上报量/通过量 排名 + * + * @return + * @throws SearchException + */ + List listDepartmentReportTotal() throws SearchException; + + /** + * 部门 通过量 排名 + * + * @return + * @throws SearchException + */ + List listDepartmentReportPassTotal() throws SearchException; + } \ No newline at end of file diff --git a/src/main/java/cn/com/tenlion/systemduty/dao/reportsummary88/IReportSummary88Dao.java b/src/main/java/cn/com/tenlion/systemduty/dao/reportsummary88/IReportSummary88Dao.java index 3f8a885..7deb6be 100644 --- a/src/main/java/cn/com/tenlion/systemduty/dao/reportsummary88/IReportSummary88Dao.java +++ b/src/main/java/cn/com/tenlion/systemduty/dao/reportsummary88/IReportSummary88Dao.java @@ -47,12 +47,12 @@ public interface IReportSummary88Dao { void delete(Map params) throws RemoveException; /** - * 修改88项考核指标上报汇总 + * 修改88项考核指标上报审核 * * @param params * @throws UpdateException */ - void update(Map params) throws UpdateException; + void updateExamine(Map params) throws UpdateException; /** * 88项考核指标上报汇总详情 diff --git a/src/main/java/cn/com/tenlion/systemduty/pojo/dtos/reportcontent88/ReportDepartmentCountDTO.java b/src/main/java/cn/com/tenlion/systemduty/pojo/dtos/reportcontent88/ReportDepartmentCountDTO.java new file mode 100644 index 0000000..8474b81 --- /dev/null +++ b/src/main/java/cn/com/tenlion/systemduty/pojo/dtos/reportcontent88/ReportDepartmentCountDTO.java @@ -0,0 +1,46 @@ +package cn.com.tenlion.systemduty.pojo.dtos.reportcontent88; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; + +/** + * @ClassName: ReportDepartmentCountDTO + * @Description: 部门上报统计 + * @Author: wanggeng + * @Date: 2022/1/19 11:52 PM + * @Version: 1.0 + */ +@ApiModel +public class ReportDepartmentCountDTO { + + @ApiModelProperty(name = "reportDepartmentId", value = "部门ID") + private String reportDepartmentId; + @ApiModelProperty(name = "reportDepartmentName", value = "部门名称") + private String reportDepartmentName; + @ApiModelProperty(name = "reportCount", value = "上报量") + private Integer reportCount; + + public String getReportDepartmentId() { + return reportDepartmentId == null ? "" : reportDepartmentId.trim(); + } + + public void setReportDepartmentId(String reportDepartmentId) { + this.reportDepartmentId = reportDepartmentId; + } + + public String getReportDepartmentName() { + return reportDepartmentName == null ? "" : reportDepartmentName.trim(); + } + + public void setReportDepartmentName(String reportDepartmentName) { + this.reportDepartmentName = reportDepartmentName; + } + + public Integer getReportCount() { + return reportCount == null ? 0 : reportCount; + } + + public void setReportCount(Integer reportCount) { + this.reportCount = reportCount; + } +} diff --git a/src/main/java/cn/com/tenlion/systemduty/pojo/dtos/reportcontent88/ReportListCountDTO.java b/src/main/java/cn/com/tenlion/systemduty/pojo/dtos/reportcontent88/ReportListCountDTO.java new file mode 100644 index 0000000..5273f0b --- /dev/null +++ b/src/main/java/cn/com/tenlion/systemduty/pojo/dtos/reportcontent88/ReportListCountDTO.java @@ -0,0 +1,46 @@ +package cn.com.tenlion.systemduty.pojo.dtos.reportcontent88; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; + +/** + * @ClassName: ReportListCoount + * @Description: 上报清单统计 + * @Author: wanggeng + * @Date: 2022/1/19 11:26 PM + * @Version: 1.0 + */ +@ApiModel +public class ReportListCountDTO { + + @ApiModelProperty(name = "listId", value = "清单ID") + private String listId; + @ApiModelProperty(name = "listSummary", value = "清单描述") + private String listSummary; + @ApiModelProperty(name = "reportCount", value = "上报数量") + private Integer reportCount; + + public String getListId() { + return listId == null ? "" : listId.trim(); + } + + public void setListId(String listId) { + this.listId = listId; + } + + public String getListSummary() { + return listSummary == null ? "" : listSummary.trim(); + } + + public void setListSummary(String listSummary) { + this.listSummary = listSummary; + } + + public Integer getReportCount() { + return reportCount == null ? 0 : reportCount; + } + + public void setReportCount(Integer reportCount) { + this.reportCount = reportCount; + } +} diff --git a/src/main/java/cn/com/tenlion/systemduty/pojo/dtos/reportsummary88/ListSelfDTO.java b/src/main/java/cn/com/tenlion/systemduty/pojo/dtos/reportsummary88/ListSelfDTO.java new file mode 100644 index 0000000..72690c7 --- /dev/null +++ b/src/main/java/cn/com/tenlion/systemduty/pojo/dtos/reportsummary88/ListSelfDTO.java @@ -0,0 +1,68 @@ +package cn.com.tenlion.systemduty.pojo.dtos.reportsummary88; + +import cn.com.tenlion.systemduty.pojo.dtos.list.ListDTO; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; + +/** + * + * @ClassName: ListDTO + * @Description: 责任清单 + * @Author: CodeFactory + * @Date: 2022-01-06 14:54:06 + * @Version: 3.0 + **/ +@ApiModel +public class ListSelfDTO extends ListDTO { + + @ApiModelProperty(name = "reportProcess", value = "上报进度") + private Double reportProcess; + @ApiModelProperty(name = "isComplete", value = "是否完成") + private Integer isComplete; + @ApiModelProperty(name = "reportScore", value = "上报得分") + private Double reportScore; + @ApiModelProperty(name = "examineUserId", value = "审核人") + private String examineUserId; + @ApiModelProperty(name = "examineTime", value = "审核时间") + private String examineTime; + + public Double getReportProcess() { + return reportProcess == null ? 0 : reportProcess; + } + + public void setReportProcess(Double reportProcess) { + this.reportProcess = reportProcess; + } + + public Integer getIsComplete() { + return isComplete == null ? 0 : isComplete; + } + + public void setIsComplete(Integer isComplete) { + this.isComplete = isComplete; + } + + public Double getReportScore() { + return reportScore == null ? 0 : reportScore; + } + + public void setReportScore(Double reportScore) { + this.reportScore = reportScore; + } + + public String getExamineUserId() { + return examineUserId == null ? "" : examineUserId.trim(); + } + + public void setExamineUserId(String examineUserId) { + this.examineUserId = examineUserId; + } + + public String getExamineTime() { + return examineTime == null ? "" : examineTime.trim(); + } + + public void setExamineTime(String examineTime) { + this.examineTime = examineTime; + } +} diff --git a/src/main/java/cn/com/tenlion/systemduty/pojo/vos/reportsummary88/ReportSummary88UpdateExamineVO.java b/src/main/java/cn/com/tenlion/systemduty/pojo/vos/reportsummary88/ReportSummary88UpdateExamineVO.java new file mode 100644 index 0000000..fcb2aac --- /dev/null +++ b/src/main/java/cn/com/tenlion/systemduty/pojo/vos/reportsummary88/ReportSummary88UpdateExamineVO.java @@ -0,0 +1,39 @@ +package cn.com.tenlion.systemduty.pojo.vos.reportsummary88; + +import ink.wgink.annotation.CheckNumberAnnotation; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; + +/** + * @ClassName: ReportSummary88UpdateExamineVO + * @Description: 88项上报汇总审核状态 + * @Author: wanggeng + * @Date: 2022/1/18 11:02 PM + * @Version: 1.0 + */ +@ApiModel +public class ReportSummary88UpdateExamineVO { + + @ApiModelProperty(name = "reportProcess", value = "上报进度") + @CheckNumberAnnotation(name = "上报进度", min = 0) + private Double reportProcess; + @ApiModelProperty(name = "reportScore", value = "上报得分") + @CheckNumberAnnotation(name = "上报得分", min = 0) + private Double reportScore; + + public Double getReportProcess() { + return reportProcess == null ? 0 : reportProcess; + } + + public void setReportProcess(Double reportProcess) { + this.reportProcess = reportProcess; + } + + public Double getReportScore() { + return reportScore == null ? 0 : reportScore; + } + + public void setReportScore(Double reportScore) { + this.reportScore = reportScore; + } +} diff --git a/src/main/java/cn/com/tenlion/systemduty/properties/SystemRoleProperties.java b/src/main/java/cn/com/tenlion/systemduty/properties/SystemRoleProperties.java new file mode 100644 index 0000000..5022c61 --- /dev/null +++ b/src/main/java/cn/com/tenlion/systemduty/properties/SystemRoleProperties.java @@ -0,0 +1,35 @@ +package cn.com.tenlion.systemduty.properties; + +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.stereotype.Component; + +/** + * @ClassName: SystemRoleProperties + * @Description: 系统角色 + * @Author: wanggeng + * @Date: 2022/1/19 5:54 PM + * @Version: 1.0 + */ +@Component +@ConfigurationProperties(prefix = "system-role") +public class SystemRoleProperties { + + private String examiner; + private String reporter; + + public String getExaminer() { + return examiner == null ? "" : examiner.trim(); + } + + public void setExaminer(String examiner) { + this.examiner = examiner; + } + + public String getReporter() { + return reporter == null ? "" : reporter.trim(); + } + + public void setReporter(String reporter) { + this.reporter = reporter; + } +} diff --git a/src/main/java/cn/com/tenlion/systemduty/service/count/IDutyCountService.java b/src/main/java/cn/com/tenlion/systemduty/service/count/IDutyCountService.java new file mode 100644 index 0000000..3c53b11 --- /dev/null +++ b/src/main/java/cn/com/tenlion/systemduty/service/count/IDutyCountService.java @@ -0,0 +1,66 @@ +package cn.com.tenlion.systemduty.service.count; + +import cn.com.tenlion.systemduty.pojo.dtos.reportcontent88.ReportListCountDTO; + +import java.util.List; +import java.util.Map; + +/** + * @ClassName: IDutyCountService + * @Description: 责任统计 + * @Author: wanggeng + * @Date: 2022/1/19 10:02 PM + * @Version: 1.0 + */ +public interface IDutyCountService { + + /** + * 总上报量 + * + * @return + */ + Integer countTotalReport(); + + /** + * 年度上报量 + * + * @return + */ + Integer countYearReport(); + + /** + * 本月上报量 + * + * @return + */ + Integer countMonthReport(); + + /** + * 本周上报量 + * + * @return + */ + Integer countWeekReport(); + + /** + * 指标上报TOP10 + * + * @return + */ + List listReportListTop10(); + + /** + * 本周每日上报量 + * + * @return + */ + Map weekDayReport(); + + /** + * 部门 上报量/通过量 排名 + * + * @return + */ + Map departmentReportTotalPass(); + +} diff --git a/src/main/java/cn/com/tenlion/systemduty/service/count/impl/DutyCountServiceImpl.java b/src/main/java/cn/com/tenlion/systemduty/service/count/impl/DutyCountServiceImpl.java new file mode 100644 index 0000000..61e2bea --- /dev/null +++ b/src/main/java/cn/com/tenlion/systemduty/service/count/impl/DutyCountServiceImpl.java @@ -0,0 +1,144 @@ +package cn.com.tenlion.systemduty.service.count.impl; + +import cn.com.tenlion.systemduty.pojo.dtos.reportcontent88.ReportDepartmentCountDTO; +import cn.com.tenlion.systemduty.pojo.dtos.reportcontent88.ReportListCountDTO; +import cn.com.tenlion.systemduty.service.count.IDutyCountService; +import cn.com.tenlion.systemduty.service.reportcontent88.IReportContent88Service; +import ink.wgink.common.base.DefaultBaseService; +import ink.wgink.interfaces.consts.ISystemConstant; +import ink.wgink.interfaces.department.IDepartmentBaseService; +import ink.wgink.pojo.pos.DepartmentPO; +import ink.wgink.util.ArrayListUtil; +import ink.wgink.util.date.DateUtil; +import org.apache.commons.lang3.StringUtils; +import org.joda.time.DateTime; +import org.joda.time.format.DateTimeFormat; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +/** + * @ClassName: DutyCountServiceImpl + * @Description: 责任统计 + * @Author: wanggeng + * @Date: 2022/1/19 10:03 PM + * @Version: 1.0 + */ +@Service +public class DutyCountServiceImpl extends DefaultBaseService implements IDutyCountService { + + @Autowired + private IReportContent88Service reportContent88Service; + @Autowired + private IDepartmentBaseService departmentBaseService; + + @Override + public Integer countTotalReport() { + Map params = getHashMap(2); + return reportContent88Service.count(params); + } + + @Override + public Integer countYearReport() { + Map params = getHashMap(2); + params.put("year", DateUtil.getYear()); + return reportContent88Service.count(params); + } + + @Override + public Integer countMonthReport() { + Map params = getHashMap(2); + params.put("yearMonth", DateUtil.getSdfYearMonth()); + return reportContent88Service.count(params); + } + + @Override + public Integer countWeekReport() { + Map params = getHashMap(2); + DateTime now = DateTime.now(); + DateTime startDateTime = now.dayOfWeek().withMinimumValue(); + String startDay = startDateTime.toString(DateTimeFormat.forPattern(ISystemConstant.DATE_FORMATTER_YYYY_MM_DD)); + DateTime endDateTime = now.dayOfWeek().withMaximumValue(); + String endDay = endDateTime.toString(DateTimeFormat.forPattern(ISystemConstant.DATE_FORMATTER_YYYY_MM_DD)); + + params.put("startDay", startDay); + params.put("endDay", endDay); + return reportContent88Service.count(params); + } + + @Override + public List listReportListTop10() { + return reportContent88Service.listReportListTop10(); + } + + @Override + public Map weekDayReport() { + DateTime now = DateTime.now(); + Map params = getHashMap(2); + List xData = new ArrayList<>(); + List yData = new ArrayList<>(); + for (int i = 1; i < 8; i++) { + DateTime dayDateTime = now.withDayOfWeek(i); + String day = dayDateTime.toString(DateTimeFormat.forPattern(ISystemConstant.DATE_FORMATTER_YYYY_MM_DD)); + params.put("day", day); + Integer count = reportContent88Service.count(params); + xData.add(day); + yData.add(count); + } + Map result = getHashMap(4); + result.put("xData", xData); + result.put("yData", yData); + return result; + } + + @Override + public Map departmentReportTotalPass() { + List reportDepartmentCountDTOs = reportContent88Service.listDepartmentReportTotal(); + setReportDepartments(reportDepartmentCountDTOs); + List reportDepartmentPassCountDTOs = reportContent88Service.listDepartmentReportPassTotal(); + List xData = new ArrayList<>(); + List yData1 = new ArrayList<>(); + List yData2 = new ArrayList<>(); + reportDepartmentCountDTOs.forEach(reportDepartmentCountDTO -> { + xData.add(reportDepartmentCountDTO.getReportDepartmentName()); + yData1.add(reportDepartmentCountDTO.getReportCount()); + for (int i = 0; i < reportDepartmentPassCountDTOs.size(); i++) { + ReportDepartmentCountDTO reportDepartmentPassCountDTO = reportDepartmentPassCountDTOs.get(i); + if (StringUtils.equals(reportDepartmentCountDTO.getReportDepartmentId(), reportDepartmentPassCountDTO.getReportDepartmentId())) { + yData2.add(reportDepartmentPassCountDTO.getReportCount()); + reportDepartmentPassCountDTOs.remove(i); + i--; + } + } + }); + Map result = getHashMap(4); + result.put("xData", xData); + result.put("yData1", yData1); + result.put("yData2", yData2); + return result; + } + + /** + * 设置部门 + * + * @param reportDepartmentCountDTOs + */ + private void setReportDepartments(List reportDepartmentCountDTOs) { + if (reportDepartmentCountDTOs.isEmpty()) { + return; + } + List departmentIds = ArrayListUtil.listBeanStringIdValue(reportDepartmentCountDTOs, "reportDepartmentId", ReportDepartmentCountDTO.class); + List departmentPOs = departmentBaseService.listPO(departmentIds); + reportDepartmentCountDTOs.forEach(reportDepartmentCountDTO -> { + for (DepartmentPO departmentPO : departmentPOs) { + if (StringUtils.equals(reportDepartmentCountDTO.getReportDepartmentId(), departmentPO.getDepartmentId())) { + reportDepartmentCountDTO.setReportDepartmentName(departmentPO.getDepartmentName()); + break; + } + } + }); + } +} diff --git a/src/main/java/cn/com/tenlion/systemduty/service/reportcontent88/IReportContent88Service.java b/src/main/java/cn/com/tenlion/systemduty/service/reportcontent88/IReportContent88Service.java index ca76d0a..d493c8b 100644 --- a/src/main/java/cn/com/tenlion/systemduty/service/reportcontent88/IReportContent88Service.java +++ b/src/main/java/cn/com/tenlion/systemduty/service/reportcontent88/IReportContent88Service.java @@ -2,6 +2,8 @@ package cn.com.tenlion.systemduty.service.reportcontent88; import cn.com.tenlion.systemduty.pojo.bos.reportcontent88.ReportContent88BO; import cn.com.tenlion.systemduty.pojo.dtos.reportcontent88.ReportContent88DTO; +import cn.com.tenlion.systemduty.pojo.dtos.reportcontent88.ReportDepartmentCountDTO; +import cn.com.tenlion.systemduty.pojo.dtos.reportcontent88.ReportListCountDTO; import cn.com.tenlion.systemduty.pojo.pos.reportcontent88.ReportContent88PO; import cn.com.tenlion.systemduty.pojo.vos.reportcontent88.ReportContent88UpdateExamineVO; import cn.com.tenlion.systemduty.pojo.vos.reportcontent88.ReportContent88VO; @@ -101,7 +103,7 @@ public interface IReportContent88Service { /** * 修改88项责任上报审核状态 * - * @param reportId 上报ID + * @param reportId 上报ID * @param reportContent88UpdateExamineVO 审核结果 */ void updateExamine(String reportId, ReportContent88UpdateExamineVO reportContent88UpdateExamineVO); @@ -221,5 +223,25 @@ public interface IReportContent88Service { */ SuccessResultList> listPageByListIdAndDepartmentId(String listId, String departmentId, ListPage page); + /** + * 指标上报TOP10 + * + * @return + */ + List listReportListTop10(); + + /** + * 部门 上报量 排名 + * + * @return + */ + List listDepartmentReportTotal(); + + /** + * 部门 通过量 排名 + * + * @return + */ + List listDepartmentReportPassTotal(); } \ No newline at end of file diff --git a/src/main/java/cn/com/tenlion/systemduty/service/reportcontent88/impl/ReportContent88ServiceImpl.java b/src/main/java/cn/com/tenlion/systemduty/service/reportcontent88/impl/ReportContent88ServiceImpl.java index 35e66df..f03768d 100644 --- a/src/main/java/cn/com/tenlion/systemduty/service/reportcontent88/impl/ReportContent88ServiceImpl.java +++ b/src/main/java/cn/com/tenlion/systemduty/service/reportcontent88/impl/ReportContent88ServiceImpl.java @@ -3,6 +3,8 @@ package cn.com.tenlion.systemduty.service.reportcontent88.impl; import cn.com.tenlion.systemduty.dao.reportcontent88.IReportContent88Dao; import cn.com.tenlion.systemduty.pojo.bos.reportcontent88.ReportContent88BO; import cn.com.tenlion.systemduty.pojo.dtos.reportcontent88.ReportContent88DTO; +import cn.com.tenlion.systemduty.pojo.dtos.reportcontent88.ReportDepartmentCountDTO; +import cn.com.tenlion.systemduty.pojo.dtos.reportcontent88.ReportListCountDTO; import cn.com.tenlion.systemduty.pojo.pos.list.ListPO; import cn.com.tenlion.systemduty.pojo.pos.reportcontent88.ReportContent88PO; import cn.com.tenlion.systemduty.pojo.pos.reportsummary88.ReportSummary88PO; @@ -261,6 +263,21 @@ public class ReportContent88ServiceImpl extends DefaultBaseService implements IR return listPage(page); } + @Override + public List listReportListTop10() { + return reportContent88Dao.listReportListTop10(); + } + + @Override + public List listDepartmentReportTotal() { + return reportContent88Dao.listDepartmentReportTotal(); + } + + @Override + public List listDepartmentReportPassTotal() { + return reportContent88Dao.listDepartmentReportPassTotal(); + } + /** * 是否有审核过的上报内容 * diff --git a/src/main/java/cn/com/tenlion/systemduty/service/reportsummary88/IReportSummary88Service.java b/src/main/java/cn/com/tenlion/systemduty/service/reportsummary88/IReportSummary88Service.java index 147345b..a99361d 100644 --- a/src/main/java/cn/com/tenlion/systemduty/service/reportsummary88/IReportSummary88Service.java +++ b/src/main/java/cn/com/tenlion/systemduty/service/reportsummary88/IReportSummary88Service.java @@ -1,13 +1,14 @@ package cn.com.tenlion.systemduty.service.reportsummary88; +import cn.com.tenlion.systemduty.pojo.bos.reportsummary88.ReportSummary88BO; import cn.com.tenlion.systemduty.pojo.dtos.list.ListDTO; -import cn.com.tenlion.systemduty.pojo.dtos.reportcontent88.ReportContent88DTO; +import cn.com.tenlion.systemduty.pojo.dtos.reportsummary88.ListSelfDTO; +import cn.com.tenlion.systemduty.pojo.dtos.reportsummary88.ReportSummary88DTO; +import cn.com.tenlion.systemduty.pojo.pos.reportsummary88.ReportSummary88PO; +import cn.com.tenlion.systemduty.pojo.vos.reportsummary88.ReportSummary88UpdateExamineVO; +import cn.com.tenlion.systemduty.pojo.vos.reportsummary88.ReportSummary88VO; import ink.wgink.pojo.ListPage; import ink.wgink.pojo.result.SuccessResultList; -import cn.com.tenlion.systemduty.pojo.dtos.reportsummary88.ReportSummary88DTO; -import cn.com.tenlion.systemduty.pojo.vos.reportsummary88.ReportSummary88VO; -import cn.com.tenlion.systemduty.pojo.bos.reportsummary88.ReportSummary88BO; -import cn.com.tenlion.systemduty.pojo.pos.reportsummary88.ReportSummary88PO; import java.util.List; import java.util.Map; @@ -42,7 +43,7 @@ public interface IReportSummary88Service { * 新增88项考核指标上报汇总 * * @param reportSummary88VO - * @return reportSummary88Id + * @return reportSummaryId */ String saveReturnId(ReportSummary88VO reportSummary88VO); @@ -51,7 +52,7 @@ public interface IReportSummary88Service { * * @param token * @param reportSummary88VO - * @return reportSummary88Id + * @return reportSummaryId */ String saveReturnId(String token, ReportSummary88VO reportSummary88VO); @@ -81,23 +82,12 @@ public interface IReportSummary88Service { void delete(List ids); /** - * 修改88项考核指标上报汇总 + * 修改88项考核指标上报审核 * - * @param reportSummary88Id - * @param reportSummary88VO - * @return + * @param reportSummaryId + * @param reportSummary88UpdateExamineVO */ - void update(String reportSummary88Id, ReportSummary88VO reportSummary88VO); - - /** - * 修改88项考核指标上报汇总 - * - * @param token - * @param reportSummary88Id - * @param reportSummary88VO - * @return - */ - void update(String token, String reportSummary88Id, ReportSummary88VO reportSummary88VO); + void updateExamine(String reportSummaryId, ReportSummary88UpdateExamineVO reportSummary88UpdateExamineVO); /** * 88项考核指标上报汇总详情 @@ -110,10 +100,10 @@ public interface IReportSummary88Service { /** * 88项考核指标上报汇总详情 * - * @param reportSummary88Id + * @param reportSummaryId * @return */ - ReportSummary88DTO get(String reportSummary88Id); + ReportSummary88DTO get(String reportSummaryId); /** * 88项考核指标上报汇总详情 @@ -126,10 +116,10 @@ public interface IReportSummary88Service { /** * 88项考核指标上报汇总详情 * - * @param reportSummary88Id + * @param reportSummaryId * @return */ - ReportSummary88BO getBO(String reportSummary88Id); + ReportSummary88BO getBO(String reportSummaryId); /** * 88项考核指标上报汇总详情 @@ -142,10 +132,10 @@ public interface IReportSummary88Service { /** * 88项考核指标上报汇总详情 * - * @param reportSummary88Id + * @param reportSummaryId * @return */ - ReportSummary88PO getPO(String reportSummary88Id); + ReportSummary88PO getPO(String reportSummaryId); /** * 88项考核指标上报汇总列表 @@ -193,7 +183,7 @@ public interface IReportSummary88Service { * @param page * @return */ - SuccessResultList> listPageListBySelf(ListPage page); + SuccessResultList> listPageListBySelf(ListPage page); /** * 上报汇总详情 @@ -211,4 +201,5 @@ public interface IReportSummary88Service { * @return */ SuccessResultList> listPageExamine(ListPage page); + } \ No newline at end of file diff --git a/src/main/java/cn/com/tenlion/systemduty/service/reportsummary88/impl/ReportSummary88ServiceImpl.java b/src/main/java/cn/com/tenlion/systemduty/service/reportsummary88/impl/ReportSummary88ServiceImpl.java index dd796cd..123117a 100644 --- a/src/main/java/cn/com/tenlion/systemduty/service/reportsummary88/impl/ReportSummary88ServiceImpl.java +++ b/src/main/java/cn/com/tenlion/systemduty/service/reportsummary88/impl/ReportSummary88ServiceImpl.java @@ -3,9 +3,11 @@ package cn.com.tenlion.systemduty.service.reportsummary88.impl; import cn.com.tenlion.systemduty.dao.reportsummary88.IReportSummary88Dao; import cn.com.tenlion.systemduty.pojo.bos.reportsummary88.ReportSummary88BO; import cn.com.tenlion.systemduty.pojo.dtos.list.ListDTO; +import cn.com.tenlion.systemduty.pojo.dtos.reportsummary88.ListSelfDTO; import cn.com.tenlion.systemduty.pojo.dtos.reportsummary88.ReportSummary88DTO; import cn.com.tenlion.systemduty.pojo.pos.list.ListPO; import cn.com.tenlion.systemduty.pojo.pos.reportsummary88.ReportSummary88PO; +import cn.com.tenlion.systemduty.pojo.vos.reportsummary88.ReportSummary88UpdateExamineVO; import cn.com.tenlion.systemduty.pojo.vos.reportsummary88.ReportSummary88VO; import cn.com.tenlion.systemduty.service.discribution.department.IDistributionDepartmentService; import cn.com.tenlion.systemduty.service.list.IListService; @@ -20,8 +22,10 @@ import ink.wgink.pojo.pos.DepartmentPO; import ink.wgink.pojo.result.SuccessResultList; import ink.wgink.util.ArrayListUtil; import ink.wgink.util.UUIDUtil; +import ink.wgink.util.date.DateUtil; import ink.wgink.util.map.HashMapUtil; import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -88,7 +92,7 @@ public class ReportSummary88ServiceImpl extends DefaultBaseService implements IR @Override public void remove(String token, List ids) { Map params = getHashMap(2); - params.put("reportSummary88Ids", ids); + params.put("reportSummaryIds", ids); if (StringUtils.isBlank(token)) { setUpdateInfo(params); } else { @@ -100,25 +104,18 @@ public class ReportSummary88ServiceImpl extends DefaultBaseService implements IR @Override public void delete(List ids) { Map params = getHashMap(2); - params.put("reportSummary88Ids", ids); + params.put("reportSummaryIds", ids); reportSummary88Dao.delete(params); } @Override - public void update(String reportSummary88Id, ReportSummary88VO reportSummary88VO) { - update(null, reportSummary88Id, reportSummary88VO); - } - - @Override - public void update(String token, String reportSummary88Id, ReportSummary88VO reportSummary88VO) { - Map params = HashMapUtil.beanToMap(reportSummary88VO); - params.put("reportSummary88Id", reportSummary88Id); - if (StringUtils.isBlank(token)) { - setUpdateInfo(params); - } else { - setAppUpdateInfo(token, params); - } - reportSummary88Dao.update(params); + public void updateExamine(String reportSummaryId, ReportSummary88UpdateExamineVO reportSummary88UpdateExamineVO) { + Map params = HashMapUtil.beanToMap(reportSummary88UpdateExamineVO); + params.put("examineUserId", securityComponent.getCurrentUser().getUserId()); + params.put("examineTime", DateUtil.getTime()); + params.put("isComplete", reportSummary88UpdateExamineVO.getReportProcess() == 100D ? 1 : 0); + params.put("reportSummaryId", reportSummaryId); + reportSummary88Dao.updateExamine(params); } @Override @@ -127,9 +124,9 @@ public class ReportSummary88ServiceImpl extends DefaultBaseService implements IR } @Override - public ReportSummary88DTO get(String reportSummary88Id) { + public ReportSummary88DTO get(String reportSummaryId) { Map params = super.getHashMap(2); - params.put("reportSummary88Id", reportSummary88Id); + params.put("reportSummaryId", reportSummaryId); return get(params); } @@ -139,9 +136,9 @@ public class ReportSummary88ServiceImpl extends DefaultBaseService implements IR } @Override - public ReportSummary88BO getBO(String reportSummary88Id) { + public ReportSummary88BO getBO(String reportSummaryId) { Map params = super.getHashMap(2); - params.put("reportSummary88Id", reportSummary88Id); + params.put("reportSummaryId", reportSummaryId); return getBO(params); } @@ -151,9 +148,9 @@ public class ReportSummary88ServiceImpl extends DefaultBaseService implements IR } @Override - public ReportSummary88PO getPO(String reportSummary88Id) { + public ReportSummary88PO getPO(String reportSummaryId) { Map params = super.getHashMap(2); - params.put("reportSummary88Id", reportSummary88Id); + params.put("reportSummaryId", reportSummaryId); return getPO(params); } @@ -187,7 +184,7 @@ public class ReportSummary88ServiceImpl extends DefaultBaseService implements IR } @Override - public SuccessResultList> listPageListBySelf(ListPage page) { + public SuccessResultList> listPageListBySelf(ListPage page) { List mineDepartments = securityComponent.getCurrentUser().getDepartments(); if (mineDepartments.isEmpty()) { return new SuccessResultList<>(new ArrayList<>(), 1, 0L); @@ -197,7 +194,44 @@ public class ReportSummary88ServiceImpl extends DefaultBaseService implements IR if (listIds.isEmpty()) { return new SuccessResultList<>(new ArrayList<>(), 1, 0L); } - return listService.listPageByListIds(listIds, page); + SuccessResultList> listDTOSuccessResultList = listService.listPageByListIds(listIds, page); + List listDTOs = listDTOSuccessResultList.getRows(); + if (listDTOs.isEmpty()) { + return new SuccessResultList<>(new ArrayList<>(), 1, 0L); + } + // 查询上报汇总记录 + listIds = ArrayListUtil.listBeanStringIdValue(listDTOs, "listId", ListDTO.class); + List reportSummary88POs = listPOByListIdsAndDepartmentIds(listIds, departmentIds); + List listSelfDTOs = new ArrayList<>(); + listDTOs.forEach(listDTO -> { + ListSelfDTO listSelfDTO = new ListSelfDTO(); + BeanUtils.copyProperties(listDTO, listSelfDTO); + boolean exist = false; + for (ReportSummary88PO reportSummary88PO : reportSummary88POs) { + if(StringUtils.equals(listDTO.getListId(), reportSummary88PO.getListId())) { + exist = true; + listSelfDTO.setReportScore(reportSummary88PO.getReportScore()); + listSelfDTO.setReportProcess(reportSummary88PO.getReportProcess()); + listSelfDTO.setIsComplete(reportSummary88PO.getIsComplete()); + listSelfDTO.setExamineTime(reportSummary88PO.getExamineTime()); + listSelfDTO.setExamineUserId(reportSummary88PO.getExamineUserId()); + } + } + if(!exist) { + listSelfDTO.setReportScore(0D); + listSelfDTO.setReportProcess(0D); + listSelfDTO.setIsComplete(0); + } + listSelfDTOs.add(listSelfDTO); + }); + return new SuccessResultList<>(listSelfDTOs, listDTOSuccessResultList.getPage(), listDTOSuccessResultList.getTotal()); + } + + private List listPOByListIdsAndDepartmentIds(List listIds, List departmentIds) { + Map params = getHashMap(4); + params.put("listIds", listIds); + params.put("reportDepartmentIds", departmentIds); + return listPO(params); } @Override diff --git a/src/main/resources/application-dev.yml b/src/main/resources/application-dev.yml index 2c299a9..0ed61f8 100644 --- a/src/main/resources/application-dev.yml +++ b/src/main/resources/application-dev.yml @@ -5,7 +5,7 @@ server: system-sub-title: 责任上报考核系统 nav-page: http://127.0.0.1:7011/usercenter # default-index-page: route/system/index -# default-home-page: route/system/default + default-home-page: route/default-page/home servlet: context-path: /duty @@ -157,4 +157,8 @@ logging: level: root: error ink.wgink: debug - cn.com.tenlion: debug \ No newline at end of file + cn.com.tenlion: debug + +system-role: + examiner: 674f930d-5b40-46fe-befa-6127ca556b97 + reporter: f085a0bf-ee57-42f4-bfbb-bc06ce480ffc \ No newline at end of file diff --git a/src/main/resources/mybatis/mapper/report-content88/report-content88-mapper.xml b/src/main/resources/mybatis/mapper/report-content88/report-content88-mapper.xml index c421b4a..f1ca90e 100644 --- a/src/main/resources/mybatis/mapper/report-content88/report-content88-mapper.xml +++ b/src/main/resources/mybatis/mapper/report-content88/report-content88-mapper.xml @@ -58,6 +58,17 @@ + + + + + + + + + + + INSERT INTO duty_report_content88( @@ -421,6 +432,84 @@ #{reportIds[${index}]} + + AND + LEFT(t1.gmt_create, 4) = #{year} + + + AND + LEFT(t1.gmt_create, 7) = #{yearMonth} + + + AND + LEFT(t1.gmt_create, 10) = #{day} + + + AND + LEFT(t1.gmt_create, 10) BETWEEN #{startDay} AND #{endDay} + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/resources/mybatis/mapper/report-summary88/report-summary88-mapper.xml b/src/main/resources/mybatis/mapper/report-summary88/report-summary88-mapper.xml index 5d30c0e..3554526 100644 --- a/src/main/resources/mybatis/mapper/report-summary88/report-summary88-mapper.xml +++ b/src/main/resources/mybatis/mapper/report-summary88/report-summary88-mapper.xml @@ -115,28 +115,16 @@ - - + + UPDATE duty_report_summary88 SET - report_process = #{reportProcess}, - - is_complete = #{isComplete}, - - report_score = #{reportScore}, - - examine_user_id = #{examineUserId}, - - - examine_time = #{examineTime}, - - gmt_modified = #{gmtModified}, - modifier = #{modifier} + examine_time = #{examineTime} WHERE report_summary_id = #{reportSummaryId} @@ -352,6 +340,20 @@ AND LEFT(t1.gmt_create, 10) #{endTime} + + AND + t1.list_id IN + + #{listIds[${index}]} + + + + AND + t1.report_department_id IN + + #{reportDepartmentIds[${index}]} + + diff --git a/src/main/resources/templates/default-page/home-admin.html b/src/main/resources/templates/default-page/home-admin.html new file mode 100644 index 0000000..88cdd8b --- /dev/null +++ b/src/main/resources/templates/default-page/home-admin.html @@ -0,0 +1,290 @@ + + + + + + + + + + + + + + +
+
+
+
+
+ 总上报量 +
+
+

0

+
+
+
+
+
+
+ 年度上报量 +
+
+

0

+
+
+
+
+
+
+ 本月上报量 +
+
+

0

+
+
+
+
+
+
+ 本周上报量 +
+
+

0

+
+
+
+
+
+
+
+
+ 本周热门指标上报TOP10 +
+
+ + + + + + + + + + + + + + + +
排名清单详情数量
{{index + 1}}{{top10.listSummary}}{{top10.reportCount}}
+
+
+
+
+
+
+ 本周每日上报量 +
+
+
+
+
+
+
+
+
+
+
+ 部门 上报量/通过量 排名 +
+
+
+
+
+
+
+
+ + + + + \ No newline at end of file diff --git a/src/main/resources/templates/default-page/home-examine.html b/src/main/resources/templates/default-page/home-examine.html new file mode 100644 index 0000000..5678423 --- /dev/null +++ b/src/main/resources/templates/default-page/home-examine.html @@ -0,0 +1,32 @@ + + + + + + + + + + + + + + +
+

examine

+
+ + + + + \ No newline at end of file diff --git a/src/main/resources/templates/default-page/home-report.html b/src/main/resources/templates/default-page/home-report.html new file mode 100644 index 0000000..83f4162 --- /dev/null +++ b/src/main/resources/templates/default-page/home-report.html @@ -0,0 +1,32 @@ + + + + + + + + + + + + + + +
+

report

+
+ + + + + \ No newline at end of file diff --git a/src/main/resources/templates/report-content88/list-department.html b/src/main/resources/templates/report-content88/list-department.html index 55a809d..4a4f26e 100644 --- a/src/main/resources/templates/report-content88/list-department.html +++ b/src/main/resources/templates/report-content88/list-department.html @@ -109,7 +109,7 @@ return rowData; } }, - {field: 'examineUserId', width: 100, title: '审核用户', align:'center', + {field: 'examineUserName', width: 100, title: '审核人', align:'center', templet: function(row) { var rowData = row[this.field]; if(typeof(rowData) === 'undefined' || rowData == null || rowData == '') { diff --git a/src/main/resources/templates/report-content88/list-self-history.html b/src/main/resources/templates/report-content88/list-self-history.html new file mode 100644 index 0000000..192129e --- /dev/null +++ b/src/main/resources/templates/report-content88/list-self-history.html @@ -0,0 +1,202 @@ + + + + + + + + + + + + + +
+
+
+
+
+
+
+ +
+ +
+
+
+
+
+
+
+ + + + + \ No newline at end of file diff --git a/src/main/resources/templates/report-summary88/list-examine.html b/src/main/resources/templates/report-summary88/list-examine.html index 8be86ce..9a78da1 100644 --- a/src/main/resources/templates/report-summary88/list-examine.html +++ b/src/main/resources/templates/report-summary88/list-examine.html @@ -72,7 +72,7 @@ cols: [ [ {field:'rowNum', width:80, title: '序号', fixed: 'left', align:'center', templet: '{{d.LAY_INDEX}}'}, - {field: 'reportDepartmentName', width: 180, title: '上报部门名称', align:'center', + {field: 'reportDepartmentName', width: 120, title: '上报部门', align:'center', templet: function(row) { var rowData = row[this.field]; if(typeof(rowData) === 'undefined' || rowData == null || rowData == '') { @@ -112,25 +112,28 @@ return rowData; } }, - {field: 'isComplete', width: 180, title: '是否完成', align:'center', + {field: 'isComplete', width: 100, title: '完成状态', align:'center', templet: function(row) { var rowData = row[this.field]; - if(typeof(rowData) === 'undefined' || rowData == null || rowData == '') { - return '-'; + if(rowData == '0') { + return '未完成'; } - return rowData; + if(rowData == '1') { + return '已完成'; + } + return '错误'; } }, - {field: 'reportScore', width: 180, title: '上报得分', align:'center', + {field: 'reportScore', width: 100, title: '得分情况', align:'center', templet: function(row) { var rowData = row[this.field]; - if(typeof(rowData) === 'undefined' || rowData == null || rowData == '') { - return '-'; + if(!rowData) { + return '0分'; } - return rowData; + return rowData +'分'; } }, - {field: 'examineUserId', width: 180, title: '审核人', align:'center', + {field: 'examineUserName', width: 100, title: '审核人', align:'center', templet: function(row) { var rowData = row[this.field]; if(typeof(rowData) === 'undefined' || rowData == null || rowData == '') { @@ -227,6 +230,16 @@ height: '80%', onClose: function() {} }); + } else if(event === 'examineProcessEvent') { + top.dialog.open({ + url: top.restAjax.path('route/report-summary88/update-examine?reportSummaryId={reportSummaryId}', [data.reportSummaryId]), + title: '【'+ data.reportDepartmentName +'】'+ data.listSummary, + width: '500px', + height: '250px', + onClose: function() { + reloadTable(); + } + }); } }) }); diff --git a/src/main/resources/templates/report-summary88/list-list-self.html b/src/main/resources/templates/report-summary88/list-list-self.html index 43a4250..f927027 100644 --- a/src/main/resources/templates/report-summary88/list-list-self.html +++ b/src/main/resources/templates/report-summary88/list-list-self.html @@ -92,7 +92,37 @@ return rowData; } }, - {field: 'listOrder', width: 100, title: '清单排序', align:'center', + {field: 'isComplete', width: 100, title: '完成状态', align:'center', + templet: function(row) { + var rowData = row[this.field]; + if(rowData == '0') { + return '未完成'; + } + if(rowData == '1') { + return '已完成'; + } + return '错误'; + } + }, + {field: 'reportScore', width: 100, title: '得分情况', align:'center', + templet: function(row) { + var rowData = row[this.field]; + if(!rowData) { + return '0分'; + } + return rowData +'分'; + } + }, + {field: 'examineUserName', width: 100, title: '审核人', align:'center', + templet: function(row) { + var rowData = row[this.field]; + if(typeof(rowData) === 'undefined' || rowData == null || rowData == '') { + return '-'; + } + return rowData; + } + }, + {field: 'examineTime', width: 180, title: '审核时间', align:'center', templet: function(row) { var rowData = row[this.field]; if(typeof(rowData) === 'undefined' || rowData == null || rowData == '') { @@ -107,6 +137,9 @@ if(typeof(rowData) === 'undefined' || rowData == null || rowData == '') { return '-'; } + if(rowData < 0) { + return '不记录'; + } return rowData; } }, @@ -121,6 +154,9 @@ }, {field: 'option', width: 80, title: '操作', align:'center', fixed: 'right', templet: function(row) { + if(row.isComplete) { + return ''; + } return ''; } }, @@ -209,6 +245,14 @@ height: '80%', onClose: function() {} }); + } else if(event === 'reportHistoryListEvent') { + top.dialog.open({ + url: top.restAjax.path('route/report-content88/list-self-history?listId={listId}', [data.listId]), + title: data.listSummary, + width: '80%', + height: '80%', + onClose: function() {} + }); } }) }); diff --git a/src/main/resources/templates/report-summary88/save.html b/src/main/resources/templates/report-summary88/save.html deleted file mode 100644 index 72e9410..0000000 --- a/src/main/resources/templates/report-summary88/save.html +++ /dev/null @@ -1,170 +0,0 @@ - - - - - - - - - - - - - -
-
- -
-
-
- -
- -
-
-
- -
- -
-
-
- -
- -
-
-
- -
- -
-
-
- -
- -
-
-
- -
- -
-
-
- -
- -
-
-
- -
- -
-
-
- -
- -
-
-
- -
- -
-
-
-
- -
-
-
-
-
-
- - - - \ No newline at end of file diff --git a/src/main/resources/templates/report-summary88/update-examine.html b/src/main/resources/templates/report-summary88/update-examine.html new file mode 100644 index 0000000..5b14842 --- /dev/null +++ b/src/main/resources/templates/report-summary88/update-examine.html @@ -0,0 +1,133 @@ + + + + + + + + + + + + + +
+
+
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+
+
+
+
+ +
+
+
+
+
+
+ + + + \ No newline at end of file diff --git a/src/main/resources/templates/report-summary88/update.html b/src/main/resources/templates/report-summary88/update.html deleted file mode 100644 index 4c5d825..0000000 --- a/src/main/resources/templates/report-summary88/update.html +++ /dev/null @@ -1,187 +0,0 @@ - - - - - - - - - - - - - -
-
- -
-
-
- -
- -
-
-
- -
- -
-
-
- -
- -
-
-
- -
- -
-
-
- -
- -
-
-
- -
- -
-
-
- -
- -
-
-
- -
- -
-
-
- -
- -
-
-
- -
- -
-
-
-
- -
-
-
-
-
-
- - - - \ No newline at end of file