Commit e361b04d by liangkaiping

copy

parent 0752a179
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>sign-project</artifactId>
<groupId>com.yizhi</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<groupId>com.yizhi</groupId>
<artifactId>cloud-sign-api</artifactId>
<version>1.0-SNAPSHOT</version>
<dependencies>
<dependency>
<groupId>com.yizhi</groupId>
<artifactId>cloud-common-api</artifactId>
<version>1.0-SNAPSHOT</version>
<scope>provided</scope>
</dependency>
<!-- <dependency>-->
<!-- <groupId>com.yizhi</groupId>-->
<!-- <artifactId>cloud-system-api</artifactId>-->
<!-- <version>1.0-SNAPSHOT</version>-->
<!-- <scope>provided</scope>-->
<!-- </dependency>-->
<dependency>
<groupId>com.yizhi</groupId>
<artifactId>cloud-util</artifactId>
<version>1.0-SNAPSHOT</version>
<scope>provided</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
<configuration>
<skip>true</skip>
</configuration>
</plugin>
<plugin>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
\ No newline at end of file
package com.yizhi.sign.application.constant;
public interface EnrollError {
final String ENROLL_SEARCH_ERROR ="SIGN_SEARCH_ERROR";
final String ENROLL_SEARCH_ERROR_MSG ="签到搜索错误";
}
/**
*
* 功能描述:
* @Package: com.yizhi.application.constant
* @author: xingliang
* @date: 2018年3月7日 下午4:04:57
*/
package com.yizhi.sign.application.constant;
/**
*
* @ClassName: SignError.java
* @Description:
*
* @author: xingliang
* @date: 2018年3月7日 下午4:04:57
*
* 2018年3月7日 xingliang
*/
public class SignError {
public static final String SIGN_QRCODE_ERROR = "SIGN_QRCODE_ERROR";
public static final String SIGN_QRCODE_ERROR_MSG = "二维码生成错误";
public static final String SIGN_QRCODE_PARAM_NOT_FOUND = "SIGN_QRCODE_PARAM_NOT_FOUND";
public static final String SIGN_QRCODE_PARAM_NOT_FOUND_MSG = "培训项目id为空";
}
/**
*
* 功能描述:
* @Package: com.yizhi.application.constant
* @author: xingliang
* @date: 2018年3月8日 上午11:15:16
*/
package com.yizhi.sign.application.constant;
/**
*
* @ClassName: SignRespCode.java
* @Description:
*
* @author: xingliang
* @date: 2018年3月8日 上午11:15:16
*
* 2018年3月8日 xingliang
*/
public class SignRespCode {
public static String TRAINING_PROJECT_NULL = "TRAINING_PROJECT_NULL";
public static String TRAINING_PROJECT_NULL_MSG = "项目不存在";
public static Integer TRAINING_PROJECT_SIGN_TYPE_NO = 0;
public static String TRAINING_PROJECT_SIGN_TYPE_NO_MSG = "项目不需要签到";
/**
* 开启补签
*/
public static Integer SIGN_ENABLE_RETROACTIVE_TRUE = 1;
/**
* 关闭补签
*/
public static Integer SIGN_ENABLE_RETROACTIVE_FALSE = 0;
/**
* 正常签到
*/
public static Integer SIGN_RECORD_STATUS_DEFAULT = 0;
/**
* 补签到
*/
public static Integer SIGN_RECORD_STATUS_RETROACTIVE = 1;
}
package com.yizhi.sign.application.feign;
import com.baomidou.mybatisplus.plugins.Page;
import com.yizhi.sign.application.vo.domain.StatisticsSign;
import com.yizhi.sign.application.vo.domain.StatisticsSignLearn;
import com.yizhi.sign.application.vo.domain.TrSign;
import com.yizhi.sign.application.vo.domain.TrSignTime;
import com.yizhi.util.application.domain.Response;
import io.swagger.annotations.ApiOperation;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import java.util.Date;
import java.util.List;
@FeignClient(name = "sign", contextId = "ReportSignClient")
public interface ReportSignClient {
/**
* 异步加载统计
*
* @param startDate
* @param endDate
* @return
*/
@GetMapping("/remote/statisticsSign/asynchronous/load/data")
public Response<String> asynchronousSign(@RequestParam("startDate") String startDate, @RequestParam("endDate") String endDate);
@GetMapping("/remote/statisticsSign/group")
Page<StatisticsSign> signPage(@RequestParam(name = "projectId", required = false) Long projectId,
@RequestParam(name = "kwd", required = false) String kwd,
@RequestParam(name = "startDate", required = false) String startDate,
@RequestParam(name = "endDate", required = false) String endDate,
@RequestParam(name = "signCompanyId", required = false) Long signCompanyId,
@RequestParam(name = "signOrgIds", required = false) List<Long> signOrgIds,
@RequestParam(name = "signSiteId", required = false) Long signSiteId,
@RequestParam(name = "pageNo", required = false) Integer pageNo,
@RequestParam(name = "pageSize", required = false) Integer pageSize);
@GetMapping("/remote/statisticsSign/group/view")
Page<StatisticsSign> signView(
@RequestParam(name = "id", required = true) Long id,
@RequestParam(name = "projectId", required = true) Long projectId,
@RequestParam(name = "startDate", required = false) String startDate,
@RequestParam(name = "endDate", required = false) String endDate,
@RequestParam(name = "orgNameOrCode", required = false) String orgNameOrCode,
@RequestParam(name = "accountName", required = false) String accountName,
@RequestParam(name = "pageNo", required = false) Integer pageNo,
@RequestParam(name = "pageSize", required = false) Integer pageSize);
@GetMapping("/remote/statisticsSign/chart/group")
List<StatisticsSign> chartGroup(@RequestParam(name = "trainningProjectId", required = false) Long trainningProjectId,
@RequestParam(name = "startDate", required = false) String startDate,
@RequestParam(name = "endDate", required = false) String endDate,
@RequestParam(name = "signCompanyId", required = false) Long signCompanyId,
@RequestParam(name = "signOrgIds", required = false) List<Long> signOrgIds,
@RequestParam(name = "signSiteId", required = false) Long signSiteId);
@ApiOperation(value = "各项目的签到统计", notes = "各项目的签到统计")
@GetMapping("/remote/statisticsSign/group/count")
Integer signPageCount(@RequestParam(name = "projectId", required = false) Long projectId,
@RequestParam(name = "startDate", required = false) String startDate,
@RequestParam(name = "endDate", required = false) String endDate,
@RequestParam(name = "signCompanyId", required = false) Long signCompanyId,
@RequestParam(name = "signOrgIds", required = false) List<Long> signOrgIds,
@RequestParam(name = "signSiteId", required = false) Long signSiteId);
@ApiOperation(value = "各项目的签到统计列表", notes = "各项目的签到统计")
@GetMapping("/remote/statisticsSign/group/list")
List<StatisticsSign> signPageList(@RequestParam(name = "projectId", required = false) Long projectId,
@RequestParam(name = "startDate", required = false) String startDate,
@RequestParam(name = "endDate", required = false) String endDate,
@RequestParam(name = "signCompanyId", required = false) Long signCompanyId,
@RequestParam(name = "signOrgIds", required = false) List<Long> signOrgIds,
@RequestParam(name = "signSiteId", required = false) Long signSiteId,
@RequestParam(name = "pageNo", required = false) Integer pageNo,
@RequestParam(name = "pageSize", required = false) Integer pageSize);
@ApiOperation(value = "某个项目的签到统计个数", notes = "某个项目的签到统计个数")
@GetMapping("/remote/statisticsSign/group/view/count")
Integer signViewCount(
@RequestParam(name = "id", required = true) Long id,
@RequestParam(name = "projectId", required = true) Long projectId,
@RequestParam(name = "startDate", required = false) String startDate,
@RequestParam(name = "endDate", required = false) String endDate,
@RequestParam(name = "orgNameOrCode", required = false) String orgNameOrCode,
@RequestParam(name = "accountName", required = false) String accountName);
@ApiOperation(value = "某个项目的签到统计个数列表", notes = "某个项目的签到统计个数列表")
@GetMapping("/remote/statisticsSign/group/view/list")
List<StatisticsSign> signViewList(
@RequestParam(name = "id", required = true) Long id,
@RequestParam(name = "projectId", required = true) Long projectId,
@RequestParam(name = "startDate", required = false) String startDate,
@RequestParam(name = "endDate", required = false) String endDate,
@RequestParam(name = "orgNameOrCode", required = false) String orgNameOrCode,
@RequestParam(name = "accountName", required = false) String accountName,
@RequestParam(name = "pageNo", required = false) Integer pageNo,
@RequestParam(name = "pageSize", required = false) Integer pageSize);
@ApiOperation(value = "获取签到时间段", notes = "获取签到时间段")
@GetMapping("/remote/statisticsSign/group/getSignTime")
TrSignTime getSignTime(@RequestParam("getSignTime") Long signTimeId);
@GetMapping("/remote/statisticsSign/group/selectRecordMinTime")
Date selectRecordMinTime();
@GetMapping("/remote/statisticsSign/group/getAllResearchs")
List<TrSign> getAllResearchs(@RequestParam("startDate") String startDate, @RequestParam("endDate") String endDate);
/**
* 报表服务获取签到记录
* @param signTimeId
* @param startDate
* @param endDate
* @return
*/
@GetMapping("/remote/statisticsSign/group/getRecords")
List<StatisticsSignLearn> getRecords(@RequestParam("signTimeId") Long signTimeId, @RequestParam("startDate") String startDate, @RequestParam("endDate") String endDate);
}
package com.yizhi.sign.application.feign;
import com.baomidou.mybatisplus.plugins.Page;
import com.yizhi.sign.application.vo.domain.TrSignAccount;
import com.yizhi.sign.application.vo.*;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestParam;
import java.util.Map;
/**
* 签到-学员端 <br>
* 〈〉
*
* @author phone
* @create 2018/4/12
* @since 1.0.0
*/
@FeignClient(name = "sign", contextId = "SignApiClient")
public interface SignApiClient {
/**
* 学员端二维码签到
* @param signIdVO
* @return
*/
@PostMapping(value = "/remote/api/sign/", produces="text/html;charset=UTF-8")
String sign(@RequestBody SignVO signVO);
/**
* 我的签到记录
* @param pageVO
* @return
*/
@PostMapping("/remote/api/sign/my/record/list")
Page<TrSignRecordVo> recordList(@RequestBody PageVO pageVO);
/**
* 获取签到总数量( PC 端 培训项目中培训统计的签到总数)
* @param trainingProjectId
* @return
*/
@PostMapping("/remote/api/sign/pc/count")
public Integer getPcSignTimeCount(@RequestParam("trainingProjectId") Long trainingProjectId);
@ApiOperation(value = "验证签到邀请码", notes = "验证签到邀请码", response = TrSignAccount.class)
@GetMapping("/remote/api/sign/checkCode")
public Map<String, Object> checkCode(
@ApiParam(name = "code", value = "项目签到邀请码", required = false) @RequestParam(name = "code", required = true) String code,
@ApiParam(name = "openId", value = "微信小程序openId 默认不传", required = false) @RequestParam(name = "openId", required = false) String openId,
@ApiParam(name = "accountId", value = "用户id 默认不传", required = false) @RequestParam(name = "accountId", required = false) Long accountId);
@ApiOperation(value = "验证用户身份", notes = "验证用户身份")
@PostMapping("/remote/api/sign/checkAccount")
public Map<String, Object> checkAccount(@RequestBody SignAccountParam param);
@ApiOperation(value = "小程序签到详情", notes = "小程序签到详情", response = ApiSignTimeVO.class)
@GetMapping("/remote/api/sign/signDetail")
public ApiSignTimeVO signDetail(
@ApiParam(name = "accountId", value = "用户id ", required = true) @RequestParam(name = "accountId", required = true) Long accountId,
@ApiParam(name = "code", value = "项目签到邀请码", required = true) @RequestParam(name = "code", required = true) String code,
@ApiParam(name = "trainingProjectId", value = "培训项目id ", required = false) @RequestParam(name = "trainingProjectId", required = false) Long trainingProjectId);
@ApiOperation(value = "小程序签到切换用户", notes = "小程序签到切换用户")
@GetMapping("/remote/api/sign/delRelation")
public String delRelation(
@ApiParam(name = "accountId", value = "用户id ", required = true) @RequestParam(name = "accountId", required = true) Long accountId,
@ApiParam(name = "code", value = "项目签到邀请码", required = true) @RequestParam(name = "code", required = true) String code,
@ApiParam(name = "openId", value = "微信小程序openId", required = true) @RequestParam(name = "openId", required = true) String openId);
@GetMapping("/remote/api/sign/insert")
public String insert(
@ApiParam(name = "accountId", value = "用户id ", required = true) @RequestParam(name = "accountId", required = true) Long accountId,
@ApiParam(name = "trainingProjectId", value = "项目id ", required = true) @RequestParam(name = "trainingProjectId", required = true) Long trainingProjectId,
@ApiParam(name = "signTimeId", value = "签到id ", required = true) @RequestParam(name = "signTimeId", required = true) Long signTimeId);
}
\ No newline at end of file
/**
* Copyright (C), 2015-2018, XXX有限公司
* FileName: SignManageClient
* Author: phone
* Date: 2018/4/9 16:59
* Description: 签到-管理端
* History:
* <author> <time> <version> <desc>
* 作者姓名 修改时间 版本号 描述
*/
package com.yizhi.sign.application.feign;
import com.yizhi.sign.application.vo.domain.TrSign;
import com.yizhi.sign.application.vo.SignIdVO;
import com.yizhi.sign.application.vo.SignQrcodeVO;
import com.yizhi.sign.application.vo.SignVO;
import io.swagger.annotations.ApiOperation;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestParam;
import java.util.List;
/**
* 〈一句话功能简述〉<br>
* 〈签到-管理端〉
*
* @author phone
* @create 2018/4/9
* @since 1.0.0
*/
@FeignClient(name = "sign", contextId = "SignManageClient")
public interface SignManageClient {
/**
* 新建签到信息
* @param signVO
* @return
*/
@PostMapping(value = "/remote/manage/sign/insert")
public Long insert(@RequestBody SignVO signVO);
/**
* 获取签到信息
* @param signIdVO
* @return
*/
@PostMapping(value = "/remote/manage/sign/view")
public SignVO getSign(@RequestBody SignIdVO signIdVO);
/**
* 修改签到信息
* @param signVO
* @return
*/
@PostMapping("/remote/manage/sign/update")
public boolean update(@RequestBody SignVO signVO);
/**
* 删除签到信息
* @param signIdVO
* @return
*/
@PostMapping("/remote/manage/sign/delete")
public boolean deleteSignByProjectId(@RequestBody SignIdVO signIdVO);
/**
* 获取生成的二维码Url
* @param signIdVO
* @return
*/
@PostMapping("/remote/manage/sign/qrcode/get")
List<SignQrcodeVO> qrcode(@RequestBody SignIdVO signIdVO);
@ApiOperation("根据签到id获取签到")
@GetMapping("/remote/manage/sign/one/get")
TrSign getSign(
@RequestParam(name = "signId" )Long signId
);
@ApiOperation("根据签到时间段id获取签到")
@GetMapping("/remote/manage/sign/time/get")
TrSign getSignByTime(@RequestParam(name = "signTimeId" )Long signId);
}
\ No newline at end of file
/**
* Copyright (C), 2015-2018, XXX有限公司
* FileName: SignRecordClient
* Author: phone
* Date: 2018/4/4 17:16
* Description: 签到记录接口
* History:
* <author> <time> <version> <desc>
* 作者姓名 修改时间 版本号 描述
*/
package com.yizhi.sign.application.feign;
import com.yizhi.sign.application.vo.domain.TrSignRecord;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestParam;
import java.util.List;
/**
* 〈一句话功能简述〉<br>
* 〈签到记录接口〉
*
* @author fanchunhui
* @create 2018/4/4
* @since 1.0.0
*/
@FeignClient(name = "sign", contextId = "SignRecordApiClient")
public interface SignRecordApiClient {
/**
* 我的签到总数量
* @return
*/
@GetMapping("/remote/api/sign/record/count")
Integer selectSignRecordCountByAccountId(@RequestParam("accountId") Long accountId);
/**
* 获取签到完成数量( PC 端 学习统计签到 完成数量)
* @param trainingProjectId 培训项目ID
* @return
*/
@GetMapping("/remote/api/sign/record/pc/finishedCount")
public Integer selectCountByTrainingProjectId(@RequestParam("trainingProjectId") Long trainingProjectId,@RequestParam("accountId")Long accountId);
/**
*签到记录导出
* @param trainingProjectId
* @return
*/
@GetMapping("/remote/api/sign/record/export")
public String exportSignRecord(@RequestParam(name = "trainingProjectId") Long trainingProjectId);
@PostMapping("/remote/api/sign/record/insert")
public boolean insertSignRecordList(@RequestBody List<TrSignRecord> signRecordList);
}
package com.yizhi.sign.application.vo;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
@Api(tags = "ApiSignTimeVO", description = "签到详情VO")
public class ApiSignTimeVO {
@ApiModelProperty(value = "主键id")
private Long id;
@ApiModelProperty(value = "有效签到时间区间(日期)左值,格式:yyyy-mm-dd HH:mm:ss")
private String startTime;
@ApiModelProperty(value = "有效签到时间区间(日期)右值,格式:yyyy-mm-dd HH:mm:ss")
private String endTime;
@ApiModelProperty(value = "签到地点")
private String address;
@ApiModelProperty(value = "签到范围")
private String range;
@ApiModelProperty(value = "签到积分")
private Integer point;
@ApiModelProperty(value = "培训项目id")
private Long trainingProjectId;
@ApiModelProperty(value = "培训项目名称")
private String name;
@ApiModelProperty(value = "签到状态")
private Integer state;
@ApiModelProperty(value = "签到时间")
private String signDate;
@ApiModelProperty(value = "经度")
private Double longitude;
@ApiModelProperty(value = "纬度")
private Double latitude;
@ApiModelProperty(value = "站点id")
private Long siteId;
}
package com.yizhi.sign.application.vo;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.Date;
/**
* @author Ding
* @className ExportSignRecordVO
* @description TODO
* @date 2019/6/6
**/
@Data
@Api(tags = "ExportSignRecordVO", description = "签到记录导出VO")
public class ExportSignRecordVO {
@ApiModelProperty(value = "学员ID")
private Long accountId;
@ApiModelProperty(value = "项目名称")
private String tainingProjectName;
@ApiModelProperty(value = "开始时间")
private Date startTime;
@ApiModelProperty(value = "结束时间")
private Date endTime;
@ApiModelProperty(value = "用户名")
private String accountName;
@ApiModelProperty(value = "姓名")
private String accountFullName;
@ApiModelProperty(value = "签到状态,0未签到,1已签到,2补签")
private Integer signState;
@ApiModelProperty(value = "签到时间")
private Date signTime;
@ApiModelProperty(value = "所属部门")
private String orgName;
@ApiModelProperty(value = "用户状态")
private Integer accountState;
}
/**
* Copyright (C), 2015-2018, XXX有限公司
* FileName: PageVO
* Author: phone
* Date: 2018/4/12 16:28
* Description: 分页VO
* History:
* <author> <time> <version> <desc>
* 作者姓名 修改时间 版本号 描述
*/
package com.yizhi.sign.application.vo;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* 〈一句话功能简述〉<br>
* 〈分页VO〉
*
* @author phone
* @create 2018/4/12
* @since 1.0.0
*/
@Data
@Api(tags = "PageVO", description = "分页查询参数")
public class PageVO {
@ApiModelProperty(value = "学员ID")
private Long accountId;
@ApiModelProperty(value = "页码")
Integer pageNo;
@ApiModelProperty(value = "每页显示数")
Integer pageSize;
@ApiModelProperty(value = "年份")
String year;
@ApiModelProperty(value = "月份")
String month;
}
\ No newline at end of file
package com.yizhi.sign.application.vo;
import lombok.Data;
@Data
public class SignAccountParam {
private String name;
private String pwd;
private String code;
private String openId;
}
/**
* Copyright (C), 2015-2018, XXX有限公司
* FileName: SignIdVO
* Author: phone
* Date: 2018/4/9 17:11
* Description: Post参数VO
* History:
* <author> <time> <version> <desc>
* 作者姓名 修改时间 版本号 描述
*/
package com.yizhi.sign.application.vo;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* 〈一句话功能简述〉<br>
* 〈Post参数VO〉
*
* @author phone
* @create 2018/4/9
* @since 1.0.0
*/
@Data
@Api(tags = "SignIdVO", description = "主键")
public class SignIdVO {
@ApiModelProperty(value = "主键id")
Long id;
@ApiModelProperty(value = "企业ID")
Long companyId;
@ApiModelProperty(value = "站点ID")
Long siteId;
@ApiModelProperty(value = "组织ID")
Long orgId;
@ApiModelProperty(value = "学员名ID")
Long accountId;
@ApiModelProperty(value = "学员名")
String accountName;
}
\ No newline at end of file
package com.yizhi.sign.application.vo;
import java.util.Date;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
public class SignQrcodeVO {
private Long id;
private Date startTime;
private Date endTime;
@ApiModelProperty(value = "是否开启定位(0:否,1:是),默认否")
private Integer enablePosition;
@ApiModelProperty(value = "签到地点")
private String address;
@ApiModelProperty(value = "签到范围")
private String range;
private String code;
@ApiModelProperty(value = "签到积分")
private Integer point;
}
package com.yizhi.sign.application.vo;
import java.util.Date;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
@ApiModel(value = "线下签到导入行对象", description = "线下签到导入行对象")
public class SignRecordImportVO {
@ApiModelProperty("用户名")
private String name;
@ApiModelProperty("用户Id")
private Long accountId;
@ApiModelProperty("部门id")
private Long orgId;
@ApiModelProperty("部门名称")
private String orgName;
@ApiModelProperty("项目id")
private Long trainProjectId;
@ApiModelProperty("项目名称")
private String trainProjectName;
@ApiModelProperty(value = "有效签到时间区间左值")
private Date startTime;
@ApiModelProperty(value = "有效签到时间区间右值")
private Date endTime;
@ApiModelProperty("签到时间")
private Date signTime;
@ApiModelProperty("行数")
private Integer rowNumber;
@ApiModelProperty("是否签到")
private String isSign;
}
package com.yizhi.sign.application.vo;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* Created by phone on 2018/3/9.
*/
@Data
@Api(tags = "SignRemindVO", description = "签到提醒表VO,一个 sign_time 对应一个 sign_remind")
public class SignRemindVO {
@ApiModelProperty(value = "主键id")
private Long id;
@ApiModelProperty(value = "提醒时间")
private Integer remindTime;
}
package com.yizhi.sign.application.vo;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* Created by phone on 2018/3/8.
*/
@Data
@Api(tags = "SignTimeVO", description = "签到时间段VO,一个 sign 对应多个 sign_time")
public class SignTimeVO {
@ApiModelProperty(value = "主键id(为空新增,不为空修改)")
private Long id;
@ApiModelProperty(value = "有效签到时间区间(日期)左值,格式:2018-05-17")
private String startTime;
@ApiModelProperty(value = "有效签到时间区间(小时)左值")
private String startHour;
@ApiModelProperty(value = "有效签到时间区间(分钟)左值")
private String startMinute;
@ApiModelProperty(value = "有效签到时间区间(日期)右值,格式:2018-05-17")
private String endTime;
@ApiModelProperty(value = "有效签到时间区间(小时)右值")
private String endHour;
@ApiModelProperty(value = "有效签到时间区间(分钟)右值")
private String endMinute;
@ApiModelProperty(value = "签到地点")
private String address;
@ApiModelProperty(value = "签到范围")
private String range;
@ApiModelProperty(value = "签到积分")
private Integer point;
@ApiModelProperty(value = "经度")
private Double longitude;
@ApiModelProperty(value = "纬度")
private Double latitude;
}
package com.yizhi.sign.application.vo;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.List;
/**
* <p>
* 签到主体表,入口在培训项目
* </p>
*
* @author fanchunhui123
* @since 2018-03-07
*/
@Data
@Api(tags = "SignVO", description = "签到VO类,入口在培训项目")
public class SignVO {
@ApiModelProperty(value = "主键id")
private Long id;
@ApiModelProperty(value = "学员ID")
private Long accountId;
@ApiModelProperty(value = "培训项目id")
private Long trainingProjectId;
@ApiModelProperty(value = "签到名称")
private String name;
@ApiModelProperty(value = "二维码,0:生成一张,1:按时间段生成多张")
private Integer type;
@ApiModelProperty(value = "是否开启补签(0:否,1:是),默认否")
private Integer enableRetroactive;
@ApiModelProperty(value = "是否消息提醒(分钟),0不提醒")
private Integer remindTime;
@ApiModelProperty(value = "是否开启邮件提醒(0:否,1:是),默认否。")
private Integer enableRemindMail;
@ApiModelProperty(value = "是否开启站内提醒(0:否,1:是),默认否。")
private Integer enableRemindNote;
@ApiModelProperty(value = "签到提醒模版ID。")
private Long mailRemindTemplateId;
@ApiModelProperty(value = "提醒内容")
private String remindContent;
@ApiModelProperty(value = "签到时间列表")
private List<SignTimeVO> trSignTimeVOs;
@ApiModelProperty(value = "签到途径")
private Integer signType;
@ApiModelProperty(value = "签到时间段")
private Long signTimeId;
@ApiModelProperty(value = "企业ID")
Long companyId;
@ApiModelProperty(value = "站点ID")
Long siteId;
@ApiModelProperty(value = "组织ID")
Long orgId;
@ApiModelProperty(value = "学员名")
String accountName;
@ApiModelProperty(value = "是否开启定位(0:否,1:是),默认否")
private Integer enablePosition;
}
package com.yizhi.sign.application.vo;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* <p>
* 签到记录表
* </p>
*
* @author fanchunhui123
* @since 2018-03-07
*/
@Data
@Api(tags = "TrSignRecordVo", description = "签到记录Vo")
public class TrSignRecordVo {
private static final long serialVersionUID = 1L;
@ApiModelProperty(value = "培训项目ID")
private Long trainingProjectId;
@ApiModelProperty(value = "培训项目name")
private String trainingProjectName;
@ApiModelProperty(value = "月份")
private String month;
@ApiModelProperty(value = "签到时间")
private String signDate;
@ApiModelProperty(value = "签到地点")
private String address;
}
/**
*
* 功能描述:
* @Package: com.yizhi.application.domain
* @author: xingliang
* @date: 2018年3月9日 下午3:32:03
*/
package com.yizhi.sign.application.vo.domain;
/**
*
* @ClassName: SignRecordVO.java
* @Description:
*
* @author: xingliang
* @date: 2018年3月9日 下午3:32:03
*
* 2018年3月9日 xingliang
*/
public class SignRecordVO {
private String trainingProjectName;
private String signTime;
/**
* @return the trainingProjectName
*/
public String getTrainingProjectName() {
return trainingProjectName;
}
/**
* @param trainingProjectName the trainingProjectName to set
*/
public void setTrainingProjectName(String trainingProjectName) {
this.trainingProjectName = trainingProjectName;
}
/**
* @return the signTime
*/
public String getSignTime() {
return signTime;
}
/**
* @param signTime the signTime to set
*/
public void setSignTime(String signTime) {
this.signTime = signTime;
}
}
package com.yizhi.sign.application.vo.domain;
import com.baomidou.mybatisplus.annotations.TableField;
import com.baomidou.mybatisplus.annotations.TableId;
import com.baomidou.mybatisplus.annotations.TableName;
import com.baomidou.mybatisplus.enums.IdType;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.Date;
@Data
@Api(tags = "StatisticsSign", description = "签到统计表")
@TableName("statistics_sign_metadata")
public class StatisticsSign {
@ApiModelProperty(value = "自增")
@TableId(value = "id", type = IdType.AUTO)
private Long id;
@ApiModelProperty(value = "签到id")
@TableField("sign_id")
private Long signId;
@ApiModelProperty(value = "签到时间段id")
@TableField("sign_time_id")
private Long signTimeId;
@ApiModelProperty(value = "培训项目id")
@TableField("trainning_project_id")
private Long trainningProjectId;
@ApiModelProperty(value = "签到编号")
@TableField("sign_no")
private String signNo;
@ApiModelProperty(value = "签到名称")
@TableField("sign_name")
private String signName;
@ApiModelProperty(value = "培训项目名称")
@TableField("trainning_project_name")
private String trainningProjectName;
@ApiModelProperty(value = "签到开始时间")
@TableField("sign_start_time")
private Date signStartTime;
@ApiModelProperty(value = "签到结束时间")
@TableField("sign_end_time")
private Date signEndTime;
@ApiModelProperty(value = "创建签到的公司Id")
@TableField("sign_company_id")
private Long signCompanyId;
@ApiModelProperty(value = "创建签到的组织id")
@TableField("sign_org_id")
private Long signOrgId;
@ApiModelProperty(value = "创建签到的站点id")
@TableField("sign_site_id")
private Long signSiteId;
@ApiModelProperty(value = "签到创建时间")
@TableField("sign_create_time")
private Date signCreateTime;
@ApiModelProperty(value = "项目创建时间")
@TableField("project_create_time")
private Date projectCreateTime;
@ApiModelProperty(value = "用户id")
@TableField("account_id")
private Long accountId;
@ApiModelProperty(value = "用户编号")
@TableField("account_work_num")
private String accountWorkNum;
@ApiModelProperty(value = "用户名")
@TableField("account_name")
private String accountName;
@ApiModelProperty(value = "用户姓名")
@TableField("account_fullname")
private String accountFullname;
@ApiModelProperty(value = "用户状态")
@TableField("account_state")
private Integer accountState;
@ApiModelProperty(value = "用户公司id")
@TableField("account_company_id")
private Long accountCompanyId;
@ApiModelProperty(value = "用户组织id")
@TableField("account_org_id")
private Long accountOrgId;
@ApiModelProperty(value = "用户站点id")
@TableField("account_site_id")
private Long accountSiteId;
@ApiModelProperty(value = "签到时间")
@TableField("sign_time")
private Date signTime;
@ApiModelProperty(value = "用户组织名称")
@TableField("org_name")
private String orgName;
@ApiModelProperty(value = "用户所有父类组织")
@TableField("org_parent_names")
private String orgParentNames;
@ApiModelProperty(value = "应签到")
@TableField("can_state")
private Integer canState;
@ApiModelProperty(value = "实际签到")
@TableField("join_state")
private Integer joinState;
@ApiModelProperty(value = "应签到人数")
@TableField(exist = false)
private Integer canStateCount;
@ApiModelProperty(value = "实际签到人数")
@TableField(exist = false)
private Integer joinStateCount;
@ApiModelProperty(value = "未签到人数")
@TableField(exist = false)
private Integer notSignCount;
@ApiModelProperty(value = "签到地点")
@TableField("address")
private String address;
@ApiModelProperty(value = "签到范围")
@TableField("range")
private String range;
}
package com.yizhi.sign.application.vo.domain;
import com.baomidou.mybatisplus.annotations.TableName;
import io.swagger.annotations.Api;
import lombok.Data;
@Data
@Api(tags = "StatisticsSignLearn", description = "签到明细")
@TableName("statistics_sign_learn_metadata")
public class StatisticsSignLearn extends StatisticsSign{
private static final long serialVersionUID = -1170397195805248674L;
}
package com.yizhi.sign.application.vo.domain;
import com.baomidou.mybatisplus.activerecord.Model;
import com.baomidou.mybatisplus.annotations.TableField;
import com.baomidou.mybatisplus.annotations.TableName;
import com.baomidou.mybatisplus.enums.FieldFill;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
/**
* <p>
* 签到主体表,入口在培训项目
* </p>
*
* @author fanchunhui123
* @since 2018-03-07
*/
@Data
@Api(tags = "TrSign", description = "签到主体表,入口在培训项目")
@TableName("tr_sign")
public class TrSign extends Model<TrSign> {
private static final long serialVersionUID = 1L;
@ApiModelProperty(value = "主键id")
private Long id;
@ApiModelProperty(value = "培训项目id")
@TableField("training_project_id")
private Long trainingProjectId;
@ApiModelProperty(value = "签到名称")
private String name;
@ApiModelProperty(value = "0:生成一张,1:按时间段生成多张")
private Integer type;
@ApiModelProperty(value = "是否消息提醒(分钟),0不提醒")
@TableField("remind_time")
private Integer remindTime;
@ApiModelProperty(value = "是否开启补签(0:否,1:是),默认否")
@TableField("enable_retroactive")
private Integer enableRetroactive;
@ApiModelProperty(value = "是否开启邮件提醒(0:否,1:是),默认否。")
@TableField("enable_remind_mail")
private Integer enableRemindMail;
@ApiModelProperty(value = "是否开启短信提醒(0:否,1:是),默认否。")
@TableField("enable_remind_note")
private Integer enableRemindNote;
@ApiModelProperty(value = "是否开启app推送签到提醒,默认0")
@TableField("enable_remind_app")
private String enableRemindApp;
@ApiModelProperty(value = "邮件模板")
@TableField("mail_remind_template_id")
private Long mailRemindTemplateId;
@ApiModelProperty(value = "app消息推送模板")
@TableField("app_remind_template_id")
private Long appRemindTemplateId;
@ApiModelProperty(value = "提醒内容")
@TableField("remind_content")
private String remindContent;
@ApiModelProperty(value = "企业id")
@TableField("company_id")
private Long companyId;
@ApiModelProperty(value = "站点id")
@TableField("site_id")
private Long siteId;
@TableField("org_id")
private Long orgId;
@ApiModelProperty(value = "创建者id")
@TableField(value = "create_by_id", fill = FieldFill.INSERT)
private Long createById;
@ApiModelProperty(value = "创建者名称")
@TableField(value = "create_by_name", fill = FieldFill.INSERT)
private String createByName;
@ApiModelProperty(value = "创建时间")
@TableField(value = "create_time", fill = FieldFill.INSERT)
private Date createTime;
@ApiModelProperty(value = "更新者id")
@TableField(value = "update_by_id", fill = FieldFill.INSERT)
private Long updateById;
@ApiModelProperty(value = "修改者名称")
@TableField(value = "update_by_name", fill = FieldFill.INSERT)
private String updateByName;
@ApiModelProperty(value = "修改时间")
@TableField(value = "update_time", fill = FieldFill.INSERT)
private Date updateTime;
@ApiModelProperty(value = "是否删除:0.未删除 1.已删除")
private Integer state;
@ApiModelProperty(value = "可见范围")
@TableField(exist = false)
private Integer visibleRange;
@ApiModelProperty("培训项目名称")
@TableField(exist = false)
private String trainningProjectName;
@ApiModelProperty("培训项目创建时间")
@TableField(exist = false)
private Date projectCreateTime;
@ApiModelProperty("签到时间段id")
@TableField(exist = false)
private Long signTimeId;
@ApiModelProperty("某个签到的开始时间")
@TableField(exist = false)
private Date signStartDate;
@ApiModelProperty("某个签到的结束时间")
@TableField(exist = false)
private Date signEndDate;
@ApiModelProperty(value = "是否开启定位(0:否,1:是),默认否")
@TableField("enable_position")
private Integer enablePosition;
@ApiModelProperty(value = "签到地点")
@TableField("address")
private String address;
@ApiModelProperty(value = "签到范围")
@TableField("range")
private String range;
@Override
protected Serializable pkVal() {
return this.id;
}
}
package com.yizhi.sign.application.vo.domain;
import java.util.Date;
import com.baomidou.mybatisplus.annotations.TableField;
import com.baomidou.mybatisplus.annotations.TableName;
import com.baomidou.mybatisplus.enums.FieldFill;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
@Api(tags = "TrSignAccount", description = "小程序签到绑定关系表")
@TableName("tr_sign_account")
public class TrSignAccount {
@ApiModelProperty(value = "主键id")
private Long id;
@ApiModelProperty(value = "用户id")
@TableField(value = "account_id")
private Long accountId;
@ApiModelProperty(value = "小程序openId")
@TableField(value = "open_id")
private String openId;
@ApiModelProperty(value = "是否解绑(0:否,1:是) 默认0")
private Integer deleted;
@ApiModelProperty(value = "签到邀请码")
private String code;
@ApiModelProperty(value = "创建者id")
@TableField(value = "create_by_id", fill = FieldFill.INSERT)
private Long createById;
@ApiModelProperty(value = "姓名")
@TableField(value = "full_name", fill = FieldFill.INSERT)
private String fullName;
@ApiModelProperty(value = "创建者名称")
@TableField(value = "create_by_name", fill = FieldFill.INSERT)
private String createByName;
@ApiModelProperty(value = "创建时间")
@TableField(value = "create_time", fill = FieldFill.INSERT)
private Date createTime;
@ApiModelProperty(value = "更新者id")
@TableField(value = "update_by_id", fill = FieldFill.INSERT)
private Long updateById;
@ApiModelProperty(value = "修改者名称")
@TableField(value = "update_by_name", fill = FieldFill.INSERT)
private String updateByName;
@ApiModelProperty(value = "修改时间")
@TableField(value = "update_time", fill = FieldFill.INSERT)
private Date updateTime;
}
package com.yizhi.sign.application.vo.domain;
import com.baomidou.mybatisplus.activerecord.Model;
import com.baomidou.mybatisplus.annotations.TableField;
import com.baomidou.mybatisplus.annotations.TableName;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
/**
* <p>
* 签到记录表
* </p>
*
* @author fanchunhui123
* @since 2018-03-07
*/
@Data
@Api(tags = "TrSignRecord", description = "签到记录表")
@TableName("tr_sign_record")
public class TrSignRecord extends Model<TrSignRecord> {
private static final long serialVersionUID = 1L;
@ApiModelProperty(value = "主键id")
private Long id;
@ApiModelProperty(value = "签到id")
@TableField("sign_id")
private Long signId;
@ApiModelProperty(value = "培训项目id")
@TableField("training_project_id")
private Long trainingProjectId;
@ApiModelProperty(value = "账号id")
@TableField("account_id")
private Long accountId;
@ApiModelProperty(value = "签到时间")
@TableField("sign_time")
private Date signTime;
@ApiModelProperty(value = "签到状态:0:正常签到,1:补签。默认0。")
@TableField("sign_status")
private Integer signStatus;
@ApiModelProperty(value = "签到类型:0:平台签到,1:自定义项目。默认0。")
@TableField("type")
private Integer type;
@ApiModelProperty(value = "创建时间")
@TableField("create_time")
private Date createTime;
@ApiModelProperty(value = "签到地点")
@TableField("address")
private String address;
@Override
protected Serializable pkVal() {
return this.id;
}
}
package com.yizhi.sign.application.vo.domain;
import com.baomidou.mybatisplus.activerecord.Model;
import com.baomidou.mybatisplus.annotations.TableField;
import com.baomidou.mybatisplus.annotations.TableName;
import com.baomidou.mybatisplus.enums.FieldFill;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
/**
* <p>
* 签到提醒时间,一个sign_time对应一个sign_time
* </p>
*
* @author fanchunhui123
* @since 2018-03-07
*/
@Data
@Api(tags = "TrSignRemind", description = "签到提醒时间,一个sign_time对应一个sign_time")
@TableName("tr_sign_remind")
public class TrSignRemind extends Model<TrSignRemind> {
private static final long serialVersionUID = 1L;
@ApiModelProperty(value = "主键id")
private Long id;
@ApiModelProperty(value = "签到时间段id")
@TableField("sign_time_id")
private Long signTimeId;
@ApiModelProperty(value = "提醒时间")
@TableField("remind_time")
private Date remindTime;
@ApiModelProperty(value = "创建者id")
@TableField(value = "create_by_id", fill = FieldFill.INSERT)
private Long createById;
@ApiModelProperty(value = "创建者名称")
@TableField(value = "create_by_name", fill = FieldFill.INSERT)
private String createByName;
@ApiModelProperty(value = "创建时间")
@TableField(value = "create_time", fill = FieldFill.INSERT)
private Date createTime;
@ApiModelProperty(value = "更新者id")
@TableField(value = "update_by_id", fill = FieldFill.INSERT)
private Long updateById;
@ApiModelProperty(value = "修改者名称")
@TableField(value = "update_by_name", fill = FieldFill.INSERT)
private String updateByName;
@ApiModelProperty(value = "修改时间")
@TableField(value = "update_time", fill = FieldFill.INSERT)
private Date updateTime;
@Override
protected Serializable pkVal() {
return this.id;
}
}
package com.yizhi.sign.application.vo.domain;
import com.baomidou.mybatisplus.activerecord.Model;
import com.baomidou.mybatisplus.annotations.TableField;
import com.baomidou.mybatisplus.annotations.TableName;
import com.baomidou.mybatisplus.enums.FieldFill;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
/**
* <p>
* 签到时间段,一个 sign 对应多个 sign_time
* </p>
*
* @author fanchunhui123
* @since 2018-03-07
*/
@Data
@Api(tags = "TrSignTime", description = "签到时间段,一个 sign 对应多个 sign_time")
@TableName("tr_sign_time")
public class TrSignTime extends Model<TrSignTime> {
private static final long serialVersionUID = 1L;
@ApiModelProperty(value = "主键id")
private Long id;
@ApiModelProperty(value = "冗余项目id")
@TableField("training_project_id")
private Long trainingProjectId;
@ApiModelProperty(value = "签名id")
@TableField("sign_id")
private Long signId;
@ApiModelProperty(value = "有效签到时间区间左值")
@TableField("start_time")
private Date startTime;
@ApiModelProperty(value = "有效签到时间区间右值")
@TableField("end_time")
private Date endTime;
@ApiModelProperty(value = "是否停用(0:否,1:是) 默认0")
private Integer deleted;
@ApiModelProperty(value = "创建者id")
@TableField(value = "create_by_id", fill = FieldFill.INSERT)
private Long createById;
@ApiModelProperty(value = "创建者名称")
@TableField(value = "create_by_name", fill = FieldFill.INSERT)
private String createByName;
@ApiModelProperty(value = "创建时间")
@TableField(value = "create_time", fill = FieldFill.INSERT)
private Date createTime;
@ApiModelProperty(value = "更新者id")
@TableField(value = "update_by_id", fill = FieldFill.INSERT)
private Long updateById;
@ApiModelProperty(value = "修改者名称")
@TableField(value = "update_by_name", fill = FieldFill.INSERT)
private String updateByName;
@ApiModelProperty(value = "修改时间")
@TableField(value = "update_time", fill = FieldFill.INSERT)
private Date updateTime;
@ApiModelProperty(value = "是否开启定位(0:否,1:是),默认否")
@TableField("enable_position")
private Integer enablePosition;
@ApiModelProperty(value = "签到地点")
@TableField("address")
private String address;
@ApiModelProperty(value = "签到范围")
@TableField("range")
private String range;
@ApiModelProperty(value = "签到积分")
@TableField("point")
private Integer point;
@ApiModelProperty(value = "邀请码")
@TableField("code")
private String code;
@ApiModelProperty(value = "经度")
@TableField("longitude")
private Double longitude;
@ApiModelProperty(value = "纬度")
@TableField("latitude")
private Double latitude;
@Override
protected Serializable pkVal() {
return this.id;
}
}
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>sign-project</artifactId>
<groupId>com.yizhi</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<groupId>com.yizhi</groupId>
<artifactId>cloud-sign</artifactId>
<version>1.0-SNAPSHOT</version>
<dependencies>
<dependency>
<groupId>com.yizhi</groupId>
<artifactId>cloud-sign-api</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>com.yizhi</groupId>
<artifactId>cloud-training-project-api</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>com.yizhi</groupId>
<artifactId>cloud-newMessage-api</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>com.yizhi</groupId>
<artifactId>cloud-system-api</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>com.yizhi</groupId>
<artifactId>cloud-point-api</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>com.yizhi</groupId>
<artifactId>cloud-core</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>com.yizhi</groupId>
<artifactId>cloud-orm</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>com.yizhi</groupId>
<artifactId>cloud-util</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>com.yizhi</groupId>
<artifactId>cloud-common-api</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
</dependencies>
<build>
<plugins>
<!-- deploy 时跳过该模块 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-deploy-plugin</artifactId>
<configuration>
<skip>true</skip>
</configuration>
</plugin>
</plugins>
</build>
</project>
package com.yizhi.application;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.openfeign.EnableFeignClients;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.ComponentScans;
/**
* @Author: shengchenglong
* @Date: 2018/3/6 14:29
*/
@SpringBootApplication
@EnableDiscoveryClient
@EnableFeignClients(basePackages = {"com.yizhi"})
@ComponentScan(basePackages = {"com.yizhi"})
public class SignApplication {
public static void main(String[] args) {
SpringApplication.run(SignApplication.class, args);
}
}
package com.yizhi.application;
import static com.google.common.base.Predicates.or;
import static springfox.documentation.builders.PathSelectors.regex;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.ResponseEntity;
import org.springframework.web.context.request.async.DeferredResult;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;
@Configuration
@EnableSwagger2
public class SwaggerConfig {
@Bean
public Docket createRestApi() {
return new Docket(DocumentationType.SWAGGER_2)
.groupName("项目签到服务")
.genericModelSubstitutes(DeferredResult.class)
.genericModelSubstitutes(ResponseEntity.class)
.useDefaultResponseMessages(false)
.forCodeGeneration(true)
.pathMapping("/")
.select()
.paths(or(regex("/api.*"),regex("/manage.*"),regex("/remote.*")))
.build()
.apiInfo(apiInfo());
}
private ApiInfo apiInfo() {
return new ApiInfoBuilder()
.title("项目签到服务")
.version("1.0")//版本
.build();
}
}
package com.yizhi.application.controller.api;
import com.yizhi.core.application.context.ContextHolder;
import com.yizhi.core.application.context.RequestContext;
import com.yizhi.application.domain.TrSignRecord;
import com.yizhi.application.export.ExportSignRecord;
import com.yizhi.application.service.SignRecordService;
import com.yizhi.util.application.domain.Response;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiParam;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* <p>
* 签到记录表 前端控制器 学员端
* </p>
*
* @author fanchunhui123
* @since 2018-03-07
*/
@Api(tags = "签到-学员端", description = "签到记录表学员端接口")
@RestController
@RequestMapping("/api/sign/record")
public class SignRecordController {
Logger logger = LoggerFactory.getLogger(SignRecordController.class);
@Autowired
SignRecordService signRecordService;
@Autowired
ExportSignRecord exportSignRecord;
/**
* 签到记录信息
*
* @param trainingProjectId
* @return
*/
@PostMapping("/list")
public Response<String> list(
@ApiParam(value = "培训项目ID", required = true) String trainingProjectId) {
return Response.ok();
}
/**
* 我的签到总数量
*
* @param accountId 学员ID
* @return
*/
@GetMapping("/count")
public Integer selectSignRecordCountByAccountId(@RequestParam("accountId") Long accountId) {
Integer count = signRecordService.selectCountByAccountId(accountId);
if (null == count) {
count = 0;
}
return count;
}
/**
* 获取签到完成数量( PC 端 学习统计签到 完成数量)
*
* @param trainingProjectId 培训项目ID
* @return
*/
@GetMapping("/pc/finishedCount")
public Integer selectCountByTrainingProjectId(@RequestParam("trainingProjectId") Long trainingProjectId, @RequestParam("accountId") Long accountId) {
logger.info("trainingProjectId为:" + trainingProjectId + "accountId:" + accountId);
Integer count = signRecordService.selectCountByTrainingProjectId(trainingProjectId, accountId);
if (null == count) {
count = 0;
}
logger.info("已完成的签到数量为:" + count);
return count;
}
/**
* 签到记录导出
*
* @param trainingProjectId
* @return
*/
@GetMapping("/export")
public String exportSignRecord(@RequestParam(name = "trainingProjectId") Long trainingProjectId) {
Map<String, Object> map = new HashMap<>();
RequestContext res = ContextHolder.get();
Long taskId = System.currentTimeMillis();
String serialNo = "SIGN-RECORD-EXPORT" + taskId.toString();
String taskName = "签到记录导出" + taskId.toString();
map.put("taskId", taskId);
map.put("serialNo", serialNo);
map.put("taskName", taskName);
map.put("res", res);
map.put("trainingProjectId", trainingProjectId);
exportSignRecord.execute(map, true);
return serialNo;
}
@PostMapping("/insert")
public boolean insertSignRecordList(@RequestBody List<TrSignRecord> signRecordList) {
return signRecordService.insertSignRecordList(signRecordList);
}
}
package com.yizhi.application.controller.api;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
/**
* <p>
* 签到提醒时间,一个sign_time对应一个sign_time 前端控制器 学员端
* </p>
*
* @author fanchunhui123
* @since 2018-03-07
*/
@Controller
@RequestMapping("/trSignRemind")
public class SignRemindController {
}
package com.yizhi.application.controller.api;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
/**
* <p>
* 签到时间段,一个 sign 对应多个 sign_time 前端控制器 学员端
* </p>
*
* @author fanchunhui123
* @since 2018-03-07
*/
@Controller
@RequestMapping("/trSignTime")
public class SignTimeController {
}
package com.yizhi.application.controller.manage;
import java.util.List;
import com.yizhi.application.domain.TrSign;
import io.swagger.annotations.ApiOperation;
import org.apache.commons.lang.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import com.yizhi.application.orm.id.IdGenerator;
import com.yizhi.application.service.SignService;
import com.yizhi.util.application.domain.Response;
import com.yizhi.sign.application.vo.SignIdVO;
import com.yizhi.sign.application.vo.SignQrcodeVO;
import com.yizhi.sign.application.vo.SignVO;
import io.swagger.annotations.ApiParam;
/**
* <p>
* 签到主体表,入口在培训项目 前端控制器 管理端
* </p>
*
* @author fanchunhui123
* @since 2018-03-07
*/
@RestController
@RequestMapping("/manage/sign")
public class SignManageController {
private static final Logger LOG = LoggerFactory.getLogger(SignManageController.class);
@Autowired
SignService signService;
@Autowired
IdGenerator idGenerator;
@PostMapping(value = "/insert")
public Long insert(@ApiParam(value = "签到主体表", required = true) @RequestBody SignVO signVO) {
try {
Long id = idGenerator.generate();
signVO.setId(id);
boolean result = signService.insertSignAndSignTimeAndSignRemind(signVO);
if(!result){
id = null;
}
return id;
} catch (Exception e) {
LOG.error("新建签到失败!", e);
return null;
}
}
@PostMapping(value = "/view")
public SignVO getSign(@ApiParam(value = "培训项目id", required = true) @RequestBody SignIdVO signIdVO) {
SignVO signVO = null;
try {
signVO = signService.querySign(signIdVO.getId());
return signVO;
} catch (Exception e) {
LOG.error("新建签到失败!", e);
return signVO;
}
}
@PostMapping("/update")
public boolean update(@ApiParam(value = "签到主体表", required = true) @RequestBody SignVO signVO) {
try {
boolean result = signService.updateSignAndSignTimeAndSignRemind(signVO);
return result;
} catch (Exception e) {
LOG.error("编辑签到失败!", e);
return false;
}
}
@PostMapping("/report")
public Response<String> report() {
return Response.ok();
}
@PostMapping("/report/export")
public Response<String> reportExport(@ApiParam(value = "培训项目ID", required = true) String trainingProjectId) {
return Response.ok();
}
@PostMapping("/delete")
public boolean deleteByProjectId(@RequestBody SignIdVO signIdVO) {
return signService.deleteSignByProjectId(signIdVO);
}
/**
* 获取生成的二维码Url
*
* @param signIdVO
* @return
*/
@PostMapping("/qrcode/get")
public List<SignQrcodeVO> qrcode(@RequestBody SignIdVO signIdVO) {
try {
// 校验培训项目id
if (StringUtils.isBlank(String.valueOf(signIdVO.getId()))) {
return null;
}
// TODO 目前没有项目
// 查询生成二维码必需参数
List<SignQrcodeVO> resultList = signService.querySignTime(signIdVO.getId());
LOG.info("成功获取生成二维码必需数据");
return resultList;
} catch (Exception e) {
LOG.error("", e);
return null;
}
}
@ApiOperation("根据签到id获取签到")
@GetMapping("/one/get")
public TrSign getSign(
@RequestParam(name = "signId" )Long signId
){
return signService.selectById(signId);
}
@ApiOperation("根据签到时间段id获取签到")
@GetMapping("/time/get")
public TrSign getSignByTime(@RequestParam(name = "signTimeId" )Long signId){
return signService.selectByTimeId(signId);
}
}
package com.yizhi.application.controller.manage;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
/**
* <p>
* 签到记录表 前端控制器 管理端
* </p>
*
* @author fanchunhui123
* @since 2018-03-07
*/
@Controller
@RequestMapping("/trSignRecord")
public class SignRecordManageController {
}
package com.yizhi.application.controller.manage;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
/**
* <p>
* 签到提醒时间,一个sign_time对应一个sign_time 前端控制器 管理端
* </p>
*
* @author fanchunhui123
* @since 2018-03-07
*/
@Controller
@RequestMapping("/trSignRemind")
public class SignRemindManageController {
}
package com.yizhi.application.controller.manage;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
/**
* <p>
* 签到时间段,一个 sign 对应多个 sign_time 前端控制器 管理端
* </p>
*
* @author fanchunhui123
* @since 2018-03-07
*/
@Controller
@RequestMapping("/trSignTime")
public class SignTimeManageController {
}
package com.yizhi.application.controller.remote;
import com.yizhi.application.domain.TrSign;
import com.yizhi.application.orm.id.IdGenerator;
import com.yizhi.application.service.SignService;
import com.yizhi.util.application.domain.Response;
import com.yizhi.sign.application.vo.SignIdVO;
import com.yizhi.sign.application.vo.SignQrcodeVO;
import com.yizhi.sign.application.vo.SignVO;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.apache.commons.lang.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
* <p>
* 签到主体表,入口在培训项目 前端控制器 管理端
* </p>
*
* @author fanchunhui123
* @since 2018-03-07
*/
@RestController
@RequestMapping("/remote/manage/sign")
public class RemoteSignManageController {
private static final Logger LOG = LoggerFactory.getLogger(RemoteSignManageController.class);
@Autowired
SignService signService;
@Autowired
IdGenerator idGenerator;
@PostMapping(value = "/insert")
public Long insert(@ApiParam(value = "签到主体表", required = true) @RequestBody SignVO signVO) {
try {
Long id = idGenerator.generate();
signVO.setId(id);
boolean result = signService.insertSignAndSignTimeAndSignRemind(signVO);
if(!result){
id = null;
}
return id;
} catch (Exception e) {
LOG.error("新建签到失败!", e);
return null;
}
}
@PostMapping(value = "/view")
public SignVO getSign(@ApiParam(value = "培训项目id", required = true) @RequestBody SignIdVO signIdVO) {
SignVO signVO = null;
try {
signVO = signService.querySign(signIdVO.getId());
return signVO;
} catch (Exception e) {
LOG.error("新建签到失败!", e);
return signVO;
}
}
@PostMapping("/update")
public boolean update(@ApiParam(value = "签到主体表", required = true) @RequestBody SignVO signVO) {
try {
boolean result = signService.updateSignAndSignTimeAndSignRemind(signVO);
return result;
} catch (Exception e) {
LOG.error("编辑签到失败!", e);
return false;
}
}
@PostMapping("/report")
public Response<String> report() {
return Response.ok();
}
@PostMapping("/report/export")
public Response<String> reportExport(@ApiParam(value = "培训项目ID", required = true) String trainingProjectId) {
return Response.ok();
}
@PostMapping("/delete")
public boolean deleteByProjectId(@RequestBody SignIdVO signIdVO) {
return signService.deleteSignByProjectId(signIdVO);
}
/**
* 获取生成的二维码Url
*
* @param signIdVO
* @return
*/
@PostMapping("/qrcode/get")
public List<SignQrcodeVO> qrcode(@RequestBody SignIdVO signIdVO) {
try {
// 校验培训项目id
if (StringUtils.isBlank(String.valueOf(signIdVO.getId()))) {
return null;
}
// TODO 目前没有项目
// 查询生成二维码必需参数
List<SignQrcodeVO> resultList = signService.querySignTime(signIdVO.getId());
LOG.info("成功获取生成二维码必需数据");
return resultList;
} catch (Exception e) {
LOG.error("", e);
return null;
}
}
@ApiOperation("根据签到id获取签到")
@GetMapping("/one/get")
public com.yizhi.sign.application.vo.domain.TrSign getSign(
@RequestParam(name = "signId" )Long signId
){
TrSign trSign = signService.selectById(signId);
com.yizhi.sign.application.vo.domain.TrSign trSign1 = new com.yizhi.sign.application.vo.domain.TrSign();
BeanUtils.copyProperties(trSign,trSign1);
return trSign1;
}
@ApiOperation("根据签到时间段id获取签到")
@GetMapping("/time/get")
public com.yizhi.sign.application.vo.domain.TrSign getSignByTime(@RequestParam(name = "signTimeId" )Long signId){
TrSign trSign = signService.selectByTimeId(signId);
com.yizhi.sign.application.vo.domain.TrSign trSign1 = new com.yizhi.sign.application.vo.domain.TrSign();
BeanUtils.copyProperties(trSign,trSign1);
return trSign1;
}
}
package com.yizhi.application.controller.remote;
import com.yizhi.core.application.context.ContextHolder;
import com.yizhi.core.application.context.RequestContext;
import com.yizhi.application.domain.TrSignRecord;
import com.yizhi.application.export.ExportSignRecord;
import com.yizhi.application.service.SignRecordService;
import com.yizhi.util.application.domain.Response;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiParam;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* <p>
* 签到记录表 前端控制器 学员端
* </p>
*
* @author fanchunhui123
* @since 2018-03-07
*/
@Api(tags = "签到-学员端", description = "签到记录表学员端接口")
@RestController
@RequestMapping("/remote/api/sign/record")
public class RemoteSignRecordController {
Logger logger = LoggerFactory.getLogger(RemoteSignRecordController.class);
@Autowired
SignRecordService signRecordService;
@Autowired
ExportSignRecord exportSignRecord;
/**
* 签到记录信息
*
* @param trainingProjectId
* @return
*/
@PostMapping("/list")
public Response<String> list(
@ApiParam(value = "培训项目ID", required = true) String trainingProjectId) {
return Response.ok();
}
/**
* 我的签到总数量
*
* @param accountId 学员ID
* @return
*/
@GetMapping("/count")
public Integer selectSignRecordCountByAccountId(@RequestParam("accountId") Long accountId) {
Integer count = signRecordService.selectCountByAccountId(accountId);
if (null == count) {
count = 0;
}
return count;
}
/**
* 获取签到完成数量( PC 端 学习统计签到 完成数量)
*
* @param trainingProjectId 培训项目ID
* @return
*/
@GetMapping("/pc/finishedCount")
public Integer selectCountByTrainingProjectId(@RequestParam("trainingProjectId") Long trainingProjectId, @RequestParam("accountId") Long accountId) {
logger.info("trainingProjectId为:" + trainingProjectId + "accountId:" + accountId);
Integer count = signRecordService.selectCountByTrainingProjectId(trainingProjectId, accountId);
if (null == count) {
count = 0;
}
logger.info("已完成的签到数量为:" + count);
return count;
}
/**
* 签到记录导出
*
* @param trainingProjectId
* @return
*/
@GetMapping("/export")
public String exportSignRecord(@RequestParam(name = "trainingProjectId") Long trainingProjectId) {
Map<String, Object> map = new HashMap<>();
RequestContext res = ContextHolder.get();
Long taskId = System.currentTimeMillis();
String serialNo = "SIGN-RECORD-EXPORT" + taskId.toString();
String taskName = "签到记录导出" + taskId.toString();
map.put("taskId", taskId);
map.put("serialNo", serialNo);
map.put("taskName", taskName);
map.put("res", res);
map.put("trainingProjectId", trainingProjectId);
exportSignRecord.execute(map, true);
return serialNo;
}
@PostMapping("/insert")
public boolean insertSignRecordList(@RequestBody List<TrSignRecord> signRecordList) {
return signRecordService.insertSignRecordList(signRecordList);
}
}
package com.yizhi.application.controller.remote;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
/**
* <p>
* 签到记录表 前端控制器 内部api
* </p>
*
* @author fanchunhui123
* @since 2018-03-07
*/
@Controller
@RequestMapping("/trSignRecord")
public class SignRecordRemoteController {
}
package com.yizhi.application.controller.remote;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
/**
* <p>
* 签到提醒时间,一个sign_time对应一个sign_time 前端控制器 内部api
* </p>
*
* @author fanchunhui123
* @since 2018-03-07
*/
@Controller
@RequestMapping("/trSignRemind")
public class SignRemindRemoteController {
}
package com.yizhi.application.controller.remote;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
/**
* <p>
* 签到主体表,入口在培训项目 前端控制器 内部api
* </p>
*
* @author fanchunhui123
* @since 2018-03-07
*/
@Controller
@RequestMapping("/trSign")
public class SignRemoteController {
}
package com.yizhi.application.controller.remote;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
/**
* <p>
* 签到时间段,一个 sign 对应多个 sign_time 前端控制器 内部api
* </p>
*
* @author fanchunhui123
* @since 2018-03-07
*/
@Controller
@RequestMapping("/trSignTime")
public class SignTimeRemoteController {
}
package com.yizhi.application.domain;
import com.baomidou.mybatisplus.annotations.TableField;
import com.baomidou.mybatisplus.annotations.TableId;
import com.baomidou.mybatisplus.annotations.TableName;
import com.baomidou.mybatisplus.enums.IdType;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.Date;
@Data
@Api(tags = "StatisticsSign", description = "签到统计表")
@TableName("statistics_sign_metadata")
public class StatisticsSign {
@ApiModelProperty(value = "自增")
@TableId(value = "id", type = IdType.AUTO)
private Long id;
@ApiModelProperty(value = "签到id")
@TableField("sign_id")
private Long signId;
@ApiModelProperty(value = "签到时间段id")
@TableField("sign_time_id")
private Long signTimeId;
@ApiModelProperty(value = "培训项目id")
@TableField("trainning_project_id")
private Long trainningProjectId;
@ApiModelProperty(value = "签到编号")
@TableField("sign_no")
private String signNo;
@ApiModelProperty(value = "签到名称")
@TableField("sign_name")
private String signName;
@ApiModelProperty(value = "培训项目名称")
@TableField("trainning_project_name")
private String trainningProjectName;
@ApiModelProperty(value = "签到开始时间")
@TableField("sign_start_time")
private Date signStartTime;
@ApiModelProperty(value = "签到结束时间")
@TableField("sign_end_time")
private Date signEndTime;
@ApiModelProperty(value = "创建签到的公司Id")
@TableField("sign_company_id")
private Long signCompanyId;
@ApiModelProperty(value = "创建签到的组织id")
@TableField("sign_org_id")
private Long signOrgId;
@ApiModelProperty(value = "创建签到的站点id")
@TableField("sign_site_id")
private Long signSiteId;
@ApiModelProperty(value = "签到创建时间")
@TableField("sign_create_time")
private Date signCreateTime;
@ApiModelProperty(value = "项目创建时间")
@TableField("project_create_time")
private Date projectCreateTime;
@ApiModelProperty(value = "用户id")
@TableField("account_id")
private Long accountId;
@ApiModelProperty(value = "用户编号")
@TableField("account_work_num")
private String accountWorkNum;
@ApiModelProperty(value = "用户名")
@TableField("account_name")
private String accountName;
@ApiModelProperty(value = "用户姓名")
@TableField("account_fullname")
private String accountFullname;
@ApiModelProperty(value = "用户状态")
@TableField("account_state")
private Integer accountState;
@ApiModelProperty(value = "用户公司id")
@TableField("account_company_id")
private Long accountCompanyId;
@ApiModelProperty(value = "用户组织id")
@TableField("account_org_id")
private Long accountOrgId;
@ApiModelProperty(value = "用户站点id")
@TableField("account_site_id")
private Long accountSiteId;
@ApiModelProperty(value = "签到时间")
@TableField("sign_time")
private Date signTime;
@ApiModelProperty(value = "用户组织名称")
@TableField("org_name")
private String orgName;
@ApiModelProperty(value = "用户所有父类组织")
@TableField("org_parent_names")
private String orgParentNames;
@ApiModelProperty(value = "应签到")
@TableField("can_state")
private Integer canState;
@ApiModelProperty(value = "实际签到")
@TableField("join_state")
private Integer joinState;
@ApiModelProperty(value = "应签到人数")
@TableField(exist = false)
private Integer canStateCount;
@ApiModelProperty(value = "实际签到人数")
@TableField(exist = false)
private Integer joinStateCount;
@ApiModelProperty(value = "未签到人数")
@TableField(exist = false)
private Integer notSignCount;
@ApiModelProperty(value = "签到地点")
@TableField("address")
private String address;
@ApiModelProperty(value = "签到范围")
@TableField("range")
private String range;
}
package com.yizhi.application.domain;
import com.baomidou.mybatisplus.annotations.TableName;
import com.yizhi.sign.application.vo.domain.StatisticsSign;
import io.swagger.annotations.Api;
import lombok.Data;
@Data
@Api(tags = "StatisticsSignLearn", description = "签到明细")
@TableName("statistics_sign_learn_metadata")
public class StatisticsSignLearn extends StatisticsSign {
private static final long serialVersionUID = -1170397195805248674L;
}
package com.yizhi.application.domain;
import com.baomidou.mybatisplus.activerecord.Model;
import com.baomidou.mybatisplus.annotations.TableField;
import com.baomidou.mybatisplus.annotations.TableName;
import com.baomidou.mybatisplus.enums.FieldFill;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
/**
* <p>
* 签到主体表,入口在培训项目
* </p>
*
* @author fanchunhui123
* @since 2018-03-07
*/
@Data
@Api(tags = "TrSign", description = "签到主体表,入口在培训项目")
@TableName("tr_sign")
public class TrSign extends Model<TrSign> {
private static final long serialVersionUID = 1L;
@ApiModelProperty(value = "主键id")
private Long id;
@ApiModelProperty(value = "培训项目id")
@TableField("training_project_id")
private Long trainingProjectId;
@ApiModelProperty(value = "签到名称")
private String name;
@ApiModelProperty(value = "0:生成一张,1:按时间段生成多张")
private Integer type;
@ApiModelProperty(value = "是否消息提醒(分钟),0不提醒")
@TableField("remind_time")
private Integer remindTime;
@ApiModelProperty(value = "是否开启补签(0:否,1:是),默认否")
@TableField("enable_retroactive")
private Integer enableRetroactive;
@ApiModelProperty(value = "是否开启邮件提醒(0:否,1:是),默认否。")
@TableField("enable_remind_mail")
private Integer enableRemindMail;
@ApiModelProperty(value = "是否开启短信提醒(0:否,1:是),默认否。")
@TableField("enable_remind_note")
private Integer enableRemindNote;
@ApiModelProperty(value = "是否开启app推送签到提醒,默认0")
@TableField("enable_remind_app")
private String enableRemindApp;
@ApiModelProperty(value = "邮件模板")
@TableField("mail_remind_template_id")
private Long mailRemindTemplateId;
@ApiModelProperty(value = "app消息推送模板")
@TableField("app_remind_template_id")
private Long appRemindTemplateId;
@ApiModelProperty(value = "提醒内容")
@TableField("remind_content")
private String remindContent;
@ApiModelProperty(value = "企业id")
@TableField("company_id")
private Long companyId;
@ApiModelProperty(value = "站点id")
@TableField("site_id")
private Long siteId;
@TableField("org_id")
private Long orgId;
@ApiModelProperty(value = "创建者id")
@TableField(value = "create_by_id", fill = FieldFill.INSERT)
private Long createById;
@ApiModelProperty(value = "创建者名称")
@TableField(value = "create_by_name", fill = FieldFill.INSERT)
private String createByName;
@ApiModelProperty(value = "创建时间")
@TableField(value = "create_time", fill = FieldFill.INSERT)
private Date createTime;
@ApiModelProperty(value = "更新者id")
@TableField(value = "update_by_id", fill = FieldFill.INSERT)
private Long updateById;
@ApiModelProperty(value = "修改者名称")
@TableField(value = "update_by_name", fill = FieldFill.INSERT)
private String updateByName;
@ApiModelProperty(value = "修改时间")
@TableField(value = "update_time", fill = FieldFill.INSERT)
private Date updateTime;
@ApiModelProperty(value = "是否删除:0.未删除 1.已删除")
private Integer state;
@ApiModelProperty(value = "可见范围")
@TableField(exist = false)
private Integer visibleRange;
@ApiModelProperty("培训项目名称")
@TableField(exist = false)
private String trainningProjectName;
@ApiModelProperty("培训项目创建时间")
@TableField(exist = false)
private Date projectCreateTime;
@ApiModelProperty("签到时间段id")
@TableField(exist = false)
private Long signTimeId;
@ApiModelProperty("某个签到的开始时间")
@TableField(exist = false)
private Date signStartDate;
@ApiModelProperty("某个签到的结束时间")
@TableField(exist = false)
private Date signEndDate;
@ApiModelProperty(value = "是否开启定位(0:否,1:是),默认否")
@TableField("enable_position")
private Integer enablePosition;
@ApiModelProperty(value = "签到地点")
@TableField("address")
private String address;
@ApiModelProperty(value = "签到范围")
@TableField("range")
private String range;
@Override
protected Serializable pkVal() {
return this.id;
}
}
package com.yizhi.application.domain;
import com.baomidou.mybatisplus.annotations.TableField;
import com.baomidou.mybatisplus.annotations.TableName;
import com.baomidou.mybatisplus.enums.FieldFill;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.Date;
@Data
@Api(tags = "TrSignAccount", description = "小程序签到绑定关系表")
@TableName("tr_sign_account")
public class TrSignAccount {
@ApiModelProperty(value = "主键id")
private Long id;
@ApiModelProperty(value = "用户id")
@TableField(value = "account_id")
private Long accountId;
@ApiModelProperty(value = "小程序openId")
@TableField(value = "open_id")
private String openId;
@ApiModelProperty(value = "是否解绑(0:否,1:是) 默认0")
private Integer deleted;
@ApiModelProperty(value = "签到邀请码")
private String code;
@ApiModelProperty(value = "创建者id")
@TableField(value = "create_by_id", fill = FieldFill.INSERT)
private Long createById;
@ApiModelProperty(value = "姓名")
@TableField(value = "full_name", fill = FieldFill.INSERT)
private String fullName;
@ApiModelProperty(value = "创建者名称")
@TableField(value = "create_by_name", fill = FieldFill.INSERT)
private String createByName;
@ApiModelProperty(value = "创建时间")
@TableField(value = "create_time", fill = FieldFill.INSERT)
private Date createTime;
@ApiModelProperty(value = "更新者id")
@TableField(value = "update_by_id", fill = FieldFill.INSERT)
private Long updateById;
@ApiModelProperty(value = "修改者名称")
@TableField(value = "update_by_name", fill = FieldFill.INSERT)
private String updateByName;
@ApiModelProperty(value = "修改时间")
@TableField(value = "update_time", fill = FieldFill.INSERT)
private Date updateTime;
}
package com.yizhi.application.domain;
import com.baomidou.mybatisplus.activerecord.Model;
import com.baomidou.mybatisplus.annotations.TableField;
import com.baomidou.mybatisplus.annotations.TableName;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
/**
* <p>
* 签到记录表
* </p>
*
* @author fanchunhui123
* @since 2018-03-07
*/
@Data
@Api(tags = "TrSignRecord", description = "签到记录表")
@TableName("tr_sign_record")
public class TrSignRecord extends Model<TrSignRecord> {
private static final long serialVersionUID = 1L;
@ApiModelProperty(value = "主键id")
private Long id;
@ApiModelProperty(value = "签到id")
@TableField("sign_id")
private Long signId;
@ApiModelProperty(value = "培训项目id")
@TableField("training_project_id")
private Long trainingProjectId;
@ApiModelProperty(value = "账号id")
@TableField("account_id")
private Long accountId;
@ApiModelProperty(value = "签到时间")
@TableField("sign_time")
private Date signTime;
@ApiModelProperty(value = "签到状态:0:正常签到,1:补签。默认0。")
@TableField("sign_status")
private Integer signStatus;
@ApiModelProperty(value = "签到类型:0:平台签到,1:自定义项目。默认0。")
@TableField("type")
private Integer type;
@ApiModelProperty(value = "创建时间")
@TableField("create_time")
private Date createTime;
@ApiModelProperty(value = "签到地点")
@TableField("address")
private String address;
@Override
protected Serializable pkVal() {
return this.id;
}
}
package com.yizhi.application.domain;
import com.baomidou.mybatisplus.activerecord.Model;
import com.baomidou.mybatisplus.annotations.TableField;
import com.baomidou.mybatisplus.annotations.TableName;
import com.baomidou.mybatisplus.enums.FieldFill;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
/**
* <p>
* 签到提醒时间,一个sign_time对应一个sign_time
* </p>
*
* @author fanchunhui123
* @since 2018-03-07
*/
@Data
@Api(tags = "TrSignRemind", description = "签到提醒时间,一个sign_time对应一个sign_time")
@TableName("tr_sign_remind")
public class TrSignRemind extends Model<TrSignRemind> {
private static final long serialVersionUID = 1L;
@ApiModelProperty(value = "主键id")
private Long id;
@ApiModelProperty(value = "签到时间段id")
@TableField("sign_time_id")
private Long signTimeId;
@ApiModelProperty(value = "提醒时间")
@TableField("remind_time")
private Date remindTime;
@ApiModelProperty(value = "创建者id")
@TableField(value = "create_by_id", fill = FieldFill.INSERT)
private Long createById;
@ApiModelProperty(value = "创建者名称")
@TableField(value = "create_by_name", fill = FieldFill.INSERT)
private String createByName;
@ApiModelProperty(value = "创建时间")
@TableField(value = "create_time", fill = FieldFill.INSERT)
private Date createTime;
@ApiModelProperty(value = "更新者id")
@TableField(value = "update_by_id", fill = FieldFill.INSERT)
private Long updateById;
@ApiModelProperty(value = "修改者名称")
@TableField(value = "update_by_name", fill = FieldFill.INSERT)
private String updateByName;
@ApiModelProperty(value = "修改时间")
@TableField(value = "update_time", fill = FieldFill.INSERT)
private Date updateTime;
@Override
protected Serializable pkVal() {
return this.id;
}
}
package com.yizhi.application.domain;
import com.baomidou.mybatisplus.activerecord.Model;
import com.baomidou.mybatisplus.annotations.TableField;
import com.baomidou.mybatisplus.annotations.TableName;
import com.baomidou.mybatisplus.enums.FieldFill;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
/**
* <p>
* 签到时间段,一个 sign 对应多个 sign_time
* </p>
*
* @author fanchunhui123
* @since 2018-03-07
*/
@Data
@Api(tags = "TrSignTime", description = "签到时间段,一个 sign 对应多个 sign_time")
@TableName("tr_sign_time")
public class TrSignTime extends Model<TrSignTime> {
private static final long serialVersionUID = 1L;
@ApiModelProperty(value = "主键id")
private Long id;
@ApiModelProperty(value = "冗余项目id")
@TableField("training_project_id")
private Long trainingProjectId;
@ApiModelProperty(value = "签名id")
@TableField("sign_id")
private Long signId;
@ApiModelProperty(value = "有效签到时间区间左值")
@TableField("start_time")
private Date startTime;
@ApiModelProperty(value = "有效签到时间区间右值")
@TableField("end_time")
private Date endTime;
@ApiModelProperty(value = "是否停用(0:否,1:是) 默认0")
private Integer deleted;
@ApiModelProperty(value = "创建者id")
@TableField(value = "create_by_id", fill = FieldFill.INSERT)
private Long createById;
@ApiModelProperty(value = "创建者名称")
@TableField(value = "create_by_name", fill = FieldFill.INSERT)
private String createByName;
@ApiModelProperty(value = "创建时间")
@TableField(value = "create_time", fill = FieldFill.INSERT)
private Date createTime;
@ApiModelProperty(value = "更新者id")
@TableField(value = "update_by_id", fill = FieldFill.INSERT)
private Long updateById;
@ApiModelProperty(value = "修改者名称")
@TableField(value = "update_by_name", fill = FieldFill.INSERT)
private String updateByName;
@ApiModelProperty(value = "修改时间")
@TableField(value = "update_time", fill = FieldFill.INSERT)
private Date updateTime;
@ApiModelProperty(value = "是否开启定位(0:否,1:是),默认否")
@TableField("enable_position")
private Integer enablePosition;
@ApiModelProperty(value = "签到地点")
@TableField("address")
private String address;
@ApiModelProperty(value = "签到范围")
@TableField("range")
private String range;
@ApiModelProperty(value = "签到积分")
@TableField("point")
private Integer point;
@ApiModelProperty(value = "邀请码")
@TableField("code")
private String code;
@ApiModelProperty(value = "经度")
@TableField("longitude")
private Double longitude;
@ApiModelProperty(value = "纬度")
@TableField("latitude")
private Double latitude;
@Override
protected Serializable pkVal() {
return this.id;
}
}
package com.yizhi.application.export;
import com.baomidou.mybatisplus.toolkit.CollectionUtils;
import com.yizhi.core.application.context.RequestContext;
import com.yizhi.core.application.context.TaskContext;
import com.yizhi.core.application.file.constant.FileConstant;
import com.yizhi.core.application.file.task.AbstractDefaultTask;
import com.yizhi.core.application.file.util.OssUpload;
import com.yizhi.application.service.SignRecordService;
import com.yizhi.sign.application.vo.ExportSignRecordVO;
import org.apache.poi.ss.util.CellRangeAddress;
import org.apache.poi.xssf.usermodel.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.io.File;
import java.io.FileOutputStream;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
import java.util.Map;
/**
* @Auther: ding
* @Date: 2019/06/04
* @Description:按考试统计查看结果下载
*/
@Component
public class ExportSignRecord extends AbstractDefaultTask<String, Map<String, Object>> {
private static final Logger LOGGER = LoggerFactory.getLogger(ExportSignRecord.class);
@Autowired
private SignRecordService signRecordService;
@Override
protected String execute(Map<String, Object> map) {
String uploadUrl = null;
Long trainingProjectId = (Long) map.get("trainingProjectId");
RequestContext res = (RequestContext) map.get("res");
Long accountId = res.getAccountId();
Long siteId = res.getSiteId();
Long companyId = res.getCompanyId();
boolean isAdmin = res.isAdmin();
Date comitTime = new Date();
Long taskId = (Long) map.get("taskId");
String serialNo = (String) map.get("serialNo");
String taskName = (String) map.get("taskName");
SimpleDateFormat sdf2 = new SimpleDateFormat("yyyyMMddHHmmss");
TaskContext taskContext = new TaskContext(taskId, serialNo, taskName, accountId, comitTime, siteId, companyId);
working(taskContext);
List<ExportSignRecordVO> list = null;
try {
list = signRecordService.exportSignRecord(accountId, isAdmin, siteId, trainingProjectId);
} catch (Exception e) {
LOGGER.info("签到记录明细获取数据过程中出现错误", e);
fail(taskContext, "签到记录明细获取数据过程中出现错误");
}
try {
if (CollectionUtils.isEmpty(list)) {
success(taskContext, "未找到数据", "");
}
String traningProjectName = list.get(0).getTainingProjectName();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
XSSFWorkbook wb = new XSSFWorkbook();
XSSFSheet sheet = wb.createSheet("签到记录明细表");
XSSFRow row = sheet.createRow(0);
// HSSFCellStyle cellStyle = wb.createCellStyle();
// //水平居中
// cellStyle.setAlignment(HorizontalAlignment.CENTER);
// //垂直居中
// cellStyle.setVerticalAlignment(VerticalAlignment.CENTER);
// HSSFFont font = wb.createFont();
// //字体加粗
// font.setBold(true);
// //字体大小14
// font.setFontHeightInPoints((short) 14);
//
// cellStyle.setFont(font);
CellRangeAddress cra = new CellRangeAddress(0, 0, 0, 12);
sheet.addMergedRegion(cra);
XSSFCell cell = row.createCell(0);
// cell.setCellStyle(cellStyle);
cell.setCellValue(traningProjectName + "签到记录明细表");
row = sheet.createRow(1);
cra = new CellRangeAddress(1, 1, 0, 12);
sheet.addMergedRegion(cra);
cell = row.createCell(0);
cell.setCellValue("统计周期:截止:" + sdf.format(new Date()));
XSSFRow row2 = sheet.createRow(2);
row2.createCell(0).setCellValue("项目名称");
row2.createCell(1).setCellValue("签到时间段");
row2.createCell(2).setCellValue("用户名");
row2.createCell(3).setCellValue("姓名");
row2.createCell(4).setCellValue("签到状态");
row2.createCell(5).setCellValue("签到时间");
row2.createCell(6).setCellValue("所在部门");
row2.createCell(7).setCellValue("用户状态");
if (CollectionUtils.isNotEmpty(list)) {
for (ExportSignRecordVO recordVO : list) {
row = sheet.createRow(list.indexOf(recordVO) + 3);
row.createCell(0).setCellValue(recordVO.getTainingProjectName() == null ? "--" : recordVO.getTainingProjectName());
row.createCell(1).setCellValue(sdf.format(recordVO.getStartTime()) + "~" + sdf.format(recordVO.getEndTime()));
row.createCell(2).setCellValue(recordVO.getAccountName() == null ? "--" : recordVO.getAccountName());
row.createCell(3).setCellValue(recordVO.getAccountFullName() == null ? "--" : recordVO.getAccountFullName());
if (recordVO.getSignState() == 0) {
row.createCell(4).setCellValue("未签到");
} else if (recordVO.getSignState() == 1) {
row.createCell(4).setCellValue("已签到");
} else if (recordVO.getSignState() == 2) {
row.createCell(4).setCellValue("已补签");
}
row.createCell(5).setCellValue(recordVO.getSignTime() == null ? "--" : sdf.format(recordVO.getSignTime()));
row.createCell(6).setCellValue(recordVO.getOrgName() == null ? "--" : recordVO.getOrgName());
row.createCell(7).setCellValue(recordVO.getAccountState() == 0 ? "停用" : "启用");
}
}
String fileName = traningProjectName + "签到记录明细表" + sdf2.format(comitTime) + ".xlsx";
// String requestPath = "/Users/dingxiaowei/aaa";
String requestPath = FileConstant.SAVE_PATH;
File fileDir = new File(requestPath);
if (!fileDir.exists()) {
fileDir.mkdir();
}
String path = requestPath + "/" + fileName;
FileOutputStream os = null;
File file = null;
try {
os = new FileOutputStream(path);
wb.write(os);
uploadUrl = OssUpload.upload(path, fileName);
file = new File(path);
success(taskContext, "成功", uploadUrl);
} catch (Exception e2) {
e2.printStackTrace();
fail(taskContext, "签到记录明细表,写入过程出现错误");
LOGGER.error("签到记录明细表,写入过程出现错误");
} finally {
if (os != null) {
os.close();
}
if (wb != null) {
wb.close();
}
if (file != null) {
file.delete();
}
}
} catch (Exception e) {
e.printStackTrace();
fail(taskContext, "签到记录明细表,下载考试结果数据出现错误");
LOGGER.error("签到记录明细表,下载考试结果数据出现错误");
}
return uploadUrl;
}
}
package com.yizhi.application.mapper;
import com.baomidou.mybatisplus.mapper.BaseMapper;
import com.yizhi.application.domain.TrSignAccount;
public interface SignAccountMapper extends BaseMapper<TrSignAccount>{
}
package com.yizhi.application.mapper;
import com.baomidou.mybatisplus.mapper.BaseMapper;
import com.yizhi.application.domain.TrSign;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Update;
/**
* <p>
* 签到主体表,入口在培训项目 Mapper 接口
* </p>
*
* @author fanchunhui123
* @since 2018-03-07
*/
public interface SignMapper extends BaseMapper<TrSign> {
@Update("update cloud_trainning_project.tr_sign set state = 1 where training_project_id = #{projectId}")
Integer deleteSignByProjectId(@Param("projectId") Long projectId);
}
package com.yizhi.application.mapper;
import java.util.List;
import com.yizhi.application.domain.TrSignTime;
import com.yizhi.application.domain.TrSignRecord;
import com.yizhi.sign.application.vo.ExportSignRecordVO;
import com.yizhi.training.application.vo.domain.TpAuthorizationRangeVo;
import com.yizhi.training.application.vo.domain.TrainingProjectVo;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import com.baomidou.mybatisplus.mapper.BaseMapper;
import com.baomidou.mybatisplus.plugins.Page;
import com.yizhi.sign.application.vo.TrSignRecordVo;
/**
* <p>
* 签到记录表 Mapper 接口
* </p>
*
* @author fanchunhui123
* @since 2018-03-07
*/
public interface SignRecordMapper extends BaseMapper<TrSignRecord> {
/**
* 获取我的签到
* @param accountId 学员ID
* @param month,月份可为空查询所有
* @return
*/
List<TrSignRecordVo> selectSignRecordListByAccountIdAndMonth(@Param("page") Page<TrSignRecordVo> page, @Param("accountId") Long accountId,
@Param("year") String year, @Param("month") String month);
@Select("SELECT COUNT(id) from tr_sign_record where account_id = #{accountId}")
Integer selectCountByAccountId(@Param("accountId")Long accountId);
/**
* 获取签到完成数量( PC 端 学习统计签到 完成数量)
* @param trainingProjectId
* @return
*/
@Select("SELECT COUNT(id) from tr_sign_record where training_project_id = #{trainingProjectId} and account_id = #{accountId}")
Integer selectCountByTrainingProjectId(@Param("trainingProjectId") Long trainingProjectId, @Param("accountId") Long accountId);
/**
* 查找培训项目
* @param trainingProjectId
* @return
*/
TrainingProjectVo getTainningProjectById(@Param("trainingProjectId") Long trainingProjectId);
/**
* 查找指定范围用户或者部门id
* @param trainingProjectId
* @return
*/
List<TpAuthorizationRangeVo> getAuthorizations(@Param("trainingProjectId") Long trainingProjectId);
/**
* 查找培训项目下所有签到时间段
* @param trainingProjectId
* @return
*/
List<TrSignTime> selectSignTimeList(@Param("trainingProjectId") Long trainingProjectId);
/**
* 获取某一时间段的签到记录
* @param signTimeId
* @param accountIds
* @return
*/
List<ExportSignRecordVO> exportSignRecord(@Param("signTimeId") Long signTimeId,@Param("accountIds") List<Long> accountIds);
}
package com.yizhi.application.mapper;
import com.baomidou.mybatisplus.mapper.BaseMapper;
import com.yizhi.application.domain.TrSignRemind;
import org.apache.ibatis.annotations.Update;
/**
* <p>
* 签到提醒时间,一个sign_time对应一个sign_time Mapper 接口
* </p>
*
* @author fanchunhui123
* @since 2018-03-07
*/
public interface SignRemindMapper extends BaseMapper<TrSignRemind> {
@Update("update tr_sign_remind set remind_time = #{remindTime},update_by_id = #{updateById},update_by_name = #{updateByName},update_time = #{updateTime} where sign_time_id = #{signTimeId}")
public int updateBySignTimeId(TrSignRemind trSignRemind);
}
package com.yizhi.application.mapper;
import java.util.List;
import com.yizhi.application.domain.TrSign;
import com.yizhi.application.domain.TrSignTime;
import org.apache.ibatis.annotations.Param;
import com.baomidou.mybatisplus.mapper.BaseMapper;
import com.yizhi.sign.application.vo.SignTimeVO;
/**
* <p>
* 签到时间段,一个 sign 对应多个 sign_time Mapper 接口
* </p>
*
* @author fanchunhui123
* @since 2018-03-07
*/
public interface SignTimeMapper extends BaseMapper<TrSignTime> {
int updateSignTimesStateBySignIdAndIds(@Param("signId")Long signId, @Param("times")List<SignTimeVO> times,
@Param("accountId")Long accountId, @Param("accountName")String accountName);
TrSign selectByTimeId(@Param("signTimeId") Long param);
}
package com.yizhi.application.mapper;
import com.baomidou.mybatisplus.mapper.BaseMapper;
import com.baomidou.mybatisplus.plugins.Page;
import com.yizhi.application.domain.StatisticsSign;
import com.yizhi.application.domain.StatisticsSignLearn;
import com.yizhi.application.domain.TrSign;
import org.apache.ibatis.annotations.MapKey;
import org.apache.ibatis.annotations.Param;
import java.util.Date;
import java.util.List;
import java.util.Map;
public interface StatisticsSignMapper extends BaseMapper<StatisticsSign> {
List<StatisticsSign> statisticsSignPage(@Param("projectId") Long projectId,
@Param("startDate") String startDate,
@Param("endDate") String endDate,
@Param("signCompanyId") Long signCompanyId,
@Param("signOrgIds") List<Long> signOrgIds,
@Param("signSiteId")Long signSiteId,
@Param("kwd") String kwd,
Page<StatisticsSign> page);
Integer statisticsSignCount(@Param("projectId") Long projectId,
@Param("startDate") String startDate,
@Param("endDate") String endDate,
@Param("signCompanyId") Long signCompanyId,
@Param("signOrgIds") List<Long> signOrgIds,
@Param("signSiteId")Long signSiteId);
List<StatisticsSign> statisticsSignView(
@Param("signId") Long signId,
@Param("signTimeId") Long signTimeId,
@Param("startDate") String statrDate,
@Param("endDate") String endDate,
@Param("orgNameOrCode") String orgNameOrCode,
@Param("accountName") String accountName,
Page<StatisticsSign> page);
Integer statisticsSignViewCount(
@Param("signId") Long signId,
@Param("signTimeId") Long signTimeId,
@Param("startDate") String statrDate,
@Param("endDate") String endDate,
@Param("orgNameOrCode") String orgNameOrCode,
@Param("accountName") String accountName);
List<StatisticsSign> chartGroup(@Param("projectId") Long trainnigProjectId,
@Param("startDate") String startDate,
@Param("endDate") String endDate,
@Param("signCompanyId") Long signCompanyId,
@Param("signOrgIds") List<Long> signOrgIds,
@Param("signSiteId")Long signSiteId);
Date selectMaxDate();
Date selectRecordMinTime();
List<TrSign> getAllResearchs(@Param("startDate") String startDate, @Param("endDate") String endDate);
void deleteRecordeByDate(@Param("currentDate") String currentDate);
/**
* 批量插入
* @param researchId
* @param currentDate
* @return
*/
int insertAccountLearn(@Param("researchId")Long researchId, @Param("currentDate")String currentDate);
/**
* 获取添加的签到信息
* @param researchId
* @param currentDate
* @return
*/
List<StatisticsSignLearn> selectAccountLearn(@Param("researchId")Long researchId, @Param("currentDate")String currentDate);
Integer selectEmptyCourseLearnCount(@Param("researchId")Long researchId);
void deleteEmptyAccountLearn();
Integer selectEmptyCourseAccountLearnCount(@Param("researchId")Long researchId, @Param("researchId") Long accountId);
List<Long> getAllRelationId(@Param("trainingProjectId")Long param);
/**
* 查找学员有没有学了该调研
* @param signId
* @return
*/
@MapKey("accountId")
Map<Long, Long> selectAccountLearnByResearchId(@Param("signId") Long signId);
/**
* 按部门纬度统计数据量会很大,影响效率.对其进行拆分,按部门统计从此表中查询
*/
void insertStatisticsResearchToGroupFind();
void deleteStatisticsResearchToGroupFind();
/**
* 调研信息直接从statistics_research_metadata表中查询效率很慢,对其进行拆分.按调研和用户统计的查询条件从此获取
*/
void insertStatisticsResearchToAccountGroupFind();
void deleteStatisticsResearchToAccountGroupFind();
/**
* 删除应参加人数统计表
*/
void deleteStatisticsAccountCanCount();
/**
* 添加应参加人数统计表
*/
void insertStatisticsAccountCanCount();
/**
* 报表服务获取签到记录
* @param signTimeId
* @param startDate
* @param endDate
* @return
*/
List<StatisticsSignLearn> getRecords(@Param("signTimeId") Long signTimeId,@Param("startDate") String startDate,@Param("endDate") String endDate);
}
package com.yizhi.application.service;
import com.baomidou.mybatisplus.service.IService;
import com.yizhi.application.domain.TrSignAccount;
public interface SignAccountService extends IService<TrSignAccount>{
}
package com.yizhi.application.service;
import com.yizhi.application.domain.TrSignRecord;
import com.yizhi.sign.application.vo.ExportSignRecordVO;
import com.baomidou.mybatisplus.service.IService;
import java.util.List;
/**
* <p>
* 签到记录表 服务类
* </p>
*
* @author fanchunhui123
* @since 2018-03-07
*/
public interface SignRecordService extends IService<TrSignRecord> {
/**
* 我的签到总数量
*
* @param accountId 学员ID
* @return
*/
Integer selectCountByAccountId(Long accountId);
/**
* 获取签到完成数量( PC 端 学习统计签到 完成数量)
*
* @param trainingProjectId 培训项目ID
* @return
*/
Integer selectCountByTrainingProjectId(Long trainingProjectId, Long accountId);
/**
* 签到记录导出
*
* @param accountId
* @param isAdmin
* @param siteId
* @param trainingProjectId
* @return
*/
List<ExportSignRecordVO> exportSignRecord(Long accountId, boolean isAdmin, Long siteId, Long trainingProjectId);
boolean insertSignRecordList(List<TrSignRecord> signRecordList);
}
package com.yizhi.application.service;
import com.baomidou.mybatisplus.service.IService;
import com.yizhi.application.domain.TrSignRemind;
/**
* <p>
* 签到提醒时间,一个sign_time对应一个sign_time 服务类
* </p>
*
* @author fanchunhui123
* @since 2018-03-07
*/
public interface SignRemindService extends IService<TrSignRemind> {
}
package com.yizhi.application.service;
import com.baomidou.mybatisplus.plugins.Page;
import com.baomidou.mybatisplus.service.IService;
import com.yizhi.application.domain.TrSign;
import com.yizhi.sign.application.vo.*;
import com.yizhi.sign.application.vo.domain.SignRecordVO;
import java.util.List;
/**
* <p>
* 签到主体表,入口在培训项目 服务类
* </p>
*
* @author fanchunhui123
* @since 2018-03-07
*/
public interface SignService extends IService<TrSign> {
boolean insertSignAndSignTimeAndSignRemind(SignVO signVO);
boolean updateSignAndSignTimeAndSignRemind(SignVO signVO);
/**
*查询当前项目id对应的所有的签到时间列表
* @Function: SignService.java
* @Description:
*
* @param:
* @return:
* @throws:
*
* @author: xingliang
* @date: 2018年3月8日 上午11:08:13
*
* 2018年3月8日 xingliang
*/
List<SignQrcodeVO> querySignTime(Long trainingProjectId);
/**
* 学员签到
* @Function: SignService.java
* @Description:
*
* @param:
* @return:
* @throws:
*
* @author: xingliang
* @date: 2018年3月8日 下午2:35:27
*
* 2018年3月8日 xingliang
*/
String sign(Long accountId, String trainingProjectId, String signTimeId,Integer type);
/**
* 根据学员id信息,获取学员签到列表
* @Function: SignService.java
* @Description:
*
* @param:
* @return:
* @throws:
*
* @author: xingliang
* @date: 2018年3月9日 下午3:35:12
*
* 2018年3月9日 xingliang
*/
List<SignRecordVO> signRecordList(Long accountId);
/**
* 获取签到信息
* @param trainingProjectId 培训项目ID
* @return 签到对象
*/
SignVO querySign(Long trainingProjectId);
/**
* 获取我的签到
* @param accountId 学员ID
* @param month 月份为空查询所有
* @param pageIndex 页码
* @param pageSize 页数
* @return
*/
Page<TrSignRecordVo> selectSignRecordListByAccountIdAndMonth(Long accountId, String year, String month, int pageNo, int pageSize);
boolean deleteSignByProjectId(SignIdVO signIdVO);
TrSign selectByTimeId(Long signTimeId);
Integer getSignTimeCount(SignVO signVO);
/********************************************************** PC 端 ******************************************************/
/**
* 获取签到总数量( PC 端 培训项目中培训统计的签到总数)
* @param trainingProjectId
* @return
*/
Integer getPcSignTimeCount(Long trainingProjectId);
ApiSignTimeVO getSignTimeDeatil(Long accountId, String code, Long trainingProjectId);
}
package com.yizhi.application.service;
import com.baomidou.mybatisplus.service.IService;
import com.yizhi.application.domain.TrSignTime;
/**
* <p>
* 签到时间段,一个 sign 对应多个 sign_time 服务类
* </p>
*
* @author fanchunhui123
* @since 2018-03-07
*/
public interface SignTimeService extends IService<TrSignTime> {
}
package com.yizhi.application.service;
import com.baomidou.mybatisplus.plugins.Page;
import com.baomidou.mybatisplus.service.IService;
import com.yizhi.application.domain.StatisticsSign;
import com.yizhi.application.domain.StatisticsSignLearn;
import java.util.List;
public interface StatisticsSignService extends IService<StatisticsSign> {
Page<com.yizhi.sign.application.vo.domain.StatisticsSign> statisticsSignPage(Long projectId, String kwd, String startDate, String endDate, Long signCompanyId, List<Long> signOrgIds, Long signSiteId, Integer pageNo, Integer pageSize);
Page<StatisticsSign> statisticsSignView(Long id, Long trainningProjectId, String startDate, String endDate, String orgNameOrCode, String accountName, Integer pageNo, Integer pageSize);
List<StatisticsSign> chartGroup(Long trainningProjectId, String startDate, String endDate, Long signCompanyId, List<Long> signOrgIds, Long signSiteId);
List<StatisticsSignLearn> insertAccountLearn(Long researchId, String currentDate);
Integer statisticsSignPageCount(Long projectId, String startDate, String endDate, Long signCompanyId, List<Long> signOrgIds, Long signSiteId);
List<StatisticsSign> statisticsSignList(Long projectId, String startDate, String endDate, Long signCompanyId, List<Long> signOrgIds, Long signSiteId, Integer pageNo, Integer pageSize);
Integer statisticsSignViewCount(Long id, Long trainningProjectId, String startDate, String endDate, String orgNameOrCode, String accountName);
List<StatisticsSign> statisticsSignViewList(Long id, Long trainningProjectId, String startDate, String endDate, String orgNameOrCode, String accountName, Integer pageNo, Integer pageSize);
}
package com.yizhi.application.service.impl;
import com.yizhi.application.service.SignAccountService;
import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.service.impl.ServiceImpl;
import com.yizhi.application.domain.TrSignAccount;
import com.yizhi.application.mapper.SignAccountMapper;
@Service
public class SignAccountServiceImpl extends ServiceImpl<SignAccountMapper, TrSignAccount> implements SignAccountService {
}
package com.yizhi.application.service.impl;
import com.baomidou.mybatisplus.service.impl.ServiceImpl;
import com.yizhi.application.domain.TrSignRemind;
import com.yizhi.application.mapper.SignRemindMapper;
import com.yizhi.application.service.SignRemindService;
import org.springframework.stereotype.Service;
/**
* <p>
* 签到提醒时间,一个sign_time对应一个sign_time 服务实现类
* </p>
*
* @author fanchunhui123
* @since 2018-03-07
*/
@Service
public class SignRemindServiceImpl extends ServiceImpl<SignRemindMapper, TrSignRemind> implements SignRemindService {
}
package com.yizhi.application.service.impl;
import com.baomidou.mybatisplus.service.impl.ServiceImpl;
import com.yizhi.application.domain.TrSignTime;
import com.yizhi.application.mapper.SignTimeMapper;
import com.yizhi.application.service.SignTimeService;
import org.springframework.stereotype.Service;
/**
* <p>
* 签到时间段,一个 sign 对应多个 sign_time 服务实现类
* </p>
*
* @author fanchunhui123
* @since 2018-03-07
*/
@Service
public class SignTimeServiceImpl extends ServiceImpl<SignTimeMapper, TrSignTime> implements SignTimeService {
}
package com.yizhi.application.service.impl;
import com.baomidou.mybatisplus.plugins.Page;
import com.baomidou.mybatisplus.service.impl.ServiceImpl;
import com.yizhi.application.domain.StatisticsSign;
import com.yizhi.application.domain.StatisticsSignLearn;
import com.yizhi.application.mapper.StatisticsSignMapper;
import com.yizhi.application.service.StatisticsSignService;
import com.google.common.collect.Lists;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
@Service
public class StitisticsSignServiceImpl extends ServiceImpl<StatisticsSignMapper, StatisticsSign> implements StatisticsSignService {
@Autowired
private StatisticsSignMapper statisticsSignMapper;
private SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
@Override
public Page<com.yizhi.sign.application.vo.domain.StatisticsSign> statisticsSignPage(Long projectId, String kwd, String startDate, String endDate, Long signCompanyId, List<Long> signOrgIds, Long signSiteId, Integer pageNo, Integer pageSize) {
Page<StatisticsSign> page = new Page<>(pageNo, pageSize);
Page<com.yizhi.sign.application.vo.domain.StatisticsSign> page1 = new Page<>(pageNo, pageSize);
List<StatisticsSign> list = statisticsSignMapper.statisticsSignPage(projectId, startDate, endDate, signCompanyId, signOrgIds, signSiteId, kwd, page);
List<com.yizhi.sign.application.vo.domain.StatisticsSign> result = Lists.newArrayListWithCapacity(pageSize);
Integer NotSigncount = 0;
for (StatisticsSign statisticsSign : list) {
NotSigncount = statisticsSign.getCanStateCount() - statisticsSign.getJoinStateCount();
statisticsSign.setNotSignCount(NotSigncount);
com.yizhi.sign.application.vo.domain.StatisticsSign statisticsSign1 = new com.yizhi.sign.application.vo.domain.StatisticsSign();
BeanUtils.copyProperties(statisticsSign,statisticsSign1);
result.add(statisticsSign1);
}
if (!CollectionUtils.isEmpty(result)){
BeanUtils.copyProperties(page,page1);
page1.setRecords(result);
}
return page1;
}
@Override
public Page<StatisticsSign> statisticsSignView(Long signId, Long signTimeId, String startDate, String endDate, String orgNameOrCode, String accountName, Integer pageNo, Integer pageSize) {
if (accountName == null || accountName.equals("")) {
accountName = null;
}
if (orgNameOrCode == null || orgNameOrCode.equals("")) {
orgNameOrCode = null;
}
Page<StatisticsSign> page = new Page<StatisticsSign>(pageNo, pageSize);
List<StatisticsSign> list = statisticsSignMapper.statisticsSignView(signId, signTimeId, startDate, endDate, orgNameOrCode, accountName, page);
if (!CollectionUtils.isEmpty(list)) {
page.setRecords(list);
}
return page;
}
@Override
public List<StatisticsSign> chartGroup(Long trainningProjectId, String startDate, String endDate, Long signCompanyId, List<Long> signOrgIds, Long signSiteId) {
List<StatisticsSign> listAllRecord = new ArrayList<StatisticsSign>();
;
try {
List<StatisticsSign> list = statisticsSignMapper.chartGroup(trainningProjectId, startDate, endDate, signCompanyId, signOrgIds, signSiteId);
Date startDate1;
Date endDate1;
int num = 0;
String oldDate;
startDate1 = simpleDateFormat.parse(startDate);
endDate1 = simpleDateFormat.parse(endDate);
num = (int) ((endDate1.getTime() - startDate1.getTime()) / (1000 * 3600 * 24));
Date updateDate = startDate1;
String updateDateValue = simpleDateFormat.format(updateDate);
Boolean isTrue = false;
StatisticsSign rsccv;
int j = 0;
for (int i = 0; i <= num; i++) {
if (list != null && list.size() > 0) {
if (j < list.size()) {
rsccv = list.get(j);
if (null == rsccv.getSignTime()) {
continue;
}
if (simpleDateFormat.format(rsccv.getSignTime()).equals(updateDateValue)) {
j = j + 1;
listAllRecord.add(rsccv);
isTrue = true;
} else {
isTrue = false;
}
}
}
if (!isTrue) {
rsccv = new StatisticsSign();
rsccv.setSignTime(updateDate);
rsccv.setJoinStateCount(0);
rsccv.setCanStateCount(0);
listAllRecord.add(rsccv);
}
Calendar c = Calendar.getInstance();
c.setTime(updateDate);
c.add(Calendar.DAY_OF_MONTH, 1); // 利用Calendar 实现 Date日期+1天
updateDate = c.getTime();
updateDateValue = simpleDateFormat.format(updateDate);
isTrue = false;
}
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return listAllRecord;
}
@Override
public List<StatisticsSignLearn> insertAccountLearn(Long researchId, String currentDate) {
int count = statisticsSignMapper.insertAccountLearn(researchId, currentDate);
if (count == 0) {
return null;
}
return statisticsSignMapper.selectAccountLearn(researchId, currentDate);
}
@Override
public Integer statisticsSignPageCount(Long projectId, String startDate, String endDate, Long signCompanyId, List<Long> signOrgIds, Long signSiteId) {
return statisticsSignMapper.statisticsSignCount(projectId, startDate, endDate, signCompanyId, signOrgIds, signSiteId);
}
@Override
public List<StatisticsSign> statisticsSignList(Long projectId, String startDate, String endDate, Long signCompanyId, List<Long> signOrgIds, Long signSiteId, Integer pageNo, Integer pageSize) {
Page<StatisticsSign> page = new Page<StatisticsSign>(pageNo, pageSize);
List<StatisticsSign> list = statisticsSignMapper.statisticsSignPage(projectId, startDate, endDate, signCompanyId, signOrgIds, signSiteId, null, page);
return list;
}
@Override
public Integer statisticsSignViewCount(Long id, Long trainningProjectId, String startDate, String endDate, String orgNameOrCode, String accountName) {
if (accountName == null || accountName.equals("")) {
accountName = null;
}
if (orgNameOrCode == null || orgNameOrCode.equals("")) {
orgNameOrCode = null;
}
return statisticsSignMapper.statisticsSignViewCount(id, trainningProjectId, startDate, endDate, orgNameOrCode, accountName);
}
@Override
public List<StatisticsSign> statisticsSignViewList(Long id, Long trainningProjectId, String startDate, String endDate, String orgNameOrCode, String accountName, Integer pageNo, Integer pageSize) {
if (accountName == null || accountName.equals("")) {
accountName = null;
}
if (orgNameOrCode == null || orgNameOrCode.equals("")) {
orgNameOrCode = null;
}
Page<StatisticsSign> page = new Page<StatisticsSign>(pageNo, pageSize);
List<StatisticsSign> list = statisticsSignMapper.statisticsSignView(id, trainningProjectId, startDate, endDate, orgNameOrCode, accountName, page);
return list;
}
}
package com.yizhi.application.util;
import com.yizhi.core.application.context.RequestContext;
import com.yizhi.application.domain.TrSign;
import com.yizhi.core.application.publish.CloudEventPublisher;
import com.yizhi.message.application.enums.RelationType;
import com.yizhi.training.application.vo.EvenType;
import com.yizhi.training.application.vo.domain.TrainingProjectVo;
import com.yizhi.training.application.vo.manage.MessageRemindVo;
import com.yizhi.training.application.vo.manage.TaskVo;
import org.apache.commons.lang3.time.DateUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.util.Date;
@Component
public class SignEvenSendMessage {
@Autowired
private CloudEventPublisher cloudEventPublisher;
private Logger logger = LoggerFactory.getLogger(SignEvenSendMessage.class);
/**
* 触发事件,根据可见范围发消息
*
* @param trainingProject 业务参数对象
* @param accountId
*/
public void evenSendMessage(TrainingProjectVo trainingProject, TrSign finalTrSign, Long accountId, EvenType evenType) {
if (finalTrSign.getCreateTime() == null) {
logger.info("缺失必需参数!!");
return;
}
TaskVo taskVo = new TaskVo();
if (trainingProject != null) {
taskVo.setTaskName(trainingProject.getName());
taskVo.setTaskEndTime(finalTrSign.getCreateTime());
} else {
logger.info("查询出的培训为空!!!!");
return;
}
MessageRemindVo vo = new MessageRemindVo();
vo.setTaskVo(taskVo);
vo.setVisibleRange(trainingProject.getVisibleRange());
vo.setMessageId(evenType.getKey());
vo.setMessageType(3);
vo.setRelationId(finalTrSign.getId());
vo.setRelationType(RelationType.QD.getKey());
vo.setSendType(1);
//定时任务默认五分钟执行一次 这里默认暂时不延迟时间
vo.setSendTime(DateUtils.addMinutes(new Date(), 0));
if (accountId != null) {
vo.setAccountId(accountId);
}
RequestContext requestContext = new RequestContext();
requestContext.setCompanyId(trainingProject.getCompanyId());
requestContext.setSiteId(trainingProject.getSiteId());
requestContext.setAccountId(trainingProject.getCreateById());
requestContext.setAccountName(trainingProject.getCreateByName());
vo.setRequestContext(requestContext);
try {
//临时取消触发功能
// cloudEventPublisher.publish(Constans.MESSAGE_QUEUE, new EventWrapper<MessageRemindVo>(null, vo));
// logger.info("发送消息成功===========");
} catch (Exception e) {
e.printStackTrace();
logger.error("发送消息失败=====================", e);
}
}
}
server.port=39001
spring.application.name=sign
ACTIVE=${spring.profiles.active}
spring.profiles.active=sit
# nacos
spring.cloud.nacos.config.shared-dataids=common-${spring.profiles.active}.properties
spring.cloud.nacos.config.namespace=${spring.profiles.active}
spring.cloud.nacos.config.prefix=${spring.application.name}
spring.cloud.nacos.config.file-extension=properties
spring.cloud.nacos.config.server-addr=192.168.1.13:3333,192.168.1.24:4444,192.168.1.38:5555
ribbon.ReadTimeout=360000
ribbon.ConnectTimeout=360000
<?xml version="1.0" encoding="UTF-8"?>
<configuration debug="false">
<!--定义日志文件的存储地址 勿在 LogBack 的配置中使用相对路径 -->
<property name="LOG_HOME" value="${LOG_PATH}"/>
<!-- 控制台输出 -->
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符 -->
<pattern>%yellow(%date{yyyy-MM-dd HH:mm:ss}) %blue([%thread]) %-5level %green(%logger{70}) - %cyan(%msg%n)</pattern>
<charset>UTF-8</charset>
</encoder>
<param name="Encoding" value="UTF-8"/>
</appender>
<!-- 按照每天生成日志文件 -->
<appender name="FILE"
class="ch.qos.logback.core.rolling.RollingFileAppender">
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!--日志文件输出的文件名 -->
<FileNamePattern>${LOG_HOME}/${LOG_FILE}-%d{yyyy-MM-dd}.log</FileNamePattern>
<!--日志文件保留天数 -->
<MaxHistory>30</MaxHistory>
</rollingPolicy>
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符 -->
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
<charset>UTF-8</charset>
</encoder>
<param name="Encoding" value="UTF-8"/>
<!--日志文件最大的大小 -->
<triggeringPolicy
class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
<MaxFileSize>200MB</MaxFileSize>
</triggeringPolicy>
</appender>
<!-- 日志输出级别 -->
<root level="INFO">
<appender-ref ref="FILE"/>
<!-- 生产环境将请stdout,testfile去掉 -->
<appender-ref ref="STDOUT"/>
</root>
<logger name="com.yizhi.application.mapper" level="debug" additivity="false">
<appender-ref ref="STDOUT"/>
</logger>
</configuration>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.yizhi.application.mapper.SignRecordMapper">
<select id="selectSignRecordListByAccountIdAndMonth" resultType="com.yizhi.sign.application.vo.TrSignRecordVo">
SELECT DATE_FORMAT(sign_time,'%m') AS month,DATE_FORMAT(sign_time,'%Y-%m-%d %H:%i') AS signDate,training_project_id,'' AS trainingProjectName
FROM tr_sign_record
WHERE account_id = #{accountId}
<if test="year != null and year != ''">
AND DATE_FORMAT(sign_time,'%Y') = #{year}
</if>
<if test="month != null and month != ''">
AND DATE_FORMAT(sign_time,'%m') = #{month}
</if>
ORDER BY sign_time DESC, training_project_id
</select>
<select id="getTainningProjectById" resultType="com.yizhi.training.application.vo.domain.TrainingProjectVo">
SELECT
*
FROM
training_project
WHERE
id = #{trainingProjectId}
</select>
<select id="getAuthorizations" resultType="com.yizhi.training.application.vo.domain.TpAuthorizationRangeVo">
SELECT
*
FROM
tp_authorization_range
WHERE
biz_id = #{trainingProjectId}
and
deleted = 0
</select>
<select id="selectSignTimeList" resultType="com.yizhi.application.domain.TrSignTime">
SELECT
*
FROM
tr_sign_time
WHERE
training_project_id = #{trainingProjectId}
AND deleted = 0
</select>
<select id="exportSignRecord" resultType="com.yizhi.sign.application.vo.ExportSignRecordVO">
SELECT
account_id as accountId,sign_time as signTime,
CASE sign_status
WHEN 0 THEN
1
WHEN 1 THEN
2
END as signState
FROM
tr_sign_record
WHERE
sign_id = #{signTimeId}
<if test="accountIds != null and accountIds.size()>0">
AND account_id IN
<foreach collection="accountIds" item="item" open="(" separator="," close=")">
#{item}
</foreach>
</if>
</select>
</mapper>
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.yizhi.application.mapper.SignTimeMapper">
<update id="updateSignTimesStateBySignIdAndIds" parameterType="java.util.List">
update tr_sign_time
set deleted = 1,update_time=now(),update_by_id =#{accountId} , update_by_name=#{accountName}
where sign_id=#{signId}
<if test="times!=null and times.size()>0">
AND id not in
<foreach collection="times" index="index" item="item" separator="," open="(" close=")">
#{item.id}
</foreach>
</if>
</update>
<select id="selectByTimeId" resultType="com.yizhi.application.domain.TrSign">
select b.start_time as signStartDate ,b.end_time as signEndDate,project.name as trainningProjectName,
project.id trainingProjectId
FROM tr_sign as a INNER join tr_sign_time as b on b.sign_id = a.id
inner join `training_project` as project on a.training_project_id = project.id
where b.id = #{signTimeId} and b.deleted = 0
</select>
</mapper>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.yizhi</groupId>
<artifactId>wmy-parent</artifactId>
<version>1.0-SNAPSHOT</version>
<relativePath/>
</parent>
<groupId>com.yizhi</groupId>
<artifactId>sign-project</artifactId>
<version>1.0-SNAPSHOT</version>
<modules>
<module>cloud-sign-api</module>
<module>cloud-sign</module>
</modules>
<packaging>pom</packaging>
<repositories>
<repository>
<id>wmy4.0</id>
<url>http://mvn.km365.pw/nexus/content/groups/wmy4.0-group/</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<updatePolicy>always</updatePolicy>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>
</project>
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment