ClassitemImpl.java 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286
  1. package nc.impl.wa.rpt;
  2. import java.sql.ResultSet;
  3. import java.sql.SQLException;
  4. import java.util.List;
  5. import java.util.Vector;
  6. import nc.bs.dao.BaseDAO;
  7. import nc.hr.utils.SQLHelper;
  8. import nc.itf.hr.wa.IClassitemQry;
  9. import nc.itf.org.IOrgConst;
  10. import nc.jdbc.framework.processor.BeanListProcessor;
  11. import nc.jdbc.framework.processor.ResultSetProcessor;
  12. import nc.vo.hr.pub.FormatVO;
  13. import nc.vo.pub.BusinessException;
  14. import nc.vo.wa.item.WaItemVO;
  15. import nc.vo.wa.paydata.WaPaydataDspVO;
  16. import nc.wa.smartmodel.provider.util.WaGlobalVO;
  17. import nccloud.commons.lang.StringUtils;
  18. /**
  19. * 薪资项目 查询 实现类
  20. *
  21. * @author suihang
  22. * @version 最后修改日期 2011-1-4
  23. * @see
  24. * @since
  25. */
  26. public class ClassitemImpl implements IClassitemQry{
  27. private final BaseDAO dao = new BaseDAO();
  28. /**
  29. * 根据单条薪资类别参数查询薪资项目
  30. * @param waGlobalVO 薪资类别参数
  31. * @return ItemVO[] 薪资项目
  32. * @throws BusinessException
  33. */
  34. public WaItemVO[] queryItemInfoWithPower(WaGlobalVO waGlobalVO,int type) throws BusinessException{
  35. if(waGlobalVO==null){
  36. //当薪资类别参数为空时,不进行查询。即默认薪资项目集合也为空。
  37. return null;
  38. }
  39. StringBuffer sqlB = new StringBuffer();
  40. sqlB.append(" select distinct wa_item.pk_wa_item, ");
  41. sqlB.append(" "+ SQLHelper.getMultiLangNameColumn("wa_classitem.name")+ " , ");
  42. sqlB.append(" wa_item.code, ");
  43. sqlB.append(" wa_item.itemkey, ");
  44. sqlB.append(" wa_classitemdsp.displayseq, ");
  45. sqlB.append(" wa_classitem.idisplayseq ");
  46. sqlB.append(" from wa_classitem ");
  47. sqlB.append(" left outer join wa_classitemdsp ");
  48. sqlB.append(" on wa_classitem.pk_wa_class = wa_classitemdsp.pk_wa_class ");
  49. sqlB.append(" and wa_classitem.cyear = wa_classitemdsp.cyear ");
  50. sqlB.append(" and wa_classitem.cperiod = wa_classitemdsp.cperiod ");
  51. sqlB.append(" and wa_classitem.pk_wa_classitem = wa_classitemdsp.pk_wa_classitem ");
  52. sqlB.append(" and wa_classitemdsp.pk_user = '" + waGlobalVO.getCurUserid() + "' ,");
  53. sqlB.append(" wa_item ");
  54. sqlB.append(" where wa_classitem.pk_wa_item = wa_item.pk_wa_item");
  55. sqlB.append(" and wa_classitem.pk_wa_class = '" + waGlobalVO.getWaClassPK() + "' ");
  56. sqlB.append(" and wa_classitem.cyear = '" + waGlobalVO.getWaYear() + "' ");
  57. sqlB.append(" and wa_classitem.cperiod = '" + waGlobalVO.getWaPeriod() + "' ");
  58. sqlB.append(" and wa_item.pk_wa_item in (");
  59. // 根据薪资期间、薪资类别、所选组织以及登录人权限筛选
  60. sqlB.append(getItemPkSqlByUseridClassid( new WaGlobalVO[] { waGlobalVO }));
  61. sqlB.append(" )");
  62. if(type==0){
  63. sqlB.append(" and wa_item.iitemtype = 0 ");
  64. }
  65. // 与薪资发放项目顺序保持一致20200225
  66. //sqlB.append(" order by wa_classitemdsp.displayseq asc");
  67. sqlB.append(" order by wa_classitem.idisplayseq ");
  68. return (WaItemVO[]) dao.executeQuery(sqlB.toString(), new ResultSetProcessor() {
  69. private static final long serialVersionUID = 3623741235217336426L;
  70. /**
  71. * 封装结果集,返回WaItemVO[]形式结果
  72. */
  73. public Object handleResultSet(ResultSet rs) throws SQLException {
  74. Vector<WaItemVO> vector = new Vector<WaItemVO>();
  75. while (rs.next()) {
  76. WaItemVO itemVO = new WaItemVO();
  77. itemVO.setPk_wa_item(rs.getString(1));
  78. itemVO.setName(rs.getString(2));
  79. itemVO.setCode(rs.getString(3));
  80. itemVO.setItemkey(rs.getString(4));
  81. vector.add(itemVO);
  82. }
  83. return vector.size() > 0 ? vector.toArray(new WaItemVO[vector.size()]) : null;
  84. }
  85. });
  86. }
  87. @Override
  88. public WaItemVO[] queryItemInfoWithCondition(WaGlobalVO waGlobalVO,String condition)
  89. throws BusinessException {
  90. if(waGlobalVO==null){
  91. //当薪资类别参数为空时,不进行查询。即默认薪资项目集合也为空。
  92. return null;
  93. }
  94. StringBuffer sqlB = new StringBuffer();
  95. sqlB.append(" select distinct wa_item.pk_wa_item, ");
  96. sqlB.append(" "+ SQLHelper.getMultiLangNameColumn("wa_classitem.name")+ " , ");
  97. sqlB.append(" wa_item.code, ");
  98. sqlB.append(" wa_item.itemkey, ");
  99. sqlB.append(" wa_item.idisplayseq ");
  100. sqlB.append(" from wa_classitem ,wa_item");
  101. sqlB.append(" where wa_classitem.pk_wa_item = wa_item.pk_wa_item");
  102. sqlB.append(" and wa_classitem.pk_wa_class = '" + waGlobalVO.getWaClassPK() + "' ");
  103. sqlB.append(" and wa_classitem.cyear = '" + waGlobalVO.getWaYear() + "' ");
  104. sqlB.append(" and wa_classitem.cperiod = '" + waGlobalVO.getWaPeriod() + "' ");
  105. if(!StringUtils.isEmpty(condition)){
  106. sqlB.append(" and wa_item."+condition);
  107. }
  108. sqlB.append(" order by wa_item.idisplayseq ,code");
  109. return (WaItemVO[]) dao.executeQuery(sqlB.toString(), new ResultSetProcessor() {
  110. private static final long serialVersionUID = 3623741235217336426L;
  111. /**
  112. * 封装结果集,返回WaItemVO[]形式结果
  113. */
  114. public Object handleResultSet(ResultSet rs) throws SQLException {
  115. Vector<WaItemVO> vector = new Vector<WaItemVO>();
  116. while (rs.next()) {
  117. WaItemVO itemVO = new WaItemVO();
  118. itemVO.setPk_wa_item(rs.getString(1));
  119. itemVO.setName(rs.getString(2));
  120. itemVO.setCode(rs.getString(3));
  121. itemVO.setItemkey(rs.getString(4));
  122. vector.add(itemVO);
  123. }
  124. return vector.size() > 0 ? vector.toArray(new WaItemVO[vector.size()]) : null;
  125. }
  126. });
  127. }
  128. @Override
  129. public WaItemVO[] queryItemInfoWithClass(WaGlobalVO waGlobalVO,int type)
  130. throws BusinessException {
  131. if(waGlobalVO==null){
  132. //当薪资类别参数为空时,不进行查询。即默认薪资项目集合也为空。
  133. return null;
  134. }
  135. StringBuffer sqlB = new StringBuffer();
  136. sqlB.append(" select distinct wa_item.pk_wa_item, ");
  137. sqlB.append(" "+ SQLHelper.getMultiLangNameColumn("wa_item.name")+ " , ");
  138. sqlB.append(" wa_item.code, ");
  139. sqlB.append(" wa_item.itemkey, ");
  140. sqlB.append(" wa_item.idisplayseq ");
  141. sqlB.append(" from wa_classitem ,wa_item");
  142. sqlB.append(" where wa_classitem.pk_wa_item = wa_item.pk_wa_item");
  143. sqlB.append(" and wa_classitem.pk_wa_class = '" + waGlobalVO.getWaClassPK() + "' ");
  144. sqlB.append(" and wa_classitem.cyear = '" + waGlobalVO.getWaYear() + "' ");
  145. if(type==0){
  146. sqlB.append(" and wa_item.iitemtype = 0 ");
  147. }
  148. sqlB.append(" order by wa_item.idisplayseq asc");
  149. return (WaItemVO[]) dao.executeQuery(sqlB.toString(), new ResultSetProcessor() {
  150. private static final long serialVersionUID = 3623741235217336426L;
  151. /**
  152. * 封装结果集,返回WaItemVO[]形式结果
  153. */
  154. public Object handleResultSet(ResultSet rs) throws SQLException {
  155. Vector<WaItemVO> vector = new Vector<WaItemVO>();
  156. while (rs.next()) {
  157. WaItemVO itemVO = new WaItemVO();
  158. itemVO.setPk_wa_item(rs.getString(1));
  159. itemVO.setName(rs.getString(2));
  160. itemVO.setCode(rs.getString(3));
  161. itemVO.setItemkey(rs.getString(4));
  162. vector.add(itemVO);
  163. }
  164. return vector.size() > 0 ? vector.toArray(new WaItemVO[vector.size()]) : null;
  165. }
  166. });
  167. }
  168. /**
  169. * 根据多条薪资类别参数查询薪资项目
  170. * @param waGlobalVOs 薪资类别参数
  171. * @return ItemVO[] 薪资项目
  172. * @throws BusinessException
  173. */
  174. public WaItemVO[] queryItemInfoWithPowerForMutiClasses(WaGlobalVO[] waGlobalVOs,int type) throws BusinessException{
  175. if(waGlobalVOs==null){
  176. return null;
  177. }
  178. WaGlobalVO waGlobalVO = waGlobalVOs[0];
  179. StringBuffer sqlB = new StringBuffer();
  180. sqlB.append(" select distinct wa_item.pk_wa_item, ");
  181. sqlB.append(" "+ SQLHelper.getMultiLangNameColumn("wa_item.name")+ " , ");
  182. sqlB.append(" wa_item.code, ");
  183. sqlB.append(" wa_item.itemkey ");
  184. sqlB.append(" from wa_item where ");
  185. if (waGlobalVO.getWaClassPK() == null) {
  186. //没有薪资类别 就显示所选组织的所有薪资项目
  187. sqlB.append(" (wa_item.pk_org= '"+waGlobalVO.getCurPk_org()+"' or wa_item.pk_org='"+waGlobalVO.getCurPk_group()+"' or wa_item.pk_org='"+IOrgConst.GLOBEORGTYPE+"' ) " );
  188. }else{
  189. //如果有薪资类别,根据薪资期间、薪资类别、所选组织以及登录人权限筛选
  190. sqlB.append(" wa_item.pk_wa_item in (");
  191. sqlB.append(getItemPkSqlByUseridClassid(waGlobalVOs));
  192. sqlB.append(" )");
  193. }
  194. if(type==0){
  195. sqlB.append(" and wa_item.iitemtype = 0 ");
  196. }
  197. return (WaItemVO[]) dao.executeQuery(sqlB.toString(), new ResultSetProcessor() {
  198. private static final long serialVersionUID = 3623741235217336426L;
  199. /**
  200. * 封装结果集,返回WaItemVO[]形式结果
  201. */
  202. public Object handleResultSet(ResultSet rs) throws SQLException {
  203. Vector<WaItemVO> vector = new Vector<WaItemVO>();
  204. while (rs.next()) {
  205. WaItemVO itemVO = new WaItemVO();
  206. itemVO.setPk_wa_item(rs.getString(1));
  207. itemVO.setName(rs.getString(2));
  208. itemVO.setCode(rs.getString(3));
  209. itemVO.setItemkey(rs.getString(4));
  210. vector.add(itemVO);
  211. }
  212. return vector.size() > 0 ? vector.toArray(new WaItemVO[vector.size()]) : null;
  213. }
  214. });
  215. }
  216. /**
  217. * 根据薪资期间和薪资类别找出登录人的项目权限 suihang 2010-12-23
  218. *
  219. * @param waGlobalVOs
  220. * @return
  221. */
  222. private String getItemPkSqlByUseridClassid(WaGlobalVO[] waGlobalVOs) {
  223. String userid = waGlobalVOs[0].getCurUserid();
  224. String pk_org = waGlobalVOs[0].getCurPk_org();
  225. String cyear = waGlobalVOs[0].getWaYear();
  226. String cperiod = waGlobalVOs[0].getWaPeriod();
  227. StringBuffer sqlB = new StringBuffer();
  228. sqlB.append(" select wa_item.pk_wa_item ");
  229. sqlB.append(" from wa_item ");
  230. sqlB.append(" where wa_item.pk_wa_item in ");
  231. /**
  232. * 关联wa_itempower表(即与登录人员角色关联)
  233. */
  234. sqlB.append(" ( select distinct wa_itempower.pk_wa_item from wa_itempower ,wa_classitem where wa_itempower.pk_wa_item = wa_classitem.pk_wa_item ");
  235. sqlB.append(" and ( wa_itempower.pk_subject in ( select pk_role from sm_user_role where cuserid = '"+userid+"' ) or pk_subject = '"+userid+"' )");
  236. sqlB.append(" and wa_classitem.pk_org = '"+pk_org+"' ");
  237. sqlB.append(" and wa_classitem.pk_wa_class in (" + FormatVO.formatArrayToString(waGlobalVOs, WaGlobalVO.WACLASSPK) + ") ");
  238. sqlB.append(" and wa_classitem.cyear = '" + cyear + "' ");
  239. sqlB.append(" and wa_classitem.cperiod = '" + cperiod + "' )");
  240. /*sqlB.append(" ( select distinct wa_classitem.pk_wa_item from wa_classitem where wa_item.pk_wa_item = wa_classitem.pk_wa_item ");
  241. sqlB.append(" and wa_classitem.pk_wa_class in (" + FormatVO.formatArrayToString(waGlobalVOs, WaGlobalVO.WACLASSPK) + ") ");
  242. sqlB.append(" and wa_classitem.pk_org = '"+pk_org+"' ");
  243. sqlB.append(" and wa_classitem.cyear = '" + cyear + "' ");
  244. sqlB.append(" and wa_classitem.cperiod = '" + cperiod + "' )");*/
  245. return sqlB.toString();
  246. }
  247. /**
  248. * 根据方案主键查询薪资发放设置为通用项目的数据
  249. * @param pk_wa_class
  250. * @return
  251. * @throws BusinessException
  252. */
  253. @Override
  254. public List<WaPaydataDspVO> queryWaPaydataDspVOByPkWaClass(String pk_wa_class) throws BusinessException {
  255. String sql = "select * from wa_paydatadsp where type = 0 and pk_wa_class = '"+pk_wa_class+"' and bshow = 'Y' and iswaitem = 'Y' order by displayseq";
  256. List<WaPaydataDspVO> list = (List<WaPaydataDspVO>) dao.executeQuery(sql, new BeanListProcessor(WaPaydataDspVO.class));
  257. return list;
  258. }
  259. }