From 97d3da31163190a8074c32580cc0c09c5c27ec50 Mon Sep 17 00:00:00 2001 From: yuyubo <1870149533@qq.com> Date: Mon, 14 Jul 2025 20:39:36 +0800 Subject: [PATCH] 11 --- .../Message/Request/KingDee/BillDelete.cs | 32 + .../Message/Request/KingDee/BillSave.cs | 31 + .../Request/KingDee/FSaleOrderEntry.cs | 1228 +++++++++++++++++ .../Response/JackYun/PushOrderListResp.cs | 133 ++ .../Message/Response/KingDee/ErrorResponse.cs | 98 ++ .../Model/PushKingDeeOrder.cs | 114 ++ .../Model/PushKingDeeOrderItem.cs | 82 ++ .../WMStoJackyunInventoryMovementView1.cs | 147 ++ .../WMStoJackyunInventoryMovementView3.cs | 154 +++ .../Model/YTKJTShopParameter.cs | 92 +- .../MyCode.Project.Domain.csproj | 10 +- .../Repositories/IJackOrdersItemRepository.cs | 10 +- .../IPushKingDeeOrderItemRepository.cs | 18 + .../IPushKingDeeOrderRepository.cs | 18 + ...JackyunInventoryMovementView1Repository.cs | 18 + ...JackyunInventoryMovementView3Repository.cs | 18 + .../Implementation/KingDeeService.cs | 166 +++ .../MyCode.Project.OutSideService.csproj | 4 + .../JackOrdersItemRepository.cs | 29 +- .../MyCode.Project.Repositories.csproj | 2 + .../PushKingDeeOrderItemRepository.cs | 26 + .../PushKingDeeOrderRepository.cs | 26 + ...JackyunInventoryMovementView1Repository.cs | 26 + ...JackyunInventoryMovementView3Repository.cs | 26 + .../IServices/IJackYunTaskService.cs | 8 + .../Implementation/JackYunService.cs | 4 +- .../Implementation/JackYunTaskService.cs | 78 +- .../Implementation/WMSService.cs | 6 +- .../Controllers/BaseWechatController.cs | 4 +- .../Controllers/TestController.cs | 12 + .../kingdeeDll/Kingdee.CDP.WebApi.SDK.dll | Bin 0 -> 61952 bytes 31 files changed, 2584 insertions(+), 36 deletions(-) create mode 100644 Reportapi/MyCode.Project.Domain/Message/Request/KingDee/BillDelete.cs create mode 100644 Reportapi/MyCode.Project.Domain/Message/Request/KingDee/BillSave.cs create mode 100644 Reportapi/MyCode.Project.Domain/Message/Request/KingDee/FSaleOrderEntry.cs create mode 100644 Reportapi/MyCode.Project.Domain/Message/Response/JackYun/PushOrderListResp.cs create mode 100644 Reportapi/MyCode.Project.Domain/Message/Response/KingDee/ErrorResponse.cs create mode 100644 Reportapi/MyCode.Project.Domain/Model/PushKingDeeOrder.cs create mode 100644 Reportapi/MyCode.Project.Domain/Model/PushKingDeeOrderItem.cs create mode 100644 Reportapi/MyCode.Project.Domain/Model/WMStoJackyunInventoryMovementView1.cs create mode 100644 Reportapi/MyCode.Project.Domain/Model/WMStoJackyunInventoryMovementView3.cs create mode 100644 Reportapi/MyCode.Project.Domain/Repositories/IPushKingDeeOrderItemRepository.cs create mode 100644 Reportapi/MyCode.Project.Domain/Repositories/IPushKingDeeOrderRepository.cs create mode 100644 Reportapi/MyCode.Project.Domain/Repositories/IWMStoJackyunInventoryMovementView1Repository.cs create mode 100644 Reportapi/MyCode.Project.Domain/Repositories/IWMStoJackyunInventoryMovementView3Repository.cs create mode 100644 Reportapi/MyCode.Project.OutSideService/Implementation/KingDeeService.cs create mode 100644 Reportapi/MyCode.Project.Repositories/PushKingDeeOrderItemRepository.cs create mode 100644 Reportapi/MyCode.Project.Repositories/PushKingDeeOrderRepository.cs create mode 100644 Reportapi/MyCode.Project.Repositories/WMStoJackyunInventoryMovementView1Repository.cs create mode 100644 Reportapi/MyCode.Project.Repositories/WMStoJackyunInventoryMovementView3Repository.cs create mode 100644 Reportapi/kingdeeDll/Kingdee.CDP.WebApi.SDK.dll diff --git a/Reportapi/MyCode.Project.Domain/Message/Request/KingDee/BillDelete.cs b/Reportapi/MyCode.Project.Domain/Message/Request/KingDee/BillDelete.cs new file mode 100644 index 0000000..dbe5a97 --- /dev/null +++ b/Reportapi/MyCode.Project.Domain/Message/Request/KingDee/BillDelete.cs @@ -0,0 +1,32 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace MyCode.Project.Domain.Message.Request.KingDee +{ + public class BillDelete + { /// + /// 单据内码 + /// + public string Ids { get; set; } + + /// + /// 组织ID + /// + public long CreateOrgId { get; set; } + + /// + /// 单据编码 + /// + public string Numbers { get; set; } + + /// + /// 是否启用网控 + /// + public bool NetworkCtrl { get; set; } + + + } +} diff --git a/Reportapi/MyCode.Project.Domain/Message/Request/KingDee/BillSave.cs b/Reportapi/MyCode.Project.Domain/Message/Request/KingDee/BillSave.cs new file mode 100644 index 0000000..a2aac56 --- /dev/null +++ b/Reportapi/MyCode.Project.Domain/Message/Request/KingDee/BillSave.cs @@ -0,0 +1,31 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace MyCode.Project.Domain.Message.Request.KingDee +{ + public class BillSave + { + /// + /// 更新字段 + /// + public List NeedUpDateFields { get; set; } + + /// + /// 返回字段 + /// + public List NeedReturnFields { get; set; } + + public bool IsDeleteEntry { get; set; } + + + /// + /// 表单数据包,JSON类型(必录) + /// + public object Model { get; set; } + + } + +} diff --git a/Reportapi/MyCode.Project.Domain/Message/Request/KingDee/FSaleOrderEntry.cs b/Reportapi/MyCode.Project.Domain/Message/Request/KingDee/FSaleOrderEntry.cs new file mode 100644 index 0000000..82dd79f --- /dev/null +++ b/Reportapi/MyCode.Project.Domain/Message/Request/KingDee/FSaleOrderEntry.cs @@ -0,0 +1,1228 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace MyCode.Project.Domain.Message.Request.KingDee +{ + + + public class FSaleOrderEntry + { + /// + /// + /// + public List NeedUpDateFields { get; set; } + /// + /// + /// + public List NeedReturnFields { get; set; } + /// + /// + /// + public string IsDeleteEntry { get; set; } + /// + /// + /// + public string SubSystemId { get; set; } + /// + /// 是否验证所有的基础资料有效性,布尔类,默认false(非必录) + /// + public bool IsVerifyBaseDataField { get; set; } + /// + /// + /// + public string IsEntryBatchFill { get; set; } + /// + /// + /// + public string ValidateFlag { get; set; } + /// + /// + /// + public string NumberSearch { get; set; } + /// + /// + /// + public string IsAutoAdjustField { get; set; } + /// + /// + /// + public string InterationFlags { get; set; } + /// + /// + /// + public string IgnoreInterationFlag { get; set; } + /// + /// + /// + public string IsControlPrecision { get; set; } + /// + /// + /// + public Model Model { get; set; } + } + + public class FBillTypeID + { + /// + /// + /// + public string FNUMBER { get; set; } + } + + public class FSaleOrgId + { + /// + /// + /// + public string FNumber { get; set; } + } + + public class FCustId + { + /// + /// + /// + public string FNumber { get; set; } + } + + public class FHeadDeliveryWay + { + /// + /// + /// + public string FNumber { get; set; } + } + + public class FReceiveId + { + /// + /// + /// + public string FNumber { get; set; } + } + + public class FHEADLOCID + { + /// + /// + /// + public string FNumber { get; set; } + } + + public class FCorrespondOrgId + { + /// + /// + /// + public string FNumber { get; set; } + } + + public class FSaleDeptId + { + /// + /// + /// + public string FNumber { get; set; } + } + + public class FSaleGroupId + { + /// + /// + /// + public string FNumber { get; set; } + } + + public class FSalerId + { + /// + /// + /// + public string FNumber { get; set; } + } + + public class FSettleId + { + /// + /// + /// + public string FNumber { get; set; } + } + + public class FReceiveContact + { + /// + /// + /// + public string FNAME { get; set; } + } + + public class FChargeId + { + /// + /// + /// + public string FNumber { get; set; } + } + + public class FSalePhaseID + { + /// + /// + /// + public string FNUMBER { get; set; } + } + + public class FWarehouse + { + /// + /// + /// + public string FNUMBER { get; set; } + } + + public class Foutlets + { + /// + /// + /// + public string FNUMBER { get; set; } + } + + public class FSettleCurrId + { + /// + /// + /// + public string FNumber { get; set; } + } + + public class FRecConditionId + { + /// + /// + /// + public string FNumber { get; set; } + } + + public class FSettleModeId + { + /// + /// + /// + public string FNumber { get; set; } + } + + public class FPriceListId + { + /// + /// + /// + public string FNumber { get; set; } + } + + public class FDiscountListId + { + /// + /// + /// + public string FNumber { get; set; } + } + + public class FExchangeTypeId + { + /// + /// + /// + public string FNumber { get; set; } + } + + public class FSaleOrderFinance + { + /// + /// + /// + public int FEntryId { get; set; } + /// + /// + /// + public FSettleCurrId FSettleCurrId { get; set; } + /// + /// + /// + public FRecConditionId FRecConditionId { get; set; } + /// + /// + /// + public string FIsPriceExcludeTax { get; set; } + /// + /// + /// + public FSettleModeId FSettleModeId { get; set; } + /// + /// + /// + public string FIsIncludedTax { get; set; } + /// + /// + /// + public FPriceListId FPriceListId { get; set; } + /// + /// + /// + public FDiscountListId FDiscountListId { get; set; } + /// + /// + /// + public FExchangeTypeId FExchangeTypeId { get; set; } + /// + /// + /// + public int FMarginLevel { get; set; } + /// + /// + /// + public int FMargin { get; set; } + /// + /// + /// + public string FOverOrgTransDirect { get; set; } + /// + /// + /// + public int FAllDisCount { get; set; } + /// + /// + /// + public string FRecBarcodeLink { get; set; } + /// + /// + /// + public int FXPKID_F { get; set; } + } + + public class FClauseId + { + /// + /// + /// + public string FNumber { get; set; } + } + + public class FSaleOrderClauseItem + { + /// + /// + /// + public int FEntryID { get; set; } + /// + /// + /// + public FClauseId FClauseId { get; set; } + /// + /// + /// + public string FClauseDesc { get; set; } + /// + /// + /// + public int FXPKID_C { get; set; } + } + + public class FMaterialGroup + { + /// + /// + /// + public string FNUMBER { get; set; } + } + + public class FMaterialGroupByMat + { + /// + /// + /// + public string FNUMBER { get; set; } + } + + public class FMapId + { + /// + /// + /// + public string FNumber { get; set; } + } + + public class FMaterialId + { + /// + /// + /// + public string FNumber { get; set; } + } + + public class FAUXPROPID__FF100001 + { + /// + /// + /// + public string FNumber { get; set; } + } + + public class FAuxPropId + { + /// + /// + /// + public FAUXPROPID__FF100001 FAUXPROPID__FF100001 { get; set; } + } + + public class FParentMatId + { + /// + /// + /// + public string FNUMBER { get; set; } + } + + public class FUnitID + { + /// + /// + /// + public string FNumber { get; set; } + } + + public class FPriceUnitId + { + /// + /// + /// + public string FNumber { get; set; } + } + + public class FPurPriceUnitId + { + /// + /// + /// + public string FNumber { get; set; } + } + + public class FTaxCombination + { + /// + /// + /// + public string FNumber { get; set; } + } + + public class FLot + { + /// + /// + /// + public string FNumber { get; set; } + } + + public class FStockOrgId + { + /// + /// + /// + public string FNumber { get; set; } + } + + public class FSettleOrgIds + { + /// + /// + /// + public string FNumber { get; set; } + } + + public class FSupplyOrgId + { + /// + /// + /// + public string FNumber { get; set; } + } + + public class FBomId + { + /// + /// + /// + public string FNumber { get; set; } + } + + public class FOwnerId + { + /// + /// + /// + public string FNumber { get; set; } + } + + public class FSOStockId + { + /// + /// + /// + public string FNUMBER { get; set; } + } + + public class FSOStockLocalId + { + } + + public class FStockUnitID + { + /// + /// + /// + public string FNumber { get; set; } + } + + public class FOutLmtUnitID + { + /// + /// + /// + public string FNumber { get; set; } + } + + public class FDetailLocId + { + /// + /// + /// + public string FNumber { get; set; } + } + + public class FOrderEntryPlanItem + { + /// + /// + /// + public int FDetailID { get; set; } + /// + /// + /// + public FDetailLocId FDetailLocId { get; set; } + /// + /// + /// + public string FDetailLocAddress { get; set; } + /// + /// + /// + public string FPlanDate { get; set; } + /// + /// + /// + public int FTransportLeadTime { get; set; } + /// + /// + /// + public int FPlanQty { get; set; } + /// + /// + /// + public int FXPKID_D { get; set; } + } + + public class FTaxDetailSubEntityItem + { + /// + /// + /// + public int FDetailID { get; set; } + /// + /// + /// + public int FTaxRate { get; set; } + /// + /// + /// + public string FSellerWithholding { get; set; } + /// + /// + /// + public string FBuyerWithholding { get; set; } + } + + public class FSaleOrderEntryItem + { + /// + /// + /// + public int FEntryID { get; set; } + /// + /// + /// + public string FReturnType { get; set; } + /// + /// + /// + public string FRowType { get; set; } + /// + /// + /// + public FMaterialGroup FMaterialGroup { get; set; } + /// + /// + /// + public FMaterialGroupByMat FMaterialGroupByMat { get; set; } + /// + /// + /// + public FMapId FMapId { get; set; } + /// + /// + /// + public FMaterialId FMaterialId { get; set; } + /// + /// + /// + public FAuxPropId FAuxPropId { get; set; } + /// + /// + /// + public FParentMatId FParentMatId { get; set; } + /// + /// + /// + public FUnitID FUnitID { get; set; } + /// + /// + /// + public int FInventoryQty { get; set; } + /// + /// + /// + public int FCurrentInventory { get; set; } + /// + /// + /// + public int FAwaitQty { get; set; } + /// + /// + /// + public int FAvailableQty { get; set; } + /// + /// + /// + public int FQty { get; set; } + /// + /// + /// + public FPriceUnitId FPriceUnitId { get; set; } + /// + /// + /// + public int FOldQty { get; set; } + /// + /// + /// + public FPurPriceUnitId FPurPriceUnitId { get; set; } + /// + /// + /// + public int FPrice { get; set; } + /// + /// + /// + public int FTaxPrice { get; set; } + /// + /// + /// + public string FIsFree { get; set; } + /// + /// + /// + public FTaxCombination FTaxCombination { get; set; } + /// + /// + /// + public int FEntryTaxRate { get; set; } + /// + /// + /// + public FLot FLot { get; set; } + /// + /// + /// + public string FProduceDate { get; set; } + /// + /// + /// + public int FExpPeriod { get; set; } + /// + /// + /// + public string FExpUnit { get; set; } + /// + /// + /// + public string FExpiryDate { get; set; } + /// + /// + /// + public int FDiscountRate { get; set; } + /// + /// + /// + public int FPriceDiscount { get; set; } + /// + /// + /// + public int FInStockPrice { get; set; } + /// + /// + /// + public string FDeliveryDate { get; set; } + /// + /// + /// + public FStockOrgId FStockOrgId { get; set; } + /// + /// + /// + public FSettleOrgIds FSettleOrgIds { get; set; } + /// + /// + /// + public FSupplyOrgId FSupplyOrgId { get; set; } + /// + /// + /// + public FBomId FBomId { get; set; } + /// + /// + /// + public string FOwnerTypeId { get; set; } + /// + /// + /// + public FOwnerId FOwnerId { get; set; } + /// + /// + /// + public FSOStockId FSOStockId { get; set; } + /// + /// + /// + public FSOStockLocalId FSOStockLocalId { get; set; } + /// + /// + /// + public string FEntryNote { get; set; } + /// + /// + /// + public string FReserveType { get; set; } + /// + /// + /// + public int FPriority { get; set; } + /// + /// + /// + public string FMtoNo { get; set; } + /// + /// + /// + public string FPromotionMatchType { get; set; } + /// + /// + /// + public int FNetOrderEntryId { get; set; } + /// + /// + /// + public int FPriceBaseQty { get; set; } + /// + /// + /// + public FStockUnitID FStockUnitID { get; set; } + /// + /// + /// + public int FStockQty { get; set; } + /// + /// + /// + public int FStockBaseQty { get; set; } + /// + /// + /// + public string FServiceContext { get; set; } + /// + /// + /// + public string FOUTLMTUNIT { get; set; } + /// + /// + /// + public FOutLmtUnitID FOutLmtUnitID { get; set; } + /// + /// + /// + public int FOldTaxPrice { get; set; } + /// + /// + /// + public int FOldAmount { get; set; } + /// + /// + /// + public int FOldAllAmount { get; set; } + /// + /// + /// + public string FISMRP { get; set; } + /// + /// + /// + public int FOldDiscountRate { get; set; } + /// + /// + /// + public int FOldDiscount { get; set; } + /// + /// + /// + public int FRPDiscountRate { get; set; } + /// + /// + /// + public string FSPMENTRYID { get; set; } + /// + /// + /// + public string FSPMANDRPMCONTENT { get; set; } + /// + /// + /// + public string FSKU { get; set; } + /// + /// + /// + public string Fcode { get; set; } + /// + /// + /// + public int FSixundiscount { get; set; } + /// + /// + /// + public string Fcolour { get; set; } + /// + /// + /// + public int FBOMEntryId { get; set; } + /// + /// + /// + public int FAllAmountExceptDisCount { get; set; } + /// + /// + /// + public int FXPKID { get; set; } + /// + /// + /// + public List FOrderEntryPlan { get; set; } + /// + /// + /// + public List FTaxDetailSubEntity { get; set; } + } + + public class FReceiveType + { + /// + /// + /// + public string FNumber { get; set; } + } + + public class FPlanMaterialId + { + /// + /// + /// + public string FNUMBER { get; set; } + } + + public class FMaterialPriceUnitID + { + /// + /// + /// + public string FNumber { get; set; } + } + + public class FPESettleOrgId + { + /// + /// + /// + public string FNumber { get; set; } + } + + public class FSaleOrderPlanEntryItem + { + /// + /// + /// + public int FDETAILID { get; set; } + /// + /// + /// + public int FOverRecAmount_D { get; set; } + /// + /// + /// + public FPESettleOrgId FPESettleOrgId { get; set; } + /// + /// + /// + public int FXPKID_RE { get; set; } + } + + public class FSaleOrderPlanItem + { + /// + /// + /// + public int FEntryID { get; set; } + /// + /// + /// + public string FNeedRecAdvance { get; set; } + /// + /// + /// + public FReceiveType FReceiveType { get; set; } + /// + /// + /// + public int FRecAdvanceRate { get; set; } + /// + /// + /// + public int FRecAdvanceAmount { get; set; } + /// + /// + /// + public string FMustDate { get; set; } + /// + /// + /// + public string FRelBillNo { get; set; } + /// + /// + /// + public int FRecAmount { get; set; } + /// + /// + /// + public string FControlSend { get; set; } + /// + /// + /// + public string FIsOutStockByRecamount { get; set; } + /// + /// + /// + public int FOverRecAmount { get; set; } + /// + /// + /// + public string FReMark { get; set; } + /// + /// + /// + public FPlanMaterialId FPlanMaterialId { get; set; } + /// + /// + /// + public int FMaterialSeq { get; set; } + /// + /// + /// + public string FMaterialRowID { get; set; } + /// + /// + /// + public int FOrderEntryId { get; set; } + /// + /// + /// + public int FMaterialTaxPrice { get; set; } + /// + /// + /// + public int FMaterialPriceUnitQty { get; set; } + /// + /// + /// + public FMaterialPriceUnitID FMaterialPriceUnitID { get; set; } + /// + /// + /// + public int FXPKID_R { get; set; } + /// + /// + /// + public List FSaleOrderPlanEntry { get; set; } + } + + public class FLogComId + { + /// + /// + /// + public string FCODE { get; set; } + } + + public class FSalOrderTraceDetailItem + { + /// + /// + /// + public int FDetailID { get; set; } + /// + /// + /// + public string FTraceTime { get; set; } + /// + /// + /// + public string FTraceDetail { get; set; } + } + + public class FSalOrderTraceItem + { + /// + /// + /// + public int FEntryID { get; set; } + /// + /// + /// + public FLogComId FLogComId { get; set; } + /// + /// + /// + public string FCarryBillNo { get; set; } + /// + /// + /// + public string FPhoneNumber { get; set; } + /// + /// + /// + public string FFrom { get; set; } + /// + /// + /// + public string FTo { get; set; } + /// + /// + /// + public string FDelTime { get; set; } + /// + /// + /// + public string FTraceStatus { get; set; } + /// + /// + /// + public string FReceiptTime { get; set; } + /// + /// + /// + public List FSalOrderTraceDetail { get; set; } + } + + public class Model + { + /// + /// + /// + public int FID { get; set; } + /// + /// + /// + public FBillTypeID FBillTypeID { get; set; } + /// + /// + /// + public string FBillNo { get; set; } + /// + /// + /// + public string FDate { get; set; } + /// + /// + /// + public FSaleOrgId FSaleOrgId { get; set; } + /// + /// + /// + public FCustId FCustId { get; set; } + /// + /// + /// + public FHeadDeliveryWay FHeadDeliveryWay { get; set; } + /// + /// + /// + public FReceiveId FReceiveId { get; set; } + /// + /// + /// + public FHEADLOCID FHEADLOCID { get; set; } + /// + /// + /// + public FCorrespondOrgId FCorrespondOrgId { get; set; } + /// + /// + /// + public FSaleDeptId FSaleDeptId { get; set; } + /// + /// + /// + public FSaleGroupId FSaleGroupId { get; set; } + /// + /// + /// + public FSalerId FSalerId { get; set; } + /// + /// + /// + public string FReceiveAddress { get; set; } + /// + /// + /// + public FSettleId FSettleId { get; set; } + /// + /// + /// + public FReceiveContact FReceiveContact { get; set; } + /// + /// + /// + public FChargeId FChargeId { get; set; } + /// + /// + /// + public string FNetOrderBillNo { get; set; } + /// + /// + /// + public int FNetOrderBillId { get; set; } + /// + /// + /// + public int FOppID { get; set; } + /// + /// + /// + public FSalePhaseID FSalePhaseID { get; set; } + /// + /// + /// + public string FISINIT { get; set; } + /// + /// + /// + public string FNote { get; set; } + /// + /// + /// + public string FIsMobile { get; set; } + /// + /// + /// + public string FSOFrom { get; set; } + /// + /// + /// + public string FContractType { get; set; } + /// + /// + /// + public int FContractId { get; set; } + /// + /// + /// + public string FIsUseOEMBomPush { get; set; } + /// + /// + /// + public FWarehouse FWarehouse { get; set; } + /// + /// + /// + public Foutlets Foutlets { get; set; } + /// + /// + /// + public string FOrdertype { get; set; } + /// + /// + /// + public int FXPKID_H { get; set; } + /// + /// + /// + public string FPushType { get; set; } + /// + /// + /// + public string FCloseReason { get; set; } + /// + /// + /// + public string FIsUseDrpSalePOPush { get; set; } + /// + /// + /// + public string FAutoShip { get; set; } + /// + /// + /// + public string FIsOutStock { get; set; } + /// + /// + /// + public FSaleOrderFinance FSaleOrderFinance { get; set; } + /// + /// + /// + public List FSaleOrderClause { get; set; } + /// + /// + /// + public List FSaleOrderEntry { get; set; } + /// + /// + /// + public List FSaleOrderPlan { get; set; } + /// + /// + /// + public List FSalOrderTrace { get; set; } + } + + +} diff --git a/Reportapi/MyCode.Project.Domain/Message/Response/JackYun/PushOrderListResp.cs b/Reportapi/MyCode.Project.Domain/Message/Response/JackYun/PushOrderListResp.cs new file mode 100644 index 0000000..7c5dcc4 --- /dev/null +++ b/Reportapi/MyCode.Project.Domain/Message/Response/JackYun/PushOrderListResp.cs @@ -0,0 +1,133 @@ +using SqlSugar; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace MyCode.Project.Domain.Message.Response.JackYun +{ + public class PushOrderListResp + { + + /// + /// Desc:店铺编码 + /// Default: + /// Nullable:True + /// + [SugarColumn(ColumnName = "shopCode")] + public string ShopCode { get; set; } + + /// + /// Desc: + /// Default: + /// Nullable:True + /// + [SugarColumn(ColumnName = "shopName")] + public string ShopName { get; set; } + + /// + /// Desc: + /// Default: + /// Nullable:True + /// + [SugarColumn(ColumnName = "warehouseName")] + public string WarehouseName { get; set; } + + /// + /// Desc: + /// Default: + /// Nullable:True + /// + [SugarColumn(ColumnName = "warehouseCode")] + public string WarehouseCode { get; set; } + + /// + /// Desc: + /// Default: + /// Nullable:True + /// + [SugarColumn(ColumnName = "warehouseId")] + public string WarehouseId { get; set; } + + /// + /// Desc:店铺id + /// Default: + /// Nullable:True + /// + [SugarColumn(ColumnName = "shopId")] + public long? ShopId { get; set; } + + /// + /// Desc:0=未处理 1=已合并 2=已推送 + /// Default:0 + /// Nullable:True + /// + [SugarColumn(ColumnName = "status")] + public int? Status { get; set; } + + /// + /// Desc:发货时间 + /// Default: + /// Nullable:True + /// + [SugarColumn(ColumnName = "consignTime")] + public string ConsignTime { get; set; } + + /// + /// Desc: + /// Default: + /// Nullable:True + /// + [SugarColumn(ColumnName = "goodsId")] + public string GoodsId { get; set; } + + /// + /// Desc:销售总金额(数量×单价) + /// Default: + /// Nullable:False + /// + [SugarColumn(ColumnName = "sellTotal")] + public decimal SellTotal { get; set; } + + + /// + /// Desc:数量 + /// Default: + /// Nullable:False + /// + [SugarColumn(ColumnName = "sellCount")] + public int SellCount { get; set; } + + /// + /// Desc:实付金额 + /// Default: + /// Nullable:False + /// + [SugarColumn(ColumnName = "divideSellTotal")] + public decimal DivideSellTotal { get; set; } + + /// + /// Desc:条码,用这个匹配金蝶物料编码 + /// Default: + /// Nullable:True + /// + [SugarColumn(ColumnName = "barcode")] + public string Barcode { get; set; } + + /// + /// Desc:订单类型 销售单类型(1:零售业务;2:代发货(来自分销商);3:预售订单;4:周期性订购;5:代销售(供货商发货);6:现款现货;7:售后发货;8:售后退货;9:批发业务(B2B);10:试销业务;11:错漏调整;12:仅退款;13:销售返利;14:大B2B业务;15物流买赔;16销售对账差异 91:自定义1;92:自定义2;93:自定义3...100:自定义10) + /// Default: + /// Nullable:True + /// + public int? TradeType { get; set; } + + /// + /// Desc: + /// Default: + /// Nullable:True + /// + [SugarColumn(ColumnName = "goodsNo")] + public string GoodsNo { get; set; } + } +} diff --git a/Reportapi/MyCode.Project.Domain/Message/Response/KingDee/ErrorResponse.cs b/Reportapi/MyCode.Project.Domain/Message/Response/KingDee/ErrorResponse.cs new file mode 100644 index 0000000..578aa7f --- /dev/null +++ b/Reportapi/MyCode.Project.Domain/Message/Response/KingDee/ErrorResponse.cs @@ -0,0 +1,98 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace MyCode.Project.Domain.Message.Response.KingDee +{ + public class ErrorResponse + { + /// + /// + /// + public Result Result { get; set; } + } + + + public class ErrorsItem + { + /// + /// + /// + public string FieldName { get; set; } + /// + /// 报错内容 + /// + public string Message { get; set; } + /// + /// + /// + public int DIndex { get; set; } + } + + public class ResponseStatus + { + /// + /// + /// + public int ErrorCode { get; set; } + /// + /// + /// + public string IsSuccess { get; set; } + /// + /// + /// + public List Errors { get; set; } + /// + /// + /// + public List SuccessEntitys { get; set; } + /// + /// + /// + public List SuccessMessages { get; set; } + /// + /// + /// + public int MsgCode { get; set; } + } + + public class ConvertResponseStatus + { + /// + /// + /// + public string IsSuccess { get; set; } + /// + /// + /// + public List Errors { get; set; } + /// + /// + /// + public List SuccessEntitys { get; set; } + /// + /// + /// + public List SuccessMessages { get; set; } + /// + /// + /// + public int MsgCode { get; set; } + } + + public class Result + { + /// + /// + /// + public ResponseStatus ResponseStatus { get; set; } + /// + /// + /// + public ConvertResponseStatus ConvertResponseStatus { get; set; } + } + +} diff --git a/Reportapi/MyCode.Project.Domain/Model/PushKingDeeOrder.cs b/Reportapi/MyCode.Project.Domain/Model/PushKingDeeOrder.cs new file mode 100644 index 0000000..54b4d41 --- /dev/null +++ b/Reportapi/MyCode.Project.Domain/Model/PushKingDeeOrder.cs @@ -0,0 +1,114 @@ +using System; +using System.Linq; +using System.Text; +using SqlSugar; + +namespace MyCode.Project.Domain.Model +{ + /// + /// + /// + [SugarTable("PushKingDeeOrder")] + public partial class PushKingDeeOrder + { + public PushKingDeeOrder(){ + + + } + /// + /// Desc: + /// Default: + /// Nullable:False + /// + [SugarColumn(IsPrimaryKey=true,ColumnName="id")] + public Guid Id {get;set;} + + /// + /// Desc:店铺编码 + /// Default: + /// Nullable:True + /// + [SugarColumn(ColumnName="shopCode")] + public string ShopCode {get;set;} + + /// + /// Desc: + /// Default: + /// Nullable:True + /// + [SugarColumn(ColumnName="shopName")] + public string ShopName {get;set;} + + /// + /// Desc:店铺id + /// Default: + /// Nullable:True + /// + [SugarColumn(ColumnName="shopId")] + public long? ShopId {get;set;} + + /// + /// Desc: + /// Default: + /// Nullable:True + /// + [SugarColumn(ColumnName="warehouseName")] + public string WarehouseName {get;set;} + + /// + /// Desc: + /// Default: + /// Nullable:True + /// + [SugarColumn(ColumnName="warehouseCode")] + public string WarehouseCode {get;set;} + + /// + /// Desc: + /// Default:DateTime.Now + /// Nullable:True + /// + [SugarColumn(ColumnName="createTime")] + public DateTime? CreateTime {get;set;} + + /// + /// Desc: + /// Default:DateTime.Now + /// Nullable:True + /// + [SugarColumn(ColumnName="updateTime")] + public DateTime? UpdateTime {get;set;} + + /// + /// Desc:0=未处理 1=已合并 2=已推送 + /// Default:0 + /// Nullable:True + /// + [SugarColumn(ColumnName="status")] + public int? Status {get;set;} + + /// + /// Desc:发货时间 + /// Default: + /// Nullable:True + /// + [SugarColumn(ColumnName="consignTime")] + public DateTime? ConsignTime {get;set;} + + /// + /// Desc: + /// Default: + /// Nullable:True + /// + [SugarColumn(ColumnName="warehouseId")] + public string WarehouseId {get;set;} + + /// + /// Desc:订单类型 销售单类型(1:零售业务;2:代发货(来自分销商);3:预售订单;4:周期性订购;5:代销售(供货商发货);6:现款现货;7:售后发货;8:售后退货;9:批发业务(B2B);10:试销业务;11:错漏调整;12:仅退款;13:销售返利;14:大B2B业务;15物流买赔;16销售对账差异 91:自定义1;92:自定义2;93:自定义3...100:自定义10) + /// Default: + /// Nullable:True + /// + public int? TradeType {get;set;} + + } +} diff --git a/Reportapi/MyCode.Project.Domain/Model/PushKingDeeOrderItem.cs b/Reportapi/MyCode.Project.Domain/Model/PushKingDeeOrderItem.cs new file mode 100644 index 0000000..201dd9d --- /dev/null +++ b/Reportapi/MyCode.Project.Domain/Model/PushKingDeeOrderItem.cs @@ -0,0 +1,82 @@ +using System; +using System.Linq; +using System.Text; +using SqlSugar; + +namespace MyCode.Project.Domain.Model +{ + /// + /// + /// + [SugarTable("PushKingDeeOrderItem")] + public partial class PushKingDeeOrderItem + { + public PushKingDeeOrderItem(){ + + + } + /// + /// Desc: + /// Default:newid() + /// Nullable:False + /// + [SugarColumn(IsPrimaryKey=true)] + public Guid Id {get;set;} + + /// + /// Desc: + /// Default: + /// Nullable:True + /// + [SugarColumn(ColumnName="goodsNo")] + public string GoodsNo {get;set;} + + /// + /// Desc: + /// Default: + /// Nullable:True + /// + [SugarColumn(ColumnName="goodsId")] + public string GoodsId {get;set;} + + /// + /// Desc:销售总金额(数量×单价) + /// Default: + /// Nullable:False + /// + [SugarColumn(ColumnName="sellTotal")] + public decimal SellTotal {get;set;} + + /// + /// Desc:数量 + /// Default: + /// Nullable:False + /// + [SugarColumn(ColumnName="sellCount")] + public int SellCount {get;set;} + + /// + /// Desc:实付金额 + /// Default: + /// Nullable:False + /// + [SugarColumn(ColumnName="divideSellTotal")] + public decimal DivideSellTotal {get;set;} + + /// + /// Desc:条码,用这个匹配金蝶物料编码 + /// Default: + /// Nullable:True + /// + [SugarColumn(ColumnName="barcode")] + public string Barcode {get;set;} + + /// + /// Desc: + /// Default: + /// Nullable:True + /// + public Guid? PushKingDeeOrderId {get;set;} + + } +} diff --git a/Reportapi/MyCode.Project.Domain/Model/WMStoJackyunInventoryMovementView1.cs b/Reportapi/MyCode.Project.Domain/Model/WMStoJackyunInventoryMovementView1.cs new file mode 100644 index 0000000..4be7d4e --- /dev/null +++ b/Reportapi/MyCode.Project.Domain/Model/WMStoJackyunInventoryMovementView1.cs @@ -0,0 +1,147 @@ +using System; +using System.Linq; +using System.Text; +using SqlSugar; + +namespace MyCode.Project.Domain.Model +{ + /// + /// + /// + [SugarTable("WMStoJackyun_InventoryMovement_View1")] + public partial class WMStoJackyunInventoryMovementView1 + { + public WMStoJackyunInventoryMovementView1(){ + + + } + /// + /// Desc: + /// Default: + /// Nullable:False + /// + [SugarColumn(IsPrimaryKey=true,IsIdentity=true)] + public int Id {get;set;} + + /// + /// Desc: + /// Default: + /// Nullable:True + /// + public string 单据号 {get;set;} + + /// + /// Desc: + /// Default: + /// Nullable:True + /// + public string WMS单号 {get;set;} + + /// + /// Desc: + /// Default: + /// Nullable:True + /// + public long? 单据行号 {get;set;} + + /// + /// Desc: + /// Default: + /// Nullable:True + /// + public string 单据类型 {get;set;} + + /// + /// Desc: + /// Default: + /// Nullable:True + /// + public string 单据类型名称 {get;set;} + + /// + /// Desc: + /// Default: + /// Nullable:True + /// + public string 变动方向 {get;set;} + + /// + /// Desc: + /// Default: + /// Nullable:True + /// + public string ITEMID {get;set;} + + /// + /// Desc: + /// Default: + /// Nullable:True + /// + public string SKU {get;set;} + + /// + /// Desc: + /// Default: + /// Nullable:True + /// + public string BARCODE {get;set;} + + /// + /// Desc: + /// Default: + /// Nullable:True + /// + public string 尺码 {get;set;} + + /// + /// Desc: + /// Default: + /// Nullable:True + /// + public string 单位 {get;set;} + + /// + /// Desc: + /// Default: + /// Nullable:True + /// + public string 商品名称 {get;set;} + + /// + /// Desc: + /// Default: + /// Nullable:True + /// + public int? 数量 {get;set;} + + /// + /// Desc: + /// Default: + /// Nullable:True + /// + public string 仓库 {get;set;} + + /// + /// Desc: + /// Default: + /// Nullable:True + /// + public DateTime? 过账日期 {get;set;} + + /// + /// Desc: + /// Default: + /// Nullable:True + /// + public string 备注 {get;set;} + + /// + /// Desc:0=未处理 1=已合并 2=已推送 + /// Default:0 + /// Nullable:True + /// + [SugarColumn(ColumnName="status")] + public int? Status {get;set;} + + } +} diff --git a/Reportapi/MyCode.Project.Domain/Model/WMStoJackyunInventoryMovementView3.cs b/Reportapi/MyCode.Project.Domain/Model/WMStoJackyunInventoryMovementView3.cs new file mode 100644 index 0000000..1da89b7 --- /dev/null +++ b/Reportapi/MyCode.Project.Domain/Model/WMStoJackyunInventoryMovementView3.cs @@ -0,0 +1,154 @@ +using System; +using System.Linq; +using System.Text; +using SqlSugar; + +namespace MyCode.Project.Domain.Model +{ + /// + /// + /// + [SugarTable("WMStoJackyun_InventoryMovement_View3")] + public partial class WMStoJackyunInventoryMovementView3 + { + public WMStoJackyunInventoryMovementView3(){ + + + } + /// + /// Desc: + /// Default: + /// Nullable:False + /// + [SugarColumn(IsPrimaryKey=true,IsIdentity=true)] + public int Id {get;set;} + + /// + /// Desc: + /// Default: + /// Nullable:True + /// + public string 单据号 {get;set;} + + /// + /// Desc: + /// Default: + /// Nullable:True + /// + public string WMS单号 {get;set;} + + /// + /// Desc: + /// Default: + /// Nullable:True + /// + public int? 单据行号 {get;set;} + + /// + /// Desc: + /// Default: + /// Nullable:True + /// + public string 单据类型 {get;set;} + + /// + /// Desc: + /// Default: + /// Nullable:True + /// + public string 单据类型名称 {get;set;} + + /// + /// Desc: + /// Default: + /// Nullable:True + /// + public string 变动方向 {get;set;} + + /// + /// Desc: + /// Default: + /// Nullable:True + /// + public string ITEMID {get;set;} + + /// + /// Desc: + /// Default: + /// Nullable:True + /// + public string SKU {get;set;} + + /// + /// Desc: + /// Default: + /// Nullable:True + /// + public string BARCODE {get;set;} + + /// + /// Desc: + /// Default: + /// Nullable:True + /// + public string 尺码 {get;set;} + + /// + /// Desc: + /// Default: + /// Nullable:True + /// + public string 单位 {get;set;} + + /// + /// Desc: + /// Default: + /// Nullable:True + /// + public string 商品名称 {get;set;} + + /// + /// Desc: + /// Default: + /// Nullable:True + /// + public string 数量 {get;set;} + + /// + /// Desc: + /// Default: + /// Nullable:True + /// + public double? 数量2 {get;set;} + + /// + /// Desc: + /// Default: + /// Nullable:True + /// + public string 仓库 {get;set;} + + /// + /// Desc: + /// Default: + /// Nullable:True + /// + public string 过账日期 {get;set;} + + /// + /// Desc: + /// Default: + /// Nullable:True + /// + public string 备注 {get;set;} + + /// + /// Desc:0=未处理 1=已合并 2=已推送 + /// Default:0 + /// Nullable:True + /// + [SugarColumn(ColumnName="status")] + public int? Status {get;set;} + + } +} diff --git a/Reportapi/MyCode.Project.Domain/Model/YTKJTShopParameter.cs b/Reportapi/MyCode.Project.Domain/Model/YTKJTShopParameter.cs index 08d6cc0..8345633 100644 --- a/Reportapi/MyCode.Project.Domain/Model/YTKJTShopParameter.cs +++ b/Reportapi/MyCode.Project.Domain/Model/YTKJTShopParameter.cs @@ -31,14 +31,14 @@ namespace MyCode.Project.Domain.Model public string FBILLNO {get;set;} /// - /// Desc: + /// Desc:审核状态 C=已审核 /// Default: /// Nullable:False /// public string FDOCUMENTSTATUS {get;set;} /// - /// Desc: + /// Desc:门店编码 /// Default: /// Nullable:False /// @@ -46,7 +46,7 @@ namespace MyCode.Project.Domain.Model public string FSHOPCODE {get;set;} /// - /// Desc: + /// Desc:门店名称 /// Default: /// Nullable:False /// @@ -56,55 +56,55 @@ namespace MyCode.Project.Domain.Model /// /// Desc: /// Default: - /// Nullable:False + /// Nullable:True /// [SugarColumn(ColumnName="F_YTKJ_TEXT2")] public string FYTKJTEXT2 {get;set;} /// - /// Desc: + /// Desc:是否同步金蝶 /// Default:1 - /// Nullable:False + /// Nullable:True /// [SugarColumn(ColumnName="F_SYNCHRONIZEKINGDEE")] public string FSYNCHRONIZEKINGDEE {get;set;} /// - /// Desc: + /// Desc:是否同步WM /// Default:1 - /// Nullable:False + /// Nullable:True /// [SugarColumn(ColumnName="F_SYNCHRONIZEWMS")] public string FSYNCHRONIZEWMS {get;set;} /// - /// Desc: + /// Desc:销售客户 /// Default:0 - /// Nullable:False + /// Nullable:True /// [SugarColumn(ColumnName="F_SALESCUSTOMERS")] - public int FSALESCUSTOMERS {get;set;} + public int? FSALESCUSTOMERS {get;set;} /// - /// Desc: + /// Desc:发货仓库 /// Default:0 - /// Nullable:False + /// Nullable:True /// [SugarColumn(ColumnName="F_WAREHOUSE")] - public int FWAREHOUSE {get;set;} + public int? FWAREHOUSE {get;set;} /// - /// Desc: + /// Desc:仓库货主 /// Default: - /// Nullable:False + /// Nullable:True /// [SugarColumn(ColumnName="F_CANGKUHUOZHU")] public string FCANGKUHUOZHU {get;set;} /// - /// Desc: + /// Desc:公司ID /// Default: - /// Nullable:False + /// Nullable:True /// [SugarColumn(ColumnName="F_COMPANYID")] public string FCOMPANYID {get;set;} @@ -112,18 +112,66 @@ namespace MyCode.Project.Domain.Model /// /// Desc: /// Default: - /// Nullable:False + /// Nullable:True /// [SugarColumn(ColumnName="F_DACANG")] public string FDACANG {get;set;} /// - /// Desc: + /// Desc:税率 + /// Default:0 + /// Nullable:True + /// + [SugarColumn(ColumnName="F_TAXRATE")] + public decimal? FTAXRATE {get;set;} + + /// + /// Desc:创建日期 + /// Default: + /// Nullable:True + /// + [SugarColumn(ColumnName="F_YTKJ_CREATEDATE")] + public DateTime? FYTKJCREATEDATE {get;set;} + + /// + /// Desc:修改日期 + /// Default: + /// Nullable:True + /// + [SugarColumn(ColumnName="F_YTKJ_MODIFYDATE")] + public DateTime? FYTKJMODIFYDATE {get;set;} + + /// + /// Desc:审核日期 + /// Default: + /// Nullable:True + /// + [SugarColumn(ColumnName="F_AUDITDATE")] + public DateTime? FAUDITDATE {get;set;} + + /// + /// Desc:创建人 /// Default:0 /// Nullable:False /// - [SugarColumn(ColumnName="F_TAXRATE")] - public decimal FTAXRATE {get;set;} + [SugarColumn(ColumnName="F_YTKJ_CREATORID")] + public int FYTKJCREATORID {get;set;} + + /// + /// Desc:修改人 + /// Default:0 + /// Nullable:False + /// + [SugarColumn(ColumnName="F_YTKJ_MODIFIERID")] + public int FYTKJMODIFIERID {get;set;} + + /// + /// Desc:审核人 + /// Default:0 + /// Nullable:False + /// + [SugarColumn(ColumnName="F_AUDITOR")] + public int FAUDITOR {get;set;} } } diff --git a/Reportapi/MyCode.Project.Domain/MyCode.Project.Domain.csproj b/Reportapi/MyCode.Project.Domain/MyCode.Project.Domain.csproj index f440296..2bcf467 100644 --- a/Reportapi/MyCode.Project.Domain/MyCode.Project.Domain.csproj +++ b/Reportapi/MyCode.Project.Domain/MyCode.Project.Domain.csproj @@ -63,28 +63,36 @@ + + + + + - + + + + diff --git a/Reportapi/MyCode.Project.Domain/Repositories/IJackOrdersItemRepository.cs b/Reportapi/MyCode.Project.Domain/Repositories/IJackOrdersItemRepository.cs index 98d728c..3160d0d 100644 --- a/Reportapi/MyCode.Project.Domain/Repositories/IJackOrdersItemRepository.cs +++ b/Reportapi/MyCode.Project.Domain/Repositories/IJackOrdersItemRepository.cs @@ -8,11 +8,17 @@ using MyCode.Project.Domain; using MyCode.Project.Domain.Model; using MyCode.Project.Infrastructure.Common; using MyCode.Project.Domain.Message; +using MyCode.Project.Domain.Message.Response.JackYun; namespace MyCode.Project.Domain.Repositories { public interface IJackOrdersItemRepository : IRepository { - - } + /// + /// 获取合并后的吉客云订单 + /// + /// + List GetPushOrder(); + + } } diff --git a/Reportapi/MyCode.Project.Domain/Repositories/IPushKingDeeOrderItemRepository.cs b/Reportapi/MyCode.Project.Domain/Repositories/IPushKingDeeOrderItemRepository.cs new file mode 100644 index 0000000..fe2e81a --- /dev/null +++ b/Reportapi/MyCode.Project.Domain/Repositories/IPushKingDeeOrderItemRepository.cs @@ -0,0 +1,18 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using MyCode.Project.Infrastructure; +using MyCode.Project.Domain; +using MyCode.Project.Domain.Model; +using MyCode.Project.Infrastructure.Common; +using MyCode.Project.Domain.Message; + +namespace MyCode.Project.Domain.Repositories +{ + public interface IPushKingDeeOrderItemRepository : IRepository + { + + } +} diff --git a/Reportapi/MyCode.Project.Domain/Repositories/IPushKingDeeOrderRepository.cs b/Reportapi/MyCode.Project.Domain/Repositories/IPushKingDeeOrderRepository.cs new file mode 100644 index 0000000..b1933ee --- /dev/null +++ b/Reportapi/MyCode.Project.Domain/Repositories/IPushKingDeeOrderRepository.cs @@ -0,0 +1,18 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using MyCode.Project.Infrastructure; +using MyCode.Project.Domain; +using MyCode.Project.Domain.Model; +using MyCode.Project.Infrastructure.Common; +using MyCode.Project.Domain.Message; + +namespace MyCode.Project.Domain.Repositories +{ + public interface IPushKingDeeOrderRepository : IRepository + { + + } +} diff --git a/Reportapi/MyCode.Project.Domain/Repositories/IWMStoJackyunInventoryMovementView1Repository.cs b/Reportapi/MyCode.Project.Domain/Repositories/IWMStoJackyunInventoryMovementView1Repository.cs new file mode 100644 index 0000000..e0eb0bd --- /dev/null +++ b/Reportapi/MyCode.Project.Domain/Repositories/IWMStoJackyunInventoryMovementView1Repository.cs @@ -0,0 +1,18 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using MyCode.Project.Infrastructure; +using MyCode.Project.Domain; +using MyCode.Project.Domain.Model; +using MyCode.Project.Infrastructure.Common; +using MyCode.Project.Domain.Message; + +namespace MyCode.Project.Domain.Repositories +{ + public interface IWMStoJackyunInventoryMovementView1Repository : IRepository + { + + } +} diff --git a/Reportapi/MyCode.Project.Domain/Repositories/IWMStoJackyunInventoryMovementView3Repository.cs b/Reportapi/MyCode.Project.Domain/Repositories/IWMStoJackyunInventoryMovementView3Repository.cs new file mode 100644 index 0000000..6a2a32b --- /dev/null +++ b/Reportapi/MyCode.Project.Domain/Repositories/IWMStoJackyunInventoryMovementView3Repository.cs @@ -0,0 +1,18 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using MyCode.Project.Infrastructure; +using MyCode.Project.Domain; +using MyCode.Project.Domain.Model; +using MyCode.Project.Infrastructure.Common; +using MyCode.Project.Domain.Message; + +namespace MyCode.Project.Domain.Repositories +{ + public interface IWMStoJackyunInventoryMovementView3Repository : IRepository + { + + } +} diff --git a/Reportapi/MyCode.Project.OutSideService/Implementation/KingDeeService.cs b/Reportapi/MyCode.Project.OutSideService/Implementation/KingDeeService.cs new file mode 100644 index 0000000..5c29c57 --- /dev/null +++ b/Reportapi/MyCode.Project.OutSideService/Implementation/KingDeeService.cs @@ -0,0 +1,166 @@ +using Kingdee.CDP.WebApi.SDK; +using MyCode.Project.Domain.Message.Request.KingDee; +using MyCode.Project.Domain.Message.Response.KingDee; +using MyCode.Project.Infrastructure.Common; +using System; +using System.Collections.Generic; +using System.Configuration; +using System.Linq; + +namespace MyCode.Project.OutSideService.Implementation +{ + public class KingDeeService //: IKingDeeService + { + public KingDeeService() + { + } + public static K3CloudApi staClient = null; + public static DateTime timeOut = DateTime.Now; + + + #region + /// + /// 获取一个K3客户端 + /// + /// + public K3CloudApi GetK3CloudClient(string yuYan = "") + { + + /*** + * "Kingdee": { + "Default": { + //第三方系统登录授权的账套ID + "AcctID": "65edc24ab975db", + //第三方系统登录授权的应用ID + "AppID": "302967_20fp7YsL2kpWR9VG5Y3LSbUHzv3/SDmv", + //第三方系统登录授权的应用密钥 + "AppSec": "5e38f16711514126ae1511ca4ead3232", + //第三方系统登录授权的用户 + "UserName": "ERP1", + //账套语系,默认2052 + "LCID": 2052, + //服务Url地址 (只有私有云用户需要配置Serverurl,公有云用户走网关不需要配置) + "ServerUrl": "http://8.138.110.197/K3Cloud", + // 时间 + "Timestamp": 30 + } +} + 语言ID,中文2052(默认),英文1033,繁体3076; + * + * + * */ + + if (staClient == null || DateTime.Now > timeOut || 1 == 1) + { + + string AppID = ConfigurationManager.AppSettings.Get("X-KDApi-AppID"); + string UserName = ConfigurationManager.AppSettings.Get("X-KDApi-UserName"); + string AcctID = ConfigurationManager.AppSettings.Get("X-KDApi-AcctID"); + string AppSec = ConfigurationManager.AppSettings.Get("X-KDApi-AppSec"); + string LCID = ConfigurationManager.AppSettings.Get("X-KDApi-LCID"); + if (yuYan != "") + LCID = yuYan; + string ServerUrl = ConfigurationManager.AppSettings.Get("X-KDApi-ServerUrl"); + //staClient = new K3CloudApi(ServerUrl); + timeOut = DateTime.Now.AddMinutes(5); + staClient = new K3CloudApi(); + staClient.InitClient(AcctID, AppID, AppSec, UserName, int.Parse(LCID), "100", ServerUrl); + //staClient.InitClient("65edc24ab975db", "302967_20fp7YsL2kpWR9VG5Y3LSbUHzv3/SDmv", "5e38f16711514126ae1511ca4ead3232", "ERP1", 2052, "100", "http://8.138.110.197/k3cloud/"); + } + return staClient; + + + + } + #endregion + + + + + + + + + + #region 保存一个订单对象 + /// + /// 保存一个订单对象 + /// + /// + /// + /// + public string Save(string formId, BillSave billSave) + { + staClient = GetK3CloudClient(); + var datastr = JsonHelper.ToJson(billSave); + //LogHelper.Info(datastr); + var resultString = staClient.Save(formId, datastr); + if (resultString.Contains("ErrorCode")) + { + LogHelper.Error("金蝶云接口调用失败,请检查"); + LogHelper.Error(resultString); + //throw new Exception("单据在云星空已锁定,请联系采购员"); + string Message = ""; + try + { + ErrorResponse errorResponse = JsonHelper.ToObject(resultString); + Message = string.Join(",", errorResponse.Result.ResponseStatus.Errors.Select(t => t.Message).ToList()); + } + catch (Exception ex) + { + string ds = ex.Message; + throw new Exception("2云星空接口调用失败,请联系管理员,错误信息:" + resultString); + + } + throw new Exception("1云星空接口调用失败,请联系管理员,错误信息:" + Message); + } + var result = JsonHelper.ToObject>>(resultString); + var data = result["Result"]["ResponseStatus"]; + return resultString; + } + #endregion + + + + + #region Delete(删除某个订单) + /// + /// 删除某个订单 + /// + /// + /// + /// + /// + + public dynamic Delete(string formId, BillDelete billdelete) + { + staClient = GetK3CloudClient(); + var datastr = JsonHelper.ToJson(billdelete); + LogHelper.Info(datastr); + var resultString = staClient.Delete(formId, datastr); + if (resultString.Contains("ErrorCode")) + { + LogHelper.Error("金蝶云接口调用失败,请检查"); + LogHelper.Error(resultString); + string Message = ""; + try + { + ErrorResponse errorResponse = JsonHelper.ToObject(resultString); + Message = string.Join(",", errorResponse.Result.ResponseStatus.Errors.Select(t => t.Message).ToList()); + } + catch (Exception ex) + { + string ds = ex.Message; + throw new Exception("2云星空接口调用失败,请联系管理员,错误信息:" + resultString); + + } + throw new Exception("1云星空接口调用失败,请联系管理员,错误信息:" + Message); + } + var result = JsonHelper.ToObject(resultString); + var data = result["Result"]["ResponseStatus"]["SuccessEntitys"]; + return JsonHelper.ToJson(data); + } + #endregion + + } +} diff --git a/Reportapi/MyCode.Project.OutSideService/MyCode.Project.OutSideService.csproj b/Reportapi/MyCode.Project.OutSideService/MyCode.Project.OutSideService.csproj index e28eb1d..18a91c3 100644 --- a/Reportapi/MyCode.Project.OutSideService/MyCode.Project.OutSideService.csproj +++ b/Reportapi/MyCode.Project.OutSideService/MyCode.Project.OutSideService.csproj @@ -31,6 +31,9 @@ 4 + + ..\kingdeeDll\Kingdee.CDP.WebApi.SDK.dll + False ..\Lib\Microsoft.Practices.Unity.dll @@ -108,6 +111,7 @@ + diff --git a/Reportapi/MyCode.Project.Repositories/JackOrdersItemRepository.cs b/Reportapi/MyCode.Project.Repositories/JackOrdersItemRepository.cs index 5482ca3..6accd66 100644 --- a/Reportapi/MyCode.Project.Repositories/JackOrdersItemRepository.cs +++ b/Reportapi/MyCode.Project.Repositories/JackOrdersItemRepository.cs @@ -9,6 +9,7 @@ using MyCode.Project.Domain.Model; using MyCode.Project.Domain.Repositories; using MyCode.Project.Infrastructure.Common; using MyCode.Project.Infrastructure.Search; +using MyCode.Project.Domain.Message.Response.JackYun; namespace MyCode.Project.Repositories { @@ -17,10 +18,30 @@ namespace MyCode.Project.Repositories public JackOrdersItemRepository(MyCodeSqlSugarClient context) : base(context) { } - + + #region GetPushOrder(获取合并后的吉客云订单) + /// + /// 获取合并后的吉客云订单 + /// + /// + public List GetPushOrder() + { + string sql = $@" + SELECT [shopCode], [shopName], [shopId], [warehouseName], [warehouseCode], + [status], CONVERT(NVARCHAR(30),[consignTime],23) [consignTime], + [goodsNo], [goodsId],SUM([sellTotal]) [sellTotal], + SUM([sellCount]) [sellCount], SUM([divideSellTotal]) AS [divideSellTotal], + [barcode], [TradeType] ,[warehouseId] +FROM [JackOrders] a WITH (NOLOCK) + LEFT JOIN [dbo].[JackOrdersItem] b WITH (NOLOCK) + ON a.id = b.JackOrdersId +WHERE a.status = 0 +GROUP BY [shopCode],[shopName], [shopId], [warehouseName], [warehouseCode], [status], CONVERT(NVARCHAR(30),[consignTime],23) ,[goodsNo], [goodsId], [barcode] ,[warehouseId], [TradeType];"; + var list = this.SelectList(sql); + return list; + } + #endregion - - - } + } } \ No newline at end of file diff --git a/Reportapi/MyCode.Project.Repositories/MyCode.Project.Repositories.csproj b/Reportapi/MyCode.Project.Repositories/MyCode.Project.Repositories.csproj index cd40e89..751c984 100644 --- a/Reportapi/MyCode.Project.Repositories/MyCode.Project.Repositories.csproj +++ b/Reportapi/MyCode.Project.Repositories/MyCode.Project.Repositories.csproj @@ -90,6 +90,8 @@ + + diff --git a/Reportapi/MyCode.Project.Repositories/PushKingDeeOrderItemRepository.cs b/Reportapi/MyCode.Project.Repositories/PushKingDeeOrderItemRepository.cs new file mode 100644 index 0000000..e8f0416 --- /dev/null +++ b/Reportapi/MyCode.Project.Repositories/PushKingDeeOrderItemRepository.cs @@ -0,0 +1,26 @@ +using MyCode.Project.Repositories.Common; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using MyCode.Project.Domain.Message; +using MyCode.Project.Domain.Model; +using MyCode.Project.Domain.Repositories; +using MyCode.Project.Infrastructure.Common; +using MyCode.Project.Infrastructure.Search; + +namespace MyCode.Project.Repositories +{ + public class PushKingDeeOrderItemRepository: Repository, IPushKingDeeOrderItemRepository + { + public PushKingDeeOrderItemRepository(MyCodeSqlSugarClient context) : base(context) + { } + + + + + + + } +} \ No newline at end of file diff --git a/Reportapi/MyCode.Project.Repositories/PushKingDeeOrderRepository.cs b/Reportapi/MyCode.Project.Repositories/PushKingDeeOrderRepository.cs new file mode 100644 index 0000000..ae45f55 --- /dev/null +++ b/Reportapi/MyCode.Project.Repositories/PushKingDeeOrderRepository.cs @@ -0,0 +1,26 @@ +using MyCode.Project.Repositories.Common; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using MyCode.Project.Domain.Message; +using MyCode.Project.Domain.Model; +using MyCode.Project.Domain.Repositories; +using MyCode.Project.Infrastructure.Common; +using MyCode.Project.Infrastructure.Search; + +namespace MyCode.Project.Repositories +{ + public class PushKingDeeOrderRepository: Repository, IPushKingDeeOrderRepository + { + public PushKingDeeOrderRepository(MyCodeSqlSugarClient context) : base(context) + { } + + + + + + + } +} \ No newline at end of file diff --git a/Reportapi/MyCode.Project.Repositories/WMStoJackyunInventoryMovementView1Repository.cs b/Reportapi/MyCode.Project.Repositories/WMStoJackyunInventoryMovementView1Repository.cs new file mode 100644 index 0000000..f85166f --- /dev/null +++ b/Reportapi/MyCode.Project.Repositories/WMStoJackyunInventoryMovementView1Repository.cs @@ -0,0 +1,26 @@ +using MyCode.Project.Repositories.Common; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using MyCode.Project.Domain.Message; +using MyCode.Project.Domain.Model; +using MyCode.Project.Domain.Repositories; +using MyCode.Project.Infrastructure.Common; +using MyCode.Project.Infrastructure.Search; + +namespace MyCode.Project.Repositories +{ + public class WMStoJackyunInventoryMovementView1Repository: Repository, IWMStoJackyunInventoryMovementView1Repository + { + public WMStoJackyunInventoryMovementView1Repository(MyCodeSqlSugarClient context) : base(context) + { } + + + + + + + } +} \ No newline at end of file diff --git a/Reportapi/MyCode.Project.Repositories/WMStoJackyunInventoryMovementView3Repository.cs b/Reportapi/MyCode.Project.Repositories/WMStoJackyunInventoryMovementView3Repository.cs new file mode 100644 index 0000000..1a0b6f4 --- /dev/null +++ b/Reportapi/MyCode.Project.Repositories/WMStoJackyunInventoryMovementView3Repository.cs @@ -0,0 +1,26 @@ +using MyCode.Project.Repositories.Common; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using MyCode.Project.Domain.Message; +using MyCode.Project.Domain.Model; +using MyCode.Project.Domain.Repositories; +using MyCode.Project.Infrastructure.Common; +using MyCode.Project.Infrastructure.Search; + +namespace MyCode.Project.Repositories +{ + public class WMStoJackyunInventoryMovementView3Repository: Repository, IWMStoJackyunInventoryMovementView3Repository + { + public WMStoJackyunInventoryMovementView3Repository(MyCodeSqlSugarClient context) : base(context) + { } + + + + + + + } +} \ No newline at end of file diff --git a/Reportapi/MyCode.Project.Services/IServices/IJackYunTaskService.cs b/Reportapi/MyCode.Project.Services/IServices/IJackYunTaskService.cs index 3bd538e..1a25911 100644 --- a/Reportapi/MyCode.Project.Services/IServices/IJackYunTaskService.cs +++ b/Reportapi/MyCode.Project.Services/IServices/IJackYunTaskService.cs @@ -1,4 +1,5 @@ using MyCode.Project.Domain.Message.Response.Common; +using MyCode.Project.Repositories.Common; using System.Collections.Generic; namespace MyCode.Project.Services @@ -10,5 +11,12 @@ namespace MyCode.Project.Services /// /// void TaskGetJackYunOrder(string now); + + /// + /// 合并吉客云订单到新表 + /// + /// + + string GetAndMergeJackYunOrder(string now); } } diff --git a/Reportapi/MyCode.Project.Services/Implementation/JackYunService.cs b/Reportapi/MyCode.Project.Services/Implementation/JackYunService.cs index b03e950..959be5d 100644 --- a/Reportapi/MyCode.Project.Services/Implementation/JackYunService.cs +++ b/Reportapi/MyCode.Project.Services/Implementation/JackYunService.cs @@ -118,9 +118,9 @@ namespace MyCode.Project.Services.Implementation }); return trades; } - #endregion - + + } diff --git a/Reportapi/MyCode.Project.Services/Implementation/JackYunTaskService.cs b/Reportapi/MyCode.Project.Services/Implementation/JackYunTaskService.cs index a5cbcaa..09bf055 100644 --- a/Reportapi/MyCode.Project.Services/Implementation/JackYunTaskService.cs +++ b/Reportapi/MyCode.Project.Services/Implementation/JackYunTaskService.cs @@ -1,4 +1,5 @@ -using MyCode.Project.Domain.Model; +using MyCode.Project.Domain.Message.Response.JackYun; +using MyCode.Project.Domain.Model; using MyCode.Project.Domain.Repositories; using MyCode.Project.Infrastructure.Common; using MyCode.Project.Infrastructure.JackYun; @@ -17,11 +18,20 @@ namespace MyCode.Project.Services.Implementation private IJackYunService _jackYunService; private IJackOrdersRepository _jackOrdersRepository; private IJackOrdersItemRepository _jackOrdersItemRepository; + private IPushKingDeeOrderRepository _pushKingDeeOrderRepository; + private IPushKingDeeOrderItemRepository _pushKingDeeOrderItemRepository; + private IYTKJTShopParameterRepository _yTKJTShopParameterRepository; public JackYunTaskService(IJackOrdersRepository jackOrdersRepository , IJackOrdersItemRepository jackOrdersItemRepository - ,IJackYunService jackYunService) + , IPushKingDeeOrderRepository pushKingDeeOrderRepository + , IPushKingDeeOrderItemRepository pushKingDeeOrderItemRepository + , IYTKJTShopParameterRepository yTKJTShopParameterRepository + , IJackYunService jackYunService) { + _yTKJTShopParameterRepository = yTKJTShopParameterRepository; + _pushKingDeeOrderRepository = pushKingDeeOrderRepository; + _pushKingDeeOrderItemRepository = pushKingDeeOrderItemRepository; _jackOrdersRepository = jackOrdersRepository; _jackOrdersItemRepository = jackOrdersItemRepository; _jackYunService = jackYunService; @@ -82,5 +92,69 @@ namespace MyCode.Project.Services.Implementation } } #endregion + + #region GetAndMergeJackYunOrder(合并吉客云订单到新表) + /// + /// 合并吉客云订单到新表 + /// + /// + [TransactionCallHandler] + public string GetAndMergeJackYunOrder(string now) + { + var list = _jackOrdersItemRepository.GetPushOrder(); + List mesg = new List(); + + var shopParemList = _yTKJTShopParameterRepository.Queryable().Where(t => t.FDOCUMENTSTATUS == "C").ToList(); + List pushKingDeeOrderItems = new List(); + List pushKingDeeOrders = new List(); + list.ForEach(sheet => + { + if (pushKingDeeOrders.Where(t => t.ShopId == sheet.ShopId && t.WarehouseId == sheet.WarehouseId).Count() > 0) + { + return; + } + PushKingDeeOrder pushKingDeeOrder = new PushKingDeeOrder(); + pushKingDeeOrder = AutoMapperHelper.AutoMappToSingle(sheet); + pushKingDeeOrder.Id = Guid.NewGuid(); + pushKingDeeOrders.Add(pushKingDeeOrder); + + var tempList = list.Where(t => t.ShopId == sheet.ShopId && t.WarehouseId == sheet.WarehouseId).ToList(); + tempList.ForEach(item => + { + PushKingDeeOrderItem pushKingDeeOrderItem = new PushKingDeeOrderItem(); + pushKingDeeOrderItem = AutoMapperHelper.AutoMappToSingle(item); + pushKingDeeOrderItem.PushKingDeeOrderId = pushKingDeeOrder.Id; + pushKingDeeOrderItem.Id = Guid.NewGuid(); + pushKingDeeOrderItems.Add(pushKingDeeOrderItem); + }); + //var shopParem = shopParemList.Where(h => h.FSHOPCODE == sheet.ShopId.Value.ToString()&& h.FWAREHOUSE.Value.ToString()==sheet.WarehouseId ).FirstOrDefault(); + //if (shopParem != null) + //{ + //} + //else + //{ + // mesg.Add($@"店铺{sheet.ShopName}没有配置店铺参数或者配置的仓库不是 {sheet.WarehouseCode}"); + //} + }); + if (pushKingDeeOrders.Count > 0) + { + var oldList = _jackOrdersRepository.Queryable().Where(t => t.Status == 0).ToList(); + oldList.ForEach(t => + { + if (pushKingDeeOrders.Count(h => h.ShopId == t.ShopId && t.WarehouseId == h.WarehouseId) > 0) + { + t.Status = 1; + t.UpdateTime = DateTime.Now; + } + }); + oldList = oldList.Where(t => t.Status == 1).ToList(); + _jackOrdersRepository.Update(oldList); + _pushKingDeeOrderRepository.Add(pushKingDeeOrders); + _pushKingDeeOrderItemRepository.Add(pushKingDeeOrderItems); + } + + return JsonHelper.ToJson(list); + } + #endregion } } diff --git a/Reportapi/MyCode.Project.Services/Implementation/WMSService.cs b/Reportapi/MyCode.Project.Services/Implementation/WMSService.cs index 9adfa0a..4ea6f3b 100644 --- a/Reportapi/MyCode.Project.Services/Implementation/WMSService.cs +++ b/Reportapi/MyCode.Project.Services/Implementation/WMSService.cs @@ -12,6 +12,7 @@ using MyCode.Project.Repositories.Common; using MyCode.Project.Repositories.ZHMD; using System; using System.Collections.Generic; +using System.Diagnostics; using System.Linq; using System.Threading; @@ -51,7 +52,9 @@ namespace MyCode.Project.Services.Implementation if (now < startTime) now = startTime; var list= _wMStoJackyunInventoryMovementView3Repository.GetList(now); - SetWMSOrder(list); + LogHelper.Info("WMS订单行数:" + list.Count); + if (list.Count>0) + SetWMSOrder(list); return list; } @@ -64,6 +67,7 @@ namespace MyCode.Project.Services.Implementation [TransactionCallHandler] public void SetWMSOrder(List trades) { + var ids = trades.Select(t => t.单据号).ToList(); var oldids = _repository.Queryable().Where(t => ids.Contains(t.单据号)) .Select(t => new { t.单据号, t.单据行号 }).ToList(); diff --git a/Reportapi/MyCode.Project.WebApi/Areas/Wechat/Controllers/BaseWechatController.cs b/Reportapi/MyCode.Project.WebApi/Areas/Wechat/Controllers/BaseWechatController.cs index cea54ca..221c0fd 100644 --- a/Reportapi/MyCode.Project.WebApi/Areas/Wechat/Controllers/BaseWechatController.cs +++ b/Reportapi/MyCode.Project.WebApi/Areas/Wechat/Controllers/BaseWechatController.cs @@ -16,13 +16,13 @@ namespace MyCode.Project.WebApi.Areas.Wechat.Controllers /// /// 取得登陆信息 /// - protected MemberLoginInfo CurrentLogin + protected LoginInfo CurrentLogin { get { var obj = this.RequestContext.RouteData.Values[Const.LoginInfoKey]; - return ((JObject)obj).ToObject(); + return ((JObject)obj).ToObject(); } } } diff --git a/Reportapi/MyCode.Project.WebApi/Controllers/TestController.cs b/Reportapi/MyCode.Project.WebApi/Controllers/TestController.cs index 36ece42..d0e8fdf 100644 --- a/Reportapi/MyCode.Project.WebApi/Controllers/TestController.cs +++ b/Reportapi/MyCode.Project.WebApi/Controllers/TestController.cs @@ -50,6 +50,18 @@ namespace MyCode.Project.WebApi.Controllers } #endregion + #region 合并吉客云订单到新表 + /// + /// 合并吉客云订单到新表 + /// + [HttpGet] + [AllowAnonymous] + public string GetAndMergeJackYunOrder(string now) + { + return _jackYunTaskService.GetAndMergeJackYunOrder(now); + } + #endregion + //#region 订单查询 diff --git a/Reportapi/kingdeeDll/Kingdee.CDP.WebApi.SDK.dll b/Reportapi/kingdeeDll/Kingdee.CDP.WebApi.SDK.dll new file mode 100644 index 0000000000000000000000000000000000000000..3e2915fe4dfe7f767fea6230d018a4f6d693a6b4 GIT binary patch literal 61952 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 literal 0 HcmV?d00001