Просмотр исходного кода

Merge branch 'master' of http://47.92.104.23:3000/LiuYing/aibeike

Heyuan 1 месяц назад
Родитель
Сommit
37612bbd26

+ 89 - 25
src/com/kingdee/eas/custom/dormitorysystem/application/app/RoomChangeApplicationControllerBean.java

@@ -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);
+        }
+
     }
 }