Admin
5 天以前 bd6818fc9d40f343547bafca0743658f3c0379dc
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
/*
 *所有关于Dt_quality_head类的业务代码应在此处编写
*可使用repository.调用常用方法,获取EF/Dapper等信息
*如果需要事务请使用repository.DbContextBeginTransaction
*也可使用DBServerProvider.手动获取数据库相关信息
*用户信息、权限、角色等使用UserContext.Current操作
*Dt_quality_headService对增、删、改查、导入、导出、审核业务代码扩展参照ServiceFunFilter
*/
using WIDESEA.Core.BaseProvider;
using WIDESEA.Core.Extensions.AutofacManager;
using WIDESEA.Entity.DomainModels;
using System.Linq;
using WIDESEA.Core.Utilities;
using System.Linq.Expressions;
using WIDESEA.Core.Extensions;
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.AspNetCore.Http;
using WIDESEA.Services.IRepositories;
using System;
using System.Collections.Generic;
using WIDESEA.Services.Repositories;
using WIDESEA.Common;
 
namespace WIDESEA.Services.Services
{
    public partial class Dt_quality_headService
    {
        private readonly IHttpContextAccessor _httpContextAccessor;
        private readonly IDt_quality_headRepository _repository;//访问数据库
 
        [ActivatorUtilitiesConstructor]
        public Dt_quality_headService(
            IDt_quality_headRepository dbRepository,
            IHttpContextAccessor httpContextAccessor
            )
        : base(dbRepository)
        {
            _httpContextAccessor = httpContextAccessor;
            _repository = dbRepository;
            //多租户会用到这init代码,其他情况可以不用
            //base.Init(dbRepository);
        }
 
 
        /// <summary>
        /// 删除质检信息
        /// </summary>
        /// <param name="keys"></param>
        /// <param name="delList"></param>
        /// <returns></returns>
        public override WebResponseContent Del(object[] keys, bool delList = true)
        {
            WebResponseContent content = new WebResponseContent();
            content = repository.DbContextBeginTransaction(() =>
            {
                try
                {
                    if (keys == null)
                    {
 
                        throw new Exception("请选择删除的质检信息");
                        //return content.Error("请选择删除的质检信息");
                    }
                    List<object> headIDs = new List<object>();
                    if (!repository.Exists(x => x.qualityhead_id == Guid.Parse(keys[0].ToString())))
                    {
 
                        return content.Error("该质检信息不存在!");
                    }
                    for (int i = 0; i < keys.Length; i++)
                    {
                        Dt_quality_detail quality_Detail = Dt_quality_detailRepository.Instance.FindFirst(x => x.qualitydtl_headid == keys[i].ToString());
                        string qualityHeadID = quality_Detail.qualitydtl_headid;
                        if (!headIDs.Contains(qualityHeadID))
                        {
                            headIDs.Add(qualityHeadID);
                        }
                    }
 
                    foreach (var item in headIDs)
                    {
                        List<Dt_quality_detail> details = Dt_quality_detailRepository.Instance.Find(x => x.qualitydtl_headid == item.ToString());
                        for (int i = 0; i < details.Count; i++)
                        {
                            Dt_quality_detailRepository.Instance.Delete(details[i], true);
                        }
                        var dt = Dt_quality_headRepository.Instance.Find(x => x.qualityhead_id == Guid.Parse(item.ToString()));
                        foreach (var items in dt)
                        {
                            Dt_taskinfo taskinfo = Dt_taskinfoRepository.Instance.Find(x => x.task_barcode == items.qualityhead_barcode && x.task_type.Contains(TaskType.TaskType_Quality.ToString()) && x.task_state == TaskState.TaskState_Create.ToString()).FirstOrDefault();
                            taskinfo.task_state = TaskState.TaskState_Closed.ToString();
 
                            //Dt_taskinfo_htyService.Instance.AddTaskToHistory(taskinfo);
 
                            Dt_taskinfoRepository.Instance.Delete(taskinfo);
 
 
                            Dt_locationinfo locationinfo = Dt_locationinfoRepository.Instance.FindFirst(x => x.location_id == taskinfo.task_fromlocationid.ToString());
                            locationinfo.location_state = LocationState.LocationState_Stored.ToString();
                            Dt_locationinfoRepository.Instance.Update(locationinfo, true);
 
                        }
                    }
 
                    Dt_quality_headRepository.Instance.DeleteWithKeys(headIDs.ToArray());
                    return WebResponseContent.Instance.OK(message: "删除成功");
 
                }
                catch (Exception ex)
                {
                    return content.Error(ex.Message);
                }
            });
 
            //Dt_trackloginfoService.Instance.AddTrackLog(keys, content, "删除质检信息", "", "删除质检信息");
            return base.Del(keys, delList);
        }
    }
}