workDayMap) {
+ return workDayMap.entrySet().stream()
+ // 对每个用户创建一个StaticsHourVo对象
+ .map(entry -> createStaticsHourVo(entry.getKey(), entry.getValue()))
+ .collect(Collectors.toList());
+ }
+
+ // 创建StaticsHourVo对象,计算工时并格式化为字符串
+ private StaticsHourVo createStaticsHourVo(String name, BigDecimal workDay) {
+ StaticsHourVo vo = new StaticsHourVo();
+ vo.setName(name);
+ // 将总工时除以8,表示为工作日,并保留两位小数
+ vo.setWorkDay(workDay);
+ return vo;
+ }
+
+}
diff --git a/pms-business/src/main/java/tech/unissense/pms/business/work/logger/vo/CalendarVo.java b/pms-business/src/main/java/tech/unissense/pms/business/work/logger/vo/CalendarVo.java
new file mode 100644
index 0000000..af1f27c
--- /dev/null
+++ b/pms-business/src/main/java/tech/unissense/pms/business/work/logger/vo/CalendarVo.java
@@ -0,0 +1,25 @@
+package tech.unissense.pms.business.work.logger.vo;
+
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * @author : ch
+ * @version : 1.0
+ * @ClassName : CalendarVo
+ * @Description : TODO(用一句话描述该类做什么)
+ * @DATE : Created in 11:40 2024/10/9
+ * Copyright: Copyright(c)2024
+ * Company : 紫光汇智信息技术有限公司
+ * Modification History:
+ * Date Author Version Discription
+ * --------------------------------------------------------------------------
+ * 2024/10/9 ch 1.0 Why & What is modified: <修改原因描述> *
+ */
+@Data
+public class CalendarVo {
+ private Date date;
+
+ private String state;
+}
diff --git a/pms-business/src/main/java/tech/unissense/pms/business/work/logger/vo/StaticsHourVo.java b/pms-business/src/main/java/tech/unissense/pms/business/work/logger/vo/StaticsHourVo.java
new file mode 100644
index 0000000..1912be4
--- /dev/null
+++ b/pms-business/src/main/java/tech/unissense/pms/business/work/logger/vo/StaticsHourVo.java
@@ -0,0 +1,25 @@
+package tech.unissense.pms.business.work.logger.vo;
+
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+/**
+ * @author : ch
+ * @version : 1.0
+ * @ClassName : CalendarVo
+ * @Description : TODO(用一句话描述该类做什么)
+ * @DATE : Created in 11:40 2024/10/9
+ * Copyright: Copyright(c)2024
+ * Company : 紫光汇智信息技术有限公司
+ * Modification History:
+ * Date Author Version Discription
+ * --------------------------------------------------------------------------
+ * 2024/10/9 ch 1.0 Why & What is modified: <修改原因描述> *
+ */
+@Data
+public class StaticsHourVo {
+ private String name;
+
+ private BigDecimal workDay;
+}
diff --git a/pms-business/src/main/resources/mapper/business/Project/ProjectMapper.xml b/pms-business/src/main/resources/mapper/business/Project/ProjectMapper.xml
new file mode 100644
index 0000000..f152c9e
--- /dev/null
+++ b/pms-business/src/main/resources/mapper/business/Project/ProjectMapper.xml
@@ -0,0 +1,279 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ select project_id,
+ tenant_id,
+ project_name,
+ project_code,
+ project_leader,
+ start_date,
+ end_date,
+ budget_date,
+ state,
+ project_state,
+ create_by,
+ update_by,
+ update_time,
+ create_time
+ from pms_project
+
+
+
+
+
+
+
+
+
+
+
+
+ insert into pms_project(tenant_id, project_name, project_code, project_leader, start_date, end_date,
+ budget_date, state, project_state, create_by, update_by,
+ update_time, create_time)
+ values (#{tenantId}, #{projectName}, #{projectCode}, #{projectLeader}, #{startDate}, #{endDate}, #{budgetDate},
+ #{state}, #{projectState}, #{createBy}, #{updateBy}, #{updateTime},
+ #{createTime})
+
+
+
+ insert into pms_project(tenant_id, project_name, project_code, project_leader, start_date, end_date,
+ budget_date, state, project_state, create_by, update_by, update_time,
+ create_time)
+ values
+
+ (#{entity.tenantId}, #{entity.projectName}, #{entity.projectCode}, #{entity.projectLeader},
+ #{entity.startDate}, #{entity.endDate}, #{entity.budgetDate}, #{entity.state}, #{entity.projectState},
+ #{entity.createBy}, #{entity.updateBy},
+ #{entity.updateTime}, #{entity.createTime})
+
+
+
+
+ insert into pms_project(tenant_id, project_name, project_code, project_leader, start_date, end_date,
+ budget_date, state, project_state, create_by, update_by, update_time,
+ create_time)
+ values
+
+ (#{entity.tenantId}, #{entity.projectName}, #{entity.projectCode}, #{entity.projectLeader},
+ #{entity.startDate}, #{entity.endDate}, #{entity.budgetDate}, #{entity.state}, #{entity.projectState},
+ #{entity.createBy}, #{entity.updateBy},
+ #{entity.updateTime}, #{entity.createTime})
+
+ on duplicate key update
+ tenant_id = values(tenant_id),
+ project_name = values(project_name),
+ project_code = values(project_code),
+ project_leader = values(project_leader),
+ start_date = values(start_date),
+ end_date = values(end_date),
+ budget_date = values(budget_date),
+ state = values(state),
+ project_state = values(project_state),
+ create_by = values(create_by),
+ update_by = values(update_by),
+
+ update_time = values(update_time),
+ create_time = values(create_time)
+
+
+
+
+ update pms_project
+
+
+ tenant_id = #{tenantId},
+
+
+ project_name = #{projectName},
+
+
+ project_code = #{projectCode},
+
+
+ project_leader = #{projectLeader},
+
+
+ start_date = #{startDate},
+
+
+ end_date = #{endDate},
+
+
+ budget_date = #{budgetDate},
+
+
+ state = #{state},
+
+
+ project_state = #{projectState},
+
+
+ create_by = #{createBy},
+
+
+ update_by = #{updateBy},
+
+
+
+ update_time = #{updateTime},
+
+
+ create_time = #{createTime},
+
+
+ where project_id = #{projectId}
+
+
+
+
+ delete
+ from pms_project
+ where project_id = #{projectId}
+
+
+
+
diff --git a/pms-business/src/main/resources/mapper/business/ProjectTeam/ProjectTeamMapper.xml b/pms-business/src/main/resources/mapper/business/ProjectTeam/ProjectTeamMapper.xml
new file mode 100644
index 0000000..5ff4614
--- /dev/null
+++ b/pms-business/src/main/resources/mapper/business/ProjectTeam/ProjectTeamMapper.xml
@@ -0,0 +1,175 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ select project_id,
+ team_id,
+ user_id,
+ post_id,
+ create_by,
+ update_by,
+ update_time,
+ create_time
+ from pms_project_team
+
+
+
+
+
+
+
+
+
+
+
+
+ insert into pms_project_team(project_id, user_id, post_id, create_by, update_by, update_time, create_time)
+ values (#{projectId}, #{userId}, #{postId}, #{createBy}, #{updateBy}, #{updateTime}, #{createTime})
+
+
+
+ insert into pms_project_team(project_id, user_id, post_id, create_by, update_by, update_time, create_time)
+ values
+
+ (#{entity.projectId}, #{entity.userId}, #{entity.postId}, #{entity.createBy}, #{entity.updateBy},
+ #{entity.updateTime}, #{entity.createTime})
+
+
+
+
+ insert into pms_project_team(project_id, user_id, post_id, create_by, update_by, update_time, create_time)
+ values
+
+ (#{entity.projectId}, #{entity.userId}, #{entity.postId}, #{entity.createBy}, #{entity.updateBy},
+ #{entity.updateTime}, #{entity.createTime})
+
+ on duplicate key update
+ project_id = values(project_id),
+ user_id = values(user_id),
+ post_id = values(post_id),
+ update_by = values(update_by),
+ update_time = values(update_time),
+
+
+
+
+ update pms_project_team
+
+
+ project_id = #{projectId},
+
+
+ user_id = #{userId},
+
+
+ post_id = #{postId},
+
+
+ create_by = #{createBy},
+
+
+ update_by = #{updateBy},
+
+
+ update_time = #{updateTime},
+
+
+ create_time = #{createTime},
+
+
+ where team_id = #{teamId}
+
+
+
+
+ delete
+ from pms_project_team
+ where team_id = #{teamId}
+
+
+
+
diff --git a/pms-business/src/main/resources/mapper/business/WorkLogger/WorkLoggerMapper.xml b/pms-business/src/main/resources/mapper/business/WorkLogger/WorkLoggerMapper.xml
new file mode 100644
index 0000000..c0fbd6f
--- /dev/null
+++ b/pms-business/src/main/resources/mapper/business/WorkLogger/WorkLoggerMapper.xml
@@ -0,0 +1,242 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ select logger_id,
+ logger_date,
+ project_id,
+ user_id,
+ work_time,
+ work_content,
+ state,
+ create_by,
+ update_by,
+ update_time,
+ create_time
+ from pms_work_logger
+
+
+
+
+
+
+
+
+
+
+
+
+ insert into pms_work_logger(logger_date, project_id, user_id, work_time, work_content, state, create_by,
+ update_by, update_time, create_time)
+ values (#{loggerDate}, #{projectId}, #{userId}, #{workTime}, #{workContent}, #{state}, #{createBy}, #{updateBy},
+ #{updateTime}, #{createTime})
+
+
+
+ insert into pms_work_logger(logger_date, project_id, user_id, work_time, work_content, state, create_by,
+ update_by, update_time, create_time)
+ values
+
+ (#{entity.loggerDate}, #{entity.projectId}, #{entity.userId}, #{entity.workTime}, #{entity.workContent},
+ #{entity.state}, #{entity.createBy}, #{entity.updateBy}, #{entity.updateTime}, #{entity.createTime})
+
+
+
+
+ insert into pms_work_logger(logger_date, project_id, user_id, work_time, work_content, state, create_by,
+ update_by, update_time, create_time)
+ values
+
+ (#{entity.loggerDate}, #{entity.projectId}, #{entity.userId}, #{entity.workTime}, #{entity.workContent},
+ #{entity.state}, #{entity.createBy}, #{entity.updateBy}, #{entity.updateTime}, #{entity.createTime})
+
+ on duplicate key update
+ logger_date = values(logger_date),
+ project_id = values(project_id),
+ user_id = values(user_id),
+ work_time = values(work_time),
+ work_content = values(work_content),
+ state = values(state),
+ create_by = values(create_by),
+ update_by = values(update_by),
+ update_time = values(update_time),
+ create_time = values(create_time)
+
+
+
+
+ update pms_work_logger
+
+
+ logger_date = #{loggerDate},
+
+
+ project_id = #{projectId},
+
+
+ user_id = #{userId},
+
+
+ work_time = #{workTime},
+
+
+ work_content = #{workContent},
+
+
+ state = #{state},
+
+
+ create_by = #{createBy},
+
+
+ update_by = #{updateBy},
+
+
+ update_time = #{updateTime},
+
+
+ create_time = #{createTime},
+
+
+ where logger_id = #{loggerId}
+
+
+
+
+ delete
+ from pms_work_logger
+ where logger_id = #{loggerId}
+
+
+
+
diff --git a/pms-common/src/main/java/tech/unissense/pms/common/core/domain/entity/SysUser.java b/pms-common/src/main/java/tech/unissense/pms/common/core/domain/entity/SysUser.java
index b884b96..d4398bb 100644
--- a/pms-common/src/main/java/tech/unissense/pms/common/core/domain/entity/SysUser.java
+++ b/pms-common/src/main/java/tech/unissense/pms/common/core/domain/entity/SysUser.java
@@ -69,6 +69,7 @@ public class SysUser extends BaseEntity
/** 最后登录时间 */
@Excel(name = "最后登录时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss", type = Type.EXPORT)
private Date loginDate;
+ private Integer tenantId;
/** 部门对象 */
@Excels({
@@ -94,6 +95,14 @@ public class SysUser extends BaseEntity
}
+ public Integer getTenantId() {
+ return tenantId;
+ }
+
+ public void setTenantId(Integer tenantId) {
+ this.tenantId = tenantId;
+ }
+
public SysUser(Long userId)
{
this.userId = userId;
diff --git a/pms-common/src/main/java/tech/unissense/pms/common/core/domain/model/LoginUser.java b/pms-common/src/main/java/tech/unissense/pms/common/core/domain/model/LoginUser.java
index 7f2ab2c..674ab0f 100644
--- a/pms-common/src/main/java/tech/unissense/pms/common/core/domain/model/LoginUser.java
+++ b/pms-common/src/main/java/tech/unissense/pms/common/core/domain/model/LoginUser.java
@@ -25,6 +25,10 @@ public class LoginUser implements UserDetails
* 部门ID
*/
private Long deptId;
+ /**
+ * 部门ID
+ */
+ private Long tenantId;
/**
* 用户唯一标识
@@ -71,6 +75,14 @@ public class LoginUser implements UserDetails
*/
private SysUser user;
+ public Long getTenantId() {
+ return tenantId;
+ }
+
+ public void setTenantId(Long tenantId) {
+ this.tenantId = tenantId;
+ }
+
public LoginUser()
{
}
diff --git a/pms-common/src/main/java/tech/unissense/pms/common/core/page/TableSupport.java b/pms-common/src/main/java/tech/unissense/pms/common/core/page/TableSupport.java
index 818cfe1..c2de8e8 100644
--- a/pms-common/src/main/java/tech/unissense/pms/common/core/page/TableSupport.java
+++ b/pms-common/src/main/java/tech/unissense/pms/common/core/page/TableSupport.java
@@ -1,7 +1,12 @@
package tech.unissense.pms.common.core.page;
+import com.alibaba.fastjson2.JSONObject;
+import org.apache.commons.io.IOUtils;
import tech.unissense.pms.common.core.text.Convert;
import tech.unissense.pms.common.utils.ServletUtils;
+import tech.unissense.pms.common.utils.StringUtils;
+
+import java.io.IOException;
/**
* 表格数据处理
@@ -40,11 +45,28 @@ public class TableSupport
*/
public static PageDomain getPageDomain()
{
+ String body = null;
+ try {
+ body = new String(IOUtils.toByteArray((ServletUtils.getRequest().getInputStream()))).replaceAll("\t|\n|\r", "");
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ JSONObject paramMap = StringUtils.isNotBlank(body)?JSONObject.parseObject(body):new JSONObject();
+
+ Integer pageSize = ServletUtils.getParameterToInt(PAGE_SIZE);
+ Integer pageNum = ServletUtils.getParameterToInt(PAGE_NUM);
+ if(paramMap.getIntValue(PAGE_NUM) > 0){
+ pageNum = paramMap.getIntValue(PAGE_NUM);
+ }
+ if(paramMap.getIntValue(PAGE_SIZE) > 0){
+ pageSize = paramMap.getIntValue(PAGE_SIZE);
+ }
+
PageDomain pageDomain = new PageDomain();
- pageDomain.setPageNum(Convert.toInt(ServletUtils.getParameter(PAGE_NUM), 1));
- pageDomain.setPageSize(Convert.toInt(ServletUtils.getParameter(PAGE_SIZE), 10));
- pageDomain.setOrderByColumn(ServletUtils.getParameter(ORDER_BY_COLUMN));
- pageDomain.setIsAsc(ServletUtils.getParameter(IS_ASC));
+ pageDomain.setPageNum(pageNum);
+ pageDomain.setPageSize(pageSize);
+ pageDomain.setOrderByColumn(StringUtils.isNotBlank(paramMap.getString(ORDER_BY_COLUMN))?paramMap.getString(ORDER_BY_COLUMN):ServletUtils.getParameter(ORDER_BY_COLUMN));
+ pageDomain.setIsAsc(StringUtils.isNotBlank(paramMap.getString(IS_ASC))?paramMap.getString(IS_ASC):ServletUtils.getParameter(IS_ASC));
pageDomain.setReasonable(ServletUtils.getParameterToBool(REASONABLE));
return pageDomain;
}
diff --git a/pms-framework/src/main/java/tech/unissense/pms/framework/config/CaptchaConfig.java b/pms-framework/src/main/java/tech/unissense/pms/framework/config/CaptchaConfig.java
index d3e0733..fba9cd8 100644
--- a/pms-framework/src/main/java/tech/unissense/pms/framework/config/CaptchaConfig.java
+++ b/pms-framework/src/main/java/tech/unissense/pms/framework/config/CaptchaConfig.java
@@ -63,7 +63,7 @@ public class CaptchaConfig
// KAPTCHA_SESSION_KEY
properties.setProperty(KAPTCHA_SESSION_CONFIG_KEY, "kaptchaCodeMath");
// 验证码文本生成器
- properties.setProperty(KAPTCHA_TEXTPRODUCER_IMPL, "tech.unissense.framework.config.KaptchaTextCreator");
+ properties.setProperty(KAPTCHA_TEXTPRODUCER_IMPL, "tech.unissense.pms.framework.config.KaptchaTextCreator");
// 验证码文本字符间距 默认为2
properties.setProperty(KAPTCHA_TEXTPRODUCER_CHAR_SPACE, "3");
// 验证码文本字符长度 默认为5
diff --git a/pom.xml b/pom.xml
index c171224..b184bf1 100644
--- a/pom.xml
+++ b/pom.xml
@@ -8,7 +8,7 @@
pms
3.8.8
- ruoyi
+ pms
http://www.ruoyi.vip
若依管理系统
@@ -54,7 +54,11 @@
pom
import