16 changed files with 958 additions and 38 deletions
@ -0,0 +1,86 @@ |
|||||
|
package com.ccsens.ptccsens.api; |
||||
|
|
||||
|
import com.ccsens.cloudutil.annotation.MustLogin; |
||||
|
import com.ccsens.ptccsens.bean.dto.ProjectFinanceDto; |
||||
|
import com.ccsens.ptccsens.bean.vo.ProjectFinanceVo; |
||||
|
import com.ccsens.ptccsens.service.IProjectFinanceService; |
||||
|
import com.ccsens.util.JsonResponse; |
||||
|
import com.ccsens.util.bean.dto.QueryDto; |
||||
|
import com.github.pagehelper.Page; |
||||
|
import com.github.pagehelper.PageInfo; |
||||
|
import io.swagger.annotations.Api; |
||||
|
import io.swagger.annotations.ApiOperation; |
||||
|
import io.swagger.annotations.ApiParam; |
||||
|
import lombok.extern.slf4j.Slf4j; |
||||
|
import org.springframework.validation.annotation.Validated; |
||||
|
import org.springframework.web.bind.annotation.RequestBody; |
||||
|
import org.springframework.web.bind.annotation.RequestMapping; |
||||
|
import org.springframework.web.bind.annotation.RequestMethod; |
||||
|
import org.springframework.web.bind.annotation.RestController; |
||||
|
|
||||
|
import javax.annotation.Resource; |
||||
|
import java.util.List; |
||||
|
|
||||
|
/** |
||||
|
* @author AUSU |
||||
|
*/ |
||||
|
@Api(tags = "项目财务信息") |
||||
|
@RestController |
||||
|
@RequestMapping("/projectFinance") |
||||
|
@Slf4j |
||||
|
public class ProjectFinanceController { |
||||
|
|
||||
|
@Resource |
||||
|
private IProjectFinanceService projectFinanceService; |
||||
|
|
||||
|
@MustLogin |
||||
|
@ApiOperation(value = "查看项目下的所有任务对应的财务信息", notes = "") |
||||
|
@RequestMapping(value = "/queryProjectFinance", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"}) |
||||
|
public JsonResponse<ProjectFinanceVo.ProjectFinanceInfo> queryProjectFinance(@ApiParam @Validated @RequestBody QueryDto<ProjectFinanceDto.QueryProjectFinance> params) throws Exception{ |
||||
|
log.info("查看项目下的所有任务对应的财务信息开始{}",params); |
||||
|
ProjectFinanceVo.ProjectFinanceInfo projectFinance = projectFinanceService.queryProjectFinance(params.getParam(),params.getUserId()); |
||||
|
log.info("查看项目下的所有任务对应的财务信息结束:{}",projectFinance); |
||||
|
return JsonResponse.newInstance().ok(projectFinance); |
||||
|
} |
||||
|
|
||||
|
|
||||
|
@MustLogin |
||||
|
@ApiOperation(value = "修改任务或项目的预算和奖金信息", notes = "") |
||||
|
@RequestMapping(value = "/updateFinance", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"}) |
||||
|
public JsonResponse updateFinance(@ApiParam @Validated @RequestBody QueryDto<ProjectFinanceDto.UpdateFinance> params) throws Exception{ |
||||
|
log.info("修改任务或项目的预算和奖金信息开始{}",params); |
||||
|
projectFinanceService.updateFinance(params.getParam(),params.getUserId()); |
||||
|
log.info("修改任务或项目的预算和奖金信息结束"); |
||||
|
return JsonResponse.newInstance().ok(); |
||||
|
} |
||||
|
|
||||
|
@MustLogin |
||||
|
@ApiOperation(value = "查看自己需要审批的申请", notes = "") |
||||
|
@RequestMapping(value = "/queryNeedCheckByMe", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"}) |
||||
|
public JsonResponse<PageInfo<ProjectFinanceVo.NeedCheckByMe>> queryNeedCheckByMe(@ApiParam @Validated @RequestBody QueryDto<ProjectFinanceDto.QueryNeedCheckByMe> params) throws Exception{ |
||||
|
log.info("查看自己需要审批的申请开始{}",params); |
||||
|
PageInfo<ProjectFinanceVo.NeedCheckByMe> needCheckByMeList = projectFinanceService.queryNeedCheckByMe(params.getParam(),params.getUserId()); |
||||
|
log.info("查看自己需要审批的申请结束:{}",needCheckByMeList); |
||||
|
return JsonResponse.newInstance().ok(needCheckByMeList); |
||||
|
} |
||||
|
|
||||
|
@MustLogin |
||||
|
@ApiOperation(value = "查看项目下的财务信息", notes = "") |
||||
|
@RequestMapping(value = "/queryFinanceOfProject", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"}) |
||||
|
public JsonResponse<PageInfo<ProjectFinanceVo.FinanceOfProject>> queryFinanceOfProject(@ApiParam @Validated @RequestBody QueryDto<ProjectFinanceDto.QueryFinanceOfProject> params) throws Exception{ |
||||
|
log.info("查看项目下的财务信息开始{}",params); |
||||
|
PageInfo<ProjectFinanceVo.FinanceOfProject> financeOfProjectList = projectFinanceService.queryFinanceOfProject(params.getParam(),params.getUserId()); |
||||
|
log.info("查看项目下的财务信息结束:{}",financeOfProjectList); |
||||
|
return JsonResponse.newInstance().ok(financeOfProjectList); |
||||
|
} |
||||
|
|
||||
|
@MustLogin |
||||
|
@ApiOperation(value = "追加预算", notes = "") |
||||
|
@RequestMapping(value = "/addBudget", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"}) |
||||
|
public JsonResponse addBudget(@ApiParam @Validated @RequestBody QueryDto<ProjectFinanceDto.AddBudget> params) throws Exception{ |
||||
|
log.info("追加预算开始{}",params); |
||||
|
projectFinanceService.addBudget(params.getParam(),params.getUserId()); |
||||
|
log.info("追加预算结束"); |
||||
|
return JsonResponse.newInstance().ok(); |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,81 @@ |
|||||
|
package com.ccsens.ptccsens.bean.dto; |
||||
|
|
||||
|
import io.swagger.annotations.ApiModel; |
||||
|
import io.swagger.annotations.ApiModelProperty; |
||||
|
import lombok.Data; |
||||
|
|
||||
|
import javax.validation.constraints.NotNull; |
||||
|
|
||||
|
/** |
||||
|
* @author AUSU |
||||
|
*/ |
||||
|
@Data |
||||
|
public class ProjectFinanceDto { |
||||
|
|
||||
|
@Data |
||||
|
@ApiModel("查看项目下的所有任务对应的财务信息-入参") |
||||
|
public static class QueryProjectFinance { |
||||
|
@NotNull |
||||
|
@ApiModelProperty("项目id") |
||||
|
private Long projectId; |
||||
|
@ApiModelProperty("任务名称") |
||||
|
private String name; |
||||
|
@ApiModelProperty("页数") |
||||
|
private Integer pageNum = 1; |
||||
|
@ApiModelProperty("每页的数量") |
||||
|
private Integer pageSize = 10; |
||||
|
|
||||
|
} |
||||
|
|
||||
|
@Data |
||||
|
@ApiModel("修改任务或项目的预算和奖金信息-入参") |
||||
|
public static class UpdateFinance { |
||||
|
@NotNull |
||||
|
@ApiModelProperty("任务详情id") |
||||
|
private Long taskDetailId; |
||||
|
@NotNull |
||||
|
@ApiModelProperty("任务财务信息id") |
||||
|
private Long taskFinanceId; |
||||
|
@ApiModelProperty("预算") |
||||
|
private Long budget; |
||||
|
@ApiModelProperty("奖金") |
||||
|
private Long bonus; |
||||
|
} |
||||
|
|
||||
|
@Data |
||||
|
@ApiModel("查看自己需要审批的申请-入参") |
||||
|
public static class QueryNeedCheckByMe { |
||||
|
@NotNull |
||||
|
@ApiModelProperty("任务详情id") |
||||
|
private Long taskDetailId; |
||||
|
@ApiModelProperty("页数") |
||||
|
private Integer pageNum = 1; |
||||
|
@ApiModelProperty("每页的数量") |
||||
|
private Integer pageSize = 10; |
||||
|
} |
||||
|
|
||||
|
@Data |
||||
|
@ApiModel("查看项目下的财务信息-入参") |
||||
|
public static class QueryFinanceOfProject { |
||||
|
@NotNull |
||||
|
@ApiModelProperty("项目id") |
||||
|
private Long projectId; |
||||
|
@ApiModelProperty("页数") |
||||
|
private Integer pageNum = 1; |
||||
|
@ApiModelProperty("每页的数量") |
||||
|
private Integer pageSize = 10; |
||||
|
} |
||||
|
|
||||
|
@Data |
||||
|
@ApiModel("追加预算-入参") |
||||
|
public static class AddBudget { |
||||
|
@NotNull |
||||
|
@ApiModelProperty("财务信息id") |
||||
|
private Long financeId; |
||||
|
@NotNull |
||||
|
@ApiModelProperty("项目id") |
||||
|
private Long projectId; |
||||
|
@ApiModelProperty("追加预算") |
||||
|
private Long appendBudget; |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,111 @@ |
|||||
|
package com.ccsens.ptccsens.bean.vo; |
||||
|
|
||||
|
import com.github.pagehelper.PageInfo; |
||||
|
import io.swagger.annotations.ApiModel; |
||||
|
import io.swagger.annotations.ApiModelProperty; |
||||
|
import lombok.Data; |
||||
|
|
||||
|
import java.util.List; |
||||
|
|
||||
|
/** |
||||
|
* @author AUSU |
||||
|
*/ |
||||
|
@Data |
||||
|
public class ProjectFinanceVo { |
||||
|
|
||||
|
@Data |
||||
|
@ApiModel("查看项目下的所有任务对应的财务信息-返参") |
||||
|
public static class ProjectFinanceInfo { |
||||
|
@ApiModelProperty("项目财务信息id") |
||||
|
private Long projectFinanceId; |
||||
|
@ApiModelProperty("预算") |
||||
|
private Long budget; |
||||
|
@ApiModelProperty("奖金") |
||||
|
private Long bonus; |
||||
|
@ApiModelProperty("任务财务信息") |
||||
|
private PageInfo<TaskFinance> taskFinanceList; |
||||
|
} |
||||
|
@Data |
||||
|
@ApiModel("任务财务信息") |
||||
|
public static class TaskFinance { |
||||
|
@ApiModelProperty("任务id") |
||||
|
private Long taskDetailId; |
||||
|
@ApiModelProperty("任务名") |
||||
|
private String name; |
||||
|
@ApiModelProperty("任务财务信息id") |
||||
|
private Long taskFinanceId; |
||||
|
@ApiModelProperty("预算") |
||||
|
private Long budget; |
||||
|
@ApiModelProperty("奖金") |
||||
|
private Long bonus; |
||||
|
} |
||||
|
|
||||
|
@Data |
||||
|
@ApiModel("查看自己需要审批的申请-返参") |
||||
|
public static class NeedCheckByMe { |
||||
|
@ApiModelProperty("申请记录id") |
||||
|
private Long applyId; |
||||
|
@ApiModelProperty("提交人姓名") |
||||
|
private String submitName; |
||||
|
@ApiModelProperty("金额") |
||||
|
private Long money; |
||||
|
@ApiModelProperty("申请时间") |
||||
|
private Long submitTime; |
||||
|
@ApiModelProperty("审查人和当前记录的关联id") |
||||
|
private Long financeCheckId; |
||||
|
@ApiModelProperty("当前状态") |
||||
|
private Byte applyType; |
||||
|
} |
||||
|
|
||||
|
@Data |
||||
|
@ApiModel("查看自己需要审批的申请-返参") |
||||
|
public static class FinanceOfProject { |
||||
|
@ApiModelProperty("任务id") |
||||
|
private Long taskDetailId; |
||||
|
@ApiModelProperty("任务名") |
||||
|
private String taskName; |
||||
|
@ApiModelProperty("财务信息id") |
||||
|
private Long financeId; |
||||
|
@ApiModelProperty("预算") |
||||
|
private Long budget; |
||||
|
@ApiModelProperty("追加预算") |
||||
|
private Long appendBudget; |
||||
|
@ApiModelProperty("支出") |
||||
|
private Long expend; |
||||
|
@ApiModelProperty("结余") |
||||
|
private Long surplus; |
||||
|
} |
||||
|
@Data |
||||
|
public static class FinanceInfo { |
||||
|
@ApiModelProperty("财务信息id") |
||||
|
private Long fid; |
||||
|
@ApiModelProperty("预算") |
||||
|
private Long budget; |
||||
|
@ApiModelProperty("奖金") |
||||
|
private Long bonus; |
||||
|
@ApiModelProperty("任务id") |
||||
|
private Long taskDetailId; |
||||
|
@ApiModelProperty("任务名") |
||||
|
private String taskName; |
||||
|
@ApiModelProperty("追加预算列表") |
||||
|
private List<AppendBudget> appendBudgetList; |
||||
|
@ApiModelProperty("任务名") |
||||
|
private List<PassMoney> passMoneyList; |
||||
|
|
||||
|
} |
||||
|
@Data |
||||
|
public static class AppendBudget { |
||||
|
@ApiModelProperty("财务信息id") |
||||
|
private Long fabId; |
||||
|
@ApiModelProperty("追加预算") |
||||
|
private Long appendBudget; |
||||
|
|
||||
|
} |
||||
|
@Data |
||||
|
public static class PassMoney { |
||||
|
@ApiModelProperty("财务信息id") |
||||
|
private Long faId; |
||||
|
@ApiModelProperty("审核通过的钱") |
||||
|
private Long passMoney; |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,32 @@ |
|||||
|
package com.ccsens.ptccsens.persist.dao; |
||||
|
|
||||
|
import com.ccsens.ptccsens.bean.vo.ProjectFinanceVo; |
||||
|
import com.ccsens.ptccsens.persist.mapper.PluFinanceMapper; |
||||
|
import org.apache.ibatis.annotations.Param; |
||||
|
import org.springframework.stereotype.Repository; |
||||
|
|
||||
|
import java.util.List; |
||||
|
|
||||
|
/** |
||||
|
* @author AUSU |
||||
|
*/ |
||||
|
@Repository |
||||
|
public interface PluFinanceApplyDao extends PluFinanceMapper { |
||||
|
|
||||
|
/** |
||||
|
* 查询项目下需要我申请的费用 |
||||
|
* @param projectId 项目id |
||||
|
* @param userId 用户id |
||||
|
* @return 项目下需要我申请的费用 |
||||
|
*/ |
||||
|
List<ProjectFinanceVo.NeedCheckByMe> queryNeedCheckByMeOfProject(@Param("projectId") Long projectId,@Param("userId") Long userId); |
||||
|
|
||||
|
/** |
||||
|
* 查询项目下需要我申请的费用 |
||||
|
* @param taskDetailId 任务id |
||||
|
* @param userId 用户id |
||||
|
* @param projectId 项目id |
||||
|
* @return 项目下需要我申请的费用 |
||||
|
*/ |
||||
|
List<ProjectFinanceVo.NeedCheckByMe> queryNeedCheckByMeOfTask(@Param("taskDetailId") Long taskDetailId,@Param("userId") Long userId,@Param("projectId") Long projectId); |
||||
|
} |
||||
@ -0,0 +1,45 @@ |
|||||
|
package com.ccsens.ptccsens.persist.dao; |
||||
|
|
||||
|
import com.ccsens.ptccsens.bean.dto.ProjectFinanceDto; |
||||
|
import com.ccsens.ptccsens.bean.po.PluFinance; |
||||
|
import com.ccsens.ptccsens.bean.vo.ProjectFinanceVo; |
||||
|
import com.ccsens.ptccsens.persist.mapper.PluFinanceMapper; |
||||
|
import org.apache.ibatis.annotations.Param; |
||||
|
import org.springframework.stereotype.Repository; |
||||
|
|
||||
|
import java.util.List; |
||||
|
|
||||
|
/** |
||||
|
* @author AUSU |
||||
|
*/ |
||||
|
@Repository |
||||
|
public interface PluFinanceDao extends PluFinanceMapper { |
||||
|
|
||||
|
/** |
||||
|
* 查询项目下所有任务的预算和奖金 |
||||
|
* @param projectId 项目id |
||||
|
* @return 项目下所有任务的预算和奖金 |
||||
|
*/ |
||||
|
List<ProjectFinanceVo.TaskFinance> queryAllByTaskId(@Param("projectId") Long projectId); |
||||
|
|
||||
|
/** |
||||
|
* 查询项目下的总计预算与奖金 |
||||
|
* @param projectId 项目id |
||||
|
* @return 项目下的总计预算与奖金 |
||||
|
*/ |
||||
|
ProjectFinanceVo.ProjectFinanceInfo queryOfProjectTotal(@Param("projectId") Long projectId); |
||||
|
|
||||
|
/** |
||||
|
* 根据任务id查询财务信息 |
||||
|
* @param taskDetailId 任务id |
||||
|
* @return 财务信息 |
||||
|
*/ |
||||
|
PluFinance queryByTaskId(@Param("taskDetailId") Long taskDetailId); |
||||
|
|
||||
|
/** |
||||
|
* 查询项目下任务的预算使用情况 |
||||
|
* @param projectId 项目id |
||||
|
* @return 项目下任务的预算使用情况 |
||||
|
*/ |
||||
|
List<ProjectFinanceVo.FinanceInfo> queryFinanceOfProject(@Param("projectId") Long projectId); |
||||
|
} |
||||
@ -0,0 +1,22 @@ |
|||||
|
package com.ccsens.ptccsens.persist.dao; |
||||
|
|
||||
|
import com.ccsens.common.persist.dao.ProTaskPluginDao; |
||||
|
import com.ccsens.ptccsens.bean.po.ProTaskPlugin; |
||||
|
import com.ccsens.ptccsens.persist.mapper.ProTaskPluginMapper; |
||||
|
import org.apache.ibatis.annotations.Param; |
||||
|
import org.springframework.stereotype.Repository; |
||||
|
|
||||
|
/** |
||||
|
* @author AUSU |
||||
|
*/ |
||||
|
@Repository |
||||
|
public interface PluginDao extends ProTaskPluginMapper { |
||||
|
|
||||
|
/** |
||||
|
* 查询是否绑定了指定插件 |
||||
|
* @param taskDetailId 任务id |
||||
|
* @param code 插件code |
||||
|
* @return 0无 1有 |
||||
|
*/ |
||||
|
Integer queryFinancePlugin(@Param("taskDetailId") Long taskDetailId,@Param("code") String code); |
||||
|
} |
||||
@ -0,0 +1,49 @@ |
|||||
|
package com.ccsens.ptccsens.service; |
||||
|
|
||||
|
import com.ccsens.ptccsens.bean.dto.ProjectFinanceDto; |
||||
|
import com.ccsens.ptccsens.bean.vo.ProjectFinanceVo; |
||||
|
import com.github.pagehelper.Page; |
||||
|
import com.github.pagehelper.PageInfo; |
||||
|
|
||||
|
/** |
||||
|
* @author AUSU |
||||
|
*/ |
||||
|
public interface IProjectFinanceService { |
||||
|
/** |
||||
|
* 查看项目下的所有任务对应的财务信息 |
||||
|
* @param param 入参 |
||||
|
* @param userId 用户id |
||||
|
* @return 项目下的所有任务对应的财务信息 |
||||
|
*/ |
||||
|
ProjectFinanceVo.ProjectFinanceInfo queryProjectFinance(ProjectFinanceDto.QueryProjectFinance param, Long userId); |
||||
|
|
||||
|
/** |
||||
|
* 修改任务或项目的预算和奖金信息 |
||||
|
* @param param 入参 |
||||
|
* @param userId userId |
||||
|
*/ |
||||
|
void updateFinance(ProjectFinanceDto.UpdateFinance param, Long userId); |
||||
|
|
||||
|
/** |
||||
|
* 查询需要我审批的申请 |
||||
|
* @param param 入参 |
||||
|
* @param userId 用户id |
||||
|
* @return 需要我审批的申请 |
||||
|
*/ |
||||
|
PageInfo<ProjectFinanceVo.NeedCheckByMe> queryNeedCheckByMe(ProjectFinanceDto.QueryNeedCheckByMe param, Long userId); |
||||
|
|
||||
|
/** |
||||
|
* 查看项目下的财务信息 |
||||
|
* @param param 入参 |
||||
|
* @param userId 用户id |
||||
|
* @return 项目下的财务信息 |
||||
|
*/ |
||||
|
PageInfo<ProjectFinanceVo.FinanceOfProject> queryFinanceOfProject(ProjectFinanceDto.QueryFinanceOfProject param, Long userId); |
||||
|
|
||||
|
/** |
||||
|
* 追加预算 |
||||
|
* @param param 入参 |
||||
|
* @param userId 用户id |
||||
|
*/ |
||||
|
void addBudget(ProjectFinanceDto.AddBudget param, Long userId); |
||||
|
} |
||||
@ -0,0 +1,183 @@ |
|||||
|
package com.ccsens.ptccsens.service; |
||||
|
|
||||
|
|
||||
|
import cn.hutool.core.collection.CollectionUtil; |
||||
|
import cn.hutool.core.lang.Snowflake; |
||||
|
import cn.hutool.core.util.ObjectUtil; |
||||
|
import com.ccsens.common.persist.dao.ProMemberDao; |
||||
|
import com.ccsens.common.persist.dao.ProTaskDetailDao; |
||||
|
import com.ccsens.ptccsens.bean.dto.ProjectFinanceDto; |
||||
|
import com.ccsens.ptccsens.bean.po.PluFinance; |
||||
|
import com.ccsens.ptccsens.bean.po.PluFinanceAppendBudget; |
||||
|
import com.ccsens.ptccsens.bean.po.ProTaskPlugin; |
||||
|
import com.ccsens.ptccsens.bean.vo.ProjectFinanceVo; |
||||
|
import com.ccsens.ptccsens.persist.dao.PluFinanceApplyDao; |
||||
|
import com.ccsens.ptccsens.persist.dao.PluFinanceDao; |
||||
|
import com.ccsens.ptccsens.persist.dao.PluginDao; |
||||
|
import com.ccsens.ptccsens.persist.mapper.PluFinanceAppendBudgetMapper; |
||||
|
import com.ccsens.ptccsens.util.BasicsCodeError; |
||||
|
import com.ccsens.util.exception.BaseException; |
||||
|
import com.github.pagehelper.PageHelper; |
||||
|
import com.github.pagehelper.PageInfo; |
||||
|
import lombok.extern.slf4j.Slf4j; |
||||
|
import org.springframework.stereotype.Service; |
||||
|
import org.springframework.transaction.annotation.Propagation; |
||||
|
import org.springframework.transaction.annotation.Transactional; |
||||
|
|
||||
|
import javax.annotation.Resource; |
||||
|
import java.util.ArrayList; |
||||
|
import java.util.List; |
||||
|
|
||||
|
/** |
||||
|
* @author AUSU |
||||
|
*/ |
||||
|
@Service |
||||
|
@Slf4j |
||||
|
@Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class) |
||||
|
public class ProjectFinanceService implements IProjectFinanceService{ |
||||
|
|
||||
|
@Resource |
||||
|
private PluFinanceDao pluFinanceDao; |
||||
|
@Resource |
||||
|
private PluginDao pluginDao; |
||||
|
@Resource |
||||
|
private PluFinanceApplyDao pluFinanceApplyDao; |
||||
|
@Resource |
||||
|
private PluFinanceAppendBudgetMapper appendBudgetMapper; |
||||
|
@Resource |
||||
|
private ProTaskDetailDao proTaskDetailDao; |
||||
|
@Resource |
||||
|
private ProMemberDao memberDao; |
||||
|
@Resource |
||||
|
private Snowflake snowflake; |
||||
|
|
||||
|
@Override |
||||
|
public ProjectFinanceVo.ProjectFinanceInfo queryProjectFinance(ProjectFinanceDto.QueryProjectFinance param, Long userId) { |
||||
|
ProjectFinanceVo.ProjectFinanceInfo projectFinanceInfo = new ProjectFinanceVo.ProjectFinanceInfo(); |
||||
|
PageHelper.startPage(param.getPageNum(),param.getPageSize()); |
||||
|
//查询项目下的所有任务财务信息
|
||||
|
List<ProjectFinanceVo.TaskFinance> taskFinanceList = pluFinanceDao.queryAllByTaskId(param.getProjectId()); |
||||
|
log.info("项目下的所有任务财务信息:{}",taskFinanceList); |
||||
|
//查询项目下的总计
|
||||
|
projectFinanceInfo = pluFinanceDao.queryOfProjectTotal(param.getProjectId()); |
||||
|
log.info("项目的总计预算与奖金:{}",projectFinanceInfo); |
||||
|
if (CollectionUtil.isNotEmpty(taskFinanceList)) { |
||||
|
projectFinanceInfo.setTaskFinanceList(new PageInfo<ProjectFinanceVo.TaskFinance>(taskFinanceList)); |
||||
|
} |
||||
|
return projectFinanceInfo; |
||||
|
} |
||||
|
|
||||
|
@Override |
||||
|
public void updateFinance(ProjectFinanceDto.UpdateFinance param, Long userId) { |
||||
|
//如果任务没有关联财务条插件,则自动关联财务条插件
|
||||
|
//TODO 根据插件code查询是否存在, code暂时写死
|
||||
|
Integer num = pluginDao.queryFinancePlugin(param.getTaskDetailId(), "MP-TALL财务条"); |
||||
|
if (num < 1) { |
||||
|
//不存在则关联插件
|
||||
|
ProTaskPlugin proTaskPlugin = new ProTaskPlugin(); |
||||
|
proTaskPlugin.setId(snowflake.nextId()); |
||||
|
proTaskPlugin.setCode("MP-TALL财务条"); |
||||
|
proTaskPlugin.setPlginCol(1); |
||||
|
proTaskPlugin.setPlginRow(1); |
||||
|
proTaskPlugin.setColspan(1); |
||||
|
proTaskPlugin.setRowspan(1); |
||||
|
proTaskPlugin.setTaskDetailId(param.getTaskDetailId()); |
||||
|
//TODO 插件id
|
||||
|
proTaskPlugin.setPluginId(123456L); |
||||
|
proTaskPlugin.setCode("MP-TALL财务条"); |
||||
|
pluginDao.insertSelective(proTaskPlugin); |
||||
|
} |
||||
|
//根据任务财务信息id查找财务表
|
||||
|
PluFinance pluFinance = pluFinanceDao.selectByPrimaryKey(param.getTaskFinanceId()); |
||||
|
//a.如果存在,直接修改预算或奖金
|
||||
|
if (ObjectUtil.isNotNull(pluFinance)) { |
||||
|
PluFinance updatePluFinance = new PluFinance(); |
||||
|
updatePluFinance.setId(param.getTaskDetailId()); |
||||
|
if (ObjectUtil.isNotNull(param.getBonus()) && 0 != param.getBonus()) { |
||||
|
updatePluFinance.setBonus(param.getBonus()); |
||||
|
} |
||||
|
if (ObjectUtil.isNotNull(param.getBudget()) && 0!= param.getBudget()) { |
||||
|
updatePluFinance.setBudget(param.getBudget()); |
||||
|
} |
||||
|
pluFinanceDao.updateByPrimaryKeySelective(updatePluFinance); |
||||
|
return; |
||||
|
} |
||||
|
//b.如果不存在,根据任务id新建一个财务信息
|
||||
|
PluFinance newPluFinance = new PluFinance(); |
||||
|
newPluFinance.setId(snowflake.nextId()); |
||||
|
if (ObjectUtil.isNotNull(param.getBonus()) && 0 != param.getBonus()) { |
||||
|
newPluFinance.setBonus(param.getBonus()); |
||||
|
} |
||||
|
if (ObjectUtil.isNotNull(param.getBudget()) && 0!= param.getBudget()) { |
||||
|
newPluFinance.setBudget(param.getBudget()); |
||||
|
} |
||||
|
newPluFinance.setTaskId(param.getTaskDetailId()); |
||||
|
newPluFinance.setType((byte) 1); |
||||
|
newPluFinance.setOperator(userId); |
||||
|
pluFinanceDao.insertSelective(newPluFinance); |
||||
|
} |
||||
|
|
||||
|
|
||||
|
@Override |
||||
|
public PageInfo<ProjectFinanceVo.NeedCheckByMe> queryNeedCheckByMe(ProjectFinanceDto.QueryNeedCheckByMe param, Long userId) { |
||||
|
PluFinance pluFinance = pluFinanceDao.queryByTaskId(param.getTaskDetailId()); |
||||
|
log.info("根据任务id查询到的财务信息:{}",pluFinance); |
||||
|
PageHelper.startPage(param.getPageNum(),param.getPageSize()); |
||||
|
if (ObjectUtil.isNotNull(pluFinance)) { |
||||
|
if (0 == pluFinance.getType()) { |
||||
|
List<ProjectFinanceVo.NeedCheckByMe> needCheckByMeList = pluFinanceApplyDao.queryNeedCheckByMeOfProject(param.getTaskDetailId(),userId); |
||||
|
return new PageInfo<>(needCheckByMeList); |
||||
|
} |
||||
|
//查询任务的项目id
|
||||
|
Long projectId = proTaskDetailDao.projectIdByTaskDetailId(param.getTaskDetailId()); |
||||
|
List<ProjectFinanceVo.NeedCheckByMe> needCheckByMeList = pluFinanceApplyDao.queryNeedCheckByMeOfTask(param.getTaskDetailId(),userId,projectId); |
||||
|
return new PageInfo<>(needCheckByMeList); |
||||
|
} |
||||
|
return null; |
||||
|
} |
||||
|
|
||||
|
|
||||
|
@Override |
||||
|
public PageInfo<ProjectFinanceVo.FinanceOfProject> queryFinanceOfProject(ProjectFinanceDto.QueryFinanceOfProject param, Long userId) { |
||||
|
PageHelper.startPage(param.getPageNum(),param.getPageSize()); |
||||
|
List<ProjectFinanceVo.FinanceOfProject> financeOfProjectList = new ArrayList<>(); |
||||
|
List<ProjectFinanceVo.FinanceInfo> financeInfoList = pluFinanceDao.queryFinanceOfProject(param.getProjectId()); |
||||
|
if (CollectionUtil.isNotEmpty(financeInfoList)) { |
||||
|
for (ProjectFinanceVo.FinanceInfo financeInfo : financeInfoList) { |
||||
|
ProjectFinanceVo.FinanceOfProject financeOfProject = new ProjectFinanceVo.FinanceOfProject(); |
||||
|
financeOfProject.setTaskDetailId(financeInfo.getTaskDetailId()); |
||||
|
financeOfProject.setTaskName(financeInfo.getTaskName()); |
||||
|
financeOfProject.setFinanceId(financeInfo.getFid()); |
||||
|
financeOfProject.setBudget(financeInfo.getBudget()); |
||||
|
long appendBudgetSum = 0L; |
||||
|
if (CollectionUtil.isNotEmpty(financeInfo.getAppendBudgetList())) { |
||||
|
appendBudgetSum = financeInfo.getAppendBudgetList().stream().mapToLong(ProjectFinanceVo.AppendBudget::getAppendBudget).sum(); |
||||
|
} |
||||
|
financeOfProject.setAppendBudget(appendBudgetSum); |
||||
|
long passMoneySum = 0L; |
||||
|
if (CollectionUtil.isNotEmpty(financeInfo.getPassMoneyList())) { |
||||
|
passMoneySum = financeInfo.getPassMoneyList().stream().mapToLong(ProjectFinanceVo.PassMoney::getPassMoney).sum(); |
||||
|
} |
||||
|
financeOfProject.setExpend(passMoneySum); |
||||
|
financeOfProject.setSurplus(financeInfo.getBudget()+appendBudgetSum-passMoneySum); |
||||
|
financeOfProjectList.add(financeOfProject); |
||||
|
} |
||||
|
} |
||||
|
return new PageInfo<>(financeOfProjectList); |
||||
|
} |
||||
|
|
||||
|
@Override |
||||
|
public void addBudget(ProjectFinanceDto.AddBudget param, Long userId) { |
||||
|
PluFinance pluFinance = pluFinanceDao.selectByPrimaryKey(param.getFinanceId()); |
||||
|
if (ObjectUtil.isNull(pluFinance)) { |
||||
|
throw new BaseException(BasicsCodeError.FINANCE_ERROR); |
||||
|
} |
||||
|
PluFinanceAppendBudget appendBudget = new PluFinanceAppendBudget(); |
||||
|
appendBudget.setId(snowflake.nextId()); |
||||
|
appendBudget.setFinanceId(param.getFinanceId()); |
||||
|
Long userOfMemberId = memberDao.findUserOfMemberId(param.getProjectId(), userId); |
||||
|
appendBudget.setMemberId(userOfMemberId); |
||||
|
appendBudget.setOperator(userId); |
||||
|
appendBudgetMapper.insertSelective(appendBudget); |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,65 @@ |
|||||
|
<?xml version="1.0" encoding="UTF-8"?> |
||||
|
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> |
||||
|
<mapper namespace="com.ccsens.ptccsens.persist.dao.PluFinanceApplyDao"> |
||||
|
|
||||
|
|
||||
|
<select id="queryNeedCheckByMeOfProject" |
||||
|
resultType="com.ccsens.ptccsens.bean.vo.ProjectFinanceVo$NeedCheckByMe"> |
||||
|
SELECT |
||||
|
fa.id AS applyId, |
||||
|
fa.submit_name AS submitName, |
||||
|
fa.money AS money, |
||||
|
fa.apply_time AS submitTime, |
||||
|
fc.id AS financeCheckId, |
||||
|
fcl.check_status AS applyType |
||||
|
FROM |
||||
|
t_plu_finance_apply AS fa |
||||
|
LEFT JOIN t_plu_finance_check AS fc ON fa.id = fc.finance_apply_id |
||||
|
LEFT JOIN (SELECT id,rec_status FROM t_pro_member WHERE rec_status = 0 AND user_id = #{userId} AND project_id = #{projectId}) AS member ON member.id = fc.checker_id |
||||
|
LEFT JOIN t_plu_finance_check_log AS fcl ON fcl.check_id = fc.id AND fcl.rec_status = 0 |
||||
|
WHERE |
||||
|
fa.rec_status = 0 |
||||
|
AND fa.task_id IN ( |
||||
|
SELECT |
||||
|
pt2.task_detail_id |
||||
|
FROM |
||||
|
t_pro_parent_task AS pt2 |
||||
|
WHERE |
||||
|
pt2.rec_status = 0 |
||||
|
AND pt2.parent_task_detail_id IN ( |
||||
|
SELECT |
||||
|
pt1.task_detail_id |
||||
|
FROM |
||||
|
t_pro_parent_task AS pt1 |
||||
|
WHERE |
||||
|
pt1.rec_status = 0 |
||||
|
AND pt1.parent_task_detail_id = #{projectId} |
||||
|
) |
||||
|
) |
||||
|
AND fa.rec_status = 0 |
||||
|
AND member.rec_status = 0 |
||||
|
</select> |
||||
|
|
||||
|
<select id="queryNeedCheckByMeOfTask" |
||||
|
resultType="com.ccsens.ptccsens.bean.vo.ProjectFinanceVo$NeedCheckByMe"> |
||||
|
SELECT |
||||
|
fa.id AS applyId, |
||||
|
fa.submit_name AS submitName, |
||||
|
fa.money AS money, |
||||
|
fa.apply_time AS submitTime, |
||||
|
fc.id AS financeCheckId, |
||||
|
fcl.check_status AS applyType |
||||
|
FROM |
||||
|
t_plu_finance_apply AS fa |
||||
|
LEFT JOIN t_plu_finance_check AS fc ON fa.id = fc.finance_apply_id |
||||
|
LEFT JOIN (SELECT id,rec_status FROM t_pro_member WHERE rec_status = 0 AND user_id = #{userId} AND project_id = #{projectId}) AS member ON member.id = fc.checker_id |
||||
|
LEFT JOIN t_plu_finance_check_log AS fcl ON fcl.check_id = fc.id AND fcl.rec_status = 0 |
||||
|
WHERE |
||||
|
fa.rec_status = 0 |
||||
|
AND fa.task_id = #{taskDetailId} |
||||
|
AND fa.rec_status = 0 |
||||
|
AND member.rec_status = 0 |
||||
|
</select> |
||||
|
|
||||
|
|
||||
|
</mapper> |
||||
@ -0,0 +1,130 @@ |
|||||
|
<?xml version="1.0" encoding="UTF-8"?> |
||||
|
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> |
||||
|
<mapper namespace="com.ccsens.ptccsens.persist.dao.PluFinanceDao"> |
||||
|
|
||||
|
|
||||
|
<select id="queryAllByTaskId" resultType="com.ccsens.ptccsens.bean.vo.ProjectFinanceVo$TaskFinance"> |
||||
|
SELECT |
||||
|
task.taskId AS taskDetailId, |
||||
|
task.`name`, |
||||
|
pf.id AS taskFinanceId, |
||||
|
pf.budget, |
||||
|
pf.bonus |
||||
|
FROM |
||||
|
t_plu_finance AS pf |
||||
|
LEFT JOIN ( |
||||
|
SELECT |
||||
|
ppt2.task_detail_id AS taskId, |
||||
|
td.`name`, |
||||
|
td.rec_status |
||||
|
FROM |
||||
|
t_pro_parent_task AS ppt2 |
||||
|
LEFT JOIN t_pro_task_detail AS td ON td.id = ppt2.task_detail_id |
||||
|
WHERE |
||||
|
ppt2.rec_status = 0 |
||||
|
AND ppt2.parent_task_detail_id IN ( |
||||
|
SELECT |
||||
|
task_detail_id |
||||
|
FROM |
||||
|
t_pro_parent_task AS ppt1 |
||||
|
WHERE |
||||
|
ppt1.parent_task_detail_id = #{projectId} |
||||
|
AND ppt1.rec_status = 0 |
||||
|
) |
||||
|
AND td.rec_status = 0 |
||||
|
) AS task ON pf.task_id = task.taskId |
||||
|
WHERE |
||||
|
pf.rec_status = 0 |
||||
|
AND task.rec_status = 0 |
||||
|
AND pf.type = 1 |
||||
|
</select> |
||||
|
|
||||
|
<select id="queryOfProjectTotal" |
||||
|
resultType="com.ccsens.ptccsens.bean.vo.ProjectFinanceVo$ProjectFinanceInfo"> |
||||
|
SELECT |
||||
|
f.id AS projectFinanceId, |
||||
|
( |
||||
|
f.budget + ifNull(sum(b.add_budget), 0) |
||||
|
) AS budge, |
||||
|
f.bonus |
||||
|
FROM |
||||
|
t_plu_finance f |
||||
|
LEFT JOIN t_plu_finance_append_budget b ON f.id = b.finance_id |
||||
|
AND b.rec_status = 0 |
||||
|
WHERE |
||||
|
f.task_id = #{projectId} |
||||
|
AND f.rec_status = 0 |
||||
|
AND f.type = 0 |
||||
|
GROUP BY |
||||
|
f.id |
||||
|
</select> |
||||
|
|
||||
|
<select id="queryByTaskId" resultType="com.ccsens.ptccsens.bean.po.PluFinance"> |
||||
|
SELECT |
||||
|
id, |
||||
|
type, |
||||
|
budget, |
||||
|
bonus, |
||||
|
task_id, |
||||
|
operator |
||||
|
FROM |
||||
|
t_plu_finance AS pf |
||||
|
WHERE |
||||
|
pf.rec_status = 0 |
||||
|
AND pf.task_id = #{taskDetailId} |
||||
|
</select> |
||||
|
|
||||
|
<resultMap id="FinanceOfProject" type="com.ccsens.ptccsens.bean.vo.ProjectFinanceVo$FinanceInfo"> |
||||
|
<id column="fid" property="fid"/> |
||||
|
<result column="budget" property="budget"/> |
||||
|
<result column="bonus" property="bonus"/> |
||||
|
<result column="taskId" property="taskDetailId"/> |
||||
|
<result column="name" property="taskName"/> |
||||
|
<collection property="appendBudgetList" ofType="com.ccsens.ptccsens.bean.vo.ProjectFinanceVo$AppendBudget"> |
||||
|
<id column="fabId" property="fabId"/> |
||||
|
<result column="addBudget" property="appendBudget"/> |
||||
|
</collection> |
||||
|
<collection property="doctors" ofType="com.ccsens.ptccsens.bean.vo.ProjectFinanceVo$PassMoney"> |
||||
|
<id column="faId" property="faId"/> |
||||
|
<result column="money" property="passMoney"/> |
||||
|
</collection> |
||||
|
</resultMap> |
||||
|
<select id="queryFinanceOfProject" resultMap="FinanceOfProject"> |
||||
|
SELECT |
||||
|
pf.id AS fid, |
||||
|
pf.budget, |
||||
|
pf.bonus, |
||||
|
pf.task_id, |
||||
|
td.`name`, |
||||
|
fab.id AS fabId, |
||||
|
fab.add_budget, |
||||
|
fa.money, |
||||
|
fa.finance_id AS faId |
||||
|
FROM |
||||
|
t_plu_finance AS pf |
||||
|
LEFT JOIN t_pro_task_detail As td ON pf.task_id = td.id |
||||
|
LEFT JOIN t_plu_finance_append_budget AS fab ON pf.id = fab.finance_id AND fab.rec_status = 0 |
||||
|
LEFT JOIN t_plu_finance_apply AS fa ON pf.id = fa.finance_id AND fa.rec_status = 0 AND fa.apply_type = 5 |
||||
|
WHERE |
||||
|
pf.rec_status = 0 |
||||
|
AND pf.task_id IN ( |
||||
|
SELECT |
||||
|
pt2.task_detail_id |
||||
|
FROM |
||||
|
t_pro_parent_task AS pt2 |
||||
|
WHERE |
||||
|
pt2.rec_status = 0 |
||||
|
AND pt2.parent_task_detail_id IN ( |
||||
|
SELECT |
||||
|
pt1.task_detail_id |
||||
|
FROM |
||||
|
t_pro_parent_task AS pt1 |
||||
|
WHERE |
||||
|
pt1.rec_status = 0 |
||||
|
AND pt1.parent_task_detail_id = #{projectId} |
||||
|
) |
||||
|
) |
||||
|
AND td.rec_status = 0 |
||||
|
</select> |
||||
|
|
||||
|
</mapper> |
||||
@ -0,0 +1,17 @@ |
|||||
|
<?xml version="1.0" encoding="UTF-8"?> |
||||
|
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> |
||||
|
<mapper namespace="com.ccsens.ptccsens.persist.dao.PluginDao"> |
||||
|
|
||||
|
|
||||
|
<select id="queryFinancePlugin" resultType="Integer"> |
||||
|
SELECT |
||||
|
COUNT(tp.id) |
||||
|
FROM |
||||
|
t_pro_task_plugin AS tp |
||||
|
WHERE |
||||
|
tp.rec_status = 0 |
||||
|
AND tp.`code` = #{code} |
||||
|
AND tp.task_detail_id = #{taskDetailId} |
||||
|
</select> |
||||
|
|
||||
|
</mapper> |
||||
Loading…
Reference in new issue