完善功能

This commit is contained in:
wanggeng 2022-01-20 11:20:36 +08:00
parent fb160b3e98
commit 0b1bbe32b1
36 changed files with 1652 additions and 497 deletions

View File

@ -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<Integer> 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<Integer> 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<Integer> 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<Integer> 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<ReportListCountDTO> listReportListTop10() {
return dutyCountService.listReportListTop10();
}
@ApiOperation(value = "本周每日上报量", notes = "本周每日上报量接口")
@ApiResponses({@ApiResponse(code = 400, message = "请求失败", response = ErrorResult.class)})
@GetMapping("week-day-report")
public SuccessResultData<Map<String, Object>> weekDayReport() {
Map<String, Object> 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<Map<String, Object>> departmentReportTotalPass() {
Map<String, Object> result = dutyCountService.departmentReportTotalPass();
return new SuccessResultData<>(result);
}
}

View File

@ -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<List<ListDTO>> listPageListBySelf(ListPage page) {
public SuccessResultList<List<ListSelfDTO>> listPageListBySelf(ListPage page) {
Map<String, Object> params = requestParams();
page.setParams(params);
return reportSummary88Service.listPageListBySelf(page);

View File

@ -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项考核指标上报汇总列表接口")

View File

@ -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项考核指标上报汇总列表接口")

View File

@ -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 {

View File

@ -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<RoleSimpleDTO> 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;
}
}

View File

@ -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 {

View File

@ -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 {

View File

@ -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");

View File

@ -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")

View File

@ -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<String, Object> params) throws SearchException;
/**
* 指标上报TOP10
*
* @return
* @throws SearchException
*/
List<ReportListCountDTO> listReportListTop10() throws SearchException;
/**
* 部门 上报量/通过量 排名
*
* @return
* @throws SearchException
*/
List<ReportDepartmentCountDTO> listDepartmentReportTotal() throws SearchException;
/**
* 部门 通过量 排名
*
* @return
* @throws SearchException
*/
List<ReportDepartmentCountDTO> listDepartmentReportPassTotal() throws SearchException;
}

View File

@ -47,12 +47,12 @@ public interface IReportSummary88Dao {
void delete(Map<String, Object> params) throws RemoveException;
/**
* 修改88项考核指标上报汇总
* 修改88项考核指标上报审核
*
* @param params
* @throws UpdateException
*/
void update(Map<String, Object> params) throws UpdateException;
void updateExamine(Map<String, Object> params) throws UpdateException;
/**
* 88项考核指标上报汇总详情

View File

@ -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;
}
}

View File

@ -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;
}
}

View File

@ -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;
}
}

View File

@ -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;
}
}

View File

@ -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;
}
}

View File

@ -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<ReportListCountDTO> listReportListTop10();
/**
* 本周每日上报量
*
* @return
*/
Map<String, Object> weekDayReport();
/**
* 部门 上报量/通过量 排名
*
* @return
*/
Map<String, Object> departmentReportTotalPass();
}

View File

@ -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<String, Object> params = getHashMap(2);
return reportContent88Service.count(params);
}
@Override
public Integer countYearReport() {
Map<String, Object> params = getHashMap(2);
params.put("year", DateUtil.getYear());
return reportContent88Service.count(params);
}
@Override
public Integer countMonthReport() {
Map<String, Object> params = getHashMap(2);
params.put("yearMonth", DateUtil.getSdfYearMonth());
return reportContent88Service.count(params);
}
@Override
public Integer countWeekReport() {
Map<String, Object> 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<ReportListCountDTO> listReportListTop10() {
return reportContent88Service.listReportListTop10();
}
@Override
public Map<String, Object> weekDayReport() {
DateTime now = DateTime.now();
Map<String, Object> params = getHashMap(2);
List<String> xData = new ArrayList<>();
List<Integer> 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<String, Object> result = getHashMap(4);
result.put("xData", xData);
result.put("yData", yData);
return result;
}
@Override
public Map<String, Object> departmentReportTotalPass() {
List<ReportDepartmentCountDTO> reportDepartmentCountDTOs = reportContent88Service.listDepartmentReportTotal();
setReportDepartments(reportDepartmentCountDTOs);
List<ReportDepartmentCountDTO> reportDepartmentPassCountDTOs = reportContent88Service.listDepartmentReportPassTotal();
List<String> xData = new ArrayList<>();
List<Integer> yData1 = new ArrayList<>();
List<Integer> 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<String, Object> result = getHashMap(4);
result.put("xData", xData);
result.put("yData1", yData1);
result.put("yData2", yData2);
return result;
}
/**
* 设置部门
*
* @param reportDepartmentCountDTOs
*/
private void setReportDepartments(List<ReportDepartmentCountDTO> reportDepartmentCountDTOs) {
if (reportDepartmentCountDTOs.isEmpty()) {
return;
}
List<String> departmentIds = ArrayListUtil.listBeanStringIdValue(reportDepartmentCountDTOs, "reportDepartmentId", ReportDepartmentCountDTO.class);
List<DepartmentPO> departmentPOs = departmentBaseService.listPO(departmentIds);
reportDepartmentCountDTOs.forEach(reportDepartmentCountDTO -> {
for (DepartmentPO departmentPO : departmentPOs) {
if (StringUtils.equals(reportDepartmentCountDTO.getReportDepartmentId(), departmentPO.getDepartmentId())) {
reportDepartmentCountDTO.setReportDepartmentName(departmentPO.getDepartmentName());
break;
}
}
});
}
}

View File

@ -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<List<ReportContent88DTO>> listPageByListIdAndDepartmentId(String listId, String departmentId, ListPage page);
/**
* 指标上报TOP10
*
* @return
*/
List<ReportListCountDTO> listReportListTop10();
/**
* 部门 上报量 排名
*
* @return
*/
List<ReportDepartmentCountDTO> listDepartmentReportTotal();
/**
* 部门 通过量 排名
*
* @return
*/
List<ReportDepartmentCountDTO> listDepartmentReportPassTotal();
}

View File

@ -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<ReportListCountDTO> listReportListTop10() {
return reportContent88Dao.listReportListTop10();
}
@Override
public List<ReportDepartmentCountDTO> listDepartmentReportTotal() {
return reportContent88Dao.listDepartmentReportTotal();
}
@Override
public List<ReportDepartmentCountDTO> listDepartmentReportPassTotal() {
return reportContent88Dao.listDepartmentReportPassTotal();
}
/**
* 是否有审核过的上报内容
*

View File

@ -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<String> 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<List<ListDTO>> listPageListBySelf(ListPage page);
SuccessResultList<List<ListSelfDTO>> listPageListBySelf(ListPage page);
/**
* 上报汇总详情
@ -211,4 +201,5 @@ public interface IReportSummary88Service {
* @return
*/
SuccessResultList<List<ReportSummary88DTO>> listPageExamine(ListPage page);
}

View File

@ -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<String> ids) {
Map<String, Object> 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<String> ids) {
Map<String, Object> 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<String, Object> 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<String, Object> 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<String, Object> 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<String, Object> 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<String, Object> 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<List<ListDTO>> listPageListBySelf(ListPage page) {
public SuccessResultList<List<ListSelfDTO>> listPageListBySelf(ListPage page) {
List<DepartmentSimpleDTO> 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<List<ListDTO>> listDTOSuccessResultList = listService.listPageByListIds(listIds, page);
List<ListDTO> listDTOs = listDTOSuccessResultList.getRows();
if (listDTOs.isEmpty()) {
return new SuccessResultList<>(new ArrayList<>(), 1, 0L);
}
// 查询上报汇总记录
listIds = ArrayListUtil.listBeanStringIdValue(listDTOs, "listId", ListDTO.class);
List<ReportSummary88PO> reportSummary88POs = listPOByListIdsAndDepartmentIds(listIds, departmentIds);
List<ListSelfDTO> 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<ReportSummary88PO> listPOByListIdsAndDepartmentIds(List<String> listIds, List<String> departmentIds) {
Map<String, Object> params = getHashMap(4);
params.put("listIds", listIds);
params.put("reportDepartmentIds", departmentIds);
return listPO(params);
}
@Override

View File

@ -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
cn.com.tenlion: debug
system-role:
examiner: 674f930d-5b40-46fe-befa-6127ca556b97
reporter: f085a0bf-ee57-42f4-bfbb-bc06ce480ffc

View File

@ -58,6 +58,17 @@
<result column="is_delete" property="isDelete"/>
</resultMap>
<resultMap id="reportListCountDTO" type="cn.com.tenlion.systemduty.pojo.dtos.reportcontent88.ReportListCountDTO">
<result column="list_id" property="listId"/>
<result column="list_summary" property="listSummary"/>
<result column="report_count" property="reportCount"/>
</resultMap>
<resultMap id="reportDepartmentCountDTO" type="cn.com.tenlion.systemduty.pojo.dtos.reportcontent88.ReportDepartmentCountDTO">
<result column="report_department_id" property="reportDepartmentId"/>
<result column="report_count" property="reportCount"/>
</resultMap>
<!-- 新增88项责任上报详情 -->
<insert id="save" parameterType="map">
INSERT INTO duty_report_content88(
@ -421,6 +432,84 @@
#{reportIds[${index}]}
</foreach>
</if>
<if test="year != null and year != ''">
AND
LEFT(t1.gmt_create, 4) = #{year}
</if>
<if test="yearMonth != null and yearMonth != ''">
AND
LEFT(t1.gmt_create, 7) = #{yearMonth}
</if>
<if test="day != null and day != ''">
AND
LEFT(t1.gmt_create, 10) = #{day}
</if>
<if test="startDay != null and startDay != '' and endDay != '' and endDay != ''">
AND
LEFT(t1.gmt_create, 10) BETWEEN #{startDay} AND #{endDay}
</if>
</select>
<!-- 指标上报TOP10 -->
<select id="listReportListTop10" resultMap="reportListCountDTO">
SELECT
*
FROM (
SELECT
t1.list_id,
jt1.list_summary,
count(t1.list_id) report_count
FROM
duty_report_content88 t1
INNER JOIN
duty_list jt1
ON
t1.list_id = jt1.list_id
AND
jt1.is_delete = 0
WHERE
t1.is_delete = 0
GROUP BY
t1.list_id,
jt1.list_summary
) tmp1
ORDER BY
report_count DESC
LIMIT 0, 10
</select>
<!-- 部门 通过量 排名 -->
<select id="listDepartmentReportTotal" resultMap="reportDepartmentCountDTO">
SELECT
*
FROM (
SELECT
report_department_id,
count(report_department_id) report_count
FROM
duty_report_content88
WHERE
is_delete = 0
GROUP BY
report_department_id
) tmp1
ORDER BY
report_count
</select>
<!-- 部门 通过量 -->
<select id="listDepartmentReportPassTotal" resultMap="reportDepartmentCountDTO">
SELECT
report_department_id,
count(report_department_id) report_count
FROM
duty_report_content88
WHERE
is_delete = 0
AND
examine_status = 1
GROUP BY
report_department_id
</select>
</mapper>

View File

@ -115,28 +115,16 @@
</if>
</update>
<!-- 修改88项考核指标上报汇总 -->
<update id="update" parameterType="map">
<!-- 修改88项考核指标上报汇总审核 -->
<update id="updateExamine" parameterType="map">
UPDATE
duty_report_summary88
SET
<if test="reportProcess != null">
report_process = #{reportProcess},
</if>
<if test="isComplete != null">
is_complete = #{isComplete},
</if>
<if test="reportScore != null">
report_score = #{reportScore},
</if>
<if test="examineUserId != null and examineUserId != ''">
examine_user_id = #{examineUserId},
</if>
<if test="examineTime != null and examineTime != ''">
examine_time = #{examineTime},
</if>
gmt_modified = #{gmtModified},
modifier = #{modifier}
examine_time = #{examineTime}
WHERE
report_summary_id = #{reportSummaryId}
</update>
@ -352,6 +340,20 @@
AND
LEFT(t1.gmt_create, 10) <![CDATA[ <= ]]> #{endTime}
</if>
<if test="listIds != null and listIds.size > 0">
AND
t1.list_id IN
<foreach collection="listIds" index="index" open="(" separator="," close=")">
#{listIds[${index}]}
</foreach>
</if>
<if test="reportDepartmentIds != null and reportDepartmentIds.size > 0">
AND
t1.report_department_id IN
<foreach collection="reportDepartmentIds" index="index" open="(" separator="," close=")">
#{reportDepartmentIds[${index}]}
</foreach>
</if>
</select>
<!-- 88项考核指标上报汇总统计 -->

View File

@ -0,0 +1,290 @@
<!doctype html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<base th:href="${#request.getContextPath() + '/'}">
<meta charset="utf-8">
<meta name="renderer" content="webkit">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=0">
<link rel="stylesheet" href="assets/fonts/font-awesome/css/font-awesome.css"/>
<link rel="stylesheet" type="text/css" href="assets/js/vendor/viewer/viewer.min.css">
<link rel="stylesheet" href="assets/layuiadmin/layui/css/layui.css" media="all">
<link rel="stylesheet" href="assets/layuiadmin/style/admin.css" media="all">
</head>
<body>
<div id="app" class="layui-fluid layui-anim layui-anim-fadein" v-cloak>
<div class="layui-row layui-col-space15">
<div class="layui-col-xs3">
<div class="layui-card">
<div class="layui-card-header">
总上报量
</div>
<div class="layui-card-body layuiadmin-card-list">
<p id="totalReportCount" class="layuiadmin-big-font">0</p>
</div>
</div>
</div>
<div class="layui-col-xs3">
<div class="layui-card">
<div class="layui-card-header">
年度上报量
</div>
<div class="layui-card-body layuiadmin-card-list">
<p id="yearReportCount" class="layuiadmin-big-font">0</p>
</div>
</div>
</div>
<div class="layui-col-xs3">
<div class="layui-card">
<div class="layui-card-header">
本月上报量
</div>
<div class="layui-card-body layuiadmin-card-list">
<p id="monthReportCount" class="layuiadmin-big-font">0</p>
</div>
</div>
</div>
<div class="layui-col-xs3">
<div class="layui-card">
<div class="layui-card-header">
本周上报量
</div>
<div class="layui-card-body layuiadmin-card-list">
<p id="weekReportCount" class="layuiadmin-big-font">0</p>
</div>
</div>
</div>
</div>
<div class="layui-row layui-col-space15">
<div class="layui-col-xs6">
<div class="layui-card">
<div class="layui-card-header">
本周热门指标上报TOP10
</div>
<div class="layui-card-body">
<table lay-filter="reportListTop10Table">
<thead>
<tr>
<th lay-data="{field:'index', width: '15%', align: 'center'}">排名</th>
<th lay-data="{field:'listSummary', width: '65%', align: 'center'}">清单详情</th>
<th lay-data="{field:'reportCount', width: '20%', align: 'center'}">数量</th>
</tr>
</thead>
<tbody>
<tr v-for="(top10,index) in listReportListTop10">
<td>{{index + 1}}</td>
<td>{{top10.listSummary}}</td>
<td>{{top10.reportCount}}</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="layui-col-xs6">
<div class="layui-card">
<div class="layui-card-header">
本周每日上报量
</div>
<div class="layui-card-body">
<div id="weekDayReport" style="width: 100%; height: 200px;"></div>
</div>
</div>
</div>
</div>
<div class="layui-row layui-col-space15">
<div class="layui-col-xs12">
<div class="layui-card">
<div class="layui-card-header">
部门 上报量/通过量 排名
</div>
<div class="layui-card-body">
<div id="departmentReportTotalPass" style="width: 100%; height: 300px;"></div>
</div>
</div>
</div>
</div>
</div>
<script src="assets/js/vue.min.js"></script>
<script src="assets/layuiadmin/layui/layui.js"></script>
<script>
layui.config({
base: 'assets/layuiadmin/'
}).extend({
index: 'lib/index'
}).use(['index', 'table', 'common', 'animate-numbers', 'echarts'], function() {
var $ = layui.$;
var table = layui.table;
new Vue({
el: '#app',
data: {
totalReportCount: 0,
yearReportCount: 0,
monthReportCount: 0,
weekReportCount: 0,
listReportListTop10: [],
echartsConfig: {
grid: {
z: 0,
left: 40,
top: 30,
right: 10,
bottom: 20,
},
tooltip: {
trigger: 'axis',
axisPointer: {
type: 'cross'
}
},
}
},
methods: {
countTotalReport: function() {
var self = this;
top.restAjax.get(top.restAjax.path('api/duty-count/count-total-report', []), {}, null, function(code, data) {
self.totalReportCount = data.data;
self.$nextTick(function() {
$('#totalReportCount').animateNumbers(self.totalReportCount);
});
}, function(code, data) {
top.dialog.msg(data.msg);
});
},
countYearReport: function() {
var self = this;
top.restAjax.get(top.restAjax.path('api/duty-count/count-year-report', []), {}, null, function(code, data) {
self.yearReportCount = data.data;
self.$nextTick(function() {
$('#yearReportCount').animateNumbers(self.yearReportCount);
});
}, function(code, data) {
top.dialog.msg(data.msg);
});
},
countMonthReport: function() {
var self = this;
top.restAjax.get(top.restAjax.path('api/duty-count/count-month-report', []), {}, null, function(code, data) {
self.monthReportCount = data.data;
self.$nextTick(function() {
$('#monthReportCount').animateNumbers(self.monthReportCount);
});
}, function(code, data) {
top.dialog.msg(data.msg);
});
},
countWeekReport: function() {
var self = this;
top.restAjax.get(top.restAjax.path('api/duty-count/count-week-report', []), {}, null, function(code, data) {
self.weekReportCount = data.data;
self.$nextTick(function() {
$('#weekReportCount').animateNumbers(self.weekReportCount);
});
}, function(code, data) {
top.dialog.msg(data.msg);
});
},
reportListTop10: function() {
var self = this;
top.restAjax.get(top.restAjax.path('api/duty-count/list-report-list-top10', []), {}, null, function(code, data) {
self.listReportListTop10 = data;
self.$nextTick(function() {
table.init('reportListTop10Table', {
height: 200,
limit: 10
});
})
}, function(code, data) {
top.dialog.msg(data.msg);
});
},
weekDayReport: function() {
var self = this;
top.restAjax.get(top.restAjax.path('api/duty-count/week-day-report', []), {}, null, function(code, data) {
var weekDayReport = echarts.init(document.getElementById('weekDayReport'));
weekDayReport.setOption({
grid: [self.echartsConfig.grid],
tooltip: self.echartsConfig.tooltip,
legend: {
right: 0,
data: ['上报量']
},
xAxis: {
type: 'category',
data: data.data.xData
},
yAxis: {
type: 'value'
},
series: [
{
data: data.data.yData,
name: '上报量',
type: 'line',
smooth: true
}
]
});
}, function(code, data) {
top.dialog.msg(data.msg);
});
},
departmentReportTotalPass: function() {
var self = this;
top.restAjax.get(top.restAjax.path('api/duty-count/department-report-total-pass', []), {}, null, function(code, data) {
var departmentReportTotalPass = echarts.init(document.getElementById('departmentReportTotalPass'));
departmentReportTotalPass.setOption({
grid: [self.echartsConfig.grid],
tooltip: self.echartsConfig.tooltip,
legend: {
right: 0,
data: ['上报量', '通过量']
},
xAxis: {
type: 'category',
data: data.data.xData
},
yAxis: {
type: 'value'
},
series: [
{
data: data.data.yData1,
name: '上报量',
type: 'bar',
showBackground: true,
backgroundStyle: {
color: 'rgba(180, 180, 180, 0.2)'
}
},
{
data: data.data.yData2,
name: '通过量',
type: 'bar',
showBackground: true,
backgroundStyle: {
color: 'rgba(180, 180, 180, 0.2)'
}
}
]
});
}, function(code, data) {
top.dialog.msg(data.msg);
});
}
},
mounted: function() {
var self = this;
self.countTotalReport();
self.countYearReport();
self.countMonthReport();
self.countWeekReport();
self.reportListTop10();
self.weekDayReport();
self.departmentReportTotalPass();
}
})
});
</script>
</body>
</html>

View File

@ -0,0 +1,32 @@
<!doctype html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<base th:href="${#request.getContextPath() + '/'}">
<meta charset="utf-8">
<meta name="renderer" content="webkit">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=0">
<link rel="stylesheet" href="assets/fonts/font-awesome/css/font-awesome.css"/>
<link rel="stylesheet" type="text/css" href="assets/js/vendor/viewer/viewer.min.css">
<link rel="stylesheet" href="assets/layuiadmin/layui/css/layui.css" media="all">
<link rel="stylesheet" href="assets/layuiadmin/style/admin.css" media="all">
</head>
<body>
<div class="layui-fluid layui-anim layui-anim-fadein" style="padding: 0;">
<h1>examine</h1>
</div>
<script src="assets/js/vue.min.js"></script>
<script src="assets/layuiadmin/layui/layui.js"></script>
<script>
layui.config({
base: 'assets/layuiadmin/'
}).extend({
index: 'lib/index'
}).use(['index', 'table', 'common'], function() {
var $ = layui.$;
var $win = $(window);
});
</script>
</body>
</html>

View File

@ -0,0 +1,32 @@
<!doctype html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<base th:href="${#request.getContextPath() + '/'}">
<meta charset="utf-8">
<meta name="renderer" content="webkit">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=0">
<link rel="stylesheet" href="assets/fonts/font-awesome/css/font-awesome.css"/>
<link rel="stylesheet" type="text/css" href="assets/js/vendor/viewer/viewer.min.css">
<link rel="stylesheet" href="assets/layuiadmin/layui/css/layui.css" media="all">
<link rel="stylesheet" href="assets/layuiadmin/style/admin.css" media="all">
</head>
<body>
<div class="layui-fluid layui-anim layui-anim-fadein" style="padding: 0;">
<h1>report</h1>
</div>
<script src="assets/js/vue.min.js"></script>
<script src="assets/layuiadmin/layui/layui.js"></script>
<script>
layui.config({
base: 'assets/layuiadmin/'
}).extend({
index: 'lib/index'
}).use(['index', 'table', 'common'], function() {
var $ = layui.$;
var $win = $(window);
});
</script>
</body>
</html>

View File

@ -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 == '') {

View File

@ -0,0 +1,202 @@
<!doctype html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<base th:href="${#request.getContextPath() + '/'}">
<meta charset="utf-8">
<meta name="renderer" content="webkit">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=0">
<link rel="stylesheet" href="assets/fonts/font-awesome/css/font-awesome.css"/>
<link rel="stylesheet" href="assets/layuiadmin/layui/css/layui.css" media="all">
<link rel="stylesheet" href="assets/layuiadmin/style/admin.css" media="all">
</head>
<body>
<div class="layui-anim layui-anim-fadein">
<div class="layui-row">
<div class="layui-col-md12">
<div class="layui-card">
<div class="layui-card-body">
<div class="test-table-reload-btn" style="margin-bottom: 10px;">
<div class="layui-inline">
<input type="text" id="keywords" class="layui-input search-item" placeholder="输入上报标题">
</div>
<button type="button" id="search" class="layui-btn layui-btn-sm">
<i class="fa fa-lg fa-search"></i> 搜索
</button>
</div>
<table class="layui-hide" id="dataTable" lay-filter="dataTable"></table>
</div>
</div>
</div>
</div>
</div>
<script src="assets/layuiadmin/layui/layui.js"></script>
<script src="assets/js/vendor/viewer/viewer.min.js"></script>
<script>
layui.config({
base: 'assets/layuiadmin/'
}).extend({
index: 'lib/index'
}).use(['index', 'table', 'laydate', 'common'], function() {
var $ = layui.$;
var $win = $(window);
var table = layui.table;
var admin = layui.admin;
var laydate = layui.laydate;
var common = layui.common;
var resizeTimeout = null;
var listId = top.restAjax.params(window.location.href).listId;
var tableUrl = 'api/report-content88/listpage/self/list-id/{listId}';
// 初始化表格
function initTable() {
table.render({
elem: '#dataTable',
id: 'dataTable',
url: top.restAjax.path(tableUrl, [listId]),
width: admin.screen() > 1 ? '100%' : '',
height: $win.height() - 60,
limit: 20,
limits: [20, 40, 60, 80, 100, 200],
request: {
pageName: 'page',
limitName: 'rows'
},
cols: [
[
{field:'rowNum', width:80, title: '序号', fixed: 'left', align:'center', templet: '<span>{{d.LAY_INDEX}}</span>'},
{field: 'reportTitle', width: 200, title: '上报标题', align:'center',
templet: function(row) {
var rowData = row[this.field];
if(typeof(rowData) === 'undefined' || rowData == null || rowData == '') {
return '-';
}
return rowData;
}
},
{field: 'examineStatus', width: 100, title: '审核状态', align:'center',
templet: function(row) {
var rowData = row[this.field];
if(!rowData) {
return '<span class="layui-badge layui-bg-blue">未审核</span>';
}
if(rowData === 1) {
return '<span class="layui-badge layui-bg-green">已审核</span>'
}
if(rowData === -1) {
return '<span class="layui-badge">审核失败</span>'
}
return '<span class="layui-badge layui-bg-black">错误</span>';
}
},
{field: 'examineResult', width: 180, 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 == '') {
return '-';
}
return rowData;
}
},
{field: 'examineUserId', width: 100, title: '审核用户', align:'center',
templet: function(row) {
var rowData = row[this.field];
if(typeof(rowData) === 'undefined' || rowData == null || rowData == '') {
return '-';
}
return rowData;
}
},
{field: 'gmtCreate', width: 180, title: '创建时间', align:'center',
templet: function(row) {
var rowData = row[this.field];
if(typeof(rowData) === 'undefined' || rowData == null || rowData == '') {
return '-';
}
return rowData;
}
},
{field: 'option', width: 80, title: '操作', align:'center', fixed: 'right',
templet: function(row) {
return '<button type="button" class="layui-btn layui-btn-xs layui-btn-primary" lay-event="detailEvent">详情</button>';
}
},
]
],
page: true,
parseData: function(data) {
return {
'code': 0,
'msg': '',
'count': data.total,
'data': data.rows
};
}
});
}
// 重载表格
function reloadTable(currentPage) {
table.reload('dataTable', {
where: {
keywords: $('#keywords').val(),
startTime: $('#startTime').val(),
endTime: $('#endTime').val()
},
page: {
curr: currentPage
},
});
}
// 初始化日期
function initDate() {
// 日期选择
laydate.render({
elem: '#startTime',
format: 'yyyy-MM-dd'
});
laydate.render({
elem: '#endTime',
format: 'yyyy-MM-dd'
});
}
initTable();
initDate();
// 事件 - 页面变化
$win.on('resize', function() {
clearTimeout(resizeTimeout);
resizeTimeout = setTimeout(function() {
reloadTable();
}, 500);
});
// 事件 - 搜索
$(document).on('click', '#search', function() {
reloadTable(1);
});
table.on('tool(dataTable)', function(obj) {
var data = obj.data;
var event = obj.event;
if(event === 'detailEvent') {
top.dialog.open({
url: top.restAjax.path('route/report-content88/get-detail?reportId={reportId}', [data.reportId]),
title: '查看详情',
width: '600px',
height: '80%',
onClose: function() {}
});
}
})
});
</script>
</body>
</html>

View File

@ -72,7 +72,7 @@
cols: [
[
{field:'rowNum', width:80, title: '序号', fixed: 'left', align:'center', templet: '<span>{{d.LAY_INDEX}}</span>'},
{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 '<span class="layui-badge">未完成</span>';
}
return rowData;
if(rowData == '1') {
return '<span class="layui-badge layui-bg-green">已完成</span>';
}
return '<span class="layui-badge layui-bg-black">错误</span>';
}
},
{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();
}
});
}
})
});

View File

@ -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 '<span class="layui-badge">未完成</span>';
}
if(rowData == '1') {
return '<span class="layui-badge layui-bg-green">已完成</span>';
}
return '<span class="layui-badge layui-bg-black">错误</span>';
}
},
{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 '<button class="layui-btn layui-btn-xs layui-btn-primary" lay-event="reportHistoryListEvent">记录</button>';
}
return '<button class="layui-btn layui-btn-xs" lay-event="reportEvent">上报</button>';
}
},
@ -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() {}
});
}
})
});

View File

@ -1,170 +0,0 @@
<!doctype html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<base th:href="${#request.getContextPath() + '/'}">
<meta charset="utf-8">
<meta name="renderer" content="webkit">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=0">
<link rel="stylesheet" href="assets/fonts/font-awesome/css/font-awesome.css"/>
<link rel="stylesheet" href="assets/layuiadmin/layui/css/layui.css" media="all">
<link rel="stylesheet" href="assets/layuiadmin/style/admin.css" media="all">
</head>
<body>
<div class="layui-fluid layui-anim layui-anim-fadein">
<div class="layui-card">
<div class="layui-card-header">
<span class="layui-breadcrumb" lay-filter="breadcrumb" style="visibility: visible;">
<a class="close" href="javascript:void(0);">上级列表</a><span lay-separator="">/</span>
<a href="javascript:void(0);"><cite>新增内容</cite></a>
</span>
</div>
<div class="layui-card-body" style="padding: 15px;">
<form class="layui-form layui-form-pane" lay-filter="dataForm">
<div class="layui-form-item">
<label class="layui-form-label">主键</label>
<div class="layui-input-block">
<input type="text" id="reportSummaryId" name="reportSummaryId" class="layui-input" value="" placeholder="请输入主键" maxlength="36">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">上报部门ID</label>
<div class="layui-input-block">
<input type="text" id="reportDepartmentId" name="reportDepartmentId" class="layui-input" value="" placeholder="请输入上报部门ID" maxlength="36">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">上报进度</label>
<div class="layui-input-block">
<input type="number" step="0.01" id="reportProcess" name="reportProcess" class="layui-input" value="" placeholder="请输入上报进度" lay-verify="required">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">目录ID</label>
<div class="layui-input-block">
<input type="text" id="catalogueId" name="catalogueId" class="layui-input" value="" placeholder="请输入目录ID" maxlength="36">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">目录编码</label>
<div class="layui-input-block">
<input type="text" id="catalogueCode" name="catalogueCode" class="layui-input" value="" placeholder="请输入目录编码" maxlength="255">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">清单ID</label>
<div class="layui-input-block">
<input type="text" id="listId" name="listId" class="layui-input" value="" placeholder="请输入清单ID" maxlength="36">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">是否完成</label>
<div class="layui-input-block">
<input type="number" id="isComplete" name="isComplete" class="layui-input" value="0" placeholder="请输入是否完成" lay-verify="required">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">上报得分</label>
<div class="layui-input-block">
<input type="number" step="0.01" id="reportScore" name="reportScore" class="layui-input" value="" placeholder="请输入上报得分" lay-verify="required">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">审核人</label>
<div class="layui-input-block">
<input type="text" id="examineUserId" name="examineUserId" class="layui-input" value="" placeholder="请输入审核人" maxlength="36">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">审核时间</label>
<div class="layui-input-block">
<input type="text" id="examineTime" name="examineTime" class="layui-input" value="" placeholder="请选择审核时间" readonly style="cursor: pointer;" lay-verify="required">
</div>
</div>
<div class="layui-form-item layui-layout-admin">
<div class="layui-input-block">
<div class="layui-footer" style="left: 0;">
<button type="button" class="layui-btn" lay-submit lay-filter="submitForm">提交新增</button>
<button type="button" class="layui-btn layui-btn-primary close">返回上级</button>
</div>
</div>
</div>
</form>
</div>
</div>
</div>
<script src="assets/layuiadmin/layui/layui.js"></script>
<script>
layui.config({
base: 'assets/layuiadmin/' //静态资源所在路径
}).extend({
index: 'lib/index' //主入口模块
}).use(['index', 'form', 'laydate', 'laytpl'], function(){
var $ = layui.$;
var form = layui.form;
var laytpl = layui.laytpl;
var laydate = layui.laydate;
function closeBox() {
parent.layer.close(parent.layer.getFrameIndex(window.name));
}
// 初始化审核时间时间戳
function initExamineTimeDateTime() {
laydate.render({
elem: '#examineTime',
type: 'datetime',
value: new Date(),
trigger: 'click'
});
}
// 初始化内容
function initData() {
initExamineTimeDateTime();
}
initData();
// 提交表单
form.on('submit(submitForm)', function(formData) {
top.dialog.confirm(top.dataMessage.commit, function(index) {
top.dialog.close(index);
var loadLayerIndex;
top.restAjax.post(top.restAjax.path('api/report-summary88/save', []), formData.field, null, function(code, data) {
var layerIndex = top.dialog.msg(top.dataMessage.commitSuccess, {
time: 0,
btn: [top.dataMessage.button.yes, top.dataMessage.button.no],
shade: 0.3,
yes: function(index) {
top.dialog.close(index);
window.location.reload();
},
btn2: function() {
closeBox();
}
});
}, function(code, data) {
top.dialog.msg(data.msg);
}, function() {
loadLayerIndex = top.dialog.msg(top.dataMessage.committing, {icon: 16, time: 0, shade: 0.3});
}, function() {
top.dialog.close(loadLayerIndex);
});
});
return false;
});
$('.close').on('click', function() {
closeBox();
});
// 校验
form.verify({
});
});
</script>
</body>
</html>

View File

@ -0,0 +1,133 @@
<!doctype html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<base th:href="${#request.getContextPath() + '/'}">
<meta charset="utf-8">
<meta name="renderer" content="webkit">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=0">
<link rel="stylesheet" href="assets/fonts/font-awesome/css/font-awesome.css"/>
<link rel="stylesheet" href="assets/layuiadmin/layui/css/layui.css" media="all">
<link rel="stylesheet" href="assets/layuiadmin/style/admin.css" media="all">
</head>
<body>
<div class="layui-anim layui-anim-fadein">
<div class="layui-card">
<div class="layui-card-body" style="padding: 15px;">
<form class="layui-form layui-form-pane" lay-filter="dataForm">
<div class="layui-form-item">
<label class="layui-form-label">上报得分</label>
<div class="layui-input-block">
<input type="number" step="0.01" id="reportScore" name="reportScore" class="layui-input" value="0" placeholder="请输入上报得分" lay-verify="required">
</div>
</div>
<div class="layui-form-item" pane>
<label class="layui-form-label">完成进度</label>
<div class="layui-input-block">
<input type="hidden" id="reportProcess" name="reportProcess" value="0">
<div style="padding: 17px;">
<div id="reportProcessBar"></div>
</div>
</div>
</div>
<div class="layui-form-item layui-layout-admin">
<div class="layui-input-block">
<div class="layui-footer" style="left: 0;">
<button type="button" class="layui-btn" lay-submit lay-filter="submitForm">提交编辑</button>
<button type="button" class="layui-btn layui-btn-primary close">返回上级</button>
</div>
</div>
</div>
</form>
</div>
</div>
</div>
<script src="assets/layuiadmin/layui/layui.js"></script>
<script>
layui.config({
base: 'assets/layuiadmin/' //静态资源所在路径
}).extend({
index: 'lib/index' //主入口模块
}).use(['index', 'form', 'laydate', 'laytpl', 'slider'], function(){
var $ = layui.$;
var form = layui.form;
var laytpl = layui.laytpl;
var laydate = layui.laydate;
var slider = layui.slider;
var reportSummaryId = top.restAjax.params(window.location.href).reportSummaryId;
var sliderObj;
function closeBox() {
parent.layer.close(parent.layer.getFrameIndex(window.name));
}
function initSlider() {
sliderObj = slider.render({
elem: '#reportProcessBar',
change: function(value) {
$('#reportProcess').val(value);
}
});
}
// 初始化内容
function initData() {
var loadLayerIndex;
top.restAjax.get(top.restAjax.path('api/report-summary88/get/{reportSummaryId}', [reportSummaryId]), {}, null, function(code, data) {
form.val('dataForm', {
reportScore: data.reportScore,
reportProcess: data.reportProcess
});
form.render(null, 'dataForm');
sliderObj.setValue(data.reportProcess)
}, function(code, data) {
top.dialog.msg(data.msg);
}, function() {
loadLayerIndex = top.dialog.msg(top.dataMessage.loading, {icon: 16, time: 0, shade: 0.3});
}, function() {
top.dialog.close(loadLayerIndex);
});
}
initSlider();
initData();
// 提交表单
form.on('submit(submitForm)', function(formData) {
top.dialog.confirm('当进度为100时表示该指标该部门已经上报完成无需再继续上报。确定提交吗', function(index) {
top.dialog.close(index);
var loadLayerIndex;
top.restAjax.put(top.restAjax.path('api/report-summary88/update-examine/{reportSummaryId}', [reportSummaryId]), formData.field, null, function(code, data) {
var layerIndex = top.dialog.msg(top.dataMessage.updateSuccess, {
time: 0,
btn: [top.dataMessage.button.yes, top.dataMessage.button.no],
shade: 0.3,
yes: function(index) {
top.dialog.close(index);
window.location.reload();
},
btn2: function() {
closeBox();
}
});
}, function(code, data) {
top.dialog.msg(data.msg);
}, function() {
loadLayerIndex = top.dialog.msg(top.dataMessage.committing, {icon: 16, time: 0, shade: 0.3});
}, function() {
top.dialog.close(loadLayerIndex);
});
});
return false;
});
$('.close').on('click', function() {
closeBox();
});
// 校验
form.verify({
});
});
</script>
</body>
</html>

View File

@ -1,187 +0,0 @@
<!doctype html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<base th:href="${#request.getContextPath() + '/'}">
<meta charset="utf-8">
<meta name="renderer" content="webkit">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=0">
<link rel="stylesheet" href="assets/fonts/font-awesome/css/font-awesome.css"/>
<link rel="stylesheet" href="assets/layuiadmin/layui/css/layui.css" media="all">
<link rel="stylesheet" href="assets/layuiadmin/style/admin.css" media="all">
</head>
<body>
<div class="layui-fluid layui-anim layui-anim-fadein">
<div class="layui-card">
<div class="layui-card-header">
<span class="layui-breadcrumb" lay-filter="breadcrumb" style="visibility: visible;">
<a class="close" href="javascript:void(0);">上级列表</a><span lay-separator="">/</span>
<a href="javascript:void(0);"><cite>编辑内容</cite></a>
</span>
</div>
<div class="layui-card-body" style="padding: 15px;">
<form class="layui-form layui-form-pane" lay-filter="dataForm">
<div class="layui-form-item">
<label class="layui-form-label">主键</label>
<div class="layui-input-block">
<input type="text" id="reportSummaryId" name="reportSummaryId" class="layui-input" value="" placeholder="请输入主键" maxlength="36">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">上报部门ID</label>
<div class="layui-input-block">
<input type="text" id="reportDepartmentId" name="reportDepartmentId" class="layui-input" value="" placeholder="请输入上报部门ID" maxlength="36">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">上报进度</label>
<div class="layui-input-block">
<input type="number" step="0.01" id="reportProcess" name="reportProcess" class="layui-input" value="" placeholder="请输入上报进度" lay-verify="required">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">目录ID</label>
<div class="layui-input-block">
<input type="text" id="catalogueId" name="catalogueId" class="layui-input" value="" placeholder="请输入目录ID" maxlength="36">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">目录编码</label>
<div class="layui-input-block">
<input type="text" id="catalogueCode" name="catalogueCode" class="layui-input" value="" placeholder="请输入目录编码" maxlength="255">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">清单ID</label>
<div class="layui-input-block">
<input type="text" id="listId" name="listId" class="layui-input" value="" placeholder="请输入清单ID" maxlength="36">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">是否完成</label>
<div class="layui-input-block">
<input type="number" id="isComplete" name="isComplete" class="layui-input" value="0" placeholder="请输入是否完成" lay-verify="required">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">上报得分</label>
<div class="layui-input-block">
<input type="number" step="0.01" id="reportScore" name="reportScore" class="layui-input" value="" placeholder="请输入上报得分" lay-verify="required">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">审核人</label>
<div class="layui-input-block">
<input type="text" id="examineUserId" name="examineUserId" class="layui-input" value="" placeholder="请输入审核人" maxlength="36">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">审核时间</label>
<div class="layui-input-block">
<input type="text" id="examineTime" name="examineTime" class="layui-input" value="" placeholder="请选择审核时间" lay-verify="required" readonly style="cursor: pointer;">
</div>
</div>
<div class="layui-form-item layui-layout-admin">
<div class="layui-input-block">
<div class="layui-footer" style="left: 0;">
<button type="button" class="layui-btn" lay-submit lay-filter="submitForm">提交编辑</button>
<button type="button" class="layui-btn layui-btn-primary close">返回上级</button>
</div>
</div>
</div>
</form>
</div>
</div>
</div>
<script src="assets/layuiadmin/layui/layui.js"></script>
<script>
layui.config({
base: 'assets/layuiadmin/' //静态资源所在路径
}).extend({
index: 'lib/index' //主入口模块
}).use(['index', 'form', 'laydate', 'laytpl'], function(){
var $ = layui.$;
var form = layui.form;
var laytpl = layui.laytpl;
var laydate = layui.laydate;
var reportSummary88Id = top.restAjax.params(window.location.href).reportSummary88Id;
function closeBox() {
parent.layer.close(parent.layer.getFrameIndex(window.name));
}
// 初始化审核时间时间戳
function initExamineTimeDateTime() {
laydate.render({
elem: '#examineTime',
type: 'datetime',
value: new Date(),
trigger: 'click'
});
}
// 初始化内容
function initData() {
var loadLayerIndex;
top.restAjax.get(top.restAjax.path('api/report-summary88/get/{reportSummary88Id}', [reportSummary88Id]), {}, null, function(code, data) {
var dataFormData = {};
for(var i in data) {
dataFormData[i] = data[i] +'';
}
form.val('dataForm', dataFormData);
form.render(null, 'dataForm');
initExamineTimeDateTime();
}, function(code, data) {
top.dialog.msg(data.msg);
}, function() {
loadLayerIndex = top.dialog.msg(top.dataMessage.loading, {icon: 16, time: 0, shade: 0.3});
}, function() {
top.dialog.close(loadLayerIndex);
});
}
initData();
// 提交表单
form.on('submit(submitForm)', function(formData) {
top.dialog.confirm(top.dataMessage.commit, function(index) {
top.dialog.close(index);
var loadLayerIndex;
top.restAjax.put(top.restAjax.path('api/report-summary88/update/{reportSummary88Id}', [reportSummary88Id]), formData.field, null, function(code, data) {
var layerIndex = top.dialog.msg(top.dataMessage.updateSuccess, {
time: 0,
btn: [top.dataMessage.button.yes, top.dataMessage.button.no],
shade: 0.3,
yes: function(index) {
top.dialog.close(index);
window.location.reload();
},
btn2: function() {
closeBox();
}
});
}, function(code, data) {
top.dialog.msg(data.msg);
}, function() {
loadLayerIndex = top.dialog.msg(top.dataMessage.committing, {icon: 16, time: 0, shade: 0.3});
}, function() {
top.dialog.close(loadLayerIndex);
});
});
return false;
});
$('.close').on('click', function() {
closeBox();
});
// 校验
form.verify({
});
});
</script>
</body>
</html>