#引入clr运行库 import clr #添加对cloud插件开发的常用组件引用 clr.AddReference('System') clr.AddReference('System.Data') clr.AddReference('Kingdee.BOS') clr.AddReference('Kingdee.BOS.Core') clr.AddReference('Kingdee.BOS.App') clr.AddReference('Kingdee.BOS.Contracts') clr.AddReference('Kingdee.BOS.DataEntity') clr.AddReference('Kingdee.BOS.ServiceHelper') #dairycloud基础库中的常用实体对象(分命名空间导入,不会递归导入) from Kingdee.BOS.Core import * from Kingdee.BOS.Util import * from Kingdee.BOS.Core.Bill import * from Kingdee.BOS.Core.Bill.PlugIn import * from Kingdee.BOS.Orm.DataEntity import * from Kingdee.BOS.Core.DynamicForm.PlugIn import * from Kingdee.BOS.Core.DynamicForm.PlugIn.Args import * from Kingdee.BOS.Core.DynamicForm.PlugIn.ControlModel import * from System import * from System.Data import * from Kingdee.BOS.App.Data import * from System.Collections.Generic import List from Kingdee.BOS.ServiceHelper import * def OnPreparePropertys(e): e.FieldKeys.Add("F_CYG_Worktype") e.FieldKeys.Add("FFinishQty") e.FieldKeys.Add("FStdManHour") e.FieldKeys.Add("FMaterialId") e.FieldKeys.Add("FHRWORKTIME") def EndOperationTransaction(e): # 保存8提交9审核1反审核26删除3 if this.FormOperation.OperationId == 1: Audit2DoUpdMoRptInfo(e) def Audit2DoUpdMoRptInfo(e): # sqlList = """""" sqlLList=List[str](); for data in e.DataEntitys: billId = data["Id"] formId = data["FFormId"] for item in data["PRD_MORPTENTRY"]: entryId =item["Id"] entrySeq = item["Seq"] # 默认取上游单据人员实作工时 hrWorkTime = item["HrWorkTime"] fitTimeTotal = 0 guideTimeTotal = 0 workTimeTypeVal = item["F_CYG_Worktype"] workTimeType = (0 if workTimeTypeVal.strip() == '' else int(workTimeTypeVal)) # 工时类型 0.空 1.含安装工时 2.指导安装工时 3.不含安装工时 if (workTimeType) > 0: # 完成数量 finishQty = item["FinishQty"] # 标准单位时间 stdManHour = item["StdManHour"] # 1.标准单位时间不为空时计算人员实作工时 = (完成数量 * 标准单位时间) if stdManHour != 0: hrWorkTime = finishQty * stdManHour if workTimeType != 3: materialId = item["MaterialId"] if workTimeType == 1: fitTime = materialId["F_CYG_FitTime"] fitTimeTotal = fitTime * finishQty # 2.含安装工时 标准单位时间为0时 人员实作工时 = 上游单据工时 if stdManHour == 0: hrWorkTime = hrWorkTime - fitTimeTotal if workTimeType == 2: guideTime = materialId["F_CYG_GuideTime"] guideTimeTotal = guideTime * finishQty # 3.指导安装工时 标准单位时间为0时 人员实作工时 = 上游单据工时 if stdManHour == 0: hrWorkTime = hrWorkTime - guideTimeTotal sql = ("""/*dialect*/UPDATE T_CB_WORKHOURSENTRY SET F_CYG_Worktype = '{0}' ,FFitTimeTotal = {1},FguideTimeTotal = {2},FHrWorkTimePart = {3} WHERE FSRCBILLID = {4} AND FSRCENTRYID = {5} AND FSRCSEQ = {6} AND FSRCBILLFORMID = '{7}' ;""").format(workTimeType,fitTimeTotal,guideTimeTotal,hrWorkTime,billId,entryId,entrySeq,formId) # sqlList = sqlList + sql; sqlLList.Add(sql); # DBUtils.Execute(this.Context,sqlList) if(sqlLList.Count > 0): DBUtils.ExecuteBatch(this.Context,sqlLList,sqlLList.Count);