You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
haojing/classbean/com/customization/governtask/CustomGetTaskAccountCmd.java

291 lines
13 KiB
Java

package com.customization.governtask;
import com.alibaba.fastjson.JSONObject;
import com.api.govern.biz.GovernRightManager;
import com.api.govern.cmd.task.GetTaskAccountCmd;
import com.api.govern.constant.GovernTableType;
import com.api.govern.dao.read.GovernCategoryReadDao;
import com.api.govern.dao.read.GovernFieldReadDao;
import com.api.govern.dao.read.GovernSearchReadDao;
import com.api.govern.dao.read.GovernTaskReadDao;
import com.api.meeting.util.PageUidFactory;
import com.api.workplan.util.TimeZoneCastUtil;
import com.cloudstore.dev.api.util.Util_TableMap;
import com.cloudstore.eccom.constant.WeaBoolAttr;
import com.cloudstore.eccom.constant.WeaResultConstant;
import com.cloudstore.eccom.pc.table.*;
import com.engine.core.cfg.annotation.CommandDynamicProxy;
import com.engine.core.interceptor.AbstractCommandProxy;
import com.engine.core.interceptor.Command;
import com.engine.core.interceptor.CommandContext;
import com.engine.govern.util.GovernFieldSettingUtil;
import com.engine.govern.util.ParamsUtil;
import com.engine.meeting.cmd.calendar.GetCalendarListCmd;
import com.weaver.formmodel.util.DateHelper;
import weaver.conn.RecordSet;
import weaver.general.PageIdConst;
import weaver.general.Util;
import weaver.hrm.User;
import weaver.meeting.MeetingShareUtil;
import weaver.meeting.MeetingUtil;
import weaver.meeting.defined.MeetingFieldComInfo;
import weaver.proj.util.SQLUtil;
import weaver.systeminfo.SystemEnv;
import java.text.SimpleDateFormat;
import java.util.*;
/**
* @Classname CustomGetTaskAccountCmd
* @Description TODO()
* @Author wanxq
* @Date 2019年09月20日09:10:01
**/
@CommandDynamicProxy(target = GetTaskAccountCmd.class, desc="修改督办任务列表不同任务状态颜色")
public class CustomGetTaskAccountCmd extends AbstractCommandProxy<Map<String,Object>> {
@Override
public Map<String, Object> execute(Command<Map<String, Object>> targetCommand) {
//获取到被代理对象
GetTaskAccountCmd getTaskAccountCmd = (GetTaskAccountCmd)targetCommand;
//获取被代理对象的参数
Map<String, Object> params = getTaskAccountCmd.getParams();
//参数回写
//getTaskAccountCmd.setParams(params);
//执行标准的业务处理
Map<String, Object> result = nextExecute(targetCommand);
//对返回值做加工处理
User user = getTaskAccountCmd.getUser();
result = customGetTaskAccount(params,user);
String currentdate = DateHelper.getCurrentDate();
ArrayList prjList = (ArrayList) result.get("prjList");
ArrayList prjListNew = new ArrayList();
System.out.println(JSONObject.toJSON(prjList));
RecordSet rs = new RecordSet();
if(prjList!=null && prjList.size()>0){
for(int i=0;i<prjList.size();i++){
HashMap prjItemMap = (HashMap) prjList.get(i);
String prjid = (String) prjItemMap.get("prjid");
String state = (String) prjItemMap.get("state");
System.out.println("prjid=================="+prjid);
System.out.println("state=================="+state);
if("进行中".equals(state)){
String sql = "select * from govern_task where id="+prjid;
System.out.println("task sql ================="+sql);
rs.execute(sql);
if(rs.next()){
String enddate = Util.null2String(rs.getString("enddate"));
long difdays = DateHelper.getDaysBetween(enddate,currentdate);
if(difdays<=3){
prjItemMap.put("color","#FF8800");
}
}
}else if("已超期".equals(state)){
prjItemMap.put("color","#FF0000");
}
prjListNew.add(i,prjItemMap);
}
}
result.put("prjList",prjListNew);
return result;
}
public Map<String, Object> customGetTaskAccount(Map<String, Object> params, User user) {
Map<String, Object> result = new HashMap<>();
GovernTaskReadDao governTaskReadDao = new GovernTaskReadDao();
RecordSet recordSet = new RecordSet();
if (params.containsKey("getPages")) { //获取督办事项分页数据
result.putAll( governTaskReadDao.getTaskAccountData(params, user, recordSet));
}else { //获取任务台账列表数据
result.putAll(getTaskAccountList(params, user));
}
return result;
}
public Map<String,Object> getTaskAccountList(Map<String, Object> params, User user) {
Map<String, Object> resultMap = new HashMap<>();
Map<String,Object> param = new HashMap<>();
GovernCategoryReadDao categoryReadDao = new GovernCategoryReadDao();
GovernSearchReadDao governSearchReadDao = new GovernSearchReadDao();
StringBuffer sb = new StringBuffer();
WeaTable weaTable = new WeaTable();
RecordSet recordSet = new RecordSet();
String projid = ParamsUtil.toString(params, "projid");
String dealtype = ParamsUtil.toStringDefuat(params, "dealtype");
int categoryid = ParamsUtil.toInt(params, "categoryid");//左侧树的categoryid
int prjCategory = ParamsUtil.toInt(params, "prjCategory");//事项的categoryid
String backfields = "t1.id ,t1.feedquency,t1.feeddays,t1.startdate startdate0,t1.feeddate feeddate0 ";
String sqlWhere = "where 1= 1 and t1.projid = "+ projid + " and t1.status<>5 ";
String fromSql = " from govern_task t1 left join govern_taskextend_" + prjCategory + " t4 on t1.id=t4.sourceid ";
boolean isGroup = categoryReadDao.isCategoryGroup(categoryid + "");
if(isGroup){ categoryid = 0; }
//************处理表格********************
param.put("source",1);
param.put("isshowlist" ,1);
param.put("categoryid" ,categoryid);
GovernFieldReadDao governFieldReadDao = new GovernFieldReadDao();
List<Map<String, Object>> fields = governFieldReadDao.getFields(param);
weaTable.getColumns().add(new WeaTableColumn("id").setDisplay(WeaBoolAttr.FALSE)); //设置为不显示
for (Map<String, Object> field : fields) {
WeaTableColumn weaTableColumn = null;
String width = "20%";
String fieldid = ParamsUtil.toString(field, "id");
String fieldname = ParamsUtil.toString(field, "fieldname");
String name = GovernFieldSettingUtil.convertLanguage(ParamsUtil.toString(field, "name_task"), user);
int issystem = ParamsUtil.toInt(field, "issystem");
String fieldhtmltype = ParamsUtil.toString(field, "fieldhtmltype");
String fieldtype = ParamsUtil.toString(field, "fieldtype");
String fielddbtype = ParamsUtil.toString(field, "fielddbtype");
String otherpara = "column:id+"+user.getLanguage()+"+"+fieldhtmltype+"+"+fieldid+"+"+fieldname+"+"+fieldtype+"+"+fielddbtype+"+";
if("name".equals(fieldname)){
width = "30%";
}
if("enddate".equals(fieldname)){
width = "25%";
}
if("status".equals(fieldname)){
width = "24%";
}
if (issystem == 1) {
if(fieldname.equals("feedstatus")){//最新反馈状态
sb.append(",t1.status feedstatus");
otherpara = "column:id+column:feedquency+column:feeddays+column:startdate0+column:feeddate0" + "+" + user.getLanguage();
weaTableColumn = new WeaTableColumn(width, name, "feedstatus", "feedstatus", "com.api.govern.util.GovernTransMethod.getFeedstatus"
, otherpara);
}else if(fieldname.equals("feedid")){//最新反馈内容
sb.append(",t1." + fieldname);
otherpara = "column:id+" + "task";
weaTableColumn = new WeaTableColumn(width, name, "feedid", "feedid", "com.api.govern.util.GovernTransMethod.getFeedField", otherpara);
}else{
sb.append(",t1." + fieldname);
String orderkey = ParamsUtil.covertOrderkey(fieldname);
weaTableColumn = new WeaTableColumn(width, name, fieldname, orderkey, "com.api.govern.util.GovernTransMethod.getListField", otherpara);
}
}else{
sb.append(",t4." + fieldname);
weaTableColumn = new WeaTableColumn(width, name, fieldname, fieldname, "com.api.govern.util.GovernTransMethod.getListField", otherpara);
}
weaTable.getColumns().add(weaTableColumn);
}
//************处理sql*******************
backfields = SQLUtil.filteSql(recordSet.getDBType(), backfields + sb.toString());
if ("0".equals(dealtype)) {//全部任务
String rightStr = new GovernRightManager(user).getDataShareByUser("1","",false);
sqlWhere += " and exists (select 1 from "+rightStr+" t where t.sourceid=t1.id) ";
}
if ("1".equals(dealtype)) {//主办任务
sqlWhere += " and (t1.sponsor='" + user.getUID() + "') ";
}
if ("2".equals(dealtype)) {//协办任务
String coordinatorStr = "";
if ("mysql".equals(recordSet.getDBType())) {
coordinatorStr = "CONCAT(',',t1.coordinator,',')";
} else if ("sqlserver".equals(recordSet.getDBType())) {
coordinatorStr = "','+cast(t1.coordinator as varchar(4000))+','";
} else {
coordinatorStr = "','||t1.coordinator||','";
}
sqlWhere += " and (" + coordinatorStr + " like '%," + user.getUID() + ",%') ";
}
String isSuper = Util.null2String(params.get("isSuper"));
if(isSuper.equals("1")){
sqlWhere += governSearchReadDao.getSearchColumnsSql(params);
}else{
sqlWhere += governSearchReadDao.getQuickSearchSqlWhere(params);
}
//************************************************************
weaTable.setPageUID(GovernTableType.GOV_TASK_LIST.getPageUid());
weaTable.setPageID(GovernTableType.GOV_TASK_LIST.getPageUid());
weaTable.setPagesize(Util.null2String(GovernTableType.GOV_TASK_LIST.getPageSize()));
weaTable.setBackfields(backfields);
weaTable.setSqlform(fromSql);
weaTable.setSqlwhere(sqlWhere);
weaTable.setSqlorderby("createdate desc,createtime desc");
weaTable.setSqlprimarykey("t1.id");
weaTable.setSqlisdistinct("false");
weaTable.setCheckboxList(null);
weaTable.setCheckboxpopedom(null);
WeaTableOperates operateBean = new WeaTableOperates();
WeaTablePopedom popedom = new WeaTablePopedom();
popedom.setAsync(false);
popedom.setTransmethod("com.api.govern.util.GovernTransMethod.getSearchOperation");
popedom.setOtherpara("column:xk_categoryid+column:dealtype+column:dealer+column:issign+column:tasktype0+column:xk_status+column:id");
popedom.setOtherpara2("cur_operator+" + user.getUID());
WeaTableOperate operate = new WeaTableOperate();
operate.setHref("");
operate.setText("反馈");
WeaTableOperate operate1 = new WeaTableOperate();
operate1.setHref("");
operate1.setText("分解");
WeaTableOperate operate2 = new WeaTableOperate();
operate2.setHref("");
operate2.setText("变更");
WeaTableOperate operate3 = new WeaTableOperate();
operate3.setHref("");
operate3.setText("催办");
WeaTableOperate operate4 = new WeaTableOperate();
operate4.setHref("");
operate4.setText("完成");
WeaTableOperate operate5 = new WeaTableOperate();
operate5.setHref("");
operate5.setText("复核");
WeaTableOperate operate6 = new WeaTableOperate();
operate6.setHref("");
operate6.setText("评价");
WeaTableOperate operate7 = new WeaTableOperate();
operate7.setHref("");
operate7.setText("预警");
List<WeaTableOperate> operates = new ArrayList<WeaTableOperate>();
operates.add(operate);
operates.add(operate1);
operates.add(operate2);
operates.add(operate3);
operates.add(operate4);
operates.add(operate5);
operates.add(operate6);
operates.add(operate7);
operateBean.setOperate(operates);
weaTable.setOperates(operateBean);
Map<String, Object> tableResult = weaTable.makeDataResult();
resultMap.put("sessionkey", tableResult.get(WeaResultConstant.RESULT_DATAS));
return resultMap;
}
}