1
duhe
2024-08-12 f331a2915eebc492e872206d9aa7e13fc7f0861f
WebAPI/Controllers/OtherInStockController.cs
@@ -1,5 +1,6 @@
using DBUtility;
using Model;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using SQLHelper;
using System;
@@ -14,6 +15,7 @@
using WebAPI;
using WebAPI.Code;
using WebAPI.Models;
using WebAPI.Utility;
namespace WebAPI.Controllers
{
@@ -49,6 +51,9 @@
        private JsonResult objJsonResult = new JsonResult();
        public ClsKf_ICStockBill_WMS oBar = new Model.ClsKf_ICStockBill_WMS();
        // private string msgModel = "{{\"count\":{0},\"code\":{0},\"message\":\"{1}\",\"result\":{2}}}";
        Pub_Class.ClsXt_SystemParameter oSystemParameter = new Pub_Class.ClsXt_SystemParameter();
        SQLHelper.ClsCN oCn = new SQLHelper.ClsCN();
        public static string GetSession(string sMsg)
        {
            try
@@ -70,6 +75,269 @@
        [HttpGet]
        public Object get_CheckTypeByBarCode_Json(string sCode, Int64 sInterID, string sBillNo, string sMaker, Int64 WhID, Int64 SPID, Double sQty, bool sRedBlue, bool SourceFlag, string sSourceBillNo, string sSourceType, Int64 HOWNERID)
        {
            string sErrMsg = "";
            bool bResult;
            //获取系统参数
            if (oSystemParameter.ShowBill(ref sErrMsg) == true)
            {
                if (oSystemParameter.omodel.WMS_CampanyName == "森楷") //系统参数  客户定制化名称     空白为通用
                {
                    DataSet ds;
                    string sql = "select HBarCode,HSourceInterID,HSourceEntryID,HSourceBillNo from Gy_BarCodeBill with(nolock) where HBarCode = '" + sCode + "'";
                    string HDataBaseName = Util.GetConfigKey(AppDomain.CurrentDomain.BaseDirectory + "/Config/kdapi.config", "DataBaseName");//获取金蝶数据库名称
                    string HSourceBillNo = "";
                    Int64 HSourceInterID = 0;
                    ds = oCn.RunProcReturn(sql, "Gy_BarCodeBill");
                    //判断条码信息是否在条码档案中
                    if (ds == null || ds.Tables[0].Rows.Count < 1)
                    {
                        objJsonResult.code = "0";
                        objJsonResult.count = 0;
                        objJsonResult.Message = "条码档案中不存在条码编号:" + sCode;
                        objJsonResult.data = null;
                        return objJsonResult;
                    }
                    else
                    {
                        //获取入库申请单单号/主ID
                        HSourceBillNo = DBUtility.ClsPub.isStrNull(ds.Tables[0].Rows[0]["HSourceBillNo"]);
                        HSourceInterID = DBUtility.ClsPub.isInt(ds.Tables[0].Rows[0]["HSourceInterID"]);
                        //根据入库申请单单号判断单据信息是否已经同步到金蝶
                        sql = string.Format(@"select * from FROM {0}..T_STK_MISCELLANEOUS with(nolock) where FBILLNO = '" + HSourceBillNo + "'", HDataBaseName);
                        ds = oCn.RunProcReturn(sql, "T_STK_MISCELLANEOUS");
                        //入库申请单没有同步到金蝶则进行同步
                        if (ds == null || ds.Tables[0].Rows.Count < 1)
                        {
                            sql = "exec h_p_Kf_StockInRequestBillToErp " + HSourceInterID + "," + HSourceBillNo;
                            ds = oCn.RunProcReturn(sql, "h_p_Kf_StockInRequestBillToErp");
                            if (ds == null || ds.Tables[0].Rows.Count == 0)
                            {
                                oCn.RollBack();
                                objJsonResult.code = "0";
                                objJsonResult.count = 0;
                                objJsonResult.Message = "webapi入库申请单同步,获取信息失败";
                                objJsonResult.data = null;
                                return objJsonResult;
                            }
                            else
                            {
                                JObject model = new JObject();
                                model.Add("FBillType", new JObject() { ["FNumber"] = Pub_Class.ClsPub.isStrNull(ds.Tables[0].Rows[0]["FBillType"]) }); //单据类型
                                model.Add("FDate", Pub_Class.ClsPub.isStrNull(ds.Tables[0].Rows[0]["日期"])); //单据日期
                                model.Add("FStockOrgId", new JObject() { ["FNumber"] = Pub_Class.ClsPub.isStrNull(ds.Tables[0].Rows[0]["库存组织代码"]) }); //库存组织代码
                                model.Add("FBillNo", HSourceBillNo); //单据号
                                model.Add("FStockDirect", Pub_Class.ClsPub.isStrNull(ds.Tables[0].Rows[0]["库存方向"])); //库存方向
                                model.Add("FDEPTID", new JObject() { ["FNumber"] = Pub_Class.ClsPub.isStrNull(ds.Tables[0].Rows[0]["部门代码"]) }); //生产车间
                                model.Add("F_paez_Text", Pub_Class.ClsPub.isStrNull(ds.Tables[0].Rows[0]["入库码单"])); //入库码单
                                model.Add("F_paez_Integer2", Pub_Class.ClsPub.isStrNull(ds.Tables[0].Rows[0]["筒子数"])); //筒子数
                                model.Add("F_paez_Integer1", Pub_Class.ClsPub.isStrNull(ds.Tables[0].Rows[0]["筒管只数"])); //筒管只数
                                model.Add("F_paez_Integer3", Pub_Class.ClsPub.isStrNull(ds.Tables[0].Rows[0]["定长"])); //定长
                                model.Add("F_paez_BaseProperty4", Pub_Class.ClsPub.isStrNull(ds.Tables[0].Rows[0]["筒重"])); //筒重
                                model.Add("F_paez_Base", Pub_Class.ClsPub.isStrNull(ds.Tables[0].Rows[0]["工号"])); //工号
                                model.Add("F_paez_Combo", Pub_Class.ClsPub.isStrNull(ds.Tables[0].Rows[0]["班次代码"])); //班次
                                model.Add("F_paez_BaseProperty1", Pub_Class.ClsPub.isStrNull(ds.Tables[0].Rows[0]["批号"])); //批号
                                model.Add("F_paez_Integer", Pub_Class.ClsPub.isStrNull(ds.Tables[0].Rows[0]["箱数"])); //箱数
                                model.Add("F_paez_Decimal2", Pub_Class.ClsPub.isStrNull(ds.Tables[0].Rows[0]["总重"])); //总重
                                model.Add("F_paez_BaseProperty2", Pub_Class.ClsPub.isStrNull(ds.Tables[0].Rows[0]["成品编码"])); //成品编码
                                model.Add("F_paez_BaseProperty5", Pub_Class.ClsPub.isStrNull(ds.Tables[0].Rows[0]["品名"])); //品名
                                model.Add("F_paez_Base1", Pub_Class.ClsPub.isStrNull(ds.Tables[0].Rows[0]["线号"])); //线号
                                model.Add("F_paez_BaseProperty", Pub_Class.ClsPub.isStrNull(ds.Tables[0].Rows[0]["机台"])); //机台
                                model.Add("F_paez_Decimal", Pub_Class.ClsPub.isStrNull(ds.Tables[0].Rows[0]["箱重"])); //箱重
                                //model.Add("F_WJUK_Text", Pub_Class.ClsPub.isStrNull(ds.Tables[0].Rows[0]["来源"])); //来源
                                model.Add("FDEPTID1", new JObject() { ["FNumber"] = Pub_Class.ClsPub.isStrNull(ds.Tables[0].Rows[0]["部门代码"]) });//部门
                                model.Add("F_paez_BaseProperty6", Pub_Class.ClsPub.isStrNull(ds.Tables[0].Rows[0]["捻向"])); //捻向
                                model.Add("F_paez_BaseProperty7", Pub_Class.ClsPub.isStrNull(ds.Tables[0].Rows[0]["管色"])); //管色
                                model.Add("F_paez_Assistant", Pub_Class.ClsPub.isStrNull(ds.Tables[0].Rows[0]["等级"])); //等级
                                model.Add("F_paez_Text11", Pub_Class.ClsPub.isStrNull(ds.Tables[0].Rows[0]["最小箱号"])); //最小箱号
                                //model.Add("F_paez_Text3", Pub_Class.ClsPub.isStrNull(ds.Tables[0].Rows[0]["文本"])); //文本
                                model.Add("F_paez_Text4", Pub_Class.ClsPub.isStrNull(ds.Tables[0].Rows[0]["最大箱号"])); //最大箱号
                                //model.Add("F_paez_PrintTimes", Pub_Class.ClsPub.isStrNull(ds.Tables[0].Rows[0]["打印次数"])); //打印次数
                                //model.Add("F_paez_Text5", Pub_Class.ClsPub.isStrNull(ds.Tables[0].Rows[0]["线号"])); //条码打印
                                model.Add("F_paez_BaseProperty10", new JObject() { ["FNumber"] = Pub_Class.ClsPub.isStrNull(ds.Tables[0].Rows[0]["部门代码"]) }); //生产部门
                                model.Add("F_paez_Combo1", Pub_Class.ClsPub.isStrNull(ds.Tables[0].Rows[0]["是否内外贸"])); //是否内外贸
                                model.Add("F_paez_Combo2", Pub_Class.ClsPub.isStrNull(ds.Tables[0].Rows[0]["产品类型"])); //产品类型
                                model.Add("F_paez_Combo3", Pub_Class.ClsPub.isStrNull(ds.Tables[0].Rows[0]["满版状态"])); //满版状态
                                model.Add("F_paez_BaseProperty11", Pub_Class.ClsPub.isStrNull(ds.Tables[0].Rows[0]["规格型号"])); //规格型号
                                model.Add("F_paez_BaseProperty12", Pub_Class.ClsPub.isStrNull(ds.Tables[0].Rows[0]["网别"])); //网别
                                model.Add("F_TFKO_Text4", Pub_Class.ClsPub.isStrNull(ds.Tables[0].Rows[0]["箱号前缀"])); //箱号前缀
                                model.Add("F_paez_WB", Pub_Class.ClsPub.isStrNull(ds.Tables[0].Rows[0]["网别"])); //网别1
                                JArray Fentity = new JArray();
                                foreach (DataRow item in ds.Tables[1].Rows)
                                {
                                    JObject FentityModel = new JObject();
                                    FentityModel.Add("FSrcEntryId", item["FSRCENTRYID"].ToString());//  源单分录内码、
                                    FentityModel.Add("FIsNew", item["FIsNew"].ToString());//  源单类型
                                    FentityModel.Add("FMaterialId", new JObject() { ["FNumber"] = item["FMaterialId"].ToString() }); // 物料编码
                                    FentityModel.Add("FREPORTTYPE", new JObject() { ["FNumber"] = item["FREPORTTYPE"].ToString() });  // 生产汇报类型
                                    FentityModel.Add("FProductType", item["FPRODUCTTYPE"].ToString());//     产品类型
                                    FentityModel.Add("FUNITID", new JObject() { ["FNumber"] = item["FUNITID"].ToString() });//单位
                                    FentityModel.Add("FWORKSHIPID", new JObject() { ["FNumber"] = item["FWORKSHOPID"].ToString() });//生产车间
                                    FentityModel.Add("FMTONO", item["FMTONO"].ToString());//   计划跟踪号
                                    FentityModel.Add("FCheckProduct", item["FCheckProduct"].ToString());//   产品检验
                                    FentityModel.Add("FISENTRUST", item["FISENTRUST"].ToString());//      组织委托加工
                                    FentityModel.Add("FSrcBillType", item["FSRCBILLTYPE"].ToString());//   源单类型
                                    FentityModel.Add("FMOBILLNO", item["FMOBILLNO"].ToString());//  生产订单
                                    FentityModel.Add("FSrcBillNo", item["FSrcBillNo"].ToString());//   源单编号
                                    FentityModel.Add("FMoEntrySeq", item["FMoEntrySeq"].ToString());//生产订单行号
                                    FentityModel.Add("FPROJECTNO", item["FPROJECTNO"].ToString());//  项目编号
                                    FentityModel.Add("FSTDMANHOUR", item["FSTDMANHOUR"].ToString());//  单位标准工时
                                    FentityModel.Add("FHRPREPARETIME", item["FHRPREPARETIME"].ToString());//  人员准备工时
                                    FentityModel.Add("FMACPREPARETIME", item["FMACPREPARETIME"].ToString());//  机器准备工时
                                    FentityModel.Add("FSrcInterId", item["FSrcInterId"].ToString());//  源单内码
                                    FentityModel.Add("FSrcEntrySeq", item["FSrcEntrySeq"].ToString());//  源单行号
                                    FentityModel.Add("FMoId", item["FMoId"].ToString());//生产订单内码
                                    FentityModel.Add("FMoEntryId", item["FMoEntryId"].ToString());//生产订单分录号
                                    FentityModel.Add("FBaseUnitID", new JObject() { ["FNumber"] = item["FBaseUnitID"].ToString() });//单位
                                    FentityModel.Add("FSTOCKINORGID", new JObject() { ["FNumber"] = item["FSTOCKINORGID"].ToString() });//入库组织
                                    FentityModel.Add("FOwnerTypeId", item["FOwnerTypeId"].ToString());// 货主类型
                                    FentityModel.Add("FOwnerId", new JObject() { ["FNumber"] = item["FOwnerId"].ToString() });// 货主
                                    FentityModel.Add("FSTOCKID", new JObject() { ["FNumber"] = item["FSTOCKID"].ToString() });//仓库
                                    FentityModel.Add("FCostRate", item["FCOSTRATE"].ToString());//    成本权重
                                    FentityModel.Add("FSNUNITID", new JObject() { ["FNumber"] = item["FSNUNITID"].ToString() });//序列号单位
                                    FentityModel.Add("FISBACKFLUSH", item["FISBACKFLUSH"].ToString());//  倒冲领料
                                    FentityModel.Add("FMOMAINENTRYID", item["FMOMAINENTRYID"].ToString());// 生产订单主产品分录
                                    FentityModel.Add("FQAIP", item["FQAIP"].ToString());//紧急放行
                                    FentityModel.Add("FREQSRC", item["FREQSRC"].ToString());//需求来源
                                    FentityModel.Add("FREQBILLNO", item["FREQBILLNO"].ToString());//需求单据
                                    FentityModel.Add("FREQBILLID", item["FREQBILLID"].ToString());// 需求单据内码
                                    FentityModel.Add("FREQENTRYSEQ", item["FREQENTRYSEQ"].ToString());//需求单据行号
                                    FentityModel.Add("FREQENTRYID", item["FREQENTRYID"].ToString());// 需求单据分录内码
                                    FentityModel.Add("FBASEQUAQTY", item["FBASEQUAQTY"].ToString());// 基本单位合格数量
                                    FentityModel.Add("FQUAQTY", item["FQUAQTY"].ToString());//合格数量
                                    FentityModel.Add("FFailQty", item["FFailQty"].ToString());//不合格数量
                                    FentityModel.Add("FScrapQty", item["FScrapQty"].ToString());//报废数量
                                    FentityModel.Add("FBASEFINISHQTY", item["FBASEFINISHQTY"].ToString());//基本单位完成数量
                                    FentityModel.Add("FFINISHQTY", item["FFINISHQTY"].ToString());//完成数量
                                    FentityModel.Add("FLot", new JObject() { ["FNumber"] = item["FLot"].ToString() });//批号
                                    FentityModel.Add("FBOMID", new JObject() { ["FNumber"] = item["FBOMID"].ToString() });// BOM版本
                                    JArray Fentity2 = new JArray();
                                    JObject FentityModel2 = new JObject();
                                    FentityModel2.Add("FEntity_Link_FFlowId", item["FEntity_Link_FFlowId"].ToString());
                                    FentityModel2.Add("FEntity_Link_FFlowLineId", item["FEntity_Link_FFlowLineId"].ToString());
                                    FentityModel2.Add("FEntity_Link_FRuleId", item["FEntity_Link_FRuleId"].ToString());
                                    FentityModel2.Add("FEntity_Link_FSTableName", item["FEntity_Link_FSTableName"].ToString());
                                    FentityModel2.Add("FEntity_Link_FSBillId", item["FEntity_Link_FSBillId"].ToString());
                                    FentityModel2.Add("FEntity_Link_FSId", item["FEntity_Link_FSId"].ToString());
                                    Fentity2.Add(FentityModel2);
                                    FentityModel.Add("FEntity_Link", Fentity2);
                                    FentityModel.Add("FBFLowId", new JObject() { ["FID"] = item["FBFLOWID"].ToString() });
                                    Fentity.Add(FentityModel);
                                }
                                model.Add("FEntity", Fentity); //明细信息
                                JObject jsonRoot = new JObject()
                                {
                                    ["Creator"] = "",
                                    ["NeedUpDateFields"] = new JArray(),
                                    ["NeedReturnFields"] = new JArray(),
                                    //["IsDeleteEntry"] = "true",
                                    //["SubSystemId"] = "",
                                    //["IsVerifyBaseDataField"] = "false",
                                    ["IsDeleteEntry"] = "true",
                                    ["SubSystemId"] = "",
                                    ["IsVerifyBaseDataField"] = "true",
                                    ["IsEntryBatchFill"] = "false",
                                    ["ValidateFlag"] = "true",
                                    ["NumberSearch"] = "true",
                                    ["IsAutoAdjustField"] = "false",
                                    ["InterationFlags"] = "",
                                    ["IgnoreInterationFlag"] = "",
                                    //["IsAutoSubmitAndAudit"] = true,//自动调用提交和审核功能
                                    ["Model"] = model
                                };
                                //从配置文件获取 CLOUD网址、账套信息、登录用户、登录密码
                                if (!Pub_Class.ClsPub.GetCLOUDLoginInfo(ref Pub_Class.ClsPub.sExeReturnInfo))
                                {
                                    oCn.RollBack();
                                    objJsonResult.code = "0";
                                    objJsonResult.count = 0;
                                    objJsonResult.Message = "入库申请单同步获取登录账号密码失败!";
                                    objJsonResult.data = null;
                                    return objJsonResult;
                                }
                                var loginRet = InvokeHelper.Login();
                                var isSuccess = JObject.Parse(loginRet)["LoginResultType"].Value<int>();
                                if (isSuccess == 0)
                                {
                                    oCn.RollBack();
                                    objJsonResult.code = "0";
                                    objJsonResult.count = 0;
                                    objJsonResult.Message = "登录金蝶失败!";
                                    objJsonResult.data = null;
                                    return objJsonResult;
                                }
                                else
                                {
                                    string result = InvokeHelper.Save("PRD_MORPT", JsonConvert.SerializeObject(jsonRoot));//保存
                                    if (JObject.Parse(result)["Result"]["ResponseStatus"]["IsSuccess"].ToString().ToUpper() != "TRUE")
                                    {
                                        LogService.Write(JsonConvert.SerializeObject(jsonRoot));
                                        oCn.RollBack();
                                        objJsonResult.code = "0";
                                        objJsonResult.count = 0;
                                        objJsonResult.Message = "入库申请单同步金蝶云失败!单号:" + HSourceBillNo + result + jsonRoot;
                                        objJsonResult.data = null;
                                        return objJsonResult;
                                    }
                                    //提交审核
                                    string result1 = string.Empty;
                                    string result2 = string.Empty;
                                    var fID = JObject.Parse(result)["Result"]["Id"].ToString();
                                    var fBillNo = JObject.Parse(result)["Result"]["Number"].ToString();
                                    var json = new
                                    {
                                        Ids = fID,
                                    };
                                    if (oSystemParameter.omodel.Sc_ICMOReportBill_AutoCheck == "Y") //系统参数  自动审核
                                    {
                                        result1 = InvokeHelper.Submit("PRD_MORPT", JsonConvert.SerializeObject(json));//提交
                                        result2 = InvokeHelper.Audit("PRD_MORPT", JsonConvert.SerializeObject(json));//审核
                                        if (JObject.Parse(result1)["Result"]["ResponseStatus"]["IsSuccess"].ToString().ToUpper() != "TRUE")
                                        {
                                            oCn.RollBack();
                                            objJsonResult.code = "0";
                                            objJsonResult.count = 0;
                                            objJsonResult.Message = "入库申请单单号:" + ",提交失败" + result1;
                                            objJsonResult.data = null;
                                            return objJsonResult;
                                        }
                                        if (JObject.Parse(result2)["Result"]["ResponseStatus"]["IsSuccess"].ToString().ToUpper() != "TRUE")
                                        {
                                            oCn.RollBack();
                                            objJsonResult.code = "0";
                                            objJsonResult.count = 0;
                                            objJsonResult.Message = "入库申请单单号:" + ",审核失败" + result2;
                                            objJsonResult.data = null;
                                            return objJsonResult;
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
            else
            {
                objJsonResult.code = "0";
                objJsonResult.count = 0;
                objJsonResult.Message = "获取系统参数失败! " + sErrMsg;
                objJsonResult.data = null;
                return objJsonResult;
            }
            string sExpressNumber = "";
            WebSoBar = oWebs.get_CheckTypeByBarCode_All(sCode, sInterID, HBillType, sBillNo, sMaker, WhID, SPID, sQty, sRedBlue, SourceFlag, sSourceBillNo, sSourceType, HOWNERID, sExpressNumber, ref DBUtility.ClsPub.sErrInfo);
            if (WebSoBar == null)
@@ -167,6 +435,7 @@
        {
            try
            {
                string sErrMsg = "";
                bool sBool = false;
                oView = webserver.get_InfoByBarCode_Source(sBarCode, sInterID, ref sBool, ref sErrMsg);
@@ -233,6 +502,8 @@
            string msg1 = _value.ToString();
            try
            {
                List<Model.ClsKf_ICStockBillMain> lsmain = new List<Model.ClsKf_ICStockBillMain>();
                ListModels oListModels = new ListModels();
                lsmain = oListModels.getICStockBillMainByJson(msg1);
@@ -336,8 +607,8 @@
                List<Model.ClsKf_OtherInBillMain> lsmain = new List<Model.ClsKf_OtherInBillMain>();
                ListModels oListModels = new ListModels();
                lsmain = oListModels.getOtherInBillMainByJson(msg1);
                lsmain[0].HYear = DBUtility.ClsPub.isLong(DateTime.Now.Year);
                lsmain[0].HDate = DBUtility.ClsPub.isDate(DateTime.Now.ToString("yyyy-MM-dd"));
                //lsmain[0].HYear = DBUtility.ClsPub.isLong(DateTime.Now.Year);
                //lsmain[0].HDate = DBUtility.ClsPub.isDate(DateTime.Now.ToString("yyyy-MM-dd"));
                string sSourceBillType = lsmain[0].HBillType;
                WebAPI.WebS.ClsKf_OtherInBillMain websLsmain = new WebS.ClsKf_OtherInBillMain();
@@ -350,7 +621,11 @@
                websLsmain.HMaker = lsmain[0].HMaker;
                websLsmain.HSTOCKORGID = lsmain[0].HSTOCKORGID;
                websLsmain.HOWNERID = lsmain[0].HSTOCKORGID;
                websLsmain.HKeeperID = lsmain[0].HKeeperID;
                websLsmain.HSecManagerID = lsmain[0].HSecManagerID;
                websLsmain.HBillerID = lsmain[0].HBillerID;
                websLsmain.HBillType = "1203";//固定值
                websLsmain.HBillSubType = lsmain[0].HBillSubType;
                WebS.WebService1 oWebs = new WebS.WebService1();
                WebS.ClsXt_SystemParameterMain oSystemParameterMain = new WebS.ClsXt_SystemParameterMain();
@@ -358,7 +633,7 @@
                {            
                    objJsonResult.code = "0";
                    objJsonResult.count = 1;
                    objJsonResult.Message = DBUtility.ClsPub.sErrInfo;
                    objJsonResult.Message = DBUtility.ClsPub.sErrInfo;  //成功!
                    objJsonResult.data = null;
                    return objJsonResult;
                }
@@ -366,7 +641,8 @@
                {
                    objJsonResult.code = "0";
                    objJsonResult.count = 0;
                    objJsonResult.Message = "上传失败!" + DBUtility.ClsPub.sErrInfo;
                    objJsonResult.Message = DBUtility.ClsPub.sErrInfo;  //失败!
                    //objJsonResult.Message = "上传失败!" + DBUtility.ClsPub.sErrInfo;
                    objJsonResult.data = null;
                    return objJsonResult;
                }