usingGoogle.Protobuf.WellKnownTypes;usingHh.Mes.Common;usingHh.Mes.Common.config;usingHh.Mes.Common.DataTableTo;usingHh.Mes.Common.log;usingHh.Mes.Pojo.System;usingHh.Mes.POJO.Entity;usingHh.Mes.POJO.EnumEntitys;usingHh.Mes.POJO.Response;usingHh.Mes.POJO.WebEntity;usingHh.Mes.POJO.WebEntity.bus;usingHh.Mes.Service.Repository;usingMySqlX.XDevAPI.Common;usingMySqlX.XDevAPI.Relational;usingNPOI.OpenXmlFormats.Dml.Diagram;usingNPOI.POIFS.FileSystem;usingNPOI.SS.Formula.Functions;usingSqlSugar;usingSystem;usingSystem.Collections.Generic;usingSystem.Configuration;usingSystem.Data;usingSystem.Diagnostics;usingSystem.Linq;usingSystem.Reflection;usingstaticHh.Mes.Common.Exel.NpoiExcelImportHelper;namespaceHh.Mes.Service.WebService.Planned{///<summary>///定义导入方法加上特性///dicDtSource添加需要保存到数据源的数据源///注意:只改对应业务的dt数据【公共方法里面的读取的数据源不要修改、其他地方可能需要用到】///</summary>publicpartialclassImportMethod:RepositorySqlSugar<base_material>{publicstringmaterialDtKey{get;set;}privatestringproductCodes{get;set;}publicImportMethod(){}#region用户表【Action里面的sys_user】是数据库表名,方法名没有特殊要求,注意不要删除sysDicDtSource里面的key[Action("sys_user")]publicResponseSysUserMethod(Dictionary<string,SysDtAllCls>sysDicDtSource,dynamicuser,DateTimenowTime){#regioninitvarresponse=newResponse();//【修改项1】varexcelFileNameKeys=ExcelName.sys_user.ToString();response=ImportOhter.ImportMethodBefore(sysDicDtSource,response,excelFileNameKeys);if(response.Code!=200){response.Message=$"【{TableName.excelFileNameSysUser}】"+response.Message;returnresponse;}//公共方法数据源,需要判断的数据源单独建一个DataTableexcelDtSourceDt=response.Result.data;DataTabletitleVerifySourceDt=response.Result.title;#endregion#region创建dt、添加保存到数据库的dicDtSource【修改项2】vartableName=TableName.tableNameSysUser;vareqSaveDt=GetTableStructure(tableName);if(eqSaveDt.Columns.Contains("Id"))eqSaveDt.Columns.Remove("Id");vartemp=newSysDtAllCls(){dtData=eqSaveDt};vardtSourceNameKey=tableName+TableName.tableSuffix;sysDicDtSource.Add(dtSourceNameKey,temp);#endregion#region去重【修改项3根据实际业务】vartempExcelDtSourceDt=excelDtSourceDt.Distinct("account");#endregion#region赋值理论上是通用的,修改excel文件名【修改项4】varcolumns=tempExcelDtSourceDt.Columns;for(inti=0;i<tempExcelDtSourceDt.Rows.Count;i++){vardr=eqSaveDt.NewRow();for(intc=0;c<columns.Count;c++){varcolName=columns[c].ColumnName;dynamiccolNameVal=tempExcelDtSourceDt.Rows[i][colName].ToString();response=ImportOhter.SetDataTableDataBefore(response,i,colName,colNameVal,titleVerifySourceDt,TableName.excelFileNameSysUser);if(response.Code!=200)returnresponse;colNameVal=ImportOhter.SetDataTableData(colNameVal,eqSaveDt.Columns[colName].DataType.Name);dr[colName]=colNameVal;}dr["password"]=Encryption.Encrypt(ConfigRead.GetInstance.GetAppsetConnection().ResetPwd);dr["status"]=1;dr["createBy"]=user.Account;dr["createTime"]=nowTime;eqSaveDt.Rows.Add(dr);}#endregion#region逻辑判断//response.ResponseError("");//returnresponse;#endregionreturnresponse;}#endregion#region物料表【Action里面的base_material】是数据库表名,方法名没有特殊要求,注意不要删除sysDicDtSource里面的key[Action("base_material")]publicResponseBaseMaterialMethod(Dictionary<string,SysDtAllCls>sysDicDtSource,dynamicuser,DateTimenowTime){#regioninitvarresponse=newResponse();//【修改项1】varexcelFileNameKeys=ExcelName.base_material.ToString();response=ImportOhter.ImportMethodBefore(sysDicDtSource,response,excelFileNameKeys);if(response.Code!=200){response.Message=$"【{TableName.excelFileNameBaseMaterial}】"+response.Message;returnresponse;}//公共方法数据源,需要判断的数据源单独建一个DataTableexcelDtSourceDt=response.Result.data;DataTabletitleVerifySourceDt=response.Result.title;#endregion#region创建dt、添加保存到数据库的dicDtSource【修改项2】vartableName=TableName.tableNameBaseMaterial;vareqSaveDt=GetTableStructure(tableName);if(eqSaveDt.Columns.Contains("Id"))eqSaveDt.Columns.Remove("Id");vartemp=newSysDtAllCls(){dtData=eqSaveDt};vardtSourceNameKey=tableName+TableName.tableSuffix;sysDicDtSource.Add(dtSourceNameKey,temp);#endregion#region去重【修改项3根据实际业务】vartempExcelDtSourceDt=excelDtSourceDt.Distinct("materialCode");#endregion#region赋值理论上是通用的,修改excel文件名【修改项4】varcolumns=tempExcelDtSourceDt.Columns;for(inti=0;i<tempExcelDtSourceDt.Rows.Count;i++){vardr=eqSaveDt.NewRow();for(intc=0;c<columns.Count;c++){varcolName=columns[c].ColumnName;dynamiccolNameVal=tempExcelDtSourceDt.Rows[i][colName].ToString();response=ImportOhter.SetDataTableDataBefore(response,i,colName,colNameVal,titleVerifySourceDt,TableName.excelFileNameBaseMaterial);if(response.Code!=200)returnresponse;colNameVal=ImportOhter.SetDataTableData(colNameVal,eqSaveDt.Columns[colName].DataType.Name);dr[colName]=colNameVal;}dr["keys"]=Guid.NewGuid().ToString();dr["createBy"]=user.Account;dr["createTime"]=nowTime;eqSaveDt.Rows.Add(dr);}#endregion#region逻辑判断//response.ResponseError("");//returnresponse;#endregionreturnresponse;}#endregion#regionSaveSysUserSuccessAfter///<summary>///SysUser表保存成功之后///</summary>///<paramname="dateTime"></param>publicvoidSaveSuccessAfterSysUesr(DateTimedateTime,dynamicsysWebUser){UpdateSysRelevance(sysWebUser.Account);}///<summary>///更新部门关联的用户///</summary>privatevoidUpdateSysRelevance(stringuser){//UserOrg:用户机构关联KEYvarrelKey="UserOrg";//26:是“工艺管线预制车间”==>“巨驰”的部门IDvardeptId=26;varsql=$@"insertintosys_relevance(relKey,firstId,secondId,createBy)selectUserOrg='{relKey}',t1.id,secondId={deptId},createBy='{user}'fromsys_usert1with(nolock)leftjoin(selectdistinctfirstIdfromsys_relevance)t2ont1.id=t2.firstIdwheret2.firstIdisnull";varresult=base.Context.Ado.ExecuteCommand(sql);if(result<=0){Log4NetHelper.Instance.Error($"【ImportMethod-UpdateSysRelevance 执行更新部门关联的用户失败 sql】"+sql);}}#endregion#region公共方法///<summary>///获取表结构没有数据源,并设置dt的表名,去掉id列///</summary>publicDataTableGetTableStructure(stringtableName){varsql=$"select * from {tableName} where 1!=1";vardt=base.Context.Ado.GetDataTable(sql);dt.TableName=tableName;//varcolumnsId="id";//if(dt.Columns.Contains(columnsId))dt.Columns.Remove(columnsId);returndt;}#endregion}}