This commit is contained in:
2025-12-24 16:27:53 +08:00
34 changed files with 2920 additions and 100 deletions
+1
View File
@@ -34,3 +34,4 @@ SGGL/.svn
/SGGL/BLLTests
/SGGL/FineUIPro.Web/ErrLog.txt
/SGGL/CLAUDE.md
/SGGL/.claude
@@ -0,0 +1,36 @@
INSERT INTO [dbo].[Sys_Menu] ([MenuId], [MenuName], [Icon], [Url], [SortIndex], [SuperMenu], [MenuType], [IsOffice], [IsEnd], [IsUsed]) VALUES (N'5B302FF3-A6E4-4305-A0C0-64CA7377777A', N'考勤时间管理', NULL, N'HSSE/SitePerson/DateManage.aspx', '9', N'0', N'Menu_SMZGL', '0', '1', '1');
INSERT INTO [dbo].[Sys_ButtonToMenu] ([ButtonToMenuId], [MenuId], [ButtonName], [SortIndex]) VALUES (N'1CFF6CE1-52F4-41F4-A40F-1DB4DB353974', N'5B302FF3-A6E4-4305-A0C0-64CA7377777A', N'增加', '1');
INSERT INTO [dbo].[Sys_ButtonToMenu] ([ButtonToMenuId], [MenuId], [ButtonName], [SortIndex]) VALUES (N'46F5F687-D838-4D7E-A7D0-F0262BFC9F04', N'5B302FF3-A6E4-4305-A0C0-64CA7377777A', N'删除', '3');
INSERT INTO [dbo].[Sys_ButtonToMenu] ([ButtonToMenuId], [MenuId], [ButtonName], [SortIndex]) VALUES (N'CEC8EAE8-A691-496A-BE4B-AFD9C8BD6FAD', N'5B302FF3-A6E4-4305-A0C0-64CA7377777A', N'保存', '4');
INSERT INTO [dbo].[Sys_ButtonToMenu] ([ButtonToMenuId], [MenuId], [ButtonName], [SortIndex]) VALUES (N'DF01EF57-7D20-4E1D-AE6C-CC65798D5830', N'5B302FF3-A6E4-4305-A0C0-64CA7377777A', N'修改', '2');
CREATE TABLE [dbo].[Kqgl_DateManage](
[Id] [nvarchar](50) NOT NULL,
[ProjectId] [nvarchar](50) NULL,
[AmStartTime1] [time](7) NULL,
[AmStartTime2] [time](7) NULL,
[AmEndTime1] [time](7) NULL,
[AmEndTime2] [time](7) NULL,
[PmStartTime1] [time](7) NULL,
[PmStartTime2] [time](7) NULL,
[PmEndTime1] [time](7) NULL,
[PmEndTime2] [time](7) NULL,
[LateTime] [int] NULL,
[LeaveTime] [int] NULL,
[EquipmentCode] [nvarchar](500) NULL,
CONSTRAINT [PK_Kqgl_DateManage] PRIMARY KEY CLUSTERED
(
[Id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'允许迟到' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'Kqgl_DateManage', @level2type=N'COLUMN',@level2name=N'LateTime'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'允许早退' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'Kqgl_DateManage', @level2type=N'COLUMN',@level2name=N'LeaveTime'
GO
@@ -0,0 +1,100 @@
ALTER VIEW [dbo].[View_SitePerson_Person]
AS
/*现场人员视图*/
SELECT SitePerson.ProjectId,
Project.ProjectCode,
Project.ProjectName,
SitePerson.SitePersonId,
persons.PersonId,
SitePerson.CardNo,
Persons.PersonName,
Persons.Sex,
(Case Persons.Sex WHEN '1' THEN '' WHEN '2' THEN '' ELSE '' END) AS SexName,
Persons.IdentityCard,
Persons.Address,
SitePerson.UnitId,
Persons.DepartId,
Persons.Birthday,
SitePerson.TeamGroupId,
SitePerson.WorkAreaId,
SitePerson.WorkPostId,
SitePerson.InTime,
SitePerson.OutTime,
SitePerson.OutResult,
Persons.Telephone,
Persons.PositionId,
Persons.PostTitleId,
Persons.PhotoUrl,
Unit.UnitCode,
Unit.UnitName,
TeamGroup.TeamGroupName,
Post.WorkPostName,
Position.PositionName,
Title.PostTitleName,
Depart.DepartName,
Post.PostType,
Post.IsHsse,
(SELECT COUNT(*) FROM EduTrain_TrainRecordDetail T
LEFT JOIN EduTrain_TrainRecord AS E ON T.TrainingId=E.TrainingId
WHERE T.PersonId=SitePerson.PersonId AND E.ProjectId=SitePerson.ProjectId AND T.CheckResult=1) AS TrainCount,
(SELECT COUNT(*) FROM Training_TestRecord R
WHERE R.TestManId=SitePerson.PersonId AND R.ProjectId=SitePerson.ProjectId and R.TestScores > ISNULL((SELECT TOP 1 PassingScore FROM Sys_TestRule),60)) AS TrainCount1,
SitePerson.AuditorId,
Persons.PersonName AS AuditorName,
SitePerson.AuditorDate,
Persons.IDCardUrl,
Persons.IsForeign,
case when Persons.IsForeign=1 then '' else '' end as IsForeignStr,
Persons.IdcardType,
BasicData1.dictName as IdcardTypeName,
Persons.IdcardStartDate,
Persons.IdcardEndDate,
Persons.IdcardForever,
case when Persons.IdcardForever='Y' then '' else '' end as IdcardForeverStr,
Persons.PoliticsStatus,
BasicData2.dictName as PoliticsStatusName,
Persons.IdcardAddress,
Persons.Nation,
BasicData3.dictName as NationName,
Persons.EduLevel,
BasicData4.dictName as EduLevelName,
Persons.MaritalStatus,
BasicData5.dictName as MaritalStatusName,
Persons.CountryCode,
Country.cname as CountryName,
Persons.ProvinceCode,
City.cname as ProvinceName,
Persons.PersonType,
(case when Persons.PersonType='2' then '外聘' when Persons.PersonType='3' then '第三方' else '员工' end) as IsOutsideStr,
--WorkArea.UnitWorkCode AS WorkAreaCode,
WorkAreaCode= STUFF((SELECT ',' + UnitWorkCode FROM dbo.WBS_UnitWork where PATINDEX('%,' + RTRIM(UnitWorkId) + ',%',',' +SitePerson.WorkAreaId + ',')>0 FOR XML PATH('')), 1, 1,''),
--WorkArea.UnitWorkName AS WorkAreaName
WorkAreaName= STUFF((SELECT ',' + UnitWorkName FROM dbo.WBS_UnitWork where PATINDEX('%,' + RTRIM(UnitWorkId) + ',%',',' +SitePerson.WorkAreaId + ',')>0 FOR XML PATH('')), 1, 1,''),
SitePerson.RealNameAddTime,
SitePerson.RealNameUpdateTime,
Persons.HeadImage,
SitePerson.States,
Persons.YunMouState
FROM SitePerson_Person AS SitePerson
LEFT JOIN Person_Persons AS Persons ON SitePerson.PersonId=Persons.PersonId
LEFT JOIN Base_Project AS Project ON Project.ProjectId=SitePerson.ProjectId
LEFT JOIN Base_Unit AS Unit ON Unit.UnitId = SitePerson.UnitId
LEFT JOIN ProjectData_TeamGroup AS TeamGroup ON TeamGroup.TeamGroupId=SitePerson.TeamGroupId
LEFT JOIN Base_WorkPost AS Post ON Post.WorkPostId = SitePerson.WorkPostId
LEFT JOIN Base_Position AS Position ON Position.PositionId = Persons.PositionId
Left JOIN Base_PostTitle AS Title ON Title.PostTitleId = Persons.PostTitleId
Left JOIN Base_Depart AS Depart ON Depart.DepartId = Persons.DepartId
Left JOIN RealName_BasicData AS BasicData1 ON BasicData1.dictCode = Persons.IdcardType
Left JOIN RealName_BasicData AS BasicData2 ON BasicData2.dictCode = Persons.PoliticsStatus
Left JOIN RealName_BasicData AS BasicData3 ON BasicData3.dictCode = Persons.Nation
Left JOIN RealName_BasicData AS BasicData4 ON BasicData4.dictCode = Persons.EduLevel
Left JOIN RealName_BasicData AS BasicData5 ON BasicData5.dictCode = Persons.MaritalStatus
Left JOIN RealName_Country AS Country ON Country.CountryId = Persons.CountryCode
Left JOIN RealName_City AS City ON City.provinceCode = Persons.ProvinceCode and City.CountryId = Persons.CountryCode
GO
@@ -0,0 +1,2 @@
Alter TABLE [dbo].[Person_Persons]
add [YunMouState] [nvarchar](50) NULL
@@ -0,0 +1,6 @@
INSERT INTO [dbo].[Sys_Menu] ([MenuId], [MenuName], [Icon], [Url], [SortIndex], [SuperMenu], [MenuType], [IsOffice], [IsEnd], [IsUsed]) VALUES (N'E4DC0A35-C585-4C4F-8F79-10F528892314', N'项目设备', NULL, N'ProjectData/ProjectDevices.aspx', '86', N'0', N'Menu_ProjectSet', '0', '1', '1');
INSERT INTO [dbo].[Sys_ButtonToMenu] ([ButtonToMenuId], [MenuId], [ButtonName], [SortIndex]) VALUES (N'1E3A5ADC-BAA7-45BC-AAF9-012A024F4752', N'E4DC0A35-C585-4C4F-8F79-10F528892314', N'保存', '4');
INSERT INTO [dbo].[Sys_ButtonToMenu] ([ButtonToMenuId], [MenuId], [ButtonName], [SortIndex]) VALUES (N'37E51622-FB4E-40F4-8D37-603EE626DB7F', N'E4DC0A35-C585-4C4F-8F79-10F528892314', N'增加', '1');
INSERT INTO [dbo].[Sys_ButtonToMenu] ([ButtonToMenuId], [MenuId], [ButtonName], [SortIndex]) VALUES (N'6EBFA308-581A-4260-9ECA-7E30283EF9EA', N'E4DC0A35-C585-4C4F-8F79-10F528892314', N'删除', '3');
INSERT INTO [dbo].[Sys_ButtonToMenu] ([ButtonToMenuId], [MenuId], [ButtonName], [SortIndex]) VALUES (N'939F4F2D-F03B-4DBD-963C-D55196535D8C', N'E4DC0A35-C585-4C4F-8F79-10F528892314', N'修改', '2');
UPDATE TOP(1)[dbo].[Sys_Menu] SET [MenuId]=N'5B302FF3-A6E4-4305-A0C0-64CA7377777A', [MenuName]=N'考勤时间管理', [Icon]=NULL, [Url]=N'HSSE/SitePerson/DateManage.aspx', [SortIndex]='9', [SuperMenu]=N'EE260447-028F-46AF-8864-9A5DC9DAA5BD', [MenuType]=N'Menu_HSSE', [IsOffice]='0', [IsEnd]='1', [IsUsed]='1' WHERE ([MenuId]=N'5B302FF3-A6E4-4305-A0C0-64CA7377777A');
-20
View File
@@ -1,20 +0,0 @@
{
"permissions": {
"allow": [
"Bash(dotnet build:*)",
"Bash(dir:*)",
"Read(//c/Users/lipengfei/Desktop/**)",
"Bash(powershell:*)",
"Bash(csc:*)",
"Bash(IndependentExcelFiller.exe)",
"Bash(python:*)",
"Bash(cat:*)",
"Bash(pip install:*)",
"Bash(msbuild:*)",
"Bash(\"C:\\Program Files\\Microsoft Visual Studio\\2022\\Professional\\MSBuild\\Current\\Bin\\MSBuild.exe\":*)",
"Bash(\"C:\\Program Files\\Microsoft Visual Studio\\2022\\Professional\\MSBuild\\Current\\Bin\\MSBuild.exe\" \"D:\\数据\\诺必达\\赛鼎\\SGGL_SeDin_New\\SGGL\\FineUIPro.Web\\FineUIPro.Web.csproj\" /t:Build /p:Configuration=Release /nologo /v:minimal)"
],
"deny": [],
"ask": []
}
}
+3
View File
@@ -303,6 +303,7 @@
<Compile Include="Common\UserShowColumnsService.cs" />
<Compile Include="Common\WeatherService.cs" />
<Compile Include="Common\WeekDayService.cs" />
<Compile Include="Common\YunMouHelper.cs" />
<Compile Include="CQMS\Check\CheckControlApproveService.cs" />
<Compile Include="CQMS\Check\CheckControlService.cs" />
<Compile Include="CQMS\Check\CheckEquipmentApproveService.cs" />
@@ -601,6 +602,7 @@
<Compile Include="OpenService\MonitorService.cs" />
<Compile Include="DynamicTHeaderHepler.cs" />
<Compile Include="OpenService\GetDataService.cs" />
<Compile Include="OpenService\YunMouService.cs" />
<Compile Include="Person\PersonTotalService.cs" />
<Compile Include="Person\Person_PersonContractService.cs" />
<Compile Include="Person\Person_PersonTrainService.cs" />
@@ -671,6 +673,7 @@
<Compile Include="PHTGL\OAWebSevice.cs" />
<Compile Include="ProjectData\MainItemService.cs" />
<Compile Include="ProjectData\ProjectData_CodeTemplateRuleService.cs" />
<Compile Include="ProjectData\ProjectDeviceService.cs" />
<Compile Include="ProjectData\ProjectSateService.cs" />
<Compile Include="ProjectData\ProjectService.cs" />
<Compile Include="ProjectData\ProjectUnitService.cs" />
+9
View File
@@ -2048,6 +2048,10 @@ namespace BLL
/// </summary>
public const string DayReportMenuId = "8F15D3BE-BE21-4A6F-AD5C-2BBECEE46149";
/// <summary>
/// 考勤时间管理
/// </summary>
public const string Menu_KqglDateManger = "5B302FF3-A6E4-4305-A0C0-64CA7377777A";
/// <summary>
/// 人工时月报
/// </summary>
@@ -5162,6 +5166,11 @@ namespace BLL
/// </summary>
public const string SafetyProductionEvaluationMenuId = "C48087A8-4C9F-485D-B0A4-C85E112BA705";
/// <summary>
/// 项目设备
/// </summary>
public const string ProjectDevicesMenuId = "E4DC0A35-C585-4C4F-8F79-10F528892314";
/// <summary>
/// 中央企业安全生产治本攻坚三年行动工作台账
/// </summary>
+583
View File
@@ -0,0 +1,583 @@
using Newtonsoft.Json;
using System;
using System.Configuration;
using System.Drawing;
using System.IO;
using System.Net;
using System.Text;
namespace BLL.Common
{
public class YunMouHelper
{
public static string YunMouUrl = ConfigurationManager.AppSettings["YunMouUrl"];
public static string ClientSecret = ConfigurationManager.AppSettings["ClientSecret"];
public static string ClientId = ConfigurationManager.AppSettings["ClientId"];
public static string getToken()
{
string data = "client_id=" + ClientId + "&client_secret=" + ClientSecret + "&grant_type=client_credentials&scope=app";
string result = Post(YunMouUrl + "oauth/token", data, "application/x-www-form-urlencoded", "");
var j2 = JsonConvert.DeserializeObject<dynamic>(result);
return j2.access_token;
}
/// <summary>
/// 添加设备组(一个项目一个)
/// </summary>
/// <param name="groupName"></param>
/// <param name="groupNo"></param>
/// <param name="access_token"></param>
/// <returns></returns>
public static string addDevicesGroups(string groupName, string groupNo, string access_token)
{
if (groupName.Length > 64)
{
groupName = groupName.Substring(0, 63);
}
string data = "{\"groupName\":\"" + groupName + "\",\"groupNo\":\"" + groupNo + "\"}";
string result = Post(YunMouUrl + "api/v1/open/basic/groups/create", data, "application/json;charset=UTF-8", access_token);
ErrLogInfo.WriteLog(result);
var j2 = JsonConvert.DeserializeObject<dynamic>(result);
if (j2.code == "200")
return j2.message;
else
{
return "";
}
}
/// <summary>
/// 删除设备分组
/// </summary>
/// <param name="groupName"></param>
/// <param name="groupNo"></param>
/// <param name="access_token"></param>
/// <returns></returns>
public static string deleteDevicesGroups(string groupNo, string access_token)
{
string result = Post(YunMouUrl + "api/v1/open/basic/groups/delete?groupNo=" + groupNo, "", "application/json;charset=UTF-8", access_token);
ErrLogInfo.WriteLog(result);
var j2 = JsonConvert.DeserializeObject<dynamic>(result);
if (j2.code == "200")
return j2.message;
else
{
return "";
}
}
/// <summary>
/// 添加设备
/// </summary>
/// <param name="deviceSerial"></param>
/// <param name="groupNo"></param>
/// <param name="validateCode"></param>
/// <param name="access_token"></param>
/// <returns></returns>
public static string addDevices(string deviceSerial, string groupNo, string validateCode, string access_token)
{
string data = "{\"deviceSerial\":\"" + deviceSerial + "\",\"groupNo\":\"" + groupNo + "\",\"validateCode\":\"" + validateCode + "\"}";
string result = Post(YunMouUrl + "api/v1/open/basic/devices/create", data, "application/json;charset=UTF-8", access_token);
ErrLogInfo.WriteLog(result);
var j2 = JsonConvert.DeserializeObject<dynamic>(result);
if (j2.code == "200")
return j2.data.groupId;
else
{
return "";
}
}
/// <summary>
/// 修改设备名称(按设备序列号)
/// </summary>
/// <param name="deviceSerial"></param>
/// <param name="deviceName"></param>
/// <param name="access_token"></param>
/// <returns></returns>
public static string updateDevices(string deviceSerial, string deviceName, string access_token)
{
string data = "{\"deviceSerial\":\"" + deviceSerial + "\",\"deviceName\":\"" + deviceName + "\"}";
string result = Post(YunMouUrl + "api/v1/open/basic/devices/update", data, "application/json;charset=UTF-8", access_token);
ErrLogInfo.WriteLog(result);
var j2 = JsonConvert.DeserializeObject<dynamic>(result);
if (j2.code == "200")
return j2.message;
else
{
return "";
}
}
/// <summary>
/// 删除设备
/// </summary>
/// <param name="deviceSerial"></param>
/// <param name="access_token"></param>
/// <returns></returns>
public static string deleteDevices(string deviceSerial, string access_token)
{
string result = Post(YunMouUrl + "api/v1/open/basic/devices/delete?deviceSerial=" + deviceSerial, "", "application/json;charset=UTF-8", access_token);
ErrLogInfo.WriteLog(result);
var j2 = JsonConvert.DeserializeObject<dynamic>(result);
if (j2.code == "200")
return j2.message;
else
{
return "";
}
}
/// <summary>
/// 添加权限组,建议一个项目一个
/// </summary>
/// <param name="groupName"></param>
/// <param name="access_token"></param>
/// <returns></returns>
public static string addPermissionGroups(string groupName, string access_token)
{
char[] TrimChar = { '、', ' ', '-', '\'', '\"', '\\', '.', '、', '-', '[', ']', '【', '】', '(', ')', '#', '@', '~', '<', '>' };
//groupname不能大于32位
if (groupName.Length > 32)
{
groupName = groupName.Substring(0, 31).Trim(TrimChar);
}
groupName = groupName.Replace("、", "").Replace("/", "").Replace(".", "").Replace("-", "").Replace("[", "").Replace("]", "").Replace("【", "").Replace("】", "").Replace("(", "")
.Replace(")", "").Replace("#", "").Replace("@", "").Replace("~", "").Replace("<", "").Replace(">", "")
.Replace("", "")
.Replace("", "");
string data = "{\"groupName\":\"" + groupName + "\"}";
string result = Post(YunMouUrl + "api/v1/open/accessControl/permissionGroups/create", data, "application/json;charset=UTF-8", access_token);
ErrLogInfo.WriteLog(result);
var j2 = JsonConvert.DeserializeObject<dynamic>(result);
if (j2.code == "200")
return j2.data.groupId;
else
{
return "";
}
}
/// <summary>
/// 根据权限组下发权限
/// </summary>
/// <param name="groupName"></param>
/// <param name="access_token"></param>
/// <returns></returns>
public static string issuedByGroup(string groupId, string access_token)
{
string data = "{\"groupId\":\"" + groupId + "\"}";
string result = Post(YunMouUrl + "api/v1/open/accessControl/allots/actions/issuedByGroup", data, "application/json;charset=UTF-8", access_token);
var j2 = JsonConvert.DeserializeObject<dynamic>(result);
if (j2.code == "200")
return j2.code;
else
{
return "";
}
}
/// <summary>
/// 删除权限组(会同时移除权限组下人员和设备下发记录以及已下发到设备的权限)
/// </summary>
/// <param name="groupId"></param>
/// <param name="access_token"></param>
/// <returns></returns>
public static string deletePermissionGroups(string groupId, string access_token)
{
string result = Post(YunMouUrl + "api/v1/open/accessControl/permissionGroups/delete?groupId=" + groupId, "", "application/json;charset=UTF-8", access_token);
var j2 = JsonConvert.DeserializeObject<dynamic>(result);
if (j2.code == "200")
{
return j2.data.groupId;
}
else
{
return "";
}
}
/// <summary>
/// 填加员工到权限组
/// </summary>
/// <param name="groupId"></param>
/// <param name="employeeNos"></param>
/// <param name="access_token"></param>
/// <returns></returns>
public static string addPersonsToGroups(string groupId, string[] employeeNos, string access_token)
{
//string permissions = "";
//if (employeeNos.Length == 1)
//{
// permissions = "\"permissions\":[{\"employeeNo\": \"" + employeeNos[0] + "\",\"validBeginTime\": \"2020-01-11\"," +
// "\"validEndTime\": \"2050-12-30\"}]";
//}
string data = "{\"groupId\":\"" + groupId + "\",\"employeeNos\":[\"" + string.Join("\", \"", employeeNos) + "\"],\"autoIssue\":\"true\"}";
string result = Post(YunMouUrl + "api/v1/open/accessControl/permissionGroups/actions/addPersons", data, "application/json;charset=UTF-8", access_token);
ErrLogInfo.WriteLog(result);
var j2 = JsonConvert.DeserializeObject<dynamic>(result);
if (j2.code == "200")
return j2.data.statisticsId;
else
{
return "";
}
}
/// <summary>
/// 从权限组移除员工
/// </summary>
/// <param name="groupId"></param>
/// <param name="employeeNos"></param>
/// <param name="access_token"></param>
/// <returns></returns>
public static string deletePersonsFromGroups(string groupId, string[] employeeNos, string access_token)
{
string data = "{\"groupId\":\"" + groupId + "\",\"employeeNos\":[\"" + string.Join("\", \"", employeeNos) + "\"]}";
string result = Post(YunMouUrl + "api/v1/open/accessControl/permissionGroups/actions/removePersons", data, "application/json;charset=UTF-8", access_token);
ErrLogInfo.WriteLog(result);
var j2 = JsonConvert.DeserializeObject<dynamic>(result);
if (j2.code == "200")
return j2.data.statisticsId;
else
{
return "";
}
}
/// <summary>
/// 添加设备到权限组
/// </summary>
/// <param name="groupId"></param>
/// <param name="devices"></param>
/// <param name="access_token"></param>
/// <returns></returns>
public static string addDevicesToGroups(string groupId, string[] devices, string access_token)
{
string data = "{\"groupId\":\"" + groupId + "\",\"deviceSerials\":[\"" + string.Join("\", \"", devices) + "\"],\"autoIssue\":true,\"checkCapability\":true}";
string result = Post(YunMouUrl + "api/v1/open/accessControl/permissionGroups/actions/addDevices", data, "application/json;charset=UTF-8", access_token);
ErrLogInfo.WriteLog(result);
var j2 = JsonConvert.DeserializeObject<dynamic>(result);
if (j2.code == "200")
return j2.code;
else
{
return "";
}
}
/// <summary>
/// 从权限组移除设备
/// </summary>
/// <param name="groupId"></param>
/// <param name="devices"></param>
/// <param name="access_token"></param>
/// <returns></returns>
public static string deleteDevicesFromGroups(string groupId, string[] devices, string access_token)
{
string data = "{\"groupId\":\"" + groupId + "\",\"deviceSerials\":[\"" + string.Join("\", \"", devices) + "\"],\"autoIssue\":true,\"checkCapability\":true}";
string result = Post(YunMouUrl + "api/v1/open/accessControl/permissionGroups/actions/removeDevices", data, "application/json;charset=UTF-8", access_token);
ErrLogInfo.WriteLog(result);
var j2 = JsonConvert.DeserializeObject<dynamic>(result);
if (j2.code == "200")
return j2.message;
else
{
return "";
}
}
/// <summary>
/// 添加人员
/// </summary>
/// <param name="employeeNo"></param>
/// <param name="personName"></param>
/// <param name="personPhone"></param>
/// <param name="pic"></param>
/// <param name="access_token"></param>
/// <returns></returns>
public static string addPerson(string employeeNo, string personName, string personPhone, string pic, string access_token)
{
string rootUrl = ConfigurationManager.AppSettings["localRoot"];
string filename = rootUrl + pic;
FileInfo fi1 = new FileInfo(filename);
if (fi1.Length > 200 * 1024)//base64编码的人脸图片,图片大小需小于200kB,数据需去除base64前缀
{
filename = filename.Replace(".jpg", "_new.jpg").Replace(".jpeg", "_new.jpeg");
CropImage(fi1.FullName, filename, 200);
}
string faceImageBase64 = ImageToByte64String(filename, System.Drawing.Imaging.ImageFormat.Jpeg); // 图片的base64编码
string data = "{\"employeeNo\":\"" + employeeNo + "\",\"personName\":\"" + personName + "\",\"faceImageBase64\":\"" + faceImageBase64 + "\",\"verifyImage\":true}";
string result = Post(YunMouUrl + "api/v1/open/basic/persons/create", data, "application/json;charset=UTF-8", access_token);
ErrLogInfo.WriteLog(personName + result);
var j2 = JsonConvert.DeserializeObject<dynamic>(result);
return j2.code;
}
/// <summary>
/// 根据employeeNo更新人员信息
/// </summary>
/// <param name="employeeNo"></param>
/// <param name="personName"></param>
/// <param name="personPhone"></param>
/// <param name="pic"></param>
/// <param name="access_token"></param>
/// <returns></returns>
public static string updatePerson(string employeeNo, string personName, string personPhone, string pic, string access_token)
{
string rootUrl = ConfigurationManager.AppSettings["localRoot"];
string filename = rootUrl + pic;
FileInfo fi1 = new FileInfo(filename);
if (fi1.Length > 200 * 1024)//base64编码的人脸图片,图片大小需小于200kB,数据需去除base64前缀
{
filename = filename.Replace(".jpg", "_new.jpg").Replace(".jpeg", "_new.jpeg");
CropImage(fi1.FullName, filename, 200);
}
string faceImageBase64 = ImageToByte64String(filename, System.Drawing.Imaging.ImageFormat.Jpeg); // 图片的base64编码
string data = "{\"employeeNo\":\"" + employeeNo + "\",\"personName\":\"" + personName + "\",\"faceImageBase64\":\"" + faceImageBase64 + "\",\"verifyImage\":true}";
string result = Post(YunMouUrl + "api/v1/open/basic/persons/update", data, "application/json;charset=UTF-8", access_token);
var j2 = JsonConvert.DeserializeObject<dynamic>(result);
return j2.code;
}
/// <summary>
/// 获取人员
/// </summary>
/// <param name="employeeNo"></param>
/// <param name="access_token"></param>
/// <returns></returns>
public static string getPerson(string employeeNo, string access_token)
{
string result = Get(YunMouUrl + "api/v1/open/basic/persons/get?employeeNo=" + employeeNo, "application/json;charset=UTF-8", access_token);
return result;
}
/// <summary>
/// 设备布防
/// </summary>
/// <param name="deviceSerial"></param>
/// <param name="isDefence"></param>
/// <param name="access_token"></param>
/// <returns></returns>
public static string setDefence(string deviceSerial, string isDefence, string access_token)
{
string result = Post(YunMouUrl + "api/v1/ezviz/devices/actions/setDefence/deviceSerial?deviceSerial=" + deviceSerial + "&isDefence=" + isDefence, "", "application/json;charset=UTF-8", access_token);
var j2 = JsonConvert.DeserializeObject<dynamic>(result);
if (j2.code == "200")
return j2.message;
else
{
return "";
}
}
/// <summary>
/// 添加消息通道
/// </summary>
/// <param name="access_token"></param>
/// <returns></returns>
public static string addConsumer(string access_token)
{
string result = Post(YunMouUrl + "api/v1/mq/consumer/group1", "", "application/json;charset=UTF-8", access_token);
var j2 = JsonConvert.DeserializeObject<dynamic>(result);
if (j2.code == "200")
return j2.data.consumerId;
else
{
return "";
}
}
/// <summary>
/// 提交偏移量
/// </summary>
/// <param name="consumerId"></param>
/// <param name="access_token"></param>
/// <returns></returns>
public static string offsets(string consumerId, string access_token)
{
string data = "consumerId=" + consumerId;
string result = Post(YunMouUrl + "api/v1/mq/consumer/offsets", data, "application/x-www-form-urlencoded", access_token);
return result;
}
/// <summary>
/// 消费消息
/// </summary>
/// <param name="consumerId"></param>
/// <param name="access_token"></param>
/// <returns></returns>
public static string consumerMessage(string consumerId, string access_token)
{
string data = "consumerId=" + consumerId + "&autoCommit=true";
string result = Post(YunMouUrl + "api/v1/mq/consumer/messages", data, "application/x-www-form-urlencoded", access_token);
return result;
}
/// <summary>
/// POST请求
/// </summary>
/// <param name="url"></param>
/// <param name="data"></param>
/// <param name="ContentType"></param>
/// <param name="token"></param>
/// <returns></returns>
public static string Post(string url, string data, string ContentType, string token)
{
Encoding encoding = Encoding.Default;
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12 | SecurityProtocolType.Ssl3;//设置这个安全协议必须在创建请求之前!
HttpWebRequest request = WebRequest.Create(url) as HttpWebRequest;//创建请求对象
request.Method = "POST";//请求方式
request.ContentType = ContentType;//链接类型
if (!string.IsNullOrEmpty(token))
{
request.Headers.Add("Authorization", "Bearer " + token);
}
try
{
byte[] buffer = Encoding.UTF8.GetBytes(data);
//RequestStream.Write(bytes, 0, bytes.Length);
// byte[] buffer = encoding.GetBytes(data);
request.ContentLength = buffer.Length;
request.GetRequestStream().Write(buffer, 0, buffer.Length);
HttpWebResponse webresponse = request.GetResponse() as HttpWebResponse;
using (Stream s = webresponse.GetResponseStream())
{
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
StreamReader reader = new StreamReader(s, Encoding.UTF8);
string res = reader.ReadToEnd();
ErrLogInfo.WriteLog(res);
return res;
}
}
catch (Exception ex)
{
return "";
}
}
/// <summary>
/// GET请求
/// </summary>
/// <param name="url"></param>
/// <param name="ContentType"></param>
/// <param name="token"></param>
/// <returns></returns>
public static string Get(string url, string ContentType, string token)
{
Encoding encoding = Encoding.Default;
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12 | SecurityProtocolType.Ssl3;//设置这个安全协议必须在创建请求之前!
HttpWebRequest request = WebRequest.Create(url) as HttpWebRequest;//创建请求对象
request.Method = "GET";//请求方式
request.ContentType = ContentType;//链接类型
if (!string.IsNullOrEmpty(token))
{
request.Headers.Add("Authorization", "Bearer " + token);
}
try
{
HttpWebResponse webresponse = request.GetResponse() as HttpWebResponse;
using (Stream s = webresponse.GetResponseStream())
{
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
StreamReader reader = new StreamReader(s, Encoding.UTF8);
return reader.ReadToEnd();
}
}
catch (Exception ex)
{
return "";
}
}
public static string ImageToByte64String(string filePath, System.Drawing.Imaging.ImageFormat format)
{
Bitmap bitmap = new Bitmap(filePath);
MemoryStream memoryStream = new MemoryStream();
bitmap.Save(memoryStream, format);
byte[] array = new byte[memoryStream.Length];
memoryStream.Position = 0L;
memoryStream.Read(array, 0, (int)memoryStream.Length);
memoryStream.Close();
return Convert.ToBase64String(array);
}
public static void CropImage(string inputFilePath, string outputFilePath, int maxSizeInKB)
{
// 加载图片
using (Image image = Image.FromFile(inputFilePath))
{
// 计算最大字节大小
int maxSizeBytes = maxSizeInKB * 1024;
// 如果图片大小已经小于或等于最大限制,则不裁剪直接保存
if (GetImageSizeInBytes(image) <= maxSizeBytes)
{
image.Save(outputFilePath, image.RawFormat);
return;
}
// 裁剪图片
// 这里只是一个简单的示例,实际应用中可能需要根据需求来裁剪图片
using (Image croppedImage = CropImageToHalfSize(image))
{
// 保存裁剪后的图片
using (MemoryStream memoryStream = new MemoryStream())
{
croppedImage.Save(memoryStream, image.RawFormat);
// 如果裁剪后的图片大小仍然大于限制,则递归裁剪
if (memoryStream.Length > maxSizeBytes)
{
memoryStream.Position = 0;
string tempFile = outputFilePath.Replace(".jpg", "temp.jpg").Replace(".jpeg", "temp.jpg");
using (FileStream fileStream = new FileStream(tempFile, FileMode.Create))
{
memoryStream.CopyTo(fileStream);
}
CropImage(tempFile, outputFilePath, maxSizeInKB);
}
else
{
// 保存到文件
memoryStream.Position = 0;
using (FileStream fileStream = new FileStream(outputFilePath, FileMode.Create))
{
memoryStream.CopyTo(fileStream);
}
}
}
}
}
}
private static Image CropImageToHalfSize(Image image)
{
// 这里只是一个示例,实际情况可能需要根据需求来裁剪图片
int newWidth = image.Width / 2;
int newHeight = image.Height / 2;
return image.GetThumbnailImage(newWidth, newHeight, () => { return false; }, IntPtr.Zero);
}
private static long GetImageSizeInBytes(Image image)
{
using (MemoryStream memoryStream = new MemoryStream())
{
image.Save(memoryStream, image.RawFormat);
return memoryStream.Length;
}
}
}
}
+416
View File
@@ -0,0 +1,416 @@
using BLL.Common;
using Newtonsoft.Json;
using System;
using System.Linq;
using System.Timers;
namespace BLL
{
public class YunMouService
{
#region 5
/// <summary>
/// 监视组件
/// </summary>
private static Timer messageTimer;
private static string token;
private static string consumerId;
/// <summary>
/// 启动监视器,不一定能成功,根据系统设置决定对监视器执行的操作 系统启动5分钟
/// </summary>
public static void StartMonitor()
{
token = YunMouHelper.getToken();
consumerId = YunMouHelper.addConsumer(token);
if (messageTimer != null)
{
messageTimer.Stop();
messageTimer.Dispose();
messageTimer = null;
}
messageTimer = new Timer
{
AutoReset = true
};
messageTimer.Elapsed += new ElapsedEventHandler(InProcess);
messageTimer.Interval = 4000 * 60;// 10分钟
messageTimer.Start();
}
/// <summary>
/// 流程确认 定时执行 系统启动5分钟
/// </summary>
/// <param name="sender">Timer组件</param>
/// <param name="e">事件参数</param>
private static void InProcess(object sender, ElapsedEventArgs e)
{
//自动调用
DoSynchDataNew();
}
#endregion
/// <summary>
/// 手动调用
/// </summary>
public static void manualOperation(string tokenSd, string consumerIdSd)
{
DoSynchData(tokenSd, consumerIdSd);
}
/// <summary>
///
/// </summary>
public static void DoSynchData(string tokenSd = "", string consumerIdSd = "")
{
try
{
if (string.IsNullOrEmpty(token))
{
token = tokenSd;
}
if (string.IsNullOrEmpty(consumerId))
{
consumerId = consumerIdSd;
}
////获取token
//token = YunMouHelper.getToken();
////创建消费者消费者如果5分钟未调用拉取消息接口将被删除。
//consumerId = YunMouHelper.addConsumer(token);
ErrLogInfo.WriteLog(token + ";" + consumerId);
string content = YunMouHelper.consumerMessage(consumerId, token);
//调用消息队列第一次
ErrLogInfo.WriteLog(content);
var j2 = JsonConvert.DeserializeObject<dynamic>(content);
//消费者首次拉取消息时需要与消息通道建立连接,此次调用实际拉到消息列表为空,
//再次调用即可拉取到消息,30秒内必须再次调用拉取消息接口,否则将断开与消息通道的连接。
//因此拉取间隔需要在30秒以内,否则每次拉到的消息是空的
if (j2.data.Count > 0)
{
using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString))
{
for (int i = 0; i < j2.data.Count; i++)
{
var msg = JsonConvert.DeserializeObject(j2.data[i]["content"].ToString());
if (!string.IsNullOrEmpty(Convert.ToString(msg.employeeNo)))
{
string deviceSerial = Convert.ToString(msg.deviceSerial);
string employeeNo = Convert.ToString(msg.employeeNo);
DateTime dateTime = Convert.ToDateTime(Convert.ToString(msg.dateTime));
var devices = Funs.DB.Project_Devices.FirstOrDefault(x => x.DeviceSerial == deviceSerial);
Model.SitePerson_PersonInOut newInOut = new Model.SitePerson_PersonInOut
{
ProjectId = devices.ProjectId,
IdentityCard = employeeNo,
IsIn = true,
ChangeTime = dateTime,
InOutWay = Const.InOutWay_1,
};
InsertInOut(newInOut);
}
}
}
}
else
{
//修改 如果为空循环调用最多5次
for (int y = 0; y < 5; y++)
{
//如果为空再调一次
content = YunMouHelper.consumerMessage(consumerId, token);
//调用消息队列第二次
ErrLogInfo.WriteLog(content+"调用消息队列" + (y + 2).ToString());
j2 = JsonConvert.DeserializeObject<dynamic>(content);
if (j2.data.Count > 0)
{
using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString))
{
for (int i = 0; i < j2.data.Count; i++)
{
var msg = JsonConvert.DeserializeObject(j2.data[i]["content"].ToString());
if (!string.IsNullOrEmpty(Convert.ToString(msg.employeeNo)))
{
string deviceSerial = Convert.ToString(msg.deviceSerial);
string employeeNo = Convert.ToString(msg.employeeNo);
DateTime dateTime = Convert.ToDateTime(Convert.ToString(msg.dateTime));
var devices = Funs.DB.Project_Devices.FirstOrDefault(x => x.DeviceSerial == deviceSerial);
//身份证号时
if (employeeNo.Length == 18)
{
Model.SitePerson_PersonInOut newInOut = new Model.SitePerson_PersonInOut
{
ProjectId = devices.ProjectId,
IdentityCard = employeeNo,
IsIn = true,
ChangeTime = dateTime,
InOutWay = Const.InOutWay_1,
};
InsertInOut(newInOut);
}
}
}
//提交偏移量
var msgOffset = YunMouHelper.offsets(consumerId, token);
}
//有值跳出循环
break;
}
}
}
}
catch (Exception ex)
{
var erro = ex.Message;
ErrLogInfo.WriteLog(ex.Message);
}
}
public static void DoSynchDataNew()
{
try
{
////获取token
//token = YunMouHelper.getToken();
////创建消费者消费者如果5分钟未调用拉取消息接口将被删除。
//consumerId = YunMouHelper.addConsumer(token);
ErrLogInfo.WriteLog(token + ";" + consumerId+ "调用消息队列参数");
string content = YunMouHelper.consumerMessage(consumerId, token);
//调用消息队列第一次
ErrLogInfo.WriteLog(content );
var j2 = JsonConvert.DeserializeObject<dynamic>(content);
//消费者首次拉取消息时需要与消息通道建立连接,此次调用实际拉到消息列表为空,
//再次调用即可拉取到消息,30秒内必须再次调用拉取消息接口,否则将断开与消息通道的连接。
//因此拉取间隔需要在30秒以内,否则每次拉到的消息是空的
if (j2.data.Count > 0)
{
using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString))
{
for (int i = 0; i < j2.data.Count; i++)
{
var msg = JsonConvert.DeserializeObject(j2.data[i]["content"].ToString());
if (!string.IsNullOrEmpty(Convert.ToString(msg.employeeNo)))
{
string deviceSerial = Convert.ToString(msg.deviceSerial);
string employeeNo = Convert.ToString(msg.employeeNo);
DateTime dateTime = Convert.ToDateTime(Convert.ToString(msg.dateTime));
var devices = db.Project_Devices.FirstOrDefault(x => x.DeviceSerial == deviceSerial);
Model.SitePerson_PersonInOut newInOut = new Model.SitePerson_PersonInOut
{
ProjectId = devices.ProjectId,
IdentityCard = employeeNo,
IsIn = true,
ChangeTime = dateTime,
InOutWay = Const.InOutWay_1,
};
InsertInOut(newInOut);
}
}
}
}
else
{
//修改 如果为空循环调用最多5次
for (int y = 0; y < 5; y++)
{
//如果为空再调一次
content = YunMouHelper.consumerMessage(consumerId, token);
//调用消息队列第二次
ErrLogInfo.WriteLog(content+ "调用消息队列" + (y + 2).ToString());
j2 = JsonConvert.DeserializeObject<dynamic>(content);
if (j2.data.Count > 0)
{
using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString))
{
for (int i = 0; i < j2.data.Count; i++)
{
var msg = JsonConvert.DeserializeObject(j2.data[i]["content"].ToString());
if (!string.IsNullOrEmpty(Convert.ToString(msg.employeeNo)))
{
string deviceSerial = Convert.ToString(msg.deviceSerial);
string employeeNo = Convert.ToString(msg.employeeNo);
DateTime dateTime = Convert.ToDateTime(Convert.ToString(msg.dateTime));
var devices = Funs.DB.Project_Devices.FirstOrDefault(x => x.DeviceSerial == deviceSerial);
//身份证号时
if (employeeNo.Length == 18)
{
Model.SitePerson_PersonInOut newInOut = new Model.SitePerson_PersonInOut
{
ProjectId = devices.ProjectId,
IdentityCard = employeeNo,
IsIn = true,
ChangeTime = dateTime,
InOutWay = Const.InOutWay_1,
};
InsertInOut(newInOut);
}
}
}
//提交偏移量
var msgOffset = YunMouHelper.offsets(consumerId, token);
}
//有值跳出循环
break;
}
}
}
}
catch (Exception ex)
{
var erro = ex.Message;
ErrLogInfo.WriteLog(ex.Message );
}
}
#region
public static void InsertInOut(Model.SitePerson_PersonInOut model)
{
//考勤时间配置不为空的情况
var Kqgl_DateManageModel = Funs.DB.Kqgl_DateManage.FirstOrDefault(x => x.ProjectId == model.ProjectId);
if (Kqgl_DateManageModel != null)
{
var changeTime = Convert.ToDateTime(model.ChangeTime);
var nowTime = TimeSpan.Parse(changeTime.ToString("HH:mm:ss"));//当前时间的时分秒
#region
TimeSpan AmStartTime1 = TimeSpan.Parse(Kqgl_DateManageModel.AmStartTime1.ToString());
TimeSpan AmStartTime2 = TimeSpan.Parse(Kqgl_DateManageModel.AmStartTime2.ToString());
TimeSpan AmEndTime1 = TimeSpan.Parse(Kqgl_DateManageModel.AmEndTime1.ToString());
TimeSpan AmEndTime2 = TimeSpan.Parse(Kqgl_DateManageModel.AmEndTime2.ToString());
TimeSpan PmStartTime1 = TimeSpan.Parse(Kqgl_DateManageModel.PmStartTime1.ToString());
TimeSpan PmStartTime2 = TimeSpan.Parse(Kqgl_DateManageModel.PmStartTime2.ToString());
TimeSpan PmEndTime1 = TimeSpan.Parse(Kqgl_DateManageModel.PmEndTime1.ToString());
TimeSpan PmEndTime2 = TimeSpan.Parse(Kqgl_DateManageModel.PmEndTime2.ToString());
TimeSpan time1 = new TimeSpan(0, Convert.ToInt32(Kqgl_DateManageModel.LateTime), 0);
TimeSpan time2 = new TimeSpan(0, Convert.ToInt32(Kqgl_DateManageModel.LeaveTime), 0);
//允许迟到x分钟
AmStartTime2 = AmStartTime2.Add(time2);
PmStartTime2 = PmStartTime2.Add(time2);
//允许早退x分钟
AmEndTime1 = AmEndTime1.Add(-time1);
PmEndTime1 = PmEndTime1.Add(-time1);
var personModel = Funs.DB.SitePerson_Person.FirstOrDefault(x => x.IdentityCard == model.IdentityCard && x.ProjectId == model.ProjectId);
if (personModel != null)
{
//状态:0上午上班 1上午下班 2下午上班 3下午下班
var state = "";
//如果是在进场时间内
if (nowTime >= AmStartTime1 && nowTime <= AmStartTime2)
{
model.IsIn = true;
state = "0";
}
if (nowTime >= PmStartTime1 && nowTime <= PmStartTime2)
{
model.IsIn = true;
state = "2";
}
if (nowTime >= AmEndTime1 && nowTime <= AmEndTime2)
{
model.IsIn = false;
state = "1";
}
if (nowTime >= PmEndTime1 && nowTime <= PmEndTime2)
{
model.IsIn = false;
state = "3";
}
Model.SGGLDB db = Funs.DB;
#region ()
var objTime1 = Convert.ToDateTime(Convert.ToDateTime(changeTime).ToString("yyyy-MM-dd") + " " + AmStartTime1.ToString());
var objTime2 = Convert.ToDateTime(Convert.ToDateTime(changeTime).ToString("yyyy-MM-dd") + " " + AmStartTime2.ToString());
var objTime3 = Convert.ToDateTime(Convert.ToDateTime(changeTime).ToString("yyyy-MM-dd") + " " + AmEndTime1.ToString());
var objTime4 = Convert.ToDateTime(Convert.ToDateTime(changeTime).ToString("yyyy-MM-dd") + " " + AmEndTime2.ToString());
var objTime5 = Convert.ToDateTime(Convert.ToDateTime(changeTime).ToString("yyyy-MM-dd") + " " + PmStartTime1.ToString());
var objTime6 = Convert.ToDateTime(Convert.ToDateTime(changeTime).ToString("yyyy-MM-dd") + " " + PmStartTime2.ToString());
var objTime7 = Convert.ToDateTime(Convert.ToDateTime(changeTime).ToString("yyyy-MM-dd") + " " + PmEndTime1.ToString());
var objTime8 = Convert.ToDateTime(Convert.ToDateTime(changeTime).ToString("yyyy-MM-dd") + " " + PmEndTime2.ToString());
//1.上午上班
var result1 = db.SitePerson_PersonInOut.Where(x => x.ProjectId == model.ProjectId && x.IdentityCard == personModel.IdentityCard &&
x.ChangeTime >= objTime1 && x.ChangeTime <= objTime2
).ToList();
//2.上午下班
var result2 = db.SitePerson_PersonInOut.Where(x => x.ProjectId == model.ProjectId && x.IdentityCard == personModel.IdentityCard &&
x.ChangeTime >= objTime3 && x.ChangeTime <= objTime4
).ToList();
//3.下午上班
var result3 = db.SitePerson_PersonInOut.Where(x => x.ProjectId == model.ProjectId && x.IdentityCard == personModel.IdentityCard &&
x.ChangeTime >= objTime5 && x.ChangeTime <= objTime6
).ToList();
//4.下午下班
var result4 = db.SitePerson_PersonInOut.Where(x => x.ProjectId == model.ProjectId && x.IdentityCard == personModel.IdentityCard &&
x.ChangeTime >= objTime7 && x.ChangeTime <= objTime8
).ToList();
//上班打卡时间取最早,下班取最晚
if (result1.Count > 0 && state == "0")
{
//db.SitePerson_PersonInOut.DeleteAllOnSubmit(result1);
//db.SubmitChanges();
}
else if (result1.Count == 0 && state == "0")
{
PersonInOutService.AddPersonInOut(model);
}
if (result2.Count > 0 && state == "1")
{
db.SitePerson_PersonInOut.DeleteAllOnSubmit(result2);
db.SubmitChanges();
PersonInOutService.AddPersonInOut(model);
}
else if (result2.Count == 0 && state == "1")
{
PersonInOutService.AddPersonInOut(model);
}
if (result3.Count > 0 && state == "2")
{
//db.SitePerson_PersonInOut.DeleteAllOnSubmit(result3);
//db.SubmitChanges();
}
else if (result3.Count == 0 && state == "2")
{
PersonInOutService.AddPersonInOut(model);
}
if (result4.Count > 0 && state == "3")
{
db.SitePerson_PersonInOut.DeleteAllOnSubmit(result4);
db.SubmitChanges();
PersonInOutService.AddPersonInOut(model);
}
else if (result4.Count == 0 && state == "3")
{
PersonInOutService.AddPersonInOut(model);
}
#endregion
}
#endregion
}
}
#endregion
}
}
@@ -0,0 +1,87 @@
namespace BLL
{
using System.Collections.Generic;
using System.Linq;
using Model;
public static class ProjectDeviceService
{
public static Model.SGGLDB db = Funs.DB;
/// <summary>
///获取项目单位信息
/// </summary>
/// <returns></returns>
public static Model.Project_Devices GetProjectDeviceById(string deviceId)
{
return Funs.DB.Project_Devices.FirstOrDefault(e => e.DeviceId == deviceId);
}
/// <summary>
/// 增加项目设备信息
/// </summary>
/// <returns></returns>
public static void AddProjectDevice(Project_Devices projectDevices)
{
SGGLDB db = Funs.DB;
Project_Devices newProjectUnit = new Project_Devices
{
DeviceId = SQLHelper.GetNewID(typeof(Model.Project_Devices)),
ProjectId = projectDevices.ProjectId,
DeviceName = projectDevices.DeviceName,
DeviceSerial = projectDevices.DeviceSerial,
CreateDate = projectDevices.CreateDate,
Address = projectDevices.Address,
IsInOut = projectDevices.IsInOut,
ValidateCode = projectDevices.ValidateCode,
YunMouDeviceId = projectDevices.YunMouDeviceId,
YunMouPermission = projectDevices.YunMouPermission,
};
db.Project_Devices.InsertOnSubmit(newProjectUnit);
db.SubmitChanges();
}
/// <summary>
///修改项目设备信息
/// </summary>
/// <param name="projectUnit"></param>
public static void UpdateProjectDevice(Model.Project_Devices devices)
{
Model.SGGLDB db = Funs.DB;
Model.Project_Devices newDevices = db.Project_Devices.FirstOrDefault(e => e.DeviceId == devices.DeviceId);
if (newDevices != null)
{
newDevices.ProjectId = devices.ProjectId;
newDevices.DeviceName = devices.DeviceName;
newDevices.DeviceSerial = devices.DeviceSerial;
newDevices.CreateDate = devices.CreateDate;
newDevices.Address = devices.Address;
newDevices.IsInOut = devices.IsInOut;
newDevices.ValidateCode = devices.ValidateCode;
newDevices.YunMouPermission = devices.YunMouPermission;
newDevices.YunMouDeviceId = devices.YunMouDeviceId;
db.SubmitChanges();
}
}
/// <summary>
/// 根据项目单位Id删除一个项目单位信息
/// </summary>
/// <param name="projectUnitId"></param>
public static void DeleteProjectDeviceById(string deviceId)
{
Model.SGGLDB db = Funs.DB;
Model.Project_Devices devices = db.Project_Devices.FirstOrDefault(e => e.DeviceId == deviceId);
if (devices != null)
{
db.Project_Devices.DeleteOnSubmit(devices);
db.SubmitChanges();
}
}
}
}
+24
View File
@@ -1982,6 +1982,7 @@
<Content Include="HSSE\Resources\SignManageEdit.aspx" />
<Content Include="HSSE\SecuritySystem\SafetyOrganization.aspx" />
<Content Include="HSSE\SecuritySystem\SafetyOrganizationEdit.aspx" />
<Content Include="HSSE\SitePerson\DateManage.aspx" />
<Content Include="HSSE\SitePerson\DayReport.aspx" />
<Content Include="HSSE\SitePerson\DayReportDetailView.aspx" />
<Content Include="HSSE\SitePerson\DayReportDetailEdit.aspx" />
@@ -3104,6 +3105,8 @@
<Content Include="ProjectData\MainItem.aspx" />
<Content Include="ProjectData\MainItemEdit.aspx" />
<Content Include="ProjectData\MainItemView.aspx" />
<Content Include="ProjectData\ProjectDevices.aspx" />
<Content Include="ProjectData\ProjectDevicesEdit.aspx" />
<Content Include="ProjectData\ProjectInformation.aspx" />
<Content Include="ProjectData\ProjectList.aspx" />
<Content Include="ProjectData\ProjectSet.aspx" />
@@ -13575,6 +13578,13 @@
<Compile Include="HSSE\SecuritySystem\SafetyOrganizationEdit.aspx.designer.cs">
<DependentUpon>SafetyOrganizationEdit.aspx</DependentUpon>
</Compile>
<Compile Include="HSSE\SitePerson\DateManage.aspx.cs">
<DependentUpon>DateManage.aspx</DependentUpon>
<SubType>ASPXCodeBehind</SubType>
</Compile>
<Compile Include="HSSE\SitePerson\DateManage.aspx.designer.cs">
<DependentUpon>DateManage.aspx</DependentUpon>
</Compile>
<Compile Include="HSSE\SitePerson\DayReport.aspx.cs">
<DependentUpon>DayReport.aspx</DependentUpon>
<SubType>ASPXCodeBehind</SubType>
@@ -15080,6 +15090,20 @@
<Compile Include="ProjectData\MainItemView.aspx.designer.cs">
<DependentUpon>MainItemView.aspx</DependentUpon>
</Compile>
<Compile Include="ProjectData\ProjectDevices.aspx.cs">
<DependentUpon>ProjectDevices.aspx</DependentUpon>
<SubType>ASPXCodeBehind</SubType>
</Compile>
<Compile Include="ProjectData\ProjectDevices.aspx.designer.cs">
<DependentUpon>ProjectDevices.aspx</DependentUpon>
</Compile>
<Compile Include="ProjectData\ProjectDevicesEdit.aspx.cs">
<DependentUpon>ProjectDevicesEdit.aspx</DependentUpon>
<SubType>ASPXCodeBehind</SubType>
</Compile>
<Compile Include="ProjectData\ProjectDevicesEdit.aspx.designer.cs">
<DependentUpon>ProjectDevicesEdit.aspx</DependentUpon>
</Compile>
<Compile Include="ProjectData\ProjectInformation.aspx.cs">
<DependentUpon>ProjectInformation.aspx</DependentUpon>
<SubType>ASPXCodeBehind</SubType>
+1
View File
@@ -64,6 +64,7 @@
{
BLL.MonitorService.StartMonitor();
BLL.MonitorService.StartMonitorEve();
BLL.YunMouService.StartMonitor();
//BLL.MonitorService.StartPersonQuarterCheck();
QuartzServices.Init();
}
@@ -0,0 +1,107 @@
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="DateManage.aspx.cs" Inherits="FineUIPro.Web.HSSE.SitePerson.DateManage" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>考勤时间管理</title>
</head>
<body>
<form id="form1" runat="server">
<f:PageManager ID="PageManager1" AutoSizePanelID="RegionPanel1" runat="server" />
<f:RegionPanel ID="RegionPanel1" ShowBorder="false" runat="server" Margin="5px">
<Regions>
<f:Region ID="Region2" ShowBorder="false" ShowHeader="false" Position="Center" Layout="VBox"
BoxConfigAlign="Stretch" BoxConfigPosition="Left" runat="server" AutoScroll="true">
<Items>
<f:GroupPanel ID="GroupPanel0" Layout="Anchor" Title="考勤时间维护" runat="server">
<Items>
<f:Form ID="SimpleForm1" ShowBorder="false" ShowHeader="false" AutoScroll="true"
Layout="VBox" BodyPadding="10px" runat="server" RedStarPosition="BeforeText"
LabelAlign="Right">
<Rows>
<f:FormRow runat="server" CssStyle="width:800px">
<Items>
<f:DatePicker runat="server" ID="txtAmStartTime1" Label="上午上班签到有效时间" LabelWidth="180px"
Required="true" DateFormatString="HH:mm:ss" ShowRedStar="true" DisplayType="Time">
</f:DatePicker>
<f:DatePicker runat="server" ID="txtAmStartTime2"
Required="true" DateFormatString="HH:mm:ss" ShowRedStar="true" DisplayType="Time">
</f:DatePicker>
</Items>
</f:FormRow>
<f:FormRow runat="server">
<Items>
<f:DatePicker runat="server" ID="txtAmEndTime1" Label="上午下班签退有效时间" LabelWidth="180px"
Required="true" DateFormatString="HH:mm:ss" ShowRedStar="true" DisplayType="Time">
</f:DatePicker>
<f:DatePicker runat="server" ID="txtAmEndTime2"
Required="true" DateFormatString="HH:mm:ss" ShowRedStar="true" DisplayType="Time">
</f:DatePicker>
</Items>
</f:FormRow>
<f:FormRow runat="server">
<Items>
<f:DatePicker runat="server" ID="txtPmStartTime1" Label="下午上班签到有效时间" LabelWidth="180px"
Required="true" DateFormatString="HH:mm:ss" ShowRedStar="true" DisplayType="Time">
</f:DatePicker>
<f:DatePicker runat="server" ID="txtPmStartTime2"
Required="true" DateFormatString="HH:mm:ss" ShowRedStar="true" DisplayType="Time">
</f:DatePicker>
</Items>
</f:FormRow>
<f:FormRow runat="server">
<Items>
<f:DatePicker runat="server" ID="txtPmEndTime1" Label="下午下班签退有效时间" LabelWidth="180px"
Required="true" DateFormatString="HH:mm:ss" ShowRedStar="true" DisplayType="Time">
</f:DatePicker>
<f:DatePicker runat="server" ID="txtPmEndTime2"
Required="true" DateFormatString="HH:mm:ss" ShowRedStar="true" DisplayType="Time">
</f:DatePicker>
</Items>
</f:FormRow>
<f:FormRow runat="server">
<Items>
<f:NumberBox ID="txtLateTime" runat="server" Required="true" ShowRedStar="true" NoDecimal="true" NoNegative="false" Label="允许迟到(分钟)" LabelWidth="180px" >
</f:NumberBox>
<f:NumberBox ID="txtLeaveTime" runat="server" Required="true" ShowRedStar="true" NoDecimal="true" NoNegative="false" Label="允许早退(分钟)" LabelWidth="180px" >
</f:NumberBox>
</Items>
</f:FormRow>
<f:FormRow runat="server">
<Items>
<f:TextArea runat="server" ID="txtEquipmentCode" Label="考勤机序列号(逗号分隔)" LabelWidth="180px" ></f:TextArea>
</Items>
</f:FormRow>
</Rows>
</f:Form>
</Items>
</f:GroupPanel>
</Items>
<Toolbars>
<f:Toolbar ID="Toolbar1" Position="Top" ToolbarAlign="Right" runat="server">
<Items>
<f:Button ID="btnSave" Icon="SystemSave" runat="server" Text="保存数据" ValidateForms="Region2"
Hidden="true" OnClick="btnSave_Click">
</f:Button>
</Items>
</f:Toolbar>
</Toolbars>
</f:Region>
</Regions>
</f:RegionPanel>
</form>
</body>
</html>
@@ -0,0 +1,112 @@
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
using BLL;
namespace FineUIPro.Web.HSSE.SitePerson
{
public partial class DateManage : PageBase
{
public string ProjectId
{
get
{
return (string)ViewState["ProjectId"];
}
set
{
ViewState["ProjectId"] = value;
}
}
public Model.SGGLDB db = Funs.DB;
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
ProjectId = CurrUser.LoginProjectId;
GetButtonPower();
var result = db.Kqgl_DateManage.FirstOrDefault(x => x.ProjectId == ProjectId);
if (result!=null)
{
txtAmStartTime1.Text = result.AmStartTime1.ToString();
txtAmStartTime2.Text = result.AmStartTime2.ToString();
txtAmEndTime1.Text = result.AmEndTime1.ToString();
txtAmEndTime2.Text = result.AmEndTime2.ToString();
txtPmStartTime1.Text = result.PmStartTime1.ToString();
txtPmStartTime2.Text = result.PmStartTime2.ToString();
txtPmEndTime1.Text = result.PmEndTime1.ToString();
txtPmEndTime2.Text = result.PmEndTime2.ToString();
txtLateTime.Text = result.LateTime.ToString();
txtLeaveTime.Text = result.LeaveTime.ToString();
txtEquipmentCode.Text = result.EquipmentCode;
}
}
}
void GetButtonPower()
{
if (BLL.CommonService.GetAllButtonPowerList(this.CurrUser.LoginProjectId, this.CurrUser.PersonId, Const.Menu_KqglDateManger, Const.BtnSave))
{
this.btnSave.Hidden = false;
}
}
protected void btnSave_Click(object sender, EventArgs e) {
var result = db.Kqgl_DateManage.FirstOrDefault(x => x.ProjectId == ProjectId);
if (result==null)
{
Model.Kqgl_DateManage model = new Model.Kqgl_DateManage()
{
ProjectId=ProjectId,
Id = Guid.NewGuid().ToString(),
AmStartTime2 = TimeSpan.Parse(txtAmStartTime2.Text),
AmEndTime1 = TimeSpan.Parse(txtAmEndTime1.Text),
AmEndTime2 = TimeSpan.Parse(txtAmEndTime2.Text),
PmStartTime1 = TimeSpan.Parse(txtPmStartTime1.Text),
PmStartTime2 = TimeSpan.Parse(txtPmStartTime2.Text),
PmEndTime1 = TimeSpan.Parse(txtPmEndTime1.Text),
PmEndTime2 = TimeSpan.Parse(txtPmEndTime2.Text),
LateTime = Convert.ToInt32(txtLateTime.Text),
LeaveTime = Convert.ToInt32(txtLeaveTime.Text),
EquipmentCode= txtEquipmentCode.Text.Trim()
};
model.AmStartTime1 = TimeSpan.Parse(txtAmStartTime1.Text);
db.Kqgl_DateManage.InsertOnSubmit(model);
db.SubmitChanges();
}
else
{
var model = db.Kqgl_DateManage.FirstOrDefault(x => x.Id == result.Id) ;
model.AmStartTime2 = TimeSpan.Parse(txtAmStartTime2.Text);
model.AmEndTime1 = TimeSpan.Parse(txtAmEndTime1.Text);
model.AmEndTime2 = TimeSpan.Parse(txtAmEndTime2.Text);
model.PmStartTime1 = TimeSpan.Parse(txtPmStartTime1.Text);
model.PmStartTime2 = TimeSpan.Parse(txtPmStartTime2.Text);
model.PmEndTime1 = TimeSpan.Parse(txtPmEndTime1.Text);
model.PmEndTime2 = TimeSpan.Parse(txtPmEndTime2.Text);
model.LateTime = Convert.ToInt32(txtLateTime.Text);
model.LeaveTime = Convert.ToInt32(txtLeaveTime.Text);
model.AmStartTime1 = TimeSpan.Parse(txtAmStartTime1.Text);
model.EquipmentCode = txtEquipmentCode.Text.Trim();
db.SubmitChanges();
}
Alert.ShowInTop("编辑成功!", MessageBoxIcon.Success);
}
}
}
@@ -0,0 +1,188 @@
//------------------------------------------------------------------------------
// <自动生成>
// 此代码由工具生成。
//
// 对此文件的更改可能导致不正确的行为,如果
// 重新生成代码,则所做更改将丢失。
// </自动生成>
//------------------------------------------------------------------------------
namespace FineUIPro.Web.HSSE.SitePerson
{
public partial class DateManage
{
/// <summary>
/// form1 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::System.Web.UI.HtmlControls.HtmlForm form1;
/// <summary>
/// PageManager1 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.PageManager PageManager1;
/// <summary>
/// RegionPanel1 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.RegionPanel RegionPanel1;
/// <summary>
/// Region2 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Region Region2;
/// <summary>
/// GroupPanel0 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.GroupPanel GroupPanel0;
/// <summary>
/// SimpleForm1 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Form SimpleForm1;
/// <summary>
/// txtAmStartTime1 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.DatePicker txtAmStartTime1;
/// <summary>
/// txtAmStartTime2 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.DatePicker txtAmStartTime2;
/// <summary>
/// txtAmEndTime1 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.DatePicker txtAmEndTime1;
/// <summary>
/// txtAmEndTime2 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.DatePicker txtAmEndTime2;
/// <summary>
/// txtPmStartTime1 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.DatePicker txtPmStartTime1;
/// <summary>
/// txtPmStartTime2 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.DatePicker txtPmStartTime2;
/// <summary>
/// txtPmEndTime1 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.DatePicker txtPmEndTime1;
/// <summary>
/// txtPmEndTime2 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.DatePicker txtPmEndTime2;
/// <summary>
/// txtLateTime 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.NumberBox txtLateTime;
/// <summary>
/// txtLeaveTime 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.NumberBox txtLeaveTime;
/// <summary>
/// txtEquipmentCode 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.TextArea txtEquipmentCode;
/// <summary>
/// Toolbar1 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Toolbar Toolbar1;
/// <summary>
/// btnSave 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Button btnSave;
}
}
@@ -198,14 +198,12 @@ namespace FineUIPro.Web.HSSE.SitePerson
Response.End();
}
#pragma warning disable CS0108 // “DayReport.GetGridTableHtml(Grid)”隐藏继承的成员“PageBase.GetGridTableHtml(Grid)”。如果是有意隐藏,请使用关键字 new。
/// <summary>
/// 导出方法
/// </summary>
/// <param name="grid"></param>
/// <returns></returns>
private string GetGridTableHtml(Grid grid)
#pragma warning restore CS0108 // “DayReport.GetGridTableHtml(Grid)”隐藏继承的成员“PageBase.GetGridTableHtml(Grid)”。如果是有意隐藏,请使用关键字 new。
{
StringBuilder sb = new StringBuilder();
sb.Append("<meta http-equiv=\"content-type\" content=\"application/excel; charset=UTF-8\"/>");
@@ -36,6 +36,9 @@
<f:DatePicker ID="txtEndDate" ShowRedStar="true" Width="180px" EmptyText="结束日期"
DateFormatString="yyyy-MM-dd HH:mm" runat="server" EnableEdit="false" ShowTime="true" ShowSecond="false">
</f:DatePicker>
<f:Button ID="Button1" ToolTip="云眸同步" Icon="Add" runat="server" Text="云眸同步"
OnClick="btnYunMou_Click">
</f:Button>
<f:ToolbarFill runat="server"></f:ToolbarFill>
<f:Button ID="btnNew" Text="增加" Icon="Add" runat="server" Hidden="true">
</f:Button>
@@ -1,5 +1,7 @@
using BLL;
using Apache.NMS.ActiveMQ.Commands;
using BLL;
using System;
using BLL.Common;
using System.Linq;
using System.Text;
using AspNet = System.Web.UI.WebControls;
@@ -8,6 +10,28 @@ namespace FineUIPro.Web.HSSE.SitePerson
{
public partial class PersonInfo : PageBase
{
public string consumerIdR
{
get
{
return (string)ViewState["consumerIdR"];
}
set
{
ViewState["consumerIdR"] = value;
}
}
public string tokenR
{
get
{
return (string)ViewState["tokenR"];
}
set
{
ViewState["tokenR"] = value;
}
}
#region
/// <summary>
/// 加载页面
@@ -18,6 +42,12 @@ namespace FineUIPro.Web.HSSE.SitePerson
{
if (!IsPostBack)
{
////获取token
tokenR = YunMouHelper.getToken();
////创建消费者消费者如果5分钟未调用拉取消息接口将被删除。
consumerIdR = YunMouHelper.addConsumer(tokenR);
////权限按钮方法
this.GetButtonPower();
btnNew.OnClientClick = Window1.GetShowReference("PersonInfoEdit.aspx") + "return false;";
@@ -369,6 +399,11 @@ namespace FineUIPro.Web.HSSE.SitePerson
}
Alert.ShowInTop("写入考勤" + count.ToString() + "条。", MessageBoxIcon.Success);
} //云眸同步
protected void btnYunMou_Click(object sender, EventArgs e)
{
YunMouService.manualOperation(tokenR, consumerIdR);
BindGrid();
}
}
}
+44 -33
View File
@@ -7,11 +7,13 @@
// </自动生成>
//------------------------------------------------------------------------------
namespace FineUIPro.Web.HSSE.SitePerson {
public partial class PersonInfo {
namespace FineUIPro.Web.HSSE.SitePerson
{
public partial class PersonInfo
{
/// <summary>
/// form1 控件。
/// </summary>
@@ -20,7 +22,7 @@ namespace FineUIPro.Web.HSSE.SitePerson {
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::System.Web.UI.HtmlControls.HtmlForm form1;
/// <summary>
/// PageManager1 控件。
/// </summary>
@@ -29,7 +31,7 @@ namespace FineUIPro.Web.HSSE.SitePerson {
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.PageManager PageManager1;
/// <summary>
/// Panel1 控件。
/// </summary>
@@ -38,7 +40,7 @@ namespace FineUIPro.Web.HSSE.SitePerson {
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Panel Panel1;
/// <summary>
/// Grid1 控件。
/// </summary>
@@ -47,7 +49,7 @@ namespace FineUIPro.Web.HSSE.SitePerson {
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Grid Grid1;
/// <summary>
/// Toolbar2 控件。
/// </summary>
@@ -56,7 +58,7 @@ namespace FineUIPro.Web.HSSE.SitePerson {
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Toolbar Toolbar2;
/// <summary>
/// rbInOutWay 控件。
/// </summary>
@@ -65,7 +67,7 @@ namespace FineUIPro.Web.HSSE.SitePerson {
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.RadioButtonList rbInOutWay;
/// <summary>
/// drpUnit 控件。
/// </summary>
@@ -74,7 +76,7 @@ namespace FineUIPro.Web.HSSE.SitePerson {
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.DropDownList drpUnit;
/// <summary>
/// txtStartDate 控件。
/// </summary>
@@ -83,7 +85,7 @@ namespace FineUIPro.Web.HSSE.SitePerson {
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.DatePicker txtStartDate;
/// <summary>
/// txtEndDate 控件。
/// </summary>
@@ -92,7 +94,16 @@ namespace FineUIPro.Web.HSSE.SitePerson {
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.DatePicker txtEndDate;
/// <summary>
/// Button1 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Button Button1;
/// <summary>
/// btnNew 控件。
/// </summary>
@@ -101,7 +112,7 @@ namespace FineUIPro.Web.HSSE.SitePerson {
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Button btnNew;
/// <summary>
/// btnImport 控件。
/// </summary>
@@ -110,7 +121,7 @@ namespace FineUIPro.Web.HSSE.SitePerson {
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Button btnImport;
/// <summary>
/// Toolbar1 控件。
/// </summary>
@@ -119,7 +130,7 @@ namespace FineUIPro.Web.HSSE.SitePerson {
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Toolbar Toolbar1;
/// <summary>
/// txtPersonName 控件。
/// </summary>
@@ -128,7 +139,7 @@ namespace FineUIPro.Web.HSSE.SitePerson {
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.TextBox txtPersonName;
/// <summary>
/// txtIdCard 控件。
/// </summary>
@@ -137,7 +148,7 @@ namespace FineUIPro.Web.HSSE.SitePerson {
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.TextBox txtIdCard;
/// <summary>
/// btSearch 控件。
/// </summary>
@@ -146,7 +157,7 @@ namespace FineUIPro.Web.HSSE.SitePerson {
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Button btSearch;
/// <summary>
/// btnOut 控件。
/// </summary>
@@ -155,7 +166,7 @@ namespace FineUIPro.Web.HSSE.SitePerson {
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Button btnOut;
/// <summary>
/// btnInRealName 控件。
/// </summary>
@@ -164,7 +175,7 @@ namespace FineUIPro.Web.HSSE.SitePerson {
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Button btnInRealName;
/// <summary>
/// btnPersonOut 控件。
/// </summary>
@@ -173,7 +184,7 @@ namespace FineUIPro.Web.HSSE.SitePerson {
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Button btnPersonOut;
/// <summary>
/// labNumber 控件。
/// </summary>
@@ -182,7 +193,7 @@ namespace FineUIPro.Web.HSSE.SitePerson {
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::System.Web.UI.WebControls.Label labNumber;
/// <summary>
/// lblIdentityCard 控件。
/// </summary>
@@ -191,7 +202,7 @@ namespace FineUIPro.Web.HSSE.SitePerson {
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::System.Web.UI.WebControls.Label lblIdentityCard;
/// <summary>
/// lblIntoOut 控件。
/// </summary>
@@ -200,7 +211,7 @@ namespace FineUIPro.Web.HSSE.SitePerson {
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::System.Web.UI.WebControls.Label lblIntoOut;
/// <summary>
/// lblInOutWayName 控件。
/// </summary>
@@ -209,7 +220,7 @@ namespace FineUIPro.Web.HSSE.SitePerson {
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::System.Web.UI.WebControls.Label lblInOutWayName;
/// <summary>
/// ToolbarSeparator1 控件。
/// </summary>
@@ -218,7 +229,7 @@ namespace FineUIPro.Web.HSSE.SitePerson {
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.ToolbarSeparator ToolbarSeparator1;
/// <summary>
/// ToolbarText1 控件。
/// </summary>
@@ -227,7 +238,7 @@ namespace FineUIPro.Web.HSSE.SitePerson {
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.ToolbarText ToolbarText1;
/// <summary>
/// ddlPageSize 控件。
/// </summary>
@@ -236,7 +247,7 @@ namespace FineUIPro.Web.HSSE.SitePerson {
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.DropDownList ddlPageSize;
/// <summary>
/// Window1 控件。
/// </summary>
@@ -245,7 +256,7 @@ namespace FineUIPro.Web.HSSE.SitePerson {
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Window Window1;
/// <summary>
/// Menu1 控件。
/// </summary>
@@ -254,7 +265,7 @@ namespace FineUIPro.Web.HSSE.SitePerson {
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Menu Menu1;
/// <summary>
/// btnMenuEdit 控件。
/// </summary>
@@ -263,7 +274,7 @@ namespace FineUIPro.Web.HSSE.SitePerson {
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.MenuButton btnMenuEdit;
/// <summary>
/// btnMenuDelete 控件。
/// </summary>
@@ -105,6 +105,9 @@
<f:Button ID="btnImport" ToolTip="导入" Icon="ApplicationGet" Hidden="true" runat="server"
OnClick="btnImport_Click">
</f:Button>
<f:Button ID="Button1" ToolTip="同步人员到云眸" Icon="Add" runat="server" Text="同步人员到云眸" OnClick="btnToYunMou_Click">
</f:Button>
<f:Button ID="btnOut" OnClick="btnOut_Click" runat="server" ToolTip="导出" Icon="FolderUp"
EnableAjax="false" DisableControlBeforePostBack="false">
</f:Button>
@@ -140,11 +143,14 @@
FieldType="Date" Renderer="Date" RendererArgument="yyyy-MM-dd HH:mm:ss" HeaderText="上报集团时间"
HeaderTextAlign="Center" TextAlign="Center">
</f:RenderField>
<f:TemplateField Width="70px" HeaderText="状态" HeaderTextAlign="Center" TextAlign="Center">
<f:RenderField HeaderText="同步云眸" ColumnID="YunMouState" DataField="YunMouState" SortField="YunMouState"
FieldType="String" HeaderTextAlign="Center" TextAlign="Left" Width="110px">
</f:RenderField>
<%-- <f:TemplateField Width="70px" HeaderText="状态" HeaderTextAlign="Center" TextAlign="Center">
<ItemTemplate>
<asp:Label ID="lbIsPost" runat="server" Text='<%# GetProjectPersonStates(Eval("States")) %>'></asp:Label>
</ItemTemplate>
</f:TemplateField>
</f:TemplateField>--%>
<f:RenderField Hidden="true" Width="1px" HeaderText="培训次数" ColumnID="TrainCount" DataField="TrainCount">
</f:RenderField>
<f:RenderField Hidden="true" Width="1px" HeaderText="培训次数" ColumnID="TrainCount1" DataField="TrainCount1">
@@ -1,4 +1,5 @@
using BLL;
using BLL.Common;
using System;
using System.Collections.Generic;
using System.Data;
@@ -192,7 +193,7 @@ namespace FineUIPro.Web.HSSE.SitePerson
}
string strSql = @"SELECT ProjectId,SitePersonId,PersonId,PersonName,IdentityCard,CardNo,PersonName
,WorkPostId,WorkPostName,UnitId,UnitName,TeamGroupId,TeamGroupName,InTime,RealNameAddTime,States, TrainCount,TrainCount1
,WorkPostId,WorkPostName,UnitId,UnitName,TeamGroupId,TeamGroupName,InTime,RealNameAddTime,States, TrainCount,TrainCount1,YunMouState
FROM View_SitePerson_Person
Where ProjectId=@ProjectId ";
List<SqlParameter> listStr = new List<SqlParameter>
@@ -737,5 +738,33 @@ Where ProjectId=@ProjectId ";
int count = GetDataService.SendCarNo(this.ProjectId);
Alert.ShowInTop("刷新完成" + count.ToString() + "条。", MessageBoxIcon.Success);
}
protected void btnToYunMou_Click(object sender, EventArgs e)
{
if (Grid1.SelectedRowIndexArray.Length > 0)
{
foreach (int rowIndex in Grid1.SelectedRowIndexArray)
{
string rowID = Grid1.DataKeys[rowIndex][0].ToString();
var sitePerson = Funs.DB.SitePerson_Person.FirstOrDefault(x => x.SitePersonId == rowID);
var person = Funs.DB.Person_Persons.FirstOrDefault(x => x.IdentityCard == sitePerson.IdentityCard);
if (!string.IsNullOrEmpty(person.PhotoUrl))
{
var token = YunMouHelper.getToken();
var project = Funs.DB.Base_Project.FirstOrDefault(x => x.ProjectId == CurrUser.LoginProjectId);
var res1 = YunMouHelper.addPerson(person.IdentityCard, person.PersonName, string.IsNullOrEmpty(person.Telephone) ? "" : person.Telephone, person.PhotoUrl, token);
var res2 = YunMouHelper.addPersonsToGroups(project.YunMouGroupId, new string[] { person.IdentityCard }, token);
person.YunMouState = "已经同步";
Funs.DB.SubmitChanges();
}
}
this.BindGrid();
}
else
{
ShowNotify("请选择用户", MessageBoxIcon.Warning);
}
}
}
}
@@ -230,6 +230,15 @@ namespace FineUIPro.Web.HSSE.SitePerson
/// </remarks>
protected global::FineUIPro.Button btnImport;
/// <summary>
/// Button1 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Button Button1;
/// <summary>
/// btnOut 控件。
/// </summary>
@@ -257,15 +266,6 @@ namespace FineUIPro.Web.HSSE.SitePerson
/// </remarks>
protected global::FineUIPro.Button btnRefresh;
/// <summary>
/// lbIsPost 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::System.Web.UI.WebControls.Label lbIsPost;
/// <summary>
/// ToolbarSeparator1 控件。
/// </summary>
@@ -0,0 +1,134 @@
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="ProjectDevices.aspx.cs" Inherits="FineUIPro.Web.ProjectData.ProjectDevices" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>项目设备</title>
<link href="../res/css/common.css" rel="stylesheet" type="text/css" />
<style type="text/css">
.f-grid-row .f-grid-cell-inner {
white-space: normal;
word-break: break-all;
}
.f-grid-row.red
{
background-color: #FF7575;
background-image: none;
}
.fontred
{
color: #FF7575;
background-image: none;
}
</style>
</head>
<body>
<form id="form1" runat="server">
<f:PageManager ID="PageManager1" AutoSizePanelID="Panel1" runat="server" />
<f:Panel ID="Panel1" runat="server" Margin="5px" BodyPadding="5px" ShowBorder="false"
ShowHeader="false" Layout="VBox" BoxConfigAlign="Stretch" >
<Items>
<f:Grid ID="Grid1" ShowBorder="true" ShowHeader="false" Title="项目单位"
EnableCollapse="true" runat="server" BoxFlex="1" EnableColumnLines="true"
DataKeyNames="DeviceId" AllowCellEditing="true" ClicksToEdit="2" DataIDField="DeviceId"
AllowSorting="true" SortField="CreateDate" SortDirection="DESC" OnSort="Grid1_Sort"
AllowPaging="true" IsDatabasePaging="true" PageSize="10" OnPageIndexChange="Grid1_PageIndexChange"
EnableRowDoubleClickEvent="true" OnRowDoubleClick="Grid1_RowDoubleClick" EnableTextSelection="True">
<Toolbars>
<f:Toolbar ID="Toolbar2" Position="Top" runat="server" ToolbarAlign="Left">
<Items>
<f:TextBox runat="server" Label="设备名称" ID="txtDeviceName" EmptyText="输入查询条件"
AutoPostBack="true" OnTextChanged="TextBox_TextChanged" Width="250px" LabelWidth="80px"></f:TextBox>
<f:ToolbarFill runat="server"></f:ToolbarFill>
<f:Button ID="btnAdd" ToolTip="新增" Icon="Add" Hidden="true" runat="server" Text="新增"
OnClick="btnAdd_Click">
</f:Button>
</Items>
</f:Toolbar>
</Toolbars>
<Columns>
<f:TemplateField ColumnID="tfNumber" Width="55px" HeaderText="序号" HeaderTextAlign="Center"
TextAlign="Center">
<ItemTemplate>
<asp:Label ID="lblNumber" runat="server" Text='<%# Grid1.PageIndex * Grid1.PageSize + Container.DataItemIndex + 1 %>'></asp:Label>
</ItemTemplate>
</f:TemplateField>
<f:RenderField Width="250px" ColumnID="DeviceName" DataField="DeviceName" SortField="DeviceName"
FieldType="String" HeaderText="设备名称" HeaderTextAlign="Center" TextAlign="Left" >
</f:RenderField>
<f:RenderField Width="250px" ColumnID="DeviceSerial" DataField="DeviceSerial" SortField="DeviceSerial"
FieldType="String" HeaderText="序列号" HeaderTextAlign="Center" TextAlign="Left" >
</f:RenderField>
<f:RenderField Width="100px" ColumnID="IsInOutValue" DataField="IsInOutValue" SortField="IsInOutValue"
FieldType="String" HeaderText="进出方向" HeaderTextAlign="Center" TextAlign="Left" >
</f:RenderField>
<f:RenderField Width="250px" ColumnID="DeviceToYunMou" DataField="DeviceToYunMou" SortField="DeviceToYunMou"
FieldType="String" HeaderText="同步设到云眸" HeaderTextAlign="Center" TextAlign="Left" >
</f:RenderField>
<f:RenderField Width="250px" ColumnID="YunMouPermission" DataField="YunMouPermission" SortField="YunMouPermission"
FieldType="String" HeaderText="权限" HeaderTextAlign="Center" TextAlign="Left" >
</f:RenderField>
<f:RenderField Width="110px" ColumnID="CreateDate" DataField="CreateDate" SortField="CreateDate"
FieldType="Date" Renderer="Date" RendererArgument="yyyy-MM-dd" HeaderText="添加时间"
HeaderTextAlign="Center" TextAlign="Center">
</f:RenderField>
<f:RenderField Width="250px" ColumnID="Address" DataField="Address" SortField="Address"
FieldType="String" HeaderText="位置" HeaderTextAlign="Center" TextAlign="Left" ExpandUnusedSpace="true">
</f:RenderField>
</Columns>
<Listeners>
<f:Listener Event="beforerowcontextmenu" Handler="onRowContextMenu" />
</Listeners>
<PageItems>
<f:ToolbarSeparator ID="ToolbarSeparator1" runat="server">
</f:ToolbarSeparator>
<f:ToolbarText ID="ToolbarText1" runat="server" Text="每页记录数:">
</f:ToolbarText>
<f:DropDownList runat="server" ID="ddlPageSize" Width="80px" AutoPostBack="true"
OnSelectedIndexChanged="ddlPageSize_SelectedIndexChanged">
</f:DropDownList>
</PageItems>
</f:Grid>
</Items>
</f:Panel>
<f:Window ID="Window1" Hidden="true" EnableIFrame="true" EnableMaximize="true"
Target="Parent" EnableResize="false" runat="server" OnClose="Window1_Close" IsModal="true">
</f:Window>
<f:Menu ID="Menu1" runat="server">
<f:MenuButton ID="btnMenuEdit" OnClick="btnMenuEdit_Click" EnablePostBack="true" Hidden="true"
Icon="Pencil" runat="server" Text="编辑">
</f:MenuButton>
<f:MenuButton ID="btnMenuDeviceToYunMou" OnClick="btnMenuDeviceToYunMou_Click" EnablePostBack="true" Hidden="true"
Icon="Pencil" runat="server" Text="同步设备">
</f:MenuButton>
<f:MenuButton ID="btnMenuSyncPermission" OnClick="btnMenuSyncPermission_Click" EnablePostBack="true" Hidden="true"
Icon="Pencil" runat="server" Text="关联权限">
</f:MenuButton>
<f:MenuButton ID="btnMenuDeletePermission" OnClick="btnMenuDeletePermission_Click" EnablePostBack="true" Hidden="true"
Icon="Delete" runat="server" Text="移除权限">
</f:MenuButton>
<f:MenuButton ID="btnMenuDelete" OnClick="btnMenuDelete_Click" EnablePostBack="true" Hidden="true"
Icon="Delete" ConfirmText="删除选中行?" ConfirmTarget="Parent" runat="server" Text="删除">
</f:MenuButton>
</f:Menu>
</form>
<script type="text/javascript">
var menuID = '<%= Menu1.ClientID %>';
// 返回false,来阻止浏览器右键菜单
function onRowContextMenu(event, rowId) {
F(menuID).show();
return false;
}
function reloadGrid() {
__doPostBack(null, 'reloadGrid');
}
</script>
</body>
</html>
@@ -0,0 +1,327 @@
using BLL;
using BLL.Common;
using FineUIPro.Web.DataShow;
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
using System.Web.Services.Description;
using WIA;
using AspNet = System.Web.UI.WebControls;
namespace FineUIPro.Web.ProjectData
{
public partial class ProjectDevices : PageBase
{
#region
/// <summary>
/// 加载页面
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
Funs.DropDownPageSize(this.ddlPageSize);
this.ddlPageSize.SelectedValue = Grid1.PageSize.ToString();
// 绑定表格
this.BindGrid();
////权限按钮方法
this.GetButtonPower();
}
}
#endregion
/// <summary>
/// 绑定数据
/// </summary>
private void BindGrid()
{
string strSql = @" Select * ,case when [isInOut] =1 then '进' else '出' end [IsInOutValue] ,case when [YunMouDeviceId] is not null and [YunMouDeviceId] <> '' then '是' else '' end [DeviceToYunMou] from Project_Devices WHERE ";
List<SqlParameter> listStr = new List<SqlParameter>();
strSql += " ProjectId = @ProjectId";
listStr.Add(new SqlParameter("@ProjectId", this.CurrUser.LoginProjectId));
if (!string.IsNullOrEmpty(this.txtDeviceName.Text.Trim()))
{
strSql += " AND DeviceName LIKE @DeviceName";
listStr.Add(new SqlParameter("@DeviceName", "%" + this.txtDeviceName.Text.Trim() + "%"));
}
SqlParameter[] parameter = listStr.ToArray();
DataTable tb = SQLHelper.GetDataTableRunText(strSql, parameter);
Grid1.RecordCount = tb.Rows.Count;
tb = GetFilteredTable(Grid1.FilteredData, tb);
var table = this.GetPagedDataTable(Grid1, tb);
Grid1.DataSource = table;
Grid1.DataBind();
}
#region Events
/// <summary>
/// 右键删除事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void btnMenuDelete_Click(object sender, EventArgs e)
{
if (Grid1.SelectedRowIndexArray.Length > 0)
{
string unitName = string.Empty;
foreach (int rowIndex in Grid1.SelectedRowIndexArray)
{
string deviceId = Grid1.DataKeys[rowIndex][0].ToString();
Model.Project_Devices devices = Funs.DB.Project_Devices.FirstOrDefault(x => x.DeviceId == deviceId);
var token = YunMouHelper.getToken();
YunMouHelper.deleteDevices(devices.DeviceSerial, token);
Funs.DB.Project_Devices.DeleteOnSubmit(devices);
Funs.DB.SubmitChanges();
}
BindGrid();
if (string.IsNullOrEmpty(unitName))
{
ShowNotify("删除数据成功!", MessageBoxIcon.Success);
}
}
}
#endregion
#region
/// <summary>
///
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void Grid1_PageIndexChange(object sender, GridPageEventArgs e)
{
BindGrid();
}
/// <summary>
///
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void ddlPageSize_SelectedIndexChanged(object sender, EventArgs e)
{
Grid1.PageSize = Convert.ToInt32(ddlPageSize.SelectedValue);
BindGrid();
}
/// <summary>
///
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void Grid1_Sort(object sender, FineUIPro.GridSortEventArgs e)
{
BindGrid();
}
#endregion
/// <summary>
/// 增加按钮事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void btnAdd_Click(object sender, EventArgs e)
{
PageContext.RegisterStartupScript(Window1.GetShowReference("ProjectDevicesEdit.aspx", "添加设备", 800, 300));
}
/// <summary>
/// 双击事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void Grid1_RowDoubleClick(object sender, GridRowClickEventArgs e)
{
this.EditData();
}
/// <summary>
/// 右键编辑事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void btnMenuEdit_Click(object sender, EventArgs e)
{
this.EditData();
}
protected void btnMenuDeviceToYunMou_Click(object sender, EventArgs e)
{
if (Grid1.SelectedRowIndexArray.Length == 0)
{
Alert.ShowInTop("请至少选择一条记录!", MessageBoxIcon.Warning);
return;
}
var device = Funs.DB.Project_Devices.FirstOrDefault(x=>x.DeviceId== Grid1.SelectedRowID) ;
if (device != null)
{
var project = Funs.DB.Base_Project.FirstOrDefault(x => x.ProjectId == CurrUser.LoginProjectId);
var token = YunMouHelper.getToken();
string data;
data = Regex.Replace(project.ProjectCode, "[^0-9A-Fa-f]", "", RegexOptions.IgnoreCase);
var YunMouDeviceId = YunMouHelper.addDevices(device.DeviceSerial, data, device.ValidateCode, token);//添加设备
if (!string.IsNullOrEmpty(YunMouDeviceId))
{
device.YunMouDeviceId = YunMouDeviceId;
Funs.DB.SubmitChanges();
ShowNotify("同步成功", MessageBoxIcon.Success);
BindGrid();
}
else
{
Alert.ShowInTop("同步设备出错!", MessageBoxIcon.Warning);
}
}
}
protected void btnMenuSyncPermission_Click(object sender, EventArgs e)
{
if (Grid1.SelectedRowIndexArray.Length == 0)
{
Alert.ShowInTop("请至少选择一条记录!", MessageBoxIcon.Warning);
return;
}
var device = Funs.DB.Project_Devices.FirstOrDefault(x => x.DeviceId == Grid1.SelectedRowID);
if (device != null)
{
var project = Funs.DB.Base_Project.FirstOrDefault(x => x.ProjectId == CurrUser.LoginProjectId);
var token = YunMouHelper.getToken();
var res = YunMouHelper.addDevicesToGroups(project.YunMouGroupId, new string[] { device.DeviceSerial }, token);//添加到权限组
YunMouHelper.setDefence(device.DeviceSerial,"1",token);
if (string.IsNullOrEmpty(res))
{
Alert.ShowInTop("关联权限出错!", MessageBoxIcon.Warning);
}
else {
device.YunMouPermission = "是";
Funs.DB.SubmitChanges();
ShowNotify("关联成功", MessageBoxIcon.Success);
BindGrid();
}
}
}
protected void btnMenuDeletePermission_Click(object sender, EventArgs e)
{
if (Grid1.SelectedRowIndexArray.Length == 0)
{
Alert.ShowInTop("请至少选择一条记录!", MessageBoxIcon.Warning);
return;
}
var device = Funs.DB.Project_Devices.FirstOrDefault(x => x.DeviceId == Grid1.SelectedRowID);
if (device != null)
{
var project = Funs.DB.Base_Project.FirstOrDefault(x => x.ProjectId == CurrUser.LoginProjectId);
var token = YunMouHelper.getToken();
var res = YunMouHelper.deleteDevicesFromGroups(project.YunMouGroupId, new string[] { device.DeviceSerial }, token);//从权限组移除设备
if (string.IsNullOrEmpty(res))
{
Alert.ShowInTop("关联权限出错!", MessageBoxIcon.Warning);
}
else
{
device.YunMouPermission = null;
Funs.DB.SubmitChanges();
BindGrid();
}
}
}
/// <summary>
/// 编辑数据方法
/// </summary>
private void EditData()
{
if (Grid1.SelectedRowIndexArray.Length == 0)
{
Alert.ShowInTop("请至少选择一条记录!", MessageBoxIcon.Warning);
return;
}
PageContext.RegisterStartupScript(Window1.GetShowReference(String.Format("ProjectDevicesEdit.aspx?DeviceId={0}", Grid1.SelectedRowID), "编辑项目单位", 800, 300));
}
/// <summary>
///
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void Window1_Close(object sender, EventArgs e)
{
BindGrid();
}
#region
/// <summary>
/// 获取按钮权限
/// </summary>
/// <param name="button"></param>
/// <returns></returns>
private void GetButtonPower()
{
if (Request.Params["value"] == "0")
{
return;
}
string menuId = BLL.Const.ProjectDevicesMenuId;
var buttonList = BLL.CommonService.GetAllButtonList(this.CurrUser.LoginProjectId, this.CurrUser.PersonId, menuId);
if (buttonList.Count() > 0)
{
if (buttonList.Contains(BLL.Const.BtnAdd))
{
this.btnAdd.Hidden = false;
}
if (buttonList.Contains(BLL.Const.BtnModify))
{
this.btnMenuDeletePermission.Hidden= false;
this.btnAdd.Hidden = false;
this.btnMenuEdit.Hidden = false;
this.btnMenuDeviceToYunMou.Hidden = false;
this.btnMenuSyncPermission.Hidden = false;
}
if (buttonList.Contains(BLL.Const.BtnDelete))
{
this.btnMenuDelete.Hidden = false;
}
}
}
#endregion
#region
/// <summary>
/// 查询
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void TextBox_TextChanged(object sender, EventArgs e)
{
this.BindGrid();
this.GetButtonPower();
}
#endregion
}
}
@@ -0,0 +1,179 @@
//------------------------------------------------------------------------------
// <自动生成>
// 此代码由工具生成。
//
// 对此文件的更改可能导致不正确的行为,如果
// 重新生成代码,则所做更改将丢失。
// </自动生成>
//------------------------------------------------------------------------------
namespace FineUIPro.Web.ProjectData
{
public partial class ProjectDevices
{
/// <summary>
/// form1 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::System.Web.UI.HtmlControls.HtmlForm form1;
/// <summary>
/// PageManager1 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.PageManager PageManager1;
/// <summary>
/// Panel1 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Panel Panel1;
/// <summary>
/// Grid1 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Grid Grid1;
/// <summary>
/// Toolbar2 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Toolbar Toolbar2;
/// <summary>
/// txtDeviceName 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.TextBox txtDeviceName;
/// <summary>
/// btnAdd 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Button btnAdd;
/// <summary>
/// lblNumber 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::System.Web.UI.WebControls.Label lblNumber;
/// <summary>
/// ToolbarSeparator1 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.ToolbarSeparator ToolbarSeparator1;
/// <summary>
/// ToolbarText1 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.ToolbarText ToolbarText1;
/// <summary>
/// ddlPageSize 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.DropDownList ddlPageSize;
/// <summary>
/// Window1 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Window Window1;
/// <summary>
/// Menu1 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Menu Menu1;
/// <summary>
/// btnMenuEdit 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.MenuButton btnMenuEdit;
/// <summary>
/// btnMenuDeviceToYunMou 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.MenuButton btnMenuDeviceToYunMou;
/// <summary>
/// btnMenuSyncPermission 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.MenuButton btnMenuSyncPermission;
/// <summary>
/// btnMenuDeletePermission 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.MenuButton btnMenuDeletePermission;
/// <summary>
/// btnMenuDelete 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.MenuButton btnMenuDelete;
}
}
@@ -0,0 +1,63 @@
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="ProjectDevicesEdit.aspx.cs"
Inherits="FineUIPro.Web.ProjectData.ProjectDevicesEdit" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>编辑班组信息</title>
<base target="_self" />
<link href="../res/css/common.css" rel="stylesheet" type="text/css" />
</head>
<body>
<form id="form1" runat="server">
<f:PageManager ID="PageManager1" AutoSizePanelID="SimpleForm1" runat="server" />
<f:Form ID="SimpleForm1" ShowBorder="false" ShowHeader="false" AutoScroll="true"
BodyPadding="10px" runat="server" RedStarPosition="BeforeText" LabelAlign="Right">
<Rows>
<f:FormRow>
<Items>
<f:TextBox ID="txtDeviceName" runat="server" Label="设备名称" Required="true" MaxLength="50"
ShowRedStar="true" >
</f:TextBox>
<f:TextBox ID="txtDeviceSerial" runat="server" Label="设备序列号" Required="true" MaxLength="50"
ShowRedStar="true" >
</f:TextBox>
</Items>
</f:FormRow>
<f:FormRow>
<Items>
<f:DatePicker runat="server" Label="进场时间" ID="dpCreateDate" ></f:DatePicker>
<f:DropDownList ID="drpInOut" runat="server" Label="进出方向">
<f:ListItem Value="1" Text="进门" />
<f:ListItem Value="0" Text="出门" />
</f:DropDownList>
</Items>
</f:FormRow>
<f:FormRow>
<Items>
<f:TextBox ID="txtValidateCode" runat="server" Label="验证码" Required="true" MaxLength="50"
ShowRedStar="true" >
</f:TextBox>
<f:TextBox ID="txtAddress" runat="server" Label="设备地址" Required="true" MaxLength="500"
ShowRedStar="true" >
</f:TextBox>
</Items>
</f:FormRow>
</Rows>
<Toolbars>
<f:Toolbar ID="Toolbar1" Position="Bottom" ToolbarAlign="Right" runat="server">
<Items>
<f:Button ID="btnSave" Icon="SystemSave" runat="server" ValidateForms="SimpleForm1" Text="保存"
OnClick="btnSave_Click">
</f:Button>
<f:Button ID="btnClose" EnablePostBack="false" ToolTip="关闭" runat="server" Icon="SystemClose" Text="关闭">
</f:Button>
</Items>
</f:Toolbar>
</Toolbars>
</f:Form>
</form>
</body>
</html>
@@ -0,0 +1,128 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text.RegularExpressions;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using BLL;
using BLL.Common;
namespace FineUIPro.Web.ProjectData
{
public partial class ProjectDevicesEdit : PageBase
{
#region
/// <summary>
/// 主键
/// </summary>
public string DeviceId
{
get
{
return (string)ViewState["DeviceId"];
}
set
{
ViewState["DeviceId"] = value;
}
}
#endregion
#region
/// <summary>
/// 加载页面
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
btnClose.OnClientClick = ActiveWindow.GetHideReference();
this.DeviceId = Request.Params["DeviceId"];
if (!string.IsNullOrEmpty(this.DeviceId))
{
Model.Project_Devices device = Funs.DB.Project_Devices.FirstOrDefault(x=>x.DeviceId==this.DeviceId);
if (device != null)
{
this.txtDeviceName.Text = device.DeviceName;
this.txtDeviceSerial.Text = device.DeviceSerial;
this.txtAddress.Text = device.Address;
this.txtValidateCode.Text = device.ValidateCode;
if (!string.IsNullOrEmpty(device.IsInOut))
{
this.drpInOut.SelectedValue = device.IsInOut;
}
//this.txtThirdTeamCode.Text = teamGroup.ThirdTeamCode;
if (device.CreateDate != null)
{
this.dpCreateDate.Text = string.Format("{0:yyyy-MM-dd}", device.CreateDate);
}
}
}
}
}
#endregion
#region
/// <summary>
/// 保存按钮
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void btnSave_Click(object sender, EventArgs e)
{
Model.Project_Devices device = new Model.Project_Devices
{
ProjectId = this.CurrUser.LoginProjectId,
DeviceName = this.txtDeviceName.Text.Trim(),
DeviceSerial = this.txtDeviceSerial.Text.Trim(),
Address = txtAddress.Text.Trim(),
ValidateCode=txtValidateCode.Text.Trim(),
CreateDate = Funs.GetNewDateTime(this.dpCreateDate.Text.Trim())
};
if (this.drpInOut.SelectedValue != BLL.Const._Null)
{
device.IsInOut = this.drpInOut.SelectedValue;
}
if (!string.IsNullOrEmpty(this.DeviceId))
{
device.DeviceId = this.DeviceId;
BLL.ProjectDeviceService.UpdateProjectDevice(device);
var token = YunMouHelper.getToken();
YunMouHelper.updateDevices(device.DeviceSerial, device.DeviceName, token);
BLL.LogService.AddSys_Log(this.CurrUser, device.DeviceName, device.DeviceId, BLL.Const.ProjectDevicesMenuId, BLL.Const.BtnModify);
}
else
{
this.DeviceId = SQLHelper.GetNewID(typeof(Model.Project_Devices));
device.DeviceId = this.DeviceId;
var project = Funs.DB.Base_Project.FirstOrDefault(x => x.ProjectId == CurrUser.LoginProjectId);
var token = YunMouHelper.getToken();
string data;
data = Regex.Replace(project.ProjectCode, "[^0-9A-Fa-f]", "", RegexOptions.IgnoreCase);
device.YunMouDeviceId = YunMouHelper.addDevices(device.DeviceSerial, data, device.ValidateCode, token);//添加设备之后,将权限添加到权限组
var res = YunMouHelper.addDevicesToGroups(project.YunMouGroupId, new string[] { device.DeviceSerial }, token);//添加到权限组
if (!string.IsNullOrEmpty(res))
{
device.YunMouPermission = "已关联";
}
BLL.ProjectDeviceService.AddProjectDevice(device);
BLL.LogService.AddSys_Log(this.CurrUser, device.DeviceName, device.DeviceId, BLL.Const.ProjectDevicesMenuId, BLL.Const.BtnAdd);
}
ShowNotify("保存数据成功!", MessageBoxIcon.Success);
PageContext.RegisterStartupScript(ActiveWindow.GetHidePostBackReference());
}
#endregion
}
}
@@ -0,0 +1,125 @@
//------------------------------------------------------------------------------
// <自动生成>
// 此代码由工具生成。
//
// 对此文件的更改可能导致不正确的行为,如果
// 重新生成代码,则所做更改将丢失。
// </自动生成>
//------------------------------------------------------------------------------
namespace FineUIPro.Web.ProjectData
{
public partial class ProjectDevicesEdit
{
/// <summary>
/// form1 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::System.Web.UI.HtmlControls.HtmlForm form1;
/// <summary>
/// PageManager1 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.PageManager PageManager1;
/// <summary>
/// SimpleForm1 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Form SimpleForm1;
/// <summary>
/// txtDeviceName 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.TextBox txtDeviceName;
/// <summary>
/// txtDeviceSerial 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.TextBox txtDeviceSerial;
/// <summary>
/// dpCreateDate 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.DatePicker dpCreateDate;
/// <summary>
/// drpInOut 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.DropDownList drpInOut;
/// <summary>
/// txtValidateCode 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.TextBox txtValidateCode;
/// <summary>
/// txtAddress 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.TextBox txtAddress;
/// <summary>
/// Toolbar1 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Toolbar Toolbar1;
/// <summary>
/// btnSave 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Button btnSave;
/// <summary>
/// btnClose 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Button btnClose;
}
}
@@ -14,7 +14,31 @@
<f:Region ID="Region2" ShowBorder="false" ShowHeader="false" Position="Center" Layout="VBox"
BoxConfigAlign="Stretch" BoxConfigPosition="Left" runat="server" AutoScroll="true">
<Items>
<f:GroupPanel ID="GroupPanel2" Layout="Anchor" Title="焊接环境设置" runat="server">
<f:GroupPanel ID="GroupPanel0" Layout="Anchor" Title="通用环境设置" runat="server">
<Items>
<f:Form ID="Form4" ShowBorder="false" ShowHeader="false" AutoScroll="true"
Layout="VBox" BodyPadding="10px" runat="server" RedStarPosition="BeforeText"
LabelAlign="Right">
<Rows>
<f:FormRow runat="server">
<Items>
<f:CheckBox ID="ckbIsYunMou" runat="server" Label="云眸人脸识别" Text="是否启用" LabelWidth="200">
</f:CheckBox>
<f:Label runat="server"></f:Label>
</Items>
</f:FormRow>
</Rows>
</f:Form>
</Items>
</f:GroupPanel>
<f:GroupPanel ID="GroupPanel2" Layout="Anchor" Title="焊接环境设置" runat="server" >
<Items>
<f:Form ID="Form2" ShowBorder="false" ShowHeader="false" AutoScroll="false" Layout="VBox"
BodyPadding="10px" runat="server" RedStarPosition="BeforeText" LabelAlign="Right">
@@ -1,8 +1,10 @@
using BLL;
using BLL.Common;
using System;
using System.Linq;
using System.Collections.Generic;
using FineUIPro;
using System.Text.RegularExpressions;
namespace FineUIPro.Web.common.ProjectSet
{
@@ -36,7 +38,6 @@ namespace FineUIPro.Web.common.ProjectSet
}
#endregion
#region
/// <summary>
/// 提交按钮
/// </summary>
@@ -50,36 +51,107 @@ namespace FineUIPro.Web.common.ProjectSet
ShowNotify("请选择项目!", MessageBoxIcon.Warning);
return;
}
SaveWeldingSettings(projectId);
SaveColorModelSettings(projectId);
SaveQualitySettings(projectId);
// 刷新界面
this.Show(projectId);
//BLL.Sys_LogService.AddLog(BLL.Const.System_1, this.CurrUser.LoginProjectId, this.CurrUser.PersonId, "提交项目环境设置");
Alert.ShowInTop("提交成功!", MessageBoxIcon.Success);
#region
// 焊接
Model.Project_Sys_Set dayReport = BLL.Project_SysSetService.GetSysSetBySetId("1", projectId);
Model.Project_Sys_Set point = BLL.Project_SysSetService.GetSysSetBySetId("2", projectId);
Model.Project_Sys_Set trust = BLL.Project_SysSetService.GetSysSetBySetId("3", projectId);
Model.Project_Sys_Set pdms = BLL.Project_SysSetService.GetSysSetBySetId("4", projectId);
Model.Project_Sys_Set batch = BLL.Project_SysSetService.GetSysSetBySetId("5", projectId);
Model.Project_Sys_Set jointB = BLL.Project_SysSetService.GetSysSetBySetId("6", projectId);
Model.Project_Sys_Set thickness = BLL.Project_SysSetService.GetSysSetBySetId("7", projectId);
Model.Project_Sys_Set pressUnit = BLL.Project_SysSetService.GetSysSetBySetId("8", projectId);
Model.Project_Sys_Set AvevaNetUrl = BLL.Project_SysSetService.GetSysSetBySetId("9", projectId);
if (jointB != null)
{
if (this.ckbJointB.Checked)
{
jointB.IsAuto = true;
}
else
{
jointB.IsAuto = false;
}
BLL.Project_SysSetService.UpdateSet(jointB);
}
else
{
Model.Project_Sys_Set newJointB = new Model.Project_Sys_Set();
newJointB.SetId = "6";
newJointB.ProjectId = projectId;
if (this.ckbJointB.Checked)
{
newJointB.IsAuto = true;
}
else
{
newJointB.IsAuto = false;
}
BLL.Project_SysSetService.AddSet(newJointB);
}
if (pressUnit != null)
{
pressUnit.SetValue = this.rblPressUnit.SelectedValue;
BLL.Project_SysSetService.UpdateSet(pressUnit);
}
else
{
Model.Project_Sys_Set newPressUnit = new Model.Project_Sys_Set();
newPressUnit.SetId = "8";
newPressUnit.SetValue = this.rblPressUnit.SelectedValue;
newPressUnit.ProjectId = projectId;
BLL.Project_SysSetService.AddSet(newPressUnit);
}
if (AvevaNetUrl != null)
{
AvevaNetUrl.SetValue = this.AvevaNetUrl.Text.Trim();
BLL.Project_SysSetService.UpdateSet(AvevaNetUrl);
}
else
{
Model.Project_Sys_Set newAvevaNetUrl = new Model.Project_Sys_Set();
newAvevaNetUrl.SetId = "9";
newAvevaNetUrl.SetName = "AVEVA NET 地址";
newAvevaNetUrl.SetValue = this.AvevaNetUrl.Text.Trim();
newAvevaNetUrl.ProjectId = projectId;
BLL.Project_SysSetService.AddSet(newAvevaNetUrl);
}
if (thickness != null)
{
if (this.ckbThickness.Checked)
{
thickness.IsAuto = true;
}
else
{
thickness.IsAuto = false;
}
BLL.Project_SysSetService.UpdateSet(thickness);
}
else
{
Model.Project_Sys_Set newThickness = new Model.Project_Sys_Set();
newThickness.SetId = "7";
newThickness.ProjectId = projectId;
if (this.ckbThickness.Checked)
{
newThickness.IsAuto = true;
}
else
{
newThickness.IsAuto = false;
}
BLL.Project_SysSetService.AddSet(newThickness);
}
if (this.ckbPdms.Checked)
{
pdms.IsAuto = true;
}
else
{
pdms.IsAuto = false;
}
}
private void SaveWeldingSettings(string projectId)
{
// Booleans stored in IsAuto
UpsertIsAutoById("1", projectId, this.ckbDayReport.Checked);
UpsertIsAutoById("2", projectId, this.ckbPoint.Checked);
// trust (id 3) uses special mapping: 1->IsAuto=true, 2->IsAuto=false, otherwise IsAuto=null and SetValue holds value
UpsertTrustSetting("3", projectId, this.robStandard.SelectedValue);
UpsertIsAutoById("4", projectId, this.ckbPdms.Checked);
// batch (id 5) is a list of checked items
UpsertBatchSetting("5", projectId);
UpsertIsAutoById("6", projectId, this.ckbJointB.Checked);
UpsertIsAutoById("7", projectId, this.ckbThickness.Checked);
UpsertValueById("8", projectId, this.rblPressUnit.SelectedValue);
UpsertValueById("9", projectId, this.AvevaNetUrl.Text.Trim(), setName: "AVEVA NET 地址");
UpsertIsAutoById("10", projectId, this.ckPressMustCheckBItem.Checked);
UpsertValueById("11", projectId, this.rbMaterialColorAttribute.SelectedValue);
}
private void SaveColorModelSettings(string projectId)
{
UpsertByName("管线未完成", projectId, this.txtPipelineNOComplete.Text.Trim());
@@ -50,6 +50,33 @@ namespace FineUIPro.Web.common.ProjectSet
/// </remarks>
protected global::FineUIPro.Region Region2;
/// <summary>
/// GroupPanel0 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.GroupPanel GroupPanel0;
/// <summary>
/// Form4 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Form Form4;
/// <summary>
/// ckbIsYunMou 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.CheckBox ckbIsYunMou;
/// <summary>
/// GroupPanel2 控件。
/// </summary>
+5 -1
View File
@@ -808,11 +808,15 @@ namespace WebAPI.Controllers
var responeData = new Model.ResponeData();
try
{
var trainingIds = Funs.DB.EduTrain_TrainRecord.Where(x => projectId == projectId).Select(x => x.TrainingId).ToList();
var personIds = Funs.DB.EduTrain_TrainRecordDetail.Where(x => trainingIds.Contains(x.TrainingId)).Select(x=>x.PersonId).ToList(); ;
responeData.data = (from x in Funs.DB.SitePerson_Person
join y in Funs.DB.Base_Unit on x.UnitId equals y.UnitId
join persons in Funs.DB.Person_Persons on x.IdentityCard equals persons.IdentityCard
join persons in Funs.DB.Person_Persons on x.IdentityCard equals persons.IdentityCard
where x.ProjectId == projectId && !x.ExchangeTime.HasValue
&& x.States == Const.ProjectPersonStates_1 && x.CardNo.Length > 5 && persons.PhotoUrl != null
where personIds.Contains(x.PersonId)
select new
{
x.PersonId,