BatchSubmitBillEntryGridHandler.java 32 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661
  1. //
  2. // Source code recreated from a .class file by IntelliJ IDEA
  3. // (powered by FernFlower decompiler)
  4. //
  5. package com.kingdee.shr.compensation.web.handler.integrate;
  6. import com.google.common.collect.Maps;
  7. import com.kingdee.bos.BOSException;
  8. import com.kingdee.bos.Context;
  9. import com.kingdee.bos.metadata.entity.SelectorItemCollection;
  10. import com.kingdee.bos.privacy.ParamData;
  11. import com.kingdee.bos.util.BOSUuid;
  12. import com.kingdee.bos.util.EASResource;
  13. import com.kingdee.eas.basedata.assistant.CurrencyInfo;
  14. import com.kingdee.eas.basedata.org.AdminOrgUnitInfo;
  15. import com.kingdee.eas.basedata.org.PositionInfo;
  16. import com.kingdee.eas.basedata.person.PersonInfo;
  17. import com.kingdee.eas.common.EASBizException;
  18. import com.kingdee.eas.util.app.DbUtil;
  19. import com.kingdee.jdbc.rowset.IRowSet;
  20. import com.kingdee.shr.base.permission.field.UserFieldPermInfoHelper;
  21. import com.kingdee.shr.base.permission.field.form.ShrFieldPermForm;
  22. import com.kingdee.shr.base.syssetting.app.filter.HRFilterUtils;
  23. import com.kingdee.shr.base.syssetting.context.SHRContext;
  24. import com.kingdee.shr.base.syssetting.exception.SHRWebException;
  25. import com.kingdee.shr.base.syssetting.exception.ShrWebBizException;
  26. import com.kingdee.shr.base.syssetting.permission.data.ShrCheckDataPermissionUtil;
  27. import com.kingdee.shr.base.syssetting.util.SHRPermissionWebUtils;
  28. import com.kingdee.shr.base.syssetting.web.json.JSONUtils;
  29. import com.kingdee.shr.base.syssetting.web.util.UrlParamEncryptHelper;
  30. import com.kingdee.shr.compensation.CmpEmpORelationInfo;
  31. import com.kingdee.shr.compensation.app.integrate.SubmitElementInfo;
  32. import com.kingdee.shr.compensation.util.CmpStrUtil;
  33. import com.kingdee.shr.compensation.util.SqlUtil;
  34. import com.kingdee.shr.compensation.util.columnModel.CmpColumnModels;
  35. import com.kingdee.shr.compensation.util.filter.CmpPermFilter;
  36. import com.kingdee.shr.compensation.util.filter.CmpSchemeFilter;
  37. import com.kingdee.shr.compensation.util.integrate.CmpIntegrateUtils;
  38. import com.kingdee.shr.compensation.util.report.CommonSQLUtil;
  39. import com.kingdee.shr.compensation.web.handler.CmpWorkFlowBaseHandler;
  40. import com.kingdee.shr.compensation.web.handler.integrate.entry.BaseSubmitBillEntryGenerator;
  41. import java.math.BigDecimal;
  42. import java.math.RoundingMode;
  43. import java.util.ArrayList;
  44. import java.util.HashMap;
  45. import java.util.HashSet;
  46. import java.util.Iterator;
  47. import java.util.List;
  48. import java.util.Locale;
  49. import java.util.Map;
  50. import java.util.Set;
  51. import javax.servlet.http.HttpServletRequest;
  52. import javax.servlet.http.HttpServletResponse;
  53. import org.apache.commons.lang3.StringUtils;
  54. import org.apache.log4j.Logger;
  55. import org.springframework.ui.ModelMap;
  56. public class BatchSubmitBillEntryGridHandler extends CmpWorkFlowBaseHandler {
  57. protected static Logger logger = Logger.getLogger(BatchSubmitBillEntryGridHandler.class);
  58. private String entityName = "com.kingdee.eas.basedata.org.app.Position";
  59. public BatchSubmitBillEntryGridHandler() {
  60. }
  61. public String getGridDataAction(HttpServletRequest request, HttpServletResponse response, ModelMap modelMap) throws SHRWebException {
  62. return super.getGridDataAction(request, response, modelMap);
  63. }
  64. public Map<String, Object> getGridDataMap(HttpServletRequest request) throws SHRWebException {
  65. String[] dateFieldMap = new String[]{"enterDate"};
  66. String submitSchemeId = request.getParameter("submitSchemeId");
  67. String billId = request.getParameter("billId");
  68. String querySql = "";
  69. Object resultMap = Maps.newHashMap();
  70. try {
  71. resultMap = CmpIntegrateUtils.getBillColumnListAndQuerySql(this.ctx, submitSchemeId, billId);
  72. } catch (Exception var20) {
  73. logger.error("getBillColumnListAndQuerySql error: ", var20);
  74. this.handleException(var20);
  75. }
  76. try {
  77. querySql = ((Map)resultMap).get("querySql").toString();
  78. querySql = this.addPermSql(request, querySql);
  79. } catch (Exception var19) {
  80. logger.error("addPermSql error: ", var19);
  81. this.handleException(var19);
  82. }
  83. int totalCount = 0;
  84. IRowSet rowSet = null;
  85. Map gridDataMap;
  86. try {
  87. gridDataMap = this.doExecuteQuery(request, querySql);
  88. String sql = String.valueOf(gridDataMap.get("afterPagingSql"));
  89. ParamData param = (ParamData)gridDataMap.get("afterPagingHelperParamData");
  90. rowSet = SqlUtil.executeQuery(this.ctx, sql, param);
  91. totalCount = Integer.parseInt(String.valueOf(gridDataMap.get("totalCount")));
  92. } catch (Exception var18) {
  93. logger.error("getGridDataMap doExecuteQuery error: ", var18);
  94. this.handleException(var18);
  95. }
  96. try {
  97. gridDataMap = this.assembleGridData(request, (List)((Map)resultMap).get("colNames"), rowSet, totalCount);
  98. List<Map<String, Object>> rowDataList = (List)gridDataMap.get("rows");
  99. if (rowDataList != null && rowDataList.size() > 0) {
  100. for(int i = 0; i < rowDataList.size(); ++i) {
  101. Map<String, Object> rowDataMap = (Map)rowDataList.get(i);
  102. String[] var13 = dateFieldMap;
  103. int var14 = dateFieldMap.length;
  104. for(int var15 = 0; var15 < var14; ++var15) {
  105. String keyItem = var13[var15];
  106. if (rowDataMap.containsKey(keyItem)) {
  107. String val = (String)rowDataMap.get(keyItem);
  108. if (!StringUtils.isEmpty(val)) {
  109. rowDataMap.put(keyItem, val.substring(0, 10));
  110. }
  111. }
  112. }
  113. }
  114. }
  115. this.fieldPerm(this.ctx, rowDataList);
  116. return gridDataMap;
  117. } catch (Exception var21) {
  118. logger.error("getGridDataMap assembleGridData error: ", var21);
  119. this.handleException(var21);
  120. return null;
  121. }
  122. }
  123. protected void fieldPerm(Context ctx, List<Map<String, Object>> rowDataList) throws EASBizException, BOSException {
  124. Locale locale = ctx.getLocale();
  125. if (rowDataList != null && !rowDataList.isEmpty()) {
  126. String userId = HRFilterUtils.getCurrentUserId(ctx);
  127. Set<String> fieldPermSet = UserFieldPermInfoHelper.getUserEntityFields(ctx, userId, this.entityName);
  128. ShrFieldPermForm shrFieldPermForm = new ShrFieldPermForm(ctx, (SelectorItemCollection)null, this.entityName);
  129. if (fieldPermSet != null && fieldPermSet.size() >= 1) {
  130. for(int i = 0; i < rowDataList.size(); ++i) {
  131. Map<String, Object> rowDataMap = (Map)rowDataList.get(i);
  132. if (rowDataMap.containsKey("position")) {
  133. Map<String, Object> permMap = new HashMap();
  134. PositionInfo posInfo = (PositionInfo)rowDataMap.get("position");
  135. Iterator var11 = fieldPermSet.iterator();
  136. while(var11.hasNext()) {
  137. String permField = (String)var11.next();
  138. if (permField.contains("name")) {
  139. permMap.put("name", posInfo.getName(locale));
  140. if (!shrFieldPermForm.isAllowView(this.entityName, permField, permMap)) {
  141. posInfo.setName("***");
  142. rowDataMap.put("position", posInfo);
  143. }
  144. }
  145. }
  146. }
  147. }
  148. }
  149. }
  150. }
  151. protected void addEntryFastFilterItem(HttpServletRequest request, StringBuilder result) throws SHRWebException {
  152. String filterItems = request.getParameter("filterItems");
  153. if (!StringUtils.isEmpty(filterItems)) {
  154. filterItems = UrlParamEncryptHelper.decodeValue(filterItems);
  155. result.append(" and " + filterItems);
  156. }
  157. }
  158. public String addPermSql(HttpServletRequest request, String executeSql) throws SHRWebException {
  159. StringBuilder result = new StringBuilder(executeSql);
  160. this.addEntryFastFilterItem(request, result);
  161. if (this.checkIsShrWfButNoPermitemPermissionCtx(this.ctx, request)) {
  162. return result.toString();
  163. }
  164. String uipk = request.getParameter("uipk");
  165. //员工自助提报单不根据后面的条件过滤
  166. if ("com.kingdee.shr.compensation.app.integrate.BatchSubmitShemeBillMySubmission.form".equals(uipk)) {
  167. // permItemId = HRFilterUtils.getCurrentPersonId(this.ctx);
  168. // result.append(" and fPersonId ='").append(permItemId).append("'");
  169. return result.toString();
  170. }
  171. String permItemId = this.getCurrentRequestPermItemId(request);
  172. String hrOrgSql = CmpSchemeFilter.getHrOrgUnitRangeSQL(this.ctx, permItemId);
  173. String adminOrgSql = this.getAdminOrgSql(this.ctx, permItemId);
  174. result.append(" and (exists (");
  175. result.append(" select 1 from T_HR_SCmpEmpORelation cmpOrel where t.FCmpEmpORelationID = cmpOrel.fid ");
  176. result.append(" and (");
  177. result.append(" (t.FAdminOrgUnitID in (").append(adminOrgSql).append(") ");
  178. if (CmpStrUtil.isNotEmpty(hrOrgSql)) {
  179. result.append(" and t.FHrOrgUnitID in (").append(hrOrgSql).append(") ");
  180. }
  181. result.append(" )");
  182. if (CmpStrUtil.isNotEmpty(hrOrgSql)) {
  183. result.append(" or (t.FHrOrgUnitID in (").append(hrOrgSql).append(") and cmpOrel.FUseDefault = 0 ").append(") ");
  184. } else {
  185. result.append(" or (cmpOrel.FUseDefault = 0 ").append(") ");
  186. }
  187. result.append(" )) ");
  188. result.append(" or not exists (");
  189. result.append(" select 1 from T_HR_SCmpEmpORelation cmpOrel where t.FCmpEmpORelationID = cmpOrel.fid ");
  190. result.append(" ))");
  191. String permSql = CmpPermFilter.getCmpPersonPermFilter(this.ctx, "t.FHrOrgUnitID", "t.FPersonID", permItemId, true);
  192. if (CmpStrUtil.isNotEmpty(permSql)) {
  193. result.append(" and ").append(permSql);
  194. }
  195. return result.toString();
  196. }
  197. protected String getAdminOrgSql(Context ctx, String permItemId) {
  198. return CmpSchemeFilter.getAdminOrgUnitRangeSQL(ctx, permItemId);
  199. }
  200. public String getSumRowDataAction(HttpServletRequest request, HttpServletResponse response, ModelMap modelMap) throws SHRWebException {
  201. try {
  202. String submitSchemeId = request.getParameter("submitSchemeId");
  203. String billId = request.getParameter("billId");
  204. Map<String, Object> resultMap = CmpIntegrateUtils.getBillColumnListAndQuerySql(SHRContext.getInstance().getContext(), submitSchemeId, billId);
  205. String querySql = resultMap.get("querySql").toString();
  206. querySql = this.addPermSql(request, querySql);
  207. IRowSet rowSet = CommonSQLUtil.executeQuery(this.ctx, querySql);
  208. Map<String, Integer> columnMap = (HashMap)resultMap.get("columnMap");
  209. Map<String, String> sumItemMap = new HashMap();
  210. Set<String> columnList = columnMap.keySet();
  211. Object value = null;
  212. BigDecimal columnValue = null;
  213. if (columnList.size() > 0) {
  214. while(rowSet.next()) {
  215. Iterator var14 = columnList.iterator();
  216. while(var14.hasNext()) {
  217. String columnName = (String)var14.next();
  218. value = rowSet.getObject(columnName);
  219. if (value instanceof BigDecimal) {
  220. Integer dot = (Integer)columnMap.get(columnName);
  221. if (dot != null) {
  222. BigDecimal bigValue = (new BigDecimal(value.toString())).setScale(dot, RoundingMode.HALF_UP);
  223. if (sumItemMap.get(columnName) != null) {
  224. columnValue = new BigDecimal((String)sumItemMap.get(columnName));
  225. } else {
  226. columnValue = BigDecimal.ZERO;
  227. }
  228. sumItemMap.put(columnName, columnValue.add(bigValue).toString());
  229. }
  230. }
  231. }
  232. }
  233. }
  234. JSONUtils.SUCCESS(sumItemMap);
  235. } catch (Exception var18) {
  236. var18.printStackTrace();
  237. this.handleException(var18);
  238. }
  239. return null;
  240. }
  241. public Map<String, Object> doExecuteQuery(HttpServletRequest request, String executeSql) throws SHRWebException {
  242. int rows = Integer.parseInt(request.getParameter("rows"));
  243. int page = Integer.parseInt(request.getParameter("page"));
  244. this.getSortData(request);
  245. String sord = request.getAttribute("sord").toString();
  246. String sidx = request.getAttribute("sidx").toString();
  247. return CommonSQLUtil.processGridDataPaging(this.ctx, executeSql, rows, page, sidx, sord);
  248. }
  249. public void getSortData(HttpServletRequest request) {
  250. String sidx = request.getParameter("sidx");
  251. String sord = request.getParameter("sord");
  252. if (StringUtils.isEmpty(sidx) || "orgUnit".equals(sidx) || "person".equals(sidx)) {
  253. sidx = "number,ADMORGNAME,POSITIONNAME";
  254. }
  255. if ("adminOrgUnit".equals(sidx)) {
  256. sidx = "ADMORGNAME";
  257. }
  258. if ("position".equals(sidx)) {
  259. sidx = "POSITIONNAME";
  260. }
  261. if (!"dealStatus".equals(sidx)) {
  262. sidx = "DEALSTATUS," + sidx;
  263. }
  264. request.setAttribute("sidx", sidx);
  265. request.setAttribute("sord", sord);
  266. }
  267. public String addSortSql(String sourceSql, HttpServletRequest request) {
  268. this.getSortData(request);
  269. String sidx = "";
  270. String sord = "";
  271. if (request.getAttribute("sidx") != null) {
  272. sidx = request.getAttribute("sidx").toString();
  273. }
  274. if (request.getAttribute("sord") != null) {
  275. sord = request.getAttribute("sord").toString();
  276. }
  277. String sorterItems = null;
  278. if (!StringUtils.isEmpty(sidx) && !"null".equals(sidx)) {
  279. StringBuilder buffer = new StringBuilder();
  280. String[] tempSidxs = sidx.split(",");
  281. String[] var8 = tempSidxs;
  282. int var9 = tempSidxs.length;
  283. for(int var10 = 0; var10 < var9; ++var10) {
  284. String tempSidx = var8[var10];
  285. tempSidx = tempSidx.trim();
  286. if (tempSidx.contains(" ")) {
  287. String[] strArr = tempSidx.split(" ");
  288. buffer.append(",").append(strArr[0]).append(" ").append(strArr[1]);
  289. } else {
  290. buffer.append(",").append(tempSidx).append(" ").append(sord);
  291. }
  292. }
  293. sorterItems = buffer.toString().replaceFirst(",", "");
  294. }
  295. if (!StringUtils.isEmpty(sorterItems)) {
  296. sourceSql = sourceSql + " order by " + sorterItems;
  297. }
  298. return sourceSql;
  299. }
  300. public Map<String, Object> assembleGridData(HttpServletRequest request, List<String> columnList, IRowSet rowSet, int totalCount) throws SHRWebException {
  301. List<Map<String, Object>> rowDataList = this.assembleGridDataList(request, columnList, rowSet);
  302. Map<String, Object> resultMap = new HashMap();
  303. int rows = Integer.parseInt(request.getParameter("rows"));
  304. int page = Integer.parseInt(request.getParameter("page"));
  305. if (totalCount % rows == 0) {
  306. resultMap.put("total", totalCount / rows);
  307. } else {
  308. resultMap.put("total", totalCount / rows + 1);
  309. }
  310. resultMap.put("page", page);
  311. resultMap.put("records", totalCount);
  312. resultMap.put("rows", rowDataList);
  313. return resultMap;
  314. }
  315. public List<Map<String, Object>> assembleGridDataList(HttpServletRequest request, List<String> columnList, IRowSet rowSet) throws SHRWebException {
  316. Map<String, Object> rowDataMap = null;
  317. List<Map<String, Object>> rowDataList = new ArrayList();
  318. if (rowSet.size() == 0) {
  319. return rowDataList;
  320. } else {
  321. try {
  322. String submitSchemeId = request.getParameter("submitSchemeId");
  323. StringBuilder sql = new StringBuilder();
  324. sql.append(" SELECT ");
  325. sql.append(" item.fieldSn FIELDSN ");
  326. sql.append(" FROM T_HR_SCalSubmitScheme scheme ");
  327. sql.append(" inner join T_HR_SCalSubmitSchemeItem schemeItem on scheme.fid = schemeItem.FCalSubmitSchemeID ");
  328. sql.append(" inner join T_HR_SCalSubmitItem item on item.fid = schemeItem.FCalSubmitItemID ");
  329. sql.append(" where scheme.fid = '").append(submitSchemeId).append("' and item.FDataType = '").append("3").append("'");
  330. sql.append(" order by FSortSn");
  331. IRowSet rs = DbUtil.executeQuery(this.ctx, sql.toString());
  332. String fieldSn = "";
  333. String s = "S";
  334. HashSet f7TypeFieldSet = new HashSet();
  335. while(rs.next()) {
  336. fieldSn = s + rs.getString("FIELDSN");
  337. f7TypeFieldSet.add(fieldSn);
  338. }
  339. String column = "";
  340. while(rowSet.next()) {
  341. rowDataMap = new HashMap();
  342. Iterator iter = columnList.iterator();
  343. while(iter.hasNext()) {
  344. column = (String)iter.next();
  345. String value;
  346. String name;
  347. if ("personId".equals(column)) {
  348. value = rowSet.getString(column);
  349. name = rowSet.getString("name");
  350. PersonInfo info = new PersonInfo();
  351. info.setName(name);
  352. info.setId(BOSUuid.read(value));
  353. rowDataMap.put("tempId", value);
  354. rowDataMap.put("person", info);
  355. } else {
  356. AdminOrgUnitInfo orgInfo;
  357. if ("orgId".equals(column)) {
  358. orgInfo = new AdminOrgUnitInfo();
  359. value = rowSet.getString(column);
  360. name = rowSet.getString("name");
  361. rowDataMap.put("tempId", value);
  362. orgInfo.setName(name);
  363. orgInfo.setId(BOSUuid.read(value));
  364. rowDataMap.put("orgUnit", orgInfo);
  365. } else if ("admOrgId".equals(column)) {
  366. orgInfo = new AdminOrgUnitInfo();
  367. value = rowSet.getString(column);
  368. if (!StringUtils.isEmpty(value)) {
  369. name = rowSet.getString("admOrgName");
  370. rowDataMap.put("tempId", value);
  371. orgInfo.setName(name);
  372. orgInfo.setId(BOSUuid.read(value));
  373. rowDataMap.put("adminOrgUnit", orgInfo);
  374. }
  375. } else if ("positionId".equals(column)) {
  376. PositionInfo positionInfo = new PositionInfo();
  377. value = rowSet.getString(column);
  378. if (!StringUtils.isEmpty(value)) {
  379. name = rowSet.getString("positionName");
  380. rowDataMap.put("tempId", value);
  381. positionInfo.setName(name);
  382. positionInfo.setId(BOSUuid.read(value));
  383. rowDataMap.put("position", positionInfo);
  384. }
  385. } else if ("cmpEmpORelation".equals(column)) {
  386. CmpEmpORelationInfo cmpEmpORelation = new CmpEmpORelationInfo();
  387. value = rowSet.getString(column);
  388. if (!StringUtils.isEmpty(value)) {
  389. cmpEmpORelation.setId(BOSUuid.read(value));
  390. cmpEmpORelation.put("name", value);
  391. rowDataMap.put("cmpEmpORelation", cmpEmpORelation);
  392. }
  393. } else if ("submitElement".equals(column)) {
  394. SubmitElementInfo submitElementInfo = new SubmitElementInfo();
  395. value = rowSet.getString(column);
  396. if (!StringUtils.isEmpty(value)) {
  397. name = rowSet.getString("submitElementName");
  398. submitElementInfo.setId(BOSUuid.read(value));
  399. submitElementInfo.setName(name);
  400. rowDataMap.put("submitElement", submitElementInfo);
  401. }
  402. } else if ("currency".equals(column)) {
  403. CurrencyInfo currencyInfo = new CurrencyInfo();
  404. value = rowSet.getString(column);
  405. if (!StringUtils.isEmpty(value)) {
  406. name = rowSet.getString("currencyName");
  407. currencyInfo.setId(BOSUuid.read(value));
  408. currencyInfo.setName(name);
  409. rowDataMap.put("currency", currencyInfo);
  410. }
  411. } else {
  412. HashMap f7TypeValue;
  413. if (f7TypeFieldSet.contains(column)) {
  414. value = rowSet.getString(column + "id");
  415. if (StringUtils.isEmpty(value)) {
  416. rowDataMap.put(column, (Object)null);
  417. } else {
  418. f7TypeValue = new HashMap();
  419. f7TypeValue.put("id", value);
  420. f7TypeValue.put("name", rowSet.getString(column));
  421. f7TypeValue.put("number", rowSet.getString(column + "number"));
  422. rowDataMap.put(column, f7TypeValue);
  423. }
  424. } else if ("description".equals(column)) {
  425. f7TypeValue = new HashMap();
  426. f7TypeValue.put("l1", rowSet.getString("description_l1"));
  427. f7TypeValue.put("l2", rowSet.getString("description_l2"));
  428. f7TypeValue.put("l3", rowSet.getString("description_l3"));
  429. rowDataMap.put(column, f7TypeValue);
  430. } else {
  431. value = rowSet.getString(column);
  432. rowDataMap.put(column, value);
  433. }
  434. }
  435. }
  436. }
  437. rowDataList.add(rowDataMap);
  438. }
  439. return rowDataList;
  440. } catch (Exception var18) {
  441. throw new SHRWebException(var18);
  442. }
  443. }
  444. }
  445. public String exportAction(HttpServletRequest request, HttpServletResponse response, ModelMap modelMap) throws Exception {
  446. try {
  447. logger.error("进入提报导出方法");
  448. request.setAttribute("title", this.getExportTitle(request));
  449. String submitSchemeId = request.getParameter("submitSchemeId");
  450. String billId = request.getParameter("billId");
  451. Context ctx = SHRContext.getInstance().getContext();
  452. Map<String, Object> resultMap = CmpIntegrateUtils.getBillColumnListAndQuerySql(ctx, submitSchemeId, billId);
  453. Map<String, Object> params = Maps.newHashMap();
  454. params.put("datasource", Integer.valueOf(request.getParameter("datasource")));
  455. CmpColumnModels cmpColumnModels = null;
  456. if(Integer.valueOf(request.getParameter("datasource")) == 1) {
  457. cmpColumnModels = new com.kingdee.shr.customer.gtiit.handler.BaseSubmitBillEntryGenerator().getEntryColumnModels(ctx, submitSchemeId, params);
  458. }else {
  459. cmpColumnModels = new BaseSubmitBillEntryGenerator().getEntryColumnModels(ctx, submitSchemeId, params);
  460. }
  461. FileExportHelper excel = new FileExportHelper();
  462. String querySql = resultMap.get("querySql").toString();
  463. querySql = this.addPermSql(request, querySql);
  464. String exportSql = this.addSortSql(querySql, request);
  465. String[] queryMode = this.assembleQueryMode(request, cmpColumnModels.getColModel());
  466. logger.error("提报导出字段信息:"+queryMode);
  467. IRowSet rowSet = CommonSQLUtil.executeQuery(exportSql);
  468. List<Map<String, Object>> results = new ArrayList();
  469. if (rowSet != null && rowSet.size() > 0) {
  470. String userId = HRFilterUtils.getCurrentUserId(ctx);
  471. Set<String> fieldPermSet = UserFieldPermInfoHelper.getUserEntityFields(ctx, userId, this.entityName);
  472. ShrFieldPermForm shrFieldPermForm = new ShrFieldPermForm(ctx, (SelectorItemCollection)null, this.entityName);
  473. while(rowSet.next()) {
  474. Map<String, Object> map = new HashMap();
  475. for(int i = 0; i < queryMode.length; ++i) {
  476. String[] column = queryMode[i].split(",");
  477. if (StringUtils.isEmpty(column[1]) || !Boolean.valueOf(column[1])) {
  478. if ("positionName".equals(column[0]) && fieldPermSet != null && !fieldPermSet.isEmpty()) {
  479. Map<String, Object> permMap = new HashMap();
  480. Iterator var23 = fieldPermSet.iterator();
  481. while(var23.hasNext()) {
  482. String permField = (String)var23.next();
  483. if (permField.contains("name")) {
  484. permMap.put("name", rowSet.getObject(column[0]));
  485. if (!shrFieldPermForm.isAllowView(this.entityName, permField, permMap)) {
  486. map.put(column[0], "****");
  487. }
  488. }
  489. }
  490. } else {
  491. map.put(column[0], rowSet.getObject(column[0]));
  492. }
  493. }
  494. }
  495. results.add(map);
  496. }
  497. }
  498. excel.exportToExcel(request, response, results, queryMode);
  499. } catch (Exception var25) {
  500. this.handleException(var25);
  501. }
  502. return null;
  503. }
  504. public BaseSubmitBillEntryGenerator getEntryGenerator() {
  505. return new BaseSubmitBillEntryGenerator();
  506. }
  507. protected String getExportTitle(HttpServletRequest request) throws SHRWebException {
  508. String billNumber = request.getParameter("billNumber");
  509. Context ctx = SHRContext.getInstance().getContext();
  510. String isMultiInspire = request.getParameter("isMultiInspire");
  511. return ("1".equals(isMultiInspire) ? EASResource.getString("com.kingdee.shr.compensation.resource.SubmitShemeBillResource", "label30", ctx.getLocale()) : EASResource.getString("com.kingdee.shr.compensation.resource.SubmitShemeBillResource", "label31", ctx.getLocale())) + billNumber.trim();
  512. }
  513. protected String[] assembleQueryMode(HttpServletRequest request, List<Map<String, Object>> colModel) {
  514. String[] queryMode = new String[colModel.size()];
  515. Map<String, Object> col = null;
  516. Context ctx = SHRContext.getInstance().getContext();
  517. String language = ctx.getLocale().getLanguage();
  518. Map<String, String> convert2NameMap = new HashMap();
  519. convert2NameMap.put("orgUnit", "name");
  520. convert2NameMap.put("person", "name");
  521. convert2NameMap.put("adminOrgUnit", "admOrgName");
  522. convert2NameMap.put("position", "positionName");
  523. convert2NameMap.put("submitElement", "submitElementName");
  524. convert2NameMap.put("currency", "currencyName");
  525. convert2NameMap.put("description", "description_" + language);
  526. int i = 0;
  527. for(int size = colModel.size(); i < size; ++i) {
  528. col = (Map)colModel.get(i);
  529. StringBuilder buffer = new StringBuilder();
  530. String index = col.get("name").toString();
  531. if (convert2NameMap.containsKey(index)) {
  532. index = (String)convert2NameMap.get(index);
  533. }
  534. buffer.append(index).append(",");
  535. boolean hidden = false;
  536. if (col.get("hidden") != null) {
  537. hidden = Boolean.parseBoolean(col.get("hidden").toString());
  538. }
  539. String label = col.get("label") == null ? col.get("name").toString() : col.get("label").toString();
  540. buffer.append(hidden).append(",").append(label);
  541. String name = col.get("name").toString();
  542. boolean numItem = false;
  543. int precision = 0;
  544. if (name.matches("[sS]\\d+") && col.containsKey("editoptions") && "numberfield".equals(col.get("edittype"))) {
  545. Map editoptions = (Map)col.get("editoptions");
  546. if (null != editoptions && editoptions.containsKey("inputJson")) {
  547. Map inputJson = (Map)editoptions.get("inputJson");
  548. if (null != inputJson && inputJson.containsKey("decimalPrecision")) {
  549. precision = Integer.parseInt(inputJson.get("decimalPrecision").toString());
  550. numItem = true;
  551. }
  552. }
  553. }
  554. buffer.append(",").append(numItem);
  555. if (numItem) {
  556. buffer.append(",").append(precision);
  557. } else {
  558. buffer.append(",").append(0);
  559. }
  560. String type = col.containsKey("type") ? col.get("type").toString() : "String";
  561. if (!"IntEnum".equalsIgnoreCase(type) && !"StringEnum".equalsIgnoreCase(type)) {
  562. buffer.append(",").append(false);
  563. } else {
  564. buffer.append(",").append(true);
  565. }
  566. queryMode[i] = buffer.toString();
  567. }
  568. return queryMode;
  569. }
  570. public boolean checkIsShrWfButNoPermitemPermissionCtx(Context ctx, HttpServletRequest request) throws ShrWebBizException {
  571. System.out.println("checkIsShrWfButNoPermitemPermissionCtx: " + request.getMethod() + "_" + "POST".equals(request.getMethod()));
  572. logger.error("checkIsShrWfButNoPermitemPermissionCtx: " + request.getMethod() + "_" + "POST".equals(request.getMethod()));
  573. if ("POST".equals(request.getMethod())) {
  574. return true;
  575. } else {
  576. String uipk = request.getParameter("uipk");
  577. uipk = SHRPermissionWebUtils.getRealUipk(uipk);
  578. String billId = this.getBillId(request);
  579. String msgId = request.getParameter("msgId");
  580. Map<String, Set<String>> shrWfInProcess = (Map)request.getSession().getAttribute("SHR_WF_IN_PROCESS");
  581. Map<String, Set<String>> shrWfFinished = (Map)request.getSession().getAttribute("SHR_WF_FINISHED");
  582. Map<String, Set<String>> shrWfCirculation = (Map)request.getSession().getAttribute("SHR_WF_CIRCULATION");
  583. Map<String, Set<String>> myShrWfInOrFinished = (Map)request.getSession().getAttribute("MY_SHR_WF_INORFINISHED");
  584. if (ShrCheckDataPermissionUtil.sessionDataCheckHandler(ctx, shrWfInProcess, uipk, billId, "shrWfInProcess")) {
  585. return true;
  586. } else if (ShrCheckDataPermissionUtil.sessionDataCheckHandler(ctx, shrWfFinished, uipk, billId, "shrWfFinished")) {
  587. return true;
  588. } else {
  589. return ShrCheckDataPermissionUtil.sessionDataCheckHandler(ctx, shrWfCirculation, uipk, msgId, "shrWfCirculation") ? true : ShrCheckDataPermissionUtil.sessionDataCheckHandler(ctx, myShrWfInOrFinished, uipk, billId, "myShrWfInOrFinished");
  590. }
  591. }
  592. }
  593. }