BaseSubmitBillEntryGenerator.java 25 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438
  1. package com.kingdee.shr.customer.gtiit.handler;
  2. import com.alibaba.fastjson.JSONObject;
  3. import com.google.common.collect.Lists;
  4. import com.google.common.collect.Maps;
  5. import com.kingdee.bos.BOSException;
  6. import com.kingdee.bos.Context;
  7. import com.kingdee.bos.util.EASResource;
  8. import com.kingdee.eas.common.EASBizException;
  9. import com.kingdee.shr.base.syssetting.context.SHRContext;
  10. import com.kingdee.shr.base.syssetting.exception.SHRWebException;
  11. import com.kingdee.shr.base.syssetting.exception.ShrWebBizException;
  12. import com.kingdee.shr.compensation.CalFlag;
  13. import com.kingdee.shr.compensation.app.integrate.BatchSubmitSchemeBillDataSource;
  14. import com.kingdee.shr.compensation.app.integrate.CalSchemeItemForF7Info;
  15. import com.kingdee.shr.compensation.app.integrate.CalSubmitItemDataType;
  16. import com.kingdee.shr.compensation.app.integrate.CalSubmitItemInfo;
  17. import com.kingdee.shr.compensation.app.integrate.CalSubmitSchemeFactory;
  18. import com.kingdee.shr.compensation.app.integrate.CalSubmitSchemeInfo;
  19. import com.kingdee.shr.compensation.app.integrate.CalSubmitSchemeItemCollection;
  20. import com.kingdee.shr.compensation.app.integrate.CalSubmitSchemeItemFactory;
  21. import com.kingdee.shr.compensation.app.integrate.CalSubmitSchemeItemInfo;
  22. import com.kingdee.shr.compensation.app.integrate.DateTypeEnum;
  23. import com.kingdee.shr.compensation.app.integrate.TargetType;
  24. import com.kingdee.shr.compensation.util.columnModel.CmpColumnModelWrapper;
  25. import com.kingdee.shr.compensation.util.columnModel.CmpColumnModels;
  26. import com.kingdee.shr.compensation.util.integrate.CmpIntegrateUtils;
  27. import com.kingdee.shr.compensation.web.handler.integrate.helper.CmpIntegrateWebHelper;
  28. import com.kingdee.shr.customer.gtiit.helper.CmpDisplayViewAnalyzing;
  29. import com.kingdee.shr.ml.util.SHRServerResource;
  30. import java.lang.reflect.Method;
  31. import java.util.HashMap;
  32. import java.util.List;
  33. import java.util.Map;
  34. import java.util.Set;
  35. import org.apache.commons.lang3.StringUtils;
  36. public class BaseSubmitBillEntryGenerator {
  37. protected static final String UIPK_ADMINORGUNIT = "com.kingdee.eas.basedata.org.app.AdminOrgUnit.F7";
  38. protected static final String UIPK_CMPEMPORELATION_STORES = "com.kingdee.shr.compensation.app.integrate.stores.CmpEmpORelation.F7";
  39. protected static final String UIPK_CMPEMPORELATION = "com.kingdee.shr.compensation.app.integrate.CmpEmpORelation.F7";
  40. protected static final String UIPK_SUBMITELEMENT = "com.kingdee.shr.compensation.app.integrate.SubmitElement.usable.list";
  41. protected static final String UIPK_CURRENCY = "com.kingdee.eas.basedata.assistant.app.Currency.CMP.F7";
  42. public static final String DISPLAY = "com.kingdee.shr.compensation.app.integrate.BatchSubmitShemeBill.form.display";
  43. protected final Map<String, Map<String, Boolean>> attrMap;
  44. protected Map<String, String> fieldName2MethodName;
  45. protected Map<String, Object> params;
  46. protected CalSubmitSchemeInfo submitScheme;
  47. public BaseSubmitBillEntryGenerator() {
  48. Context ctx = SHRContext.getInstance().getContext();
  49. try {
  50. this.attrMap = CmpDisplayViewAnalyzing.complementDefaultField(ctx, "com.kingdee.shr.compensation.app.integrate.BatchSubmitShemeBill.form.display");
  51. assembleFieldName2MethodName();
  52. assembleNeedField();
  53. } catch (Exception e) {
  54. throw new RuntimeException();
  55. }
  56. }
  57. public BaseSubmitBillEntryGenerator(Context ctx) {
  58. try {
  59. this.attrMap = CmpDisplayViewAnalyzing.complementDefaultField(ctx, "com.kingdee.shr.compensation.app.integrate.BatchSubmitShemeBill.form.display");
  60. assembleFieldName2MethodName();
  61. assembleNeedField();
  62. } catch (Exception e) {
  63. throw new RuntimeException();
  64. }
  65. }
  66. protected void assembleNeedField() {
  67. if (!this.attrMap.containsKey("adminOrgUnit")) {
  68. Map<String, Boolean> adminMap = Maps.newHashMap();
  69. adminMap.put("hidden", Boolean.TRUE);
  70. this.attrMap.put("adminOrgUnit", adminMap);
  71. }
  72. if (!this.attrMap.containsKey("position")) {
  73. Map<String, Boolean> positionMap = Maps.newHashMap();
  74. positionMap.put("hidden", Boolean.TRUE);
  75. this.attrMap.put("position", positionMap);
  76. }
  77. }
  78. protected void assembleFieldName2MethodName() throws SHRWebException {
  79. this.fieldName2MethodName = Maps.newHashMap();
  80. this.fieldName2MethodName.put("id", "assembleId");
  81. this.fieldName2MethodName.put("number", "assembleNumber");
  82. this.fieldName2MethodName.put("person", "assemblePersonName");
  83. this.fieldName2MethodName.put("adminOrgUnit", "assembleAdminOrgName");
  84. this.fieldName2MethodName.put("position", "assemblePositionName");
  85. this.fieldName2MethodName.put("cmpEmpORelation", "assembleCmpEmpORelationName");
  86. this.fieldName2MethodName.put("tempId", "assembleTempPropName");
  87. this.fieldName2MethodName.put("submitElement", "assembleSubmitElement");
  88. this.fieldName2MethodName.put("currency", "assembleCurrency");
  89. this.fieldName2MethodName.put("effectDate", "assembleEffectDate");
  90. this.fieldName2MethodName.put("leffectDate", "assembleLEffectDate");
  91. this.fieldName2MethodName.put("submitItem", "assembleDynamicItem");
  92. this.fieldName2MethodName.put("description", "assembleDescription");
  93. }
  94. public CmpColumnModels getEntryColumnModels(Context ctx, String submitSchemeId, Map<String, Object> params) throws SHRWebException {
  95. this.params = params;
  96. this.submitScheme = getCalSubmitSchemeInfo(ctx, submitSchemeId);
  97. if (this.attrMap == null)
  98. return getEntryColumnModelsFormat(ctx);
  99. return getEntryColumnModelsCustom(ctx);
  100. }
  101. public CmpColumnModels getEntryColumnModelsFormat(Context ctx) throws SHRWebException {
  102. CmpColumnModels cmpColumnModels = new CmpColumnModels();
  103. assembleId(ctx, cmpColumnModels);
  104. if (TargetType.org.equals(this.submitScheme.getSubmitTarget())) {
  105. assembleOrgSubmitMainBizKey(ctx, cmpColumnModels);
  106. } else {
  107. assemblePersonSubmitMainBizKey(ctx, cmpColumnModels);
  108. }
  109. assembleSubmitElement(ctx, cmpColumnModels);
  110. assembleCurrency(ctx, cmpColumnModels);
  111. assembleEffectDate(ctx, cmpColumnModels);
  112. assembleLEffectDate(ctx, cmpColumnModels);
  113. assembleDynamicItem(ctx, cmpColumnModels);
  114. assembleDescription(ctx, cmpColumnModels);
  115. return cmpColumnModels;
  116. }
  117. public CmpColumnModels getEntryColumnModelsCustom(Context ctx) throws SHRWebException {
  118. CmpColumnModels cmpColumnModels = new CmpColumnModels();
  119. beforeInvokeAttrMap(ctx, cmpColumnModels);
  120. for (String name : this.attrMap.keySet()) {
  121. try {
  122. String methodName = this.fieldName2MethodName.get(name);
  123. if (StringUtils.isEmpty(methodName))
  124. continue;
  125. Method method = getClass().getMethod(methodName, new Class[] { Context.class, CmpColumnModels.class });
  126. method.invoke(this, new Object[] { ctx, cmpColumnModels });
  127. } catch (Exception e) {
  128. throw new SHRWebException(e.getMessage(), e);
  129. }
  130. }
  131. return cmpColumnModels;
  132. }
  133. protected void beforeInvokeAttrMap(Context ctx, CmpColumnModels cmpColumnModels) {}
  134. public CalSubmitSchemeInfo getCalSubmitSchemeInfo(Context ctx, String submitSchemeId) throws SHRWebException {
  135. CalSubmitSchemeInfo submitScheme;
  136. try {
  137. submitScheme = CalSubmitSchemeFactory.getLocalInstance(ctx).getCalSubmitSchemeInfo("where id = '" + submitSchemeId + "'");
  138. } catch (EASBizException e) {
  139. throw new ShrWebBizException(e.getMessage(), e);
  140. } catch (BOSException e) {
  141. throw new SHRWebException(e.getMessage(), e);
  142. }
  143. return submitScheme;
  144. }
  145. protected void assembleOrgSubmitMainBizKey(Context ctx, CmpColumnModels cmpColumnModels) {
  146. String submitOrgName = getMultiLan(ctx, "label0");
  147. cmpColumnModels.add(submitOrgName, CmpColumnModelWrapper.createF7ColModel("orgUnit", submitOrgName, Integer.valueOf(90)).assembleF7Editoptions(submitOrgName, "com.kingdee.eas.basedata.org.app.AdminOrgUnit.F7", true, false).frozen().get());
  148. }
  149. protected void assemblePersonSubmitMainBizKey(Context ctx, CmpColumnModels cmpColumnModels) {
  150. assembleNumber(ctx, cmpColumnModels);
  151. assemblePersonName(ctx, cmpColumnModels);
  152. assembleAdminOrgName(ctx, cmpColumnModels);
  153. assemblePositionName(ctx, cmpColumnModels);
  154. assembleCmpEmpORelationName(ctx, cmpColumnModels);
  155. assembleTempPropName(ctx, cmpColumnModels);
  156. }
  157. public void assembleId(Context ctx, CmpColumnModels cmpColumnModels) {
  158. String idName = "ID";
  159. Map<String, Boolean> attr = (this.attrMap == null) ? new HashMap<>() : this.attrMap.get("id");
  160. cmpColumnModels.add(idName, CmpColumnModelWrapper.createTextColModel("id", idName, Integer.valueOf(150)).frozen(attr.get("frozen")).hidden(attr.get("hidden")).key().get());
  161. }
  162. public void assembleNumber(Context ctx, CmpColumnModels cmpColumnModels) {
  163. String numberName = getMultiLan(ctx, "label1");
  164. Map<String, Boolean> attr = (this.attrMap == null) ? new HashMap<>() : this.attrMap.get("number");
  165. cmpColumnModels.add(numberName, CmpColumnModelWrapper.createTextColModel("number", numberName, Integer.valueOf(90)).frozen(attr.get("frozen")).hidden(attr.get("hidden")).key().sortable().disable().get());
  166. }
  167. public void assemblePersonName(Context ctx, CmpColumnModels cmpColumnModels) {
  168. String personName = getMultiLan(ctx, "label2");
  169. Integer dataSource = (Integer)this.params.get("datasource");
  170. String cmpEmpORelF7Uipk = (dataSource != null && BatchSubmitSchemeBillDataSource.getEnum(dataSource.intValue()) == BatchSubmitSchemeBillDataSource.TEAM_SUBMIT) ? "com.kingdee.shr.compensation.app.integrate.stores.CmpEmpORelation.F7" : "com.kingdee.shr.compensation.app.integrate.CmpEmpORelation.F7";
  171. Map<String, Boolean> attr = (this.attrMap == null) ? new HashMap<>() : this.attrMap.get("person");
  172. cmpColumnModels.add(personName, CmpColumnModelWrapper.createF7ColModel("person", personName, Integer.valueOf(90)).assembleF7Editoptions(personName, cmpEmpORelF7Uipk, true, false)
  173. .frozen(attr.get("frozen")).hidden(attr.get("hidden")).sortable().get());
  174. }
  175. public void assembleAdminOrgName(Context ctx, CmpColumnModels cmpColumnModels) {
  176. String adminOrgName = getMultiLan(ctx, "label3");
  177. Map<String, Boolean> attr = (this.attrMap == null) ? new HashMap<>() : this.attrMap.get("adminOrgUnit");
  178. cmpColumnModels.add(adminOrgName, CmpColumnModelWrapper.createF7ColModel("adminOrgUnit", adminOrgName, Integer.valueOf(150)).frozen(attr.get("frozen")).hidden(attr.get("hidden")).disable().get());
  179. }
  180. public void assemblePositionName(Context ctx, CmpColumnModels cmpColumnModels) {
  181. String positionName = getMultiLan(ctx, "label4");
  182. Map<String, Boolean> attr = (this.attrMap == null) ? new HashMap<>() : this.attrMap.get("position");
  183. cmpColumnModels.add(positionName, CmpColumnModelWrapper.createF7ColModel("position", positionName, Integer.valueOf(150)).frozen(attr.get("frozen")).hidden(attr.get("hidden")).disable().get());
  184. }
  185. public void assembleCmpEmpORelationName(Context ctx, CmpColumnModels cmpColumnModels) {
  186. String cmpEmpORelationName = getMultiLan(ctx, "label5");
  187. Map<String, Boolean> attr = (this.attrMap == null) ? new HashMap<>() : this.attrMap.get("cmpEmpORelation");
  188. cmpColumnModels.add(cmpEmpORelationName, CmpColumnModelWrapper.createF7ColModel("cmpEmpORelation", cmpEmpORelationName, Integer.valueOf(90)).frozen(attr.get("frozen")).hidden(attr.get("hidden")).get());
  189. }
  190. public void assembleTempPropName(Context ctx, CmpColumnModels cmpColumnModels) {
  191. String tempPropName = "tempId";
  192. Map<String, Boolean> attr = (this.attrMap == null) ? new HashMap<>() : this.attrMap.get("tempId");
  193. cmpColumnModels.add(tempPropName, CmpColumnModelWrapper.createTextColModel("tempId", tempPropName, Integer.valueOf(90)).frozen(attr.get("frozen")).hidden(attr.get("hidden")).key().get());
  194. }
  195. public void assembleSubmitElement(Context ctx, CmpColumnModels cmpColumnModels) {
  196. if (this.submitScheme.isIsEnableSubmitElement()) {
  197. String hrOrgUnitId = this.submitScheme.getHrOrgUnit().getId().toString();
  198. String filterSql = "hrOrgUse.id ='" + hrOrgUnitId + "' and state = " + 'd';
  199. String submtElementName = getMultiLan(ctx, "label6");
  200. Map<String, Boolean> attr = (this.attrMap == null) ? new HashMap<>() : this.attrMap.get("submitElement");
  201. cmpColumnModels.add(submtElementName, CmpColumnModelWrapper.createF7ColModel("submitElement", submtElementName, Integer.valueOf(90))
  202. .assembleF7Editoptions(submtElementName, "com.kingdee.shr.compensation.app.integrate.SubmitElement.usable.list", true, filterSql, true).frozen(attr.get("frozen")).hidden(attr.get("hidden")).required().get());
  203. }
  204. }
  205. public void assembleEffectDate(Context ctx, CmpColumnModels cmpColumnModels) {
  206. String effectDateName = this.submitScheme.isIscycle() ? getMultiLan(ctx, "label41") : getMultiLan(ctx, "label8");
  207. if(!(ctx.getLocale().toString().equalsIgnoreCase("zh_CN") || ctx.getLocale().toString().equalsIgnoreCase("l2") || ctx.getLocale().toString().equalsIgnoreCase("L2"))) {
  208. effectDateName = "Occurring Date";
  209. }
  210. boolean isRemoveDay = (DateTypeEnum.yyyyMM == this.submitScheme.getEffectDateDisplay());
  211. Map<String, Boolean> attr = (this.attrMap == null) ? new HashMap<>() : this.attrMap.get("effectDate");
  212. cmpColumnModels.add(effectDateName, CmpColumnModelWrapper.createDateColModel("effectDate", effectDateName, Integer.valueOf(90)).assembleDateEditoptions(true, isRemoveDay)
  213. .frozen(attr.get("frozen")).hidden(attr.get("hidden")).key().get());
  214. }
  215. public void assembleLEffectDate(Context ctx, CmpColumnModels cmpColumnModels) {
  216. if (this.submitScheme.isIscycle()) {
  217. String leffectDateName = getMultiLan(ctx, "label33");
  218. Map<String, Boolean> attr = (this.attrMap == null) ? new HashMap<>() : this.attrMap.get("leffectDate");
  219. cmpColumnModels.add(leffectDateName, CmpColumnModelWrapper.createDateColModel("leffectDate", leffectDateName, Integer.valueOf(90)).assembleDateEditoptions(false, false)
  220. .frozen(attr.get("frozen")).hidden(attr.get("hidden")).get());
  221. }
  222. }
  223. public void assembleCurrency(Context ctx, CmpColumnModels cmpColumnModels) {
  224. String currencyName = getMultiLan(ctx, "label7");
  225. Map<String, Boolean> attr = (this.attrMap == null) ? new HashMap<>() : this.attrMap.get("currency");
  226. cmpColumnModels.add(currencyName, CmpColumnModelWrapper.createF7ColModel("currency", currencyName, Integer.valueOf(90)).assembleF7Editoptions(currencyName, "com.kingdee.eas.basedata.assistant.app.Currency.CMP.F7", true, false)
  227. .frozen(attr.get("frozen")).hidden(attr.get("hidden")).get());
  228. }
  229. public void assembleDescription(Context ctx, CmpColumnModels cmpColumnModels) {
  230. assembleAddNewPropName(ctx, cmpColumnModels);
  231. String descriptionName = getMultiLan(ctx, "label9");
  232. Map<String, Boolean> attr = (this.attrMap == null) ? new HashMap<>() : this.attrMap.get("description");
  233. cmpColumnModels.add(descriptionName, CmpColumnModelWrapper.createMultiLanColModel("description", descriptionName, Integer.valueOf(250)).assembleTextInputEditOptions(false, 255)
  234. .frozen(attr.get("frozen")).hidden(attr.get("hidden")).get());
  235. }
  236. /**
  237. * 自定义字段添加
  238. * @param ctx
  239. * @param cmpColumnModels
  240. */
  241. @SuppressWarnings({ "unchecked", "rawtypes" })
  242. public void assembleAddNewPropName(Context ctx, CmpColumnModels cmpColumnModels) {
  243. Map<String, Map<String, Boolean>> attrMap = null;
  244. try {
  245. attrMap = CmpDisplayViewAnalyzing.complementDefaultField(ctx, "com.kingdee.shr.compensation.app.integrate.BatchSubmitShemeBill.form.display");
  246. } catch (SHRWebException e) {
  247. e.printStackTrace();
  248. }
  249. String tempPropName = "Contract Start Time(合同开始时间)";
  250. Map<String, Boolean> attr = attrMap == null ? new HashMap() : (Map)attrMap.get("beginContractDate");
  251. Map<String, Object> modelMap = CmpColumnModelWrapper.createDateColModel("beginContractDate", tempPropName, 90).assembleDateEditoptions(false, false).frozen((Boolean) ((Map) attr).get("frozen")).hidden((Boolean) ((Map) attr).get("hidden")).key().disable().get();
  252. cmpColumnModels.add(tempPropName, modelMap);
  253. tempPropName = "Contract End Time(合同结束时间)";
  254. attr = attrMap == null ? new HashMap() : (Map)attrMap.get("endContractDate");
  255. modelMap = CmpColumnModelWrapper.createDateColModel("endContractDate", tempPropName, 90).assembleDateEditoptions(false, false).frozen((Boolean) ((Map) attr).get("frozen")).hidden((Boolean) ((Map) attr).get("hidden")).key().disable().get();
  256. cmpColumnModels.add(tempPropName, modelMap);
  257. tempPropName = "Line Manager(直属上级)";
  258. attr = attrMap == null ? new HashMap() : (Map)attrMap.get("superiorId");
  259. cmpColumnModels.add(tempPropName, CmpColumnModelWrapper.createTextColModel("superiorId", tempPropName, 90).frozen((Boolean)((Map)attr).get("frozen")).hidden((Boolean)((Map)attr).get("hidden")).key().disable().get());
  260. tempPropName = "Line Manager(直属上级)";
  261. attr = attrMap == null ? new HashMap() : (Map)attrMap.get("superiorName");
  262. cmpColumnModels.add(tempPropName, CmpColumnModelWrapper.createTextColModel("superiorName", tempPropName, 90).frozen((Boolean)((Map)attr).get("frozen")).hidden((Boolean)((Map)attr).get("hidden")).key().disable().get());
  263. tempPropName = "Hourly Rate(时薪)";
  264. attr = attrMap == null ? new HashMap() : (Map)attrMap.get("hourlyWage");
  265. cmpColumnModels.add(tempPropName, CmpColumnModelWrapper.createDecimalColModel("hourlyWage", tempPropName, 90).assembleDecimalInputEditOptions(true, 2, 2).frozen((Boolean)((Map)attr).get("frozen")).hidden((Boolean)((Map)attr).get("hidden")).disable().get());
  266. tempPropName = "*Start Time(开始时间)";
  267. attr = attrMap == null ? new HashMap() : (Map)attrMap.get("startTime");
  268. modelMap = CmpColumnModelWrapper.createDateColModel("startTime", tempPropName, 90).assembleDateEditoptions(true, false).frozen((Boolean) ((Map) attr).get("frozen")).hidden((Boolean) ((Map) attr).get("hidden")).key().get();
  269. setDataType(modelMap);
  270. cmpColumnModels.add(tempPropName, modelMap);
  271. tempPropName = "*End Time(结束时间)";
  272. attr = attrMap == null ? new HashMap() : (Map)attrMap.get("endTime");
  273. modelMap = CmpColumnModelWrapper.createDateColModel("endTime", tempPropName, 90).assembleDateEditoptions(true, false).frozen((Boolean) ((Map) attr).get("frozen")).hidden((Boolean) ((Map) attr).get("hidden")).key().get();
  274. setDataType(modelMap);
  275. cmpColumnModels.add(tempPropName, modelMap);
  276. tempPropName = "Start Break Time(休息开始时间)";
  277. attr = attrMap == null ? new HashMap() : (Map)attrMap.get("restStartTime");
  278. modelMap = CmpColumnModelWrapper.createDateColModel("restStartTime", tempPropName, 90).assembleDateEditoptions(false, false).frozen((Boolean) ((Map) attr).get("frozen")).hidden((Boolean) ((Map) attr).get("hidden")).key().get();
  279. setDataType(modelMap);
  280. cmpColumnModels.add(tempPropName, modelMap);
  281. tempPropName = "End Break Time(休息结束时间)";
  282. attr = attrMap == null ? new HashMap() : (Map)attrMap.get("restEndTime");
  283. modelMap = CmpColumnModelWrapper.createDateColModel("restEndTime", tempPropName, 90).assembleDateEditoptions(false, false).frozen((Boolean) ((Map) attr).get("frozen")).hidden((Boolean) ((Map) attr).get("hidden")).key().get();
  284. setDataType(modelMap);
  285. cmpColumnModels.add(tempPropName, modelMap);
  286. tempPropName = "Working hours(总工时)";
  287. attr = attrMap == null ? new HashMap() : (Map)attrMap.get("totalWorkHours");
  288. cmpColumnModels.add(tempPropName, CmpColumnModelWrapper.createDecimalColModel("totalWorkHours", tempPropName, 90).assembleDecimalInputEditOptions(true, 2, 2).frozen((Boolean)((Map)attr).get("frozen")).hidden((Boolean)((Map)attr).get("hidden")).disable().get());
  289. tempPropName = "Total Payment(总金额)";
  290. attr = attrMap == null ? new HashMap() : (Map)attrMap.get("totalAmount");
  291. cmpColumnModels.add(tempPropName, CmpColumnModelWrapper.createDecimalColModel("totalAmount", tempPropName, 90).assembleDecimalInputEditOptions(true, 2, 2).frozen((Boolean)((Map)attr).get("frozen")).hidden((Boolean)((Map)attr).get("hidden")).disable().get());
  292. tempPropName = "Note(说明)";
  293. attr = attrMap == null ? new HashMap() : (Map)attrMap.get("explain");
  294. cmpColumnModels.add(tempPropName, CmpColumnModelWrapper.createTextColModel("explain", tempPropName, 230).frozen((Boolean)((Map)attr).get("frozen")).hidden((Boolean)((Map)attr).get("hidden")).key().get());
  295. tempPropName = "Remark(备注)";
  296. attr = attrMap == null ? new HashMap() : (Map)attrMap.get("remark");
  297. cmpColumnModels.add(tempPropName, CmpColumnModelWrapper.createTextColModel("remark", tempPropName, 250).assembleTextInputEditOptions(false, 500).frozen((Boolean)((Map)attr).get("frozen")).hidden((Boolean)((Map)attr).get("hidden")).key().get());
  298. }
  299. /**
  300. * 将日期控件类型改成时间控件
  301. * @param modelMap
  302. */
  303. @SuppressWarnings("unchecked")
  304. public void setDataType(Map<String, Object> modelMap){
  305. Map<String, Object> editoptions = (Map<String, Object>) modelMap.get("editoptions");
  306. Map<String, Object> datepickerjson = (Map<String, Object>) editoptions.get("datepickerjson");
  307. datepickerjson.put("ctrlType", "Time");
  308. }
  309. public void assembleDynamicItem(Context ctx, CmpColumnModels cmpColumnModels) throws SHRWebException {
  310. CalSubmitSchemeItemCollection schemeItemCols;
  311. String submitSchemeId = this.submitScheme.getId().toString();
  312. try {
  313. schemeItemCols = CalSubmitSchemeItemFactory.getLocalInstance(ctx).getCalSubmitSchemeItemCollection("select calSubmitItem.*,isRequired where calSubmitScheme = '" + submitSchemeId + "' and isShow = 1 and state = 1 order by sortSn asc");
  314. } catch (BOSException e) {
  315. throw new SHRWebException(e.getMessage(), e);
  316. }
  317. Set<String> calItemPropNames = CmpIntegrateWebHelper.getCalItemPropNames(ctx, submitSchemeId);
  318. Map<String, List<Map<String, Object>>> autoCalFieldOptionMap = CmpIntegrateUtils.initAutoCalFieldOption(ctx, submitSchemeId);
  319. Map<String, CalSchemeItemForF7Info> f7ItemAndFilterUipkMap = CmpIntegrateWebHelper.getItemAndItemForF7Map(ctx, submitSchemeId);
  320. String usualDataMsg = SHRServerResource.getString("com.kingdee.shr.cmpdesign.resource.AdjustSalaryApplyResource", "label57", ctx);
  321. for (int i = 0; i < schemeItemCols.size(); i++) {
  322. CmpColumnModelWrapper wrapper;
  323. CalSubmitSchemeItemInfo calSchemeItem = schemeItemCols.get(i);
  324. CalSubmitItemInfo calItem = calSchemeItem.getCalSubmitItem();
  325. String calItemNumber = calItem.getNumber();
  326. if(StringUtils.equals("GS001", calItemNumber)) {
  327. continue;
  328. }
  329. String propName = "S" + calItem.getFieldSn();
  330. boolean isRequired = (CalFlag.YES == calSchemeItem.getIsRequired());
  331. isRequired = isRequired(ctx, cmpColumnModels, this.submitScheme, this.params, isRequired);
  332. if (CalSubmitItemDataType.number == calItem.getDataType()) {
  333. wrapper = CmpColumnModelWrapper.createDecimalColModel(propName, calItem.getName(), Integer.valueOf(100));
  334. wrapper.assembleDecimalInputEditOptions(isRequired, calItem.getDataDot().getValue(), calItem.getDataLength());
  335. if (autoCalFieldOptionMap.containsKey(propName)) {
  336. JSONObject editoptions = (JSONObject)wrapper.get().get("editoptions");
  337. editoptions.put("autoCal", Boolean.valueOf(true));
  338. editoptions.put("cellFomular", autoCalFieldOptionMap.get(propName));
  339. }
  340. } else if (CalSubmitItemDataType.String == calItem.getDataType()) {
  341. wrapper = CmpColumnModelWrapper.createTextColModel(propName, calItem.getName(), Integer.valueOf(90));
  342. wrapper.assembleTextInputEditOptions(isRequired, calItem.getDataLength());
  343. } else if (CalSubmitItemDataType.Date == calItem.getDataType()) {
  344. wrapper = CmpColumnModelWrapper.createDateColModel(propName, calItem.getName(), Integer.valueOf(90));
  345. boolean isRemoveDay = (DateTypeEnum.yyyyMM == calItem.getDateType());
  346. wrapper.assembleDateEditoptions(isRequired, isRemoveDay);
  347. } else if (CalSubmitItemDataType.F7 == calItem.getDataType()) {
  348. CalSchemeItemForF7Info itemForF7 = f7ItemAndFilterUipkMap.get(calItem.getId().toString());
  349. String f7Filter = getF7Filter(calItem, itemForF7, this.params);
  350. wrapper = CmpColumnModelWrapper.createF7ColModel(propName, calItem.getName(), Integer.valueOf(90));
  351. wrapper.assembleF7Editoptions(calItem.getName(), itemForF7.getUipk(), isRequired, f7Filter, itemForF7.isIsBasic());
  352. if (itemForF7.isIsBasic())
  353. ((Map<String, String>)((List<Map<String, String>>)((Map)((Map)((Map)wrapper.get().get("editoptions")).get("f7Json")).get("subWidgetOptions")).get("filterConfig")).get(0)).put("alias", usualDataMsg);
  354. } else {
  355. wrapper = CmpColumnModelWrapper.createEmptyColModel();
  356. }
  357. if (calItemPropNames.contains(propName)) {
  358. wrapper.disable();
  359. if (isRequired)
  360. wrapper.requiredAndDisable();
  361. }
  362. cmpColumnModels.add(calItem.getName(), wrapper.get());
  363. }
  364. }
  365. protected boolean isRequired(Context ctx, CmpColumnModels cmpColumnModels, CalSubmitSchemeInfo submitScheme, Map<String, Object> params, boolean isRequired) {
  366. return isRequired;
  367. }
  368. protected String getF7Filter(CalSubmitItemInfo calItem, CalSchemeItemForF7Info itemForF7, Map<String, Object> params) {
  369. List<String> filerList = Lists.newArrayList();
  370. if (itemForF7.isIsBasic())
  371. filerList.add("state = 100");
  372. String hrOrgUnitId = (String)params.get("hrOrgUnitId");
  373. if (!StringUtils.isEmpty(hrOrgUnitId) && itemForF7.isIsBasic())
  374. filerList.add("hrOrgUse.id = '" + hrOrgUnitId + "'");
  375. String costTypeId = (String)params.get("costTypeId");
  376. if ("AwardName".equals(calItem.getNumber()) && !StringUtils.isEmpty(costTypeId))
  377. filerList.add("costType.id = '" + costTypeId + "'");
  378. return StringUtils.join(filerList, " and ");
  379. }
  380. protected String getMultiLan(Context ctx, String label) {
  381. return EASResource.getString("com.kingdee.shr.compensation.resource.SubmitShemeBillResource", label, ctx.getLocale());
  382. }
  383. }