Преглед изворни кода

替代方案更新后同步处理基础数据。

tangdi пре 2 година
родитељ
комит
85ee8f28f9

+ 43 - 5
MicroServices/Business/Business.Application/ResourceExamineManagement/ResourceExamineAppService.cs

@@ -4277,7 +4277,7 @@ namespace Business.ResourceExamineManagement
         /// <returns></returns>
         public async Task<string> SubstituteSave(SubstituteDto dto)
         {
-            var rst = SubstituteSaveSync(dto).Result;
+            var rst = SubstituteSaveHandle(dto).Result;
             if (rst == "ok")
             {
                 //如果保存成功,则同步到mongodb。
@@ -4336,7 +4336,7 @@ namespace Business.ResourceExamineManagement
         /// </summary>
         /// <param name="dto"></param>
         /// <returns></returns>
-        public async Task<string> SubstituteSaveSync(SubstituteDto dto)
+        public async Task<string> SubstituteSaveHandle(SubstituteDto dto)
         {
             ic_substitute stt;
             if (dto.id == null)
@@ -4598,9 +4598,9 @@ namespace Business.ResourceExamineManagement
         /// </summary>
         /// <param name="dto"></param>
         /// <returns></returns>
-        public async Task<string> BindingSubstitute(BindingSubstituteDto dto)
+        public async Task<string> BindingSubstituteHandle(BindingSubstituteDto dto)
         {
-            var list = _mysql_ic_bom_child.GetListAsync(s => s.bom_id == dto.id && s.tenant_id == dto.tenant_id && s.company_id == dto.company_id && s.factory_id == dto.factory_id).Result;
+            var list = _mysql_ic_bom_child.GetListAsync(s => s.bom_id == dto.id && s.company_id == dto.company_id && s.factory_id == dto.factory_id).Result;
 
             if (dto.bomDetail.Any())
             {
@@ -4645,6 +4645,44 @@ namespace Business.ResourceExamineManagement
             return "ok";
         }
 
-
+        public async Task<string> BindingSubstitute(BindingSubstituteDto dto)
+        {
+            var rst = BindingSubstituteHandle(dto).Result;
+            if (rst == "ok")
+            {
+                var list = _mysql_ic_bom_child.GetListAsync(s => s.bom_id == dto.id && s.company_id == dto.company_id && s.factory_id == dto.factory_id).Result;
+                //这个产生了绑定集合,需同步至mongodb,同时清除BOM预处理,再产生新的BOM预处理
+                var moBomChild = _ic_bom_child.GetListAsync(s => s.bom_id == dto.id && s.company_id == dto.company_id && s.factory_id == dto.factory_id).Result;
+                if (moBomChild.Any())
+                {
+                    await _ic_bom_child.DeleteManyAsync(moBomChild);
+                }
+                //同步物料BOM明细数据
+                if (list.Count > 0)
+                {
+                    var moIcbom_childs = ObjectMapper.Map<List<ic_bom_child>, List<mo_ic_bom_child>>(list);
+                    moIcbom_childs.ForEach(s => s.GenerateNewId(help.NextId()));
+                    await MongoHelper<mo_ic_bom_child>.InsertManyAsync(moIcbom_childs);
+                }
+                //清除BOM预处理记录
+                var refList = _mysql_b_bom_pretreatment.GetListAsync(s => s.bom_id == dto.id && s.company_id == dto.company_id && s.factory_id == dto.factory_id).Result;
+                if (refList.Any())
+                {
+                    var refBomList = _mysql_b_bom_pretreatment.GetListAsync(s => refList.Select(c => c.sourceid).Contains(s.sourceid)).Result;
+                    if (refBomList.Any())
+                    {
+                        await _mysql_b_bom_pretreatment.DeleteManyAsync(refBomList);
+                    }
+                    var boms = _ic_bom.GetListAsync(s => refList.Select(c => c.sourceid).Contains(s.Id)).Result;
+                    if (boms.Any()) {
+                        AutoCreateBomBill(dto.company_id.ToString(), boms);
+                    }
+                }
+                return rst;
+            }
+            else {
+                return rst;
+            }
+        }
     }
 }