Commit a4a9cd2d by zhouminghui

会计流水模块

parent 5a54f711
......@@ -7,6 +7,7 @@
<ItemGroup>
<PackageReference Include="Newtonsoft.Json" Version="10.0.1" />
<PackageReference Include="NPOI" Version="2.4.1" />
<PackageReference Include="Qiniu.Shared" Version="7.2.15" />
<PackageReference Include="StackExchange.Redis" Version="2.1.28" />
</ItemGroup>
......
using Qiniu.Http;
using Qiniu.IO;
using Qiniu.IO.Model;
using Qiniu.Util;
using System;
using System.Collections.Generic;
using System.IO;
using System.Text;
namespace Bailun.DC.Common
{
public class QiNiuHelper
{
private static string AK = "";
private static string SK = "";
/// <summary>
///
/// </summary>
/// <param name="ak">AccessKey</param>
/// <param name="sk">SecretKey</param>
public QiNiuHelper(string ak, string sk)
{
AK = ak;
SK = sk;
}
/// <summary>
/// 上传文件到七牛云
/// </summary>
public HttpResult UploadStream(byte[] content, string filename)
{
// 生成(上传)凭证时需要使用此Mac
// 这个示例单独使用了一个Settings类,其中包含AccessKey和SecretKey
// 实际应用中,请自行设置您的AccessKey和SecretKey
Mac mac = new Mac(AK, SK);
string bucket = "bailun-data-center";
string saveKey = filename;
//设置区域
Qiniu.Common.Config.AutoZone(AK, bucket, false);
// 上传策略,参见
// https://developer.qiniu.com/kodo/manual/put-policy
PutPolicy putPolicy = new PutPolicy();
// 如果需要设置为"覆盖"上传(如果云端已有同名文件则覆盖),请使用 SCOPE = "BUCKET:KEY"
putPolicy.Scope = bucket + ":" + saveKey;
//putPolicy.Scope = bucket;
// 上传策略有效期(对应于生成的凭证的有效期)
putPolicy.SetExpires(3600);
// 上传到云端多少天后自动删除该文件,如果不设置(即保持默认默认)则不删除
//putPolicy.DeleteAfterDays = 7;
// 生成上传凭证,参见
// https://developer.qiniu.com/kodo/manual/upload-token
string jstr = putPolicy.ToJsonString();
string token = Auth.CreateUploadToken(mac, jstr);
FormUploader fu = new FormUploader();
var result = fu.UploadStream(new MemoryStream(content), filename, token);
return result;
}
}
}
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>netcoreapp2.1</TargetFramework>
<LangVersion>latest</LangVersion>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Dapper" Version="2.0.30" />
<PackageReference Include="Microsoft.Extensions.Hosting" Version="3.0.0" />
<PackageReference Include="MySql.Data" Version="8.0.18" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\Bailun.DC.Services\Bailun.DC.Services.csproj" />
</ItemGroup>
</Project>
FROM microsoft/dotnet:2.1-runtime AS base
WORKDIR /app
RUN /bin/cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo 'Asia/Shanghai' >/etc/timezone
FROM microsoft/dotnet:2.1-sdk AS build
WORKDIR /src
COPY Bailun.DC.ExportTask/Bailun.DC.ExportTask.csproj Bailun.DC.ExportTask/
COPY Bailun.DC.Services/Bailun.DC.Services.csproj Bailun.DC.Services/
RUN dotnet restore Bailun.DC.ExportTask/Bailun.DC.ExportTask.csproj
COPY . .
WORKDIR /src/Bailun.DC.ExportTask
RUN dotnet build Bailun.DC.ExportTask.csproj -c Release -o /app
FROM build AS publish
RUN dotnet publish Bailun.DC.ExportTask.csproj -c Release -o /app
FROM base AS final
WORKDIR /app
COPY --from=publish /app .
ENTRYPOINT ["dotnet", "Bailun.DC.ExportTask.dll"]
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using System;
using System.Threading.Tasks;
namespace Bailun.DC.ExportTask
{
class Program
{
static async Task Main(string[] args)
{
Console.WriteLine("启动新数据中心导出任务 " + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
var builder = new HostBuilder().ConfigureServices((hostContext, services) =>
{
services.AddHostedService<Services>();
});
await builder.RunConsoleAsync();
}
}
}
using System;
using System.Collections.Generic;
using System.Text;
using MySql.Data.MySqlClient;
using Dapper;
using Bailun.DC.Models;
using Bailun.DC.Common;
using System.Threading;
using Microsoft.Extensions.Hosting;
using System.Threading.Tasks;
using System.Linq;
using Bailun.DC.Services.WebApiService;
namespace Bailun.DC.ExportTask
{
public class Services : BackgroundService
{
private Timer _timer;
private bool Run;//等待上一个任务执行完成才能执行新的任务
protected override Task ExecuteAsync(CancellationToken stoppingToken)
{
_timer = new Timer(DoWork, null, TimeSpan.Zero, TimeSpan.FromMinutes(1));
return Task.CompletedTask;
}
private void DoWork(object state)
{
if (!Run)
{
try
{
Run = true;
new FinanceService().SyncExprotTask();
}
catch (Exception ex)
{
Console.WriteLine($"同步月销售利润错误,堆栈信息:{ex.Message}");
}
finally
{
Run = false;
}
}
}
}
}
{
"QiNiu": {
"AccessKey": "QSvtvN4Ons1CiNzaMGqx8XmDaiM1L0ZqSwJ2YoTn",
"SecretKey": "yagRd-cBOVhkRGGT-o_reMqNVjI8_k7YwoTXkhrm",
"DCFileUrl": "http://dcfile.blsct.com"
}
}
\ No newline at end of file
......@@ -8,18 +8,27 @@ namespace Bailun.DC.Models.Common
/// Api返回参数
/// </summary>
/// <typeparam name="T"></typeparam>
public class CommonApiResponseDto<T>
public class CommonApiResponseDto<T> : BaseCommonApiResponseDto
{
/// <summary>
/// 指示是否成功
/// 返回的业务数据
/// </summary>
public bool IsSuccess { get; set; } = true;
public T Data { get; set; }
}
public class CommonApiResponseDto : BaseCommonApiResponseDto
{
/// <summary>
/// 返回的业务数据
/// </summary>
public T Data { get; set; }
public object Data { get; set; }
}
public class BaseCommonApiResponseDto
{
/// <summary>
/// 指示是否成功
/// </summary>
public bool IsSuccess { get; set; } = true;
/// <summary>
/// 消息
/// </summary>
......
using System;
using System.Collections.Generic;
using System.Text;
namespace Bailun.DC.Models.WebApiModels
{
public class AccountingSubjectInput : Common.Page.PageRequest
{
public int? DataType { get; set; }
public string PlatForm { get; set; }
public string Site { get; set; }
public string[] BillTime { get; set; }
public string BillMonth { get; set; }
}
public class AccountingSubjectOptionsData
{
public List<PlatformWithSite> PlatformWithSite { get; set; }
public List<string> DataCol { get; set; }
}
public class PlatformWithSite
{
public string platform { get; set; }
public string website { get; set; }
}
}
......@@ -22,5 +22,6 @@ namespace Bailun.DC.Models.WebApiModels
public string ExchangeRate { get; set; }
public decimal? AmountValRmb { get; set; }
public string Month { get; set; }
public int Total { get; set; }
}
}
......@@ -5,7 +5,7 @@ using System.Text;
namespace Bailun.DC.Models
{
public class dc_exprot_task
public class dc_export_task
{
public int id { get; set; }
public string task_title { get; set; }
......
......@@ -11,6 +11,7 @@ using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Data;
using System.IO;
using System.Linq;
using System.Net.Http;
using System.Reflection;
......@@ -218,8 +219,8 @@ and s2.company_type = @CorporateEntity ";
if (input.IsPage)
{
sql += "limit @limit offset @offset";
para.Add("limit", (input.PageIndex - 1) * input.PageNumber);
para.Add("offset", input.PageNumber);
para.Add("limit", input.PageNumber);
para.Add("offset", (input.PageIndex - 1) * input.PageNumber);
}
}
var data = SimpleCRUD.Query<ManagementCost>(sql, para, GlobalConfig.ConnectionString).ToList();
......@@ -1162,6 +1163,150 @@ AND financecategoryname LIKE '{financecategory.Replace("产品", "")}%' ";
}
#endregion
#region 会计科目
public CommonApiResponseDto<PageResult<List<MonthPlatformProfitDto>>> GetAccountingSubjectFlowPage(AccountingSubjectInput query)
{
var tasks = new List<Task>();
var result = new PageResult<List<MonthPlatformProfitDto>>();
var pageData = new List<MonthPlatformProfitDto>();
var sumData = new MonthPlatformProfitDto();
tasks.Add(Task.Factory.StartNew(() =>
{
var sql = BuildAccountingSubjectFlowSql(query, out DynamicParameters param);
pageData = SimpleCRUD.Query<MonthPlatformProfitDto>(sql, param, GlobalConfig.ConnectionString_DW).ToList();
}));
tasks.Add(Task.Factory.StartNew(() =>
{
var sqlSum = BuildAccountingSubjectFlowSql(query, out DynamicParameters paramSum, true);
sumData = SimpleCRUD.Query<MonthPlatformProfitDto>(sqlSum, paramSum, GlobalConfig.ConnectionString_DW).FirstOrDefault();
}));
Task.WaitAll(tasks.ToArray());
sumData.Currency = "合计";
pageData.Add(sumData);
result = result.ToPageResult(query.PageIndex, sumData.Total, pageData);
return new CommonApiResponseDto<PageResult<List<MonthPlatformProfitDto>>> { Data = result };
}
public string BuildAccountingSubjectFlowSql(AccountingSubjectInput query, out DynamicParameters sqlparam, bool isSum = false, bool isPage = true)
{
StringBuilder sql = new StringBuilder();
if (!isSum)
{
sql.Append(@"select t1.platform AS PlatForm,t1.website AS WebSite,t1.orderno AS Orderno,
t1.datatime AS DataTime,t1.amountval AS AmountVal,
t2.feetype AS FeeType,t2.subjectcode AS Subjectcode,t2.projectcode AS ProjectCode,
t2.financecategory AS FinanceCategory,t2.datacenter_col AS DatacenterCol,t2.currency AS Currency,
t1.exchange_rate AS ExchangeRate,t1.amountval_rmb AS AmountValRmb,t1.month AS Month from order_fee_value_amazon t1
join order_fee_config t2 on t1.order_fee_config_id=t2.id ");
}
else
{
sql.Append(@"select sum(amountval) as AmountVal,sum(amountval_rmb) as AmountValRmb,count(*) as Total from order_fee_value_amazon t1
join order_fee_config t2 on t1.order_fee_config_id = t2.id ");
}
sqlparam = new DynamicParameters();
//if (!string.IsNullOrEmpty(query.DataCenterCol))
//{
// sql += $" and t2.datacenter_col=@datacenter_col";
// sqlparam.Add("datacenter_col", query.DataCenterCol);
//}
sql.Append(" where t1.amountval!=0 ");
if (query.DataType.HasValue)
{
sql.Append(" and t1.datatype = @datatype ");
sqlparam.Add("datatype", query.DataType.Value);
}
if (!string.IsNullOrWhiteSpace(query.BillMonth))
{
sql.Append(" and t1.month= @month ");
sqlparam.Add("month", query.BillMonth);
}
if (!string.IsNullOrEmpty(query.PlatForm))
{
sql.Append(" and t1.platform = @platform ");
sqlparam.Add("platform", query.PlatForm);
}
if (!string.IsNullOrEmpty(query.Site))
{
sql.Append(" and t1.website = @website ");
sqlparam.Add("website", query.Site);
}
//if (!string.IsNullOrEmpty(orderno))
//{
// sql += " and t1.orderno=@orderno";
// sqlparam.Add("orderno", orderno);
//}
if (query.BillTime != null && query.BillTime.Length == 2 && !string.IsNullOrWhiteSpace(query.BillTime[0]))
{
sql.Append(" and t1.datatime >= @start and t1.datatime < @end ");
sqlparam.Add("start", Convert.ToDateTime(query.BillTime[0]));
sqlparam.Add("end", Convert.ToDateTime(query.BillTime[1]).AddDays(1));
}
if (isPage && !isSum)
{
sql.Append(" order by t1.datatime limit @limit offset @offset");
sqlparam.Add("offset", (query.PageIndex - 1) * query.PageNumber);
sqlparam.Add("limit", query.PageNumber);
}
return sql.ToString();
}
public CommonApiResponseDto<AccountingSubjectOptionsData> GetOptionsData()
{
var sql = "select platform,website from order_fee_col";
var platformList = SimpleCRUD.Query<PlatformWithSite>(sql, null, GlobalConfig.ConnectionString_DW).ToList();
var sqlcol = "select datacenter_col from order_fee_config group by datacenter_col";
var colList = SimpleCRUD.Query<string>(sqlcol, null, GlobalConfig.ConnectionString_DW).ToList();
return new CommonApiResponseDto<AccountingSubjectOptionsData> { Data = new AccountingSubjectOptionsData { DataCol = colList, PlatformWithSite = platformList } };
}
public CommonApiResponseDto ExprotAccountSubject(AccountingSubjectInput query)
{
var sql = BuildAccountingSubjectFlowSql(query, out DynamicParameters param, false, true);
var data = SimpleCRUD.Query<MonthPlatformProfitDto>(sql, param, GlobalConfig.ConnectionString_DW).ToList();
var table = new DataTable();
table.Columns.Add("平台");
table.Columns.Add("站点");
table.Columns.Add("账单时间");
table.Columns.Add("单号");
table.Columns.Add("费用字段说明");
table.Columns.Add("财务分类归集说明");
table.Columns.Add("数据中心费用类型");
table.Columns.Add("会计科目编码");
table.Columns.Add("项目编码");
table.Columns.Add("币种");
table.Columns.Add("原币金额");
table.Columns.Add("汇率");
table.Columns.Add("RMB金额");
table.Columns.Add("月份");
foreach (var item in data)
{
table.Rows.Add(item.PlatForm,
item.WebSite,
item.DataTime,
item.Orderno,
item.FeeType,
item.FinanceCategory,
item.DatacenterCol,
item.Subjectcode,
item.ProjectCode,
item.Currency,
item.AmountVal,
item.ExchangeRate,
item.AmountValRmb,
item.Month);
}
var filename = $"会计流水账单" + DateTime.Now.ToString("yyyyMMddHHmmss") + ".xlsx";
var result = UploadFile(table, filename);
if (result.Code == 200)
{
return new CommonApiResponseDto { Message = $"http://dcfile.blsct.com/{filename}" };
}
return new CommonApiResponseDto { IsSuccess = false, Message = result.RefText + "_" + result.Text };
}
#endregion
#region 同步数据
/// <summary>
/// 拉取旧的dc_month_sales_profit表数据到新表,生成新的汇总数据
......@@ -1453,7 +1598,7 @@ AND financecategoryname LIKE '{financecategory.Replace("产品", "")}%' ";
financecategoryname = name,
summary_type = 0
}));
var arry = Enumerable.Range(1, 100).ToArray();
//成本
list.AddRange(GetPlatformTypeMonthlyStatistics(time, name, true, true).Select(x => new dc_month_sales_profit_order_summary
{
......@@ -1516,7 +1661,7 @@ AND platform_type = '{item.platform_type}' AND financecategoryname = '{item.fina
try
{
//TODO:添加一条为未执行的任务到数据库
var model = new dc_exprot_task();
var model = new dc_export_task();
model.create_user = input.CreateName;
model.task_json = input.TaskJson;
model.task_title = input.TaskTitle;
......@@ -1541,34 +1686,100 @@ AND platform_type = '{item.platform_type}' AND financecategoryname = '{item.fina
}
public void SyncExprotTask()
{
//TODO:获取需要导出的任务
var sql = "SELECT * FROM de_exprot_task WHERE task_status = 1 ";
var exprotTask = SimpleCRUD.Query<dc_exprot_task>(sql, null, GlobalConfig.ConnectionString).ToList();
foreach (var item in exprotTask)
try
{
//TODO:根据任务进行区分生成文件到服务器
switch (item.task_type)//task_type和前端约定好的
//TODO:获取需要导出的任务
var sql = "SELECT * FROM dc_export_task WHERE task_status = 1 order by create_date desc limit 1 ";
var exprotTask = SimpleCRUD.Query<dc_export_task>(sql, null, GlobalConfig.ConnectionString).FirstOrDefault();
if (exprotTask != null)
{
case "":
break;
default:
break;
Console.WriteLine($"{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}开始执行:【{exprotTask.task_type}】");
UpateExprotTask(exprotTask.id, 2, "", DateTime.Now);
//TODO:根据任务进行区分生成文件到服务器
var result = new CommonApiResponseDto();
switch (exprotTask.task_type)//task_type和前端约定好的
{
//TODO:上传文件到七牛云
case "会计流水":
var json = JsonConvert.DeserializeObject<AccountingSubjectInput>(exprotTask.task_json);
result = ExprotAccountSubject(json);
break;
default:
break;
}
//TODO:保存七牛云返回的链接到导出任务并更新任务为执行完成状态
if (result.Code == 200)
{
UpateExprotTask(exprotTask.id, 3, result.Message, null, DateTime.Now);
}
else
{
UpateExprotTask(exprotTask.id, 0, result.Message, null, DateTime.Now);
}
Console.WriteLine($"{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}{exprotTask.task_type}】执行完成");
}
else
{
Console.WriteLine("不存在需要导出的任务!");
}
//TODO:上传文件到七牛云
//TODO:保存七牛云返回的链接到导出任务并更新任务为执行完成状态
}
catch (Exception e)
{
throw e;
}
}
private string MonthProfitOrderDetailPageInputDto()
/// <summary>
/// 更新任务状态
/// </summary>
/// <param name="id"></param>
/// <param name="status"></param>
/// <param name="result"></param>
/// <param name="start"></param>
/// <param name="end"></param>
public void UpateExprotTask(int id,int status,string result,DateTime? start = null,DateTime? end = null)
{
//MonthProfitOrderDetailPageInputDto
return "";
var sql = new StringBuilder();
var param = new DynamicParameters();
sql.Append($"Update dc_export_task set task_status = @status ");
param.Add("status", status);
if (!string.IsNullOrWhiteSpace(result))
{
sql.Append($", task_result = @result ");
param.Add("result", result);
}
if (start.HasValue)
{
sql.Append($", start_date = @time ");
param.Add("time", start);
}
if (end.HasValue)
{
sql.Append($", end_date = @time ");
param.Add("time", end);
}
sql.Append($" Where id = {id}");
SimpleCRUD.ExecuteSql(sql.ToString(), GlobalConfig.ConnectionString, param);
}
public CommonApiResponseDto<List<dc_export_task>> GetExportTaskPage()
{
var sql = "SELECT * FROM dc_export_task order by create_date desc ";
var data = SimpleCRUD.Query<dc_export_task>(sql, null, GlobalConfig.ConnectionString).ToList();
return new CommonApiResponseDto<List<dc_export_task>> { Data = data };
}
#endregion
#region Upload
private Qiniu.Http.HttpResult UploadFile(DataTable table, string filename)
{
var filepath = Directory.GetCurrentDirectory() + "\\Files\\Report\\" + DateTime.Now.ToString("yyyyMMdd") + "\\";
ExcelHelper.DataTableToExcel(table, filepath + filename, true);
var content = File.ReadAllBytes(filepath + filename);
//var accesskey = ConfigHelper.AppSetting("QiNiu:AccessKey");
//var secretkey = ConfigHelper.AppSetting("QiNiu:SecretKey");
//Console.WriteLine($"accesskey:【{accesskey}】");
//Console.WriteLine($"secretkey:【{secretkey}】");
var qiuniu = new QiNiuHelper("QSvtvN4Ons1CiNzaMGqx8XmDaiM1L0ZqSwJ2YoTn", "yagRd-cBOVhkRGGT-o_reMqNVjI8_k7YwoTXkhrm");
return qiuniu.UploadStream(content, filename);
}
//var filepath = Directory.GetCurrentDirectory() + "\\Files\\Report\\" + DateTime.Now.ToString("yyyyMMdd") + "\\";
//var filename = $"亚马逊{month.Month}月凭证" + DateTime.Now.ToString("yyyyMMddHHmmss") + ".xls";
//ExcelHelper.DataTableToExcel(table, filepath + filename, true);
#endregion
}
}
......@@ -57,8 +57,8 @@ namespace Bailun.DC.SyncMonthSalesProfitNew
}
else
{
var data = new FinanceService().GetTest();
Console.WriteLine(Newtonsoft.Json.JsonConvert.SerializeObject(data));
//var data = new FinanceService().GetTest();
//Console.WriteLine(Newtonsoft.Json.JsonConvert.SerializeObject(data));
Console.WriteLine($"现在是 【{now.Hour}点】,未到同步时间,本次同步结束~");
}
}
......
......@@ -574,17 +574,43 @@ namespace Bailun.DC.WebApi.Controllers
[HttpGet("syncMonthSalesProfiOrderDetail")]
public bool SyncMonthSalesProfiOrderDetail(string date)
=>new FinanceService().SyncMonthSalesProfiOrderDetail(date);
#endregion
#region 会计科目
/// <summary>
/// 获取财务会计科目流水分页
/// </summary>
/// <param name="query"></param>
/// <returns></returns>
[HttpPost("getAccountingSubjectFlowPage")]
public CommonApiResponseDto<PageResult<List<MonthPlatformProfitDto>>> GetAccountingSubjectFlowPage(AccountingSubjectInput query)
=> new FinanceService().GetAccountingSubjectFlowPage(query);
/// <summary>
/// 获取查询的下拉列表数据
/// </summary>
/// <returns></returns>
[HttpGet("getOptionsData")]
public CommonApiResponseDto<AccountingSubjectOptionsData> GetOptionsData()
=> new FinanceService().GetOptionsData();
#endregion
#region 导出
/// <summary>
/// 添加导出任务
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
[HttpPost("addExportTask")]
public object AddExportTask(AddExprotTaskInput input)
public CommonApiResponseDto<bool> AddExportTask(AddExprotTaskInput input)
{
input.CreateName = HttpContext.User.GetUserName();
return new FinanceService().AddExprotTask(input);
var result = new FinanceService().AddExprotTask(input);
return new CommonApiResponseDto<bool> { Data = result };
}
[HttpGet("getExportTaskPage")]
public object GetExportTaskPage()
=> new FinanceService().GetExportTaskPage();
#endregion
}
}
......@@ -19,5 +19,10 @@
"BrowseLogSetting": {
"Url": "http://10.0.0.11:5001/operationloginfo/addoperationloginfo",
"CanLog": "yes"
},
"QiNiu": {
"AccessKey": "QSvtvN4Ons1CiNzaMGqx8XmDaiM1L0ZqSwJ2YoTn",
"SecretKey": "yagRd-cBOVhkRGGT-o_reMqNVjI8_k7YwoTXkhrm",
"DCFileUrl": "http://dcfile.blsct.com"
}
}
\ No newline at end of file
......@@ -19,5 +19,10 @@
"BrowseLogSetting": {
"Url": "http://10.0.0.11:5001/operationloginfo/addoperationloginfo",
"CanLog": "yes"
},
"QiNiu": {
"AccessKey": "QSvtvN4Ons1CiNzaMGqx8XmDaiM1L0ZqSwJ2YoTn",
"SecretKey": "yagRd-cBOVhkRGGT-o_reMqNVjI8_k7YwoTXkhrm",
"DCFileUrl": "http://dcfile.blsct.com"
}
}
\ No newline at end of file
......@@ -19,5 +19,10 @@
"BrowseLogSetting": {
"Url": "http://10.0.0.11:5001/operationloginfo/addoperationloginfo",
"CanLog": "yes"
},
"QiNiu": {
"AccessKey": "QSvtvN4Ons1CiNzaMGqx8XmDaiM1L0ZqSwJ2YoTn",
"SecretKey": "yagRd-cBOVhkRGGT-o_reMqNVjI8_k7YwoTXkhrm",
"DCFileUrl": "http://dcfile.blsct.com"
}
}
\ No newline at end of file
......@@ -91,6 +91,8 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Bailun.DC.WebApi", "Bailun.
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Bailun.DC.SyncMonthSalesProfitNew", "Bailun.DC.SyncMonthSalesProfitNew\Bailun.DC.SyncMonthSalesProfitNew.csproj", "{DEAD70F9-01C4-4178-AB0B-1C4874AA7A61}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Bailun.DC.ExportTask", "Bailun.DC.ExportTask\Bailun.DC.ExportTask.csproj", "{C4C4990D-14DC-4B76-A7EB-6F3FC5BE8B94}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
......@@ -269,6 +271,10 @@ Global
{DEAD70F9-01C4-4178-AB0B-1C4874AA7A61}.Debug|Any CPU.Build.0 = Debug|Any CPU
{DEAD70F9-01C4-4178-AB0B-1C4874AA7A61}.Release|Any CPU.ActiveCfg = Release|Any CPU
{DEAD70F9-01C4-4178-AB0B-1C4874AA7A61}.Release|Any CPU.Build.0 = Release|Any CPU
{C4C4990D-14DC-4B76-A7EB-6F3FC5BE8B94}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{C4C4990D-14DC-4B76-A7EB-6F3FC5BE8B94}.Debug|Any CPU.Build.0 = Debug|Any CPU
{C4C4990D-14DC-4B76-A7EB-6F3FC5BE8B94}.Release|Any CPU.ActiveCfg = Release|Any CPU
{C4C4990D-14DC-4B76-A7EB-6F3FC5BE8B94}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
......@@ -310,6 +316,7 @@ Global
{2215D072-9F97-45DD-AD4D-2691581B5305} = {AE2CE86A-8538-4142-920F-684DCF47C064}
{B0E4B05A-2330-46E1-8CF7-C6D69DBB7850} = {AE2CE86A-8538-4142-920F-684DCF47C064}
{DEAD70F9-01C4-4178-AB0B-1C4874AA7A61} = {AE2CE86A-8538-4142-920F-684DCF47C064}
{C4C4990D-14DC-4B76-A7EB-6F3FC5BE8B94} = {AE2CE86A-8538-4142-920F-684DCF47C064}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {6E53AF28-A282-4FB0-A769-EAEA9769C02A}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment