|
@@ -1,29 +1,18 @@
|
|
|
package org.springblade.control.service.impl;
|
|
|
|
|
|
-import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
-import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
|
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
+
|
|
|
import lombok.AllArgsConstructor;
|
|
|
-import org.springblade.common.utils.SnowFlakeUtil;
|
|
|
-import org.springblade.control.dto.ControlProjectInfoDTO;
|
|
|
-import org.springblade.control.entity.ControlContractInfo;
|
|
|
-import org.springblade.control.entity.ControlProjectInfo;
|
|
|
+import org.springblade.common.utils.CommonUtil;
|
|
|
import org.springblade.control.entity.DepartmentPlanLog;
|
|
|
-import org.springblade.control.entity.DictInfo;
|
|
|
import org.springblade.control.mapper.DepartmentPlanLogMapper;
|
|
|
-import org.springblade.control.mapper.ProjectInfoMapper;
|
|
|
-import org.springblade.control.service.IContractInfoService;
|
|
|
-import org.springblade.control.service.IDepartmentPlanLogService;
|
|
|
-import org.springblade.control.service.IProjectInfoService;
|
|
|
-import org.springblade.control.service.IProjectProcessService;
|
|
|
-import org.springblade.control.vo.ControlProjectInfoVO;
|
|
|
+import org.springblade.control.service.*;;
|
|
|
import org.springblade.core.log.exception.ServiceException;
|
|
|
import org.springblade.core.mp.base.BaseServiceImpl;
|
|
|
-import org.springblade.core.mp.support.Query;
|
|
|
-import org.springframework.beans.BeanUtils;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
-
|
|
|
+import java.math.BigDecimal;
|
|
|
+import java.time.LocalDate;
|
|
|
+import java.time.temporal.ChronoUnit;
|
|
|
import java.util.List;
|
|
|
|
|
|
/**
|
|
@@ -35,4 +24,120 @@ import java.util.List;
|
|
|
@AllArgsConstructor
|
|
|
public class DepartmentPlanLogImpl extends BaseServiceImpl<DepartmentPlanLogMapper, DepartmentPlanLog> implements IDepartmentPlanLogService {
|
|
|
|
|
|
+ private final IProjectCostBudgetService budgetService;
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 根据暂停时间获取实际工时
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public Integer getRealWorkDays(LocalDate date) {
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 暂停时获取计划信息
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public DepartmentPlanLog getPlanInPause(Long id) {
|
|
|
+ //获取计划最新的执行情况
|
|
|
+ DepartmentPlanLog log = baseMapper.getNewestPlanLog(id);
|
|
|
+ //设置中途暂停计划日期为今天
|
|
|
+ log.setPauseTime(LocalDate.now());
|
|
|
+ //计算暂停日期和,中途开启计划的开始日期,之前的工作天数,如果是第一次暂停,则中途开启为null,则计算计划实际开始日期
|
|
|
+ int days;
|
|
|
+ if (log.getOpenPlanStartTime() != null){
|
|
|
+ days = CommonUtil.getWorkDays(log.getOpenPlanStartTime(),log.getPauseTime());
|
|
|
+ }else {
|
|
|
+ days = CommonUtil.getWorkDays(log.getRealPlanStartTime(),log.getPauseTime());
|
|
|
+ }
|
|
|
+ //更新计划实际工作日期,如果是第一次暂停则默认为0+
|
|
|
+ if (log.getRealWorkDays() == null){
|
|
|
+ log.setRealWorkDays(new BigDecimal("0"));
|
|
|
+ }
|
|
|
+ log.setRealWorkDays(log.getRealWorkDays().add(new BigDecimal(days)));
|
|
|
+ return log;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 暂停保存
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ @Transactional
|
|
|
+ public void savePlanInPause(DepartmentPlanLog log) {
|
|
|
+ if (log.getPauseTime() == null){
|
|
|
+ throw new ServiceException("请输入暂停时间");
|
|
|
+ }
|
|
|
+ log.setId(null);
|
|
|
+ log.setSort(log.getSort()+1);
|
|
|
+ log.setStatus(0);
|
|
|
+ this.save(log);
|
|
|
+ budgetService.updateStatus(log.getPlanId(),3);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 开始时获取计划信息
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public DepartmentPlanLog getPlanInOpen(Long id) {
|
|
|
+ //获取计划最新的执行情况
|
|
|
+ DepartmentPlanLog log = baseMapper.getNewestPlanLog(id);
|
|
|
+ //先设置上一次开启计划工时,因为下面会修改
|
|
|
+ if (log.getOpenPlanStartEndDays() == null){
|
|
|
+ log.setLastOpenPlanStartEndDays(null);
|
|
|
+ }else{
|
|
|
+ log.setLastOpenPlanStartEndDays(log.getOpenPlanStartEndDays());
|
|
|
+ }
|
|
|
+ //设置中途暂停开始时间,则为上一次开始时间
|
|
|
+ if (log.getOpenPlanStartTime() != null){
|
|
|
+ log.setPausePlanStartTime(log.getOpenPlanStartTime());
|
|
|
+ }else {
|
|
|
+ log.setPausePlanStartTime(log.getRealPlanStartTime());
|
|
|
+ }
|
|
|
+ //设置中途暂停结束时间,则为暂停时间
|
|
|
+ log.setPausePlanEndTime(LocalDate.now());
|
|
|
+ //计算剩余工作量
|
|
|
+ BigDecimal days = log.getPlanDays().subtract(log.getRealWorkDays());
|
|
|
+ //如果剩余天数大于0,才设置默认值
|
|
|
+// if (days.intValue() > 0) {
|
|
|
+// //设置默认,开启计划开启时间为今天
|
|
|
+// log.setOpenPlanStartTime(LocalDate.now());
|
|
|
+// //设置默认,开启计划结束时间为剩下的工作量加上今天
|
|
|
+// log.setOpenPlanEndTime(LocalDate.now().plusDays(days.longValue()));
|
|
|
+// //设置中途开启的计划起止天数,默认值为剩余工作量
|
|
|
+// log.setOpenPlanStartEndDays(days);
|
|
|
+// }else {
|
|
|
+// log.setOpenPlanStartTime(null);
|
|
|
+// log.setOpenPlanEndTime(null);
|
|
|
+// log.setOpenPlanStartEndDays(null);
|
|
|
+// }
|
|
|
+ log.setOpenPlanStartTime(null);
|
|
|
+ log.setOpenPlanEndTime(null);
|
|
|
+ log.setOpenPlanStartEndDays(null);
|
|
|
+ return log;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void savePlanInOpen(DepartmentPlanLog log) {
|
|
|
+ if (log.getOpenPlanStartTime() == null || log.getOpenPlanEndTime() == null){
|
|
|
+ throw new ServiceException("请输入完整的起止时间");
|
|
|
+ }
|
|
|
+ log.setId(null);
|
|
|
+ log.setSort(log.getSort()+1);
|
|
|
+ log.setStatus(1);
|
|
|
+ this.save(log);
|
|
|
+ budgetService.updateStatus(log.getPlanId(),2);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 修改开启计划时间,目前只能修改停止时间
|
|
|
+ * @param log
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public DepartmentPlanLog updateOpenTime(DepartmentPlanLog log) {
|
|
|
+ //计算中途开启的工作日
|
|
|
+ int planDays = CommonUtil.getWorkDays(log.getOpenPlanStartTime(), log.getOpenPlanEndTime());
|
|
|
+ log.setOpenPlanStartEndDays(new BigDecimal(planDays));
|
|
|
+ return log;
|
|
|
+ }
|
|
|
}
|