Compare commits

...

46 Commits

Author SHA1 Message Date
69c381cf4e 修改被删除的意外 2025-09-03 17:26:56 +08:00
326a616289 不再有暂存 2025-09-03 15:25:12 +08:00
7be6f47c02 删除掉暂存单 2025-09-03 15:15:07 +08:00
af4de76221 改了是否需要暂存 2025-09-02 15:14:50 +08:00
f9cfba7d51 改成不要暂存 2025-09-02 10:55:28 +08:00
f275c8a6a6 测试 2025-08-14 14:21:49 +08:00
884aaea83d 改了调入 2025-08-14 12:01:35 +08:00
d9708a6b00 采购上架入库加了为空限制 2025-08-13 15:43:06 +08:00
b7ae59c921 作废出库 2025-07-28 16:07:24 +08:00
eef9fc6b9d 改了为0 2025-07-18 10:47:46 +08:00
2c7dbd8a0e 改了生产入库 2025-07-17 17:27:53 +08:00
2971f55b32 修改入库 2025-07-17 16:41:14 +08:00
e0d44c9e57 修改了入库 2025-07-17 15:58:08 +08:00
3ae1d42bcd 修改了初始入库 2025-07-17 15:39:02 +08:00
5c7e037a6f 盘点 2025-07-16 17:57:15 +08:00
9448d5ae09 2025-07-16 17:39:43 +08:00
a9b512ca0e 排序 2025-07-16 17:38:30 +08:00
1c5df7829a 排序 2025-07-16 17:27:36 +08:00
a65c8f87f9 改了排序 2025-07-16 17:16:56 +08:00
f2fb16d1fa 排序。 2025-07-16 15:04:18 +08:00
18ca062ab4 排序 2025-07-16 14:40:31 +08:00
a909dbbf60 加按箱号 2025-07-16 14:38:29 +08:00
d4d03f1230 修改排序 2025-07-16 14:28:19 +08:00
3638646b8d 排序 2025-07-16 14:16:35 +08:00
3faf11ba3c 修改排序 2025-07-16 14:07:52 +08:00
fb97d5f09d 修改排序列 2025-07-16 13:57:25 +08:00
a98ace8360 修改排改 2025-07-16 13:55:14 +08:00
8f2a136390 排序 2025-07-16 13:42:05 +08:00
2783556ca3 排序 2025-07-16 11:33:54 +08:00
41b2b6454a 改排序 2025-07-16 11:13:09 +08:00
e7506ea5fa 改排序 2025-07-16 10:38:38 +08:00
054cdadbfe 按数量排序 2025-07-15 17:25:19 +08:00
c47810947b 修改了些BUG 2025-07-15 16:03:57 +08:00
1051075aa6 修改安装y 2025-07-15 11:56:27 +08:00
7635ea9ffa 修改了安装 2025-07-15 11:54:10 +08:00
0144087c7f 修改了dockerfile 2025-07-15 11:51:23 +08:00
b1c7e750c1 测试 2025-07-15 11:04:35 +08:00
32b851ac69 测试 2025-07-15 10:44:39 +08:00
41ef8ff89b 修改了同步 2025-07-15 10:35:37 +08:00
e8e4992dbe 去重 2025-07-11 15:38:16 +08:00
fdd9a20a16 修改了出库任务单导出出库数量 2025-07-10 16:20:10 +08:00
c862dd4930 修改了不显示同步状态 2025-07-10 11:02:02 +08:00
75e3523652 修改了客户显示 2025-07-10 10:37:39 +08:00
4b1426b16b 修改了出库是否作废 2025-07-09 17:30:12 +08:00
b0da28a375 修改了上传 2025-07-09 15:10:48 +08:00
07c3efb853 22 2025-07-09 09:19:01 +08:00
32 changed files with 615 additions and 177 deletions

View File

@@ -15,9 +15,17 @@ WORKDIR /app
#echo "deb-src http://mirrors.aliyun.com/debian/ buster-backports main non-free contrib" >>/etc/apt/sources.list
#<23><>װapt-get <20><>װ libc6-dev , libgdiplus <20><><EFBFBD><EFBFBD>֧<EFBFBD><D6A7>system.drawing <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><><C4AC>ubuntu<74><75><EFBFBD><EFBFBD>
RUN apt-get update -qq && apt-get -y install libgdiplus libc6-dev
#RUN apt-get update -qq && apt-get -y install libgdiplus libc6-dev
#
#EXPOSE 80
RUN echo "deb http://deb.debian.org/debian bullseye main non-free contrib" > /etc/apt/sources.list && \
echo "deb http://security.debian.org/debian-security bullseye-security main" >> /etc/apt/sources.list && \
echo "deb http://deb.debian.org/debian bullseye-updates main non-free contrib" >> /etc/apt/sources.list && \
apt-get update -qq && \
apt-get -y install libgdiplus libc6-dev
EXPOSE 80
EXPOSE 443
COPY ["src/WMS.Web.Api/wwwroot/WMS.Web.Api.xml", "/app/WMS.Web.Api.xml"]

View File

@@ -37,13 +37,26 @@
"PublicKey": "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAx4RaUAcPIEzHkMA0dvp51SbvC+ASiitHw9h6sCq8blqh8Cmx+ZfldxmX+sGqUDL40Eo07tQGWpY8WTlUROCOB9PIfZC6Wb+ntM6x8FzvcW5xfiKDfd6tbp5+ztFHVvutde0ceYk4VjOw5Q1wGJENZoQxQGd6/tt/cHbyNKF3HeAPCLJkMriKBXn3k4r4kix5oetVpaacFABBMRS019n/k0S8fg2H+72WaPVJElRk/iCkQwBA6JIKt/iSVXR8qMe+K6NTRnND4j5i7Ai0TgEV8MRlRMRVK7q4MyO0TPky//0HtVULdhb+G/XbF08ZgIgXlFBroQCEEj0RqdLio0Bg9wIDAQAB", //公钥
"PrivateKey": "MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDHhFpQBw8gTMeQwDR2+nnVJu8L4BKKK0fD2HqwKrxuWqHwKbH5l+V3GZf6wapQMvjQSjTu1AZaljxZOVRE4I4H08h9kLpZv6e0zrHwXO9xbnF+IoN93q1unn7O0UdW+6117Rx5iThWM7DlDXAYkQ1mhDFAZ3r+239wdvI0oXcd4A8IsmQyuIoFefeTiviSLHmh61WlppwUAEExFLTX2f+TRLx+DYf7vZZo9UkSVGT+IKRDAEDokgq3+JJVdHyox74ro1NGc0PiPmLsCLROARXwxGVExFUrurgzI7RM+TL//Qe1VQt2Fv4b9dsXTxmAiBeUUGuhAIQSPRGp0uKjQGD3AgMBAAECggEBAI/1MJDjtwdQPwJznKdobTXeJMdFwzrMpbhq34NzIojhfkziWNdFwTzhS6aTzEaXsK3hjTXx6C++jQa39dTIzdJZ/iSTo9IUFnbAWOWcuOv4i40+a/ALFsplNAwYNshNSkh3cH9FAlA4dd+fhY1ERA3/PeZBhB6V0+sa+AH/qwnzFY+lwOeuaUe4PNEjjnBVhzqV8XApca7HZNlrGmiTuO3J/e4k/FAP11iYYIf8e8JtgocinW1LIxJGBcp7Zyof37k4e+s25B0k5MkXiYlvveMsmlEcU+sYm+uLNtu8eG1R3b1qvi0H8ULdwoSParnKSyYMh0WlZTS8Ka3X33WeCOkCgYEA2Cc/nnJkwPaOXLiAbKg7/4hIne1X3rneVVbwCaebKXfSsCSGoVt5b8vBCgbVZNw79d8Z8ZLEf4e26ayLLXRz9QriMPiWyHUEr0XLZ4lq6E1EdZMBZWmjT9VY8NeAkB+eMPfCZLZe3OoVstuNQA0pGVFJgYXmXgcjJcidxzgIqU0CgYEA7EwAA6OP9DoQq4GcBCuIVGBjEWzbVekMt7f+WeLxGl3NYTWiXiaK6WjF/pvFv7AGQIqwOpnbKahWntpPj5DModhjQN8u/yonhzagubQbDTX0jR3w4gVsv/yyGgksPIwAQT/FW9cOqriqw8IGJG92VQw8dy6M1ZP9yK3yc41Q8VMCgYATH3XLaMdtIuL5ZQFHm6KjOsVh42uQstTuq+BUmlVp18X1+2VFxTf7IgWUA4LBh5JucCx1aMylk7Yk+jTd8p2HokzclEGSvneJoh0ardedcaiK1lSbSjs+htt1gztGhOWT43d5PYEq/jKpPi9C6WcnbD+ai+QTkYIUh6kdxOFPSQKBgQDltLfq0azWMUAVSYi+MQd1ZsHHpbfO2x+m1TFodgoFpJxL3JS7y+IMJvMaoJlqz5Y0Vd4dCYYZB/E0uWrQWGXlC3LpFE0edf85HWy/Ogt2GzZhnHKXdciTFfaZAsPDFCIHTBPyRKyYX655YHsSHly9Loj1HwZ/dT8nP5nKpNzDywKBgB3itp7eQ71y+6npr0MUcYF6cgjhPTLL03zVzJdR3ELzPFW+J69MFwqafoGu+xgGu43pDgIR6gVKqYhqfSk28oRl7YtO4fvk6KRcG5zrc1FyDw3S5XpVc5MhsxmBBXZj5ivBkoqxyDAOqu3MDCbHqg1J5inDu2gA8tbsgJ41pTER" //私钥
},
//"ErpOptions": {
// "EndpointAddress": "http://erp.orico.com.cn/k3cloud/ERPGW.asmx", //金蝶连接地址
// "UserName": "mes", //测试账号密码 mes/A1B2C3Dh/ce20210909/6723b1acf19987 正式账号密码 orico/A123321./Orico/663a26829afbdd //金蝶账户名
// // "UserName": "orico", //正式账号
// "Password": "A1B2C3Dh.", //测试金蝶密码
// // "Password": "A123321.", //正试金蝶密码
// // "ErpId": "ce20210909", //金蝶Id
// "ErpId": "Orico", //正式金蝶Id
// "ZhangTaoId": "6723b1acf19987" //测试金蝶账套Id
// // "ZhangTaoId": "663a26829afbdd" //正式金蝶账套Id
//},
"ErpOptions": {
"EndpointAddress": "http://erp.orico.com.cn/k3cloud/ERPGW.asmx", //金蝶连接地址
"UserName": "mes", //测试账号密码 mes/A1B2C3Dh/ce20210909/6723b1acf19987 正式账号密码 orico/A123321./Orico/663a26829afbdd //金蝶账户名
"Password": "A1B2C3Dh.", //金蝶密码
"ErpId": "ce20210909", //金蝶Id
"ZhangTaoId": "6723b1acf19987"//金蝶账套Id
"ZhangTaoId": "6723b1acf19987" //金蝶账套Id
},
"OpsOptions": {
"Url": "https://api.opsscm.test.f2b211.com/", //https://api.opsscm.test.f2b211.com/ //OPS供应链系统 测试http://127.0.0.1:8035
"UserName": "admin", //账户名 这是之前链接老ops 需要的用户名密码 现在链接 OPS供应链系统是不需要了
@@ -55,9 +68,9 @@
"AppSecret": "n/HUKD2wVdTbvhnFZbVBPw==" //领星授权
},
"JuShuiTanOptions": {
"Url": "https://openapi.jushuitan.com",//聚水潭连接地址
"AppKey": "17231841286c45f99eb9acf445404349",//聚水潭Key
"AppSecret": "5ce9641ae6db4abb8b96eea7df6a81e9",//聚水潭授权
"Url": "https://openapi.jushuitan.com", //聚水潭连接地址
"AppKey": "17231841286c45f99eb9acf445404349", //聚水潭Key
"AppSecret": "5ce9641ae6db4abb8b96eea7df6a81e9", //聚水潭授权
"AccessToken": "4605358c37374780a8a4395e6cdb1c3f" //一年后过期(2025/10/18)
},
"Qiniu": {
@@ -122,7 +135,7 @@
"QuartzTriggerDescription": "OpsJobTrigger"
},
"EmailOptions": {
"SmtpServer": "smtp.qiye.aliyun.com",//邮箱配置
"SmtpServer": "smtp.qiye.aliyun.com", //邮箱配置
"SmtpPort": 587,
"SenderName": "深圳市元创时代",
"SendTitle": "【深圳市元创时代】-产品入库通知",
@@ -130,7 +143,7 @@
"SenderEmailPwd": "K4h6GgxZYGMYV1Bb"
},
"SmsOptions": {
"AccessKeyId": "LTAI5tBJg6KeDV2V1NiS7Ngi",//短信配置
"AccessKeyId": "LTAI5tBJg6KeDV2V1NiS7Ngi", //短信配置
"AccessKeySecret": "MAC8bMovSFyCgRQGkfhVcL1jvLJ8cP",
"SignName": "深圳市元创时代",
"TemplateCode": "SMS_465408787"

View File

@@ -1372,6 +1372,11 @@
产品分组(3级)名称
</summary>
</member>
<member name="P:WMS.Web.Core.Dto.Erp.ErpMaterialDto.FProductIDS">
<summary>
物料32进制
</summary>
</member>
<member name="T:WMS.Web.Core.Dto.Erp.Org.ErpOrgDto">
<summary>
金蝶组织-基本信息
@@ -6140,11 +6145,6 @@
创建时间(出库时间)
</summary>
</member>
<member name="P:WMS.Web.Core.Dto.OutStock.OutStockQueryInfoResponse.SuccessSync">
<summary>
同步成功或者失败 null 就是未同步
</summary>
</member>
<member name="P:WMS.Web.Core.Dto.OutStock.OutStockQueryInfoResponse.SourceBillNoList">
<summary>
来源单号(集合)
@@ -7106,11 +7106,6 @@
仓位
</summary>
</member>
<member name="P:WMS.Web.Core.Dto.TakeStock.TakeStockQueryInfoResponse.BoxBillNo">
<summary>
箱号
</summary>
</member>
<member name="P:WMS.Web.Core.Dto.TakeStock.TakeStockQueryInfoResponse.Erp_SubStock">
<summary>
子仓库

View File

@@ -1579,6 +1579,11 @@
产品分组(3级)名称
</summary>
</member>
<member name="P:WMS.Web.Domain.Entitys.Materials.FProductIDS">
<summary>
物料32进制Id
</summary>
</member>
<member name="T:WMS.Web.Domain.Entitys.MoveBoxRecord">
<summary>
wms移箱记录
@@ -7684,6 +7689,11 @@
盘点单
</summary>
</member>
<member name="F:WMS.Web.Domain.Values.OrderType.ProduceSotck_In">
<summary>
盘点单
</summary>
</member>
<member name="T:WMS.Web.Domain.Values.OutStockStatus">
<summary>
出库状态

View File

@@ -15,6 +15,12 @@ namespace WMS.Web.Core.Dto.Erp
this.FormId = formId;
this.Numbers =new List<string>() { number };
}
public ErpOperateDto(string formId, string number,string ids)
{
this.FormId = formId;
this.Numbers = new List<string>() { };
this.Ids = ids;
}
/// <summary>
/// 业务对象表单Id必录
/// </summary>
@@ -24,5 +30,7 @@ namespace WMS.Web.Core.Dto.Erp
/// 单据编码
/// </summary>
public List<string> Numbers { get; set; }
public string Ids { get; set; }
}
}

View File

@@ -20,6 +20,7 @@ namespace WMS.Web.Core.Dto.Erp
this.Id = id;
}
/// <summary>
/// 单据Id
/// </summary>

View File

@@ -115,5 +115,11 @@ namespace WMS.Web.Core.Dto.Erp
public string FMaterialGroupFName { get; set; }
/// <summary>
/// 物料32进制
/// </summary>
public string FProductIDS { get; set; }
}
}

View File

@@ -86,12 +86,12 @@ namespace WMS.Web.Core.Dto.OutStock
/// </summary>
[Column("出库时间")]
public string CreateTime { get; set; }
/// <summary>
/// 同步成功或者失败 null 就是未同步
/// </summary>
[Column("金蝶同步状态")]
public string SuccessSync { get; set; }
///// <summary>
///// 同步成功或者失败 null 就是未同步
///// </summary>
//[Column("金蝶同步状态")]
//public string SuccessSync { get; set; }
/// <summary>
/// 来源单号(集合)
///</summary>

View File

@@ -7,7 +7,7 @@ namespace WMS.Web.Core.Dto.OutStockTask
/// <summary>
/// 出库任务单对应出库明细
/// </summary>
public class OutStockTaskInfoDetailsResponse
public class OutStockTaskInfoDetailsResponse
{
/// <summary>
/// 物料名称
@@ -85,5 +85,8 @@ namespace WMS.Web.Core.Dto.OutStockTask
/// 出库单对应箱明细Id
/// </summary>
public int OutStockBoxDetailsId { get; set; } = 0;
public int MaterialCount { get; set; } = 0;
}
}

View File

@@ -161,9 +161,9 @@ namespace WMS.Web.Core.Dto.OutStockTask
/// 是否作废
///</summary>
[Column("是否作废")]
public bool IsRepeal { get; set; }
// public bool IsRepeal { get; set; }
public string IsRepeal { get; set; }
}
}

View File

@@ -68,18 +68,22 @@ namespace WMS.Web.Core.Dto.ProductInventory
/// <summary>
/// 产品线(1级)
/// </summary>
[Column("1级分类")]
public string FProductLines1FName { get; set; }
/// <summary>
/// 产品分类(2级)
/// </summary>
[Column("2级分类")]
public string FProductCATs1FName { get; set; }
/// <summary>
/// 产品分组(3级)
/// </summary>
[Column("3级分类")]
public string FMaterialGroupFName { get; set; }
/// <summary>
/// SPU
/// </summary>
[Column("SPU")]
public string F_Product { get; set; }

View File

@@ -49,10 +49,10 @@ namespace WMS.Web.Core.Dto.TakeStock
/// </summary>
[Column("仓位")]
public string SubStock { get; set; }
/// <summary>
/// 箱号
/// </summary>
public string BoxBillNo { get; set; }
///// <summary>
///// 箱号
///// </summary>
//public string BoxBillNo { get; set; }
/// <summary>
/// 子仓库
/// </summary>

View File

@@ -102,8 +102,15 @@ namespace WMS.Web.Domain.Entitys
this.SuccessSync = SyncStatus.SyncIng;
this.ErpDetails.ForEach(f => f.SuccessSync = SyncStatus.SyncIng);
}
else if (this.Type == InstockType.ProduceSotck)
{
this.SuccessSync = SyncStatus.SyncIng;
this.ErpDetails.ForEach(f => f.SuccessSync = SyncStatus.SyncIng);
}
else//非采购订单这里就没有记录erpdetails的数据了
{
this.SuccessSync = SyncStatus.Success;
}
}
/// <summary>

View File

@@ -1,4 +1,5 @@
using System;
using NPOI.OpenXmlFormats.Dml.Diagram;
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations.Schema;
using System.Linq;
@@ -102,9 +103,18 @@ namespace WMS.Web.Domain.Entitys
public void Create(InstockType type, string sourceBillNo, DateTime createTime, int supplierId, string orgCode)
{
if (type == InstockType.Purchase)
{
this.Status = InstockStatus.Wait;
}
else if (type == InstockType.ProduceSotck)
{
this.Status = InstockStatus.Wait;
}
else
{
this.Status = InstockStatus.WaitInStock;
}
this.Type = type;
this.SourceBillNo = sourceBillNo;
this.SupplierId = supplierId;
@@ -202,6 +212,8 @@ namespace WMS.Web.Domain.Entitys
this.Status = InstockStatus.Already;
else if (totalReceiveQty <= 0 && this.Type == InstockType.Purchase)
this.Status = InstockStatus.Wait;
else if (totalReceiveQty <= 0 && this.Type == InstockType.ProduceSotck)
this.Status = InstockStatus.Wait;
else if (totalRealityQty <= 0)
this.Status = InstockStatus.WaitInStock;
else

View File

@@ -103,6 +103,11 @@ namespace WMS.Web.Domain.Entitys
/// </summary>
public string FMaterialGroupFName { get; set; }
/// <summary>
/// 物料32进制Id
/// </summary>
public string FProductIDS { get; set; }

View File

@@ -24,6 +24,9 @@ namespace WMS.Web.Domain.Infrastructure
Task<List<OutStockTask>> GetEntityList(List<int> ids);
/// 查询实体集合
Task<List<OutStockTask>> GetEntityListByStatus();
Task<List<SerialNumbers>> GetEntityList(List<string> serialNumbers);
Task<List<SerialNumbers>> GetEntityListBySuitNumber(string suitNumber);
/// 查询实体集合(明细Id)
Task<List<OutStockTask>> GetEntityListByDetailIds(List<int> ids);
/// <summary>

View File

@@ -2016,6 +2016,9 @@ namespace WMS.Web.Domain.Services
return OrderType.Stkdirecttransfers_In;
case InstockType.StktransferInst:
return OrderType.StktransferInst_In;
case InstockType.ProduceSotck:
return OrderType.ProduceSotck_In;
default:
return OrderType.StktransferInst_In;
}

View File

@@ -1,10 +1,12 @@
using AutoMapper;
using Microsoft.EntityFrameworkCore.ChangeTracking;
using Microsoft.EntityFrameworkCore.Storage;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Options;
using Newtonsoft.Json;
using Npoi.Mapper;
using NPOI.SS.Formula.Functions;
using StackExchange.Redis;
using System;
using System.Collections.Concurrent;
@@ -195,10 +197,14 @@ namespace WMS.Web.Domain.Services
{
t = InstockType.ProduceSotck;
}
else if(instock.instockType=="")
{
return Result.ReFailure(ResultCodes.ShelfNoPurchaseSave_InstokType_Error);
}
else
{
t = InstockType.Purchase;
}
t = InstockType.Purchase;
}
var save_result = await this.ShelfSave(instock, t, loginInfo, isTransaction);
@@ -951,51 +957,61 @@ namespace WMS.Web.Domain.Services
var sourceBillNos = entity.ErpDetails.GroupBy(x => x.SourceBillNo).Select(x => x.Key).ToList();
var erp_InStockErpDetails = await sc_inStockRepositories.GetErpDetails(sourceBillNos);
foreach (var det in erpDetails)
if (erpDetails.Count == 0)
{
var erpDto = new ErpPushDto()
{
RuleId = "PUR_PurchaseOrder-STK_InStock",//转换规则内码 采购订单下推采购入库单
FormId = FormIdParam.PUR_PurchaseOrder.ToString(),
TargetFormId = FormIdParam.STK_InStock.ToString(),
DetailsId = det.ErpDetailId.ToString(),
IsDraftWhenSaveFail = true//是否需要暂存
};
var erp_InStockBillNos = erp_InStockErpDetails.Where(x => x.SourceBillNo == det.SourceBillNo).Select(x => x.ErpSyncBillNo).ToList();
List<ErpPurchaseInStockDetailsDto> details = new List<ErpPurchaseInStockDetailsDto>();
var resPurchaseInStockDetails_result = await sc_erpService.BillQueryForPurchaseInStockBy(det.ErpDetailId.ToString(), erp_InStockBillNos);
if (resPurchaseInStockDetails_result.IsSuccess)
details = resPurchaseInStockDetails_result.Data;
//金蝶已有的单;进行金蝶不同操作处理:保存,提交,审核
ErpPurchaseInStockDetailsDto currentDet = null;
if (det.ErpInStockDetailId.HasValue)
currentDet = details.Where(x => x.DetailId == det.ErpInStockDetailId.Value.ToString()).FirstOrDefault();
if (currentDet != null)
{
var res = await this.QueryFirst(currentDet, erpDto.TargetFormId, entity.BillNo, det, sc_erpService);
if (res.result.IsSuccess)
entity.SyncSuccess(det.ErpDetailId, loginInfo?.UserInfo?.StaffId ?? 0, res.erpBillNo);
else
entity.SyncFail(res.result.Message, det.ErpDetailId, loginInfo?.UserInfo?.StaffId ?? 0, res.syncStatus);
//记录金蝶入库单明细ID
det.RecodErpInStockDetailId(res.instockDetailId);
for (int i = 0; i < entity.ErpDetails.Count; i++)
{
entity.SyncFail("失败,找不到数据,请检查采购订单是否反审核或是否有被删除", entity.ErpDetails[0].ErpDetailId, loginInfo?.UserInfo?.StaffId ?? 0, SyncStatus.Fail);
}
else
}
else
{
foreach (var det in erpDetails)
{
//下推金蝶
var res = await this.Push(erpDto, det, entity.BillNo, sc_erpService, sc_inStockRepositories,"pur");
if (res.result.IsSuccess)
entity.SyncSuccess(det.ErpDetailId, loginInfo?.UserInfo?.StaffId ?? 0, res.erpBillNo);
var erpDto = new ErpPushDto()
{
RuleId = "PUR_PurchaseOrder-STK_InStock",//转换规则内码 采购订单下推采购入库单
FormId = FormIdParam.PUR_PurchaseOrder.ToString(),
TargetFormId = FormIdParam.STK_InStock.ToString(),
DetailsId = det.ErpDetailId.ToString(),
IsDraftWhenSaveFail = true//是否需要暂存fa
//IsDraftWhenSaveFail = false//是否需要暂存
};
var erp_InStockBillNos = erp_InStockErpDetails.Where(x => x.SourceBillNo == det.SourceBillNo).Select(x => x.ErpSyncBillNo).ToList();
List<ErpPurchaseInStockDetailsDto> details = new List<ErpPurchaseInStockDetailsDto>();
var resPurchaseInStockDetails_result = await sc_erpService.BillQueryForPurchaseInStockBy(det.ErpDetailId.ToString(), erp_InStockBillNos);
if (resPurchaseInStockDetails_result.IsSuccess)
details = resPurchaseInStockDetails_result.Data;
//金蝶已有的单;进行金蝶不同操作处理:保存,提交,审核
ErpPurchaseInStockDetailsDto currentDet = null;
if (det.ErpInStockDetailId.HasValue)
currentDet = details.Where(x => x.DetailId == det.ErpInStockDetailId.Value.ToString()).FirstOrDefault();
if (currentDet != null)
{
var res = await this.QueryFirst(currentDet, erpDto.TargetFormId, entity.BillNo, det, sc_erpService);
if (res.result.IsSuccess)
entity.SyncSuccess(det.ErpDetailId, loginInfo?.UserInfo?.StaffId ?? 0, res.erpBillNo);
else
entity.SyncFail(res.result.Message, det.ErpDetailId, loginInfo?.UserInfo?.StaffId ?? 0, res.syncStatus);
//记录金蝶入库单明细ID
det.RecodErpInStockDetailId(res.instockDetailId);
}
else
entity.SyncFail(res.result.Message, det.ErpDetailId, loginInfo?.UserInfo?.StaffId ?? 0, res.syncStatus);
//记录金蝶入库单明细ID
det.RecodErpInStockDetailId(res.instockDetailId);
{
//下推金蝶
var res = await this.Push(erpDto, det, entity.BillNo, sc_erpService, sc_inStockRepositories, "pur");
if (res.result.IsSuccess)
entity.SyncSuccess(det.ErpDetailId, loginInfo?.UserInfo?.StaffId ?? 0, res.erpBillNo);
else
entity.SyncFail(res.result.Message, det.ErpDetailId, loginInfo?.UserInfo?.StaffId ?? 0, res.syncStatus);
//记录金蝶入库单明细ID
det.RecodErpInStockDetailId(res.instockDetailId);
}
}
}
//最好一条一条执行,否则执行失败 但是金蝶那边又同步成功 就会造成数据比价乱
var isSuccess = await sc_InStockRepositories.Update(entity, true);
@@ -1040,49 +1056,59 @@ namespace WMS.Web.Domain.Services
var sourceBillNos = entity.ErpDetails.GroupBy(x => x.SourceBillNo).Select(x => x.Key).ToList();
var erp_InStockErpDetails = await sc_inStockRepositories.GetErpDetails(sourceBillNos);
foreach (var det in erpDetails)
if (erpDetails.Count == 0)
{
var erpDto = new ErpPushDto()
for (int i = 0; i < entity.ErpDetails.Count; i++)
{
// RuleId = "PUR_PurchaseOrder-STK_InStock",//转换规则内码 汇报单下推汇报入库单
RuleId = "PRD_MORPT2INSTOCK",//转换规则内码 汇报单下推汇报入库单
FormId = FormIdParam.PRD_MORPT.ToString(),
TargetFormId = FormIdParam.PRD_INSTOCK.ToString(),
DetailsId = det.ErpDetailId.ToString(),
IsDraftWhenSaveFail = true//是否需要暂存
};
var erp_InStockBillNos = erp_InStockErpDetails.Where(x => x.SourceBillNo == det.SourceBillNo).Select(x => x.ErpSyncBillNo).ToList();
List<ErpPurchaseInStockDetailsDto> details = new List<ErpPurchaseInStockDetailsDto>();
var resPurchaseInStockDetails_result = await sc_erpService.BillQueryForProduceInStockBy(det.ErpDetailId.ToString(), erp_InStockBillNos);
if (resPurchaseInStockDetails_result.IsSuccess)
details = resPurchaseInStockDetails_result.Data;
//金蝶已有的单;进行金蝶不同操作处理:保存,提交,审核
ErpPurchaseInStockDetailsDto currentDet = null;
if (det.ErpInStockDetailId.HasValue)
currentDet = details.Where(x => x.DetailId == det.ErpInStockDetailId.Value.ToString()).FirstOrDefault();
if (currentDet != null)
{
var res = await this.QueryFirst(currentDet, erpDto.TargetFormId, entity.BillNo, det, sc_erpService);
if (res.result.IsSuccess)
entity.SyncSuccess(det.ErpDetailId, loginInfo?.UserInfo?.StaffId ?? 0, res.erpBillNo);
else
entity.SyncFail(res.result.Message, det.ErpDetailId, loginInfo?.UserInfo?.StaffId ?? 0, res.syncStatus);
//记录金蝶入库单明细ID
det.RecodErpInStockDetailId(res.instockDetailId);
entity.SyncFail("失败,找不到数据,请检查生产汇报单是否反审核或是否有被删除", entity.ErpDetails[0].ErpDetailId, loginInfo?.UserInfo?.StaffId ?? 0, SyncStatus.Fail);
}
else
}
else
{
foreach (var det in erpDetails)
{
//下推金蝶
var res = await this.Push(erpDto, det, entity.BillNo, sc_erpService, sc_inStockRepositories, "prd");
if (res.result.IsSuccess)
entity.SyncSuccess(det.ErpDetailId, loginInfo?.UserInfo?.StaffId ?? 0, res.erpBillNo);
var erpDto = new ErpPushDto()
{
// RuleId = "PUR_PurchaseOrder-STK_InStock",//转换规则内码 汇报单下推汇报入库单
RuleId = "PRD_MORPT2INSTOCK",//转换规则内码 汇报单下推汇报入库单
FormId = FormIdParam.PRD_MORPT.ToString(),
TargetFormId = FormIdParam.PRD_INSTOCK.ToString(),
DetailsId = det.ErpDetailId.ToString(),
IsDraftWhenSaveFail = true//是否需要暂存
//IsDraftWhenSaveFail = false//是否需要暂存
};
var erp_InStockBillNos = erp_InStockErpDetails.Where(x => x.SourceBillNo == det.SourceBillNo).Select(x => x.ErpSyncBillNo).ToList();
List<ErpPurchaseInStockDetailsDto> details = new List<ErpPurchaseInStockDetailsDto>();
var resPurchaseInStockDetails_result = await sc_erpService.BillQueryForProduceInStockBy(det.ErpDetailId.ToString(), erp_InStockBillNos);
if (resPurchaseInStockDetails_result.IsSuccess)
details = resPurchaseInStockDetails_result.Data;
//金蝶已有的单;进行金蝶不同操作处理:保存,提交,审核
ErpPurchaseInStockDetailsDto currentDet = null;
if (det.ErpInStockDetailId.HasValue)
currentDet = details.Where(x => x.DetailId == det.ErpInStockDetailId.Value.ToString()).FirstOrDefault();
if (currentDet != null)
{
var res = await this.QueryFirst(currentDet, erpDto.TargetFormId, entity.BillNo, det, sc_erpService);
if (res.result.IsSuccess)
entity.SyncSuccess(det.ErpDetailId, loginInfo?.UserInfo?.StaffId ?? 0, res.erpBillNo);
else
entity.SyncFail(res.result.Message, det.ErpDetailId, loginInfo?.UserInfo?.StaffId ?? 0, res.syncStatus);
//记录金蝶入库单明细ID
det.RecodErpInStockDetailId(res.instockDetailId);
}
else
entity.SyncFail(res.result.Message, det.ErpDetailId, loginInfo?.UserInfo?.StaffId ?? 0, res.syncStatus);
//记录金蝶入库单明细ID
det.RecodErpInStockDetailId(res.instockDetailId);
{
//下推金蝶
var res = await this.Push(erpDto, det, entity.BillNo, sc_erpService, sc_inStockRepositories, "prd");
if (res.result.IsSuccess)
entity.SyncSuccess(det.ErpDetailId, loginInfo?.UserInfo?.StaffId ?? 0, res.erpBillNo);
else
entity.SyncFail(res.result.Message, det.ErpDetailId, loginInfo?.UserInfo?.StaffId ?? 0, res.syncStatus);
//记录金蝶入库单明细ID
det.RecodErpInStockDetailId(res.instockDetailId);
}
}
@@ -1160,6 +1186,9 @@ namespace WMS.Web.Domain.Services
var res_s = await sc_erpService.Save<ErpProduceInStockSaveDto>(purchaseInStock, formId);
if (!res_s.IsSuccess)
{
ErpOperateDto o_dto1 = new ErpOperateDto(dto.TargetFormId, null, id);//res_s.Data
//如果有错,就删除相关单据
var del_res = await sc_erpService.Delete(o_dto1, dto.TargetFormId);
_logger.LogInformation($"入库单->保存失败 单号:{billNo} erp明细Id:{erpDetail.ErpDetailId} 错误:{res_s.Message}");
return (Result.ReFailure(res_s.Message, res_s.Status), SyncStatus.SubmitFail, "", purchaseInStock.Details[0].DetailId);
}

View File

@@ -78,6 +78,11 @@ namespace WMS.Web.Domain.Services
var result = await this.SsynPurchaseInStock(billNos, isTransaction);
if (!result.IsSuccess) isRollback = true;
}
else if(task.Type==InstockType.ProduceSotck)
{
var result = await this.SsynProduceSotck(billNos, isTransaction);
if (!result.IsSuccess) isRollback = true;
}
else if (task.Type == InstockType.Miscellaneous)
{
var result = await this.SysnMiscellaneous(billNos, isTransaction);
@@ -258,7 +263,13 @@ namespace WMS.Web.Domain.Services
if (billNos == null || billNos.Count == 0)
{
var beginTime = DateTime.Now.AddHours(-20);//默认拉去8小时以内的数据ALTER BY YZH
// var beginTime = DateTime.Now.AddDays(-200);//默认拉去8小时以内的数据ALTER BY YZH这里要改回去
// var beginTime = DateTime.Now.AddDays(-200);//默认拉去8小时以内的数据ALTER BY YZH这里要改回去
//4.同步数据:分步式入库单
var Transferin_result = await this.SysnTransferin(null, isTransaction, beginTime);
if (!Transferin_result.IsSuccess)
return Result.ReFailure(Transferin_result.Message, Transferin_result.Status);
//6.同步数据:生产入库单
@@ -268,11 +279,7 @@ namespace WMS.Web.Domain.Services
//4.同步数据:分步式入库单
var Transferin_result = await this.SysnTransferin(null, isTransaction, beginTime);
if (!Transferin_result.IsSuccess)
return Result.ReFailure(Transferin_result.Message, Transferin_result.Status);
@@ -308,7 +315,7 @@ namespace WMS.Web.Domain.Services
List<string> TransferDirect_sourceBillNos = new List<string>();
List<string> Transferin_sourceBillNos = new List<string>();
List<string> AssembledApp_sourceBillNos = new List<string>();
List<string> ProduceStock_sourceBillNos = new List<string>();
var taskList = await _inStockTaskRepositories.GetListBy(billNos);
foreach (var entity in taskList)
{
@@ -322,6 +329,10 @@ namespace WMS.Web.Domain.Services
AssembledApp_sourceBillNos.Add(entity.SourceBillNo);
else if (entity.Type == InstockType.Miscellaneous)
Miscellaneous_sourceBillNos.Add(entity.SourceBillNo);
else if (entity.Type == InstockType.ProduceSotck)
ProduceStock_sourceBillNos.Add(entity.SourceBillNo);
}
if (Instock_sourceBillNos.Count() > 0)
@@ -359,6 +370,15 @@ namespace WMS.Web.Domain.Services
if (!AssembledApp_result.IsSuccess)
return Result.ReFailure(AssembledApp_result.Message, AssembledApp_result.Status);
}
if (ProduceStock_sourceBillNos.Count() > 0)
{
//5.同步数据:生产汇报单
var ProduceStock_result = await this.SsynPurchaseInStock(ProduceStock_sourceBillNos, isTransaction);
if (!ProduceStock_result.IsSuccess)
return Result.ReFailure(ProduceStock_result.Message, ProduceStock_result.Status);
}
}
return Result.ReSuccess();
}
@@ -629,18 +649,18 @@ namespace WMS.Web.Domain.Services
bool IsAny = details_Groups.Any(d => d.RealityQtyTotal != 0 && d.AccruedQtyTotal > d.RealityQtyTotal);
if (IsAny)
order.Status = InstockStatus.Part;
else if (details_Groups.Sum(x => x.ReceiveQtyTotal) <= 0 && order.Type == InstockType.Purchase)
else if (details_Groups.Sum(x => x.ReceiveQtyTotal) <= 0 && (order.Type == InstockType.Purchase || order.Type == InstockType.ProduceSotck))
order.Status = InstockStatus.Wait;
else if (details_Groups.Sum(x => x.RealityQtyTotal) <= 0)
{
if (order.Type == InstockType.ProduceSotck)
{
order.Status = InstockStatus.Wait;
}
else
{
//if (order.Type == InstockType.ProduceSotck)
//{
// order.Status = InstockStatus.Wait;
//}
//else
//{
order.Status = InstockStatus.WaitInStock;
}
//}
}
else if (details_Groups.Sum(x => x.RealityQtyTotal) >= details_Groups.Sum(x => x.AccruedQtyTotal))
order.Status = InstockStatus.Already;
@@ -800,7 +820,7 @@ namespace WMS.Web.Domain.Services
List<string> TransferDirect_sourceBillNos = new List<string>();
List<string> Transferin_sourceBillNos = new List<string>();
List<string> AssembledApp_sourceBillNos = new List<string>();
// List<string> ProduceSotck_sourceBillNos = new List<string>();//生产入库
List<string> ProduceSotck_sourceBillNos = new List<string>();//生产入库
foreach (var entity in list)
{
@@ -814,17 +834,24 @@ namespace WMS.Web.Domain.Services
AssembledApp_sourceBillNos.Add(entity.SourceBillNo);
else if (entity.Type == InstockType.Miscellaneous)
Miscellaneous_sourceBillNos.Add(entity.SourceBillNo);
//else if (entity.Type == InstockType.ProduceSotck)
// ProduceSotck_sourceBillNos.Add(entity.SourceBillNo);
else if (entity.Type == InstockType.ProduceSotck)
ProduceSotck_sourceBillNos.Add(entity.SourceBillNo);
}
if (Transferin_sourceBillNos.Count() > 0)
{
var erp_result = await _erpService.BillQueryForTransferin(Transferin_sourceBillNos, null);
if (!erp_result.IsSuccess)
return Result<List<ErpInStockResultDto>>.ReFailure(erp_result.Message, erp_result.Status);
erp_list.AddRange(erp_result.Data);
}
//if (ProduceSotck_sourceBillNos.Count() > 0)//生产入库
//{
// var erp_result = await _erpService.BillQueryForProduceSotckin(ProduceSotck_sourceBillNos, null);
// if (!erp_result.IsSuccess)
// return Result<List<ErpInStockResultDto>>.ReFailure(erp_result.Message, erp_result.Status);
// erp_list.AddRange(erp_result.Data);
//}
if (ProduceSotck_sourceBillNos.Count() > 0)//生产入库
{
var erp_result = await _erpService.BillQueryForProduceSotckin(ProduceSotck_sourceBillNos, null);
if (!erp_result.IsSuccess)
return Result<List<ErpInStockResultDto>>.ReFailure(erp_result.Message, erp_result.Status);
erp_list.AddRange(erp_result.Data);
}
if (Instock_sourceBillNos.Count() > 0)
{
@@ -847,13 +874,7 @@ namespace WMS.Web.Domain.Services
return Result<List<ErpInStockResultDto>>.ReFailure(erp_result.Message, erp_result.Status);
erp_list.AddRange(erp_result.Data);
}
if (Transferin_sourceBillNos.Count() > 0)
{
var erp_result = await _erpService.BillQueryForTransferin(Transferin_sourceBillNos, null);
if (!erp_result.IsSuccess)
return Result<List<ErpInStockResultDto>>.ReFailure(erp_result.Message, erp_result.Status);
erp_list.AddRange(erp_result.Data);
}
if (AssembledApp_sourceBillNos.Count() > 0)
{
var erp_result_ass = await _erpService.BillQueryForAssembledApp_Assembly(AssembledApp_sourceBillNos, null);

View File

@@ -25,6 +25,7 @@ using WMS.Web.Domain.Values.Single;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;
using Newtonsoft.Json;
using NPOI.HSSF.Record.Chart;
namespace WMS.Web.Domain.Services
{
@@ -555,6 +556,35 @@ namespace WMS.Web.Domain.Services
return Result.ReSuccess();
}
///// <summary>
///// 得到物料个数
///// </summary>
///// <param name="entitys"></param>
///// <param name="SuitNumber"></param>
//public string GetMaterialCount(List<SerialNumbers> entitys, string SuitNumber)
//{
// string strReturn = "";
// foreach (var item in entitys)
// {
// if (item.SuitNumber == SuitNumber)
// {
// if (strReturn == "")
// {
// strReturn = item.SerialNumber;
// }
// else
// {
// strReturn = strReturn + "," + item.SerialNumber;
// }
// }
// }
// return strReturn;
//}
/// <summary>
/// 获取出库任务单详情
/// </summary>
@@ -639,13 +669,99 @@ namespace WMS.Web.Domain.Services
};
response.Details.Add(infoDetail);
}
//排序和加序号值
//response.Details = response.Details.OrderByDescending(s => s.Specifications)
// .ThenByDescending(s => s.Method).ThenByDescending(s => s.Qty).ToList();
// response.Details.ForEach(f => f.IndexNumber = response.Details.IndexOf(f) + 1);
response.Details = response.Details.OrderByDescending(s => s.Method)
.ThenByDescending(s => s.BoxBillNo).ThenBy(s => s.BoxLength).ToList();
////排序和加序号值
//response.Details = response.Details.OrderByDescending(s => s.Specifications).ThenBy(s => s.Method)
//// .ThenByDescending(s => s.Method).ThenByDescending(s => s.Qty)
//// response.Details.ForEach(f => f.IndexNumber = response.Details.IndexOf(f) + 1);
////response.Details = response.Details.OrderByDescending(s => s.Method).ThenBy(s => s.Specifications).ThenByDescending(s => s.BoxBillNo).ThenByDescending(s=>s.Qty)
//.ThenByDescending(s => s.BoxBillNo).ThenBy(s => s.BoxLength).ThenByDescending(s => s.Qty)
//.ToList();
////alter by yzh 20250715 加了:.OrderByDescending(y=>y.Specifications)
//for (int i = 0; i < response.Details.Count(); i++)
//{
// if (i == 0)
// response.Details[0].IndexNumber = 1;
// else
// {
// //和上一个箱子比 如果是相同的箱子序号一样
// if (response.Details[i].BoxBillNo == response.Details[i - 1].BoxBillNo)
// response.Details[i].IndexNumber = response.Details[i - 1].IndexNumber;
// else
// response.Details[i].IndexNumber = response.Details[i - 1].IndexNumber + 1;
// //if (response.Details[i].BoxBillNo == response.Details[i - 1].BoxBillNo)
// // response.Details[i].IndexNumber = response.Details[i - 1].IndexNumber;
// //else
// // response.Details[i].IndexNumber = response.Details[i - 1].IndexNumber + 1;
// }
//}
//排序和加序号值以下为最先的
var groupedByTwoColumns = response.Details
.GroupBy(
keySelector: p => new { p.BoxBillNo, p.Specifications } // 复合分组键(匿名类型)
// elementSelector: p => new { p.BoxBillNo, p.Specifications,p.Qty } // 可选指定分组后每组包含的元素此处只保留Price
)
// 对分组结果进行投影,提取关键信息
.Select(g => new
{
BoxBillNo = g.Key.BoxBillNo, // 第一分组列
Specifications = g.Key.Specifications, // 第二分组列
ProductCount = g.Count() // 每组商品数量
});
var hunzhuang = groupedByTwoColumns.GroupBy(p => p.BoxBillNo)
.Select(group => new
{
BoxBillNo = group.Key,
Count = group.Count()
});
foreach (var item in response.Details)
{
var eList = hunzhuang.Where(f => f.BoxBillNo == item.BoxBillNo ).ToList();
item.MaterialCount = eList[0].Count;
}
//for (int i = 0; i < response.Details.Count(); i++)
//{
// var infoDetail = response.Details[i];
//}
var detailsA = response.Details.Where(f=>f.MaterialCount==1).OrderByDescending(s => s.Specifications)
//.ThenByDescending(s => s.Method)
//.ThenByDescending(s => s.BoxBillNo).ThenBy(s => s.BoxLength)
.ThenByDescending(s => s.Qty).ThenByDescending(s => s.BoxBillNo).ThenByDescending(s => s.Method).ToList();
//for (int i = 0; i < response.Details.Count(); i++)
//{
// if (i == 0)
// response.Details[0].IndexNumber = 1;
// else
// {
// //和上一个箱子比 如果是相同的箱子序号一样
// if (response.Details[i].BoxBillNo == response.Details[i - 1].BoxBillNo && response.Details[i].Method == "按箱" && response.Details[i - 1].Method== "按箱")
// response.Details[i].IndexNumber = response.Details[i - 1].IndexNumber;
// else
// response.Details[i].IndexNumber = response.Details[i - 1].IndexNumber + 1;
// }
//}
var detailsB = response.Details.Where(f => f.MaterialCount > 1)
//.ThenByDescending(s => s.Method)
// .ThenByDescending(s => s.Specifications)
//.ThenByDescending(s => s.BoxBillNo).ThenBy(s => s.BoxLength)
.OrderByDescending(s => s.BoxBillNo).ThenByDescending(s => s.Method).ThenByDescending(s => s.Qty).ToList();
detailsA.AddRange(detailsB);
response.Details=detailsA;
for (int i = 0; i < response.Details.Count(); i++)
{
if (i == 0)
@@ -653,13 +769,40 @@ namespace WMS.Web.Domain.Services
else
{
//和上一个箱子比 如果是相同的箱子序号一样
if (response.Details[i].BoxBillNo == response.Details[i - 1].BoxBillNo)
if (response.Details[i].BoxBillNo == response.Details[i - 1].BoxBillNo && response.Details[i].Method == "按箱" && response.Details[i - 1].Method == "按箱")
response.Details[i].IndexNumber = response.Details[i - 1].IndexNumber;
else
response.Details[i].IndexNumber = response.Details[i - 1].IndexNumber + 1;
}
}
//结束最先的
////排序和加序号值以下为最先的
//response.Details = response.Details.OrderByDescending(s => s.Method)
// .ThenByDescending(s => s.BoxBillNo).ThenBy(s => s.BoxLength).ToList();
//for (int i = 0; i < response.Details.Count(); i++)
//{
// if (i == 0)
// response.Details[0].IndexNumber = 1;
// else
// {
// //和上一个箱子比 如果是相同的箱子序号一样
// if (response.Details[i].BoxBillNo == response.Details[i - 1].BoxBillNo)
// response.Details[i].IndexNumber = response.Details[i - 1].IndexNumber;
// else
// response.Details[i].IndexNumber = response.Details[i - 1].IndexNumber + 1;
// }
//}
////结束最先的
return Result<OutStockTaskInfoResponse>.ReSuccess(response);
}
/// <summary>
@@ -707,8 +850,16 @@ namespace WMS.Web.Domain.Services
}
else
{
string hadsavel = "";
foreach (var s in d.SerialNumberList)
{
//先跟据条码查询对应的
List<string> l= new List<string>();
l.Add(s.ToString());
var serialNumbers = await _outStockTaskRepositories.GetEntityList(l);
// hadsavel = hadsavel + serialNumbers[0].TwoSerialNumber;
list.Add(new ExportInfoResponse()
{
SourceBillNo = response.SourceBillNo,
@@ -725,15 +876,28 @@ namespace WMS.Web.Domain.Services
BoxWide = d.BoxWide,
BoxHigh = d.BoxHigh,
BoxWeight = d.BoxWeight,
SerialNumbers = s
Qty = d.Qty,
AccruedQty = d.AccruedQty,
SerialNumbers = serialNumbers[0].IsTwo==1? serialNumbers[0].SerialNumber:serialNumbers[0].TwoSerialNumber
});
}
}
}
}
var list2 = list.GroupBy(p => new { p.SourceBillNo, p.SaleBillNo,p.ReceiptCustomer, p.CreateTime, p.BoxBillNo, p.Specifications, p.MaterialName, p.MaterialNumber, p.BarCode, p.IndexNumber, p.BoxLength, p.BoxWide, p.BoxHigh, p.BoxWeight, p.Qty, p.AccruedQty, p.SerialNumbers }) // Group by Name and Age properties
.Select(g => g.First()) // Select the first item of each group (arbitrary choice)
.ToList(); // Convert back to list if needed. If you only need the distinct items, you can skip this step.
// list.Distinct().ToList();
var _exportExcelService = scope.ServiceProvider.GetRequiredService<IExportExcelService>();
await _exportExcelService.Export(list, fileName, loginInfo.UserInfo.StaffId, loginInfo.UserInfo.CompanyId, FileDownLoadOrderType.OutStockTaskInfo);
await _exportExcelService.Export(list2, fileName, loginInfo.UserInfo.StaffId, loginInfo.UserInfo.CompanyId, FileDownLoadOrderType.OutStockTaskInfo);
}
}
catch (Exception ex)
@@ -792,6 +956,9 @@ namespace WMS.Web.Domain.Services
List<string> TransferOut_Nos = new List<string>();
List<string> AssembledApp_Nos = new List<string>();
List<string> MisDeliveryOut_Nos = new List<string>();
List<string> PickingOut_Nos = new List<string>();//生产入库
foreach (var entity in list)
{
if (entity.Type == OutStockType.Sal)
@@ -804,8 +971,19 @@ namespace WMS.Web.Domain.Services
AssembledApp_Nos.AddRange(entity.Details.SelectMany(s => s.ErpDetails).Select(s => s.SourceBillNo));
else if (entity.Type == OutStockType.Miscellaneous)
MisDeliveryOut_Nos.AddRange(entity.Details.SelectMany(s => s.ErpDetails).Select(s => s.SourceBillNo));
else if (entity.Type == OutStockType.PickingOut)
PickingOut_Nos.AddRange(entity.Details.SelectMany(s => s.ErpDetails).Select(s => s.SourceBillNo));
}
if (PickingOut_Nos.Count() > 0)
{
var erp_result = await _erpService.BillQueryForPickingOutStock(PickingOut_Nos, null);
if (!erp_result.IsSuccess)
return Result<List<ErpDeliveryNoticeOutStockResultDto>>.ReFailure(erp_result.Message, erp_result.Status);
erp_list.AddRange(erp_result.Data);
}
if (SalOutStock_Nos.Count() > 0)
{
var erp_result = await _erpService.BillQueryForSalOutStock(SalOutStock_Nos, null);

View File

@@ -597,15 +597,16 @@ namespace WMS.Web.Domain.Services.Public
//2.时间条件:可能还有其它条件
//var beginTime = DateTime.Now.AddDays(-2).ToString("yyyy-MM-dd 00:00:00");
var beginStr = DateTime.Now.AddDays(-3).ToString("yyyy-MM-dd HH:mm:ss");
// var beginStr = DateTime.Now.AddDays(-180).ToString("yyyy-MM-dd HH:mm:ss");
// var beginStr = DateTime.Now.AddDays(-180).ToString("yyyy-MM-dd HH:mm:ss");
// var beginStr = DateTime.Now.AddDays(-3).ToString("yyyy-MM-dd HH:mm:ss");
var beginStr = DateTime.Now.AddDays(-3).ToString("yyyy-MM-dd HH:mm:ss");
// var beginStr = DateTime.Now.AddDays(-10).ToString("yyyy-MM-dd HH:mm:ss");
if (beginTime != null) beginStr = beginTime?.ToString("yyyy-MM-dd HH:mm:ss");
// beginStr = DateTime.Now.AddDays(-10).ToString("yyyy-MM-dd HH:mm:ss");
var endTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
//3.获取金蝶分步式入库订单:拼接参数和条件
var query = new ErpBillQueryDto(token_result.Data);
var param = new ErpBillQueryParamDto(FormIdParam.STK_TRANSFERIN.ToString());
param.FieldKeys = "FBillNo,FStockOrgID,FMaterialID.FNumber,FDestStockID,FDestStockID.FNumber,FQty,FCreateDate,FEntryNote,FStockOrgID.FNumber,FSTKTRSINENTRY_FEntryID";
param.FieldKeys = "FSrcBillType,FBillNo,FStockOrgID,FMaterialID.FNumber,FDestStockID,FDestStockID.FNumber,FQty,FCreateDate,FEntryNote,FStockOrgID.FNumber,FSTKTRSINENTRY_FEntryID";
param.Limit = 10000;
//查询条件:备注其中的条件值以金蝶的值为准!!!
//1.创建时间在两天前和当天时间之间
@@ -615,7 +616,8 @@ namespace WMS.Web.Domain.Services.Public
//当金蝶系统物料明细行调出仓库和调入仓库相同, 数据不需要拉取
//param.FilterString = " FDocumentStatus='C' and FBillTypeID='e65a4f29743a44b7b67dc8145e1f9c92'";
param.FilterString = " 1=1";
param.FilterString += " and FSrcBillType<>'STK_TRANSFERIN'";
// param.FilterString += " and FSrcBillType<>'STK_TRANSFERIN' and FBillNo='FBDR226242'";
param.FilterString += " and FSrcBillType<>'STK_TransferDirect'";
if (isCheck) param.FilterString += " and FDocumentStatus='C'";
param.FilterString += " and FSrcStockId!=FDestStockId";
for (int i = 0; i < stocks.Count(); i++)
@@ -651,7 +653,7 @@ namespace WMS.Web.Domain.Services.Public
}//注意:当有单据编号的查询的时候,时间条件去掉;不然就查不到数据了
else
{
//param.FilterString = param.FilterString + " and FCreateDate>='" + beginTime + "' and FCreateDate<='" + endTime + "'";
// param.FilterString = param.FilterString + " and FCreateDate>='" + beginStr + "' and FCreateDate<='" + endTime + "'";
param.FilterString = param.FilterString + " and FApproveDate>='" + beginStr + "' and FApproveDate<='" + endTime + "'";
}
@@ -795,6 +797,7 @@ namespace WMS.Web.Domain.Services.Public
lis.ErpDetailId = Convert.ToInt32(item[12]);
lis.Type = (int)InstockType.ProduceSotck;
lis.SaleBillNo = item[1];
erp_list.Add(lis);
}
//_logger.LogInformation("分步式调入条数:" + erp_list.Count);
@@ -1154,14 +1157,14 @@ namespace WMS.Web.Domain.Services.Public
//3.获取金蝶物料:拼接参数和条件
var query = new ErpBillQueryDto(token_result.Data);
var param = new ErpBillQueryParamDto(FormIdParam.BD_MATERIAL.ToString());
param.FieldKeys = "FMATERIALID,FName,FNumber,FSpecification,FBaseUnitId,FBaseUnitId.FName,FBaseUnitId.FNumber,FBARCODE,FUseOrgId,FUseOrgId.FNumber,FIsBatchManage,FProductLines1,FProductCATs1,FMaterialGroup,F_Product,FModifyDate,FCreateDate,FProductLines1.FName,FProductCATs1.FName,FMaterialGroup.FName";
param.FieldKeys = "FMATERIALID,FName,FNumber,FSpecification,FBaseUnitId,FBaseUnitId.FName,FBaseUnitId.FNumber,FBARCODE,FUseOrgId,FUseOrgId.FNumber,FIsBatchManage,FProductLines1,FProductCATs1,FMaterialGroup,F_Product,FModifyDate,FCreateDate,FProductLines1.FName,FProductCATs1.FName,FMaterialGroup.FName,FProductIDS";
param.Limit = 10000;
//查询条件:备注其中的条件值以金蝶的值为准!!!
//1.审核状态:已审核
//2.禁用状态A否B是
//3.使用组织只查询“深圳市元创时代科技有限公司”这个组织组织ID=100008--固定值查询(测试端和正式是一样的)
param.FilterString = "FDocumentStatus='C' and FForbidStatus='A' and (FUseOrgId=19162897 or FUseOrgId=100008)";
param.FilterString = "FDocumentStatus='C' and FForbidStatus='A' and (FUseOrgId=19162897 or FUseOrgId=100008) ";
//param.FilterString = "FDocumentStatus='C' and FForbidStatus='A' and FUseOrgId=100008";
param.OrderString = "FCreateDate ASC";
@@ -1214,6 +1217,7 @@ namespace WMS.Web.Domain.Services.Public
lis.FProductLines1FName=item[17];
lis.FProductCATs1FName = item[18];
lis.FMaterialGroupFName = item[19];
lis.FProductIDS = item[20];
erp_materials_list.Add(lis);
}
@@ -1897,6 +1901,8 @@ namespace WMS.Web.Domain.Services.Public
}
var msg = jobject["Result"]["ResponseStatus"]["Errors"][0]["Message"].ToString();
return Result<string>.ReFailure(msg, 10002);
}
catch (Exception ex)
@@ -2013,7 +2019,7 @@ namespace WMS.Web.Domain.Services.Public
var token_result = await this.Init();
if (!token_result.IsSuccess)
return token_result;
var query = new ErpBillQueryDto(token_result.Data);
var query = new ErpBillQueryDto(token_result.Data,formId);
//提交
query.Data = JsonConvert.SerializeObject(dto);
@@ -2039,6 +2045,7 @@ namespace WMS.Web.Domain.Services.Public
/// <returns></returns>
public async Task<Result<string>> Push(ErpPushDto dto)
{
string id = "";
try
{
var token_result = await this.Init();
@@ -2053,10 +2060,11 @@ namespace WMS.Web.Domain.Services.Public
JObject jobject = (JObject)JsonConvert.DeserializeObject(result_json);
var isSuccess = jobject["Result"]["ResponseStatus"]["IsSuccess"].ToString().ToLower();
if (jobject["Result"]["ResponseStatus"]["IsSuccess"].ToString().ToLower() == "true")
{
//保存成功后返回Id 后续操作根据Id操作
string id = jobject["Result"]["ResponseStatus"]["SuccessEntitys"][0]["Id"].ToString();
id = jobject["Result"]["ResponseStatus"]["SuccessEntitys"][0]["Id"].ToString();
return Result<string>.ReSuccess(id);
}
@@ -2065,6 +2073,8 @@ namespace WMS.Web.Domain.Services.Public
}
catch (Exception ex)
{
return Result<string>.ReFailure(ex.ToString(), 10002);
}
}
@@ -2922,7 +2932,7 @@ namespace WMS.Web.Domain.Services.Public
//6.物料 物料属性=费用或资产或服务的排除 不拉取
//param.FilterString = "FDocumentStatus='C' and FBillTypeID='ad0779a4685a43a08f08d2e42d7bf3e9'";
param.FilterString = " 1=1";
if (isCheck) param.FilterString += " and FDocumentStatus='C' and FSrcType<>'SAL_SaleOrder'";
if (isCheck) param.FilterString += " and FDocumentStatus='C' and FSrcType<>'SAL_OUTSTOCK' ";
param.FilterString += " and FMaterialID.FERPCLSID not in (10,11,6)";
//param.FilterString += " and FStockID.FNumber in (" + stocks_codes + ")";
//param.FilterString += " and FDeliveryOrgID.FNumber in (" + stocks_orgs + ")";

View File

@@ -92,7 +92,7 @@ namespace WMS.Web.Domain.Services
//修改有更新的数据
if (mats.Count != 0)
{
var isFModifyDateMatNumbs = mats.Where(x => x.FModifyDate>=DateTime.Now.AddDays(-10)).Select(x =>new { MaterialNumber= x.MaterialNumber, Specifications=x.Specifications }).ToList();
var isFModifyDateMatNumbs = mats.Where(x => x.FModifyDate>=DateTime.Now.AddDays(-5)).Select(x =>new { MaterialNumber= x.MaterialNumber, Specifications=x.Specifications, MaterialName =x.MaterialName, BarCode =x.BarCode, OrgId = x.OrgId, FProductLines1 =x.FProductLines1 , FProductCATs1 =x.FProductCATs1 , FMaterialGroup =x.FMaterialGroup , F_Product =x.F_Product , FProductLines1FName =x.FProductLines1FName , FProductCATs1FName =x.FProductCATs1FName , FMaterialGroupFName =x.FMaterialGroupFName , MaterialId =x.MaterialId , FProductIDS =x.FProductIDS }).ToList();
//
_logger.LogInformation("取到需要同步的金蝶修改物料规格yzh" + isFModifyDateMatNumbs.Count+"个");
@@ -112,9 +112,21 @@ namespace WMS.Web.Domain.Services
// entity.Specifications = mats_result[];
foreach (var mat in isFModifyDateMatNumbs)
{
if (entity.MaterialNumber== mat.MaterialNumber)
if (entity.MaterialNumber== mat.MaterialNumber )
{
entity.Specifications = mat.Specifications;
entity.MaterialName = mat.MaterialName;
entity.BarCode = mat.BarCode;
//entity.OrgId = mat.OrgId;
entity.FProductLines1 = mat.FProductLines1;
entity.FProductCATs1 = mat.FProductCATs1;
entity.FMaterialGroup = mat.FMaterialGroup;
entity.F_Product = mat.F_Product;
entity.FProductLines1FName = mat.FProductLines1FName;
entity.FProductCATs1FName = mat.FProductCATs1FName;
entity.FMaterialGroupFName = mat.FMaterialGroupFName;
entity.MaterialId = mat.MaterialId;
entity.FProductIDS = mat.FProductIDS;
continue;
}
}

View File

@@ -403,7 +403,8 @@ namespace WMS.Web.Domain.Services
//序列号操作记录
//
//操作记录
var res = await this.SerialNumberOperate(sList, false);
//提交事务
if (isTransaction)

View File

@@ -80,5 +80,12 @@ namespace WMS.Web.Domain.Values
/// </summary>
[EnumRemark("盘点单")]
Take = 14,
/// <summary>
/// 盘点单
/// </summary>
[EnumRemark("生产入库")]
ProduceSotck_In = 15,
}
}

View File

@@ -25,6 +25,7 @@ namespace WMS.Web.Domain.Values
public static ValueTuple<int, string> SourceBillNoDateError = (40005, "来源单不存在,请核对后再试");
public static ValueTuple<int, string> Concurrent_Instock = (80005, "该来源单正在处理中");
/// <summary>
/// 没有菜单权限,无法登录
@@ -83,7 +84,7 @@ namespace WMS.Web.Domain.Values
public static ValueTuple<int, string> InventoryDetailsWriteError = (800014, "写入即时库存明细失败!");
public static ValueTuple<int, string> MoveInventoryError = (800015, "箱已经上架,不能重复上架");
public static ValueTuple<int, string> BoxInventoryChangeBoxError = (800016, "箱已上架不支持再次装箱");
public static ValueTuple<int, string> ShelfNoPurchaseSave_InstokType_Error = (80017, "类型不能为空值");
public static ValueTuple<int, string> SerialNumbersNoData = (610000, "序列号不存在");
public static ValueTuple<int, string> SerialNumbersBoxError = (610002, "序列号已经绑定箱");

View File

@@ -96,7 +96,8 @@ namespace WMS.Web.Repositories
.SelectMany(x => x.orders.DefaultIfEmpty(), (p, order) => new { p.detail, order })
.GroupJoin(_context.Box, p => p.order.BoxId, t => t.Id, (p, ts) => new { p.detail, p.order, ts })
.SelectMany(x => x.ts.DefaultIfEmpty(), (p, box) => new { p.detail, p.order, box })
.Where(adv => 1 == 1 && adv.detail.Qty != 0);
.Where(adv => 1 == 1 && adv.detail.Qty != 0)
;
if (!string.IsNullOrEmpty(dto.BoxBillNo))
query = query.Where(w => EF.Functions.Like(w.box.BoxBillNo, "%" + dto.BoxBillNo + "%"));
@@ -404,18 +405,21 @@ namespace WMS.Web.Repositories
.SelectMany(x => x.orders.DefaultIfEmpty(), (p, order) => new { p.detail, order })
.GroupJoin(_context.Box, p => p.order.BoxId, t => t.Id, (p, ts) => new { p.detail, p.order, ts })
.SelectMany(x => x.ts.DefaultIfEmpty(), (p, box) => new { p.detail, p.order, box })
.Where(adv => 1 == 1 && adv.box.BoxBillNo.Equals(dto.BoxBillNo));
.Where(adv => 1 == 1 && adv.detail.Qty>0 && adv.box.BoxBillNo.Equals(dto.BoxBillNo));
if (!string.IsNullOrEmpty(dto.StockCode))
{
var splitStrs = dto.StockCode.Split("_$");
query = query.Where(w => w.order.StockCode == splitStrs[0] && w.order.OrgCode == splitStrs[1]);
}
GetPagedListBoxByBoxResponse response = new GetPagedListBoxByBoxResponse();
response.BoxBillNo = dto.BoxBillNo;
response.TotalCount = await query.CountAsync();
response.TotalQty = await query.SumAsync(s => s.detail.Qty);
response.Details = await query.Select(s => new GetPagedListBoxByBoxDetailsResponse()
{
Specifications = _erpBasicDataExtendService.GetMaterialSpecifications(materials, s.detail.MaterialNumber),

View File

@@ -515,7 +515,7 @@ namespace WMS.Web.Repositories
//这里只查状态为:部分入库和等待收货
var task_query = _context.InStockTask
.Where(w => EF.Functions.Like(w.SourceBillNo, "%" + dto.SourceBillNo + "%") && w.Type != InstockType.Purchase && (w.Status == InstockStatus.Part || w.Status == InstockStatus.Wait || w.Status == InstockStatus.WaitInStock));
.Where(w => EF.Functions.Like(w.SourceBillNo, "%" + dto.SourceBillNo + "%") && w.Type != InstockType.Purchase && w.Type!=InstockType.ProduceSotck && (w.Status == InstockStatus.Part || w.Status == InstockStatus.Wait || w.Status == InstockStatus.WaitInStock));
//找到头列表
var taskList = await task_query

View File

@@ -108,6 +108,7 @@ namespace WMS.Web.Repositories
var res = await query.FirstOrDefaultAsync();
return res.Clone();
}
/// <summary>
@@ -120,6 +121,7 @@ namespace WMS.Web.Repositories
return numbers.Clone().Distinct().ToList();
}
/// <summary>
/// 获取全部的物料编码
/// </summary>

View File

@@ -190,7 +190,7 @@ namespace WMS.Web.Repositories
Type = s.order.Type.GetRemark(),
Creator = _singleDataService.GetSingleData(SingleAction.Staffs, companyId, s.order.CreatorId),
CreateTime = s.order.CreateTime.DateToStringSeconds(),
SuccessSync = s.order.SuccessSync == SyncStatus.Success ? "成功" : (s.order.SuccessSync == SyncStatus.SyncIng ? "同步中" : "失败"),
// SuccessSync = s.order.SuccessSync == SyncStatus.Success ? "成功" : (s.order.SuccessSync == SyncStatus.SyncIng ? "同步中" : "失败"),
Stock = _singleDataService.GetSingleData(SingleAction.StocksJoinOrgCode, companyId, s.order.StockCode + s.order.OrgCode),
SourceBillNoList = s.detail.ErpDetails.Select(s => s.SourceBillNo).ToList(),
SaleBillNoList = s.detail.ErpDetails.Select(s => s.SaleBillNo).ToList(),
@@ -374,6 +374,37 @@ namespace WMS.Web.Repositories
}
return details;
}
/// <summary>
/// 根据序列号查询
/// </summary>
/// <param name="serialNumbers"></param>
/// <returns></returns>
public async Task<List<SerialNumbers>> GetEntityList(List<string> serialNumbers)
{
var res = await _context.SerialNumbers
// .Where(f => serialNumbers.Contains(f.SerialNumber))
.Where(f => serialNumbers.Contains(f.SerialNumber))
.ToListAsync();
var res_c = res.Clone();
//var s_e = res.Select(s => s.SerialNumber).ToList();
var s_e = res.Select(s => s.TwoSerialNumber).ToList();
//在序列表里没找到的序列码 则到老ops序列码数据里去处理 list比较 取差集
var s_c = serialNumbers.Except(s_e);
if (s_c.Count() > 0)
{
var entitys_ops = serialNumbers.Where(w => s_c.Contains(w)).ToList();
var r_o = await _context.SerialNumbers_Ops
.Where(f => serialNumbers.Contains(f.SerialNumber))
.ToListAsync();
res_c.AddRange(_mapper.Map<List<SerialNumbers>>(r_o.Clone()));
}
return res_c;
}
/// <summary>
/// 根据序列号搜索
/// </summary>

View File

@@ -375,7 +375,8 @@ namespace WMS.Web.Repositories
AccruedQty = s.detail.AccruedQty,
RealityQty = s.detail.RealityQty,
CreateTime = s.order.CreateTime.DateToStringSeconds(),
IsRepeal = s.detail.IsRepeal ?? false,
// IsRepeal = s.detail.IsRepeal ?? false,
IsRepeal = (bool)s.detail.IsRepeal ? "是" : "否",
OperateTime = s.order.OperateTime.DateToStringSeconds(),
Operator = _singleDataService.GetSingleData(SingleAction.Staffs, companyId, s.order.OperatorId ?? 0),
OutStockTime = s.order.OutStockTime.DateToStringSeconds(),
@@ -386,9 +387,9 @@ namespace WMS.Web.Repositories
SourceBillNoList = s.detail.ErpDetails.Select(s => s.SourceBillNo).ToList(),
SaleBillNoList = s.detail.ErpDetails.Select(s => s.SaleBillNo).ToList(),
DeliveryOrg = _erpBasicDataExtendService.GetOrgName(orgs, s.order.DeliveryOrgId),
ReceiptCustomer = s.order.Type == OutStockType.Sal
ReceiptCustomer = s.order.Type == OutStockType.Sal
? _erpBasicDataExtendService.GetCustomerName(customers, s.order.ReceiptCustomerId)
: _erpBasicDataExtendService.GetOrgName(orgs, s.order.DeliveryOrgId),
: (s.order.Type== OutStockType.PickingOut? "": _erpBasicDataExtendService.GetOrgName(orgs, s.order.DeliveryOrgId)),
MaterialName = _erpBasicDataExtendService.GetMaterialName(materials, s.detail.MaterialNumber),
MaterialNumber = s.detail.MaterialNumber,
Specifications = _erpBasicDataExtendService.GetMaterialSpecifications(materials, s.detail.MaterialNumber),
@@ -616,10 +617,73 @@ namespace WMS.Web.Repositories
.Include(s => s.Details).ThenInclude(s => s.ErpDetails)
.Where(f => f.Status == OutStockStatus.Wait || f.Status == OutStockStatus.Part)
.ToListAsync();
return res.Clone();
}
/// <summary>
/// 根据序列号查询
/// </summary>
/// <param name="serialNumbers"></param>
/// <returns></returns>
public async Task<List<SerialNumbers>> GetEntityList(List<string> serialNumbers)
{
var res = await _context.SerialNumbers
// .Where(f => serialNumbers.Contains(f.SerialNumber))
.Where(f => serialNumbers.Contains(f.SerialNumber))
.ToListAsync();
var res_c = res.Clone();
//var s_e = res.Select(s => s.SerialNumber).ToList();
var s_e = res.Select(s => s.TwoSerialNumber).ToList();
//在序列表里没找到的序列码 则到老ops序列码数据里去处理 list比较 取差集
var s_c = serialNumbers.Except(s_e);
if (s_c.Count() > 0)
{
var entitys_ops = serialNumbers.Where(w => s_c.Contains(w)).ToList();
var r_o = await _context.SerialNumbers_Ops
.Where(f => serialNumbers.Contains(f.SerialNumber))
.ToListAsync();
res_c.AddRange(_mapper.Map<List<SerialNumbers>>(r_o.Clone()));
}
return res_c;
}
/// <summary>
/// 根据套装码获取序列码
/// </summary>
/// <param name="boxIds"></param>
/// <returns></returns>
public async Task<List<SerialNumbers>> GetEntityListBySuitNumber(string suitNumber)
{
return await _context.SerialNumbers.AsNoTracking()
.Where(f => f.SerialNumber.Contains(suitNumber))
.ToListAsync();
//var res = await _context.SerialNumbers
// .Where(f => serialNumbers.Contains(f.SerialNumber))
// .ToListAsync();
//var res_c = res.Clone();
//var s_e = res.Select(s => s.SerialNumber).ToList();
////在序列表里没找到的序列码 则到老ops序列码数据里去处理 list比较 取差集
//var s_c = serialNumbers.Except(s_e);
//if (s_c.Count() > 0)
//{
// var entitys_ops = serialNumbers.Where(w => s_c.Contains(w)).ToList();
// var r_o = await _context.SerialNumbers_Ops
// .Where(f => serialNumbers.Contains(f.SerialNumber))
// .ToListAsync();
// res_c.AddRange(_mapper.Map<List<SerialNumbers>>(r_o.Clone()));
//}
//return res_c;
}
public string GetInStock(List<string> codes, int companyId, string orgCode)
{
var list = codes.Where(w => w != null).ToList();

View File

@@ -270,7 +270,7 @@ namespace WMS.Web.Repositories
BeforeQty = s.detail.BeforeQty,
AfterQty = s.detail.AfterQty,
FinalQty = s.detail.FinalQty,
BoxBillNo=s.box.BoxBillNo,
// BoxBillNo=s.box.BoxBillNo,
ResultType = s.order.ResultType.GetRemark(),
Remark = s.detail.Remark,
FailRemark = s.order.FailRemark,