diff --git a/BasicData/Tnb.BasicData.Entities/Dto/TranUnitInput.cs b/BasicData/Tnb.BasicData.Entities/Dto/TranUnitInput.cs new file mode 100644 index 00000000..86a01bac --- /dev/null +++ b/BasicData/Tnb.BasicData.Entities/Dto/TranUnitInput.cs @@ -0,0 +1,12 @@ +namespace Tnb.BasicData.Entities.Dto +{ + public class TranUnitInput + { + public string material_id { get; set; } + public string unit_id { get; set; } + public decimal tran_qty1 { get; set; } + public decimal tran_qty2 { get; set; } + public decimal tran_qty3 { get; set; } + public decimal tran_qty4 { get; set; } + } +} \ No newline at end of file diff --git a/BasicData/Tnb.BasicData.Entities/Dto/TranUnitOutput.cs b/BasicData/Tnb.BasicData.Entities/Dto/TranUnitOutput.cs new file mode 100644 index 00000000..589b0fad --- /dev/null +++ b/BasicData/Tnb.BasicData.Entities/Dto/TranUnitOutput.cs @@ -0,0 +1,12 @@ +namespace Tnb.BasicData.Entities.Dto +{ + public class TranUnitOutput + { + public string material_id { get; set; } + public string erp_unit_id { get; set; } + public decimal tran_qty1 { get; set; } + public decimal tran_qty2 { get; set; } + public decimal tran_qty3 { get; set; } + public decimal tran_qty4 { get; set; } + } +} \ No newline at end of file diff --git a/BasicData/Tnb.BasicData.Entities/Entity/BasMaterialUnit.cs b/BasicData/Tnb.BasicData.Entities/Entity/BasMaterialUnit.cs index cca5f45c..be8ac93b 100644 --- a/BasicData/Tnb.BasicData.Entities/Entity/BasMaterialUnit.cs +++ b/BasicData/Tnb.BasicData.Entities/Entity/BasMaterialUnit.cs @@ -33,5 +33,14 @@ public partial class BasMaterialUnit : BaseEntity /// 关联物料id /// public string material_id { get; set; } = string.Empty; + + /// + /// 辅助单位id + /// + [SugarColumn(IsIgnore = true)] + public string auxiliary_unit_id_id { get; set; } + + [SugarColumn(IsIgnore = true)] + public string erp_unit_id { get; set; } } diff --git a/BasicData/Tnb.BasicData/BasMaterialService.cs b/BasicData/Tnb.BasicData/BasMaterialService.cs index fcaae107..9318123a 100644 --- a/BasicData/Tnb.BasicData/BasMaterialService.cs +++ b/BasicData/Tnb.BasicData/BasMaterialService.cs @@ -10,6 +10,7 @@ using JNPF.Systems.Entitys.Permission; using JNPF.Systems.Entitys.System; using JNPF.Systems.Interfaces.System; using Mapster; +using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; using Newtonsoft.Json; using SQLitePCL; @@ -17,6 +18,8 @@ using SqlSugar; using Tnb.BasicData.Entities; using Tnb.BasicData.Entities.Dto; using Tnb.BasicData.Interfaces; +using Tnb.ProductionMgr.Entities.Entity; +using Tnb.WarehouseMgr.Entities.Consts; namespace Tnb.BasicData { @@ -458,5 +461,62 @@ namespace Tnb.BasicData }); return !result.IsSuccess ? throw Oops.Oh(result.ErrorMessage) : "保存成功"; } + + [AllowAnonymous] + [HttpPost] + public TranUnitOutput TranUnit(TranUnitInput input) + { + var db = _repository.AsSugarClient(); + BasMaterial basMaterial = db.Queryable().Single(x => x.id == input.material_id); + DictionaryDataEntity unit = db.Queryable().Where(x=>x.DictionaryTypeId==WmsWareHouseConst.UNITTYPEID && x.EnCode==basMaterial.unit_id).First(); + if (basMaterial.unit_id == input.unit_id || (unit!=null && unit.Id==input.unit_id)) + { + string wmsUnitId = db.Queryable() + .InnerJoin((a,b)=>b.DictionaryTypeId==WmsWareHouseConst.UNITTYPEID && a.unit_id==b.EnCode) + .InnerJoin((a,b,c)=>b.Id==c.table_id) + .Select((a,b,c)=>c.cunitid) + .First(); + return new TranUnitOutput + { + erp_unit_id = wmsUnitId, + tran_qty1 = input.tran_qty1, + tran_qty2 = input.tran_qty2, + tran_qty3 = input.tran_qty3, + tran_qty4 = input.tran_qty4, + }; + } + else + { + BasMaterialUnit basMaterialUnit = db.Queryable() + .InnerJoin((a,b)=>b.DictionaryTypeId==WmsWareHouseConst.UNITTYPEID && a.auxiliary_unit_id==b.EnCode) + .InnerJoin((a,b,c)=>b.Id==c.table_id) + .Where((a,b)=>(a.auxiliary_unit_id==input.unit_id || b.Id==input.unit_id) && a.material_id==input.material_id) + .Select((a,b,c)=>new BasMaterialUnit + { + id = a.id, + number_of_auxiliary_unit = a.number_of_auxiliary_unit, + number_of_primary_unit = a.number_of_primary_unit, + auxiliary_unit_id = a.auxiliary_unit_id, + auxiliary_unit_id_id = b.Id, + material_id = a.material_id, + erp_unit_id = c.cunitid + + }) + .First(); + + if (basMaterialUnit == null) + { + throw Oops.Bah($"系统未找到单位:{input.unit_id}"); + } + + TranUnitOutput tranUnitOutput = new TranUnitOutput(); + tranUnitOutput.erp_unit_id = basMaterialUnit.erp_unit_id; + if(input.tran_qty1>0) tranUnitOutput.tran_qty1 = input.tran_qty1 * decimal.Parse(basMaterialUnit.number_of_primary_unit) / decimal.Parse(basMaterialUnit.number_of_auxiliary_unit); + if(input.tran_qty2>0) tranUnitOutput.tran_qty2 = input.tran_qty2 * decimal.Parse(basMaterialUnit.number_of_primary_unit) / decimal.Parse(basMaterialUnit.number_of_auxiliary_unit); + if(input.tran_qty3>0) tranUnitOutput.tran_qty3 = input.tran_qty3 * decimal.Parse(basMaterialUnit.number_of_primary_unit) / decimal.Parse(basMaterialUnit.number_of_auxiliary_unit); + if(input.tran_qty4>0) tranUnitOutput.tran_qty4 = input.tran_qty4 * decimal.Parse(basMaterialUnit.number_of_primary_unit) / decimal.Parse(basMaterialUnit.number_of_auxiliary_unit); + return tranUnitOutput; + } + } } } \ No newline at end of file diff --git a/WarehouseMgr/Tnb.WarehouseMgr.Entities/Consts/WmsWareHouseConst.cs b/WarehouseMgr/Tnb.WarehouseMgr.Entities/Consts/WmsWareHouseConst.cs index 4c88aa7f..3e0a6c8a 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr.Entities/Consts/WmsWareHouseConst.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr.Entities/Consts/WmsWareHouseConst.cs @@ -485,7 +485,7 @@ /// /// 默认传给erp的用户id /// - public const string ERPUSERID = "1001A110000000003NBJ"; + public const string ERPUSERID = "1001A1100000002QG0WU"; /// /// ERPId(天益4厂) /// diff --git a/WarehouseMgr/Tnb.WarehouseMgr/WmsMaterialSignHService.cs b/WarehouseMgr/Tnb.WarehouseMgr/WmsMaterialSignHService.cs index dd43482e..3eeb7f3a 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr/WmsMaterialSignHService.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr/WmsMaterialSignHService.cs @@ -410,7 +410,7 @@ namespace Tnb.WarehouseMgr List dList = await _db.Queryable().Where(x => x.bill_id == wmsMaterialTransferd.bill_id).OrderBy(x => x.id).ToListAsync(); DictionaryDataEntity unitData = await _db.Queryable() .LeftJoin((x, y) => x.Id == y.DictionaryTypeId) - .Where((x, y) => x.EnCode == DictConst.MeasurementUnit && y.EnCode == wmsMaterialTransferd.unit_id) + .Where((x, y) => x.EnCode == DictConst.MeasurementUnit && (y.EnCode == wmsMaterialTransferd.unit_id || y.Id== wmsMaterialTransferd.unit_id)) .Select((x, y) => y) .FirstAsync(); string unitId = unitData?.Id ?? ""; @@ -457,6 +457,7 @@ namespace Tnb.WarehouseMgr erpRequestData.Add("pk_org_v", erpOrg.pk_org_v); erpRequestData.Add("vbillcode", wmsMaterialTransfer.bill_code); erpRequestData.Add("vtrantypecode", "4I-01");//其他出库 先写死 + erpRequestData.Add("csourcebillhid", wmsMaterialTransfer.erp_pk);//其他出库 先写死 List> erpRequestDataDetails = new List>(); erpRequestDataDetails.Add(new Dictionary() { diff --git a/WarehouseMgr/Tnb.WarehouseMgr/WmsMaterialTransferService.cs b/WarehouseMgr/Tnb.WarehouseMgr/WmsMaterialTransferService.cs index 63548089..24ca5504 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr/WmsMaterialTransferService.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr/WmsMaterialTransferService.cs @@ -1090,6 +1090,7 @@ namespace Tnb.WarehouseMgr erpRequestData.Add("pk_org_v", erpOrg.pk_org_v); erpRequestData.Add("vbillcode", wmsMaterialTransfer.bill_code); erpRequestData.Add("vtrantypecode", "4I-01");//其他出库 先写死 + erpRequestData.Add("csourcebillhid", wmsMaterialTransfer.erp_pk); List> erpRequestDataDetails = new List>(); erpRequestDataDetails.Add(new Dictionary() { @@ -1126,6 +1127,7 @@ namespace Tnb.WarehouseMgr thirdWebapiRecord.url = WmsWareHouseConst.BIP_DOMAIN + "uapws/rest/generalout/save"; thirdWebapiRecord.request_data = JsonConvert.SerializeObject(requestData); thirdWebapiRecord.create_time = DateTime.Now; + thirdWebapiRecord.remark = $"原材料转库单wms_material_transfer:{wmsMaterialTransfer.bill_code}"; await _db.Insertable(thirdWebapiRecord).ExecuteCommandAsync(); Logger.LogInformation("【WmsMaterialTransferService ModifyAsync】同步其它出库单到erp成功"); diff --git a/WarehouseMgr/Tnb.WarehouseMgr/WmsPurchaseDService.cs b/WarehouseMgr/Tnb.WarehouseMgr/WmsPurchaseDService.cs index 913ac7a6..1289c99c 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr/WmsPurchaseDService.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr/WmsPurchaseDService.cs @@ -177,6 +177,7 @@ namespace Tnb.WarehouseMgr erpRequestData.Add("pk_group", erpOrg.pk_group); erpRequestData.Add("vbillcode", instock.bill_code); erpRequestData.Add("vtrantypecode", tranType?.EnCode ?? ""); + erpRequestData.Add("csourcebillhid", wmsPurchaseH?.erp_arriveorder_pk ?? ""); List> erpRequestDataDetails = new List>(); foreach (WmsInstockD item in allInstockDetails)