1
hutongqing
2024-12-12 2510ff614cd2962d2a91ec1a9eb6668009e9b671
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
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using WIDESEA_Common.OrderEnum;
using WIDESEA_Core;
using WIDESEA_Core.BaseServices;
using WIDESEA_Core.Helper;
using WIDESEA_IApprovalRepository;
using WIDESEA_ICheckRepository;
using WIDESEA_ICheckService;
using WIDESEA_Model.Models;
 
namespace WIDESEA_CheckService
{
    public class CheckOrderResultService : ServiceBase<Dt_CheckOrderResult, ICheckOrderResultRepository>, ICheckOrderResultService
    {
        private readonly ICheckOrderRepository _checkOrderRepository;
 
        public CheckOrderResultService(ICheckOrderResultRepository BaseDal, ICheckOrderRepository checkOrderRepository) : base(BaseDal)
        {
            _checkOrderRepository = checkOrderRepository;
        }
 
        public WebResponseContent CommitCheckResult(int checkOrderId, Dt_CheckOrderResult checkResult)
        {
            try
            {
                Dt_CheckOrder checkOrder = _checkOrderRepository.QueryFirst(x => x.CheckOrderId == checkOrderId);
                if (checkOrder == null)
                {
                    return WebResponseContent.Instance.Error($"未找到该质检单");
                }
                if (checkOrder.CheckOrderStatus == CheckOrderStatusEnum.Checked.ObjToInt())
                {
                    return WebResponseContent.Instance.Error($"该单据已经检验完成");
                }
                if (checkResult.Quantity < 0 || checkResult.Quantity > checkOrder.ReceivedQuantity || checkOrder.ReceivedQuantity - checkOrder.ScrappedQuantity - checkOrder.DefectedQuantity - checkOrder.ReturnQuantity < checkResult.Quantity)
                {
                    return WebResponseContent.Instance.Error($"数量输入错误");
                }
                if (checkResult.Result == CheckResultEnum.Defect.ToString())//特采
                {
                    checkOrder.DefectedNote = checkResult.Note;
                    checkOrder.DefectedQuantity += checkResult.Quantity;
                    checkOrder.QualifiedQuantity -= checkResult.Quantity;
                }
                else if (checkResult.Result == CheckResultEnum.Return.ToString())//退货
                {
                    checkOrder.DefectedNote = checkResult.Note;
                    checkOrder.ReturnQuantity += checkResult.Quantity;
                    checkOrder.QualifiedQuantity -= checkResult.Quantity;
                }
                else if (checkResult.Result == CheckResultEnum.Scrapped.ToString())//报废
                {
                    checkOrder.DefectedNote = checkResult.Note;
                    checkOrder.ScrappedQuantity += checkResult.Quantity;
                    checkOrder.QualifiedQuantity -= checkResult.Quantity;
                }
 
                checkOrder.CheckOrderStatus = CheckOrderStatusEnum.Checked.ObjToInt();
 
                Dt_CheckOrderResult checkOrderResult = new Dt_CheckOrderResult()
                {
                    Quantity = checkResult.Quantity,
                    CheckOrderId = checkOrderId,
                    DefectCode = checkResult.DefectCode,
                    Result = checkResult.Result,
                    Note = checkResult.Note
                };
                _checkOrderRepository.UpdateData(checkOrder);
                BaseDal.AddData(checkOrderResult);
                return WebResponseContent.Instance.OK();
            }
            catch (Exception ex)
            {
                return WebResponseContent.Instance.Error($"{ex.Message}");
            }
        }
    }
}