feat(oa): 添加物流预览和快递问题以及报工相关功能
- 新增物流预览(OaExpress)相关实体、控制器、服务和映射 - 新增快递问题(OaExpressQuestion)相关实体、控制器、服务和映射 - 实现物流预览和快递问题的增删查改功能 - 添加物流预览的及时更新功能- 新增问题反馈(OaFeedback)和服务接口 - 新增项目报工(OaReport)和服务接口 - 添加百世快递路由查询工具类
This commit is contained in:
76
gear-oa/src/main/resources/mapper/oa/OaExpressMapper.xml
Normal file
76
gear-oa/src/main/resources/mapper/oa/OaExpressMapper.xml
Normal file
@@ -0,0 +1,76 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<!DOCTYPE mapper
|
||||
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="com.gear.oa.mapper.OaExpressMapper">
|
||||
|
||||
<resultMap type="com.gear.oa.domain.OaExpress" id="OaExpressResult">
|
||||
<result property="expressId" column="express_id"/>
|
||||
<result property="expressCode" column="express_code"/>
|
||||
<result property="status" column="status"/>
|
||||
<result property="supplyName" column="supply_name"/>
|
||||
<result property="supplyPhone" column="supply_phone"/>
|
||||
<result property="ownerId" column="owner_id"/>
|
||||
<result property="ownerPhone" column="owner_phone"/>
|
||||
<result property="planDate" column="plan_date"/>
|
||||
<result property="expressType" column="express_type"/>
|
||||
<result property="createBy" column="create_by"/>
|
||||
<result property="createTime" column="create_time"/>
|
||||
<result property="updateBy" column="update_by"/>
|
||||
<result property="updateTime" column="update_time"/>
|
||||
<result property="delFlag" column="del_flag"/>
|
||||
<result property="remark" column="remark"/>
|
||||
</resultMap>
|
||||
|
||||
|
||||
<select id="selectVoPagePlus" resultType="com.gear.oa.domain.vo.OaExpressVo">
|
||||
select oe.express_id,
|
||||
oe.detail_id,
|
||||
oe.express_code,
|
||||
oe.status,
|
||||
oe.supply_name,
|
||||
oe.supply_phone,
|
||||
oe.owner_id,
|
||||
oe.owner_phone,
|
||||
oe.plan_date,
|
||||
oe.express_type,
|
||||
oe.create_by,
|
||||
oe.create_time,
|
||||
oe.update_by,
|
||||
oe.update_time,
|
||||
oe.last_status,
|
||||
oe.last_update_time,
|
||||
oe.del_flag,
|
||||
oe.remark,
|
||||
su.nick_name as ownerName,
|
||||
from oa_express oe
|
||||
left join sys_user su on su.user_id = oe.owner_id
|
||||
${ew.customSqlSegment}
|
||||
</select>
|
||||
<select id="selectVoByIdPlus" resultType="com.gear.oa.domain.vo.OaExpressVo">
|
||||
select oe.express_id,
|
||||
oe.detail_id,
|
||||
oe.express_code,
|
||||
oe.status,
|
||||
oe.supply_name,
|
||||
oe.supply_phone,
|
||||
oe.owner_id,
|
||||
oe.owner_phone,
|
||||
oe.plan_date,
|
||||
oe.express_type,
|
||||
oe.create_by,
|
||||
oe.create_time,
|
||||
oe.update_by,
|
||||
oe.update_time,
|
||||
oe.last_status,
|
||||
oe.last_update_time,
|
||||
oe.del_flag,
|
||||
oe.remark,
|
||||
su.nick_name as ownerName,
|
||||
from oa_express oe
|
||||
left join sys_user su on su.user_id = oe.owner_id
|
||||
where express_id = #{expressId}
|
||||
</select>
|
||||
|
||||
|
||||
</mapper>
|
||||
@@ -0,0 +1,41 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<!DOCTYPE mapper
|
||||
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="com.gear.oa.mapper.OaExpressQuestionMapper">
|
||||
|
||||
<resultMap type="com.gear.oa.domain.OaExpressQuestion" id="OaExpressQuestionResult">
|
||||
<result property="questionId" column="question_id"/>
|
||||
<result property="expressId" column="express_id"/>
|
||||
<result property="description" column="description"/>
|
||||
<result property="reportTime" column="report_time"/>
|
||||
<result property="reportBy" column="report_by"/>
|
||||
<result property="status" column="status"/>
|
||||
<result property="createTime" column="create_time"/>
|
||||
<result property="createBy" column="create_by"/>
|
||||
<result property="updateTime" column="update_time"/>
|
||||
<result property="updateBy" column="update_by"/>
|
||||
<result property="delFlag" column="del_flag"/>
|
||||
<result property="remark" column="remark"/>
|
||||
</resultMap>
|
||||
<select id="selectVoPagePlus" resultType="com.gear.oa.domain.vo.OaExpressQuestionVo">
|
||||
select oeq.question_id,
|
||||
oeq.express_id,
|
||||
oeq.description,
|
||||
oeq.report_time,
|
||||
oeq.report_by,
|
||||
oeq.status,
|
||||
oeq.create_time,
|
||||
oeq.create_by,
|
||||
oeq.update_time,
|
||||
oeq.update_by,
|
||||
oeq.del_flag,
|
||||
oeq.remark,
|
||||
oe.express_code
|
||||
from oa_express_question oeq
|
||||
left join oa_express oe on oe.express_id = oeq.express_id
|
||||
${ew.getCustomSqlSegment}
|
||||
</select>
|
||||
|
||||
|
||||
</mapper>
|
||||
54
gear-oa/src/main/resources/mapper/oa/OaFeedbackMapper.xml
Normal file
54
gear-oa/src/main/resources/mapper/oa/OaFeedbackMapper.xml
Normal file
@@ -0,0 +1,54 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<!DOCTYPE mapper
|
||||
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="com.gear.oa.mapper.OaFeedbackMapper">
|
||||
|
||||
<resultMap type="com.gear.oa.domain.OaFeedback" id="OaFeedbackResult">
|
||||
<result property="feedbackId" column="feedback_id"/>
|
||||
<result property="content" column="content"/>
|
||||
<result property="status" column="status"/>
|
||||
<result property="createTime" column="create_time"/>
|
||||
<result property="createBy" column="create_by"/>
|
||||
<result property="updateTime" column="update_time"/>
|
||||
<result property="updateBy" column="update_by"/>
|
||||
<result property="remark" column="remark"/>
|
||||
<result property="delFlag" column="del_flag"/>
|
||||
</resultMap>
|
||||
<insert id="insertItem">
|
||||
|
||||
INSERT INTO oa_feedback_item (
|
||||
feedback_id,
|
||||
user_id
|
||||
)
|
||||
SELECT
|
||||
#{feedbackId},
|
||||
su.user_id
|
||||
FROM sys_user su
|
||||
WHERE su.del_flag = 0
|
||||
</insert>
|
||||
|
||||
|
||||
<update id="updateToRead">
|
||||
update oa_feedback_item set status = 1 where feedback_id =#{feedbackId} and user_id = #{userId}
|
||||
</update>
|
||||
<delete id="delItem">
|
||||
delete from oa_feedback_item where feedback_id =#{feedbackId} and user_id = #{userId}
|
||||
</delete>
|
||||
|
||||
|
||||
<select id="selectVoPageAndStatus" resultType="com.gear.oa.domain.vo.OaFeedbackVo">
|
||||
|
||||
select
|
||||
oaf.feedback_id,
|
||||
oaf.content,
|
||||
oaf.status,
|
||||
oaf.title,
|
||||
ofi.status as state
|
||||
from oa_feedback oaf
|
||||
left join oa_feedback_item ofi on oaf.feedback_id = ofi.feedback_id
|
||||
${ew.getCustomSqlSegment}
|
||||
</select>
|
||||
|
||||
|
||||
</mapper>
|
||||
225
gear-oa/src/main/resources/mapper/oa/OaReportMapper.xml
Normal file
225
gear-oa/src/main/resources/mapper/oa/OaReportMapper.xml
Normal file
@@ -0,0 +1,225 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<!DOCTYPE mapper
|
||||
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="com.gear.oa.mapper.OaReportMapper">
|
||||
|
||||
<resultMap type="com.gear.oa.domain.OaReport" id="OaProjectReportResult">
|
||||
<result property="reportId" column="report_id"/>
|
||||
<result property="userId" column="user_id"/>
|
||||
<result property="workPlace" column="work_place"/>
|
||||
<result property="content" column="content"/>
|
||||
<result property="createTime" column="create_time"/>
|
||||
<result property="createBy" column="create_by"/>
|
||||
<result property="updateTime" column="update_time"/>
|
||||
<result property="updateBy" column="update_by"/>
|
||||
<result property="delFlag" column="del_flag"/>
|
||||
<result property="remark" column="remark"/>
|
||||
</resultMap>
|
||||
|
||||
|
||||
<select id="selectVoPagePlus" resultType="com.gear.oa.domain.vo.OaReportVo">
|
||||
select opr.report_id,
|
||||
opr.user_id,
|
||||
opr.is_trip,
|
||||
opr.work_place,
|
||||
opr.content,
|
||||
opr.create_time,
|
||||
opr.create_by,
|
||||
opr.update_time,
|
||||
opr.update_by,
|
||||
opr.del_flag,
|
||||
opr.remark,
|
||||
su.nick_name,
|
||||
opr.work_type,
|
||||
sd.dept_name
|
||||
from oa_project_report opr
|
||||
left join sys_user su on su.user_id = opr.user_id
|
||||
left join sys_dept sd on su.dept_id = sd.dept_id
|
||||
${ew.getCustomSqlSegment}
|
||||
</select>
|
||||
|
||||
<select id="selectVoByIdPlus" resultType="com.gear.oa.domain.vo.OaReportVo">
|
||||
select opr.report_id,
|
||||
opr.user_id,
|
||||
is_trip,
|
||||
work_place,
|
||||
content,
|
||||
opr.create_time,
|
||||
opr.create_by,
|
||||
opr.update_time,
|
||||
opr.update_by,
|
||||
opr.del_flag,
|
||||
opr.remark,
|
||||
opr.work_type,
|
||||
su.nick_name,
|
||||
sd.dept_name
|
||||
from oa_project_report opr
|
||||
left join sys_user su on su.user_id = opr.user_id
|
||||
left join sys_dept sd on su.dept_id = sd.dept_id
|
||||
where report_id = #{reportId}
|
||||
</select>
|
||||
|
||||
<!-- 查询 content 中包含 “完成” 的记录数,按时间过滤 -->
|
||||
<select id="countWithCompleted" parameterType="java.util.Date" resultType="Long">
|
||||
SELECT COUNT(*)
|
||||
FROM oa_project_report
|
||||
WHERE del_flag = 0
|
||||
AND DATE_FORMAT(create_time, '%Y-%m') = DATE_FORMAT(#{createTime}, '%Y-%m')
|
||||
</select>
|
||||
|
||||
|
||||
|
||||
<!-- 查询 content 中包含 “未完成” 或 “等待” 或 “待” 的记录数,按时间过滤 -->
|
||||
<select id="countWithPending" parameterType="java.util.Date" resultType="Long">
|
||||
SELECT COUNT(*)
|
||||
FROM oa_project_report
|
||||
WHERE del_flag = 0
|
||||
AND (
|
||||
content LIKE CONCAT('%', '未完成', '%')
|
||||
OR content LIKE CONCAT('%', '等待', '%')
|
||||
OR content LIKE CONCAT('%', '待', '%')
|
||||
)
|
||||
AND create_time >= #{createTime}
|
||||
</select>
|
||||
<!-- 按天统计报工数 -->
|
||||
<select id="selectReportTrend" resultType="com.gear.oa.domain.vo.ReportTrendVo">
|
||||
SELECT
|
||||
DATE(create_time) AS date,
|
||||
COUNT(*) AS count
|
||||
FROM oa_project_report r
|
||||
WHERE create_time
|
||||
AND DATE(r.create_time) BETWEEN
|
||||
DATE_FORMAT(#{start}, '%Y-%m-%d')
|
||||
AND DATE_FORMAT(#{end}, '%Y-%m-%d')
|
||||
AND del_flag = 0
|
||||
GROUP BY DATE(create_time)
|
||||
ORDER BY DATE(create_time)
|
||||
</select>
|
||||
|
||||
<!-- 各项目报工分布 -->
|
||||
<select id="selectProjectDistribution" resultType="com.gear.oa.domain.vo.ReportPieVo">
|
||||
SELECT
|
||||
p.project_name AS projectName,
|
||||
COUNT(r.report_id) AS value
|
||||
FROM oa_project_report r
|
||||
JOIN sys_oa_project p ON r.project_id = p.project_id
|
||||
WHERE r.del_flag = 0
|
||||
AND DATE(r.create_time) BETWEEN
|
||||
DATE_FORMAT(#{start}, '%Y-%m-%d')
|
||||
AND DATE_FORMAT(#{end}, '%Y-%m-%d')
|
||||
GROUP BY p.project_name
|
||||
ORDER BY value DESC
|
||||
</select>
|
||||
|
||||
|
||||
<!-- 查询每个 user_id 的报工次数,并返回 nickName, deptName, count -->
|
||||
<select id="selectRankData"
|
||||
resultType="com.gear.oa.domain.vo.OaReportVo">
|
||||
SELECT
|
||||
u.nick_name AS nickName,
|
||||
d.dept_name AS deptName,
|
||||
COUNT(r.report_id) AS count
|
||||
FROM oa_project_report r
|
||||
INNER JOIN sys_user u
|
||||
ON r.user_id = u.user_id
|
||||
INNER JOIN sys_dept d
|
||||
ON u.dept_id = d.dept_id
|
||||
WHERE r.del_flag = 0
|
||||
AND DATE(r.create_time) BETWEEN
|
||||
DATE_FORMAT(#{start}, '%Y-%m-%d')
|
||||
AND DATE_FORMAT(#{end}, '%Y-%m-%d')
|
||||
GROUP BY r.user_id
|
||||
</select>
|
||||
|
||||
|
||||
<select id="getProjects"
|
||||
parameterType="map"
|
||||
resultType="com.gear.oa.domain.vo.OaReportVo">
|
||||
SELECT
|
||||
COUNT(opr.report_id) AS reportCount,
|
||||
opr.work_type AS workType,
|
||||
FROM oa_project_report opr
|
||||
WHERE opr.del_flag = 0
|
||||
AND DATE(opr.create_time)
|
||||
BETWEEN DATE_FORMAT(#{start}, '%Y-%m-%d')
|
||||
AND DATE_FORMAT(#{end}, '%Y-%m-%d')
|
||||
GROUP BY workType
|
||||
</select>
|
||||
|
||||
<select id="getClearList" resultType="com.gear.oa.domain.vo.OaReportVo">
|
||||
select opr.report_id,
|
||||
opr.user_id,
|
||||
is_trip,
|
||||
work_place,
|
||||
content,
|
||||
opr.create_time,
|
||||
opr.create_by,
|
||||
opr.update_time,
|
||||
opr.update_by,
|
||||
opr.del_flag,
|
||||
opr.remark,
|
||||
su.nick_name,
|
||||
opr.work_type,
|
||||
sd.dept_name
|
||||
from oa_project_report opr
|
||||
left join sys_user su on su.user_id = opr.user_id
|
||||
left join sys_dept sd on su.dept_id = sd.dept_id
|
||||
WHERE opr.del_flag = 0
|
||||
AND DATE(opr.create_time)
|
||||
BETWEEN DATE_FORMAT(#{start}, '%Y-%m-%d')
|
||||
AND DATE_FORMAT(#{end}, '%Y-%m-%d')
|
||||
ORDER BY opr.create_time DESC
|
||||
LIMIT 20
|
||||
</select>
|
||||
|
||||
<select id="getSummaryData" resultType="com.gear.oa.domain.vo.OaReportVo">
|
||||
SELECT
|
||||
u.nick_name AS nickName,
|
||||
d.dept_name AS deptName,
|
||||
-- 国内出差次数:仅统计标记为出差且 work_type=0 的记录
|
||||
SUM(CASE WHEN r.is_trip = 1 AND r.work_type = 0 THEN 1 ELSE 0 END)
|
||||
AS inWorkNum,
|
||||
-- 国外出差次数:仅统计标记为出差且 work_type=1 的记录
|
||||
SUM(CASE WHEN r.is_trip = 1 AND r.work_type = 1 THEN 1 ELSE 0 END)
|
||||
AS outWorkNum,
|
||||
-- 报工总次数:统计所有未删除记录
|
||||
COUNT(1) AS reportCount
|
||||
FROM oa_project_report r
|
||||
JOIN sys_user u ON r.user_id = u.user_id
|
||||
LEFT JOIN sys_dept d ON u.dept_id = d.dept_id
|
||||
WHERE r.del_flag = 0
|
||||
AND DATE(r.create_time)
|
||||
BETWEEN DATE_FORMAT(#{start}, '%Y-%m-%d')
|
||||
AND DATE_FORMAT(#{end}, '%Y-%m-%d')
|
||||
GROUP BY u.user_id, u.nick_name, d.dept_name
|
||||
ORDER BY u.nick_name
|
||||
</select>
|
||||
<select id="selectAll" resultType="com.gear.oa.domain.vo.OaReportVo">
|
||||
SELECT
|
||||
opr.*,
|
||||
u.nick_name,
|
||||
FROM
|
||||
oa_project_report opr
|
||||
LEFT JOIN sys_user u ON opr.user_id = u.user_id
|
||||
<where>
|
||||
<if test="bo.userIds != null and bo.userIds.size() > 0">
|
||||
opr.user_id IN
|
||||
<foreach collection="bo.userIds" item="userId" open="(" separator="," close=")">
|
||||
#{userId}
|
||||
</foreach>
|
||||
</if>
|
||||
<if test="bo.userId != null and (bo.userIds == null or bo.userIds.size() == 0)">
|
||||
AND opr.user_id = #{bo.userId}
|
||||
</if>
|
||||
<if test="bo.startDate != null">
|
||||
AND opr.create_time >= #{bo.startDate}
|
||||
</if>
|
||||
<if test="bo.endDate != null">
|
||||
AND DATE(opr.create_time) <= DATE(#{bo.endDate})
|
||||
</if>
|
||||
AND opr.del_flag = '0'
|
||||
</where>
|
||||
ORDER BY opr.create_time DESC
|
||||
</select>
|
||||
</mapper>
|
||||
Reference in New Issue
Block a user