Quellcode durchsuchen

薪资发放说明BUG处理

xuan_glb vor 4 Jahren
Ursprung
Commit
f7396daa27

+ 39 - 37
hrwa/nccloud/src/client/nccloud/web/hrwa/pubinfo/wadataexplain/action/HrwaClassitemdevFilter.java

@@ -1,37 +1,39 @@
-package nccloud.web.hrwa.pubinfo.wadataexplain.action;
-
-import nc.vo.pubapp.pattern.pub.PubAppTool;
-import nccloud.framework.web.processor.IRefSqlBuilder;
-import nccloud.framework.web.processor.refgrid.RefQueryInfo;
-import nccloud.framework.web.ui.meta.RefMeta;
-import nccloud.framework.web.container.SessionContext;
-import nccloud.pubitf.platform.db.SqlParameterCollection;
-
-public class HrwaClassitemdevFilter implements IRefSqlBuilder {
-
-	@Override
-	public String getExtraSql(RefQueryInfo para, RefMeta meta) {
-		// TODO Auto-generated method stub
-	
-		String pk_wa_class = null==para.getQueryCondition().get("pk_wa_class")?null:para.getQueryCondition().get("pk_wa_class").toString();
-		String cuser =  SessionContext.getInstance().getClientInfo().getUserid();
-		return  "and wa_classitem.pk_wa_item in( " +
-				"   SELECT pk_wa_item FROM  wa_itempower where editflag = 'Y' "
-				+ "and pk_wa_class = '"+pk_wa_class+"' and pk_subject = '"+cuser+"')";
-
-
-	}
-
-	@Override
-	public SqlParameterCollection getExtraSqlParameter(RefQueryInfo para, RefMeta meta) {
-		// TODO Auto-generated method stub
-		return null;
-	}
-
-	@Override
-	public String getOrderSql(RefQueryInfo para, RefMeta meta) {
-		// TODO Auto-generated method stub
-		return null;
-	}
-
-}
+package nccloud.web.hrwa.pubinfo.wadataexplain.action;
+
+import nc.vo.pubapp.pattern.pub.PubAppTool;
+import nccloud.framework.web.processor.IRefSqlBuilder;
+import nccloud.framework.web.processor.refgrid.RefQueryInfo;
+import nccloud.framework.web.ui.meta.RefMeta;
+import nccloud.framework.web.container.SessionContext;
+import nccloud.pubitf.platform.db.SqlParameterCollection;
+
+public class HrwaClassitemdevFilter implements IRefSqlBuilder {
+
+	@Override
+	public String getExtraSql(RefQueryInfo para, RefMeta meta) {
+		// TODO Auto-generated method stub
+	
+		String pk_wa_class = null==para.getQueryCondition().get("pk_wa_class")?null:para.getQueryCondition().get("pk_wa_class").toString();
+		String cuser =  SessionContext.getInstance().getClientInfo().getUserid();
+		return "  wa_classitem.pk_wa_item in( " 
+				+ "   SELECT pk_wa_item FROM  wa_itempower where editflag = 'Y' "
+				+ "and pk_wa_class = '" + pk_wa_class + "' "		
+						+ "and ( pk_subject = '" + cuser + "'"
+			    +" or pk_subject in ( SELECT sur.pk_role FROM sm_user_role sur where sur.cuserid = '"
+				+ cuser + "')))";
+
+	}
+
+	@Override
+	public SqlParameterCollection getExtraSqlParameter(RefQueryInfo para, RefMeta meta) {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
+	@Override
+	public String getOrderSql(RefQueryInfo para, RefMeta meta) {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
+}

+ 243 - 241
hrwa/nccloud/src/client/nccloud/web/hrwa/pubinfo/wadataexplain/action/WadataexplainCopyLastPeriod.java

@@ -1,241 +1,243 @@
-package nccloud.web.hrwa.pubinfo.wadataexplain.action;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-import nc.itf.uap.IUAPQueryBS;
-import nc.jdbc.framework.processor.MapListProcessor;
-import nc.vo.hrwa.wadataexplain.Wadataexplain;
-import nc.vo.pub.BusinessException;
-import nc.vo.pub.VOStatus;
-import nc.vo.pub.lang.UFBoolean;
-import nc.vo.pub.lang.UFDateTime;
-import nc.vo.pubapp.pattern.exception.ExceptionUtils;
-import nc.vo.pubapp.pattern.pub.PubAppTool;
-import nccloud.commons.collections.CollectionUtils;
-import nccloud.framework.core.json.IJson;
-import nccloud.framework.service.ServiceLocator;
-import nccloud.framework.web.container.ClientInfo;
-import nccloud.framework.web.container.IRequest;
-import nccloud.framework.web.container.SessionContext;
-import nccloud.framework.web.convert.translate.Translator;
-import nccloud.framework.web.json.JsonFactory;
-import nccloud.framework.web.ui.pattern.grid.Grid;
-import nccloud.framework.web.ui.pattern.grid.GridFormulaHandler;
-import nccloud.web.action.NCCAction;
-import nccloud.web.utils.GridModelConvertUtils;
-
-/**复制上一期间*/
-public class WadataexplainCopyLastPeriod extends NCCAction {
-
-
-	@Override
-	public <T> Object execute(IRequest request, T para) throws Exception {
-		IJson json = JsonFactory.create();
-	    String read = request.read();
-	    String areacode = "head";
-	    Map<String,Object> map = json.fromJson(read, Map.class);
-	    Map<String,Object> newmap = json.fromJson(map.get("model").toString(), Map.class);
-	    if(null==newmap.get("reqpara"))
-	    	ExceptionUtils.wrappBusinessException("参数reqpara不能为空,请检查");
-	    if(null!=newmap.get("areacode"))
-	    	areacode=newmap.get("areacode").toString();
-	    Map<String,Object> reqpara = json.fromJson(newmap.get("reqpara").toString(), Map.class);
-	    
-	    //获取上一期间
-	    List<Wadataexplain> result  = getLastperiodDatas(reqpara);
-
-		
-	    
-		Grid grid = (Grid) para;
-		
-		GridModelConvertUtils gridConvUtl = new GridModelConvertUtils();
-
-		if(CollectionUtils.isNotEmpty(result)) {
-			
-			grid = gridConvUtl.toGridOpe(WadataexplainConsts.pagecode, result.stream().toArray(Wadataexplain[]::new));
-		}
-		
-		grid.getModel().setAreacode(areacode);
-		// 处理显示公式
-		GridFormulaHandler gridFormulaHandler = new GridFormulaHandler(grid);
-		gridFormulaHandler.handleLoadFormula();
-		// 翻译器,将主键翻译成名称
-		Translator translator = new Translator();
-		translator.translate(grid);
-		return grid;
-	}
-
-	
-	/**
-	 * 获取上一期间数据
-	 * @param reqpara
-	 * @throws BusinessException 
-	 */
-	private List<Wadataexplain> getLastperiodDatas(Map<String, Object> reqpara) throws BusinessException {
-		// TODO Auto-generated method stub
-	    String pk_org = reqpara.get("pk_org").toString();
-	    String pk_wa_class = reqpara.get("pk_wa_class").toString();
-	    String cyearperiod = reqpara.get("cyearperiod").toString();
-	    String copyear = cyearperiod.substring(0,4);//年
-		String copperiod = cyearperiod.substring(4,6);//月
-	    
-	    String beforeyear = copyear;  
-		String beformonth =  copperiod;
-		
-		if("01".equals(copperiod)){
-			beformonth = "12";
-			beforeyear= String.valueOf(Integer.parseInt(copyear)-1);
-		}else if("12".equals(copperiod) || "11".equals(copperiod)){
-			beformonth = String.valueOf(Integer.parseInt(copperiod)-1);
-		}else{
-			beformonth = "0"+String.valueOf(Integer.parseInt(copperiod)-1);
-		}
-	    
-		// 校验用户信息
-		ClientInfo clientInfo = SessionContext.getInstance().getClientInfo();
-		String userid = clientInfo.getUserid();
-		
-		
-		StringBuffer selectSql = new StringBuffer();//上一期间薪资发放说明的所有数据
-		selectSql.append("pk_wa_class = '");
-		selectSql.append(pk_wa_class);
-		selectSql.append("' and def1 = '");
-		selectSql.append(beforeyear+beformonth);
-		selectSql.append("' and nvl(dr,0)=0 ");
-		
-		StringBuffer thiswadataSql = new StringBuffer();//本期间薪资方案的所有数据,即所有的人员
-		thiswadataSql.append(" select wa_data.pk_psndoc, wa_data.pk_wa_data");
-		thiswadataSql.append(" from wa_data");
-		//thiswadataSql.append(" inner join bd_psndoc on wa_data.psnid = bd_psndoc.pk_psndoc");
-		thiswadataSql.append(" where wa_data.pk_wa_class = '");
-		thiswadataSql.append(pk_wa_class);
-		thiswadataSql.append("' and wa_data.cyearperiod = '");
-		thiswadataSql.append(copyear+copperiod);
-		thiswadataSql.append("' and wa_data.stopflag = 'N'");
-		List<Map<String, String>> thiswadataList = (List<Map<String, String>>)ServiceLocator.find(IUAPQueryBS.class).executeQuery(thiswadataSql.toString(), new MapListProcessor());
-		Map<String,String> thiswadataMap = new HashMap<String,String>();//本期间薪资方案的人员编码-薪资方案PK
-		if(thiswadataList!=null && thiswadataList.size()>0){
-			for(int i=0;i<thiswadataList.size();i++){
-				String pk_psndoc = thiswadataList.get(i).get("pk_psndoc");
-				String pk_wa_data = thiswadataList.get(i).get("pk_wa_data");
-				thiswadataMap.put(pk_psndoc, pk_wa_data);
-			}
-		}else{
-			ExceptionUtils.wrappBusinessException("本期间薪资方案没有数据,请检查");
-		}
-		
-		//获取对照关系 
-		String sql = 
-			"select wa_classitem.pk_wa_classitem,wa_item.pk_wa_item\n" +
-			"  from wa_classitem\n" + 
-			" inner join wa_item\n" + 
-			"    on wa_classitem.pk_wa_item = wa_item.pk_wa_item\n" + 
-			"    where nvl(wa_classitem.dr,0)=0\n" + 
-			"    and nvl(wa_item.dr,0)=0\n" + 
-			"    and wa_classitem.pk_org = '"+pk_org+"'\n" + 
-			"    and wa_classitem.cyear='"+beforeyear+"'\n" + 
-			"    and wa_classitem.cperiod='"+beformonth+"'\n" + 
-			"    and wa_classitem.pk_wa_class='"+pk_wa_class+"'\n" + 
-			" order by wa_item.code";
-
-		List<Map<String, String>> thiswadataitemList = (List<Map<String, String>>)ServiceLocator.find(IUAPQueryBS.class).executeQuery(sql.toString(), new MapListProcessor());
-		Map<String,String> lastwadataitemMap = new HashMap<String,String>();
-		if(thiswadataitemList!=null && thiswadataitemList.size()>0){
-			for(int i=0;i<thiswadataitemList.size();i++){
-				String pk_wa_classitem = thiswadataitemList.get(i).get("pk_wa_classitem");
-				String pk_wa_item = thiswadataitemList.get(i).get("pk_wa_item");
-				lastwadataitemMap.put(pk_wa_classitem, pk_wa_item);
-			}
-		}else{
-			ExceptionUtils.wrappBusinessException("上一期间没有设置薪资项目,请检查");
-		}
-		
-		
-		
-		
-
-		String powersql = "select wa_itempower.pk_itempower,\n" 
-		        + "       wa_classitem.pk_wa_class,\n"
-				+ "       wa_classitem.pk_wa_item,\n" 
-		        + "       wa_classitem.name name,\n"
-				+ "       wa_classitem.pk_wa_classitem,\n" 
-		        + "       wa_itempower.editflag,\n"
-				+ "       wa_itempower.moduleflag,\n" 
-		        + "       wa_classitem.pk_org,\n"
-				+ "       wa_classitem.pk_group,\n" 
-		        + "       wa_itempower.ts,\n" 
-				+ "       wa_classitem.ifromflag,\n"
-				+ "       wa_itempower.subject_type,\n" 
-				+ "       wa_itempower.pk_subject\n" 
-				+ "   from wa_classitem\n"
-				+ "   inner join wa_waclass\n" 
-				+ "   on wa_waclass.pk_org = wa_classitem.pk_org\n"
-				+ "   and wa_waclass.pk_wa_class = wa_classitem.pk_wa_class\n"
-				+ "   and wa_waclass.cyear = wa_classitem.cyear\n"
-				+ "   and wa_waclass.cperiod = wa_classitem.cperiod\n" 
-				+ "   inner join wa_item\n"
-				+ "   on wa_classitem.pk_wa_item = wa_item.pk_wa_item\n" 
-				+ "   left outer join wa_itempower\n"
-				+ "   on wa_itempower.pk_wa_item = wa_classitem.pk_wa_item\n"
-				+ "   and wa_itempower.pk_wa_class = wa_classitem.pk_wa_class\n"
-				+ "   and wa_itempower.pk_org = wa_classitem.pk_org\n" 
-				+ "   and wa_itempower.pk_subject = '"+userid+"'\n" 
-				+ "   where wa_waclass.pk_org = '"+pk_org+"' \n"
-				+ "   and wa_waclass.pk_wa_class = '"+pk_wa_class+"'\n" 
-				+ "   and wa_item.mid = 'N'\n"
-				+ "   and wa_itempower.editflag ='Y'";
-
-		List<Map<String, Object>> thisclassitemList = (List<Map<String, Object>>)ServiceLocator.find(IUAPQueryBS.class).executeQuery(powersql, new MapListProcessor());
-		Map<String,String> thisclassitemMap = new HashMap<String,String>();//本期间薪资方案的人员编码-薪资方案PK
-		if(thisclassitemList!=null && thisclassitemList.size()>0){
-			for(int i=0;i<thisclassitemList.size();i++){
-				Object pk_wa_classitem = thisclassitemList.get(i).get("pk_wa_classitem");
-				Object vname = thisclassitemList.get(i).get("name");
-				Object iitemid =  thisclassitemList.get(i).get("pk_wa_item");
-				thisclassitemMap.put(String.valueOf(iitemid), String.valueOf(pk_wa_classitem));
-			}
-		}else{
-			ExceptionUtils.wrappBusinessException("本期间没有可用的薪资发放项目或该操作人员无可用项目权限,请检查"); 
-		}
-		
-		List<Wadataexplain> vos = (List<Wadataexplain>) ServiceLocator.find(IUAPQueryBS.class).retrieveByClause(Wadataexplain.class, selectSql.toString());
-		List<Wadataexplain> volist = new ArrayList<Wadataexplain>();		
-		if(CollectionUtils.isNotEmpty(vos)) {
-			
-			vos.forEach(vo->{
-				String pk_psndoc = vo.getPk_psndoc();
-				String pk_wa_classitem = vo.getPk_wa_classitem();
-				String itemid = lastwadataitemMap.get(pk_wa_classitem);//先根据对照,把itemid拿出来 
-				String thiswaitem = thisclassitemMap.get(itemid);//根据itemid拿出最新的waitem
-				if(thiswadataMap.containsKey(pk_psndoc)&&!PubAppTool.isNull(thiswaitem)) {
-					vo.setCreationtime(new UFDateTime());
-					vo.setCreator(userid);
-					vo.setCyear(copyear);
-					vo.setCperiod(copperiod);
-					vo.setDef1(copyear+copperiod);
-					vo.setStatus(VOStatus.NEW);
-					vo.setPk_wa_data_explain(null);
-					vo.setPk_wa_classitem(thiswaitem);
-					vo.setIscommit(UFBoolean.FALSE);
-					vo.setIsquote(UFBoolean.FALSE);
-					vo.setModifiedtime(null);
-					vo.setModifier(null);
-					volist.add(vo);
-				}
-				
-			});
-		}
-		
-		return volist;
-	}
-
-	@Override
-	protected Class getParaClass() {
-		return Grid.class;
-	}
-	
-	
-}
+package nccloud.web.hrwa.pubinfo.wadataexplain.action;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import nc.itf.uap.IUAPQueryBS;
+import nc.jdbc.framework.processor.MapListProcessor;
+import nc.vo.hrwa.wadataexplain.Wadataexplain;
+import nc.vo.pub.BusinessException;
+import nc.vo.pub.VOStatus;
+import nc.vo.pub.lang.UFBoolean;
+import nc.vo.pub.lang.UFDateTime;
+import nc.vo.pubapp.pattern.exception.ExceptionUtils;
+import nc.vo.pubapp.pattern.pub.PubAppTool;
+import nccloud.commons.collections.CollectionUtils;
+import nccloud.framework.core.json.IJson;
+import nccloud.framework.service.ServiceLocator;
+import nccloud.framework.web.container.ClientInfo;
+import nccloud.framework.web.container.IRequest;
+import nccloud.framework.web.container.SessionContext;
+import nccloud.framework.web.convert.translate.Translator;
+import nccloud.framework.web.json.JsonFactory;
+import nccloud.framework.web.ui.pattern.grid.Grid;
+import nccloud.framework.web.ui.pattern.grid.GridFormulaHandler;
+import nccloud.web.action.NCCAction;
+import nccloud.web.utils.GridModelConvertUtils;
+
+/**复制上一期间*/
+public class WadataexplainCopyLastPeriod extends NCCAction {
+
+
+	@Override
+	public <T> Object execute(IRequest request, T para) throws Exception {
+		IJson json = JsonFactory.create();
+	    String read = request.read();
+	    String areacode = "head";
+	    Map<String,Object> map = json.fromJson(read, Map.class);
+	    Map<String,Object> newmap = json.fromJson(map.get("model").toString(), Map.class);
+	    if(null==newmap.get("reqpara"))
+	    	ExceptionUtils.wrappBusinessException("参数reqpara不能为空,请检查");
+	    if(null!=newmap.get("areacode"))
+	    	areacode=newmap.get("areacode").toString();
+	    Map<String,Object> reqpara = json.fromJson(newmap.get("reqpara").toString(), Map.class);
+	    
+	    //获取上一期间
+	    List<Wadataexplain> result  = getLastperiodDatas(reqpara);
+
+		
+	    
+		Grid grid = (Grid) para;
+		
+		GridModelConvertUtils gridConvUtl = new GridModelConvertUtils();
+
+		if(CollectionUtils.isNotEmpty(result)) {
+			
+			grid = gridConvUtl.toGridOpe(WadataexplainConsts.pagecode, result.stream().toArray(Wadataexplain[]::new));
+		}
+		
+		grid.getModel().setAreacode(areacode);
+		// 处理显示公式
+		GridFormulaHandler gridFormulaHandler = new GridFormulaHandler(grid);
+		gridFormulaHandler.handleLoadFormula();
+		// 翻译器,将主键翻译成名称
+		Translator translator = new Translator();
+		translator.translate(grid);
+		return grid;
+	}
+
+	
+	/**
+	 * 获取上一期间数据
+	 * @param reqpara
+	 * @throws BusinessException 
+	 */
+	private List<Wadataexplain> getLastperiodDatas(Map<String, Object> reqpara) throws BusinessException {
+		// TODO Auto-generated method stub
+	    String pk_org = reqpara.get("pk_org").toString();
+	    String pk_wa_class = reqpara.get("pk_wa_class").toString();
+	    String cyearperiod = reqpara.get("cyearperiod").toString();
+	    String copyear = cyearperiod.substring(0,4);//年
+		String copperiod = cyearperiod.substring(4,6);//月
+	    
+	    String beforeyear = copyear;  
+		String beformonth =  copperiod;
+		
+		if("01".equals(copperiod)){
+			beformonth = "12";
+			beforeyear= String.valueOf(Integer.parseInt(copyear)-1);
+		}else if("12".equals(copperiod) || "11".equals(copperiod)){
+			beformonth = String.valueOf(Integer.parseInt(copperiod)-1);
+		}else{
+			beformonth = "0"+String.valueOf(Integer.parseInt(copperiod)-1);
+		}
+	    
+		// 校验用户信息
+		ClientInfo clientInfo = SessionContext.getInstance().getClientInfo();
+		String userid = clientInfo.getUserid();
+		
+		
+		StringBuffer selectSql = new StringBuffer();//上一期间薪资发放说明的所有数据
+		selectSql.append("pk_wa_class = '");
+		selectSql.append(pk_wa_class);
+		selectSql.append("' and def1 = '");
+		selectSql.append(beforeyear+beformonth);
+		selectSql.append("' and nvl(dr,0)=0 ");
+		
+		StringBuffer thiswadataSql = new StringBuffer();//本期间薪资方案的所有数据,即所有的人员
+		thiswadataSql.append(" select wa_data.pk_psndoc, wa_data.pk_wa_data");
+		thiswadataSql.append(" from wa_data");
+		//thiswadataSql.append(" inner join bd_psndoc on wa_data.psnid = bd_psndoc.pk_psndoc");
+		thiswadataSql.append(" where wa_data.pk_wa_class = '");
+		thiswadataSql.append(pk_wa_class);
+		thiswadataSql.append("' and wa_data.cyearperiod = '");
+		thiswadataSql.append(copyear+copperiod);
+		thiswadataSql.append("' and wa_data.stopflag = 'N'");
+		List<Map<String, String>> thiswadataList = (List<Map<String, String>>)ServiceLocator.find(IUAPQueryBS.class).executeQuery(thiswadataSql.toString(), new MapListProcessor());
+		Map<String,String> thiswadataMap = new HashMap<String,String>();//本期间薪资方案的人员编码-薪资方案PK
+		if(thiswadataList!=null && thiswadataList.size()>0){
+			for(int i=0;i<thiswadataList.size();i++){
+				String pk_psndoc = thiswadataList.get(i).get("pk_psndoc");
+				String pk_wa_data = thiswadataList.get(i).get("pk_wa_data");
+				thiswadataMap.put(pk_psndoc, pk_wa_data);
+			}
+		}else{
+			ExceptionUtils.wrappBusinessException("本期间薪资方案没有数据,请检查");
+		}
+		
+		//获取对照关系 
+		String sql = 
+			"select wa_classitem.pk_wa_classitem,wa_item.pk_wa_item\n" +
+			"  from wa_classitem\n" + 
+			" inner join wa_item\n" + 
+			"    on wa_classitem.pk_wa_item = wa_item.pk_wa_item\n" + 
+			"    where nvl(wa_classitem.dr,0)=0\n" + 
+			"    and nvl(wa_item.dr,0)=0\n" + 
+			"    and wa_classitem.pk_org = '"+pk_org+"'\n" + 
+			"    and wa_classitem.cyear='"+beforeyear+"'\n" + 
+			"    and wa_classitem.cperiod='"+beformonth+"'\n" + 
+			"    and wa_classitem.pk_wa_class='"+pk_wa_class+"'\n" + 
+			" order by wa_item.code";
+
+		List<Map<String, String>> thiswadataitemList = (List<Map<String, String>>)ServiceLocator.find(IUAPQueryBS.class).executeQuery(sql.toString(), new MapListProcessor());
+		Map<String,String> lastwadataitemMap = new HashMap<String,String>();
+		if(thiswadataitemList!=null && thiswadataitemList.size()>0){
+			for(int i=0;i<thiswadataitemList.size();i++){
+				String pk_wa_classitem = thiswadataitemList.get(i).get("pk_wa_classitem");
+				String pk_wa_item = thiswadataitemList.get(i).get("pk_wa_item");
+				lastwadataitemMap.put(pk_wa_classitem, pk_wa_item);
+			}
+		}else{
+			ExceptionUtils.wrappBusinessException("上一期间没有设置薪资项目,请检查");
+		}
+		
+		
+		
+		
+		//String cuser =  SessionContext.getInstance().getClientInfo().getUserid();
+		String powersql = "select wa_itempower.pk_itempower,\n" 
+		        + "       wa_classitem.pk_wa_class,\n"
+				+ "       wa_classitem.pk_wa_item,\n" 
+		        + "       wa_classitem.name name,\n"
+				+ "       wa_classitem.pk_wa_classitem,\n" 
+		        + "       wa_itempower.editflag,\n"
+				+ "       wa_itempower.moduleflag,\n" 
+		        + "       wa_classitem.pk_org,\n"
+				+ "       wa_classitem.pk_group,\n" 
+		        + "       wa_itempower.ts,\n" 
+				+ "       wa_classitem.ifromflag,\n"
+				+ "       wa_itempower.subject_type,\n" 
+				+ "       wa_itempower.pk_subject\n" 
+				+ "   from wa_classitem\n"
+				+ "   inner join wa_waclass\n" 
+				+ "   on wa_waclass.pk_org = wa_classitem.pk_org\n"
+				+ "   and wa_waclass.pk_wa_class = wa_classitem.pk_wa_class\n"
+				+ "   and wa_waclass.cyear = wa_classitem.cyear\n"
+				+ "   and wa_waclass.cperiod = wa_classitem.cperiod\n" 
+				+ "   inner join wa_item\n"
+				+ "   on wa_classitem.pk_wa_item = wa_item.pk_wa_item\n" 
+				+ "   left outer join wa_itempower\n"
+				+ "   on wa_itempower.pk_wa_item = wa_classitem.pk_wa_item\n"
+				+ "   and wa_itempower.pk_wa_class = wa_classitem.pk_wa_class\n"
+				+ "   and wa_itempower.pk_org = wa_classitem.pk_org\n" 
+				+ "   and wa_itempower.pk_subject = '"+ userid + "'"
+			    +" or pk_subject in ( SELECT sur.pk_role FROM sm_user_role sur where sur.cuserid = '"
+				+ userid +"')\n" 
+				+ "   where wa_waclass.pk_org = '"+pk_org+"' \n"
+				+ "   and wa_waclass.pk_wa_class = '"+pk_wa_class+"'\n" 
+				+ "   and wa_item.mid = 'N'\n"
+				+ "   and wa_itempower.editflag ='Y'";
+
+		List<Map<String, Object>> thisclassitemList = (List<Map<String, Object>>)ServiceLocator.find(IUAPQueryBS.class).executeQuery(powersql, new MapListProcessor());
+		Map<String,String> thisclassitemMap = new HashMap<String,String>();//本期间薪资方案的人员编码-薪资方案PK
+		if(thisclassitemList!=null && thisclassitemList.size()>0){
+			for(int i=0;i<thisclassitemList.size();i++){
+				Object pk_wa_classitem = thisclassitemList.get(i).get("pk_wa_classitem");
+				Object vname = thisclassitemList.get(i).get("name");
+				Object iitemid =  thisclassitemList.get(i).get("pk_wa_item");
+				thisclassitemMap.put(String.valueOf(iitemid), String.valueOf(pk_wa_classitem));
+			}
+		}else{
+			ExceptionUtils.wrappBusinessException("本期间没有可用的薪资发放项目或该操作人员无可用项目权限,请检查"); 
+		}
+		
+		List<Wadataexplain> vos = (List<Wadataexplain>) ServiceLocator.find(IUAPQueryBS.class).retrieveByClause(Wadataexplain.class, selectSql.toString());
+		List<Wadataexplain> volist = new ArrayList<Wadataexplain>();		
+		if(CollectionUtils.isNotEmpty(vos)) {
+			
+			vos.forEach(vo->{
+				String pk_psndoc = vo.getPk_psndoc();
+				String pk_wa_classitem = vo.getPk_wa_classitem();
+				String itemid = lastwadataitemMap.get(pk_wa_classitem);//先根据对照,把itemid拿出来 
+				String thiswaitem = thisclassitemMap.get(itemid);//根据itemid拿出最新的waitem
+				if(thiswadataMap.containsKey(pk_psndoc)&&!PubAppTool.isNull(thiswaitem)) {
+					vo.setCreationtime(new UFDateTime());
+					vo.setCreator(userid);
+					vo.setCyear(copyear);
+					vo.setCperiod(copperiod);
+					vo.setDef1(copyear+copperiod);
+					vo.setStatus(VOStatus.NEW);
+					vo.setPk_wa_data_explain(null);
+					vo.setPk_wa_classitem(thiswaitem);
+					vo.setIscommit(UFBoolean.FALSE);
+					vo.setIsquote(UFBoolean.FALSE);
+					vo.setModifiedtime(null);
+					vo.setModifier(null);
+					volist.add(vo);
+				}
+				
+			});
+		}
+		
+		return volist;
+	}
+
+	@Override
+	protected Class getParaClass() {
+		return Grid.class;
+	}
+	
+	
+}

+ 222 - 2
hrwa/nccloud/src/client/nccloud/web/hrwa/pubinfo/wadataexplain/action/WadataexplainSaveAction.java

@@ -2,7 +2,18 @@ package nccloud.web.hrwa.pubinfo.wadataexplain.action;
 
 import nccloud.itf.bd.wadataexplain.IWadataexplainService;
 import nc.vo.hrwa.wadataexplain.Wadataexplain;
+import nc.vo.pubapp.pattern.exception.ExceptionUtils;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import nc.bs.logging.Logger;
+import nc.itf.uap.IUAPQueryBS;
+import nc.jdbc.framework.processor.MapListProcessor;
 import nc.vo.bd.meta.BatchOperateVO;
+import nccloud.commons.collections.CollectionUtils;
 import nccloud.framework.service.ServiceLocator;
 import nccloud.framework.web.container.IRequest;
 import nccloud.framework.web.convert.translate.Translator;
@@ -28,13 +39,222 @@ public class WadataexplainSaveAction extends NCCAction {
 		Wadataexplain[] vos = gridConvUtl.toVOs(Wadataexplain.class, grid.getModel());
 		BatchVOTool<Wadataexplain> tool = new BatchVOTool<Wadataexplain>(Wadataexplain.class);
 		BatchOperateVO batchVO = tool.getBatchOperateVO(vos);
+		
+		//add by longht 校验当前保存vo的期间是否可以保存 start
+		StringBuffer pk_wa_class_buf = new StringBuffer();
+		StringBuffer cyearperiodbuff = new StringBuffer();
+		StringBuffer pk_databuf = new StringBuffer();
+		
+		
+		List<String> cyplist = new ArrayList<String>();
+		List<String> waclasslist = new ArrayList<String>();
+		List<String> pk_datalist = new ArrayList<String>();
+		
+		StringBuffer pk_psndoc_buf = new StringBuffer();
+		StringBuffer cyp1buf = new StringBuffer();
+		StringBuffer pk_cybuf = new StringBuffer();
+		StringBuffer drbuf = new StringBuffer();
+		StringBuffer pwitembuf = new StringBuffer();
+		List<String> cyp1list = new ArrayList<String>();
+		List<String> pk_psndoclist = new ArrayList<String>();
+		List<String> pkcylist = new ArrayList<String>();
+		List<String> drlist = new ArrayList<String>();
+		List<String> pwitemlist = new ArrayList<String>();
+		//List<String> pnlist = new ArrayList<String>();
+		
+		Wadataexplain[] addvos = (Wadataexplain[]) batchVO.getAddObjs();
+		Wadataexplain[] upvos = (Wadataexplain[]) batchVO.getUpdObjs();
+		List<Wadataexplain> batchvos = new ArrayList<Wadataexplain>();
+	
+		//判断是否是新增或修改过
+		if(addvos!=null||upvos!=null) {
+			
+			if(addvos!=null) {
+				
+			 for(Wadataexplain vo : addvos) {
+				 //String pk_psndoc =vo.getPk_psndoc() ;
+				// String cyp1 = vo.getDef1();
+				 String pk_cp1 = vo.getPk_psndoc()+vo.getDef1()+vo.getPk_wa_classitem();
+				
+			if(!pkcylist.contains(pk_cp1)) {
+				 
+				//if(!pkcylist.contains(pk_psndoc))
+				//	pk_psndoc_buf.append("'").append(pk_psndoc).append("',");
+				//if(!pkcylist.contains(cyp1))
+				//	cyp1buf.append("'").append(cyp1).append("',");	
+				
+				pk_cybuf.append("'").append(pk_cp1).append("',");
+				
+				pkcylist.add(pk_cp1);
+				batchvos.add(vo);
+			}else {
+				
+			String sql = "select name as "+"姓名"+" from bd_psndoc where pk_psndoc = "+"'"+vo.getPk_psndoc()+"'";
+						
+				List<Map<String, String>> thiswadataitemList = (List<Map<String, String>>)ServiceLocator.find(IUAPQueryBS.class).executeQuery(sql.toString(), new MapListProcessor());
+				ExceptionUtils.wrappBusinessException("新增的数据有重复人员:"+thiswadataitemList);
+			}		 
+		}
+			 
+
+//		StringBuffer psnbyf = new StringBuffer;
+//		List<String> pnlist = new ArrayList<String>();
+//		for(Wadataexplain vo : addvos) {
+//		String pk_cp1 = vo.getPk_psndoc()+vo.getDef1()+vo.getPk_wa_classitem();
+//		pkcylist.add(pk_cp1);
+//			}
+			
+//			for(Wadataexplain vo : addvos) {
+//				String pk_pn = vo.getPk_psndoc();
+//				if(!pnlist.contains(pk_pn))
+//				psnbyf.append("'").append(pk_pn).append("',");
+//				pnlist.add(pk_pn);
+//				
+//					}
+			
+//	for(Wadataexplain vo : addvos) {
+//			for(int i=0;i<pkcylist.size();i++){
+//				for(int j=i+1;j<pkcylist.size();j++){
+//						if(pkcylist.get(i).equals(pkcylist.get(j))){
+//
+//
+//						StringBuffer sqlBufall = new StringBuffer();
+//						sqlBufall.append("select name as ");
+//						sqlBufall.append("姓名");
+//						sqlBufall.append(" from bd_psndoc where pk_psndoc in ( ");
+//						
+//						sqlBufall.append(psnbyf.substring(0, cyearperiodbuff.length()-1));
+//						
+//						sqlBufall.append(" ) ");
+//
+//														
+//						List<Map<String, String>> thiswadataitemList = (List<Map<String, String>>)ServiceLocator.find(IUAPQueryBS.class).executeQuery(sqlBufall.toString(), new MapListProcessor());
+//						
+//						ExceptionUtils.wrappBusinessException("新增的数据有重复人员:"+thiswadataitemList);
+//							
+//					}else{
+//						batchvos.add(vo);
+//						}
+//										
+//					}
+//				}
+//				batchvos.add(vo);
+//			}			 
+	
+				
+	
+				
+			 		
+}
+			
+			if(upvos!=null) {
+				for(Wadataexplain vo : upvos) {
+				    String pk_wadata =	vo.getPk_wa_data_explain();
+					if(!pk_datalist.contains(pk_wadata))
+						pk_databuf.append("'").append(pk_wadata).append("',");
+					pk_datalist.add(pk_wadata);
+					
+					batchvos.add(vo);
+				
+					}
+				}
+		
+		
+		for (Wadataexplain vo : batchvos) {
+			String pk_wa_class = vo.getPk_wa_class();
+			String cyp = vo.getDef1();
+			
+			if(!waclasslist.contains(pk_wa_class))
+				pk_wa_class_buf.append("'").append(pk_wa_class).append("',");
+			if(!cyplist.contains(cyp))
+				cyearperiodbuff.append("'").append(cyp).append("',");
+			
+			cyplist.add(cyp);
+			waclasslist.add(pk_wa_class);
+		}
+		
+		//当前会计期间已经 全部审批,不允许保存
+		StringBuffer dataBufall = new StringBuffer();
+		dataBufall.append(" select pk_wa_data from wa_data");
+		dataBufall.append(" where checkflag = 'N'");
+		dataBufall.append(" and pk_wa_class in ( ");
+		dataBufall.append(pk_wa_class_buf.substring(0, pk_wa_class_buf.length()-1));
+		dataBufall.append(" )");
+		dataBufall.append(" and cyearperiod in ( ");
+		dataBufall.append(cyearperiodbuff.substring(0, cyearperiodbuff.length()-1));
+		dataBufall.append(" )");
+		dataBufall.append(" and nvl(dr,0)=0");
+		
+		List<Map<String, Object>> alldatalist = (List<Map<String, Object>>)ServiceLocator.find(IUAPQueryBS.class).executeQuery(dataBufall.toString(), new MapListProcessor());
+		if(CollectionUtils.isEmpty(alldatalist))
+			ExceptionUtils.wrappBusinessException("薪资发放节点数据已全部审核,不允许保存");
+		
+
+	
+		
+		for (Wadataexplain vo : batchvos) {
+			String pk_psndoc = vo.getPk_psndoc();
+			String cyp1 = vo.getDef1();
+			String dr = vo.getDr().toString();
+			String pk_wa_classitem = vo.getPk_wa_classitem();
+		if(!pk_psndoclist.contains(pk_psndoc)) {
+			pk_psndoc_buf.append("'").append(pk_psndoc).append("',");
+			pk_psndoclist.add(pk_psndoc);
+		}
+		if(!cyp1list.contains(cyp1)) {
+			cyp1buf.append("'").append(cyp1).append("',");
+			cyp1list.add(cyp1);
+		}
+		
+			if(!drlist.contains(dr)) {
+				drbuf.append("'").append(dr).append("',");
+				drlist.add(dr);
+			}
+			
+			if(!pwitemlist.contains(pk_wa_classitem)) {
+				pwitembuf.append("'").append(pk_wa_classitem).append("',");
+				pwitemlist.add(pk_wa_classitem);
+			}
+		}
+		//过滤同一期间条件
+		StringBuffer Bufall = new StringBuffer();
+		Bufall.append(" select pk_psndoc,def1,dr,pk_wa_data_explain from wa_data_explain where pk_psndoc in(");
+		Bufall.append(pk_psndoc_buf.substring(0, pk_psndoc_buf.length()-1));
+		Bufall.append(" ) ");
+		Bufall.append(" and def1 in (");
+		Bufall.append(cyp1buf.substring(0, cyp1buf.length()-1));
+		Bufall.append(" ) ");
+		
+		Bufall.append(" and dr in (");
+		Bufall.append(drbuf.substring(0, drbuf.length()-1));
+		Bufall.append(" ) ");
+		
+		Bufall.append(" and pk_wa_classitem in (");
+		Bufall.append(pwitembuf.substring(0, pwitembuf.length()-1));
+		Bufall.append(" ) ");
+		
+		if( null!=batchVO.getUpdObjs()) {
+			
+			Bufall.append(" and pk_wa_data_explain not in (");
+			Bufall.append(pk_databuf.substring(0, pk_databuf.length()-1));
+			Bufall.append("  )");
+			
+		}
+		List<Map<String, Object>> bill = (List<Map<String, Object>>)ServiceLocator.find(IUAPQueryBS.class).executeQuery(Bufall.toString(), new MapListProcessor());
+		if(!CollectionUtils.isEmpty(bill))
+			ExceptionUtils.wrappBusinessException("同一期间人员重复");
+		}
+		
+		//add by longht 校验当前保存vo的期间是否可以保存 end 
 		BatchOperateVO savedBatchVO = ServiceLocator.find(IWadataexplainService.class).batchSaveCurrtype(batchVO);
 		Wadataexplain[] saveVOs = tool.getVOsByBatchVO(savedBatchVO);
 		if (saveVOs != null && saveVOs.length > 0) {
 			grid = gridConvUtl.toGridOpe(WadataexplainConsts.pagecode, saveVOs);
-			// GridOperator gridOperator = new GridOperator(WadataexplainConsts.pagecode);
-			// grid = gridOperator.toGrid(saveVOs);
+			 //GridOperator gridOperator = new GridOperator(WadataexplainConsts.pagecode);
+			 //grid = gridOperator.toGrid(saveVOs);
+			
 		}
+		
 		// 处理显示公式
 		GridFormulaHandler gridFormulaHandler = new GridFormulaHandler(grid);
 		gridFormulaHandler.handleLoadFormula();

Datei-Diff unterdrückt, da er zu groß ist
+ 2562 - 0
hrwa/src/private/nc/impl/wa/end/MonthEndDAO.java


+ 83 - 0
hrwa/src/private/nc/impl/wa/end/MonthEndManageServiceImpl.java

@@ -0,0 +1,83 @@
+package nc.impl.wa.end;
+
+import nc.itf.hr.wa.IMonthEndManageService;
+import nc.itf.hr.wa.IMonthEndQueryService;
+import nc.vo.pub.BusinessException;
+import nc.vo.uif2.LoginContext;
+import nc.vo.wa.end.WaClassEndVO;
+import nc.vo.wa.pub.PeriodStateVO;
+import nc.vo.wa.unitclass.UnitClassVO;
+
+/**
+ * @author zhangg
+ *
+ */
+public class MonthEndManageServiceImpl implements IMonthEndManageService, IMonthEndQueryService {
+
+	private MonthEndDAO dao;
+
+	private MonthEndDAO getMonthEndDAO(){
+		if(dao==null){
+			dao = new MonthEndDAO();
+		}
+		return dao;
+	}
+
+
+
+	@Override
+	public WaClassEndVO[] getWaClassVOs(LoginContext context, String actionType) throws BusinessException {
+		return getMonthEndDAO().getWaClassVOs(context, actionType);
+	}
+
+
+
+	@Override
+	public WaClassEndVO[] getClassItem2Class(LoginContext context, WaClassEndVO[] selectClassEndVOs) throws BusinessException {
+
+		return getMonthEndDAO().getClassItem2Class(context, selectClassEndVOs);
+	}
+
+
+/**
+ *
+ * @author zhangg on 2009-12-16
+ * @see nc.itf.hr.wa.IMonthEndManageService#doEndProcess(nc.vo.uif2.LoginContext, nc.vo.wa.end.WaClassEndVO[], java.lang.String)
+ */
+	@Override
+	public void doEndProcess(LoginContext context, WaClassEndVO[] classVOs, String actionType) throws BusinessException {
+
+        
+		getMonthEndDAO().multMonthEnd(classVOs, actionType);
+
+	}
+	
+	@Override
+	public UnitClassVO[] queryAllUnitClassVOs() throws BusinessException {
+		return getMonthEndDAO().queryAllUnitClassVOs();
+	}
+	
+	@Override
+	public String[] isHaveUnAccountUnitChildClass(String sql) throws BusinessException {
+		return getMonthEndDAO().isHaveUnAccountUnitChildClass(sql);
+	}
+
+
+
+	@Override
+	public void createNextPeriodAmoScheme(WaClassEndVO waClassEndVO,
+			PeriodStateVO nextPeriodStateVO) throws BusinessException {
+		getMonthEndDAO().createNextPeriodAmoScheme(waClassEndVO, nextPeriodStateVO);
+		
+	}
+
+
+
+	@Override
+	public void createNextDataIO(WaClassEndVO waClassEndVO,
+			PeriodStateVO nextPeriodStateVO) throws BusinessException {
+		getMonthEndDAO().createNextDataIO(waClassEndVO, nextPeriodStateVO);
+		
+	}
+
+}

+ 222 - 222
hrwa/src/private/nccloud/impl/bd/wadataexplain/WadataexplainServiceImpl.java

@@ -1,222 +1,222 @@
-package nccloud.impl.bd.wadataexplain;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-import nc.bs.bd.baseservice.md.BatchBaseService;
-import nc.bs.dao.BaseDAO;
-import nc.bs.framework.common.NCLocator;
-import nc.bs.logging.Logger;
-import nc.jdbc.framework.processor.BeanListProcessor;
-import nc.jdbc.framework.processor.ColumnListProcessor;
-import nc.jdbc.framework.processor.MapListProcessor;
-import nc.md.persist.framework.IMDPersistenceQueryService;
-import nc.vo.bd.meta.BatchOperateVO;
-import nc.vo.hrwa.wadataexplain.Wadataexplain;
-import nc.vo.pub.BusinessException;
-import nc.vo.pubapp.pattern.exception.ExceptionUtils;
-import nccloud.commons.collections.CollectionUtils;
-import nccloud.itf.bd.wadataexplain.IWadataexplainQryService;
-import nccloud.itf.bd.wadataexplain.IWadataexplainService;
-
-
-public class WadataexplainServiceImpl extends BatchBaseService<Wadataexplain>
-		implements IWadataexplainService, IWadataexplainQryService {
-
-	private IMDPersistenceQueryService queryService = null;
-
-	public WadataexplainServiceImpl() {
-		super("cfcfc751-a268-4c9e-b7a0-f38533e78990");
-	}
-
-	@Override
-	public BatchOperateVO batchSaveCurrtype(BatchOperateVO vo) throws BusinessException {
-		return batchSave(vo);
-	}
-
-	@Override
-	public Wadataexplain findByPK(String key) throws BusinessException {
-		Wadataexplain wadataexplain = null;
-		try {
-			Object vo = new BaseDAO().retrieveByPK(Wadataexplain.class, key);
-			wadataexplain = (vo == null ? null : (Wadataexplain) vo);
-		} catch (Exception e) {
-			Logger.error(e.getMessage(), e);
-			throw new BusinessException(e);
-		}
-
-		return wadataexplain;
-	}
-
-	@SuppressWarnings("unchecked")
-	@Override
-	public Wadataexplain[] queryAll() throws BusinessException {
-		Collection<Wadataexplain> col = getQueryService().queryBillOfVOByCondWithOrder(Wadataexplain.class, "1=1", true,
-				false, new String[] {});
-		return col.toArray(new Wadataexplain[0]);
-	}
-
-	@SuppressWarnings("unchecked")
-	@Override
-	public Wadataexplain[] query(String where) throws BusinessException {
-		Collection<Wadataexplain> col = getQueryService().queryBillOfVOByCondWithOrder(Wadataexplain.class, where, true,
-				false, new String[] {});
-
-		return col.toArray(new Wadataexplain[0]);
-	}
-
-	private IMDPersistenceQueryService getQueryService() {
-		if (queryService == null)
-			queryService = NCLocator.getInstance().lookup(IMDPersistenceQueryService.class);
-		return queryService;
-
-	}
-
-	@Override
-	public String[] queryPKs(String where) throws BusinessException {
-		String[] pks = null;
-		StringBuilder querySQL = new StringBuilder("select ");
-		querySQL.append(" pk_wa_data_explain ");
-		querySQL.append(" from ");
-		querySQL.append(" wa_data_explain ");
-		querySQL.append(" where ");
-		querySQL.append(where);
-		querySQL.append(" order by ");
-		querySQL.append(" ts ");
-
-		List<String> pkList = (ArrayList<String>) new BaseDAO().executeQuery(querySQL.toString(),
-				new ColumnListProcessor());
-		if (pkList != null && pkList.size() > 0) {
-			pks = pkList.toArray(new String[pkList.size()]);
-		}
-
-		return pks;
-	}
-
-	@Override
-	public List<Wadataexplain> batchCommit(StringBuffer pk_wa_class_buf, StringBuffer pk_buf, HashMap<String, String> psndocMap,StringBuffer cyearperiodbuf)
-			throws BusinessException {
-		// TODO Auto-generated method stub
-		//当前会计期间已经 全部审批,不允许提交 
-		StringBuffer dataBufall = new StringBuffer();
-		dataBufall.append(" select pk_wa_data from wa_data");
-		dataBufall.append(" where checkflag = 'N'");
-		dataBufall.append(" and pk_wa_class in ( ");
-		dataBufall.append(pk_wa_class_buf.substring(0, pk_wa_class_buf.length()-1));
-		dataBufall.append(" )");
-		dataBufall.append(" and cyearperiod in ( ");
-		dataBufall.append(cyearperiodbuf.substring(0, cyearperiodbuf.length()-1));
-		dataBufall.append(" )");
-		dataBufall.append(" and nvl(dr,0)=0");
-		
-		List<Map<String, Object>> alldatalist = (List<Map<String, Object>>)getNcDAO().executeQuery(dataBufall.toString(), new MapListProcessor());
-		if(CollectionUtils.isEmpty(alldatalist))
-			ExceptionUtils.wrappBusinessException("薪资发放节点数据已全部审核,不允许提交");
-		
-		//当前会计期间未全部审批,只要对应的数据审批,就可以提交 
-		StringBuffer dataBuf = new StringBuffer();
-		dataBuf.append(" select pk_wa_data from wa_data");
-		dataBuf.append(" where checkflag = 'Y'");
-		dataBuf.append(" and pk_wa_class in ( ");
-		dataBuf.append(pk_wa_class_buf.substring(0, pk_wa_class_buf.length()-1));
-		dataBuf.append(" )");
-		dataBuf.append(" and cyearperiod in ( ");
-		dataBuf.append(cyearperiodbuf.substring(0, cyearperiodbuf.length()-1));
-		dataBuf.append(" )");
-		dataBuf.append(" and nvl(dr,0)=0");
-		
-		List<Map<String, Object>> dataList = (List<Map<String, Object>>)getNcDAO().executeQuery(dataBuf.toString(), new MapListProcessor());
-		if(dataList!=null && dataList.size()>0){
-			StringBuffer retbuf = new StringBuffer();
-			retbuf.append("薪资发放节点数据已审核,不允许提交");
-//			for(int i=0;i<dataList.size();i++){
-//				retbuf.append(psndocMap.get(dataList.get(i).get("pk_wa_data")));
-//				retbuf.append(" ");
-//			}
-			ExceptionUtils.wrappBusinessException( retbuf.toString());
-		}
-		
-		StringBuffer updatesql = new StringBuffer();
-		updatesql.append(" update wa_data_explain");
-		updatesql.append(" set iscommit = 'Y'");
-		updatesql.append(" where pk_wa_data_explain in ( ");
-		updatesql.append(pk_buf.substring(0, pk_buf.length()-1));
-		updatesql.append(" )");
-		
-		int updateret = getNcDAO().executeUpdate(updatesql.toString());
-		String sql = "select * from wa_data_explain where pk_wa_data_explain in (" +pk_buf.substring(0, pk_buf.length()-1)+")";
-		 List<Wadataexplain> result = (List<Wadataexplain>)getNcDAO().executeQuery(sql,  new BeanListProcessor(Wadataexplain.class));
-		
-		return result;
-	}
-
-	@Override
-	public List<Wadataexplain> batchUncommit(StringBuffer pk_wa_class_buf, StringBuffer pk_buf, HashMap<String, String> psndocMap,StringBuffer cyearperiodbuf)
-			throws BusinessException {
-		// TODO Auto-generated method stub
-		//当前会计期间已经 全部审批,不允许提交 
-		StringBuffer dataBufall = new StringBuffer();
-		dataBufall.append(" select pk_wa_data from wa_data");
-		dataBufall.append(" where checkflag = 'N'");
-		dataBufall.append(" and pk_wa_class in ( ");
-		dataBufall.append(pk_wa_class_buf.substring(0, pk_wa_class_buf.length()-1));
-		dataBufall.append(" )");
-		dataBufall.append(" and cyearperiod in ( ");
-		dataBufall.append(cyearperiodbuf.substring(0, cyearperiodbuf.length()-1));
-		dataBufall.append(" )");
-		dataBufall.append(" and nvl(dr,0)=0");
-		
-		List<Map<String, Object>> alldatalist = (List<Map<String, Object>>)getNcDAO().executeQuery(dataBufall.toString(), new MapListProcessor());
-		if(CollectionUtils.isEmpty(alldatalist))
-			ExceptionUtils.wrappBusinessException("薪资发放节点数据已全部审核,不允许收回");
-		
-		StringBuffer dataBuf = new StringBuffer();
-		dataBuf.append(" select pk_wa_data from wa_data");
-		dataBuf.append(" where checkflag = 'Y'");
-		dataBuf.append(" and pk_wa_class in ( ");
-		dataBuf.append(pk_wa_class_buf.substring(0, pk_wa_class_buf.length()-1));
-		dataBuf.append(" )");
-		dataBuf.append(" and cyearperiod in ( ");
-		dataBuf.append(cyearperiodbuf.substring(0, cyearperiodbuf.length()-1));
-		dataBuf.append(" )");
-		dataBuf.append(" and nvl(dr,0)=0");
-		
-		
-		List<Map<String, Object>> dataList = (List<Map<String, Object>>)getNcDAO().executeQuery(dataBuf.toString(), new MapListProcessor());
-		if(dataList!=null && dataList.size()>0){
-			StringBuffer retbuf = new StringBuffer();
-			retbuf.append("薪资发放节点数据已审核,不允许收回 ");
-//			for(int i=0;i<dataList.size();i++){
-//				retbuf.append(psndocMap.get(dataList.get(i).get("pk_wa_data")));
-//				retbuf.append(" ");
-//			}
-			ExceptionUtils.wrappBusinessException( retbuf.toString());
-		}
-		
-		StringBuffer updatesql = new StringBuffer();
-		updatesql.append(" update wa_data_explain");
-		updatesql.append(" set iscommit = 'N' ,isquote = 'N' " );
-		updatesql.append(" where pk_wa_data_explain in ( ");
-		updatesql.append(pk_buf.substring(0, pk_buf.length()-1));
-		updatesql.append(" )");
-		
-		int updateret = getNcDAO().executeUpdate(updatesql.toString());
-		String sql = "select * from wa_data_explain where pk_wa_data_explain in (" +pk_buf.substring(0, pk_buf.length()-1)+")";
-		 List<Wadataexplain> result = (List<Wadataexplain>)getNcDAO().executeQuery(sql,  new BeanListProcessor(Wadataexplain.class));
-		
-		return result;
-	}
-	
-	
-	
-	private BaseDAO baseDAO;//NC系统数据源
-	private BaseDAO getNcDAO() {
-		if(this.baseDAO==null){
-			this.baseDAO = new BaseDAO();
-		}
-		return this.baseDAO;
-	}
-}
+package nccloud.impl.bd.wadataexplain;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import nc.bs.bd.baseservice.md.BatchBaseService;
+import nc.bs.dao.BaseDAO;
+import nc.bs.framework.common.NCLocator;
+import nc.bs.logging.Logger;
+import nc.jdbc.framework.processor.BeanListProcessor;
+import nc.jdbc.framework.processor.ColumnListProcessor;
+import nc.jdbc.framework.processor.MapListProcessor;
+import nc.md.persist.framework.IMDPersistenceQueryService;
+import nc.vo.bd.meta.BatchOperateVO;
+import nc.vo.hrwa.wadataexplain.Wadataexplain;
+import nc.vo.pub.BusinessException;
+import nc.vo.pubapp.pattern.exception.ExceptionUtils;
+import nccloud.commons.collections.CollectionUtils;
+import nccloud.itf.bd.wadataexplain.IWadataexplainQryService;
+import nccloud.itf.bd.wadataexplain.IWadataexplainService;
+
+
+public class WadataexplainServiceImpl extends BatchBaseService<Wadataexplain>
+		implements IWadataexplainService, IWadataexplainQryService {
+
+	private IMDPersistenceQueryService queryService = null;
+
+	public WadataexplainServiceImpl() {
+		super("cfcfc751-a268-4c9e-b7a0-f38533e78990");
+	}
+
+	@Override
+	public BatchOperateVO batchSaveCurrtype(BatchOperateVO vo) throws BusinessException {
+		return batchSave(vo);
+	}
+
+	@Override
+	public Wadataexplain findByPK(String key) throws BusinessException {
+		Wadataexplain wadataexplain = null;
+		try {
+			Object vo = new BaseDAO().retrieveByPK(Wadataexplain.class, key);
+			wadataexplain = (vo == null ? null : (Wadataexplain) vo);
+		} catch (Exception e) {
+			Logger.error(e.getMessage(), e);
+			throw new BusinessException(e);
+		}
+
+		return wadataexplain;
+	}
+
+	@SuppressWarnings("unchecked")
+	@Override
+	public Wadataexplain[] queryAll() throws BusinessException {
+		Collection<Wadataexplain> col = getQueryService().queryBillOfVOByCondWithOrder(Wadataexplain.class, "1=1", true,
+				false, new String[] {});
+		return col.toArray(new Wadataexplain[0]);
+	}
+
+	@SuppressWarnings("unchecked")
+	@Override
+	public Wadataexplain[] query(String where) throws BusinessException {
+		Collection<Wadataexplain> col = getQueryService().queryBillOfVOByCondWithOrder(Wadataexplain.class, where, true,
+				false, new String[] {});
+
+		return col.toArray(new Wadataexplain[0]);
+	}
+
+	private IMDPersistenceQueryService getQueryService() {
+		if (queryService == null)
+			queryService = NCLocator.getInstance().lookup(IMDPersistenceQueryService.class);
+		return queryService;
+
+	}
+
+	@Override
+	public String[] queryPKs(String where) throws BusinessException {
+		String[] pks = null;
+		StringBuilder querySQL = new StringBuilder("select ");
+		querySQL.append(" pk_wa_data_explain ");
+		querySQL.append(" from ");
+		querySQL.append(" wa_data_explain ");
+		querySQL.append(" where DR='0'");//这里根据dr进行查询
+		//querySQL.append(where);
+		querySQL.append(" order by ");
+		querySQL.append(" ts ");
+
+		List<String> pkList = (ArrayList<String>) new BaseDAO().executeQuery(querySQL.toString(),
+				new ColumnListProcessor());
+		if (pkList != null && pkList.size() > 0) {
+			pks = pkList.toArray(new String[pkList.size()]);
+		}
+
+		return pks;
+	}
+
+	@Override
+	public List<Wadataexplain> batchCommit(StringBuffer pk_wa_class_buf, StringBuffer pk_buf, HashMap<String, String> psndocMap,StringBuffer cyearperiodbuf)
+			throws BusinessException {
+		// TODO Auto-generated method stub
+		//当前会计期间已经 全部审批,不允许提交 
+		StringBuffer dataBufall = new StringBuffer();
+		dataBufall.append(" select pk_wa_data from wa_data");
+		dataBufall.append(" where checkflag = 'N'");
+		dataBufall.append(" and pk_wa_class in ( ");
+		dataBufall.append(pk_wa_class_buf.substring(0, pk_wa_class_buf.length()-1));
+		dataBufall.append(" )");
+		dataBufall.append(" and cyearperiod in ( ");
+		dataBufall.append(cyearperiodbuf.substring(0, cyearperiodbuf.length()-1));
+		dataBufall.append(" )");
+		dataBufall.append(" and nvl(dr,0)=0");
+		
+		List<Map<String, Object>> alldatalist = (List<Map<String, Object>>)getNcDAO().executeQuery(dataBufall.toString(), new MapListProcessor());
+		if(CollectionUtils.isEmpty(alldatalist))
+			ExceptionUtils.wrappBusinessException("薪资发放节点数据已全部审核,不允许提交");
+		
+		//当前会计期间未全部审批,只要对应的数据审批,就可以提交 
+		StringBuffer dataBuf = new StringBuffer();
+		dataBuf.append(" select pk_wa_data from wa_data");
+		dataBuf.append(" where checkflag = 'Y'");
+		dataBuf.append(" and pk_wa_class in ( ");
+		dataBuf.append(pk_wa_class_buf.substring(0, pk_wa_class_buf.length()-1));
+		dataBuf.append(" )");
+		dataBuf.append(" and cyearperiod in ( ");
+		dataBuf.append(cyearperiodbuf.substring(0, cyearperiodbuf.length()-1));
+		dataBuf.append(" )");
+		dataBuf.append(" and nvl(dr,0)=0");
+		
+		List<Map<String, Object>> dataList = (List<Map<String, Object>>)getNcDAO().executeQuery(dataBuf.toString(), new MapListProcessor());
+		if(dataList!=null && dataList.size()>0){
+			StringBuffer retbuf = new StringBuffer();
+			retbuf.append("薪资发放节点数据已审核,不允许提交");
+//			for(int i=0;i<dataList.size();i++){
+//				retbuf.append(psndocMap.get(dataList.get(i).get("pk_wa_data")));
+//				retbuf.append(" ");
+//			}
+			ExceptionUtils.wrappBusinessException( retbuf.toString());
+		}
+		
+		StringBuffer updatesql = new StringBuffer();
+		updatesql.append(" update wa_data_explain");
+		updatesql.append(" set iscommit = 'Y'");
+		updatesql.append(" where pk_wa_data_explain in ( ");
+		updatesql.append(pk_buf.substring(0, pk_buf.length()-1));
+		updatesql.append(" )");
+		
+		int updateret = getNcDAO().executeUpdate(updatesql.toString());
+		String sql = "select * from wa_data_explain where pk_wa_data_explain in (" +pk_buf.substring(0, pk_buf.length()-1)+")";
+		 List<Wadataexplain> result = (List<Wadataexplain>)getNcDAO().executeQuery(sql,  new BeanListProcessor(Wadataexplain.class));
+		
+		return result;
+	}
+
+	@Override
+	public List<Wadataexplain> batchUncommit(StringBuffer pk_wa_class_buf, StringBuffer pk_buf, HashMap<String, String> psndocMap,StringBuffer cyearperiodbuf)
+			throws BusinessException {
+		// TODO Auto-generated method stub
+		//当前会计期间已经 全部审批,不允许提交 
+		StringBuffer dataBufall = new StringBuffer();
+		dataBufall.append(" select pk_wa_data from wa_data");
+		dataBufall.append(" where checkflag = 'N'");
+		dataBufall.append(" and pk_wa_class in ( ");
+		dataBufall.append(pk_wa_class_buf.substring(0, pk_wa_class_buf.length()-1));
+		dataBufall.append(" )");
+		dataBufall.append(" and cyearperiod in ( ");
+		dataBufall.append(cyearperiodbuf.substring(0, cyearperiodbuf.length()-1));
+		dataBufall.append(" )");
+		dataBufall.append(" and nvl(dr,0)=0");
+		
+		List<Map<String, Object>> alldatalist = (List<Map<String, Object>>)getNcDAO().executeQuery(dataBufall.toString(), new MapListProcessor());
+		if(CollectionUtils.isEmpty(alldatalist))
+			ExceptionUtils.wrappBusinessException("薪资发放节点数据已全部审核,不允许收回");
+		
+		StringBuffer dataBuf = new StringBuffer();
+		dataBuf.append(" select pk_wa_data from wa_data");
+		dataBuf.append(" where checkflag = 'Y'");
+		dataBuf.append(" and pk_wa_class in ( ");
+		dataBuf.append(pk_wa_class_buf.substring(0, pk_wa_class_buf.length()-1));
+		dataBuf.append(" )");
+		dataBuf.append(" and cyearperiod in ( ");
+		dataBuf.append(cyearperiodbuf.substring(0, cyearperiodbuf.length()-1));
+		dataBuf.append(" )");
+		dataBuf.append(" and nvl(dr,0)=0");
+		
+		
+		List<Map<String, Object>> dataList = (List<Map<String, Object>>)getNcDAO().executeQuery(dataBuf.toString(), new MapListProcessor());
+		if(dataList!=null && dataList.size()>0){
+			StringBuffer retbuf = new StringBuffer();
+			retbuf.append("薪资发放节点数据已审核,不允许收回 ");
+//			for(int i=0;i<dataList.size();i++){
+//				retbuf.append(psndocMap.get(dataList.get(i).get("pk_wa_data")));
+//				retbuf.append(" ");
+//			}
+			ExceptionUtils.wrappBusinessException( retbuf.toString());
+		}
+		
+		StringBuffer updatesql = new StringBuffer();
+		updatesql.append(" update wa_data_explain");
+		updatesql.append(" set iscommit = 'N' ,isquote = 'N' " );
+		updatesql.append(" where pk_wa_data_explain in ( ");
+		updatesql.append(pk_buf.substring(0, pk_buf.length()-1));
+		updatesql.append(" )");
+		
+		int updateret = getNcDAO().executeUpdate(updatesql.toString());
+		String sql = "select * from wa_data_explain where pk_wa_data_explain in (" +pk_buf.substring(0, pk_buf.length()-1)+")";
+		 List<Wadataexplain> result = (List<Wadataexplain>)getNcDAO().executeQuery(sql,  new BeanListProcessor(Wadataexplain.class));
+		
+		return result;
+	}
+	
+	
+	
+	private BaseDAO baseDAO;//NC系统数据源
+	private BaseDAO getNcDAO() {
+		if(this.baseDAO==null){
+			this.baseDAO = new BaseDAO();
+		}
+		return this.baseDAO;
+	}
+}

+ 1 - 0
hrwa/src/test/nc/impl/wa/alert/PluginWaIndividual.java

@@ -7,6 +7,7 @@ import nc.bs.pub.pa.PreAlertObject;
 import nc.bs.pub.pa.PreAlertReturnType;
 import nc.hr.utils.InSQLCreator;
 import nc.hr.utils.ResHelper;
+import nc.impl.wa.alert.PsnClassitemImpl;
 import nc.vo.hi.alert.FormatMessage;
 import nc.vo.hr.append.AppendableVO;
 import nc.vo.pub.BusinessException;