Compare commits
36 Commits
b1c7e750c1
...
v1.0.8.1
| Author | SHA1 | Date | |
|---|---|---|---|
| 69c381cf4e | |||
| 326a616289 | |||
| 7be6f47c02 | |||
| af4de76221 | |||
| f9cfba7d51 | |||
| f275c8a6a6 | |||
| 884aaea83d | |||
| d9708a6b00 | |||
| b7ae59c921 | |||
| eef9fc6b9d | |||
| 2c7dbd8a0e | |||
| 2971f55b32 | |||
| e0d44c9e57 | |||
| 3ae1d42bcd | |||
| 5c7e037a6f | |||
| 9448d5ae09 | |||
| a9b512ca0e | |||
| 1c5df7829a | |||
| a65c8f87f9 | |||
| f2fb16d1fa | |||
| 18ca062ab4 | |||
| a909dbbf60 | |||
| d4d03f1230 | |||
| 3638646b8d | |||
| 3faf11ba3c | |||
| fb97d5f09d | |||
| a98ace8360 | |||
| 8f2a136390 | |||
| 2783556ca3 | |||
| 41b2b6454a | |||
| e7506ea5fa | |||
| 054cdadbfe | |||
| c47810947b | |||
| 1051075aa6 | |||
| 7635ea9ffa | |||
| 0144087c7f |
Binary file not shown.
12
Dockerfile
12
Dockerfile
@@ -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"]
|
||||
|
||||
@@ -37,6 +37,18 @@
|
||||
"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 //金蝶账户名
|
||||
@@ -44,6 +56,7 @@
|
||||
"ErpId": "ce20210909", //金蝶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供应链系统是不需要了
|
||||
|
||||
@@ -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>
|
||||
子仓库
|
||||
|
||||
@@ -7689,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>
|
||||
出库状态
|
||||
|
||||
@@ -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; }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -85,5 +85,8 @@ namespace WMS.Web.Core.Dto.OutStockTask
|
||||
/// 出库单对应箱明细Id
|
||||
/// </summary>
|
||||
public int OutStockBoxDetailsId { get; set; } = 0;
|
||||
|
||||
public int MaterialCount { get; set; } = 0;
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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; }
|
||||
|
||||
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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,6 +197,10 @@ namespace WMS.Web.Domain.Services
|
||||
{
|
||||
t = InstockType.ProduceSotck;
|
||||
}
|
||||
else if(instock.instockType=="")
|
||||
{
|
||||
return Result.ReFailure(ResultCodes.ShelfNoPurchaseSave_InstokType_Error);
|
||||
}
|
||||
else
|
||||
{
|
||||
t = InstockType.Purchase;
|
||||
@@ -951,7 +957,15 @@ 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);
|
||||
|
||||
|
||||
if (erpDetails.Count == 0)
|
||||
{
|
||||
for (int i = 0; i < entity.ErpDetails.Count; i++)
|
||||
{
|
||||
entity.SyncFail("失败,找不到数据,请检查采购订单是否反审核或是否有被删除", entity.ErpDetails[0].ErpDetailId, loginInfo?.UserInfo?.StaffId ?? 0, SyncStatus.Fail);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
foreach (var det in erpDetails)
|
||||
{
|
||||
var erpDto = new ErpPushDto()
|
||||
@@ -960,7 +974,8 @@ namespace WMS.Web.Domain.Services
|
||||
FormId = FormIdParam.PUR_PurchaseOrder.ToString(),
|
||||
TargetFormId = FormIdParam.STK_InStock.ToString(),
|
||||
DetailsId = det.ErpDetailId.ToString(),
|
||||
IsDraftWhenSaveFail = true//是否需要暂存
|
||||
IsDraftWhenSaveFail = true//是否需要暂存fa
|
||||
//IsDraftWhenSaveFail = false//是否需要暂存
|
||||
};
|
||||
|
||||
var erp_InStockBillNos = erp_InStockErpDetails.Where(x => x.SourceBillNo == det.SourceBillNo).Select(x => x.ErpSyncBillNo).ToList();
|
||||
@@ -997,6 +1012,7 @@ namespace WMS.Web.Domain.Services
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
//最好一条一条执行,否则执行失败 但是金蝶那边又同步成功 就会造成数据比价乱
|
||||
var isSuccess = await sc_InStockRepositories.Update(entity, true);
|
||||
if (!isSuccess) return Result.ReFailure(ResultCodes.DateWriteError);
|
||||
@@ -1040,7 +1056,15 @@ 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);
|
||||
|
||||
|
||||
if (erpDetails.Count == 0)
|
||||
{
|
||||
for (int i = 0; i < entity.ErpDetails.Count; i++)
|
||||
{
|
||||
entity.SyncFail("失败,找不到数据,请检查生产汇报单是否反审核或是否有被删除", entity.ErpDetails[0].ErpDetailId, loginInfo?.UserInfo?.StaffId ?? 0, SyncStatus.Fail);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
foreach (var det in erpDetails)
|
||||
{
|
||||
var erpDto = new ErpPushDto()
|
||||
@@ -1051,6 +1075,7 @@ namespace WMS.Web.Domain.Services
|
||||
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();
|
||||
@@ -1084,6 +1109,7 @@ namespace WMS.Web.Domain.Services
|
||||
//记录金蝶入库单明细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);
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
@@ -261,6 +266,12 @@ namespace WMS.Web.Domain.Services
|
||||
// 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.同步数据:生产入库单
|
||||
var ProduceSotck_result = await this.SsynProduceSotck(null, isTransaction, beginTime);
|
||||
if (!ProduceSotck_result.IsSuccess)
|
||||
@@ -268,10 +279,6 @@ 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);
|
||||
|
||||
@@ -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>
|
||||
@@ -735,7 +878,7 @@ namespace WMS.Web.Domain.Services
|
||||
BoxWeight = d.BoxWeight,
|
||||
Qty = d.Qty,
|
||||
AccruedQty = d.AccruedQty,
|
||||
SerialNumbers = serialNumbers[0].TwoSerialNumber
|
||||
SerialNumbers = serialNumbers[0].IsTwo==1? serialNumbers[0].SerialNumber:serialNumbers[0].TwoSerialNumber
|
||||
});
|
||||
|
||||
}
|
||||
@@ -813,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)
|
||||
@@ -825,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);
|
||||
|
||||
@@ -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(-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(-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);
|
||||
@@ -1898,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)
|
||||
@@ -2014,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);
|
||||
@@ -2040,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();
|
||||
@@ -2054,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);
|
||||
}
|
||||
|
||||
@@ -2066,6 +2073,8 @@ namespace WMS.Web.Domain.Services.Public
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
|
||||
|
||||
return Result<string>.ReFailure(ex.ToString(), 10002);
|
||||
}
|
||||
}
|
||||
@@ -2923,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 + ")";
|
||||
|
||||
@@ -80,5 +80,12 @@ namespace WMS.Web.Domain.Values
|
||||
/// </summary>
|
||||
[EnumRemark("盘点单")]
|
||||
Take = 14,
|
||||
|
||||
/// <summary>
|
||||
/// 盘点单
|
||||
/// </summary>
|
||||
[EnumRemark("生产入库")]
|
||||
ProduceSotck_In = 15,
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -26,6 +26,7 @@ namespace WMS.Web.Domain.Values
|
||||
|
||||
public static ValueTuple<int, string> Concurrent_Instock = (80005, "该来源单正在处理中");
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 没有菜单权限,无法登录
|
||||
/// </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, "序列号已经绑定箱");
|
||||
|
||||
@@ -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),
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user