|
@@ -2,26 +2,36 @@ package com.kingdee.eas.custom.dormitorysystem.application.app;
|
|
|
|
|
|
import com.kingdee.bos.BOSException;
|
|
|
import com.kingdee.bos.Context;
|
|
|
+import com.kingdee.bos.ctrl.reportone.data.framework.bos.BosUtil;
|
|
|
import com.kingdee.bos.dao.IObjectCollection;
|
|
|
import com.kingdee.bos.dao.IObjectPK;
|
|
|
import com.kingdee.bos.dao.IObjectValue;
|
|
|
-import com.kingdee.bos.metadata.entity.EntityViewInfo;
|
|
|
-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.dao.ormapping.ObjectUuidPK;
|
|
|
+import com.kingdee.bos.metadata.entity.*;
|
|
|
import com.kingdee.bos.metadata.query.util.CompareType;
|
|
|
+import com.kingdee.bos.util.BOSUuid;
|
|
|
+import com.kingdee.eas.base.codingrule.CodingRuleManagerFactory;
|
|
|
+import com.kingdee.eas.base.codingrule.ICodingRuleManager;
|
|
|
+import com.kingdee.eas.basedata.org.CtrlUnitFactory;
|
|
|
+import com.kingdee.eas.basedata.org.ICtrlUnit;
|
|
|
+import com.kingdee.eas.basedata.org.OrgUnitInfo;
|
|
|
import com.kingdee.eas.basedata.person.PersonInfo;
|
|
|
import com.kingdee.eas.common.EASBizException;
|
|
|
-import com.kingdee.eas.custom.dormitorysystem.application.CheckInApplicationInfo;
|
|
|
-import com.kingdee.eas.custom.dormitorysystem.application.RoomChangeApplicationEntryInfo;
|
|
|
-import com.kingdee.eas.custom.dormitorysystem.application.RoomChangeApplicationInfo;
|
|
|
+import com.kingdee.eas.custom.dormitorysystem.application.*;
|
|
|
import com.kingdee.eas.custom.dormitorysystem.occupants.IOccupants;
|
|
|
import com.kingdee.eas.custom.dormitorysystem.occupants.OccupantsCollection;
|
|
|
import com.kingdee.eas.custom.dormitorysystem.occupants.OccupantsFactory;
|
|
|
+import com.kingdee.eas.custom.dormitorysystem.occupants.OccupantsInfo;
|
|
|
import com.kingdee.eas.framework.CoreBaseInfo;
|
|
|
import com.kingdee.eas.framework.Result;
|
|
|
+import com.kingdee.shr.ats.web.util.NumberCodeRule;
|
|
|
+import com.kingdee.shr.base.syssetting.exception.SHRWebException;
|
|
|
+import com.kingdee.util.DateTimeUtils;
|
|
|
import org.apache.log4j.Logger;
|
|
|
|
|
|
+import java.text.ParseException;
|
|
|
+import java.util.Calendar;
|
|
|
+import java.util.Date;
|
|
|
import java.util.HashSet;
|
|
|
import java.util.Set;
|
|
|
|
|
@@ -31,6 +41,8 @@ public class RoomChangeApplicationControllerBean extends AbstractRoomChangeAppli
|
|
|
@Override
|
|
|
protected void _submitEffect(Context ctx, String billId) throws BOSException, EASBizException {
|
|
|
super._submitEffect(ctx, billId);
|
|
|
+ RoomChangeApplicationInfo roomChangeApplicationInfo = this.getRoomChangeApplicationInfo(ctx, new ObjectUuidPK(billId));
|
|
|
+ this._submitEffect(ctx, roomChangeApplicationInfo);
|
|
|
}
|
|
|
|
|
|
/**
|
|
@@ -47,33 +59,60 @@ public class RoomChangeApplicationControllerBean extends AbstractRoomChangeAppli
|
|
|
Context ctx,
|
|
|
CoreBaseInfo model
|
|
|
) throws BOSException, EASBizException {
|
|
|
- IObjectPK iObjectPK = super._submitEffect(ctx, model);
|
|
|
logger.error("_submitEffect-----");
|
|
|
RoomChangeApplicationInfo info = (RoomChangeApplicationInfo) model;
|
|
|
- // 人员入住信息
|
|
|
- IOccupants instance = OccupantsFactory.getLocalInstance(ctx);
|
|
|
- Set personIds = new HashSet();
|
|
|
+ info = getRoomChangeApplicationInfo(ctx, new ObjectUuidPK(info.getId()));
|
|
|
+ //人员入住信息
|
|
|
+ IOccupants iOccupants = OccupantsFactory.getLocalInstance(ctx);
|
|
|
+ //人员入住信息修改字段
|
|
|
+ SelectorItemCollection sicOccupants = new SelectorItemCollection();
|
|
|
+ sicOccupants.add("CheckOutDate");
|
|
|
+ //换宿单分录
|
|
|
+ IRoomChangeApplicationEntry iEntry = RoomChangeApplicationEntryFactory.getLocalInstance(ctx);
|
|
|
+ SelectorItemCollection sicEntry = new SelectorItemCollection();
|
|
|
+ sicEntry.add("occupants");
|
|
|
//生成入住人员信息
|
|
|
for (int i = 0; i < info.getEntrys().size(); i++) {
|
|
|
- RoomChangeApplicationEntryInfo roomChangeApplicationEntryInfo = info.getEntrys().get(i);
|
|
|
- //roomChangeApplicationEntryInfo
|
|
|
- PersonInfo person = roomChangeApplicationEntryInfo.getPerson();
|
|
|
- personIds.add(person.getId().toString());
|
|
|
- }
|
|
|
- FilterInfo filterInfo = new FilterInfo();
|
|
|
- FilterItemCollection filterItems = filterInfo.getFilterItems();
|
|
|
- filterItems.add(new FilterItemInfo("entry.person.id", personIds, CompareType.INCLUDE));
|
|
|
- filterItems.add(new FilterItemInfo("CheckOutDate", "2199-12-31"));
|
|
|
- EntityViewInfo entityViewInfo = EntityViewInfo.getInstance(filterInfo, null, null);
|
|
|
- //查询审批通过人员,生效的人员入住信息
|
|
|
- OccupantsCollection occupantsCollection = instance.getOccupantsCollection(entityViewInfo);
|
|
|
- for (int i = 0; i < occupantsCollection.size(); i++) {
|
|
|
-
|
|
|
+ RoomChangeApplicationEntryInfo entryInfo = info.getEntrys().get(i);
|
|
|
+ //原入住人员信息
|
|
|
+ OccupantsInfo oldOccupants = entryInfo.getOldOccupants();
|
|
|
+ //新增新的入住人员信息
|
|
|
+ oldOccupants = iOccupants.getOccupantsInfo(new ObjectUuidPK(oldOccupants.getId()));
|
|
|
+ //修改原入住人员信息的宿时间等于换宿单入住时间的前一天。
|
|
|
+ Date checkInDate = entryInfo.getCheckInDate();
|
|
|
+ oldOccupants.setCheckOutDate(DateTimeUtils.addDay(checkInDate, -1));
|
|
|
+ iOccupants.updatePartial(oldOccupants, sicOccupants);
|
|
|
+ //创建一张新的人员入住信息入住时间等于换宿单的入住时间
|
|
|
+ //生成入住人员信息
|
|
|
+ OccupantsInfo occupantsInfo = new OccupantsInfo();
|
|
|
+ //入住人员
|
|
|
+ occupantsInfo.setPerson(entryInfo.getPerson());
|
|
|
+ //入住日期
|
|
|
+ occupantsInfo.setCheckInDate(entryInfo.getCheckInDate());
|
|
|
+ //退宿日期
|
|
|
+ occupantsInfo.setCheckOutDate(entryInfo.getCheckoutDate());
|
|
|
+ //入住房间
|
|
|
+ occupantsInfo.setDormitory(entryInfo.getAdjustRoom());
|
|
|
+ //人员宿舍分类
|
|
|
+ occupantsInfo.setPersonDormitoryType(oldOccupants.getPersonDormitoryType());
|
|
|
+ //宿舍
|
|
|
+ occupantsInfo.setDormitory(oldOccupants.getDormitory());
|
|
|
+ //职位
|
|
|
+ occupantsInfo.setPersonPosition(oldOccupants.getPersonPosition());
|
|
|
+ //occupantsInfo.setPersonD
|
|
|
+ //状态:启用
|
|
|
+ //occupantsInfo.setState(BasicItemStateEnum.ENABLE);
|
|
|
+ iOccupants.addnew(occupantsInfo);
|
|
|
+ // 保存新的入住人员信息到
|
|
|
+ entryInfo.setOccupants(occupantsInfo);
|
|
|
}
|
|
|
+ update(ctx, new ObjectUuidPK(info.getId()), info);
|
|
|
+ IObjectPK iObjectPK = super._submitEffect(ctx, info);
|
|
|
//校验时间是否存在交叉
|
|
|
return iObjectPK;
|
|
|
}
|
|
|
|
|
|
+
|
|
|
/**
|
|
|
* 反审批单据
|
|
|
*
|
|
@@ -88,5 +127,30 @@ public class RoomChangeApplicationControllerBean extends AbstractRoomChangeAppli
|
|
|
String billId
|
|
|
) throws BOSException, EASBizException {
|
|
|
super._untiCheckBizBill(ctx, billId);
|
|
|
+ //人员入住信息
|
|
|
+ IOccupants iOccupants = OccupantsFactory.getLocalInstance(ctx);
|
|
|
+ //换宿单
|
|
|
+ RoomChangeApplicationInfo roomChangeApplicationInfo = this.getRoomChangeApplicationInfo(ctx, new ObjectUuidPK(billId));
|
|
|
+ RoomChangeApplicationEntryCollection entrys = roomChangeApplicationInfo.getEntrys();
|
|
|
+ //人员入住信息修改字段
|
|
|
+ SelectorItemCollection sicOccupants = new SelectorItemCollection();
|
|
|
+ sicOccupants.add("CheckOutDate");
|
|
|
+ try {
|
|
|
+ for (int i = 0; i < entrys.size(); i++) {
|
|
|
+ RoomChangeApplicationEntryInfo roomChangeApplicationEntryInfo = entrys.get(i);
|
|
|
+ //入住人员信息
|
|
|
+ OccupantsInfo occupants = roomChangeApplicationEntryInfo.getOccupants();
|
|
|
+ //删除
|
|
|
+ iOccupants.delete(new ObjectUuidPK(occupants.getId()));
|
|
|
+ //原入住人员信息
|
|
|
+ OccupantsInfo oldOccupants = roomChangeApplicationEntryInfo.getOldOccupants();
|
|
|
+ oldOccupants.setCheckOutDate(DateTimeUtils.parseDate("2199-12-31", "yyyy-MM-dd"));
|
|
|
+ iOccupants.updatePartial(oldOccupants, sicOccupants);
|
|
|
+ }
|
|
|
+ } catch (ParseException e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ throw new RuntimeException(e);
|
|
|
+ }
|
|
|
+
|
|
|
}
|
|
|
}
|