Browse Source

预算及成本重构

master
陈裕财 4 years ago
parent
commit
7ddcf15e4f
  1. 1
      xm-core/src/main/java/com/xm/core/ctrl/XmBudgetLaborController.java
  2. 1
      xm-core/src/main/java/com/xm/core/ctrl/XmBudgetNlaborController.java
  3. 1
      xm-core/src/main/java/com/xm/core/ctrl/XmCostNlaborController.java
  4. 360
      xm-core/src/main/java/com/xm/core/ctrl/XmProjectMBudgetCostNouserController.java
  5. 377
      xm-core/src/main/java/com/xm/core/ctrl/XmProjectMBudgetCostUserController.java
  6. 343
      xm-core/src/main/java/com/xm/core/ctrl/XmProjectMCostNouserController.java
  7. 360
      xm-core/src/main/java/com/xm/core/ctrl/XmProjectMCostUserController.java
  8. 230
      xm-core/src/main/java/com/xm/core/entity/XmProjectMBudgetCostNouser.java
  9. 260
      xm-core/src/main/java/com/xm/core/entity/XmProjectMBudgetCostUser.java
  10. 102
      xm-core/src/main/java/com/xm/core/entity/XmProjectMCostNouser.java
  11. 455
      xm-core/src/main/java/com/xm/core/entity/XmProjectMCostUser.java
  12. 13
      xm-core/src/main/java/com/xm/core/service/XmBudgetLaborService.java
  13. 15
      xm-core/src/main/java/com/xm/core/service/XmBudgetNlaborService.java
  14. 13
      xm-core/src/main/java/com/xm/core/service/XmCostNlaborService.java
  15. 148
      xm-core/src/main/java/com/xm/core/service/XmProjectMBudgetCostNouserService.java
  16. 172
      xm-core/src/main/java/com/xm/core/service/XmProjectMBudgetCostUserService.java
  17. 150
      xm-core/src/main/java/com/xm/core/service/XmProjectMCostNouserService.java
  18. 185
      xm-core/src/main/java/com/xm/core/service/XmProjectMCostUserService.java

1
xm-core/src/main/java/com/xm/core/ctrl/XmBudgetLaborController.java

@ -5,7 +5,6 @@ import com.mdp.core.utils.RequestUtils;
import com.mdp.mybatis.PageUtils;
import com.mdp.swagger.ApiEntityParams;
import com.xm.core.entity.XmBudgetLabor;
import com.xm.core.entity.XmProjectMBudgetCostUser;
import com.xm.core.service.XmBudgetLaborService;
import io.swagger.annotations.*;
import org.slf4j.Logger;

1
xm-core/src/main/java/com/xm/core/ctrl/XmBudgetNlaborController.java

@ -5,7 +5,6 @@ import com.mdp.core.utils.RequestUtils;
import com.mdp.mybatis.PageUtils;
import com.mdp.swagger.ApiEntityParams;
import com.xm.core.entity.XmBudgetNlabor;
import com.xm.core.entity.XmProjectMBudgetCostNouser;
import com.xm.core.service.XmBudgetNlaborService;
import io.swagger.annotations.*;
import org.slf4j.Logger;

1
xm-core/src/main/java/com/xm/core/ctrl/XmCostNlaborController.java

@ -5,7 +5,6 @@ import com.mdp.core.utils.RequestUtils;
import com.mdp.mybatis.PageUtils;
import com.mdp.swagger.ApiEntityParams;
import com.xm.core.entity.XmCostNlabor;
import com.xm.core.entity.XmProjectMCostNouser;
import com.xm.core.service.XmCostNlaborService;
import io.swagger.annotations.*;
import org.slf4j.Logger;

360
xm-core/src/main/java/com/xm/core/ctrl/XmProjectMBudgetCostNouserController.java

@ -1,360 +0,0 @@
package com.xm.core.ctrl;
import com.alibaba.fastjson.JSON;
import com.mdp.audit.log.client.annotation.AuditLog;
import com.mdp.audit.log.client.annotation.OperType;
import com.mdp.core.entity.Tips;
import com.mdp.core.err.BizException;
import com.mdp.core.utils.NumberUtil;
import com.mdp.core.utils.RequestUtils;
import com.mdp.mybatis.PageUtils;
import com.xm.core.entity.XmProjectMBudgetCostNouser;
import com.xm.core.service.XmProjectMBudgetCostNouserService;
import com.xm.core.service.XmRecordService;
import io.swagger.annotations.*;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.*;
import springfox.documentation.annotations.ApiIgnore;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* url编制采用rest风格,如对XM.xm_project_m_budget_cost_nouser xm_project_m_budget_cost_nouser的操作有增删改查,对应的url分别为:<br>
* 新增: xm/xmProjectMBudgetCostNouser/add <br>
* 查询: xm/xmProjectMBudgetCostNouser/list<br>
* 模糊查询: xm/xmProjectMBudgetCostNouser/listKey<br>
* 修改: xm/xmProjectMBudgetCostNouser/edit <br>
* 删除: xm/xmProjectMBudgetCostNouser/del<br>
* 批量删除: xm/xmProjectMBudgetCostNouser/batchDel<br>
* 组织 com.qqkj 顶级模块 oa 大模块 xm 小模块 <br>
* 实体 XmProjectMBudgetCostNouser XM.xm_project_m_budget_cost_nouser 当前主键(包括多主键): id;
***/
@RestController("xm.core.xmProjectMBudgetCostNouserController")
@RequestMapping(value="/**/xm/core/xmProjectMBudgetCostNouser")
@Api(tags={"xm_project_m_budget_cost_nouser操作接口"})
public class XmProjectMBudgetCostNouserController {
static Log logger=LogFactory.getLog(XmProjectMBudgetCostNouserController.class);
@Autowired
private XmProjectMBudgetCostNouserService xmProjectMBudgetCostNouserService;
@Autowired
XmRecordService xmRecordService;
@ApiOperation( value = "查询xm_project_m_budget_cost_nouser信息列表",notes="listXmProjectMBudgetCostNouser,条件之间是 and关系,模糊查询写法如 {studentName:'%才哥%'}")
@ApiImplicitParams({
@ApiImplicitParam(name="id",value="主键,主键",required=false),
@ApiImplicitParam(name="projectId",value="项目编号",required=false),
@ApiImplicitParam(name="budgetCost",value="预算金额",required=false),
@ApiImplicitParam(name="remark",value="备注",required=false),
@ApiImplicitParam(name="subjectId",value="预算科目",required=false),
@ApiImplicitParam(name="bizzStartDate",value="费用归属周期开始日期",required=false),
@ApiImplicitParam(name="bizzEndDate",value="费用归属周期结束日期",required=false),
@ApiImplicitParam(name="bizProcInstId",value="当前流程实例编号",required=false),
@ApiImplicitParam(name="bizFlowState",value="当前流程状态0初始1审批中2审批通过3审批不通过4流程取消或者删除",required=false),
@ApiImplicitParam(name="phaseId",value="计划",required=false),
@ApiImplicitParam(name="costType",value="成本类型0非人力1内部人力2外购人力",required=false),
@ApiImplicitParam(name="bizzMonth",value="费用归属月份yyyy-mm",required=false),
@ApiImplicitParam(name="pageSize",value="每页记录数",required=false),
@ApiImplicitParam(name="pageNum",value="当前页码,从1开始",required=false),
@ApiImplicitParam(name="total",value="总记录数,服务器端收到0时,会自动计算总记录数,如果上传>0的不自动计算",required=false),
@ApiImplicitParam(name="orderBy",value="排序列 如性别、学生编号排序 orderBy = sex desc,student_id desc",required=false),
@ApiImplicitParam(name="count",value="是否进行总条数计算,count=true|false",required=false)
})
@ApiResponses({
@ApiResponse(code = 200,response= XmProjectMBudgetCostNouser.class,message = "{tips:{isOk:true/false,msg:'成功/失败原因',tipscode:'错误码'},total:总记录数,data:[数据对象1,数据对象2,...]}")
})
@RequestMapping(value="/list",method=RequestMethod.GET)
public Map<String,Object> listXmProjectMBudgetCostNouser( @ApiIgnore @RequestParam Map<String,Object> xmProjectMBudgetCostNouser){
Map<String,Object> m = new HashMap<>();
RequestUtils.transformArray(xmProjectMBudgetCostNouser, "ids");
PageUtils.startPage(xmProjectMBudgetCostNouser);
List<Map<String,Object>> xmProjectMBudgetCostNouserList = xmProjectMBudgetCostNouserService.selectListMapByWhere(xmProjectMBudgetCostNouser); //列出XmProjectMBudgetCostNouser列表
PageUtils.responePage(m, xmProjectMBudgetCostNouserList);
m.put("data",xmProjectMBudgetCostNouserList);
Tips tips=new Tips("查询成功");
m.put("tips", tips);
return m;
}
@ApiResponses({
@ApiResponse(code = 200,response=XmProjectMBudgetCostNouser.class,message = "{tips:{isOk:true/false,msg:'成功/失败原因',tipscode:'错误码'},total:总记录数,data:[数据对象1,数据对象2,...]}")
})
@RequestMapping(value="/listSum",method=RequestMethod.GET)
public Map<String,Object> listSum( @ApiIgnore @RequestParam Map<String,Object> xmProjectMBudgetCostNouser){
Map<String,Object> m = new HashMap<>();
RequestUtils.transformArray(xmProjectMBudgetCostNouser, "ids");
PageUtils.startPage(xmProjectMBudgetCostNouser);
List<Map<String,Object>> xmProjectMBudgetCostNouserList = xmProjectMBudgetCostNouserService.listSum(xmProjectMBudgetCostNouser); //列出xmProjectMBudgetCostNouser列表
PageUtils.responePage(m, xmProjectMBudgetCostNouserList);
m.put("data",xmProjectMBudgetCostNouserList);
Tips tips=new Tips("查询成功");
m.put("tips", tips);
return m;
}
/***/
@ApiOperation( value = "新增一条xm_project_m_budget_cost_nouser信息",notes="addXmProjectMBudgetCostNouser,主键如果为空,后台自动生成")
@ApiResponses({
@ApiResponse(code = 200,response=XmProjectMBudgetCostNouser.class,message = "{tips:{isOk:true/false,msg:'成功/失败原因',tipscode:'失败时错误码'},data:数据对象}")
})
@RequestMapping(value="/add",method=RequestMethod.POST)
public Map<String,Object> addXmProjectMBudgetCostNouser(@RequestBody XmProjectMBudgetCostNouser xmProjectMBudgetCostNouser) {
Map<String,Object> m = new HashMap<>();
Tips tips=new Tips("成功新增一条数据");
try{
if(StringUtils.isEmpty(xmProjectMBudgetCostNouser.getId())) {
xmProjectMBudgetCostNouser.setId(xmProjectMBudgetCostNouserService.createKey("id"));
}else{
XmProjectMBudgetCostNouser xmProjectMBudgetCostNouserQuery = new XmProjectMBudgetCostNouser(xmProjectMBudgetCostNouser.getId());
if(xmProjectMBudgetCostNouserService.countByWhere(xmProjectMBudgetCostNouserQuery)>0){
tips.setFailureMsg("编号重复,请修改编号再提交");
m.put("tips", tips);
return m;
}
}
String projectId=xmProjectMBudgetCostNouser.getProjectId();
BigDecimal zero=BigDecimal.ZERO;
BigDecimal budgetCostUser=NumberUtil.getBigDecimal(xmProjectMBudgetCostNouser.getBudgetCost(),zero);
Tips judgetTips=xmProjectMBudgetCostNouserService.judgetBudget(projectId, budgetCostUser,null);
if(judgetTips.isOk()) {
xmProjectMBudgetCostNouserService.insert(xmProjectMBudgetCostNouser);
xmRecordService.addXmBudgetRecord(projectId, xmProjectMBudgetCostNouser.getId(), "项目-预算-非人力-增加", "增加预算"+xmProjectMBudgetCostNouser.getBudgetCost(),JSON.toJSONString(xmProjectMBudgetCostNouser),null);
m.put("data",xmProjectMBudgetCostNouser);
}else {
tips=judgetTips;
}
}catch (BizException e) {
tips=e.getTips();
logger.error("",e);
}catch (Exception e) {
tips.setFailureMsg(e.getMessage());
logger.error("",e);
}
m.put("tips", tips);
return m;
}
/***/
@ApiOperation( value = "删除一条xm_project_m_budget_cost_nouser信息",notes="delXmProjectMBudgetCostNouser,仅需要上传主键字段")
@ApiResponses({
@ApiResponse(code = 200, message = "{tips:{isOk:true/false,msg:'成功/失败原因',tipscode:'失败时错误码'}}")
})
@RequestMapping(value="/del",method=RequestMethod.POST)
public Map<String,Object> delXmProjectMBudgetCostNouser(@RequestBody XmProjectMBudgetCostNouser xmProjectMBudgetCostNouser){
Map<String,Object> m = new HashMap<>();
Tips tips=new Tips("成功删除一条数据");
try{
xmProjectMBudgetCostNouserService.deleteByPk(xmProjectMBudgetCostNouser);
xmRecordService.addXmBudgetRecord(xmProjectMBudgetCostNouser.getProjectId(), xmProjectMBudgetCostNouser.getId(), "项目-预算-非人力-删除", "删除预算"+xmProjectMBudgetCostNouser.getBudgetCost(),JSON.toJSONString(xmProjectMBudgetCostNouser),null);
}catch (BizException e) {
tips=e.getTips();
logger.error("",e);
}catch (Exception e) {
tips.setFailureMsg(e.getMessage());
logger.error("",e);
}
m.put("tips", tips);
return m;
}
/***/
@ApiOperation( value = "根据主键修改一条xm_project_m_budget_cost_nouser信息",notes="editXmProjectMBudgetCostNouser")
@ApiResponses({
@ApiResponse(code = 200,response=XmProjectMBudgetCostNouser.class, message = "{tips:{isOk:true/false,msg:'成功/失败原因',tipscode:'失败时错误码'},data:数据对象}")
})
@RequestMapping(value="/edit",method=RequestMethod.POST)
public Map<String,Object> editXmProjectMBudgetCostNouser(@RequestBody XmProjectMBudgetCostNouser xmProjectMBudgetCostNouser) {
Map<String,Object> m = new HashMap<>();
Tips tips=new Tips("成功更新一条数据");
try{
String projectId=xmProjectMBudgetCostNouser.getProjectId();
BigDecimal zero=BigDecimal.ZERO;
BigDecimal budgetCostUser=NumberUtil.getBigDecimal(xmProjectMBudgetCostNouser.getBudgetCost(),zero);
List<String> excludeIds=new ArrayList<>();
excludeIds.add(xmProjectMBudgetCostNouser.getId());
Tips judgetTips=xmProjectMBudgetCostNouserService.judgetBudget(projectId, budgetCostUser,excludeIds);
if(judgetTips.isOk()) {
xmProjectMBudgetCostNouserService.updateByPk(xmProjectMBudgetCostNouser);
xmRecordService.addXmBudgetRecord(xmProjectMBudgetCostNouser.getProjectId(), xmProjectMBudgetCostNouser.getId(), "项目-预算-非人力-修改", "修改预算为"+xmProjectMBudgetCostNouser.getBudgetCost(),JSON.toJSONString(xmProjectMBudgetCostNouser),null);
m.put("data",xmProjectMBudgetCostNouser);
}else {
tips=judgetTips;
}
}catch (BizException e) {
tips=e.getTips();
logger.error("",e);
}catch (Exception e) {
tips.setFailureMsg(e.getMessage());
logger.error("",e);
}
m.put("tips", tips);
return m;
}
/***/
@ApiOperation( value = "根据主键列表批量删除xm_project_m_budget_cost_nouser信息",notes="batchDelXmProjectMBudgetCostNouser,仅需要上传主键字段")
@ApiResponses({
@ApiResponse(code = 200, message = "{tips:{isOk:true/false,msg:'成功/失败原因',tipscode:'失败时错误码'}")
})
@RequestMapping(value="/batchDel",method=RequestMethod.POST)
public Map<String,Object> batchDelXmProjectMBudgetCostNouser(@RequestBody List<XmProjectMBudgetCostNouser> xmProjectMBudgetCostNousers) {
Map<String,Object> m = new HashMap<>();
Tips tips=new Tips("成功删除"+xmProjectMBudgetCostNousers.size()+"条数据");
try{
xmProjectMBudgetCostNouserService.batchDelete(xmProjectMBudgetCostNousers);
for (XmProjectMBudgetCostNouser xmProjectMBudgetCostNouser : xmProjectMBudgetCostNousers) {
xmRecordService.addXmBudgetRecord(xmProjectMBudgetCostNouser.getProjectId(), xmProjectMBudgetCostNouser.getId(), "项目-预算-非人力-删除", "删除预算额"+xmProjectMBudgetCostNouser.getBudgetCost(),JSON.toJSONString(xmProjectMBudgetCostNouser),null);
}
}catch (BizException e) {
tips=e.getTips();
logger.error("",e);
}catch (Exception e) {
tips.setFailureMsg(e.getMessage());
logger.error("",e);
}
m.put("tips", tips);
return m;
}
/***/
@ApiOperation( value = "批量修改",notes="batchEdit")
@ApiResponses({
@ApiResponse(code = 200, message = "{tips:{isOk:true/false,msg:'成功/失败原因',tipscode:'失败时错误码'}")
})
@RequestMapping(value="/batchEdit",method=RequestMethod.POST)
public Map<String,Object> batchEditXmProjectMBudgetCostNouser(@RequestBody List<XmProjectMBudgetCostNouser> xmProjectMBudgetCostNousers) {
Map<String,Object> m = new HashMap<>();
Tips tips=new Tips("成功新增"+xmProjectMBudgetCostNousers.size()+"条数据");
try{
xmProjectMBudgetCostNousers.forEach(g->{
g.setId(xmProjectMBudgetCostNouserService.createKey("id"));
});
BigDecimal budgetCostUser=BigDecimal.ZERO;
String projectId=null;
BigDecimal zero=BigDecimal.ZERO;
List<String> excludeIds=new ArrayList<>();
for (XmProjectMBudgetCostNouser costUser : xmProjectMBudgetCostNousers) {
excludeIds.add(costUser.getId());
projectId=costUser.getProjectId();
budgetCostUser=budgetCostUser.add(NumberUtil.getBigDecimal(costUser.getBudgetCost(),zero));
}
Tips judgetTips=xmProjectMBudgetCostNouserService.judgetBudget(projectId, budgetCostUser,excludeIds);
if(judgetTips.isOk()) {
xmProjectMBudgetCostNouserService.batchUpdate(xmProjectMBudgetCostNousers);
for (XmProjectMBudgetCostNouser xmProjectMBudgetCostNouser : xmProjectMBudgetCostNousers) {
xmRecordService.addXmBudgetRecord(xmProjectMBudgetCostNouser.getProjectId(), xmProjectMBudgetCostNouser.getId(), "项目-预算-非人力-修改", "修改预算额"+xmProjectMBudgetCostNouser.getBudgetCost(),JSON.toJSONString(xmProjectMBudgetCostNouser),null);
}
m.put("data", xmProjectMBudgetCostNousers);
}else {
tips=judgetTips;
}
}catch (BizException e) {
tips=e.getTips();
logger.error("",e);
}catch (Exception e) {
tips.setFailureMsg(e.getMessage());
logger.error("",e);
}
m.put("tips", tips);
return m;
}
/***/
@ApiOperation( value = "批量新增",notes="batchAddXmProjectMCostNouser")
@ApiResponses({
@ApiResponse(code = 200, message = "{tips:{isOk:true/false,msg:'成功/失败原因',tipscode:'失败时错误码'}")
})
@RequestMapping(value="/batchAdd",method=RequestMethod.POST)
public Map<String,Object> batchAddXmProjectMBudgetCostNouser(@RequestBody List<XmProjectMBudgetCostNouser> xmProjectMBudgetCostNousers) {
Map<String,Object> m = new HashMap<>();
Tips tips=new Tips("成功新增"+xmProjectMBudgetCostNousers.size()+"条数据");
try{
xmProjectMBudgetCostNousers.forEach(g->{
g.setId(xmProjectMBudgetCostNouserService.createKey("id"));
});
BigDecimal budgetCostUser=BigDecimal.ZERO;
String projectId=null;
BigDecimal zero=BigDecimal.ZERO;
for (XmProjectMBudgetCostNouser costUser : xmProjectMBudgetCostNousers) {
projectId=costUser.getProjectId();
budgetCostUser=budgetCostUser.add(NumberUtil.getBigDecimal(costUser.getBudgetCost(),zero));
}
Tips judgetTips=xmProjectMBudgetCostNouserService.judgetBudget(projectId, budgetCostUser,null);
if(judgetTips.isOk()) {
xmProjectMBudgetCostNouserService.batchInsert(xmProjectMBudgetCostNousers);
for (XmProjectMBudgetCostNouser xmProjectMBudgetCostNouser : xmProjectMBudgetCostNousers) {
xmRecordService.addXmBudgetRecord(xmProjectMBudgetCostNouser.getProjectId(), xmProjectMBudgetCostNouser.getId(), "项目-预算-非人力-增加", "增加预算额"+xmProjectMBudgetCostNouser.getBudgetCost(),JSON.toJSONString(xmProjectMBudgetCostNouser),null);
}
m.put("data", xmProjectMBudgetCostNousers);
}else {
tips=judgetTips;
}
}catch (BizException e) {
tips=e.getTips();
logger.error("",e);
}catch (Exception e) {
tips.setFailureMsg(e.getMessage());
logger.error("",e);
}
m.put("tips", tips);
return m;
}
/**
* 流程审批过程中回调该接口更新业务数据
* 如果发起流程时上送了restUrl则无论流程中是否配置了监听器都会在流程发生以下事件时推送数据过来
* eventName: PROCESS_STARTED 流程启动完成 全局
* PROCESS_COMPLETED 流程正常结束 全局
* PROCESS_CANCELLED 流程删除 全局
* create 人工任务启动
* complete 人工任务完成
* assignment 人工任务分配给了具体的人
* delete 人工任务被删除
*
* 其中 create/complete/assignment/delete事件是需要在模型中人工节点上配置了委托代理表达式 ${taskBizCallListener}才会推送过来
* 在人工任务节点上配置 任务监听器 建议事件为 complete,其它assignment/create/complete/delete也可以一般建议在complete,委托代理表达式 ${taskBizCallListener}
*
* @param flowVars {flowBranchId,agree,procInstId,assignee,actId,taskName,mainTitle,branchId,bizKey,commentMsg,eventName,modelKey}
* @return 如果tips.isOk==false将影响流程提交
**/
@AuditLog(firstMenu="办公平台",secondMenu="项目成本",func="processApprova",funcDesc="非人力成本结算流程审批",operType=OperType.UPDATE)
@RequestMapping(value="/processApprova",method=RequestMethod.POST)
public Map<String,Object> processApprova( @RequestBody Map<String,Object> flowVars){
Map<String,Object> m = new HashMap<>();
Tips tips=new Tips("成功新增一条数据");
try{
this.xmProjectMBudgetCostNouserService.processApprova(flowVars);
logger.debug("procInstId====="+flowVars.get("procInstId"));
}catch (BizException e) {
tips=e.getTips();
logger.error("执行异常",e);
}catch (Exception e) {
tips.setFailureMsg(e.getMessage());
logger.error("执行异常",e);
}
m.put("tips", tips);
return m;
}
}

377
xm-core/src/main/java/com/xm/core/ctrl/XmProjectMBudgetCostUserController.java

@ -1,377 +0,0 @@
package com.xm.core.ctrl;
import com.alibaba.fastjson.JSON;
import com.mdp.audit.log.client.annotation.AuditLog;
import com.mdp.audit.log.client.annotation.OperType;
import com.mdp.core.entity.Tips;
import com.mdp.core.err.BizException;
import com.mdp.core.utils.NumberUtil;
import com.mdp.core.utils.RequestUtils;
import com.mdp.mybatis.PageUtils;
import com.xm.core.entity.XmProjectMBudgetCostUser;
import com.xm.core.service.XmProjectMBudgetCostUserService;
import com.xm.core.service.XmRecordService;
import io.swagger.annotations.*;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.*;
import springfox.documentation.annotations.ApiIgnore;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@RestController("xm.core.xmProjectMBudgetCostUserController")
@RequestMapping(value="/**/xm/core/xmProjectMBudgetCostUser")
@Api(tags={"xm_project_m_budget_cost_user操作接口"})
public class XmProjectMBudgetCostUserController {
static Log logger=LogFactory.getLog(XmProjectMBudgetCostUserController.class);
@Autowired
private XmProjectMBudgetCostUserService xmProjectMBudgetCostUserService;
@Autowired
XmRecordService xmRecordService;
@ApiOperation( value = "查询xm_project_m_budget_cost_user信息列表",notes="listXmProjectMBudgetCostUser,条件之间是 and关系,模糊查询写法如 {studentName:'%才哥%'}")
@ApiImplicitParams({
@ApiImplicitParam(name="id",value="主键,主键",required=false),
@ApiImplicitParam(name="projectId",value="项目编号",required=false),
@ApiImplicitParam(name="userid",value="项目成员编号",required=false),
@ApiImplicitParam(name="budgetCost",value="预算金额/每月",required=false),
@ApiImplicitParam(name="remark",value="备注",required=false),
@ApiImplicitParam(name="username",value="用户名",required=false),
@ApiImplicitParam(name="subjectId",value="预算科目编号",required=false),
@ApiImplicitParam(name="bizzStartDate",value="费用归属周期开始日期",required=false),
@ApiImplicitParam(name="bizzEndDate",value="费用归属周期结束日期",required=false),
@ApiImplicitParam(name="bizzMonth",value="费用归属月份yyyy-mm",required=false),
@ApiImplicitParam(name="bizProcInstId",value="当前流程实例编号",required=false),
@ApiImplicitParam(name="bizFlowState",value="当前流程状态0初始1审批中2审批通过3审批不通过4流程取消或者删除",required=false),
@ApiImplicitParam(name="phaseId",value="项目计划",required=false),
@ApiImplicitParam(name="costType",value="成本类型0人力1内部人力2外购人力",required=false),
@ApiImplicitParam(name="pageSize",value="每页记录数",required=false),
@ApiImplicitParam(name="pageNum",value="当前页码,从1开始",required=false),
@ApiImplicitParam(name="total",value="总记录数,服务器端收到0时,会自动计算总记录数,如果上传>0的不自动计算",required=false),
@ApiImplicitParam(name="orderBy",value="排序列 如性别、学生编号排序 orderBy = sex desc,student_id desc",required=false),
@ApiImplicitParam(name="count",value="是否进行总条数计算,count=true|false",required=false)
})
@ApiResponses({
@ApiResponse(code = 200,response= XmProjectMBudgetCostUser.class,message = "{tips:{isOk:true/false,msg:'成功/失败原因',tipscode:'错误码'},total:总记录数,data:[数据对象1,数据对象2,...]}")
})
@RequestMapping(value="/list",method=RequestMethod.GET)
public Map<String,Object> listXmProjectMBudgetCostUser( @ApiIgnore @RequestParam Map<String,Object> xmProjectMBudgetCostUser){
Map<String,Object> m = new HashMap<>();
RequestUtils.transformArray(xmProjectMBudgetCostUser, "ids");
PageUtils.startPage(xmProjectMBudgetCostUser);
List<Map<String,Object>> xmProjectMBudgetCostUserList = xmProjectMBudgetCostUserService.selectListMapByWhere(xmProjectMBudgetCostUser); //列出XmProjectMBudgetCostUser列表
PageUtils.responePage(m, xmProjectMBudgetCostUserList);
m.put("data",xmProjectMBudgetCostUserList);
Tips tips=new Tips("查询成功");
m.put("tips", tips);
return m;
}
@ApiResponses({
@ApiResponse(code = 200,response=XmProjectMBudgetCostUser.class,message = "{tips:{isOk:true/false,msg:'成功/失败原因',tipscode:'错误码'},total:总记录数,data:[数据对象1,数据对象2,...]}")
})
@RequestMapping(value="/listSum",method=RequestMethod.GET)
public Map<String,Object> listSum( @ApiIgnore @RequestParam Map<String,Object> xmProjectMBudgetCostUser){
Map<String,Object> m = new HashMap<>();
RequestUtils.transformArray(xmProjectMBudgetCostUser, "ids");
PageUtils.startPage(xmProjectMBudgetCostUser);
List<Map<String,Object>> xmProjectMBudgetCostUserList = xmProjectMBudgetCostUserService.listSum(xmProjectMBudgetCostUser); //列出XmProjectMBudgetCostUser列表
PageUtils.responePage(m, xmProjectMBudgetCostUserList);
m.put("data",xmProjectMBudgetCostUserList);
Tips tips=new Tips("查询成功");
m.put("tips", tips);
return m;
}
@ApiOperation( value = "新增一条xm_project_m_budget_cost_user信息",notes="addXmProjectMBudgetCostUser,主键如果为空,后台自动生成")
@ApiResponses({
@ApiResponse(code = 200,response=XmProjectMBudgetCostUser.class,message = "{tips:{isOk:true/false,msg:'成功/失败原因',tipscode:'失败时错误码'},data:数据对象}")
})
@RequestMapping(value="/add",method=RequestMethod.POST)
public Map<String,Object> addXmProjectMBudgetCostUser(@RequestBody XmProjectMBudgetCostUser xmProjectMBudgetCostUser) {
Map<String,Object> m = new HashMap<>();
Tips tips=new Tips("成功新增一条数据");
try{
if(StringUtils.isEmpty(xmProjectMBudgetCostUser.getId())) {
xmProjectMBudgetCostUser.setId(xmProjectMBudgetCostUserService.createKey("id"));
}else{
XmProjectMBudgetCostUser xmProjectMBudgetCostUserQuery = new XmProjectMBudgetCostUser(xmProjectMBudgetCostUser.getId());
if(xmProjectMBudgetCostUserService.countByWhere(xmProjectMBudgetCostUserQuery)>0){
tips.setFailureMsg("编号重复,请修改编号再提交");
m.put("tips", tips);
return m;
}
}
String projectId=xmProjectMBudgetCostUser.getProjectId();
BigDecimal zero=BigDecimal.ZERO;
BigDecimal budgetCostUser=NumberUtil.getBigDecimal(xmProjectMBudgetCostUser.getBudgetCost(),zero);
BigDecimal addBudgetCostIuserAt=BigDecimal.ZERO;
BigDecimal addBudgetCostOuserAt=BigDecimal.ZERO;
if("1".equals(xmProjectMBudgetCostUser.getCostType())) {
addBudgetCostIuserAt=budgetCostUser;
}else {
addBudgetCostOuserAt=budgetCostUser;
}
Tips judgetTips=xmProjectMBudgetCostUserService.judgetBudget(projectId,budgetCostUser, addBudgetCostIuserAt, addBudgetCostOuserAt,null);
if(judgetTips.isOk()) {
xmProjectMBudgetCostUserService.insert(xmProjectMBudgetCostUser);
xmRecordService.addXmBudgetRecord(projectId, xmProjectMBudgetCostUser.getId(), "项目-预算-人力-增加", "增加预算"+xmProjectMBudgetCostUser.getBudgetCost(),JSON.toJSONString(xmProjectMBudgetCostUser),null);
m.put("data",xmProjectMBudgetCostUser);
}else {
tips=judgetTips;
}
}catch (BizException e) {
tips=e.getTips();
logger.error("",e);
}catch (Exception e) {
tips.setFailureMsg(e.getMessage());
logger.error("",e);
}
m.put("tips", tips);
return m;
}
@ApiOperation( value = "删除一条xm_project_m_budget_cost_user信息",notes="delXmProjectMBudgetCostUser,仅需要上传主键字段")
@ApiResponses({
@ApiResponse(code = 200, message = "{tips:{isOk:true/false,msg:'成功/失败原因',tipscode:'失败时错误码'}}")
})
@RequestMapping(value="/del",method=RequestMethod.POST)
public Map<String,Object> delXmProjectMBudgetCostUser(@RequestBody XmProjectMBudgetCostUser xmProjectMBudgetCostUser){
Map<String,Object> m = new HashMap<>();
Tips tips=new Tips("成功删除一条数据");
try{
xmProjectMBudgetCostUserService.deleteByPk(xmProjectMBudgetCostUser);
xmRecordService.addXmBudgetRecord(xmProjectMBudgetCostUser.getProjectId(), xmProjectMBudgetCostUser.getId(), "项目-预算-人力-删除", "删除预算"+xmProjectMBudgetCostUser.getBudgetCost(),JSON.toJSONString(xmProjectMBudgetCostUser),null);
}catch (BizException e) {
tips=e.getTips();
logger.error("",e);
}catch (Exception e) {
tips.setFailureMsg(e.getMessage());
logger.error("",e);
}
m.put("tips", tips);
return m;
}
@ApiOperation( value = "根据主键修改一条xm_project_m_budget_cost_user信息",notes="editXmProjectMBudgetCostUser")
@ApiResponses({
@ApiResponse(code = 200,response=XmProjectMBudgetCostUser.class, message = "{tips:{isOk:true/false,msg:'成功/失败原因',tipscode:'失败时错误码'},data:数据对象}")
})
@RequestMapping(value="/edit",method=RequestMethod.POST)
public Map<String,Object> editXmProjectMBudgetCostUser(@RequestBody XmProjectMBudgetCostUser xmProjectMBudgetCostUser) {
Map<String,Object> m = new HashMap<>();
Tips tips=new Tips("成功更新一条数据");
try{
String projectId=xmProjectMBudgetCostUser.getProjectId();
BigDecimal zero=BigDecimal.ZERO;
BigDecimal budgetCostUser=NumberUtil.getBigDecimal(xmProjectMBudgetCostUser.getBudgetCost(),zero);
BigDecimal addBudgetCostIuserAt=BigDecimal.ZERO;
BigDecimal addBudgetCostOuserAt=BigDecimal.ZERO;
List<String> excludeIds=new ArrayList<>();
excludeIds.add(xmProjectMBudgetCostUser.getId());
if("1".equals(xmProjectMBudgetCostUser.getCostType())) {
addBudgetCostIuserAt=budgetCostUser;
}else {
addBudgetCostOuserAt=budgetCostUser;
}
Tips judgetTips=xmProjectMBudgetCostUserService.judgetBudget(projectId, budgetCostUser,addBudgetCostIuserAt,addBudgetCostOuserAt,excludeIds);
if(judgetTips.isOk()) {
xmProjectMBudgetCostUserService.updateByPk(xmProjectMBudgetCostUser);
xmRecordService.addXmBudgetRecord(xmProjectMBudgetCostUser.getProjectId(), xmProjectMBudgetCostUser.getId(), "项目-预算-人力-修改", "修改预算为"+xmProjectMBudgetCostUser.getBudgetCost(),JSON.toJSONString(xmProjectMBudgetCostUser),null);
m.put("data",xmProjectMBudgetCostUser);
}else {
tips=judgetTips;
}
}catch (BizException e) {
tips=e.getTips();
logger.error("",e);
}catch (Exception e) {
tips.setFailureMsg(e.getMessage());
logger.error("",e);
}
m.put("tips", tips);
return m;
}
@ApiOperation( value = "根据主键列表批量删除xm_project_m_budget_cost_user信息",notes="batchDelXmProjectMBudgetCostUser,仅需要上传主键字段")
@ApiResponses({
@ApiResponse(code = 200, message = "{tips:{isOk:true/false,msg:'成功/失败原因',tipscode:'失败时错误码'}")
})
@RequestMapping(value="/batchDel",method=RequestMethod.POST)
public Map<String,Object> batchDelXmProjectMBudgetCostUser(@RequestBody List<XmProjectMBudgetCostUser> xmProjectMBudgetCostUsers) {
Map<String,Object> m = new HashMap<>();
Tips tips=new Tips("成功删除"+xmProjectMBudgetCostUsers.size()+"条数据");
try{
xmProjectMBudgetCostUserService.batchDelete(xmProjectMBudgetCostUsers);
for (XmProjectMBudgetCostUser xmProjectMBudgetCostUser : xmProjectMBudgetCostUsers) {
xmRecordService.addXmBudgetRecord(xmProjectMBudgetCostUser.getProjectId(), xmProjectMBudgetCostUser.getId(), "项目-预算-人力-删除", "删除预算额"+xmProjectMBudgetCostUser.getBudgetCost(),JSON.toJSONString(xmProjectMBudgetCostUser),null);
}
}catch (BizException e) {
tips=e.getTips();
logger.error("",e);
}catch (Exception e) {
tips.setFailureMsg(e.getMessage());
logger.error("",e);
}
m.put("tips", tips);
return m;
}
/***/
@ApiOperation( value = "批量修改",notes="batchEdit")
@ApiResponses({
@ApiResponse(code = 200, message = "{tips:{isOk:true/false,msg:'成功/失败原因',tipscode:'失败时错误码'}")
})
@RequestMapping(value="/batchEdit",method=RequestMethod.POST)
public Map<String,Object> batchEditXmProjectMBudgetCostUser(@RequestBody List<XmProjectMBudgetCostUser> xmProjectMBudgetCostUsers) {
Map<String,Object> m = new HashMap<>();
Tips tips=new Tips("成功修改"+xmProjectMBudgetCostUsers.size()+"条数据");
try{
BigDecimal budgetCostUser=BigDecimal.ZERO;
BigDecimal budgetCostInserUser=BigDecimal.ZERO;
BigDecimal budgetCostUserOuser=BigDecimal.ZERO;
String projectId=null;
BigDecimal zero=BigDecimal.ZERO;
List<String> excludeIds=new ArrayList<>();
for (XmProjectMBudgetCostUser costUser : xmProjectMBudgetCostUsers) {
excludeIds.add(costUser.getId());
projectId=costUser.getProjectId();
BigDecimal add=NumberUtil.getBigDecimal(costUser.getBudgetCost(),zero);
budgetCostUser=budgetCostUser.add(NumberUtil.getBigDecimal(costUser.getBudgetCost(),zero));
if("1".equals(costUser.getCostType())) {
budgetCostInserUser=budgetCostInserUser.add(add);
}else {
budgetCostUserOuser=budgetCostUserOuser.add(add);
}
}
Tips judgetTips=xmProjectMBudgetCostUserService.judgetBudget(projectId, budgetCostUser,budgetCostInserUser,budgetCostUserOuser,excludeIds);
if(judgetTips.isOk()) {
xmProjectMBudgetCostUserService.batchUpdate(xmProjectMBudgetCostUsers);
for (XmProjectMBudgetCostUser xmProjectMBudgetCostUser : xmProjectMBudgetCostUsers) {
xmRecordService.addXmBudgetRecord(xmProjectMBudgetCostUser.getProjectId(), xmProjectMBudgetCostUser.getId(), "项目-预算-人力-修改", "修改预算额"+xmProjectMBudgetCostUser.getBudgetCost(),JSON.toJSONString(xmProjectMBudgetCostUser),null);
}
m.put("data", xmProjectMBudgetCostUsers);
}else {
tips=judgetTips;
}
}catch (BizException e) {
tips=e.getTips();
logger.error("",e);
}catch (Exception e) {
tips.setFailureMsg(e.getMessage());
logger.error("",e);
}
m.put("tips", tips);
return m;
}
/***/
@ApiOperation( value = "批量新增",notes="batchAddXmProjectMCostUser")
@ApiResponses({
@ApiResponse(code = 200, message = "{tips:{isOk:true/false,msg:'成功/失败原因',tipscode:'失败时错误码'}")
})
@RequestMapping(value="/batchAdd",method=RequestMethod.POST)
public Map<String,Object> batchAddXmProjectMBudgetCostUser(@RequestBody List<XmProjectMBudgetCostUser> xmProjectMBudgetCostUsers) {
Map<String,Object> m = new HashMap<>();
Tips tips=new Tips("成功增加"+xmProjectMBudgetCostUsers.size()+"条数据");
try{
xmProjectMBudgetCostUsers.forEach(g->{
g.setId(xmProjectMBudgetCostUserService.createKey("id"));
});
BigDecimal budgetCostUser=BigDecimal.ZERO;
BigDecimal budgetCostInserUser=BigDecimal.ZERO;
BigDecimal budgetCostUserOuser=BigDecimal.ZERO;
String projectId=null;
BigDecimal zero=BigDecimal.ZERO;
for (XmProjectMBudgetCostUser costUser : xmProjectMBudgetCostUsers) {
projectId=costUser.getProjectId();
BigDecimal add=NumberUtil.getBigDecimal(costUser.getBudgetCost(),zero);
budgetCostUser=budgetCostUser.add(NumberUtil.getBigDecimal(costUser.getBudgetCost(),zero));
if("1".equals(costUser.getCostType())) {
budgetCostInserUser=budgetCostInserUser.add(add);
}else {
budgetCostUserOuser=budgetCostUserOuser.add(add);
}
}
Tips judgetTips=xmProjectMBudgetCostUserService.judgetBudget(projectId, budgetCostUser,budgetCostInserUser,budgetCostUserOuser,null);
if(judgetTips.isOk()) {
xmProjectMBudgetCostUserService.batchInsert(xmProjectMBudgetCostUsers);
for (XmProjectMBudgetCostUser xmProjectMBudgetCostUser : xmProjectMBudgetCostUsers) {
xmRecordService.addXmBudgetRecord(xmProjectMBudgetCostUser.getProjectId(), xmProjectMBudgetCostUser.getId(), "项目-预算-人力-增加", "增加预算额"+xmProjectMBudgetCostUser.getBudgetCost(),JSON.toJSONString(xmProjectMBudgetCostUser),null);
}
m.put("data", xmProjectMBudgetCostUsers);
}else {
tips=judgetTips;
}
}catch (BizException e) {
tips=e.getTips();
logger.error("",e);
}catch (Exception e) {
tips.setFailureMsg(e.getMessage());
logger.error("",e);
}
m.put("tips", tips);
return m;
}
/**
* 流程审批过程中回调该接口更新业务数据
* 如果发起流程时上送了restUrl则无论流程中是否配置了监听器都会在流程发生以下事件时推送数据过来
* eventName: PROCESS_STARTED 流程启动完成 全局
* PROCESS_COMPLETED 流程正常结束 全局
* PROCESS_CANCELLED 流程删除 全局
* create 人工任务启动
* complete 人工任务完成
* assignment 人工任务分配给了具体的人
* delete 人工任务被删除
*
* 其中 create/complete/assignment/delete事件是需要在模型中人工节点上配置了委托代理表达式 ${taskBizCallListener}才会推送过来
* 在人工任务节点上配置 任务监听器 建议事件为 complete,其它assignment/create/complete/delete也可以一般建议在complete,委托代理表达式 ${taskBizCallListener}
*
* @param flowVars {flowBranchId,agree,procInstId,assignee,actId,taskName,mainTitle,branchId,bizKey,commentMsg,eventName,modelKey}
* @return 如果tips.isOk==false将影响流程提交
**/
@AuditLog(firstMenu="办公平台",secondMenu="项目成本",func="processApprova",funcDesc="人力成本结算流程审批",operType=OperType.UPDATE)
@RequestMapping(value="/processApprova",method=RequestMethod.POST)
public Map<String,Object> processApprova( @RequestBody Map<String,Object> flowVars){
Map<String,Object> m = new HashMap<>();
Tips tips=new Tips("成功新增一条数据");
try{
this.xmProjectMBudgetCostUserService.processApprova(flowVars);
logger.debug("procInstId====="+flowVars.get("procInstId"));
}catch (BizException e) {
tips=e.getTips();
logger.error("执行异常",e);
}catch (Exception e) {
tips.setFailureMsg(e.getMessage());
logger.error("执行异常",e);
}
m.put("tips", tips);
return m;
}
}

343
xm-core/src/main/java/com/xm/core/ctrl/XmProjectMCostNouserController.java

@ -1,343 +0,0 @@
package com.xm.core.ctrl;
import com.alibaba.fastjson.JSON;
import com.mdp.audit.log.client.annotation.AuditLog;
import com.mdp.audit.log.client.annotation.OperType;
import com.mdp.core.entity.Tips;
import com.mdp.core.err.BizException;
import com.mdp.core.utils.NumberUtil;
import com.mdp.core.utils.RequestUtils;
import com.mdp.mybatis.PageUtils;
import com.xm.core.entity.XmProjectMCostNouser;
import com.xm.core.service.XmProjectMCostNouserService;
import com.xm.core.service.XmRecordService;
import io.swagger.annotations.*;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.*;
import springfox.documentation.annotations.ApiIgnore;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* url编制采用rest风格,如对XM.xm_project_m_cost_nouser xm_project_m_cost_nouser的操作有增删改查,对应的url分别为:<br>
* 新增: xm/xmProjectMCostNouser/add <br>
* 查询: xm/xmProjectMCostNouser/list<br>
* 模糊查询: xm/xmProjectMCostNouser/listKey<br>
* 修改: xm/xmProjectMCostNouser/edit <br>
* 删除: xm/xmProjectMCostNouser/del<br>
* 批量删除: xm/xmProjectMCostNouser/batchDel<br>
* 组织 com.qqkj 顶级模块 oa 大模块 xm 小模块 <br>
* 实体 XmProjectMCostNouser XM.xm_project_m_cost_nouser 当前主键(包括多主键): id;
***/
@RestController("xm.core.xmProjectMCostNouserController")
@RequestMapping(value="/**/xm/core/xmProjectMCostNouser")
@Api(tags={"xm_project_m_cost_nouser操作接口"})
public class XmProjectMCostNouserController {
static Log logger=LogFactory.getLog(XmProjectMCostNouserController.class);
@Autowired
private XmProjectMCostNouserService xmProjectMCostNouserService;
@Autowired
XmRecordService xmRecordService;
@ApiOperation( value = "查询xm_project_m_cost_nouser信息列表",notes="listXmProjectMCostNouser,条件之间是 and关系,模糊查询写法如 {studentName:'%才哥%'}")
@ApiImplicitParams({
@ApiImplicitParam(name="id",value="主键,主键",required=false),
@ApiImplicitParam(name="projectId",value="项目编号",required=false),
@ApiImplicitParam(name="userid",value="用户编号",required=false),
@ApiImplicitParam(name="createTime",value="创建时间",required=false),
@ApiImplicitParam(name="sendCostTime",value="费用发放时间",required=false),
@ApiImplicitParam(name="username",value="用户名称",required=false),
@ApiImplicitParam(name="projectName",value="项目名称",required=false),
@ApiImplicitParam(name="remark",value="备注",required=false),
@ApiImplicitParam(name="taskId",value="任务编号",required=false),
@ApiImplicitParam(name="taskName",value="任务名称",required=false),
@ApiImplicitParam(name="subjectId",value="科目编号",required=false),
@ApiImplicitParam(name="bizzStartDate",value="费用归属周期开始日期",required=false),
@ApiImplicitParam(name="bizzEndDate",value="费用归属周期结束日期",required=false),
@ApiImplicitParam(name="bizProcInstId",value="当前流程实例编号",required=false),
@ApiImplicitParam(name="bizFlowState",value="当前流程状态0初始1审批中2审批通过3审批不通过4流程取消或者删除",required=false),
@ApiImplicitParam(name="phaseId",value="项目计划计划编号",required=false),
@ApiImplicitParam(name="actCostAmount",value="实际成本金额",required=false),
@ApiImplicitParam(name="costType",value="成本类型0非人力1内部人力2外购人力",required=false),
@ApiImplicitParam(name="bizMonth",value="业务归属月份yyyy-mm",required=false),
@ApiImplicitParam(name="bizDate",value="业务归属日期yyyy-mm-dd",required=false),
@ApiImplicitParam(name="pageSize",value="每页记录数",required=false),
@ApiImplicitParam(name="pageNum",value="当前页码,从1开始",required=false),
@ApiImplicitParam(name="total",value="总记录数,服务器端收到0时,会自动计算总记录数,如果上传>0的不自动计算",required=false),
@ApiImplicitParam(name="orderBy",value="排序列 如性别、学生编号排序 orderBy = sex desc,student_id desc",required=false),
@ApiImplicitParam(name="count",value="是否进行总条数计算,count=true|false",required=false)
})
@ApiResponses({
@ApiResponse(code = 200,response= XmProjectMCostNouser.class,message = "{tips:{isOk:true/false,msg:'成功/失败原因',tipscode:'错误码'},total:总记录数,data:[数据对象1,数据对象2,...]}")
})
@RequestMapping(value="/list",method=RequestMethod.GET)
public Map<String,Object> listXmProjectMCostNouser( @ApiIgnore @RequestParam Map<String,Object> xmProjectMCostNouser){
Map<String,Object> m = new HashMap<>();
RequestUtils.transformArray(xmProjectMCostNouser, "ids");
PageUtils.startPage(xmProjectMCostNouser);
List<Map<String,Object>> xmProjectMCostNouserList = xmProjectMCostNouserService.selectListMapByWhere(xmProjectMCostNouser); //列出XmProjectMCostNouser列表
PageUtils.responePage(m, xmProjectMCostNouserList);
m.put("data",xmProjectMCostNouserList);
Tips tips=new Tips("查询成功");
m.put("tips", tips);
return m;
}
@ApiResponses({
@ApiResponse(code = 200,response=XmProjectMCostNouser.class,message = "{tips:{isOk:true/false,msg:'成功/失败原因',tipscode:'错误码'},total:总记录数,data:[数据对象1,数据对象2,...]}")
})
@RequestMapping(value="/listSum",method=RequestMethod.GET)
public Map<String,Object> listSum( @ApiIgnore @RequestParam Map<String,Object> xmProjectMCostNouser){
Map<String,Object> m = new HashMap<>();
RequestUtils.transformArray(xmProjectMCostNouser, "ids");
PageUtils.startPage(xmProjectMCostNouser);
List<Map<String,Object>> xmProjectMCostNouserList = xmProjectMCostNouserService.listSum(xmProjectMCostNouser); //列出xmProjectMCostNouser列表
PageUtils.responePage(m, xmProjectMCostNouserList);
m.put("data",xmProjectMCostNouserList);
Tips tips=new Tips("查询成功");
m.put("tips", tips);
return m;
}
/**
* 流程审批过程中回调该接口更新业务数据
* 如果发起流程时上送了restUrl则无论流程中是否配置了监听器都会在流程发生以下事件时推送数据过来
* eventName: PROCESS_STARTED 流程启动完成 全局
* PROCESS_COMPLETED 流程正常结束 全局
* PROCESS_CANCELLED 流程删除 全局
* create 人工任务启动
* complete 人工任务完成
* assignment 人工任务分配给了具体的人
* delete 人工任务被删除
*
* 其中 create/complete/assignment/delete事件是需要在模型中人工节点上配置了委托代理表达式 ${taskBizCallListener}才会推送过来
* 在人工任务节点上配置 任务监听器 建议事件为 complete,其它assignment/create/complete/delete也可以一般建议在complete,委托代理表达式 ${taskBizCallListener}
*
* @param flowVars {flowBranchId,agree,procInstId,assignee,actId,taskName,mainTitle,branchId,bizKey,commentMsg,eventName,modelKey}
* @return 如果tips.isOk==false将影响流程提交
**/
@AuditLog(firstMenu="办公平台",secondMenu="项目成本",func="processApprova",funcDesc="非人力成本结算流程审批",operType=OperType.UPDATE)
@RequestMapping(value="/processApprova",method=RequestMethod.POST)
public Map<String,Object> processApprova( @RequestBody Map<String,Object> flowVars){
Map<String,Object> m = new HashMap<>();
Tips tips=new Tips("成功新增一条数据");
try{
this.xmProjectMCostNouserService.processApprova(flowVars);
logger.debug("procInstId====="+flowVars.get("procInstId"));
}catch (BizException e) {
tips=e.getTips();
logger.error("执行异常",e);
}catch (Exception e) {
tips.setFailureMsg(e.getMessage());
logger.error("执行异常",e);
}
m.put("tips", tips);
return m;
}
/***/
@ApiOperation( value = "新增一条xm_project_m_cost_nouser信息",notes="addXmProjectMCostNouser,主键如果为空,后台自动生成")
@ApiResponses({
@ApiResponse(code = 200,response=XmProjectMCostNouser.class,message = "{tips:{isOk:true/false,msg:'成功/失败原因',tipscode:'失败时错误码'},data:数据对象}")
})
@RequestMapping(value="/add",method=RequestMethod.POST)
public Map<String,Object> addXmProjectMCostNouser(@RequestBody XmProjectMCostNouser xmProjectMCostNouser) {
Map<String,Object> m = new HashMap<>();
Tips tips=new Tips("成功新增一条数据");
try{
if(StringUtils.isEmpty(xmProjectMCostNouser.getId())) {
xmProjectMCostNouser.setId(xmProjectMCostNouserService.createKey("id"));
}else{
XmProjectMCostNouser xmProjectMCostNouserQuery = new XmProjectMCostNouser(xmProjectMCostNouser.getId());
if(xmProjectMCostNouserService.countByWhere(xmProjectMCostNouserQuery)>0){
tips.setFailureMsg("编号重复,请修改编号再提交");
m.put("tips", tips);
return m;
}
}
xmProjectMCostNouserService.insert(xmProjectMCostNouser);
m.put("data",xmProjectMCostNouser);
}catch (BizException e) {
tips=e.getTips();
logger.error("",e);
}catch (Exception e) {
tips.setFailureMsg(e.getMessage());
logger.error("",e);
}
m.put("tips", tips);
return m;
}
/** */
@ApiOperation( value = "删除一条xm_project_m_cost_nouser信息",notes="delXmProjectMCostNouser,仅需要上传主键字段")
@ApiResponses({
@ApiResponse(code = 200, message = "{tips:{isOk:true/false,msg:'成功/失败原因',tipscode:'失败时错误码'}}")
})
@RequestMapping(value="/del",method=RequestMethod.POST)
public Map<String,Object> delXmProjectMCostNouser(@RequestBody XmProjectMCostNouser xmProjectMCostNouser){
Map<String,Object> m = new HashMap<>();
Tips tips=new Tips("成功删除一条数据");
try{
xmProjectMCostNouserService.deleteByPk(xmProjectMCostNouser);
}catch (BizException e) {
tips=e.getTips();
logger.error("",e);
}catch (Exception e) {
tips.setFailureMsg(e.getMessage());
logger.error("",e);
}
m.put("tips", tips);
return m;
}
/***/
@ApiOperation( value = "根据主键修改一条xm_project_m_cost_nouser信息",notes="editXmProjectMCostNouser")
@ApiResponses({
@ApiResponse(code = 200,response=XmProjectMCostNouser.class, message = "{tips:{isOk:true/false,msg:'成功/失败原因',tipscode:'失败时错误码'},data:数据对象}")
})
@RequestMapping(value="/edit",method=RequestMethod.POST)
public Map<String,Object> editXmProjectMCostNouser(@RequestBody XmProjectMCostNouser xmProjectMCostNouser) {
Map<String,Object> m = new HashMap<>();
Tips tips=new Tips("成功更新一条数据");
try{
xmProjectMCostNouserService.updateByPk(xmProjectMCostNouser);
m.put("data",xmProjectMCostNouser);
}catch (BizException e) {
tips=e.getTips();
logger.error("",e);
}catch (Exception e) {
tips.setFailureMsg(e.getMessage());
logger.error("",e);
}
m.put("tips", tips);
return m;
}
/***/
@ApiOperation( value = "根据主键列表批量删除xm_project_m_cost_nouser信息",notes="batchDelXmProjectMCostNouser,仅需要上传主键字段")
@ApiResponses({
@ApiResponse(code = 200, message = "{tips:{isOk:true/false,msg:'成功/失败原因',tipscode:'失败时错误码'}")
})
@RequestMapping(value="/batchDel",method=RequestMethod.POST)
public Map<String,Object> batchDelXmProjectMCostNouser(@RequestBody List<XmProjectMCostNouser> xmProjectMCostNousers) {
Map<String,Object> m = new HashMap<>();
Tips tips=new Tips("成功删除"+xmProjectMCostNousers.size()+"条数据");
try{
xmProjectMCostNouserService.batchDelete(xmProjectMCostNousers);
}catch (BizException e) {
tips=e.getTips();
logger.error("",e);
}catch (Exception e) {
tips.setFailureMsg(e.getMessage());
logger.error("",e);
}
m.put("tips", tips);
return m;
}
/***/
@ApiOperation( value = "批量修改",notes="batchEdit")
@ApiResponses({
@ApiResponse(code = 200, message = "{tips:{isOk:true/false,msg:'成功/失败原因',tipscode:'失败时错误码'}")
})
@RequestMapping(value="/batchEdit",method=RequestMethod.POST)
public Map<String,Object> batchEditXmProjectMCostNouser(@RequestBody List<XmProjectMCostNouser> xmProjectMCostNousers) {
Map<String,Object> m = new HashMap<>();
Tips tips=new Tips("成功新增"+xmProjectMCostNousers.size()+"条数据");
try{
xmProjectMCostNousers.forEach(g->{
g.setId(xmProjectMCostNouserService.createKey("id"));
});
BigDecimal budgetCostUser=BigDecimal.ZERO;
String projectId=null;
BigDecimal zero=BigDecimal.ZERO;
List<String> excludeIds=new ArrayList<>();
for (XmProjectMCostNouser costUser : xmProjectMCostNousers) {
excludeIds.add(costUser.getId());
projectId=costUser.getProjectId();
budgetCostUser=budgetCostUser.add(NumberUtil.getBigDecimal(costUser.getActCostAmount(),zero));
}
Tips judgetTips=xmProjectMCostNouserService.judgetBudget(projectId, budgetCostUser,excludeIds);
if(judgetTips.isOk()) {
xmProjectMCostNouserService.batchUpdate(xmProjectMCostNousers);
for (XmProjectMCostNouser xmProjectMCostNouser : xmProjectMCostNousers) {
xmRecordService.addXmCostRecord(xmProjectMCostNouser.getProjectId(), xmProjectMCostNouser.getId(), "项目-成本-非人力-修改", "修改成本额"+xmProjectMCostNouser.getActCostAmount(),JSON.toJSONString(xmProjectMCostNouser),null);
}
m.put("data", xmProjectMCostNousers);
}else {
tips=judgetTips;
}
}catch (BizException e) {
tips=e.getTips();
logger.error("",e);
}catch (Exception e) {
tips.setFailureMsg(e.getMessage());
logger.error("",e);
}
m.put("tips", tips);
return m;
}
/***/
@ApiOperation( value = "批量新增",notes="batchAddXmProjectMCostNouser")
@ApiResponses({
@ApiResponse(code = 200, message = "{tips:{isOk:true/false,msg:'成功/失败原因',tipscode:'失败时错误码'}")
})
@RequestMapping(value="/batchAdd",method=RequestMethod.POST)
public Map<String,Object> batchAddXmProjectMCostNouser(@RequestBody List<XmProjectMCostNouser> xmProjectMCostNousers) {
Map<String,Object> m = new HashMap<>();
Tips tips=new Tips("成功新增"+xmProjectMCostNousers.size()+"条数据");
try{
xmProjectMCostNousers.forEach(g->{
g.setId(xmProjectMCostNouserService.createKey("id"));
});
BigDecimal budgetCostUser=BigDecimal.ZERO;
String projectId=null;
BigDecimal zero=BigDecimal.ZERO;
for (XmProjectMCostNouser costUser : xmProjectMCostNousers) {
projectId=costUser.getProjectId();
budgetCostUser=budgetCostUser.add(NumberUtil.getBigDecimal(costUser.getActCostAmount(),zero));
}
Tips judgetTips=xmProjectMCostNouserService.judgetBudget(projectId, budgetCostUser,null);
if(judgetTips.isOk()) {
xmProjectMCostNouserService.batchInsert(xmProjectMCostNousers);
for (XmProjectMCostNouser xmProjectMCostNouser : xmProjectMCostNousers) {
xmRecordService.addXmCostRecord(xmProjectMCostNouser.getProjectId(), xmProjectMCostNouser.getId(), "项目-成本-非人力-增加", "增加成本额"+xmProjectMCostNouser.getActCostAmount(),JSON.toJSONString(xmProjectMCostNouser),null);
}
m.put("data", xmProjectMCostNousers);
}else {
tips=judgetTips;
}
}catch (BizException e) {
tips=e.getTips();
logger.error("",e);
}catch (Exception e) {
tips.setFailureMsg(e.getMessage());
logger.error("",e);
}
m.put("tips", tips);
return m;
}
}

360
xm-core/src/main/java/com/xm/core/ctrl/XmProjectMCostUserController.java

@ -1,360 +0,0 @@
package com.xm.core.ctrl;
import com.alibaba.fastjson.JSON;
import com.mdp.audit.log.client.annotation.AuditLog;
import com.mdp.audit.log.client.annotation.OperType;
import com.mdp.core.entity.Tips;
import com.mdp.core.err.BizException;
import com.mdp.core.utils.NumberUtil;
import com.mdp.core.utils.RequestUtils;
import com.mdp.mybatis.PageUtils;
import com.xm.core.entity.XmProjectMBudgetCostNouser;
import com.xm.core.entity.XmProjectMCostUser;
import com.xm.core.service.XmProjectMCostUserService;
import com.xm.core.service.XmRecordService;
import io.swagger.annotations.*;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.*;
import springfox.documentation.annotations.ApiIgnore;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* url编制采用rest风格,如对XM.xm_project_m_cost_user xm_project_m_cost_user的操作有增删改查,对应的url分别为:<br>
* 新增: xm/xmProjectMCostUser/add <br>
* 查询: xm/xmProjectMCostUser/list<br>
* 模糊查询: xm/xmProjectMCostUser/listKey<br>
* 修改: xm/xmProjectMCostUser/edit <br>
* 删除: xm/xmProjectMCostUser/del<br>
* 批量删除: xm/xmProjectMCostUser/batchDel<br>
* 组织 com.qqkj 顶级模块 oa 大模块 xm 小模块 <br>
* 实体 XmProjectMCostUser XM.xm_project_m_cost_user 当前主键(包括多主键): id;
***/
@RestController("xm.core.xmProjectMCostUserController")
@RequestMapping(value="/**/xm/core/xmProjectMCostUser")
@Api(tags={"xm_project_m_cost_user操作接口"})
public class XmProjectMCostUserController {
static Log logger=LogFactory.getLog(XmProjectMCostUserController.class);
@Autowired
private XmProjectMCostUserService xmProjectMCostUserService;
@Autowired
XmRecordService xmRecordService;
@ApiOperation( value = "查询xm_project_m_cost_user信息列表",notes="listXmProjectMCostUser,条件之间是 and关系,模糊查询写法如 {studentName:'%才哥%'}")
@ApiImplicitParams({
@ApiImplicitParam(name="id",value="主键,主键",required=false),
@ApiImplicitParam(name="subjectId",value="科目编号",required=false),
@ApiImplicitParam(name="projectId",value="项目编号",required=false),
@ApiImplicitParam(name="userid",value="用户编号",required=false),
@ApiImplicitParam(name="createTime",value="创建时间",required=false),
@ApiImplicitParam(name="sendCostTime",value="费用发放时间",required=false),
@ApiImplicitParam(name="username",value="用户名称",required=false),
@ApiImplicitParam(name="projectName",value="项目名称",required=false),
@ApiImplicitParam(name="remark",value="备注",required=false),
@ApiImplicitParam(name="taskId",value="任务编号",required=false),
@ApiImplicitParam(name="taskName",value="任务名称",required=false),
@ApiImplicitParam(name="actWorkload",value="实际工时",required=false),
@ApiImplicitParam(name="bizzStartDate",value="费用归属周期开始日期",required=false),
@ApiImplicitParam(name="bizzEndDate",value="费用归属周期结束日期",required=false),
@ApiImplicitParam(name="bizProcInstId",value="当前流程实例编号",required=false),
@ApiImplicitParam(name="bizFlowState",value="当前流程状态0初始1审批中2审批通过3审批不通过4流程取消或者删除",required=false),
@ApiImplicitParam(name="phaseId",value="项目计划计划编号",required=false),
@ApiImplicitParam(name="actCostAmount",value="金额",required=false),
@ApiImplicitParam(name="costType",value="成本类型0非人力1内部人力2外购人力",required=false),
@ApiImplicitParam(name="bizMonth",value="业务归属月份yyyy-mm",required=false),
@ApiImplicitParam(name="bizDate",value="业务归属日期yyyy-mm-dd",required=false),
@ApiImplicitParam(name="pageSize",value="每页记录数",required=false),
@ApiImplicitParam(name="pageNum",value="当前页码,从1开始",required=false),
@ApiImplicitParam(name="total",value="总记录数,服务器端收到0时,会自动计算总记录数,如果上传>0的不自动计算",required=false),
@ApiImplicitParam(name="orderBy",value="排序列 如性别、学生编号排序 orderBy = sex desc,student_id desc",required=false),
@ApiImplicitParam(name="count",value="是否进行总条数计算,count=true|false",required=false)
})
@ApiResponses({
@ApiResponse(code = 200,response= XmProjectMCostUser.class,message = "{tips:{isOk:true/false,msg:'成功/失败原因',tipscode:'错误码'},total:总记录数,data:[数据对象1,数据对象2,...]}")
})
@RequestMapping(value="/list",method=RequestMethod.GET)
public Map<String,Object> listXmProjectMCostUser( @ApiIgnore @RequestParam Map<String,Object> xmProjectMCostUser){
Map<String,Object> m = new HashMap<>();
RequestUtils.transformArray(xmProjectMCostUser, "ids");
PageUtils.startPage(xmProjectMCostUser);
List<Map<String,Object>> xmProjectMCostUserList = xmProjectMCostUserService.selectListMapByWhere(xmProjectMCostUser); //列出XmProjectMCostUser列表
PageUtils.responePage(m, xmProjectMCostUserList);
m.put("data",xmProjectMCostUserList);
Tips tips=new Tips("查询成功");
m.put("tips", tips);
return m;
}
@ApiResponses({
@ApiResponse(code = 200,response= XmProjectMBudgetCostNouser.class,message = "{tips:{isOk:true/false,msg:'成功/失败原因',tipscode:'错误码'},total:总记录数,data:[数据对象1,数据对象2,...]}")
})
@RequestMapping(value="/listSum",method=RequestMethod.GET)
public Map<String,Object> listSum( @ApiIgnore @RequestParam Map<String,Object> xmProjectMCostUser){
Map<String,Object> m = new HashMap<>();
RequestUtils.transformArray(xmProjectMCostUser, "ids");
PageUtils.startPage(xmProjectMCostUser);
List<Map<String,Object>> xmProjectMCostUserList = xmProjectMCostUserService.listSum(xmProjectMCostUser); //列出xmProjectMBudgetCostNouser列表
PageUtils.responePage(m, xmProjectMCostUserList);
m.put("data",xmProjectMCostUserList);
Tips tips=new Tips("查询成功");
m.put("tips", tips);
return m;
}
/***/
@ApiOperation( value = "新增一条xm_project_m_cost_user信息",notes="addXmProjectMCostUser,主键如果为空,后台自动生成")
@ApiResponses({
@ApiResponse(code = 200,response=XmProjectMCostUser.class,message = "{tips:{isOk:true/false,msg:'成功/失败原因',tipscode:'失败时错误码'},data:数据对象}")
})
@RequestMapping(value="/add",method=RequestMethod.POST)
public Map<String,Object> addXmProjectMCostUser(@RequestBody XmProjectMCostUser xmProjectMCostUser) {
Map<String,Object> m = new HashMap<>();
Tips tips=new Tips("成功新增一条数据");
try{
if(StringUtils.isEmpty(xmProjectMCostUser.getId())) {
xmProjectMCostUser.setId(xmProjectMCostUserService.createKey("id"));
}else{
XmProjectMCostUser xmProjectMCostUserQuery = new XmProjectMCostUser(xmProjectMCostUser.getId());
if(xmProjectMCostUserService.countByWhere(xmProjectMCostUserQuery)>0){
tips.setFailureMsg("编号重复,请修改编号再提交");
m.put("tips", tips);
return m;
}
}
xmProjectMCostUserService.insert(xmProjectMCostUser);
m.put("data",xmProjectMCostUser);
}catch (BizException e) {
tips=e.getTips();
logger.error("",e);
}catch (Exception e) {
tips.setFailureMsg(e.getMessage());
logger.error("",e);
}
m.put("tips", tips);
return m;
}
/***/
@ApiOperation( value = "删除一条xm_project_m_cost_user信息",notes="delXmProjectMCostUser,仅需要上传主键字段")
@ApiResponses({
@ApiResponse(code = 200, message = "{tips:{isOk:true/false,msg:'成功/失败原因',tipscode:'失败时错误码'}}")
})
@RequestMapping(value="/del",method=RequestMethod.POST)
public Map<String,Object> delXmProjectMCostUser(@RequestBody XmProjectMCostUser xmProjectMCostUser){
Map<String,Object> m = new HashMap<>();
Tips tips=new Tips("成功删除一条数据");
try{
xmProjectMCostUserService.deleteByPk(xmProjectMCostUser);
}catch (BizException e) {
tips=e.getTips();
logger.error("",e);
}catch (Exception e) {
tips.setFailureMsg(e.getMessage());
logger.error("",e);
}
m.put("tips", tips);
return m;
}
/***/
@ApiOperation( value = "根据主键修改一条xm_project_m_cost_user信息",notes="editXmProjectMCostUser")
@ApiResponses({
@ApiResponse(code = 200,response=XmProjectMCostUser.class, message = "{tips:{isOk:true/false,msg:'成功/失败原因',tipscode:'失败时错误码'},data:数据对象}")
})
@RequestMapping(value="/edit",method=RequestMethod.POST)
public Map<String,Object> editXmProjectMCostUser(@RequestBody XmProjectMCostUser xmProjectMCostUser) {
Map<String,Object> m = new HashMap<>();
Tips tips=new Tips("成功更新一条数据");
try{
xmProjectMCostUserService.updateByPk(xmProjectMCostUser);
m.put("data",xmProjectMCostUser);
}catch (BizException e) {
tips=e.getTips();
logger.error("",e);
}catch (Exception e) {
tips.setFailureMsg(e.getMessage());
logger.error("",e);
}
m.put("tips", tips);
return m;
}
/***/
@ApiOperation( value = "根据主键列表批量删除xm_project_m_cost_user信息",notes="batchDelXmProjectMCostUser,仅需要上传主键字段")
@ApiResponses({
@ApiResponse(code = 200, message = "{tips:{isOk:true/false,msg:'成功/失败原因',tipscode:'失败时错误码'}")
})
@RequestMapping(value="/batchDel",method=RequestMethod.POST)
public Map<String,Object> batchDelXmProjectMCostUser(@RequestBody List<XmProjectMCostUser> xmProjectMCostUsers) {
Map<String,Object> m = new HashMap<>();
Tips tips=new Tips("成功删除"+xmProjectMCostUsers.size()+"条数据");
try{
xmProjectMCostUserService.batchDelete(xmProjectMCostUsers);
}catch (BizException e) {
tips=e.getTips();
logger.error("",e);
}catch (Exception e) {
tips.setFailureMsg(e.getMessage());
logger.error("",e);
}
m.put("tips", tips);
return m;
}
/***/
@ApiOperation( value = "批量修改",notes="batchEdit")
@ApiResponses({
@ApiResponse(code = 200, message = "{tips:{isOk:true/false,msg:'成功/失败原因',tipscode:'失败时错误码'}")
})
@RequestMapping(value="/batchEdit",method=RequestMethod.POST)
public Map<String,Object> batchEditXmProjectMCostUser(@RequestBody List<XmProjectMCostUser> xmProjectMCostUsers) {
Map<String,Object> m = new HashMap<>();
Tips tips=new Tips("成功修改"+xmProjectMCostUsers.size()+"条数据");
try{
BigDecimal budgetCostUser=BigDecimal.ZERO;
BigDecimal budgetCostInserUser=BigDecimal.ZERO;
BigDecimal budgetCostUserOuser=BigDecimal.ZERO;
String projectId=null;
BigDecimal zero=BigDecimal.ZERO;
List<String> excludeIds=new ArrayList<>();
for (XmProjectMCostUser costUser : xmProjectMCostUsers) {
excludeIds.add(costUser.getId());
projectId=costUser.getProjectId();
BigDecimal add=NumberUtil.getBigDecimal(costUser.getActCostAmount(),zero);
budgetCostUser=budgetCostUser.add(NumberUtil.getBigDecimal(costUser.getActCostAmount(),zero));
if("1".equals(costUser.getCostType())) {
budgetCostInserUser=budgetCostInserUser.add(add);
}else {
budgetCostUserOuser=budgetCostUserOuser.add(add);
}
}
Tips judgetTips=xmProjectMCostUserService.judgetBudget(projectId, budgetCostUser,budgetCostInserUser,budgetCostUserOuser,excludeIds);
if(judgetTips.isOk()) {
xmProjectMCostUserService.batchUpdate(xmProjectMCostUsers);
for (XmProjectMCostUser xmProjectMBudgetCostUser : xmProjectMCostUsers) {
xmRecordService.addXmCostRecord(xmProjectMBudgetCostUser.getProjectId(), xmProjectMBudgetCostUser.getId(), "项目-成本-人力-修改", "修改成本额"+xmProjectMBudgetCostUser.getActCostAmount(),JSON.toJSONString(xmProjectMBudgetCostUser),null);
}
m.put("data", xmProjectMCostUsers);
}else {
tips=judgetTips;
}
}catch (BizException e) {
tips=e.getTips();
logger.error("",e);
}catch (Exception e) {
tips.setFailureMsg(e.getMessage());
logger.error("",e);
}
m.put("tips", tips);
return m;
}
/***/
@ApiOperation( value = "批量新增",notes="batchAddXmProjectMCostUser")
@ApiResponses({
@ApiResponse(code = 200, message = "{tips:{isOk:true/false,msg:'成功/失败原因',tipscode:'失败时错误码'}")
})
@RequestMapping(value="/batchAdd",method=RequestMethod.POST)
public Map<String,Object> batchAddXmProjectMCostUser(@RequestBody List<XmProjectMCostUser> xmProjectMCostUsers) {
Map<String,Object> m = new HashMap<>();
Tips tips=new Tips("成功增加"+xmProjectMCostUsers.size()+"条数据");
try{
xmProjectMCostUsers.forEach(g->{
g.setId(xmProjectMCostUserService.createKey("id"));
});
BigDecimal budgetCostUser=BigDecimal.ZERO;
BigDecimal budgetCostInserUser=BigDecimal.ZERO;
BigDecimal budgetCostUserOuser=BigDecimal.ZERO;
String projectId=null;
BigDecimal zero=BigDecimal.ZERO;
for (XmProjectMCostUser costUser : xmProjectMCostUsers) {
projectId=costUser.getProjectId();
BigDecimal add=NumberUtil.getBigDecimal(costUser.getActCostAmount(),zero);
budgetCostUser=budgetCostUser.add(NumberUtil.getBigDecimal(costUser.getActCostAmount(),zero));
if("1".equals(costUser.getCostType())) {
budgetCostInserUser=budgetCostInserUser.add(add);
}else {
budgetCostUserOuser=budgetCostUserOuser.add(add);
}
}
Tips judgetTips=xmProjectMCostUserService.judgetBudget(projectId, budgetCostUser,budgetCostInserUser,budgetCostUserOuser,null);
if(judgetTips.isOk()) {
xmProjectMCostUserService.batchInsert(xmProjectMCostUsers);
for (XmProjectMCostUser xmProjectMBudgetCostUser : xmProjectMCostUsers) {
xmRecordService.addXmCostRecord(xmProjectMBudgetCostUser.getProjectId(), xmProjectMBudgetCostUser.getId(), "项目-成本-人力-增加", "增加成本额"+xmProjectMBudgetCostUser.getActCostAmount(),JSON.toJSONString(xmProjectMBudgetCostUser),null);
}
m.put("data", xmProjectMCostUsers);
}else {
tips=judgetTips;
}
}catch (BizException e) {
tips=e.getTips();
logger.error("",e);
}catch (Exception e) {
tips.setFailureMsg(e.getMessage());
logger.error("",e);
}
m.put("tips", tips);
return m;
}
/**
* 流程审批过程中回调该接口更新业务数据
* 如果发起流程时上送了restUrl则无论流程中是否配置了监听器都会在流程发生以下事件时推送数据过来
* eventName: PROCESS_STARTED 流程启动完成 全局
* PROCESS_COMPLETED 流程正常结束 全局
* PROCESS_CANCELLED 流程删除 全局
* create 人工任务启动
* complete 人工任务完成
* assignment 人工任务分配给了具体的人
* delete 人工任务被删除
*
* 其中 create/complete/assignment/delete事件是需要在模型中人工节点上配置了委托代理表达式 ${taskBizCallListener}才会推送过来
* 在人工任务节点上配置 任务监听器 建议事件为 complete,其它assignment/create/complete/delete也可以一般建议在complete,委托代理表达式 ${taskBizCallListener}
*
* @param flowVars {flowBranchId,agree,procInstId,assignee,actId,taskName,mainTitle,branchId,bizKey,commentMsg,eventName,modelKey}
* @return 如果tips.isOk==false将影响流程提交
**/
@AuditLog(firstMenu="办公平台",secondMenu="项目成本",func="processApprova",funcDesc="人力成本结算审批",operType=OperType.UPDATE)
@RequestMapping(value="/processApprova",method=RequestMethod.POST)
public Map<String,Object> processApprova( @RequestBody Map<String,Object> flowVars){
Map<String,Object> m = new HashMap<>();
Tips tips=new Tips("成功新增一条数据");
try{
this.xmProjectMCostUserService.processApprova(flowVars);
logger.debug("procInstId====="+flowVars.get("procInstId"));
}catch (BizException e) {
tips=e.getTips();
logger.error("执行异常",e);
}catch (Exception e) {
tips.setFailureMsg(e.getMessage());
logger.error("执行异常",e);
}
m.put("tips", tips);
return m;
}
}

230
xm-core/src/main/java/com/xm/core/entity/XmProjectMBudgetCostNouser.java

@ -1,230 +0,0 @@
package com.xm.core.entity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.math.BigDecimal;
import java.util.Date;
/**
* 组织 com 顶级模块 xm 大模块 core 小模块 <br>
* 实体 XmProjectMBudgetCostNouser所有属性名: <br>
* projectId,budgetCost,id,remark,subjectId,bizzStartDate,bizzEndDate,bizProcInstId,bizFlowState,phaseId,costType,bizzMonth,subjectName;<br>
* xm_project_m_budget_cost_nouser 项目人力成本预算的所有字段名: <br>
* project_id,budget_cost,id,remark,subject_id,bizz_start_date,bizz_end_date,biz_proc_inst_id,biz_flow_state,phase_id,cost_type,bizz_month,subject_name;<br>
* 当前主键(包括多主键):<br>
* id;<br>
*/
@ApiModel(description="项目人力成本预算")
public class XmProjectMBudgetCostNouser implements java.io.Serializable {
private static final long serialVersionUID = 1L;
@ApiModelProperty(notes="主键,主键",allowEmptyValue=true,example="",allowableValues="")
String id;
@ApiModelProperty(notes="项目编号",allowEmptyValue=true,example="",allowableValues="")
String projectId;
@ApiModelProperty(notes="预算金额",allowEmptyValue=true,example="",allowableValues="")
BigDecimal budgetCost;
@ApiModelProperty(notes="备注",allowEmptyValue=true,example="",allowableValues="")
String remark;
@ApiModelProperty(notes="预算科目",allowEmptyValue=true,example="",allowableValues="")
String subjectId;
@ApiModelProperty(notes="费用归属周期开始日期",allowEmptyValue=true,example="",allowableValues="")
Date bizzStartDate;
@ApiModelProperty(notes="费用归属周期结束日期",allowEmptyValue=true,example="",allowableValues="")
Date bizzEndDate;
@ApiModelProperty(notes="当前流程实例编号",allowEmptyValue=true,example="",allowableValues="")
String bizProcInstId;
@ApiModelProperty(notes="当前流程状态0初始1审批中2审批通过3审批不通过4流程取消或者删除",allowEmptyValue=true,example="",allowableValues="")
String bizFlowState;
@ApiModelProperty(notes="阶段计划编号",allowEmptyValue=true,example="",allowableValues="")
String phaseId;
@ApiModelProperty(notes="成本类型0非人力1内部人力2外购人力",allowEmptyValue=true,example="",allowableValues="")
String costType;
@ApiModelProperty(notes="费用归属月份yyyy-mm",allowEmptyValue=true,example="",allowableValues="")
String bizzMonth;
@ApiModelProperty(notes="科目名称",allowEmptyValue=true,example="",allowableValues="")
String subjectName;
/**主键**/
public XmProjectMBudgetCostNouser(String id) {
this.id = id;
}
/**项目人力成本预算**/
public XmProjectMBudgetCostNouser() {
}
/**
* 项目编号
**/
public void setProjectId(String projectId) {
this.projectId = projectId;
}
/**
* 预算金额
**/
public void setBudgetCost(BigDecimal budgetCost) {
this.budgetCost = budgetCost;
}
/**
* 主键
**/
public void setId(String id) {
this.id = id;
}
/**
* 备注
**/
public void setRemark(String remark) {
this.remark = remark;
}
/**
* 预算科目
**/
public void setSubjectId(String subjectId) {
this.subjectId = subjectId;
}
/**
* 费用归属周期开始日期
**/
public void setBizzStartDate(Date bizzStartDate) {
this.bizzStartDate = bizzStartDate;
}
/**
* 费用归属周期结束日期
**/
public void setBizzEndDate(Date bizzEndDate) {
this.bizzEndDate = bizzEndDate;
}
/**
* 当前流程实例编号
**/
public void setBizProcInstId(String bizProcInstId) {
this.bizProcInstId = bizProcInstId;
}
/**
* 当前流程状态0初始1审批中2审批通过3审批不通过4流程取消或者删除
**/
public void setBizFlowState(String bizFlowState) {
this.bizFlowState = bizFlowState;
}
/**
* 阶段计划编号
**/
public void setPhaseId(String phaseId) {
this.phaseId = phaseId;
}
/**
* 成本类型0非人力1内部人力2外购人力
**/
public void setCostType(String costType) {
this.costType = costType;
}
/**
* 费用归属月份yyyy-mm
**/
public void setBizzMonth(String bizzMonth) {
this.bizzMonth = bizzMonth;
}
/**
* 科目名称
**/
public void setSubjectName(String subjectName) {
this.subjectName = subjectName;
}
/**
* 项目编号
**/
public String getProjectId() {
return this.projectId;
}
/**
* 预算金额
**/
public BigDecimal getBudgetCost() {
return this.budgetCost;
}
/**
* 主键
**/
public String getId() {
return this.id;
}
/**
* 备注
**/
public String getRemark() {
return this.remark;
}
/**
* 预算科目
**/
public String getSubjectId() {
return this.subjectId;
}
/**
* 费用归属周期开始日期
**/
public Date getBizzStartDate() {
return this.bizzStartDate;
}
/**
* 费用归属周期结束日期
**/
public Date getBizzEndDate() {
return this.bizzEndDate;
}
/**
* 当前流程实例编号
**/
public String getBizProcInstId() {
return this.bizProcInstId;
}
/**
* 当前流程状态0初始1审批中2审批通过3审批不通过4流程取消或者删除
**/
public String getBizFlowState() {
return this.bizFlowState;
}
/**
* 阶段计划编号
**/
public String getPhaseId() {
return this.phaseId;
}
/**
* 成本类型0非人力1内部人力2外购人力
**/
public String getCostType() {
return this.costType;
}
/**
* 费用归属月份yyyy-mm
**/
public String getBizzMonth() {
return this.bizzMonth;
}
/**
* 科目名称
**/
public String getSubjectName() {
return this.subjectName;
}
}

260
xm-core/src/main/java/com/xm/core/entity/XmProjectMBudgetCostUser.java

@ -1,260 +0,0 @@
package com.xm.core.entity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.math.BigDecimal;
import java.util.Date;
/**
* 组织 com 顶级模块 xm 大模块 core 小模块 <br>
* 实体 XmProjectMBudgetCostUser所有属性名: <br>
* projectId,userid,budgetCost,id,remark,username,subjectId,bizzStartDate,bizzEndDate,bizzMonth,bizProcInstId,bizFlowState,phaseId,costType,subjectName;<br>
* xm_project_m_budget_cost_user 项目人力成本预算的所有字段名: <br>
* project_id,userid,budget_cost,id,remark,username,subject_id,bizz_start_date,bizz_end_date,bizz_month,biz_proc_inst_id,biz_flow_state,phase_id,cost_type,subject_name;<br>
* 当前主键(包括多主键):<br>
* id;<br>
*/
@ApiModel(description="项目人力成本预算")
public class XmProjectMBudgetCostUser implements java.io.Serializable {
private static final long serialVersionUID = 1L;
@ApiModelProperty(notes="主键,主键",allowEmptyValue=true,example="",allowableValues="")
String id;
@ApiModelProperty(notes="项目编号",allowEmptyValue=true,example="",allowableValues="")
String projectId;
@ApiModelProperty(notes="项目成员编号",allowEmptyValue=true,example="",allowableValues="")
String userid;
@ApiModelProperty(notes="预算金额/每月",allowEmptyValue=true,example="",allowableValues="")
BigDecimal budgetCost;
@ApiModelProperty(notes="备注",allowEmptyValue=true,example="",allowableValues="")
String remark;
@ApiModelProperty(notes="用户名",allowEmptyValue=true,example="",allowableValues="")
String username;
@ApiModelProperty(notes="预算科目编号",allowEmptyValue=true,example="",allowableValues="")
String subjectId;
@ApiModelProperty(notes="费用归属周期开始日期",allowEmptyValue=true,example="",allowableValues="")
Date bizzStartDate;
@ApiModelProperty(notes="费用归属周期结束日期",allowEmptyValue=true,example="",allowableValues="")
Date bizzEndDate;
@ApiModelProperty(notes="费用归属月份yyyy-mm",allowEmptyValue=true,example="",allowableValues="")
String bizzMonth;
@ApiModelProperty(notes="当前流程实例编号",allowEmptyValue=true,example="",allowableValues="")
String bizProcInstId;
@ApiModelProperty(notes="当前流程状态0初始1审批中2审批通过3审批不通过4流程取消或者删除",allowEmptyValue=true,example="",allowableValues="")
String bizFlowState;
@ApiModelProperty(notes="项目阶段",allowEmptyValue=true,example="",allowableValues="")
String phaseId;
@ApiModelProperty(notes="成本类型0非人力1内部人力2外购人力",allowEmptyValue=true,example="",allowableValues="")
String costType;
@ApiModelProperty(notes="科目名称",allowEmptyValue=true,example="",allowableValues="")
String subjectName;
/**主键**/
public XmProjectMBudgetCostUser(String id) {
this.id = id;
}
/**项目人力成本预算**/
public XmProjectMBudgetCostUser() {
}
/**
* 项目编号
**/
public void setProjectId(String projectId) {
this.projectId = projectId;
}
/**
* 项目成员编号
**/
public void setUserid(String userid) {
this.userid = userid;
}
/**
* 预算金额/每月
**/
public void setBudgetCost(BigDecimal budgetCost) {
this.budgetCost = budgetCost;
}
/**
* 主键
**/
public void setId(String id) {
this.id = id;
}
/**
* 备注
**/
public void setRemark(String remark) {
this.remark = remark;
}
/**
* 用户名
**/
public void setUsername(String username) {
this.username = username;
}
/**
* 预算科目编号
**/
public void setSubjectId(String subjectId) {
this.subjectId = subjectId;
}
/**
* 费用归属周期开始日期
**/
public void setBizzStartDate(Date bizzStartDate) {
this.bizzStartDate = bizzStartDate;
}
/**
* 费用归属周期结束日期
**/
public void setBizzEndDate(Date bizzEndDate) {
this.bizzEndDate = bizzEndDate;
}
/**
* 费用归属月份yyyy-mm
**/
public void setBizzMonth(String bizzMonth) {
this.bizzMonth = bizzMonth;
}
/**
* 当前流程实例编号
**/
public void setBizProcInstId(String bizProcInstId) {
this.bizProcInstId = bizProcInstId;
}
/**
* 当前流程状态0初始1审批中2审批通过3审批不通过4流程取消或者删除
**/
public void setBizFlowState(String bizFlowState) {
this.bizFlowState = bizFlowState;
}
/**
* 项目阶段
**/
public void setPhaseId(String phaseId) {
this.phaseId = phaseId;
}
/**
* 成本类型0非人力1内部人力2外购人力
**/
public void setCostType(String costType) {
this.costType = costType;
}
/**
* 科目名称
**/
public void setSubjectName(String subjectName) {
this.subjectName = subjectName;
}
/**
* 项目编号
**/
public String getProjectId() {
return this.projectId;
}
/**
* 项目成员编号
**/
public String getUserid() {
return this.userid;
}
/**
* 预算金额/每月
**/
public BigDecimal getBudgetCost() {
return this.budgetCost;
}
/**
* 主键
**/
public String getId() {
return this.id;
}
/**
* 备注
**/
public String getRemark() {
return this.remark;
}
/**
* 用户名
**/
public String getUsername() {
return this.username;
}
/**
* 预算科目编号
**/
public String getSubjectId() {
return this.subjectId;
}
/**
* 费用归属周期开始日期
**/
public Date getBizzStartDate() {
return this.bizzStartDate;
}
/**
* 费用归属周期结束日期
**/
public Date getBizzEndDate() {
return this.bizzEndDate;
}
/**
* 费用归属月份yyyy-mm
**/
public String getBizzMonth() {
return this.bizzMonth;
}
/**
* 当前流程实例编号
**/
public String getBizProcInstId() {
return this.bizProcInstId;
}
/**
* 当前流程状态0初始1审批中2审批通过3审批不通过4流程取消或者删除
**/
public String getBizFlowState() {
return this.bizFlowState;
}
/**
* 项目阶段
**/
public String getPhaseId() {
return this.phaseId;
}
/**
* 成本类型0非人力1内部人力2外购人力
**/
public String getCostType() {
return this.costType;
}
/**
* 科目名称
**/
public String getSubjectName() {
return this.subjectName;
}
}

102
xm-core/src/main/java/com/xm/core/entity/XmProjectMCostNouser.java

@ -1,102 +0,0 @@
package com.xm.core.entity;
import lombok.Data;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.util.Date;
import java.math.BigDecimal;
/**
* 组织 com 顶级模块 xm 大模块 core 小模块 <br>
* 实体 XmProjectMCostNouser所有属性名: <br>
* "projectId","项目编号","userid","用户编号","createTime","创建时间","sendCostTime","费用发放时间","username","用户名称","projectName","项目名称","remark","备注","id","主键","taskId","任务编号","taskName","任务名称","subjectId","科目编号","bizzStartDate","费用归属周期开始日期","bizzEndDate","费用归属周期结束日期","bizProcInstId","当前流程实例编号","bizFlowState","当前流程状态0初始1审批中2审批通过3审批不通过4流程取消或者删除","projectPhaseId","项目计划阶段编号","actCostAmount","实际成本金额","costType","成本类型0非人力1内部人力2外购人力","bizMonth","业务归属月份yyyy-mm","bizDate","业务归属日期yyyy-mm-dd","subjectName","科目名称","projectPhaseName","阶段名称";<br>
* 当前主键(包括多主键):<br>
* id;<br>
*/
@Data
@ApiModel(description="项目实际人工成本费用")
public class XmProjectMCostNouser implements java.io.Serializable {
private static final long serialVersionUID = 1L;
@ApiModelProperty(notes="主键,主键",allowEmptyValue=true,example="",allowableValues="")
String id;
@ApiModelProperty(notes="项目编号",allowEmptyValue=true,example="",allowableValues="")
String projectId;
@ApiModelProperty(notes="用户编号",allowEmptyValue=true,example="",allowableValues="")
String userid;
@ApiModelProperty(notes="创建时间",allowEmptyValue=true,example="",allowableValues="")
Date createTime;
@ApiModelProperty(notes="费用发放时间",allowEmptyValue=true,example="",allowableValues="")
Date sendCostTime;
@ApiModelProperty(notes="用户名称",allowEmptyValue=true,example="",allowableValues="")
String username;
@ApiModelProperty(notes="项目名称",allowEmptyValue=true,example="",allowableValues="")
String projectName;
@ApiModelProperty(notes="备注",allowEmptyValue=true,example="",allowableValues="")
String remark;
@ApiModelProperty(notes="任务编号",allowEmptyValue=true,example="",allowableValues="")
String taskId;
@ApiModelProperty(notes="任务名称",allowEmptyValue=true,example="",allowableValues="")
String taskName;
@ApiModelProperty(notes="科目编号",allowEmptyValue=true,example="",allowableValues="")
String subjectId;
@ApiModelProperty(notes="费用归属周期开始日期",allowEmptyValue=true,example="",allowableValues="")
Date bizzStartDate;
@ApiModelProperty(notes="费用归属周期结束日期",allowEmptyValue=true,example="",allowableValues="")
Date bizzEndDate;
@ApiModelProperty(notes="当前流程实例编号",allowEmptyValue=true,example="",allowableValues="")
String bizProcInstId;
@ApiModelProperty(notes="当前流程状态0初始1审批中2审批通过3审批不通过4流程取消或者删除",allowEmptyValue=true,example="",allowableValues="")
String bizFlowState;
@ApiModelProperty(notes="项目计划阶段编号",allowEmptyValue=true,example="",allowableValues="")
String projectPhaseId;
@ApiModelProperty(notes="实际成本金额",allowEmptyValue=true,example="",allowableValues="")
BigDecimal actCostAmount;
@ApiModelProperty(notes="成本类型0非人力1内部人力2外购人力",allowEmptyValue=true,example="",allowableValues="")
String costType;
@ApiModelProperty(notes="业务归属月份yyyy-mm",allowEmptyValue=true,example="",allowableValues="")
String bizMonth;
@ApiModelProperty(notes="业务归属日期yyyy-mm-dd",allowEmptyValue=true,example="",allowableValues="")
String bizDate;
@ApiModelProperty(notes="科目名称",allowEmptyValue=true,example="",allowableValues="")
String subjectName;
@ApiModelProperty(notes="阶段名称",allowEmptyValue=true,example="",allowableValues="")
String projectPhaseName;
/**
*主键
**/
public XmProjectMCostNouser(String id) {
this.id = id;
}
/**
* 项目实际人工成本费用
**/
public XmProjectMCostNouser() {
}
}

455
xm-core/src/main/java/com/xm/core/entity/XmProjectMCostUser.java

@ -1,455 +0,0 @@
package com.xm.core.entity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.math.BigDecimal;
import java.util.Date;
/**
* 组织 com 顶级模块 xm 大模块 core 小模块 <br>
* 实体 XmProjectMCostUser所有属性名: <br>
* subjectId,projectId,userid,createTime,sendCostTime,username,projectName,remark,id,taskId,taskName,actWorkload,bizzStartDate,bizzEndDate,bizProcInstId,bizFlowState,phaseId,actCostAmount,costType,bizMonth,bizDate,subjectName,phaseName,execuserProcInstId,execuserStatus,payStatus,payOpUserid,payOpUsername;<br>
* xm_project_m_cost_user 项目实际人工成本费用的所有字段名: <br>
* subject_id,project_id,userid,create_time,send_cost_time,username,project_name,remark,id,task_id,task_name,act_workload,bizz_start_date,bizz_end_date,biz_proc_inst_id,biz_flow_state,phase_id,act_cost_amount,cost_type,biz_month,biz_date,subject_name,phase_name,execuser_proc_inst_id,execuser_status,pay_status,pay_op_userid,pay_op_username;<br>
* 当前主键(包括多主键):<br>
* id;<br>
*/
@ApiModel(description="项目实际人工成本费用")
public class XmProjectMCostUser implements java.io.Serializable {
private static final long serialVersionUID = 1L;
@ApiModelProperty(notes="主键,主键",allowEmptyValue=true,example="",allowableValues="")
String id;
@ApiModelProperty(notes="科目编号",allowEmptyValue=true,example="",allowableValues="")
String subjectId;
@ApiModelProperty(notes="项目编号",allowEmptyValue=true,example="",allowableValues="")
String projectId;
@ApiModelProperty(notes="用户编号",allowEmptyValue=true,example="",allowableValues="")
String userid;
@ApiModelProperty(notes="创建时间",allowEmptyValue=true,example="",allowableValues="")
Date createTime;
@ApiModelProperty(notes="费用发放时间",allowEmptyValue=true,example="",allowableValues="")
Date sendCostTime;
@ApiModelProperty(notes="用户名称",allowEmptyValue=true,example="",allowableValues="")
String username;
@ApiModelProperty(notes="项目名称",allowEmptyValue=true,example="",allowableValues="")
String projectName;
@ApiModelProperty(notes="备注",allowEmptyValue=true,example="",allowableValues="")
String remark;
@ApiModelProperty(notes="任务编号",allowEmptyValue=true,example="",allowableValues="")
String taskId;
@ApiModelProperty(notes="任务名称",allowEmptyValue=true,example="",allowableValues="")
String taskName;
@ApiModelProperty(notes="实际工时",allowEmptyValue=true,example="",allowableValues="")
BigDecimal actWorkload;
@ApiModelProperty(notes="费用归属周期开始日期",allowEmptyValue=true,example="",allowableValues="")
Date bizzStartDate;
@ApiModelProperty(notes="费用归属周期结束日期",allowEmptyValue=true,example="",allowableValues="")
Date bizzEndDate;
@ApiModelProperty(notes="当前流程实例编号",allowEmptyValue=true,example="",allowableValues="")
String bizProcInstId;
@ApiModelProperty(notes="当前流程状态0初始1审批中2审批通过3审批不通过4流程取消或者删除",allowEmptyValue=true,example="",allowableValues="")
String bizFlowState;
@ApiModelProperty(notes="项目计划阶段编号",allowEmptyValue=true,example="",allowableValues="")
String phaseId;
@ApiModelProperty(notes="金额",allowEmptyValue=true,example="",allowableValues="")
BigDecimal actCostAmount;
@ApiModelProperty(notes="成本类型0非人力1内部人力2外购人力",allowEmptyValue=true,example="",allowableValues="")
String costType;
@ApiModelProperty(notes="业务归属月份yyyy-mm",allowEmptyValue=true,example="",allowableValues="")
String bizMonth;
@ApiModelProperty(notes="业务归属日期yyyy-mm-dd",allowEmptyValue=true,example="",allowableValues="")
String bizDate;
@ApiModelProperty(notes="科目名称",allowEmptyValue=true,example="",allowableValues="")
String subjectName;
@ApiModelProperty(notes="阶段名称",allowEmptyValue=true,example="",allowableValues="")
String phaseName;
@ApiModelProperty(notes="执行人申请结算时的流程编号",allowEmptyValue=true,example="",allowableValues="")
String execuserProcInstId;
@ApiModelProperty(notes="执行人结算申请状态0审批中1审批通过2申请不通过删除数据",allowEmptyValue=true,example="",allowableValues="")
String execuserStatus;
@ApiModelProperty(notes="付款状态0未付款1已付款",allowEmptyValue=true,example="",allowableValues="")
String payStatus;
@ApiModelProperty(notes="付款操作人员编号",allowEmptyValue=true,example="",allowableValues="")
String payOpUserid;
@ApiModelProperty(notes="付款操作人员姓名",allowEmptyValue=true,example="",allowableValues="")
String payOpUsername;
/**主键**/
public XmProjectMCostUser(String id) {
this.id = id;
}
/**项目实际人工成本费用**/
public XmProjectMCostUser() {
}
/**
* 科目编号
**/
public void setSubjectId(String subjectId) {
this.subjectId = subjectId;
}
/**
* 项目编号
**/
public void setProjectId(String projectId) {
this.projectId = projectId;
}
/**
* 用户编号
**/
public void setUserid(String userid) {
this.userid = userid;
}
/**
* 创建时间
**/
public void setCreateTime(Date createTime) {
this.createTime = createTime;
}
/**
* 费用发放时间
**/
public void setSendCostTime(Date sendCostTime) {
this.sendCostTime = sendCostTime;
}
/**
* 用户名称
**/
public void setUsername(String username) {
this.username = username;
}
/**
* 项目名称
**/
public void setProjectName(String projectName) {
this.projectName = projectName;
}
/**
* 备注
**/
public void setRemark(String remark) {
this.remark = remark;
}
/**
* 主键
**/
public void setId(String id) {
this.id = id;
}
/**
* 任务编号
**/
public void setTaskId(String taskId) {
this.taskId = taskId;
}
/**
* 任务名称
**/
public void setTaskName(String taskName) {
this.taskName = taskName;
}
/**
* 实际工时
**/
public void setActWorkload(BigDecimal actWorkload) {
this.actWorkload = actWorkload;
}
/**
* 费用归属周期开始日期
**/
public void setBizzStartDate(Date bizzStartDate) {
this.bizzStartDate = bizzStartDate;
}
/**
* 费用归属周期结束日期
**/
public void setBizzEndDate(Date bizzEndDate) {
this.bizzEndDate = bizzEndDate;
}
/**
* 当前流程实例编号
**/
public void setBizProcInstId(String bizProcInstId) {
this.bizProcInstId = bizProcInstId;
}
/**
* 当前流程状态0初始1审批中2审批通过3审批不通过4流程取消或者删除
**/
public void setBizFlowState(String bizFlowState) {
this.bizFlowState = bizFlowState;
}
/**
* 项目计划阶段编号
**/
public void setPhaseId(String phaseId) {
this.phaseId = phaseId;
}
/**
* 金额
**/
public void setActCostAmount(BigDecimal actCostAmount) {
this.actCostAmount = actCostAmount;
}
/**
* 成本类型0非人力1内部人力2外购人力
**/
public void setCostType(String costType) {
this.costType = costType;
}
/**
* 业务归属月份yyyy-mm
**/
public void setBizMonth(String bizMonth) {
this.bizMonth = bizMonth;
}
/**
* 业务归属日期yyyy-mm-dd
**/
public void setBizDate(String bizDate) {
this.bizDate = bizDate;
}
/**
* 科目名称
**/
public void setSubjectName(String subjectName) {
this.subjectName = subjectName;
}
/**
* 阶段名称
**/
public void setPhaseName(String phaseName) {
this.phaseName = phaseName;
}
/**
* 执行人申请结算时的流程编号
**/
public void setExecuserProcInstId(String execuserProcInstId) {
this.execuserProcInstId = execuserProcInstId;
}
/**
* 执行人结算申请状态0审批中1审批通过2申请不通过删除数据
**/
public void setExecuserStatus(String execuserStatus) {
this.execuserStatus = execuserStatus;
}
/**
* 付款状态0未付款1已付款
**/
public void setPayStatus(String payStatus) {
this.payStatus = payStatus;
}
/**
* 付款操作人员编号
**/
public void setPayOpUserid(String payOpUserid) {
this.payOpUserid = payOpUserid;
}
/**
* 付款操作人员姓名
**/
public void setPayOpUsername(String payOpUsername) {
this.payOpUsername = payOpUsername;
}
/**
* 科目编号
**/
public String getSubjectId() {
return this.subjectId;
}
/**
* 项目编号
**/
public String getProjectId() {
return this.projectId;
}
/**
* 用户编号
**/
public String getUserid() {
return this.userid;
}
/**
* 创建时间
**/
public Date getCreateTime() {
return this.createTime;
}
/**
* 费用发放时间
**/
public Date getSendCostTime() {
return this.sendCostTime;
}
/**
* 用户名称
**/
public String getUsername() {
return this.username;
}
/**
* 项目名称
**/
public String getProjectName() {
return this.projectName;
}
/**
* 备注
**/
public String getRemark() {
return this.remark;
}
/**
* 主键
**/
public String getId() {
return this.id;
}
/**
* 任务编号
**/
public String getTaskId() {
return this.taskId;
}
/**
* 任务名称
**/
public String getTaskName() {
return this.taskName;
}
/**
* 实际工时
**/
public BigDecimal getActWorkload() {
return this.actWorkload;
}
/**
* 费用归属周期开始日期
**/
public Date getBizzStartDate() {
return this.bizzStartDate;
}
/**
* 费用归属周期结束日期
**/
public Date getBizzEndDate() {
return this.bizzEndDate;
}
/**
* 当前流程实例编号
**/
public String getBizProcInstId() {
return this.bizProcInstId;
}
/**
* 当前流程状态0初始1审批中2审批通过3审批不通过4流程取消或者删除
**/
public String getBizFlowState() {
return this.bizFlowState;
}
/**
* 项目计划阶段编号
**/
public String getPhaseId() {
return this.phaseId;
}
/**
* 金额
**/
public BigDecimal getActCostAmount() {
return this.actCostAmount;
}
/**
* 成本类型0非人力1内部人力2外购人力
**/
public String getCostType() {
return this.costType;
}
/**
* 业务归属月份yyyy-mm
**/
public String getBizMonth() {
return this.bizMonth;
}
/**
* 业务归属日期yyyy-mm-dd
**/
public String getBizDate() {
return this.bizDate;
}
/**
* 科目名称
**/
public String getSubjectName() {
return this.subjectName;
}
/**
* 阶段名称
**/
public String getPhaseName() {
return this.phaseName;
}
/**
* 执行人申请结算时的流程编号
**/
public String getExecuserProcInstId() {
return this.execuserProcInstId;
}
/**
* 执行人结算申请状态0审批中1审批通过2申请不通过删除数据
**/
public String getExecuserStatus() {
return this.execuserStatus;
}
/**
* 付款状态0未付款1已付款
**/
public String getPayStatus() {
return this.payStatus;
}
/**
* 付款操作人员编号
**/
public String getPayOpUserid() {
return this.payOpUserid;
}
/**
* 付款操作人员姓名
**/
public String getPayOpUsername() {
return this.payOpUsername;
}
}

13
xm-core/src/main/java/com/xm/core/service/XmBudgetLaborService.java

@ -1,16 +1,12 @@
package com.xm.core.service;
import com.mdp.core.service.BaseService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.List;
import java.util.Map;
import org.springframework.stereotype.Service;
import com.mdp.core.service.BaseService;
import static com.mdp.core.utils.BaseUtils.*;
import com.mdp.core.entity.Tips;
import com.mdp.core.err.BizException;
import com.xm.core.entity.XmBudgetLabor;
import java.util.List;
import java.util.Map;
/**
* 父类已经支持增删改查操作,因此,即使本类什么也不写,也已经可以满足一般的增删改查操作了.<br>
* 组织 com 顶级模块 xm 大模块 core 小模块 <br>
@ -20,5 +16,8 @@ import com.xm.core.entity.XmBudgetLabor;
public class XmBudgetLaborService extends BaseService {
static Logger logger =LoggerFactory.getLogger(XmBudgetLaborService.class);
public List<Map<String, Object>> listSum(Map<String, Object> xmBudgetLabor) {
return super.selectList("listSum",xmBudgetLabor);
}
}

15
xm-core/src/main/java/com/xm/core/service/XmBudgetNlaborService.java

@ -1,16 +1,12 @@
package com.xm.core.service;
import com.mdp.core.service.BaseService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.List;
import java.util.Map;
import org.springframework.stereotype.Service;
import com.mdp.core.service.BaseService;
import static com.mdp.core.utils.BaseUtils.*;
import com.mdp.core.entity.Tips;
import com.mdp.core.err.BizException;
import com.xm.core.entity.XmBudgetNlabor;
import java.util.List;
import java.util.Map;
/**
* 父类已经支持增删改查操作,因此,即使本类什么也不写,也已经可以满足一般的增删改查操作了.<br>
* 组织 com 顶级模块 xm 大模块 core 小模块 <br>
@ -20,5 +16,10 @@ import com.xm.core.entity.XmBudgetNlabor;
public class XmBudgetNlaborService extends BaseService {
static Logger logger =LoggerFactory.getLogger(XmBudgetNlaborService.class);
public List<Map<String, Object>> listSum(Map<String, Object> xmBudgetNlabor) {
return super.selectList("listSum",xmBudgetNlabor);
}
}

13
xm-core/src/main/java/com/xm/core/service/XmCostNlaborService.java

@ -1,16 +1,12 @@
package com.xm.core.service;
import com.mdp.core.service.BaseService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.List;
import java.util.Map;
import org.springframework.stereotype.Service;
import com.mdp.core.service.BaseService;
import static com.mdp.core.utils.BaseUtils.*;
import com.mdp.core.entity.Tips;
import com.mdp.core.err.BizException;
import com.xm.core.entity.XmCostNlabor;
import java.util.List;
import java.util.Map;
/**
* 父类已经支持增删改查操作,因此,即使本类什么也不写,也已经可以满足一般的增删改查操作了.<br>
* 组织 com 顶级模块 xm 大模块 core 小模块 <br>
@ -20,5 +16,8 @@ import com.xm.core.entity.XmCostNlabor;
public class XmCostNlaborService extends BaseService {
static Logger logger =LoggerFactory.getLogger(XmCostNlaborService.class);
public List<Map<String, Object>> listSum(Map<String, Object> xmCostNlabor) {
return super.selectList("listSum",xmCostNlabor);
}
}

148
xm-core/src/main/java/com/xm/core/service/XmProjectMBudgetCostNouserService.java

@ -1,148 +0,0 @@
package com.xm.core.service;
import com.mdp.core.entity.Tips;
import com.mdp.core.err.BizException;
import com.mdp.core.service.BaseService;
import com.mdp.core.utils.NumberUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;
import java.math.BigDecimal;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* 父类已经支持增删改查操作,因此,即使本类什么也不写,也已经可以满足一般的增删改查操作了.<br>
* 组织 com.qqkj 顶级模块 oa 大模块 xm 小模块 <br>
* 实体 XmProjectMBudgetCostNouser XM.xm_project_m_budget_cost_nouser 当前主键(包括多主键): id;
***/
@Service("xm.core.xmProjectMBudgetCostNouserService")
public class XmProjectMBudgetCostNouserService extends BaseService {
/** 请在此类添加自定义函数 */
@Autowired
XmRecordService xmRecordService;
/**
* 查询项目及计划总预算用于判断是否超出预算
*/
public Map<String,Object> selectTotalProjectAndNouserBudgetCost(String projectId,List<String> excludeIds){
Map<String,Object> p=new HashMap<>();
p.put("projectId", projectId);
p.put("excludeIds", excludeIds);
return this.selectOne("selectTotalProjectAndNouserBudgetCost", p);
}
/**
* 判断新增预算是否超出项目总预算
* @param projectId
* @param addTotalBudgetCost
* @param excludePhaseId
* @return
*/
public Tips judgetBudget(String projectId,BigDecimal addTotalBudgetCost,List<String> excludeIds){
Tips tips=new Tips("检查预算成功");
Map<String,Object> g=this.selectTotalProjectAndNouserBudgetCost(projectId,excludeIds);
BigDecimal zero=BigDecimal.ZERO;
BigDecimal budgetCost=NumberUtil.getBigDecimal(g.get("budgetCost"),zero);
BigDecimal planNouserAt=NumberUtil.getBigDecimal(g.get("planNouserAt"),zero);
BigDecimal budgetCostNouser = budgetCost.add(addTotalBudgetCost);
if(budgetCostNouser.compareTo(planNouserAt)>0) {
tips.setFailureMsg("非人力预算超出项目总非人力预算");
return tips;
}else {
return tips;
}
}
/**
* 流程审批过程中回调该接口更新业务数据
* 如果发起流程时上送了restUrl则无论流程中是否配置了监听器都会在流程发生以下事件时推送数据过来
* eventName: PROCESS_STARTED 流程启动完成 全局
* PROCESS_COMPLETED 流程正常结束 全局
* PROCESS_CANCELLED 流程删除 全局
* create 人工任务启动
* complete 人工任务完成
* assignment 人工任务分配给了具体的人
* delete 人工任务被删除
* TASK_COMPLETED_FORM_DATA_UPDATE 人工任务提交完成后智能表单数据更新
*
* 其中 create/complete/assignment/delete事件是需要在模型中人工节点上配置了委托代理表达式 ${taskBizCallListener}才会推送过来
* 在人工任务节点上配置 任务监听器 建议事件为 complete,其它assignment/create/complete/delete也可以一般建议在complete,委托代理表达式 ${taskBizCallListener}
*
* @param flowVars {flowBranchId,agree,procInstId,startUserid,assignee,actId,taskName,mainTitle,branchId,bizKey,commentMsg,eventName,modelKey}
* @return 如果tips.isOk==false将影响流程提交
**/
public void processApprova(Map<String, Object> flowVars) {
String eventName=(String) flowVars.get("eventName");
String agree=(String) flowVars.get("agree");
String branchId=(String) flowVars.get("branchId");
String budgetId=(String) flowVars.get("budgetId");
String bizKey=(String) flowVars.get("bizKey");
if("xm_project_budget_cost_nouser_approva".equals(bizKey) ) {
}else {
throw new BizException("不支持的业务,请上送业务编码【bizKey】参数");
}
if("complete".equals(eventName)) {
if("1".equals(agree)) {
this.updateFlowStateByProcInst("", flowVars);
}else {
this.updateFlowStateByProcInst("", flowVars);
}
}else {
if("PROCESS_STARTED".equals(eventName)) {
Map<String,Object> bizQuery=new HashMap<>();
bizQuery.put("budgetId", budgetId);
if(StringUtils.isEmpty(budgetId)) {
throw new BizException("请上送budgetId");
}
if(StringUtils.isEmpty(branchId)) {
throw new BizException("请上送branchId");
}
List<Map<String,Object>> bizList=this.selectListMapByWhere(bizQuery);
if(bizList==null || bizList.size()==0) {
throw new BizException("没有找到对应预算单,预算单为【"+budgetId+"】");
}else {
Map<String,Object> bizObject=bizList.get(0);
if("1".equals(bizObject.get("bizFlowState"))) {
throw new BizException("该预算单正在审批中,不能再发起审批");
}
}
flowVars.put("id", this.createKey("id"));
this.insert("insertProcessApprova", flowVars);
this.updateFlowStateByProcInst("1", flowVars);
}else if("PROCESS_COMPLETED".equals(eventName)) {
if("1".equals(agree)) {
this.updateFlowStateByProcInst("2", flowVars);
}else {
this.updateFlowStateByProcInst("3", flowVars);
}
}else if("PROCESS_CANCELLED".equals(eventName)) {
this.updateFlowStateByProcInst("4", flowVars);
}
}
}
private void updateFlowStateByProcInstForDeleteSuccess(Map<String, Object> flowVars) {
this.update("updateFlowStateByProcInstForDeleteSuccess", flowVars);
}
public void updateFlowStateByProcInst(String flowState,Map<String, Object> flowVars) {
flowVars.put("flowState", flowState);
flowVars.put("bizFlowState", flowState);
if("1".equals(flowState)) {
flowVars.put("bizProcInstId", flowVars.get("procInstId"));
}
this.update("updateProcessApprova", flowVars);
}
public List<Map<String,Object>> listSum(Map<String,Object> params){
return this.selectList("listSum", params);
}
}

172
xm-core/src/main/java/com/xm/core/service/XmProjectMBudgetCostUserService.java

@ -1,172 +0,0 @@
package com.xm.core.service;
import com.mdp.core.entity.Tips;
import com.mdp.core.err.BizException;
import com.mdp.core.service.BaseService;
import com.mdp.core.utils.NumberUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;
import java.math.BigDecimal;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* 父类已经支持增删改查操作,因此,即使本类什么也不写,也已经可以满足一般的增删改查操作了.<br>
* 组织 com.qqkj 顶级模块 oa 大模块 xm 小模块 <br>
* 实体 XmProjectMBudgetCostUser XM.xm_project_m_budget_cost_user 当前主键(包括多主键): id;
***/
@Service("xm.core.xmProjectMBudgetCostUserService")
public class XmProjectMBudgetCostUserService extends BaseService {
/** 请在此类添加自定义函数 */
@Autowired
XmRecordService xmRecordService;
/**
* 查询项目及计划总预算用于判断是否超出预算
*/
public Map<String,Object> selectTotalProjectAndUserBudgetCost(String projectId,List<String> excludeIds){
Map<String,Object> p=new HashMap<>();
p.put("projectId", projectId);
p.put("excludeIds", excludeIds);
return this.selectOne("selectTotalProjectAndUserBudgetCost", p);
}
/**
* 判断新增预算是否超出项目总预算
* @param projectId
* @param addTotalBudgetCost
* @param excludePhaseId
* @return
*/
public Tips judgetBudget(String projectId,BigDecimal addTotalBudgetCost,BigDecimal addBudgetCostIuserAt,BigDecimal addBudgetCostOuserAt,List<String> excludeIds){
Tips tips=new Tips("检查预算成功");
Map<String,Object> g=this.selectTotalProjectAndUserBudgetCost(projectId,excludeIds);
BigDecimal totalBudgetCost=BigDecimal.ZERO;
BigDecimal zero=BigDecimal.ZERO;
addTotalBudgetCost=NumberUtil.getBigDecimal(addTotalBudgetCost,zero);
addBudgetCostIuserAt=NumberUtil.getBigDecimal(addBudgetCostIuserAt,zero);
addBudgetCostOuserAt=NumberUtil.getBigDecimal(addBudgetCostOuserAt,zero);
BigDecimal budgetCost=NumberUtil.getBigDecimal(g.get("budgetCost"),zero);
BigDecimal budgetCostIuserAt=NumberUtil.getBigDecimal(g.get("budgetCostIuserAt"),zero);
BigDecimal budgetCostOuserAt=NumberUtil.getBigDecimal(g.get("budgetCostOuserAt"),zero);
BigDecimal planIuserAt=NumberUtil.getBigDecimal(g.get("planIuserAt"),zero);
BigDecimal planOuserAt=NumberUtil.getBigDecimal(g.get("planOuserAt"),zero);
BigDecimal planUserAt=totalBudgetCost.add(planIuserAt).add(planOuserAt);
if(budgetCostIuserAt.add(addBudgetCostIuserAt).compareTo(planIuserAt)>0) {
tips.setFailureMsg("内部人力预算超出项目内部人力预算");
return tips;
}
if(budgetCostOuserAt.add(addBudgetCostOuserAt).compareTo(planOuserAt)>0) {
tips.setFailureMsg("外购人力预算超出项目总外购人力预算");
return tips;
}
BigDecimal budgetCostUser = budgetCost.add(addTotalBudgetCost);
if(budgetCostUser.compareTo(planUserAt)>0) {
tips.setFailureMsg("人力预算超出项目总人力预算");
return tips;
}else {
return tips;
}
}
public List<Map<String,Object>> listSum(Map<String,Object> params){
return this.selectList("listSum", params);
}
/**
* 流程审批过程中回调该接口更新业务数据
* 如果发起流程时上送了restUrl则无论流程中是否配置了监听器都会在流程发生以下事件时推送数据过来
* eventName: PROCESS_STARTED 流程启动完成 全局
* PROCESS_COMPLETED 流程正常结束 全局
* PROCESS_CANCELLED 流程删除 全局
* create 人工任务启动
* complete 人工任务完成
* assignment 人工任务分配给了具体的人
* delete 人工任务被删除
* TASK_COMPLETED_FORM_DATA_UPDATE 人工任务提交完成后智能表单数据更新
*
* 其中 create/complete/assignment/delete事件是需要在模型中人工节点上配置了委托代理表达式 ${taskBizCallListener}才会推送过来
* 在人工任务节点上配置 任务监听器 建议事件为 complete,其它assignment/create/complete/delete也可以一般建议在complete,委托代理表达式 ${taskBizCallListener}
*
* @param flowVars {flowBranchId,agree,procInstId,startUserid,assignee,actId,taskName,mainTitle,branchId,bizKey,commentMsg,eventName,modelKey}
* @return 如果tips.isOk==false将影响流程提交
**/
public void processApprova(Map<String, Object> flowVars) {
String eventName=(String) flowVars.get("eventName");
String agree=(String) flowVars.get("agree");
String branchId=(String) flowVars.get("branchId");
String budgetId=(String) flowVars.get("budgetId");
String bizKey=(String) flowVars.get("bizKey");
if("xm_project_budget_cost_user_approva".equals(bizKey) ) {
}else {
throw new BizException("不支持的业务,请上送业务编码【bizKey】参数");
}
if("complete".equals(eventName)) {
if("1".equals(agree)) {
this.updateFlowStateByProcInst("", flowVars);
}else {
this.updateFlowStateByProcInst("", flowVars);
}
}else {
if("PROCESS_STARTED".equals(eventName)) {
Map<String,Object> bizQuery=new HashMap<>();
bizQuery.put("budgetId", budgetId);
if(StringUtils.isEmpty(budgetId)) {
throw new BizException("请上送budgetId");
}
if(StringUtils.isEmpty(branchId)) {
throw new BizException("请上送branchId");
}
List<Map<String,Object>> bizList=this.selectListMapByWhere(bizQuery);
if(bizList==null || bizList.size()==0) {
throw new BizException("没有找到对应预算单,预算单为【"+budgetId+"】");
}else {
Map<String,Object> bizObject=bizList.get(0);
if("1".equals(bizObject.get("bizFlowState"))) {
throw new BizException("该预算单正在审批中,不能再发起审批");
}
}
flowVars.put("id", this.createKey("id"));
this.insert("insertProcessApprova", flowVars);
this.updateFlowStateByProcInst("1", flowVars);
}else if("PROCESS_COMPLETED".equals(eventName)) {
if("1".equals(agree)) {
this.updateFlowStateByProcInst("2", flowVars);
}else {
this.updateFlowStateByProcInst("3", flowVars);
}
}else if("PROCESS_CANCELLED".equals(eventName)) {
this.updateFlowStateByProcInst("4", flowVars);
}
}
}
private void updateFlowStateByProcInstForDeleteSuccess(Map<String, Object> flowVars) {
this.update("updateFlowStateByProcInstForDeleteSuccess", flowVars);
}
public void updateFlowStateByProcInst(String flowState,Map<String, Object> flowVars) {
flowVars.put("flowState", flowState);
flowVars.put("bizFlowState", flowState);
if("1".equals(flowState)) {
flowVars.put("bizProcInstId", flowVars.get("procInstId"));
}
this.update("updateProcessApprova", flowVars);
}
}

150
xm-core/src/main/java/com/xm/core/service/XmProjectMCostNouserService.java

@ -1,150 +0,0 @@
package com.xm.core.service;
import com.mdp.core.entity.Tips;
import com.mdp.core.err.BizException;
import com.mdp.core.service.BaseService;
import com.mdp.core.utils.NumberUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;
import java.math.BigDecimal;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* 父类已经支持增删改查操作,因此,即使本类什么也不写,也已经可以满足一般的增删改查操作了.<br>
* 组织 com.qqkj 顶级模块 oa 大模块 xm 小模块 <br>
* 实体 XmProjectMCostNouser XM.xm_project_m_cost_nouser 当前主键(包括多主键): id;
***/
@Service("xm.core.xmProjectMCostNouserService")
public class XmProjectMCostNouserService extends BaseService {
/** 请在此类添加自定义函数 */
@Autowired
XmRecordService xmRecordService;
/**
* 流程审批过程中回调该接口更新业务数据
* 如果发起流程时上送了restUrl则无论流程中是否配置了监听器都会在流程发生以下事件时推送数据过来
* eventName: PROCESS_STARTED 流程启动完成 全局
* PROCESS_COMPLETED 流程正常结束 全局
* PROCESS_CANCELLED 流程删除 全局
* create 人工任务启动
* complete 人工任务完成
* assignment 人工任务分配给了具体的人
* delete 人工任务被删除
* TASK_COMPLETED_FORM_DATA_UPDATE 人工任务提交完成后智能表单数据更新
*
* 其中 create/complete/assignment/delete事件是需要在模型中人工节点上配置了委托代理表达式 ${taskBizCallListener}才会推送过来
* 在人工任务节点上配置 任务监听器 建议事件为 complete,其它assignment/create/complete/delete也可以一般建议在complete,委托代理表达式 ${taskBizCallListener}
*
* @param flowVars {flowBranchId,agree,procInstId,startUserid,assignee,actId,taskName,mainTitle,branchId,bizKey,commentMsg,eventName,modelKey}
* @return 如果tips.isOk==false将影响流程提交
**/
public void processApprova(Map<String, Object> flowVars) {
String eventName=(String) flowVars.get("eventName");
String agree=(String) flowVars.get("agree");
String branchId=(String) flowVars.get("branchId");
String costId=(String) flowVars.get("costId");
String bizKey=(String) flowVars.get("bizKey");
if("xm_project_cost_nouser_approva".equals(bizKey) ) {
}else {
throw new BizException("不支持的业务,请上送业务编码【bizKey】参数");
}
if("complete".equals(eventName)) {
if("1".equals(agree)) {
this.updateFlowStateByProcInst("", flowVars);
}else {
this.updateFlowStateByProcInst("", flowVars);
}
}else {
if("PROCESS_STARTED".equals(eventName)) {
Map<String,Object> bizQuery=new HashMap<>();
bizQuery.put("costId", costId);
if(StringUtils.isEmpty(costId)) {
throw new BizException("请上送costId");
}
if(StringUtils.isEmpty(branchId)) {
throw new BizException("请上送branchId");
}
List<Map<String,Object>> bizList=this.selectListMapByWhere(bizQuery);
if(bizList==null || bizList.size()==0) {
throw new BizException("没有找到对应成本单,成本单为【"+costId+"】");
}else {
Map<String,Object> bizObject=bizList.get(0);
if("1".equals(bizObject.get("bizFlowState"))) {
throw new BizException("该成本单正在审批中,不能再发起审批");
}
}
flowVars.put("id", this.createKey("id"));
this.insert("insertProcessApprova", flowVars);
this.updateFlowStateByProcInst("1", flowVars);
}else if("PROCESS_COMPLETED".equals(eventName)) {
if("1".equals(agree)) {
this.updateFlowStateByProcInst("2", flowVars);
}else {
this.updateFlowStateByProcInst("3", flowVars);
}
}else if("PROCESS_CANCELLED".equals(eventName)) {
this.updateFlowStateByProcInst("4", flowVars);
}
}
}
private void updateFlowStateByProcInstForDeleteSuccess(Map<String, Object> flowVars) {
this.update("updateFlowStateByProcInstForDeleteSuccess", flowVars);
}
public void updateFlowStateByProcInst(String flowState,Map<String, Object> flowVars) {
flowVars.put("flowState", flowState);
flowVars.put("bizFlowState", flowState);
if("1".equals(flowState)) {
flowVars.put("bizProcInstId", flowVars.get("procInstId"));
}
this.update("updateProcessApprova", flowVars);
}
public List<Map<String,Object>> listSum(Map<String,Object> params){
return this.selectList("listSum", params);
}
/**
* 查询项目及计划总预算用于判断是否超出预算
*/
public Map<String,Object> selectTotalProjectAndNouserActCost(String projectId,List<String> excludeIds){
Map<String,Object> p=new HashMap<>();
p.put("projectId", projectId);
p.put("excludeIds", excludeIds);
return this.selectOne("selectTotalProjectAndNouserActCost", p);
}
/**
* 判断新增预算是否超出项目总预算
* @param projectId
* @param addTotalBudgetCost
* @param excludePhaseId
* @return
*/
public Tips judgetBudget(String projectId,BigDecimal addTotalBudgetCost,List<String> excludeIds){
Tips tips=new Tips("检查预算成功");
Map<String,Object> g=this.selectTotalProjectAndNouserActCost(projectId,excludeIds);
BigDecimal zero=BigDecimal.ZERO;
BigDecimal actCostAmount=NumberUtil.getBigDecimal(g.get("actCostAmount"),zero);
BigDecimal planNouserAt=NumberUtil.getBigDecimal(g.get("planNouserAt"),zero);
BigDecimal actCostAmountNouser = actCostAmount.add(addTotalBudgetCost);
if(actCostAmountNouser.compareTo(planNouserAt)>0) {
tips.setFailureMsg("非人力总成本超出项目总非人力预算");
return tips;
}else {
return tips;
}
}
}

185
xm-core/src/main/java/com/xm/core/service/XmProjectMCostUserService.java

@ -1,185 +0,0 @@
package com.xm.core.service;
import com.mdp.core.entity.Tips;
import com.mdp.core.err.BizException;
import com.mdp.core.service.BaseService;
import com.mdp.core.utils.NumberUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;
import java.math.BigDecimal;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* 父类已经支持增删改查操作,因此,即使本类什么也不写,也已经可以满足一般的增删改查操作了.<br>
* 组织 com.qqkj 顶级模块 oa 大模块 xm 小模块 <br>
* 实体 XmProjectMCostUser XM.xm_project_m_cost_user 当前主键(包括多主键): id;
***/
@Service("xm.core.xmProjectMCostUserService")
public class XmProjectMCostUserService extends BaseService {
/** 请在此类添加自定义函数 */
@Autowired
XmRecordService xmRecordService;
/**
* 流程审批过程中回调该接口更新业务数据
* 如果发起流程时上送了restUrl则无论流程中是否配置了监听器都会在流程发生以下事件时推送数据过来
* eventName: PROCESS_STARTED 流程启动完成 全局
* PROCESS_COMPLETED 流程正常结束 全局
* PROCESS_CANCELLED 流程删除 全局
* create 人工任务启动
* complete 人工任务完成
* assignment 人工任务分配给了具体的人
* delete 人工任务被删除
* TASK_COMPLETED_FORM_DATA_UPDATE 人工任务提交完成后智能表单数据更新
*
* 其中 create/complete/assignment/delete事件是需要在模型中人工节点上配置了委托代理表达式 ${taskBizCallListener}才会推送过来
* 在人工任务节点上配置 任务监听器 建议事件为 complete,其它assignment/create/complete/delete也可以一般建议在complete,委托代理表达式 ${taskBizCallListener}
*
* @param flowVars {flowBranchId,agree,procInstId,startUserid,assignee,actId,taskName,mainTitle,branchId,bizKey,commentMsg,eventName,modelKey}
* @return 如果tips.isOk==false将影响流程提交
**/
public void processApprova(Map<String, Object> flowVars) {
String eventName=(String) flowVars.get("eventName");
String agree=(String) flowVars.get("agree");
String branchId=(String) flowVars.get("branchId");
String costId=(String) flowVars.get("costId");
String bizKey=(String) flowVars.get("bizKey");
if("xm_project_cost_user_approva".equals(bizKey) ) {
}else {
throw new BizException("不支持的业务,请上送业务编码【bizKey】参数");
}
if("complete".equals(eventName)) {
if("1".equals(agree)) {
this.updateFlowStateByProcInst("", flowVars);
}else {
this.updateFlowStateByProcInst("", flowVars);
}
}else {
if("PROCESS_STARTED".equals(eventName)) {
Map<String,Object> bizQuery=new HashMap<>();
bizQuery.put("costId", costId);
if(StringUtils.isEmpty(costId)) {
throw new BizException("请上送costId");
}
if(StringUtils.isEmpty(branchId)) {
throw new BizException("请上送branchId");
}
List<Map<String,Object>> bizList=this.selectListMapByWhere(bizQuery);
if(bizList==null || bizList.size()==0) {
throw new BizException("没有找到对应成本单,成本单为【"+costId+"】");
}else {
Map<String,Object> bizObject=bizList.get(0);
if("1".equals(bizObject.get("bizFlowState"))) {
throw new BizException("该成本单正在审批中,不能再发起审批");
}
}
flowVars.put("id", this.createKey("id"));
this.insert("insertProcessApprova", flowVars);
this.updateFlowStateByProcInst("1", flowVars);
}else if("PROCESS_COMPLETED".equals(eventName)) {
if("1".equals(agree)) {
this.updateFlowStateByProcInst("2", flowVars);
}else {
this.updateFlowStateByProcInst("3", flowVars);
}
}else if("PROCESS_CANCELLED".equals(eventName)) {
this.updateFlowStateByProcInst("4", flowVars);
}
}
}
private void updateFlowStateByProcInstForDeleteSuccess(Map<String, Object> flowVars) {
this.update("updateFlowStateByProcInstForDeleteSuccess", flowVars);
}
public void updateFlowStateByProcInst(String flowState,Map<String, Object> flowVars) {
flowVars.put("flowState", flowState);
flowVars.put("bizFlowState", flowState);
if("1".equals(flowState)) {
flowVars.put("bizProcInstId", flowVars.get("procInstId"));
}
this.update("updateProcessApprova", flowVars);
}
public List<Map<String,Object>> listSum(Map<String,Object> params){
return this.selectList("listSum", params);
}
public List<Map<String,Object>> listSumForSettleGroupByTaskIdAndUserid(Map<String,Object> params){
return this.selectList("listSumForSettleGroupByTaskIdAndUserid", params);
}
/**
* 查询项目及计划总预算用于判断是否超出预算
*/
public Map<String,Object> selectTotalProjectAndUserActCost(String projectId,List<String> excludeIds){
Map<String,Object> p=new HashMap<>();
p.put("projectId", projectId);
p.put("excludeIds", excludeIds);
return this.selectOne("selectTotalProjectAndUserActCost", p);
}
/**
* 判断新增预算是否超出项目总预算
* @param projectId
* @param addTotalBudgetCost
* @return
*/
public Tips judgetBudget(String projectId,BigDecimal addTotalBudgetCost,BigDecimal addBudgetCostIuserAt,BigDecimal addBudgetCostOuserAt,List<String> excludeIds){
Tips tips=new Tips("检查预算成功");
Map<String,Object> g=this.selectTotalProjectAndUserActCost(projectId,excludeIds);
BigDecimal totalBudgetCost=BigDecimal.ZERO;
BigDecimal zero=BigDecimal.ZERO;
addTotalBudgetCost=NumberUtil.getBigDecimal(addTotalBudgetCost,zero);
addBudgetCostIuserAt=NumberUtil.getBigDecimal(addBudgetCostIuserAt,zero);
addBudgetCostOuserAt=NumberUtil.getBigDecimal(addBudgetCostOuserAt,zero);
BigDecimal actCostUserAmount=NumberUtil.getBigDecimal(g.get("actCostUserAmount"),zero);
BigDecimal actCostIuserAmount=NumberUtil.getBigDecimal(g.get("actCostIuserAmount"),zero);
BigDecimal actCostOuserAmount=NumberUtil.getBigDecimal(g.get("actCostOuserAmount"),zero);
BigDecimal planIuserAt=NumberUtil.getBigDecimal(g.get("planIuserAt"),zero);
BigDecimal planOuserAt=NumberUtil.getBigDecimal(g.get("planOuserAt"),zero);
BigDecimal planUserAt=totalBudgetCost.add(planIuserAt).add(planOuserAt);
if(actCostIuserAmount.add(addBudgetCostIuserAt).compareTo(planIuserAt)>0) {
tips.setFailureMsg("内部人力总支出超出项目内部人力预算");
return tips;
}
if(actCostOuserAmount.add(addBudgetCostOuserAt).compareTo(planOuserAt)>0) {
tips.setFailureMsg("外购人力总支出超出项目总外购人力预算");
return tips;
}
BigDecimal actCostUserAmountUser = actCostUserAmount.add(addTotalBudgetCost);
if(actCostUserAmountUser.compareTo(planUserAt)>0) {
tips.setFailureMsg("人力总支出已超出项目总人力预算");
return tips;
}else {
return tips;
}
}
public int updateExecuserStatusByExecuserProcInstId(String execuserProcInstId,String execuserStatus) {
Map<String,Object> m=new HashMap<>();
m.put("execuserProcInstId", execuserProcInstId);
m.put("execuserStatus", execuserStatus);
return this.update("updateExecuserStatusByExecuserProcInstId", m);
}
public int deleteByExecuserProcInstId(String execuserProcInstId) {
Map<String,Object> m=new HashMap<>();
m.put("execuserProcInstId", execuserProcInstId);
return this.update("deleteByExecuserProcInstId", m);
}
}
Loading…
Cancel
Save