using Newtonsoft.Json; 
 | 
using Newtonsoft.Json.Converters; 
 | 
using Newtonsoft.Json.Linq; 
 | 
using Pub_Class; 
 | 
using System; 
 | 
using System.Collections; 
 | 
using System.Collections.Generic; 
 | 
using System.Data; 
 | 
using System.Data.SqlClient; 
 | 
using System.Diagnostics; 
 | 
using System.Web.Http; 
 | 
using WebAPI.Models; 
 | 
  
 | 
namespace WebAPI.Controllers 
 | 
{ 
 | 
    /// <summary> 
 | 
    /// 工资报表菜单各模块接口 
 | 
    /// </summary> 
 | 
    public class ReportController : ApiController 
 | 
    { 
 | 
        public DBUtility.ClsPub.Enum_BillStatus BillStatus; 
 | 
  
 | 
        private json objJsonResult = new json(); 
 | 
        SQLHelper.ClsCN oCN = new SQLHelper.ClsCN(); 
 | 
        DataSet ds; 
 | 
  
 | 
        /// <summary> 
 | 
        /// 返回客诉追溯流程报表 
 | 
        /// </summary> 
 | 
        /// <param name="sWhere">拼接的SQL</param> 
 | 
        /// <returns>object</returns> 
 | 
        [Route("Report/RetrospectionCustomerReport")] 
 | 
        [HttpGet] 
 | 
        public object RetrospectionCustomerReport(string sWhere) 
 | 
        { 
 | 
            DataSet ds; 
 | 
            try 
 | 
            { 
 | 
                if (sWhere == null || sWhere.Equals("")) 
 | 
                { 
 | 
                    ds = oCN.RunProcReturn("select top 5000 * from h_v_RetrospectionCustomerReport order by 组托单日期 desc", "h_v_RetrospectionCustomerReport"); 
 | 
                } 
 | 
                else 
 | 
                { 
 | 
                    string sql1 = "select * from h_v_RetrospectionCustomerReport where 1 = 1 "; 
 | 
                    string sql = sql1 + sWhere; 
 | 
                    string sql2 = " order by 组托单日期 desc"; 
 | 
                    sql += sql2; 
 | 
                    ds = oCN.RunProcReturn(sql, "h_v_RetrospectionCustomerReport"); 
 | 
                } 
 | 
                if (ds == null || ds.Tables[0].Rows.Count == 0) 
 | 
                { 
 | 
                    objJsonResult.code = "0"; 
 | 
                    objJsonResult.count = 0; 
 | 
                    objJsonResult.Message = "无数据!"; 
 | 
                    objJsonResult.data = null; 
 | 
                    return objJsonResult; 
 | 
                } 
 | 
                else 
 | 
                { 
 | 
                    objJsonResult.code = "1"; 
 | 
                    objJsonResult.count = 1; 
 | 
                    objJsonResult.Message = "Sucess!"; 
 | 
                    objJsonResult.data = ds.Tables[0]; 
 | 
                    return objJsonResult; 
 | 
                } 
 | 
  
 | 
            } 
 | 
            catch (Exception e) 
 | 
            { 
 | 
                objJsonResult.code = "0"; 
 | 
                objJsonResult.count = 0; 
 | 
                objJsonResult.Message = "Exception!" + e.ToString(); 
 | 
                objJsonResult.data = null; 
 | 
                return objJsonResult; 
 | 
            } 
 | 
        } 
 | 
  
 | 
        /// <summary> 
 | 
        /// 返回工序在制品报表 
 | 
        /// </summary> 
 | 
        /// <param name="EdDate">截止时间</param> 
 | 
        /// <param name="sWhere">拼接的SQL</param> 
 | 
        /// <returns>object</returns> 
 | 
        [Route("Report/ProcessWIPReport")] 
 | 
        [HttpGet] 
 | 
        public object ProcessWIPReport(DateTime EdDate, string sWhere) 
 | 
        { 
 | 
            DataSet ds; 
 | 
            try 
 | 
            { 
 | 
                ds = oCN.RunProcReturn("exec h_p_K3_Sc_WIPSumReportDateReport '" + EdDate + "','" + sWhere + "'", "h_p_K3_Sc_WIPSumReportDateReport"); 
 | 
                if (ds == null || ds.Tables[0].Rows.Count == 0) 
 | 
                { 
 | 
                    objJsonResult.code = "0"; 
 | 
                    objJsonResult.count = 0; 
 | 
                    objJsonResult.Message = "无数据!"; 
 | 
                    objJsonResult.data = null; 
 | 
                    return objJsonResult; 
 | 
                } 
 | 
                else 
 | 
                { 
 | 
                    objJsonResult.code = "1"; 
 | 
                    objJsonResult.count = 1; 
 | 
                    objJsonResult.Message = "Sucess!"; 
 | 
                    objJsonResult.data = ds.Tables[0]; 
 | 
                    return objJsonResult; 
 | 
                } 
 | 
            } 
 | 
            catch (Exception e) 
 | 
            { 
 | 
                objJsonResult.code = "0"; 
 | 
                objJsonResult.count = 0; 
 | 
                objJsonResult.Message = "Exception!" + e.ToString(); 
 | 
                objJsonResult.data = null; 
 | 
                return objJsonResult; 
 | 
            } 
 | 
        } 
 | 
  
 | 
        // 
 | 
  
 | 
        #region 末道工序汇报入库 
 | 
        /// <summary> 
 | 
        /// 末道工序汇报入库列表 
 | 
        /// </summary> 
 | 
        /// <param name="sWhere"></param> 
 | 
        /// <param name="user"></param> 
 | 
        /// <returns></returns> 
 | 
        [Route("Sc_ProcessMangement/Sc_ProcessReportList_Last")] 
 | 
        [HttpGet] 
 | 
        public object Sc_ProcessReportList_Last(string sWhere, string user) 
 | 
        { 
 | 
            try 
 | 
            { 
 | 
                string sql1 = "select * from h_v_Sc_ProcessReportList_Last where 1 = 1  and HLastProc='是'"; 
 | 
                string sql = sql1 + sWhere + "  order by hmainid desc"; 
 | 
                ds = oCN.RunProcReturn(sql, "h_v_Sc_ProcessReportList_Last"); 
 | 
  
 | 
                objJsonResult.code = "1"; 
 | 
                objJsonResult.count = 1; 
 | 
                objJsonResult.Message = "Sucess!"; 
 | 
                objJsonResult.data = ds.Tables[0]; 
 | 
                return objJsonResult; 
 | 
  
 | 
            } 
 | 
            catch (Exception e) 
 | 
            { 
 | 
                objJsonResult.code = "0"; 
 | 
                objJsonResult.count = 0; 
 | 
                objJsonResult.Message = "Exception!" + e.ToString(); 
 | 
                objJsonResult.data = null; 
 | 
                return objJsonResult; 
 | 
            } 
 | 
        } 
 | 
        #endregion 
 | 
  
 | 
        #region 斯莫尔 末道工序汇报列表  汇报 入库 
 | 
        /// <summary> 
 | 
        /// 生成 生产汇报单   
 | 
        /// 同步金蝶云 工序汇报入库单 入库 
 | 
        /// </summary> 
 | 
        /// <param name="InterID"></param> 
 | 
        /// <param name="user"></param> 
 | 
        /// <param name="BillNo"></param> 
 | 
        /// <param name="OrganizationID"></param> 
 | 
        /// <returns></returns> 
 | 
        [Route("Sc_ProcessMangement/SRM_SaveICMOReportBill")] 
 | 
        [HttpGet] 
 | 
        public object SRM_SaveICMOReportBill(string InterID, string user, string BillNo, string OrganizationID) 
 | 
        { 
 | 
            try 
 | 
            { 
 | 
                Stopwatch sw = new Stopwatch(); 
 | 
  
 | 
                //获取生产汇报单最大InterID和单据号 
 | 
                Int64 HInterID = DBUtility.ClsPub.CreateBillID("3711", ref DBUtility.ClsPub.sExeReturnInfo); 
 | 
                string HBillNo = DBUtility.ClsPub.CreateBillCode("3711", ref DBUtility.ClsPub.sExeReturnInfo, true); 
 | 
                HBillNo = "9010-" + HBillNo; 
 | 
  
 | 
                LogService.Write("生产汇报单:" + HBillNo); 
 | 
  
 | 
                sw.Start();//开始计时 
 | 
  
 | 
                //获取组织代码 
 | 
                string OrganizationNUM = oCN.RunProcReturn("select HNumber from Xt_ORGANIZATIONS where HItemID=" + OrganizationID, "Xt_ORGANIZATIONS").Tables[0].Rows[0]["HNumber"].ToString(); 
 | 
  
 | 
                LogService.Write("1-查询,用时" + sw.Elapsed); 
 | 
  
 | 
                //根据工序汇报单主ID获取工序汇报入库单的数据 
 | 
                DataSet ds = oCN.RunProcReturn("select * from h_v_MES_StationOutBillList_LastProc where HInterID=" + InterID, "h_v_MES_StationOutBillList_LastProc"); 
 | 
                DataRow dr = ds.Tables[0].Rows[0]; 
 | 
  
 | 
                LogService.Write("2-查询,用时" + sw.Elapsed); 
 | 
  
 | 
                //保存 
 | 
                oCN.BeginTran(); 
 | 
                DataSet DsTable = oCN.RunProcReturn($"select * from Sc_ICMOReportBillMain where HMainSourceBillNo='{BillNo}'", "Sc_ICMOReportBillMain"); 
 | 
  
 | 
                LogService.Write("3-查询,用时" + sw.Elapsed); 
 | 
  
 | 
                if (DsTable.Tables[0].Rows.Count > 0) 
 | 
                { 
 | 
                    objJsonResult.code = "0"; 
 | 
                    objJsonResult.count = 0; 
 | 
                    objJsonResult.Message = "已入库,请不要重复入库"; 
 | 
                    objJsonResult.data = null; 
 | 
                    return objJsonResult; 
 | 
                } 
 | 
                //生产汇报单主表 
 | 
                oCN.RunProc("Insert Into Sc_ICMOReportBillMain   " + 
 | 
            "(HBillType,HBillSubType,HInterID,HBillNo,HDate,HMaker,HMakeDate,HBillStatus,HChecker,HCheckDate" + 
 | 
            ",HYear,HPeriod,HRemark,HEmpID,HEmpNumber" + 
 | 
            ",HGroupID,HDeptID,HDeptNumber" + 
 | 
            ",HMainSourceBillNo,HMainSourceInterID,HMainSourceEntryID,HMainSourceBillType" + 
 | 
            ") " + 
 | 
            " values('3711','3711'," + HInterID.ToString() + ",'" + HBillNo + "',getdate(),'" + user + "',getdate(),2,'" + user + "',getdate()" + 
 | 
            ",DATENAME(YEAR,GETDATE())," + DateTime.Now.Month + ",'','" + dr["HEmpID"].ToString() + "','" + dr["操作员代码"].ToString() + 
 | 
            "','" + dr["HGroupID"].ToString() + "',0,''" + 
 | 
            ",'" + BillNo.ToString() + "'," + InterID.ToString() + ", 0,'3791'" + 
 | 
            ") "); 
 | 
                //生产汇报单子表 
 | 
                oCN.RunProc("Insert into Sc_ICMOReportBillSub " + 
 | 
                      " (HInterID,HEntryID,HMaterID,HMaterNumber" + 
 | 
                      ",HQty,HUnitID,HUnitNumber,HTimes,HSourceID" + 
 | 
                      ",HQtyMust,HWorkerID,HWorkerNumber,HBadCount,HWasterQty," + 
 | 
                      "HCloseMan,HCloseType,HRemark," + 
 | 
                      "HSourceInterID,HSourceEntryID,HSourceBillNo,HSourceBillType,HRelationQty,HRelationMoney" + 
 | 
                      ",HSeOrderInterID,HSeOrderEntryID,HSeOrderBillNo" + 
 | 
                      ",HICMOInterID,HICMOBillNo,HBarCode" + 
 | 
                      ") values(" 
 | 
                      + HInterID.ToString() + ",1," + dr["HMaterID"].ToString() + ",'" + dr["产品代码"].ToString() + "'" + 
 | 
                      "," + dr["合格数量"].ToString() + ",0,'',0,0" + 
 | 
                      "," + dr["接收数量"].ToString() + "," + dr["HEmpID"].ToString() + ",'" + dr["操作员代码"].ToString() + "'," + dr["不良数量"].ToString() + "," + dr["报废数量"].ToString() + 
 | 
                      ",'',0,''" + 
 | 
                      "," + InterID.ToString() + ",0,'" + BillNo.ToString() + "','3791',0,0" + 
 | 
                      ",0,0,''" + 
 | 
                      "," + dr["HICMOInterID"].ToString() + ",'" + dr["任务单"].ToString() + "',''" + 
 | 
                      ") "); 
 | 
  
 | 
                LogService.Write("4-新增,用时" + sw.Elapsed); 
 | 
  
 | 
                //同步金蝶 
 | 
                //访问金蝶 
 | 
                var loginRet = InvokeHelper.Login(); 
 | 
                var isSuccess = JObject.Parse(loginRet)["LoginResultType"].Value<int>(); 
 | 
  
 | 
                LogService.Write("5-访问金蝶,用时" + sw.Elapsed); 
 | 
  
 | 
                if (isSuccess == 0) 
 | 
                { 
 | 
                    objJsonResult.code = "0"; 
 | 
                    objJsonResult.count = 0; 
 | 
                    objJsonResult.Message = "操作失败,金蝶账号登录异常。" + loginRet; 
 | 
                    objJsonResult.data = null; 
 | 
                    return objJsonResult; 
 | 
                } 
 | 
  
 | 
                LogService.Write("6-找到金蝶的生产订单,用时" + sw.Elapsed); 
 | 
  
 | 
                //根据任务单查找到金蝶的生产订单 
 | 
                DataSet ds1 = oCN.RunProcReturn("select * from  h_v_TOERP_StationOutBillList_LastProc_SMR where 单据号='" + dr["单据号"].ToString() + "'", "h_v_TOERP_StationOutBillList_LastProc_SMR"); 
 | 
  
 | 
                if (ds1.Tables[0].Rows.Count == 0) 
 | 
                { 
 | 
                    objJsonResult.code = "0"; 
 | 
                    objJsonResult.count = 0; 
 | 
                    objJsonResult.Message = "操作失败,通过出站单查不到生产订单数据"; 
 | 
                    objJsonResult.data = null; 
 | 
                    return objJsonResult; 
 | 
                } 
 | 
                DataRow dr1 = ds1.Tables[0].Rows[0]; 
 | 
  
 | 
                LogService.Write("7-开始新增金蝶云单据,用时" + sw.Elapsed); 
 | 
  
 | 
                JObject model = new JObject(); 
 | 
                model.Add("FBillType", new JObject() { ["Fnumber"] = "SCHBD01_SYS" }); //单据类型生产汇报“SCHBD02_SYS” 入库汇报SCHBD01_SYS 
 | 
                model.Add("FPrdOrgId", new JObject() { ["Fnumber"] = dr1["FPrdOrgNUMBER"].ToString() }); //生产组织1 
 | 
                model.Add("FDate", DateTime.Now.ToString("yyyy-MM-dd")); //单据日期1 
 | 
                model.Add("FBillNo", HBillNo); 
 | 
                model.Add("F_RCZU_LZKH", dr1["工序流转卡号"].ToString()); 
 | 
  
 | 
                JArray Fentity = new JArray(); 
 | 
  
 | 
                foreach (DataRow item in ds.Tables[0].Rows) 
 | 
                { 
 | 
                    JObject FentityModel = new JObject(); 
 | 
                    FentityModel.Add("FIsNew", false);//  源单类型  
 | 
                    FentityModel.Add("FReportType", new JObject() { ["Fnumber"] = dr1["FREPORTTYPENUMBER"].ToString() });//生产汇报类型 
 | 
                    FentityModel.Add("FSrcBillType", "PRD_MO");//  源单类型  
 | 
                    FentityModel.Add("FProductType", "1");//  产品类型  
 | 
                    FentityModel.Add("FSrcBillNo", item["任务单"].ToString());//  源单编号  
 | 
                    FentityModel.Add("FSrcInterId", dr1["FMOID"].ToString());//  源单内码  
 | 
                    FentityModel.Add("FSrcEntryId", dr1["FMOENTRYID"].ToString());//  源单分录内码、 
 | 
                    FentityModel.Add("FSRCENTRYSEQ", dr1["FMOENTRYSEQ"].ToString());//  源单分录行号 
 | 
                    FentityModel.Add("FUNITID", new JObject() { ["Fnumber"] = dr1["FUNITNUMBER"].ToString() });//单位 
 | 
                    FentityModel.Add("FTimeUnitId", "1");//时间单位 
 | 
                    FentityModel.Add("FWorkshipId", new JObject() { ["Fnumber"] = dr1["FWorkShopNUM"].ToString() }); //  生产车间 
 | 
                    FentityModel.Add("FStandHourUnitId", "3600"); // 单位标准工时单位  
 | 
                    FentityModel.Add("FMaterialId", new JObject() { ["Fnumber"] = dr1["FMaterialNUM"].ToString() }); // 物料编码  
 | 
                    FentityModel.Add("FMoEntrySeq", dr1["FMOENTRYSEQ"].ToString());//生产订单行号 
 | 
                    FentityModel.Add("FMoId", dr1["HICMOInterID"].ToString());//生产订单内码 
 | 
                    FentityModel.Add("FFinishQty", item["接收数量"].ToString());//完成数量1 
 | 
                    //FentityModel.Add("FQuaQty", item["合格数量"].ToString());//合格数量1FFailQty 
 | 
                    FentityModel.Add("FFailQty", item["不良数量"].ToString());//不合格数量 
 | 
                    FentityModel.Add("FStockInOrgId ", new JObject() { ["Fnumber"] = OrganizationNUM });// 入库组织  
 | 
                    FentityModel.Add("FStockId", new JObject() { ["Fnumber"] = dr1["FStockNUM"].ToString() }); // 仓库  
 | 
                    FentityModel.Add("FMOBILLNO", dr1["FMOBILLNO"].ToString());//   
 | 
                    FentityModel.Add("FMOENTRYID", dr1["FMOENTRYID"].ToString());//   
 | 
                    FentityModel.Add("FOwnerTypeId", dr1["FOWNERTYPEID"].ToString()); //货主类型:FOwnerTypeId(必填项) 
 | 
                    FentityModel.Add("FOwnerId", new JObject() { ["Fnumber"] = dr1["FOwnerNumber"].ToString() }); //货主:FOwnerId(必填项) 
 | 
                    FentityModel.Add("FBomId", new JObject() { ["Fnumber"] = dr1["FBOMNUM"].ToString() }); //BOM版本:FBomId(必填项) 
 | 
                    FentityModel.Add("FCostRate", dr1["FCostRate"].ToString());// 成本权重 
 | 
                    FentityModel.Add("FISBACKFLUSH", dr1["FISBACKFLUSH"].ToString() == "True" ? true : false);// 倒冲领料 
 | 
                    FentityModel.Add("FCHECKPRODUCT", dr1["HCHECKPRODUCT"].ToString() == "True" ? true : false);// 产品检验 
 | 
                    FentityModel.Add("FMOMAINENTRYID", dr1["FMOENTRYID"].ToString());// 
 | 
                    //FentityModel.Add("FSRCENTRYSEQ", dr1["HSEQ"].ToString());//源单行号 
 | 
                    FentityModel.Add("FLot", new JObject() { ["FNumber"] = dr1["FBATCHNO"].ToString() }); //批号 
 | 
                    //FentityModel.Add("F_RCZU_LZKH", dr1["工序流转卡号"].ToString());//  工序流转卡  
 | 
                    JArray Fentity2 = new JArray(); 
 | 
                    JObject FentityModel2 = new JObject(); 
 | 
                    FentityModel2.Add("FEntity_Link_FFlowId", "f6e6eec3-5267-4f02-8593-b633da508a72"); 
 | 
                    FentityModel2.Add("FEntity_Link_FFlowLineId", "PRD_MO2MORPT"); 
 | 
                    FentityModel2.Add("FEntity_Link_FRuleId", "3"); 
 | 
                    FentityModel2.Add("FEntity_Link_FSTableId", "0"); 
 | 
                    FentityModel2.Add("FEntity_Link_FSTableName", "T_PRD_MOENTRY"); 
 | 
                    FentityModel2.Add("FEntity_Link_FSBillId", dr1["FMOID"].ToString()); 
 | 
                    FentityModel2.Add("FEntity_Link_FSId", dr1["FMOENTRYID"].ToString()); 
 | 
                    FentityModel2.Add("FEntity_Link_FBaseQuaQtyOld", item["合格数量"].ToString()); 
 | 
                    FentityModel2.Add("FEntity_Link_FBaseQuaQty", item["合格数量"].ToString()); 
 | 
                    Fentity2.Add(FentityModel2); 
 | 
                    FentityModel.Add("FEntity_Link", Fentity2); 
 | 
                    Fentity.Add(FentityModel); 
 | 
                } 
 | 
                model.Add("FEntity", Fentity); //明细信息                        
 | 
                JObject jsonRoot = new JObject() 
 | 
                { 
 | 
                    ["Creator"] = "", 
 | 
                    ["NeedUpDateFields"] = new JArray(), 
 | 
                    ["NeedReturnFields"] = new JArray(), 
 | 
                    ["IsDeleteEntry"] = "false", 
 | 
                    ["SubSystemId"] = "", 
 | 
                    ["IsVerifyBaseDataField"] = "false", 
 | 
                    //["IsAutoSubmitAndAudit"] = true,//自动调用提交和审核功能 
 | 
                    ["Model"] = model 
 | 
                }; 
 | 
  
 | 
                string result = InvokeHelper.Save("PRD_MORPT", JsonConvert.SerializeObject(jsonRoot));//保存 
 | 
  
 | 
                LogService.Write("8-保存结果,用时" + sw.Elapsed); 
 | 
  
 | 
                //判断保存是否成功 
 | 
                if (JObject.Parse(result)["Result"]["ResponseStatus"]["IsSuccess"].ToString().ToUpper() != "TRUE") 
 | 
                { 
 | 
                    LogService.Write("工序汇报单入库错误jsonRoot:" + jsonRoot); 
 | 
                    oCN.RollBack(); 
 | 
                    objJsonResult.code = "0"; 
 | 
                    objJsonResult.count = 0; 
 | 
                    objJsonResult.Message = $"生产汇报入库单同步金蝶云失败!单号:{dr["单据号"].ToString()}" + result; 
 | 
                    objJsonResult.data = null; 
 | 
                    return objJsonResult; 
 | 
                } 
 | 
  
 | 
                LogService.Write("9-开始审核,用时" + sw.Elapsed); 
 | 
              
 | 
  
 | 
                oCN.RunProc("update Sc_StationOutBillMain set HRelationQty=1 where  HBillNo='" + BillNo + "'"); 
 | 
  
 | 
                LogService.Write("11-修改完成,用时" + sw.Elapsed); 
 | 
  
 | 
                sw.Stop();//结束计时 
 | 
                LogService.Write("12-总用时" + sw.Elapsed); 
 | 
  
 | 
                oCN.Commit(); 
 | 
                objJsonResult.code = "0"; 
 | 
                objJsonResult.count = 1; 
 | 
                objJsonResult.Message = "保存成功!"; 
 | 
                objJsonResult.data = 1; 
 | 
                return objJsonResult; 
 | 
            } 
 | 
            catch (Exception e) 
 | 
            { 
 | 
                oCN.RollBack(); 
 | 
                objJsonResult.code = "0"; 
 | 
                objJsonResult.count = 0; 
 | 
                objJsonResult.Message = "Exception!" + e.ToString(); 
 | 
                objJsonResult.data = null; 
 | 
                return objJsonResult; 
 | 
            } 
 | 
        } 
 | 
        #endregion 
 | 
  
 | 
  
 | 
    } 
 | 
} 
 |