首页大屏幕

This commit is contained in:
李超 2023-12-08 18:33:21 +08:00
parent 20de71f91a
commit 5baefadb6b
7 changed files with 347 additions and 194 deletions

View File

@ -257,7 +257,7 @@
* 连接 服务器地址
* 并绑定 websock 四个事件方法
*/
websock = new WebSocket('ws://localhost:1000');
websock = new WebSocket('ws://sgglapi.chengda.com:1000');
// 接收服务器返回的数据
websock.onmessage = this.websocketonmessage;
// 连接建立时触发

View File

@ -52,9 +52,9 @@ namespace FineUIPro.Web.HSSE.KqShowScreen
public static object getData(string projectId)
{
int total = 0;
HashSet<string> ids = new HashSet<string>();
HashSet<string> ids = new HashSet<string>();
HashSet<string> idsIn = new HashSet<string>();
Dictionary<string,DateTime> inperson = new Dictionary<string, DateTime>();
Dictionary<string, DateTime> inperson = new Dictionary<string, DateTime>();
Dictionary<string, DateTime> outPerson = new Dictionary<string, DateTime>();
DateTime dateTime = DateTime.Now.AddDays(-1);
var inout = Funs.DB.SitePerson_PersonInOut.Where(x => x.ProjectId == projectId && x.ChangeTime > dateTime).OrderByDescending(x => x.ChangeTime);
@ -155,28 +155,38 @@ namespace FineUIPro.Web.HSSE.KqShowScreen
}
}
var personInOut = inout.FirstOrDefault();
var person = Funs.DB.SitePerson_Person.FirstOrDefault(x => x.PersonId == personInOut.PersonId);
string teamGroupName = "";
string inOut = "出场";
string PhotoUrl = "";
PhotoUrl = "../../"+person.PhotoUrl;
if (personInOut.IsIn ==true)
string PersonName = "";
string UnitName = "";
string WorkPostName = "";
string ChangeTime = "";
if (personInOut != null)
{
inOut = "入场";
}
if (!string.IsNullOrEmpty(person.TeamGroupId))
{
var teamGroup = Funs.DB.ProjectData_TeamGroup.FirstOrDefault(x => x.TeamGroupId == person.TeamGroupId);
if (teamGroup != null)
var person = Funs.DB.SitePerson_Person.FirstOrDefault(x => x.PersonId == personInOut.PersonId);
PersonName = personInOut.PersonName;
UnitName = personInOut.UnitName;
WorkPostName = personInOut.WorkPostName;
ChangeTime = personInOut.ChangeTime.Value.ToString("yyyy-MM-dd HH:mm");
PhotoUrl = "../../" + person.PhotoUrl;
if (personInOut.IsIn == true)
{
teamGroupName = teamGroup.TeamGroupName;
inOut = "入场";
}
if (!string.IsNullOrEmpty(person.TeamGroupId))
{
var teamGroup = Funs.DB.ProjectData_TeamGroup.FirstOrDefault(x => x.TeamGroupId == person.TeamGroupId);
if (teamGroup != null)
{
teamGroupName = teamGroup.TeamGroupName;
}
}
}
List<object> comStatic = new List<object>();
List<object> comStatic = new List<object>();
foreach (var key in company.Keys)
{
comStatic.Add(new { name =key, value=company[key] });
comStatic.Add(new { name = key, value = company[key] });
}
List<string> workPostName = new List<string>();
List<int> workPostValue = new List<int>();
@ -185,9 +195,9 @@ namespace FineUIPro.Web.HSSE.KqShowScreen
workPostName.Add(key);
workPostValue.Add(workPost[key]);
}
return new { company = comStatic, total, workPost = new { name = workPostName, value = workPostValue }, person = new{ personInOut.PersonName,personInOut.UnitName, personInOut.WorkPostName , inOut, PhotoUrl , teamGroupName, ChangeTime = personInOut.ChangeTime.Value.ToString("yyyy-MM-dd HH:mm")} };
}
return new { company = comStatic, total, workPost = new { name = workPostName, value = workPostValue }, person = new { PersonName, UnitName, WorkPostName, inOut, PhotoUrl, teamGroupName, ChangeTime } };
}
}
}

View File

@ -314,94 +314,122 @@
function initCircle() {
// 一个环形
var circleOneOption = {
drawing_elem: 'circleId',
bordercolor: '#12cda2',
borderwidth: 1,
percentfontsize: 22,
unitfontsize: 18,
lineWidth: 16,
addLeft: 4,
percentfontcolor: "#12cda2",
unitfontcolor: '#12cda2',
forecolor: '#12cda2',
unitadd: 1,
title: '在岗率',
titlefontcolor: '#12cda2',
titlefontsize: 9,
}
var $itemPW = $('.sd-section .sd-user-calc');
var itemPW = $itemPW.width()
var $itemPPW = $('.sd-section .sd-user-calc .sd-user-calc-left');
var itemPPW = $itemPPW.width()
var itemPPWPadding = ($itemPPW.innerWidth() - itemPPW) / 2
var itemPPWW = $('.sd-section .sd-user-calc .sd-user-calc-left .sd-user-calc-item').eq(0).innerWidth()
// 通过改变差值来决定圈的宽度,itemWMin为最新值
var itemW = (itemPW - itemPPWPadding - itemPPWW) / 3 * 2;
var itemWMin = 120
if (itemW > itemWMin) {
$('#circleId').attr('width', itemW).attr('height', itemW);
circleOneOption.percentfontsize = (itemW * 22 / itemWMin).toFixed() - 0
circleOneOption.unitfontsize = (itemW * 18 / itemWMin).toFixed() - 0
circleOneOption.titlefontsize = 16
}
console.log(itemPW, itemW, circleOneOption)
drawCircle(circleOneOption);
// 两个环形
var circleTwoOption = {
//var circleOneOption = {
// drawing_elem: 'circleId',
// bordercolor: '#12cda2',
// borderwidth: 1,
// percentfontsize: 22,
// unitfontsize: 18,
// lineWidth: 16,
// addLeft: 4,
// percentfontcolor: "#12cda2",
// unitfontcolor: '#12cda2',
// forecolor: '#12cda2',
// unitadd: 1,
// title: '在岗率',
// titlefontcolor: '#12cda2',
// titlefontsize: 9,
//}
//var $itemPW = $('.sd-section .sd-user-calc');
//var itemPW = $itemPW.width()
//var $itemPPW = $('.sd-section .sd-user-calc .sd-user-calc-left');
//var itemPPW = $itemPPW.width()
//var itemPPWPadding = ($itemPPW.innerWidth() - itemPPW) / 2
//var itemPPWW = $('.sd-section .sd-user-calc .sd-user-calc-left .sd-user-calc-item').eq(0).innerWidth()
//// 通过改变差值来决定圈的宽度,itemWMin为最新值
//var itemW = (itemPW - itemPPWPadding - itemPPWW) / 3 * 2;
//var itemWMin = 120
//if (itemW > itemWMin) {
// $('#circleId').attr('width', itemW).attr('height', itemW);
// circleOneOption.percentfontsize = (itemW * 22 / itemWMin).toFixed() - 0
// circleOneOption.unitfontsize = (itemW * 18 / itemWMin).toFixed() - 0
// circleOneOption.titlefontsize = 16
//}
//console.log(itemPW, itemW, circleOneOption)
//drawCircle(circleOneOption);
//// 两个环形
//var circleTwoOption = {
// drawing_elem: 'circleId1',
// percentfontsize: 22,
// unitfontsize: 18,
// lineWidth: 10,
// addLeft: 4,
// percentfontcolor: "#ffb260",
// bgcolor: '#0F2164',
// forecolor: '#ffb260',
// unitfontcolor: '#1ab1ff',
// lineGap: 'round',
// unitadd: -1,
//}
//var $itemInner = $('.sd-section5-inner')
//var $itemInnerTop = $('.sd-section5-inner .sd-quality')
//var heightTemp = $itemInner.height() - $itemInnerTop.height()
//var $itemTW = $('.sd-quality-circles');
//var itemTW = ($itemTW.width() / 2 / 3 * 2).toFixed() - 20
//var itemTH = $itemTW.height()
//console.log(itemTW, heightTemp)
//if (itemTW > heightTemp) {
// itemTW = heightTemp
//}
//// 通过改变差值来决定圈的宽度
//var itemW = itemTW
//var itemWMin = 100
//if (itemW > itemWMin) {
// $('#circleId1').attr('width', itemW).attr('height', itemW);
// circleTwoOption.percentfontsize = (itemW * 22 / itemWMin).toFixed() - 0
// circleTwoOption.unitfontsize = (itemW * 18 / itemWMin).toFixed() - 0
//}
//var circleThreeOption = {
// drawing_elem: 'circleId2',
// percentfontsize: 22,
// unitfontsize: 18,
// lineWidth: 10,
// addLeft: 4,
// percentfontcolor: "#12cda2",
// bgcolor: '#0F2164',
// forecolor: '#12cda2',
// unitfontcolor: '#1ab1ff',
// lineGap: 'round',
// unitadd: -1,
//}
//if (itemW > itemWMin) {
// $('#circleId2').attr('width', itemW).attr('height', itemW);
// circleThreeOption.percentfontsize = (itemW * 22 / itemWMin).toFixed() - 0
// circleThreeOption.unitfontsize = (itemW * 18 / itemWMin).toFixed() - 0
//}
//console.log(itemTW, itemTH, itemW, circleThreeOption)
//drawCircle(circleTwoOption);
//drawCircle(circleThreeOption);
drawCircle({
drawing_elem: 'circleId1',
percentfontsize: 22,
unitfontsize: 18,
lineWidth: 10,
addLeft: 4,
percentfontcolor: "#ffb260",
bgcolor: '#0F2164',
forecolor: '#ffb260',
unitfontcolor: '#1ab1ff',
percentfontcolor: "#ce8306",
unitfontcolor: "#ce8306",
unitfontsize: 11,
lineGap: 'round',
unitadd: -1,
}
var $itemInner = $('.sd-section5-inner')
var $itemInnerTop = $('.sd-section5-inner .sd-quality')
var heightTemp = $itemInner.height() - $itemInnerTop.height()
var $itemTW = $('.sd-quality-circles');
var itemTW = ($itemTW.width() / 2 / 3 * 2).toFixed() - 20
var itemTH = $itemTW.height()
console.log(itemTW, heightTemp)
if (itemTW > heightTemp) {
itemTW = heightTemp
}
// 通过改变差值来决定圈的宽度
var itemW = itemTW
var itemWMin = 100
if (itemW > itemWMin) {
$('#circleId1').attr('width', itemW).attr('height', itemW);
circleTwoOption.percentfontsize = (itemW * 22 / itemWMin).toFixed() - 0
circleTwoOption.unitfontsize = (itemW * 18 / itemWMin).toFixed() - 0
}
var circleThreeOption = {
bgcolor: [{ step: 0, color: "#03344C" }, { step: 1, color: "#03344C" }],
forecolor: [{ step: 0, color: "#ce8306" }, { step: 0.4, color: "#ce8306" }, { step: 1, color: "rgba(255,166,0,0.05)" }],
rad: Math.PI * 2 * (3 / 4) / 100,
radStart: Math.PI * (3 / 4),
radEnd: Math.PI * (2 + (1 / 4)),
radDrawStart: Math.PI * (3 / 4),
unitadd: 1,
});
drawCircle({
drawing_elem: 'circleId2',
percentfontsize: 22,
unitfontsize: 18,
lineWidth: 10,
addLeft: 4,
percentfontcolor: "#12cda2",
bgcolor: '#0F2164',
forecolor: '#12cda2',
unitfontcolor: '#1ab1ff',
unitfontcolor: "#12cda2",
unitfontsize: 11,
lineGap: 'round',
unitadd: -1,
}
if (itemW > itemWMin) {
$('#circleId2').attr('width', itemW).attr('height', itemW);
circleThreeOption.percentfontsize = (itemW * 22 / itemWMin).toFixed() - 0
circleThreeOption.unitfontsize = (itemW * 18 / itemWMin).toFixed() - 0
}
console.log(itemTW, itemTH, itemW, circleThreeOption)
drawCircle(circleTwoOption);
drawCircle(circleThreeOption);
bgcolor: [{ step: 0, color: "#03344C" }, { step: 1, color: "rgba(3,52,76,0.5)" }],
forecolor: [{ step: 0, color: "#12cda2" }, { step: 0.4, color: "#12cda2" }, { step: 1, color: "rgba(21,237,187,0.05)" }],
rad: Math.PI * 2 * (3 / 4) / 100,
radStart: Math.PI * (3 / 4),
radEnd: Math.PI * (2 + (1 / 4)),
radDrawStart: Math.PI * (3 / 4),
unitadd: 1,
});
}
// 地图点

View File

@ -166,16 +166,41 @@ namespace FineUIPro.Web.common
this.divSafeWorkTime.InnerHtml = "0000000000";
}
///整改单
var getRectify =from x in Funs.DB.Check_RectifyNotices
where x.States !=Const.State_0 && x.States != null && x.ProjectId != null
select x;
int allcout = getRectify.Count();
if (allcout > 0)
//var getRectify =from x in Funs.DB.Check_RectifyNotices
// where x.States !=Const.State_0 && x.States != null && x.ProjectId != null
// select x;
//int allcout = getRectify.Count();
//if (allcout > 0)
//{
// this.divAllRectify.InnerHtml = allcout.ToString();
// int ccount = getRectify.Where(x => x.States == "5").Count();
// this.divRectifyRate.InnerHtml = Math.Round(ccount * 1.0 / allcout * 100, 1).ToString();
//}
var getRectify = from x in Funs.DB.View_Hazard_HazardRegister
where x.States != Const.State_0 && x.States != Const.State_R && x.States != null
group x by x.States into g
select new { g.Key, Count = g.Count() };
var allcout = getRectify.ToList();
if (allcout.Count > 0)
{
this.divAllRectify.InnerHtml = allcout.ToString();
int ccount = getRectify.Where(x => x.States == "5").Count();
this.divRectifyRate.InnerHtml = Math.Round(ccount * 1.0 / allcout * 100, 1).ToString();
int total = 0;
int finish = 0;
foreach (var item in allcout)
{
total += item.Count;
if (item.Key.ToString() == "3")
{
finish += item.Count;
}
}
this.divAllRectify.InnerHtml = total.ToString();
//this.divUCRectify.InnerHtml = (total - finish).ToString();
this.divRectifyRate.InnerHtml = Math.Round(finish * 1.0 / total * 100, 1).ToString() ;
}
}
#endregion
@ -229,6 +254,9 @@ namespace FineUIPro.Web.common
///问题总数
int AllCount = getJointCheckDetail.Count() + getCheckControl.Count();
this.divCQMSAllNum.InnerHtml = AllCount.ToString();
if (AllCount > 0)
{
///问题完成数
@ -240,20 +268,28 @@ namespace FineUIPro.Web.common
CRectificationRate = Math.Round(CCount * 1.0 / AllCount * 100, 1);
}
}
var getSpotCheckDetail = from x in Funs.DB.Check_SpotCheckDetail
join y in Funs.DB.WBS_ControlItemAndCycle on x.ControlItemAndCycleId equals y.ControlItemAndCycleId
where y.ControlPoint != "C" && y.ControlPoint != "CR" && x.IsOK != null
select x;
int AllSpotCount = getSpotCheckDetail.Count();
if (AllSpotCount > 0)
var inspectionManagements = from x in Funs.DB.View_CQMS_InspectionManagementDetail select x;
if (inspectionManagements.Count() > 0)
{
int okSpotCount = getSpotCheckDetail.Where(x => x.IsOK == true).Count();
if (okSpotCount > 0)
int okInspectionManagements = inspectionManagements.Where(x => x.IsOnceQualified == true).Count();
if (okInspectionManagements > 0)
{
CQualifiedRate = Math.Round(okSpotCount * 1.0 / AllSpotCount * 100, 1);
CQualifiedRate = Math.Round(okInspectionManagements * 1.0 / inspectionManagements.Count() * 100, 1);
}
}
//var getSpotCheckDetail = from x in Funs.DB.Check_SpotCheckDetail
// join y in Funs.DB.WBS_ControlItemAndCycle on x.ControlItemAndCycleId equals y.ControlItemAndCycleId
// where y.ControlPoint != "C" && y.ControlPoint != "CR" && x.IsOK != null
// select x;
//int AllSpotCount = getSpotCheckDetail.Count();
//if (AllSpotCount > 0)
//{
// int okSpotCount = getSpotCheckDetail.Where(x => x.IsOK == true).Count();
// if (okSpotCount > 0)
// {
// CQualifiedRate = Math.Round(okSpotCount * 1.0 / AllSpotCount * 100, 1);
// }
//}
}
#endregion

View File

@ -1,134 +1,167 @@
*{
* {
padding: 0;
margin: 0;
box-sizing: border-box;
font-size: .175rem;
color: #1ab1ff;
}
*::-webkit-scrollbar{
display: none;
}
html,body{
*::-webkit-scrollbar {
display: none;
}
html, body {
height: 100%;
width: 100%;
overflow: hidden;
background-color: #010a2c;
}
.context{
height: 100%;
.context {
height: calc(100% - 1rem);
width: 100%;
display: flex;
flex-direction: row;
padding: .25rem;
background-color: #010a2c;
}
.site{
.site {
flex: 1;
padding: .125rem;
display: flex;
flex-direction: column;
justify-content: space-between;
}
.block{
.block {
height: calc((100% - .5rem) / 3);
width: 100%;
border: 2px solid #112A67;
border-radius: .125rem;
}
.block1 > .title,
.block > .title {
padding: .125rem 0;
color: #00ffff;
font-weight: 700;
font-size: .25rem;
text-align: center;
line-height: .35rem;
}
.block > .main {
height: calc(100% - .35rem);
width: 100%;
padding: .25rem;
}
.context > .right {
/* padding-top: .25rem; */
}
.block1>.title,
.block>.title{
color: #00ffff;
font-weight: 700;
font-size: .175rem;
text-align: center;
line-height: .35rem;
}
.block>.main{
height: calc(100% - .35rem);
width: 100%;
padding: .25rem;
}
.context>.right{
padding-top: .25rem;
}
.block1{
.block1 {
height: calc((100% - .5rem) / 3 * 2 + .25rem);
background-color: #010E35;
border: 2px solid #112A67;
border-radius: .125rem;
}
.xc{
.xc {
background-image: url(../image/y01.png);
background-position: center;
background-repeat: no-repeat;
background-size: 60% 90%;
/* background-size: ; */
}
.xc>.number{
text-align: center;
color: #1ab1ff;
margin-top: .375rem;
font-size: .375rem;
font-weight: 700;
}
.gsxc{
.xc > .number {
text-align: center;
color: #1ab1ff;
margin-top: .375rem;
font-size: .625rem;
font-weight: 700;
}
.gsxc {
height: 100%;
width: 100%;
}
ul{
ul {
width: 100%;
padding: 0 .375rem;
}
ul>li{
padding: .1rem 0;
width: 100%;
list-style: none;
display: flex;
ul > li {
padding: .1rem 0;
width: 100%;
list-style: none;
display: flex;
}
ul > li > span {
flex: 1;
font-size: .325rem;
font-weight: 500;
}
.info > ul > li > span:nth-child(2) {
flex: 2.5;
}
ul>li>span{
flex: 1;
font-size: .2rem;
font-weight: 500;
}
.gsxc ul>li>span:nth-child(2){
.gsxc ul > li > span:nth-child(2) {
color: #00ffff;
font-size: .25rem;
font-size: .35rem;
font-weight: 600;
}
.context .right{
.context .right {
flex: 2;
}
.context>.right>.block1>.top{
.context > .right > .block1 > .top {
height: 100%;
display: flex;
flex-direction: row;
}
.context>.right>.block1>.top>.info{
width: 58%;
padding: .75rem .5rem .25rem;
}
.context>.right>.block1>.top>.photo{
width: 42%;
padding: .25rem .875rem 1rem .875rem;
}
.context>.right>.block1>.top>.photo>img{
width: 100%;
height: 100%;
}
img{
.context > .right > .block1 > .top > .info {
width: 58%;
padding: .75rem .5rem .25rem;
}
.context > .right > .block1 > .top > .photo {
width: 42%;
padding: .25rem 1.5rem 1rem 1.875rem;
}
.context > .right > .block1 > .top > .photo > img {
width: 100%;
height: 100%;
}
img {
user-drag: none;
user-select: none;
-moz-user-select: none;
-webkit-user-drag: none;
-webkit-user-select: none;
-ms-user-select: none;
user-select: none;
-moz-user-select: none;
-webkit-user-drag: none;
-webkit-user-select: none;
-ms-user-select: none;
}
#gwnum{
#gwnum {
padding: .125rem;
}
}
.header {
height: 1rem;
background-image: url(../image/header-bg.png);
background-position: center;
background-size: 100% 100%;
background-repeat: no-repeat;
font-size: .5rem;
line-height: 1rem;
text-align: center;
}

View File

@ -5,6 +5,7 @@ using StackExchange.Redis;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Security.Cryptography.X509Certificates;
using System.Web;
namespace WebAPI.Common
@ -16,7 +17,9 @@ namespace WebAPI.Common
public static void init(int port)
{
allSockets = new Dictionary<string, IWebSocketConnection>();
webSocketServer = new WebSocketServer("ws://0.0.0.0:" + port);
webSocketServer = new WebSocketServer("wss://0.0.0.0:" + port);
//webSocketServer.Certificate = new X509Certificate2("MyCert.pfx","");
webSocketServer.Start(socket =>
{
socket.OnOpen = () =>

View File

@ -657,6 +657,49 @@ namespace WebAPI.Controllers
}
return responeData;
}
public Model.ResponeData getAllPersonDataExchange(string projectId)
{
var responeData = new Model.ResponeData();
try
{
responeData.data = from x in Funs.DB.SitePerson_Person
join y in Funs.DB.Base_Unit on x.UnitId equals y.UnitId
where x.ProjectId == projectId
&& !x.ExchangeTime.HasValue
&& x.InTime.HasValue && x.InTime < DateTime.Now
&& x.PhotoUrl != null
select new
{
x.PersonId,
x.PersonName,
x.CardNo,
x.IdentityCard,
x.UnitId,
y.UnitCode,
y.UnitName,
y.ShortUnitName,
Funs.DB.ProjectData_TeamGroup.First(z => z.TeamGroupId == x.TeamGroupId).TeamGroupName,
x.Sex,
Funs.DB.Base_WorkPost.First(z => z.WorkPostId == x.WorkPostId).WorkPostName,
x.Telephone,
x.Address,
x.InTime,
x.AuditorDate,
x.ExchangeTime,
x.ExchangeTime2,
x.PhotoUrl,
IsUsed = x.IsUsed.HasValue && x.IsUsed.Value==1? 1 : 0
};
}
catch (Exception ex)
{
responeData.code = 0;
responeData.message = ex.Message;
ErrLogInfo.WriteLog(ex, "WX接口-获取人员下发门禁", "PersonController.getPersonDataExchange");
}
return responeData;
}
#endregion
#region