150 lines
5.8 KiB
C#
150 lines
5.8 KiB
C#
using Infrastructure.Attribute;
|
|
using SqlSugar;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
using ZR.Model.MES.pro;
|
|
using ZR.Model.MES.wm;
|
|
using ZR.Model.MES.wm.DTO;
|
|
using ZR.Service.mes.wm.IService;
|
|
using static System.Runtime.InteropServices.JavaScript.JSType;
|
|
|
|
namespace ZR.Service.mes.wm
|
|
{
|
|
[AppService(ServiceType = typeof(IMaterialReceiptService), ServiceLifetime = LifeTime.Transient)]
|
|
public class MaterialReceiptService : BaseService<WmMaterialReceipt>, IMaterialReceiptService
|
|
{
|
|
/// <summary>
|
|
/// 生成并查询原材料入库单
|
|
/// 根据生产工单进行生成,以生产工单为主
|
|
/// </summary>
|
|
public (List<WmMaterialReceiptDTO>, int) GetWmMaterialReceiptList(int pageNum, int pageSize, int year, int week, int date)
|
|
{
|
|
var predicate = Expressionable.Create<ProWorkorder_v2>()
|
|
.AndIF(year > 0, pw2 => pw2.Year == year)
|
|
.AndIF(week > 0, pw2 => pw2.Week == week)
|
|
.AndIF(date > 0, pw2 => pw2.Date == date)
|
|
//.And(pw2=>pw2.Status == 2)
|
|
.ToExpression();
|
|
|
|
int totalCount = 0;
|
|
List<WmMaterialReceiptDTO> list = Context.Queryable<ProWorkorder_v2, WmMaterialReceipt>((pw2, wmr) => new object[]
|
|
{
|
|
JoinType.Left,
|
|
pw2.Id == wmr.FkWorkorder2Id
|
|
})
|
|
.Where(predicate)
|
|
.Select((pw2, wmr) => new WmMaterialReceiptDTO
|
|
{
|
|
FkWorkorderId = pw2.Id,
|
|
ProductDescription = pw2.ProductDescription,
|
|
Colour = pw2.Colour,
|
|
Specifications = pw2.Specifications,
|
|
BlankNumber = pw2.BlankNumber,
|
|
PreviousNumber = pw2.PreviousNumber,
|
|
Sort = pw2.Sort,
|
|
Id = wmr.Id,
|
|
ActualNumber = wmr.ActualNumber,
|
|
SampleNumber = wmr.SampleNumber,
|
|
QualifiedNumber = wmr.QualifiedNumber,
|
|
PassRate = wmr.PassRate,
|
|
Status = wmr.Status
|
|
})
|
|
.OrderBy(pw2 => pw2.Sort)
|
|
.ToPageList(pageNum, pageSize, ref totalCount);
|
|
return (list, totalCount);
|
|
}
|
|
|
|
/// <summary>
|
|
/// 保存一条原材料入库单数据
|
|
/// 如果传来的id为空则新增
|
|
/// 否则就修改
|
|
/// 0 =数据库操作异常
|
|
/// -1=传入参数异常
|
|
/// </summary>
|
|
|
|
public int SaveOneMaterialReceipt(WmMaterialReceiptDTO wmMaterialReceiptDTO)
|
|
{
|
|
if(wmMaterialReceiptDTO == null)
|
|
{
|
|
return -1;
|
|
}
|
|
if(wmMaterialReceiptDTO.FkWorkorderId == null)
|
|
{
|
|
return -1;
|
|
}
|
|
WmMaterialReceipt wmMaterialReceipt = new WmMaterialReceipt();
|
|
wmMaterialReceipt.FkWorkorder2Id = wmMaterialReceiptDTO.FkWorkorderId;
|
|
wmMaterialReceipt.ActualNumber = wmMaterialReceiptDTO.ActualNumber;
|
|
wmMaterialReceipt.SampleNumber = wmMaterialReceiptDTO.SampleNumber;
|
|
wmMaterialReceipt.QualifiedNumber = wmMaterialReceiptDTO.QualifiedNumber;
|
|
wmMaterialReceipt.FkWarehouseId = wmMaterialReceiptDTO.FkWorkorderId;
|
|
wmMaterialReceipt.Status = wmMaterialReceiptDTO.Status;
|
|
|
|
if (IsIdNull(wmMaterialReceiptDTO))
|
|
{
|
|
// XXX 雪花算法WorkId需要不同,可能会出现未知异常;
|
|
// SnowFlakeSingle.WorkId = 22;
|
|
wmMaterialReceipt.Id = SnowFlakeSingle.Instance.NextId().ToString();
|
|
wmMaterialReceipt.CreatedBy = wmMaterialReceiptDTO.Operator;
|
|
wmMaterialReceipt.UpdatedBy = wmMaterialReceiptDTO.Operator;
|
|
// XXX 时间为粗略时间
|
|
wmMaterialReceipt.CreatedTime = DateTime.Now;
|
|
wmMaterialReceipt.UpdatedTime = DateTime.Now;
|
|
int effectId = Context.Insertable(wmMaterialReceipt).ExecuteCommand();
|
|
return effectId;
|
|
}
|
|
else
|
|
{
|
|
wmMaterialReceipt.Id = wmMaterialReceiptDTO.Id;
|
|
wmMaterialReceipt.UpdatedBy = wmMaterialReceiptDTO.Operator;
|
|
wmMaterialReceipt.UpdatedTime = DateTime.Now;
|
|
int effectId = Context.Updateable(wmMaterialReceipt).IgnoreColumns(ignoreAllNullColumns:true).ExecuteCommand();
|
|
return effectId;
|
|
}
|
|
}
|
|
/// <summary>
|
|
/// 保存前端一整页(多条)原材料入库单数据
|
|
/// </summary>
|
|
public string SavePageMaterialReceipts(List<WmMaterialReceiptDTO> list)
|
|
{
|
|
if (list == null || list.Count == 0)
|
|
{
|
|
return $"保存成功:无数据变动!";
|
|
}
|
|
int successCount = 0;
|
|
int totalCount = list.Count;
|
|
|
|
for(int index = 1; index <= list.Count; index++)
|
|
{
|
|
int effectId = SaveOneMaterialReceipt(list[index-1]);
|
|
if (effectId < 1)
|
|
{
|
|
return $"保存异常:总共{totalCount}条数据已成功保存{successCount}条数据,异常行数{index}";
|
|
}
|
|
}
|
|
return $"保存成功:成功保存{totalCount}条数据";
|
|
|
|
}
|
|
|
|
/// <summary>
|
|
/// 判断id是否为空
|
|
/// </summary>
|
|
///
|
|
public bool IsIdNull(WmMaterialReceiptDTO wmMaterialReceiptDTO)
|
|
{
|
|
if (wmMaterialReceiptDTO.Id is null)
|
|
{
|
|
return true;
|
|
}
|
|
if ("".Equals(wmMaterialReceiptDTO.Id))
|
|
{
|
|
return true;
|
|
}
|
|
return false;
|
|
}
|
|
}
|
|
}
|