Commit d514fced authored by nie'hong's avatar nie'hong

完善工时统计

parent f18cc781
......@@ -541,4 +541,30 @@ public class StringUtil {
return sb2.toString();
}
}
/**
* 去除字符串前后两端的空白字符
*/
public static String replaceBlank(String str){
char[] chars = str.toCharArray();
int i = 0;
int j = 0;
for (int i1 = 0; i1 < chars.length; i1++) {
if (chars[i1] != '\n' && chars[i1] != '\r') {
i = i1;
break;
}
}
for (int i1 = chars.length - 1; i1 >= 0; i1--) {
if (chars[i1] != '\n' && chars[i1] != '\r') {
j = i1;
break;
}
}
return str.substring(i, j);
}
}
......@@ -90,11 +90,12 @@ public enum BASE_RESP_CODE_ENUM {
PLEASESELECTADEPARTMENT("672","请选择一个部门"),
WECHAT_NOT_BIND("673","微信未绑定"),
DATE_HANDLE_ERROR("674", "数据处理出错"),
WORK_DAY_IS_REPEAT("675", "所选日期段内已有填报,请重新选择"),
WORK_DAY_IS_REPEAT("675", "所选日期段内已有填报工时,请重新选择"),
LONG_LEAVE_TYPE_ERROR("676","填报长假/长休类型错误,只能填报请假和调休"),
LONG_LEAVE_DATE_NOT_ONLY_HOLIDAY("677", "长请假/调休不能只包含节假日"),
LONG_LEAVE_DATE_ERROR("678", "长请假/调休所选择时间超出规定填报时间"),
NEW_PROJECT_OA_PROJECT_ID_OR_NAME_ERROR("679","新建项目/商机对应编号在OA中未找到")
NEW_PROJECT_OA_PROJECT_ID_OR_NAME_ERROR("679","新建项目/商机对应编号在OA中未找到"),
CREATE_PROJECT_MANAGER_NOT_FOUND("680", "项目/商机负责人在工时系统中未找到")
;
......
......@@ -139,17 +139,6 @@
<orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-databind:2.9.8" level="project" />
<orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-core:2.9.8" level="project" />
<orderEntry type="library" name="Maven: joda-time:joda-time:2.10.2" level="project" />
<orderEntry type="library" name="Maven: org.apache.shiro:shiro-core:1.4.0" level="project" />
<orderEntry type="library" name="Maven: org.apache.shiro:shiro-lang:1.4.0" level="project" />
<orderEntry type="library" name="Maven: org.apache.shiro:shiro-cache:1.4.0" level="project" />
<orderEntry type="library" name="Maven: org.apache.shiro:shiro-crypto-hash:1.4.0" level="project" />
<orderEntry type="library" name="Maven: org.apache.shiro:shiro-crypto-core:1.4.0" level="project" />
<orderEntry type="library" name="Maven: org.apache.shiro:shiro-crypto-cipher:1.4.0" level="project" />
<orderEntry type="library" name="Maven: org.apache.shiro:shiro-config-core:1.4.0" level="project" />
<orderEntry type="library" name="Maven: org.apache.shiro:shiro-config-ogdl:1.4.0" level="project" />
<orderEntry type="library" name="Maven: org.apache.shiro:shiro-event:1.4.0" level="project" />
<orderEntry type="library" name="Maven: org.apache.shiro:shiro-spring:1.4.0" level="project" />
<orderEntry type="library" name="Maven: org.apache.shiro:shiro-web:1.4.0" level="project" />
<orderEntry type="library" name="Maven: org.apache.poi:poi:3.9" level="project" />
<orderEntry type="library" name="Maven: org.apache.poi:poi-ooxml:3.9" level="project" />
<orderEntry type="library" name="Maven: dom4j:dom4j:1.6.1" level="project" />
......
......@@ -37,4 +37,11 @@ public interface WorkDeptMapper extends BaseMapper<WorkDept> {
* @return
*/
WorkDept getOaDeptNoByUserId(Integer userId);
/**
* 获取所有部门信息
* @return
*/
List<WorkDept> getAllDept();
}
......@@ -71,13 +71,12 @@ public interface WorkProjectMapper extends BaseMapper<WorkProject> {
/**
* 获取项目/商机集合
* @param deptId
* @param typeId
* @param projectNameOrNo 项目的oa编号或名称模糊查询
* @return
*/
List<WorkProject> getListByDeptAndType(@Param("deptId") Integer deptId, @Param("typeId") Integer typeId, @Param("projectNameOrNo") String projectNameOrNo);
List<String> getListByDeptAndType( @Param("typeId") Integer typeId, @Param("projectNameOrNo") String projectNameOrNo);
WorkProject getByProjectNameOrOaId(@Param("projectName") String projectName, @Param("oaId") String oaId);
WorkProject getByProjectOaId( @Param("oaId") String oaId);
}
package cn.wisenergy.oaMapper;
import cn.wisenergy.oaModel.OaProject;
import org.apache.ibatis.annotations.Param;
import java.util.List;
import java.util.Map;
......@@ -13,9 +12,9 @@ import java.util.Map;
**/
public interface ProjectAndBoMapper {
List<OaProject> getListOaProjectByDept(@Param("oaDeptNo") String oaDeptNo,@Param("projectNameOrNo") String projectNameOrNo, @Param("oaProjectIds") List<String> oaProjectIds);
List<OaProject> getListOaProjectByDept(Map<String, Object> map);
List<OaProject> getListOaBoByDept(@Param("oaDeptNo") String oaDeptNo ,@Param("projectNameOrNo") String projectNameOrNo, @Param("oaProjectIds") List<String> oaProjectIds);
List<OaProject> getListOaBoByDept(Map<String, Object> map);
OaProject getProjectByNameAndNo(Map<String, Object> map);
......
......@@ -122,4 +122,11 @@ ORDER BY d.sort,p.id
where ud.user_id = #{userId}
</select>
<select id="getAllDept" resultType="cn.wisenergy.model.app.WorkDept">
select
<include refid="cols_all"/>
from
<include refid="table"/>
</select>
</mapper>
......@@ -212,7 +212,7 @@
</where>
GROUP BY p.id
ORDER BY p.is_conclusion DESC, p.create_time DESC
ORDER BY p.is_conclusion DESC, p.conclusion_time DESC, p.create_time DESC
</select>
......@@ -295,7 +295,7 @@
select p.type,t.name 'type_name',p.id 'project_id',p.project_name,up.user_id,u.name 'user_name',u.dept_id,d.dept_name,d1.id,d1.dept_name
from work_project p LEFT JOIN work_user_project up on p.id = up.project_id
LEFT JOIN work_user u ON up.user_id = u.id
LEFT JOIN (select id,dept_name,sort FROM work_dept)d1 ON d1.id = p.dept_id
LEFT JOIN work_dept d1 ON d1.id = p.dept_id
LEFT JOIN work_dept d ON d.id = u.dept_id
LEFT JOIN work_type t ON p.type = t.id
<where>
......@@ -304,29 +304,22 @@
AND p.manager_id = #{userId}
</if>
</where>
ORDER BY t.sort,d1.sort,p.id
ORDER BY t.sort,d.sort,p.id
</select>
<select id="getListByOaIds" resultType="cn.wisenergy.model.app.WorkProject">
select <include refid="Base_Column_List"/>
from <include refid="table"/>
where oa_project_id in
<foreach collection="oaProjectIds" item="oaProjectId" open="(" close=")" separator=",">
#{oaProjectId}
</foreach>
</select>
<select id="getListByDeptAndType" resultType="cn.wisenergy.model.app.WorkProject">
select <include refid="Base_Column_List"/>
<select id="getListByDeptAndType" resultType="string">
select distinct oa_project_id
from <include refid="table"/>
where dept_id = #{deptId} AND type = #{typeId} AND (oa_project_id like CONCAT("%" ,#{projectNameOrNo},"%") OR project_name like CONCAT("%" ,#{projectNameOrNo},"%"))
<where>
type = #{typeId} AND (oa_project_id like CONCAT("%" ,#{projectNameOrNo},"%") OR project_name like CONCAT("%" ,#{projectNameOrNo},"%"))
</where>
</select>
<select id="getByProjectNameOrOaId" resultType="cn.wisenergy.model.app.WorkProject">
<select id="getByProjectOaId" resultType="cn.wisenergy.model.app.WorkProject">
select <include refid="Base_Column_List"/>
from <include refid="table"/>
where project_name = #{projectName} OR oa_project_id = #{oaId}
where oa_project_id = #{oaId}
</select>
......
......@@ -30,6 +30,7 @@
<resultMap id="projectStatisticsByMonth" type="cn.wisenergy.model.dto.ProjectStatisticsByMonth">
<result property="projectId" column="project_id"/>
<result property="oaProjectId" column="oa_project_id"/>
<result property="projectName" column="project_name"/>
<result property="deptName" column="dept_name"/>
<result property="userName" column="user_name"/>
......@@ -114,7 +115,10 @@
<select id="selectListByMonth" resultMap="projectStatisticsByMonth">
select <if test="projectId == null and projectIds == null">'合计' AS project_name,</if> <if test="projectId != null"> project_name, dept_name,</if> <if test=" projectIds != null"> project_id,project_name, dept_name,</if> group_CONCAT(DISTINCT YEAR (statistics_start),'年',MONTH (statistics_start),'月') AS `date`,year(statistics_start) AS year, sum(total_time) AS total_time, sum(cost) AS cost
select <if test="projectId == null and projectIds == null">'合计' AS project_name,</if>
<if test="projectId != null"> project_name, dept_name,</if>
<if test=" projectIds != null"> project_id,if(oa_project_id is null,'',oa_project_id) AS oa_project_id,project_name, dept_name,</if>
group_CONCAT(DISTINCT YEAR (statistics_start),'年',MONTH (statistics_start),'月') AS `date`,year(statistics_start) AS year, sum(total_time) AS total_time, sum(cost) AS cost
from work_project_time_cost ptc join work_project p on ptc.project_id = p.id join work_dept d on p.dept_id = d.id
<where>
<if test="projectId != null ">
......@@ -142,7 +146,7 @@
</select>
<select id="selectListStatistics" resultMap="projectStatisticsByMonth">
select ptc.project_id AS project_id, project_name,
select ptc.project_id AS project_id,if(oa_project_id is null,'',oa_project_id) AS oa_project_id, project_name,
group_CONCAT(DISTINCT YEAR (statistics_start),'年',MONTH (statistics_start),'月') AS date,year(statistics_start) AS year,
sum(total_time) AS total_time, sum(cost) AS cost <if test="projectId != null || (projectIds != null and !isAll)"> ,d.dept_name AS dept_name</if> <if test="projectIds != null and isAll">,d.dept_name AS dept_name,u.name AS user_name </if>
from work_project_time_cost ptc join work_project p on ptc.project_id = p.id join work_dept d on ptc.dept_id = d.id join work_user u on ptc.user_id = u.id
......
......@@ -28,56 +28,80 @@
</resultMap>
<sql id="values_project">
project_no, project_name ,pm_no ,bo_no ,bo_name ,manager_name,
project_depart_no ,project_depart_name ,cost,start_date ,end_date
project_no, project_name ,pm_no ,bo_no ,
project_depart_no ,cost,start_date ,end_date
</sql>
<sql id="values_bo">
bo, bo_name,pm_no,manager_name,project_depart_no,project_depart_name
bo, bo_name,pm_no,manager_name,project_depart_no,project_depart_nam
</sql>
<select id="getListOaProjectByDept" resultMap="Project_Map">
select p.project_no, p.project_name, p.pm_no, p.project_depart_no, p.cost, p.start_date, p.end_date, b.bo_no, b.bo_name
from v_project_base p left join v_bo_base b on p.bo_no = b.bo_no
where p.project_depart_no = #{oaDeptNo}
<where>
<if test="oaDeptNo != null">
p.project_depart_no = #{oaDeptNo}
</if>
AND (p.project_no like CONCAT("%" ,#{projectNameOrNo},"%") OR p.project_name like CONCAT("%" ,#{projectNameOrNo},"%"))
<if test="oaProjectIds.size != 0">
<if test="oaProjectIds != null">
AND p.project_no not in
<foreach collection="oaProjectIds" item="oaProject" open="(" close=")" separator=",">
#{oaProject}
</foreach>
</if>
</where>
</select>
<select id="getListOaBoByDept" resultMap="Bo_Map">
select b.bo_no AS project_no, b.bo_name AS project_name, b.pm_no, b.pm_name, b.project_depart_no, b.project_depart_name
from v_project_base p right join v_bo_base b on p.bo_no = b.bo_no
where (b.project_depart_no = #{oaDeptNo} OR p.project_depart_no = #{oaDeptNo})
from v_bo_base b
<where>
<if test="oaDeptNo != null">
(pm_no IN (
SELECT
m. CODE
FROM
v_org_member m
JOIN v_org_unit u ON u.ID = m.ORG_DEPARTMENT_ID
WHERE
u. CODE = #{oaDeptNo}
)
OR
EXISTS (SELECT
p.bo_no
FROM
v_project_base p
left JOIN v_org_member m ON p.pm_no = m.`CODE`
left JOIN v_org_unit u ON m.ORG_DEPARTMENT_ID = u.ID
WHERE
u. CODE = #{oaDeptNo}
))
</if>
AND (b.bo_no like CONCAT("%" ,#{projectNameOrNo},"%") OR b.bo_name like CONCAT("%" ,#{projectNameOrNo},"%"))
<if test="oaProjectIds.size != 0">
AND b.bo_no not in
<foreach collection="oaProjectIds" item="oaProject" open="(" close=")" separator=",">
#{oaProject}
</foreach>
<if test="oaProjectIds != null">
AND b.bo_no not in
<foreach collection="oaProjectIds" item="oaProject" open="(" close=")" separator=",">
#{oaProject}
</foreach>
</if>
</where>
</select>
<select id="getProjectByNameAndNo" resultMap="Project_Map">
select <include refid="values_project"/>
from v_project_base
where project_no = #{projectNo} AND project_name = #{projectName}
<!--<if test="boNo != null ">-->
<!--AND bo_no = #{boNo} -->
<!--</if>-->
where project_no = #{projectNo} AND TRIM(project_name) = #{projectName} AND pm_no = #{managerNo}
<if test="boNo != null ">
AND bo_no = #{boNo}
</if>
</select>
<select id="getBoByNameAndNo" resultMap="Bo_Map">
select bo_no AS project_no, bo_name AS project_name,pm_no,manager_name,project_depart_no,project_depart_name
select bo_no AS project_no, bo_name AS project_name,pm_no,project_depart_no,project_depart_name
from v_bo_base
where bo_no = #{projectNo} AND bo_name = #{projectName}
where bo_no = #{projectNo} AND TRIM(bo_name) = #{projectName} AND pm_no = #{managerNo}
</select>
......
......@@ -29,6 +29,7 @@
<orderEntry type="module" module-name="wisenergy-common" />
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-web:2.1.5.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter:2.1.5.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot:2.1.5.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-logging:2.1.5.RELEASE" level="project" />
<orderEntry type="library" name="Maven: ch.qos.logback:logback-classic:1.2.3" level="project" />
<orderEntry type="library" name="Maven: ch.qos.logback:logback-core:1.2.3" level="project" />
......@@ -91,11 +92,21 @@
<orderEntry type="library" name="Maven: org.springframework:spring-test:5.1.7.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.xmlunit:xmlunit-core:2.6.2" level="project" />
<orderEntry type="library" name="Maven: org.mybatis.spring.boot:mybatis-spring-boot-starter:2.1.2" level="project" />
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-jdbc:2.1.5.RELEASE" level="project" />
<orderEntry type="library" name="Maven: com.zaxxer:HikariCP:3.2.0" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-jdbc:5.1.7.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.mybatis.spring.boot:mybatis-spring-boot-autoconfigure:2.1.2" level="project" />
<orderEntry type="library" name="Maven: org.mybatis:mybatis:3.5.4" level="project" />
<orderEntry type="library" name="Maven: org.mybatis:mybatis-spring:2.0.4" level="project" />
<orderEntry type="library" name="Maven: com.github.pagehelper:pagehelper-spring-boot-starter:1.2.10" level="project" />
<orderEntry type="library" name="Maven: com.github.pagehelper:pagehelper-spring-boot-autoconfigure:1.2.10" level="project" />
<orderEntry type="library" name="Maven: mysql:mysql-connector-java:8.0.16" level="project" />
<orderEntry type="library" name="Maven: com.baomidou:mybatis-plus-boot-starter:3.1.2" level="project" />
<orderEntry type="library" name="Maven: com.baomidou:mybatis-plus:3.1.2" level="project" />
<orderEntry type="library" name="Maven: com.baomidou:mybatis-plus-extension:3.1.2" level="project" />
<orderEntry type="library" name="Maven: com.baomidou:mybatis-plus-core:3.1.2" level="project" />
<orderEntry type="library" name="Maven: com.baomidou:mybatis-plus-annotation:3.1.2" level="project" />
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-autoconfigure:2.1.5.RELEASE" level="project" />
<orderEntry type="library" name="Maven: com.alibaba:druid-spring-boot-starter:1.1.22" level="project" />
<orderEntry type="library" name="Maven: com.alibaba:druid:1.1.22" level="project" />
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-data-redis:2.1.5.RELEASE" level="project" />
......@@ -133,30 +144,7 @@
<orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-databind:2.9.8" level="project" />
<orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-core:2.9.8" level="project" />
<orderEntry type="library" name="Maven: joda-time:joda-time:2.10.2" level="project" />
<orderEntry type="library" name="Maven: org.apache.shiro:shiro-core:1.4.0" level="project" />
<orderEntry type="library" name="Maven: org.apache.shiro:shiro-lang:1.4.0" level="project" />
<orderEntry type="library" name="Maven: org.apache.shiro:shiro-cache:1.4.0" level="project" />
<orderEntry type="library" name="Maven: org.apache.shiro:shiro-crypto-hash:1.4.0" level="project" />
<orderEntry type="library" name="Maven: org.apache.shiro:shiro-crypto-core:1.4.0" level="project" />
<orderEntry type="library" name="Maven: org.apache.shiro:shiro-crypto-cipher:1.4.0" level="project" />
<orderEntry type="library" name="Maven: org.apache.shiro:shiro-config-core:1.4.0" level="project" />
<orderEntry type="library" name="Maven: org.apache.shiro:shiro-config-ogdl:1.4.0" level="project" />
<orderEntry type="library" name="Maven: org.apache.shiro:shiro-event:1.4.0" level="project" />
<orderEntry type="library" name="Maven: org.apache.shiro:shiro-spring:1.4.0" level="project" />
<orderEntry type="library" name="Maven: org.apache.shiro:shiro-web:1.4.0" level="project" />
<orderEntry type="library" name="Maven: cn.hutool:hutool-all:4.6.7" level="project" />
<orderEntry type="library" name="Maven: com.baomidou:mybatis-plus-generator:3.4.1" level="project" />
<orderEntry type="library" name="Maven: com.baomidou:mybatis-plus-annotation:3.4.0" level="project" />
<orderEntry type="library" name="Maven: com.baomidou:mybatis-plus-extension:3.4.0" level="project" />
<orderEntry type="library" name="Maven: com.baomidou:mybatis-plus-core:3.4.0" level="project" />
<orderEntry type="library" name="Maven: org.mybatis:mybatis-spring:2.0.5" level="project" />
<orderEntry type="library" name="Maven: com.baomidou:mybatis-plus-boot-starter:3.4.0" level="project" />
<orderEntry type="library" name="Maven: com.baomidou:mybatis-plus:3.4.0" level="project" />
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-autoconfigure:2.1.5.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot:2.1.5.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-jdbc:2.1.5.RELEASE" level="project" />
<orderEntry type="library" name="Maven: com.zaxxer:HikariCP:3.2.0" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-jdbc:5.1.7.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.apache.velocity:velocity-engine-core:2.0" level="project" />
<orderEntry type="library" name="Maven: com.github.jsqlparser:jsqlparser:1.4" level="project" />
<orderEntry type="library" name="Maven: org.apache.commons:commons-lang3:3.8.1" level="project" />
......
......@@ -21,6 +21,9 @@ public class ProjectStatisticsByMonth implements Serializable {
@ApiModelProperty(name = "projectId",value = "项目主键")
private Integer projectId;
@ApiModelProperty(name = "oaProjectId", value = "项目在oa中的编号")
private String oaProjectId;
@ApiModelProperty(name = "projectName", value = "项目名称")
private String projectName;
......
......@@ -5,8 +5,8 @@ package cn.wisenergy.model.enums;
* @QQ1799796883
*/
public enum LevelEnum {
EXAMINE("工时审"),
USER_STATISTICS("人员统计报表"),
EXAMINE("工时审"),
USER_STATISTICS("人员工时统计"),
PROJECT_STATISTICS("项目统计报表"),
PROJECT_MANAGER( "项目/商机管理"),
TIMEEXPORT("工时导出"),
......
......@@ -9,6 +9,7 @@ public enum LevelRankEnum {
PROJECT_LEVEL(1,"项目级"),
DEPARTMENT_LEVEL(2,"部门级"),
CENTRAL_LEVEL(3, "中心级"),
SYSTEM_MANAGER(4,"中心级")
;
private Integer rank;
......
......@@ -22,6 +22,7 @@
<orderEntry type="module" module-name="wisenergy-common" />
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-web:2.1.5.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter:2.1.5.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot:2.1.5.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-logging:2.1.5.RELEASE" level="project" />
<orderEntry type="library" name="Maven: ch.qos.logback:logback-classic:1.2.3" level="project" />
<orderEntry type="library" name="Maven: ch.qos.logback:logback-core:1.2.3" level="project" />
......@@ -84,11 +85,21 @@
<orderEntry type="library" name="Maven: org.springframework:spring-test:5.1.7.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.xmlunit:xmlunit-core:2.6.2" level="project" />
<orderEntry type="library" name="Maven: org.mybatis.spring.boot:mybatis-spring-boot-starter:2.1.2" level="project" />
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-jdbc:2.1.5.RELEASE" level="project" />
<orderEntry type="library" name="Maven: com.zaxxer:HikariCP:3.2.0" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-jdbc:5.1.7.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.mybatis.spring.boot:mybatis-spring-boot-autoconfigure:2.1.2" level="project" />
<orderEntry type="library" name="Maven: org.mybatis:mybatis:3.5.4" level="project" />
<orderEntry type="library" name="Maven: org.mybatis:mybatis-spring:2.0.4" level="project" />
<orderEntry type="library" name="Maven: com.github.pagehelper:pagehelper-spring-boot-starter:1.2.10" level="project" />
<orderEntry type="library" name="Maven: com.github.pagehelper:pagehelper-spring-boot-autoconfigure:1.2.10" level="project" />
<orderEntry type="library" name="Maven: mysql:mysql-connector-java:8.0.16" level="project" />
<orderEntry type="library" name="Maven: com.baomidou:mybatis-plus-boot-starter:3.1.2" level="project" />
<orderEntry type="library" name="Maven: com.baomidou:mybatis-plus:3.1.2" level="project" />
<orderEntry type="library" name="Maven: com.baomidou:mybatis-plus-extension:3.1.2" level="project" />
<orderEntry type="library" name="Maven: com.baomidou:mybatis-plus-core:3.1.2" level="project" />
<orderEntry type="library" name="Maven: com.baomidou:mybatis-plus-annotation:3.1.2" level="project" />
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-autoconfigure:2.1.5.RELEASE" level="project" />
<orderEntry type="library" name="Maven: com.alibaba:druid-spring-boot-starter:1.1.22" level="project" />
<orderEntry type="library" name="Maven: com.alibaba:druid:1.1.22" level="project" />
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-data-redis:2.1.5.RELEASE" level="project" />
......@@ -126,17 +137,6 @@
<orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-databind:2.9.8" level="project" />
<orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-core:2.9.8" level="project" />
<orderEntry type="library" name="Maven: joda-time:joda-time:2.10.2" level="project" />
<orderEntry type="library" name="Maven: org.apache.shiro:shiro-core:1.4.0" level="project" />
<orderEntry type="library" name="Maven: org.apache.shiro:shiro-lang:1.4.0" level="project" />
<orderEntry type="library" name="Maven: org.apache.shiro:shiro-cache:1.4.0" level="project" />
<orderEntry type="library" name="Maven: org.apache.shiro:shiro-crypto-hash:1.4.0" level="project" />
<orderEntry type="library" name="Maven: org.apache.shiro:shiro-crypto-core:1.4.0" level="project" />
<orderEntry type="library" name="Maven: org.apache.shiro:shiro-crypto-cipher:1.4.0" level="project" />
<orderEntry type="library" name="Maven: org.apache.shiro:shiro-config-core:1.4.0" level="project" />
<orderEntry type="library" name="Maven: org.apache.shiro:shiro-config-ogdl:1.4.0" level="project" />
<orderEntry type="library" name="Maven: org.apache.shiro:shiro-event:1.4.0" level="project" />
<orderEntry type="library" name="Maven: org.apache.shiro:shiro-spring:1.4.0" level="project" />
<orderEntry type="library" name="Maven: org.apache.shiro:shiro-web:1.4.0" level="project" />
<orderEntry type="library" name="Maven: org.apache.poi:poi:3.9" level="project" />
<orderEntry type="library" name="Maven: org.apache.poi:poi-ooxml:3.9" level="project" />
<orderEntry type="library" name="Maven: dom4j:dom4j:1.6.1" level="project" />
......@@ -145,18 +145,6 @@
<orderEntry type="library" name="Maven: org.apache.xmlbeans:xmlbeans:2.3.0" level="project" />
<orderEntry type="library" name="Maven: stax:stax-api:1.0.1" level="project" />
<orderEntry type="library" name="Maven: cn.hutool:hutool-all:4.6.7" level="project" />
<orderEntry type="library" name="Maven: com.baomidou:mybatis-plus-generator:3.4.1" level="project" />
<orderEntry type="library" name="Maven: com.baomidou:mybatis-plus-annotation:3.4.0" level="project" />
<orderEntry type="library" name="Maven: com.baomidou:mybatis-plus-extension:3.4.0" level="project" />
<orderEntry type="library" name="Maven: com.baomidou:mybatis-plus-core:3.4.0" level="project" />
<orderEntry type="library" name="Maven: org.mybatis:mybatis-spring:2.0.5" level="project" />
<orderEntry type="library" name="Maven: com.baomidou:mybatis-plus-boot-starter:3.4.0" level="project" />
<orderEntry type="library" name="Maven: com.baomidou:mybatis-plus:3.4.0" level="project" />
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-autoconfigure:2.1.5.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot:2.1.5.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-jdbc:2.1.5.RELEASE" level="project" />
<orderEntry type="library" name="Maven: com.zaxxer:HikariCP:3.2.0" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-jdbc:5.1.7.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.apache.velocity:velocity-engine-core:2.0" level="project" />
<orderEntry type="library" name="Maven: org.slf4j:slf4j-api:1.7.26" level="project" />
<orderEntry type="library" name="Maven: org.apache.commons:commons-lang3:3.8.1" level="project" />
......
......@@ -15,6 +15,6 @@ public interface OaProjectService {
*/
List<OaProject> getListOaProject(String oaDeptNo, Integer typeId, String projectNameOrNo, List<String> oaProjectIds);
OaProject getOaProjectByNoAndName(CreateProjectVo createProjectVo);
OaProject getOaProjectByNoAndName(CreateProjectVo createProjectVo, String oaUserId);
}
......@@ -10,6 +10,7 @@ import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import java.util.HashMap;
import java.util.List;
......@@ -27,34 +28,45 @@ public class OaProjectServiceImpl implements OaProjectService {
private ProjectAndBoMapper projectAndBoMapper;
@Override
public List<OaProject> getListOaProject(String oaDeptNo, Integer typeId, String projectNameOrNo,List<String> oaProjectIds) {
public List<OaProject> getListOaProject(String oaDeptNo, Integer typeId, String projectNameOrNo, List<String> oaProjectIds) {
log.info("OaProjectServiceImpl[]getListOaProject[]input.param{}oaDeptNo, typeId, projectNameOrNo, oaProjectIds =>" + oaDeptNo +"," + typeId + "," + projectNameOrNo + "," +oaProjectIds);
if (StringUtils.isEmpty(oaDeptNo) || typeId == null) {
if (typeId == null) {
throw new BaseCustomException(BASE_RESP_CODE_ENUM.INPUT_PARAM_IS_NULL);
}
Map<String, Object> map = new HashMap<>();
if (StringUtils.isNotEmpty(oaDeptNo)) {
map.put("oaDeptNo", oaDeptNo);
}
map.put("projectNameOrNo", projectNameOrNo);
if (!CollectionUtils.isEmpty(oaProjectIds)) {
map.put("oaProjectIds", oaProjectIds);
}
List<OaProject> listOaProject = null;
if (typeId.equals(1)) {
listOaProject = projectAndBoMapper.getListOaProjectByDept(oaDeptNo, projectNameOrNo,oaProjectIds);
listOaProject = projectAndBoMapper.getListOaProjectByDept(map);
}
if (typeId.equals(2)) {
listOaProject = projectAndBoMapper.getListOaBoByDept(oaDeptNo, projectNameOrNo,oaProjectIds);
listOaProject = projectAndBoMapper.getListOaBoByDept(map);
}
return listOaProject;
}
@Override
public OaProject getOaProjectByNoAndName(CreateProjectVo createProjectVo) {
log.info("OaProjectServiceImpl[]getOaProjectByNoAndName[]input.param{}createProjectVo =>" + createProjectVo);
public OaProject getOaProjectByNoAndName(CreateProjectVo createProjectVo, String managerNo) {
log.info("OaProjectServiceImpl[]getOaProjectByNoAndName[]input.param{}createProjectVo,managerNo =>" + createProjectVo + "," + managerNo);
Map<String, Object> map = new HashMap<>();
// 项目/商机编号
map.put("projectNo", createProjectVo.getOaProjectId());
// 项目/商机名称
map.put("projectName", createProjectVo.getProjectName());
// 负责人编号
map.put("managerNo", managerNo);
// 项目对应的商机不为空
if (createProjectVo.getBusinessId() != null) {
if (StringUtils.isNotBlank(createProjectVo.getBusinessId())) {
map.put("boNo", createProjectVo.getBusinessId());
map.put("boName", createProjectVo.getBusinessName());
}
OaProject oaProject;
......
......@@ -144,8 +144,8 @@ public class WorkDeptServiceImpl implements WorkDeptService {
Set<WorkDept> depts = new LinkedHashSet<>();
for (UserRoleLevelDto userRoleLevelDto : roleUserLevel) {
if (userRoleLevelDto.getLevelName().equals(LevelEnum.PROJECT_MANAGER.getLevelName())) {
// 中心级
if (LevelRankEnum.CENTRAL_LEVEL.getRank().equals(userRoleLevelDto.getRank())) {
// 中心级或系统管理
if (LevelRankEnum.CENTRAL_LEVEL.getRank().equals(userRoleLevelDto.getRank()) ||LevelRankEnum.SYSTEM_MANAGER.getRank().equals(userRoleLevelDto.getRank())) {
List<WorkDept> deptByCentreManager = workCentreService.getDeptByCentreManager(user);
if (!CollectionUtils.isEmpty(deptByCentreManager)) {
depts.addAll(deptByCentreManager);
......
......@@ -563,7 +563,7 @@ public class WorkProjectServiceImpl implements WorkProjectService {
throw new BaseCustomException(BASE_RESP_CODE_ENUM.INPUT_PARAM_IS_NULL);
}
if (null == createProjectVo.getManagerId() || null == createProjectVo.getStartTime() || null == createProjectVo.getEndTime() || StringUtils.isBlank(createProjectVo.getOaProjectId()) || null == createProjectVo.getWorkTime() || null == createProjectVo.getCostBudget() || null == createProjectVo.getDeptId() ||
StringUtils.isBlank(createProjectVo.getProjectName()) || null == createProjectVo.getDeptId()) {
StringUtils.isBlank(createProjectVo.getProjectName()) || null == createProjectVo.getDeptId() || CollectionUtils.isEmpty(createProjectVo.getUserIds())) {
throw new BaseCustomException(BASE_RESP_CODE_ENUM.INPUT_PARAM_IS_NULL);
}
if (createProjectVo.getStartTime().compareTo(createProjectVo.getEndTime()) > 0) {
......@@ -572,34 +572,32 @@ public class WorkProjectServiceImpl implements WorkProjectService {
if (BigDecimal.ZERO.compareTo(createProjectVo.getWorkTime()) > 0 || BigDecimal.ZERO.compareTo(createProjectVo.getCostBudget()) > 0) {
throw new BaseCustomException(BASE_RESP_CODE_ENUM.BUDGET_CANNOT_BELESSTHAN_ZERO);
}
// 判断oa编号、项目名称是否重复
WorkProject byProjectNameOrOaId = workProjectMapper.getByProjectNameOrOaId(createProjectVo.getProjectName(), createProjectVo.getOaProjectId());
// 项目/商机管理部门级、系统管理权限能够新建项目/商机
List<Integer> rankByUserAndLevelName = UserRoleLevelUtils.getRankByUserAndLevelName(createProjectVo.getCreatorId(), LevelEnum.PROJECT_MANAGER.getLevelName());
if (!rankByUserAndLevelName.contains(LevelRankEnum.DEPARTMENT_LEVEL.getRank()) && !rankByUserAndLevelName.contains(LevelRankEnum.SYSTEM_MANAGER.getRank())) {
throw new BaseCustomException(BASE_RESP_CODE_ENUM.NO_AUTHORITY);
}
// 判断oa编号是否重复
WorkProject byProjectNameOrOaId = workProjectMapper.getByProjectOaId(createProjectVo.getOaProjectId());
if (byProjectNameOrOaId != null) {
if (createProjectVo.getProjectName().equals(byProjectNameOrOaId.getProjectName())) {
throw new BaseCustomException(BASE_RESP_CODE_ENUM.DUPLICATEPROJECTNAME);
}
if (createProjectVo.getOaProjectId().equals(byProjectNameOrOaId.getOaProjectId())) {
throw new BaseCustomException(BASE_RESP_CODE_ENUM.ITEMOADUPLICATE);
}
throw new BaseCustomException(BASE_RESP_CODE_ENUM.ITEMOADUPLICATE);
}
// List<WorkProject> workProjects = workProjectMapper.selectList(new QueryWrapper<>());
// if (CollectionUtils.isEmpty(workProjects)) {
// throw new BaseCustomException(BASE_RESP_CODE_ENUM.WORK_PROJECT_IS_NULL);
// }
// for (WorkProject workProject : workProjects) {
// if (createProjectVo.getProjectName().equals(workProject.getProjectName())) {
// throw new BaseCustomException(BASE_RESP_CODE_ENUM.DUPLICATEPROJECTNAME);
// }
// if (createProjectVo.getOaProjectId().equals(workProject.getOaProjectId())) {
// throw new BaseCustomException(BASE_RESP_CODE_ENUM.ITEMOADUPLICATE);
// }
// }
// 项目/商机负责人在工时系统中未找到
WorkUser manager = workUserMapper.getUserById(createProjectVo.getManagerId());
if (manager == null) {
throw new BaseCustomException(BASE_RESP_CODE_ENUM.CREATE_PROJECT_MANAGER_NOT_FOUND);
}
// 对项目名称做去空格
createProjectVo.setProjectName(createProjectVo.getProjectName().trim());
// 在oa数据库中查找对应信息
// OaProject oaProject = oaProjectService.getOaProjectByNoAndName(createProjectVo);
// if (oaProject == null) {
// throw new BaseCustomException(BASE_RESP_CODE_ENUM.NEW_PROJECT_OA_PROJECT_ID_OR_NAME_ERROR);
// }
OaProject oaProject = oaProjectService.getOaProjectByNoAndName(createProjectVo, manager.getOaUserId());
if (oaProject == null) {
throw new BaseCustomException(BASE_RESP_CODE_ENUM.NEW_PROJECT_OA_PROJECT_ID_OR_NAME_ERROR);
}
// 插入项目信息
Date date = new Date();
......@@ -614,9 +612,8 @@ public class WorkProjectServiceImpl implements WorkProjectService {
throw new BaseCustomException(BASE_RESP_CODE_ENUM.INSERT_DATA_IS_FAIL);
}
// 插入参与人员信息
if (!CollectionUtils.isEmpty(createProjectVo.getUserIds())) {
workUserProjectService.insertBatch(createProjectVo.getUserIds(), workProject.getId());
}
workUserProjectService.insertBatch(createProjectVo.getUserIds(), workProject.getId());
// 插入更变日志
WorkProjectChange workProjectChange = new WorkProjectChange();
workProjectChange.setProjectId(workProject.getId());
......@@ -787,32 +784,39 @@ public class WorkProjectServiceImpl implements WorkProjectService {
if (userId == null || typeId == null || StringUtils.isEmpty(projectNameOrNo)) {
throw new BaseCustomException(BASE_RESP_CODE_ENUM.INPUT_PARAM_IS_NULL);
}
// 项目/商机管理部门级权限能够新建项目/商机
// List<Integer> rankByUserAndLevelName = UserRoleLevelUtils.getRankByUserAndLevelName(userId, LevelEnum.PROJECT_MANAGER.getLevelName());
// if (!rankByUserAndLevelName.contains(LevelRankEnum.DEPARTMENT_LEVEL.getRank())) {
// throw new BaseCustomException(BASE_RESP_CODE_ENUM.NO_AUTHORITY);
// }
// 项目/商机管理部门级、系统管理权限能够查看oa项目/商机信息
List<Integer> rankByUserAndLevelName = UserRoleLevelUtils.getRankByUserAndLevelName(userId, LevelEnum.PROJECT_MANAGER.getLevelName());
if (!rankByUserAndLevelName.contains(LevelRankEnum.DEPARTMENT_LEVEL.getRank()) && !rankByUserAndLevelName.contains(LevelRankEnum.SYSTEM_MANAGER.getRank())) {
throw new BaseCustomException(BASE_RESP_CODE_ENUM.NO_AUTHORITY);
}
// 根据用户id查询所对应oa部门编号
WorkDept oaDept = workDeptMapper.getOaDeptNoByUserId(userId);
WorkDept dept = new WorkDept();
if (rankByUserAndLevelName.contains(LevelRankEnum.DEPARTMENT_LEVEL.getRank())) {
dept = workDeptMapper.getOaDeptNoByUserId(userId);
}
// 查询工时系统中的该部门下的项目/商机
List<WorkProject> projectList = workProjectMapper.getListByDeptAndType(oaDept.getId(),typeId, projectNameOrNo);
List<String> oaProjectIds = projectList.stream().map(WorkProject::getOaProjectId).collect(Collectors.toList());
List<String> oaProjectIds = workProjectMapper.getListByDeptAndType(typeId, projectNameOrNo);
// 移除集合中的null元素
oaProjectIds.remove(null);
// 从oa中根据部门的oa编号查询项目/商机,
// typeId 为1 查询项目,为2查询商机
if (currentPage != null && pageSize != null) {
PageHelper.startPage(currentPage, pageSize);
}
List<OaProject> listOaProject = oaProjectService.getListOaProject(oaDept.getOaDeptId(), typeId, projectNameOrNo,oaProjectIds);
List<OaProject> listOaProject = oaProjectService.getListOaProject(dept.getOaDeptId(), typeId, projectNameOrNo,oaProjectIds);
// 分页信息对象
PageInfo<OaProject> pageInfo = new PageInfo<>(listOaProject);
// 查询信息为空,直接返回
if (CollectionUtils.isEmpty(listOaProject)) {
return null;
}
// 查询项目经理在工时系统中对应的id
List<String> managerIds = listOaProject.stream().map(OaProject::getManagerNo).collect(Collectors.toList());
List<WorkUser> workUsers = null;
......@@ -820,13 +824,23 @@ public class WorkProjectServiceImpl implements WorkProjectService {
workUsers = workUserMapper.getUserByIds(managerIds);
}
// 所有部门信息
List<WorkDept> deptList = workDeptMapper.getAllDept();
// 将查询结果中的oa编号更换为工时系统中的编号
for (int i = 0; i < listOaProject.size(); i++) {
OaProject oaProject = listOaProject.get(i);
// 将部门oa编号替换为工时系统中的部门id
oaProject.setDeptNo(oaDept.getId().toString());
oaProject.setDeptName(oaDept.getDeptName());
for (WorkDept workDept : deptList) {
if (StringUtils.isNotBlank(workDept.getOaDeptId()) && workDept.getOaDeptId().equals(oaProject.getDeptNo())) {
oaProject.setDeptNo(workDept.getId().toString());
oaProject.setDeptName(workDept.getDeptName());
}
}
// 是否在工时系统中存在负责人
boolean isExist = false;
// 将项目/商机负责人oa编号替换为工时系统中的用户id
if (StringUtils.isNotBlank(oaProject.getManagerNo())) {
assert workUsers != null;
......@@ -834,6 +848,12 @@ public class WorkProjectServiceImpl implements WorkProjectService {
if (workUser.getOaUserId().equals(oaProject.getManagerNo())) {
oaProject.setManagerNo(workUser.getId().toString());
oaProject.setManagerName(workUser.getName());
isExist = true;
break;
}
// 负责人在工时系统中不存在
if (isExist) {
oaProject.setManagerNo(null);
}
}
}
......
......@@ -1339,6 +1339,7 @@ public class WorkTimeOrderServiceImpl implements WorkTimeOrderService {
int week = DateUtil.getWeek(datesBetweenTwoDate.get(j));
if (week == 7 || week == 1) {
datesBetweenTwoDate.remove(j);
j--;
}
}
......@@ -1355,6 +1356,7 @@ public class WorkTimeOrderServiceImpl implements WorkTimeOrderService {
}
}
}
// 所填报日期中没有工作日
if (datesBetweenTwoDate.size() == 0) {
throw new BaseCustomException(BASE_RESP_CODE_ENUM.LONG_LEAVE_DATE_NOT_ONLY_HOLIDAY);
......
......@@ -73,6 +73,8 @@ public class WorkUserServiceImpl implements WorkUserService {
@Autowired
private RedisTemplate redisTemplate;
private static final String LOGIN_SOURCE = "PC";
// 用户在职状态码
......@@ -244,6 +246,9 @@ public class WorkUserServiceImpl implements WorkUserService {
if (null == workUser) {
throw new BaseCustomException(BASE_RESP_CODE_ENUM.QUERY_DATA_IS_NULL);
}
// 踢出该用户前一个登录
kickoutSessionControlFilter.cleanUserLogin( userId);
// 清空该用在redis中的认证信息
WorkUser user = workUserMapper.getUserById(userId);
redisTemplate.delete("AuthenticationRedisCache" + user.getName());
......@@ -329,6 +334,9 @@ public class WorkUserServiceImpl implements WorkUserService {
throw new BaseCustomException(BASE_RESP_CODE_ENUM.QUERY_USER_INFO_FAIL);
}
// 将该用户之前登录踢出
kickoutSessionControlFilter.cleanUserLogin( userId);
// 清空该用在redis中的认证信息
redisTemplate.delete("AuthenticationRedisCache" + user.getName());
......
......@@ -44,7 +44,6 @@
<orderEntry type="library" name="Maven: org.springframework:spring-web:5.1.7.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-beans:5.1.7.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-webmvc:5.1.7.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-context:5.1.7.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-expression:5.1.7.RELEASE" level="project" />
<orderEntry type="library" name="Maven: net.sf.json-lib:json-lib:jdk15:2.4" level="project" />
<orderEntry type="library" name="Maven: commons-beanutils:commons-beanutils:1.8.0" level="project" />
......@@ -84,11 +83,20 @@
<orderEntry type="library" name="Maven: org.springframework:spring-test:5.1.7.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.xmlunit:xmlunit-core:2.6.2" level="project" />
<orderEntry type="library" name="Maven: org.mybatis.spring.boot:mybatis-spring-boot-starter:2.1.2" level="project" />
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-jdbc:2.1.5.RELEASE" level="project" />
<orderEntry type="library" name="Maven: com.zaxxer:HikariCP:3.2.0" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-jdbc:5.1.7.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.mybatis.spring.boot:mybatis-spring-boot-autoconfigure:2.1.2" level="project" />
<orderEntry type="library" name="Maven: org.mybatis:mybatis:3.5.4" level="project" />
<orderEntry type="library" name="Maven: org.mybatis:mybatis-spring:2.0.4" level="project" />
<orderEntry type="library" name="Maven: com.github.pagehelper:pagehelper-spring-boot-starter:1.2.10" level="project" />
<orderEntry type="library" name="Maven: com.github.pagehelper:pagehelper-spring-boot-autoconfigure:1.2.10" level="project" />
<orderEntry type="library" name="Maven: mysql:mysql-connector-java:8.0.16" level="project" />
<orderEntry type="library" name="Maven: com.baomidou:mybatis-plus-boot-starter:3.1.2" level="project" />
<orderEntry type="library" name="Maven: com.baomidou:mybatis-plus:3.1.2" level="project" />
<orderEntry type="library" name="Maven: com.baomidou:mybatis-plus-extension:3.1.2" level="project" />
<orderEntry type="library" name="Maven: com.baomidou:mybatis-plus-core:3.1.2" level="project" />
<orderEntry type="library" name="Maven: com.baomidou:mybatis-plus-annotation:3.1.2" level="project" />
<orderEntry type="library" name="Maven: com.alibaba:druid-spring-boot-starter:1.1.22" level="project" />
<orderEntry type="library" name="Maven: com.alibaba:druid:1.1.22" level="project" />
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-data-redis:2.1.5.RELEASE" level="project" />
......@@ -126,32 +134,25 @@
<orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-databind:2.9.8" level="project" />
<orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-core:2.9.8" level="project" />
<orderEntry type="library" name="Maven: joda-time:joda-time:2.10.2" level="project" />
<orderEntry type="library" name="Maven: org.apache.shiro:shiro-core:1.4.0" level="project" />
<orderEntry type="library" name="Maven: org.apache.shiro:shiro-lang:1.4.0" level="project" />
<orderEntry type="library" name="Maven: org.apache.shiro:shiro-cache:1.4.0" level="project" />
<orderEntry type="library" name="Maven: org.apache.shiro:shiro-crypto-hash:1.4.0" level="project" />
<orderEntry type="library" name="Maven: org.apache.shiro:shiro-crypto-core:1.4.0" level="project" />
<orderEntry type="library" name="Maven: org.apache.shiro:shiro-crypto-cipher:1.4.0" level="project" />
<orderEntry type="library" name="Maven: org.apache.shiro:shiro-config-core:1.4.0" level="project" />
<orderEntry type="library" name="Maven: org.apache.shiro:shiro-config-ogdl:1.4.0" level="project" />
<orderEntry type="library" name="Maven: org.apache.shiro:shiro-event:1.4.0" level="project" />
<orderEntry type="library" name="Maven: org.apache.shiro:shiro-spring:1.4.0" level="project" />
<orderEntry type="library" name="Maven: org.apache.shiro:shiro-web:1.4.0" level="project" />
<orderEntry type="library" name="Maven: cn.hutool:hutool-all:4.6.7" level="project" />
<orderEntry type="library" name="Maven: com.baomidou:mybatis-plus-generator:3.4.1" level="project" />
<orderEntry type="library" name="Maven: com.baomidou:mybatis-plus-annotation:3.4.0" level="project" />
<orderEntry type="library" name="Maven: com.baomidou:mybatis-plus-extension:3.4.0" level="project" />
<orderEntry type="library" name="Maven: com.baomidou:mybatis-plus-core:3.4.0" level="project" />
<orderEntry type="library" name="Maven: org.mybatis:mybatis-spring:2.0.5" level="project" />
<orderEntry type="library" name="Maven: com.baomidou:mybatis-plus-boot-starter:3.4.0" level="project" />
<orderEntry type="library" name="Maven: com.baomidou:mybatis-plus:3.4.0" level="project" />
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-autoconfigure:2.1.5.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot:2.1.5.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-jdbc:2.1.5.RELEASE" level="project" />
<orderEntry type="library" name="Maven: com.zaxxer:HikariCP:3.2.0" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-jdbc:5.1.7.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.apache.velocity:velocity-engine-core:2.0" level="project" />
<orderEntry type="library" name="Maven: com.github.jsqlparser:jsqlparser:1.4" level="project" />
<orderEntry type="module" module-name="wisenergy-shiro" />
<orderEntry type="library" name="Maven: org.apache.shiro:shiro-spring-boot-starter:1.4.1" level="project" />
<orderEntry type="library" name="Maven: org.apache.shiro:shiro-spring:1.4.1" level="project" />
<orderEntry type="library" name="Maven: org.apache.shiro:shiro-core:1.4.1" level="project" />
<orderEntry type="library" name="Maven: org.apache.shiro:shiro-lang:1.4.1" level="project" />
<orderEntry type="library" name="Maven: org.apache.shiro:shiro-cache:1.4.1" level="project" />
<orderEntry type="library" name="Maven: org.apache.shiro:shiro-crypto-hash:1.4.1" level="project" />
<orderEntry type="library" name="Maven: org.apache.shiro:shiro-crypto-core:1.4.1" level="project" />
<orderEntry type="library" name="Maven: org.apache.shiro:shiro-crypto-cipher:1.4.1" level="project" />
<orderEntry type="library" name="Maven: org.apache.shiro:shiro-config-core:1.4.1" level="project" />
<orderEntry type="library" name="Maven: org.apache.shiro:shiro-config-ogdl:1.4.1" level="project" />
<orderEntry type="library" name="Maven: org.apache.shiro:shiro-event:1.4.1" level="project" />
<orderEntry type="library" name="Maven: org.apache.shiro:shiro-web:1.4.1" level="project" />
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-autoconfigure:2.1.5.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot:2.1.5.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-context:5.1.7.RELEASE" level="project" />
<orderEntry type="library" name="Maven: com.hikvision.ga:artemis-http-client:1.1.3" level="project" />
<orderEntry type="library" name="Maven: ch.qos.logback:logback-core:1.2.3" level="project" />
<orderEntry type="library" name="Maven: ch.qos.logback:logback-classic:1.2.3" level="project" />
......
......@@ -74,7 +74,7 @@ public class ShiroConfig {
map.put("/swagger-resources/**","anon");
map.put("/v2/**","anon");
map.put("/static/**", "anon");
// map.put("/**", "kickout");
map.put("/**", "kickout");
map.put("/wxLogout", "wxLogout");
shiroFilterFactoryBean.setFilterChainDefinitionMap(map);
......
......@@ -12,6 +12,7 @@ import org.apache.shiro.authc.SimpleAuthenticationInfo;
import org.apache.shiro.cache.Cache;
import org.apache.shiro.cache.CacheManager;
import org.apache.shiro.session.Session;
import org.apache.shiro.session.SessionException;
import org.apache.shiro.session.mgt.DefaultSessionKey;
import org.apache.shiro.session.mgt.SessionManager;
import org.apache.shiro.subject.Subject;
......@@ -162,6 +163,23 @@ public class KickoutSessionControlFilter extends AccessControlFilter {
redisTemplate.opsForValue().set(getRedisKickoutKey(userId), deque, EXPIRE_TIME, TimeUnit.SECONDS);
}
// 将userId对应用户的所有登录session标记为踢出
public void cleanUserLogin(Integer userId){
Deque<Serializable> deque = (Deque<Serializable>) redisTemplate.opsForValue().get(getRedisKickoutKey(userId));
if (deque != null && deque.size() != 0) {
for (Serializable serializable : deque) {
try {
Session session = sessionManager.getSession(new DefaultSessionKey(serializable));
if (session != null) {
session.setAttribute("kickout", true);
}
} catch (SessionException e) {
e.printStackTrace();
}
}
}
}
// 请求是为小程序或请求接口为登录接口、小程序退出接口
public boolean isMiniProgram(HttpServletRequest request) {
boolean isMini = null != request.getHeader("identity") && request.getHeader("identity").equals("miniprogram");
......
......@@ -62,8 +62,7 @@ public class Trigger implements SchedulingConfigurer {
}
, triggerContext -> {
// Integer autoAdopt = workSubmitAdoptService.getById(1).getAutoAdopt();
Integer autoAdopt =1;
Integer autoAdopt = workSubmitAdoptService.getById(1).getAutoAdopt();
String time = "0 0 0 */" + autoAdopt + " * ?";
//返回执行的周期
return new CronTrigger(time).nextExecutionTime(triggerContext);
......
//package cn.wisenergy.web.config.hanlder;
//
//import cn.wisenergy.common.utils.RedisUtil;
//import cn.wisenergy.common.utils.exception.BASE_RESP_CODE_ENUM;
//import cn.wisenergy.common.utils.exception.BaseCustomException;
//import org.apache.commons.lang.StringUtils;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.stereotype.Component;
//
//import javax.servlet.*;
//import javax.servlet.http.HttpServletRequest;
//import javax.servlet.http.HttpSession;
//import java.io.IOException;
//import java.util.Arrays;
//import java.util.List;
//
///**
// * @description:
// * @author: nh
// * @create: 2021-04-01 10:44
// **/
//@Component
//public class LoginFilter implements Filter {
//
// @Autowired
// private RedisUtil redisUtil;
//
// private static final int SESSION_EXPIRE = 30 * 60;
//
// private final static List<String> URI_LIST = Arrays.asList("/login","/webjars","/swagger-resources",
// "/null","/v2","/swagger-ui.html","/work/collect","/work/order/addOrder","/work/order/examine","/work/order/getDeptNotOrderInfo",
// "/work/order/getExamineApplets","/work/order/getProject","/work/order/noSubmit","/work/order/query","/work/order/reject",
// "/changePassword","/getUserInfo","/statistics/getCurrentMonthWorkTimeCollect","/statistics/getMonthlyWorkingHours");
//
// @Override
// public void init(FilterConfig filterConfig) throws ServletException {
//
// }
//
// @Override
// public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
// HttpServletRequest httpServletRequest = (HttpServletRequest) request;
// HttpSession session = httpServletRequest.getSession(false);
//
// // 请求接口不为指定接口再过滤
// String requestURI = ((HttpServletRequest) request).getRequestURI();
// System.out.println("requestURI = " + requestURI);
// for (String s : URI_LIST) {
// if (requestURI.startsWith(s)) {
// chain.doFilter(request,response);
// return;
// }
// }
//
// // 请求没有携带session
// if (session == null) {
// System.out.println("session Is Null");
// throw new BaseCustomException(BASE_RESP_CODE_ENUM.PLEASE_RE_LOGIN);
// }
// System.out.println("session.getId() = " + session.getId());
// // 获取redis中存储的登录时存放的session
// String sessionCache = redisUtil.get(session.getId());
// // session为空,session与登录时的session不一致提示重新登录,不为空则进行下一个过滤
// if (StringUtils.isBlank(sessionCache)) {
// throw new BaseCustomException(BASE_RESP_CODE_ENUM.PLEASE_RE_LOGIN);
// } else if (!sessionCache.equals(session)) {
// throw new BaseCustomException(BASE_RESP_CODE_ENUM.PLEASE_RE_LOGIN);
// } else {
// redisUtil.set(session.getId(), session.toString(), SESSION_EXPIRE);
// chain.doFilter(request, response);
// }
//
// }
//
// @Override
// public void destroy() {
//
// }
//}
......@@ -89,7 +89,7 @@ spring:
redis:
database: 0
database: 1
host: 192.168.110.84
port: 6379
password: # 密码(默认为空)
......@@ -112,9 +112,10 @@ jwt:
expire: 14400
logging:
config: classpath:logback-spring.xml
mybatis-plus:
mapper-locations: classpath*:mapper/*.xml
mybatis:
mapper-locations: classpath*:mapper/*.xml
#mybatis-plus:
# mapper-locations: classpath*:mapper/*.xml
#mybatis:
# mapper-locations: classpath*:mapper/*.xml
#redis
\ No newline at end of file
......@@ -69,3 +69,4 @@ camera:
logging:
level:
cn.wisenergy.mapper : debug
cn.wisenergy.oaMapper : debug
......@@ -44,11 +44,10 @@
<orderEntry type="library" name="Maven: javax.validation:validation-api:2.0.1.Final" level="project" />
<orderEntry type="library" name="Maven: org.jboss.logging:jboss-logging:3.3.2.Final" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-web:5.1.7.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-beans:5.1.7.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-webmvc:5.1.7.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-context:5.1.7.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-expression:5.1.7.RELEASE" level="project" />
<orderEntry type="library" name="Maven: net.sf.json-lib:json-lib:jdk15:2.4" level="project" />
<orderEntry type="library" name="Maven: commons-beanutils:commons-beanutils:1.8.0" level="project" />
<orderEntry type="library" name="Maven: commons-collections:commons-collections:3.2.1" level="project" />
<orderEntry type="library" name="Maven: net.sf.ezmorph:ezmorph:1.0.6" level="project" />
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-undertow:2.1.5.RELEASE" level="project" />
<orderEntry type="library" name="Maven: io.undertow:undertow-core:2.0.20.Final" level="project" />
......@@ -79,16 +78,23 @@
<orderEntry type="library" name="Maven: org.hamcrest:hamcrest-library:1.3" level="project" />
<orderEntry type="library" name="Maven: org.skyscreamer:jsonassert:1.5.0" level="project" />
<orderEntry type="library" name="Maven: com.vaadin.external.google:android-json:0.0.20131108.vaadin1" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-core:5.1.7.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-jcl:5.1.7.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-test:5.1.7.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.xmlunit:xmlunit-core:2.6.2" level="project" />
<orderEntry type="library" name="Maven: org.mybatis.spring.boot:mybatis-spring-boot-starter:2.1.2" level="project" />
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-jdbc:2.1.5.RELEASE" level="project" />
<orderEntry type="library" name="Maven: com.zaxxer:HikariCP:3.2.0" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-jdbc:5.1.7.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.mybatis.spring.boot:mybatis-spring-boot-autoconfigure:2.1.2" level="project" />
<orderEntry type="library" name="Maven: org.mybatis:mybatis:3.5.4" level="project" />
<orderEntry type="library" name="Maven: org.mybatis:mybatis-spring:2.0.4" level="project" />
<orderEntry type="library" name="Maven: com.github.pagehelper:pagehelper-spring-boot-starter:1.2.10" level="project" />
<orderEntry type="library" name="Maven: com.github.pagehelper:pagehelper-spring-boot-autoconfigure:1.2.10" level="project" />
<orderEntry type="library" name="Maven: mysql:mysql-connector-java:8.0.16" level="project" />
<orderEntry type="library" name="Maven: com.baomidou:mybatis-plus-boot-starter:3.1.2" level="project" />
<orderEntry type="library" name="Maven: com.baomidou:mybatis-plus:3.1.2" level="project" />
<orderEntry type="library" name="Maven: com.baomidou:mybatis-plus-extension:3.1.2" level="project" />
<orderEntry type="library" name="Maven: com.baomidou:mybatis-plus-core:3.1.2" level="project" />
<orderEntry type="library" name="Maven: com.baomidou:mybatis-plus-annotation:3.1.2" level="project" />
<orderEntry type="library" name="Maven: com.alibaba:druid-spring-boot-starter:1.1.22" level="project" />
<orderEntry type="library" name="Maven: com.alibaba:druid:1.1.22" level="project" />
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-data-redis:2.1.5.RELEASE" level="project" />
......@@ -127,35 +133,30 @@
<orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-core:2.9.8" level="project" />
<orderEntry type="library" name="Maven: joda-time:joda-time:2.10.2" level="project" />
<orderEntry type="library" name="Maven: cn.hutool:hutool-all:4.6.7" level="project" />
<orderEntry type="library" name="Maven: com.baomidou:mybatis-plus-generator:3.4.1" level="project" />
<orderEntry type="library" name="Maven: com.baomidou:mybatis-plus-annotation:3.4.0" level="project" />
<orderEntry type="library" name="Maven: com.baomidou:mybatis-plus-extension:3.4.0" level="project" />
<orderEntry type="library" name="Maven: com.baomidou:mybatis-plus-core:3.4.0" level="project" />
<orderEntry type="library" name="Maven: org.mybatis:mybatis-spring:2.0.5" level="project" />
<orderEntry type="library" name="Maven: com.baomidou:mybatis-plus-boot-starter:3.4.0" level="project" />
<orderEntry type="library" name="Maven: com.baomidou:mybatis-plus:3.4.0" level="project" />
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-autoconfigure:2.1.5.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot:2.1.5.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-jdbc:2.1.5.RELEASE" level="project" />
<orderEntry type="library" name="Maven: com.zaxxer:HikariCP:3.2.0" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-jdbc:5.1.7.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.apache.velocity:velocity-engine-core:2.0" level="project" />
<orderEntry type="library" name="Maven: com.hikvision.ga:artemis-http-client:1.1.3" level="project" />
<orderEntry type="library" name="Maven: ch.qos.logback:logback-core:1.2.3" level="project" />
<orderEntry type="library" name="Maven: ch.qos.logback:logback-classic:1.2.3" level="project" />
<orderEntry type="library" name="Maven: org.apache.shiro:shiro-spring:1.4.0" level="project" />
<orderEntry type="library" name="Maven: org.apache.shiro:shiro-core:1.4.0" level="project" />
<orderEntry type="library" name="Maven: org.apache.shiro:shiro-lang:1.4.0" level="project" />
<orderEntry type="library" name="Maven: org.apache.shiro:shiro-cache:1.4.0" level="project" />
<orderEntry type="library" name="Maven: org.apache.shiro:shiro-crypto-hash:1.4.0" level="project" />
<orderEntry type="library" name="Maven: org.apache.shiro:shiro-crypto-core:1.4.0" level="project" />
<orderEntry type="library" name="Maven: org.apache.shiro:shiro-crypto-cipher:1.4.0" level="project" />
<orderEntry type="library" name="Maven: org.apache.shiro:shiro-config-core:1.4.0" level="project" />
<orderEntry type="library" name="Maven: org.apache.shiro:shiro-config-ogdl:1.4.0" level="project" />
<orderEntry type="library" name="Maven: commons-beanutils:commons-beanutils:1.9.3" level="project" />
<orderEntry type="library" name="Maven: commons-collections:commons-collections:3.2.2" level="project" />
<orderEntry type="library" name="Maven: org.apache.shiro:shiro-event:1.4.0" level="project" />
<orderEntry type="library" name="Maven: org.apache.shiro:shiro-web:1.4.0" level="project" />
<orderEntry type="module" module-name="wisenergy-shiro" />
<orderEntry type="library" name="Maven: org.apache.shiro:shiro-spring-boot-starter:1.4.1" level="project" />
<orderEntry type="library" name="Maven: org.apache.shiro:shiro-spring:1.4.1" level="project" />
<orderEntry type="library" name="Maven: org.apache.shiro:shiro-core:1.4.1" level="project" />
<orderEntry type="library" name="Maven: org.apache.shiro:shiro-lang:1.4.1" level="project" />
<orderEntry type="library" name="Maven: org.apache.shiro:shiro-cache:1.4.1" level="project" />
<orderEntry type="library" name="Maven: org.apache.shiro:shiro-crypto-hash:1.4.1" level="project" />
<orderEntry type="library" name="Maven: org.apache.shiro:shiro-crypto-core:1.4.1" level="project" />
<orderEntry type="library" name="Maven: org.apache.shiro:shiro-crypto-cipher:1.4.1" level="project" />
<orderEntry type="library" name="Maven: org.apache.shiro:shiro-config-core:1.4.1" level="project" />
<orderEntry type="library" name="Maven: org.apache.shiro:shiro-config-ogdl:1.4.1" level="project" />
<orderEntry type="library" name="Maven: org.apache.shiro:shiro-event:1.4.1" level="project" />
<orderEntry type="library" name="Maven: org.apache.shiro:shiro-web:1.4.1" level="project" />
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-autoconfigure:2.1.5.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot:2.1.5.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-core:5.1.7.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-jcl:5.1.7.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-context:5.1.7.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-beans:5.1.7.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-expression:5.1.7.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.apache.commons:commons-lang3:3.8.1" level="project" />
<orderEntry type="library" name="Maven: commons-lang:commons-lang:2.6" level="project" />
<orderEntry type="library" name="Maven: commons-pool:commons-pool:1.6" level="project" />
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment