U9轻量服务项目学习(逻辑编码、DLL部署) 阶段三


目录: 

阶段一:U9轻量服务项目学习(创建、配置)

阶段二:U9轻量服务项目学习(脚本、发布、测试)

阶段三:U9轻量服务项目学习(逻辑编码、DLL部署)

阶段四:U9轻量服务项目学习(工具测试)

阶段五:U9轻量服务项目学习(POST调用、解析)


  • SV逻辑编码

     前面的基础工作准备完成后,接下来就是相对重要的环节了,轻量项目服务功能逻辑编码。首次轻量服务测试选用的是客开单据创建(客开单据无系统校验,单据参数可控,易于实现,异常问题易于分析),实现调用服务单头、单行参数新增客开单据,新增成功后返回单据编码、ID及是否成功标识。

     轻量服务项目逻辑编码完成,通过PostMain调试后返回异常"未将对象应用到对象实例",根据报错信息看,应该是单据创建逻辑编码有异常,打上断点后也无法跟踪断点。鉴于此,首先选择通过BP实现创建单据过程,界面调用成功后,在将BP创建单据的代码,复制到SV中,重新生成解决方案后,服务调用成功创建客开单据,并返回新增单据相关信息。

    总结:首次轻量服务项目测试,建议服务参数不要设置过于复杂,简单设置一个字符串,返回一个字符串就可以了,便于后续服务调用异常分析及返回结果查询。

       public override object Do(object obj)
        {                        
            PlanDocCreate bpObj = (PlanDocCreate)obj;
            List<MessageDTOData> Mess = new List<MessageDTOData>();
            if (bpObj.PlanDocS.Count > 0)
            {
                try
                {
                    foreach (PlanDocHeadsDTOData head in bpObj.PlanDocS)
                    {
                        using (ISession session = UFSoft.UBF.Business.Session.Open())
                        {
                            ServicePlan serPlan = ServicePlan.Create(); //测试单据单头创建
                            serPlan.PlanDocType = UFIDA.U9.Cust.SP.ServiceSupportBE.ServicePlanDocTypeBE.ServicePlanDocType.Finder.FindByID(head.PlanDocType);//单据类型
                            serPlan.PlanDocStatus = UFIDA.U9.Cust.SP.ServiceSupportBE.ServiceRecordDocBE.ServiceStatusEnum.Approving; //状态
                            serPlan.BusinessDate = System.DateTime.Now;//业务时间
                            serPlan.MakerBy = head.MakerBy;//制单人
                            ServiceRecord record = ServiceRecord.Finder.FindByID(head.ServiceRecord);
                            if (record != null)
                            {
                                serPlan.ServiceRecord = record;//来源单据
                            }
                            int SLineNo = 10;//行号初始化
                            foreach (PlanDocLinesDTOData line in head.ServicePlanLines)
                            {
                                ServicePlanLine lines = ServicePlanLine.Create(serPlan);//测试单据单行创建
                                lines.DocLineNo = SLineNo;//行号
                                lines.Importance = line.Importance;//重要程度
                                lines.PStartTime = System.DateTime.Now;//计划开始时间
                                lines.PEndTime = System.DateTime.Now.AddDays(1);//计划结束时间
                                lines.RStartTime = System.DateTime.Now;//实际开始时间
                                lines.WorkRemarks =line.WorkRemarks;//备注说明
                                SLineNo += 10;
                              } 
                            session.Commit();
                            //记录单据信息
                            if (serPlan.ID > 0)
                            {
                                MessageDTOData MeData = new MessageDTOData();
                                MeData.IsSuccess = true;
                                MeData.Messages = "服务计划单生单成功!";
                                MeData.DocNo = serPlan.DocNo;
                                MeData.DocID = serPlan.ID.ToString();
                                Mess.Add(MeData);
                            }
                        }
                    }
                }
                catch (Exception ex)
                {
                    //捕获异常
                    MessageDTOData MeData = new MessageDTOData();
                    MeData.IsSuccess = false;
                    MeData.Messages = ex.Message;
                    MeData.DocNo = "";
                    Mess.Add(MeData);
                }
            }
            else
            {
                ////捕获异常
                MessageDTOData MeData = new MessageDTOData();
                MeData.IsSuccess = false;
                MeData.Messages = "记录为空,生单失败!";
                MeData.DocNo = "";
                Mess.Add(MeData);
            }
            //返回记录
            return Mess; 
        }
  • DLL文件部署

        1.服务功能逻辑编码结束,重新生成解决方案。

    2.VS项目文件目录执行批处理命令(AutoBuild.bat)拷贝相关DLLSVC文件至U9Portal对应目录。

简单粗暴的记录,便于后续翻阅,转载请注明出处。
原文地址:https://www.cnblogs.com/youmin3205/p/14790040.html