commit
Some checks failed
API接口参数变更检测 / api-param-check (push) Has been cancelled

This commit is contained in:
2026-06-05 16:18:40 +08:00
parent 1ca34c6bb2
commit 3cba3bb74e
4393 changed files with 450030 additions and 103 deletions

View File

@@ -0,0 +1,44 @@
# 应用服务器
server:
tomcat:
uri-encoding: UTF-8
accept-count: 5000
threads:
max: 2000
port: 30033
netty:
ip: 162.14.105.247
port: 8888
application:
name: jnpf-ftb-netty
spring:
servlet:
multipart:
max-file-size: 500MB
max-request-size: 600MB
management:
endpoints:
web:
exposure:
include: '*'
endpoint:
shutdown:
enabled: true
health:
show-details: always
# 开启在线日志查看功能
logfile:
enabled: true
# 智能排班按营业额选相似日时的「带状档」最少历史样本天数190算法内再 clamp。新店可改为 7 等。
jnpf:
ftb:
schedule:
template-similar-days-min-band-sample-days: 10
# 营业额带半宽 λ₁tier1 同星期几·严带、λ₂tier2/3·宽带须在 (0,1);非法则回退算法默认
template-similar-days-band-strict: '0.10'
template-similar-days-band-relaxed: '0.15'
# 考勤班次 fuzzy 绑定:覆盖率与效率阈值 [0,1],对齐 AttendanceGroupShiftMatchConfig
attendance-shift-match-min-history-coverage: '0.7'
attendance-shift-match-min-candidate-efficiency: '0.6'

View File

@@ -0,0 +1,76 @@
spring:
application:
# 应用名称
name: jnpf-ftb
main:
allow-bean-definition-overriding: true
allow-circular-references: true
cloud:
nacos:
username: ${NACOS_USER_NAME:nacos}
password: ${NACOS_PASSWORD:FTB_nacos_30099}
discovery:
# 服务注册地址
server-addr: ${NACOS_HOST:192.168.3.24:30099}
namespace: ${NACOS_NAMESPACE:69c4eecb-05bd-4041-81fe-1473f95f578c}
#ip: ${LOCAL_SERVER_IP:127.0.0.1}
config:
server-addr: ${spring.cloud.nacos.discovery.server-addr}
file-extension: yaml
group: DEFAULT_GROUP
namespace: ${spring.cloud.nacos.discovery.namespace}
extension-configs:
- # 数据源及Redis配置
data-id: datasource.yaml
group: DEFAULT_GROUP
refresh: true
- # 静态资源配置
data-id: resources.yaml
group: DEFAULT_GROUP
refresh: true
- # 系统配置
data-id: system-config.yaml
group: DEFAULT_GROUP
refresh: true
- # 框架中间件配置
data-id: frame-config.yaml
group: DEFAULT_GROUP
refresh: true
- # 日志配置
data-id: logger.yaml
group: DEFAULT_GROUP
refresh: true
stream:
rocketmq:
binder:
name-server: ${ROCKETMQ_HOST:192.168.3.24:30094}
bindings:
output:
producer:
sync: true
group: jnpf-group1
permission-certificate-input:
consumer:
push:
orderly: true
consumeFromWhere: CONSUME_FROM_LAST_OFFSET
permission-franchisee-input:
consumer:
consumeFromWhere: CONSUME_FROM_LAST_OFFSET
bindings:
permission-output: #生产
content-type: text/json
destination: permission-topic
group: jnpf-group1
permission-input: #消费
content-type: text/json
destination: permission-topic
group: jnpf-ftb-consumer-group
permission-certificate-input: #证照消费(顺序)
content-type: text/json
destination: permission-topic
group: jnpf-ftb-certificate-consumer-group
permission-franchisee-input: #加盟商消费
content-type: text/json
destination: permission-topic
group: jnpf-ftb-franchisee-consumer-group

View File

@@ -0,0 +1,29 @@
-- Add and backfill template status for certificate instances.
-- Source field: ftb_store_certificate_photo.F_Status
SET @column_exists := (
SELECT COUNT(1)
FROM information_schema.COLUMNS
WHERE TABLE_SCHEMA = DATABASE()
AND TABLE_NAME = 'ftb_certificate_instance'
AND COLUMN_NAME = 'F_TemplateStatus'
);
SET @ddl := IF(
@column_exists > 0,
'SELECT 1',
'ALTER TABLE ftb_certificate_instance ADD COLUMN F_TemplateStatus tinyint DEFAULT NULL COMMENT ''store custom template status'' AFTER F_TemplateId'
);
PREPARE stmt FROM @ddl;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
UPDATE ftb_certificate_instance ci
LEFT JOIN ftb_store_certificate_photo scp
ON scp.F_Id = ci.F_TemplateId
SET ci.F_TemplateStatus = scp.F_Status
WHERE ci.F_CertificateType = 'storeCustomCertificate';
UPDATE ftb_certificate_instance
SET F_TemplateStatus = NULL
WHERE F_CertificateType <> 'storeCustomCertificate';

Binary file not shown.

After

Width:  |  Height:  |  Size: 47 KiB

View File

@@ -0,0 +1,56 @@
<?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="jnpf.attendance.mapper.AttendanceAIMapper">
<!-- 查询打卡记录列表 -->
<select id="getClockRecordList" resultType="jnpf.model.attendance.vo.attendance.ClockRecordVo">
SELECT
dr.F_Id AS ruleId,
dr.F_InPoint inPoint,
dr.F_OutPoint outPoint,
MAX(CASE WHEN ir.F_ClockInType = 1 THEN ir.F_ClockInId END) AS inClockInId,
MAX(CASE WHEN ir.F_ClockInType = 1 THEN i.F_ClockInTime END) AS onWorkDateTime,
MAX(CASE WHEN ir.F_ClockInType = 1 THEN i.F_Address END) AS onWorkAddress,
CASE
WHEN COUNT(CASE WHEN ir.F_ClockInType = 1 THEN 1 END) <![CDATA[ > ]]> 1 THEN '异常'
WHEN COUNT(CASE WHEN ir.F_ClockInType = 1 THEN 1 END) <![CDATA[ < ]]> 1 THEN '未打卡'
WHEN ir.F_Absence IS NOT NULL AND ir.F_Absence = 1 THEN '旷工'
ELSE MAX(
CASE WHEN ir.F_ClockInType = 1
THEN CASE ir.F_ClockInStatus
WHEN -2 THEN '无需打卡'
WHEN -1 THEN '缺卡'
WHEN 1 THEN '正常'
WHEN 2 THEN '迟到'
ELSE '异常'
END
END
)
END AS onWorkStatus,
MAX(CASE WHEN ir.F_ClockInType = 2 THEN ir.F_ClockInId END) AS outClockInId,
MAX(CASE WHEN ir.F_ClockInType = 2 THEN i.F_ClockInTime END) AS offWorkDateTime,
MAX(CASE WHEN ir.F_ClockInType = 2 THEN i.F_Address END) AS offWorkAddress,
CASE
WHEN COUNT(CASE WHEN ir.F_ClockInType = 2 THEN 1 END) <![CDATA[ > ]]> 1 THEN '异常'
WHEN COUNT(CASE WHEN ir.F_ClockInType = 2 THEN 1 END) <![CDATA[ < ]]> 1 THEN '未打卡'
WHEN ir.F_Absence IS NOT NULL AND ir.F_Absence = 1 THEN '旷工'
ELSE MAX(
CASE WHEN ir.F_ClockInType = 2
THEN CASE ir.F_ClockInStatus
WHEN -2 THEN '无需打卡'
WHEN -1 THEN '缺卡'
WHEN 1 THEN '正常'
WHEN 3 THEN '早退'
ELSE '异常'
END
END
)
END AS offWorkStatus
FROM ftb_attendance_daily_rule dr
LEFT JOIN ftb_attendance_clock_in_result ir ON dr.F_Id = ir.F_RuleId AND ir.F_DeleteMark = 0
LEFT JOIN ftb_attendance_clock_in i ON i.F_Id = ir.F_ClockInId
WHERE dr.F_Day = #{queryDate} AND dr.F_UserId = #{userId}
AND dr.F_AttendanceType IN (-1,1,2,4) AND dr.F_DeleteMark = 0
GROUP BY dr.F_Id, dr.F_InPoint, dr.F_OutPoint
ORDER BY dr.F_InPoint ASC
</select>
</mapper>

View File

@@ -0,0 +1,24 @@
<?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="jnpf.attendance.mapper.AttendanceApproveMapper" >
<!-- 查前天的加班出勤规则找这些出勤规则对应的加班结果表数据-->
<select id="getOvertimeVouchersList" resultType="jnpf.model.attendance.vo.OvertimeVouchersVo">
SELECT r.F_RuleId ruleId, r.F_EffectiveTime effectiveTime ,r.F_ClockInType clockInType, r.F_RestMinute restMinute,dr.F_GroupId groupId ,r.F_UserId userId
FROM ftb_attendance_clock_in_result r
LEFT JOIN ftb_attendance_daily_rule dr ON r.F_RuleId = dr.F_Id
WHERE r.F_RuleId IN (
SELECT F_Id
FROM ftb_attendance_daily_rule
WHERE
<![CDATA[
DATE_FORMAT(F_Day, '%Y-%m-%d') <= DATE_FORMAT(#{date}, '%Y-%m-%d') AND F_AttendanceType = 4 AND F_ApplyViewEnable IN(1,9,10) AND F_DeleteMark = 0
]]>
) AND r.F_ClockInStatus IN (1,-2) AND r.F_DeleteMark = 0
</select>
<!-- 校验是否重复发放加班劵-->
<select id="getOvertimeByRuleId" resultType="java.lang.Integer">
SELECT COUNT(0) from ftb_attendance_balance_record
where F_Type = #{code} and F_Object_Id = #{ruleId}
</select>
</mapper>

View File

@@ -0,0 +1,457 @@
<?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="jnpf.attendance.mapper.AttendanceBalanceRecordMapper" >
<sql id="Base_Column_List" >
F_Id, F_Name, F_User_Id, F_Balance, F_Total, F_Unit, F_Expire_Time, F_Grant_Way,
F_State, F_Over, F_Paid, F_CreatorUserId, F_CreatorTime, F_LastModifyUserId, F_LastModifyTime,
F_DeleteMark, F_DeleteTime, F_DeleteUserId, F_TenantId
</sql>
<!-- 余额管理列表-->
<!-- <select id="getBalanceList" resultType="jnpf.model.attendance.vo.UserBalanceVo">-->
<!-- SELECT * FROM (-->
<!-- SELECT u.F_UserId userId ,(SELECT IFNULL(SUM(F_Balance),0) FROM ftb_attendance_balance_record r WHERE r.F_User_Id = userId AND r.F_DeleteMark = 0 AND r.F_State = 0) balance ,-->
<!-- (SELECT IFNULL(SUM(r.F_Balance),0) FROM ftb_attendance_balance_record r WHERE r.F_User_Id = userId AND r.F_Paid = 1 AND F_DeleteMark = 0 AND F_State = 0) paidBalance ,-->
<!-- (SELECT IFNULL(SUM(r.F_Balance),0) FROM ftb_attendance_balance_record r WHERE r.F_User_Id = userId AND r.F_Paid = 2 AND r.F_DeleteMark = 0 AND r.F_State = 0) unpaidBalance ,-->
<!-- (SELECT IFNULL(SUM(r.F_Balance),0) FROM ftb_attendance_balance_record r WHERE r.F_User_Id = userId AND r.F_DeleteMark = 0 AND r.F_State = 0-->
<!-- <![CDATA[-->
<!-- AND r.F_Expire_Time <= DATE_ADD(now(),INTERVAL 7 DAY)-->
<!-- ]]>-->
<!-- ) adventBalance-->
<!-- FROM ftb_attendance_group_user u-->
<!-- LEFT JOIN ftb_attendance_balance_record r ON u.F_UserId = r.F_User_Id-->
<!-- WHERE u.F_GroupId = #{balanceQueryDto.groupId} AND u.F_Type = 1 AND u.F_DeleteMark = 0-->
<!-- <if test="null != balanceQueryDto.userIds and balanceQueryDto.userIds.size > 0">-->
<!-- AND F_UserId in-->
<!-- <foreach collection="balanceQueryDto.userIds" index="index" item="item" open="(" separator="," close=")">-->
<!-- #{item}-->
<!-- </foreach>-->
<!-- </if>-->
<!-- GROUP BY userId-->
<!-- ) a-->
<!-- WHERE 1 = 1-->
<!-- <if test="balanceQueryDto.minBalance != null">-->
<!-- <![CDATA[-->
<!-- AND #{balanceQueryDto.minBalance} <= a.balance-->
<!-- ]]>-->
<!-- </if>-->
<!-- <if test="balanceQueryDto.maxBalance != null">-->
<!-- <![CDATA[-->
<!-- AND a.balance <= #{balanceQueryDto.maxBalance}-->
<!-- ]]>-->
<!-- </if>-->
<!-- <if test="balanceQueryDto.minAdventBalance != null">-->
<!-- <![CDATA[-->
<!-- AND #{balanceQueryDto.minAdventBalance} <= a.adventBalance-->
<!-- ]]>-->
<!-- </if>-->
<!-- <if test="balanceQueryDto.maxAdventBalance != null">-->
<!-- <![CDATA[-->
<!-- AND a.adventBalance <= #{balanceQueryDto.maxAdventBalance}-->
<!-- ]]>-->
<!-- </if>-->
<!-- ORDER BY balance <if test="null != balanceSort"> ${balanceSort} </if> ,-->
<!-- paidBalance <if test="null != paidBalanceSort"> ${paidBalanceSort} </if> ,-->
<!-- unpaidBalance <if test="null != unpaidBalanceSort == 1"> ${unpaidBalanceSort} </if>,-->
<!-- adventBalance <if test="null != adventBalance "> ${adventBalance} </if>-->
<!-- </select>-->
<!-- 新增假期节假日劵-->
<!-- <insert id="grantBalance">-->
<!-- insert into ftb_attendance_balance_record (F_Id, F_Name, F_User_Id,-->
<!-- F_Balance, F_Total, F_Unit,-->
<!-- F_Expire_Time, F_Grant_Way, F_State,-->
<!-- F_Paid, F_CreatorUserId,F_CreatorTime,F_Type,F_Object_Id)-->
<!-- values (#{id}, #{holidayName}, #{userId},-->
<!-- #{dayNum}, #{dayNum}, #{unit},-->
<!-- #{expiresTime}, #{grantWay}, 0,-->
<!-- #{paid}, #{createUserId},now(),#{type},#{objectId})-->
<!-- </insert>-->
<!-- 余额记录列表-->
<!-- <select id="getUserBalance" resultType="jnpf.model.attendance.vo.AttendanceBalanceRecordVo">-->
<!-- select F_Id id, F_Name `name`, F_User_Id userId, F_Balance balance, F_Total total, F_Unit unit, F_Expire_Time expireTime, F_Grant_Way grantWay,-->
<!-- F_State `state`, F_Over `over`, F_Paid paid, F_CreatorUserId creatoruserid, F_CreatorTime creatortime-->
<!-- from ftb_attendance_balance_record-->
<!-- where F_User_Id IN (-->
<!-- SELECT F_UserId FROM ftb_attendance_group_user WHERE F_GroupId = #{balanceQueryDto.groupId} AND F_Type = 1-->
<!-- AND F_DeleteMark = 0-->
<!-- ) AND F_DeleteMark = 0-->
<!-- <if test="null != balanceQueryDto.iText and '' != balanceQueryDto.iText">-->
<!-- AND INSTR(F_Name ,#{balanceQueryDto.iText})> 0-->
<!-- <if test="null != balanceQueryDto.userIds and balanceQueryDto.userIds.size > 0">-->
<!-- OR F_User_Id in-->
<!-- <foreach collection="balanceQueryDto.userIds" index="index" item="item" open="(" separator="," close=")">-->
<!-- #{item}-->
<!-- </foreach>-->
<!-- </if>-->
<!-- </if>-->
<!-- <if test="null != balanceQueryDto.minGrantTime and '' != balanceQueryDto.minGrantTime">-->
<!-- <![CDATA[-->
<!-- AND DATE_FORMAT(#{balanceQueryDto.minGrantTime},'%Y-%m-%d') <= DATE_FORMAT(F_CreatorTime,'%Y-%m-%d')-->
<!-- ]]>-->
<!-- </if>-->
<!-- <if test="null != balanceQueryDto.maxGrantTime and '' != balanceQueryDto.maxGrantTime">-->
<!-- <![CDATA[-->
<!-- AND DATE_FORMAT(F_CreatorTime,'%Y-%m-%d') <= DATE_FORMAT(#{balanceQueryDto.maxGrantTime},'%Y-%m-%d')-->
<!-- ]]>-->
<!-- </if>-->
<!-- <if test="null != balanceQueryDto.minExpireTime and '' != balanceQueryDto.minExpireTime">-->
<!-- <![CDATA[-->
<!-- AND DATE_FORMAT(#{balanceQueryDto.minExpireTime},'%Y-%m-%d') <= DATE_FORMAT(F_Expire_Time,'%Y-%m-%d')-->
<!-- ]]>-->
<!-- </if>-->
<!-- <if test="null != balanceQueryDto.maxExpireTime and '' != balanceQueryDto.maxExpireTime">-->
<!-- <![CDATA[-->
<!-- AND DATE_FORMAT(F_Expire_Time,'%Y-%m-%d') <= DATE_FORMAT(#{balanceQueryDto.maxExpireTime},'%Y-%m-%d')-->
<!-- ]]>-->
<!-- </if>-->
<!-- <if test="null != balanceQueryDto.state">-->
<!-- AND F_State = #{balanceQueryDto.state}-->
<!-- </if>-->
<!-- </select>-->
<!-- 成员余额记录列表-->
<!-- <select id="getUserBalanceDetail" resultType="jnpf.model.attendance.vo.AttendanceBalanceRecordVo">-->
<!-- select F_Id id, F_Name `name`, F_User_Id userId, F_Balance balance, F_Total total, F_Unit unit, F_Expire_Time expireTime, F_Grant_Way grantWay,-->
<!-- F_State `state`, F_Over `over`, F_Paid paid, F_CreatorUserId creatoruserid, F_CreatorTime creatortime-->
<!-- from ftb_attendance_balance_record-->
<!-- where F_User_Id = #{balanceQueryDto.userId} AND F_DeleteMark = 0-->
<!-- <if test="null != balanceQueryDto.iText and '' != balanceQueryDto.iText">-->
<!-- AND INSTR(F_Name ,#{balanceQueryDto.iText})> 0-->
<!-- </if>-->
<!-- <if test="null != balanceQueryDto.minGrantTime and '' != balanceQueryDto.minGrantTime">-->
<!-- <![CDATA[-->
<!-- AND DATE_FORMAT(#{balanceQueryDto.minGrantTime},'%Y-%m-%d') <= DATE_FORMAT(F_CreatorTime,'%Y-%m-%d')-->
<!-- ]]>-->
<!-- </if>-->
<!-- <if test="null != balanceQueryDto.maxGrantTime and '' != balanceQueryDto.maxGrantTime">-->
<!-- <![CDATA[-->
<!-- AND DATE_FORMAT(F_CreatorTime,'%Y-%m-%d') <= DATE_FORMAT(#{balanceQueryDto.maxGrantTime},'%Y-%m-%d')-->
<!-- ]]>-->
<!-- </if>-->
<!-- <if test="null != balanceQueryDto.minExpireTime and '' != balanceQueryDto.minExpireTime">-->
<!-- <![CDATA[-->
<!-- AND DATE_FORMAT(#{balanceQueryDto.minExpireTime},'%Y-%m-%d') <= DATE_FORMAT(F_Expire_Time,'%Y-%m-%d')-->
<!-- ]]>-->
<!-- </if>-->
<!-- <if test="null != balanceQueryDto.maxExpireTime and '' != balanceQueryDto.maxExpireTime">-->
<!-- <![CDATA[-->
<!-- AND DATE_FORMAT(F_Expire_Time,'%Y-%m-%d') <= DATE_FORMAT(#{balanceQueryDto.maxExpireTime},'%Y-%m-%d')-->
<!-- ]]>-->
<!-- </if>-->
<!-- <if test="null != balanceQueryDto.state">-->
<!-- AND F_State = #{balanceQueryDto.state}-->
<!-- </if>-->
<!-- </select>-->
<!-- 修改指定劵的状态-->
<!-- <update id="updateBalanceState">-->
<!-- update ftb_attendance_balance_record-->
<!-- set-->
<!-- F_State = #{state},-->
<!-- F_LastModifyUserId = #{userId},-->
<!-- F_LastModifyTime = now()-->
<!-- where F_Id = #{id}-->
<!-- </update>-->
<!-- 获取用户余额-->
<select id="getBalanceByUserId" resultType="jnpf.model.attendance.vo.UserBalanceVo">
SELECT F_User_Id userId, IFNULL(SUM(F_Balance),0) balance ,
(SELECT IFNULL(SUM(r.F_Balance),0) FROM ftb_attendance_balance_record r WHERE r.F_User_Id = userId AND r.F_Paid = 1 AND F_State = 0 ) paidBalance ,
(SELECT IFNULL(SUM(r.F_Balance),0) FROM ftb_attendance_balance_record r WHERE r.F_User_Id = userId AND r.F_Paid = 2 AND F_State = 0) unpaidBalance ,
(SELECT IFNULL(SUM(r.F_Balance),0) FROM ftb_attendance_balance_record r WHERE r.F_User_Id = userId AND F_State = 0
<![CDATA[
AND r.F_Expire_Time <= DATE_ADD(now(),INTERVAL 7 DAY)
]]>
) adventBalance
FROM ftb_attendance_balance_record
WHERE F_User_Id = #{userId} AND F_DeleteMark = 0 AND F_State = 0
GROUP BY userId ,F_Unit
</select>
<!-- 过期劵-->
<update id="invalidationCoupons">
UPDATE ftb_attendance_balance_record
SET F_State = 1
WHERE F_Id IN
<foreach collection="ids"
item="item" index="index" separator="," open="(" close=")">
#{item}
</foreach>
</update>
<!-- 获取节日信息-->
<select id="getFestivalSetting" resultType="jnpf.model.attendance.vo.VacationVo">
SELECT F_Day dayNum , F_ExpiresType expiresType ,F_ExpiresDayNumber expiresDayNumber , F_ExpiresMonth expiresMonth ,F_ExpiresDay expiresDay ,F_PaidSalaryEnable paid ,F_Name holidayName ,F_Id id
FROM ftb_attendance_festival_setting
WHERE F_Id = #{balanceId}
</select>
<!-- 获取假日配置信息-->
<select id="getHolidaySetting" resultType="jnpf.model.attendance.vo.VacationVo">
SELECT F_DayType dayType,F_DayNumber dayNumber ,F_YoeMultiple yoeMultiple ,F_YosMultiple yosMultiple , F_ExpiresType expiresType ,F_ExpiresDayNumber expiresDayNumber , F_ExpiresMonth expiresMonth ,F_ExpiresDay expiresDay ,F_PaidSalaryEnable paid ,F_Name holidayName
FROM ftb_attendance_holiday_setting
WHERE F_Id = #{balanceId}
</select>
<select id="getBalanceRecordByUserId" resultType="jnpf.model.attendance.vo.AttendanceBalanceRecordVo">
SELECT t.* FROM (
SELECT F_Id id, F_Name `name`, F_User_Id userId, F_Balance balance, F_Total total, F_Unit unit, IFNULL(F_Expire_Time,DATE_FORMAT('2999-1-1','%Y-%m-%d')) expireTime, F_Grant_Way grantWay,
F_State `state`, F_Over `over`, F_Paid paid, F_CreatorUserId creatoruserid, F_CreatorTime creatortime
FROM ftb_attendance_balance_record
WHERE F_User_Id = #{userId} AND F_State = 0 AND F_Over = 0 AND F_DeleteMark = 0 AND F_Paid IN
<foreach collection="paid"
item="item" index="index" separator="," open="(" close=")">
#{item}
</foreach>
) t
ORDER BY t.expireTime ,paid ASC
</select>
<!-- 修改劵的使用情况-->
<update id="updateBalance">
UPDATE ftb_attendance_balance_record
SET F_Balance = #{balance},
F_Over = #{over},
F_LastModifyTime = now()
WHERE F_Id = #{id}
</update>
<!-- 获取用户指定类型假的余额总数-->
<!-- <select id="getBalanceRecordCountByUserId" resultType="java.math.BigDecimal">-->
<!-- SELECT IFNULL(SUM(F_Balance),0)-->
<!-- FROM ftb_attendance_balance_record-->
<!-- WHERE F_User_Id = #{userId} AND F_State = 0 AND F_Over = 0 AND F_DeleteMark = 0 AND F_Paid = #{paid}-->
<!-- </select>-->
<!-- 通过劵的id获取劵的详情-->
<select id="getBalanceDetailList" resultType="jnpf.model.attendance.vo.AttendanceBalanceRecordVo">
SELECT F_Id id, F_Balance balance
FROM ftb_attendance_balance_record
WHERE F_Id IN
<foreach collection="balanceIds" item="item" index="index" separator="," open="(" close=")">
#{item}
</foreach>
</select>
<!-- 验证出勤规则id有无发加班劵-->
<select id="getBalanceByRuleId" resultType="java.lang.Integer">
SELECT count(0)
FROM ftb_attendance_balance_record
WHERE F_Type = 3 and F_Object_Id = #{ruleId}
</select>
<!-- 批量获取用户余额-->
<select id="getBalanceByUserIds" resultType="jnpf.model.attendance.vo.UserBalanceVo">
SELECT F_User_Id userId, IFNULL(SUM(F_Balance),0) balance ,
(SELECT IFNULL(SUM(r.F_Balance),0) FROM ftb_attendance_balance_record r WHERE r.F_User_Id = userId AND r.F_Paid = 1 AND F_State = 0 ) paidBalance ,
(SELECT IFNULL(SUM(r.F_Balance),0) FROM ftb_attendance_balance_record r WHERE r.F_User_Id = userId AND r.F_Paid = 2 AND F_State = 0) unpaidBalance ,
(SELECT IFNULL(SUM(r.F_Balance),0) FROM ftb_attendance_balance_record r WHERE r.F_User_Id = userId AND F_State = 0
<![CDATA[
AND r.F_Expire_Time <= DATE_ADD(now(),INTERVAL 7 DAY)
]]>
) adventBalance
FROM ftb_attendance_balance_record
WHERE F_DeleteMark = 0 AND F_State = 0
AND F_User_Id IN
<foreach collection="userIds"
item="id" index="index" separator="," open="(" close=")">
#{id}
</foreach>
GROUP BY userId ,F_Unit
</select>
<!-- <delete id="deleteByPrimaryKey" parameterType="java.lang.String" >-->
<!-- delete from ftb_attendance_balance_record-->
<!-- where F_Id = #{fId,jdbcType=VARCHAR}-->
<!-- </delete>-->
<!-- <insert id="insert" parameterType="com.shs.cts.util.domain.po.experience.AttendanceBalanceRecord" >-->
<!-- insert into ftb_attendance_balance_record (F_Id, F_Name, F_User_Id, -->
<!-- F_Balance, F_Total, F_Unit, -->
<!-- F_Expire_Time, F_Grant_Way, F_State, -->
<!-- F_Over, F_Paid, F_CreatorUserId, -->
<!-- F_CreatorTime, F_LastModifyUserId, F_LastModifyTime, -->
<!-- F_DeleteMark, F_DeleteTime, F_DeleteUserId, -->
<!-- F_TenantId)-->
<!-- values (#{fId,jdbcType=VARCHAR}, #{fName,jdbcType=VARCHAR}, #{fUserId,jdbcType=VARCHAR}, -->
<!-- #{fBalance,jdbcType=DECIMAL}, #{fTotal,jdbcType=DECIMAL}, #{fUnit,jdbcType=BIT}, -->
<!-- #{fExpireTime,jdbcType=TIMESTAMP}, #{fGrantWay,jdbcType=BIT}, #{fState,jdbcType=BIT}, -->
<!-- #{fOver,jdbcType=BIT}, #{fPaid,jdbcType=BIT}, #{fCreatoruserid,jdbcType=VARCHAR}, -->
<!-- #{fCreatortime,jdbcType=TIMESTAMP}, #{fLastmodifyuserid,jdbcType=VARCHAR}, #{fLastmodifytime,jdbcType=TIMESTAMP}, -->
<!-- #{fDeletemark,jdbcType=INTEGER}, #{fDeletetime,jdbcType=TIMESTAMP}, #{fDeleteuserid,jdbcType=VARCHAR}, -->
<!-- #{fTenantid,jdbcType=VARCHAR})-->
<!-- </insert>-->
<!-- -->
<!-- -->
<!-- <update id="updateByPrimaryKey" parameterType="com.shs.cts.util.domain.po.experience.AttendanceBalanceRecord" >-->
<!-- update ftb_attendance_balance_record-->
<!-- set F_Name = #{fName,jdbcType=VARCHAR},-->
<!-- F_User_Id = #{fUserId,jdbcType=VARCHAR},-->
<!-- F_Balance = #{fBalance,jdbcType=DECIMAL},-->
<!-- F_Total = #{fTotal,jdbcType=DECIMAL},-->
<!-- F_Unit = #{fUnit,jdbcType=BIT},-->
<!-- F_Expire_Time = #{fExpireTime,jdbcType=TIMESTAMP},-->
<!-- F_Grant_Way = #{fGrantWay,jdbcType=BIT},-->
<!-- F_State = #{fState,jdbcType=BIT},-->
<!-- F_Over = #{fOver,jdbcType=BIT},-->
<!-- F_Paid = #{fPaid,jdbcType=BIT},-->
<!-- F_CreatorUserId = #{fCreatoruserid,jdbcType=VARCHAR},-->
<!-- F_CreatorTime = #{fCreatortime,jdbcType=TIMESTAMP},-->
<!-- F_LastModifyUserId = #{fLastmodifyuserid,jdbcType=VARCHAR},-->
<!-- F_LastModifyTime = #{fLastmodifytime,jdbcType=TIMESTAMP},-->
<!-- F_DeleteMark = #{fDeletemark,jdbcType=INTEGER},-->
<!-- F_DeleteTime = #{fDeletetime,jdbcType=TIMESTAMP},-->
<!-- F_DeleteUserId = #{fDeleteuserid,jdbcType=VARCHAR},-->
<!-- F_TenantId = #{fTenantid,jdbcType=VARCHAR}-->
<!-- where F_Id = #{fId,jdbcType=VARCHAR}-->
<!-- </update>-->
<select id="getBalanceByApplyIds" resultType="jnpf.model.attendance.model.BalanceRecord">
SELECT
fabur.F_Unit b_F_Unit,
fabur.F_Quota b_F_Quota,
fabr.F_Paid b_F_Paid,
fabur.F_Object_Id id
FROM ftb_attendance_balance_use_record fabur
LEFT JOIN ftb_attendance_balance_record fabr ON fabr.F_Id = fabur.F_Balance_Id
WHERE F_DeleteMark = 0 AND fabur.F_Use_Type = 0
AND fabur.F_Object_Id IN
<foreach collection="applyIds"
item="id" index="index" separator="," open="(" close=")">
#{id}
</foreach>
GROUP BY fabr.F_User_Id ,fabur.F_Unit
</select>
<!-- 获取用户余额-->
<select id="getStraightBalanceList" resultType="jnpf.entity.attendance.AttendanceStorageRest">
SELECT F_User_Id userId,SUM(F_Balance) num
FROM ftb_attendance_balance_record
WHERE F_State = 0 AND F_Type = 3 AND F_State = 0 AND F_Over = 0 AND F_DeleteMark = 0
GROUP BY F_User_Id
</select>
<select id="getOvertimeBalanceInfo" resultType="jnpf.model.attendance.model.OvertimeBalanceModel">
SELECT
fabr.F_User_Id userId,
SUM(CASE WHEN fabr.F_OverTime = 1 THEN fabr.F_Total ELSE 0 END) weekdayOvertimeDays,
SUM(CASE WHEN fabr.F_OverTime = 1 THEN fabr.F_Balance ELSE 0 END) weekdayOvertimeResidueDays,
SUM(CASE WHEN fabr.F_OverTime = 3 THEN fabr.F_Total ELSE 0 END) holidaysOvertimeDays,
SUM(CASE WHEN fabr.F_OverTime = 3 THEN fabr.F_Balance ELSE 0 END) holidaysOvertimeResidueDays,
SUM(CASE WHEN fabr.F_OverTime = 2 THEN fabr.F_Total ELSE 0 END) publicHolidaysOvertimeDays,
SUM(CASE WHEN fabr.F_OverTime = 2 THEN fabr.F_Balance ELSE 0 END) publicHolidaysOvertimeResidueDays
FROM ftb_attendance_balance_record fabr
WHERE fabr.F_State = 0
AND fabr.F_Type = 3
AND fabr.F_DeleteMark = 0
AND fabr.F_Object_Id IS NOT NULL
AND fabr.F_OverTimeDay between #{startDate} and #{endDate}
AND fabr.F_User_Id IN
<foreach collection="userIds"
item="id" index="index" separator="," open="(" close=")">
#{id}
</foreach>
GROUP BY fabr.F_User_Id
</select>
<select id="getSurplusDaysInfo" resultType="jnpf.model.attendance.model.SurplusDaysModel">
SELECT
fabr.F_User_Id userId,
SUM(fabr.F_Balance) surplusDays
FROM ftb_attendance_balance_record fabr
WHERE fabr.F_State = 0
AND fabr.F_Type = 3
AND fabr.F_DeleteMark = 0
AND fabr.F_User_Id IN
<foreach collection="userIds"
item="id" index="index" separator="," open="(" close=")">
#{id}
</foreach>
GROUP BY fabr.F_User_Id
</select>
<select id="getOvertimeHolidaysInfo" resultType="jnpf.model.attendance.model.OvertimeHolidaysInfoModel">
SELECT
fabr.F_User_Id userId,
fabr.F_FestivalStr holidayNameList,
fabr.F_Total holidaysOvertimeDays
FROM ftb_attendance_balance_record fabr
WHERE fabr.F_State = 0
AND fabr.F_Type = 3
AND fabr.F_OverTime = 3
AND fabr.F_FestivalStr is not null
AND fabr.F_DeleteMark = 0
AND fabr.F_OverTimeDay between #{startDate} and #{endDate}
AND fabr.F_User_Id IN
<foreach collection="userIds"
item="id" index="index" separator="," open="(" close=")">
#{id}
</foreach>
</select>
<select id="getLeaveBalanceInfo" resultType="jnpf.model.attendance.model.LeaveBalanceInfoModel">
SELECT
fabr.F_User_Id userId,
fabr.F_Object_Id leaveTypeId,
SUM(F_Balance) value
FROM ftb_attendance_balance_record fabr
WHERE fabr.F_Type = 2
AND fabr.F_DeleteMark = 0
AND fabr.F_State = 0
AND (fabr.F_Expire_Time >= #{startDate} or fabr.F_Expire_Time is null)
AND fabr.F_Object_Id is not null
AND fabr.F_User_Id IN
<foreach collection="userIds"
item="id" index="index" separator="," open="(" close=")">
#{id}
</foreach>
GROUP BY fabr.F_User_Id,fabr.F_Object_Id
</select>
<select id="getLeaveApprovalInfo" resultType="jnpf.model.attendance.model.LeaveApprovalModel">
SELECT
F_GroupId groupId,
F_User_Id userId,
F_Type_Id leaveTypeId,
F_StartTime startTime,
F_EndTime endTime,
F_BalanceJsonNew balanceJson,
F_ShiftInvolved shiftInvolved
FROM ftb_attendance_leave_approve
WHERE
F_DeleteMark = 0
AND F_Status = 1
and F_BalanceJsonNew is not null
AND F_User_Id IN
<foreach collection="userIds"
item="id" index="index" separator="," open="(" close=")">
#{id}
</foreach>
AND F_Id IN
<foreach collection="leaveIds"
item="id" index="index" separator="," open="(" close=")">
#{id}
</foreach>
</select>
<select id="selectInvalidationCoupons" resultType="jnpf.entity.attendance.AttendanceBalanceRecordEntity">
SELECT F_Id id,
F_Name name,
F_Type type,
F_Object_Id objectId,
F_OverTime overTime,
F_OverTimeDay overTimeDay,
F_User_Id userId,
F_Balance balance,
F_Total total,
F_Unit unit,
F_Expire_Time expireTime,
F_Grant_Way grantWay,
F_State state,
F_Over isOver,
F_Paid paid
FROM ftb_attendance_balance_record
WHERE
F_Expire_Time <![CDATA[ <= ]]> now()
AND F_DeleteMark = 0 AND F_State = 0
</select>
<!-- 删除当月存休-->
<delete id="deleteByYearMonth">
delete FROM ftb_attendance_storage_rest
WHERE F_YearMonth = #{lastMonthDate}
</delete>
</mapper>

View File

@@ -0,0 +1,80 @@
<?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="jnpf.attendance.mapper.AttendanceBalanceUseRecordMapper" >
<sql id="Base_Column_List" >
F_Id, F_Balance_Id, F_Quota, F_Unit, F_Use_Type, F_Object_Id ,F_Start_Time, F_End_Time, F_Lock,
F_CreatorUserId, F_CreatorTime, F_TenantId
</sql>
<!-- 获取用户劵的使用劵详情-->
<select id="getUserBalanceDetail" resultType="jnpf.model.doclibrary.vo.UseDetailVo">
select F_Id id, F_Quota quota, F_Unit unit, F_Use_Type useType, F_Object_Id objectId, DATE_FORMAT(F_Start_Time,'%Y-%m-%d') startTime, DATE_FORMAT(F_End_Time,'%Y-%m-%d') endTime, F_CreatorTime createTime
FROM ftb_attendance_balance_use_record
where F_Balance_Id = #{id}
</select>
<insert id="addOne">
insert into ftb_attendance_balance_use_record (F_Id, F_Balance_Id, F_Quota,
F_Unit, F_Use_Type,F_Object_Id, F_Start_Time, F_End_Time, F_Lock,F_CreatorTime)
values (#{id}, #{balanceId}, #{quota},
#{unit}, #{userType}, #{objectId}, #{startTime}, #{endTime}, #{lock}, now())
</insert>
<insert id="addBatch">
insert into ftb_attendance_balance_use_record (F_Id, F_Balance_Id, F_Quota,
F_Unit, F_Use_Type,F_Object_Id, F_Start_Time, F_End_Time, F_Lock,F_CreatorTime)
values
<foreach collection="useRecordList" item="item" index="index" separator="," >
(#{item.id}, #{item.balanceId}, #{item.quota},
#{item.unit}, #{item.useType}, #{item.objectId}, #{item.startTime}, #{item.endTime}, #{item.lock}, now())
</foreach>
</insert>
<!-- 查出本次排班相关的所有消费记录-->
<select id="getUserBalanceListByObjectId" resultType="jnpf.model.doclibrary.vo.UseDetailVo">
select F_Id id, F_Quota quota,F_Balance_Id balanceId
FROM ftb_attendance_balance_use_record
where F_Use_Type = #{userType} AND F_Object_Id = #{id}
</select>
<delete id="deleteByIds">
delete from ftb_attendance_balance_use_record
where F_Id in
<foreach collection="userBalanceList" item="item" index="index" separator="," open="(" close=")">
#{item.id}
</foreach>
</delete>
<!-- <delete id="deleteByPrimaryKey" parameterType="java.lang.String" >-->
<!-- delete from ftb_attendance_balance_use_record-->
<!-- where F_Id = #{fId,jdbcType=VARCHAR}-->
<!-- </delete>-->
<!-- <insert id="insert" parameterType="com.shs.cts.util.domain.po.experience.AttendanceBalanceUseRecord" >-->
<!-- insert into ftb_attendance_balance_use_record (F_Id, F_Balance_Id, F_Quota, -->
<!-- F_Unit, F_Approve_Id, F_Start_Time, -->
<!-- F_End_Time, F_Lock, F_CreatorUserId, -->
<!-- F_CreatorTime, F_TenantId)-->
<!-- values (#{fId,jdbcType=VARCHAR}, #{fBalanceId,jdbcType=VARCHAR}, #{fQuota,jdbcType=DECIMAL}, -->
<!-- #{fUnit,jdbcType=BIT}, #{fApproveId,jdbcType=VARCHAR}, #{fStartTime,jdbcType=TIMESTAMP}, -->
<!-- #{fEndTime,jdbcType=TIMESTAMP}, #{fLock,jdbcType=BIT}, #{fCreatoruserid,jdbcType=VARCHAR}, -->
<!-- #{fCreatortime,jdbcType=TIMESTAMP}, #{fTenantid,jdbcType=VARCHAR})-->
<!-- </insert>-->
<!-- -->
<!-- <update id="updateByPrimaryKey" parameterType="com.shs.cts.util.domain.po.experience.AttendanceBalanceUseRecord" >-->
<!-- update ftb_attendance_balance_use_record-->
<!-- set F_Balance_Id = #{fBalanceId,jdbcType=VARCHAR},-->
<!-- F_Quota = #{fQuota,jdbcType=DECIMAL},-->
<!-- F_Unit = #{fUnit,jdbcType=BIT},-->
<!-- F_Approve_Id = #{fApproveId,jdbcType=VARCHAR},-->
<!-- F_Start_Time = #{fStartTime,jdbcType=TIMESTAMP},-->
<!-- F_End_Time = #{fEndTime,jdbcType=TIMESTAMP},-->
<!-- F_Lock = #{fLock,jdbcType=BIT},-->
<!-- F_CreatorUserId = #{fCreatoruserid,jdbcType=VARCHAR},-->
<!-- F_CreatorTime = #{fCreatortime,jdbcType=TIMESTAMP},-->
<!-- F_TenantId = #{fTenantid,jdbcType=VARCHAR}-->
<!-- where F_Id = #{fId,jdbcType=VARCHAR}-->
<!-- </update>-->
</mapper>

View File

@@ -0,0 +1,10 @@
<?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="jnpf.attendance.mapper.AttendanceBaseSettingMapper" >
<!-- 获取出勤换算-->
<select id="getAttendanceRatio" resultType="java.lang.Integer">
SELECT F_AttendanceRatio FROM ftb_attendance_base_setting WHERE F_GroupId = (
SELECT F_GroupId FROM ftb_attendance_group_user WHERE F_UserId = #{userId} AND F_Type = 1
)
</select>
</mapper>

View File

@@ -0,0 +1,42 @@
<?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="jnpf.attendance.mapper.AttendanceCardReplacementApproveMapper" >
<sql id="Base_Column_List" >
F_Id, F_User_Id, F_Object_Id, F_Reason, f_flowtaskid, f_flowid, F_UniqueId, F_TenantId
</sql>
<sql id="Blob_Column_List" >
F_Picture
</sql>
<!-- <delete id="deleteByPrimaryKey" parameterType="java.lang.String" >-->
<!-- delete from ftb_attendance_card_replacement_approve-->
<!-- where F_Id = #{fId,jdbcType=VARCHAR}-->
<!-- </delete>-->
<!-- <insert id="insert" parameterType="com.shs.cts.util.domain.po.experience.AttendanceCardReplacementApprove" >-->
<!-- insert into ftb_attendance_card_replacement_approve (F_Id, F_User_Id, F_Object_Id, -->
<!-- F_Reason, f_flowtaskid, f_flowid, -->
<!-- F_UniqueId, F_TenantId, F_Picture-->
<!-- )-->
<!-- values (#{fId,jdbcType=VARCHAR}, #{fUserId,jdbcType=VARCHAR}, #{fObjectId,jdbcType=VARCHAR}, -->
<!-- #{fReason,jdbcType=VARCHAR}, #{fFlowtaskid,jdbcType=VARCHAR}, #{fFlowid,jdbcType=VARCHAR}, -->
<!-- #{fUniqueid,jdbcType=VARCHAR}, #{fTenantid,jdbcType=VARCHAR}, #{fPicture,jdbcType=LONGVARCHAR}-->
<!-- )-->
<!-- </insert>-->
<!-- -->
<!-- -->
<!-- <update id="updateByPrimaryKey" parameterType="com.shs.cts.util.domain.po.experience.AttendanceCardReplacementApprove" >-->
<!-- update ftb_attendance_card_replacement_approve-->
<!-- set F_User_Id = #{fUserId,jdbcType=VARCHAR},-->
<!-- F_Object_Id = #{fObjectId,jdbcType=VARCHAR},-->
<!-- F_Reason = #{fReason,jdbcType=VARCHAR},-->
<!-- f_flowtaskid = #{fFlowtaskid,jdbcType=VARCHAR},-->
<!-- f_flowid = #{fFlowid,jdbcType=VARCHAR},-->
<!-- F_UniqueId = #{fUniqueid,jdbcType=VARCHAR},-->
<!-- F_TenantId = #{fTenantid,jdbcType=VARCHAR}-->
<!-- where F_Id = #{fId,jdbcType=VARCHAR}-->
<!-- </update>-->
</mapper>

View File

@@ -0,0 +1,228 @@
<?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="jnpf.attendance.mapper.AttendanceClockInMapper" >
<!-- 更新为缺勤 -->
<update id="updateToAbsence">
update ftb_attendance_clock_in_result
set
F_Absence = 1,
F_LastAbsenceLeader = #{handleUser},
F_LastModifyTime = now()
where F_RuleId = #{ruleId} and F_UserId = #{userId} and F_DeleteMark = 0
</update>
<!-- 更新为不缺勤 -->
<update id="updateToUnAbsence">
update ftb_attendance_clock_in_result
set
F_Absence = 0,
F_LastAbsenceLeader = #{handleUser},
F_LastModifyTime = now()
where F_RuleId = #{ruleId} and F_UserId = #{userId} and F_DeleteMark = 0
</update>
<!-- 删除审批中的打卡记录 -->
<delete id="deleteBatchByUserDay">
DELETE FROM ftb_attendance_clock_in a
WHERE EXISTS (
SELECT 1
FROM (
<foreach collection="list" item="item" separator=" UNION ALL ">
SELECT #{item.dayStr} AS dayStr, #{item.userId} AS userId
</foreach>
) t
WHERE a.F_Day = t.dayStr
AND a.F_UserId = t.userId
) AND a.F_ApprovalStatus = #{passApproval}
</delete>
<!-- 查询用户出勤结果 -->
<select id="getClockInResultByRule" resultType="jnpf.model.attendance.vo.ClockInVo">
select acis.F_Id id,acis.F_RuleId ruleId, acis.F_UserId userId, acis.F_ClockInId clockInId, aci.F_ClockInTime clockInTime, aci.F_ApprovalStatus approvalStatus,
acis.F_EffectiveTime effectiveTime, acis.F_ClockInType clockInType, acis.F_ClockInStatus clockInStatus, acis.F_ClockInKind clockInKind,
acis.F_Absence absence, acis.F_AbsenceLeader absenceLeader, acis.F_AbnormalMinute abnormalMinute, aci.F_Address address, aci.F_Lng lng, aci.F_Lat lat,
aci.F_DeviceType deviceType, aci.F_DeviceId deviceId, aci.F_DeviceName deviceName, acis.F_ApplyType applyType, acis.F_ApplyId applyId, acis.F_Repaired repaired
,aci.F_Remark remark
from ftb_attendance_clock_in_result acis
left join ftb_attendance_clock_in aci on acis.F_ClockInId = aci.F_Id
JOIN (
<foreach collection="list" item="item" separator=" UNION ALL ">
SELECT #{item.ruleId} AS ruleId, #{item.userId} AS userId
</foreach>
) AS tmp ON acis.F_RuleId = tmp.ruleId AND acis.F_UserId = tmp.userId
WHERE acis.F_DeleteMark = 0
AND (aci.F_Id IS NULL OR aci.F_ApprovalStatus != 2)
</select>
<!-- 查询用户出勤结果 -->
<select id="getClockInResultByRuleList" resultType="jnpf.model.attendance.vo.ClockInVo">
select acis.F_Id id, acis.F_RuleId ruleId, acis.F_UserId userId, acis.F_ClockInId clockInId, aci.F_ClockInTime clockInTime, aci.F_ApprovalStatus approvalStatus,
acis.F_EffectiveTime effectiveTime, acis.F_ClockInType clockInType, acis.F_ClockInStatus clockInStatus, acis.F_ClockInKind clockInKind, acis.F_Repaired repaired,
acis.F_Absence absence, acis.F_AbsenceLeader absenceLeader, acis.F_AbnormalMinute abnormalMinute, acis.F_ApplyId applyId, aci.F_Address address, aci.F_Lng lng, aci.F_Lat lat,
aci.F_DeviceType deviceType, aci.F_DeviceId deviceId, aci.F_DeviceName deviceName , aci.F_Remark remark, r.F_ApplyId AS associationApplyId, r.F_GroupId groupId
from ftb_attendance_clock_in_result acis
left join ftb_attendance_clock_in aci on acis.F_ClockInId = aci.F_Id
LEFT JOIN ftb_attendance_daily_rule r ON r.F_Id = acis.F_RuleId
where acis.F_DeleteMark = 0 and (aci.F_Id is null or aci.F_ApprovalStatus != 2)
and acis.F_RuleId in
<foreach collection="list" index="index" item="item" open="(" separator="," close=")">
#{item}
</foreach>
</select>
<!-- 查询时间段内的补卡次数 -->
<select id="getRepairCount" resultType="java.lang.Integer">
select count(*) from (
select acis.F_Repaired repaired, case acis.F_ClockInType when 1 then adr.F_InPoint when 2 then adr.F_OutPoint else '' end workTime
from ftb_attendance_clock_in_result acis
left join ftb_attendance_clock_in aci on acis.F_ClockInId = aci.F_Id
left join ftb_attendance_daily_rule adr on acis.F_RuleId = adr.F_Id
where acis.F_DeleteMark = 0 and acis.F_RuleId in (
select F_Id from ftb_attendance_daily_rule where F_GroupId = #{groupId} and F_ApplyViewEnable = 1 and F_DeleteMark = 0
) and acis.F_UserId = #{userId} and (aci.F_DeleteMark is null or aci.F_DeleteMark = 0)
) t where repaired = 1
<![CDATA[
and DATE_FORMAT(workTime, '%Y-%m-%d') >= DATE_FORMAT(#{startTime}, '%Y-%m-%d')
and DATE_FORMAT(workTime, '%Y-%m-%d') < DATE_FORMAT(#{endTime}, '%Y-%m-%d')
]]>
</select>
<!-- 查询考勤组本月异常打卡记录 -->
<select id="getAbnormalClockInList" resultType="jnpf.model.attendance.vo.AbnormalClockInVo">
select id, clockInType, ruleId, clockInId, `day`, workTime, clockInTime, clockInStatus, absence from (
select acir.F_Id id, acir.F_ClockInType clockInType, acir.F_RuleId ruleId, acir.F_ClockInId clockInId, adr.F_Day `day`,
case acir.F_ClockInType when 1 then adr.F_InPoint when 2 then adr.F_OutPoint else '' end workTime,
aci.F_ClockInTime clockInTime, acir.F_ClockInStatus clockInStatus, acir.F_Absence absence, acir.F_AbsenceLeader absenceLeader
from ftb_attendance_clock_in_result acir
left join ftb_attendance_clock_in aci on acir.F_ClockInId = aci.F_Id
left join ftb_attendance_daily_rule adr on acir.F_RuleId = adr.F_Id
where acir.F_UserId = #{userId} and acir.F_DeleteMark = 0 and (aci.F_DeleteMark is null or aci.F_DeleteMark = 0)
and ifnull(length(acir.F_ApplyId), 0) = 0
<if test="absenceType == 0">
and acir.F_Absence = 0 and acir.F_ClockInStatus in
<foreach collection="list" index="index" item="item" open="(" separator="," close=")">
#{item}
</foreach>
</if>
<if test="absenceType == 1">
and (acir.F_Absence = 1 or acir.F_ClockInStatus in
<foreach collection="list" index="index" item="item" open="(" separator="," close=")">
#{item}
</foreach>
)
</if>
and acir.F_RuleId in (
select F_Id from ftb_attendance_daily_rule where F_GroupId = #{groupId} and F_ApplyViewEnable in (1, 10) and F_DeleteMark = 0
) and adr.F_Id is not null
) t where
<![CDATA[
DATE_FORMAT(workTime, '%Y-%m-%d') >= DATE_FORMAT(#{monthBeginDate}, '%Y-%m-%d')
and DATE_FORMAT(workTime, '%Y-%m-%d') <= DATE_FORMAT(#{monthEndDate}, '%Y-%m-%d')
]]>
order by t.day desc, t.clockInType asc
</select>
<!-- 查询当日所有打卡记录 -->
<select id="getListByRuleAndDate" resultType="jnpf.model.attendance.vo.DailyClockInVo">
select ci.F_Id clockInId, ci.F_ClockInTime clockInTime, ci.F_Address clockInPlace, F_DeviceType clockInMethod, t.F_RuleId ruleId, ifnull(t.F_DeleteMark, 1) deleteMark
from ftb_attendance_clock_in ci
left join (
select F_ClockInId, F_RuleId, F_DeleteMark from ftb_attendance_clock_in_result cir
where cir.F_RuleId in (
select F_Id from ftb_attendance_daily_rule where F_UserId = #{userId} and F_Day = #{queryDate} and F_DeleteMark = 0
)
) t on t.F_ClockInId = ci.F_Id
where ci.F_DeleteMark = 0 and ci.F_ApprovalStatus = 0 and ci.F_Day = #{queryDate} and ci.F_UserId = #{userId}
order by ci.F_CreatorTime asc
</select>
<!-- 查询用户出勤打卡记录 -->
<select id="getClockInByStatistics" resultType="jnpf.model.attendance.model.ClockClassRecord">
SELECT
acis.F_DeleteMark,
aci.F_Day AS `day`,
acis.F_Id AS id,
acis.F_RuleId AS ruleId,
acis.F_UserId AS userId,
aci.F_Id AS clockInId,
aci.F_ClockInTime AS clockInTime,
aci.F_ApprovalStatus AS approvalStatus,
acis.F_EffectiveTime AS effectiveTime,
acis.F_ClockInType AS clockInType,
acis.F_ClockInStatus AS clockInStatus,
acis.F_ClockInKind AS clockInKind,
acis.F_Repaired AS repaired,
acis.F_Absence AS absence,
acis.F_AbsenceLeader AS absenceLeader,
acis.F_AbnormalMinute AS abnormalMinute,
acis.F_ApplyId AS applyId,
aci.F_Address AS address,
aci.F_Lng AS lng,
aci.F_Lat AS lat,
aci.F_DeviceType AS deviceType,
aci.F_DeviceId AS deviceId,
aci.F_DeviceName AS deviceName
FROM
ftb_attendance_clock_in aci
LEFT JOIN (
SELECT
r.*
FROM
ftb_attendance_clock_in_result r
LEFT JOIN ftb_attendance_daily_rule dr ON dr.F_Id = r.F_RuleId
WHERE
r.F_UserId = #{userId}
AND dr.F_Day = #{queryDate}
AND r.F_DeleteMark = 0
) acis ON acis.F_ClockInId = aci.F_Id
WHERE
aci.F_Day = #{queryDate}
AND aci.F_UserId = #{userId}
AND aci.F_DeleteMark = 0
AND aci.F_ApprovalStatus = 0
ORDER BY
aci.F_CreatorTime
</select>
<!-- 批量查询当日所有打卡记录-->
<select id="getClockInList" resultType="jnpf.model.attendance.model.ClockClassRecord">
select aci.F_Day `day`, acis.F_Id id, acis.F_RuleId ruleId, aci.F_UserId userId, aci.F_Id clockInId, aci.F_ClockInTime clockInTime, aci.F_ApprovalStatus approvalStatus,
acis.F_EffectiveTime effectiveTime, acis.F_ClockInType clockInType, acis.F_ClockInStatus clockInStatus, acis.F_ClockInKind clockInKind, acis.F_Repaired repaired,
acis.F_Absence absence, acis.F_AbsenceLeader absenceLeader, acis.F_AbnormalMinute abnormalMinute, acis.F_ApplyId applyId, aci.F_Address address, aci.F_Lng lng, aci.F_Lat lat,
aci.F_DeviceType deviceType, aci.F_DeviceId deviceId, aci.F_DeviceName deviceName
from ftb_attendance_clock_in aci
left join ftb_attendance_clock_in_result acis on acis.F_ClockInId = aci.F_Id
where ifnull(acis.F_DeleteMark, 0) = 0 and aci.F_DeleteMark = 0 and aci.F_ApprovalStatus = 0
<![CDATA[ and DATE_FORMAT(aci.F_Day, '%Y-%m-%d') >= DATE_FORMAT(#{start}, '%Y-%m-%d') ]]>
<![CDATA[ and DATE_FORMAT(aci.F_Day, '%Y-%m-%d') <= DATE_FORMAT(#{end}, '%Y-%m-%d') ]]>
and aci.F_UserId in
<foreach collection="userIds" index="index" item="item" open="(" separator="," close=")">
#{item}
</foreach>
order by aci.F_CreatorTime asc
</select>
<!-- 查询打卡记录[批量] -->
<select id="selectListBatch" resultType="jnpf.entity.attendance.FtbAttendanceClockIn">
select
ac.F_Id AS id,
ac.F_Day AS `day`,
ac.F_UserId AS userId,
ac.F_ClockInTime AS clockInTime,
ac.F_ApprovalCode AS approvalCode,
ac.F_ApprovalStatus AS approvalStatus,
ac.F_RelationId AS relationId,
ac.F_Address AS address,
ac.F_Lng AS lng,
ac.F_Lat AS lat,
ac.F_ClockInKind AS clockInKind,
ac.F_DeviceType AS deviceType,
ac.F_DeviceId AS deviceId,
ac.F_DeviceName AS deviceName,
ac.F_Remark AS remark
from ftb_attendance_clock_in ac
join (
<foreach collection="list" item="ud" separator="," open="values" close="">
row(#{ud.userId}, #{ud.dayStr})
</foreach>
) v(userId, `day`)
on ac.F_UserId = v.userId and ac.F_Day = v.`day`
where ac.F_DeleteMark = 0
and ac.F_ApprovalStatus = #{approvalStatus}
order by ac.F_ClockInTime asc
</select>
</mapper>

View File

@@ -0,0 +1,289 @@
<?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="jnpf.attendance.mapper.AttendanceClockInResultMapper" >
<!-- 批量更新记录为删除 -->
<update id="updateBatchToDel">
update ftb_attendance_clock_in_result
set
F_DeleteMark = 1,
F_DeleteTime = now()
where F_Id in
<foreach collection="list" index="index" item="item" open="(" separator="," close=")">
#{item}
</foreach>
</update>
<!-- 更新申请信息为空 -->
<update id="updateReplyToNull">
update ftb_attendance_clock_in_result
set
F_ApplyId = null,
F_ApplyType = null
where F_ClockInId = #{clockInId} and F_ApplyId = #{applyId}
</update>
<!-- 更新审批为空 -->
<update id="updateResultReplyToNull">
update ftb_attendance_clock_in_result
set
F_ApplyId = null,
F_ApplyType = null,
F_AbsenceLeader = #{dealUser}
where F_Id = #{id}
</update>
<!-- 根据出勤规则删除打卡结果 -->
<update id="updateToDelByRule">
update ftb_attendance_clock_in_result
set
F_DeleteMark = 1,
F_DeleteUserId = #{updateUserId},
F_DeleteTime = now()
where F_RuleId in
<foreach collection="list" index="index" item="item" open="(" separator="," close=")">
#{item}
</foreach>
</update>
<!-- 更新缺勤为正常 -->
<update id="updateAbsenceToNormal">
update ftb_attendance_clock_in_result set F_Absence = 0 where F_Id = #{id}
</update>
<!-- 更新为缺勤 -->
<update id="updateToAbsence">
update ftb_attendance_clock_in_result set F_Absence = 1 where F_Id = #{id}
</update>
<!-- 根据出勤规则删除打卡结果 -->
<update id="removeClockInResultByRule">
update ftb_attendance_clock_in_result set F_DeleteMark = 1, F_LastModifyTime = now() where F_RuleId in
<foreach collection="list" index="index" item="item" open="(" separator="," close=")">
#{item}
</foreach>
</update>
<!-- 变更打卡结果绑定的rule -->
<update id="updateResultRelation">
update ftb_attendance_clock_in_result set F_RuleId = #{ruleId} where F_Id = #{resultId}
</update>
<!-- 更新为缺勤[批量] -->
<update id="updateToAbsenceBatch">
update ftb_attendance_clock_in_result set F_Absence = 1
where F_Id in
<foreach collection="list" index="index" item="item" open="(" separator="," close=")">
#{item}
</foreach>
</update>
<!-- 根据出勤规则删除用户的打卡结果 -->
<delete id="deleteRecordByRule">
update ftb_attendance_clock_in_result
set
F_DeleteMark = 1,
F_DeleteUserId = #{updateUserId},
F_DeleteTime = now()
where F_UserId = #{userId} and F_RuleId in (
select t.ruleId from (
select distinct acir.F_RuleId ruleId from ftb_attendance_clock_in_result acir
left join ftb_attendance_daily_rule adr on acir.F_RuleId = adr.F_Id
where acir.F_UserId = #{userId} and adr.F_Id is null and acir.F_DeleteMark = 0
) t
)
</delete>
<!-- 根据出勤规则删除用户的打卡结果[批量] -->
<delete id="deleteRecordByRuleBatch">
UPDATE ftb_attendance_clock_in_result acir
LEFT JOIN ftb_attendance_daily_rule adr ON acir.F_RuleId = adr.F_Id
SET
acir.F_DeleteMark = 1,
acir.F_DeleteUserId = #{updateUserId},
acir.F_DeleteTime = NOW()
WHERE acir.F_UserId IN
<foreach collection="list" item="item" open="(" separator="," close=")">
#{item}
</foreach>
AND acir.F_DeleteMark = 0
AND adr.F_Id IS NULL
</delete>
<!-- 根据条件查询用户打卡记录 -->
<select id="selectUserClockInHistory" resultType="jnpf.entity.attendance.AttendanceClockInResult">
select acis.F_Id id, acis.F_RuleId ruleId, acis.F_UserId userId, acis.F_ClockInId clockInId, acis.F_ClockInType clockInType, acis.F_DeleteMark deleteMark, ifnull(aci.F_ApprovalStatus, 0) approvalStatus
from ftb_attendance_daily_rule r
left join ftb_attendance_clock_in_result acis on r.F_Id = acis.F_RuleId
left join ftb_attendance_clock_in aci on acis.F_ClockInId = aci.F_Id
where date_format(r.F_Day,'%Y-%m-%d') = date_format(date_sub(#{dateStr}, interval 1 day),'%Y-%m-%d')
and r.F_DeleteMark = 0 and r.F_ApplyViewEnable in (1, 3, 9, 10) and acis.F_ClockInId is not null
and (date_format(r.F_InLackPoint,'%Y-%m-%d') = date_format(#{dateStr},'%Y-%m-%d') or date_format(r.F_OutLackPoint,'%Y-%m-%d') = date_format(#{dateStr},'%Y-%m-%d'))
union all
select acis.F_Id id, acis.F_RuleId ruleId, acis.F_UserId userId, acis.F_ClockInId clockInId, acis.F_ClockInType clockInType, acis.F_DeleteMark deleteMark, ifnull(aci.F_ApprovalStatus, 0) approvalStatus
from ftb_attendance_clock_in_result acis
left join ftb_attendance_clock_in aci on acis.F_ClockInId = aci.F_Id
where date_format(F_ClockInTime,'%Y-%m-%d') = date_format(#{dateStr},'%Y-%m-%d')
</select>
<!-- 判断是否缺勤 -->
<select id="countAbsence" resultType="java.lang.Integer">
select count(*) from ftb_attendance_clock_in_result
where F_RuleId = #{ruleId} and F_UserId = #{userId} and F_DeleteMark = 0 and F_Absence = 1 and length(ifnull(F_AbsenceLeader, '')) > 0
</select>
<!-- 查询已存在的打卡结果 -->
<select id="selectExistRecord" resultType="jnpf.entity.attendance.AttendanceClockInResult">
SELECT F_Id id, F_RuleId ruleId, F_UserId userId, F_ClockInType clockInType
FROM ftb_attendance_clock_in_result
WHERE F_DeleteMark = 0
<choose>
<when test="containsType == 1">
AND (F_RuleId, F_UserId, F_ClockInType) IN
<foreach collection="list" item="item" open="(" separator="," close=")">
(#{item.ruleId}, #{item.userId}, #{item.clockInType})
</foreach>
</when>
<otherwise>
AND (F_RuleId, F_UserId) IN
<foreach collection="list" item="item" open="(" separator="," close=")">
(#{item.ruleId}, #{item.userId})
</foreach>
</otherwise>
</choose>
</select>
<!-- 查询跨天的打卡id -->
<select id="getCrossDayClockInIdList" resultType="java.lang.String">
select F_Id from ftb_attendance_clock_in where F_Id in (
select F_ClockInId from ftb_attendance_clock_in_result where F_ApprovalStatus = 0 and F_DeleteMark = 0 and F_RuleId in
<foreach collection="list" index="index" item="item" open="(" separator="," close=")">
#{item}
</foreach>
)
<![CDATA[
and DATE_FORMAT(F_Day,'%Y-%m-%d') > DATE_FORMAT(#{day},'%Y-%m-%d')
]]>
</select>
<!-- 查询跨天的打卡id[批量] -->
<select id="getCrossDayClockInIdListBatch" resultType="string">
select ac.F_Id
from ftb_attendance_clock_in ac
join (
<foreach collection="list" item="item" separator="," open="values" close="">
row(#{item.ruleId}, #{item.day})
</foreach>
) v(ruleId, `day`)
on exists (
select 1
from ftb_attendance_clock_in_result r
where r.F_RuleId = v.ruleId
and r.F_ClockInId = ac.F_Id
and ac.F_ApprovalStatus = 0
and r.F_DeleteMark = 0
)
where ac.F_Day > v.`day`
</select>
<!-- 查询打卡结果是否在审批中 -->
<select id="getReplyingCount" resultType="java.lang.Integer">
select count(*) from ftb_attendance_clock_in_result where F_Id = #{clockInResultId} and F_DeleteMark = 0 and F_ApplyId is not null
</select>
<select id="selectUserClockInResult" resultType="jnpf.model.attendance.vo.ChangeInfoVo">
select result.F_ClockInType clockInType,
if(result.F_ClockInType = 1, rule.F_InPoint, rule.F_OutPoint) shiftTime,
result.F_Id clockInResultId,
DATE_FORMAT(rule.F_Day, '%Y-%m-%d') `day`,
if(result.F_Absence = 1, 4, result.F_ClockInStatus) clockInStatus,
clock.F_ClockInTime clockInTime
from ftb_attendance_clock_in_result result
inner join
(select F_Id
, F_InStepOutType
, F_OutStepOutType
, F_InPoint
, F_OutPoint
, F_Day
from ftb_attendance_daily_rule rule
where rule.F_DeleteMark = 0
and rule.F_UserId = #{userId}
and rule.F_GroupId = #{groupId}
and rule.F_AttendanceType = 1
and rule.F_ApplyViewEnable in (1, 3, 9, 10)
and rule.F_Day BETWEEN #{start} and #{end}) rule
on result.F_RuleId = rule.F_Id
left join ftb_attendance_clock_in clock on result.F_ClockInId = clock.F_Id
where result.F_ClockInStatus != -2 and result.F_ClockInKind = 1 and result.F_DeleteMark = 0 and if (result.F_ClockInType = 1, rule.F_InStepOutType, rule.F_OutStepOutType) = 0
order by rule.F_Day DESC, result.F_ClockInType asc
</select>
<!-- 根据用户和日期查询打卡结果 -->
<select id="getByUserAndDay" resultType="java.lang.String">
select distinct F_RuleId ruleId from ftb_attendance_clock_in_result
where F_UserId = #{userId}
and DATE_FORMAT(F_CreatorTime,'%Y-%m-%d') = DATE_FORMAT(#{date},'%Y-%m-%d')
and F_DeleteMark = 0
</select>
<!-- 获取用户打卡天数-->
<select id="getClockInDayNum" resultType="java.lang.Integer">
SELECT COUNT(DISTINCT(dr.F_Day))
FROM ftb_attendance_daily_rule dr
LEFT JOIN ftb_attendance_clock_in_result r ON r.F_RuleId = dr.F_Id
WHERE r.F_UserId = #{userId} AND r.F_ClockInStatus IN (1,2,3)
AND r.F_DeleteMark = 0 AND dr.F_DeleteMark = 0
</select>
<!-- 获取用户迟到次数-->
<select id="getLateClockInNum" resultType="java.lang.Integer">
SELECT COUNT(DISTINCT (F_UserId))
FROM ftb_attendance_clock_in_result
WHERE F_DeleteMark = 0 AND F_ClockInStatus = 2
AND F_RuleId IN
<foreach collection="dayRuleIds" index="index" item="item" open="(" separator="," close=")">
#{item}
</foreach>
</select>
<!-- 查询补卡审批中次数 -->
<select id="selectRepairApplyCount" resultType="java.lang.Integer">
select count(*) from ftb_attendance_clock_in_result ir
left join ftb_attendance_daily_rule dr on ir.F_RuleId = dr.F_Id
left join ftb_apply_attendance_repair r on r.F_Id = ir.F_ApplyId
where ir.F_UserId = #{userId} and ir.F_DeleteMark = 0 and ir.F_ApplyId is not null and ir.F_ApplyType = 1
and dr.F_GroupId = #{groupId}
<![CDATA[
and DATE_FORMAT(r.F_ApplyDate,'%Y-%m-%d') >= #{beginDate}
and DATE_FORMAT(r.F_ApplyDate,'%Y-%m-%d') <= #{endDate}
]]>
</select>
<!-- 根据打卡ids查询打卡结果 -->
<select id="selectBatchByClockInIds" resultType="jnpf.entity.attendance.AttendanceClockInResult">
SELECT
x.F_Id AS id,
x.F_RuleId AS ruleId,
x.F_UserId AS userId,
x.F_ClockInId AS clockInId,
x.F_EffectiveTime AS effectiveTime,
x.F_ClockInType AS clockInType,
x.F_ClockInStatus AS clockInStatus,
x.F_ClockInKind AS clockInKind,
x.F_Repaired AS repaired,
x.F_ApplyType AS applyType,
x.F_ApplyId AS applyId,
x.F_Absence AS absence,
x.F_AbsenceLeader AS absenceLeader,
x.F_LastAbsenceLeader AS lastAbsenceLeader,
x.F_RestMinute AS restMinute,
x.F_AbnormalMinute AS abnormalMinute
FROM (
SELECT
t.F_Id, t.F_RuleId, t.F_UserId, t.F_ClockInId, t.F_EffectiveTime, t.F_ClockInType, t.F_ClockInStatus, t.F_ClockInKind,
t.F_Repaired, t.F_ApplyType, t.F_ApplyId, t.F_Absence, t.F_AbsenceLeader, t.F_LastAbsenceLeader, t.F_RestMinute, t.F_AbnormalMinute,
ROW_NUMBER() OVER (PARTITION BY F_ClockInId ORDER BY F_CreatorTime DESC) rn
FROM ftb_attendance_clock_in_result t
WHERE t.F_DeleteMark = 0 and t.F_ClockInId IN
<foreach collection="list" item="id" open="(" separator="," close=")">
#{id}
</foreach>
) x
WHERE x.rn = 1
</select>
<!-- 查询需要更新为缺勤的打卡结果 -->
<select id="selectRuleIdsForAbsence" resultType="jnpf.model.attendance.vo.ConditionVo">
SELECT DISTINCT r.F_Id resultId, r.F_RuleId ruleId
FROM ftb_attendance_clock_in_result r
LEFT JOIN ftb_attendance_daily_rule dr on r.F_RuleId = dr.F_Id
WHERE
r.F_ClockInStatus = -1
AND r.F_DeleteMark = 0
AND dr.F_AttendanceType != 4
<if test="list != null and list.size() > 0">
AND (F_RuleId, F_ClockInType) IN
<foreach collection="list" item="c" separator="," open="(" close=")">
(#{c.ruleId}, #{c.workType})
</foreach>
</if>
</select>
</mapper>

View File

@@ -0,0 +1,68 @@
<?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="jnpf.attendance.mapper.AttendanceConfirmMapper">
<sql id="staticsWhere">
<where>
<if test=" year!= null">
AND fac.F_Year = #{year}
</if>
<if test=" month!= null">
AND fac.F_Month = #{month}
</if>
<if test="userIds!= null and userIds.size()>0">
and fac.F_UserId in
<foreach collection="userIds" item="item" open="(" separator="," close=")">
#{item}
</foreach>
</if>
<if test="type!= null">
<choose>
<when test="type == 1">
AND fac.F_Status = 2
</when>
<when test="type == 2">
AND fac.F_Status in(0,1)
</when>
<when test="type == 3">
AND fac.F_Status = 0
</when>
<when test="type == 4">
AND fac.F_Status = 1
</when>
<otherwise>
and 1=1
</otherwise>
</choose>
</if>
</where>
</sql>
<select id="getStatistics" resultType="jnpf.model.attendance.vo.attendance.ConfirmStatisticsVo">
SELECT
COUNT(fac.F_Id) total,
COALESCE(SUM(IF(fac.F_Status = 2, 1, 0)),0) confirmed,
COALESCE(SUM(IF(fac.F_Status = 0 or fac.F_Status = 1, 1, 0)),0) toDoConfirm,
COALESCE(SUM(IF(fac.F_Status = 0 , 1, 0)),0) noViewed,
COALESCE(SUM(IF(fac.F_Status = 1, 1, 0)),0) yesViewed
FROM ftb_attendance_confirm fac
<include refid="staticsWhere"/>
</select>
<select id="getPageList" resultType="jnpf.model.attendance.vo.attendance.ConfirmListQueryVo">
SELECT
fac.F_Id id,
fac.F_UserId userId,
fac.F_Year `year`,
fac.F_Month `month`,
fac.F_Status `status`
FROM ftb_attendance_confirm fac
left JOIN (
SELECT
fagu.F_UserId,
fagu.F_GroupId
FROM
ftb_attendance_group_user fagu where fagu.F_DeleteMark = 0 and fagu.F_Type = 1
GROUP BY fagu.F_UserId
) fag ON fac.F_UserId = fag.F_UserId
<include refid="staticsWhere"/>
order by fag.F_GroupId desc,fac.F_Status
</select>
</mapper>

View File

@@ -0,0 +1,319 @@
<?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="jnpf.attendance.mapper.AttendanceDailyRuleMapper" >
<!-- 查询昨天和今天的出勤规则 -->
<select id="getRuleClockTimeContainsToday" resultType="jnpf.entity.attendance.FtbAttendanceDailyRule">
select adr.F_Id id, F_GroupId groupId, F_SelfGroup selfGroup, F_ShiftId periodId, F_PeriodInfo periodInfo, F_Day `day`, F_UserId userId, F_LateEnable lateEnable, F_EarlyEnable earlyEnable,
F_BreakEnable breakEnable, F_NextDayEnable nextDayEnable, F_ClockStartPoint clockStartPoint, F_InPoint inPoint, F_LatePoint latePoint, F_InLackPoint inLackPoint,
F_BreakStartPoint breakStartPoint, F_BreakEndPoint breakEndPoint, F_EarlyPoint earlyPoint, F_OutPoint outPoint, F_OutLackPoint outLackPoint, F_InStepOutType inStepOutType, F_OutStepOutType outStepOutType,
F_AttendanceType attendanceType, F_ApplyStart applyStart, F_ApplyEnd applyEnd, F_ApplyViewEnable applyViewEnable, F_InUnbounded inUnbounded, F_OutUnbounded outUnbounded,
F_IsLateOutLateIn isLateOutLateIn,
<choose>
<when test="null != userId and '' != userId">
ROW_NUMBER() OVER (ORDER BY F_InPoint DESC) AS rn
</when>
<otherwise>
ROW_NUMBER() OVER (PARTITION BY F_UserId ORDER BY F_InPoint DESC) AS rn
</otherwise>
</choose>
from ftb_attendance_daily_rule adr
left join ftb_attendance_group ag on F_GroupId = ag.F_Id
where adr.F_DeleteMark = 0 and ag.F_DeleteMark = 0 and F_ApplyViewEnable in (1, 3, 9, 10)
<if test="null != userId and '' != userId">
and adr.F_UserId = #{userId}
</if>
and F_Day between DATE_FORMAT(DATE_SUB(#{currentDate}, interval 1 day), '%Y-%m-%d') AND DATE_FORMAT(#{currentDate}, '%Y-%m-%d')
order by F_Day desc, F_InPoint desc
</select>
<!-- 查询指定日期的最后一个出勤规则 -->
<select id="getLastDailyRule" resultType="jnpf.entity.attendance.FtbAttendanceDailyRule">
select adr.F_Id id, F_GroupId groupId, F_SelfGroup selfGroup, F_ShiftId periodId, F_Day `day`, F_UserId userId, F_LateEnable lateEnable, F_EarlyEnable earlyEnable,
F_BreakEnable breakEnable, F_NextDayEnable nextDayEnable, F_ClockStartPoint clockStartPoint, F_InPoint inPoint, F_LatePoint latePoint, F_InLackPoint inLackPoint,
F_BreakStartPoint breakStartPoint, F_BreakEndPoint breakEndPoint, F_EarlyPoint earlyPoint, F_OutPoint outPoint, F_OutLackPoint outLackPoint,
F_AttendanceType attendanceType, F_ApplyStart applyStart, F_ApplyEnd applyEnd, F_ApplyViewEnable applyViewEnable/*, F_WithSalary withSalary*/
from ftb_attendance_daily_rule adr
left join ftb_attendance_group ag on F_GroupId = ag.F_Id
where DATE_FORMAT(F_Day, '%Y-%m-%d') = DATE_FORMAT(#{currentDate}, '%Y-%m-%d') and F_UserId = #{userId} and adr.F_DeleteMark = 0 and ag.F_DeleteMark = 0
and F_ApplyViewEnable in (1, 3, 9, 10)
order by F_InPoint desc limit 1
</select>
<!-- 查询ruleId的上/下一个(班/加班)出勤 -->
<select id="getPreviousOrNextRule" resultType="jnpf.entity.attendance.FtbAttendanceDailyRule">
select adr.F_Id id, F_GroupId groupId, F_SelfGroup selfGroup, F_ShiftId periodId, F_Day `day`, F_UserId userId, F_LateEnable lateEnable, F_EarlyEnable earlyEnable,
F_BreakEnable breakEnable, F_NextDayEnable nextDayEnable, F_ClockStartPoint clockStartPoint, F_InPoint inPoint, F_LatePoint latePoint, F_InLackPoint inLackPoint,
F_BreakStartPoint breakStartPoint, F_BreakEndPoint breakEndPoint, F_EarlyPoint earlyPoint, F_OutPoint outPoint, F_OutLackPoint outLackPoint,
F_AttendanceType attendanceType, F_ApplyStart applyStart, F_ApplyEnd applyEnd, /*F_WithSalary withSalary, */F_Sort sort
from ftb_attendance_daily_rule adr
left join ftb_attendance_group ag on F_GroupId = ag.F_Id
where adr.F_ApplyViewEnable in (1, 3, 9, 10) and adr.F_Id != #{ruleId} and adr.F_UserId = #{userId} and adr.F_DeleteMark = 0 and adr.F_AttendanceType in (1, 4) and ag.F_DeleteMark = 0
<![CDATA[
and DATE_FORMAT(adr.F_InPoint, '%Y-%m-%d %H:%i:%S') >= DATE_FORMAT(#{startTime}, '%Y-%m-%d %H:%i:%S')
and DATE_FORMAT(adr.F_InPoint, '%Y-%m-%d %H:%i:%S') <= DATE_FORMAT(#{endTime}, '%Y-%m-%d %H:%i:%S')
]]>
<if test="'previous' == queryType">
order by adr.F_Day desc, adr.F_InPoint desc
</if>
<if test="'next' == queryType">
order by adr.F_Day asc, adr.F_InPoint asc
</if>
limit 1
</select>
<!-- 获取指定日期的排班-->
<select id="getShiftByDay" resultType="jnpf.model.attendance.vo.ClassesDetailVo">
SELECT F_InPoint inPointDate ,F_BreakStartPoint breakStartPointDate ,F_BreakEndPoint breakEndPointDate ,F_OutPoint outPointDate
FROM ftb_attendance_daily_rule
WHERE DATE_FORMAT(F_Day,'%Y-%m-%d') = DATE_FORMAT(#{startDay},'%Y-%m-%d') and F_UserId = #{userId} and F_AttendanceType in (1, 4)
</select>
<!-- 2024-1-12-->
<!-- <select id="getShiftByDay" resultType="jnpf.model.attendance.vo.ClassesDetailVo">-->
<!-- SELECT DATE_FORMAT(F_InPoint,'%H:%i') inPoint ,DATE_FORMAT(F_BreakStartPoint,'%H:%i') breakStartPoint ,DATE_FORMAT(F_BreakEndPoint,'%H:%i') breakEndPoint ,DATE_FORMAT(F_OutPoint,'%H:%i') outPoint-->
<!-- FROM ftb_attendance_daily_rule-->
<!-- WHERE DATE_FORMAT(F_Day,'%Y-%m-%d') = DATE_FORMAT(#{startDay},'%Y-%m-%d') and F_UserId = #{userId} and F_AttendanceType in (1, 4)-->
<!-- </select>-->
<!-- 查询所有下班缺卡时间是今天的出勤规则 -->
<select id="getRuleListByDate" resultType="jnpf.entity.attendance.FtbAttendanceDailyRule">
select F_Id id, F_GroupId groupId, F_SelfGroup selfGroup, F_ShiftId periodId, F_Day `day`, F_UserId userId, F_LateEnable lateEnable, F_EarlyEnable earlyEnable,
F_BreakEnable breakEnable, F_NextDayEnable nextDayEnable, F_ClockStartPoint clockStartPoint, F_InPoint inPoint, F_LatePoint latePoint, F_InLackPoint inLackPoint,
F_BreakStartPoint breakStartPoint, F_BreakEndPoint breakEndPoint, F_EarlyPoint earlyPoint, F_OutPoint outPoint, F_OutLackPoint outLackPoint,
F_AttendanceType attendanceType, F_ApplyStart applyStart, F_ApplyEnd applyEnd, F_Sort sort
from ftb_attendance_daily_rule
where F_DeleteMark = 0 and F_AttendanceType = 1 and F_ApplyViewEnable in (1, 3, 9, 10)
<![CDATA[
and DATE_FORMAT(F_Day, '%Y-%m-%d') = DATE_FORMAT(#{yesterday}, '%Y-%m-%d')
and DATE_FORMAT(F_OutLackPoint, '%Y-%m-%d') = DATE_FORMAT(#{today}, '%Y-%m-%d')
]]>
<if test="null != userId and '' != userId">
and F_UserId = #{userId}
</if>
order by F_OutLackPoint asc
</select>
<!-- 查询指定日期最后一个班次是加班的出勤记录 -->
<select id="getOverTimeRuleListByDate" resultType="jnpf.entity.attendance.FtbAttendanceDailyRule">
select F_Id id, F_GroupId groupId, F_SelfGroup selfGroup, F_ShiftId periodId, F_Day `day`, F_UserId userId, F_LateEnable lateEnable, F_EarlyEnable earlyEnable,
F_BreakEnable breakEnable, F_NextDayEnable nextDayEnable, F_ClockStartPoint clockStartPoint, F_InPoint inPoint, F_LatePoint latePoint, F_InLackPoint inLackPoint,
F_BreakStartPoint breakStartPoint, F_BreakEndPoint breakEndPoint, F_EarlyPoint earlyPoint, F_OutPoint outPoint, F_OutLackPoint outLackPoint,
F_AttendanceType attendanceType, F_ApplyStart applyStart, F_ApplyEnd applyEnd, F_Sort sort
from ftb_attendance_daily_rule adr
inner join (
select F_UserId userId, max(F_InPoint) inPoint
from ftb_attendance_daily_rule
where F_DeleteMark = 0 and F_AttendanceType in (4) and F_ApplyViewEnable in (1, 3, 9, 10)
and DATE_FORMAT(F_InPoint, '%Y-%m-%d') = DATE_FORMAT(#{date}, '%Y-%m-%d')
and DATE_FORMAT(F_Day, '%Y-%m-%d') = DATE_FORMAT(#{date}, '%Y-%m-%d')
group by F_UserId
) t on adr.F_UserId = t.userId and adr.F_InPoint = t.inPoint
where adr.F_DeleteMark = 0 and adr.F_ApplyViewEnable in (1, 3, 9, 10)
and DATE_FORMAT(adr.F_Day, '%Y-%m-%d') = DATE_FORMAT(#{date}, '%Y-%m-%d')
<if test="null != userId and '' != userId">
and adr.F_UserId = #{userId}
</if>
</select>
<!-- 获取用户时间段内排班信息-->
<select id="getUserShift" resultType="java.lang.Integer">
SELECT count(0)
FROM ftb_attendance_daily_rule
WHERE F_UserId = #{userId} AND F_AttendanceType in (1, 4)
<![CDATA[
AND DATE_FORMAT(F_InPoint,'%Y-%m-%d %H:%i') < DATE_FORMAT(#{endTime},'%Y-%m-%d %H:%i')
AND DATE_FORMAT(F_OutPoint,'%Y-%m-%d %H:%i') > DATE_FORMAT(#{startTime},'%Y-%m-%d %H:%i')
]]>
</select>
<!-- 查询所有工作时间是queryDate的出勤规则 -->
<select id="getListWorkTimeInToday" resultType="jnpf.entity.attendance.FtbAttendanceDailyRule">
select F_Id id, F_GroupId groupId, F_SelfGroup selfGroup, F_ShiftId periodId, F_Day `day`, F_UserId userId, F_LateEnable lateEnable, F_EarlyEnable earlyEnable,
F_BreakEnable breakEnable, F_NextDayEnable nextDayEnable, F_ClockStartPoint clockStartPoint, F_InPoint inPoint, F_LatePoint latePoint, F_InLackPoint inLackPoint,
F_BreakStartPoint breakStartPoint, F_BreakEndPoint breakEndPoint, F_EarlyPoint earlyPoint, F_OutPoint outPoint, F_OutLackPoint outLackPoint,
F_AttendanceType attendanceType, F_ApplyStart applyStart, F_ApplyEnd applyEnd, F_Sort sort
from ftb_attendance_daily_rule
where F_DeleteMark = 0 and F_AttendanceType = 1 and F_ApplyViewEnable in (1, 3, 9, 10)
<![CDATA[
and (
DATE_FORMAT(F_InPoint, '%Y-%m-%d') = DATE_FORMAT(#{queryDate}, '%Y-%m-%d') or DATE_FORMAT(F_OutPoint, '%Y-%m-%d') = DATE_FORMAT(#{queryDate}, '%Y-%m-%d')
)
]]>
order by F_InPoint asc
</select>
<!-- 查询上班/下班时间在时间范围内的出勤规则 -->
<select id="getListByWorkTime" resultType="jnpf.entity.attendance.FtbAttendanceDailyRule">
select F_Id id, F_GroupId groupId, F_SelfGroup selfGroup, F_ShiftId periodId, F_Day `day`, F_UserId userId, F_LateEnable lateEnable, F_EarlyEnable earlyEnable,
F_BreakEnable breakEnable, F_NextDayEnable nextDayEnable, F_ClockStartPoint clockStartPoint, F_InPoint inPoint, F_LatePoint latePoint, F_InLackPoint inLackPoint,
F_BreakStartPoint breakStartPoint, F_BreakEndPoint breakEndPoint, F_EarlyPoint earlyPoint, F_OutPoint outPoint, F_OutLackPoint outLackPoint,
F_AttendanceType attendanceType, F_ApplyStart applyStart, F_ApplyEnd applyEnd, F_Sort sort
from ftb_attendance_daily_rule
where F_DeleteMark = 0 and F_AttendanceType = 1 and F_ApplyViewEnable in (1, 3, 9, 10)
<![CDATA[
and (
(DATE_FORMAT(F_InPoint, '%Y-%m-%d %H:%i:%S') >= DATE_FORMAT(#{beginDate}, '%Y-%m-%d %H:%i:%S') and DATE_FORMAT(F_InPoint, '%Y-%m-%d %H:%i:%S') < DATE_FORMAT(#{endDate}, '%Y-%m-%d %H:%i:%S'))
or
(DATE_FORMAT(F_OutPoint, '%Y-%m-%d %H:%i:%S') >= DATE_FORMAT(#{beginDate}, '%Y-%m-%d %H:%i:%S') and DATE_FORMAT(F_OutPoint, '%Y-%m-%d %H:%i:%S') < DATE_FORMAT(#{endDate}, '%Y-%m-%d %H:%i:%S'))
)
]]>
order by F_InPoint asc
</select>
<!-- 查询一个月的打卡记录(缺勤次数统计) -->
<select id="selectMonthRecord" resultType="jnpf.model.attendance.vo.MonthRecordVo">
select dr.F_GroupId groupId, date_format(dr.F_Day, '%Y-%m-%d') `day`, acir.F_UserId userId, acir.F_RuleId ruleId, sum(acir.F_Absence = 1) absenceCount,
sn.F_ShortName rule, concat_ws('至', date_format(dr.F_InPoint, '%H:%i'), date_format(dr.F_OutPoint, '%H:%i')) ruleTime
from ftb_attendance_clock_in_result acir
left join ftb_attendance_daily_rule dr on dr.F_Id = acir.F_RuleId
left join ftb_attendance_shift_name sn on dr.F_ShiftId = sn.F_Id
join (
select adr.F_Id
from ftb_attendance_daily_rule adr
where adr.F_DeleteMark = 0 and F_AttendanceType in (1, 4)
and adr.F_Day in (
select F_Day
from (
select F_Day
from ftb_attendance_daily_rule
where F_AttendanceType in (1, 4)
and F_DeleteMark = 0 and date_format(F_Day, '%Y-%m-%d') <![CDATA[<]]> date_format(now(), '%Y-%m-%d')
group by F_Day
order by F_Day desc
limit 30
) as recent_days
)
) as filtered_rules on acir.F_RuleId = filtered_rules.F_Id
where acir.F_DeleteMark = 0
group by dr.F_GroupId, dr.F_Day, acir.F_UserId, acir.F_RuleId, acir.F_Absence
order by dr.F_GroupId, acir.F_UserId, dr.F_Day desc
</select>
<!-- 查询存在的出勤规则 -->
<select id="getExistRuleId" resultType="java.lang.String">
select F_Id from ftb_attendance_daily_rule where F_DeleteMark = 0 and F_Id in
<foreach collection="list" index="index" item="item" open="(" separator="," close=")">
#{item}
</foreach>
</select>
<!-- 获取排班用户数-->
<select id="getGroupUserNum" resultType="java.lang.Integer">
SELECT COUNT(DISTINCT(F_UserId))
FROM ftb_attendance_daily_rule
WHERE F_Day = DATE_FORMAT(NOW(), '%Y-%m-%d') AND F_DeleteMark = 0 AND F_AttendanceType IN (1,2)
AND F_GroupId IN
<foreach collection="groupIds" index="index" item="item" open="(" separator="," close=")">
#{item}
</foreach>
</select>
<select id="getYesterdayRule" resultType="jnpf.model.attendance.vo.attendance.YesterdayRuleVo">
select *,count(1) clockCount from
(SELECT
r.F_Id id,
r.F_Day `day`,
r.F_InPoint inPoint,
r.F_OutPoint outPoint,
r.F_AttendanceType attendanceType
FROM
ftb_attendance_daily_rule r
left JOIN ftb_attendance_clock_in_result c ON r.F_Id = c.F_RuleId
WHERE
r.F_ApplyViewEnable IN ( 1, 3, 9, 10 )
AND r.F_AttendanceType IN ( 1, 4 )
AND r.F_UserId = #{userId}
AND r.F_Day BETWEEN #{startDate} and #{endDate}) info
GROUP BY id having clockCount <![CDATA[<]]> 2
order by inPoint asc
</select>
<select id="getDayRule" resultType="java.lang.String">
SELECT F_Id
FROM ftb_attendance_daily_rule
WHERE F_Day = DATE_FORMAT(NOW(), '%Y-%m-%d') AND F_DeleteMark = 0 AND F_AttendanceType = 1
AND F_GroupId IN
<foreach collection="groupIds" index="index" item="item" open="(" separator="," close=")">
#{item}
</foreach>
AND F_UserId IN
<foreach collection="groupUserIds" index="index" item="item1" open="(" separator="," close=")">
#{item1}
</foreach>
</select>
<!-- 批量查询出勤规则 -->
<select id="getDailyRuleListBatch" resultType="jnpf.entity.attendance.FtbAttendanceDailyRule">
SELECT
adr.F_Id AS id,
adr.F_GroupId AS groupId,
adr.F_SelfGroup AS selfGroup,
adr.F_ShiftId AS periodId,
adr.F_PeriodInfo AS periodInfo,
adr.F_Day AS `day`,
adr.F_UserId AS userId,
adr.F_LateEnable AS lateEnable,
adr.F_EarlyEnable AS earlyEnable,
adr.F_BreakEnable AS breakEnable,
adr.F_NextDayEnable AS nextDayEnable,
adr.F_ClockStartPoint AS clockStartPoint,
adr.F_InPoint AS inPoint,
adr.F_LatePoint AS latePoint,
adr.F_InLackPoint AS inLackPoint,
adr.F_BreakStartPoint AS breakStartPoint,
adr.F_BreakEndPoint AS breakEndPoint,
adr.F_EarlyPoint AS earlyPoint,
adr.F_OutPoint AS outPoint,
adr.F_OutLackPoint AS outLackPoint,
adr.F_InStepOutType AS inStepOutType,
adr.F_OutStepOutType AS outStepOutType,
adr.F_AttendanceType AS attendanceType,
adr.F_ApplyStart AS applyStart,
adr.F_ApplyEnd AS applyEnd,
adr.F_ApplyViewEnable AS applyViewEnable,
adr.F_InUnbounded AS inUnbounded,
adr.F_OutUnbounded AS outUnbounded,
adr.F_IsLateOutLateIn AS isLateOutLateIn,
ROW_NUMBER() OVER (
PARTITION BY p.userId, p.targetDate ORDER BY adr.F_InPoint DESC
) AS rn,
p.targetDate,
p.queryDate
FROM ftb_attendance_daily_rule adr
LEFT JOIN ftb_attendance_group ag ON adr.F_GroupId = ag.F_Id
JOIN (
VALUES
<foreach collection="list" item="it" separator=",">
ROW(#{it.userId}, #{it.dayStr}, #{it.dayStr})
</foreach>
) AS p(userId, targetDate, queryDate) ON adr.F_UserId = p.userId AND adr.F_Day = p.queryDate
WHERE adr.F_DeleteMark = 0
AND ag.F_DeleteMark = 0
AND adr.F_ApplyViewEnable IN (1,3,9,10)
ORDER BY p.userId, p.targetDate, p.queryDate, adr.F_InPoint DESC
</select>
<select id="getUserPublicHoliday" resultType="jnpf.model.attendance.vo.KeyValueVo">
SELECT
F_UserId as userId ,
IFNULL(SUM(F_PeriodWorkDay),0) as value
FROM ftb_attendance_daily_rule
WHERE F_AttendanceType = 2 AND DATE_FORMAT(F_Day,'%Y-%m') = #{yearMonth} AND F_UserId IN
<foreach collection="userIds" item="item" open="(" separator="," close=")">
#{item}
</foreach>
AND F_ApplyViewEnable IN (1,3,9,10) AND F_DeleteMark = 0
GROUP BY F_UserId
</select>
<!-- 查询每个出勤规则的下一个出勤规则 -->
<select id="getNextRulePartInfo" resultType="jnpf.model.attendance.vo.NextRuleVo">
SELECT * FROM (
SELECT
F_Id AS ruleId,
LEAD(F_Id) OVER (PARTITION BY F_Day, F_UserId ORDER BY F_InPoint) AS nextRuleId,
LEAD(F_AttendanceType) OVER (PARTITION BY F_Day, F_UserId ORDER BY F_InPoint) AS nextAttendanceType
FROM ftb_attendance_daily_rule
WHERE F_Day = #{dayStr} AND F_DeleteMark = 0
) t
WHERE t.ruleId IN
<foreach collection="list" index="index" item="item" open="(" separator="," close=")">
#{item}
</foreach>
</select>
<select id="getDayRuleByMonth" resultType="jnpf.model.attendance.vo.CreateDayStatistics">
SELECT
F_GroupId AS groupId,
F_UserId AS userId,
F_Day AS day
FROM ftb_attendance_daily_rule
WHERE F_Day BETWEEN #{startDate} AND #{endDate}
AND F_DeleteMark = 0
GROUP BY F_GroupId, F_UserId, F_Day;
</select>
</mapper>

View File

@@ -0,0 +1,32 @@
<?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="jnpf.attendance.mapper.AttendanceFestivalRulesMapper" >
<update id="updateState">
UPDATE ftb_attendance_festival_rules
SET F_State = #{state},
F_LastModifyTime = now(),
F_LastModifyUserId = #{userId}
WHERE F_Id = #{id}
</update>
<select id="getPageList" resultType="jnpf.model.attendance.vo.attendance.AttendanceFestivalRulesVo">
SELECT
F_Id AS id,
F_Name AS `name`,
F_FestivalDate AS festivalDate,
F_CompensateInDate AS compensateInDate,
F_ScopeOfAdaptation AS scopeOfAdaptation,
F_StartDate as startDate,
F_EndDate as endDate,
F_State AS state
FROM ftb_attendance_festival_rules
WHERE F_DeleteMark = 0
<if test="queryDto.iText != null and queryDto.iText != ''">
AND F_Name LIKE concat('%',#{queryDto.iText},'%')
</if>
<if test="queryDto.year != null and queryDto.year != ''">
AND F_Year = #{queryDto.year}
</if>
order by F_LastModifyTime desc,F_StartDate asc
</select>
</mapper>

View File

@@ -0,0 +1,22 @@
<?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="jnpf.attendance.mapper.AttendanceFieldPersonnelMapper" >
<insert id="insertList">
insert into ftb_attendance_field_personnel (F_Id, F_GroupId ,F_UserId )
values
<foreach collection="fieldPersonnelList" item="item" separator=",">
(#{item.id},#{item.groupId},#{item.userId})
</foreach>
</insert>
<!-- 根据考勤组Id删除绑定的外勤人员-->
<delete id="deleteByGroupId">
DELETE FROM ftb_attendance_field_personnel
WHERE F_GroupId = #{groupId}
</delete>
<!-- 根据考勤组Id获取外勤人员Id列表-->
<select id="getUserIdsByGroupId" resultType="java.lang.String">
SELECT F_UserId
FROM ftb_attendance_field_personnel
where F_GroupId = #{groupId}
</select>
</mapper>

View File

@@ -0,0 +1,48 @@
<?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="jnpf.attendance.mapper.AttendanceFieldpersonnelApproveMapper" >
<sql id="Base_Column_List" >
F_Id, F_Address, F_Remark, f_flowtaskid, f_flowid, F_UniqueId, F_TenantId, F_lng,
F_lat, F_deviceType, F_deviceId, F_deviceName
</sql>
<sql id="Blob_Column_List" >
F_Picture
</sql>
<!-- <delete id="deleteByPrimaryKey" parameterType="java.lang.String" >-->
<!-- delete from ftb_attendance_fieldpersonnel_approve-->
<!-- where F_Id = #{fId,jdbcType=VARCHAR}-->
<!-- </delete>-->
<!-- <insert id="insert" parameterType="com.shs.cts.util.domain.po.experience.AttendanceFieldpersonnelApprove" >-->
<!-- insert into ftb_attendance_fieldpersonnel_approve (F_Id, F_Address, F_Remark, -->
<!-- f_flowtaskid, f_flowid, F_UniqueId, -->
<!-- F_TenantId, F_lng, F_lat, -->
<!-- F_deviceType, F_deviceId, F_deviceName, -->
<!-- F_Picture)-->
<!-- values (#{fId,jdbcType=VARCHAR}, #{fAddress,jdbcType=VARCHAR}, #{fRemark,jdbcType=VARCHAR}, -->
<!-- #{fFlowtaskid,jdbcType=VARCHAR}, #{fFlowid,jdbcType=VARCHAR}, #{fUniqueid,jdbcType=VARCHAR}, -->
<!-- #{fTenantid,jdbcType=VARCHAR}, #{fLng,jdbcType=VARCHAR}, #{fLat,jdbcType=VARCHAR}, -->
<!-- #{fDevicetype,jdbcType=TINYINT}, #{fDeviceid,jdbcType=VARCHAR}, #{fDevicename,jdbcType=VARCHAR}, -->
<!-- #{fPicture,jdbcType=LONGVARCHAR})-->
<!-- </insert>-->
<!-- -->
<!-- <update id="updateByPrimaryKeyWithBLOBs" parameterType="com.shs.cts.util.domain.po.experience.AttendanceFieldpersonnelApprove" >-->
<!-- update ftb_attendance_fieldpersonnel_approve-->
<!-- set F_Address = #{fAddress,jdbcType=VARCHAR},-->
<!-- F_Remark = #{fRemark,jdbcType=VARCHAR},-->
<!-- f_flowtaskid = #{fFlowtaskid,jdbcType=VARCHAR},-->
<!-- f_flowid = #{fFlowid,jdbcType=VARCHAR},-->
<!-- F_UniqueId = #{fUniqueid,jdbcType=VARCHAR},-->
<!-- F_TenantId = #{fTenantid,jdbcType=VARCHAR},-->
<!-- F_lng = #{fLng,jdbcType=VARCHAR},-->
<!-- F_lat = #{fLat,jdbcType=VARCHAR},-->
<!-- F_deviceType = #{fDevicetype,jdbcType=TINYINT},-->
<!-- F_deviceId = #{fDeviceid,jdbcType=VARCHAR},-->
<!-- F_deviceName = #{fDevicename,jdbcType=VARCHAR},-->
<!-- F_Picture = #{fPicture,jdbcType=LONGVARCHAR}-->
<!-- where F_Id = #{fId,jdbcType=VARCHAR}-->
<!-- </update>-->
</mapper>

View File

@@ -0,0 +1,20 @@
<?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="jnpf.attendance.mapper.AttendanceFixedClassMapper" >
<!-- 校验该班次有无在固定排班使用-->
<select id="getUseBYShiftNameId" resultType="java.lang.Integer">
SELECT COUNT(0) FROM ftb_attendance_fixed_class
WHERE F_ShiftNameId = #{shiftNameId}
</select>
<!-- 校验该班次有无在排班使用-->
<select id="getRuleUseBYShiftNameId" resultType="java.lang.Integer">
SELECT COUNT(0) FROM ftb_attendance_daily_rule
WHERE F_ShiftId = #{shiftNameId}
</select>
<!-- 校验该班次有无在快速排班使用-->
<select id="getQuickUseBYShiftNameId" resultType="java.lang.Integer">
SELECT COUNT(n.F_Id) FROM ftb_attendance_quick_template_item_new n
LEFT JOIN ftb_attendance_quick_template t ON n.F_TemplateId = t.F_Id
WHERE n.F_ShiftNameId = #{shiftNameId} AND t.F_DeleteMark = 0
</select>
</mapper>

View File

@@ -0,0 +1,235 @@
<?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="jnpf.attendance.mapper.AttendanceGroupMapper" >
<!-- 查询用户管理的考勤组列表(考勤组名称模糊搜索)-->
<select id="queryManagerGroupList" resultType="jnpf.entity.AttendanceGroup">
SELECT
fag.F_Id id,
fag.F_GroupName groupName,
fag.F_ParentId parentId,
fag.F_LevelCode levelCode
FROM
ftb_attendance_group fag
INNER JOIN ftb_attendance_manager_permission famp ON famp.F_GroupId = fag.F_Id
WHERE
fag.F_DeleteMark = 0
and
famp.F_Type = 1
and
famp.F_UserId = #{userId}
<if test="keyword != null and keyword != ''">
and fag.F_GroupName like concat("%",#{keyword},"%")
</if>
group BY fag.F_Id
ORDER BY fag.F_CreatorTime desc
</select>
<!-- 查询用户管理的考勤组列表-->
<select id="queryGroupList" resultType="jnpf.model.attendance.vo.AttendanceGroupVo">
SELECT
fag.F_Id id,
fag.F_GroupName groupName,
fag.F_LevelCode levelCode,
fag.F_ParentId parentId,
famp.F_UserId,
GROUP_CONCAT(fpd.F_Name) allPermissions
FROM
ftb_attendance_group fag
LEFT JOIN ftb_attendance_manager_permission famp ON famp.F_GroupId = fag.F_Id
LEFT JOIN ftb_permission_dict fpd on fpd.F_Id = famp.F_PermissionId
WHERE famp.F_UserId = #{userId}
GROUP BY fag.F_Id
</select>
<!-- 查询考勤组名称 -->
<select id="getGroupName" resultType="java.lang.String">
select F_GroupName from ftb_attendance_group where F_Id = #{groupId}
</select>
<!-- 获取考勤组详情-->
<select id="getGroupDetail" resultType="jnpf.entity.AttendanceGroup">
SELECT F_Id id, F_GroupName groupName, F_ParentId parentId, F_OrgId orgId, F_LevelCode levelCode,F_LeaveSetting leaveSetting ,F_AttendanceClassSetting attendanceClassSetting
FROM ftb_attendance_group
where F_Id = #{groupId}
</select>
<!-- 批量获取考勤组信息-->
<select id="getGroupDetailList" resultType="jnpf.entity.AttendanceGroup">
SELECT F_Id id, F_GroupName groupName, F_ParentId parentId, F_LevelCode levelCode,F_LeaveSetting leaveSetting ,F_AttendanceClassSetting attendanceClassSetting
FROM ftb_attendance_group
where F_Id in
<foreach collection="list" index="index" item="item" open="(" separator="," close=")">
#{item}
</foreach>
</select>
<!-- 查询被删除的考勤组 -->
<select id="selectDelIds" resultType="java.lang.String">
select F_Id from ftb_attendance_group where F_DeleteMark = 1 and F_Id in
<foreach collection="list" index="index" item="item" open="(" separator="," close=")">
#{item}
</foreach>
</select>
<!-- 获取所有考勤组-->
<select id="getAllGroupList" resultType="jnpf.model.attendance.vo.AttendanceGroupVo">
SELECT
fag.F_Id id,
fag.F_GroupName groupName,
fag.F_DetailName detailName,
fag.F_ParentId parentId,
fag.F_LevelCode levelCode,
fag.F_OrgId orgId,
fag.F_LockedDate lockedDate,
fag.F_DeleteMark deleteMark,
fag.F_LastModifyTime endDay
FROM
ftb_attendance_group fag
</select>
<!-- 通过组织Id找到组织下的考勤组-->
<select id="groupListByOrgId" resultType="jnpf.model.attendance.vo.AttendanceGroupVo">
SELECT
F_Id id,
F_GroupName groupName,
F_DetailName detailName,
F_ParentId parentId,
F_LevelCode levelCode,
F_OrgId orgId
FROM
ftb_attendance_group
where F_DeleteMark = 0 and F_OrgId = #{orgId}
</select>
<!-- 通过考勤组Id获取绑定的组织-->
<select id="getGroupBindingOrg" resultType="jnpf.model.attendance.vo.AttendanceGroupVo">
SELECT
F_Id id,
F_GroupName groupName,
F_DetailName detailName,
F_ParentId parentId,
F_LevelCode levelCode,
F_OrgId orgId,
F_LockedDate lockedDate
FROM
ftb_attendance_group
where F_DeleteMark = 0 and F_Id = #{groupId}
</select>
<!-- 绑定考勤组的组织-->
<update id="updateGroupOrg">
update ftb_attendance_group
set F_OrgId = #{attendanceGroupOrgDto.orgId}
where F_Id = #{attendanceGroupOrgDto.groupId}
</update>
<!-- 查询用户所在考勤组-->
<select id="getAttendanceUserGroup" resultType="jnpf.attendance.dto.AttendanceUserGroupVo">
SELECT
u.F_UserId userId ,
g.F_Id groupId,
g.F_GroupName groupName
FROM ftb_attendance_group_user u
LEFT JOIN ftb_attendance_group g ON g.F_Id = u.F_GroupId
WHERE F_Type = 1 and g.F_DeleteMark = 0 and u.F_DeleteMark = 0
AND u.F_UserId IN
<foreach collection="userIds" index="index" item="item" open="(" separator="," close=")">
#{item}
</foreach>
</select>
<select id="getGroupLockDate" resultType="java.util.Date">
select F_LockedDate from ftb_attendance_group where F_Id = #{groupId}
</select>
<!-- 查询父级考勤组id -->
<select id="getParentGroupId" resultType="java.lang.String">
select F_ParentId from ftb_attendance_group where F_Id = #{groupId}
</select>
<!-- 查询本级及子级考勤组 -->
<select id="getSelfAndChildrenGroup" resultType="jnpf.model.attendance.vo.GroupNodeVo">
select F_Id id, F_GroupName groupName, F_ParentId pid, F_AttendancePointsSetting attendancePointsSetting, F_LevelCode levelCode,
F_AttendanceClassSetting attendanceClassSetting, F_BaseSetting baseSetting
from ftb_attendance_group
where find_in_set(#{groupId}, replace(F_LevelCode, '#', ',')) and F_DeleteMark = 0
</select>
<!-- 批量查询用户所在考勤组-->
<select id="getAttendanceUserListGroupVO" resultType="jnpf.attendance.dto.AttendanceUserListGroupVO">
SELECT g.F_Id groupId, u.F_UserId userId ,g.F_GroupName groupName
FROM ftb_attendance_group_user u
LEFT JOIN ftb_attendance_group g ON g.F_Id = u.F_GroupId
WHERE u.F_Type = 1
AND u.F_DeleteMark = 0 AND g.F_DeleteMark = 0
AND u.F_UserId IN
<foreach collection="userIds" index="index" item="item" open="(" separator="," close=")">
#{item}
</foreach>
</select>
<!-- 查询所有考勤组(层级排序) -->
<select id="getAllGroupByLevel" resultType="jnpf.model.attendance.vo.attendance.GroupMiniVo">
select t.groupId, t.groupName from (
select F_Id groupId, F_GroupName groupName, length(F_LevelCode) - length(replace(F_LevelCode, '#', '')) levelNum
from ftb_attendance_group
where F_DeleteMark = 0
<if test="null != list and list.size > 0">
and F_Id in
<foreach collection="list" index="index" item="item" open="(" separator="," close=")">
#{item}
</foreach>
</if>
) t order by t.levelNum asc
</select>
<!-- 查询用户是否拥有指定考勤组的指定权限-->
<select id="appointPermissionByGroupId" resultType="java.lang.Integer">
SELECT COUNT(0)
FROM ftb_attendance_manager_permission
WHERE F_GroupId = #{groupId} AND F_UserId = #{userId} AND F_DeleteMark = 0
AND F_PermissionId = (SELECT F_Id FROM ftb_permission_dict WHERE F_PermissionCode = #{permissionCode} AND F_DeleteMark = 0)
AND F_Type = #{type}
</select>
<select id="getGroupListByOrgId" resultType="jnpf.model.attendance.vo.AttendanceGroupVo">
SELECT
fag.F_Id id,
fag.F_GroupName groupName,
fag.F_DetailName detailName,
fag.F_ParentId parentId,
fag.F_LevelCode levelCode,
fag.F_OrgId orgId,
fag.F_LockedDate lockedDate,
fag.F_DeleteMark deleteMark,
fag.F_LastModifyTime endDay
FROM
ftb_attendance_group fag
where 1 = 1
<if test="null != groupQueryDto and null != groupQueryDto.name and '' != groupQueryDto.name">
and fag.F_GroupName like concat("%",#{groupQueryDto.name},"%")
</if>
<if test="null != groupQueryDto and null != groupQueryDto.type and 0 == groupQueryDto.type">
and fag.F_DeleteMark = 0
</if>
<if test="orgIds!=null and orgIds.size()>0">
and fag.F_OrgId in
<foreach collection="orgIds" item="item" open="(" separator="," close=")">
#{item}
</foreach>
</if>
GROUP BY
fag.F_Id
</select>
<select id="getGroupListByIds" resultType="jnpf.model.attendance.vo.AttendanceGroupVo">
SELECT
fag.F_Id id,
fag.F_GroupName groupName,
fag.F_DetailName detailName,
fag.F_ParentId parentId,
fag.F_LevelCode levelCode,
fag.F_OrgId orgId,
fag.F_LockedDate lockedDate,
fag.F_DeleteMark deleteMark,
fag.F_LastModifyTime endDay
FROM
ftb_attendance_group fag
where
<if test="groupIds !=null and groupIds.size()>0">
fag.F_Id in
<foreach collection="groupIds" item="item" open="(" separator="," close=")">
#{item}
</foreach>
</if>
GROUP BY
fag.F_Id
</select>
<!-- 查询组织id -->
<select id="getOrgId" resultType="java.lang.String">
select F_OrgId from ftb_attendance_group where F_Id = #{groupId}
</select>
</mapper>

View File

@@ -0,0 +1,125 @@
<?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="jnpf.attendance.mapper.AttendanceGroupUserMapper">
<!-- 批量修改考勤组用户-->
<update id="batchUpdateGroupUser">
update ftb_attendance_group_user
set F_Type = #{type}
where F_Id in
<foreach collection="groupUserIds" item="id" separator="," open="(" close=")">
#{id}
</foreach>
</update>
<!-- 通用查询映射结果 -->
<!-- <resultMap id="BaseResultMap" type="com.chehejia.domain.AttendanceGroupUser">-->
<!-- <id column="F_Id" property="fId" />-->
<!-- <result column="F_UserId" property="fUserid" />-->
<!-- <result column="F_GroupId" property="fGroupid" />-->
<!-- <result column="F_Type" property="fType" />-->
<!-- <result column="F_StartTime" property="fStarttime" />-->
<!-- <result column="F_EndTime" property="fEndtime" />-->
<!-- <result column="F_CreatorUserId" property="fCreatoruserid" />-->
<!-- <result column="F_CreatorTime" property="fCreatortime" />-->
<!-- <result column="F_TenantId" property="fTenantid" />-->
<!-- </resultMap>-->
<!-- 获取考勤组用户生存周期记录-->
<select id="viewGroupUserList" resultType="jnpf.model.attendance.vo.AttendanceGroupUserVo">
SELECT
fagu.F_UserId userId,
fagu.F_TimeJson timeJson
FROM
ftb_attendance_group_user fagu
WHERE fagu.F_GroupId = #{groupId} and fagu.F_DeleteMark = 0
</select>
<!-- 查询系统用户列表-->
<select id="querySysUsers" resultType="jnpf.model.attendance.vo.AttendanceGroupUserVo">
SELECT
bu.F_Id userId,
bu.F_RealName realName,
fag.F_GroupName groupName,
bu.F_HeadIcon headIcon,
bu.F_OrganizeId orgId
FROM
base_user bu
LEFT JOIN ftb_attendance_group_user fagu ON fagu.F_UserId = bu.F_Id
LEFT JOIN ftb_attendance_group fag on fag.F_Id = fagu.F_GroupId
WHERE
bu.F_OrganizeId = #{orgId} and fagu.F_DeleteMark = 0
<if test="name != null and name != ''">
and bu.F_RealName concat('%',#{name},'%')
</if>
</select>
<!-- 获取用户所有产生的考勤组集合-->
<select id="getUserGroupList" resultType="jnpf.model.attendance.vo.AttendanceGroupUserVo">
SELECT F_GroupId groupId,F_TimeJson timeJson ,F_Type type
FROM ftb_attendance_group_user
WHERE F_UserId = #{userId} and F_Type != 3 and F_DeleteMark = 0
</select>
<!-- 查询考勤组用户信息列表 -->
<select id="getGroupUserList" resultType="jnpf.model.attendance.vo.MiniGroupVo">
select agu.F_GroupId groupId, ag.F_GroupName groupName, agu.F_Type `type`,
case aas.F_Permission when 0 then 0 else 1 end needApproval
from ftb_attendance_group_user agu
left join ftb_attendance_group ag on agu.F_GroupId = ag.F_Id
left join ftb_attendance_approval_setting aas on aas.F_GroupId = ag.F_Id and aas.F_type = 2
where agu.F_UserId = #{userId} and ag.F_Id in
<foreach collection="list" index="index" item="item" open="(" separator="," close=")">
#{item}
</foreach>
<if test="delStatus != null and delStatus == 0">
and agu.F_DeleteMark = 0
</if>
</select>
<!-- 查询自己的考勤组id -->
<select id="getSelfGroup" resultType="java.lang.String">
select F_GroupId from ftb_attendance_group_user where F_UserId = #{userId} and F_Type = 1 and F_DeleteMark = 0
</select>
<select id="getGroupInUserIds" resultType="jnpf.model.attendance.vo.AttendanceGroupUserVo">
SELECT
fag.F_Id groupId,
fag.F_GroupName groupName,
fagu.F_UserId userId,
fagu.F_Type type
FROM
ftb_attendance_group fag
INNER JOIN ftb_attendance_group_user fagu ON fagu.F_GroupId = fag.F_Id
where fag.F_DeleteMark = 0 and fagu.F_DeleteMark = 0
and fagu.F_UserId in
<foreach close=")" collection="userIds" item="id" open="(" separator=",">
#{id}
</foreach>
<if test="type != null">
and fagu.F_Type = #{type}
</if>
</select>
<!-- 查询考勤组成员(不含借调) -->
<select id="getGroupUserListByIds" resultType="java.lang.String">
select F_UserId from ftb_attendance_group_user
where F_Type = 1 and F_DeleteMark = 0 and F_GroupId in
<foreach collection="list" index="index" item="item" open="(" separator="," close=")">
#{item}
</foreach>
</select>
<!-- 查询考勤组成员 -->
<select id="getUsersByGroupIds" resultType="jnpf.model.attendance.vo.AttendanceGroupUserVo">
SELECT gu.F_UserId userId, gu.F_TimeJson timeJson, g.F_GroupName groupName
FROM ftb_attendance_group_user gu
LEFT JOIN ftb_attendance_group g on g.F_Id = gu.F_GroupId
WHERE gu.F_DeleteMark = 0 and gu.F_GroupId IN
<foreach collection="groupIds" index="index" item="item" open="(" separator="," close=")">
#{item}
</foreach>
</select>
<!-- 获取考勤组成员id-->
<select id="getGroupUserIds" resultType="java.lang.String">
SELECT DISTINCT(F_UserId)
FROM ftb_attendance_group_user
WHERE F_GroupId IN
<foreach collection="groupIds" index="index" item="item" open="(" separator="," close=")">
#{item}
</foreach>
AND F_DeleteMark = 0 AND F_Type = 1 AND F_UserGroupType = 1 AND F_RemoveTime IS NULL
</select>
</mapper>

View File

@@ -0,0 +1,481 @@
<?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="jnpf.attendance.mapper.AttendanceLeaveApproveMapper" >
<sql id="Base_Column_List" >
F_Id, F_User_Id, F_Type, F_StartTime, F_EndTime, F_ApplicationDuration, F_ReasonForLeave,
F_Undeducted_Time, F_Balance_Status, F_Paid, F_No_Paid, f_flowtaskid, f_flowid, F_UniqueId,
F_TenantId
</sql>
<sql id="Blob_Column_List" >
F_Picture
</sql>
<select id="getLeaveDetailById" resultType="jnpf.model.attendance.vo.AttendanceLeaveApproveVo">
select F_Id id, F_User_Id userId ,F_Type_Id typeId, F_Type type,F_Unit unit, F_StartTime startTime, F_EndTime endTime, F_Balance_Status balanceStatus, F_Paid paid, F_No_Paid noPaid ,F_Status status,F_StartTimeType startTimeType,F_EndTimeType endTimeType,F_ShiftInvolved shiftInvolved
from ftb_attendance_leave_approve
where F_Id = #{id}
</select>
<!-- 修改请假审批信息-->
<update id="updateLeaveApprove">
update ftb_attendance_leave_approve
set F_Undeducted_Time = #{dayNum},
F_ApplicationDuration = #{applicationDuration},
F_Type = #{leaveName},
F_Status = 1,
F_ApplicationDurationSecond = #{applicationDurationSecond},
F_UndeductedTimeSecond = #{undeductedTimeSecond},
F_ApproveUserId = #{userId},
F_ApproveUserName = #{userName},
F_ApproveTime = now(),
F_ApplicationDurationDay = #{applicationDurationDay},
F_UndeductedTimeDay = #{notDeductedDay},
F_StartTimeHit = #{start},
F_EndTimeHit = #{end},
F_ShiftInvolved = #{leaveDurationJson},
F_BalanceJsonNew = #{leaveConsumptionDetailJson}
where F_Id = #{id}
</update>
<!-- 获取用户该类型的请假有多少未抵扣余额-->
<select id="getUserUnDeductedTime" resultType="java.math.BigDecimal">
SELECT IFNULL(SUM(F_Undeducted_Time),0)
FROM ftb_attendance_leave_approve
WHERE F_Type_Id = #{leaveTypeId} AND F_User_Id = #{userId} and F_Status = 1
</select>
<!-- 获取用户时间段内审核通过的请假审批列表-->
<select id="getUserLeaveByTimeSlot" resultType="jnpf.model.attendance.vo.AttendanceLeaveApproveVo">
SELECT a.F_Id id, a.F_User_Id userId, a.F_Type type,a.F_Unit unit, a.F_StartTime startTime, a.F_EndTime endTime,
a.F_Balance_Status balanceStatus, a.F_Paid paid, a.F_No_Paid noPaid , a.F_Status `status`,
a.F_StartTimeType startTimeType,a.F_EndTimeType endTimeType
FROM ftb_attendance_leave_approve a
where a.F_User_Id = #{userId} AND a.F_Status in (0,1)
<![CDATA[
AND DATE_FORMAT(a.F_StartTime,'%Y-%m-%d') <= DATE_FORMAT(#{endTime},'%Y-%m-%d')
AND DATE_FORMAT(a.F_EndTime,'%Y-%m-%d') >= DATE_FORMAT(#{startTime},'%Y-%m-%d')
]]>
</select>
<!-- <select id="getUserLeaveByTimeSlot" resultType="jnpf.model.attendance.vo.AttendanceLeaveApproveVo">-->
<!-- SELECT a.F_Id id, a.F_User_Id userId, a.F_Type type,a.F_Unit unit, a.F_StartTime startTime, a.F_EndTime endTime, a.F_Balance_Status balanceStatus, a.F_Paid paid, a.F_No_Paid noPaid , a.F_Status `status`-->
<!-- FROM ftb_attendance_daily_rule r-->
<!-- LEFT JOIN ftb_attendance_leave_approve a ON r.F_ApplyId = a.F_Id AND F_AttendanceType = 3-->
<!-- where a.F_User_Id = #{userId} AND a.F_Status = 1-->
<!-- <![CDATA[-->
<!-- AND DATE_FORMAT(a.F_StartTimeHit,'%Y-%m-%d %H:%i') < DATE_FORMAT(#{endTime},'%Y-%m-%d %H:%i')-->
<!-- AND DATE_FORMAT(a.F_EndTimeHit,'%Y-%m-%d %H:%i') > DATE_FORMAT(#{startTime},'%Y-%m-%d %H:%i')-->
<!-- ]]>-->
<!-- UNION ALL-->
<!-- select F_Id id, F_User_Id userId, F_Type type,F_Unit unit, F_StartTime startTime, F_EndTime endTime, F_Balance_Status balanceStatus, F_Paid paid, F_No_Paid noPaid , F_Status `status`-->
<!-- from ftb_attendance_leave_approve-->
<!-- where F_User_Id = #{userId} AND F_Status = 0-->
<!-- <![CDATA[-->
<!-- AND DATE_FORMAT(F_StartTimeHit,'%Y-%m-%d %H:%i') < DATE_FORMAT(#{endTime},'%Y-%m-%d %H:%i')-->
<!-- AND DATE_FORMAT(F_EndTimeHit,'%Y-%m-%d %H:%i') > DATE_FORMAT(#{startTime},'%Y-%m-%d %H:%i')-->
<!-- ]]>-->
<!-- </select>-->
<!-- 获取指定加班审批详情-->
<select id="getWorkOverTime" resultType="jnpf.model.attendance.vo.AttendanceWorkOverTimeVo">
select F_Id id,
F_User_Id userId,
F_WorkDay workDay,
F_StartTime startTime,
F_EndTime endTime,
F_Reason workOvertimeReason,
F_ShiftInvolved shiftInvolved,
F_Status status
from ftb_attendance_work_overtime_approve
where F_Id = #{id}
</select>
<!-- 修改加班审批的审批状态-->
<update id="updateWorkOverTimeApprove">
update ftb_attendance_work_overtime_approve
set F_Status = #{status},
F_ApproveUserId = #{userId},
F_ApproveUserName = #{userName},
F_ApproveTime = now(),
F_ShiftInvolved = #{json}
where F_Id = #{id}
</update>
<select id="getSelfApprove" resultType="jnpf.model.attendance.vo.AttendanceSelfApproveVo">
select F_Id id,
F_Group_Id groupId,
F_Group_Name groupName,
F_Self_Group_Id selfGroupId,
F_Self_Group_Name selfGroupName,
F_Start_Time startTime,
F_End_Time endTime,
F_Departure_Time departureTime,
F_Back_Time BackTime,
F_Status status,
F_CreatorUserId creatorUserId
from ftb_attendance_self_approve
where F_Id = #{id}
</select>
<!-- 获取借调用户集合-->
<select id="getUserList" resultType="java.lang.String">
select F_User_Id
from ftb_attendance_self_approve_user
where F_Self_Id = #{id}
</select>
<!-- 获取用户时间段内加班申请数量-->
<select id="getUserWorkByTimeSlot" resultType="java.lang.Integer">
select count(0)
from ftb_attendance_work_overtime_approve
where F_User_Id = #{userId} AND F_Status in (0,1)
<![CDATA[
AND DATE_FORMAT(F_StartTime,'%Y-%m-%d %H:%i') < DATE_FORMAT(#{endTime},'%Y-%m-%d %H:%i')
AND DATE_FORMAT(F_EndTime,'%Y-%m-%d %H:%i') > DATE_FORMAT(#{startTime},'%Y-%m-%d %H:%i')
]]>
</select>
<!-- 获取外出审批详情-->
<select id="getGoOut" resultType="jnpf.model.attendance.vo.attendance.GoOutVo">
SELECT F_Id id,F_User_Id userId,F_StartTime startTime,F_EndTime endTime,F_DayNum dayNum,F_Reason reason,F_Unit unit
FROM ftb_attendance_go_out_approve
WHERE F_Id = #{applyId}
</select>
<!-- 获取出差审批详情-->
<select id="getBusinessTrip" resultType="jnpf.model.attendance.vo.attendance.BusinessTripVo">
SELECT F_Id id,F_User_Id userId,F_Departure departure,F_Destination destination,F_StartTime startTime,F_EndTime endTime,F_DayNum dayNum,F_Transportation_Vehicles transportationVehicles,F_Reason reason
FROM ftb_attendance_business_trip_approve
WHERE F_Id = #{applyId}
</select>
<!-- 获取用户时间段内审核通过的请假审批列表-->
<select id="getUserPassLeaveByTime" resultType="jnpf.model.attendance.vo.AttendanceLeaveApproveVo">
select F_Id id, F_User_Id userId, F_Type type,F_Unit unit, F_StartTime startTime, F_EndTime endTime, F_Balance_Status balanceStatus, F_Paid paid, F_No_Paid noPaid , F_Status `status`
from ftb_attendance_leave_approve
where F_User_Id = #{userId} AND F_Status = 1
<![CDATA[
AND DATE_FORMAT(F_StartTime,'%Y-%m-%d %H:%i') < DATE_FORMAT(#{endTime},'%Y-%m-%d %H:%i')
AND DATE_FORMAT(F_EndTime,'%Y-%m-%d %H:%i') > DATE_FORMAT(#{startTime},'%Y-%m-%d %H:%i')
]]>
</select>
<select id="getBatchLeaveByUserIds" resultType="jnpf.model.attendance.vo.LeaveStaVo">
select
fala.F_User_Id userId,
fals.F_Id leaveId,
fals.F_Name leaveName,
fala.F_StartTime startTime,
fala.F_EndTime endTime,
fala.F_BalanceJsonNew leaveJson
from ftb_attendance_leave_approve fala
left join ftb_attendance_leave_rules fals ON fala.F_Type_Id = fals.F_Id
where F_Status = 1 and fala.F_BalanceJsonNew is not null
<![CDATA[
AND DATE_FORMAT(F_StartTime,'%Y-%m-%d %H:%i') < DATE_FORMAT(#{endTime},'%Y-%m-%d %H:%i')
AND DATE_FORMAT(F_EndTime,'%Y-%m-%d %H:%i') > DATE_FORMAT(#{startTime},'%Y-%m-%d %H:%i')
]]>
AND F_User_Id in
<foreach collection="userIds" index="index" item="item" open="(" separator="," close=")">
#{item}
</foreach>
group by fala.F_User_Id,fala.F_Id
</select>
<select id="getUserPassWorkByTime" resultType="java.lang.Integer">
select count(0)
from ftb_attendance_work_overtime_approve
where F_User_Id = #{userId} AND F_Status = 1
<![CDATA[
AND DATE_FORMAT(F_StartTime,'%Y-%m-%d %H:%i') < DATE_FORMAT(#{endTime},'%Y-%m-%d %H:%i')
AND DATE_FORMAT(F_EndTime,'%Y-%m-%d %H:%i') > DATE_FORMAT(#{startTime},'%Y-%m-%d %H:%i')
]]>
</select>
<!-- 修改借调审批为通过-->
<update id="updateSelfApprove">
update ftb_attendance_self_approve
set F_Status = #{status} ,
F_Departure_Time = #{departureTime},
F_Back_Time = #{backTime},
F_ApproveUserId = #{userId},
F_ApproveUserName = #{userName},
F_ApproveTime = now()
where F_Id = #{id}
</update>
<!-- 将对应审批变为未通过-->
<update id="updateLeaveApproveStatus">
update ftb_attendance_leave_approve
set F_Status = #{status},
F_ApproveUserId = #{userId},
F_ApproveUserName = #{userName},
F_ApproveTime = now()
where F_Id = #{id}
</update>
<!-- 修改外出审批状态-->
<update id="updateGoOutApprove">
update ftb_attendance_go_out_approve
set F_Status = #{status},
F_ApproveUserId = #{userId},
F_ApproveUserName = #{userName},
F_ApproveTime = now()
where F_Id = #{applyId}
</update>
<!-- 修改出差审批状态-->
<update id="updateBusinessTripApprove">
update ftb_attendance_business_trip_approve
set F_Status = #{status},
F_ApproveUserId = #{userId},
F_ApproveUserName = #{userName},
F_ApproveTime = now()
where F_Id = #{applyId}
</update>
<select id="getUserLeaveList" resultType="jnpf.model.attendance.model.LeaveSituationData">
select fala.F_Id applyId,
fala.F_User_Id userId,
fala.F_Unit unit,
fala.F_StartTime startTime,
fala.F_StartTimeType startTimeType,
fala.F_EndTime endTime,
fala.F_EndTimeType endTimeType,
fals.F_Id leaveId,
fals.F_Name leaveName,
fals.F_BuiltIn isRest,
fala.F_ShiftInvolved shiftInvolved,
fala.F_BalanceJsonNew balanceJsonNew
from ftb_attendance_leave_approve fala
left join ftb_attendance_leave_type fals ON fala.F_Type_Id = fals.F_Id
where fala.F_Status = 1
and fala.F_GroupId = #{groupId}
and fala.F_User_Id = #{userId}
<![CDATA[
and DATE_FORMAT(fala.F_StartTime, '%Y-%m-%d %H:%i') <= DATE_FORMAT(#{endDate}, '%Y-%m-%d %H:%i')
and DATE_FORMAT(fala.F_EndTime, '%Y-%m-%d %H:%i') >= DATE_FORMAT(#{startDate}, '%Y-%m-%d %H:%i')
]]>
</select>
<select id="getUserLeaveListByApplyIds" resultType="jnpf.model.attendance.model.LeaveSituationData">
select
fala.F_Id applyId,
fala.F_GroupId groupId,
fala.F_User_Id userId,
fala.F_Unit unit,
fala.F_StartTime startTime,
fala.F_EndTime endTime,
fals.F_Id leaveId,
fals.F_Name leaveName,
fals.F_BuiltIn isRest,
fala.F_ShiftInvolved shiftInvolved,
fala.F_BalanceJsonNew balanceJsonNew
from ftb_attendance_leave_approve fala
left join ftb_attendance_leave_type fals ON fala.F_Type_Id = fals.F_Id
where fala.F_Status = 1 and fala.F_Id in
<foreach collection="applyIds" index="index" item="item" open="(" separator="," close=")">
#{item}
</foreach>
</select>
<!-- 获取指定用户指定日期的加班申请列表-->
<select id="getApplyWorkOverTimeList" resultType="jnpf.model.attendance.vo.DailyApprovalVo">
SELECT DISTINCT a.F_Id taskId, '加班申请' as approvalName ,CONCAT_WS('~',DATE_FORMAT(a.F_StartTime,'%Y-%m-%d %H:%i'),DATE_FORMAT(a.F_EndTime,'%Y-%m-%d %H:%i')) AS applyTime , a.F_CreatorTime as submitTime,a.F_ApproveTime as approvalTime,a.F_ApproveUserId lastApprovalUserId,a.F_ApproveUserName lastApprovalUserName,a.F_Status lastResult ,a.F_Reason reason
FROM ftb_attendance_work_overtime_approve a
LEFT JOIN ftb_attendance_daily_rule r ON a.F_Id = r.F_ApplyId AND r.F_AttendanceType = #{code}
WHERE a.F_User_Id = #{userId} AND a.F_Status !=3 AND r.F_GroupId = #{currentGroupId}
<![CDATA[
AND DATE_FORMAT(a.F_StartTime,'%Y-%m-%d') <= DATE_FORMAT(#{queryDate},'%Y-%m-%d')
AND DATE_FORMAT(a.F_EndTime,'%Y-%m-%d') >= DATE_FORMAT(#{queryDate},'%Y-%m-%d')
]]>
</select>
<!-- 获取指定用户指定日期的出差申请列表-->
<select id="getApplyGoOutList" resultType="jnpf.model.attendance.vo.DailyApprovalVo">
SELECT DISTINCT a.F_Id taskId, '外出申请' as approvalName ,
IF(a.F_Unit = 1 ,CONCAT_WS('~',DATE_FORMAT(a.F_StartTime,'%Y-%m-%d %H:%i'),DATE_FORMAT(a.F_EndTime,'%Y-%m-%d %H:%i')),
if(a.F_Unit = 2 ,CONCAT_WS('~',DATE_FORMAT(a.F_StartTime,'%Y-%m-%d'),DATE_FORMAT(a.F_EndTime,'%Y-%m-%d')),
CONCAT_WS('~',DATE_FORMAT(a.F_StartTime,'%Y-%m-%d'),DATE_FORMAT(a.F_EndTime,'%Y-%m-%d'))
)) AS applyTime ,
a.F_CreatorTime as submitTime,a.F_ApproveTime as approvalTime,a.F_ApproveUserId lastApprovalUserId,a.F_ApproveUserName lastApprovalUserName,a.F_Status lastResult ,a.F_Reason reason
FROM ftb_attendance_go_out_approve a
LEFT JOIN ftb_attendance_daily_rule r ON a.F_Id = r.F_ApplyId AND r.F_AttendanceType = #{code}
WHERE a.F_User_Id = #{userId} AND a.F_Status !=3 AND r.F_GroupId = #{currentGroupId}
<![CDATA[
AND DATE_FORMAT(a.F_StartTime,'%Y-%m-%d') <= DATE_FORMAT(#{queryDate},'%Y-%m-%d')
AND DATE_FORMAT(a.F_EndTime,'%Y-%m-%d') >= DATE_FORMAT(#{queryDate},'%Y-%m-%d')
]]>
</select>
<!-- 获取指定用户指定日期的请假申请列表-->
<select id="getApplyLeaveList" resultType="jnpf.model.attendance.vo.DailyApprovalVo">
SELECT DISTINCT a.F_Id taskId, '请假申请' as approvalName ,
CASE
WHEN a.F_Unit = 1 THEN CONCAT_WS('~', DATE_FORMAT(a.F_StartTime, '%Y-%m-%d %H:%i'), DATE_FORMAT(a.F_EndTime, '%Y-%m-%d %H:%i'))
WHEN a.F_Unit = 2 THEN CONCAT_WS('~', DATE_FORMAT(a.F_StartTime, '%Y-%m-%d'), DATE_FORMAT(a.F_EndTime, '%Y-%m-%d'))
ELSE CONCAT_WS('~',
IF(a.F_StartTimeType = 1, CONCAT_WS(' ', DATE_FORMAT(a.F_StartTime, '%Y-%m-%d'), '上半天'), CONCAT_WS(' ', DATE_FORMAT(a.F_StartTime, '%Y-%m-%d'), '下半天')),
IF(a.F_EndTimeType = 1, CONCAT_WS(' ', DATE_FORMAT(a.F_EndTime, '%Y-%m-%d'), '上半天'), CONCAT_WS(' ', DATE_FORMAT(a.F_EndTime, '%Y-%m-%d'), '下半天'))
)
END AS applyTime,
a.F_CreatorTime as submitTime,a.F_ApproveTime as approvalTime,a.F_ApproveUserId lastApprovalUserId,a.F_ApproveUserName lastApprovalUserName,a.F_Status lastResult ,a.F_ReasonForLeave reason
FROM ftb_attendance_leave_approve a
LEFT JOIN ftb_attendance_daily_rule r ON a.F_Id = r.F_ApplyId AND r.F_AttendanceType = #{code}
WHERE a.F_User_Id = #{userId} AND a.F_Status !=3 AND r.F_GroupId = #{currentGroupId}
<![CDATA[
AND DATE_FORMAT(a.F_StartTime,'%Y-%m-%d') <= DATE_FORMAT(#{queryDate},'%Y-%m-%d')
AND DATE_FORMAT(a.F_EndTime,'%Y-%m-%d') >= DATE_FORMAT(#{queryDate},'%Y-%m-%d')
]]>
</select>
<!-- 获取指定用户指定日期的借调申请列表-->
<select id="getApplySelfList" resultType="jnpf.model.attendance.vo.DailyApprovalVo">
SELECT DISTINCT sa.F_Id taskId, '借调申请' as approvalName ,CONCAT_WS('~',DATE_FORMAT(F_Start_Time,'%Y-%m-%d %H:%i'),DATE_FORMAT(F_End_Time,'%Y-%m-%d %H:%i')) AS applyTime , F_CreatorTime as submitTime,F_ApproveTime as approvalTime,F_ApproveUserId lastApprovalUserId,F_ApproveUserName lastApprovalUserName,F_Status lastResult
FROM ftb_attendance_self_approve sa
LEFT JOIN ftb_attendance_self_approve_user sau ON sau.F_Self_Id = sa.F_Id
WHERE sau.F_User_Id = #{userId} AND sa.F_Status !=3 AND (sa.F_Group_Id = #{currentGroupId} OR sa.F_Self_Group_Id = #{currentGroupId})
<![CDATA[
AND DATE_FORMAT(F_Start_Time,'%Y-%m-%d') <= DATE_FORMAT(#{queryDate},'%Y-%m-%d')
AND DATE_FORMAT(F_End_Time,'%Y-%m-%d') >= DATE_FORMAT(#{queryDate},'%Y-%m-%d')
]]>
</select>
<!-- 获取指定用户指定日期的出差申请列表-->
<select id="getApplyBusinessTripList" resultType="jnpf.model.attendance.vo.DailyApprovalVo">
SELECT DISTINCT a.F_Id taskId, '出差申请' as approvalName , CONCAT_WS('~',DATE_FORMAT(a.F_StartTime,'%Y-%m-%d'),DATE_FORMAT(a.F_EndTime,'%Y-%m-%d')) AS applyTime , a.F_CreatorTime as submitTime,a.F_ApproveTime as approvalTime,a.F_ApproveUserId lastApprovalUserId,a.F_ApproveUserName lastApprovalUserName,a.F_Status lastResult ,a.F_Reason reason
FROM ftb_attendance_business_trip_approve a
LEFT JOIN ftb_attendance_daily_rule r ON a.F_Id = r.F_ApplyId AND r.F_AttendanceType = #{code}
WHERE a.F_User_Id = #{userId} AND a.F_Status !=3 AND r.F_GroupId = #{currentGroupId}
<![CDATA[
AND DATE_FORMAT(a.F_StartTime,'%Y-%m-%d') <= DATE_FORMAT(#{queryDate},'%Y-%m-%d')
AND DATE_FORMAT(a.F_EndTime,'%Y-%m-%d') >= DATE_FORMAT(#{queryDate},'%Y-%m-%d')
]]>
</select>
<!-- 获取指定用户指定日期的外出申请数量-->
<select id="getUserGoOutByTimeSlot" resultType="java.lang.Integer">
select count(0)
from ftb_attendance_go_out_approve
where F_User_Id = #{userId} AND F_Status = 1
<![CDATA[
AND DATE_FORMAT(F_StartTime,'%Y-%m-%d %H:%i') < DATE_FORMAT(#{endTime},'%Y-%m-%d %H:%i')
AND DATE_FORMAT(F_EndTime,'%Y-%m-%d %H:%i') > DATE_FORMAT(#{startTime},'%Y-%m-%d %H:%i')
]]>
</select>
<!-- 获取指定用户指定日期的出差申请数量-->
<select id="getUserBusinessTripByTimeSlot" resultType="java.lang.Integer">
select count(0)
from ftb_attendance_business_trip_approve
where F_User_Id = #{userId} AND F_Status in (0,1)
<![CDATA[
AND DATE_FORMAT(F_StartTime,'%Y-%m-%d %H:%i') < DATE_FORMAT(#{endTime},'%Y-%m-%d %H:%i')
AND DATE_FORMAT(F_EndTime,'%Y-%m-%d %H:%i') > DATE_FORMAT(#{startTime},'%Y-%m-%d %H:%i')
]]>
</select>
<!-- 获取指定用户指定日期的申请中的外出申请列表-->
<select id="getApplyingGoOutList" resultType="jnpf.model.attendance.vo.DailyApprovalVo">
SELECT DISTINCT a.F_Id, '外出申请' as approvalName ,
IF(a.F_Unit = 1 ,CONCAT_WS('~',DATE_FORMAT(a.F_StartTime,'%Y-%m-%d %H:%i'),DATE_FORMAT(a.F_EndTime,'%Y-%m-%d %H:%i')),
if(a.F_Unit = 2 ,CONCAT_WS('~',DATE_FORMAT(a.F_StartTime,'%Y-%m-%d'),DATE_FORMAT(a.F_EndTime,'%Y-%m-%d')),
CONCAT_WS('~',DATE_FORMAT(a.F_StartTime,'%Y-%m-%d'),DATE_FORMAT(a.F_EndTime,'%Y-%m-%d'))
)
) AS applyTime ,
a.F_CreatorTime as submitTime,a.F_ApproveTime as approvalTime,a.F_ApproveUserId lastApprovalUserId,a.F_ApproveUserName lastApprovalUserName,a.F_Status lastResult ,a.F_Unit unit ,a.F_Reason reason
FROM ftb_attendance_go_out_approve a
WHERE a.F_User_Id = #{userId} AND (a.F_Status =0 OR a.F_Status =2)
<![CDATA[
AND DATE_FORMAT(a.F_StartTime,'%Y-%m-%d') <= DATE_FORMAT(#{queryDate},'%Y-%m-%d')
AND DATE_FORMAT(a.F_EndTime,'%Y-%m-%d') >= DATE_FORMAT(#{queryDate},'%Y-%m-%d')
]]>
</select>
<!-- 获取指定用户指定日期的申请中的请假申请列表-->
<select id="getApplyingLeaveList" resultType="jnpf.model.attendance.vo.DailyApprovalVo">
SELECT DISTINCT a.F_Id taskId, '请假申请' as approvalName ,
CASE
WHEN a.F_Unit = 1 THEN CONCAT_WS('~', DATE_FORMAT(a.F_StartTime, '%Y-%m-%d %H:%i'), DATE_FORMAT(a.F_EndTime, '%Y-%m-%d %H:%i'))
WHEN a.F_Unit = 2 THEN CONCAT_WS('~', DATE_FORMAT(a.F_StartTime, '%Y-%m-%d'), DATE_FORMAT(a.F_EndTime, '%Y-%m-%d'))
ELSE CONCAT_WS('~',
IF(a.F_StartTimeType = 1, CONCAT_WS(' ', DATE_FORMAT(a.F_StartTime, '%Y-%m-%d'), '上半天'), CONCAT_WS(' ', DATE_FORMAT(a.F_StartTime, '%Y-%m-%d'), '下半天')),
IF(a.F_EndTimeType = 1, CONCAT_WS(' ', DATE_FORMAT(a.F_EndTime, '%Y-%m-%d'), '上半天'), CONCAT_WS(' ', DATE_FORMAT(a.F_EndTime, '%Y-%m-%d'), '下半天'))
)
END AS applyTime,
a.F_CreatorTime as submitTime,a.F_ApproveTime as approvalTime,a.F_ApproveUserId lastApprovalUserId,a.F_ApproveUserName lastApprovalUserName,a.F_Status lastResult ,a.F_ReasonForLeave reason
FROM ftb_attendance_leave_approve a
WHERE a.F_User_Id = #{userId} AND (a.F_Status =0 OR a.F_Status =2)
<![CDATA[
AND DATE_FORMAT(a.F_StartTime,'%Y-%m-%d') <= DATE_FORMAT(#{queryDate},'%Y-%m-%d')
AND DATE_FORMAT(a.F_EndTime,'%Y-%m-%d') >= DATE_FORMAT(#{queryDate},'%Y-%m-%d')
]]>
</select>
<!-- 获取指定用户指定日期的申请中的出差申请列表-->
<select id="getApplyingBusinessTripList" resultType="jnpf.model.attendance.vo.DailyApprovalVo">
SELECT DISTINCT a.F_Id taskId, '出差申请' as approvalName , CONCAT_WS('~',DATE_FORMAT(a.F_StartTime,'%Y-%m-%d'),DATE_FORMAT(a.F_EndTime,'%Y-%m-%d')) AS applyTime , a.F_CreatorTime as submitTime,a.F_ApproveTime as approvalTime,a.F_ApproveUserId lastApprovalUserId,a.F_ApproveUserName lastApprovalUserName,a.F_Status lastResult ,a.F_Reason reason
FROM ftb_attendance_business_trip_approve a
WHERE a.F_User_Id = #{userId} AND (a.F_Status =0 OR a.F_Status =2)
<![CDATA[
AND DATE_FORMAT(a.F_StartTime,'%Y-%m-%d') <= DATE_FORMAT(#{queryDate},'%Y-%m-%d')
AND DATE_FORMAT(a.F_EndTime,'%Y-%m-%d') >= DATE_FORMAT(#{queryDate},'%Y-%m-%d')
]]>
</select>
<!-- 获取指定用户指定日期的申请中的加班申请列表-->
<select id="getApplyingWorkOverTimeList" resultType="jnpf.model.attendance.vo.DailyApprovalVo">
SELECT DISTINCT a.F_Id taskId, '加班申请' as approvalName ,CONCAT_WS('~',DATE_FORMAT(a.F_StartTime,'%Y-%m-%d %H:%i'),DATE_FORMAT(a.F_EndTime,'%Y-%m-%d %H:%i')) AS applyTime , a.F_CreatorTime as submitTime,a.F_ApproveTime as approvalTime,a.F_ApproveUserId lastApprovalUserId,a.F_ApproveUserName lastApprovalUserName,a.F_Status lastResult ,a.F_Reason reason
FROM ftb_attendance_work_overtime_approve a
WHERE a.F_User_Id = #{userId} AND (a.F_Status =0 OR a.F_Status =2)
<![CDATA[
AND DATE_FORMAT(a.F_StartTime,'%Y-%m-%d') <= DATE_FORMAT(#{queryDate},'%Y-%m-%d')
AND DATE_FORMAT(a.F_EndTime,'%Y-%m-%d') >= DATE_FORMAT(#{queryDate},'%Y-%m-%d')
]]>
</select>
<!-- 获取已审批的借调记录-->
<select id="getSelfApproveList" resultType="jnpf.model.attendance.vo.AttendanceSelfApproveVo">
select F_Id id,
F_Group_Id groupId,
F_Group_Name groupName,
F_Self_Group_Id selfGroupId,
F_Self_Group_Name selfGroupName,
F_Start_Time startTime,
F_End_Time endTime,
F_Departure_Time departureTime,
F_Back_Time BackTime,
F_Status status,
F_CreatorUserId creatorUserId
from ftb_attendance_self_approve
where
F_Start_Time >= #{startTime} AND F_Start_Time <![CDATA[<=]]> #{endTime} and F_Status = 1
</select>
<!-- 获取指定用户指定日期的出差申请数量除开本次申请-->
<select id="getBusinessTripForOa" resultType="java.lang.Integer">
select count(0)
from ftb_attendance_business_trip_approve
where F_User_Id = #{userId} AND F_Status in (0,1) AND F_Id != #{taskId}
<![CDATA[
AND DATE_FORMAT(F_StartTime,'%Y-%m-%d %H:%i') <= DATE_FORMAT(#{endTime},'%Y-%m-%d %H:%i')
AND DATE_FORMAT(F_EndTime,'%Y-%m-%d %H:%i') >= DATE_FORMAT(#{startTime},'%Y-%m-%d %H:%i')
]]>
</select>
<!-- 获取指定用户指定日期的外出申请数量除开本次申请-->
<select id="getUserGoOutForOa" resultType="java.lang.Integer">
select count(0)
from ftb_attendance_go_out_approve
where F_User_Id = #{userId} AND F_Status in (0,1) AND F_Id != #{taskId} AND F_Unit = 1
<![CDATA[
AND DATE_FORMAT(F_StartTime,'%Y-%m-%d %H:%i') <= DATE_FORMAT(#{endTime},'%Y-%m-%d %H:%i')
AND DATE_FORMAT(F_EndTime,'%Y-%m-%d %H:%i') >= DATE_FORMAT(#{startTime},'%Y-%m-%d %H:%i')
]]>
</select>
<select id="getUserWorkByTimeSlotForOa" resultType="java.lang.Integer">
select count(0)
from ftb_attendance_work_overtime_approve
where F_User_Id = #{userId} AND F_Status in (0,1) AND F_Id != #{taskId}
<![CDATA[
AND DATE_FORMAT(F_StartTime,'%Y-%m-%d %H:%i') <= DATE_FORMAT(#{endTime},'%Y-%m-%d %H:%i')
AND DATE_FORMAT(F_EndTime,'%Y-%m-%d %H:%i') >= DATE_FORMAT(#{startTime},'%Y-%m-%d %H:%i')
]]>
</select>
<select id="getUserGoOutForDay" resultType="java.lang.Integer">
select count(0)
from ftb_attendance_go_out_approve
where F_User_Id = #{userId} AND F_Status in (0,1) AND F_Id != #{taskId} AND F_Unit = 2
<![CDATA[
AND DATE_FORMAT(F_StartTime,'%Y-%m-%d') <= DATE_FORMAT(#{endTime},'%Y-%m-%d')
AND DATE_FORMAT(F_EndTime,'%Y-%m-%d') >= DATE_FORMAT(#{startTime},'%Y-%m-%d')
]]>
</select>
<select id="checkSelfApprove" resultType="java.lang.String">
select sau.F_User_Id
from ftb_attendance_self_approve sa
LEFT JOIN ftb_attendance_self_approve_user sau ON sau.F_Self_Id = sa.F_Id
where F_Status = 0
<if test="taskId != null">
AND sa.F_Id != #{taskId}
</if>
AND sau.F_User_Id IN
<foreach item="item" collection="userIds" separator="," close=")" open="(" index="">
#{item}
</foreach>
<![CDATA[
AND DATE_FORMAT(sa.F_Start_Time,'%Y-%m-%d %H:%i') <= DATE_FORMAT(#{endTime},'%Y-%m-%d %H:%i')
AND DATE_FORMAT(sa.F_End_Time,'%Y-%m-%d %H:%i') >= DATE_FORMAT(#{startTime},'%Y-%m-%d %H:%i')
]]>
</select>
</mapper>

View File

@@ -0,0 +1,4 @@
<?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="jnpf.attendance.mapper.AttendanceLeaveGrantSettingMapper" >
</mapper>

View File

@@ -0,0 +1,33 @@
<?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="jnpf.attendance.mapper.AttendanceLeaveRulesMapper" >
<update id="updateState">
update ftb_attendance_leave_rules
set F_State = #{state},
F_LastModifyUserId = #{userId},
F_LastModifyTime = now()
where F_Id = #{id}
</update>
<update id="updateByLeaveTypeId">
update ftb_attendance_leave_rules
set F_ScopeOfAdaptation = -1
where F_LeaveTypeId = #{leaveTypeId}
</update>
<select id="list" resultType="jnpf.model.attendance.vo.attendance.AttendanceLeaveRulesVo">
select F_Id as id,
F_Name as name,
F_Unit as unit,
F_Duration as duration,
F_DistributeBalance as distributeBalance,
F_RetirementLeave as retirementLeave,
F_ScopeOfAdaptation as scopeOfAdaptation,
F_State as state
from ftb_attendance_leave_rules
where F_DeleteMark = 0 and F_LeaveTypeId = #{typeId}
<if test="iText != null and iText != ''">
and F_Name like concat('%', #{iText}, '%')
</if>
order by F_CreatorTime desc
</select>
</mapper>

View File

@@ -0,0 +1,11 @@
<?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="jnpf.attendance.mapper.AttendanceLeaveSettingsMapper" >
<sql id="Base_Column_List" >
F_Id, F_Name, F_Unit, F_Duration, F_Is_Negative, F_Upper_Limit, F_State, F_CreatorUserId,
F_CreatorTime, F_LastModifyUserId, F_LastModifyTime, F_DeleteMark, F_DeleteTime,
F_DeleteUserId, F_TenantId
</sql>
</mapper>

View File

@@ -0,0 +1,4 @@
<?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="jnpf.attendance.mapper.AttendanceLeaveTypeMapper" >
</mapper>

View File

@@ -0,0 +1,11 @@
<?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="jnpf.attendance.mapper.AttendanceLocationSettingMapper" >
<!-- 查询考勤机名称 -->
<select id="getMachineName" resultType="java.lang.String">
select F_Name from ftb_attendance_location_setting
where F_Type = 3 and F_Address = #{sn} and F_DeleteMark = 0
order by F_CreatorTime desc limit 1
</select>
</mapper>

View File

@@ -0,0 +1,14 @@
<?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="jnpf.attendance.mapper.AttendanceMachineLogMapper">
<!-- 查询日志列表 -->
<select id="getLogList" resultType="jnpf.model.attendance.vo.attendance.LogMiniVo">
select F_UserName userName, F_GroupName groupName, F_CreatorTime clockInTime from ftb_attendance_machine_log
where F_Action = #{action}
<![CDATA[
and date_format(F_CreatorTime, '%Y-%m-%d') >= date_format(#{date}, '%Y-%m-%d') and instr(F_ParamJson, #{mac}) > 0
]]>
order by F_CreatorTime desc
</select>
</mapper>

View File

@@ -0,0 +1,88 @@
<?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="jnpf.attendance.mapper.AttendanceMachineManageMapper">
<!-- 更新考勤机的考勤组关联 -->
<update id="updateRelationGroup">
update ftb_attendance_machine_manage set F_GroupIds = #{groupIds} where F_Id = #{id}
</update>
<!-- 查询考勤机绑定的考勤组 -->
<select id="getGroupIdsByMachine" resultType="java.lang.String">
select F_GroupIds from ftb_attendance_machine_manage where F_Id = #{machineId}
</select>
<!-- 查询总条数 -->
<select id="getTotal" resultType="java.lang.Integer">
select count(1) from ftb_attendance_machine_manage where F_DeleteMark = 0
</select>
<!-- 查询名称数量 -->
<select id="getMachineNameCount" resultType="java.lang.Integer">
select count(1) from ftb_attendance_machine_manage
where F_DeleteMark = 0 and F_Name = #{name}
<if test="null != id and '' != id">
and F_Id != #{id}
</if>
</select>
<!-- 查询mac数量 -->
<select id="getMachineMacCount" resultType="java.lang.Integer">
select count(1) from ftb_attendance_machine_manage
where F_DeleteMark = 0 and F_Mac = #{mac}
<if test="null != id and '' != id">
and F_Id != #{id}
</if>
</select>
<!-- 查询考勤机名称 -->
<select id="getMachineName" resultType="java.lang.String">
select F_Name from ftb_attendance_machine_manage
where F_DeleteMark = 0 and F_Mac = #{mac}
</select>
<!-- 获取数据库时间 -->
<select id="getDbTime" resultType="java.util.Date">
select now()
</select>
<!-- 查询关联此考勤组的考勤机 -->
<select id="getRelationMachineByGroupId" resultType="jnpf.entity.attendance.AttendanceMachineManage">
select F_Id id, F_Name `name`, F_Mac mac, F_Type `type`, F_GroupIds groupIds
from ftb_attendance_machine_manage
where F_DeleteMark = 0 and instr(F_GroupIds, #{groupId}) > 0
</select>
<!-- 查询绑定了考勤机的考勤组 -->
<select id="selectGroupBindMachine" resultType="java.lang.String">
select GROUP_CONCAT(F_GroupIds) from ftb_attendance_machine_manage where F_DeleteMark = 0
</select>
<!-- 查询考勤机列表 -->
<select id="getMachineList" resultType="jnpf.entity.attendance.AttendanceMachineManage">
SELECT
mm.F_Id as id,
mm.F_Name AS `name`,
mm.F_Mac AS `mac`,
mm.F_Type AS `type`,
mm.F_TypeName AS typeName,
SUM(CASE WHEN rs.F_ScopeType = 2 THEN 1 ELSE 0 END) AS orgCount,
SUM(CASE WHEN rs.F_ScopeType = 1 THEN 1 ELSE 0 END) AS userCount
FROM ftb_attendance_machine_manage mm
<if test="null != scopeType">
INNER JOIN (
SELECT DISTINCT rsFilter.F_RuleId
FROM ftb_attendance_rule_scope rsFilter
WHERE rsFilter.F_BizType = #{bizType}
AND (
rsFilter.F_ScopeType = #{scopeType} AND rsFilter.F_ScopeValue IN
<foreach collection="list" item="item" open="(" separator="," close=")">
#{item}
</foreach>
)
) scope ON mm.F_Id = scope.F_RuleId
</if>
LEFT JOIN ftb_attendance_rule_scope rs
ON mm.F_Id = rs.F_RuleId AND rs.F_BizType = #{bizType}
WHERE mm.F_DeleteMark = 0
<if test="null != machineKind and '' != machineKind">
AND mm.F_Type = #{machineKind}
</if>
<if test="null != keywords and '' != keywords">
AND INSTR(CONCAT(IFNULL(mm.F_Mac, ""), IFNULL(mm.F_Name, "")), #{keywords}) > 0
</if>
GROUP BY mm.F_Id, mm.F_Name, mm.F_Mac, mm.F_Type, mm.F_TypeName
ORDER BY mm.F_CreatorTime desc
</select>
</mapper>

View File

@@ -0,0 +1,289 @@
<?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="jnpf.attendance.mapper.AttendanceManagerPermissionMapper" >
<!-- 获取指定考勤组用户的权限结合(含子权限)-->
<select id="queryGroupUser" resultType="jnpf.model.attendance.vo.AttendanceGroupAdminVo">
SELECT
fam.F_UserId userId,
GROUP_CONCAT( fpd.F_Name ) curPermissionJson,
GROUP_CONCAT( fpd2.F_Name ) childPermissionJson
FROM
ftb_attendance_manager_permission fam
LEFT JOIN ftb_permission_dict fpd ON fpd.F_Id = fam.F_PermissionId
AND fam.F_Type = 1 AND fpd.F_Parent != 0
LEFT JOIN ftb_permission_dict fpd2 ON fpd2.F_Id = fam.F_PermissionId
AND fam.F_Type = 2 AND fpd2.F_Parent != 0
WHERE
fam.F_DeleteMark = 0
and
fam.F_GroupId = #{groupId}
GROUP BY
fam.F_UserId
</select>
<!-- 批量获取指定考勤组列表用户的权限结合(含子权限)-->
<select id="queryGroupUsers" resultType="jnpf.model.attendance.vo.AttendanceGroupAdminVo">
SELECT
fam.F_UserId userId,
GROUP_CONCAT( fpd.F_Name ) curPermissionJson,
GROUP_CONCAT( fpd2.F_Name ) childPermissionJson
FROM
ftb_attendance_manager_permission fam
LEFT JOIN ftb_permission_dict fpd ON fpd.F_Id = fam.F_PermissionId
AND fam.F_Type = 1 AND fpd.F_Parent != 0
LEFT JOIN ftb_permission_dict fpd2 ON fpd2.F_Id = fam.F_PermissionId
AND fam.F_Type = 2 AND fpd2.F_Parent != 0
WHERE
fam.F_DeleteMark = 0
and
fam.F_GroupId in
<foreach collection="groupIds" item="id" open="(" separator="," close=")">
#{id}
</foreach>
GROUP BY
fam.F_UserId
</select>
<!-- 获取用户管理员权限类型-->
<select id="getByUserId" resultType="jnpf.entity.PermissionDict">
SELECT
fpd.F_Id id,
fpd.F_Name name,
fpd.F_Parent parent
FROM
ftb_permission_dict fpd
LEFT JOIN ftb_attendance_manager_permission famp ON fpd.F_Id = famp.F_PermissionId
where fpd.F_DeleteMark = 0
and famp.F_GroupId = #{groupId}
<if test="userId != null and userId != ''">
and famp.F_UserId = #{userId}
</if>
<if test="type != null">
and famp.F_Type = #{type}
</if>
and fpd.F_ModuleType = #{moduleType}
</select>
<!-- 批量获取指定考勤组列表及以上用户的超级管理员权限-->
<select id="queryUserForCurrAndUpChildAndSuper" resultType="jnpf.model.attendance.vo.AttendancePermissionVo">
select t.userId,t.groupId from (
select p.F_UserId userId,p.F_GroupId groupId from ftb_attendance_manager_permission p where p.F_GroupId in
<foreach collection="groupIdList" item="id" open="(" separator="," close=")">
#{id}
</foreach>
and p.F_DeleteMark = 0
union all
select p.F_UserId userId,g.F_Id groupId from ftb_attendance_manager_permission p left join ftb_attendance_group g on p.F_GroupId =g.F_ParentId where p.F_Type = 2 and g.F_Id in
<foreach collection="groupIdList" item="id" open="(" separator="," close=")">
#{id}
</foreach>
and p.F_DeleteMark = 0
union all
select p.F_UserId userId, "-1" groupId from ftb_attendance_manager_permission p WHERE p.F_Type = 0 and p.F_DeleteMark = 0
) t
GROUP BY t.userId,t.groupId
</select>
<!-- 批量获取指定权限指定考勤组列表及以上用户的超级管理员权限-->
<select id="queryPermissionBySpecify" resultType="jnpf.model.attendance.vo.AttendancePermissionVo">
select t.userId,t.groupId from (
select p.F_UserId userId,p.F_GroupId groupId from ftb_attendance_manager_permission p left join ftb_permission_dict d on d.F_Id = p.F_PermissionId where p.F_GroupId in
<foreach collection="groupIdList" item="id" open="(" separator="," close=")">
#{id}
</foreach>
and p.F_DeleteMark = 0
and d.F_ModuleType = 1 and d.F_Name in
<foreach collection="parentCodes" item="code" open="(" separator="," close=")">
#{code}
</foreach>
union all
select p.F_UserId userId,g.F_Id groupId from ftb_attendance_manager_permission p left join ftb_attendance_group g on p.F_GroupId =g.F_ParentId left join ftb_permission_dict d on d.F_Id = p.F_PermissionId where p.F_Type = 2 and g.F_Id in
<foreach collection="groupIdList" item="id" open="(" separator="," close=")">
#{id}
</foreach>
and p.F_DeleteMark = 0
and d.F_ModuleType = 2 and d.F_Name in
<foreach collection="childCodes" item="code" open="(" separator="," close=")">
#{code}
</foreach>
union all
select p.F_UserId userId, "-1" groupId from ftb_attendance_manager_permission p WHERE p.F_Type = 0 and p.F_DeleteMark = 0
) t
GROUP BY t.userId,t.groupId
</select>
<!-- 获取考勤组管理员权限类型-->
<select id="queryMyPermissions" resultType="jnpf.model.attendance.vo.AttendancePermissionVo">
SELECT
fpd.F_Id id,
fpd.F_Name name,
fpd.F_Code code,
famp.F_GroupId groupId,
famp.F_UserId userId,
famp.F_Type
FROM
ftb_attendance_manager_permission famp
LEFT JOIN ftb_permission_dict fpd ON fpd.F_Id = famp.F_PermissionId
WHERE
1 = 1
ADN famp.F_DeleteMark = 0
And famp.F_GroupId = #{groupId}
<if test="type != null">
AND famp.F_Type = #{type}
</if>
<if test="userId != null and userId != ''">
AND famp.F_UserId = #{userId}
</if>
</select>
<!-- 获取用户在考勤组列表里面的管理员权限集合-->
<select id="queryInGroupIds" resultType="jnpf.model.attendance.vo.CurUserPermissionVo">
SELECT
famp.F_GroupId groupId,
GROUP_CONCAT(fpd.F_Name) allPermissions
FROM
ftb_attendance_manager_permission famp
LEFT JOIN ftb_permission_dict fpd on fpd.F_Id = famp.F_PermissionId
WHERE
famp.F_Type = 2
and famp.F_UserId = #{userId}
and famp.F_GroupId in
<foreach collection="groupIdList" item="id" open="(" separator="," close=")">
#{id}
</foreach>
GROUP BY famp.F_GroupId
</select>
<!-- 获取用户在指定考勤组的权限列表-->
<select id="queryByGroupId" resultType="jnpf.model.attendance.vo.CurUserPermissionVo">
SELECT
famp.F_GroupId groupId,
GROUP_CONCAT(fpd.F_Name) allPermissions
FROM
ftb_attendance_manager_permission famp
LEFT JOIN ftb_permission_dict fpd on fpd.F_Id = famp.F_PermissionId
WHERE
famp.F_Type = 2
and famp.F_UserId = #{userId}
and famp.F_GroupId = #{groupId}
<if test="permissionName != null and permissionName != ''">
and fpd.F_Name = #{permissionName}
</if>
GROUP BY famp.F_GroupId
</select>
<!-- 获取考勤组权限列表里面包含指定编码层级的考勤组列表-->
<select id="queryGroupVoInGroupIds" resultType="jnpf.model.attendance.vo.AttendanceGroupVo">
SELECT
fag.F_Id id,
fag.F_GroupName groupName,
fag.F_DetailName detailName,
fag.F_ParentId parentId,
fag.F_LevelCode levelCode
FROM
ftb_attendance_group fag
LEFT JOIN ftb_attendance_manager_permission famp on famp.F_GroupId = fag.F_Id
LEFT JOIN ftb_permission_dict fpd on fpd.F_Id = famp.F_PermissionId
WHERE
<foreach collection="levelCodeList" item="levelCode" open="(" separator="or" close=")">
fag.F_LevelCode like concat("%",#{levelCode},"%")
</foreach>
and fag.F_DeleteMark = 0
GROUP BY fag.F_Id
</select>
<!-- 获取考勤组的指定类型管理员及权限集合-->
<select id="queryManagerByGroupIds" resultType="jnpf.model.attendance.vo.QueryGroupAdminVo">
SELECT
famp.F_UserId userId,
GROUP_CONCAT(fpd.F_Name) permissions
FROM
ftb_attendance_manager_permission famp
LEFT JOIN ftb_permission_dict fpd on fpd.F_Id = famp.F_PermissionId
WHERE 1=1
<if test="type != null">
and famp.F_Type = #{type}
</if>
and famp.F_GroupId in
<foreach collection="groupIds" item="id" open="(" separator="," close=")">
#{id}
</foreach>
GROUP BY famp.F_UserId
</select>
<!-- 获取用户在指定考勤组的权限列表-->
<select id="queryGroupUserPermissionByUserId" resultType="jnpf.model.attendance.vo.AttendanceGroupAdminVo">
SELECT
fam.F_UserId userId,
GROUP_CONCAT( fpd.F_Name ) curPermissionJson,
GROUP_CONCAT( fpd2.F_Name ) childPermissionJson
FROM
ftb_attendance_manager_permission fam
LEFT JOIN ftb_permission_dict fpd ON fpd.F_Id = fam.F_PermissionId
AND fam.F_Type = 1 AND fpd.F_Parent != 0
LEFT JOIN ftb_permission_dict fpd2 ON fpd2.F_Id = fam.F_PermissionId
AND fam.F_Type = 2 AND fpd2.F_Parent != 0
WHERE
fam.F_DeleteMark = 0
and
fam.F_GroupId = #{groupId} AND fam.F_UserId = #{userId}
GROUP BY
fam.F_UserId
</select>
<!-- 批量保存考勤组管理员信息-->
<insert id="batchSaveGroupAdmin">
INSERT INTO ftb_attendance_manager_permission (F_Id, F_Type, F_GroupId, F_UserId, F_PermissionId, F_CreatorUserId, F_CreatorTime)
VALUES
<foreach collection ="curGroupAdminList" item="admin" separator =",">
(#{admin.id}, #{admin.type}, #{admin.groupId}, #{admin.userId}, #{admin.permissionId}, #{admin.creatorUserId}, #{admin.creatorTime})
</foreach>
</insert>
<!-- 更新用户考勤组管理员权限 -->
<update id="updateUserGroupManagerPermission">
UPDATE ftb_attendance_manager_permission
SET F_GroupId = #{groupId1}
WHERE F_GroupId = #{groupId} AND F_UserId = #{userId}
</update>
<update id="updateBatchUserGroupManagerPermission">
UPDATE ftb_attendance_manager_permission
SET F_GroupId = #{groupId}
WHERE F_GroupId = #{oldGroupId} AND F_UserId in
<foreach collection="userIds" item="userId" separator="," open="(" close=")">
#{userId}
</foreach>
</update>
<!-- 获取用户在指定考勤组的权限列表-->
<select id="getGroupManagerPermission" resultType="jnpf.entity.AttendanceManagerPermission">
SELECT F_Id id,F_Type type,F_GroupId groupId,F_UserId userId,F_PermissionId permissionId,F_CreatorUserId creatorUserId
FROM ftb_attendance_manager_permission
WHERE F_GroupId = #{groupId} AND F_UserId = #{userId}
</select>
<!-- 获取用户集合在指定考勤组的权限信息-->
<select id="getGroupManagerPermissionByUserIds" resultType="jnpf.entity.AttendanceManagerPermission">
SELECT F_Id id,F_Type type,F_GroupId groupId,F_UserId userId,F_PermissionId permissionId,F_CreatorUserId creatorUserId
FROM ftb_attendance_manager_permission
WHERE F_GroupId = #{groupId} AND F_UserId in
<foreach collection="userIds" item="userId" separator="," open="(" close=")">
#{userId}
</foreach>
</select>
<!-- 批量添加-->
<insert id="addBatch">
INSERT INTO ftb_attendance_manager_permission
(F_Id, F_Type, F_GroupId, F_UserId, F_PermissionId, F_CreatorUserId, F_CreatorTime)
VALUES
<foreach collection="addSchedules" item="admin" separator=",">
(#{admin.id}, #{admin.type}, #{admin.groupId}, #{admin.userId}, #{admin.permissionId}, #{admin.creatorUserId}, now())
</foreach>
</insert>
<!-- 根据用户Id和考勤组Id删除对应的权限记录-->
<delete id="deleteByGroupUserId">
delete from ftb_attendance_manager_permission
where F_GroupId = #{groupId} and F_UserId = #{userId}
</delete>
</mapper>

View File

@@ -0,0 +1,17 @@
<?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="jnpf.attendance.mapper.AttendanceNoticeMapper">
<!-- 可根据自己的需求,是否要使用 -->
<resultMap type="jnpf.entity.attendance.AttendanceNoticeEntity" id="AttendanceNoticeMap">
<result property="id" column="F_Id"/>
<result property="type" column="F_Type"/>
<result property="dataJson" column="F_DataJson"/>
<result property="creatorTime" column="F_CreatorTime"/>
<result property="creatorUserId" column="F_CreatorUserId"/>
<result property="tenantId" column="F_TenantId"/>
</resultMap>
</mapper>

View File

@@ -0,0 +1,65 @@
<?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="jnpf.attendance.mapper.AttendanceQuickTemplateMapper" >
<!-- 新增模板信息-->
<insert id="saveTemplate">
INSERT INTO ftb_attendance_quick_template
(F_Id,F_Name,F_GroupId,F_CreatorTime,F_CreatorUserId )
VALUES
(#{dto.id},#{dto.name},#{dto.groupId},now(),#{userId})
</insert>
<insert id="saveClass">
INSERT INTO ftb_attendance_quick_template_item_new (F_Id,F_TemplateId,F_Num,F_ShiftNameId,F_ShiftType,F_Sort,F_Type)
VALUES
<foreach collection="list" item="item" separator=",">
(#{item.id},#{item.groupId},#{item.num},#{item.shiftNameId},#{item.shiftType},#{item.sort},#{item.type})
</foreach>
</insert>
<!-- 修改快速模板信息-->
<update id="updateTemplate">
update ftb_attendance_quick_template
set F_Name = #{dto.name},
F_GroupId = #{dto.groupId},
F_LastModifyUserId = #{userId},
F_LastModifyTime = now()
where F_Id = #{dto.id}
</update>
<!-- 删除模板绑定的信息信息-->
<delete id="deleteClass">
DELETE FROM ftb_attendance_quick_template_item_new
WHERE F_TemplateId = #{id}
</delete>
<delete id="deleteTemplateItem">
UPDATE ftb_attendance_quick_template_item_new t1
JOIN (
SELECT F_Num
FROM ftb_attendance_quick_template_item_new
WHERE F_ShiftNameId = #{shiftNameId}
AND F_Num IN
<foreach collection="nums" item="value" separator="," open="(" close=")">
#{value}
</foreach>
) t2 ON t1.F_Num = t2.F_Num
SET t1.F_Type = 0,
t1.F_ShiftNameId = NULL
WHERE t1.F_TemplateId = #{id}
</delete>
<!-- 获取考勤组快速模板集合-->
<select id="getTemByGroupId" resultType="jnpf.model.attendance.vo.attendance.QuickTemVo">
SELECT F_Id id,F_Name `name`
FROM ftb_attendance_quick_template
WHERE F_GroupId = #{groupId} and F_DeleteMark = 0
ORDER BY F_CreatorTime DESC
</select>
<!-- 获取考勤组快速模板下班次集合信息-->
<select id="getShiftByTemIds" resultType="jnpf.model.attendance.vo.attendance.ShiftNameVo">
SELECT sn.F_Id id ,sn.F_Name `name` ,sn.F_ShortName shortName ,sn.F_Colour colour ,fc.F_ShiftType fixedType ,sn.F_Type shiftType ,fc.F_Num num,fc.F_Type type , fc.F_Sort fixedSort,fc.F_TemplateId templateId
FROM ftb_attendance_quick_template_item_new fc
LEFT JOIN ftb_attendance_shift_name sn ON sn.F_Id = fc.F_ShiftNameId
WHERE fc.F_TemplateId IN
<foreach collection="temIds" item="value" separator="," open="(" close=")">
#{value}
</foreach>
</select>
</mapper>

View File

@@ -0,0 +1,16 @@
<?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="jnpf.attendance.mapper.AttendanceRepairMapper" >
<!-- 根据时间判定使用的配置 -->
<select id="getAttendanceRepairByDate" resultType="jnpf.entity.attendance.AttendanceRepair">
select F_Id id, F_GroupId groupId, F_UserId userId, F_GenerateYear generateYear, F_GenerateMonth generateMonth, F_GenerateDay generateDay,
F_TotalNum totalNum, F_RepairNum repairNum, F_RepairRecord repairRecord, F_ExpireDate expireDate
from ftb_attendance_repair
where F_DeleteMark = 0
and date(#{applyDate}) between
date(concat(F_GenerateYear, '-', F_GenerateMonth, '-', F_GenerateDay))
and F_ExpireDate and F_UserId = #{userId} and F_GroupId = #{groupId}
order by F_CreatorTime desc limit 1
</select>
</mapper>

View File

@@ -0,0 +1,55 @@
<?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="jnpf.attendance.mapper.AttendanceSelfApproveMapper" >
<sql id="Base_Column_List" >
F_Id, F_Group_Id, F_Self_Group_Id, F_User_Id, F_Start_Time, F_End_Time, F_Departure_Time,
f_flowtaskid, f_flowid, F_UniqueId, F_TenantId
</sql>
<!-- 时间段内存在多个考勤组查询对应的借调信息-->
<select id="getSelfApprove" resultType="jnpf.model.attendance.vo.DailyRuleResultVo">
SELECT F_Start_Time inPoint ,F_End_Time outPoint , F_Departure_Time departureTime,F_Back_Time backTime ,(
select F_GroupName from ftb_attendance_group where F_Id = asa.F_Group_Id
) groupName
FROM ftb_attendance_self_approve asa
LEFT JOIN ftb_attendance_self_approve_user asau ON asa.F_Id = asau.F_Self_Id
WHERE asa.F_Status = 1 AND asau.F_User_Id = #{userId}
<![CDATA[
AND DATE_FORMAT(F_Start_Time,'%Y-%m-%d %H:%i') < DATE_FORMAT(#{endTime},'%Y-%m-%d %H:%i')
AND DATE_FORMAT(F_End_Time,'%Y-%m-%d %H:%i') > DATE_FORMAT(#{startTime},'%Y-%m-%d %H:%i')
]]>
</select>
<!-- <delete id="deleteByPrimaryKey" parameterType="java.lang.String" >-->
<!-- delete from ftb_attendance_self_approve-->
<!-- where F_Id = #{fId,jdbcType=VARCHAR}-->
<!-- </delete>-->
<!-- <insert id="insert" parameterType="com.shs.cts.util.domain.po.experience.AttendanceSelfApprove" >-->
<!-- insert into ftb_attendance_self_approve (F_Id, F_Group_Id, F_Self_Group_Id, -->
<!-- F_User_Id, F_Start_Time, F_End_Time, -->
<!-- F_Departure_Time, f_flowtaskid, f_flowid, -->
<!-- F_UniqueId, F_TenantId)-->
<!-- values (#{fId,jdbcType=VARCHAR}, #{fGroupId,jdbcType=VARCHAR}, #{fSelfGroupId,jdbcType=VARCHAR}, -->
<!-- #{fUserId,jdbcType=VARCHAR}, #{fStartTime,jdbcType=TIMESTAMP}, #{fEndTime,jdbcType=TIMESTAMP}, -->
<!-- #{fDepartureTime,jdbcType=TIMESTAMP}, #{fFlowtaskid,jdbcType=VARCHAR}, #{fFlowid,jdbcType=VARCHAR}, -->
<!-- #{fUniqueid,jdbcType=VARCHAR}, #{fTenantid,jdbcType=VARCHAR})-->
<!-- </insert>-->
<!-- -->
<!-- <update id="updateByPrimaryKey" parameterType="com.shs.cts.util.domain.po.experience.AttendanceSelfApprove" >-->
<!-- update ftb_attendance_self_approve-->
<!-- set F_Group_Id = #{fGroupId,jdbcType=VARCHAR},-->
<!-- F_Self_Group_Id = #{fSelfGroupId,jdbcType=VARCHAR},-->
<!-- F_User_Id = #{fUserId,jdbcType=VARCHAR},-->
<!-- F_Start_Time = #{fStartTime,jdbcType=TIMESTAMP},-->
<!-- F_End_Time = #{fEndTime,jdbcType=TIMESTAMP},-->
<!-- F_Departure_Time = #{fDepartureTime,jdbcType=TIMESTAMP},-->
<!-- f_flowtaskid = #{fFlowtaskid,jdbcType=VARCHAR},-->
<!-- f_flowid = #{fFlowid,jdbcType=VARCHAR},-->
<!-- F_UniqueId = #{fUniqueid,jdbcType=VARCHAR},-->
<!-- F_TenantId = #{fTenantid,jdbcType=VARCHAR}-->
<!-- where F_Id = #{fId,jdbcType=VARCHAR}-->
<!-- </update>-->
</mapper>

View File

@@ -0,0 +1,101 @@
<?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="jnpf.attendance.mapper.AttendanceShiftNameSettingMapper" >
<!-- 新增班次名称信息-->
<insert id="save">
INSERT INTO ftb_attendance_shift_name
(F_Id,F_Name,F_ShortName,F_Colour,F_Type,F_GroupId,F_SettingId,F_CreatorUserId )
VALUES
(#{dto.id},#{dto.name},#{dto.shortName},#{dto.colour},#{dto.shiftType},#{dto.groupId},#{dto.settingId},#{dto.userId})
</insert>
<!-- 保存班次名称信息-->
<update id="update">
update ftb_attendance_shift_name
set F_Name = #{dto.name},
F_ShortName = #{dto.shortName},
F_Colour = #{dto.colour},
F_Type = #{dto.shiftType},
F_GroupId = #{dto.groupId},
F_SettingId = #{dto.settingId},
F_LastModifyUserId = #{dto.userId},
F_LastModifyTime = now()
where F_Id = #{dto.id}
</update>
<!-- 校验班次名称是否重复-->
<select id="checkName" resultType="java.lang.Integer">
SELECT COUNT(0) FROM ftb_attendance_shift_name
WHERE F_GroupId = #{dto.groupId} AND F_DeleteMark = 0 AND F_Name = #{dto.name}
<if test="dto.id != null and dto.id !=''">
AND F_Id != #{dto.id}
</if>
</select>
<!-- 获取班次名称信息详情-->
<select id="getDetail" resultType="jnpf.model.attendance.vo.attendance.ShiftNameVo">
select F_Id id,F_Name name,F_ShortName shortName,F_Colour colour,F_Type type,F_GroupId groupId,F_SettingId settingId, F_Enable enable
from ftb_attendance_shift_name
where F_Id = #{id} AND F_DeleteMark = 0
</select>
<!-- 删除原来的关联班次信息-->
<delete id="deletePeriodByShiftId">
DELETE FROM ftb_attendance_shift_setting_period
WHERE F_ShiftId = #{id}
</delete>
<!-- 删除班次-->
<update id="delete">
update ftb_attendance_shift_name
set F_DeleteMark = 1,
F_DeleteUserId = #{userId},
F_LastModifyTime = now()
where F_Id = #{shiftNameId}
</update>
<!-- 修改班次状态-->
<update id="updateEnable">
update ftb_attendance_shift_name
set F_Enable = #{enable},
F_LastModifyUserId = #{userId},
F_LastModifyTime = now()
where F_Id = #{shiftNameId}
</update>
<!-- 修改排班基础配置-->
<update id="updateByGroupId">
update ftb_attendance_shift_setting
set F_SystemType = #{systemType},
F_LastModifyUserId = #{userId},
F_LastModifyTime = now()
where F_GroupId = #{groupId}
</update>
<!-- 获取固定排班班次详情-->
<select id="getFixedClass" resultType="jnpf.model.attendance.vo.attendance.ShiftNameVo">
SELECT sn.F_Id id ,sn.F_Name `name` ,sn.F_ShortName shortName ,sn.F_Colour colour ,fc.F_ShiftType fixedType ,sn.F_Type shiftType ,fc.F_Num num,fc.F_Type type , fc.F_Sort sort
FROM ftb_attendance_fixed_class fc
LEFT JOIN ftb_attendance_shift_name sn ON sn.F_Id = fc.F_ShiftNameId
LEFT JOIN ftb_attendance_shift_setting ss ON ss.F_GroupId = fc.F_GroupId
WHERE ss.F_GroupId = #{groupId}
</select>
<!-- 新增固定排班班次详情-->
<insert id="saveFixedClass">
INSERT INTO ftb_attendance_fixed_class (F_Id,F_GroupId,F_Num,F_ShiftNameId,F_ShiftType,F_Sort,F_Type)
VALUES
<foreach collection="fixedClassDtos" item="item" separator=",">
(#{item.id},#{item.groupId},#{item.num},#{item.shiftNameId},#{item.shiftType},#{item.sort},#{item.type})
</foreach>
</insert>
<!-- 删除固定排班信息-->
<select id="getListByGroupId" resultType="jnpf.model.attendance.vo.attendance.ShiftNameListVo">
SELECT F_Id id,F_Name `name`,F_ShortName shortName,F_Colour colour,F_Type shiftType,F_Enable `enable`
FROM ftb_attendance_shift_name
WHERE F_GroupId = #{queryDto.groupId} AND F_DeleteMark = 0
<if test="queryDto.enable != null ">
AND F_Enable = #{queryDto.enable}
</if>
ORDER BY F_CreatorTime DESC
</select>
<!-- 获取考勤组班次列表-->
<delete id="deleteFixedClass">
DELETE FROM ftb_attendance_fixed_class
WHERE F_GroupId = #{settingId}
</delete>
</mapper>

View File

@@ -0,0 +1,46 @@
<?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="jnpf.attendance.mapper.AttendanceUserBalanceMapper">
<insert id="batchAddBalanceDetail">
insert into ftb_attendance_user_balance_detail
(F_Id,F_UserId,F_ObjectId,F_Content,F_Quota)
values
<foreach collection="list" item="item" separator=",">
(#{item.id},#{item.userId},#{item.objectId},#{item.content},#{item.quota})
</foreach>
</insert>
<select id="getDetail" resultType="jnpf.model.attendance.vo.attendance.AttendanceUserBalanceDetailVo">
select
F_Id as id,
F_ObjectId as objectId,
F_Content as content,
ROUND(F_Quota,2) as quota,
F_CreatorTime as creatorTime
from ftb_attendance_user_balance_detail
where F_UserId = #{userId}
<if test="id != null and '' != id">
and F_ObjectId = #{id}
</if>
<if test="id == null or '' == id">
and F_ObjectId is null
</if>
ORDER BY F_CreatorTime DESC
</select>
<select id="getTotalBalance" resultType="java.math.BigDecimal">
SELECT SUM(F_Balance) as totalBalance
FROM ftb_attendance_balance_record
WHERE F_User_Id = #{userId} AND F_State = 0 AND F_Over = 0 AND F_DeleteMark = 0
<if test="balanceId != null">
AND (( F_Object_Id = #{balanceId} AND F_Type = 2)
<if test="isRetirementLeave">
OR(F_Type = 3 )
</if>
)
</if>
<if test="balanceId == null">
and F_Type = 3
</if>
</select>
</mapper>

View File

@@ -0,0 +1,4 @@
<?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="jnpf.attendance.mapper.AttendanceUserBalanceRecordMapper" >
</mapper>

View File

@@ -0,0 +1,21 @@
<?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="jnpf.attendance.mapper.AttendanceUserConfigMapper" >
<!-- 新增用户配置-->
<insert id="addUserConfig">
insert into ftb_attence_user_config (F_Id, F_User_Id , F_User_Config )
values (#{userConfigVo.id},#{userId},#{userConfigVo.configJson})
</insert>
<!-- 更新用户配置-->
<update id="updateUSerConfig">
update ftb_attence_user_config
set F_User_Config = #{configJson}
where F_User_Id = #{userId}
</update>
<!-- 获取用户配置-->
<select id="getUserConfig" resultType="jnpf.model.attendance.vo.attendance.UserConfigVo">
SELECT F_User_Config configJson
FROM ftb_attence_user_config
WHERE F_User_Id = #{userId}
</select>
</mapper>

View File

@@ -0,0 +1,40 @@
<?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="jnpf.attendance.mapper.AttendanceUserFaceMapper" >
<!-- 人脸列表 -->
<select id="getUserFaceList" resultType="jnpf.model.attendance.vo.UserFaceDetailVo">
select t.*, uf.F_Id as faceId, uf.F_FaceDataThumbnail as faceDataThumbnail, uf.F_SyncStatus syncStatus, uf.F_LastModifyTime as creatorTime
from (
values
<foreach collection="list" item="item" separator=",">
row(#{item.userId}, #{item.realName}, #{item.groupName}, #{item.bindingMachine}, #{item.orgName}, #{item.positionName}, #{item.workStatus})
</foreach>
) as t(userId, userName, groupName, bindingMachine, orgName, postName, workStatus)
left join ftb_attendance_user_face uf on t.userId = uf.F_UserId and uf.F_DeleteMark = 0
where 1 = 1
<if test="null != queryDto.userName and '' != queryDto.userName">
and instr(t.userName, #{queryDto.userName}) > 0
</if>
<if test="null != queryDto.setCheck and 1 == queryDto.setCheck">
and uf.F_FaceData is not null
</if>
<if test="null != queryDto.setCheck and 2 == queryDto.setCheck">
and uf.F_FaceData is null
</if>
<if test="0 == queryDto.syncStatus or 1 == queryDto.syncStatus">
and uf.F_SyncStatus = #{queryDto.syncStatus}
</if>
order by uf.F_LastModifyTime desc
</select>
<select id="getNoThumbnail" resultType="jnpf.model.attendance.vo.UserFaceDetailVo">
SELECT F_Id faceId , F_FaceData faceData
FROM ftb_attendance_user_face
WHERE F_DeleteMark = 0 AND F_FaceDataThumbnail IS NULL
</select>
<update id="updateUserFaceThumbnail">
UPDATE ftb_attendance_user_face
SET F_FaceDataThumbnail = #{userFaceDetailVos.faceDataThumbnail}
WHERE F_Id = #{userFaceDetailVos.faceId}
</update>
</mapper>

View File

@@ -0,0 +1,77 @@
<?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="jnpf.attendance.mapper.AttendanceUserSettingMapper" >
<!-- 更新配置-->
<update id="update">
UPDATE ftb_attendance_app_user_setting
SET F_Status = #{attendanceAppUserSettingDto.status},
F_Value = #{attendanceAppUserSettingDto.value}
WHERE F_Id = #{attendanceAppUserSettingDto.id}
</update>
<!-- 查询是否重复-->
<select id="getDetail" resultType="java.lang.String">
SELECT F_Id
FROM ftb_attendance_app_user_setting
WHERE F_Type = #{attendanceAppUserSettingDto.type}
<if test="null != attendanceAppUserSettingDto.type and attendanceAppUserSettingDto.type != 3">
AND F_AssociationId = #{attendanceAppUserSettingDto.associationId}
</if>
<if test="null != attendanceAppUserSettingDto.type and attendanceAppUserSettingDto.type != 2">
AND F_SettingId = #{attendanceAppUserSettingDto.settingId}
</if>
</select>
<!-- 根据父级Id查询设置列表-->
<select id="getSettingList" resultType="jnpf.model.attendance.vo.UserSettingVo">
SELECT F_Id settingId,F_SettingName settingName,F_Code code ,F_Sort sort , F_PId pId ,F_SystemType type
FROM ftb_attendance_app_setting
WHERE F_SystemType = #{type}
<if test="null != type and type == 1">
AND F_PId = #{pId}
</if>
ORDER BY F_Sort ASC
</select>
<!-- 查询用户设置/考勤组设置-->
<select id="getUserSetting" resultType="jnpf.model.attendance.vo.UserSettingVo">
SELECT s.F_Id settingId,s.F_SettingName settingName ,s.F_Code code ,us.F_Status `status`,us.F_Value `value`, us.F_Id id
FROM ftb_attendance_app_setting s
LEFT JOIN ftb_attendance_app_user_setting us ON s.F_Id = us.F_SettingId
WHERE F_Type = #{appUserSettingQueryDto.type} AND s.F_SystemType = #{appUserSettingQueryDto.type}
<if test="null != appUserSettingQueryDto.PId and '' != appUserSettingQueryDto.PId ">
AND s.F_PId = #{appUserSettingQueryDto.PId}
</if>
<if test="null != appUserSettingQueryDto.associationId and '' != appUserSettingQueryDto.associationId">
AND us.F_AssociationId = #{appUserSettingQueryDto.associationId}
</if>
</select>
<!-- 批量获取考勤组设置-->
<select id="getGroupSetting" resultType="jnpf.model.attendance.vo.UserSettingVo">
SELECT F_Status `status`,F_Value `value`, F_AssociationId associationId ,F_Id id
FROM ftb_attendance_app_user_setting
WHERE F_Type = #{type} AND F_AssociationId IN
<foreach collection="groupIds" item="value" separator="," open="(" close=")">
#{value}
</foreach>
</select>
<!-- 根据用户编码及用户批量获取设置-->
<select id="getUserSettingByCode" resultType="jnpf.model.attendance.vo.UserSettingVo">
SELECT s.F_Code code ,us.F_Status `status`,us.F_Value `value` ,us.F_AssociationId associationId
FROM ftb_attendance_app_user_setting us
LEFT JOIN ftb_attendance_app_setting s ON s.F_Id = us.F_SettingId
WHERE s.F_Code IN
<foreach collection="code" item="value" separator="," open="(" close=")">
#{value}
</foreach>
<if test="null != associationId and associationId.size > 0">
AND us.F_AssociationId IN
<foreach collection="associationId" item="value1" separator="," open="(" close=")">
#{value1}
</foreach>
</if>
AND F_Type = #{type}
</select>
<!-- 新增配置-->
<insert id="add">
INSERT INTO ftb_attendance_app_user_setting (F_Id,F_SettingId,F_Type,F_AssociationId,F_Status,F_Value)
VALUES(#{attendanceAppUserSettingDto.id},#{attendanceAppUserSettingDto.settingId},#{attendanceAppUserSettingDto.type},#{attendanceAppUserSettingDto.associationId},#{attendanceAppUserSettingDto.status},#{attendanceAppUserSettingDto.value})
</insert>
</mapper>

View File

@@ -0,0 +1,5 @@
<?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="jnpf.attendance.mapper.ClockInResultMapper" >
</mapper>

View File

@@ -0,0 +1,5 @@
<?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="jnpf.attendance.mapper.ClockInResultV2Mapper" >
</mapper>

View File

@@ -0,0 +1,24 @@
<?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="jnpf.attendance.mapper.DailyRuleChangeMapper" >
<!-- 批量保存变更 -->
<insert id="saveRecordBatch">
INSERT INTO ftb_attendance_daily_rule_change (F_Id, F_GroupId, F_UserId, F_Day, F_TenantId)
VALUES
<foreach collection="list" item="item" separator=",">
(#{item.id}, #{item.groupId}, #{item.userId}, #{item.day}, #{item.tenantId})
</foreach>
ON DUPLICATE KEY UPDATE
F_LastModifyTime = NOW()
</insert>
<!-- 删除小于当前时间的记录 -->
<delete id="removeBatch">
DELETE FROM ftb_attendance_daily_rule_change
WHERE (
<foreach collection="list" item="item" separator=" OR ">
(F_GroupId = #{item.groupId} AND F_UserId = #{item.userId} AND F_Day = #{item.day} AND F_LastModifyTime &lt; #{day})
</foreach>
)
</delete>
</mapper>

View File

@@ -0,0 +1,5 @@
<?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="jnpf.attendance.mapper.DailyRuleMapper" >
</mapper>

View File

@@ -0,0 +1,38 @@
<?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="jnpf.attendance.mapper.EnableBalanceMapper">
<select id="getOvertimeSalary" resultType="jnpf.model.attendance.vo.attendance.OvertimeSalaryHoursVo">
SELECT
F_UserId userId,
SUM(CASE WHEN F_OvertimeType = 1 THEN F_Balance ELSE 0 END) AS weekdayOvertimeSalaryDays,
SUM(CASE WHEN F_OvertimeType = 3 THEN F_Balance ELSE 0 END) AS holidaysOvertimeSalaryDays,
SUM(CASE WHEN F_OvertimeType = 2 THEN F_Balance ELSE 0 END) AS publicHolidaysOvertimeSalaryDays
FROM ftb_attendance_enable_balance
WHERE F_UserId IN
<foreach item="item" collection="userIds" separator="," open="(" close=")" index="">
#{item}
</foreach>
<if test="startDate != null and endDate != null ">
and F_Day between #{startDate} and #{endDate}
</if>
GROUP BY F_UserId
</select>
<select id="getOvertimeSalaryJson" resultType="jnpf.model.attendance.vo.attendance.OvertimeSalaryHoursJsonVo">
SELECT
F_UserId userId,
F_Balance AS holidaysOvertimeSalaryDays,
F_FestivalStr festivalStr
FROM ftb_attendance_enable_balance
WHERE
F_OvertimeType = 3
and F_FestivalStr is not null
and F_UserId IN
<foreach item="item" collection="userIds" separator="," open="(" close=")" index="">
#{item}
</foreach>
<if test="startDate != null and endDate != null ">
and F_Day between #{startDate} and #{endDate}
</if>
</select>
</mapper>

View File

@@ -0,0 +1,27 @@
<?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="jnpf.attendance.mapper.FtbAttendanceFaceChangeLogMapper" >
<!-- 变动记录列表 -->
<select id="getChangeLogList" resultType="jnpf.model.attendance.vo.ChangeLogVo">
select F_Id id, F_CreatorUserId creatorUserId, F_FaceId faceId, F_UserId userId, F_Content content, F_CreatorTime creatorTime
from ftb_attendance_face_change_log where 1 = 1
<if test="null != startDate and '' != startDate">
<![CDATA[
and DATE_FORMAT(F_CreatorTime, '%Y-%m-%d') >= DATE_FORMAT(#{startDate}, '%Y-%m-%d')
]]>
</if>
<if test="null != endDate and '' != endDate">
<![CDATA[
and DATE_FORMAT(F_CreatorTime, '%Y-%m-%d') <= DATE_FORMAT(#{endDate}, '%Y-%m-%d')
]]>
</if>
<if test="null != list and list.size > 0">
and F_UserId in
<foreach collection="list" index="index" item="item" open="(" separator="," close=")">
#{item}
</foreach>
</if>
order by F_CreatorTime desc
</select>
</mapper>

View File

@@ -0,0 +1,21 @@
<?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="jnpf.attendance.mapper.FtbScheduleGroupDrawingParamMapper">
<select id="selectLineRuleDtoByGroupId" resultType="jnpf.model.attendance.dto.scheduling.LineSchedulingRuleDto">
SELECT
t.F_Id AS id,
t.F_MaxDailySegmentsEnabled AS maxDailySegmentsEnabled,
t.F_MaxDailySegmentsValue AS maxDailySegmentsValue,
t.F_MaxDailySegmentsPriority AS maxDailySegmentsPriority,
t.F_MaxSingleSegmentHoursEnabled AS maxSingleSegmentHoursEnabled,
t.F_MaxSingleSegmentHoursValue AS maxSingleSegmentHoursValue,
t.F_MaxSingleSegmentHoursPriority AS maxSingleSegmentHoursPriority,
t.F_MinSingleSegmentHoursEnabled AS minSingleSegmentHoursEnabled,
t.F_MinSingleSegmentHoursValue AS minSingleSegmentHoursValue,
t.F_MinSingleSegmentHoursPriority AS minSingleSegmentHoursPriority
FROM ftb_attendance_group_drawing_param t
WHERE t.F_GroupId = #{groupId}
LIMIT 1
</select>
</mapper>

View File

@@ -0,0 +1,27 @@
<?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="jnpf.attendance.mapper.FtbScheduleGroupFixedParamMapper">
<select id="selectFixedRuleDtoByGroupId" resultType="jnpf.model.attendance.dto.scheduling.FixedSchedulingRuleDto">
SELECT
t.F_Id AS id,
t.F_DailyWorkHoursEnabled AS dailyWorkHoursEnabled,
t.F_DailyWorkHoursValue AS dailyWorkHoursValue,
t.F_DailyWorkHoursPriority AS dailyWorkHoursPriority,
t.F_ConsecutiveWorkDaysEnabled AS consecutiveWorkDaysEnabled,
t.F_ConsecutiveWorkDaysValue AS consecutiveWorkDaysValue,
t.F_ConsecutiveWorkDaysPriority AS consecutiveWorkDaysPriority,
t.F_WeeklyWorkDaysEnabled AS weeklyWorkDaysEnabled,
t.F_WeeklyWorkDaysValue AS weeklyWorkDaysValue,
t.F_WeeklyWorkDaysPriority AS weeklyWorkDaysPriority,
t.F_WeeklyWorkHoursEnabled AS weeklyWorkHoursEnabled,
t.F_WeeklyWorkHoursValue AS weeklyWorkHoursValue,
t.F_WeeklyWorkHoursPriority AS weeklyWorkHoursPriority,
t.F_MinRestBetweenShiftsEnabled AS minRestBetweenShiftsEnabled,
t.F_MinRestBetweenShiftsValue AS minRestBetweenShiftsValue,
t.F_MinRestBetweenShiftsPriority AS minRestBetweenShiftsPriority
FROM ftb_attendance_group_fixed_param t
WHERE t.F_GroupId = #{groupId}
LIMIT 1
</select>
</mapper>

View File

@@ -0,0 +1,27 @@
<?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="jnpf.attendance.mapper.InitializationMapper" >
<!-- 初始化存休表-->
<delete id="truncatStorageRest">
delete FROM ftb_attendance_storage_rest
</delete>
<!-- 获取所有的用户劵逻辑-->
<select id="getBalanceRecord" resultType="jnpf.model.attendance.vo.AttendanceBalanceRecordVo">
SELECT F_Id id, F_Name `name`, F_User_Id userId, F_Balance balance, F_Total total, F_Unit unit, IFNULL(F_Expire_Time,DATE_FORMAT('2999-1-1','%Y-%m-%d')) expireTime, F_Grant_Way grantWay,
F_State `state`, F_Over `over`, F_Paid paid, F_CreatorUserId creatoruserid, F_CreatorTime creatortime ,DATE_FORMAT(F_CreatorTime, '%Y-%m') creatorTimeStr
FROM ftb_attendance_balance_record
</select>
<!-- 获取所有的用户劵逻辑-->
<select id="getAllBalanceUseRecord" resultType="jnpf.model.attendance.vo.attendance.BalanceUseRecordVo">
SELECT
F_Balance_Id balanceId,
F_Quota quota,
F_Unit unit,
F_Start_Time startTime,
F_End_Time endTime,
F_CreatorTime creatorTime
FROM ftb_attendance_balance_use_record
</select>
</mapper>

View File

@@ -0,0 +1,56 @@
<?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="jnpf.attendance.mapper.OvertimeRuleMapper">
<!-- 查询加班规则列表 -->
<select id="selectOvertimeRulePage" resultType="jnpf.model.attendance.vo.attendance.OvertimeRulePageVo">
SELECT
r.F_Id AS id, r.F_RuleName AS ruleName, r.F_Enabled AS enabled,
COALESCE(d.workRule, 0) AS workRule,
COALESCE(d.restRule, 0) AS restRule,
COALESCE(d.holidayRule, 0) AS holidayRule,
CASE
WHEN s.allCount > 0 THEN '全部'
ELSE CONCAT(
CASE
WHEN COALESCE(s.orgCount, 0) > 0
THEN CONCAT('【', s.orgCount, '个组织】')
ELSE ''
END,
CASE
WHEN COALESCE(s.orgCount, 0) > 0 AND COALESCE(s.userCount, 0) > 0
THEN '、'
ELSE ''
END,
CASE
WHEN COALESCE(s.userCount, 0) > 0
THEN CONCAT('【', s.userCount, '位成员】')
ELSE ''
END
)
END AS scope
FROM ftb_attendance_overtime_rule r
LEFT JOIN (
SELECT
F_RuleId,
MAX(CASE WHEN F_OvertimeType = 1 AND F_Enabled = 1 THEN F_CalcMethod ELSE 0 END) AS workRule,
MAX(CASE WHEN F_OvertimeType = 2 AND F_Enabled = 1 THEN F_CalcMethod ELSE 0 END) AS restRule,
MAX(CASE WHEN F_OvertimeType = 3 AND F_Enabled = 1 THEN F_CalcMethod ELSE 0 END) AS holidayRule
FROM ftb_attendance_overtime_rule_detail
GROUP BY F_RuleId
) d ON r.F_Id = d.F_RuleId
LEFT JOIN (
SELECT
F_RuleId,
SUM(CASE WHEN F_ScopeType = 3 THEN 1 ELSE 0 END) AS allCount,
SUM(CASE WHEN F_ScopeType = 2 THEN 1 ELSE 0 END) AS orgCount,
SUM(CASE WHEN F_ScopeType = 1 THEN 1 ELSE 0 END) AS userCount
FROM ftb_attendance_rule_scope
GROUP BY F_RuleId
) s ON r.F_Id = s.F_RuleId
WHERE r.F_DeleteMark = 0
<if test="null != ruleName and '' != ruleName">
AND INSTR(r.F_RuleName, #{ruleName}) > 0
</if>
</select>
</mapper>

View File

@@ -0,0 +1,124 @@
<?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="jnpf.attendance.mapper.PublicHolidayRulesMapper" >
<insert id="insert">
INSERT INTO ftb_attendance_public_holiday_rules (
F_Id, F_Name, F_Type, F_DayNum, F_TransformationType,
F_LifespanType, F_FixedDay, F_SpecifyDay, F_ScopeOfAdaptation,
F_State, F_CreatorTime, F_CreatorUserId, F_LastModifyTime, F_LastModifyUserId
)
VALUES (
#{publicHolidayRulesDto.id}, #{publicHolidayRulesDto.name}, #{publicHolidayRulesDto.type}, #{publicHolidayRulesDto.dayNum}, #{publicHolidayRulesDto.transformationType},
#{publicHolidayRulesDto.lifespanType}, #{publicHolidayRulesDto.fixedDay}, #{publicHolidayRulesDto.specifyDay}, #{publicHolidayRulesDto.scopeOfAdaptation},
0, now(), #{userId}, now(), #{userId}
)
</insert>
<update id="update">
UPDATE ftb_attendance_public_holiday_rules
SET
F_Name = #{publicHolidayRulesDto.name},
F_Type = #{publicHolidayRulesDto.type},
F_DayNum = #{publicHolidayRulesDto.dayNum},
F_TransformationType = #{publicHolidayRulesDto.transformationType},
F_LifespanType = #{publicHolidayRulesDto.lifespanType},
F_FixedDay = #{publicHolidayRulesDto.fixedDay},
F_SpecifyDay = #{publicHolidayRulesDto.specifyDay},
F_ScopeOfAdaptation = #{publicHolidayRulesDto.scopeOfAdaptation},
F_LastModifyTime = now(),
F_LastModifyUserId = #{userId}
WHERE F_Id = #{publicHolidayRulesDto.id}
</update>
<update id="updateState">
UPDATE ftb_attendance_public_holiday_rules
SET
F_State = #{state},
F_LastModifyTime = now(),
F_LastModifyUserId = #{userId}
WHERE F_Id = #{id}
</update>
<update id="updateScopeOfAdaptation">
UPDATE ftb_attendance_public_holiday_rules
SET F_ScopeOfAdaptation = -1
</update>
<delete id="deletePublicHolidayBalance">
DELETE FROM ftb_attendance_public_holiday_balance
WHERE F_YearMonth = #{yearMonth} AND F_UserId IN
<foreach collection="userIds" item="item" open="(" close=")" separator=",">
#{item}
</foreach>
</delete>
<select id="list" resultType="jnpf.model.attendance.vo.attendance.AttendancePublicHolidayRulesVo">
SELECT
F_Id AS id,
F_Name AS name,
F_Type AS type,
F_DayNum AS dayNum,
F_TransformationType AS transformationType,
F_ScopeOfAdaptation AS scopeOfAdaptation,
F_State AS state
FROM ftb_attendance_public_holiday_rules
WHERE 1=1
<if test="iText != null and iText != ''">
AND F_Name LIKE CONCAT('%',#{iText},'%')
</if>
ORDER BY F_LastModifyTime DESC
</select>
<select id="getBalanceList"
resultType="jnpf.model.attendance.vo.attendance.AttendancePublicHolidayBalance">
SELECT F_UserId userId, F_Total total
FROM ftb_attendance_public_holiday_balance
WHERE F_YearMonth = #{yearMonth} AND F_UserId IN
<foreach collection="userIds" item="item" open="(" close=")" separator=",">
#{item}
</foreach>
</select>
<select id="getPublicHolidayBalanceList"
resultType="jnpf.model.attendance.vo.attendance.AttendancePublicHolidayBalance">
SELECT F_UserId userId, F_YearMonth yearMonth, F_Balance balance, F_Total total ,F_TransformationType transformationType
FROM ftb_attendance_public_holiday_balance
WHERE F_YearMonth = #{yearMonth} AND F_UserId IN
<foreach collection="userIds" item="item" open="(" close=")" separator=",">
#{item}
</foreach>
</select>
<insert id="batchAddPublicHolidayBalance">
INSERT INTO ftb_attendance_public_holiday_balance (
F_Id, F_UserId, F_Balance, F_Total, F_YearMonth,F_TransformationType,F_AttendanceRatio
)
VALUES
<foreach collection="addList" item="item" separator=",">
(
#{item.id}, #{item.userId}, #{item.balance}, #{item.total}, #{yearMonth},#{item.transformationType},#{item.attendanceRatio}
)
</foreach>
</insert>
<select id="getPublicHolidayTransferList" resultType="jnpf.model.attendance.vo.attendance.PublicHolidayTransferListVo">
SELECT
F_UserId userId,
F_YearMonth yearMonth,
F_Balance surplusDays,
F_AttendanceRatio attendanceRatio
FROM ftb_attendance_public_holiday_balance
WHERE F_YearMonth = #{yearMonth}
AND F_TransformationType = 0
AND F_UserId IN
<foreach collection="userIds" item="item" open="(" close=")" separator=",">
#{item}
</foreach>
</select>
<select id="selectPublicHolidayBalanceList" resultType="java.lang.String">
SELECT F_UserId
FROM ftb_attendance_public_holiday_balance
WHERE F_YearMonth = #{yearMonth} AND F_UserId IN
<foreach collection="userIds" item="item" open="(" close=")" separator=",">
#{item}
</foreach>
</select>
</mapper>

View File

@@ -0,0 +1,74 @@
<?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="jnpf.attendance.mapper.RuleScopeMapper">
<!-- 查询用户生效中的规则 -->
<select id="selectUserEffectList" resultType="jnpf.entity.attendance.AttendanceRuleScope">
SELECT t.F_Id id, t.F_BizType bizType, t.F_RuleId ruleId, t.F_ScopeType scopeType, t.F_ScopeValue scopeValue, t.F_Priority priority
FROM (
SELECT *,
DENSE_RANK() OVER (ORDER BY F_ScopeType ASC) AS rn
FROM ftb_attendance_rule_scope
WHERE (F_ScopeType = 3
OR (F_ScopeType = 2 AND F_ScopeValue = #{organizeId})
OR (F_ScopeType = 1 AND F_ScopeValue = #{userId}))
<if test="null != bizType and '' != bizType">
AND F_BizType = #{bizType}
</if>
) t
WHERE t.rn = 1
</select>
<!-- 查询用户生效中的规则[批量] -->
<select id="selectUserEffectListBatch" resultType="jnpf.entity.attendance.AttendanceRuleScope">
SELECT * FROM (
SELECT
t.F_Id AS id,
t.F_BizType AS bizType,
t.F_RuleId AS ruleId,
t.F_ScopeType AS scopeType,
t.F_ScopeValue AS scopeValue,
t.F_Priority AS priority,
t.F_Expand AS expand,
uo.userId
<if test="1 == priority">
, ROW_NUMBER() OVER (PARTITION BY uo.userId,t.F_Expand ORDER BY t.F_ScopeType ASC) AS rn
</if>
FROM ftb_attendance_rule_scope t
INNER JOIN (
<foreach collection="list" item="item" separator="UNION ALL">
SELECT
#{item.userId} AS userId,
#{item.organizeId} AS organizeId
</foreach>
) AS uo
ON (t.F_ScopeType = 3)
OR (t.F_ScopeType = 2 AND t.F_ScopeValue = uo.organizeId)
OR (t.F_ScopeType = 1 AND t.F_ScopeValue = uo.userId)
<where>
<if test="null != bizType and '' != bizType">
t.F_BizType = #{bizType}
</if>
<if test="null != leaveTypeIds and leaveTypeIds.size>0">
and t.F_Expand in
<foreach collection="leaveTypeIds" item="item" open="(" close=")" separator=",">
#{item}
</foreach>
</if>
</where>
) tt
<if test="1 == priority">
WHERE tt.rn = 1
</if>
</select>
<select id="selectOrgEffectListBatch" resultType="jnpf.entity.attendance.AttendanceRuleScope">
SELECT
t.F_Id AS id,
t.F_BizType AS bizType,
t.F_RuleId AS ruleId,
t.F_ScopeType AS scopeType,
t.F_ScopeValue AS scopeValue
FROM ftb_attendance_rule_scope t
WHERE t.F_BizType = #{bizType} AND t.F_ScopeType = 2 AND t.F_ScopeValue = #{organizeId}
</select>
</mapper>

View File

@@ -0,0 +1,399 @@
<?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="jnpf.attendance.mapper.StatisticsMapper">
<!--查询用户/考勤组-排班、打卡、请假申请返回字段映射配置-->
<resultMap type="jnpf.model.attendance.model.SituationData" id="UserActualAttendDataMap">
<result property="groupId" column="F_GroupId"/>
<result property="groupName" column="F_GroupName"/>
<result property="userId" column="F_UserId"/>
<result property="ruleId" column="F_Id"/>
<result property="isAbsence" column="isAbsence"/>
<result property="attendanceType" column="F_AttendanceType"/>
<result property="applyViewEnable" column="F_ApplyViewEnable"/>
<result property="selfGroup" column="F_SelfGroup"/>
<result property="day" column="F_Day"/>
<result property="breakStartPoint" column="F_BreakStartPoint"/>
<result property="breakEndPoint" column="F_BreakEndPoint"/>
<result property="inPoint" column="F_InPoint"/>
<result property="outPoint" column="F_OutPoint"/>
<result property="validDuration" column="F_ValidDuration"/>
<result property="applyId" column="F_ApplyId"/>
<result property="leaveApproveId" column="leaveApproveId"/>
<result property="leaveTypeCode" column="F_LeaveTypeCode"/>
<result property="leaveType" column="leaveType"/>
<result property="unit" column="F_Unit"/>
<result property="startTime" column="F_StartTime"/>
<result property="endTime" column="F_EndTime"/>
<result property="applicationDuration" column="F_ApplicationDurationSecond"/>
<result property="unDeductedTime" column="F_UndeductedTimeSecond"/>
<result property="shiftInvolved" column="F_ShiftInvolved"/>
<result property="status" column="F_Status"/>
<result property="outLackPoint" column="F_OutLackPoint"/>
<!--主从关联查询配置子查询数据以b_、c_命名可查询出结果列表-->
<collection property="balanceRecordList" columnPrefix="b_"
resultMap="BalanceRecordMap">
</collection>
<collection property="clockInResultList" columnPrefix="c_"
resultMap="ClockInResultMap">
</collection>
</resultMap>
<!--券余额使用记录映射配置-->
<resultMap type="jnpf.model.attendance.model.BalanceRecord" id="BalanceRecordMap">
<result property="unit" column="F_Unit"/>
<result property="quota" column="F_Quota"/>
<result property="paid" column="F_Paid"/>
<result property="expireTime" column="F_Expire_Time"/>
</resultMap>
<!--打卡记录映射配置-->
<resultMap type="jnpf.model.attendance.model.ClockInResult" id="ClockInResultMap">
<result property="id" column="F_Id"/>
<result property="ruleId" column="F_RuleId"/>
<result property="userId" column="F_UserId"/>
<result property="effectiveTime" column="F_EffectiveTime"/>
<result property="clockInType" column="F_ClockInType"/>
<result property="clockInStatus" column="F_ClockInStatus"/>
<result property="clockInKind" column="F_ClockInKind"/>
<result property="repaired" column="F_Repaired"/>
<result property="approvalStatus" column="F_ApprovalStatus"/>
<result property="clockInTime" column="F_ClockInTime"/>
<result property="applyType" column="F_ApplyType"/>
<result property="applyId" column="F_ApplyId"/>
<result property="absence" column="F_Absence"/>
<result property="absenceLeader" column="F_AbsenceLeader"/>
<result property="restMinute" column="F_RestMinute"/>
<result property="abnormalMinute" column="F_AbnormalMinute"/>
<result property="deleteMark" column="F_DeleteMark"/>
</resultMap>
<resultMap type="jnpf.model.attendance.model.UserLeaveApprove" id="UserLeaveApproveDataMap">
<result property="id" column="F_Id"/>
<result property="userId" column="F_User_Id"/>
<result property="unit" column="F_Unit"/>
<result property="startTimeType" column="F_StartTimeType"/>
<result property="endTimeType" column="F_EndTimeType"/>
<result property="startTime" column="F_StartTime"/>
<result property="endTime" column="F_EndTime"/>
<result property="applicationDuration" column="F_ApplicationDurationSecond"/>
<result property="unDeductedTime" column="F_UndeductedTimeSecond"/>
<result property="applicationDurationDay" column="F_ApplicationDurationDay"/>
<result property="undeductedTimeDay" column="F_UndeductedTimeDay"/>
<result property="balanceStatus" column="F_Balance_Status"/>
<result property="paid" column="F_Paid"/>
<result property="noPaid" column="F_No_Paid"/>
<result property="shiftInvolved" column="F_ShiftInvolved"/>
<result property="leaveTypeCode" column="F_LeaveTypeCode"/>
<result property="leaveTypeName" column="F_LeaveTypeName"/>
<!--主从关联查询配置子查询数据以b_、c_命名可查询出结果列表-->
<collection property="balanceRecordList" columnPrefix="b_"
resultMap="BalanceRecordMap">
</collection>
</resultMap>
<!--加班返回实体-->
<resultMap type="jnpf.model.attendance.model.UserRuleRecord" id="UserRuleDataMap">
<result property="groupId" column="F_GroupId"/>
<result property="userId" column="F_UserId"/>
<result property="day" column="F_Day"/>
<result property="inPoint" column="F_InPoint"/>
<result property="outPoint" column="F_OutPoint"/>
<result property="attendanceType" column="F_AttendanceType"/>
<result property="applyViewEnable" column="F_ApplyViewEnable"/>
<result property="inStepOutType" column="F_InStepOutType"/>
<result property="outStepOutType" column="F_OutStepOutType"/>
<result property="selfGroup" column="F_SelfGroup"/>
<!--主从关联查询配置子查询数据以b_、c_命名可查询出结果列表-->
<collection property="clockInResultList" columnPrefix="b_"
resultMap="UserClockInResultMap">
</collection>
</resultMap>
<resultMap type="jnpf.model.attendance.model.ClockInResultRecordVo" id="UserClockInResultMap">
<result property="id" column="F_Id"/>
<result property="clockTime" column="F_ClockInTime"/>
<result property="effectiveTime" column="F_EffectiveTime"/>
<result property="abnormalSecond" column="F_AbnormalMinute"/>
<result property="clockInType" column="F_ClockInType"/>
<result property="clockInKind" column="F_ClockInKind"/>
<result property="clockInStatus" column="F_ClockInStatus"/>
<result property="approvalStatus" column="F_ApprovalStatus"/>
<result property="repaired" column="F_Repaired"/>
<result property="absence" column="F_Absence"/>
<result property="absenceLeader" column="F_AbsenceLeader"/>
<result property="deleteMark" column="F_DeleteMark"/>
</resultMap>
<!--web列表筛选条件查询-->
<!--查询用户/考勤组-排班、打卡、请假申请信息筛选条件-->
<sql id="USER_ACTUALATTEND_DATA_WHERE">
<where>
fadr.F_ApplyViewEnable in (1,3,9,10)
AND fadr.F_DeleteMark = 0
AND fag.F_DeleteMark = 0
<if test="userIds!= null and userIds.size()>0">
and fadr.F_UserId in
<foreach collection="userIds" item="item" open="(" separator="," close=")">
#{item}
</foreach>
</if>
<if test="groupIds!= null and groupIds.size()>0">
and fadr.F_GroupId in
<foreach collection="groupIds" item="item" open="(" separator="," close=")">
#{item}
</foreach>
</if>
<if test="attendanceTypeList!= null and attendanceTypeList.size()>0">
and fadr.F_AttendanceType not in
<foreach collection="attendanceTypeList" item="item" open="(" separator="," close=")">
#{item}
</foreach>
</if>
<if test="dateRangeDto.startDate != null and dateRangeDto.endDate != ''">
AND fadr.F_Day BETWEEN #{dateRangeDto.startDate} AND #{dateRangeDto.endDate}
</if>
</where>
</sql>
<sql id="USER_ACTUALATTEND_DATA_FIELD">
fadr.F_GroupId,
fag.F_GroupName,
fadr.F_Id,
fadr.F_UserId,
fadr.F_ApplyViewEnable,
fadr.F_LateEnable,
fadr.F_EarlyEnable,
fadr.F_BreakEnable,
fadr.F_SelfGroup,
fadr.F_Day,
fadr.F_BreakStartPoint,
fadr.F_BreakEndPoint,
fadr.F_InPoint,
fadr.F_OutPoint,
fadr.F_ValidDuration,
fadr.F_ApplyId,
fadr.F_DeleteMark,
fala.F_Id leaveApproveId,
fals.F_Id F_LeaveTypeCode,
fals.F_Name F_LeaveTypeName,
fals.F_Type leaveType,
fala.F_Unit,
fala.F_StartTime,
fala.F_EndTime,
fala.F_ApplicationDurationSecond,
fala.F_UndeductedTimeSecond,
fala.F_ShiftInvolved,
fala.F_Status,
fabur.F_Unit b_F_Unit,
fabur.F_Quota b_F_Quota,
fabr.F_Paid b_F_Paid,
facir.F_Id c_F_Id,
facir.F_RuleId c_F_RuleId,
facir.F_UserId c_F_UserId,
facir.F_EffectiveTime c_F_EffectiveTime,
facir.F_ClockInType c_F_ClockInType,
facir.F_ClockInStatus c_F_ClockInStatus,
facir.F_ClockInKind c_F_ClockInKind,
facir.F_Absence c_F_Absence,
facir.F_Repaired c_F_Repaired,
faci.F_ClockInTime c_F_ClockInTime,
faci.F_ApprovalStatus c_F_ApprovalStatus,
facir.F_ApplyType c_F_ApplyType,
facir.F_ApplyId c_F_ApplyId,
facir.F_RestMinute c_F_RestMinute,
facir.F_AbnormalMinute c_F_AbnormalMinute,
facir.F_AbsenceLeader c_F_AbsenceLeader,
facir.F_DeleteMark c_F_DeleteMark
</sql>
<!-- 查询用户关联的考勤组信息 -->
<select id="getUserAssociationGroupDataList"
resultType="jnpf.model.attendance.model.UserAssociationGroupData">
SELECT
fagu.F_UserId userId,
fagu.F_UserGroupType type,
fagu.F_TimeJson timeJson,
fagu.F_GroupId groupId,
fagu.F_RemoveTime removeTime,
fag.F_GroupName groupName
FROM
ftb_attendance_group_user fagu
LEFT JOIN ftb_attendance_group fag ON fagu.F_GroupId = fag.F_Id
<where>
fag.F_DeleteMark = 0
and fagu.F_DeleteMark = 0
<if test="groupIds!= null and groupIds.size()>0">
and fagu.F_GroupId in
<foreach collection="groupIds" item="item" open="(" separator="," close=")">
#{item}
</foreach>
</if>
<if test="userIds!= null and userIds.size()>0">
and fagu.F_UserId in
<foreach collection="userIds" item="item" open="(" separator="," close=")">
#{item}
</foreach>
</if>
AND fagu.F_UserGroupType in(1,2)
</where>
GROUP BY fagu.F_UserId,fagu.F_UserGroupType
</select>
<!-- 查询被借调记录-->
<select id="getUserSecondRecordList" resultType="jnpf.model.attendance.model.UserSecondRecord">
SELECT
F_Id id,
F_UserId userId,
F_GroupId groupId,
F_TimeJson timeJson
FROM ftb_attendance_group_user
<where>
F_UserGroupType = 2
<if test="userIds!= null and userIds.size()>0">
and F_UserId in
<foreach collection="userIds" item="item" open="(" separator="," close=")">
#{item}
</foreach>
</if>
<if test="groupIds!= null and groupIds.size()>0">
and F_GroupId in
<foreach collection="groupIds" item="item" open="(" separator="," close=")">
#{item}
</foreach>
</if>
</where>
GROUP BY F_UserId
</select>
<!--获取用户打卡结果数据-->
<select id="getUserClockInResultList" resultType="jnpf.model.attendance.model.ClockInResultRecord">
select
facir.F_Id id,
fadr.F_Day day,
fadr.F_GroupId groupId,
fadr.F_UserId userId,
faci.F_ClockInTime clockTime,
facir.F_EffectiveTime effectiveTime,
facir.F_AbnormalMinute abnormalSecond,
facir.F_ClockInType clockInType,
facir.F_ClockInKind clockInKind,
IF(facir.F_ApplyId is null,0,1) approvalStatus,
facir.F_Repaired repaired,
fadr.F_InPoint inPoint,
fadr.F_OutPoint outPoint,
facir.F_Absence absence,
facir.F_AbsenceLeader absenceLeader
FROM ftb_attendance_daily_rule fadr
LEFT JOIN ftb_attendance_clock_in_result facir ON facir.F_RuleId = fadr.F_Id
LEFT JOIN ftb_attendance_clock_in faci ON faci.F_Id = facir.F_ClockInId
<where>
and fadr.F_DeleteMark = 0
and facir.F_DeleteMark = 0
<if test="attendanceTypeList!= null and attendanceTypeList.size()>0">
and fadr.F_AttendanceType in
<foreach collection="attendanceTypeList" item="item" open="(" separator="," close=")">
#{item}
</foreach>
</if>
<if test="userIds!= null and userIds.size()>0">
and fadr.F_UserId in
<foreach collection="userIds" item="item" open="(" separator="," close=")">
#{item}
</foreach>
</if>
<if test="groupIds!= null and groupIds.size()>0">
and fadr.F_GroupId in
<foreach collection="groupIds" item="item" open="(" separator="," close=")">
#{item}
</foreach>
</if>
<if test="dateRangeDto.startDate != null and dateRangeDto.endDate != ''">
AND fadr.F_Day BETWEEN #{dateRangeDto.startDate} AND #{dateRangeDto.endDate}
</if>
<if test="clockInStatus != null">
and facir.F_ClockInStatus = #{clockInStatus}
</if>
<if test="absenceStatus != null">
and facir.F_Absence = #{absenceStatus}
</if>
<if test="repairedStatus != null">
and facir.F_Repaired = #{repairedStatus}
</if>
<if test="clockInKind != null">
and facir.F_ClockInKind = #{clockInKind}
</if>
</where>
</select>
<!--获取用户加班数据-->
<select id="getUserRuleRecordList" resultMap="UserRuleDataMap">
select
fadr.F_GroupId,
fadr.F_UserId,
fadr.F_Day,
fadr.F_InPoint,
fadr.F_OutPoint,
fadr.F_AttendanceType,
fadr.F_ApplyViewEnable,
fadr.F_InStepOutType,
fadr.F_OutStepOutType,
fadr.F_SelfGroup,
facir.F_Id b_F_Id,
faci.F_ClockInTime b_F_ClockInTime,
facir.F_EffectiveTime b_F_EffectiveTime,
facir.F_AbnormalMinute b_F_AbnormalMinute,
facir.F_ClockInType b_F_ClockInType,
facir.F_ClockInKind b_F_ClockInKind,
facir.F_ClockInStatus b_F_ClockInStatus,
IF(facir.F_ApplyId is null,0,1) b_F_ApprovalStatus,
facir.F_Repaired b_F_Repaired,
facir.F_Absence b_F_Absence,
facir.F_AbsenceLeader b_F_AbsenceLeader,
facir.F_DeleteMark b_F_DeleteMark
FROM ftb_attendance_daily_rule fadr
LEFT JOIN ftb_attendance_clock_in_result facir ON facir.F_RuleId = fadr.F_Id
LEFT JOIN ftb_attendance_clock_in faci ON faci.F_Id = facir.F_ClockInId
<where>
and fadr.F_DeleteMark = 0
and fadr.F_ApplyViewEnable in (1,3,9,10)
<if test="userIds!= null and userIds.size()>0">
and fadr.F_UserId in
<foreach collection="userIds" item="item" open="(" separator="," close=")">
#{item}
</foreach>
</if>
<if test="groupIdList!= null and groupIdList.size()>0">
and fadr.F_GroupId in
<foreach collection="groupIdList" item="item" open="(" separator="," close=")">
#{item}
</foreach>
</if>
<if test="dateRangeDto.startDate != null and dateRangeDto.endDate != ''">
AND fadr.F_Day BETWEEN #{dateRangeDto.startDate} AND #{dateRangeDto.endDate}
</if>
<if test="attendanceTypeList!= null and attendanceTypeList.size()>0">
and fadr.F_AttendanceType in
<foreach collection="attendanceTypeList" item="item" open="(" separator="," close=")">
#{item}
</foreach>
</if>
</where>
</select>
<!-- 获取用户指定考勤组时间范围内的排班数据-->
<select id="getUserRuleList" resultType="jnpf.model.attendance.vo.attendance.UserRuleListVo">
SELECT r.F_Id ruleId,r.F_GroupId groupId,r.F_SchedulesType schedulesType, r.F_PeriodId periodId,r.F_Day day, r.F_AttendanceType attendanceType,r.F_ShiftId shiftId, r.F_InPoint inPoint,r.F_OutPoint outPoint,r.F_UserId userId,r.F_ApplyUnit applyUnit,p.F_InPoint periodInPoint,p.F_OutPoint periodOutPoint,p.F_OutType periodOutType,goa.F_StartTime goOutStartTime,goa.F_EndTime goOutEndTime,r.F_ApplyViewEnable applyViewEnable ,r.F_InStepOutType inStepOutType ,r.F_OutStepOutType outStepOutType ,r.F_OutStepOutApplyId outStepOutApplyId,r.F_InStepOutApplyId inStepOutApplyId
FROM ftb_attendance_daily_rule r
LEFT JOIN ftb_attendance_shift_setting_period p ON r.F_PeriodId = p.F_Id
LEFT JOIN ftb_attendance_go_out_approve goa ON r.F_ApplyId = goa.F_Id
WHERE r.F_Day BETWEEN #{dateRangeDto.startDate} AND #{dateRangeDto.endDate}
AND r.F_AttendanceType > 0 AND r.F_ApplyViewEnable in (1,3,9,10)
AND r.F_GroupId = #{groupId}
<if test="userIds!= null and userIds.size()>0">
AND r.F_UserId IN
<foreach collection="userIds" item="item" open="(" separator="," close=")">
#{item}
</foreach>
</if>
<if test="dateRangeDto.startDate != null and dateRangeDto.endDate != ''">
AND r.F_Day BETWEEN #{dateRangeDto.startDate} AND #{dateRangeDto.endDate}
</if>
<if test="code!= null and code.size()>0">
and r.F_AttendanceType in
<foreach collection="code" item="item" open="(" separator="," close=")">
#{item}
</foreach>
</if>
ORDER BY r.F_AttendanceType DESC
</select>
</mapper>

View File

@@ -0,0 +1,44 @@
<?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="jnpf.attendance.mapper.StorageRestMapper">
<!-- 批量保存数据-->
<insert id="saveBatch">
INSERT INTO ftb_attendance_storage_rest (F_Id,F_UserId,F_Num,F_YearMonth)
VALUES
<foreach collection="list" item="item" separator=",">
(#{item.id}, #{item.userId},#{item.num}, #{item.yearMonth})
</foreach>
</insert>
<!-- 获取用户指定年月的存休-->
<select id="batchGetUserStorageRest" resultType="jnpf.model.attendance.vo.attendance.AttendanceStorageRestVo">
SELECT
F_UserId userId,
F_Num num,
F_YearMonth yearMonth
FROM ftb_attendance_storage_rest
<where>
AND F_YearMonth = #{yearMonth}
<if test="userIds!= null and userIds.size()>0">
and F_UserId in
<foreach collection="userIds" item="item" open="(" separator="," close=")">
#{item}
</foreach>
</if>
</where>
group by F_UserId
</select>
<!-- 实时获取当月存休-->
<select id="getRealTimeUserStorageRest"
resultType="jnpf.model.attendance.vo.attendance.AttendanceStorageRestVo">
SELECT F_User_Id userId,IFNULL(SUM(F_Balance),0) num
FROM ftb_attendance_balance_record
WHERE F_User_Id IN
<foreach collection="userIds" item="item" open="(" separator="," close=")">
#{item}
</foreach>
AND F_DeleteMark = 0 AND F_State = 0 AND F_Type = 3 AND F_State = 0 AND F_Over = 0
GROUP BY F_User_Id
</select>
</mapper>

View File

@@ -0,0 +1,18 @@
<?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="jnpf.attendance.mapper.UserPhoneMapper">
<!-- 查询常用手机列表 -->
<select id="getUsualPhoneList" resultType="jnpf.model.attendance.vo.attendance.UsualPhonePageVo">
select F_Id id, F_UserId userId, F_PhoneName phoneName, F_PhoneCode phoneCode, F_CreatorTime creatorTime
from ftb_attendance_user_phone
where F_DeleteMark = 0
<if test="null != list and list.size > 0">
and F_UserId in
<foreach collection="list" index="index" item="item" open="(" separator="," close=")">
#{item}
</foreach>
</if>
order by F_CreatorTime desc
</select>
</mapper>

View File

@@ -0,0 +1,33 @@
<?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="jnpf.authority.mapper.FtbPermissionFunctionMenuMapper">
<select id="getAListOfSubPages" resultType="jnpf.model.authority.vo.menu.FtbPermissionFunctionMenuVO">
select
F_Id as id,
F_FunctionId as functionId,
F_FuncCoding as funcCoding,
F_FunName as funName,
F_FunType as funType,
F_ParentId as parentId,
F_OriginalCoding as originalCoding,
F_PageType as pageType
from ftb_permission_function_menu
where F_ParentId = #{menuId}
</select>
<select id="getRoleWithMenu" resultType="jnpf.model.authority.vo.role.FtbPermissionRoleInfoVO">
SELECT
a.F_RoleName as roleName,a.F_Id as roleId,a.F_RoleDescription as roleDescription,a.F_IsSuperAdmin as isSuperAdmin,
GROUP_CONCAT(b.F_FunctionWebId) as functionWebId,GROUP_CONCAT(b.F_FunctionAppId) as functionAppId,
GROUP_CONCAT(b.F_FunctionPcId) as functionPcId
FROM
ftb_permission_role a
LEFT JOIN ftb_permission_role_menu b ON a.F_Id = b.F_RoleId
<where>
a.F_Id = #{roleId}
and b.F_RoleEnabled = 1
</where>
group by a.F_Id
</select>
</mapper>

View File

@@ -0,0 +1,52 @@
<?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="jnpf.authority.mapper.FtbPermissionMigrateMapper">
<select id="personnelMenuAuthorities" resultType="java.lang.String">
SELECT DISTINCT b.F_AuthorityId FROM ftb_personnels_permissions a JOIN ftb_personnels_permission_user b ON a.F_Id = b.F_PermissionId
where a.F_EnableMark = 0 and a.F_UserId IN
<foreach item="item" index="index" collection="userIds" open="(" separator="," close=")">
#{item}
</foreach>
</select>
<select id="personnelMenu"
resultType="jnpf.model.authority.vo.role.FtbPermissionPositionMenuVO$FtbPermissionPositionMenuInnerVO">
SELECT
F_Id AS menuId,
F_ParentId AS parentId,
F_AuthorityName as menuName
FROM ftb_personnels_authoritys WHERE
F_EnableMark = 0 and
F_ModuleType = #{type}
</select>
<select id="getRoleList" resultType="java.util.Map">
SELECT
F_Id as id,
F_FullName as `name`
FROM
base_role
order by F_CreatorTime desc
</select>
<select id="characterCheckedMenusAndButtons" resultType="java.lang.String">
SELECT F_ItemId FROM `base_authorize` WHERE `F_ObjectId` = #{roleId} AND F_ObjectType = 'Role'
</select>
<select id="inquiryButton" resultType="jnpf.base.entity.ModuleButtonEntity">
SELECT
F_Id id,
F_FullName fullName
FROM
`base_modulebutton`
<where>
`F_ModuleId` = #{moduleId}
and f_enabledMark = 1
</where>
ORDER BY
`F_SortCode` DESC
</select>
</mapper>

View File

@@ -0,0 +1,150 @@
<?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="jnpf.authority.mapper.FtbPermissionRoleAuthorizePersonMapper">
<select id="queryUserScopeOfPermission" resultType="jnpf.model.authority.vo.role.FtbPermissionRolePersonVO">
SELECT b.F_FunctionWebId as webId,b.F_FunctionAppId as appId,b.F_ScopePermission as scope,b.F_SpecifyOrgIds as orgIds,
b.F_FunctionPageWebId as functionPageWebId,b.F_FunctionPageAppId as functionPageAppId,b.F_FunctionPcId as pcId,
b.F_FunctionPagePcId as functionPagePcId,b.F_Id as roleMenuId
FROM ftb_permission_role_authorize_person a JOIN ftb_permission_role_menu b ON a.F_RoleId=b.F_RoleId
join ftb_permission_role c on a.F_RoleId=c.F_Id
WHERE c.F_EnableMark = 0 AND a.F_EnableMark = 0 AND b.F_EnableMark = 0 and b.F_RoleEnabled = 1 AND a.F_UserId = #{userId}
</select>
<select id="jobAuthorizationInformation" resultType="jnpf.model.authority.vo.role.FtbPermissionRolePersonVO">
SELECT b.F_FunctionWebId as webId,b.F_FunctionAppId as appId,b.F_ScopePermission as scope,b.F_SpecifyOrgIds as orgIds,
b.F_FunctionPageWebId as functionPageWebId,b.F_FunctionPageAppId as functionPageAppId,b.F_FunctionPcId as pcId,
b.F_FunctionPagePcId as functionPagePcId,b.F_Id as roleMenuId
FROM ftb_permission_role_authorize_post a JOIN ftb_permission_role_menu b ON a.F_RoleId=b.F_RoleId
join ftb_permission_role c on a.F_RoleId=c.F_Id
WHERE c.F_EnableMark = 0 and b.F_EnableMark = 0 and a.F_EnableMark = 0 and b.F_RoleEnabled = 1 AND a.F_PostId = #{positionId}
</select>
<select id="employeePermission" resultType="jnpf.model.authority.vo.person.FtbEmployeePermissionPersonnelVO">
SELECT
F_UserId as userId,
GROUP_CONCAT(F_RoleId) as roleIds
FROM
`ftb_permission_role_authorize_person`
<where>
<if test="userIds != null and userIds.size() > 0">
F_UserId IN
<foreach item="item" index="index" collection="userIds" open="(" separator="," close=")">
#{item}
</foreach>
</if>
and F_EnableMark = 0
</where>
GROUP BY F_UserId
ORDER BY F_CreatorTime ASC
</select>
<select id="authorizedPersonnel" resultType="jnpf.model.authority.vo.person.FtbAuthorizedPersonnelVO">
SELECT
a.F_UserId as userId,
d.name as userName,
a.F_CreatorUserId as operatorUserId,
(select F_Name from ftb_personnels_staff_roster where F_UserId = a.F_CreatorUserId) as operatorUserName,
a.F_CreatorTime as operateTime,
a.F_Id as id
FROM
`ftb_permission_role_authorize_person` a
inner join (
select b.F_UserId,b.F_Name as name from ftb_personnels_staff_roster b where ( b.F_WorkerStatus not IN ("305") and b.F_EnabledMark = 0 )
union
select c.F_UserId,c.F_WorkerName as name from ftb_personnels_staff_employment_apply c where ( (c.F_IsNeedCheck = 0 and c.F_CheckStatus not in (3, 5)))
) as d on a.F_UserId = d.F_UserId
<where>
a.F_RoleId = #{roleId}
and a.F_EnableMark = 0
</where>
ORDER BY a.F_CreatorTime ASC
</select>
<select id="employeePermissionLPage" resultType="jnpf.model.authority.vo.person.FtbEmployeePermissionPersonnelVO">
SELECT
*
FROM
(
SELECT
b.F_UserId userId,
b.F_Name userName,
b.F_ActualStartDate createTime
FROM
ftb_personnels_staff_roster b
WHERE
b.F_WorkerStatus NOT IN ( "305" )
AND b.F_EnabledMark = 0 UNION
SELECT
c.F_UserId userId,
c.F_WorkerName userName,
c.F_CreatorTime createTime
FROM
ftb_personnels_staff_employment_apply c
WHERE
c.F_IsNeedCheck = 0
AND c.F_CheckStatus IN ( 0, 1,3,4 )
) d
<where>
<if test="userName != null and userName != ''">
and d.userName like concat('%',#{userName},'%')
</if>
<if test="userId != null and userId != ''">
and d.userId = #{userId}
</if>
<if test="userIds != null and userIds.size() != 0">
and d.userId IN
<foreach item="item" index="index" collection="userIds" open="(" separator="," close=")">
#{item}
</foreach>
</if>
and d.userId is not null and d.userId != '349057407209541'
</where>
ORDER BY
d.createTime DESC
</select>
<select id="getPeopleDataPermissions" resultType="jnpf.model.authority.vo.role.FtbPermissionRolePersonVO">
SELECT F_FunctionWebId as webId,F_FunctionAppId as appId,F_ScopePermission as scope,F_SpecifyOrgIds as orgIds
from ftb_permission_role_person_user_relation WHERE F_UserId = #{userId} AND F_RoleEnabled = 1 AND F_EnableMark = 0
</select>
<select id="queryUserScopeOfPermissionWithUserIds"
resultType="jnpf.model.authority.vo.role.FtbPermissionRolePersonVO">
SELECT b.F_FunctionWebId as webId,b.F_FunctionAppId as appId,b.F_ScopePermission as scope,b.F_SpecifyOrgIds as orgIds,
b.F_FunctionPageWebId as functionPageWebId,b.F_FunctionPageAppId as functionPageAppId,a.F_UserId as userId
FROM ftb_permission_role_authorize_person a JOIN ftb_permission_role_menu b ON a.F_RoleId=b.F_RoleId
join ftb_permission_role c on a.F_RoleId=c.F_Id
WHERE c.F_EnableMark = 0 AND a.F_EnableMark = 0 AND b.F_EnableMark = 0 and b.F_RoleEnabled = 1
and a.F_UserId IN
<foreach item="item" index="index" collection="userIds" open="(" separator="," close=")">
#{item}
</foreach>
group by a.F_UserId
</select>
<select id="jobAuthorizationInformationWithPositionIds"
resultType="jnpf.model.authority.vo.role.FtbPermissionRolePersonVO">
SELECT b.F_FunctionWebId as webId,b.F_FunctionAppId as appId,b.F_ScopePermission as scope,b.F_SpecifyOrgIds as orgIds,
b.F_FunctionPageWebId as functionPageWebId,b.F_FunctionPageAppId as functionPageAppId,a.F_PostId as postId
FROM ftb_permission_role_authorize_post a JOIN ftb_permission_role_menu b ON a.F_RoleId=b.F_RoleId
join ftb_permission_role c on a.F_RoleId=c.F_Id
WHERE c.F_EnableMark = 0 and b.F_EnableMark = 0 and a.F_EnableMark = 0 and b.F_RoleEnabled = 1
and a.F_PostId IN
<foreach item="item" index="index" collection="positionIds" open="(" separator="," close=")">
#{item}
</foreach>
group by a.F_PostId
</select>
<select id="getPeopleDataPermissionsWithUserIds" resultType="jnpf.model.authority.vo.role.FtbPermissionRolePersonVO">
SELECT F_FunctionWebId as webId,F_FunctionAppId as appId,F_ScopePermission as scope,F_SpecifyOrgIds as orgIds,F_UserId as userId
from ftb_permission_role_person_user_relation WHERE
F_UserId in
<foreach item="item" index="index" collection="userIds" open="(" separator="," close=")">
#{item}
</foreach>
AND F_RoleEnabled = 1 AND F_EnableMark = 0 group by F_UserId
</select>
</mapper>

View File

@@ -0,0 +1,25 @@
<?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="jnpf.authority.mapper.FtbPermissionRoleAuthorizePostMapper">
<resultMap id="BaseResultMap" type="jnpf.model.authority.po.FtbPermissionRoleAuthorizePost">
<!--@mbg.generated-->
<!--@Table jnpf_tenant_r4no629ws969.ftb_permission_role_authorize_post-->
<id column="F_Id" jdbcType="VARCHAR" property="fId" />
<result column="F_TenantId" jdbcType="VARCHAR" property="fTenantid" />
<result column="F_CreatorUserId" jdbcType="VARCHAR" property="fCreatoruserid" />
<result column="F_CreatorTime" jdbcType="TIMESTAMP" property="fCreatortime" />
<result column="F_LastModifyUserId" jdbcType="VARCHAR" property="fLastmodifyuserid" />
<result column="F_LastModifyTime" jdbcType="TIMESTAMP" property="fLastmodifytime" />
<result column="F_DeleteUserId" jdbcType="VARCHAR" property="fDeleteuserid" />
<result column="F_DeleteTime" jdbcType="TIMESTAMP" property="fDeletetime" />
<result column="F_DeleteMark" jdbcType="INTEGER" property="fDeletemark" />
<result column="F_EnableMark" jdbcType="INTEGER" property="fEnablemark" />
<result column="F_PostId" jdbcType="VARCHAR" property="fPostid" />
<result column="F_RoleId" jdbcType="VARCHAR" property="fRoleid" />
</resultMap>
<sql id="Base_Column_List">
<!--@mbg.generated-->
F_Id, F_TenantId, F_CreatorUserId, F_CreatorTime, F_LastModifyUserId, F_LastModifyTime,
F_DeleteUserId, F_DeleteTime, F_DeleteMark, F_EnableMark, F_PostId, F_RoleId
</sql>
</mapper>

View File

@@ -0,0 +1,61 @@
<?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="jnpf.authority.mapper.FtbPermissionRoleMapper">
<select id="permissionIdentifications" resultType="java.lang.String">
SELECT
F_FuncCoding
FROM
ftb_permission_role_authorize_person a
JOIN ftb_permission_role_menu_relation b ON a.F_RoleId = b.F_RoleId
JOIN ftb_permission_function_menu c ON b.F_RoleMenuConfigId = c.F_Id
JOIN ftb_permission_role_menu d ON d.F_Id=b.F_RoleMenuId
WHERE a.F_EnableMark = 0 and d.F_RoleEnabled = 1 and a.F_UserId = #{userId} GROUP BY c.F_Id
</select>
<select id="permissionList" resultType="jnpf.model.authority.vo.role.FtbPermissionRoleInfoVO">
SELECT
a.F_RoleName as roleName,a.F_Id as roleId,a.F_RoleDescription as roleDescription,a.F_IsSuperAdmin as isSuperAdmin,
GROUP_CONCAT(CASE WHEN b.F_RoleEnabled = 1 THEN b.F_FunctionWebId END) as functionWebId,
GROUP_CONCAT(CASE WHEN b.F_RoleEnabled = 1 THEN b.F_FunctionAppId END) as functionAppId,
GROUP_CONCAT(CASE WHEN b.F_RoleEnabled = 1 THEN b.F_FunctionPcId END) as functionPcId
FROM
ftb_permission_role a
LEFT JOIN ftb_permission_role_menu b ON a.F_Id = b.F_RoleId
<where>
a.F_EnableMark = 0
<if test="params.keyword != null and params.keyword != ''">
AND (a.F_RoleName LIKE CONCAT('%',#{params.keyword},'%') or a.F_RoleDescription LIKE CONCAT('%',#{params.keyword},'%'))
</if>
<if test="params.innerModuleIds != null and params.innerModuleIds.size() > 0">
AND (
b.F_FunctionWebId IN
<foreach collection="params.innerModuleIds" item="moduleId" open="(" close=")" separator=",">
#{moduleId}
</foreach>
OR
b.F_FunctionAppId IN
<foreach collection="params.innerModuleIds" item="moduleId" open="(" close=")" separator=",">
#{moduleId}
</foreach>
)
</if>
</where>
group by a.F_Id
<if test="params.innerModuleIds != null and params.innerModuleIds.size() > 0">
HAVING functionWebId IS NOT NULL AND functionAppId IS NOT NULL
</if>
ORDER BY a.F_CreatorTime
</select>
<select id="queryJobPermissions" resultType="java.lang.String">
SELECT
F_FuncCoding
FROM
ftb_permission_role_authorize_post a
JOIN ftb_permission_role_menu_relation b ON a.F_RoleId = b.F_RoleId
JOIN ftb_permission_function_menu c ON b.F_RoleMenuConfigId = c.F_Id
JOIN ftb_permission_role_menu d ON d.F_Id=b.F_RoleMenuId
WHERE a.F_EnableMark = 0 and d.F_RoleEnabled = 1 and a.F_PostId = #{positionId} GROUP BY c.F_Id
</select>
</mapper>

View File

@@ -0,0 +1,20 @@
<?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="jnpf.authority.mapper.FtbPermissionRoleMenuMapper">
<select id="queryFuncCodingsByRoleMenuIds" resultType="java.lang.String">
SELECT
m.F_FuncCoding
FROM
ftb_permission_role_menu_relation r
INNER JOIN ftb_permission_function_menu m ON r.F_RoleMenuConfigId = m.F_Id
WHERE
r.F_RoleMenuId IN
<foreach collection="roleMenuIds" item="roleMenuId" open="(" close=")" separator=",">
#{roleMenuId}
</foreach>
AND r.F_EnableMark = 0
AND m.F_EnableMark = 0
</select>
</mapper>

View File

@@ -0,0 +1,15 @@
<?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="jnpf.authority.mapper.FtbPermissionRoleMenuRelationMapper">
<resultMap id="BaseResultMap" type="jnpf.model.authority.po.FtbPermissionRoleMenuRelation">
<!--@mbg.generated-->
<!--@Table jnpf_tenant_r4no629ws969.ftb_permission_role_menu_relation-->
<id column="F_Id" jdbcType="VARCHAR" property="fId" />
<result column="F_RoleId" jdbcType="VARCHAR" property="fRoleid" />
<result column="F_RoleMenuId" jdbcType="VARCHAR" property="fRolemenuid" />
</resultMap>
<sql id="Base_Column_List">
<!--@mbg.generated-->
F_Id, F_RoleId, F_RoleMenuId
</sql>
</mapper>

View File

@@ -0,0 +1,5 @@
<?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="jnpf.certificate.mapper.CertificateAppReminderMapper">
</mapper>

View File

@@ -0,0 +1,148 @@
<?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="jnpf.certificate.mapper.CertificateAppRiskMapper">
<select id="queryHealthRiskStatusCount" resultType="jnpf.model.certificate.vo.app.CertificateAppStatusCountVO">
SELECT
ci.F_Status AS status,
COUNT(1) AS count
FROM ftb_certificate_instance ci
<where>
ci.F_EnabledMark = 0
AND ci.F_CertificateType = 'healthCertificate'
AND ci.F_SubjectType = 1
<if test="req.status != null and req.status != ''" >
AND ci.F_Status = #{req.status}
</if>
<if test="req.userIds != null and req.userIds.size > 0">
AND ci.F_SubjectId in
<foreach collection="req.userIds" item="userId" open="(" separator="," close=")">
#{userId}
</foreach>
</if>
</where>
GROUP by ci.F_Status
</select>
<select id="queryStoreRiskStatusCount" resultType="jnpf.model.certificate.vo.app.CertificateAppStatusCountVO">
SELECT
ci.F_Status AS status,
COUNT(1) AS count
FROM ftb_certificate_instance ci
<where>
ci.F_EnabledMark = 0
<if test="req.status != null and req.status != ''" >
AND ci.F_Status = #{req.status}
</if>
AND ci.F_SubjectType IN (2, 3)
<if test="req.certificateType != null and req.certificateType != ''">
AND ci.F_CertificateType = #{req.certificateType}
</if>
<if test="req.orgId != null and req.orgId != ''">
AND ci.F_SubjectId = #{req.orgId}
</if>
</where>
GROUP BY ci.F_Status
</select>
<select id="queryEmployeeRiskPageByUserIds" resultType="jnpf.model.certificate.vo.app.CertificateAppEmployeeRiskVO">
SELECT
ci.F_SubjectId AS userId,
ci.F_Id AS certificateInstanceId,
ci.F_Status AS status,
ci.F_IssueDate AS issueDate,
ci.F_ExpireDate AS expireDate
FROM ftb_certificate_instance ci
<where>
ci.F_EnabledMark = 0
AND ci.F_Status IN (1, 2, 3)
AND ci.F_CertificateType = 'healthCertificate'
AND ci.F_SubjectType = 1
<if test="userIds != null and userIds.size > 0">
AND ci.F_SubjectId IN
<foreach collection="userIds" item="userId" open="(" separator="," close=")">
#{userId}
</foreach>
</if>
</where>
ORDER BY ci.F_Status ASC,
ci.F_ExpireDate ASC
</select>
<select id="queryStoreRiskPage" resultType="jnpf.model.certificate.vo.app.CertificateAppStoreRiskVO">
SELECT
ci.F_SubjectId as subjectId,
MAX(ci.F_SubjectType) AS subjectType
FROM ftb_certificate_instance ci
<where>
ci.F_EnabledMark = 0
AND ci.F_SubjectType IN (2, 3)
AND ci.F_Status IN (1, 2, 3)
AND ci.F_TemplateStatus = 1
<if test="req.certificateType != null and req.certificateType != ''">
AND ci.F_CertificateType = #{req.certificateType}
</if>
<if test="req.orgId != null and req.orgId != ''">
AND ci.F_SubjectId = #{req.orgId}
</if>
</where>
GROUP BY ci.F_SubjectId
ORDER BY MIN(ci.F_Status) ASC,
MIN(ci.F_ExpireDate) ASC
</select>
<select id="queryStoreRiskDetailList" resultType="jnpf.model.certificate.vo.app.CertificateAppStoreRiskItemVO">
SELECT
ci.F_SubjectId AS subjectId,
ci.F_Id AS certificateInstanceId,
ci.F_CertificateType AS certificateType,
ci.F_Status AS status,
ci.F_IssueDate AS issueDate,
ci.F_ExpireDate AS expireDate,
ci.F_TemplateId AS templateId
FROM ftb_certificate_instance ci
<where>
ci.F_EnabledMark = 0
AND ci.F_Status IN (1, 2, 3)
AND ci.F_SubjectId IN
<foreach collection="subjectIds" item="subjectId" open="(" separator="," close=")">
#{subjectId}
</foreach>
</where>
</select>
<select id="queryEmployeeRiskTotalCount" resultType="java.lang.Long">
SELECT COUNT(DISTINCT ci.F_SubjectId)
FROM ftb_certificate_instance ci
<where>
ci.F_EnabledMark = 0
AND ci.F_Status IN (1, 2, 3)
AND ci.F_CertificateType = 'healthCertificate'
AND ci.F_SubjectType = 1
<if test="userIds != null and userIds.size() > 0">
AND ci.F_SubjectId IN
<foreach collection="userIds" item="userId" open="(" separator="," close=")">
#{userId}
</foreach>
</if>
</where>
</select>
<select id="queryOrganizationRiskTotalCount" resultType="java.lang.Long">
SELECT COUNT(DISTINCT ci.F_SubjectId,ci.F_CertificateType,ci.F_TemplateId)
FROM ftb_certificate_instance ci
<where>
ci.F_EnabledMark = 0
AND ci.F_SubjectType IN (2, 3)
AND ci.F_Status IN (1, 2, 3)
and ci.F_TemplateStatus = 1
<if test="orgIds != null and orgIds.size() > 0">
AND ci.F_SubjectId in
<foreach collection="orgIds" item="orgId" open="(" separator="," close=")">
#{orgId}
</foreach>
</if>
</where>
</select>
</mapper>

View File

@@ -0,0 +1,5 @@
<?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="jnpf.certificate.mapper.CertificateBusinessLicenseExtMapper">
</mapper>

View File

@@ -0,0 +1,5 @@
<?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="jnpf.certificate.mapper.CertificateHygieneLicenseExtMapper">
</mapper>

View File

@@ -0,0 +1,6 @@
<?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="jnpf.certificate.mapper.CertificateInstanceItemMapper">
</mapper>

View File

@@ -0,0 +1,284 @@
<?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="jnpf.certificate.mapper.CertificateInstanceMapper">
<select id="queryHealthManagePage" resultType="jnpf.model.certificate.vo.CertificateHealthManageVO">
SELECT
fci.F_SubjectId AS userId,
fci.F_Id AS certificateInstanceId,
fci.F_IssueDate AS issueDate,
fci.F_ExpireDate AS expireDate,
CASE
WHEN fci.F_IsLongTerm = 1 OR fci.F_ExpireDate IS NULL THEN NULL
ELSE DATEDIFF(fci.F_ExpireDate, CURDATE())
END AS validDays,
fci.F_Status AS certificateStatus,
fci.F_CertificateImage AS certificateImage
FROM ftb_certificate_instance fci
<where>
fci.F_EnabledMark = 0
AND fci.F_SubjectType = 1
AND fci.F_CertificateType = 'healthCertificate'
<if test="req.userIds != null and req.userIds.size > 0">
AND fci.F_SubjectId in
<foreach collection="req.userIds" item="userId" open="(" separator="," close=")">
#{userId}
</foreach>
</if>
<if test="req.issueStart != null and req.issueStart != ''">
AND DATE(fci.F_IssueDate) <![CDATA[>=]]> #{req.issueStart}
</if>
<if test="req.issueEnd != null and req.issueEnd != ''">
AND DATE(fci.F_IssueDate) <![CDATA[<=]]> #{req.issueEnd}
</if>
<if test="req.expireStart != null and req.expireStart != ''">
AND DATE(fci.F_ExpireDate) <![CDATA[>=]]> #{req.expireStart}
</if>
<if test="req.expireEnd != null and req.expireEnd != ''">
AND DATE(fci.F_ExpireDate) <![CDATA[<=]]> #{req.expireEnd}
</if>
<if test="req.certificateStatus != null">
AND fci.F_Status = #{req.certificateStatus}
</if>
</where>
ORDER BY fci.F_ExpireDate
</select>
<select id="queryHealthCertificateStatus" resultType="jnpf.model.certificate.dto.HealthCertificateStatusDTO">
SELECT
fci.F_Status AS status,
fci.F_SubjectId as userId
FROM ftb_certificate_instance fci
<where>
fci.F_EnabledMark = 0
AND fci.F_SubjectType = 1
AND fci.F_CertificateType = 'healthCertificate'
<if test="userIds != null and userIds.size() > 0">
AND fci.F_SubjectId in
<foreach collection="userIds" item="userId" open="(" separator="," close=")">
#{userId}
</foreach>
</if>
</where>
</select>
<select id="queryStoreDashboardStatusStats" resultType="jnpf.model.certificate.vo.CertificateHealthDashboardStatusStatVO">
SELECT
fci.F_SubjectId AS storeId,
fci.F_Status AS status,
COUNT(1) AS totalCount
FROM ftb_certificate_instance fci
<if test="storeType != null and storeType != ''">
JOIN ftb_store fs ON fs.F_Id = fci.F_SubjectId
</if>
<where>
fci.F_EnabledMark = 0
AND fic.F_StoreDisable = 0
AND fic.F_CertificateType = #{certificateType}
<if test="templateId != null and templateId != ''">
AND fci.F_TemplateId = #{templateId}
</if>
<if test="storeIds != null and storeIds.size() > 0">
AND fci.F_SubjectId in
<foreach collection="storeIds" item="sid" open="(" separator="," close=")">
#{sid}
</foreach>
</if>
<if test="storeType != null and storeType != ''">
AND fs.F_StoreTag = #{storeType}
</if>
</where>
GROUP BY fci.F_Status
</select>
<select id="queryStoreDashboardTablePage" resultType="jnpf.model.certificate.vo.CertificateStoreCustomStatusTableVO">
SELECT
fci.F_SubjectId AS storeId,
SUM(CASE WHEN fci.F_Status = 1 THEN 1 ELSE 0 END) AS missingCount,
SUM(CASE WHEN fci.F_Status = 3 THEN 1 ELSE 0 END) AS nearExpireCount,
SUM(CASE WHEN fci.F_Status = 2 THEN 1 ELSE 0 END) AS expiredCount,
SUM(CASE WHEN fci.F_Status = 4 THEN 1 ELSE 0 END) AS normalCount,
COUNT(1) AS totalCount
FROM ftb_certificate_instance fci
LEFT JOIN ftb_store fs ON fs.F_Id = fci.F_SubjectId
<where>
fci.F_EnabledMark = 0
AND fci.F_StoreDisable = 0
AND fci.F_CertificateType = #{certificateType}
<if test="templateId != null and templateId != ''">
AND fci.F_TemplateId = #{templateId}
</if>
<if test="storeIds != null and storeIds.size() > 0">
AND fci.F_SubjectId in
<foreach collection="storeIds" item="sid" open="(" separator="," close=")">
#{sid}
</foreach>
</if>
<if test="storeType != null and storeType != ''">
AND fs.F_StoreTag = #{storeType}
</if>
</where>
GROUP BY fci.F_SubjectId
</select>
<insert id="batchInitHealthCertificate">
insert into ftb_certificate_instance (
F_Id,
F_CertificateType,
F_SubjectType,
F_SubjectId,
F_Status,
F_EnabledMark
)
values
<foreach collection="entities" item="entity" separator=",">
(
#{entity.id},
#{entity.certificateType},
#{entity.subjectType},
#{entity.subjectId},
#{entity.status},
#{entity.enabledMark}
)
</foreach>
</insert>
<select id="selectInstanceById" resultType="jnpf.model.certificate.po.CertificateInstanceEntity">
SELECT
fci.F_Id AS id,
fci.F_CertificateType AS certificateType,
fci.F_TemplateId AS templateId,
fci.F_TemplateStatus AS templateStatus,
fci.F_SubjectType AS subjectType,
fci.F_SubjectId AS subjectId,
fci.F_CertificateNo AS certificateNo,
fci.F_IssueDate AS issueDate,
fci.F_ExpireDate AS expireDate,
fci.F_ExpireTimestamp AS expireTimestamp,
fci.F_IsLongTerm AS isLongTerm,
fci.F_Status AS status,
fci.F_CertificateImage AS certificateImage,
fci.F_EnabledMark AS enabledMark
FROM ftb_certificate_instance fci
WHERE fci.F_Id = #{id}
AND fci.F_EnabledMark = 0
</select>
<select id="selectBySubjectTypesAndStatusesFilterUser" resultType="jnpf.model.certificate.po.CertificateInstanceEntity">
SELECT
fci.F_Id AS id,
fci.F_CertificateType AS certificateType,
fci.F_TemplateId AS templateId,
fci.F_TemplateStatus AS templateStatus,
fci.F_SubjectType AS subjectType,
fci.F_SubjectId AS subjectId,
fci.F_CertificateNo AS certificateNo,
fci.F_IssueDate AS issueDate,
fci.F_ExpireDate AS expireDate,
fci.F_ExpireTimestamp AS expireTimestamp,
fci.F_IsLongTerm AS isLongTerm,
fci.F_Status AS status,
fci.F_CertificateImage AS certificateImage,
fci.F_EnabledMark AS enabledMark
FROM ftb_certificate_instance fci
<where>
fci.F_EnabledMark = 0
<if test="subjectTypes != null and subjectTypes.size() > 0">
AND fci.F_SubjectType IN
<foreach collection="subjectTypes" item="subjectType" open="(" separator="," close=")">
#{subjectType}
</foreach>
</if>
<if test="statuses != null and statuses.size() > 0">
AND fci.F_Status IN
<foreach collection="statuses" item="status" open="(" separator="," close=")">
#{status}
</foreach>
</if>
<if test="userIds != null and userIds.size() > 0">
AND fci.F_SubjectId in
<foreach collection="userIds" item="userId" open="(" separator="," close=")">
#{userId}
</foreach>
</if>
</where>
</select>
<select id="selectBySubjectTypesAndStatusesFilterOrganization" resultType="jnpf.model.certificate.po.CertificateInstanceEntity">
SELECT
fci.F_Id AS id,
fci.F_CertificateType AS certificateType,
fci.F_TemplateId AS templateId,
fci.F_TemplateStatus AS templateStatus,
fci.F_SubjectType AS subjectType,
fci.F_SubjectId AS subjectId,
fci.F_CertificateNo AS certificateNo,
fci.F_IssueDate AS issueDate,
fci.F_ExpireDate AS expireDate,
fci.F_ExpireTimestamp AS expireTimestamp,
fci.F_IsLongTerm AS isLongTerm,
fci.F_Status AS status,
fci.F_CertificateImage AS certificateImage,
fci.F_EnabledMark AS enabledMark
FROM ftb_certificate_instance fci
<where>
fci.F_EnabledMark = 0
<if test="subjectTypes != null and subjectTypes.size() > 0">
AND fci.F_SubjectType IN
<foreach collection="subjectTypes" item="subjectType" open="(" separator="," close=")">
#{subjectType}
</foreach>
</if>
<if test="statuses != null and statuses.size() > 0">
AND fci.F_Status IN
<foreach collection="statuses" item="status" open="(" separator="," close=")">
#{status}
</foreach>
</if>
<if test="orgId != null and orgId != ''">
and fci.F_SubjectId = #{orgId}
</if>
</where>
</select>
<select id="selectCertificateStoreManageVOPage"
resultType="jnpf.model.certificate.vo.CertificateStoreManageVO">
SELECT
fci.F_Id as certificateInstanceId,
fci.F_CertificateType AS certificateType,
fci.F_TemplateId AS templateId,
fci.F_TemplateStatus AS templateStatus,
fci.F_SubjectType AS subjectType,
fci.F_SubjectId AS orgId,
fci.F_CertificateNo AS certificateNo,
fci.F_IssueDate AS issueDate,
fci.F_ExpireDate AS expireDate,
fci.F_IsLongTerm AS isLongTerm,
fci.F_Status AS certificateStatus,
fci.F_CertificateImage AS thumbnail,
fci.F_EnabledMark AS enabledMark
FROM ftb_certificate_instance fci
<where>
fci.F_EnabledMark = 0
<if test="queryReq.orgIds != null and queryReq.orgIds.size() > 0">
AND fci.F_SubjectId IN
<foreach collection="queryReq.orgIds" item="orgId" open="(" separator="," close=")">
#{orgId}
</foreach>
</if>
<if test="queryReq.certificateType != null and queryReq.certificateType != ''">
and fci.F_CertificateType = #{queryReq.certificateType}
</if>
<if test="queryReq.templateId != null and queryReq.templateId != ''">
and fci.F_TemplateId = #{queryReq.templateId}
</if>
<if test="queryReq.certificateStatus != null">
and fci.F_Status = #{queryReq.certificateStatus}
</if>
</where>
</select>
</mapper>

View File

@@ -0,0 +1,52 @@
<?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="jnpf.cultivate.mapper.CultivateCourseMsgMapper">
<!--查询用户未读的培养课程消息-->
<select id="queryUserUnreadMsg"
resultType="jnpf.model.cultivate.vo.course.app.FtbCultivateCourseMsgForAppVO">
SELECT
F_Id as msgId,
F_Desc as messageInfo,
F_CourseId as courseId
FROM
ftb_cultivate_course_msg
WHERE
F_Id NOT IN (
SELECT
F_MsgId
FROM
ftb_cultivate_course_msg_user
WHERE
F_UserId = #{dto.userId}
AND F_Status = 1
)
and F_State = #{dto.states}
<if test="dto.courseId != null">
and F_CourseId = #{dto.courseId}
</if>
</select>
<select id="queryUserUnreadMsgV2" resultType="jnpf.model.cultivate.vo.course.app.FtbCultivateCourseMsgForAppVO">
SELECT
F_Id as msgId,
F_Desc as messageInfo,
F_CourseId as courseId
FROM
ftb_cultivate_course_msg
WHERE F_DeleteMark=0
and F_Status = 0
and F_UserId = #{dto.userId}
and F_CourseId in
<foreach item="item" collection="dto.courseIds" separator="," open="(" close=")" index="">
#{item}
</foreach>
</select>
<update id="deleteInfoByMsgIdV2">
delete from ftb_cultivate_course_msg
WHERE F_UserId = #{userId}
AND F_CourseId = #{courseId}
</update>
</mapper>

View File

@@ -0,0 +1,7 @@
<?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="jnpf.cultivate.mapper.CultivateCourseMsgUserMapper">
</mapper>

View File

@@ -0,0 +1,27 @@
<?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="jnpf.cultivate.mapper.CultivateCoverInfoMapper">
<select id="getPageList" resultType="jnpf.model.cultivate.v2.exam.vo.V2CoverVo">
SELECT
c.F_Id AS id,
c.F_CategoryId AS categoryId,
c.F_IsSystem AS isSystem,
c.F_Path AS path,
c.F_LastModifyTime AS lastModifyTime,
c.F_LastModifyUserId AS userId,
a.F_Name AS categoryName
FROM
ftb_cultivate_cover_info AS c
LEFT JOIN ftb_cultivate_cover_category AS a on c.F_CategoryId= a.F_Id
WHERE
c.F_EnabledMark = 0
<if test="params.categoryIds != null and params.categoryIds.size()>0">
and c.F_CategoryId in
<foreach collection="params.categoryIds" item="value" separator="," open="(" close=")">
#{value}
</foreach>
</if>
</select>
</mapper>

View File

@@ -0,0 +1,16 @@
<?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="jnpf.cultivate.mapper.CultivateExamDrawRuleMapper">
<!-- 查询关联题目的规则 -->
<select id="getConnectQuestionRule" resultType="jnpf.model.cultivate.v2.exam.vo.ConnectDrawRuleVo">
select dr.F_ExamId examId, dr.F_Id ruleId, dr.F_QuestionType questionType
from ftb_cultivate_exam_draw_rule dr
inner join ftb_cultivate_exam ce on dr.F_ExamId = ce.F_Id
where ce.F_EnabledMark = 1 and ce.F_Status in (0, 1)
and dr.F_QuestionId is not null and dr.F_QuestionId in
<foreach collection="questionIds" index="index" item="item" open="(" separator="," close=")">
#{item}
</foreach>
</select>
</mapper>

View File

@@ -0,0 +1,103 @@
<?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="jnpf.cultivate.mapper.CultivateExamMapper">
<!-- 批量更新老版本考试信息 -->
<update id="updateOldExamBatch">
UPDATE ftb_cultivate_exam e
JOIN (
SELECT * FROM (
VALUES
<foreach collection="examList" item="item" separator=",">
ROW(#{item.examId}, #{item.examTime}, #{item.drawMode}, #{item.drawDataBase}, #{item.needUpdate})
</foreach>
) AS tmp(F_Id, F_ExamTime, F_DrawMode, F_DrawDataBase, F_NeedUpdate)
) v ON e.F_Id = v.F_Id
SET
e.F_DrawMode = v.F_DrawMode,
e.F_ExamTime = v.F_ExamTime,
e.F_DrawDataBase = v.F_DrawDataBase,
e.F_NeedUpdate = v.F_NeedUpdate
</update>
<!-- 查询考试列表 -->
<select id="selectListV2" resultType="jnpf.model.cultivate.v2.exam.vo.V2ExamListVo">
select ce.F_Id id,
ce.F_ExamId examId,
ce.F_ExamName examName,
ce.F_ExamLimitation examLimitation,
ce.F_EndTime endTime,
ce.F_ExamType `examType`,
ce.F_Status `status`,
ce.F_NeedUpdate needUpdate,
ifnull(sum(dr.F_PickCount), 0) questionNum, ifnull(sum(dr.F_Score * dr.F_PickCount), 0) totalScore
from ftb_cultivate_exam ce
left join ftb_cultivate_exam_draw_rule dr on ce.F_Id = dr.F_ExamId
where ce.F_EnabledMark = 1
<if test="null != examType">
and ce.F_ExamType = #{examType}
</if>
<if test="null != examName and '' != examName">
and instr(ce.F_ExamName, #{examName}) > 0
</if>
<if test="null != needUpdate">
and ce.F_NeedUpdate = #{needUpdate}
</if>
<if test="null != limitedDate and limitedDate == 0">
and ce.F_StartTime is null and ce.F_EndTime is null
</if>
group by ce.F_Id, ce.F_ExamId, ce.F_ExamName, ce.F_ExamLimitation
order by ce.F_CreatorTime desc
</select>
<!-- 查询受影响的抽题规则(删题后) -->
<select id="getAffectedExamRule" resultType="jnpf.model.cultivate.v2.exam.vo.ExamDrawRuleVo">
SELECT
ce.F_Id AS examId,
ce.F_DrawDataBase drawDataBase,
dr.F_Id AS ruleId,
dr.F_QuestionType,
dr.F_PickCount
FROM ftb_cultivate_exam ce
INNER JOIN ftb_cultivate_exam_draw_rule dr ON ce.F_Id = dr.F_ExamId
WHERE ce.F_EnabledMark = 1
AND ce.F_Status IN (0,1)
AND ce.F_ExamType = 0
AND FIND_IN_SET(#{bankId}, ce.F_DrawDataBase)
AND dr.F_QuestionType IN
<foreach collection="typeList" item="type" open="(" separator="," close=")">
#{type}
</foreach>
</select>
<!-- 查询老版本考试列表 -->
<select id="getOldExamList" resultType="jnpf.model.cultivate.resp.ExamPaperVo">
select ce.F_Id examId, ce.F_PaperId paperId, cast(ce.F_ExamTime / 60 as UNSIGNED) examTime,
tp.F_QuestionNumber questionNumber, tp.F_TotalScore totalScore, tp.F_Type drawMode, tp.F_RelationQuestionBankId drawDataBase,
case tp.F_Type when 2 then 1 else tp.F_NeedUpdate end needUpdate,
case ce.F_PassType when 1 then ce.F_PassMark else ROUND(tp.F_TotalScore * ce.F_PassMark / 100, 2) end passScore,
case ce.F_ExcellentType when 1 then ce.F_ExcellentMark else ROUND(tp.F_TotalScore * ce.F_ExcellentMark / 100, 2) end excellentScore
from ftb_cultivate_exam ce
left join ftb_cultivate_test_paper tp on tp.F_Id = ce.F_PaperId
where ce.F_EnabledMark = 1 and ce.F_PaperId is not null
order by ce.F_CreatorTime desc
</select>
<!-- 查询我的考试列表[web] -->
<select id="getMyExamWebList" resultType="jnpf.model.cultivate.v2.exam.vo.MyExamWebVo">
select
eu.F_Id userExamId,
eu.F_ExamId examId,
e.F_ExamName examName,
eu.F_ExamTime examTime,
eu.F_UserId userId,
eu.F_Duration duration,
eu.F_QuestionNumber questionNum,
eu.F_TotalScore totalScore,
eu.F_PassScore passScore,
eu.F_Score score,
DATE_FORMAT(eu.F_FinishTime, '%Y-%m-%d %H:%i:%s') submitTime,
eu.F_Status myExamStatus,
case when eu.F_VersionBatch = e.F_VersionBatch then 1 else 0 end currentVersion
from ftb_cultivate_exam_user eu
left join ftb_cultivate_exam e on e.F_Id = eu.F_ExamId
where eu.F_EnabledMark = 1 and F_UserId = #{userId}
order by eu.F_CreatorTime desc
</select>
</mapper>

View File

@@ -0,0 +1,5 @@
<?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="jnpf.cultivate.mapper.CultivateFileMapper">
</mapper>

View File

@@ -0,0 +1,32 @@
<?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="jnpf.cultivate.mapper.CultivateIdentifyApplyDetailsMapper">
<!--查询鉴定项得分集合-->
<select id="getIdentifyItemList" resultType="jnpf.model.cultivate.vo.identify.IdentifyApplyDetailsInfoVo">
select
fciad.F_Id `id`,
fcii.F_Name `name`,
fcii.F_TotalScore totalScore,
fcii.F_Type type,
fcii.F_MinScore minScore,
fcii.F_MaxScore maxScore,
fcii.F_SortCode sortCode,
fciad.F_Score score,
fciad.F_Remark remark
from ftb_cultivate_identify_apply_details fciad
left join ftb_cultivate_identify_apply_details_backups fcii on fcii.F_Id = fciad.F_ItemsId
<where>
fciad.F_DeleteMark = 0
<if test="id != null and id != ''">
AND fciad.F_ApplyId = #{id}
</if>
</where>
order by fcii.F_SortCode asc
</select>
<!--查询总分数-->
<select id="countSumScore" resultType="java.math.BigDecimal">
select sum(F_Score) from ftb_cultivate_identify_apply_details where F_ApplyId=#{identificationId}
</select>
</mapper>

View File

@@ -0,0 +1,658 @@
<?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="jnpf.cultivate.mapper.CultivateIdentifyApplyMapper">
<!--实操鉴定申请/列表-->
<select id="getPageList" resultType="jnpf.model.cultivate.vo.identify.IdentifyApplyListDbVo">
SELECT
fcia.F_Id id,
fcia.F_Name `name`,
fcia.F_BeIdentifyUserId beIdentifyUserId,
fcia.F_BeOfficialRankInfoJson beOfficialRankInfoJson,
fcit.F_RuleId tableRuleId,
fcit.F_Name tableName,
fcit.F_DeleteMark tableStatus,
fcia.F_Source source,
fcia.F_IdentifyUserId identifyUserId,
fcia.F_OfficialRankInfoJson officialRankInfoJson,
fcia.F_UseTime useTime,
fcia.F_IdentifyTime identifyTime,
fcia.F_Status status,
fcia.F_Result result,
fcia.F_IsInitiate isInitiate
FROM ftb_cultivate_identify_apply fcia
LEFT JOIN ftb_cultivate_identify_apply_table_backups fcit on fcia.F_TableId = fcit.F_Id
<where>
fcia.F_DeleteMark = 0
and fcia.F_IsVisible = 0
<if test="req.innerPowerUserIds!= null and req.innerPowerUserIds.size()>0">
and fcia.F_BeIdentifyUserId in
<foreach collection="req.innerPowerUserIds" item="item" open="(" separator="," close=")">
#{item}
</foreach>
</if>
<if test="req.leaverUserIds != null and req.leaverUserIds.size() >0 ">
and fcia.F_BeIdentifyUserId not in
<foreach collection="req.leaverUserIds" item="item" open="(" separator="," close=")">
#{item}
</foreach>
</if>
<if test="req.keyword != null and req.keyword != ''">
AND (fcia.F_Name like concat('%', #{req.keyword}, '%') or fcit.F_Name like concat('%',
#{req.keyword},'%'))
</if>
<if test="req.status != null">
AND fcia.F_Status = #{req.status}
</if>
<if test="req.result != null">
AND fcia.F_Result = #{req.result}
</if>
<if test="req.orgCode != null and req.orgCode != ''">
AND fcia.F_BeIdentifyOrgList like concat('%', #{req.orgCode}, '%')
</if>
<if test="req.source != null">
AND fcia.F_Source = #{req.source}
</if>
</where>
ORDER BY fcia.F_Status ASC,fcia.F_CreatorTime desc,fcia.F_PlanIdentifyTime ASC
</select>
<!--实操鉴定申请/列表-->
<select id="getList" resultType="jnpf.model.cultivate.vo.identify.IdentifyApplyListDbVo">
SELECT
fcia.F_Id id,
fcia.F_Name `name`,
fcia.F_BeIdentifyUserId beIdentifyUserId,
fcia.F_BeOfficialRankInfoJson beOfficialRankInfoJson,
fcit.F_RuleId tableRuleId,
fcit.F_Name tableName,
fcit.F_DeleteMark tableStatus,
fcia.F_Source source,
fcia.F_IdentifyUserId identifyUserId,
fcia.F_OfficialRankInfoJson officialRankInfoJson,
fcia.F_UseTime useTime,
fcia.F_IdentifyTime identifyTime,
fcia.F_Status status,
fcia.F_Result result,
fcia.F_IsInitiate isInitiate
FROM ftb_cultivate_identify_apply fcia
LEFT JOIN ftb_cultivate_identify_apply_table_backups fcit on fcia.F_TableId = fcit.F_Id
<where>
fcia.F_DeleteMark = 0
and fcia.F_IsVisible = 0
<if test="ids!= null and ids.size()>0">
and fcia.F_Id in
<foreach collection="ids" item="item" open="(" separator="," close=")">
#{item}
</foreach>
</if>
</where>
ORDER BY fcia.F_Status ASC,fcia.F_PlanIdentifyTime ASC
</select>
<!--成员培训进展/分页列表-->
<select id="getUserIdentifyPage" resultType="jnpf.model.cultivate.vo.identify.UserIdentifyPageVo">
SELECT
fcia.F_Id id,
fcia.F_Source source,
fcia.F_Name `name`,
fcit.F_Name tableName,
fcia.F_UseTime useTime,
fcia.F_IdentifyTime identifyTime,
fcia.F_PlanIdentifyTime planIdentifyTime,
fcia.F_Status status,
fcia.F_Result result,
fcia.F_BeIdentifyUserId userId,
fcia.F_IdentifyUserId identifyUserId
FROM ftb_cultivate_identify_apply fcia
LEFT JOIN ftb_cultivate_identify_apply_table_backups fcit on fcia.F_TableId = fcit.F_Id
<where>
fcia.F_DeleteMark = 0
and fcia.F_IsVisible = 0
<if test="userId != null and userId != ''">
AND fcia.F_BeIdentifyUserId = #{userId}
</if>
</where>
ORDER BY fcia.F_Status ASC,fcia.F_PlanIdentifyTime ASC
</select>
<select id="getPageAppListCount" resultType="java.lang.Integer">
SELECT
count(*) as num
FROM ftb_cultivate_identify_apply fcia
LEFT JOIN ftb_cultivate_identify_apply_table_backups fcit on fcia.F_TableId = fcit.F_Id
<where>
fcia.F_DeleteMark = 0
and fcia.F_IsVisible = 0
<if test="req.keyword != null and req.keyword != ''">
AND (fcia.F_Name like concat('%', #{req.keyword}, '%') or fcit.F_Name like concat('%',
#{req.keyword},'%'))
</if>
<if test="req.source != null and req.source == 0">
AND (fcia.F_Source = 0 or fcia.F_Source = 3)
</if>
<if test="req.source != null and req.source != 0">
AND fcia.F_Source = #{req.source}
</if>
<choose>
<when test="req.status == -1">
AND fcia.F_BeIdentifyUserId = #{userId}
AND fcia.F_AppraisalResults = 0
<!-- AND fcia.F_Status = 1-->
</when>
<otherwise>
AND fcia.F_Status = #{req.status}
<if test="userId != null and userId != ''">
AND FIND_IN_SET(#{userId},fcia.F_IdentifyUserId) > 0
</if>
</otherwise>
</choose>
</where>
<choose>
<when test="req.status == -1">
ORDER BY fcia.F_IdentifyTime desc
</when>
<when test="req.status == 0">
ORDER BY fcia.F_Status ASC,fcia.F_CreatorTime desc,fcia.F_PlanIdentifyTime ASC
</when>
<when test="req.status == 1">
ORDER BY fcia.F_IdentifyTime desc
</when>
<otherwise>
ORDER BY fcia.F_PlanIdentifyTime ASC
</otherwise>
</choose>
</select>
<!--实操鉴定申请/app列表-->
<select id="getPageAppList" resultType="jnpf.model.cultivate.vo.identify.IdentifyApplyListAppDbVo">
SELECT
fcia.F_Id id,
fcia.F_Name `name`,
fcit.F_Name tableName,
fcia.F_BeIdentifyUserId beIdentifyUserId,
fcia.F_BeOfficialRankInfoJson beOfficialRankInfoJson,
fcia.F_IdentifyUserId identifyUserId,
fcia.F_OfficialRankInfoJson officialRankInfoJson,
fcia.F_Status status,
fcia.F_Result result,
fcia.F_Source source,
fcia.F_SourceId sourceId,
fcia.F_StudyFinishTime studyFinishTime,
fcia.F_IdentifyTime identifyTime,
fcia.F_PlanIdentifyTime planIdentifyTime,
fcia.F_PostId postId
FROM ftb_cultivate_identify_apply fcia
LEFT JOIN ftb_cultivate_identify_apply_table_backups fcit on fcia.F_TableId = fcit.F_Id
<where>
fcia.F_DeleteMark = 0
and fcia.F_IsVisible = 0
<if test="req.keyword != null and req.keyword != ''">
AND (fcia.F_Name like concat('%', #{req.keyword}, '%') or fcit.F_Name like concat('%',
#{req.keyword},'%'))
</if>
<if test="req.source != null and req.source == 0">
AND (fcia.F_Source = 0 or fcia.F_Source = 3)
</if>
<if test="req.source != null and req.source != 0">
AND fcia.F_Source = #{req.source}
</if>
<choose>
<when test="req.status == -1">
AND fcia.F_BeIdentifyUserId = #{userId}
AND fcia.F_AppraisalResults = 0
<!-- AND fcia.F_Status = 1-->
</when>
<when test="req.status == 0">
AND fcia.F_Status = #{req.status}
<if test="powerUserIds!= null and powerUserIds.size()>0">
and fcia.F_BeIdentifyUserId in
<foreach collection="powerUserIds" item="item" open="(" separator="," close=")">
#{item}
</foreach>
</if>
</when>
<when test="req.status == 1">
AND fcia.F_Status = #{req.status}
<if test="userId != null and userId != ''">
AND FIND_IN_SET(#{userId},fcia.F_IdentifyUserId) > 0
</if>
</when>
<when test="req.status == 2">
AND fcia.F_Status = #{req.status}
<if test="powerUserIds!= null and powerUserIds.size()>0">
and fcia.F_BeIdentifyUserId in
<foreach collection="powerUserIds" item="item" open="(" separator="," close=")">
#{item}
</foreach>
</if>
</when>
</choose>
</where>
<choose>
<when test="req.status == -1">
ORDER BY fcia.F_IdentifyTime desc
</when>
<when test="req.status == 0">
ORDER BY fcia.F_Status ASC,fcia.F_CreatorTime desc,fcia.F_PlanIdentifyTime ASC
</when>
<when test="req.status == 1">
ORDER BY fcia.F_IdentifyTime desc
</when>
<otherwise>
ORDER BY fcia.F_PlanIdentifyTime ASC
</otherwise>
</choose>
</select>
<!--查询鉴定表有多少人使用-->
<select id="getTableUseNumber" resultType="java.lang.Integer">
SELECT COUNT(*)
FROM (SELECT count(*)
FROM ftb_cultivate_identify_apply fcia
where fcia.F_DeleteMark = 0
and fcia.F_IsVisible = 0
and fcia.F_TableId = #{tableId}
group by fcia.F_BeIdentifyUserId) t
</select>
<!--成员培训进展/用户鉴定数据统计-->
<select id="getUserIdentifyStatistics"
resultType="jnpf.model.cultivate.vo.identify.IdentifyApplyStatisticsApiVo">
SELECT
fcia.F_BeIdentifyUserId userId,
sum(IF(fcia.F_Status =1,1,0)) alreadyNumber,
count(*) totalNumber
FROM ftb_cultivate_identify_apply fcia
<where>
fcia.F_DeleteMark = 0
and fcia.F_IsVisible = 0
<if test="userIds!= null and userIds.size()>0">
and fcia.F_BeIdentifyUserId in
<foreach collection="userIds" item="item" open="(" separator="," close=")">
#{item}
</foreach>
</if>
</where>
group by fcia.F_BeIdentifyUserId
</select>
<!--根据岗位id查询岗位学习绑定的实操鉴定主键-->
<select id="querAppplyUserIds" resultType="java.lang.String">
SELECT DISTINCT a.F_IdentifyRecordId as Id
FROM ftb_cultivate_position_identify_result a
JOIN ftb_cultivate_position b ON a.F_PostLearnId = b.F_Id
WHERE a.F_EnabledMark = 0
AND b.F_EnabledMark = 0
AND a.F_PostRankId = #{id}
AND a.F_UserId = #{userId}
AND a.F_Type = 0
ORDER BY a.F_CreatorTime DESC
limit 1
</select>
<!--查询实操鉴定任务列表-->
<select id="queryIdentifyApplyInfo"
resultType="jnpf.model.cultivate.vo.learn.FtbCultivateLearnTaskIdentificationInfoVO">
SELECT
apy.F_Id as identificationId,
apy.F_Status as identificationStatus,
apy.F_Result as identificationResult,
ba.F_Name as identificationName
FROM
ftb_cultivate_identify_apply AS apy
LEFT JOIN ftb_cultivate_identify_apply_table_backups AS ba ON ba.F_Id = apy.F_TableId
<where>
apy.F_DeleteMark = 0
AND apy.F_Source = 4
AND apy.F_SourceId = #{taskId}
AND apy.F_BeIdentifyUserId = #{userId}
</where>
</select>
<!--统计每个鉴定的鉴定人数-->
<select id="groupIdentifyCountNum"
resultType="jnpf.model.cultivate.dto.learn.BatchCommonCountDto">
SELECT
tas.F_TaskId as selectKey,
count( * ) num
FROM
ftb_cultivate_identify_apply AS us
LEFT JOIN ftb_cultivate_identify_apply_table_backups AS ba ON us.F_TableId = ba.F_Id
INNER JOIN ftb_cultivate_learn_task_identification AS tas ON tas.F_IdentificationId = ba.F_TableId
AND tas.F_TaskId = us.F_SourceId
WHERE
us.F_IsVisible = 0 and us.F_DeleteMark = 0 and
tas.F_TaskId IN
<foreach collection="taskIds" item="item" open="(" separator="," close=")">
#{item}
</foreach>
<if test="type==1">
and us.F_Status = 1 AND us.F_Result IN ( 0, 1 )
</if>
GROUP BY
tas.F_TaskId
</select>
<select id="getPageListV2" resultType="jnpf.model.cultivate.v2.apply.vo.V2IdentifyApplyListVo">
SELECT
fcia.F_Id id,
fcia.F_BeIdentifyUserId beIdentifyUserId,
fcit.F_RuleId tableRuleId,
fcit.F_Name tableName,
fcit.F_DeleteMark tableStatus,
fcia.F_Source source,
fcia.F_IdentifyUserId identifyUserId,
fcia.F_UseTime useTime,
fcia.F_IdentifyTime identifyTime,
fcia.F_Status status,
fcia.F_Result result,
fcia.F_IsInitiate isInitiate,
fcia.F_GradeName gradeName
FROM ftb_cultivate_identify_apply fcia
LEFT JOIN ftb_cultivate_identify_apply_table_backups fcit on fcia.F_TableId = fcit.F_Id
<where>
fcia.F_DeleteMark = 0
and fcia.F_IsVisible = 0
<if test="req.innerPowerUserIds!= null and req.innerPowerUserIds.size()>0">
and fcia.F_BeIdentifyUserId in
<foreach collection="req.innerPowerUserIds" item="item" open="(" separator="," close=")">
#{item}
</foreach>
</if>
<if test="req.keyword != null and req.keyword != ''">
AND (
fcia.F_Name like concat('%', #{req.keyword}, '%')
or fcit.F_Name like concat('%',#{req.keyword},'%')
OR fcit.F_RuleId LIKE CONCAT('%',#{req.keyword},'%')
<if test="req.userIdsKeyWord != null and req.userIdsKeyWord.size()>0">
OR(
(fcia.F_IdentifyUserId IN
<foreach collection="req.userIdsKeyWord" open="(" close=")" separator="," item="x">
#{x}
</foreach>
) OR
(fcia.F_BeIdentifyUserId IN
<foreach collection="req.userIdsKeyWord" open="(" close=")" separator="," item="x">
#{x}
</foreach>
)
)
</if>
)
</if>
<if test="req.status != null">
AND fcia.F_Status = #{req.status}
</if>
<if test="req.result != null">
AND fcia.F_Result = #{req.result}
</if>
<if test="req.source != null">
AND fcia.F_Source = #{req.source}
</if>
</where>
ORDER BY fcia.F_Status ASC,fcia.F_CreatorTime desc,fcia.F_PlanIdentifyTime ASC
</select>
<select id="queryMyIdentifyApplyList" resultType="jnpf.model.cultivate.v2.apply.vo.V2IdentifyApplyListAppVo">
SELECT
DISTINCT
fcia.F_Id id,
fcit.F_Name tableName,
fcit.F_CoverUrl as coverUrl,
fcia.F_BeIdentifyUserId beIdentifyUserId,
fcia.F_IdentifyUserId identifyUserId,
fcia.F_Status status,
fcia.F_Result result,
fcia.F_Source source,
fcia.F_SourceId sourceId,
fcia.F_StudyFinishTime studyFinishTime,
fcia.F_IdentifyTime identifyTime
FROM ftb_cultivate_identify_apply fcia
LEFT JOIN ftb_cultivate_identify_apply_table_backups fcit on fcia.F_TableId = fcit.F_Id
<where>
fcia.F_DeleteMark = 0
and fcia.F_IsVisible = 0
AND fcia.F_BeIdentifyUserId = #{userId}
<if test="req.keyWord != null and req.keyWord != ''">
AND fcit.F_Name like concat('%',#{req.keyWord},'%')
</if>
<if test="req.status !=-1">
AND fcit.F_Status = #{req.status}
</if>
</where>
<choose>
<when test="req.status == 0">
order by fcia.F_CreatorTime DESC
</when>
<when test="req.status == 1">
order by FIELD(fcia.F_Result, 1, 0, 2), fcia.F_CreatorTime DESC
</when>
<otherwise>
order by fcia.F_Status ASC, FIELD(fcia.F_Result, 1, 0, 2), fcia.F_CreatorTime DESC
</otherwise>
</choose>
</select>
<select id="queryAppIdentifyApplyList" resultType="jnpf.model.cultivate.v2.apply.vo.V2IdentifyApplyListAppVo">
SELECT
DISTINCT
fcia.F_Id id,
fcit.F_Name tableName,
fcit.F_CoverUrl as coverUrl,
fcia.F_BeIdentifyUserId beIdentifyUserId,
fcia.F_IdentifyUserId identifyUserId,
fcia.F_Status status,
fcia.F_Result result,
fcia.F_Source source,
fcia.F_SourceId sourceId,
fcia.F_StudyFinishTime studyFinishTime,
fcia.F_IdentifyTime identifyTime
FROM ftb_cultivate_identify_apply fcia
LEFT JOIN ftb_cultivate_identify_apply_table_backups fcit on fcia.F_TableId = fcit.F_Id
<where>
fcia.F_DeleteMark = 0
and fcia.F_IsVisible = 0
<if test="req.keyWord != null and req.keyWord != ''">
AND fcit.F_Name like concat('%',#{req.keyWord},'%')
</if>
and (
(
fcia.F_Status = 1
<if test="orgUserIds!= null and orgUserIds.size()>0">
and fcia.F_BeIdentifyUserId in
<foreach collection="orgUserIds" item="item" open="(" separator="," close=")">
#{item}
</foreach>
</if>
and fcia.F_IdentifyUserId = #{loginUserId}
)
or (
fcia.F_Status = 0
and fcia.F_BeIdentifyUserId != #{loginUserId}
and fcia.F_IdentifyUserId = ''
<if test="powerUserIds!= null and powerUserIds.size()>0">
and fcia.F_BeIdentifyUserId in
<foreach collection="powerUserIds" item="item" open="(" separator="," close=")">
#{item}
</foreach>
</if>
)
<if test="myUserIds!= null and myUserIds.size()>0">
or (
fcia.F_Status = 0
and fcia.F_BeIdentifyUserId != #{loginUserId}
and fcia.F_IdentifyUserId != ''
and fcia.F_Id in
<foreach collection="myUserIds" item="item" open="(" separator="," close=")">
#{item}
</foreach>
)
</if>
)
</where>
order by fcia.F_Status ASC, FIELD(fcia.F_Result, 1, 0, 2), fcia.F_CreatorTime DESC
</select>
<select id="queryAppIdentifyApplyListWaiting"
resultType="jnpf.model.cultivate.v2.apply.vo.V2IdentifyApplyListAppVo">
SELECT
DISTINCT
fcia.F_Id id,
fcit.F_Name tableName,
fcit.F_CoverUrl as coverUrl,
fcia.F_BeIdentifyUserId beIdentifyUserId,
fcia.F_IdentifyUserId identifyUserId,
fcia.F_Status status,
fcia.F_Result result,
fcia.F_Source source,
fcia.F_SourceId sourceId,
fcia.F_StudyFinishTime studyFinishTime,
fcia.F_IdentifyTime identifyTime,
fcia.F_CreatorTime creatorTime
FROM ftb_cultivate_identify_apply fcia
LEFT JOIN ftb_cultivate_identify_apply_table_backups fcit on fcia.F_TableId = fcit.F_Id
<where>
fcia.F_DeleteMark = 0
and fcia.F_IsVisible = 0
AND fcia.F_Status = 0
and fcia.F_BeIdentifyUserId != #{loginUserId}
<if test="req.keyWord != null and req.keyWord != ''">
AND fcit.F_Name like concat('%',#{req.keyWord},'%')
</if>
and (
(
fcia.F_IdentifyUserId = ''
<if test="userIds!= null and userIds.size()>0">
and fcia.F_BeIdentifyUserId in
<foreach collection="userIds" item="item" open="(" separator="," close=")">
#{item}
</foreach>
</if>
)
<if test="myUserIds!= null and myUserIds.size()>0">
or (
fcia.F_IdentifyUserId != ''
and fcia.F_Id in
<foreach collection="myUserIds" item="item" open="(" separator="," close=")">
#{item}
</foreach>
)
</if>
)
</where>
order by fcia.F_CreatorTime DESC
</select>
<select id="queryAppIdentifyApplyListComplete"
resultType="jnpf.model.cultivate.v2.apply.vo.V2IdentifyApplyListAppVo">
SELECT
DISTINCT
fcia.F_Id id,
fcit.F_Name tableName,
fcit.F_CoverUrl as coverUrl,
fcia.F_BeIdentifyUserId beIdentifyUserId,
fcia.F_IdentifyUserId identifyUserId,
fcia.F_Status status,
fcia.F_Result result,
fcia.F_Source source,
fcia.F_SourceId sourceId,
fcia.F_StudyFinishTime studyFinishTime,
fcia.F_IdentifyTime identifyTime
FROM ftb_cultivate_identify_apply fcia
LEFT JOIN ftb_cultivate_identify_apply_table_backups fcit on fcia.F_TableId = fcit.F_Id
<where>
fcia.F_DeleteMark = 0
and fcia.F_IsVisible = 0
AND fcia.F_Status = 1
<if test="req.keyWord != null and req.keyWord != ''">
AND fcit.F_Name like concat('%',#{req.keyWord},'%')
</if>
and fcia.F_IdentifyUserId = #{loginUserId}
<if test="userIds!= null and userIds.size()>0">
and fcia.F_BeIdentifyUserId in
<foreach collection="userIds" item="item" open="(" separator="," close=")">
#{item}
</foreach>
</if>
<if test="req.startTime != null and req.startTime != ''">
AND fcia.F_IdentifyTime &gt;= #{req.startTime}
</if>
<if test="req.endTime != null and req.endTime != ''">
AND fcia.F_IdentifyTime &lt;= #{req.endTime}
</if>
</where>
order by FIELD(fcia.F_Result, 1, 0, 2), fcia.F_CreatorTime DESC
</select>
<select id="queryIdentifyApply" resultType="jnpf.entity.cultivate.CultivateIdentifyApply">
SELECT DISTINCT fcia.F_Id id,
fcit.F_Name name,
fcit.F_TableId tableId,
fcia.F_BeIdentifyUserId beIdentifyUserId,
fcia.F_IdentifyUserId identifyUserId,
fcia.F_Status status,
fcia.F_Result result,
fcia.F_Source source,
fcia.F_SourceId sourceId,
fcia.F_StudyFinishTime studyFinishTime,
fcia.F_IdentifyTime identifyTime
FROM ftb_cultivate_identify_apply fcia
LEFT JOIN ftb_cultivate_identify_apply_table_backups fcit on fcia.F_TableId = fcit.F_Id
<where>
fcia.F_DeleteMark = 0
<if test="userId!= null and userId != ''">
AND fcia.F_BeIdentifyUserId = #{userId}
</if>
<if test="identifyIds!= null and identifyIds.size()>0">
and fcit.F_TableId in
<foreach collection="identifyIds" item="item" open="(" separator="," close=")">
#{item}
</foreach>
</if>
and fcia.F_Source = #{source}
and fcia.F_SourceId = #{sourceId}
</where>
</select>
<select id="queryMyIdentifyUserList" resultType="java.lang.String">
SELECT DISTINCT fcia.F_Id beIdentifyUserId
FROM ftb_cultivate_identify_apply fcia
where fcia.F_DeleteMark = 0
AND FIND_IN_SET(#{loginUserId}, fcia.F_IdentifyUserId) > 0
</select>
<!--查询用户已完成的鉴定列表(关联查询鉴定表信息)-->
<select id="queryCompletedIdentitiesWithInfo" resultType="jnpf.model.cultivate.v2.course.vo.UserLearningStatusVo$IdentityInfo">
SELECT
fcia.F_TableId AS tableId,
fcit.F_Name AS identityName
FROM
ftb_cultivate_identify_apply fcia
INNER JOIN ftb_cultivate_identify_apply_table_backups fcit ON fcia.F_TableId = fcit.F_Id
WHERE
fcia.F_DeleteMark = 0
AND fcit.F_DeleteMark = 0
AND fcia.F_Status = 1
AND fcia.F_BeIdentifyUserId = #{userId}
ORDER BY fcia.F_IdentifyTime DESC
</select>
<!--统计岗位学习中已完成的鉴定数量(关联查询鉴定表和备份表)-->
<select id="countCompletedIdentifyByPost" resultType="java.lang.Long">
SELECT COUNT(*)
FROM ftb_cultivate_identify_apply fcia
INNER JOIN ftb_cultivate_identify_apply_table_backups fcit ON fcia.F_TableId = fcit.F_Id
WHERE
fcia.F_DeleteMark = 0
AND fcit.F_DeleteMark = 0
AND fcia.F_BeIdentifyUserId = #{userId}
AND fcia.F_Source = #{source}
AND fcia.F_SourceId = #{sourceId}
AND fcia.F_Status = 1
AND fcit.F_TableId IN
<foreach collection="courseIdentityIds" item="item" open="(" separator="," close=")">
#{item}
</foreach>
</select>
</mapper>

View File

@@ -0,0 +1,47 @@
<?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="jnpf.cultivate.mapper.CultivateIdentifyItemsMapper">
<select id="countForTableId" resultType="jnpf.model.cultivate.dto.learn.BatchCommonCountDto">
SELECT
F_TableId AS selectKey,
COUNT(1) AS num
FROM
ftb_cultivate_identify_items
WHERE
F_DeleteMark = 0
<if test="ids != null and ids.size() > 0 ">
and F_TableId in
<foreach collection="ids" item="item" open="(" separator="," close=")">
#{item}
</foreach>
</if>
GROUP BY
F_TableId
</select>
<select id="listWithCategory" resultType="jnpf.model.cultivate.vo.identify.IdentifyItemsWithCategoryVo">
SELECT
items.F_Id AS id,
items.F_TableId AS tableId,
items.F_Name AS name,
items.F_TotalScore AS score,
items.F_Type AS type,
items.F_MinScore AS minScore,
items.F_MaxScore AS maxScore,
items.F_SortCode AS sortCode,
items.F_PoolId AS poolId,
items.F_IsAbnormal AS isAbnormal,
items.F_CateId AS cateId,
categories.F_Name AS cateName,
items.F_BusinessId AS businessId
FROM
ftb_cultivate_identify_items items
LEFT JOIN
ftb_cultivate_identify_categories categories ON items.F_CateId = categories.F_Id
WHERE items.F_TableId = #{tableId} AND items.F_DeleteMark = 0 order by items.F_SortCode asc
</select>
</mapper>

View File

@@ -0,0 +1,504 @@
<?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="jnpf.cultivate.mapper.CultivateIdentifyTableMapper">
<!--web列表筛选条件查询-->
<sql id="PAGE_LIST_WHERE">
<where>
<if test="groupIds!= null and groupIds.size()>0">
fag.F_Id in
<foreach collection="groupIds" item="item" open="(" separator="," close=")">
#{item}
</foreach>
</if>
<if test="userIds!= null and userIds.size()>0">
and fagu.F_UserId in
<foreach collection="userIds" item="item" open="(" separator="," close=")">
#{item}
</foreach>
</if>
</where>
</sql>
<!-- 鉴定表/列表-->
<select id="getPageList" resultType="jnpf.model.cultivate.vo.identify.IdentifyTableListVo">
SELECT fcit.F_Id id,
fcit.F_Name `name`,
fcit.F_RuleId ruleId,
fcit.F_RuleDesc ruleDesc,
count(fcii.F_Id) identifyCount,
fcit.F_LastModifyTime lastModifyTime
FROM ftb_cultivate_identify_table fcit
LEFT JOIN ftb_cultivate_identify_items fcii on fcii.F_TableId = fcit.F_Id
<where>
fcit.F_DeleteMark = 0
<if test="req.keyword != null and req.keyword != ''">
AND (fcit.F_Name like concat('%', #{req.keyword}, '%') or fcit.F_RuleId like concat('%', #{req.keyword},
'%') )
</if>
</where>
GROUP BY fcit.F_Id
ORDER BY fcit.F_CreatorTime DESC,fcit.F_RuleId ASC
</select>
<!-- 组织列表统计-->
<select id="organizationListStatistics"
resultType="jnpf.model.cultivate.vo.identify.FtbCultivateIdentityOrgWisdomStatisticVO">
SELECT
a.F_BeIdentifyOrgList organizationID ,
a.numberOfPeopleBeingIdentified,
a.F_TableId as tableId,
a.F_Name as appraisalTableName,
IFNULL( b.excellentNumber, 0 ) AS excellentNumber,
ROUND( IFNULL(( b.excellentNumber / a.numberOfPeopleBeingIdentified ) * 100, 0 ), 2 ) excellentRate,
IFNULL( c.qualifiedNumberOfPeople, 0 ) AS qualifiedNumberOfPeople,
ROUND( IFNULL(( c.qualifiedNumberOfPeople / a.numberOfPeopleBeingIdentified ) * 100, 0 ), 2 ) passRate,
IFNULL( d.numberOfUnqualifiedPeople, 0 ) AS numberOfUnqualifiedPeople,
ROUND( IFNULL(( d.numberOfUnqualifiedPeople / a.numberOfPeopleBeingIdentified ) * 100, 0 ), 2 ) failureRate
FROM
(
SELECT
app.F_BeIdentifyOrgList,
COUNT( ba.F_Id ) AS numberOfPeopleBeingIdentified,
ba.F_TableId,
ta.F_Name
FROM
ftb_cultivate_identify_apply AS app
INNER JOIN ftb_cultivate_identify_apply_table_backups AS ba ON app.F_TableId = ba.F_Id
INNER JOIN ftb_cultivate_identify_table AS ta ON ba.F_TableId = ta.F_Id
<where>
app.F_DeleteMark=0
<if test="dto.orgId != null and dto.orgId.size()>0">
and app.F_BeIdentifyOrgList in
<foreach collection="dto.orgId" item="item" open="(" separator="," close=")">
#{item}
</foreach>
</if>
<if test="dto.startTime != null and dto.endTime != null">
and app.F_IdentifyTime BETWEEN #{dto.startTime} AND #{dto.endTime}
</if>
<if test="dto.chooseATypes!= null and dto.chooseATypes.size()>0">
and ta.F_Id in
<foreach collection="dto.chooseATypes" item="item" open="(" separator="," close=")">
#{item}
</foreach>
</if>
</where>
GROUP BY
app.F_BeIdentifyOrgList,
ba.F_TableId
) a
LEFT JOIN (
SELECT
app.F_BeIdentifyOrgList,
COUNT( app.F_Result ) AS excellentNumber,
ba.F_TableId
FROM
ftb_cultivate_identify_apply AS app
INNER JOIN ftb_cultivate_identify_apply_table_backups AS ba ON app.F_TableId = ba.F_Id
WHERE
app.F_DeleteMark=0 and
app.F_Result = "1"
GROUP BY
app.F_BeIdentifyOrgList,
ba.F_TableId
) b ON a.F_TableId = b.F_TableId
AND a.F_BeIdentifyOrgList = b.F_BeIdentifyOrgList
LEFT JOIN (
SELECT
app.F_BeIdentifyOrgList,
COUNT( app.F_Result ) AS qualifiedNumberOfPeople,
ba.F_TableId
FROM
ftb_cultivate_identify_apply AS app
INNER JOIN ftb_cultivate_identify_apply_table_backups AS ba ON app.F_TableId = ba.F_Id
WHERE
app.F_Result = "0" and app.F_DeleteMark=0
GROUP BY
app.F_BeIdentifyOrgList,
ba.F_TableId
) c ON a.F_TableId = c.F_TableId
AND a.F_BeIdentifyOrgList = c.F_BeIdentifyOrgList
LEFT JOIN (
SELECT
app.F_BeIdentifyOrgList,
COUNT( app.F_Result ) AS numberOfUnqualifiedPeople,
ba.F_TableId
FROM
ftb_cultivate_identify_apply AS app
INNER JOIN ftb_cultivate_identify_apply_table_backups AS ba ON app.F_TableId = ba.F_Id
WHERE
app.F_Result = "2" and app.F_DeleteMark=0
GROUP BY
app.F_BeIdentifyOrgList,
ba.F_TableId
) d ON a.F_TableId = d.F_TableId
AND a.F_BeIdentifyOrgList = d.F_BeIdentifyOrgList
ORDER BY
a.F_BeIdentifyOrgList DESC
</select>
<!-- 个人列表统计-->
<select id="personListStatistics"
resultType="jnpf.model.cultivate.vo.identify.FtbCultivateIdentityPersonWisdomStatisticVO">
SELECT
apy.F_Id as id,
apy.F_TableId as tableId,
ta.F_Name as appraisalTableName,
apy.F_BeIdentifyUserId as employeeID,
apy.F_BeIdentifyOrgList as organizationID,
apy.F_BeOfficialRankInfoJson as beIdentifyOrgList,
apy.F_IdentifyUserId as examinerId,
apy.F_IdentifyTime as identificationTime,
apy.F_Status as authenticationStatus,
apy.F_Result as identificationResults,
apy.F_Source as authenticationType
FROM
ftb_cultivate_identify_apply AS apy
INNER JOIN ftb_cultivate_identify_apply_table_backups AS ba ON apy.F_TableId = ba.F_Id
INNER JOIN ftb_cultivate_identify_table AS ta ON ba.F_TableId = ta.F_Id
<where>
apy.F_DeleteMark = 0 and apy.F_IsVisible = 0
<if test="dto.chooseATypes!= null and dto.chooseATypes.size()>0">
AND ta.F_Id in
<foreach collection="dto.chooseATypes" item="item" open="(" separator="," close=")">
#{item}
</foreach>
</if>
<if test="dto.selectPeoples != null and dto.selectPeoples.size()>0 and (dto.appraiserOrAppraisee == '' or dto.appraiserOrAppraisee == null) ">
AND apy.F_BeIdentifyUserId in
<foreach collection="dto.selectPeoples" item="item" open="(" separator="," close=")">
#{item}
</foreach>
</if>
<if test="dto.selectPeoples != null and dto.selectPeoples.size()>0 and dto.appraiserOrAppraisee == 1">
AND apy.F_BeIdentifyUserId in
<foreach collection="dto.selectPeoples" item="item" open="(" separator="," close=")">
#{item}
</foreach>
</if>
<if test="dto.selectPeoples != null and dto.selectPeoples.size()>0 and dto.appraiserOrAppraisee == 0">
AND apy.F_IdentifyUserId in
<foreach collection="dto.selectPeoples" item="item" open="(" separator="," close=")">
#{item}
</foreach>
</if>
<if test="dto.leaverUserIds != null and dto.leaverUserIds.size()>0">
AND apy.F_IdentifyUserId not in
<foreach collection="dto.leaverUserIds" item="item" open="(" separator="," close=")">
#{item}
</foreach>
</if>
<if test="dto.tableId != null and dto.tableId != ''">
and apy.F_TableId =#{dto.tableId}
</if>
<if test="dto.tableId != null and dto.tableId != ''">
AND apy.F_Id = #{dto.tableId}
</if>
<if test="dto.startTime != null and dto.endTime != null">
AND apy.F_IdentifyTime BETWEEN #{dto.startTime} AND #{dto.endTime}
</if>
<if test="dto.authenticationType != null and dto.authenticationType != ''">
AND apy.F_Source = #{dto.authenticationType}
</if>
<if test="dto.identificationResults != null and dto.identificationResults != ''">
AND apy.F_Result = #{dto.identificationResults}
</if>
<if test="dto.authenticationStatus != null and dto.authenticationStatus != ''">
AND apy.F_Status = #{dto.authenticationStatus}
</if>
</where>
</select>
<!-- 获取评估人数量-->
<select id="numberOfAppraisers" resultType="java.lang.String">
SELECT F_PostRankId FROM ftb_cultivate_position_exam_identify
WHERE F_EnabledMark = 0 and F_IdentifyId = #{tableId} AND F_PostRankId IN
<foreach collection="postionIds" item="item" open="(" separator="," close=")">
#{item}
</foreach>
</select>
<!-- 查询当前人员的评估信息-->
<select id="organizationListStatisticsForUser"
resultType="jnpf.model.cultivate.vo.identify.FtbCultivateIdentityOrgWisdomStatisticVO">
SELECT
a.numberOfPeopleBeingIdentified,
a.F_TableId as tableId,
a.F_Name as appraisalTableName,
IFNULL( b.excellentNumber, 0 ) AS excellentNumber,
ROUND( IFNULL(( b.excellentNumber / a.numberOfPeopleBeingIdentified ) * 100, 0 ), 2 ) excellentRate,
IFNULL( c.qualifiedNumberOfPeople, 0 ) AS qualifiedNumberOfPeople,
ROUND( IFNULL(( c.qualifiedNumberOfPeople / a.numberOfPeopleBeingIdentified ) * 100, 0 ), 2 ) passRate,
IFNULL( d.numberOfUnqualifiedPeople, 0 ) AS numberOfUnqualifiedPeople,
ROUND( IFNULL(( d.numberOfUnqualifiedPeople / a.numberOfPeopleBeingIdentified ) * 100, 0 ), 2 ) failureRate
FROM
(
SELECT
COUNT( ba.F_Id ) AS numberOfPeopleBeingIdentified,
ba.F_TableId,
ta.F_Name
FROM
ftb_cultivate_identify_apply AS app
INNER JOIN ftb_cultivate_identify_apply_table_backups AS ba ON app.F_TableId = ba.F_Id
INNER JOIN ftb_cultivate_identify_table AS ta ON ba.F_TableId = ta.F_Id
<where>
app.F_DeleteMark = 0
and app.F_IsVisible = 0
<if test="dto.userIds != null and dto.userIds.size()>0">
and app.F_BeIdentifyUserId in
<foreach collection="dto.userIds" item="item" open="(" separator="," close=")">
#{item}
</foreach>
</if>
<if test="dto.startTime != null and dto.endTime != null">
and app.F_IdentifyTime BETWEEN #{dto.startTime} AND #{dto.endTime}
</if>
<if test="dto.chooseATypes!= null and dto.chooseATypes.size()>0">
and ta.F_Id in
<foreach collection="dto.chooseATypes" item="item" open="(" separator="," close=")">
#{item}
</foreach>
</if>
</where>
GROUP BY
ba.F_TableId
) a
LEFT JOIN (
SELECT
COUNT( app.F_Result ) AS excellentNumber,
ba.F_TableId
FROM
ftb_cultivate_identify_apply AS app
INNER JOIN ftb_cultivate_identify_apply_table_backups AS ba ON app.F_TableId = ba.F_Id
WHERE
app.F_Result = "1"
and app.F_DeleteMark = 0
and app.F_IsVisible = 0
<if test="dto.userIds != null and dto.userIds.size()>0">
and app.F_BeIdentifyUserId in
<foreach collection="dto.userIds" item="item" open="(" separator="," close=")">
#{item}
</foreach>
</if>
<if test="dto.startTime != null and dto.endTime != null">
and app.F_IdentifyTime BETWEEN #{dto.startTime} AND #{dto.endTime}
</if>
GROUP BY
ba.F_TableId
) b ON a.F_TableId = b.F_TableId
LEFT JOIN (
SELECT
COUNT( app.F_Result ) AS qualifiedNumberOfPeople,
ba.F_TableId
FROM
ftb_cultivate_identify_apply AS app
INNER JOIN ftb_cultivate_identify_apply_table_backups AS ba ON app.F_TableId = ba.F_Id
WHERE
app.F_Result = "0"
and app.F_DeleteMark = 0
and app.F_IsVisible = 0
<if test="dto.userIds != null and dto.userIds.size()>0">
and app.F_BeIdentifyUserId in
<foreach collection="dto.userIds" item="item" open="(" separator="," close=")">
#{item}
</foreach>
</if>
<if test="dto.startTime != null and dto.endTime != null">
and app.F_IdentifyTime BETWEEN #{dto.startTime} AND #{dto.endTime}
</if>
GROUP BY
ba.F_TableId
) c ON a.F_TableId = c.F_TableId
LEFT JOIN (
SELECT
COUNT( app.F_Result ) AS numberOfUnqualifiedPeople,
ba.F_TableId
FROM
ftb_cultivate_identify_apply AS app
INNER JOIN ftb_cultivate_identify_apply_table_backups AS ba ON app.F_TableId = ba.F_Id
WHERE
app.F_Result = "2"
and app.F_DeleteMark = 0
and app.F_IsVisible = 0
<if test="dto.userIds != null and dto.userIds.size()>0">
and app.F_BeIdentifyUserId in
<foreach collection="dto.userIds" item="item" open="(" separator="," close=")">
#{item}
</foreach>
</if>
<if test="dto.startTime != null and dto.endTime != null">
and app.F_IdentifyTime BETWEEN #{dto.startTime} AND #{dto.endTime}
</if>
GROUP BY
ba.F_TableId
) d ON a.F_TableId = d.F_TableId
</select>
<!-- 查询资格信息-->
<select id="queryQualificationInformation"
resultType="jnpf.model.cultivate.vo.position.web.FtbCultivatePositionIdentifyVO">
SELECT
a.numberOfPeopleBeingIdentified,
IFNULL( c.numberAppraisal, 0 ) AS numberAppraisal,
ROUND( IFNULL(( c.numberAppraisal / a.numberOfPeopleBeingIdentified ) * 100, 0 ), 2 ) appraisalPassRate
FROM
(
SELECT
COUNT( app.F_Id ) AS numberOfPeopleBeingIdentified
FROM
ftb_cultivate_identify_apply AS app
WHERE
app.F_Source = 2
AND app.F_DeleteMark = 0
AND app.F_IsVisible = 0
<if test="userIdsByGradesId != null and userIdsByGradesId.size()>0">
and app.F_BeIdentifyUserId in
<foreach collection="userIdsByGradesId" item="item" open="(" separator="," close=")">
#{item}
</foreach>
</if>
AND app.F_Id = (
SELECT * FROM (
SELECT
DISTINCT a.F_IdentifyRecordId
FROM
ftb_cultivate_position_identify_result a
JOIN ftb_cultivate_position b ON a.F_PostLearnId = b.F_Id
WHERE
a.F_EnabledMark = 0
AND b.F_EnabledMark = 0
AND a.F_PostRankId = #{postId}
AND a.F_UserId in
<foreach collection="userIdsByGradesId" item="item" open="(" separator="," close=")">
#{item}
</foreach>
ORDER BY a.F_CreatorTime DESC
limit 1
) as abFIRI
)
) a,(
SELECT
COUNT( app.F_Result ) AS numberAppraisal
FROM
ftb_cultivate_identify_apply AS app
WHERE
app.F_Result IN ( 0, 1 )
AND app.F_Source = 2
AND app.F_DeleteMark = 0
AND app.F_IsVisible = 0
<if test="userIdsByGradesId != null and userIdsByGradesId.size()>0">
and app.F_BeIdentifyUserId in
<foreach collection="userIdsByGradesId" item="item" open="(" separator="," close=")">
#{item}
</foreach>
</if>
AND app.F_Id = (
SELECT * FROM (
SELECT
DISTINCT a.F_IdentifyRecordId
FROM
ftb_cultivate_position_identify_result a
JOIN ftb_cultivate_position b ON a.F_PostLearnId = b.F_Id
WHERE
a.F_EnabledMark = 0
AND b.F_EnabledMark = 0
AND a.F_PostRankId = #{postId}
AND a.F_UserId in
<foreach collection="userIdsByGradesId" item="item" open="(" separator="," close=")">
#{item}
</foreach>
ORDER BY a.F_CreatorTime DESC
limit 1
) as abFIRI
)
) c
</select>
<!-- 查询合格人员列表-->
<select id="queryTheListOfQualifiedPersons"
resultType="jnpf.model.cultivate.vo.position.web.FtbCultivatePositionIdentifyPersonVO">
SELECT
re.F_UserId userId,
apy.F_Result isPassTheIdentification,
SUM( de.F_Score ) identificationScore
FROM
ftb_cultivate_position_identify_result AS re
INNER JOIN ftb_cultivate_identify_apply AS apy ON re.F_IdentifyRecordId = apy.F_Id
INNER JOIN ftb_cultivate_identify_apply_details AS de ON de.F_ApplyId = apy.F_Id
WHERE
apy.F_BeIdentifyUserId IN
<foreach collection="userIds" item="item" open="(" separator="," close=")">
#{item}
</foreach>
AND re.F_PostRankId = #{positionId}
AND apy.F_Status = 1
AND apy.F_Source = 2
AND apy.F_DeleteMark = 0
AND apy.F_IsVisible = 0
AND re.F_IdentifyId = (
SELECT
a.F_IdentifyId
FROM
ftb_cultivate_position_exam_identify a
JOIN ftb_cultivate_position b ON a.F_PostLearnId = b.F_Id
WHERE
a.F_EnabledMark = 0
AND b.F_EnabledMark = 0
AND a.F_PostRankId = #{positionId}
)
GROUP BY
re.F_UserId
</select>
<!-- 查询当前人员的评估信息-->
<select id="currentPersonSAssessmentInformation"
resultType="jnpf.model.cultivate.vo.position.web.FtbCultivatePositionIdentifyPersonVO">
SELECT
apy.F_BeIdentifyUserId userId,
apy.F_Result isPassTheIdentification,
SUM( de.F_Score ) identificationScore
FROM
ftb_cultivate_identify_apply AS apy
INNER JOIN ftb_cultivate_identify_apply_details AS de ON de.F_ApplyId = apy.F_Id
WHERE
apy.F_BeIdentifyUserId = #{userId}
AND apy.F_Status = 1
AND apy.F_Source = 2
AND apy.F_DeleteMark = 0
AND apy.F_IsVisible = 0
AND apy.F_Id in
<foreach collection="applyIds" item="item" open="(" separator="," close=")">
#{item}
</foreach>
</select>
<select id="getPageListV2" resultType="jnpf.model.cultivate.v2.identify.vo.V2IdentifyTableListVo">
SELECT fcit.F_Id id,
fcit.F_Name `name`,
fcit.F_RuleId ruleId,
fcit.F_RuleDesc ruleDesc,
fcit.F_LastModifyTime lastModifyTime,
fcit.F_LabelId labelId,
fl.F_Name labelName,
fcit.F_CoverId coverId,
fcit.F_CoverUrl coverUrl,
fcit.F_IsAbnormal as isAbnormal
FROM ftb_cultivate_identify_table fcit left join ftb_cultivate_label fl on fcit.F_LabelId = fl.F_Id
<where>
fcit.F_DeleteMark = 0
<if test="params.keyWord != null and params.keyWord != ''">
AND (fcit.F_Name like concat('%', #{params.keyWord}, '%') or fcit.F_RuleId like concat('%', #{params.keyWord},
'%') )
</if>
<if test="params.isAbnormal != null">
and fcit.F_IsAbnormal = #{params.isAbnormal}
</if>
<if test="params.labelId != null and params.labelId != '' and '1'.toString() != params.labelId">
and fcit.F_LabelId = #{params.labelId}
</if>
<if test="params.labelId != null and params.labelId != '' and '1'.toString() == params.labelId">
and (fcit.F_LabelId = '' or fcit.F_LabelId is null)
</if>
</where>
ORDER BY fcit.F_CreatorTime DESC,fcit.F_RuleId ASC
</select>
</mapper>

View File

@@ -0,0 +1,48 @@
<?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="jnpf.cultivate.mapper.CultivatePositionCourseLogMapper">
<!-- 通用结果映射 -->
<resultMap id="baseResultMap" type="jnpf.entity.cultivate.CultivatePositionCourseLogEntity">
<result column="F_Id" property="id"/>
<result column="F_EnabledMark" property="enabledMark"/>
<result column="F_CreatorUserId" property="creatorUserId"/>
<result column="F_CreatorTime" property="creatorTime"/>
<result column="F_LastModifyUserId" property="lastModifyUserId"/>
<result column="F_LastModifyTime" property="lastModifyTime"/>
<result column="F_TenantId" property="tenantId"/>
<result column="F_PostLearnId" property="postLearnId"/>
<result column="F_PostId" property="postId"/>
<result column="F_GradeId" property="gradeId"/>
<result column="F_CourseId" property="courseId"/>
<result column="F_UserId" property="userId"/>
<result column="F_State" property="state"/>
<result column="F_ExamId" property="examId"/>
<result column="F_UserExamId" property="userExamId"/>
<result column="F_UserExamStatus" property="userExamStatus"/>
<result column="F_IdentifyId" property="identifyId"/>
<result column="F_UserIdentifyId" property="userIdentifyId"/>
<result column="F_UserUserIdentifyStatus" property="userIdentifyStatus"/>
<result column="F_HasExam" property="hasExam"/>
<result column="F_HasIdentity" property="hasIdentity"/>
</resultMap>
<!-- 根据用户ID和学习地图ID查询岗位学习课程记录 -->
<select id="queryByUserIdAndPostLearnId" resultMap="baseResultMap">
SELECT *
FROM ftb_cultivate_position_course_log
WHERE F_UserId = #{userId}
AND F_PostLearnId = #{postLearnId}
AND F_EnabledMark = 0
ORDER BY F_CreatorTime DESC
</select>
<select id="queryMyAllCompletePositionCourse" resultMap="baseResultMap">
SELECT *
FROM ftb_cultivate_position_course_log
WHERE F_UserId = #{userId}
AND F_EnabledMark = 0
AND F_State = 2
ORDER BY F_CreatorTime DESC
</select>
</mapper>

View File

@@ -0,0 +1,91 @@
<?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="jnpf.cultivate.mapper.FtbCourseGainedCommentMapper">
<!-- 通用结果映射 -->
<resultMap id="baseResultMap" type="jnpf.model.cultivate.po.gained.FtbCourseGainedCommentEntity">
<id column="F_Id" property="id"/>
<result column="F_CourseId" property="courseId"/>
<result column="F_ChapterId" property="chapterId"/>
<result column="F_GainedId" property="gainedId"/>
<result column="F_Content" property="content"/>
<result column="F_ParentId" property="parentId"/>
<result column="F_OrganizeId" property="organizeId"/>
<result column="F_PositionId" property="positionId"/>
<result column="F_Account" property="account"/>
<result column="F_RealName" property="realName"/>
<result column="F_CreatorTime" property="creatorTime"/>
<result column="F_CreatorUserId" property="creatorUserId"/>
</resultMap>
<!-- app 端评论分页列表查询 -->
<select id="appCommentPage" resultType="jnpf.model.cultivate.v2.gained.vo.V2AppCourseGainedCommentVO">
SELECT
c.F_Id id,
c.F_CourseId courseId,
c.F_ChapterId chapterId,
c.F_GainedId gainedId,
c.F_Content content,
c.F_ParentId parentId,
c.F_OrganizeId organizeId,
c.F_PositionId positionId,
c.F_Account account,
c.F_RealName realName,
c.F_CreatorTime creatorTime,
c.F_CreatorUserId creatorUserId
FROM ftb_cultivate_course_gained_comment c
WHERE c.F_GainedId = #{req.gainedId} and (c.F_ParentId ="" or c.F_ParentId IS NULL)
ORDER BY c.F_CreatorTime desc
</select>
<select id="appSimpleComment" resultType="jnpf.model.cultivate.v2.gained.vo.V2SimpleCourseGainedCommentVO">
SELECT c.F_Id id,
c.F_ParentId parentId
FROM ftb_cultivate_course_gained_comment c
WHERE c.F_GainedId = #{gainedId}
</select>
<select id="queryAllByIds" resultType="jnpf.model.cultivate.po.gained.FtbCourseGainedCommentEntity">
SELECT
c.F_Id id,
c.F_CourseId courseId,
c.F_ChapterId chapterId,
c.F_GainedId gainedId,
c.F_Content content,
c.F_ParentId parentId,
c.F_OrganizeId organizeId,
c.F_PositionId positionId,
c.F_Account account,
c.F_RealName realName,
c.F_CreatorTime creatorTime,
c.F_CreatorUserId creatorUserId
FROM ftb_cultivate_course_gained_comment c
WHERE c.F_Id IN
<foreach item="item" collection="childIds" separator="," open="(" close=")" index="">
#{item}
</foreach>
ORDER BY c.F_CreatorTime asc
</select>
<select id="queryNextAllComment" resultType="jnpf.model.cultivate.po.gained.FtbCourseGainedCommentEntity">
SELECT
c.F_Id id,
c.F_CourseId courseId,
c.F_ChapterId chapterId,
c.F_GainedId gainedId,
c.F_Content content,
c.F_ParentId parentId,
c.F_OrganizeId organizeId,
c.F_PositionId positionId,
c.F_Account account,
c.F_RealName realName,
c.F_CreatorTime creatorTime,
c.F_CreatorUserId creatorUserId
FROM ftb_cultivate_course_gained_comment c
WHERE c.F_Path LIKE CONCAT(#{firstCommentId}, '%')
ORDER BY c.F_CreatorTime asc
</select>
</mapper>

View File

@@ -0,0 +1,14 @@
<?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="jnpf.cultivate.mapper.FtbCourseGainedLikeMapper" >
<!-- 删除指定用户在指定心得下的点赞-->
<delete id="deleteLikeByGainedId">
delete from ftb_cultivate_course_gained_like
where F_GainedId = #{gainedId} and F_LikeUserId = #{likeUserId}
</delete>
<!-- 获取用户有无对该心得点赞-->
<select id="getMyLike" resultType="java.lang.Integer">
select count(0) from ftb_cultivate_course_gained_like where F_GainedId = #{GainedId} and F_LikeUserId = #{likeUserId}
</select>
</mapper>

View File

@@ -0,0 +1,11 @@
<?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="jnpf.cultivate.mapper.FtbCourseGainedMapper">
<!-- 获取用户有无对该心得点赞-->
<select id="getGainedListOfChapterEnd" resultType="jnpf.model.cultivate.po.gained.FtbCourseGainedEntity">
select g.*,c.commentNum from (select F_CourseId courseId,F_ChapterId chapterId,F_Content content,F_Status `status`,F_ReadType readType,F_OrganizeId organizeId,F_PositionId positionId,F_CreatorUserId creatorUserId,F_Id id,F_CreatorTime creatorTime
from ftb_cultivate_course_gained where F_ChapterId = #{chapterId} and F_EnabledMark = 1) g left join (select F_GainedId,count(1) commentNum from ftb_training_course_gained_comment GROUP BY F_GainedId ) c on g.id = c.F_GainedId ORDER BY c.commentNum desc,g.creatorTime desc limit 2
</select>
</mapper>

View File

@@ -0,0 +1,23 @@
<?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="jnpf.cultivate.mapper.FtbCultivateAssessmentPointsMapper">
<resultMap id="BaseResultMap" type="jnpf.model.cultivate.po.FtbCultivateAssessmentPoints">
<!--@mbg.generated-->
<!--@Table ftb_cultivate_assessment_points-->
<id column="F_Id" jdbcType="VARCHAR" property="fId" />
<result column="F_Name" jdbcType="VARCHAR" property="fName" />
<result column="F_EnabledMark" jdbcType="INTEGER" property="fEnabledmark" />
<result column="F_CreatorUserId" jdbcType="VARCHAR" property="fCreatoruserid" />
<result column="F_CreatorTime" jdbcType="TIMESTAMP" property="fCreatortime" />
<result column="F_LastModifyUserId" jdbcType="VARCHAR" property="fLastmodifyuserid" />
<result column="F_LastModifyTime" jdbcType="TIMESTAMP" property="fLastmodifytime" />
<result column="F_DeleteUserId" jdbcType="VARCHAR" property="fDeleteuserid" />
<result column="F_DeleteTime" jdbcType="TIMESTAMP" property="fDeletetime" />
<result column="F_TenantId" jdbcType="VARCHAR" property="fTenantid" />
</resultMap>
<sql id="Base_Column_List">
<!--@mbg.generated-->
F_Id, F_Name, F_EnabledMark, F_CreatorUserId, F_CreatorTime, F_LastModifyUserId,
F_LastModifyTime, F_DeleteUserId, F_DeleteTime, F_TenantId
</sql>
</mapper>

View File

@@ -0,0 +1,5 @@
<?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="jnpf.cultivate.mapper.FtbCultivateCaseBaseLikeMapper">
</mapper>

View File

@@ -0,0 +1,89 @@
<?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="jnpf.cultivate.mapper.FtbCultivateCaseBaseMapper">
<!-- 用于Web端展示的案例列表查询 -->
<select id="listDisplay" resultType="jnpf.model.cultivate.vo.casebase.FtbCultivateCaseBaseVO">
SELECT
ca.F_Id AS id,
ca.F_CreatorUserId AS creatorUserId,
ca.F_CaseDescription as caseDescription,
ca.F_CreatorTime AS creatorTime,
ca.F_LastModifyTime AS lastModifyTime,
ca.F_CaseName caseName,
ca.F_Status `status`,
ca.F_SystemCaseId AS systemCaseId,
sa.F_Name AS creatorUserName,
ca.F_AuditUserId AS auditUserId,
ca.F_AuditTime AS auditTime,
IFNULL( ( SELECT COUNT( F_Id ) FROM ftb_cultivate_case_base_like WHERE F_GainedId = ca.F_Id ), 0) AS numberOfLikes,
IFNULL( ( SELECT COUNT( F_Id ) FROM ftb_cultivate_case_base_like WHERE F_GainedId = ca.F_Id and F_LikeUserId = #{dto.userId} ), 0) AS haveYouLikedIt
FROM
ftb_cultivate_case_base AS ca
LEFT JOIN ftb_personnels_staff_roster AS sa ON ca.F_CreatorUserId = sa.F_UserId
<where>
<if test="dto.flag != null and dto.flag != '' and dto.flag == 0">
AND ca.F_Status != 0
</if>
<if test="dto.flag != null and dto.flag != '' and dto.flag == 1">
AND ca.F_Status = 2
</if>
<if test="dto.keyWords != null and dto.keyWords != ''">
AND
(
ca.F_CaseName LIKE CONCAT('%',#{dto.keyWords},'%')
or ca.F_SystemCaseId LIKE CONCAT('%',#{dto.keyWords},'%')
)
</if>
<if test="dto.approvalStatus != null and dto.approvalStatus != ''">
AND ca.F_Status = #{dto.approvalStatus}
</if>
<if test="dto.flag != null and dto.flag != '' and dto.flag == 2">
AND ca.F_CreatorUserId = #{dto.userId}
</if>
</where>
ORDER BY
ca.F_CreatorTime DESC
</select>
<!-- 用于移动端展示的案例列表查询 -->
<select id="listDisplayForApp" resultType="jnpf.model.cultivate.vo.casebase.FtbCultivateCaseBaseVO">
SELECT
ca.F_Id AS id,
ca.F_CreatorUserId AS creatorUserId,
ca.F_CaseDescription as caseDescription,
ca.F_CreatorTime AS creatorTime,
ca.F_LastModifyTime AS lastModifyTime,
ca.F_CaseName caseName,
ca.F_Status `status`,
ca.F_SystemCaseId AS systemCaseId,
sa.F_Name AS creatorUserName,
ca.F_AuditUserId AS auditUserId,
ca.F_AuditTime AS auditTime,
IFNULL( ( SELECT COUNT( F_Id ) FROM ftb_cultivate_case_base_like WHERE F_GainedId = ca.F_Id ), 0) AS numberOfLikes,
IFNULL( ( SELECT COUNT( F_Id ) FROM ftb_cultivate_case_base_like WHERE F_GainedId = ca.F_Id and F_LikeUserId = #{dto.userId} ), 0) AS haveYouLikedIt
FROM
ftb_cultivate_case_base AS ca
LEFT JOIN ftb_personnels_staff_roster AS sa ON ca.F_CreatorUserId = sa.F_UserId
<where>
<if test="dto.flag != null and dto.flag != '' and dto.flag == 0">
AND ca.F_Status != 0
</if>
<if test="dto.flag != null and dto.flag != '' and dto.flag == 1">
AND ca.F_Status = 2
</if>
<if test="dto.keyWords != null and dto.keyWords != ''">
AND ca.F_CaseName LIKE CONCAT('%',#{dto.keyWords},'%')
</if>
<if test="dto.approvalStatus != null and dto.approvalStatus != ''">
AND ca.F_Status = #{dto.approvalStatus}
</if>
<if test="dto.flag != null and dto.flag != '' and dto.flag == 2">
AND ca.F_CreatorUserId = #{dto.userId}
</if>
</where>
ORDER BY
ca.F_LastModifyTime desc
</select>
</mapper>

View File

@@ -0,0 +1,18 @@
<?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="jnpf.cultivate.mapper.FtbCultivateCertificateImagesMapper">
<select id="listAll" resultType="jnpf.model.cultivate.po.certificate.FtbCertificateImagesEntity">
select F_Id as id,
F_Path as path,
F_Type as type,
F_IsSystem as isSystem,
F_Sorts as sorts
from ftb_cultivate_certificate_image
order by F_IsSystem desc, F_Sorts desc
</select>
<select id="queryMaxSort" resultType="java.lang.Integer">
select max(F_Sorts) from ftb_cultivate_certificate_image
</select>
</mapper>

View File

@@ -0,0 +1,133 @@
<?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="jnpf.cultivate.mapper.FtbCultivateCertificateMapper">
<!--统计组织列表信息-->
<select id="organizationListStatistics"
resultType="jnpf.model.cultivate.vo.certificate.FtbCertificateOrgWisdomStatisticVO">
SELECT
a.*
FROM
(
SELECT
ca.F_Id certificateId,
ca.F_Name certificateName,
us.F_OrganizeId AS orgID,
ca.F_Status AS onShelfStatus,
COUNT( DISTINCT us.F_UserId ) AS numberOfPeopleIssued,
ca.F_CreatorTime,
ca.F_LastModifyTime
FROM
ftb_cultivate_certificate_user AS us
RIGHT JOIN ftb_cultivate_certificate ca ON us.F_CertificateId = ca.F_Id
<where>
ca.F_EnabledMark = 1 and us.F_EnabledMark=1
<if test="statisticDTO.onShelfStatus != null and statisticDTO.onShelfStatus != ''">
AND ca.F_Status = #{statisticDTO.onShelfStatus}
</if>
<if test="statisticDTO.startTime != null and statisticDTO.endTime != null">
and us.F_CreatorTime BETWEEN #{statisticDTO.startTime} AND #{statisticDTO.endTime}
</if>
<if test="statisticDTO.innerPowerUserIds != null and statisticDTO.innerPowerUserIds.size() > 0">
and us.F_UserId in
<foreach collection="statisticDTO.innerPowerUserIds" item="userId" open="(" separator="," close=")">
#{userId}
</foreach>
</if>
<if test="statisticDTO.chooseATypes != null and statisticDTO.chooseATypes.size() > 0">
and ca.F_Id in
<foreach collection="statisticDTO.chooseATypes" item="chooseAType" open="(" separator="," close=")">
#{chooseAType}
</foreach>
</if>
</where>
GROUP BY
us.F_OrganizeId,ca.F_Id
) a
<where>
a.numberOfPeopleIssued != 0
</where>
ORDER BY
a.F_LastModifyTime DESC,
a.F_CreatorTime DESC,
a.certificateName DESC
</select>
<!--统计个人维度信息-->
<select id="personalDimensionStatistics"
resultType="jnpf.model.cultivate.vo.certificate.FtbCertificatePersonWisdomStatisticVO">
SELECT
user.F_Id,
user.F_CertificateId,
user.F_CertificateName certificateName,
user.F_ExpireTime expirationTime,
user.F_UserId employeeID,
user.F_UserName employeeSName,
user.F_OrganizeId orgID,
user.F_PositionId sysPostId,
user.F_EffectTime issueTime,
user.F_Status effectiveStatus
FROM
ftb_cultivate_certificate_user as user inner join ftb_cultivate_certificate as ce
on user.F_CertificateId = ce.F_Id
<where>
ce.F_EnabledMark = 1 and user.F_EnabledMark=1
<if test="dto.certificateId != null and dto.certificateId !=''">
and user.F_CertificateId =#{dto.certificateId}
</if>
<if test="dto.chooseATypes != null and dto.chooseATypes.size() > 0">
and user.F_CertificateId in
<foreach collection="dto.chooseATypes" item="item" open="(" separator="," close=")">
#{item}
</foreach>
</if>
<if test="dto.effectiveStatus != null and dto.effectiveStatus != 3 and dto.effectiveStatus != '' ">
and user.F_Status =#{dto.effectiveStatus}
</if>
<if test="dto.effectiveStatus != null and dto.effectiveStatus == 3 and dto.effectiveStatus != '' ">
and ce.F_ExpireType = 0
</if>
<if test="dto.startTime != null and dto.endTime != null">
and user.F_CreatorTime BETWEEN #{dto.startTime} AND #{dto.endTime}
</if>
<if test="dto.realUserIds != null and dto.realUserIds.size() > 0">
and user.F_UserId in
<foreach collection="dto.realUserIds" item="userId" open="(" separator="," close=")">
#{userId}
</foreach>
</if>
</where>
GROUP BY
user.F_UserId,user.F_CertificateId
order by user.F_CreatorTime desc
</select>
<select id="organizationListStatisticsAll"
resultType="jnpf.model.cultivate.vo.certificate.FtbCertificateQueryStatisticAllVO">
SELECT
us.F_Id certificateId,
us.F_UserId userId,
ca.F_Status AS onShelfStatus,
ca.F_Name certificateName,
ca.F_Id id
FROM
ftb_cultivate_certificate_user AS us
RIGHT JOIN ftb_cultivate_certificate ca ON us.F_CertificateId = ca.F_Id
<where>
ca.F_EnabledMark = 1 and us.F_EnabledMark=1
<if test="statisticDTO.onShelfStatus != null and statisticDTO.onShelfStatus != ''">
AND ca.F_Status = #{statisticDTO.onShelfStatus}
</if>
<if test="statisticDTO.startTime != null and statisticDTO.endTime != null">
and us.F_CreatorTime BETWEEN #{statisticDTO.startTime} AND #{statisticDTO.endTime}
</if>
<if test="statisticDTO.chooseATypes != null and statisticDTO.chooseATypes.size() > 0">
and ca.F_Id in
<foreach collection="statisticDTO.chooseATypes" item="chooseAType" open="(" separator="," close=")">
#{chooseAType}
</foreach>
</if>
</where>
</select>
</mapper>

View File

@@ -0,0 +1,5 @@
<?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="jnpf.cultivate.mapper.FtbCultivateCertificateUserMapper">
</mapper>

View File

@@ -0,0 +1,73 @@
<?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="jnpf.cultivate.mapper.FtbCultivateChapterTestMapper">
<resultMap id="chapterTestInfo" type="jnpf.model.cultivate.vo.chapter.FtbCultivateChapterTestResultVO">
<id column="chapterTestId" property="chapterTestId" jdbcType="VARCHAR" javaType="java.lang.String"/>
<result column="topicName" property="topicName" jdbcType="VARCHAR" javaType="java.lang.String" />
<result column="answerAnalysis" property="answerAnalysis" jdbcType="VARCHAR" javaType="java.lang.String" />
<result column="courseId" property="courseId" jdbcType="VARCHAR" javaType="java.lang.String" />
<collection select="getChapterTestResult" property="chapterTestInfos" column="chapterTestId" ofType="java.util.ArrayList"/>
</resultMap>
<!--根据关键词获取章节测试统计信息-->
<select id="getChapterTestStatistic"
resultType="jnpf.model.cultivate.vo.chapter.FtbCultivateChapterTestStatisticVO">
SELECT
te.F_UserId as userId,
res.F_RealName as userName,
co.F_Name as courseName,
co.F_Id as courseId,
res.F_SystemWorkerId as systemWorkId,
te.F_ChapterTestOptions as chapterTestOptions
FROM
ftb_cultivate_chapter_test_result AS te
INNER JOIN ftb_cultivate_course as co ON te.F_CourseId = co.F_Id
LEFT JOIN base_user as res ON te.F_UserId = res.F_Id
<where>
co.F_EnabledMark = 0 and te.F_EnabledMark = 0
<if test="keyWords != null and keyWords != ''">
AND (
res.F_RealName LIKE concat( '%', #{keyWords}, '%' )
OR res.F_SystemWorkerId LIKE concat( '%', #{keyWords}, '%' )
OR co.F_Name LIKE concat( '%', #{keyWords}, '%' )
)
</if>
<if test="innerPowerUserIds != null and innerPowerUserIds.size() > 0">
AND te.F_UserId IN
<foreach collection="innerPowerUserIds" item="userId" open="(" separator="," close=")" >
#{userId}
</foreach>
</if>
</where>
GROUP BY
te.F_UserId,
te.F_CourseId
</select>
<!--根据课程ID列表获取章节测试信息-->
<select id="getChapterTestInfos" resultMap="chapterTestInfo">
SELECT DISTINCT
te.F_Id as chapterTestId ,
te.F_CourseId as courseId,
te.F_TopicName as topicName,
te.F_AnswerAnalysis as answerAnalysis
FROM
ftb_cultivate_chapter_test AS te
JOIN ftb_cultivate_chapter_test_option AS op ON te.F_Id = op.F_ChapterTestId
WHERE
te.F_EnabledMark = 0
and te.F_CourseId IN
<foreach collection="courseIds" item="courseId" open="(" separator="," close=")" >
#{courseId}
</foreach>
</select>
<!--根据课程ID列表获取章节返回-->
<select id="getChapterTestResult"
resultType="jnpf.model.cultivate.vo.chapter.FtbCultivateChapterTestInfo">
select
F_IsRightOption isRightOption ,
F_Content as content,
F_SortCode sortCode
from
ftb_cultivate_chapter_test_option where F_ChapterTestId=#{chapterTestId}
</select>
</mapper>

View File

@@ -0,0 +1,27 @@
<?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="jnpf.cultivate.mapper.FtbCultivateChapterTestOptionMapper">
<resultMap id="BaseResultMap" type="jnpf.model.cultivate.po.course.FtbCultivateChapterTestOption">
<!--@mbg.generated-->
<!--@Table ftb_cultivate_chapter_test_option-->
<id column="F_Id" jdbcType="VARCHAR" property="fId" />
<result column="F_CreatorTime" jdbcType="TIMESTAMP" property="fCreatortime" />
<result column="F_CreatorUserId" jdbcType="VARCHAR" property="fCreatoruserid" />
<result column="F_LastModifyTime" jdbcType="TIMESTAMP" property="fLastmodifytime" />
<result column="F_LastModifyUserId" jdbcType="VARCHAR" property="fLastmodifyuserid" />
<result column="F_DeleteTime" jdbcType="TIMESTAMP" property="fDeletetime" />
<result column="F_DeleteUserId" jdbcType="VARCHAR" property="fDeleteuserid" />
<result column="F_TenantId" jdbcType="VARCHAR" property="fTenantid" />
<result column="F_EnabledMark" jdbcType="INTEGER" property="fEnabledmark" />
<result column="F_ChapterTestId" jdbcType="VARCHAR" property="fChaptertestid" />
<result column="F_IsRightOption" jdbcType="TINYINT" property="fIsrightoption" />
<result column="F_Content" jdbcType="VARCHAR" property="fContent" />
<result column="F_SortCode" jdbcType="TINYINT" property="fSortcode" />
</resultMap>
<sql id="Base_Column_List">
<!--@mbg.generated-->
F_Id, F_CreatorTime, F_CreatorUserId, F_LastModifyTime, F_LastModifyUserId, F_DeleteTime,
F_DeleteUserId, F_TenantId, F_EnabledMark, F_ChapterTestId, F_IsRightOption, F_Content,
F_SortCode
</sql>
</mapper>

View File

@@ -0,0 +1,25 @@
<?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="jnpf.cultivate.mapper.FtbCultivateChapterTestResultMapper">
<!--根据课程ID和用户ID查询章节测试结果列表-->
<select id="selectChatperList" resultType="jnpf.model.cultivate.po.course.FtbCultivateChapterTestResult">
SELECT
t.F_CourseId courseId,
t.F_CourseChapterId courseChapterId,
t.F_UserId userId,
t.F_ChapterTestOptions chapterTestOptions
FROM
( SELECT *, ROW_NUMBER() OVER ( PARTITION BY F_UserId, F_CourseId,F_CourseChapterId ORDER BY F_CreatorTime DESC ) AS rn FROM ftb_cultivate_chapter_test_result
<where>
<if test="courseId != null and courseId != ''">
and F_CourseId = #{courseId}
</if>
<if test="userId != null and userId != ''">
and F_UserId = #{userId}
</if>
</where>
) t
where
t.F_EnabledMark = 0 and t.rn = 1
</select>
</mapper>

View File

@@ -0,0 +1,22 @@
<?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="jnpf.cultivate.mapper.FtbCultivateCommonSettingGlobalMapper">
<!-- 通用查询映射结果 -->
<resultMap id="BaseResultMap" type="jnpf.model.cultivate.po.FtbCultivateCommonSettingGlobal">
<id column="F_Id" property="id"/>
<result column="F_CreatorTime" property="creatorTime"/>
<result column="F_CreatorUserId" property="creatorUserId"/>
<result column="F_LastModifyTime" property="lastModifyTime"/>
<result column="F_LastModifyUserId" property="lastModifyUserId"/>
<result column="F_TenantId" property="tenantId"/>
<result column="F_Watermark" property="watermark"/>
<result column="F_Screenshot" property="screenshot"/>
</resultMap>
<!-- 通用查询结果列 -->
<sql id="Base_Column_List">
F_Id, F_CreatorTime, F_CreatorUserId, F_LastModifyTime, F_LastModifyUserId, F_TenantId, F_Watermark, F_Screenshot
</sql>
</mapper>

View File

@@ -0,0 +1,19 @@
<?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="jnpf.cultivate.mapper.FtbCultivateCourseChapterMapper">
<!--课程章节分页查询-->
<select id="queryList" resultType="jnpf.model.cultivate.vo.course.web.FtbCultivateCourseChapterVO">
SELECT F_Id as id,
F_Name as name,
F_Duration as duration,
F_SortCode as sortCode
FROM ftb_cultivate_course_chapter
where F_EnabledMark = 0 and F_CourseId = #{courseId}
order by F_SortCode
</select>
<!--查询课程总时长-->
<select id="querySumDuration" resultType="java.lang.Long">
SELECT SUM(F_Duration) FROM ftb_cultivate_course_chapter WHERE F_CourseId = #{id} and F_EnabledMark=0
</select>
</mapper>

View File

@@ -0,0 +1,16 @@
<?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="jnpf.cultivate.mapper.FtbCultivateCourseLearningLogMapper">
<!-- 通用结果映射 -->
<resultMap id="baseResultMap" type="jnpf.entity.cultivate.FtbCultivateCourseLearningLogEntity">
<result column="F_id" property="id"/>
<result column="F_CourseId" property="courseId"/>
<result column="F_LearnTime" property="learnTime"/>
<result column="F_CreatorUserId" property="creatorUserId"/>
<result column="F_CreatorTime" property="creatorTime"/>
<result column="F_EnabledMark" property="enabledMark"/>
<result column="F_TenantId" property="tenantId"/>
</resultMap>
</mapper>

View File

@@ -0,0 +1,296 @@
<?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="jnpf.cultivate.mapper.FtbCultivateCourseMapper">
<!--课程格式统计-->
<select id="getCount" resultType="java.lang.Integer">
SELECT COUNT(*) FROM ftb_cultivate_course
<where>
F_EnabledMark = 0
<if test="flag == 1">
and F_Format = 1
</if>
<if test="flag == 2">
and F_Format = 2
</if>
<if test="flag == 3">
and F_Format = 3
</if>
<if test="flag == 4">
and F_Label = 1
</if>
<if test="flag == 5">
and F_Label = 2
</if>
<if test="flag == 7">
and F_Format = 4
</if>
</where>
</select>
<!--课程列表分页查询-->
<select id="pagingQuery" resultType="jnpf.model.cultivate.vo.course.web.FtbCultivateCoursePageVO">
select a.F_Id as id,
a.F_Name as `name`,
a.F_Format as format,
a.F_ChapterNumber as chapterNumber,
a.F_IsGrounding as isGroundIng,
a.F_Label as label,
a.F_CourseId as courseId,
a.F_LastModifyTime as updateTime,
b.F_Name as typeName
from ftb_cultivate_course a LEFT JOIN ftb_cultivate_course_type b ON a.F_TypeId=b.F_Id
<where>
a.F_EnabledMark = 0
<if test="params.format!= null">
and a.F_Format = #{params.format}
</if>
<if test="params.label!= null">
and a.F_Label = #{params.label}
</if>
<if test="params.isGroundIng!= null">
and a.F_IsGrounding = #{params.isGroundIng}
</if>
<if test="params.name!= null and params.name!= '' and ( params.onlySearchCourseName==null or params.onlySearchCourseName==0)">
and (a.F_Name like CONCAT('%',#{params.name},'%') or b.F_Name like CONCAT('%',#{params.name},'%'))
</if>
<if test="params.name!= null and params.name!= '' and params.onlySearchCourseName!=null and params.onlySearchCourseName==1">
and a.F_Name like CONCAT('%',#{params.name},'%')
</if>
<if test="params.typeId!= null and params.typeId!= ''">
and a.F_TypeId = #{params.typeId}
</if>
<if test="params.startTime != null and params.startTime != '' and params.endTime != null and params.endTime != '' ">
and a.F_LastModifyTime >= #{params.startTime} and a.F_LastModifyTime &lt;= #{params.endTime}
</if>
</where>
order by a.F_LastModifyTime desc
</select>
<!--校验岗位学习-->
<select id="getCountLearnByCourseId" resultType="java.lang.Integer">
SELECT COUNT(*)
FROM ftb_cultivate_position_course
WHERE F_CourseId = #{courseId}
and F_EnabledMark = 0
</select>
<!--校验关联题库-->
<select id="getCountQuestionBankByCourseId" resultType="java.lang.Integer">
select count(*)
from ftb_cultivate_question_bank_course
where F_CourseId = #{courseId}
and F_EnabledMark = 1
</select>
<!--岗位学习分页列表-->
<select id="listJobLearningByCourseId" resultType="jnpf.model.cultivate.vo.course.web.FtbCourseDeleteJobLearnVO">
SELECT F_PostLearnId as id, F_PostRankId as positionId
FROM ftb_cultivate_position_course
WHERE F_EnabledMark = 0
AND F_CourseId = #{courseId}
</select>
<!--关联题库分页列表-->
<select id="listRelatedQuestionBankList"
resultType="jnpf.model.cultivate.vo.course.web.FtbCourseDeleteQuestionBankVO">
SELECT a.F_ClassifyId as id, b.F_BankContent as questionBankName
FROM ftb_cultivate_question_bank_course a
JOIN ftb_cultivate_question_bank b ON a.F_ClassifyId = b.F_Id
WHERE a.F_EnabledMark = 1
and a.F_CourseId = #{courseId}
</select>
<select id="getCountTestPaperByQuestionBankId" resultType="java.lang.Integer">
SELECT COUNT(*)
FROM ftb_cultivate_test_paper
WHERE F_EnabledMark = 1
AND FIND_IN_SET(#{questionBankId}, F_RelationQuestionBankId) > 0
</select>
<!--已学习课程列表-->
<select id="promotionPathwayCourses" resultType="jnpf.model.cultivate.vo.course.web.PromotionChannelLearnCourseVO">
SELECT a.F_Name as courseName, a.F_Format as courseType, b.F_LastModifyTime as learnTime
FROM ftb_cultivate_course a
JOIN ftb_cultivate_position_cource_learning b ON a.F_Id = b.F_CourceId
WHERE b.F_state = 1
AND F_UserId = #{userId}
and b.F_EnabledMark = 0
</select>
<!--通用课程列表-->
<select id="generalCourseList" resultType="jnpf.model.cultivate.vo.course.app.FtbGlobalCurriculumAppVO">
SELECT a.F_Id as courseId,a.F_Name as courseName,a.F_Highlights as courseHighlights,b.F_state as learnState
FROM ftb_cultivate_course a JOIN ftb_cultivate_position_cource_learning b ON a.F_Id=b.F_CourceId
WHERE b.F_UserId=#{userId} AND a.F_EnabledMark=0 AND a.F_Label = 1 AND b.F_EnabledMark = 0 and a.F_IsGrounding =
1
<if test="params.courseTypeId != null">
and a.F_TypeId = #{params.courseTypeId}
</if>
<if test="params.courseName != null and params.courseName != ''">
and a.F_Name like CONCAT('%',#{params.courseName},'%')
</if>
order by a.F_CreatorTime desc
</select>
<!--已学习课程数-->
<select id="learnTotalNumber" resultType="java.lang.Integer">
SELECT count(*)
FROM ftb_cultivate_course a
JOIN ftb_cultivate_position_cource_learning b ON a.F_Id = b.F_CourceId
WHERE b.F_UserId = #{userId}
AND a.F_EnabledMark = 0
AND a.F_Label = 1
and a.F_IsGrounding = 1
AND b.F_EnabledMark = 0
and b.F_state = 1
and a.F_TypeId = #{typeId}
</select>
<!--根据考试id查询考试名称-->
<select id="queryExamNameByExamId" resultType="java.lang.String">
SELECT F_ExamName
FROM ftb_cultivate_exam
WHERE F_Id = #{examId}
</select>
<!--校验岗位是否建立岗位学习-->
<select id="queryJobBindingCourses"
resultType="jnpf.model.cultivate.dto.course.FtbCultivateCourseDTO$PositionLearnCourseInternal">
SELECT F_PostId as postId,F_Id as postLearnId FROM ftb_cultivate_position where F_EnabledMark = 0
and F_PostId in
<foreach collection="postIds" item="postId" open="(" separator="," close=")">
#{postId}
</foreach>
</select>
<select id="getCountMediaList" resultType="jnpf.model.cultivate.dto.course.FtbCommonKeyAndValDto">
SELECT F_Format AS k, COUNT(*) as v
FROM ftb_cultivate_course
where F_EnabledMark = 0
group by F_Format
</select>
<select id="getCountLabelList" resultType="jnpf.model.cultivate.dto.course.FtbCommonKeyAndValDto">
SELECT F_Label AS k, COUNT(*) as v
FROM ftb_cultivate_course
where F_EnabledMark = 0
group by F_Label
</select>
<select id="queryNoStudyCommonCourseNum" resultType="java.lang.Long">
SELECT count(a.F_Id) as totalNum
FROM ftb_cultivate_course a
JOIN ftb_cultivate_position_cource_learning b ON a.F_Id = b.F_CourceId
WHERE b.F_UserId = #{userId}
AND a.F_EnabledMark = 0
AND a.F_Label = 1
AND b.F_EnabledMark = 0
and a.F_IsGrounding = 1
and b.F_state in (0, 2)
</select>
<select id="queryBindingCourses"
resultType="jnpf.model.cultivate.v2.position.vo.V2CultivateJobLearnCourseVo">
SELECT a.F_ID as id,
a.F_Name as `name`,
a.F_ChapterNumber as chapterNumber,
a.F_Label as label,
a.F_IsGrounding as isGroundIng,
a.F_CourseId as courseId,
a.F_TypeId as typeId,
a.F_LastModifyTime as updateTime,
b.F_Name as typeName
from ftb_cultivate_course as a LEFT JOIN ftb_cultivate_label b ON a.F_TypeId=b.F_Id
WHERE a.F_EnabledMark = 0
<if test="params.keyWord != null and params.keyWord != ''">
AND a.F_Name LIKE CONCAT('%', #{params.keyWord}, '%')
</if>
<if test="params.label != null">
<choose>
<when test="params.label == 1">
AND a.F_Label = 1
</when>
<when test="params.label == 2">
AND a.F_Label = 2
</when>
</choose>
</if>
</select>
<select id="jobLearningCourseList" resultType="jnpf.model.cultivate.v2.course.web.vo.V2CultivateCourseSelectVo">
SELECT F_Id as id,
F_Name as `name`,
F_ChapterNumber as chapterNumber,
F_Format as format,
F_Label as label,
F_IsGrounding as isGroundIng,
F_CourseId as courseId,
F_LastModifyTime as updateTime
from ftb_cultivate_course
WHERE F_EnabledMark = 0
<if test="params.searchValue != null">
and F_Name like concat('%',#{params.searchValue},'%')
</if>
<if test="params.label!= null">
and F_Label = #{params.label}
</if>
</select>
<select id="webList" resultType="jnpf.model.cultivate.v2.course.web.vo.V2CultivateCoursePageVo">
select a.F_Id as id,
a.F_Name as `name`,
a.F_CourseId as courseId,
a.F_ChapterNumber as chapterNumber,
a.F_IsGrounding as isGroundIng,
a.F_TypeId as typeId,
b.F_Name as typeName,
a.F_Label as label,
a.F_LastModifyTime as updateTime
from ftb_cultivate_course a LEFT JOIN ftb_cultivate_label b ON a.F_TypeId=b.F_Id
<where>
a.F_EnabledMark = 0
<if test="params.label != null and params.label &gt; 0">
and a.F_Label = #{params.label}
</if>
<if test="params.isGroundIng!= null">
and a.F_IsGrounding = #{params.isGroundIng}
</if>
<if test="params.name!= null and params.name!= ''">
and a.F_Name LIKE CONCAT('%', #{params.name}, '%')
</if>
<if test="params.typeId!= null and params.typeId!= ''">
and a.F_TypeId = #{params.typeId}
</if>
</where>
order by a.F_CreatorTime desc
</select>
<select id="queryCommonCourseApp" resultType="jnpf.model.cultivate.v2.course.vo.app.AppCommonCourseSimpleVo">
SELECT
p1.F_Id as courseId,
p1.F_Name as courseName,
p1.F_CoverUrl as coverUrl,
p1.F_Label as label,
p1.F_TypeId as typeId,
p2.F_Name as typeName
from ftb_cultivate_course as p1 LEFT JOIN ftb_cultivate_label as p2 ON p1.F_TypeId=p2.F_Id
WHERE p1.F_EnabledMark = 0 and p1.F_Label = 1 and p1.F_IsGrounding = 1 and p1.F_EnabledMark=0
<if test="params.keyWord != null">
and p1.F_Name like concat('%',#{params.keyWord},'%')
</if>
<if test="params.typeId!= null">
and p1.F_TypeId = #{params.typeId}
</if>
order by p1.F_CreatorTime desc
</select>
<select id="commonCourseCount" resultType="java.lang.String">
SELECT p1.F_Id as courseId
from ftb_cultivate_course p1 LEFT JOIN ftb_cultivate_label as p2 ON p1.F_TypeId=p2.F_Id
WHERE p1.F_EnabledMark = 0 and p1.F_Label = 1 and p1.F_IsGrounding = 1 and p1.F_EnabledMark=0
<if test="params.keyWord != null and params.keyWord!=''">
and p1.F_Name like concat('%',#{params.keyWord},'%')
</if>
<if test="params.typeId!= null and params.typeId!= ''">
and p1.F_TypeId = #{params.typeId}
</if>
</select>
<!-- 根据课程ID统计课程学习数据 -->
<select id="getCourseStatistics" resultType="jnpf.model.cultivate.v2.course.vo.AiHelperCourseStatisticsVo">
SELECT
COUNT(CASE WHEN F_state = 1 THEN 1 END) AS completedCount,
COUNT(CASE WHEN F_state = 0 THEN 1 END) AS learningCount
FROM ftb_cultivate_position_cource_learning
WHERE F_CourceId = #{courseId}
AND F_EnabledMark = 0
</select>
</mapper>

View File

@@ -0,0 +1,51 @@
<?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="jnpf.cultivate.mapper.FtbCultivateCoursePackageMapper">
<!--查询课程包课程-->
<select id="getPackageDetails"
resultType="jnpf.model.cultivate.vo.coursepackage.FtbCultivateCoursePackageDetailsVO">
SELECT
a.F_Name as courseName,
a.F_Id as courseId,
a.F_Format as format,
c.F_Name as courseType
FROM ftb_cultivate_course a JOIN ftb_cultivate_package_course b ON a.F_Id=b.F_CourseId
JOIN ftb_cultivate_label c ON a.F_TypeId=c.F_Id
WHERE a.F_EnabledMark = 0 and b.F_CoursePackageId = #{id}
</select>
<!--课程包分页查询-->
<select id="pagingQuery" resultType="jnpf.model.cultivate.vo.coursepackage.FtbCultivateCoursePackagePageVO">
SELECT
a.F_Name as name,
a.F_Id as id,
a.F_CreatorTime as createTime,
a.F_CreatorUserId as createUserId,
a.F_LastModifyTime as updateTime,
a.F_LastModifyUserId as updateUserId,
a.F_Highlights as highlights,
a.F_CoursePackageId as coursePackageId,
(SELECT COUNT(*)
FROM ftb_cultivate_package_course b JOIN ftb_cultivate_course c ON c.F_Id=b.F_CourseId
WHERE F_CoursePackageId = a.F_Id and c.F_EnabledMark = 0)
as courseNumber
FROM ftb_cultivate_course_package a
WHERE a.F_EnabledMark = 0
<if test="params.keyword != null">
and (a.F_Name like concat('%',#{params.keyword},'%') or a.F_CoursePackageId = #{params.keyword})
</if>
</select>
<!--根据课程包id查询课程数据-->
<select id="queryCoursePackageCourses"
resultType="jnpf.model.cultivate.vo.coursepackage.FtbCultivateCoursePackageDetailsVO">
SELECT
a.F_Name as courseName,a.F_Id as courseId, a.F_Format as format
FROM ftb_cultivate_course a JOIN ftb_cultivate_package_course b ON a.F_Id = b.F_CourseId
WHERE a.F_EnabledMark = 0 and b.F_CoursePackageId in
<foreach collection="coursePackageIds" item="coursePackageId" separator="," open="(" close=")">
#{coursePackageId}
</foreach>
group by a.F_Id,a.F_Name
</select>
</mapper>

View File

@@ -0,0 +1,5 @@
<?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="jnpf.cultivate.mapper.FtbCultivateCourseSettingGlobalMapper">
</mapper>

View File

@@ -0,0 +1,10 @@
<?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="jnpf.cultivate.mapper.FtbCultivateCourseSettingMapper">
<!--是否存在课程学习设置-->
<select id="isThereACourseLearningSetting" resultType="java.lang.Integer">
select count(*) from ftb_cultivate_course_setting where F_EnabledMark = 0
and F_CourseId = #{courseId}
</select>
</mapper>

Some files were not shown because too many files have changed in this diff Show More