diff --git a/src/main/java/net/wicp/tams/duckula/ops/pages/tools/GroupAssign.java b/src/main/java/net/wicp/tams/duckula/ops/pages/tools/GroupAssign.java index 33a230fd440af62b9abb418788367b06c95e0a20..772445d24b6ecf57dc1139017c1397a7ff1f290d 100644 --- a/src/main/java/net/wicp/tams/duckula/ops/pages/tools/GroupAssign.java +++ b/src/main/java/net/wicp/tams/duckula/ops/pages/tools/GroupAssign.java @@ -191,7 +191,7 @@ public class GroupAssign extends ParentPage { long[] oriIds = new long[selGroup.size()]; for (int i = 0; i < oriIds.length; i++) { - oriIds[i] = Integer.parseInt(String.valueOf(selGroup.get(i))); + oriIds[i] = Long.parseLong(String.valueOf(selGroup.get(i))); } long[] saveIds = new long[selIds.size()]; for (int i = 0; i < selIds.size(); i++) { diff --git a/src/main/java/net/wicp/tams/duckula/ops/pages/tools/PositionAssign.java b/src/main/java/net/wicp/tams/duckula/ops/pages/tools/PositionAssign.java index 6321b68c10488d2378041bc878519ccda8e277cb..bfe6f45dc232ea9c09fd8d99d883ef0b81f6cc0b 100644 --- a/src/main/java/net/wicp/tams/duckula/ops/pages/tools/PositionAssign.java +++ b/src/main/java/net/wicp/tams/duckula/ops/pages/tools/PositionAssign.java @@ -1,7 +1,11 @@ package net.wicp.tams.duckula.ops.pages.tools; import java.util.ArrayList; +import java.util.Arrays; +import java.util.HashMap; import java.util.List; +import java.util.Map; +import java.util.Set; import org.apache.commons.collections.CollectionUtils; import org.apache.commons.lang3.ArrayUtils; @@ -14,12 +18,22 @@ import org.apache.tapestry5.json.JSONArray; import org.apache.tapestry5.json.JSONObject; import org.apache.tapestry5.util.TextStreamResponse; +import net.wicp.tams.app.duckula.controller.bean.models.SysOrg; +import net.wicp.tams.app.duckula.controller.bean.models.SysPosition; +import net.wicp.tams.app.duckula.controller.bean.models.SysPositionExample; import net.wicp.tams.app.duckula.controller.bean.models.SysUserPosition; import net.wicp.tams.app.duckula.controller.bean.models.SysUserPositionExample; import net.wicp.tams.app.duckula.controller.bean.models.SysUserPositionExample.Criteria; +import net.wicp.tams.app.duckula.controller.dao.SysPositionMapper; import net.wicp.tams.app.duckula.controller.dao.SysUserPositionMapper; import net.wicp.tams.app.duckula.controller.service.cas.IOrgService; +import net.wicp.tams.cas.constant.ColsSysOrg; import net.wicp.tams.common.Result; +import net.wicp.tams.common.apiext.CollectionUtil; +import net.wicp.tams.common.apiext.StringUtil; +import net.wicp.tams.common.callback.IConvertValue; +import net.wicp.tams.common.jdbc.convert.ConvertValueMysql; +import net.wicp.tams.component.SymbolConstantsCus; import net.wicp.tams.component.tools.TapestryAssist; import net.wicp.tams.duckula.ops.pages.ParentPage; @@ -35,66 +49,96 @@ public class PositionAssign extends ParentPage { private JSONArray orgs; @Property - private List allPosition;// 已选中组织中拥有的群组 + private List allPosition;// 已选中组织中拥有的群组 @Property private List selPosition;// 已分派到的群组 - + + // 如果不持久化onInitByOrg方法不能用 + @Property + @Persist + private Map> convmap;// 转换器 + + public String getAlias() { + return "orgId,orgName1"; + } + @Inject private SysUserPositionMapper sysUserPositionMapper; + @Inject + private SysPositionMapper sysPositionMapper; public TextStreamResponse onInitByOrg() { - JSONObject params=TapestryAssist.packParams(request,false); - orgs = TapestryAssist.getParams(params, - "orgIds"); - List orgIds = orgs==null?null:orgs.toList(); + JSONObject params = TapestryAssist.packParams(request, false); + orgs = TapestryAssist.getParams(params, "orgIds"); + List orgIds = orgs == null ? null : orgs.toList(); selAll(params.getInt("staffId"), orgIds); - JSONObject ret = TapestryAssist.buildSelGroupInit(allPosition, selPosition, - new String[] { "caOrganization.orgName,orgName1" }, null); + JSONObject ret = TapestryAssist.buildSelGroupInit(allPosition, selPosition, new String[] { getAlias() }, + convmap); return retStream(ret.toString(true)); } void onActivate(int staffId) { this.staffId = staffId; - orgTree = orgService.createOrgTree(I18NConvert); + orgTree = orgService.createOrgTree(new IConvertValue() { + @Override + public String getStr(Object obj) { + SysOrg org = (SysOrg) obj; + String key = org.getOrgName(); + if (StringUtil.isNull(key) || !messages.contains(key)) { + return key; + } + return messages.get(key); + } + }); + convmap = new HashMap>();// + convmap.put("orgName1", + new ConvertValueMysql(ColsSysOrg.db, ColsSysOrg.tb, ColsSysOrg.orgName.getOriColName())); selAll(staffId, null); } private void selAll(long staffId, List orgIds) { + // 参数转为list List orgidsTrue = null; if (orgIds != null) { orgidsTrue = new ArrayList(); for (Object ele : orgIds) { orgidsTrue.add(Long.parseLong(String.valueOf(ele))); } - } -// SysUserPositionExample example=new SysUserPositionExample(); -// Criteria createCriteria = example.createCriteria(); -// createCriteria+ -// sysUserPositionMapper.selectByExample(example); -// -// -// Criteria criteria = session.createCriteria(CaPosition.class); -// if (orgidsTrue != null) { -// criteria.add(Restrictions.in("caOrganization.id", orgidsTrue)); -// } - allPosition = new ArrayList(); + } + + SysPositionExample example = new SysPositionExample(); + SysPositionExample.Criteria criteria = example.createCriteria(); + if (CollectionUtils.isNotEmpty(orgidsTrue)) { + criteria.andOrgIdIn(orgidsTrue); + } + allPosition = sysPositionMapper.selectByExample(example); findGroupId(staffId, orgidsTrue); } private void findGroupId(long staffId, List orgidsTrue) { // 查询已选择的群组 // String alias = "group_"; //查询时的table别名 -// Criteria criteriasel = session.createCriteria(CaStaffPosition.class); -// ProjectionList pList = Projections.projectionList(); -// pList.add(Projections.property("caPosition.id").as("positionId")); -// criteriasel.setProjection(pList); -// criteriasel.add(Restrictions.eq("caStaff.id", staffId)); -// if (orgidsTrue != null) { -// criteriasel.createAlias("caPosition", "g"); -// criteriasel.add(Restrictions.in("g.caOrganization.id", orgidsTrue)); -// } - selPosition = new ArrayList(); + SysUserPositionExample example = new SysUserPositionExample(); + SysUserPositionExample.Criteria createCriteria = example.createCriteria(); + createCriteria.andUserIdEqualTo(staffId); + if (orgidsTrue != null) { + SysPositionExample positionExample = new SysPositionExample(); + SysPositionExample.Criteria createCriteria2 = positionExample.createCriteria(); + createCriteria2.andOrgIdIn(orgidsTrue); + List positions = sysPositionMapper.selectByExample(positionExample); + Set positionIds = CollectionUtil.getColSetFromObj(positions, "id"); + if (CollectionUtils.isNotEmpty(positionIds)) { + createCriteria.andPositionIdIn(Arrays.asList(positionIds.toArray(new Long[positionIds.size()]))); + } + } + List selectByExample = sysUserPositionMapper.selectByExample(example); + Set positionIdset = CollectionUtil.getColSetFromObj(selectByExample, "positionId"); + List retlist = new ArrayList(); + for (Object ele : positionIdset) { + retlist.add(String.valueOf(ele)); + } + selPosition = retlist; } /*** @@ -103,7 +147,8 @@ public class PositionAssign extends ParentPage { * @param selIds * @return */ - @OnEvent(value = "save") + @SuppressWarnings("unchecked") + @OnEvent(value = SymbolConstantsCus.EVENT_SAVE) private Result sava(JSONArray selIds) { if (selIds == null) { return Result.getError("需要传入要保存的对象"); @@ -122,11 +167,11 @@ public class PositionAssign extends ParentPage { long[] oriIds = new long[selPosition.size()]; for (int i = 0; i < oriIds.length; i++) { - oriIds[i] = Integer.parseInt(String.valueOf(selPosition.get(i))); + oriIds[i] = Long.parseLong(String.valueOf(selPosition.get(i))); } long[] saveIds = new long[selIds.size()]; for (int i = 0; i < selIds.size(); i++) { - saveIds[i] = Integer.parseInt(selIds.getString(i)); + saveIds[i] = Long.parseLong(selIds.getString(i)); } List addList = new ArrayList();// 新增 for (int i = 0; i < saveIds.length; i++) { @@ -137,7 +182,7 @@ public class PositionAssign extends ParentPage { if (CollectionUtils.isNotEmpty(addList)) { for (Long positionId : addList) { SysUserPosition saveobj = new SysUserPosition(); - saveobj.setPositionId(positionId); + saveobj.setPositionId(positionId); saveobj.setUserId(staffId); sysUserPositionMapper.insert(saveobj); } @@ -151,10 +196,10 @@ public class PositionAssign extends ParentPage { } if (CollectionUtils.isNotEmpty(delList)) { - SysUserPositionExample example=new SysUserPositionExample(); + SysUserPositionExample example = new SysUserPositionExample(); Criteria createCriteria = example.createCriteria(); createCriteria.andUserIdEqualTo(staffId); - createCriteria.andPositionIdIn(delList); + createCriteria.andPositionIdIn(delList); sysUserPositionMapper.deleteByExample(example); } return Result.getSuc(); diff --git a/src/main/resources/net/wicp/tams/duckula/ops/pages/tools/PositionAssign.tml b/src/main/resources/net/wicp/tams/duckula/ops/pages/tools/PositionAssign.tml index b1c4a32ec91e1a209cbbf7d10843eced485afeba..3fce7fe4bc05374cf19e5ef48492eaa06a6cbd87 100644 --- a/src/main/resources/net/wicp/tams/duckula/ops/pages/tools/PositionAssign.tml +++ b/src/main/resources/net/wicp/tams/duckula/ops/pages/tools/PositionAssign.tml @@ -22,7 +22,7 @@ - + @@ -34,10 +34,11 @@
职位名: