Commit 102669d7 by 泽锋 李

fix

parent 0ace8c13
...@@ -53,7 +53,7 @@ where t1.`update_time`>=@c_time ...@@ -53,7 +53,7 @@ where t1.`update_time`>=@c_time
{ {
// 初始化数据才会进啦 // 初始化数据才会进啦
sql += " and t2.hq_type!='国内仓' "; sql += " and t2.hq_type!='国内仓' ";
sql += " and not EXISTS ( select * from dc_average_warehouse as ta where t1.warehouse_code =ta.warehouse_code and t1.bailun_sku =ta.bailun_sku and (ta.transfer_delivery_empty>0 or ta.abroad_inbound_delivery_ocean>0 ) ) "; sql += " and not EXISTS ( select * from dc_average_warehouse as ta where t1.warehouse_code =ta.warehouse_code and t1.bailun_sku =ta.bailun_sku and (ta.update_time>'2021-03-12' ) ) ";
} }
sql += " group by t1.bailun_sku,t1.warehouse_code "; sql += " group by t1.bailun_sku,t1.warehouse_code ";
return _connection.Query<temp_sku_dto>(sql, parameters,commandTimeout:0); return _connection.Query<temp_sku_dto>(sql, parameters,commandTimeout:0);
......
using AutoTurnOver.Models;
using Dapper;
using System;
using System.Collections.Generic;
using System.Text;
using System.Linq;
using AutoTurnOver.Utility;
namespace AutoTurnOver.DB
{
/// <summary>
/// 库容查询
/// </summary>
public class dc_base_storage_capacity_dao : connectionHelper
{
public static List<dc_base_storage_capacity_dto> StorageCapacityList(dc_base_storage_capacity_search_dto m, int offset, int limit, ref int total)
{
var list = new List<dc_base_storage_capacity_dto>();
DynamicParameters parameters = new DynamicParameters();
try
{
var sql = @"select t1.*,t2.`warehouse_name` as 'warehouse_name' from dc_base_storage_capacity as t1
left join dc_base_warehouse as t2 on t1.warehouse_code = t2.warehouse_code where 1 = 1 ";
if (!string.IsNullOrWhiteSpace(m.warehousetype))
{
sql += " and t2.hq_type=@hq_type";
parameters.Add("hq_type", m.warehousetype);
}
if (m.warehousearea > 0)
{
sql += " and t2.area_id=@warehousearea ";
parameters.Add("warehousearea", m.warehousearea);
}
if (!string.IsNullOrWhiteSpace(m.bailun_sku))
{
sql += " and t1.bailun_sku = @bailun_sku ";
parameters.Add("bailun_sku", m.bailun_sku);
}
if (!string.IsNullOrWhiteSpace(m.warehousecode))
{
sql += " and t1.warehouse_code=@warehousecode ";
parameters.Add("warehousecode", m.warehousecode);
}
if (m.btime != null)
{
sql += " and t1.update_date>=@btime ";
parameters.Add("update_date", m.btime);
}
if (m.etime != null)
{
sql += " and t1.update_date<=@etime ";
parameters.Add("etime", m.etime);
}
total = _connection.QuerySingleOrDefault<int>("select count(0) from (" + sql + ") tb1", parameters);
var obj = _connection.Query<dc_base_storage_capacity_dto>(sql+ " limit " + offset + "," + limit, parameters);
return obj.AsList();
}
catch (Exception)
{
return list;
}
}
public static List<dc_base_storage_capacity_log_dto> StorageCapacityLogList(dc_base_storage_capacity_log_search_dto m, int offset, int limit, ref int total)
{
var list = new List<dc_base_storage_capacity_log_dto>();
DynamicParameters parameters = new DynamicParameters();
try
{
var sql = @"select t1.*,t2.`warehouse_name` as 'warehouse_name' from dc_base_storage_capacity_log as t1
left join dc_base_warehouse as t2 on t1.warehouse_code = t2.warehouse_code where 1 = 1 ";
if (!string.IsNullOrWhiteSpace(m.warehousetype))
{
sql += " and t2.hq_type=@hq_type";
parameters.Add("hq_type", m.warehousetype);
}
if (m.warehousearea > 0)
{
sql += " and t2.area_id=@warehousearea ";
parameters.Add("warehousearea", m.warehousearea);
}
if (!string.IsNullOrWhiteSpace(m.bailun_sku))
{
sql += " and t1.bailun_sku = @bailun_sku ";
parameters.Add("bailun_sku", m.bailun_sku);
}
if (!string.IsNullOrWhiteSpace(m.warehousecode))
{
sql += " and t1.warehouse_code=@warehousecode ";
parameters.Add("warehousecode", m.warehousecode);
}
if (m.btime != null)
{
sql += " and t1.create_date>=@btime ";
parameters.Add("btime", m.btime.Value.ToDayHome());
}
if (m.etime != null)
{
sql += " and t1.create_date<=@etime ";
parameters.Add("etime", m.etime.Value.ToDayHome());
}
total = _connection.QuerySingleOrDefault<int>("select count(0) from (" + sql + ") tb1", parameters);
var obj = _connection.Query<dc_base_storage_capacity_log_dto>(sql + " limit " + offset + "," + limit, parameters);
return obj.AsList();
}
catch (Exception)
{
return list;
}
}
/// <summary>
/// 查询库容
/// </summary>
/// <param name="query"></param>
/// <returns></returns>
public static List<dc_base_storage_capacity_dto> GetList(dc_base_storage_capacity_query_dto query)
{
var sql = @"select t1.*,t2.`name` as 'warehouse_name' from dc_base_storage_capacity as t1
left join dc_base_warehouse as t2 on t1.warehouse_code = t2.warehouse_code where 1 = 1 ";
DynamicParameters parameters = new DynamicParameters();
sql += " and bailun_sku_warehouse_code in @bailun_sku_warehouse_codes";
parameters.Add("bailun_sku_warehouse_codes",query.datas.Select(s=>$"{s.bailun_sku}{s.warehouse_code}").ToList());
return _connection.Query<dc_base_storage_capacity_dto>(sql, parameters).ToList();
}
/// <summary>
/// 新增日志
/// </summary>
public static void AddLog(dc_base_storage_capacity_log data)
{
if (string.IsNullOrWhiteSpace(data.create_user))
{
throw new Exception("创建人必填");
}
var type_enum = (dc_base_storage_capacity_log_enum)data.type;
data.bailun_sku_warehouse_code = $"{data.bailun_sku}{data.warehouse_code}";
var conn = MyMySqlConnection._connection;
conn.Open();
using (var t = conn.BeginTransaction())
{
try
{
// 查询是否有库容记录
var mainData = conn.QuerySingleOrDefault<dc_base_storage_capacity>(" select * from dc_base_storage_capacity where bailun_sku_warehouse_code=@bailun_sku_warehouse_code ", new
{
bailun_sku_warehouse_code = data.bailun_sku_warehouse_code
});
if (mainData == null)
{
mainData = new dc_base_storage_capacity
{
bailun_sku_warehouse_code = data.bailun_sku_warehouse_code,
bailun_sku = data.bailun_sku,
warehouse_code = data.warehouse_code,
create_user = data.create_user,
create_date = DateTime.Now,
stock = 0,
update_date = DateTime.Now,
version = 0
};
mainData.id = conn.Insert(mainData)??0;
}
if(type_enum== dc_base_storage_capacity_log_enum.导入)
{
mainData.stock = 0;
}
data.quantity = CalculationVal(type_enum, data.quantity);
mainData.stock += data.quantity;
if (mainData.stock < 0)
{
throw new Exception("库容不足");
}
data.real_time_stock = mainData.stock;
var old_version = mainData.version;
mainData.version++;
conn.Insert(data);
var line_count = conn.Execute(" update dc_base_storage_capacity set stock=@stock,version=@version,update_date=now() where bailun_sku_warehouse_code=@bailun_sku_warehouse_code and version=@old_version ", new
{
stock = mainData.stock,
version = mainData.version,
bailun_sku_warehouse_code = mainData.bailun_sku_warehouse_code,
old_version = old_version
});
if (line_count <= 0)
{
AddLog(data);
}
t.Commit();
}
catch (Exception ex)
{
t.Rollback();
}
}
}
/// <summary>
/// 计算增量值
/// </summary>
public static decimal CalculationVal(dc_base_storage_capacity_log_enum type,decimal val)
{
if(((int)type) % 2==0)
{
return (0-val);
}
else
{
return ( val);
}
}
}
}
...@@ -23,6 +23,34 @@ namespace AutoTurnOver.Models ...@@ -23,6 +23,34 @@ namespace AutoTurnOver.Models
/// </summary> /// </summary>
public int version { get; set; } public int version { get; set; }
} }
public class dc_base_storage_capacity_dto: dc_base_storage_capacity
{
public string warehouse_name { get; set; }
}
public class dc_base_storage_capacity_query_dto
{
public List<data_dto> datas { get; set; }
public class data_dto
{
public string bailun_sku { get; set; }
public string warehouse_code { get; set; }
}
}
public class dc_base_storage_capacity_search_dto
{
public string bailun_sku { get; set; }
public string warehousecode { get; set; }
public string warehousetype { get; set; }
public int? warehousearea { get; set; }
public int page { get; set; }
public int rows { get; set; }
public DateTime? btime { get; set; }
public DateTime? etime { get; set; }
}
public class dc_base_storage_capacity_log public class dc_base_storage_capacity_log
{ {
public int id { get; set; } public int id { get; set; }
...@@ -37,13 +65,35 @@ namespace AutoTurnOver.Models ...@@ -37,13 +65,35 @@ namespace AutoTurnOver.Models
public string create_user { get; set; } public string create_user { get; set; }
public decimal quantity { get; set; } public decimal quantity { get; set; }
public int type { get; set; } public int type { get; set; }
public int bailun_sku_warehouse_code { get; set; } public string bailun_sku_warehouse_code { get; set; }
public string order_no { get; set; }
}
public class dc_base_storage_capacity_log_dto: dc_base_storage_capacity_log
{
public string warehouse_name { get; set; }
public string type_str { get {
return ((dc_base_storage_capacity_log_enum)type).ToString();
} }
}
public class dc_base_storage_capacity_log_search_dto
{
public string bailun_sku { get; set; }
public string warehousecode { get; set; }
public string warehousetype { get; set; }
public int? warehousearea { get; set; }
public DateTime? btime { get; set; }
public DateTime? etime { get; set; }
} }
public enum dc_base_storage_capacity_log_enum public enum dc_base_storage_capacity_log_enum
{ {
入库 =1, 入库 =1,
出库 = 2, 出库 = 2,
导入 = 3 导入 = 3,
调拨单驳回 = 5
} }
} }
...@@ -24,11 +24,12 @@ namespace AutoTurnOver.Purchase.AverageTarget ...@@ -24,11 +24,12 @@ namespace AutoTurnOver.Purchase.AverageTarget
try try
{ {
//report.ResetTransExpectArrivaltime(); //report.ResetTransExpectArrivaltime();
PurchaseAverageTargetServices.CalculationTransfer("LM-EO-007", days: (360 * 3)); //PurchaseAverageTargetServices.CalculationTransfer("LM-EO-007", days: (360 * 3));
//PurchaseAverageTargetServices.Calculation("942517901", days: (360 * 3)); //PurchaseAverageTargetServices.Calculation("942517901", days: (360 * 3));
//ApiUtility.GetLmsTransportCountList(new Models.ApiDto.api_transport_count_order_transfer_query_dto { bailun_sku= "LM-EO-007", targetwareno= "MMDUSFBA" }); //ApiUtility.GetLmsTransportCountList(new Models.ApiDto.api_transport_count_order_transfer_query_dto { bailun_sku= "LM-EO-007", targetwareno= "MMDUSFBA" });
//PurchaseAverageTargetServices.SynchroTransferTransportType(); //PurchaseAverageTargetServices.SynchroTransferTransportType();
//PurchaseAverageTargetServices.CalculationTransfer(days: (360 * 3), has_transfer: true);
} }
catch (Exception ex) catch (Exception ex)
{ {
......
using AutoTurnOver.DB;
using AutoTurnOver.Models;
using AutoTurnOver.Utility;
using System;
using System.Collections.Generic;
using System.Data;
using System.IO;
using System.Linq;
using System.Text;
namespace AutoTurnOver.Services
{
/// <summary>
/// 库容
/// </summary>
public class StorageCapacityServices
{
public List<dc_base_storage_capacity_dto> StorageCapacityList(dc_base_storage_capacity_search_dto m, int offset, int limit, ref int total)
{
return dc_base_storage_capacity_dao.StorageCapacityList(m, offset, limit, ref total);
}
public List<dc_base_storage_capacity_log_dto> StorageCapacityLogList(dc_base_storage_capacity_log_search_dto m, int offset, int limit, ref int total)
{
return dc_base_storage_capacity_dao.StorageCapacityLogList(m, offset, limit, ref total);
}
public List<dc_base_storage_capacity_dto> GetList(dc_base_storage_capacity_query_dto query)
{
return dc_base_storage_capacity_dao.GetList(query);
}
public DataTable Import(Stream fileInfo, UserData user)
{
var data_set = EPPlusHelper.ReadExcel(fileInfo);
var table = data_set.Tables[0];
if (!table.Columns.Contains("导入结果")) table.Columns.Add("导入结果");
if (!table.Columns.Contains("导入异常")) table.Columns.Add("导入异常");
var warehouse_list = DB.common.ListWareHouse(null, null);
DateTime now = DateTime.Now;
int index = 1;
foreach (DataRow row in table.Rows)
{
index++;
try
{
var bailun_sku = row["SKU"].ToString();
var warehouse_code = row["仓库编码"].ToString();
var stock_str = row["库容"].ToString();
if (string.IsNullOrWhiteSpace(bailun_sku)) throw new Exception("SKU必填");
if (string.IsNullOrWhiteSpace(warehouse_code)) throw new Exception("warehouse_code必填");
var warehouse_data = warehouse_list.SingleOrDefault(s => s.warehouse_code.Equals(warehouse_code, StringComparison.OrdinalIgnoreCase));
if (warehouse_data == null) { throw new Exception("仓库在系统中找不到"); }
var warehouse_name = warehouse_data.warehouse_name;
decimal stock = 0M;
if (!decimal.TryParse(stock_str, out stock))
{
throw new Exception("库容格式异常");
}
dc_base_storage_capacity_dao.AddLog(new dc_base_storage_capacity_log
{
create_user = user.UserName,
bailun_sku = bailun_sku,
warehouse_code = warehouse_code,
order_no = "",
quantity = stock,
type = (int)dc_base_storage_capacity_log_enum.导入
});
row["导入结果"] = "成功";
row["导入异常"] = "";
}
catch (Exception ex)
{
row["导入结果"] = "失败";
row["导入异常"] = ex.Message;
}
}
return table;
}
}
}
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Threading.Tasks;
using AutoTurnOver.Common;
using AutoTurnOver.Models;
using AutoTurnOver.Models.auto;
using AutoTurnOver.Models.Report;
using AutoTurnOver.Utility;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
namespace AutoTurnOver.Controllers
{
[Route("api/[controller]/[action]")]
[ApiController]
public class StorageCapacityController : Controller
{
#region 库容
/// <summary>
/// 库容列表
/// </summary>
/// <param name="m"></param>
/// <param name="limit"></param>
/// <param name="offset"></param>
/// <returns></returns>
[HttpGet]
[BrowseLog("Bailun_aims", "访问【百伦自动周转系统】->【库容】->【列表】->【搜索】页面", 0)]
public JsonResult StorageCapacityList([FromQuery]dc_base_storage_capacity_search_dto m, [FromQuery] int limit, [FromQuery] int offset)
{
var total = 0;
var service = new Services.StorageCapacityServices();
var list = service.StorageCapacityList(m, offset, limit, ref total);
return new JsonResult(new
{
rows = list,
total = total,
});
}
/// <summary>
/// 库容日志
/// </summary>
/// <param name="m"></param>
/// <param name="limit"></param>
/// <param name="offset"></param>
/// <returns></returns>
[HttpGet]
[BrowseLog("Bailun_aims", "访问【百伦自动周转系统】->【库容】->【库容日志】->【搜索】页面", 0)]
public JsonResult StorageCapacityLogList([FromQuery]dc_base_storage_capacity_log_search_dto m, [FromQuery] int limit, [FromQuery] int offset)
{
var total = 0;
var service = new Services.StorageCapacityServices();
var list = service.StorageCapacityLogList(m, offset, limit, ref total);
return new JsonResult(new
{
rows = list,
total = total,
});
}
#endregion
/// <summary>
/// 导入
/// </summary>
/// <param name="fileName"></param>
/// <returns></returns>
[HttpPost]
[BrowseLog("Bailun_aims", "触发【百伦自动周转系统】->【库容管理】->【导入】操作", 1)]
public async Task<ActionResult<RequestResultDto>> Import(IFormFile file)
{
try
{
var user = AutoUtility.GetUser();
var dataTable = new Services.StorageCapacityServices().Import(file.OpenReadStream(), user);
var fileName = AppContext.BaseDirectory + $@"Result\库容导入结果.csv";
CsvFileHelper.SaveCSV(dataTable, fileName);
var memory = new MemoryStream();
using (var stream = new FileStream(fileName, FileMode.Open))
{
stream.CopyTo(memory);
}
memory.Position = 0;
var fileData = await QiNiuCloudHelper.UploadAsync(memory, $"{user.UserName}-{DateTime.Now.ToString("yyyyMMddHHmmss")}库容导入结果.csv");
return new RequestResultDto { success = true, data = fileData };
}
catch (Exception ex)
{
return new RequestResultDto { success = false, message = ex.Message, err_data = ex.StackTrace };
}
}
}
}
\ No newline at end of file
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