yangle
2023-12-04 d90b9df0b495e394cb9f955f0852d76c0d08cc7d
生产变更单同步
1个文件已添加
5个文件已修改
227 ■■■■■ 已修改文件
zymes/OperationService/zymes_MOCHANGE.cs 212 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zymes/OperationService/zymes_RealessPurPoorder.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
zymes/OperationService/zymes_RealessPurReceive.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
zymes/OperationService/zymes_RealessStockStatus.cs 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zymes/OperationService/zymes_RealessTaxRate.cs 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zymes/zymes_Project.csproj 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zymes/OperationService/zymes_MOCHANGE.cs
New file
@@ -0,0 +1,212 @@
using System;
using System.Collections.Generic;
using Kingdee.BOS.Util;
using Kingdee.BOS.Core.Metadata.EntityElement;
using Kingdee.BOS.Core.DynamicForm.PlugIn;
using Kingdee.BOS.Core.DynamicForm.PlugIn.Args;
using Kingdee.BOS.Orm.DataEntity;
using System.ComponentModel;
using Kingdee.BOS.ServiceHelper;
using System.Data;
using Newtonsoft.Json.Linq;
using ZD.Cloud.WebApi;
using Newtonsoft.Json;
using Kingdee.BOS.Core.DynamicForm;
using System.Linq;
using RestSharp;
using zymes_Project.Utility;
namespace zymes_Project.OperationService
{
    [Description("[生产订单变更单-审核]服务插件]")]
    [HotUpdate]
    public class zymes_MOCHANGE : AbstractOperationServicePlugIn
    {
        Dictionary<string, string> dictionary = new Dictionary<string, string>();
        public override void OnPrepareOperationServiceOption(OnPrepareOperationServiceEventArgs e)
        {
            base.OnPrepareOperationServiceOption(e);
            //为了在BeginOperationTransaction里检查数据抛出异常时
            //只回滚当前单据的事务,这里设置为不支持批量事务,这样BOS会
            //循环为每一张单据创建事务调用操作
            e.SupportTransaction = true;
            //e.SurportBatchTransaction = false;
        }
        public override void OnPreparePropertys(PreparePropertysEventArgs e)
        {
            base.OnPreparePropertys(e);
            e.FieldKeys.Add("FEntity");
            e.FieldKeys.Add("FEntity_FEntryID");
        }
        public override void AfterExecuteOperationTransaction(AfterExecuteOperationTransaction e)
        {
            base.AfterExecuteOperationTransaction(e);
            Entity entity = this.BusinessInfo.GetEntity("FEntity");//获取明细信息
            foreach (var billObj in e.DataEntitys)
            {
                var forgName = Context.CurrentOrganizationInfo.Name;
                if (!forgName.Contains("杭州斯莫尔磁性材料有限公司"))
                    continue;
                var id = billObj["Id"].ToString();
                var sqls= string.Empty;
                sqls = $@"select FMONO,FSRCBILLID  from T_PRD_MOCHANGE a
inner join T_PRD_MOCHANGEENTRY b on a.FID = b.FID
where a.FID ={id}  group by FMONO, FSRCBILLID";
                LogService.Write("1:" + sqls);
                DataSet dataSet = DBServiceHelper.ExecuteDataSet(Context, sqls);
                for (int i = 0; i < dataSet.Tables[0].Rows.Count; i++)
                {
                    var ids = dataSet.Tables[0].Rows[i]["FSRCBILLID"].ToString();
                    string sql = string.Empty;
                    sql = $@"
/*dialect*/
select a.FID AS HInterID,a.FENTRYID as HENTRYID,a.FSEQ as HSEQ,a.FQTY as HQty,a.FQTY as HQTYMUST,aa.FSTOCKINQUASELAUXQTY as HRelationQty,0 as HRelationMoney,a.FPLANSTARTDATE as HPlanBeginDate,a.FPLANFINISHDATE as HPlanEndDate
,a.FPLANSTARTDATE as HBeginDate,a.FPLANFINISHDATE as HEndDate,a.FMATERIALID as HMaterID,a.FUNITID as HUnitID,a.FSTOCKID as HWHID,isnull(a.FSTOCKLOCID,0) as HSPID,0 as HPROCID,isnull(a.FWORKSHOPID,0) as HDEPTID,a.FBOMID as HBomID,a.FLOT_TEXT as HBatchNo,'CLOUD导入' as HRemark
,a.FSRCBILLID as HSourceInterID,a.FSRCBILLENTRYID as HSourceEntryID,a.FSRCBILLNO as HSourceBillNo,a.FSRCBILLTYPE as HSourceBillType,a.FSALEORDERID as HSeOrderInterID,a.FSALEORDERENTRYID as HSeOrderEntryID,a.FSALEORDERNO as HSeOrderBillNo
,FSTOCKINORGID as HSTOCKINORGID,FINSTOCKOWNERID as HINSTOCKOWNERID,FINSTOCKOWNERTYPEID as HINSTOCKOWNERTYPEID,FREQUESTORGID as HREQUESTORGID
,0 as HPlanMode,a.FMTONO as HMTONo,a.FID as HERPInterID,a.FENTRYID as HERPEntryID,aa.FSTATUS as HSTATUS
,isnull(orm.FCUSTID,0) as HEntryCusID,aa.FREPQUASELAUXQTY as HICMOReportRelationQty,a.FAUXPROPID as HAuxPropID
,'' as HProdMaterCode,'' as HCusShortName,'' as HCusNeedMaterial,'' as HPlanSendGoodsDate
,'' as HProdMaterName,'' as HWorkRemark,'' as HImportNote,'' as HCusName
,0 as HInstockQty_Max,0 as HInstockQty_Min,FCOSTRATE as HCOSTRATE,FISBACKFLUSH as HISBACKFLUSH,FCHECKPRODUCT as HCHECKPRODUCT
--,a.FMX_CPCODE,a.FMX_KHNOTE,a.FMX_KHCLCF,a.FMX_CHDATE--江丰戎创金蝶自定义字段
--,a.FMX_CPNAME,a.FMX_SCNOTE,a.FMX_ZYNOTE,a.FMX_KHNAME--江丰戎创金蝶自定义字段
,'' as HPickLabel,a.FSTOCKINLIMITH as HPickLabelNumber,a.FSTOCKINLIMITL as HCusNumber
from T_PRD_MOENTRY a with(nolock)
inner join T_PRD_MOENTRY_A aa with(nolock) on a.FENTRYID=aa.FENTRYID
left join T_SAL_ORDERENTRY ore with(nolock) on a.FSALEORDERID=ore.FID and a.FSALEORDERENTRYID=ore.FEntryID
left join T_SAL_ORDER orm with(nolock) on ore.FID=orm.FID
Where a.FID={ids}
select a.FID HInterID ,2000 HYear,1 HPeriod,'3710' HBillType,a.FDATE HDate,a.FbillNo HBillNo,'2' HBillStatus,0 HEMPID,0 HRoutingInterID
,1 HPlanQty,0 HRelationQty,a.FDATE HPlanBeginDate ,getdate() HPlanEndDate ,a.FDATE HBeginDate,getdate() HEndDate,0 HMaterID,0 HUnitID,0 HBomID,'' HBatchNo
,0 HSourceInterID,0 HSourceEntryID,'' HSourceBillNo,'' HSourceBillType,0 HSeOrderInterID,0 HSeOrderEntryID,'' HSeOrderBillNo
,FPRDORGID HPRDORGID,FENTRUSTORGID HENTRUSTORGID,FOWNERID HOWNERID,FOWNERTYPEID HOWNERTYPEID
,0 HCusID,isnull(a.FWORKSHOPID,0) HDeptID,'CLOUD导入' HRemark,a.FCREATORID HMaker,getdate() HMakeDate,a.FAPPROVERID HChecker,a.FAPPROVEDATE HCheckDate,'' HMTONo,a.FID HERPInterID,a.FBILLTYPE HERPBillType
,case when a.FISREWORK=1 then '返工' else '普通' end HBillSubType
from T_PRD_MO a with(nolock)
Where a.FID={ids}
select a.FID AS HInterID,a.FEntryID HEntryID,isnull(a.FMATERIALID,0) HMaterID,a.FUnitID HUnitID,a.FNEEDQTY HQty,a.FNEEDQTY HQtyMust,isnull(C.FStockID,0) HWHID,'CLOUD导入' HRemark
,isnull(a.FMOID,0) HSourceInterID,isnull(a.FMOENTRYID,0) HSourceEntryID,isnull(a.FMOBILLNO,'') HSourceBillNo,'3710' HSourceBillType,isnull(a.FMOID,0) HICMOInterID,isnull(a.FMOENTRYID,0) HICMOEntryID,isnull(a.FMOBILLNO,'') HICMOBillNo
,isnull(c.FCHILDSUPPLYORGID,0) HCHILDSUPPLYORGID,isnull(c.FSUPPLYORG,0) HSUPPLYORGID,isnull(c.FENTRUSTPICKORGID,0) HENTRUSTPICKORGID,isnull(c.FSRCTRANSORGID,0) HSRCTRANSORGID,isnull(c.FGROUPBYOWNERID,0) HGROUPBYOWNERID,isnull(c.FOWNERID,0) HOWNERID,isnull(c.FOWNERTYPEID,'') HOWNERTYPEID
,(q.FSELPICKEDQTY - q.FSELPRCDRETURNQTY) HRelationQty,q.FSELTRANSLATEQTY HMoveStockQty,isnull(a.FAUXPROPID,0) HAuxPropID,isnull(c.FLOT_TEXT,'') HBatchNO,isnull(a.FMTONo,'') HMTONo,a.FBASENUMERATOR/a.FBASEDENOMINATOR HQtyScrap,isnull(a.FID,0) HERPInterID,a.FEntryID HERPEntryID
,q.FWIPQTY HBackRelationQty,a.FNumerator HNumerator,a.FDenominator HDenominator
,isnull(a.FBASEUNITID,0) HBASEUNITID,isnull(a.FProcessID,0) HProcessID,isnull(a.FMOENTRYSEQ,0) HICMOENTRYSEQ,isnull(a.FPROJECTNO,'') HPROJECTNO,isnull(a.FOPERID,0) HOPERID,isnull(a.FSEQ,0) HSEQ,isnull(c.FSTOCKSTATUSID,0) HSTOCKSTATUSID
,isnull(c.FLOT,0) HLOT,c.FOPTQUEUE HOPTQUEUE,isnull(c.FRESERVETYPE,0) HRESERVETYPE,q.FSelPickedQty HSelPickedQty,q.FSELPRCDRETURNQTY HSELPRCDRETURNQTY,isnull(tp.FNAME,0) as HProcName
from T_PRD_PPBOMEntry a with(nolock)
left join T_PRD_PPBOMENTRY_LK l with(nolock) on a.FENTRYID=l.FENTRYID
inner join T_PRD_PPBOMENTRY_C c with(nolock) on A.FENTRYID=c.FENTRYID
inner join T_PRD_PPBOMENTRY_Q q with(nolock) on A.FENTRYID=q.FENTRYID
left join T_ENG_PROCESS_L tp with(nolock) on A.FProcessID=tp.FID
left join T_ENG_PROCESS_L tl on tp.FID =tl.fid and tl.FLOCALEID=2052
Where a.FMOID={ids}
select a.FID HInterID,YEAR(a.FCREATEDate) AS HYear,MONTH(a.FCREATEDate) AS HPeriod,'3720' HBillType,'3720' HBillSubType,a.FCREATEDate HDate
,isnull(a.FbillNo,'') HBillNo,case when isnull(a.FAPPROVERID,0)=0 then 1 else 2 end HBillStatus,isnull(a.FMOID,0) HICMOInterID,isnull(a.FMOENTRYID,0) HICMOEntryID
,a.FMATERIALID HMaterID,a.FUNITID HUnitID,a.FQTY HQty,isnull(a.FWORKSHOPID,0) HDeptID,isnull(a.FCREATORID,0) HMaker,getdate() HMakeDate,isnull(a.FAPPROVERID,0) HChecker,a.FAPPROVEDATE HCheckDate
,isnull(a.FSALEORDERNO,'') HSeOrderBillNo,isnull(a.FSALEORDERID,0) HSeOrderInterID,isnull(a.FSALEORDERENTRYID,0) HSeOrderEntryID
,isnull(a.FPRDORGID,0) HPRDORGID,isnull(a.FENTRUSTORGID,0) HENTRUSTORGID,isnull(a.FPARENTOWNERID,0) HPARENTOWNERID,isnull(a.FPARENTOWNERTYPEID,'') HPARENTOWNERTYPEID,isnull(a.FREQSRC,'') HREQSRC
,a.FID HERPInterID,'PPBOM' HERPBillType,isnull(a.FSALEORDERENTRYSEQ,0) HSeOrderEntrySEQ,isnull(a.FMOEntrySEQ,0) HICMOEntrySEQ
from T_PRD_PPBOM a with(nolock)
Where a.FMOID={ids}
";
                    LogService.Write("2.1:" + sql);
                    DataSet ds = DBServiceHelper.ExecuteDataSet(Context, sql);
                    DataTable subdt = ds.Tables[0];
                    DataTable maindt = ds.Tables[1];
                    DataTable ppbomsubdt = ds.Tables[2];
                    DataTable ppbommaindt = ds.Tables[3];
                    if (maindt.Rows.Count == 0 || subdt.Rows.Count == 0)
                    {
                        LogService.Write("生产订单变更单同步异常:" + sql);
                        continue;
                    }
                    JObject model = new JObject();//主表
                    DataRow maindr = maindt.Rows[0];
                    foreach (DataColumn column in maindt.Columns)
                    {
                        model.Add(column.ColumnName, maindr[column.ColumnName].ToString());
                    }
                    JArray array = new JArray();//明细表
                    foreach (DataRow dr in subdt.Rows)
                    {
                        JObject fentrymodel = new JObject();
                        foreach (DataColumn column in subdt.Columns)
                        {
                            fentrymodel.Add(column.ColumnName, dr[column.ColumnName].ToString());
                        }
                        array.Add(fentrymodel);
                    }
                    model.Add("HENTRY", array);
                    array = new JArray();//ppbom明细表
                    foreach (DataRow dr in ppbommaindt.Rows)
                    {
                        JObject fentrymodel = new JObject();
                        foreach (DataColumn column in ppbommaindt.Columns)
                        {
                            fentrymodel.Add(column.ColumnName, dr[column.ColumnName].ToString());
                        }
                        array.Add(fentrymodel);
                    }
                    model.Add("HPPBOMMAINENTRY", array);
                    array = new JArray();//ppbom明细表
                    foreach (DataRow dr in ppbomsubdt.Rows)
                    {
                        JObject fentrymodel = new JObject();
                        foreach (DataColumn column in ppbomsubdt.Columns)
                        {
                            fentrymodel.Add(column.ColumnName, dr[column.ColumnName].ToString());
                        }
                        array.Add(fentrymodel);
                    }
                    model.Add("HPPBOMSUBENTRY", array);
                    JObject jsonRoot = new JObject()
                    {
                        ["model"] = model
                    };
                    string clientUrl = Util.GetConfigKey(AppDomain.CurrentDomain.BaseDirectory + "/Config/kdapi.config", "ClientUrl");//K/3 Cloud 业务站点地址
                    var client = new RestSharp.RestClient(clientUrl);
                    //var client = new RestSharp.RestClient(" http://10.11.18.195:8080/simoerapi/");
                    //新增
                    var requestPost = new RestRequest("Sc_ICMOBill/ICMOBillSaveApi", Method.POST);
                    requestPost.AddParameter("application/json", JsonConvert.SerializeObject(jsonRoot), ParameterType.RequestBody);
                    IRestResponse responsePost = client.Execute(requestPost);
                    var contentPost = responsePost.Content;
                    if (!contentPost.Contains("成功"))
                    {
                        LogService.Write("生产订单变更单同步异常,POST方式获取结果," + billObj["Id"] + "," + responsePost.ErrorMessage);
                        LogService.Write("生产订单变更单同步异常,POST," + "Sc_ICMOBill/ICMOBillSaveApi");
                        LogService.Write("生产订单变更单同步异常,JsonConvert.SerializeObject(jsonRoot)," + JsonConvert.SerializeObject(jsonRoot));
                    }
                }
            };
            foreach (var item in dictionary)
            {
                ResultMessage.dataError(this.OperationResult.OperateResult, item.Key, item.Value);
            }
        }
        public static class ResultMessage
        {/// <summary>
         /// 修改提示信息
         /// </summary>
         /// <param name="operateResult"></param>
         /// <param name="billno"></param>
            public static void dataError(OperateResultCollection operateResult, string billno, string message)
            {
                OperateResult operate = operateResult.Where(n => n.Number == billno).First();
                operate.Message = message;
                operate.SuccessStatus = false;
                operate.MessageType = MessageType.FatalError;
            }
        }
    }
}
zymes/OperationService/zymes_RealessPurPoorder.cs
@@ -215,7 +215,7 @@
Where a.FID={id}
select a.FID as HInterID,year(a.FDATE) as HYear,month(a.FDATE) as HPeriod,'1102' as HBillType,'1102' as HBillSubType,a.FDate as HDate
,a.FBillNo as HBillNo,case when a.FAPPROVERID=0 then 1 else 2 end HBillStatus,'' as HAddress,0 as HSSID,a.FDATE as HSSDate,0 as HPSStyleID
,a.FSUPPLIERID as HSupID,0 as HCurID,0 as HExRate,a.FPURCHASERID as HEmpID,0 as HManagerID,a.FPURCHASEDEPTID as HDeptID
,a.FSUPPLIERID as HSupID,a.F_RCZU_JXS HSupDealerID,0 as HCurID,0 as HExRate,a.FPURCHASERID as HEmpID,0 as HManagerID,a.FPURCHASEDEPTID as HDeptID
,'CLOUD导入' as HExplanation,'CLOUD导入' as HRemark,a.FBillNo as HInnerBillNo
,a.FAPPROVERID as HChecker,a.FAPPROVEDATE as HCheckDate,a.FCREATORID as HMaker,a.FCREATEDATE as  HMakeDate
,a.FID as HERPInterID,a.FBILLTYPEID as HERPBillType,a.FPURCHASEORGID as HPURCHASEORGID,a.FPURCHASERGROUPID as HPURCHASERGROUPID,a.FPROVIDERID as HPROVIDERID,a.FSETTLEID as HSETTLEID
zymes/OperationService/zymes_RealessPurReceive.cs
@@ -215,7 +215,7 @@
where a.FID={id}
select a.FID as HInterID,year(isnull(a.FDATE,GETDATE())) as HYear,month(isnull(a.FDATE,GETDATE())) as HPeriod,'1103' as HBillType,case when a.FBUSINESSTYPE='WW' then '12511' else '12510' end as HBillSubType,isnull(a.FDATE,GETDATE()) as HDate
,a.FBillNo as HBillNo,case when a.FAPPROVERID=0 then 1 else 2 end HBillStatus,a.FSUPPLIERID as HSupID,a.FPURCHASERID as HManagerID,a.FRECEIVERID as HEmpID,a.FRECEIVEDEPTID as HDeptID,a.FNOTE as HRemark
,a.FBillNo as HBillNo,case when a.FAPPROVERID=0 then 1 else 2 end HBillStatus,a.FSUPPLIERID as HSupID,a.F_RCZU_JXS HSupDealerID,a.FPURCHASERID as HManagerID,a.FRECEIVERID as HEmpID,a.FRECEIVEDEPTID as HDeptID,a.FNOTE as HRemark
,a.FCREATORID as HMaker,a.FCREATEDATE as HMakeDate,a.FAPPROVERID as HChecker ,a.FAPPROVEDATE as HCheckDate,a.FOWNERTYPEID as HOWNERTYPEID,a.FOWNERID as HOWNERID
,a.FID as HERPInterID,a.FBillTypeID as HERPBillType,a.FPURORGID as HPURCHASEORGID,a.FSTOCKORGID as HSTOCKORGID,a.FDEMANDORGID as HREQUIREORGID
,a.FSTOCKGROUPID as HSTOCKGROUPID,isnull(a.FSENDBILLNO,'') as HSENDBILLNO,isnull(a.FLADBILLNO,'') as HLADBILLNO,a.FPURDEPTID as HPURDEPTID,a.FPURGROUPID as HPURGROUPID,a.FSUPPLYID as HSUPPLYID
zymes/OperationService/zymes_RealessStockStatus.cs
@@ -45,9 +45,9 @@
            Entity entity = this.BusinessInfo.GetEntity("FEntity");//获取明细信息
            foreach (var billObj in e.DataEntitys)
            {
                //var forgName = Context.CurrentOrganizationInfo.Name;
                //if (!forgName.Contains("杭州斯莫尔磁性材料有限公司"))
                //    continue;
                var forgName = Context.CurrentOrganizationInfo.Name;
                if (!forgName.Contains("杭州斯莫尔磁性材料有限公司"))
                    continue;
                var id = billObj["Id"].ToString();
                string sql = string.Empty;
                sql = $@"
zymes/OperationService/zymes_RealessTaxRate.cs
@@ -46,8 +46,8 @@
            foreach (var billObj in e.DataEntitys)
            {
                var forgName = Context.CurrentOrganizationInfo.Name;
                //if (!forgName.Contains("杭州斯莫尔磁性材料有限公司"))
                //    continue;
                if (!forgName.Contains("杭州斯莫尔磁性材料有限公司"))
                    continue;
                var id = billObj["Id"].ToString();
                string sql = string.Empty;
                sql = $@"
zymes/zymes_Project.csproj
@@ -126,6 +126,7 @@
    <Compile Include="HttpClient.cs" />
    <Compile Include="InvokeHelper.cs" />
    <Compile Include="LogService.cs" />
    <Compile Include="OperationService\zymes_MOCHANGE.cs" />
    <Compile Include="OperationService\zymes_RealessCurrency.cs" />
    <Compile Include="OperationService\zymes_RealessOperator.cs" />
    <Compile Include="OperationService\zymes_RealessRateType.cs" />