Browse Source

用户\项目模块修改

anderx 2 years ago
parent
commit
6e7b25e0b2

+ 8 - 2
ruoyi-admin/src/main/java/com/ruoyi/web/controller/project/ProjectTaskController.java

@@ -60,6 +60,9 @@ public class ProjectTaskController extends BaseController {
         if (projectTask.getAid()== null){
             return error("负责人不能为空");
         }
+        if (projectTaskService.checkProjectNumber(projectTask)){
+            return error("项目编号已存在");
+        }
         return projectTaskService.addProjectTask(projectTask);
     }
 
@@ -75,6 +78,9 @@ public class ProjectTaskController extends BaseController {
         if (projectTask.getAid()== null){
             return error("负责人不能为空");
         }
+        if (projectTaskService.checkProjectNumber(projectTask)){
+            return error("项目编号已存在");
+        }
         return projectTaskService.updateProjectTask(projectTask);
     }
 
@@ -194,12 +200,12 @@ public class ProjectTaskController extends BaseController {
     @PostMapping("/listRecord/importData")
     @ApiOperation("导入项目打卡数据")
     @Log(title = "项目日志管理", businessType = BusinessType.IMPORT)
-    public AjaxResult listRecordImportData(MultipartFile file, boolean isUpdateSupport) throws Exception
+    public AjaxResult listRecordImportData(MultipartFile file, boolean updateSupport) throws Exception
     {
         ExcelUtil<ProjectStaffRecordOut> util = new ExcelUtil<>(ProjectStaffRecordOut.class);
         List<ProjectStaffRecordOut> list = util.importExcel(file.getInputStream());
         String operName = getUsername();
-        String message = projectStaffRecordService.importProject(list, isUpdateSupport, operName);
+        String message = projectStaffRecordService.importProject(list, updateSupport, operName);
         return success(message);
     }
 

+ 11 - 10
ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysUserController.java

@@ -130,18 +130,19 @@ public class SysUserController extends BaseController
         {
             return error("新增用户'" + user.getUserName() + "'失败,登录账号已存在");
         }
-        else if (StringUtils.isNotEmpty(user.getPhonenumber()) && !userService.checkPhoneUnique(user))
-        {
-            return error("新增用户'" + user.getUserName() + "'失败,手机号码已存在");
-        }
-        else if (StringUtils.isNotEmpty(user.getEmail()) && !userService.checkEmailUnique(user))
+        else if ( userService.checkJobNumber(user))
         {
-            return error("新增用户'" + user.getUserName() + "'失败,邮箱账号已存在");
-        }
-        else if (userService.checkJobNumber(user))
-        {
-            return error("新增用户'" + user.getUserName() + "'失败,工号已存在");
+            return error("新增用户'" + user.getJobNumber() + "'失败,工号已存在");
         }
+//        else if (StringUtils.isNotEmpty(user.getPhonenumber()) && !userService.checkPhoneUnique(user))
+//        {
+//            return error("新增用户'" + user.getUserName() + "'失败,手机号码已存在");
+//        }
+//        else if (StringUtils.isNotEmpty(user.getEmail()) && !userService.checkEmailUnique(user))
+//        {
+//            return error("新增用户'" + user.getUserName() + "'失败,邮箱账号已存在");
+//        }
+
         user.setCreateBy(getUsername());
         user.setPassword(SecurityUtils.encryptPassword(user.getPassword()));
         return toAjax(userService.insertUser(user));

+ 3 - 2
ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysUser.java

@@ -240,6 +240,7 @@ public class SysUser extends BaseEntity
         this.projectQuantity = projectQuantity;
     }
 
+    @NotNull(message="员工工号必须存在")
     public String getJobNumber() {
         return jobNumber;
     }
@@ -316,8 +317,8 @@ public class SysUser extends BaseEntity
         this.userName = userName;
     }
 
-    @Email(message = "邮箱格式不正确")
-    @Size(min = 0, max = 50, message = "邮箱长度不能超过50个字符")
+//    @Email(message = "邮箱格式不正确")
+//    @Size(min = 0, max = 50, message = "邮箱长度不能超过50个字符")
     public String getEmail()
     {
         return email;

+ 3 - 3
ruoyi-system/src/main/java/com/ruoyi/project/bo/ProjectStaffRecordOut.java

@@ -27,7 +27,7 @@ public class ProjectStaffRecordOut extends ProjectStaffRecord {
     @JsonFormat(pattern = "MM")
     private Date createMonth;
     @Excel(name = "项目编号")
-    private Long  projectNumber;
+    private String  projectNumber;
     private Long pid;
     @Excel(name = "项目名称")
     private String projectName;
@@ -59,11 +59,11 @@ public class ProjectStaffRecordOut extends ProjectStaffRecord {
         this.recordTime = recordTime;
     }
 
-    public Long getProjectNumber() {
+    public String getProjectNumber() {
         return projectNumber;
     }
 
-    public void setProjectNumber(Long projectNumber) {
+    public void setProjectNumber(String projectNumber) {
         this.projectNumber = projectNumber;
     }
 

+ 2 - 0
ruoyi-system/src/main/java/com/ruoyi/project/domain/ProjectTask.java

@@ -2,6 +2,7 @@ package com.ruoyi.project.domain;
 
 import com.fasterxml.jackson.annotation.JsonFormat;
 
+import javax.validation.constraints.NotNull;
 import java.io.Serializable;
 import java.util.Date;
 
@@ -164,6 +165,7 @@ public class ProjectTask implements Serializable {
         this.staffName = staffName;
     }
 
+    @NotNull(message = "项目编号必须存在")
     public String getProjectNumber() {
         return projectNumber;
     }

+ 4 - 0
ruoyi-system/src/main/java/com/ruoyi/project/mapper/ProjectTaskMapper.java

@@ -28,4 +28,8 @@ public interface ProjectTaskMapper {
     void projectAddDuration(@Param("pid") Long pid, @Param("duration") Double duration);
 
     List<ProjectStaffRecord> selectProjectImg(Long pid);
+
+    void updateDuration(Long pid);
+
+    ProjectTask selectByProjectNumber(String projectNumber);
 }

+ 1 - 1
ruoyi-system/src/main/java/com/ruoyi/project/service/ProjectStaffRecordService.java

@@ -16,7 +16,7 @@ public interface ProjectStaffRecordService {
 
     List<ProjectStaffRecordOut> listRecord(ProjectStaffRecordInput in);
 
-    String importProject(List<ProjectStaffRecordOut> list, boolean isUpdateSupport, String operName);
+    String importProject(List<ProjectStaffRecordOut> list, boolean updateSupport, String operName);
 
     AjaxResult myDuration(Long id,String recordTime);
 

+ 2 - 0
ruoyi-system/src/main/java/com/ruoyi/project/service/ProjectTaskService.java

@@ -21,4 +21,6 @@ public interface ProjectTaskService {
     AjaxResult updateProjectTask(ProjectTask projectTask);
 
     AjaxResult selectProjectImg(Long pid);
+
+    boolean checkProjectNumber(ProjectTask projectTask);
 }

+ 36 - 4
ruoyi-system/src/main/java/com/ruoyi/project/service/impl/ProjectStaffRecordServiceImpl.java

@@ -16,6 +16,7 @@ import com.ruoyi.project.bo.ProjectStaffRecordInput;
 import com.ruoyi.project.bo.ProjectStaffRecordOut;
 import com.ruoyi.project.domain.ProjectStaffRecord;
 import com.ruoyi.project.domain.ProjectStaffRecordLog;
+import com.ruoyi.project.domain.ProjectTask;
 import com.ruoyi.project.mapper.ProjectStaffRecordLogMapper;
 import com.ruoyi.project.mapper.ProjectStaffRecordMapper;
 import com.ruoyi.project.mapper.ProjectTaskMapper;
@@ -338,7 +339,7 @@ public class ProjectStaffRecordServiceImpl implements ProjectStaffRecordService
     }
 
     @Override
-    public String importProject(List<ProjectStaffRecordOut> list, boolean isUpdateSupport, String operName) {
+    public String importProject(List<ProjectStaffRecordOut> list, boolean updateSupport, String operName) {
         if (StringUtils.isNull(list) || list.size() == 0)
         {
             throw new ServiceException("导入用户数据不能为空!");
@@ -355,11 +356,41 @@ public class ProjectStaffRecordServiceImpl implements ProjectStaffRecordService
                 ProjectStaffRecord projectStaffRecord = projectStaffRecordMapper.selectByPrimaryKey(p.getId());
                 if (StringUtils.isNull(projectStaffRecord)){
                     BeanValidators.validateWithException(validator, projectStaffRecord);
+                    if (StringUtils.isNotBlank(p.getAdminName())){
+                        SysUser sysUser = sysUserMapper.checkJobNumber(p.getJobNumber());
+                        if (StringUtils.isNull(sysUser)){
+                            throw new ServiceException(String.format("用户[%s]不存在",p.getAdminName()));
+                        }
+                        p.setAid(sysUser.getUserId());
+                    }else {
+                        throw new ServiceException(String.format("新增必须知道打卡人"));
+                    }
+                    if (StringUtils.isBlank(p.getProjectNumber())){
+                        ProjectTask projectTask = projectTaskMapper.selectByProjectNumber(p.getProjectNumber());
+                        if (StringUtils.isNull(projectTask)){
+                            throw new ServiceException(String.format("项目[%s]不存在",p.getProjectName()));
+                        }
+                    }else {
+                        throw new ServiceException(String.format("新增必须知道打卡项目"));
+                    }
                     projectStaffRecordMapper.insertSelective(p);
                     successNum++;
                     successMsg.append("<br/>" + successNum + "、项目: " + p.getName() + " 导入成功");
-                }else if (isUpdateSupport){
+                }else if (updateSupport){
                     BeanValidators.validateWithException(validator, p);
+
+                    if (p.getDuration()!=projectStaffRecord.getDuration()){
+                        String recordTimes = DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD, p.getRecordTime());
+                        BigDecimal maxDuration= new BigDecimal(SecurityUtils.getLoginUser().getUser().getDept().getMaxDuration());
+                        Double myDuration = getMyDuration(projectStaffRecord.getPid(), projectStaffRecord.getAid(), recordTimes);
+                        myDuration-=projectStaffRecord.getDuration();
+                        myDuration+=p.getDuration();
+                        if (maxDuration.compareTo(new BigDecimal(myDuration))<0){
+                            throw new ServiceException(String.format("工时超出最大打卡,最大[%s]当前[%s]",maxDuration,myDuration));
+                        }
+                        projectTaskMapper.updateDuration(projectStaffRecord.getPid());
+                        sysUserMapper.updateDuration(projectStaffRecord.getAid());
+                    }
                     projectStaffRecordMapper.updateByPrimaryKeySelective(p);
                     successNum++;
                     successMsg.append("<br/>" + successNum + "、项目: " + p.getName() + " 更新成功");
@@ -424,9 +455,10 @@ public class ProjectStaffRecordServiceImpl implements ProjectStaffRecordService
         List<ProjectStaffRecord> projectStaffRecords = projectStaffRecordMapper.selectByPidAndAid(pid,aid);
         for (ProjectStaffRecord e : projectStaffRecords) {
             String eDate= DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD, e.getRecordTime());
-            if (recordTime.equals(eDate)){
-                myDuration+=e.getDuration();
+                if (recordTime.equals(eDate)){
+                    myDuration+=e.getDuration();
             }
+
         }
         return myDuration;
     }

+ 15 - 0
ruoyi-system/src/main/java/com/ruoyi/project/service/impl/ProjectTaskServiceImpl.java

@@ -227,6 +227,21 @@ public class ProjectTaskServiceImpl   implements ProjectTaskService {
         return AjaxResult.success(projectTaskMapper.selectProjectImg(pid));
     }
 
+    @Override
+    public boolean checkProjectNumber(ProjectTask projectTask) {
+        ProjectTask projectTask1 = projectTaskMapper.selectByProjectNumber(projectTask.getProjectNumber());
+        if (projectTask.getId()==null){
+            if (projectTask1!=null){
+                return true;
+            }
+        }else {
+            if (projectTask1!=null&&projectTask.getId().equals(projectTask1.getId())){
+                return true;
+            }
+        }
+        return false;
+    }
+
     private void addStaffAndDelete(  ProjectTaskListOut p) {
         String[] split = p.getStaffName().split(",");
         List<ProjectStaff> projectStaffs = projectStaffMapper.selectByPid(p.getId());

+ 2 - 0
ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserMapper.java

@@ -138,4 +138,6 @@ public interface SysUserMapper
     SysUser checkJobNumber(String jobNumber);
 
     SysUser selectByNikeName(String nikeName);
+
+    void updateDuration(Long aid);
 }

+ 12 - 0
ruoyi-system/src/main/resources/mapper/project/ProjectTaskMapper.xml

@@ -206,6 +206,13 @@
         where pid = #{pid} group by  pid) b on a.id=b.pid set a.staff_name =b.name
     where a.id = #{pid}
   </update>
+  <update id="updateDuration">
+    update project_task
+    set duration=(select sum(a.duration)
+                  from project_staff_record a
+                  where a.pid= #{pid})
+    where id = #{pid}
+  </update>
 
 
   <resultMap id="BaseResultOutMap" type="com.ruoyi.project.bo.ProjectTaskListOut">
@@ -277,4 +284,9 @@
     from project_staff_record a
     where a.pid=#{pid}
   </select>
+  <select id="selectByProjectNumber" resultMap="BaseResultMap">
+    select
+    <include refid="Base_Column_List" />
+    FROM project_task where project_number= #{projectNumber}
+    </select>
 </mapper>

+ 7 - 0
ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml

@@ -340,4 +340,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 		</if>
 		where user_id = #{aid}
 	</update>
+    <update id="updateDuration">
+		update sys_user
+		set duration=(select sum(a.duration)
+					  from project_staff_record a
+					  where a.aid = #{aid})
+		where user_id = #{aid}
+	</update>
 </mapper>