|
@@ -0,0 +1,729 @@
|
|
|
+package nccloud.web.hrbm.bmdata.action;
|
|
|
+
|
|
|
+import java.util.ArrayList;
|
|
|
+import java.util.Arrays;
|
|
|
+import java.util.HashMap;
|
|
|
+import java.util.List;
|
|
|
+import java.util.Map;
|
|
|
+import java.util.regex.Matcher;
|
|
|
+import java.util.regex.Pattern;
|
|
|
+
|
|
|
+import com.alibaba.fastjson.JSONArray;
|
|
|
+import com.alibaba.fastjson.JSONObject;
|
|
|
+import nc.bs.dao.BaseDAO;
|
|
|
+import nc.bs.dao.DAOException;
|
|
|
+import nc.bs.logging.Logger;
|
|
|
+import nc.hr.utils.ResHelper;
|
|
|
+import nc.itf.bm.bmdata.IBmdataQueryService;
|
|
|
+import nc.itf.hr.bm.IBmPub;
|
|
|
+import nc.itf.hr.frame.IPersistenceRetrieve;
|
|
|
+import nc.jdbc.framework.processor.ColumnProcessor;
|
|
|
+import nc.ui.hr.frame.persistence.PersitenceDelegator;
|
|
|
+import nc.vo.bd.util.StringUtil;
|
|
|
+import nc.vo.bm.bmclass.BmClassItemVO;
|
|
|
+import nc.vo.bm.data.BmDataVO;
|
|
|
+import nc.vo.bm.data.BmdataDspVO;
|
|
|
+import nc.vo.bm.data.BmdataShowInfVO;
|
|
|
+import nc.vo.bm.file.BmBaseDspVO;
|
|
|
+import nc.vo.bm.item.BmFromEnumVO;
|
|
|
+import nc.vo.bm.period.BmPeriodstateVO;
|
|
|
+import nc.vo.bm.pub.BmLoginContext;
|
|
|
+import nc.vo.bm.pub.BmLoginVO;
|
|
|
+import nc.vo.hr.combinesort.SortVO;
|
|
|
+import nc.vo.hr.combinesort.SortconVO;
|
|
|
+import nc.vo.hr.pub.YearPeriodSeperatorVO;
|
|
|
+import nc.vo.hr.tools.pub.HRAggVO;
|
|
|
+import nc.vo.pub.BusinessException;
|
|
|
+import nc.vo.pub.SuperVO;
|
|
|
+import nc.vo.pub.lang.UFBoolean;
|
|
|
+import nc.vo.pub.lang.UFDouble;
|
|
|
+import nccloud.commons.collections.CollectionUtils;
|
|
|
+import nccloud.commons.lang.ArrayUtils;
|
|
|
+import nccloud.framework.service.ServiceLocator;
|
|
|
+import nccloud.framework.web.convert.pattern.FormConvertor;
|
|
|
+import nccloud.framework.web.convert.pattern.GridConvertor;
|
|
|
+import nccloud.framework.web.ui.config.Area;
|
|
|
+import nccloud.framework.web.ui.config.Item;
|
|
|
+import nccloud.framework.web.ui.config.PageTemplet;
|
|
|
+import nccloud.framework.web.ui.conver.DataTypeEnum;
|
|
|
+import nccloud.framework.web.ui.meta.ComponentType;
|
|
|
+import nccloud.framework.web.ui.meta.ItemOption;
|
|
|
+import nccloud.framework.web.ui.model.PageInfo;
|
|
|
+import nccloud.framework.web.ui.model.row.Cell;
|
|
|
+import nccloud.framework.web.ui.model.row.Row;
|
|
|
+import nccloud.framework.web.ui.pattern.form.Form;
|
|
|
+import nccloud.framework.web.ui.pattern.grid.Grid;
|
|
|
+import nccloud.web.hrbm.helper.BmTempletUtils;
|
|
|
+import org.apache.poi.ss.formula.functions.T;
|
|
|
+
|
|
|
+public class NewBmDataTempletUtils {
|
|
|
+ public static final String TEMPLET_TABLE = "60150bmdata_table";
|
|
|
+ public static final String TEMPLET_FORM = "60150bmdata_form";
|
|
|
+ public static final String AREA_HEAD = "bm_info";
|
|
|
+ public static final String AREA_STATE = "bm_state";
|
|
|
+ public static final String AREA_ITEM = "bm_item";
|
|
|
+ public static final String PSNCODE = "psncode";/* 人员编码 */
|
|
|
+ public static final String CLERKCODE = "clerkcode";/* 员工号 */
|
|
|
+ public static final String PSNNAME = "psnname";/* 姓名 */
|
|
|
+ public static final String PLSNAME = "plsname";/* 人员类别 */
|
|
|
+ public static final String ORGNAME = "orgname";/* 任职组织 */
|
|
|
+ public static final String DEPTNAME = "deptname";/* 所在部门 */
|
|
|
+ public static final String POSTNAME = "postname";/* 所在岗位 */
|
|
|
+ public static final String CLASSCODE = "classcode";/* 险种编码 */
|
|
|
+ public static final String CLASSNAME = "classname";/* 险种名称 */
|
|
|
+ public static final String CACULATEFLAG = "caculateflag";/* 计算标志 */
|
|
|
+ public static final String CHECKFLAG = "checkflag";/* 审核标志 */
|
|
|
+ public static final String CYEAR = "cyear";/* 年度 */
|
|
|
+ public static final String CPERIOD = "cperiod";/* 期间 */
|
|
|
+ public static final String FINANCEORGNAME = "financeorgname";/* 财务组织 */
|
|
|
+ public static final String FINANCEDEPTNAME = "financedeptname";/* 财务部门 */
|
|
|
+ public static final String LOCATIONNAME = "locationname";/* 缴交地 */
|
|
|
+ public static final String GLBDEF1 = "glbdef1";
|
|
|
+ public static final String GLBDEF2 = "glbdef2";
|
|
|
+ public static final String GLBDEF3 = "glbdef4";
|
|
|
+ public static final String GLBDEF4 = "glbdef4";
|
|
|
+ public static final String GLBDEF5 = "glbdef5";
|
|
|
+ public static final String GLBDEF6 = "glbdef6";
|
|
|
+ public static final String GLBDEF7 = "glbdef7";
|
|
|
+ public static final String GLBDEF8 = "glbdef8";
|
|
|
+ public static final String GLBDEF9 = "glbdef9";
|
|
|
+ public static final String GLBDEF10 = "glbdef10";
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 获取列表模板
|
|
|
+ *
|
|
|
+ * @param context
|
|
|
+ * @param typeCode
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ public static PageTemplet getTableTemplet(BmLoginContext context) {
|
|
|
+ String templetName = ResHelper.getString("60150bmdata",
|
|
|
+ "160150bmdata0001")/* @res "社保缴交" */;
|
|
|
+ String clzName = BmDataVO.class.getName();
|
|
|
+ PageTemplet templet = BmTempletUtils.getDefaultTemplet(TEMPLET_TABLE, templetName, clzName, AREA_HEAD);
|
|
|
+ // 获取信息项
|
|
|
+ BmdataShowInfVO showInfo = queryShowInfo(context);
|
|
|
+ BmBaseDspVO[] dspVo = showInfo.getBmdataDspVOs();
|
|
|
+ List<Item> itemList = getBasicItems();
|
|
|
+ itemList.addAll(getStateItems());
|
|
|
+ List<Item> extList = getExtItems(showInfo.getBmClassItemVOs());
|
|
|
+ if (CollectionUtils.isNotEmpty(extList)) {
|
|
|
+ itemList.addAll(extList);
|
|
|
+ }
|
|
|
+ if (StringUtil.isNotEmpty(context.getPk_bm_class())) {
|
|
|
+ BmTempletUtils.adjustBySetting(itemList, dspVo);
|
|
|
+ } else {
|
|
|
+ BmTempletUtils.adjustBySetting(itemList, concat(queryFixedDsp(), dspVo));
|
|
|
+ }
|
|
|
+ // 创建区域
|
|
|
+ Area area = BmTempletUtils.createTableArea(AREA_HEAD, ResHelper.getString("common", "UC000-0000085"), clzName,
|
|
|
+ 0, itemList);
|
|
|
+ templet.addArea(area);
|
|
|
+ return templet;
|
|
|
+ }
|
|
|
+
|
|
|
+ public static Grid getGridInfo(PageTemplet templet, PageInfo pageInfo, String[] allPKs, SuperVO[] vos) {
|
|
|
+ if (ArrayUtils.isEmpty(vos)) {
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+ BaseDAO dao = new BaseDAO();
|
|
|
+ GridConvertor convertor = new GridConvertor();
|
|
|
+ Grid grid = convertor.toGrid(AREA_HEAD, vos);
|
|
|
+ grid.getModel().setPageinfo(pageInfo);
|
|
|
+ grid.getModel().setAllpks(allPKs);
|
|
|
+ Row[] rs = grid.getModel().getRows();
|
|
|
+ List<Item> itemList = BmTempletUtils.getTempletItems(templet);
|
|
|
+ // 逐行处理返回结果
|
|
|
+ for (int i = 0; i < rs.length; i++) {
|
|
|
+ // 清空原来的row
|
|
|
+ String[] names = rs[i].getCellNames();
|
|
|
+ for (String name : names) {
|
|
|
+ rs[i].removeCell(name);
|
|
|
+ }
|
|
|
+ if (CollectionUtils.isEmpty(itemList)) {
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ // 重新设置单元格
|
|
|
+ for (Item item : itemList) {
|
|
|
+ Cell cell = new Cell();
|
|
|
+ String code = item.getCode();
|
|
|
+ Object value = vos[i].getAttributeValue(code);
|
|
|
+
|
|
|
+ // 自定义字段1 ERP财务组织
|
|
|
+ try {
|
|
|
+ if ("glbdef1".equals(code)) {
|
|
|
+ String glbdef1 = (String) vos[i].getAttributeValue("glbdef1");
|
|
|
+ String glbdef1Name = (String) dao.executeQuery(" SELECT name FROM BD_DEFDOC WHERE PK_DEFDOC = '"+glbdef1+"' ", new ColumnProcessor());
|
|
|
+ cell.setDisplay(glbdef1Name);
|
|
|
+ }
|
|
|
+ // 自定义字段2 ERP财务部门
|
|
|
+ if ("glbdef2".equals(code)) {
|
|
|
+ String glbdef2 = (String) vos[i].getAttributeValue("glbdef2");
|
|
|
+ String glbdef2Name = (String) dao.executeQuery(" SELECT name FROM BD_DEFDOC WHERE PK_DEFDOC = '"+glbdef2+"' ", new ColumnProcessor());
|
|
|
+ cell.setDisplay(glbdef2Name);
|
|
|
+ }
|
|
|
+ } catch (DAOException e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ // 数值型特殊处理
|
|
|
+ if (Integer.valueOf(DataTypeEnum.Number.value()).equals(item.getDatatype())) {
|
|
|
+ if (value instanceof UFDouble) {
|
|
|
+ UFDouble dbValue = (UFDouble) value;
|
|
|
+ value = dbValue.setScale(-item.getScale(), UFDouble.ROUND_HALF_UP);
|
|
|
+ cell.setScale(item.getScale());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ // 布尔型特殊处理
|
|
|
+ if (value instanceof UFBoolean
|
|
|
+ || (Integer.valueOf(DataTypeEnum.Radio.value())).equals(item.getDatatype())) {
|
|
|
+ boolean isTrue = value != null && ((UFBoolean) value).booleanValue();
|
|
|
+ cell.setDisplay(
|
|
|
+ isTrue ? ResHelper.getString("uif2", "AbstractDirectPrintAction-000000")/** @res "是" */
|
|
|
+ : ResHelper.getString("uif2", "AbstractDirectPrintAction-000001")/** @res "否" */
|
|
|
+ );
|
|
|
+ }
|
|
|
+ cell.setValue(value);
|
|
|
+ rs[i].addCell(code, cell);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return grid;
|
|
|
+ }
|
|
|
+
|
|
|
+ public static Form getFormInfo(PageTemplet templet, SuperVO[] vos) {
|
|
|
+ FormConvertor convertor = new FormConvertor();
|
|
|
+ Form form = convertor.toForm(AREA_HEAD, vos[0]);
|
|
|
+ Row[] rs = form.getModel().getRows();
|
|
|
+
|
|
|
+ List<Item> itemList = BmTempletUtils.getTempletItems(templet);
|
|
|
+ // 逐行处理返回结果
|
|
|
+ for (int i = 0; i < rs.length; i++) {
|
|
|
+ // 清空原来的row
|
|
|
+ String[] names = rs[i].getCellNames();
|
|
|
+ for (String name : names) {
|
|
|
+ rs[i].removeCell(name);
|
|
|
+ }
|
|
|
+ if (CollectionUtils.isEmpty(itemList)) {
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ // 重新设置单元格
|
|
|
+ for (Item item : itemList) {
|
|
|
+ Cell cell = new Cell();
|
|
|
+ Object value = vos[i].getAttributeValue(item.getCode());
|
|
|
+ // 数值型特殊处理
|
|
|
+ if (Integer.valueOf(DataTypeEnum.Number.value()).equals(item.getDatatype())) {
|
|
|
+ if (value instanceof UFDouble) {
|
|
|
+ UFDouble dbValue = (UFDouble) value;
|
|
|
+ value = dbValue.setScale(-item.getScale(), UFDouble.ROUND_HALF_UP);
|
|
|
+ cell.setScale(item.getScale());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ // 布尔型特殊处理
|
|
|
+ if (value instanceof UFBoolean
|
|
|
+ || (Integer.valueOf(DataTypeEnum.Radio.value())).equals(item.getDatatype())) {
|
|
|
+ boolean isTrue = value != null && ((UFBoolean) value).booleanValue();
|
|
|
+ cell.setDisplay(
|
|
|
+ isTrue ? ResHelper.getString("uif2", "AbstractDirectPrintAction-000000")/** @res "是" */
|
|
|
+ : ResHelper.getString("uif2", "AbstractDirectPrintAction-000001")/** @res "否" */
|
|
|
+ );
|
|
|
+ }
|
|
|
+ cell.setValue(value);
|
|
|
+ rs[i].addCell(item.getCode(), cell);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return form;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 获卡片模板
|
|
|
+ *
|
|
|
+ * @param context
|
|
|
+ * @param typeCode
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ public static PageTemplet getFormTemplet(BmLoginContext context, String pk_bm_data) {
|
|
|
+ if (StringUtil.isNotEmpty(context.getPk_bm_class())) {
|
|
|
+ String templetName = ResHelper.getString("60150bmdata",
|
|
|
+ "160150bmdata0001")/* @res "社保缴交" */;
|
|
|
+ String clzName = BmDataVO.class.getName();
|
|
|
+ PageTemplet templet = BmTempletUtils.getDefaultTemplet(TEMPLET_FORM, templetName, clzName, AREA_HEAD);
|
|
|
+ // 获取显示配置
|
|
|
+ BmdataShowInfVO showInfo = queryShowInfo(context);
|
|
|
+ // 人员信息
|
|
|
+ List<Item> itemList = getBasicItems();
|
|
|
+ BmTempletUtils.adjustBySetting(itemList, showInfo == null ? null : showInfo.getBmdataDspVOs());
|
|
|
+ Area area = BmTempletUtils.createFormArea(AREA_HEAD, ResHelper.getString("60150bmdata", "060150bmdata0023"),
|
|
|
+ clzName, 0, null, itemList);
|
|
|
+ if (area != null) {
|
|
|
+ templet.addArea(area);
|
|
|
+ }
|
|
|
+ // 状态信息
|
|
|
+ itemList = getStateItems();
|
|
|
+ BmTempletUtils.adjustBySetting(itemList, showInfo == null ? null : showInfo.getBmdataDspVOs());
|
|
|
+ area = BmTempletUtils.createFormArea(AREA_STATE, ResHelper.getString("60150bmdata", "060150bmdata0024"),
|
|
|
+ clzName, 1, AREA_HEAD, itemList);
|
|
|
+ if (area != null) {
|
|
|
+ templet.addArea(area);
|
|
|
+ }
|
|
|
+ // 社保项目
|
|
|
+ itemList = getNewExtItems(pk_bm_data, showInfo == null ? null : showInfo.getBmClassItemVOs());
|
|
|
+ BmTempletUtils.adjustBySetting(itemList, showInfo == null ? null : showInfo.getBmdataDspVOs());
|
|
|
+ area = BmTempletUtils.createFormArea(AREA_ITEM, ResHelper.getString("60150bmdata", "060150bmdata0025"),
|
|
|
+ clzName, 2, AREA_HEAD, itemList);
|
|
|
+ if (area != null) {
|
|
|
+ templet.addArea(area);
|
|
|
+ }
|
|
|
+ return templet;
|
|
|
+ } else {
|
|
|
+ String templetName = ResHelper.getString("60150bmdata",
|
|
|
+ "160150bmdata0001")/* @res "社保缴交" */;
|
|
|
+ String clzName = BmDataVO.class.getName();
|
|
|
+ PageTemplet templet = BmTempletUtils.getDefaultTemplet(TEMPLET_FORM, templetName, clzName, AREA_HEAD);
|
|
|
+ // 获取显示配置
|
|
|
+ BmdataShowInfVO showInfo = queryShowInfo(context);
|
|
|
+ BmBaseDspVO[] dspVo = concat(queryFixedDsp(), showInfo.getBmdataDspVOs());
|
|
|
+ // 人员信息
|
|
|
+ List<Item> itemList = getBasicItems();
|
|
|
+ Area area = BmTempletUtils.createFormArea(AREA_HEAD, ResHelper.getString("60150bmdata", "060150bmdata0023"),
|
|
|
+ clzName, 0, null, itemList);
|
|
|
+ templet.addArea(area);
|
|
|
+ // 状态信息
|
|
|
+ itemList = getStateItems();
|
|
|
+ BmTempletUtils.adjustBySetting(itemList, dspVo);
|
|
|
+ area = BmTempletUtils.createFormArea(AREA_STATE, ResHelper.getString("60150bmdata", "060150bmdata0024"),
|
|
|
+ clzName, 1, AREA_HEAD, itemList);
|
|
|
+ templet.addArea(area);
|
|
|
+ // 社保项目
|
|
|
+ itemList = getNewExtItems(pk_bm_data, showInfo.getBmClassItemVOs());
|
|
|
+ BmTempletUtils.adjustBySetting(itemList, dspVo);
|
|
|
+ area = BmTempletUtils.createFormArea(AREA_ITEM, ResHelper.getString("60150bmdata", "060150bmdata0025"),
|
|
|
+ clzName, 2, AREA_HEAD, itemList);
|
|
|
+ if (area != null) {
|
|
|
+ templet.addArea(area);
|
|
|
+ }
|
|
|
+ return templet;
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 查询显示配置
|
|
|
+ *
|
|
|
+ * @param context
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ private static BmdataShowInfVO queryShowInfo(BmLoginContext context) {
|
|
|
+ BmdataShowInfVO<BmdataDspVO> info = null;
|
|
|
+ try {
|
|
|
+ info = ServiceLocator.find(IBmdataQueryService.class).getBmdataShowInfVO(context);
|
|
|
+ } catch (BusinessException e) {
|
|
|
+ Logger.error(e.getMessage());
|
|
|
+ }
|
|
|
+ return info;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 自定义信息项
|
|
|
+ *
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ private static List<Item> getExtItems(BmClassItemVO[] classItemVOs) {
|
|
|
+ if (ArrayUtils.isEmpty(classItemVOs)) {
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+ List<Item> itemList = new ArrayList<Item>();
|
|
|
+ for (BmClassItemVO classItemVO : classItemVOs) {
|
|
|
+ Item item = BmTempletUtils.convert2Item(classItemVO);
|
|
|
+ if (classItemVO.getIfromflag().equals(BmFromEnumVO.USER_INPUT.value())) {
|
|
|
+ item.setDisabled(Boolean.FALSE);
|
|
|
+ } else {
|
|
|
+ item.setDisabled(Boolean.TRUE);
|
|
|
+ }
|
|
|
+ itemList.add(item);
|
|
|
+ }
|
|
|
+ return itemList;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 自定义信息项
|
|
|
+ *
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ private static List<Item> getNewExtItems(String pk_bm_data, BmClassItemVO[] classItemVOs) {
|
|
|
+ if (ArrayUtils.isEmpty(classItemVOs)) {
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+ List<Item> itemList = new ArrayList<Item>();
|
|
|
+ if ("Disabled".equals(pk_bm_data)) {
|
|
|
+ for (BmClassItemVO classItemVO : classItemVOs) {
|
|
|
+ Item item = BmTempletUtils.convert2Item(classItemVO);
|
|
|
+ if (classItemVO.getIfromflag().equals(BmFromEnumVO.USER_INPUT.value())) {
|
|
|
+ item.setDisabled(Boolean.FALSE);
|
|
|
+ } else {
|
|
|
+ item.setDisabled(Boolean.TRUE);
|
|
|
+ }
|
|
|
+ itemList.add(item);
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ try {
|
|
|
+ String Pk_bm_class = ServiceLocator.find(IBmdataQueryService.class).queryByPk(pk_bm_data)
|
|
|
+ .getPk_bm_class();
|
|
|
+ for (BmClassItemVO classItemVO : classItemVOs) {
|
|
|
+ Item item = BmTempletUtils.convert2Item(classItemVO);
|
|
|
+ if (Pk_bm_class.equals(classItemVO.getPk_bm_class())) {
|
|
|
+ if (classItemVO.getIfromflag().equals(BmFromEnumVO.USER_INPUT.value())) {
|
|
|
+ item.setDisabled(Boolean.FALSE);
|
|
|
+ } else {
|
|
|
+ item.setDisabled(Boolean.TRUE);
|
|
|
+ }
|
|
|
+ itemList.add(item);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ } catch (BusinessException e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return itemList;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 发放状态信息项
|
|
|
+ *
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ private static List<Item> getStateItems() {
|
|
|
+ List<Item> itemList = new ArrayList<Item>();
|
|
|
+ ItemOption[] yesAndNo = BmTempletUtils.getYesNoOptions();
|
|
|
+ Item item = BmTempletUtils.getBaseItem();
|
|
|
+ item.setCode(CLASSCODE);
|
|
|
+ item.setLabel(ResHelper.getString("60150bmdata",
|
|
|
+ "160150bmdata0008")/* @res "险种编码" */);
|
|
|
+ itemList.add(item);
|
|
|
+
|
|
|
+ item = BmTempletUtils.getBaseItem();
|
|
|
+ item = BmTempletUtils.getBaseItem();
|
|
|
+ item.setCode(CLASSNAME);
|
|
|
+ item.setLabel(ResHelper.getString("60150bmdata",
|
|
|
+ "160150bmdata0009")/* @res "险种名称" */);
|
|
|
+ itemList.add(item);
|
|
|
+
|
|
|
+ item = BmTempletUtils.getBaseItem();
|
|
|
+ item.setCode(CACULATEFLAG);
|
|
|
+ item.setItemtype(ComponentType.Radio);
|
|
|
+ item.setDatatype(Integer.valueOf(DataTypeEnum.Radio.value()).intValue());
|
|
|
+ item.setOptions(yesAndNo);
|
|
|
+ item.setLabel(ResHelper.getString("60150bmdata",
|
|
|
+ "060150bmdata0031")/* @res "计算标志" */
|
|
|
+ );
|
|
|
+ itemList.add(item);
|
|
|
+
|
|
|
+ item = BmTempletUtils.getBaseItem();
|
|
|
+ item.setCode(CHECKFLAG);
|
|
|
+ item.setOptions(yesAndNo);
|
|
|
+ item.setItemtype(ComponentType.Radio);
|
|
|
+ item.setDatatype(Integer.valueOf(DataTypeEnum.Radio.value()).intValue());
|
|
|
+ item.setLabel(ResHelper.getString("60150bmdata",
|
|
|
+ "060150bmdata0032")/* @res "审核标志" */
|
|
|
+ );
|
|
|
+ itemList.add(item);
|
|
|
+
|
|
|
+ item = BmTempletUtils.getBaseItem();
|
|
|
+ item.setCode(CYEAR);
|
|
|
+ item.setLabel(ResHelper.getString("60150bmdata",
|
|
|
+ "160150bmdata0012")/* @res "年度" */);
|
|
|
+ itemList.add(item);
|
|
|
+
|
|
|
+ item = BmTempletUtils.getBaseItem();
|
|
|
+ item.setCode(CPERIOD);
|
|
|
+ item.setLabel(ResHelper.getString("60150bmdata",
|
|
|
+ "160150bmdata0013")/* @res "期间" */);
|
|
|
+ itemList.add(item);
|
|
|
+
|
|
|
+// item = BmTempletUtils.getBaseItem();
|
|
|
+// item = BmTempletUtils.getBaseItem();
|
|
|
+// item.setCode(FINANCEORGNAME);
|
|
|
+// item.setLabel(ResHelper.getString("60150bmdata",
|
|
|
+// "160150bmdata0015")/* @res "财务组织" */);
|
|
|
+// itemList.add(item);
|
|
|
+//
|
|
|
+// item = BmTempletUtils.getBaseItem();
|
|
|
+// item.setCode(FINANCEDEPTNAME);
|
|
|
+// item.setLabel(ResHelper.getString("60150bmdata",
|
|
|
+// "160150bmdata0016")/* @res "财务部门" */);
|
|
|
+// itemList.add(item);
|
|
|
+
|
|
|
+ item = BmTempletUtils.getBaseItem();
|
|
|
+ item.setCode(LOCATIONNAME);
|
|
|
+ item.setLabel(ResHelper.getString("60150bmdata",
|
|
|
+ "160150bmdata0017")/* @res "缴交地" */);
|
|
|
+ itemList.add(item);
|
|
|
+
|
|
|
+
|
|
|
+ item = BmTempletUtils.getBaseItem();
|
|
|
+ item.setCode(GLBDEF1);
|
|
|
+ item.setLabel("ERP财务组织"/* @res "任职岗位" */);
|
|
|
+ item.setVisible(true);
|
|
|
+ itemList.add(item);
|
|
|
+ item = BmTempletUtils.getBaseItem();
|
|
|
+ item.setCode(GLBDEF2);
|
|
|
+ item.setLabel("ERP财务部门"/* @res "任职岗位" */);
|
|
|
+ item.setVisible(true);
|
|
|
+ itemList.add(item);
|
|
|
+ return itemList;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 基本信息项
|
|
|
+ *
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+
|
|
|
+ private static List<Item> getBasicItems() {
|
|
|
+ List<Item> itemList = new ArrayList<Item>();
|
|
|
+
|
|
|
+ // 主键
|
|
|
+ Item item = BmTempletUtils.getBaseItem();
|
|
|
+ item.setCode(BmDataVO.PK_BM_DATA);
|
|
|
+ item.setLabel(BmDataVO.PK_BM_DATA);
|
|
|
+ item.setVisible(false);
|
|
|
+ itemList.add(item);
|
|
|
+
|
|
|
+ // 时间戳
|
|
|
+ item = BmTempletUtils.getBaseItem();
|
|
|
+ item.setCode("ts");
|
|
|
+ item.setLabel("ts");
|
|
|
+ item.setVisible(false);
|
|
|
+ itemList.add(item);
|
|
|
+
|
|
|
+ // 显示部分
|
|
|
+ item = BmTempletUtils.getBaseItem();
|
|
|
+ item.setCode(PSNCODE);
|
|
|
+ item.setLabel(
|
|
|
+ ResHelper.getString("common", "UC000-0000147")/* @res "人员编码 */);
|
|
|
+ item.setVisible(true);
|
|
|
+ itemList.add(item);
|
|
|
+
|
|
|
+ item = BmTempletUtils.getBaseItem();
|
|
|
+ item.setCode(CLERKCODE);
|
|
|
+ item.setLabel(ResHelper.getString("60150bmdata",
|
|
|
+ "060150bmdata0026")/* @res "员工号" */);
|
|
|
+ item.setVisible(true);
|
|
|
+ itemList.add(item);
|
|
|
+
|
|
|
+ item = BmTempletUtils.getBaseItem();
|
|
|
+ item.setCode(PSNNAME);
|
|
|
+ item.setLabel(ResHelper.getString("60150bmdata",
|
|
|
+ "160150bmdata0003")/* @res "姓名" */);
|
|
|
+ item.setVisible(true);
|
|
|
+ itemList.add(item);
|
|
|
+
|
|
|
+ item = BmTempletUtils.getBaseItem();
|
|
|
+ item.setCode(PLSNAME);
|
|
|
+ item.setLabel(ResHelper.getString("60150bmdata",
|
|
|
+ "160150bmdata0004")/* @res "人员类别" */);
|
|
|
+ item.setVisible(true);
|
|
|
+ itemList.add(item);
|
|
|
+
|
|
|
+ item = BmTempletUtils.getBaseItem();
|
|
|
+ item.setCode(ORGNAME);
|
|
|
+ item.setLabel(ResHelper.getString("60150bmdata",
|
|
|
+ "160150bmdata0005")/* @res "任职组织" */);
|
|
|
+ item.setVisible(true);
|
|
|
+ itemList.add(item);
|
|
|
+
|
|
|
+ item = BmTempletUtils.getBaseItem();
|
|
|
+ item.setCode(DEPTNAME);
|
|
|
+ item.setLabel(ResHelper.getString("60150bmdata",
|
|
|
+ "160150bmdata0006")/* @res "任职部门" */);
|
|
|
+ item.setVisible(true);
|
|
|
+ itemList.add(item);
|
|
|
+
|
|
|
+ item = BmTempletUtils.getBaseItem();
|
|
|
+ item.setCode(POSTNAME);
|
|
|
+ item.setLabel(ResHelper.getString("60150bmdata",
|
|
|
+ "160150bmdata0007")/* @res "任职岗位" */);
|
|
|
+ item.setVisible(true);
|
|
|
+ itemList.add(item);
|
|
|
+
|
|
|
+
|
|
|
+ return itemList;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 缴交项目处理
|
|
|
+ *
|
|
|
+ * @param dataVOs
|
|
|
+ * @param updateRows
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ public static BmDataVO[] appValueHashMapDispose(BmDataVO[] dataVOs, JSONArray updateRows) {
|
|
|
+ if (null != dataVOs && dataVOs.length > 0) {
|
|
|
+ for (int j = dataVOs.length, i = 0; i < j; i++) {
|
|
|
+ HashMap<String, Object> appValueHashMap = new HashMap<>();
|
|
|
+ JSONObject values = updateRows.getJSONObject(i).getJSONObject("values");
|
|
|
+ for (String key : values.keySet()) {
|
|
|
+ if (isAppendAttribute(key)) {
|
|
|
+ appValueHashMap.put(key, values.getJSONObject(key).get("value"));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ dataVOs[i].appValueHashMap = appValueHashMap;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return dataVOs;
|
|
|
+ }
|
|
|
+
|
|
|
+ public static boolean isAppendAttribute(String attributeName) {
|
|
|
+ Pattern pattern = Pattern.compile("f_\\d+");// 数值型
|
|
|
+ Matcher matcher = pattern.matcher(attributeName);
|
|
|
+ if (matcher.find()) {
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+ pattern = Pattern.compile("c_\\d+");// 字符型
|
|
|
+ matcher = pattern.matcher(attributeName);
|
|
|
+ if (matcher.find()) {
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+ pattern = Pattern.compile("d_\\d+");// 日期型
|
|
|
+ matcher = pattern.matcher(attributeName);
|
|
|
+ if (matcher.find()) {
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+
|
|
|
+ public static HRAggVO querySortItem(BmLoginContext context) throws BusinessException {
|
|
|
+ HRAggVO aggVO = new HRAggVO();
|
|
|
+
|
|
|
+ SortVO sortVOs[] = null;
|
|
|
+ SortconVO sortconVOs[] = null;
|
|
|
+ String strCondition = " func_code='60150bmdata'" + " and group_code='TableCode' and ((pk_corp='"
|
|
|
+ + context.getPk_group() + "' and pk_user='" + context.getPk_loginUser()
|
|
|
+ + "') or pk_corp ='@@@@') order by pk_corp";
|
|
|
+
|
|
|
+ sortVOs = (SortVO[]) PersitenceDelegator.retrieveByClause(SortVO.class, strCondition);
|
|
|
+
|
|
|
+ if (sortVOs != null && sortVOs.length > 0) {
|
|
|
+ strCondition = "pk_hr_sort='" + sortVOs[0].getPrimaryKey() + "' order by field_seq ";
|
|
|
+
|
|
|
+ sortconVOs = (SortconVO[]) PersitenceDelegator.retrieveByClause(SortconVO.class, strCondition);
|
|
|
+
|
|
|
+ aggVO.setParentVO(sortVOs[0]);
|
|
|
+ aggVO.setChildrenVO(sortconVOs);
|
|
|
+ }
|
|
|
+ return aggVO;
|
|
|
+ }
|
|
|
+
|
|
|
+ public static BmLoginVO getBmLoginVO(BmLoginContext context) throws BusinessException {
|
|
|
+ BmLoginVO bmLoginVO = context.getBmLoginVO();
|
|
|
+ if (StringUtil.isNotBlank(context.getPk_bm_class())) {
|
|
|
+ try {
|
|
|
+ bmLoginVO = (BmLoginVO) ServiceLocator.find(IPersistenceRetrieve.class).retrieveByPk(null,
|
|
|
+ BmLoginVO.class, context.getPk_bm_class());
|
|
|
+ } catch (BusinessException e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ if (bmLoginVO == null) {
|
|
|
+ bmLoginVO = new BmLoginVO();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ bmLoginVO.setPk_org(context.getPk_org());
|
|
|
+ BmPeriodstateVO periodStateVO = bmLoginVO.getPeriodVO();
|
|
|
+ if (periodStateVO == null) {
|
|
|
+ periodStateVO = new BmPeriodstateVO();
|
|
|
+ }
|
|
|
+
|
|
|
+ bmLoginVO.setPk_bm_class(context.getPk_bm_class());
|
|
|
+ periodStateVO.setPk_bm_class(context.getPk_bm_class());
|
|
|
+ String period = context.getCyear() + context.getCperiod();
|
|
|
+ YearPeriodSeperatorVO seperatorVO = new YearPeriodSeperatorVO(period);
|
|
|
+ if (context.getPk_bm_class() == null) {
|
|
|
+ periodStateVO.setPk_periodstate(null);
|
|
|
+ }
|
|
|
+ periodStateVO.setYear(seperatorVO.getYear());
|
|
|
+ periodStateVO.setPeriod(seperatorVO.getPeriod());
|
|
|
+
|
|
|
+ bmLoginVO.setPeriodVO(periodStateVO);
|
|
|
+ if (StringUtil.isNotBlank(context.getPk_bm_class())) {
|
|
|
+ bmLoginVO = ServiceLocator.find(IBmPub.class).getBmclassVOWithState(bmLoginVO);
|
|
|
+ }
|
|
|
+ return bmLoginVO;
|
|
|
+ }
|
|
|
+
|
|
|
+ protected static Map<String, String> initShowNameMap() {
|
|
|
+ Map<String, String> nameMap = new HashMap<String, String>();
|
|
|
+ nameMap.put(PSNCODE, ResHelper.getString("commonres",
|
|
|
+ "UC000-0000147")/* @res "人员编码 */);
|
|
|
+ nameMap.put(CLERKCODE, ResHelper.getString("60150bmdata",
|
|
|
+ "160150bmdata0002")/* @res "员工号" */);
|
|
|
+ nameMap.put(PSNNAME, ResHelper.getString("60150bmdata",
|
|
|
+ "160150bmdata0003")/* @res "姓名" */);
|
|
|
+ nameMap.put(PLSNAME, ResHelper.getString("60150bmdata",
|
|
|
+ "160150bmdata0004")/* @res "人员类别" */);
|
|
|
+ nameMap.put(ORGNAME, ResHelper.getString("60150bmdata",
|
|
|
+ "160150bmdata0005")/* @res "任职组织" */);
|
|
|
+ nameMap.put(DEPTNAME, ResHelper.getString("60150bmdata",
|
|
|
+ "160150bmdata0006")/* @res "所在部门" */);
|
|
|
+ nameMap.put(POSTNAME, ResHelper.getString("60150bmdata",
|
|
|
+ "160150bmdata0007")/* @res "所在岗位" */);
|
|
|
+ nameMap.put(CLASSCODE, ResHelper.getString("60150bmdata",
|
|
|
+ "160150bmdata0008")/* @res "险种编码" */);
|
|
|
+ nameMap.put(CLASSNAME, ResHelper.getString("60150bmdata",
|
|
|
+ "160150bmdata0009")/* @res "险种名称" */);
|
|
|
+ nameMap.put(CACULATEFLAG, ResHelper.getString("60150bmdata",
|
|
|
+ "160150bmdata0010")/* @res "计算标志" */);
|
|
|
+ nameMap.put(CHECKFLAG, ResHelper.getString("60150bmdata",
|
|
|
+ "160150bmdata0011")/* @res "审核标志" */);
|
|
|
+ nameMap.put(CYEAR, ResHelper.getString("60150bmdata",
|
|
|
+ "160150bmdata0012")/* @res "年度" */);
|
|
|
+ nameMap.put(CPERIOD, ResHelper.getString("60150bmdata",
|
|
|
+ "160150bmdata0013")/* @res "期间" */);
|
|
|
+// nameMap.put(FINANCEORGNAME, ResHelper.getString("60150bmdata",
|
|
|
+// "160150bmdata0015")/* @res "财务组织" */);
|
|
|
+// nameMap.put(FINANCEDEPTNAME, ResHelper.getString("60150bmdata",
|
|
|
+// "160150bmdata0016")/* @res "财务部门" */);
|
|
|
+ nameMap.put(LOCATIONNAME, ResHelper.getString("60150bmdata",
|
|
|
+ "160150bmdata0017")/* @res "缴交地" */);
|
|
|
+ // 这里加了 显示设置改了都没用 一定显示
|
|
|
+// nameMap.put(GLBDEF1, "ERP财务组织");
|
|
|
+// nameMap.put(GLBDEF2, "ERP财务部门");
|
|
|
+ return nameMap;
|
|
|
+ }
|
|
|
+
|
|
|
+ public static BmdataDspVO[] queryFixedDsp() {
|
|
|
+ // 界面上显示的名称
|
|
|
+ BmdataDspVO[] dspList = new BmdataDspVO[defaultFixedColKey.length];
|
|
|
+ Map<String, String> showNameMap = initShowNameMap();
|
|
|
+ for (int i = 0; i < defaultFixedColKey.length; i++) {
|
|
|
+ BmdataDspVO vo = new BmdataDspVO();
|
|
|
+ vo.setItem_key(defaultFixedColKey[i]);
|
|
|
+ vo.setItemName(showNameMap.get(defaultFixedColKey[i]));
|
|
|
+ vo.setBshow(UFBoolean.TRUE);
|
|
|
+ vo.setIsBmItem(UFBoolean.FALSE);
|
|
|
+ dspList[i] = vo;
|
|
|
+ }
|
|
|
+ return dspList;
|
|
|
+ }
|
|
|
+
|
|
|
+ // 薪资档案默认显示的字段及顺序
|
|
|
+ // 20150804 xiejie3 补丁合并,NCdp205399130社保缴交节点,有任职组织,人员类别,岗位等字段无法控制是否显示,begin
|
|
|
+ // zhoumxc
|
|
|
+ // 20150923 xiejie3 当按照人员显示的时候,需要有使得下面的几个为固定列,进行单元格合并。begin
|
|
|
+ public final static String[] defaultFixedColKey = new String[]{
|
|
|
+
|
|
|
+ PSNCODE/* 人员编码 */, CLERKCODE/* 员工号 */, PSNNAME/* 姓名 */, PLSNAME/* 人员类别 */, ORGNAME/* 任职组织 */,
|
|
|
+ DEPTNAME/* 所在部门 */, POSTNAME/* 所在岗位 */,
|
|
|
+// FINANCEORGNAME/* 财务组织 */, FINANCEDEPTNAME/* 财务部门 */,
|
|
|
+// GLBDEF1,GLBDEF2 // ERP财务组织 ERP财务部门 //这个加了 加固定显示了 显示设置那里配置没用了
|
|
|
+ };
|
|
|
+
|
|
|
+ public static <T> T[] concat(T[] a, T[] b) {
|
|
|
+ List<T> list = new ArrayList<T>(Arrays.asList(a));
|
|
|
+ if (ArrayUtils.isNotEmpty(b)) {
|
|
|
+ list.addAll(new ArrayList<T>(Arrays.asList(b)));
|
|
|
+ }
|
|
|
+ return list.toArray(a);
|
|
|
+
|
|
|
+ }
|
|
|
+}
|