■Japanese/プロジェクトサンプル/excel_sample/予定シフトとスタッフプロパティインポートサンプル
スタッフプロパティで、数字だけで構成されたプロパティ(下ソースで公休数)は、Python Dictionaryとして取り出すことが出来ます。
これを利用してスタッフ毎の各種設定を行うことが出来ます。
import sc3
def 公休数設定():
for person in 公休数.keys():
#sc3.print(str(person)+'\n')
value=公休数[person]
sc3.print(staffdef[person]+'の公休数は'+str(value)+'回に制約\n')
VList=[]
for day in 全日:
if day<制約開始日:
continue
#Today 早残
v1=sc3.GetShiftVar(person,day,'公休')
VList.append(v1)
s="person"+str(person)+"公休数"
sc3.AddSoft(sc3.SeqError(value,value,7,VList),s,7) #許容エラー7 いい加減に設定される可能性がある
def 週あたりの勤務回数設定():
for person in 週あたりの勤務回数.keys():
n=週あたりの勤務回数[person]
sc3.print(staffdef[person]+'の週当たりの勤務回数は'+str(n)+'回に制約\n')
for mon in 月:#月曜日を起点に1週間見る
sc3.print('月曜日 '+str(mon)+'\n')
VList=[]
for d in range(7):
day=mon+d
if day >制約終了日:
break
else:
v1=sc3.GetShiftVar(person,day,'休日集合')#
VList.append(~v1)#休日の否定は勤務
s="person"+str(person)+"週あたりの勤務回数設定"
if len(VList)==7:
sc3.AddSoft(sc3.SeqError(n,n,4,VList),s,3) #level 3 許容エラー4
else:
nn=int(len(VList)*n/7);#7日に満たない場合は、リニア目標値設定 端数切捨て
sc3.print(str(nn)+"に目標値を設定しました。\n")
sc3.AddSoft(sc3.SeqError(nn,nn,4,VList),s,3)#level 3 許容エラー4
公休数設定()
週あたりの勤務回数設定()