1
zrg
2024-11-06 fa997057189d83a4dacb629c7e898d4b5a4d867f
WebAPI/Controllers/Sc_AssemblyBillController.cs
@@ -1,4 +1,6 @@
using System;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
@@ -24,6 +26,7 @@
        Int64 sCPMaterID = 0;
        string sCPMaterName = "";
        private json objjson = new json();
        SQLHelper.ClsCN oCN = new SQLHelper.ClsCN();
        //扫描成品条码
        [Route("Assembly/Get_Assembly_CPBarCode_Json")]
@@ -174,13 +177,258 @@
        }
        #region  产线组装追溯单
        [Route("Sc_AssemblyBill/HBardCodeList")]
        [HttpGet]
        public object HBardCodeList(string HBarCode, string user,string HICMOBillNo)
        {
            try
            {
                //查看权限
                if (!DBUtility.ClsPub.Security_Log("Sc_AssemblyBill_Edit", 1, false, user))
                {
                    objjson.code = "0";
                    objjson.count = 0;
                    objjson.Message = "无保存权限!";
                    objjson.data = null;
                    return objjson;
                }
                if (HICMOBillNo == "" || HICMOBillNo == null)
                {
                    ds = oCN.RunProcReturn(@"select  bard.HSourceInterID,bard.HSourceEntryID,b.FMUSTQTY,a.FMOBILLNO,FERPCLSID,t5.FNAME HMaterName_z,t5.FSPECIFICATION HMaterModel_z ,m.HItemID,b.FMATERIALID,m.HName HMaterName,m.HNumber HMaterNumber,m.HModel HMaterModel,m1.HItemID HMaterID
from AIS20210811135644..T_PRD_PPBOM a
join AIS20210811135644..T_PRD_PPBOMENTRY b on a.FID = b.FID
join AIS20210811135644..T_BD_MATERIAL t3 on a.FMATERIALID = t3.FMATERIALID
join AIS20210811135644..T_BD_MATERIAL t31 on b.FMATERIALID = t31.FMATERIALID
join AIS20210811135644..T_BD_MATERIAL_L t5 on b.FMATERIALID = t5.FMATERIALID and FLOCALEID=2052
join AIS20210811135644..t_BD_MaterialBase t4 on t5.FMATERIALID = t4.FMATERIALID
join Gy_BarCodeBill bard on a.FMOBILLNO=bard.HSourceBillNo
join Gy_Material m on bard.HMaterID=m.HItemID and t3.FNUMBER=m.HNumber
join Gy_Material m1 on t31.FNUMBER=m1.HNumber and t31.FUSEORGID=m1.HUSEORGID
where bard.HBarCode='" + HBarCode + "'  AND t4.FERPCLSID in ('1', '3')", "Gy_BarCodeBill");
                    if (ds.Tables[0].Rows.Count == 0)
                    {
                        objjson.code = "0";
                        objjson.count = 0;
                        objjson.Message = "请先扫产品条码!";
                        objjson.data = null;
                        return objjson;
                    }
                    else
                    {
                        objjson.code = "1";
                        objjson.count = 1;
                        objjson.Message = "";
                        objjson.data = ds.Tables[0];
                    }
                }
                else
                {
                    ds = oCN.RunProcReturn(@"select  a.FMOBILLNO,FERPCLSID ,t4.FMATERIALID, a.FMATERIALID from AIS20210811135644..T_PRD_PPBOM a
                    join AIS20210811135644..T_PRD_PPBOMENTRY b on a.FID=b.FID
                    JOIN AIS20210811135644..T_BD_MATERIAL T6 ON b.FMATERIALID = T6.FMATERIALID
                    join AIS20210811135644..t_BD_MaterialBase t4 on b.FMATERIALID = t4.FMATERIALID
                    left join Gy_Material m on t6.FNUMBER=m.HNumber and m.HUSEORGID=a.FPRDORGID
                    where a.FMOBILLNO ='" + HICMOBillNo + "' and m.HItemID=(select HMaterID from Gy_BarCodeBill where HBarCode = '" + HBarCode + "' )", "ds2");
                    if (ds.Tables[0].Rows.Count == 0)
                    {
                        objjson.code = "0";
                        objjson.count = 0;
                        objjson.Message = "配件不属于该生产订单!";
                        objjson.data = null;
                        return objjson;
                    }
                    ds = oCN.RunProcReturn(@"select  HQty,HSourceBillNo,m.HName HMaterName,m.HItemID HMaterID from Gy_BarCodeBill bard
join Gy_Material m on bard.HMaterID=m.HItemID
where  HBarCode='" + HBarCode + "'", "ds3");
                    objjson.code = "1";
                    objjson.count = 1;
                    objjson.Message = "";
                    objjson.data = ds.Tables[0];
                }
                return objjson;
            }
            catch (Exception e)
            {
                objjson.code = "0";
                objjson.count = 0;
                objjson.Message = "没有返回任何记录!" + e.ToString();
                objjson.data = null;
                return objjson;
            }
        }
        #endregion
        #region 产线组装追溯单保存
        [Route("Sc_AssemblyBill/AddBill")]
        [HttpPost]
        public object AddBill([FromBody] JObject sMainSub)
        {
            var _value = sMainSub["sMainSub"].ToString();
            string msg1 = _value.ToString();
            oCN.BeginTran();
            //保存主表
            objjson = AddBillMain(msg1);
            if (objjson.code == "0")
            {
                oCN.RollBack();
                objjson.code = "0";
                objjson.count = 0;
                objjson.Message = objjson.Message;
                objjson.data = null;
                return objjson;
            }
            oCN.Commit();
            objjson.code = "1";
            objjson.count = 1;
            objjson.Message = "新增单据成功!";
            objjson.data = null;
            return objjson;
        }
        Models.ClsSc_AssemblyBillMain omodel = new Models.ClsSc_AssemblyBillMain();//基本资料
        public json AddBillMain(string msg1)
        {
            string[] sArray = msg1.Split(new string[] { ";" }, StringSplitOptions.RemoveEmptyEntries);
            string msg2 = sArray[0].ToString();
            string msg3 = sArray[1].ToString();
            int OperationType = int.Parse(sArray[2].ToString());//类型
            string user = sArray[3].ToString();//用户名
            try
            {
                //判断是否有编辑权限
                if (!DBUtility.ClsPub.Security_Log("Sc_AssemblyBill_Edit", 1, false, user))
                {
                    objjson.code = "0";
                    objjson.count = 0;
                    objjson.Message = "无权限编辑!";
                    objjson.data = null;
                    return objjson;
                }
                omodel = Newtonsoft.Json.JsonConvert.DeserializeObject<ClsSc_AssemblyBillMain>(msg2);
                //JSON序列化转换字典集合
                List<Dictionary<string, string>> list = new List<Dictionary<string, string>>();
                List<object> jb = JsonConvert.DeserializeObject<List<object>>(msg3);
                foreach (JObject item in jb)
                {
                    Dictionary<string, string> dic = new Dictionary<string, string>();
                    foreach (var itm in item.Properties())
                    {
                        dic.Add(itm.Name, itm.Value.ToString());
                    }
                    list.Add(dic);
                }
                if (OperationType == 1)//新增临时表源单表
                {
                    for (int i = 0; i < list.Count; i++)
                    {
                        //临时配件表
                        oCN.RunProc("Insert Into Sc_AssemblyBill_BindSourceTemp   " +
                        "(HInterID,HEntryID,HBillNo_bak,HSourceBillNo,HSourceInterID,HMaterID" +
                        ",HQtyMust,HProdOrgID,HSourceEntryID,HSourceBillType,HAuxPropID,HProcID,HQty,HBatchNo,HMTONo,HPlanMode) " +
                        " values(" + omodel.HInterID.ToString() + "," + (i+1) + ",'" + omodel.HBillNo.ToString() + "','" + omodel.HICMOBillNo.ToString() + "',0," + list[i]["HMaterID"].ToString() +
                        ",'" + list[i]["HQty"].ToString() + "','" + list[i]["HPRDORGID"].ToString() + "',0,'',0,0,0,'','','') ");
                    }
                }
                else if (OperationType == 2)//新增配件扫码表
                {
                    for (int i = 0; i < list.Count; i++)
                    {
                        if (list[i]["HBarCode"].ToString() != "")
                        {
                            ds = oCN.RunProcReturn("select * from Sc_AssemblyBill_BindBarCodeTemp where HSourceBillNo='" + omodel.HICMOBillNo.ToString() + "' and HBarCode='" + list[i]["HBarCode"].ToString() + "' and HBillNo_bak='" + omodel.HBillNo.ToString() + "'", "Sc_AssemblyBill_BindBarCodeTemp");
                            if (ds.Tables[0].Rows.Count > 0) {
                                objjson.code = "0";
                                objjson.count = 0;
                                objjson.Message ="该条码已扫入,无须再扫!";
                                objjson.data = null;
                                return objjson;
                            }
                            //临时记录表
                            oCN.RunProc("Insert Into Sc_AssemblyBill_BindBarCodeTemp   " +
                            "(HInterID,HEntryID,HBillNo_bak,HSourceBillNo,HSourceInterID,HMaterID" +
                            ",HBarCode,HQty,HProdOrgID,HSourceEntryID,HSourceBillType,HAuxPropID,HProcID,HBatchNo,HMTONo,HPlanMode) " +
                            " values(" + omodel.HInterID.ToString() + "," + (i + 1) + ",'" + omodel.HBillNo.ToString() + "','" + omodel.HICMOBillNo.ToString() + "',0," + list[i]["HMaterID"].ToString() +
                            ",'" + list[i]["HBarCode"].ToString() + "','" + list[i]["HEQty"].ToString() + "','" + list[i]["HPRDORGID"].ToString() + "',0,'',0,0,'','','') ");
                        }
                    }
                }
                else if (OperationType == 3)//新增主子表
                {
                    //保存生产组装单主表
                    string sql = $@"Insert Into Sc_AssemblyBillMain(HYear,HPeriod,HBillType,HBillSubType,HInterID,HDate
,HBillNo,HBillStatus,HMaker,HMakeDate,HMainSourceInterID,HMainSourceEntryID,HMainSourceBillNo
,HICMOInterID,HICMOBillNo,HBarCode_P,HMaterID,HUnitID,HAssemblyStatus,HProdOrgID)
values('{DateTime.Now.Year}','{DateTime.Now.Month}','3727','3727',{omodel.HInterID.ToString()},getdate()
,'{omodel.HBillNo.ToString()}','1','{user}',getdate(),{omodel.HICMOInterID.ToString()},{omodel.HICMOEntryID.ToString()},'{omodel.HICMOBillNo.ToString()}'
,{omodel.HICMOInterID.ToString()},'{omodel.HICMOBillNo.ToString()}','{omodel.HBarCode_P.ToString()}',{omodel.HMaterID},0,'{omodel.HAssemblyStatus}',{omodel.HProdOrgID})";
                    oCN.RunProc(sql);
                    ds = oCN.RunProcReturn("select * from Sc_AssemblyBill_BindBarCodeTemp where HSourceBillNo='" + omodel.HICMOBillNo.ToString() + "' and HInterID='" + omodel.HInterID + "' and HBillNo_bak='" + omodel.HBillNo.ToString() + "'", "Sc_AssemblyBill_BindBarCodeTemp");
                    for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
                    {
                        int HMaterID = int.Parse(ds.Tables[0].Rows[i]["HMaterID"].ToString());
                        double HQty = double.Parse(ds.Tables[0].Rows[i]["HQty"].ToString());
                        string HBarCode = ds.Tables[0].Rows[i]["HBarCode"].ToString();
                        string sq2 = $@"Insert Into Sc_AssemblyBillSub(HInterID,HBillNo_bak,HEntryID,HSourceInterID,HSourceEntryID,HSourceBillNo
,HSourceBillType,HMaterID,HSourceID,HEquipID,HUnitID,HQty
,HGroupID,HWorkerID,HScanDate,HBarCode,HBarCode_P,HSNNumber)
values({omodel.HInterID},'{omodel.HBillNo}',{(i + 1)},0,0,''
,'',{HMaterID},0,0,0,{HQty}
,0,0,getdate(),'{HBarCode}','{omodel.HBarCode_P}','') ";
                        oCN.RunProc(sq2);
                    }
                }
                objjson.code = "1";
                objjson.count = 1;
                objjson.Message = null;
                objjson.data = null;
                return objjson;
            }
            catch (Exception e)
            {
                objjson.code = "0";
                objjson.count = 0;
                objjson.Message = "Exception!" + e.ToString();
                objjson.data = null;
                return objjson;
            }
        }
        #endregion
        #region 产线组装追溯单 查询
        [Route("Sc_AssemblyBill/Sc_AssemblyBillAddList")]
        [HttpGet]
        public object Sc_AssemblyBillAddList(string sWhere)
        {
            try
            {
                ds = oCN.RunProcReturn(@"select * from  h_v_Sc_AssemblyBillList where 1=1  " + sWhere, "h_v_Sc_AssemblyBillList");
                objjson.code = "1";
                objjson.count = 1;
                objjson.Message = "";
                objjson.data = ds.Tables[0];
                return objjson;
            }
            catch (Exception e)
            {
                objjson.code = "0";
                objjson.count = 0;
                objjson.Message = "没有返回任何记录!" + e.ToString();
                objjson.data = null;
                return objjson;
            }
        }
        #endregion
        [Route("Assembly/Delete_Json")]
        [HttpGet]