|
|
|
using BBWY.Client.APIServices;
|
|
|
|
using BBWY.Client.Models.PackTask;
|
|
|
|
using BBWY.Client.Models;
|
|
|
|
using BBWY.Client.Views.PackTask;
|
|
|
|
using BBWY.Common.Models;
|
|
|
|
using GalaSoft.MvvmLight.Command;
|
|
|
|
using System;
|
|
|
|
using System.Collections.Generic;
|
|
|
|
using System.Collections.ObjectModel;
|
|
|
|
using System.Linq;
|
|
|
|
using System.Text;
|
|
|
|
using System.Windows.Input;
|
|
|
|
using System.Windows;
|
|
|
|
using BBWY.Client.Models.QualityTask;
|
|
|
|
using BBWY.Client.Views.QualityTask;
|
|
|
|
using BBWY.Client.Models.APIModel.Response.PackPurchaseTask;
|
|
|
|
using NPOI.Util.ArrayExtensions;
|
|
|
|
using System.Threading.Tasks;
|
|
|
|
using Org.BouncyCastle.Asn1.Crmf;
|
|
|
|
using System.Runtime.InteropServices.WindowsRuntime;
|
|
|
|
using NPOI.Util;
|
|
|
|
using BBWY.Controls;
|
|
|
|
using WebSocketSharp;
|
|
|
|
|
|
|
|
namespace BBWY.Client.ViewModels
|
|
|
|
{
|
|
|
|
public class QualityViewModel : BaseVM
|
|
|
|
{
|
|
|
|
#region 属性
|
|
|
|
|
|
|
|
|
|
|
|
public int goodProductQuantity;
|
|
|
|
public int arrivalQuantity;
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
/// 到货数量
|
|
|
|
/// </summary>
|
|
|
|
public int ArrivalQuantity { get => arrivalQuantity; set { Set(ref arrivalQuantity, value); } }
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
/// 良品数量
|
|
|
|
/// </summary>
|
|
|
|
public int GoodProductQuantity { get => goodProductQuantity; set { Set(ref goodProductQuantity, value); } }
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
/// 预计完成时间
|
|
|
|
/// </summary>
|
|
|
|
public DateTime? PreCompeteTime { get; set; }
|
|
|
|
|
|
|
|
private ObservableCollection<PurchaseSku> purchaseSkuList;
|
|
|
|
public ObservableCollection<PurchaseSku> PurchaseSkuList { get => purchaseSkuList; set { Set(ref purchaseSkuList, value); } }
|
|
|
|
|
|
|
|
private string searchSkuId;
|
|
|
|
public string SearchSkuId { get => searchSkuId; set { Set(ref searchSkuId, value); } }
|
|
|
|
|
|
|
|
// public long TaskId { get; set; }
|
|
|
|
//private bool isSelected;
|
|
|
|
//public bool IsSelected { get => isSelected; set { Set(ref isSelected, value); } }
|
|
|
|
|
|
|
|
private ObservableCollection<string> worryList = new ObservableCollection<string> {
|
|
|
|
"否","是"
|
|
|
|
};
|
|
|
|
public ObservableCollection<string> WorryList { get => worryList; set { Set(ref worryList, value); } }
|
|
|
|
|
|
|
|
private ObservableCollection<string> positionTypeList = new ObservableCollection<string> {
|
|
|
|
"商家仓","云仓", "京仓","聚水潭齐越仓"};
|
|
|
|
public ObservableCollection<string> PositionTypeList { get => positionTypeList; set { Set(ref positionTypeList, value); } }
|
|
|
|
|
|
|
|
private ObservableCollection<string> packTypeList = new ObservableCollection<string> {
|
|
|
|
"单件","多件"
|
|
|
|
};
|
|
|
|
public ObservableCollection<string> PackTypeList { get => packTypeList; set { Set(ref packTypeList, value); } }
|
|
|
|
|
|
|
|
private ObservableCollection<string> basicPackList = new ObservableCollection<string> {
|
|
|
|
"快递袋","纸箱","麻袋"
|
|
|
|
};
|
|
|
|
public ObservableCollection<string> BasicPackList { get => basicPackList; set { Set(ref basicPackList, value); } }
|
|
|
|
|
|
|
|
private ObservableCollection<string> isNeedBarCodeList = new ObservableCollection<string> {
|
|
|
|
"需要", "不需要" };
|
|
|
|
public ObservableCollection<string> IsNeedBarCodeList { get => isNeedBarCodeList; set { Set(ref isNeedBarCodeList, value); } }
|
|
|
|
|
|
|
|
private ObservableCollection<string> isNeedCerList = new ObservableCollection<string> {
|
|
|
|
"需要", "不需要" };
|
|
|
|
public ObservableCollection<string> IsNeedCerList { get => isNeedCerList; set { Set(ref isNeedCerList, value); } }
|
|
|
|
|
|
|
|
|
|
|
|
private ObservableCollection<string> certificatePositionList = new ObservableCollection<string> {
|
|
|
|
"无需合格证","外部包装","产品包装"
|
|
|
|
};
|
|
|
|
public ObservableCollection<string> CertificatePositionList { get => certificatePositionList; set { Set(ref certificatePositionList, value); } }
|
|
|
|
|
|
|
|
private ObservableCollection<string> availabilityList = new ObservableCollection<string> {
|
|
|
|
"已到货","部分到货","未到货"
|
|
|
|
};
|
|
|
|
public ObservableCollection<string> AvailabilityList { get => availabilityList; set { Set(ref availabilityList, value); } }
|
|
|
|
|
|
|
|
|
|
|
|
private int floorDragNumber;
|
|
|
|
public int FloorDragNumber { get => floorDragNumber; set { Set(ref floorDragNumber, value); } }
|
|
|
|
|
|
|
|
private ObservableCollection<int> floorDragNumberList = new ObservableCollection<int>
|
|
|
|
{
|
|
|
|
|
|
|
|
};
|
|
|
|
public ObservableCollection<int> FloorDragNumberList { get => floorDragNumberList; set { Set(ref floorDragNumberList, value); } }
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private ObservableCollection<string> preCompeteTimeDayList = new ObservableCollection<string>
|
|
|
|
{
|
|
|
|
|
|
|
|
};
|
|
|
|
public ObservableCollection<string> PreCompeteTimeDayList
|
|
|
|
{
|
|
|
|
get => preCompeteTimeDayList; set
|
|
|
|
{
|
|
|
|
|
|
|
|
Set(ref preCompeteTimeDayList, value);
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
private ObservableCollection<string> preCompeteTimeHourList = new ObservableCollection<string> {
|
|
|
|
|
|
|
|
};
|
|
|
|
public ObservableCollection<string> PreCompeteTimeHourList { get => preCompeteTimeHourList; set { Set(ref preCompeteTimeHourList, value); } }
|
|
|
|
|
|
|
|
//
|
|
|
|
public string preCompeteTimeDay;
|
|
|
|
public string PreCompeteTimeDay
|
|
|
|
{
|
|
|
|
get => preCompeteTimeDay; set
|
|
|
|
{
|
|
|
|
|
|
|
|
Set(ref preCompeteTimeDay, value);
|
|
|
|
PreCompeteTimeDayOnChanged();//
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public string preCompeteTimeHour;
|
|
|
|
public string PreCompeteTimeHour { get => preCompeteTimeHour; set { Set(ref preCompeteTimeHour, value); } }
|
|
|
|
|
|
|
|
|
|
|
|
private ObservableCollection<WareHourseDTO> wareHourseList = new ObservableCollection<WareHourseDTO> { };
|
|
|
|
public ObservableCollection<WareHourseDTO> WareHourseList { get => wareHourseList; set { Set(ref wareHourseList, value); } }
|
|
|
|
|
|
|
|
private int wareHourseCount;
|
|
|
|
public int WareHourseCount { get => wareHourseCount; set { Set(ref wareHourseCount, value); } }
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private int skuCount;
|
|
|
|
/// <summary>
|
|
|
|
/// Sku任务数
|
|
|
|
/// </summary>
|
|
|
|
public int SkuCount { get => skuCount; set { Set(ref skuCount, value); } }
|
|
|
|
|
|
|
|
private string skuId;
|
|
|
|
/// <summary>
|
|
|
|
/// Sku
|
|
|
|
/// </summary>
|
|
|
|
public string SkuId { get => skuId; set { Set(ref skuId, value); } }
|
|
|
|
|
|
|
|
|
|
|
|
public string orderId;
|
|
|
|
public string OrderId { get => orderId; set { Set(ref orderId, value); } }
|
|
|
|
|
|
|
|
private string logo;
|
|
|
|
/// <summary>
|
|
|
|
/// 店铺Sku图链接
|
|
|
|
/// </summary>
|
|
|
|
public string Logo { get => logo; set { Set(ref logo, value); } }
|
|
|
|
|
|
|
|
private string skuName;
|
|
|
|
/// <summary>
|
|
|
|
/// 采购Sku名称
|
|
|
|
/// </summary>
|
|
|
|
public string SkuName { get => skuName; set { Set(ref skuName, value); } }
|
|
|
|
|
|
|
|
private string brand;
|
|
|
|
/// <summary>
|
|
|
|
/// 品牌
|
|
|
|
/// </summary>
|
|
|
|
public string Brand { get => brand; set { Set(ref brand, value); } }
|
|
|
|
|
|
|
|
|
|
|
|
private string productNo;
|
|
|
|
/// <summary>
|
|
|
|
/// 货号
|
|
|
|
/// </summary>
|
|
|
|
public string ProductNo { get => productNo; set { Set(ref productNo, value); } }
|
|
|
|
|
|
|
|
private string brandName;
|
|
|
|
/// <summary>
|
|
|
|
/// 品名(手写上传)
|
|
|
|
/// </summary>
|
|
|
|
public string BrandName { get => brandName; set { Set(ref brandName, value); } }
|
|
|
|
|
|
|
|
|
|
|
|
private int goodsNumber;
|
|
|
|
/// <summary>
|
|
|
|
/// 配件数
|
|
|
|
/// </summary>
|
|
|
|
public int GoodsNumber { get => goodsNumber; set { Set(ref goodsNumber, value); } }
|
|
|
|
private Worry isWorry;
|
|
|
|
/// <summary>
|
|
|
|
/// 是否加急
|
|
|
|
/// </summary>
|
|
|
|
public Worry IsWorry { get => isWorry; set { Set(ref isWorry, value); } }
|
|
|
|
|
|
|
|
private Availability availability;
|
|
|
|
/// <summary>
|
|
|
|
/// 到货情况(待收货=0,部分收货=1,已到货=2)
|
|
|
|
/// </summary>
|
|
|
|
public Availability Availability { get => availability; set { Set(ref availability, value); } }
|
|
|
|
|
|
|
|
private PackType packType;
|
|
|
|
/// <summary>
|
|
|
|
/// 打包类型(单件=0,多件=1)
|
|
|
|
/// </summary>
|
|
|
|
public PackType PackType { get => packType; set { Set(ref packType, value); } }
|
|
|
|
|
|
|
|
private BasicPack basicPack;
|
|
|
|
/// <summary>
|
|
|
|
/// 基础包装(快递袋=0,纸箱=1,麻袋=2)
|
|
|
|
/// </summary>
|
|
|
|
public BasicPack BasicPack { get => basicPack; set { Set(ref basicPack, value); } }
|
|
|
|
|
|
|
|
private PositionType positionType;
|
|
|
|
/// <summary>
|
|
|
|
/// 落仓(商家仓=0,云仓=1,京仓=2,聚水潭齐越仓=3)
|
|
|
|
/// </summary>
|
|
|
|
public PositionType PositionType { get => positionType; set { Set(ref positionType, value); } }
|
|
|
|
|
|
|
|
private string skuTitle;
|
|
|
|
/// <summary>
|
|
|
|
/// sku配件商品名称
|
|
|
|
/// </summary>
|
|
|
|
public string SkuTitle { get => skuTitle; set { Set(ref skuTitle, value); } }
|
|
|
|
|
|
|
|
private Need isNeedBarCode;
|
|
|
|
/// <summary>
|
|
|
|
/// 是否需要合格证
|
|
|
|
/// </summary>
|
|
|
|
public Need IsNeedBarCode { get => isNeedBarCode; set { Set(ref isNeedBarCode, value); } }
|
|
|
|
|
|
|
|
|
|
|
|
private Need isNeedCertificateModel;
|
|
|
|
/// <summary>
|
|
|
|
/// 是否需要条形码
|
|
|
|
/// </summary>
|
|
|
|
public Need IsNeedCertificateModel { get => isNeedCertificateModel; set { Set(ref isNeedCertificateModel, value); } }
|
|
|
|
|
|
|
|
|
|
|
|
private BarCodeModel barCodeModel;
|
|
|
|
/// <summary>
|
|
|
|
/// 条形码
|
|
|
|
/// </summary>
|
|
|
|
public BarCodeModel BarCodeModel { get => barCodeModel; set { Set(ref barCodeModel, value); } }
|
|
|
|
|
|
|
|
|
|
|
|
private bool isSetBarCode;
|
|
|
|
/// <summary>
|
|
|
|
/// 设置显示(条形码)
|
|
|
|
/// </summary>
|
|
|
|
public bool IsSetBarCode
|
|
|
|
{
|
|
|
|
get => isSetBarCode;
|
|
|
|
set
|
|
|
|
{
|
|
|
|
|
|
|
|
Set(ref isSetBarCode, value);
|
|
|
|
// IsNeedBarCode = IsSetBarCode ? Need.不需要 : Need.需要;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
private bool isSetCertificate;
|
|
|
|
/// <summary>
|
|
|
|
/// 设置显示(合格证)
|
|
|
|
/// </summary>
|
|
|
|
public bool IsSetCertificate
|
|
|
|
{
|
|
|
|
get => isSetCertificate; set
|
|
|
|
{
|
|
|
|
|
|
|
|
Set(ref isSetCertificate, value);
|
|
|
|
//IsNeedCertificateModel = IsSetCertificate ? Need.不需要 : Need.需要;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
private string setSpuCerStatus;
|
|
|
|
|
|
|
|
public string SetSpuCerStatus { get => setSpuCerStatus; set { Set(ref setSpuCerStatus, value); } }
|
|
|
|
private bool isSetSpuCertificate = true;
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
/// 设置spu显示(合格证)
|
|
|
|
/// </summary>
|
|
|
|
public bool IsSetSpuCertificate
|
|
|
|
{
|
|
|
|
get => isSetSpuCertificate; set
|
|
|
|
{
|
|
|
|
|
|
|
|
Set(ref isSetSpuCertificate, value);
|
|
|
|
SetSpuCerStatus = IsSetSpuCertificate ? "设置spu模板" : "修改spu模板";
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
private string saveTask;
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
/// 设置显示(合格证)
|
|
|
|
/// </summary>
|
|
|
|
public string SaveTask { get => saveTask; set { Set(ref saveTask, value); } }
|
|
|
|
|
|
|
|
|
|
|
|
private string spuId;
|
|
|
|
/// <summary>
|
|
|
|
/// 合格证
|
|
|
|
/// </summary>
|
|
|
|
public string SpuId { get => spuId; set { Set(ref spuId, value); } }
|
|
|
|
|
|
|
|
private CertificateModel spuCertificateModel;
|
|
|
|
/// <summary>
|
|
|
|
/// spu合格证
|
|
|
|
/// </summary>
|
|
|
|
public CertificateModel SpuCertificateModel { get => spuCertificateModel; set { Set(ref spuCertificateModel, value); } }
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private CertificateModel certificateModel;
|
|
|
|
/// <summary>
|
|
|
|
/// 合格证
|
|
|
|
/// </summary>
|
|
|
|
public CertificateModel CertificateModel { get => certificateModel; set { Set(ref certificateModel, value); } }
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
/// 合格证位置(外部包装=0,产品包装=1)
|
|
|
|
/// </summary>
|
|
|
|
private CertificatePosition certificatePosition;
|
|
|
|
/// <summary>
|
|
|
|
/// 合格证位置(外部包装=0,产品包装=1)
|
|
|
|
/// </summary>
|
|
|
|
public CertificatePosition CertificatePosition { get => certificatePosition; set { Set(ref certificatePosition, value); } }
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
/// 注意事项(对接备注)
|
|
|
|
/// </summary>
|
|
|
|
private string markMessage;
|
|
|
|
/// <summary>
|
|
|
|
/// 注意事项(对接备注)
|
|
|
|
/// </summary>
|
|
|
|
public string MarkMessage { get => markMessage; set { Set(ref markMessage, value); } }
|
|
|
|
|
|
|
|
|
|
|
|
private ObservableCollection<IncreateModel> increateList;
|
|
|
|
/// <summary>
|
|
|
|
/// 增量耗材查询关键字
|
|
|
|
/// </summary>
|
|
|
|
public ObservableCollection<IncreateModel> IncreateList { get => increateList; set { Set(ref increateList, value); } }
|
|
|
|
string[] increates = new string[] { "气泡纸", "气泡袋", "POP袋", "折纸箱", "气泡纸封边", "彩盒", "剪胶", "剪彩带", "快递袋", "收纳盒", "纸箱子", "装纸箱", "封边", "胶带", "折彩盒" };
|
|
|
|
|
|
|
|
PackPurchaseTaskService packPurchaseTaskService;
|
|
|
|
PackTaskService packTaskService;
|
|
|
|
ProductService productService;
|
|
|
|
GlobalContext globalContext;
|
|
|
|
private bool isLoading = false;
|
|
|
|
public bool IsLoading { get => isLoading; set { Set(ref isLoading, value); } }
|
|
|
|
|
|
|
|
PurchaseService purchaseService;
|
|
|
|
public string OriginShopName { get; set; }
|
|
|
|
|
|
|
|
|
|
|
|
private string skuPurchaseSchemeId;
|
|
|
|
public string SkuPurchaseSchemeId { get => skuPurchaseSchemeId; set { Set(ref skuPurchaseSchemeId, value); } }
|
|
|
|
public Platform Platform { get; set; }
|
|
|
|
public string ShopId { get; set; }
|
|
|
|
public long TaskId { get; set; }
|
|
|
|
public string UserName { get; set; }
|
|
|
|
|
|
|
|
public ICommand SetBarCodeCommand { get; set; }
|
|
|
|
public ICommand SetCertificateCommand { get; set; }
|
|
|
|
public ICommand LookBarCommand { get; set; }
|
|
|
|
public ICommand LookCerCommand { get; set; }
|
|
|
|
|
|
|
|
public ICommand OpenSkuDetailCommand { get; set; }
|
|
|
|
public ICommand CompeteQualityTaskCommand { get; set; }
|
|
|
|
public ICommand SearchSkuCommand { get; set; }
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
public QualityViewModel(ProductService productService, GlobalContext globalContext, PackPurchaseTaskService packPurchaseTaskService, PurchaseService purchaseService, PackTaskService packTaskService)
|
|
|
|
{
|
|
|
|
this.packPurchaseTaskService = packPurchaseTaskService;
|
|
|
|
this.productService = productService;
|
|
|
|
this.globalContext = globalContext;
|
|
|
|
|
|
|
|
OpenSkuDetailCommand = new RelayCommand<object>(OpenSkuDetail);
|
|
|
|
SetBarCodeCommand = new RelayCommand(SetBarCode);
|
|
|
|
SetCertificateCommand = new RelayCommand<PurchaseSku>(SetCertificate);
|
|
|
|
LookBarCommand = new RelayCommand(LookBar);
|
|
|
|
LookCerCommand = new RelayCommand<CertificateModel>(LookCer);
|
|
|
|
CompeteQualityTaskCommand = new RelayCommand<object>(CompeteQualityTask);
|
|
|
|
IncreateList = new ObservableCollection<IncreateModel>();
|
|
|
|
foreach (var item in increates)
|
|
|
|
{
|
|
|
|
IncreateList.Add(new IncreateModel
|
|
|
|
{
|
|
|
|
IncreateName = item,
|
|
|
|
IsSelected = false
|
|
|
|
});
|
|
|
|
}
|
|
|
|
|
|
|
|
this.purchaseService = purchaseService;
|
|
|
|
this.packTaskService = packTaskService;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
#region 方法
|
|
|
|
private void CompeteQualityTask(object obj)
|
|
|
|
{
|
|
|
|
|
|
|
|
if (FloorDragNumber <= 0)
|
|
|
|
{
|
|
|
|
MessageBox.Show($"请选择摆放地拖编号");
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
if (GoodProductQuantity > ArrivalQuantity)
|
|
|
|
{
|
|
|
|
MessageBox.Show($"良品数量:{GoodProductQuantity}不能大于到货数量:{ArrivalQuantity}");
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
if (ArrivalQuantity == 0)
|
|
|
|
{
|
|
|
|
MessageBox.Show($"到货数量不能:{ArrivalQuantity}!");
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
var request = new Models.APIModel.Request.QualityTaskRequest
|
|
|
|
{
|
|
|
|
BasicPack = BasicPack,
|
|
|
|
ArrivalQuantity = ArrivalQuantity,
|
|
|
|
GoodProductQuantity = GoodProductQuantity,
|
|
|
|
Increment1 = string.Join(",", IncreateList.Where(i => i.IsSelected).Select(i => i.IncreateName)),
|
|
|
|
BrandName = BrandName,
|
|
|
|
CertificatePosition = CertificatePosition,
|
|
|
|
MarkMessage = MarkMessage,
|
|
|
|
OrderId = OrderId,
|
|
|
|
PackType = PackType,
|
|
|
|
GoodsNumber = GoodsNumber,
|
|
|
|
SkuGoodsTitle = SkuTitle,
|
|
|
|
SkuId = SkuId,
|
|
|
|
IsNeedBar = IsNeedBarCode == Need.需要,
|
|
|
|
IsNeedCer = IsNeedCertificateModel == Need.需要,
|
|
|
|
TaskId = TaskId,
|
|
|
|
FloorDragNumber = FloorDragNumber
|
|
|
|
};
|
|
|
|
if (IsNeedBarCode == Need.需要)
|
|
|
|
{
|
|
|
|
if (BarCodeModel == null || BarCodeModel.Id <= 0)
|
|
|
|
{
|
|
|
|
MessageBox.Show("条形码不能为空");
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
request.BarcodeId = BarCodeModel.Id;
|
|
|
|
}
|
|
|
|
if (PurchaseSkuList != null && PurchaseSkuList.Count > 0 && purchaseSkuList.Any(p => p.IsNeedCer)) //(IsNeedCertificateModel == Need.需要)
|
|
|
|
{
|
|
|
|
//if ()
|
|
|
|
//{
|
|
|
|
// MessageBox.Show("无可用的合格证打印!");
|
|
|
|
// return;
|
|
|
|
//}
|
|
|
|
if (PurchaseSkuList.Where(p => p.IsSetCertificate).Count() > 0)
|
|
|
|
{
|
|
|
|
MessageBox.Show("存在未确认的合格证,请先完成确认!");
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
if (purchaseSkuList.Any(p => p.IsNeedCer && p.CerDTO == null))
|
|
|
|
{
|
|
|
|
MessageBox.Show("有未设置的合格证,请设置完所有的合格证再保存");
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
if (PurchaseSkuList.Where(p => p.IsNeedCer && p.CerDTO.Id > 0).Count() <= 0)
|
|
|
|
{
|
|
|
|
MessageBox.Show("无可选的合格证打印!");
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
request.CerId = string.Join(",", PurchaseSkuList.Where(p => p.IsNeedCer && p.CerDTO.Id > 0).Select(p => p.CerDTO.Id));
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
int hour = Convert.ToInt32(PreCompeteTimeHour.Replace("点前", ""));
|
|
|
|
|
|
|
|
|
|
|
|
DateTime date = DateTime.Now;
|
|
|
|
|
|
|
|
switch (preCompeteTimeDay)
|
|
|
|
{
|
|
|
|
case "今天":
|
|
|
|
date = DateTime.Now;
|
|
|
|
break;
|
|
|
|
case "明天":
|
|
|
|
date = DateTime.Now.AddDays(1);
|
|
|
|
break;
|
|
|
|
case "后天":
|
|
|
|
date = DateTime.Now.AddDays(2);
|
|
|
|
break;
|
|
|
|
default:
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
|
|
|
|
//date = Convert.ToDateTime(PreCompeteTimeDay);
|
|
|
|
|
|
|
|
|
|
|
|
var competeTime = date.Date.AddHours(hour);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (competeTime < DateTime.Now)
|
|
|
|
{
|
|
|
|
MessageBox.Show($"预计完成时间不能小于当前时间,请重新选择预计完成时间");
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
var now = DateTime.Now;
|
|
|
|
if (now.Hour < 12)
|
|
|
|
{
|
|
|
|
if (competeTime > now.AddDays(1).Date.AddHours(12))
|
|
|
|
{
|
|
|
|
MessageBox.Show($"预计完成时间不能超过明天12点,请重新选择预计完成时间");
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
else if (now.Hour < 18)
|
|
|
|
{
|
|
|
|
if (competeTime > now.AddDays(1).Date.AddHours(18))
|
|
|
|
{
|
|
|
|
MessageBox.Show($"预计完成时间不能超过明天18点,请重新选择预计完成时间");
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else if (now.Hour < 22)
|
|
|
|
{
|
|
|
|
if (competeTime > now.AddDays(1).Date.AddHours(22))
|
|
|
|
{
|
|
|
|
MessageBox.Show($"预计完成时间不能超过明天22点,请重新选择预计完成时间");
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
if (competeTime > now.AddDays(2).Date.AddHours(12))
|
|
|
|
{
|
|
|
|
MessageBox.Show($"预计完成时间不能超过后天12点,请重新选择预计完成时间");
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
request.PreCompeteTime = competeTime;
|
|
|
|
|
|
|
|
|
|
|
|
try
|
|
|
|
{
|
|
|
|
var competeRes = packPurchaseTaskService.CompeteQualityTask(request);
|
|
|
|
if (competeRes == null)
|
|
|
|
{
|
|
|
|
MessageBox.Show("网络异常");
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
if (!competeRes.Success)
|
|
|
|
{
|
|
|
|
MessageBox.Show(competeRes.Msg);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
BatchPrintWindow batchPrint = new BatchPrintWindow();
|
|
|
|
|
|
|
|
batchPrint.SetData(GoodProductQuantity,
|
|
|
|
PurchaseSkuList.Where(p => p.IsNeedCer && p.CerDTO.Id > 0).Select(p => p.CerDTO).ToArray()
|
|
|
|
, BarCodeModel);
|
|
|
|
batchPrint.ShowDialog();
|
|
|
|
|
|
|
|
if (ReflashWindow != null) ReflashWindow();
|
|
|
|
var window = obj as BWindow;
|
|
|
|
App.Current.Dispatcher.Invoke(new Action(() =>
|
|
|
|
{
|
|
|
|
|
|
|
|
window.Close();
|
|
|
|
}));
|
|
|
|
|
|
|
|
}
|
|
|
|
catch (Exception ex)
|
|
|
|
{
|
|
|
|
|
|
|
|
System.Windows.MessageBox.Show(ex.Message);
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
// "12点前","18点前","22点前"
|
|
|
|
private void PreCompeteTimeDayOnChanged()
|
|
|
|
{
|
|
|
|
var now = DateTime.Now;
|
|
|
|
if (now.Hour < 12)
|
|
|
|
{
|
|
|
|
if (PreCompeteTimeDay=="今天")
|
|
|
|
{
|
|
|
|
PreCompeteTimeHourList.Clear();
|
|
|
|
PreCompeteTimeHourList.Add("12点前");
|
|
|
|
PreCompeteTimeHourList.Add("18点前");
|
|
|
|
PreCompeteTimeHourList.Add("22点前");
|
|
|
|
PreCompeteTimeHour = "12点前";
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
if (PreCompeteTimeDay == "明天")
|
|
|
|
{
|
|
|
|
PreCompeteTimeHourList.Clear();
|
|
|
|
PreCompeteTimeHourList.Add("12点前");
|
|
|
|
PreCompeteTimeHour = "12点前";
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
else if (now.Hour < 18)
|
|
|
|
{
|
|
|
|
if (PreCompeteTimeDay == "今天")
|
|
|
|
{
|
|
|
|
PreCompeteTimeHourList.Clear();
|
|
|
|
PreCompeteTimeHourList.Add("18点前");
|
|
|
|
PreCompeteTimeHourList.Add("22点前");
|
|
|
|
|
|
|
|
PreCompeteTimeHour = "18点前";
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
if (PreCompeteTimeDay == "明天")
|
|
|
|
{
|
|
|
|
PreCompeteTimeHourList.Clear();
|
|
|
|
PreCompeteTimeHourList.Add("12点前");
|
|
|
|
PreCompeteTimeHourList.Add("18点前");
|
|
|
|
PreCompeteTimeHour = "12点前";
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else if (now.Hour < 22)
|
|
|
|
{
|
|
|
|
if (PreCompeteTimeDay == "今天")
|
|
|
|
{
|
|
|
|
PreCompeteTimeHourList.Clear();
|
|
|
|
PreCompeteTimeHourList.Add("22点前");
|
|
|
|
PreCompeteTimeHour = "22点前";
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
if (PreCompeteTimeDay == "明天")
|
|
|
|
{
|
|
|
|
PreCompeteTimeHourList.Clear();
|
|
|
|
PreCompeteTimeHourList.Add("12点前");
|
|
|
|
PreCompeteTimeHourList.Add("18点前");
|
|
|
|
PreCompeteTimeHourList.Add("22点前");
|
|
|
|
PreCompeteTimeHour = "12点前";
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
if (PreCompeteTimeDay == "明天")
|
|
|
|
{
|
|
|
|
PreCompeteTimeHourList.Clear();
|
|
|
|
PreCompeteTimeHourList.Add("12点前");
|
|
|
|
PreCompeteTimeHourList.Add("18点前");
|
|
|
|
PreCompeteTimeHourList.Add("22点前");
|
|
|
|
PreCompeteTimeHour = "12点前";
|
|
|
|
}
|
|
|
|
|
|
|
|
if (PreCompeteTimeDay == "后天")
|
|
|
|
{
|
|
|
|
PreCompeteTimeHourList.Clear();
|
|
|
|
PreCompeteTimeHourList.Add("12点前");
|
|
|
|
PreCompeteTimeHour = "12点前";
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
private void SetBarCode()
|
|
|
|
{
|
|
|
|
if (string.IsNullOrEmpty(SkuId))
|
|
|
|
{
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
if (BarCodeModel == null)
|
|
|
|
{
|
|
|
|
var resCode = packPurchaseTaskService.SearchBarCode(SkuId);
|
|
|
|
if (resCode == null)
|
|
|
|
{
|
|
|
|
BarCodeModel = new BarCodeModel();
|
|
|
|
BarCodeModel.ProductNo = ProductNo;
|
|
|
|
BarCodeModel.Brand = Brand;
|
|
|
|
BarCodeModel.SkuId = SkuId;
|
|
|
|
BarCodeModel.SkuName = SkuName;
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
BarCodeModel = resCode.Data;
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
if (!string.IsNullOrEmpty(BrandName))
|
|
|
|
BarCodeModel.BrandName = BrandName;
|
|
|
|
|
|
|
|
SetBarCodeWindow setBarCodeWindow = new SetBarCodeWindow();
|
|
|
|
setBarCodeWindow.LoadData(BarCodeModel, packTaskService);
|
|
|
|
setBarCodeWindow.SaveResult = b =>
|
|
|
|
{
|
|
|
|
BarCodeModel = b;
|
|
|
|
IsSetBarCode = false;
|
|
|
|
IsNeedBarCode = Need.需要;
|
|
|
|
};
|
|
|
|
setBarCodeWindow.Show();
|
|
|
|
}
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
/// 设置合格证
|
|
|
|
/// </summary>
|
|
|
|
private void SetCertificate(PurchaseSku model)
|
|
|
|
{
|
|
|
|
|
|
|
|
if (model.CerDTO == null)
|
|
|
|
{
|
|
|
|
model.CerDTO = new CertificateModel
|
|
|
|
{
|
|
|
|
ProductNo = ProductNo,
|
|
|
|
Brand = Brand,
|
|
|
|
SkuId = SkuId,
|
|
|
|
PurchaseSkuId = model.PurchaseSkuId
|
|
|
|
|
|
|
|
};
|
|
|
|
}
|
|
|
|
if (!string.IsNullOrEmpty(BrandName))
|
|
|
|
model.CerDTO.BrandName = BrandName;
|
|
|
|
|
|
|
|
QualitySetCerWindow setCerWindow = new QualitySetCerWindow();
|
|
|
|
setCerWindow.LoadData(model.IsNeedCer, model.CerDTO, packPurchaseTaskService, spuCertificateModel, IsSetSpuCertificate, saveType);
|
|
|
|
setCerWindow.SaveResult = (s, PackCerState) =>
|
|
|
|
{
|
|
|
|
if (string.IsNullOrEmpty(s.PurchaseSkuId))
|
|
|
|
{
|
|
|
|
var sku = PurchaseSkuList.SingleOrDefault(p => p.CerDTO.GoodsNumber == s.GoodsNumber);
|
|
|
|
sku.CerDTO = s;
|
|
|
|
sku.IsSetCertificate = false;
|
|
|
|
sku.IsNeedCer = PackCerState == PackCerState.合格证信息;
|
|
|
|
IsNeedCertificateModel = Need.需要;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
var skus = PurchaseSkuList.SingleOrDefault(p => p.CerDTO != null && p.CerDTO.PurchaseSkuId == s.PurchaseSkuId);
|
|
|
|
skus.CerDTO = s;
|
|
|
|
skus.IsSetCertificate = false;
|
|
|
|
skus.IsNeedCer = PackCerState == PackCerState.合格证信息;
|
|
|
|
IsNeedCertificateModel = Need.需要;
|
|
|
|
};
|
|
|
|
setCerWindow.Show();
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
/// 查看合格证
|
|
|
|
/// </summary>
|
|
|
|
private void LookCer(CertificateModel certificate)
|
|
|
|
{
|
|
|
|
|
|
|
|
QualityLookCerWindow lookCerWindow = new QualityLookCerWindow(certificate);
|
|
|
|
lookCerWindow.Show();
|
|
|
|
}
|
|
|
|
/// <summary>
|
|
|
|
/// 查看条形码
|
|
|
|
/// </summary>
|
|
|
|
private void LookBar()
|
|
|
|
{
|
|
|
|
LookBarCodeWindow look = new LookBarCodeWindow();
|
|
|
|
look.SetData(BarCodeModel);
|
|
|
|
look.Show();
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
SaveType? saveType;
|
|
|
|
/// <summary>
|
|
|
|
/// 搜索 skuId(todo:)
|
|
|
|
/// </summary>
|
|
|
|
public void SearchSku(PackTaskModel model)
|
|
|
|
{
|
|
|
|
|
|
|
|
InitData();
|
|
|
|
TaskId = model.TaskId;
|
|
|
|
OrderId = model.OrderId;
|
|
|
|
SkuId = model.SkuId;
|
|
|
|
SkuName = model.ItemList[0].SkuName;
|
|
|
|
Logo = model.ItemList[0].Logo.Replace("80x80", "200x200");
|
|
|
|
BrandName = model.ItemList[0].BrandName;
|
|
|
|
SkuCount = model.SkuCount;
|
|
|
|
brand = model.Brand;
|
|
|
|
ProductNo = model.ProductNo;
|
|
|
|
MarkMessage = model.MarkMessage;
|
|
|
|
PackType = model.PackType;
|
|
|
|
GoodsNumber = model.GoodsNumber;
|
|
|
|
SkuTitle = model.SkuTitle;
|
|
|
|
BasicPack = model.BasicPack;
|
|
|
|
CertificatePosition = model.CertificatePosition;
|
|
|
|
|
|
|
|
|
|
|
|
ArrivalQuantity = 0;
|
|
|
|
GoodProductQuantity = 0;
|
|
|
|
|
|
|
|
IncreateList = new ObservableCollection<IncreateModel>();
|
|
|
|
string[] increateDatas = model.Increment1?.Split(',');
|
|
|
|
bool isSelected = false;
|
|
|
|
|
|
|
|
foreach (var item in increates)
|
|
|
|
{
|
|
|
|
isSelected = false;
|
|
|
|
if (increateDatas != null && increateDatas.Count() > 0 && increateDatas.Contains(item))
|
|
|
|
{
|
|
|
|
isSelected = true;
|
|
|
|
}
|
|
|
|
App.Current.Dispatcher.Invoke(() =>
|
|
|
|
{
|
|
|
|
IncreateList.Add(new IncreateModel
|
|
|
|
{
|
|
|
|
IncreateName = item,
|
|
|
|
IsSelected = isSelected
|
|
|
|
});
|
|
|
|
});
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
var packTaskRes = packPurchaseTaskService.GetQualityTask(model.TaskId);
|
|
|
|
|
|
|
|
if (packTaskRes == null)
|
|
|
|
{
|
|
|
|
MessageBox.Show("网络异常!");
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
if (!packTaskRes.Success || packTaskRes.Data == null)
|
|
|
|
{
|
|
|
|
MessageBox.Show(packTaskRes.Msg);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
SkuPurchaseSchemeId = packTaskRes.Data.SkuPurchaseSchemeId;
|
|
|
|
saveType = packTaskRes.Data.SaveType;
|
|
|
|
if (saveType == null)
|
|
|
|
{
|
|
|
|
saveType = OrderId.IsNullOrEmpty() ? SaveType.C端 : SaveType.B端;
|
|
|
|
}
|
|
|
|
if (packTaskRes == null || !packTaskRes.Success) return;
|
|
|
|
BarCodeModel = packTaskRes.Data.BarCodeDTO;
|
|
|
|
IsNeedBarCode = packTaskRes.Data.IsNeedBar ? Need.需要 : Need.不需要;
|
|
|
|
IsSetBarCode = packTaskRes.Data.BarCodeDTO == null ? true : false;
|
|
|
|
IsNeedCertificateModel = packTaskRes.Data.IsNeedCer ? Need.需要 : Need.不需要;
|
|
|
|
if (packTaskRes.Data.WareHourses != null)
|
|
|
|
packTaskRes.Data.WareHourses.ToList().ForEach(w =>
|
|
|
|
{
|
|
|
|
WareHourseList.Add(w);
|
|
|
|
});
|
|
|
|
WareHourseCount = WareHourseList.Count();
|
|
|
|
if (packTaskRes.Data.PurchaseSkus != null)
|
|
|
|
{
|
|
|
|
|
|
|
|
int goodsIndex = 0;
|
|
|
|
foreach (var item in packTaskRes.Data.PurchaseSkus)
|
|
|
|
{
|
|
|
|
goodsIndex++;
|
|
|
|
if (item.CerDTO != null) item.CerDTO.GoodsNumberIndex = goodsIndex;
|
|
|
|
item.IsSetCertificate = true;
|
|
|
|
if (string.IsNullOrEmpty(item.PurchaseProductId))
|
|
|
|
{
|
|
|
|
PurchaseSkuList.Add(item); continue;
|
|
|
|
}
|
|
|
|
|
|
|
|
var list = purchaseService.GetPurchaseSkuBasicInfo(item.PurchaseProductId);
|
|
|
|
if (list == null && !list.Success)
|
|
|
|
{
|
|
|
|
PurchaseSkuList.Add(item); continue;
|
|
|
|
}
|
|
|
|
PurchaseSkuItemBasicInfoResponse skuItem = null;
|
|
|
|
if (list.Data != null) skuItem = list.Data.ItemList.FirstOrDefault(f => f.PurchaseSkuId == item.PurchaseSkuId);
|
|
|
|
|
|
|
|
|
|
|
|
App.Current.Dispatcher.Invoke(new Action(() =>
|
|
|
|
{
|
|
|
|
PurchaseSkuList.Add(new PurchaseSku
|
|
|
|
{
|
|
|
|
Logo = skuItem?.Logo,
|
|
|
|
Title = skuItem?.Title,
|
|
|
|
IsNeedCer = item.IsNeedCer,
|
|
|
|
PurchaseSkuId = item.PurchaseSkuId,
|
|
|
|
CerDTO = item.CerDTO,
|
|
|
|
IsSetCertificate = item.IsNeedCer,
|
|
|
|
});
|
|
|
|
}));
|
|
|
|
//PurchaseSkuList.Add(item);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
public Action ReflashWindow { get; set; }
|
|
|
|
public void InitData()
|
|
|
|
{
|
|
|
|
FloorDragNumber = 0;
|
|
|
|
PurchaseSkuList = new ObservableCollection<PurchaseSku>();
|
|
|
|
WareHourseList = new ObservableCollection<WareHourseDTO>();
|
|
|
|
PreCompeteTimeDayList = new ObservableCollection<string>();
|
|
|
|
FloorDragNumberList = new ObservableCollection<int>();
|
|
|
|
|
|
|
|
for (int i = 0; i < 30; i++)
|
|
|
|
{
|
|
|
|
App.Current.Dispatcher.Invoke((Action)(() =>
|
|
|
|
{
|
|
|
|
|
|
|
|
FloorDragNumberList.Add(i + 1);
|
|
|
|
}));
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
var nowTime = DateTime.Now;
|
|
|
|
var hour = nowTime.Hour;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (hour < 12)
|
|
|
|
{
|
|
|
|
PreCompeteTimeDayList.Add("今天");
|
|
|
|
PreCompeteTimeDayList.Add("明天");
|
|
|
|
|
|
|
|
PreCompeteTimeDay = "今天";
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
else if (hour < 18)
|
|
|
|
{
|
|
|
|
PreCompeteTimeDayList.Add("今天");
|
|
|
|
PreCompeteTimeDayList.Add("明天");
|
|
|
|
PreCompeteTimeDay = "今天";
|
|
|
|
|
|
|
|
}
|
|
|
|
else if (hour < 22)
|
|
|
|
{
|
|
|
|
PreCompeteTimeDayList.Add("今天");
|
|
|
|
PreCompeteTimeDayList.Add("明天");
|
|
|
|
PreCompeteTimeDay = "今天";
|
|
|
|
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
PreCompeteTimeDayList.Add("明天");
|
|
|
|
PreCompeteTimeDayList.Add("后天");
|
|
|
|
PreCompeteTimeDay = "明天";
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
IsSetBarCode = true;
|
|
|
|
SkuTitle = "";
|
|
|
|
BrandName = "";
|
|
|
|
GoodsNumber = 0;
|
|
|
|
PackType = PackType.单件;
|
|
|
|
BasicPack = BasicPack.快递袋;
|
|
|
|
CertificatePosition = CertificatePosition.无需合格证;
|
|
|
|
IsNeedBarCode = Need.需要;
|
|
|
|
IsNeedCertificateModel = Need.不需要;
|
|
|
|
}
|
|
|
|
|
|
|
|
private void OpenSkuDetail(object param)
|
|
|
|
{
|
|
|
|
var paramList = (object[])param;
|
|
|
|
// var orderId = paramList[0].ToString();
|
|
|
|
var skuId = paramList[0].ToString();
|
|
|
|
|
|
|
|
|
|
|
|
var url = $"https://item.jd.com/{skuId}.html";
|
|
|
|
try
|
|
|
|
{
|
|
|
|
System.Diagnostics.Process.Start("explorer.exe", url);
|
|
|
|
}
|
|
|
|
catch (Exception ex)
|
|
|
|
{
|
|
|
|
Clipboard.SetText(url);
|
|
|
|
MessageBox.Show($"{ex.Message}\r\n调用浏览器失败,网页链接已复制到剪切板,请手动打开浏览器访问", "提示");
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
#endregion
|
|
|
|
}
|
|
|
|
}
|