liulb@mesnac.com 8 months ago
parent 1ef43f7961
commit d4b2ee7465

@ -299,7 +299,7 @@
<param name="code">料仓条码信息</param>
<returns></returns>
</member>
<!-- Badly formed XML comment ignored for member "M:Admin.Core.Api.xl_materialController.ExecPlcCode(System.Int32,System.Int32,System.String,System.Decimal)" -->
<!-- Badly formed XML comment ignored for member "M:Admin.Core.Api.xl_materialController.ExecPlcCode(System.Int32,System.Int32,System.String,System.Decimal,System.String)" -->
<member name="M:Admin.Core.Api.xl_materialController.BindBarrel(System.String)">
<summary>
检量称扫码绑定桶(新加)
@ -319,6 +319,12 @@
</summary>
<returns></returns>
</member>
<member name="M:Admin.Core.Api.xl_materialController.MaterialVerification(System.String)">
<summary>
料框防错验证——只验证单料
</summary>
<returns></returns>
</member>
<member name="T:Admin.Core.Api.SolventController">
<summary>
溶剂称量 PDA接口
@ -360,6 +366,14 @@
<param name="cylinderCode">拉缸Code</param>
<returns></returns>
</member>
<member name="M:Admin.Core.Api.SolventController.GetByZbCode(System.String,System.String)">
<summary>
整包物料查询
</summary>
<param name="code">整包物料编码</param>
<param name="weighbridge">地磅名称1号地磅|2号地磅</param>
<returns></returns>
</member>
<member name="T:Admin.Core.Api.Controllers.Business.WarehouseController">
<summary>
反应釜防错验证

@ -221,6 +221,109 @@
唯一标识
</summary>
</member>
<member name="T:Admin.Core.Model.BinFeedingReport">
<summary>
</summary>
</member>
<member name="P:Admin.Core.Model.BinFeedingReport.ID">
<summary>
Desc:
Default:
Nullable:False
</summary>
</member>
<member name="P:Admin.Core.Model.BinFeedingReport.BinID">
<summary>
Desc:料仓主键
Default:
Nullable:True
</summary>
</member>
<member name="P:Admin.Core.Model.BinFeedingReport.Bin_Name">
<summary>
Desc:名称
Default:
Nullable:True
</summary>
</member>
<member name="P:Admin.Core.Model.BinFeedingReport.Bin_Code">
<summary>
Desc:条码
Default:
Nullable:True
</summary>
</member>
<member name="P:Admin.Core.Model.BinFeedingReport.Batch">
<summary>
Desc:批次
Default:
Nullable:True
</summary>
</member>
<member name="P:Admin.Core.Model.BinFeedingReport.ProductName">
<summary>
Desc:名称
Default:
Nullable:True
</summary>
</member>
<member name="P:Admin.Core.Model.BinFeedingReport.MaterialID">
<summary>
Desc:物料ID
Default:
Nullable:True
</summary>
</member>
<member name="P:Admin.Core.Model.BinFeedingReport.MaterialName">
<summary>
Desc:物料名称
Default:
Nullable:True
</summary>
</member>
<member name="P:Admin.Core.Model.BinFeedingReport.Material_Code">
<summary>
Desc:条码
Default:
Nullable:True
</summary>
</member>
<member name="P:Admin.Core.Model.BinFeedingReport.Material_InventoryCode">
<summary>
Desc:存货编码
Default:
Nullable:True
</summary>
</member>
<member name="P:Admin.Core.Model.BinFeedingReport.Material_BatchNumber">
<summary>
Desc:批次号
Default:
Nullable:True
</summary>
</member>
<member name="P:Admin.Core.Model.BinFeedingReport.Material_SerialCode">
<summary>
Desc:流水号
Default:
Nullable:True
</summary>
</member>
<member name="P:Admin.Core.Model.BinFeedingReport.CreateTime">
<summary>
Desc:创建时间
Default:
Nullable:True
</summary>
</member>
<member name="P:Admin.Core.Model.BinFeedingReport.BarCodeStr">
<summary>
Desc:完整二维码
Default:
Nullable:True
</summary>
</member>
<member name="T:Admin.Core.Model.Hw_Barrel">
<summary>
桶管理
@ -268,6 +371,20 @@
Nullable:True
</summary>
</member>
<member name="P:Admin.Core.Model.Hw_Barrel.Material_KeyID">
<summary>
Desc:物料ID
Default:
Nullable:True
</summary>
</member>
<member name="P:Admin.Core.Model.Hw_Barrel.Material_KeyName">
<summary>
Desc:物料名称
Default:
Nullable:True
</summary>
</member>
<member name="P:Admin.Core.Model.Hw_Barrel.PlanId">
<summary>
计划ID
@ -421,6 +538,27 @@
Nullable:True
</summary>
</member>
<member name="P:Admin.Core.Model.Hw_BinTypeErrorPreventionReport.Material_InventoryCode">
<summary>
Desc:存货编码
Default:
Nullable:True
</summary>
</member>
<member name="P:Admin.Core.Model.Hw_BinTypeErrorPreventionReport.Material_BatchNumber">
<summary>
Desc:批次号
Default:
Nullable:True
</summary>
</member>
<member name="P:Admin.Core.Model.Hw_BinTypeErrorPreventionReport.Material_SerialCode">
<summary>
Desc:流水号
Default:
Nullable:True
</summary>
</member>
<member name="P:Admin.Core.Model.Hw_BinTypeErrorPreventionReport.CreateTime">
<summary>
Desc:创建时间
@ -428,6 +566,11 @@
Nullable:True
</summary>
</member>
<member name="P:Admin.Core.Model.Hw_BinTypeErrorPreventionReport.BarCodeStr">
<summary>
完整二维码
</summary>
</member>
<member name="T:Admin.Core.Model.Hw_Cylinder">
<summary>
@ -601,6 +744,20 @@
Nullable:True
</summary>
</member>
<member name="P:Admin.Core.Model.Hw_SolventErrorPreventionReport.Batch">
<summary>
Desc:批次
Default:
Nullable:True
</summary>
</member>
<member name="P:Admin.Core.Model.Hw_SolventErrorPreventionReport.ProductName">
<summary>
Desc:产品名称
Default:
Nullable:True
</summary>
</member>
<member name="P:Admin.Core.Model.Hw_SolventErrorPreventionReport.FinishedNum">
<summary>
Desc:完成次数
@ -624,7 +781,7 @@
</member>
<member name="P:Admin.Core.Model.Hw_SolventErrorPreventionReport.MaterialName">
<summary>
Desc:
Desc:当前执行物料名称
Default:
Nullable:True
</summary>
@ -641,6 +798,31 @@
读取完整物料信息
</summary>
</member>
<member name="P:Admin.Core.Model.Hw_SolventErrorPreventionReport.Material_InventoryCode">
<summary>
存货编码
</summary>
</member>
<member name="P:Admin.Core.Model.Hw_SolventErrorPreventionReport.Material_BatchNumber">
<summary>
批次
</summary>
</member>
<member name="P:Admin.Core.Model.Hw_SolventErrorPreventionReport.Material_SerialCode">
<summary>
流水号
</summary>
</member>
<member name="P:Admin.Core.Model.Hw_SolventErrorPreventionReport.CreateTime">
<summary>
创建时间
</summary>
</member>
<member name="P:Admin.Core.Model.Hw_SolventErrorPreventionReport.BarCodeStr">
<summary>
完整二维码
</summary>
</member>
<member name="T:Admin.Core.Model.Hw_Warehouse">
<summary>
反应釜
@ -813,6 +995,11 @@
泵条码
</summary>
</member>
<member name="P:Admin.Core.Model.Hw_WareHouse_Sub.Tare">
<summary>
皮重
</summary>
</member>
<member name="T:Admin.Core.Model.Hw_weigh">
<summary>
@ -1788,6 +1975,20 @@
Nullable:False
</summary>
</member>
<member name="P:Admin.Core.Model.RT_plan.Batch">
<summary>
Desc:
Default:
Nullable:True
</summary>
</member>
<member name="P:Admin.Core.Model.RT_plan.ProductName">
<summary>
Desc:
Default:
Nullable:True
</summary>
</member>
<member name="P:Admin.Core.Model.RT_plan.Plan_Serial">
<summary>
Desc:
@ -1991,9 +2192,25 @@
Nullable:True
</summary>
</member>
<member name="P:Admin.Core.Model.RT_plan.WeighbridgeId">
<summary>
Desc:
Default:
Nullable:True
</summary>
</member>
<member name="P:Admin.Core.Model.RT_plan.Weighbridge">
<summary>
Desc:
Default:
Nullable:True
</summary>
</member>
<member name="P:Admin.Core.Model.RT_plan.Exec_Num">
<summary>
物料执行顺序——每执行一个+1下一批次清空
Desc:物料顺序,累计完成信号+1下一个批次清零
Default:
Nullable:True
</summary>
</member>
<member name="T:Admin.Core.Model.xl_material">
@ -2438,6 +2655,81 @@
Nullable:True
</summary>
</member>
<member name="T:Admin.Core.Model.xl_weigh">
<summary>
配方信息
</summary>
</member>
<member name="P:Admin.Core.Model.xl_weigh.ID">
<summary>
Desc:主键
Default:
Nullable:False
</summary>
</member>
<member name="P:Admin.Core.Model.xl_weigh.Equip_Code">
<summary>
Desc:台机号
Default:
Nullable:True
</summary>
</member>
<member name="P:Admin.Core.Model.xl_weigh.Recipe_ID">
<summary>
Desc:物料ID
Default:
Nullable:True
</summary>
</member>
<member name="P:Admin.Core.Model.xl_weigh.Bin_Serial">
<summary>
Desc:
Default:
Nullable:True
</summary>
</member>
<member name="P:Admin.Core.Model.xl_weigh.Weight_Id">
<summary>
Desc:
Default:
Nullable:True
</summary>
</member>
<member name="P:Admin.Core.Model.xl_weigh.Material_ID">
<summary>
Desc:
Default:
Nullable:True
</summary>
</member>
<member name="P:Admin.Core.Model.xl_weigh.Station">
<summary>
Desc:
Default:
Nullable:True
</summary>
</member>
<member name="P:Admin.Core.Model.xl_weigh.Set_Weight">
<summary>
Desc:
Default:
Nullable:True
</summary>
</member>
<member name="P:Admin.Core.Model.xl_weigh.Set_Error">
<summary>
Desc:
Default:
Nullable:True
</summary>
</member>
<member name="P:Admin.Core.Model.xl_weigh.Cpk_Error">
<summary>
Desc:
Default:
Nullable:True
</summary>
</member>
<member name="T:Admin.Core.Model.DeptView">
<summary>
部门视图
@ -4215,6 +4507,11 @@
Nullable:True
</summary>
</member>
<member name="P:Admin.Core.Model.ViewModels.HwWareHouseSubView.Tare">
<summary>
皮重
</summary>
</member>
<member name="T:Admin.Core.Model.ViewModels.KettleView">
<summary>
投料釜匹配完成传入参数
@ -4655,6 +4952,11 @@
固含率
</summary>
</member>
<member name="P:Admin.Core.Model.ViewModels.VerifyView.BarCodeList">
<summary>
二维码信息
</summary>
</member>
<member name="T:Admin.Core.Model.ViewModels.WaitePlanView">
<summary>
待执行物料

@ -118,9 +118,10 @@ namespace Admin.Core.Api
/// <param name="state">匹配状态条码匹配写“1”不匹配时写“2”</param>
/// <param name="materialCode">物料编码</param>
/// <param name="weight">物料重量</param>
/// <param name="barCode">物料二维码</param>
/// <returns></returns>
[HttpGet]
public async Task<MessageModel<bool>> ExecPlcCode(int code, int state,string materialCode,decimal weight)
public async Task<MessageModel<bool>> ExecPlcCode(int code, int state,string materialCode,decimal weight,string? barCode)
{
//log.Info(code + "&" + state);
if (!code.IsNotEmptyOrNull())
@ -139,7 +140,7 @@ namespace Admin.Core.Api
{
return Failed<bool>("匹配状态传入参数为空!");
}
var result = await _xl_materialService.ExecPlcState(code, state, materialCode, weight);
var result = await _xl_materialService.ExecPlcState(code, state, materialCode, weight, barCode);
if (result.success)
{
return result;
@ -154,7 +155,6 @@ namespace Admin.Core.Api
/// </summary>
/// <param name="code">桶条码</param>
/// <returns></returns>
[Obsolete("废弃")]
[HttpGet]
public async Task<MessageModel<bool>> BindBarrel(string code)
{
@ -208,7 +208,6 @@ namespace Admin.Core.Api
/// </summary>
/// <returns></returns>
[HttpGet]
[Obsolete("废弃")]
public async Task<MessageModel<List<AllXlPlanView>>> GetXlPlanInfo()
{
MessageModel<List<AllXlPlanView>> message=new MessageModel<List<AllXlPlanView>>();
@ -227,5 +226,19 @@ namespace Admin.Core.Api
return message;
}
#endregion
#region 料框防错验证——只验证单料
/// <summary>
/// 料框防错验证——只验证单料
/// </summary>
/// <returns></returns>
[HttpGet]
public async Task<MessageModel<bool>> MaterialVerification(string barCode)
{
MessageModel<bool> message = await _xl_materialService.MaterialVerification(barCode);
return message;
}
#endregion
}
}

@ -73,12 +73,12 @@ namespace Admin.Core.Api
return Failed<bool>("传入参数为空!");
}
var result = await _solventServices.ExecPlcState(view);
if (result)
MessageModel<bool> result = await _solventServices.ExecPlcState(view);
if (result.success)
{
return Success(result);
return result;
}
return Failed<bool>("执行失败!");
return result;
}
#endregion
@ -136,6 +136,32 @@ namespace Admin.Core.Api
}
#endregion
#region 查询整包称量物料
/// <summary>
/// 整包物料查询
/// </summary>
/// <param name="code">整包物料编码</param>
/// <param name="weighbridge">地磅名称1号地磅|2号地磅</param>
/// <returns></returns>
[HttpGet]
public async Task<MessageModel<PlanView>> GetByZbCode(string code, string weighbridge)
{
if (!code.IsNotEmptyOrNull())
{
return Failed<PlanView>("传入物料条码参数为空!");
}
if (!weighbridge.IsNotEmptyOrNull())
{
return Failed<PlanView>("传入地磅参数为空!");
}
var query = await _solventServices.GetByZbCode(code.Trim(), weighbridge.Trim());
if (query == null)
{
return Failed<PlanView>("未查询到计划信息!");
}
return Success(query);
}
#endregion
}
}

@ -149,7 +149,7 @@
"Enabled": true
},
"QuartzNetJob": {
"Enabled": true
"Enabled": false
},
"Consul": {
"Enabled": false
@ -162,13 +162,13 @@
{
"Id": 1,
"EquipName": "小料PLC",
"IP": "192.168.10.100",
"IP": "127.0.0.1",
"Port": 102
},
{
"Id": 2,
"EquipName": "溶剂PLC",
"IP": "192.168.10.130",
"IP": "127.0.0.1",
"Port": 102
}
],

@ -149,7 +149,7 @@
"Enabled": true
},
"QuartzNetJob": {
"Enabled": true
"Enabled": false
},
"Consul": {
"Enabled": false
@ -162,13 +162,13 @@
{
"Id": 1,
"EquipName": "小料PLC",
"IP": "192.168.10.100",
"IP": "127.0.0.1",
"Port": 102
},
{
"Id": 2,
"EquipName": "溶剂PLC",
"IP": "192.168.10.130",
"IP": "127.0.0.1",
"Port": 102
}
],

@ -31,7 +31,7 @@
<PackageReference Include="Serilog" Version="2.10.0" />
<PackageReference Include="Serilog.AspNetCore" Version="4.1.0" />
<PackageReference Include="Serilog.Sinks.Elasticsearch" Version="8.4.1" />
<PackageReference Include="SqlSugarCore" Version="5.0.3.8" />
<PackageReference Include="SqlSugarCore" Version="5.1.4.134" />
<PackageReference Include="StackExchange.Redis" Version="2.2.50" />
<PackageReference Include="Swashbuckle.AspNetCore.Filters" Version="7.0.2" />
<PackageReference Include="Swashbuckle.AspNetCore.SwaggerUI" Version="6.1.5" />

@ -20,6 +20,7 @@ namespace Admin.Core.Extensions
if (Appsettings.app("Middleware", "Plc", "Enabled").ObjToBool())
{
await plc.StartPlcAsync();
await plc.StartAlarmAsync();
}
}
catch (Exception e)

@ -0,0 +1,11 @@
using Admin.Core.Model;
namespace Admin.Core.IRepository
{
/// <summary>
/// IBinFeedingReportRepository
/// </summary>
public interface IBinFeedingReportRepository : IBaseRepository<BinFeedingReport>
{
}
}

@ -0,0 +1,11 @@
using Admin.Core.Model;
namespace Admin.Core.IRepository
{
/// <summary>
/// Ixl_weighRepository
/// </summary>
public interface Ixl_weighRepository : IBaseRepository<xl_weigh>
{
}
}

@ -0,0 +1,12 @@
using Admin.Core.IService;
using Admin.Core.Model;
namespace Admin.Core.IService
{
/// <summary>
/// IBinFeedingReportServices
/// </summary>
public interface IBinFeedingReportServices :IBaseServices<BinFeedingReport>
{
}
}

@ -1,4 +1,5 @@
using Admin.Core.IService;
using Admin.Core.Common;
using Admin.Core.IService;
using Admin.Core.Model;
using Admin.Core.Model.ViewModels;
using System.Collections.Generic;
@ -12,9 +13,10 @@ namespace Admin.Core.IService
public interface ISolventServices
{
Task<WaitePlanView> GetByCylinderCode(string code, string weighbridge);
Task<bool> ExecPlcState(VerifyView view);
Task<MessageModel<bool>> ExecPlcState(VerifyView view);
Task<PumpAndCylinderView> GetByPumpCode(string code);
Task<bool> ExecState(string planId,string pumpCode,string cylinderCode);
Task<List<SolventPlanView>> GetSolventPlanInfo();
Task<PlanView> GetByZbCode(string code, string weighbridge);
}
}

@ -19,12 +19,15 @@ namespace Admin.Core.IService
/// <param name="state">状态</param>
/// <param name="materialCode">物料编码</param>
/// <param name="weight">物料重量</param>
Task<MessageModel<bool>> ExecPlcState(int binSerial, int state,string materialCode,decimal weight);
/// <param name="barCode">物料二维码</param>
Task<MessageModel<bool>> ExecPlcState(int binSerial, int state,string materialCode,decimal weight, string? barCode);
/// <summary>
/// 绑定料桶信息
/// </summary>
/// <param name="code"></param>
/// <returns></returns>
Task<int> BindBarrel(string code);
Task<MessageModel<bool>> MaterialVerification(string barCode);
}
}

@ -0,0 +1,104 @@
using System;
using System.Linq;
using System.Text;
using SqlSugar;
namespace Admin.Core.Model
{
///<summary>
///
///</summary>
[SugarTable( "BinFeedingReport", "admin_sqlite")]
public class BinFeedingReport
{
public BinFeedingReport()
{
}
/// <summary>
/// Desc:
/// Default:
/// Nullable:False
/// </summary>
[SugarColumn(IsPrimaryKey=true,IsIdentity=true)]
public int ID { get; set; }
/// <summary>
/// Desc:料仓主键
/// Default:
/// Nullable:True
/// </summary>
public int? BinID { get; set; }
/// <summary>
/// Desc:名称
/// Default:
/// Nullable:True
/// </summary>
public string Bin_Name { get; set; }
/// <summary>
/// Desc:条码
/// Default:
/// Nullable:True
/// </summary>
public string Bin_Code { get; set; }
/// <summary>
/// Desc:批次
/// Default:
/// Nullable:True
/// </summary>
public string Batch { get; set; }
/// <summary>
/// Desc:名称
/// Default:
/// Nullable:True
/// </summary>
public string ProductName { get; set; }
/// <summary>
/// Desc:物料ID
/// Default:
/// Nullable:True
/// </summary>
public string MaterialID { get; set; }
/// <summary>
/// Desc:物料名称
/// Default:
/// Nullable:True
/// </summary>
public string MaterialName { get; set; }
/// <summary>
/// Desc:条码
/// Default:
/// Nullable:True
/// </summary>
public string Material_Code { get; set; }
/// <summary>
/// Desc:存货编码
/// Default:
/// Nullable:True
/// </summary>
public string Material_InventoryCode { get; set; }
/// <summary>
/// Desc:批次号
/// Default:
/// Nullable:True
/// </summary>
public string Material_BatchNumber { get; set; }
/// <summary>
/// Desc:流水号
/// Default:
/// Nullable:True
/// </summary>
public string Material_SerialCode { get; set; }
/// <summary>
/// Desc:创建时间
/// Default:
/// Nullable:True
/// </summary>
public DateTime? CreateTime { get; set; }
/// <summary>
/// Desc:完整二维码
/// Default:
/// Nullable:True
/// </summary>
public string BarCodeStr { get; set; }
}
}

@ -54,6 +54,19 @@ namespace Admin.Core.Model
/// </summary>
public string MaterialName { get; set; }
/// <summary>
/// Desc:物料ID
/// Default:
/// Nullable:True
/// </summary>
public string Material_KeyID { get; set; }
/// <summary>
/// Desc:物料名称
/// Default:
/// Nullable:True
/// </summary>
public string Material_KeyName { get; set; }
/// <summary>
/// 计划ID
/// </summary>
public string PlanId { get; set; }

@ -56,10 +56,32 @@ namespace Admin.Core.Model
/// </summary>
public string Material_Code { get; set; }
/// <summary>
/// Desc:存货编码
/// Default:
/// Nullable:True
/// </summary>
public string Material_InventoryCode { get; set; }
/// <summary>
/// Desc:批次号
/// Default:
/// Nullable:True
/// </summary>
public string Material_BatchNumber { get; set; }
/// <summary>
/// Desc:流水号
/// Default:
/// Nullable:True
/// </summary>
public string Material_SerialCode { get; set; }
/// <summary>
/// Desc:创建时间
/// Default:
/// Nullable:True
/// </summary>
public DateTime? CreateTime { get; set; }
/// <summary>
/// 完整二维码
/// </summary>
public string BarCodeStr { get; set; }
}
}

@ -1,4 +1,5 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using SqlSugar;
@ -12,9 +13,6 @@ namespace Admin.Core.Model
[SugarTable("Hw_SolventErrorPreventionReport", "cwss_xl")]
public class Hw_SolventErrorPreventionReport
{
public Hw_SolventErrorPreventionReport()
{
}
/// <summary>
/// Desc:
/// Default:
@ -29,6 +27,18 @@ namespace Admin.Core.Model
/// </summary>
public string PlanId { get; set; }
/// <summary>
/// Desc:批次
/// Default:
/// Nullable:True
/// </summary>
public string Batch { get; set; }
/// <summary>
/// Desc:产品名称
/// Default:
/// Nullable:True
/// </summary>
public string ProductName { get; set; }
/// <summary>
/// Desc:完成次数
/// Default:
/// Nullable:True
@ -47,7 +57,7 @@ namespace Admin.Core.Model
/// </summary>
public string MaterialID { get; set; }
/// <summary>
/// Desc:
/// Desc:当前执行物料名称
/// Default:
/// Nullable:True
/// </summary>
@ -62,5 +72,25 @@ namespace Admin.Core.Model
/// 读取完整物料信息
/// </summary>
public string WholeMaterial { get; set; }
/// <summary>
/// 存货编码
/// </summary>
public string Material_InventoryCode { get; set; }
/// <summary>
/// 批次
/// </summary>
public string Material_BatchNumber { get; set; }
/// <summary>
/// 流水号
/// </summary>
public string Material_SerialCode { get; set; }
/// <summary>
/// 创建时间
/// </summary>
public DateTime CreateTime { get; set; }
/// <summary>
/// 完整二维码
/// </summary>
public string BarCodeStr { get; set; }
}
}

@ -127,5 +127,9 @@ namespace Admin.Core.Model
/// </summary>
public string PumpCode { get; set; }
/// <summary>
/// 皮重
/// </summary>
public decimal Tare { get; set; }
}
}

@ -41,6 +41,18 @@ namespace Admin.Core.Model
/// Default:
/// Nullable:True
/// </summary>
public string Batch { get; set; }
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
public string ProductName { get; set; }
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
public int Plan_Serial { get; set; }
/// <summary>
/// Desc:
@ -107,7 +119,7 @@ namespace Admin.Core.Model
/// Default:
/// Nullable:True
/// </summary>
public int? Duration_Time { get; set; }
public int Duration_Time { get; set; }
/// <summary>
/// Desc:
/// Default:
@ -179,13 +191,13 @@ namespace Admin.Core.Model
/// Default:
/// Nullable:True
/// </summary>
public int? Retransmission_Num { get; set; }
public int Retransmission_Num { get; set; }
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
public int? IF_FLAG { get; set; }
public int IF_FLAG { get; set; }
/// <summary>
/// Desc:
/// Default:
@ -211,7 +223,21 @@ namespace Admin.Core.Model
/// </summary>
public string PumpBarCode { get; set; }
/// <summary>
/// 物料执行顺序——每执行一个+1下一批次清空
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
public int WeighbridgeId { get; set; }
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
public string Weighbridge { get; set; }
/// <summary>
/// Desc:物料顺序,累计完成信号+1下一个批次清零
/// Default:
/// Nullable:True
/// </summary>
public int Exec_Num { get; set; }
}

@ -0,0 +1,80 @@
using System;
using System.Linq;
using System.Text;
using SqlSugar;
namespace Admin.Core.Model
{
///<summary>
///配方信息
///</summary>
[SugarTable("xl_weigh", "admin_sqlite")]
public class xl_weigh
{
public xl_weigh()
{
}
/// <summary>
/// Desc:主键
/// Default:
/// Nullable:False
/// </summary>
[SugarColumn(IsPrimaryKey = true, IsIdentity = true)]
public int ID { get; set; }
/// <summary>
/// Desc:台机号
/// Default:
/// Nullable:True
/// </summary>
public string Equip_Code { get; set; }
/// <summary>
/// Desc:物料ID
/// Default:
/// Nullable:True
/// </summary>
public string Recipe_ID { get; set; }
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
public int? Bin_Serial { get; set; }
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
public int? Weight_Id { get; set; }
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
public string Material_ID { get; set; }
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
public int? Station { get; set; }
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
public decimal? Set_Weight { get; set; }
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
public decimal? Set_Error { get; set; }
/// <summary>
/// Desc:
/// Default:
/// Nullable:True
/// </summary>
public decimal? Cpk_Error { get; set; }
}
}

@ -92,6 +92,10 @@ namespace Admin.Core.Model.ViewModels
/// Nullable:True
/// </summary>
public string Recipe { get; set; }
/// <summary>
/// 皮重
/// </summary>
public decimal Tare { get; set; }
}
}

@ -135,5 +135,9 @@ namespace Admin.Core.Model.ViewModels
/// 固含率
/// </summary>
public double Rate { get; set; }
/// <summary>
/// 二维码信息
/// </summary>
public List<string> BarCodeList { get; set; }
}
}

@ -8,6 +8,7 @@
<ItemGroup>
<ProjectReference Include="..\Admin.Core.Common\Admin.Core.Common.csproj" />
<ProjectReference Include="..\Admin.Core.PlcServer\Admin.Core.PlcServer.csproj" />
<ProjectReference Include="..\S71500\S71500.csproj" />
</ItemGroup>

@ -1,4 +1,6 @@
using Admin.Core.Common;
using Admin.Core.PlcServer;
using log4net;
using S71500.Impl;
using System;
using System.Collections.Generic;
@ -11,6 +13,8 @@ namespace Admin.Core.Plc
{
public class S71500Service : IS71500Service
{
bool flag = true;
public S71500Service()
{
string address = Appsettings.app("Siemens", "ConString").ToString();
@ -20,7 +24,6 @@ namespace Admin.Core.Plc
}
public Task AddPlcAsync()
{
System.Timers.Timer timer = new System.Timers.Timer(5000);//创建定时器设置间隔时间为1000毫秒
timer.Elapsed += new System.Timers.ElapsedEventHandler(ExecTask); //到达时间的时候执行事件;
timer.AutoReset = true;//设置是执行一次false还是一直执行(true)
@ -30,9 +33,10 @@ namespace Admin.Core.Plc
return Task.CompletedTask;
}
private void ExecTask(object source, System.Timers.ElapsedEventArgs e)
{
if (Adapter.Device_GetState("M100"))
if (Adapter.Device_GetState("DB110.DBW24"))
{
Console.WriteLine("PLC连接成功");
}
@ -50,5 +54,7 @@ namespace Admin.Core.Plc
}
}
}
}
}

@ -38,6 +38,7 @@ namespace Admin.Core.PlcServer
/// <param name="address"></param>
/// <returns></returns>
bool ReadBool(string address);
Task<bool> ReadBoolAsync(string address);
/// <summary>
/// 读取int16
/// </summary>

@ -125,6 +125,7 @@ namespace Admin.Core.PlcServer
try
{
OperateResult<byte[]> read = siemensS7Net.Read(address, 26);
log.Info($"ReadBytes方法是否成功:{read.IsSuccess};反馈:{read.Message}");
if (read.IsSuccess)
{
byte[] code = new byte[read.Content.Length - 2];
@ -153,6 +154,27 @@ namespace Admin.Core.PlcServer
try
{
OperateResult<bool> read = siemensS7Net.ReadBool(address);
log.Info($"ReadBool方法是否成功:{read.IsSuccess};反馈:{read.Message}");
if (read.IsSuccess)
{
iflag = read.Content;
}
return iflag;
}
catch (Exception ex)
{
log.Error("ReadBool方法异常" + ex.ToString());
}
return iflag;
}
public async Task<bool> ReadBoolAsync(string address)
{
bool iflag = false;
try
{
OperateResult<bool> read =await siemensS7Net.ReadBoolAsync(address);
log.Info($"ReadBool方法是否成功:{read.IsSuccess};反馈:{read.Message}");
if (read.IsSuccess)
{
iflag = read.Content;
@ -179,6 +201,7 @@ namespace Admin.Core.PlcServer
try
{
OperateResult<Int16> read = siemensS7Net.ReadInt16(address);
log.Info($"ReadInt16方法是否成功:{read.IsSuccess};反馈:{read.Message}");
if (read.IsSuccess)
{
returnflag = read.Content;
@ -204,6 +227,7 @@ namespace Admin.Core.PlcServer
try
{
OperateResult<Int32> read = siemensS7Net.ReadInt32(address);
log.Info($"ReadInt32方法是否成功:{read.IsSuccess};反馈:{read.Message}");
if (read.IsSuccess)
{
returnflag = read.Content;
@ -230,6 +254,7 @@ namespace Admin.Core.PlcServer
try
{
OperateResult<string> read = siemensS7Net.ReadString(address, 10);
log.Info($"ReadString方法是否成功:{read.IsSuccess};反馈:{read.Message}");
if (read.IsSuccess)
{
returnflag = read.Content;
@ -256,6 +281,7 @@ namespace Admin.Core.PlcServer
try
{
OperateResult<float> read = siemensS7Net.ReadFloat(address);
log.Info($"ReadFloat方法是否成功:{read.IsSuccess};反馈:{read.Message}");
if (read.IsSuccess)
{
flag = read.Content;
@ -284,7 +310,7 @@ namespace Admin.Core.PlcServer
{
OperateResult write = siemensS7Net.Write(address, short.Parse(value));
//Task<OperateResult<TimeSpan>> operateResult = siemensS7Net.Wait(address, short.Parse(value));
log.Info($"WriteInt16方法是否成功:{write.IsSuccess};反馈:{write.Message}");
if (write.IsSuccess)
{
iflag = true;
@ -316,6 +342,7 @@ namespace Admin.Core.PlcServer
try
{
OperateResult write = siemensS7Net.Write(address, value);
log.Info($"WriteInt32方法是否成功:{write.IsSuccess};反馈:{write.Message}");
if (write.IsSuccess)
{
iflag = true;
@ -347,6 +374,7 @@ namespace Admin.Core.PlcServer
try
{
OperateResult write = siemensS7Net.Write(address, value);
log.Info($"WriteString方法是否成功:{write.IsSuccess};反馈:{write.Message}");
if (write.IsSuccess)
{
iflag = true;
@ -380,6 +408,7 @@ namespace Admin.Core.PlcServer
try
{
OperateResult write = siemensS7Net.Write(address, bytes);
log.Info($"WriteByte方法是否成功:{write.IsSuccess};反馈:{write.Message}");
if (write.IsSuccess)
{
iflag = true;
@ -411,6 +440,7 @@ namespace Admin.Core.PlcServer
try
{
OperateResult write = siemensS7Net.Write(address, value);
log.Info($"WriteFloat方法是否成功:{write.IsSuccess};反馈:{write.Message}");
if (write.IsSuccess)
{
iflag = true;
@ -444,6 +474,7 @@ namespace Admin.Core.PlcServer
try
{
OperateResult write = siemensS7Net.Write(address, value);
log.Info($"Writedouble方法是否成功:{write.IsSuccess};反馈:{write.Message}");
if (write.IsSuccess)
{
iflag = true;
@ -464,7 +495,7 @@ namespace Admin.Core.PlcServer
#endregion
#region 心跳使用——喂狗
#region 心跳使用
/// <summary>
/// 心跳使用
/// </summary>
@ -476,6 +507,7 @@ namespace Admin.Core.PlcServer
{
siemensS7Net.ReceiveTimeOut = 2000;
OperateResult<bool> read = await siemensS7Net.ReadBoolAsync(address);
log.Info($"心跳方法是否成功:{read.IsSuccess};反馈:{read.Message}");
if (read.IsSuccess)
{
IsConnected = true;

@ -0,0 +1,49 @@
using HslCommunication.Profinet.Siemens;
using log4net;
using System;
namespace Admin.Core.PlcServer
{
public class PlcConnect
{
private static readonly log4net.ILog log = LogManager.GetLogger(typeof(PlcConnect));
private static readonly Lazy<SiemensS7Net> lazy = new Lazy<SiemensS7Net>(() => new PlcConnect().SiemensS7NetConnection());
public static SiemensS7Net Instance => lazy.Value;
private PlcConnect()
{
if (HslCommunication.Authorization.SetAuthorizationCode("ed1415f8-e06a-43ad-95f7-c04f7ae93b41"))
{
Console.WriteLine("HslCommunication激活成功!");
}
}
public SiemensS7Net SiemensS7NetConnection()
{
Console.WriteLine("HslCommunication激活成功!");
SiemensPLCS siemensPLCS = SiemensPLCS.S1500;
SiemensS7Net s7 = new SiemensS7Net(siemensPLCS);
//配料IP
s7.IpAddress = "192.168.10.130";
s7.Port = 102;
var su = s7.ConnectServer();
if (!su.IsSuccess)
{
s7.IpAddress ="192.168.10.130";
s7.Port = 102;
var su1 = s7.ConnectServer();
if (!su1.IsSuccess)
{
return new SiemensS7Net(siemensPLCS);
}
}
return s7;
}
}
}

@ -0,0 +1,42 @@
using HslCommunication.Profinet.Siemens;
using System;
namespace Admin.Core.PlcServer
{
public class XlPlcConnect
{
private static readonly Lazy<SiemensS7Net> lazy = new Lazy<SiemensS7Net>(() => new XlPlcConnect().SiemensS7NetConnection());
public static SiemensS7Net Instance => lazy.Value;
private XlPlcConnect()
{
}
public SiemensS7Net SiemensS7NetConnection()
{
SiemensPLCS siemensPLCS = SiemensPLCS.S1500;
SiemensS7Net s7 = new SiemensS7Net(siemensPLCS);
//配料IP
s7.IpAddress = "127.0.0.1"; // "192.168.10.100";
s7.Port = 102;
var su = s7.ConnectServer();
if (!su.IsSuccess)
{
s7.IpAddress = "127.0.0.1"; // "192.168.10.100";
s7.Port = 102;
var su1 = s7.ConnectServer();
if (!su1.IsSuccess)
{
return new SiemensS7Net(siemensPLCS);
}
}
return s7;
}
}
}

@ -0,0 +1,8 @@
{
"profiles": {
"WSL": {
"commandName": "WSL2",
"distributionName": ""
}
}
}

@ -59,8 +59,8 @@ namespace Admin.Core.Repository
public async Task<TEntity> QueryByIdAsync(object objId)
{
//return await Task.Run(() => _db.Queryable<TEntity>().InSingle(objId));
return await _db.Queryable<TEntity>().In(objId).SingleAsync();
//return await Task.Run(() => _db.CopyNew().Queryable<TEntity>().InSingle(objId));
return await _db.CopyNew().Queryable<TEntity>().In(objId).SingleAsync();
}
/// <summary>
/// 功能描述:根据ID查询一条数据
@ -71,8 +71,8 @@ namespace Admin.Core.Repository
/// <returns>数据实体</returns>
public async Task<TEntity> QueryByIdAsync(object objId, bool blnUseCache = false)
{
//return await Task.Run(() => _db.Queryable<TEntity>().WithCacheIF(blnUseCache).InSingle(objId));
return await _db.Queryable<TEntity>().WithCacheIF(blnUseCache).In(objId).SingleAsync();
//return await Task.Run(() => _db.CopyNew().Queryable<TEntity>().WithCacheIF(blnUseCache).InSingle(objId));
return await _db.CopyNew().Queryable<TEntity>().WithCacheIF(blnUseCache).In(objId).SingleAsync();
}
/// <summary>
@ -83,8 +83,8 @@ namespace Admin.Core.Repository
/// <returns>数据实体列表</returns>
public async Task<List<TEntity>> QueryByIDsAsync(object[] lstIds)
{
//return await Task.Run(() => _db.Queryable<TEntity>().In(lstIds).ToList());
return await _db.Queryable<TEntity>().In(lstIds).ToListAsync();
//return await Task.Run(() => _db.CopyNew().Queryable<TEntity>().In(lstIds).ToList());
return await _db.CopyNew().Queryable<TEntity>().In(lstIds).ToListAsync();
}
/// <summary>
@ -94,11 +94,11 @@ namespace Admin.Core.Repository
/// <returns></returns>
public async Task<int> AddAsync(TEntity entity)
{
//var i = await Task.Run(() => _db.Insertable(entity).ExecuteReturnBigIdentity());
//var i = await Task.Run(() => _db.CopyNew().Insertable(entity).ExecuteReturnBigIdentity());
////返回的i是long类型,这里你可以根据你的业务需要进行处理
//return (int)i;
var insert = _db.Insertable(entity);
var insert = _db.CopyNew().Insertable(entity);
//这里你可以返回TEntity这样的话就可以获取id值无论主键是什么类型
//var return3 = await insert.ExecuteReturnEntityAsync();
@ -115,7 +115,7 @@ namespace Admin.Core.Repository
/// <returns>返回自增量列</returns>
public async Task<int> AddAsync(TEntity entity, Expression<Func<TEntity, object>> insertColumns = null)
{
var insert = _db.Insertable(entity);
var insert = _db.CopyNew().Insertable(entity);
if (insertColumns == null)
{
return await insert.ExecuteReturnIdentityAsync();
@ -133,7 +133,7 @@ namespace Admin.Core.Repository
/// <returns>影响行数</returns>
public async Task<int> AddAsync(List<TEntity> listEntity)
{
return await _db.Insertable(listEntity.ToArray()).ExecuteCommandAsync();
return await _db.CopyNew().Insertable(listEntity.ToArray()).ExecuteCommandAsync();
}
/// <summary>
@ -144,27 +144,27 @@ namespace Admin.Core.Repository
public async Task<bool> UpdateAsync(TEntity entity)
{
////这种方式会以主键为条件
//var i = await Task.Run(() => _db.Updateable(entity).ExecuteCommand());
//var i = await Task.Run(() => _db.CopyNew().Updateable(entity).ExecuteCommand());
//return i > 0;
//这种方式会以主键为条件
return await _db.Updateable(entity).ExecuteCommandHasChangeAsync();
return await _db.CopyNew().Updateable(entity).ExecuteCommandHasChangeAsync();
}
public async Task<bool> UpdateAsync(TEntity entity, string strWhere)
{
//return await Task.Run(() => _db.Updateable(entity).Where(strWhere).ExecuteCommand() > 0);
return await _db.Updateable(entity).Where(strWhere).ExecuteCommandHasChangeAsync();
//return await Task.Run(() => _db.CopyNew().Updateable(entity).Where(strWhere).ExecuteCommand() > 0);
return await _db.CopyNew().Updateable(entity).Where(strWhere).ExecuteCommandHasChangeAsync();
}
public async Task<bool> UpdateAsync(string strSql, SugarParameter[] parameters = null)
{
//return await Task.Run(() => _db.Ado.ExecuteCommand(strSql, parameters) > 0);
return await _db.Ado.ExecuteCommandAsync(strSql, parameters) > 0;
//return await Task.Run(() => _db.CopyNew().Ado.ExecuteCommand(strSql, parameters) > 0);
return await _db.CopyNew().Ado.ExecuteCommandAsync(strSql, parameters) > 0;
}
public async Task<bool> UpdateAsync(object operateAnonymousObjects)
{
return await _db.Updateable<TEntity>(operateAnonymousObjects).ExecuteCommandAsync() > 0;
return await _db.CopyNew().Updateable<TEntity>(operateAnonymousObjects).ExecuteCommandAsync() > 0;
}
public async Task<bool> UpdateAsync(
@ -174,7 +174,7 @@ namespace Admin.Core.Repository
string strWhere = ""
)
{
//IUpdateable<TEntity> up = await Task.Run(() => _db.Updateable(entity));
//IUpdateable<TEntity> up = await Task.Run(() => _db.CopyNew().Updateable(entity));
//if (lstIgnoreColumns != null && lstIgnoreColumns.Count > 0)
//{
// up = await Task.Run(() => up.IgnoreColumns(it => lstIgnoreColumns.Contains(it)));
@ -189,7 +189,7 @@ namespace Admin.Core.Repository
//}
//return await Task.Run(() => up.ExecuteCommand()) > 0;
IUpdateable<TEntity> up = _db.Updateable(entity);
IUpdateable<TEntity> up = _db.CopyNew().Updateable(entity);
if (lstIgnoreColumns != null && lstIgnoreColumns.Count > 0)
{
up = up.IgnoreColumns(lstIgnoreColumns.ToArray());
@ -210,7 +210,7 @@ namespace Admin.Core.Repository
/// <returns></returns>
public async Task<TEntity> FirstAsync()
{
return await _db.Queryable<TEntity>().FirstAsync();
return await _db.CopyNew().Queryable<TEntity>().FirstAsync();
}
/// <summary>
/// 查询第一条数据
@ -219,7 +219,7 @@ namespace Admin.Core.Repository
/// <returns></returns>
public async Task<TEntity> FirstAsync(Expression<Func<TEntity, bool>> whereExpression)
{
return await _db.Queryable<TEntity>().WhereIF(whereExpression != null, whereExpression).FirstAsync();
return await _db.CopyNew().Queryable<TEntity>().WhereIF(whereExpression != null, whereExpression).FirstAsync();
}
/// <summary>
/// 根据实体删除一条数据
@ -228,9 +228,9 @@ namespace Admin.Core.Repository
/// <returns></returns>
public async Task<bool> DeleteAsync(TEntity entity)
{
//var i = await Task.Run(() => _db.Deleteable(entity).ExecuteCommand());
//var i = await Task.Run(() => _db.CopyNew().Deleteable(entity).ExecuteCommand());
//return i > 0;
return await _db.Deleteable(entity).ExecuteCommandHasChangeAsync();
return await _db.CopyNew().Deleteable(entity).ExecuteCommandHasChangeAsync();
}
/// <summary>
@ -240,9 +240,9 @@ namespace Admin.Core.Repository
/// <returns></returns>
public async Task<bool> DeleteByIdAsync(object id)
{
//var i = await Task.Run(() => _db.Deleteable<TEntity>(id).ExecuteCommand());
//var i = await Task.Run(() => _db.CopyNew().Deleteable<TEntity>(id).ExecuteCommand());
//return i > 0;
return await _db.Deleteable<TEntity>(id).ExecuteCommandHasChangeAsync();
return await _db.CopyNew().Deleteable<TEntity>(id).ExecuteCommandHasChangeAsync();
}
/// <summary>
@ -252,9 +252,9 @@ namespace Admin.Core.Repository
/// <returns></returns>
public async Task<bool> DeletesAsync(List<TEntity> entitys)
{
//var i = await Task.Run(() => _db.Deleteable<TEntity>().In(ids).ExecuteCommand());
//var i = await Task.Run(() => _db.CopyNew().Deleteable<TEntity>().In(ids).ExecuteCommand());
//return i > 0;
return await _db.Deleteable<TEntity>(entitys).ExecuteCommandHasChangeAsync();
return await _db.CopyNew().Deleteable<TEntity>(entitys).ExecuteCommandHasChangeAsync();
}
/// <summary>
@ -264,7 +264,7 @@ namespace Admin.Core.Repository
/// <returns>数据列表</returns>
public async Task<List<TEntity>> QueryAsync()
{
return await _db.Queryable<TEntity>().ToListAsync();
return await _db.CopyNew().Queryable<TEntity>().ToListAsync();
}
/// <summary>
@ -275,8 +275,8 @@ namespace Admin.Core.Repository
/// <returns>数据列表</returns>
public async Task<List<TEntity>> QueryAsync(string strWhere)
{
//return await Task.Run(() => _db.Queryable<TEntity>().WhereIF(!string.IsNullOrEmpty(strWhere), strWhere).ToList());
return await _db.Queryable<TEntity>().WhereIF(!string.IsNullOrEmpty(strWhere), strWhere).ToListAsync();
//return await Task.Run(() => _db.CopyNew().Queryable<TEntity>().WhereIF(!string.IsNullOrEmpty(strWhere), strWhere).ToList());
return await _db.CopyNew().Queryable<TEntity>().WhereIF(!string.IsNullOrEmpty(strWhere), strWhere).ToListAsync();
}
/// <summary>
@ -287,7 +287,7 @@ namespace Admin.Core.Repository
/// <returns>数据列表</returns>
public async Task<List<TEntity>> QueryAsync(Expression<Func<TEntity, bool>> whereExpression)
{
return await _db.Queryable<TEntity>().WhereIF(whereExpression != null, whereExpression).ToListAsync();
return await _db.CopyNew().Queryable<TEntity>().WhereIF(whereExpression != null, whereExpression).ToListAsync();
}
/// <summary>
@ -299,7 +299,7 @@ namespace Admin.Core.Repository
/// <returns></returns>
public async Task<List<TResult>> QueryAsync<TResult>(Expression<Func<TEntity, TResult>> expression)
{
return await _db.Queryable<TEntity>().Select(expression).ToListAsync();
return await _db.CopyNew().Queryable<TEntity>().Select(expression).ToListAsync();
}
/// <summary>
@ -313,7 +313,7 @@ namespace Admin.Core.Repository
/// <returns></returns>
public async Task<List<TResult>> QueryAsync<TResult>(Expression<Func<TEntity, TResult>> expression, Expression<Func<TEntity, bool>> whereExpression, string strOrderByFileds)
{
return await _db.Queryable<TEntity>().OrderByIF(!string.IsNullOrEmpty(strOrderByFileds), strOrderByFileds).WhereIF(whereExpression != null, whereExpression).Select(expression).ToListAsync();
return await _db.CopyNew().Queryable<TEntity>().OrderByIF(!string.IsNullOrEmpty(strOrderByFileds), strOrderByFileds).WhereIF(whereExpression != null, whereExpression).Select(expression).ToListAsync();
}
/// <summary>
@ -325,8 +325,8 @@ namespace Admin.Core.Repository
/// <returns>数据列表</returns>
public async Task<List<TEntity>> QueryAsync(Expression<Func<TEntity, bool>> whereExpression, string strOrderByFileds)
{
//return await Task.Run(() => _db.Queryable<TEntity>().OrderByIF(!string.IsNullOrEmpty(strOrderByFileds), strOrderByFileds).WhereIF(whereExpression != null, whereExpression).ToList());
return await _db.Queryable<TEntity>().WhereIF(whereExpression != null, whereExpression).OrderByIF(strOrderByFileds != null, strOrderByFileds).ToListAsync();
//return await Task.Run(() => _db.CopyNew().Queryable<TEntity>().OrderByIF(!string.IsNullOrEmpty(strOrderByFileds), strOrderByFileds).WhereIF(whereExpression != null, whereExpression).ToList());
return await _db.CopyNew().Queryable<TEntity>().WhereIF(whereExpression != null, whereExpression).OrderByIF(strOrderByFileds != null, strOrderByFileds).ToListAsync();
}
/// <summary>
/// 功能描述:查询一个列表
@ -337,8 +337,8 @@ namespace Admin.Core.Repository
/// <returns></returns>
public async Task<List<TEntity>> QueryAsync(Expression<Func<TEntity, bool>> whereExpression, Expression<Func<TEntity, object>> orderByExpression, bool isAsc = true)
{
//return await Task.Run(() => _db.Queryable<TEntity>().OrderByIF(orderByExpression != null, orderByExpression, isAsc ? OrderByType.Asc : OrderByType.Desc).WhereIF(whereExpression != null, whereExpression).ToList());
return await _db.Queryable<TEntity>().OrderByIF(orderByExpression != null, orderByExpression, isAsc ? OrderByType.Asc : OrderByType.Desc).WhereIF(whereExpression != null, whereExpression).ToListAsync();
//return await Task.Run(() => _db.CopyNew().Queryable<TEntity>().OrderByIF(orderByExpression != null, orderByExpression, isAsc ? OrderByType.Asc : OrderByType.Desc).WhereIF(whereExpression != null, whereExpression).ToList());
return await _db.CopyNew().Queryable<TEntity>().OrderByIF(orderByExpression != null, orderByExpression, isAsc ? OrderByType.Asc : OrderByType.Desc).WhereIF(whereExpression != null, whereExpression).ToListAsync();
}
/// <summary>
@ -350,8 +350,8 @@ namespace Admin.Core.Repository
/// <returns>数据列表</returns>
public async Task<List<TEntity>> QueryAsync(string strWhere, string strOrderByFileds)
{
//return await Task.Run(() => _db.Queryable<TEntity>().OrderByIF(!string.IsNullOrEmpty(strOrderByFileds), strOrderByFileds).WhereIF(!string.IsNullOrEmpty(strWhere), strWhere).ToList());
return await _db.Queryable<TEntity>().OrderByIF(!string.IsNullOrEmpty(strOrderByFileds), strOrderByFileds).WhereIF(!string.IsNullOrEmpty(strWhere), strWhere).ToListAsync();
//return await Task.Run(() => _db.CopyNew().Queryable<TEntity>().OrderByIF(!string.IsNullOrEmpty(strOrderByFileds), strOrderByFileds).WhereIF(!string.IsNullOrEmpty(strWhere), strWhere).ToList());
return await _db.CopyNew().Queryable<TEntity>().OrderByIF(!string.IsNullOrEmpty(strOrderByFileds), strOrderByFileds).WhereIF(!string.IsNullOrEmpty(strWhere), strWhere).ToListAsync();
}
@ -368,8 +368,8 @@ namespace Admin.Core.Repository
int intTop,
string strOrderByFileds)
{
//return await Task.Run(() => _db.Queryable<TEntity>().OrderByIF(!string.IsNullOrEmpty(strOrderByFileds), strOrderByFileds).WhereIF(whereExpression != null, whereExpression).Take(intTop).ToList());
return await _db.Queryable<TEntity>().OrderByIF(!string.IsNullOrEmpty(strOrderByFileds), strOrderByFileds).WhereIF(whereExpression != null, whereExpression).Take(intTop).ToListAsync();
//return await Task.Run(() => _db.CopyNew().Queryable<TEntity>().OrderByIF(!string.IsNullOrEmpty(strOrderByFileds), strOrderByFileds).WhereIF(whereExpression != null, whereExpression).Take(intTop).ToList());
return await _db.CopyNew().Queryable<TEntity>().OrderByIF(!string.IsNullOrEmpty(strOrderByFileds), strOrderByFileds).WhereIF(whereExpression != null, whereExpression).Take(intTop).ToListAsync();
}
/// <summary>
@ -385,8 +385,8 @@ namespace Admin.Core.Repository
int intTop,
string strOrderByFileds)
{
//return await Task.Run(() => _db.Queryable<TEntity>().OrderByIF(!string.IsNullOrEmpty(strOrderByFileds), strOrderByFileds).WhereIF(!string.IsNullOrEmpty(strWhere), strWhere).Take(intTop).ToList());
return await _db.Queryable<TEntity>().OrderByIF(!string.IsNullOrEmpty(strOrderByFileds), strOrderByFileds).WhereIF(!string.IsNullOrEmpty(strWhere), strWhere).Take(intTop).ToListAsync();
//return await Task.Run(() => _db.CopyNew().Queryable<TEntity>().OrderByIF(!string.IsNullOrEmpty(strOrderByFileds), strOrderByFileds).WhereIF(!string.IsNullOrEmpty(strWhere), strWhere).Take(intTop).ToList());
return await _db.CopyNew().Queryable<TEntity>().OrderByIF(!string.IsNullOrEmpty(strOrderByFileds), strOrderByFileds).WhereIF(!string.IsNullOrEmpty(strWhere), strWhere).Take(intTop).ToListAsync();
}
/// <summary>
@ -397,7 +397,7 @@ namespace Admin.Core.Repository
/// <returns>泛型集合</returns>
public async Task<List<TEntity>> QuerySqlAsync(string strSql, SugarParameter[] parameters = null)
{
return await _db.Ado.SqlQueryAsync<TEntity>(strSql, parameters);
return await _db.CopyNew().Ado.SqlQueryAsync<TEntity>(strSql, parameters);
}
/// <summary>
@ -408,7 +408,7 @@ namespace Admin.Core.Repository
/// <returns>泛型集合</returns>
public async Task<int> ExecSqlAsync(string strSql, SugarParameter[] parameters = null)
{
return await _db.Ado.ExecuteCommandAsync(strSql, parameters);
return await _db.CopyNew().Ado.ExecuteCommandAsync(strSql, parameters);
}
/// <summary>
@ -419,7 +419,7 @@ namespace Admin.Core.Repository
/// <returns>DataTable</returns>
public async Task<DataTable> QueryTableAsync(string strSql, SugarParameter[] parameters = null)
{
return await _db.Ado.GetDataTableAsync(strSql, parameters);
return await _db.CopyNew().Ado.GetDataTableAsync(strSql, parameters);
}
/// <summary>
@ -437,8 +437,8 @@ namespace Admin.Core.Repository
int intPageSize,
string strOrderByFileds)
{
//return await Task.Run(() => _db.Queryable<TEntity>().OrderByIF(!string.IsNullOrEmpty(strOrderByFileds), strOrderByFileds).WhereIF(whereExpression != null, whereExpression).ToPageList(intPageIndex, intPageSize));
return await _db.Queryable<TEntity>().OrderByIF(!string.IsNullOrEmpty(strOrderByFileds), strOrderByFileds).WhereIF(whereExpression != null, whereExpression).ToPageListAsync(intPageIndex, intPageSize);
//return await Task.Run(() => _db.CopyNew().Queryable<TEntity>().OrderByIF(!string.IsNullOrEmpty(strOrderByFileds), strOrderByFileds).WhereIF(whereExpression != null, whereExpression).ToPageList(intPageIndex, intPageSize));
return await _db.CopyNew().Queryable<TEntity>().OrderByIF(!string.IsNullOrEmpty(strOrderByFileds), strOrderByFileds).WhereIF(whereExpression != null, whereExpression).ToPageListAsync(intPageIndex, intPageSize);
}
/// <summary>
@ -457,8 +457,8 @@ namespace Admin.Core.Repository
string strOrderByFileds)
{
//return await Task.Run(() => _db.Queryable<TEntity>().OrderByIF(!string.IsNullOrEmpty(strOrderByFileds), strOrderByFileds).WhereIF(!string.IsNullOrEmpty(strWhere), strWhere).ToPageList(intPageIndex, intPageSize));
return await _db.Queryable<TEntity>().OrderByIF(!string.IsNullOrEmpty(strOrderByFileds), strOrderByFileds).WhereIF(!string.IsNullOrEmpty(strWhere), strWhere).ToPageListAsync(intPageIndex, intPageSize);
//return await Task.Run(() => _db.CopyNew().Queryable<TEntity>().OrderByIF(!string.IsNullOrEmpty(strOrderByFileds), strOrderByFileds).WhereIF(!string.IsNullOrEmpty(strWhere), strWhere).ToPageList(intPageIndex, intPageSize));
return await _db.CopyNew().Queryable<TEntity>().OrderByIF(!string.IsNullOrEmpty(strOrderByFileds), strOrderByFileds).WhereIF(!string.IsNullOrEmpty(strWhere), strWhere).ToPageListAsync(intPageIndex, intPageSize);
}
@ -475,7 +475,7 @@ namespace Admin.Core.Repository
{
RefAsync<int> totalCount = 0;
var list = await _db.Queryable<TEntity>()
var list = await _db.CopyNew().Queryable<TEntity>()
.OrderByIF(!string.IsNullOrEmpty(strOrderByFileds), strOrderByFileds)
.WhereIF(whereExpression != null, whereExpression)
.ToPageListAsync(intPageIndex, intPageSize, totalCount);
@ -503,9 +503,9 @@ namespace Admin.Core.Repository
{
if (whereLambda == null)
{
return await _db.Queryable(joinExpression).Select(selectExpression).ToListAsync();
return await _db.CopyNew().Queryable(joinExpression).Select(selectExpression).ToListAsync();
}
return await _db.Queryable(joinExpression).Where(whereLambda).Select(selectExpression).ToListAsync();
return await _db.CopyNew().Queryable(joinExpression).Where(whereLambda).Select(selectExpression).ToListAsync();
}
@ -532,7 +532,7 @@ namespace Admin.Core.Repository
{
RefAsync<int> totalCount = 0;
var list = await _db.Queryable<T, T2>(joinExpression)
var list = await _db.CopyNew().Queryable<T, T2>(joinExpression)
.Select(selectExpression)
.OrderByIF(!string.IsNullOrEmpty(strOrderByFileds), strOrderByFileds)
.WhereIF(whereExpression != null, whereExpression)
@ -565,7 +565,7 @@ namespace Admin.Core.Repository
{
RefAsync<int> totalCount = 0;
var list = await _db.Queryable<T, T2>(joinExpression).GroupBy(groupExpression)
var list = await _db.CopyNew().Queryable<T, T2>(joinExpression).GroupBy(groupExpression)
.Select(selectExpression)
.OrderByIF(!string.IsNullOrEmpty(strOrderByFileds), strOrderByFileds)
.WhereIF(whereExpression != null, whereExpression)
@ -580,7 +580,7 @@ namespace Admin.Core.Repository
public TEntity QueryById(object objId)
{
return _db.Queryable<TEntity>().In(objId).Single();
return _db.CopyNew().Queryable<TEntity>().In(objId).Single();
}
/// <summary
/// 功能描述:根据ID查询一条数据
@ -591,7 +591,7 @@ namespace Admin.Core.Repository
/// <returns数据实体</returns
public TEntity QueryById(object objId, bool blnUseCache = false)
{
return _db.Queryable<TEntity>().WithCacheIF(blnUseCache).In(objId).Single();
return _db.CopyNew().Queryable<TEntity>().WithCacheIF(blnUseCache).In(objId).Single();
}
/// <summary
@ -602,7 +602,7 @@ namespace Admin.Core.Repository
/// <returns数据实体列表</returns
public List<TEntity> QueryByIDs(object[] lstIds)
{
return _db.Queryable<TEntity>().In(lstIds).ToList();
return _db.CopyNew().Queryable<TEntity>().In(lstIds).ToList();
}
/// <summary
@ -612,7 +612,7 @@ namespace Admin.Core.Repository
/// <returns</returns
public int Add(TEntity entity)
{
var insert = _db.Insertable(entity);
var insert = _db.CopyNew().Insertable(entity);
return insert.ExecuteReturnIdentity();
}
@ -626,7 +626,7 @@ namespace Admin.Core.Repository
/// <returns返回自增量列</returns
public int Add(TEntity entity, Expression<Func<TEntity, object>> insertColumns = null)
{
var insert = _db.Insertable(entity);
var insert = _db.CopyNew().Insertable(entity);
if (insertColumns == null)
{
return insert.ExecuteReturnIdentity();
@ -644,7 +644,7 @@ namespace Admin.Core.Repository
/// <returns影响行数</returns
public int Add(List<TEntity> listEntity)
{
return _db.Insertable(listEntity.ToArray()).ExecuteCommand();
return _db.CopyNew().Insertable(listEntity.ToArray()).ExecuteCommand();
}
/// <summary
@ -655,27 +655,27 @@ namespace Admin.Core.Repository
public bool Update(TEntity entity)
{
////这种方式会以主键为条件
//var i = Task.Run(() = _db.Updateable(entity).ExecuteCommand());
//var i = Task.Run(() = _db.CopyNew().Updateable(entity).ExecuteCommand());
//return i 0;
//这种方式会以主键为条件
return _db.Updateable(entity).ExecuteCommandHasChange();
return _db.CopyNew().Updateable(entity).ExecuteCommandHasChange();
}
public bool Update(TEntity entity, string strWhere)
{
//return Task.Run(() = _db.Updateable(entity).Where(strWhere).ExecuteCommand() 0);
return _db.Updateable(entity).Where(strWhere).ExecuteCommandHasChange();
//return Task.Run(() = _db.CopyNew().Updateable(entity).Where(strWhere).ExecuteCommand() 0);
return _db.CopyNew().Updateable(entity).Where(strWhere).ExecuteCommandHasChange();
}
public bool Update(string strSql, SugarParameter[] parameters = null)
{
//return Task.Run(() = _db.Ado.ExecuteCommand(strSql, parameters) 0);
return _db.Ado.ExecuteCommand(strSql, parameters) > 0;
//return Task.Run(() = _db.CopyNew().Ado.ExecuteCommand(strSql, parameters) 0);
return _db.CopyNew().Ado.ExecuteCommand(strSql, parameters) > 0;
}
public bool Update(object operateAnonymousObjects)
{
return _db.Updateable<TEntity>(operateAnonymousObjects).ExecuteCommand() > 0;
return _db.CopyNew().Updateable<TEntity>(operateAnonymousObjects).ExecuteCommand() > 0;
}
public bool Update(
@ -686,7 +686,7 @@ namespace Admin.Core.Repository
)
{
IUpdateable<TEntity> up = _db.Updateable(entity);
IUpdateable<TEntity> up = _db.CopyNew().Updateable(entity);
if (lstIgnoreColumns != null && lstIgnoreColumns.Count > 0)
{
up = up.IgnoreColumns(lstIgnoreColumns.ToArray());
@ -709,9 +709,9 @@ namespace Admin.Core.Repository
/// <returns</returns
public bool Delete(TEntity entity)
{
//var i = Task.Run(() = _db.Deleteable(entity).ExecuteCommand());
//var i = Task.Run(() = _db.CopyNew().Deleteable(entity).ExecuteCommand());
//return i 0;
return _db.Deleteable(entity).ExecuteCommandHasChange();
return _db.CopyNew().Deleteable(entity).ExecuteCommandHasChange();
}
/// <summary
@ -721,9 +721,9 @@ namespace Admin.Core.Repository
/// <returns</returns
public bool DeleteById(object id)
{
//var i = Task.Run(() = _db.Deleteable<TEntity(id).ExecuteCommand());
//var i = Task.Run(() = _db.CopyNew().Deleteable<TEntity(id).ExecuteCommand());
//return i 0;
return _db.Deleteable<TEntity>(id).ExecuteCommandHasChange();
return _db.CopyNew().Deleteable<TEntity>(id).ExecuteCommandHasChange();
}
/// <summary
@ -733,9 +733,9 @@ namespace Admin.Core.Repository
/// <returns</returns
public bool Deletes(List<TEntity> entitys)
{
//var i = Task.Run(() = _db.Deleteable<TEntity().In(ids).ExecuteCommand());
//var i = Task.Run(() = _db.CopyNew().Deleteable<TEntity().In(ids).ExecuteCommand());
//return i 0;
return _db.Deleteable<TEntity>(entitys).ExecuteCommandHasChange();
return _db.CopyNew().Deleteable<TEntity>(entitys).ExecuteCommandHasChange();
}
@ -747,7 +747,7 @@ namespace Admin.Core.Repository
/// <returns数据列表</returns
public List<TEntity> Query()
{
return _db.Queryable<TEntity>().ToList();
return _db.CopyNew().Queryable<TEntity>().ToList();
}
/// <summary
@ -758,8 +758,8 @@ namespace Admin.Core.Repository
/// <returns数据列表</returns
public List<TEntity> Query(string strWhere)
{
//return Task.Run(() = _db.Queryable<TEntity().WhereIF(!string.IsNullOrEmpty(strWhere), strWhere).ToList());
return _db.Queryable<TEntity>().WhereIF(!string.IsNullOrEmpty(strWhere), strWhere).ToList();
//return Task.Run(() = _db.CopyNew().Queryable<TEntity().WhereIF(!string.IsNullOrEmpty(strWhere), strWhere).ToList());
return _db.CopyNew().Queryable<TEntity>().WhereIF(!string.IsNullOrEmpty(strWhere), strWhere).ToList();
}
/// <summary
@ -770,7 +770,7 @@ namespace Admin.Core.Repository
/// <returns数据列表</returns
public List<TEntity> Query(Expression<Func<TEntity, bool>> whereExpression)
{
return _db.Queryable<TEntity>().WhereIF(whereExpression != null, whereExpression).ToList();
return _db.CopyNew().Queryable<TEntity>().WhereIF(whereExpression != null, whereExpression).ToList();
}
/// <summary
@ -782,7 +782,7 @@ namespace Admin.Core.Repository
/// <returns</returns
public List<TResult> Query<TResult>(Expression<Func<TEntity, TResult>> expression)
{
return _db.Queryable<TEntity>().Select(expression).ToList();
return _db.CopyNew().Queryable<TEntity>().Select(expression).ToList();
}
/// <summary
@ -796,7 +796,7 @@ namespace Admin.Core.Repository
/// <returns</returns
public List<TResult> Query<TResult>(Expression<Func<TEntity, TResult>> expression, Expression<Func<TEntity, bool>> whereExpression, string strOrderByFileds)
{
return _db.Queryable<TEntity>().OrderByIF(!string.IsNullOrEmpty(strOrderByFileds), strOrderByFileds).WhereIF(whereExpression != null, whereExpression).Select(expression).ToList();
return _db.CopyNew().Queryable<TEntity>().OrderByIF(!string.IsNullOrEmpty(strOrderByFileds), strOrderByFileds).WhereIF(whereExpression != null, whereExpression).Select(expression).ToList();
}
/// <summary
@ -808,8 +808,8 @@ namespace Admin.Core.Repository
/// <returns数据列表</returns
public List<TEntity> Query(Expression<Func<TEntity, bool>> whereExpression, string strOrderByFileds)
{
//return Task.Run(() = _db.Queryable<TEntity().OrderByIF(!string.IsNullOrEmpty(strOrderByFileds), strOrderByFileds).WhereIF(whereExpression != null, whereExpression).ToList());
return _db.Queryable<TEntity>().WhereIF(whereExpression != null, whereExpression).OrderByIF(strOrderByFileds != null, strOrderByFileds).ToList();
//return Task.Run(() = _db.CopyNew().Queryable<TEntity().OrderByIF(!string.IsNullOrEmpty(strOrderByFileds), strOrderByFileds).WhereIF(whereExpression != null, whereExpression).ToList());
return _db.CopyNew().Queryable<TEntity>().WhereIF(whereExpression != null, whereExpression).OrderByIF(strOrderByFileds != null, strOrderByFileds).ToList();
}
/// <summary
/// 功能描述:查询一个列表
@ -820,8 +820,8 @@ namespace Admin.Core.Repository
/// <returns</returns
public List<TEntity> Query(Expression<Func<TEntity, bool>> whereExpression, Expression<Func<TEntity, object>> orderByExpression, bool isAsc = true)
{
//return Task.Run(() = _db.Queryable<TEntity().OrderByIF(orderByExpression != null, orderByExpression, isAsc ? OrderByType.Asc : OrderByType.Desc).WhereIF(whereExpression != null, whereExpression).ToList());
return _db.Queryable<TEntity>().OrderByIF(orderByExpression != null, orderByExpression, isAsc ? OrderByType.Asc : OrderByType.Desc).WhereIF(whereExpression != null, whereExpression).ToList();
//return Task.Run(() = _db.CopyNew().Queryable<TEntity().OrderByIF(orderByExpression != null, orderByExpression, isAsc ? OrderByType.Asc : OrderByType.Desc).WhereIF(whereExpression != null, whereExpression).ToList());
return _db.CopyNew().Queryable<TEntity>().OrderByIF(orderByExpression != null, orderByExpression, isAsc ? OrderByType.Asc : OrderByType.Desc).WhereIF(whereExpression != null, whereExpression).ToList();
}
/// <summary
@ -833,8 +833,8 @@ namespace Admin.Core.Repository
/// <returns数据列表</returns
public List<TEntity> Query(string strWhere, string strOrderByFileds)
{
//return Task.Run(() = _db.Queryable<TEntity().OrderByIF(!string.IsNullOrEmpty(strOrderByFileds), strOrderByFileds).WhereIF(!string.IsNullOrEmpty(strWhere), strWhere).ToList());
return _db.Queryable<TEntity>().OrderByIF(!string.IsNullOrEmpty(strOrderByFileds), strOrderByFileds).WhereIF(!string.IsNullOrEmpty(strWhere), strWhere).ToList();
//return Task.Run(() = _db.CopyNew().Queryable<TEntity().OrderByIF(!string.IsNullOrEmpty(strOrderByFileds), strOrderByFileds).WhereIF(!string.IsNullOrEmpty(strWhere), strWhere).ToList());
return _db.CopyNew().Queryable<TEntity>().OrderByIF(!string.IsNullOrEmpty(strOrderByFileds), strOrderByFileds).WhereIF(!string.IsNullOrEmpty(strWhere), strWhere).ToList();
}
@ -851,8 +851,8 @@ namespace Admin.Core.Repository
int intTop,
string strOrderByFileds)
{
//return Task.Run(() = _db.Queryable<TEntity().OrderByIF(!string.IsNullOrEmpty(strOrderByFileds), strOrderByFileds).WhereIF(whereExpression != null, whereExpression).Take(intTop).ToList());
return _db.Queryable<TEntity>().OrderByIF(!string.IsNullOrEmpty(strOrderByFileds), strOrderByFileds).WhereIF(whereExpression != null, whereExpression).Take(intTop).ToList();
//return Task.Run(() = _db.CopyNew().Queryable<TEntity().OrderByIF(!string.IsNullOrEmpty(strOrderByFileds), strOrderByFileds).WhereIF(whereExpression != null, whereExpression).Take(intTop).ToList());
return _db.CopyNew().Queryable<TEntity>().OrderByIF(!string.IsNullOrEmpty(strOrderByFileds), strOrderByFileds).WhereIF(whereExpression != null, whereExpression).Take(intTop).ToList();
}
/// <summary
@ -868,8 +868,8 @@ namespace Admin.Core.Repository
int intTop,
string strOrderByFileds)
{
//return Task.Run(() = _db.Queryable<TEntity().OrderByIF(!string.IsNullOrEmpty(strOrderByFileds), strOrderByFileds).WhereIF(!string.IsNullOrEmpty(strWhere), strWhere).Take(intTop).ToList());
return _db.Queryable<TEntity>().OrderByIF(!string.IsNullOrEmpty(strOrderByFileds), strOrderByFileds).WhereIF(!string.IsNullOrEmpty(strWhere), strWhere).Take(intTop).ToList();
//return Task.Run(() = _db.CopyNew().Queryable<TEntity().OrderByIF(!string.IsNullOrEmpty(strOrderByFileds), strOrderByFileds).WhereIF(!string.IsNullOrEmpty(strWhere), strWhere).Take(intTop).ToList());
return _db.CopyNew().Queryable<TEntity>().OrderByIF(!string.IsNullOrEmpty(strOrderByFileds), strOrderByFileds).WhereIF(!string.IsNullOrEmpty(strWhere), strWhere).Take(intTop).ToList();
}
/// <summary
@ -880,7 +880,7 @@ namespace Admin.Core.Repository
/// <returns泛型集合</returns
public List<TEntity> QuerySql(string strSql, SugarParameter[] parameters = null)
{
return _db.Ado.SqlQuery<TEntity>(strSql, parameters);
return _db.CopyNew().Ado.SqlQuery<TEntity>(strSql, parameters);
}
/// <summary
@ -891,7 +891,7 @@ namespace Admin.Core.Repository
/// <returns泛型集合</returns
public int ExecSql(string strSql, SugarParameter[] parameters = null)
{
return _db.Ado.ExecuteCommand(strSql, parameters);
return _db.CopyNew().Ado.ExecuteCommand(strSql, parameters);
}
/// <summary
@ -902,7 +902,7 @@ namespace Admin.Core.Repository
/// <returnsDataTable</returns
public DataTable QueryTable(string strSql, SugarParameter[] parameters = null)
{
return _db.Ado.GetDataTable(strSql, parameters);
return _db.CopyNew().Ado.GetDataTable(strSql, parameters);
}
/// <summary
@ -920,8 +920,8 @@ namespace Admin.Core.Repository
int intPageSize,
string strOrderByFileds)
{
//return Task.Run(() = _db.Queryable<TEntity().OrderByIF(!string.IsNullOrEmpty(strOrderByFileds), strOrderByFileds).WhereIF(whereExpression != null, whereExpression).ToPageList(intPageIndex, intPageSize));
return _db.Queryable<TEntity>().OrderByIF(!string.IsNullOrEmpty(strOrderByFileds), strOrderByFileds).WhereIF(whereExpression != null, whereExpression).ToPageList(intPageIndex, intPageSize);
//return Task.Run(() = _db.CopyNew().Queryable<TEntity().OrderByIF(!string.IsNullOrEmpty(strOrderByFileds), strOrderByFileds).WhereIF(whereExpression != null, whereExpression).ToPageList(intPageIndex, intPageSize));
return _db.CopyNew().Queryable<TEntity>().OrderByIF(!string.IsNullOrEmpty(strOrderByFileds), strOrderByFileds).WhereIF(whereExpression != null, whereExpression).ToPageList(intPageIndex, intPageSize);
}
/// <summary
@ -940,8 +940,8 @@ namespace Admin.Core.Repository
string strOrderByFileds)
{
//return Task.Run(() = _db.Queryable<TEntity().OrderByIF(!string.IsNullOrEmpty(strOrderByFileds), strOrderByFileds).WhereIF(!string.IsNullOrEmpty(strWhere), strWhere).ToPageList(intPageIndex, intPageSize));
return _db.Queryable<TEntity>().OrderByIF(!string.IsNullOrEmpty(strOrderByFileds), strOrderByFileds).WhereIF(!string.IsNullOrEmpty(strWhere), strWhere).ToPageList(intPageIndex, intPageSize);
//return Task.Run(() = _db.CopyNew().Queryable<TEntity().OrderByIF(!string.IsNullOrEmpty(strOrderByFileds), strOrderByFileds).WhereIF(!string.IsNullOrEmpty(strWhere), strWhere).ToPageList(intPageIndex, intPageSize));
return _db.CopyNew().Queryable<TEntity>().OrderByIF(!string.IsNullOrEmpty(strOrderByFileds), strOrderByFileds).WhereIF(!string.IsNullOrEmpty(strWhere), strWhere).ToPageList(intPageIndex, intPageSize);
}
@ -958,7 +958,7 @@ namespace Admin.Core.Repository
{
int totalCount = 0;
var list = _db.Queryable<TEntity>()
var list = _db.CopyNew().Queryable<TEntity>()
.OrderByIF(!string.IsNullOrEmpty(strOrderByFileds), strOrderByFileds)
.WhereIF(whereExpression != null, whereExpression)
.ToPageList(intPageIndex, intPageSize, ref totalCount);
@ -986,9 +986,9 @@ namespace Admin.Core.Repository
{
if (whereLambda == null)
{
return _db.Queryable(joinExpression).Select(selectExpression).ToList();
return _db.CopyNew().Queryable(joinExpression).Select(selectExpression).ToList();
}
return _db.Queryable(joinExpression).Where(whereLambda).Select(selectExpression).ToList();
return _db.CopyNew().Queryable(joinExpression).Where(whereLambda).Select(selectExpression).ToList();
}
@ -1015,7 +1015,7 @@ namespace Admin.Core.Repository
{
int totalCount = 0;
var list = _db.Queryable<T, T2>(joinExpression)
var list = _db.CopyNew().Queryable<T, T2>(joinExpression)
.Select(selectExpression)
.OrderByIF(!string.IsNullOrEmpty(strOrderByFileds), strOrderByFileds)
.WhereIF(whereExpression != null, whereExpression)
@ -1048,7 +1048,7 @@ namespace Admin.Core.Repository
{
int totalCount = 0;
var list = _db.Queryable<T, T2>(joinExpression).GroupBy(groupExpression)
var list = _db.CopyNew().Queryable<T, T2>(joinExpression).GroupBy(groupExpression)
.Select(selectExpression)
.OrderByIF(!string.IsNullOrEmpty(strOrderByFileds), strOrderByFileds)
.WhereIF(whereExpression != null, whereExpression)

@ -0,0 +1,15 @@
using Admin.Core.IRepository;
using Admin.Core.Model;
namespace Admin.Core.Repository
{
/// <summary>
/// BinFeedingReportRepository
/// </summary>
public class BinFeedingReportRepository : BaseRepository<BinFeedingReport>, IBinFeedingReportRepository
{
public BinFeedingReportRepository(IUnitOfWork unitOfWork) : base(unitOfWork)
{
}
}
}

@ -1,7 +1,6 @@
using Admin.Core.IRepository;
using Admin.Core.Model;
using Admin.Core.Model.ViewModels;
using MySqlX.XDevAPI.Common;
using SqlSugar;
using System.Collections.Generic;
using System.Data;

@ -0,0 +1,15 @@
using Admin.Core.IRepository;
using Admin.Core.Model;
namespace Admin.Core.Repository
{
/// <summary>
/// xl_weighRepository
/// </summary>
public class xl_weighRepository : BaseRepository<xl_weigh>, Ixl_weighRepository
{
public xl_weighRepository(IUnitOfWork unitOfWork) : base(unitOfWork)
{
}
}
}

@ -8,6 +8,8 @@
<ItemGroup>
<ProjectReference Include="..\Admin.Core.Common\Admin.Core.Common.csproj" />
<ProjectReference Include="..\Admin.Core.IService\Admin.Core.IService.csproj" />
<ProjectReference Include="..\Admin.Core.Model\Admin.Core.Model.csproj" />
<ProjectReference Include="..\Admin.Core.PlcServer\Admin.Core.PlcServer.csproj" />
</ItemGroup>

@ -4,5 +4,7 @@ namespace Admin.Core.RunPlc
public interface IRunPlcService
{
Task StartPlcAsync();
Task StartAlarmAsync();
}
}

@ -1,5 +1,8 @@
using Admin.Core.Common;
using Admin.Core.IService;
using Admin.Core.Model;
using Admin.Core.PlcServer;
using log4net;
using System.Timers;
namespace Admin.Core.RunPlc
@ -9,11 +12,17 @@ namespace Admin.Core.RunPlc
/// </summary>
public class RunPlcService : IRunPlcService
{
System.Timers.Timer timer = new System.Timers.Timer(5000);//创建定时器设置间隔时间为5000毫秒
private readonly IPmt_AlarmServices _pmtAlarmServices;
private readonly ILR_AlarmlogServices _lrAlarmlogServices;
private static readonly log4net.ILog log = LogManager.GetLogger(typeof(RunPlcService));
bool flag = true;
#region 构造函数
public RunPlcService()
public RunPlcService(IPmt_AlarmServices pmtAlarmServices, ILR_AlarmlogServices lrAlarmlogServices)
{
_pmtAlarmServices = pmtAlarmServices;
_lrAlarmlogServices = lrAlarmlogServices;
StartSiemensPlcServer();//西门子
}
#endregion
@ -21,6 +30,7 @@ namespace Admin.Core.RunPlc
#region 心跳
public Task StartPlcAsync()
{
System.Timers.Timer timer = new System.Timers.Timer(5000);//创建定时器设置间隔时间为5000毫秒
timer.Elapsed += new System.Timers.ElapsedEventHandler(ExecSiemensHeartTask);
timer.AutoReset = true;//设置是执行一次false还是一直执行(true)
timer.Enabled = true;//需要调用 timer.Start()或者timer.Enabled = true来启动它
@ -30,14 +40,14 @@ namespace Admin.Core.RunPlc
private static void StartSiemensPlcServer()
{
var allPlcServices = Appsettings.app<PlcModel>("PLCServer").ToList();
foreach (var item in allPlcServices)
for (int i = 0; i < allPlcServices.Count; i++)
{
PlcModel model = new PlcModel();
model.Id = item.Id;
model.EquipName = item.EquipName;
model.IP = item.IP;
model.Port = item.Port;
model.plc = new SiemensPlc(item.IP, item.Port);
model.Id = allPlcServices[i].Id;
model.EquipName = allPlcServices[i].EquipName;
model.IP = allPlcServices[i].IP;
model.Port = allPlcServices[i].Port;
model.plc = new SiemensPlc(allPlcServices[i].IP, allPlcServices[i].Port);
PlcHelper.siemensList.Add(model);
}
}
@ -46,9 +56,10 @@ namespace Admin.Core.RunPlc
#region 心跳检测
private async void ExecSiemensHeartTask(object? sender, ElapsedEventArgs e)
{
foreach (var item in PlcHelper.siemensList)
var plcList = PlcHelper.siemensList.Where(d => d.EquipName.Equals("小料PLC")).ToList();
foreach (var item in plcList)
{
if (await item.plc.Read("M100"))
if (await item.plc.Read("DB104.DBW0"))
{
item.IsConnect = true;
item.plc.IsConnected = true;
@ -78,5 +89,97 @@ namespace Admin.Core.RunPlc
}
}
#endregion
public Task StartAlarmAsync()
{
//System.Timers.Timer timer = new System.Timers.Timer(1000);//创建定时器设置间隔时间为1000毫秒
//timer.Elapsed += new System.Timers.ElapsedEventHandler(StartAlarm); //到达时间的时候执行事件;
//timer.AutoReset = true;//设置是执行一次false还是一直执行(true)
//timer.Enabled = true;//需要调用 timer.Start()或者timer.Enabled = true来启动它
//timer.Start();//timer.Start()的内部原理还是设置timer.Enabled = true;
return Task.CompletedTask;
}
private async void StartAlarm(object source, System.Timers.ElapsedEventArgs e)
{
if (flag)
{
flag = false;
try
{
var plcList = PlcHelper.siemensList.SingleOrDefault(d => d.EquipName.Equals("小料PLC"));
if (plcList.plc.IsConnected)
{
List<LR_Alarmlog> addAlarmList = new List<LR_Alarmlog>();
List<LR_Alarmlog> updateAlarmList = new List<LR_Alarmlog>();
List<Pmt_Alarm> list = _pmtAlarmServices.QueryAsync().Result;
Console.WriteLine("=======================开始================================");
int i= 0;
do
{
Console.WriteLine(i);
await ReadAlarm(plcList, list[i]);
i++;
} while (list.Count >= i);
Console.WriteLine("=======================结束================================");
}
}
catch (Exception ex)
{
log.Error(ex.Message);
}
finally { flag = true; }
}
}
private async Task ReadAlarm(PlcModel plcList, Pmt_Alarm item)
{
bool result = await plcList.plc.ReadBoolAsync(item.Alarm_Point);
Console.WriteLine(item.Alarm_Point + ":" + result);
if (result)
{
var alarm =await _lrAlarmlogServices.FirstAsync(d => d.Alarm_ID == item.Alarm_ID && d.Alarm_Status == 1);
if (alarm == null)
{
LR_Alarmlog lR_Alarmlog = new LR_Alarmlog();
lR_Alarmlog.Equip_Code = "01";
lR_Alarmlog.Alarm_ID = item.Alarm_ID;
lR_Alarmlog.Alarm_OccurTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
lR_Alarmlog.Alarm_Status = 1;
lR_Alarmlog.Alarm_GUID = "01";
_ = _lrAlarmlogServices.AddAsync(lR_Alarmlog).Result;
}
else
{
//alarm.Alarm_ClearTime = DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss");
//alarm.Alarm_Status = 1;
//_= _lrAlarmlogServices.UpdateAsync(alarm).Result;
}
}
else
{
var alarm = _lrAlarmlogServices.FirstAsync(d => d.Alarm_ID == item.Alarm_ID && d.Alarm_Status == 1).Result;
if (alarm != null)
{
alarm.Alarm_ClearTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
alarm.Alarm_Status = 0;
_ = _lrAlarmlogServices.UpdateAsync(alarm).Result;
}
}
}
}
}

@ -20,4 +20,10 @@
<ProjectReference Include="..\Admin.Core.RunPlc\Admin.Core.RunPlc.csproj" />
</ItemGroup>
<ItemGroup>
<Reference Include="HslCommunication">
<HintPath>E:\普力通处理\dll\HslCommunication.dll</HintPath>
</Reference>
</ItemGroup>
</Project>

@ -0,0 +1,17 @@
using Admin.Core.IRepository;
using Admin.Core.Service;
using Admin.Core.IService;
using Admin.Core.Model;
namespace Admin.Core.Service
{
public class BinFeedingReportServices : BaseServices<BinFeedingReport>, IBinFeedingReportServices
{
private readonly IBaseRepository<BinFeedingReport> _dal;
public BinFeedingReportServices(IBaseRepository<BinFeedingReport> dal)
{
this._dal = dal;
base.BaseDal = dal;
}
}
}

@ -44,9 +44,10 @@ namespace Admin.Core.Service
/// <summary>
/// 扫描桶二维码,获取绑定的小料配方
/// </summary>
/// <param name="code">桶条码</param>
/// <param name="kettleBarCode">反应釜</param>
/// <param name="planId">计划Id</param>
/// <param name="code">料桶Id</param>
/// <returns></returns>
/// <exception cref="NotImplementedException"></exception>
public async Task<BarrelView> GetXlInfo(string kettleBarCode, string planId, string code)
{
List<MaterialView> list = new List<MaterialView>();
@ -55,7 +56,7 @@ namespace Admin.Core.Service
{
Hw_Barrel hw = await _barrel.FirstAsync(d => d.IsEnable == "是" && d.BarCode == code);
if (hw == null) { return null; }
var recipe = await _recipeRepository.FirstAsync(d => d.Recipe_Verify == 1 && d.Recipe_Code == hw.MaterialID);
var recipe = await _recipeRepository.FirstAsync(d => d.Recipe_Verify == 1 && d.ID == hw.MaterialID);
if (recipe == null) { return null; }
var materialList = await _lrWeighRepository.QueryAsync(d => d.Plan_ID == hw.PlanId && d.Recipe_ID == recipe.ID);
if (materialList.Count() == 0) { return null; }
@ -154,8 +155,9 @@ namespace Admin.Core.Service
view.MaterialName = sub.MaterialName;
view.BinId = sub.BinId;
view.MaterialType = sub.MaterialType;
view.SetWeight = sub.SetWeight;
view.SetWeight = sub.SetWeight- sub.Tare;//设置重量减去皮重
view.SetError = sub.SetError;
view.Tare = sub.Tare;
list.Add(view);
});
WarehouseView warehouseView = new WarehouseView()
@ -246,11 +248,8 @@ namespace Admin.Core.Service
try
{
//log.Info("开始");
var solventPlc = PlcHelper.siemensList.SingleOrDefault(d => d.EquipName.Equals("溶剂PLC"));
log.Info($"PLC状态{solventPlc.plc.IsConnected}");
if (solventPlc.plc.IsConnected)
{
log.Info("开始投料");
#region 记录数据
//同时记录该扫码到数据库中
wh = await _wareHouse.FirstAsync(d => d.BarCode == view.KCode);
@ -296,31 +295,30 @@ namespace Admin.Core.Service
log.Error("点位名称为空!");
return false;
}
bool result = solventPlc.plc.WriteInt16(name, view.State.ToString());//反应釜点位
if (result)
var s7 = PlcConnect.Instance;
var result = s7.Write(name,short.Parse(view.State.ToString()));//反应釜点位
log.Error($"反应釜开启点位状态:{result.IsSuccess},返回信息:{result.Message}");
if (result.IsSuccess)
{
if (view.State == 1)
{
await _feed.AddAsync(report);
}
return result;
}
else
foreach (var item in view.Child.Where(d=>d.MatType== "散装"))
{
log.Error("写入点位失败!");
return result;
}
#endregion
}
return result.IsSuccess;
}
else
{
return false;
log.Error("反应釜写入点位失败!");
return result.IsSuccess;
}
#endregion
}
catch (Exception ex)
{
log.Info("异常:"+ex.Message);
log.Error(ex.Message);
log.Error($"异常:{ex.Message}");
return false;
}
}

@ -8,7 +8,8 @@ using System.Collections.Generic;
using log4net;
using Admin.Core.PlcServer;
using System;
using NPOI.SS.Formula.Functions;
using Admin.Core.Common;
using NPOI.OpenXmlFormats.Dml.Diagram;
namespace Admin.Core.Service
{
@ -49,30 +50,16 @@ namespace Admin.Core.Service
/// </summary>
/// <param name="view">验证成功后传递过来相关数据</param>
/// <returns>是否执行成功!</returns>
public async Task<bool> ExecPlcState(VerifyView view)
public async Task<MessageModel<bool>> ExecPlcState(VerifyView view)
{
MessageModel<bool> result = new MessageModel<bool>();
try
{
var plcList = PlcHelper.siemensList.SingleOrDefault(d => d.EquipName.Equals("溶剂PLC"));
if (plcList.plc.IsConnected)
{
if (view.Weighbridge == "1号地磅")
{
int rate = Convert.ToInt32(view.Rate * 100);
bool rr=plcList.plc.WriteInt16("DB110.DBW10.0", rate.ToString());//传入固率
bool barCode = plcList.plc.WriteInt16("DB110.DBW1768.0", "1");
if (barCode)
{
Hw_SolventErrorPreventionReport report = new Hw_SolventErrorPreventionReport()
{
PlanId = view.Plan_Id,
FinishedNum = plcList.plc.ReadInt16("DB110.DBW1758.0"),
RMatCode = view.RMatCode,
MaterialID = view.MaterialID,
MaterialName = view.MaterialName,
Weight = view.MaterialWeight,
WholeMaterial = view.WholeMaterial
};
var s7 = PlcConnect.Instance;
var rtPlanList = await _planRepository.QueryAsync(d => d.Plan_State == 3);
if (rtPlanList.Count > 0)
@ -83,9 +70,40 @@ namespace Admin.Core.Service
view.Plan_Id = r.Plan_Id;
}
var rtPlan = rtPlanList.FirstOrDefault(d => d.Plan_Id == view.Plan_Id);
if (plcList.plc.ReadInt16("DB110.DBW8") != 250)
List<Hw_SolventErrorPreventionReport> list = new List<Hw_SolventErrorPreventionReport>();
if (view.BarCodeList!=null)
{
foreach (var item in view.BarCodeList)
{
string[] str = item.Split("-");
Hw_SolventErrorPreventionReport report = new Hw_SolventErrorPreventionReport()
{
PlanId = view.Plan_Id,
Batch = rtPlan.Batch,
ProductName = rtPlan.ProductName,
FinishedNum = s7.ReadInt16("DB110.DBW1758.0").Content,
RMatCode = view.RMatCode,
MaterialID = view.MaterialID,
MaterialName = view.MaterialName,
Weight = view.MaterialWeight,
WholeMaterial = view.WholeMaterial,
Material_InventoryCode = str[0],
Material_BatchNumber = str[1],
Material_SerialCode = str[2],
BarCodeStr = item,
CreateTime = DateTime.Now
};
list.Add(report);
}
int i = await _solventErrorPreventionReportRepository.AddAsync(list);
}
#region MyRegion
//if (s7.ReadInt16("DB110.DBW8").Content != 250)
//{
//var hwWeighList = await _hwWeighRepository.GetWaiteMaterial(view.Plan_Id);
//if (hwWeighList != null)
//{
@ -103,74 +121,139 @@ namespace Admin.Core.Service
// rtPlan.Exec_Num = 1;
// }
//}
var num = plcList.plc.ReadInt16("DB110.DBW1758.0");
if (num==0)
{
rtPlan.Exec_Num = 1;
}
else
{
rtPlan.Exec_Num = num;
}
//rtPlan.Exec_Num = plcList.plc.ReadInt16("DB110.DBW1758.0");
//else
//{
// rtPlan.Exec_Num = 0;
//}
//var num = s7.ReadInt16("DB110.DBW1758.0").Content;
//if (num == 0)
//{
// rtPlan.Exec_Num = 1;
//}
//else
//{
// rtPlan.Exec_Num = num;
//}
////rtPlan.Exec_Num = plcList.plc.ReadInt16("DB110.DBW1758.0");
//保存本次数据
int i = await _solventErrorPreventionReportRepository.AddAsync(report);
#endregion
var cylinderList = _hwCylinderRepository.Query();
if (cylinderList.Count == 0)
{
return false;
result.success = false;
result.msg = "未获查询到拉缸信息";
return result;
}
if (view.CylinderBarCode.Trim() == "00000000")
{
rtPlan.CylinderName = "00000000";
rtPlan.CylinderBarCode = "00000000";
await _planRepository.UpdateExecDb(rtPlan);//更新数据库
result.success = true;
result.msg = "更新拉缸信息成功!";
int rate = Convert.ToInt32(view.Rate * 100);
var writeRate = s7.Write("DB110.DBW10.0", short.Parse(rate.ToString()));//传入固率
log.Info($"1号地磅 传入固含:{writeRate.IsSuccess},结果:{writeRate.Message}");
var barCode = s7.Write("DB110.DBW1768.0", short.Parse("1")); //写入启动称量信号
log.Info($"1号地磅 写入BarCode:{barCode.IsSuccess},结果:{barCode.Message}");
if (barCode.IsSuccess && writeRate.IsSuccess)
{
result.success = true;
result.msg = "更新计划信息成功!称量开始!";
}
else
{
result.success = false;
result.msg = $"计划执行失败,请检查网络是否联通![传入固含:{writeRate.IsSuccess},结果:{writeRate.Message}]<>[开始信号:{barCode.IsSuccess},结果:{barCode.Message}]";
}
}
else
{
Hw_Cylinder hw_Cylinder = cylinderList.FirstOrDefault(d => d.BarCode == view.CylinderBarCode.Trim());
if (hw_Cylinder == null)
{
result.success = false;
result.msg = $"未查询到拉缸信息!拉缸二维码:【{view.CylinderBarCode}】";
}
else
{
rtPlan.CylinderName = hw_Cylinder.Name;
rtPlan.CylinderBarCode = hw_Cylinder.BarCode;
log.Info(view.CylinderBarCode);
await _planRepository.UpdateExecDb(rtPlan);//更新数据库
}
return true;
int rate = Convert.ToInt32(view.Rate * 100);
var writeRate = s7.Write("DB110.DBW10.0", short.Parse(rate.ToString()));//传入固率
log.Info($"1号地磅 传入固含:{writeRate.IsSuccess},结果:{writeRate.Message}");
var barCode = s7.Write("DB110.DBW1768.0", short.Parse("1")); //写入启动称量信号
log.Info($"1号地磅 写入BarCode:{barCode.IsSuccess},结果:{barCode.Message}");
if (barCode.IsSuccess && writeRate.IsSuccess)
{
result.success = true;
result.msg = "更新计划信息成功!称量开始!";
}
else
{
result.success = false;
result.msg = $"计划执行失败,请检查网络是否联通![传入固含:{writeRate.IsSuccess},结果:{writeRate.Message}]<>[开始信号:{barCode.IsSuccess},结果:{barCode.Message}]";
}
}
}
}
//等待
return false;
}
return false;
}
else if (view.Weighbridge == "2号地磅")
if (view.Weighbridge == "2号地磅")
{
int rate = Convert.ToInt32(view.Rate * 100);
plcList.plc.WriteInt16("DB110.DBW10.0", rate.ToString());//传入固率
bool barCode = plcList.plc.WriteInt16("DB110.DBW1768.0", "1");
// bool matCode = plcList.plc.WriteInt16("DB110.DBW482.0", "1");//执行启动
{
var s7 = PlcConnect.Instance;
if (barCode)
var rtPlanList = await _planRepository.QueryAsync(d => d.Plan_State == 3);
if (rtPlanList.Count > 0)
{
if (string.IsNullOrEmpty(view.Plan_Id))
{
var r = rtPlanList.FirstOrDefault();
view.Plan_Id = r.Plan_Id;
}
var rtPlan = rtPlanList.FirstOrDefault(d => d.Plan_Id == view.Plan_Id);
List<Hw_SolventErrorPreventionReport> list = new List<Hw_SolventErrorPreventionReport>();
if (view.BarCodeList != null)
{
foreach (var item in view.BarCodeList)
{
string[] str = item.Split("-");
Hw_SolventErrorPreventionReport report = new Hw_SolventErrorPreventionReport()
{
PlanId = view.Plan_Id,
FinishedNum = plcList.plc.ReadInt16("DB110.DBW1758.0"),
Batch = rtPlan.Batch,
ProductName = rtPlan.ProductName,
FinishedNum = s7.ReadInt16("DB111.DBW1758.0").Content,
RMatCode = view.RMatCode,
MaterialID = view.MaterialID,
MaterialName = view.MaterialName,
Weight = view.MaterialWeight,
WholeMaterial = view.WholeMaterial
WholeMaterial = view.WholeMaterial,
Material_InventoryCode = str[0],
Material_BatchNumber = str[1],
Material_SerialCode = str[2],
BarCodeStr = item,
CreateTime = DateTime.Now
};
list.Add(report);
}
int i = await _solventErrorPreventionReportRepository.AddAsync(list);
}
var rtPlanList = await _planRepository.QueryAsync(d => d.Plan_State == 3);
if (rtPlanList.Count > 0)
{
var rtPlan = rtPlanList.FirstOrDefault(d => d.Plan_Id == view.Plan_Id);
if (plcList.plc.ReadInt16("DB110.DBW8") != 250)
{
#region MyRegion
//if (s7.ReadInt16("DB111.DBW8").Content != 250)
//{
//var hwWeighList = await _hwWeighRepository.GetWaiteMaterial(view.Plan_Id);
//if (hwWeighList != null)
//{
@ -188,47 +271,98 @@ namespace Admin.Core.Service
// rtPlan.Exec_Num = 1;
// }
//}
var num = plcList.plc.ReadInt16("DB110.DBW1758.0");
if (num == 0)
//else
//{
// rtPlan.Exec_Num = 0;
//}
//var num = s7.ReadInt16("DB111.DBW1758.0").Content;
//if (num == 0)
//{
// rtPlan.Exec_Num = 1;
//}
//else
//{
// rtPlan.Exec_Num = num;
//}
////rtPlan.Exec_Num = plcList.plc.ReadInt16("DB111.DBW1758.0");
//保存本次数据
#endregion
var cylinderList = _hwCylinderRepository.Query();
if (cylinderList.Count == 0)
{
rtPlan.Exec_Num = 1;
result.success = false;
result.msg = "未获查询到拉缸信息";
return result;
}
else
if (view.CylinderBarCode.Trim() == "00000000")
{
rtPlan.Exec_Num = num;
}
rtPlan.CylinderName = "00000000";
rtPlan.CylinderBarCode = "00000000";
await _planRepository.UpdateExecDb(rtPlan);//更新数据库
result.success = true;
result.msg = "更新拉缸信息成功!";
//保存本次数据
int i = await _solventErrorPreventionReportRepository.AddAsync(report);
var cylinderList = _hwCylinderRepository.Query();
if (cylinderList.Count == 0)
int rate = Convert.ToInt32(view.Rate * 100);
var writeRate = s7.Write("DB111.DBW10.0", short.Parse(rate.ToString()));//传入固率
log.Info($"2号地磅 传入固含:{writeRate.IsSuccess},结果:{writeRate.Message}");
var barCode = s7.Write("DB111.DBW1768.0", short.Parse("1")); //写入启动称量信号
log.Info($"2号地磅 写入BarCode:{barCode.IsSuccess},结果:{barCode.Message}");
if (barCode.IsSuccess && writeRate.IsSuccess)
{
return false;
result.success = true;
result.msg = "更新计划信息成功!称量开始!";
}
else
{
result.success = false;
result.msg = $"计划执行失败,请检查网络是否联通![传入固含:{writeRate.IsSuccess},结果:{writeRate.Message}]<>[开始信号:{barCode.IsSuccess},结果:{barCode.Message}]";
}
}
else
{
Hw_Cylinder hw_Cylinder = cylinderList.FirstOrDefault(d => d.BarCode == view.CylinderBarCode.Trim());
if (hw_Cylinder == null)
{
result.success = false;
result.msg = $"未查询到拉缸信息!拉缸二维码:【{view.CylinderBarCode}】";
}
else
{
rtPlan.CylinderName = hw_Cylinder.Name;
rtPlan.CylinderBarCode = hw_Cylinder.BarCode;
log.Info(view.CylinderBarCode);
await _planRepository.UpdateExecDb(rtPlan);//更新数据库
return true;
int rate = Convert.ToInt32(view.Rate * 100);
var writeRate = s7.Write("DB111.DBW10.0", short.Parse(rate.ToString()));//传入固率
log.Info($"2号地磅 传入固含:{writeRate.IsSuccess},结果:{writeRate.Message}");
var barCode = s7.Write("DB111.DBW1768.0", short.Parse("1")); //写入启动称量信号
log.Info($"2号地磅 写入BarCode:{barCode.IsSuccess},结果:{barCode.Message}");
if (barCode.IsSuccess && writeRate.IsSuccess)
{
result.success = true;
result.msg = "更新计划信息成功!称量开始!";
}
else
{
result.success = false;
result.msg = $"计划执行失败,请检查网络是否联通![传入固含:{writeRate.IsSuccess},结果:{writeRate.Message}]<>[开始信号:{barCode.IsSuccess},结果:{barCode.Message}]";
}
//等待
return false;
}
return false;
}
return false;
}
else
{
return true;
}
}
return result;
}
catch (System.Exception ex)
{
log.Info(ex.Message);
return false;
result.success = false;
result.msg = $"执行数据异常:{ex.Message}";
return result;
}
}
@ -246,11 +380,9 @@ namespace Admin.Core.Service
{
try
{
var s7 = PlcConnect.Instance;
var result = await _planRepository.QueryAsync(d => d.Plan_Id == planId && d.PumpBarCode == pumpCode && d.CylinderBarCode == cylinderCode);
if (result.Count > 0)
{
var plcList = PlcHelper.siemensList.SingleOrDefault(d => d.EquipName.Equals("溶剂PLC"));
if (plcList.plc.IsConnected)
{
#region 写入PLC
@ -261,31 +393,31 @@ namespace Admin.Core.Service
switch (pump.RowNum)
{
case 1:
plcList.plc.WriteInt16("DB110.DBW282.0", "1");
s7.Write("DB110.DBW282.0",short.Parse("1"));
break;
case 2:
plcList.plc.WriteInt16("DB110.DBW294.0", "1");
s7.Write("DB110.DBW294.0", short.Parse("1"));
break;
case 3:
plcList.plc.WriteInt16("DB110.DBW306.0", "1");
s7.Write("DB110.DBW306.0", short.Parse("1"));
break;
case 4:
plcList.plc.WriteInt16("DB110.DBW318.0", "1");
s7.Write("DB110.DBW318.0", short.Parse("1"));
break;
case 5:
plcList.plc.WriteInt16("DB110.DBW330.0", "1");
s7.Write("DB110.DBW330.0", short.Parse("1"));
break;
case 6:
plcList.plc.WriteInt16("DB110.DBW342.0", "1");
s7.Write("DB110.DBW342.0", short.Parse("1"));
break;
case 7:
plcList.plc.WriteInt16("DB110.DBW354.0", "1");
s7.Write("DB110.DBW354.0", short.Parse("1"));
break;
case 8:
plcList.plc.WriteInt16("DB110.DBW366.0", "1");
s7.Write("DB110.DBW366.0", short.Parse("1"));
break;
case 9:
plcList.plc.WriteInt16("DB110.DBW 378.0", "1");
s7.Write("DB110.DBW 378.0", short.Parse("1"));
break;
default:
break;
@ -296,17 +428,8 @@ namespace Admin.Core.Service
return true;
}
else
{
return false;
}
}
else
{
#region 写入PLC
var plcList = PlcHelper.siemensList.SingleOrDefault(d => d.EquipName.Equals("溶剂PLC"));
if (plcList.plc.IsConnected)
{
var pumpList = _hwPumpRepository.Query();
if (pumpList.Count > 0) { return false; }
var pump = pumpList.FirstOrDefault(d => d.BarCode == pumpCode);
@ -314,31 +437,31 @@ namespace Admin.Core.Service
switch (pump.RowNum)
{
case 1:
plcList.plc.WriteInt16("DB110.DBW282.0", "2");
s7.Write("DB110.DBW282.0",short.Parse("2"));
break;
case 2:
plcList.plc.WriteInt16("DB110.DBW294.0", "2");
s7.Write("DB110.DBW294.0", short.Parse("2"));
break;
case 3:
plcList.plc.WriteInt16("DB110.DBW306.0", "2");
s7.Write("DB110.DBW306.0", short.Parse("2"));
break;
case 4:
plcList.plc.WriteInt16("DB110.DBW318.0", "2");
s7.Write("DB110.DBW318.0", short.Parse("2"));
break;
case 5:
plcList.plc.WriteInt16("DB110.DBW330.0", "2");
s7.Write("DB110.DBW330.0", short.Parse("2"));
break;
case 6:
plcList.plc.WriteInt16("DB110.DBW342.0", "2");
s7.Write("DB110.DBW342.0", short.Parse("2"));
break;
case 7:
plcList.plc.WriteInt16("DB110.DBW354.0", "2");
s7.Write("DB110.DBW354.0", short.Parse("2"));
break;
case 8:
plcList.plc.WriteInt16("DB110.DBW366.0", "2");
s7.Write("DB110.DBW366.0", short.Parse("2"));
break;
case 9:
plcList.plc.WriteInt16("DB110.DBW 378.0", "2");
s7.Write("DB110.DBW 378.0", short.Parse("2"));
break;
default:
break;
@ -347,16 +470,10 @@ namespace Admin.Core.Service
#endregion
return true;
}
else
{
return false;
}
}
}
catch (System.Exception)
catch (System.Exception ex)
{
log.Error(ex.Message);
return false;
}
@ -380,18 +497,17 @@ namespace Admin.Core.Service
var hwWeighList = await _hwWeighRepository.GetWaiteMaterial(plan.Plan_Id);
if (hwWeighList == null) return null;
var plcList = PlcHelper.siemensList.SingleOrDefault(d => d.EquipName.Equals("溶剂PLC"));
if (plcList.plc.IsConnected)
{
if (weighbridge == "1号地磅")
{
int planNum = plcList.plc.ReadInt16("DB110.DBW2.0");//执行批次
var s7 = PlcConnect.Instance;
int planNum = s7.ReadInt16("DB110.DBW2.0").Content;//执行批次
if (plan.Plan_Num > planNum)
{
var rtPlanList = await _planRepository.QueryAsync(d => d.Plan_State == 3);
var rtPlan = rtPlanList.FirstOrDefault(d => d.Plan_Id == plan.Plan_Id);
int materialNo = plcList.plc.ReadInt16("DB110.DBW1758");//当前执行物料
int materialNo = s7.ReadInt16("DB110.DBW1758").Content;//当前执行物料
if (materialNo == 0) materialNo = 1;
var hwWeigh = hwWeighList.FirstOrDefault(d => d.MID == materialNo);
if (hwWeigh == null) return null;
@ -405,13 +521,14 @@ namespace Admin.Core.Service
}
else
{
int planNum = plcList.plc.ReadInt16("DB110.DBW2.0");//执行批次
var s7 = PlcConnect.Instance;
int planNum = s7.ReadInt16("DB110.DBW2.0").Content;//执行批次
if (plan.Plan_Num > planNum)
{
var rtPlanList = await _planRepository.QueryAsync(d => d.Plan_State == 3);
var rtPlan = rtPlanList.FirstOrDefault(d => d.Plan_Id == plan.Plan_Id);
execNum = rtPlan.Exec_Num;
int materialNo = plcList.plc.ReadInt16("DB110.DBW1758");//当前执行物料
int materialNo = s7.ReadInt16("DB110.DBW1758").Content;//当前执行物料
var hwWeigh = hwWeighList.FirstOrDefault(d => d.MID == materialNo);
if (hwWeigh == null) return null;
@ -422,12 +539,68 @@ namespace Admin.Core.Service
return null;
}
}
}
catch (System.Exception ex)
{
log.Info(ex.Message);
return null;
}
}
#endregion
#region 整包物料查询
/// <summary>
/// 整包物料查询
/// </summary>
/// <param name="code">整包物料编码</param>
/// <param name="weighbridge">地磅</param>
/// <returns></returns>
public async Task<PlanView> GetByZbCode(string code, string weighbridge)
{
try
{
string str1 = string.Empty;
if (!code.Contains("kg"))
{
string[] str = code.Split("-");
str1= str[0];
}
else
{
log.Error("PLC连接失败");
str1= code;
}
var list = await _planRepository.GetDownLoadPlan(str1, weighbridge);
if (list.Count == 0) return null;
var plan = list.FirstOrDefault(d=>d.Plan_State==3);
if (weighbridge == "1号地磅")
{
var s7 = PlcConnect.Instance;
var rtPlanList = await _planRepository.QueryAsync(d => d.Plan_State == 3);
var rtPlan = rtPlanList.FirstOrDefault(d => d.Plan_Id == plan.Plan_Id);
int materialNo = s7.ReadInt16("DB110.DBW1758").Content;//当前执行物料
if (materialNo == 0) materialNo = 1;
var planView = list.FirstOrDefault(d => d.MID == materialNo&& d.Plan_State == 3);
if (planView == null) return null;
return planView;
}
else
{
var rtPlanList = await _planRepository.QueryAsync(d => d.Plan_State == 3);
var rtPlan = rtPlanList.FirstOrDefault(d => d.Plan_Id == plan.Plan_Id);
var s7 = PlcConnect.Instance;
int materialNo = s7.ReadInt16("DB110.DBW1758").Content;//当前执行物料
if (materialNo == 0) materialNo = 1;
var planView = list.FirstOrDefault(d => d.MID == materialNo);
if (planView == null) return null;
return planView;
}
return null;
}
catch (System.Exception ex)
{
@ -503,5 +676,6 @@ namespace Admin.Core.Service
return list;
}
#endregion
}
}

File diff suppressed because one or more lines are too long

@ -4,7 +4,9 @@ using Admin.Core.IService.ISys;
using Admin.Core.Model;
using Admin.Core.PlcServer;
using Admin.Core.Service;
using log4net;
using Quartz;
using Serilog;
using System;
using System.Collections.Generic;
using System.Linq;
@ -19,7 +21,7 @@ namespace Admin.Core.Tasks
{
private readonly IPmt_AlarmServices _pmtAlarmServices;
private readonly ILR_AlarmlogServices _lrAlarmlogServices;
private static readonly log4net.ILog log = LogManager.GetLogger(typeof(Hw_WarehouseServices));
public Job_Admin_Quartz(ISysTasksQzService SysTasksQzService, ISysJobLogService sysJobLogService,
IPmt_AlarmServices pmtAlarmServices, ILR_AlarmlogServices lrAlarmlogServices)
{
@ -35,65 +37,14 @@ namespace Admin.Core.Tasks
public async Task Run(IJobExecutionContext context)
{
var plcList = PlcHelper.siemensList.SingleOrDefault(d => d.EquipName.Equals("小料PLC"));
if (plcList.plc.IsConnected)
{
List<LR_Alarmlog> addAlarmList = new List<LR_Alarmlog>();
List<LR_Alarmlog> updateAlarmList = new List<LR_Alarmlog>();
List<Pmt_Alarm> list = await _pmtAlarmServices.QueryAsync();
foreach (var item in list)
{
if (plcList.plc.ReadBool(item.Alarm_Point))
{
var alarm = await _lrAlarmlogServices.FirstAsync(d => d.Alarm_ID == item.Alarm_ID);
if (alarm==null)
{
LR_Alarmlog lR_Alarmlog = new LR_Alarmlog();
lR_Alarmlog.Equip_Code = "01";
lR_Alarmlog.Alarm_ID = item.Alarm_ID;
lR_Alarmlog.Alarm_OccurTime = DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss");
lR_Alarmlog.Alarm_Status = 1;
lR_Alarmlog.Alarm_GUID = "01";
await _lrAlarmlogServices.AddAsync(lR_Alarmlog);
//addAlarmList.Add(lR_Alarmlog);
}
else
{
alarm.Alarm_ClearTime = DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss");
alarm.Alarm_Status = 1;
await _lrAlarmlogServices.UpdateAsync(alarm);
await RunAlarm();
}
}
else
{
var alarm = await _lrAlarmlogServices.FirstAsync(d => d.Alarm_ID == item.Alarm_ID);
if (alarm == null)
{
LR_Alarmlog lR_Alarmlog = new LR_Alarmlog();
lR_Alarmlog.Equip_Code = "01";
lR_Alarmlog.Alarm_ID = item.Alarm_ID;
lR_Alarmlog.Alarm_OccurTime = DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss");
lR_Alarmlog.Alarm_Status = 0;
lR_Alarmlog.Alarm_GUID = "01";
await _lrAlarmlogServices.UpdateAsync(lR_Alarmlog);
}
else
private async Task RunAlarm()
{
alarm.Alarm_ClearTime = DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss");
alarm.Alarm_Status = 0;
await _lrAlarmlogServices.UpdateAsync(alarm);
}
}
}
}
}
}
}

@ -12,7 +12,6 @@ using Microsoft.AspNetCore.Hosting;
using Admin.Core.IService.ISys;
using Admin.Core.Tasks;
using Microsoft.AspNetCore.Builder;
using Google.Protobuf.WellKnownTypes;
namespace Admin.Core.Wpf
{

@ -62,7 +62,7 @@ namespace S71500.Impl
{
s7 = new SiemensS7Net(SiemensPLCS.S1500);
s7.ConnectTimeOut = 2000;
//s7.IpAddress = IP;
s7.IpAddress = IP;
s7.Port = Port;
OperateResult connect = s7.ConnectServer();
if (connect.IsSuccess)

Loading…
Cancel
Save