|
@@ -327,31 +327,41 @@ namespace wms.service.Service
|
|
|
{
|
|
|
var res = new SRes();
|
|
|
|
|
|
- //保存表Bill_BomInfo
|
|
|
- foreach (var item in reqDto.FeedList)
|
|
|
+ #region 删除配方
|
|
|
+ if (reqDto.UseFlag == false)
|
|
|
{
|
|
|
- var procodelist = _billBominfoRepository.GetList(p => p.MatCode == item.InMaterialCode)
|
|
|
- .Select(p => p.ProCode).Distinct();
|
|
|
- if (procodelist.Any() && procodelist.Count() > 1)
|
|
|
+ _db.BeginTran();
|
|
|
+ var result = _billBominfoRepository.Delete(p => p.Code == reqDto.FeedCode);
|
|
|
+ if (result == false)
|
|
|
{
|
|
|
- res.ResCode = ResponseStatusCodeEnum.ErrParam.GetHashCode();
|
|
|
- res.ResMsg = item.InMaterialCode + "不允许率属于两个投料大类编码,接收失败";
|
|
|
+ _db.RollbackTran();
|
|
|
+ res.ResCode = ResponseStatusCodeEnum.Fail.GetHashCode();
|
|
|
+ res.ResMsg = "删除失败";
|
|
|
return res;
|
|
|
}
|
|
|
+ _db.CommitTran();
|
|
|
+ res.ResCode = ResponseStatusCodeEnum.Sucess.GetHashCode();
|
|
|
+ res.ResMsg = "删除成功";
|
|
|
+ return res;
|
|
|
+ }
|
|
|
+ #endregion
|
|
|
|
|
|
- if (_billBominfoRepository.IsAny(p =>
|
|
|
- p.Code == reqDto.FeedCode && p.ProMatCode == item.OutMaterialCode &&
|
|
|
- p.MatCode == item.InMaterialCode))
|
|
|
- {
|
|
|
- //var mat = _basematerrepository.GetSingle(p => p.Code == item.InMaterialCode);
|
|
|
- //_billBominfoRepository.UpdateModelColumns(p => new BillBominfo() { MatCode = item.InMaterialCode, MatId = mat.Id, Name = item.InMaterialCode, HWCountQty = item.Count, EditTime = DateTime.Now },
|
|
|
- // p => p.Code == reqDto.FeedCode && p.MatCode == item.InMaterialCode);
|
|
|
- }
|
|
|
- else
|
|
|
+ var Bominfos = new List<BillBominfo>();
|
|
|
+ var nowTime= DateTime.Now;
|
|
|
+ try
|
|
|
+ {
|
|
|
+ foreach (var item in reqDto.FeedList)
|
|
|
{
|
|
|
- var procode = string.Join('|',
|
|
|
- reqDto.FeedList.Where(p => p.OutMaterialCode == item.OutMaterialCode)
|
|
|
- .Select(p => p.InMaterialCode).OrderBy(p => p).ToList());
|
|
|
+ //var procodelist = _billBominfoRepository.GetList(p => p.MatCode == item.InMaterialCode).Select(p => p.ProCode).Distinct();
|
|
|
+
|
|
|
+ //if (procodelist.Any() && procodelist.Count() > 1)
|
|
|
+ //{
|
|
|
+ // res.ResCode = ResponseStatusCodeEnum.ErrParam.GetHashCode();
|
|
|
+ // res.ResMsg = item.InMaterialCode + "不允许率属于两个投料大类编码,接收失败";
|
|
|
+ // return res;
|
|
|
+ //}
|
|
|
+
|
|
|
+ var procode = string.Join('|', reqDto.FeedList.Where(p => p.OutMaterialCode == item.OutMaterialCode).Select(p => p.InMaterialCode).OrderBy(p => p).ToList());
|
|
|
|
|
|
var mat = _basematerrepository.GetSingle(p => p.Code == item.InMaterialCode);
|
|
|
if (mat == null)
|
|
@@ -368,20 +378,59 @@ namespace wms.service.Service
|
|
|
Name = reqDto.FeedName,
|
|
|
MatCode = item.InMaterialCode,
|
|
|
MatId = mat.Id,
|
|
|
- AddTime = DateTime.Now,
|
|
|
+ AddTime = nowTime,
|
|
|
AddWho = "wms",
|
|
|
- EditTime = DateTime.Now,
|
|
|
+ EditTime = nowTime,
|
|
|
EditWho = "wms",
|
|
|
IsStop = 0,
|
|
|
HWCountQty = item.Count,
|
|
|
ProMatCode = item.OutMaterialCode,
|
|
|
Memo = reqDto.Remark
|
|
|
};
|
|
|
- model.AddTime = DateTime.Now;
|
|
|
- _billBominfoRepository.Insert(model);
|
|
|
+ model.AddTime = nowTime;
|
|
|
+ Bominfos.Add(model);
|
|
|
}
|
|
|
}
|
|
|
+ catch (Exception ex)
|
|
|
+ {
|
|
|
+ res.ResCode = ResponseStatusCodeEnum.Fail.GetHashCode();
|
|
|
+ res.ResMsg = ex.Message;
|
|
|
+ return res;
|
|
|
+ }
|
|
|
+ try
|
|
|
+ {
|
|
|
+ _db.BeginTran();
|
|
|
+ if (_billBominfoRepository.IsAny(p => p.Code == reqDto.FeedCode))
|
|
|
+ {
|
|
|
+ var deleteResult = _billBominfoRepository.Delete(p => p.Code == reqDto.FeedCode);
|
|
|
+ if (deleteResult == false)
|
|
|
+ {
|
|
|
+ _db.RollbackTran();
|
|
|
+ res.ResCode = ResponseStatusCodeEnum.Fail.GetHashCode();
|
|
|
+ res.ResMsg = "删除旧信息失败";
|
|
|
+ return res;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ var result= _billBominfoRepository.InsertRange(Bominfos);
|
|
|
+ if (result == false)
|
|
|
+ {
|
|
|
+ _db.RollbackTran();
|
|
|
+ res.ResCode = ResponseStatusCodeEnum.Fail.GetHashCode();
|
|
|
+ res.ResMsg = "更新/新建失败";
|
|
|
+ return res;
|
|
|
+ }
|
|
|
+ _db.CommitTran();
|
|
|
+ }
|
|
|
+ catch (Exception e)
|
|
|
+ {
|
|
|
+ _db.RollbackTran();
|
|
|
+ res.ResCode = ResponseStatusCodeEnum.Fail.GetHashCode();
|
|
|
+ res.ResMsg = e.Message;
|
|
|
+ }
|
|
|
|
|
|
+ res.ResCode = ResponseStatusCodeEnum.Sucess.GetHashCode();
|
|
|
+ res.ResMsg = "更新/新建成功";
|
|
|
return res;
|
|
|
}
|
|
|
|
|
@@ -394,150 +443,162 @@ namespace wms.service.Service
|
|
|
{
|
|
|
var res = new SRes();
|
|
|
|
|
|
- //先判断是否有配方信息和物料基础信息
|
|
|
- var outmat = _basematerrepository.GetSingle(p => p.Code == reqDto.MatCode);
|
|
|
- if (outmat == null)
|
|
|
- {
|
|
|
- res.ResCode = ResponseStatusCodeEnum.ErrParam.GetHashCode();
|
|
|
- res.ResMsg = reqDto.MatCode + "不存在该物料基础信息,请先同步基础信息";
|
|
|
- return res;
|
|
|
- }
|
|
|
-
|
|
|
- var procode = string.Join('|', reqDto.FeedList.Select(p => p.InMaterialCode).OrderBy(p => p).ToList());
|
|
|
- if (reqDto.ProdFlag == 1)
|
|
|
- {
|
|
|
- var bominfo =_billBominfoRepository.GetFirst(p => p.Code == reqDto.FeedCode && p.ProMatCode == reqDto.MatCode);
|
|
|
- if (bominfo == null)
|
|
|
+ try
|
|
|
+ { //先判断是否有配方信息和物料基础信息
|
|
|
+ var outmat = _basematerrepository.GetSingle(p => p.Code == reqDto.MatCode);
|
|
|
+ if (outmat == null)
|
|
|
{
|
|
|
res.ResCode = ResponseStatusCodeEnum.ErrParam.GetHashCode();
|
|
|
- res.ResMsg = string.Format("当前产出为芯股,此芯股投料信息不存在请先同步投料信息,投料编码{0},产出物{1}", reqDto.FeedCode,
|
|
|
- reqDto.MatCode);
|
|
|
+ res.ResMsg = reqDto.MatCode + "不存在该物料基础信息,请先同步基础信息";
|
|
|
return res;
|
|
|
}
|
|
|
|
|
|
- procode = bominfo.ProCode;
|
|
|
- }
|
|
|
-
|
|
|
- BillBomsetgrp stack = null; //垛型固定获取最早更新的垛型
|
|
|
- //后续一个配方会有多个垛型
|
|
|
- if (reqDto.MatCode.StartsWith("57")) //是芯股
|
|
|
- {
|
|
|
- stack = _billBomsetgrpRepository.AsQueryable().Where(p =>
|
|
|
- (p.BomCode == procode || procode.Contains(p.BomCode)) && p.ProMaterCode.StartsWith("57") &&
|
|
|
- p.IsStop == 0).OrderBy(x => x.EditTime).First();
|
|
|
- if (stack == null)
|
|
|
+ var procode = string.Join('|', reqDto.FeedList.Select(p => p.InMaterialCode).OrderBy(p => p).ToList());
|
|
|
+ if (reqDto.ProdFlag == 1)
|
|
|
{
|
|
|
- res.ResCode = ResponseStatusCodeEnum.ErrParam.GetHashCode();
|
|
|
- res.ResMsg = string.Format("{0}该单据配方没有垛型信息,请先配置垛型,bom编码{1},bom大类编码{2},产出物料{3}", reqDto.BillCode,
|
|
|
- reqDto.FeedCode, procode, reqDto.MatCode);
|
|
|
- return res;
|
|
|
- }
|
|
|
- }
|
|
|
- else //不是芯股
|
|
|
- {
|
|
|
- stack = _billBomsetgrpRepository.GetList(p =>
|
|
|
- (p.BomCode == procode || procode.Contains(p.BomCode)) && !p.ProMaterCode.StartsWith("57") &&
|
|
|
- p.IsStop == 0).OrderBy(x => x.EditTime).First(); ;
|
|
|
+ var bominfo = _billBominfoRepository.GetFirst(p => p.Code == reqDto.FeedCode && p.ProMatCode == reqDto.MatCode);
|
|
|
+ if (bominfo == null)
|
|
|
+ {
|
|
|
+ res.ResCode = ResponseStatusCodeEnum.ErrParam.GetHashCode();
|
|
|
+ res.ResMsg = string.Format("当前产出为芯股,此芯股投料信息不存在请先同步投料信息,投料编码{0},产出物{1}", reqDto.FeedCode,
|
|
|
+ reqDto.MatCode);
|
|
|
+ return res;
|
|
|
+ }
|
|
|
|
|
|
- if (stack == null)
|
|
|
- {
|
|
|
- res.ResCode = ResponseStatusCodeEnum.ErrParam.GetHashCode();
|
|
|
- res.ResMsg = string.Format("{0}该单据配方没有垛型信息,请先配置垛型,bom编码{1},bom大类编码{2},产出物料{3}", reqDto.BillCode,
|
|
|
- reqDto.FeedCode, procode, reqDto.MatCode);
|
|
|
- return res;
|
|
|
+ procode = bominfo.ProCode;
|
|
|
}
|
|
|
- }
|
|
|
|
|
|
- var reqjson = JsonConvert.SerializeObject(reqDto);
|
|
|
- if (reqjson.Length > 5000) reqjson = "内容量过大,已截取";
|
|
|
- if (reqDto.BillState == CurtainBillState.初始化.GetHashCode().ToString() ||
|
|
|
- reqDto.BillState == CurtainBillState.已合并.GetHashCode().ToString() ||
|
|
|
- reqDto.BillState == CurtainBillState.已排产.GetHashCode().ToString())
|
|
|
- {
|
|
|
- var doc = _billdocrepository.GetSingle(p => p.DocsNo == reqDto.BillCode);
|
|
|
- if (doc == null)
|
|
|
+ BillBomsetgrp stack = null; //垛型固定获取最早更新的垛型
|
|
|
+ //后续一个配方会有多个垛型
|
|
|
+ if (reqDto.MatCode.StartsWith("57")) //是芯股
|
|
|
{
|
|
|
- doc = new BillDocsinfo();
|
|
|
- doc.WarehouseId = 0;
|
|
|
- doc.ReqNo = reqDto.BillCode;
|
|
|
- doc.DocsNo = reqDto.BillCode;
|
|
|
- doc.TypeNum = DocType.DocType_FJ_CurtainProduction.GetHashCode();
|
|
|
- doc.StateNum = DocState.DocState_Create.GetHashCode();
|
|
|
- doc.JsonContent = reqjson;
|
|
|
- doc.DownQty = 1;
|
|
|
- doc.IsStop = 0;
|
|
|
- doc.BomCode = reqDto.FeedCode;
|
|
|
- doc.ProMaterCode = reqDto.MatCode;
|
|
|
- doc.SetGrpCode = stack.Code;
|
|
|
- doc.WorkOrder = reqDto.WorkOrder;
|
|
|
- doc.SkuCode = reqDto.SkuCode;
|
|
|
- doc.PackRule = reqDto.PackRule;
|
|
|
- var docinsert = _billdocrepository.Insert(doc);
|
|
|
- if (!docinsert)
|
|
|
+ stack = _billBomsetgrpRepository.AsQueryable().Where(p =>
|
|
|
+ (p.BomCode == procode || procode.Contains(p.BomCode)) && p.ProMaterCode.StartsWith("57") &&
|
|
|
+ p.IsStop == 0).OrderBy(x => x.EditTime).First();
|
|
|
+ if (stack == null)
|
|
|
{
|
|
|
res.ResCode = ResponseStatusCodeEnum.ErrParam.GetHashCode();
|
|
|
- res.ResMsg = ResponseStatusCodeEnum.ErrParam.GetDescription();
|
|
|
+ res.ResMsg = string.Format("{0}该单据配方没有垛型信息,请先配置垛型,bom编码{1},bom大类编码{2},产出物料{3}", reqDto.BillCode,
|
|
|
+ reqDto.FeedCode, procode, reqDto.MatCode);
|
|
|
return res;
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
- _basemachinforepository.UpdateModelColumns(
|
|
|
- p => new BillMachinfo
|
|
|
- {
|
|
|
- ProBillCode = reqDto.BillCode, ProWorkOrder = reqDto.WorkOrder, ProSetGrpCode = stack.Code,
|
|
|
- EditTime = DateTime.Now
|
|
|
- }, p => reqDto.WbList.Contains(p.MachNo));
|
|
|
- //箱号处理
|
|
|
- //根据箱号更新装箱信息表
|
|
|
- }
|
|
|
- else if (reqDto.BillState == CurtainBillState.生产中.GetHashCode().ToString())
|
|
|
- {
|
|
|
- var doc = _billdocrepository.GetSingle(p => p.DocsNo == reqDto.BillCode);
|
|
|
- if (doc == null)
|
|
|
+ else //不是芯股
|
|
|
{
|
|
|
- doc = new BillDocsinfo();
|
|
|
- doc.WarehouseId = 0;
|
|
|
- doc.ReqNo = reqDto.BillCode;
|
|
|
- doc.DocsNo = reqDto.BillCode;
|
|
|
- doc.TypeNum = DocType.DocType_FJ_CurtainProduction.GetHashCode();
|
|
|
- doc.StateNum = DocState.DocState_Execute.GetHashCode();
|
|
|
- doc.JsonContent = reqjson;
|
|
|
- doc.DownQty = 1;
|
|
|
- doc.IsStop = 0;
|
|
|
- doc.BomCode = reqDto.FeedCode;
|
|
|
- doc.ProMaterCode = reqDto.MatCode;
|
|
|
- doc.SetGrpCode = stack.Code;
|
|
|
- doc.WorkOrder = reqDto.WorkOrder;
|
|
|
- doc.SkuCode = reqDto.SkuCode;
|
|
|
- doc.PackRule = reqDto.PackRule;
|
|
|
- var docinsert = _billdocrepository.Insert(doc);
|
|
|
- if (!docinsert)
|
|
|
+ stack = _billBomsetgrpRepository.GetList(p =>
|
|
|
+ (p.BomCode == procode || procode.Contains(p.BomCode)) && !p.ProMaterCode.StartsWith("57") &&
|
|
|
+ p.IsStop == 0).OrderBy(x => x.EditTime).FirstOrDefault(); ;
|
|
|
+
|
|
|
+ if (stack == null)
|
|
|
{
|
|
|
res.ResCode = ResponseStatusCodeEnum.ErrParam.GetHashCode();
|
|
|
- res.ResMsg = ResponseStatusCodeEnum.ErrParam.GetDescription();
|
|
|
+ res.ResMsg = string.Format("{0}该单据配方没有垛型信息,请先配置垛型,bom编码{1},bom大类编码{2},产出物料{3}", reqDto.BillCode,
|
|
|
+ reqDto.FeedCode, procode, reqDto.MatCode);
|
|
|
return res;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- var state = DocState.DocState_Execute.GetHashCode();
|
|
|
- _billdocrepository.UpdateModelColumns(
|
|
|
- p => new BillDocsinfo { StateNum = state, SetGrpCode = stack.Code },
|
|
|
- p => p.DocsNo == reqDto.BillCode);
|
|
|
- _basemachinforepository.UpdateModelColumns(
|
|
|
- p => new BillMachinfo
|
|
|
- {
|
|
|
- BillCode = reqDto.BillCode, WorkOrder = reqDto.WorkOrder, SetGrpCode = stack.Code,
|
|
|
- EditTime = DateTime.Now
|
|
|
- }, p => reqDto.WbList.Contains(p.MachNo));
|
|
|
- //箱号处理
|
|
|
- //根据箱号更新装箱信息表
|
|
|
+ var reqjson = JsonConvert.SerializeObject(reqDto);
|
|
|
+ if (reqjson.Length > 5000) reqjson = "内容量过大,已截取";
|
|
|
+ if (reqDto.BillState == CurtainBillState.初始化.GetHashCode().ToString() ||
|
|
|
+ reqDto.BillState == CurtainBillState.已合并.GetHashCode().ToString() ||
|
|
|
+ reqDto.BillState == CurtainBillState.已排产.GetHashCode().ToString())
|
|
|
+ {
|
|
|
+ var doc = _billdocrepository.GetSingle(p => p.DocsNo == reqDto.BillCode);
|
|
|
+ if (doc == null)
|
|
|
+ {
|
|
|
+ doc = new BillDocsinfo();
|
|
|
+ doc.WarehouseId = 0;
|
|
|
+ doc.ReqNo = reqDto.BillCode;
|
|
|
+ doc.DocsNo = reqDto.BillCode;
|
|
|
+ doc.TypeNum = DocType.DocType_FJ_CurtainProduction.GetHashCode();
|
|
|
+ doc.StateNum = DocState.DocState_Create.GetHashCode();
|
|
|
+ doc.JsonContent = reqjson;
|
|
|
+ doc.DownQty = 1;
|
|
|
+ doc.IsStop = 0;
|
|
|
+ doc.BomCode = reqDto.FeedCode;
|
|
|
+ doc.ProMaterCode = reqDto.MatCode;
|
|
|
+ doc.SetGrpCode = stack.Code;
|
|
|
+ doc.WorkOrder = reqDto.WorkOrder;
|
|
|
+ doc.SkuCode = reqDto.SkuCode;
|
|
|
+ doc.PackRule = reqDto.PackRule;
|
|
|
+ var docinsert = _billdocrepository.Insert(doc);
|
|
|
+ if (!docinsert)
|
|
|
+ {
|
|
|
+ res.ResCode = ResponseStatusCodeEnum.ErrParam.GetHashCode();
|
|
|
+ res.ResMsg = ResponseStatusCodeEnum.ErrParam.GetDescription();
|
|
|
+ return res;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ _basemachinforepository.UpdateModelColumns(
|
|
|
+ p => new BillMachinfo
|
|
|
+ {
|
|
|
+ ProBillCode = reqDto.BillCode,
|
|
|
+ ProWorkOrder = reqDto.WorkOrder,
|
|
|
+ ProSetGrpCode = stack.Code,
|
|
|
+ EditTime = DateTime.Now
|
|
|
+ }, p => reqDto.WbList.Contains(p.MachNo));
|
|
|
+ //箱号处理
|
|
|
+ //根据箱号更新装箱信息表
|
|
|
+ }
|
|
|
+ else if (reqDto.BillState == CurtainBillState.生产中.GetHashCode().ToString())
|
|
|
+ {
|
|
|
+ var doc = _billdocrepository.GetSingle(p => p.DocsNo == reqDto.BillCode);
|
|
|
+ if (doc == null)
|
|
|
+ {
|
|
|
+ doc = new BillDocsinfo();
|
|
|
+ doc.WarehouseId = 0;
|
|
|
+ doc.ReqNo = reqDto.BillCode;
|
|
|
+ doc.DocsNo = reqDto.BillCode;
|
|
|
+ doc.TypeNum = DocType.DocType_FJ_CurtainProduction.GetHashCode();
|
|
|
+ doc.StateNum = DocState.DocState_Execute.GetHashCode();
|
|
|
+ doc.JsonContent = reqjson;
|
|
|
+ doc.DownQty = 1;
|
|
|
+ doc.IsStop = 0;
|
|
|
+ doc.BomCode = reqDto.FeedCode;
|
|
|
+ doc.ProMaterCode = reqDto.MatCode;
|
|
|
+ doc.SetGrpCode = stack.Code;
|
|
|
+ doc.WorkOrder = reqDto.WorkOrder;
|
|
|
+ doc.SkuCode = reqDto.SkuCode;
|
|
|
+ doc.PackRule = reqDto.PackRule;
|
|
|
+ var docinsert = _billdocrepository.Insert(doc);
|
|
|
+ if (!docinsert)
|
|
|
+ {
|
|
|
+ res.ResCode = ResponseStatusCodeEnum.ErrParam.GetHashCode();
|
|
|
+ res.ResMsg = ResponseStatusCodeEnum.ErrParam.GetDescription();
|
|
|
+ return res;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ var state = DocState.DocState_Execute.GetHashCode();
|
|
|
+ _billdocrepository.UpdateModelColumns(
|
|
|
+ p => new BillDocsinfo { StateNum = state, SetGrpCode = stack.Code },
|
|
|
+ p => p.DocsNo == reqDto.BillCode);
|
|
|
+ _basemachinforepository.UpdateModelColumns(
|
|
|
+ p => new BillMachinfo
|
|
|
+ {
|
|
|
+ BillCode = reqDto.BillCode,
|
|
|
+ WorkOrder = reqDto.WorkOrder,
|
|
|
+ SetGrpCode = stack.Code,
|
|
|
+ EditTime = DateTime.Now
|
|
|
+ }, p => reqDto.WbList.Contains(p.MachNo));
|
|
|
+ //箱号处理
|
|
|
+ //根据箱号更新装箱信息表
|
|
|
+ }
|
|
|
+ else if (reqDto.BillState == CurtainBillState.生产结束.GetHashCode().ToString() ||
|
|
|
+ reqDto.BillState == CurtainBillState.计划关闭.GetHashCode().ToString())
|
|
|
+ {
|
|
|
+ var state = DocState.DocState_Complete.GetHashCode();
|
|
|
+ _billdocrepository.UpdateModelColumns(p => new BillDocsinfo { StateNum = state },
|
|
|
+ p => p.DocsNo == reqDto.BillCode);
|
|
|
+ }
|
|
|
}
|
|
|
- else if (reqDto.BillState == CurtainBillState.生产结束.GetHashCode().ToString() ||
|
|
|
- reqDto.BillState == CurtainBillState.计划关闭.GetHashCode().ToString())
|
|
|
+ catch (Exception ex)
|
|
|
{
|
|
|
- var state = DocState.DocState_Complete.GetHashCode();
|
|
|
- _billdocrepository.UpdateModelColumns(p => new BillDocsinfo { StateNum = state },
|
|
|
- p => p.DocsNo == reqDto.BillCode);
|
|
|
+ res.ResCode = ResponseStatusCodeEnum.Fail.GetHashCode();
|
|
|
+ res.ResMsg = ex.StackTrace;
|
|
|
+ return res;
|
|
|
}
|
|
|
|
|
|
return res;
|