Browse Source

添加节点类型、标签等

master
陈裕财 4 years ago
parent
commit
bec4fa9d56
  1. 7
      xm-core/src/main/java/com/xm/core/ctrl/XmMenuController.java
  2. 8
      xm-core/src/main/java/com/xm/core/ctrl/XmQuestionController.java
  3. 10
      xm-core/src/main/java/com/xm/core/ctrl/XmTaskController.java
  4. 29
      xm-core/src/main/java/com/xm/core/ctrl/XmTaskWorkloadController.java
  5. 15
      xm-core/src/main/java/com/xm/core/service/XmTaskService.java
  6. 23
      xm-core/src/main/resources/mybatis/mapper/xm/core/dao/XmTaskMapper.xml

7
xm-core/src/main/java/com/xm/core/ctrl/XmMenuController.java

@ -13,6 +13,7 @@ import com.mdp.safe.client.entity.User;
import com.mdp.safe.client.utils.LoginUtils;
import com.xm.core.PubTool;
import com.xm.core.entity.XmMenu;
import com.xm.core.entity.XmQuestion;
import com.xm.core.entity.XmTask;
import com.xm.core.service.XmMenuService;
import com.xm.core.service.XmGroupService;
@ -66,6 +67,9 @@ public class XmMenuController {
@Autowired
private XmGroupService groupService;
Map<String,Object> fieldsMap = BaseUtils.toMap(new XmMenu());
@ApiOperation( value = "查询项目菜单表信息列表",notes="listXmMenu,条件之间是 and关系,模糊查询写法如 {studentName:'%才哥%'}")
@ApiImplicitParams({
@ApiImplicitParam(name="menuId",value="菜单编号,主键",required=false),
@ -417,6 +421,9 @@ public class XmMenuController {
return ResponseHelper.failed(fieldName+"-no-edit",fieldName+"不允许修改");
}
}
Set<String> fieldKey=xmMenuMap.keySet().stream().filter(i->fieldsMap.containsKey(i)).collect(Collectors.toSet());
fieldKey=fieldKey.stream().filter(i->!StringUtils.isEmpty(xmMenuMap.get(i) )).collect(Collectors.toSet());
xmMenuService.editSomeFields(xmMenuMap);
xmRecordService.addXmMenuRecord(xmMenu.getProductId(),xmMenu.getMenuId(),"修改产品需求","修改产品需求"+xmMenu.getMenuName(),"", JSON.toJSONString(xmMenu));

8
xm-core/src/main/java/com/xm/core/ctrl/XmQuestionController.java

@ -14,6 +14,7 @@ import com.mdp.safe.client.entity.User;
import com.mdp.safe.client.utils.LoginUtils;
import com.xm.core.entity.XmMenu;
import com.xm.core.entity.XmQuestion;
import com.xm.core.entity.XmTask;
import com.xm.core.service.XmQuestionService;
import com.xm.core.service.push.XmPushMsgService;
import com.xm.core.vo.XmQuestionVo;
@ -25,6 +26,7 @@ import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.*;
import java.util.*;
import java.util.stream.Collectors;
/**
* url编制采用rest风格,如对XM.xm_question xm_question的操作有增删改查,对应的url分别为:<br>
@ -50,6 +52,7 @@ public class XmQuestionController {
@Autowired
private XmPushMsgService xmPushMsgService;
Map<String,Object> fieldsMap = BaseUtils.toMap(new XmQuestion());
@ApiOperation( value = "查询xm_question信息列表",notes="listXmQuestion,条件之间是 and关系,模糊查询写法如 {studentName:'%才哥%'}")
@ApiImplicitParams({
@ -251,6 +254,9 @@ public class XmQuestionController {
if(xmQuestionsDb==null ||xmQuestionsDb.size()==0){
ResponseHelper.failed("bugs-0","该bug已不存在");
}
Set<String> fieldKey=xmQuestionMap.keySet().stream().filter(i->fieldsMap.containsKey(i)).collect(Collectors.toSet());
fieldKey=fieldKey.stream().filter(i->!StringUtils.isEmpty(xmQuestionMap.get(i) )).collect(Collectors.toSet());
if(fieldKey.size()>0){
Set<String> fields=new HashSet<>();
for (String fieldName : xmQuestionMap.keySet()) {
if(fields.contains(fieldName)){
@ -258,6 +264,8 @@ public class XmQuestionController {
}
}
xmQuestionService.editSomeFields(xmQuestionMap);
}
//m.put("data",xmMenu);
}catch (BizException e) {

10
xm-core/src/main/java/com/xm/core/ctrl/XmTaskController.java

@ -76,6 +76,8 @@ public class XmTaskController {
@Autowired
XmProductService xmProductService;
Map<String,Object> fieldsMap = BaseUtils.toMap(new XmTask());
@ApiOperation( value = "查询xm_task信息列表",notes="listXmTask,条件之间是 and关系,模糊查询写法如 {studentName:'%才哥%'}")
@ApiImplicitParams({
@ApiImplicitParam(name="id",value="任务编号,主键",required=false),
@ -315,9 +317,17 @@ public class XmTaskController {
return ResponseHelper.failed(fieldName+"-no-edit",fieldName+"不允许修改");
}
}
Set<String> fieldKey=xmTaskMap.keySet().stream().filter(i-> fieldsMap.containsKey(i)).collect(Collectors.toSet());
fieldKey=fieldKey.stream().filter(i->!StringUtils.isEmpty(xmTaskMap.get(i) )).collect(Collectors.toSet());
if(fieldKey.size()>0){
fieldKey=fieldKey.stream().filter(i->!StringUtils.isEmpty(xmTaskMap.get(i) )).collect(Collectors.toSet());
xmTaskService.editSomeFields(xmTaskMap);
xmRecordService.addXmTaskRecord(xmTask.getProjectId(),xmTask.getId(),"修改项目任务","修改任务"+xmTask.getMenuName(),"", JSON.toJSONString(xmTask));
}
//m.put("data",xmMenu);
}catch (BizException e) {
tips=e.getTips();

29
xm-core/src/main/java/com/xm/core/ctrl/XmTaskWorkloadController.java

@ -121,6 +121,9 @@ public class XmTaskWorkloadController {
if(xmTaskDb==null ){
return failed("data-0","任务已不存在");
}
if("1".equals(xmTaskDb.getNtype())){
return failed("ntype-1",xmTaskDb.getName()+"为计划,不是任务,不用登记工时");
}
User user= LoginUtils.getCurrentUserInfo();
if(!(user.getUserid().equals(xmTaskDb.getCreateUserid())|| user.getUserid().equals(xmTaskDb.getExecutorUserid()))){
Tips isCreate=xmGroupService.checkIsAdmOrTeamHeadOrAssByPtype(user,xmTaskDb.getCreateUserid(),xmTaskDb.getPtype(),xmTaskDb.getProductId(),xmTaskDb.getProjectId());
@ -142,6 +145,8 @@ public class XmTaskWorkloadController {
xmTaskWorkload.setWstatus("0");
xmTaskWorkload.setProjectId(xmTaskDb.getProjectId());
xmTaskWorkloadService.insert(xmTaskWorkload);
this.xmTaskService.calcWorkloadByRecord(xmTaskDb.getId());
this.xmTaskService.sumParents(xmTaskDb);
m.put("data",xmTaskWorkload);
}catch (BizException e) {
tips=e.getTips();
@ -168,8 +173,29 @@ public class XmTaskWorkloadController {
XmTaskWorkload xmTaskWorkloadDb = xmTaskWorkloadService.selectOneObject(xmTaskWorkload);
if( xmTaskWorkloadDb == null ){
return failed("data-not-exists","数据不存在,无法修改");
}
XmTask xmTaskDb=this.xmTaskService.selectOneObject(new XmTask(xmTaskWorkloadDb.getTaskId()));
if(xmTaskDb==null ){
return failed("data-0","任务已不存在");
}
if("1".equals(xmTaskDb.getNtype())){
return failed("ntype-1",xmTaskDb.getName()+"为计划,不是任务,不用登记工时");
}
User user= LoginUtils.getCurrentUserInfo();
if(!(user.getUserid().equals(xmTaskDb.getCreateUserid())|| user.getUserid().equals(xmTaskDb.getExecutorUserid()))){
Tips isCreate=xmGroupService.checkIsAdmOrTeamHeadOrAssByPtype(user,xmTaskDb.getCreateUserid(),xmTaskDb.getPtype(),xmTaskDb.getProductId(),xmTaskDb.getProjectId());
if(!isCreate.isOk()){
Tips isExec=xmGroupService.checkIsAdmOrTeamHeadOrAssByPtype(user,xmTaskDb.getExecutorUserid(),xmTaskDb.getPtype(),xmTaskDb.getProductId(),xmTaskDb.getProjectId());
if(!isExec.isOk()){
return failed("noqx-0","你无权针对该业务进行报工");
}
}
}
xmTaskWorkloadService.updateSomeFieldByPk(xmTaskWorkload);
this.xmTaskService.sumParents(xmTaskDb);
this.xmTaskService.calcWorkloadByRecord(xmTaskWorkload.getTaskId());
m.put("data",xmTaskWorkload);
}catch (BizException e) {
tips=e.getTips();
@ -246,13 +272,14 @@ public class XmTaskWorkloadController {
List<String> msgs=new ArrayList<>();
if(canDel.size()>0){
xmTaskWorkloadService.batchDelete(canDel);
this.xmTaskService.calcWorkloadByRecord(canDelTaskMap.keySet().stream().collect(Collectors.toList()));
this.xmTaskService.batchSumParents(canDelTaskMap.values().stream().collect(Collectors.toList()));
msgs.add("成功删除"+canDel.size()+"条工时单据。");
}
if(state1Ndel.size()>0){
msgs.add("以下"+state1Ndel.size()+"条工时单据状态为确认状态,不允许删除。【"+state1Ndel.stream().map(i->i.getUsername()+i.getBizDate()).collect(Collectors.joining(","))+"】");
}
if(noQxDel.size()>0){
xmTaskWorkloadService.batchDelete(canDel);
msgs.add("以下"+noQxDel.size()+"条工时单据无权限删除,您只能删除你负责的任务的工时单据,【"+noQxDel.stream().map(i->i.getUsername()+i.getBizDate()).collect(Collectors.joining(","))+"】.");
}
if(canDel.size()>0){

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

@ -725,5 +725,20 @@ public class XmTaskService extends BaseService {
public void editSomeFields(Map<String, Object> xmTaskMap) {
super.update("editSomeFields",xmTaskMap);
}
public void calcWorkloadByRecord(String id) {
if(!StringUtils.hasText(id)){
return;
}
List<String> ids=new ArrayList<>();
ids.add(id);
calcWorkloadByRecord(ids);
}
public void calcWorkloadByRecord(List<String> ids) {
if(ids==null || ids.size()<=0){
return;
}
ids=ids.stream().collect(Collectors.toSet()).stream().collect(Collectors.toList());
super.update("calcWorkloadByRecord",ids);
}
}

23
xm-core/src/main/resources/mybatis/mapper/xm/core/dao/XmTaskMapper.xml

@ -240,6 +240,7 @@
sum( ifnull( t.budget_workload, 0 ) ) AS budget_workload,
sum( ifnull( t.act_cost, 0 ) ) AS act_cost,
sum( ifnull( t.act_workload, 0 ) ) AS act_workload,
sum( ifnull( t.rworkload, if(t.budget_workload>0,(t.budget_workload-ifnull(t.act_workload,0)),0) ) ) AS rworkload,
sum( ifnull( t.budget_workload, 0 ) * ifnull( t.rate, 0 ) ) AS budget_workload_rate,
sum( ifnull(t.rate,0)) as total_rate,
min( t.start_time ) AS start_time,
@ -258,7 +259,7 @@
SET
res.act_cost = t2.act_cost,
res.act_workload = t2.act_workload,
res.rate = case when t2.budget_workload=0 or t2.budget_workload is null then if(t2.children_cnt=0 or t2.children_cnt is null,t2.total_rate,t2.total_rate/t2.children_cnt) else t2.budget_workload_rate / t2.budget_workload end,
res.rate = case when (t2.budget_workload=0 or t2.budget_workload is null) and (t2.act_workload is null or t2.act_workload =0 ) and t2.rworkload is null then if(t2.children_cnt=0 or t2.children_cnt is null,t2.total_rate,t2.total_rate/t2.children_cnt) else ifnull(t2.act_workload,0) / ifnull(t2.act_workload,0)+ifnull(t2.rworkload) end,
res.start_time = ifnull(res.start_time,t2.start_time),
res.end_time = ifnull(t2.end_time,t2.end_time),
res.act_start_time = t2.act_start_time,
@ -282,6 +283,8 @@
count(1) as children_cnt,
sum( ifnull( t.act_cost, 0 ) ) AS act_cost,
sum( ifnull( t.act_workload, 0 ) ) AS act_workload,
sum( ifnull( t.rworkload, if(t.budget_workload>0,(t.budget_workload-ifnull(t.act_workload,0)),0) ) ) AS rworkload,
sum( ifnull( t.budget_workload, 0 ) * ifnull( t.rate, 0 ) ) as budget_workload_rate,
sum( ifnull(t.rate,0)) as total_rate,
sum( ifnull( t.budget_workload, 0 )) as budget_workload,
@ -297,7 +300,7 @@
SET
res.act_cost = t2.act_cost,
res.act_workload = t2.act_workload,
res.rate = case when t2.budget_workload=0 or t2.budget_workload is null then if(t2.children_cnt=0 or t2.children_cnt is null,t2.total_rate,t2.total_rate/t2.children_cnt) else t2.budget_workload_rate / t2.budget_workload end,
res.rate = case when (t2.budget_workload=0 or t2.budget_workload is null) and (t2.act_workload is null or t2.act_workload =0 ) and t2.rworkload is null then if(t2.children_cnt=0 or t2.children_cnt is null,t2.total_rate,t2.total_rate/t2.children_cnt) else ifnull(t2.act_workload,0) / ifnull(t2.act_workload,0)+ifnull(t2.rworkload) end,
res.start_time = ifnull(res.start_time,t2.start_time),
res.end_time = ifnull(t2.end_time,t2.end_time),
res.act_start_time = t2.act_start_time,
@ -366,6 +369,22 @@
#{item}
</foreach>
</update>
<update id="calcWorkloadByRecord" parameterType="List">
update xm_task res left join
(select w.task_id, sum(ifnull(w.workload,0)) as workload from xm_task_workload w where w.task_id in
<foreach collection="list" item="item" index="index" open="(" separator="," close=")" >
#{item}
</foreach>
group by w.task_id
)
as w on res.id=w.task_id
set res.act_workload=w.workload,res.rate=if(res.rworkload is null and ifnull(w.workload,0)>0 and res.budget_workload>0,ifnull(res.act_workload,0)*100 / (res.budget_workload),ifnull(w.workload,0)*100/(ifnull(w.workload,0)+res.rworkload))
where res.id in
<foreach collection="list" item="item" index="index" open="(" separator="," close=")" >
#{item}
</foreach>
</update>
<!--结束 自定义sql函数区域-->

Loading…
Cancel
Save