package cn.com.goldenwater.dcproj.controller.meeting; import cn.com.goldenwater.dcproj.dto.MeetPersSginListDto; import cn.com.goldenwater.dcproj.dto.MeetSginInOutInfoDto; import cn.com.goldenwater.dcproj.model.MeetMeetingInfo; import cn.com.goldenwater.dcproj.model.MeetPersSginList; import cn.com.goldenwater.dcproj.model.MeetSginInOutInfo; import cn.com.goldenwater.dcproj.param.MeetPersSginListParam; import cn.com.goldenwater.dcproj.param.MeetSginInOutInfoParam; import cn.com.goldenwater.dcproj.service.MeetMeetingInfoService; import cn.com.goldenwater.dcproj.service.MeetPersSginListService; import cn.com.goldenwater.core.web.BaseController; import cn.com.goldenwater.core.web.BaseResponse; import cn.com.goldenwater.dcproj.service.MeetSginInOutInfoService; import cn.com.goldenwater.id.util.UuidUtil; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiParam; import org.apache.commons.lang3.StringUtils; import com.github.pagehelper.PageInfo; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RestController; import java.util.Collections; import java.util.Comparator; import java.util.Date; import java.util.List; /** * @author lune * @date 2019-7-23 */ @Api(value = "MEET 会议人员签到签退记录表管理", tags = "MEET 会议人员签到签退记录表管理") @RestController @RequestMapping("/meet/pers/sgin/list") public class MeetPersSginListController extends BaseController { private Logger logger = LoggerFactory.getLogger(getClass()); @Autowired private MeetPersSginListService meetPersSginListService; @Autowired private MeetSginInOutInfoService meetSginInOutInfoService; @Autowired private MeetMeetingInfoService meetMeetingInfoService; @ApiOperation(value = "添加/修改会议人员签到签退记录表") @RequestMapping(value = "", method = RequestMethod.POST) public BaseResponse insert(@ApiParam(name = "meetPersSginList", value = "MeetPersSginList", required = true) @RequestBody MeetPersSginList meetPersSginList) { if (StringUtils.isNotBlank(meetPersSginList.getSginId())) { MeetSginInOutInfo inOutInfo = meetSginInOutInfoService.get(meetPersSginList.getSginId()); //比较开始时间 if (inOutInfo.getStTm().compareTo(meetPersSginList.getSginTm()) > 0) { return buildFailResponse(17001, "时间未到!"); } //比较结束时间 if (inOutInfo.getEnTm().compareTo(meetPersSginList.getSginTm()) < 0) { return buildFailResponse(17001, "时间已过!"); } } if (StringUtils.isBlank(meetPersSginList.getId())) { String uuid = UuidUtil.uuid(); // 生成uuid meetPersSginList.setId(uuid); meetPersSginListService.insert(meetPersSginList); } else { meetPersSginListService.update(meetPersSginList); } return buildSuccessResponse(meetPersSginList); } @ApiOperation(value = "根据ID删除会议人员签到签退记录表") @RequestMapping(value = "/del/{id}", method = RequestMethod.GET) public BaseResponse delete(@ApiParam(name = "id", value = "id", required = true) @PathVariable String id) { int ret = meetPersSginListService.delete(id); return buildSuccessResponse(); } @ApiOperation(value = "根据ID获取会议人员签到签退记录表(单表)") @RequestMapping(value = "/{id}", method = RequestMethod.GET) public BaseResponse get(@ApiParam(name = "id", value = "id", required = true) @PathVariable String id) { MeetPersSginList meetPersSginList = meetPersSginListService.get(id); return buildSuccessResponse(meetPersSginList); } @ApiOperation(value = "获取会议人员签到签退记录表(列表所有)") @RequestMapping(value = "/list", method = RequestMethod.POST) public BaseResponse> list(@ApiParam(name = "meetPersSginListParam", value = "meetPersSginListParam", required = true) @RequestBody MeetPersSginListParam meetPersSginListParam) { List meetPersSginListList = meetPersSginListService.findList(meetPersSginListParam); return buildSuccessResponse(meetPersSginListList); } @ApiOperation(value = "获取会议人员签到签退记录表(列表--分页)") @RequestMapping(value = "/page", method = RequestMethod.POST) public BaseResponse> page(@ApiParam(name = "meetPersSginListParam", value = "meetPersSginListParam", required = true) @RequestBody MeetPersSginListParam meetPersSginListParam) { PageInfo meetPersSginListList = meetPersSginListService.findPageInfo(meetPersSginListParam); return buildSuccessResponse(meetPersSginListList); } @ApiOperation(value = "获取会议人员签到签退记录表信息(列表--分页)") @RequestMapping(value = "/getMeetPersSignPage", method = RequestMethod.POST) public BaseResponse> getMeetPersSignPage(@RequestBody MeetPersSginListParam meetPersSginListParam) { PageInfo pageInfo = meetPersSginListService.getMeetPersSignPage(meetPersSginListParam); return buildSuccessResponse(pageInfo); } @Deprecated @ApiOperation(value = "获取人员签到状态") @RequestMapping(value = "/getSignInState", method = RequestMethod.POST) public BaseResponse getSignInState(MeetPersSginListParam meetPersSginListParam) { MeetPersSginList meetPers = meetPersSginListService.findMeetPersSginList(meetPersSginListParam); if (meetPers != null) { return buildFailResponse(10002, "已签到!"); } MeetMeetingInfo info = meetMeetingInfoService.get(meetPersSginListParam.getMeetId()); List staList = null; if ("2".equals(info.getIsOut())) { if (info.getEnTm().compareTo(new Date()) < 0) { return buildFailResponse(10003, "签到时间已过,无法签到"); } } else { MeetSginInOutInfoParam param = new MeetSginInOutInfoParam(); param.setMeetId(meetPersSginListParam.getMeetId()); param.setType("1"); staList = meetSginInOutInfoService.findList(param); if (staList == null || staList.size() == 0) { return buildFailResponse(10004, "没有签到标准id"); } if (staList.size() > 0) { Collections.sort(staList, new Comparator() { @Override public int compare(MeetSginInOutInfo o1, MeetSginInOutInfo o2) { return o2.getStTm().compareTo(o1.getStTm()); } }); if (staList.get(0).getStTm().compareTo(new Date()) < 0) { return buildFailResponse(10001, "时间未到!"); } } param.setType("2"); List endList = meetSginInOutInfoService.findList(param); if (endList == null || endList.size() == 0) { if (info.getEnTm().compareTo(new Date()) < 0) { return buildFailResponse(10003, "签到时间已过,无法签到"); } } else if (endList.size() > 0) { Collections.sort(endList, new Comparator() { @Override public int compare(MeetSginInOutInfo o1, MeetSginInOutInfo o2) { return o2.getStTm().compareTo(o1.getStTm()); } }); if (staList.get(0).getStTm().compareTo(new Date()) < 0) { return buildFailResponse(10003, "签到时间已过,无法签到"); } } } return buildSuccessResponse(staList); } @Deprecated @ApiOperation(value = "获取人员签退状态") @RequestMapping(value = "/getSignOutState", method = RequestMethod.POST) public BaseResponse getSignOutState(MeetPersSginListParam meetPersSginListParam) { MeetPersSginList meetPers = meetPersSginListService.findMeetPersSginList(meetPersSginListParam); if (meetPers != null) { return buildFailResponse(10002, "已签退!"); } MeetSginInOutInfoParam param = new MeetSginInOutInfoParam(); param.setMeetId(meetPersSginListParam.getMeetId()); param.setType("2"); List endList = meetSginInOutInfoService.findList(param); if (endList == null || endList.size() == 0) { return buildFailResponse(10004, "没有签到标准id"); } Collections.sort(endList, new Comparator() { @Override public int compare(MeetSginInOutInfo o1, MeetSginInOutInfo o2) { return o2.getStTm().compareTo(o1.getStTm()); } }); if (endList.get(0).getStTm().compareTo(new Date()) > 0) { return buildFailResponse(10001, "时间未到!"); } return buildSuccessResponse(endList); } @ApiOperation(value = "获取人员签退状态") @RequestMapping(value = "/getSignState", method = RequestMethod.POST) public BaseResponse getSignState(MeetPersSginListParam meetPersSginListParam) { List list = meetPersSginListService.getSignState(meetPersSginListParam); MeetSginInOutInfoDto dto = null; long num = 0; Date now = new Date(); if (list != null || list.size() >= 0) { for (MeetSginInOutInfoDto sginInOutInfoDto : list) { if (StringUtils.isBlank(sginInOutInfoDto.getPerSignId())) { Date d1 = sginInOutInfoDto.getStTm(); Date d2 = sginInOutInfoDto.getEnTm(); long num1 = 0; long num2 = 0; if(d1.getTime()>=now.getTime()){ num1 = d1.getTime() - now.getTime(); }else{ num1 = now.getTime() - d1.getTime(); } if(d2.getTime()>=now.getTime()){ num2 = d2.getTime() - now.getTime(); }else { num2 = now.getTime() - d2.getTime(); } if(num2>=num1){ if(num1