package com.hotent.runtime.controller; import com.fasterxml.jackson.databind.node.ObjectNode; import com.hotent.base.annotation.ApiGroup; import com.hotent.base.constants.ApiGroupConsts; import com.hotent.base.controller.BaseController; import com.hotent.base.feign.PortalFeignService; import com.hotent.base.model.CommonResult; import com.hotent.base.query.PageList; import com.hotent.base.query.QueryFilter; import com.hotent.base.util.BeanUtils; import com.hotent.base.util.JsonUtil; import com.hotent.base.util.StringUtil; import com.hotent.base.util.time.DateFormatUtil; import com.hotent.base.util.time.TimeUtil; import com.hotent.bpm.persistence.manager.BpmTaskDueTimeManager; import com.hotent.bpm.persistence.model.BpmTaskDueTime; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiParam; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; import java.time.LocalDateTime; /** * 任务期限统计 控制器类 * * @company 广州宏天软件股份有限公司 * @author zhangxianwen * @email zhangxw@jee-soft.cn * @date 2018年6月11日 */ @RestController @RequestMapping("/runtime/bpmTaskDueTime/v1/") @Api(tags="任务期限统计") @ApiGroup(group= {ApiGroupConsts.GROUP_BPM}) public class BpmTaskDueTimeController extends BaseController{ @Resource BpmTaskDueTimeManager bpmTaskDueTimeManager; @Resource PortalFeignService PortalFeignService; @RequestMapping(value="list", method=RequestMethod.POST, produces={"application/json; charset=utf-8" }) @ApiOperation(value = "任务期限统计列表(分页条件查询)", httpMethod = "POST", notes = "任务期限统计列表(分页条件查询)") public PageList listJson(@ApiParam(name="queryFilter",value="通用查询对象")@RequestBody QueryFilter queryFilter) throws Exception { return bpmTaskDueTimeManager.query(queryFilter); } @RequestMapping(value="get",method=RequestMethod.GET, produces = { "application/json; charset=utf-8" }) @ApiOperation(value = "获取任务期限统计明细", httpMethod = "GET", notes = "获取任务期限统计明细") public BpmTaskDueTime get(@ApiParam(name="id",value="任务期限统计id", required = true) @RequestParam String id) throws Exception{ return bpmTaskDueTimeManager.get(id); } @RequestMapping(value="getByTaskId",method=RequestMethod.GET, produces = { "application/json; charset=utf-8" }) @ApiOperation(value = "根据任务id 获取最新的延期信息", httpMethod = "GET", notes = "根据任务id 获取最新的延期信息") public BpmTaskDueTime getByTaskId(@ApiParam(name="taskId",value="任务id", required = true) @RequestParam String taskId) throws Exception{ BpmTaskDueTime bpmTaskDueTime=bpmTaskDueTimeManager.getByTaskId(taskId); if(BeanUtils.isEmpty(bpmTaskDueTime)){ return new BpmTaskDueTime(); } int remainingTime= 0; try { remainingTime = getRemainingTime(bpmTaskDueTime); } catch (Exception e) { e.printStackTrace(); } bpmTaskDueTime.setRemainingTime(remainingTime); return bpmTaskDueTime; } @RequestMapping(value="getExpirationDate",method=RequestMethod.GET, produces = { "application/json; charset=utf-8" }) @ApiOperation(value = "根据id获取到期时间", httpMethod = "GET", notes = "根据id获取到期时间") public Object getExpirationDate( @ApiParam(name="id",value="任务id", required = true) @RequestParam String id, @ApiParam(name="addDueTime",value="任务id", required = true) @RequestParam Integer addDueTime) throws Exception{ Object res=bpmTaskDueTimeManager.getExpirationDate(id,addDueTime); return res; } @RequestMapping(value="save",method=RequestMethod.POST, produces = { "application/json; charset=utf-8" }) @ApiOperation(value = "添加任务期限统计信息", httpMethod = "POST", notes = "添加任务期限统计信息") public CommonResult save(@ApiParam(name="bpmTaskDueTime",value="任务期限统计信息", required = true) @RequestBody BpmTaskDueTime bpmTaskDueTime) throws Exception{ CommonResult res=bpmTaskDueTimeManager.saveBpmTaskDueTime(bpmTaskDueTime); return res; } @RequestMapping(value="remove",method=RequestMethod.DELETE, produces = { "application/json; charset=utf-8" }) @ApiOperation(value = "删除任务期限统计记录", httpMethod = "DELETE", notes = "删除任务期限统计记录") public CommonResult remove(@ApiParam(name="aryIds",value="任务期限统计记录ID,多个用“,”号分隔", required = true) @RequestParam String aryIds) throws Exception{ String[] ids = null; if(!StringUtil.isEmpty(aryIds)){ ids = aryIds.split(","); } bpmTaskDueTimeManager.removeByIds(ids); return new CommonResult(true,"删除催办历史成功",""); } private int getRemainingTime(BpmTaskDueTime bpmTaskDueTime) throws Exception { int remainingTime=0; if("caltime".equals(bpmTaskDueTime.getDateType())){ // getSecondDiff 秒 remainingTime = TimeUtil.getSecondDiff(LocalDateTime.now(), bpmTaskDueTime.getStartTime())/60; }else{ // getWorkTimeByUser 毫秒 ObjectNode params=JsonUtil.getMapper().createObjectNode(); params.put("userId", bpmTaskDueTime.getUserId()); params.put("startTime", DateFormatUtil.formaDatetTime(bpmTaskDueTime.getStartTime())); params.put("endTime", DateFormatUtil.formaDatetTime(LocalDateTime.now())); remainingTime =(int) (PortalFeignService.getWorkTimeByUser(params)/60000); } remainingTime = bpmTaskDueTime.getDueTime() - remainingTime; if(remainingTime<=0){ remainingTime = 0; } return remainingTime; } }