| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382 |
- package restcontroller.system.datateam;
- import beans.datacontrllog.DataContrlLog;
- import beans.datateam.DataTeam;
- import beans.phonebook.PhoneBook;
- import com.alibaba.fastjson.JSONArray;
- import com.alibaba.fastjson.JSONObject;
- import common.Controller;
- import common.YosException;
- import common.annotation.API;
- import common.annotation.CACHEING;
- import common.annotation.CACHEING_CLEAN;
- import common.data.*;
- import org.apache.commons.lang.StringUtils;
- import restcontroller.R;
- import restcontroller.webmanage.executorService.Executor;
- import java.util.ArrayList;
- import java.util.HashMap;
- public class datateam extends Controller {
- public datateam(JSONObject content) throws YosException {
- super(content);
- }
- @API(title = "数据团队查询", apiversion = R.ID20220930103501.v1.class)
- @CACHEING
- public String queryDataTeam() throws YosException {
- String ownertable = content.getString("ownertable");
- Long ownerid = content.getLong("ownerid");
- RowsMap rowsmap = DataTeam.queryTeam(this, ownertable, ownerid);
- JSONArray array = new JSONArray();
- for (String sys_enterpriseid : rowsmap.keySet()) {
- Rows rows = rowsmap.get(sys_enterpriseid);
- JSONObject team = new JSONObject();
- team.put("ismyteam", rows.toArrayList("userid").contains(String.valueOf(userid)) ? 1 : 0);
- Rows teamleader = DataTeam.getLeader(this, ownertable, ownerid, Long.parseLong(sys_enterpriseid));
- team.put("teamleader", teamleader);
- if (teamleader.isNotEmpty()) {
- long userid = teamleader.get(0).getLong("userid");
- ArrayList<Long> myteam = dbConnect.runSqlQuery("select userid from sys_userteam where isproxy=0 and siteid ='" + siteid + "' and createuserid=" + userid).toArrayList("userid", new ArrayList<>());
- int indexOf = -1;
- for (Row row : rows) {
- if (row.getLong("isleader") == 1) {
- indexOf = rows.indexOf(row);
- }
- if (myteam.contains(row.getLong("userid"))) {
- row.put("isdefault", 1);
- } else {
- row.put("isdefault", 0);
- }
- }
- rows.remove(indexOf);
- }
- team.put("team", rows);
- if (Long.parseLong(sys_enterpriseid) > 0) {
- Rows sys_enterpriseRows = dbConnect.runSqlQuery("select *from sys_enterprise where siteid='" + siteid + "' and sys_enterpriseid='" + sys_enterpriseid + "'");
- if (!sys_enterpriseRows.isEmpty()) {
- team.put("teamname", sys_enterpriseRows.get(0).getString("abbreviation"));
- } else {
- team.put("teamname", teamleader.get(0).getString("name"));
- }
- } else {
- team.put("teamname", teamleader.get(0).getString("name"));
- }
- array.add(team);
- }
- return getSucReturnObject().setData(array).toString();
- }
- @API(title = "数据团队新增", apiversion = R.ID20220930103601.v1.class)
- @CACHEING_CLEAN(apiversions = {R.ID20220930103501.class, R.ID20221018122201.class})
- public String insertDataTeam() throws YosException {
- String ownertable = content.getString("ownertable");
- long ownerid = content.getLong("ownerid");
- int editPermissions = editPermissions(ownertable, ownerid);
- if (editPermissions == 1) {
- return getReturnObject().setCode("0136", new String[0]).toString();//非任务创建人及负责人不可进行团队维护
- } else if (editPermissions == 2) {
- return getReturnObject().setCode("0137", new String[0]).toString();//非团队负责人不可进行团队维护
- }
- JSONArray useridsArray = content.getJSONArray("userids");
- boolean justuserids = content.getBooleanValue("justuserids");
- boolean ischange = false;
- Rows oldTeamRows = DataTeam.queryTeamRowWithoutHeadpic(this, ownertable, ownerid);
- if (justuserids) {
- RowsMap teamRowsMap = DataTeam.queryTeam(this, ownertable, ownerid);
- if (teamRowsMap.containsKey(String.valueOf(sys_enterpriseid))) {
- RowsMap userRowsMap = teamRowsMap.get(String.valueOf(sys_enterpriseid)).toRowsMap("userid");
- for (Object id : useridsArray) {
- if (!userRowsMap.containsKey(id.toString())) {
- DataTeam.createTeam(this, ownertable, ownerid, Long.parseLong(id.toString()));
- ischange = true;
- cleanAllDataPool(Long.parseLong(id.toString()));
- }
- }
- for (String id : userRowsMap.keySet()) {
- boolean isdelete = true;
- if (userRowsMap.get(id).isNotEmpty() && userRowsMap.get(id).get(0).getBoolean("isleader")) {
- isdelete = false;
- } else {
- for (Object o : useridsArray) {
- if (id.equals(o.toString())) {
- isdelete = false;
- }
- }
- }
- if (isdelete) {
- DataTeam.deleteTeam(this, ownertable, ownerid, Long.parseLong(id));
- ischange = true;
- cleanAllDataPool(Long.parseLong(id));
- }
- }
- }
- } else {
- for (Object o : useridsArray) {
- DataTeam.createTeam(this, ownertable, ownerid, Long.parseLong(o.toString()));
- cleanAllDataPool(Long.parseLong(o.toString()));
- }
- ischange = true;
- }
- if (ownertable.equals("sa_customers") || ownertable.equals("sa_project")) {
- DataTeam.updatephonebookteam(this, ownertable, ownerid);
- }
- StringBuffer str = new StringBuffer();
- Rows newTeamRows = DataTeam.queryTeamRowWithoutHeadpic(this, ownertable, ownerid);
- RowsMap teamRowsMap = newTeamRows.toRowsMap("isleader");
- if (teamRowsMap.containsKey("0")) {
- ArrayList<String> nameList = teamRowsMap.get("0").toArrayList("name");
- for (String name : nameList) {
- str.append(name).append("、");
- }
- if (str.length() > 0) {
- str.delete(str.length() - 1, str.length());
- }
- }
- if (ischange && oldTeamRows.toRowsMap("isleader").get("0").isNotEmpty()) {
- DataContrlLog.createLog(this, ownertable, ownerid, "变更团队参与人", "变更团队参与人为" + str).insert();
- }
- if (ischange && content.getBooleanValue("isparenttask")) {
- if (ownertable.equals("sys_task")) {
- JSONObject extradata = new JSONObject();
- ArrayList<Long> extraUserList = oldTeamRows.toArrayList("userid", new ArrayList<>());
- extradata.put("extraUserList", extraUserList);
- Executor.sendEml_controller(this, "taskleaderchange_old", ownerid, extradata);
- JSONObject extradata1 = new JSONObject();
- ArrayList<Long> extraUserList1 = newTeamRows.toArrayList("userid", new ArrayList<>());
- extraUserList1.removeAll(extraUserList);
- extradata1.put("extraUserList", extraUserList1);
- Executor.sendEml_controller(this, "taskadd", ownerid, extradata1);
- }
- }
- cleanAllDataPool();
- return getSucReturnObject().toString();
- }
- @API(title = "数据团队设置负责人", apiversion = R.ID20220930103701.v1.class)
- @CACHEING_CLEAN(apiversions = {R.ID20220930103501.class, R.ID20221012164402.class, R.ID20221014164702.class})
- public String setTeamLeader() throws YosException {
- String ownertable = content.getString("ownertable");
- long ownerid = content.getLong("ownerid");
- long leader_userid = content.getLong("userid");
- int editPermissions = editPermissions(ownertable, ownerid);
- if (editPermissions == 1) {
- return getReturnObject().setCode("0136", new String[0]).toString();//非任务创建人及负责人不可进行团队维护
- } else if (editPermissions == 2) {
- return getReturnObject().setCode("0137", new String[0]).toString();//非团队负责人不可进行团队维护
- }
- if (ownertable.equals("sa_project")) {
- Rows rows = dbConnect.runSqlQuery("SELECT * from sys_datatag WHERE ownertable='sa_project' and tag='报备中' and ownerid=" + ownerid + " and siteid='" + siteid + "'");
- if (rows.isNotEmpty()) {
- return getReturnObject().setCode("0689").toString();//非团队负责人不可进行团队维护
- }
- }
- Row user = getUser(leader_userid);
- if (ownertable.equals("sys_phonebook")) {
- Rows phonerbookRows = dbConnect.runSqlQuery("select phonenumber from sys_phonebook where siteid='" + siteid + "' and sys_phonebookid=" + ownerid);
- if (phonerbookRows.isNotEmpty()) {
- if (PhoneBook.verifyphonenumber(this, phonerbookRows.get(0).getString("phonenumber"), leader_userid, ownerid)) {
- return getReturnObject().setCode("0138", new String[]{user.getString("name")}).toString();//user.getString("name") + "通讯录中已存在该联系人手机号
- }
- }
- }
- //
- Rows teamRows = DataTeam.getLeaderWithoutHeadpic(this, ownertable, ownerid);
- // if (rowsMap.containsKey(String.valueOf(sys_enterpriseid))) {
- // RowsMap usermap = rowsMap.get(String.valueOf(sys_enterpriseid)).toRowsMap("userid");
- // if (usermap.containsKey(String.valueOf(leader_userid))) {
- // //如果需要设置的负责人本身就在团队里,则直接设置为负责人
- // DataTeam.setTeamLeader(this, ownertable, ownerid, leader_userid);
- // } else {
- // ArrayList<String> sqlist = new ArrayList<>();
- //
- // //如果需要设置的负责人不在团队里,则获取原团队负责人后删除,再新增团队负责人
- // Rows rows = DataTeam.getLeader(this, ownertable, ownerid, sys_enterpriseid);
- // sqlist.addAll(DataTeam.createTeamSQL(this, ownertable, ownerid, leader_userid));
- // sqlist.addAll(DataTeam.setTeamLeaderSQL(this, ownertable, ownerid, leader_userid));
- // for (Row row : rows) {
- // sqlist.addAll(DataTeam.deleteTeamSQL(this, ownertable, ownerid, row.getLong("userid")));
- // }
- // dbConnect.runSqlUpdate(sqlist);
- // }
- // }
- if (teamRows.isEmpty() || teamRows.get(0).getLong("userid") != leader_userid) {
- ArrayList<String> sqlist = new ArrayList<>();
- sqlist.add("delete from sys_datateam where siteid='" + siteid + "' and ownertable='" + ownertable + "' and ownerid='" + ownerid + "'and sys_enterpriseid=" + sys_enterpriseid);
- sqlist.addAll(DataTeam.createTeamSQL(this, ownertable, ownerid, leader_userid));
- sqlist.addAll(DataTeam.createTeamMemberSql(this, ownertable, ownerid, leader_userid));
- sqlist.addAll(DataTeam.setTeamLeaderSQL(this, ownertable, ownerid, leader_userid));
- dbConnect.runSqlUpdate(sqlist);
- if (content.getBooleanValue("isaddoldleader")) {
- DataTeam.createTeam(this, ownertable, ownerid, teamRows.get(0).getLong("userid"));
- }
- if (ownertable.equals("sa_customers") || ownertable.equals("sa_project")) {
- DataTeam.updatephonebookteam(this, ownertable, ownerid);
- }
- cleanAllDataPool();
- ArrayList<Long> useridList = new ArrayList<>();
- useridList.add(userid);
- ArrayList<Long> useridList1 = new ArrayList<>();
- useridList1.add(leader_userid);
- switch (ownertable) {
- case "sat_orderclue":
- JSONObject extradata = new JSONObject();
- extradata.put("extraUserList", useridList);
- Executor.sendEml_controller(this, "ordercluesetleadertooldleader", ownerid, extradata);
- extradata = new JSONObject();
- extradata.put("extraUserList", useridList1);
- Executor.sendEml_controller(this, "ordercluesetleadertonewleader", ownerid, extradata);
- break;
- case "sa_customers":
- JSONObject extradata1 = new JSONObject();
- extradata1.put("extraUserList", useridList);
- Executor.sendEml_controller(this, "customerssetleadertooldleader", ownerid, extradata1);
- extradata1 = new JSONObject();
- extradata1.put("extraUserList", useridList1);
- Executor.sendEml_controller(this, "customerssetleadertonewleader", ownerid, extradata1);
- break;
- case "sa_project":
- JSONObject extradata2 = new JSONObject();
- extradata2.put("extraUserList", useridList);
- Executor.sendEml_controller(this, "projectsetleadertooldleader", ownerid, extradata2);
- extradata2 = new JSONObject();
- extradata2.put("extraUserList", useridList1);
- Executor.sendEml_controller(this, "projectsetleadertonewleader", ownerid, extradata2);
- break;
- }
- }
- return getSucReturnObject().toString();
- }
- @API(title = "数据团队设置编辑权限", apiversion = R.ID20230302183101.v1.class)
- @CACHEING_CLEAN(apiversions = {R.ID20220930103501.class})
- public String seteditable() throws YosException {
- long sys_datateamid = content.getLong("sys_datateamid");
- boolean editable = content.getBooleanValue("editable");
- dbConnect.runSqlUpdate("update sys_datateam set editable=" + (editable ? 1 : 0) + " where siteid='" + siteid + "' and sys_datateamid=" + sys_datateamid);
- return getSucReturnObject().toString();
- }
- @API(title = "数据团队删除", apiversion = R.ID20220930103801.v1.class)
- @CACHEING_CLEAN(apiversions = {R.ID20220930103501.class, R.ID20221018122201.class})
- public String deleteDataTeam() throws YosException {
- String ownertable = content.getString("ownertable");
- long ownerid = content.getLong("ownerid");
- int editPermissions = editPermissions(ownertable, ownerid);
- if (editPermissions == 1) {
- return getReturnObject().setCode("0136", new String[0]).toString();//非任务创建人及负责人不可进行团队维护
- } else if (editPermissions == 2) {
- return getReturnObject().setCode("0137", new String[0]).toString();//非团队负责人不可进行团队维护
- }
- if (content.containsKey("userid")) {
- long userid = content.getLong("userid");
- DataTeam.deleteTeam(this, ownertable, ownerid, userid);
- cleanAllDataPool(userid);
- }
- if (content.containsKey("userids")) {
- JSONArray useridsArray = content.getJSONArray("userids");
- for (Object o : useridsArray) {
- DataTeam.deleteTeam(this, ownertable, ownerid, Long.parseLong(o.toString()));
- cleanAllDataPool(Long.parseLong(o.toString()));
- }
- }
- if (ownertable.equals("sa_customers") || ownertable.equals("sa_project")) {
- DataTeam.updatephonebookteam(this, ownertable, ownerid);
- }
- cleanAllDataPool();
- return getSucReturnObject().toString();
- }
- @API(title = "数据团队人员选择", apiversion = R.ID20221018122201.v1.class)
- @CACHEING
- public String teamUserSelect() throws YosException {
- String ownertable = content.getString("ownertable");
- long ownerid = content.getLong("ownerid");
- if (getHr(userid).isEmpty()) {
- //如果当前账号不在组织架构中,则直接返回空
- return getSucReturnObject().setData(new Rows()).toString();
- }
- StringBuffer where = new StringBuffer(" 1=1 ");
- if (content.containsKey("where")) {
- JSONObject whereObject = content.getJSONObject("where");
- if (whereObject.containsKey("condition") && !"".equals(whereObject.getString("condition"))) {
- where.append(" and(");
- where.append("t1.name like'%").append(whereObject.getString("condition")).append("%' ");
- where.append("or t1.phonenumber like'%").append(whereObject.getString("condition")).append("%' ");
- where.append("or t1.position like'%").append(whereObject.getString("condition")).append("%' ");
- where.append(")");
- }
- if (whereObject.getBooleanValue("withoutselect")) {
- where.append(" and t3.sys_datateamid is null");
- }
- }
- if (userInfo.isSaler()) {
- where.append(" and exists(select * from sa_salearea_hr where t1.siteid=sa_salearea_hr.siteid and t1.hrid=sa_salearea_hr.hrid)");
- }
- SQLFactory sqlFactory = new SQLFactory(this, "数据团队人员选择_企业", pageSize, pageNumber, pageSorting);
- sqlFactory.addParameter("siteid", siteid);
- sqlFactory.addParameter("ownertable", ownertable);
- sqlFactory.addParameter("ownerid", ownerid);
- sqlFactory.addParameter_SQL("where", where);
- Rows rows = dbConnect.runSqlQuery(sqlFactory.getSQL());
- RowsMap areaRowsMap = dbConnect.runSqlQuery(" SELECT DISTINCT t2.areaname,t1.hrid from sa_salearea_hr t1 " +
- " INNER JOIN sa_salearea t2 ON t2.sa_saleareaid=t1.sa_saleareaid " +
- " WHERE t1.siteid='"+siteid+"'").toRowsMap("hrid");
- for (Row row : rows) {
- row.put("headpic", getHeadPic(row.getLong("userid")));
- Rows areaRows = areaRowsMap.getOrDefault(row.getString("hrid"), new Rows());
- row.put("areanames", StringUtils.join(areaRows.toArrayList("areaname"), ","));
- }
- return getSucReturnObject().setData(rows).toString();
- }
- /**
- * 判断当前账号是否拥有修改团队权限
- *
- * @param ownertable
- * @param ownerid
- * @return 1 非任务创建人及负责人不可进行团队维护 2 非团队负责人不可进行团队维护
- * @throws YosException
- */
- public int editPermissions(String ownertable, Long ownerid) throws YosException {
- ArrayList<Long> leaderlist = DataTeam.getLeader(this, ownertable, ownerid).toArrayList("userid", new ArrayList<>());
- Rows rows1 = dbConnect.runSqlQuery("select createuserid from sys_userteam where siteid='" + siteid + "' and isproxy=1 and editdataleader=1 and userid=" + userid);
- ArrayList<Long> teamcreateuserList = rows1.toArrayList("createuserid", new ArrayList<Long>());
- if (ownertable.equalsIgnoreCase("sys_task")) {
- Rows rows = dbConnect.runSqlQuery("select createuserid from sys_task where siteid='" + siteid + "' and sys_taskid=" + ownerid);
- if (rows.isNotEmpty() && rows.get(0).getLong("createuserid") != userid && !leaderlist.contains(userid)) {
- if (teamcreateuserList.isEmpty() || leaderlist.isEmpty() || !teamcreateuserList.contains(leaderlist.get(0))) {
- return 1;
- }
- }
- } else if (!leaderlist.contains(userid)) {
- if (teamcreateuserList.isEmpty() || leaderlist.isEmpty() || !teamcreateuserList.contains(leaderlist.get(0))) {
- return 2;
- }
- }
- return 0;
- }
- }
|