提交 ff1fb80b authored 作者: liupengfei's avatar liupengfei

--no commit message

上级 9c4972c7
package com.zrqx.core.util.http;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import java.util.Map;
import org.apache.commons.lang3.StringUtils;
import org.apache.http.HttpEntity;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.config.RequestConfig;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.ContentType;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import javax.servlet.http.HttpServletRequest;
public class HttpUtils {
private final static Logger log = LoggerFactory.getLogger(HttpUtils.class);
private static String[] IEBrowserSignals = {"MSIE", "Trident", "Edge"};
public static boolean isMSBrowser(HttpServletRequest request) {
......@@ -30,4 +49,53 @@ public class HttpUtils {
}
return new String(fileName.getBytes("UTF-8"), "ISO8859-1");
}
public static String httpURLConnectionPOST (String POST_URL,Map<String, String> urlParam,String body) {
CloseableHttpResponse response = null;
try {
RequestConfig defaultRequestConfig = RequestConfig.custom()
.setSocketTimeout(6000)
.setConnectTimeout(6000)
.setConnectionRequestTimeout(6000)
.build();
CloseableHttpClient httpclient = HttpClients.custom().setDefaultRequestConfig(defaultRequestConfig).build();
// HttpPost httpPost = new HttpPost(POST_URL);
StringBuilder param=new StringBuilder("");
//将要拼接的参数urlencode
for (String key:urlParam.keySet()){
param.append(key + "=" + URLEncoder.encode(urlParam.get(key), "UTF-8") + "&");
}
//pingjie
HttpPost httpPost = new HttpPost(POST_URL+param.toString());
//请求参数设置
if(StringUtils.isNotEmpty(body)){
StringEntity entity=new StringEntity(body, ContentType.APPLICATION_JSON);
httpPost.setEntity(entity);
}
response = httpclient.execute(httpPost);
HttpEntity entity = response.getEntity();
return EntityUtils.toString(entity, "UTF-8");
} catch (UnsupportedEncodingException e) {
log.error(e.getMessage(), e);
} catch (ClientProtocolException e) {
log.error(e.getMessage(), e);
} catch (IOException e) {
log.error(e.getMessage(), e);
} catch (Exception e){
System.out.println(e);
}finally {
if (response != null) {
try {
response.close();
} catch (IOException e) {
log.error(e.getMessage(), e);
}
}
}
return null;
}
}
\ No newline at end of file
package com.zrqx.statistics;
import java.util.HashMap;
public enum ProjectManagementStatusEnum {
/** 售前<br> 售前 */
PRESALE("preSale","售前"),
/** 需求调研<br> 需求调研 */
DEMAND("demand","需求调研"),
/** 设计<br> 设计*/
DESIGN("design","设计"),
/** 开发<br> 开发 */
DEVELOP("develop","开发"),
/** 测试优化<br> 测试优化 */
TEST("test","测试优化"),
/** 试运行<br> 试运行 */
TESTRUN("testRun","试运行"),
/** 需求变更<br> 需求变更 */
DEMANDCHANGE("demandChange","需求变更");
private final String code;
private final String name;
private ProjectManagementStatusEnum(String code,String name){
this.code=code;
this.name=name;
}
/**
* 通过ID获取中文名称
* @param code
* @return
*/
public static String getName(String code) {
for (ProjectManagementStatusEnum mt : values()) {
if (code.equals(mt.getCode())) {
return mt.getName();
}
}
return code;
}
/**
* 获取所有的枚举,以MAP返回
* @return
*/
public static HashMap<String,String> getAllEnumMap() {
HashMap<String,String> map = new HashMap<String,String>();
for (ProjectManagementStatusEnum mt : values()) {
map.put(mt.getCode(), mt.getName());
}
return map;
}
public String getCode() {
return code;
}
public String getName() {
return name;
}
}
package com.zrqx.statistics;
import java.util.HashMap;
/** wait、suspended、doing、closed */
public enum ProjectStatusEnum {
/** 待审核<br> 待审核 */
WAIT("wait","待审核"),
/** 开发完成<br> 开发完成 */
SUSPENDED("suspended","开发完成"),
/** 已关闭<br> 已关闭*/
CLOSED("closed","已关闭"),
/** 进行中<br> 进行中 */
DOING("doing","进行中");
private final String code;
private final String name;
private ProjectStatusEnum(String code,String name){
this.code=code;
this.name=name;
}
/**
* 通过ID获取中文名称
* @param code
* @return
*/
public static String getName(String code) {
for (ProjectStatusEnum mt : values()) {
if (code.equals(mt.getCode())) {
return mt.getName();
}
}
return code;
}
/**
* 获取所有的枚举,以MAP返回
* @return
*/
public static HashMap<String,String> getAllEnumMap() {
HashMap<String,String> map = new HashMap<String,String>();
for (ProjectStatusEnum mt : values()) {
map.put(mt.getCode(), mt.getName());
}
return map;
}
public String getCode() {
return code;
}
public String getName() {
return name;
}
}
package com.zrqx.statistics;
import tk.mybatis.spring.annotation.MapperScan;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
......@@ -8,9 +11,12 @@ import org.springframework.boot.autoconfigure.SpringBootApplication;
@MapperScan(basePackages = {"com.zrqx.statistics.mapper"})
public class Start {
private final static Logger logger = LoggerFactory.getLogger(Start.class);
public static void main(String[] args) {
// TODO Auto-generated method stub
SpringApplication.run(Start.class, args);
logger.info("服务已启动.....");
}
}
package com.zrqx.statistics.config;
import lombok.Data;
/**
* @author chyj
* @date 2019年12月13日下午2:19:55
*/
@Data
public class MicroRoarConfig {
/** 访问地址 */
public final static String CREATE_URL = "http://e.vhall.com/api/vhallapi/v2/webinar/create?";
public final static String UPDATE_URL = "http://e.vhall.com/api/vhallapi/v2/webinar/update?";
public final static String DELETE_URL = "http://e.vhall.com/api/vhallapi/v2/webinar/delete?";
/** 查询直播状态 */
public final static String STATUS_URL = "http://e.vhall.com/api/vhallapi/v2/webinar/state?";
/** 发起直播URL */
public final static String START_URL = "http://e.vhall.com/api/vhallapi/v2/webinar/start?";
/** 直播详情 */
public final static String INFO_URL = "http://e.vhall.com/api/vhallapi/v2/webinar/fetch?";
/** 直播封面 */
public final static String IMAGE_URL = "http://e.vhall.com/api/vhallapi/v2/webinar/activeimage?auth_type=1&account=s48763300&password=778899&webinar_id=";
/** 上传文件 */
public final static String FILE_URL = "http://e.vhall.com/api/vhallapi/v2/webinar/doc?auth_type=1&account=s48763300&password=778899&webinar_id=";
/** 并发 */
public final static String CONCURRENT_URL = "http://e.vhall.com/api/vhallapi/v2/webinar/online-top-number?";
/** 观看数据 */
public final static String VIEWING_DATA_URL = "http://e.vhall.com/api/vhallapi/v2/webinar/report?";
/** 观众观看详情 */
public final static String TOTAL_INFO_URL = "http://e.vhall.com/api/vhallapi/v2/report/track?";
/** 并发图 */
public final static String TOP_CONCURRENT_URL = "http://e.vhall.com/api/vhallapi/v2/report/online?";
/** 最近一次直播开始结束时间 */
public final static String LAST_LIVE_TIME = "http://e.vhall.com/api/vhallapi/v2/webinar/last-option-time?";
/** 设置跑马灯 */
public final static String UPDATE_MARQUEE = "http://e.vhall.com/api/vhallapi/v2/webinar/set-player-text?";
/** 设置水印 */
public final static String UPDATE_WATERMARK = "http://e.vhall.com/api/vhallapi/v2/webinar/set-player-watermark?auth_type=1&account=s48763300&password=778899&";
/** 设置回调地址 */
public final static String SET_EVENT = "http://e.vhall.com/api/vhallapi/v2/callback/set-event?";
/** 获取播放器设置 */
public final static String GET_PLAYER_CONFIG = "http://e.vhall.com/api/vhallapi/v2/webinar/get-player-config?";
// 回放
/** 生成回放 */
public final static String BACK_CREATE = "http://e.vhall.com/api/vhallapi/v2/record/create?";
/** 裁剪回放 */
public final static String TAILOR_VIEW = "http://domain/api/vhallapi/v2/record/cut?";
/** 回放列表 */
public final static String BACK_PAGE = "http://e.vhall.com/api/vhallapi/v2/record/list?";
/** 授权类型 */
public final static String AUTH_TYPE = "1";
/** 账号 */
public final static String ACCOUNT = "s48763300";
/** 密码 */
public final static String PASSWORD = "778899";
public final static String APP_KEY ="d7de36992cf0e88c24a6697d5753bb8b";
public final static String SECRECT_KEY ="10b49e734b861bbf2cf0dfd17ee4d6e0";
}
package com.zrqx.statistics.controller;
import lombok.Data;
/**
* 总完成工时预计统计分页form
* @author chyj
* @date 2019年11月5日下午5:48:41
*/
@Data
public class CompleteQueryForm {
private String name;
private String startTime;
private String endTime;
private String deptName;
private String account;
}
package com.zrqx.statistics.controller;
import java.io.File;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;
import com.zrqx.core.exception.BaseException;
import com.zrqx.core.model.FileInfo;
import com.zrqx.core.util.download.DownloadUtil;
import com.zrqx.statistics.entity.TimeApply;
import com.zrqx.statistics.service.FileService;
import com.zrqx.statistics.service.TimeApplyChangeService;
@Controller
@RequestMapping(value = "/file")
public class FileController {
@Value("${file-root-path}")
private String rootPath;
@Autowired
private FileService service;
@Autowired
private TimeApplyChangeService tacService;
// 处理文件上传
@PostMapping("/upload")
@ResponseBody
public String uploadImg(@RequestParam("file") MultipartFile file, HttpServletRequest request) throws Exception {
FileInfo entity = service.uploadFile(file);
if(!service.insert(entity)){
throw new BaseException("上传失败!");
}
return entity.getFileName();
}
@GetMapping("/chakan")
@ResponseBody
public String downLoad(Integer id, HttpServletRequest request, HttpServletResponse response)
throws Exception {
// 查PDF的唯一标识
TimeApply timeApply = tacService.selectByPrimaryKey(id);
String fileName = timeApply.getPdfLable();
boolean isOnLine = false;
String filePath = "";
String uuid = fileName;
String epubFilePath="";
File realFile;
if (StringUtils.isBlank(fileName)) {
throw new RuntimeException("文件名称不能为空!");
}
if (fileName.indexOf(".") != -1) {
filePath = rootPath + fileName;
} else {
FileInfo entity = new FileInfo();
entity.setFileName(fileName);
entity = service.selectOne(entity);
if (entity == null) {
throw new RuntimeException("没有找到该文件!");
}
fileName = entity.getOriginalFileName();
filePath = entity.getPath() + "/" + entity.getFileName() + entity.getSuffixName();
epubFilePath =rootPath + entity.getPath() + "/" + entity.getOriginalFileName();
}
// File f = new File(filePath);
// realFile=f;
// if (!f.exists()) {
// File ef = new File(epubFilePath);
// realFile=ef;
// if(!ef.exists()) {
// throw new RuntimeException("没有找到该文件!");
// }
// }
// response.reset(); // 非常重要
// if (isOnLine) { // 在线打开方式
// DownloadUtil.startOpen(response, realFile);
// } else { // 纯下载方式
// DownloadUtil.start(response, realFile, fileName);
// }
return filePath;
}
}
package com.zrqx.statistics.controller;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.zrqx.core.exception.BaseException;
import com.zrqx.core.util.http.HttpUtils;
import com.zrqx.statistics.entity.Live;
import com.zrqx.statistics.form.CallbackEventForm;
import com.zrqx.statistics.form.SetEventForm;
import com.zrqx.statistics.service.LiveService;
import com.zrqx.statistics.vo.MicroRoarReturn;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import tk.mybatis.mapper.entity.Example;
@Controller
@Api(description = "直播")
public class LiveController {
private final static Logger log = LoggerFactory.getLogger(LiveController.class);
@Autowired
private LiveService liveService;
@ApiOperation("设置回调地址")
@PostMapping("/set/event")
public String setEvent(SetEventForm form) {
form.setType(1);
form.setCallback_event("1");
MicroRoarReturn microRoarReturn = liveService.setEvent(form);
if(!"200".equals(microRoarReturn.getCode())) {
throw new BaseException(microRoarReturn.getMsg());
}
return "redirect:/";
}
@ApiOperation("回调修改直播状态")
@PostMapping("/liveStatus")
public MicroRoarReturn LiveStatus(@RequestBody CallbackEventForm form) {
log.info("回调开始 form"+form);
MicroRoarReturn microRoarReturn = null;
Map<String, String> map = new HashMap<String, String>();
List<Live>liveList = liveService.selectAll();
for (Live l : liveList) {
String resp = "";
try {
String param = JSONObject.toJSONString(form);
resp = HttpUtils.httpURLConnectionPOST(l.getUrl(), map, param);
System.out.println(resp);
log.info("resp------------------------------------------------------"+resp);
log.info(resp);
} catch (Exception e) {
e.printStackTrace();
}
microRoarReturn = JSON.toJavaObject(JSONObject.parseObject(resp), MicroRoarReturn.class);
}
log.info("microRoarReturn-------------------------------"+microRoarReturn);
return microRoarReturn;
}
@ApiOperation("添加回调地址")
@PostMapping("/save")
public String save(Live live,Model model) {
Example example = new Example(Live.class);
example.createCriteria().andEqualTo("userId", live.getUserId());
Live l = liveService.selectOneByExample(example);
if(l != null) {
throw new BaseException("第三方用户id已存在");
}
live.setCreateTime(new Date());
liveService.insert(live);
return "redirect:/";
}
@ApiOperation("添加项目")
@GetMapping("/addProject")
public String add() {
return "addProject";
}
@ApiOperation("添加/修改回调地址页面")
@GetMapping("/addUrl")
public String addUrl() {
return "addUrl";
}
@ApiOperation("修改回调地址")
@PostMapping("/update")
public Boolean update(Live live) {
Example example = new Example(Live.class);
example.createCriteria().andEqualTo("userId", live.getUserId());
Live l = liveService.selectOneByExample(example);
if(l != null && !l.getUserId().equals(live.getUserId())) {
throw new BaseException("第三方用户id已存在");
}
live.setCreateTime(new Date());
return liveService.updateByPrimaryKeySelective(live);
}
@ApiOperation("查询回调地址")
@GetMapping("/get")
public String getInfo(Integer id,Model model) {
model.addAttribute("info", liveService.selectByPrimaryKey(id));
return "info";
}
@ApiOperation("分页查询回调地址")
@GetMapping("/")
public String page(Model model) {
model.addAttribute("list", liveService.selectAll());
return "index";
}
@ApiOperation("删除项目")
@PostMapping(value="/delete")
public String delete(@RequestBody Live live,Model model) {
liveService.deleteByPrimaryKey(live.getId());
return "redirect:/";
}
}
package com.zrqx.statistics.controller;
import java.util.DoubleSummaryStatistics;
import java.util.List;
import java.util.Map;
import com.zrqx.core.util.page.PageInfo;
import com.zrqx.statistics.entity.StatisticsTask;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
public class ProjectTaskListVo {
@ApiModelProperty("统计在团队中的可用工时")
private Map<String, DoubleSummaryStatistics> teamCol;
@ApiModelProperty("统计在项目中的实际工时")
private Map<String, DoubleSummaryStatistics> collect;
@ApiModelProperty("统计在项目中完成bug数量")
private Map<String, DoubleSummaryStatistics> bugs;
@ApiModelProperty("统计在项目中完成bug消耗的时间")
private Map<String,String> map;
// 项目名
private String projectName;
@ApiModelProperty("项目总工时统计详情")
private PageInfo<StatisticsTask> page;
}
package com.zrqx.statistics.controller;
import java.util.DoubleSummaryStatistics;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.multipart.MultipartFile;
import com.zrqx.core.util.excelutil.ExcelUtil;
import com.zrqx.statistics.entity.StatisticsProject;
import com.zrqx.statistics.entity.StatisticsTask;
import com.zrqx.statistics.entity.Team;
import com.zrqx.statistics.entity.imports.ImportVo;
import com.zrqx.statistics.service.ModuleService;
import com.zrqx.statistics.service.StatisticsProjectService;
import com.zrqx.statistics.service.StatisticsService;
import com.zrqx.statistics.service.StatisticsTaskService;
@Controller
public class StatisticsController {
@Autowired
private StatisticsService service;
@Autowired
private StatisticsTaskService stService;
@Autowired
private StatisticsProjectService spService;
@Autowired
private ModuleService moduleService;
@GetMapping(value = "/")
public String test(String name, String startTime, String endTime, String deptName, Map<String, Object> map) {
map.put("list", service.queryTaskTime(name, startTime, endTime, deptName));
return "index";
}
@GetMapping("/task-list")
public String tasks(String account, String startTime, String endTime, Model model) {
model.addAttribute("list", stService.queryTask(account, startTime, endTime));
return "taskList";
}
@GetMapping("/projects")
public String projects(Model model) {
List<StatisticsProject> list = spService.queryProjectList();
list.forEach(s -> {
List<Team> teams = spService.queryTeamByProject(s.getId());
DoubleSummaryStatistics collect = teams.parallelStream().collect(Collectors.summarizingDouble(a -> a.getDays() * a.getHours()));
s.setSumHours(collect.getSum());
s.setBugs(spService.queryBugCountByProject(s.getId()));
});
model.addAttribute("list", list);
return "projects";
}
@GetMapping("/project-task-list")
public String projectTasks(Integer id, Model model) {
if (null == id) {
return "redirect:/projects";
}
//统计在团队中的可用工时
List<Team> teams = spService.queryTeamByProject(id);
Map<String, DoubleSummaryStatistics> teamCol = teams.parallelStream().collect(Collectors.groupingBy(Team::getName,
Collectors.summarizingDouble(a -> a.getDays() * a.getHours())));
//统计在项目中的实际工时
List<StatisticsTask> list = stService.queryTaskByProject(id);
Map<String, DoubleSummaryStatistics> collect = list.parallelStream()
.filter(l -> StringUtils.isNotBlank(l.getFinishedBy())).collect(Collectors.groupingBy(
StatisticsTask::getFinishedBy, Collectors.summarizingDouble(StatisticsTask::getEstimate)));
model.addAttribute("col", collect);
model.addAttribute("teamCol", teamCol);
model.addAttribute("list", list);
return "projectTaskList";
}
/**
* 导入
*/
@PostMapping(value = "/import", produces = "text/plain; charset=UTF-8")
public String importTask(@RequestParam("file") MultipartFile file,Integer parent,Integer project) throws Exception {
List<ImportVo> list = ExcelUtil.importExcel(file.getInputStream(), ImportVo.class, file.getOriginalFilename());
moduleService.importModule(parent, project, list);
list.forEach(ec ->{
System.out.println(ec.toString());
});
return "redirect:/importOk";
}
@GetMapping(value="/import")
public String immport(){
return "import";
}
@GetMapping(value="/importOk")
public String immportOk(){
return "importOk";
}
}
package com.zrqx.statistics.controller;
import java.util.List;
import java.util.stream.Collectors;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import com.zrqx.core.util.page.PageInfo;
import com.zrqx.core.util.page.PageParam;
import com.zrqx.statistics.ProjectStatusEnum;
import com.zrqx.statistics.entity.EchartsDataVo;
import com.zrqx.statistics.entity.PreSaleEchartsDataVo;
import com.zrqx.statistics.entity.ProjectInfoPageForm;
import com.zrqx.statistics.entity.ProjectPageForm;
import com.zrqx.statistics.entity.ProjectTotalInfoVo;
import com.zrqx.statistics.entity.StatisticsProject;
import com.zrqx.statistics.entity.StatisticsTask;
import com.zrqx.statistics.entity.StatisticsTaskTime;
import com.zrqx.statistics.entity.StatisticsTaskTimeForm;
import com.zrqx.statistics.service.StatisticsProjectService;
import com.zrqx.statistics.service.StatisticsService;
import com.zrqx.statistics.service.StatisticsTaskService;
import com.zrqx.statistics.vo.PorjectUserInfoVo;
@Controller
@RequestMapping("/v1")
public class StatisticsControllerV1 {
@Autowired
private StatisticsService service;
@Autowired
private StatisticsTaskService stService;
@Autowired
private StatisticsProjectService spService;
/**
* 首页
* @param model
* @return
* @author lpf
* @date: 2019年11月8日 上午10:59:44
*/
@GetMapping({"","/","/index"})
public String toIndex(Model model) {
ProjectTotalInfoVo vo = spService.projectTotalInfo();
List<StatisticsProject> list = service.projectAll();
List<StatisticsProject> deveList = list.stream().filter(a -> a.getProject().contains("项目开发")).collect(Collectors.toList());
int count = 0;
for (StatisticsProject v : deveList) {
if ("doing".equals(v.getStatus())) {
count ++;
}
}
vo.setDevelopDingNum(count);
List<StatisticsProject> prodList = list.stream().filter(a -> a.getProject().contains("产品研发")).collect(Collectors.toList());
List<StatisticsProject> otherList = list.stream().filter(a -> !a.getProject().contains("产品研发") && !a.getProject().contains("产品研发")).collect(Collectors.toList());
vo.setDevelopNum(deveList.size());
vo.setProductNum(prodList.size());
vo.setOtherNum(otherList.size());
list.forEach(v ->{
int preSaleNum = spService.selectByCount(v.getId()); //售前项目数量
vo.setPreSaleNum(preSaleNum);
});
model.addAttribute("vo", vo);
return "v1/index";
}
@GetMapping("v1/zhanshi")
@ResponseBody
public ProjectTotalInfoVo get() {
ProjectTotalInfoVo vo = spService.projectTotalInfo();
List<StatisticsProject> list = service.projectAll();
List<StatisticsProject> deveList = list.stream().filter(a -> a.getProject().contains("项目开发")).collect(Collectors.toList());
int count = 0;
for (StatisticsProject v : deveList) {
if ("doing".equals(v.getStatus())) {
count ++;
}
}
vo.setDevelopDingNum(count);
List<StatisticsProject> prodList = list.stream().filter(a -> a.getProject().contains("产品研发")).collect(Collectors.toList());
List<StatisticsProject> otherList = list.stream().filter(a -> !a.getProject().contains("产品研发") && !a.getProject().contains("产品研发")).collect(Collectors.toList());
vo.setDevelopNum(deveList.size());
vo.setProductNum(prodList.size());
vo.setOtherNum(otherList.size());
list.forEach(v ->{
int preSaleNum = spService.selectByCount(v.getId()); //售前项目数量
vo.setPreSaleNum(preSaleNum);
});
return vo;
}
@GetMapping("/index/Data")
@ResponseBody
public EchartsDataVo echartsData() {
EchartsDataVo data = spService.selectEChartsData();
return data;
}
@GetMapping("/index/preSale/Data")
@ResponseBody
public PreSaleEchartsDataVo preSaleEchartsData() {
PreSaleEchartsDataVo data = spService.selectPreSaleEchartsData();
return data;
}
/**
* 总工时统计
* @param model
* @return
* @author lpf
* @date: 2019年11月8日 上午10:59:57
*/
@GetMapping("/all_man_hours")
public String toAllManHours(Model model) {
model.addAttribute("projectStatus", ProjectStatusEnum.getAllEnumMap());
return "v1/all_man_hours";
}
@GetMapping("/all_man_hours/page")
@ResponseBody
public PageInfo<StatisticsProject> projects(ProjectPageForm form,PageParam pageParam) {
return spService.queryProjectList(form,pageParam);
}
/**
* 总工时统计 详细
* @param model
* @return
* @author lpf
* @date: 2019年11月8日 上午11:00:38
*/
@GetMapping("/all_man_hours_info")
public String toAllManHoursInfo(Model model,ProjectInfoPageForm form) {
// 查询所有部门
List<String> deptName = spService.selectDeptName();
// 获取项目名 根据id查询项目名
String projectName = spService .selectByprojectId(form.getId());
List<PorjectUserInfoVo> userList = stService.queryTaskByProjectPageNew(form);
model.addAttribute("userList", userList);
model.addAttribute("projectName", projectName);
model.addAttribute("deptName", deptName);
return "v1/all_man_hours_info";
}
@GetMapping("/all_man_hours_info/page")
@ResponseBody
public PageInfo<StatisticsTask> projectInfo(ProjectInfoPageForm form,PageParam pageParam){
return stService.queryTaskByProjectPage(form,pageParam);
}
/**
* 总完成预计工时
* @param model
* @return
* @author lpf
* @date: 2019年11月8日 上午11:00:58
*/
@GetMapping("/expect_man_hours")
public String toExpectManHours(Model model) {
// 查询所有部门
List<String> deptName = spService.selectDeptName();
model.addAttribute("deptName", deptName);
return "v1/expect_man_hours";
}
@GetMapping("/expect_man_hours/page")
@ResponseBody
public PageInfo<StatisticsTaskTime> page(PageParam pageParam, CompleteQueryForm form){
return service.queryTaskTime(pageParam, form);
}
/**
* 总完成预计工时详细
* @param model
* @return
* @author lpf
* @date: 2019年11月8日 上午11:00:58
*/
@GetMapping("/expect_man_hours_info")
public String toExpectManHoursInfo(Model model) {
return "v1/expect_man_hours_info";
}
@GetMapping("/expect_man_hours_info/page")
@ResponseBody
public PageInfo<StatisticsTask> tasksPage(PageParam pageParam, CompleteQueryForm form) {
return stService.queryTaskPage(pageParam, form);
}
/*
* @GetMapping(value = "/index") public String selectInfo(Model model){
* ProjectTotalInfoVo vo = spService.projectTotalInfo();
* model.addAttribute("vo", vo); return "/v1/index"; }
*/
@GetMapping("/project_split_data")
@ResponseBody
public List<StatisticsTaskTime> projectSplitData(Model model,StatisticsTaskTimeForm form){
// List<StatisticsTaskTime> data = spService.queryProjectSplitData(form);
// model.addAttribute("list", data);
// return "v1/project_split_data";
return spService.queryProjectSplitData(form);
}
}
package com.zrqx.statistics.controller;
import java.util.List;
import java.util.stream.Collectors;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import com.zrqx.core.util.page.PageInfo;
import com.zrqx.core.util.page.PageParam;
import com.zrqx.statistics.ProjectManagementStatusEnum;
import com.zrqx.statistics.ProjectStatusEnum;
import com.zrqx.statistics.entity.ProjectPageForm;
import com.zrqx.statistics.entity.StatisticsProject;
import com.zrqx.statistics.entity.UserEchartsDataVo;
import com.zrqx.statistics.form.PerSaleManagementForm;
import com.zrqx.statistics.form.PerSaleManagementInfoForm;
import com.zrqx.statistics.form.ProjectManagementUpdateForm;
import com.zrqx.statistics.form.UserManagementForm;
import com.zrqx.statistics.service.StatisticsProjectService;
import com.zrqx.statistics.service.StatisticsService;
import com.zrqx.statistics.vo.PerSaleManagementInfoVo;
import com.zrqx.statistics.vo.PerSaleManagementVo;
import com.zrqx.statistics.vo.ProjectManageMentVo;
import com.zrqx.statistics.vo.UserManagementVo;
@Controller
@RequestMapping("/v2")
public class StatisticsControllerV2 {
@Autowired
private StatisticsService service;
@Autowired
private StatisticsProjectService spService;
// 售前管理
@GetMapping("/pre_sale_management")
public String toPreSaleManagement(Model model) {
return "v2/pre_sale_management";
}
@GetMapping("/pre_sale_management/page")
@ResponseBody
public PageInfo<PerSaleManagementVo> page(PageParam pageParam, PerSaleManagementForm form){
return service.page(pageParam, form);
}
// 售前管理详情
@GetMapping("/pre_sale_management_info")
public String perSaleManagementInfo(Model model) {
// 查询所有部门
List<String> deptName = spService.selectDeptName();
model.addAttribute("deptName", deptName);
return "v2/pre_sale_management_info";
}
@GetMapping("/pre_sale_management_info/page")
@ResponseBody
public PageInfo<PerSaleManagementInfoVo> getInfo(PageParam pageParam,PerSaleManagementInfoForm form){
return service.getInfo(pageParam, form);
}
// 项目管理
@GetMapping("/project_management")
public String toProjectManagement(Model model) {
model.addAttribute("projectStatus", ProjectManagementStatusEnum.getAllEnumMap());
return "v2/project_management";
}
@GetMapping("/project_management/list")
@ResponseBody
public PageInfo<ProjectManageMentVo> getList(String status){
if ("null".equals(status)) {
status = "";
}
return service.getList(status);
}
// 选中下拉选,修改项目状态表
@PostMapping("/project_management/update")
@ResponseBody
public Boolean update(ProjectManagementUpdateForm form) {
return service.update(form);
}
@GetMapping("/project_time")
public String toProjectTime(Model model) {
model.addAttribute("projectStatus", ProjectStatusEnum.getAllEnumMap());
List<StatisticsProject> list = service.projectAll();
List<StatisticsProject> deveList = list.stream().filter(a -> a.getProject().contains("开发项目")).collect(Collectors.toList());
List<StatisticsProject> prodList = list.stream().filter(a -> a.getProject().contains("产品研发")).collect(Collectors.toList());
List<StatisticsProject> otherList = list.stream().filter(a -> !a.getProject().contains("开发项目") && !a.getProject().contains("产品研发")).collect(Collectors.toList());
model.addAttribute("developNum", deveList.size());
model.addAttribute("productNum", prodList.size());
model.addAttribute("otherNum", otherList.size());
return "v2/project_time";
}
@GetMapping("/project_time/page")
@ResponseBody
public PageInfo<StatisticsProject> projects(ProjectPageForm form,PageParam pageParam) {
if (StringUtils.isEmpty(form.getStr())) {
form.setStr("all");
}
return spService.queryProjectList(form,pageParam);
}
// 人员管理
@GetMapping("/user_management")
public String toUserManageMent(Model model,UserManagementForm form) {
if (StringUtils.isEmpty(form.getTimeType())) {
form.setTimeType("week");
}
if (StringUtils.isEmpty(form.getDept())) {
form.setDept("产品部");
}
// 排行榜
UserManagementVo vo = service.getProjectTotalInfo(form);
model.addAttribute("vo", vo);
return "v2/user_management";
}
// 排行榜
@GetMapping("/user_management/top")
@ResponseBody
public UserManagementVo getUserManageMentTop(Model model,UserManagementForm form) {
if (form.getTimeType() == null) {
form.setTimeType("week");
}
if (StringUtils.isEmpty(form.getDept())) {
form.setDept("产品部");
}
UserManagementVo vo = service.getProjectTotalInfo(form);
return vo;
}
// 折线图
@GetMapping("/echarts_data")
@ResponseBody
public UserEchartsDataVo getEchartsData(String dept) {
if (dept == null) {
dept = "产品部";
}
UserEchartsDataVo data = service.getEchartsData(dept);
return data;
}
}
package com.zrqx.statistics.controller;
import javax.servlet.http.HttpServletRequest;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import com.zrqx.statistics.service.TimeApplyMemberService;
@Controller
@RequestMapping("/v1")
public class TimeApplyMemberContorller {
@Autowired
private TimeApplyMemberService timeApplyMemberService;
@RequestMapping("/time_apply_member/login")
@ResponseBody
public boolean login(String name, String pass, HttpServletRequest request) {
/*
* String value = (String) request.getSession().getAttribute("timeApplyMember");
* if (StringUtils.isNotBlank(value)) { return true; }
*/
boolean result = timeApplyMemberService.isExist(name, pass);
if (result) {
request.getSession().setAttribute("timeApplyMember", name);
}
return result;
}
@RequestMapping("/time_apply_member/logout")
@ResponseBody
public String logout (HttpServletRequest request) {
request.getSession().removeAttribute("timeApplyMember");
return "1";
}
}
package com.zrqx.statistics.entity;
import java.math.BigDecimal;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
public class DeptTotalInfoVo {
@ApiModelProperty("部门名称")
private String deptName;
@ApiModelProperty("产出总量")
private Double sumTime;
@ApiModelProperty("成员人数")
private Integer sumUser;
@ApiModelProperty("均值")
private BigDecimal average;
@ApiModelProperty("月产出总量")
private Double monthSumTime;
// @ApiModelProperty("月成员人数")
// private Integer monthSumUser;
@ApiModelProperty("月均值")
private BigDecimal monthAverage;
}
package com.zrqx.statistics.entity;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
public class EchartsDataDaysVo {
@ApiModelProperty("部门名称")
private String deptName;
@ApiModelProperty("产出总量")
private Double sumTime = 0.0;
@ApiModelProperty("每天")
private String days;
}
package com.zrqx.statistics.entity;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
public class EchartsDataMonthsVo {
@ApiModelProperty("部门名称")
private String deptName;
@ApiModelProperty("产出总量")
private Double sumTime;
@ApiModelProperty("每月")
private String months;
@ApiModelProperty("姓名")
private String name;
}
package com.zrqx.statistics.entity;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
public class EchartsDataQuartersVo {
@ApiModelProperty("部门名称")
private String deptName;
@ApiModelProperty("产出总量")
private Double sumTime;
@ApiModelProperty("每季度")
private String quarters;
@ApiModelProperty("姓名")
private String name;
}
package com.zrqx.statistics.entity;
import java.util.List;
import lombok.Data;
/** 折线图所需数据 */
@Data
public class EchartsDataVo {
//每天数据
private List<EchartsDataDaysVo> days;
//每周数据
private List<EchartsDataweeksVo> weeks;
//每月数据
private List<EchartsDataMonthsVo> months;
//季度
private List<EchartsDataQuartersVo> quarters;
//每年数据
private List<EchartsDataYearsVo> years;
}
package com.zrqx.statistics.entity;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
public class EchartsDataYearsVo {
@ApiModelProperty("部门名称")
private String deptName;
@ApiModelProperty("产出总量")
private Double sumTime;
@ApiModelProperty("每年")
private String years;
@ApiModelProperty("姓名")
private String name;
}
package com.zrqx.statistics.entity;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
public class EchartsDataweeksVo {
@ApiModelProperty("部门名称")
private String deptName;
@ApiModelProperty("产出总量")
private Double sumTime;
@ApiModelProperty("每周")
private String weeks;
}
package com.zrqx.statistics.entity;
import java.util.Date;
import javax.persistence.Column;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
@Table(name = "live_user")
@ApiModel(value = "Live", description = "浏览记录")
public class Live {
@Id
@GeneratedValue(generator = "JDBC")
@ApiModelProperty(value = "ID")
@Column(name = "id")
private Integer id;
@ApiModelProperty(value = "第三方账号Id")
private String userId;
@ApiModelProperty(value = "项目名称")
private String name;
@ApiModelProperty(value = "url")
private String url;
@ApiModelProperty(value = "创建时间")
private Date createTime;
}
package com.zrqx.statistics.entity;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
public class PreSaleEchartsDataMonthsVo {
@ApiModelProperty("部门名称")
private String deptName;
@ApiModelProperty("产出总量")
private Double sumTime = 0.0;
@ApiModelProperty("每月")
private String months;
}
package com.zrqx.statistics.entity;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
public class PreSaleEchartsDataQuartersVo {
@ApiModelProperty("部门名称")
private String deptName;
@ApiModelProperty("产出总量")
private Double sumTime = 0.0;
@ApiModelProperty("每季度")
private String quarters;
}
package com.zrqx.statistics.entity;
import java.util.List;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
public class PreSaleEchartsDataVo {
@ApiModelProperty("月数据")
private List<PreSaleEchartsDataMonthsVo> months;
@ApiModelProperty("季度")
private List<PreSaleEchartsDataQuartersVo> quarters;
@ApiModelProperty("年数据")
private List<PreSaleEchartsDataYearsVo> years;
}
package com.zrqx.statistics.entity;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
public class PreSaleEchartsDataYearsVo {
@ApiModelProperty("部门名称")
private String deptName;
@ApiModelProperty("产出总量")
private Double sumTime = 0.0;
@ApiModelProperty("每年")
private String years;
}
package com.zrqx.statistics.entity;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/** 项目详情分页form */
@Data
public class ProjectInfoPageForm {
@ApiModelProperty("项目id")
private Integer id;
@ApiModelProperty("完成者名称")
private String finishedBy;
@ApiModelProperty("月统计")
private Integer month;
@ApiModelProperty("部门")
private String department;
@ApiModelProperty("关键词")
private String keywords;
}
package com.zrqx.statistics.entity;
import lombok.Data;
import io.swagger.annotations.ApiModelProperty;
/** 项目列表分页form */
@Data
public class ProjectPageForm {
@ApiModelProperty("项目名称")
private String project;
@ApiModelProperty("负责人名称")
private String name;
@ApiModelProperty("项目状态")
private String status;
@ApiModelProperty("标识")
private String str;
@ApiModelProperty("团队成员")
private String teamMemberName;
}
package com.zrqx.statistics.entity;
import java.util.Date;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/** 项目列表分页vo */
@Data
public class ProjectPageVo {
@ApiModelProperty("项目id")
private Integer id;
@ApiModelProperty("项目名称")
private String project;
@ApiModelProperty("负责人名称")
private String name;
@ApiModelProperty("项目可用工时")
private Double usableHours;
@ApiModelProperty("项目实际消耗工时")
private Double usedHours;
@ApiModelProperty("项目状态")
private String status;
@ApiModelProperty("项目结束时间")
private Date closedDate;
@ApiModelProperty("项目取消时间")
private Date canceledDate;
}
package com.zrqx.statistics.entity;
import java.util.List;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/** 首页数据 */
@Data
public class ProjectTotalInfoVo {
@ApiModelProperty("项目总量")
private Integer projetCount;
@ApiModelProperty("待审核项目数量")
private Integer wait;
@ApiModelProperty("开发完成项目数量")
private Integer suspended;
@ApiModelProperty("进行中项目数量")
private Integer doing;
@ApiModelProperty("部门产出工时")
private List<DeptTotalInfoVo> list;
@ApiModelProperty("工时排行")
private List<TaskNameAndTime> tnat;
@ApiModelProperty("开发项目")
private Integer developNum;
@ApiModelProperty("开发项目中进行中的项目")
private Integer developDingNum;
@ApiModelProperty("研发项目")
private Integer productNum;
@ApiModelProperty("其他项目")
private Integer otherNum;
@ApiModelProperty("售前项目")
private Integer preSaleNum;
}
package com.zrqx.statistics.entity;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/** 项目参与人vo */
@Data
public class ProjectUserVo {
@ApiModelProperty("项目参与人")
private String name;
@ApiModelProperty("个人可用工时")
private Double personUsableHours;
@ApiModelProperty("个人实际消耗工时")
private Double personUsedHours;
@ApiModelProperty("BUG数量")
private Integer bugs;
@ApiModelProperty("BUG所用工时")
private Double bugHours;
}
package com.zrqx.statistics.entity;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
public class StatisticsBug {
// 用户id
private Integer id;
@ApiModelProperty("bug数量")
private Integer bugs;
@ApiModelProperty("bug消耗的工时")
private Double bugTime;
@ApiModelProperty("参与人")
private String name;
}
package com.zrqx.statistics.entity;
import io.swagger.annotations.ApiModelProperty;
import java.util.Date;
import lombok.Data;
@Data
public class StatisticsProject {
private Integer id;
//项目名
private String project;
//负责人
private String name;
//项目总实际工时
private String time;
//项目总工作日
private String days;
//总可用工时
private Double sumHours;
//bug数量
private Integer bugs;
/** 新增 */
//@ApiModelProperty("项目实际消耗工时")
//private Double usedHours;
@ApiModelProperty("项目状态")
private String status;
private String statusZh;
@ApiModelProperty("项目结束时间")
private String closedDate;
@ApiModelProperty("项目取消时间")
private String end;
@ApiModelProperty("项目进度")
private String status1;
private String status1Zh;
@ApiModelProperty("开发项目个数")
private Integer developNum;
@ApiModelProperty("研发项目个数")
private Integer productNum;
@ApiModelProperty("其他项目个数")
private Integer otherNum;
}
package com.zrqx.statistics.entity;
import lombok.Data;
@Data
public class StatisticsTask {
private Integer id;
private String name;
private String desc;
private String finishedBy;
private String finishedDate;
private String project;
private Double estimate;
}
package com.zrqx.statistics.entity;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
public class StatisticsTaskTime {
private String name;
private String dept;
private String time;
private String account;
@ApiModelProperty("可用工作日")
private Integer days;
@ApiModelProperty("可用工时/天")
private Double hours;
@ApiModelProperty("预计工时")
private Double sumHours;
@ApiModelProperty("bug工时")
private Double bugTime;
@ApiModelProperty("bug占比")
private String proportion;
@ApiModelProperty("项目id")
private Integer id;
@ApiModelProperty("总可用工时")
private Double canUseTime;
@ApiModelProperty("Bug超出工时")
private Double beyondTime;
@ApiModelProperty("最终工时")
private Double finishTime;
@ApiModelProperty("无效工时")
private Double invalidTime;
@ApiModelProperty("开始时间")
private String startTime;
@ApiModelProperty("结束时间")
private String endTime;
}
package com.zrqx.statistics.entity;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
public class StatisticsTaskTimeForm {
@ApiModelProperty("人员名称")
private String account;
@ApiModelProperty("开始时间")
private String startTime;
@ApiModelProperty("结束时间")
private String endTime;
}
package com.zrqx.statistics.entity;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
// 工时排行 人和工时
@Data
public class TaskNameAndTime {
@ApiModelProperty("完成任务的名字")
private String finishedBy;
@ApiModelProperty("完成任务的总工时")
private Double totalTime;
@ApiModelProperty("部门")
private String deptName;
}
package com.zrqx.statistics.entity;
import lombok.Data;
@Data
public class Team {
// 人员id
private Integer userId;
//项目id
private Integer root;
//人员姓名
private String name;
//可用工作日
private Integer days;
//可用工时/天
private Double hours;
//总可用工时
private Double sumHours;
}
package com.zrqx.statistics.entity;
import java.util.Date;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@ApiModel("工时申请表")
@Data
@Table(name = "time_apply")
public class TimeApply {
@Id
@GeneratedValue(generator = "JDBC")
@ApiModelProperty("id")
private Integer id;
@ApiModelProperty("项目名称")
private String projectName;
@ApiModelProperty("负责人")
private String headName;
@ApiModelProperty("申请原因")
private String reason;
@ApiModelProperty("产品工时")
private Double productApplyTime;
@ApiModelProperty("设计工时")
private Double designApplyTime;
@ApiModelProperty("开发工时")
private Double developApplyTime;
@ApiModelProperty("总工时")
private Double totalApplyTime;
@ApiModelProperty("申请时间")
private Date createTime;
@ApiModelProperty("项目启动时间")
private Date startTime1;
@ApiModelProperty("项目截止时间")
private Date endTime1;
@ApiModelProperty("审核状态 0:待审核 1:已审核 默认未审核")
private String status1;
@ApiModelProperty("审核状态 3:待审核 4:已审核 默认未审核")
private String status2;
@ApiModelProperty("status1审核时间")
private Date checkTime1;
@ApiModelProperty("status2审核时间")
private Date checkTime2;
@ApiModelProperty("是否与禅道同步 0 否 1是")
private String synchronous;
/** 新增 */
@ApiModelProperty("上传PDF时返回的唯一标识")
private String pdfLable;
}
package com.zrqx.statistics.entity;
import java.util.Date;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
public class TimeApplyAddForm {
@ApiModelProperty("项目名称")
private String projectName;
@ApiModelProperty("负责人")
private String headName;
@ApiModelProperty("申请原因")
private String reason;
@ApiModelProperty("产品工时")
private Double productApplyTime;
@ApiModelProperty("设计工时")
private Double designApplyTime;
@ApiModelProperty("开发工时")
private Double developApplyTime;
@ApiModelProperty("项目启动时间")
private String startTime1;
@ApiModelProperty("项目截止时间")
private String endTime1;
@ApiModelProperty("申请时间")
private Date createTime;
@ApiModelProperty("总工时")
private Double totalApplyTime;
@ApiModelProperty("审核状态 0:待审核 1:已审核 默认未审核")
private String status1;
@ApiModelProperty("审核状态 3:待审核 4:已审核 默认未审核")
private String status2;
}
package com.zrqx.statistics.entity;
import java.util.Date;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@ApiModel("工时申请变更表")
@Data
@Table(name = "time_apply_change")
public class TimeApplyChange {
@Id
@GeneratedValue(generator = "JDBC")
@ApiModelProperty("id")
private Integer id;
@ApiModelProperty("变更环节 (部门)")
private String deptName;
@ApiModelProperty("变更工时")
private Double changeTime;
@ApiModelProperty("变更类型")
private String type;
@ApiModelProperty("变更备注原因")
private String reason;
@ApiModelProperty("变更时间")
private Date createTime;
@ApiModelProperty("审核状态 0:待审核 1:已审核")
private String status1;
@ApiModelProperty("池总审核时间")
private Date checkTime1;
private String status2;
@ApiModelProperty("云总审核时间")
private Date checkTime2;
@ApiModelProperty("变更申请id")
private Integer timeApplyId;
}
package com.zrqx.statistics.entity;
import java.util.Date;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
public class TimeApplyChangeForm {
@ApiModelProperty("变更环节 (部门)")
private String deptName;
@ApiModelProperty("变更工时")
private Double changeTime;
@ApiModelProperty("变更类型")
private String type;
@ApiModelProperty("变更原因")
private String reason;
@ApiModelProperty("开始时间")
private String startTime;
@ApiModelProperty("结束时间")
private String endTime;
@ApiModelProperty("审核状态 0:待审核 1:已审核 status1和status2同时为1时,则已审核审核")
private String status;
private String status1;
private String status2;
@ApiModelProperty("变更申请id")
private Integer timeApplyId;
}
package com.zrqx.statistics.entity;
import java.util.List;
import lombok.Data;
@Data
public class TimeApplyChangeInfoVo {
private String deptName;
private List<TimeApplyChange> timeApplyChange;
}
package com.zrqx.statistics.entity;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
public class TimeApplyChangeVo extends TimeApplyChange{
@ApiModelProperty("池总审核状态")
private String status1Zh;
@ApiModelProperty("云总审核状态")
private String status2Zh;
@ApiModelProperty("变更后工时")
private Double totalChangeTime;
}
package com.zrqx.statistics.entity;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
public class TimeApplyForm {
//查询项 项目名 时间区间 负责人 审核状态(已审核、待审核)
@ApiModelProperty("项目名称")
private String projectName;
@ApiModelProperty("开始时间")
private String startTime;
@ApiModelProperty("结束时间")
private String endTime;
@ApiModelProperty("负责人")
private String headName;
@ApiModelProperty("审核状态 0:待审核 1:已审核 status1和status2同时为1时,则已审核审核")
private String status;
private String status1;
private String status2;
}
package com.zrqx.statistics.entity;
import java.util.Date;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
public class TimeApplyTableVo {
@ApiModelProperty("负责人")
private String headName;
@ApiModelProperty("总工时")
private Double totalApplyTime;
@ApiModelProperty("申请时间")
private String createTime;
@ApiModelProperty("项目启动时间")
private String startTime;
@ApiModelProperty("项目截止时间")
private String endTime;
@ApiModelProperty("申请原因")
private String reason;
@ApiModelProperty("产品工时")
private Double productApplyTime;
@ApiModelProperty("设计工时")
private Double designApplyTime;
@ApiModelProperty("开发工时")
private Double developApplyTime;
@ApiModelProperty("变更后产品工时")
private Double productApplyTimeChange;
@ApiModelProperty("变更后设计工时")
private Double designApplyTimeChange;
@ApiModelProperty("变更后开发工时")
private Double developApplyTimeChange;
@ApiModelProperty("变更后总工时")
private Double totalApplyTimeChange;
}
package com.zrqx.statistics.entity;
import java.util.Date;
import com.alibaba.fastjson.annotation.JSONField;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
public class TimeApplyVo {
//项目名 负责人 启动时间 截止时间 总工时 审核状态
@ApiModelProperty("id")
private Integer id;
@ApiModelProperty("项目名称")
private String projectName;
@ApiModelProperty("负责人")
private String headName;
@ApiModelProperty("总工时")
private Double totalApplyTime;
@ApiModelProperty("申请时间")
private Date createTime;
@ApiModelProperty("项目启动时间")
@JSONField(format="yyyy-MM-dd")
private Date startTime1;
@ApiModelProperty("项目截止时间")
@JSONField(format="yyyy-MM-dd")
private Date endTime1;
@ApiModelProperty("副总经理状态")
private String status1Zh;
private String status1;
@ApiModelProperty("副总经理状态")
private String status2Zh;
private String status2;
@ApiModelProperty("云总变更审核状态")
private String changeStatus2Zh;
private String changeStatus2;
@ApiModelProperty("池总变更审核状态")
private String changeStatus1Zh;
private String changeStatus1;
private String startTime;
private String endTime;
@ApiModelProperty("是否同步")
private String synchronousZh;
private String synchronous;
/** 新增 */
@ApiModelProperty("上传PDF时返回的唯一标识")
private String pdfLable;
}
package com.zrqx.statistics.entity;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
public class TimeChangeForm {
@ApiModelProperty("status1")
private String status1;
@ApiModelProperty("status2")
private String status2;
}
package com.zrqx.statistics.entity;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
public class TimeChangeStatusForm {
@ApiModelProperty("变更/申请id")
private Integer id;
@ApiModelProperty("审核状态")
private String status1;
private String status2;
}
package com.zrqx.statistics.entity;
import java.util.Date;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
public class UpdateTimeApplyForm {
@ApiModelProperty("id")
private Integer id;
@ApiModelProperty("项目名称")
private String projectName;
@ApiModelProperty("负责人")
private String headName;
@ApiModelProperty("申请原因")
private String reason;
@ApiModelProperty("产品工时")
private Double productApplyTime;
@ApiModelProperty("设计工时")
private Double designApplyTime;
@ApiModelProperty("开发工时")
private Double developApplyTime;
@ApiModelProperty("总工时")
private Double totalApplyTime;
@ApiModelProperty("申请时间")
private Date createTime;
@ApiModelProperty("项目启动时间")
private String startTime1;
@ApiModelProperty("项目截止时间")
private String endTime1;
@ApiModelProperty("审核状态 0:待审核 1:已审核 默认未审核")
private String status1;
@ApiModelProperty("审核状态 3:待审核 4:已审核 默认未审核")
private String status2;
@ApiModelProperty("status1审核时间")
private Date checkTime1;
@ApiModelProperty("status2审核时间")
private Date checkTime2;
}
package com.zrqx.statistics.entity;
import java.util.List;
import java.util.Map;
import lombok.Data;
@Data
public class UserEchartsDataVo {
//每月数据
private Map<String, List<EchartsDataMonthsVo>> months;
//季度
private Map<String, List<EchartsDataQuartersVo>> quarters;
//每年数据
private Map<String, List<EchartsDataYearsVo>> years;
}
package com.zrqx.statistics.entity.imports;
import com.zrqx.core.util.excelutil.ExcelResources;
import com.zrqx.core.util.excelutil.ExcelSheetParams;
import lombok.Data;
@Data
@ExcelSheetParams(startRow = 2)
public class ImportVo {
@ExcelResources(title = "模块")
private String model;
@ExcelResources(title = "任务名")
private String task;
@ExcelResources(title = "描述")
private String desc;
}
package com.zrqx.statistics.entity.imports;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;
import lombok.Data;
@Data
@Table(name = "zt_module")
public class Module {
@Id
@GeneratedValue(generator="JDBC")
private Integer id;
private Integer root;
private String name;
private Integer parent;
private String path;
private Integer grade;
private String type;
private String owner;
private String collector;
private String Short;
}
package com.zrqx.statistics.entity.imports;
import java.util.Date;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;
import lombok.Data;
@Table(name = "zt_task")
@Data
public class Task {
@Id
@GeneratedValue(generator="JDBC")
private Integer id;
private Integer project;
private Integer module;
private String name;
private String type = "devel";
private Double estimate = 0.0;
private Double consumed = 0.0;
private Double left = 0.0;
private Date deadline = new Date();
private String status = "wait";
private String desc;
private String openedBy = "IMPORT0";
}
package com.zrqx.statistics.form;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @author chyj
* @date 2019年12月27日下午1:42:49
*/
@Data
public class CallbackEventForm {
@ApiModelProperty("回调事件ID")
private Integer method_id;
@ApiModelProperty("来源")
private String refer;
@ApiModelProperty("当前时间戳")
private String time;
@ApiModelProperty("活动ID")
private Integer webinar_id;
@ApiModelProperty("第三方用户ID")
private String third_user_id;
@ApiModelProperty("type:代表返回的直播状态,1代表开始 3代表结束")
private Integer type;
@ApiModelProperty("签名")
private String signature;
@ApiModelProperty("第三方用户")
private String user_id;
}
package com.zrqx.statistics.form;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @author chyj
* @date 2019年12月13日下午1:51:17
*/
@Data
public class MicroRoarForm {
/** 公共参数 */
@ApiModelProperty("授权类型,1为验证帐号和密码(目前只通过帐号和密码验证),2为appkey/secretkey验证方式,使用说明见“5、签名方式调用”")
private String auth_type;
@ApiModelProperty("auth_type为1时为必填项,用于登录e.vhall.com的帐号,是在“帐号设置”页面里查找到的“帐号”")
private String account;
@ApiModelProperty("auth_type为1时为必填项,用于登录e.vhall.com的密码,用于登录的密码")
private String password;
@ApiModelProperty("auth_type为2时为必填项, 点击获取app_key/secrect_key, 使用说明见“5、签名方式调用”")
private String app_key;
private String secrect_key;
private String signed_at;
@ApiModelProperty("类别")
private String category;
@ApiModelProperty("创建直播时的播放器类型。1代表flash播放器,2代表H5播放器,默认为1。此参数创建后不可更改,当参数为2时,is_new_version参数必传且为1。使用sdk的用户,请升级sdk至最新版本。")
private Integer player;
@ApiModelProperty("直播id")
private Integer webinar_id;
private Integer id;
@ApiModelProperty("<30个字符,活动主题 必填")
private String subject;
@ApiModelProperty("Linux时间戳,直播开始时间 必填")
private Long start_time;
@ApiModelProperty("通过第三方创建用户接口获取的微吼用户ID,子账号创建活动时此参数必填,管理员账号创建直播时忽略此参数")
private Integer user_id;
@ApiModelProperty("默认为0不开启,1为开启,是否针对此活动开启全局K值配置")
private Integer use_global_k;
@ApiModelProperty("默认为0不开启,1为开启,是否开启第三方K值验证查看说明")
private Integer exist_3rd_auth;
@ApiModelProperty("http://domain,<256个字符,第三方K值验证接口URL(exist_3rd_auth为1必填)")
private String auth_url;
@ApiModelProperty("http://domain,<256个字符,第三方K值验证失败跳转URL(可选)")
private String failure_url;
@ApiModelProperty("<1024个字符,活动描述")
private String introduction;
@ApiModelProperty("直播话题标签字段,以\",\"(半角符号) 分割可以多个,标签最多为6个,单个标签不超过8个字 格式例: \"商务,教育,视频教育\"")
private String topics;
@ApiModelProperty("1为单视频,2为单文档,3为文档+视频,观看布局.如果is_new_version为1且活动为互动,该参数只能为3, 如果is_new_version为1且活动不为互动,该参数可以选2或3")
private Integer layout;
@ApiModelProperty("0为旧版布局,1为新版布局,默认旧版布局。当player参数为2时,is_new_version参数必传且为1。")
private Integer is_new_version;
@ApiModelProperty("0为公开,1为非公开,个人公开/非公开活动")
private Integer type;
@ApiModelProperty("0为否,1为是(默认为否),是否自动回放")
private Integer auto_record;
@ApiModelProperty("0为是,1为否(默认为是),是否开启聊天")
private Integer is_chat;
@ApiModelProperty("<50个字符,可为空,主持人姓名")
private String host;
@ApiModelProperty(">0的数字,可为空,直播延时,单位为秒,默认为3")
private Integer buffer;
@ApiModelProperty("默认为1表示开启并发扩展包,传其他参数表示不开启,流量套餐或没有并发扩展包时忽略此参数")
private Integer is_allow_extension;
}
package com.zrqx.statistics.form;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
public class PerSaleManagementForm {
@ApiModelProperty("出版社")
private String pressName;
@ApiModelProperty("项目名称")
private String projectName;
@ApiModelProperty("姓名")
private String name;
@ApiModelProperty("开始时间")
private String startTime;
@ApiModelProperty("截止时间")
private String endTime;
}
package com.zrqx.statistics.form;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
public class PerSaleManagementInfoForm {
@ApiModelProperty("姓名")
private String name;
@ApiModelProperty("部门")
private String deptName;
@ApiModelProperty("开始时间")
private String startTime;
@ApiModelProperty("截止时间")
private String endTime;
@ApiModelProperty("项目名称")
private String projectName;
@ApiModelProperty("项目id")
private Integer projectId;
@ApiModelProperty("出版社id")
private Integer pressId;
}
package com.zrqx.statistics.form;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
public class ProjectManagementUpdateForm {
@ApiModelProperty("项目状态")
private String status;
@ApiModelProperty("项目id")
private Integer id;
}
package com.zrqx.statistics.form;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
public class SetEventForm {
@ApiModelProperty("类型 1:添加 2:删除 默认为 1")
private Integer type;
@ApiModelProperty("数据传输私钥 注意 :第一次设置该参数为必选,非第一次为更新")
private String secret_key;
@ApiModelProperty("回调URL 注意 :第一次设置该参数为必选,非第一次为更新")
private String callback_url;
@ApiModelProperty("1、直播开始,结束回调通知")
private String callback_event;
}
package com.zrqx.statistics.form;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
public class UserManagementForm {
@ApiModelProperty("工时排行榜 周/月/季度")
private String timeType;
@ApiModelProperty("部门")
private String dept;
}
......@@ -2,10 +2,11 @@ package com.zrqx.statistics.mapper;
import org.apache.ibatis.annotations.Mapper;
import com.zrqx.core.model.FileInfo;
import com.zrqx.core.util.BaseMapper;
import com.zrqx.statistics.entity.Live;
@Mapper
public interface FileMapper extends BaseMapper<FileInfo>{
public interface LiveMapper extends BaseMapper<Live>{
}
package com.zrqx.statistics.mapper;
import com.zrqx.core.util.BaseMapper;
import com.zrqx.statistics.entity.imports.Module;
public interface ModuleMapper extends BaseMapper<Module> {
}
package com.zrqx.statistics.mapper;
import java.util.List;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import com.zrqx.core.util.BaseMapper;
import com.zrqx.statistics.controller.CompleteQueryForm;
import com.zrqx.statistics.controller.ProjectTaskListVo;
import com.zrqx.statistics.entity.ProjectInfoPageForm;
import com.zrqx.statistics.entity.StatisticsBug;
import com.zrqx.statistics.entity.StatisticsTask;
import com.zrqx.statistics.entity.StatisticsTaskTime;
import com.zrqx.statistics.entity.TaskNameAndTime;
public interface StatisticsTaskMapper extends BaseMapper<StatisticsTask> {
@Select("<script>"
+ "SELECT t.id,p.name project,t.name,t.desc,t.finishedBy,t.finishedDate finishedDate,t.estimate FROM zt_task t,zt_project p WHERE t.project=p.id "
+ "<if test = '" + NOTBLANK + "(account)'>"
+ " AND t.finishedBy=#{account}"
+ "</if>"
+ "<if test = '" + NOTBLANK + "(startTime)'>"
+ " AND t.finishedDate &gt;= concat(#{startTime}, ' 00:00:00' ) "
+ "</if>"
+ "<if test = '" + NOTBLANK + "(endTime)'>"
+ " AND t.finishedDate &lt;= concat(#{endTime}, ' 23:59:59' ) "
+ "</if>"
+ "order by t.finishedDate desc"
+ "</script>"
)
List<StatisticsTask> queryTask(@Param("account") String account,@Param("startTime") String startTime,@Param("endTime")String endTime);
@Select("<script>"
+ "SELECT t.id,p.name project,t.name,t.desc,t.finishedBy,t.finishedDate finishedDate,t.estimate FROM zt_task t,zt_project p WHERE t.project=p.id "
+ " and (t.status='done') AND t.deleted = '0' "
+ "<if test = '" + NOTBLANK + "(account)'>"
+ " AND t.finishedBy=#{account} "
+ "</if>"
+ "<if test = '" + NOTBLANK + "(startTime)'>"
+ " AND t.finishedDate &gt;= concat(#{startTime}, ' 00:00:00' ) "
+ "</if>"
+ "<if test = '" + NOTBLANK + "(endTime)'>"
+ " AND t.finishedDate &lt;= concat(#{endTime}, ' 23:59:59' ) "
+ "</if>"
+ "order by t.finishedDate desc"
+ "</script>"
)
List<StatisticsTask> queryTaskPage(CompleteQueryForm form);
@Select("SELECT t.id,t.name,t.finishedDate,t.estimate,t.project,u.realname finishedBy FROM zt_task t LEFT JOIN zt_user u ON t.finishedBy=u.account WHERE"
+ " project = #{id}"
+ "")
List<StatisticsTask> queryTaskByProject(@Param("id") Integer id);
@Select(" SELECT u.id,SUM(t.estimate) as estimate,t.project,u.realname FROM zt_task t LEFT JOIN zt_user u ON t.finishedBy=u.account WHERE"
+ " project = #{id} and (t.status='done') AND t.deleted = '0' AND u.id IS NOT NULL GROUP BY u.id "
+ "")
List<StatisticsTask> queryTaskByProjectV1(Integer id);
@Select(" SELECT u.id , COUNT(t.id) AS bugs ,SUM(t.estimate) AS bugTime,u.realname AS name FROM zt_task t LEFT JOIN zt_user u ON t.finishedBy=u.account WHERE 1=1 "
+ " AND t.project = #{id} AND t.NAME LIKE '%bug%' GROUP BY u.id"
)
List<StatisticsBug> queryTaskBugByProject(@Param("id") Integer id);
@Select("<script>"
+ " SELECT t.id,t.name,t.finishedDate,t.estimate,p.name AS project,u.realname finishedBy FROM"
+ " zt_task t LEFT JOIN zt_user u ON t.finishedBy=u.account LEFT JOIN zt_dept d on u.dept = d.id "
+ " LEFT JOIN zt_project p ON t.project = p.id WHERE 1=1 "
+ " and (t.status='done') AND t.deleted = '0' "
+ " and t.project = #{form.id} "
+ "<if test='"+ NOTBLANK +"(form.finishedBy)'>"
+ " and u.realname like concat(#{form.finishedBy},'%') "
+ "</if>"
+ "<if test='form.month != null'>"
+ " AND MONTH(t.finishedDate) = #{form.month} "
+ "</if>"
+ "<if test='"+ NOTBLANK +"(form.department)'>"
+ " and d.name = #{form.department} "
+ "</if>"
+ "<if test='"+ NOTBLANK +"(form.keywords)'>"
+ " and t.name like concat('%',#{form.keywords},'%') "
+ "</if>"
+ " AND u.realname IS NOT NULL"
+ " order by t.finishedDate desc "
+ "</script>")
List<StatisticsTask> queryTaskByProjectPage(@Param("form") ProjectInfoPageForm form);
@Select("<script>"
+ " SELECT t.id,t.name,t.finishedDate,t.estimate,t.project,u.realname finishedBy FROM"
+ " zt_task t LEFT JOIN zt_user u ON t.finishedBy=u.account LEFT JOIN zt_dept d on u.dept = d.id WHERE 1=1 "
+ " and t.project = #{form.id} "
+ "<if test='"+ NOTBLANK +"(form.finishedBy)'>"
+ " and u.realname like concat(#{form.finishedBy},'%') "
+ "</if>"
+ "<if test='form.month != null'>"
+ " AND MONTH(t.finishedDate) = #{form.month} "
+ "</if>"
+ "<if test='"+ NOTBLANK +"(form.department)'>"
+ " and d.name = #{form.department} "
+ "</if>"
+ "<if test='"+ NOTBLANK +"(form.keywords)'>"
+ " and t.name like concat('%',#{form.keywords},'%') "
+ "</if>"
+ "</script>")
List<ProjectTaskListVo> queryTaskByProjectPageNew(@Param("form") ProjectInfoPageForm form);
String PARAM_VALUE1 = " SELECT u.realname as finishedBy,SUM(t.estimate) AS totalTime, d.name as deptName FROM "
+ " zt_task t,zt_user u,zt_dept d "
+ " WHERE 1=1 and (t.status='done') AND t.deleted = '0' "
+ " and t.finishedBy = u.account "
+ " AND u.dept = d.id "
+ " AND d.name IN ('前端研发','后端研发','产品部','设计部') ";
String PARAM_VALUE2 = " GROUP BY d.id,t.finishedBy ";
// 周排行
@Select("<script>"
+ PARAM_VALUE1
+ " AND YEARWEEK(date_format(t.finishedDate,'%Y-%m-%d')) = YEARWEEK(now()) "
+ PARAM_VALUE2
+ "</script>")
List<TaskNameAndTime> queryTaskNameDescWeek();
// 月排行
@Select("<script>"
+ PARAM_VALUE1
+ " AND DATE_FORMAT(t.finishedDate,'%Y-%m')=DATE_FORMAT(NOW(),'%Y-%m') "
+ PARAM_VALUE2
+ "</script>")
List<TaskNameAndTime> queryTaskNameDesc();
// 季度排行
@Select("<script>"
+ PARAM_VALUE1
+ " AND QUARTER(t.finishedDate)=QUARTER(now()) "
+ " AND YEAR(t.finishedDate)=YEAR(NOW()) "
+ PARAM_VALUE2
+ "</script>")
List<TaskNameAndTime> queryTaskNameDescQuarter();
}
package com.zrqx.statistics.mapper;
import java.util.List;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.Update;
import com.zrqx.core.util.BaseMapper;
import com.zrqx.statistics.controller.CompleteQueryForm;
import com.zrqx.statistics.entity.StatisticsProject;
import com.zrqx.statistics.entity.StatisticsTaskTime;
import com.zrqx.statistics.form.PerSaleManagementForm;
import com.zrqx.statistics.form.PerSaleManagementInfoForm;
import com.zrqx.statistics.form.ProjectManagementUpdateForm;
import com.zrqx.statistics.vo.PerSaleManagementInfoVo;
import com.zrqx.statistics.vo.PerSaleManagementVo;
import com.zrqx.statistics.vo.ProjectManageMentVo;
@Mapper
public interface StatisticsTaskTimeMapper extends BaseMapper<StatisticsTaskTime> {
@Select("<script> "
+ "SELECT max(u.account) account,u.realname name,SUM(t.estimate) time,max(d.name) dept "
+ " FROM zt_task t,zt_user u,zt_dept d WHERE (t.status='done') AND t.deleted = '0' "
+ "<if test = '" + NOTBLANK + "(startTime)'>"
+ " AND finishedDate &gt;= concat(#{startTime}, ' 00:00:00' ) "
+ "</if>"
+ "<if test = '" + NOTBLANK + "(endTime)'>"
+ " AND finishedDate &lt;= concat(#{endTime}, ' 23:59:59' ) "
+ "</if>"
+ " AND t.finishedBy = u.account AND d.id =u.dept "
+ "<if test = '" + NOTBLANK + "(deptName)'>"
+ " AND d.name=#{deptName}"
+ "</if>"
+ "<if test = '" + NOTBLANK + "(name)'>"
+ " AND u.realname=#{name}"
+ "</if>"
+ "AND d.id != 2 and d.id != 5"
+ " GROUP BY u.realname ORDER BY dept DESC,time DESC </script>"
)
List<StatisticsTaskTime> queryTaskTime(@Param("name") String name,@Param("startTime") String startTime,@Param("endTime")String endTime, @Param("deptName")String deptName);
@Select("<script> "
+ "SELECT max(u.account) account,u.realname name,SUM(t.estimate) time,max(d.name) dept "
+ " FROM zt_task t,zt_user u,zt_dept d WHERE (t.status='done') AND t.deleted = '0' and d.name !='离职人员' "
+ "<if test = '" + NOTBLANK + "(startTime)'>"
+ " AND finishedDate &gt;= concat(#{startTime}, ' 00:00:00' ) "
+ "</if>"
+ "<if test = '" + NOTBLANK + "(endTime)'>"
+ " AND finishedDate &lt;= concat(#{endTime}, ' 23:59:59' ) "
+ "</if>"
+ " AND t.finishedBy = u.account AND d.id =u.dept "
+ "<if test = '" + NOTBLANK + "(deptName)'>"
+ " AND d.name=#{deptName}"
+ "</if>"
+ "<if test = '" + NOTBLANK + "(name)'>"
+ " AND u.realname=#{name}"
+ "</if>"
+ "AND d.id != 2 and d.id != 5"
+ " GROUP BY u.realname ORDER BY dept DESC,time DESC"
+ " </script>"
)
List<StatisticsTaskTime> pagequeryTaskTime(CompleteQueryForm form);
@Select("SELECT sum(t.estimate) FROM zt_task t WHERE t.finishedBy = #{account} GROUP BY t.finishedBy")
Double queryTeamTime(@Param("account") String account);
@Select("<script>"
+ "SELECT sum(t.estimate) FROM zt_task t WHERE (t.status='done') AND t.deleted = '0' and t.finishedBy = #{account} "
+ "<if test = '" + NOTBLANK + "(form.startTime)'>"
+ " AND t.finishedDate &gt;= concat(#{form.startTime}, ' 00:00:00' ) "
+ "</if>"
+ "<if test = '" + NOTBLANK + "(form.endTime)'>"
+ " AND t.finishedDate &lt;= concat(#{form.endTime}, ' 23:59:59' ) "
+ "</if>"
+ " GROUP BY t.finishedBy"
+ "</script>")
Double queryTeamTimeNew(@Param("account") String account,@Param("form") CompleteQueryForm form);
@Select("SELECT SUM(t.estimate) AS bugTime FROM zt_task t WHERE 1=1 "
+ " AND t.finishedBy = #{account} AND t.NAME LIKE '%bug%' GROUP BY t.finishedBy"
)
Double queryBugTime(@Param("account") String account);
@Select("<script>"
+ "SELECT SUM(t.estimate) AS bugTime FROM zt_task t WHERE (t.status='done') AND t.deleted = '0' "
+ " AND t.finishedBy = #{account} AND t.NAME LIKE '%bug%' "
+ "<if test = '" + NOTBLANK + "(form.startTime)'>"
+ " AND t.finishedDate &gt;= concat(#{form.startTime}, ' 00:00:00' ) "
+ "</if>"
+ "<if test = '" + NOTBLANK + "(form.endTime)'>"
+ " AND t.finishedDate &lt;= concat(#{form.endTime}, ' 23:59:59' ) "
+ "</if>"
+ "GROUP BY t.finishedBy"
+ "</script> ")
Double queryBugTimeNew(@Param("account") String account,@Param("form") CompleteQueryForm form);
String PRE_SALE_COLUMN = " a.id pressId,a.name pressName,b.id projectId,b.name projectName,SUM(t.estimate) actualTime ";
String PRE_SALE_PARAM = " WHERE a.parent= '2832' "
// 出版社
+ "<if test = '" + NOTBLANK + "(form.pressName)'>"
+ " AND a.name like concat('%',#{form.pressName}, '%') "
+ "</if>"
// 姓名
+ "<if test = '" + NOTBLANK + "(form.name)'>"
+ " AND u.realname like concat('%',#{form.name}, '%') "
+ "</if>"
// 开始时间
+ "<if test = '" + NOTBLANK + "(form.startTime)'>"
+ " AND t.finishedDate &gt;= concat(#{form.startTime}, ' 00:00:00' ) "
+ "</if>"
// 结束时间
+ "<if test = '" + NOTBLANK + "(form.endTime)'>"
+ " AND t.finishedDate &lt;= concat(#{form.endTime}, ' 23:59:59' ) "
+ "</if>"
;
// 售前管理 page
@Select("<script>"
+ " select * from ( "
+ " SELECT " + PRE_SALE_COLUMN
+ " FROM "
+ " zt_module a LEFT JOIN zt_module b ON a.id = b.parent "
+ " LEFT JOIN zt_task t ON t.module = b.id "
+ " LEFT JOIN zt_user u ON t.finishedby = u.account "
+ PRE_SALE_PARAM
// 项目名称
+ "<if test = '" + NOTBLANK + "(form.projectName)'>"
+ " AND b.name like concat('%',#{form.projectName}, '%') "
+ "</if>"
+ " GROUP BY b.id "
+ "<if test = '" + BLANK + "(form.projectName)'>"
+ " UNION "
+ " SELECT " + PRE_SALE_COLUMN
+ " FROM "
+ " zt_module a "
+ " LEFT JOIN zt_module b ON a.id = b.parent "
+ " LEFT JOIN zt_task t ON t.module = a.id "
+ " LEFT JOIN zt_user u ON t.finishedby = u.account "
+ PRE_SALE_PARAM
+ " GROUP BY a.id "
+ "</if>"
+ " ) a group by pressId,projectId "
+ "</script>")
List<PerSaleManagementVo> page(@Param("form") PerSaleManagementForm form);
/**
* 售前管理详情
* @param form
* @return
* @author chyj
* @date: 2020年1月2日 上午10:39:07
*/
@Select("<script>"
+ " SELECT t.id taskId, t.name taskName, u.realname name, t.estimate predictTime,t.finishedDate finishData FROM zt_task t "
+ " LEFT JOIN zt_user u ON t.finishedBy=u.account "
+ " LEFT JOIN zt_dept d ON u.dept = d.id "
+ " WHERE t.module = #{form.projectId} "
// 姓名
+ " <if test='"+ NOTBLANK +"(form.name)'> "
+ " AND t.finishedBy like concat('%',#{form.name}, '%') "
+ " </if> "
// 部门
+ " <if test='"+ NOTBLANK +"(form.deptName)'> "
+ " AND d.name = #{form.deptName} "
+ " </if> "
// 开始时间
+ " <if test = '" + NOTBLANK + "(form.startTime)'> "
+ " AND t.finishedDate &gt;= concat(#{form.startTime}, ' 00:00:00' ) "
+ " </if> "
// 结束时间
+ " <if test = '" + NOTBLANK + "(form.endTime)'> "
+ " AND t.finishedDate &lt;= concat(#{form.endTime}, ' 23:59:59' ) "
+ " </if>"
+ " GROUP BY t.id "
+ "</script>")
List<PerSaleManagementInfoVo> getInfo(@Param("form") PerSaleManagementInfoForm form);
// 获取所有项目id
@Select("<script>"
+ " select id from zt_project where deleted = '0' "
+ "</script>")
List<Integer> selectToId();
// 获取项目状态表所有pid
@Select("<script>"
+ " select pId from zt_projectstatus "
+ "</script>")
List<Integer> selectToPid();
@Insert("<script>"
+ " INSERT INTO zt_projectstatus (id,STATUS,pId) VALUES (NULL,'preSale',#{id}) "
+ "</script>")
int insertStatus(Integer id);
@Select("<script>"
+ " SELECT p.name projectName,SUM(t.estimate) consumeTime,ps.status,p.id FROM zt_project p "
+ " LEFT JOIN zt_projectstatus ps ON p.id = ps.pId "
+ " LEFT JOIN zt_task t ON p.id = t.project "
+ " WHERE p.deleted = '0' AND t.deleted = '0' AND t.status = 'done' "
+ " <if test = '" + NOTBLANK + "(status)'> "
+ " and ps.status = #{status} "
+ " </if> "
+ " GROUP BY p.id "
+ "</script>")
List<ProjectManageMentVo> selectToVo(@Param("status") String status);
@Update("<script>"
+ " UPDATE zt_projectstatus SET STATUS = #{form.status} WHERE pId = #{form.id} "
+ "</script>")
int update(@Param("form") ProjectManagementUpdateForm form);
@Select("<script>"
+ " select p.id,p.name project,p.status,p.closedDate,p.end FROM zt_project p "
+ " LEFT JOIN zt_task t ON p.id= t.project "
+ " where p.DELETEd = '0' and (t.status='done') AND t.deleted = '0' "
+ " GROUP BY p.id ORDER BY p.openedDate DESC "
+ "</script>")
List<StatisticsProject> selectProjectAll();
}
package com.zrqx.statistics.mapper;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Param;
import com.zrqx.core.util.BaseMapper;
import com.zrqx.statistics.entity.imports.Task;
public interface TaskMapper extends BaseMapper<Task> {
@Insert(""
+ "INSERT INTO zt_task ( id,project,module,NAME,TYPE,estimate,consumed,zt_task.left,deadline,STATUS,zt_task.desc,openedBy"
+ ",color,mailto,openedDate,assignedTo,assignedDate,estStarted,realStarted,finishedBy,finishedDate "
+ ",canceledBy,canceledDate,closedBy,closedDate,closedReason,lastEditedBy,lastEditedDate)"
+ " VALUES(NULL,#{t.project},#{t.module},#{t.name},#{t.type},#{t.estimate},#{t.consumed},#{t.left},#{t.deadline},#{t.status},#{t.desc},#{t.openedBy}"
+ ",'','','1900-01-01 00:00:00','','1900-01-01 00:00:00','1900-01-01 00:00:00','1900-01-01 00:00:00','','1900-01-01 00:00:00'"
+ ",'','1900-01-01 00:00:00','','1900-01-01 00:00:00','','','1900-01-01 00:00:00')"
)
int add(@Param("t")Task t);
}
package com.zrqx.statistics.mapper;
import java.util.List;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import com.zrqx.core.util.BaseMapper;
import com.zrqx.statistics.entity.TimeApply;
import com.zrqx.statistics.entity.TimeApplyForm;
import com.zrqx.statistics.entity.TimeApplyVo;
import com.zrqx.statistics.entity.TimeChangeForm;
@Mapper
public interface TimeApplyChangeMapper extends BaseMapper<TimeApply>{
String PARAM_VALUE = "select id,projectName,headName,totalApplyTime,startTime1,endTime1,status1,status2,synchronous,pdfLable "
+ " from time_apply where 1=1 "
+ " <if test = '" + NOTBLANK + "(form.projectName)'> "
+ " and projectName like concat('%',#{form.projectName}, '%') "
+ " </if> "
+ "<if test = '" + NOTBLANK + "(form.headName)'>"
+ " AND headName like concat (#{form.headName},'%') "
+ "</if>"
+ "<if test = '" + NOTBLANK + "(form.startTime)'>"
+ " AND startTime1 &gt;= concat(#{form.startTime}, ' 00:00:00' ) "
+ "</if>"
+ "<if test = '" + NOTBLANK + "(form.endTime)'>"
+ " AND startTime1 &lt;= concat(#{form.endTime}, ' 23:59:59' ) "
+ "</if>";
@Select("<script>"
+ PARAM_VALUE
+ "<if test = '" + NOTBLANK + "(form.status)'>"
+ "<if test = '(form.status) == 1' >"
+ " and (status1 = 1 and status2 = 4) "
+ "</if>"
+ "<if test = '(form.status) != 1' >"
+ " and (status1 = 0 and status2 = 3) or (status1 = 0 and status2 = 4) or (status1 = 1 and status2 = 3)"
+ "</if>"
+ "</if>"
+ "</script>")
List<TimeApplyVo> pageTimeApply(@Param("form") TimeApplyForm form);
@Select("<script>"
+ PARAM_VALUE
+ "<if test = '" + NOTBLANK + "(form.status)'>"
+ " and status1 = 0 "
+ "</if>"
+ "</script>")
List<TimeApplyVo> pageTimeApply1(@Param("form") TimeApplyForm form);
@Select("<script>"
+ PARAM_VALUE
+ "<if test = '" + NOTBLANK + "(form.status)'>"
+ " and status2 = 3 "
+ "</if>"
+ "</script>")
List<TimeApplyVo> pageTimeApply2(@Param("form") TimeApplyForm form);
@Select("<script>"
+ " select sum(changeTime) from time_apply_change where timeApplyId = #{id} and status1 = '1' and status2 = '4' "
+ "</script>")
Double selectforTime(Integer id);
@Select("<script>"
+ " select sum(changeTime) from time_apply_change where timeApplyId = #{id} and deptName like concat('%',#{deptName}, '%') "
+ "</script>")
Double timeApplyChangeMapper(@Param("id")Integer id,@Param("deptName")String deptName);
@Select("<script>"
+ " select status1,status2 from time_apply_change where timeApplyId = #{id} order by status2 asc, status1 asc "
+ "</script>")
List<TimeChangeForm> selectForStatus(Integer id);
}
package com.zrqx.statistics.mapper;
import java.util.List;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import com.zrqx.core.util.BaseMapper;
import com.zrqx.statistics.entity.TimeApplyChange;
import com.zrqx.statistics.entity.TimeApplyChangeForm;
import com.zrqx.statistics.entity.TimeApplyChangeVo;
@Mapper
public interface TimeChangeMapper extends BaseMapper<TimeApplyChange>{
String PARAM_VALUE = "select id,deptName,changeTime,type,reason,createTime,status1,checkTime1,status2,checkTime2,timeApplyId "
+ " from time_apply_change where 1=1 "
+ " <if test = '" + NOTBLANK + "(form.deptName)'> "
+ " and deptName like concat('%',#{form.deptName}, '%') "
+ " </if> "
+ " <if test = '(form.timeApplyId) != null'> "
+ " and timeApplyId = #{form.timeApplyId} "
+ " </if> "
+ "<if test = '" + NOTBLANK + "(form.changeTime)'>"
+ " AND changeTime = #{form.changeTime}"
+ "</if>"
+ "<if test = '" + NOTBLANK + "(form.type)'>"
+ " AND type = #{form.type}"
+ "</if>"
+ "<if test = '" + NOTBLANK + "(form.reason)'>"
+ " AND reason = #{form.reason}"
+ "</if>"
+ "<if test = '" + NOTBLANK + "(form.startTime)'>"
+ " AND createTime &gt;= concat(#{form.startTime}, ' 00:00:00' ) "
+ "</if>"
+ "<if test = '" + NOTBLANK + "(form.endTime)'>"
+ " AND createTime &lt;= concat(#{form.endTime}, ' 23:59:59' ) "
+ "</if>";
@Select("<script>"
+ PARAM_VALUE
+ "<if test = '" + NOTBLANK + "(form.status)'>"
+ "<if test = '(form.status) == 1' >"
+ " and (status1 = 1 and status2 = 4) "
+ "</if>"
+ "<if test = '(form.status) != 1' >"
+ " and (status1 = 0 and status2 = 3) or (status1 = 0 and status2 = 4) or (status1 = 1 and status2 = 3)"
+ "</if>"
+ "</if>"
+ "</script>")
List<TimeApplyChangeVo> selectTimeApplyChange(@Param("form") TimeApplyChangeForm form);
@Select("<script>"
+ PARAM_VALUE
+ "<if test = '" + NOTBLANK + "(form.status)'>"
+ " and status1 = 0 "
+ "</if>"
+ "</script>")
List<TimeApplyChangeVo> pageTimeApply1(@Param("form") TimeApplyChangeForm form);
@Select("<script>"
+ PARAM_VALUE
+ "<if test = '" + NOTBLANK + "(form.status)'>"
+ " and status2 = 3 "
+ "</if>"
+ "</script>")
List<TimeApplyChangeVo> pageTimeApply2(@Param("form") TimeApplyChangeForm form);
}
......@@ -5,7 +5,7 @@ import java.util.List;
import org.apache.ibatis.session.RowBounds;
import com.github.pagehelper.PageInfo;
import com.zrqx.core.util.page.PageInfo;
import com.zrqx.core.util.page.PageParam;
import tk.mybatis.mapper.entity.Example;
......
......@@ -14,9 +14,10 @@ import javax.persistence.Id;
import org.apache.ibatis.session.RowBounds;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.zrqx.core.util.BaseMapper;
import com.zrqx.core.util.bean.BeanUtils;
import com.zrqx.core.util.page.PageInfo;
import com.zrqx.core.util.page.PageParam;
import tk.mybatis.mapper.entity.Example;
......
package com.zrqx.statistics.service;
import org.springframework.web.multipart.MultipartFile;
import com.zrqx.core.model.FileInfo;
public interface FileService extends BaseService<FileInfo, Integer>{
FileInfo uploadFile(MultipartFile file);
}
package com.zrqx.statistics.service;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;
import com.zrqx.core.model.FileInfo;
import com.zrqx.core.util.BaseMapper;
import com.zrqx.core.util.datatype.UUIDUtil;
import com.zrqx.statistics.mapper.FileMapper;
@Service
public class FileServiceImpl extends BaseServiceImpl<FileInfo, Integer> implements FileService{
private final static Logger logger = LoggerFactory.getLogger(FileServiceImpl.class);
@Autowired
private FileMapper mapper;
@Value("${file-root-path}")
private String rootPath;
@Override
public boolean insertUuidList(List<FileInfo> recordList) {
return false;
}
@Override
public BaseMapper<FileInfo> getMapper() {
return mapper;
}
@Override
public FileInfo uploadFile(MultipartFile file) {
String contentType = file.getContentType();
// 获取文件名
String fileName = file.getOriginalFilename();
// 获取文件的后缀名
String suffixName = fileName.substring(fileName.lastIndexOf("."));
// 解决中文问题,liunx下中文路径,图片显示问题
String uuid = UUIDUtil.getUUID();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd");
String path = sdf.format(new Date());
String filePath = rootPath + path + "/";
File targetFile = new File(filePath);
if (!targetFile.exists()) {
targetFile.mkdirs();
}
filePath = filePath + uuid + suffixName;
FileOutputStream fos = null;
BufferedOutputStream bos = null;
FileInfo entity = new FileInfo();
try {
fos = new FileOutputStream(filePath);
bos = new BufferedOutputStream(fos);
bos.write(file.getBytes());
entity.setFileName(uuid);
entity.setOriginalFileName(fileName);
entity.setSuffixName(suffixName);
entity.setPath(path);
entity.setContentType(contentType);
entity.setSize(file.getSize());
entity.setCreateTime(new Date());
// if (entity.getOriginalFileName().contains(".pdf")) {
// String param = "pdfFilename=" + entity.getPath() + "/" + entity.getFileName() + ".pdf" + "&pdfSlice=10";
// String url = "http://192.168.2.220:8080/file/dividePDFByPage?" + param;
// HttpClientUtil.doGet(url, "utf-8");
// }
} catch (Exception e) {
logger.error("上传异常:" + e);
e.printStackTrace();
} finally {
try {
if (null != fos)
fos.flush();
if (null != bos)
bos.close();
} catch (IOException e) {
}
}
return entity;
}
}
package com.zrqx.statistics.service;
import com.zrqx.statistics.entity.Live;
import com.zrqx.statistics.form.SetEventForm;
import com.zrqx.statistics.vo.MicroRoarReturn;
public interface LiveService extends BaseService<Live, Integer> {
/**
* 设置回调地址
* @param form
* @return
*/
MicroRoarReturn setEvent(SetEventForm form);
}
package com.zrqx.statistics.service;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.zrqx.core.util.BaseMapper;
import com.zrqx.core.util.http.HttpUtils;
import com.zrqx.statistics.config.MicroRoarConfig;
import com.zrqx.statistics.entity.Live;
import com.zrqx.statistics.form.MicroRoarForm;
import com.zrqx.statistics.form.SetEventForm;
import com.zrqx.statistics.mapper.LiveMapper;
import com.zrqx.statistics.vo.MicroRoarReturn;
@Service
public class LiveServiceImpl extends BaseServiceImpl<Live, Integer> implements LiveService {
private final static Logger log = LoggerFactory.getLogger(LiveServiceImpl.class);
@Autowired
private LiveMapper mapper;
@Autowired
@Override
public BaseMapper<Live> getMapper() {
return mapper;
}
public MicroRoarReturn create(MicroRoarForm form) {
Map<String, String> map = new HashMap<String, String>();
map.put("auth_type", MicroRoarConfig.AUTH_TYPE);
map.put("account", MicroRoarConfig.ACCOUNT);
map.put("password", MicroRoarConfig.PASSWORD);
String param = JSONObject.toJSONString(form);
System.out.println(param);
String resp = "";
try {
resp = HttpUtils.httpURLConnectionPOST(MicroRoarConfig.STATUS_URL, map, param);
System.out.println(resp);
log.info(resp);
} catch (Exception e) {
e.printStackTrace();
}
MicroRoarReturn microRoarReturn = JSON.toJavaObject(JSONObject.parseObject(resp), MicroRoarReturn.class);
return microRoarReturn;
}
// 调微吼创建直播接口
public MicroRoarReturn create(Object form, String str) {
Map<String, String> map = new HashMap<String, String>();
map.put("auth_type", MicroRoarConfig.AUTH_TYPE);
map.put("account", MicroRoarConfig.ACCOUNT);
map.put("password", MicroRoarConfig.PASSWORD);
String param = JSONObject.toJSONString(form);
String resp = "";
try {
if ("setEvent".equals(str)) {
resp = HttpUtils.httpURLConnectionPOST(MicroRoarConfig.SET_EVENT, map, param);
}
System.out.println(resp);
log.info(resp);
} catch (Exception e) {
e.printStackTrace();
}
MicroRoarReturn microRoarReturn = JSON.toJavaObject(JSONObject.parseObject(resp), MicroRoarReturn.class);
return microRoarReturn;
}
@Override
public MicroRoarReturn setEvent(SetEventForm form) {
MicroRoarReturn roarReturn = create(form, "setEvent");
return roarReturn;
}
@Override
public boolean insertUuidList(List<Live> recordList) {
// TODO Auto-generated method stub
return false;
}
}
package com.zrqx.statistics.service;
import java.util.List;
import com.zrqx.statistics.entity.imports.ImportVo;
import com.zrqx.statistics.entity.imports.Module;
public interface ModuleService extends BaseService<Module,Integer> {
boolean importModule(Integer parent ,Integer project,List<ImportVo> list);
}
package com.zrqx.statistics.service;
import java.util.List;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.zrqx.core.exception.BaseException;
import com.zrqx.core.util.BaseMapper;
import com.zrqx.statistics.entity.imports.ImportVo;
import com.zrqx.statistics.entity.imports.Module;
import com.zrqx.statistics.entity.imports.Task;
import com.zrqx.statistics.mapper.ModuleMapper;
import com.zrqx.statistics.mapper.TaskMapper;
@Service
public class ModuleServiceImpl extends BaseServiceImpl<Module, Integer> implements ModuleService {
@Autowired
private ModuleMapper moduleMapper;
@Autowired
private TaskMapper taskMapper;
@Override
public boolean insertUuidList(List<Module> recordList) {
return false;
}
@Override
public BaseMapper<Module> getMapper() {
// TODO Auto-generated method stub
return moduleMapper;
}
@Override
public boolean importModule(Integer parent ,Integer project, List<ImportVo> list) {
list.forEach(l->{
Module m = new Module();
m.setRoot(project);
m.setParent(parent);
String modelName = l.getModel();
if(StringUtils.isBlank(modelName)){
throw new BaseException("模块名字不能为空!");
}
m.setName(modelName);
Module model = moduleMapper.selectOne(m);
Task t = new Task();
//任务所属模块不存在 则新增
if(model== null){
//查询父模块信息
Module p = new Module();
p.setId(parent);
Module parentModel = moduleMapper.selectOne(p);
String ppath = ",";
if(parentModel == null ){
m.setParent(0);
m.setGrade(1);
}else{
m.setParent(parent);
ppath = parentModel.getPath();
m.setGrade(parentModel.getGrade()+1);
}
m.setPath(ppath);
m.setType("task");
m.setOwner("");
m.setCollector("");
m.setShort("");
moduleMapper.insert(m);
m.setPath(ppath+m.getId()+",");
moduleMapper.updateByPrimaryKey(m);
t.setModule(m.getId());
}else{
t.setModule(model.getId());
}
t.setProject(project);
t.setName(l.getTask());
t.setDesc(l.getDesc());
taskMapper.add(t);
});
return true;
}
}
package com.zrqx.statistics.service;
import java.io.Serializable;
import java.util.function.Consumer;
public interface NotNullInterface<M, ID extends Serializable> {
/**
* 根据id查询不为空的对象
* @param id
* @return
* @author lpf
* @date: 2019年2月18日 下午2:45:21
*/
M notNull(ID id);
/**
* 根据id 查询不为空的对象
* @param id
* @param consumer 更多的筛选条件
* @return
* @author lpf
* @date: 2019年2月18日 下午2:46:20
*/
M notNull(ID id, Consumer<M> consumer);
/**
* selectOne 封装notNull
* @param record
* @return
* @author ycw
* @date: 2019年2月20日 下午3:55:01
*/
M notNull(M record);
/**
* selectOne 封装notNull
* @param consumer
* @return
* @author ycw
* @date: 2019年2月20日 下午4:58:55
*/
M notNull(Consumer<M> consumer);
}
package com.zrqx.statistics.service;
import java.util.List;
import org.apache.ibatis.annotations.Param;
import com.zrqx.core.util.page.PageInfo;
import com.zrqx.core.util.page.PageParam;
import com.zrqx.statistics.entity.EchartsDataVo;
import com.zrqx.statistics.entity.PreSaleEchartsDataVo;
import com.zrqx.statistics.entity.ProjectPageForm;
import com.zrqx.statistics.entity.ProjectPageVo;
import com.zrqx.statistics.entity.ProjectTotalInfoVo;
import com.zrqx.statistics.entity.ProjectUserVo;
import com.zrqx.statistics.entity.StatisticsBug;
import com.zrqx.statistics.entity.StatisticsProject;
import com.zrqx.statistics.entity.StatisticsTaskTime;
import com.zrqx.statistics.entity.StatisticsTaskTimeForm;
import com.zrqx.statistics.entity.Team;
public interface StatisticsProjectService extends BaseService<StatisticsProject,String> {
PageInfo<StatisticsProject> queryProjectList(ProjectPageForm form,PageParam pageParam);
Integer queryBugCountByProject(Integer id);
List<Team> queryTeamByProject(Integer id);
/**
* 项目列表查询页
* @param form
* @return
* @author chyj
* @date: 2019年11月1日 下午3:22:23
*/
PageInfo<ProjectPageVo> queryProjectPage(ProjectPageForm form,PageParam pageParam);
ProjectTotalInfoVo projectTotalInfo();
List<String> selectDeptName();
String selectByprojectId(Integer id);
/**
* 首页曲线图获取数据
* @return
* @author chyj
* @date: 2019年11月12日 下午3:28:29
*/
EchartsDataVo selectEChartsData();
List<StatisticsProject> queryProjectList();
List<StatisticsTaskTime> queryProjectSplitData(StatisticsTaskTimeForm form);
int selectByCount(Integer id);
PreSaleEchartsDataVo selectPreSaleEchartsData();
}
package com.zrqx.statistics.service;
import java.util.List;
import com.zrqx.core.util.page.PageInfo;
import com.zrqx.core.util.page.PageParam;
import com.zrqx.statistics.controller.CompleteQueryForm;
import com.zrqx.statistics.entity.StatisticsProject;
import com.zrqx.statistics.entity.StatisticsTaskTime;
import com.zrqx.statistics.entity.UserEchartsDataVo;
import com.zrqx.statistics.form.PerSaleManagementForm;
import com.zrqx.statistics.form.PerSaleManagementInfoForm;
import com.zrqx.statistics.form.ProjectManagementUpdateForm;
import com.zrqx.statistics.form.UserManagementForm;
import com.zrqx.statistics.vo.PerSaleManagementInfoVo;
import com.zrqx.statistics.vo.PerSaleManagementVo;
import com.zrqx.statistics.vo.ProjectManageMentVo;
import com.zrqx.statistics.vo.UserManagementVo;
public interface StatisticsService extends BaseService<StatisticsTaskTime,String> {
PageInfo<StatisticsTaskTime> queryTaskTime(String name,String startTime,String endTime,String deptName,PageParam pageParam);
PageInfo<StatisticsTaskTime> queryTaskTime(PageParam pageParam, CompleteQueryForm form);
List<StatisticsTaskTime> queryTaskTime(String name,String startTime,String endTime,String deptName);
PageInfo<PerSaleManagementVo> page(PageParam pageParam, PerSaleManagementForm form);
PageInfo<PerSaleManagementInfoVo> getInfo(PageParam pageParam, PerSaleManagementInfoForm form);
PageInfo<ProjectManageMentVo> getList(String status);
//修改项目状态
Boolean update(ProjectManagementUpdateForm form);
// 查所有项目
List<StatisticsProject> projectAll();
UserManagementVo getProjectTotalInfo(UserManagementForm form);
UserEchartsDataVo getEchartsData(String dept);
}
package com.zrqx.statistics.service;
import java.util.List;
import org.apache.ibatis.annotations.Param;
import com.zrqx.core.util.page.PageInfo;
import com.zrqx.core.util.page.PageParam;
import com.zrqx.statistics.controller.CompleteQueryForm;
import com.zrqx.statistics.controller.ProjectTaskListVo;
import com.zrqx.statistics.entity.ProjectInfoPageForm;
import com.zrqx.statistics.entity.StatisticsBug;
import com.zrqx.statistics.entity.StatisticsTask;
import com.zrqx.statistics.vo.PorjectUserInfoVo;
public interface StatisticsTaskService extends BaseService<StatisticsTask,Integer> {
List<StatisticsTask> queryTask(String account,String startTime,String endTime);
List<StatisticsTask> queryTaskByProject(Integer id);
List<StatisticsBug> queryTaskBugByProject(Integer id);
PageInfo<StatisticsTask> queryTaskByProjectPage(ProjectInfoPageForm form, PageParam pageParam);
PageInfo<StatisticsTask> queryTaskPage(PageParam pageParam, CompleteQueryForm form);
List<PorjectUserInfoVo> queryTaskByProjectPageNew(ProjectInfoPageForm form);
}
package com.zrqx.statistics.service;
import java.math.BigDecimal;
import java.util.DoubleSummaryStatistics;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.zrqx.core.util.BaseMapper;
import com.zrqx.core.util.page.PageInfo;
import com.zrqx.core.util.page.PageParam;
import com.zrqx.statistics.controller.CompleteQueryForm;
import com.zrqx.statistics.controller.ProjectTaskListVo;
import com.zrqx.statistics.entity.ProjectInfoPageForm;
import com.zrqx.statistics.entity.StatisticsBug;
import com.zrqx.statistics.entity.StatisticsTask;
import com.zrqx.statistics.entity.Team;
import com.zrqx.statistics.mapper.StatisticsProjectMapper;
import com.zrqx.statistics.mapper.StatisticsTaskMapper;
import com.zrqx.statistics.vo.PorjectUserInfoVo;
@Service
public class StatisticsTaskServiceImpl extends BaseServiceImpl<StatisticsTask, Integer> implements StatisticsTaskService {
@Autowired
private StatisticsTaskMapper mapper;
@Autowired
private StatisticsProjectMapper spMapper;
@Override
public boolean insertUuidList(List<StatisticsTask> recordList) {
// TODO Auto-generated method stub
return false;
}
@Override
public List<StatisticsTask> queryTask(String account, String startTime, String endTime) {
return mapper.queryTask(account, startTime, endTime);
}
@Override
public BaseMapper<StatisticsTask> getMapper() {
// TODO Auto-generated method stub
return mapper;
}
@Override
public List<StatisticsTask> queryTaskByProject(Integer id) {
return mapper.queryTaskByProject(id);
}
@Override
public List<StatisticsBug> queryTaskBugByProject(Integer id) {
return mapper.queryTaskBugByProject(id);
}
@Override
public PageInfo<StatisticsTask> queryTaskByProjectPage(ProjectInfoPageForm form, PageParam pageParam) {
// 开启分页
startPage(pageParam);
List<StatisticsTask> list = mapper.queryTaskByProjectPage(form);
return new PageInfo<StatisticsTask>(list);
}
@Override
public PageInfo<StatisticsTask> queryTaskPage(PageParam pageParam, CompleteQueryForm form) {
// 开启分页
startPage(pageParam);
List<StatisticsTask> list = mapper.queryTaskPage(form);
list.forEach(vo ->{
vo.setDesc(delHtmlTags(vo.getDesc()));
vo.setName(delHtmlTags(vo.getName()));
vo.setProject(delHtmlTags(vo.getProject()));
});
return new PageInfo<StatisticsTask>(list);
}
@Override
public List<PorjectUserInfoVo> queryTaskByProjectPageNew(ProjectInfoPageForm form) {
//统计在团队中的可用工时
List<Team> teams = spMapper.queryTeamByProjectV1(form.getId());
//统计在项目中的实际工时
List<StatisticsTask> listArray = mapper.queryTaskByProjectV1(form.getId());
Map<Integer, Double> mapStatisticsTask = listArray.stream().collect(Collectors.toMap(StatisticsTask::getId, StatisticsTask::getEstimate));
//统计在项目中完成bug数量
List<StatisticsBug> list2 = mapper.queryTaskBugByProject(form.getId());
Map<Integer, StatisticsBug> mapStatisticsBug = list2.stream().collect(Collectors.toMap(StatisticsBug::getId, StatisticsBug -> StatisticsBug));
List<PorjectUserInfoVo> resultList = teams.stream().map(t -> {
PorjectUserInfoVo vo = new PorjectUserInfoVo();
vo.setId(t.getUserId());
vo.setSumHours(t.getSumHours());
vo.setName(t.getName());
Double estimate = mapStatisticsTask.get(t.getUserId());
if (estimate == null) {
estimate = 0d;
}
vo.setEstimate(estimate);
double beyondTime = new BigDecimal(estimate).subtract(new BigDecimal(t.getSumHours())).setScale(2,BigDecimal.ROUND_HALF_UP).doubleValue();
vo.setBeyondTime(beyondTime > 0d ? beyondTime : 0d);
StatisticsBug bug = mapStatisticsBug.get(t.getUserId());
if (bug == null) {
vo.setBugNum(0);
vo.setBugEestimate(0d);
vo.setRatio(0d);
} else {
Integer bugNum = bug.getBugs() == null ? 0 : bug.getBugs();
vo.setBugNum(bugNum);
Double bugEestimate = bug.getBugTime() == null ? 0d : bug.getBugTime();
vo.setBugEestimate(bugEestimate);
Double ratio = 0d;
if (vo.getEstimate() != 0) {
ratio = bugEestimate * 100 / vo.getEstimate();
BigDecimal b = new BigDecimal(ratio);
ratio = b.setScale(2,BigDecimal.ROUND_HALF_UP).doubleValue();
}
vo.setRatio(ratio);
}
return vo;
}).collect(Collectors.toList());
return resultList;
}
//去除标签
public String delHtmlTags(String htmlStr) {
//定义script的正则表达式,去除js可以防止注入
String scriptRegex="<script[^>]*?>[\\s\\S]*?<\\/script>";
//定义style的正则表达式,去除style样式,防止css代码过多时只截取到css样式代码
String styleRegex="<style[^>]*?>[\\s\\S]*?<\\/style>";
//定义HTML标签的正则表达式,去除标签,只提取文字内容
String htmlRegex="<[^>]+>";
//定义空格,回车,换行符,制表符
//String spaceRegex = "\\s*|\t|\r|\n";
// 过滤script标签
htmlStr = htmlStr.replaceAll(scriptRegex, "");
// 过滤style标签
htmlStr = htmlStr.replaceAll(styleRegex, "");
// 过滤html标签
htmlStr = htmlStr.replaceAll(htmlRegex, "");
// 过滤空格等
//htmlStr = htmlStr.replaceAll(spaceRegex, "");
return htmlStr.trim(); // 返回文本字符串
}
}
package com.zrqx.statistics.service;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import com.zrqx.core.util.page.PageInfo;
import com.zrqx.core.util.page.PageParam;
import com.zrqx.statistics.entity.TimeApply;
import com.zrqx.statistics.entity.TimeApplyForm;
import com.zrqx.statistics.entity.TimeApplyVo;
public interface TimeApplyChangeService extends BaseService<TimeApply,Integer> {
PageInfo<TimeApplyVo> pageTimeApply(PageParam pageParam, TimeApplyForm form, HttpServletRequest request);
Boolean batchDeleteApply(List<Integer> ids);
Double selectforTimeByName(Integer id,String deptName);
}
package com.zrqx.statistics.service;
import java.math.BigDecimal;
import java.text.ParsePosition;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.Date;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.zrqx.core.util.BaseMapper;
import com.zrqx.core.util.datatype.DateUtils;
import com.zrqx.core.util.page.PageInfo;
import com.zrqx.core.util.page.PageParam;
import com.zrqx.statistics.entity.TimeApply;
import com.zrqx.statistics.entity.TimeApplyForm;
import com.zrqx.statistics.entity.TimeApplyVo;
import com.zrqx.statistics.entity.TimeChangeForm;
import com.zrqx.statistics.mapper.TimeApplyChangeMapper;
import ch.qos.logback.core.joran.conditional.ThenAction;
import org.apache.commons.beanutils.BeanComparator;
import org.apache.commons.collections.ComparatorUtils;
import org.apache.commons.collections.comparators.ComparableComparator;
import org.apache.commons.collections.comparators.ComparatorChain;
import org.apache.commons.lang3.StringUtils;
@Service
public class TimeApplyChangeServiceImpl extends BaseServiceImpl<TimeApply, Integer> implements TimeApplyChangeService {
@Autowired
private TimeApplyChangeMapper timeApplyChangeMapper;
@Override
public boolean insertUuidList(List<TimeApply> recordList) {
return false;
}
@Override
public BaseMapper<TimeApply> getMapper() {
return timeApplyChangeMapper;
}
@Override
public PageInfo<TimeApplyVo> pageTimeApply(PageParam pageParam, TimeApplyForm form,HttpServletRequest request) {
startPage(pageParam);
List<TimeApplyVo> list = new ArrayList<TimeApplyVo>();
//获取登录人
String value = (String) request.getSession().getAttribute("timeApplyMember");
if ("0".equals(form.getStatus()) && StringUtils.isNotBlank(value)) {
if ("duan".equals(value)) {
list = timeApplyChangeMapper.pageTimeApply(form);
}else if ("chi".equals(value)) {
list = timeApplyChangeMapper.pageTimeApply1(form);
}else if ("yun".equals(value)) {
list = timeApplyChangeMapper.pageTimeApply2(form);
}
}else {
list = timeApplyChangeMapper.pageTimeApply(form);
}
list.forEach(vo ->{
// if ("1".equals(vo.getStatus1()) && "1".equals(vo.getStatus2())) {
// vo.setStatusZh("已审核");
// }else {
// vo.setStatusZh("未审核");
// }
if ("1".equals(vo.getStatus1())){
vo.setStatus1Zh("已审核");
}else if("0".equals(vo.getStatus1())){
vo.setStatus1Zh("未审核");
}
if ("4".equals(vo.getStatus2())){
vo.setStatus2Zh("已审核");
}else if ("3".equals(vo.getStatus2())){
vo.setStatus2Zh("未审核");
}
if ("0".equals(vo.getSynchronous())) {
vo.setSynchronousZh("否");
}else {
vo.setSynchronousZh("是");
}
Double time = timeApplyChangeMapper.selectforTime(vo.getId()) == null ? 0.0 : timeApplyChangeMapper.selectforTime(vo.getId());
BigDecimal add = new BigDecimal(vo.getTotalApplyTime()).add(new BigDecimal(time));
vo.setTotalApplyTime(add.doubleValue());
// 池总变更审核状态
List<TimeChangeForm> list1 = timeApplyChangeMapper.selectForStatus(vo.getId());
if (list1 != null ) {
list1.forEach(l ->{
vo.setChangeStatus1(l.getStatus1());
vo.setChangeStatus2(l.getStatus2());
});
boolean b = list1.stream().map(v ->{
return v;
}).anyMatch(v ->{
return "0".equals(v.getStatus1());
});
if (b) {
vo.setChangeStatus1Zh("有");
vo.setChangeStatus1("0");
}else {
vo.setChangeStatus1Zh("无");
vo.setChangeStatus1("1");
}
}else {
vo.setChangeStatus1Zh("无");
vo.setChangeStatus1("1");
}
// 云总变更状态
if (list1 != null ) {
boolean b = list1.stream().map(v ->{
return v;
}).anyMatch(v ->{
return "3".equals(v.getStatus2());
});
if (b) {
vo.setChangeStatus2Zh("有");
vo.setChangeStatus2("3");
}else {
vo.setChangeStatus2Zh("无");
vo.setChangeStatus2("4");
}
}else {
vo.setChangeStatus2Zh("无");
vo.setChangeStatus2("4");
}
if (vo.getStartTime1() != null) {
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
String dateString = formatter.format(vo.getStartTime1()) == null ? "-" : formatter.format(vo.getStartTime1());
vo.setStartTime(dateString);
} else {
vo.setStartTime("-");
}
if (vo.getEndTime1() != null) {
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
String endTime1 = formatter.format(vo.getEndTime1());
vo.setEndTime(endTime1);
}else {
vo.setEndTime("-");
}
});
//创建一个排序规则
Comparator mycmp = ComparableComparator.getInstance();
mycmp = ComparatorUtils.nullLowComparator(mycmp); //允许null
mycmp = ComparatorUtils.reversedComparator(mycmp); //逆序
//声明要排序的对象的属性,并指明所使用的排序规则,如果不指明,则用默认排序
ArrayList<Object> sortFields = new ArrayList<Object>();
sortFields.add(new BeanComparator("status2"));
sortFields.add(new BeanComparator("status1"));
sortFields.add(new BeanComparator("changeStatus2"));
sortFields.add(new BeanComparator("changeStatus1"));
sortFields.add(new BeanComparator("createTime",mycmp));
//创建一个排序链
ComparatorChain multiSort = new ComparatorChain(sortFields);
//开始真正的排序,按照先到后的规则
Collections.sort(list,multiSort);
return new PageInfo<TimeApplyVo>(list);
}
@Override
public Boolean batchDeleteApply(List<Integer> ids) {
ids.forEach(id ->{
TimeApply timeApply = super.selectByPrimaryKey(id);
if ("1".equals(timeApply.getStatus1()) && "4".equals(timeApply.getStatus2())) {
return ;
}
super.deleteByPrimaryKey(id);
// 变更
});
return true;
}
@Override
public Double selectforTimeByName(Integer id,String deptName) {
return timeApplyChangeMapper.timeApplyChangeMapper(id,deptName);
}
}
package com.zrqx.statistics.service;
import java.util.Map;
/**
* 工时申请限制用户
* @author lpf
* @date 2019年12月2日上午10:23:39
*/
public interface TimeApplyMemberService {
Map<String, String> getAllMember();
/**
* 验证用户是否存在,密码是否一致
* @param key
* @param value
* @return
* @author lpf
* @date: 2019年12月2日 上午10:33:30
*/
boolean isExist(String key, String value);
}
package com.zrqx.statistics.service;
import java.util.HashMap;
import java.util.Map;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Component;
@Component
public class TimeApplyMemberServiceImpl implements TimeApplyMemberService{
private Map<String,String> map = new HashMap<>();
// 构建用户
public TimeApplyMemberServiceImpl() {
map.put("yun", "123456");
map.put("chi", "clm556677");
map.put("duan", "123456");
}
@Override
public Map<String, String> getAllMember() {
return this.map;
}
@Override
public boolean isExist(String key, String value) {
if (StringUtils.isBlank(key) || StringUtils.isBlank(value)) {
return false;
}
String v = map.get(key);
if (StringUtils.isBlank(v) || !value.equals(v)) {
return false;
}
return true;
}
}
package com.zrqx.statistics.service;
import javax.servlet.http.HttpServletRequest;
import com.zrqx.core.util.page.PageInfo;
import com.zrqx.core.util.page.PageParam;
import com.zrqx.statistics.entity.TimeApplyChange;
import com.zrqx.statistics.entity.TimeApplyChangeForm;
import com.zrqx.statistics.entity.TimeApplyChangeVo;
public interface TimeChangeService extends BaseService<TimeApplyChange,Integer>{
PageInfo<TimeApplyChangeVo> pageTimeApplyChange(PageParam pageParam, TimeApplyChangeForm form,HttpServletRequest request);
}
package com.zrqx.statistics.service;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.zrqx.core.util.BaseMapper;
import com.zrqx.core.util.page.PageInfo;
import com.zrqx.core.util.page.PageParam;
import com.zrqx.statistics.entity.TimeApply;
import com.zrqx.statistics.entity.TimeApplyChange;
import com.zrqx.statistics.entity.TimeApplyChangeForm;
import com.zrqx.statistics.entity.TimeApplyChangeVo;
import com.zrqx.statistics.entity.TimeApplyVo;
import com.zrqx.statistics.mapper.TimeApplyChangeMapper;
import com.zrqx.statistics.mapper.TimeChangeMapper;
@Service
public class TimeChangeServiceImpl extends BaseServiceImpl<TimeApplyChange, Integer> implements TimeChangeService {
@Autowired
private TimeChangeMapper timeChangeMapper;
@Autowired
private TimeApplyChangeMapper timeApplyChangeMapper;
@Override
public boolean insertUuidList(List<TimeApplyChange> recordList) {
return false;
}
@Override
public BaseMapper<TimeApplyChange> getMapper() {
return timeChangeMapper;
}
@Override
public PageInfo<TimeApplyChangeVo> pageTimeApplyChange(PageParam pageParam, TimeApplyChangeForm form,HttpServletRequest request) {
startPage(pageParam);
List<TimeApplyChangeVo> list = new ArrayList<TimeApplyChangeVo>();
//获取登录人
String value = (String) request.getSession().getAttribute("timeApplyMember");
if ("0".equals(form.getStatus()) && StringUtils.isNotBlank(value)) {
if ("duan".equals(value)) {
list = timeChangeMapper.selectTimeApplyChange(form);
}else if ("chi".equals(value)) {
list = timeChangeMapper.pageTimeApply1(form);
}else if ("yun".equals(value)) {
list = timeChangeMapper.pageTimeApply2(form);
}
}else {
list = timeChangeMapper.selectTimeApplyChange(form);
}
TimeApply timeApply = timeApplyChangeMapper.selectByPrimaryKey(form.getTimeApplyId());
Double designTime = timeApply.getDesignApplyTime();
Double developTime = timeApply.getDevelopApplyTime();
Double productTime = timeApply.getProductApplyTime();
for (TimeApplyChangeVo vo : list) {
if ("1".equals(vo.getStatus1())) {
vo.setStatus1Zh("已审核");
}else if("0".equals(vo.getStatus1())) {
vo.setStatus1Zh("未审核");
}
if ("4".equals(vo.getStatus2())) {
vo.setStatus2Zh("已审核");
}else if("3".equals(vo.getStatus2())) {
vo.setStatus2Zh("未审核");
}
/*
* if ("设计".equals(vo.getDeptName())) { designTime = new
* BigDecimal(vo.getChangeTime()).add(new
* BigDecimal(designTime)).doubleValue();
* vo.setTotalChangeTime(designTime); }else if
* ("产品".equals(vo.getDeptName())) { productTime = new
* BigDecimal(vo.getChangeTime()).add(new
* BigDecimal(productTime)).doubleValue();
* vo.setTotalChangeTime(productTime); }else{ developTime = new
* BigDecimal(vo.getChangeTime()).add(new
* BigDecimal(developTime)).doubleValue();
* vo.setTotalChangeTime(developTime); }
*/
};
return new PageInfo<TimeApplyChangeVo>(list);
}
}
package com.zrqx.statistics.vo;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @author chyj
* @date 2019年12月13日下午3:01:41
*/
@Data
public class MicroRoarReturn {
@ApiModelProperty("编码")
private String code;
@ApiModelProperty("消息体")
private String msg;
@ApiModelProperty("data")
private String data;
}
package com.zrqx.statistics.vo;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
public class ModelAndPIdVo {
@ApiModelProperty("模块Id")
private Integer id;
@ApiModelProperty("项目id")
private Integer root;
@ApiModelProperty("branch")
private Integer branch;
@ApiModelProperty("模块名称")
private String name;
@ApiModelProperty("父类编码")
private Integer parent;
@ApiModelProperty("子类编码集")
private String path;
@ApiModelProperty("等级")
private Integer grade;
@ApiModelProperty("")
private Integer order;
@ApiModelProperty("类型")
private String type;
@ApiModelProperty("")
private String owner;
}
package com.zrqx.statistics.vo;
import java.util.Date;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
public class PerSaleManagementInfoVo {
@ApiModelProperty("任务Id")
private String taskId;
@ApiModelProperty("项目名称")
private String projectName;
@ApiModelProperty("任务名称")
private String taskName;
@ApiModelProperty("完成人员")
private String name;
@ApiModelProperty("预计工时")
private Double predictTime;
@ApiModelProperty("完成时间")
private String finishData;
}
package com.zrqx.statistics.vo;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
public class PerSaleManagementVo {
@ApiModelProperty("出版社id")
private Integer pressId;
@ApiModelProperty("出版社")
private String pressName;
@ApiModelProperty("项目id")
private Integer projectId;
@ApiModelProperty("项目名称")
private String projectName;
@ApiModelProperty("实际工时")
private Double actualTime;
}
package com.zrqx.statistics.vo;
import lombok.Data;
@Data
public class PorjectUserInfoVo {
// 用户id
private Integer id;
//总可用工时
private Double sumHours;
// 已消耗工时, 实际工时
private Double estimate;
// 超出工时
private Double beyondTime;
// bug数量
private Integer bugNum;
// bug消耗工时
private Double bugEestimate;
// bug消耗工时 比例
private Double ratio;
// 参与人员
private String name;
}
package com.zrqx.statistics.vo;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
public class ProjectManageMentVo {
@ApiModelProperty("项目id")
private Integer id;
@ApiModelProperty("项目名称")
private String projectName;
@ApiModelProperty("进度")
private String status; // 中文
private String status1;
@ApiModelProperty("已消耗工时")
private String consumeTime;
@ApiModelProperty("总工时")
private String sumTime;
}
package com.zrqx.statistics.vo;
import java.util.List;
import com.zrqx.statistics.entity.TaskNameAndTime;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
public class UserManagementVo {
@ApiModelProperty("工时排行")
private List<TaskNameAndTime> tnat;
}
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论