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

增加项目商机管理新建从oa拉取数据

parent d514fced
......@@ -548,23 +548,18 @@ public class StringUtil {
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;
int j = chars.length;
while (i < chars.length && (chars[i] == ' ' || chars[i] == '\t')) {
i++;
}
while (i < j && (chars[j-1] == ' ' || chars[j-1] == '\t')) {
j--;
}
return str.substring(i, j);
}
}
......@@ -94,8 +94,16 @@ public enum BASE_RESP_CODE_ENUM {
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中未找到"),
CREATE_PROJECT_MANAGER_NOT_FOUND("680", "项目/商机负责人在工时系统中未找到")
NEW_PROJECT_OA_PROJECT_ID_OR_NAME_ERROR("679","新建项目/商机信息在OA中未找到"),
CREATE_PROJECT_MANAGER_NOT_FOUND("680", "项目/商机负责人在工时系统中未找到"),
PROJECT_OA_INFO_NOT_FIND("681", "项目对应的商机信息未在oa中找到"),
WORK_TIME_BUDGET_NOT_NULL("682", "工时预算不能为空"),
WORK_COST_BUDGET_NOT_NULL("683", "成本预算不能为空"),
PROJECT_USER_NOT_NULL("684", "项目/商机参与人员不能为空"),
PROJECT_BO_INFO_ERROR("685", "项目所对应商机信息与OA中项目所对应商机信息不一致"),
BO_INFO_NOT_FIND("686", "OA中的商机信息不存在"),
LONG_LEAVE_START_NOT__GREATER_END("687", "长请假/调休开始时间不能大于结束时间"),
PROJECT_OA_ID_IS_ERROR("688", "项目在OA中的编号错误")
;
......
......@@ -20,9 +20,11 @@ public interface WorkUserProjectMapper extends BaseMapper<WorkUserProject> {
List<UserProjectDto> getUserByProjectId(Integer projectId);
int deleteByProjectId(Integer projectId);
int deleteByProjectId(@Param("projectId") Integer projectId, @Param("userIds") List<Integer> userIds);
int insertBatch(@Param("userIds") List<Integer> userIds, @Param("projectId") Integer projectId);
List<Integer> selectUserIdByProjectIds(Map<String,Object> map);
List<Integer> getUserByProjectAndStatus(Integer projectId);
}
......@@ -20,4 +20,8 @@ public interface ProjectAndBoMapper {
OaProject getProjectByNameAndNo(Map<String, Object> map);
OaProject getBoByNameAndNo(Map<String, Object> map);
OaProject getProjectByNo(String projectNo);
OaProject getBoByNo(String businessId);
}
......@@ -61,39 +61,17 @@
UPDATE
<include refid="table"/>
<set>
<if test="null != startTime">
start_time = #{startTime},
</if>
<if test="null != endTime">
end_time = #{endTime},
</if>
<if test="null != workTime">
work_time = #{workTime},
</if>
<if test="null != costBudget">
cost_budget =#{costBudget},
</if>
<if test="null != managerId">
manager_id = #{managerId},
</if>
<if test="null != deptId">
dept_id = #{deptId},
</if>
<if test="null != businessId">
business_id = #{businessId},
</if>
<if test="null != businessName">
business_name = #{businessName},
</if>
<if test="null != oaProjectId">
oa_project_id = #{oaProjectId},
</if>
<if test="null != projectName">
project_name = #{projectName},
</if>
<if test="isModify !=null">
modify_time = now()
</if>
</set>
<where>
<if test="null != projectId">
......@@ -207,7 +185,7 @@
</if>
)
</if>
AND u.status = 1
</where>
......
......@@ -142,7 +142,7 @@
</if>
</where>
group by <if test="projectId != null and projectIds == null"> project_name,</if> <if test="projectId == null and projectIds != null"> project_name,dept_name,</if>year(statistics_start),MONTH(statistics_start)
order by convert(project_name using gbk)
order by statistics_start, convert(project_name using gbk)
</select>
<select id="selectListStatistics" resultMap="projectStatisticsByMonth">
......
......@@ -27,15 +27,21 @@
( #{userId}, #{projectId})
</foreach >
</insert>
<delete id="deleteByProjectId">
DELETE
FROM work_user_project
WHERE project_id = #{projectId}
<if test="userIds != null and userIds.size != 0">
AND user_id not in
<foreach collection="userIds" open="(" close=")" separator="," item="userId">#{userId}</foreach>
</if>
</delete>
<select id="getUserByProjectId" resultMap="MinUserMap" >
SELECT p.user_id,u.name,p.project_id
FROM work_user_project p JOIN work_user u ON p.user_id = u.id
WHERE project_id = #{projectId}
WHERE project_id = #{projectId} and u.status = 1
</select>
<select id="selectUserIdByProjectIds" resultType="java.lang.Integer">
......@@ -57,4 +63,10 @@
</where>
</select>
<select id="getUserByProjectAndStatus" resultType="java.lang.Integer">
select u.id
from work_user_project up join work_user u on u.id = up.user_id
where up.project_id = #{projectId} and u.status = 0
</select>
</mapper>
......@@ -25,6 +25,7 @@
<result property="cost" column="cost"/>
<result property="startDate" column="start_date"/>
<result property="endDate" column="end_date"/>
<result property="bo" column="bo_no"/>
</resultMap>
<sql id="values_project">
......@@ -37,7 +38,7 @@
</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
select p.project_no, p.project_name, p.pm_no, p.project_depart_no, p.cost, p.start_date, p.end_date, p.bo_no, b.bo_name
from v_project_base p left join v_bo_base b on p.bo_no = b.bo_no
<where>
<if test="oaDeptNo != null">
......@@ -92,17 +93,30 @@
<select id="getProjectByNameAndNo" resultMap="Project_Map">
select <include refid="values_project"/>
from v_project_base
where project_no = #{projectNo} AND TRIM(project_name) = #{projectName} AND pm_no = #{managerNo}
<if test="boNo != null ">
AND bo_no = #{boNo}
</if>
where project_no = #{projectNo} AND replace(replace(project_name,char(9),''),' ','') = replace(replace(#{projectName},char(9),''),' ','')
</select>
<select id="getBoByNameAndNo" resultMap="Bo_Map">
select bo_no AS project_no, bo_name AS project_name,pm_no,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 TRIM(bo_name) = #{projectName} AND pm_no = #{managerNo}
where bo_no = #{projectNo}
<if test="projectName != null">
AND replace(replace(bo_name,char(9),''),' ','') = replace(replace(#{projectName},char(9),''),' ','')
</if>
</select>
<select id="getProjectByNo" resultMap="Bo_Map">
select p.project_no, p.project_name, p.pm_no, p.project_depart_no, p.cost, p.start_date, p.end_date, p.bo_no
from v_project_base p
where project_no = #{projectNo}
</select>
<select id="getBoByNo" resultMap="Project_Map">
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}
</select>
</mapper>
\ No newline at end of file
......@@ -53,9 +53,11 @@ public class ManagerProjectsDto implements Serializable {
private String deptName;
@ApiModelProperty(name = "workTime",value = "工时预算")
@JsonFormat(shape = JsonFormat.Shape.STRING)
private BigDecimal workTime;
@ApiModelProperty(name = "costBudget",value = "成本预算,以万为单位")
@JsonFormat(shape = JsonFormat.Shape.STRING)
private BigDecimal costBudget;
@ApiModelProperty(name = "isConclusion",value = "是否结项 :0:项目已结束、1:项目未结束")
......
package cn.wisenergy.oaService;
import cn.wisenergy.model.vo.CreateProjectVo;
import cn.wisenergy.model.vo.ModifyProjectVo;
import cn.wisenergy.oaModel.OaProject;
import java.util.List;
......@@ -17,4 +18,6 @@ public interface OaProjectService {
OaProject getOaProjectByNoAndName(CreateProjectVo createProjectVo, String oaUserId);
OaProject getByNameAndNo(ModifyProjectVo modifyProjectVo);
}
package cn.wisenergy.oaService.impl;
import cn.wisenergy.common.utils.StringUtil;
import cn.wisenergy.common.utils.exception.BASE_RESP_CODE_ENUM;
import cn.wisenergy.common.utils.exception.BaseCustomException;
import cn.wisenergy.model.vo.CreateProjectVo;
import cn.wisenergy.model.vo.ModifyProjectVo;
import cn.wisenergy.oaMapper.ProjectAndBoMapper;
import cn.wisenergy.oaModel.OaProject;
import cn.wisenergy.oaService.OaProjectService;
......@@ -57,25 +59,80 @@ public class OaProjectServiceImpl implements OaProjectService {
@Override
public OaProject getOaProjectByNoAndName(CreateProjectVo createProjectVo, String managerNo) {
log.info("OaProjectServiceImpl[]getOaProjectByNoAndName[]input.param{}createProjectVo,managerNo =>" + createProjectVo + "," + managerNo);
if (StringUtils.isBlank(createProjectVo.getBusinessId()) && StringUtils.isNotBlank(createProjectVo.getBusinessName())) {
throw new BaseCustomException(BASE_RESP_CODE_ENUM.BO_INFO_NOT_FIND);
}
Map<String, Object> map = new HashMap<>();
// 项目/商机编号
map.put("projectNo", createProjectVo.getOaProjectId());
// 项目/商机名称
map.put("projectName", createProjectVo.getProjectName());
// 负责人编号
map.put("managerNo", managerNo);
// 项目对应的商机不为空
if (StringUtils.isNotBlank(createProjectVo.getBusinessId())) {
map.put("boNo", createProjectVo.getBusinessId());
}
OaProject oaProject;
// 项目
if (createProjectVo.getType() == 1) {
oaProject = projectAndBoMapper.getProjectByNameAndNo(map);
if (oaProject == null) {
return null;
}
if (createProjectVo.getBusinessId() != null) {
// 项目中的商机编号与oa中不一致
if (!createProjectVo.getBusinessId().equals(oaProject.getBo())) {
throw new BaseCustomException(BASE_RESP_CODE_ENUM.PROJECT_BO_INFO_ERROR);
}
// 清除查询条件,查询商机信息
map.clear();
map.put("projectNo", createProjectVo.getBusinessId());
oaProject = projectAndBoMapper.getBoByNameAndNo(map);
// 校验对应商机信息
checkBoInfo(oaProject, createProjectVo.getBusinessName());
}
}else { // 商机
oaProject = projectAndBoMapper.getBoByNameAndNo(map);
}
return oaProject;
}
@Override
public OaProject getByNameAndNo(ModifyProjectVo modifyProjectVo) {
log.info("OaProjectServiceImpl[]getByNameAndNo[]input.param{}modifyProjectVo");
if (StringUtils.isBlank(modifyProjectVo.getBusinessId())) {
throw new BaseCustomException(BASE_RESP_CODE_ENUM.PROJECT_BO_INFO_ERROR);
}
Map<String, Object> map = new HashMap<>();
map.put("projectNo", modifyProjectVo.getOaProjectId());
// 根据项目中的oa编号查询项目信息,是否商机编号一致
OaProject oaProject = projectAndBoMapper.getProjectByNo(modifyProjectVo.getOaProjectId());
if (oaProject == null) {
throw new BaseCustomException(BASE_RESP_CODE_ENUM.PROJECT_OA_ID_IS_ERROR);
}
if (StringUtils.isBlank(oaProject.getBo()) || !modifyProjectVo.getBusinessId().equals(oaProject.getBo())) {
throw new BaseCustomException(BASE_RESP_CODE_ENUM.PROJECT_BO_INFO_ERROR);
}
// 根据商机编号查询商机信息,为空则提示
OaProject oaProject1 = projectAndBoMapper.getBoByNo(modifyProjectVo.getBusinessId());
if (oaProject1 == null) {
throw new BaseCustomException(BASE_RESP_CODE_ENUM.BO_INFO_NOT_FIND);
}
// 修改的商机名称与OA中的商机名称不一致
if (StringUtils.isBlank(modifyProjectVo.getBusinessName()) || !StringUtil.replaceBlank(oaProject1.getName()).equals(modifyProjectVo.getBusinessName())) {
throw new BaseCustomException(BASE_RESP_CODE_ENUM.PROJECT_BO_INFO_ERROR);
}
return oaProject;
}
//校验对应商机信息
private void checkBoInfo(OaProject oaProject, String businessName) {
log.info("checkBoInfo[]input.param{}oaProject,businessName" + oaProject + "," + businessName);
if (oaProject == null) {
throw new BaseCustomException(BASE_RESP_CODE_ENUM.BO_INFO_NOT_FIND);
}
if (!StringUtil.replaceBlank(oaProject.getName()).equals(StringUtil.replaceBlank(businessName)) ){
throw new BaseCustomException(BASE_RESP_CODE_ENUM.PROJECT_BO_INFO_ERROR);
}
}
}
......@@ -736,28 +736,28 @@ public class StatisticsServiceImpl implements StatisticsService {
}
// date排序
if (projectId == null) {
List<ProjectStatisticsByMonth.StatisticsDateAndWorkTime> statisticsDateAndWorkTimes1 = projectStatisticsByMonths.get(0).getStatisticsDateAndWorkTimes();
for (int i = 0; i < statisticsDateAndWorkTimes1.size() - 1; i++) {
for (int j = 0; j < statisticsDateAndWorkTimes1.size() - 1; j++) {
ProjectStatisticsByMonth.StatisticsDateAndWorkTime statisticsDateAndWorkTime = statisticsDateAndWorkTimes1.get(j);
String substring = statisticsDateAndWorkTime.getDate().substring(5, 6);
Integer integer = Integer.valueOf(substring);
ProjectStatisticsByMonth.StatisticsDateAndWorkTime statisticsDateAndWorkTime1 = statisticsDateAndWorkTimes1.get(j + 1);
String substring1 = statisticsDateAndWorkTime1.getDate().substring(5, 6);
Integer integer1 = Integer.valueOf(substring1);
if (integer > integer1) {
ProjectStatisticsByMonth.StatisticsDateAndWorkTime statisticsDateAndWorkTime2 = statisticsDateAndWorkTime;
statisticsDateAndWorkTimes1.set(j, statisticsDateAndWorkTimes1.get(j + 1));
statisticsDateAndWorkTimes1.set(j + 1, statisticsDateAndWorkTime2);
}
}
}
projectStatisticsByMonths.get(0).setStatisticsDateAndWorkTimes(statisticsDateAndWorkTimes1);
}
// if (projectId == null) {
// List<ProjectStatisticsByMonth.StatisticsDateAndWorkTime> statisticsDateAndWorkTimes1 = projectStatisticsByMonths.get(0).getStatisticsDateAndWorkTimes();
// for (int i = 0; i < statisticsDateAndWorkTimes1.size() - 1; i++) {
// for (int j = 0; j < statisticsDateAndWorkTimes1.size() - 1; j++) {
// ProjectStatisticsByMonth.StatisticsDateAndWorkTime statisticsDateAndWorkTime = statisticsDateAndWorkTimes1.get(j);
// String substring = statisticsDateAndWorkTime.getDate().substring(5, 6);
// Integer integer = Integer.valueOf(substring);
//
// ProjectStatisticsByMonth.StatisticsDateAndWorkTime statisticsDateAndWorkTime1 = statisticsDateAndWorkTimes1.get(j + 1);
// String substring1 = statisticsDateAndWorkTime1.getDate().substring(5, 6);
// Integer integer1 = Integer.valueOf(substring1);
// if (integer > integer1) {
// ProjectStatisticsByMonth.StatisticsDateAndWorkTime statisticsDateAndWorkTime2 = statisticsDateAndWorkTime;
// statisticsDateAndWorkTimes1.set(j, statisticsDateAndWorkTimes1.get(j + 1));
// statisticsDateAndWorkTimes1.set(j + 1, statisticsDateAndWorkTime2);
// }
// }
//
//
// }
// projectStatisticsByMonths.get(0).setStatisticsDateAndWorkTimes(statisticsDateAndWorkTimes1);
// }
// 查询每个项目单独统计的集合
List<ProjectStatisticsByMonth> projectStatisticsByMonths1 = workProjectTimeCostMapper.selectListStatistics(map);
......
package cn.wisenergy.service.impl;
import cn.wisenergy.common.utils.DateUtil;
import cn.wisenergy.common.utils.StringUtil;
import cn.wisenergy.common.utils.exception.BASE_RESP_CODE_ENUM;
import cn.wisenergy.common.utils.exception.BaseCustomException;
import cn.wisenergy.mapper.*;
......@@ -28,10 +29,8 @@ import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.math.BigInteger;
import java.util.*;
import java.util.stream.Collectors;
/**
......@@ -79,6 +78,12 @@ public class WorkProjectServiceImpl implements WorkProjectService {
@Autowired
private WorkUserMapper workUserMapper;
// 项目编号
private static final Integer PROJECT_CODE = 1;
// 商机编号
private static final Integer BO_CODE = 2;
/**
* 功能:根据项目id获取项目
*
......@@ -224,7 +229,7 @@ public class WorkProjectServiceImpl implements WorkProjectService {
if (LevelRankEnum.PROJECT_LEVEL.getRank().equals(userRoleLevelDto.getRank())) {
projectIndex++;
}
if (LevelRankEnum.DEPARTMENT_LEVEL.getRank().equals(userRoleLevelDto.getRank()) || LevelRankEnum.CENTRAL_LEVEL.getRank().equals(userRoleLevelDto.getRank())) {
if (LevelRankEnum.DEPARTMENT_LEVEL.getRank().equals(userRoleLevelDto.getRank()) || LevelRankEnum.CENTRAL_LEVEL.getRank().equals(userRoleLevelDto.getRank()) || LevelRankEnum.SYSTEM_MANAGER.getRank().equals(userRoleLevelDto.getRank())) {
deptAndManager++;
}
if (LevelRankEnum.DEPARTMENT_LEVEL.getRank().equals(userRoleLevelDto.getRank())) {
......@@ -336,13 +341,25 @@ public class WorkProjectServiceImpl implements WorkProjectService {
if (modifyProjectVo.getOaProjectId().equals(workProject1.getOaProjectId())) {
throw new BaseCustomException(BASE_RESP_CODE_ENUM.ITEMOADUPLICATE);
}
if (modifyProjectVo.getProjectName().equals(workProject1.getProjectName())) {
throw new BaseCustomException(BASE_RESP_CODE_ENUM.DUPLICATEPROJECTNAME);
}
// 判断对应商机名称和编号是否在oa中存在
if (StringUtils.isNotBlank(modifyProjectVo.getBusinessId()) || StringUtils.isNotBlank(modifyProjectVo.getBusinessName())) {
OaProject oaProject = oaProjectService.getByNameAndNo(modifyProjectVo);
if (oaProject == null) {
throw new BaseCustomException(BASE_RESP_CODE_ENUM.PROJECT_OA_INFO_NOT_FIND);
}
}
// 项目对应商机名称不为空,去掉前后空格和制表符
if (StringUtils.isNotBlank(modifyProjectVo.getBusinessName())) {
modifyProjectVo.setBusinessName(StringUtil.replaceBlank(modifyProjectVo.getBusinessName()));
}
// 验证项目
verificationItem(modifyProjectVo, workProject, userIds);
// verificationItem(modifyProjectVo, workProject, userIds);
// 2.更新表数据
......@@ -434,29 +451,39 @@ public class WorkProjectServiceImpl implements WorkProjectService {
workProjectChange.setProjectId(modifyProjectVo.getProjectId());
workProjectChange.setModifyTime(new Date());
workProjectChange.setChangeType(3);
if (workProject.getStartTime() != null) {
workProjectChange.setModifyBefore(DateUtil.convertDateToStr(workProject.getStartTime(), "yyyy-MM-dd"));
}
if (modifyProjectVo.getStartTime() != null) {
workProjectChange.setModifyAfter(DateUtil.convertDateToStr(modifyProjectVo.getStartTime(), "yyyy-MM-dd"));
}
workProjectChange.setReason(modifyProjectVo.getStartTimeReason());
workProjectChange.setOperationType(2);
workProjectChange.setReviserId(modifyProjectVo.getReviserId());
workProjectChanges.add(workProjectChange);
}
if (!StringUtils.isBlank(modifyProjectVo.getEndTimeReason())) {
WorkProjectChange workProjectChange = new WorkProjectChange();
workProjectChange.setProjectId(modifyProjectVo.getProjectId());
workProjectChange.setModifyTime(new Date());
workProjectChange.setChangeType(4);
if (workProject.getEndTime() != null) {
workProjectChange.setModifyBefore(DateUtil.convertDateToStr(workProject.getEndTime(), "yyyy-MM-dd"));
}
if (modifyProjectVo.getEndTime() != null) {
workProjectChange.setModifyAfter(DateUtil.convertDateToStr(modifyProjectVo.getEndTime(), "yyyy-MM-dd"));
}
workProjectChange.setReason(modifyProjectVo.getEndTimeReason());
workProjectChange.setOperationType(2);
workProjectChange.setReviserId(modifyProjectVo.getReviserId());
workProjectChanges.add(workProjectChange);
}
if (!StringUtils.isBlank(modifyProjectVo.getWorkTimeReason())) {
if (null == modifyProjectVo.getWorkTime()) {
if (workProject.getType().equals(PROJECT_CODE) && workProject.getType().equals(PROJECT_CODE) && null == modifyProjectVo.getWorkTime()) {
throw new BaseCustomException("666", "请填写工时预算");
}
WorkProjectChange workProjectChange = new WorkProjectChange();
workProjectChange.setProjectId(modifyProjectVo.getProjectId());
workProjectChange.setModifyTime(new Date());
......@@ -464,16 +491,19 @@ public class WorkProjectServiceImpl implements WorkProjectService {
if (null != workProject.getWorkTime()) {
workProjectChange.setModifyBefore(workProject.getWorkTime().toString());
}
if (modifyProjectVo.getWorkTime() != null) {
workProjectChange.setModifyAfter(modifyProjectVo.getWorkTime().setScale(2, BigDecimal.ROUND_HALF_UP).toString());
}
workProjectChange.setReason(modifyProjectVo.getWorkTimeReason());
workProjectChange.setOperationType(2);
workProjectChange.setReviserId(modifyProjectVo.getReviserId());
workProjectChanges.add(workProjectChange);
}
if (!StringUtils.isBlank(modifyProjectVo.getCostBudgetReason())) {
if (null == modifyProjectVo.getCostBudget()) {
if (workProject.getType().equals(PROJECT_CODE) && null == modifyProjectVo.getCostBudget()) {
throw new BaseCustomException("666", "请填写成本预算");
}
WorkProjectChange workProjectChange = new WorkProjectChange();
workProjectChange.setProjectId(modifyProjectVo.getProjectId());
workProjectChange.setModifyTime(new Date());
......@@ -481,7 +511,9 @@ public class WorkProjectServiceImpl implements WorkProjectService {
if (null != workProject.getCostBudget()) {
workProjectChange.setModifyBefore(workProject.getCostBudget().toString());
}
if (modifyProjectVo.getCostBudget() != null) {
workProjectChange.setModifyAfter(modifyProjectVo.getCostBudget().setScale(2, BigDecimal.ROUND_HALF_UP).toString());
}
workProjectChange.setReason(modifyProjectVo.getCostBudgetReason());
workProjectChange.setOperationType(2);
workProjectChange.setReviserId(modifyProjectVo.getReviserId());
......@@ -490,7 +522,7 @@ public class WorkProjectServiceImpl implements WorkProjectService {
if (!StringUtils.isBlank(modifyProjectVo.getUserIdsReason())) {
if (!(userIds.containsAll(modifyProjectVo.getUserIds()) &&
modifyProjectVo.getUserIds().containsAll(userIds))) {
HashMap<String, Object> map = new HashMap<>();
Map<String, Object> map = new HashMap<>();
map.put("status", 1);
List<WorkUser> byMap = workUserService.getByMap(map);
StringBuilder before = new StringBuilder();
......@@ -513,7 +545,6 @@ public class WorkProjectServiceImpl implements WorkProjectService {
}
}
}
}
userModifyBefore = before.length() > 0 ? before.deleteCharAt(before.length() - 1).toString() : "";
userModifyAfter = after.length() > 0 ? after.deleteCharAt(after.length() - 1).toString() : "";
......@@ -562,14 +593,27 @@ public class WorkProjectServiceImpl implements WorkProjectService {
if (null == createProjectVo) {
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() ||
if (null == createProjectVo.getManagerId()) {
throw new BaseCustomException(BASE_RESP_CODE_ENUM.CREATE_PROJECT_MANAGER_NOT_FOUND);
}
// 新增项目的校验
if (createProjectVo.getType().equals(PROJECT_CODE)) {
if ( 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() || CollectionUtils.isEmpty(createProjectVo.getUserIds())) {
throw new BaseCustomException(BASE_RESP_CODE_ENUM.INPUT_PARAM_IS_NULL);
}
if (createProjectVo.getStartTime().compareTo(createProjectVo.getEndTime()) > 0) {
}else{ // 新增商机的校验,工时预算,成本预算,开始时间和结束时间可以为空
if ( StringUtils.isBlank(createProjectVo.getOaProjectId()) || 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() != null && createProjectVo.getEndTime() != null && createProjectVo.getStartTime().compareTo(createProjectVo.getEndTime()) > 0) {
throw new BaseCustomException(BASE_RESP_CODE_ENUM.START_NOT_THAN_END_DATE);
}
if (BigDecimal.ZERO.compareTo(createProjectVo.getWorkTime()) > 0 || BigDecimal.ZERO.compareTo(createProjectVo.getCostBudget()) > 0) {
if ((createProjectVo.getWorkTime() != null && BigDecimal.ZERO.compareTo(createProjectVo.getWorkTime()) > 0) || (createProjectVo.getCostBudget() != null && BigDecimal.ZERO.compareTo(createProjectVo.getCostBudget()) > 0)) {
throw new BaseCustomException(BASE_RESP_CODE_ENUM.BUDGET_CANNOT_BELESSTHAN_ZERO);
}
......@@ -591,14 +635,19 @@ public class WorkProjectServiceImpl implements WorkProjectService {
throw new BaseCustomException(BASE_RESP_CODE_ENUM.CREATE_PROJECT_MANAGER_NOT_FOUND);
}
// 对项目名称做去空格
createProjectVo.setProjectName(createProjectVo.getProjectName().trim());
// 在oa数据库中查找对应信息
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);
}
// 对项目名称做去前后空格
createProjectVo.setProjectName(StringUtil.replaceBlank(createProjectVo.getProjectName()));
// 对对应商机名称去前后空格
if (StringUtils.isNotBlank(createProjectVo.getBusinessName())) {
StringUtil.replaceBlank(createProjectVo.getBusinessName());
}
// 插入项目信息
Date date = new Date();
WorkProject workProject = new WorkProject();
......@@ -872,7 +921,9 @@ public class WorkProjectServiceImpl implements WorkProjectService {
return pageInfo;
}
/**
*
* 判断更变内容是否等于原内容
*/
private void verificationItem(ModifyProjectVo modifyProjectVo, WorkProject workProject, List<Integer> userIds) {
......@@ -886,49 +937,43 @@ public class WorkProjectServiceImpl implements WorkProjectService {
}
}
// 开始时间不能大于结束时间
if (modifyProjectVo.getStartTime() != null && modifyProjectVo != null && modifyProjectVo.getStartTime().compareTo(modifyProjectVo.getEndTime()) != -1)
// 校验开始时间
if (null != modifyProjectVo.getStartTime()) {
if (modifyProjectVo.getStartTime() != null && workProject.getStartTime() != null && !modifyProjectVo.getStartTime().equals(workProject.getStartTime()) || (modifyProjectVo.getStartTime() != null && workProject.getStartTime() == null)
|| (modifyProjectVo.getStartTime() == null && workProject.getStartTime() != null)) {
modifyCount++;
if (StringUtils.isBlank(modifyProjectVo.getStartTimeReason())) {
throw new BaseCustomException(BASE_RESP_CODE_ENUM.REASON_CANNOT_BE_EMPTY);
}
if (null == modifyProjectVo.getEndTime()) {
if (modifyProjectVo.getStartTime().compareTo(workProject.getEndTime()) > 0) {
throw new BaseCustomException(BASE_RESP_CODE_ENUM.START_NOT_THAN_END_DATE);
}
} else {
if (modifyProjectVo.getStartTime().compareTo(modifyProjectVo.getEndTime()) > 0) {
throw new BaseCustomException(BASE_RESP_CODE_ENUM.START_NOT_THAN_END_DATE);
}
}
if (workProject.getStartTime().compareTo(modifyProjectVo.getStartTime()) == 0) {
throw new BaseCustomException(BASE_RESP_CODE_ENUM.theNewContent_IsEqual_ToTheOriginal_Content);
}
// if (null == modifyProjectVo.getEndTime()) {
// if (workProject.getEndTime() != null && modifyProjectVo.getStartTime().compareTo(workProject.getEndTime()) > 0) {
// throw new BaseCustomException(BASE_RESP_CODE_ENUM.START_NOT_THAN_END_DATE);
// }
// } else {
// if (modifyProjectVo.getStartTime().compareTo(modifyProjectVo.getEndTime()) > 0) {
// throw new BaseCustomException(BASE_RESP_CODE_ENUM.START_NOT_THAN_END_DATE);
// }
// }
// if (workProject.getStartTime() != null && workProject.getStartTime().compareTo(modifyProjectVo.getStartTime()) == 0) {
// throw new BaseCustomException(BASE_RESP_CODE_ENUM.theNewContent_IsEqual_ToTheOriginal_Content);
// }
}
// 校验结束时间
if (null != modifyProjectVo.getEndTime()) {
if (modifyProjectVo.getEndTime() != null && workProject.getEndTime() != null && !modifyProjectVo.getEndTime().equals(workProject.getEndTime()) || (modifyProjectVo.getEndTime() != null && workProject.getEndTime() == null)
|| (modifyProjectVo.getEndTime() == null && workProject.getEndTime() != null)) {
modifyCount++;
if (StringUtils.isBlank(modifyProjectVo.getEndTimeReason())) {
throw new BaseCustomException(BASE_RESP_CODE_ENUM.REASON_CANNOT_BE_EMPTY);
}
if (null != modifyProjectVo.getStartTime()) {
if (modifyProjectVo.getStartTime().compareTo(modifyProjectVo.getEndTime()) > 0) {
throw new BaseCustomException(BASE_RESP_CODE_ENUM.START_NOT_THAN_END_DATE);
}
} else {
if (workProject.getStartTime().compareTo(modifyProjectVo.getEndTime()) > 0) {
throw new BaseCustomException(BASE_RESP_CODE_ENUM.START_NOT_THAN_END_DATE);
}
}
if (workProject.getEndTime().compareTo(modifyProjectVo.getEndTime()) == 0) {
throw new BaseCustomException(BASE_RESP_CODE_ENUM.theNewContent_IsEqual_ToTheOriginal_Content);
}
}
// 校验成本预算
if (null != modifyProjectVo.getCostBudget()) {
if (modifyProjectVo.getCostBudget() != null && !modifyProjectVo.getCostBudget().equals(workProject.getCostBudget()) ) {
modifyCount++;
if (BigDecimal.ZERO.compareTo(modifyProjectVo.getCostBudget()) > 0) {
throw new BaseCustomException(BASE_RESP_CODE_ENUM.BUDGET_CANNOT_BELESSTHAN_ZERO);
......@@ -936,11 +981,18 @@ public class WorkProjectServiceImpl implements WorkProjectService {
if (StringUtils.isBlank(modifyProjectVo.getCostBudgetReason())) {
throw new BaseCustomException(BASE_RESP_CODE_ENUM.REASON_CANNOT_BE_EMPTY);
}
if (null != workProject.getCostBudget()) {
if (modifyProjectVo.getCostBudget() == null ) {
if (modifyProjectVo.getCostBudget().compareTo(workProject.getCostBudget()) == 0) {
throw new BaseCustomException(BASE_RESP_CODE_ENUM.theNewContent_IsEqual_ToTheOriginal_Content);
}
}
} else if (modifyProjectVo.getCostBudget() == null) {
modifyProjectVo.setCostBudget(new BigDecimal(BigInteger.ZERO));
}
// 项目成本预算不能为空
if (workProject.getType() == 1 &&StringUtils.isBlank(modifyProjectVo.getCostBudgetReason()) && workProject.getCostBudget() == null){
throw new BaseCustomException(BASE_RESP_CODE_ENUM.WORK_COST_BUDGET_NOT_NULL);
}
// oa编号验证
......@@ -978,7 +1030,10 @@ public class WorkProjectServiceImpl implements WorkProjectService {
}
}
}
// 项目工时预算不能为空
if (workProject.getType() == 1 && StringUtils.isBlank(modifyProjectVo.getWorkTimeReason()) && workProject.getWorkTime() == null){
throw new BaseCustomException(BASE_RESP_CODE_ENUM.WORK_TIME_BUDGET_NOT_NULL);
}
// 校验负责人
if (!workProject.getManagerId().equals(modifyProjectVo.getManagerId())) {
......@@ -1005,6 +1060,9 @@ public class WorkProjectServiceImpl implements WorkProjectService {
throw new BaseCustomException(BASE_RESP_CODE_ENUM.REASON_CANNOT_BE_EMPTY);
}
}
if (CollectionUtils.isEmpty(modifyProjectVo.getUserIds()) && StringUtils.isNotBlank(modifyProjectVo.getUserIdsReason())) {
throw new BaseCustomException(BASE_RESP_CODE_ENUM.PROJECT_USER_NOT_NULL);
}
// 是否存在变更项
if ((modifyCount == 1 && StringUtils.isBlank(modifyProjectVo.getUserIdsReason())) ||
modifyCount > 1) {
......
......@@ -1297,6 +1297,7 @@ public class WorkTimeOrderServiceImpl implements WorkTimeOrderService {
throw new BaseCustomException(BASE_RESP_CODE_ENUM.INPUT_PARAM_IS_NULL);
}
// 开始日期和结束日期是否在可填报时间段
WorkSubmitAdopt submitAdopt = workSubmitAdoptService.getById(1);
// 限制填报天数
......@@ -1304,6 +1305,12 @@ public class WorkTimeOrderServiceImpl implements WorkTimeOrderService {
// 开始结束日期转为date
Date start = DateUtil.convertStrToDate(startDate, "yyyy-MM-dd");
Date end = DateUtil.convertStrToDate(endDate, "yyyy-MM-dd");
// 开始时间不能大于结束时间
if (start.compareTo(end) == 1) {
throw new BaseCustomException(BASE_RESP_CODE_ENUM.LONG_LEAVE_START_NOT__GREATER_END);
}
// 当前日期
Date today = DateUtil.getStartOfDay(new Date());
......
......@@ -93,7 +93,10 @@ public class WorkUserProjectServiceImpl implements WorkUserProjectService {
if (null == projectId) {
throw new BaseCustomException(BASE_RESP_CODE_ENUM.INPUT_PARAM_IS_NULL);
}
int i = workUserProjectMapper.deleteByProjectId(projectId);
// 项目中离职员工
List<Integer> userIds = workUserProjectMapper.getUserByProjectAndStatus(projectId);
// 不删除离职员工
int i = workUserProjectMapper.deleteByProjectId(projectId, userIds);
return i != 0;
}
......
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