From f68d3c71819feb59e7a227a5d992b059b900916c Mon Sep 17 00:00:00 2001
From: ZengTao <2773468879@qq.com>
Date: 星期五, 28 三月 2025 08:28:26 +0800
Subject: [PATCH] 修改报表,界面添加查询流程卡个数,调整推送数据到前端的间隔

---
 hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downglassinfo/controller/DownGlassTaskController.java                     |   13 
 hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstoragetask/service/impl/BigStorageCageOutTaskServiceImpl.java  |   36 
 hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstoragetask/service/impl/BigStorageCageFeedTaskServiceImpl.java |   39 
 UI-Project/src/views/Reportmanage/reportDownCache.vue                                                                                             |  164 ++
 hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstoragetask/service/BigStorageCageOutTaskService.java           |    2 
 hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/service/BigStorageCageDetailsService.java               |    3 
 hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstoragetask/controller/BigStorageCageOutTaskController.java     |   27 
 hangzhoumesParent/moduleService/TemperingGlassModule/src/main/resources/application.yml                                                           |    8 
 hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/job/PlcSlicecage.java                                              |   13 
 hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/entity/OrderChange.java                                                             |   65 +
 hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/taskcache/entity/TaskCache.java                                            |    9 
 hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/job/PlcStorageCageTask.java                                        |    1 
 UI-Project/src/views/Reportmanage/reportEdgCache.vue                                                                                              |  164 ++
 hangzhoumesParent/moduleService/CacheGlassModule/src/main/resources/application.yml                                                               |    6 
 hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/resources/application.yml                                                              |    7 
 hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/engineering/service/impl/EngineeringServiceImpl.java                        |    6 
 hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/controller/BigStorageCageDetailsController.java         |    6 
 hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/entity/dto/FlowCardDTO.java                             |   41 
 hangzhoumesParent/common/servicebase/src/main/java/com/mes/temperingglass/mapper/TemperingGlassInfoMapper.java                                    |    2 
 hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstoragetask/controller/BigStorageCageFeedTaskController.java    |   35 
 hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/taskcache/service/TaskCacheService.java                                    |    8 
 hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/job/PlcLoadGlassTask.java                                                   |   28 
 UI-Project/src/router/index.js                                                                                                                    |  505 ++++---
 hangzhoumesParent/moduleService/LoadGlassModule/src/main/resources/mapper/EngineeringMapper.xml                                                   |   17 
 hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/mapper/BigStorageCageDetailsMapper.java                 |    3 
 hangzhoumesParent/moduleService/TemperingGlassModule/src/main/java/com/mes/job/PlcScreenTask.java                                                 |   57 
 hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/job/DownLoadCacheGlassTask.java                                           |   39 
 hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstoragetask/service/BigStorageCageFeedTaskService.java          |    5 
 hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/engineering/mapper/xml/EngineeringMapper.xml                                |    7 
 hangzhoumesParent/moduleService/LoadGlassModule/src/main/resources/application.yml                                                                |    6 
 hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/service/impl/DownWorkstationServiceImpl.java              |   35 
 hangzhoumesParent/common/servicebase/src/main/java/com/mes/order/service/impl/OrdersServiceImpl.java                                              |   39 
 hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstoragetask/entity/BigStorageCageOutTask.java                   |    4 
 hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/engineering/mapper/EngineeringMapper.java                                   |    4 
 hangzhoumesParent/common/servicebase/src/main/java/com/mes/order/service/OrdersService.java                                                       |    3 
 UI-Project/config.js                                                                                                                              |    8 
 hangzhoumesParent/common/servicebase/src/main/java/com/mes/order/controller/OrderController.java                                                  |    7 
 hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/job/CacheGlassTask.java                                                    |   25 
 hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/resources/mapper/BigStorageCageDetailsMapper.xml                                |   72 
 UI-Project/src/lang/en.js                                                                                                                         | 1276 ++++++++++---------
 UI-Project/src/lang/zh.js                                                                                                                         |   13 
 hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/service/impl/BigStorageCageDetailsServiceImpl.java      |   31 
 UI-Project/src/utils/constants.js                                                                                                                 |    4 
 hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/resources/application.yml                                                       |    6 
 hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/job/Downpush.java                                                         |  172 +-
 hangzhoumesParent/moduleService/TemperingGlassModule/src/main/java/com/mes/job/PlcTemperingGlassTask.java                                         |   54 
 hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downglassinfo/service/impl/DownGlassTaskServiceImpl.java                  |   32 
 UI-Project/src/views/Slicecage/slicecage.vue                                                                                                      |   35 
 hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/taskcache/service/impl/TaskCacheServiceImpl.java                           |   39 
 hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downglassinfo/service/DownGlassTaskService.java                           |    8 
 UI-Project/src/views/Reportmanage/reportBigFeed.vue                                                                                               |  161 ++
 UI-Project/src/views/Reportmanage/reportBigOut.vue                                                                                                |  171 ++
 hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/engineering/service/EngineeringService.java                                 |    2 
 hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/taskcache/controller/TaskCacheController.java                              |    8 
 UI-Project/src/views/PurchaseReturn/purchaseReturn.vue                                                                                            |  135 ++
 UI-Project/src/views/NewPage.vue                                                                                                                  |    1 
 hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/engineering/controller/EngineeringController.java                           |   69 
 57 files changed, 2,570 insertions(+), 1,166 deletions(-)

diff --git a/UI-Project/config.js b/UI-Project/config.js
index 7438481..e0d32d0 100644
--- a/UI-Project/config.js
+++ b/UI-Project/config.js
@@ -1,12 +1,12 @@
 export default {
     // serverUrl: "10.153.19.150:88/api",
     // serverUrl: "10.153.19.44:88/api",
- serverUrl: "192.168.1.199:88/api",
-    // serverUrl: "127.0.0.1:88/api",
+//  serverUrl: "192.168.1.199:88/api",
+    serverUrl: "127.0.0.1:88/api",
     // serverUrl2: "10.153.19.150:88"
     // serverUrl2: "10.153.19.44:88"
-    serverUrl2: "192.168.1.199:88"
-    // serverUrl2: "127.0.0.1:88"
+    // serverUrl2: "192.168.1.199:88"
+    serverUrl2: "127.0.0.1:88"
 
     //serverUrl:"res.abeim.cn"
 }
\ No newline at end of file
diff --git a/UI-Project/src/lang/en.js b/UI-Project/src/lang/en.js
index cea6baf..57a3fae 100644
--- a/UI-Project/src/lang/en.js
+++ b/UI-Project/src/lang/en.js
@@ -1,624 +1,654 @@
-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:{
-          Automaticprintingswitch:'Automatic printing switch',
-          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:{
-          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:{
-          dilapidation:'Breakage',
-          takeaway:'Manual removal',
-          takeon:'The arrangement is complete',
-      },
-      searchOrder:{
-          searchlayout:'Non-tempered process card inquiry',
-          fullfurnaces:'Number of full furnaces',
-          specifiedproject:'The currently specified project',
-          undesignate:'Undesignate',
-          allnumber:'Total quantity',
-          numbercages:'Number of cages',
-          numberslots:'Number of slots',
-          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',
-          filmwait:'Waiting for start',
-          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',
-          specifyengineerid:'Specify the project',
-          projectnumber:'Project number',
-          layoutnumber:'Drawing number of loading for tempering furnace',
-          numberglasses:'Number of glasses',
-          specifytemperinga:'Whether to specify the tempering of this information锛�',
-          temperedswitch:'Tempered switch',
-          dutyinformation:'Duty information',
-          process:'Process',
-          team:'Team',
-          basic:'equipment',
-          makesure:'Confirm the save',
-          // cancel:'鍙栨秷',
-          temperingtotal:'Number of tempering furnaces锛�',
-          glasstotal:'Total number of glasses锛�',
-          scheduletime:'Time of schedule锛�'
-      },
-      workOrder:{
-          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',
-          confirmclear:'Please confirm that the process card and label have been printed before clearing them',
-          sure:'Operate',
-          cancel:'Cancel',
-          glassinformation:'Glass information',
-          glassID:'Glass ID',
-          coatingtypes:'Coating types',
-          thickness:'Thickness',
-          width:'Width',
-          height:'Height',
-      },
-   
-      productStock:{
-          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:{
-          time: 'The time of the break',
-          number: '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',
-          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',
-          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锛�',
-      },
-      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',
-          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:{
-          mes:'Original film storage details',
-          warehousing:'store',
-          operate: 'Operate',
-          exit:'Edit',
-          delete:'Delete',
-          outbound:'Outbound',
-          deviceid:'device ID',
-          slot:'Grid number',
-          enablestatea:'Enable tagging',
-          disable:'Disable',
-          start:'Enable',
-          startslot:'Start workstation',
-          endslot:'Target workstation',
-          slotid:'Grid ID',
-          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',
-          thickremainquantity:'Remaining quantity of original film (sheets)锛�',
-          inquantity:'Please enter the quantity',
-          quantitya:'Number锛�',
-          enableid:'Task ID',
-          originateslot:'Starting grid',
-          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',
-          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',
-   
-      }
-  }
\ No newline at end of file
+    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: {
+        Automaticprintingswitch: 'Automatic printing switch',
+        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: {
+        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: {
+        dilapidation: 'Breakage',
+        takeaway: 'Manual removal',
+        takeon: 'The arrangement is complete',
+    },
+    searchOrder: {
+        cageTemper: 'Cage temperature',
+        cageArea: 'Cage area',
+        totalAreas: 'Total area',
+        totalTemper: 'Total temper',
+        "processcardinquiry": "process card inquiry",
+        searchlayout: 'Non-tempered process card inquiry',
+        fullfurnaces: 'Number of full furnaces',
+        specifiedproject: 'The currently specified project',
+        undesignate: 'Undesignate',
+        allnumber: 'Total quantity',
+        numbercages: 'Number of cages',
+        numberslots: 'Number of slots',
+        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',
+        filmwait: 'Waiting for start',
+        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',
+        processcardqueriesa: 'Process card queries',
+        specifytempering: 'Specify a furnace',
+        specifyengineerid: 'Specify the project',
+        projectnumber: 'Project number',
+        layoutnumber: 'Drawing number of loading for tempering furnace',
+        numberglasses: 'Number of glasses',
+        specifytemperinga: 'Whether to specify the tempering of this information锛�',
+        temperedswitch: 'Tempered switch',
+        dutyinformation: 'Duty information',
+        process: 'Process',
+        team: 'Team',
+        basic: 'equipment',
+        makesure: 'Confirm the save',
+        // cancel:'鍙栨秷',
+        temperingtotal: 'Number of tempering furnaces锛�',
+        glasstotal: 'Total number of glasses锛�',
+        scheduletime: 'Time of schedule锛�'
+    },
+    workOrder: {
+        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',
+        confirmclear: 'Please confirm that the process card and label have been printed before clearing them',
+        sure: 'Operate',
+        cancel: 'Cancel',
+        glassinformation: 'Glass information',
+        glassID: 'Glass ID',
+        coatingtypes: 'Coating types',
+        thickness: 'Thickness',
+        width: 'Width',
+        height: 'Height',
+    },
+
+    productStock: {
+        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: {
+        time: 'The time of the break',
+        number: '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',
+        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',
+        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锛�',
+    },
+    reportmanage: {
+        feed: 'feed',
+        out: 'out',
+        straightthrough: 'straightthrough',
+        complete: 'complete',
+        incomplete: 'incomplete',
+        outed: 'outed',
+        scan: 'scan',
+        feeding: 'feeding',
+        in: 'in',
+        car: 'car',
+        cage: 'cage',
+        oneline: 'oneline',
+        twoline: 'twoline',
+        id: 'id',
+        targetSlot: 'targetSlot',
+        endSlot: 'endSlot',
+        state: 'state',
+        width: 'width',
+        height: 'height',
+        createTime: 'createTime',
+        totalCounts: 'totalCounts',
+        totalAreas: 'totalAreas',
+        totalDamages: 'totalDamages',
+        totalTakes: 'totalTakes',
+        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',
+        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: {
+        mes: 'Original film storage details',
+        warehousing: 'store',
+        operate: 'Operate',
+        exit: 'Edit',
+        delete: 'Delete',
+        outbound: 'Outbound',
+        deviceid: 'device ID',
+        slot: 'Grid number',
+        enablestatea: 'Enable tagging',
+        disable: 'Disable',
+        start: 'Enable',
+        startslot: 'Start workstation',
+        endslot: 'Target workstation',
+        slotid: 'Grid ID',
+        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',
+        thickremainquantity: 'Remaining quantity of original film (sheets)锛�',
+        inquantity: 'Please enter the quantity',
+        quantitya: 'Number锛�',
+        enableid: 'Task ID',
+        originateslot: 'Starting grid',
+        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',
+        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',
+
+    }
+}
\ No newline at end of file
diff --git a/UI-Project/src/lang/zh.js b/UI-Project/src/lang/zh.js
index e1dd6fe..4aacfcf 100644
--- a/UI-Project/src/lang/zh.js
+++ b/UI-Project/src/lang/zh.js
@@ -110,8 +110,13 @@
           takeall:'鍏ㄩ儴鎷胯蛋',
       },
       searchOrder:{
+        cageTemper: '绗煎唴鐐夋暟',
+        cageArea: '绗煎唴闈㈢Н',
+        totalAreas:'鎬婚潰绉�',
+        totalTemper:'鎬荤倝鏁�',
           deleteTask:'鍒犻櫎宸ョ▼',
           pdeleteTask:'鏄惁鍒犻櫎宸ョ▼锛�',
+          processcardinquiry:"宸ョ▼鏌ヨ",
           searchlayout:'闈為挗鍖栨祦绋嬪崱鏌ヨ',
           fullfurnaces:'婊$倝鏁伴噺',
           specifiedproject:'褰撳墠鎸囧畾宸ョ▼',
@@ -223,6 +228,7 @@
           now:'褰撳墠椤垫樉绀�',
           tit:'鏉℃暟鎹�',
           temperingqueries:'閽㈠寲鏌ヨ',
+          processcardqueriesa:'宸ョ▼鏌ヨ',
           specifytempering:'鎸囧畾涓�鐐�',
           specifyout:'鎸囧畾浜哄伐鍑虹墖',
           specifyengineerid:'鎸囧畾宸ョ▼',
@@ -507,6 +513,12 @@
           loading :'姝e湪涓婄墖锛�',
       },
       reportmanage:{
+          feed: '杩涚墖',
+          out: '鍑虹墖',
+          straightthrough: '鐩撮��',
+          complete:'宸插畬鎴�',
+          incomplete:'鏈畬鎴�',
+          outed:'宸插嚭鐗�',
           scan:'鎵爜',
           feeding:'姝e湪杩涘崸杞珛',
           in:'鍦ㄥ崸杞珛',
@@ -516,6 +528,7 @@
           twoline:'浜岀嚎',
           id:'缂栧彿',
           targetSlot:'鐩爣鏍煎瓙',
+          endSlot:'鐩爣鏋跺瓙',
           state:'浠诲姟鐘舵��',
           width:'瀹�',
           height:'楂�',
diff --git a/UI-Project/src/router/index.js b/UI-Project/src/router/index.js
index 3de0a3e..6d946a4 100644
--- a/UI-Project/src/router/index.js
+++ b/UI-Project/src/router/index.js
@@ -1,4 +1,4 @@
-import {createRouter, createWebHashHistory} from 'vue-router'
+import { createRouter, createWebHashHistory } from 'vue-router'
 // import i18n from '@/utils/lang'
 // import User from '../views/sys/User.vue'
 // import Role from '../views/sys/Role.vue'
@@ -19,185 +19,185 @@
     },
     {
       path: '/new-page', // 鏂板鐨勬棤闇�鐧诲綍鐨勯〉闈�  
-      name: 'newPage',  
+      name: 'newPage',
       component: () => import('../views/NewPage.vue')
     },
     {
       path: '/main',
       name: 'main',
       component: () => import('../layout/MainErpView.vue'),
-      children:[
-        
-        
+      children: [
+
+
         {
           path: 'Temperedlayout',
           name: 'Temperedlayout',
           component: () => import('../views/TL/Temperedlayout/Temperedlayout.vue'),
-          children:[
+          children: [
             {
-             path: 'selectLayout',
+              path: 'selectLayout',
               name: 'selectLayout',
               component: () => import('../views/TL/Temperedlayout/Temperedlayout.vue'),
             }
-         ]
+          ]
         },
-      
-/*----------- 鐢ㄦ埛鍒楄〃 ----------------*/
-// {
-//   path: 'User',
-//   name: 'User',
-//   component: () => import('../views/User/userlist.vue'),
-//   children:[
-//     {
-//       path: '/User/userlist',
-//       name: 'userlist',
-//       component: () => import('../views/User/userlist.vue')
-//     },
-//   ]
-//   },
-  
-/*----------- 鏉冮檺鍒楄〃 ----------------*/
-// {
-//   path: 'Permissions',
-//   name: 'Permissions',
-//   component: () => import('../views/Permissions/permissionslist.vue'),
-//   children:[
-//     {
-//       path: '/Permissions/permissionslist',
-//       name: 'permissionslist',
-//       component: () => import('../views/Permissions/permissionslist.vue')
-//     },
-//   ]
-//   },
+
+        /*----------- 鐢ㄦ埛鍒楄〃 ----------------*/
+        // {
+        //   path: 'User',
+        //   name: 'User',
+        //   component: () => import('../views/User/userlist.vue'),
+        //   children:[
+        //     {
+        //       path: '/User/userlist',
+        //       name: 'userlist',
+        //       component: () => import('../views/User/userlist.vue')
+        //     },
+        //   ]
+        //   },
+
+        /*----------- 鏉冮檺鍒楄〃 ----------------*/
+        // {
+        //   path: 'Permissions',
+        //   name: 'Permissions',
+        //   component: () => import('../views/Permissions/permissionslist.vue'),
+        //   children:[
+        //     {
+        //       path: '/Permissions/permissionslist',
+        //       name: 'permissionslist',
+        //       component: () => import('../views/Permissions/permissionslist.vue')
+        //     },
+        //   ]
+        //   },
         /*----------- 涓婄墖鏈� ----------------*/
-      {
-        path: 'Returns',
-        name: 'return',
-        component: () => import('../views/Returns/return.vue'),
-        children:[
-          {
-            path: '/Returns/returns',
-            name: 'returns',
-            component: () => import('../views/Returns/returns.vue')
-          },
-          {
-            path: '/Returns/upreturns',
-            name: 'upreturns',
-            component: () => import('../views/Returns/upreturns.vue')
-          },
-          {
-            path: '/Returns/upreturns2',
-            name: 'upreturns2',
-            component: () => import('../views/Returns/upreturns2.vue')
-          },
-        ]
-      },
-      /*----------- 鎺扮墖/璇嗗埆 ----------------*/
-    {
-      path: 'Identify',
-      name: 'ident',
-      component: () => import('../views/Identify/ident.vue'),
-      children: [
         {
-          path: '/Identify/identify',
-          name: 'identify',
-          component: () => import('../views/Identify/identify.vue')
+          path: 'Returns',
+          name: 'return',
+          component: () => import('../views/Returns/return.vue'),
+          children: [
+            {
+              path: '/Returns/returns',
+              name: 'returns',
+              component: () => import('../views/Returns/returns.vue')
+            },
+            {
+              path: '/Returns/upreturns',
+              name: 'upreturns',
+              component: () => import('../views/Returns/upreturns.vue')
+            },
+            {
+              path: '/Returns/upreturns2',
+              name: 'upreturns2',
+              component: () => import('../views/Returns/upreturns2.vue')
+            },
+          ]
         },
+        /*----------- 鎺扮墖/璇嗗埆 ----------------*/
         {
-          path: '/Identify/identifwu',
-          name: 'identifwu',
-          component: () => import('../views/Identify/identifwu.vue')
+          path: 'Identify',
+          name: 'ident',
+          component: () => import('../views/Identify/ident.vue'),
+          children: [
+            {
+              path: '/Identify/identify',
+              name: 'identify',
+              component: () => import('../views/Identify/identify.vue')
+            },
+            {
+              path: '/Identify/identifwu',
+              name: 'identifwu',
+              component: () => import('../views/Identify/identifwu.vue')
+            },
+          ]
         },
-      ]
-    },
-    /*----------- 鍗у紡缂撳瓨 ----------------*/
-  {
-    path: 'Caching',
-    name: 'Caching',
-    component: () => import('../views/Caching/caching.vue'),
-    children:[
-      {
-        path: '/Caching/cachingbefore',
-        name: 'cachingbefore',
-        component: () => import('../views/Caching/cachingbefore.vue')
-      },
-      {
-        path: '/Caching/cachingun',
-        name: 'cachingun',
-        component: () => import('../views/Caching/cachingun.vue')
-      },
-      {
-        path: '/Caching/cachingyiwu',
-        name: 'cachingyiwu',
-        component: () => import('../views/Caching/cachingyiwu.vue')
-      },
-    ]
-  },
-  /*----------- 纾ㄨ竟锛堝喎鍔犲伐锛� ----------------*/
-{
-  path: 'StockBasicData',
-  name: 'Select',
-  component: () => import('../views/StockBasicData/Select.vue'),
-  children:[
-    {
-      path: '/StockBasicData/stockBasicData',
-      name: 'stockBasicData',
-      component: () => import('../views/StockBasicData/stockBasicData.vue')
-    },
-    {
-      path: '/StockBasicData/stockBasicDatatwo',
-      name: 'stockBasicDatatwo',
-      component: () => import('../views/StockBasicData/stockBasicDatatwo.vue')
-    },
-    {
-      path: '/StockBasicData/stockBasicyiwu',
-      name: 'stockBasicyiwu',
-      component: () => import('../views/StockBasicData/stockBasicyiwu.vue')
-    },
-  ]
-},
-/*----------- 澶х悊鐗囩 ----------------*/
-{
-path: 'Slicecage',
-name: 'Slicecage',
-component: () => import('../views/Slicecage/slicecage.vue'),
-children:[
-  {
-    path: '/Slicecage/slicecage',
-    name: 'slicecage',
-    component: () => import('../views/Slicecage/slicecage.vue')
-  },
-]
-},
-/*----------- 閽㈠寲 ----------------*/
-{
-path: 'PurchaseReturn',
-name: 'purchase',
-component: () => import('../views/PurchaseReturn/purchase.vue'),
-children:[
-  {
-    path: '/PurchaseReturn/purchaseReturn',
-    name: 'purchaseReturn',
-    component: () => import('../views/PurchaseReturn/purchaseReturn.vue')
-  },
-  {
-    path: '/PurchaseReturn/purchaseStorage',
-    name: 'purchaseStorage',
-    component: () => import('../views/PurchaseReturn/purchaseStorage.vue')
-  },
-  {
-    path: '/PurchaseReturn/purchaseprint',
-    name: 'purchaseprint',
-    component: () => import('../views/PurchaseReturn/purchaseprint.vue')
-  },
-]
-},
-          /*----------- 涓嬬墖鍙� ----------------*/
+        /*----------- 鍗у紡缂撳瓨 ----------------*/
+        {
+          path: 'Caching',
+          name: 'Caching',
+          component: () => import('../views/Caching/caching.vue'),
+          children: [
+            {
+              path: '/Caching/cachingbefore',
+              name: 'cachingbefore',
+              component: () => import('../views/Caching/cachingbefore.vue')
+            },
+            {
+              path: '/Caching/cachingun',
+              name: 'cachingun',
+              component: () => import('../views/Caching/cachingun.vue')
+            },
+            {
+              path: '/Caching/cachingyiwu',
+              name: 'cachingyiwu',
+              component: () => import('../views/Caching/cachingyiwu.vue')
+            },
+          ]
+        },
+        /*----------- 纾ㄨ竟锛堝喎鍔犲伐锛� ----------------*/
+        {
+          path: 'StockBasicData',
+          name: 'Select',
+          component: () => import('../views/StockBasicData/Select.vue'),
+          children: [
+            {
+              path: '/StockBasicData/stockBasicData',
+              name: 'stockBasicData',
+              component: () => import('../views/StockBasicData/stockBasicData.vue')
+            },
+            {
+              path: '/StockBasicData/stockBasicDatatwo',
+              name: 'stockBasicDatatwo',
+              component: () => import('../views/StockBasicData/stockBasicDatatwo.vue')
+            },
+            {
+              path: '/StockBasicData/stockBasicyiwu',
+              name: 'stockBasicyiwu',
+              component: () => import('../views/StockBasicData/stockBasicyiwu.vue')
+            },
+          ]
+        },
+        /*----------- 澶х悊鐗囩 ----------------*/
+        {
+          path: 'Slicecage',
+          name: 'Slicecage',
+          component: () => import('../views/Slicecage/slicecage.vue'),
+          children: [
+            {
+              path: '/Slicecage/slicecage',
+              name: 'slicecage',
+              component: () => import('../views/Slicecage/slicecage.vue')
+            },
+          ]
+        },
+        /*----------- 閽㈠寲 ----------------*/
+        {
+          path: 'PurchaseReturn',
+          name: 'purchase',
+          component: () => import('../views/PurchaseReturn/purchase.vue'),
+          children: [
+            {
+              path: '/PurchaseReturn/purchaseReturn',
+              name: 'purchaseReturn',
+              component: () => import('../views/PurchaseReturn/purchaseReturn.vue')
+            },
+            {
+              path: '/PurchaseReturn/purchaseStorage',
+              name: 'purchaseStorage',
+              component: () => import('../views/PurchaseReturn/purchaseStorage.vue')
+            },
+            {
+              path: '/PurchaseReturn/purchaseprint',
+              name: 'purchaseprint',
+              component: () => import('../views/PurchaseReturn/purchaseprint.vue')
+            },
+          ]
+        },
+        /*----------- 涓嬬墖鍙� ----------------*/
         {
           path: 'UnLoadGlass',
           name: 'UnLoadGlass',
           component: () => import('../views/UnLoadGlass/UnLoadGlass.vue'),
-          children:[
+          children: [
             {
               path: '/UnLoadGlass/loadmachinerack',
               name: 'loadmachinerack',
@@ -220,12 +220,12 @@
             }
           ]
         },
-         /*----------- 浠撳偍涓績 ----------------*/
-         {
+        /*----------- 浠撳偍涓績 ----------------*/
+        {
           path: 'GlassStorage',
           name: 'GlassStorage',
           component: () => import('../views/GlassStorage/GlassStorage.vue'),
-          children:[
+          children: [
             {
               path: '/GlassStorage/MaterialRackManagement',
               name: 'MaterialRackManagement',
@@ -238,13 +238,13 @@
             }
           ]
         },
- 
-         /*----------- 鍙鍖栫郴缁� ----------------*/
-         {
+
+        /*----------- 鍙鍖栫郴缁� ----------------*/
+        {
           path: 'Visualization',
           name: 'screen',
           component: () => import('../views/Visualization/screen.vue'),
-          children:[
+          children: [
             {
               path: '/Visualization/screenone',
               name: 'screenone',
@@ -261,69 +261,108 @@
               component: () => import('../views/Visualization/screenthree.vue')
             }
           ]
-         },
-/*----------- 绯荤粺绠$悊 ----------------*/
-{
-  path: 'User',
-  name: 'user',
-  component: () => import('../views/User/user.vue'),
-  children:[
-    {
-      path: '/User/userlist',
-      name: 'userlist',
-      component: () => import('../views/User/userlist.vue')
-    },
-    {
-      path: '/User/rolelist',
-      name: 'rolelist',
-      component: () => import('../views/User/rolelist.vue')
-    },
-    {
-      path: '/User/permissions',
-      name: 'permissions',
-      component: () => import('../views/User/permissions.vue')
-    }
-  ]
- },
-  /*----------- 澶у睆鏄剧ず ----------------*/
-  {
-    path: 'largescreen',
-    name: 'largescreen',
-    component: () => import('../views/largescreen/largescreen.vue'),
-    children:[
-      {
-        path: '/largescreen/largescreen',
-        name: 'largescreen',
-        component: () => import('../views/largescreen/largescreen.vue')
-      },
-    ]
-  },
-  /*----------- 鎶ュ伐绠$悊 ----------------*/
-  {
-    path: 'reportWork',
-    name: 'reportWork',
-    component: () => import('../views/ReportWork/reportWork.vue'),
-    children: [
-      {
-        path: '/ReportWork/reportWork',
-        name: 'reportWork',
-        component: () => import('../views/ReportWork/reportWork.vue')
-      },
-    ]
-  },
-  /*----------- 鎶ヨ〃绠$悊 ----------------*/
-  {
-    path: 'reportManage',
-    name: 'reportManage',
-    component: () => import('../views/Reportmanage/reportmanage.vue'),
-    children: [
-      {
-        path: '/Reportmanage/reportmanage',
-        name: 'reportManage',
-        component: () => import('../views/Reportmanage/reportmanage.vue')
-      },
-    ]
-  },
+        },
+        /*----------- 绯荤粺绠$悊 ----------------*/
+        {
+          path: 'User',
+          name: 'user',
+          component: () => import('../views/User/user.vue'),
+          children: [
+            {
+              path: '/User/userlist',
+              name: 'userlist',
+              component: () => import('../views/User/userlist.vue')
+            },
+            {
+              path: '/User/rolelist',
+              name: 'rolelist',
+              component: () => import('../views/User/rolelist.vue')
+            },
+            {
+              path: '/User/permissions',
+              name: 'permissions',
+              component: () => import('../views/User/permissions.vue')
+            }
+          ]
+        },
+        /*----------- 澶у睆鏄剧ず ----------------*/
+        {
+          path: 'largescreen',
+          name: 'largescreen',
+          component: () => import('../views/largescreen/largescreen.vue'),
+          children: [
+            {
+              path: '/largescreen/largescreen',
+              name: 'largescreen',
+              component: () => import('../views/largescreen/largescreen.vue')
+            },
+          ]
+        },
+        /*----------- 鎶ュ伐绠$悊 ----------------*/
+        {
+          path: 'reportWork',
+          name: 'reportWork',
+          component: () => import('../views/ReportWork/reportWork.vue'),
+          children: [
+            {
+              path: '/ReportWork/reportWork',
+              name: 'reportWork',
+              component: () => import('../views/ReportWork/reportWork.vue')
+            },
+          ]
+        },
+        /*----------- 澶х悊鐗囪繘鐗囨姤琛� ----------------*/
+        {
+          path: 'reportBigFeed',
+          name: 'reportBigFeed',
+          component: () => import('../views/Reportmanage/reportBigFeed.vue'),
+          children: [
+            {
+              path: '/Reportmanage/reportBigFeed',
+              name: 'reportBigFeed',
+              component: () => import('../views/Reportmanage/reportBigFeed.vue')
+            },
+          ]
+        },
+        /*----------- 澶х悊鐗囧嚭鐗囨姤琛� ----------------*/
+        {
+          path: 'reportBigOut',
+          name: 'reportBigOut',
+          component: () => import('../views/Reportmanage/reportBigOut.vue'),
+          children: [
+            {
+              path: '/Reportmanage/reportBigOut',
+              name: 'reportBigOut',
+              component: () => import('../views/Reportmanage/reportBigOut.vue')
+            },
+          ]
+        },
+        /*----------- 纾ㄨ竟鍗х悊鐗囨姤琛� ----------------*/
+        {
+          path: 'reportEdgCache',
+          name: 'reportEdgCache',
+          component: () => import('../views/Reportmanage/reportEdgCache.vue'),
+          children: [
+            {
+              path: '/Reportmanage/reportEdgCache',
+              name: 'reportEdgCache',
+              component: () => import('../views/Reportmanage/reportEdgCache.vue')
+            },
+          ]
+        },
+        /*----------- 涓嬬墖鍗х悊鐗囨姤琛� ----------------*/
+        {
+          path: 'reportDownCache',
+          name: 'reportDownCache',
+          component: () => import('../views/Reportmanage/reportDownCache.vue'),
+          children: [
+            {
+              path: '/Reportmanage/reportDownCache',
+              name: 'reportDownCache',
+              component: () => import('../views/Reportmanage/reportDownCache.vue')
+            },
+          ]
+        },
 
         /*----------- 涓┖ ----------------*/
         {
@@ -372,17 +411,17 @@
       name: 'register',
       component: () => import('../views/RegisterView.vue')
     }
-    
+
   ]
 })
- 
+
 // 瀵艰埅瀹堝崼  
-router.beforeEach((to, from, next) => {  
+router.beforeEach((to, from, next) => {
   const isAuthenticated = !!localStorage.getItem('authToken'); // 鍋囪杩欐槸浣犵殑鐧诲綍鐘舵�佹鏌ラ�昏緫  
-  if (to.matched.some(record => record.meta.requiresAuth) && !isAuthenticated) {  
+  if (to.matched.some(record => record.meta.requiresAuth) && !isAuthenticated) {
     next({ name: 'login' }); // 濡傛灉闇�瑕佺櫥褰曚絾鏈櫥褰曪紝鍒欓噸瀹氬悜鍒扮櫥褰曢〉闈�  
-  } else {  
+  } else {
     next(); // 鍚﹀垯缁х画瀵艰埅  
-  }  
-}); 
+  }
+});
 export default router
\ No newline at end of file
diff --git a/UI-Project/src/utils/constants.js b/UI-Project/src/utils/constants.js
index 31c4046..4f8c07e 100644
--- a/UI-Project/src/utils/constants.js
+++ b/UI-Project/src/utils/constants.js
@@ -1,5 +1,5 @@
- export const WebSocketHost = "192.168.1.199";
+//  export const WebSocketHost = "192.168.1.199";
 // export const WebSocketHost = "10.153.19.150";
 // export const WebSocketHost = "10.153.19.44";
-// export const WebSocketHost = "127.0.0.1";
+export const WebSocketHost = "127.0.0.1";
 export const host = "88";
diff --git a/UI-Project/src/views/NewPage.vue b/UI-Project/src/views/NewPage.vue
index 5419719..46764dc 100644
--- a/UI-Project/src/views/NewPage.vue
+++ b/UI-Project/src/views/NewPage.vue
@@ -22,6 +22,7 @@
        height: `${rect.height}px`,  
       backgroundColor:  'lightblue'}">
    <div  class="centered-text">
+  <div style="font-size: 15px;font-weight: bold;">{{ rect.sort }}</div>
   <div style="font-size: 15px;font-weight: bold;">{{ rect.process_id }}</div>  
   <div style="font-size: 15px;font-weight: bold;">{{ rect.project_no }}</div>  
   <div style="font-size: 30px;font-weight: bold;">{{ rect.widtha }}*{{ rect.heighta }}</div>  
diff --git a/UI-Project/src/views/PurchaseReturn/purchaseReturn.vue b/UI-Project/src/views/PurchaseReturn/purchaseReturn.vue
index dd073d0..c3cef19 100644
--- a/UI-Project/src/views/PurchaseReturn/purchaseReturn.vue
+++ b/UI-Project/src/views/PurchaseReturn/purchaseReturn.vue
@@ -949,6 +949,26 @@
     console.error(error);
   }
 }
+// 閽㈠寲鐐�
+const handleal11 = async () => {
+  try  {
+  const response = await request.post('/temperingGlass/temperingGlassInfo/updateTemperingStateAll', {
+    temperingLayoutId: currenttemperingLayoutId.value,
+    engineerId: currentengineerId.value,
+    state: 2,
+    })
+    if (response.code == 200) {
+      ElMessage.success('鎴愬姛锛�');
+      blinda.value = false;
+    } else {
+      ElMessage.error(response.message);
+    }
+}
+catch (error) {
+    // 澶勭悊閿欒
+    console.error(error);
+  }
+}
 // 杩涚倝鍓嶄汉宸ユ嬁璧�
 const takeouta = async () => {
   try  {
@@ -1014,12 +1034,50 @@
     console.error(error);
   }
 }
+const handleall1 = async () => {
+  try  {
+  const response = await request.post('/temperingGlass/temperingGlassInfo/updateTemperingStateAll', {
+    temperingLayoutId: currenttemperingLayoutId.value,
+    engineerId: currentengineerId.value,
+    state: 3,
+    })
+    if (response.code == 200) {
+      ElMessage.success('鎴愬姛锛�');
+      blind1.value = false;
+    } else {
+      ElMessage.error(response.message);
+    }
+}
+catch (error) {
+    // 澶勭悊閿欒
+    console.error(error);
+  }
+}
 const handletakeall33 = async () => {
   try  {
   const response = await request.post('/temperingGlass/temperingGlassInfo/updateTemperingStateAll', {
     temperingLayoutId: currenttemperingLayoutId.value,
     engineerId: currentengineerId.value,
     state: 9,
+    })
+    if (response.code == 200) {
+      ElMessage.success('鎴愬姛锛�');
+      blind3.value = false;
+    } else {
+      ElMessage.error(response.message);
+    }
+}
+catch (error) {
+    // 澶勭悊閿欒
+    console.error(error);
+  }
+}
+const handleall3 = async () => {
+  try  {
+  const response = await request.post('/temperingGlass/temperingGlassInfo/updateTemperingStateAll', {
+    temperingLayoutId: currenttemperingLayoutId.value,
+    engineerId: currentengineerId.value,
+    state: 3,
     })
     if (response.code == 200) {
       ElMessage.success('鎴愬姛锛�');
@@ -1052,6 +1110,25 @@
     console.error(error);
   }
 }
+const handleall2 = async () => {
+  try  {
+  const response = await request.post('/temperingGlass/temperingGlassInfo/updateTemperingStateAll', {
+    temperingLayoutId: currenttemperingLayoutId.value,
+    engineerId: currentengineerId.value,
+    state: 3,
+    })
+    if (response.code == 200) {
+      ElMessage.success('鎴愬姛锛�');
+      blind2.value = false;
+    } else {
+      ElMessage.error(response.message);
+    }
+}
+catch (error) {
+    // 澶勭悊閿欒
+    console.error(error);
+  }
+}
 const handletakeall44 = async () => {
   try  {
   const response = await request.post('/temperingGlass/temperingGlassInfo/updateTemperingStateAll', {
@@ -1071,12 +1148,51 @@
     console.error(error);
   }
 }
+const handleall4 = async () => {
+  try  {
+  const response = await request.post('/temperingGlass/temperingGlassInfo/updateTemperingStateAll', {
+    temperingLayoutId: currenttemperingLayoutId.value,
+    engineerId: currentengineerId.value,
+    state: 3,
+    })
+    if (response.code == 200) {
+      ElMessage.success('鎴愬姛锛�');
+      blind4.value = false;
+    } else {
+      ElMessage.error(response.message);
+    }
+}
+catch (error) {
+    // 澶勭悊閿欒
+    console.error(error);
+  }
+}
 const handletakeall4 = async () => {
   try  {
   const response = await request.post('/temperingGlass/temperingGlassInfo/updateTemperingStateAll', {
     temperingLayoutId: currenttemperingLayoutId.value,
     engineerId: currentengineerId.value,
     state: 9,
+    })
+    if (response.code == 200) {
+      ElMessage.success('鎴愬姛锛�');
+      blind4.value = false;
+    } else {
+      ElMessage.error(response.message);
+    }
+}
+catch (error) {
+    // 澶勭悊閿欒
+    console.error(error);
+  }
+}
+// 鍑虹墖
+const handleall14 = async () => {
+  try  {
+  const response = await request.post('/temperingGlass/temperingGlassInfo/updateTemperingStateAll', {
+    temperingLayoutId: currenttemperingLayoutId.value,
+    engineerId: currentengineerId.value,
+    state: 4,
     })
     if (response.code == 200) {
       ElMessage.success('鎴愬姛锛�');
@@ -1484,6 +1600,9 @@
         <el-button type="info" plain @click="handletakeall1" :disabled="!cantakeall" style="width: 150px;margin-left: 10px;margin-top: 10px;">
           {{ $t('order.takeall') }}
         </el-button>
+        <el-button type="info" plain @click="handleall1" :disabled="!cantakeall" style="width: 150px;margin-left: 10px;margin-top: 10px;">
+          {{ $t('processCard.outfurnace') }}
+        </el-button>
   </el-dialog>  
 <el-dialog v-model="blind2" top="30vh" width="15%" style="text-align: center;" @close="handleDialogClose2">
         <el-button :disabled="!canSelectProject2" type="warning" plain :icon="Delete" @click="handleDamage2"  style="width: 150px;margin-left: 10px;">
@@ -1495,6 +1614,9 @@
         </el-button>
         <el-button type="info" plain @click="handletakeall2" :disabled="!cantakeall" style="width: 150px;margin-left: 10px;margin-top: 10px;">
           {{ $t('order.takeall') }}
+        </el-button>
+        <el-button type="info" plain @click="handleall2" :disabled="!cantakeall" style="width: 150px;margin-left: 10px;margin-top: 10px;">
+          {{ $t('processCard.outfurnace') }}
         </el-button>
   </el-dialog>  
 <el-dialog v-model="blind3" top="30vh" width="15%" style="text-align: center;" @close="handleDialogClose3">
@@ -1508,6 +1630,9 @@
         <el-button type="info" plain @click="handletakeall33" :disabled="!cantakeall" style="width: 150px;margin-left: 10px;margin-top: 10px;">
           {{ $t('order.takeall') }}
         </el-button>
+        <el-button type="info" plain @click="handleall3" :disabled="!cantakeall" style="width: 150px;margin-left: 10px;margin-top: 10px;">
+          {{ $t('processCard.outfurnace') }}
+        </el-button>
   </el-dialog>  
 <el-dialog v-model="blind4" top="30vh" width="15%" style="text-align: center;" @close="handleDialogClose4">
         <el-button :disabled="!canSelectProject4" type="warning" plain :icon="Delete" @click="handleDamage4"  style="width: 150px;margin-left: 10px;">
@@ -1519,6 +1644,9 @@
         </el-button>
         <el-button type="info" plain @click="handletakeall44" :disabled="!cantakeall" style="width: 150px;margin-left: 10px;margin-top: 10px;">
           {{ $t('order.takeall') }}
+        </el-button>
+        <el-button type="info" plain @click="handleall4" :disabled="!cantakeall" style="width: 150px;margin-left: 10px;margin-top: 10px;">
+          {{ $t('processCard.outfurnace') }}
         </el-button>
   </el-dialog>  
   <!-- 杩涚倝鍓� -->
@@ -1536,6 +1664,9 @@
         <el-button type="info" plain @click="handletakeall3" :disabled="!cantakeall" style="width: 150px;margin-left: 10px;margin-top: 10px;">
           {{ $t('order.takeall') }}
         </el-button>
+        <el-button type="info" plain @click="handleal11" :disabled="!cantakeall" style="width: 150px;margin-left: 10px;margin-top: 10px;">
+          {{ $t('processCard.intofurnace') }}
+        </el-button>
   </el-dialog>  
   <!-- 宸插嚭鐐� -->
 <el-dialog v-model="blindb" top="30vh" width="15%" style="text-align: center;" @close="handleDialogCloseb">
@@ -1549,6 +1680,10 @@
         <el-button type="info" plain @click="handletakeall4" :disabled="!cantakeall" style="width: 150px;margin-left: 10px;margin-top: 10px;">
           {{ $t('order.takeall') }}
         </el-button>
+        
+        <el-button type="info" plain @click="handleall14" :disabled="!cantakeall" style="width: 150px;margin-left: 10px;margin-top: 10px;">
+          {{ $t('searchOrder.outfilm') }}
+        </el-button>
         <!-- <el-button type="success" plain :icon="Edit" @click="takeonb" :disabled="!canonb" style="width: 150px;margin-left: 10px;margin-top: 10px;">
           {{ $t('order.takeon') }}
         </el-button> -->
diff --git a/UI-Project/src/views/Reportmanage/reportBigFeed.vue b/UI-Project/src/views/Reportmanage/reportBigFeed.vue
new file mode 100644
index 0000000..64870bc
--- /dev/null
+++ b/UI-Project/src/views/Reportmanage/reportBigFeed.vue
@@ -0,0 +1,161 @@
+<template>
+  <div style="height: 600px;">
+    <div style="display: flex; flex-direction: row; align-items: center; margin-top: 20px;">
+      <span style="margin-left: 10px;" class="demonstration">{{ $t('reportmanage.productiontime') }}</span>
+      <el-date-picker style="margin-left: 10px;" v-model="timeRange" type="daterange" format="YYYY/MM/DD"
+        value-format="YYYY-MM-DD" :start-placeholder="$t('reportmanage.starttime')"
+        :end-placeholder="$t('reportmanage.endtime')" :default-time="defaultTime" />
+      <el-input v-model="report.targetSlot" style="margin-left: 15px;width: 150px" placeholder="璇疯緭鍏ユ牸瀛愬彿" />
+      <el-input v-model="report.width" style="margin-left: 15px;width: 150px" placeholder="璇疯緭鍏ュ" />
+      <el-input v-model="report.height" style="margin-left: 15px;width: 150px" placeholder="璇疯緭鍏ラ珮" />
+      <!-- <el-select v-model="report.taskType" :placeholder="$t('reportmanage.ctype')" style="margin-left: 10px;">
+        <el-option :label="$t('reportmanage.all')" value="0"></el-option>
+        <el-option :label="$t('reportmanage.go')" value="1"></el-option>
+        <el-option :label="$t('reportmanage.nogo')" value="2"></el-option>
+      </el-select> -->
+      <el-select v-model="report.taskState" :placeholder="$t('reportmanage.cstate')" style="margin-left: 10px;">
+        <el-option :label="$t('reportmanage.all')" value="-1"></el-option>
+        <el-option :label="$t('reportmanage.scan')" value="0"></el-option>
+        <el-option :label="$t('reportmanage.feeding')" value="1"></el-option>
+        <el-option :label="$t('reportmanage.in')" value="2"></el-option>
+        <el-option :label="$t('reportmanage.car')" value="3"></el-option>
+        <el-option :label="$t('reportmanage.cage')" value="4"></el-option>
+      </el-select>
+      <el-select v-model="report.line" :placeholder="$t('reportmanage.cprocess')" style="margin-left: 10px;">
+        <el-option :label="$t('reportmanage.all')" value="0"></el-option>
+        <el-option :label="$t('reportmanage.oneline')" value="2001"></el-option>
+        <el-option :label="$t('reportmanage.twoline')" value="2002"></el-option>
+      </el-select>
+      <el-button type="primary" style="margin-left: 10px;" @click="selectReportData()">{{ $t('reportmanage.inquire')
+        }}</el-button>
+    </div>
+    <el-card style="flex: 1;margin-left: 10px;margin-top: 20px;" v-loading="loading">
+      <div style="margin-bottom: 20px">
+        <el-row style="margin-top: -15px;margin-bottom: -2px;">
+          <el-col :span="3">
+            <div id="dta" style="font-size: 15px;">
+              <el-form-item :label="$t('reportmanage.totalCounts')" style="width: 14vw">
+                {{ totalCounts }}
+              </el-form-item>
+            </div>
+          </el-col>
+          <el-col :span="3">
+            <div id="dt" style="font-size: 15px;">
+              <el-form-item :label="$t('reportmanage.totalAreas')" style="width: 14vw">
+                {{ totalAreas }}
+              </el-form-item>
+            </div>
+          </el-col>
+          <el-col :span="3">
+            <div id="dt" style="font-size: 15px;">
+              <el-form-item :label="$t('reportmanage.totalDamages')" style="width: 14vw">
+                {{ totalDamages }}
+              </el-form-item>
+            </div>
+          </el-col>
+          <el-col :span="3">
+            <div id="dt" style="font-size: 15px;">
+              <el-form-item :label="$t('reportmanage.totalTakes')" style="width: 14vw">
+                {{ totalTakes }}
+              </el-form-item>
+            </div>
+          </el-col>
+        </el-row>
+    </div>
+      <div style="width: 98%; height: calc(100% - 35px); overflow-y: auto;">
+        <el-table height="700" ref="table" :data="reportData"
+          :header-cell-style="{ background: '#F2F3F5 ', color: '#1D2129' }">
+          <el-table-column prop="id" align="center" :label="$t('reportmanage.id')"
+            min-width="120" />
+          <el-table-column prop="glassId" align="center" :label="$t('reportmanage.glassID')" min-width="130" />
+          <el-table-column prop="targetSlot" align="center" :label="$t('reportmanage.targetSlot')"
+            min-width="120" />
+          <el-table-column prop="line" align="center" :label="$t('reportmanage.line')" min-width="120" />
+          <el-table-column prop="taskState" align="center" :label="$t('reportmanage.state')" min-width="120" />
+          <el-table-column prop="width" align="center" :label="$t('reportmanage.width')" min-width="120" />
+          <el-table-column prop="height" align="center" :label="$t('reportmanage.height')"
+            min-width="120" />
+          <el-table-column prop="createTime" align="center" :label="$t('reportmanage.createTime')"
+            min-width="230" />
+        </el-table>
+      </div>
+    </el-card>
+  </div>
+</template>
+<script setup>
+import { Delete, Upload } from '@element-plus/icons-vue'
+import { ElMessage, ElMessageBox } from 'element-plus'
+import { ref, onMounted, onBeforeUnmount, reactive, computed, shallowRef, onUnmounted, watchEffect } from "vue";
+import request from "@/utils/request"
+import { WebSocketHost, host } from '@/utils/constants'
+import { initializeWebSocket, closeWebSocket } from '@/utils/WebSocketService';
+import { useI18n } from 'vue-i18n'
+const { t } = useI18n()
+const report = ref({
+  targetSlot: '',
+  taskType: '0',
+  taskState: '-1',
+  line: '0',
+  width: '',
+  height: ''
+});
+const reportData = ref([])
+const endDate = new Date();
+const startDate = new Date();
+startDate.setDate(endDate.getDate() - 100);  // 鑾峰彇涓�涓槦鏈熷墠鐨勬椂闂�
+// 鏍煎紡鍖栦负 "YYYY-MM-DD" 鏍煎紡
+const formatDate = (date) => {
+  const year = date.getFullYear();
+  const month = String(date.getMonth() + 1).padStart(2, '0');
+  const day = String(date.getDate()).padStart(2, '0');
+  return `${year}-${month}-${day}`;
+};
+
+const timeRange = ref([formatDate(startDate), formatDate(endDate)]);
+const totalCounts = ref(0);
+const totalAreas = ref(0);
+const totalDamages = ref(0);
+const totalTakes = ref(0);
+
+// 鏌ヨ鏁版嵁
+const selectReportData = async () => {
+  const response = await request.post("/cacheVerticalGlass/bigStorageCageFeedTask/selectBigStorageCageFeedTask?startTime="+timeRange.value[0]+"&&endTime="+timeRange.value[1]+"", {
+    startTime: timeRange.value[0],
+    endTime: timeRange.value[1],
+    targetSlot: report.value.targetSlot,
+    width: report.value.width,
+    height: report.value.height,
+    taskType: report.value.taskType,
+    taskState: report.value.taskState,
+    line: report.value.line
+  })
+  if (response.code === 200) {
+    reportData.value = response.data;
+    let totalCount = 0;
+    let totalArea = 0;
+    let totalDamage = 0;
+    let totalTake = 0;
+    response.data.forEach(item => {
+        if(item.taskState == 4){
+          totalCount+=1;
+          totalArea+=item.width*item.height/1000000;
+        }
+        if(item.taskState == 8){
+          totalDamage+=1;
+        }
+        if(item.taskState == 9){
+          totalTake+=1;
+        }
+      });
+      totalCounts.value = totalCount;
+      totalAreas.value = totalArea.toFixed(2);
+      totalDamages.value = totalDamage;
+      totalTakes.value = totalTake;
+    ElMessage.success(response.message);
+  } else {
+    ElMessage.error(response.message);
+  }
+
+};
+
+</script>
\ No newline at end of file
diff --git a/UI-Project/src/views/Reportmanage/reportBigOut.vue b/UI-Project/src/views/Reportmanage/reportBigOut.vue
new file mode 100644
index 0000000..e37981c
--- /dev/null
+++ b/UI-Project/src/views/Reportmanage/reportBigOut.vue
@@ -0,0 +1,171 @@
+<template>
+  <div style="height: 600px;">
+    <div style="display: flex; flex-direction: row; align-items: center; margin-top: 20px;">
+      <span style="margin-left: 10px;" class="demonstration">{{ $t('reportmanage.productiontime') }}</span>
+      <el-date-picker style="margin-left: 10px;" v-model="timeRange" type="daterange" format="YYYY/MM/DD"
+        value-format="YYYY-MM-DD" :start-placeholder="$t('reportmanage.starttime')"
+        :end-placeholder="$t('reportmanage.endtime')" :default-time="defaultTime" />
+      <el-input v-model="report.targetSlot" style="margin-left: 15px;width: 150px" placeholder="璇疯緭鍏ユ牸瀛愬彿" />
+      <el-input v-model="report.width" style="margin-left: 15px;width: 150px" placeholder="璇疯緭鍏ュ" />
+      <el-input v-model="report.height" style="margin-left: 15px;width: 150px" placeholder="璇疯緭鍏ラ珮" />
+      <!-- <el-select v-model="report.taskType" :placeholder="$t('reportmanage.ctype')" style="margin-left: 10px;">
+        <el-option :label="$t('reportmanage.all')" value="0"></el-option>
+        <el-option :label="$t('reportmanage.go')" value="1"></el-option>
+        <el-option :label="$t('reportmanage.nogo')" value="2"></el-option>
+      </el-select> -->
+      <el-select v-model="report.taskState" :placeholder="$t('reportmanage.cstate')" style="margin-left: 10px;">
+        <el-option :label="$t('reportmanage.all')" value="-1"></el-option>
+        <el-option :label="$t('reportmanage.cage')" value="1"></el-option>
+        <el-option :label="$t('reportmanage.car')" value="2"></el-option>
+        <el-option :label="$t('reportmanage.outed')" value="3"></el-option>
+      </el-select>
+      <el-select v-model="report.line" :placeholder="$t('reportmanage.cprocess')" style="margin-left: 10px;">
+        <el-option :label="$t('reportmanage.all')" value="0"></el-option>
+        <el-option :label="$t('reportmanage.oneline')" value="3001"></el-option>
+        <el-option :label="$t('reportmanage.twoline')" value="3002"></el-option>
+      </el-select>
+      <el-button type="primary" style="margin-left: 10px;" @click="selectReportData()">{{ $t('reportmanage.inquire')
+      }}</el-button>
+    </div>
+    <el-card style="flex: 1;margin-left: 10px;" v-loading="loading">
+      <div style="margin-bottom: 20px">
+        <el-row style="margin-top: -15px;margin-bottom: -2px;">
+          <el-col :span="3">
+            <div id="dta" style="font-size: 15px;">
+              <el-form-item :label="$t('reportmanage.totalCounts')" style="width: 14vw">
+                {{ totalCounts }}
+              </el-form-item>
+            </div>
+          </el-col>
+          <el-col :span="3">
+            <div id="dt" style="font-size: 15px;">
+              <el-form-item :label="$t('reportmanage.totalAreas')" style="width: 14vw">
+                {{ totalAreas }}
+              </el-form-item>
+            </div>
+          </el-col>
+          <el-col :span="3">
+            <div id="dt" style="font-size: 15px;">
+              <el-form-item :label="$t('reportmanage.totalDamages')" style="width: 14vw">
+                {{ totalDamages }}
+              </el-form-item>
+            </div>
+          </el-col>
+          <el-col :span="3">
+            <div id="dt" style="font-size: 15px;">
+              <el-form-item :label="$t('reportmanage.totalTakes')" style="width: 14vw">
+                {{ totalTakes }}
+              </el-form-item>
+            </div>
+          </el-col>
+        </el-row>
+      </div>
+      <div style="width: 98%; height: calc(100% - 35px); overflow-y: auto;">
+        <el-table height="700" ref="table" :data="reportData"
+          :header-cell-style="{ background: '#F2F3F5 ', color: '#1D2129' }">
+          <el-table-column prop="id" align="center" :label="$t('reportmanage.id')" min-width="120" />
+          <el-table-column prop="glassId" align="center" :label="$t('reportmanage.glassID')" min-width="130" />
+          <el-table-column prop="startSlot" align="center" :label="$t('reportmanage.targetSlot')" min-width="120" />
+          <el-table-column prop="endSlot" align="center" :label="$t('reportmanage.line')" min-width="120" />
+          <el-table-column prop="taskState" align="center" :label="$t('reportmanage.state')" min-width="120">
+            <template #default="scope">
+              <span v-if="scope.row.taskState == 1">{{ $t('reportmanage.cage') }}</span>
+              <span v-if="scope.row.taskState == 2">{{ $t('reportmanage.car') }}</span>
+              <span v-if="scope.row.taskState == 3">{{ $t('reportmanage.outed') }}</span>
+            </template>
+          </el-table-column>
+
+          <el-table-column prop="width" align="center" :label="$t('reportmanage.width')" min-width="120">
+            <template #default="scope">
+              {{scope.row.width/10}}
+            </template>
+          </el-table-column>
+
+          <el-table-column prop="height" align="center" :label="$t('reportmanage.height')" min-width="120" >
+            <template #default="scope">
+              {{scope.row.height/10}}
+            </template>
+          </el-table-column>
+          <el-table-column prop="createTime" align="center" :label="$t('reportmanage.createTime')" min-width="230" />
+        </el-table>
+      </div>
+    </el-card>
+  </div>
+</template>
+<script setup>
+import { Delete, Upload } from '@element-plus/icons-vue'
+import { ElMessage, ElMessageBox } from 'element-plus'
+import { ref, onMounted, onBeforeUnmount, reactive, computed, shallowRef, onUnmounted, watchEffect } from "vue";
+import request from "@/utils/request"
+import { WebSocketHost, host } from '@/utils/constants'
+import { initializeWebSocket, closeWebSocket } from '@/utils/WebSocketService';
+import { useI18n } from 'vue-i18n'
+const { t } = useI18n()
+const report = ref({
+  targetSlot: '',
+  taskType: '0',
+  taskState: '-1',
+  line: '0',
+  width: '',
+  height: ''
+});
+const reportData = ref([])
+const endDate = new Date();
+const startDate = new Date();
+startDate.setDate(endDate.getDate() - 100);  // 鑾峰彇涓�涓槦鏈熷墠鐨勬椂闂�
+// 鏍煎紡鍖栦负 "YYYY-MM-DD" 鏍煎紡
+const formatDate = (date) => {
+  const year = date.getFullYear();
+  const month = String(date.getMonth() + 1).padStart(2, '0');
+  const day = String(date.getDate()).padStart(2, '0');
+  return `${year}-${month}-${day}`;
+};
+
+const timeRange = ref([formatDate(startDate), formatDate(endDate)]);
+const totalCounts = ref(0);
+const totalAreas = ref(0);
+const totalDamages = ref(0);
+const totalTakes = ref(0);
+
+// 鏌ヨ鏁版嵁
+const selectReportData = async () => {
+  const response = await request.post("/cacheVerticalGlass/bigStorageCageOutTask/selectBigStorageCageOutTask?startTime=" + timeRange.value[0] + "&&endTime=" + timeRange.value[1] + "", {
+    startTime: timeRange.value[0],
+    endTime: timeRange.value[1],
+    startSlot: report.value.targetSlot,
+    width: report.value.width,
+    height: report.value.height,
+    taskType: report.value.taskType,
+    taskState: report.value.taskState,
+    endSlot: report.value.line
+  })
+  if (response.code === 200) {
+    reportData.value = response.data;
+    let totalCount = 0;
+    let totalArea = 0;
+    let totalDamage = 0;
+    let totalTake = 0;
+    response.data.forEach(item => {
+      if (item.taskState == 3) {
+        totalCount += 1;
+        totalArea += item.width * item.height / 100000000;
+      }
+      if (item.taskState == 8) {
+        totalDamage += 1;
+      }
+      if (item.taskState == 9) {
+        totalTake += 1;
+      }
+    });
+    totalCounts.value = totalCount;
+    totalAreas.value = totalArea.toFixed(2);
+    totalDamages.value = totalDamage;
+    totalTakes.value = totalTake;
+    ElMessage.success(response.message);
+  } else {
+    ElMessage.error(response.message);
+  }
+
+};
+
+</script>
\ No newline at end of file
diff --git a/UI-Project/src/views/Reportmanage/reportDownCache.vue b/UI-Project/src/views/Reportmanage/reportDownCache.vue
new file mode 100644
index 0000000..7d85115
--- /dev/null
+++ b/UI-Project/src/views/Reportmanage/reportDownCache.vue
@@ -0,0 +1,164 @@
+<template>
+  <div style="height: 600px;">
+    <div style="display: flex; flex-direction: row; align-items: center; margin-top: 20px;">
+      <span style="margin-left: 10px;" class="demonstration">{{ $t('reportmanage.productiontime') }}</span>
+      <el-date-picker style="margin-left: 10px;" v-model="timeRange" type="daterange" format="YYYY/MM/DD"
+        value-format="YYYY-MM-DD" :start-placeholder="$t('reportmanage.starttime')"
+        :end-placeholder="$t('reportmanage.endtime')" :default-time="defaultTime" />
+      <el-input v-model="report.targetSlot" style="margin-left: 15px;width: 150px" placeholder="璇疯緭鍏ユ牸瀛愬彿" />
+      <!-- <el-input v-model="report.width" style="margin-left: 15px;width: 150px" placeholder="璇疯緭鍏ュ" />
+      <el-input v-model="report.height" style="margin-left: 15px;width: 150px" placeholder="璇疯緭鍏ラ珮" /> -->
+      <el-select v-model="report.taskType" :placeholder="$t('reportmanage.ctype')" style="margin-left: 10px;">
+        <el-option :label="$t('reportmanage.all')" value="-1"></el-option>
+        <el-option :label="$t('reportmanage.incomplete')" value="0"></el-option>
+        <el-option :label="$t('reportmanage.complete')" value="1"></el-option>
+      </el-select>
+      <el-select v-model="report.taskState" :placeholder="$t('reportmanage.cstate')" style="margin-left: 10px;">
+        <el-option :label="$t('reportmanage.all')" value="-1"></el-option>
+        <el-option :label="$t('reportmanage.feed')" value="1"></el-option>
+        <el-option :label="$t('reportmanage.out')" value="2"></el-option>
+        <el-option :label="$t('reportmanage.straightthrough')" value="3"></el-option>
+      </el-select>
+      <!-- <el-select v-model="report.line" :placeholder="$t('reportmanage.cprocess')" style="margin-left: 10px;">
+        <el-option :label="$t('reportmanage.all')" value="0"></el-option>
+        <el-option :label="$t('reportmanage.oneline')" value="2001"></el-option>
+        <el-option :label="$t('reportmanage.twoline')" value="2002"></el-option>
+      </el-select> -->
+      <el-button type="primary" style="margin-left: 10px;" @click="selectReportData()">{{ $t('reportmanage.inquire')
+      }}</el-button>
+    </div>
+    <el-card style="flex: 1;margin-left: 10px;" v-loading="loading">
+      <!-- <div style="margin-bottom: 20px">
+        <el-row style="margin-top: -15px;margin-bottom: -2px;">
+          <el-col :span="3">
+            <div id="dta" style="font-size: 15px;">
+              <el-form-item :label="$t('reportmanage.totalCounts')" style="width: 14vw">
+                {{ totalCounts }}
+              </el-form-item>
+            </div>
+          </el-col>
+          <el-col :span="3">
+            <div id="dt" style="font-size: 15px;">
+              <el-form-item :label="$t('reportmanage.totalAreas')" style="width: 14vw">
+                {{ totalAreas }}
+              </el-form-item>
+            </div>
+          </el-col>
+          <el-col :span="3">
+            <div id="dt" style="font-size: 15px;">
+              <el-form-item :label="$t('reportmanage.totalDamages')" style="width: 14vw">
+                {{ totalDamages }}
+              </el-form-item>
+            </div>
+          </el-col>
+          <el-col :span="3">
+            <div id="dt" style="font-size: 15px;">
+              <el-form-item :label="$t('reportmanage.totalTakes')" style="width: 14vw">
+                {{ totalTakes }}
+              </el-form-item>
+            </div>
+          </el-col>
+        </el-row>
+      </div> -->
+      <div style="width: 98%; height: calc(100% - 35px); overflow-y: auto;">
+        <el-table height="750" ref="table" :data="reportData"
+          :header-cell-style="{ background: '#F2F3F5 ', color: '#1D2129' }">
+          <el-table-column prop="glassId" align="center" :label="$t('reportmanage.glassID')" min-width="130" />
+          <el-table-column prop="startCell" align="center" :label="$t('reportmanage.targetSlot')" min-width="120" />
+          <el-table-column prop="endCell" align="center" :label="$t('reportmanage.endSlot')" min-width="120" />
+          <el-table-column prop="taskStatus" align="center" :label="$t('reportmanage.state')" min-width="120">
+            <template #default="scope">
+              <span v-if="scope.row.taskStatus == 0">{{ $t('reportmanage.incomplete') }}</span>
+              <span v-if="scope.row.taskStatus == 1">{{ $t('reportmanage.complete') }}</span>
+            </template>
+          </el-table-column>
+          <el-table-column prop="taskType" align="center" :label="$t('reportmanage.type')" min-width="120">
+            <template #default="scope">
+              <span v-if="scope.row.taskType == 1">{{ $t('reportmanage.cage') }}</span>
+              <span v-if="scope.row.taskType == 2">{{ $t('reportmanage.out') }}</span>
+              <span v-if="scope.row.taskType == 3">{{ $t('reportmanage.straightthrough') }}</span>
+            </template>
+          </el-table-column>
+          <el-table-column prop="createTime" align="center" :label="$t('reportmanage.createTime')" min-width="230" />
+        </el-table>
+      </div>
+    </el-card>
+  </div>
+</template>
+<script setup>
+import { Delete, Upload } from '@element-plus/icons-vue'
+import { ElMessage, ElMessageBox } from 'element-plus'
+import { ref, onMounted, onBeforeUnmount, reactive, computed, shallowRef, onUnmounted, watchEffect } from "vue";
+import request from "@/utils/request"
+import { WebSocketHost, host } from '@/utils/constants'
+import { initializeWebSocket, closeWebSocket } from '@/utils/WebSocketService';
+import { useI18n } from 'vue-i18n'
+const { t } = useI18n()
+const report = ref({
+  targetSlot: '',
+  taskType: '-1',
+  taskState: '-1',
+  line: '0',
+  width: '',
+  height: ''
+});
+const reportData = ref([])
+const endDate = new Date();
+const startDate = new Date();
+startDate.setDate(endDate.getDate() - 100);  // 鑾峰彇涓�涓槦鏈熷墠鐨勬椂闂�
+// 鏍煎紡鍖栦负 "YYYY-MM-DD" 鏍煎紡
+const formatDate = (date) => {
+  const year = date.getFullYear();
+  const month = String(date.getMonth() + 1).padStart(2, '0');
+  const day = String(date.getDate()).padStart(2, '0');
+  return `${year}-${month}-${day}`;
+};
+
+const timeRange = ref([formatDate(startDate), formatDate(endDate)]);
+const totalCounts = ref(0);
+const totalAreas = ref(0);
+const totalDamages = ref(0);
+const totalTakes = ref(0);
+
+// 鏌ヨ鏁版嵁
+const selectReportData = async () => {
+  const response = await request.post("/unLoadGlass/downGlassTask/selectDownGlassTask?startTime=" + timeRange.value[0] + "&&endTime=" + timeRange.value[1] + "", {
+    startTime: timeRange.value[0],
+    endTime: timeRange.value[1],
+    startCell: report.value.targetSlot,
+    width: report.value.width,
+    height: report.value.height,
+    taskType: report.value.taskType,
+    taskStatus: report.value.taskState,
+    endCell: report.value.line
+  })
+  if (response.code === 200) {
+    reportData.value = response.data;
+    let totalCount = 0;
+    let totalArea = 0;
+    let totalDamage = 0;
+    let totalTake = 0;
+    // response.data.forEach(item => {
+    //   if (item.taskState == 3) {
+    //     totalCount += 1;
+    //     totalArea += item.width * item.height / 100000000;
+    //   }
+    //   if (item.taskState == 8) {
+    //     totalDamage += 1;
+    //   }
+    //   if (item.taskState == 9) {
+    //     totalTake += 1;
+    //   }
+    // });
+    totalCounts.value = totalCount;
+    totalAreas.value = totalArea.toFixed(2);
+    totalDamages.value = totalDamage;
+    totalTakes.value = totalTake;
+    ElMessage.success(response.message);
+  } else {
+    ElMessage.error(response.message);
+  }
+
+};
+
+</script>
\ No newline at end of file
diff --git a/UI-Project/src/views/Reportmanage/reportEdgCache.vue b/UI-Project/src/views/Reportmanage/reportEdgCache.vue
new file mode 100644
index 0000000..14a92ac
--- /dev/null
+++ b/UI-Project/src/views/Reportmanage/reportEdgCache.vue
@@ -0,0 +1,164 @@
+<template>
+  <div style="height: 600px;">
+    <div style="display: flex; flex-direction: row; align-items: center; margin-top: 20px;">
+      <span style="margin-left: 10px;" class="demonstration">{{ $t('reportmanage.productiontime') }}</span>
+      <el-date-picker style="margin-left: 10px;" v-model="timeRange" type="daterange" format="YYYY/MM/DD"
+        value-format="YYYY-MM-DD" :start-placeholder="$t('reportmanage.starttime')"
+        :end-placeholder="$t('reportmanage.endtime')" :default-time="defaultTime" />
+      <el-input v-model="report.targetSlot" style="margin-left: 15px;width: 150px" placeholder="璇疯緭鍏ユ牸瀛愬彿" />
+      <!-- <el-input v-model="report.width" style="margin-left: 15px;width: 150px" placeholder="璇疯緭鍏ュ" />
+      <el-input v-model="report.height" style="margin-left: 15px;width: 150px" placeholder="璇疯緭鍏ラ珮" /> -->
+      <el-select v-model="report.taskType" :placeholder="$t('reportmanage.ctype')" style="margin-left: 10px;">
+        <el-option :label="$t('reportmanage.all')" value="-1"></el-option>
+        <el-option :label="$t('reportmanage.incomplete')" value="0"></el-option>
+        <el-option :label="$t('reportmanage.complete')" value="1"></el-option>
+      </el-select>
+      <el-select v-model="report.taskState" :placeholder="$t('reportmanage.cstate')" style="margin-left: 10px;">
+        <el-option :label="$t('reportmanage.all')" value="-1"></el-option>
+        <el-option :label="$t('reportmanage.feed')" value="1"></el-option>
+        <el-option :label="$t('reportmanage.out')" value="2"></el-option>
+        <el-option :label="$t('reportmanage.straightthrough')" value="3"></el-option>
+      </el-select>
+      <el-select v-model="report.line" :placeholder="$t('reportmanage.cprocess')" style="margin-left: 10px;">
+        <el-option :label="$t('reportmanage.all')" value="0"></el-option>
+        <el-option :label="$t('reportmanage.oneline')" value="2001"></el-option>
+        <el-option :label="$t('reportmanage.twoline')" value="2002"></el-option>
+      </el-select>
+      <el-button type="primary" style="margin-left: 10px;" @click="selectReportData()">{{ $t('reportmanage.inquire')
+      }}</el-button>
+    </div>
+    <el-card style="flex: 1;margin-left: 10px;" v-loading="loading">
+      <!-- <div style="margin-bottom: 20px">
+        <el-row style="margin-top: -15px;margin-bottom: -2px;">
+          <el-col :span="3">
+            <div id="dta" style="font-size: 15px;">
+              <el-form-item :label="$t('reportmanage.totalCounts')" style="width: 14vw">
+                {{ totalCounts }}
+              </el-form-item>
+            </div>
+          </el-col>
+          <el-col :span="3">
+            <div id="dt" style="font-size: 15px;">
+              <el-form-item :label="$t('reportmanage.totalAreas')" style="width: 14vw">
+                {{ totalAreas }}
+              </el-form-item>
+            </div>
+          </el-col>
+          <el-col :span="3">
+            <div id="dt" style="font-size: 15px;">
+              <el-form-item :label="$t('reportmanage.totalDamages')" style="width: 14vw">
+                {{ totalDamages }}
+              </el-form-item>
+            </div>
+          </el-col>
+          <el-col :span="3">
+            <div id="dt" style="font-size: 15px;">
+              <el-form-item :label="$t('reportmanage.totalTakes')" style="width: 14vw">
+                {{ totalTakes }}
+              </el-form-item>
+            </div>
+          </el-col>
+        </el-row>
+      </div> -->
+      <div style="width: 98%; height: calc(100% - 35px); overflow-y: auto;">
+        <el-table height="750" ref="table" :data="reportData"
+          :header-cell-style="{ background: '#F2F3F5 ', color: '#1D2129' }">
+          <el-table-column prop="glassId" align="center" :label="$t('reportmanage.glassID')" min-width="130" />
+          <el-table-column prop="startCell" align="center" :label="$t('reportmanage.targetSlot')" min-width="120" />
+          <el-table-column prop="endCell" align="center" :label="$t('reportmanage.line')" min-width="120" />
+          <el-table-column prop="taskStatus" align="center" :label="$t('reportmanage.state')" min-width="120">
+            <template #default="scope">
+              <span v-if="scope.row.taskStatus == 0">{{ $t('reportmanage.incomplete') }}</span>
+              <span v-if="scope.row.taskStatus == 1">{{ $t('reportmanage.complete') }}</span>
+            </template>
+          </el-table-column>
+          <el-table-column prop="taskType" align="center" :label="$t('reportmanage.type')" min-width="120">
+            <template #default="scope">
+              <span v-if="scope.row.taskType == 1">{{ $t('reportmanage.cage') }}</span>
+              <span v-if="scope.row.taskType == 2">{{ $t('reportmanage.out') }}</span>
+              <span v-if="scope.row.taskType == 3">{{ $t('reportmanage.straightthrough') }}</span>
+            </template>
+          </el-table-column>
+          <el-table-column prop="createTime" align="center" :label="$t('reportmanage.createTime')" min-width="230" />
+        </el-table>
+      </div>
+    </el-card>
+  </div>
+</template>
+<script setup>
+import { Delete, Upload } from '@element-plus/icons-vue'
+import { ElMessage, ElMessageBox } from 'element-plus'
+import { ref, onMounted, onBeforeUnmount, reactive, computed, shallowRef, onUnmounted, watchEffect } from "vue";
+import request from "@/utils/request"
+import { WebSocketHost, host } from '@/utils/constants'
+import { initializeWebSocket, closeWebSocket } from '@/utils/WebSocketService';
+import { useI18n } from 'vue-i18n'
+const { t } = useI18n()
+const report = ref({
+  targetSlot: '',
+  taskType: '-1',
+  taskState: '-1',
+  line: '0',
+  width: '',
+  height: ''
+});
+const reportData = ref([])
+const endDate = new Date();
+const startDate = new Date();
+startDate.setDate(endDate.getDate() - 100);  // 鑾峰彇涓�涓槦鏈熷墠鐨勬椂闂�
+// 鏍煎紡鍖栦负 "YYYY-MM-DD" 鏍煎紡
+const formatDate = (date) => {
+  const year = date.getFullYear();
+  const month = String(date.getMonth() + 1).padStart(2, '0');
+  const day = String(date.getDate()).padStart(2, '0');
+  return `${year}-${month}-${day}`;
+};
+
+const timeRange = ref([formatDate(startDate), formatDate(endDate)]);
+const totalCounts = ref(0);
+const totalAreas = ref(0);
+const totalDamages = ref(0);
+const totalTakes = ref(0);
+
+// 鏌ヨ鏁版嵁
+const selectReportData = async () => {
+  const response = await request.post("/cacheGlass/taskCache/selectTaskCache?startTime=" + timeRange.value[0] + "&&endTime=" + timeRange.value[1] + "", {
+    startTime: timeRange.value[0],
+    endTime: timeRange.value[1],
+    startCell: report.value.targetSlot,
+    width: report.value.width,
+    height: report.value.height,
+    taskType: report.value.taskType,
+    taskStatus: report.value.taskState,
+    endCell: report.value.line
+  })
+  if (response.code === 200) {
+    reportData.value = response.data;
+    let totalCount = 0;
+    let totalArea = 0;
+    let totalDamage = 0;
+    let totalTake = 0;
+    // response.data.forEach(item => {
+    //   if (item.taskState == 3) {
+    //     totalCount += 1;
+    //     totalArea += item.width * item.height / 100000000;
+    //   }
+    //   if (item.taskState == 8) {
+    //     totalDamage += 1;
+    //   }
+    //   if (item.taskState == 9) {
+    //     totalTake += 1;
+    //   }
+    // });
+    totalCounts.value = totalCount;
+    totalAreas.value = totalArea.toFixed(2);
+    totalDamages.value = totalDamage;
+    totalTakes.value = totalTake;
+    ElMessage.success(response.message);
+  } else {
+    ElMessage.error(response.message);
+  }
+
+};
+
+</script>
\ No newline at end of file
diff --git a/UI-Project/src/views/Slicecage/slicecage.vue b/UI-Project/src/views/Slicecage/slicecage.vue
index 635d246..8a60018 100644
--- a/UI-Project/src/views/Slicecage/slicecage.vue
+++ b/UI-Project/src/views/Slicecage/slicecage.vue
@@ -18,6 +18,7 @@
 const dialogFormVisibleb = ref(false)
 const dialogFormVisiblec = ref(false)
 const dialogFormVisibles = ref(false)
+const dialogFormVisibleq = ref(false)
 const tableData = ref([])
 const tableDatagh = ref([])
 const tableDatab = ref([])
@@ -27,6 +28,7 @@
 const tableDatae = ref([])
 const tableDatax = ref([])
 const tableDatas = ref([])
+const tableDataq = ref([])
 const carPosition = ref([])
 const ganghua = ref('')
 const adjustedRects = ref([]);
@@ -712,6 +714,19 @@
   }
 }
 
+const fetchFlowss = async () => {
+  try {
+    const response = await request.post('/cacheVerticalGlass/bigStorageCageDetails/selectFlowCardCount');
+    if (response.code === 200) {
+      tableDataq.value = response.data
+    } else {
+      ElMessage.warning(response.msg)
+    }
+  } catch (error) {
+    // console.error('Error fetching rects :', error);  
+  }
+}
+
 const scheduleTime = async () => {
   try {
     const response = await request.post('/cacheVerticalGlass/bigStorageCageDetails/scheduleTime')
@@ -1014,11 +1029,15 @@
       $t('searchOrder.dutyinformation') }}</el-button>
     <el-button style="margin-top: 5px;margin-left: 10px;" id="searchButton" type="info"
       @click="dialogFormVisibles = true; fetchFlows()">{{ $t('searchOrder.searchlayout') }}</el-button>
+
+    <el-button style="margin-top: 5px;margin-left: 10px;" id="searchButton" type="info"
+      @click="dialogFormVisibleq = true; fetchFlowss()">{{ $t('searchOrder.processcardinquiry') }}</el-button>
+
     <el-switch style="margin-top: 5px;margin-left: 10px;" v-model="ganghua" class="mb-2"
       :inactive-text="$t('searchOrder.temperedswitch')" @change="handleChange" />
-    <el-button style="margin-top: 10px;margin-left: 10px;margin-bottom: 10px;" id="searchButton" type="primary"
+    <!-- <el-button style="margin-top: 10px;margin-left: 10px;margin-bottom: 10px;" id="searchButton" type="primary"
       @click="dialogFormVisibleaDownGlasss = true">鏍囩鎵撳嵃
-    </el-button>
+    </el-button> -->
     <div style="display: flex;">
       <el-card style="flex: 1;margin-left: 10px;margin-top: 5px;" v-loading="loading">
         <div style="width: 98%; height: calc(100% - 35px); overflow-y: auto;max-height: 240px;">
@@ -1672,6 +1691,18 @@
       </el-table-column>
     </el-table>
   </el-dialog>
+  <el-dialog v-model="dialogFormVisibleq" top="5vh" width="85%" :title="$t('searchOrder.processcardqueriesa')">
+    <el-table ref="table" style="margin-top: 20px;height: 500px;" :data="tableDataq"
+      :header-cell-style="{ background: '#F2F3F5 ', color: '#1D2129' }">
+      <el-table-column prop="engineerId" fixed align="center" :label="$t('searchOrder.projectnumber')" />
+      <el-table-column prop="flowCardIdCount" align="center" :label="$t('searchOrder.cardnumber')" />
+      <el-table-column prop="totalTemper" align="center" :label="$t('searchOrder.totalTemper')" />
+      <el-table-column prop="glassTotalArea" align="center" :label="$t('searchOrder.totalAreas')" />
+      <el-table-column prop="cageTemper" align="center" :label="$t('searchOrder.cageTemper')" />
+      <el-table-column prop="cageArea" align="center" :label="$t('searchOrder.cageArea')" />
+      
+    </el-table>
+  </el-dialog>
   <el-dialog v-model="dialogFormVisibleaDownGlasss" top="2vh" width="97%" title="浜哄伐涓嬬墖淇℃伅">
     <div style="display:flex;justify-content: space-around;">
       <el-card
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 06f0c22..7216a2c 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
@@ -2,6 +2,7 @@
 import com.mes.order.entity.Orderdetail;
 import com.mes.order.entity.Orders;
 import com.mes.order.service.OrdersService;
+import com.mes.pp.entity.OrderChange;
 import com.mes.utils.Result;
 import io.swagger.annotations.ApiOperation;
 import lombok.extern.slf4j.Slf4j;
@@ -35,5 +36,11 @@
         log.info("鏄剧ず璁㈠崟璇︽儏淇℃伅:{}", glass);
         return Result.build(200, "", glass);
     }
+
+    @ApiOperation("璁㈠崟鍙樻洿")
+    @PostMapping("/orderChange") //鏄剧ず宸ョ▼閫夋嫨淇℃伅
+    public Result orderChange(@RequestBody List<OrderChange> orderChanges) {
+        return Result.build(200, "浼犲叆鍙傛暟"+orderChanges, ordersService.orderChange(orderChanges));
+    }
 }
 
diff --git a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/order/service/OrdersService.java b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/order/service/OrdersService.java
index 90702fa..13bf244 100644
--- a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/order/service/OrdersService.java
+++ b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/order/service/OrdersService.java
@@ -4,6 +4,7 @@
 import com.mes.order.entity.Order;
 import com.mes.order.entity.Orderdetail;
 import com.mes.order.entity.Orders;
+import com.mes.pp.entity.OrderChange;
 
 import java.util.List;
 
@@ -20,4 +21,6 @@
     List<Orders> selectOrders();
 
     List<Orderdetail> selectOrderdetail(Orders orders);
+
+    List<OrderChange> orderChange(List<OrderChange> orderChanges);
 }
diff --git a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/order/service/impl/OrdersServiceImpl.java b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/order/service/impl/OrdersServiceImpl.java
index 938d4bf..f67f4ec 100644
--- a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/order/service/impl/OrdersServiceImpl.java
+++ b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/order/service/impl/OrdersServiceImpl.java
@@ -2,21 +2,28 @@
 
 import com.baomidou.dynamic.datasource.annotation.DS;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.mes.glassinfo.entity.GlassInfo;
+import com.mes.glassinfo.mapper.GlassInfoMapper;
+import com.mes.glassinfo.service.GlassInfoService;
 import com.mes.order.entity.Orderdetail;
 import com.mes.order.entity.Orders;
 import com.mes.order.mapper.OrderdetailMapper;
 import com.mes.order.mapper.OrdersMapper;
 import com.mes.order.service.OrdersService;
+import com.mes.pp.entity.OrderChange;
+import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import javax.annotation.Resource;
 import java.util.Collections;
 import java.util.List;
 
 /**
  * <p>
- *  鏈嶅姟瀹炵幇绫�
+ * 鏈嶅姟瀹炵幇绫�
  * </p>
  *
  * @author wu
@@ -24,9 +31,15 @@
  */
 @Service
 @DS("sd")
+@Slf4j
 public class OrdersServiceImpl extends ServiceImpl<OrdersMapper, Orders> implements OrdersService {
-@Autowired
-private OrderdetailMapper orderdetailMapper;
+    @Resource
+    private OrderdetailMapper orderdetailMapper;
+    @Resource
+    private GlassInfoService glassInfoService;
+    @Resource
+    private GlassInfoMapper glassInfoMapper;
+
     @Override
     public List<Orders> selectOrders() {
         //鑾峰彇鎵�鏈夋湭瀹屾垚鐨勮鍗�
@@ -41,4 +54,24 @@
         queryWrapper.eq("order_id", orders.getOrderId());
         return orderdetailMapper.selectList(queryWrapper);
     }
+
+    @Override
+    public List<OrderChange> orderChange(List<OrderChange> orderChanges) {
+        for (OrderChange orderChange : orderChanges) {
+            int affectedRows = glassInfoMapper.update(null,
+                    new LambdaUpdateWrapper<GlassInfo>()
+                            .eq(GlassInfo::getFlowCardId, orderChange.getOldProcessId())
+                            .eq(GlassInfo::getGlassType, orderChange.getOldOrderNumber())
+                            .eq(GlassInfo::getLayer, orderChange.getOldTechnologyNumber())
+                            .set(GlassInfo::getFlowCardId, orderChange.getNewProcessId())
+                            .set(GlassInfo::getGlassType, orderChange.getNewOrderNumber())
+                            .set(GlassInfo::getLayer, orderChange.getNewTechnologyNumber())
+                            .last("limit " + orderChange.getChangeNumber())
+                            .inSql(GlassInfo::getGlassId, "select glass_id from edg_storage_cage_details where flow_card_id ='" + orderChange.getOldProcessId() +
+                                    "' and glass_id not in (select glass_id from damage where (type=8 or type=9) and process_id='" + orderChange.getOldProcessId() + "')"));
+            orderChange.setChangedNumber(affectedRows);
+        }
+        log.info("璁㈠崟鍙樻洿锛�" + orderChanges);
+        return orderChanges;
+    }
 }
diff --git a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/entity/OrderChange.java b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/entity/OrderChange.java
new file mode 100644
index 0000000..3dd729b
--- /dev/null
+++ b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/entity/OrderChange.java
@@ -0,0 +1,65 @@
+package com.mes.pp.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author wu
+ * @since 2024-08-07
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class OrderChange implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 鏃ф祦绋嬪崱鍙�
+     */
+    private String oldProcessId;
+
+    /**
+     * 鏃у簭鍙�
+     */
+    private Integer oldOrderNumber;
+
+    /**
+     * 鏃у眰鍙�
+     */
+    private Integer oldTechnologyNumber;
+
+    /**
+     * 淇℃祦绋嬪崱鍙�
+     */
+    private String newProcessId;
+
+    /**
+     * 鏂板簭鍙�
+     */
+    private Integer newOrderNumber;
+
+    /**
+     * 鏂板眰鍙�
+     */
+    private Integer newTechnologyNumber;
+
+    /**
+     * 鍙樻洿鏁伴噺
+     */
+    private Integer changeNumber;
+
+    /**
+     * 宸插彉鏇存暟閲�
+     */
+    private Integer changedNumber;
+}
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 78c9c90..b564ede 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
@@ -22,7 +22,7 @@
 
     boolean saveBatch(@Param(value = "list") List<TemperingGlassInfo> list);
     //缁曡繃鍏ㄥ眬閫昏緫杩涜鏌ヨ
-    @Select("SELECT * FROM tempering_glass_info " + "WHERE tempering_layout_id = #{temperingLayoutId} " + "AND engineer_id = #{engineerId} " + "ORDER BY tempering_layout_id DESC, tempering_feed_sequence ASC")
+    @Select("SELECT * FROM tempering_glass_info " + "WHERE tempering_layout_id = #{temperingLayoutId} " + "AND engineer_id = #{engineerId} " + "AND deleted=0 ORDER BY tempering_layout_id DESC, tempering_feed_sequence ASC")
     List<TemperingGlassInfo> selectByEngineerIdAndLayoutId(String engineerId, Integer temperingLayoutId);
     //缁曡繃鍏ㄥ眬閫昏緫杩涜淇敼
     @Update("UPDATE tempering_glass_info " +
diff --git a/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/job/CacheGlassTask.java b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/job/CacheGlassTask.java
index 66c0e66..e964692 100644
--- a/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/job/CacheGlassTask.java
+++ b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/job/CacheGlassTask.java
@@ -399,13 +399,13 @@
                     new LambdaQueryWrapper<GlassInfo>()
                             .eq(GlassInfo::getGlassId, glassId)
             );
-            if(glassInfos!=null){
+            if (glassInfos != null) {
                 if (Math.max(glassInfos.getWidth(), glassInfos.getHeight()) > Integer.parseInt(firstLength) && out08Glassstate == 1) {
                     endcell = Const.A09_OUT_TARGET_POSITION;
                 } else {
                     endcell = computerLineByState(out08Glassstate, out10Glassstate);
                 }
-            }else{
+            } else {
                 endcell = computerLineByState(out08Glassstate, out10Glassstate);
             }
             if (out08Glassstate == 1 && out10Glassstate == 1) {
@@ -925,18 +925,17 @@
         }
     }
 
-    @Scheduled(fixedDelay = 500)
+    @Scheduled(fixedDelay = 3000)
     public void CacheGlassTasks() {
-        JSONObject jsonObject = new JSONObject();
-        List<Map<String, Object>> currentCutTerritorys = edgStorageCageDetailsService.selectCutTerritory();
-        jsonObject.append("currentCutTerritory", currentCutTerritorys);
-        //log.info("鏈璇嗗埆鐗堝浘{},++++{}",engineerId,currentCutTerritorys);
-        //鍗у缂撳瓨绗煎唴淇℃伅
-        List<Map<String, Object>> EdgStorageCageinfos = edgStorageCageService.selectEdgStorageCages();
-        jsonObject.append("EdgStorageCageinfos", EdgStorageCageinfos);
-
         ArrayList<WebSocketServer> sendwServer = WebSocketServer.sessionMap.get("cacheGlass");
         if (sendwServer != null) {
+            JSONObject jsonObject = new JSONObject();
+            List<Map<String, Object>> currentCutTerritorys = edgStorageCageDetailsService.selectCutTerritory();
+            jsonObject.append("currentCutTerritory", currentCutTerritorys);
+            //log.info("鏈璇嗗埆鐗堝浘{},++++{}",engineerId,currentCutTerritorys);
+            //鍗у缂撳瓨绗煎唴淇℃伅
+            List<Map<String, Object>> EdgStorageCageinfos = edgStorageCageService.selectEdgStorageCages();
+            jsonObject.append("EdgStorageCageinfos", EdgStorageCageinfos);
             for (WebSocketServer webserver : sendwServer) {
                 if (webserver != null) {
                     webserver.sendMessage(jsonObject.toString());
@@ -952,7 +951,7 @@
         }
     }
 
-    @Scheduled(fixedDelay = 500)
+    @Scheduled(fixedDelay = 3000)
     public void cacheGlassIsRun() {
         JSONObject jsonObject = new JSONObject();
         //姝e湪杩涜鐨勪换鍔�
@@ -970,7 +969,7 @@
         }
     }
 
-    @Scheduled(fixedDelay = 500)
+    @Scheduled(fixedDelay = 3000)
     public void CacheGlassTaskss() {
         JSONObject jsonObject = new JSONObject();
         //log.info("鏈璇嗗埆鐗堝浘{},++++{}",engineerId,currentCutTerritorys);
diff --git a/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/taskcache/controller/TaskCacheController.java b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/taskcache/controller/TaskCacheController.java
index 9911a6f..c6f5c07 100644
--- a/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/taskcache/controller/TaskCacheController.java
+++ b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/taskcache/controller/TaskCacheController.java
@@ -2,6 +2,7 @@
 
 import com.mes.edgglasstask.entity.request.IdentWornRequest;
 import com.mes.edgstoragecage.service.EdgStorageCageDetailsService;
+import com.mes.taskcache.entity.TaskCache;
 import com.mes.taskcache.service.TaskCacheService;
 import com.mes.utils.Result;
 import io.swagger.annotations.Api;
@@ -73,5 +74,12 @@
         return Result.build(200, "鎴愬姛", EdgTasks);
     }
 
+    @ApiOperation("鍗х悊浠诲姟鎶ヨ〃")
+    @PostMapping("/selectTaskCache")
+    public Result selectTaskCache(@RequestBody TaskCache taskCache,
+                                              @RequestParam(required = false) String startTime,
+                                              @RequestParam(required = false) String endTime) {
+        return Result.build(200, "鏌ヨ鎴愬姛", taskCacheService.selectTaskCache(taskCache, startTime, endTime));
+    }
 }
 
diff --git a/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/taskcache/entity/TaskCache.java b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/taskcache/entity/TaskCache.java
index 9226203..997e1fd 100644
--- a/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/taskcache/entity/TaskCache.java
+++ b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/taskcache/entity/TaskCache.java
@@ -2,6 +2,7 @@
 
 import com.baomidou.mybatisplus.annotation.TableLogic;
 import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.models.auth.In;
 import lombok.Data;
 
 import java.util.Date;
@@ -19,19 +20,19 @@
     /**
      * 璧峰
      */
-    private int startCell;
+    private Integer startCell;
     /**
      * 缁撴潫
      */
-    private int endCell;
+    private Integer endCell;
     /**
      * 浠诲姟绫诲瀷
      */
-    private int taskType;
+    private Integer taskType;
     /**
      * 浠诲姟鐘舵��
      */
-    private int taskStatus;
+    private Integer taskStatus;
     /**
      * 鍒涘缓鏃堕棿
      */
diff --git a/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/taskcache/service/TaskCacheService.java b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/taskcache/service/TaskCacheService.java
index 07275d1..4341b00 100644
--- a/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/taskcache/service/TaskCacheService.java
+++ b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/taskcache/service/TaskCacheService.java
@@ -74,5 +74,11 @@
      */
     TaskCache selectLastOutCacheInfo(int line);
 
-
+    /**
+     * 鏌ヨ  浠诲姟鏉′欢
+     * @param startTime
+     * @param endTime
+     * @return
+     */
+    List<TaskCache> selectTaskCache(TaskCache taskCache, String startTime, String endTime);
 }
diff --git a/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/taskcache/service/impl/TaskCacheServiceImpl.java b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/taskcache/service/impl/TaskCacheServiceImpl.java
index df949ef..3be1f62 100644
--- a/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/taskcache/service/impl/TaskCacheServiceImpl.java
+++ b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/taskcache/service/impl/TaskCacheServiceImpl.java
@@ -21,6 +21,7 @@
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import javax.annotation.Resource;
 import java.util.*;
 
 /**
@@ -35,12 +36,12 @@
 @Service
 public class TaskCacheServiceImpl extends MPJBaseServiceImpl<TaskCacheMapper, TaskCache> implements TaskCacheService {
 
-    @Autowired
+    @Resource
     EdgStorageCageDetailsMapper edgStorageCageDetailsMapper;
 
-    @Autowired
+    @Resource
     GlassInfoMapper glassInfoMapper;
-    @Autowired
+    @Resource
     private TaskCacheMapper taskCacheMapper;
 
 
@@ -181,6 +182,36 @@
     }
 
 
-
+    @Override
+    public List<TaskCache> selectTaskCache(TaskCache taskCache, String startTime, String endTime){
+        if (endTime != null && !endTime.isEmpty()) {
+            endTime = endTime + " 23:59:59";
+        }
+        LambdaQueryWrapper<TaskCache> wrapper = new LambdaQueryWrapper<>();
+        if (taskCache.getStartCell() != null) {
+            wrapper.eq(TaskCache::getStartCell, taskCache.getStartCell());
+        }
+        if (taskCache.getEndCell() != 0) {
+            wrapper.eq(TaskCache::getEndCell, taskCache.getEndCell());
+        }
+        if (taskCache.getTaskStatus() != -1) {
+            wrapper.eq(TaskCache::getTaskStatus, taskCache.getTaskStatus());
+        }
+        if (taskCache.getTaskType() != -1) {
+            wrapper.eq(TaskCache::getTaskType, taskCache.getTaskType());
+        }
+        if (startTime != null && !startTime.isEmpty()) {
+            wrapper.ge(TaskCache::getCreateTime, startTime);
+        }
+        if (endTime != null && !endTime.isEmpty()) {
+            wrapper.le(TaskCache::getCreateTime, endTime);
+        }
+        wrapper.orderByDesc(TaskCache::getCreateTime);
+        wrapper.and(item -> item.eq(TaskCache::getDeleted, 0)
+                .or()
+                .eq(TaskCache::getDeleted, 1));
+        wrapper.between(TaskCache::getCreateTime, startTime, endTime);
+        return baseMapper.selectList(wrapper);
+    }
 
 }
diff --git a/hangzhoumesParent/moduleService/CacheGlassModule/src/main/resources/application.yml b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/resources/application.yml
index b6e1639..20412f2 100644
--- a/hangzhoumesParent/moduleService/CacheGlassModule/src/main/resources/application.yml
+++ b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/resources/application.yml
@@ -13,6 +13,12 @@
       pool:
         size: 10
       thread-name-prefix: task-cache
+  druid:
+    initial-size: 5
+    min-idle: 5
+    max-active: 10
+    time-between-eviction-runs-millis: 60000
+    connection-properties: druid,stat,mergeSql=true,druid,stat ,slowSalMillis=5000
 mybatis-plus:
   mapper-locations: classpath*:mapper/*.xml
 #  configuration:
diff --git a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/controller/BigStorageCageDetailsController.java b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/controller/BigStorageCageDetailsController.java
index 16dc253..1a5c276 100644
--- a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/controller/BigStorageCageDetailsController.java
+++ b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/controller/BigStorageCageDetailsController.java
@@ -126,6 +126,12 @@
         return Result.build(200, "鏌ヨ鎴愬姛", flowCardIdCount);
     }
 
+    @ApiOperation("娴佺▼鍗′釜鏁版煡璇�")
+        @PostMapping("/selectFlowCardCount")
+    public Result selectFlowCardCount() {
+        return Result.build(200, "鏌ヨ鎴愬姛", bigStorageCageDetailsService.selectFlowCardCount());
+    }
+
     @ApiOperation("鎸囧畾娴佺▼鍗�")
     @PostMapping("/appointFlowCard")
     public Result appointFlowCard(@RequestBody BigStorageCageDetails bigStorageCageDetails) {
diff --git a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/entity/dto/FlowCardDTO.java b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/entity/dto/FlowCardDTO.java
new file mode 100644
index 0000000..af6f59f
--- /dev/null
+++ b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/entity/dto/FlowCardDTO.java
@@ -0,0 +1,41 @@
+package com.mes.bigstorage.entity.dto;
+
+import lombok.Data;
+
+/**
+ * @Author : zhoush
+ * @Date: 2024/6/13 15:51
+ * @Description:
+ */
+@Data
+public class FlowCardDTO {
+    /**
+     * 宸ョ▼鍙�
+     */
+    private String engineerId;
+
+    /**
+     * 娴佺▼鍗′釜鏁�
+     */
+    private Integer flowCardIdCount;
+
+    /**
+     * 鎬婚潰绉�
+     */
+    private Double glassTotalArea;
+
+    /**
+     * 鎬荤倝鏁�
+     */
+    private Integer totalTemper;
+
+    /**
+     * 绗煎唴鐐夋暟
+     */
+    private Integer cageTemper;
+
+    /**
+     * 绗煎唴闈㈢Н
+     */
+    private Double cageArea;
+}
diff --git a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/mapper/BigStorageCageDetailsMapper.java b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/mapper/BigStorageCageDetailsMapper.java
index 4627118..a5daecd 100644
--- a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/mapper/BigStorageCageDetailsMapper.java
+++ b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/mapper/BigStorageCageDetailsMapper.java
@@ -2,6 +2,7 @@
 
 import com.github.yulichang.base.MPJBaseMapper;
 import com.mes.bigstorage.entity.BigStorageCageDetails;
+import com.mes.bigstorage.entity.dto.FlowCardDTO;
 import com.mes.bigstorage.entity.dto.SlotSequenceDTO;
 import com.mes.bigstorage.entity.dto.TemperingLayoutDTO;
 import com.mes.bigstoragetask.entity.UpdateBigStorageCageDTO;
@@ -47,4 +48,6 @@
     void updateBySlot(@Param(value = "list") List<UpdateBigStorageCageDTO> glassList, @Param(value = "state") int state);
 
     List<Map<String, Object>> selectTemperingGlassCount();
+
+    List<FlowCardDTO> selectFlowCardCount();
 }
diff --git a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/service/BigStorageCageDetailsService.java b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/service/BigStorageCageDetailsService.java
index 505ce46..b48f318 100644
--- a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/service/BigStorageCageDetailsService.java
+++ b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/service/BigStorageCageDetailsService.java
@@ -3,6 +3,7 @@
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.mes.bigstorage.entity.BigStorageCageDetails;
 import com.mes.bigstorage.entity.BigStorageDTO;
+import com.mes.bigstorage.entity.dto.FlowCardDTO;
 import com.mes.bigstorage.entity.dto.SlotSequenceDTO;
 import com.mes.bigstorage.entity.dto.TemperingLayoutDTO;
 import com.mes.bigstoragetask.entity.UpdateBigStorageCageDTO;
@@ -82,4 +83,6 @@
     long scheduleTime();
 
     void cancelOutTask();
+
+    List<FlowCardDTO> selectFlowCardCount();
 }
diff --git a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/service/impl/BigStorageCageDetailsServiceImpl.java b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/service/impl/BigStorageCageDetailsServiceImpl.java
index ddd2c77..131f8b7 100644
--- a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/service/impl/BigStorageCageDetailsServiceImpl.java
+++ b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/service/impl/BigStorageCageDetailsServiceImpl.java
@@ -11,6 +11,7 @@
 import com.mes.bigstorage.entity.BigStorageCage;
 import com.mes.bigstorage.entity.BigStorageCageDetails;
 import com.mes.bigstorage.entity.BigStorageDTO;
+import com.mes.bigstorage.entity.dto.FlowCardDTO;
 import com.mes.bigstorage.entity.dto.SlotSequenceDTO;
 import com.mes.bigstorage.entity.dto.TemperingLayoutDTO;
 import com.mes.bigstorage.mapper.BigStorageCageDetailsMapper;
@@ -558,18 +559,24 @@
                         .in(BigStorageCageOutTask::getEndSlot, Const.OUT_TARGET_POSITION_ALL)
                         .eq(BigStorageCageOutTask::getTaskState, Const.BIG_STORAGE_OUT_NEW)
         );
-        List<String> outGlassId = bigStorageCageOutTasks.stream().map(BigStorageCageOutTask::getGlassId).collect(Collectors.toList());
-        temperingGlassInfoService.remove(
-                new LambdaUpdateWrapper<TemperingGlassInfo>()
-                        .in(TemperingGlassInfo::getGlassId, outGlassId)
-        );
-        bigStorageCageDetailsService.update(
-                new LambdaUpdateWrapper<BigStorageCageDetails>()
-                        .set(BigStorageCageDetails::getState, Const.GLASS_STATE_IN)
-                        .eq(BigStorageCageDetails::getState, Const.GLASS_STATE_OUT_ING)
-                        .in(BigStorageCageDetails::getGlassId, outGlassId)
-        );
-        bigStorageCageOutTaskService.deleteTask(bigStorageCageOutTasks);
+        if(bigStorageCageOutTasks.size()>0){
+            List<String> outGlassId = bigStorageCageOutTasks.stream().map(BigStorageCageOutTask::getGlassId).collect(Collectors.toList());
+            temperingGlassInfoService.remove(
+                    new LambdaUpdateWrapper<TemperingGlassInfo>()
+                            .in(TemperingGlassInfo::getGlassId, outGlassId)
+            );
+            bigStorageCageDetailsService.update(
+                    new LambdaUpdateWrapper<BigStorageCageDetails>()
+                            .set(BigStorageCageDetails::getState, Const.GLASS_STATE_IN)
+                            .eq(BigStorageCageDetails::getState, Const.GLASS_STATE_OUT_ING)
+                            .in(BigStorageCageDetails::getGlassId, outGlassId)
+            );
+            bigStorageCageOutTaskService.deleteTask(bigStorageCageOutTasks);
+        }
+    }
 
+    @Override
+    public List<FlowCardDTO> selectFlowCardCount(){
+        return baseMapper.selectFlowCardCount();
     }
 }
diff --git a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstoragetask/controller/BigStorageCageFeedTaskController.java b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstoragetask/controller/BigStorageCageFeedTaskController.java
index c69669b..161856d 100644
--- a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstoragetask/controller/BigStorageCageFeedTaskController.java
+++ b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstoragetask/controller/BigStorageCageFeedTaskController.java
@@ -44,40 +44,7 @@
     public Result selectBigStorageCageFeedTask(@RequestBody BigStorageCageFeedTask bigStorageCageFeedTask,
                                                @RequestParam(required = false) String startTime,
                                                @RequestParam(required = false) String endTime) {
-        if (endTime != null && !endTime.isEmpty()) {
-            endTime = endTime + " 23:59:59";
-        }
-        LambdaQueryWrapper<BigStorageCageFeedTask> wrapper = new LambdaQueryWrapper<>();
-        if (bigStorageCageFeedTask.getTargetSlot() != null) {
-            wrapper.eq(BigStorageCageFeedTask::getTargetSlot, bigStorageCageFeedTask.getTargetSlot());
-        }
-        if (bigStorageCageFeedTask.getWidth() != null) {
-            wrapper.eq(BigStorageCageFeedTask::getWidth, bigStorageCageFeedTask.getWidth());
-        }
-        if (bigStorageCageFeedTask.getHeight() != null) {
-            wrapper.eq(BigStorageCageFeedTask::getHeight, bigStorageCageFeedTask.getHeight());
-        }
-        if (bigStorageCageFeedTask.getLine() != 0) {
-            wrapper.eq(BigStorageCageFeedTask::getLine, bigStorageCageFeedTask.getLine());
-        }
-        if (bigStorageCageFeedTask.getTaskState() != -1) {
-            wrapper.eq(BigStorageCageFeedTask::getTaskState, bigStorageCageFeedTask.getTaskState());
-        }
-        if (bigStorageCageFeedTask.getTaskType() != 0) {
-            wrapper.eq(BigStorageCageFeedTask::getTaskType, bigStorageCageFeedTask.getTaskType());
-        }
-        if (startTime != null && !startTime.isEmpty()) {
-            wrapper.ge(BigStorageCageFeedTask::getCreateTime, startTime);
-        }
-        if (endTime != null && !endTime.isEmpty()) {
-            wrapper.le(BigStorageCageFeedTask::getCreateTime, endTime);
-        }
-        wrapper.orderByDesc(BigStorageCageFeedTask::getId);
-        wrapper.and(item -> item.eq(BigStorageCageFeedTask::getDeleted, 0)
-                .or()
-                .eq(BigStorageCageFeedTask::getDeleted, 1));
-        wrapper.between(BigStorageCageFeedTask::getCreateTime, startTime, endTime);
-        return Result.build(200, "鏌ヨ鎴愬姛", bigStorageCageFeedTaskService.list(wrapper));
+        return Result.build(200, "鏌ヨ鎴愬姛", bigStorageCageFeedTaskService.selectBigStorageCageFeedTask(bigStorageCageFeedTask, startTime, endTime));
     }
 
 
diff --git a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstoragetask/controller/BigStorageCageOutTaskController.java b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstoragetask/controller/BigStorageCageOutTaskController.java
index 2c76b1f..e770855 100644
--- a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstoragetask/controller/BigStorageCageOutTaskController.java
+++ b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstoragetask/controller/BigStorageCageOutTaskController.java
@@ -1,12 +1,16 @@
 package com.mes.bigstoragetask.controller;
 
 
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.mes.bigstoragetask.entity.BigStorageCageFeedTask;
 import com.mes.bigstoragetask.entity.BigStorageCageOutTask;
 import com.mes.bigstoragetask.service.BigStorageCageOutTaskService;
+import com.mes.temperingglass.entity.TemperingGlassInfo;
+import com.mes.temperingglass.service.TemperingGlassInfoService;
 import com.mes.utils.Result;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
+import org.apache.tomcat.util.bcel.Const;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
@@ -14,7 +18,7 @@
 
 /**
  * <p>
- *  鍓嶇鎺у埗鍣�
+ * 鍓嶇鎺у埗鍣�
  * </p>
  *
  * @author zhoush
@@ -27,13 +31,34 @@
 
     @Autowired
     private BigStorageCageOutTaskService bigStorageCageOutTaskService;
+    @Autowired
+    private TemperingGlassInfoService temperingGlassInfoService;
 
     @ApiOperation("鍑虹墖浠诲姟淇敼")
     @PostMapping("/updatebigStorageCageOutTask")
     public Result deleteBigStorageCageDetails(@RequestBody BigStorageCageOutTask bigStorageCageOutTask) {
+        if (bigStorageCageOutTask.getTaskState() > 3) {
+            temperingGlassInfoService.remove(
+                    new LambdaUpdateWrapper<TemperingGlassInfo>()
+                            .in(TemperingGlassInfo::getGlassId, bigStorageCageOutTask.getGlassId())
+            );
+        } else {
+            temperingGlassInfoService.update(
+                    new LambdaUpdateWrapper<TemperingGlassInfo>()
+                            .in(TemperingGlassInfo::getGlassId, bigStorageCageOutTask.getGlassId())
+                            .set(TemperingGlassInfo::getState, 0)
+            );
+        }
         bigStorageCageOutTaskService.updateById(bigStorageCageOutTask);
         return Result.build(200, "淇敼鎴愬姛", 1);
     }
 
+    @ApiOperation("鍑虹墖浠诲姟鎶ヨ〃")
+    @PostMapping("/selectBigStorageCageOutTask")
+    public Result selectBigStorageCageOutTask(@RequestBody BigStorageCageOutTask bigStorageCageOutTask,
+                                               @RequestParam(required = false) String startTime,
+                                               @RequestParam(required = false) String endTime) {
+        return Result.build(200, "鏌ヨ鎴愬姛", bigStorageCageOutTaskService.selectBigStorageCageOutTask(bigStorageCageOutTask, startTime, endTime));
+    }
 }
 
diff --git a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstoragetask/entity/BigStorageCageOutTask.java b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstoragetask/entity/BigStorageCageOutTask.java
index 5c6a121..6c1437c 100644
--- a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstoragetask/entity/BigStorageCageOutTask.java
+++ b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstoragetask/entity/BigStorageCageOutTask.java
@@ -69,12 +69,12 @@
      * 鐩爣浣嶇疆
      */
     @ApiModelProperty(value = "鐩爣浣嶇疆", position = 5)
-    private double width;
+    private Double width;
     /**
      * 鐩爣浣嶇疆
      */
     @ApiModelProperty(value = "鐩爣浣嶇疆", position = 5)
-    private double height;
+    private Double height;
 
     /**
      * 杞︽
diff --git a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstoragetask/service/BigStorageCageFeedTaskService.java b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstoragetask/service/BigStorageCageFeedTaskService.java
index 40e1827..f553bd4 100644
--- a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstoragetask/service/BigStorageCageFeedTaskService.java
+++ b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstoragetask/service/BigStorageCageFeedTaskService.java
@@ -5,12 +5,13 @@
 import com.mes.bigstorage.entity.BigStorageCageDetails;
 import com.mes.bigstorage.entity.BigStorageDTO;
 import com.mes.bigstoragetask.entity.BigStorageCageFeedTask;
+import org.springframework.web.bind.annotation.RequestParam;
 
 import java.util.List;
 
 /**
  * <p>
- *  鏈嶅姟绫�
+ * 鏈嶅姟绫�
  * </p>
  *
  * @author zhoush
@@ -31,4 +32,6 @@
      * 鏌ヨ鍗ц浆绔嬬幓鐠冩槸鍚﹁繘鐗囧畬鎴�
      */
     List<Integer> querySitToUpGlass();
+
+    List<BigStorageCageFeedTask> selectBigStorageCageFeedTask(BigStorageCageFeedTask bigStorageCageFeedTask, String startTime, String endTime);
 }
diff --git a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstoragetask/service/BigStorageCageOutTaskService.java b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstoragetask/service/BigStorageCageOutTaskService.java
index 14f6107..161a640 100644
--- a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstoragetask/service/BigStorageCageOutTaskService.java
+++ b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstoragetask/service/BigStorageCageOutTaskService.java
@@ -24,4 +24,6 @@
     void deleteOutTask(String glassId);
 
     void deleteTask(List<BigStorageCageOutTask> outGlassId);
+
+    List<BigStorageCageOutTask> selectBigStorageCageOutTask(BigStorageCageOutTask bigStorageCageOutTask, String startTime, String endTime);
 }
diff --git a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstoragetask/service/impl/BigStorageCageFeedTaskServiceImpl.java b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstoragetask/service/impl/BigStorageCageFeedTaskServiceImpl.java
index 262cc3f..0b91a9c 100644
--- a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstoragetask/service/impl/BigStorageCageFeedTaskServiceImpl.java
+++ b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstoragetask/service/impl/BigStorageCageFeedTaskServiceImpl.java
@@ -7,6 +7,7 @@
 import com.mes.bigstoragetask.entity.BigStorageCageFeedTask;
 import com.mes.bigstoragetask.mapper.BigStorageCageFeedTaskMapper;
 import com.mes.bigstoragetask.service.BigStorageCageFeedTaskService;
+import com.mes.utils.Result;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 
@@ -52,4 +53,42 @@
     public List<Integer> querySitToUpGlass() {
         return baseMapper.querySitToUpGlass();
     }
+
+    @Override
+    public List<BigStorageCageFeedTask> selectBigStorageCageFeedTask(BigStorageCageFeedTask bigStorageCageFeedTask, String startTime, String endTime) {
+        if (endTime != null && !endTime.isEmpty()) {
+            endTime = endTime + " 23:59:59";
+        }
+        LambdaQueryWrapper<BigStorageCageFeedTask> wrapper = new LambdaQueryWrapper<>();
+        if (bigStorageCageFeedTask.getTargetSlot() != null) {
+            wrapper.eq(BigStorageCageFeedTask::getTargetSlot, bigStorageCageFeedTask.getTargetSlot());
+        }
+        if (bigStorageCageFeedTask.getWidth() != null) {
+            wrapper.eq(BigStorageCageFeedTask::getWidth, bigStorageCageFeedTask.getWidth());
+        }
+        if (bigStorageCageFeedTask.getHeight() != null) {
+            wrapper.eq(BigStorageCageFeedTask::getHeight, bigStorageCageFeedTask.getHeight());
+        }
+        if (bigStorageCageFeedTask.getLine() != 0) {
+            wrapper.eq(BigStorageCageFeedTask::getLine, bigStorageCageFeedTask.getLine());
+        }
+        if (bigStorageCageFeedTask.getTaskState() != -1) {
+            wrapper.eq(BigStorageCageFeedTask::getTaskState, bigStorageCageFeedTask.getTaskState());
+        }
+        if (bigStorageCageFeedTask.getTaskType() != 0) {
+            wrapper.eq(BigStorageCageFeedTask::getTaskType, bigStorageCageFeedTask.getTaskType());
+        }
+        if (startTime != null && !startTime.isEmpty()) {
+            wrapper.ge(BigStorageCageFeedTask::getCreateTime, startTime);
+        }
+        if (endTime != null && !endTime.isEmpty()) {
+            wrapper.le(BigStorageCageFeedTask::getCreateTime, endTime);
+        }
+        wrapper.orderByDesc(BigStorageCageFeedTask::getId);
+        wrapper.and(item -> item.eq(BigStorageCageFeedTask::getDeleted, 0)
+                .or()
+                .eq(BigStorageCageFeedTask::getDeleted, 1));
+        wrapper.between(BigStorageCageFeedTask::getCreateTime, startTime, endTime);
+        return baseMapper.selectList(wrapper);
+    }
 }
diff --git a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstoragetask/service/impl/BigStorageCageOutTaskServiceImpl.java b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstoragetask/service/impl/BigStorageCageOutTaskServiceImpl.java
index c9a2343..fce5ab7 100644
--- a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstoragetask/service/impl/BigStorageCageOutTaskServiceImpl.java
+++ b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstoragetask/service/impl/BigStorageCageOutTaskServiceImpl.java
@@ -4,6 +4,7 @@
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.mes.bigstorage.entity.BigStorageCageDetails;
 import com.mes.bigstorage.mapper.BigStorageCageDetailsMapper;
+import com.mes.bigstoragetask.entity.BigStorageCageFeedTask;
 import com.mes.bigstoragetask.entity.BigStorageCageOutTask;
 import com.mes.bigstoragetask.mapper.BigStorageCageOutTaskMapper;
 import com.mes.bigstoragetask.service.BigStorageCageOutTaskService;
@@ -97,4 +98,39 @@
     public void deleteTask(List<BigStorageCageOutTask> outGlassId){
         baseMapper.deleteTask(outGlassId);
     }
+
+    @Override
+    public List<BigStorageCageOutTask> selectBigStorageCageOutTask(BigStorageCageOutTask bigStorageCageOutTask, String startTime, String endTime){
+        if (endTime != null && !endTime.isEmpty()) {
+            endTime = endTime + " 23:59:59";
+        }
+        LambdaQueryWrapper<BigStorageCageOutTask> wrapper = new LambdaQueryWrapper<>();
+        if (bigStorageCageOutTask.getStartSlot() != null) {
+            wrapper.eq(BigStorageCageOutTask::getStartSlot, bigStorageCageOutTask.getStartSlot());
+        }
+        if (bigStorageCageOutTask.getWidth() != null) {
+            wrapper.eq(BigStorageCageOutTask::getWidth, bigStorageCageOutTask.getWidth());
+        }
+        if (bigStorageCageOutTask.getHeight() != null) {
+            wrapper.eq(BigStorageCageOutTask::getHeight, bigStorageCageOutTask.getHeight());
+        }
+        if (bigStorageCageOutTask.getEndSlot() != 0) {
+            wrapper.eq(BigStorageCageOutTask::getEndSlot, bigStorageCageOutTask.getEndSlot());
+        }
+        if (bigStorageCageOutTask.getTaskState() != -1) {
+            wrapper.eq(BigStorageCageOutTask::getTaskState, bigStorageCageOutTask.getTaskState());
+        }
+        if (startTime != null && !startTime.isEmpty()) {
+            wrapper.ge(BigStorageCageOutTask::getCreateTime, startTime);
+        }
+        if (endTime != null && !endTime.isEmpty()) {
+            wrapper.le(BigStorageCageOutTask::getCreateTime, endTime);
+        }
+        wrapper.orderByDesc(BigStorageCageOutTask::getId);
+        wrapper.and(item -> item.eq(BigStorageCageOutTask::getDeleted, 0)
+                .or()
+                .eq(BigStorageCageOutTask::getDeleted, 1));
+        wrapper.between(BigStorageCageOutTask::getCreateTime, startTime, endTime);
+        return baseMapper.selectList(wrapper);
+    }
 }
diff --git a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/job/PlcSlicecage.java b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/job/PlcSlicecage.java
index 6d00313..c0e3a13 100644
--- a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/job/PlcSlicecage.java
+++ b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/job/PlcSlicecage.java
@@ -118,17 +118,16 @@
      * fixedRate : 涓婁竴涓皟鐢ㄥ紑濮嬪悗鍐嶆璋冪敤鐨勫欢鏃讹紙涓嶇敤绛夊緟涓婁竴娆¤皟鐢ㄥ畬鎴愶級
      * fixedDelay : 涓婁竴涓皟鐢ㄧ粨鏉熷悗鍐嶆璋冪敤鐨勫欢鏃�
      */
-    @Scheduled(fixedDelay = 300)
+    @Scheduled(fixedDelay = 3000)
     public void plcStorageCageTask() throws InterruptedException {
         jsonObject = new JSONObject();
         try {
-            //鏌ヨ浣跨敤鏁版嵁婧�1鏌ヨ鏁版嵁
-            queryDataSource1();
-            //鏌ヨ浣跨敤鏁版嵁婧�2鏌ヨ鏁版嵁
-            queryDataSource2();
-
             ArrayList<WebSocketServer> sendwServer = WebSocketServer.sessionMap.get("slicecage");
             if (sendwServer != null) {
+                //鏌ヨ浣跨敤鏁版嵁婧�1鏌ヨ鏁版嵁
+                queryDataSource1();
+                //鏌ヨ浣跨敤鏁版嵁婧�2鏌ヨ鏁版嵁
+                queryDataSource2();
                 for (WebSocketServer webserver : sendwServer) {
                     if (webserver != null) {
                         webserver.sendMessage(jsonObject.toString());
@@ -147,7 +146,7 @@
         }
     }
 
-    @Scheduled(fixedDelay = 300)
+    @Scheduled(fixedDelay = 3000)
     public void temperingIsRun() {
         JSONObject jsonObject = new JSONObject();
         //杩涚墖浠诲姟鏁版嵁
diff --git a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/job/PlcStorageCageTask.java b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/job/PlcStorageCageTask.java
index add6e87..351ca33 100644
--- a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/job/PlcStorageCageTask.java
+++ b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/job/PlcStorageCageTask.java
@@ -1001,6 +1001,7 @@
         bigStorageCageFeedTask.setWidth(width);
         bigStorageCageFeedTask.setHeight(height);
         bigStorageCageFeedTask.setCreateTime(new Date());
+        bigStorageCageFeedTask.setTargetSlot(0);
         //鍒犻櫎鐞嗙墖绗艰〃鎷胯蛋/鐮存崯鏁版嵁鏁版嵁
         damageService.deleteByGlassId(glassId);
         Damage damage = new Damage();
diff --git a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/resources/application.yml b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/resources/application.yml
index 14fb0ca..9600dc7 100644
--- a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/resources/application.yml
+++ b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/resources/application.yml
@@ -13,6 +13,12 @@
       pool:
         size: 10
       thread-name-prefix: task-cacheVertical
+  druid:
+    initial-size: 5
+    min-idle: 5
+    max-active: 10
+    time-between-eviction-runs-millis: 60000
+    connection-properties: druid,stat,mergeSql=true,druid,stat ,slowSalMillis=5000
 mybatis-plus:
   mapper-locations: classpath*:mapper/*.xml
 #  configuration:
diff --git a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/resources/mapper/BigStorageCageDetailsMapper.xml b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/resources/mapper/BigStorageCageDetailsMapper.xml
index 72dd6da..153e6fd 100644
--- a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/resources/mapper/BigStorageCageDetailsMapper.xml
+++ b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/resources/mapper/BigStorageCageDetailsMapper.xml
@@ -44,15 +44,16 @@
                              GROUP BY ENGINEER_ID, TEMPERING_LAYOUT_ID) T3 ON T2.ENGINEER_ID = T3.ENGINEER_ID
             AND T2.TEMPERING_LAYOUT_ID = T3.TEMPERING_LAYOUT_ID
             AND T2.COUNT = T3.COUNT
-                 INNER JOIN ENGINEERING T4 ON T2.ENGINEER_ID=T4.ENGINEER_ID
+                 INNER JOIN ENGINEERING T4 ON T2.ENGINEER_ID = T4.ENGINEER_ID
         ORDER BY T4.ID, T2.TEMPERING_LAYOUT_ID
     </select>
     <select id="queryTemperingOccupySlot" resultMap="temperingLayoutDTO">
         SELECT ENGINEER_ID,
-            TEMPERING_LAYOUT_ID,
-            COUNT(DISTINCT SLOT) as SLOT_COUNT
+               TEMPERING_LAYOUT_ID,
+               COUNT(DISTINCT SLOT) as SLOT_COUNT
         FROM BIG_STORAGE_CAGE_DETAILS
-        WHERE STATE = 100 AND TEMPERING_LAYOUT_ID!=0 AND THICKNESS &lt; 8
+        WHERE STATE = 100
+          AND TEMPERING_LAYOUT_ID!=0 AND THICKNESS &lt; 8
         GROUP BY ENGINEER_ID,
             TEMPERING_LAYOUT_ID
         HAVING SLOT_COUNT &gt;= #{count}
@@ -96,13 +97,60 @@
     </update>
 
     <select id="selectTemperingGlassCount" resultType="java.util.Map">
-        select a.engineer_id,a.tempering_layout_id,count2,count1,count2-count1 as count3,count(c.glass_id) as count4,slots from
-            (select engineer_id,tempering_layout_id,count(*) as count1,group_concat(distinct slot order by tempering_feed_sequence) as slots from big_storage_cage_details where state=100 and tempering_layout_id!=0 group by engineer_id,tempering_layout_id) as a
-                left join
-            (select engineer_id,tempering_layout_id,count(*) as count2 from glass_info group by engineer_id,tempering_layout_id) as b
-            on a.engineer_id=b.engineer_id and a.tempering_layout_id=b.tempering_layout_id
-                left join damage as c on a.engineer_id=c.engineer_id and a.tempering_layout_id=c.tempering_layout_id and (type = 8 or type = 9)
-        group by a.engineer_id,a.tempering_layout_id
-        order by a.engineer_id,a.tempering_layout_id
+        select a.engineer_id,
+               a.tempering_layout_id,
+               count2,
+               count1,
+               count2 - count1   as count3,
+               count(c.glass_id) as count4,
+               slots
+        from (select engineer_id,
+                     tempering_layout_id,
+                     count(*)                                                     as count1,
+                     group_concat(distinct slot order by tempering_feed_sequence) as slots
+              from big_storage_cage_details
+              where state = 100
+                and tempering_layout_id!=0
+              group by engineer_id, tempering_layout_id) as a
+                 left join
+             (select engineer_id, tempering_layout_id, count(*) as count2
+              from glass_info
+              group by engineer_id, tempering_layout_id) as b
+             on a.engineer_id = b.engineer_id and a.tempering_layout_id = b.tempering_layout_id
+                 left join damage as c
+                           on a.engineer_id = c.engineer_id and a.tempering_layout_id = c.tempering_layout_id and
+                              (type = 8 or type = 9)
+        group by a.engineer_id, a.tempering_layout_id
+        order by a.engineer_id, a.tempering_layout_id
+    </select>
+
+    <select id="selectFlowCardCount" resultType="com.mes.bigstorage.entity.dto.FlowCardDTO">
+        SELECT fc.engineer_id                            AS engineerId,
+               count(DISTINCT fc.flow_card_id, fc.layer) AS flowCardIdCount,
+               count(DISTINCT gi.tempering_layout_id)    AS totalTemper,
+               e.glass_total_area,
+               count(distinct bscd.tempering_layout_id) as cageTemper,
+               round(sum(bscd.width*bscd.height/1000000),2) as cageArea
+        FROM (
+                 SELECT engineer_id,
+                        flow_card_id,
+                        IF
+                            (combine = 0, layer, 1) AS layer,
+                        combine
+                 FROM glass_info
+                 WHERE engineer_id IN (SELECT DISTINCT engineer_id FROM big_storage_cage_details WHERE state = 100)
+                 GROUP BY engineer_id,
+                          flow_card_id,
+                          IF
+                              (combine = 0, layer, 1),
+                          combine
+             ) AS fc
+                 INNER JOIN glass_info gi ON fc.engineer_id = gi.engineer_id
+            AND gi.tempering_layout_id != 0
+	INNER JOIN engineering e
+        ON fc.engineer_id = e.engineer_id
+            left join big_storage_cage_details bscd on gi.glass_id=bscd.glass_id and bscd.state=100 and fc.flow_card_id=bscd.flow_card_id and fc.layer=bscd.layer
+        GROUP BY
+            fc.engineer_id
     </select>
 </mapper>
\ No newline at end of file
diff --git a/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/engineering/controller/EngineeringController.java b/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/engineering/controller/EngineeringController.java
index 7d41df4..63e9e33 100644
--- a/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/engineering/controller/EngineeringController.java
+++ b/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/engineering/controller/EngineeringController.java
@@ -18,7 +18,7 @@
 
 /**
  * <p>
- *  鍓嶇鎺у埗鍣�
+ * 鍓嶇鎺у埗鍣�
  * </p>
  *
  * @author wu
@@ -36,40 +36,42 @@
     private GlassInfoService glassInfoService;
     @Autowired
     private OptimizeProjectService optimizeProjectService;
+
     @ApiOperation("寮�濮�/鏆傚仠浠诲姟/浼犻�掑伐绋嬪彿鍜岀姸鎬�,寮�濮嬫槸1 鏆傚仠鏄�0")
     @PostMapping("/pauseTask") //鏆傚仠涓婄墖浠诲姟
     @ResponseBody
-    public  Result <List<UpPattenUsage>> pauseTask(@RequestBody Engineering engineering) {
-        boolean work=engineeringService.changeTask(engineering.getEngineerId(),engineering.getState());
+    public Result<List<UpPattenUsage>> pauseTask(@RequestBody Engineering engineering) {
+        boolean work = engineeringService.changeTask(engineering.getEngineerId(), engineering.getState());
         List<UpPattenUsage> glass = upPattenUsageService.prioritylist();
-        if(work){
-            return Result.build(200,"鎴愬姛",glass);
-        }else {
-            return Result.build(100,"澶辫触",glass);
+        if (work) {
+            return Result.build(200, "鎴愬姛", glass);
+        } else {
+            return Result.build(100, "澶辫触", glass);
         }
     }
 
     @ApiOperation("鏆傚仠")
     @PostMapping("/pause") //鏆傚仠涓婄墖浠诲姟
     @ResponseBody
-    public  Result <List<UpPattenUsage>> pause(@RequestBody Engineering engineering) {
-        boolean work=engineeringService.pauseTask(engineering.getEngineerId(),engineering.getState());
-        List<UpPattenUsage> glass = upPattenUsageService.prioritylist();String message;
-        if(work){
-            return Result.build(200,"鎴愬姛",glass);
-        }else {
-            return Result.build(100,"鎴愬姛",glass);
+    public Result<List<UpPattenUsage>> pause(@RequestBody Engineering engineering) {
+        boolean work = engineeringService.pauseTask(engineering.getEngineerId(), engineering.getState());
+        List<UpPattenUsage> glass = upPattenUsageService.prioritylist();
+        String message;
+        if (work) {
+            return Result.build(200, "鎴愬姛", glass);
+        } else {
+            return Result.build(100, "鎴愬姛", glass);
         }
     }
 
     @ApiOperation("寮�濮嬩笂鐗�")
     @PostMapping("/changeTask") //璋冪敤涓婄墖浠诲姟
     @ResponseBody
-    public  Result <Boolean> changeTask(@RequestBody Engineering engineering) {
+    public Result<Boolean> changeTask(@RequestBody Engineering engineering) {
         log.info("engineeringId:{}", engineering);
         UpPattenUsage upPattenUsage = upPattenUsageService.selectedEngineering(engineering.getEngineerId());
         if (upPattenUsage != null) {
-            boolean work=engineeringService.changeTask(engineering.getEngineerId(),engineering.getState());
+            boolean work = engineeringService.changeTask(engineering.getEngineerId(), engineering.getState());
             List<UpPattenUsage> glass = upPattenUsageService.prioritylist();
             optimizeProjectService.changeTask(engineering.getEngineerId(), 200);
             return Result.build(200, "宸蹭繚瀛樿繃", work);
@@ -85,13 +87,13 @@
             engineeringService.saveEngineering(listEngineering);
             log.info("鏇存敼pp琛ㄧ姸鎬佷负宸查鍙�");
             //灏唀ngineering琛ㄧ姸鎬佷负姝e湪涓婄墖
-            boolean work=engineeringService.changeTask(engineering.getEngineerId(),engineering.getState());
+            boolean work = engineeringService.changeTask(engineering.getEngineerId(), engineering.getState());
             List<UpPattenUsage> glass = upPattenUsageService.prioritylist();
             optimizeProjectService.changeTask(engineering.getEngineerId(), 200);
             if (work) {
-                return Result.build(200, "淇濆瓨鎴愬姛"+engineering.getEngineerId(), true);
-            }else {
-                return Result.build(200, "淇濆瓨鎴愬姛"+engineering.getEngineerId(), false);
+                return Result.build(200, "淇濆瓨鎴愬姛" + engineering.getEngineerId(), true);
+            } else {
+                return Result.build(200, "淇濆瓨鎴愬姛" + engineering.getEngineerId(), false);
             }
         }
 
@@ -100,16 +102,21 @@
     @ApiOperation("鍒犻櫎宸ョ▼涓婄墖")
     @PostMapping("/deleteTask") //璋冪敤涓婄墖浠诲姟
     @ResponseBody
-    public  Result <Boolean> deleteTask(@RequestBody Engineering engineering) {
+    public Result<Boolean> deleteTask(@RequestBody Engineering engineering) {
         //鍒犻櫎宸ョ▼琛ㄣ�佸皬鐗囪〃銆佷笂鐗囪〃锛屾洿鏀逛紭鍖栬〃鐘舵��
-        boolean work=engineeringService.deleteTask(engineering.getEngineerId());
-        glassInfoService.deleteTask(engineering.getEngineerId());
-        upPattenUsageService.deleteTask(engineering.getEngineerId());
-        optimizeProjectService.changeTask(engineering.getEngineerId(), 100);
+        boolean work = false;
+        Engineering engineeringState = engineeringService.selectEngineeringState(engineering.getEngineerId());
+        if (engineeringState == null) {
+            work = engineeringService.deleteTask(engineering.getEngineerId());
+            glassInfoService.deleteTask(engineering.getEngineerId());
+            upPattenUsageService.deleteTask(engineering.getEngineerId());
+            optimizeProjectService.changeTask(engineering.getEngineerId(), 100);
+        }
+
         if (work) {
-            return Result.build(200, "鍒犻櫎鎴愬姛"+engineering.getEngineerId(), true);
-        }else {
-            return Result.build(200, "鍒犻櫎澶辫触"+engineering.getEngineerId(), false);
+            return Result.build(200, "鍒犻櫎鎴愬姛" + engineering.getEngineerId(), true);
+        } else {
+            return Result.build(200, "鍒犻櫎澶辫触" + engineering.getEngineerId(), false);
         }
 
     }
@@ -117,10 +124,10 @@
     @ApiOperation("鏌ヨ鍙互涓婄墖鐨勫伐绋嬪彿")
     @GetMapping("/selectTask") //璋冪敤涓婄墖浠诲姟
     @ResponseBody
-    public Result <List<Engineering>> selectTask() {
-        List<Engineering> engineering=engineeringService.selectTask();
+    public Result<List<Engineering>> selectTask() {
+        List<Engineering> engineering = engineeringService.selectTask();
         log.info("鍙鍙栦换鍔¤繑鍥�:{}", engineering);
-        return Result.build(200, "",engineering);
+        return Result.build(200, "", engineering);
     }
 }
 
diff --git a/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/engineering/mapper/EngineeringMapper.java b/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/engineering/mapper/EngineeringMapper.java
index 2491905..48f66ca 100644
--- a/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/engineering/mapper/EngineeringMapper.java
+++ b/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/engineering/mapper/EngineeringMapper.java
@@ -2,6 +2,8 @@
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.mes.engineering.entity.Engineering;
+import com.mes.workstation.entity.UpWorkSequence;
+import org.apache.ibatis.annotations.Param;
 
 /**
  * <p>
@@ -13,4 +15,6 @@
  */
 public interface EngineeringMapper extends BaseMapper<Engineering> {
 
+    //鑾峰彇宸ヤ綅淇℃伅
+    Engineering selectEngineeringState(@Param("engineerId") String engineerId);
 }
diff --git a/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/engineering/mapper/xml/EngineeringMapper.xml b/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/engineering/mapper/xml/EngineeringMapper.xml
index bff1839..463bacb 100644
--- a/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/engineering/mapper/xml/EngineeringMapper.xml
+++ b/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/engineering/mapper/xml/EngineeringMapper.xml
@@ -2,4 +2,11 @@
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.mes.engineering.mapper.EngineeringMapper">
 
+
+    <select id="selectEngineeringState" resultMap="com.mes.engineering.entity.Engineering">
+        select DISTINCT engineer_id from edg_storage_cage_details
+        <where>
+            engineer_id=#{engineerId}
+        </where>
+    </select>
 </mapper>
diff --git a/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/engineering/service/EngineeringService.java b/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/engineering/service/EngineeringService.java
index 599c053..9edf953 100644
--- a/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/engineering/service/EngineeringService.java
+++ b/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/engineering/service/EngineeringService.java
@@ -44,5 +44,7 @@
     boolean pauseTask(String engineerId, Integer state);
 
     boolean deleteTask(String engineerId);
+
+    Engineering selectEngineeringState(String engineerId);
 }
 
diff --git a/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/engineering/service/impl/EngineeringServiceImpl.java b/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/engineering/service/impl/EngineeringServiceImpl.java
index dd50586..859eb82 100644
--- a/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/engineering/service/impl/EngineeringServiceImpl.java
+++ b/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/engineering/service/impl/EngineeringServiceImpl.java
@@ -127,4 +127,10 @@
         return this.remove(wrapper);
     }
 
+    @Override
+    public Engineering selectEngineeringState(String engineerId){
+        //鏌ヨ宸ョ▼鐘舵��
+        return baseMapper.selectEngineeringState(engineerId);
+    }
+
 }
diff --git a/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/job/PlcLoadGlassTask.java b/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/job/PlcLoadGlassTask.java
index 0118321..7ed5109 100644
--- a/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/job/PlcLoadGlassTask.java
+++ b/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/job/PlcLoadGlassTask.java
@@ -118,21 +118,22 @@
     @Scheduled(fixedDelay = 1000)
     public void loadGlassHome() {
         JSONObject jsonObject = new JSONObject();
-        //姝e湪杩涜鐨勪换鍔�
-        List<UpPattenUsage> upPattenUsages = upPattenUsageService.prioritylist();
-        if(upPattenUsages!=null){
-            jsonObject.append("prioritylist", upPattenUsages);
-        }
 
-        //宸ヤ綅淇℃伅
-        List<UpWorkstation> upWorkstations = upWorkstationService.list();
-        jsonObject.append("list", upWorkstations);
-        //鏄惁寮�濮嬪伐绋�
-        Engineering engineering = engineeringService.selectInitiate(1);
-        jsonObject.append("engineering", engineering);
 
         ArrayList<WebSocketServer> sendwServer = WebSocketServer.sessionMap.get("loadGlass");
         if (sendwServer != null) {
+            //姝e湪杩涜鐨勪换鍔�
+            List<UpPattenUsage> upPattenUsages = upPattenUsageService.prioritylist();
+            if (upPattenUsages != null) {
+                jsonObject.append("prioritylist", upPattenUsages);
+            }
+
+            //宸ヤ綅淇℃伅
+            List<UpWorkstation> upWorkstations = upWorkstationService.list();
+            jsonObject.append("list", upWorkstations);
+            //鏄惁寮�濮嬪伐绋�
+            Engineering engineering = engineeringService.selectInitiate(1);
+            jsonObject.append("engineering", engineering);
             for (WebSocketServer webserver : sendwServer) {
                 if (webserver != null) {
                     webserver.sendMessage(jsonObject.toString());
@@ -152,7 +153,7 @@
     public void loadGlassStatus() {
         JSONObject jsonObject = new JSONObject();
         //姝e湪杩涜鐨勪换鍔�
-        String inkageStatus =plcParameterObject.getPlcParameter("InkageStatus").getValue();
+        String inkageStatus = plcParameterObject.getPlcParameter("InkageStatus").getValue();
 //        String inkageStatus ="1";
         jsonObject.append("InkageStatus", inkageStatus);
         ArrayList<WebSocketServer> sendwServer = WebSocketServer.sessionMap.get("loadGlass");
@@ -166,12 +167,13 @@
             }
         }
     }
+
     @Scheduled(fixedDelay = 1000)
     public void loadGlassIsRun() {
         JSONObject jsonObject = new JSONObject();
         //鏄惁寮�濮嬪伐绋�
         Engineering engineering = engineeringService.selectInitiate(1);
-            jsonObject.append("engineering", engineering);
+        jsonObject.append("engineering", engineering);
         //宸ヤ綅淇℃伅
         List<UpWorkstation> upWorkstations = upWorkstationService.list();
         jsonObject.append("list", upWorkstations);
diff --git a/hangzhoumesParent/moduleService/LoadGlassModule/src/main/resources/application.yml b/hangzhoumesParent/moduleService/LoadGlassModule/src/main/resources/application.yml
index 4e84dfb..8f25ef7 100644
--- a/hangzhoumesParent/moduleService/LoadGlassModule/src/main/resources/application.yml
+++ b/hangzhoumesParent/moduleService/LoadGlassModule/src/main/resources/application.yml
@@ -7,6 +7,12 @@
     name: loadGlass
   liquibase:
     enabled: false
+  druid:
+    initial-size: 5
+    min-idle: 5
+    max-active: 10
+    time-between-eviction-runs-millis: 60000
+    connection-properties: druid,stat,mergeSql=true,druid,stat ,slowSalMillis=5000
 mybatis-plus:
   mapper-locations: classpath*:mapper/*.xml
 #  configuration:
diff --git a/hangzhoumesParent/moduleService/LoadGlassModule/src/main/resources/mapper/EngineeringMapper.xml b/hangzhoumesParent/moduleService/LoadGlassModule/src/main/resources/mapper/EngineeringMapper.xml
new file mode 100644
index 0000000..6f15de3
--- /dev/null
+++ b/hangzhoumesParent/moduleService/LoadGlassModule/src/main/resources/mapper/EngineeringMapper.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.mes.engineering.mapper.EngineeringMapper">
+    <resultMap id="sequenceMap" type="com.mes.engineering.entity.Engineering">
+        <id property="engineerId" column="engineer_id"/>
+        <!--        <result property="number" column="number"/>-->
+    </resultMap>
+
+    <select id="selectEngineeringState" resultMap="sequenceMap">
+        select DISTINCT engineer_id from edg_storage_cage_details
+        <where>
+            engineer_id=#{engineerId}
+        </where>
+    </select>
+
+
+</mapper>
\ No newline at end of file
diff --git a/hangzhoumesParent/moduleService/TemperingGlassModule/src/main/java/com/mes/job/PlcScreenTask.java b/hangzhoumesParent/moduleService/TemperingGlassModule/src/main/java/com/mes/job/PlcScreenTask.java
index 2a52753..da0a961 100644
--- a/hangzhoumesParent/moduleService/TemperingGlassModule/src/main/java/com/mes/job/PlcScreenTask.java
+++ b/hangzhoumesParent/moduleService/TemperingGlassModule/src/main/java/com/mes/job/PlcScreenTask.java
@@ -1,4 +1,5 @@
 package com.mes.job;
+
 import cn.hutool.json.JSONObject;
 import com.mes.order.entity.Orders;
 import com.mes.order.service.OrdersService;
@@ -31,6 +32,7 @@
     private OptimizeProjectService optimizeProjectService;
     @Autowired
     private OrdersService ordersService;
+
     /**
      * fixedRate : 涓婁竴涓皟鐢ㄥ紑濮嬪悗鍐嶆璋冪敤鐨勫欢鏃讹紙涓嶇敤绛夊緟涓婁竴娆¤皟鐢ㄥ畬鎴愶級
      * fixedDelay : 涓婁竴涓皟鐢ㄧ粨鏉熷悗鍐嶆璋冪敤鐨勫欢鏃�
@@ -39,40 +41,41 @@
     @Scheduled(fixedDelay = 10000)
     public void screenHome() {
         JSONObject jsonObject = new JSONObject();
-        Reportingdamage reportingdamage = new Reportingdamage();
-        // 鑾峰彇褰撳墠鏃ユ湡
-        LocalDate today = LocalDate.now();
-        // 璁$畻鏈�杩戜竷澶╃殑寮�濮嬫棩鏈�
-        LocalDate startOfPeriod = today.minusDays(6); // 7澶╃殑鑼冨洿鍖呮嫭浠婂ぉ锛屾墍浠ュ噺鍘�6澶�
-        // 鏈�杩戜竷澶╃殑缁撴潫鏃ユ湡灏辨槸浠婂ぉ
-        LocalDate endOfPeriod = today;
-        // 鏍煎紡鍖栨棩鏈熶负瀛楃涓�
-        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
-        String startOfPeriodStr = startOfPeriod.format(formatter);
-        String endOfPeriodStr = endOfPeriod.format(formatter);
-        // 璁剧疆涓烘渶杩戜竷澶╃殑鏃堕棿鑼冨洿
-//        reportingdamage.setReportingWorkTime("2024-05-11");
-        reportingdamage.setReportingWorkTime(startOfPeriodStr);
-        reportingdamage.setReportingWorkTime2(endOfPeriodStr);
-        //鎵囧舰鍥惧悇璁惧鐨勫姞宸ョ牬鎹熸暟閲�
-        List<Reportingdamage> device = reportingWorkService.selectDamage(reportingdamage);
-        jsonObject.append("device", device);
 
-        //鑾峰彇娆$牬鏈ˉ淇℃伅
-        List<AwaitingRepair> awaitingRepairs = reportingWorkService.selectAwaitingRepair();
-        jsonObject.append("awaitingRepairs", awaitingRepairs);
-        //鑾峰彇姝e湪杩涜鐨勫伐绋�
-        List<OptimizeProject> optimizeProjects = optimizeProjectService.getDoingTask();
-        jsonObject.append("DoingTask", optimizeProjects);
-        //鑾峰彇褰撳墠璁㈠崟
-        List<Orders> orders = ordersService.selectOrders();
-        jsonObject.append("orders", orders);
 
         /*鐜板満瑙勫垝鍥炬樉绀�*/
 
 
         ArrayList<WebSocketServer> sendwServer = WebSocketServer.sessionMap.get("screen");
         if (sendwServer != null) {
+            Reportingdamage reportingdamage = new Reportingdamage();
+            // 鑾峰彇褰撳墠鏃ユ湡
+            LocalDate today = LocalDate.now();
+            // 璁$畻鏈�杩戜竷澶╃殑寮�濮嬫棩鏈�
+            LocalDate startOfPeriod = today.minusDays(6); // 7澶╃殑鑼冨洿鍖呮嫭浠婂ぉ锛屾墍浠ュ噺鍘�6澶�
+            // 鏈�杩戜竷澶╃殑缁撴潫鏃ユ湡灏辨槸浠婂ぉ
+            LocalDate endOfPeriod = today;
+            // 鏍煎紡鍖栨棩鏈熶负瀛楃涓�
+            DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
+            String startOfPeriodStr = startOfPeriod.format(formatter);
+            String endOfPeriodStr = endOfPeriod.format(formatter);
+            // 璁剧疆涓烘渶杩戜竷澶╃殑鏃堕棿鑼冨洿
+//        reportingdamage.setReportingWorkTime("2024-05-11");
+            reportingdamage.setReportingWorkTime(startOfPeriodStr);
+            reportingdamage.setReportingWorkTime2(endOfPeriodStr);
+            //鎵囧舰鍥惧悇璁惧鐨勫姞宸ョ牬鎹熸暟閲�
+            List<Reportingdamage> device = reportingWorkService.selectDamage(reportingdamage);
+            jsonObject.append("device", device);
+
+            //鑾峰彇娆$牬鏈ˉ淇℃伅
+            List<AwaitingRepair> awaitingRepairs = reportingWorkService.selectAwaitingRepair();
+            jsonObject.append("awaitingRepairs", awaitingRepairs);
+            //鑾峰彇姝e湪杩涜鐨勫伐绋�
+            List<OptimizeProject> optimizeProjects = optimizeProjectService.getDoingTask();
+            jsonObject.append("DoingTask", optimizeProjects);
+            //鑾峰彇褰撳墠璁㈠崟
+            List<Orders> orders = ordersService.selectOrders();
+            jsonObject.append("orders", orders);
             for (WebSocketServer webserver : sendwServer) {
                 if (webserver != null) {
                     webserver.sendMessage(jsonObject.toString());
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 d76717f..9f5f086 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
@@ -37,20 +37,24 @@
     @Scheduled(fixedDelay = 1000)
     public void temperingGlassHome() {
         JSONObject jsonObject = new JSONObject();
-        //姝e湪绛夊緟杩涚墖鐨勭幓鐠�
-        List<TemperingGlassInfo> waitingGlass = temperingAgoService.selectWaitingGlass();
-        if (waitingGlass != null) {
-            jsonObject.append("waitingGlass", waitingGlass);
-        }
 
-        //鑾峰彇鏁村湪鐐変腑鐨勪袱涓増鍥緄d
-        List<TemperingGlassInfo> layoutId = temperingAgoService.selectLayoutId();
-        //杩涚倝涓殑鐜荤拑
-        if (!layoutId.isEmpty()) {
-            for (int i = 0; i < layoutId.size(); i++) {
-                List<TemperingGlassInfo> intoGlass = temperingAgoService.selectIntoGlass(layoutId.get(i));
-                jsonObject.append("intoGlass" + (i + 1), intoGlass);
+
+        ArrayList<WebSocketServer> sendwServer = WebSocketServer.sessionMap.get("temperingGlass");
+        if (sendwServer != null) {
+            //姝e湪绛夊緟杩涚墖鐨勭幓鐠�
+            List<TemperingGlassInfo> waitingGlass = temperingAgoService.selectWaitingGlass();
+            if (waitingGlass != null) {
+                jsonObject.append("waitingGlass", waitingGlass);
             }
+
+            //鑾峰彇鏁村湪鐐変腑鐨勪袱涓増鍥緄d
+            List<TemperingGlassInfo> layoutId = temperingAgoService.selectLayoutId();
+            //杩涚倝涓殑鐜荤拑
+            if (!layoutId.isEmpty()) {
+                for (int i = 0; i < layoutId.size(); i++) {
+                    List<TemperingGlassInfo> intoGlass = temperingAgoService.selectIntoGlass(layoutId.get(i));
+                    jsonObject.append("intoGlass" + (i + 1), intoGlass);
+                }
 //            List<TemperingGlassInfo> intoGlass = temperingAgoService.selectIntoGlass(layoutId.get(0));
 //            jsonObject.append("intoGlass", intoGlass);
 //            //杩涚倝涓殑绗簩涓増鍥�
@@ -59,22 +63,18 @@
 //                jsonObject.append("intoGlass2", intoGlass2);
 //            }
 
-        }
-        //鍑虹倝鍚庣殑鐜荤拑
-        List<TemperingGlassInfo> outGlass = temperingAgoService.selectOutGlass();
-        if (outGlass != null) {
-            jsonObject.append("outGlass", outGlass);
-        }
+            }
+            //鍑虹倝鍚庣殑鐜荤拑
+            List<TemperingGlassInfo> outGlass = temperingAgoService.selectOutGlass();
+            if (outGlass != null) {
+                jsonObject.append("outGlass", outGlass);
+            }
 
-        //杩囨棆杞彴閽㈠寲鍚庣殑鐜荤拑
-        List<TemperingGlassInfo> overGlass = temperingAgoService.selectOverGlass();
-        if (outGlass != null) {
-            jsonObject.append("overGlass", overGlass);
-        }
-
-
-        ArrayList<WebSocketServer> sendwServer = WebSocketServer.sessionMap.get("temperingGlass");
-        if (sendwServer != null) {
+            //杩囨棆杞彴閽㈠寲鍚庣殑鐜荤拑
+            List<TemperingGlassInfo> overGlass = temperingAgoService.selectOverGlass();
+            if (outGlass != null) {
+                jsonObject.append("overGlass", overGlass);
+            }
             for (WebSocketServer webserver : sendwServer) {
                 if (webserver != null) {
                     webserver.sendMessage(jsonObject.toString());
diff --git a/hangzhoumesParent/moduleService/TemperingGlassModule/src/main/resources/application.yml b/hangzhoumesParent/moduleService/TemperingGlassModule/src/main/resources/application.yml
index fa19a61..bd9f8f5 100644
--- a/hangzhoumesParent/moduleService/TemperingGlassModule/src/main/resources/application.yml
+++ b/hangzhoumesParent/moduleService/TemperingGlassModule/src/main/resources/application.yml
@@ -2,7 +2,7 @@
   port: 8084
 spring:
   profiles:
-    active: dev
+    active: cz
   application:
     name: temperingGlass
   liquibase:
@@ -12,6 +12,12 @@
       pool:
         size: 10
       thread-name-prefix: task-tempering
+  druid:
+    initial-size: 5
+    min-idle: 5
+    max-active: 10
+    time-between-eviction-runs-millis: 60000
+    connection-properties: druid,stat,mergeSql=true,druid,stat ,slowSalMillis=5000
 mybatis-plus:
   mapper-locations: classpath*:mapper/*.xml
 #  configuration:
diff --git a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downglassinfo/controller/DownGlassTaskController.java b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downglassinfo/controller/DownGlassTaskController.java
index d257af6..9935139 100644
--- a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downglassinfo/controller/DownGlassTaskController.java
+++ b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downglassinfo/controller/DownGlassTaskController.java
@@ -10,10 +10,7 @@
 import com.mes.utils.Result;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
-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 org.springframework.web.bind.annotation.*;
 
 import javax.annotation.Resource;
 import java.util.List;
@@ -55,5 +52,13 @@
         );
         return Result.build(200, "娓呯┖鎴愬姛", true);
     }
+
+    @ApiOperation("鍗х悊浠诲姟鎶ヨ〃")
+    @PostMapping("/selectDownGlassTask")
+    public Result selectDownGlassTask(@RequestBody DownGlassTask downGlassTask,
+                                  @RequestParam(required = false) String startTime,
+                                  @RequestParam(required = false) String endTime) {
+        return Result.build(200, "鏌ヨ鎴愬姛", downGlassTaskService.selectDownGlassTask(downGlassTask, startTime, endTime));
+    }
 }
 
diff --git a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downglassinfo/service/DownGlassTaskService.java b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downglassinfo/service/DownGlassTaskService.java
index 02674b0..c789fba 100644
--- a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downglassinfo/service/DownGlassTaskService.java
+++ b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downglassinfo/service/DownGlassTaskService.java
@@ -62,4 +62,12 @@
      * @return
      */
     List<DownGlassTask> selectOutTaskCache();
+
+    /**
+     * 鏌ヨ涓嬬墖鍗х悊浠诲姟
+     *
+     * @return
+     */
+    List<DownGlassTask> selectDownGlassTask(DownGlassTask downGlassTask, String startTime, String endTime);
+
 }
diff --git a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downglassinfo/service/impl/DownGlassTaskServiceImpl.java b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downglassinfo/service/impl/DownGlassTaskServiceImpl.java
index 17f9ba1..61ee089 100644
--- a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downglassinfo/service/impl/DownGlassTaskServiceImpl.java
+++ b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downglassinfo/service/impl/DownGlassTaskServiceImpl.java
@@ -121,5 +121,35 @@
         return baseMapper.selectList(new QueryWrapper<DownGlassTask>().eq("task_status", 0).eq("task_type", 2));
     }
 
-
+    @Override
+    public List<DownGlassTask> selectDownGlassTask(DownGlassTask downGlassTask, String startTime, String endTime){
+        if (endTime != null && !endTime.isEmpty()) {
+            endTime = endTime + " 23:59:59";
+        }
+        LambdaQueryWrapper<DownGlassTask> wrapper = new LambdaQueryWrapper<>();
+        if (downGlassTask.getStartCell() != null) {
+            wrapper.eq(DownGlassTask::getStartCell, downGlassTask.getStartCell());
+        }
+        if (downGlassTask.getEndCell() != 0) {
+            wrapper.eq(DownGlassTask::getEndCell, downGlassTask.getEndCell());
+        }
+        if (downGlassTask.getTaskStatus() != -1) {
+            wrapper.eq(DownGlassTask::getTaskStatus, downGlassTask.getTaskStatus());
+        }
+        if (downGlassTask.getTaskType() != -1) {
+            wrapper.eq(DownGlassTask::getTaskType, downGlassTask.getTaskType());
+        }
+        if (startTime != null && !startTime.isEmpty()) {
+            wrapper.ge(DownGlassTask::getCreateTime, startTime);
+        }
+        if (endTime != null && !endTime.isEmpty()) {
+            wrapper.le(DownGlassTask::getCreateTime, endTime);
+        }
+        wrapper.orderByDesc(DownGlassTask::getCreateTime);
+        wrapper.and(item -> item.eq(DownGlassTask::getDeleted, 0)
+                .or()
+                .eq(DownGlassTask::getDeleted, 1));
+        wrapper.between(DownGlassTask::getCreateTime, startTime, endTime);
+        return baseMapper.selectList(wrapper);
+    }
 }
diff --git a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/service/impl/DownWorkstationServiceImpl.java b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/service/impl/DownWorkstationServiceImpl.java
index 258c367..65738ad 100644
--- a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/service/impl/DownWorkstationServiceImpl.java
+++ b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/service/impl/DownWorkstationServiceImpl.java
@@ -1,6 +1,8 @@
 package com.mes.downworkstation.service.impl;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.github.yulichang.query.MPJQueryWrapper;
@@ -10,6 +12,7 @@
 import com.mes.device.PlcParameterObject;
 import com.mes.downglassinfo.entity.DownGlassInfo;
 import com.mes.downglassinfo.mapper.DownGlassInfoMapper;
+import com.mes.downglassinfo.service.DownGlassInfoService;
 import com.mes.downworkstation.entity.DownWorkstation;
 import com.mes.downworkstation.entity.DownWorkstationTask;
 import com.mes.downworkstation.entity.DownWorkstionAndDownGlassinfo;
@@ -17,6 +20,7 @@
 import com.mes.downworkstation.mapper.DownWorkstationTaskMapper;
 import com.mes.downworkstation.service.DownWorkstationService;
 import com.mes.downworkstation.service.DownWorkstationTaskService;
+import com.mes.glassinfo.entity.GlassInfo;
 import com.mes.glassinfo.service.GlassInfoService;
 import com.mes.utils.RedisUtil;
 import lombok.extern.slf4j.Slf4j;
@@ -40,6 +44,8 @@
     private DownWorkstationTaskMapper downWorkstationTaskMapper;
     @Autowired
     private DownGlassInfoMapper downGlassInfoMapper;
+    @Autowired
+    private DownGlassInfoService downGlassInfoService;
     @Autowired
     private GlassInfoService glassInfoService;
     @Autowired
@@ -147,16 +153,37 @@
 
     @Override
     public void updateFlowCardIdAndCount(String flowCardId, int workstationId, int layer) {
-        int glassInfoCount = glassInfoService.getGlassInfoCountByFlowCardId(flowCardId, layer);
+        GlassInfo glassInfo = glassInfoService.getOne(
+                new LambdaQueryWrapper<GlassInfo>()
+                        .eq(GlassInfo::getFlowCardId, flowCardId)
+                        .last("limit 1")
+        );
         QueryWrapper<Damage> queryWrapper = new QueryWrapper<>();
         queryWrapper.eq("process_id", flowCardId);
-        queryWrapper.eq("technology_number", layer);
-        int otherNumber = damageservice.count(queryWrapper);
+
+        LambdaQueryWrapper<DownGlassInfo> wrapper = new LambdaQueryWrapper();
+        wrapper.eq(DownGlassInfo::getFlowCardId, flowCardId);
+        wrapper.lt(DownGlassInfo::getWorkStationId, 7);
+
         UpdateWrapper<DownWorkstation> updateWrapper = new UpdateWrapper<>();
+        int glassInfoCount = 0;
+        if (glassInfo.getCombine() == 0) {
+            glassInfoCount = glassInfoService.getGlassInfoCountByFlowCardId(flowCardId, layer);
+            queryWrapper.eq("technology_number", layer);
+            wrapper.eq(DownGlassInfo::getLayer, layer);
+            updateWrapper.set("layer", layer);
+        } else {
+            glassInfoCount = glassInfoService.getGlassInfoCountByFlowCardId(flowCardId, 0);
+            updateWrapper.set("layer", 0);
+        }
+        int otherNumber = damageservice.count(queryWrapper);
+        int racksNumber = downGlassInfoService.count(wrapper);
+
         updateWrapper.set("total_quantity", glassInfoCount)
                 .set("flow_card_id", flowCardId)
-                .set("layer", layer)
+
                 .set("other_number", otherNumber)
+                .set("racks_number", racksNumber)
                 .eq("workstation_id", workstationId);
 //        .eq("id", workstationId);
         this.update(updateWrapper);
diff --git a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/job/DownLoadCacheGlassTask.java b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/job/DownLoadCacheGlassTask.java
index 3764161..c6288dd 100644
--- a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/job/DownLoadCacheGlassTask.java
+++ b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/job/DownLoadCacheGlassTask.java
@@ -94,6 +94,15 @@
         String confirmationWrodAddress = plcParameterObject.getPlcParameter("confirmationWord").getAddress();
         String currentSlot = plcParameterObject.getPlcParameter("currentCell").getValue();
 
+//        requestWord="3";
+//        glassIdeValue="P25031802|4|1";
+//        out06Glassstate="1";
+//        out08Glassstate="1";
+//        out11Glassstate ="1";
+//        out13Glassstate="1";
+//        currentSlot="1";
+//        confirmationWrodValue="0";
+
 
         log.info("1銆佽幏鍙栧埌鐨勮姹傚瓧涓猴細{}锛岃幏鍙栧埌鐨勬壂鎻廔D涓猴細{}锛岃幏鍙栧埌鐨勭‘璁ゅ瓧涓猴細{}锛岃幏鍙栧埌鐨勫嚭鐗囩姸鎬佸垎鍒负锛歡06:{}銆乬08:{}銆乬11:{}銆乬13:{},褰撳墠鏍煎瓙鍙蜂负锛歿}",
                 requestWord, glassIdeValue, confirmationWrodValue, out06Glassstate, out08Glassstate, out11Glassstate, out13Glassstate, currentSlot);
@@ -227,6 +236,7 @@
         //鐜荤拑灏哄鏄惁璧颁汉宸ヤ笅鐗�
         if (glassWidth > maxWidth || glassHeight > maxHeight || glassWidth < minWidth || glassHeight < minHeight) {
             log.info("璇ョ幓鐠冨昂瀵镐笉绗﹀悎瑕佹眰锛岄渶瑕佽蛋浜哄伐涓嬬墖鐩存帴杩涚墖");
+            return;
         } else {
             log.info("璇ョ幓鐠冨昂瀵搁潪浜哄伐涓嬬墖");
             //鑾峰彇璇ョ幓鐠冪殑娴佺▼鍗℃槸鍚﹀凡缁戝畾鏋跺瓙
@@ -677,24 +687,27 @@
             wrapper.eq(DownGlassInfo::getLayer, downGlassInfo.getLayer());
         }
 //        downGlassInfo.setSequence(downGlassInfoService.queryMaxSequence(downGlassInfo.getFlowCardId(), downGlassInfo.getLayer()));
-        int k = 0;
-        DownGlassInfo downGlassInfo1 = downGlassInfoService.getOne(wrapper);
-        if (downGlassInfo1 != null) {
-            k = 1;
-        } else {
-            k = 1;
-        }
-        downGlassInfo.setSequence(k);
-        downGlassInfo.setWorkStationId(endCell);
-        downGlassInfo.setGmtCreate(new Date());
-        downGlassInfoService.save(downGlassInfo);
-        //鐢熸垚浠诲姟淇℃伅
+        int k = 1;
+//        DownGlassInfo downGlassInfo1 = downGlassInfoService.getOne(wrapper);
+//        if (downGlassInfo1 != null) {
+//            k = 1;
+//        } else {
+//            k = 1;
+//        }
         GlassInfo glassInfo = new GlassInfo();
         BeanUtils.copyProperties(downStorageCageDetails, glassInfo);
-        //鍒犻櫎鐞嗙墖绗艰〃鎷胯蛋/鐮存崯鏁版嵁鏁版嵁
         GlassInfo glassInfo1 = glassInfoService.getOne(
                 new LambdaUpdateWrapper<GlassInfo>().eq(GlassInfo::getGlassId, glassInfo.getGlassId())
         );
+        downGlassInfo.setSequence(k);
+        downGlassInfo.setWorkStationId(endCell);
+        downGlassInfo.setGmtCreate(new Date());
+        downGlassInfo.setLayer(glassInfo1.getLayer());
+        downGlassInfoService.save(downGlassInfo);
+        //鐢熸垚浠诲姟淇℃伅
+
+
+        //鍒犻櫎鐞嗙墖绗艰〃鎷胯蛋/鐮存崯鏁版嵁鏁版嵁
         glassInfo.setLayer(glassInfo1.getLayer());
         damageService.deleteByGlassId(glassInfo.getGlassId());
         return initDownGlassTask(glassInfo, downStorageCageDetails.getSlot(), endCell, taskType);
diff --git a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/job/Downpush.java b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/job/Downpush.java
index efd6f94..ce4b783 100644
--- a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/job/Downpush.java
+++ b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/job/Downpush.java
@@ -57,28 +57,28 @@
     @Autowired
     private RedisUtil redisUtil;
 
-    @Scheduled(fixedDelay = 2000)
+    @Scheduled(fixedDelay = 3000)
     public void sendDownWorkstations() {
-        log.info("鍙戦�佸伐浣嶇幓鐠冧俊鎭�");
-        JSONObject jsonObject = new JSONObject();
 
-        List<DownWorkstation> data = downWorkstationService.list();
-        List<DownGlassTask> downGlassTasks = downGlassTaskService.list(
-                new LambdaQueryWrapper<DownGlassTask>()
-                        .eq(DownGlassTask::getEndCell, 7)
-                        .eq(DownGlassTask::getTaskType, 3)
-                        .lt(DownGlassTask::getTaskStatus, 3)
-        );
-        DownWorkstation downWorkstation = new DownWorkstation();
-        downWorkstation.setWorkstationId(7);
-        downWorkstation.setEnableState(1);
-        downWorkstation.setRacksNumber(downGlassTasks.size());
-        downWorkstation.setTotalQuantity(downGlassTasks.size());
-        data.add(downWorkstation);
-        jsonObject.append("params", data);
-        log.info(jsonObject.toString());
+        JSONObject jsonObject = new JSONObject();
         ArrayList<WebSocketServer> sendwServer = WebSocketServer.sessionMap.get("unloadglass");
         if (sendwServer != null) {
+            log.info("鍙戦�佸伐浣嶇幓鐠冧俊鎭�");
+            List<DownWorkstation> data = downWorkstationService.list();
+            List<DownGlassTask> downGlassTasks = downGlassTaskService.list(
+                    new LambdaQueryWrapper<DownGlassTask>()
+                            .eq(DownGlassTask::getEndCell, 7)
+                            .eq(DownGlassTask::getTaskType, 3)
+                            .lt(DownGlassTask::getTaskStatus, 3)
+            );
+            DownWorkstation downWorkstation = new DownWorkstation();
+            downWorkstation.setWorkstationId(7);
+            downWorkstation.setEnableState(1);
+            downWorkstation.setRacksNumber(downGlassTasks.size());
+            downWorkstation.setTotalQuantity(downGlassTasks.size());
+            data.add(downWorkstation);
+            jsonObject.append("params", data);
+            log.info(jsonObject.toString());
             for (WebSocketServer webserver : sendwServer) {
                 if (webserver != null && webserver.session.isOpen()) {
                     log.info("宸插彂閫�");
@@ -88,15 +88,16 @@
         }
     }
 
-    @Scheduled(fixedDelay = 1000)
+    @Scheduled(fixedDelay = 3000)
     public void sendGlassInfoData() {
-        log.info("鍙戦�佸伐浣嶆樉绀哄浘淇℃伅1");
-        JSONObject jsonObject2 = new JSONObject();
-        List<Map<String, Object>> glassinfodata = downWorkstationService.getTotalGlassDimensionsByWorkstation(1, 3);
-        jsonObject2.append("glassinfo", glassinfodata);
-        log.info(jsonObject2.toString());
+
         ArrayList<WebSocketServer> sendwServer2 = WebSocketServer.sessionMap.get("unloadglass2");
         if (sendwServer2 != null) {
+            log.info("鍙戦�佸伐浣嶆樉绀哄浘淇℃伅1");
+            JSONObject jsonObject2 = new JSONObject();
+            List<Map<String, Object>> glassinfodata = downWorkstationService.getTotalGlassDimensionsByWorkstation(1, 3);
+            jsonObject2.append("glassinfo", glassinfodata);
+            log.info(jsonObject2.toString());
             for (WebSocketServer webserver : sendwServer2) {
                 if (webserver != null && webserver.session.isOpen()) {
                     webserver.sendMessage(jsonObject2.toString());
@@ -105,15 +106,14 @@
         }
     }
 
-    @Scheduled(fixedDelay = 1000)
+    @Scheduled(fixedDelay = 3000)
     public void sendGlassInfoData2() {
-        log.info("鍙戦�佸伐浣嶆樉绀哄浘淇℃伅2");
-        JSONObject jsonObject3 = new JSONObject();
-        List<Map<String, Object>> glassinfodata2 = downWorkstationService.getTotalGlassDimensionsByWorkstation(4, 6);
-        jsonObject3.append("glassinfo2", glassinfodata2);
-        log.info(jsonObject3.toString());
         ArrayList<WebSocketServer> sendwServer3 = WebSocketServer.sessionMap.get("unloadglass3");
         if (sendwServer3 != null) {
+            log.info("鍙戦�佸伐浣嶆樉绀哄浘淇℃伅2");
+            JSONObject jsonObject3 = new JSONObject();
+            List<Map<String, Object>> glassinfodata2 = downWorkstationService.getTotalGlassDimensionsByWorkstation(4, 6);
+            jsonObject3.append("glassinfo2", glassinfodata2);
             for (WebSocketServer webserver : sendwServer3) {
                 if (webserver != null && webserver.session.isOpen()) {
                     webserver.sendMessage(jsonObject3.toString());
@@ -122,7 +122,7 @@
         }
     }
 
-    @Scheduled(fixedDelay = 2000)
+    @Scheduled(fixedDelay = 3000)
     public void sendDownStorageCages() {
         log.info("鍙戦�佺紦瀛樼幓鐠冧俊鎭�");
         JSONObject jsonObject4 = new JSONObject();
@@ -139,56 +139,57 @@
         }
     }
 
-    @Scheduled(fixedDelay = 2000)
+    @Scheduled(fixedDelay = 3000)
     public void sendDownGlassInfo() {
-        DownGlassInfoRequest request = redisUtil.getCacheObject("downGlassRequest");
-        if (null == request) {
-            request = new DownGlassInfoRequest();
-        }
-        if (request.getBeginDate() == null) {
-            request.setBeginDate(DateUtil.getBeginDate());
-            request.setEndDate(DateUtil.getEndDate());
-        }
-        log.info("鍙戦�佸綋鍓嶆鍦ㄦ墽琛屽伐绋嬪凡钀芥灦鐨勭幓鐠冧俊鎭�");
-        LambdaQueryWrapper<DownGlassInfo> wrapper = new LambdaQueryWrapper<DownGlassInfo>()
-                .between(null != request.getBeginDate(), DownGlassInfo::getGmtCreate, request.getBeginDate(), request.getEndDate())
-                .eq(StringUtils.isNotBlank(request.getEngineerId()), DownGlassInfo::getEngineerId, request.getEngineerId());
-        if (null == request.getWorkStationId() || 0 == request.getWorkStationId()) {
-            wrapper.in(DownGlassInfo::getWorkStationId, Const.WORK_STATION_ALL);
-        } else {
-            wrapper.eq(DownGlassInfo::getWorkStationId, request.getWorkStationId());
-        }
-        List<DownGlassInfo> downGlassInfos = downGlassInfoService.list(wrapper);
-//        Map<Integer, List<DownGlassInfo>> listMap = downGlassInfos.stream().collect(Collectors.groupingBy(DownGlassInfo::getWorkStationId));
-        List<Object> engineerIdListTemp = downGlassInfoService.listObjs(new QueryWrapper<DownGlassInfo>().select("distinct engineer_id"));
-        List<String> engineerIdList = engineerIdListTemp.stream().map(String::valueOf).collect(Collectors.toList());
-        JSONObject jsonObject4 = new JSONObject();
-        jsonObject4.append("downGlassInfos", downGlassInfos);
-        jsonObject4.append("engineerIdList", engineerIdList);
-
-        //鎵撳嵃寮�鍏�
-        boolean autoPrint = false;
-        if (redisUtil.getCacheObject("autoPrint") == null) {
-            redisUtil.setCacheObject("autoPrint", false);
-        } else {
-            autoPrint = redisUtil.getCacheObject("autoPrint");
-        }
-        jsonObject4.append("autoPrint", autoPrint);
-        //浜哄伐涓嬬墖浣嶇疆鏈�鍚庝竴鐗�
-        DownGlassTask takeGlass = downGlassTaskService.getOne(
-                new QueryWrapper<DownGlassTask>()
-                        .select("Top 1 *")
-                        .eq("end_cell", Const.G13_WORK_STATION)
-                        .eq("task_type", 3)
-                        .lt("task_status", Const.UNLOAD_GLASS_DOWN)
-                        .orderByAsc("id")
-        );
-        if (takeGlass != null) {
-            jsonObject4.append("takeGlass", takeGlass);
-        }
 
         ArrayList<WebSocketServer> sendwServer4 = WebSocketServer.sessionMap.get("unloadglass");
         if (sendwServer4 != null) {
+            DownGlassInfoRequest request = redisUtil.getCacheObject("downGlassRequest");
+            if (null == request) {
+                request = new DownGlassInfoRequest();
+            }
+            if (request.getBeginDate() == null) {
+                request.setBeginDate(DateUtil.getBeginDate());
+                request.setEndDate(DateUtil.getEndDate());
+            }
+            log.info("鍙戦�佸綋鍓嶆鍦ㄦ墽琛屽伐绋嬪凡钀芥灦鐨勭幓鐠冧俊鎭�");
+            LambdaQueryWrapper<DownGlassInfo> wrapper = new LambdaQueryWrapper<DownGlassInfo>()
+                    .between(null != request.getBeginDate(), DownGlassInfo::getGmtCreate, request.getBeginDate(), request.getEndDate())
+                    .eq(StringUtils.isNotBlank(request.getEngineerId()), DownGlassInfo::getEngineerId, request.getEngineerId());
+            if (null == request.getWorkStationId() || 0 == request.getWorkStationId()) {
+                wrapper.in(DownGlassInfo::getWorkStationId, Const.WORK_STATION_ALL);
+            } else {
+                wrapper.eq(DownGlassInfo::getWorkStationId, request.getWorkStationId());
+            }
+            List<DownGlassInfo> downGlassInfos = downGlassInfoService.list(wrapper);
+//        Map<Integer, List<DownGlassInfo>> listMap = downGlassInfos.stream().collect(Collectors.groupingBy(DownGlassInfo::getWorkStationId));
+            List<Object> engineerIdListTemp = downGlassInfoService.listObjs(new QueryWrapper<DownGlassInfo>().select("distinct engineer_id"));
+            List<String> engineerIdList = engineerIdListTemp.stream().map(String::valueOf).collect(Collectors.toList());
+            JSONObject jsonObject4 = new JSONObject();
+            jsonObject4.append("downGlassInfos", downGlassInfos);
+            jsonObject4.append("engineerIdList", engineerIdList);
+
+            //鎵撳嵃寮�鍏�
+            boolean autoPrint = false;
+            if (redisUtil.getCacheObject("autoPrint") == null) {
+                redisUtil.setCacheObject("autoPrint", false);
+            } else {
+                autoPrint = redisUtil.getCacheObject("autoPrint");
+            }
+            jsonObject4.append("autoPrint", autoPrint);
+            //浜哄伐涓嬬墖浣嶇疆鏈�鍚庝竴鐗�
+            DownGlassTask takeGlass = downGlassTaskService.getOne(
+                    new QueryWrapper<DownGlassTask>()
+                            .select("Top 1 *")
+                            .eq("end_cell", Const.G13_WORK_STATION)
+                            .eq("task_type", 3)
+                            .lt("task_status", Const.UNLOAD_GLASS_DOWN)
+                            .orderByAsc("id")
+            );
+            if (takeGlass != null) {
+                jsonObject4.append("takeGlass", takeGlass);
+            }
+
             for (WebSocketServer webserver : sendwServer4) {
                 if (webserver != null && webserver.session.isOpen()) {
                     webserver.sendMessage(jsonObject4.toString());
@@ -199,14 +200,14 @@
 
     @Scheduled(fixedDelay = 1000)
     public void isRun() {
-        JSONObject jsonObject = new JSONObject();
-        //姝e湪杩涜鐨勪换鍔�
-        List<DownWorkstation> downWorkstation = downWorkstationService.getoneDownWorkstations(1, 6);
-        jsonObject.append("downWorkstation", downWorkstation);
-        List<DownGlassTask> downGlassTask = downGlassTaskService.selectOutTaskCache();
-        jsonObject.append("downGlassTask", downGlassTask);
         ArrayList<WebSocketServer> sendwServer = WebSocketServer.sessionMap.get("unLoadGlassIsRun");
         if (sendwServer != null) {
+            JSONObject jsonObject = new JSONObject();
+            //姝e湪杩涜鐨勪换鍔�
+            List<DownWorkstation> downWorkstation = downWorkstationService.getoneDownWorkstations(1, 6);
+            jsonObject.append("downWorkstation", downWorkstation);
+            List<DownGlassTask> downGlassTask = downGlassTaskService.selectOutTaskCache();
+            jsonObject.append("downGlassTask", downGlassTask);
             for (WebSocketServer webserver : sendwServer) {
                 if (webserver != null) {
                     webserver.sendMessage(jsonObject.toString());
@@ -222,8 +223,9 @@
         log.info("鎵弿浠诲姟宸插惎鍔�");
         while (true) {
             JSONObject jsonObject = new JSONObject();
-            try (Socket socket = new Socket(scanIp, scanPort);
-                 BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()))) {
+            try (Socket socket = new Socket(scanIp, scanPort)) {
+                socket.setSoTimeout(1000);
+                BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
                 // 鎺ユ敹鏈嶅姟鍣ㄥ搷搴�
                 log.info("绛夊緟鎵爜涓�......");
                 String glassId = in.readLine();
diff --git a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/resources/application.yml b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/resources/application.yml
index 5873f82..1bae3c4 100644
--- a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/resources/application.yml
+++ b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/resources/application.yml
@@ -13,7 +13,12 @@
       pool:
         size: 10
       thread-name-prefix: task-unLoad
-
+  druid:
+    initial-size: 5
+    min-idle: 5
+    max-active: 10
+    time-between-eviction-runs-millis: 60000
+    connection-properties: druid,stat,mergeSql=true,druid,stat ,slowSalMillis=5000
 
 mybatis-plus:
   mapper-locations: classpath*:mapper/*.xml

--
Gitblit v1.8.0