package com.mvc.service.impl;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.mvc.dao.ProjectStageDao;
import com.mvc.entity.Contract;
import com.mvc.entity.ProjectStage;
import com.mvc.entity.User;
import com.mvc.repository.ContractRepository;
import com.mvc.repository.ProjectStageRepository;
import com.mvc.repository.UserRepository;
import com.mvc.service.ProjectStageService;
import net.sf.json.JSONObject;
/**
* 工期阶段业务层实现
*
* @author wangrui
* @date 2016-09-20
*/
@Service("projectStageServiceImpl")
public class ProjectStageServiceImpl implements ProjectStageService {
@Autowired
ProjectStageRepository projectStageRepository;
@Autowired
ProjectStageDao projectStageDao;
@Autowired
ContractRepository contractRepository;
@Autowired
UserRepository userRepository;
// 添加工期阶段
@Override
public Boolean addProjectStage(JSONObject jsonObject, Integer cont_id, User user) {
ProjectStage projectStage = new ProjectStage();
try {
DateFormat format = new SimpleDateFormat("yyyy-MM-dd");
long time = System.currentTimeMillis();
if (jsonObject.containsKey("prst_content")) {
projectStage.setPrst_content(jsonObject.getString("prst_content"));// 阶段内容
}
if (jsonObject.containsKey("prst_etime")) {
Date date = format.parse(jsonObject.getString("prst_etime"));// 阶段截止时间
projectStage.setPrst_etime(date);// 阶段截止时间
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
int days = 0;
if (jsonObject.containsKey("prst_wday")) {
days = Integer.parseInt(jsonObject.getString("prst_wday"));// 完工提醒天数
}
projectStage.setPrst_wday(days);// 添加完工提醒的天数
calendar.add(Calendar.DAY_OF_MONTH, -days);// 工作结束提醒时间=阶段截止时间-完工提醒天数
projectStage.setPrst_wtime(calendar.getTime());// 工作结束提醒时间
}
projectStage.setPrst_ctime(new Date(time));// 阶段录入时间
projectStage.setPrst_state(0);// 默认未完成
projectStage.setUser(user);
projectStage.setPrst_isdelete(0);// 默认未删除
Contract contract = contractRepository.selectContById(cont_id);// 所属合同
projectStage.setContract(contract);
if (contract.getManager() != null) {// 先判断是否有项目经理
User manager = userRepository.findById(contract.getManager().getUser_id());// 项目经理已经包含在合同里面
projectStage.setManager(manager);
}
} catch (ParseException e) {
e.printStackTrace();
}
// 写入数据库
ProjectStage result = projectStageRepository.saveAndFlush(projectStage);
if (result.getPrst_id() != null)
return true;
else
return false;
}
// 查询该合同的工期阶段
@Override
public List<ProjectStage> selectPrstByContId(Integer cont_id) {
return projectStageRepository.selectPrstByContId(cont_id);
}
// 根据ID查询工期阶段
@Override
public ProjectStage selectPrstById(Integer prst_id) {
return projectStageRepository.findOne(prst_id);
}
// 修改成完成工期
@Override
public Boolean updatePrstState(Integer prst_id) {
return projectStageDao.updatePrstState(prst_id);
}
// 删除工期
@Override
public Boolean deletePrstState(Integer prst_id) {
return projectStageDao.deletePrstState(prst_id);
}
// 修改工期阶段
@Override
public Boolean updatePrst(JSONObject jsonObject, Integer prst_id) {
ProjectStage projectStage = projectStageRepository.findOne(prst_id);
DateFormat format = new SimpleDateFormat("yyyy-MM-dd");
if (jsonObject != null) {
try {
if (jsonObject.containsKey("prst_content")) {
projectStage.setPrst_content(jsonObject.getString("prst_content"));// 工期阶段内容
}
Date date = null;
if (jsonObject.containsKey("prst_etime")) {
date = format.parse(jsonObject.getString("prst_etime"));// 阶段截止时间
projectStage.setPrst_etime(date);
} else {
date = projectStage.getPrst_etime();
}
if (jsonObject.containsKey("prst_wday")) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
int days = Integer.parseInt(jsonObject.getString("prst_wday"));// 完工提醒天数
projectStage.setPrst_wday(days);// 添加完工提醒的天数
calendar.add(Calendar.DAY_OF_MONTH, -days);// 工作结束提醒时间=阶段截止时间-完工提醒天数
projectStage.setPrst_wtime(calendar.getTime());// 工作结束提醒时间
}
} catch (Exception e) {
e.printStackTrace();
}
}
projectStage = projectStageRepository.saveAndFlush(projectStage);
if (projectStage.getPrst_id() != null)
return true;
else
return false;
}
}