啊鑫
2024-12-02 bdf5a76a8eab8304176a1379a175e2248fa90ca7
采购退料扫码
已修改2个文件
122 ■■■■ 文件已修改
Dto/service/Material.cs 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
service/Warehouse/MesInvItemOutsManager.cs 112 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Dto/service/Material.cs
@@ -3,10 +3,18 @@
public class Material
{
    public string? FMaterialId { get; set; }
    public string? FUintId { get; set; }
    public decimal? FActReceiveQty { get; set; }
    public string? FStockId { get; set; }
    public string? FsrcEntryId { get; set; }
    public DateTime? FPreDeliveryDate { get; set; }
    public Guid? F_MES_ENTRYID { get; set; }
    public Guid? FSRCENTRYGuid { get; set; }
    public string? FLot { get; set; }
    public string? FRMREALQTY { get; set; }
    public string? FUINT { get; set; }
    public string? FsrcEntryId { get; set; }
    public string? FRealQty { get; set; }
service/Warehouse/MesInvItemOutsManager.cs
@@ -2,6 +2,7 @@
using NewPdaSqlServer.Dto.service;
using NewPdaSqlServer.entity;
using NewPdaSqlServer.util;
using Newtonsoft.Json;
using SqlSugar;
namespace NewPdaSqlServer.service.Warehouse;
@@ -376,14 +377,15 @@
    {
        var message = MesToErpParam(query);
        // var executeReturnIdentity =
        //     Db.Insertable(message).ExecuteReturnIdentity();
        // if (executeReturnIdentity > 0)
        // {
        //     message.Id = executeReturnIdentity;
        //     message.Pid = executeReturnIdentity;
        //     return message;
        // }
        var newGuid = Guid.NewGuid();
        message.Guid = newGuid;
        message.Pid = newGuid;
        var executeReturnIdentity =
            Db.Insertable(message).IgnoreColumns(true).ExecuteCommand();
        if (executeReturnIdentity > 0)
        {
            return message;
        }
        throw new Exception("获取数据失败");
    }
@@ -415,7 +417,10 @@
        if (mesInvItemStocks == null) return dto;
        dto.ItemNo = mesInvItemStocks.ItemNo;
        var mesItems = Db.Queryable<MesItems>()
            .Where(s => s.Id == mesInvItemStocks.ItemId).Single();
        dto.ItemNo = mesItems.ItemNo;
        dto.Quantity = mesInvItemStocks.Quantity;
        return dto;
@@ -443,6 +448,7 @@
            .Where((b, bar, c, d) => b.ItemOutId == parsedGuid)
            .Select((b, bar, c, d) => new MesInvItemOutCDetails
            {
                Guid = b.Guid,
                Quantity = b.Quantity,
                DepotSectionCode = b.DepotSectionCode,
                DepotCode = b.DepotCode,
@@ -464,12 +470,12 @@
        var tableName = "MES_INV_ITEM_OUTS_" + query.Type;
        if ("A".Equals(query.Type))
        {
            //erpParameters = GetErpParameters(query.billNo);
            erpParameters = GetErpParameters(query.id);
            title = "采购退货单" + query.billNo + "审核";
        }
        else if ("B".Equals(query.Type))
        {
            //erpParameters = GetDeApprovePam(query.id);
            erpParameters = GetDeApprovePam(query.id);
            title = "采购退货单" + query.billNo + "反审核";
        }
@@ -492,6 +498,72 @@
            ContentType = "application/x-www-form-urlencoded"
        };
        return message;
    }
    private string GetErpParameters(string? id)
    {
        var guid = Guid.Empty;
        if (string.IsNullOrEmpty(id)) return "";
        var isValid = Guid.TryParse(id, out guid);
        if (!isValid)
            throw new ApplicationException("GUID转换错误");
        var materials = Db
            .Queryable<MesInvItemOuts, MesInvItemOutItems,
                MesItems, MesUnit, MesInvItemArnDetail, MesDepots>(
                (a, b, c, d, e, f) => new JoinQueryInfos(
                    JoinType.Left, a.Guid == b.ItemOutId,
                    JoinType.Left, b.ItemId == c.Id,
                    JoinType.Left, d.Id.ToString() == c.ItemUnit,
                    JoinType.Left,
                    e.CbillNo == b.WorkNo && e.ItemId == b.ItemId,
                    JoinType.Left, f.DepotId == a.DepotId
                )).Where((a, b, c, d, e, f) => b.Guid == guid)
            .Select<Material>((a, b, c, d, e, f) => new Material
            {
                FMaterialId = c.ItemNo,
                FRMREALQTY = b.Quantity.ToString(),
                FStockId = f.DepotCode,
                FUnitID = d.Fnumber,
                FLot = b.WorkNo,
                F_MES_ENTRYID = b.Guid,
                FsrcEntryId = e.Guid.ToString(),
            }).ToList();
        var mm = Db.Queryable<MesInvItemOuts>()
            .Where(a => a.Guid == guid).First();
        var jsonEntries = materials.Select(d => new
        {
            FMaterialId = d.FMaterialId,
            FRMREALQTY = d.FRMREALQTY,
            FStockId = d.FStockId,
            FUnitID = d.FUnitID,
            FLot = d.FLot,
            F_MES_ENTRYID = d.F_MES_ENTRYID.ToString(),
            FsrcEntryId = d.FsrcEntryId,
        }).ToList();
        var fdate = DateTime.Now.ToString("yyyy-MM-dd");
        var jsonString = JsonConvert.SerializeObject(jsonEntries);
        var encodedUrl = "taskname=CGTL&mesid=" + guid +
                         "&optype=create&datajson={\"F_MES_ID\":\"" + guid
                         + "\",\"FDate\":\"" + fdate
                         + "\",\"FSRCBillTypeId\":\"" + "采购入库单"
                         + "\",\"FDESCRIPTION\":\"" + mm.Remark
                         + "\",\"FMRMODE\":\"" + mm.Fmrmode
                         + "\",\"cgtlentry\":" + jsonString
                         + "}";
        return encodedUrl;
    }
    private string GetDeApprovePam(string? id)
    {
        var encodedUrl = "taskname=CGTL&mesid=" + id +
                         "&optype=delete&datajson={}";
        return encodedUrl;
    }
    public bool ScanCode(WarehouseQuery query)
@@ -582,17 +654,15 @@
        sql = string.Format(@"
                SELECT SUM(C.QUANTITY) AS SQ_QTY, SUM(D.QUANTITY_OK) AS OK_QTY
                FROM MES_INV_ITEM_OUT_ITEMS C
                LEFT JOIN (
                    SELECT ITEM_OUT_ID, ITEM_NO, PBILL_NO, RK_NO, SUM(QUANTITY) AS QUANTITY_OK
            FROM MES_INV_ITEM_OUT_ITEMS C
         LEFT JOIN (SELECT ITEM_OUT_ID, ITEM_ID, PBILL_NO, RK_NO, SUM(QUANTITY) AS QUANTITY_OK
                    FROM MES_INV_ITEM_OUT_C_DETAILS
                    GROUP BY ITEM_OUT_ID, ITEM_NO, PBILL_NO, RK_NO
                ) D
                ON D.ITEM_OUT_ID = C.ITEM_OUT_ID
                AND D.ITEM_NO = C.ITEM_NO
                AND D.RK_NO = C.RK_NO
                AND isnull(C.PBILL_NO, '0') = isnull(D.PBILL_NO, '0')
                WHERE C.ITEM_OUT_ID = '{0}'", mesInvItemOuts.Guid);
                    GROUP BY ITEM_OUT_ID, ITEM_ID, PBILL_NO, RK_NO) D
                   ON D.ITEM_OUT_ID = C.ITEM_OUT_ID
                       AND D.ITEM_ID = C.ITEM_ID
                       AND isnull(C.PBILL_NO, '0') = isnull(D.PBILL_NO, '0')
                    WHERE C.ITEM_OUT_ID = '{0}'",
            mesInvItemOuts.Guid);
        var queryResult = Db.Ado.SqlQuerySingle<dynamic>(sql);