package com.service.impl;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import com.dao.CommentDao;
import com.dao.LogDao;
import com.dao.TransactionDao;
import com.dao.UserDao;
import com.dao.UserTransferDao;
import com.model.Comment;
import com.model.Log;
import com.model.Transaction;
import com.model.TransactionState;
import com.model.User;
import com.model.UserTransfer;
import com.service.BusinessException;
import com.service.TransactionService;
import com.ui.table.State;
import com.util.ViewUtil;
public class TransactionServiceImpl implements TransactionService {
private TransactionDao transactionDao;
private UserDao userDao;
private CommentDao commentDao;
private UserTransferDao userTransferDao;
private LogDao logDao;
public TransactionServiceImpl(TransactionDao transactionDao, UserDao userDao,
CommentDao commentDao, UserTransferDao userTransferDao, LogDao logDao) {
this.transactionDao = transactionDao;
this.userDao = userDao;
this.commentDao = commentDao;
this.userTransferDao = userTransferDao;
this.logDao = logDao;
}
public List<Transaction> getHandlerTransaction(User user, String state) {
//如果状态参数是transfer(转发的任务), 则查找我转发的任务
if (state.equals(State.TRANSFER)) {
List<Transaction> datas = new ArrayList<Transaction>();
//查找转发记录
List<UserTransfer> transfers = this.userTransferDao.find(user.getID());
for (UserTransfer ut : transfers) {
Transaction t = this.transactionDao.find(ut.getTS_ID());
datas.add(t);
}
datas = removeRepeat(datas);
return setUnion(datas);
}
//其他状态则直接根据状态去数据库查询
List<Transaction> datas = this.transactionDao.findHandlerTransactions(state,
user.getID());
return setUnion(datas);
}
/**
* 去掉重复的任务(查询转发任务时使用)
* @param datas
* @return
*/
private List<Transaction> removeRepeat(List<Transaction> datas) {
Map<String, Transaction> map = new HashMap<String, Transaction>();
for (Transaction t : datas) {
map.put(t.getID(), t);
}
List<Transaction> result = new ArrayList<Transaction>();
for (String id : map.keySet()) {
result.add(map.get(id));
}
return result;
}
/**
* 设置关联属性
* @param datas
* @return
*/
private List<Transaction> setUnion(List<Transaction> datas) {
for (Transaction t : datas) {
setUser(t);
}
return datas;
}
/**
* 设置参数任务的用户关联对象
* @param t
*/
private void setUser(Transaction t) {
User handler = this.userDao.find(t.getHANDLER_ID());
User initiator = this.userDao.find(t.getINITIATOR_ID());
User preHandler = this.userDao.find(t.getPRE_HANDLER_ID());
t.setHandler(handler);
t.setInitiator(initiator);
t.setPreHandler(preHandler);
}
/*
* 根据任务发起人和状态查找该用户所有的任务
* @see org.crazyit.transaction.service.TransactionService#getInitiatorProcessing(org.crazyit.transaction.model.User)
*/
public List<Transaction> getInitiatorTransaction(User user, String state) {
List<Transaction> datas = this.transactionDao.findInitiatorTransactions(state,
user.getID());
return setUnion(datas);
}
public void save(Transaction t) {
this.transactionDao.save(t);
}
public void hurry(String id) {
//如果任务的状态为进行中或者暂时不做, 则可以催办
Transaction t = this.transactionDao.find(id);
if (t.getTS_STATE().equals(TransactionState.PROCESSING)
|| t.getTS_STATE().equals(TransactionState.FOR_A_WHILE)) {
this.transactionDao.hurry(id);
} else {
throw new BusinessException("任务非进行中, 不可以催办");
}
}
public void invalid(String id) {
//如果任务已经完成,则不可以置为无效
Transaction t = this.transactionDao.find(id);
if (t.getTS_STATE().equals(TransactionState.FINISHED)) {
throw new BusinessException("任务已经完成,不可以设置为无效");
} else {
this.transactionDao.invalid(id);
}
}
public void forAWhile(String id, String userId, Comment comment) {
Transaction t = this.transactionDao.find(id);
//只有自己的任务才可以置为暂时不做状态
if (!t.getHANDLER_ID().equals(userId)) {
throw new BusinessException("只能处理自己的任务");
}
//只有在进行中的任务才可以改变此状态
if (t.getTS_STATE().equals(TransactionState.PROCESSING)) {
this.transactionDao.forAWhile(id);
//保存评论
Integer commentId = this.commentDao.save(comment);
createLog(id, userId, String.valueOf(commentId), " 暂时不做");
} else {
throw new BusinessException("任务非进行中, 不可以置为暂时不做状态");
}
}
public void notToDo(String id, String userId, Comment comment) {
Transaction t = this.transactionDao.find(id);
//只有自己的任务才可以置为暂时不做状态
if (!t.getHANDLER_ID().equals(userId)) {
throw new BusinessException("只能处理自己的任务");
}
//只有在进行中的任务与暂时不做的任务才可以改变此状态
if (t.getTS_STATE().equals(TransactionState.PROCESSING)
|| t.getTS_STATE().equals(TransactionState.FOR_A_WHILE)) {
this.transactionDao.notToDo(id);
//保存评论
Integer commentId = this.commentDao.save(comment);
createLog(id, userId, String.valueOf(commentId), " 决定不做");
} else {
throw new BusinessException("不可以置为暂时不做状态");
}
}
public void finish(String id, String userId, Comment comment) {
Transaction t = this.transactionDao.find(id);
//只有自己的任务才可以置为完成状态
if (!t.getHANDLER_ID().equals(userId)) {
throw new BusinessException("只能处理自己的任务");
}
//只有在进行中的任务与暂时不做的任务才可以改变此状态
if (t.getTS_STATE().equals(TransactionState.PROCESSING)
|| t.getTS_STATE().equals(TransactionState.FOR_A_WHILE)) {
this.transactionDao.finish(id, ViewUtil.formatDate(new Date()));
//保存评论
Integer commentId = this.commentDao.save(comment);
createLog(id, userId, String.valueOf(commentId), "做完了");
} else {
throw new BusinessException("只有进行中或者暂时不做的任务才可以完成");
}
}
public void transfer(String targetUserId, String sourceUserId,
Comment comment) {
Transaction t = this.transactionDao.find(comment.getTRANSACTION_ID());
//只有自己的任务才可以转发
if (!t.getHANDLER_ID().equals(sourceUserId)) {
throw new BusinessException("只能处理自己的任务");
}
//只有在进行中的任务与暂时不做的任务才可以转发
if (t.getTS_STATE().equals(TransactionState.PROCESSING)
|| t.getTS_STATE().equals(TransactionState.FOR_A_WHILE)) {
UserTransfer ut = new UserTransfer();
ut.setTS_ID(comment.getTRANSACTION_ID());
ut.setUSER_ID(sourceUserId);
ut.setTARGET_USER_ID(targetUserId);
ut.setOPERATE_DATE(ViewUtil.formatDate(new Date()));
//新增转发记录
this.userTransferDao.save(ut);
//保存评论
Integer commentId = this.commentDao.save(comment);
//改变任务记录的当前处理人id与前一处理人id
this.transactionDao.changeHandler(targetUserId,
sourceUserId, comment.getTRANSACTION_ID());
User targetUser = this.userDao.find(targetUserId);
createLog(t.getID(), sourceUserId, String.valueOf(commentId), "转发给 " + targetUser.getREAL_NAME() + " ");
} else {
throw new BusinessException("只有进行中或者暂时不做的任务才可以转发");
}
}
public Transaction view(String id) {
Transaction t = this.transactionDao.find(id);
setUser(t);
List<Log> logs = this.logDao.find(id);
for (Log log : logs) {
Comment comment = this.commentDao.find(log.getCOMMENT_ID());
User user = this.userDao.find(log.getHANDLER_ID());
log.setComment(comment);
log.setHandler(user);
}
t.setLogs(logs);
return t;
}
/**
* 创建日志
* @param tsId
* @param handlerId
* @param commentId
* @param desc 描述
*/
private void createLog(String tsId, String handlerId, String commentId, String desc) {
Log log = new Log();
log.
没有合适的资源?快使用搜索试试~ 我知道了~
基于JAVA、mysql的任务管理系统

共187个文件
class:98个
java:65个
gif:16个


温馨提示
JAVA、mysql、任务管理系统、毕业设计
资源推荐
资源详情
资源评论



















收起资源包目录





































































































共 187 条
- 1
- 2
资源评论

- 疯狂的程序袁2018-03-19还行。谢谢分享。
- xguoliang2019-03-14谢谢分享。

这个其实也很简单
- 粉丝: 6
上传资源 快速赚钱
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- springboot-基于BS的社区物业管理系统(源码+sql脚本).zip
- tencentcloud-iot-sdk-embedded-c-master.zip
- 初学者指南:18um工艺下Bandgap带隙基准电压与参考电路设计及仿真技巧
- springboot-基于java的校园服务平台(源码+sql脚本).zip
- 电驱动车辆主动前轮转向(AFS)与主动后轮转向(ARS)的仿真搭建与LQR控制方法设计 仿真建模 终极版
- 一维CNN迁移学习在轴承故障诊断中的应用:基于PyTorch的域适应联合对齐实践
- linux-headers-6.14.0-24-6.14.0-24.24-all.deb
- GD32F470 RT-thread 4.1.1 修改带有dma接收的驱动
- linux-headers-6.14.0-24-generic-6.14.0-24.24-amd64.deb
- linux-image-6.14.0-24-generic-6.14.0-24.24-amd64.deb
- 同步旋转坐标系下无位置传感器永磁同步电机控制:三相电压重构技术及其MATLAB实现
- 4.19.191.ko
- 基于Matlab的计算机视觉单指针百分数表盘识别系统:霍夫变换与GUI设计
- ### 苏州华芯微电子股份有限公司射频产品介绍
- linux-modules-6.14.0-24-generic-6.14.0-24.24-amd64.deb
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈



安全验证
文档复制为VIP权益,开通VIP直接复制
