using HH.Redis.ReisModel;
|
using HH.TOOLS.LOG;
|
using HH.WMS.Common;
|
using HH.WMS.DAL;
|
using HH.WMS.DAL.Basic;
|
using HH.WMS.DAL.Check;
|
using HH.WMS.DAL.InStock;
|
using HH.WMS.Entitys;
|
using HH.WMS.Entitys.Basic;
|
using HH.WMS.Entitys.Check;
|
using HH.WMS.Entitys.Entitys;
|
using HH.WMS.Entitys.Enums;
|
using Newtonsoft.Json;
|
using System;
|
using System.Collections.Generic;
|
using System.Data;
|
using System.Linq;
|
using System.Text;
|
using System.Threading.Tasks;
|
|
namespace HH.WMS.BLL.Check
|
{
|
/// <summary>
|
/// 盘点单管理 无锡宇寿
|
/// </summary>
|
public class TN_WM_CHECK_WXYSBLL : DapperBaseBLL
|
{
|
#region GET
|
|
public OperateResult GetCheckDtl(string opNo)
|
{
|
var checkDtls = BLLCreator.Create<DapperBLL<TN_WM_CHECK_DTLEntity>>().GetList(new { CN_S_OP_NO = opNo });
|
foreach (var checkDtl in checkDtls)
|
{
|
// var item = CreateDAL<TN_WMS_ITEMDAL>().GetItemEntity(checkDtl.CN_S_ITEM_CODE);
|
// checkDtl.CN_F_QUANTITY = (item.CN_F_NW == 0 ? 0 : Math.Round(checkDtl.CN_F_WEIGHT / item.CN_F_NW, 2));// Math.Round(checkDtl.CN_F_WEIGHT / item.CN_F_NW, 2);
|
checkDtl.CN_S_AREA_NAME = GetAreaName(checkDtl.CN_S_STOCK_AREA);
|
}
|
return OperateResult.Succeed("", checkDtls);
|
}
|
|
public DataTable GetCheckList(dynamic obj)
|
{
|
DataTable dt = CreateDAL<TN_WM_CHECK_WXYSDAL>().GetCheckList(obj);
|
dt.Columns.Add("CN_S_STOCK_NAME");
|
dt.Columns.Add("CN_S_AREA_NAME");
|
if (dt.Rows.Count > 0)
|
{
|
for (int i = 0; i < dt.Rows.Count; i++)
|
{
|
dt.Rows[i]["CN_S_STOCK_NAME"] = GetStockName(dt.Rows[i]["CN_S_STOCK_CODE"].ToString().Trim());
|
dt.Rows[i]["CN_S_AREA_NAME"] = GetAreaName(dt.Rows[i]["CN_S_STOCK_AREA"].ToString().Trim());
|
}
|
}
|
return dt;
|
}
|
|
public OperateResult GetCheckListByOpNo(string opNo)
|
{
|
var checkLists = CreateDAL<DapperDAL<TN_WM_CHECK_LISTEntity>>().GetList(new { CN_S_OP_NO = opNo });
|
var temp = checkLists.Select(e => new
|
{
|
CN_S_LOCATION_CODE = e.CN_S_LOCATION_CODE,
|
CN_S_STOCK_CODE = e.CN_S_STOCK_CODE,
|
CN_S_STOCK_AREA = e.CN_S_STOCK_AREA,
|
CN_S_TRAY_CODE = e.CN_S_TRAY_CODE,
|
CN_S_STOCK_NAME = GetStockName(e.CN_S_STOCK_CODE),
|
CN_S_AREA_NAME = GetAreaName(e.CN_S_STOCK_AREA)
|
}).Distinct().ToList();
|
return OperateResult.Succeed("", temp);
|
}
|
|
public OperateResult GetMstAndDtl(string opNo)
|
{
|
var checkMst = CreateDAL<DapperDAL<TN_WM_CHECK_MSTEntity>>().GetSingleEntity(new { CN_S_OP_NO = opNo });
|
if (checkMst == null)
|
{
|
return OperateResult.Error("未找到当前" + opNo + "盘点业务");
|
}
|
checkMst.CN_S_STOCK_NAME = GetStockName(checkMst.CN_S_STOCK_CODE);
|
var checkDtls = CreateDAL<DapperDAL<TN_WM_CHECK_DTLEntity>>().GetList(new { CN_S_OP_NO = opNo });
|
foreach (var checkDtl in checkDtls)
|
{
|
var item = CreateDAL<TN_WMS_ITEMDAL>().GetItemEntity(checkDtl.CN_S_ITEM_CODE);
|
checkDtl.CN_F_QUANTITY = (item.CN_F_NW == 0 ? 0 : Math.Round(checkDtl.CN_F_WEIGHT / item.CN_F_NW, 2));
|
checkDtl.CN_S_AREA_NAME = GetAreaName(checkDtl.CN_S_STOCK_AREA);
|
}
|
checkMst.dtls = checkDtls;
|
return OperateResult.Succeed("", checkMst);
|
}
|
|
#endregion
|
|
#region ADD
|
|
/// <summary>
|
/// 新增盘点单
|
/// </summary>
|
/// <param name="checkLists"></param>
|
/// <param name="loginer"></param>
|
/// <returns></returns>
|
public OperateResult Add(List<TN_WM_CHECK_LISTEntity> checkListDtos, RedisUserEntity loginer, LogPara logPara)
|
{
|
var checkLists = new List<TN_WM_CHECK_LISTEntity>();
|
foreach (var checkListDto in checkListDtos)
|
{
|
var checkList = CreateDAL<DapperDAL<TN_WM_CHECK_LISTEntity>>().GetList(new
|
{
|
CN_S_STOCK_CODE = checkListDto.CN_S_STOCK_CODE,
|
CN_S_STOCK_AREA = checkListDto.CN_S_STOCK_AREA,
|
CN_S_LOCATION_CODE = checkListDto.CN_S_LOCATION_CODE,
|
CN_S_TRAY_CODE = checkListDto.CN_S_TRAY_CODE
|
});
|
checkLists.AddRange(checkList);
|
}
|
|
var checkListsStr = JsonConvert.SerializeObject(checkLists);
|
var checkMst = new TN_WM_CHECK_MSTEntity();
|
var checkDtls = new List<TN_WM_CHECK_DTLEntity>();
|
|
string postData = "{\"appCode\":\"AutoWMS\",\"ruleName\":\"" + Constants.CheckCode + "\",\"orgId\":\"" + loginer.CN_S_ORGCODE + "\",\"orgFlag\":\"" + loginer.CN_S_ORGFLAG + "\"}";
|
var opNo = WebApiManager.HttpAutoBom_Post("api/BillRule/GenBillNo", postData);
|
if (string.IsNullOrEmpty(opNo))
|
{
|
return OperateResult.Error("未获取到autobom中盘点单号!");
|
}
|
checkMst.CN_S_OP_NO = opNo;
|
checkMst.CN_S_STOCK_CODE = checkLists.FirstOrDefault().CN_S_STOCK_CODE;
|
checkMst.CN_T_OP_TIME = DateTime.Now;
|
checkMst.CN_S_STATE = BillStateEnum.Create.GetDescription();
|
checkMst.CN_S_CREATOR = loginer.CN_S_LOGIN;
|
checkMst.CN_S_CREATOR_BY = loginer.CN_S_NAME;
|
checkMst.CN_T_CREATE = DateTime.Now;
|
checkMst.CN_S_OPERATOER = checkLists.FirstOrDefault().CN_S_CREATOR;
|
checkMst.CN_S_OPERATOER_NAME = checkLists.FirstOrDefault().CN_S_CREATOR_BY;
|
var result = CreateCheckDtls(opNo, checkLists, checkDtls);
|
if (!result.Success) return result;
|
result = UseTransaction(trans =>
|
{
|
|
var backResult = CreateDAL<DapperDAL<TN_WM_CHECK_MSTEntity>>().Add(checkMst, trans);
|
logPara.Push("新增盘点单主表结果:" + (backResult.Success ? "成功" : "失败"));
|
if (!backResult.Success)
|
{
|
trans.Rollback();
|
return;
|
}
|
backResult = CreateDAL<DapperDAL<TN_WM_CHECK_DTLEntity>>().AddRange(checkDtls, trans);
|
logPara.Push("新增盘点单子表结果:" + (backResult.Success ? "成功" : "失败"));
|
if (!backResult.Success)
|
{
|
trans.Rollback();
|
return;
|
}
|
|
//更新checklist的业务号
|
foreach (var checkList in checkLists)
|
{
|
CreateDAL<DapperDAL<TN_WM_CHECK_LISTEntity>>().Update(new { CN_S_OP_NO = opNo }, new
|
{
|
CN_S_STOCK_CODE = checkList.CN_S_STOCK_CODE,
|
CN_S_STOCK_AREA = checkList.CN_S_STOCK_AREA,
|
CN_S_LOCATION_CODE = checkList.CN_S_LOCATION_CODE,
|
CN_S_TRAY_CODE = checkList.CN_S_TRAY_CODE
|
});
|
}
|
});
|
return result;
|
}
|
|
/// <summary>
|
///
|
/// </summary>
|
/// <param name="opNo"></param>
|
/// <param name="checkLists"></param>
|
/// <param name="checkDtls"></param>
|
/// <returns></returns>
|
public OperateResult CreateCheckDtls(string opNo, List<TN_WM_CHECK_LISTEntity> checkLists, List<TN_WM_CHECK_DTLEntity> checkDtls)
|
{
|
var rowNo = 0;
|
checkLists = checkLists.OrderBy(o => o.CN_S_CHECK_RESULT).ThenBy(o => o.CN_S_TRAY_CODE).ToList();
|
foreach (var checkList in checkLists)
|
{
|
rowNo = rowNo + 1;
|
var checkDtl = new TN_WM_CHECK_DTLEntity();
|
var afterState = "盘点后";
|
#region 删除、新增、修改后、正确
|
|
var checkStateEnum = EnumExtensions.GetEnumByName<CheckStateEnum>(checkList.CN_S_CHECK_RESULT);
|
if (checkStateEnum.Equals(CheckStateEnum.ERROR))
|
return OperateResult.Error("盘点状态" + checkList.CN_S_CHECK_RESULT + "存在异常!");
|
afterState = checkStateEnum.GetDescription();
|
|
checkDtl = new TN_WM_CHECK_DTLEntity
|
{
|
CN_S_OP_NO = opNo,
|
CN_N_ROW_NO = rowNo,
|
CN_S_STOCK_AREA = checkList.CN_S_STOCK_AREA,
|
CN_S_LOCATION_CODE = checkList.CN_S_LOCATION_CODE,
|
CN_S_TRAY_CODE = checkList.CN_S_TRAY_CODE,
|
CN_S_ITEM_CODE = checkList.CN_S_ITEM_CODE,
|
CN_S_ITEM_NAME = checkList.CN_S_ITEM_NAME,
|
CN_S_ITEM_STATE = checkList.CN_S_ITEM_STATE,
|
CN_S_OWNER = checkList.CN_S_OWNER,
|
CN_S_LOT_NO = checkList.CN_S_LOT_NO,
|
CN_S_MODEL = checkList.CN_S_MODEL,
|
CN_S_FIGURE_NO = checkList.CN_S_FIGURE_NO,
|
CN_S_MEASURE_UNIT = checkList.CN_S_MEASURE_UNIT,
|
CN_F_QUANTITY = checkList.CN_F_QUANTITY,
|
CN_S_PACK_CODE = checkList.CN_S_PACK_CODE,
|
CN_S_TYPE = afterState,
|
CN_F_WEIGHT = checkList.CN_F_WEIGHT,
|
CN_F_PACKING_QTY = checkList.CN_F_PACKING_QTY,
|
CN_S_CHECK_RESULT = checkList.CN_S_CHECK_RESULT
|
};
|
checkDtls.Add(checkDtl);
|
|
#endregion
|
|
#region 修改前
|
|
if (checkList.CN_S_CHECK_RESULT.Equals(CheckStateEnum.E.ToString()))
|
{
|
var trayItemDtl = BLLCreator.Create<DapperBLL<TN_WM_B_TRAY_ITEM_DTLEntity>>().GetSingleEntity(new
|
{
|
// CN_PARENT_GUID = trayItemMst.CN_GUID,
|
CN_S_UNIQUE_CODE = checkList.CN_S_PACK_CODE
|
});
|
if (trayItemDtl == null)
|
{
|
return OperateResult.Error("未找到当前托盘" + checkList.CN_S_TRAY_CODE + "下料箱:" + checkList.CN_S_PACK_CODE + "的物料信息!");
|
}
|
|
var trayItemMst = BLLCreator.Create<DapperBLL<TN_WM_B_TRAY_ITEM_MSTEntity>>().GetSingleEntity(new
|
{
|
CN_GUID = trayItemDtl.CN_PARENT_GUID,
|
CN_S_TRAY_CODE = checkList.CN_S_TRAY_CODE
|
});
|
|
if (trayItemMst == null)
|
{
|
return OperateResult.Error("未找到托盘:" + checkList.CN_S_TRAY_CODE + "的物料托盘数据!");
|
}
|
checkDtl = new TN_WM_CHECK_DTLEntity
|
{
|
CN_S_OP_NO = opNo,
|
CN_N_ROW_NO = rowNo,
|
CN_S_STOCK_AREA = checkList.CN_S_STOCK_AREA,
|
CN_S_LOCATION_CODE = checkList.CN_S_LOCATION_CODE,
|
CN_S_TRAY_CODE = checkList.CN_S_TRAY_CODE,
|
CN_S_ITEM_CODE = trayItemMst.CN_S_ITEM_CODE,
|
CN_S_ITEM_NAME = trayItemMst.CN_S_ITEM_NAME,
|
CN_S_ITEM_STATE = trayItemMst.CN_S_ITEM_STATE,
|
CN_S_OWNER = checkList.CN_S_OWNER,
|
CN_S_LOT_NO = trayItemDtl.CN_S_LOT_NO,
|
CN_S_MODEL = trayItemMst.CN_S_MODEL,
|
CN_S_FIGURE_NO = trayItemDtl.CN_S_EXT1,
|
CN_S_MEASURE_UNIT = trayItemMst.CN_S_MEASURE_UNIT,
|
CN_F_QUANTITY = trayItemDtl.CN_F_QUANTITY,
|
CN_S_PACK_CODE = checkList.CN_S_PACK_CODE,
|
CN_S_TYPE = CheckStateEnum.EB.GetDescription(),
|
CN_S_CHECK_RESULT = CheckStateEnum.EB.ToString(),
|
CN_F_WEIGHT = Convert.ToDecimal(trayItemDtl.CN_S_SERIAL_NO),
|
CN_F_PACKING_QTY = Convert.ToDecimal(trayItemDtl.CN_F_PACKING_QTY)
|
};
|
checkDtls.Add(checkDtl);
|
}
|
|
#endregion
|
}
|
return OperateResult.Succeed();
|
}
|
|
#endregion
|
|
#region UPDATE
|
|
public OperateResult Update(CheckAddDto checkAddDto, RedisUserEntity loginer)
|
{
|
var checkListDtos = checkAddDto.checkList;
|
var checkLists = new List<TN_WM_CHECK_LISTEntity>();
|
foreach (var checkListDto in checkListDtos)
|
{
|
var checkList = CreateDAL<DapperDAL<TN_WM_CHECK_LISTEntity>>().GetList(new
|
{
|
CN_S_STOCK_CODE = checkListDto.CN_S_STOCK_CODE,
|
CN_S_STOCK_AREA = checkListDto.CN_S_STOCK_AREA,
|
CN_S_LOCATION_CODE = checkListDto.CN_S_LOCATION_CODE,
|
CN_S_TRAY_CODE = checkListDto.CN_S_TRAY_CODE
|
});
|
checkLists.AddRange(checkList);
|
}
|
|
var checkListsStr = JsonConvert.SerializeObject(checkLists);
|
var checkMst = new TN_WM_CHECK_MSTEntity();
|
var checkDtls = new List<TN_WM_CHECK_DTLEntity>();
|
|
checkMst.CN_S_OP_NO = checkAddDto.opNo;
|
checkMst.CN_S_STOCK_CODE = checkLists.FirstOrDefault().CN_S_STOCK_CODE;
|
checkMst.CN_T_OP_TIME = DateTime.Now;
|
checkMst.CN_S_STATE = BillStateEnum.Create.GetDescription();
|
checkMst.CN_S_CREATOR = loginer.CN_S_LOGIN;
|
checkMst.CN_S_CREATOR_BY = loginer.CN_S_NAME;
|
checkMst.CN_T_CREATE = DateTime.Now;
|
checkMst.CN_S_OPERATOER = checkLists.FirstOrDefault().CN_S_CREATOR;
|
checkMst.CN_S_OPERATOER_NAME = checkLists.FirstOrDefault().CN_S_CREATOR_BY;
|
var result = CreateCheckDtls(checkAddDto.opNo, checkLists, checkDtls);
|
if (!result.Success) return result;
|
|
result = UseTransaction(trans =>
|
{
|
CreateDAL<DapperDAL<TN_WM_CHECK_MSTEntity>>().Delete(new { CN_S_OP_NO = checkAddDto.opNo });
|
CreateDAL<DapperDAL<TN_WM_CHECK_DTLEntity>>().Delete(new { CN_S_OP_NO = checkAddDto.opNo });
|
CreateDAL<TN_WM_CHECK_WXYSDAL>().UpdateCheckListOpNo(checkAddDto.opNo, "", trans);
|
|
var backResult = CreateDAL<DapperDAL<TN_WM_CHECK_MSTEntity>>().Add(checkMst, trans);
|
if (!backResult.Success)
|
{
|
trans.Rollback();
|
return;
|
}
|
backResult = CreateDAL<DapperDAL<TN_WM_CHECK_DTLEntity>>().AddRange(checkDtls, trans);
|
if (!backResult.Success)
|
{
|
trans.Rollback();
|
return;
|
}
|
|
//更新checklist的业务号
|
foreach (var checkList in checkLists)
|
{
|
CreateDAL<DapperDAL<TN_WM_CHECK_LISTEntity>>().Update(new { CN_S_OP_NO = checkAddDto.opNo }, new
|
{
|
CN_S_STOCK_CODE = checkList.CN_S_STOCK_CODE,
|
CN_S_STOCK_AREA = checkList.CN_S_STOCK_AREA,
|
CN_S_LOCATION_CODE = checkList.CN_S_LOCATION_CODE,
|
CN_S_TRAY_CODE = checkList.CN_S_TRAY_CODE
|
}, trans);
|
}
|
});
|
return result;
|
}
|
|
public OperateResult Submit(CheckAuditDto checkAuditDto)
|
{
|
var checkMst = BLLCreator.Create<DapperBLL<TN_WM_CHECK_MSTEntity>>().GetSingleEntity(new { CN_S_OP_NO = checkAuditDto.opNo });
|
if (checkMst == null)
|
{
|
return OperateResult.Error("未找到当前盘点单" + checkAuditDto.opNo);
|
}
|
var result = CreateDAL<DapperDAL<TN_WM_CHECK_MSTEntity>>().Update(new
|
{
|
CN_S_STATE = BillStateEnum.Submit.GetDescription(),
|
CN_S_NOTE = checkAuditDto.note,
|
CN_S_CURR_ORG_CODE = checkAuditDto.checkAuditOrgDto.currentOrgCode,
|
CN_S_CURR_ORG_NAME = checkAuditDto.checkAuditOrgDto.currentOrgName,
|
CN_S_NEXT_ORG_CODE = checkAuditDto.checkAuditOrgDto.nextOrgCode,
|
CN_S_NEXT_ORG_NAME = checkAuditDto.checkAuditOrgDto.nextOrgName,
|
}, new { CN_S_OP_NO = checkAuditDto.opNo });
|
return result;
|
}
|
|
/// <summary>
|
/// 审核
|
/// </summary>
|
/// <param name="checkAuditDto"></param>
|
/// <returns></returns>
|
public OperateResult Audit(CheckAuditPara checkAuditPara, LogPara logPara)
|
{
|
logPara.Push("接收参数:" + JsonConvert.SerializeObject(checkAuditPara.checkAuditDto));
|
|
checkAuditPara.state = BillStateEnum.Auditing.GetDescription();
|
checkAuditPara.isEnd = false;
|
if (string.IsNullOrEmpty(checkAuditPara.checkAuditDto.checkAuditOrgDto.nextOrgCode))
|
checkAuditPara.state = BillStateEnum.Audit.GetDescription();
|
|
checkAuditPara.checkMst = BLLCreator.Create<DapperBLL<TN_WM_CHECK_MSTEntity>>().GetSingleEntity(new { CN_S_OP_NO = checkAuditPara.checkAuditDto.opNo });
|
if (checkAuditPara.checkMst == null)
|
{
|
return OperateResult.Error("未找到当前盘点单" + checkAuditPara.checkAuditDto.opNo);
|
}
|
|
//最终审核结束,释放货位
|
if (string.IsNullOrEmpty(checkAuditPara.checkAuditDto.checkAuditOrgDto.nextOrgCode))
|
{
|
var reuslt = AuditHandleParam(checkAuditPara, logPara);
|
if (!reuslt.Success) return reuslt;
|
|
logPara.Push("接收参数checkAuditPara:" + JsonConvert.SerializeObject(checkAuditPara));
|
AuditReduceQty(checkAuditPara, logPara);
|
}
|
|
#region 逻辑处理
|
//1、针对已经在货位上的料箱,需要在绑定之前,把先前的绑定给解绑,避免造成同一个料箱在不同货位上的情况
|
//2、新增时需要判断是否主表已存在,如果存在则累加数量,不存在的话,新增主表
|
|
List<TN_WM_B_TRAY_ITEM_MSTEntity> mstDeleteList = new List<TN_WM_B_TRAY_ITEM_MSTEntity>();
|
List<TN_WM_B_TRAY_ITEM_DTLEntity> dtlDeleteList = new List<TN_WM_B_TRAY_ITEM_DTLEntity>();
|
|
List<TN_WM_B_TRAY_ITEM_MSTEntity> mstAddList = new List<TN_WM_B_TRAY_ITEM_MSTEntity>();
|
List<TN_WM_B_TRAY_ITEM_DTLEntity> dtlAddList = new List<TN_WM_B_TRAY_ITEM_DTLEntity>();
|
|
List<TN_WM_B_TRAY_ITEM_MSTEntity> mstModAddQtyList = new List<TN_WM_B_TRAY_ITEM_MSTEntity>();
|
List<TN_WM_B_TRAY_ITEM_MSTEntity> mstModReduceQtyList = new List<TN_WM_B_TRAY_ITEM_MSTEntity>();
|
|
List<TN_WM_B_TRAY_LOCATIONEntity> trayLocationDeleteList = new List<TN_WM_B_TRAY_LOCATIONEntity>();
|
|
if (checkAuditPara.isEnd)
|
{
|
foreach (var checkDtl in checkAuditPara.checkMst.dtls)
|
{
|
if (checkDtl.CN_S_CHECK_RESULT.Equals(CheckStateEnum.A.ToString())) //增加
|
{
|
#region 是否位于其他货位
|
TN_WM_B_TRAY_ITEM_DTLEntity dtlDelete = CreateDAL<DapperDAL<TN_WM_B_TRAY_ITEM_DTLEntity>>().GetSingleEntity(new { CN_S_UNIQUE_CODE = checkDtl.CN_S_PACK_CODE });
|
if (dtlDelete != null)
|
{
|
TN_WM_B_TRAY_ITEM_MSTEntity mstDelete = CreateDAL<DapperDAL<TN_WM_B_TRAY_ITEM_MSTEntity>>().GetSingleEntity(new { CN_GUID = dtlDelete.CN_PARENT_GUID });
|
if (mstDelete != null)
|
{
|
TN_WM_B_TRAY_LOCATIONEntity traylocationDelete = CreateDAL<DapperDAL<TN_WM_B_TRAY_LOCATIONEntity>>().GetSingleEntity(new { CN_S_TRAY_CODE = mstDelete.CN_S_TRAY_CODE });
|
if (traylocationDelete != null)
|
{
|
dtlDeleteList.Add(dtlDelete);
|
|
List<TN_WM_B_TRAY_ITEM_DTLEntity> dtlExistList = CreateDAL<DapperDAL<TN_WM_B_TRAY_ITEM_DTLEntity>>().GetList(new { CN_PARENT_GUID = mstDelete.CN_GUID });
|
var exi = dtlExistList.Where(x => x.CN_GUID != dtlDelete.CN_GUID);
|
if (!exi.Any())//说明子表中只有一条,所以需要删除主表
|
{
|
//主表能删的情况下,托盘货位关联才能解绑
|
trayLocationDeleteList.Add(traylocationDelete);
|
mstDeleteList.Add(mstDelete);
|
}
|
}
|
}
|
}
|
#endregion
|
|
#region 主表新增或修改
|
var trayItemMstExist = new TN_WM_B_TRAY_ITEM_MSTEntity
|
{
|
CN_GUID = Guid.NewGuid().ToString(),
|
CN_S_TRAY_CODE = checkDtl.CN_S_TRAY_CODE,
|
CN_S_TRAY_GRID = "1",
|
CN_S_OWNER = checkDtl.CN_S_OWNER,
|
CN_S_ITEM_CODE = checkDtl.CN_S_ITEM_CODE,
|
CN_S_ITEM_NAME = checkDtl.CN_S_ITEM_NAME,
|
CN_S_FIGURE_NO = "",//checkDtl.CN_S_FIGURE_NO,
|
CN_S_MODEL = checkDtl.CN_S_MODEL,
|
CN_S_ITEM_STATE = "合格",//CN_S_ITEM_STATE = checkDtl.CN_S_ITEM_STATE,
|
CN_F_QUANTITY = 1,
|
CN_S_MEASURE_UNIT = checkDtl.CN_S_MEASURE_UNIT
|
};
|
|
List<TN_WM_B_TRAY_ITEM_DTLEntity> dtlList = new List<TN_WM_B_TRAY_ITEM_DTLEntity>();
|
dtlList.Add(new TN_WM_B_TRAY_ITEM_DTLEntity
|
{
|
CN_GUID = Guid.NewGuid().ToString(),
|
CN_PARENT_GUID = trayItemMstExist.CN_GUID,
|
CN_S_UNIQUE_CODE = checkDtl.CN_S_PACK_CODE,
|
CN_S_LOT_NO = checkDtl.CN_S_LOT_NO,
|
CN_F_QUANTITY = checkDtl.CN_F_QUANTITY,
|
CN_F_PACKING_QTY = checkDtl.CN_F_PACKING_QTY,
|
CN_T_PRODUCTION = DateTime.Now,
|
CN_T_EXPIRATION = DateTime.Now,
|
CN_S_NOTE = "盘点新增",
|
CN_S_CREATOR = checkAuditPara.checkMst.CN_S_CREATOR,
|
CN_T_CREATE = DateTime.Now,
|
CN_T_MODIFY = DateTime.Now,
|
CN_S_SERIAL_NO = checkDtl.CN_F_WEIGHT.ToString(),
|
CN_S_EXT1 = checkDtl.CN_S_FIGURE_NO,
|
CN_S_CREATOR_BY = checkAuditPara.checkMst.CN_S_CREATOR_BY
|
});
|
|
trayItemMstExist.TrayItemDtlList = dtlList;
|
|
var resultExist = CreateDAL<TN_WM_B_TRAY_ITEM_RELDAL>().CheckExists(trayItemMstExist);
|
if (resultExist.Count > 1)
|
{
|
logPara.Push("此处有异常,根据条件获取到多条主表信息,Json条件:" + JsonConvert.SerializeObject(trayItemMstExist));
|
}
|
|
//当后台查到有主表存在数据的时候,主表修改数量,字表新增
|
if (resultExist.Any())
|
{
|
trayItemMstExist.CN_GUID = resultExist[0].CN_GUID;
|
foreach (var item in trayItemMstExist.TrayItemDtlList)
|
{
|
item.CN_PARENT_GUID = trayItemMstExist.CN_GUID;
|
}
|
mstModAddQtyList.Add(trayItemMstExist);
|
}
|
else
|
{
|
mstAddList.Add(trayItemMstExist);
|
|
//添加上架记录
|
checkAuditPara.upHis.Add(new TN_WM_UP_HISTORYEntity
|
{
|
CN_GUID = Guid.NewGuid().ToString(),
|
CN_S_LOCATION_CODE = checkDtl.CN_S_LOCATION_CODE,
|
CN_S_ITEM_STATE = trayItemMstExist.CN_S_ITEM_STATE,
|
CN_S_TRAY_CODE = trayItemMstExist.CN_S_TRAY_CODE,
|
CN_S_TRAY_GRID = trayItemMstExist.CN_S_TRAY_GRID == null ? "" : trayItemMstExist.CN_S_TRAY_GRID,
|
CN_S_ITEM_CODE = trayItemMstExist.CN_S_ITEM_CODE,
|
CN_S_ITEM_NAME = trayItemMstExist.CN_S_ITEM_NAME,
|
CN_S_PRODUCTION_BATCH = trayItemMstExist.CN_S_LOT_NO,
|
CN_F_QUANTITY = checkDtl.CN_F_WEIGHT,
|
CN_F_PACKING_QTY = checkDtl.CN_F_PACKING_QTY,
|
CN_S_MODEL = trayItemMstExist.CN_S_MODEL,
|
CN_S_STOCK_AREA = checkDtl.CN_S_STOCK_AREA,
|
CN_S_STOCK_CODE = checkAuditPara.checkMst.CN_S_STOCK_CODE,
|
CN_T_CREATE = DateTime.Now,
|
CN_T_MODIFY = DateTime.Now,
|
CN_S_OWNER = "",
|
CN_S_MEASURE_UNIT = trayItemMstExist.CN_S_MEASURE_UNIT,
|
CN_S_CREATOR = checkAuditPara.checkMst.CN_S_CREATOR,
|
CN_S_CREATOR_BY = checkAuditPara.checkMst.CN_S_CREATOR_BY,
|
CN_S_MODIFY = "",
|
CN_S_MODIFY_BY = "",
|
CN_S_OP_FROM = "盘点审核-新增",
|
CN_S_EXT1 = checkDtl.CN_S_PACK_CODE,//trayItemMst.CN_S_UNIQUE_CODE,
|
CN_S_EXT2 = "其他入库",
|
CN_S_LOT_NO = checkDtl.CN_S_LOT_NO,
|
CN_S_FIGURE_NO = checkDtl.CN_S_FIGURE_NO
|
});
|
}
|
|
dtlAddList.AddRange(dtlList);
|
|
#endregion
|
}
|
}
|
|
foreach (var checkDtl in checkAuditPara.checkMst.dtls)
|
{
|
if (checkDtl.CN_S_CHECK_RESULT.Equals(CheckStateEnum.D.ToString()))//删除
|
{
|
#region 判断主表是否需要删除
|
var trayItemMst = checkDtl.trayItemMst;
|
List<TN_WM_B_TRAY_ITEM_DTLEntity> dtlExistList = CreateDAL<DapperDAL<TN_WM_B_TRAY_ITEM_DTLEntity>>().GetList(new { CN_PARENT_GUID = trayItemMst.CN_GUID });
|
if (dtlExistList.Count == 1)
|
{
|
mstDeleteList.Add(trayItemMst);
|
dtlDeleteList.Add(dtlExistList[0]);
|
}
|
if (dtlExistList.Count > 1)
|
{
|
var findDtl = dtlExistList.Where(x => x.CN_S_UNIQUE_CODE == checkDtl.CN_S_PACK_CODE).ToList();
|
dtlDeleteList.AddRange(findDtl);
|
|
var findMst = CreateDAL<DapperDAL<TN_WM_B_TRAY_ITEM_MSTEntity>>().GetSingleEntity(new { CN_GUID = findDtl[0].CN_PARENT_GUID });
|
mstModReduceQtyList.Add(findMst);
|
}
|
//添加下架记录
|
checkAuditPara.downHis.Add(new TN_WM_DOWN_HISTORYEntity
|
{
|
CN_GUID = Guid.NewGuid().ToString(),
|
CN_S_LOCATION_CODE = checkDtl.CN_S_LOCATION_CODE,
|
CN_S_ITEM_STATE = trayItemMst.CN_S_ITEM_STATE,
|
CN_S_TRAY_CODE = trayItemMst.CN_S_TRAY_CODE,
|
CN_S_TRAY_GRID = trayItemMst.CN_S_TRAY_GRID == null ? "" : trayItemMst.CN_S_TRAY_GRID,
|
CN_S_ITEM_CODE = trayItemMst.CN_S_ITEM_CODE,
|
CN_S_ITEM_NAME = trayItemMst.CN_S_ITEM_NAME,
|
CN_S_PRODUCTION_BATCH = trayItemMst.CN_S_LOT_NO,
|
CN_F_QUANTITY = checkDtl.CN_F_WEIGHT,
|
CN_F_PACKING_QTY = checkDtl.CN_F_PACKING_QTY,
|
CN_S_MODEL = trayItemMst.CN_S_MODEL,
|
CN_S_STOCK_AREA = checkDtl.CN_S_STOCK_AREA,
|
CN_S_STOCK_CODE = checkAuditPara.checkMst.CN_S_STOCK_CODE,
|
CN_T_CREATE = DateTime.Now,
|
CN_T_MODIFY = DateTime.Now,
|
CN_S_OWNER = "",
|
CN_S_MEASURE_UNIT = trayItemMst.CN_S_MEASURE_UNIT,
|
CN_S_CREATOR = checkAuditPara.checkMst.CN_S_CREATOR,
|
CN_S_CREATOR_BY = checkAuditPara.checkMst.CN_S_CREATOR_BY,
|
CN_S_MODIFY = "",
|
CN_S_MODIFY_BY = "",
|
CN_S_OP_FROM = "盘点审核-删除",
|
CN_S_EXT1 = checkDtl.CN_S_PACK_CODE,//trayItemMst.CN_S_UNIQUE_CODE,
|
CN_S_EXT2 = "其他出库",
|
CN_S_LOT_NO = checkDtl.CN_S_LOT_NO,
|
CN_S_FIGURE_NO = checkDtl.CN_S_FIGURE_NO
|
});
|
#endregion
|
}
|
}
|
foreach (var checkDtl in checkAuditPara.checkMst.dtls)
|
{
|
if (checkDtl.CN_S_CHECK_RESULT.Equals(CheckStateEnum.E.ToString()))//修改后
|
{
|
#region 原数据删除,新增修改后的数据
|
TN_WM_B_TRAY_ITEM_DTLEntity dtlMod = CreateDAL<DapperDAL<TN_WM_B_TRAY_ITEM_DTLEntity>>().GetSingleEntity(new { CN_S_UNIQUE_CODE = checkDtl.CN_S_PACK_CODE });
|
|
TN_WM_B_TRAY_ITEM_MSTEntity mstMod = CreateDAL<DapperDAL<TN_WM_B_TRAY_ITEM_MSTEntity>>().GetSingleEntity(new { CN_GUID = dtlMod.CN_PARENT_GUID });
|
|
var trayItemMstExist = new TN_WM_B_TRAY_ITEM_MSTEntity
|
{
|
CN_GUID = System.Guid.NewGuid().ToString().ToUpper(),
|
CN_S_TRAY_CODE = checkDtl.CN_S_TRAY_CODE,
|
CN_S_TRAY_GRID = "1",
|
CN_S_OWNER = checkDtl.CN_S_OWNER,
|
CN_S_ITEM_CODE = checkDtl.CN_S_ITEM_CODE,
|
CN_S_ITEM_NAME = checkDtl.CN_S_ITEM_NAME,
|
CN_S_FIGURE_NO = "",//checkDtl.CN_S_FIGURE_NO,
|
CN_S_MODEL = checkDtl.CN_S_MODEL,
|
CN_S_ITEM_STATE = "合格",//CN_S_ITEM_STATE = checkDtl.CN_S_ITEM_STATE,
|
CN_F_QUANTITY = 1,
|
CN_S_MEASURE_UNIT = checkDtl.CN_S_MEASURE_UNIT
|
};
|
|
List<TN_WM_B_TRAY_ITEM_DTLEntity> dtlList = new List<TN_WM_B_TRAY_ITEM_DTLEntity>();
|
dtlList.Add(new TN_WM_B_TRAY_ITEM_DTLEntity
|
{
|
CN_GUID = Guid.NewGuid().ToString(),
|
CN_PARENT_GUID = trayItemMstExist.CN_GUID,
|
CN_S_UNIQUE_CODE = checkDtl.CN_S_PACK_CODE,
|
CN_S_LOT_NO = checkDtl.CN_S_LOT_NO,
|
CN_F_QUANTITY = checkDtl.CN_F_QUANTITY,
|
CN_F_PACKING_QTY = checkDtl.CN_F_PACKING_QTY,
|
CN_T_PRODUCTION = DateTime.Now,
|
CN_T_EXPIRATION = DateTime.Now,
|
CN_S_NOTE = "盘点新增",
|
CN_S_CREATOR = checkAuditPara.checkMst.CN_S_CREATOR,
|
CN_T_CREATE = DateTime.Now,
|
CN_T_MODIFY = DateTime.Now,
|
CN_S_SERIAL_NO = checkDtl.CN_F_WEIGHT.ToString(),
|
CN_S_EXT1 = checkDtl.CN_S_FIGURE_NO,
|
CN_S_CREATOR_BY = checkAuditPara.checkMst.CN_S_CREATOR_BY
|
});
|
|
|
//主表判断是直接删除,还是减主表的数量
|
if (mstMod.CN_F_QUANTITY > 1)
|
{
|
mstModReduceQtyList.Add(mstMod);
|
}
|
else
|
{
|
mstDeleteList.Add(mstMod);
|
}
|
|
var resultExist = CreateDAL<TN_WM_B_TRAY_ITEM_RELDAL>().CheckExistMsts(trayItemMstExist, checkDtl.CN_S_PACK_CODE);
|
if (resultExist.Count > 1)
|
{
|
logPara.Push("此处有异常,根据条件获取到多条主表信息,Json条件:" + JsonConvert.SerializeObject(trayItemMstExist));
|
return OperateResult.Error("此处有异常,根据条件获取到多条主表信息!");
|
}
|
|
if (resultExist.Count == 1)
|
{
|
var haveExist = mstDeleteList.Where(x => x.CN_GUID == resultExist[0].CN_GUID);
|
if (haveExist == null)
|
{
|
trayItemMstExist.CN_GUID = resultExist[0].CN_GUID;
|
foreach (var item in dtlList)
|
{
|
item.CN_PARENT_GUID = trayItemMstExist.CN_GUID;
|
}
|
mstModAddQtyList.Add(trayItemMstExist);
|
}
|
else
|
{
|
mstAddList.Add(trayItemMstExist);
|
}
|
}
|
if (resultExist.Count == 0)
|
{
|
mstAddList.Add(trayItemMstExist);
|
}
|
|
//子表:直接先删后增
|
dtlAddList.AddRange(dtlList);
|
dtlDeleteList.Add(dtlMod);
|
|
#endregion
|
}
|
|
}
|
}
|
|
if (checkAuditPara.isEnd)
|
{
|
#region 旧代码已注释
|
//foreach (var checkDtl in checkAuditPara.checkMst.dtls)
|
//{
|
// if (checkDtl.CN_S_CHECK_RESULT.Equals(CheckStateEnum.A.ToString())) //增加
|
// {
|
// #region 是否位于其他货位
|
// TN_WM_B_TRAY_ITEM_DTLEntity dtlDelete = CreateDAL<DapperDAL<TN_WM_B_TRAY_ITEM_DTLEntity>>().GetSingleEntity(new { CN_S_UNIQUE_CODE = checkDtl.CN_S_PACK_CODE });
|
// if (dtlDelete != null)
|
// {
|
// TN_WM_B_TRAY_ITEM_MSTEntity mstDelete = CreateDAL<DapperDAL<TN_WM_B_TRAY_ITEM_MSTEntity>>().GetSingleEntity(new { CN_GUID = dtlDelete.CN_PARENT_GUID });
|
// if (mstDelete != null)
|
// {
|
// TN_WM_B_TRAY_LOCATIONEntity traylocationDelete = CreateDAL<DapperDAL<TN_WM_B_TRAY_LOCATIONEntity>>().GetSingleEntity(new { CN_S_TRAY_CODE = mstDelete.CN_S_TRAY_CODE });
|
// if (traylocationDelete != null)
|
// {
|
// trayLocationDeleteList.Add(traylocationDelete);
|
|
// dtlDeleteList.Add(dtlDelete);
|
|
// List<TN_WM_B_TRAY_ITEM_DTLEntity> dtlExistList = CreateDAL<DapperDAL<TN_WM_B_TRAY_ITEM_DTLEntity>>().GetList(new { CN_PARENT_GUID = mstDelete.CN_GUID });
|
// var exi = dtlExistList.Where(x => x.CN_GUID != dtlDelete.CN_GUID);
|
// if (!exi.Any())
|
// {
|
// mstDeleteList.Add(mstDelete);
|
// }
|
// }
|
// }
|
// }
|
// #endregion
|
|
// #region 主表新增或修改
|
// var trayItemMstExist = new TN_WM_B_TRAY_ITEM_MSTEntity
|
// {
|
// CN_GUID = Guid.NewGuid().ToString(),
|
// CN_S_TRAY_CODE = checkDtl.CN_S_TRAY_CODE,
|
// CN_S_TRAY_GRID = "1",
|
// CN_S_OWNER = checkDtl.CN_S_OWNER,
|
// CN_S_ITEM_CODE = checkDtl.CN_S_ITEM_CODE,
|
// CN_S_ITEM_NAME = checkDtl.CN_S_ITEM_NAME,
|
// CN_S_FIGURE_NO = checkDtl.CN_S_FIGURE_NO,
|
// CN_S_MODEL = checkDtl.CN_S_MODEL,
|
// CN_S_ITEM_STATE = "合格",//CN_S_ITEM_STATE = checkDtl.CN_S_ITEM_STATE,
|
// CN_F_QUANTITY = 1,
|
// CN_S_MEASURE_UNIT = checkDtl.CN_S_MEASURE_UNIT
|
// };
|
|
// List<TN_WM_B_TRAY_ITEM_DTLEntity> dtlList = new List<TN_WM_B_TRAY_ITEM_DTLEntity>();
|
// dtlList.Add(new TN_WM_B_TRAY_ITEM_DTLEntity
|
// {
|
// CN_GUID = Guid.NewGuid().ToString(),
|
// CN_PARENT_GUID = trayItemMstExist.CN_GUID,
|
// CN_S_UNIQUE_CODE = checkDtl.CN_S_PACK_CODE,
|
// CN_S_LOT_NO = checkDtl.CN_S_LOT_NO,
|
// CN_F_QUANTITY = checkDtl.CN_F_QUANTITY,
|
// CN_T_PRODUCTION = DateTime.Now,
|
// CN_T_EXPIRATION = DateTime.Now,
|
// CN_S_NOTE = "盘点新增",
|
// CN_S_CREATOR = checkAuditPara.checkMst.CN_S_CREATOR,
|
// CN_T_CREATE = DateTime.Now,
|
// CN_T_MODIFY = DateTime.Now,
|
// CN_S_SERIAL_NO = checkDtl.CN_F_WEIGHT.ToString(),
|
// CN_S_CREATOR_BY = checkAuditPara.checkMst.CN_S_CREATOR_BY
|
// });
|
|
// trayItemMstExist.TrayItemDtlList = dtlList;
|
|
// var resultExist = CreateDAL<TN_WM_B_TRAY_ITEM_RELDAL>().CheckExists(trayItemMstExist);
|
// if (resultExist.Count > 1)
|
// {
|
// logPara.Push("此处有异常,根据条件获取到多条主表信息,Json条件:" + JsonConvert.SerializeObject(trayItemMstExist));
|
// }
|
|
// if (resultExist.Any())
|
// {
|
// trayItemMstExist.CN_GUID = resultExist[0].CN_GUID;
|
// trayItemMstExist.CN_F_QUANTITY = resultExist[0].CN_F_QUANTITY + 1;
|
// foreach (var item in trayItemMstExist.TrayItemDtlList)
|
// {
|
// item.CN_PARENT_GUID = trayItemMstExist.CN_GUID;
|
// }
|
// mstModList.Add(trayItemMstExist);
|
// }
|
// else
|
// {
|
// mstAddList.Add(trayItemMstExist);
|
|
// //添加上架记录
|
// checkAuditPara.upHis.Add(new TN_WM_UP_HISTORYEntity
|
// {
|
// CN_GUID = Guid.NewGuid().ToString(),
|
// CN_S_LOCATION_CODE = checkDtl.CN_S_LOCATION_CODE,
|
// CN_S_ITEM_STATE = trayItemMstExist.CN_S_ITEM_STATE,
|
// CN_S_TRAY_CODE = trayItemMstExist.CN_S_TRAY_CODE,
|
// CN_S_TRAY_GRID = trayItemMstExist.CN_S_TRAY_GRID == null ? "" : trayItemMstExist.CN_S_TRAY_GRID,
|
// CN_S_ITEM_CODE = trayItemMstExist.CN_S_ITEM_CODE,
|
// CN_S_ITEM_NAME = trayItemMstExist.CN_S_ITEM_NAME,
|
// CN_S_PRODUCTION_BATCH = trayItemMstExist.CN_S_LOT_NO,
|
// CN_F_QUANTITY = checkDtl.CN_F_WEIGHT,
|
// CN_S_MODEL = trayItemMstExist.CN_S_MODEL,
|
// CN_S_STOCK_AREA = checkDtl.CN_S_STOCK_AREA,
|
// CN_S_STOCK_CODE = checkAuditPara.checkMst.CN_S_STOCK_CODE,
|
// CN_T_CREATE = DateTime.Now,
|
// CN_T_MODIFY = DateTime.Now,
|
// CN_S_OWNER = "",
|
// CN_S_MEASURE_UNIT = trayItemMstExist.CN_S_MEASURE_UNIT,
|
// CN_S_CREATOR = checkAuditPara.checkMst.CN_S_CREATOR,
|
// CN_S_CREATOR_BY = checkAuditPara.checkMst.CN_S_CREATOR_BY,
|
// CN_S_MODIFY = "",
|
// CN_S_MODIFY_BY = "",
|
// CN_S_OP_FROM = "盘点审核-新增",
|
// CN_S_EXT1 = checkDtl.CN_S_PACK_CODE,//trayItemMst.CN_S_UNIQUE_CODE,
|
// CN_S_EXT2 = "其他入库",
|
// CN_S_LOT_NO = checkDtl.CN_S_LOT_NO,
|
// CN_S_FIGURE_NO = checkDtl.CN_S_FIGURE_NO
|
// });
|
// }
|
|
|
// #endregion
|
// }
|
|
// if (checkDtl.CN_S_CHECK_RESULT.Equals(CheckStateEnum.E.ToString()))//修改后
|
// {
|
// #region 主表新增或修改
|
// var trayItemMstExist = new TN_WM_B_TRAY_ITEM_MSTEntity
|
// {
|
// CN_GUID = Guid.NewGuid().ToString(),
|
// CN_S_TRAY_CODE = checkDtl.CN_S_TRAY_CODE,
|
// CN_S_TRAY_GRID = "1",
|
// CN_S_OWNER = checkDtl.CN_S_OWNER,
|
// CN_S_ITEM_CODE = checkDtl.CN_S_ITEM_CODE,
|
// CN_S_ITEM_NAME = checkDtl.CN_S_ITEM_NAME,
|
// CN_S_FIGURE_NO = checkDtl.CN_S_FIGURE_NO,
|
// CN_S_MODEL = checkDtl.CN_S_MODEL,
|
// CN_S_ITEM_STATE = "合格",//CN_S_ITEM_STATE = checkDtl.CN_S_ITEM_STATE,
|
// CN_F_QUANTITY = 1,
|
// CN_S_MEASURE_UNIT = checkDtl.CN_S_MEASURE_UNIT
|
// };
|
|
// List<TN_WM_B_TRAY_ITEM_DTLEntity> dtlList = new List<TN_WM_B_TRAY_ITEM_DTLEntity>();
|
// dtlList.Add(new TN_WM_B_TRAY_ITEM_DTLEntity
|
// {
|
// CN_GUID = Guid.NewGuid().ToString(),
|
// CN_PARENT_GUID = trayItemMstExist.CN_GUID,
|
// CN_S_UNIQUE_CODE = checkDtl.CN_S_PACK_CODE,
|
// CN_S_LOT_NO = checkDtl.CN_S_LOT_NO,
|
// CN_F_QUANTITY = checkDtl.CN_F_QUANTITY,
|
// CN_T_PRODUCTION = DateTime.Now,
|
// CN_T_EXPIRATION = DateTime.Now,
|
// CN_S_NOTE = "盘点新增",
|
// CN_S_CREATOR = checkAuditPara.checkMst.CN_S_CREATOR,
|
// CN_T_CREATE = DateTime.Now,
|
// CN_T_MODIFY = DateTime.Now,
|
// CN_S_SERIAL_NO = checkDtl.CN_F_WEIGHT.ToString(),
|
// CN_S_CREATOR_BY = checkAuditPara.checkMst.CN_S_CREATOR_BY
|
// });
|
|
// trayItemMstExist.TrayItemDtlList = dtlList;
|
|
// var resultExist = CreateDAL<TN_WM_B_TRAY_ITEM_RELDAL>().CheckExists(trayItemMstExist);
|
// if (resultExist.Count > 1)
|
// {
|
// logPara.Push("此处有异常,根据条件获取到多条主表信息,Json条件:" + JsonConvert.SerializeObject(trayItemMstExist));
|
// }
|
|
// if (resultExist.Any())
|
// {
|
// trayItemMstExist.CN_GUID = resultExist[0].CN_GUID;
|
// //trayItemMstExist.CN_F_QUANTITY = resultExist[0].CN_F_QUANTITY + 1;
|
// foreach (var item in trayItemMstExist.TrayItemDtlList)
|
// {
|
// item.CN_PARENT_GUID = trayItemMstExist.CN_GUID;
|
// }
|
// //mstModList.Add(trayItemMstExist);
|
// //mstDeleteList.Add(trayItemMstExist);
|
// }
|
// //else
|
// //{
|
// mstAddList.Add(trayItemMstExist);
|
|
// //添加上架记录
|
// //checkAuditPara.upHis.Add(new TN_WM_UP_HISTORYEntity
|
// //{
|
// // CN_GUID = Guid.NewGuid().ToString(),
|
// // CN_S_LOCATION_CODE = checkDtl.CN_S_LOCATION_CODE,
|
// // CN_S_ITEM_STATE = trayItemMstExist.CN_S_ITEM_STATE,
|
// // CN_S_TRAY_CODE = trayItemMstExist.CN_S_TRAY_CODE,
|
// // CN_S_TRAY_GRID = trayItemMstExist.CN_S_TRAY_GRID == null ? "" : trayItemMstExist.CN_S_TRAY_GRID,
|
// // CN_S_ITEM_CODE = trayItemMstExist.CN_S_ITEM_CODE,
|
// // CN_S_ITEM_NAME = trayItemMstExist.CN_S_ITEM_NAME,
|
// // CN_S_PRODUCTION_BATCH = trayItemMstExist.CN_S_LOT_NO,
|
// // CN_F_QUANTITY = checkDtl.CN_F_WEIGHT,
|
// // CN_S_MODEL = trayItemMstExist.CN_S_MODEL,
|
// // CN_S_STOCK_AREA = checkDtl.CN_S_STOCK_AREA,
|
// // CN_S_STOCK_CODE = checkAuditPara.checkMst.CN_S_STOCK_CODE,
|
// // CN_T_CREATE = DateTime.Now,
|
// // CN_T_MODIFY = DateTime.Now,
|
// // CN_S_OWNER = "",
|
// // CN_S_MEASURE_UNIT = trayItemMstExist.CN_S_MEASURE_UNIT,
|
// // CN_S_CREATOR = checkAuditPara.checkMst.CN_S_CREATOR,
|
// // CN_S_CREATOR_BY = checkAuditPara.checkMst.CN_S_CREATOR_BY,
|
// // CN_S_MODIFY = "",
|
// // CN_S_MODIFY_BY = "",
|
// // CN_S_OP_FROM = "盘点审核-新增",
|
// // CN_S_EXT1 = checkDtl.CN_S_PACK_CODE,//trayItemMst.CN_S_UNIQUE_CODE,
|
// // CN_S_EXT2 = "其他入库",
|
// // CN_S_LOT_NO = checkDtl.CN_S_LOT_NO,
|
// // CN_S_FIGURE_NO = checkDtl.CN_S_FIGURE_NO
|
// //});
|
// // }
|
|
|
// #endregion
|
// }
|
// if (checkDtl.CN_S_CHECK_RESULT.Equals(CheckStateEnum.D.ToString()))//删除
|
// {
|
// #region 判断主表是否需要删除
|
// var trayItemMst = checkDtl.trayItemMst;
|
// List<TN_WM_B_TRAY_ITEM_DTLEntity> dtlExistList = CreateDAL<DapperDAL<TN_WM_B_TRAY_ITEM_DTLEntity>>().GetList(new { CN_PARENT_GUID = trayItemMst.CN_GUID });
|
// if (dtlExistList.Count == 1)
|
// {
|
// mstDeleteList.Add(trayItemMst);
|
// dtlDeleteList.Add(dtlExistList[0]);
|
// }
|
// if (dtlExistList.Count > 1)
|
// {
|
// var findDtl = dtlExistList.Where(x => x.CN_S_UNIQUE_CODE == checkDtl.CN_S_PACK_CODE);
|
// dtlDeleteList.AddRange(findDtl);
|
// }
|
// //添加下架记录
|
// checkAuditPara.downHis.Add(new TN_WM_DOWN_HISTORYEntity
|
// {
|
// CN_GUID = Guid.NewGuid().ToString(),
|
// CN_S_LOCATION_CODE = checkDtl.CN_S_LOCATION_CODE,
|
// CN_S_ITEM_STATE = trayItemMst.CN_S_ITEM_STATE,
|
// CN_S_TRAY_CODE = trayItemMst.CN_S_TRAY_CODE,
|
// CN_S_TRAY_GRID = trayItemMst.CN_S_TRAY_GRID == null ? "" : trayItemMst.CN_S_TRAY_GRID,
|
// CN_S_ITEM_CODE = trayItemMst.CN_S_ITEM_CODE,
|
// CN_S_ITEM_NAME = trayItemMst.CN_S_ITEM_NAME,
|
// CN_S_PRODUCTION_BATCH = trayItemMst.CN_S_LOT_NO,
|
// CN_F_QUANTITY = checkDtl.CN_F_WEIGHT,
|
// CN_S_MODEL = trayItemMst.CN_S_MODEL,
|
// CN_S_STOCK_AREA = checkDtl.CN_S_STOCK_AREA,
|
// CN_S_STOCK_CODE = checkAuditPara.checkMst.CN_S_STOCK_CODE,
|
// CN_T_CREATE = DateTime.Now,
|
// CN_T_MODIFY = DateTime.Now,
|
// CN_S_OWNER = "",
|
// CN_S_MEASURE_UNIT = trayItemMst.CN_S_MEASURE_UNIT,
|
// CN_S_CREATOR = checkAuditPara.checkMst.CN_S_CREATOR,
|
// CN_S_CREATOR_BY = checkAuditPara.checkMst.CN_S_CREATOR_BY,
|
// CN_S_MODIFY = "",
|
// CN_S_MODIFY_BY = "",
|
// CN_S_OP_FROM = "盘点审核-删除",
|
// CN_S_EXT1 = checkDtl.CN_S_PACK_CODE,//trayItemMst.CN_S_UNIQUE_CODE,
|
// CN_S_EXT2 = "其它出库",
|
// CN_S_LOT_NO = checkDtl.CN_S_LOT_NO,
|
// CN_S_FIGURE_NO = checkDtl.CN_S_FIGURE_NO
|
// });
|
// #endregion
|
// }
|
// if (checkDtl.CN_S_CHECK_RESULT.Equals(CheckStateEnum.EB.ToString()))//修改前
|
// {
|
|
// TN_WM_B_TRAY_ITEM_DTLEntity dtlDelete = CreateDAL<DapperDAL<TN_WM_B_TRAY_ITEM_DTLEntity>>().GetSingleEntity(new { CN_S_UNIQUE_CODE = checkDtl.CN_S_PACK_CODE });
|
|
// TN_WM_B_TRAY_ITEM_MSTEntity mstDelete = CreateDAL<DapperDAL<TN_WM_B_TRAY_ITEM_MSTEntity>>().GetSingleEntity(new { CN_GUID = dtlDelete.CN_PARENT_GUID });
|
|
// dtlDeleteList.Add(dtlDelete);
|
|
// mstDeleteList.Add(mstDelete);
|
// }
|
//}
|
#endregion
|
}
|
#endregion
|
|
logPara.Push("删除料箱已绑定托盘mst:" + JsonConvert.SerializeObject(mstDeleteList));
|
logPara.Push("删除料箱已绑定托盘dtl:" + JsonConvert.SerializeObject(dtlDeleteList));
|
logPara.Push("新增托盘mst:" + JsonConvert.SerializeObject(mstAddList));
|
logPara.Push("新增托盘dtl:" + JsonConvert.SerializeObject(dtlAddList));
|
logPara.Push("修改托盘mst增:" + JsonConvert.SerializeObject(mstModAddQtyList));
|
logPara.Push("修改托盘mst减:" + JsonConvert.SerializeObject(mstModReduceQtyList));
|
|
#region 执行事务
|
|
var result = UseTransaction(trans =>
|
{
|
logPara.Push("更新盘点单状态为:" + checkAuditPara.state);
|
CreateDAL<DapperDAL<TN_WM_CHECK_MSTEntity>>().Update(new
|
{
|
CN_S_STATE = checkAuditPara.state,
|
CN_S_AUDIT_CONTENT = "审核通过!" + checkAuditPara.checkAuditDto.auditContent,
|
CN_S_CURR_ORG_CODE = checkAuditPara.checkAuditDto.checkAuditOrgDto.currentOrgCode,
|
CN_S_CURR_ORG_NAME = checkAuditPara.checkAuditDto.checkAuditOrgDto.currentOrgName,
|
CN_S_NEXT_ORG_CODE = checkAuditPara.checkAuditDto.checkAuditOrgDto.nextOrgCode,
|
CN_S_NEXT_ORG_NAME = checkAuditPara.checkAuditDto.checkAuditOrgDto.nextOrgName,
|
}, new { CN_S_OP_NO = checkAuditPara.checkAuditDto.opNo }, trans);
|
|
#region 最终审核
|
|
if (checkAuditPara.isEnd)
|
{
|
logPara.Push("降低仓库库存:" + JsonConvert.SerializeObject(checkAuditPara.stockQtys));
|
//降低仓库库存
|
CreateDAL<TN_WM_B_STOCK_QTYDAL>().ReduceStockQty(checkAuditPara.stockQtys, trans);
|
//降低库区库存
|
CreateDAL<TN_WM_B_AREA_QTYDAL>().ReduceAreaQty(checkAuditPara.areaQtys, trans);
|
|
foreach (var item in trayLocationDeleteList)
|
{
|
//删除托盘货位关联
|
CreateDAL<DapperDAL<TN_WM_B_TRAY_LOCATIONEntity>>().Delete(new { CN_S_TRAY_CODE = item.CN_S_TRAY_CODE, CN_S_LOCATION_CODE = item.CN_S_LOCATION_CODE }, trans);
|
CreateDAL<DapperDAL<TN_WM_LOCATION_EXTEntity>>().Update(new
|
{
|
CN_S_LOCATION_STATE = "正常",
|
CN_S_USE_STATE = "空"
|
}, new
|
{
|
CN_S_LOCATION_CODE = item.CN_S_LOCATION_CODE
|
}, trans);
|
}
|
|
foreach (var mstEntity in mstDeleteList)
|
{
|
//删除前主表
|
CreateDAL<DapperDAL<TN_WM_B_TRAY_ITEM_MSTEntity>>().Delete(new { CN_GUID = mstEntity.CN_GUID }, trans);
|
}
|
foreach (var dtlEntity in dtlDeleteList)
|
{
|
//删除前子表
|
CreateDAL<DapperDAL<TN_WM_B_TRAY_ITEM_DTLEntity>>().Delete(new { CN_PARENT_GUID = dtlEntity.CN_PARENT_GUID, CN_S_UNIQUE_CODE = dtlEntity.CN_S_UNIQUE_CODE }, trans);
|
}
|
|
//新增主表
|
foreach (var item in mstAddList)
|
{
|
CreateDAL<DapperDAL<TN_WM_B_TRAY_ITEM_MSTEntity>>().Add(item, trans);
|
}
|
|
//新增子表
|
foreach (var item in dtlAddList)
|
{
|
CreateDAL<DapperDAL<TN_WM_B_TRAY_ITEM_DTLEntity>>().Add(item, trans);
|
}
|
|
//修改数量增
|
foreach (var item in mstModAddQtyList)
|
{
|
CreateDAL<DapperDAL<TN_WM_B_TRAY_ITEM_MSTEntity>>().Update(new { CN_F_QUANTITY = item.CN_F_QUANTITY + 1 }, new { CN_GUID = item.CN_GUID }, trans);
|
}
|
//修改数量减
|
foreach (var item in mstModReduceQtyList)
|
{
|
CreateDAL<DapperDAL<TN_WM_B_TRAY_ITEM_MSTEntity>>().Update(new { CN_F_QUANTITY = item.CN_F_QUANTITY - 1 }, new { CN_GUID = item.CN_GUID }, trans);
|
}
|
|
//释放被锁定货位
|
foreach (var checkDtl in checkAuditPara.checkMst.dtls)
|
{
|
logPara.Push("释放被锁定的货位" + checkDtl.CN_S_LOCATION_CODE);
|
CreateDAL<DapperDAL<TN_WM_LOCATION_EXTEntity>>().Update(new
|
{
|
CN_S_LOCATION_STATE = "正常"
|
}, new
|
{
|
CN_S_LOCATION_CODE = checkDtl.CN_S_LOCATION_CODE
|
}, trans);
|
}
|
|
//删除list记录,并往历史表中添加
|
AuditAddHistory(checkAuditPara, logPara, trans);
|
|
//上下架记录
|
CreateDAL<DapperDAL<TN_WM_UP_HISTORYEntity>>().AddRange(checkAuditPara.upHis, trans);
|
CreateDAL<DapperDAL<TN_WM_DOWN_HISTORYEntity>>().AddRange(checkAuditPara.downHis, trans);
|
|
// throw new Exception("tedifanhui");
|
}
|
|
#endregion
|
});
|
|
#endregion
|
|
if (result.Success && checkAuditPara.isEnd)
|
{
|
//升库存
|
AuditAddQty(checkAuditPara, logPara, null);
|
|
//修改装箱数据
|
foreach (var checkDtl in checkAuditPara.checkMst.dtls)
|
{
|
if (checkDtl.CN_S_CHECK_RESULT.Equals(CheckStateEnum.E.ToString()))//修改后
|
{
|
AutoBomItemEntity itemEntity = CreateDAL<TN_WMS_ITEMDAL>().GetItemEntity(checkDtl.CN_S_ITEM_CODE);
|
bool execResult = CreateDAL<MONGO_PRINT_BARCODEDAL>().UpdateZX(checkDtl.CN_S_PACK_CODE, checkDtl.CN_F_WEIGHT.ToString(),checkDtl.CN_F_PACKING_QTY.ToString(), checkDtl.CN_S_LOT_NO, checkDtl.CN_S_FIGURE_NO, itemEntity);
|
if (!execResult)
|
{
|
logPara.Push("更新装箱信息失败!" + JsonConvert.SerializeObject(checkDtl));
|
}
|
}
|
}
|
}
|
return result;
|
|
}
|
|
/// <summary>
|
/// 盘点单审核 - 参数处理
|
/// </summary>
|
/// <param name="checkAuditPara"></param>
|
public OperateResult AuditHandleParam(CheckAuditPara checkAuditPara, LogPara logPara)
|
{
|
logPara.Push("最终审核");
|
checkAuditPara.isEnd = true;
|
checkAuditPara.checkMst.dtls = BLLCreator.Create<DapperBLL<TN_WM_CHECK_DTLEntity>>().GetList(new { CN_S_OP_NO = checkAuditPara.checkAuditDto.opNo });
|
checkAuditPara.checkMst.dtls = checkAuditPara.checkMst.dtls.Where(e => !e.CN_S_CHECK_RESULT.Equals(CheckStateEnum.ERROR.ToString())).ToList();
|
if (checkAuditPara.checkMst.dtls.Count() == 0)
|
{
|
return OperateResult.Error("盘点单子表不存在数据!");
|
}
|
else
|
{
|
checkAuditPara.stockCode = checkAuditPara.checkMst.CN_S_STOCK_CODE;
|
checkAuditPara.areaCode = checkAuditPara.checkMst.dtls.FirstOrDefault().CN_S_STOCK_AREA;
|
}
|
|
foreach (var dtl in checkAuditPara.checkMst.dtls)
|
{
|
var trayItemDtl = CreateDAL<DapperDAL<TN_WM_B_TRAY_ITEM_DTLEntity>>().GetSingleEntity(new { CN_S_UNIQUE_CODE = dtl.CN_S_PACK_CODE });
|
|
if (trayItemDtl != null)
|
{
|
var trayItemMst = CreateDAL<DapperDAL<TN_WM_B_TRAY_ITEM_MSTEntity>>().GetSingleEntity(new { CN_GUID = trayItemDtl.CN_PARENT_GUID });
|
if (trayItemMst != null)
|
{
|
dtl.trayItemMst = trayItemMst;
|
}
|
}
|
else
|
{
|
var trayItemMst = CreateDAL<DapperDAL<TN_WM_B_TRAY_ITEM_MSTEntity>>().GetSingleEntity(new { CN_S_TRAY_CODE = dtl.CN_S_TRAY_CODE, CN_S_ITEM_CODE = dtl.CN_S_ITEM_CODE });
|
if (trayItemMst != null)
|
{
|
dtl.trayItemMst = trayItemMst;
|
}
|
}
|
}
|
checkAuditPara.checkLists = CreateDAL<DapperDAL<TN_WM_CHECK_LISTEntity>>().GetList(new { CN_S_OP_NO = checkAuditPara.checkAuditDto.opNo });
|
checkAuditPara.upHis = new List<TN_WM_UP_HISTORYEntity>();
|
checkAuditPara.downHis = new List<TN_WM_DOWN_HISTORYEntity>();
|
|
return OperateResult.Succeed();
|
}
|
|
/// <summary>
|
/// 盘点单审核 - 降库存
|
/// </summary>
|
/// <param name="checkAuditPara"></param>
|
public void AuditReduceQty(CheckAuditPara checkAuditPara, LogPara logPara)
|
{
|
foreach (var dtl in checkAuditPara.checkMst.dtls)
|
{
|
var trayItemMstData = dtl.trayItemMst;
|
if (trayItemMstData == null)
|
{
|
logPara.Push("trayItemMstData异常为NULL:" + JsonConvert.SerializeObject(trayItemMstData));
|
continue;
|
};
|
|
var trayItemDtls = CreateDAL<DapperDAL<TN_WM_B_TRAY_ITEM_DTLEntity>>().GetList(new { CN_PARENT_GUID = trayItemMstData.CN_GUID });
|
//decimal weight = 0;
|
|
foreach (var trayItemDlt in trayItemDtls)
|
{
|
// var weight = Convert.ToDecimal(trayItemDlt.CN_S_SERIAL_NO);
|
//var weight = Convert.ToDecimal(dtl.CN_F_QUANTITY);
|
|
checkAuditPara.stockQtys.Add(new TN_WM_B_STOCK_QTYEntity()
|
{
|
CN_S_ITEM_CODE = trayItemMstData.CN_S_ITEM_CODE,
|
CN_S_ITEM_NAME = trayItemMstData.CN_S_ITEM_NAME,
|
CN_S_ITEM_STATE = trayItemMstData.CN_S_ITEM_STATE,
|
CN_S_OWNER = trayItemMstData.CN_S_OWNER,
|
CN_S_PRODUCTION_BATCH = string.IsNullOrEmpty(trayItemDtls.FirstOrDefault().CN_S_PRODUCTION_BATCH) ? "" : trayItemDtls.FirstOrDefault().CN_S_PRODUCTION_BATCH,
|
CN_S_LOT_NO = trayItemDlt.CN_S_LOT_NO,
|
CN_F_QUANTITY = Convert.ToDecimal(trayItemDlt.CN_F_PACKING_QTY),
|
CN_S_STOCK_CODE = checkAuditPara.stockCode,//checkAuditPara.checkLists.FirstOrDefault().CN_S_STOCK_CODE,
|
CN_S_STOCK_AREA = checkAuditPara.areaCode,//checkAuditPara.checkLists.FirstOrDefault().CN_S_STOCK_AREA,
|
CN_F_PLANNED_QTY = trayItemMstData.CN_F_INQTY,
|
CN_S_MODEL = trayItemMstData.CN_S_MODEL,
|
CN_S_FIGURE_NO = trayItemDlt.CN_S_EXT1,
|
CN_S_MEASURE_UNIT = trayItemMstData.CN_S_MEASURE_UNIT
|
});
|
checkAuditPara.areaQtys.Add(new TN_WM_B_AREA_QTYEntity()
|
{
|
CN_S_ITEM_CODE = trayItemMstData.CN_S_ITEM_CODE,
|
CN_S_ITEM_NAME = trayItemMstData.CN_S_ITEM_NAME,
|
CN_S_ITEM_STATE = trayItemMstData.CN_S_ITEM_STATE,
|
CN_S_OWNER = trayItemMstData.CN_S_OWNER,
|
CN_S_PRODUCTION_BATCH = string.IsNullOrEmpty(trayItemDtls.FirstOrDefault().CN_S_PRODUCTION_BATCH) ? "" : trayItemDtls.FirstOrDefault().CN_S_PRODUCTION_BATCH,
|
CN_S_LOT_NO = trayItemDlt.CN_S_LOT_NO,
|
CN_F_QUANTITY = Convert.ToDecimal(trayItemDlt.CN_F_PACKING_QTY),
|
CN_S_STOCK_CODE = checkAuditPara.stockCode,//checkAuditPara.checkLists.FirstOrDefault().CN_S_STOCK_CODE,
|
CN_S_STOCK_AREA = checkAuditPara.areaCode,//checkAuditPara.checkLists.FirstOrDefault().CN_S_STOCK_AREA,
|
CN_F_PLANNED_QTY = trayItemMstData.CN_F_INQTY,
|
CN_S_MODEL = trayItemMstData.CN_S_MODEL,
|
CN_S_FIGURE_NO = trayItemDlt.CN_S_EXT1,
|
CN_S_MEASURE_UNIT = trayItemMstData.CN_S_MEASURE_UNIT
|
});
|
}
|
}
|
|
}
|
|
|
/// <summary>
|
/// 盘点单审核
|
/// </summary>
|
/// <param name="checkAuditPara"></param>
|
/// <param name="logPara"></param>
|
/// <param name="trans"></param>
|
public void AuditAddHistory(CheckAuditPara checkAuditPara, LogPara logPara, IDbTransaction trans)
|
{
|
foreach (var checkList in checkAuditPara.checkLists)
|
{
|
checkAuditPara.checkListHistorys.Add(new TN_WM_CHECK_LIST_HISTORYEntity
|
{
|
CN_GUID = Guid.NewGuid().ToString(),
|
CN_S_OP_NO = checkList.CN_S_OP_NO,
|
CN_S_STOCK_CODE = checkList.CN_S_STOCK_CODE,
|
CN_S_STOCK_AREA = checkList.CN_S_STOCK_AREA,
|
CN_S_LOCATION_CODE = checkList.CN_S_LOCATION_CODE,
|
CN_S_TRAY_CODE = checkList.CN_S_TRAY_CODE,
|
CN_S_ITEM_CODE = checkList.CN_S_ITEM_CODE,
|
CN_S_ITEM_NAME = checkList.CN_S_ITEM_NAME,
|
CN_S_ITEM_STATE = checkList.CN_S_ITEM_STATE,
|
CN_S_LOT_NO = checkList.CN_S_LOT_NO,
|
CN_S_CHECK_RESULT = checkList.CN_S_CHECK_RESULT,
|
CN_S_MODEL = checkList.CN_S_MODEL,
|
CN_S_FIGURE_NO = checkList.CN_S_FIGURE_NO,
|
CN_F_QUANTITY = checkList.CN_F_QUANTITY,
|
CN_F_PACKING_QTY = checkList.CN_F_PACKING_QTY,
|
CN_F_WEIGHT = checkList.CN_F_WEIGHT,
|
CN_S_PACK_CODE = checkList.CN_S_PACK_CODE,
|
CN_S_CREATOR = checkList.CN_S_CREATOR,
|
CN_S_CREATOR_BY = checkList.CN_S_CREATOR_BY,
|
CN_T_CREATE = checkList.CN_T_CREATE,
|
CN_S_MODIFY = checkList.CN_S_MODIFY,
|
CN_S_MODIFY_BY = checkList.CN_S_MODIFY_BY,
|
CN_T_MODIFY = checkList.CN_T_MODIFY
|
});
|
}
|
|
logPara.Push("删除盘点列表记录,添加盘点历史表记录!");
|
if (checkAuditPara.checkListHistorys.Count() > 0)
|
{
|
checkAuditPara.checkListHistorys.ForEach(e => e.CN_GUID = Guid.NewGuid().ToString());
|
CreateDAL<DapperDAL<TN_WM_CHECK_LIST_HISTORYEntity>>().AddRange(checkAuditPara.checkListHistorys, trans);
|
CreateDAL<DapperDAL<TN_WM_CHECK_LISTEntity>>().Delete(new { CN_S_OP_NO = checkAuditPara.checkAuditDto.opNo }, trans);
|
}
|
}
|
|
/// <summary>
|
/// 盘点单审核 - 升库存
|
/// </summary>
|
/// <param name="checkAuditPara"></param>
|
/// <param name="logPara"></param>
|
/// <param name="trans"></param>
|
public void AuditAddQty(CheckAuditPara checkAuditPara, LogPara logPara, IDbTransaction trans)
|
{
|
logPara.Push("统一升库存!");
|
var addStockQty = new List<TN_WM_B_STOCK_QTYEntity>();
|
var addAreaQty = new List<TN_WM_B_AREA_QTYEntity>();
|
|
List<TN_WM_B_TRAY_ITEM_MSTEntity> trayItemList = new List<TN_WM_B_TRAY_ITEM_MSTEntity>();
|
|
List<TN_WM_CHECK_DTLEntity> dtlList = checkAuditPara.checkMst.dtls;
|
|
List<string> disdtlList = dtlList.Select(x => x.CN_S_TRAY_CODE).Distinct().ToList();
|
logPara.Push("去重!" + JsonConvert.SerializeObject(disdtlList));
|
|
foreach (var item in disdtlList)
|
{
|
List<TN_WM_B_TRAY_ITEM_MSTEntity> mstList = CreateDAL<DapperDAL<TN_WM_B_TRAY_ITEM_MSTEntity>>().GetList(new { CN_S_TRAY_CODE = item });
|
|
if (!mstList.Any())
|
{
|
logPara.Push("trayItemList发生异常了!");
|
}
|
trayItemList.AddRange(mstList);
|
}
|
logPara.Push("trayItemList!" + JsonConvert.SerializeObject(trayItemList));
|
|
trayItemList.ForEach(dtl =>
|
{
|
var trayItemMstData = dtl;
|
var trayItemDtls = CreateDAL<DapperDAL<TN_WM_B_TRAY_ITEM_DTLEntity>>().GetList(new { CN_PARENT_GUID = trayItemMstData.CN_GUID });
|
//判断如果物料明细为空,则清空托盘物料表,货位置为空
|
if (trayItemDtls.Count() == 0)
|
{
|
CreateDAL<DapperDAL<TN_WM_B_TRAY_ITEM_MSTEntity>>().Delete(new { CN_GUID = trayItemMstData.CN_GUID });
|
}
|
|
//decimal weight = 0;
|
foreach (var trayItemDlt in trayItemDtls)
|
{
|
var qty = Convert.ToDecimal(trayItemDlt.CN_F_PACKING_QTY);
|
if (qty > 0)
|
{
|
addStockQty.Add(new TN_WM_B_STOCK_QTYEntity()
|
{
|
CN_S_ITEM_CODE = trayItemMstData.CN_S_ITEM_CODE,
|
CN_S_ITEM_NAME = trayItemMstData.CN_S_ITEM_NAME,
|
CN_S_ITEM_STATE = trayItemMstData.CN_S_ITEM_STATE,
|
CN_S_OWNER = trayItemMstData.CN_S_OWNER,
|
CN_S_PRODUCTION_BATCH = trayItemMstData.CN_S_PRODUCTION_BATCH,
|
CN_S_LOT_NO = trayItemDlt.CN_S_LOT_NO,
|
CN_F_QUANTITY = qty,
|
CN_S_STOCK_CODE = checkAuditPara.stockCode,
|
CN_S_STOCK_AREA = checkAuditPara.areaCode,
|
CN_F_PLANNED_QTY = trayItemMstData.CN_F_INQTY,
|
CN_S_MODEL = trayItemMstData.CN_S_MODEL,
|
CN_S_FIGURE_NO = trayItemDlt.CN_S_EXT1,
|
CN_S_MEASURE_UNIT = trayItemMstData.CN_S_MEASURE_UNIT
|
});
|
addAreaQty.Add(new TN_WM_B_AREA_QTYEntity()
|
{
|
CN_GUID = Guid.NewGuid().ToString(),
|
CN_S_ITEM_CODE = trayItemMstData.CN_S_ITEM_CODE,
|
CN_S_ITEM_NAME = trayItemMstData.CN_S_ITEM_NAME,
|
CN_S_ITEM_STATE = trayItemMstData.CN_S_ITEM_STATE,
|
CN_S_OWNER = trayItemMstData.CN_S_OWNER,
|
CN_S_PRODUCTION_BATCH = trayItemMstData.CN_S_PRODUCTION_BATCH,
|
CN_S_LOT_NO = trayItemDlt.CN_S_LOT_NO,
|
CN_F_QUANTITY = qty,
|
CN_S_STOCK_CODE = checkAuditPara.stockCode,
|
CN_S_STOCK_AREA = checkAuditPara.areaCode,
|
CN_F_PLANNED_QTY = trayItemMstData.CN_F_INQTY,
|
CN_S_MODEL = trayItemMstData.CN_S_MODEL,
|
CN_S_FIGURE_NO = trayItemDlt.CN_S_EXT1,
|
CN_S_MEASURE_UNIT = trayItemMstData.CN_S_MEASURE_UNIT
|
});
|
}
|
}
|
});
|
|
////统一升库存
|
//foreach (var trayItemMstData in checkAuditPara.trayItemMsts)
|
//{
|
//}
|
|
//增加仓库库存
|
logPara.Push("升仓库库存:" + JsonConvert.SerializeObject(addStockQty));
|
var qtyResult = CreateDAL<TN_WM_B_STOCK_QTYDAL>().AddStockQty(addStockQty, null);//ReduceStockQty(addStockQty, null);
|
logPara.Push("升仓库库存结果:" + qtyResult.Describe());
|
qtyResult = CreateDAL<TN_WM_B_AREA_QTYDAL>().AddAreaQty(addAreaQty, null);
|
logPara.Push("升库区库存结果:" + qtyResult.Describe());
|
}
|
|
/// <summary>
|
/// 盘点单反审
|
/// </summary>
|
/// <param name="checkAuditDto"></param>
|
/// <returns></returns>
|
public OperateResult ReAudit(CheckAuditDto checkAuditDto, LogPara logPara)
|
{
|
var state = BillStateEnum.ReAudit.GetDescription();
|
var checkMst = BLLCreator.Create<DapperBLL<TN_WM_CHECK_MSTEntity>>().GetSingleEntity(new { CN_S_OP_NO = checkAuditDto.opNo });
|
if (checkMst == null)
|
{
|
return OperateResult.Error("未找到当前盘点单" + checkAuditDto.opNo);
|
}
|
var result = CreateDAL<DapperDAL<TN_WM_CHECK_MSTEntity>>().Update(new
|
{
|
CN_S_STATE = state,
|
CN_S_AUDIT_CONTENT = checkAuditDto.auditContent,
|
CN_S_CURR_ORG_CODE = "",
|
CN_S_CURR_ORG_NAME = "",
|
CN_S_NEXT_ORG_CODE = "",
|
CN_S_NEXT_ORG_NAME = "",
|
}, new { CN_S_OP_NO = checkAuditDto.opNo });
|
return result;
|
}
|
|
#endregion
|
|
#region DELETE
|
|
/// <summary>
|
/// 删除盘点单
|
/// </summary>
|
/// <param name="opNo"></param>
|
/// <returns></returns>
|
public OperateResult Delete(string opNo, LogPara logPara)
|
{
|
var checkDtls = BLLCreator.Create<DapperBLL<TN_WM_CHECK_DTLEntity>>().GetList(new { CN_S_OP_NO = opNo });
|
var reuslt = UseBasisTransaction(trans =>
|
{
|
CreateDAL<DapperDAL<TN_WM_CHECK_MSTEntity>>().Delete(new { CN_S_OP_NO = opNo }, trans);
|
CreateDAL<DapperDAL<TN_WM_CHECK_DTLEntity>>().Delete(new { CN_S_OP_NO = opNo }, trans);
|
CreateDAL<DapperDAL<TN_WM_CHECK_LISTEntity>>().Delete(new { CN_S_OP_NO = opNo }, trans);
|
foreach (var checkDtl in checkDtls)
|
{
|
logPara.Push("更新货位" + checkDtl.CN_S_LOCATION_CODE + "状态为正常!");
|
CreateDAL<DapperDAL<TN_WM_LOCATION_EXTEntity>>().Update(new { CN_S_LOCATION_STATE = "正常" },
|
new { CN_S_LOCATION_CODE = checkDtl.CN_S_LOCATION_CODE }, trans);
|
}
|
});
|
return OperateResult.Succeed();
|
}
|
|
#endregion
|
}
|
}
|