From cd7f3fa89aed4e7a4b87c0ee4164cd606103b318 Mon Sep 17 00:00:00 2001
From: wangfei <3597712270@qq.com>
Date: 星期二, 15 四月 2025 09:38:41 +0800
Subject: [PATCH] Merge branch 'master' of http://10.153.19.25:10105/r/YiWuProject

---
 hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgstoragecage/mapper/EdgStorageCageDetailsMapper.java            |    3 
 hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/job/OPCPlcSlicecage.java                                  |    3 
 hangzhoumesParent/moduleService/hollowGlassModule/src/main/resources/mapper/HollowGlassOutRelationInfoMapper.xml                         |   29 
 hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgstoragecage/service/EdgStorageCageDetailsService.java          |    3 
 hangzhoumesParent/common/servicebase/src/main/java/com/mes/largenscreen/entity/PieChartVO.java                                           |   50 
 hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/resources/mapper/BigStorageCageMapper.xml                              |   18 
 hangzhoumesParent/common/servicebase/src/main/java/com/mes/order/entity/request/OrderRequest.java                                        |   42 
 hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgstoragecage/service/impl/EdgStorageCageDetailsServiceImpl.java |    6 
 hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/hollow/mapper/HollowGlassOutRelationInfoMapper.java              |    5 
 hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/entity/request/ReportWorkRequest.java                                      |   38 
 hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/job/PushMessageToIndex.java                                      |    4 
 hangzhoumesParent/common/servicebase/src/main/java/com/mes/largenscreen/service/impl/LargenScreenServiceImpl.java                        |    9 
 hangzhoumesParent/common/servicebase/src/main/java/com/mes/largenscreen/service/LargenScreenService.java                                 |    6 
 hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/job/PushMessageToIndex.java                                       |    5 
 hangzhoumesParent/common/servicebase/src/main/java/com/mes/order/controller/OrderController.java                                         |   13 
 hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/controller/ReportingWorkDetailController.java                              |   20 
 hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/mapper/BigStorageCageMapper.java               |    3 
 hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/service/impl/BigStorageCageServiceImpl.java    |    6 
 hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/hollow/service/impl/HollowGlassOutRelationInfoServiceImpl.java   |    6 
 UI-Project/src/lang/en.js                                                                                                                | 1819 +++++++++++++++++-----------------
 UI-Project/src/lang/zh.js                                                                                                                |    9 
 hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/entity/dto/FlowCardPercentDTO.java                                         |  102 +
 hangzhoumesParent/common/servicebase/src/main/java/com/mes/temperingglass/service/TemperingGlassInfoService.java                         |    7 
 hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/entity/request/FlowCardRequest.java                                        |   28 
 hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/hollow/service/HollowGlassOutRelationInfoService.java            |    3 
 hangzhoumesParent/common/servicebase/src/main/java/com/mes/order/entity/dto/OrderDTO.java                                                |   12 
 hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/entity/dto/ReportWorkDTO.java                                              |   67 +
 hangzhoumesParent/moduleService/CacheGlassModule/src/main/resources/mapper/EdgStorageCageDetailsMapper.xml                               |   17 
 hangzhoumesParent/moduleService/TemperingGlassModule/src/main/java/com/mes/job/PlcTemperingGlassTask.java                                |    4 
 hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/service/BigStorageCageService.java             |    3 
 hangzhoumesParent/common/servicebase/src/main/java/com/mes/temperingglass/mapper/TemperingGlassInfoMapper.java                           |   14 
 hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/controller/FlowCardController.java                                         |    9 
 UI-Project/src/views/largescreendisplay/screendisplay.vue                                                                                |  774 +++++++++++--
 hangzhoumesParent/common/servicebase/src/main/java/com/mes/temperingglass/service/impl/TemperingGlassInfoServiceImpl.java                |    8 
 34 files changed, 2,082 insertions(+), 1,063 deletions(-)

diff --git a/UI-Project/src/lang/en.js b/UI-Project/src/lang/en.js
index 88f6710..2c58e51 100644
--- a/UI-Project/src/lang/en.js
+++ b/UI-Project/src/lang/en.js
@@ -1,910 +1,919 @@
-export  default {
+export default {
     "northglassMESsystem": "NorthGlass MES System",
-      login:{
-          userErr:'Please enter account number',
-          pwErr:'Please input a password',
-          user:'Account number',
-          password:'Password',
-          login:'Log on',
-          loginSuccessful:'Log on was successful锛�',
-          register:'Register',
-          namea:'Name cannot be empty',
-          len:'The length cannot exceed 16',
-          passnull:'Password cannot be empty',
-          leng:'The password length cannot be less than 6 or more than 16',
-          spwn:'Confirm password cannot be empty',
-          depass:'The two passwords are not the same',
-      },
-      register:{
-          registerSuccessful:'login was successful',
-          newuserregister:'New user register',
-          name:'Full name锛�',
-          inputname:'Please enter your name',
-          password:'Password:',
-          pwErr:'Please input a password',
-          passwordation:'Confirm password:',
-          pwErration:'Please confirm password',
-          registration:'Registration Confirm',
-          false:'Cancel',
-      },
-      main:{
-          connectErr:'The server connection is abnormal. Please try again later',
-          titleFirst:"Welcome ",
-          titleLast:' to use NorthGlass MES system锛�',
-          quit:"Exit",
-      },
-      basicData:{
-          untask:'鏃犱换鍔�',
-          tonumber:'涓婄墖鎬绘暟閲�',
-          finishnumber:'宸插畬鎴愭暟閲�',
-          rackreset:'鏋跺瓙澶嶄綅',
-          prackreset:'鏄惁鏋跺瓙澶嶄綅锛�',
-          printing:'鑷姩鎵撳嵃',
-          laserprinting:'Laser printing machine ready status锛�',
-          cuttingmachine:'Cutting machine ready status锛�',
-          machine:'Online status of the loading table锛�',
-          machineaa:'Manual state of the loading table锛�',
-          selectproject:"Select project",
-          startloading:'Start loading',
-          stop:'Pause',
-          yes:'Confirm',
-          change:'Switch',
-          projectnumber:'Project number',
-          glasswidth:'Glass width',
-          glassheight:'Glass height',
-          coatingtypes:'Coating types',
-          coatingtypesa:'Coating types锛�',
-          quantity:'Quantity',
-          quantitya:'Quantity锛�',
-          thickness:'Thickness',
-          thicknessa:'Thickness锛�',
-          startstatus:'Start status',
-          pass:'Pass',
-          waiting:'Waiting',
-          up:'Loading',
-          finish:'Completed',
-          project:'Project ',
-          plselectproject:'Please select project',
-          confirm:'Confirm',
-          cancel:'Cancel',
-          startfilm:'Whether start loading锛�',
-          whetherpause:'Whether pause锛�',
-          station:'Station',
-          width:'Width',
-          widtha:'Width锛�',
-          height:'Height',
-          heighta:'Height锛�',
-          operate:'Operate',
-          add:'Increase',
-          delete:'Delete',
-          addglass:'Add glass',
-          selectwidth:'Please select width',
-          selectheight:'Please select high',
-          selectcoatingtypes:'Please select the coating types',
-          selectthickness:'Please select thickness',
-          selectquantity:'Please enter the quantity',
-          pause:'The height of the second and fourth rows must be greater than 2700 in order to save锛�',
-          pausea:'Please confirm the ready status of marking machine and cutting machine锛�',
-          infonull:'Project number cannot be empty锛�',
-          updatanull:'This project has not been saved to the loading list锛�',
-          glassnull:'An error occurred while updating the glass status',
-          deletemessage:'Do you want to delete this message?',
-          layoutSequence:'Serial Number',
-      },
-      sorter:{
-          onesort:'涓�绾挎幇鐗�',
-          twosort:'浜岀嚎鎺扮墖',
-          inPlace:'鍒颁綅',
-          ninPlace:'鏈埌浣�',
-          emptymissions:'绌轰换鍔�',
-          advancetask:'杩涚墖浠诲姟',
-          outputtasks:'鍑虹墖浠诲姟',
-          schedulingtasks:'璋冨害浠诲姟',
-          advancerequests:'杩涚墖璇锋眰',
-          releaserequest:'鍑虹墖璇锋眰',
-          straighttasks:'鐩撮�氫换鍔�',
-          endingtask:'缁撴潫',
-          another:'鍏朵粬',
-          taskRunning:'浠诲姟璇锋眰',
-          updateTime:'鏇存柊鏃堕棿',
-          id:'纾ㄨ竟鍓嶇悊鐗囩琛↖D',
-          remainWidth:'鍓╀綑',
-          place:'鏄惁鍒颁綅',
-          layernow:'褰撳墠灞傚彿',
-          gridnumber:'Grid number',
-          glassnumber:'Glass number',
-          width:'Width',
-          height:'Height',
-          startstatus:'Start status',
-          disable:'Disabled',
-          start:'Enabled',
-          deficiencieste:'Report deficiencies',
-          updown:'Artificial filming',
-          operate:'Operate',
-          prompt:'Prompt',
-          information:'Is the missing information reported锛�',
-          infor:'Whether to manually download this information锛�',
-          yes:'Yes',
-          cancel:'Cancel',
-      },
-      order:{
-          projectnumber:'璇疯緭鍏ュ伐绋嬪彿',
-          dilapidation:'Breakage',
-          takeaway:'Manual removal',
-          takeawaya:'鏄惁浜哄伐鎷胯蛋璇ユ潯淇℃伅锛�',
-          takeon:'The arrangement is complete',
-      },
-      searchOrder:{
-          furnfullTemp:'鐜荤拑鎬婚噺',
-          startCell:'鐩爣灞傚彿',
-          endCell:'棰勭暀灞傚彿',
-          begin:'寮�濮�',
-          finish:'瀹屾垚',
-          uncar:'鏈笂杞�',
-          inkage:'杩涚墖',
-          successfullyprocessed:'浠诲姟鎴愬姛澶勭悊',
-          psuccessfullyprocessed:'鏄惁杩涜浠诲姟鎴愬姛澶勭悊锛�',
-          taskfailure:'浠诲姟澶辫触澶勭悊',
-          ptaskfailure:'鏄惁杩涜浠诲姟澶辫触澶勭悊锛�',
-          totallogarithms:'鎬诲鏁�',
-          numberpairs:'閰嶅鏁�',
-          numberoccupied:'鍗犵敤鏍煎瓙鏁�',
-          totalfurnaces:'鎬荤倝鏁�',
-          cagesnumber:'绗煎唴鏁伴噺',
-          slotnumber:'鍗犳湁鏍煎瓙鏁�',
-          progress:'杩涘害%',
-          whethersame:'鏄惁鐩稿悓',
-          same:'鐩稿悓',
-          notsame:'涓嶇浉鍚�',
-          partask:'浠诲姟閲嶇疆',
-          partasks:'鏄惁浠诲姟閲嶇疆锛�',
-          empty:'榛樿绌轰换鍔�',
-          historicaltasks:'鍘嗗彶浠诲姟',
-          cagedetails:'绗煎唴璇︽儏',
-          inkageEntity:'杩涚墖鑱旀満鐘舵�侊細',
-          requestEntity:'杩涚墖璇锋眰鐘舵�侊細',
-          mesReplyEntity:'鍚姩鍛戒护锛�',
-          outInkageEntity:'鍑虹墖鑱旀満鐘舵�侊細',
-          outRequestEntity:'鍑虹墖璇锋眰鐘舵�侊細',
-          breakagn:'鏈牬鎹�',
-          lacknumber:'缂虹墖鏁伴噺',
-          processcard:'鎸囧畾娴佺▼鍗�',
-          filminformation:'浜哄伐涓嬬墖淇℃伅',
-          currentglassinformation:'鎵爜鏋綋鍓嶇幓鐠冧俊鎭�',
-          printlabels:'鎵撳嵃鏍囩',
-          deleteTask:'缁撴潫宸ョ▼',
-          pdeleteTask:'鏄惁缁撴潫宸ョ▼锛�',
-          searchlayout:'Non-tempered process card inquiry',
-          fullfurnaces:'Number of full furnaces',
-          specifiedproject:'The currently specified project',
-          undesignate:'鍙栨秷閽㈠寲',
-          allnumber:'Total quantity',
-          numbercages:'Number of cages',
-          missingquantity:'Missing quantity',
-          breakquantity:'Breakage/Take Away quantity',
-          ceng:'layer',
-          cageinformation:'Sorter information',
-          productionqueue:'Production queue',
-          outputglassID:'Output glass ID',
-          startposition:'Start position',
-          targetlocation:'Target Position',
-          trips:'Train number',
-          number:'Serial Number',
-          taskstatus:'Task state',
-          filmenter:'Waiting for input glass',
-          infilm:'In progress',
-          endtask:'End task',
-          completetask:'Complete the task',
-          intoglassid:'Input glass ID',
-          line:'Wire',
-          Usage:'Usage rate',
-          free:'Free(pieces)',
-          addcage:'Add information on sorter',
-          glassIDa:'Glass ID锛�',
-          glassID:'Glass ID',
-          inglassID:'Please enter the glass ID',
-          pieceingrid:'The order of small pieces within the grid',
-          pieceingrida:'The order of small pieces within the grid锛�',
-          inpieceingrid:'Please enter the order of small pieces within the grid',
-          cardnumber:'Process card number',
-          cardnumbera:'Process card number锛�',
-          incardnumber:'Please enter the process card number',
-          typeglass:'Glass type',
-          typeglassa:'Glass type锛�',
-          intypeglass:'Please enter the glass type',
-          width:'Width',
-          widtha:'Width锛�',
-          inwidth:'Please enter width',
-          height:'Height',
-          heighta:'Height锛�',
-          inheight:'Please enter height',
-          coatingtypes:'Coating types',
-          thickness:'Thickness',
-          thicknessa:'Thickness锛�',
-          inthickness:'Please enter the thickness',
-          layoutID:'Drawing ID of loading for tempering furnace',
-          layoutIDa:'Drawing ID of loading for tempering furnace锛�',
-          inlayoutID:'Please enter the drawing ID of loading for tempering furnace',
-          picturesequence:'Drawing sequence of loading for tempering furnace',
-          picturesequencea:'Drawing sequence of loading for tempering furnace锛�',
-          inpicturesequence:'Please enter the drawing sequence of loading for tempering furnace',
-          startstatus:'Start status',
-          startstatusa:'Start status锛�',
-          instartstatus:'Please enter the enabled status',
-          glassgaps:'Glass gap',
-          glassgapsa:'Glass gap锛�',
-          inglassgaps:'Please enter the glass gap',
-          sure:'Confirm',
-          cancel:'Cancel',
-          operate:'Operate',
-          breakage:'Breakage',
-          delete:'Delete',
-          outfilm:'Output glass',
-          cagetableID:'Sorter table ID',
-          cagenumber:'Sorter number',
-          gridnumber:'Grid number',
-          gridnumbera:'Grid number锛�',
-          grid:'Please enter a grid number',
-          enable:'Enabled',
-          disable:'Disabled',
-          remainingwidth:'Remaining width',
-          add:'Add',
-          sheetID:'Tempered small piece information table ID',
-          processcards:'Process card',
-          processcardtype:'Process card glass type',
-          acceptshorizontal:'Does tempering accept horizontal placement',
-          xcoordinates:'x coordinate',
-          ycoordinates:'Y coordinate',
-          rotationangle:'Rotation angle (counterclockwise)',
-          state:'Status',
-          takeout:'Take away',
-          deletemessage:'Do you want to delete this message?',
-          prompt:'Prompt',
-          yes:'Yes',
-          accept:'Accept',
-          noaccept:'Not accept',
-          filmcomplete:'Glass output completed',
-          waiting:'Waiting',
-          broke:'Is this information damaged锛�',
-          brokeb:'Do you need to delete the message锛�',
-          outfil:'Whether the film is released or not锛�',
-          inputid:'Please enter the glass ID',
-          search:'Search',
-          tabid:'Dali film cage details table ID',
-          tid:'Device ID',
-          tida:'Device ID锛�',
-          fin:'Whether or not the task was completed锛�',
-          sureadd:'Confirm the addition',
-          sureadda:'Whether to confirm the addition锛�',
-          zailong:'In a cage',
-          rengongxp:'Artificial filming',
-          up:'Previous',
-          down:'Next',
-          now:'The current page is displayed',
-          tit:'data',
-          temperingqueries:'Tempering queries',
-          specifytempering:'Specify a furnace',
-          specifyout:'鎸囧畾浜哄伐鍑虹墖',
-          specifyengineerid:'Specify the project',
-          projectnumber:'Project number',
-          layoutnumber:'Drawing number of loading for tempering furnace',
-          numberglasses:'Number of glasses',
-          specifytemperinga:'璇风‘璁よ澶囨槸鍚﹀凡鍏抽棴MES鑱旀満锛�',
-          temperedswitch:'Tempered switch',
-          dutyinformation:'Duty information',
-          process:'Process',
-          team:'Team',
-          basic:'equipment',
-          makesure:'Confirm the save',
-          temperingtotal:'Number of tempering furnaces锛�',
-          glasstotal:'Total number of glasses锛�',
-          Labelprinting:'鏍囩鎵撳嵃',
-          Schedulingswitch:'璋冨害寮�鍏�',
-      },
-      workOrder:{
-          upnumber:'涓婄墖浣嶇紪鍙�',
-          coatingtypesbe:'鍘熺墖鑶滅郴',
-          glassID:'Glass ID',
-          height:'Height',
-          width:'Width',
-          thickness:'Thickness',
-          coatingtypes:'Coating types',
-          productionsequence:'Production sequence',
-          cardnumber:'Process card number',
-          operate:'Operate',
-          messagedamaged:'Is this information damaged?',
-          prompt:'Prompt',
-          yes:'Yes',
-          cancel:'Cancel',
-          takemessage:'Do you need to delete the message锛�',
-          breakage:'Breakage',
-          takeout:'Take away',
-          glasstype:'Glass type',
-          line:'Wire',
-          status:'Status',
-          time:'Time period',
-          cway:'Please select a route',
-          cstate:'Please select a status',
-          edgingone:'Edging a line',
-          edgingtwo:'Edging two lines',
-          nedging:'Unedging',
-          edging:'Edging',
-          finedging:'has been edging',
-        },
-      processCard:{
-          intofurnace:'Entering the furnace',
-          beforefurnace:'Before entering the furnace',
-          outfurnace:'Glass finished from tempering furnace',
-          print:'Take away the print',
-          printing:'print',
-          projectnumber:'Please enter the project number',
-          inquire:'Inquire',
-          project:'Project number',
-          awayprocess:'Take away the process',
-          awayequipment:'Take away the equipment',
-          awayteam:'Take away the crew',
-          flowcard:'Process card',
-          layer:'Layer number',
-          temperinglayout:'Heat number',
-          temperingfeed:'Preface',
-          width:'Width',
-          height:'Height',
-          thickness:'Thickness',
-          glasstakeout:'Glass take away list',
-          layoutID:'Drawing ID of loading for tempering furnace',
-          glassID:'Glass ID',
-      },
-      reportWork:{
-          details:'Drop off details',
-          filming:'Artificial filming',
-          printing:'Automatic printing',
-          cenumber:'Number of layers',
-          artificialorder:'The number of pieces under artificial order',
-          processcard:'Print the process card',
-          printlabels:'Print labels',
-          information:'Landing information',
-          cstation:'Please select a desk',
-          all:'all',
-          timeperiod:'Time period',
-          stationnumber:'Station number',
-          order:'order',
-          filminformation:'Manual film information',
-          glassmation:'Artificial film current glass information',
-          barcodescanner:'The current glass information of the barcode scanner',
-          lowerbit:'Unloading station',
-          shelfnumber:'Rack number',
-          cardnumber:'Process card number',
-          totalquantity:'Total quantity',
-          beendropped:'Quantity of unloaded glass',
-          state:'Status',
-          devicenumber:'Equipment No.',
-          startstatus:'Start status',
-          enable:'Start',
-          unenable:'Unstart',
-          operate:'Operate',
-          bindingshelves:'Assigned rack',
-          clear:'Clear',
-          workstation:'Station No.',
-          shelfnumbera:'Rack number锛�',
-          cardnumbera:'Process card number锛�',
-          incardnumber:'Please select the process card number',
-          clearglass:'Clear the glass on the shelf',
-          sure:'Operate',
-          cancel:'Cancel',
-          glassinformation:'Glass information',
-          glassID:'Glass ID',
-          coatingtypes:'Coating types',
-          thickness:'Thickness',
-          width:'Width',
-          height:'Height',
-      },
-      productStock:{
-          configName:'閰嶇疆鍚�',
-          configCode:'閰嶇疆浠g爜',
-          configValue:'閰嶇疆鍊�',
-          addusers:'Add user',
-          username:'User name',
-          usernamea:'User name锛�',
-          inusername:'Enter one user name',
-          role:'Role',
-          rolea:'Role锛�',
-          inrole:'Please select a role',
-          test:'Test',
-          admin:'Administrator',
-          operate:'Operate',
-          resetpassword:'Reset password',
-          exit:'Edit',
-          delete:'Delete',
-          prompt:'Prompt',
-          repassword:'Do you want to reset the user password锛�',
-          yes:'Yes',
-          cancel:'Cancel',
-          reusername:'Modify Users',
-          addusername:'Add user',
-          password:'Password锛�',
-          sure:'Confirm',
-          inpassword:'Please input a password',
-          deusername:'Do you want to delete the user锛�',
-      },
-      customer:{
-          addmenua:'Add secondary menus',
-          addmenu:'Add a first-level menu',
-          firstmenu:'First level menu bar',
-          firstmenuname:'The name of the first-level menu:',
-          link:'Link',
-          inlink:'Please enter the link',
-          linka:'Link锛�',
-          sort:'Sort',
-          insort:'Please enter sorting',
-          sorta:'Sort锛�',
-          operate:'Operate',
-          exit:'Edit',
-          delete:'Delete',
-          semenu:'Secondary menu bar',
-          semenuname:'Secondary menu name:',
-          menu:'Menu bar锛�',
-          inmenu:'Please enter a menu name',
-          sure:'Confirm',
-          cancel:'Cancel',
-          exmene:'Modify the first-level menu',
-          exmenea:'Modify the secondary menu',
-          yes:'Yes',
-          demenu:'Do you want to delete this menu锛�', 
-          prompt:'Prompt',
-      },
-      delivery:{
-          addrole:'Add Role',
-          editrole:'Modify role',
-          role :'Role',
-          rolea :'Role锛�',
-          inrole :'Please enter the role',
-          operate :'Operate',
-          edit :'Edit',
-          delete :'Delete',
-          yes:'Yes',
-          sure :'Confirm',
-          cancel :'Cancel',
-          derole :'Do you want to delete this role',
-          prompt:'Prompt',
-          choice:'Menu permissions锛�',
-          inchoice:'Please select Menu Permissions',
-      },
-      replenish:{
-          patchManagement:'Mesh management',
-      },
-      rework:{
-          reworkManagement:'Rework management',
-          addRework:"Rework added ",
-      },
-      role:{
-          id:'ID',
-          characterHomepage:'Character Home',
-      },
-      user:{
-          userId:'User ID',
-          userHomepage:'User Home',
-      },
-      orderBasicData:{
-          order:'orders',
-          orderType:'The type of order',
-      },
-      machine:{
-          basicId:'Device number',
-          basicName:'The name of the device',
-          basicCategory:'The process in which it is located',
-          tempering:'Steel',
-      },
-      report:{
-          productionReport:'Production reports',
-          workInProgressReport:'WIP report',
-      },
-      productionBasicData:{
-          basicDataQuery :'Basic data query',
-      },
-      mainIngredient:{
-          materialInformation :'Material information',
-      },
-      mainIngredientStock:{
-          materialName :'The name of the item',
-          createTime :'Return date',
-      },
-      large:{
-          percent:'Percent',
-          time: 'The time of the break',
-          tionnumber: 'Order number',
-          jobnumber: 'Job number',
-          productionnumber: 'The production order number',
-          cardnumber: 'Process card number',
-          projectname: 'The name of the project',
-          batch: 'batch',
-          detailID: 'Detail ID',
-          building: 'Building No',
-          serialnumber: 'Order serial number',
-          productname: 'Product name',
-          serial: 'Process validation number',
-          slicemarker: 'Frame marker (position)',
-          numberpatches: 'Number of patches',
-          width: 'Width',
-          height: 'Height',
-          shape: 'Shape',
-          responsibleprocess: 'Responsible process',
-          process: 'This process',
-          numberfractions: 'The number of unfilled fractions',
-          breakreason: 'The reason for the break',
-          breaktype: 'Sub-break type',
-          responsiblepersonnel: 'Responsible Personnel',
-          responsiblequipment: 'Responsible Equipment',
-          responsibleteam: 'Responsible team',
-          area: 'Sub-broken area',
-          inspector: 'Quality inspector',
-          operate: 'Operate',
-          mes: 'Detail',
-          projectnumber: 'The project order number',
-          brokeno: 'The report is broken and not filled',
-          close: 'Shut down',
-          orderId: 'Order ID',
-          order: '璁㈠崟璇︽儏',
-          customerName: 'The name of the customer',
-          project: 'The name of the project',
-          are: 'are',
-          quantity: 'quantity',
-          warehousing: 'State',
-          deliveryDate: 'Delivery time',
-          notstocked: 'Not yet in stock',
-          inboundstatus: 'Partial inventory status',
-          allstatus: 'All in stock status',
-          completedquantity: 'Completed quantity',
-          scrapquantity: 'Scrap Quantity',
-          number: 'Quantity',
-          method: 'Processing method',
-          innumber: 'Quantity already entered',
-          productstatus: 'Production status',
-          right: 'normal',
-          stop: 'termination',
-          inquire: 'query',
-          starttime :'Start Time',
-          endtime :'End Time',
-          loading :'In the process of uploading锛�',
-          brokenNum:'brokenNum',
-          inventory:'inventory',
-          inventoryarea:'inventoryarea',
-          shippedQuantity:'shippedQuantity',
-          reportWorkQuantity:'reportWorkQuantity',
-          reportWorkQuantityCount:'reporting_work_num_count',
-          processId:'processId',
-          historicaltasks1:'historicaltasks1',
-          historicaltasks2:'historicaltasks2',
-          historicaltasks3:'historicaltasks3',
-          historicaltasks4:'historicaltasks4',
-          historicaltasks5:'historicaltasks5',
-          historicaltasks6:'historicaltasks6',
-          historicaltasks7:'historicaltasks7',
-          order:'order',
-          date:'date',
-          countOutOne:'countOutOne',
-          totalAreaOutOne:'totalAreaOutOne',
-          countOutTwo:'countOutTwo',
-          totalAreaOutTwo:'totalAreaOutTwo',
-          countIn:'countIn',
-          totalAreaIn:'totalAreaIn',
-          countOut:'countOut',
-          totalAreaOut:'totalAreaOut',
-          hollowCountOutOne:'hollowCountOutOne',
-          hollowTotalAreaOutOne:'hollowTotalAreaOutOne',
-          countOut:'countOut',
-          hollowCountOutTwo:'hollowCountOutTwo',
-      },
-      reportmanage:{
-          productiontime :'production time',
-          starttime :'Start Time',
-          endtime :'End Time',
-          ctype :'Please select type',
-          cstate :'Please select the status',
-          cprocess :'Please select the process',
-          all :'All',
-          completed :'Completed',
-          broke :'Damaged',
-          takeout :'Takeout',
-          dreportwork :'Unreported work',
-          pendingwork :'Pending job application',
-          reportwork :'Reported work',
-          reportworked :'Reported worked',
-          incise :'slicing',
-          edging :'edging',
-          steel :'toughened',
-          inquire :'query',
-          signingwork :'Reporting for work',
-          reporteam :'Report work team',
-          reportingequipment :'Reporting equipment',
-          line :'line',
-          process :'production processes',
-          glassID :'Glass ID',
-          projectnumber :'Project number',
-          layoutID :'Tempered layout ID',
-          type :'type',
-          state :'state',
-          processcards :'Flow Card',
-          number :'Serial Number',
-          layer :'storey',
-          typebreakage :'Damage type',
-          ptypebreakage :' Please select the type of damage',
-          causebreakage :'Reason for damage',
-          pcausebreakage :'Please select the reason for the damage',
-          responsibleprocess :'Responsibility Process',
-          responsiblepersonnel :'Responsible personnel',
-          presponsiblepersonnel :'Please enter the responsible personnel',
-          responsibleteam :'Responsible team',
-          presponsibleteam :'Please select the responsible team',
-          responsibleequipment :'Responsible equipment',
-          presponsibleequipment :'Please select the responsible device',
-          remark :'notes',
-          premark :'Please enter a note',
-      },
-      film:{
-          resetnumber:'鏋跺瓙鍙�',
-          fail:'澶辫触',
-          mes:'Original film storage details',
-          warehousing:'store',
-          pwarehousing:'鍏ュ簱璇锋眰',
-          wareout:'鍘熺墖鍑哄簱',
-          information:'鏄惁鍑哄簱璇ユ潯淇℃伅锛�',
-          pwareout:'鍑哄簱璇锋眰',
-          position:'鍚婅浣嶏細',
-          cposition:'璇烽�夋嫨鍚婅浣�',
-          position1:'鍚婅浣�1',
-          position2:'鍚婅浣�2',
-          addglass:'鍘熺墖淇℃伅',
-          operate: 'Operate',
-          exit:'Edit',
-          delete:'Delete',
-          outbound:'Outbound',
-          deviceid:'device ID',
-          enablestatea:'Enable tagging',
-          disable:'Disable',
-          start:'Enable',
-          startslot:'Start workstation',
-          endslot:'Target workstation',
-          slotid:'Grid ID',
-          slot:'鏍煎瓙鍙�',
-          width:'Width',
-          widtha:'Width锛�',
-          inwidth:'Please enter width',
-          height:'Height',
-          inheight:'Please enter height',
-          heighta:'Height锛�',
-          thickness:'Thickness',
-          inthickness:'Please enter thickness',
-          thicknessa:'Thickness锛�',
-          films:'Films',
-          infilms:'Please enter films',
-          filmsa:'Films锛�',
-          createtime:'Creation time',
-          remainquantity:'Remaining Quantity',
-          thickremainquant:'Remaining quantity of original film (sheets)',
-          thickremainquantity:'Remaining quantity of original film (sheets)锛�',
-          inquantity:'Please enter the quantity',
-          quantitya:'Number锛�',
-          enableid:'Task ID',
-          originateslot:'Starting grid',
-          endoriginateslot:'鐩爣鏍煎瓙',
-          patternquantity:'Number',
-          enabletype:'Task Type',
-          enablestate:'Workstation status',
-          finish:'Completed',
-          unfinish:'Incomplete',
-          dedelete:'Do you want to delete this content锛�',
-          dedisable:'Do you want to disable this content锛�',
-          deoutbound:'Whether to release the content of this item from the warehouse锛�',
-          selectwarehousing:'Please select the lifting position',
-          inwarehousing:'Lifting position锛�',
-          warehousing1:'Lifting position 1',
-          warehousing2:'Lifting position 2',
-          starttime :'Start Time',
-          endtime :'End Time',
-          taskstatus :'Status',
-          built :'newly built',
-          execution :'In progress',
-          tasktype :'Task Type',
-          stocke :'store',
-          dispatch :'dispatch',
-          inquire :'query',
-          station :'station',
-      },
-      Mounting:{
-          previewproject :'Select Preview Project',
-          loadinglinea :'Upper film line',
-          loadingline :'Upper film line锛�',
-          inloadingline :'Please select the upper film line',
-          oneloadingline :'Line 1 on film',
-          twoloadingline :'Line 2 on film',
-          waiting :'Waiting',
-          pass: 'Pass',
-          setparameters :'Set parameters',
-          project :'Project number',
-          projecta :'Project number锛�',
-          width :'Width',
-          height :'Height',
-          thickness :'Thickness',
-          projectnumber :'Project original piece number',
-          state :'state',
-          createtime :'Creation time',
-          all :'Select All',
-          removalmethod: '璇烽�夋嫨闄よ啘鏂瑰紡',
-          removalmethodp: '闄よ啘鏂瑰紡',
-          removalmethoda: '闄よ啘鏂瑰紡锛�',
-          noremoval: '涓嶉櫎鑶�',
-          removal: '闄よ啘',
-          coarselyground: '绮楃(',
-          finegrinding: '绮剧(',
-      },
-      hellow: {
-          totalPairQuantitya: '浠诲姟鎬婚厤瀵规暟',
-          pairQuantitya: '宸插嚭閰嶅鏁�',
-          waitingout: '绛夊緟鍑虹墖',
-          finishout: '鍑虹墖瀹屾垚',
-          hollowSequence: '涓┖椤哄簭',
-          isPair: '鏄惁閰嶅',
-          no: '鍚�',
-          listFormula: '閰嶆柟淇℃伅',
-          HollowGlass: '闃熷垪淇℃伅',
-          totalLayer: '鎬诲眰鏁�',
-          totalPairQuantity: '鎬婚厤瀵规暟閲�',
-          pairQuantity: '宸插畬鎴愰厤瀵规暟閲�',
-          isForceList: '鏄惁寮哄埗',
-          yesisForceList: '寮哄埗',
-          noisForceList: '闈炲己鍒�',
-          hollowCountOutOne: '涓┖涓�绾跨幓鐠冩暟閲�',
-          hollowCountOutTwo: '涓┖浜岀嚎鐜荤拑鏁伴噺',
-          hollowTotalAreaOutOne: '涓┖涓�绾跨幓鐠冮潰绉�',
-          hollowTotalAreaOutTwo: '涓┖浜岀嚎鐜荤拑闈㈢Н',
-          countIn: '閽㈠寲鍓嶅ぇ鐞嗙墖绗肩幓鐠冩暟閲�',
-          countOut: '閽㈠寲鐜荤拑鏁伴噺',
-          countOutOne: '鍒囧壊涓�绾跨幓鐠冩暟閲�',
-          countOutTwo: '鍒囧壊浜岀嚎鐜荤拑鏁伴噺',
-          totalAreaIn: '閽㈠寲鍓嶅ぇ鐞嗙墖绗肩幓鐠冮潰绉�',
-          totalAreaOut: '閽㈠寲鐜荤拑闈㈢Н',
-          totalAreaOutOne: '鍒囧壊涓�绾跨幓鐠冮潰绉�',
-          totalAreaOutTwo: '鍒囧壊浜岀嚎鐜荤拑闈㈢Н',
-          freeone: '涓�绾跨┖闂茬姸鎬侊細',
-          freetwo: '浜岀嚎绌洪棽鐘舵�侊細',
-          freethree: '涓夌嚎绌洪棽鐘舵�侊細',
-          casFour: '姘斾綋4',
-          casFourb: '姘斾綋4锛�',
-          casFoura: '璇烽�夋嫨姘斾綋4',
-          casOne: '姘斾綋1',
-          casOneb: '姘斾綋1锛�',
-          casOnea: '璇烽�夋嫨姘斾綋1',
-          casThree: '姘斾綋3',
-          casThreeb: '姘斾綋3锛�',
-          casThreea: '璇烽�夋嫨姘斾綋3',
-          casTwo: '姘斾綋2',
-          casTwob: '姘斾綋2锛�',
-          casTwoa: '璇烽�夋嫨姘斾綋2',
-          Y: '鏈�',
-          F: '鏃�',
-          frameFour: '闂撮殧鏉�4',
-          frameFourb: '闂撮殧鏉�4锛�',
-          frameFoura: '璇疯緭鍏ラ棿闅旀澘4',
-          frameOne: '闂撮殧鏉�1',
-          frameOneb: '闂撮殧鏉�1锛�',
-          frameOnea: '璇疯緭鍏ラ棿闅旀澘1',
-          frameThree: '闂撮殧鏉�3',
-          frameThreeb: '闂撮殧鏉�3锛�',
-          frameThreea: '璇疯緭鍏ラ棿闅旀澘3',
-          frameTwo: '闂撮殧鏉�2',
-          frameTwob: '闂撮殧鏉�2锛�',
-          frameTwoa: '璇疯緭鍏ラ棿闅旀澘2',
-          intervalFrameHeightOne: '闂撮殧妗嗛珮搴�1',
-          intervalFrameHeightTwo: '闂撮殧妗嗛珮搴�2',
-          intervalFrameHeightThree: '闂撮殧妗嗛珮搴�3',
-          intervalFrameHeightFour: '闂撮殧妗嗛珮搴�4',
-          intervalFrameHeightaOne: '璇疯緭鍏ラ棿闅旀楂樺害1',
-          intervalFrameHeightaTwo: '璇疯緭鍏ラ棿闅旀楂樺害2',
-          intervalFrameHeightaThree: '璇疯緭鍏ラ棿闅旀楂樺害3',
-          intervalFrameHeightaFour:  '璇疯緭鍏ラ棿闅旀楂樺害4',
-          intervalFrameHeightbOne: '闂撮殧妗嗛珮搴�1锛�',
-          intervalFrameHeightbTwo: '闂撮殧妗嗛珮搴�2锛�',
-          intervalFrameHeightbThree: '闂撮殧妗嗛珮搴�3锛�',
-          intervalFrameHeightbFour:  '闂撮殧妗嗛珮搴�4锛�',
-          intervalFrameTypeOne: '闂撮殧妗嗙被鍨�1',
-          intervalFrameTypeTwo: '闂撮殧妗嗙被鍨�2',
-          intervalFrameTypeThree: '闂撮殧妗嗙被鍨�3',
-          intervalFrameTypeFour: '闂撮殧妗嗙被鍨�4',
-          intervalFrameTypecOne: '璇烽�夋嫨闂撮殧妗嗙被鍨�1',
-          intervalFrameTypecTwo: '璇烽�夋嫨闂撮殧妗嗙被鍨�2',
-          intervalFrameTypecThree: '璇烽�夋嫨闂撮殧妗嗙被鍨�3',
-          intervalFrameTypecFour: '璇烽�夋嫨闂撮殧妗嗙被鍨�4',
-          intervalFrameTypedOne: '闂撮殧妗嗙被鍨�1锛�',
-          intervalFrameTypedTwo: '闂撮殧妗嗙被鍨�2锛�',
-          intervalFrameTypedThree: '闂撮殧妗嗙被鍨�3锛�',
-          intervalFrameTypedFour: '闂撮殧妗嗙被鍨�4锛�',
-          intervalFrameTypea: 'tps鑳�',
-          intervalFrameTypeb: '閾濋棿闅旀潯',
-          intervalFrameWidthOne: '闂撮殧妗嗗搴�1',
-          intervalFrameWidthTwo: '闂撮殧妗嗗搴�2',
-          intervalFrameWidthThree: '闂撮殧妗嗗搴�3',
-          intervalFrameWidthFour:  '闂撮殧妗嗗搴�4',
-          intervalFrameWidthaOne: '璇疯緭鍏ラ棿闅旀瀹藉害1',
-          intervalFrameWidthaTwo: '璇疯緭鍏ラ棿闅旀瀹藉害2',
-          intervalFrameWidthaThree: '璇疯緭鍏ラ棿闅旀瀹藉害3',
-          intervalFrameWidthaFour:  '璇疯緭鍏ラ棿闅旀瀹藉害4',
-          intervalFrameWidthbOne: '闂撮殧妗嗗搴�1锛�',
-          intervalFrameWidthbTwo: '闂撮殧妗嗗搴�2锛�',
-          intervalFrameWidthbThree: '闂撮殧妗嗗搴�3锛�',
-          intervalFrameWidthbFour:  '闂撮殧妗嗗搴�4锛�',
-          sealInsert: '瀵嗗皝宓屽叆',
-          sealInsertb: '瀵嗗皝宓屽叆锛�',
-          sealInserta: '璇疯緭鍏ュ瘑灏佸祵鍏�',
-          hollowformula: '涓┖閰嶆柟',
-          hollowformuldet: '鏄惁鍒犻櫎璇ヤ腑绌洪厤鏂癸紵',
-          hollowtaskdet: '鏄惁鍒犻櫎璇ヤ换鍔★紵',
-          taskdet: '鍒犻櫎浠诲姟',
-          edithollowformula: '淇敼涓┖閰嶆柟',
-          phollowformula: '璇烽�夋嫨涓┖閰嶆柟',
-          hollowformulp: '涓┖閰嶆柟锛�',
-          bottomRemove: '涓嬩晶闄よ啘閲忥細',
-          bottomRemovep: '涓嬩晶闄よ啘閲�',
-          bottomRemovea: '璇疯緭鍏ヤ笅渚ч櫎鑶滈噺',
-          topRemove: '涓婁晶闄よ啘閲忥細',
-          topRemovep: '涓婁晶闄よ啘閲�',
-          topRemovea: '璇疯緭鍏ヤ笂渚ч櫎鑶滈噺',
-          leftRemove: '宸︿晶闄よ啘閲忥細',
-          leftRemovep: '宸︿晶闄よ啘閲�',
-          leftRemovea: '璇疯緭鍏ュ乏渚ч櫎鑶滈噺',
-          rightRemove: '鍙充晶闄よ啘閲忥細',
-          rightRemovep: '鍙充晶闄よ啘閲�',
-          rightRemovea: '璇疯緭鍏ュ彸渚ч櫎鑶滈噺',
-          formulaNamep: '閰嶆柟鍚�',
-          formulaName: '閰嶆柟鍚嶏細',
-          formulaNamea: '璇疯緭鍏ラ厤鏂瑰悕',
-          stopproject: '鏆傚仠浠诲姟',
-          pstopproject: '鏄惁鏆傚仠浠诲姟锛�',
-          reviewproject: '棰勮宸ョ▼',
-          line: '绾胯矾',
-          linea: '绾胯矾锛�',
-          line1: '绾胯矾涓�',
-          line2: '绾胯矾浜�',
-          line3: '绾胯矾涓�',
-          createtask: '鍒涘缓浠诲姟',
-          starttask: '寮�濮嬩换鍔�',
-          pstarttask: '鏄惁寮�濮嬩换鍔★紵',
-          stoptask: '鍋滄浠诲姟',
-          pstoptask: '鏄惁鍋滄浠诲姟锛�',
-          currenttask: '褰撳墠浠诲姟锛�',
-          claimednumber: '宸查鍙栭厤瀵规暟閲忥細',
-          linenumber: '杩涘叆涓┖绾挎暟閲忥細',
-          order: '鍑虹墖椤哄簭',
-          flowCardId: '娴佺▼鍗�',
-          thickness: '鍘氬害',
-          coatingtypes: '鑶滅郴',
-          layer: '灞傛暟',
-          height: '闀�',
-          width: '瀹�',
-          state: '鐘舵��',
-          cardnumber: '娴佺▼鍗″彿',
-          cardnumbera: '娴佺▼鍗″彿锛�',
-          layernumber: '灞傚彿',
-          totalnumber: '鎬荤墖鏁�',
-          pairsnumber: '宸查厤瀵规暟閲�',
-          missingnumber: '缂虹墖鏁伴噺',
-          damagenumber: '鐮存崯鏁伴噺',
-          operate: '鎿嶄綔',
-          claimquest: '棰嗗彇浠诲姟',
-          pclaimquest: '鏄惁棰嗗彇浠诲姟锛�',
-          missingfilms: '缂虹墖璇︽儏',
-          forcedfilming: '寮哄埗鍑虹墖',
-          pforcedfilming: '鏄惁寮哄埗鍑虹墖锛�',
-          brokenpieces: '鐮存崯鐗囨暟',
-          realpieces: '瀹為檯鐗囨暟',
-          route: '璺嚎锛�',
-          croute: '璇烽�夋嫨璺嚎',
-          ptotalpairQuantity: '鎬婚厤瀵规暟閲忥細',
-          cpairQuantity: '璇疯緭鍏ユ�婚厤瀵规暟閲�',
-          schedulingswitch: '璋冨害寮�鍏�',
-      },
-    screendisplay:{
+    login: {
+        userErr: 'Please enter account number',
+        pwErr: 'Please input a password',
+        user: 'Account number',
+        password: 'Password',
+        login: 'Log on',
+        loginSuccessful: 'Log on was successful锛�',
+        register: 'Register',
+        namea: 'Name cannot be empty',
+        len: 'The length cannot exceed 16',
+        passnull: 'Password cannot be empty',
+        leng: 'The password length cannot be less than 6 or more than 16',
+        spwn: 'Confirm password cannot be empty',
+        depass: 'The two passwords are not the same',
+    },
+    register: {
+        registerSuccessful: 'login was successful',
+        newuserregister: 'New user register',
+        name: 'Full name锛�',
+        inputname: 'Please enter your name',
+        password: 'Password:',
+        pwErr: 'Please input a password',
+        passwordation: 'Confirm password:',
+        pwErration: 'Please confirm password',
+        registration: 'Registration Confirm',
+        false: 'Cancel',
+    },
+    main: {
+        connectErr: 'The server connection is abnormal. Please try again later',
+        titleFirst: "Welcome ",
+        titleLast: ' to use NorthGlass MES system锛�',
+        quit: "Exit",
+    },
+    basicData: {
+        untask: '鏃犱换鍔�',
+        tonumber: '涓婄墖鎬绘暟閲�',
+        finishnumber: '宸插畬鎴愭暟閲�',
+        rackreset: '鏋跺瓙澶嶄綅',
+        prackreset: '鏄惁鏋跺瓙澶嶄綅锛�',
+        printing: '鑷姩鎵撳嵃',
+        laserprinting: 'Laser printing machine ready status锛�',
+        cuttingmachine: 'Cutting machine ready status锛�',
+        machine: 'Online status of the loading table锛�',
+        machineaa: 'Manual state of the loading table锛�',
+        selectproject: "Select project",
+        startloading: 'Start loading',
+        stop: 'Pause',
+        yes: 'Confirm',
+        change: 'Switch',
+        projectnumber: 'Project number',
+        glasswidth: 'Glass width',
+        glassheight: 'Glass height',
+        coatingtypes: 'Coating types',
+        coatingtypesa: 'Coating types锛�',
+        quantity: 'Quantity',
+        quantitya: 'Quantity锛�',
+        thickness: 'Thickness',
+        thicknessa: 'Thickness锛�',
+        startstatus: 'Start status',
+        pass: 'Pass',
+        waiting: 'Waiting',
+        up: 'Loading',
+        finish: 'Completed',
+        project: 'Project ',
+        plselectproject: 'Please select project',
+        confirm: 'Confirm',
+        cancel: 'Cancel',
+        startfilm: 'Whether start loading锛�',
+        whetherpause: 'Whether pause锛�',
+        station: 'Station',
+        width: 'Width',
+        widtha: 'Width锛�',
+        height: 'Height',
+        heighta: 'Height锛�',
+        operate: 'Operate',
+        add: 'Increase',
+        delete: 'Delete',
+        addglass: 'Add glass',
+        selectwidth: 'Please select width',
+        selectheight: 'Please select high',
+        selectcoatingtypes: 'Please select the coating types',
+        selectthickness: 'Please select thickness',
+        selectquantity: 'Please enter the quantity',
+        pause: 'The height of the second and fourth rows must be greater than 2700 in order to save锛�',
+        pausea: 'Please confirm the ready status of marking machine and cutting machine锛�',
+        infonull: 'Project number cannot be empty锛�',
+        updatanull: 'This project has not been saved to the loading list锛�',
+        glassnull: 'An error occurred while updating the glass status',
+        deletemessage: 'Do you want to delete this message?',
+        layoutSequence: 'Serial Number',
+    },
+    sorter: {
+        onesort: '涓�绾挎幇鐗�',
+        twosort: '浜岀嚎鎺扮墖',
+        inPlace: '鍒颁綅',
+        ninPlace: '鏈埌浣�',
+        emptymissions: '绌轰换鍔�',
+        advancetask: '杩涚墖浠诲姟',
+        outputtasks: '鍑虹墖浠诲姟',
+        schedulingtasks: '璋冨害浠诲姟',
+        advancerequests: '杩涚墖璇锋眰',
+        releaserequest: '鍑虹墖璇锋眰',
+        straighttasks: '鐩撮�氫换鍔�',
+        endingtask: '缁撴潫',
+        another: '鍏朵粬',
+        taskRunning: '浠诲姟璇锋眰',
+        updateTime: '鏇存柊鏃堕棿',
+        id: '纾ㄨ竟鍓嶇悊鐗囩琛↖D',
+        remainWidth: '鍓╀綑',
+        place: '鏄惁鍒颁綅',
+        layernow: '褰撳墠灞傚彿',
+        gridnumber: 'Grid number',
+        glassnumber: 'Glass number',
+        width: 'Width',
+        height: 'Height',
+        startstatus: 'Start status',
+        disable: 'Disabled',
+        start: 'Enabled',
+        deficiencieste: 'Report deficiencies',
+        updown: 'Artificial filming',
+        operate: 'Operate',
+        prompt: 'Prompt',
+        information: 'Is the missing information reported锛�',
+        infor: 'Whether to manually download this information锛�',
+        yes: 'Yes',
+        cancel: 'Cancel',
+    },
+    order: {
+        projectnumber: '璇疯緭鍏ュ伐绋嬪彿',
+        dilapidation: 'Breakage',
+        takeaway: 'Manual removal',
+        takeawaya: '鏄惁浜哄伐鎷胯蛋璇ユ潯淇℃伅锛�',
+        takeon: 'The arrangement is complete',
+    },
+    searchOrder: {
+        furnfullTemp: '鐜荤拑鎬婚噺',
+        startCell: '鐩爣灞傚彿',
+        endCell: '棰勭暀灞傚彿',
+        begin: '寮�濮�',
+        finish: '瀹屾垚',
+        uncar: '鏈笂杞�',
+        inkage: '杩涚墖',
+        successfullyprocessed: '浠诲姟鎴愬姛澶勭悊',
+        psuccessfullyprocessed: '鏄惁杩涜浠诲姟鎴愬姛澶勭悊锛�',
+        taskfailure: '浠诲姟澶辫触澶勭悊',
+        ptaskfailure: '鏄惁杩涜浠诲姟澶辫触澶勭悊锛�',
+        totallogarithms: '鎬诲鏁�',
+        numberpairs: '閰嶅鏁�',
+        numberoccupied: '鍗犵敤鏍煎瓙鏁�',
+        totalfurnaces: '鎬荤倝鏁�',
+        cagesnumber: '绗煎唴鏁伴噺',
+        slotnumber: '鍗犳湁鏍煎瓙鏁�',
+        progress: '杩涘害%',
+        whethersame: '鏄惁鐩稿悓',
+        same: '鐩稿悓',
+        notsame: '涓嶇浉鍚�',
+        partask: '浠诲姟閲嶇疆',
+        partasks: '鏄惁浠诲姟閲嶇疆锛�',
+        empty: '榛樿绌轰换鍔�',
+        historicaltasks: '鍘嗗彶浠诲姟',
+        cagedetails: '绗煎唴璇︽儏',
+        inkageEntity: '杩涚墖鑱旀満鐘舵�侊細',
+        requestEntity: '杩涚墖璇锋眰鐘舵�侊細',
+        mesReplyEntity: '鍚姩鍛戒护锛�',
+        outInkageEntity: '鍑虹墖鑱旀満鐘舵�侊細',
+        outRequestEntity: '鍑虹墖璇锋眰鐘舵�侊細',
+        breakagn: '鏈牬鎹�',
+        lacknumber: '缂虹墖鏁伴噺',
+        processcard: '鎸囧畾娴佺▼鍗�',
+        filminformation: '浜哄伐涓嬬墖淇℃伅',
+        currentglassinformation: '鎵爜鏋綋鍓嶇幓鐠冧俊鎭�',
+        printlabels: '鎵撳嵃鏍囩',
+        deleteTask: '缁撴潫宸ョ▼',
+        pdeleteTask: '鏄惁缁撴潫宸ョ▼锛�',
+        searchlayout: 'Non-tempered process card inquiry',
+        fullfurnaces: 'Number of full furnaces',
+        specifiedproject: 'The currently specified project',
+        undesignate: '鍙栨秷閽㈠寲',
+        allnumber: 'Total quantity',
+        numbercages: 'Number of cages',
+        missingquantity: 'Missing quantity',
+        breakquantity: 'Breakage/Take Away quantity',
+        ceng: 'layer',
+        cageinformation: 'Sorter information',
+        productionqueue: 'Production queue',
+        outputglassID: 'Output glass ID',
+        startposition: 'Start position',
+        targetlocation: 'Target Position',
+        trips: 'Train number',
+        number: 'Serial Number',
+        taskstatus: 'Task state',
+        filmenter: 'Waiting for input glass',
+        infilm: 'In progress',
+        endtask: 'End task',
+        completetask: 'Complete the task',
+        intoglassid: 'Input glass ID',
+        line: 'Wire',
+        Usage: 'Usage rate',
+        free: 'Free(pieces)',
+        addcage: 'Add information on sorter',
+        glassIDa: 'Glass ID锛�',
+        glassID: 'Glass ID',
+        inglassID: 'Please enter the glass ID',
+        pieceingrid: 'The order of small pieces within the grid',
+        pieceingrida: 'The order of small pieces within the grid锛�',
+        inpieceingrid: 'Please enter the order of small pieces within the grid',
+        cardnumber: 'Process card number',
+        cardnumbera: 'Process card number锛�',
+        incardnumber: 'Please enter the process card number',
+        typeglass: 'Glass type',
+        typeglassa: 'Glass type锛�',
+        intypeglass: 'Please enter the glass type',
+        width: 'Width',
+        widtha: 'Width锛�',
+        inwidth: 'Please enter width',
+        height: 'Height',
+        heighta: 'Height锛�',
+        inheight: 'Please enter height',
+        coatingtypes: 'Coating types',
+        thickness: 'Thickness',
+        thicknessa: 'Thickness锛�',
+        inthickness: 'Please enter the thickness',
+        layoutID: 'Drawing ID of loading for tempering furnace',
+        layoutIDa: 'Drawing ID of loading for tempering furnace锛�',
+        inlayoutID: 'Please enter the drawing ID of loading for tempering furnace',
+        picturesequence: 'Drawing sequence of loading for tempering furnace',
+        picturesequencea: 'Drawing sequence of loading for tempering furnace锛�',
+        inpicturesequence: 'Please enter the drawing sequence of loading for tempering furnace',
+        startstatus: 'Start status',
+        startstatusa: 'Start status锛�',
+        instartstatus: 'Please enter the enabled status',
+        glassgaps: 'Glass gap',
+        glassgapsa: 'Glass gap锛�',
+        inglassgaps: 'Please enter the glass gap',
+        sure: 'Confirm',
+        cancel: 'Cancel',
+        operate: 'Operate',
+        breakage: 'Breakage',
+        delete: 'Delete',
+        outfilm: 'Output glass',
+        cagetableID: 'Sorter table ID',
+        cagenumber: 'Sorter number',
+        gridnumber: 'Grid number',
+        gridnumbera: 'Grid number锛�',
+        grid: 'Please enter a grid number',
+        enable: 'Enabled',
+        disable: 'Disabled',
+        remainingwidth: 'Remaining width',
+        add: 'Add',
+        sheetID: 'Tempered small piece information table ID',
+        processcards: 'Process card',
+        processcardtype: 'Process card glass type',
+        acceptshorizontal: 'Does tempering accept horizontal placement',
+        xcoordinates: 'x coordinate',
+        ycoordinates: 'Y coordinate',
+        rotationangle: 'Rotation angle (counterclockwise)',
+        state: 'Status',
+        takeout: 'Take away',
+        deletemessage: 'Do you want to delete this message?',
+        prompt: 'Prompt',
+        yes: 'Yes',
+        accept: 'Accept',
+        noaccept: 'Not accept',
+        filmcomplete: 'Glass output completed',
+        waiting: 'Waiting',
+        broke: 'Is this information damaged锛�',
+        brokeb: 'Do you need to delete the message锛�',
+        outfil: 'Whether the film is released or not锛�',
+        inputid: 'Please enter the glass ID',
+        search: 'Search',
+        tabid: 'Dali film cage details table ID',
+        tid: 'Device ID',
+        tida: 'Device ID锛�',
+        fin: 'Whether or not the task was completed锛�',
+        sureadd: 'Confirm the addition',
+        sureadda: 'Whether to confirm the addition锛�',
+        zailong: 'In a cage',
+        rengongxp: 'Artificial filming',
+        up: 'Previous',
+        down: 'Next',
+        now: 'The current page is displayed',
+        tit: 'data',
+        temperingqueries: 'Tempering queries',
+        specifytempering: 'Specify a furnace',
+        specifyout: '鎸囧畾浜哄伐鍑虹墖',
+        specifyengineerid: 'Specify the project',
+        projectnumber: 'Project number',
+        layoutnumber: 'Drawing number of loading for tempering furnace',
+        numberglasses: 'Number of glasses',
+        specifytemperinga: '璇风‘璁よ澶囨槸鍚﹀凡鍏抽棴MES鑱旀満锛�',
+        temperedswitch: 'Tempered switch',
+        dutyinformation: 'Duty information',
+        process: 'Process',
+        team: 'Team',
+        basic: 'equipment',
+        makesure: 'Confirm the save',
+        temperingtotal: 'Number of tempering furnaces锛�',
+        glasstotal: 'Total number of glasses锛�',
+        Labelprinting: '鏍囩鎵撳嵃',
+        Schedulingswitch: '璋冨害寮�鍏�',
+    },
+    workOrder: {
+        upnumber: '涓婄墖浣嶇紪鍙�',
+        coatingtypesbe: '鍘熺墖鑶滅郴',
+        glassID: 'Glass ID',
+        height: 'Height',
+        width: 'Width',
+        thickness: 'Thickness',
+        coatingtypes: 'Coating types',
+        productionsequence: 'Production sequence',
+        cardnumber: 'Process card number',
+        operate: 'Operate',
+        messagedamaged: 'Is this information damaged?',
+        prompt: 'Prompt',
+        yes: 'Yes',
+        cancel: 'Cancel',
+        takemessage: 'Do you need to delete the message锛�',
+        breakage: 'Breakage',
+        takeout: 'Take away',
+        glasstype: 'Glass type',
+        line: 'Wire',
+        status: 'Status',
+        time: 'Time period',
+        cway: 'Please select a route',
+        cstate: 'Please select a status',
+        edgingone: 'Edging a line',
+        edgingtwo: 'Edging two lines',
+        nedging: 'Unedging',
+        edging: 'Edging',
+        finedging: 'has been edging',
+    },
+    processCard: {
+        intofurnace: 'Entering the furnace',
+        beforefurnace: 'Before entering the furnace',
+        outfurnace: 'Glass finished from tempering furnace',
+        print: 'Take away the print',
+        printing: 'print',
+        projectnumber: 'Please enter the project number',
+        inquire: 'Inquire',
+        project: 'Project number',
+        awayprocess: 'Take away the process',
+        awayequipment: 'Take away the equipment',
+        awayteam: 'Take away the crew',
+        flowcard: 'Process card',
+        layer: 'Layer number',
+        temperinglayout: 'Heat number',
+        temperingfeed: 'Preface',
+        width: 'Width',
+        height: 'Height',
+        thickness: 'Thickness',
+        glasstakeout: 'Glass take away list',
+        layoutID: 'Drawing ID of loading for tempering furnace',
+        glassID: 'Glass ID',
+    },
+    reportWork: {
+        details: 'Drop off details',
+        filming: 'Artificial filming',
+        printing: 'Automatic printing',
+        cenumber: 'Number of layers',
+        artificialorder: 'The number of pieces under artificial order',
+        processcard: 'Print the process card',
+        printlabels: 'Print labels',
+        information: 'Landing information',
+        cstation: 'Please select a desk',
+        all: 'all',
+        timeperiod: 'Time period',
+        stationnumber: 'Station number',
+        order: 'order',
+        filminformation: 'Manual film information',
+        glassmation: 'Artificial film current glass information',
+        barcodescanner: 'The current glass information of the barcode scanner',
+        lowerbit: 'Unloading station',
+        shelfnumber: 'Rack number',
+        cardnumber: 'Process card number',
+        totalquantity: 'Total quantity',
+        beendropped: 'Quantity of unloaded glass',
+        state: 'Status',
+        devicenumber: 'Equipment No.',
+        startstatus: 'Start status',
+        enable: 'Start',
+        unenable: 'Unstart',
+        operate: 'Operate',
+        bindingshelves: 'Assigned rack',
+        clear: 'Clear',
+        workstation: 'Station No.',
+        shelfnumbera: 'Rack number锛�',
+        cardnumbera: 'Process card number锛�',
+        incardnumber: 'Please select the process card number',
+        clearglass: 'Clear the glass on the shelf',
+        sure: 'Operate',
+        cancel: 'Cancel',
+        glassinformation: 'Glass information',
+        glassID: 'Glass ID',
+        coatingtypes: 'Coating types',
+        thickness: 'Thickness',
+        width: 'Width',
+        height: 'Height',
+    },
+    productStock: {
+        configName: '閰嶇疆鍚�',
+        configCode: '閰嶇疆浠g爜',
+        configValue: '閰嶇疆鍊�',
+        addusers: 'Add user',
+        username: 'User name',
+        usernamea: 'User name锛�',
+        inusername: 'Enter one user name',
+        role: 'Role',
+        rolea: 'Role锛�',
+        inrole: 'Please select a role',
+        test: 'Test',
+        admin: 'Administrator',
+        operate: 'Operate',
+        resetpassword: 'Reset password',
+        exit: 'Edit',
+        delete: 'Delete',
+        prompt: 'Prompt',
+        repassword: 'Do you want to reset the user password锛�',
+        yes: 'Yes',
+        cancel: 'Cancel',
+        reusername: 'Modify Users',
+        addusername: 'Add user',
+        password: 'Password锛�',
+        sure: 'Confirm',
+        inpassword: 'Please input a password',
+        deusername: 'Do you want to delete the user锛�',
+    },
+    customer: {
+        addmenua: 'Add secondary menus',
+        addmenu: 'Add a first-level menu',
+        firstmenu: 'First level menu bar',
+        firstmenuname: 'The name of the first-level menu:',
+        link: 'Link',
+        inlink: 'Please enter the link',
+        linka: 'Link锛�',
+        sort: 'Sort',
+        insort: 'Please enter sorting',
+        sorta: 'Sort锛�',
+        operate: 'Operate',
+        exit: 'Edit',
+        delete: 'Delete',
+        semenu: 'Secondary menu bar',
+        semenuname: 'Secondary menu name:',
+        menu: 'Menu bar锛�',
+        inmenu: 'Please enter a menu name',
+        sure: 'Confirm',
+        cancel: 'Cancel',
+        exmene: 'Modify the first-level menu',
+        exmenea: 'Modify the secondary menu',
+        yes: 'Yes',
+        demenu: 'Do you want to delete this menu锛�',
+        prompt: 'Prompt',
+    },
+    delivery: {
+        addrole: 'Add Role',
+        editrole: 'Modify role',
+        role: 'Role',
+        rolea: 'Role锛�',
+        inrole: 'Please enter the role',
+        operate: 'Operate',
+        edit: 'Edit',
+        delete: 'Delete',
+        yes: 'Yes',
+        sure: 'Confirm',
+        cancel: 'Cancel',
+        derole: 'Do you want to delete this role',
+        prompt: 'Prompt',
+        choice: 'Menu permissions锛�',
+        inchoice: 'Please select Menu Permissions',
+    },
+    replenish: {
+        patchManagement: 'Mesh management',
+    },
+    rework: {
+        reworkManagement: 'Rework management',
+        addRework: "Rework added ",
+    },
+    role: {
+        id: 'ID',
+        characterHomepage: 'Character Home',
+    },
+    user: {
+        userId: 'User ID',
+        userHomepage: 'User Home',
+    },
+    orderBasicData: {
+        order: 'orders',
+        orderType: 'The type of order',
+    },
+    machine: {
+        basicId: 'Device number',
+        basicName: 'The name of the device',
+        basicCategory: 'The process in which it is located',
+        tempering: 'Steel',
+    },
+    report: {
+        productionReport: 'Production reports',
+        workInProgressReport: 'WIP report',
+    },
+    productionBasicData: {
+        basicDataQuery: 'Basic data query',
+    },
+    mainIngredient: {
+        materialInformation: 'Material information',
+    },
+    mainIngredientStock: {
+        materialName: 'The name of the item',
+        createTime: 'Return date',
+    },
+    large: {
+        load: 'load',
+        edg: 'edg',
+        temp: 'temp',
+        hollow: 'hollow',
+        oneFinish: 'oneFinish',
+        twoFinish: 'twoFinish',
+        oneunFinish: 'oneunFinish',
+        twounFinish: 'twounFinish',
+        ondDamage: 'ondDamage',
+        percent: 'Percent',
+        time: 'The time of the break',
+        tionnumber: 'Order number',
+        jobnumber: 'Job number',
+        productionnumber: 'The production order number',
+        cardnumber: 'Process card number',
+        projectname: 'The name of the project',
+        batch: 'batch',
+        detailID: 'Detail ID',
+        building: 'Building No',
+        serialnumber: 'Order serial number',
+        productname: 'Product name',
+        serial: 'Process validation number',
+        slicemarker: 'Frame marker (position)',
+        numberpatches: 'Number of patches',
+        width: 'Width',
+        height: 'Height',
+        shape: 'Shape',
+        responsibleprocess: 'Responsible process',
+        process: 'This process',
+        numberfractions: 'The number of unfilled fractions',
+        breakreason: 'The reason for the break',
+        breaktype: 'Sub-break type',
+        responsiblepersonnel: 'Responsible Personnel',
+        responsiblequipment: 'Responsible Equipment',
+        responsibleteam: 'Responsible team',
+        area: 'Sub-broken area',
+        inspector: 'Quality inspector',
+        operate: 'Operate',
+        mes: 'Detail',
+        projectnumber: 'The project order number',
+        brokeno: 'The report is broken and not filled',
+        close: 'Shut down',
+        orderId: 'Order ID',
+        order: '璁㈠崟璇︽儏',
+        customerName: 'The name of the customer',
+        project: 'The name of the project',
+        are: 'are',
+        quantity: 'quantity',
+        warehousing: 'State',
+        deliveryDate: 'Delivery time',
+        notstocked: 'Not yet in stock',
+        inboundstatus: 'Partial inventory status',
+        allstatus: 'All in stock status',
+        completedquantity: 'Completed quantity',
+        scrapquantity: 'Scrap Quantity',
+        number: 'Quantity',
+        method: 'Processing method',
+        innumber: 'Quantity already entered',
+        productstatus: 'Production status',
+        right: 'normal',
+        stop: 'termination',
+        inquire: 'query',
+        starttime: 'Start Time',
+        endtime: 'End Time',
+        loading: 'In the process of uploading锛�',
+        brokenNum: 'brokenNum',
+        inventory: 'inventory',
+        inventoryarea: 'inventoryarea',
+        shippedQuantity: 'shippedQuantity',
+        reportWorkQuantity: 'reportWorkQuantity',
+        reportWorkQuantityCount: 'reporting_work_num_count',
+        processId: 'processId',
+        historicaltasks1: 'historicaltasks1',
+        historicaltasks2: 'historicaltasks2',
+        historicaltasks3: 'historicaltasks3',
+        historicaltasks4: 'historicaltasks4',
+        historicaltasks5: 'historicaltasks5',
+        historicaltasks6: 'historicaltasks6',
+        historicaltasks7: 'historicaltasks7',
+        order: 'order',
+        date: 'date',
+        countOutOne: 'countOutOne',
+        totalAreaOutOne: 'totalAreaOutOne',
+        countOutTwo: 'countOutTwo',
+        totalAreaOutTwo: 'totalAreaOutTwo',
+        countIn: 'countIn',
+        totalAreaIn: 'totalAreaIn',
+        countOut: 'countOut',
+        totalAreaOut: 'totalAreaOut',
+        hollowCountOutOne: 'hollowCountOutOne',
+        hollowTotalAreaOutOne: 'hollowTotalAreaOutOne',
+        countOut: 'countOut',
+        hollowCountOutTwo: 'hollowCountOutTwo',
+    },
+    reportmanage: {
+        productiontime: 'production time',
+        starttime: 'Start Time',
+        endtime: 'End Time',
+        ctype: 'Please select type',
+        cstate: 'Please select the status',
+        cprocess: 'Please select the process',
+        all: 'All',
+        completed: 'Completed',
+        broke: 'Damaged',
+        takeout: 'Takeout',
+        dreportwork: 'Unreported work',
+        pendingwork: 'Pending job application',
+        reportwork: 'Reported work',
+        reportworked: 'Reported worked',
+        incise: 'slicing',
+        edging: 'edging',
+        steel: 'toughened',
+        inquire: 'query',
+        signingwork: 'Reporting for work',
+        reporteam: 'Report work team',
+        reportingequipment: 'Reporting equipment',
+        line: 'line',
+        process: 'production processes',
+        glassID: 'Glass ID',
+        projectnumber: 'Project number',
+        layoutID: 'Tempered layout ID',
+        type: 'type',
+        state: 'state',
+        processcards: 'Flow Card',
+        number: 'Serial Number',
+        layer: 'storey',
+        typebreakage: 'Damage type',
+        ptypebreakage: ' Please select the type of damage',
+        causebreakage: 'Reason for damage',
+        pcausebreakage: 'Please select the reason for the damage',
+        responsibleprocess: 'Responsibility Process',
+        responsiblepersonnel: 'Responsible personnel',
+        presponsiblepersonnel: 'Please enter the responsible personnel',
+        responsibleteam: 'Responsible team',
+        presponsibleteam: 'Please select the responsible team',
+        responsibleequipment: 'Responsible equipment',
+        presponsibleequipment: 'Please select the responsible device',
+        remark: 'notes',
+        premark: 'Please enter a note',
+    },
+    film: {
+        resetnumber: '鏋跺瓙鍙�',
+        fail: '澶辫触',
+        mes: 'Original film storage details',
+        warehousing: 'store',
+        pwarehousing: '鍏ュ簱璇锋眰',
+        wareout: '鍘熺墖鍑哄簱',
+        information: '鏄惁鍑哄簱璇ユ潯淇℃伅锛�',
+        pwareout: '鍑哄簱璇锋眰',
+        position: '鍚婅浣嶏細',
+        cposition: '璇烽�夋嫨鍚婅浣�',
+        position1: '鍚婅浣�1',
+        position2: '鍚婅浣�2',
+        addglass: '鍘熺墖淇℃伅',
+        operate: 'Operate',
+        exit: 'Edit',
+        delete: 'Delete',
+        outbound: 'Outbound',
+        deviceid: 'device ID',
+        enablestatea: 'Enable tagging',
+        disable: 'Disable',
+        start: 'Enable',
+        startslot: 'Start workstation',
+        endslot: 'Target workstation',
+        slotid: 'Grid ID',
+        slot: '鏍煎瓙鍙�',
+        width: 'Width',
+        widtha: 'Width锛�',
+        inwidth: 'Please enter width',
+        height: 'Height',
+        inheight: 'Please enter height',
+        heighta: 'Height锛�',
+        thickness: 'Thickness',
+        inthickness: 'Please enter thickness',
+        thicknessa: 'Thickness锛�',
+        films: 'Films',
+        infilms: 'Please enter films',
+        filmsa: 'Films锛�',
+        createtime: 'Creation time',
+        remainquantity: 'Remaining Quantity',
+        thickremainquant: 'Remaining quantity of original film (sheets)',
+        thickremainquantity: 'Remaining quantity of original film (sheets)锛�',
+        inquantity: 'Please enter the quantity',
+        quantitya: 'Number锛�',
+        enableid: 'Task ID',
+        originateslot: 'Starting grid',
+        endoriginateslot: '鐩爣鏍煎瓙',
+        patternquantity: 'Number',
+        enabletype: 'Task Type',
+        enablestate: 'Workstation status',
+        finish: 'Completed',
+        unfinish: 'Incomplete',
+        dedelete: 'Do you want to delete this content锛�',
+        dedisable: 'Do you want to disable this content锛�',
+        deoutbound: 'Whether to release the content of this item from the warehouse锛�',
+        selectwarehousing: 'Please select the lifting position',
+        inwarehousing: 'Lifting position锛�',
+        warehousing1: 'Lifting position 1',
+        warehousing2: 'Lifting position 2',
+        starttime: 'Start Time',
+        endtime: 'End Time',
+        taskstatus: 'Status',
+        built: 'newly built',
+        execution: 'In progress',
+        tasktype: 'Task Type',
+        stocke: 'store',
+        dispatch: 'dispatch',
+        inquire: 'query',
+        station: 'station',
+    },
+    Mounting: {
+        previewproject: 'Select Preview Project',
+        loadinglinea: 'Upper film line',
+        loadingline: 'Upper film line锛�',
+        inloadingline: 'Please select the upper film line',
+        oneloadingline: 'Line 1 on film',
+        twoloadingline: 'Line 2 on film',
+        waiting: 'Waiting',
+        pass: 'Pass',
+        setparameters: 'Set parameters',
+        project: 'Project number',
+        projecta: 'Project number锛�',
+        width: 'Width',
+        height: 'Height',
+        thickness: 'Thickness',
+        projectnumber: 'Project original piece number',
+        state: 'state',
+        createtime: 'Creation time',
+        all: 'Select All',
+        removalmethod: '璇烽�夋嫨闄よ啘鏂瑰紡',
+        removalmethodp: '闄よ啘鏂瑰紡',
+        removalmethoda: '闄よ啘鏂瑰紡锛�',
+        noremoval: '涓嶉櫎鑶�',
+        removal: '闄よ啘',
+        coarselyground: '绮楃(',
+        finegrinding: '绮剧(',
+    },
+    hellow: {
+        totalPairQuantitya: '浠诲姟鎬婚厤瀵规暟',
+        pairQuantitya: '宸插嚭閰嶅鏁�',
+        waitingout: '绛夊緟鍑虹墖',
+        finishout: '鍑虹墖瀹屾垚',
+        hollowSequence: '涓┖椤哄簭',
+        isPair: '鏄惁閰嶅',
+        no: '鍚�',
+        listFormula: '閰嶆柟淇℃伅',
+        HollowGlass: '闃熷垪淇℃伅',
+        totalLayer: '鎬诲眰鏁�',
+        totalPairQuantity: '鎬婚厤瀵规暟閲�',
+        pairQuantity: '宸插畬鎴愰厤瀵规暟閲�',
+        isForceList: '鏄惁寮哄埗',
+        yesisForceList: '寮哄埗',
+        noisForceList: '闈炲己鍒�',
+        hollowCountOutOne: '涓┖涓�绾跨幓鐠冩暟閲�',
+        hollowCountOutTwo: '涓┖浜岀嚎鐜荤拑鏁伴噺',
+        hollowTotalAreaOutOne: '涓┖涓�绾跨幓鐠冮潰绉�',
+        hollowTotalAreaOutTwo: '涓┖浜岀嚎鐜荤拑闈㈢Н',
+        countIn: '閽㈠寲鍓嶅ぇ鐞嗙墖绗肩幓鐠冩暟閲�',
+        countOut: '閽㈠寲鐜荤拑鏁伴噺',
+        countOutOne: '鍒囧壊涓�绾跨幓鐠冩暟閲�',
+        countOutTwo: '鍒囧壊浜岀嚎鐜荤拑鏁伴噺',
+        totalAreaIn: '閽㈠寲鍓嶅ぇ鐞嗙墖绗肩幓鐠冮潰绉�',
+        totalAreaOut: '閽㈠寲鐜荤拑闈㈢Н',
+        totalAreaOutOne: '鍒囧壊涓�绾跨幓鐠冮潰绉�',
+        totalAreaOutTwo: '鍒囧壊浜岀嚎鐜荤拑闈㈢Н',
+        freeone: '涓�绾跨┖闂茬姸鎬侊細',
+        freetwo: '浜岀嚎绌洪棽鐘舵�侊細',
+        freethree: '涓夌嚎绌洪棽鐘舵�侊細',
+        casFour: '姘斾綋4',
+        casFourb: '姘斾綋4锛�',
+        casFoura: '璇烽�夋嫨姘斾綋4',
+        casOne: '姘斾綋1',
+        casOneb: '姘斾綋1锛�',
+        casOnea: '璇烽�夋嫨姘斾綋1',
+        casThree: '姘斾綋3',
+        casThreeb: '姘斾綋3锛�',
+        casThreea: '璇烽�夋嫨姘斾綋3',
+        casTwo: '姘斾綋2',
+        casTwob: '姘斾綋2锛�',
+        casTwoa: '璇烽�夋嫨姘斾綋2',
+        Y: '鏈�',
+        F: '鏃�',
+        frameFour: '闂撮殧鏉�4',
+        frameFourb: '闂撮殧鏉�4锛�',
+        frameFoura: '璇疯緭鍏ラ棿闅旀澘4',
+        frameOne: '闂撮殧鏉�1',
+        frameOneb: '闂撮殧鏉�1锛�',
+        frameOnea: '璇疯緭鍏ラ棿闅旀澘1',
+        frameThree: '闂撮殧鏉�3',
+        frameThreeb: '闂撮殧鏉�3锛�',
+        frameThreea: '璇疯緭鍏ラ棿闅旀澘3',
+        frameTwo: '闂撮殧鏉�2',
+        frameTwob: '闂撮殧鏉�2锛�',
+        frameTwoa: '璇疯緭鍏ラ棿闅旀澘2',
+        intervalFrameHeightOne: '闂撮殧妗嗛珮搴�1',
+        intervalFrameHeightTwo: '闂撮殧妗嗛珮搴�2',
+        intervalFrameHeightThree: '闂撮殧妗嗛珮搴�3',
+        intervalFrameHeightFour: '闂撮殧妗嗛珮搴�4',
+        intervalFrameHeightaOne: '璇疯緭鍏ラ棿闅旀楂樺害1',
+        intervalFrameHeightaTwo: '璇疯緭鍏ラ棿闅旀楂樺害2',
+        intervalFrameHeightaThree: '璇疯緭鍏ラ棿闅旀楂樺害3',
+        intervalFrameHeightaFour: '璇疯緭鍏ラ棿闅旀楂樺害4',
+        intervalFrameHeightbOne: '闂撮殧妗嗛珮搴�1锛�',
+        intervalFrameHeightbTwo: '闂撮殧妗嗛珮搴�2锛�',
+        intervalFrameHeightbThree: '闂撮殧妗嗛珮搴�3锛�',
+        intervalFrameHeightbFour: '闂撮殧妗嗛珮搴�4锛�',
+        intervalFrameTypeOne: '闂撮殧妗嗙被鍨�1',
+        intervalFrameTypeTwo: '闂撮殧妗嗙被鍨�2',
+        intervalFrameTypeThree: '闂撮殧妗嗙被鍨�3',
+        intervalFrameTypeFour: '闂撮殧妗嗙被鍨�4',
+        intervalFrameTypecOne: '璇烽�夋嫨闂撮殧妗嗙被鍨�1',
+        intervalFrameTypecTwo: '璇烽�夋嫨闂撮殧妗嗙被鍨�2',
+        intervalFrameTypecThree: '璇烽�夋嫨闂撮殧妗嗙被鍨�3',
+        intervalFrameTypecFour: '璇烽�夋嫨闂撮殧妗嗙被鍨�4',
+        intervalFrameTypedOne: '闂撮殧妗嗙被鍨�1锛�',
+        intervalFrameTypedTwo: '闂撮殧妗嗙被鍨�2锛�',
+        intervalFrameTypedThree: '闂撮殧妗嗙被鍨�3锛�',
+        intervalFrameTypedFour: '闂撮殧妗嗙被鍨�4锛�',
+        intervalFrameTypea: 'tps鑳�',
+        intervalFrameTypeb: '閾濋棿闅旀潯',
+        intervalFrameWidthOne: '闂撮殧妗嗗搴�1',
+        intervalFrameWidthTwo: '闂撮殧妗嗗搴�2',
+        intervalFrameWidthThree: '闂撮殧妗嗗搴�3',
+        intervalFrameWidthFour: '闂撮殧妗嗗搴�4',
+        intervalFrameWidthaOne: '璇疯緭鍏ラ棿闅旀瀹藉害1',
+        intervalFrameWidthaTwo: '璇疯緭鍏ラ棿闅旀瀹藉害2',
+        intervalFrameWidthaThree: '璇疯緭鍏ラ棿闅旀瀹藉害3',
+        intervalFrameWidthaFour: '璇疯緭鍏ラ棿闅旀瀹藉害4',
+        intervalFrameWidthbOne: '闂撮殧妗嗗搴�1锛�',
+        intervalFrameWidthbTwo: '闂撮殧妗嗗搴�2锛�',
+        intervalFrameWidthbThree: '闂撮殧妗嗗搴�3锛�',
+        intervalFrameWidthbFour: '闂撮殧妗嗗搴�4锛�',
+        sealInsert: '瀵嗗皝宓屽叆',
+        sealInsertb: '瀵嗗皝宓屽叆锛�',
+        sealInserta: '璇疯緭鍏ュ瘑灏佸祵鍏�',
+        hollowformula: '涓┖閰嶆柟',
+        hollowformuldet: '鏄惁鍒犻櫎璇ヤ腑绌洪厤鏂癸紵',
+        hollowtaskdet: '鏄惁鍒犻櫎璇ヤ换鍔★紵',
+        taskdet: '鍒犻櫎浠诲姟',
+        edithollowformula: '淇敼涓┖閰嶆柟',
+        phollowformula: '璇烽�夋嫨涓┖閰嶆柟',
+        hollowformulp: '涓┖閰嶆柟锛�',
+        bottomRemove: '涓嬩晶闄よ啘閲忥細',
+        bottomRemovep: '涓嬩晶闄よ啘閲�',
+        bottomRemovea: '璇疯緭鍏ヤ笅渚ч櫎鑶滈噺',
+        topRemove: '涓婁晶闄よ啘閲忥細',
+        topRemovep: '涓婁晶闄よ啘閲�',
+        topRemovea: '璇疯緭鍏ヤ笂渚ч櫎鑶滈噺',
+        leftRemove: '宸︿晶闄よ啘閲忥細',
+        leftRemovep: '宸︿晶闄よ啘閲�',
+        leftRemovea: '璇疯緭鍏ュ乏渚ч櫎鑶滈噺',
+        rightRemove: '鍙充晶闄よ啘閲忥細',
+        rightRemovep: '鍙充晶闄よ啘閲�',
+        rightRemovea: '璇疯緭鍏ュ彸渚ч櫎鑶滈噺',
+        formulaNamep: '閰嶆柟鍚�',
+        formulaName: '閰嶆柟鍚嶏細',
+        formulaNamea: '璇疯緭鍏ラ厤鏂瑰悕',
+        stopproject: '鏆傚仠浠诲姟',
+        pstopproject: '鏄惁鏆傚仠浠诲姟锛�',
+        reviewproject: '棰勮宸ョ▼',
+        line: '绾胯矾',
+        linea: '绾胯矾锛�',
+        line1: '绾胯矾涓�',
+        line2: '绾胯矾浜�',
+        line3: '绾胯矾涓�',
+        createtask: '鍒涘缓浠诲姟',
+        starttask: '寮�濮嬩换鍔�',
+        pstarttask: '鏄惁寮�濮嬩换鍔★紵',
+        stoptask: '鍋滄浠诲姟',
+        pstoptask: '鏄惁鍋滄浠诲姟锛�',
+        currenttask: '褰撳墠浠诲姟锛�',
+        claimednumber: '宸查鍙栭厤瀵规暟閲忥細',
+        linenumber: '杩涘叆涓┖绾挎暟閲忥細',
+        order: '鍑虹墖椤哄簭',
+        flowCardId: '娴佺▼鍗�',
+        thickness: '鍘氬害',
+        coatingtypes: '鑶滅郴',
+        layer: '灞傛暟',
+        height: '闀�',
+        width: '瀹�',
+        state: '鐘舵��',
+        cardnumber: '娴佺▼鍗″彿',
+        cardnumbera: '娴佺▼鍗″彿锛�',
+        layernumber: '灞傚彿',
+        totalnumber: '鎬荤墖鏁�',
+        pairsnumber: '宸查厤瀵规暟閲�',
+        missingnumber: '缂虹墖鏁伴噺',
+        damagenumber: '鐮存崯鏁伴噺',
+        operate: '鎿嶄綔',
+        claimquest: '棰嗗彇浠诲姟',
+        pclaimquest: '鏄惁棰嗗彇浠诲姟锛�',
+        missingfilms: '缂虹墖璇︽儏',
+        forcedfilming: '寮哄埗鍑虹墖',
+        pforcedfilming: '鏄惁寮哄埗鍑虹墖锛�',
+        brokenpieces: '鐮存崯鐗囨暟',
+        realpieces: '瀹為檯鐗囨暟',
+        route: '璺嚎锛�',
+        croute: '璇烽�夋嫨璺嚎',
+        ptotalpairQuantity: '鎬婚厤瀵规暟閲忥細',
+        cpairQuantity: '璇疯緭鍏ユ�婚厤瀵规暟閲�',
+        schedulingswitch: '璋冨害寮�鍏�',
+    },
+    screendisplay: {
         pwidth: '璇疯緭鍏ュ搴�',
         pheight: '璇疯緭鍏ラ珮搴�',
         upnumber: '涓婄墖鏁伴噺',
     }
-  }
\ No newline at end of file
+}
\ No newline at end of file
diff --git a/UI-Project/src/lang/zh.js b/UI-Project/src/lang/zh.js
index 817731d..18b081e 100644
--- a/UI-Project/src/lang/zh.js
+++ b/UI-Project/src/lang/zh.js
@@ -511,6 +511,15 @@
           createTime :'杩斿簱鏃ユ湡',
       },
       large:{
+          load:'鍒囧壊',
+          edg:'纾ㄨ竟',
+          temp:'閽㈠寲',
+          hollow:'涓┖',
+          oneFinish:'涓�绾垮畬鎴�',
+          twoFinish:'浜岀嚎瀹屾垚',
+          oneunFinish:'涓�绾挎湭瀹屾垚',
+          twounFinish:'浜岀嚎鏈畬鎴�',
+          ondDamage:'涓�绾跨牬鎹�',
           percent:'杩涘害鐧惧垎姣�',
           time: '娆$牬鏃堕棿',
           tionnumber: '璁㈠崟鍙�',
diff --git a/UI-Project/src/views/largescreendisplay/screendisplay.vue b/UI-Project/src/views/largescreendisplay/screendisplay.vue
index f57c2f4..bbdbab3 100644
--- a/UI-Project/src/views/largescreendisplay/screendisplay.vue
+++ b/UI-Project/src/views/largescreendisplay/screendisplay.vue
@@ -1,5 +1,5 @@
 <script setup>
-import { onBeforeUnmount, onMounted, onUnmounted, ref, computed } from "vue";
+import { onBeforeUnmount, onMounted, onUnmounted, ref, computed, nextTick } from "vue";
 import { useRouter } from "vue-router"
 import { host, WebSocketHost } from '@/utils/constants'
 import request from "@/utils/request"
@@ -7,7 +7,12 @@
 import dayjs from 'dayjs';
 import { ElMessage } from 'element-plus'
 import { useI18n } from 'vue-i18n'
+import * as echarts from 'echarts';
 
+const load = ref(true)
+const edg = ref(true)
+const temp = ref(true)
+const hollow = ref(true)
 const router = useRouter()
 const blinda = ref(false)
 const blindb = ref(false)
@@ -27,6 +32,7 @@
 const edgTwoTasks = ref([])
 const engineeringOne = ref([])
 const engineeringTwo = ref([])
+
 const socketUrl1 = `ws://${WebSocketHost}:${host}/api/cacheGlass/api/talk/largenScreen`;
 const handleMessage1 = (data) => {
   edgOneTasks.value = data.edgOneTasks[0];
@@ -41,6 +47,87 @@
     numBoxes2.value = edgTwoTasks.value.length;
     boxStart2();
   }
+  const pieChartVOS = ref([]);
+  pieChartVOS.value = data.pieChartVOS[0];
+
+  let oneFinish = ref();
+  let twoFinish = ref();
+  let oneunFinish = ref();
+  let twounFinish = ref();
+  if (load.value) {
+    oneFinish = pieChartVOS.value[0].oneCompletedQuantity;
+    twoFinish = pieChartVOS.value[0].twoCompletedQuantity;
+    oneunFinish = pieChartVOS.value[0].oneUncompletedQuantity;
+    twounFinish = pieChartVOS.value[0].twoUncompletedQuantity;
+  } else {
+    oneFinish = pieChartVOS.value[0].oneCompletedArea;
+    twoFinish = pieChartVOS.value[0].twoCompletedArea;
+    oneunFinish = pieChartVOS.value[0].oneUncompletedArea;
+    twounFinish = pieChartVOS.value[0].twoUncompletedArea;
+  }
+
+  const chartDomOne = chartOne.value;
+  if (!chartDomOne) {
+    console.error('鍥捐〃瀹瑰櫒鏈壘鍒�');
+    return;
+  }
+  const myChartOne = echarts.init(chartDomOne);
+  const optionOne = {
+    title: {
+      text: t('large.load'),
+      subtext: '',
+      left: 'right'
+    },
+    tooltip: {
+      trigger: 'item'
+    },
+    legend: {
+      orient: 'vertical',
+      left: 'left'
+    },
+    series: [
+      {
+        name: '',
+        type: 'pie',
+        radius: '50%',
+        data: [
+          { value: oneFinish, name: t('large.oneFinish') },
+          { value: twoFinish, name: t('large.twoFinish') },
+          { value: oneunFinish, name: t('large.oneunFinish') },
+          { value: twounFinish, name: t('large.twounFinish') },
+        ],
+        emphasis: {
+          itemStyle: {
+            shadowBlur: 10,
+            shadowOffsetX: 0,
+            shadowColor: 'rgba(0, 0, 0, 0.5)'
+          }
+        }
+      }
+    ],
+    graphic: [
+      {
+        type: 'rect',
+        left: 'center',
+        top: 0,
+        shape: {
+          width: 80,
+          height: 30
+        },
+        style: {
+          text: load.value == true ? t('large.quantity') : t('large.are'),
+          fill: '#5470C6',
+          stroke: '#000',
+          lineWidth: 1
+        },
+        onclick: function () {
+          load.value = !load.value;
+        }
+      }
+    ]
+  };
+
+  myChartOne.setOption(optionOne);
 };
 let socket2 = null;
 const temperingTaskType = ref([])
@@ -60,29 +147,371 @@
     numBoxes4.value = 0;
   }
   temperingGlassInfoInList.value = data.temperingGlassInfoInList[0];
-  // if (numBoxes4.value != temperingGlassInfoOutList.value) {
-  //   numBoxes4.value = temperingGlassInfoOutList.value;
-  //   boxStart3();
-  // }
+  const pieChartVOS = ref([]);
+  pieChartVOS.value = data.pieChartVOS[0];
+  let oneFinish = ref();
+  let ondDamage = ref();
+  let oneunFinish = ref();
+  if (temp.value) {
+    oneFinish = pieChartVOS.value[0].oneCompletedQuantity;
+    ondDamage = pieChartVOS.value[0].oneDamageQuantity;
+    oneunFinish = pieChartVOS.value[0].oneUncompletedQuantity;
+  } else {
+    oneFinish = pieChartVOS.value[0].oneCompletedArea;
+    ondDamage = pieChartVOS.value[0].oneDamageArea;
+    oneunFinish = pieChartVOS.value[0].oneUncompletedArea;
+  }
+
+  const chartDomOne = chartThree.value;
+  if (!chartDomOne) {
+    console.error('鍥捐〃瀹瑰櫒鏈壘鍒�');
+    return;
+  }
+  const myChartOne = echarts.init(chartDomOne);
+  const optionOne = {
+    title: {
+      text: t('large.temp'),
+      subtext: '',
+      left: 'right'
+    },
+    tooltip: {
+      trigger: 'item'
+    },
+    legend: {
+      orient: 'vertical',
+      left: 'left'
+    },
+    series: [
+      {
+        name: '',
+        type: 'pie',
+        radius: '50%',
+        data: [
+          { value: oneFinish, name: t('large.oneFinish') },
+          { value: ondDamage, name: t('large.ondDamage') },
+          { value: oneunFinish, name: t('large.oneunFinish') },
+        ],
+        emphasis: {
+          itemStyle: {
+            shadowBlur: 10,
+            shadowOffsetX: 0,
+            shadowColor: 'rgba(0, 0, 0, 0.5)'
+          }
+        }
+      }
+    ],
+    graphic: [
+      {
+        type: 'rect',
+        left: 'center',
+        top: 0,
+        shape: {
+          width: 80,
+          height: 30
+        },
+        style: {
+          text: temp.value == true ? t('large.quantity') : t('large.are'),
+          fill: '#5470C6',
+          stroke: '#000',
+          lineWidth: 1
+        },
+        onclick: function () {
+          temp.value = !temp.value;
+        }
+      }
+    ]
+  };
+
+  myChartOne.setOption(optionOne);
 };
 let socket3 = null;
 const bigStorageCageUsage = ref([])
 const socketUrl3 = `ws://${WebSocketHost}:${host}/api/cacheVerticalGlass/api/talk/largenScreen`;
 const handleMessage3 = (data) => {
   bigStorageCageUsage.value = data.bigStorageCageUsage[0];
+  const pieChartVOS = ref([]);
+  pieChartVOS.value = data.pieChartVOS[0];
+  let oneFinish = ref();
+  let twoFinish = ref();
+  let oneunFinish = ref();
+  let twounFinish = ref();
+  if (edg.value) {
+    oneFinish = pieChartVOS.value[0].oneCompletedQuantity;
+    twoFinish = pieChartVOS.value[0].twoCompletedQuantity;
+    oneunFinish = pieChartVOS.value[0].oneUncompletedQuantity;
+    twounFinish = pieChartVOS.value[0].twoUncompletedQuantity;
+  } else {
+    oneFinish = pieChartVOS.value[0].oneCompletedArea;
+    twoFinish = pieChartVOS.value[0].twoCompletedArea;
+    oneunFinish = pieChartVOS.value[0].oneUncompletedArea;
+    twounFinish = pieChartVOS.value[0].twoUncompletedArea;
+  }
+
+  const chartDomOne = chartTwo.value;
+  if (!chartDomOne) {
+    console.error('鍥捐〃瀹瑰櫒鏈壘鍒�');
+    return;
+  }
+  const myChartOne = echarts.init(chartDomOne);
+  const optionOne = {
+    title: {
+      text: t('large.edg'),
+      subtext: '',
+      left: 'right'
+    },
+    tooltip: {
+      trigger: 'item'
+    },
+    legend: {
+      orient: 'vertical',
+      left: 'left'
+    },
+    series: [
+      {
+        name: '',
+        type: 'pie',
+        radius: '50%',
+        data: [
+          { value: oneFinish, name: t('large.oneFinish') },
+          { value: twoFinish, name: t('large.twoFinish') },
+          { value: oneunFinish, name: t('large.oneunFinish') },
+          { value: twounFinish, name: t('large.twounFinish') },
+        ],
+        emphasis: {
+          itemStyle: {
+            shadowBlur: 10,
+            shadowOffsetX: 0,
+            shadowColor: 'rgba(0, 0, 0, 0.5)'
+          }
+        }
+      }
+    ],
+    graphic: [
+      {
+        type: 'rect',
+        left: 'center',
+        top: 0,
+        shape: {
+          width: 80,
+          height: 30
+        },
+        style: {
+          text: edg.value == true ? t('large.quantity') : t('large.are'),
+          fill: '#5470C6',
+          stroke: '#000',
+          lineWidth: 1
+        },
+        onclick: function () {
+          edg.value = !edg.value;
+        }
+      }
+    ]
+  };
+
+  myChartOne.setOption(optionOne);
 };
 let socket4 = null;
 const hollowBigStorageCageUsage = ref([])
 const socketUrl4 = `ws://${WebSocketHost}:${host}/api/hollowGlass/api/talk/largenScreen`;
 const handleMessage4 = (data) => {
   hollowBigStorageCageUsage.value = data.hollowBigStorageCageUsage[0];
+  const pieChartVOS = ref([]);
+  pieChartVOS.value = data.pieChartVOS[0];
+  let oneFinish = ref();
+  let twoFinish = ref();
+  let oneunFinish = ref();
+  let twounFinish = ref();
+  if (hollow.value) {
+    oneFinish = pieChartVOS.value[0].oneCompletedQuantity;
+    twoFinish = pieChartVOS.value[0].twoCompletedQuantity;
+    oneunFinish = pieChartVOS.value[0].oneUncompletedQuantity;
+    twounFinish = pieChartVOS.value[0].twoUncompletedQuantity;
+  } else {
+    oneFinish = pieChartVOS.value[0].oneCompletedArea;
+    twoFinish = pieChartVOS.value[0].twoCompletedArea;
+    oneunFinish = pieChartVOS.value[0].oneUncompletedArea;
+    twounFinish = pieChartVOS.value[0].twoUncompletedArea;
+  }
+
+  const chartDomOne = chartFour.value;
+  if (!chartDomOne) {
+    console.error('鍥捐〃瀹瑰櫒鏈壘鍒�');
+    return;
+  }
+  const myChartOne = echarts.init(chartDomOne);
+  const optionOne = {
+    title: {
+      text: t('large.hollow'),
+      subtext: '',
+      left: 'right'
+    },
+    tooltip: {
+      trigger: 'item'
+    },
+    legend: {
+      orient: 'vertical',
+      left: 'left'
+    },
+    series: [
+      {
+        name: '',
+        type: 'pie',
+        radius: '50%',
+        data: [
+          { value: oneFinish, name: t('large.oneFinish') },
+          { value: twoFinish, name: t('large.twoFinish') },
+          { value: oneunFinish, name: t('large.oneunFinish') },
+          { value: twounFinish, name: t('large.twounFinish') },
+        ],
+        emphasis: {
+          itemStyle: {
+            shadowBlur: 10,
+            shadowOffsetX: 0,
+            shadowColor: 'rgba(0, 0, 0, 0.5)'
+          }
+        }
+      }
+    ],
+    graphic: [
+      {
+        type: 'rect',
+        left: 'center',
+        top: 0,
+        shape: {
+          width: 80,
+          height: 30
+        },
+        style: {
+          text: hollow.value == true ? t('large.quantity') : t('large.are'),
+          fill: '#5470C6',
+          stroke: '#000',
+          lineWidth: 1
+        },
+        onclick: function () {
+          hollow.value = !hollow.value;
+        }
+      }
+    ]
+  };
+
+  myChartOne.setOption(optionOne);
 };
 let socket5 = null;
 const productionVO = ref([])
 const socketUrl5 = `ws://${WebSocketHost}:${host}/api/cacheGlass/api/talk/largenScreenProduction`;
 const handleMessage5 = (data) => {
-  productionVO.value = data.productionVO;
+  productionVO.value = data.productionVO[0];
+  // 灏嗗師濮嬫暟鎹浆鎹负 ECharts 鍥捐〃鎵�闇�鏍煎紡
+  categories = productionVO.value.map(item => item.date); // 鑾峰彇鏃ユ湡浣滀负 x 杞�
+  totalAreaOutOne = productionVO.value.map(item => item.totalAreaOutOne);
+  countIn = productionVO.value.map(item => item.countIn);
+  totalAreaOutTwo = productionVO.value.map(item => item.totalAreaOutTwo);
+  totalAreaOut = productionVO.value.map(item => item.totalAreaOut);
+  countOut = productionVO.value.map(item => item.countOut);
+  hollowTotalAreaOutTwo = productionVO.value.map(item => item.hollowTotalAreaOutTwo);
+  hollowCountOutOne = productionVO.value.map(item => item.hollowCountOutOne);
+  countOutTwo = productionVO.value.map(item => item.countOutTwo);
+  hollowCountOutTwo = productionVO.value.map(item => item.hollowCountOutTwo);
+  hollowTotalAreaOutOne = productionVO.value.map(item => item.hollowTotalAreaOutOne);
+  totalAreaIn = productionVO.value.map(item => item.totalAreaIn);
+  countOutOne = productionVO.value.map(item => item.countOutOne);
+  //鍥捐〃
+  nextTick() // 纭繚 DOM 鍔犺浇瀹屾垚
+  const chartDom = chartRef.value;
+  if (!chartDom) {
+    console.error('鍥捐〃瀹瑰櫒鏈壘鍒�');
+    return;
+  }
+
+  const myChart = echarts.init(chartDom);
+
+
+  const option = {
+    title: { text: '' },
+    tooltip: { trigger: 'axis' },
+    legend: {
+      data: [
+        t('large.countOutOne'),
+        t('large.totalAreaOutOne'),
+        t('large.countOutTwo'),
+        t('large.totalAreaOutTwo'),
+        t('large.countIn'),
+        t('large.totalAreaIn')
+      ]
+    },
+    grid: { left: '3%', right: '4%', bottom: '3%', containLabel: true },
+    toolbox: { feature: { saveAsImage: {} } },
+    xAxis: {
+      type: 'category',
+      boundaryGap: false,
+      data: categories // 杩欐槸鏃ユ湡鏁版嵁
+    },
+    yAxis: { type: 'value' },
+    series: [
+      { name: t('large.countOutOne'), type: 'bar', data: countOutOne },
+      { name: t('large.totalAreaOutOne'), type: 'bar', data: totalAreaOutOne },
+      { name: t('large.countOutTwo'), type: 'bar', data: countOutTwo },
+      { name: t('large.totalAreaOutTwo'), type: 'bar', data: totalAreaOutTwo },
+      { name: t('large.countIn'), type: 'bar', data: countIn },
+      { name: t('large.totalAreaIn'), type: 'bar', data: totalAreaIn }
+    ]
+  };
+
+  myChart.setOption(option);
+
+  const chartDom2 = chartRef2.value;
+  if (!chartDom2) {
+    console.error('鍥捐〃瀹瑰櫒鏈壘鍒�');
+    return;
+  }
+  const myChart2 = echarts.init(chartDom2);
+  const option2 = {
+    title: { text: '' },
+    tooltip: { trigger: 'axis' },
+    legend: {
+      data: [
+        t('large.totalAreaOut'),
+        t('large.countOut'),
+        t('large.hollowTotalAreaOutOne'),
+        t('large.hollowCountOutOne'),
+        t('large.hollowCountOutTwo'),
+        t('large.hollowTotalAreaOutTwo')
+      ]
+    },
+    grid: { left: '3%', right: '4%', bottom: '3%', containLabel: true },
+    toolbox: { feature: { saveAsImage: {} } },
+    xAxis: {
+      type: 'category',
+      boundaryGap: false,
+      data: categories // 杩欐槸鏃ユ湡鏁版嵁
+    },
+    yAxis: { type: 'value' },
+    series: [
+      { name: t('large.totalAreaOut'), type: 'bar', data: totalAreaOut },
+      { name: t('large.countOut'), type: 'bar', data: countOut },
+      { name: t('large.hollowTotalAreaOutOne'), type: 'bar', data: hollowTotalAreaOutOne },
+      { name: t('large.hollowCountOutOne'), type: 'bar', data: hollowCountOutOne },
+      { name: t('large.hollowCountOutTwo'), type: 'bar', data: hollowCountOutTwo },
+      { name: t('large.hollowTotalAreaOutTwo'), type: 'bar', data: hollowTotalAreaOutTwo }
+    ]
+  };
+
+  myChart2.setOption(option2);
 };
+// 灏嗗師濮嬫暟鎹浆鎹负 ECharts 鍥捐〃鎵�闇�鏍煎紡
+let categories = ref([]); // 鑾峰彇鏃ユ湡浣滀负 x 杞�
+let totalAreaOutOne = ref([]);
+let countIn = ref([]);
+let totalAreaOutTwo = ref([]);
+let totalAreaOut = ref([]);
+let countOut = ref([]);
+let hollowTotalAreaOutTwo = ref([]);
+let hollowCountOutOne = ref([]);
+let countOutTwo = ref([]);
+let hollowCountOutTwo = ref([]);
+let hollowTotalAreaOutOne = ref([]);
+let totalAreaIn = ref([]);
+let countOutOne = ref([]);
 
 const tableDatad = ref([]);
 const patternUsage = async () => {
@@ -148,8 +577,17 @@
   blindb.value = true;
   patternUsage()
 };
+const chartRef = ref(null)
+const chartRef2 = ref(null)
+const chartOne = ref(null)
+const chartTwo = ref(null)
+const chartThree = ref(null)
+const chartFour = ref(null)
+
+
 // 鍦ㄧ粍浠舵寕杞芥椂璁剧疆榛樿鏃堕棿鑼冨洿
-onMounted(() => {
+onMounted(async () => {
+
   boxStart();
   boxStart2();
   boxStart3();
@@ -165,6 +603,7 @@
   const startTime = endTime.subtract(1, 'day').startOf('minute'); // 褰撳墠鏃堕棿鐨勫墠涓�澶╋紝绮剧‘鍒板垎閽�
   // 璁剧疆鏃堕棿鑼冨洿涓� [寮�濮嬫椂闂�, 缁撴潫鏃堕棿]
   // timeRange.value = [startTime.format('YYYY-MM-DD HH:mm:ss'), endTime.format('YYYY-MM-DD HH:mm:ss')];
+
 });
 // onMounted(() => {
 //   socket = initializeWebSocket(socketUrl, handleMessage);
@@ -187,13 +626,13 @@
 const numBoxes3 = ref(5);
 const numBoxes4 = ref(1);
 const speed = 0.1;
-const maxX = 250; // 缁堢偣X鍧愭爣
-const maxY = -90; // 缁堢偣Y鍧愭爣
+const maxX = 200; // 缁堢偣X鍧愭爣
+const maxY = -75; // 缁堢偣Y鍧愭爣
 const maxX2 = 313; // 缁堢偣X鍧愭爣
-const maxY2 = -204; // 缁堢偣Y鍧愭爣
-const maxX3 = 125; // 缁堢偣X鍧愭爣
-const maxY3 = -105; // 缁堢偣Y鍧愭爣
-const maxX4 = 80; // 缁堢偣X鍧愭爣
+const maxY2 = -165; // 缁堢偣Y鍧愭爣
+const maxX3 = 95; // 缁堢偣X鍧愭爣
+const maxY3 = -85; // 缁堢偣Y鍧愭爣
+const maxX4 = 60; // 缁堢偣X鍧愭爣
 const maxY4 = 0; // 缁堢偣Y鍧愭爣
 const delayFrames = 600; // 姣忎釜 div 鐨勫欢杩熷抚鏁�
 const boxes = ref([]);
@@ -455,179 +894,224 @@
   hollowTotalAreaOutTwo: t('large.hollowTotalAreaOutTwo'),
 };
 
+
 </script>
 <template>
   <div style="height: 500px;">
-    <el-dialog v-model="iframe1" top="5vh" width="95%" @close="iframeUrl1=''">
+    <el-dialog v-model="iframe1" top="5vh" width="95%" @close="iframeUrl1 = ''">
       <iframe :src="iframeUrl1" marginwidth="2000px" marginheight="2000px" width="100%" height="700px"
         frameborder="0"></iframe>
     </el-dialog>
-    <el-dialog v-model="iframe2" top="5vh" width="95%" @close="iframeUrl2=''">
+    <el-dialog v-model="iframe2" top="5vh" width="95%" @close="iframeUrl2 = ''">
       <iframe :src="iframeUrl2" marginwidth="2000px" marginheight="2000px" width="100%" height="700px"
         frameborder="0"></iframe>
     </el-dialog>
-    <el-dialog v-model="iframe3" top="5vh" width="95%" @close="iframeUrl3=''">
+    <el-dialog v-model="iframe3" top="5vh" width="95%" @close="iframeUrl3 = ''">
       <iframe :src="iframeUrl3" marginwidth="2000px" marginheight="2000px" width="100%" height="700"
         frameborder="0"></iframe>
     </el-dialog>
-    <el-dialog v-model="iframe4" top="5vh" width="95%" @close="iframeUrl4=''">
+    <el-dialog v-model="iframe4" top="5vh" width="95%" @close="iframeUrl4 = ''">
       <iframe :src="iframeUrl4" marginwidth="2000px" marginheight="2000px" width="100%" height="750px"
         frameborder="0"></iframe>
     </el-dialog>
-    <el-dialog v-model="iframe5" top="5vh" width="95%" @close="iframeUrl5=''">
+    <el-dialog v-model="iframe5" top="5vh" width="95%" @close="iframeUrl5 = ''">
       <iframe :src="iframeUrl5" marginwidth="2000px" marginheight="2000px" width="100%" height="750px"
         frameborder="0"></iframe>
     </el-dialog>
-    <el-dialog v-model="iframe6" top="5vh" width="95%" @close="iframeUrl6=''">
+    <el-dialog v-model="iframe6" top="5vh" width="95%" @close="iframeUrl6 = ''">
       <iframe :src="iframeUrl6" marginwidth="2000px" marginheight="2000px" width="100%" height="750px"
         frameborder="0"></iframe>
     </el-dialog>
-    <el-dialog v-model="iframe7" top="5vh" width="95%" @close="iframeUrl7=''">
+    <el-dialog v-model="iframe7" top="5vh" width="95%" @close="iframeUrl7 = ''">
       <iframe :src="iframeUrl7" marginwidth="2000px" marginheight="2000px" width="100%" height="750px"
         frameborder="0"></iframe>
     </el-dialog>
-    <el-dialog v-model="iframe8" top="5vh" width="95%" @close="iframeUrl8=''">
+    <el-dialog v-model="iframe8" top="5vh" width="95%" @close="iframeUrl8 = ''">
       <iframe :src="iframeUrl8" marginwidth="2000px" marginheight="2000px" width="100%" height="750px"
         frameborder="0"></iframe>
     </el-dialog>
-    <el-dialog v-model="iframe9" top="5vh" width="95%" @close="iframeUrl9=''">
+    <el-dialog v-model="iframe9" top="5vh" width="95%" @close="iframeUrl9 = ''">
       <iframe :src="iframeUrl9" marginwidth="2000px" marginheight="2000px" width="100%" height="750px"
         frameborder="0"></iframe>
     </el-dialog>
-    <el-dialog v-model="iframe10" top="5vh" width="95%" @close="iframeUrl10=''">
+    <el-dialog v-model="iframe10" top="5vh" width="95%" @close="iframeUrl10 = ''">
       <iframe :src="iframeUrl10" marginwidth="2000px" marginheight="2000px" width="100%" height="750px"
         frameborder="0"></iframe>
     </el-dialog>
 
     <div class="awatch" style="display: flex;">
       <!-- 鐢熶骇缁熻 -->
-      <div style="height: 100px;width: 15%;float: right;">
-        <el-table height="540" ref="table" :data="transposedData" @click="handlehistorical10"
-          :header-cell-style="{ background: '#F2F3F5', color: '#1D2129' }">
-          <el-table-column prop="name" align="center" min-width="100" />
-          <el-table-column v-for="(item, index) in productionVO" :key="index" :prop="'value' + index" align="center"
-            min-width="80" />
-        </el-table>
-        <div>
-          <el-button style="margin-top: 5px;margin-left: 5px;" id="searchButton" type="primary"
-            @click="handlehistorical1">{{
-              $t('large.historicaltasks1') }}</el-button>
-          <el-button style="margin-top: 5px;margin-left: 5px;" id="searchButton" type="primary"
-            @click="blindc=true">{{
-              $t('large.order') }}</el-button>
-          <el-button style="margin-top: 5px;margin-left: 5px;" id="searchButton" type="primary"
-            @click="handlehistorical2">{{
-              $t('large.historicaltasks2') }}</el-button>
-          <el-button style="margin-top: 5px;margin-left: 5px;" id="searchButton" type="primary"
-            @click="handlehistorical3">{{
-              $t('large.historicaltasks3') }}</el-button>
-          <el-button style="margin-top: 5px;margin-left: 5px;" id="searchButton" type="primary"
-            @click="handlehistorical4">{{
-              $t('large.historicaltasks4') }}</el-button>
-          <el-button style="margin-top: 5px;margin-left: 5px;" id="searchButton" type="primary"
-            @click="handlehistorical5">{{
-              $t('large.historicaltasks5') }}</el-button>
-          <el-button style="margin-top: 5px;margin-left: 5px;" id="searchButton" type="primary"
-            @click="handlehistorical7">{{
-              $t('large.historicaltasks7') }}</el-button>
-          <el-button style="margin-top: 5px;margin-left: 5px;" id="searchButton" type="primary"
-            @click="handlehistorical8">{{
-              $t('large.historicaltasks8') }}</el-button>
-          <el-button style="margin-top: 5px;margin-left: 5px;" id="searchButton" type="primary"
-            @click="handlehistorical6">{{
-              $t('large.historicaltasks6') }}</el-button>
-          <el-button style="margin-top: 5px;margin-left: 5px;" id="searchButton" type="primary"
-            @click="handlehistorical9">{{
-              $t('large.historicaltasks9') }}</el-button>
+      <div style="height: 100px;width: 25%;float: right;">
+        <div id="ss" style="width: 100%; display: flex; justify-content: center;">
+          <div ref="chartRef" style="width: 600px; height: 400px;"></div>
+        </div>
+        <div style="width: 100%;height: 245px;display: flex;">
+          <div ref="chartOne" style="width: 100%;"></div>
+        </div>
+        <div style="width: 100%;height: 245px;display: flex;">
+          <div ref="chartTwo" style="width: 100%;"></div>
         </div>
       </div>
-      <div class="img-screen" alt="Screen">
-        <!-- 閽㈠寲鑹插潡 -->
-        <div v-if="temperingGlassInfoInList > 0" class="tempering"
-          style="width: 55px;height: 25px;top: 359px;left: 162px;position: absolute;background-color: #911005;"></div>
-        <div v-if="temperingGlassInfoList > 0" class="tempering"
-          style="width: 66px;height: 28px;top: 355px;left: 284px;position: absolute;background-color: #911005;"></div>
-        <div v-if="temperingGlassInfoList > 1" class="tempering"
-          style="width: 66px;height: 28px;top: 355px;left: 358px;position: absolute;background-color: #911005;"></div>
-        <!-- 鍒囧壊鍙拌壊鍧� -->
-        <div v-if="engineeringOne.length > 1" class="slicing"
-          style="width: 59px;height: 29px;top: 629px;left: 562px;position: absolute;background-color: #911005;"></div>
-        <div v-if="engineeringTwo.length > 1" class="slicing"
-          style="width: 59px;height: 29px;top: 692px;left: 562px;position: absolute;background-color: #911005;"></div>
-        <!-- 鍘熺墖浠撳偍鑹插潡 -->
-        <div class="raw" style="width: 35px;height: 40px;top: 624px;left: 372px;position: absolute;">
-          <div v-for="(item, index) in rawGlassStorageDetailList.slice(0, 7)" :key="index"
-            :style='"width: " + (item.remainQuantity / 5) + "px;height: 5.6px;background-color: #911005;"'></div>
+      <div style="width: 50%;">
+        <div class="img-screen" alt="Screen">
+          <!-- 閽㈠寲鍗婇�忔槑鑹插潡 -->
+          <div style="width: 80px;height: 40px;top: 130px;left: 130px;position: absolute;background-color: rgba(0, 0, 0, 0.5);color: white;font-size: 12px;z-index: 999;">
+            <div>{{ $t('large.quantity') }}:{{ productionVO.length > 0 ? productionVO[6].countOut : 0 }}鐗�</div>
+            <div>{{ $t('large.are') }}:{{ productionVO.length > 0 ? productionVO[6].totalAreaOut : 0 }}m虏</div>
+          </div>
+          <!-- 涓┖涓�绾垮崐閫忔槑鑹插潡 -->
+          <div style="width: 80px;height: 40px;top: 315px;left: 450px;position: absolute;background-color: rgba(0, 0, 0, 0.5);color: white;font-size: 12px;z-index: 999;">
+            <div>{{ $t('large.quantity') }}:{{ productionVO.length > 0 ? productionVO[6].hollowCountOutOne : 0 }}鐗�</div>
+            <div>{{ $t('large.are') }}:{{ productionVO.length > 0 ? productionVO[6].hollowTotalAreaOutOne : 0 }}m虏</div>
+          </div>
+          <!-- 涓┖浜岀嚎鍗婇�忔槑鑹插潡 -->
+          <div style="width: 80px;height: 40px;top: 230px;left: 450px;position: absolute;background-color: rgba(0, 0, 0, 0.5);color: white;font-size: 12px;z-index: 999;">
+            <div>{{ $t('large.quantity') }}:{{ productionVO.length > 0 ? productionVO[6].hollowCountOutTwo : 0 }}鐗�</div>
+            <div>{{ $t('large.are') }}:{{ productionVO.length > 0 ? productionVO[6].hollowTotalAreaOutTwo : 0 }}m虏</div>
+          </div>
+          <!-- 鍒囧壊浜岀嚎鍗婇�忔槑鑹插潡 -->
+          <div style="width: 80px;height: 40px;top: 542px;left: 410px;position: absolute;background-color: rgba(0, 0, 0, 0.5);color: white;font-size: 12px;z-index: 999;">
+            <div>{{ $t('large.quantity') }}:{{ productionVO.length > 0 ? productionVO[6].countOutOne : 0 }}鐗�</div>
+            <div>{{ $t('large.are') }}:{{ productionVO.length > 0 ? productionVO[6].totalAreaOutOne : 0 }}m虏</div>
+          </div>
+          <!-- 鍒囧壊涓�绾垮崐閫忔槑鑹插潡 -->
+          <div style="width: 80px;height: 40px;top: 490px;left: 410px;position: absolute;background-color: rgba(0, 0, 0, 0.5);color: white;font-size: 12px;z-index: 999;">
+            <div>{{ $t('large.quantity') }}:{{ productionVO.length > 0 ? productionVO[6].countOutTwo : 0 }}鐗�</div>
+            <div>{{ $t('large.are') }}:{{ productionVO.length > 0 ? productionVO[6].totalAreaOutTwo : 0 }}m虏</div>
+          </div>
+          <!-- 纾ㄨ竟涓�绾垮崐閫忔槑鑹插潡 -->
+          <div style="width: 80px;height: 40px;top: 410px;left: 450px;position: absolute;background-color: rgba(0, 0, 0, 0.5);color: white;font-size: 12px;z-index: 999;">
+            <div>{{ $t('large.quantity') }}:{{ productionVO.length > 0 ? productionVO[6].countOutOne : 0 }}鐗�</div>
+            <div>{{ $t('large.are') }}:{{ productionVO.length > 0 ? productionVO[6].totalAreaOutOne : 0 }}m虏</div>
+          </div>
+          <!-- 纾ㄨ竟浜岀嚎鍗婇�忔槑鑹插潡 -->
+          <div style="width: 80px;height: 40px;top: 369px;left: 450px;position: absolute;background-color: rgba(0, 0, 0, 0.5);color: white;font-size: 12px;z-index: 999;">
+            <div>{{ $t('large.quantity') }}:{{ productionVO.length > 0 ? productionVO[6].countOutTwo : 0 }}鐗�</div>
+            <div>{{ $t('large.are') }}:{{ productionVO.length > 0 ? productionVO[6].totalAreaOutTwo : 0 }}m虏</div>
+          </div>
+          <!-- 閽㈠寲鍓嶅ぇ鐞嗙墖鍗婇�忔槑鑹插潡 -->
+          <div style="width: 80px;height: 40px;top: 380px;left: 290px;position: absolute;background-color: rgba(0, 0, 0, 0.5);color: white;font-size: 12px;z-index: 999;">
+            <div>{{ $t('large.quantity') }}:{{ productionVO.length > 0 ? productionVO[6].countIn : 0 }}鐗�</div>
+            <div>{{ $t('large.are') }}:{{ productionVO.length > 0 ? productionVO[6].totalAreaIn : 0 }}m虏</div>
+          </div>
+          
+          <!-- 閽㈠寲鑹插潡 -->
+          <div v-if="temperingGlassInfoInList > 0" class="tempering"
+            style="width: 44px;height: 19px;top: 284px;left: 178px;position: absolute;background-color: #911005;"></div>
+          <div v-if="temperingGlassInfoList > 0" class="tempering"
+            style="width: 53px;height: 22px;top: 282px;left: 226px;position: absolute;background-color: #911005;"></div>
+          <div v-if="temperingGlassInfoList > 1" class="tempering"
+            style="width: 53px;height: 22px;top: 282px;left: 282px;position: absolute;background-color: #911005;"></div>
+          <!-- 鍒囧壊鍙拌壊鍧� -->
+          <div v-if="engineeringOne.length > 1" class="slicing"
+            style="width: 45px;height: 20px;top: 500px;left: 496px;position: absolute;background-color: #911005;"></div>
+          <div v-if="engineeringTwo.length > 1" class="slicing"
+            style="width: 45px;height: 20px;top: 550px;left: 496px;position: absolute;background-color: #911005;"></div>
+          <!-- 鍘熺墖浠撳偍鑹插潡 -->
+          <div class="raw" style="width: 27px;height: 30px;top: 497px;left: 296px;position: absolute;">
+            <div v-for="(item, index) in rawGlassStorageDetailList.slice(0, 7)" :key="index"
+              :style='"width: " + (item.remainQuantity / 1.8) + "px;height: 5.6px;background-color: #911005;"'></div>
+          </div>
+          <div class="raw" style="width: 27px;height: 45px;top: 535px;left: 296px;position: absolute;">
+            <div v-for="(item, index) in rawGlassStorageDetailList.slice(8, 17)" :key="index"
+              :style='"width: " + (item.remainQuantity / 1.8) + "px;height: 5.6px;background-color: #911005;"'></div>
+          </div>
+          <div class="raw" style="width: 27px;height: 13px;top: 598px;left: 296px;position: absolute;">
+            <div v-for="(item, index) in rawGlassStorageDetailList.slice(18, 20)" :key="index"
+              :style='"width: " + (item.remainQuantity / 1.8) + "px;height: 5.6px;background-color: #911005;"'></div>
+          </div>
+          <div class="raw" style="width: 27px;height: 23px;top: 580px;left: 365px;position: absolute;">
+            <div v-for="(item, index) in rawGlassStorageDetailList.slice(21, 25)" :key="index"
+              :style='"width: " + (item.remainQuantity / 1.8) + "px;height: 5.6px;background-color: #911005;"'></div>
+          </div>
+          <!-- <div class="raw" style="width: 27px;height: 12px;top: 611px;left: 459px;position: absolute;">
+            <div v-for="(item, index) in rawGlassStorageDetailList.slice(26, 27)" :key="index"
+              :style='"width: " + (item.remainQuantity / 1.8) + "px;height: 5.6px;background-color: #911005;"'></div>
+          </div>
+          <div class="raw" style="width: 27px;height: 12px;top: 6676px;left: 459px;position: absolute;">
+            <div v-for="(item, index) in rawGlassStorageDetailList.slice(28, 29)" :key="index"
+              :style='"width: " + (item.remainQuantity / 1.8) + "px;height: 5.6px;background-color: #911005;"'></div>
+          </div> -->
+          <!-- 纾ㄨ竟鑹插潡 -->
+          <div class="container"
+            style="position: relative;width: 15px;height: 15px;top: 500px;left: 638px;position: absolute;">
+            <div v-for="(box, index) in boxes" :key="index" class="box" :style="box.style"></div>
+          </div>
+          <div class="container"
+            style="position: relative;width: 15px;height: 15px;top: 548px;left: 690px;position: absolute;">
+            <div v-for="(box, index) in boxes2" :key="index" class="box" :style="box.style"></div>
+          </div>
+          <!-- 閽㈠寲杩愬姩鑹插潡 -->
+          <div class="container"
+            style="position: relative;width: 15px;height: 15px;top: 370px;left: 195px;position: absolute;background-color: red;">
+            <div v-for="(box, index) in boxes3" :key="index" class="box" :style="box.style"></div>
+          </div>
+          <div class="container"
+            style="position: relative;width: 15px;height: 15px;top: 284px;left: 489px;position: absolute;">
+            <div v-for="(box, index) in boxes4" :key="index" class="box" :style="box.style"></div>
+          </div>
+          <!-- 閽㈠寲鍓嶅ぇ鐞嗙墖鑹插潡 -->
+          <div class="container" v-for="(item, index) in bigStorageCageUsage.slice(0, 1)" :key="index"
+            :style='"position: relative;width: " + (37 * item.percentage / 100) + "px;height: 13px;top: 374px;left: 309px;position: absolute;background-color: #911005;"'>
+          </div>
+          <div class="container" v-for="(item, index) in bigStorageCageUsage.slice(1, 2)" :key="index"
+            :style='"position: relative;width: " + (37 * item.percentage / 100) + "px;height: 13px;top: 390px;left: 309px;position: absolute;background-color: #911005;"'>
+          </div>
+          <div class="container" v-for="(item, index) in bigStorageCageUsage.slice(2, 3)" :key="index"
+            :style='"position: relative;width: " + (37 * item.percentage / 100) + "px;height: 13px;top: 406px;left: 309px;position: absolute;background-color: #911005;"'>
+          </div>
+          <div class="container" v-for="(item, index) in bigStorageCageUsage.slice(3, 4)" :key="index"
+            :style='"position: relative;width: " + (37 * item.percentage / 100) + "px;height: 13px;top: 422px;left: 309px;position: absolute;background-color: #911005;"'>
+          </div>
+          <!-- 涓┖鍓嶅ぇ鐞嗙墖鑹插潡 -->
+          <div class="container" v-for="(item, index) in hollowBigStorageCageUsage.slice(0, 1)" :key="index"
+            :style='"position: relative;width: " + (37 * item.percentage / 100) + "px;height: 13px;top: 265px;left: 662px;position: absolute;background-color: #911005;"'>
+          </div>
+          <div class="container" v-for="(item, index) in hollowBigStorageCageUsage.slice(1, 2)" :key="index"
+            :style='"position: relative;width: " + (37 * item.percentage / 100) + "px;height: 13px;top: 281px;left: 662px;position: absolute;background-color: #911005;"'>
+          </div>
+          <div class="container" v-for="(item, index) in hollowBigStorageCageUsage.slice(2, 3)" :key="index"
+            :style='"position: relative;width: " + (37 * item.percentage / 100) + "px;height: 13px;top: 297px;left: 662px;position: absolute;background-color: #911005;"'>
+          </div>
+          <div class="container" v-for="(item, index) in hollowBigStorageCageUsage.slice(3, 4)" :key="index"
+            :style='"position: relative;width: " + (37 * item.percentage / 100) + "px;height: 13px;top: 313px;left: 662px;position: absolute;background-color: #911005;"'>
+          </div>
+          <div class="container" v-for="(item, index) in hollowBigStorageCageUsage.slice(4, 5)" :key="index"
+            :style='"position: relative;width: " + (37 * item.percentage / 100) + "px;height: 13px;top: 329px;left: 662px;position: absolute;background-color: #911005;"'>
+          </div>
+          <div class="clickable-area" @click="handlehistorical"
+            style="position: relative;width: 108px;height: 134px;top: 478px;left: 290px;"></div>
         </div>
-        <div class="raw" style="width: 35px;height: 58px;top: 673px;left: 372px;position: absolute;">
-          <div v-for="(item, index) in rawGlassStorageDetailList.slice(8, 17)" :key="index"
-            :style='"width: " + (item.remainQuantity / 5) + "px;height: 5.6px;background-color: #911005;"'></div>
+        <div style="height: 190px;width: 100%;float: right;">
+          <el-table height="190" ref="table" :data="orderDTOS"
+            :header-cell-style="{ background: '#F2F3F5 ', color: '#1D2129' }">
+            <el-table-column prop="orderId" align="center" :label="$t('large.orderId')" min-width="50" />
+            <el-table-column prop="customerName" align="center" :show-overflow-tooltip="true"
+              :label="$t('large.customerName')" min-width="90" />
+            <el-table-column prop="project" align="center" :label="$t('large.project')" min-width="50" />
+            <el-table-column prop="area" align="center" :label="$t('large.are')" min-width="50" />
+            <el-table-column prop="quantity" align="center" :label="$t('large.quantity')" min-width="50" />
+            <el-table-column prop="percent" align="center" :label="$t('large.percent')" min-width="50" />
+            <el-table-column align="center" :label="$t('large.operate')" min-width="50">
+              <template #default="scope">
+                <el-button type="text" style="margin-left: 10px;margin-bottom: 10px;"
+                  @click="flowCardDetail(scope.row.orderId)">{{ $t('large.mes') }}</el-button>
+              </template>
+            </el-table-column>
+          </el-table>
         </div>
-        <div class="raw" style="width: 35px;height: 20px;top: 751px;left: 372px;position: absolute;">
-          <div v-for="(item, index) in rawGlassStorageDetailList.slice(18, 20)" :key="index"
-            :style='"width: " + (item.remainQuantity / 5) + "px;height: 5.6px;background-color: #911005;"'></div>
+      </div>
+
+      <div style="height: 100px;width: 25%;float: right;">
+        <div id="ss" style="width: 100%; display: flex; justify-content: center;">
+          <div ref="chartRef2" style="width: 600px; height: 400px;"></div>
         </div>
-        <div class="raw" style="width: 35px;height: 27px;top: 732px;left: 459px;position: absolute;">
-          <div v-for="(item, index) in rawGlassStorageDetailList.slice(21, 25)" :key="index"
-            :style='"width: " + (item.remainQuantity / 5) + "px;height: 5.6px;background-color: #911005;"'></div>
+        <div style="width: 100%;height: 245px;display: flex;">
+          <div ref="chartThree" style="width: 100%;"></div>
         </div>
-        <div class="raw" style="width: 35px;height: 12px;top: 611px;left: 459px;position: absolute;">
-          <div v-for="(item, index) in rawGlassStorageDetailList.slice(26, 27)" :key="index"
-            :style='"width: " + (item.remainQuantity / 5) + "px;height: 5.6px;background-color: #911005;"'></div>
+        <div style="width: 100%;height: 245px;display: flex;">
+          <div ref="chartFour" style="width: 100%;"></div>
         </div>
-        <div class="raw" style="width: 35px;height: 12px;top: 6676px;left: 459px;position: absolute;">
-          <div v-for="(item, index) in rawGlassStorageDetailList.slice(28, 29)" :key="index"
-            :style='"width: " + (item.remainQuantity / 5) + "px;height: 5.6px;background-color: #911005;"'></div>
-        </div>
-        <!-- 纾ㄨ竟鑹插潡 -->
-        <div class="container"
-          style="position: relative;width: 20px;height: 20px;top: 628px;left: 804px;position: absolute;">
-          <div v-for="(box, index) in boxes" :key="index" class="box" :style="box.style"></div>
-        </div>
-        <div class="container"
-          style="position: relative;width: 20px;height: 20px;top: 690px;left: 867px;position: absolute;">
-          <div v-for="(box, index) in boxes2" :key="index" class="box" :style="box.style"></div>
-        </div>
-        <!-- 閽㈠寲杩愬姩鑹插潡 -->
-        <div class="container"
-          style="position: relative;width: 20px;height: 20px;top: 468px;left: 250px;position: absolute;">
-          <div v-for="(box, index) in boxes3" :key="index" class="box" :style="box.style"></div>
-        </div>
-        <div class="container"
-          style="position: relative;width: 20px;height: 20px;top: 357px;left: 618px;position: absolute;">
-          <div v-for="(box, index) in boxes4" :key="index" class="box" :style="box.style"></div>
-        </div>
-        <!-- 閽㈠寲鍓嶅ぇ鐞嗙墖鑹插潡 -->
-        <div class="container" v-for="(item, index) in bigStorageCageUsage.slice(0, 1)" :key="index"
-          :style='"position: relative;width: " + (46 * item.percentage / 100) + "px;height: 17px;top: 471px;left: 389px;position: absolute;background-color: #911005;"'>
-        </div>
-        <div class="container" v-for="(item, index) in bigStorageCageUsage.slice(1, 2)" :key="index"
-          :style='"position: relative;width: " + (46 * item.percentage / 100) + "px;height: 17px;top: 491px;left: 389px;position: absolute;background-color: #911005;"'>
-        </div>
-        <div class="container" v-for="(item, index) in bigStorageCageUsage.slice(2, 3)" :key="index"
-          :style='"position: relative;width: " + (46 * item.percentage / 100) + "px;height: 17px;top: 510px;left: 389px;position: absolute;background-color: #911005;"'>
-        </div>
-        <div class="container" v-for="(item, index) in bigStorageCageUsage.slice(3, 4)" :key="index"
-          :style='"position: relative;width: " + (46 * item.percentage / 100) + "px;height: 17px;top: 530px;left: 389px;position: absolute;background-color: #911005;"'>
-        </div>
-        <!-- 涓┖鍓嶅ぇ鐞嗙墖鑹插潡 -->
-        <div class="container" v-for="(item, index) in hollowBigStorageCageUsage.slice(0, 1)" :key="index"
-          :style='"position: relative;width: " + (46 * item.percentage / 100) + "px;height: 17px;top: 334px;left: 832px;position: absolute;background-color: #911005;"'>
-        </div>
-        <div class="container" v-for="(item, index) in hollowBigStorageCageUsage.slice(1, 2)" :key="index"
-          :style='"position: relative;width: " + (46 * item.percentage / 100) + "px;height: 17px;top: 354px;left: 832px;position: absolute;background-color: #911005;"'>
-        </div>
-        <div class="container" v-for="(item, index) in hollowBigStorageCageUsage.slice(2, 3)" :key="index"
-          :style='"position: relative;width: " + (46 * item.percentage / 100) + "px;height: 17px;top: 374px;left: 832px;position: absolute;background-color: #911005;"'>
-        </div>
-        <div class="container" v-for="(item, index) in hollowBigStorageCageUsage.slice(3, 4)" :key="index"
-          :style='"position: relative;width: " + (46 * item.percentage / 100) + "px;height: 17px;top: 394px;left: 832px;position: absolute;background-color: #911005;"'>
-        </div>
-        <div class="container" v-for="(item, index) in hollowBigStorageCageUsage.slice(4, 5)" :key="index"
-          :style='"position: relative;width: " + (46 * item.percentage / 100) + "px;height: 17px;top: 414px;left: 832px;position: absolute;background-color: #911005;"'>
-        </div>
-        <div class="clickable-area" @click="handlehistorical"
-          style="position: relative;width: 140px;height: 170px;top: 603px;left: 364px;"></div>
       </div>
     </div>
   </div>
@@ -740,8 +1224,8 @@
   /* float: left; */
   position: relative;
   background-image: url('../../assets/screen.png');
-  width: 1002px;
-  height: 878px;
+  width: 795px;
+  height: 700px;
   background-size: contain;
   background-repeat: no-repeat;
   /* background-position: center; */
diff --git a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/largenscreen/entity/PieChartVO.java b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/largenscreen/entity/PieChartVO.java
new file mode 100644
index 0000000..1d1ff4d
--- /dev/null
+++ b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/largenscreen/entity/PieChartVO.java
@@ -0,0 +1,50 @@
+package com.mes.largenscreen.entity;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * @Author : zhoush
+ * @Date: 2025/3/12 14:30
+ * @Description:
+ */
+@Data
+public class PieChartVO {
+
+    @ApiModelProperty(value = "涓�绾垮凡瀹屾垚鐜荤拑鏁伴噺")
+    private Integer oneCompletedQuantity;
+
+    @ApiModelProperty(value = "涓�绾垮凡瀹屾垚鐜荤拑闈㈢Н")
+    private Double oneCompletedArea;
+
+    @ApiModelProperty(value = "涓�绾挎鐮寸幓鐠冩暟閲�")
+    private Integer oneDamageQuantity;
+
+    @ApiModelProperty(value = "涓�绾挎鐮寸幓鐠冮潰绉�")
+    private Double oneDamageArea;
+
+    @ApiModelProperty(value = "浜岀嚎宸插畬鎴愮幓鐠冩暟閲�")
+    private Integer twoCompletedQuantity;
+
+    @ApiModelProperty(value = "浜岀嚎宸插畬鎴愮幓鐠冮潰绉�")
+    private Double twoCompletedArea;
+
+    @ApiModelProperty(value = "浜岀嚎娆$牬鐜荤拑鏁伴噺")
+    private Integer twoDamageQuantity;
+
+    @ApiModelProperty(value = "浜岀嚎娆$牬鐜荤拑闈㈢Н")
+    private Double twoDamageArea;
+
+    @ApiModelProperty(value = "涓�绾挎湭瀹屾垚鐜荤拑鏁伴噺")
+    private Integer oneUncompletedQuantity;
+
+    @ApiModelProperty(value = "涓�绾挎湭瀹屾垚鐜荤拑闈㈢Н")
+    private Double oneUncompletedArea;
+
+    @ApiModelProperty(value = "浜岀嚎鏈畬鎴愮幓鐠冩暟閲�")
+    private Integer twoUncompletedQuantity;
+
+    @ApiModelProperty(value = "浜岀嚎鏈畬鎴愮幓鐠冮潰绉�")
+    private Double twoUncompletedArea;
+
+}
diff --git a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/largenscreen/service/LargenScreenService.java b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/largenscreen/service/LargenScreenService.java
index 4e17c4f..f3a419f 100644
--- a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/largenscreen/service/LargenScreenService.java
+++ b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/largenscreen/service/LargenScreenService.java
@@ -3,6 +3,9 @@
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.mes.largenscreen.entity.DailyProductionVO;
 import com.mes.largenscreen.entity.DateRequest;
+import com.mes.largenscreen.entity.PieChartVO;
+
+import java.util.List;
 
 /**
  * @Author : zhoush
@@ -13,5 +16,6 @@
 
     Page<DailyProductionVO> queryDailyProduction(DateRequest query);
 
-    DailyProductionVO querySameDayProduction(DateRequest query);
+    List<DailyProductionVO> querySameDayProduction(DateRequest query);
+
 }
diff --git a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/largenscreen/service/impl/LargenScreenServiceImpl.java b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/largenscreen/service/impl/LargenScreenServiceImpl.java
index 5df6c32..1e0505a 100644
--- a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/largenscreen/service/impl/LargenScreenServiceImpl.java
+++ b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/largenscreen/service/impl/LargenScreenServiceImpl.java
@@ -11,6 +11,7 @@
 
 import javax.annotation.Resource;
 import java.text.SimpleDateFormat;
+import java.util.Calendar;
 import java.util.Date;
 import java.util.List;
 
@@ -37,14 +38,16 @@
     }
 
     @Override
-    public DailyProductionVO querySameDayProduction(DateRequest query) {
+    public List<DailyProductionVO> querySameDayProduction(DateRequest query) {
         if (StringUtils.isEmpty(query.getBeginDate())) {
             SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
-            query.setBeginDate(sdf.format(new Date()));
+            Calendar calendar = Calendar.getInstance();
+            calendar.add(Calendar.DAY_OF_MONTH, -6);
+            query.setBeginDate(sdf.format(calendar.getTime()));
             query.setEndDate(sdf.format(new Date()));
         }
         List<DailyProductionVO> list = largenScreenMapper.queryDailyProduction(query.getBeginDate(), query.getEndDate());
-        return list.get(0);
+        return list;
     }
 
 
diff --git a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/order/controller/OrderController.java b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/order/controller/OrderController.java
index ab39284..cfa146d 100644
--- a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/order/controller/OrderController.java
+++ b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/order/controller/OrderController.java
@@ -1,6 +1,9 @@
 package com.mes.order.controller;
+
 import com.mes.order.entity.Orderdetail;
 import com.mes.order.entity.Orders;
+import com.mes.order.entity.dto.OrderDTO;
+import com.mes.order.entity.request.OrderRequest;
 import com.mes.order.service.OrdersService;
 import com.mes.utils.Result;
 import io.swagger.annotations.Api;
@@ -13,7 +16,7 @@
 
 /**
  * <p>
- *  鍓嶇鎺у埗鍣�
+ * 鍓嶇鎺у埗鍣�
  * </p>
  *
  * @author wu
@@ -37,5 +40,13 @@
         log.info("鏄剧ず璁㈠崟璇︽儏淇℃伅:{}", glass);
         return Result.build(200, "", glass);
     }
+
+    @ApiOperation("璁㈠崟鎺ュ彛鏌ヨ")
+    @PostMapping("/selectOrder") //鏄剧ず宸ョ▼閫夋嫨淇℃伅
+    @ResponseBody
+    public Result<List<OrderDTO>> selectOrder(@RequestBody OrderRequest orderRequest) {
+//        OrderDTO orderDTO = new OrderDTO();
+        return Result.build(200, "", null);
+    }
 }
 
diff --git a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/order/entity/dto/OrderDTO.java b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/order/entity/dto/OrderDTO.java
index 7a3f2de..6f7b4ca 100644
--- a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/order/entity/dto/OrderDTO.java
+++ b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/order/entity/dto/OrderDTO.java
@@ -2,6 +2,7 @@
 
 import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableId;
+import io.swagger.models.auth.In;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 
@@ -41,12 +42,12 @@
     /**
      * 璁㈠崟鏁伴噺
      */
-    private String quantity;
+    private Integer quantity;
 
     /**
      * 璁㈠崟闈㈢Н
      */
-    private String area;
+    private Double area;
 
     /**
      * 鍒涘缓鏃堕棿
@@ -56,7 +57,12 @@
     /**
      * 璁㈠崟杩涘害鐧惧垎姣�
      */
-    private String percent;
+    private Double percent;
+
+    /**
+     * 璁㈠崟鐘舵��
+     */
+    private Integer orderStatus;
 
 
 }
diff --git a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/order/entity/request/OrderRequest.java b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/order/entity/request/OrderRequest.java
new file mode 100644
index 0000000..67c0f8b
--- /dev/null
+++ b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/order/entity/request/OrderRequest.java
@@ -0,0 +1,42 @@
+package com.mes.order.entity.request;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author wu
+ * @since 2024-06-17
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class OrderRequest implements Serializable {
+
+    @ApiModelProperty(value = "璁㈠崟Id")
+    private String orderId;
+    @ApiModelProperty(value = "瀹㈡埛鍚嶇О")
+    private String customerName;
+    @ApiModelProperty(value = "椤圭洰鍚嶇О")
+    private String project;
+    @ApiModelProperty(value = "璁㈠崟鐘舵��")
+    private Integer orderStatus;
+    @ApiModelProperty(value = "寮�濮嬫椂闂�")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date startTime;
+    @ApiModelProperty(value = "缁撴潫鏃堕棿")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date endTime;
+
+
+}
diff --git a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/controller/FlowCardController.java b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/controller/FlowCardController.java
index 670a88a..badef54 100644
--- a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/controller/FlowCardController.java
+++ b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/controller/FlowCardController.java
@@ -2,6 +2,8 @@
 
 
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.mes.pp.entity.dto.FlowCardPercentDTO;
+import com.mes.pp.entity.request.FlowCardRequest;
 import com.mes.pp.service.FlowCardService;
 import com.mes.utils.Result;
 import io.swagger.annotations.Api;
@@ -14,6 +16,7 @@
 import org.springframework.web.bind.annotation.RestController;
 
 import javax.annotation.Resource;
+import java.util.List;
 
 /**
  * <p>
@@ -37,5 +40,11 @@
         return Result.build(200, "鏌ヨ鎴愬姛", flowCardService.flowCardReportForms(orderId));
     }
 
+    @ApiOperation("璁㈠崟璇︽儏杩涘害鎺ュ彛")
+    @PostMapping("/flowCardPercent")
+    public Result<List<FlowCardPercentDTO>> flowCardPercent(@RequestBody FlowCardRequest flowCardRequest) {
+        return Result.build(200, "鏌ヨ鎴愬姛", null);
+    }
+
 }
 
diff --git a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/controller/ReportingWorkDetailController.java b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/controller/ReportingWorkDetailController.java
index b22f975..8460756 100644
--- a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/controller/ReportingWorkDetailController.java
+++ b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/controller/ReportingWorkDetailController.java
@@ -1,21 +1,37 @@
 package com.mes.pp.controller;
 
 
+import com.mes.pp.entity.dto.FlowCardPercentDTO;
+import com.mes.pp.entity.dto.ReportWorkDTO;
+import com.mes.pp.entity.request.FlowCardRequest;
+import com.mes.pp.entity.request.ReportWorkRequest;
+import com.mes.utils.Result;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
 
 import org.springframework.web.bind.annotation.RestController;
 
+import java.util.List;
+
 /**
  * <p>
- *  鍓嶇鎺у埗鍣�
+ * 鍓嶇鎺у埗鍣�
  * </p>
  *
  * @author wu
  * @since 2024-07-25
  */
+@Api(tags = "鎶ュ伐")
 @RestController
 @RequestMapping("/reporting-work-detail")
 public class ReportingWorkDetailController {
 
+    @ApiOperation("鎶ュ伐鏁版嵁鏌ヨ鎺ュ彛")
+    @PostMapping("/reportWorkQuery")
+    public Result<List<ReportWorkDTO>> reportWorkQuery(@RequestBody ReportWorkRequest reportWorkRequest) {
+        return Result.build(200, "鏌ヨ鎴愬姛", null);
+    }
 }
-
diff --git a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/entity/dto/FlowCardPercentDTO.java b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/entity/dto/FlowCardPercentDTO.java
new file mode 100644
index 0000000..2f89fd3
--- /dev/null
+++ b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/entity/dto/FlowCardPercentDTO.java
@@ -0,0 +1,102 @@
+package com.mes.pp.entity.dto;
+
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.io.Serializable;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author wu
+ * @since 2024-07-25
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class FlowCardPercentDTO implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 娴佺▼鍗″彿
+     */
+    private String processId;
+
+    /**
+     * 灞傚彿
+     */
+    private Integer technologyNumber;
+
+    /**
+     * 璁㈠崟搴忓彿
+     */
+    private Integer orderNumber;
+
+    /**
+     * 椤圭洰鍚嶇О
+     */
+    private String productName;
+
+    /**
+     * 鐜荤拑鍚嶇О
+     */
+    private String glassChild;
+
+    /**
+     * 瀹�
+     */
+    private Double width;
+
+    /**
+     * 楂�
+     */
+    private Double height;
+
+    /**
+     * 璁㈠崟鏁伴噺
+     */
+    private Integer quantity;
+
+    /**
+     * 璁㈠崟绫诲瀷
+     */
+    private String orderType;
+
+    /**
+     * 闈㈢Н
+     */
+    private Double area;
+
+    /**
+     * 琛ョ墖鏁伴噺
+     */
+    private Integer PatchQuantity;
+
+    /**
+     * 鎶ュ伐宸ュ簭
+     */
+    private String reportWorkProcess;
+
+    /**
+     * 鎶ュ伐鏁伴噺
+     */
+    private String reportWorkQuantityCount;
+
+    /**
+     * 搴撳瓨鏁伴噺
+     */
+    private Integer inventory;
+
+    /**
+     * 鐢熶骇缁堟鐘舵��
+     */
+    private String orderNumberStatus;
+
+    /**
+     * 鐢熶骇缁堟鐘舵��
+     */
+    private String packagingMethod;
+
+}
diff --git a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/entity/dto/ReportWorkDTO.java b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/entity/dto/ReportWorkDTO.java
new file mode 100644
index 0000000..fef34cb
--- /dev/null
+++ b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/entity/dto/ReportWorkDTO.java
@@ -0,0 +1,67 @@
+package com.mes.pp.entity.dto;
+
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.io.Serializable;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author wu
+ * @since 2024-07-25
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class ReportWorkDTO implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 娴佺▼鍗″彿
+     */
+    private String processId;
+
+    /**
+     * 灞傚彿
+     */
+    private Integer technologyNumber;
+
+    /**
+     * 鎶ュ伐宸ュ簭
+     */
+    private String reportWorkProcess;
+
+    /**
+     * 鐜荤拑鍚嶇О
+     */
+    private String glassChild;
+
+    /**
+     * 鎶ュ伐鏁伴噺
+     */
+    private String reportWorkQuantity;
+
+    /**
+     * 鎶ュ伐闈㈢Н
+     */
+    private String reportWorkArea;
+
+    /**
+     * 娆$牬鏁伴噺
+     */
+    private String damageWorkQuantity;
+
+    /**
+     * 娆$牬闈㈢Н
+     */
+    private String damageWorkArea;
+
+    /**
+     * 鏃堕棿
+     */
+    private String reportTime;
+
+}
diff --git a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/entity/request/FlowCardRequest.java b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/entity/request/FlowCardRequest.java
new file mode 100644
index 0000000..ff27e1d
--- /dev/null
+++ b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/entity/request/FlowCardRequest.java
@@ -0,0 +1,28 @@
+package com.mes.pp.entity.request;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author wu
+ * @since 2024-06-17
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class FlowCardRequest implements Serializable {
+
+    @ApiModelProperty(value = "璁㈠崟Id")
+    private String orderId;
+
+
+}
diff --git a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/entity/request/ReportWorkRequest.java b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/entity/request/ReportWorkRequest.java
new file mode 100644
index 0000000..f5bc1fc
--- /dev/null
+++ b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/entity/request/ReportWorkRequest.java
@@ -0,0 +1,38 @@
+package com.mes.pp.entity.request;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author wu
+ * @since 2024-06-17
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class ReportWorkRequest implements Serializable {
+
+    @ApiModelProperty(value = "娴佺▼鍗″彿")
+    private String processId;
+    @ApiModelProperty(value = "宸ュ簭鍚嶇О")
+    private String reportWorkProcess;
+    @ApiModelProperty(value = "寮�濮嬫椂闂�")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date startTime;
+    @ApiModelProperty(value = "缁撴潫鏃堕棿")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date endTime;
+
+
+}
diff --git a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/temperingglass/mapper/TemperingGlassInfoMapper.java b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/temperingglass/mapper/TemperingGlassInfoMapper.java
index 014b036..aec9520 100644
--- a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/temperingglass/mapper/TemperingGlassInfoMapper.java
+++ b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/temperingglass/mapper/TemperingGlassInfoMapper.java
@@ -2,6 +2,7 @@
 
 import com.baomidou.dynamic.datasource.annotation.DS;
 import com.github.yulichang.base.MPJBaseMapper;
+import com.mes.largenscreen.entity.PieChartVO;
 import com.mes.temperingglass.entity.TemperingGlassInfo;
 import org.apache.ibatis.annotations.Param;
 import org.apache.ibatis.annotations.Select;
@@ -30,4 +31,17 @@
             "deleted = CASE WHEN #{state} < 8 THEN 0 ELSE deleted END " +
             "WHERE glass_id = #{glassId}")
     Integer updateTemperingGlassInfo(TemperingGlassInfo temperingGlassInfo);
+
+    @Select("SELECT\n" +
+            "\tround( SUM ( CASE WHEN state <> - 1 AND state <> 8 THEN 1 ELSE 0 END ), 2 ) AS oneCompletedQuantity,\n" +
+            "\tround( SUM ( CASE WHEN state <> - 1 AND state <> 8 THEN CAST ( width AS FLOAT ) * height / 1000000 ELSE 0 END ), 2 ) AS oneCompletedArea,\n" +
+            "\tround( SUM ( CASE WHEN state = 8 THEN 1 ELSE 0 END ), 2 ) AS oneDamageQuantity,\n" +
+            "\tround( SUM ( CASE WHEN state = 8 THEN CAST ( width AS FLOAT ) * height / 1000000 ELSE 0 END ), 2 ) AS oneDamageArea,\n" +
+            "\tround( SUM ( CASE WHEN state = - 1 THEN 1 ELSE 0 END ), 2 ) AS oneUncompletedQuantity,\n" +
+            "\tround(SUM ( CASE WHEN state = - 1 THEN CAST ( width AS FLOAT ) * height / 1000000 ELSE 0 END ), 2 ) AS oneUncompletedArea \n" +
+            "FROM\n" +
+            "\ttempering_glass_info \n" +
+            "WHERE\n" +
+            "\tCONVERT ( DATE, create_time ) = CONVERT ( DATE, getdate( ) )")
+    List<PieChartVO> queryPieChart();
 }
diff --git a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/temperingglass/service/TemperingGlassInfoService.java b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/temperingglass/service/TemperingGlassInfoService.java
index de870f1..23f2995 100644
--- a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/temperingglass/service/TemperingGlassInfoService.java
+++ b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/temperingglass/service/TemperingGlassInfoService.java
@@ -3,6 +3,7 @@
 import com.github.yulichang.base.MPJBaseService;
 import com.mes.glassinfo.entity.GlassInfo;
 import com.mes.glassinfo.entity.LoadGlassInfo;
+import com.mes.largenscreen.entity.PieChartVO;
 import com.mes.temperingglass.entity.TemperingGlassInfo;
 
 import java.util.List;
@@ -60,4 +61,10 @@
     GlassInfo selectTempering(GlassInfo glassInfo);
 
     List<LoadGlassInfo> selectTemperingGlass(GlassInfo glassInfo);
+
+    /**
+     * 鑾峰彇閽㈠寲楗煎浘淇℃伅
+     * @return
+     */
+    List<PieChartVO> queryPieChart();
 }
diff --git a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/temperingglass/service/impl/TemperingGlassInfoServiceImpl.java b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/temperingglass/service/impl/TemperingGlassInfoServiceImpl.java
index 33749f5..76fcb63 100644
--- a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/temperingglass/service/impl/TemperingGlassInfoServiceImpl.java
+++ b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/temperingglass/service/impl/TemperingGlassInfoServiceImpl.java
@@ -8,6 +8,7 @@
 import com.mes.glassinfo.entity.GlassInfo;
 import com.mes.glassinfo.entity.LoadGlassInfo;
 import com.mes.glassinfo.mapper.GlassInfoMapper;
+import com.mes.largenscreen.entity.PieChartVO;
 import com.mes.temperingglass.entity.TemperingGlassInfo;
 import com.mes.temperingglass.mapper.TemperingGlassInfoMapper;
 import com.mes.temperingglass.service.TemperingGlassInfoService;
@@ -26,7 +27,7 @@
  * @since 2024-04-07
  */
 @Service
-@DS("salve_northGlassMes")
+@DS("north_glass_mes")
 public class TemperingGlassInfoServiceImpl extends MPJBaseServiceImpl<TemperingGlassInfoMapper, TemperingGlassInfo> implements TemperingGlassInfoService {
     @Resource
     TemperingGlassInfoMapper temperingMapper;
@@ -167,4 +168,9 @@
 //                .select("engineer_id,tempering_layout_id,width,height,tempering_feed_sequence,x_coordinate,y_coordinate,angle,glass_id");
 //        return glassInfoMapper.selectList(wrapper);
     }
+
+    @Override
+    public List<PieChartVO> queryPieChart() {
+        return baseMapper.queryPieChart();
+    }
 }
diff --git a/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgstoragecage/mapper/EdgStorageCageDetailsMapper.java b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgstoragecage/mapper/EdgStorageCageDetailsMapper.java
index 118758e..acc2a3b 100644
--- a/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgstoragecage/mapper/EdgStorageCageDetailsMapper.java
+++ b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgstoragecage/mapper/EdgStorageCageDetailsMapper.java
@@ -4,6 +4,7 @@
 import com.mes.edgstoragecage.entity.EdgStorageCageDetails;
 import com.mes.edgstoragecage.entity.vo.CutDrawingVO;
 import com.mes.edgstoragecage.entity.vo.EdgSlotRemainVO;
+import com.mes.largenscreen.entity.PieChartVO;
 import org.apache.ibatis.annotations.Param;
 import org.springframework.security.core.parameters.P;
 
@@ -24,4 +25,6 @@
     List<CutDrawingVO> queryCutDrawingByEngineerId(@Param("engineerId") String engineerId, @Param("patternSequence") int patternSequence, @Param("isAll") int isAll);
 
     List<EdgSlotRemainVO> querySlotRemainWidth(@Param("cellLength") int cellLength, @Param("glassGap") int glassGap);
+
+    List<PieChartVO> queryPieChart();
 }
diff --git a/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgstoragecage/service/EdgStorageCageDetailsService.java b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgstoragecage/service/EdgStorageCageDetailsService.java
index 96c4589..c097538 100644
--- a/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgstoragecage/service/EdgStorageCageDetailsService.java
+++ b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgstoragecage/service/EdgStorageCageDetailsService.java
@@ -6,6 +6,7 @@
 import com.mes.edgstoragecage.entity.EdgStorageCageDetails;
 import com.mes.edgstoragecage.entity.vo.CutDrawingVO;
 import com.mes.edgstoragecage.entity.vo.EdgSlotRemainVO;
+import com.mes.largenscreen.entity.PieChartVO;
 
 import java.util.List;
 import java.util.Map;
@@ -99,4 +100,6 @@
     String edgDetailsOperate(DamageRequest request);
 
     List<EdgSlotRemainVO> querySlotRemainWidth(int cellLength, int glassGap);
+
+    List<PieChartVO> queryPieChart();
 }
diff --git a/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgstoragecage/service/impl/EdgStorageCageDetailsServiceImpl.java b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgstoragecage/service/impl/EdgStorageCageDetailsServiceImpl.java
index a001af5..b839c1b 100644
--- a/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgstoragecage/service/impl/EdgStorageCageDetailsServiceImpl.java
+++ b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgstoragecage/service/impl/EdgStorageCageDetailsServiceImpl.java
@@ -26,6 +26,7 @@
 import com.mes.engineering.mapper.EngineeringMapper;
 import com.mes.glassinfo.entity.GlassInfo;
 import com.mes.glassinfo.service.GlassInfoService;
+import com.mes.largenscreen.entity.PieChartVO;
 import com.mes.pp.entity.OptimizeHeatDetail;
 import com.mes.pp.entity.OptimizeHeatLayout;
 import com.mes.pp.entity.OptimizeProject;
@@ -369,4 +370,9 @@
     public List<EdgSlotRemainVO> querySlotRemainWidth(int cellLength, int glassGap) {
         return this.baseMapper.querySlotRemainWidth(cellLength, glassGap);
     }
+
+    @Override
+    public List<PieChartVO> queryPieChart(){
+        return this.baseMapper.queryPieChart();
+    }
 }
diff --git a/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/job/PushMessageToIndex.java b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/job/PushMessageToIndex.java
index ac44ca6..0c1e86a 100644
--- a/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/job/PushMessageToIndex.java
+++ b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/job/PushMessageToIndex.java
@@ -12,6 +12,7 @@
 import com.mes.engineering.service.EngineeringService;
 import com.mes.largenscreen.entity.DailyProductionVO;
 import com.mes.largenscreen.entity.DateRequest;
+import com.mes.largenscreen.entity.PieChartVO;
 import com.mes.largenscreen.service.LargenScreenService;
 import com.mes.opctask.entity.EdgStorageDeviceTaskHistory;
 import com.mes.opctask.service.EdgStorageDeviceTaskHistoryService;
@@ -150,7 +151,7 @@
     @Scheduled(fixedDelay = 1000)
     public void querySameDayProductionTask() {
         JSONObject jsonObject = new JSONObject();
-        DailyProductionVO productionVO = largenScreenService.querySameDayProduction(new DateRequest());
+        List<DailyProductionVO> productionVO = largenScreenService.querySameDayProduction(new DateRequest());
         jsonObject.append("productionVO", productionVO);
 
         ArrayList<WebSocketServer> sendwServer = WebSocketServer.sessionMap.get("largenScreenProduction");
@@ -198,6 +199,8 @@
         );
         jsonObject.append("engineeringOne", engineeringOne);
         jsonObject.append("engineeringTwo", engineeringTow);
+        List<PieChartVO> pieChartVOS = edgStorageCageDetailsService.queryPieChart();
+        jsonObject.append("pieChartVOS", pieChartVOS);
         ArrayList<WebSocketServer> sendwServer = WebSocketServer.sessionMap.get("largenScreen");
         if (sendwServer != null) {
             for (WebSocketServer webserver : sendwServer) {
diff --git a/hangzhoumesParent/moduleService/CacheGlassModule/src/main/resources/mapper/EdgStorageCageDetailsMapper.xml b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/resources/mapper/EdgStorageCageDetailsMapper.xml
index 3340925..00ab0ae 100644
--- a/hangzhoumesParent/moduleService/CacheGlassModule/src/main/resources/mapper/EdgStorageCageDetailsMapper.xml
+++ b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/resources/mapper/EdgStorageCageDetailsMapper.xml
@@ -78,4 +78,21 @@
         sum(GREATEST(width,height)+#{glassGap}) )as
         remain_width from edg_storage_cage_details where state = 100 group by device_id,slot
     </select>
+    <select id="queryPieChart" resultType="com.mes.largenscreen.entity.PieChartVO">
+        SELECT
+            round(sum( CASE WHEN e.station_cell = 5 THEN 1 ELSE 0 END ),2) as oneCompletedQuantity,
+            round(sum( CASE WHEN e.station_cell = 5 THEN escd.width*escd.height/1000000 ELSE 0 END ),2) as oneCompletedArea,
+            round(sum( CASE WHEN e.station_cell = 6 THEN 1 ELSE 0 END ),2) as twoCompletedQuantity,
+            round(sum( CASE WHEN e.station_cell = 6 THEN escd.width*escd.height/1000000 ELSE 0 END ),2) as twoCompletedArea,
+            round(sum( CASE WHEN e.station_cell = 5 and escd.device_id is null THEN 1 ELSE 0 END ),2) as oneUncompletedQuantity,
+            round(sum( CASE WHEN e.station_cell = 5 and escd.device_id is null THEN gi.width*gi.height/1000000 ELSE 0 END ),2) as oneUncompletedArea,
+            round(sum( CASE WHEN e.station_cell = 6 and escd.device_id is null THEN 1 ELSE 0 END ),2) as twoUncompletedQuantity,
+            round(sum( CASE WHEN e.station_cell = 6 and escd.device_id is null THEN gi.width*gi.height/1000000 ELSE 0 END ),2) as twoUncompletedArea
+        FROM
+            glass_info gi
+                left join edg_storage_cage_details escd ON gi.glass_id = escd.glass_id
+                left join engineering e on gi.engineer_id=e.engineer_id
+        WHERE
+            date(e.create_time) = date(now())
+    </select>
 </mapper>
\ No newline at end of file
diff --git a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/mapper/BigStorageCageMapper.java b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/mapper/BigStorageCageMapper.java
index ac56cae..5db80cd 100644
--- a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/mapper/BigStorageCageMapper.java
+++ b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/mapper/BigStorageCageMapper.java
@@ -3,6 +3,7 @@
 import com.github.yulichang.base.MPJBaseMapper;
 import com.mes.bigstorage.entity.BigStorageCage;
 import com.mes.bigstorage.entity.dto.BigStorageSummaryDTO;
+import com.mes.largenscreen.entity.PieChartVO;
 import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
@@ -20,6 +21,8 @@
     List<Integer> queryFreeDeviceByUsed(@Param(value = "thickness") double thickness);
 
     List<BigStorageSummaryDTO> selectBigStorageSummary();
+
+    List<PieChartVO> queryPieChart();
 //
 //    List<Integer> queryFreeDeviceByNotUsed(@Param(value = "thickness") double thickness);
 }
diff --git a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/service/BigStorageCageService.java b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/service/BigStorageCageService.java
index a4c6756..4fc5b37 100644
--- a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/service/BigStorageCageService.java
+++ b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/service/BigStorageCageService.java
@@ -7,6 +7,7 @@
 import com.mes.bigstorage.entity.dto.BigStorageSummaryDTO;
 import com.mes.bigstorage.entity.vo.BigStorageDetailsQueryVO;
 import com.mes.glassinfo.entity.GlassInfo;
+import com.mes.largenscreen.entity.PieChartVO;
 
 import java.util.List;
 import java.util.Map;
@@ -46,5 +47,7 @@
 
     Boolean resetCage();
 
+    List<PieChartVO> queryPieChart();
+
 //    List<Integer> queryFreeDeviceByNotUsed(double thickness);
 }
diff --git a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/service/impl/BigStorageCageServiceImpl.java b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/service/impl/BigStorageCageServiceImpl.java
index dea422e..cbbadcc 100644
--- a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/service/impl/BigStorageCageServiceImpl.java
+++ b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/service/impl/BigStorageCageServiceImpl.java
@@ -19,6 +19,7 @@
 import com.mes.common.config.Const;
 import com.mes.glassinfo.entity.GlassInfo;
 import com.mes.glassinfo.service.GlassInfoService;
+import com.mes.largenscreen.entity.PieChartVO;
 import com.mes.temperingglass.entity.TemperingGlassInfo;
 import com.mes.temperingglass.service.TemperingGlassInfoService;
 import lombok.extern.slf4j.Slf4j;
@@ -321,6 +322,11 @@
         return Boolean.TRUE;
     }
 
+    @Override
+    public List<PieChartVO> queryPieChart() {
+        return baseMapper.queryPieChart();
+    }
+
 //    @Override
 //    public List<Integer> queryFreeDeviceByNotUsed(double thickness) {
 //        return baseMapper.queryFreeDeviceByNotUsed(thickness);
diff --git a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/job/OPCPlcSlicecage.java b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/job/OPCPlcSlicecage.java
index 78ef546..6502165 100644
--- a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/job/OPCPlcSlicecage.java
+++ b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/job/OPCPlcSlicecage.java
@@ -13,6 +13,7 @@
 import com.mes.bigstoragecagetask.service.BigStorageCageTaskService;
 import com.mes.common.config.Const;
 import com.mes.glassinfo.service.GlassInfoService;
+import com.mes.largenscreen.entity.PieChartVO;
 import com.mes.temperingglass.entity.TemperingGlassInfo;
 import com.mes.temperingglass.service.TemperingGlassInfoService;
 import com.mes.tools.WebSocketServer;
@@ -210,6 +211,8 @@
         //鐞嗙墖绗间娇鐢ㄦ儏鍐�
         List<Map<String, Object>> bigStorageCageUsage = bigStorageCageService.selectBigStorageCageUsage();
         jsonObject.append("bigStorageCageUsage", bigStorageCageUsage);
+        List<PieChartVO> pieChartVOS = bigStorageCageService.queryPieChart();
+        jsonObject.append("pieChartVOS", pieChartVOS);
         ArrayList<WebSocketServer> sendwServer = WebSocketServer.sessionMap.get("largenScreen");
         if (sendwServer != null) {
             for (WebSocketServer webserver : sendwServer) {
diff --git a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/resources/mapper/BigStorageCageMapper.xml b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/resources/mapper/BigStorageCageMapper.xml
index 1e85334..4fe303e 100644
--- a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/resources/mapper/BigStorageCageMapper.xml
+++ b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/resources/mapper/BigStorageCageMapper.xml
@@ -64,7 +64,23 @@
             countSlot DESC,
             thickness DESC
     </select>
-
+    <select id="queryPieChart" resultType="com.mes.largenscreen.entity.PieChartVO">
+        SELECT
+            round(sum( CASE WHEN e.station_cell = 5 THEN 1 ELSE 0 END ),2) as oneCompletedQuantity,
+            round(sum( CASE WHEN e.station_cell = 5 THEN bscd.width*bscd.height/1000000 ELSE 0 END ),2) as oneCompletedArea,
+            round(sum( CASE WHEN e.station_cell = 6 THEN 1 ELSE 0 END ),2) as twoCompletedQuantity,
+            round(sum( CASE WHEN e.station_cell = 6 THEN bscd.width*bscd.height/1000000 ELSE 0 END ),2) as twoCompletedArea,
+            round(sum( CASE WHEN e.station_cell = 5 and bscd.device_id is null THEN 1 ELSE 0 END ),2) as oneUncompletedQuantity,
+            round(sum( CASE WHEN e.station_cell = 5 and bscd.device_id is null THEN gi.width*gi.height/1000000 ELSE 0 END ),2) as oneUncompletedArea,
+            round(sum( CASE WHEN e.station_cell = 6 and bscd.device_id is null THEN 1 ELSE 0 END ),2) as twoUncompletedQuantity,
+            round(sum( CASE WHEN e.station_cell = 6 and bscd.device_id is null THEN gi.width*gi.height/1000000 ELSE 0 END ),2) as twoUncompletedArea
+        FROM
+            glass_info gi
+                left join big_storage_cage_details bscd ON gi.glass_id = bscd.glass_id
+                left join engineering e on gi.engineer_id=e.engineer_id
+        WHERE
+            date(e.create_time) = date(now())
+    </select>
 
 
     <!--    <select id="queryFreeDeviceByNotUsed" resultType="java.lang.Integer">-->
diff --git a/hangzhoumesParent/moduleService/TemperingGlassModule/src/main/java/com/mes/job/PlcTemperingGlassTask.java b/hangzhoumesParent/moduleService/TemperingGlassModule/src/main/java/com/mes/job/PlcTemperingGlassTask.java
index fc07543..cf02b08 100644
--- a/hangzhoumesParent/moduleService/TemperingGlassModule/src/main/java/com/mes/job/PlcTemperingGlassTask.java
+++ b/hangzhoumesParent/moduleService/TemperingGlassModule/src/main/java/com/mes/job/PlcTemperingGlassTask.java
@@ -7,6 +7,7 @@
 import com.mes.damage.entity.Damage;
 import com.mes.damage.service.DamageService;
 import com.mes.engineering.entity.Engineering;
+import com.mes.largenscreen.entity.PieChartVO;
 import com.mes.temperingglass.service.TemperingGlassInfoService;
 import com.mes.temperingglass.entity.TemperingGlassInfo;
 import com.mes.tools.WebSocketServer;
@@ -128,6 +129,9 @@
                         .groupBy(TemperingGlassInfo::getEngineerId, TemperingGlassInfo::getTemperingLayoutId) // 鎸� engineerId 鍜� temperingLayoutId 鍒嗙粍
         );
         jsonObject.append("temperingGlassInfoInList", temperingGlassInfoInList.size());
+        //閽㈠寲楗煎浘鏁版嵁
+        List<PieChartVO> pieChartVOS = temperingAgoService.queryPieChart();
+        jsonObject.append("pieChartVOS", pieChartVOS);
         ArrayList<WebSocketServer> sendwServer = WebSocketServer.sessionMap.get("largenScreen");
         if (sendwServer != null) {
             for (WebSocketServer webserver : sendwServer) {
diff --git a/hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/hollow/mapper/HollowGlassOutRelationInfoMapper.java b/hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/hollow/mapper/HollowGlassOutRelationInfoMapper.java
index e53bfa6..3ac8c38 100644
--- a/hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/hollow/mapper/HollowGlassOutRelationInfoMapper.java
+++ b/hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/hollow/mapper/HollowGlassOutRelationInfoMapper.java
@@ -3,7 +3,10 @@
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.mes.hollow.entity.HollowGlassOutRelationInfo;
 import com.mes.hollow.entity.dto.OrderDTO;
+import com.mes.largenscreen.entity.PieChartVO;
 import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
 
 /**
  * (HollowGlassOutRelationInfo)琛ㄦ暟鎹簱璁块棶灞�
@@ -14,5 +17,7 @@
 public interface HollowGlassOutRelationInfoMapper extends BaseMapper<HollowGlassOutRelationInfo> {
 
     OrderDTO queryOrderByFlowCardId(@Param("flowCardId") String flowCardId);
+
+    List<PieChartVO> queryPieChart();
 }
 
diff --git a/hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/hollow/service/HollowGlassOutRelationInfoService.java b/hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/hollow/service/HollowGlassOutRelationInfoService.java
index 0fa8ee3..398d723 100644
--- a/hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/hollow/service/HollowGlassOutRelationInfoService.java
+++ b/hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/hollow/service/HollowGlassOutRelationInfoService.java
@@ -6,6 +6,7 @@
 import com.mes.hollow.entity.request.HollowHistoryTaskRequest;
 import com.mes.hollow.entity.request.HollowTaskRequest;
 import com.mes.hollowqueue.entity.HollowGlassQueueInfo;
+import com.mes.largenscreen.entity.PieChartVO;
 
 import java.io.IOException;
 import java.util.List;
@@ -39,5 +40,7 @@
     String generateHollowLisecFile(String flowCardId, int cell, int isForce, int isOut) throws IOException;
 
     Page<HollowGlassOutRelationInfo> queryHollowHistoryTask(HollowHistoryTaskRequest request);
+
+    List<PieChartVO> queryPieChart();
 }
 
diff --git a/hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/hollow/service/impl/HollowGlassOutRelationInfoServiceImpl.java b/hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/hollow/service/impl/HollowGlassOutRelationInfoServiceImpl.java
index 9e44138..14d0ff2 100644
--- a/hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/hollow/service/impl/HollowGlassOutRelationInfoServiceImpl.java
+++ b/hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/hollow/service/impl/HollowGlassOutRelationInfoServiceImpl.java
@@ -23,6 +23,7 @@
 import com.mes.hollow.service.HollowGlassRelationInfoService;
 import com.mes.hollowqueue.entity.HollowGlassQueueInfo;
 import com.mes.hollowqueue.service.HollowGlassQueueInfoService;
+import com.mes.largenscreen.entity.PieChartVO;
 import com.mes.tools.DateUtil;
 import com.mes.utils.Blank;
 import com.mes.utils.RedisUtil;
@@ -425,5 +426,10 @@
         queueInfo.setUpdateTime(new Date());
         return queueInfo;
     }
+
+    @Override
+    public List<PieChartVO> queryPieChart(){
+        return baseMapper.queryPieChart();
+    }
 }
 
diff --git a/hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/job/PushMessageToIndex.java b/hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/job/PushMessageToIndex.java
index 3b8520f..c131268 100644
--- a/hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/job/PushMessageToIndex.java
+++ b/hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/job/PushMessageToIndex.java
@@ -19,6 +19,7 @@
 import com.mes.hollow.service.HollowGlassRelationInfoService;
 import com.mes.hollowqueue.entity.HollowGlassQueueInfo;
 import com.mes.hollowqueue.service.HollowGlassQueueInfoService;
+import com.mes.largenscreen.entity.PieChartVO;
 import com.mes.tools.WebSocketServer;
 import com.mes.utils.RedisUtil;
 import lombok.extern.slf4j.Slf4j;
@@ -226,6 +227,9 @@
         //鐞嗙墖绗间娇鐢ㄦ儏鍐�
         List<Map<String, Object>> hollowBigStorageCageUsage = hollowBigStorageCageService.selectBigStorageCageUsage();
         jsonObject.append("hollowBigStorageCageUsage", hollowBigStorageCageUsage);
+        //閽㈠寲楗煎浘鏁版嵁
+        List<PieChartVO> pieChartVOS = hollowGlassOutRelationInfoService.queryPieChart();
+        jsonObject.append("pieChartVOS", pieChartVOS);
         ArrayList<WebSocketServer> sendwServer = WebSocketServer.sessionMap.get("largenScreen");
         if (sendwServer != null) {
             for (WebSocketServer webserver : sendwServer) {
diff --git a/hangzhoumesParent/moduleService/hollowGlassModule/src/main/resources/mapper/HollowGlassOutRelationInfoMapper.xml b/hangzhoumesParent/moduleService/hollowGlassModule/src/main/resources/mapper/HollowGlassOutRelationInfoMapper.xml
index 3d15d30..5aeed84 100644
--- a/hangzhoumesParent/moduleService/hollowGlassModule/src/main/resources/mapper/HollowGlassOutRelationInfoMapper.xml
+++ b/hangzhoumesParent/moduleService/hollowGlassModule/src/main/resources/mapper/HollowGlassOutRelationInfoMapper.xml
@@ -10,4 +10,33 @@
         where t.process_id = #{flowCardId}
         limit 1
     </select>
+    <select id="queryPieChart" resultType="com.mes.largenscreen.entity.PieChartVO">
+        SELECT
+            round( sum( CASE WHEN hgori.cell = 930 AND hgqi.state = 0 THEN 1 ELSE 0 END ), 2 ) AS oneCompletedQuantity,
+            round(
+                    sum( CASE WHEN hgori.cell = 930 AND hgqi.state = 0 THEN hgqi.width * hgqi.height / 1000000 ELSE 0 END ),
+                    2
+                ) AS oneCompletedArea,
+            round( sum( CASE WHEN hgori.cell = 931 AND hgqi.state = 0 THEN 1 ELSE 0 END ), 2 ) AS twoCompletedQuantity,
+            round(
+                    sum( CASE WHEN hgori.cell = 931 AND hgqi.state = 0 THEN hgqi.width * hgqi.height / 1000000 ELSE 0 END ),
+                    2
+                ) AS twoCompletedArea,
+            round( sum( CASE WHEN hgori.cell = 930 AND hgqi.state =- 1 THEN 1 ELSE 0 END ), 2 ) AS oneUncompletedQuantity,
+            round(
+                    sum( CASE WHEN hgori.cell = 930 AND hgqi.state =- 1 THEN hgqi.width * hgqi.height / 1000000 ELSE 0 END ),
+                    2
+                ) AS oneUncompletedArea,
+            round( sum( CASE WHEN hgori.cell = 931 AND hgqi.state =- 1 THEN 1 ELSE 0 END ), 2 ) AS twoUncompletedQuantity,
+            round(
+                    sum( CASE WHEN hgori.cell = 931 AND hgqi.state =- 1 THEN hgqi.width * hgqi.height / 1000000 ELSE 0 END ),
+                    2
+                ) AS twoUncompletedArea
+        FROM
+            hollow_glass_out_relation_info hgori
+                INNER JOIN hollow_glass_queue_info hgqi ON hgori.formula_id = hgqi.relation_id
+        WHERE
+            date( hgori.create_time ) = date(
+            now())
+    </select>
 </mapper>
\ No newline at end of file

--
Gitblit v1.8.0