You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

125 lines
4.3 KiB

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using FireBirdUtil.SqlUtils;
using Forks.JsonRpc.Client;
using Forks.JsonRpc.Client.Data;
using Utils;
using Utils.Datas;
using WeighBusiness.BO;
using WeighBusiness.Utils;
using WeighBusiness.Utils.SqlUtils;
namespace WeighBusiness.BL
{
public static class ProduceOutputBL
{
private static bool ExcuteSql(string sql)
{
bool success;
using (var she = new SqlHelperEx()) {
she.CreateTransaction();
she.ExecuteNonQuery(sql, out success);
if (!success)
she.Rollback();
else
she.Commit();
}
return success;
}
public static bool Insert(ProduceOutput outPut, SqlHelperEx she)
{
string insertHeadSql = InsertUtil.GetInsertSql(TableNames.,
new string[] { "AccountingUnit_ID", "Department_ID", "Employee_ID", "CreateTime", "BatchNumber_ID", "ProductLink", "Routing_ID", "ProductShift_ID", "Domain_ID", "IsSend" },
new string[] { outPut.AccountingUnit_ID.ToString(), outPut.Department_ID.ToString(), outPut.Employee_ID.ToString(), outPut.CreateTime.ToString(), outPut.BatchNumber_ID.ToString(), outPut.ProductLink, outPut.Routing_ID.ToString(), outPut.ProductShift_ID.ToString(), outPut.Domain_ID.ToString(), outPut.IsSend ? "1" : "0" });
if (string.IsNullOrEmpty(insertHeadSql))
throw new ApplicationException("表头数据不允许为空");
bool success;
string errorMsg;
she.ExecuteNonQuery(insertHeadSql, out success, out errorMsg);
if (!success) {
she.Rollback();
throw new ApplicationException(errorMsg);
}
var outPutID = she.GetCurrentID(TableNames.);
outPut.ID = outPutID;
List<string> insertDetailSqls = InsertDetailsSqls(outPut.Details, outPutID);
if (insertDetailSqls.Count == 0) {
return true;
}
foreach (var detailSql in insertDetailSqls) {
she.ExecuteNonQuery(detailSql, out success, out errorMsg);
if (!success) {
she.Rollback();
throw new ApplicationException(errorMsg);
}
}
return success;
}
private static List<string> InsertDetailsSqls(List<ProduceOutput_Detail> details, long produceOutput_ID)
{
List<string> insertDetailSqls = new List<string>();
if (details == null || details.Count == 0)
return insertDetailSqls;
string[] columns = new string[] { "ProduceOutput_ID", "Goods_ID", "MainNumber" };
foreach (var d in details) {
insertDetailSqls.Add(InsertUtil.GetInsertSql(TableNames., columns, GetValue(d, produceOutput_ID)));
}
return insertDetailSqls;
}
private static string[] GetValue(ProduceOutput_Detail detail, long produceOutput_ID)
{
return new string[]{
produceOutput_ID.ToString(),
DataTypeUtil.ToStringNullIfNull(detail.Goods_ID),
DataTypeUtil.ToStringNullIfNull(detail.MainNumber),
};
}
public static ProduceOutput Load(long id)
{
ProduceOutput result = LocalQueryUtil.GetLocalProduceOutputHead(id);
if (result == null)
return result;
var details = LocalQueryUtil.GetLocalProduceOutputDetails(id);
if (details == null || details.Count == 0)
return result;
foreach (var d in details) {
result.Details.Add(d);
}
return result;
}
public static List<long> GetNotSendProduceOutputID()
{
return LocalQueryUtil.GetNotSendProduceOutputID();
}
public static decimal? GetBatchGoodsNumber(long batchNumberId, string productLink, long? routingId, long goodsId,
long? productShift_ID)
{
string method = "/MainSystem/B3_HaoYue/Rpcs/B3SaleRpcFun/GetBatchNumberGoodsNum";
return RpcFacade.Call<decimal?>(method, batchNumberId, productLink, routingId, goodsId, productShift_ID);
}
public static void UpdateIsSendByID(long id)
{
string updateSql = string.Format("update "+TableNames.+" set IsSend = 1 where ID ={0}", id);
bool success = true;
using (var she = new SqlHelperEx()) {
she.CreateTransaction();
she.ExecuteNonQuery(updateSql, out success);
if (!success) {
she.Rollback();
} else {
she.Commit();
}
}
}
}
}