wtt
2024-08-05 4ca8ab6ae136d3a99211240aab3867a7962ab9ef
采购订单多级审核添加
5个文件已修改
358 ■■■■■ 已修改文件
DAL/采购管理/ClsCg_POOrderBill.cs 88 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
DBUtility/业务单据/ClsXt_BaseBill.cs 160 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WebAPI/Controllers/CGGL/Cg_POOrderBillController.cs 74 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WebAPI/Controllers/基础资料/基础资料/Xt_CheckFlowProgressBillController.cs 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WebAPI/Properties/PublishProfiles/FolderProfile.pubxml.user 34 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
DAL/²É¹º¹ÜÀí/ClsCg_POOrderBill.cs
@@ -310,94 +310,6 @@
            }
        }
        //发起审批
        public bool startCheckFlow(Int64 lngBillKey, Int64 HCheckFlowID_select, ref string sReturn)
        {
            try
            {
                string HBillNo = "";                //单据号
                string HCheckFlowID = "";           //审批流ID
                string HCheckItemNowID = "";        //当前审核项目ID
                string HCheckItemNextID = "";       //待审核项目ID
                //判断是否已经发起审批
                string sql0 = "select * from Xt_BillCheckFlowStatus where HBillInterID = " + lngBillKey + " and HBillTypeID = '" + this.BillType + "'";
                DataSet ds0 = oCn.RunProcReturn(sql0, "Xt_BillCheckFlowStatus");
                if (ds0 != null && ds0.Tables[0].Rows.Count > 0)
                {
                    sReturn = "单据已发起审批,不可重复审批!";
                    return false;
                }
                //获取单据数据
                string sql = "select * from " + this.MvarItemKey + " where HInterID = " + lngBillKey;
                DataSet ds = oCn.RunProcReturn(sql, this.MvarItemKey);
                if (ds == null || ds.Tables[0].Rows.Count == 0)
                {
                    sReturn = "单据不存在!";
                    return false;
                }
                HBillNo = ds.Tables[0].Rows[0]["HBillNo"].ToString();
                //获取单据类型对应的默认审批流
                string sql1 = "select b.HInterID,b.HCheckItemID from Xt_CheckFlowMain as a " +
                                "inner join Xt_CheckFlowSub as b on a.HInterID = b.HInterID " +
                                "where a.HBillTypeID = '" + this.BillType + "' " +
                                "and a.HInterID = " + HCheckFlowID_select + " " +
                                "order by b.HFlowNo asc";
                DataSet ds1 = oCn.RunProcReturn(sql1, "Xt_CheckFlowMain");
                if (ds1 == null || ds1.Tables[0].Rows.Count == 0)
                {
                    sReturn = "默认审批流不存在!";
                    return false;
                }
                HCheckFlowID = ds1.Tables[0].Rows[0]["HInterID"].ToString();
                HCheckItemNowID = ds1.Tables[0].Rows[0]["HCheckItemID"].ToString();
                if (ds1.Tables[0].Rows.Count >= 2)
                {
                    HCheckItemNextID = ds1.Tables[0].Rows[1]["HCheckItemID"].ToString();
                }
                else
                {
                    HCheckItemNextID = "0";
                }
                oCn.BeginTran();
                //增加 å•据审批状态表 æ•°æ®
                for (int i = 0; i < ds1.Tables[0].Rows.Count; i++)
                {
                    string sql2 = "insert into Xt_BillCheckFlowStatus" +
                        "(HBillTypeID,HBillInterID,HBillNo,HCheckFlowID,HCheckItemID,HChecker,HCheckDate,HCheckNote) " +
                        "values(" +
                        "'" + this.BillType + "'," +
                        "" + lngBillKey + "," +
                        "'" + HBillNo + "'," +
                        "" + ds1.Tables[0].Rows[i]["HInterID"].ToString() + "," +
                        "" + ds1.Tables[0].Rows[i]["HCheckItemID"].ToString() + "," +
                        "" + "''" + "," +
                        "" + "''" + "," +
                        "" + "''" + "" +
                        ")";
                    oCn.RunProc(sql2);
                }
                //更新主表 å®¡æ‰¹æµ æ•°æ®
                string sql3 = "update " + this.MvarItemKey + " set HCheckFlowID = " + HCheckFlowID + ",HCheckItemNowID=" + HCheckItemNowID + ",HCheckItemNextID=" + HCheckItemNextID + " where HInterID = " + lngBillKey;
                oCn.RunProc(sql3);
                oCn.Commit();
                return true;
            }
            catch (Exception e)
            {
                sReturn += e.Message;
                return false;
            }
        }
    }
}
DBUtility/ÒµÎñµ¥¾Ý/ClsXt_BaseBill.cs
@@ -372,6 +372,166 @@
            }
        }
        //发起多级审批
        public bool startCheckFlow(Int64 lngBillKey, Int64 HCheckFlowID_select, ref string sReturn)
        {
            try
            {
                string HBillNo = "";                //单据号
                string HCheckFlowID = "";           //审批流ID
                string HCheckItemNowID = "";        //当前审核项目ID
                string HCheckItemNextID = "";       //待审核项目ID
                //判断是否已经发起审批
                string sql0 = "select * from Xt_BillCheckFlowStatus where HBillInterID = " + lngBillKey + " and HBillTypeID = '" + this.BillType + "'";
                DataSet ds0 = oCn.RunProcReturn(sql0, "Xt_BillCheckFlowStatus");
                if (ds0 != null && ds0.Tables[0].Rows.Count > 0)
                {
                    sReturn = "单据已发起审批,不可重复审批!";
                    return false;
                }
                //获取单据数据
                string sql = "select * from " + this.MvarItemKey + " where HInterID = " + lngBillKey;
                DataSet ds = oCn.RunProcReturn(sql, this.MvarItemKey);
                if (ds == null || ds.Tables[0].Rows.Count == 0)
                {
                    sReturn = "单据不存在!";
                    return false;
                }
                HBillNo = ds.Tables[0].Rows[0]["HBillNo"].ToString();
                //获取单据类型对应的默认审批流
                string sql1 = "select b.HInterID,b.HCheckItemID from Xt_CheckFlowMain as a " +
                                "inner join Xt_CheckFlowSub as b on a.HInterID = b.HInterID " +
                                "where a.HBillTypeID = '" + this.BillType + "' " +
                                "and a.HInterID = " + HCheckFlowID_select + " " +
                                "order by b.HFlowNo asc";
                DataSet ds1 = oCn.RunProcReturn(sql1, "Xt_CheckFlowMain");
                if (ds1 == null || ds1.Tables[0].Rows.Count == 0)
                {
                    sReturn = "默认审批流不存在!";
                    return false;
                }
                HCheckFlowID = ds1.Tables[0].Rows[0]["HInterID"].ToString();
                HCheckItemNowID = ds1.Tables[0].Rows[0]["HCheckItemID"].ToString();
                if (ds1.Tables[0].Rows.Count >= 2)
                {
                    HCheckItemNextID = ds1.Tables[0].Rows[1]["HCheckItemID"].ToString();
                }
                else
                {
                    HCheckItemNextID = "0";
                }
                oCn.BeginTran();
                //增加 å•据审批状态表 æ•°æ®
                for (int i = 0; i < ds1.Tables[0].Rows.Count; i++)
                {
                    string sql2 = "insert into Xt_BillCheckFlowStatus" +
                        "(HBillTypeID,HBillInterID,HBillNo,HCheckFlowID,HCheckItemID,HChecker,HCheckDate,HCheckNote) " +
                        "values(" +
                        "'" + this.BillType + "'," +
                        "" + lngBillKey + "," +
                        "'" + HBillNo + "'," +
                        "" + ds1.Tables[0].Rows[i]["HInterID"].ToString() + "," +
                        "" + ds1.Tables[0].Rows[i]["HCheckItemID"].ToString() + "," +
                        "" + "''" + "," +
                        "" + "''" + "," +
                        "" + "''" + "" +
                        ")";
                    oCn.RunProc(sql2);
                }
                //更新主表 å®¡æ‰¹æµ æ•°æ®
                string sql3 = "update " + this.MvarItemKey + " set HCheckFlowID = " + HCheckFlowID + ",HCheckItemNowID=" + HCheckItemNowID + ",HCheckItemNextID=" + HCheckItemNextID + ",HBillStatus=" + 6 + " where HInterID = " + lngBillKey;
                oCn.RunProc(sql3);
                oCn.Commit();
                return true;
            }
            catch (Exception e)
            {
                sReturn += e.Message;
                return false;
            }
        }
        //驳回
        public bool RejectCheckFlowProgress(Int64 lngBillKey, string HBillNo,string sUser, ref string sReturn)
        {
            if (isUse(lngBillKey, ref sReturn))
            {
                return false;
            }
            try
            {
                //开启事务
                oCn.BeginTran();
                //判断是否存在审核过的项目
                string sql0 = "select * from Xt_BillCheckFlowStatus where HBillInterID = " + lngBillKey + " and HBillTypeID = '" + this.BillType + "' and ISNULL(HChecker,'') <> ''";
                DataSet ds0 = oCn.RunProcReturn(sql0, "Xt_BillCheckFlowStatus");
                if (ds0 != null && ds0.Tables[0].Rows.Count == 0)
                {
                    sReturn = "单据不存在已经审核的项目!";
                    return false;
                }
                //获取需要驳回的审核项目
                sql0 = "select c.* from Xt_CheckFlowMain as a " +
                              "inner join Xt_CheckFlowSub as b on a.HInterID = b.HInterID " +
                              "inner join Xt_BillCheckFlowStatus as c on a.HBillTypeID = c.HBillTypeID and b.HCheckItemID = c.HCheckItemID " +
                              "where c.HBillTypeID = '" + this.BillType + "' and c.HBillInterID = " + lngBillKey + " " +
                              "order by b.HFlowNo asc";
                ds0 = oCn.RunProcReturn(sql0, "Xt_BillCheckFlowStatus");
                if (ds0 == null || ds0.Tables[0].Rows.Count == 0)
                {
                    sReturn = "驳回失败!原因:未发起审批!!";
                    return false;
                }
                //获取当前审核项目
                string HCheckFlowID = ds0.Tables[0].Rows[0]["HCheckFlowID"].ToString();             //审批流内码
                sql0 = "select * from " + MvarItemKey + " where HInterID = " + lngBillKey;
                ds0 = oCn.RunProcReturn(sql0, MvarItemKey);
                string HCheckItemNowID = ds0.Tables[0].Rows[0]["HCheckItemNowID"].ToString();       //当前审批项目内码
                //查找是否有权限
                string sql01 = "select * from Xt_CheckUserRight where HUserID = '" + sUser + "' and HCheckFlowInterID = " + HCheckFlowID + " and HCheckItemID = " + HCheckItemNowID + "";
                DataSet ds01 = oCn.RunProcReturn(sql01, "Xt_CheckUserRight");
                if (ds01.Tables[0].Rows.Count == 0)
                {
                    sReturn = "无权限!";
                    return false;
                }
                //更新 é©³å›žåˆ é™¤å®¡æ ¸æµçŠ¶æ€è¡¨
                string sql02 = "Delete Xt_BillCheckFlowStatus where HBillTypeID = '" + this.BillType + "' and HBillInterID=" + lngBillKey + " and HCheckFlowID=" + HCheckFlowID;
                oCn.RunProc(sql02);
                oCn.RunProc(" Update " + MvarItemKey + " set HChecker='',HCheckDate=null,HBillStatus=5 Where HInterID=" + lngBillKey.ToString());
                //写入日志
                string WorkList = "驳回单据,单据号:" + HBillNo;
                string SystemName = "LMES-" + MvarReportTitle + "模块";
                oCn.RunProc("Insert into  System_Log(GeginDate,userid,WorkstationName,WorkList,SystemName,NetUserName,State) values " +
                    "(getdate(),'" + sUser + "','" + ComputerName + "','" + WorkList + "','" + SystemName + "','" + IPAddress + "','驳回')"
                    );
                sReturn = "反审核单据成功!";
                oCn.Commit();
                return true;
            }
            catch (Exception e)
            {
                oCn.RollBack();
                sReturn = e.Message;
                throw (e);
            }
        }
        //审批流-反审核(包含反审核后控制、写入日志)    2024-01-31
        public bool AbandonCheck(SQLHelper.ClsCN oCN,Int64 lngBillKey, string HBillNo, string procName, string sUser, ref string sReturn)
        {
WebAPI/Controllers/CGGL/Cg_POOrderBillController.cs
@@ -2399,6 +2399,66 @@
        #endregion
        #region é‡‡è´­è®¢å•驳回
        [Route("Cg_POOrderBill/RejectCheckFlow_POOrderBill")]
        [HttpGet]
        public object RejectCheckFlow_POOrderBill(string HInterID,string CurUserID)
        {
            try
            {
                Int64 lngBillKey = 0;
                lngBillKey = DBUtility.ClsPub.isLong(HInterID);      //对HInterID进行类型的转换
                DAL.ClsCg_POOrderBill oBill = new DAL.ClsCg_POOrderBill();                              //实例化单据操作类,用于进行相关操作
                if (oBill.ShowBill(lngBillKey, ref DBUtility.ClsPub.sExeReturnInfo))                    //根据HInterID获取该单据的数据
                {
                    if (oBill.omodel.HBillStatus != 6)
                    {
                        objJsonResult.code = "0";
                        objJsonResult.count = 0;
                        objJsonResult.Message = "单据未在审核中不能驳回";
                        objJsonResult.data = null;
                        return objJsonResult;
                    }
                    //发起驳回
                    if (oBill.RejectCheckFlowProgress(lngBillKey, oBill.omodel.HBillNo,CurUserID, ref DBUtility.ClsPub.sExeReturnInfo) == true)
                    {
                        objJsonResult.code = "1";
                        objJsonResult.count = 1;
                        objJsonResult.Message = "驳回成功";
                        objJsonResult.data = null;
                        return objJsonResult;
                    }
                    else
                    {
                        objJsonResult.code = "0";
                        objJsonResult.count = 0;
                        objJsonResult.Message = "驳回失败失败!原因:" + DBUtility.ClsPub.sExeReturnInfo;
                        objJsonResult.data = null;
                        return objJsonResult;
                    }
                }
                else
                {
                    objJsonResult.code = "0";
                    objJsonResult.count = 0;
                    objJsonResult.Message = "单据不存在!原因:" + DBUtility.ClsPub.sExeReturnInfo;
                    objJsonResult.data = null;
                    return objJsonResult;
                }
            }
            catch (Exception e)
            {
                oCN.RollBack();
                objJsonResult.code = "0";
                objJsonResult.count = 0;
                objJsonResult.Message = "Exception!" + e.ToString();
                objJsonResult.data = null;
                return objJsonResult;
            }
        }
        #endregion
        #region é‡‡è´­è®¢å• å‘起审批
        [Route("Cg_POOrderBill/StartCheckFlow_POOrderBill")]
        [HttpGet]
@@ -2469,9 +2529,9 @@
        /// <param name="IsAudit">审核(0),反审核(1)</param>
        /// <param name="CurUserName">审核人</param>
        /// <returns></returns>
        [Route("Cg_POOrderBill/AuditXs_POOrderBill_Flow")]
        [Route("Cg_POOrderBill/AuditCg_POOrderBill_Flow")]
        [HttpGet]
        public object AuditXs_POOrderBill_Flow(int HInterID, int IsAudit, string CurUserName, string CurUserID)
        public object AuditCg_POOrderBill_Flow(int HInterID, int IsAudit, string CurUserName, string CurUserID)
        {
            //string ModRightNameCheck = "Cg_POOrderBill_Check";
            DBUtility.ClsPub.CurUserName = CurUserName;
@@ -2756,7 +2816,7 @@
                    string HCheckFlowID = ds0.Tables[0].Rows[0]["HCheckFlowID"].ToString();             //审批流内码
                    string HCheckItemNowID = "0";       //当前审批项目内码
                    string HCheckItemNextID = "0";     //待审批项目内码
                    if (oBill.omodel.HBillStatus <= 1)
                    if (oBill.omodel.HBillStatus == 6)
                    {
                        for (int i = 0; i < ds0.Tables[0].Rows.Count; i++)
                        {
@@ -2801,7 +2861,7 @@
                    oCN.RunProc(sql02);
                    //判断反审核的单据是否已经审核完成,若审核完成,反审核需要变更单据状态。
                    if (oBill.omodel.HBillStatus <= 1)
                    if (oBill.omodel.HBillStatus == 6)
                    {
                        //更新单据主表的审批流数据
                        string sql04 = "update " + oBill.MvarItemKey + " set HCheckItemNowID=" + HCheckItemNowID + ",HCheckItemNextID=" + HCheckItemNextID + " where HInterID = " + lngBillKey;
@@ -2815,13 +2875,13 @@
                    }
                    else
                    {
                        //更新单据主表的审批流数据
                        string sql04 = "update " + oBill.MvarItemKey + " set HCheckItemNowID=" + HCheckItemNowID + ",HCheckItemNextID=" + HCheckItemNextID + " where HInterID = " + lngBillKey;
                        oCN.RunProc(sql04);
                        //反审核提交AbandonCheck
                        if (oBill.AbandonCheck(oCN, oBill.omodel.HInterID, oBill.omodel.HBillNo, "h_p_Xs_SeOrderBill_AfterUnCheckCtrl", CurUserName, ref DBUtility.ClsPub.sExeReturnInfo) == true)
                        {
                            //更新单据主表的审批流数据
                            string sql04 = "update " + oBill.MvarItemKey + " set HCheckItemNowID=" + HCheckItemNowID + ",HCheckItemNextID=" + HCheckItemNextID + ",HBillStatus=6 "+" where HInterID = " + lngBillKey;
                            oCN.RunProc(sql04);
                            objJsonResult.code = "1";
                            objJsonResult.count = 1;
                            objJsonResult.Message = "反审核成功";
WebAPI/Controllers/»ù´¡×ÊÁÏ/»ù´¡×ÊÁÏ/Xt_CheckFlowProgressBillController.cs
@@ -8,6 +8,7 @@
using System.Net.Http;
using System.Web.Http;
using WebAPI.Models;
using System.Windows.Forms;
namespace WebAPI.Controllers.基础资料.基础资料
{
@@ -130,5 +131,6 @@
            }
        }
        #endregion
    }
}
WebAPI/Properties/PublishProfiles/FolderProfile.pubxml.user
@@ -23,12 +23,12 @@
    <File Include="bin/BLL.dll">
      <publishTime>11/09/2022 16:02:08</publishTime>
      <publishTime>11/02/2022 22:03:01</publishTime>
      <publishTime>08/02/2024 14:00:28</publishTime>
      <publishTime>08/05/2024 14:51:12</publishTime>
    </File>
    <File Include="bin/BLL.pdb">
      <publishTime>11/09/2022 16:02:08</publishTime>
      <publishTime>11/02/2022 22:03:01</publishTime>
      <publishTime>08/02/2024 14:00:28</publishTime>
      <publishTime>08/05/2024 14:51:12</publishTime>
    </File>
    <File Include="bin/BouncyCastle.Crypto.dll">
      <publishTime>12/18/2020 05:32:28</publishTime>
@@ -36,12 +36,12 @@
    <File Include="bin/DAL.dll">
      <publishTime>11/09/2022 16:02:06</publishTime>
      <publishTime>11/02/2022 22:02:58</publishTime>
      <publishTime>08/02/2024 14:00:25</publishTime>
      <publishTime>08/05/2024 14:51:10</publishTime>
    </File>
    <File Include="bin/DAL.pdb">
      <publishTime>11/09/2022 16:02:06</publishTime>
      <publishTime>11/02/2022 22:02:58</publishTime>
      <publishTime>08/02/2024 14:00:25</publishTime>
      <publishTime>08/05/2024 14:51:10</publishTime>
    </File>
    <File Include="bin/Dapper.dll">
      <publishTime>07/22/2016 22:52:40</publishTime>
@@ -49,12 +49,12 @@
    <File Include="bin/DBUtility.dll">
      <publishTime>11/02/2022 22:02:56</publishTime>
      <publishTime>11/15/2022 13:55:23</publishTime>
      <publishTime>08/02/2024 14:00:20</publishTime>
      <publishTime>08/05/2024 14:51:05</publishTime>
    </File>
    <File Include="bin/DBUtility.pdb">
      <publishTime>11/09/2022 16:01:58</publishTime>
      <publishTime>11/02/2022 22:02:56</publishTime>
      <publishTime>08/02/2024 14:00:20</publishTime>
      <publishTime>08/05/2024 14:51:05</publishTime>
    </File>
    <File Include="bin/Grpc.Core.Api.dll">
      <publishTime>03/22/2022 13:17:26</publishTime>
@@ -110,12 +110,12 @@
    <File Include="bin/Model.dll">
      <publishTime>11/09/2022 16:02:01</publishTime>
      <publishTime>11/02/2022 22:02:56</publishTime>
      <publishTime>08/02/2024 14:00:21</publishTime>
      <publishTime>08/05/2024 14:51:05</publishTime>
    </File>
    <File Include="bin/Model.pdb">
      <publishTime>11/09/2022 16:02:01</publishTime>
      <publishTime>11/02/2022 22:02:56</publishTime>
      <publishTime>08/02/2024 14:00:21</publishTime>
      <publishTime>08/05/2024 14:51:05</publishTime>
    </File>
    <File Include="bin/Models/ClsSc_MouldScrapOutBillMain.cs">
      <publishTime>04/15/2024 12:55:45</publishTime>
@@ -150,33 +150,33 @@
    <File Include="bin/Pub_Class.dll">
      <publishTime>11/09/2022 16:01:56</publishTime>
      <publishTime>11/02/2022 22:02:54</publishTime>
      <publishTime>08/02/2024 14:00:19</publishTime>
      <publishTime>08/05/2024 14:51:03</publishTime>
    </File>
    <File Include="bin/Pub_Class.pdb">
      <publishTime>11/09/2022 16:01:56</publishTime>
      <publishTime>11/02/2022 22:02:54</publishTime>
      <publishTime>08/02/2024 14:00:19</publishTime>
      <publishTime>08/05/2024 14:51:03</publishTime>
    </File>
    <File Include="bin/Pub_Control.dll">
      <publishTime>11/09/2022 16:01:57</publishTime>
      <publishTime>11/02/2022 22:02:55</publishTime>
      <publishTime>08/02/2024 14:00:19</publishTime>
      <publishTime>08/05/2024 14:51:04</publishTime>
    </File>
    <File Include="bin/Pub_Control.pdb">
      <publishTime>11/09/2022 16:01:57</publishTime>
      <publishTime>11/02/2022 22:02:55</publishTime>
      <publishTime>08/02/2024 14:00:19</publishTime>
      <publishTime>08/05/2024 14:51:04</publishTime>
    </File>
    <File Include="bin/RestSharp.dll">
      <publishTime>08/31/2012 06:22:50</publishTime>
    </File>
    <File Include="bin/SQLHelper.dll">
      <publishTime>08/02/2024 14:00:20</publishTime>
      <publishTime>08/05/2024 14:51:04</publishTime>
    </File>
    <File Include="bin/SQLHelper.pdb">
      <publishTime>11/09/2022 16:01:57</publishTime>
      <publishTime>11/02/2022 22:02:55</publishTime>
      <publishTime>08/02/2024 14:00:20</publishTime>
      <publishTime>08/05/2024 14:51:04</publishTime>
    </File>
    <File Include="bin/stdole.dll">
      <publishTime>05/09/2021 13:35:37</publishTime>
@@ -295,7 +295,7 @@
    <File Include="bin/WebAPI.dll">
      <publishTime>11/14/2022 11:23:59</publishTime>
      <publishTime>11/02/2022 22:03:04</publishTime>
      <publishTime>08/02/2024 14:00:35</publishTime>
      <publishTime>08/05/2024 14:51:19</publishTime>
    </File>
    <File Include="bin/WebAPI.dll.config">
      <publishTime>12/15/2021 17:59:43</publishTime>
@@ -303,7 +303,7 @@
    <File Include="bin/WebAPI.pdb">
      <publishTime>11/14/2022 11:23:59</publishTime>
      <publishTime>11/02/2022 22:03:04</publishTime>
      <publishTime>08/02/2024 14:00:35</publishTime>
      <publishTime>08/05/2024 14:51:19</publishTime>
    </File>
    <File Include="bin/WebGrease.dll">
      <publishTime>07/18/2013 01:03:52</publishTime>
@@ -512,7 +512,7 @@
    <File Include="Web.config">
      <publishTime>11/14/2022 11:24:08</publishTime>
      <publishTime>11/02/2022 22:03:20</publishTime>
      <publishTime>08/02/2024 14:01:43</publishTime>
      <publishTime>08/05/2024 14:53:24</publishTime>
    </File>
  </ItemGroup>
</Project>