467b51867c63a78a1faa8dd8724a9dc7a44eff55.svn-base 53 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020
  1. package com.kingdee.shr.compensation.util.integrate;
  2. import com.alibaba.fastjson.JSONObject;
  3. import com.google.common.collect.Maps;
  4. import com.kingdee.bos.BOSException;
  5. import com.kingdee.bos.Context;
  6. import com.kingdee.bos.util.EASResource;
  7. import com.kingdee.eas.common.EASBizException;
  8. import com.kingdee.eas.hr.base.HRBillBaseInfo;
  9. import com.kingdee.eas.hr.base.HRBillStateEnum;
  10. import com.kingdee.eas.hr.base.app.util.HRWorkFlowCheckUtil;
  11. import com.kingdee.eas.util.app.DbUtil;
  12. import com.kingdee.jdbc.rowset.IRowSet;
  13. import com.kingdee.shr.base.syssetting.json.JSONUtils;
  14. import com.kingdee.shr.compensation.app.integrate.BatchSubmitShemeBillCollection;
  15. import com.kingdee.shr.compensation.app.integrate.BatchSubmitShemeBillFactory;
  16. import com.kingdee.shr.compensation.app.integrate.BatchSubmitShemeBillInfo;
  17. import com.kingdee.shr.compensation.integrate.dto.CalShemeSubmitItemDTO;
  18. import com.kingdee.shr.compensation.util.CmpStrUtil;
  19. import java.sql.SQLException;
  20. import java.util.ArrayList;
  21. import java.util.HashMap;
  22. import java.util.HashSet;
  23. import java.util.Iterator;
  24. import java.util.List;
  25. import java.util.Map;
  26. import java.util.Set;
  27. import org.apache.commons.lang.StringEscapeUtils;
  28. import org.apache.commons.lang3.StringUtils;
  29. import org.apache.log4j.Logger;
  30. public class CmpIntegrateUtils {
  31. private static Logger logger = Logger.getLogger(CmpIntegrateUtils.class);
  32. private static String FIELDS_STR = "fields";
  33. private static String FORMULA_STR = "formula";
  34. private static String TARGET_STR = "targetField";
  35. private static String TARGET_NAME_STR = "name";
  36. private static String TARGET_PRECISION_STR = "decimalPrecision";
  37. public static void updateEntryBillState(Context ctx, String billId, HRBillStateEnum stateEnum, String billEntryTable) throws BOSException, EASBizException {
  38. BatchSubmitShemeBillInfo info = BatchSubmitShemeBillFactory.getLocalInstance(ctx).getBatchSubmitShemeBillInfo("where id = '" + billId + "'");
  39. String billEntryTableName = billEntryTable;
  40. if (StringUtils.isEmpty(billEntryTableName)) {
  41. Map<String, Object> map = getBillColumnListAndBillEntryTableName(ctx, info
  42. .getSubmitScheme().getId().toString());
  43. billEntryTableName = map.get("fBillEntryTableName").toString();
  44. }
  45. String sqlTemplate = "UPDATE %s SET FBillState = ? WHERE FBILLID = ?";
  46. String sql = String.format(sqlTemplate, new Object[] { billEntryTableName });
  47. DbUtil.execute(ctx, sql, new Object[] { Integer.valueOf(stateEnum.getValue()), info.getId().toString() });
  48. }
  49. public static String getUsableItemByHro(Context ctx, String hrOrgUnit, boolean isDisatribute) {
  50. StringBuilder personCmpItemPerm = new StringBuilder();
  51. personCmpItemPerm.append("select FBaseInfoId from T_HR_SCalSubmitItemRelHR where T_HR_SCalSubmitItemRelHR.FHrOrgUseId ='");
  52. personCmpItemPerm.append(hrOrgUnit).append("'");
  53. if (isDisatribute)
  54. personCmpItemPerm.append(" and FState=100 ");
  55. return personCmpItemPerm.toString();
  56. }
  57. public static boolean checkSubmitSchemeIsUsingBill(Context ctx, String schemeId) {
  58. boolean flag = false;
  59. if (StringUtils.isEmpty(schemeId))
  60. return flag;
  61. String sql = "Select top 1 fid from T_HR_SBatchSubmitShemeBill where fbillstate in (0,1,2) and FSubmitSchemeID = ? ";
  62. try {
  63. IRowSet rs = DbUtil.executeQuery(ctx, sql, new Object[] { schemeId });
  64. if (rs.size() > 0)
  65. flag = true;
  66. } catch (BOSException e) {
  67. logger.error(e);
  68. }
  69. return flag;
  70. }
  71. public static boolean checkSubmitBillEntryIsExists(Context ctx, String billEntryTableName, String billId) {
  72. boolean flag = false;
  73. if (StringUtils.isEmpty(billId))
  74. return flag;
  75. String sql = "Select top 1 fid from " + billEntryTableName + " where fbillId = ? ";
  76. try {
  77. IRowSet rs = DbUtil.executeQuery(ctx, sql, new Object[] { billId });
  78. if (rs.size() > 0)
  79. flag = true;
  80. } catch (BOSException e) {
  81. logger.error(e);
  82. }
  83. return flag;
  84. }
  85. public static boolean checkSubmitSchemeIsUsedBill(Context ctx, String schemeId) {
  86. boolean flag = false;
  87. if (StringUtils.isEmpty(schemeId))
  88. return flag;
  89. String sql = "Select top 1 fid from T_HR_SBatchSubmitShemeBill where fbillstate in (1,2) and FSubmitSchemeID = ? ";
  90. try {
  91. IRowSet rs = DbUtil.executeQuery(ctx, sql, new Object[] { schemeId });
  92. if (rs.size() > 0)
  93. flag = true;
  94. } catch (BOSException e) {
  95. logger.error(e);
  96. }
  97. return flag;
  98. }
  99. public static Map checkSubmitSchemesIsUsingBill(Context ctx, List<String> list) {
  100. Map<String, Boolean> map = new HashMap<>();
  101. String sql = "Select distinct FSubmitSchemeID from T_HR_SBatchSubmitShemeBill where fbillstate in (0,1,2) and FSubmitSchemeID in( " + CmpStrUtil.convertListToString(list) + ") ";
  102. Set<String> snSet = new HashSet<>();
  103. try {
  104. IRowSet rs = DbUtil.executeQuery(ctx, sql);
  105. while (rs.next()) {
  106. String submitSchemeID = rs.getString("FSubmitSchemeID");
  107. snSet.add(submitSchemeID);
  108. }
  109. for (String submitSchemeID : list)
  110. map.put(submitSchemeID, Boolean.valueOf(snSet.contains(submitSchemeID)));
  111. } catch (Exception e) {
  112. logger.error(e);
  113. }
  114. return map;
  115. }
  116. public static Map<String, List> assembleSubmitSchemeColModel(Context ctx, String schemeId, Integer dataSource, String costTypeId) throws BOSException {
  117. Map<String, List> map = new HashMap<>();
  118. List<String> colNames = new ArrayList<>();
  119. List<Map<String, Object>> colModel = new ArrayList<>();
  120. if (StringUtils.isEmpty(schemeId))
  121. return map;
  122. String language = ctx.getLocale().getLanguage();
  123. Set<String> calItemSn = getCalItemSn(ctx, schemeId);
  124. Map<String, List<Map<String, Object>>> initAutoCalFieldOption = initAutoCalFieldOption(ctx, schemeId);
  125. String sql = "Select m.FNumber,e.FSubmitSchemeType,e.FSubmitTarget,e.FIsEnableSubmitElement,e.FEFFECTDATEDISPLAY , m.fieldSn,m.fdataType,m.fname_" + language + " MNAME,t.FIsRequired ,m.FDataDot,m.FDataLength, M.FDATETYPE,M.FFILTERFIELD,B.FNAME_" + language + " BNAME, B.FUipk FMAINTAINUIPK,b.FISBASIC from T_HR_SCalSubmitScheme e inner join T_HR_SCalSubmitSchemeItem t on t.FCalSubmitSchemeID = e.fid inner join T_HR_SCalSubmitItem m on m.fid = t.FCalSubmitItemID left join T_HR_SCalSchemeItemForF7 b on m.FFilterField = b.fid where e.fid = '" + schemeId + "' and t.FIsShow = 1 order by t.FSortSn asc ";
  126. try {
  127. String submitTarget = "", dataType = "";
  128. int dateType = 0;
  129. int effectDateDisplay = 0;
  130. IRowSet rs = DbUtil.executeQuery(ctx, sql);
  131. String label45 = EASResource.getString("com.kingdee.shr.compensation.resource.CmpXQLangResource", "label45", ctx.getLocale());
  132. String label46 = EASResource.getString("com.kingdee.shr.compensation.resource.CmpXQLangResource", "label46", ctx.getLocale());
  133. String label47 = EASResource.getString("com.kingdee.shr.compensation.resource.CmpXQLangResource", "label47", ctx.getLocale());
  134. String label48 = EASResource.getString("com.kingdee.shr.compensation.resource.CmpXQLangResource", "label48", ctx.getLocale());
  135. String label49 = EASResource.getString("com.kingdee.shr.compensation.resource.CmpXQLangResource", "label49", ctx.getLocale());
  136. String label50 = EASResource.getString("com.kingdee.shr.compensation.resource.CmpXQLangResource", "label50", ctx.getLocale());
  137. String label51 = EASResource.getString("com.kingdee.shr.compensation.resource.CmpXQLangResource", "label51", ctx.getLocale());
  138. String label52 = EASResource.getString("com.kingdee.shr.compensation.resource.CmpXQLangResource", "label52", ctx.getLocale());
  139. String label53 = EASResource.getString("com.kingdee.shr.compensation.resource.CmpXQLangResource", "label53", ctx.getLocale());
  140. String label54 = EASResource.getString("com.kingdee.shr.compensation.resource.CmpXQLangResource", "label54", ctx.getLocale());
  141. String label55 = EASResource.getString("com.kingdee.shr.compensation.resource.CmpXQLangResource", "label55", ctx.getLocale());
  142. boolean f7Flag = true, isEnableSubmitElement = false;
  143. while (rs.next()) {
  144. submitTarget = rs.getString("FSubmitTarget");
  145. effectDateDisplay = rs.getInt("FEFFECTDATEDISPLAY");
  146. isEnableSubmitElement = rs.getBoolean("FIsEnableSubmitElement");
  147. dataType = rs.getString("fdataType");
  148. if (f7Flag) {
  149. f7Flag = false;
  150. Map<String, Object> gridMainKeyIdMap = new HashMap<>();
  151. Map<String, Object> adminOrgUnitGridMainKeyIdMap = new HashMap<>();
  152. Map<String, Object> positionGridMainKeyIdMap = new HashMap<>();
  153. Map<String, Object> cmpEmpORGridMainKeyIdMap = new HashMap<>();
  154. Map<String, Object> gridIdMap = new HashMap<>();
  155. assembleColModelId(gridIdMap);
  156. colNames.add("id");
  157. colModel.add(gridIdMap);
  158. if ("02".equals(submitTarget)) {
  159. assembleColModelF7(gridMainKeyIdMap, "orgUnit", label45, true);
  160. gridMainKeyIdMap.put("editoptions", assembleColModelF7(label45, "com.kingdee.eas.basedata.org.app.AdminOrgUnit.F7", true));
  161. gridMainKeyIdMap.put("sortable", Boolean.valueOf(true));
  162. colNames.add(EASResource.getString("com.kingdee.shr.compensation.resource.SubmitShemeBillResource", "label0", ctx.getLocale()));
  163. colModel.add(gridMainKeyIdMap);
  164. } else {
  165. Map<String, Object> map1 = new HashMap<>();
  166. map1.put("name", "number");
  167. map1.put("label", label46);
  168. map1.put("frozen", Boolean.valueOf(false));
  169. map1.put("width", Integer.valueOf(90));
  170. map1.put("align", "left");
  171. map1.put("key", Boolean.valueOf(true));
  172. map1.put("hidden", Boolean.valueOf(false));
  173. map1.put("editable", Boolean.valueOf(false));
  174. map1.put("sorttype", "string");
  175. map1.put("classes", "disabled");
  176. map1.put("edittype", "shrtext");
  177. map1.put("sortable", Boolean.valueOf(true));
  178. colNames.add(EASResource.getString("com.kingdee.shr.compensation.resource.SubmitShemeBillResource", "label1", ctx.getLocale()));
  179. colModel.add(map1);
  180. String CmpEmpORelF7Uipk = "com.kingdee.shr.compensation.app.integrate.CmpEmpORelation.F7";
  181. if (3 == dataSource.intValue())
  182. CmpEmpORelF7Uipk = "com.kingdee.shr.compensation.app.integrate.stores.CmpEmpORelation.F7";
  183. assembleColModelF7(gridMainKeyIdMap, "person", label47, true);
  184. gridMainKeyIdMap.put("editoptions", assembleColModelF7(label47, CmpEmpORelF7Uipk, true));
  185. gridIdMap.put("frozen", Boolean.valueOf(true));
  186. map1.put("frozen", Boolean.valueOf(true));
  187. gridMainKeyIdMap.put("frozen", Boolean.valueOf(true));
  188. colNames.add(EASResource.getString("com.kingdee.shr.compensation.resource.SubmitShemeBillResource", "label2", ctx.getLocale()));
  189. colModel.add(gridMainKeyIdMap);
  190. assembleColModelF7NotEdit(adminOrgUnitGridMainKeyIdMap, "adminOrgUnit", label48);
  191. adminOrgUnitGridMainKeyIdMap.put("sortable", Boolean.valueOf(true));
  192. colNames.add(EASResource.getString("com.kingdee.shr.compensation.resource.SubmitShemeBillResource", "label3", ctx.getLocale()));
  193. colModel.add(adminOrgUnitGridMainKeyIdMap);
  194. assembleColModelF7NotEdit(positionGridMainKeyIdMap, "position", label49);
  195. positionGridMainKeyIdMap.put("sortable", Boolean.valueOf(true));
  196. colNames.add(EASResource.getString("com.kingdee.shr.compensation.resource.SubmitShemeBillResource", "label4", ctx.getLocale()));
  197. colModel.add(positionGridMainKeyIdMap);
  198. assembleColModelF7Hidden(cmpEmpORGridMainKeyIdMap, "cmpEmpORelation", label50);
  199. colNames.add(EASResource.getString("com.kingdee.shr.compensation.resource.SubmitShemeBillResource", "label5", ctx.getLocale()));
  200. colModel.add(cmpEmpORGridMainKeyIdMap);
  201. Map<String, Object> gridPersonIdMap = new HashMap<>();
  202. gridPersonIdMap.put("name", "tempId");
  203. gridPersonIdMap.put("label", label51);
  204. gridPersonIdMap.put("frozen", Boolean.valueOf(false));
  205. gridPersonIdMap.put("width", Integer.valueOf(90));
  206. gridPersonIdMap.put("align", "left");
  207. gridPersonIdMap.put("key", Boolean.valueOf(true));
  208. gridPersonIdMap.put("hidden", Boolean.valueOf(true));
  209. gridPersonIdMap.put("editable", Boolean.valueOf(false));
  210. gridPersonIdMap.put("sorttype", "string");
  211. gridPersonIdMap.put("classes", "disabled");
  212. gridPersonIdMap.put("edittype", "shrtext");
  213. colNames.add("tempId");
  214. colModel.add(gridPersonIdMap);
  215. }
  216. if (isEnableSubmitElement) {
  217. Map<String, Object> gridSubmitElementMap = new HashMap<>();
  218. assembleColModelF7(gridSubmitElementMap, "submitElement", label52, true);
  219. gridSubmitElementMap.put("editoptions", assembleColModelF7(label52, "com.kingdee.shr.compensation.app.integrate.SubmitElement.SubmitBillEntry.F7", true));
  220. colNames.add(EASResource.getString("com.kingdee.shr.compensation.resource.SubmitShemeBillResource", "label6", ctx.getLocale()));
  221. colModel.add(gridSubmitElementMap);
  222. }
  223. Map<String, Object> gridCurrencyMap = new HashMap<>();
  224. assembleColModelF7(gridCurrencyMap, "currency", label53, true);
  225. gridCurrencyMap.put("editoptions", assembleColModelF7(label53, "com.kingdee.eas.basedata.assistant.app.Currency.CMP.F7", true));
  226. colNames.add(EASResource.getString("com.kingdee.shr.compensation.resource.SubmitShemeBillResource", "label7", ctx.getLocale()));
  227. colModel.add(gridCurrencyMap);
  228. Map<String, Object> gridPersonNumberMap = new HashMap<>();
  229. gridPersonNumberMap.put("name", "effectDay");
  230. gridPersonNumberMap.put("label", label54);
  231. gridPersonNumberMap.put("frozen", Boolean.valueOf(false));
  232. gridPersonNumberMap.put("width", Integer.valueOf(100));
  233. gridPersonNumberMap.put("align", "left");
  234. gridPersonNumberMap.put("key", Boolean.valueOf(true));
  235. gridPersonNumberMap.put("hidden", Boolean.valueOf(false));
  236. gridPersonNumberMap.put("editable", Boolean.valueOf(true));
  237. gridPersonNumberMap.put("sorttype", "date");
  238. gridPersonNumberMap.put("sortable", Boolean.valueOf(false));
  239. gridPersonNumberMap.put("formatter", "shrDateTimePicker");
  240. gridPersonNumberMap.put("edittype", "shrDateTimePicker");
  241. gridPersonNumberMap.put("classes", "required");
  242. StringBuilder datapickerjsonBuilder = new StringBuilder();
  243. datapickerjsonBuilder.append("{");
  244. datapickerjsonBuilder.append("\"datepickerjson\":");
  245. datapickerjsonBuilder.append("{");
  246. datapickerjsonBuilder.append("\"id\":\"dp_autoSize\",");
  247. datapickerjsonBuilder.append("\"name\":\"dp_autoSize\",");
  248. datapickerjsonBuilder.append("\"minuteStep\":\"\",");
  249. datapickerjsonBuilder.append("\"showTimeZoneForCtrl\":false,");
  250. datapickerjsonBuilder.append("\"isAutoTimeZoneTrans\":false,");
  251. datapickerjsonBuilder.append("\"isShowUTC\":false,");
  252. datapickerjsonBuilder.append("\"isReadonlyUTC\":true,");
  253. datapickerjsonBuilder.append("\"isRemoveSeconds\":true,");
  254. if (20 == effectDateDisplay) {
  255. datapickerjsonBuilder.append("\"isRemoveDay\":true,");
  256. } else if (10 == effectDateDisplay) {
  257. datapickerjsonBuilder.append("\"isRemoveDay\":false,");
  258. } else {
  259. datapickerjsonBuilder.append("\"isRemoveDay\":true,");
  260. }
  261. datapickerjsonBuilder.append("\"ctrlType\":\"Date\"");
  262. datapickerjsonBuilder.append("},");
  263. datapickerjsonBuilder.append("\"validateJson\":");
  264. datapickerjsonBuilder.append("{");
  265. datapickerjsonBuilder.append("\"errMsg\":\"\",");
  266. datapickerjsonBuilder.append("\"rules\":\"required:true\",");
  267. datapickerjsonBuilder.append("\"validatetrigger\":\"focus keyup datachange\"");
  268. datapickerjsonBuilder.append("}");
  269. datapickerjsonBuilder.append("}");
  270. gridPersonNumberMap.put("editoptions", JSONObject.parseObject(datapickerjsonBuilder.toString()));
  271. colNames.add(EASResource.getString("com.kingdee.shr.compensation.resource.SubmitShemeBillResource", "label8", ctx.getLocale()));
  272. colModel.add(gridPersonNumberMap);
  273. }
  274. dataType = rs.getString("fdataType");
  275. int isRequired = rs.getInt("FIsRequired");
  276. int fDataDot = rs.getInt("FDataDot");
  277. int fDataLength = rs.getInt("FDataLength");
  278. String fieldSn = "S" + rs.getString("fieldSn");
  279. if ("0".equals(dataType)) {
  280. Map<String, Object> schemeMap = new HashMap<>();
  281. schemeMap.put("name", fieldSn);
  282. schemeMap.put("label", rs.getString("MNAME"));
  283. schemeMap.put("frozen", Boolean.valueOf(false));
  284. schemeMap.put("width", Integer.valueOf(90));
  285. schemeMap.put("align", "left");
  286. schemeMap.put("key", Boolean.valueOf(false));
  287. schemeMap.put("editable", Boolean.valueOf(true));
  288. schemeMap.put("sorttype", "bigdecimal");
  289. schemeMap.put("sortable", Boolean.valueOf(false));
  290. schemeMap.put("formatter", "numberfield");
  291. schemeMap.put("edittype", "numberfield");
  292. JSONObject jSONObject1 = JSONObject.parseObject("{ \"inputJson\": { \"id\": \"txt_money\", \"name\": \"money\", \"formatType\": \"number\" }, \"validateJson\": {}}");
  293. if (isRequired == 1) {
  294. schemeMap.put("classes", "required");
  295. jSONObject1.put("validateJson", JSONObject.parseObject("{ \"errMsg\": \"\", \"rules\": \"required:true\", \"validatetrigger\": \"focus keyup datachange\" }"));
  296. }
  297. if (calItemSn.contains(fieldSn)) {
  298. schemeMap.put("editable", Boolean.valueOf(false));
  299. schemeMap.put("classes", "disabled");
  300. }
  301. JSONObject jSONObject2 = jSONObject1.getJSONObject("inputJson");
  302. jSONObject2.put("decimalPrecision", Integer.valueOf(fDataDot));
  303. jSONObject2.put("maxlength", Integer.valueOf(fDataLength));
  304. if (initAutoCalFieldOption.containsKey(fieldSn)) {
  305. jSONObject1.put("autoCal", Boolean.valueOf(true));
  306. jSONObject1.put("cellFomular", initAutoCalFieldOption.get(fieldSn));
  307. }
  308. schemeMap.put("editoptions", jSONObject1);
  309. colModel.add(schemeMap);
  310. colNames.add(rs.getString("MNAME"));
  311. continue;
  312. }
  313. if ("1".equals(dataType)) {
  314. Map<String, Object> schemeMap = new HashMap<>();
  315. schemeMap.put("name", fieldSn);
  316. schemeMap.put("label", rs.getString("MNAME"));
  317. schemeMap.put("frozen", Boolean.valueOf(false));
  318. schemeMap.put("width", Integer.valueOf(90));
  319. schemeMap.put("align", "left");
  320. schemeMap.put("key", Boolean.valueOf(false));
  321. schemeMap.put("editable", Boolean.valueOf(true));
  322. schemeMap.put("sorttype", "string");
  323. schemeMap.put("sortable", Boolean.valueOf(false));
  324. JSONObject jSONObject1 = JSONObject.parseObject("{ \"inputJson\": { } }");
  325. if (isRequired == 1) {
  326. schemeMap.put("classes", "required");
  327. jSONObject1.put("validateJson", JSONObject.parseObject("{ \"errMsg\": \"\", \"rules\": \"required:true\", \"validatetrigger\": \"focus keyup datachange\" }"));
  328. } else {
  329. jSONObject1.put("validateJson", JSONObject.parseObject("{ \"errMsg\": \"\", \"rules\": \"required:false\", \"validatetrigger\": \"focus keyup datachange\" }"));
  330. }
  331. if (calItemSn.contains(fieldSn)) {
  332. schemeMap.put("editable", Boolean.valueOf(false));
  333. schemeMap.put("classes", "disabled");
  334. }
  335. JSONObject jSONObject2 = jSONObject1.getJSONObject("inputJson");
  336. jSONObject2.put("decimalPrecision", Integer.valueOf(fDataDot));
  337. jSONObject2.put("maxlength", Integer.valueOf(fDataLength));
  338. schemeMap.put("editoptions", jSONObject1);
  339. schemeMap.put("edittype", "shrtext");
  340. colModel.add(schemeMap);
  341. colNames.add(rs.getString("MNAME"));
  342. continue;
  343. }
  344. if ("2".equals(dataType)) {
  345. dateType = rs.getInt("FDATETYPE");
  346. Map<String, Object> schemeMap = new HashMap<>();
  347. schemeMap.put("name", fieldSn);
  348. schemeMap.put("label", rs.getString("MNAME"));
  349. schemeMap.put("frozen", Boolean.valueOf(false));
  350. schemeMap.put("width", Integer.valueOf(100));
  351. schemeMap.put("align", "left");
  352. schemeMap.put("key", Boolean.valueOf(true));
  353. schemeMap.put("hidden", Boolean.valueOf(false));
  354. schemeMap.put("editable", Boolean.valueOf(true));
  355. schemeMap.put("sorttype", "date");
  356. schemeMap.put("sortable", Boolean.valueOf(false));
  357. schemeMap.put("formatter", "shrDateTimePicker");
  358. schemeMap.put("edittype", "shrDateTimePicker");
  359. if (isRequired == 1)
  360. schemeMap.put("classes", "required");
  361. StringBuilder datapickerjsonBuffer = new StringBuilder();
  362. datapickerjsonBuffer.append("{");
  363. datapickerjsonBuffer.append("\"datepickerjson\":");
  364. datapickerjsonBuffer.append("{");
  365. datapickerjsonBuffer.append("\"id\":\"dp_autoSize\",");
  366. datapickerjsonBuffer.append("\"name\":\"dp_autoSize\",");
  367. datapickerjsonBuffer.append("\"minuteStep\":\"\",");
  368. datapickerjsonBuffer.append("\"showTimeZoneForCtrl\":false,");
  369. datapickerjsonBuffer.append("\"isAutoTimeZoneTrans\":false,");
  370. datapickerjsonBuffer.append("\"isShowUTC\":false,");
  371. datapickerjsonBuffer.append("\"isReadonlyUTC\":true,");
  372. datapickerjsonBuffer.append("\"isRemoveSeconds\":true,");
  373. if (20 == dateType) {
  374. datapickerjsonBuffer.append("\"isRemoveDay\":true,");
  375. } else if (10 == dateType) {
  376. datapickerjsonBuffer.append("\"isRemoveDay\":false,");
  377. } else {
  378. datapickerjsonBuffer.append("\"isRemoveDay\":false,");
  379. }
  380. datapickerjsonBuffer.append("\"ctrlType\":\"Date\"");
  381. datapickerjsonBuffer.append("},");
  382. datapickerjsonBuffer.append("\"validateJson\":");
  383. datapickerjsonBuffer.append("{");
  384. datapickerjsonBuffer.append("\"errMsg\":\"\",");
  385. if (isRequired == 1) {
  386. datapickerjsonBuffer.append("\"rules\":\"required:true\",");
  387. } else {
  388. datapickerjsonBuffer.append("\"rules\":\"required:false\",");
  389. }
  390. datapickerjsonBuffer.append("\"validatetrigger\":\"focus keyup datachange\"");
  391. datapickerjsonBuffer.append("}");
  392. datapickerjsonBuffer.append("}");
  393. schemeMap.put("editoptions", JSONObject.parseObject(datapickerjsonBuffer.toString()));
  394. colNames.add(rs.getString("MNAME"));
  395. colModel.add(schemeMap);
  396. continue;
  397. }
  398. if ("3".equals(dataType)) {
  399. Map<String, Object> schemeMap = new HashMap<>();
  400. assembleColModelF7(schemeMap, fieldSn, rs.getString("MNAME"), (isRequired == 1));
  401. String filter = "";
  402. if ("AwardName".equals(rs.getString("FNumber")) && StringUtils.isNotEmpty(costTypeId)) {
  403. filter = (rs.getInt("FISBASIC") == 1) ? ("CostType.id = '" + costTypeId + "' and state = 1") : "";
  404. } else {
  405. filter = (rs.getInt("FISBASIC") == 1) ? "state = 1" : "";
  406. }
  407. Map<String, Object> map1 = assembleColModelF7(rs.getString("BNAME"), rs.getString("FMAINTAINUIPK"), (isRequired == 1), filter);
  408. schemeMap.put("editoptions", map1);
  409. colNames.add(rs.getString("MNAME"));
  410. colModel.add(schemeMap);
  411. }
  412. }
  413. Map<String, Object> gridDescriptionMap = new HashMap<>();
  414. gridDescriptionMap.put("name", "description");
  415. gridDescriptionMap.put("label", label55);
  416. gridDescriptionMap.put("frozen", Boolean.valueOf(false));
  417. gridDescriptionMap.put("width", Integer.valueOf(90));
  418. gridDescriptionMap.put("align", "left");
  419. gridDescriptionMap.put("key", Boolean.valueOf(false));
  420. gridDescriptionMap.put("editable", Boolean.valueOf(true));
  421. gridDescriptionMap.put("sortable", Boolean.valueOf(false));
  422. gridDescriptionMap.put("formatter", "shrMultiLangBox");
  423. gridDescriptionMap.put("edittype", "shrMultiLangBox");
  424. JSONObject editoptions = JSONObject.parseObject("{ \"inputJson\": { } }");
  425. JSONObject inputJson = editoptions.getJSONObject("inputJson");
  426. inputJson.put("maxlength", Integer.valueOf(255));
  427. gridDescriptionMap.put("editoptions", editoptions);
  428. colNames.add(EASResource.getString("com.kingdee.shr.compensation.resource.SubmitShemeBillResource", "label9", ctx.getLocale()));
  429. colModel.add(gridDescriptionMap);
  430. } catch (Exception e) {
  431. throw new BOSException(EASResource.getString("com.kingdee.shr.compensation.resource.SubmitShemeBillResource", "label10", ctx.getLocale()));
  432. }
  433. map.put("colNames", colNames);
  434. map.put("colModel", colModel);
  435. return map;
  436. }
  437. public static Map<String, Object> assembleColModelId(Map<String, Object> gridIdMap) {
  438. gridIdMap.put("name", "id");
  439. gridIdMap.put("label", "id");
  440. gridIdMap.put("frozen", Boolean.valueOf(false));
  441. gridIdMap.put("width", Integer.valueOf(90));
  442. gridIdMap.put("align", "left");
  443. gridIdMap.put("key", Boolean.valueOf(true));
  444. gridIdMap.put("hidden", Boolean.valueOf(true));
  445. gridIdMap.put("editable", Boolean.valueOf(false));
  446. gridIdMap.put("sorttype", "");
  447. gridIdMap.put("sortable", Boolean.valueOf(false));
  448. gridIdMap.put("classes", "disabled");
  449. return gridIdMap;
  450. }
  451. public static Map<String, Object> assembleColModelF7(String name, String uipk, boolean isRequired) {
  452. Map<String, Object> resultMap = new HashMap<>();
  453. Map<String, Object> f7JsonMap = new HashMap<>();
  454. Map<String, Object> validateJsonMap = new HashMap<>();
  455. Map<String, Object> uipkMap = new HashMap<>();
  456. uipkMap.put("title", name);
  457. uipkMap.put("uipk", uipk);
  458. uipkMap.put("query", "");
  459. uipkMap.put("filter", "");
  460. uipkMap.put("multiselect", Boolean.valueOf(false));
  461. uipkMap.put("isTree", Boolean.valueOf(false));
  462. uipkMap.put("treeUrl", "");
  463. uipkMap.put("isContainLowerOrg", Boolean.valueOf(false));
  464. uipkMap.put("isAdminOrg", Boolean.valueOf(false));
  465. uipkMap.put("isEnableExpFilter", Boolean.valueOf(true));
  466. f7JsonMap.put("subWidgetOptions", uipkMap);
  467. f7JsonMap.put("subWidgetName", "shrPromptGrid");
  468. f7JsonMap.put("searchFields", "");
  469. f7JsonMap.put("isHROrg", Boolean.valueOf(false));
  470. f7JsonMap.put("isAdminOrg", Boolean.valueOf(false));
  471. f7JsonMap.put("searchLikePattern", "any");
  472. resultMap.put("f7Json", f7JsonMap);
  473. validateJsonMap.put("errMsg", "");
  474. if (isRequired)
  475. validateJsonMap.put("rules", "required:true");
  476. validateJsonMap.put("validatetrigger", "focus keyup datachange");
  477. resultMap.put("validateJson", validateJsonMap);
  478. return resultMap;
  479. }
  480. public static Map<String, Object> assembleColModelF7(String name, String uipk, boolean isRequired, String filter) {
  481. Map<String, Object> resultMap = new HashMap<>();
  482. Map<String, Object> f7JsonMap = new HashMap<>();
  483. Map<String, Object> validateJsonMap = new HashMap<>();
  484. Map<String, Object> uipkMap = new HashMap<>();
  485. uipkMap.put("title", name);
  486. uipkMap.put("uipk", uipk);
  487. uipkMap.put("query", "");
  488. uipkMap.put("filter", filter);
  489. uipkMap.put("multiselect", Boolean.valueOf(false));
  490. uipkMap.put("isTree", Boolean.valueOf(false));
  491. uipkMap.put("treeUrl", "");
  492. uipkMap.put("isContainLowerOrg", Boolean.valueOf(false));
  493. uipkMap.put("isAdminOrg", Boolean.valueOf(false));
  494. f7JsonMap.put("subWidgetOptions", uipkMap);
  495. f7JsonMap.put("subWidgetName", "shrPromptGrid");
  496. f7JsonMap.put("searchFields", "");
  497. f7JsonMap.put("isHROrg", Boolean.valueOf(false));
  498. f7JsonMap.put("isAdminOrg", Boolean.valueOf(false));
  499. f7JsonMap.put("searchLikePattern", "any");
  500. resultMap.put("f7Json", f7JsonMap);
  501. validateJsonMap.put("errMsg", "");
  502. if (isRequired)
  503. validateJsonMap.put("rules", "required:true");
  504. validateJsonMap.put("validatetrigger", "focus keyup datachange");
  505. resultMap.put("validateJson", validateJsonMap);
  506. return resultMap;
  507. }
  508. public static Map<String, Object> assembleColModelF7(Map<String, Object> gridMainKeyIdMap, String name, String label, boolean isRequired) {
  509. gridMainKeyIdMap.put("name", name);
  510. gridMainKeyIdMap.put("label", label);
  511. gridMainKeyIdMap.put("frozen", Boolean.valueOf(false));
  512. gridMainKeyIdMap.put("width", Integer.valueOf(120));
  513. gridMainKeyIdMap.put("align", "left");
  514. gridMainKeyIdMap.put("key", Boolean.valueOf(false));
  515. gridMainKeyIdMap.put("edittype", "promptBox");
  516. gridMainKeyIdMap.put("editable", Boolean.valueOf(true));
  517. gridMainKeyIdMap.put("sorttype", "objectvalue");
  518. gridMainKeyIdMap.put("sortable", Boolean.valueOf(false));
  519. gridMainKeyIdMap.put("formatter", "promptBox");
  520. if (isRequired)
  521. gridMainKeyIdMap.put("classes", "required");
  522. return gridMainKeyIdMap;
  523. }
  524. public static Map<String, Object> assembleColModelF7NotEdit(Map<String, Object> gridMainKeyIdMap, String name, String label) {
  525. gridMainKeyIdMap.put("name", name);
  526. gridMainKeyIdMap.put("label", label);
  527. gridMainKeyIdMap.put("frozen", Boolean.valueOf(false));
  528. gridMainKeyIdMap.put("width", Integer.valueOf(120));
  529. gridMainKeyIdMap.put("align", "left");
  530. gridMainKeyIdMap.put("key", Boolean.valueOf(false));
  531. gridMainKeyIdMap.put("edittype", "promptBox");
  532. gridMainKeyIdMap.put("editable", Boolean.valueOf(false));
  533. gridMainKeyIdMap.put("sorttype", "objectvalue");
  534. gridMainKeyIdMap.put("sortable", Boolean.valueOf(false));
  535. gridMainKeyIdMap.put("formatter", "promptBox");
  536. gridMainKeyIdMap.put("classes", "disabled");
  537. return gridMainKeyIdMap;
  538. }
  539. public static Map<String, Object> assembleColModelF7Hidden(Map<String, Object> gridMainKeyIdMap, String name, String label) {
  540. gridMainKeyIdMap.put("name", name);
  541. gridMainKeyIdMap.put("label", label);
  542. gridMainKeyIdMap.put("frozen", Boolean.valueOf(false));
  543. gridMainKeyIdMap.put("width", Integer.valueOf(120));
  544. gridMainKeyIdMap.put("hidden", Boolean.valueOf(true));
  545. gridMainKeyIdMap.put("align", "left");
  546. gridMainKeyIdMap.put("key", Boolean.valueOf(false));
  547. gridMainKeyIdMap.put("edittype", "promptBox");
  548. gridMainKeyIdMap.put("editable", Boolean.valueOf(false));
  549. gridMainKeyIdMap.put("sorttype", "objectvalue");
  550. gridMainKeyIdMap.put("sortable", Boolean.valueOf(false));
  551. gridMainKeyIdMap.put("formatter", "promptBox");
  552. gridMainKeyIdMap.put("classes", "disabled");
  553. return gridMainKeyIdMap;
  554. }
  555. public static Map<String, Object> getBillColumnListAndQuerySql(Context ctx, String submitSchemeId, String billID) throws BOSException {
  556. Map<String, Object> map = new HashMap<>();
  557. List<String> colNames = new ArrayList<>();
  558. Map<String, Object> columnMap = new HashMap<>();
  559. if (StringUtils.isEmpty(submitSchemeId))
  560. return map;
  561. if (null != billID && billID.contains(" "))
  562. throw new BOSException("Illegal parameter: " + billID);
  563. try {
  564. String sqlBuilder = " SELECT item.fieldSn FIELDSN, b.FTable FTABLE FROM T_HR_SCalSubmitScheme scheme inner join T_HR_SCalSubmitSchemeItem schemeItem on scheme.fid = schemeItem.FCalSubmitSchemeID inner join T_HR_SCalSubmitItem item on item.fid = schemeItem.FCalSubmitItemID inner join T_HR_SCalSchemeItemForF7 b on item.FFilterField = b.fid where scheme.fid = ? and item.FDataType = '3' order by FSortSn";
  565. IRowSet rs = DbUtil.executeQuery(ctx, sqlBuilder, (Object[])new String[] { submitSchemeId });
  566. Map<String, Map<String, String>> f7ItemTableMapper = Maps.newHashMap();
  567. int tableNameCount = 1;
  568. while (rs.next()) {
  569. Map<String, String> tableNameMap = new HashMap<>();
  570. tableNameMap.put("TABLENAME", rs.getString("FTABLE"));
  571. tableNameMap.put("ALIANAME", rs.getString("FTABLE") + tableNameCount);
  572. f7ItemTableMapper.put("S" + rs.getInt("FIELDSN"), tableNameMap);
  573. tableNameCount++;
  574. }
  575. String language = ctx.getLocale().getLanguage();
  576. String sql = "Select e.FSubmitSchemeType,e.FSubmitTarget,e.FIsEnableSubmitElement , m.fieldSn,m.FDataDot,m.fdataType,m.fname_" + language + " ,n.FBillEntryTableName from T_HR_SCalSubmitScheme e inner join T_HR_SCalSubmitSchemeItem t on t.FCalSubmitSchemeID = e.fid inner join T_HR_SCalSubmitItem m on m.fid = t.FCalSubmitItemID inner join T_HR_SCalShemeTableRelation n on n.FSubmitSchemeID =e.fid where e.fid = '" + submitSchemeId + "' order by FSortSn ";
  577. StringBuilder sd = new StringBuilder(" select t.fid id , t.FEffectDate effectDate ,t.FLEffectDate leffectDate , t.FCmpEmpORelationID cmpEmpORelation,");
  578. colNames.add("id");
  579. colNames.add("effectDate");
  580. colNames.add("leffectDate");
  581. String submitTarget = "", fBillEntryTableName = "";
  582. rs = DbUtil.executeQuery(ctx, sql);
  583. boolean f7Flag = true, personFlag = true, isEnableSubmitElement = false;
  584. while (rs.next()) {
  585. submitTarget = rs.getString("FSubmitTarget");
  586. isEnableSubmitElement = rs.getBoolean("FIsEnableSubmitElement");
  587. if (f7Flag) {
  588. f7Flag = false;
  589. fBillEntryTableName = rs.getString("FBillEntryTableName");
  590. if ("02".equals(submitTarget)) {
  591. personFlag = false;
  592. colNames.add("orgId");
  593. colNames.add("name");
  594. colNames.add("number");
  595. sd.append("n.fid orgId , n.fname_").append(language).append(" name , n.fnumber number ");
  596. } else {
  597. colNames.add("dealStatus");
  598. colNames.add("personId");
  599. colNames.add("name");
  600. colNames.add("number");
  601. colNames.add("admOrgId");
  602. colNames.add("admOrgName");
  603. colNames.add("positionId");
  604. colNames.add("positionName");
  605. colNames.add("cmpEmpORelation");
  606. sd.append(" t.FDealStatus dealStatus, person.fid personId , person.fname_").append(language).append(" name, person.fnumber number, adminOrgUnit.fid admOrgId, adminOrgUnit.fname_").append(language).append(" admOrgName, position.fid positionId, position.fname_").append(language).append(" positionName ");
  607. }
  608. }
  609. String fieldName = "S" + rs.getString("fieldSn");
  610. if (f7ItemTableMapper.containsKey(fieldName)) {
  611. Map<String, String> map2 = f7ItemTableMapper.get(fieldName);
  612. String ailaName = map2.get("ALIANAME");
  613. sd.append(",").append(ailaName).append(".FID ").append(fieldName).append("id,").append(ailaName).append(".FNAME_").append(language).append(" ").append(fieldName).append(",").append(ailaName).append(".FNUMBER ").append(fieldName).append("number");
  614. } else {
  615. sd.append(",").append(fieldName);
  616. }
  617. colNames.add(fieldName);
  618. if ("0".equals(rs.getString("fdataType")))
  619. columnMap.put(fieldName, Integer.valueOf(rs.getInt("FDataDot")));
  620. }
  621. colNames.add("description");
  622. if (isEnableSubmitElement) {
  623. colNames.add("submitElement");
  624. sd.append(", t.FSubmitElementID submitElement,submitElement.Fname_").append(language).append(" submitElementName ");
  625. }
  626. colNames.add("currency");
  627. sd.append(",currency.fid currency,currency.fname_").append(language).append(" currencyName,t.fdescription_l1 description_l1,t.fdescription_l2 description_l2,t.fdescription_l3 description_l3");
  628. // start xiaoxin 添加提报单分录字段
  629. sd.append(",se.CFSuperiorID superiorId,se.CFSuperiorName superiorName,se.CFHourlyWage hourlyWage,se.CFStartTime startTime,se.CFEndTime endTime,se.CFRestStartTime restStartTime,se.CFRemark remark");
  630. sd.append(",se.CFRestEndTime restEndTime,se.CFExplain explain,se.CFTotalWorkHours totalWorkHours,se.CFTotalAmount totalAmount,se.CFBeginContractDate beginContractDate,se.CFEndContractDate endContractDate");
  631. colNames.add("superiorId");
  632. colNames.add("superiorName");
  633. colNames.add("hourlyWage");
  634. colNames.add("startTime");
  635. colNames.add("endTime");
  636. colNames.add("restStartTime");
  637. colNames.add("restEndTime");
  638. colNames.add("explain");
  639. colNames.add("totalWorkHours");
  640. colNames.add("totalAmount");
  641. colNames.add("beginContractDate");
  642. colNames.add("endContractDate");
  643. colNames.add("remark");
  644. // end xiaoxin
  645. sd.append(" from ").append(fBillEntryTableName).append(" ");
  646. if (personFlag) {
  647. sd.append(" t inner join t_bd_person person on t.fpersonId = person.fid ");
  648. sd.append(" LEFT join T_ORG_Admin adminOrgUnit on t.FAdminOrgUnitID = adminOrgUnit.fid ");
  649. sd.append(" LEFT join T_ORG_Position position on t.FPositionID = position.fid ");
  650. } else {
  651. sd.append(" t inner join T_ORG_Admin n on t.FOrgUnitID = n.fid ");
  652. }
  653. sd.append(" LEFT join T_BD_Currency currency on t.fCurrencyID = currency.fid ");
  654. // start xiaoxin 添加提报单分录字段
  655. sd.append(" LEFT join T_HR_SchemeBillEntry se on se.fid = t.fid ");
  656. // end xiaoxin
  657. if (isEnableSubmitElement)
  658. sd.append(" LEFT join T_HR_SSubmitElement submitElement on t.FSubmitElementID = submitElement.fid ");
  659. Set<String> f7KeySet = f7ItemTableMapper.keySet();
  660. for (String f7Key : f7KeySet) {
  661. Map<String, String> map2 = f7ItemTableMapper.get(f7Key);
  662. String tableName = map2.get("TABLENAME");
  663. String aliaTbName = map2.get("ALIANAME");
  664. sd.append(" LEFT JOIN ").append(tableName).append(" ").append(aliaTbName).append(" on t.").append(f7Key).append(" = ").append(aliaTbName).append(".FID ");
  665. }
  666. sd.append(" where t.fbillid = '").append(StringEscapeUtils.escapeSql(billID)).append("'");
  667. map.put("querySql", sd.toString());
  668. map.put("colNames", colNames);
  669. map.put("columnMap", columnMap);
  670. } catch (Exception e) {
  671. throw new BOSException(EASResource.getString("com.kingdee.shr.compensation.resource.SubmitShemeBillResource", "label10", ctx.getLocale()));
  672. }
  673. return map;
  674. }
  675. public static Map<String, Object> getBillColumnListAndBillEntryTableName(Context ctx, String submitSchemeId) throws BOSException {
  676. Map<String, Object> map = new HashMap<>();
  677. List<String> colNames = new ArrayList<>();
  678. List<String> colTypes = new ArrayList<>();
  679. if (StringUtils.isEmpty(submitSchemeId))
  680. return map;
  681. String language = ctx.getLocale().getLanguage();
  682. String sql = "Select e.FSubmitTarget , m.fieldSn,m.fdataType,m.fname_" + language + " ,n.FBillEntryTableName ,n.FCalShemeTableName ,t.FIsRequired from T_HR_SCalSubmitScheme e inner join T_HR_SCalSubmitSchemeItem t on t.FCalSubmitSchemeID = e.fid inner join T_HR_SCalSubmitItem m on m.fid = t.FCalSubmitItemID inner join T_HR_SCalShemeTableRelation n on n.FSubmitSchemeID =e.fid where e.fid = '" + submitSchemeId + "' order by FSortSn ";
  683. try {
  684. String fBillEntryTableName = "";
  685. IRowSet rs = DbUtil.executeQuery(ctx, sql);
  686. while (rs.next()) {
  687. if (StringUtils.isEmpty(fBillEntryTableName))
  688. fBillEntryTableName = rs.getString("FBillEntryTableName");
  689. colNames.add("S" + rs.getString("fieldSn"));
  690. colTypes.add(rs.getString("fdataType"));
  691. }
  692. map.put("fBillEntryTableName", fBillEntryTableName);
  693. map.put("colNames", colNames);
  694. map.put("colTypes", colTypes);
  695. } catch (Exception e) {
  696. throw new BOSException(EASResource.getString("com.kingdee.shr.compensation.resource.SubmitShemeBillResource", "label10", ctx.getLocale()));
  697. }
  698. return map;
  699. }
  700. public static Map<String, Object> getBillColumnListAndBillEntryTableNameByDataType(Context ctx, String submitSchemeId, String dataType) throws BOSException {
  701. Map<String, Object> map = new HashMap<>();
  702. List<String> colNames = new ArrayList<>();
  703. if (StringUtils.isEmpty(submitSchemeId))
  704. return map;
  705. String language = ctx.getLocale().getLanguage();
  706. String sql = "Select e.FSubmitTarget , m.fieldSn,m.fdataType,m.fname_" + language + " ,n.FBillEntryTableName ,n.FCalShemeTableName ,t.FIsRequired from T_HR_SCalSubmitScheme e inner join T_HR_SCalSubmitSchemeItem t on t.FCalSubmitSchemeID = e.fid inner join T_HR_SCalSubmitItem m on m.fid = t.FCalSubmitItemID inner join T_HR_SCalShemeTableRelation n on n.FSubmitSchemeID =e.fid where e.fid = '" + submitSchemeId + "' and m.fdataType = '" + dataType + "' order by FSortSn ";
  707. try {
  708. String fBillEntryTableName = "", fCalShemeTableName = "";
  709. IRowSet rs = DbUtil.executeQuery(ctx, sql);
  710. while (rs.next()) {
  711. if (StringUtils.isEmpty(fBillEntryTableName)) {
  712. fBillEntryTableName = rs.getString("FBillEntryTableName");
  713. fCalShemeTableName = rs.getString("FCalShemeTableName");
  714. }
  715. colNames.add("S" + rs.getString("fieldSn"));
  716. }
  717. map.put("fBillEntryTableName", fBillEntryTableName);
  718. map.put("fCalShemeTableName", fCalShemeTableName);
  719. map.put("colNames", colNames);
  720. } catch (Exception e) {
  721. throw new BOSException(EASResource.getString("com.kingdee.shr.compensation.resource.SubmitShemeBillResource", "label10", ctx.getLocale()));
  722. }
  723. return map;
  724. }
  725. public static String getSchemeEntryTableName(Context ctx, String submitSchemeId) {
  726. String fBillEntryTableName = "";
  727. String sql = "Select n.FBillEntryTableName from T_HR_SCalSubmitScheme e inner join T_HR_SCalShemeTableRelation n on n.FSubmitSchemeID =e.fid where e.fid = '" + submitSchemeId + "' ";
  728. try {
  729. IRowSet rs = DbUtil.executeQuery(ctx, sql);
  730. while (rs.next())
  731. fBillEntryTableName = rs.getString("FBillEntryTableName");
  732. } catch (Exception e) {
  733. logger.info(e);
  734. }
  735. return fBillEntryTableName;
  736. }
  737. public static String getCalShemeTableName(Context ctx, String submitSchemeId) {
  738. String calShemeTableName = "";
  739. String sql = "Select n.FBillEntryTableName from T_HR_SCalSubmitScheme e inner join T_HR_SCalShemeTableRelation n on n.FSubmitSchemeID =e.fid where e.fid = '" + submitSchemeId + "' ";
  740. try {
  741. IRowSet rs = DbUtil.executeQuery(ctx, sql);
  742. while (rs.next())
  743. calShemeTableName = rs.getString("FBillEntryTableName");
  744. } catch (Exception e) {
  745. logger.info(e);
  746. }
  747. return calShemeTableName;
  748. }
  749. public static boolean deleteSubmitSchemeRelationDate(Context ctx, String schemeId) throws BOSException, SQLException {
  750. boolean flag = false;
  751. if (StringUtils.isEmpty(schemeId))
  752. return flag;
  753. String sql = "select FBillEntryTableName , FCalShemeTableName from T_HR_SCalShemeTableRelation where FSubmitSchemeID = ?";
  754. String calShemeTableName = "";
  755. String billEntryTableName = "";
  756. IRowSet list = DbUtil.executeQuery(ctx, sql, new Object[] { schemeId });
  757. while (list.next()) {
  758. billEntryTableName = list.getString("FBillEntryTableName");
  759. calShemeTableName = list.getString("FCalShemeTableName");
  760. }
  761. if (!CmpStrUtil.isEmpty(calShemeTableName)) {
  762. DbUtil.execute(ctx, "If exists (select * from KSQL_USERTABLES where KSQL_TABNAME ='" + calShemeTableName + "') drop table " + calShemeTableName + "");
  763. DbUtil.execute(ctx, "If exists (select * from KSQL_USERTABLES where KSQL_TABNAME ='" + billEntryTableName + "') drop table " + billEntryTableName + "");
  764. }
  765. DbUtil.execute(ctx, "delete from T_HR_SCalShemeTableRelation where FSubmitSchemeID = ? ", new Object[] { schemeId });
  766. DbUtil.execute(ctx, "delete from T_HR_SCalSubmitSchemeItem where FCalSubmitSchemeID = ?", new Object[] { schemeId });
  767. DbUtil.execute(ctx, "delete from T_HR_SBaseFormula where FBusinessRelationConfigID in(select fid from T_HR_SBusinessRelationConfig where FBusinessId = ?)", new Object[] { schemeId });
  768. DbUtil.execute(ctx, "delete from T_HR_SBusinessRelationConfig where FBusinessId = ?", new Object[] { schemeId });
  769. DbUtil.execute(ctx, "delete from T_HR_SSchemeDeduConfig where FCalSubmitSchemeID = ?", new Object[] { schemeId });
  770. DbUtil.execute(ctx, "delete from T_HR_SSubmitSchemeVRuleNodeRel where FSubmitSchemeVRuleID in(select fid from T_HR_SSubSchemeVerifiRule where FSubmitSchemeID = ? )", new Object[] { schemeId });
  771. DbUtil.execute(ctx, "delete from T_HR_SSubSchemeVerifiRule where FSubmitSchemeID = ?", new Object[] { schemeId });
  772. DbUtil.execute(ctx, "delete from T_HR_SCalSubmitPeriod where FSubmitSchemeId = ?", new Object[] { schemeId });
  773. DbUtil.execute(ctx, "delete from T_HR_SchemeBizKeyDefine where FSubmitSchemeId = ?", new Object[] { schemeId });
  774. return flag;
  775. }
  776. public static boolean dropSubmitSchemeEntryTableCol(Context ctx, String schemeId, String itemId) throws BOSException, SQLException {
  777. boolean flag = false;
  778. if (StringUtils.isEmpty(schemeId))
  779. return flag;
  780. String sql = "select FBillEntryTableName , FCalShemeTableName from T_HR_SCalShemeTableRelation where FSubmitSchemeID = '" + schemeId + "'";
  781. String sqlItem = "select fieldSn from T_HR_SCalSubmitItem m inner join T_HR_SCalSubmitSchemeItem t on m.fid = t.FCalSubmitItemID where t.fid = '" + itemId + "'";
  782. String calShemeTableName = "", billEntryTableName = "", col = "";
  783. IRowSet rs = DbUtil.executeQuery(ctx, sql);
  784. while (rs.next()) {
  785. billEntryTableName = rs.getString("FBillEntryTableName");
  786. calShemeTableName = rs.getString("FCalShemeTableName");
  787. }
  788. rs = DbUtil.executeQuery(ctx, sqlItem);
  789. while (rs.next())
  790. col = "S" + rs.getString("fieldSn");
  791. StringBuilder calShemeTable = new StringBuilder("If exists (select * from KSQL_USERCOLUMNS where KSQL_COL_NAME ='" + col + "' and KSQL_COL_TABNAME='" + calShemeTableName + "')");
  792. calShemeTable.append("ALTER TABLE " + calShemeTableName + " drop column " + col + " ");
  793. StringBuilder billEntryTable = new StringBuilder("If exists (select * from KSQL_USERCOLUMNS where KSQL_COL_NAME ='" + col + "' and KSQL_COL_TABNAME='" + billEntryTableName + "')");
  794. billEntryTable.append("ALTER TABLE " + billEntryTableName + " drop column " + col + " ");
  795. if (!CmpStrUtil.isEmpty(calShemeTableName)) {
  796. DbUtil.execute(ctx, calShemeTable.toString());
  797. DbUtil.execute(ctx, billEntryTable.toString());
  798. }
  799. return flag;
  800. }
  801. public static Map<String, Object> getRequiredColumns(Context ctx, String submitSchemeId, boolean needEnableData) throws BOSException {
  802. Map<String, Object> map = new HashMap<>();
  803. List<Map<String, Object>> colNames = new ArrayList<>();
  804. if (StringUtils.isEmpty(submitSchemeId))
  805. return map;
  806. String language = ctx.getLocale().getLanguage();
  807. String sql = "Select e.FSubmitTarget , m.fieldSn,m.fdataType,m.fname_" + language + " MNAME,n.FBillEntryTableName ,n.FCalShemeTableName ,t.FIsRequired,t.fstate state from T_HR_SCalSubmitScheme e inner join T_HR_SCalSubmitSchemeItem t on t.FCalSubmitSchemeID = e.fid inner join T_HR_SCalSubmitItem m on m.fid = t.FCalSubmitItemID inner join T_HR_SCalShemeTableRelation n on n.FSubmitSchemeID =e.fid where e.fid = '" + submitSchemeId + "'";
  808. if (needEnableData)
  809. sql = sql + "and t.fstate = 1 ";
  810. sql = sql + " order by t.FSortSn asc ";
  811. String submitTarget = null;
  812. try {
  813. IRowSet rs = DbUtil.executeQuery(ctx, sql);
  814. while (rs.next()) {
  815. Map<String, Object> gridIdMap = new HashMap<>();
  816. gridIdMap.put("rename", rs.getString("MNAME"));
  817. gridIdMap.put("name", "CMP_SMT002.S" + rs.getString("fieldSn"));
  818. gridIdMap.put("label", rs.getString("MNAME"));
  819. gridIdMap.put("type", "String");
  820. submitTarget = rs.getString("FSubmitTarget");
  821. colNames.add(gridIdMap);
  822. }
  823. map.put("colNames", colNames);
  824. map.put("submitTarget", submitTarget);
  825. } catch (Exception e) {
  826. throw new BOSException(EASResource.getString("com.kingdee.shr.compensation.resource.SubmitShemeBillResource", "label10", ctx.getLocale()));
  827. }
  828. return map;
  829. }
  830. public static List<CalShemeSubmitItemDTO> getDynamicSubmitItemBySchemeId(Context ctx, String schemeId) {
  831. List<CalShemeSubmitItemDTO> calShemeSubmitItemDTOS = new ArrayList<>();
  832. StringBuilder sqlBuffer = new StringBuilder();
  833. String language = ctx.getLocale().getLanguage();
  834. sqlBuffer.append(" SELECT M.FNUMBER AS ITEMNUMBER,E.FID AS SCHEMEID, M.FID as ITEMID, M.FIELDSN,M.FDATATYPE,M.FNAME_" + language + " AS ITEMNAME,T.FISREQUIRED ,M.FDATADOT,M.FDATALENGTH ");
  835. sqlBuffer.append(" FROM T_HR_SCALSUBMITSCHEME E ");
  836. sqlBuffer.append(" INNER JOIN T_HR_SCALSUBMITSCHEMEITEM T ON T.FCALSUBMITSCHEMEID = E.FID ");
  837. sqlBuffer.append(" INNER JOIN T_HR_SCALSUBMITITEM M ON M.FID = T.FCALSUBMITITEMID WHERE T.FISSHOW=1 AND T.FState= ").append(1).append(" AND E.FID = '");
  838. sqlBuffer.append(schemeId);
  839. sqlBuffer.append("' ORDER BY T.FSORTSN");
  840. try {
  841. IRowSet rs = DbUtil.executeQuery(ctx, sqlBuffer.toString());
  842. CalShemeSubmitItemDTO calShemeSubmitItemDTO = null;
  843. while (rs.next()) {
  844. calShemeSubmitItemDTO = new CalShemeSubmitItemDTO();
  845. calShemeSubmitItemDTO.setSubmitSchemeId(rs.getString("SCHEMEID"));
  846. calShemeSubmitItemDTO.setItemId(rs.getString("ITEMID"));
  847. calShemeSubmitItemDTO.setFieldSn(Integer.valueOf(rs.getInt("FIELDSN")));
  848. calShemeSubmitItemDTO.setDataType(rs.getString("FDATATYPE"));
  849. calShemeSubmitItemDTO.setSubmitItemName(rs.getString("ITEMNAME"));
  850. calShemeSubmitItemDTO.setIsRequired(Integer.valueOf(rs.getInt("FISREQUIRED")));
  851. calShemeSubmitItemDTO.setDataDot(Integer.valueOf(rs.getInt("FDATADOT")));
  852. calShemeSubmitItemDTO.setDataLength(Integer.valueOf(rs.getInt("FDATALENGTH")));
  853. calShemeSubmitItemDTO.setSubmitItemNumber(rs.getString("ITEMNUMBER"));
  854. calShemeSubmitItemDTOS.add(calShemeSubmitItemDTO);
  855. }
  856. } catch (BOSException e) {
  857. e.printStackTrace();
  858. logger.error(e.getMessage(), (Throwable)e);
  859. } catch (SQLException e) {
  860. logger.error(e.getMessage(), e);
  861. e.printStackTrace();
  862. }
  863. return calShemeSubmitItemDTOS;
  864. }
  865. public static Map<String, Integer> getCellLength(Context ctx, String schemeId) {
  866. Map<String, Integer> map = new HashMap<>();
  867. String sql = "Select m.fieldSn,m.FDataLength from T_HR_SCalSubmitScheme e inner join T_HR_SCalSubmitSchemeItem t on t.FCalSubmitSchemeID = e.fid inner join T_HR_SCalSubmitItem m on m.fid = t.FCalSubmitItemID where e.fid = '" + schemeId + "' and FDataType = '1' order by FSortSn";
  868. try {
  869. IRowSet rs = DbUtil.executeQuery(ctx, sql);
  870. while (rs.next()) {
  871. String fieldSn = String.valueOf(rs.getInt(1));
  872. Integer dataLength = Integer.valueOf(rs.getInt(2));
  873. map.put(fieldSn, dataLength);
  874. }
  875. } catch (Exception e) {
  876. e.printStackTrace();
  877. }
  878. return map;
  879. }
  880. public static Set<String> getCalItemSn(Context ctx, String schemeId) throws BOSException {
  881. Set<String> calItemSn = new HashSet<>();
  882. String formulaSql = "SELECT bf.FCalItem calItem FROM T_HR_SBaseFormula bf LEFT JOIN T_HR_SBusinessRelationConfig brc ON bf.FBUSINESSRELATIONCONFIGID = brc.FID WHERE brc.FBUSINESSID = '" + schemeId + "' AND bf.FISCAL = 1";
  883. try {
  884. IRowSet rs = DbUtil.executeQuery(ctx, formulaSql);
  885. while (rs.next()) {
  886. String sn = rs.getString("calItem");
  887. if (null != sn || !"".equals(sn))
  888. calItemSn.add(sn);
  889. }
  890. } catch (SQLException e) {
  891. String label56 = EASResource.getString("com.kingdee.shr.compensation.resource.CmpXQLangResource", "label56", ctx.getLocale());
  892. throw new BOSException(label56, e);
  893. }
  894. return calItemSn;
  895. }
  896. public static Map<String, List<Map<String, Object>>> initAutoCalFieldOption(Context ctx, String schemeId) {
  897. StringBuilder sqlBuffer = new StringBuilder();
  898. sqlBuffer.append(" SELECT FORMULA.FCALITEM, FORMULA.FSORTSN, FORMULA.FEXPRESS, FORMULA.FLISTITEM, ");
  899. sqlBuffer.append(" ITEM.FDATADOT FDATADOT ");
  900. sqlBuffer.append(" FROM T_HR_SBUSINESSRELATIONCONFIG CONFIG ");
  901. sqlBuffer.append(" INNER JOIN T_HR_SBASEFORMULA FORMULA ON FORMULA.FBUSINESSRELATIONCONFIGID = CONFIG.FID ");
  902. sqlBuffer.append(" LEFT JOIN T_HR_SCalSubmitItem ITEM ON FORMULA.FCALITEM = CONCAT('S',CONVERT(VARCHAR,ITEM.FIELDSN)) ");
  903. sqlBuffer.append(" WHERE ");
  904. sqlBuffer.append(" CONFIG.FBUSINESSID = '").append(schemeId).append("' ");
  905. sqlBuffer.append(" AND FORMULA.FISCAL = 1 ");
  906. sqlBuffer.append(" AND FORMULA.FEXPRESS IS NOT NULL ");
  907. sqlBuffer.append(" AND FORMULA.FCALITEM IS NOT NULL ");
  908. sqlBuffer.append(" AND (FORMULA.FLISTFUNC IS NULL OR FORMULA.FLISTFUNC LIKE '') ");
  909. sqlBuffer.append(" AND (FORMULA.FLISTVAR IS NULL OR FORMULA.FLISTVAR LIKE '') ");
  910. sqlBuffer.append(" AND ITEM.FDATATYPE = '").append("0").append("' ");
  911. sqlBuffer.append(" ORDER BY FORMULA.FSORTSN ");
  912. String tableName = getSchemeEntryTableName(ctx, schemeId);
  913. HashMap<String, List<Map<String, Object>>> result = new HashMap<>();
  914. HashMap<String, List<Map<String, Object>>> realResult = new HashMap<>();
  915. try {
  916. IRowSet rs = DbUtil.executeQuery(ctx, sqlBuffer.toString());
  917. String calItem = "", express = "", listItems = "";
  918. int targetDataDot = 2;
  919. while (rs.next()) {
  920. Map<String, Object> targetFieldMap = new HashMap<>();
  921. calItem = rs.getString("FCALITEM");
  922. targetDataDot = rs.getInt("FDATADOT");
  923. targetFieldMap.put(TARGET_NAME_STR, calItem);
  924. targetFieldMap.put(TARGET_PRECISION_STR, Integer.valueOf(targetDataDot));
  925. express = rs.getString("FEXPRESS");
  926. listItems = rs.getString("FLISTITEM");
  927. if (express.contains("if"))
  928. continue;
  929. express = express.replace(tableName, "").replace("_", "");
  930. express = express.substring(express.indexOf("=") + 1);
  931. listItems = listItems.replace(tableName, "").replace("double", "").replace("~", "");
  932. String[] listItemsArr = listItems.split(";");
  933. if (listItemsArr.length == 1 && listItems.equals(calItem))
  934. continue;
  935. List<String> realListItems = new ArrayList<>(listItemsArr.length - 1);
  936. for (String str : listItemsArr) {
  937. if (!str.equals(calItem))
  938. realListItems.add(str);
  939. }
  940. for (String str : realListItems) {
  941. List<Map<String, Object>> perFieldFormulas;
  942. if (result.containsKey(str)) {
  943. perFieldFormulas = result.get(str);
  944. } else {
  945. perFieldFormulas = new ArrayList<>();
  946. }
  947. Map<String, Object> perFormula = new HashMap<>();
  948. perFormula.put(FIELDS_STR, realListItems);
  949. perFormula.put(FORMULA_STR, express);
  950. perFormula.put(TARGET_STR, targetFieldMap);
  951. perFieldFormulas.add(perFormula);
  952. result.put(str, perFieldFormulas);
  953. }
  954. }
  955. Set<String> keySet = result.keySet();
  956. Iterator<String> iterator = keySet.iterator();
  957. String listItem = "", tempItem = "";
  958. String resultStr = JSONUtils.convertObjectToJson(ctx, result);
  959. realResult.putAll(JSONUtils.convertJsonToObject(ctx, resultStr));
  960. while (iterator.hasNext()) {
  961. listItem = iterator.next();
  962. List<Map<String, Object>> perFieldFormulas = result.get(listItem);
  963. Iterator<Map<String, Object>> iterator2 = perFieldFormulas.iterator();
  964. while (iterator2.hasNext()) {
  965. tempItem = (String)((Map)((Map)iterator2.next()).get(TARGET_STR)).get(TARGET_NAME_STR);
  966. if (result.containsKey(tempItem))
  967. ((List)realResult.get(listItem)).addAll(result.get(tempItem));
  968. }
  969. }
  970. } catch (Exception e) {
  971. logger.error(e.getMessage(), e);
  972. }
  973. return realResult;
  974. }
  975. public static void checkHRBillIsEdit(Context ctx, String billId) throws BOSException, EASBizException {
  976. if (!StringUtils.isEmpty(billId)) {
  977. BatchSubmitShemeBillCollection billInfoC = BatchSubmitShemeBillFactory.getLocalInstance(ctx).getBatchSubmitShemeBillCollection("select id,billState where id = '" + billId + "'");
  978. BatchSubmitShemeBillInfo billInfo = billInfoC.isEmpty() ? null : billInfoC.get(0);
  979. HRBillStateEnum oldBillState = billInfoC.isEmpty() ? null : billInfoC.get(0).getBillState();
  980. HRWorkFlowCheckUtil.checkHRBillIsEdit(ctx, (HRBillBaseInfo)billInfo, oldBillState);
  981. }
  982. }
  983. }