123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114 |
- package com.kingdee.eas.custom.attendanceexception.handler;
- import com.kingdee.bos.BOSException;
- import com.kingdee.bos.Context;
- import com.kingdee.bos.dao.ormapping.ObjectUuidPK;
- import com.kingdee.bos.metadata.entity.FilterInfo;
- import com.kingdee.bos.metadata.entity.FilterItemCollection;
- import com.kingdee.bos.metadata.entity.FilterItemInfo;
- import com.kingdee.bos.metadata.query.util.CompareType;
- import com.kingdee.eas.basedata.org.AdminOrgUnitFactory;
- import com.kingdee.eas.basedata.org.AdminOrgUnitInfo;
- import com.kingdee.eas.basedata.org.IAdminOrgUnit;
- import com.kingdee.eas.basedata.person.PersonInfo;
- import com.kingdee.eas.common.EASBizException;
- import com.kingdee.eas.custom.attendanceexception.CenterLeaderRelationEntryCollection;
- import com.kingdee.eas.custom.attendanceexception.CenterLeaderRelationEntryInfo;
- import com.kingdee.eas.custom.attendanceexception.CenterLeaderRelationInfo;
- import com.kingdee.eas.framework.CoreBaseInfo;
- import com.kingdee.shr.base.syssetting.context.SHRContext;
- import com.kingdee.shr.base.syssetting.exception.SHRWebException;
- import com.kingdee.shr.base.syssetting.exception.ShrWebBizException;
- import com.kingdee.shr.base.syssetting.web.handler.EditHandler;
- import org.apache.log4j.Logger;
- import javax.servlet.http.HttpServletRequest;
- import javax.servlet.http.HttpServletResponse;
- import java.util.HashSet;
- import java.util.Set;
- /**
- * @Description 中心负责人关系表表单Handler
- * @Date 2025/4/16 11:18
- * @Created by Heyuan
- */
- public class CenterLeaderRelationEditHandler extends EditHandler {
- private static Logger logger = Logger.getLogger(CenterLeaderRelationEditHandler.class);
- private Context ctx = SHRContext.getInstance().getContext();
- //一级组织类型id
- private final String FIRSTLEVELORGID = "00000000-0000-0000-0000-00000000000362824988";
- @Override
- protected void verifyModel(
- HttpServletRequest request,
- HttpServletResponse response,
- CoreBaseInfo model
- ) throws SHRWebException {
- try {
- CenterLeaderRelationInfo info = (CenterLeaderRelationInfo) model;
- AdminOrgUnitInfo department = info.getDepartment();
- if (department == null) {
- throw new ShrWebBizException("组织不能为空!");
- }
- String orgId = department.getId().toString();
- //1.校验组织是否为一级部门
- IAdminOrgUnit iAdminOrgUnit = AdminOrgUnitFactory.getLocalInstance(ctx);
- department = iAdminOrgUnit.getAdminOrgUnitInfo(new ObjectUuidPK(orgId));
- String unitLayerTypeId = department.getUnitLayerType().getId().toString();
- if (!FIRSTLEVELORGID.equals(unitLayerTypeId)) {
- String orgName = department.getName();
- throw new ShrWebBizException(orgName + "不是一级组织,不能维护负责人!");
- }
- //2.校验是否存在重复组织数据
- FilterInfo filterInfo = new FilterInfo();
- FilterItemCollection filterItems = filterInfo.getFilterItems();
- filterItems.add(new FilterItemInfo("department", department.getId()));
- if (info.getId() != null) {
- filterItems.add(new FilterItemInfo("id", info.getId(), CompareType.NOTEQUALS));
- }
- boolean exists = this.getBizInterface(request).exists(filterInfo);
- if (exists) {
- String orgName = department.getName();
- throw new ShrWebBizException("组织[" + orgName + "]数据已经存在,请勿重复添加!");
- }
- //3.校验分录人员数据
- CenterLeaderRelationEntryCollection entrys = info.getEntry();
- if (entrys.size() <= 0) {
- throw new ShrWebBizException("分录不能为空!");
- } else {
- StringBuilder numbers = new StringBuilder();
- StringBuilder names = new StringBuilder();
- Set<String> personIds = new HashSet<>();
- for (int i = entrys.size() - 1; i >= 0; i--) {
- CenterLeaderRelationEntryInfo entryInfo = entrys.get(i);
- PersonInfo person = entryInfo.getPerson();
- String personId = person.getId().toString();
- if (personIds.contains(personId)) {
- //去除重复人员
- entrys.remove(entryInfo);
- continue;
- }
- personIds.add(personId);
- String number = person.getNumber();
- numbers.append(number).append(",");
- String name = person.getName();
- names.append(name).append(",");
- }
- if (numbers.length() > 0) {
- numbers.deleteCharAt(numbers.lastIndexOf(","));
- }
- info.setPersonNumbers(numbers.toString());
- if (names.length() > 0) {
- names.deleteCharAt(names.lastIndexOf(","));
- }
- info.setPersonNames(names.toString());
- }
- } catch (BOSException e) {
- logger.error(e);
- throw new ShrWebBizException(e);
- } catch (EASBizException e) {
- logger.error(e);
- throw new ShrWebBizException(e);
- }
- }
- }
|