using SqlSugar;
|
using System;
|
using System.Collections.Generic;
|
using System.Linq;
|
using System.Text;
|
using System.Threading.Tasks;
|
using WIDESEA_Common.CommonEnum;
|
using WIDESEA_Common.OrderEnum;
|
using WIDESEA_Common.StockEnum;
|
using WIDESEA_Core;
|
using WIDESEA_Core.BaseRepository;
|
using WIDESEA_Core.BaseServices;
|
using WIDESEA_Core.CodeConfigEnum;
|
using WIDESEA_Core.DB;
|
using WIDESEA_Core.Helper;
|
using WIDESEA_Core.Seed;
|
using WIDESEA_DTO.Outbound;
|
using WIDESEA_IBasicService;
|
using WIDESEA_IOutboundRepository;
|
using WIDESEA_IOutboundService;
|
using WIDESEA_Model.Models;
|
|
namespace WIDESEA_OutboundService
|
{
|
public partial class ErpProScrapSheetService : ServiceBase<Dt_ErpProScrapSheet, IErpProScrapSheetRepository>, IErpProScrapSheetService
|
{
|
private readonly IUnitOfWorkManage _unitOfWorkManage;
|
private readonly IWarehouseService _warehouseService;
|
|
public IErpProScrapSheetRepository Repository => BaseDal;
|
|
public ErpProScrapSheetService(IErpProScrapSheetRepository BaseDal, IUnitOfWorkManage unitOfWorkManage,IWarehouseService warehouseService) : base(BaseDal)
|
{
|
_unitOfWorkManage = unitOfWorkManage;
|
_warehouseService = warehouseService;
|
}
|
public override WebResponseContent AddData(SaveModel saveModel)
|
{
|
if (saveModel.MainData.ContainsKey(nameof(Dt_ErpProScrapSheet.ProScrapStatus).FirstLetterToLower()))
|
{
|
saveModel.MainData[nameof(Dt_ErpProScrapSheet.ProScrapStatus).FirstLetterToLower()] = ProScrapSheetStatusEnum.TOChecked.ObjToInt();
|
}
|
else
|
{
|
saveModel.MainData.Add(nameof(Dt_ErpProScrapSheet.ProScrapStatus).FirstLetterToLower(), ProScrapSheetStatusEnum.TOChecked.ObjToInt());
|
}
|
foreach (var item in saveModel.DetailData)
|
{
|
if (!item.ContainsKey(nameof(Dt_ErpProScrapSheetDetail.OverScrapSETQty).FirstLetterToLower()))
|
{
|
item.Add(nameof(Dt_ErpProScrapSheetDetail.OverScrapSETQty).FirstLetterToLower(), 0);
|
}
|
if (!item.ContainsKey(nameof(Dt_ErpProScrapSheetDetail.OverScrapPcsQty).FirstLetterToLower()))
|
{
|
item.Add(nameof(Dt_ErpProScrapSheetDetail.OverScrapPcsQty).FirstLetterToLower(), 0);
|
}
|
if (!item.ContainsKey(nameof(Dt_ErpProScrapSheetDetail.XSetQty).FirstLetterToLower()))
|
{
|
item.Add(nameof(Dt_ErpProScrapSheetDetail.XSetQty).FirstLetterToLower(), 0);
|
}
|
if (!item.ContainsKey(nameof(Dt_ErpProScrapSheetDetail.XPcsQty).FirstLetterToLower()))
|
{
|
item.Add(nameof(Dt_ErpProScrapSheetDetail.XPcsQty).FirstLetterToLower(), 0);
|
}
|
if (!item.ContainsKey(nameof(Dt_ErpProScrapSheetDetail.ScrapProDetailStatus).FirstLetterToLower()))
|
{
|
item.Add(nameof(Dt_ErpProScrapSheetDetail.ScrapProDetailStatus).FirstLetterToLower(), OutOrderStatusEnum.未开始.ObjToInt());
|
}
|
}
|
return base.AddData(saveModel);
|
}
|
public WebResponseContent Save(ErpProScrapSheetModel addProScrapSheet) {
|
try
|
{
|
List<Dt_ErpProScrapSheetDetail> erpProScrapSheetDetails = new List<Dt_ErpProScrapSheetDetail>();
|
if (addProScrapSheet.Details != null)
|
{
|
foreach (var model in addProScrapSheet.Details)
|
{
|
Dt_ErpProScrapSheetDetail erpProScrapSheetDetail = new Dt_ErpProScrapSheetDetail()
|
{
|
ScrapProCode = model.ScrapProCode,
|
ScrapProVersion = model.ScrapProVersion,
|
ScrapProLotNo = model.ScrapProLotNo,
|
ScrapPcsQty = model.ScrapPcsQty,
|
ScrapSETQty = 0,
|
};
|
erpProScrapSheetDetails.Add(erpProScrapSheetDetail);
|
}
|
}
|
Dt_ErpProScrapSheet erpProScrapSheet = new Dt_ErpProScrapSheet()
|
{
|
WarehouseId = addProScrapSheet.WarehouseId,
|
ProScrapSheetOrderNo = CreateCodeByRule(nameof(RuleCodeEnum.ProScrapSheetRule)),
|
ProScrapStatus = ProScrapSheetStatusEnum.TOChecked.ObjToInt(),
|
Details = erpProScrapSheetDetails
|
};
|
_unitOfWorkManage.BeginTran();
|
Db.InsertNav(erpProScrapSheet).Include(x => x.Details).ExecuteCommand();
|
_unitOfWorkManage.CommitTran();
|
return WebResponseContent.Instance.OK();
|
|
}
|
catch(Exception ex)
|
{
|
_unitOfWorkManage.RollbackTran();
|
return WebResponseContent.Instance.Error(ex.Message);
|
}
|
|
}
|
static object lock_code = new object();
|
public string CreateCodeByRule(string ruleCode)
|
{
|
lock (lock_code)
|
{
|
|
string code = string.Empty;
|
DateTime dateTime = DateTime.Now;
|
DateTime now = DateTime.Now;
|
try
|
{
|
if (string.IsNullOrEmpty(ruleCode))
|
throw new ArgumentNullException(nameof(ruleCode));
|
SqlSugarClient sugarClient = new SqlSugarClient(new ConnectionConfig
|
{
|
IsAutoCloseConnection = true,
|
DbType = DbType.SqlServer,
|
ConnectionString = DBContext.ConnectionString
|
});
|
Dt_CodeRuleConfig codeRuleConfig = sugarClient.Queryable<Dt_CodeRuleConfig>().Where(x => x.RuleCode == ruleCode).First();
|
if (codeRuleConfig == null)
|
throw new ArgumentNullException(nameof(codeRuleConfig));
|
if (codeRuleConfig.ModifyDate != null)
|
{
|
dateTime = Convert.ToDateTime(codeRuleConfig.ModifyDate);
|
}
|
else
|
{
|
dateTime = Convert.ToDateTime(codeRuleConfig.CreateDate);
|
}
|
|
if (now.Year == dateTime.Year && now.Month == dateTime.Month && now.Day == dateTime.Day)
|
{
|
now = dateTime;
|
codeRuleConfig.CurrentVal = Convert.ToInt32(codeRuleConfig.CurrentVal) + 1;
|
}
|
else
|
{
|
codeRuleConfig.CurrentVal = 1;
|
}
|
codeRuleConfig.ModifyDate = DateTime.Now;
|
code = codeRuleConfig.Format;
|
code = code.Replace($"[{CodeFormatTypeEnum.YYYY}]", now.Year.ToString().PadLeft(4, '0'));
|
code = code.Replace($"[{CodeFormatTypeEnum.MM}]", now.Month.ToString().PadLeft(2, '0'));
|
code = code.Replace($"[{CodeFormatTypeEnum.DD}]", now.Day.ToString().PadLeft(2, '0'));
|
code = code.Replace($"[{CodeFormatTypeEnum.ST}]", codeRuleConfig.StartStr?.ToString() ?? "");
|
code = code.Replace($"[{CodeFormatTypeEnum.NUM}]", codeRuleConfig.CurrentVal.ToString().PadLeft(codeRuleConfig.Length, '0'));
|
Dictionary<string, object> keyValuePairs = new Dictionary<string, object>() { { nameof(codeRuleConfig.CurrentVal), codeRuleConfig.CurrentVal }, { nameof(codeRuleConfig.Id), codeRuleConfig.Id }, { nameof(codeRuleConfig.ModifyDate), DateTime.Now } };
|
sugarClient.Updateable(keyValuePairs).AS(MainDb.CodeRuleConfig).WhereColumns(nameof(codeRuleConfig.Id)).ExecuteCommand();
|
sugarClient.Updateable(codeRuleConfig);
|
|
}
|
catch (Exception ex)
|
{
|
|
}
|
return code;
|
}
|
}
|
|
}
|
}
|