From 5cc26a22f2a14dc31c2c0c0a31d11e77018fa4e8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=AD=A3=E5=9C=A3=E5=8D=8E?= <752718920@qq.com> Date: Wed, 19 Dec 2018 23:54:53 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E5=90=8E=E7=AB=AF=EF=BC=8C?= =?UTF-8?q?=E9=87=87=E7=94=A8Springboot+mybatis?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/assembly/package.xml | 40 + src/main/conf/jshERPStart.bat | 6 + src/main/conf/jshERPStart.sh | 1 + .../com/jsh/action/asset/AssetAction.java | 452 - .../com/jsh/action/asset/ReportAction.java | 116 - .../com/jsh/action/basic/AccountAction.java | 683 - .../java/com/jsh/action/basic/AppAction.java | 482 - .../com/jsh/action/basic/AssetNameAction.java | 247 - .../com/jsh/action/basic/CategoryAction.java | 235 - .../com/jsh/action/basic/DepotAction.java | 429 - .../com/jsh/action/basic/FunctionsAction.java | 566 - .../com/jsh/action/basic/InOutItemAction.java | 286 - .../java/com/jsh/action/basic/LogAction.java | 174 - .../java/com/jsh/action/basic/RoleAction.java | 301 - .../com/jsh/action/basic/SupplierAction.java | 795 - .../jsh/action/basic/SystemConfigAction.java | 126 - .../java/com/jsh/action/basic/UnitAction.java | 262 - .../java/com/jsh/action/basic/UserAction.java | 446 - .../jsh/action/basic/UserBusinessAction.java | 228 - .../action/materials/AccountHeadAction.java | 393 - .../action/materials/AccountItemAction.java | 193 - .../jsh/action/materials/DepotHeadAction.java | 920 -- .../jsh/action/materials/DepotItemAction.java | 1010 -- .../jsh/action/materials/MaterialAction.java | 666 - .../materials/MaterialCategoryAction.java | 284 - .../materials/MaterialPropertyAction.java | 127 - .../jsh/action/materials/PersonAction.java | 320 - src/main/java/com/jsh/base/BaseAction.java | 115 - src/main/java/com/jsh/base/BaseDAO.java | 126 - src/main/java/com/jsh/base/BaseIDAO.java | 135 - src/main/java/com/jsh/base/BaseIService.java | 119 - src/main/java/com/jsh/base/BaseService.java | 124 - src/main/java/com/jsh/base/Log.java | 165 - src/main/java/com/jsh/dao/asset/AssetDAO.java | 16 - .../java/com/jsh/dao/asset/AssetIDAO.java | 8 - .../java/com/jsh/dao/asset/ReportDAO.java | 18 - .../java/com/jsh/dao/asset/ReportIDAO.java | 16 - .../java/com/jsh/dao/basic/AccountDAO.java | 82 - .../java/com/jsh/dao/basic/AccountIDAO.java | 12 - src/main/java/com/jsh/dao/basic/AppDAO.java | 16 - src/main/java/com/jsh/dao/basic/AppIDAO.java | 8 - .../java/com/jsh/dao/basic/AssetNameDAO.java | 16 - .../java/com/jsh/dao/basic/AssetNameIDAO.java | 8 - .../java/com/jsh/dao/basic/CategoryDAO.java | 16 - .../java/com/jsh/dao/basic/CategoryIDAO.java | 8 - src/main/java/com/jsh/dao/basic/DepotDAO.java | 16 - .../java/com/jsh/dao/basic/DepotIDAO.java | 8 - .../java/com/jsh/dao/basic/FunctionsDAO.java | 16 - .../java/com/jsh/dao/basic/FunctionsIDAO.java | 8 - .../java/com/jsh/dao/basic/InOutItemDAO.java | 16 - .../java/com/jsh/dao/basic/InOutItemIDAO.java | 8 - src/main/java/com/jsh/dao/basic/LogDAO.java | 17 - src/main/java/com/jsh/dao/basic/LogIDAO.java | 13 - src/main/java/com/jsh/dao/basic/RoleDAO.java | 16 - src/main/java/com/jsh/dao/basic/RoleIDAO.java | 8 - .../java/com/jsh/dao/basic/SupplierDAO.java | 25 - .../java/com/jsh/dao/basic/SupplierIDAO.java | 8 - .../com/jsh/dao/basic/SystemConfigDAO.java | 16 - .../com/jsh/dao/basic/SystemConfigIDAO.java | 8 - src/main/java/com/jsh/dao/basic/UnitDAO.java | 16 - src/main/java/com/jsh/dao/basic/UnitIDAO.java | 8 - .../com/jsh/dao/basic/UserBusinessDAO.java | 28 - .../com/jsh/dao/basic/UserBusinessIDAO.java | 13 - src/main/java/com/jsh/dao/basic/UserDAO.java | 18 - src/main/java/com/jsh/dao/basic/UserIDAO.java | 8 - .../com/jsh/dao/materials/AccountHeadDAO.java | 46 - .../jsh/dao/materials/AccountHeadIDAO.java | 15 - .../com/jsh/dao/materials/AccountItemDAO.java | 16 - .../jsh/dao/materials/AccountItemIDAO.java | 9 - .../com/jsh/dao/materials/DepotHeadDAO.java | 196 - .../com/jsh/dao/materials/DepotHeadIDAO.java | 28 - .../com/jsh/dao/materials/DepotItemDAO.java | 175 - .../com/jsh/dao/materials/DepotItemIDAO.java | 20 - .../dao/materials/MaterialCategoryDAO.java | 16 - .../dao/materials/MaterialCategoryIDAO.java | 8 - .../com/jsh/dao/materials/MaterialDAO.java | 41 - .../com/jsh/dao/materials/MaterialIDAO.java | 12 - .../dao/materials/MaterialPropertyDAO.java | 16 - .../dao/materials/MaterialPropertyIDAO.java | 8 - .../java/com/jsh/dao/materials/PersonDAO.java | 16 - .../com/jsh/dao/materials/PersonIDAO.java | 8 - src/main/java/com/jsh/erp/ErpApplication.java | 15 + .../java/com/jsh/erp/config/DbConfig.java | 97 + .../java/com/jsh/erp/config/WebConfig.java | 40 + .../jsh/erp/controller/AccountController.java | 124 + .../erp/controller/AccountHeadController.java | 146 + .../erp/controller/AccountItemController.java | 147 + .../com/jsh/erp/controller/AppController.java | 116 + .../jsh/erp/controller/DepotController.java | 149 + .../erp/controller/DepotHeadController.java | 458 + .../erp/controller/DepotItemController.java | 936 ++ .../erp/controller/FunctionsController.java | 235 + .../erp/controller/InOutItemController.java | 55 + .../MaterialCategoryController.java | 66 + .../erp/controller/MaterialController.java | 177 + .../jsh/erp/controller/PersonController.java | 121 + .../erp/controller/ResourceController.java | 124 + .../jsh/erp/controller/RoleController.java | 71 + .../erp/controller/SupplierController.java | 192 + .../controller/UserBusinessController.java | 60 + .../jsh/erp/controller/UserController.java | 188 + .../jsh/erp/datasource/entities/Account.java | 227 + .../datasource/entities/AccountExample.java | 752 + .../erp/datasource/entities/AccountHead.java | 325 + .../entities/AccountHeadExample.java | 933 ++ .../entities/AccountHeadVo4ListEx.java | 136 + .../erp/datasource/entities/AccountItem.java | 195 + .../entities/AccountItemExample.java | 672 + .../com/jsh/erp/datasource/entities/App.java | 483 + .../erp/datasource/entities/AppExample.java | 1302 ++ .../jsh/erp/datasource/entities/Asset.java | 613 + .../datasource/entities/AssetCategory.java | 131 + .../entities/AssetCategoryExample.java | 562 + .../erp/datasource/entities/AssetExample.java | 1363 ++ .../erp/datasource/entities/AssetName.java | 195 + .../datasource/entities/AssetNameExample.java | 612 + .../jsh/erp/datasource/entities/Depot.java | 259 + .../erp/datasource/entities/DepotExample.java | 822 + .../erp/datasource/entities/DepotHead.java | 901 ++ .../datasource/entities/DepotHeadExample.java | 2103 +++ .../erp/datasource/entities/DepotItem.java | 739 + .../datasource/entities/DepotItemExample.java | 1772 +++ .../DepotItemVo4DetailByTypeAndMId.java | 46 + .../entities/DepotItemVo4HeaderId.java | 15 + .../entities/DepotItemVo4Material.java | 256 + .../entities/DepotItemVo4WithInfoEx.java | 364 + .../erp/datasource/entities/Functions.java | 323 + .../datasource/entities/FunctionsExample.java | 972 ++ .../erp/datasource/entities/InOutItem.java | 131 + .../datasource/entities/InOutItemExample.java | 572 + .../com/jsh/erp/datasource/entities/Log.java | 261 + .../erp/datasource/entities/LogExample.java | 823 + .../jsh/erp/datasource/entities/Material.java | 739 + .../datasource/entities/MaterialCategory.java | 131 + .../entities/MaterialCategoryExample.java | 552 + .../datasource/entities/MaterialExample.java | 1812 +++ .../datasource/entities/MaterialProperty.java | 163 + .../entities/MaterialPropertyExample.java | 632 + .../datasource/entities/MaterialVo4Unit.java | 244 + .../jsh/erp/datasource/entities/Person.java | 99 + .../datasource/entities/PersonExample.java | 502 + .../com/jsh/erp/datasource/entities/Role.java | 163 + .../erp/datasource/entities/RoleExample.java | 642 + .../jsh/erp/datasource/entities/Supplier.java | 675 + .../datasource/entities/SupplierExample.java | 1682 +++ .../erp/datasource/entities/SystemConfig.java | 163 + .../entities/SystemConfigExample.java | 642 + .../com/jsh/erp/datasource/entities/Unit.java | 67 + .../erp/datasource/entities/UnitExample.java | 432 + .../com/jsh/erp/datasource/entities/User.java | 419 + .../erp/datasource/entities/UserBusiness.java | 163 + .../entities/UserBusinessExample.java | 642 + .../erp/datasource/entities/UserExample.java | 1172 ++ .../datasource/mappers/AccountHeadMapper.java | 123 + .../datasource/mappers/AccountItemMapper.java | 114 + .../erp/datasource/mappers/AccountMapper.java | 119 + .../jsh/erp/datasource/mappers/AppMapper.java | 106 + .../mappers/AssetCategoryMapper.java | 96 + .../erp/datasource/mappers/AssetMapper.java | 120 + .../datasource/mappers/AssetNameMapper.java | 120 + .../datasource/mappers/DepotHeadMapper.java | 185 + .../datasource/mappers/DepotItemMapper.java | 217 + .../erp/datasource/mappers/DepotMapper.java | 108 + .../datasource/mappers/FunctionsMapper.java | 106 + .../datasource/mappers/InOutItemMapper.java | 108 + .../jsh/erp/datasource/mappers/LogMapper.java | 116 + .../mappers/MaterialCategoryMapper.java | 106 + .../datasource/mappers/MaterialMapper.java | 115 + .../mappers/MaterialPropertyMapper.java | 103 + .../erp/datasource/mappers/PersonMapper.java | 106 + .../erp/datasource/mappers/RoleMapper.java | 104 + .../datasource/mappers/SupplierMapper.java | 112 + .../mappers/SystemConfigMapper.java | 102 + .../erp/datasource/mappers/UnitMapper.java | 104 + .../mappers/UserBusinessMapper.java | 96 + .../erp/datasource/mappers/UserMapper.java | 106 + .../erp/datasource/vo/AccountItemVo4List.java | 84 + .../datasource/vo/AccountVo4InOutList.java | 84 + .../jsh/erp/datasource/vo/AccountVo4List.java | 84 + .../datasource/vo/DepotHeadVo4InDetail.java | 107 + .../vo/DepotHeadVo4InOutMCount.java | 65 + .../erp/datasource/vo/DepotHeadVo4List.java | 346 + .../vo/DepotHeadVo4StatementAccount.java | 75 + .../jsh/erp/service/CommonQueryManager.java | 127 + .../com/jsh/erp/service/ICommonQuery.java | 78 + .../jsh/erp/service/InterfaceContainer.java | 59 + .../com/jsh/erp/service/ResourceInfo.java | 35 + .../erp/service/account/AccountComponent.java | 76 + .../erp/service/account/AccountResource.java | 15 + .../erp/service/account/AccountService.java | 295 + .../accountHead/AccountHeadComponent.java | 76 + .../accountHead/AccountHeadResource.java | 15 + .../accountHead/AccountHeadService.java | 116 + .../accountItem/AccountItemComponent.java | 74 + .../accountItem/AccountItemResource.java | 15 + .../accountItem/AccountItemService.java | 81 + .../com/jsh/erp/service/app/AppComponent.java | 72 + .../com/jsh/erp/service/app/AppResource.java | 15 + .../com/jsh/erp/service/app/AppService.java | 85 + .../jsh/erp/service/depot/DepotComponent.java | 75 + .../jsh/erp/service/depot/DepotResource.java | 15 + .../jsh/erp/service/depot/DepotService.java | 91 + .../service/depotHead/DepotHeadComponent.java | 80 + .../service/depotHead/DepotHeadResource.java | 15 + .../service/depotHead/DepotHeadService.java | 242 + .../service/depotItem/DepotItemComponent.java | 74 + .../service/depotItem/DepotItemResource.java | 15 + .../service/depotItem/DepotItemService.java | 194 + .../service/functions/FunctionsComponent.java | 74 + .../service/functions/FunctionsResource.java | 15 + .../service/functions/FunctionsService.java | 84 + .../service/inOutItem/InOutItemComponent.java | 74 + .../service/inOutItem/InOutItemResource.java | 15 + .../service/inOutItem/InOutItemService.java | 79 + .../com/jsh/erp/service/log/LogComponent.java | 83 + .../com/jsh/erp/service/log/LogResource.java | 15 + .../com/jsh/erp/service/log/LogService.java | 68 + .../service/material/MaterialComponent.java | 74 + .../service/material/MaterialResource.java | 15 + .../erp/service/material/MaterialService.java | 117 + .../MaterialCategoryComponent.java | 74 + .../MaterialCategoryResource.java | 15 + .../MaterialCategoryService.java | 78 + .../MaterialPropertyComponent.java | 70 + .../MaterialPropertyResource.java | 15 + .../MaterialPropertyService.java | 64 + .../erp/service/person/PersonComponent.java | 74 + .../erp/service/person/PersonResource.java | 15 + .../jsh/erp/service/person/PersonService.java | 93 + .../jsh/erp/service/role/RoleComponent.java | 71 + .../jsh/erp/service/role/RoleResource.java | 15 + .../com/jsh/erp/service/role/RoleService.java | 71 + .../service/supplier/SupplierComponent.java | 80 + .../service/supplier/SupplierResource.java | 15 + .../erp/service/supplier/SupplierService.java | 102 + .../systemConfig/SystemConfigComponent.java | 68 + .../systemConfig/SystemConfigResource.java | 15 + .../systemConfig/SystemConfigService.java | 67 + .../jsh/erp/service/unit/UnitComponent.java | 71 + .../jsh/erp/service/unit/UnitResource.java | 15 + .../com/jsh/erp/service/unit/UnitService.java | 68 + .../jsh/erp/service/user/UserComponent.java | 72 + .../jsh/erp/service/user/UserResource.java | 15 + .../com/jsh/erp/service/user/UserService.java | 133 + .../userBusiness/UserBusinessComponent.java | 67 + .../userBusiness/UserBusinessResource.java | 15 + .../userBusiness/UserBusinessService.java | 92 + .../com/jsh/erp/utils/AnnotationUtils.java | 28 + .../com/jsh/erp/utils/BaseResponseInfo.java | 11 + .../com/jsh/erp/utils/ColumnPropertyUtil.java | 65 + .../java/com/jsh/erp/utils/Constants.java | 33 + src/main/java/com/jsh/erp/utils/ErpInfo.java | 36 + .../utils}/ExceptionCodeConstants.java | 2 +- .../java/com/jsh/erp/utils/ExtJsonUtils.java | 195 + .../jsh/{util => erp/utils}/JshException.java | 2 +- .../java/com/jsh/erp/utils/JsonUtils.java | 21 + .../java/com/jsh/erp/utils/OrderUtils.java | 69 + .../java/com/jsh/erp/utils/PageQueryInfo.java | 30 + .../java/com/jsh/erp/utils/ParamUtils.java | 40 + .../java/com/jsh/erp/utils/QueryUtils.java | 142 + .../java/com/jsh/erp/utils/RegExpTools.java | 154 + .../java/com/jsh/erp/utils/ResponseCode.java | 24 + .../com/jsh/erp/utils/ResponseJsonUtil.java | 83 + .../java/com/jsh/erp/utils/StringUtil.java | 196 + .../com/jsh/{util => erp/utils}/Tools.java | 7 +- src/main/java/com/jsh/model/po/Account.java | 85 - .../java/com/jsh/model/po/AccountHead.java | 121 - .../java/com/jsh/model/po/AccountItem.java | 78 - src/main/java/com/jsh/model/po/App.java | 170 - src/main/java/com/jsh/model/po/Asset.java | 320 - src/main/java/com/jsh/model/po/Assetname.java | 77 - src/main/java/com/jsh/model/po/Basicuser.java | 147 - src/main/java/com/jsh/model/po/Category.java | 55 - src/main/java/com/jsh/model/po/Depot.java | 96 - src/main/java/com/jsh/model/po/DepotHead.java | 300 - src/main/java/com/jsh/model/po/DepotItem.java | 240 - src/main/java/com/jsh/model/po/Functions.java | 99 - src/main/java/com/jsh/model/po/InOutItem.java | 55 - .../java/com/jsh/model/po/Logdetails.java | 101 - src/main/java/com/jsh/model/po/Material.java | 289 - .../com/jsh/model/po/MaterialCategory.java | 58 - .../com/jsh/model/po/MaterialProperty.java | 65 - src/main/java/com/jsh/model/po/Person.java | 46 - src/main/java/com/jsh/model/po/Role.java | 29 - src/main/java/com/jsh/model/po/Supplier.java | 309 - .../java/com/jsh/model/po/SystemConfig.java | 50 - src/main/java/com/jsh/model/po/Unit.java | 36 - .../java/com/jsh/model/po/UserBusiness.java | 54 - .../com/jsh/model/vo/asset/AssetModel.java | 372 - .../jsh/model/vo/asset/AssetShowModel.java | 38 - .../com/jsh/model/vo/asset/ReportModel.java | 278 - .../jsh/model/vo/asset/ReportShowModel.java | 29 - .../com/jsh/model/vo/basic/AccountModel.java | 160 - .../jsh/model/vo/basic/AccountShowModel.java | 40 - .../java/com/jsh/model/vo/basic/AppModel.java | 311 - .../com/jsh/model/vo/basic/AppShowModel.java | 19 - .../jsh/model/vo/basic/AssetNameModel.java | 133 - .../model/vo/basic/AssetNameShowModel.java | 19 - .../com/jsh/model/vo/basic/CategoryModel.java | 108 - .../jsh/model/vo/basic/CategoryShowModel.java | 19 - .../com/jsh/model/vo/basic/DepotModel.java | 190 - .../jsh/model/vo/basic/DepotShowModel.java | 40 - .../jsh/model/vo/basic/FunctionsModel.java | 228 - .../model/vo/basic/FunctionsShowModel.java | 19 - .../jsh/model/vo/basic/InOutItemModel.java | 121 - .../model/vo/basic/InOutItemShowModel.java | 40 - .../java/com/jsh/model/vo/basic/LogModel.java | 176 - .../com/jsh/model/vo/basic/LogShowModel.java | 38 - .../com/jsh/model/vo/basic/RoleModel.java | 122 - .../com/jsh/model/vo/basic/RoleShowModel.java | 19 - .../com/jsh/model/vo/basic/SupplierModel.java | 364 - .../jsh/model/vo/basic/SupplierShowModel.java | 39 - .../jsh/model/vo/basic/SystemConfigModel.java | 78 - .../model/vo/basic/SystemConfigShowModel.java | 19 - .../com/jsh/model/vo/basic/UnitModel.java | 97 - .../com/jsh/model/vo/basic/UnitShowModel.java | 40 - .../jsh/model/vo/basic/UserBusinessModel.java | 131 - .../model/vo/basic/UserBusinessShowModel.java | 40 - .../com/jsh/model/vo/basic/UserModel.java | 220 - .../com/jsh/model/vo/basic/UserShowModel.java | 19 - .../model/vo/materials/AccountHeadModel.java | 212 - .../vo/materials/AccountHeadShowModel.java | 39 - .../model/vo/materials/AccountItemModel.java | 221 - .../vo/materials/AccountItemShowModel.java | 19 - .../model/vo/materials/DepotHeadModel.java | 404 - .../vo/materials/DepotHeadShowModel.java | 39 - .../model/vo/materials/DepotItemModel.java | 385 - .../vo/materials/DepotItemShowModel.java | 19 - .../vo/materials/MaterialCategoryModel.java | 122 - .../materials/MaterialCategoryShowModel.java | 40 - .../jsh/model/vo/materials/MaterialModel.java | 397 - .../vo/materials/MaterialPropertyModel.java | 121 - .../materials/MaterialPropertyShowModel.java | 40 - .../model/vo/materials/MaterialShowModel.java | 40 - .../jsh/model/vo/materials/PersonModel.java | 108 - .../model/vo/materials/PersonShowModel.java | 39 - .../com/jsh/service/asset/AssetIService.java | 30 - .../com/jsh/service/asset/AssetService.java | 629 - .../com/jsh/service/asset/ReportIService.java | 15 - .../com/jsh/service/asset/ReportService.java | 20 - .../jsh/service/basic/AccountIService.java | 10 - .../com/jsh/service/basic/AccountService.java | 26 - .../com/jsh/service/basic/AppIService.java | 8 - .../com/jsh/service/basic/AppService.java | 28 - .../jsh/service/basic/AssetNameIService.java | 8 - .../jsh/service/basic/AssetNameService.java | 19 - .../jsh/service/basic/CategoryIService.java | 8 - .../jsh/service/basic/CategoryService.java | 20 - .../com/jsh/service/basic/DepotIService.java | 8 - .../com/jsh/service/basic/DepotService.java | 29 - .../jsh/service/basic/FunctionsIService.java | 8 - .../jsh/service/basic/FunctionsService.java | 28 - .../jsh/service/basic/InOutItemIService.java | 8 - .../jsh/service/basic/InOutItemService.java | 20 - .../com/jsh/service/basic/LogIService.java | 16 - .../com/jsh/service/basic/LogService.java | 29 - .../com/jsh/service/basic/RoleIService.java | 8 - .../com/jsh/service/basic/RoleService.java | 27 - .../jsh/service/basic/SupplierIService.java | 17 - .../jsh/service/basic/SupplierService.java | 437 - .../service/basic/SystemConfigIService.java | 8 - .../service/basic/SystemConfigService.java | 20 - .../com/jsh/service/basic/UnitIService.java | 8 - .../com/jsh/service/basic/UnitService.java | 21 - .../service/basic/UserBusinessIService.java | 14 - .../service/basic/UserBusinessService.java | 28 - .../com/jsh/service/basic/UserIService.java | 35 - .../com/jsh/service/basic/UserService.java | 98 - .../materials/AccountHeadIService.java | 15 - .../service/materials/AccountHeadService.java | 31 - .../materials/AccountItemIService.java | 8 - .../service/materials/AccountItemService.java | 23 - .../service/materials/DepotHeadIService.java | 27 - .../service/materials/DepotHeadService.java | 63 - .../service/materials/DepotItemIService.java | 30 - .../service/materials/DepotItemService.java | 124 - .../materials/MaterialCategoryIService.java | 8 - .../materials/MaterialCategoryService.java | 22 - .../service/materials/MaterialIService.java | 19 - .../materials/MaterialPropertyIService.java | 8 - .../materials/MaterialPropertyService.java | 22 - .../service/materials/MaterialService.java | 304 - .../jsh/service/materials/PersonIService.java | 8 - .../jsh/service/materials/PersonService.java | 22 - .../java/com/jsh/util/AssetConstants.java | 121 - .../java/com/jsh/util/BeanFactoryUtil.java | 117 - src/main/java/com/jsh/util/JshConstants.java | 35 - .../java/com/jsh/util/MaterialConstants.java | 84 - .../util/OpenSessionInViewFilterExtend.java | 22 - src/main/java/com/jsh/util/PageUtil.java | 190 - src/main/java/com/jsh/util/PathTool.java | 76 - .../com/jsh/util/SearchConditionUtil.java | 123 - src/main/java/com/jsh/util/SessionFilter.java | 64 - .../java/com/jsh/util/SupplierConstants.java | 115 - src/main/resources/application.yml | 13 + src/main/resources/common/email.properties | 3 - src/main/resources/common/jdbc.properties | 4 - .../common/limitbasicdata.properties | 5 - src/main/resources/hibernate/Account.hbm.xml | 41 - .../resources/hibernate/AccountHead.hbm.xml | 56 - .../resources/hibernate/AccountItem.hbm.xml | 36 - src/main/resources/hibernate/App.hbm.xml | 81 - src/main/resources/hibernate/Asset.hbm.xml | 96 - .../resources/hibernate/Assetname.hbm.xml | 34 - .../resources/hibernate/Basicuser.hbm.xml | 69 - src/main/resources/hibernate/Category.hbm.xml | 26 - src/main/resources/hibernate/Depot.hbm.xml | 46 - .../resources/hibernate/DepotHead.hbm.xml | 146 - .../resources/hibernate/DepotItem.hbm.xml | 111 - .../resources/hibernate/Functions.hbm.xml | 59 - .../resources/hibernate/InOutItem.hbm.xml | 26 - .../resources/hibernate/Logdetails.hbm.xml | 44 - src/main/resources/hibernate/Material.hbm.xml | 119 - .../hibernate/MaterialCategory.hbm.xml | 24 - .../hibernate/MaterialProperty.hbm.xml | 31 - src/main/resources/hibernate/Person.hbm.xml | 21 - src/main/resources/hibernate/Role.hbm.xml | 16 - src/main/resources/hibernate/Supplier.hbm.xml | 111 - .../resources/hibernate/SystemConfig.hbm.xml | 31 - src/main/resources/hibernate/Unit.hbm.xml | 16 - .../resources/hibernate/UserBusiness.hbm.xml | 31 - .../resources/hibernate/hibernate.cfg.xml | 49 - .../resources/i18n/messages_en_US.properties | 7 - .../resources/i18n/messages_zh_CN.properties | 7 - src/main/resources/log4j/log4j.properties | 67 - .../mapper_xml/AccountHeadMapper.xml | 351 + .../mapper_xml/AccountHeadMapperEx.xml | 76 + .../mapper_xml/AccountItemMapper.xml | 288 + .../mapper_xml/AccountItemMapperEx.xml | 50 + .../resources/mapper_xml/AccountMapper.xml | 303 + .../resources/mapper_xml/AccountMapperEx.xml | 172 + src/main/resources/mapper_xml/AppMapper.xml | 428 + src/main/resources/mapper_xml/AppMapperEx.xml | 30 + .../mapper_xml/AssetCategoryMapper.xml | 256 + src/main/resources/mapper_xml/AssetMapper.xml | 578 + .../resources/mapper_xml/AssetNameMapper.xml | 350 + .../resources/mapper_xml/DepotHeadMapper.xml | 635 + .../mapper_xml/DepotHeadMapperEx.xml | 284 + .../resources/mapper_xml/DepotItemMapper.xml | 555 + .../mapper_xml/DepotItemMapperEx.xml | 268 + src/main/resources/mapper_xml/DepotMapper.xml | 318 + .../resources/mapper_xml/DepotMapperEx.xml | 36 + .../resources/mapper_xml/FunctionsMapper.xml | 348 + .../mapper_xml/FunctionsMapperEx.xml | 30 + .../resources/mapper_xml/InOutItemMapper.xml | 256 + .../mapper_xml/InOutItemMapperEx.xml | 36 + src/main/resources/mapper_xml/LogMapper.xml | 318 + src/main/resources/mapper_xml/LogMapperEx.xml | 61 + .../mapper_xml/MaterialCategoryMapper.xml | 256 + .../mapper_xml/MaterialCategoryMapperEx.xml | 30 + .../resources/mapper_xml/MaterialMapper.xml | 555 + .../resources/mapper_xml/MaterialMapperEx.xml | 47 + .../mapper_xml/MaterialPropertyMapper.xml | 271 + .../mapper_xml/MaterialPropertyMapperEx.xml | 24 + .../resources/mapper_xml/PersonMapper.xml | 241 + .../resources/mapper_xml/PersonMapperEx.xml | 30 + src/main/resources/mapper_xml/RoleMapper.xml | 271 + .../resources/mapper_xml/RoleMapperEx.xml | 24 + .../resources/mapper_xml/SupplierMapper.xml | 525 + .../resources/mapper_xml/SupplierMapperEx.xml | 48 + .../mapper_xml/SystemConfigMapper.xml | 271 + .../mapper_xml/SystemConfigMapperEx.xml | 18 + src/main/resources/mapper_xml/UnitMapper.xml | 224 + .../resources/mapper_xml/UnitMapperEx.xml | 24 + .../mapper_xml/UserBusinessMapper.xml | 271 + src/main/resources/mapper_xml/UserMapper.xml | 398 + .../resources/mapper_xml/UserMapperEx.xml | 30 + .../spring/basic-applicationContext.xml | 387 - .../spring/dao-applicationContext.xml | 61 - .../spring/quartz-applicationContext.xml.xml | 36 - src/main/resources/struts2/account-struts.xml | 11 - .../resources/struts2/accountHead-struts.xml | 11 - .../resources/struts2/accountItem-struts.xml | 11 - src/main/resources/struts2/app-struts.xml | 11 - src/main/resources/struts2/asset-struts.xml | 32 - .../resources/struts2/assetname-struts.xml | 11 - .../resources/struts2/category-struts.xml | 11 - src/main/resources/struts2/channel-struts.xml | 13 - src/main/resources/struts2/depot-struts.xml | 11 - .../resources/struts2/depotHead-struts.xml | 11 - .../resources/struts2/depotItem-struts.xml | 21 - .../resources/struts2/functions-struts.xml | 11 - .../resources/struts2/inOutItem-struts.xml | 11 - src/main/resources/struts2/log-struts.xml | 11 - .../resources/struts2/material-struts.xml | 30 - .../struts2/materialCategory-struts.xml | 11 - .../struts2/materialProperty-struts.xml | 11 - src/main/resources/struts2/person-struts.xml | 11 - src/main/resources/struts2/report-struts.xml | 11 - src/main/resources/struts2/role-struts.xml | 11 - src/main/resources/struts2/struts.properties | 2 - src/main/resources/struts2/struts.xml | 46 - .../resources/struts2/supplier-struts.xml | 52 - .../resources/struts2/systemConfig-struts.xml | 11 - src/main/resources/struts2/unit-struts.xml | 11 - src/main/resources/struts2/user-struts.xml | 23 - .../resources/struts2/userBusiness-struts.xml | 11 - src/main/webapp/META-INF/MANIFEST.MF | 3 - .../webapp/WEB-INF/lib/hibernate3-1.0.0.jar | Bin 4089101 -> 0 bytes src/main/webapp/WEB-INF/lib/javaee-1.0.0.jar | Bin 1062435 -> 0 bytes src/main/webapp/WEB-INF/lib/jta-1.1.jar | Bin 10899 -> 0 bytes src/main/webapp/WEB-INF/web.xml | 81 - src/main/webapp/css/bill_detail.css | 54 - src/main/webapp/css/common.css | 52 - src/main/webapp/css/css.css | 762 - src/main/webapp/css/in_out.css | 107 - src/main/webapp/css/material.css | 11 - src/main/webapp/css/retail_list.css | 49 - src/main/webapp/images/004.jpg | Bin 51797 -> 0 bytes src/main/webapp/images/007.png | Bin 617 -> 0 bytes src/main/webapp/images/020.png | Bin 510 -> 0 bytes src/main/webapp/images/657.png | Bin 794 -> 0 bytes src/main/webapp/images/680.png | Bin 691 -> 0 bytes src/main/webapp/images/894.png | Bin 1232 -> 0 bytes src/main/webapp/images/a1.gif | Bin 100 -> 0 bytes src/main/webapp/images/admin.png | Bin 60866 -> 0 bytes src/main/webapp/images/bg_actlist.jpg | Bin 1026 -> 0 bytes src/main/webapp/images/bg_actlistcon.gif | Bin 83 -> 0 bytes src/main/webapp/images/bg_actliston.jpg | Bin 819 -> 0 bytes src/main/webapp/images/bg_btn.gif | Bin 735 -> 0 bytes src/main/webapp/images/bg_btnl.gif | Bin 774 -> 0 bytes src/main/webapp/images/bg_btnlon.gif | Bin 775 -> 0 bytes src/main/webapp/images/bg_btnon.gif | Bin 735 -> 0 bytes src/main/webapp/images/bg_btnr.gif | Bin 1012 -> 0 bytes src/main/webapp/images/bg_btnron.gif | Bin 1017 -> 0 bytes src/main/webapp/images/bg_cntnav.jpg | Bin 342 -> 0 bytes src/main/webapp/images/bg_datath.jpg | Bin 386 -> 0 bytes src/main/webapp/images/bg_foot.jpg | Bin 754 -> 0 bytes src/main/webapp/images/bg_head.jpg | Bin 413 -> 0 bytes src/main/webapp/images/bg_keycode.jpg | Bin 678 -> 0 bytes src/main/webapp/images/bg_login.jpg | Bin 28695 -> 0 bytes src/main/webapp/images/bg_logininout.jpg | Bin 822 -> 0 bytes src/main/webapp/images/bg_loginmain.jpg | Bin 17600 -> 0 bytes src/main/webapp/images/bg_menulist.jpg | Bin 3357 -> 0 bytes src/main/webapp/images/bg_menuliston.jpg | Bin 20659 -> 0 bytes src/main/webapp/images/bg_menutop.jpg | Bin 1380 -> 0 bytes src/main/webapp/images/bg_notebook.gif | Bin 1049 -> 0 bytes src/main/webapp/images/bg_positionl.gif | Bin 540 -> 0 bytes src/main/webapp/images/bg_positionm.jpg | Bin 398 -> 0 bytes src/main/webapp/images/bg_positionr.jpg | Bin 8310 -> 0 bytes src/main/webapp/images/bg_positionrbak.jpg | Bin 18506 -> 0 bytes src/main/webapp/images/bg_positionrpos.jpg | Bin 3900 -> 0 bytes src/main/webapp/images/bg_psplit.jpg | Bin 382 -> 0 bytes src/main/webapp/images/bg_tipfailth.png | Bin 579 -> 0 bytes src/main/webapp/images/bg_tipsuccess.png | Bin 578 -> 0 bytes src/main/webapp/images/blogging.png | Bin 61314 -> 0 bytes src/main/webapp/images/btn_check.gif | Bin 637 -> 0 bytes src/main/webapp/images/btn_checkon.gif | Bin 885 -> 0 bytes src/main/webapp/images/btn_close.gif | Bin 592 -> 0 bytes src/main/webapp/images/btn_close.png | Bin 465 -> 0 bytes src/main/webapp/images/btn_display.gif | Bin 990 -> 0 bytes src/main/webapp/images/btn_goto.gif | Bin 474 -> 0 bytes src/main/webapp/images/btn_gotoon.gif | Bin 322 -> 0 bytes src/main/webapp/images/btn_login.jpg | Bin 1152 -> 0 bytes src/main/webapp/images/btn_loginon.jpg | Bin 2357 -> 0 bytes src/main/webapp/images/btn_minus.gif | Bin 499 -> 0 bytes src/main/webapp/images/btn_openm.gif | Bin 990 -> 0 bytes src/main/webapp/images/btn_plus.gif | Bin 501 -> 0 bytes src/main/webapp/images/btn_scolse.gif | Bin 13243 -> 0 bytes src/main/webapp/images/btn_sopen.gif | Bin 13243 -> 0 bytes src/main/webapp/images/butterfly.jpg | Bin 36710 -> 0 bytes src/main/webapp/images/categories.png | Bin 822 -> 0 bytes src/main/webapp/images/chart_bar.png | Bin 441 -> 0 bytes src/main/webapp/images/clock.png | Bin 882 -> 0 bytes src/main/webapp/images/comment.png | Bin 612 -> 0 bytes src/main/webapp/images/computer.png | Bin 405 -> 0 bytes src/main/webapp/images/contacts.png | Bin 627 -> 0 bytes src/main/webapp/images/date_packer.gif | Bin 165 -> 0 bytes src/main/webapp/images/draw1.jpg | Bin 39062 -> 0 bytes src/main/webapp/images/draw2.jpg | Bin 40354 -> 0 bytes src/main/webapp/images/draw3.jpg | Bin 40685 -> 0 bytes src/main/webapp/images/draw4.jpg | Bin 42828 -> 0 bytes src/main/webapp/images/edit_kiii.png | Bin 875 -> 0 bytes src/main/webapp/images/edit_lock.png | Bin 637 -> 0 bytes src/main/webapp/images/edit_lockon.png | Bin 639 -> 0 bytes src/main/webapp/images/edit_monitor.png | Bin 539 -> 0 bytes src/main/webapp/images/edit_notebook.png | Bin 708 -> 0 bytes src/main/webapp/images/edit_pencil.png | Bin 497 -> 0 bytes src/main/webapp/images/edit_set.png | Bin 778 -> 0 bytes src/main/webapp/images/edit_time.gif | Bin 97 -> 0 bytes src/main/webapp/images/evernote-alt.png | Bin 792 -> 0 bytes src/main/webapp/images/favicon.ico | Bin 51262 -> 0 bytes src/main/webapp/images/favicon.ico.bak | Bin 1150 -> 0 bytes src/main/webapp/images/house.png | Bin 738 -> 0 bytes src/main/webapp/images/imac.png | Bin 17035 -> 0 bytes src/main/webapp/images/loading1.gif | Bin 21828 -> 0 bytes src/main/webapp/images/lock_unlock.png | Bin 548 -> 0 bytes src/main/webapp/images/login_tip.jpg | Bin 1680 -> 0 bytes src/main/webapp/images/logo.jpg | Bin 8392 -> 0 bytes src/main/webapp/images/logo.png | Bin 1005 -> 0 bytes src/main/webapp/images/man.png | Bin 3517 -> 0 bytes src/main/webapp/images/navtop_home.gif | Bin 609 -> 0 bytes src/main/webapp/images/navtop_logout.gif | Bin 541 -> 0 bytes src/main/webapp/images/preferences1.png | Bin 330131 -> 0 bytes src/main/webapp/images/receipt-excel.png | Bin 574 -> 0 bytes src/main/webapp/images/suma_logo.png | Bin 5189 -> 0 bytes src/main/webapp/images/sysetem_name.jpg | Bin 6619 -> 0 bytes src/main/webapp/images/sysetem_name3.jpg | Bin 9329 -> 0 bytes src/main/webapp/images/time.png | Bin 453 -> 0 bytes src/main/webapp/images/user-red.png | Bin 666 -> 0 bytes src/main/webapp/images/user.png | Bin 705 -> 0 bytes src/main/webapp/images/user_business_boss.png | Bin 742 -> 0 bytes src/main/webapp/images/user_suit.png | Bin 1675 -> 0 bytes src/main/webapp/images/valid_code.jpg | Bin 20279 -> 0 bytes src/main/webapp/images/vavtop_help.gif | Bin 991 -> 0 bytes src/main/webapp/images/windvane.png | Bin 6710 -> 0 bytes src/main/webapp/js/HoorayOS_mini/favicon.ico | Bin 9662 -> 0 bytes src/main/webapp/js/HoorayOS_mini/img/box.psd | Bin 24535 -> 0 bytes src/main/webapp/js/HoorayOS_mini/img/exit.png | Bin 42960 -> 0 bytes .../webapp/js/HoorayOS_mini/img/ui/18-6.png | Bin 184693 -> 0 bytes .../webapp/js/HoorayOS_mini/img/ui/6-18.png | Bin 173652 -> 0 bytes .../webapp/js/HoorayOS_mini/img/ui/amg_1.png | Bin 249 -> 0 bytes .../webapp/js/HoorayOS_mini/img/ui/amg_2.png | Bin 452 -> 0 bytes .../webapp/js/HoorayOS_mini/img/ui/amg_3.png | Bin 647 -> 0 bytes .../webapp/js/HoorayOS_mini/img/ui/amg_4.png | Bin 408 -> 0 bytes .../webapp/js/HoorayOS_mini/img/ui/amg_5.png | Bin 578 -> 0 bytes .../js/HoorayOS_mini/img/ui/amg_body.png | Bin 80 -> 0 bytes .../js/HoorayOS_mini/img/ui/amg_line_y.png | Bin 73 -> 0 bytes .../img/ui/amg_shortcut_hover.png | Bin 128 -> 0 bytes .../js/HoorayOS_mini/img/ui/amg_top.png | Bin 174 -> 0 bytes .../js/HoorayOS_mini/img/ui/app_list.png | Bin 192 -> 0 bytes .../js/HoorayOS_mini/img/ui/app_spr_img.png | Bin 14367 -> 0 bytes .../js/HoorayOS_mini/img/ui/app_spr_x.png | Bin 232 -> 0 bytes .../js/HoorayOS_mini/img/ui/avatar_120.jpg | Bin 4426 -> 0 bytes .../js/HoorayOS_mini/img/ui/avatar_24.jpg | Bin 1187 -> 0 bytes .../js/HoorayOS_mini/img/ui/avatar_48.jpg | Bin 1963 -> 0 bytes .../js/HoorayOS_mini/img/ui/bought-table.png | Bin 1909 -> 0 bytes .../js/HoorayOS_mini/img/ui/browser.png | Bin 126343 -> 0 bytes .../HoorayOS_mini/img/ui/browser_backup.png | Bin 95612 -> 0 bytes .../js/HoorayOS_mini/img/ui/commend_day.gif | Bin 8087 -> 0 bytes .../js/HoorayOS_mini/img/ui/default_icon.png | Bin 2329 -> 0 bytes .../js/HoorayOS_mini/img/ui/desk_sprite.png | Bin 47950 -> 0 bytes .../js/HoorayOS_mini/img/ui/dock-tools.png | Bin 1597 -> 0 bytes .../js/HoorayOS_mini/img/ui/dock_setting.jpg | Bin 164396 -> 0 bytes .../js/HoorayOS_mini/img/ui/file_default.png | Bin 2161 -> 0 bytes .../js/HoorayOS_mini/img/ui/file_excel.png | Bin 2522 -> 0 bytes .../js/HoorayOS_mini/img/ui/file_image.png | Bin 2630 -> 0 bytes .../js/HoorayOS_mini/img/ui/file_music.png | Bin 1639 -> 0 bytes .../js/HoorayOS_mini/img/ui/file_pdf.png | Bin 1602 -> 0 bytes .../js/HoorayOS_mini/img/ui/file_ppt.png | Bin 2436 -> 0 bytes .../js/HoorayOS_mini/img/ui/file_rar.png | Bin 1088 -> 0 bytes .../js/HoorayOS_mini/img/ui/file_txt.png | Bin 1606 -> 0 bytes .../js/HoorayOS_mini/img/ui/file_video.png | Bin 1156 -> 0 bytes .../js/HoorayOS_mini/img/ui/file_word.png | Bin 2496 -> 0 bytes .../HoorayOS_mini/img/ui/folder_default.png | Bin 2335 -> 0 bytes .../js/HoorayOS_mini/img/ui/folder_doc.png | Bin 2308 -> 0 bytes .../js/HoorayOS_mini/img/ui/folder_game.png | Bin 2755 -> 0 bytes .../js/HoorayOS_mini/img/ui/folder_life.png | Bin 2875 -> 0 bytes .../js/HoorayOS_mini/img/ui/folder_music.png | Bin 2717 -> 0 bytes .../js/HoorayOS_mini/img/ui/folder_tool.png | Bin 2691 -> 0 bytes .../js/HoorayOS_mini/img/ui/folder_video.png | Bin 2333 -> 0 bytes .../HoorayOS_mini/img/ui/forder_selector.png | Bin 1919 -> 0 bytes .../webapp/js/HoorayOS_mini/img/ui/globle.css | 8 - .../HoorayOS_mini/img/ui/google_ui_sprite.png | Bin 59555 -> 0 bytes .../js/HoorayOS_mini/img/ui/icon_main.png | Bin 5385 -> 0 bytes .../webapp/js/HoorayOS_mini/img/ui/index.css | 209 - .../js/HoorayOS_mini/img/ui/input-label.png | Bin 1125 -> 0 bytes .../js/HoorayOS_mini/img/ui/loading_16.gif | Bin 1849 -> 0 bytes .../js/HoorayOS_mini/img/ui/loading_24.gif | Bin 4777 -> 0 bytes .../js/HoorayOS_mini/img/ui/loading_48.gif | Bin 7050 -> 0 bytes .../js/HoorayOS_mini/img/ui/login_icon.png | Bin 10706 -> 0 bytes .../js/HoorayOS_mini/img/ui/loginbg.png | Bin 3160 -> 0 bytes .../js/HoorayOS_mini/img/ui/loginsubmit.png | Bin 455 -> 0 bytes .../js/HoorayOS_mini/img/ui/nav_bar.png | Bin 16083 -> 0 bytes .../webapp/js/HoorayOS_mini/img/ui/open.png | Bin 1151 -> 0 bytes .../webapp/js/HoorayOS_mini/img/ui/papp.png | Bin 13841 -> 0 bytes .../js/HoorayOS_mini/img/ui/popup_menu.gif | Bin 55 -> 0 bytes .../js/HoorayOS_mini/img/ui/quick_view.png | Bin 1995 -> 0 bytes .../js/HoorayOS_mini/img/ui/scrollbar_bg.png | Bin 214 -> 0 bytes .../js/HoorayOS_mini/img/ui/scrollbar_bgy.png | Bin 332 -> 0 bytes .../js/HoorayOS_mini/img/ui/selected.gif | Bin 334 -> 0 bytes .../js/HoorayOS_mini/img/ui/selected.png | Bin 2182 -> 0 bytes .../js/HoorayOS_mini/img/ui/share_icon.png | Bin 5222 -> 0 bytes .../js/HoorayOS_mini/img/ui/shortcut_text.png | Bin 294 -> 0 bytes .../webapp/js/HoorayOS_mini/img/ui/spr_x.png | Bin 1521 -> 0 bytes .../HoorayOS_mini/img/ui/suggess_list_bg.png | Bin 90 -> 0 bytes .../webapp/js/HoorayOS_mini/img/ui/sys.css | 246 - .../HoorayOS_mini/img/ui/system-chart-bar.png | Bin 1143 -> 0 bytes .../img/ui/system-document-edit.png | Bin 1358 -> 0 bytes .../HoorayOS_mini/img/ui/system-documents.png | Bin 1238 -> 0 bytes .../js/HoorayOS_mini/img/ui/system-gear.png | Bin 1481 -> 0 bytes .../js/HoorayOS_mini/img/ui/system-mail.png | Bin 1637 -> 0 bytes .../js/HoorayOS_mini/img/ui/system-puzzle.png | Bin 1447 -> 0 bytes .../js/HoorayOS_mini/img/ui/system-shapes.png | Bin 1492 -> 0 bytes .../js/HoorayOS_mini/img/ui/system-star.png | Bin 1385 -> 0 bytes .../js/HoorayOS_mini/img/ui/system-users.png | Bin 1854 -> 0 bytes .../js/HoorayOS_mini/img/ui/system-wrench.png | Bin 1619 -> 0 bytes .../js/HoorayOS_mini/img/ui/task_bg1.png | Bin 139 -> 0 bytes .../js/HoorayOS_mini/img/ui/task_bg2.png | Bin 382 -> 0 bytes .../js/HoorayOS_mini/img/ui/transparent.gif | Bin 43 -> 0 bytes .../js/HoorayOS_mini/img/ui/warning.png | Bin 1234 -> 0 bytes .../HoorayOS_mini/img/ui/widget_title_bg.png | Bin 929 -> 0 bytes .../HoorayOS_mini/img/ui/window_mask_bg.png | Bin 147 -> 0 bytes .../HoorayOS_mini/img/ui/window_mask_icon.png | Bin 1198 -> 0 bytes .../HoorayOS_mini/img/wallpaper/wallpaper.jpg | Bin 712509 -> 0 bytes src/main/webapp/js/HoorayOS_mini/index.html | 105 - .../js/HoorayLibs/ZeroClipboard.swf | Bin 1071 -> 0 bytes .../js/HoorayLibs/gb_tip_layer.png | Bin 4560 -> 0 bytes .../js/HoorayLibs/gb_tip_layer_ie6.png | Bin 3208 -> 0 bytes .../js/HoorayLibs/gb_tip_loading.gif | Bin 771 -> 0 bytes .../js/HoorayLibs/hooraylibs.css | 41 - .../HoorayOS_mini/js/HoorayLibs/hooraylibs.js | 120 - .../js/HoorayLibs/scrolltotop.gif | Bin 1806 -> 0 bytes src/main/webapp/js/HoorayOS_mini/js/core.js | 25 - .../webapp/js/HoorayOS_mini/js/hros.app.js | 170 - .../webapp/js/HoorayOS_mini/js/hros.base.js | 44 - .../js/HoorayOS_mini/js/hros.desktop.js | 101 - .../webapp/js/HoorayOS_mini/js/hros.dock.js | 37 - .../webapp/js/HoorayOS_mini/js/hros.grid.js | 83 - .../js/HoorayOS_mini/js/hros.maskBox.js | 16 - .../js/HoorayOS_mini/js/hros.popupMenu.js | 37 - .../js/HoorayOS_mini/js/hros.taskbar.js | 93 - .../js/HoorayOS_mini/js/hros.wallpaper.js | 38 - .../webapp/js/HoorayOS_mini/js/hros.widget.js | 156 - .../webapp/js/HoorayOS_mini/js/hros.window.js | 608 - .../webapp/js/HoorayOS_mini/js/hros.zoom.js | 43 - .../js/HoorayOS_mini/js/jquery-1.8.3.min.js | 2 - .../webapp/js/HoorayOS_mini/js/templates.js | 66 - .../webapp/js/HoorayOS_mini/js/wallpaper.jpg | Bin 494096 -> 0 bytes src/main/webapp/js/HoorayOS_mini/js/zoom.swf | Bin 2417 -> 0 bytes src/main/webapp/js/HoorayOS_mini/说明.txt | 57 - .../js/My97DatePicker/My97DatePicker.htm | 49 - .../webapp/js/My97DatePicker/WdatePicker.js | 39 - src/main/webapp/js/My97DatePicker/calendar.js | 5 - src/main/webapp/js/My97DatePicker/config.js | 12 - src/main/webapp/js/My97DatePicker/lang/en.js | 14 - .../webapp/js/My97DatePicker/lang/zh-cn.js | 14 - .../webapp/js/My97DatePicker/lang/zh-tw.js | 14 - .../js/My97DatePicker/skin/WdatePicker.css | 10 - .../js/My97DatePicker/skin/datePicker.gif | Bin 1043 -> 0 bytes .../skin/default/datepicker.css | 246 - .../js/My97DatePicker/skin/default/img.gif | Bin 1578 -> 0 bytes .../js/My97DatePicker/skin/whyGreen/bg.jpg | Bin 307 -> 0 bytes .../skin/whyGreen/datepicker.css | 256 - .../js/My97DatePicker/skin/whyGreen/img.gif | Bin 1679 -> 0 bytes .../js/My97DatePicker/开发包/lang/en.js | 14 - .../js/My97DatePicker/开发包/lang/zh-cn.js | 14 - .../js/My97DatePicker/开发包/lang/zh-tw.js | 14 - .../js/My97DatePicker/开发包/readme.txt | 3 - .../开发包/skin/WdatePicker.css | 10 - .../My97DatePicker/开发包/skin/datePicker.gif | Bin 1043 -> 0 bytes .../开发包/skin/default/datepicker.css | 267 - .../开发包/skin/default/img.gif | Bin 1578 -> 0 bytes .../开发包/skin/whyGreen/bg.jpg | Bin 307 -> 0 bytes .../开发包/skin/whyGreen/datepicker.css | 277 - .../开发包/skin/whyGreen/img.gif | Bin 1679 -> 0 bytes src/main/webapp/js/StringBuffer.js | 11 - src/main/webapp/js/channel/imagepreview.js | 113 - src/main/webapp/js/channel/imgup.css | 199 - .../webapp/js/channel/jquery-1.8.3.min.js | 2 - src/main/webapp/js/channel/jquery.crop.js | 156 - src/main/webapp/js/channel/json2.js | 486 - src/main/webapp/js/colorbox/README.md | 572 - src/main/webapp/js/colorbox/bower.json | 41 - src/main/webapp/js/colorbox/colorbox.ai | 1811 --- src/main/webapp/js/colorbox/colorbox.css | 85 - .../webapp/js/colorbox/colorbox.jquery.json | 30 - src/main/webapp/js/colorbox/colorboxSet.js | 23 - src/main/webapp/js/colorbox/content/ajax.html | 11 - src/main/webapp/js/colorbox/content/daisy.jpg | Bin 106088 -> 0 bytes .../webapp/js/colorbox/content/daisy@2x.jpg | Bin 354739 -> 0 bytes src/main/webapp/js/colorbox/content/homer.jpg | Bin 8917 -> 0 bytes .../webapp/js/colorbox/content/marylou.jpg | Bin 55125 -> 0 bytes .../webapp/js/colorbox/content/ohoopee1.jpg | Bin 74827 -> 0 bytes .../webapp/js/colorbox/content/ohoopee2.jpg | Bin 117411 -> 0 bytes .../webapp/js/colorbox/content/ohoopee3.jpg | Bin 71514 -> 0 bytes .../webapp/js/colorbox/example1/colorbox.css | 70 - .../js/colorbox/example1/images/border.png | Bin 112 -> 0 bytes .../js/colorbox/example1/images/controls.png | Bin 2893 -> 0 bytes .../js/colorbox/example1/images/loading.gif | Bin 9427 -> 0 bytes .../example1/images/loading_background.png | Bin 157 -> 0 bytes .../js/colorbox/example1/images/overlay.png | Bin 182 -> 0 bytes .../webapp/js/colorbox/example1/index.html | 95 - .../webapp/js/colorbox/example2/colorbox.css | 50 - .../js/colorbox/example2/images/controls.png | Bin 570 -> 0 bytes .../js/colorbox/example2/images/loading.gif | Bin 9427 -> 0 bytes .../webapp/js/colorbox/example2/index.html | 95 - .../webapp/js/colorbox/example3/colorbox.css | 45 - .../js/colorbox/example3/images/controls.png | Bin 1633 -> 0 bytes .../js/colorbox/example3/images/loading.gif | Bin 9427 -> 0 bytes .../webapp/js/colorbox/example3/index.html | 95 - .../webapp/js/colorbox/example4/colorbox.css | 66 - .../js/colorbox/example4/images/border1.png | Bin 1057 -> 0 bytes .../js/colorbox/example4/images/border2.png | Bin 170 -> 0 bytes .../js/colorbox/example4/images/loading.gif | Bin 9427 -> 0 bytes .../webapp/js/colorbox/example4/index.html | 95 - .../webapp/js/colorbox/example5/colorbox.css | 58 - .../js/colorbox/example5/images/border.png | Bin 163 -> 0 bytes .../js/colorbox/example5/images/controls.png | Bin 2033 -> 0 bytes .../js/colorbox/example5/images/loading.gif | Bin 9427 -> 0 bytes .../example5/images/loading_background.png | Bin 166 -> 0 bytes .../webapp/js/colorbox/example5/index.html | 95 - .../js/colorbox/i18n/jquery.colorbox-ar.js | 15 - .../js/colorbox/i18n/jquery.colorbox-bg.js | 16 - .../js/colorbox/i18n/jquery.colorbox-ca.js | 13 - .../js/colorbox/i18n/jquery.colorbox-cs.js | 16 - .../js/colorbox/i18n/jquery.colorbox-da.js | 16 - .../js/colorbox/i18n/jquery.colorbox-de.js | 15 - .../js/colorbox/i18n/jquery.colorbox-es.js | 13 - .../js/colorbox/i18n/jquery.colorbox-et.js | 15 - .../js/colorbox/i18n/jquery.colorbox-fa.js | 18 - .../js/colorbox/i18n/jquery.colorbox-fi.js | 15 - .../js/colorbox/i18n/jquery.colorbox-fr.js | 15 - .../js/colorbox/i18n/jquery.colorbox-gl.js | 13 - .../js/colorbox/i18n/jquery.colorbox-gr.js | 16 - .../js/colorbox/i18n/jquery.colorbox-he.js | 16 - .../js/colorbox/i18n/jquery.colorbox-hr.js | 15 - .../js/colorbox/i18n/jquery.colorbox-hu.js | 15 - .../js/colorbox/i18n/jquery.colorbox-id.js | 15 - .../js/colorbox/i18n/jquery.colorbox-it.js | 15 - .../js/colorbox/i18n/jquery.colorbox-ja.js | 15 - .../js/colorbox/i18n/jquery.colorbox-kr.js | 15 - .../js/colorbox/i18n/jquery.colorbox-lt.js | 15 - .../js/colorbox/i18n/jquery.colorbox-lv.js | 16 - .../js/colorbox/i18n/jquery.colorbox-my.js | 15 - .../js/colorbox/i18n/jquery.colorbox-nl.js | 15 - .../js/colorbox/i18n/jquery.colorbox-no.js | 16 - .../js/colorbox/i18n/jquery.colorbox-pl.js | 16 - .../js/colorbox/i18n/jquery.colorbox-pt-br.js | 15 - .../js/colorbox/i18n/jquery.colorbox-ro.js | 15 - .../js/colorbox/i18n/jquery.colorbox-ru.js | 16 - .../js/colorbox/i18n/jquery.colorbox-si.js | 15 - .../js/colorbox/i18n/jquery.colorbox-sk.js | 15 - .../js/colorbox/i18n/jquery.colorbox-sr.js | 15 - .../js/colorbox/i18n/jquery.colorbox-sv.js | 15 - .../js/colorbox/i18n/jquery.colorbox-tr.js | 19 - .../js/colorbox/i18n/jquery.colorbox-uk.js | 16 - .../js/colorbox/i18n/jquery.colorbox-zh-CN.js | 15 - .../js/colorbox/i18n/jquery.colorbox-zh-TW.js | 15 - src/main/webapp/js/colorbox/images/border.png | Bin 112 -> 0 bytes .../webapp/js/colorbox/images/controls.png | Bin 2893 -> 0 bytes .../webapp/js/colorbox/images/ie6/Thumbs.db | Bin 9728 -> 0 bytes .../images/ie6/borderBottomCenter.png | Bin 111 -> 0 bytes .../colorbox/images/ie6/borderBottomLeft.png | Bin 215 -> 0 bytes .../colorbox/images/ie6/borderBottomRight.png | Bin 217 -> 0 bytes .../colorbox/images/ie6/borderMiddleLeft.png | Bin 108 -> 0 bytes .../colorbox/images/ie6/borderMiddleRight.png | Bin 108 -> 0 bytes .../colorbox/images/ie6/borderTopCenter.png | Bin 111 -> 0 bytes .../js/colorbox/images/ie6/borderTopLeft.png | Bin 216 -> 0 bytes .../js/colorbox/images/ie6/borderTopRight.png | Bin 214 -> 0 bytes .../webapp/js/colorbox/images/loading.gif | Bin 9427 -> 0 bytes .../js/colorbox/images/loading_background.png | Bin 157 -> 0 bytes .../webapp/js/colorbox/images/overlay.png | Bin 182 -> 0 bytes .../webapp/js/colorbox/jquery.colorbox-min.js | 7 - .../webapp/js/colorbox/jquery.colorbox.js | 1089 -- src/main/webapp/js/common/common.js | 263 - src/main/webapp/js/common/cs.js | 29 - src/main/webapp/js/common/outlook_in.js | 191 - src/main/webapp/js/datagrid-detailview.js | 539 - src/main/webapp/js/easyui-1.3.5/changelog.txt | 363 - .../easyui-1.3.5/demo/accordion/_content.html | 18 - .../easyui-1.3.5/demo/accordion/actions.html | 54 - .../js/easyui-1.3.5/demo/accordion/ajax.html | 31 - .../js/easyui-1.3.5/demo/accordion/basic.html | 55 - .../demo/accordion/datagrid_data1.json | 12 - .../demo/accordion/expandable.html | 36 - .../easyui-1.3.5/demo/accordion/multiple.html | 37 - .../js/easyui-1.3.5/demo/accordion/tools.html | 51 - .../js/easyui-1.3.5/demo/calendar/basic.html | 22 - .../easyui-1.3.5/demo/calendar/firstday.html | 33 - .../js/easyui-1.3.5/demo/combo/basic.html | 42 - .../easyui-1.3.5/demo/combobox/actions.html | 89 - .../js/easyui-1.3.5/demo/combobox/basic.html | 73 - .../demo/combobox/combobox_data1.json | 22 - .../demo/combobox/combobox_data2.json | 47 - .../demo/combobox/customformat.html | 35 - .../demo/combobox/dynamicdata.html | 25 - .../js/easyui-1.3.5/demo/combobox/group.html | 28 - .../easyui-1.3.5/demo/combobox/multiple.html | 30 - .../demo/combobox/navigation.html | 76 - .../demo/combobox/remotedata.html | 29 - .../demo/combobox/remotejsonp.html | 53 - .../easyui-1.3.5/demo/combogrid/actions.html | 56 - .../js/easyui-1.3.5/demo/combogrid/basic.html | 37 - .../demo/combogrid/datagrid_data1.json | 12 - .../demo/combogrid/initvalue.html | 36 - .../easyui-1.3.5/demo/combogrid/multiple.html | 40 - .../demo/combogrid/navigation.html | 41 - .../easyui-1.3.5/demo/combotree/actions.html | 42 - .../js/easyui-1.3.5/demo/combotree/basic.html | 22 - .../demo/combotree/initvalue.html | 22 - .../easyui-1.3.5/demo/combotree/multiple.html | 25 - .../demo/combotree/tree_data1.json | 49 - .../demo/datagrid/aligncolumns.html | 35 - .../js/easyui-1.3.5/demo/datagrid/basic.html | 35 - .../demo/datagrid/cellediting.html | 82 - .../easyui-1.3.5/demo/datagrid/cellstyle.html | 45 - .../easyui-1.3.5/demo/datagrid/checkbox.html | 45 - .../demo/datagrid/clientpagination.html | 92 - .../demo/datagrid/columngroup.html | 37 - .../demo/datagrid/complextoolbar.html | 55 - .../demo/datagrid/contextmenu.html | 84 - .../demo/datagrid/custompager.html | 56 - .../demo/datagrid/datagrid_data1.json | 12 - .../demo/datagrid/datagrid_data2.json | 15 - .../js/easyui-1.3.5/demo/datagrid/footer.html | 41 - .../demo/datagrid/formatcolumns.html | 42 - .../demo/datagrid/frozencolumns.html | 38 - .../demo/datagrid/frozenrows.html | 47 - .../demo/datagrid/mergecells.html | 61 - .../demo/datagrid/multisorting.html | 40 - .../easyui-1.3.5/demo/datagrid/products.json | 9 - .../easyui-1.3.5/demo/datagrid/rowborder.html | 63 - .../demo/datagrid/rowediting.html | 116 - .../easyui-1.3.5/demo/datagrid/rowstyle.html | 34 - .../easyui-1.3.5/demo/datagrid/selection.html | 60 - .../demo/datagrid/simpletoolbar.html | 48 - .../easyui-1.3.5/demo/datagrid/transform.html | 47 - .../js/easyui-1.3.5/demo/datebox/basic.html | 21 - .../js/easyui-1.3.5/demo/datebox/buttons.html | 31 - .../easyui-1.3.5/demo/datebox/dateformat.html | 42 - .../js/easyui-1.3.5/demo/datebox/events.html | 30 - .../easyui-1.3.5/demo/datebox/validate.html | 33 - .../easyui-1.3.5/demo/datetimebox/basic.html | 21 - .../demo/datetimebox/initvalue.html | 22 - .../demo/datetimebox/showseconds.html | 25 - src/main/webapp/js/easyui-1.3.5/demo/demo.css | 26 - .../js/easyui-1.3.5/demo/dialog/basic.html | 26 - .../demo/dialog/complextoolbar.html | 49 - .../demo/dialog/toolbarbuttons.html | 55 - .../js/easyui-1.3.5/demo/draggable/basic.html | 24 - .../easyui-1.3.5/demo/draggable/constain.html | 38 - .../js/easyui-1.3.5/demo/draggable/snap.html | 40 - .../easyui-1.3.5/demo/droppable/accept.html | 81 - .../js/easyui-1.3.5/demo/droppable/basic.html | 80 - .../js/easyui-1.3.5/demo/droppable/sort.html | 74 - .../easyui-1.3.5/demo/easyloader/basic.html | 75 - .../js/easyui-1.3.5/demo/form/basic.html | 62 - .../js/easyui-1.3.5/demo/form/form_data1.json | 7 - .../js/easyui-1.3.5/demo/form/load.html | 71 - .../js/easyui-1.3.5/demo/layout/_content.html | 18 - .../easyui-1.3.5/demo/layout/addremove.html | 56 - .../easyui-1.3.5/demo/layout/autoheight.html | 61 - .../js/easyui-1.3.5/demo/layout/basic.html | 42 - .../js/easyui-1.3.5/demo/layout/complex.html | 60 - .../demo/layout/datagrid_data1.json | 12 - .../js/easyui-1.3.5/demo/layout/full.html | 19 - .../demo/layout/nestedlayout.html | 34 - .../demo/layout/nocollapsible.html | 37 - .../demo/layout/propertygrid_data1.json | 20 - .../easyui-1.3.5/demo/layout/tree_data1.json | 49 - .../easyui-1.3.5/demo/linkbutton/basic.html | 28 - .../easyui-1.3.5/demo/linkbutton/group.html | 36 - .../demo/linkbutton/iconalign.html | 33 - .../easyui-1.3.5/demo/linkbutton/plain.html | 31 - .../easyui-1.3.5/demo/linkbutton/toggle.html | 28 - .../js/easyui-1.3.5/demo/menu/basic.html | 71 - .../js/easyui-1.3.5/demo/menu/customitem.html | 58 - .../js/easyui-1.3.5/demo/menu/events.html | 41 - .../easyui-1.3.5/demo/menubutton/actions.html | 61 - .../easyui-1.3.5/demo/menubutton/basic.html | 57 - .../js/easyui-1.3.5/demo/messager/alert.html | 43 - .../js/easyui-1.3.5/demo/messager/basic.html | 59 - .../demo/messager/interactive.html | 39 - .../easyui-1.3.5/demo/messager/position.html | 143 - .../js/easyui-1.3.5/demo/numberbox/basic.html | 27 - .../easyui-1.3.5/demo/numberbox/format.html | 43 - .../js/easyui-1.3.5/demo/numberbox/range.html | 21 - .../demo/numberspinner/basic.html | 28 - .../demo/numberspinner/increment.html | 21 - .../demo/numberspinner/range.html | 21 - .../demo/pagination/attaching.html | 33 - .../easyui-1.3.5/demo/pagination/basic.html | 21 - .../demo/pagination/custombuttons.html | 39 - .../easyui-1.3.5/demo/pagination/layout.html | 63 - .../easyui-1.3.5/demo/pagination/links.html | 24 - .../easyui-1.3.5/demo/pagination/simple.html | 27 - .../js/easyui-1.3.5/demo/panel/_content.html | 18 - .../js/easyui-1.3.5/demo/panel/basic.html | 34 - .../easyui-1.3.5/demo/panel/customtools.html | 38 - .../easyui-1.3.5/demo/panel/loadcontent.html | 30 - .../easyui-1.3.5/demo/panel/nestedpanel.html | 30 - .../easyui-1.3.5/demo/panel/paneltools.html | 40 - .../easyui-1.3.5/demo/progressbar/basic.html | 33 - .../easyui-1.3.5/demo/propertygrid/basic.html | 64 - .../demo/propertygrid/customcolumns.html | 34 - .../demo/propertygrid/groupformat.html | 33 - .../demo/propertygrid/propertygrid_data1.json | 20 - .../js/easyui-1.3.5/demo/resizable/basic.html | 27 - .../js/easyui-1.3.5/demo/searchbox/basic.html | 26 - .../easyui-1.3.5/demo/searchbox/category.html | 31 - .../js/easyui-1.3.5/demo/slider/basic.html | 23 - .../easyui-1.3.5/demo/slider/formattip.html | 33 - .../js/easyui-1.3.5/demo/slider/rule.html | 26 - .../js/easyui-1.3.5/demo/slider/vertical.html | 27 - .../demo/splitbutton/actions.html | 67 - .../easyui-1.3.5/demo/splitbutton/basic.html | 64 - .../js/easyui-1.3.5/demo/tabs/_content.html | 18 - .../js/easyui-1.3.5/demo/tabs/autoheight.html | 39 - .../js/easyui-1.3.5/demo/tabs/basic.html | 39 - .../js/easyui-1.3.5/demo/tabs/dropdown.html | 58 - .../js/easyui-1.3.5/demo/tabs/fixedwidth.html | 40 - .../js/easyui-1.3.5/demo/tabs/hover.html | 49 - .../easyui-1.3.5/demo/tabs/images/modem.png | Bin 1633 -> 0 bytes .../js/easyui-1.3.5/demo/tabs/images/pda.png | Bin 1787 -> 0 bytes .../easyui-1.3.5/demo/tabs/images/scanner.png | Bin 2600 -> 0 bytes .../easyui-1.3.5/demo/tabs/images/tablet.png | Bin 2505 -> 0 bytes .../js/easyui-1.3.5/demo/tabs/nestedtabs.html | 57 - .../js/easyui-1.3.5/demo/tabs/striptools.html | 42 - .../js/easyui-1.3.5/demo/tabs/tabimage.html | 44 - .../easyui-1.3.5/demo/tabs/tabposition.html | 48 - .../js/easyui-1.3.5/demo/tabs/tabstools.html | 44 - .../js/easyui-1.3.5/demo/tabs/tree_data1.json | 49 - .../demo/timespinner/actions.html | 41 - .../easyui-1.3.5/demo/timespinner/basic.html | 21 - .../easyui-1.3.5/demo/timespinner/range.html | 23 - .../easyui-1.3.5/demo/tooltip/_content.html | 18 - .../js/easyui-1.3.5/demo/tooltip/_dialog.html | 23 - .../js/easyui-1.3.5/demo/tooltip/ajax.html | 35 - .../js/easyui-1.3.5/demo/tooltip/basic.html | 23 - .../demo/tooltip/customcontent.html | 33 - .../demo/tooltip/customstyle.html | 55 - .../easyui-1.3.5/demo/tooltip/position.html | 37 - .../js/easyui-1.3.5/demo/tooltip/toolbar.html | 43 - .../demo/tooltip/tooltipdialog.html | 47 - .../easyui-1.3.5/demo/treegrid/actions.html | 67 - .../js/easyui-1.3.5/demo/treegrid/basic.html | 37 - .../demo/treegrid/clientpagination.html | 95 - .../demo/treegrid/contextmenu.html | 107 - .../easyui-1.3.5/demo/treegrid/editable.html | 96 - .../js/easyui-1.3.5/demo/treegrid/footer.html | 58 - .../easyui-1.3.5/demo/treegrid/reports.html | 52 - .../demo/treegrid/treegrid_data1.json | 73 - .../demo/treegrid/treegrid_data2.json | 11 - .../demo/treegrid/treegrid_data3.json | 13 - .../easyui-1.3.5/demo/validatebox/basic.html | 45 - .../demo/validatebox/customtooltip.html | 90 - .../js/easyui-1.3.5/demo/window/basic.html | 26 - .../easyui-1.3.5/demo/window/customtools.html | 33 - .../demo/window/inlinewindow.html | 29 - .../easyui-1.3.5/demo/window/modalwindow.html | 27 - .../demo/window/windowlayout.html | 36 - src/main/webapp/js/easyui-1.3.5/easyloader.js | 192 - .../js/easyui-1.3.5/jquery.easyui.min.js | 12484 ---------------- src/main/webapp/js/easyui-1.3.5/jquery.min.js | 2 - .../js/easyui-1.3.5/locale/easyui-lang-af.js | 51 - .../js/easyui-1.3.5/locale/easyui-lang-ar.js | 52 - .../js/easyui-1.3.5/locale/easyui-lang-bg.js | 51 - .../js/easyui-1.3.5/locale/easyui-lang-ca.js | 51 - .../js/easyui-1.3.5/locale/easyui-lang-cs.js | 51 - .../js/easyui-1.3.5/locale/easyui-lang-cz.js | 51 - .../js/easyui-1.3.5/locale/easyui-lang-da.js | 51 - .../js/easyui-1.3.5/locale/easyui-lang-de.js | 70 - .../js/easyui-1.3.5/locale/easyui-lang-el.js | 52 - .../js/easyui-1.3.5/locale/easyui-lang-en.js | 52 - .../js/easyui-1.3.5/locale/easyui-lang-es.js | 52 - .../js/easyui-1.3.5/locale/easyui-lang-fr.js | 51 - .../js/easyui-1.3.5/locale/easyui-lang-it.js | 52 - .../js/easyui-1.3.5/locale/easyui-lang-jp.js | 52 - .../js/easyui-1.3.5/locale/easyui-lang-nl.js | 51 - .../js/easyui-1.3.5/locale/easyui-lang-pl.js | 52 - .../easyui-1.3.5/locale/easyui-lang-pt_BR.js | 52 - .../js/easyui-1.3.5/locale/easyui-lang-ru.js | 53 - .../easyui-1.3.5/locale/easyui-lang-sv_SE.js | 52 - .../js/easyui-1.3.5/locale/easyui-lang-tr.js | 66 - .../easyui-1.3.5/locale/easyui-lang-zh_CN.js | 70 - .../easyui-1.3.5/locale/easyui-lang-zh_TW.js | 52 - src/main/webapp/js/easyui-1.3.5/outlook.js | 183 - .../easyui-1.3.5/plugins/jquery.accordion.js | 322 - .../easyui-1.3.5/plugins/jquery.calendar.js | 304 - .../js/easyui-1.3.5/plugins/jquery.combo.js | 453 - .../easyui-1.3.5/plugins/jquery.combobox.js | 444 - .../easyui-1.3.5/plugins/jquery.combogrid.js | 253 - .../easyui-1.3.5/plugins/jquery.combotree.js | 162 - .../easyui-1.3.5/plugins/jquery.datagrid.js | 2286 --- .../js/easyui-1.3.5/plugins/jquery.datebox.js | 157 - .../plugins/jquery.datetimebox.js | 166 - .../js/easyui-1.3.5/plugins/jquery.dialog.js | 141 - .../easyui-1.3.5/plugins/jquery.draggable.js | 285 - .../easyui-1.3.5/plugins/jquery.droppable.js | 64 - .../js/easyui-1.3.5/plugins/jquery.form.js | 292 - .../js/easyui-1.3.5/plugins/jquery.layout.js | 433 - .../easyui-1.3.5/plugins/jquery.linkbutton.js | 144 - .../js/easyui-1.3.5/plugins/jquery.menu.js | 427 - .../easyui-1.3.5/plugins/jquery.menubutton.js | 132 - .../easyui-1.3.5/plugins/jquery.messager.js | 217 - .../easyui-1.3.5/plugins/jquery.numberbox.js | 224 - .../plugins/jquery.numberspinner.js | 75 - .../easyui-1.3.5/plugins/jquery.pagination.js | 284 - .../js/easyui-1.3.5/plugins/jquery.panel.js | 520 - .../js/easyui-1.3.5/plugins/jquery.parser.js | 218 - .../plugins/jquery.progressbar.js | 80 - .../plugins/jquery.propertygrid.js | 237 - .../easyui-1.3.5/plugins/jquery.resizable.js | 172 - .../easyui-1.3.5/plugins/jquery.searchbox.js | 184 - .../js/easyui-1.3.5/plugins/jquery.slider.js | 280 - .../js/easyui-1.3.5/plugins/jquery.spinner.js | 152 - .../plugins/jquery.splitbutton.js | 50 - .../js/easyui-1.3.5/plugins/jquery.tabs.js | 609 - .../plugins/jquery.timespinner.js | 187 - .../js/easyui-1.3.5/plugins/jquery.tooltip.js | 204 - .../js/easyui-1.3.5/plugins/jquery.tree.js | 1155 -- .../easyui-1.3.5/plugins/jquery.treegrid.js | 1100 -- .../plugins/jquery.validatebox.js | 217 - .../js/easyui-1.3.5/plugins/jquery.window.js | 277 - .../webapp/js/easyui-1.3.5/src/easyloader.js | 405 - .../js/easyui-1.3.5/src/jquery.accordion.js | 410 - .../js/easyui-1.3.5/src/jquery.calendar.js | 392 - .../js/easyui-1.3.5/src/jquery.combobox.js | 539 - .../js/easyui-1.3.5/src/jquery.datebox.js | 223 - .../js/easyui-1.3.5/src/jquery.draggable.js | 417 - .../js/easyui-1.3.5/src/jquery.droppable.js | 78 - .../webapp/js/easyui-1.3.5/src/jquery.form.js | 378 - .../js/easyui-1.3.5/src/jquery.linkbutton.js | 181 - .../webapp/js/easyui-1.3.5/src/jquery.menu.js | 543 - .../js/easyui-1.3.5/src/jquery.parser.js | 263 - .../js/easyui-1.3.5/src/jquery.progressbar.js | 99 - .../easyui-1.3.5/src/jquery.propertygrid.js | 315 - .../js/easyui-1.3.5/src/jquery.resizable.js | 244 - .../js/easyui-1.3.5/src/jquery.slider.js | 368 - .../webapp/js/easyui-1.3.5/src/jquery.tabs.js | 787 - .../js/easyui-1.3.5/src/jquery.window.js | 409 - .../easyui-1.3.5/themes/black/accordion.css | 41 - .../js/easyui-1.3.5/themes/black/calendar.css | 190 - .../js/easyui-1.3.5/themes/black/combo.css | 58 - .../js/easyui-1.3.5/themes/black/combobox.css | 24 - .../js/easyui-1.3.5/themes/black/datagrid.css | 260 - .../js/easyui-1.3.5/themes/black/datebox.css | 36 - .../js/easyui-1.3.5/themes/black/dialog.css | 30 - .../js/easyui-1.3.5/themes/black/easyui.css | 2322 --- .../themes/black/images/accordion_arrows.png | Bin 122 -> 0 bytes .../themes/black/images/blank.gif | Bin 43 -> 0 bytes .../themes/black/images/calendar_arrows.png | Bin 173 -> 0 bytes .../themes/black/images/combo_arrow.png | Bin 100 -> 0 bytes .../themes/black/images/datagrid_icons.png | Bin 210 -> 0 bytes .../themes/black/images/datebox_arrow.png | Bin 626 -> 0 bytes .../themes/black/images/layout_arrows.png | Bin 179 -> 0 bytes .../themes/black/images/linkbutton_bg.png | Bin 1274 -> 0 bytes .../themes/black/images/loading.gif | Bin 1737 -> 0 bytes .../themes/black/images/menu_arrows.png | Bin 134 -> 0 bytes .../themes/black/images/messager_icons.png | Bin 6116 -> 0 bytes .../themes/black/images/pagination_icons.png | Bin 339 -> 0 bytes .../themes/black/images/panel_tools.png | Bin 184 -> 0 bytes .../themes/black/images/searchbox_button.png | Bin 813 -> 0 bytes .../themes/black/images/slider_handle.png | Bin 863 -> 0 bytes .../themes/black/images/spinner_arrows.png | Bin 112 -> 0 bytes .../themes/black/images/tabs_icons.png | Bin 144 -> 0 bytes .../themes/black/images/tree_icons.png | Bin 3086 -> 0 bytes .../black/images/validatebox_warning.png | Bin 921 -> 0 bytes .../js/easyui-1.3.5/themes/black/layout.css | 91 - .../easyui-1.3.5/themes/black/linkbutton.css | 152 - .../js/easyui-1.3.5/themes/black/menu.css | 109 - .../easyui-1.3.5/themes/black/menubutton.css | 31 - .../js/easyui-1.3.5/themes/black/messager.css | 37 - .../easyui-1.3.5/themes/black/pagination.css | 79 - .../js/easyui-1.3.5/themes/black/panel.css | 131 - .../easyui-1.3.5/themes/black/progressbar.css | 32 - .../themes/black/propertygrid.css | 28 - .../easyui-1.3.5/themes/black/searchbox.css | 83 - .../js/easyui-1.3.5/themes/black/slider.css | 100 - .../js/easyui-1.3.5/themes/black/spinner.css | 59 - .../easyui-1.3.5/themes/black/splitbutton.css | 43 - .../js/easyui-1.3.5/themes/black/tabs.css | 356 - .../js/easyui-1.3.5/themes/black/tooltip.css | 100 - .../js/easyui-1.3.5/themes/black/tree.css | 157 - .../easyui-1.3.5/themes/black/validatebox.css | 8 - .../js/easyui-1.3.5/themes/black/window.css | 87 - .../themes/bootstrap/accordion.css | 41 - .../themes/bootstrap/calendar.css | 190 - .../easyui-1.3.5/themes/bootstrap/combo.css | 58 - .../themes/bootstrap/combobox.css | 24 - .../themes/bootstrap/datagrid.css | 260 - .../easyui-1.3.5/themes/bootstrap/datebox.css | 36 - .../easyui-1.3.5/themes/bootstrap/dialog.css | 30 - .../easyui-1.3.5/themes/bootstrap/easyui.css | 2341 --- .../bootstrap/images/accordion_arrows.png | Bin 184 -> 0 bytes .../themes/bootstrap/images/blank.gif | Bin 43 -> 0 bytes .../bootstrap/images/calendar_arrows.png | Bin 173 -> 0 bytes .../themes/bootstrap/images/combo_arrow.png | Bin 117 -> 0 bytes .../bootstrap/images/datagrid_icons.png | Bin 220 -> 0 bytes .../themes/bootstrap/images/datebox_arrow.png | Bin 626 -> 0 bytes .../themes/bootstrap/images/layout_arrows.png | Bin 319 -> 0 bytes .../themes/bootstrap/images/linkbutton_bg.png | Bin 1274 -> 0 bytes .../themes/bootstrap/images/loading.gif | Bin 1737 -> 0 bytes .../themes/bootstrap/images/menu_arrows.png | Bin 160 -> 0 bytes .../bootstrap/images/messager_icons.png | Bin 6116 -> 0 bytes .../bootstrap/images/pagination_icons.png | Bin 628 -> 0 bytes .../themes/bootstrap/images/panel_tools.png | Bin 194 -> 0 bytes .../bootstrap/images/searchbox_button.png | Bin 813 -> 0 bytes .../themes/bootstrap/images/slider_handle.png | Bin 863 -> 0 bytes .../bootstrap/images/spinner_arrows.png | Bin 115 -> 0 bytes .../themes/bootstrap/images/tabs_icons.png | Bin 150 -> 0 bytes .../themes/bootstrap/images/tree_icons.png | Bin 3115 -> 0 bytes .../bootstrap/images/validatebox_warning.png | Bin 921 -> 0 bytes .../easyui-1.3.5/themes/bootstrap/layout.css | 91 - .../themes/bootstrap/linkbutton.css | 152 - .../js/easyui-1.3.5/themes/bootstrap/menu.css | 109 - .../themes/bootstrap/menubutton.css | 31 - .../themes/bootstrap/messager.css | 37 - .../themes/bootstrap/pagination.css | 79 - .../easyui-1.3.5/themes/bootstrap/panel.css | 131 - .../themes/bootstrap/progressbar.css | 32 - .../themes/bootstrap/propertygrid.css | 28 - .../themes/bootstrap/searchbox.css | 83 - .../easyui-1.3.5/themes/bootstrap/slider.css | 100 - .../easyui-1.3.5/themes/bootstrap/spinner.css | 59 - .../themes/bootstrap/splitbutton.css | 43 - .../js/easyui-1.3.5/themes/bootstrap/tabs.css | 356 - .../easyui-1.3.5/themes/bootstrap/tooltip.css | 100 - .../js/easyui-1.3.5/themes/bootstrap/tree.css | 157 - .../themes/bootstrap/validatebox.css | 8 - .../easyui-1.3.5/themes/bootstrap/window.css | 87 - .../easyui-1.3.5/themes/default/accordion.css | 41 - .../easyui-1.3.5/themes/default/calendar.css | 190 - .../js/easyui-1.3.5/themes/default/combo.css | 58 - .../easyui-1.3.5/themes/default/combobox.css | 24 - .../easyui-1.3.5/themes/default/datagrid.css | 260 - .../easyui-1.3.5/themes/default/datebox.css | 36 - .../js/easyui-1.3.5/themes/default/dialog.css | 30 - .../js/easyui-1.3.5/themes/default/easyui.css | 2299 --- .../themes/default/images/Thumbs.db | Bin 35328 -> 0 bytes .../default/images/accordion_arrows.png | Bin 184 -> 0 bytes .../themes/default/images/bg_positionl.gif | Bin 540 -> 0 bytes .../themes/default/images/bg_positionm.jpg | Bin 398 -> 0 bytes .../themes/default/images/bg_positionr.jpg | Bin 8310 -> 0 bytes .../themes/default/images/bg_positionrbak.jpg | Bin 18506 -> 0 bytes .../themes/default/images/bg_positionrpos.jpg | Bin 3900 -> 0 bytes .../themes/default/images/blank.gif | Bin 43 -> 0 bytes .../themes/default/images/calendar_arrows.png | Bin 173 -> 0 bytes .../themes/default/images/combo_arrow.png | Bin 117 -> 0 bytes .../themes/default/images/datagrid_icons.png | Bin 220 -> 0 bytes .../themes/default/images/datebox_arrow.png | Bin 626 -> 0 bytes .../themes/default/images/layout_arrows.png | Bin 319 -> 0 bytes .../themes/default/images/linkbutton_bg.png | Bin 1274 -> 0 bytes .../themes/default/images/loading.gif | Bin 1737 -> 0 bytes .../themes/default/images/menu_arrows.png | Bin 160 -> 0 bytes .../themes/default/images/messager_icons.png | Bin 6116 -> 0 bytes .../default/images/pagination_icons.png | Bin 628 -> 0 bytes .../themes/default/images/panel_tools.png | Bin 852 -> 0 bytes .../default/images/searchbox_button.png | Bin 813 -> 0 bytes .../themes/default/images/slider_handle.png | Bin 863 -> 0 bytes .../themes/default/images/spinner_arrows.png | Bin 115 -> 0 bytes .../themes/default/images/tabs_icons.png | Bin 150 -> 0 bytes .../themes/default/images/tree_icons.png | Bin 3115 -> 0 bytes .../default/images/validatebox_warning.png | Bin 921 -> 0 bytes .../js/easyui-1.3.5/themes/default/layout.css | 91 - .../themes/default/linkbutton.css | 124 - .../js/easyui-1.3.5/themes/default/menu.css | 109 - .../themes/default/menubutton.css | 31 - .../easyui-1.3.5/themes/default/messager.css | 37 - .../themes/default/pagination.css | 79 - .../js/easyui-1.3.5/themes/default/panel.css | 131 - .../themes/default/progressbar.css | 32 - .../themes/default/propertygrid.css | 28 - .../easyui-1.3.5/themes/default/searchbox.css | 83 - .../js/easyui-1.3.5/themes/default/slider.css | 100 - .../easyui-1.3.5/themes/default/spinner.css | 59 - .../themes/default/splitbutton.css | 43 - .../js/easyui-1.3.5/themes/default/tabs.css | 356 - .../easyui-1.3.5/themes/default/tooltip.css | 100 - .../js/easyui-1.3.5/themes/default/tree.css | 157 - .../themes/default/validatebox.css | 8 - .../js/easyui-1.3.5/themes/default/window.css | 87 - .../js/easyui-1.3.5/themes/gray/accordion.css | 41 - .../js/easyui-1.3.5/themes/gray/calendar.css | 190 - .../js/easyui-1.3.5/themes/gray/combo.css | 58 - .../js/easyui-1.3.5/themes/gray/combobox.css | 24 - .../js/easyui-1.3.5/themes/gray/datagrid.css | 260 - .../js/easyui-1.3.5/themes/gray/datebox.css | 36 - .../js/easyui-1.3.5/themes/gray/dialog.css | 30 - .../js/easyui-1.3.5/themes/gray/easyui.css | 2294 --- .../themes/gray/images/accordion_arrows.png | Bin 125 -> 0 bytes .../easyui-1.3.5/themes/gray/images/blank.gif | Bin 43 -> 0 bytes .../themes/gray/images/calendar_arrows.png | Bin 173 -> 0 bytes .../themes/gray/images/combo_arrow.png | Bin 103 -> 0 bytes .../themes/gray/images/datagrid_icons.png | Bin 243 -> 0 bytes .../themes/gray/images/datebox_arrow.png | Bin 626 -> 0 bytes .../themes/gray/images/layout_arrows.png | Bin 181 -> 0 bytes .../themes/gray/images/linkbutton_bg.png | Bin 1274 -> 0 bytes .../themes/gray/images/loading.gif | Bin 1737 -> 0 bytes .../themes/gray/images/menu_arrows.png | Bin 160 -> 0 bytes .../themes/gray/images/messager_icons.png | Bin 6116 -> 0 bytes .../themes/gray/images/pagination_icons.png | Bin 466 -> 0 bytes .../themes/gray/images/panel_tools.png | Bin 191 -> 0 bytes .../themes/gray/images/searchbox_button.png | Bin 813 -> 0 bytes .../themes/gray/images/slider_handle.png | Bin 863 -> 0 bytes .../themes/gray/images/spinner_arrows.png | Bin 141 -> 0 bytes .../themes/gray/images/tabs_icons.png | Bin 144 -> 0 bytes .../themes/gray/images/tree_icons.png | Bin 3115 -> 0 bytes .../gray/images/validatebox_warning.png | Bin 921 -> 0 bytes .../js/easyui-1.3.5/themes/gray/layout.css | 91 - .../easyui-1.3.5/themes/gray/linkbutton.css | 124 - .../js/easyui-1.3.5/themes/gray/menu.css | 109 - .../easyui-1.3.5/themes/gray/menubutton.css | 31 - .../js/easyui-1.3.5/themes/gray/messager.css | 37 - .../easyui-1.3.5/themes/gray/pagination.css | 79 - .../js/easyui-1.3.5/themes/gray/panel.css | 131 - .../easyui-1.3.5/themes/gray/progressbar.css | 32 - .../easyui-1.3.5/themes/gray/propertygrid.css | 28 - .../js/easyui-1.3.5/themes/gray/searchbox.css | 83 - .../js/easyui-1.3.5/themes/gray/slider.css | 100 - .../js/easyui-1.3.5/themes/gray/spinner.css | 59 - .../easyui-1.3.5/themes/gray/splitbutton.css | 43 - .../js/easyui-1.3.5/themes/gray/tabs.css | 356 - .../js/easyui-1.3.5/themes/gray/tooltip.css | 100 - .../js/easyui-1.3.5/themes/gray/tree.css | 157 - .../easyui-1.3.5/themes/gray/validatebox.css | 8 - .../js/easyui-1.3.5/themes/gray/window.css | 87 - .../webapp/js/easyui-1.3.5/themes/icon.css | 99 - .../js/easyui-1.3.5/themes/icons/049.png | Bin 552 -> 0 bytes .../js/easyui-1.3.5/themes/icons/311.gif | Bin 608 -> 0 bytes .../js/easyui-1.3.5/themes/icons/back.png | Bin 912 -> 0 bytes .../js/easyui-1.3.5/themes/icons/blank.gif | Bin 43 -> 0 bytes .../js/easyui-1.3.5/themes/icons/cancel.png | Bin 1133 -> 0 bytes .../easyui-1.3.5/themes/icons/chart_bar.png | Bin 441 -> 0 bytes .../js/easyui-1.3.5/themes/icons/comment.png | Bin 612 -> 0 bytes .../js/easyui-1.3.5/themes/icons/cut.png | Bin 1024 -> 0 bytes .../js/easyui-1.3.5/themes/icons/edit_add.png | Bin 1088 -> 0 bytes .../easyui-1.3.5/themes/icons/edit_remove.png | Bin 625 -> 0 bytes .../js/easyui-1.3.5/themes/icons/excel1.png | Bin 600 -> 0 bytes .../js/easyui-1.3.5/themes/icons/filelist.jpg | Bin 1421 -> 0 bytes .../js/easyui-1.3.5/themes/icons/filesave.png | Bin 898 -> 0 bytes .../js/easyui-1.3.5/themes/icons/filter.png | Bin 305 -> 0 bytes .../js/easyui-1.3.5/themes/icons/help.png | Bin 1187 -> 0 bytes .../js/easyui-1.3.5/themes/icons/list.png | Bin 295 -> 0 bytes .../easyui-1.3.5/themes/icons/lock_unlock.png | Bin 548 -> 0 bytes .../js/easyui-1.3.5/themes/icons/mini_add.png | Bin 244 -> 0 bytes .../easyui-1.3.5/themes/icons/mini_edit.png | Bin 161 -> 0 bytes .../themes/icons/mini_refresh.png | Bin 160 -> 0 bytes .../js/easyui-1.3.5/themes/icons/no.png | Bin 1853 -> 0 bytes .../js/easyui-1.3.5/themes/icons/ok.png | Bin 883 -> 0 bytes .../easyui-1.3.5/themes/icons/page_excel.png | Bin 684 -> 0 bytes .../js/easyui-1.3.5/themes/icons/pencil.png | Bin 713 -> 0 bytes .../js/easyui-1.3.5/themes/icons/pie.png | Bin 1065 -> 0 bytes .../js/easyui-1.3.5/themes/icons/polygram.png | Bin 772 -> 0 bytes .../js/easyui-1.3.5/themes/icons/print.png | Bin 1057 -> 0 bytes .../themes/icons/receipt-excel.png | Bin 574 -> 0 bytes .../js/easyui-1.3.5/themes/icons/redo.png | Bin 708 -> 0 bytes .../js/easyui-1.3.5/themes/icons/reload.png | Bin 1045 -> 0 bytes .../js/easyui-1.3.5/themes/icons/search.png | Bin 813 -> 0 bytes .../easyui-1.3.5/themes/icons/statistics.png | Bin 907 -> 0 bytes .../js/easyui-1.3.5/themes/icons/sum.png | Bin 289 -> 0 bytes .../js/easyui-1.3.5/themes/icons/tip.png | Bin 743 -> 0 bytes .../js/easyui-1.3.5/themes/icons/undo.png | Bin 707 -> 0 bytes .../js/easyui-1.3.5/themes/icons/zonghe.png | Bin 606 -> 0 bytes .../easyui-1.3.5/themes/metro/accordion.css | 41 - .../js/easyui-1.3.5/themes/metro/calendar.css | 190 - .../js/easyui-1.3.5/themes/metro/combo.css | 58 - .../js/easyui-1.3.5/themes/metro/combobox.css | 24 - .../js/easyui-1.3.5/themes/metro/datagrid.css | 254 - .../js/easyui-1.3.5/themes/metro/datebox.css | 36 - .../js/easyui-1.3.5/themes/metro/dialog.css | 30 - .../js/easyui-1.3.5/themes/metro/easyui.css | 2268 --- .../themes/metro/images/accordion_arrows.png | Bin 184 -> 0 bytes .../themes/metro/images/blank.gif | Bin 43 -> 0 bytes .../themes/metro/images/calendar_arrows.png | Bin 173 -> 0 bytes .../themes/metro/images/combo_arrow.png | Bin 117 -> 0 bytes .../themes/metro/images/datagrid_icons.png | Bin 220 -> 0 bytes .../themes/metro/images/datebox_arrow.png | Bin 626 -> 0 bytes .../themes/metro/images/layout_arrows.png | Bin 319 -> 0 bytes .../themes/metro/images/linkbutton_bg.png | Bin 1274 -> 0 bytes .../themes/metro/images/loading.gif | Bin 1737 -> 0 bytes .../themes/metro/images/menu_arrows.png | Bin 160 -> 0 bytes .../themes/metro/images/messager_icons.png | Bin 6116 -> 0 bytes .../themes/metro/images/pagination_icons.png | Bin 628 -> 0 bytes .../themes/metro/images/panel_tools.png | Bin 194 -> 0 bytes .../themes/metro/images/searchbox_button.png | Bin 813 -> 0 bytes .../themes/metro/images/slider_handle.png | Bin 863 -> 0 bytes .../themes/metro/images/spinner_arrows.png | Bin 115 -> 0 bytes .../themes/metro/images/tabs_icons.png | Bin 150 -> 0 bytes .../themes/metro/images/tree_icons.png | Bin 3115 -> 0 bytes .../metro/images/validatebox_warning.png | Bin 921 -> 0 bytes .../js/easyui-1.3.5/themes/metro/layout.css | 91 - .../easyui-1.3.5/themes/metro/linkbutton.css | 152 - .../js/easyui-1.3.5/themes/metro/menu.css | 109 - .../easyui-1.3.5/themes/metro/menubutton.css | 31 - .../js/easyui-1.3.5/themes/metro/messager.css | 37 - .../easyui-1.3.5/themes/metro/pagination.css | 79 - .../js/easyui-1.3.5/themes/metro/panel.css | 125 - .../easyui-1.3.5/themes/metro/progressbar.css | 32 - .../themes/metro/propertygrid.css | 28 - .../easyui-1.3.5/themes/metro/searchbox.css | 83 - .../js/easyui-1.3.5/themes/metro/slider.css | 100 - .../js/easyui-1.3.5/themes/metro/spinner.css | 59 - .../easyui-1.3.5/themes/metro/splitbutton.css | 43 - .../js/easyui-1.3.5/themes/metro/tabs.css | 320 - .../js/easyui-1.3.5/themes/metro/tooltip.css | 100 - .../js/easyui-1.3.5/themes/metro/tree.css | 157 - .../easyui-1.3.5/themes/metro/validatebox.css | 8 - .../js/easyui-1.3.5/themes/metro/window.css | 81 - .../webapp/js/fileUploadQT/css/fileUpload.css | 130 - .../webapp/js/fileUploadQT/css/iconfont.css | 33 - src/main/webapp/js/fileUploadQT/demo.html | 97 - .../webapp/js/fileUploadQT/fonts/iconfont.eot | Bin 7222 -> 0 bytes .../webapp/js/fileUploadQT/fonts/iconfont.svg | 61 - .../webapp/js/fileUploadQT/fonts/iconfont.ttf | Bin 6940 -> 0 bytes .../js/fileUploadQT/fonts/iconfont.woff | Bin 4520 -> 0 bytes .../webapp/js/fileUploadQT/js/fileUpload.js | 565 - .../webapp/js/fileUploadQT/js/iconfont.js | 168 - .../js/fileUploadQT/js/jquery-2.1.3.min.js | 4 - src/main/webapp/js/grayscale.js | 310 - src/main/webapp/js/highcharts/exporting.js | 23 - .../webapp/js/highcharts/highcharts-more.js | 50 - src/main/webapp/js/highcharts/highcharts.js | 246 - src/main/webapp/js/imgpreview/imagepreview.js | 113 - src/main/webapp/js/imgpreview/imgpreview.html | 110 - src/main/webapp/js/imgpreview/imgup.css | 199 - .../webapp/js/imgpreview/jquery-1.8.3.min.js | 2 - src/main/webapp/js/imgpreview/jquery.crop.js | 156 - .../js/jdigiclock/WeatherLocationDatabase.txt | 3594 ----- src/main/webapp/js/jdigiclock/changelog.html | 30 - .../js/jdigiclock/css/jquery.jdigiclock.css | 227 - src/main/webapp/js/jdigiclock/css/style.css | 101 - .../js/jdigiclock/images/background.png | Bin 135289 -> 0 bytes .../jdigiclock/images/background_forecast.png | Bin 66046 -> 0 bytes .../webapp/js/jdigiclock/images/clock/0-1.png | Bin 4768 -> 0 bytes .../webapp/js/jdigiclock/images/clock/0-2.png | Bin 4323 -> 0 bytes .../webapp/js/jdigiclock/images/clock/0-3.png | Bin 3781 -> 0 bytes .../webapp/js/jdigiclock/images/clock/0.png | Bin 4917 -> 0 bytes .../js/jdigiclock/images/clock/001-1.png | Bin 3604 -> 0 bytes .../js/jdigiclock/images/clock/001-2.png | Bin 3888 -> 0 bytes .../js/jdigiclock/images/clock/001-3.png | Bin 4060 -> 0 bytes .../js/jdigiclock/images/clock/01-1.png | Bin 5056 -> 0 bytes .../js/jdigiclock/images/clock/01-2.png | Bin 5065 -> 0 bytes .../js/jdigiclock/images/clock/01-3.png | Bin 4837 -> 0 bytes .../webapp/js/jdigiclock/images/clock/1-1.png | Bin 3980 -> 0 bytes .../webapp/js/jdigiclock/images/clock/1-2.png | Bin 4437 -> 0 bytes .../webapp/js/jdigiclock/images/clock/1-3.png | Bin 4509 -> 0 bytes .../webapp/js/jdigiclock/images/clock/1.png | Bin 3463 -> 0 bytes .../js/jdigiclock/images/clock/11-1.png | Bin 3650 -> 0 bytes .../js/jdigiclock/images/clock/11-2.png | Bin 3491 -> 0 bytes .../js/jdigiclock/images/clock/11-3.png | Bin 3474 -> 0 bytes .../js/jdigiclock/images/clock/111-1.png | Bin 4112 -> 0 bytes .../js/jdigiclock/images/clock/111-2.png | Bin 3643 -> 0 bytes .../js/jdigiclock/images/clock/111-3.png | Bin 3345 -> 0 bytes .../webapp/js/jdigiclock/images/clock/2-1.png | Bin 4835 -> 0 bytes .../webapp/js/jdigiclock/images/clock/2-2.png | Bin 4866 -> 0 bytes .../webapp/js/jdigiclock/images/clock/2-3.png | Bin 4789 -> 0 bytes .../webapp/js/jdigiclock/images/clock/2.png | Bin 4776 -> 0 bytes .../js/jdigiclock/images/clock/21-1.png | Bin 4840 -> 0 bytes .../js/jdigiclock/images/clock/21-2.png | Bin 4781 -> 0 bytes .../js/jdigiclock/images/clock/21-3.png | Bin 4538 -> 0 bytes .../js/jdigiclock/images/clock/211-1.png | Bin 4314 -> 0 bytes .../js/jdigiclock/images/clock/211-2.png | Bin 4203 -> 0 bytes .../js/jdigiclock/images/clock/211-3.png | Bin 4135 -> 0 bytes .../webapp/js/jdigiclock/images/clock/3-1.png | Bin 4876 -> 0 bytes .../webapp/js/jdigiclock/images/clock/3-2.png | Bin 4624 -> 0 bytes .../webapp/js/jdigiclock/images/clock/3-3.png | Bin 4267 -> 0 bytes .../webapp/js/jdigiclock/images/clock/3.png | Bin 5111 -> 0 bytes .../js/jdigiclock/images/clock/31-1.png | Bin 5167 -> 0 bytes .../js/jdigiclock/images/clock/31-2.png | Bin 5154 -> 0 bytes .../js/jdigiclock/images/clock/31-3.png | Bin 4992 -> 0 bytes .../js/jdigiclock/images/clock/311-1.png | Bin 4515 -> 0 bytes .../js/jdigiclock/images/clock/311-2.png | Bin 4370 -> 0 bytes .../js/jdigiclock/images/clock/311-3.png | Bin 4315 -> 0 bytes .../webapp/js/jdigiclock/images/clock/4-1.png | Bin 4007 -> 0 bytes .../webapp/js/jdigiclock/images/clock/4-2.png | Bin 4360 -> 0 bytes .../webapp/js/jdigiclock/images/clock/4-3.png | Bin 4465 -> 0 bytes .../webapp/js/jdigiclock/images/clock/4.png | Bin 4043 -> 0 bytes .../js/jdigiclock/images/clock/41-1.png | Bin 4016 -> 0 bytes .../js/jdigiclock/images/clock/41-2.png | Bin 4030 -> 0 bytes .../js/jdigiclock/images/clock/41-3.png | Bin 3953 -> 0 bytes .../webapp/js/jdigiclock/images/clock/5-1.png | Bin 4976 -> 0 bytes .../webapp/js/jdigiclock/images/clock/5-2.png | Bin 5381 -> 0 bytes .../webapp/js/jdigiclock/images/clock/5-3.png | Bin 5233 -> 0 bytes .../webapp/js/jdigiclock/images/clock/5.png | Bin 4828 -> 0 bytes .../js/jdigiclock/images/clock/51-1.png | Bin 4617 -> 0 bytes .../js/jdigiclock/images/clock/51-2.png | Bin 4913 -> 0 bytes .../js/jdigiclock/images/clock/51-3.png | Bin 4714 -> 0 bytes .../js/jdigiclock/images/clock/511-1.png | Bin 4366 -> 0 bytes .../js/jdigiclock/images/clock/511-2.png | Bin 4343 -> 0 bytes .../js/jdigiclock/images/clock/511-3.png | Bin 4291 -> 0 bytes .../webapp/js/jdigiclock/images/clock/6-1.png | Bin 5006 -> 0 bytes .../webapp/js/jdigiclock/images/clock/6-2.png | Bin 4695 -> 0 bytes .../webapp/js/jdigiclock/images/clock/6-3.png | Bin 4327 -> 0 bytes .../webapp/js/jdigiclock/images/clock/6.png | Bin 5364 -> 0 bytes .../webapp/js/jdigiclock/images/clock/7-1.png | Bin 4378 -> 0 bytes .../webapp/js/jdigiclock/images/clock/7-2.png | Bin 4913 -> 0 bytes .../webapp/js/jdigiclock/images/clock/7-3.png | Bin 5011 -> 0 bytes .../webapp/js/jdigiclock/images/clock/7.png | Bin 4154 -> 0 bytes .../webapp/js/jdigiclock/images/clock/8-1.png | Bin 5405 -> 0 bytes .../webapp/js/jdigiclock/images/clock/8-2.png | Bin 5323 -> 0 bytes .../webapp/js/jdigiclock/images/clock/8-3.png | Bin 5155 -> 0 bytes .../webapp/js/jdigiclock/images/clock/8.png | Bin 5459 -> 0 bytes .../webapp/js/jdigiclock/images/clock/9-1.png | Bin 5363 -> 0 bytes .../webapp/js/jdigiclock/images/clock/9-2.png | Bin 5092 -> 0 bytes .../webapp/js/jdigiclock/images/clock/9-3.png | Bin 4831 -> 0 bytes .../webapp/js/jdigiclock/images/clock/9.png | Bin 5321 -> 0 bytes .../webapp/js/jdigiclock/images/clock/am.png | Bin 3384 -> 0 bytes .../webapp/js/jdigiclock/images/clock/apm.png | Bin 2794 -> 0 bytes .../jdigiclock/images/clock/clockbg-blank.png | Bin 12521 -> 0 bytes .../js/jdigiclock/images/clock/clockbg1.png | Bin 14830 -> 0 bytes .../js/jdigiclock/images/clock/clockbg2.png | Bin 17778 -> 0 bytes .../js/jdigiclock/images/clock/clockbg3.png | Bin 16096 -> 0 bytes .../js/jdigiclock/images/clock/clockbg4.png | Bin 16418 -> 0 bytes .../js/jdigiclock/images/clock/clockbg5.png | Bin 17263 -> 0 bytes .../js/jdigiclock/images/clock/clockbg6.png | Bin 16625 -> 0 bytes .../webapp/js/jdigiclock/images/clock/pm.png | Bin 3366 -> 0 bytes .../images/htc_hero_wallpaper_01.jpg | Bin 46185 -> 0 bytes .../images/htc_hero_wallpaper_02.jpg | Bin 176438 -> 0 bytes .../webapp/js/jdigiclock/images/icon_left.png | Bin 3335 -> 0 bytes .../js/jdigiclock/images/icon_right.png | Bin 3314 -> 0 bytes .../js/jdigiclock/images/refresh_01.png | Bin 3575 -> 0 bytes .../webapp/js/jdigiclock/images/weather/1.png | Bin 50554 -> 0 bytes .../js/jdigiclock/images/weather/11.png | Bin 60187 -> 0 bytes .../js/jdigiclock/images/weather/12.png | Bin 69100 -> 0 bytes .../js/jdigiclock/images/weather/13.png | Bin 72659 -> 0 bytes .../js/jdigiclock/images/weather/14.png | Bin 70187 -> 0 bytes .../js/jdigiclock/images/weather/15.png | Bin 69934 -> 0 bytes .../js/jdigiclock/images/weather/16.png | Bin 75020 -> 0 bytes .../js/jdigiclock/images/weather/17.png | Bin 75594 -> 0 bytes .../js/jdigiclock/images/weather/18.png | Bin 72761 -> 0 bytes .../js/jdigiclock/images/weather/19.png | Bin 64060 -> 0 bytes .../webapp/js/jdigiclock/images/weather/2.png | Bin 55685 -> 0 bytes .../js/jdigiclock/images/weather/20.png | Bin 67185 -> 0 bytes .../js/jdigiclock/images/weather/21.png | Bin 64119 -> 0 bytes .../js/jdigiclock/images/weather/22.png | Bin 63808 -> 0 bytes .../js/jdigiclock/images/weather/23.png | Bin 66885 -> 0 bytes .../js/jdigiclock/images/weather/24.png | Bin 65480 -> 0 bytes .../js/jdigiclock/images/weather/25.png | Bin 64069 -> 0 bytes .../js/jdigiclock/images/weather/26.png | Bin 75962 -> 0 bytes .../js/jdigiclock/images/weather/27.png | Bin 76074 -> 0 bytes .../js/jdigiclock/images/weather/29.png | Bin 79378 -> 0 bytes .../webapp/js/jdigiclock/images/weather/3.png | Bin 58477 -> 0 bytes .../js/jdigiclock/images/weather/30.png | Bin 46329 -> 0 bytes .../js/jdigiclock/images/weather/31.png | Bin 46113 -> 0 bytes .../js/jdigiclock/images/weather/32.png | Bin 62474 -> 0 bytes .../js/jdigiclock/images/weather/33.png | Bin 30171 -> 0 bytes .../js/jdigiclock/images/weather/34.png | Bin 39633 -> 0 bytes .../js/jdigiclock/images/weather/35.png | Bin 44899 -> 0 bytes .../js/jdigiclock/images/weather/36.png | Bin 53691 -> 0 bytes .../js/jdigiclock/images/weather/37.png | Bin 74056 -> 0 bytes .../js/jdigiclock/images/weather/38.png | Bin 49272 -> 0 bytes .../js/jdigiclock/images/weather/39.png | Bin 68938 -> 0 bytes .../webapp/js/jdigiclock/images/weather/4.png | Bin 63000 -> 0 bytes .../js/jdigiclock/images/weather/40.png | Bin 72244 -> 0 bytes .../js/jdigiclock/images/weather/41.png | Bin 74026 -> 0 bytes .../js/jdigiclock/images/weather/42.png | Bin 75038 -> 0 bytes .../js/jdigiclock/images/weather/43.png | Bin 65716 -> 0 bytes .../js/jdigiclock/images/weather/44.png | Bin 65730 -> 0 bytes .../webapp/js/jdigiclock/images/weather/5.png | Bin 65677 -> 0 bytes .../webapp/js/jdigiclock/images/weather/6.png | Bin 63175 -> 0 bytes .../webapp/js/jdigiclock/images/weather/7.png | Bin 58100 -> 0 bytes .../webapp/js/jdigiclock/images/weather/8.png | Bin 60220 -> 0 bytes .../js/jdigiclock/images/weather/blank.png | Bin 274 -> 0 bytes .../js/jdigiclock/images/weather/na.png | Bin 43034 -> 0 bytes src/main/webapp/js/jdigiclock/index.html | 155 - .../js/jdigiclock/lib/jquery-1.3.2.min.js | 19 - .../js/jdigiclock/lib/jquery.jdigiclock.js | 272 - .../js/jdigiclock/lib/proxy/asp/README.txt | 4 - .../lib/proxy/asp/WeatherProxy.aspx | 1 - .../lib/proxy/asp/WeatherProxy.aspx.cs | 127 - .../proxy/asp/WeatherProxy.aspx.designer.cs | 16 - .../js/jdigiclock/lib/proxy/empty.gitkeep | 3 - .../js/jdigiclock/lib/proxy/php/proxy.php | 40 - src/main/webapp/js/jquery-1.8.0-vsdoc.js | 6981 --------- src/main/webapp/js/jquery-1.8.0.js | 9227 ------------ src/main/webapp/js/jquery-1.8.0.min.js | 2 - src/main/webapp/js/json2.js | 486 - .../js/pages/financial/financial_base.js | 1120 -- src/main/webapp/js/pages/manage/pushBtn.json | 22 - src/main/webapp/js/pages/manage/supplier.js | 761 - .../webapp/js/pages/materials/bill_detail.js | 461 - src/main/webapp/js/pages/materials/in_out.js | 2999 ---- src/main/webapp/js/print/print.html | 21 - src/main/webapp/js/print/print.js | 112 - src/main/webapp/js/webqq/desktop.js | 1112 -- src/main/webapp/js/webqq/jquery-1.7.1.min.js | 4 - .../webapp/js/webqq/jquery-smartMenu-min.js | 10 - .../js/webqq/jquery-ui-1.8.18.custom.min.js | 102 - src/main/webapp/js/webqq/jquery.winResize.js | 68 - src/main/webapp/js/webqq/myLib.js | 142 - src/main/webapp/js/wth.js | 121 - src/main/webapp/login.jsp | 184 - src/main/webapp/logout.jsp | 26 - src/main/webapp/pages/asset/asset.jsp | 1463 -- src/main/webapp/pages/asset/home.jsp | 87 - src/main/webapp/pages/asset/report.jsp | 964 -- src/main/webapp/pages/common/admin.jsp | 24 - src/main/webapp/pages/common/foot.jsp | 19 - src/main/webapp/pages/common/head.jsp | 161 - src/main/webapp/pages/common/home.jsp | 728 - src/main/webapp/pages/common/main.jsp | 131 - src/main/webapp/pages/common/menu.jsp | 237 - .../webapp/pages/common/templateforjsp.jsp | 32 - .../webapp/pages/financial/advance_in.jsp | 162 - src/main/webapp/pages/financial/giro.jsp | 167 - src/main/webapp/pages/financial/item_in.jsp | 170 - src/main/webapp/pages/financial/item_out.jsp | 167 - src/main/webapp/pages/financial/money_in.jsp | 162 - src/main/webapp/pages/financial/money_out.jsp | 161 - src/main/webapp/pages/manage/account.jsp | 635 - src/main/webapp/pages/manage/app.jsp | 570 - src/main/webapp/pages/manage/assetname.jsp | 682 - src/main/webapp/pages/manage/category.jsp | 460 - src/main/webapp/pages/manage/customer.jsp | 198 - src/main/webapp/pages/manage/depot.jsp | 496 - src/main/webapp/pages/manage/depotGift.jsp | 487 - src/main/webapp/pages/manage/functions.jsp | 547 - src/main/webapp/pages/manage/home.jsp | 87 - src/main/webapp/pages/manage/inOutItem.jsp | 471 - src/main/webapp/pages/manage/log.jsp | 281 - src/main/webapp/pages/manage/member.jsp | 198 - src/main/webapp/pages/manage/role.jsp | 482 - src/main/webapp/pages/manage/roleApp.jsp | 139 - .../webapp/pages/manage/roleFunctions.jsp | 138 - src/main/webapp/pages/manage/rolePushBtn.jsp | 265 - src/main/webapp/pages/manage/systemConfig.jsp | 142 - src/main/webapp/pages/manage/unit.jsp | 455 - src/main/webapp/pages/manage/user.jsp | 581 - src/main/webapp/pages/manage/vendor.jsp | 199 - .../pages/materials/allocation_out_list.jsp | 146 - .../webapp/pages/materials/assemble_list.jsp | 146 - .../webapp/pages/materials/bill_detail.jsp | 905 -- .../pages/materials/disassemble_list.jsp | 146 - .../webapp/pages/materials/gift_out_list.jsp | 146 - .../pages/materials/gift_recharge_list.jsp | 146 - src/main/webapp/pages/materials/material.jsp | 1639 -- .../pages/materials/materialProperty.jsp | 301 - .../pages/materials/materialcategory.jsp | 551 - .../webapp/pages/materials/other_in_list.jsp | 157 - .../webapp/pages/materials/other_out_list.jsp | 151 - src/main/webapp/pages/materials/person.jsp | 467 - .../pages/materials/purchase_back_list.jsp | 390 - .../pages/materials/purchase_in_list.jsp | 393 - .../pages/materials/retail_back_list.jsp | 222 - .../pages/materials/retail_out_list.jsp | 253 - .../webapp/pages/materials/sale_back_list.jsp | 285 - .../webapp/pages/materials/sale_out_list.jsp | 289 - src/main/webapp/pages/other/clock.jsp | 145 - src/main/webapp/pages/other/preview.jsp | 42 - .../webapp/pages/reports/account_report.jsp | 316 - .../webapp/pages/reports/buy_in_report.jsp | 256 - .../webapp/pages/reports/customer_account.jsp | 364 - .../pages/reports/gift_manage_report.jsp | 264 - src/main/webapp/pages/reports/in_detail.jsp | 332 - .../pages/reports/in_material_count.jsp | 321 - .../pages/reports/in_out_stock_report.jsp | 422 - src/main/webapp/pages/reports/out_detail.jsp | 332 - .../pages/reports/out_material_count.jsp | 321 - .../webapp/pages/reports/sale_out_report.jsp | 259 - .../webapp/pages/reports/vendor_account.jsp | 364 - src/main/webapp/pages/user/password.jsp | 139 - src/main/webapp/pages/user/userCustomer.jsp | 137 - src/main/webapp/pages/user/userDepot.jsp | 138 - src/main/webapp/pages/user/userRole.jsp | 138 - src/main/webapp/pages/user/userinfo.jsp | 188 - .../upload/images/deskIcon/0000000001.png | Bin 11033 -> 0 bytes .../upload/images/deskIcon/0000000002.png | Bin 1842 -> 0 bytes .../upload/images/deskIcon/0000000003.png | Bin 1776 -> 0 bytes .../upload/images/deskIcon/0000000004.png | Bin 16204 -> 0 bytes .../upload/images/deskIcon/0000000005.png | Bin 11655 -> 0 bytes .../upload/images/deskIcon/0000000006.png | Bin 14269 -> 0 bytes .../upload/images/deskIcon/0000000008.png | Bin 1138 -> 0 bytes .../upload/images/deskIcon/0000000009.png | Bin 1926 -> 0 bytes .../upload/images/deskIcon/0000000010.png | Bin 15115 -> 0 bytes .../upload/images/deskIcon/0000000011.png | Bin 2672 -> 0 bytes .../upload/images/deskIcon/0000000012.png | Bin 2830 -> 0 bytes .../upload/images/deskIcon/0000000013.png | Bin 18552 -> 0 bytes .../upload/images/deskIcon/0000000014.png | Bin 26437 -> 0 bytes .../upload/images/deskIcon/0000000015.png | Bin 21119 -> 0 bytes .../upload/images/deskIcon/0000000016.png | Bin 2825 -> 0 bytes .../upload/images/deskIcon/0000000017.png | Bin 2785 -> 0 bytes .../upload/images/deskIcon/0000000018.jpg | Bin 10350 -> 0 bytes .../upload/images/deskIcon/0000000018.png | Bin 18971 -> 0 bytes .../upload/images/deskIcon/0000000019.png | Bin 25482 -> 0 bytes .../upload/images/deskIcon/0000000020.png | Bin 19375 -> 0 bytes .../upload/images/deskIcon/0000000021.png | Bin 7120 -> 0 bytes .../upload/images/deskIcon/0000000022.png | Bin 142639 -> 0 bytes .../upload/images/deskIcon/0000000023.png | Bin 18482 -> 0 bytes .../upload/images/deskIcon/0000000024.png | Bin 20529 -> 0 bytes .../upload/images/deskIcon/0000000025.png | Bin 20673 -> 0 bytes .../webapp/upload/images/deskIcon/buy.png | Bin 7919 -> 0 bytes .../webapp/upload/images/deskIcon/depot.png | Bin 15412 -> 0 bytes .../webapp/upload/images/deskIcon/money.png | Bin 17910 -> 0 bytes .../upload/images/deskIcon/resizeApi.png | Bin 8864 -> 0 bytes .../webapp/upload/images/deskIcon/sale.png | Bin 9097 -> 0 bytes src/test/java/Test.java | 12 + src/test/java/com/jsh/test/MyRunnable.java | 9 - src/test/java/com/jsh/test/MyThread.java | 10 - src/test/java/com/jsh/test/Test.java | 8 - src/test/resources/generatorConfig.xml | 68 + 1672 files changed, 52804 insertions(+), 156085 deletions(-) create mode 100644 src/main/assembly/package.xml create mode 100644 src/main/conf/jshERPStart.bat create mode 100644 src/main/conf/jshERPStart.sh delete mode 100644 src/main/java/com/jsh/action/asset/AssetAction.java delete mode 100644 src/main/java/com/jsh/action/asset/ReportAction.java delete mode 100644 src/main/java/com/jsh/action/basic/AccountAction.java delete mode 100644 src/main/java/com/jsh/action/basic/AppAction.java delete mode 100644 src/main/java/com/jsh/action/basic/AssetNameAction.java delete mode 100644 src/main/java/com/jsh/action/basic/CategoryAction.java delete mode 100644 src/main/java/com/jsh/action/basic/DepotAction.java delete mode 100644 src/main/java/com/jsh/action/basic/FunctionsAction.java delete mode 100644 src/main/java/com/jsh/action/basic/InOutItemAction.java delete mode 100644 src/main/java/com/jsh/action/basic/LogAction.java delete mode 100644 src/main/java/com/jsh/action/basic/RoleAction.java delete mode 100644 src/main/java/com/jsh/action/basic/SupplierAction.java delete mode 100644 src/main/java/com/jsh/action/basic/SystemConfigAction.java delete mode 100644 src/main/java/com/jsh/action/basic/UnitAction.java delete mode 100644 src/main/java/com/jsh/action/basic/UserAction.java delete mode 100644 src/main/java/com/jsh/action/basic/UserBusinessAction.java delete mode 100644 src/main/java/com/jsh/action/materials/AccountHeadAction.java delete mode 100644 src/main/java/com/jsh/action/materials/AccountItemAction.java delete mode 100644 src/main/java/com/jsh/action/materials/DepotHeadAction.java delete mode 100644 src/main/java/com/jsh/action/materials/DepotItemAction.java delete mode 100644 src/main/java/com/jsh/action/materials/MaterialAction.java delete mode 100644 src/main/java/com/jsh/action/materials/MaterialCategoryAction.java delete mode 100644 src/main/java/com/jsh/action/materials/MaterialPropertyAction.java delete mode 100644 src/main/java/com/jsh/action/materials/PersonAction.java delete mode 100644 src/main/java/com/jsh/base/BaseAction.java delete mode 100644 src/main/java/com/jsh/base/BaseDAO.java delete mode 100644 src/main/java/com/jsh/base/BaseIDAO.java delete mode 100644 src/main/java/com/jsh/base/BaseIService.java delete mode 100644 src/main/java/com/jsh/base/BaseService.java delete mode 100644 src/main/java/com/jsh/base/Log.java delete mode 100644 src/main/java/com/jsh/dao/asset/AssetDAO.java delete mode 100644 src/main/java/com/jsh/dao/asset/AssetIDAO.java delete mode 100644 src/main/java/com/jsh/dao/asset/ReportDAO.java delete mode 100644 src/main/java/com/jsh/dao/asset/ReportIDAO.java delete mode 100644 src/main/java/com/jsh/dao/basic/AccountDAO.java delete mode 100644 src/main/java/com/jsh/dao/basic/AccountIDAO.java delete mode 100644 src/main/java/com/jsh/dao/basic/AppDAO.java delete mode 100644 src/main/java/com/jsh/dao/basic/AppIDAO.java delete mode 100644 src/main/java/com/jsh/dao/basic/AssetNameDAO.java delete mode 100644 src/main/java/com/jsh/dao/basic/AssetNameIDAO.java delete mode 100644 src/main/java/com/jsh/dao/basic/CategoryDAO.java delete mode 100644 src/main/java/com/jsh/dao/basic/CategoryIDAO.java delete mode 100644 src/main/java/com/jsh/dao/basic/DepotDAO.java delete mode 100644 src/main/java/com/jsh/dao/basic/DepotIDAO.java delete mode 100644 src/main/java/com/jsh/dao/basic/FunctionsDAO.java delete mode 100644 src/main/java/com/jsh/dao/basic/FunctionsIDAO.java delete mode 100644 src/main/java/com/jsh/dao/basic/InOutItemDAO.java delete mode 100644 src/main/java/com/jsh/dao/basic/InOutItemIDAO.java delete mode 100644 src/main/java/com/jsh/dao/basic/LogDAO.java delete mode 100644 src/main/java/com/jsh/dao/basic/LogIDAO.java delete mode 100644 src/main/java/com/jsh/dao/basic/RoleDAO.java delete mode 100644 src/main/java/com/jsh/dao/basic/RoleIDAO.java delete mode 100644 src/main/java/com/jsh/dao/basic/SupplierDAO.java delete mode 100644 src/main/java/com/jsh/dao/basic/SupplierIDAO.java delete mode 100644 src/main/java/com/jsh/dao/basic/SystemConfigDAO.java delete mode 100644 src/main/java/com/jsh/dao/basic/SystemConfigIDAO.java delete mode 100644 src/main/java/com/jsh/dao/basic/UnitDAO.java delete mode 100644 src/main/java/com/jsh/dao/basic/UnitIDAO.java delete mode 100644 src/main/java/com/jsh/dao/basic/UserBusinessDAO.java delete mode 100644 src/main/java/com/jsh/dao/basic/UserBusinessIDAO.java delete mode 100644 src/main/java/com/jsh/dao/basic/UserDAO.java delete mode 100644 src/main/java/com/jsh/dao/basic/UserIDAO.java delete mode 100644 src/main/java/com/jsh/dao/materials/AccountHeadDAO.java delete mode 100644 src/main/java/com/jsh/dao/materials/AccountHeadIDAO.java delete mode 100644 src/main/java/com/jsh/dao/materials/AccountItemDAO.java delete mode 100644 src/main/java/com/jsh/dao/materials/AccountItemIDAO.java delete mode 100644 src/main/java/com/jsh/dao/materials/DepotHeadDAO.java delete mode 100644 src/main/java/com/jsh/dao/materials/DepotHeadIDAO.java delete mode 100644 src/main/java/com/jsh/dao/materials/DepotItemDAO.java delete mode 100644 src/main/java/com/jsh/dao/materials/DepotItemIDAO.java delete mode 100644 src/main/java/com/jsh/dao/materials/MaterialCategoryDAO.java delete mode 100644 src/main/java/com/jsh/dao/materials/MaterialCategoryIDAO.java delete mode 100644 src/main/java/com/jsh/dao/materials/MaterialDAO.java delete mode 100644 src/main/java/com/jsh/dao/materials/MaterialIDAO.java delete mode 100644 src/main/java/com/jsh/dao/materials/MaterialPropertyDAO.java delete mode 100644 src/main/java/com/jsh/dao/materials/MaterialPropertyIDAO.java delete mode 100644 src/main/java/com/jsh/dao/materials/PersonDAO.java delete mode 100644 src/main/java/com/jsh/dao/materials/PersonIDAO.java create mode 100644 src/main/java/com/jsh/erp/ErpApplication.java create mode 100644 src/main/java/com/jsh/erp/config/DbConfig.java create mode 100644 src/main/java/com/jsh/erp/config/WebConfig.java create mode 100644 src/main/java/com/jsh/erp/controller/AccountController.java create mode 100644 src/main/java/com/jsh/erp/controller/AccountHeadController.java create mode 100644 src/main/java/com/jsh/erp/controller/AccountItemController.java create mode 100644 src/main/java/com/jsh/erp/controller/AppController.java create mode 100644 src/main/java/com/jsh/erp/controller/DepotController.java create mode 100644 src/main/java/com/jsh/erp/controller/DepotHeadController.java create mode 100644 src/main/java/com/jsh/erp/controller/DepotItemController.java create mode 100644 src/main/java/com/jsh/erp/controller/FunctionsController.java create mode 100644 src/main/java/com/jsh/erp/controller/InOutItemController.java create mode 100644 src/main/java/com/jsh/erp/controller/MaterialCategoryController.java create mode 100644 src/main/java/com/jsh/erp/controller/MaterialController.java create mode 100644 src/main/java/com/jsh/erp/controller/PersonController.java create mode 100644 src/main/java/com/jsh/erp/controller/ResourceController.java create mode 100644 src/main/java/com/jsh/erp/controller/RoleController.java create mode 100644 src/main/java/com/jsh/erp/controller/SupplierController.java create mode 100644 src/main/java/com/jsh/erp/controller/UserBusinessController.java create mode 100644 src/main/java/com/jsh/erp/controller/UserController.java create mode 100644 src/main/java/com/jsh/erp/datasource/entities/Account.java create mode 100644 src/main/java/com/jsh/erp/datasource/entities/AccountExample.java create mode 100644 src/main/java/com/jsh/erp/datasource/entities/AccountHead.java create mode 100644 src/main/java/com/jsh/erp/datasource/entities/AccountHeadExample.java create mode 100644 src/main/java/com/jsh/erp/datasource/entities/AccountHeadVo4ListEx.java create mode 100644 src/main/java/com/jsh/erp/datasource/entities/AccountItem.java create mode 100644 src/main/java/com/jsh/erp/datasource/entities/AccountItemExample.java create mode 100644 src/main/java/com/jsh/erp/datasource/entities/App.java create mode 100644 src/main/java/com/jsh/erp/datasource/entities/AppExample.java create mode 100644 src/main/java/com/jsh/erp/datasource/entities/Asset.java create mode 100644 src/main/java/com/jsh/erp/datasource/entities/AssetCategory.java create mode 100644 src/main/java/com/jsh/erp/datasource/entities/AssetCategoryExample.java create mode 100644 src/main/java/com/jsh/erp/datasource/entities/AssetExample.java create mode 100644 src/main/java/com/jsh/erp/datasource/entities/AssetName.java create mode 100644 src/main/java/com/jsh/erp/datasource/entities/AssetNameExample.java create mode 100644 src/main/java/com/jsh/erp/datasource/entities/Depot.java create mode 100644 src/main/java/com/jsh/erp/datasource/entities/DepotExample.java create mode 100644 src/main/java/com/jsh/erp/datasource/entities/DepotHead.java create mode 100644 src/main/java/com/jsh/erp/datasource/entities/DepotHeadExample.java create mode 100644 src/main/java/com/jsh/erp/datasource/entities/DepotItem.java create mode 100644 src/main/java/com/jsh/erp/datasource/entities/DepotItemExample.java create mode 100644 src/main/java/com/jsh/erp/datasource/entities/DepotItemVo4DetailByTypeAndMId.java create mode 100644 src/main/java/com/jsh/erp/datasource/entities/DepotItemVo4HeaderId.java create mode 100644 src/main/java/com/jsh/erp/datasource/entities/DepotItemVo4Material.java create mode 100644 src/main/java/com/jsh/erp/datasource/entities/DepotItemVo4WithInfoEx.java create mode 100644 src/main/java/com/jsh/erp/datasource/entities/Functions.java create mode 100644 src/main/java/com/jsh/erp/datasource/entities/FunctionsExample.java create mode 100644 src/main/java/com/jsh/erp/datasource/entities/InOutItem.java create mode 100644 src/main/java/com/jsh/erp/datasource/entities/InOutItemExample.java create mode 100644 src/main/java/com/jsh/erp/datasource/entities/Log.java create mode 100644 src/main/java/com/jsh/erp/datasource/entities/LogExample.java create mode 100644 src/main/java/com/jsh/erp/datasource/entities/Material.java create mode 100644 src/main/java/com/jsh/erp/datasource/entities/MaterialCategory.java create mode 100644 src/main/java/com/jsh/erp/datasource/entities/MaterialCategoryExample.java create mode 100644 src/main/java/com/jsh/erp/datasource/entities/MaterialExample.java create mode 100644 src/main/java/com/jsh/erp/datasource/entities/MaterialProperty.java create mode 100644 src/main/java/com/jsh/erp/datasource/entities/MaterialPropertyExample.java create mode 100644 src/main/java/com/jsh/erp/datasource/entities/MaterialVo4Unit.java create mode 100644 src/main/java/com/jsh/erp/datasource/entities/Person.java create mode 100644 src/main/java/com/jsh/erp/datasource/entities/PersonExample.java create mode 100644 src/main/java/com/jsh/erp/datasource/entities/Role.java create mode 100644 src/main/java/com/jsh/erp/datasource/entities/RoleExample.java create mode 100644 src/main/java/com/jsh/erp/datasource/entities/Supplier.java create mode 100644 src/main/java/com/jsh/erp/datasource/entities/SupplierExample.java create mode 100644 src/main/java/com/jsh/erp/datasource/entities/SystemConfig.java create mode 100644 src/main/java/com/jsh/erp/datasource/entities/SystemConfigExample.java create mode 100644 src/main/java/com/jsh/erp/datasource/entities/Unit.java create mode 100644 src/main/java/com/jsh/erp/datasource/entities/UnitExample.java create mode 100644 src/main/java/com/jsh/erp/datasource/entities/User.java create mode 100644 src/main/java/com/jsh/erp/datasource/entities/UserBusiness.java create mode 100644 src/main/java/com/jsh/erp/datasource/entities/UserBusinessExample.java create mode 100644 src/main/java/com/jsh/erp/datasource/entities/UserExample.java create mode 100644 src/main/java/com/jsh/erp/datasource/mappers/AccountHeadMapper.java create mode 100644 src/main/java/com/jsh/erp/datasource/mappers/AccountItemMapper.java create mode 100644 src/main/java/com/jsh/erp/datasource/mappers/AccountMapper.java create mode 100644 src/main/java/com/jsh/erp/datasource/mappers/AppMapper.java create mode 100644 src/main/java/com/jsh/erp/datasource/mappers/AssetCategoryMapper.java create mode 100644 src/main/java/com/jsh/erp/datasource/mappers/AssetMapper.java create mode 100644 src/main/java/com/jsh/erp/datasource/mappers/AssetNameMapper.java create mode 100644 src/main/java/com/jsh/erp/datasource/mappers/DepotHeadMapper.java create mode 100644 src/main/java/com/jsh/erp/datasource/mappers/DepotItemMapper.java create mode 100644 src/main/java/com/jsh/erp/datasource/mappers/DepotMapper.java create mode 100644 src/main/java/com/jsh/erp/datasource/mappers/FunctionsMapper.java create mode 100644 src/main/java/com/jsh/erp/datasource/mappers/InOutItemMapper.java create mode 100644 src/main/java/com/jsh/erp/datasource/mappers/LogMapper.java create mode 100644 src/main/java/com/jsh/erp/datasource/mappers/MaterialCategoryMapper.java create mode 100644 src/main/java/com/jsh/erp/datasource/mappers/MaterialMapper.java create mode 100644 src/main/java/com/jsh/erp/datasource/mappers/MaterialPropertyMapper.java create mode 100644 src/main/java/com/jsh/erp/datasource/mappers/PersonMapper.java create mode 100644 src/main/java/com/jsh/erp/datasource/mappers/RoleMapper.java create mode 100644 src/main/java/com/jsh/erp/datasource/mappers/SupplierMapper.java create mode 100644 src/main/java/com/jsh/erp/datasource/mappers/SystemConfigMapper.java create mode 100644 src/main/java/com/jsh/erp/datasource/mappers/UnitMapper.java create mode 100644 src/main/java/com/jsh/erp/datasource/mappers/UserBusinessMapper.java create mode 100644 src/main/java/com/jsh/erp/datasource/mappers/UserMapper.java create mode 100644 src/main/java/com/jsh/erp/datasource/vo/AccountItemVo4List.java create mode 100644 src/main/java/com/jsh/erp/datasource/vo/AccountVo4InOutList.java create mode 100644 src/main/java/com/jsh/erp/datasource/vo/AccountVo4List.java create mode 100644 src/main/java/com/jsh/erp/datasource/vo/DepotHeadVo4InDetail.java create mode 100644 src/main/java/com/jsh/erp/datasource/vo/DepotHeadVo4InOutMCount.java create mode 100644 src/main/java/com/jsh/erp/datasource/vo/DepotHeadVo4List.java create mode 100644 src/main/java/com/jsh/erp/datasource/vo/DepotHeadVo4StatementAccount.java create mode 100644 src/main/java/com/jsh/erp/service/CommonQueryManager.java create mode 100644 src/main/java/com/jsh/erp/service/ICommonQuery.java create mode 100644 src/main/java/com/jsh/erp/service/InterfaceContainer.java create mode 100644 src/main/java/com/jsh/erp/service/ResourceInfo.java create mode 100644 src/main/java/com/jsh/erp/service/account/AccountComponent.java create mode 100644 src/main/java/com/jsh/erp/service/account/AccountResource.java create mode 100644 src/main/java/com/jsh/erp/service/account/AccountService.java create mode 100644 src/main/java/com/jsh/erp/service/accountHead/AccountHeadComponent.java create mode 100644 src/main/java/com/jsh/erp/service/accountHead/AccountHeadResource.java create mode 100644 src/main/java/com/jsh/erp/service/accountHead/AccountHeadService.java create mode 100644 src/main/java/com/jsh/erp/service/accountItem/AccountItemComponent.java create mode 100644 src/main/java/com/jsh/erp/service/accountItem/AccountItemResource.java create mode 100644 src/main/java/com/jsh/erp/service/accountItem/AccountItemService.java create mode 100644 src/main/java/com/jsh/erp/service/app/AppComponent.java create mode 100644 src/main/java/com/jsh/erp/service/app/AppResource.java create mode 100644 src/main/java/com/jsh/erp/service/app/AppService.java create mode 100644 src/main/java/com/jsh/erp/service/depot/DepotComponent.java create mode 100644 src/main/java/com/jsh/erp/service/depot/DepotResource.java create mode 100644 src/main/java/com/jsh/erp/service/depot/DepotService.java create mode 100644 src/main/java/com/jsh/erp/service/depotHead/DepotHeadComponent.java create mode 100644 src/main/java/com/jsh/erp/service/depotHead/DepotHeadResource.java create mode 100644 src/main/java/com/jsh/erp/service/depotHead/DepotHeadService.java create mode 100644 src/main/java/com/jsh/erp/service/depotItem/DepotItemComponent.java create mode 100644 src/main/java/com/jsh/erp/service/depotItem/DepotItemResource.java create mode 100644 src/main/java/com/jsh/erp/service/depotItem/DepotItemService.java create mode 100644 src/main/java/com/jsh/erp/service/functions/FunctionsComponent.java create mode 100644 src/main/java/com/jsh/erp/service/functions/FunctionsResource.java create mode 100644 src/main/java/com/jsh/erp/service/functions/FunctionsService.java create mode 100644 src/main/java/com/jsh/erp/service/inOutItem/InOutItemComponent.java create mode 100644 src/main/java/com/jsh/erp/service/inOutItem/InOutItemResource.java create mode 100644 src/main/java/com/jsh/erp/service/inOutItem/InOutItemService.java create mode 100644 src/main/java/com/jsh/erp/service/log/LogComponent.java create mode 100644 src/main/java/com/jsh/erp/service/log/LogResource.java create mode 100644 src/main/java/com/jsh/erp/service/log/LogService.java create mode 100644 src/main/java/com/jsh/erp/service/material/MaterialComponent.java create mode 100644 src/main/java/com/jsh/erp/service/material/MaterialResource.java create mode 100644 src/main/java/com/jsh/erp/service/material/MaterialService.java create mode 100644 src/main/java/com/jsh/erp/service/materialCategory/MaterialCategoryComponent.java create mode 100644 src/main/java/com/jsh/erp/service/materialCategory/MaterialCategoryResource.java create mode 100644 src/main/java/com/jsh/erp/service/materialCategory/MaterialCategoryService.java create mode 100644 src/main/java/com/jsh/erp/service/materialProperty/MaterialPropertyComponent.java create mode 100644 src/main/java/com/jsh/erp/service/materialProperty/MaterialPropertyResource.java create mode 100644 src/main/java/com/jsh/erp/service/materialProperty/MaterialPropertyService.java create mode 100644 src/main/java/com/jsh/erp/service/person/PersonComponent.java create mode 100644 src/main/java/com/jsh/erp/service/person/PersonResource.java create mode 100644 src/main/java/com/jsh/erp/service/person/PersonService.java create mode 100644 src/main/java/com/jsh/erp/service/role/RoleComponent.java create mode 100644 src/main/java/com/jsh/erp/service/role/RoleResource.java create mode 100644 src/main/java/com/jsh/erp/service/role/RoleService.java create mode 100644 src/main/java/com/jsh/erp/service/supplier/SupplierComponent.java create mode 100644 src/main/java/com/jsh/erp/service/supplier/SupplierResource.java create mode 100644 src/main/java/com/jsh/erp/service/supplier/SupplierService.java create mode 100644 src/main/java/com/jsh/erp/service/systemConfig/SystemConfigComponent.java create mode 100644 src/main/java/com/jsh/erp/service/systemConfig/SystemConfigResource.java create mode 100644 src/main/java/com/jsh/erp/service/systemConfig/SystemConfigService.java create mode 100644 src/main/java/com/jsh/erp/service/unit/UnitComponent.java create mode 100644 src/main/java/com/jsh/erp/service/unit/UnitResource.java create mode 100644 src/main/java/com/jsh/erp/service/unit/UnitService.java create mode 100644 src/main/java/com/jsh/erp/service/user/UserComponent.java create mode 100644 src/main/java/com/jsh/erp/service/user/UserResource.java create mode 100644 src/main/java/com/jsh/erp/service/user/UserService.java create mode 100644 src/main/java/com/jsh/erp/service/userBusiness/UserBusinessComponent.java create mode 100644 src/main/java/com/jsh/erp/service/userBusiness/UserBusinessResource.java create mode 100644 src/main/java/com/jsh/erp/service/userBusiness/UserBusinessService.java create mode 100644 src/main/java/com/jsh/erp/utils/AnnotationUtils.java create mode 100644 src/main/java/com/jsh/erp/utils/BaseResponseInfo.java create mode 100644 src/main/java/com/jsh/erp/utils/ColumnPropertyUtil.java create mode 100644 src/main/java/com/jsh/erp/utils/Constants.java create mode 100644 src/main/java/com/jsh/erp/utils/ErpInfo.java rename src/main/java/com/jsh/{util => erp/utils}/ExceptionCodeConstants.java (96%) create mode 100644 src/main/java/com/jsh/erp/utils/ExtJsonUtils.java rename src/main/java/com/jsh/{util => erp/utils}/JshException.java (98%) create mode 100644 src/main/java/com/jsh/erp/utils/JsonUtils.java create mode 100644 src/main/java/com/jsh/erp/utils/OrderUtils.java create mode 100644 src/main/java/com/jsh/erp/utils/PageQueryInfo.java create mode 100644 src/main/java/com/jsh/erp/utils/ParamUtils.java create mode 100644 src/main/java/com/jsh/erp/utils/QueryUtils.java create mode 100644 src/main/java/com/jsh/erp/utils/RegExpTools.java create mode 100644 src/main/java/com/jsh/erp/utils/ResponseCode.java create mode 100644 src/main/java/com/jsh/erp/utils/ResponseJsonUtil.java create mode 100644 src/main/java/com/jsh/erp/utils/StringUtil.java rename src/main/java/com/jsh/{util => erp/utils}/Tools.java (99%) delete mode 100644 src/main/java/com/jsh/model/po/Account.java delete mode 100644 src/main/java/com/jsh/model/po/AccountHead.java delete mode 100644 src/main/java/com/jsh/model/po/AccountItem.java delete mode 100644 src/main/java/com/jsh/model/po/App.java delete mode 100644 src/main/java/com/jsh/model/po/Asset.java delete mode 100644 src/main/java/com/jsh/model/po/Assetname.java delete mode 100644 src/main/java/com/jsh/model/po/Basicuser.java delete mode 100644 src/main/java/com/jsh/model/po/Category.java delete mode 100644 src/main/java/com/jsh/model/po/Depot.java delete mode 100644 src/main/java/com/jsh/model/po/DepotHead.java delete mode 100644 src/main/java/com/jsh/model/po/DepotItem.java delete mode 100644 src/main/java/com/jsh/model/po/Functions.java delete mode 100644 src/main/java/com/jsh/model/po/InOutItem.java delete mode 100644 src/main/java/com/jsh/model/po/Logdetails.java delete mode 100644 src/main/java/com/jsh/model/po/Material.java delete mode 100644 src/main/java/com/jsh/model/po/MaterialCategory.java delete mode 100644 src/main/java/com/jsh/model/po/MaterialProperty.java delete mode 100644 src/main/java/com/jsh/model/po/Person.java delete mode 100644 src/main/java/com/jsh/model/po/Role.java delete mode 100644 src/main/java/com/jsh/model/po/Supplier.java delete mode 100644 src/main/java/com/jsh/model/po/SystemConfig.java delete mode 100644 src/main/java/com/jsh/model/po/Unit.java delete mode 100644 src/main/java/com/jsh/model/po/UserBusiness.java delete mode 100644 src/main/java/com/jsh/model/vo/asset/AssetModel.java delete mode 100644 src/main/java/com/jsh/model/vo/asset/AssetShowModel.java delete mode 100644 src/main/java/com/jsh/model/vo/asset/ReportModel.java delete mode 100644 src/main/java/com/jsh/model/vo/asset/ReportShowModel.java delete mode 100644 src/main/java/com/jsh/model/vo/basic/AccountModel.java delete mode 100644 src/main/java/com/jsh/model/vo/basic/AccountShowModel.java delete mode 100644 src/main/java/com/jsh/model/vo/basic/AppModel.java delete mode 100644 src/main/java/com/jsh/model/vo/basic/AppShowModel.java delete mode 100644 src/main/java/com/jsh/model/vo/basic/AssetNameModel.java delete mode 100644 src/main/java/com/jsh/model/vo/basic/AssetNameShowModel.java delete mode 100644 src/main/java/com/jsh/model/vo/basic/CategoryModel.java delete mode 100644 src/main/java/com/jsh/model/vo/basic/CategoryShowModel.java delete mode 100644 src/main/java/com/jsh/model/vo/basic/DepotModel.java delete mode 100644 src/main/java/com/jsh/model/vo/basic/DepotShowModel.java delete mode 100644 src/main/java/com/jsh/model/vo/basic/FunctionsModel.java delete mode 100644 src/main/java/com/jsh/model/vo/basic/FunctionsShowModel.java delete mode 100644 src/main/java/com/jsh/model/vo/basic/InOutItemModel.java delete mode 100644 src/main/java/com/jsh/model/vo/basic/InOutItemShowModel.java delete mode 100644 src/main/java/com/jsh/model/vo/basic/LogModel.java delete mode 100644 src/main/java/com/jsh/model/vo/basic/LogShowModel.java delete mode 100644 src/main/java/com/jsh/model/vo/basic/RoleModel.java delete mode 100644 src/main/java/com/jsh/model/vo/basic/RoleShowModel.java delete mode 100644 src/main/java/com/jsh/model/vo/basic/SupplierModel.java delete mode 100644 src/main/java/com/jsh/model/vo/basic/SupplierShowModel.java delete mode 100644 src/main/java/com/jsh/model/vo/basic/SystemConfigModel.java delete mode 100644 src/main/java/com/jsh/model/vo/basic/SystemConfigShowModel.java delete mode 100644 src/main/java/com/jsh/model/vo/basic/UnitModel.java delete mode 100644 src/main/java/com/jsh/model/vo/basic/UnitShowModel.java delete mode 100644 src/main/java/com/jsh/model/vo/basic/UserBusinessModel.java delete mode 100644 src/main/java/com/jsh/model/vo/basic/UserBusinessShowModel.java delete mode 100644 src/main/java/com/jsh/model/vo/basic/UserModel.java delete mode 100644 src/main/java/com/jsh/model/vo/basic/UserShowModel.java delete mode 100644 src/main/java/com/jsh/model/vo/materials/AccountHeadModel.java delete mode 100644 src/main/java/com/jsh/model/vo/materials/AccountHeadShowModel.java delete mode 100644 src/main/java/com/jsh/model/vo/materials/AccountItemModel.java delete mode 100644 src/main/java/com/jsh/model/vo/materials/AccountItemShowModel.java delete mode 100644 src/main/java/com/jsh/model/vo/materials/DepotHeadModel.java delete mode 100644 src/main/java/com/jsh/model/vo/materials/DepotHeadShowModel.java delete mode 100644 src/main/java/com/jsh/model/vo/materials/DepotItemModel.java delete mode 100644 src/main/java/com/jsh/model/vo/materials/DepotItemShowModel.java delete mode 100644 src/main/java/com/jsh/model/vo/materials/MaterialCategoryModel.java delete mode 100644 src/main/java/com/jsh/model/vo/materials/MaterialCategoryShowModel.java delete mode 100644 src/main/java/com/jsh/model/vo/materials/MaterialModel.java delete mode 100644 src/main/java/com/jsh/model/vo/materials/MaterialPropertyModel.java delete mode 100644 src/main/java/com/jsh/model/vo/materials/MaterialPropertyShowModel.java delete mode 100644 src/main/java/com/jsh/model/vo/materials/MaterialShowModel.java delete mode 100644 src/main/java/com/jsh/model/vo/materials/PersonModel.java delete mode 100644 src/main/java/com/jsh/model/vo/materials/PersonShowModel.java delete mode 100644 src/main/java/com/jsh/service/asset/AssetIService.java delete mode 100644 src/main/java/com/jsh/service/asset/AssetService.java delete mode 100644 src/main/java/com/jsh/service/asset/ReportIService.java delete mode 100644 src/main/java/com/jsh/service/asset/ReportService.java delete mode 100644 src/main/java/com/jsh/service/basic/AccountIService.java delete mode 100644 src/main/java/com/jsh/service/basic/AccountService.java delete mode 100644 src/main/java/com/jsh/service/basic/AppIService.java delete mode 100644 src/main/java/com/jsh/service/basic/AppService.java delete mode 100644 src/main/java/com/jsh/service/basic/AssetNameIService.java delete mode 100644 src/main/java/com/jsh/service/basic/AssetNameService.java delete mode 100644 src/main/java/com/jsh/service/basic/CategoryIService.java delete mode 100644 src/main/java/com/jsh/service/basic/CategoryService.java delete mode 100644 src/main/java/com/jsh/service/basic/DepotIService.java delete mode 100644 src/main/java/com/jsh/service/basic/DepotService.java delete mode 100644 src/main/java/com/jsh/service/basic/FunctionsIService.java delete mode 100644 src/main/java/com/jsh/service/basic/FunctionsService.java delete mode 100644 src/main/java/com/jsh/service/basic/InOutItemIService.java delete mode 100644 src/main/java/com/jsh/service/basic/InOutItemService.java delete mode 100644 src/main/java/com/jsh/service/basic/LogIService.java delete mode 100644 src/main/java/com/jsh/service/basic/LogService.java delete mode 100644 src/main/java/com/jsh/service/basic/RoleIService.java delete mode 100644 src/main/java/com/jsh/service/basic/RoleService.java delete mode 100644 src/main/java/com/jsh/service/basic/SupplierIService.java delete mode 100644 src/main/java/com/jsh/service/basic/SupplierService.java delete mode 100644 src/main/java/com/jsh/service/basic/SystemConfigIService.java delete mode 100644 src/main/java/com/jsh/service/basic/SystemConfigService.java delete mode 100644 src/main/java/com/jsh/service/basic/UnitIService.java delete mode 100644 src/main/java/com/jsh/service/basic/UnitService.java delete mode 100644 src/main/java/com/jsh/service/basic/UserBusinessIService.java delete mode 100644 src/main/java/com/jsh/service/basic/UserBusinessService.java delete mode 100644 src/main/java/com/jsh/service/basic/UserIService.java delete mode 100644 src/main/java/com/jsh/service/basic/UserService.java delete mode 100644 src/main/java/com/jsh/service/materials/AccountHeadIService.java delete mode 100644 src/main/java/com/jsh/service/materials/AccountHeadService.java delete mode 100644 src/main/java/com/jsh/service/materials/AccountItemIService.java delete mode 100644 src/main/java/com/jsh/service/materials/AccountItemService.java delete mode 100644 src/main/java/com/jsh/service/materials/DepotHeadIService.java delete mode 100644 src/main/java/com/jsh/service/materials/DepotHeadService.java delete mode 100644 src/main/java/com/jsh/service/materials/DepotItemIService.java delete mode 100644 src/main/java/com/jsh/service/materials/DepotItemService.java delete mode 100644 src/main/java/com/jsh/service/materials/MaterialCategoryIService.java delete mode 100644 src/main/java/com/jsh/service/materials/MaterialCategoryService.java delete mode 100644 src/main/java/com/jsh/service/materials/MaterialIService.java delete mode 100644 src/main/java/com/jsh/service/materials/MaterialPropertyIService.java delete mode 100644 src/main/java/com/jsh/service/materials/MaterialPropertyService.java delete mode 100644 src/main/java/com/jsh/service/materials/MaterialService.java delete mode 100644 src/main/java/com/jsh/service/materials/PersonIService.java delete mode 100644 src/main/java/com/jsh/service/materials/PersonService.java delete mode 100644 src/main/java/com/jsh/util/AssetConstants.java delete mode 100644 src/main/java/com/jsh/util/BeanFactoryUtil.java delete mode 100644 src/main/java/com/jsh/util/JshConstants.java delete mode 100644 src/main/java/com/jsh/util/MaterialConstants.java delete mode 100644 src/main/java/com/jsh/util/OpenSessionInViewFilterExtend.java delete mode 100644 src/main/java/com/jsh/util/PageUtil.java delete mode 100644 src/main/java/com/jsh/util/PathTool.java delete mode 100644 src/main/java/com/jsh/util/SearchConditionUtil.java delete mode 100644 src/main/java/com/jsh/util/SessionFilter.java delete mode 100644 src/main/java/com/jsh/util/SupplierConstants.java create mode 100644 src/main/resources/application.yml delete mode 100644 src/main/resources/common/email.properties delete mode 100644 src/main/resources/common/jdbc.properties delete mode 100644 src/main/resources/common/limitbasicdata.properties delete mode 100644 src/main/resources/hibernate/Account.hbm.xml delete mode 100644 src/main/resources/hibernate/AccountHead.hbm.xml delete mode 100644 src/main/resources/hibernate/AccountItem.hbm.xml delete mode 100644 src/main/resources/hibernate/App.hbm.xml delete mode 100644 src/main/resources/hibernate/Asset.hbm.xml delete mode 100644 src/main/resources/hibernate/Assetname.hbm.xml delete mode 100644 src/main/resources/hibernate/Basicuser.hbm.xml delete mode 100644 src/main/resources/hibernate/Category.hbm.xml delete mode 100644 src/main/resources/hibernate/Depot.hbm.xml delete mode 100644 src/main/resources/hibernate/DepotHead.hbm.xml delete mode 100644 src/main/resources/hibernate/DepotItem.hbm.xml delete mode 100644 src/main/resources/hibernate/Functions.hbm.xml delete mode 100644 src/main/resources/hibernate/InOutItem.hbm.xml delete mode 100644 src/main/resources/hibernate/Logdetails.hbm.xml delete mode 100644 src/main/resources/hibernate/Material.hbm.xml delete mode 100644 src/main/resources/hibernate/MaterialCategory.hbm.xml delete mode 100644 src/main/resources/hibernate/MaterialProperty.hbm.xml delete mode 100644 src/main/resources/hibernate/Person.hbm.xml delete mode 100644 src/main/resources/hibernate/Role.hbm.xml delete mode 100644 src/main/resources/hibernate/Supplier.hbm.xml delete mode 100644 src/main/resources/hibernate/SystemConfig.hbm.xml delete mode 100644 src/main/resources/hibernate/Unit.hbm.xml delete mode 100644 src/main/resources/hibernate/UserBusiness.hbm.xml delete mode 100644 src/main/resources/hibernate/hibernate.cfg.xml delete mode 100644 src/main/resources/i18n/messages_en_US.properties delete mode 100644 src/main/resources/i18n/messages_zh_CN.properties delete mode 100644 src/main/resources/log4j/log4j.properties create mode 100644 src/main/resources/mapper_xml/AccountHeadMapper.xml create mode 100644 src/main/resources/mapper_xml/AccountHeadMapperEx.xml create mode 100644 src/main/resources/mapper_xml/AccountItemMapper.xml create mode 100644 src/main/resources/mapper_xml/AccountItemMapperEx.xml create mode 100644 src/main/resources/mapper_xml/AccountMapper.xml create mode 100644 src/main/resources/mapper_xml/AccountMapperEx.xml create mode 100644 src/main/resources/mapper_xml/AppMapper.xml create mode 100644 src/main/resources/mapper_xml/AppMapperEx.xml create mode 100644 src/main/resources/mapper_xml/AssetCategoryMapper.xml create mode 100644 src/main/resources/mapper_xml/AssetMapper.xml create mode 100644 src/main/resources/mapper_xml/AssetNameMapper.xml create mode 100644 src/main/resources/mapper_xml/DepotHeadMapper.xml create mode 100644 src/main/resources/mapper_xml/DepotHeadMapperEx.xml create mode 100644 src/main/resources/mapper_xml/DepotItemMapper.xml create mode 100644 src/main/resources/mapper_xml/DepotItemMapperEx.xml create mode 100644 src/main/resources/mapper_xml/DepotMapper.xml create mode 100644 src/main/resources/mapper_xml/DepotMapperEx.xml create mode 100644 src/main/resources/mapper_xml/FunctionsMapper.xml create mode 100644 src/main/resources/mapper_xml/FunctionsMapperEx.xml create mode 100644 src/main/resources/mapper_xml/InOutItemMapper.xml create mode 100644 src/main/resources/mapper_xml/InOutItemMapperEx.xml create mode 100644 src/main/resources/mapper_xml/LogMapper.xml create mode 100644 src/main/resources/mapper_xml/LogMapperEx.xml create mode 100644 src/main/resources/mapper_xml/MaterialCategoryMapper.xml create mode 100644 src/main/resources/mapper_xml/MaterialCategoryMapperEx.xml create mode 100644 src/main/resources/mapper_xml/MaterialMapper.xml create mode 100644 src/main/resources/mapper_xml/MaterialMapperEx.xml create mode 100644 src/main/resources/mapper_xml/MaterialPropertyMapper.xml create mode 100644 src/main/resources/mapper_xml/MaterialPropertyMapperEx.xml create mode 100644 src/main/resources/mapper_xml/PersonMapper.xml create mode 100644 src/main/resources/mapper_xml/PersonMapperEx.xml create mode 100644 src/main/resources/mapper_xml/RoleMapper.xml create mode 100644 src/main/resources/mapper_xml/RoleMapperEx.xml create mode 100644 src/main/resources/mapper_xml/SupplierMapper.xml create mode 100644 src/main/resources/mapper_xml/SupplierMapperEx.xml create mode 100644 src/main/resources/mapper_xml/SystemConfigMapper.xml create mode 100644 src/main/resources/mapper_xml/SystemConfigMapperEx.xml create mode 100644 src/main/resources/mapper_xml/UnitMapper.xml create mode 100644 src/main/resources/mapper_xml/UnitMapperEx.xml create mode 100644 src/main/resources/mapper_xml/UserBusinessMapper.xml create mode 100644 src/main/resources/mapper_xml/UserMapper.xml create mode 100644 src/main/resources/mapper_xml/UserMapperEx.xml delete mode 100644 src/main/resources/spring/basic-applicationContext.xml delete mode 100644 src/main/resources/spring/dao-applicationContext.xml delete mode 100644 src/main/resources/spring/quartz-applicationContext.xml.xml delete mode 100644 src/main/resources/struts2/account-struts.xml delete mode 100644 src/main/resources/struts2/accountHead-struts.xml delete mode 100644 src/main/resources/struts2/accountItem-struts.xml delete mode 100644 src/main/resources/struts2/app-struts.xml delete mode 100644 src/main/resources/struts2/asset-struts.xml delete mode 100644 src/main/resources/struts2/assetname-struts.xml delete mode 100644 src/main/resources/struts2/category-struts.xml delete mode 100644 src/main/resources/struts2/channel-struts.xml delete mode 100644 src/main/resources/struts2/depot-struts.xml delete mode 100644 src/main/resources/struts2/depotHead-struts.xml delete mode 100644 src/main/resources/struts2/depotItem-struts.xml delete mode 100644 src/main/resources/struts2/functions-struts.xml delete mode 100644 src/main/resources/struts2/inOutItem-struts.xml delete mode 100644 src/main/resources/struts2/log-struts.xml delete mode 100644 src/main/resources/struts2/material-struts.xml delete mode 100644 src/main/resources/struts2/materialCategory-struts.xml delete mode 100644 src/main/resources/struts2/materialProperty-struts.xml delete mode 100644 src/main/resources/struts2/person-struts.xml delete mode 100644 src/main/resources/struts2/report-struts.xml delete mode 100644 src/main/resources/struts2/role-struts.xml delete mode 100644 src/main/resources/struts2/struts.properties delete mode 100644 src/main/resources/struts2/struts.xml delete mode 100644 src/main/resources/struts2/supplier-struts.xml delete mode 100644 src/main/resources/struts2/systemConfig-struts.xml delete mode 100644 src/main/resources/struts2/unit-struts.xml delete mode 100644 src/main/resources/struts2/user-struts.xml delete mode 100644 src/main/resources/struts2/userBusiness-struts.xml delete mode 100644 src/main/webapp/META-INF/MANIFEST.MF delete mode 100644 src/main/webapp/WEB-INF/lib/hibernate3-1.0.0.jar delete mode 100644 src/main/webapp/WEB-INF/lib/javaee-1.0.0.jar delete mode 100644 src/main/webapp/WEB-INF/lib/jta-1.1.jar delete mode 100644 src/main/webapp/WEB-INF/web.xml delete mode 100644 src/main/webapp/css/bill_detail.css delete mode 100644 src/main/webapp/css/common.css delete mode 100644 src/main/webapp/css/css.css delete mode 100644 src/main/webapp/css/in_out.css delete mode 100644 src/main/webapp/css/material.css delete mode 100644 src/main/webapp/css/retail_list.css delete mode 100644 src/main/webapp/images/004.jpg delete mode 100644 src/main/webapp/images/007.png delete mode 100644 src/main/webapp/images/020.png delete mode 100644 src/main/webapp/images/657.png delete mode 100644 src/main/webapp/images/680.png delete mode 100644 src/main/webapp/images/894.png delete mode 100644 src/main/webapp/images/a1.gif delete mode 100644 src/main/webapp/images/admin.png delete mode 100644 src/main/webapp/images/bg_actlist.jpg delete mode 100644 src/main/webapp/images/bg_actlistcon.gif delete mode 100644 src/main/webapp/images/bg_actliston.jpg delete mode 100644 src/main/webapp/images/bg_btn.gif delete mode 100644 src/main/webapp/images/bg_btnl.gif delete mode 100644 src/main/webapp/images/bg_btnlon.gif delete mode 100644 src/main/webapp/images/bg_btnon.gif delete mode 100644 src/main/webapp/images/bg_btnr.gif delete mode 100644 src/main/webapp/images/bg_btnron.gif delete mode 100644 src/main/webapp/images/bg_cntnav.jpg delete mode 100644 src/main/webapp/images/bg_datath.jpg delete mode 100644 src/main/webapp/images/bg_foot.jpg delete mode 100644 src/main/webapp/images/bg_head.jpg delete mode 100644 src/main/webapp/images/bg_keycode.jpg delete mode 100644 src/main/webapp/images/bg_login.jpg delete mode 100644 src/main/webapp/images/bg_logininout.jpg delete mode 100644 src/main/webapp/images/bg_loginmain.jpg delete mode 100644 src/main/webapp/images/bg_menulist.jpg delete mode 100644 src/main/webapp/images/bg_menuliston.jpg delete mode 100644 src/main/webapp/images/bg_menutop.jpg delete mode 100644 src/main/webapp/images/bg_notebook.gif delete mode 100644 src/main/webapp/images/bg_positionl.gif delete mode 100644 src/main/webapp/images/bg_positionm.jpg delete mode 100644 src/main/webapp/images/bg_positionr.jpg delete mode 100644 src/main/webapp/images/bg_positionrbak.jpg delete mode 100644 src/main/webapp/images/bg_positionrpos.jpg delete mode 100644 src/main/webapp/images/bg_psplit.jpg delete mode 100644 src/main/webapp/images/bg_tipfailth.png delete mode 100644 src/main/webapp/images/bg_tipsuccess.png delete mode 100644 src/main/webapp/images/blogging.png delete mode 100644 src/main/webapp/images/btn_check.gif delete mode 100644 src/main/webapp/images/btn_checkon.gif delete mode 100644 src/main/webapp/images/btn_close.gif delete mode 100644 src/main/webapp/images/btn_close.png delete mode 100644 src/main/webapp/images/btn_display.gif delete mode 100644 src/main/webapp/images/btn_goto.gif delete mode 100644 src/main/webapp/images/btn_gotoon.gif delete mode 100644 src/main/webapp/images/btn_login.jpg delete mode 100644 src/main/webapp/images/btn_loginon.jpg delete mode 100644 src/main/webapp/images/btn_minus.gif delete mode 100644 src/main/webapp/images/btn_openm.gif delete mode 100644 src/main/webapp/images/btn_plus.gif delete mode 100644 src/main/webapp/images/btn_scolse.gif delete mode 100644 src/main/webapp/images/btn_sopen.gif delete mode 100644 src/main/webapp/images/butterfly.jpg delete mode 100644 src/main/webapp/images/categories.png delete mode 100644 src/main/webapp/images/chart_bar.png delete mode 100644 src/main/webapp/images/clock.png delete mode 100644 src/main/webapp/images/comment.png delete mode 100644 src/main/webapp/images/computer.png delete mode 100644 src/main/webapp/images/contacts.png delete mode 100644 src/main/webapp/images/date_packer.gif delete mode 100644 src/main/webapp/images/draw1.jpg delete mode 100644 src/main/webapp/images/draw2.jpg delete mode 100644 src/main/webapp/images/draw3.jpg delete mode 100644 src/main/webapp/images/draw4.jpg delete mode 100644 src/main/webapp/images/edit_kiii.png delete mode 100644 src/main/webapp/images/edit_lock.png delete mode 100644 src/main/webapp/images/edit_lockon.png delete mode 100644 src/main/webapp/images/edit_monitor.png delete mode 100644 src/main/webapp/images/edit_notebook.png delete mode 100644 src/main/webapp/images/edit_pencil.png delete mode 100644 src/main/webapp/images/edit_set.png delete mode 100644 src/main/webapp/images/edit_time.gif delete mode 100644 src/main/webapp/images/evernote-alt.png delete mode 100644 src/main/webapp/images/favicon.ico delete mode 100644 src/main/webapp/images/favicon.ico.bak delete mode 100644 src/main/webapp/images/house.png delete mode 100644 src/main/webapp/images/imac.png delete mode 100644 src/main/webapp/images/loading1.gif delete mode 100644 src/main/webapp/images/lock_unlock.png delete mode 100644 src/main/webapp/images/login_tip.jpg delete mode 100644 src/main/webapp/images/logo.jpg delete mode 100644 src/main/webapp/images/logo.png delete mode 100644 src/main/webapp/images/man.png delete mode 100644 src/main/webapp/images/navtop_home.gif delete mode 100644 src/main/webapp/images/navtop_logout.gif delete mode 100644 src/main/webapp/images/preferences1.png delete mode 100644 src/main/webapp/images/receipt-excel.png delete mode 100644 src/main/webapp/images/suma_logo.png delete mode 100644 src/main/webapp/images/sysetem_name.jpg delete mode 100644 src/main/webapp/images/sysetem_name3.jpg delete mode 100644 src/main/webapp/images/time.png delete mode 100644 src/main/webapp/images/user-red.png delete mode 100644 src/main/webapp/images/user.png delete mode 100644 src/main/webapp/images/user_business_boss.png delete mode 100644 src/main/webapp/images/user_suit.png delete mode 100644 src/main/webapp/images/valid_code.jpg delete mode 100644 src/main/webapp/images/vavtop_help.gif delete mode 100644 src/main/webapp/images/windvane.png delete mode 100644 src/main/webapp/js/HoorayOS_mini/favicon.ico delete mode 100644 src/main/webapp/js/HoorayOS_mini/img/box.psd delete mode 100644 src/main/webapp/js/HoorayOS_mini/img/exit.png delete mode 100644 src/main/webapp/js/HoorayOS_mini/img/ui/18-6.png delete mode 100644 src/main/webapp/js/HoorayOS_mini/img/ui/6-18.png delete mode 100644 src/main/webapp/js/HoorayOS_mini/img/ui/amg_1.png delete mode 100644 src/main/webapp/js/HoorayOS_mini/img/ui/amg_2.png delete mode 100644 src/main/webapp/js/HoorayOS_mini/img/ui/amg_3.png delete mode 100644 src/main/webapp/js/HoorayOS_mini/img/ui/amg_4.png delete mode 100644 src/main/webapp/js/HoorayOS_mini/img/ui/amg_5.png delete mode 100644 src/main/webapp/js/HoorayOS_mini/img/ui/amg_body.png delete mode 100644 src/main/webapp/js/HoorayOS_mini/img/ui/amg_line_y.png delete mode 100644 src/main/webapp/js/HoorayOS_mini/img/ui/amg_shortcut_hover.png delete mode 100644 src/main/webapp/js/HoorayOS_mini/img/ui/amg_top.png delete mode 100644 src/main/webapp/js/HoorayOS_mini/img/ui/app_list.png delete mode 100644 src/main/webapp/js/HoorayOS_mini/img/ui/app_spr_img.png delete mode 100644 src/main/webapp/js/HoorayOS_mini/img/ui/app_spr_x.png delete mode 100644 src/main/webapp/js/HoorayOS_mini/img/ui/avatar_120.jpg delete mode 100644 src/main/webapp/js/HoorayOS_mini/img/ui/avatar_24.jpg delete mode 100644 src/main/webapp/js/HoorayOS_mini/img/ui/avatar_48.jpg delete mode 100644 src/main/webapp/js/HoorayOS_mini/img/ui/bought-table.png delete mode 100644 src/main/webapp/js/HoorayOS_mini/img/ui/browser.png delete mode 100644 src/main/webapp/js/HoorayOS_mini/img/ui/browser_backup.png delete mode 100644 src/main/webapp/js/HoorayOS_mini/img/ui/commend_day.gif delete mode 100644 src/main/webapp/js/HoorayOS_mini/img/ui/default_icon.png delete mode 100644 src/main/webapp/js/HoorayOS_mini/img/ui/desk_sprite.png delete mode 100644 src/main/webapp/js/HoorayOS_mini/img/ui/dock-tools.png delete mode 100644 src/main/webapp/js/HoorayOS_mini/img/ui/dock_setting.jpg delete mode 100644 src/main/webapp/js/HoorayOS_mini/img/ui/file_default.png delete mode 100644 src/main/webapp/js/HoorayOS_mini/img/ui/file_excel.png delete mode 100644 src/main/webapp/js/HoorayOS_mini/img/ui/file_image.png delete mode 100644 src/main/webapp/js/HoorayOS_mini/img/ui/file_music.png delete mode 100644 src/main/webapp/js/HoorayOS_mini/img/ui/file_pdf.png delete mode 100644 src/main/webapp/js/HoorayOS_mini/img/ui/file_ppt.png delete mode 100644 src/main/webapp/js/HoorayOS_mini/img/ui/file_rar.png delete mode 100644 src/main/webapp/js/HoorayOS_mini/img/ui/file_txt.png delete mode 100644 src/main/webapp/js/HoorayOS_mini/img/ui/file_video.png delete mode 100644 src/main/webapp/js/HoorayOS_mini/img/ui/file_word.png delete mode 100644 src/main/webapp/js/HoorayOS_mini/img/ui/folder_default.png delete mode 100644 src/main/webapp/js/HoorayOS_mini/img/ui/folder_doc.png delete mode 100644 src/main/webapp/js/HoorayOS_mini/img/ui/folder_game.png delete mode 100644 src/main/webapp/js/HoorayOS_mini/img/ui/folder_life.png delete mode 100644 src/main/webapp/js/HoorayOS_mini/img/ui/folder_music.png delete mode 100644 src/main/webapp/js/HoorayOS_mini/img/ui/folder_tool.png delete mode 100644 src/main/webapp/js/HoorayOS_mini/img/ui/folder_video.png delete mode 100644 src/main/webapp/js/HoorayOS_mini/img/ui/forder_selector.png delete mode 100644 src/main/webapp/js/HoorayOS_mini/img/ui/globle.css delete mode 100644 src/main/webapp/js/HoorayOS_mini/img/ui/google_ui_sprite.png delete mode 100644 src/main/webapp/js/HoorayOS_mini/img/ui/icon_main.png delete mode 100644 src/main/webapp/js/HoorayOS_mini/img/ui/index.css delete mode 100644 src/main/webapp/js/HoorayOS_mini/img/ui/input-label.png delete mode 100644 src/main/webapp/js/HoorayOS_mini/img/ui/loading_16.gif delete mode 100644 src/main/webapp/js/HoorayOS_mini/img/ui/loading_24.gif delete mode 100644 src/main/webapp/js/HoorayOS_mini/img/ui/loading_48.gif delete mode 100644 src/main/webapp/js/HoorayOS_mini/img/ui/login_icon.png delete mode 100644 src/main/webapp/js/HoorayOS_mini/img/ui/loginbg.png delete mode 100644 src/main/webapp/js/HoorayOS_mini/img/ui/loginsubmit.png delete mode 100644 src/main/webapp/js/HoorayOS_mini/img/ui/nav_bar.png delete mode 100644 src/main/webapp/js/HoorayOS_mini/img/ui/open.png delete mode 100644 src/main/webapp/js/HoorayOS_mini/img/ui/papp.png delete mode 100644 src/main/webapp/js/HoorayOS_mini/img/ui/popup_menu.gif delete mode 100644 src/main/webapp/js/HoorayOS_mini/img/ui/quick_view.png delete mode 100644 src/main/webapp/js/HoorayOS_mini/img/ui/scrollbar_bg.png delete mode 100644 src/main/webapp/js/HoorayOS_mini/img/ui/scrollbar_bgy.png delete mode 100644 src/main/webapp/js/HoorayOS_mini/img/ui/selected.gif delete mode 100644 src/main/webapp/js/HoorayOS_mini/img/ui/selected.png delete mode 100644 src/main/webapp/js/HoorayOS_mini/img/ui/share_icon.png delete mode 100644 src/main/webapp/js/HoorayOS_mini/img/ui/shortcut_text.png delete mode 100644 src/main/webapp/js/HoorayOS_mini/img/ui/spr_x.png delete mode 100644 src/main/webapp/js/HoorayOS_mini/img/ui/suggess_list_bg.png delete mode 100644 src/main/webapp/js/HoorayOS_mini/img/ui/sys.css delete mode 100644 src/main/webapp/js/HoorayOS_mini/img/ui/system-chart-bar.png delete mode 100644 src/main/webapp/js/HoorayOS_mini/img/ui/system-document-edit.png delete mode 100644 src/main/webapp/js/HoorayOS_mini/img/ui/system-documents.png delete mode 100644 src/main/webapp/js/HoorayOS_mini/img/ui/system-gear.png delete mode 100644 src/main/webapp/js/HoorayOS_mini/img/ui/system-mail.png delete mode 100644 src/main/webapp/js/HoorayOS_mini/img/ui/system-puzzle.png delete mode 100644 src/main/webapp/js/HoorayOS_mini/img/ui/system-shapes.png delete mode 100644 src/main/webapp/js/HoorayOS_mini/img/ui/system-star.png delete mode 100644 src/main/webapp/js/HoorayOS_mini/img/ui/system-users.png delete mode 100644 src/main/webapp/js/HoorayOS_mini/img/ui/system-wrench.png delete mode 100644 src/main/webapp/js/HoorayOS_mini/img/ui/task_bg1.png delete mode 100644 src/main/webapp/js/HoorayOS_mini/img/ui/task_bg2.png delete mode 100644 src/main/webapp/js/HoorayOS_mini/img/ui/transparent.gif delete mode 100644 src/main/webapp/js/HoorayOS_mini/img/ui/warning.png delete mode 100644 src/main/webapp/js/HoorayOS_mini/img/ui/widget_title_bg.png delete mode 100644 src/main/webapp/js/HoorayOS_mini/img/ui/window_mask_bg.png delete mode 100644 src/main/webapp/js/HoorayOS_mini/img/ui/window_mask_icon.png delete mode 100644 src/main/webapp/js/HoorayOS_mini/img/wallpaper/wallpaper.jpg delete mode 100644 src/main/webapp/js/HoorayOS_mini/index.html delete mode 100644 src/main/webapp/js/HoorayOS_mini/js/HoorayLibs/ZeroClipboard.swf delete mode 100644 src/main/webapp/js/HoorayOS_mini/js/HoorayLibs/gb_tip_layer.png delete mode 100644 src/main/webapp/js/HoorayOS_mini/js/HoorayLibs/gb_tip_layer_ie6.png delete mode 100644 src/main/webapp/js/HoorayOS_mini/js/HoorayLibs/gb_tip_loading.gif delete mode 100644 src/main/webapp/js/HoorayOS_mini/js/HoorayLibs/hooraylibs.css delete mode 100644 src/main/webapp/js/HoorayOS_mini/js/HoorayLibs/hooraylibs.js delete mode 100644 src/main/webapp/js/HoorayOS_mini/js/HoorayLibs/scrolltotop.gif delete mode 100644 src/main/webapp/js/HoorayOS_mini/js/core.js delete mode 100644 src/main/webapp/js/HoorayOS_mini/js/hros.app.js delete mode 100644 src/main/webapp/js/HoorayOS_mini/js/hros.base.js delete mode 100644 src/main/webapp/js/HoorayOS_mini/js/hros.desktop.js delete mode 100644 src/main/webapp/js/HoorayOS_mini/js/hros.dock.js delete mode 100644 src/main/webapp/js/HoorayOS_mini/js/hros.grid.js delete mode 100644 src/main/webapp/js/HoorayOS_mini/js/hros.maskBox.js delete mode 100644 src/main/webapp/js/HoorayOS_mini/js/hros.popupMenu.js delete mode 100644 src/main/webapp/js/HoorayOS_mini/js/hros.taskbar.js delete mode 100644 src/main/webapp/js/HoorayOS_mini/js/hros.wallpaper.js delete mode 100644 src/main/webapp/js/HoorayOS_mini/js/hros.widget.js delete mode 100644 src/main/webapp/js/HoorayOS_mini/js/hros.window.js delete mode 100644 src/main/webapp/js/HoorayOS_mini/js/hros.zoom.js delete mode 100644 src/main/webapp/js/HoorayOS_mini/js/jquery-1.8.3.min.js delete mode 100644 src/main/webapp/js/HoorayOS_mini/js/templates.js delete mode 100644 src/main/webapp/js/HoorayOS_mini/js/wallpaper.jpg delete mode 100644 src/main/webapp/js/HoorayOS_mini/js/zoom.swf delete mode 100644 src/main/webapp/js/HoorayOS_mini/说明.txt delete mode 100644 src/main/webapp/js/My97DatePicker/My97DatePicker.htm delete mode 100644 src/main/webapp/js/My97DatePicker/WdatePicker.js delete mode 100644 src/main/webapp/js/My97DatePicker/calendar.js delete mode 100644 src/main/webapp/js/My97DatePicker/config.js delete mode 100644 src/main/webapp/js/My97DatePicker/lang/en.js delete mode 100644 src/main/webapp/js/My97DatePicker/lang/zh-cn.js delete mode 100644 src/main/webapp/js/My97DatePicker/lang/zh-tw.js delete mode 100644 src/main/webapp/js/My97DatePicker/skin/WdatePicker.css delete mode 100644 src/main/webapp/js/My97DatePicker/skin/datePicker.gif delete mode 100644 src/main/webapp/js/My97DatePicker/skin/default/datepicker.css delete mode 100644 src/main/webapp/js/My97DatePicker/skin/default/img.gif delete mode 100644 src/main/webapp/js/My97DatePicker/skin/whyGreen/bg.jpg delete mode 100644 src/main/webapp/js/My97DatePicker/skin/whyGreen/datepicker.css delete mode 100644 src/main/webapp/js/My97DatePicker/skin/whyGreen/img.gif delete mode 100644 src/main/webapp/js/My97DatePicker/开发包/lang/en.js delete mode 100644 src/main/webapp/js/My97DatePicker/开发包/lang/zh-cn.js delete mode 100644 src/main/webapp/js/My97DatePicker/开发包/lang/zh-tw.js delete mode 100644 src/main/webapp/js/My97DatePicker/开发包/readme.txt delete mode 100644 src/main/webapp/js/My97DatePicker/开发包/skin/WdatePicker.css delete mode 100644 src/main/webapp/js/My97DatePicker/开发包/skin/datePicker.gif delete mode 100644 src/main/webapp/js/My97DatePicker/开发包/skin/default/datepicker.css delete mode 100644 src/main/webapp/js/My97DatePicker/开发包/skin/default/img.gif delete mode 100644 src/main/webapp/js/My97DatePicker/开发包/skin/whyGreen/bg.jpg delete mode 100644 src/main/webapp/js/My97DatePicker/开发包/skin/whyGreen/datepicker.css delete mode 100644 src/main/webapp/js/My97DatePicker/开发包/skin/whyGreen/img.gif delete mode 100644 src/main/webapp/js/StringBuffer.js delete mode 100644 src/main/webapp/js/channel/imagepreview.js delete mode 100644 src/main/webapp/js/channel/imgup.css delete mode 100644 src/main/webapp/js/channel/jquery-1.8.3.min.js delete mode 100644 src/main/webapp/js/channel/jquery.crop.js delete mode 100644 src/main/webapp/js/channel/json2.js delete mode 100644 src/main/webapp/js/colorbox/README.md delete mode 100644 src/main/webapp/js/colorbox/bower.json delete mode 100644 src/main/webapp/js/colorbox/colorbox.ai delete mode 100644 src/main/webapp/js/colorbox/colorbox.css delete mode 100644 src/main/webapp/js/colorbox/colorbox.jquery.json delete mode 100644 src/main/webapp/js/colorbox/colorboxSet.js delete mode 100644 src/main/webapp/js/colorbox/content/ajax.html delete mode 100644 src/main/webapp/js/colorbox/content/daisy.jpg delete mode 100644 src/main/webapp/js/colorbox/content/daisy@2x.jpg delete mode 100644 src/main/webapp/js/colorbox/content/homer.jpg delete mode 100644 src/main/webapp/js/colorbox/content/marylou.jpg delete mode 100644 src/main/webapp/js/colorbox/content/ohoopee1.jpg delete mode 100644 src/main/webapp/js/colorbox/content/ohoopee2.jpg delete mode 100644 src/main/webapp/js/colorbox/content/ohoopee3.jpg delete mode 100644 src/main/webapp/js/colorbox/example1/colorbox.css delete mode 100644 src/main/webapp/js/colorbox/example1/images/border.png delete mode 100644 src/main/webapp/js/colorbox/example1/images/controls.png delete mode 100644 src/main/webapp/js/colorbox/example1/images/loading.gif delete mode 100644 src/main/webapp/js/colorbox/example1/images/loading_background.png delete mode 100644 src/main/webapp/js/colorbox/example1/images/overlay.png delete mode 100644 src/main/webapp/js/colorbox/example1/index.html delete mode 100644 src/main/webapp/js/colorbox/example2/colorbox.css delete mode 100644 src/main/webapp/js/colorbox/example2/images/controls.png delete mode 100644 src/main/webapp/js/colorbox/example2/images/loading.gif delete mode 100644 src/main/webapp/js/colorbox/example2/index.html delete mode 100644 src/main/webapp/js/colorbox/example3/colorbox.css delete mode 100644 src/main/webapp/js/colorbox/example3/images/controls.png delete mode 100644 src/main/webapp/js/colorbox/example3/images/loading.gif delete mode 100644 src/main/webapp/js/colorbox/example3/index.html delete mode 100644 src/main/webapp/js/colorbox/example4/colorbox.css delete mode 100644 src/main/webapp/js/colorbox/example4/images/border1.png delete mode 100644 src/main/webapp/js/colorbox/example4/images/border2.png delete mode 100644 src/main/webapp/js/colorbox/example4/images/loading.gif delete mode 100644 src/main/webapp/js/colorbox/example4/index.html delete mode 100644 src/main/webapp/js/colorbox/example5/colorbox.css delete mode 100644 src/main/webapp/js/colorbox/example5/images/border.png delete mode 100644 src/main/webapp/js/colorbox/example5/images/controls.png delete mode 100644 src/main/webapp/js/colorbox/example5/images/loading.gif delete mode 100644 src/main/webapp/js/colorbox/example5/images/loading_background.png delete mode 100644 src/main/webapp/js/colorbox/example5/index.html delete mode 100644 src/main/webapp/js/colorbox/i18n/jquery.colorbox-ar.js delete mode 100644 src/main/webapp/js/colorbox/i18n/jquery.colorbox-bg.js delete mode 100644 src/main/webapp/js/colorbox/i18n/jquery.colorbox-ca.js delete mode 100644 src/main/webapp/js/colorbox/i18n/jquery.colorbox-cs.js delete mode 100644 src/main/webapp/js/colorbox/i18n/jquery.colorbox-da.js delete mode 100644 src/main/webapp/js/colorbox/i18n/jquery.colorbox-de.js delete mode 100644 src/main/webapp/js/colorbox/i18n/jquery.colorbox-es.js delete mode 100644 src/main/webapp/js/colorbox/i18n/jquery.colorbox-et.js delete mode 100644 src/main/webapp/js/colorbox/i18n/jquery.colorbox-fa.js delete mode 100644 src/main/webapp/js/colorbox/i18n/jquery.colorbox-fi.js delete mode 100644 src/main/webapp/js/colorbox/i18n/jquery.colorbox-fr.js delete mode 100644 src/main/webapp/js/colorbox/i18n/jquery.colorbox-gl.js delete mode 100644 src/main/webapp/js/colorbox/i18n/jquery.colorbox-gr.js delete mode 100644 src/main/webapp/js/colorbox/i18n/jquery.colorbox-he.js delete mode 100644 src/main/webapp/js/colorbox/i18n/jquery.colorbox-hr.js delete mode 100644 src/main/webapp/js/colorbox/i18n/jquery.colorbox-hu.js delete mode 100644 src/main/webapp/js/colorbox/i18n/jquery.colorbox-id.js delete mode 100644 src/main/webapp/js/colorbox/i18n/jquery.colorbox-it.js delete mode 100644 src/main/webapp/js/colorbox/i18n/jquery.colorbox-ja.js delete mode 100644 src/main/webapp/js/colorbox/i18n/jquery.colorbox-kr.js delete mode 100644 src/main/webapp/js/colorbox/i18n/jquery.colorbox-lt.js delete mode 100644 src/main/webapp/js/colorbox/i18n/jquery.colorbox-lv.js delete mode 100644 src/main/webapp/js/colorbox/i18n/jquery.colorbox-my.js delete mode 100644 src/main/webapp/js/colorbox/i18n/jquery.colorbox-nl.js delete mode 100644 src/main/webapp/js/colorbox/i18n/jquery.colorbox-no.js delete mode 100644 src/main/webapp/js/colorbox/i18n/jquery.colorbox-pl.js delete mode 100644 src/main/webapp/js/colorbox/i18n/jquery.colorbox-pt-br.js delete mode 100644 src/main/webapp/js/colorbox/i18n/jquery.colorbox-ro.js delete mode 100644 src/main/webapp/js/colorbox/i18n/jquery.colorbox-ru.js delete mode 100644 src/main/webapp/js/colorbox/i18n/jquery.colorbox-si.js delete mode 100644 src/main/webapp/js/colorbox/i18n/jquery.colorbox-sk.js delete mode 100644 src/main/webapp/js/colorbox/i18n/jquery.colorbox-sr.js delete mode 100644 src/main/webapp/js/colorbox/i18n/jquery.colorbox-sv.js delete mode 100644 src/main/webapp/js/colorbox/i18n/jquery.colorbox-tr.js delete mode 100644 src/main/webapp/js/colorbox/i18n/jquery.colorbox-uk.js delete mode 100644 src/main/webapp/js/colorbox/i18n/jquery.colorbox-zh-CN.js delete mode 100644 src/main/webapp/js/colorbox/i18n/jquery.colorbox-zh-TW.js delete mode 100644 src/main/webapp/js/colorbox/images/border.png delete mode 100644 src/main/webapp/js/colorbox/images/controls.png delete mode 100644 src/main/webapp/js/colorbox/images/ie6/Thumbs.db delete mode 100644 src/main/webapp/js/colorbox/images/ie6/borderBottomCenter.png delete mode 100644 src/main/webapp/js/colorbox/images/ie6/borderBottomLeft.png delete mode 100644 src/main/webapp/js/colorbox/images/ie6/borderBottomRight.png delete mode 100644 src/main/webapp/js/colorbox/images/ie6/borderMiddleLeft.png delete mode 100644 src/main/webapp/js/colorbox/images/ie6/borderMiddleRight.png delete mode 100644 src/main/webapp/js/colorbox/images/ie6/borderTopCenter.png delete mode 100644 src/main/webapp/js/colorbox/images/ie6/borderTopLeft.png delete mode 100644 src/main/webapp/js/colorbox/images/ie6/borderTopRight.png delete mode 100644 src/main/webapp/js/colorbox/images/loading.gif delete mode 100644 src/main/webapp/js/colorbox/images/loading_background.png delete mode 100644 src/main/webapp/js/colorbox/images/overlay.png delete mode 100644 src/main/webapp/js/colorbox/jquery.colorbox-min.js delete mode 100644 src/main/webapp/js/colorbox/jquery.colorbox.js delete mode 100644 src/main/webapp/js/common/common.js delete mode 100644 src/main/webapp/js/common/cs.js delete mode 100644 src/main/webapp/js/common/outlook_in.js delete mode 100644 src/main/webapp/js/datagrid-detailview.js delete mode 100644 src/main/webapp/js/easyui-1.3.5/changelog.txt delete mode 100644 src/main/webapp/js/easyui-1.3.5/demo/accordion/_content.html delete mode 100644 src/main/webapp/js/easyui-1.3.5/demo/accordion/actions.html delete mode 100644 src/main/webapp/js/easyui-1.3.5/demo/accordion/ajax.html delete mode 100644 src/main/webapp/js/easyui-1.3.5/demo/accordion/basic.html delete mode 100644 src/main/webapp/js/easyui-1.3.5/demo/accordion/datagrid_data1.json delete mode 100644 src/main/webapp/js/easyui-1.3.5/demo/accordion/expandable.html delete mode 100644 src/main/webapp/js/easyui-1.3.5/demo/accordion/multiple.html delete mode 100644 src/main/webapp/js/easyui-1.3.5/demo/accordion/tools.html delete mode 100644 src/main/webapp/js/easyui-1.3.5/demo/calendar/basic.html delete mode 100644 src/main/webapp/js/easyui-1.3.5/demo/calendar/firstday.html delete mode 100644 src/main/webapp/js/easyui-1.3.5/demo/combo/basic.html delete mode 100644 src/main/webapp/js/easyui-1.3.5/demo/combobox/actions.html delete mode 100644 src/main/webapp/js/easyui-1.3.5/demo/combobox/basic.html delete mode 100644 src/main/webapp/js/easyui-1.3.5/demo/combobox/combobox_data1.json delete mode 100644 src/main/webapp/js/easyui-1.3.5/demo/combobox/combobox_data2.json delete mode 100644 src/main/webapp/js/easyui-1.3.5/demo/combobox/customformat.html delete mode 100644 src/main/webapp/js/easyui-1.3.5/demo/combobox/dynamicdata.html delete mode 100644 src/main/webapp/js/easyui-1.3.5/demo/combobox/group.html delete mode 100644 src/main/webapp/js/easyui-1.3.5/demo/combobox/multiple.html delete mode 100644 src/main/webapp/js/easyui-1.3.5/demo/combobox/navigation.html delete mode 100644 src/main/webapp/js/easyui-1.3.5/demo/combobox/remotedata.html delete mode 100644 src/main/webapp/js/easyui-1.3.5/demo/combobox/remotejsonp.html delete mode 100644 src/main/webapp/js/easyui-1.3.5/demo/combogrid/actions.html delete mode 100644 src/main/webapp/js/easyui-1.3.5/demo/combogrid/basic.html delete mode 100644 src/main/webapp/js/easyui-1.3.5/demo/combogrid/datagrid_data1.json delete mode 100644 src/main/webapp/js/easyui-1.3.5/demo/combogrid/initvalue.html delete mode 100644 src/main/webapp/js/easyui-1.3.5/demo/combogrid/multiple.html delete mode 100644 src/main/webapp/js/easyui-1.3.5/demo/combogrid/navigation.html delete mode 100644 src/main/webapp/js/easyui-1.3.5/demo/combotree/actions.html delete mode 100644 src/main/webapp/js/easyui-1.3.5/demo/combotree/basic.html delete mode 100644 src/main/webapp/js/easyui-1.3.5/demo/combotree/initvalue.html delete mode 100644 src/main/webapp/js/easyui-1.3.5/demo/combotree/multiple.html delete mode 100644 src/main/webapp/js/easyui-1.3.5/demo/combotree/tree_data1.json delete mode 100644 src/main/webapp/js/easyui-1.3.5/demo/datagrid/aligncolumns.html delete mode 100644 src/main/webapp/js/easyui-1.3.5/demo/datagrid/basic.html delete mode 100644 src/main/webapp/js/easyui-1.3.5/demo/datagrid/cellediting.html delete mode 100644 src/main/webapp/js/easyui-1.3.5/demo/datagrid/cellstyle.html delete mode 100644 src/main/webapp/js/easyui-1.3.5/demo/datagrid/checkbox.html delete mode 100644 src/main/webapp/js/easyui-1.3.5/demo/datagrid/clientpagination.html delete mode 100644 src/main/webapp/js/easyui-1.3.5/demo/datagrid/columngroup.html delete mode 100644 src/main/webapp/js/easyui-1.3.5/demo/datagrid/complextoolbar.html delete mode 100644 src/main/webapp/js/easyui-1.3.5/demo/datagrid/contextmenu.html delete mode 100644 src/main/webapp/js/easyui-1.3.5/demo/datagrid/custompager.html delete mode 100644 src/main/webapp/js/easyui-1.3.5/demo/datagrid/datagrid_data1.json delete mode 100644 src/main/webapp/js/easyui-1.3.5/demo/datagrid/datagrid_data2.json delete mode 100644 src/main/webapp/js/easyui-1.3.5/demo/datagrid/footer.html delete mode 100644 src/main/webapp/js/easyui-1.3.5/demo/datagrid/formatcolumns.html delete mode 100644 src/main/webapp/js/easyui-1.3.5/demo/datagrid/frozencolumns.html delete mode 100644 src/main/webapp/js/easyui-1.3.5/demo/datagrid/frozenrows.html delete mode 100644 src/main/webapp/js/easyui-1.3.5/demo/datagrid/mergecells.html delete mode 100644 src/main/webapp/js/easyui-1.3.5/demo/datagrid/multisorting.html delete mode 100644 src/main/webapp/js/easyui-1.3.5/demo/datagrid/products.json delete mode 100644 src/main/webapp/js/easyui-1.3.5/demo/datagrid/rowborder.html delete mode 100644 src/main/webapp/js/easyui-1.3.5/demo/datagrid/rowediting.html delete mode 100644 src/main/webapp/js/easyui-1.3.5/demo/datagrid/rowstyle.html delete mode 100644 src/main/webapp/js/easyui-1.3.5/demo/datagrid/selection.html delete mode 100644 src/main/webapp/js/easyui-1.3.5/demo/datagrid/simpletoolbar.html delete mode 100644 src/main/webapp/js/easyui-1.3.5/demo/datagrid/transform.html delete mode 100644 src/main/webapp/js/easyui-1.3.5/demo/datebox/basic.html delete mode 100644 src/main/webapp/js/easyui-1.3.5/demo/datebox/buttons.html delete mode 100644 src/main/webapp/js/easyui-1.3.5/demo/datebox/dateformat.html delete mode 100644 src/main/webapp/js/easyui-1.3.5/demo/datebox/events.html delete mode 100644 src/main/webapp/js/easyui-1.3.5/demo/datebox/validate.html delete mode 100644 src/main/webapp/js/easyui-1.3.5/demo/datetimebox/basic.html delete mode 100644 src/main/webapp/js/easyui-1.3.5/demo/datetimebox/initvalue.html delete mode 100644 src/main/webapp/js/easyui-1.3.5/demo/datetimebox/showseconds.html delete mode 100644 src/main/webapp/js/easyui-1.3.5/demo/demo.css delete mode 100644 src/main/webapp/js/easyui-1.3.5/demo/dialog/basic.html delete mode 100644 src/main/webapp/js/easyui-1.3.5/demo/dialog/complextoolbar.html delete mode 100644 src/main/webapp/js/easyui-1.3.5/demo/dialog/toolbarbuttons.html delete mode 100644 src/main/webapp/js/easyui-1.3.5/demo/draggable/basic.html delete mode 100644 src/main/webapp/js/easyui-1.3.5/demo/draggable/constain.html delete mode 100644 src/main/webapp/js/easyui-1.3.5/demo/draggable/snap.html delete mode 100644 src/main/webapp/js/easyui-1.3.5/demo/droppable/accept.html delete mode 100644 src/main/webapp/js/easyui-1.3.5/demo/droppable/basic.html delete mode 100644 src/main/webapp/js/easyui-1.3.5/demo/droppable/sort.html delete mode 100644 src/main/webapp/js/easyui-1.3.5/demo/easyloader/basic.html delete mode 100644 src/main/webapp/js/easyui-1.3.5/demo/form/basic.html delete mode 100644 src/main/webapp/js/easyui-1.3.5/demo/form/form_data1.json delete mode 100644 src/main/webapp/js/easyui-1.3.5/demo/form/load.html delete mode 100644 src/main/webapp/js/easyui-1.3.5/demo/layout/_content.html delete mode 100644 src/main/webapp/js/easyui-1.3.5/demo/layout/addremove.html delete mode 100644 src/main/webapp/js/easyui-1.3.5/demo/layout/autoheight.html delete mode 100644 src/main/webapp/js/easyui-1.3.5/demo/layout/basic.html delete mode 100644 src/main/webapp/js/easyui-1.3.5/demo/layout/complex.html delete mode 100644 src/main/webapp/js/easyui-1.3.5/demo/layout/datagrid_data1.json delete mode 100644 src/main/webapp/js/easyui-1.3.5/demo/layout/full.html delete mode 100644 src/main/webapp/js/easyui-1.3.5/demo/layout/nestedlayout.html delete mode 100644 src/main/webapp/js/easyui-1.3.5/demo/layout/nocollapsible.html delete mode 100644 src/main/webapp/js/easyui-1.3.5/demo/layout/propertygrid_data1.json delete mode 100644 src/main/webapp/js/easyui-1.3.5/demo/layout/tree_data1.json delete mode 100644 src/main/webapp/js/easyui-1.3.5/demo/linkbutton/basic.html delete mode 100644 src/main/webapp/js/easyui-1.3.5/demo/linkbutton/group.html delete mode 100644 src/main/webapp/js/easyui-1.3.5/demo/linkbutton/iconalign.html delete mode 100644 src/main/webapp/js/easyui-1.3.5/demo/linkbutton/plain.html delete mode 100644 src/main/webapp/js/easyui-1.3.5/demo/linkbutton/toggle.html delete mode 100644 src/main/webapp/js/easyui-1.3.5/demo/menu/basic.html delete mode 100644 src/main/webapp/js/easyui-1.3.5/demo/menu/customitem.html delete mode 100644 src/main/webapp/js/easyui-1.3.5/demo/menu/events.html delete mode 100644 src/main/webapp/js/easyui-1.3.5/demo/menubutton/actions.html delete mode 100644 src/main/webapp/js/easyui-1.3.5/demo/menubutton/basic.html delete mode 100644 src/main/webapp/js/easyui-1.3.5/demo/messager/alert.html delete mode 100644 src/main/webapp/js/easyui-1.3.5/demo/messager/basic.html delete mode 100644 src/main/webapp/js/easyui-1.3.5/demo/messager/interactive.html delete mode 100644 src/main/webapp/js/easyui-1.3.5/demo/messager/position.html delete mode 100644 src/main/webapp/js/easyui-1.3.5/demo/numberbox/basic.html delete mode 100644 src/main/webapp/js/easyui-1.3.5/demo/numberbox/format.html delete mode 100644 src/main/webapp/js/easyui-1.3.5/demo/numberbox/range.html delete mode 100644 src/main/webapp/js/easyui-1.3.5/demo/numberspinner/basic.html delete mode 100644 src/main/webapp/js/easyui-1.3.5/demo/numberspinner/increment.html delete mode 100644 src/main/webapp/js/easyui-1.3.5/demo/numberspinner/range.html delete mode 100644 src/main/webapp/js/easyui-1.3.5/demo/pagination/attaching.html delete mode 100644 src/main/webapp/js/easyui-1.3.5/demo/pagination/basic.html delete mode 100644 src/main/webapp/js/easyui-1.3.5/demo/pagination/custombuttons.html delete mode 100644 src/main/webapp/js/easyui-1.3.5/demo/pagination/layout.html delete mode 100644 src/main/webapp/js/easyui-1.3.5/demo/pagination/links.html delete mode 100644 src/main/webapp/js/easyui-1.3.5/demo/pagination/simple.html delete mode 100644 src/main/webapp/js/easyui-1.3.5/demo/panel/_content.html delete mode 100644 src/main/webapp/js/easyui-1.3.5/demo/panel/basic.html delete mode 100644 src/main/webapp/js/easyui-1.3.5/demo/panel/customtools.html delete mode 100644 src/main/webapp/js/easyui-1.3.5/demo/panel/loadcontent.html delete mode 100644 src/main/webapp/js/easyui-1.3.5/demo/panel/nestedpanel.html delete mode 100644 src/main/webapp/js/easyui-1.3.5/demo/panel/paneltools.html delete mode 100644 src/main/webapp/js/easyui-1.3.5/demo/progressbar/basic.html delete mode 100644 src/main/webapp/js/easyui-1.3.5/demo/propertygrid/basic.html delete mode 100644 src/main/webapp/js/easyui-1.3.5/demo/propertygrid/customcolumns.html delete mode 100644 src/main/webapp/js/easyui-1.3.5/demo/propertygrid/groupformat.html delete mode 100644 src/main/webapp/js/easyui-1.3.5/demo/propertygrid/propertygrid_data1.json delete mode 100644 src/main/webapp/js/easyui-1.3.5/demo/resizable/basic.html delete mode 100644 src/main/webapp/js/easyui-1.3.5/demo/searchbox/basic.html delete mode 100644 src/main/webapp/js/easyui-1.3.5/demo/searchbox/category.html delete mode 100644 src/main/webapp/js/easyui-1.3.5/demo/slider/basic.html delete mode 100644 src/main/webapp/js/easyui-1.3.5/demo/slider/formattip.html delete mode 100644 src/main/webapp/js/easyui-1.3.5/demo/slider/rule.html delete mode 100644 src/main/webapp/js/easyui-1.3.5/demo/slider/vertical.html delete mode 100644 src/main/webapp/js/easyui-1.3.5/demo/splitbutton/actions.html delete mode 100644 src/main/webapp/js/easyui-1.3.5/demo/splitbutton/basic.html delete mode 100644 src/main/webapp/js/easyui-1.3.5/demo/tabs/_content.html delete mode 100644 src/main/webapp/js/easyui-1.3.5/demo/tabs/autoheight.html delete mode 100644 src/main/webapp/js/easyui-1.3.5/demo/tabs/basic.html delete mode 100644 src/main/webapp/js/easyui-1.3.5/demo/tabs/dropdown.html delete mode 100644 src/main/webapp/js/easyui-1.3.5/demo/tabs/fixedwidth.html delete mode 100644 src/main/webapp/js/easyui-1.3.5/demo/tabs/hover.html delete mode 100644 src/main/webapp/js/easyui-1.3.5/demo/tabs/images/modem.png delete mode 100644 src/main/webapp/js/easyui-1.3.5/demo/tabs/images/pda.png delete mode 100644 src/main/webapp/js/easyui-1.3.5/demo/tabs/images/scanner.png delete mode 100644 src/main/webapp/js/easyui-1.3.5/demo/tabs/images/tablet.png delete mode 100644 src/main/webapp/js/easyui-1.3.5/demo/tabs/nestedtabs.html delete mode 100644 src/main/webapp/js/easyui-1.3.5/demo/tabs/striptools.html delete mode 100644 src/main/webapp/js/easyui-1.3.5/demo/tabs/tabimage.html delete mode 100644 src/main/webapp/js/easyui-1.3.5/demo/tabs/tabposition.html delete mode 100644 src/main/webapp/js/easyui-1.3.5/demo/tabs/tabstools.html delete mode 100644 src/main/webapp/js/easyui-1.3.5/demo/tabs/tree_data1.json delete mode 100644 src/main/webapp/js/easyui-1.3.5/demo/timespinner/actions.html delete mode 100644 src/main/webapp/js/easyui-1.3.5/demo/timespinner/basic.html delete mode 100644 src/main/webapp/js/easyui-1.3.5/demo/timespinner/range.html delete mode 100644 src/main/webapp/js/easyui-1.3.5/demo/tooltip/_content.html delete mode 100644 src/main/webapp/js/easyui-1.3.5/demo/tooltip/_dialog.html delete mode 100644 src/main/webapp/js/easyui-1.3.5/demo/tooltip/ajax.html delete mode 100644 src/main/webapp/js/easyui-1.3.5/demo/tooltip/basic.html delete mode 100644 src/main/webapp/js/easyui-1.3.5/demo/tooltip/customcontent.html delete mode 100644 src/main/webapp/js/easyui-1.3.5/demo/tooltip/customstyle.html delete mode 100644 src/main/webapp/js/easyui-1.3.5/demo/tooltip/position.html delete mode 100644 src/main/webapp/js/easyui-1.3.5/demo/tooltip/toolbar.html delete mode 100644 src/main/webapp/js/easyui-1.3.5/demo/tooltip/tooltipdialog.html delete mode 100644 src/main/webapp/js/easyui-1.3.5/demo/treegrid/actions.html delete mode 100644 src/main/webapp/js/easyui-1.3.5/demo/treegrid/basic.html delete mode 100644 src/main/webapp/js/easyui-1.3.5/demo/treegrid/clientpagination.html delete mode 100644 src/main/webapp/js/easyui-1.3.5/demo/treegrid/contextmenu.html delete mode 100644 src/main/webapp/js/easyui-1.3.5/demo/treegrid/editable.html delete mode 100644 src/main/webapp/js/easyui-1.3.5/demo/treegrid/footer.html delete mode 100644 src/main/webapp/js/easyui-1.3.5/demo/treegrid/reports.html delete mode 100644 src/main/webapp/js/easyui-1.3.5/demo/treegrid/treegrid_data1.json delete mode 100644 src/main/webapp/js/easyui-1.3.5/demo/treegrid/treegrid_data2.json delete mode 100644 src/main/webapp/js/easyui-1.3.5/demo/treegrid/treegrid_data3.json delete mode 100644 src/main/webapp/js/easyui-1.3.5/demo/validatebox/basic.html delete mode 100644 src/main/webapp/js/easyui-1.3.5/demo/validatebox/customtooltip.html delete mode 100644 src/main/webapp/js/easyui-1.3.5/demo/window/basic.html delete mode 100644 src/main/webapp/js/easyui-1.3.5/demo/window/customtools.html delete mode 100644 src/main/webapp/js/easyui-1.3.5/demo/window/inlinewindow.html delete mode 100644 src/main/webapp/js/easyui-1.3.5/demo/window/modalwindow.html delete mode 100644 src/main/webapp/js/easyui-1.3.5/demo/window/windowlayout.html delete mode 100644 src/main/webapp/js/easyui-1.3.5/easyloader.js delete mode 100644 src/main/webapp/js/easyui-1.3.5/jquery.easyui.min.js delete mode 100644 src/main/webapp/js/easyui-1.3.5/jquery.min.js delete mode 100644 src/main/webapp/js/easyui-1.3.5/locale/easyui-lang-af.js delete mode 100644 src/main/webapp/js/easyui-1.3.5/locale/easyui-lang-ar.js delete mode 100644 src/main/webapp/js/easyui-1.3.5/locale/easyui-lang-bg.js delete mode 100644 src/main/webapp/js/easyui-1.3.5/locale/easyui-lang-ca.js delete mode 100644 src/main/webapp/js/easyui-1.3.5/locale/easyui-lang-cs.js delete mode 100644 src/main/webapp/js/easyui-1.3.5/locale/easyui-lang-cz.js delete mode 100644 src/main/webapp/js/easyui-1.3.5/locale/easyui-lang-da.js delete mode 100644 src/main/webapp/js/easyui-1.3.5/locale/easyui-lang-de.js delete mode 100644 src/main/webapp/js/easyui-1.3.5/locale/easyui-lang-el.js delete mode 100644 src/main/webapp/js/easyui-1.3.5/locale/easyui-lang-en.js delete mode 100644 src/main/webapp/js/easyui-1.3.5/locale/easyui-lang-es.js delete mode 100644 src/main/webapp/js/easyui-1.3.5/locale/easyui-lang-fr.js delete mode 100644 src/main/webapp/js/easyui-1.3.5/locale/easyui-lang-it.js delete mode 100644 src/main/webapp/js/easyui-1.3.5/locale/easyui-lang-jp.js delete mode 100644 src/main/webapp/js/easyui-1.3.5/locale/easyui-lang-nl.js delete mode 100644 src/main/webapp/js/easyui-1.3.5/locale/easyui-lang-pl.js delete mode 100644 src/main/webapp/js/easyui-1.3.5/locale/easyui-lang-pt_BR.js delete mode 100644 src/main/webapp/js/easyui-1.3.5/locale/easyui-lang-ru.js delete mode 100644 src/main/webapp/js/easyui-1.3.5/locale/easyui-lang-sv_SE.js delete mode 100644 src/main/webapp/js/easyui-1.3.5/locale/easyui-lang-tr.js delete mode 100644 src/main/webapp/js/easyui-1.3.5/locale/easyui-lang-zh_CN.js delete mode 100644 src/main/webapp/js/easyui-1.3.5/locale/easyui-lang-zh_TW.js delete mode 100644 src/main/webapp/js/easyui-1.3.5/outlook.js delete mode 100644 src/main/webapp/js/easyui-1.3.5/plugins/jquery.accordion.js delete mode 100644 src/main/webapp/js/easyui-1.3.5/plugins/jquery.calendar.js delete mode 100644 src/main/webapp/js/easyui-1.3.5/plugins/jquery.combo.js delete mode 100644 src/main/webapp/js/easyui-1.3.5/plugins/jquery.combobox.js delete mode 100644 src/main/webapp/js/easyui-1.3.5/plugins/jquery.combogrid.js delete mode 100644 src/main/webapp/js/easyui-1.3.5/plugins/jquery.combotree.js delete mode 100644 src/main/webapp/js/easyui-1.3.5/plugins/jquery.datagrid.js delete mode 100644 src/main/webapp/js/easyui-1.3.5/plugins/jquery.datebox.js delete mode 100644 src/main/webapp/js/easyui-1.3.5/plugins/jquery.datetimebox.js delete mode 100644 src/main/webapp/js/easyui-1.3.5/plugins/jquery.dialog.js delete mode 100644 src/main/webapp/js/easyui-1.3.5/plugins/jquery.draggable.js delete mode 100644 src/main/webapp/js/easyui-1.3.5/plugins/jquery.droppable.js delete mode 100644 src/main/webapp/js/easyui-1.3.5/plugins/jquery.form.js delete mode 100644 src/main/webapp/js/easyui-1.3.5/plugins/jquery.layout.js delete mode 100644 src/main/webapp/js/easyui-1.3.5/plugins/jquery.linkbutton.js delete mode 100644 src/main/webapp/js/easyui-1.3.5/plugins/jquery.menu.js delete mode 100644 src/main/webapp/js/easyui-1.3.5/plugins/jquery.menubutton.js delete mode 100644 src/main/webapp/js/easyui-1.3.5/plugins/jquery.messager.js delete mode 100644 src/main/webapp/js/easyui-1.3.5/plugins/jquery.numberbox.js delete mode 100644 src/main/webapp/js/easyui-1.3.5/plugins/jquery.numberspinner.js delete mode 100644 src/main/webapp/js/easyui-1.3.5/plugins/jquery.pagination.js delete mode 100644 src/main/webapp/js/easyui-1.3.5/plugins/jquery.panel.js delete mode 100644 src/main/webapp/js/easyui-1.3.5/plugins/jquery.parser.js delete mode 100644 src/main/webapp/js/easyui-1.3.5/plugins/jquery.progressbar.js delete mode 100644 src/main/webapp/js/easyui-1.3.5/plugins/jquery.propertygrid.js delete mode 100644 src/main/webapp/js/easyui-1.3.5/plugins/jquery.resizable.js delete mode 100644 src/main/webapp/js/easyui-1.3.5/plugins/jquery.searchbox.js delete mode 100644 src/main/webapp/js/easyui-1.3.5/plugins/jquery.slider.js delete mode 100644 src/main/webapp/js/easyui-1.3.5/plugins/jquery.spinner.js delete mode 100644 src/main/webapp/js/easyui-1.3.5/plugins/jquery.splitbutton.js delete mode 100644 src/main/webapp/js/easyui-1.3.5/plugins/jquery.tabs.js delete mode 100644 src/main/webapp/js/easyui-1.3.5/plugins/jquery.timespinner.js delete mode 100644 src/main/webapp/js/easyui-1.3.5/plugins/jquery.tooltip.js delete mode 100644 src/main/webapp/js/easyui-1.3.5/plugins/jquery.tree.js delete mode 100644 src/main/webapp/js/easyui-1.3.5/plugins/jquery.treegrid.js delete mode 100644 src/main/webapp/js/easyui-1.3.5/plugins/jquery.validatebox.js delete mode 100644 src/main/webapp/js/easyui-1.3.5/plugins/jquery.window.js delete mode 100644 src/main/webapp/js/easyui-1.3.5/src/easyloader.js delete mode 100644 src/main/webapp/js/easyui-1.3.5/src/jquery.accordion.js delete mode 100644 src/main/webapp/js/easyui-1.3.5/src/jquery.calendar.js delete mode 100644 src/main/webapp/js/easyui-1.3.5/src/jquery.combobox.js delete mode 100644 src/main/webapp/js/easyui-1.3.5/src/jquery.datebox.js delete mode 100644 src/main/webapp/js/easyui-1.3.5/src/jquery.draggable.js delete mode 100644 src/main/webapp/js/easyui-1.3.5/src/jquery.droppable.js delete mode 100644 src/main/webapp/js/easyui-1.3.5/src/jquery.form.js delete mode 100644 src/main/webapp/js/easyui-1.3.5/src/jquery.linkbutton.js delete mode 100644 src/main/webapp/js/easyui-1.3.5/src/jquery.menu.js delete mode 100644 src/main/webapp/js/easyui-1.3.5/src/jquery.parser.js delete mode 100644 src/main/webapp/js/easyui-1.3.5/src/jquery.progressbar.js delete mode 100644 src/main/webapp/js/easyui-1.3.5/src/jquery.propertygrid.js delete mode 100644 src/main/webapp/js/easyui-1.3.5/src/jquery.resizable.js delete mode 100644 src/main/webapp/js/easyui-1.3.5/src/jquery.slider.js delete mode 100644 src/main/webapp/js/easyui-1.3.5/src/jquery.tabs.js delete mode 100644 src/main/webapp/js/easyui-1.3.5/src/jquery.window.js delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/black/accordion.css delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/black/calendar.css delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/black/combo.css delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/black/combobox.css delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/black/datagrid.css delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/black/datebox.css delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/black/dialog.css delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/black/easyui.css delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/black/images/accordion_arrows.png delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/black/images/blank.gif delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/black/images/calendar_arrows.png delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/black/images/combo_arrow.png delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/black/images/datagrid_icons.png delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/black/images/datebox_arrow.png delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/black/images/layout_arrows.png delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/black/images/linkbutton_bg.png delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/black/images/loading.gif delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/black/images/menu_arrows.png delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/black/images/messager_icons.png delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/black/images/pagination_icons.png delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/black/images/panel_tools.png delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/black/images/searchbox_button.png delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/black/images/slider_handle.png delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/black/images/spinner_arrows.png delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/black/images/tabs_icons.png delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/black/images/tree_icons.png delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/black/images/validatebox_warning.png delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/black/layout.css delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/black/linkbutton.css delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/black/menu.css delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/black/menubutton.css delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/black/messager.css delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/black/pagination.css delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/black/panel.css delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/black/progressbar.css delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/black/propertygrid.css delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/black/searchbox.css delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/black/slider.css delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/black/spinner.css delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/black/splitbutton.css delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/black/tabs.css delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/black/tooltip.css delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/black/tree.css delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/black/validatebox.css delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/black/window.css delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/bootstrap/accordion.css delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/bootstrap/calendar.css delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/bootstrap/combo.css delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/bootstrap/combobox.css delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/bootstrap/datagrid.css delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/bootstrap/datebox.css delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/bootstrap/dialog.css delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/bootstrap/easyui.css delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/bootstrap/images/accordion_arrows.png delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/bootstrap/images/blank.gif delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/bootstrap/images/calendar_arrows.png delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/bootstrap/images/combo_arrow.png delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/bootstrap/images/datagrid_icons.png delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/bootstrap/images/datebox_arrow.png delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/bootstrap/images/layout_arrows.png delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/bootstrap/images/linkbutton_bg.png delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/bootstrap/images/loading.gif delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/bootstrap/images/menu_arrows.png delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/bootstrap/images/messager_icons.png delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/bootstrap/images/pagination_icons.png delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/bootstrap/images/panel_tools.png delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/bootstrap/images/searchbox_button.png delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/bootstrap/images/slider_handle.png delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/bootstrap/images/spinner_arrows.png delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/bootstrap/images/tabs_icons.png delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/bootstrap/images/tree_icons.png delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/bootstrap/images/validatebox_warning.png delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/bootstrap/layout.css delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/bootstrap/linkbutton.css delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/bootstrap/menu.css delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/bootstrap/menubutton.css delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/bootstrap/messager.css delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/bootstrap/pagination.css delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/bootstrap/panel.css delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/bootstrap/progressbar.css delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/bootstrap/propertygrid.css delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/bootstrap/searchbox.css delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/bootstrap/slider.css delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/bootstrap/spinner.css delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/bootstrap/splitbutton.css delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/bootstrap/tabs.css delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/bootstrap/tooltip.css delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/bootstrap/tree.css delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/bootstrap/validatebox.css delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/bootstrap/window.css delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/default/accordion.css delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/default/calendar.css delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/default/combo.css delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/default/combobox.css delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/default/datagrid.css delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/default/datebox.css delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/default/dialog.css delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/default/easyui.css delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/default/images/Thumbs.db delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/default/images/accordion_arrows.png delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/default/images/bg_positionl.gif delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/default/images/bg_positionm.jpg delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/default/images/bg_positionr.jpg delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/default/images/bg_positionrbak.jpg delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/default/images/bg_positionrpos.jpg delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/default/images/blank.gif delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/default/images/calendar_arrows.png delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/default/images/combo_arrow.png delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/default/images/datagrid_icons.png delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/default/images/datebox_arrow.png delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/default/images/layout_arrows.png delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/default/images/linkbutton_bg.png delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/default/images/loading.gif delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/default/images/menu_arrows.png delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/default/images/messager_icons.png delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/default/images/pagination_icons.png delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/default/images/panel_tools.png delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/default/images/searchbox_button.png delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/default/images/slider_handle.png delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/default/images/spinner_arrows.png delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/default/images/tabs_icons.png delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/default/images/tree_icons.png delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/default/images/validatebox_warning.png delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/default/layout.css delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/default/linkbutton.css delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/default/menu.css delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/default/menubutton.css delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/default/messager.css delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/default/pagination.css delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/default/panel.css delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/default/progressbar.css delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/default/propertygrid.css delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/default/searchbox.css delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/default/slider.css delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/default/spinner.css delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/default/splitbutton.css delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/default/tabs.css delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/default/tooltip.css delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/default/tree.css delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/default/validatebox.css delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/default/window.css delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/gray/accordion.css delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/gray/calendar.css delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/gray/combo.css delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/gray/combobox.css delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/gray/datagrid.css delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/gray/datebox.css delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/gray/dialog.css delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/gray/easyui.css delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/gray/images/accordion_arrows.png delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/gray/images/blank.gif delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/gray/images/calendar_arrows.png delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/gray/images/combo_arrow.png delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/gray/images/datagrid_icons.png delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/gray/images/datebox_arrow.png delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/gray/images/layout_arrows.png delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/gray/images/linkbutton_bg.png delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/gray/images/loading.gif delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/gray/images/menu_arrows.png delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/gray/images/messager_icons.png delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/gray/images/pagination_icons.png delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/gray/images/panel_tools.png delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/gray/images/searchbox_button.png delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/gray/images/slider_handle.png delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/gray/images/spinner_arrows.png delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/gray/images/tabs_icons.png delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/gray/images/tree_icons.png delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/gray/images/validatebox_warning.png delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/gray/layout.css delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/gray/linkbutton.css delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/gray/menu.css delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/gray/menubutton.css delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/gray/messager.css delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/gray/pagination.css delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/gray/panel.css delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/gray/progressbar.css delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/gray/propertygrid.css delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/gray/searchbox.css delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/gray/slider.css delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/gray/spinner.css delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/gray/splitbutton.css delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/gray/tabs.css delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/gray/tooltip.css delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/gray/tree.css delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/gray/validatebox.css delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/gray/window.css delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/icon.css delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/icons/049.png delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/icons/311.gif delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/icons/back.png delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/icons/blank.gif delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/icons/cancel.png delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/icons/chart_bar.png delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/icons/comment.png delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/icons/cut.png delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/icons/edit_add.png delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/icons/edit_remove.png delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/icons/excel1.png delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/icons/filelist.jpg delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/icons/filesave.png delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/icons/filter.png delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/icons/help.png delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/icons/list.png delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/icons/lock_unlock.png delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/icons/mini_add.png delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/icons/mini_edit.png delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/icons/mini_refresh.png delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/icons/no.png delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/icons/ok.png delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/icons/page_excel.png delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/icons/pencil.png delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/icons/pie.png delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/icons/polygram.png delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/icons/print.png delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/icons/receipt-excel.png delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/icons/redo.png delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/icons/reload.png delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/icons/search.png delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/icons/statistics.png delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/icons/sum.png delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/icons/tip.png delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/icons/undo.png delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/icons/zonghe.png delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/metro/accordion.css delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/metro/calendar.css delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/metro/combo.css delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/metro/combobox.css delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/metro/datagrid.css delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/metro/datebox.css delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/metro/dialog.css delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/metro/easyui.css delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/metro/images/accordion_arrows.png delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/metro/images/blank.gif delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/metro/images/calendar_arrows.png delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/metro/images/combo_arrow.png delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/metro/images/datagrid_icons.png delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/metro/images/datebox_arrow.png delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/metro/images/layout_arrows.png delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/metro/images/linkbutton_bg.png delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/metro/images/loading.gif delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/metro/images/menu_arrows.png delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/metro/images/messager_icons.png delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/metro/images/pagination_icons.png delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/metro/images/panel_tools.png delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/metro/images/searchbox_button.png delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/metro/images/slider_handle.png delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/metro/images/spinner_arrows.png delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/metro/images/tabs_icons.png delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/metro/images/tree_icons.png delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/metro/images/validatebox_warning.png delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/metro/layout.css delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/metro/linkbutton.css delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/metro/menu.css delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/metro/menubutton.css delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/metro/messager.css delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/metro/pagination.css delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/metro/panel.css delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/metro/progressbar.css delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/metro/propertygrid.css delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/metro/searchbox.css delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/metro/slider.css delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/metro/spinner.css delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/metro/splitbutton.css delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/metro/tabs.css delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/metro/tooltip.css delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/metro/tree.css delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/metro/validatebox.css delete mode 100644 src/main/webapp/js/easyui-1.3.5/themes/metro/window.css delete mode 100644 src/main/webapp/js/fileUploadQT/css/fileUpload.css delete mode 100644 src/main/webapp/js/fileUploadQT/css/iconfont.css delete mode 100644 src/main/webapp/js/fileUploadQT/demo.html delete mode 100644 src/main/webapp/js/fileUploadQT/fonts/iconfont.eot delete mode 100644 src/main/webapp/js/fileUploadQT/fonts/iconfont.svg delete mode 100644 src/main/webapp/js/fileUploadQT/fonts/iconfont.ttf delete mode 100644 src/main/webapp/js/fileUploadQT/fonts/iconfont.woff delete mode 100644 src/main/webapp/js/fileUploadQT/js/fileUpload.js delete mode 100644 src/main/webapp/js/fileUploadQT/js/iconfont.js delete mode 100644 src/main/webapp/js/fileUploadQT/js/jquery-2.1.3.min.js delete mode 100644 src/main/webapp/js/grayscale.js delete mode 100644 src/main/webapp/js/highcharts/exporting.js delete mode 100644 src/main/webapp/js/highcharts/highcharts-more.js delete mode 100644 src/main/webapp/js/highcharts/highcharts.js delete mode 100644 src/main/webapp/js/imgpreview/imagepreview.js delete mode 100644 src/main/webapp/js/imgpreview/imgpreview.html delete mode 100644 src/main/webapp/js/imgpreview/imgup.css delete mode 100644 src/main/webapp/js/imgpreview/jquery-1.8.3.min.js delete mode 100644 src/main/webapp/js/imgpreview/jquery.crop.js delete mode 100644 src/main/webapp/js/jdigiclock/WeatherLocationDatabase.txt delete mode 100644 src/main/webapp/js/jdigiclock/changelog.html delete mode 100644 src/main/webapp/js/jdigiclock/css/jquery.jdigiclock.css delete mode 100644 src/main/webapp/js/jdigiclock/css/style.css delete mode 100644 src/main/webapp/js/jdigiclock/images/background.png delete mode 100644 src/main/webapp/js/jdigiclock/images/background_forecast.png delete mode 100644 src/main/webapp/js/jdigiclock/images/clock/0-1.png delete mode 100644 src/main/webapp/js/jdigiclock/images/clock/0-2.png delete mode 100644 src/main/webapp/js/jdigiclock/images/clock/0-3.png delete mode 100644 src/main/webapp/js/jdigiclock/images/clock/0.png delete mode 100644 src/main/webapp/js/jdigiclock/images/clock/001-1.png delete mode 100644 src/main/webapp/js/jdigiclock/images/clock/001-2.png delete mode 100644 src/main/webapp/js/jdigiclock/images/clock/001-3.png delete mode 100644 src/main/webapp/js/jdigiclock/images/clock/01-1.png delete mode 100644 src/main/webapp/js/jdigiclock/images/clock/01-2.png delete mode 100644 src/main/webapp/js/jdigiclock/images/clock/01-3.png delete mode 100644 src/main/webapp/js/jdigiclock/images/clock/1-1.png delete mode 100644 src/main/webapp/js/jdigiclock/images/clock/1-2.png delete mode 100644 src/main/webapp/js/jdigiclock/images/clock/1-3.png delete mode 100644 src/main/webapp/js/jdigiclock/images/clock/1.png delete mode 100644 src/main/webapp/js/jdigiclock/images/clock/11-1.png delete mode 100644 src/main/webapp/js/jdigiclock/images/clock/11-2.png delete mode 100644 src/main/webapp/js/jdigiclock/images/clock/11-3.png delete mode 100644 src/main/webapp/js/jdigiclock/images/clock/111-1.png delete mode 100644 src/main/webapp/js/jdigiclock/images/clock/111-2.png delete mode 100644 src/main/webapp/js/jdigiclock/images/clock/111-3.png delete mode 100644 src/main/webapp/js/jdigiclock/images/clock/2-1.png delete mode 100644 src/main/webapp/js/jdigiclock/images/clock/2-2.png delete mode 100644 src/main/webapp/js/jdigiclock/images/clock/2-3.png delete mode 100644 src/main/webapp/js/jdigiclock/images/clock/2.png delete mode 100644 src/main/webapp/js/jdigiclock/images/clock/21-1.png delete mode 100644 src/main/webapp/js/jdigiclock/images/clock/21-2.png delete mode 100644 src/main/webapp/js/jdigiclock/images/clock/21-3.png delete mode 100644 src/main/webapp/js/jdigiclock/images/clock/211-1.png delete mode 100644 src/main/webapp/js/jdigiclock/images/clock/211-2.png delete mode 100644 src/main/webapp/js/jdigiclock/images/clock/211-3.png delete mode 100644 src/main/webapp/js/jdigiclock/images/clock/3-1.png delete mode 100644 src/main/webapp/js/jdigiclock/images/clock/3-2.png delete mode 100644 src/main/webapp/js/jdigiclock/images/clock/3-3.png delete mode 100644 src/main/webapp/js/jdigiclock/images/clock/3.png delete mode 100644 src/main/webapp/js/jdigiclock/images/clock/31-1.png delete mode 100644 src/main/webapp/js/jdigiclock/images/clock/31-2.png delete mode 100644 src/main/webapp/js/jdigiclock/images/clock/31-3.png delete mode 100644 src/main/webapp/js/jdigiclock/images/clock/311-1.png delete mode 100644 src/main/webapp/js/jdigiclock/images/clock/311-2.png delete mode 100644 src/main/webapp/js/jdigiclock/images/clock/311-3.png delete mode 100644 src/main/webapp/js/jdigiclock/images/clock/4-1.png delete mode 100644 src/main/webapp/js/jdigiclock/images/clock/4-2.png delete mode 100644 src/main/webapp/js/jdigiclock/images/clock/4-3.png delete mode 100644 src/main/webapp/js/jdigiclock/images/clock/4.png delete mode 100644 src/main/webapp/js/jdigiclock/images/clock/41-1.png delete mode 100644 src/main/webapp/js/jdigiclock/images/clock/41-2.png delete mode 100644 src/main/webapp/js/jdigiclock/images/clock/41-3.png delete mode 100644 src/main/webapp/js/jdigiclock/images/clock/5-1.png delete mode 100644 src/main/webapp/js/jdigiclock/images/clock/5-2.png delete mode 100644 src/main/webapp/js/jdigiclock/images/clock/5-3.png delete mode 100644 src/main/webapp/js/jdigiclock/images/clock/5.png delete mode 100644 src/main/webapp/js/jdigiclock/images/clock/51-1.png delete mode 100644 src/main/webapp/js/jdigiclock/images/clock/51-2.png delete mode 100644 src/main/webapp/js/jdigiclock/images/clock/51-3.png delete mode 100644 src/main/webapp/js/jdigiclock/images/clock/511-1.png delete mode 100644 src/main/webapp/js/jdigiclock/images/clock/511-2.png delete mode 100644 src/main/webapp/js/jdigiclock/images/clock/511-3.png delete mode 100644 src/main/webapp/js/jdigiclock/images/clock/6-1.png delete mode 100644 src/main/webapp/js/jdigiclock/images/clock/6-2.png delete mode 100644 src/main/webapp/js/jdigiclock/images/clock/6-3.png delete mode 100644 src/main/webapp/js/jdigiclock/images/clock/6.png delete mode 100644 src/main/webapp/js/jdigiclock/images/clock/7-1.png delete mode 100644 src/main/webapp/js/jdigiclock/images/clock/7-2.png delete mode 100644 src/main/webapp/js/jdigiclock/images/clock/7-3.png delete mode 100644 src/main/webapp/js/jdigiclock/images/clock/7.png delete mode 100644 src/main/webapp/js/jdigiclock/images/clock/8-1.png delete mode 100644 src/main/webapp/js/jdigiclock/images/clock/8-2.png delete mode 100644 src/main/webapp/js/jdigiclock/images/clock/8-3.png delete mode 100644 src/main/webapp/js/jdigiclock/images/clock/8.png delete mode 100644 src/main/webapp/js/jdigiclock/images/clock/9-1.png delete mode 100644 src/main/webapp/js/jdigiclock/images/clock/9-2.png delete mode 100644 src/main/webapp/js/jdigiclock/images/clock/9-3.png delete mode 100644 src/main/webapp/js/jdigiclock/images/clock/9.png delete mode 100644 src/main/webapp/js/jdigiclock/images/clock/am.png delete mode 100644 src/main/webapp/js/jdigiclock/images/clock/apm.png delete mode 100644 src/main/webapp/js/jdigiclock/images/clock/clockbg-blank.png delete mode 100644 src/main/webapp/js/jdigiclock/images/clock/clockbg1.png delete mode 100644 src/main/webapp/js/jdigiclock/images/clock/clockbg2.png delete mode 100644 src/main/webapp/js/jdigiclock/images/clock/clockbg3.png delete mode 100644 src/main/webapp/js/jdigiclock/images/clock/clockbg4.png delete mode 100644 src/main/webapp/js/jdigiclock/images/clock/clockbg5.png delete mode 100644 src/main/webapp/js/jdigiclock/images/clock/clockbg6.png delete mode 100644 src/main/webapp/js/jdigiclock/images/clock/pm.png delete mode 100644 src/main/webapp/js/jdigiclock/images/htc_hero_wallpaper_01.jpg delete mode 100644 src/main/webapp/js/jdigiclock/images/htc_hero_wallpaper_02.jpg delete mode 100644 src/main/webapp/js/jdigiclock/images/icon_left.png delete mode 100644 src/main/webapp/js/jdigiclock/images/icon_right.png delete mode 100644 src/main/webapp/js/jdigiclock/images/refresh_01.png delete mode 100644 src/main/webapp/js/jdigiclock/images/weather/1.png delete mode 100644 src/main/webapp/js/jdigiclock/images/weather/11.png delete mode 100644 src/main/webapp/js/jdigiclock/images/weather/12.png delete mode 100644 src/main/webapp/js/jdigiclock/images/weather/13.png delete mode 100644 src/main/webapp/js/jdigiclock/images/weather/14.png delete mode 100644 src/main/webapp/js/jdigiclock/images/weather/15.png delete mode 100644 src/main/webapp/js/jdigiclock/images/weather/16.png delete mode 100644 src/main/webapp/js/jdigiclock/images/weather/17.png delete mode 100644 src/main/webapp/js/jdigiclock/images/weather/18.png delete mode 100644 src/main/webapp/js/jdigiclock/images/weather/19.png delete mode 100644 src/main/webapp/js/jdigiclock/images/weather/2.png delete mode 100644 src/main/webapp/js/jdigiclock/images/weather/20.png delete mode 100644 src/main/webapp/js/jdigiclock/images/weather/21.png delete mode 100644 src/main/webapp/js/jdigiclock/images/weather/22.png delete mode 100644 src/main/webapp/js/jdigiclock/images/weather/23.png delete mode 100644 src/main/webapp/js/jdigiclock/images/weather/24.png delete mode 100644 src/main/webapp/js/jdigiclock/images/weather/25.png delete mode 100644 src/main/webapp/js/jdigiclock/images/weather/26.png delete mode 100644 src/main/webapp/js/jdigiclock/images/weather/27.png delete mode 100644 src/main/webapp/js/jdigiclock/images/weather/29.png delete mode 100644 src/main/webapp/js/jdigiclock/images/weather/3.png delete mode 100644 src/main/webapp/js/jdigiclock/images/weather/30.png delete mode 100644 src/main/webapp/js/jdigiclock/images/weather/31.png delete mode 100644 src/main/webapp/js/jdigiclock/images/weather/32.png delete mode 100644 src/main/webapp/js/jdigiclock/images/weather/33.png delete mode 100644 src/main/webapp/js/jdigiclock/images/weather/34.png delete mode 100644 src/main/webapp/js/jdigiclock/images/weather/35.png delete mode 100644 src/main/webapp/js/jdigiclock/images/weather/36.png delete mode 100644 src/main/webapp/js/jdigiclock/images/weather/37.png delete mode 100644 src/main/webapp/js/jdigiclock/images/weather/38.png delete mode 100644 src/main/webapp/js/jdigiclock/images/weather/39.png delete mode 100644 src/main/webapp/js/jdigiclock/images/weather/4.png delete mode 100644 src/main/webapp/js/jdigiclock/images/weather/40.png delete mode 100644 src/main/webapp/js/jdigiclock/images/weather/41.png delete mode 100644 src/main/webapp/js/jdigiclock/images/weather/42.png delete mode 100644 src/main/webapp/js/jdigiclock/images/weather/43.png delete mode 100644 src/main/webapp/js/jdigiclock/images/weather/44.png delete mode 100644 src/main/webapp/js/jdigiclock/images/weather/5.png delete mode 100644 src/main/webapp/js/jdigiclock/images/weather/6.png delete mode 100644 src/main/webapp/js/jdigiclock/images/weather/7.png delete mode 100644 src/main/webapp/js/jdigiclock/images/weather/8.png delete mode 100644 src/main/webapp/js/jdigiclock/images/weather/blank.png delete mode 100644 src/main/webapp/js/jdigiclock/images/weather/na.png delete mode 100644 src/main/webapp/js/jdigiclock/index.html delete mode 100644 src/main/webapp/js/jdigiclock/lib/jquery-1.3.2.min.js delete mode 100644 src/main/webapp/js/jdigiclock/lib/jquery.jdigiclock.js delete mode 100644 src/main/webapp/js/jdigiclock/lib/proxy/asp/README.txt delete mode 100644 src/main/webapp/js/jdigiclock/lib/proxy/asp/WeatherProxy.aspx delete mode 100644 src/main/webapp/js/jdigiclock/lib/proxy/asp/WeatherProxy.aspx.cs delete mode 100644 src/main/webapp/js/jdigiclock/lib/proxy/asp/WeatherProxy.aspx.designer.cs delete mode 100644 src/main/webapp/js/jdigiclock/lib/proxy/empty.gitkeep delete mode 100644 src/main/webapp/js/jdigiclock/lib/proxy/php/proxy.php delete mode 100644 src/main/webapp/js/jquery-1.8.0-vsdoc.js delete mode 100644 src/main/webapp/js/jquery-1.8.0.js delete mode 100644 src/main/webapp/js/jquery-1.8.0.min.js delete mode 100644 src/main/webapp/js/json2.js delete mode 100644 src/main/webapp/js/pages/financial/financial_base.js delete mode 100644 src/main/webapp/js/pages/manage/pushBtn.json delete mode 100644 src/main/webapp/js/pages/manage/supplier.js delete mode 100644 src/main/webapp/js/pages/materials/bill_detail.js delete mode 100644 src/main/webapp/js/pages/materials/in_out.js delete mode 100644 src/main/webapp/js/print/print.html delete mode 100644 src/main/webapp/js/print/print.js delete mode 100644 src/main/webapp/js/webqq/desktop.js delete mode 100644 src/main/webapp/js/webqq/jquery-1.7.1.min.js delete mode 100644 src/main/webapp/js/webqq/jquery-smartMenu-min.js delete mode 100644 src/main/webapp/js/webqq/jquery-ui-1.8.18.custom.min.js delete mode 100644 src/main/webapp/js/webqq/jquery.winResize.js delete mode 100644 src/main/webapp/js/webqq/myLib.js delete mode 100644 src/main/webapp/js/wth.js delete mode 100644 src/main/webapp/login.jsp delete mode 100644 src/main/webapp/logout.jsp delete mode 100644 src/main/webapp/pages/asset/asset.jsp delete mode 100644 src/main/webapp/pages/asset/home.jsp delete mode 100644 src/main/webapp/pages/asset/report.jsp delete mode 100644 src/main/webapp/pages/common/admin.jsp delete mode 100644 src/main/webapp/pages/common/foot.jsp delete mode 100644 src/main/webapp/pages/common/head.jsp delete mode 100644 src/main/webapp/pages/common/home.jsp delete mode 100644 src/main/webapp/pages/common/main.jsp delete mode 100644 src/main/webapp/pages/common/menu.jsp delete mode 100644 src/main/webapp/pages/common/templateforjsp.jsp delete mode 100644 src/main/webapp/pages/financial/advance_in.jsp delete mode 100644 src/main/webapp/pages/financial/giro.jsp delete mode 100644 src/main/webapp/pages/financial/item_in.jsp delete mode 100644 src/main/webapp/pages/financial/item_out.jsp delete mode 100644 src/main/webapp/pages/financial/money_in.jsp delete mode 100644 src/main/webapp/pages/financial/money_out.jsp delete mode 100644 src/main/webapp/pages/manage/account.jsp delete mode 100644 src/main/webapp/pages/manage/app.jsp delete mode 100644 src/main/webapp/pages/manage/assetname.jsp delete mode 100644 src/main/webapp/pages/manage/category.jsp delete mode 100644 src/main/webapp/pages/manage/customer.jsp delete mode 100644 src/main/webapp/pages/manage/depot.jsp delete mode 100644 src/main/webapp/pages/manage/depotGift.jsp delete mode 100644 src/main/webapp/pages/manage/functions.jsp delete mode 100644 src/main/webapp/pages/manage/home.jsp delete mode 100644 src/main/webapp/pages/manage/inOutItem.jsp delete mode 100644 src/main/webapp/pages/manage/log.jsp delete mode 100644 src/main/webapp/pages/manage/member.jsp delete mode 100644 src/main/webapp/pages/manage/role.jsp delete mode 100644 src/main/webapp/pages/manage/roleApp.jsp delete mode 100644 src/main/webapp/pages/manage/roleFunctions.jsp delete mode 100644 src/main/webapp/pages/manage/rolePushBtn.jsp delete mode 100644 src/main/webapp/pages/manage/systemConfig.jsp delete mode 100644 src/main/webapp/pages/manage/unit.jsp delete mode 100644 src/main/webapp/pages/manage/user.jsp delete mode 100644 src/main/webapp/pages/manage/vendor.jsp delete mode 100644 src/main/webapp/pages/materials/allocation_out_list.jsp delete mode 100644 src/main/webapp/pages/materials/assemble_list.jsp delete mode 100644 src/main/webapp/pages/materials/bill_detail.jsp delete mode 100644 src/main/webapp/pages/materials/disassemble_list.jsp delete mode 100644 src/main/webapp/pages/materials/gift_out_list.jsp delete mode 100644 src/main/webapp/pages/materials/gift_recharge_list.jsp delete mode 100644 src/main/webapp/pages/materials/material.jsp delete mode 100644 src/main/webapp/pages/materials/materialProperty.jsp delete mode 100644 src/main/webapp/pages/materials/materialcategory.jsp delete mode 100644 src/main/webapp/pages/materials/other_in_list.jsp delete mode 100644 src/main/webapp/pages/materials/other_out_list.jsp delete mode 100644 src/main/webapp/pages/materials/person.jsp delete mode 100644 src/main/webapp/pages/materials/purchase_back_list.jsp delete mode 100644 src/main/webapp/pages/materials/purchase_in_list.jsp delete mode 100644 src/main/webapp/pages/materials/retail_back_list.jsp delete mode 100644 src/main/webapp/pages/materials/retail_out_list.jsp delete mode 100644 src/main/webapp/pages/materials/sale_back_list.jsp delete mode 100644 src/main/webapp/pages/materials/sale_out_list.jsp delete mode 100644 src/main/webapp/pages/other/clock.jsp delete mode 100644 src/main/webapp/pages/other/preview.jsp delete mode 100644 src/main/webapp/pages/reports/account_report.jsp delete mode 100644 src/main/webapp/pages/reports/buy_in_report.jsp delete mode 100644 src/main/webapp/pages/reports/customer_account.jsp delete mode 100644 src/main/webapp/pages/reports/gift_manage_report.jsp delete mode 100644 src/main/webapp/pages/reports/in_detail.jsp delete mode 100644 src/main/webapp/pages/reports/in_material_count.jsp delete mode 100644 src/main/webapp/pages/reports/in_out_stock_report.jsp delete mode 100644 src/main/webapp/pages/reports/out_detail.jsp delete mode 100644 src/main/webapp/pages/reports/out_material_count.jsp delete mode 100644 src/main/webapp/pages/reports/sale_out_report.jsp delete mode 100644 src/main/webapp/pages/reports/vendor_account.jsp delete mode 100644 src/main/webapp/pages/user/password.jsp delete mode 100644 src/main/webapp/pages/user/userCustomer.jsp delete mode 100644 src/main/webapp/pages/user/userDepot.jsp delete mode 100644 src/main/webapp/pages/user/userRole.jsp delete mode 100644 src/main/webapp/pages/user/userinfo.jsp delete mode 100644 src/main/webapp/upload/images/deskIcon/0000000001.png delete mode 100644 src/main/webapp/upload/images/deskIcon/0000000002.png delete mode 100644 src/main/webapp/upload/images/deskIcon/0000000003.png delete mode 100644 src/main/webapp/upload/images/deskIcon/0000000004.png delete mode 100644 src/main/webapp/upload/images/deskIcon/0000000005.png delete mode 100644 src/main/webapp/upload/images/deskIcon/0000000006.png delete mode 100644 src/main/webapp/upload/images/deskIcon/0000000008.png delete mode 100644 src/main/webapp/upload/images/deskIcon/0000000009.png delete mode 100644 src/main/webapp/upload/images/deskIcon/0000000010.png delete mode 100644 src/main/webapp/upload/images/deskIcon/0000000011.png delete mode 100644 src/main/webapp/upload/images/deskIcon/0000000012.png delete mode 100644 src/main/webapp/upload/images/deskIcon/0000000013.png delete mode 100644 src/main/webapp/upload/images/deskIcon/0000000014.png delete mode 100644 src/main/webapp/upload/images/deskIcon/0000000015.png delete mode 100644 src/main/webapp/upload/images/deskIcon/0000000016.png delete mode 100644 src/main/webapp/upload/images/deskIcon/0000000017.png delete mode 100644 src/main/webapp/upload/images/deskIcon/0000000018.jpg delete mode 100644 src/main/webapp/upload/images/deskIcon/0000000018.png delete mode 100644 src/main/webapp/upload/images/deskIcon/0000000019.png delete mode 100644 src/main/webapp/upload/images/deskIcon/0000000020.png delete mode 100644 src/main/webapp/upload/images/deskIcon/0000000021.png delete mode 100644 src/main/webapp/upload/images/deskIcon/0000000022.png delete mode 100644 src/main/webapp/upload/images/deskIcon/0000000023.png delete mode 100644 src/main/webapp/upload/images/deskIcon/0000000024.png delete mode 100644 src/main/webapp/upload/images/deskIcon/0000000025.png delete mode 100644 src/main/webapp/upload/images/deskIcon/buy.png delete mode 100644 src/main/webapp/upload/images/deskIcon/depot.png delete mode 100644 src/main/webapp/upload/images/deskIcon/money.png delete mode 100644 src/main/webapp/upload/images/deskIcon/resizeApi.png delete mode 100644 src/main/webapp/upload/images/deskIcon/sale.png create mode 100644 src/test/java/Test.java delete mode 100644 src/test/java/com/jsh/test/MyRunnable.java delete mode 100644 src/test/java/com/jsh/test/MyThread.java delete mode 100644 src/test/java/com/jsh/test/Test.java create mode 100644 src/test/resources/generatorConfig.xml diff --git a/src/main/assembly/package.xml b/src/main/assembly/package.xml new file mode 100644 index 00000000..c10a94c7 --- /dev/null +++ b/src/main/assembly/package.xml @@ -0,0 +1,40 @@ + + + package + + zip + + false + + + + + + + + + src/main/conf + / + + + erp_web + /erp_web + + + + + src/main/resources/application.yml + /conf + + + + + lib + runtime + + + \ No newline at end of file diff --git a/src/main/conf/jshERPStart.bat b/src/main/conf/jshERPStart.bat new file mode 100644 index 00000000..8cc02bfa --- /dev/null +++ b/src/main/conf/jshERPStart.bat @@ -0,0 +1,6 @@ +@echo off + +title jshERP + +java -Xms1000m -Xmx2000m -cp .\conf;.\lib\*; -XX:+CreateMinidumpOnCrash com.jsh.erp.ErpApplication +pause over \ No newline at end of file diff --git a/src/main/conf/jshERPStart.sh b/src/main/conf/jshERPStart.sh new file mode 100644 index 00000000..83f10e60 --- /dev/null +++ b/src/main/conf/jshERPStart.sh @@ -0,0 +1 @@ +java -XX:+CreateMinidumpOnCrash -cp ./conf:./lib/*: com.jsh.erp.ErpApplication \ No newline at end of file diff --git a/src/main/java/com/jsh/action/asset/AssetAction.java b/src/main/java/com/jsh/action/asset/AssetAction.java deleted file mode 100644 index d543081c..00000000 --- a/src/main/java/com/jsh/action/asset/AssetAction.java +++ /dev/null @@ -1,452 +0,0 @@ -package com.jsh.action.asset; - -import com.jsh.base.BaseAction; -import com.jsh.base.Log; -import com.jsh.model.po.*; -import com.jsh.model.vo.asset.AssetModel; -import com.jsh.service.asset.AssetIService; -import com.jsh.service.basic.AssetNameIService; -import com.jsh.service.basic.CategoryIService; -import com.jsh.service.basic.SupplierIService; -import com.jsh.service.basic.UserIService; -import com.jsh.util.AssetConstants; -import com.jsh.util.JshException; -import com.jsh.util.PageUtil; -import com.jsh.util.Tools; -import net.sf.json.JSONArray; -import net.sf.json.JSONObject; -import org.springframework.dao.DataAccessException; - -import java.io.IOException; -import java.io.InputStream; -import java.sql.Timestamp; -import java.text.ParseException; -import java.util.Calendar; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -@SuppressWarnings("serial") -public class AssetAction extends BaseAction { - private AssetModel model = new AssetModel(); - private AssetIService assetService; - private CategoryIService categoryService; - private SupplierIService supplierService; - private UserIService userService; - private AssetNameIService assetnameService; - - @SuppressWarnings({"rawtypes", "unchecked"}) - public String getBasicData() { - Map mapData = model.getShowModel().getMap(); - PageUtil pageUtil = new PageUtil(); - pageUtil.setPageSize(0); - pageUtil.setCurPage(0); - try { - Map condition = pageUtil.getAdvSearch(); - condition.put("id_s_order", "desc"); - categoryService.find(pageUtil); - mapData.put("categoryList", pageUtil.getPageList()); - supplierService.find(pageUtil); - mapData.put("supplierList", pageUtil.getPageList()); - - condition.put("isystem_n_eq", 1); - condition.put("id_s_order", "desc"); - userService.find(pageUtil); - mapData.put("userList", pageUtil.getPageList()); - - //清除搜索条件 防止对查询有影响 - condition.remove("isystem_n_eq"); - - assetnameService.find(pageUtil); - mapData.put("assetnameList", pageUtil.getPageList()); - } catch (Exception e) { - Log.errorFileSync(">>>>>>>>>>>>>查找系统基础数据信息异常", e); - model.getShowModel().setMsgTip("exceptoin"); - } - return SUCCESS; - } - - /** - * 增加资产 - * - * @return - */ - public void create() { - Log.infoFileSync("==================开始调用增加资产方法==================="); - Boolean flag = false; - try { - Asset asset = new Asset(); - //添加设置 - asset.setAssetname(new Assetname(model.getAssetNameID())); - - asset.setLocation(model.getLocation()); - asset.setStatus(model.getStatus()); - asset.setPrice(model.getPrice()); - - if (null != model.getUserID()) { - asset.setUser(new Basicuser(model.getUserID())); - } - try { - //购买日期 - asset.setPurchasedate(new Timestamp(Tools.parse(model.getPurchasedate(), "yyyy-MM-dd").getTime())); - //有效日期 - asset.setPeriodofvalidity(new Timestamp(Tools.parse(model.getPeriodofvalidity(), "yyyy-MM-dd").getTime())); - //保修日期 - asset.setWarrantydate(new Timestamp(Tools.parse(model.getWarrantydate(), "yyyy-MM-dd").getTime())); - } catch (ParseException e) { - Log.errorFileSync(">>>>>>>>>>>>>>>解析购买日期格式异常", e); - } - - asset.setAssetnum(model.getAssetnum()); - asset.setSerialnum(model.getSerialnum()); - asset.setLabels(model.getLabels()); - - asset.setSupplier(new Supplier(model.getSupplierID())); - asset.setDescription(model.getDescription()); - - asset.setCreatetime(new Timestamp(System.currentTimeMillis())); - asset.setCreator(getUser()); - asset.setUpdatetime(new Timestamp(System.currentTimeMillis())); - asset.setUpdator(getUser()); - asset.setAddMonth(Tools.getCurrentMonth()); - assetService.create(asset); - //========标识位=========== - flag = true; - //记录操作日志使用 - tipMsg = "成功"; - tipType = 0; - } catch (DataAccessException e) { - Log.errorFileSync(">>>>>>>>>>>>>>>>>>>增加资产异常", e); - flag = false; - tipMsg = "失败"; - tipType = 1; - } finally { - try { - toClient(flag.toString()); - } catch (IOException e) { - Log.errorFileSync(">>>>>>>>>>>>增加资产回写客户端结果异常", e); - } - } - - logService.create(new Logdetails(getUser(), "增加资产", model.getClientIp(), - new Timestamp(System.currentTimeMillis()) - , tipType, "增加资产名称ID为 " + model.getAssetNameID() + " " + tipMsg + "!", "增加资产" + tipMsg)); - Log.infoFileSync("==================结束调用增加资产方法==================="); - } - - /** - * 删除资产 - * - * @return - */ - public String delete() { - Log.infoFileSync("====================开始调用删除资产信息方法delete()================"); - try { - assetService.delete(model.getAssetID()); - tipMsg = "成功"; - tipType = 0; - } catch (DataAccessException e) { - Log.errorFileSync(">>>>>>>>>>>删除ID为 " + model.getAssetID() + " 的资产异常", e); - tipMsg = "失败"; - tipType = 1; - } - model.getShowModel().setMsgTip(tipMsg); - logService.create(new Logdetails(getUser(), "删除资产", model.getClientIp(), - new Timestamp(System.currentTimeMillis()) - , tipType, "删除资产ID为 " + model.getAssetID() + " " + tipMsg + "!", "删除资产" + tipMsg)); - Log.infoFileSync("====================结束调用删除资产信息方法delete()================"); - return SUCCESS; - } - - /** - * 更新资产 - * - * @return - */ - public void update() { - Boolean flag = false; - try { - Asset asset = assetService.get(model.getAssetID()); - - //设置要更新的熟悉值 - asset.setAssetname(new Assetname(model.getAssetNameID())); - - asset.setLocation(model.getLocation()); - asset.setStatus(model.getStatus()); - asset.setPrice(model.getPrice()); - - if (null != model.getUserID()) { - asset.setUser(new Basicuser(model.getUserID())); - } else { - asset.setUser(null); - } - try { - //购买日期 - asset.setPurchasedate(new Timestamp(Tools.parse(model.getPurchasedate(), "yyyy-MM-dd").getTime())); - //有效日期 - asset.setPeriodofvalidity(new Timestamp(Tools.parse(model.getPeriodofvalidity(), "yyyy-MM-dd").getTime())); - //保修日期 - asset.setWarrantydate(new Timestamp(Tools.parse(model.getWarrantydate(), "yyyy-MM-dd").getTime())); - } catch (ParseException e) { - Log.errorFileSync(">>>>>>>>>>>>>>>解析购买日期格式异常", e); - } - - asset.setAssetnum(model.getAssetnum()); - asset.setSerialnum(model.getSerialnum()); - asset.setLabels(model.getLabels()); - - asset.setSupplier(new Supplier(model.getSupplierID())); - asset.setDescription(model.getDescription()); - - asset.setUpdatetime(new Timestamp(System.currentTimeMillis())); - asset.setUpdator(getUser()); - assetService.update(asset); - flag = true; - tipMsg = "成功"; - tipType = 0; - } catch (DataAccessException e) { - Log.errorFileSync(">>>>>>>>>>>>>修改资产ID为 : " + model.getAssetID() + "信息失败", e); - flag = false; - tipMsg = "失败"; - tipType = 1; - } finally { - try { - toClient(flag.toString()); - } catch (IOException e) { - Log.errorFileSync(">>>>>>>>>>>>修改资产回写客户端结果异常", e); - } - } - logService.create(new Logdetails(getUser(), "更新资产", model.getClientIp(), - new Timestamp(System.currentTimeMillis()) - , tipType, "更新资产ID为 " + model.getAssetID() + " " + tipMsg + "!", "更新资产" + tipMsg)); - } - - /** - * 批量删除指定ID资产 - * - * @return - */ - public String batchDelete() { - try { - assetService.batchDelete(model.getAssetIDs()); - model.getShowModel().setMsgTip("成功"); - //记录操作日志使用 - tipMsg = "成功"; - tipType = 0; - } catch (DataAccessException e) { - Log.errorFileSync(">>>>>>>>>>>批量删除资产ID为:" + model.getAssetIDs() + "信息异常", e); - tipMsg = "失败"; - tipType = 1; - } - - logService.create(new Logdetails(getUser(), "批量删除资产", model.getClientIp(), - new Timestamp(System.currentTimeMillis()) - , tipType, "批量删除资产ID为 " + model.getAssetIDs() + " " + tipMsg + "!", "批量删除资产" + tipMsg)); - return SUCCESS; - } - - /** - * 查找资产信息 - * - * @return - */ - public void findBy() { - try { - PageUtil pageUtil = new PageUtil(); - pageUtil.setPageSize(model.getPageSize()); - pageUtil.setCurPage(model.getPageNo()); - pageUtil.setAdvSearch(getCondition()); - assetService.find(pageUtil); - - getSession().put("pageUtil", pageUtil); - List dataList = pageUtil.getPageList(); - - //开始拼接json数据 -// {"total":28,"rows":[ -// {"productid":"AV-CB-01","attr1":"Adult Male","itemid":"EST-18"} -// ]} - JSONObject outer = new JSONObject(); - outer.put("total", pageUtil.getTotalCount()); - //存放数据json数组 - JSONArray dataArray = new JSONArray(); - if (null != dataList) { - for (Asset asset : dataList) { - JSONObject item = new JSONObject(); - item.put("id", asset.getId()); - //添加资产属性 - item.put("assetname", asset.getAssetname().getAssetname()); - item.put("assetnameID", asset.getAssetname().getId()); - //单价 - item.put("price", Tools.dealNullStr(asset.getPrice() + "")); - //分类 - item.put("category", asset.getAssetname().getCategory().getAssetname()); - item.put("categoryID", asset.getAssetname().getCategory().getId()); - //资产的状态:0==在库,1==在用,2==消费 - item.put("status", getStatusInfo(asset.getStatus())); - item.put("statushort", asset.getStatus()); - //在用用户名称 - item.put("username", asset.getUser() == null ? "" : asset.getUser().getUsername()); - item.put("userID", asset.getUser() == null ? "" : asset.getUser().getId()); - //位置 - item.put("location", Tools.dealNullStr(asset.getLocation())); - - //购买日期 - item.put("purchasedate", asset.getPurchasedate() == null ? "" : Tools.getCurrentMonth(asset.getPurchasedate())); - //有效日期 - item.put("periodofvalidity", asset.getPeriodofvalidity() == null ? "" : Tools.getCurrentMonth(asset.getPeriodofvalidity())); - //保修日期 - item.put("warrantydate", asset.getWarrantydate() == null ? "" : Tools.getCurrentMonth(asset.getWarrantydate())); - //资产编号 - item.put("assetnum", Tools.dealNullStr(asset.getAssetnum())); - //资产序列号 - item.put("serialnum", Tools.dealNullStr(asset.getSerialnum())); - //供应商 - item.put("supplier", asset.getSupplier() == null ? "" : asset.getSupplier().getSupplier()); - //供应商 - item.put("supplierID", asset.getSupplier() == null ? "" : asset.getSupplier().getId()); - //标签 - item.put("labels", Tools.dealNullStr(asset.getLabels())); - item.put("description", Tools.dealNullStr(asset.getDescription())); - item.put("op", 1); - dataArray.add(item); - } - } - outer.put("rows", dataArray); - //回写查询结果 - toClient(outer.toString()); - } catch (DataAccessException e) { - Log.errorFileSync(">>>>>>>>>查找资产信息异常", e); - } catch (IOException e) { - Log.errorFileSync(">>>>>>>>>回写查询资产信息结果异常", e); - } - } - - /** - * 导出excel表格 - * - * @return - */ - @SuppressWarnings("unchecked") - public String exportExcel() { - Log.infoFileSync("===================调用导出资产信息action方法exportExcel开始======================="); - try { - PageUtil pageUtil = (PageUtil) getSession().get("pageUtil"); - - pageUtil.setPageSize(model.getPageSize()); - pageUtil.setCurPage(model.getPageNo()); - //pageUtil.setAdvSearch(getCondition()); - String isCurrentPage = model.getIsAllData(); - model.setFileName(Tools.changeUnicode(model.getFileName() + ".xls", model.getBrowserType())); - model.setExcelStream(assetService.exmportExcel(isCurrentPage, pageUtil)); - } catch (Exception e) { - Log.errorFileSync(">>>>>>>>>>>>>>>>>>>>>>调用导出资产信息action方法exportExcel异常", e); - model.getShowModel().setMsgTip("export excel exception"); - } - Log.infoFileSync("===================调用导出资产信息action方法exportExcel结束=================="); - return AssetConstants.BusinessForExcel.EXCEL; - } - - - /** - * 导入资产excel表格内容 - */ - public String importExcel() { - //资产excel表格file - Boolean result = false; - String returnStr = ""; - try { - InputStream in = assetService.importExcel(model.getAssetFile(), model.getIsCheck()); - - if (null != in) { - model.setFileName(Tools.getRandomChar() + Tools.getNow2(Calendar.getInstance().getTime()) + "_wrong.xls"); - model.setExcelStream(in); - returnStr = AssetConstants.BusinessForExcel.EXCEL; - } else { - result = true; - try { - toClient(result.toString()); - } catch (IOException e) { - Log.errorFileSync(">>>>>>>>>回写导入资产信息结果异常", e); - } - //导入数据成功 - returnStr = SUCCESS; - } - - } catch (JshException e) { - Log.errorFileSync(">>>>>>>>>>>>>>>>>>>导入excel表格信息异常", e); - } - return returnStr; - } - - /** - * 拼接搜索条件 - * - * @return - */ - private Map getCondition() { - /** - * 拼接搜索条件 - */ - Map condition = new HashMap(); - condition.put("assetname.id_n_eq", model.getAssetNameID()); - condition.put("assetname.category.id_n_eq", model.getAssetCategoryID()); - condition.put("user.id_n_eq", model.getUserID()); - condition.put("status_n_eq", model.getStatus()); - condition.put("supplier.id_n_eq", model.getSupplierID()); - condition.put("createtime_s_order", "desc"); - return condition; - } - - /** - * 根据状态码转化成说明字符串 - * 资产的状态:0==在库,1==在用,2==消费 - * - * @param statusCode - * @return - */ - private String getStatusInfo(short statusCode) { - String statusInfo = ""; - switch (statusCode) { - case AssetConstants.BusinessForExcel.EXCEl_STATUS_ZAIKU: - statusInfo = "在库"; - break; - - case AssetConstants.BusinessForExcel.EXCEl_STATUS_INUSE: - statusInfo = "在用"; - break; - - case AssetConstants.BusinessForExcel.EXCEl_STATUS_CONSUME: - statusInfo = "消费"; - break; - default: - break; - } - return statusInfo; - } - - //=========Spring注入以及model驱动公共方法=========== - public void setAssetService(AssetIService assetService) { - this.assetService = assetService; - } - - public void setCategoryService(CategoryIService categoryService) { - this.categoryService = categoryService; - } - - public void setSupplierService(SupplierIService supplierService) { - this.supplierService = supplierService; - } - - public void setUserService(UserIService userService) { - this.userService = userService; - } - - public void setAssetnameService(AssetNameIService assetnameService) { - this.assetnameService = assetnameService; - } - - @Override - public AssetModel getModel() { - return model; - } -} diff --git a/src/main/java/com/jsh/action/asset/ReportAction.java b/src/main/java/com/jsh/action/asset/ReportAction.java deleted file mode 100644 index 6e1dff86..00000000 --- a/src/main/java/com/jsh/action/asset/ReportAction.java +++ /dev/null @@ -1,116 +0,0 @@ -package com.jsh.action.asset; - -import com.jsh.base.BaseAction; -import com.jsh.base.Log; -import com.jsh.model.po.Asset; -import com.jsh.model.vo.asset.ReportModel; -import com.jsh.service.asset.ReportIService; -import com.jsh.util.JshException; -import com.jsh.util.PageUtil; - -import java.util.HashMap; -import java.util.Map; - -@SuppressWarnings("serial") -public class ReportAction extends BaseAction { - private ReportModel model = new ReportModel(); - private ReportIService reportService; - - /** - * 查找资产信息 - * - * @return - */ - public String find() { - try { - PageUtil pageUtil = new PageUtil(); - pageUtil.setPageSize(0); - pageUtil.setCurPage(0); - pageUtil.setAdvSearch(getCondition()); - String reportType = getReportType(new HashMap()); - reportService.find(pageUtil, reportType.split("_")[0], reportType.split("_")[1]); - model.getShowModel().setReportData(pageUtil.getPageList()); - } catch (JshException e) { - Log.errorFileSync(">>>>>>>>>查找资产信息异常", e); - model.getShowModel().setMsgTip("get report data exception"); - } - return SUCCESS; - } - - /** - * 拼接搜索条件 - * - * @return - */ - private Map getCondition() { - /** - * 拼接搜索条件 - */ - Map condition = new HashMap(); - condition.put("assetname.id_n_eq", model.getAssetNameID()); - condition.put("assetname.category.id_n_eq", model.getAssetCategoryID()); - condition.put("user.id_n_eq", model.getUsernameID()); - condition.put("status_n_eq", model.getStatus()); - condition.put("supplier.id_n_eq", model.getSupplierID()); - condition.put("dataSum_s_order", "desc"); - //拼接统计数据条件 - getReportType(condition); - return condition; - } - - /** - * 获取统计条件 - * - * @param condition - */ - private String getReportType(Map condition) { -// -// -// -// -// - int reportType = model.getReportType(); - String reportTypeInfo = ""; - String reportTypeName = ""; - switch (reportType) { - case 0: - condition.put("status_s_gb", "group"); - reportTypeInfo = "status"; - reportTypeName = "status"; - break; - case 1: - condition.put("assetname.category.id_s_gb", "group"); - reportTypeInfo = "assetname.category.id"; - reportTypeName = "assetname.category.assetname"; - break; - case 2: - condition.put("supplier.id_s_gb", "group"); - reportTypeInfo = "supplier.id"; - reportTypeName = "supplier.supplier"; - break; - case 3: - condition.put("assetname.id_s_gb", "group"); - reportTypeInfo = "assetname.id"; - reportTypeName = "assetname.assetname"; - break; - case 4: - condition.put("user.id_s_gb", "group"); - reportTypeInfo = "user.id"; - reportTypeName = "user.username"; - break; - default: - break; - } - return reportTypeInfo + "_" + reportTypeName; - } - - //=========Spring注入以及model驱动公共方法=========== - public void setReportService(ReportIService reportService) { - this.reportService = reportService; - } - - @Override - public ReportModel getModel() { - return model; - } -} diff --git a/src/main/java/com/jsh/action/basic/AccountAction.java b/src/main/java/com/jsh/action/basic/AccountAction.java deleted file mode 100644 index cc7636b7..00000000 --- a/src/main/java/com/jsh/action/basic/AccountAction.java +++ /dev/null @@ -1,683 +0,0 @@ -package com.jsh.action.basic; - -import com.jsh.base.BaseAction; -import com.jsh.base.Log; -import com.jsh.model.po.*; -import com.jsh.model.vo.basic.AccountModel; -import com.jsh.service.basic.AccountIService; -import com.jsh.service.materials.AccountHeadIService; -import com.jsh.service.materials.AccountItemIService; -import com.jsh.service.materials.DepotHeadIService; -import com.jsh.util.JshException; -import com.jsh.util.PageUtil; -import com.jsh.util.Tools; -import net.sf.json.JSONArray; -import net.sf.json.JSONObject; -import org.springframework.dao.DataAccessException; - -import java.io.IOException; -import java.sql.Timestamp; -import java.text.DecimalFormat; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -/** - * 结算账户 - * - * @author ji sheng hua qq7527-18920 - */ -@SuppressWarnings("serial") -public class AccountAction extends BaseAction { - private AccountIService accountService; - private DepotHeadIService depotHeadService; - private AccountHeadIService accountHeadService; - private AccountItemIService accountItemService; - private AccountModel model = new AccountModel(); - - @SuppressWarnings({"rawtypes", "unchecked"}) - public String getAccount() { - Map mapData = model.getShowModel().getMap(); - PageUtil pageUtil = new PageUtil(); - pageUtil.setPageSize(0); - pageUtil.setCurPage(0); - try { - Map condition = pageUtil.getAdvSearch(); - condition.put("Id_s_order", "asc"); - accountService.find(pageUtil); - mapData.put("accountList", pageUtil.getPageList()); - } catch (Exception e) { - Log.errorFileSync(">>>>>>>>>>>>>查找账户信息异常", e); - model.getShowModel().setMsgTip("exception"); - } - return SUCCESS; - } - - /** - * 增加结算账户 - * - * @return - */ - public void create() { - Log.infoFileSync("==================开始调用增加结算账户方法==================="); - Boolean flag = false; - try { - Account Account = new Account(); - Account.setName(model.getName()); - Account.setSerialNo(model.getSerialNo()); - Account.setInitialAmount(model.getInitialAmount() != null ? model.getInitialAmount() : 0); - Account.setCurrentAmount(model.getCurrentAmount()); - Account.setRemark(model.getRemark()); - accountService.create(Account); - - //========标识位=========== - flag = true; - //记录操作日志使用 - tipMsg = "成功"; - tipType = 0; - } catch (DataAccessException e) { - Log.errorFileSync(">>>>>>>>>>>>>>>>>>>增加结算账户异常", e); - flag = false; - tipMsg = "失败"; - tipType = 1; - } finally { - try { - toClient(flag.toString()); - } catch (IOException e) { - Log.errorFileSync(">>>>>>>>>>>>增加结算账户回写客户端结果异常", e); - } - } - - logService.create(new Logdetails(getUser(), "增加结算账户", model.getClientIp(), - new Timestamp(System.currentTimeMillis()) - , tipType, "增加结算账户名称为 " + model.getName() + " " + tipMsg + "!", "增加结算账户" + tipMsg)); - Log.infoFileSync("==================结束调用增加结算账户方法==================="); - } - - /** - * 删除结算账户 - * - * @return - */ - public String delete() { - Log.infoFileSync("====================开始调用删除结算账户信息方法delete()================"); - try { - accountService.delete(model.getAccountID()); - tipMsg = "成功"; - tipType = 0; - } catch (DataAccessException e) { - Log.errorFileSync(">>>>>>>>>>>删除ID为 " + model.getAccountID() + " 的结算账户异常", e); - tipMsg = "失败"; - tipType = 1; - } - model.getShowModel().setMsgTip(tipMsg); - logService.create(new Logdetails(getUser(), "删除结算账户", model.getClientIp(), - new Timestamp(System.currentTimeMillis()) - , tipType, "删除结算账户ID为 " + model.getAccountID() + ",名称为 " + model.getName() + tipMsg + "!", "删除结算账户" + tipMsg)); - Log.infoFileSync("====================结束调用删除结算账户信息方法delete()================"); - return SUCCESS; - } - - /** - * 更新结算账户 - * - * @return - */ - public void update() { - Boolean flag = false; - try { - Account Account = accountService.get(model.getAccountID()); - Account.setName(model.getName()); - Account.setSerialNo(model.getSerialNo()); - Account.setInitialAmount(model.getInitialAmount() != null ? model.getInitialAmount() : 0); - Account.setCurrentAmount(model.getCurrentAmount()); - Account.setRemark(model.getRemark()); - accountService.update(Account); - - flag = true; - tipMsg = "成功"; - tipType = 0; - } catch (DataAccessException e) { - Log.errorFileSync(">>>>>>>>>>>>>修改结算账户ID为 : " + model.getAccountID() + "信息失败", e); - flag = false; - tipMsg = "失败"; - tipType = 1; - } finally { - try { - toClient(flag.toString()); - } catch (IOException e) { - Log.errorFileSync(">>>>>>>>>>>>修改结算账户回写客户端结果异常", e); - } - } - logService.create(new Logdetails(getUser(), "更新结算账户", model.getClientIp(), - new Timestamp(System.currentTimeMillis()) - , tipType, "更新结算账户ID为 " + model.getAccountID() + " " + tipMsg + "!", "更新结算账户" + tipMsg)); - } - - /** - * 更新结算账户金额 - * - * @return - */ - public void updateAmount() { - Boolean flag = false; - try { - Account Account = accountService.get(model.getAccountID()); - Account.setCurrentAmount(model.getCurrentAmount()); - accountService.update(Account); - - flag = true; - tipMsg = "成功"; - tipType = 0; - } catch (DataAccessException e) { - Log.errorFileSync(">>>>>>>>>>>>>修改结算账户ID为 : " + model.getAccountID() + "信息失败", e); - flag = false; - tipMsg = "失败"; - tipType = 1; - } finally { - try { - toClient(flag.toString()); - } catch (IOException e) { - Log.errorFileSync(">>>>>>>>>>>>修改结算账户回写客户端结果异常", e); - } - } - logService.create(new Logdetails(getUser(), "更新结算账户", model.getClientIp(), - new Timestamp(System.currentTimeMillis()) - , tipType, "更新结算账户ID为 " + model.getAccountID() + " " + tipMsg + "!", "更新结算账户" + tipMsg)); - } - - /** - * 更新结算账户-设置是否默认 - * - * @return - */ - public void updateAmountIsDefault() { - Boolean flag = false; - try { - Account Account = accountService.get(model.getAccountID()); - Account.setIsDefault(model.getIsDefault()); - accountService.update(Account); - flag = true; - tipMsg = "成功"; - tipType = 0; - } catch (DataAccessException e) { - Log.errorFileSync(">>>>>>>>>>>>>修改结算账户ID为 : " + model.getAccountID() + "信息失败", e); - flag = false; - tipMsg = "失败"; - tipType = 1; - } finally { - try { - toClient(flag.toString()); - } catch (IOException e) { - Log.errorFileSync(">>>>>>>>>>>>修改结算账户回写客户端结果异常", e); - } - } - //如果改为默认账户时记录日志 - if (model.getIsDefault()) { - logService.create(new Logdetails(getUser(), "更新默认账户", model.getClientIp(), new Timestamp(System.currentTimeMillis()), - tipType, "更新账户ID" + model.getAccountID() + "为默认账户" + tipMsg + "!", "更新默认账户" + tipMsg)); - } - } - - /** - * 批量删除指定ID结算账户 - * - * @return - */ - public String batchDelete() { - try { - accountService.batchDelete(model.getAccountIDs()); - model.getShowModel().setMsgTip("成功"); - //记录操作日志使用 - tipMsg = "成功"; - tipType = 0; - } catch (DataAccessException e) { - Log.errorFileSync(">>>>>>>>>>>批量删除结算账户ID为:" + model.getAccountIDs() + "信息异常", e); - tipMsg = "失败"; - tipType = 1; - } - - logService.create(new Logdetails(getUser(), "批量删除结算账户", model.getClientIp(), - new Timestamp(System.currentTimeMillis()) - , tipType, "批量删除结算账户ID为 " + model.getAccountIDs() + " " + tipMsg + "!", "批量删除结算账户" + tipMsg)); - return SUCCESS; - } - - /** - * 检查输入名称是否存在 - */ - public void checkIsNameExist() { - Boolean flag = false; - try { - flag = accountService.checkIsNameExist("name", model.getName(), "id", model.getAccountID()); - } catch (DataAccessException e) { - Log.errorFileSync(">>>>>>>>>>>>>>>>>检查结算账户名称为:" + model.getName() + " ID为: " + model.getAccountID() + " 是否存在异常!"); - } finally { - try { - toClient(flag.toString()); - } catch (IOException e) { - Log.errorFileSync(">>>>>>>>>>>>回写检查结算账户名称为:" + model.getName() + " ID为: " + model.getAccountID() + " 是否存在异常!", e); - } - } - } - - /** - * 查找结算账户信息 - * - * @return - */ - public void findBy() { - try { - PageUtil pageUtil = new PageUtil(); - pageUtil.setPageSize(model.getPageSize()); - pageUtil.setCurPage(model.getPageNo()); - pageUtil.setAdvSearch(getCondition()); - accountService.find(pageUtil); - List dataList = pageUtil.getPageList(); - - JSONObject outer = new JSONObject(); - outer.put("total", pageUtil.getTotalCount()); - //存放数据json数组 - JSONArray dataArray = new JSONArray(); - if (null != dataList) { - for (Account account : dataList) { - DecimalFormat df = new DecimalFormat(".##"); - JSONObject item = new JSONObject(); - item.put("id", account.getId()); - //结算账户名称 - item.put("name", account.getName()); - item.put("serialNo", account.getSerialNo()); - item.put("initialAmount", account.getInitialAmount()); - String timeStr = Tools.getCurrentMonth(); - Double thisMonthAmount = getAccountSum(account.getId(), timeStr, "month") + getAccountSumByHead(account.getId(), timeStr, "month") + getAccountSumByDetail(account.getId(), timeStr, "month") + getManyAccountSum(account.getId(), timeStr, "month"); - String thisMonthAmountFmt = "0"; - if (thisMonthAmount != 0) { - thisMonthAmountFmt = df.format(thisMonthAmount); - } - item.put("thisMonthAmount", thisMonthAmountFmt); //本月发生额 - Double currentAmount = getAccountSum(account.getId(), "", "month") + getAccountSumByHead(account.getId(), "", "month") + getAccountSumByDetail(account.getId(), "", "month") + getManyAccountSum(account.getId(), "", "month") + account.getInitialAmount(); - String currentAmountFmt = df.format(currentAmount); - item.put("currentAmount", currentAmountFmt); //当前余额 - item.put("isDefault", account.getIsDefault()); //是否默认 - item.put("remark", account.getRemark()); - item.put("op", 1); - dataArray.add(item); - } - } - outer.put("rows", dataArray); - //回写查询结果 - toClient(outer.toString()); - } catch (DataAccessException e) { - Log.errorFileSync(">>>>>>>>>查找结算账户信息异常", e); - } catch (IOException e) { - Log.errorFileSync(">>>>>>>>>回写查询结算账户信息结果异常", e); - } - } - - /** - * 单个账户的金额求和-入库和出库 - * - * @param id - * @return - */ - public Double getAccountSum(Long id, String timeStr, String type) { - Double accountSum = 0.0; - try { - PageUtil pageUtil = new PageUtil(); - pageUtil.setPageSize(0); - pageUtil.setCurPage(0); - pageUtil.setAdvSearch(getCondition_getSum(id, timeStr, type)); - depotHeadService.find(pageUtil); - List dataList = pageUtil.getPageList(); - if (dataList != null) { - for (DepotHead depotHead : dataList) { - accountSum = accountSum + depotHead.getChangeAmount(); - } - } - } catch (DataAccessException e) { - Log.errorFileSync(">>>>>>>>>查找进销存信息异常", e); - } - return accountSum; - } - - /** - * 单个账户的金额求和-收入、支出、转账的单据表头的合计 - * - * @param id - * @return - */ - public Double getAccountSumByHead(Long id, String timeStr, String type) { - Double accountSum = 0.0; - try { - PageUtil pageUtil = new PageUtil(); - pageUtil.setPageSize(0); - pageUtil.setCurPage(0); - pageUtil.setAdvSearch(getCondition_getSumByHead(id, timeStr, type)); - accountHeadService.find(pageUtil); - List dataList = pageUtil.getPageList(); - if (dataList != null) { - for (AccountHead accountHead : dataList) { - accountSum = accountSum + accountHead.getChangeAmount(); - } - } - } catch (DataAccessException e) { - Log.errorFileSync(">>>>>>>>>查找进销存信息异常", e); - } - return accountSum; - } - - /** - * 单个账户的金额求和-收款、付款、转账、收预付款的单据明细的合计 - * - * @param id - * @return - */ - public Double getAccountSumByDetail(Long id, String timeStr, String type) { - Double accountSum = 0.0; - try { - PageUtil pageUtil = new PageUtil(); - pageUtil.setPageSize(0); - pageUtil.setCurPage(0); - pageUtil.setAdvSearch(getCondition_getSumByHead(timeStr, type)); - accountHeadService.find(pageUtil); - List dataList = pageUtil.getPageList(); - if (dataList != null) { - String ids = ""; - for (AccountHead accountHead : dataList) { - ids = ids + accountHead.getId() + ","; - } - if (!ids.equals("")) { - ids = ids.substring(0, ids.length() - 1); - } - PageUtil pageUtilOne = new PageUtil(); - pageUtilOne.setPageSize(0); - pageUtilOne.setCurPage(0); - pageUtilOne.setAdvSearch(getCondition_getSumByDetail(id, ids)); - accountItemService.find(pageUtilOne); - List dataListOne = pageUtilOne.getPageList(); - if (dataListOne != null) { - for (AccountItem accountItem : dataListOne) { - accountSum = accountSum + accountItem.getEachAmount(); - } - } - } - } catch (DataAccessException e) { - Log.errorFileSync(">>>>>>>>>查找进销存信息异常", e); - } catch (Exception e) { - Log.errorFileSync(">>>>>>>>>异常信息:", e); - } - return accountSum; - } - - /** - * 单个账户的金额求和-多账户的明细合计 - * - * @param id - * @return - */ - public Double getManyAccountSum(Long id, String timeStr, String type) { - Double accountSum = 0.0; - try { - PageUtil pageUtil = new PageUtil(); - pageUtil.setPageSize(0); - pageUtil.setCurPage(0); - pageUtil.setAdvSearch(getCondition_getManyAccountSum(id, timeStr, type)); - depotHeadService.find(pageUtil); - List dataList = pageUtil.getPageList(); - if (dataList != null) { - for (DepotHead depotHead : dataList) { - String accountIdList = depotHead.getAccountIdList(); - String accountMoneyList = depotHead.getAccountMoneyList(); - accountIdList = accountIdList.replace("[", "").replace("]", "").replace("\"", ""); - accountMoneyList = accountMoneyList.replace("[", "").replace("]", "").replace("\"", ""); - String[] aList = accountIdList.split(","); - String[] amList = accountMoneyList.split(","); - for (int i = 0; i < aList.length; i++) { - if (aList[i].toString().equals(id.toString())) { - accountSum = accountSum + Double.parseDouble(amList[i].toString()); - } - } - } - } - } catch (DataAccessException e) { - Log.errorFileSync(">>>>>>>>>查找信息异常", e); - } - return accountSum; - } - - /** - * 查找结算账户信息-下拉框 - * - * @return - */ - public void findBySelect() { - try { - PageUtil pageUtil = new PageUtil(); - pageUtil.setPageSize(0); - pageUtil.setCurPage(0); - pageUtil.setAdvSearch(getCondition_select()); - accountService.find(pageUtil); - List dataList = pageUtil.getPageList(); - //存放数据json数组 - JSONArray dataArray = new JSONArray(); - if (null != dataList) { - for (Account account : dataList) { - JSONObject item = new JSONObject(); - item.put("Id", account.getId()); - //结算账户名称 - item.put("AccountName", account.getName()); - dataArray.add(item); - } - } - //回写查询结果 - toClient(dataArray.toString()); - } catch (DataAccessException e) { - Log.errorFileSync(">>>>>>>>>查找结算账户信息异常", e); - } catch (IOException e) { - Log.errorFileSync(">>>>>>>>>回写查询结算账户信息结果异常", e); - } - } - - /** - * 账户流水信息 - */ - public void findAccountInOutList() { - PageUtil pageUtil = new PageUtil(); - pageUtil.setPageSize(model.getPageSize()); - pageUtil.setCurPage(model.getPageNo()); - Long accountId = model.getAccountID(); - Double initialAmount = model.getInitialAmount(); - try { - accountService.findAccountInOutList(pageUtil, accountId); - List dataList = pageUtil.getPageList(); - JSONObject outer = new JSONObject(); - outer.put("total", pageUtil.getTotalCount()); - //存放数据json数组 - JSONArray dataArray = new JSONArray(); - if (dataList != null) { - for (Integer i = 0; i < dataList.size(); i++) { - JSONObject item = new JSONObject(); - Object dl = dataList.get(i); //获取对象 - Object[] arr = (Object[]) dl; //转为数组 - item.put("number", arr[0]); //单据编号 - item.put("type", arr[1]); //类型 - item.put("supplierName", arr[2]); //单位信息 - item.put("changeAmount", arr[3]); //金额 - String timeStr = arr[4].toString(); - Double balance = getAccountSum(accountId, timeStr, "date") + getAccountSumByHead(accountId, timeStr, "date") - + getAccountSumByDetail(accountId, timeStr, "date") + getManyAccountSum(accountId, timeStr, "date") + initialAmount; - item.put("balance", balance); //余额 - item.put("operTime", arr[4]); //入库出库日期 - item.put("aList", arr[5]); //多账户的id列表 - item.put("amList", arr[6]); //多账户的金额列表 - dataArray.add(item); - } - } - outer.put("rows", dataArray); - //回写查询结果 - toClient(outer.toString()); - } catch (JshException e) { - Log.errorFileSync(">>>>>>>>>>>>>>>>>>>查找信息异常", e); - } catch (IOException e) { - Log.errorFileSync(">>>>>>>>>>>>>>>>>>>回写查询信息结果异常", e); - } - } - - /** - * 拼接搜索条件 - * - * @return - */ - private Map getCondition() { - /** - * 拼接搜索条件 - */ - Map condition = new HashMap(); - condition.put("name_s_like", model.getName()); - condition.put("serialNo_s_like", model.getSerialNo()); - condition.put("remark_s_like", model.getRemark()); - condition.put("id_s_order", "desc"); - return condition; - } - - /** - * 拼接搜索条件-下拉框-结算账户 - * - * @return - */ - private Map getCondition_select() { - /** - * 拼接搜索条件 - */ - Map condition = new HashMap(); - condition.put("id_s_order", "desc"); - return condition; - } - - /** - * 拼接搜索条件 - * - * @return - */ - private Map getCondition_getSum(Long id, String timeStr, String type) { - /** - * 拼接搜索条件 - */ - Map condition = new HashMap(); - condition.put("AccountId_n_eq", id); - condition.put("PayType_s_neq", "预付款"); - if (!timeStr.equals("")) { - if (type.equals("month")) { - condition.put("OperTime_s_gteq", timeStr + "-01 00:00:00"); - condition.put("OperTime_s_lteq", timeStr + "-31 00:00:00"); - } else if (type.equals("date")) { - condition.put("OperTime_s_lteq", timeStr); - } - } - return condition; - } - - /** - * 拼接搜索条件 - * - * @return - */ - private Map getCondition_getManyAccountSum(Long id, String timeStr, String type) { - /** - * 拼接搜索条件 - */ - Map condition = new HashMap(); - condition.put("AccountIdList_s_like", "\"" + id.toString() + "\""); - if (!timeStr.equals("")) { - if (type.equals("month")) { - condition.put("OperTime_s_gteq", timeStr + "-01 00:00:00"); - condition.put("OperTime_s_lteq", timeStr + "-31 00:00:00"); - } else if (type.equals("date")) { - condition.put("OperTime_s_lteq", timeStr); - } - } - return condition; - } - - /** - * 拼接搜索条件 - * - * @return - */ - private Map getCondition_getSumByHead(Long id, String timeStr, String type) { - /** - * 拼接搜索条件 - */ - Map condition = new HashMap(); - condition.put("AccountId_n_eq", id); - if (!timeStr.equals("")) { - if (type.equals("month")) { - condition.put("BillTime_s_gteq", timeStr + "-01 00:00:00"); - condition.put("BillTime_s_lteq", timeStr + "-31 00:00:00"); - } else if (type.equals("date")) { - condition.put("BillTime_s_lteq", timeStr); - } - } - return condition; - } - - /** - * 拼接搜索条件 - * - * @return - */ - private Map getCondition_getSumByHead(String timeStr, String type) { - /** - * 拼接搜索条件 - */ - Map condition = new HashMap(); - if (!timeStr.equals("")) { - if (type.equals("month")) { - condition.put("BillTime_s_gteq", timeStr + "-01 00:00:00"); - condition.put("BillTime_s_lteq", timeStr + "-31 00:00:00"); - } else if (type.equals("date")) { - condition.put("BillTime_s_lteq", timeStr); - } - } - return condition; - } - - /** - * 拼接搜索条件 - * - * @return - */ - private Map getCondition_getSumByDetail(Long id, String ids) { - /** - * 拼接搜索条件 - */ - Map condition = new HashMap(); - condition.put("AccountId_n_eq", id); - if (!ids.equals("")) { - condition.put("HeaderId_s_in", ids); - } - return condition; - } - - //=============以下spring注入以及Model驱动公共方法,与Action处理无关================== - @Override - public AccountModel getModel() { - return model; - } - - public void setAccountService(AccountIService accountService) { - this.accountService = accountService; - } - - public void setDepotHeadService(DepotHeadIService depotHeadService) { - this.depotHeadService = depotHeadService; - } - - public void setAccountHeadService(AccountHeadIService accountHeadService) { - this.accountHeadService = accountHeadService; - } - - public void setAccountItemService(AccountItemIService accountItemService) { - this.accountItemService = accountItemService; - } -} diff --git a/src/main/java/com/jsh/action/basic/AppAction.java b/src/main/java/com/jsh/action/basic/AppAction.java deleted file mode 100644 index 71d623bf..00000000 --- a/src/main/java/com/jsh/action/basic/AppAction.java +++ /dev/null @@ -1,482 +0,0 @@ -package com.jsh.action.basic; - -import com.jsh.base.BaseAction; -import com.jsh.base.Log; -import com.jsh.model.po.App; -import com.jsh.model.po.Logdetails; -import com.jsh.model.vo.basic.AppModel; -import com.jsh.service.basic.AppIService; -import com.jsh.service.basic.UserBusinessIService; -import com.jsh.util.PageUtil; -import net.sf.json.JSONArray; -import net.sf.json.JSONObject; -import org.apache.struts2.ServletActionContext; -import org.springframework.dao.DataAccessException; - -import java.io.*; -import java.sql.Timestamp; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -/** - * 应用 - * - * @author ji_sheng_hua qq752 718 920 - */ -@SuppressWarnings("serial") -public class AppAction extends BaseAction { - private AppIService appService; - private UserBusinessIService userBusinessService; - private AppModel model = new AppModel(); - - /** - * 上传图片 - */ - public void uploadImg() { - Log.infoFileSync("==================开始调用上传图片方法uploadImg()==================="); - File fileInfo = model.getFileInfo(); - String fileName = model.getFileInfoName(); //获取文件名 - try { - if (fileInfo != null) { - String path = ServletActionContext.getServletContext().getRealPath("/upload/images/deskIcon"); - InputStream is = new FileInputStream(fileInfo); - File file = new File(path, fileName); - OutputStream os = new FileOutputStream(file); - byte[] b = new byte[1024]; - int bs = 0; - while ((bs = is.read(b)) > 0) { - os.write(b, 0, bs); - } - is.close(); - os.close(); - } - } catch (FileNotFoundException e) { - // TODO Auto-generated catch block - // e.printStackTrace(); - } catch (IOException e) { - // TODO Auto-generated catch block - // e.printStackTrace(); - } - Log.infoFileSync("==================结束调用上传图片方法uploadImg()==================="); - } - - /** - * 增加应用 - * - * @return - */ - public void create() { - Log.infoFileSync("==================开始调用增加应用方法create()==================="); - Boolean flag = false; - try { - App app = new App(); - app.setNumber(model.getNumber()); - app.setName(model.getName()); - app.setType(model.getType()); - app.setIcon(model.getIcon()); //设置图片Icon - app.setURL(model.getURL()); - app.setWidth(model.getWidth()); - app.setHeight(model.getHeight()); - app.setReSize(model.getReSize()); - app.setOpenMax(model.getOpenMax()); - app.setFlash(model.getFlash()); - app.setZL(model.getZL()); - app.setSort(model.getSort()); - app.setRemark(model.getRemark()); - app.setEnabled(model.getEnabled()); - appService.create(app); - - //========标识位=========== - flag = true; - //记录操作日志使用 - tipMsg = "成功"; - tipType = 0; - } catch (DataAccessException e) { - Log.errorFileSync(">>>>>>>>>>>>>>>>>>>增加应用异常", e); - flag = false; - tipMsg = "失败"; - tipType = 1; - } finally { - try { - toClient(flag.toString()); - } catch (IOException e) { - Log.errorFileSync(">>>>>>>>>>>>增加应用回写客户端结果异常", e); - } - } - - logService.create(new Logdetails(getUser(), "增加应用", model.getClientIp(), - new Timestamp(System.currentTimeMillis()) - , tipType, "增加应用名称为 " + model.getName() + " " + tipMsg + "!", "增加应用" + tipMsg)); - Log.infoFileSync("==================结束调用增加应用方法create()==================="); - } - - /** - * 删除应用 - * - * @return - */ - public String delete() { - Log.infoFileSync("====================开始调用删除应用方法delete()================"); - try { - appService.delete(model.getAppID()); - tipMsg = "成功"; - tipType = 0; - } catch (DataAccessException e) { - Log.errorFileSync(">>>>>>>>>>>删除ID为 " + model.getAppID() + " 的应用异常", e); - tipMsg = "失败"; - tipType = 1; - } - model.getShowModel().setMsgTip(tipMsg); - logService.create(new Logdetails(getUser(), "删除应用", model.getClientIp(), - new Timestamp(System.currentTimeMillis()) - , tipType, "删除应用ID为 " + model.getAppID() + " " + tipMsg + "!", "删除应用" + tipMsg)); - Log.infoFileSync("====================结束调用删除应用方法delete()================"); - return SUCCESS; - } - - /** - * 更新仓库 - * - * @return - */ - public void update() { - Boolean flag = false; - try { - App app = appService.get(model.getAppID()); - app.setNumber(model.getNumber()); - app.setName(model.getName()); - app.setType(model.getType()); - //app.setIcon(model.getIcon()); - app.setURL(model.getURL()); - app.setWidth(model.getWidth()); - app.setHeight(model.getHeight()); - app.setReSize(model.getReSize()); - app.setOpenMax(model.getOpenMax()); - app.setFlash(model.getFlash()); - app.setZL(model.getZL()); - app.setSort(model.getSort()); - app.setRemark(model.getRemark()); - app.setEnabled(model.getEnabled()); - appService.update(app); - - flag = true; - tipMsg = "成功"; - tipType = 0; - } catch (DataAccessException e) { - Log.errorFileSync(">>>>>>>>>>>>>修改应用ID为 : " + model.getAppID() + "信息失败", e); - flag = false; - tipMsg = "失败"; - tipType = 1; - } finally { - try { - toClient(flag.toString()); - } catch (IOException e) { - Log.errorFileSync(">>>>>>>>>>>>修改应用回写客户端结果异常", e); - } - } - logService.create(new Logdetails(getUser(), "更新应用", model.getClientIp(), - new Timestamp(System.currentTimeMillis()) - , tipType, "更新应用ID为 " + model.getAppID() + " " + tipMsg + "!", "更新应用" + tipMsg)); - } - - /** - * 批量删除指定ID应用 - * - * @return - */ - public String batchDelete() { - try { - appService.batchDelete(model.getAppIDs()); - model.getShowModel().setMsgTip("成功"); - //记录操作日志使用 - tipMsg = "成功"; - tipType = 0; - } catch (DataAccessException e) { - Log.errorFileSync(">>>>>>>>>>>批量删除应用ID为:" + model.getAppIDs() + "信息异常", e); - tipMsg = "失败"; - tipType = 1; - } - - logService.create(new Logdetails(getUser(), "批量删除应用", model.getClientIp(), - new Timestamp(System.currentTimeMillis()) - , tipType, "批量删除应用ID为 " + model.getAppIDs() + " " + tipMsg + "!", "批量删除应用" + tipMsg)); - return SUCCESS; - } - - /** - * 检查输入名称是否存在 - */ - public void checkIsNameExist() { - Boolean flag = false; - try { - flag = appService.checkIsNameExist("name", model.getName(), "Id", model.getAppID()); - } catch (DataAccessException e) { - Log.errorFileSync(">>>>>>>>>>>>>>>>>检查应用名称为:" + model.getName() + " ID为: " + model.getAppID() + " 是否存在异常!"); - } finally { - try { - toClient(flag.toString()); - } catch (IOException e) { - Log.errorFileSync(">>>>>>>>>>>>回写检查应用名称为:" + model.getName() + " ID为: " + model.getAppID() + " 是否存在异常!", e); - } - } - } - - /** - * 查找应用信息 - * - * @return - */ - public void findBy() { - try { - PageUtil pageUtil = new PageUtil(); - pageUtil.setPageSize(model.getPageSize()); - pageUtil.setCurPage(model.getPageNo()); - pageUtil.setAdvSearch(getCondition()); - appService.find(pageUtil); - List dataList = pageUtil.getPageList(); - - //开始拼接json数据 -// {"total":28,"rows":[ -// {"productid":"AV-CB-01","attr1":"Adult Male","itemid":"EST-18"} -// ]} - JSONObject outer = new JSONObject(); - outer.put("total", pageUtil.getTotalCount()); - //存放数据json数组 - JSONArray dataArray = new JSONArray(); - if (null != dataList) { - for (App app : dataList) { - JSONObject item = new JSONObject(); - item.put("Id", app.getId()); - //应用名称 - item.put("Number", app.getNumber()); - item.put("Name", app.getName()); - item.put("Type", app.getType()); - item.put("Icon", app.getIcon()); - item.put("URL", app.getURL()); - item.put("Width", app.getWidth()); - item.put("Height", app.getHeight()); - item.put("ReSize", app.getReSize()); - item.put("OpenMax", app.getOpenMax()); - item.put("Flash", app.getFlash()); - item.put("ZL", app.getZL()); - item.put("Sort", app.getSort()); - item.put("Remark", app.getRemark()); - item.put("Enabled", app.getEnabled()); - item.put("op", 1); - dataArray.add(item); - } - } - outer.put("rows", dataArray); - //回写查询结果 - toClient(outer.toString()); - } catch (DataAccessException e) { - Log.errorFileSync(">>>>>>>>>>>>>>>>>>>查找应用异常", e); - } catch (IOException e) { - Log.errorFileSync(">>>>>>>>>>>>>>>>>>>回写查询应用结果异常", e); - } - } - - /** - * 桌面应用显示 - * - * @return - */ - public void findDesk() { - try { - PageUtil pageUtil = new PageUtil(); - pageUtil.setPageSize(100); - //pageUtil.setCurPage(model.getPageNo()); - - JSONObject outer = new JSONObject(); - - //下面是dock - pageUtil.setAdvSearch(getCondition_dock()); - appService.find(pageUtil); - List dataList1 = pageUtil.getPageList(); - - //开始拼接json数据 - //存放数据json数组 - JSONArray dataArray1 = new JSONArray(); - if (null != dataList1) { - for (App app : dataList1) { - JSONObject item = new JSONObject(); - item.put("id", app.getId()); - item.put("title", app.getName()); - item.put("type", app.getType()); - item.put("icon", "../../upload/images/deskIcon/" + app.getIcon()); - item.put("url", app.getURL()); - item.put("width", app.getWidth()); - item.put("height", app.getHeight()); - item.put("isresize", app.getReSize()); - item.put("isopenmax", app.getOpenMax()); - item.put("isflash", app.getFlash()); - dataArray1.add(item); - } - } - outer.put("dock", dataArray1); - - //下面是desk - pageUtil.setAdvSearch(getCondition_desk()); - appService.find(pageUtil); - List dataList2 = pageUtil.getPageList(); - - //开始拼接json数据 - //存放数据json数组 - JSONArray dataArray2 = new JSONArray(); - if (null != dataList2) { - for (App app : dataList2) { - JSONObject item = new JSONObject(); - item.put("id", app.getId()); - item.put("title", app.getName()); - item.put("type", app.getType()); - item.put("icon", "../../upload/images/deskIcon/" + app.getIcon()); - item.put("url", "../../pages/common/menu.jsp?appID=" + app.getNumber() + "&id=" + app.getId()); - item.put("width", app.getWidth()); - item.put("height", app.getHeight()); - item.put("isresize", app.getReSize()); - item.put("isopenmax", app.getOpenMax()); - item.put("isflash", app.getFlash()); - dataArray2.add(item); - } - } - outer.put("desk", dataArray2); - //回写查询结果 - toClient(outer.toString()); - } catch (DataAccessException e) { - Log.errorFileSync(">>>>>>>>>>>>>>>>>>>查找应用异常", e); - } catch (IOException e) { - Log.errorFileSync(">>>>>>>>>>>>>>>>>>>回写查询应用结果异常", e); - } - } - - - /** - * 角色对应应用显示 - * - * @return - */ - public void findRoleAPP() { - try { - PageUtil pageUtil = new PageUtil(); - pageUtil.setPageSize(100); - //pageUtil.setCurPage(model.getPageNo()); - - pageUtil.setAdvSearch(getCondition_RoleAPP()); - appService.find(pageUtil); - List dataList = pageUtil.getPageList(); - - //开始拼接json数据 - JSONObject outer = new JSONObject(); - outer.put("id", 1); - outer.put("text", "应用列表"); - outer.put("state", "open"); - //存放数据json数组 - JSONArray dataArray = new JSONArray(); - if (null != dataList) { - for (App app : dataList) { - JSONObject item = new JSONObject(); - item.put("id", app.getId()); - item.put("text", app.getName()); - //勾选判断1 - Boolean flag = false; - try { - flag = userBusinessService.checkIsUserBusinessExist("Type", model.getUBType(), "KeyId", model.getUBKeyId(), "Value", "[" + app.getId().toString() + "]"); - } catch (DataAccessException e) { - Log.errorFileSync(">>>>>>>>>>>>>>>>>设置角色对应的应用:类型" + model.getUBType() + " KeyId为: " + model.getUBKeyId() + " 存在异常!"); - } - if (flag == true) { - item.put("checked", true); - } - //结束 - dataArray.add(item); - } - } - outer.put("children", dataArray); - //回写查询结果 - toClient("[" + outer.toString() + "]"); - } catch (DataAccessException e) { - Log.errorFileSync(">>>>>>>>>>>>>>>>>>>查找应用异常", e); - } catch (IOException e) { - Log.errorFileSync(">>>>>>>>>>>>>>>>>>>回写查询应用结果异常", e); - } - } - - /** - * 拼接搜索条件 - * - * @return - */ - private Map getCondition() { - /** - * 拼接搜索条件 - */ - Map condition = new HashMap(); - condition.put("Name_s_like", model.getName()); - condition.put("Type_s_like", model.getType()); - condition.put("Sort_s_order", "asc"); - return condition; - } - - /** - * 拼接搜索条件-桌面dock - * - * @return - */ - private Map getCondition_dock() { - /** - * 拼接搜索条件 - */ - Map condition = new HashMap(); - condition.put("ZL_s_eq", "dock"); - condition.put("Enabled_n_eq", 1); - condition.put("Sort_s_order", "asc"); - return condition; - } - - /** - * 拼接搜索条件-桌面desk - * - * @return - */ - private Map getCondition_desk() { - /** - * 拼接搜索条件 - */ - Map condition = new HashMap(); - condition.put("ZL_s_eq", "desk"); - condition.put("Enabled_n_eq", 1); - condition.put("Sort_s_order", "asc"); - return condition; - } - - /** - * 拼接搜索条件-角色对应应用 - * - * @return - */ - private Map getCondition_RoleAPP() { - /** - * 拼接搜索条件 - */ - Map condition = new HashMap(); - condition.put("Enabled_n_eq", 1); - condition.put("Sort_s_order", "asc"); - return condition; - } - - //=============以下spring注入以及Model驱动公共方法,与Action处理无关================== - @Override - public AppModel getModel() { - return model; - } - - public void setAppService(AppIService appService) { - this.appService = appService; - } - - public void setUserBusinessService(UserBusinessIService userBusinessService) { - this.userBusinessService = userBusinessService; - } - -} diff --git a/src/main/java/com/jsh/action/basic/AssetNameAction.java b/src/main/java/com/jsh/action/basic/AssetNameAction.java deleted file mode 100644 index 30ba0b58..00000000 --- a/src/main/java/com/jsh/action/basic/AssetNameAction.java +++ /dev/null @@ -1,247 +0,0 @@ -package com.jsh.action.basic; - -import com.jsh.base.BaseAction; -import com.jsh.base.Log; -import com.jsh.model.po.Assetname; -import com.jsh.model.po.Category; -import com.jsh.model.po.Logdetails; -import com.jsh.model.vo.basic.AssetNameModel; -import com.jsh.service.basic.AssetNameIService; -import com.jsh.util.PageUtil; -import net.sf.json.JSONArray; -import net.sf.json.JSONObject; -import org.springframework.dao.DataAccessException; - -import java.io.IOException; -import java.sql.Timestamp; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -@SuppressWarnings("serial") -public class AssetNameAction extends BaseAction { - private AssetNameModel model = new AssetNameModel(); - - private AssetNameIService assetnameService; - - /** - * 增加资产名称 - * - * @return - */ - public void create() { - Log.infoFileSync("==================开始调用增加资产名称方法create()==================="); - Boolean flag = false; - try { - Assetname assetname = new Assetname(); - assetname.setAssetname(model.getAssetName()); - //增加资产类型 - assetname.setCategory(new Category(model.getCategoryID())); - - assetname.setIsystem((short) 1); - assetname.setIsconsumables(model.getConsumable()); - assetname.setDescription(model.getDescription()); - assetnameService.create(assetname); - - //========标识位=========== - flag = true; - //记录操作日志使用 - tipMsg = "成功"; - tipType = 0; - } catch (DataAccessException e) { - Log.errorFileSync(">>>>>>>>>>>>>>>>>>>增加资产名称异常", e); - flag = false; - tipMsg = "失败"; - tipType = 1; - } finally { - try { - toClient(flag.toString()); - } catch (IOException e) { - Log.errorFileSync(">>>>>>>>>>>>增加资产名称回写客户端结果异常", e); - } - } - - logService.create(new Logdetails(getUser(), "增加资产名称", model.getClientIp(), - new Timestamp(System.currentTimeMillis()) - , tipType, "增加资产名称名称为 " + model.getAssetName() + " " + tipMsg + "!", "增加资产名称" + tipMsg)); - Log.infoFileSync("==================结束调用增加资产名称方法create()==================="); - } - - /** - * 删除资产名称 - * - * @return - */ - public String delete() { - Log.infoFileSync("====================开始调用删除资产名称信息方法delete()================"); - try { - assetnameService.delete(model.getAssetNameID()); - tipMsg = "成功"; - tipType = 0; - } catch (DataAccessException e) { - Log.errorFileSync(">>>>>>>>>>>删除ID为 " + model.getAssetNameID() + " 的资产名称异常", e); - tipMsg = "失败"; - tipType = 1; - } - model.getShowModel().setMsgTip(tipMsg); - logService.create(new Logdetails(getUser(), "删除资产名称", model.getClientIp(), - new Timestamp(System.currentTimeMillis()) - , tipType, "删除资产名称ID为 " + model.getAssetNameID() + " " + tipMsg + "!", "删除资产名称" + tipMsg)); - Log.infoFileSync("====================结束调用删除资产名称信息方法delete()================"); - return SUCCESS; - } - - /** - * 更新资产名称 - * - * @return - */ - public void update() { - Boolean flag = false; - try { - Assetname assetname = assetnameService.get(model.getAssetNameID()); - //增加资产类型 - assetname.setCategory(new Category(model.getCategoryID())); - assetname.setAssetname(model.getAssetName()); - assetname.setIsconsumables(model.getConsumable()); - assetname.setDescription(model.getDescription()); - assetnameService.update(assetname); - - flag = true; - tipMsg = "成功"; - tipType = 0; - } catch (DataAccessException e) { - Log.errorFileSync(">>>>>>>>>>>>>修改资产名称ID为 : " + model.getAssetNameID() + "信息失败", e); - flag = false; - tipMsg = "失败"; - tipType = 1; - } finally { - try { - toClient(flag.toString()); - } catch (IOException e) { - Log.errorFileSync(">>>>>>>>>>>>修改资产名称回写客户端结果异常", e); - } - } - logService.create(new Logdetails(getUser(), "更新资产名称", model.getClientIp(), - new Timestamp(System.currentTimeMillis()) - , tipType, "更新资产名称ID为 " + model.getAssetNameID() + " " + tipMsg + "!", "更新资产名称" + tipMsg)); - } - - /** - * 批量删除指定ID资产名称 - * - * @return - */ - public String batchDelete() { - try { - assetnameService.batchDelete(model.getAssetNameIDs()); - model.getShowModel().setMsgTip("成功"); - //记录操作日志使用 - tipMsg = "成功"; - tipType = 0; - } catch (DataAccessException e) { - Log.errorFileSync(">>>>>>>>>>>批量删除资产名称ID为:" + model.getAssetNameIDs() + "信息异常", e); - tipMsg = "失败"; - tipType = 1; - } - - logService.create(new Logdetails(getUser(), "批量删除资产名称", model.getClientIp(), - new Timestamp(System.currentTimeMillis()) - , tipType, "批量删除资产名称ID为 " + model.getAssetNameIDs() + " " + tipMsg + "!", "批量删除资产名称" + tipMsg)); - return SUCCESS; - } - - /** - * 检查输入名称是否存在 - */ - public void checkIsNameExist() { - Boolean flag = false; - try { - flag = assetnameService.checkIsNameExist("assetname", model.getAssetName(), "id", model.getAssetNameID()); - } catch (DataAccessException e) { - Log.errorFileSync(">>>>>>>>>>>>>>>>>检查资产名称名称为:" + model.getAssetName() + " ID为: " + model.getAssetNameID() + " 是否存在异常!"); - } finally { - try { - toClient(flag.toString()); - } catch (IOException e) { - Log.errorFileSync(">>>>>>>>>>>>回写检查资产名称名称为:" + model.getAssetName() + " ID为: " + model.getAssetNameID() + " 是否存在异常!", e); - } - } - } - - /** - * 查找供应商信息 - * - * @return - */ - public void findBy() { - try { - PageUtil pageUtil = new PageUtil(); - pageUtil.setPageSize(model.getPageSize()); - pageUtil.setCurPage(model.getPageNo()); - pageUtil.setAdvSearch(getCondition()); - assetnameService.find(pageUtil); - List dataList = pageUtil.getPageList(); - - //开始拼接json数据 -// {"total":28,"rows":[ -// {"productid":"AV-CB-01","attr1":"Adult Male","itemid":"EST-18"} -// ]} - JSONObject outer = new JSONObject(); - outer.put("total", pageUtil.getTotalCount()); - //存放数据json数组 - JSONArray dataArray = new JSONArray(); - if (null != dataList) { - for (Assetname assetname : dataList) { - JSONObject item = new JSONObject(); - item.put("id", assetname.getId()); - //供应商名称 - item.put("assetname", assetname.getAssetname()); - item.put("isystem", assetname.getIsystem() == (short) 0 ? "是" : "否"); - item.put("consumable", assetname.getIsconsumables() == (short) 0 ? "是" : "否"); - item.put("consumableStatus", assetname.getIsconsumables()); - item.put("description", assetname.getDescription()); - item.put("categoryID", assetname.getCategory().getId()); - item.put("category", assetname.getCategory().getAssetname()); - item.put("op", assetname.getIsystem()); - dataArray.add(item); - } - } - outer.put("rows", dataArray); - //回写查询结果 - toClient(outer.toString()); - } catch (DataAccessException e) { - Log.errorFileSync(">>>>>>>>>>>>>>>>>>>查找资产名称信息异常", e); - } catch (IOException e) { - Log.errorFileSync(">>>>>>>>>>>>>>>>>>>回写查询资产名称信息结果异常", e); - } - } - - /** - * 拼接搜索条件 - * - * @return - */ - private Map getCondition() { - /** - * 拼接搜索条件 - */ - Map condition = new HashMap(); - condition.put("assetname_s_like", model.getAssetName()); - condition.put("isconsumables_n_eq", model.getConsumable()); - condition.put("description_s_like", model.getDescription()); - condition.put("category.id_n_eq", model.getCategoryID()); - condition.put("id_s_order", "desc"); - return condition; - } - - //=============以下spring注入以及Model驱动公共方法,与Action处理无关================== - @Override - public AssetNameModel getModel() { - return model; - } - - public void setAssetnameService(AssetNameIService assetnameService) { - this.assetnameService = assetnameService; - } -} diff --git a/src/main/java/com/jsh/action/basic/CategoryAction.java b/src/main/java/com/jsh/action/basic/CategoryAction.java deleted file mode 100644 index b1dd5c5e..00000000 --- a/src/main/java/com/jsh/action/basic/CategoryAction.java +++ /dev/null @@ -1,235 +0,0 @@ -package com.jsh.action.basic; - -import com.jsh.base.BaseAction; -import com.jsh.base.Log; -import com.jsh.model.po.Category; -import com.jsh.model.po.Logdetails; -import com.jsh.model.vo.basic.CategoryModel; -import com.jsh.service.basic.CategoryIService; -import com.jsh.util.PageUtil; -import net.sf.json.JSONArray; -import net.sf.json.JSONObject; -import org.springframework.dao.DataAccessException; - -import java.io.IOException; -import java.sql.Timestamp; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -/* - * @author jishenghua qq:7-5-2-7-1-8-9-2-0 - */ -@SuppressWarnings("serial") -public class CategoryAction extends BaseAction { - private CategoryIService categoryService; - private CategoryModel model = new CategoryModel(); - - /** - * 增加资产类型 - * - * @return - */ - public void create() { - Log.infoFileSync("==================开始调用增加资产类型方法create()==================="); - Boolean flag = false; - try { - Category category = new Category(); - category.setAssetname(model.getCategoryName()); - category.setIsystem((short) 1); - category.setDescription(model.getDescription()); - categoryService.create(category); - - //========标识位=========== - flag = true; - //记录操作日志使用 - tipMsg = "成功"; - tipType = 0; - } catch (DataAccessException e) { - Log.errorFileSync(">>>>>>>>>>>>>>>>>>>增加资产类型异常", e); - flag = false; - tipMsg = "失败"; - tipType = 1; - } finally { - try { - toClient(flag.toString()); - } catch (IOException e) { - Log.errorFileSync(">>>>>>>>>>>>增加资产类型回写客户端结果异常", e); - } - } - - logService.create(new Logdetails(getUser(), "增加资产类型", model.getClientIp(), - new Timestamp(System.currentTimeMillis()) - , tipType, "增加资产类型名称为 " + model.getCategoryName() + " " + tipMsg + "!", "增加资产类型" + tipMsg)); - Log.infoFileSync("==================结束调用增加资产类型方法create()==================="); - } - - /** - * 删除资产类型 - * - * @return - */ - public String delete() { - Log.infoFileSync("====================开始调用删除资产类型信息方法delete()================"); - try { - categoryService.delete(model.getCategoryID()); - tipMsg = "成功"; - tipType = 0; - } catch (DataAccessException e) { - Log.errorFileSync(">>>>>>>>>>>删除ID为 " + model.getCategoryID() + " 的资产类型异常", e); - tipMsg = "失败"; - tipType = 1; - } - model.getShowModel().setMsgTip(tipMsg); - logService.create(new Logdetails(getUser(), "删除资产类型", model.getClientIp(), - new Timestamp(System.currentTimeMillis()) - , tipType, "删除资产类型ID为 " + model.getCategoryID() + " " + tipMsg + "!", "删除资产类型" + tipMsg)); - Log.infoFileSync("====================结束调用删除资产类型信息方法delete()================"); - return SUCCESS; - } - - /** - * 更新资产类型 - * - * @return - */ - public void update() { - Boolean flag = false; - try { - Category category = categoryService.get(model.getCategoryID()); - category.setAssetname(model.getCategoryName()); - category.setDescription(model.getDescription()); - categoryService.update(category); - - flag = true; - tipMsg = "成功"; - tipType = 0; - } catch (DataAccessException e) { - Log.errorFileSync(">>>>>>>>>>>>>修改资产类型ID为 : " + model.getCategoryID() + "信息失败", e); - flag = false; - tipMsg = "失败"; - tipType = 1; - } finally { - try { - toClient(flag.toString()); - } catch (IOException e) { - Log.errorFileSync(">>>>>>>>>>>>修改资产类型回写客户端结果异常", e); - } - } - logService.create(new Logdetails(getUser(), "更新资产类型", model.getClientIp(), - new Timestamp(System.currentTimeMillis()) - , tipType, "更新资产类型ID为 " + model.getCategoryID() + " " + tipMsg + "!", "更新资产类型" + tipMsg)); - } - - /** - * 批量删除指定ID资产类型 - * - * @return - */ - public String batchDelete() { - try { - categoryService.batchDelete(model.getCategoryIDs()); - model.getShowModel().setMsgTip("成功"); - //记录操作日志使用 - tipMsg = "成功"; - tipType = 0; - } catch (DataAccessException e) { - Log.errorFileSync(">>>>>>>>>>>批量删除资产类型ID为:" + model.getCategoryIDs() + "信息异常", e); - tipMsg = "失败"; - tipType = 1; - } - - logService.create(new Logdetails(getUser(), "批量删除资产类型", model.getClientIp(), - new Timestamp(System.currentTimeMillis()) - , tipType, "批量删除资产类型ID为 " + model.getCategoryIDs() + " " + tipMsg + "!", "批量删除资产类型" + tipMsg)); - return SUCCESS; - } - - /** - * 检查输入名称是否存在 - */ - public void checkIsNameExist() { - Boolean flag = false; - try { - flag = categoryService.checkIsNameExist("assetname", model.getCategoryName(), "id", model.getCategoryID()); - } catch (DataAccessException e) { - Log.errorFileSync(">>>>>>>>>>>>>>>>>检查资产类型名称为:" + model.getCategoryName() + " ID为: " + model.getCategoryID() + " 是否存在异常!"); - } finally { - try { - toClient(flag.toString()); - } catch (IOException e) { - Log.errorFileSync(">>>>>>>>>>>>回写检查资产类型名称为:" + model.getCategoryName() + " ID为: " + model.getCategoryID() + " 是否存在异常!", e); - } - } - } - - /** - * 查找供应商信息 - * - * @return - */ - public void findBy() { - try { - PageUtil pageUtil = new PageUtil(); - pageUtil.setPageSize(model.getPageSize()); - pageUtil.setCurPage(model.getPageNo()); - pageUtil.setAdvSearch(getCondition()); - categoryService.find(pageUtil); - List dataList = pageUtil.getPageList(); - - //开始拼接json数据 -// {"total":28,"rows":[ -// {"productid":"AV-CB-01","attr1":"Adult Male","itemid":"EST-18"} -// ]} - JSONObject outer = new JSONObject(); - outer.put("total", pageUtil.getTotalCount()); - //存放数据json数组 - JSONArray dataArray = new JSONArray(); - if (null != dataList) { - for (Category category : dataList) { - JSONObject item = new JSONObject(); - item.put("id", category.getId()); - //供应商名称 - item.put("categoryname", category.getAssetname()); - item.put("isystem", category.getIsystem() == (short) 0 ? "是" : "否"); - item.put("description", category.getDescription()); - item.put("op", category.getIsystem()); - dataArray.add(item); - } - } - outer.put("rows", dataArray); - //回写查询结果 - toClient(outer.toString()); - } catch (DataAccessException e) { - Log.errorFileSync(">>>>>>>>>>>>>>>>>>>查找资产类型信息异常", e); - } catch (IOException e) { - Log.errorFileSync(">>>>>>>>>>>>>>>>>>>回写查询资产类型信息结果异常", e); - } - } - - /** - * 拼接搜索条件 - * - * @return - */ - private Map getCondition() { - /** - * 拼接搜索条件 - */ - Map condition = new HashMap(); - condition.put("assetname_s_like", model.getCategoryName()); - condition.put("description_s_like", model.getDescription()); - condition.put("id_s_order", "desc"); - return condition; - } - - //=============以下spring注入以及Model驱动公共方法,与Action处理无关================== - @Override - public CategoryModel getModel() { - return model; - } - - public void setCategoryService(CategoryIService categoryService) { - this.categoryService = categoryService; - } -} diff --git a/src/main/java/com/jsh/action/basic/DepotAction.java b/src/main/java/com/jsh/action/basic/DepotAction.java deleted file mode 100644 index fcb636f9..00000000 --- a/src/main/java/com/jsh/action/basic/DepotAction.java +++ /dev/null @@ -1,429 +0,0 @@ -package com.jsh.action.basic; - -import com.jsh.base.BaseAction; -import com.jsh.base.Log; -import com.jsh.model.po.Depot; -import com.jsh.model.po.Logdetails; -import com.jsh.model.vo.basic.DepotModel; -import com.jsh.service.basic.DepotIService; -import com.jsh.service.basic.UserBusinessIService; -import com.jsh.util.PageUtil; -import net.sf.json.JSONArray; -import net.sf.json.JSONObject; -import org.springframework.dao.DataAccessException; - -import java.io.IOException; -import java.sql.Timestamp; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -/** - * 仓库管理 - * - * @author jishenghua qq:7-5-2-7-1-8-9-2-0 - */ -@SuppressWarnings("serial") -public class DepotAction extends BaseAction { - private DepotIService depotService; - private UserBusinessIService userBusinessService; - private DepotModel model = new DepotModel(); - - - @SuppressWarnings({"rawtypes", "unchecked"}) - public String getBasicData() { - Map mapData = model.getShowModel().getMap(); - PageUtil pageUtil = new PageUtil(); - pageUtil.setPageSize(0); - pageUtil.setCurPage(0); - try { - Map condition = pageUtil.getAdvSearch(); - condition.put("sort_s_order", "asc"); - depotService.find(pageUtil); - mapData.put("depotList", pageUtil.getPageList()); - } catch (Exception e) { - Log.errorFileSync(">>>>>>>>>>>>>查找系统基础数据信息异常", e); - model.getShowModel().setMsgTip("exceptoin"); - } - return SUCCESS; - } - - /** - * 增加仓库 - * - * @return - */ - public void create() { - Log.infoFileSync("==================开始调用增加仓库信息方法create()==================="); - Boolean flag = false; - try { - Depot depot = new Depot(); - depot.setName(model.getName()); - depot.setAddress(model.getAddress()); - depot.setWarehousing(model.getWarehousing()); - depot.setTruckage(model.getTruckage()); - depot.setType(model.getType()); - depot.setSort(model.getSort()); - depot.setRemark(model.getRemark()); - depotService.create(depot); - - //========标识位=========== - flag = true; - //记录操作日志使用 - tipMsg = "成功"; - tipType = 0; - } catch (DataAccessException e) { - Log.errorFileSync(">>>>>>>>>>>>>>>>>>>增加仓库信息异常", e); - flag = false; - tipMsg = "失败"; - tipType = 1; - } finally { - try { - toClient(flag.toString()); - } catch (IOException e) { - Log.errorFileSync(">>>>>>>>>>>>增加仓库信息回写客户端结果异常", e); - } - } - - logService.create(new Logdetails(getUser(), "增加仓库", model.getClientIp(), - new Timestamp(System.currentTimeMillis()) - , tipType, "增加仓库名称为 " + model.getName() + " " + tipMsg + "!", "增加仓库" + tipMsg)); - Log.infoFileSync("==================结束调用增加仓库方法create()==================="); - } - - /** - * 删除仓库 - * - * @return - */ - public String delete() { - Log.infoFileSync("====================开始调用删除仓库信息方法delete()================"); - try { - depotService.delete(model.getDepotID()); - tipMsg = "成功"; - tipType = 0; - } catch (DataAccessException e) { - Log.errorFileSync(">>>>>>>>>>>删除ID为 " + model.getDepotID() + " 的仓库异常", e); - tipMsg = "失败"; - tipType = 1; - } - model.getShowModel().setMsgTip(tipMsg); - logService.create(new Logdetails(getUser(), "删除仓库", model.getClientIp(), - new Timestamp(System.currentTimeMillis()) - , tipType, "删除仓库ID为 " + model.getDepotID() + " " + tipMsg + "!", "删除仓库" + tipMsg)); - Log.infoFileSync("====================结束调用删除仓库信息方法delete()================"); - return SUCCESS; - } - - /** - * 更新仓库 - * - * @return - */ - public void update() { - Boolean flag = false; - try { - Depot depot = depotService.get(model.getDepotID()); - depot.setName(model.getName()); - depot.setAddress(model.getAddress()); - depot.setWarehousing(model.getWarehousing()); - depot.setTruckage(model.getTruckage()); - depot.setType(model.getType()); - depot.setSort(model.getSort()); - depot.setRemark(model.getRemark()); - depotService.update(depot); - - flag = true; - tipMsg = "成功"; - tipType = 0; - } catch (DataAccessException e) { - Log.errorFileSync(">>>>>>>>>>>>>修改仓库ID为 : " + model.getDepotID() + "信息失败", e); - flag = false; - tipMsg = "失败"; - tipType = 1; - } finally { - try { - toClient(flag.toString()); - } catch (IOException e) { - Log.errorFileSync(">>>>>>>>>>>>修改仓库回写客户端结果异常", e); - } - } - logService.create(new Logdetails(getUser(), "更新仓库", model.getClientIp(), - new Timestamp(System.currentTimeMillis()) - , tipType, "更新仓库ID为 " + model.getDepotID() + " " + tipMsg + "!", "更新仓库" + tipMsg)); - } - - /** - * 批量删除指定ID仓库 - * - * @return - */ - public String batchDelete() { - try { - depotService.batchDelete(model.getDepotIDs()); - model.getShowModel().setMsgTip("成功"); - //记录操作日志使用 - tipMsg = "成功"; - tipType = 0; - } catch (DataAccessException e) { - Log.errorFileSync(">>>>>>>>>>>批量删除仓库ID为:" + model.getDepotIDs() + "信息异常", e); - tipMsg = "失败"; - tipType = 1; - } - - logService.create(new Logdetails(getUser(), "批量删除仓库", model.getClientIp(), - new Timestamp(System.currentTimeMillis()) - , tipType, "批量删除仓库ID为 " + model.getDepotIDs() + " " + tipMsg + "!", "批量删除仓库" + tipMsg)); - return SUCCESS; - } - - /** - * 检查输入名称是否存在 - */ - public void checkIsNameExist() { - Boolean flag = false; - try { - flag = depotService.checkIsNameExist("name", model.getName(), "id", model.getDepotID()); - } catch (DataAccessException e) { - Log.errorFileSync(">>>>>>>>>>>>>>>>>检查仓库名称为:" + model.getName() + " ID为: " + model.getDepotID() + " 是否存在异常!"); - } finally { - try { - toClient(flag.toString()); - } catch (IOException e) { - Log.errorFileSync(">>>>>>>>>>>>回写检查仓库名称为:" + model.getName() + " ID为: " + model.getDepotID() + " 是否存在异常!", e); - } - } - } - - /** - * 查找仓库信息 - * - * @return - */ - public void findBy() { - try { - PageUtil pageUtil = new PageUtil(); - pageUtil.setPageSize(model.getPageSize()); - pageUtil.setCurPage(model.getPageNo()); - pageUtil.setAdvSearch(getCondition()); - depotService.find(pageUtil); - List dataList = pageUtil.getPageList(); - - JSONObject outer = new JSONObject(); - outer.put("total", pageUtil.getTotalCount()); - //存放数据json数组 - JSONArray dataArray = new JSONArray(); - if (null != dataList) { - for (Depot depot : dataList) { - JSONObject item = new JSONObject(); - item.put("id", depot.getId()); - //供应商名称 - item.put("name", depot.getName()); - item.put("address", depot.getAddress()); - item.put("warehousing", depot.getWarehousing()); - item.put("truckage", depot.getTruckage()); - item.put("type", depot.getType()); - item.put("sort", depot.getSort()); - item.put("remark", depot.getRemark()); - item.put("op", 1); - dataArray.add(item); - } - } - outer.put("rows", dataArray); - //回写查询结果 - toClient(outer.toString()); - } catch (DataAccessException e) { - Log.errorFileSync(">>>>>>>>>>>>>>>>>>>查找仓库信息异常", e); - } catch (IOException e) { - Log.errorFileSync(">>>>>>>>>>>>>>>>>>>回写查询仓库信息结果异常", e); - } - } - - /** - * 查找礼品卡-虚拟仓库 - * - * @return - */ - public void findGiftByType() { - try { - PageUtil pageUtil = new PageUtil(); - pageUtil.setPageSize(0); - pageUtil.setCurPage(0); - pageUtil.setAdvSearch(getConditionByType()); - depotService.find(pageUtil); - List dataList = pageUtil.getPageList(); - //存放数据json数组 - JSONArray dataArray = new JSONArray(); - if (null != dataList) { - for (Depot depot : dataList) { - JSONObject item = new JSONObject(); - item.put("id", depot.getId()); - //仓库名称 - item.put("name", depot.getName()); - dataArray.add(item); - } - } - //回写查询结果 - toClient(dataArray.toString()); - } catch (DataAccessException e) { - Log.errorFileSync(">>>>>>>>>查找仓库信息异常", e); - } catch (IOException e) { - Log.errorFileSync(">>>>>>>>>回写查询仓库信息结果异常", e); - } - } - - /** - * 用户对应仓库显示 - * - * @return - */ - public void findUserDepot() { - try { - PageUtil pageUtil = new PageUtil(); - pageUtil.setPageSize(100); - //pageUtil.setCurPage(model.getPageNo()); - - pageUtil.setAdvSearch(getCondition_UserDepot()); - depotService.find(pageUtil); - List dataList = pageUtil.getPageList(); - - //开始拼接json数据 - JSONObject outer = new JSONObject(); - outer.put("id", 1); - outer.put("text", "仓库列表"); - outer.put("state", "open"); - //存放数据json数组 - JSONArray dataArray = new JSONArray(); - if (null != dataList) { - for (Depot depot : dataList) { - JSONObject item = new JSONObject(); - item.put("id", depot.getId()); - item.put("text", depot.getName()); - //勾选判断1 - Boolean flag = false; - try { - flag = userBusinessService.checkIsUserBusinessExist("Type", model.getUBType(), "KeyId", model.getUBKeyId(), "Value", "[" + depot.getId().toString() + "]"); - } catch (DataAccessException e) { - Log.errorFileSync(">>>>>>>>>>>>>>>>>设置用户对应的仓库:类型" + model.getUBType() + " KeyId为: " + model.getUBKeyId() + " 存在异常!"); - } - if (flag == true) { - item.put("checked", true); - } - //结束 - dataArray.add(item); - } - } - outer.put("children", dataArray); - //回写查询结果 - toClient("[" + outer.toString() + "]"); - } catch (DataAccessException e) { - Log.errorFileSync(">>>>>>>>>>>>>>>>>>>查找仓库异常", e); - } catch (IOException e) { - Log.errorFileSync(">>>>>>>>>>>>>>>>>>>回写查询仓库结果异常", e); - } - } - - /** - * 根据用户查找对应仓库列表-仅显示有权限的 - * - * @return - */ - public void findDepotByUserId() { - try { - PageUtil pageUtil = new PageUtil(); - pageUtil.setPageSize(0); - pageUtil.setCurPage(0); - pageUtil.setAdvSearch(getCondition_UserDepot()); - depotService.find(pageUtil); - List dataList = pageUtil.getPageList(); - - //存放数据json数组 - JSONArray dataArray = new JSONArray(); - if (null != dataList) { - for (Depot depot : dataList) { - JSONObject item = new JSONObject(); - //勾选判断1 - Boolean flag = false; - try { - flag = userBusinessService.checkIsUserBusinessExist("Type", model.getUBType(), "KeyId", model.getUBKeyId(), "Value", "[" + depot.getId().toString() + "]"); - } catch (DataAccessException e) { - Log.errorFileSync(">>>>>>>>>>>>>>>>>查询用户对应的仓库:类型" + model.getUBType() + " KeyId为: " + model.getUBKeyId() + " 存在异常!"); - } - if (flag == true) { - item.put("id", depot.getId()); - item.put("depotName", depot.getName()); - dataArray.add(item); - } - } - } - //回写查询结果 - toClient(dataArray.toString()); - } catch (DataAccessException e) { - Log.errorFileSync(">>>>>>>>>>>>>>>>>>>查找仓库异常", e); - } catch (IOException e) { - Log.errorFileSync(">>>>>>>>>>>>>>>>>>>回写查询仓库结果异常", e); - } - } - - /** - * 拼接搜索条件 - * - * @return - */ - private Map getCondition() { - /** - * 拼接搜索条件 - */ - Map condition = new HashMap(); - condition.put("name_s_like", model.getName()); - condition.put("remark_s_like", model.getRemark()); - condition.put("type_n_eq", model.getType()); //0-仓库,1-礼品卡 - condition.put("sort_s_order", "asc"); - return condition; - } - - /** - * 拼接搜索条件 - * - * @return - */ - private Map getConditionByType() { - /** - * 拼接搜索条件 - */ - Map condition = new HashMap(); - condition.put("type_n_eq", model.getType()); //0-仓库,1-礼品卡 - condition.put("sort_s_order", "asc"); - return condition; - } - - /** - * 拼接搜索条件-用户对应仓库 - * - * @return - */ - private Map getCondition_UserDepot() { - /** - * 拼接搜索条件 - */ - Map condition = new HashMap(); - condition.put("type_n_eq", 0); - condition.put("sort_s_order", "asc"); - return condition; - } - - //=============以下spring注入以及Model驱动公共方法,与Action处理无关================== - @Override - public DepotModel getModel() { - return model; - } - - public void setDepotService(DepotIService depotService) { - this.depotService = depotService; - } - - public void setUserBusinessService(UserBusinessIService userBusinessService) { - this.userBusinessService = userBusinessService; - } - -} diff --git a/src/main/java/com/jsh/action/basic/FunctionsAction.java b/src/main/java/com/jsh/action/basic/FunctionsAction.java deleted file mode 100644 index e5909c8c..00000000 --- a/src/main/java/com/jsh/action/basic/FunctionsAction.java +++ /dev/null @@ -1,566 +0,0 @@ -package com.jsh.action.basic; - -import com.jsh.base.BaseAction; -import com.jsh.base.Log; -import com.jsh.model.po.Functions; -import com.jsh.model.po.Logdetails; -import com.jsh.model.vo.basic.FunctionsModel; -import com.jsh.service.basic.FunctionsIService; -import com.jsh.service.basic.UserBusinessIService; -import com.jsh.util.PageUtil; -import net.sf.json.JSONArray; -import net.sf.json.JSONObject; -import org.springframework.dao.DataAccessException; - -import java.io.IOException; -import java.sql.Timestamp; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -/* - * 功能管理 - * @author jishenghua qq:7-5-2-7-1-8-9-2-0 - */ -@SuppressWarnings("serial") -public class FunctionsAction extends BaseAction { - private FunctionsIService functionsService; - private UserBusinessIService userBusinessService; - private FunctionsModel model = new FunctionsModel(); - - /** - * 增加功能 - * - * @return - */ - public void create() { - Log.infoFileSync("==================开始调用增加功能信息方法create()==================="); - Boolean flag = false; - try { - Functions functions = new Functions(); - functions.setNumber(model.getNumber()); - functions.setName(model.getName()); - functions.setPNumber(model.getPNumber()); - functions.setURL(model.getURL()); - functions.setState(model.getState()); - functions.setSort(model.getSort()); - functions.setEnabled(model.getEnabled()); - functions.setType(model.getType()); - functions.setPushBtn(model.getPushBtn()); - functionsService.create(functions); - - //========标识位=========== - flag = true; - //记录操作日志使用 - tipMsg = "成功"; - tipType = 0; - } catch (DataAccessException e) { - Log.errorFileSync(">>>>>>>>>>>>>>>>>>>增加功能信息异常", e); - flag = false; - tipMsg = "失败"; - tipType = 1; - } finally { - try { - toClient(flag.toString()); - } catch (IOException e) { - Log.errorFileSync(">>>>>>>>>>>>增加功能信息回写客户端结果异常", e); - } - } - - logService.create(new Logdetails(getUser(), "增加功能", model.getClientIp(), - new Timestamp(System.currentTimeMillis()) - , tipType, "增加功能名称为 " + model.getName() + " " + tipMsg + "!", "增加功能" + tipMsg)); - Log.infoFileSync("==================结束调用增加功能方法create()==================="); - } - - /** - * 删除功能 - * - * @return - */ - public String delete() { - Log.infoFileSync("====================开始调用删除功能信息方法delete()================"); - try { - functionsService.delete(model.getFunctionsID()); - tipMsg = "成功"; - tipType = 0; - } catch (DataAccessException e) { - Log.errorFileSync(">>>>>>>>>>>删除ID为 " + model.getFunctionsID() + " 的功能异常", e); - tipMsg = "失败"; - tipType = 1; - } - model.getShowModel().setMsgTip(tipMsg); - logService.create(new Logdetails(getUser(), "删除功能", model.getClientIp(), - new Timestamp(System.currentTimeMillis()) - , tipType, "删除功能ID为 " + model.getFunctionsID() + " " + tipMsg + "!", "删除功能" + tipMsg)); - Log.infoFileSync("====================结束调用删除功能信息方法delete()================"); - return SUCCESS; - } - - /** - * 更新功能 - * - * @return - */ - public void update() { - Boolean flag = false; - try { - Functions functions = functionsService.get(model.getFunctionsID()); - functions.setNumber(model.getNumber()); - functions.setName(model.getName()); - functions.setPNumber(model.getPNumber()); - functions.setURL(model.getURL()); - functions.setState(model.getState()); - functions.setSort(model.getSort()); - functions.setEnabled(model.getEnabled()); - functions.setType(model.getType()); - functions.setPushBtn(model.getPushBtn()); - functionsService.update(functions); - - flag = true; - tipMsg = "成功"; - tipType = 0; - } catch (DataAccessException e) { - Log.errorFileSync(">>>>>>>>>>>>>修改功能ID为 : " + model.getFunctionsID() + "信息失败", e); - flag = false; - tipMsg = "失败"; - tipType = 1; - } finally { - try { - toClient(flag.toString()); - } catch (IOException e) { - Log.errorFileSync(">>>>>>>>>>>>修改功能回写客户端结果异常", e); - } - } - logService.create(new Logdetails(getUser(), "更新功能", model.getClientIp(), - new Timestamp(System.currentTimeMillis()) - , tipType, "更新功能ID为 " + model.getFunctionsID() + " " + tipMsg + "!", "更新功能" + tipMsg)); - } - - /** - * 批量删除指定ID功能 - * - * @return - */ - public String batchDelete() { - try { - functionsService.batchDelete(model.getFunctionsIDs()); - model.getShowModel().setMsgTip("成功"); - //记录操作日志使用 - tipMsg = "成功"; - tipType = 0; - } catch (DataAccessException e) { - Log.errorFileSync(">>>>>>>>>>>批量删除功能ID为:" + model.getFunctionsIDs() + "信息异常", e); - tipMsg = "失败"; - tipType = 1; - } - - logService.create(new Logdetails(getUser(), "批量删除功能", model.getClientIp(), - new Timestamp(System.currentTimeMillis()) - , tipType, "批量删除功能ID为 " + model.getFunctionsIDs() + " " + tipMsg + "!", "批量删除功能" + tipMsg)); - return SUCCESS; - } - - /** - * 检查输入名称是否存在 - */ - public void checkIsNameExist() { - Boolean flag = false; - try { - flag = functionsService.checkIsNameExist("Name", model.getName(), "Id", model.getFunctionsID()); - } catch (DataAccessException e) { - Log.errorFileSync(">>>>>>>>>>>>>>>>>检查功能名称为:" + model.getName() + " ID为: " + model.getFunctionsID() + " 是否存在异常!"); - } finally { - try { - toClient(flag.toString()); - } catch (IOException e) { - Log.errorFileSync(">>>>>>>>>>>>回写检查功能名称为:" + model.getName() + " ID为: " + model.getFunctionsID() + " 是否存在异常!", e); - } - } - } - - /** - * 查找功能信息 - * - * @return - */ - public void findBy() { - try { - PageUtil pageUtil = new PageUtil(); - pageUtil.setPageSize(model.getPageSize()); - pageUtil.setCurPage(model.getPageNo()); - pageUtil.setAdvSearch(getCondition()); - functionsService.find(pageUtil); - List dataList = pageUtil.getPageList(); - - //开始拼接json数据 -// {"total":28,"rows":[ -// {"productid":"AV-CB-01","attr1":"Adult Male","itemid":"EST-18"} -// ]} - JSONObject outer = new JSONObject(); - outer.put("total", pageUtil.getTotalCount()); - //存放数据json数组 - JSONArray dataArray = new JSONArray(); - if (null != dataList) { - for (Functions functions : dataList) { - JSONObject item = new JSONObject(); - item.put("Id", functions.getId()); - item.put("Number", functions.getNumber()); - item.put("Name", functions.getName()); - item.put("PNumber", functions.getPNumber()); - item.put("URL", functions.getURL()); - item.put("State", functions.getState()); - item.put("Sort", functions.getSort()); - item.put("Enabled", functions.getEnabled()); - item.put("Type", functions.getType()); - item.put("PushBtn", functions.getPushBtn()); - item.put("op", 1); - dataArray.add(item); - } - } - outer.put("rows", dataArray); - //回写查询结果 - toClient(outer.toString()); - } catch (DataAccessException e) { - Log.errorFileSync(">>>>>>>>>>>>>>>>>>>查找功能信息异常", e); - } catch (IOException e) { - Log.errorFileSync(">>>>>>>>>>>>>>>>>>>回写查询功能信息结果异常", e); - } - } - - /** - * 根据id列表查找功能信息 - * - * @return - */ - public void findByIds() { - try { - PageUtil pageUtil = new PageUtil(); - pageUtil.setPageSize(0); - pageUtil.setCurPage(0); - pageUtil.setAdvSearch(getConditionByIds()); - functionsService.find(pageUtil); - List dataList = pageUtil.getPageList(); - JSONObject outer = new JSONObject(); - outer.put("total", pageUtil.getTotalCount()); - //存放数据json数组 - JSONArray dataArray = new JSONArray(); - if (null != dataList) { - for (Functions functions : dataList) { - JSONObject item = new JSONObject(); - item.put("Id", functions.getId()); - item.put("Name", functions.getName()); - item.put("PushBtn", functions.getPushBtn()); - item.put("op", 1); - dataArray.add(item); - } - } - outer.put("rows", dataArray); - //回写查询结果 - toClient(outer.toString()); - } catch (DataAccessException e) { - Log.errorFileSync(">>>>>>>>>>>>>>>>>>>查找功能信息异常", e); - } catch (IOException e) { - Log.errorFileSync(">>>>>>>>>>>>>>>>>>>回写查询功能信息结果异常", e); - } - } - - - /** - * 角色对应功能显示 - * - * @return - */ - public void findRoleFunctions() { - try { - PageUtil pageUtil = new PageUtil(); - pageUtil.setPageSize(200); - pageUtil.setAdvSearch(getCondition_RoleFunctions("0")); - functionsService.find(pageUtil); - List dataList = pageUtil.getPageList(); - - //开始拼接json数据 - JSONObject outer = new JSONObject(); - outer.put("id", 1); - outer.put("text", "功能列表"); - outer.put("state", "open"); - //存放数据json数组 - JSONArray dataArray = new JSONArray(); - if (null != dataList) { - for (Functions functions : dataList) { - JSONObject item = new JSONObject(); - item.put("id", functions.getId()); - item.put("text", functions.getName()); - - //勾选判断1 - Boolean flag = false; - try { - flag = userBusinessService.checkIsUserBusinessExist("Type", model.getUBType(), "KeyId", model.getUBKeyId(), "Value", "[" + functions.getId().toString() + "]"); - } catch (DataAccessException e) { - Log.errorFileSync(">>>>>>>>>>>>>>>>>设置角色对应的功能:类型" + model.getUBType() + " KeyId为: " + model.getUBKeyId() + " 存在异常!"); - } - if (flag == true) { - item.put("checked", true); - } - //结束 - - pageUtil.setAdvSearch(getCondition_RoleFunctions(functions.getNumber())); - functionsService.find(pageUtil); - List dataList1 = pageUtil.getPageList(); - JSONArray dataArray1 = new JSONArray(); - if (null != dataList1) { - - for (Functions functions1 : dataList1) { - item.put("state", "open"); //如果不为空,节点不展开 - JSONObject item1 = new JSONObject(); - item1.put("id", functions1.getId()); - item1.put("text", functions1.getName()); - - //勾选判断2 - //Boolean flag = false; - try { - flag = userBusinessService.checkIsUserBusinessExist("Type", model.getUBType(), "KeyId", model.getUBKeyId(), "Value", "[" + functions1.getId().toString() + "]"); - } catch (DataAccessException e) { - Log.errorFileSync(">>>>>>>>>>>>>>>>>设置角色对应的功能:类型" + model.getUBType() + " KeyId为: " + model.getUBKeyId() + " 存在异常!"); - } - if (flag == true) { - item1.put("checked", true); - } - //结束 - - pageUtil.setAdvSearch(getCondition_RoleFunctions(functions1.getNumber())); - functionsService.find(pageUtil); - List dataList2 = pageUtil.getPageList(); - JSONArray dataArray2 = new JSONArray(); - if (null != dataList2) { - - for (Functions functions2 : dataList2) { - item1.put("state", "closed"); //如果不为空,节点不展开 - JSONObject item2 = new JSONObject(); - item2.put("id", functions2.getId()); - item2.put("text", functions2.getName()); - - //勾选判断3 - //Boolean flag = false; - try { - flag = userBusinessService.checkIsUserBusinessExist("Type", model.getUBType(), "KeyId", model.getUBKeyId(), "Value", "[" + functions2.getId().toString() + "]"); - } catch (DataAccessException e) { - Log.errorFileSync(">>>>>>>>>>>>>>>>>设置角色对应的功能:类型" + model.getUBType() + " KeyId为: " + model.getUBKeyId() + " 存在异常!"); - } - if (flag == true) { - item2.put("checked", true); - } - //结束 - - pageUtil.setAdvSearch(getCondition_RoleFunctions(functions2.getNumber())); - functionsService.find(pageUtil); - List dataList3 = pageUtil.getPageList(); - JSONArray dataArray3 = new JSONArray(); - if (null != dataList3) { - - for (Functions functions3 : dataList3) { - item2.put("state", "closed"); //如果不为空,节点不展开 - JSONObject item3 = new JSONObject(); - item3.put("id", functions3.getId()); - item3.put("text", functions3.getName()); - - //勾选判断4 - //Boolean flag = false; - try { - flag = userBusinessService.checkIsUserBusinessExist("Type", model.getUBType(), "KeyId", model.getUBKeyId(), "Value", "[" + functions3.getId().toString() + "]"); - } catch (DataAccessException e) { - Log.errorFileSync(">>>>>>>>>>>>>>>>>设置角色对应的功能:类型" + model.getUBType() + " KeyId为: " + model.getUBKeyId() + " 存在异常!"); - } - if (flag == true) { - item3.put("checked", true); - } - //结束 - - dataArray3.add(item3); - item2.put("children", dataArray3); - } - } - - dataArray2.add(item2); - item1.put("children", dataArray2); - } - } - - dataArray1.add(item1); - item.put("children", dataArray1); - } - - } - - dataArray.add(item); - } - outer.put("children", dataArray); - } - //回写查询结果 - toClient("[" + outer.toString() + "]"); - } catch (DataAccessException e) { - Log.errorFileSync(">>>>>>>>>>>>>>>>>>>查找应用异常", e); - } catch (IOException e) { - Log.errorFileSync(">>>>>>>>>>>>>>>>>>>回写查询应用结果异常", e); - } - } - - - /** - * 页面显示菜单 - * - * @return - */ - public void findMenu() { - try { - String fc = model.getHasFunctions(); //当前用户所拥有的功能列表,格式如:[1][2][5] - PageUtil pageUtil = new PageUtil(); - pageUtil.setPageSize(200); - pageUtil.setAdvSearch(getCondition_RoleFunctions(model.getPNumber())); - functionsService.find(pageUtil); - List dataList = pageUtil.getPageList(); - - //存放数据json数组 - JSONArray dataArray = new JSONArray(); - if (null != dataList) { - for (Functions functions : dataList) { - JSONObject item = new JSONObject(); - - item.put("id", functions.getId()); - pageUtil.setAdvSearch(getCondition_RoleFunctions(functions.getNumber())); - functionsService.find(pageUtil); - List dataList1 = pageUtil.getPageList(); - JSONArray dataArray1 = new JSONArray(); - if (dataList1.size() != 0) { - item.put("text", functions.getName()); //是目录就没链接 - for (Functions functions1 : dataList1) { - item.put("state", "open"); //如果不为空,节点展开 - JSONObject item1 = new JSONObject(); - - pageUtil.setAdvSearch(getCondition_RoleFunctions(functions1.getNumber())); - functionsService.find(pageUtil); - List dataList2 = pageUtil.getPageList(); - if (fc.indexOf("[" + functions1.getId().toString() + "]") != -1 || dataList2.size() != 0) { - item1.put("id", functions1.getId()); - JSONArray dataArray2 = new JSONArray(); - if (dataList2.size() != 0) { - item1.put("text", functions1.getName());//是目录就没链接 - for (Functions functions2 : dataList2) { - item1.put("state", "closed"); //如果不为空,节点不展开 - JSONObject item2 = new JSONObject(); - - pageUtil.setAdvSearch(getCondition_RoleFunctions(functions2.getNumber())); - functionsService.find(pageUtil); - List dataList3 = pageUtil.getPageList(); - if (fc.indexOf("[" + functions2.getId().toString() + "]") != -1 || dataList3.size() != 0) { - item2.put("id", functions2.getId()); - JSONArray dataArray3 = new JSONArray(); - if (dataList3.size() != 0) { - item2.put("text", functions2.getName());//是目录就没链接 - for (Functions functions3 : dataList3) { - item2.put("state", "closed"); //如果不为空,节点不展开 - JSONObject item3 = new JSONObject(); - item3.put("id", functions3.getId()); - item3.put("text", functions3.getName()); - // - dataArray3.add(item3); - item2.put("children", dataArray3); - } - } else { - //不是目录,有链接 - item2.put("text", "" + functions2.getName() + ""); - } - } else { - //不是目录,有链接 - item2.put("text", "" + functions2.getName() + ""); - } - dataArray2.add(item2); - item1.put("children", dataArray2); - } - } else { - //不是目录,有链接 - item1.put("text", "" + functions1.getName() + ""); - } - } else { - //不是目录,有链接 - item1.put("text", "" + functions1.getName() + ""); - } - dataArray1.add(item1); - item.put("children", dataArray1); - } - } else { - //不是目录,有链接 - item.put("text", "" + functions.getName() + ""); - } - dataArray.add(item); - } - } - //回写查询结果 - toClient(dataArray.toString()); - } catch (DataAccessException e) { - Log.errorFileSync(">>>>>>>>>>>>>>>>>>>查找应用异常", e); - } catch (IOException e) { - Log.errorFileSync(">>>>>>>>>>>>>>>>>>>回写查询应用结果异常", e); - } - } - - /** - * 拼接搜索条件 - * - * @return - */ - private Map getCondition() { - /** - * 拼接搜索条件 - */ - Map condition = new HashMap(); - condition.put("Name_s_like", model.getName()); - condition.put("Type_s_eq", model.getType()); - condition.put("Sort_s_order", "asc"); - return condition; - } - - /** - * 拼接搜索条件-角色对应功能 - * - * @return - */ - private Map getCondition_RoleFunctions(String num) { - /** - * 拼接搜索条件 - */ - Map condition = new HashMap(); - condition.put("Enabled_n_eq", 1); - condition.put("PNumber_s_eq", num); - condition.put("Sort_s_order", "asc"); - return condition; - } - - /** - * 拼接搜索条件-角色对应功能 - * - * @return - */ - private Map getConditionByIds() { - Map condition = new HashMap(); - condition.put("Enabled_n_eq", 1); - condition.put("Id_s_in", model.getFunctionsIDs()); - condition.put("Sort_s_order", "asc"); - return condition; - } - - //=============以下spring注入以及Model驱动公共方法,与Action处理无关================== - @Override - public FunctionsModel getModel() { - return model; - } - - public void setFunctionsService(FunctionsIService functionsService) { - this.functionsService = functionsService; - } - - public void setUserBusinessService(UserBusinessIService userBusinessService) { - this.userBusinessService = userBusinessService; - } - -} diff --git a/src/main/java/com/jsh/action/basic/InOutItemAction.java b/src/main/java/com/jsh/action/basic/InOutItemAction.java deleted file mode 100644 index f1f98d7f..00000000 --- a/src/main/java/com/jsh/action/basic/InOutItemAction.java +++ /dev/null @@ -1,286 +0,0 @@ -package com.jsh.action.basic; - -import com.jsh.base.BaseAction; -import com.jsh.base.Log; -import com.jsh.model.po.InOutItem; -import com.jsh.model.po.Logdetails; -import com.jsh.model.vo.basic.InOutItemModel; -import com.jsh.service.basic.InOutItemIService; -import com.jsh.util.PageUtil; -import net.sf.json.JSONArray; -import net.sf.json.JSONObject; -import org.springframework.dao.DataAccessException; - -import java.io.IOException; -import java.sql.Timestamp; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -/** - * 收支项目 - * - * @author ji*sheng*hua qq 7.5.2.7.1.8.9.2.0 - */ -@SuppressWarnings("serial") -public class InOutItemAction extends BaseAction { - private InOutItemIService inOutItemService; - private InOutItemModel model = new InOutItemModel(); - - /** - * 增加收支项目 - * - * @return - */ - public void create() { - Log.infoFileSync("==================开始调用增加收支项目方法==================="); - Boolean flag = false; - try { - InOutItem inOutItem = new InOutItem(); - inOutItem.setName(model.getName()); - inOutItem.setType(model.getType()); - inOutItem.setRemark(model.getRemark()); - inOutItemService.create(inOutItem); - - //========标识位=========== - flag = true; - //记录操作日志使用 - tipMsg = "成功"; - tipType = 0; - } catch (DataAccessException e) { - Log.errorFileSync(">>>>>>>>>>>>>>>>>>>增加收支项目异常", e); - flag = false; - tipMsg = "失败"; - tipType = 1; - } finally { - try { - toClient(flag.toString()); - } catch (IOException e) { - Log.errorFileSync(">>>>>>>>>>>>增加收支项目回写客户端结果异常", e); - } - } - - logService.create(new Logdetails(getUser(), "增加收支项目", model.getClientIp(), - new Timestamp(System.currentTimeMillis()) - , tipType, "增加收支项目名称为 " + model.getName() + " " + tipMsg + "!", "增加收支项目" + tipMsg)); - Log.infoFileSync("==================结束调用增加收支项目方法==================="); - } - - /** - * 删除收支项目 - * - * @return - */ - public String delete() { - Log.infoFileSync("====================开始调用删除收支项目信息方法delete()================"); - try { - inOutItemService.delete(model.getInOutItemID()); - tipMsg = "成功"; - tipType = 0; - } catch (DataAccessException e) { - Log.errorFileSync(">>>>>>>>>>>删除ID为 " + model.getInOutItemID() + " 的收支项目异常", e); - tipMsg = "失败"; - tipType = 1; - } - model.getShowModel().setMsgTip(tipMsg); - logService.create(new Logdetails(getUser(), "删除收支项目", model.getClientIp(), - new Timestamp(System.currentTimeMillis()) - , tipType, "删除收支项目ID为 " + model.getInOutItemID() + ",名称为 " + model.getName() + tipMsg + "!", "删除收支项目" + tipMsg)); - Log.infoFileSync("====================结束调用删除收支项目信息方法delete()================"); - return SUCCESS; - } - - /** - * 更新收支项目 - * - * @return - */ - public void update() { - Boolean flag = false; - try { - InOutItem inOutItem = inOutItemService.get(model.getInOutItemID()); - inOutItem.setName(model.getName()); - inOutItem.setType(model.getType()); - inOutItem.setRemark(model.getRemark()); - inOutItemService.update(inOutItem); - - flag = true; - tipMsg = "成功"; - tipType = 0; - } catch (DataAccessException e) { - Log.errorFileSync(">>>>>>>>>>>>>修改收支项目ID为 : " + model.getInOutItemID() + "信息失败", e); - flag = false; - tipMsg = "失败"; - tipType = 1; - } finally { - try { - toClient(flag.toString()); - } catch (IOException e) { - Log.errorFileSync(">>>>>>>>>>>>修改收支项目回写客户端结果异常", e); - } - } - logService.create(new Logdetails(getUser(), "更新收支项目", model.getClientIp(), - new Timestamp(System.currentTimeMillis()) - , tipType, "更新收支项目ID为 " + model.getInOutItemID() + " " + tipMsg + "!", "更新收支项目" + tipMsg)); - } - - /** - * 批量删除指定ID收支项目 - * - * @return - */ - public String batchDelete() { - try { - inOutItemService.batchDelete(model.getInOutItemIDs()); - model.getShowModel().setMsgTip("成功"); - //记录操作日志使用 - tipMsg = "成功"; - tipType = 0; - } catch (DataAccessException e) { - Log.errorFileSync(">>>>>>>>>>>批量删除收支项目ID为:" + model.getInOutItemIDs() + "信息异常", e); - tipMsg = "失败"; - tipType = 1; - } - - logService.create(new Logdetails(getUser(), "批量删除收支项目", model.getClientIp(), - new Timestamp(System.currentTimeMillis()) - , tipType, "批量删除收支项目ID为 " + model.getInOutItemIDs() + " " + tipMsg + "!", "批量删除收支项目" + tipMsg)); - return SUCCESS; - } - - /** - * 检查输入名称是否存在 - */ - public void checkIsNameExist() { - Boolean flag = false; - try { - flag = inOutItemService.checkIsNameExist("name", model.getName(), "id", model.getInOutItemID()); - } catch (DataAccessException e) { - Log.errorFileSync(">>>>>>>>>>>>>>>>>检查收支项目名称为:" + model.getName() + " ID为: " + model.getInOutItemID() + " 是否存在异常!"); - } finally { - try { - toClient(flag.toString()); - } catch (IOException e) { - Log.errorFileSync(">>>>>>>>>>>>回写检查收支项目名称为:" + model.getName() + " ID为: " + model.getInOutItemID() + " 是否存在异常!", e); - } - } - } - - /** - * 查找收支项目信息 - * - * @return - */ - public void findBy() { - try { - PageUtil pageUtil = new PageUtil(); - pageUtil.setPageSize(model.getPageSize()); - pageUtil.setCurPage(model.getPageNo()); - pageUtil.setAdvSearch(getCondition()); - inOutItemService.find(pageUtil); - List dataList = pageUtil.getPageList(); - - JSONObject outer = new JSONObject(); - outer.put("total", pageUtil.getTotalCount()); - //存放数据json数组 - JSONArray dataArray = new JSONArray(); - if (null != dataList) { - for (InOutItem inOutItem : dataList) { - JSONObject item = new JSONObject(); - item.put("id", inOutItem.getId()); - //收支项目名称 - item.put("name", inOutItem.getName()); - item.put("type", inOutItem.getType()); - item.put("remark", inOutItem.getRemark()); - item.put("op", 1); - dataArray.add(item); - } - } - outer.put("rows", dataArray); - //回写查询结果 - toClient(outer.toString()); - } catch (DataAccessException e) { - Log.errorFileSync(">>>>>>>>>查找收支项目信息异常", e); - } catch (IOException e) { - Log.errorFileSync(">>>>>>>>>回写查询收支项目信息结果异常", e); - } - } - - /** - * 查找收支项目信息-下拉框 - * - * @return - */ - public void findBySelect() { - try { - PageUtil pageUtil = new PageUtil(); - pageUtil.setPageSize(0); - pageUtil.setCurPage(0); - pageUtil.setAdvSearch(getCondition_select()); - inOutItemService.find(pageUtil); - List dataList = pageUtil.getPageList(); - //存放数据json数组 - JSONArray dataArray = new JSONArray(); - if (null != dataList) { - for (InOutItem inOutItem : dataList) { - JSONObject item = new JSONObject(); - item.put("Id", inOutItem.getId()); - //收支项目名称 - item.put("InOutItemName", inOutItem.getName()); - dataArray.add(item); - } - } - //回写查询结果 - toClient(dataArray.toString()); - } catch (DataAccessException e) { - Log.errorFileSync(">>>>>>>>>查找收支项目信息异常", e); - } catch (IOException e) { - Log.errorFileSync(">>>>>>>>>回写查询收支项目信息结果异常", e); - } - } - - /** - * 拼接搜索条件 - * - * @return - */ - private Map getCondition() { - /** - * 拼接搜索条件 - */ - Map condition = new HashMap(); - condition.put("name_s_like", model.getName()); - condition.put("remark_s_like", model.getRemark()); - condition.put("id_s_order", "desc"); - return condition; - } - - /** - * 拼接搜索条件-下拉框-收支项目 - * - * @return - */ - private Map getCondition_select() { - /** - * 拼接搜索条件 - */ - Map condition = new HashMap(); - if (model.getType().equals("in")) { - condition.put("type_s_eq", "收入"); - } else if (model.getType().equals("out")) { - condition.put("type_s_eq", "支出"); - } - condition.put("id_s_order", "desc"); - return condition; - } - - //=============以下spring注入以及Model驱动公共方法,与Action处理无关================== - @Override - public InOutItemModel getModel() { - return model; - } - - public void setInOutItemService(InOutItemIService inOutItemService) { - this.inOutItemService = inOutItemService; - } -} diff --git a/src/main/java/com/jsh/action/basic/LogAction.java b/src/main/java/com/jsh/action/basic/LogAction.java deleted file mode 100644 index 805f396f..00000000 --- a/src/main/java/com/jsh/action/basic/LogAction.java +++ /dev/null @@ -1,174 +0,0 @@ -package com.jsh.action.basic; - -import com.jsh.base.BaseAction; -import com.jsh.base.Log; -import com.jsh.model.po.Logdetails; -import com.jsh.model.vo.basic.LogModel; -import com.jsh.service.basic.UserIService; -import com.jsh.util.PageUtil; -import com.jsh.util.Tools; -import net.sf.json.JSONArray; -import net.sf.json.JSONObject; -import org.springframework.dao.DataAccessException; - -import java.io.IOException; -import java.sql.Timestamp; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -/* - *日志管理 - * @author jishenghua qq:7-5-2-7-1-8-9-2-0 - */ -@SuppressWarnings("serial") -public class LogAction extends BaseAction { - private LogModel model = new LogModel(); - private UserIService userService; - - @SuppressWarnings({"rawtypes", "unchecked"}) - public String getBasicData() { - Map mapData = model.getShowModel().getMap(); - PageUtil pageUtil = new PageUtil(); - pageUtil.setPageSize(0); - pageUtil.setCurPage(0); - try { - Map condition = pageUtil.getAdvSearch(); - condition.clear(); - condition.put("ismanager_n_eq", 0); - userService.find(pageUtil); - mapData.put("userList", pageUtil.getPageList()); - } catch (Exception e) { - Log.errorFileSync(">>>>>>>>>>>>>查找系统基础数据信息异常", e); - model.getShowModel().setMsgTip("exceptoin"); - } - return SUCCESS; - } - - /** - * 删除日志 - * - * @return - */ - public String delete() { - Log.infoFileSync("====================开始调用删除日志信息方法delete()================"); - try { - logService.delete(model.getLogID()); - tipMsg = "成功"; - tipType = 0; - } catch (DataAccessException e) { - Log.errorFileSync(">>>>>>>>>>>删除ID为 " + model.getLogID() + " 的日志异常", e); - tipMsg = "失败"; - tipType = 1; - } - model.getShowModel().setMsgTip(tipMsg); - logService.create(new Logdetails(getUser(), "删除日志", model.getClientIp(), - new Timestamp(System.currentTimeMillis()) - , tipType, "删除日志ID为 " + model.getLogID() + " " + tipMsg + "!", "删除日志" + tipMsg)); - Log.infoFileSync("====================结束调用删除日志信息方法delete()================"); - return SUCCESS; - } - - /** - * 批量删除指定ID日志 - * - * @return - */ - public String batchDelete() { - try { - logService.batchDelete(model.getLogIDs()); - model.getShowModel().setMsgTip("成功"); - //记录操作日志使用 - tipMsg = "成功"; - tipType = 0; - } catch (DataAccessException e) { - Log.errorFileSync(">>>>>>>>>>>批量删除日志ID为:" + model.getLogIDs() + "信息异常", e); - tipMsg = "失败"; - tipType = 1; - } - - logService.create(new Logdetails(getUser(), "批量删除日志", model.getClientIp(), - new Timestamp(System.currentTimeMillis()) - , tipType, "批量删除日志ID为 " + model.getLogIDs() + " " + tipMsg + "!", "批量删除日志" + tipMsg)); - return SUCCESS; - } - - /** - * 查找日志信息 - * - * @return - */ - public void findBy() { - try { - PageUtil pageUtil = new PageUtil(); - pageUtil.setPageSize(model.getPageSize()); - pageUtil.setCurPage(model.getPageNo()); - pageUtil.setAdvSearch(getCondition()); - logService.find(pageUtil); - List dataList = pageUtil.getPageList(); - - //开始拼接json数据 -// {"total":28,"rows":[ -// {"productid":"AV-CB-01","attr1":"Adult Male","itemid":"EST-18"} -// ]} - JSONObject outer = new JSONObject(); - outer.put("total", pageUtil.getTotalCount()); - //存放数据json数组 - JSONArray dataArray = new JSONArray(); - if (null != dataList) { - for (Logdetails log : dataList) { - JSONObject item = new JSONObject(); - item.put("id", log.getId()); - item.put("clientIP", log.getClientIp()); - item.put("details", log.getContentdetails()); - item.put("createTime", Tools.getCenternTime(log.getCreatetime())); - item.put("operation", log.getOperation()); - item.put("remark", log.getRemark()); - item.put("status", log.getStatus() == 0 ? "成功" : "失败"); - item.put("statusShort", log.getStatus()); - item.put("username", log.getUser() == null ? "" : log.getUser().getUsername()); - dataArray.add(item); - } - } - outer.put("rows", dataArray); - //回写查询结果 - toClient(outer.toString()); - } catch (DataAccessException e) { - Log.errorFileSync(">>>>>>>>>查找日志信息异常", e); - } catch (IOException e) { - Log.errorFileSync(">>>>>>>>>回写查询日志信息结果异常", e); - } - } - - /** - * 拼接搜索条件 - * - * @return - */ - private Map getCondition() { - /** - * 拼接搜索条件 - */ - Map condition = new HashMap(); - condition.put("user.id_n_eq", model.getUsernameID()); - condition.put("createtime_s_gteq", model.getBeginTime()); - condition.put("createtime_s_lteq", model.getEndTime()); - condition.put("operation_s_like", model.getOperation()); - condition.put("clientIp_s_like", model.getClientIp()); - condition.put("status_n_eq", model.getStatus()); - condition.put("contentdetails_s_like", model.getContentdetails()); - condition.put("remark_s_like", model.getRemark()); - condition.put("createtime_s_order", "desc"); - return condition; - } - - //=============以下spring注入以及Model驱动公共方法,与Action处理无关================== - public void setUserService(UserIService userService) { - this.userService = userService; - } - - @Override - public LogModel getModel() { - return model; - } -} diff --git a/src/main/java/com/jsh/action/basic/RoleAction.java b/src/main/java/com/jsh/action/basic/RoleAction.java deleted file mode 100644 index b74b75b6..00000000 --- a/src/main/java/com/jsh/action/basic/RoleAction.java +++ /dev/null @@ -1,301 +0,0 @@ -package com.jsh.action.basic; - -import com.jsh.base.BaseAction; -import com.jsh.base.Log; -import com.jsh.model.po.Logdetails; -import com.jsh.model.po.Role; -import com.jsh.model.vo.basic.RoleModel; -import com.jsh.service.basic.RoleIService; -import com.jsh.service.basic.UserBusinessIService; -import com.jsh.util.PageUtil; -import net.sf.json.JSONArray; -import net.sf.json.JSONObject; -import org.springframework.dao.DataAccessException; - -import java.io.IOException; -import java.sql.Timestamp; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -/* - * 角色管理 - * @author jishenghua qq:7-5-2-7-1-8-9-2-0 - */ -@SuppressWarnings("serial") -public class RoleAction extends BaseAction { - private RoleIService roleService; - private UserBusinessIService userBusinessService; - private RoleModel model = new RoleModel(); - - /** - * 增加角色 - * - * @return - */ - public void create() { - Log.infoFileSync("==================开始调用增加角色信息方法create()==================="); - Boolean flag = false; - try { - Role role = new Role(); - role.setName(model.getName()); - roleService.create(role); - - //========标识位=========== - flag = true; - //记录操作日志使用 - tipMsg = "成功"; - tipType = 0; - } catch (DataAccessException e) { - Log.errorFileSync(">>>>>>>>>>>>>>>>>>>增加角色信息异常", e); - flag = false; - tipMsg = "失败"; - tipType = 1; - } finally { - try { - toClient(flag.toString()); - } catch (IOException e) { - Log.errorFileSync(">>>>>>>>>>>>增加角色信息回写客户端结果异常", e); - } - } - - logService.create(new Logdetails(getUser(), "增加角色", model.getClientIp(), - new Timestamp(System.currentTimeMillis()) - , tipType, "增加角色名称为 " + model.getName() + " " + tipMsg + "!", "增加角色" + tipMsg)); - Log.infoFileSync("==================结束调用增加角色方法create()==================="); - } - - /** - * 删除角色 - * - * @return - */ - public String delete() { - Log.infoFileSync("====================开始调用删除角色信息方法delete()================"); - try { - roleService.delete(model.getRoleID()); - tipMsg = "成功"; - tipType = 0; - } catch (DataAccessException e) { - Log.errorFileSync(">>>>>>>>>>>删除ID为 " + model.getRoleID() + " 的角色异常", e); - tipMsg = "失败"; - tipType = 1; - } - model.getShowModel().setMsgTip(tipMsg); - logService.create(new Logdetails(getUser(), "删除角色", model.getClientIp(), - new Timestamp(System.currentTimeMillis()) - , tipType, "删除角色ID为 " + model.getRoleID() + " " + tipMsg + "!", "删除角色" + tipMsg)); - Log.infoFileSync("====================结束调用删除角色信息方法delete()================"); - return SUCCESS; - } - - /** - * 更新角色 - * - * @return - */ - public void update() { - Boolean flag = false; - try { - Role role = roleService.get(model.getRoleID()); - role.setName(model.getName()); - roleService.update(role); - - flag = true; - tipMsg = "成功"; - tipType = 0; - } catch (DataAccessException e) { - Log.errorFileSync(">>>>>>>>>>>>>修改角色ID为 : " + model.getRoleID() + "信息失败", e); - flag = false; - tipMsg = "失败"; - tipType = 1; - } finally { - try { - toClient(flag.toString()); - } catch (IOException e) { - Log.errorFileSync(">>>>>>>>>>>>修改角色回写客户端结果异常", e); - } - } - logService.create(new Logdetails(getUser(), "更新角色", model.getClientIp(), - new Timestamp(System.currentTimeMillis()) - , tipType, "更新角色ID为 " + model.getRoleID() + " " + tipMsg + "!", "更新角色" + tipMsg)); - } - - /** - * 批量删除指定ID角色 - * - * @return - */ - public String batchDelete() { - try { - roleService.batchDelete(model.getRoleIDs()); - model.getShowModel().setMsgTip("成功"); - //记录操作日志使用 - tipMsg = "成功"; - tipType = 0; - } catch (DataAccessException e) { - Log.errorFileSync(">>>>>>>>>>>批量删除角色ID为:" + model.getRoleIDs() + "信息异常", e); - tipMsg = "失败"; - tipType = 1; - } - - logService.create(new Logdetails(getUser(), "批量删除角色", model.getClientIp(), - new Timestamp(System.currentTimeMillis()) - , tipType, "批量删除角色ID为 " + model.getRoleIDs() + " " + tipMsg + "!", "批量删除角色" + tipMsg)); - return SUCCESS; - } - - /** - * 检查输入名称是否存在 - */ - public void checkIsNameExist() { - Boolean flag = false; - try { - flag = roleService.checkIsNameExist("name", model.getName(), "Id", model.getRoleID()); - } catch (DataAccessException e) { - Log.errorFileSync(">>>>>>>>>>>>>>>>>检查角色名称为:" + model.getName() + " ID为: " + model.getRoleID() + " 是否存在异常!"); - } finally { - try { - toClient(flag.toString()); - } catch (IOException e) { - Log.errorFileSync(">>>>>>>>>>>>回写检查角色名称为:" + model.getName() + " ID为: " + model.getRoleID() + " 是否存在异常!", e); - } - } - } - - /** - * 查找角色信息 - * - * @return - */ - public void findBy() { - try { - PageUtil pageUtil = new PageUtil(); - pageUtil.setPageSize(model.getPageSize()); - pageUtil.setCurPage(model.getPageNo()); - pageUtil.setAdvSearch(getCondition()); - roleService.find(pageUtil); - List dataList = pageUtil.getPageList(); - - //开始拼接json数据 -// {"total":28,"rows":[ -// {"productid":"AV-CB-01","attr1":"Adult Male","itemid":"EST-18"} -// ]} - JSONObject outer = new JSONObject(); - outer.put("total", pageUtil.getTotalCount()); - //存放数据json数组 - JSONArray dataArray = new JSONArray(); - if (null != dataList) { - for (Role role : dataList) { - JSONObject item = new JSONObject(); - item.put("Id", role.getId()); - //供应商名称 - item.put("Name", role.getName()); - item.put("op", 1); - dataArray.add(item); - } - } - outer.put("rows", dataArray); - //回写查询结果 - toClient(outer.toString()); - } catch (DataAccessException e) { - Log.errorFileSync(">>>>>>>>>>>>>>>>>>>查找角色信息异常", e); - } catch (IOException e) { - Log.errorFileSync(">>>>>>>>>>>>>>>>>>>回写查询角色信息结果异常", e); - } - } - - /** - * 用户对应角色显示 - * - * @return - */ - public void findUserRole() { - try { - PageUtil pageUtil = new PageUtil(); - pageUtil.setPageSize(100); - //pageUtil.setCurPage(model.getPageNo()); - - pageUtil.setAdvSearch(getCondition_UserRole()); - roleService.find(pageUtil); - List dataList = pageUtil.getPageList(); - - //开始拼接json数据 - JSONObject outer = new JSONObject(); - outer.put("id", 1); - outer.put("text", "角色列表"); - outer.put("state", "open"); - //存放数据json数组 - JSONArray dataArray = new JSONArray(); - if (null != dataList) { - for (Role role : dataList) { - JSONObject item = new JSONObject(); - item.put("id", role.getId()); - item.put("text", role.getName()); - //勾选判断1 - Boolean flag = false; - try { - flag = userBusinessService.checkIsUserBusinessExist("Type", model.getUBType(), "KeyId", model.getUBKeyId(), "Value", "[" + role.getId().toString() + "]"); - } catch (DataAccessException e) { - Log.errorFileSync(">>>>>>>>>>>>>>>>>设置用户对应的角色:类型" + model.getUBType() + " KeyId为: " + model.getUBKeyId() + " 存在异常!"); - } - if (flag == true) { - item.put("checked", true); - } - //结束 - dataArray.add(item); - } - } - outer.put("children", dataArray); - //回写查询结果 - toClient("[" + outer.toString() + "]"); - } catch (DataAccessException e) { - Log.errorFileSync(">>>>>>>>>>>>>>>>>>>查找角色异常", e); - } catch (IOException e) { - Log.errorFileSync(">>>>>>>>>>>>>>>>>>>回写查询角色结果异常", e); - } - } - - /** - * 拼接搜索条件 - * - * @return - */ - private Map getCondition() { - /** - * 拼接搜索条件 - */ - Map condition = new HashMap(); - condition.put("Name_s_like", model.getName()); - condition.put("Id_s_order", "asc"); - return condition; - } - - /** - * 拼接搜索条件-用户对应角色 - * - * @return - */ - private Map getCondition_UserRole() { - /** - * 拼接搜索条件 - */ - Map condition = new HashMap(); - condition.put("Id_s_order", "asc"); - return condition; - } - - //=============以下spring注入以及Model驱动公共方法,与Action处理无关================== - @Override - public RoleModel getModel() { - return model; - } - - public void setRoleService(RoleIService roleService) { - this.roleService = roleService; - } - - public void setUserBusinessService(UserBusinessIService userBusinessService) { - this.userBusinessService = userBusinessService; - } -} diff --git a/src/main/java/com/jsh/action/basic/SupplierAction.java b/src/main/java/com/jsh/action/basic/SupplierAction.java deleted file mode 100644 index 61f1b63a..00000000 --- a/src/main/java/com/jsh/action/basic/SupplierAction.java +++ /dev/null @@ -1,795 +0,0 @@ -package com.jsh.action.basic; - -import com.jsh.base.BaseAction; -import com.jsh.base.Log; -import com.jsh.model.po.Logdetails; -import com.jsh.model.po.Supplier; -import com.jsh.model.vo.basic.SupplierModel; -import com.jsh.service.basic.SupplierIService; -import com.jsh.service.basic.UserBusinessIService; -import com.jsh.util.JshException; -import com.jsh.util.PageUtil; -import com.jsh.util.SupplierConstants; -import com.jsh.util.Tools; -import net.sf.json.JSONArray; -import net.sf.json.JSONObject; -import org.springframework.dao.DataAccessException; - -import java.io.IOException; -import java.io.InputStream; -import java.sql.Timestamp; -import java.util.Calendar; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -/* - * 单位管理 - * @author ji-sheng-hua qq:7 5 2 7 1 8 9 2 0 - */ -@SuppressWarnings("serial") -public class SupplierAction extends BaseAction { - public static final String EXCEL = "excel"; //action返回excel结果 - private final static Integer ISYSTEM = 1; - private SupplierIService supplierService; - private UserBusinessIService userBusinessService; - private SupplierModel model = new SupplierModel(); - - /** - * 增加供应商 - * - * @return - */ - public void create() { - Log.infoFileSync("==================开始调用增加供应商方法==================="); - Boolean flag = false; - try { - Supplier supplier = new Supplier(); - supplier.setContacts(model.getContacts()); - supplier.setType(model.getType()); - supplier.setDescription(model.getDescription()); - supplier.setEmail(model.getEmail()); - supplier.setAdvanceIn(0.0); - supplier.setBeginNeedGet(model.getBeginNeedGet()); - supplier.setBeginNeedPay(model.getBeginNeedPay()); - supplier.setIsystem((short) 1); - supplier.setEnabled(true); - supplier.setPhonenum(model.getPhonenum()); - supplier.setSupplier(model.getSupplier()); - - supplier.setFax(model.getFax()); - supplier.setTelephone(model.getTelephone()); - supplier.setAddress(model.getAddress()); - supplier.setTaxNum(model.getTaxNum()); - supplier.setBankName(model.getBankName()); - supplier.setAccountNumber(model.getAccountNumber()); - supplier.setTaxRate(model.getTaxRate()); - - supplierService.create(supplier); - - //========标识位=========== - flag = true; - //记录操作日志使用 - tipMsg = "成功"; - tipType = 0; - } catch (DataAccessException e) { - Log.errorFileSync(">>>>>>>>>>>>>>>>>>>增加供应商异常", e); - flag = false; - tipMsg = "失败"; - tipType = 1; - } finally { - try { - toClient(flag.toString()); - } catch (IOException e) { - Log.errorFileSync(">>>>>>>>>>>>增加供应商回写客户端结果异常", e); - } - } - - logService.create(new Logdetails(getUser(), "增加供应商", model.getClientIp(), - new Timestamp(System.currentTimeMillis()) - , tipType, "增加供应商名称为 " + model.getSupplier() + " " + tipMsg + "!", "增加供应商" + tipMsg)); - Log.infoFileSync("==================结束调用增加供应商方法==================="); - } - - /** - * 删除供应商 - * - * @return - */ - public String delete() { - Log.infoFileSync("====================开始调用删除供应商信息方法delete()================"); - try { - supplierService.delete(model.getSupplierID()); - tipMsg = "成功"; - tipType = 0; - } catch (DataAccessException e) { - Log.errorFileSync(">>>>>>>>>>>删除ID为 " + model.getSupplierID() + " 的供应商异常", e); - tipMsg = "失败"; - tipType = 1; - } - model.getShowModel().setMsgTip(tipMsg); - logService.create(new Logdetails(getUser(), "删除供应商", model.getClientIp(), - new Timestamp(System.currentTimeMillis()) - , tipType, "删除供应商ID为 " + model.getSupplierID() + ",名称为 " + model.getSupplier() + tipMsg + "!", "删除供应商" + tipMsg)); - Log.infoFileSync("====================结束调用删除供应商信息方法delete()================"); - return SUCCESS; - } - - /** - * 更新供应商 - * - * @return - */ - public void update() { - Boolean flag = false; - try { - Supplier supplier = supplierService.get(model.getSupplierID()); - supplier.setContacts(model.getContacts()); - supplier.setType(model.getType()); - supplier.setDescription(model.getDescription()); - supplier.setEmail(model.getEmail()); - supplier.setAdvanceIn(supplier.getAdvanceIn()); - supplier.setBeginNeedGet(model.getBeginNeedGet()); - supplier.setBeginNeedPay(model.getBeginNeedPay()); - supplier.setIsystem((short) 1); - supplier.setPhonenum(model.getPhonenum()); - supplier.setSupplier(model.getSupplier()); - - supplier.setFax(model.getFax()); - supplier.setTelephone(model.getTelephone()); - supplier.setAddress(model.getAddress()); - supplier.setTaxNum(model.getTaxNum()); - supplier.setBankName(model.getBankName()); - supplier.setAccountNumber(model.getAccountNumber()); - supplier.setTaxRate(model.getTaxRate()); - - supplier.setEnabled(supplier.getEnabled()); - supplierService.update(supplier); - - flag = true; - tipMsg = "成功"; - tipType = 0; - } catch (DataAccessException e) { - Log.errorFileSync(">>>>>>>>>>>>>修改供应商ID为 : " + model.getSupplierID() + "信息失败", e); - flag = false; - tipMsg = "失败"; - tipType = 1; - } finally { - try { - toClient(flag.toString()); - } catch (IOException e) { - Log.errorFileSync(">>>>>>>>>>>>修改供应商回写客户端结果异常", e); - } - } - logService.create(new Logdetails(getUser(), "更新供应商", model.getClientIp(), - new Timestamp(System.currentTimeMillis()) - , tipType, "更新供应商ID为 " + model.getSupplierID() + " " + tipMsg + "!", "更新供应商" + tipMsg)); - } - - /** - * 更新供应商-只更新预付款,其余用原来的值 - * - * @return - */ - public void updateAdvanceIn() { - Boolean flag = false; - try { - Supplier supplier = supplierService.get(model.getSupplierID()); - supplier.setContacts(supplier.getContacts()); - supplier.setType(supplier.getType()); - supplier.setDescription(supplier.getDescription()); - supplier.setEmail(supplier.getEmail()); - supplier.setAdvanceIn(supplier.getAdvanceIn() + model.getAdvanceIn()); //增加预收款的金额,可能增加的是负值 - supplier.setBeginNeedGet(supplier.getBeginNeedGet()); - supplier.setBeginNeedPay(supplier.getBeginNeedPay()); - supplier.setIsystem((short) 1); - supplier.setPhonenum(supplier.getPhonenum()); - supplier.setSupplier(supplier.getSupplier()); - - supplier.setFax(supplier.getFax()); - supplier.setTelephone(supplier.getTelephone()); - supplier.setAddress(supplier.getAddress()); - supplier.setTaxNum(supplier.getTaxNum()); - supplier.setBankName(supplier.getBankName()); - supplier.setAccountNumber(supplier.getAccountNumber()); - supplier.setTaxRate(supplier.getTaxRate()); - - supplier.setEnabled(supplier.getEnabled()); - supplierService.update(supplier); - - flag = true; - tipMsg = "成功"; - tipType = 0; - } catch (DataAccessException e) { - Log.errorFileSync(">>>>>>>>>>>>>修改供应商ID为 : " + model.getSupplierID() + "信息失败", e); - flag = false; - tipMsg = "失败"; - tipType = 1; - } finally { - try { - toClient(flag.toString()); - } catch (IOException e) { - Log.errorFileSync(">>>>>>>>>>>>修改供应商回写客户端结果异常", e); - } - } - logService.create(new Logdetails(getUser(), "更新供应商预付款", model.getClientIp(), - new Timestamp(System.currentTimeMillis()) - , tipType, "更新供应商ID为 " + model.getSupplierID() + " " + tipMsg + "!", "更新供应商" + tipMsg)); - } - - /** - * 批量删除指定ID供应商 - * - * @return - */ - public String batchDelete() { - try { - supplierService.batchDelete(model.getSupplierIDs()); - model.getShowModel().setMsgTip("成功"); - //记录操作日志使用 - tipMsg = "成功"; - tipType = 0; - } catch (DataAccessException e) { - Log.errorFileSync(">>>>>>>>>>>批量删除供应商ID为:" + model.getSupplierIDs() + "信息异常", e); - tipMsg = "失败"; - tipType = 1; - } - - logService.create(new Logdetails(getUser(), "批量删除供应商", model.getClientIp(), - new Timestamp(System.currentTimeMillis()) - , tipType, "批量删除供应商ID为 " + model.getSupplierIDs() + " " + tipMsg + "!", "批量删除供应商" + tipMsg)); - return SUCCESS; - } - - /** - * 批量设置状态-启用或者禁用 - * - * @return - */ - public String batchSetEnable() { - try { - supplierService.batchSetEnable(model.getEnabled(), model.getSupplierIDs()); - model.getShowModel().setMsgTip("成功"); - //记录操作日志使用 - tipMsg = "成功"; - tipType = 0; - } catch (DataAccessException e) { - Log.errorFileSync(">>>>>>>>>>>批量修改状态,单位ID为:" + model.getSupplierIDs() + "信息异常", e); - tipMsg = "失败"; - tipType = 1; - } - - logService.create(new Logdetails(getUser(), "批量修改单位状态", model.getClientIp(), - new Timestamp(System.currentTimeMillis()) - , tipType, "批量修改状态,单位ID为 " + model.getSupplierIDs() + " " + tipMsg + "!", "批量修改单位状态" + tipMsg)); - return SUCCESS; - } - - /** - * 检查输入名称是否存在 - */ - public void checkIsNameExist() { - Boolean flag = false; - try { - flag = supplierService.checkIsNameExist("supplier", model.getSupplier(), "id", model.getSupplierID()); - } catch (DataAccessException e) { - Log.errorFileSync(">>>>>>>>>>>>>>>>>检查供应商名称为:" + model.getSupplier() + " ID为: " + model.getSupplierID() + " 是否存在异常!"); - } finally { - try { - toClient(flag.toString()); - } catch (IOException e) { - Log.errorFileSync(">>>>>>>>>>>>回写检查供应商名称为:" + model.getSupplier() + " ID为: " + model.getSupplierID() + " 是否存在异常!", e); - } - } - } - - /** - * 查找供应商信息 - * - * @return - */ - public void findBy() { - try { - PageUtil pageUtil = new PageUtil(); - pageUtil.setPageSize(model.getPageSize()); - pageUtil.setCurPage(model.getPageNo()); - pageUtil.setAdvSearch(getCondition()); - supplierService.find(pageUtil); - String sName = ""; - if ((model.getType()).equals("供应商")) { - sName = "pageUtilVendor"; - } else if ((model.getType()).equals("客户")) { - sName = "pageUtilCustomer"; - } else if ((model.getType()).equals("会员")) { - sName = "pageUtilMember"; - } - getSession().put(sName, pageUtil); - List dataList = pageUtil.getPageList(); - - JSONObject outer = new JSONObject(); - outer.put("total", pageUtil.getTotalCount()); - //存放数据json数组 - JSONArray dataArray = new JSONArray(); - if (null != dataList) { - for (Supplier supplier : dataList) { - JSONObject item = new JSONObject(); - item.put("id", supplier.getId()); - //供应商名称 - item.put("supplier", supplier.getSupplier()); - item.put("type", supplier.getType()); - item.put("contacts", supplier.getContacts()); - item.put("phonenum", supplier.getPhonenum()); - item.put("email", supplier.getEmail()); - item.put("AdvanceIn", supplier.getAdvanceIn()); - item.put("BeginNeedGet", supplier.getBeginNeedGet()); - item.put("BeginNeedPay", supplier.getBeginNeedPay()); - item.put("isystem", supplier.getIsystem() == (short) 0 ? "是" : "否"); - item.put("description", supplier.getDescription()); - - item.put("fax", supplier.getFax()); - item.put("telephone", supplier.getTelephone()); - item.put("address", supplier.getAddress()); - item.put("taxNum", supplier.getTaxNum()); - item.put("bankName", supplier.getBankName()); - item.put("accountNumber", supplier.getAccountNumber()); - item.put("taxRate", supplier.getTaxRate()); - - item.put("enabled", supplier.getEnabled()); - item.put("op", supplier.getIsystem()); - dataArray.add(item); - } - } - outer.put("rows", dataArray); - //回写查询结果 - toClient(outer.toString()); - } catch (DataAccessException e) { - Log.errorFileSync(">>>>>>>>>查找供应商信息异常", e); - } catch (IOException e) { - Log.errorFileSync(">>>>>>>>>回写查询供应商信息结果异常", e); - } - } - - /** - * 根据id查找信息 - * - * @return - */ - public void findById() { - try { - PageUtil pageUtil = new PageUtil(); - pageUtil.setPageSize(0); - pageUtil.setCurPage(0); - pageUtil.setAdvSearch(getConditionById()); - supplierService.find(pageUtil); - List dataList = pageUtil.getPageList(); - JSONObject outer = new JSONObject(); - outer.put("total", pageUtil.getTotalCount()); - //存放数据json数组 - JSONArray dataArray = new JSONArray(); - if (null != dataList) { - for (Supplier supplier : dataList) { - JSONObject item = new JSONObject(); - item.put("id", supplier.getId()); - //名称 - item.put("supplier", supplier.getSupplier()); - item.put("type", supplier.getType()); - item.put("contacts", supplier.getContacts()); - item.put("phonenum", supplier.getPhonenum()); - item.put("email", supplier.getEmail()); - item.put("AdvanceIn", supplier.getAdvanceIn()); - item.put("BeginNeedGet", supplier.getBeginNeedGet()); - item.put("BeginNeedPay", supplier.getBeginNeedPay()); - item.put("isystem", supplier.getIsystem() == (short) 0 ? "是" : "否"); - item.put("description", supplier.getDescription()); - - item.put("fax", supplier.getFax()); - item.put("telephone", supplier.getTelephone()); - item.put("address", supplier.getAddress()); - item.put("taxNum", supplier.getTaxNum()); - item.put("bankName", supplier.getBankName()); - item.put("accountNumber", supplier.getAccountNumber()); - item.put("taxRate", supplier.getTaxRate()); - - item.put("enabled", supplier.getEnabled()); - item.put("op", supplier.getIsystem()); - dataArray.add(item); - } - } - outer.put("rows", dataArray); - //回写查询结果 - toClient(outer.toString()); - } catch (DataAccessException e) { - Log.errorFileSync(">>>>>>>>>查找信息异常", e); - } catch (IOException e) { - Log.errorFileSync(">>>>>>>>>回写查询信息结果异常", e); - } - } - - /** - * 查找供应商信息-下拉框 - * - * @return - */ - public void findBySelect_sup() { - try { - PageUtil pageUtil = new PageUtil(); - pageUtil.setPageSize(0); - pageUtil.setCurPage(0); - pageUtil.setAdvSearch(getCondition_Select_sup()); - supplierService.find(pageUtil); - List dataList = pageUtil.getPageList(); - //存放数据json数组 - JSONArray dataArray = new JSONArray(); - if (null != dataList) { - for (Supplier supplier : dataList) { - JSONObject item = new JSONObject(); - item.put("id", supplier.getId()); - //供应商名称 - item.put("supplier", supplier.getSupplier()); - dataArray.add(item); - } - } - //回写查询结果 - toClient(dataArray.toString()); - } catch (DataAccessException e) { - Log.errorFileSync(">>>>>>>>>查找供应商信息异常", e); - } catch (IOException e) { - Log.errorFileSync(">>>>>>>>>回写查询供应商信息结果异常", e); - } - } - - /** - * 查找客户信息-下拉框 - * - * @return - */ - public void findBySelect_cus() { - try { - PageUtil pageUtil = new PageUtil(); - pageUtil.setPageSize(0); - pageUtil.setCurPage(0); - pageUtil.setAdvSearch(getCondition_Select_cus()); - supplierService.find(pageUtil); - List dataList = pageUtil.getPageList(); - //存放数据json数组 - JSONArray dataArray = new JSONArray(); - if (null != dataList) { - for (Supplier supplier : dataList) { - JSONObject item = new JSONObject(); - //勾选判断1 - Boolean flag = false; - try { - flag = userBusinessService.checkIsUserBusinessExist("Type", model.getUBType(), "KeyId", model.getUBKeyId(), "Value", "[" + supplier.getId().toString() + "]"); - } catch (DataAccessException e) { - Log.errorFileSync(">>>>>>>>>>>>>>>>>查询用户对应的客户:类型" + model.getUBType() + " KeyId为: " + model.getUBKeyId() + " 存在异常!"); - } - if (flag == true) { - item.put("id", supplier.getId()); - item.put("supplier", supplier.getSupplier()); //客户名称 - dataArray.add(item); - } - } - } - //回写查询结果 - toClient(dataArray.toString()); - } catch (DataAccessException e) { - Log.errorFileSync(">>>>>>>>>查找客户信息异常", e); - } catch (IOException e) { - Log.errorFileSync(">>>>>>>>>回写查询客户信息结果异常", e); - } - } - - /** - * 查找会员信息-下拉框 - * - * @return - */ - public void findBySelect_retail() { - try { - PageUtil pageUtil = new PageUtil(); - pageUtil.setPageSize(0); - pageUtil.setCurPage(0); - pageUtil.setAdvSearch(getCondition_Select_retail()); - supplierService.find(pageUtil); - List dataList = pageUtil.getPageList(); - //存放数据json数组 - JSONArray dataArray = new JSONArray(); - if (null != dataList) { - for (Supplier supplier : dataList) { - JSONObject item = new JSONObject(); - item.put("id", supplier.getId()); - //客户名称 - item.put("supplier", supplier.getSupplier()); - item.put("advanceIn", supplier.getAdvanceIn()); //预付款金额 - dataArray.add(item); - } - } - //回写查询结果 - toClient(dataArray.toString()); - } catch (DataAccessException e) { - Log.errorFileSync(">>>>>>>>>查找客户信息异常", e); - } catch (IOException e) { - Log.errorFileSync(">>>>>>>>>回写查询客户信息结果异常", e); - } - } - - /** - * 查找非会员的id - */ - public void findBySelectRetailNoPeople() { - try { - PageUtil pageUtil = new PageUtil(); - pageUtil.setPageSize(0); - pageUtil.setCurPage(0); - pageUtil.setAdvSearch(getCondition_Select_retail_no_people()); - supplierService.find(pageUtil); - List dataList = pageUtil.getPageList(); - //存放数据json数组 - JSONArray dataArray = new JSONArray(); - if (null != dataList) { - for (Supplier supplier : dataList) { - JSONObject item = new JSONObject(); - item.put("id", supplier.getId()); - //客户名称 - item.put("supplier", supplier.getSupplier()); - item.put("advanceIn", supplier.getAdvanceIn()); //预付款金额 - dataArray.add(item); - } - } - //回写查询结果 - toClient(dataArray.toString()); - } catch (DataAccessException e) { - Log.errorFileSync(">>>>>>>>>查找客户信息异常", e); - } catch (IOException e) { - Log.errorFileSync(">>>>>>>>>回写查询客户信息结果异常", e); - } - } - - /** - * 用户对应客户显示 - * - * @return - */ - public void findUserCustomer() { - try { - PageUtil pageUtil = new PageUtil(); - pageUtil.setPageSize(500); - - Map condition = new HashMap(); - condition.put("type_s_eq", "客户"); - condition.put("id_s_order", "desc"); - - pageUtil.setAdvSearch(condition); - supplierService.find(pageUtil); - List dataList = pageUtil.getPageList(); - - //开始拼接json数据 - JSONObject outer = new JSONObject(); - outer.put("id", 1); - outer.put("text", "客户列表"); - outer.put("state", "open"); - //存放数据json数组 - JSONArray dataArray = new JSONArray(); - if (null != dataList) { - for (Supplier supplier : dataList) { - JSONObject item = new JSONObject(); - item.put("id", supplier.getId()); - item.put("text", supplier.getSupplier()); - //勾选判断1 - Boolean flag = false; - try { - flag = userBusinessService.checkIsUserBusinessExist("Type", model.getUBType(), "KeyId", model.getUBKeyId(), "Value", "[" + supplier.getId().toString() + "]"); - } catch (DataAccessException e) { - Log.errorFileSync(">>>>>>>>>>>>>>>>>设置用户对应的客户:类型" + model.getUBType() + " KeyId为: " + model.getUBKeyId() + " 存在异常!"); - } - if (flag == true) { - item.put("checked", true); - } - //结束 - dataArray.add(item); - } - } - outer.put("children", dataArray); - //回写查询结果 - toClient("[" + outer.toString() + "]"); - } catch (DataAccessException e) { - Log.errorFileSync(">>>>>>>>>>>>>>>>>>>查找客户异常", e); - } catch (IOException e) { - Log.errorFileSync(">>>>>>>>>>>>>>>>>>>回写查询客户结果异常", e); - } - } - - public String importFun() { - //excel表格file - Boolean result = false; - String returnStr = ""; - try { - InputStream in = supplierService.importExcel(model.getSupplierFile()); - - if (null != in) { - model.setFileName(Tools.getRandomChar() + Tools.getNow2(Calendar.getInstance().getTime()) + "_wrong.xls"); - model.setExcelStream(in); - returnStr = SupplierConstants.BusinessForExcel.EXCEL; - } else { - result = true; - try { - toClient(result.toString()); - } catch (IOException e) { - Log.errorFileSync(">>>>>>>>>回写导入信息结果异常", e); - } - //导入数据成功 - returnStr = SUCCESS; - } - - } catch (JshException e) { - Log.errorFileSync(">>>>>>>>>>>>>>>>>>>导入excel表格信息异常", e); - } - return returnStr; - } - - /** - * 导入excel表格-供应商 - * - * @return - */ - @SuppressWarnings("unchecked") - public String importExcelVendor() { - return importFun(); - } - - /** - * 导入excel表格-客户 - * - * @return - */ - @SuppressWarnings("unchecked") - public String importExcelCustomer() { - return importFun(); - } - - /** - * 导入excel表格-会员 - * - * @return - */ - @SuppressWarnings("unchecked") - public String importExcelMember() { - return importFun(); - } - - - /** - * 导出excel表格 - * - * @return - */ - @SuppressWarnings("unchecked") - public String exportExcel() { - Log.infoFileSync("===================调用导出信息action方法exportExcel开始======================="); - try { - String sName = "pageUtil" + model.getType(); - PageUtil pageUtil = (PageUtil) getSession().get(sName); - - pageUtil.setPageSize(model.getPageSize()); - pageUtil.setCurPage(model.getPageNo()); - String isCurrentPage = "allPage"; - model.setFileName(Tools.changeUnicode("report" + System.currentTimeMillis() + ".xls", model.getBrowserType())); - model.setExcelStream(supplierService.exmportExcel(isCurrentPage, pageUtil)); - } catch (Exception e) { - Log.errorFileSync(">>>>>>>>>>>>>>>>>>>>>>调用导出信息action方法exportExcel异常", e); - model.getShowModel().setMsgTip("export excel exception"); - } - Log.infoFileSync("===================调用导出信息action方法exportExcel结束=================="); - return EXCEL; - } - - /** - * 拼接搜索条件 - * - * @return - */ - private Map getCondition() { - /** - * 拼接搜索条件 - */ - Map condition = new HashMap(); - condition.put("supplier_s_like", model.getSupplier()); - condition.put("type_s_like", model.getType()); - condition.put("phonenum_s_like", model.getPhonenum()); - condition.put("telephone_s_like", model.getTelephone()); - condition.put("description_s_like", model.getDescription()); - condition.put("isystem_n_eq", ISYSTEM); - condition.put("id_s_order", "desc"); - return condition; - } - - /** - * 搜索条件 - */ - private Map getConditionById() { - /** - * 拼接搜索条件 - */ - Map condition = new HashMap(); - condition.put("Id_n_eq", model.getSupplierID()); - return condition; - } - - /** - * 拼接搜索条件-下拉框-供应商 - * - * @return - */ - private Map getCondition_Select_sup() { - /** - * 拼接搜索条件 - */ - Map condition = new HashMap(); - condition.put("type_s_like", "供应商"); - condition.put("enabled_s_eq", 1); - condition.put("id_s_order", "desc"); - return condition; - } - - /** - * 拼接搜索条件-下拉框-客户 - * - * @return - */ - private Map getCondition_Select_cus() { - /** - * 拼接搜索条件 - */ - Map condition = new HashMap(); - condition.put("type_s_like", "客户"); - condition.put("enabled_s_eq", 1); - condition.put("id_s_order", "desc"); - return condition; - } - - /** - * 拼接搜索条件-下拉框-会员 - * - * @return - */ - private Map getCondition_Select_retail() { - /** - * 拼接搜索条件 - */ - Map condition = new HashMap(); - condition.put("type_s_like", "会员"); - condition.put("enabled_s_eq", 1); - condition.put("id_s_order", "desc"); - return condition; - } - - /** - * 拼接搜索条件-非会员 - * - * @return - */ - private Map getCondition_Select_retail_no_people() { - /** - * 拼接搜索条件 - */ - Map condition = new HashMap(); - condition.put("type_s_like", "会员"); - condition.put("isystem_n_eq", 0); - condition.put("id_s_order", "desc"); - return condition; - } - - //=============以下spring注入以及Model驱动公共方法,与Action处理无关================== - @Override - public SupplierModel getModel() { - return model; - } - - public void setSupplierService(SupplierIService supplierService) { - this.supplierService = supplierService; - } - - public void setUserBusinessService(UserBusinessIService userBusinessService) { - this.userBusinessService = userBusinessService; - } -} diff --git a/src/main/java/com/jsh/action/basic/SystemConfigAction.java b/src/main/java/com/jsh/action/basic/SystemConfigAction.java deleted file mode 100644 index 7aaeb456..00000000 --- a/src/main/java/com/jsh/action/basic/SystemConfigAction.java +++ /dev/null @@ -1,126 +0,0 @@ -package com.jsh.action.basic; - -import com.jsh.base.BaseAction; -import com.jsh.base.Log; -import com.jsh.model.po.Logdetails; -import com.jsh.model.po.SystemConfig; -import com.jsh.model.vo.basic.SystemConfigModel; -import com.jsh.service.basic.SystemConfigIService; -import com.jsh.util.PageUtil; -import net.sf.json.JSONArray; -import net.sf.json.JSONObject; -import org.springframework.dao.DataAccessException; - -import java.io.IOException; -import java.sql.Timestamp; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -/* - * 系统配置 - * @author jishenghua qq:7-5-2-7 1-8-9-2-0 - */ -@SuppressWarnings("serial") -public class SystemConfigAction extends BaseAction { - private SystemConfigIService systemConfigService; - private SystemConfigModel model = new SystemConfigModel(); - - /** - * 更新系统配置 - * - * @return - */ - public void update() { - Boolean flag = false; - try { - SystemConfig sysConfig = systemConfigService.get(model.getId()); - sysConfig.setType(sysConfig.getType()); - sysConfig.setName(sysConfig.getName()); - sysConfig.setValue(model.getValue()); - sysConfig.setDescription(sysConfig.getDescription()); - systemConfigService.update(sysConfig); - - flag = true; - tipMsg = "成功"; - tipType = 0; - } catch (DataAccessException e) { - Log.errorFileSync(">>>>>>>>>>>>>修改系统配置ID为 : " + model.getId() + "信息失败", e); - flag = false; - tipMsg = "失败"; - tipType = 1; - } finally { - try { - toClient(flag.toString()); - } catch (IOException e) { - Log.errorFileSync(">>>>>>>>>>>>修改系统配置回写客户端结果异常", e); - } - } - logService.create(new Logdetails(getUser(), "更新系统配置", model.getClientIp(), - new Timestamp(System.currentTimeMillis()) - , tipType, "更新系统配置ID为 " + model.getId() + " " + tipMsg + "!", "更新系统配置" + tipMsg)); - } - - /** - * 查找系统配置信息 - * - * @return - */ - public void findBy() { - try { - PageUtil pageUtil = new PageUtil(); - pageUtil.setPageSize(0); - pageUtil.setCurPage(0); - pageUtil.setAdvSearch(getCondition()); - systemConfigService.find(pageUtil); - List dataList = pageUtil.getPageList(); - JSONObject outer = new JSONObject(); - //存放数据json数组 - JSONArray dataArray = new JSONArray(); - if (null != dataList) { - for (SystemConfig sysConfig : dataList) { - JSONObject item = new JSONObject(); - item.put("id", sysConfig.getId()); - item.put("type", sysConfig.getType()); - item.put("name", sysConfig.getName()); - item.put("value", sysConfig.getValue()); - item.put("description", sysConfig.getDescription()); - item.put("op", 1); - dataArray.add(item); - } - } - outer.put("rows", dataArray); - //回写查询结果 - toClient(outer.toString()); - } catch (DataAccessException e) { - Log.errorFileSync(">>>>>>>>>>>>>>>>>>>查找系统配置信息异常", e); - } catch (IOException e) { - Log.errorFileSync(">>>>>>>>>>>>>>>>>>>回写查询系统配置信息结果异常", e); - } - } - - /** - * 拼接搜索条件 - * - * @return - */ - private Map getCondition() { - /** - * 拼接搜索条件 - */ - Map condition = new HashMap(); - condition.put("id_s_order", "asc"); - return condition; - } - - - //=============以下spring注入以及Model驱动公共方法,与Action处理无关================== - @Override - public SystemConfigModel getModel() { - return model; - } - - public void setSystemConfigService(SystemConfigIService systemConfigService) { - this.systemConfigService = systemConfigService; - } -} diff --git a/src/main/java/com/jsh/action/basic/UnitAction.java b/src/main/java/com/jsh/action/basic/UnitAction.java deleted file mode 100644 index 931482d1..00000000 --- a/src/main/java/com/jsh/action/basic/UnitAction.java +++ /dev/null @@ -1,262 +0,0 @@ -package com.jsh.action.basic; - -import com.jsh.base.BaseAction; -import com.jsh.base.Log; -import com.jsh.model.po.Logdetails; -import com.jsh.model.po.Unit; -import com.jsh.model.vo.basic.UnitModel; -import com.jsh.service.basic.UnitIService; -import com.jsh.util.PageUtil; -import net.sf.json.JSONArray; -import net.sf.json.JSONObject; -import org.springframework.dao.DataAccessException; - -import java.io.IOException; -import java.sql.Timestamp; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -/** - * 计量单位 - * - * @author ji shenghua qq:752 718 920 - */ -@SuppressWarnings("serial") -public class UnitAction extends BaseAction { - private UnitIService unitService; - private UnitModel model = new UnitModel(); - - - /** - * 增加计量单位 - * - * @return - */ - public void create() { - Log.infoFileSync("==================开始调用增加计量单位方法create()==================="); - Boolean flag = false; - try { - Unit unit = new Unit(); - unit.setUName(model.getUName()); - unitService.create(unit); - - //========标识位=========== - flag = true; - //记录操作日志使用 - tipMsg = "成功"; - tipType = 0; - } catch (DataAccessException e) { - Log.errorFileSync(">>>>>>>>>>>>>>>>>>>增加计量单位异常", e); - flag = false; - tipMsg = "失败"; - tipType = 1; - } finally { - try { - toClient(flag.toString()); - } catch (IOException e) { - Log.errorFileSync(">>>>>>>>>>>>增加计量单位回写客户端结果异常", e); - } - } - - logService.create(new Logdetails(getUser(), "增加计量单位", model.getClientIp(), - new Timestamp(System.currentTimeMillis()) - , tipType, "增加计量单位名称为 " + model.getUName() + " " + tipMsg + "!", "增加计量单位" + tipMsg)); - Log.infoFileSync("==================结束调用增加计量单位方法create()==================="); - } - - /** - * 删除计量单位 - * - * @return - */ - public String delete() { - Log.infoFileSync("====================开始调用删除计量单位方法delete()================"); - try { - unitService.delete(model.getUnitID()); - tipMsg = "成功"; - tipType = 0; - } catch (DataAccessException e) { - Log.errorFileSync(">>>>>>>>>>>删除ID为 " + model.getUnitID() + " 的计量单位异常", e); - tipMsg = "失败"; - tipType = 1; - } - model.getShowModel().setMsgTip(tipMsg); - logService.create(new Logdetails(getUser(), "删除计量单位", model.getClientIp(), - new Timestamp(System.currentTimeMillis()) - , tipType, "删除计量单位ID为 " + model.getUnitID() + " " + tipMsg + "!", "删除计量单位" + tipMsg)); - Log.infoFileSync("====================结束调用删除计量单位方法delete()================"); - return SUCCESS; - } - - /** - * 更新计量单位 - * - * @return - */ - public void update() { - Boolean flag = false; - try { - Unit unit = unitService.get(model.getUnitID()); - unit.setUName(model.getUName()); - unitService.update(unit); - - flag = true; - tipMsg = "成功"; - tipType = 0; - } catch (DataAccessException e) { - Log.errorFileSync(">>>>>>>>>>>>>修改计量单位ID为 : " + model.getUnitID() + "信息失败", e); - flag = false; - tipMsg = "失败"; - tipType = 1; - } finally { - try { - toClient(flag.toString()); - } catch (IOException e) { - Log.errorFileSync(">>>>>>>>>>>>修改计量单位回写客户端结果异常", e); - } - } - logService.create(new Logdetails(getUser(), "更新计量单位", model.getClientIp(), - new Timestamp(System.currentTimeMillis()) - , tipType, "更新计量单位ID为 " + model.getUnitID() + " " + tipMsg + "!", "更新计量单位" + tipMsg)); - } - - /** - * 批量删除指定ID计量单位 - * - * @return - */ - public String batchDelete() { - try { - unitService.batchDelete(model.getUnitIDs()); - model.getShowModel().setMsgTip("成功"); - //记录操作日志使用 - tipMsg = "成功"; - tipType = 0; - } catch (DataAccessException e) { - Log.errorFileSync(">>>>>>>>>>>批量删除计量单位ID为:" + model.getUnitIDs() + "信息异常", e); - tipMsg = "失败"; - tipType = 1; - } - - logService.create(new Logdetails(getUser(), "批量删除计量单位", model.getClientIp(), - new Timestamp(System.currentTimeMillis()) - , tipType, "批量删除计量单位ID为 " + model.getUnitIDs() + " " + tipMsg + "!", "批量删除计量单位" + tipMsg)); - return SUCCESS; - } - - /** - * 检查输入名称是否存在 - */ - public void checkIsNameExist() { - Boolean flag = false; - try { - flag = unitService.checkIsNameExist("UName", model.getUName(), "id", model.getUnitID()); - } catch (DataAccessException e) { - Log.errorFileSync(">>>>>>>>>>>>>>>>>检查计量单位名称为:" + model.getUName() + " ID为: " + model.getUnitID() + " 是否存在异常!"); - } finally { - try { - toClient(flag.toString()); - } catch (IOException e) { - Log.errorFileSync(">>>>>>>>>>>>回写检查计量单位名称为:" + model.getUName() + " ID为: " + model.getUnitID() + " 是否存在异常!", e); - } - } - } - - /** - * 查找计量单位信息 - * - * @return - */ - public void findBy() { - try { - PageUtil pageUtil = new PageUtil(); - pageUtil.setPageSize(model.getPageSize()); - pageUtil.setCurPage(model.getPageNo()); - pageUtil.setAdvSearch(getCondition()); - unitService.find(pageUtil); - List dataList = pageUtil.getPageList(); - - JSONObject outer = new JSONObject(); - outer.put("total", pageUtil.getTotalCount()); - //存放数据json数组 - JSONArray dataArray = new JSONArray(); - if (null != dataList) { - for (Unit unit : dataList) { - JSONObject item = new JSONObject(); - item.put("id", unit.getId()); - //名称 - item.put("UName", unit.getUName()); - item.put("op", 1); - dataArray.add(item); - } - } - outer.put("rows", dataArray); - //回写查询结果 - toClient(outer.toString()); - } catch (DataAccessException e) { - Log.errorFileSync(">>>>>>>>>>>>>>>>>>>查找计量单位异常", e); - } catch (IOException e) { - Log.errorFileSync(">>>>>>>>>>>>>>>>>>>回写查询计量单位结果异常", e); - } - } - - /** - * 查找计量单位信息-下拉框 - * - * @return - */ - public void findUnitDownList() { - try { - PageUtil pageUtil = new PageUtil(); - pageUtil.setPageSize(0); - pageUtil.setCurPage(0); - pageUtil.setAdvSearch(getCondition()); - unitService.find(pageUtil); - List dataList = pageUtil.getPageList(); - - //存放数据json数组 - JSONArray dataArray = new JSONArray(); - if (null != dataList) { - for (Unit unit : dataList) { - JSONObject item = new JSONObject(); - item.put("id", unit.getId()); - //名称 - item.put("UName", unit.getUName()); - dataArray.add(item); - } - } - //回写查询结果 - toClient(dataArray.toString()); - } catch (DataAccessException e) { - Log.errorFileSync(">>>>>>>>>>>>>>>>>>>查找计量单位异常", e); - } catch (IOException e) { - Log.errorFileSync(">>>>>>>>>>>>>>>>>>>回写查询计量单位结果异常", e); - } - } - - /** - * 拼接搜索条件 - * - * @return - */ - private Map getCondition() { - /** - * 拼接搜索条件 - */ - Map condition = new HashMap(); - condition.put("UName_s_like", model.getUName()); - condition.put("id_s_order", "asc"); - return condition; - } - - //=============以下spring注入以及Model驱动公共方法,与Action处理无关================== - @Override - public UnitModel getModel() { - return model; - } - - public void setUnitService(UnitIService unitService) { - this.unitService = unitService; - } -} diff --git a/src/main/java/com/jsh/action/basic/UserAction.java b/src/main/java/com/jsh/action/basic/UserAction.java deleted file mode 100644 index 11eae985..00000000 --- a/src/main/java/com/jsh/action/basic/UserAction.java +++ /dev/null @@ -1,446 +0,0 @@ -package com.jsh.action.basic; - -import com.jsh.base.BaseAction; -import com.jsh.base.Log; -import com.jsh.model.po.Basicuser; -import com.jsh.model.po.Logdetails; -import com.jsh.model.vo.basic.UserModel; -import com.jsh.service.basic.UserIService; -import com.jsh.util.ExceptionCodeConstants; -import com.jsh.util.PageUtil; -import com.jsh.util.Tools; -import net.sf.json.JSONArray; -import net.sf.json.JSONObject; -import org.springframework.dao.DataAccessException; - -import java.io.IOException; -import java.security.NoSuchAlgorithmException; -import java.sql.Timestamp; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -/* - * 用户管理 - * @author jishenghua qq:752718920 - */ -@SuppressWarnings("serial") -public class UserAction extends BaseAction { - private UserModel model = new UserModel(); - private UserIService userService; - - /** - * 需要判断用户状态,用户名密码错误不能登录 ,黑名单用户不能登录,如果已经登录过,不再进行处理,直接进入管理页面 - * - * @return - */ - public String login() { - Log.infoFileSync("============用户登录 login 方法调用开始=============="); - String username = model.getLoginame().trim(); - String password = model.getPassword().trim(); - //因密码用MD5加密,需要对密码进行转化 - try { - password = Tools.md5Encryp(password); - System.out.println(password); - } catch (NoSuchAlgorithmException e) { - e.printStackTrace(); - Log.errorFileSync(">>>>>>>>>>>>>>转化MD5字符串错误 :" + e.getMessage(), e); - } - - //判断用户是否已经登录过,登录过不再处理 - Basicuser sessionUser = (Basicuser) getSession().get("user"); - if (null != sessionUser && username.equalsIgnoreCase(sessionUser.getLoginame()) - && sessionUser.getPassword().equals(password)) { - Log.infoFileSync("====用户 " + username + "已经登录过, login 方法调用结束===="); - model.getShowModel().setMsgTip("user already login"); - /*return "login";*/ - } - - //获取用户状态 - int userStatus = -1; - try { - userStatus = userService.validateUser(username, password); - } catch (Exception e) { - Log.errorFileSync(">>>>>>>>>>>>>用户 " + username + " 登录 login 方法 访问服务层异常====", e); - model.getShowModel().setMsgTip("access service exception"); - } - switch (userStatus) { - case ExceptionCodeConstants.UserExceptionCode.USER_NOT_EXIST: - model.getShowModel().setMsgTip("user is not exist"); - break; - case ExceptionCodeConstants.UserExceptionCode.USER_PASSWORD_ERROR: - model.getShowModel().setMsgTip("user password error"); - break; - case ExceptionCodeConstants.UserExceptionCode.BLACK_USER: - model.getShowModel().setMsgTip("user is black"); - break; - case ExceptionCodeConstants.UserExceptionCode.USER_ACCESS_EXCEPTION: - model.getShowModel().setMsgTip("access service error"); - break; - default: - try { - //验证通过 ,可以登录,放入session,记录登录日志 - Basicuser user = userService.getUser(username); - logService.create(new Logdetails(user, "登录系统", model.getClientIp(), - new Timestamp(System.currentTimeMillis()), (short) 0, "管理用户:" + username + " 登录系统", username + " 登录系统")); - model.getShowModel().setMsgTip("user can login"); - getSession().put("user", user); - } catch (Exception e) { - Log.errorFileSync(">>>>>>>>>>>>>>>查询用户名为:" + username + " ,用户信息异常", e); - } - break; - } - /*if(ExceptionCodeConstants.UserExceptionCode.USER_CONDITION_FIT == userStatus) - return "login";*/ - Log.infoFileSync("===============用户登录 login 方法调用结束==============="); - return SUCCESS; - } - - /** - * 用户退出登录 - * - * @return - */ - public String logout() { - logService.create(new Logdetails(getUser(), "退出系统", model.getClientIp(), - new Timestamp(System.currentTimeMillis()), (short) 0, - "管理用户:" + getUser().getLoginame() + " 退出系统", getUser().getLoginame() + " 退出系统")); - getSession().remove("user"); - return SUCCESS; - } - - /** - * 增加用户 - * - * @return - */ - public void create() { - Log.infoFileSync("==================开始调用增加用户方法==================="); - Boolean flag = false; - try { - Basicuser user = new Basicuser(); - user.setDepartment(model.getDepartment()); - user.setDescription(model.getDescription()); - user.setEmail(model.getEmail()); - user.setIsmanager((short) 1); - user.setIsystem((short) 0); - user.setLoginame(model.getLoginame()); - String password = "123456"; - //因密码用MD5加密,需要对密码进行转化 - try { - password = Tools.md5Encryp(password); - } catch (NoSuchAlgorithmException e) { - e.printStackTrace(); - Log.errorFileSync(">>>>>>>>>>>>>>转化MD5字符串错误 :" + e.getMessage(), e); - } - user.setPassword(password); - - user.setPhonenum(model.getPhonenum()); - user.setPosition(model.getPosition()); - user.setUsername(model.getUsername()); - - userService.create(user); - //========标识位=========== - flag = true; - //记录操作日志使用 - tipMsg = "成功"; - tipType = 0; - } catch (DataAccessException e) { - Log.errorFileSync(">>>>>>>>>>>>>>>>>>>增加用户异常", e); - flag = false; - tipMsg = "失败"; - tipType = 1; - } finally { - try { - toClient(flag.toString()); - } catch (IOException e) { - Log.errorFileSync(">>>>>>>>>>>>增加用户回写客户端结果异常", e); - } - } - - logService.create(new Logdetails(getUser(), "增加用户", model.getClientIp(), - new Timestamp(System.currentTimeMillis()) - , tipType, "增加用户名称为 " + model.getUsername() + " " + tipMsg + "!", "增加用户" + tipMsg)); - Log.infoFileSync("==================结束调用增加用户方法==================="); - } - - /** - * 删除用户 - * - * @return - */ - public String delete() { - Log.infoFileSync("====================开始调用删除用户信息方法delete()================"); - try { - userService.delete(model.getUserID()); - tipMsg = "成功"; - tipType = 0; - } catch (DataAccessException e) { - Log.errorFileSync(">>>>>>>>>>>删除ID为 " + model.getUserID() + " 的用户异常", e); - tipMsg = "失败"; - tipType = 1; - } - model.getShowModel().setMsgTip(tipMsg); - logService.create(new Logdetails(getUser(), "删除用户", model.getClientIp(), - new Timestamp(System.currentTimeMillis()) - , tipType, "删除用户ID为 " + model.getUserID() + " " + tipMsg + "!", "删除用户" + tipMsg)); - Log.infoFileSync("====================结束调用删除用户信息方法delete()================"); - return SUCCESS; - } - - /** - * 更新用户 - * - * @return - */ - public void update() { - Boolean flag = false; - try { - Basicuser user = userService.get(model.getUserID()); - user.setDepartment(model.getDepartment()); - user.setDescription(model.getDescription()); - user.setEmail(model.getEmail()); - //user.setIsmanager(model.getIsmanager()); - user.setLoginame(model.getLoginame()); - //user.setPassword(model.getPassword()); - user.setPhonenum(model.getPhonenum()); - user.setPosition(model.getPosition()); - user.setUsername(model.getUsername()); - userService.update(user); - - //看是否需要更新seesion中user - if (getUser().getId() == model.getUserID()) { - getSession().put("user", user); - } - - flag = true; - tipMsg = "成功"; - tipType = 0; - } catch (DataAccessException e) { - Log.errorFileSync(">>>>>>>>>>>>>修改用户ID为 : " + model.getUserID() + "信息失败", e); - flag = false; - tipMsg = "失败"; - tipType = 1; - } finally { - try { - toClient(flag.toString()); - } catch (IOException e) { - Log.errorFileSync(">>>>>>>>>>>>修改用户回写客户端结果异常", e); - } - } - logService.create(new Logdetails(getUser(), "更新用户", model.getClientIp(), - new Timestamp(System.currentTimeMillis()) - , tipType, "更新用户ID为 " + model.getUserID() + " " + tipMsg + "!", "更新用户" + tipMsg)); - } - - /** - * 修改密码 - */ - public void updatePwd() { - Integer flag = 0; - try { - Basicuser user = getUser(); - String orgPassword = Tools.md5Encryp(model.getOrgpwd()); - String md5Pwd = Tools.md5Encryp(model.getPassword()); - //必须和原始密码一致才可以更新密码 - if(user.getLoginame().equals("jsh")){ - flag = 3; - tipMsg = "管理员jsh不能修改密码"; - tipType = 1; - } else if (orgPassword.equalsIgnoreCase(user.getPassword())) { - - user.setPassword(md5Pwd); - userService.update(user); - - //看是否需要更新seesion中user -// if(getUser().getId() == model.getUserID()) -// { -// getSession().put("user", user); -// } - - flag = 1; - tipMsg = "成功"; - tipType = 0; - } else { - flag = 2; - tipMsg = "失败"; - tipType = 1; - } - - } catch (Exception e) { - Log.errorFileSync(">>>>>>>>>>>>>修改用户ID为 : " + model.getUserID() + "密码信息失败", e); - flag = 3; - tipMsg = "失败"; - tipType = 1; - } finally { - try { - toClient(flag.toString()); - } catch (IOException e) { - Log.errorFileSync(">>>>>>>>>>>>修改用户密码回写客户端结果异常", e); - } - } - logService.create(new Logdetails(getUser(), "更新用户", model.getClientIp(), - new Timestamp(System.currentTimeMillis()) - , tipType, "更新用户ID为 " + model.getUserID() + "密码信息 " + tipMsg + "!", "更新用户" + tipMsg)); - } - - /** - * 重置用户的密码 - */ - public void resetPwd() { - Integer flag = 0; - try { - Basicuser user = userService.get(model.getUserID()); - String password = "123456"; - String md5Pwd = Tools.md5Encryp(password); - user.setPassword(md5Pwd); - userService.update(user); - flag = 1; - tipMsg = "成功"; - tipType = 0; - } catch (Exception e) { - Log.errorFileSync(">>>>>>>>>>>>>修改用户ID为 : " + model.getUserID() + "密码信息失败", e); - flag = 0; - tipMsg = "失败"; - tipType = 1; - } finally { - try { - toClient(flag.toString()); - } catch (IOException e) { - Log.errorFileSync(">>>>>>>>>>>>修改用户密码回写客户端结果异常", e); - } - } - logService.create(new Logdetails(getUser(), "重置用户密码", model.getClientIp(), - new Timestamp(System.currentTimeMillis()), tipType, "重置用户ID为 " + model.getUserID() + "密码信息 " + tipMsg + "!", "重置用户密码" + tipMsg)); - } - - /** - * 批量删除指定ID用户 - * - * @return - */ - public String batchDelete() { - try { - userService.batchDelete(model.getUserIDs()); - model.getShowModel().setMsgTip("成功"); - //记录操作日志使用 - tipMsg = "成功"; - tipType = 0; - } catch (DataAccessException e) { - Log.errorFileSync(">>>>>>>>>>>批量删除用户ID为:" + model.getUserIDs() + "信息异常", e); - tipMsg = "失败"; - tipType = 1; - } - - logService.create(new Logdetails(getUser(), "批量删除用户", model.getClientIp(), - new Timestamp(System.currentTimeMillis()) - , tipType, "批量删除用户ID为 " + model.getUserIDs() + " " + tipMsg + "!", "批量删除用户" + tipMsg)); - return SUCCESS; - } - - /** - * 检查输入名称是否存在 - */ - public void checkIsNameExist() { - Boolean flag = false; - String fieldName = ""; - String fieldValue = ""; - try { - if (0 == model.getCheckFlag()) { - fieldName = "username"; - fieldValue = model.getUsername(); - } else { - fieldName = "loginame"; - fieldValue = model.getLoginame(); - } - flag = userService.checkIsNameExist(fieldName, fieldValue, model.getUserID()); - } catch (Exception e) { - Log.errorFileSync(">>>>>>>>>>>>>>>>>检查用户名称为:" + fieldValue + " ID为: " + model.getUserID() + " 是否存在异常!"); - } finally { - try { - toClient(flag.toString()); - } catch (IOException e) { - Log.errorFileSync(">>>>>>>>>>>>回写检查用户名称为:" + fieldValue + " ID为: " + model.getUserID() + " 是否存在异常!", e); - } - } - } - - /** - * 查找用户信息 - * - * @return - */ - public void findBy() { - try { - PageUtil pageUtil = new PageUtil(); - pageUtil.setPageSize(model.getPageSize()); - pageUtil.setCurPage(model.getPageNo()); - pageUtil.setAdvSearch(getCondition()); - userService.find(pageUtil); - List dataList = pageUtil.getPageList(); - - //开始拼接json数据 -// {"total":28,"rows":[ -// {"productid":"AV-CB-01","attr1":"Adult Male","itemid":"EST-18"} -// ]} - JSONObject outer = new JSONObject(); - outer.put("total", pageUtil.getTotalCount()); - //存放数据json数组 - JSONArray dataArray = new JSONArray(); - if (null != dataList) { - for (Basicuser user : dataList) { - - JSONObject item = new JSONObject(); - item.put("id", user.getId()); - item.put("username", user.getUsername()); - item.put("loginame", Tools.dealNullStr(user.getLoginame())); - item.put("password", Tools.dealNullStr(user.getPassword())); - item.put("position", Tools.dealNullStr(user.getPosition())); - item.put("department", Tools.dealNullStr(user.getDepartment())); - item.put("email", Tools.dealNullStr(user.getEmail())); - item.put("phonenum", Tools.dealNullStr(user.getPhonenum())); - item.put("ismanager", user.getIsmanager() == (short) 0 ? "是" : "否"); - item.put("isystem", user.getIsystem() == (short) 0 ? "是" : "否"); - item.put("status", user.getStatus()); - item.put("description", Tools.dealNullStr(user.getDescription())); - item.put("remark", user.getRemark()); - item.put("op", user.getIsmanager()); - dataArray.add(item); - } - } - outer.put("rows", dataArray); - //回写查询结果 - toClient(outer.toString()); - } catch (DataAccessException e) { - Log.errorFileSync(">>>>>>>>>查找用户信息异常", e); - } catch (IOException e) { - Log.errorFileSync(">>>>>>>>>回写查询用户信息结果异常", e); - } - } - - /** - * 拼接搜索条件 - * - * @return 拼接后的条件 - */ - private Map getCondition() { - /** - * 拼接搜索条件 - */ - Map condition = new HashMap(); - condition.put("username_s_like", model.getUsername()); - condition.put("loginame_s_like", model.getLoginame()); - condition.put("id_s_order", "asc"); - return condition; - } - - //=============以下spring注入以及Model驱动公共方法,与Action处理无关================== - @Override - public UserModel getModel() { - return model; - } - - public void setUserService(UserIService userService) { - this.userService = userService; - } -} diff --git a/src/main/java/com/jsh/action/basic/UserBusinessAction.java b/src/main/java/com/jsh/action/basic/UserBusinessAction.java deleted file mode 100644 index 2acc7a69..00000000 --- a/src/main/java/com/jsh/action/basic/UserBusinessAction.java +++ /dev/null @@ -1,228 +0,0 @@ -package com.jsh.action.basic; - -import com.jsh.base.BaseAction; -import com.jsh.base.Log; -import com.jsh.model.po.Logdetails; -import com.jsh.model.po.UserBusiness; -import com.jsh.model.vo.basic.UserBusinessModel; -import com.jsh.service.basic.UserBusinessIService; -import com.jsh.util.PageUtil; -import org.springframework.dao.DataAccessException; - -import java.io.IOException; -import java.sql.Timestamp; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -/* - * 权限关系管理 - * @author jishenghua qq:752718920 - */ -@SuppressWarnings("serial") -public class UserBusinessAction extends BaseAction { - private UserBusinessIService userBusinessService; - private UserBusinessModel model = new UserBusinessModel(); - - @SuppressWarnings({"rawtypes", "unchecked"}) - public String getBasicData() { - Map mapData = model.getShowModel().getMap(); - PageUtil pageUtil = new PageUtil(); - pageUtil.setPageSize(0); - pageUtil.setCurPage(0); - try { - Map condition = pageUtil.getAdvSearch(); - condition.put("KeyId_s_eq", model.getKeyId()); - condition.put("Type_s_eq", model.getType()); - userBusinessService.find(pageUtil); - mapData.put("userBusinessList", pageUtil.getPageList()); - } catch (Exception e) { - Log.errorFileSync(">>>>>>>>>>>>>查找UserBusiness信息异常", e); - model.getShowModel().setMsgTip("exceptoin"); - } - return SUCCESS; - } - - /* - * 测试hql语句的写法 - */ - @SuppressWarnings({"rawtypes", "unchecked"}) - public String getceshi() { - Map mapData = model.getShowModel().getMap(); - PageUtil pageUtil = new PageUtil(); - pageUtil.setPageSize(0); - pageUtil.setCurPage(0); - try { - Map condition = pageUtil.getAdvSearch(); - condition.put("Type_s_eq", model.getType()); - userBusinessService.find(pageUtil, "ceshi"); - mapData.put("userBusinessList", pageUtil.getPageList()); - } catch (Exception e) { - Log.errorFileSync(">>>>>>>>>>>>>查找UserBusiness信息异常", e); - model.getShowModel().setMsgTip("exceptoin"); - } - return SUCCESS; - } - - /** - * 增加UserBusiness - * - * @return - */ - public void create() { - Log.infoFileSync("==================开始调用增加UserBusiness信息方法create()==================="); - Boolean flag = false; - try { - UserBusiness userBusiness = new UserBusiness(); - userBusiness.setType(model.getType()); - userBusiness.setKeyId(model.getKeyId()); - userBusiness.setValue(model.getValue()); - userBusinessService.create(userBusiness); - - //========标识位=========== - flag = true; - //记录操作日志使用 - tipMsg = "成功"; - tipType = 0; - } catch (DataAccessException e) { - Log.errorFileSync(">>>>>>>>>>>>>>>>>>>增加UserBusiness信息异常", e); - flag = false; - tipMsg = "失败"; - tipType = 1; - } finally { - try { - toClient(flag.toString()); - } catch (IOException e) { - Log.errorFileSync(">>>>>>>>>>>>增加UserBusiness信息回写客户端结果异常", e); - } - } - - logService.create(new Logdetails(getUser(), "增加UserBusiness", model.getClientIp(), - new Timestamp(System.currentTimeMillis()) - , tipType, "增加UserBusiness为 " + model.getType() + " " + tipMsg + "!", "增加UserBusiness" + tipMsg)); - Log.infoFileSync("==================结束调用增加UserBusiness方法create()==================="); - } - - /** - * 更新UserBusiness - * - * @return - */ - public void update() { - Boolean flag = false; - Long id = 0l; - try { - PageUtil pageUtil = new PageUtil(); - pageUtil.setPageSize(model.getPageSize()); - pageUtil.setCurPage(model.getPageNo()); - pageUtil.setAdvSearch(getCondition_RoleAPP()); - userBusinessService.find(pageUtil); - List dataList = pageUtil.getPageList(); - if (null != dataList) { - for (UserBusiness userBusiness : dataList) { - id = userBusiness.getId(); - } - UserBusiness userBusiness = userBusinessService.get(id); - userBusiness.setType(model.getType()); - userBusiness.setKeyId(model.getKeyId()); - userBusiness.setValue(model.getValue()); - userBusinessService.update(userBusiness); - } - - flag = true; - tipMsg = "成功"; - tipType = 0; - } catch (DataAccessException e) { - Log.errorFileSync(">>>>>>>>>>>>>修改UserBusiness的ID为 : " + id + "信息失败", e); - flag = false; - tipMsg = "失败"; - tipType = 1; - } finally { - try { - toClient(flag.toString()); - } catch (IOException e) { - Log.errorFileSync(">>>>>>>>>>>>修改UserBusiness回写客户端结果异常", e); - } - } - logService.create(new Logdetails(getUser(), "更新UserBusiness", model.getClientIp(), - new Timestamp(System.currentTimeMillis()) - , tipType, "更新UserBusiness的ID为 " + id + " " + tipMsg + "!", "更新UserBusiness" + tipMsg)); - } - - /** - * 更新角色的按钮权限 - * - * @return - */ - public void updateBtnStr() { - Boolean flag = false; - try { - UserBusiness userBusiness = userBusinessService.get(model.getUserBusinessID()); - userBusiness.setType(userBusiness.getType()); - userBusiness.setKeyId(userBusiness.getKeyId()); - userBusiness.setValue(userBusiness.getValue()); - userBusiness.setBtnStr(model.getBtnStr()); - userBusinessService.update(userBusiness); - flag = true; - tipMsg = "成功"; - tipType = 0; - } catch (DataAccessException e) { - Log.errorFileSync(">>>>>>>>>>>>>修改角色按钮权限的ID为 : " + model.getUserBusinessID() + "信息失败", e); - flag = false; - tipMsg = "失败"; - tipType = 1; - } finally { - try { - toClient(flag.toString()); - } catch (IOException e) { - Log.errorFileSync(">>>>>>>>>>>>修改功能回写客户端结果异常", e); - } - } - logService.create(new Logdetails(getUser(), "更新角色按钮权限", model.getClientIp(), - new Timestamp(System.currentTimeMillis()), tipType, - "角色按钮权限的ID为 " + model.getUserBusinessID() + " " + tipMsg + "!", "更新角色按钮权限" + tipMsg)); - } - - /** - * 拼接搜索条件-RoleAPP - * - * @return - */ - private Map getCondition_RoleAPP() { - /** - * 拼接搜索条件 - */ - Map condition = new HashMap(); - condition.put("Type_s_eq", model.getType()); - condition.put("KeyId_s_eq", model.getKeyId()); - return condition; - } - - /** - * 检查角色对应应用/功能是否存在 - */ - public void checkIsValueExist() { - Boolean flag = false; - try { - flag = userBusinessService.checkIsValueExist("Type", model.getType(), "KeyId", model.getKeyId()); - } catch (DataAccessException e) { - Log.errorFileSync(">>>>>>>>>>>>>>>>>检查角色对应应用/功能的类型为:" + model.getType() + " KeyId为: " + model.getKeyId() + " 是否存在异常!"); - } finally { - try { - toClient(flag.toString()); - } catch (IOException e) { - Log.errorFileSync(">>>>>>>>>>>>回写检查角色对应应用/功能的类型为:" + model.getType() + " KeyId为: " + model.getKeyId() + " 是否存在异常!", e); - } - } - } - - //=============以下spring注入以及Model驱动公共方法,与Action处理无关================== - @Override - public UserBusinessModel getModel() { - return model; - } - - public void setUserBusinessService(UserBusinessIService userBusinessService) { - this.userBusinessService = userBusinessService; - } -} diff --git a/src/main/java/com/jsh/action/materials/AccountHeadAction.java b/src/main/java/com/jsh/action/materials/AccountHeadAction.java deleted file mode 100644 index 5a3096bb..00000000 --- a/src/main/java/com/jsh/action/materials/AccountHeadAction.java +++ /dev/null @@ -1,393 +0,0 @@ -package com.jsh.action.materials; - -import com.jsh.base.BaseAction; -import com.jsh.base.Log; -import com.jsh.model.po.*; -import com.jsh.model.vo.materials.AccountHeadModel; -import com.jsh.service.materials.AccountHeadIService; -import com.jsh.util.JshException; -import com.jsh.util.PageUtil; -import com.jsh.util.Tools; -import net.sf.json.JSONArray; -import net.sf.json.JSONObject; -import org.springframework.dao.DataAccessException; - -import java.io.IOException; -import java.sql.Timestamp; -import java.text.ParseException; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -/* - * 财务表头管理 - * @author jishenghua qq:752718920 - */ -@SuppressWarnings("serial") -public class AccountHeadAction extends BaseAction { - private AccountHeadIService accountHeadService; - private AccountHeadModel model = new AccountHeadModel(); - - /* - * 获取MaxId - */ - @SuppressWarnings({"rawtypes", "unchecked"}) - public String getMaxId() { - Map mapData = model.getShowModel().getMap(); - PageUtil pageUtil = new PageUtil(); - pageUtil.setPageSize(0); - pageUtil.setCurPage(0); - try { - accountHeadService.find(pageUtil, "maxId"); - mapData.put("accountHeadMax", pageUtil.getPageList()); - } catch (Exception e) { - Log.errorFileSync(">>>>>>>>>>>>>查找最大的Id信息异常", e); - model.getShowModel().setMsgTip("exceptoin"); - } - return SUCCESS; - } - - /** - * 增加财务 - * - * @return - */ - public void create() { - Log.infoFileSync("==================开始调用增加财务信息方法create()==================="); - Boolean flag = false; - try { - AccountHead accountHead = new AccountHead(); - accountHead.setType(model.getType()); - if (model.getOrganId() != null) { - accountHead.setOrganId(new Supplier(model.getOrganId())); - } - if (model.getHandsPersonId() != null) { - accountHead.setHandsPersonId(new Person(model.getHandsPersonId())); - } - accountHead.setChangeAmount(model.getChangeAmount() == null ? 0 : model.getChangeAmount()); - accountHead.setTotalPrice(model.getTotalPrice()); - if (model.getAccountId() != null) { - accountHead.setAccountId(new Account(model.getAccountId())); - } - accountHead.setBillNo(model.getBillNo()); - try { - accountHead.setBillTime(new Timestamp(Tools.parse(model.getBillTime(), "yyyy-MM-dd HH:mm:ss").getTime())); - } catch (ParseException e) { - Log.errorFileSync(">>>>>>>>>>>>>>>解析购买日期格式异常", e); - } - accountHead.setRemark(model.getRemark()); - accountHeadService.create(accountHead); - - //========标识位=========== - flag = true; - //记录操作日志使用 - tipMsg = "成功"; - tipType = 0; - } catch (DataAccessException e) { - Log.errorFileSync(">>>>>>>>>>>>>>>>>>>增加财务信息异常", e); - flag = false; - tipMsg = "失败"; - tipType = 1; - } finally { - try { - toClient(flag.toString()); - } catch (IOException e) { - Log.errorFileSync(">>>>>>>>>>>>增加财务信息回写客户端结果异常", e); - } - } - - logService.create(new Logdetails(getUser(), "增加财务", model.getClientIp(), - new Timestamp(System.currentTimeMillis()) - , tipType, "增加财务编号为 " + model.getBillNo() + " " + tipMsg + "!", "增加财务" + tipMsg)); - Log.infoFileSync("==================结束调用增加财务方法create()==================="); - } - - /** - * 删除财务 - * - * @return - */ - public String delete() { - Log.infoFileSync("====================开始调用删除财务信息方法delete()================"); - try { - accountHeadService.delete(model.getAccountHeadID()); - tipMsg = "成功"; - tipType = 0; - } catch (DataAccessException e) { - Log.errorFileSync(">>>>>>>>>>>删除ID为 " + model.getAccountHeadID() + " 的财务异常", e); - tipMsg = "失败"; - tipType = 1; - } - model.getShowModel().setMsgTip(tipMsg); - logService.create(new Logdetails(getUser(), "删除财务", model.getClientIp(), - new Timestamp(System.currentTimeMillis()) - , tipType, "删除财务ID为 " + model.getAccountHeadID() + " " + tipMsg + "!", "删除财务" + tipMsg)); - Log.infoFileSync("====================结束调用删除财务信息方法delete()================"); - return SUCCESS; - } - - /** - * 更新财务 - * - * @return - */ - public void update() { - Boolean flag = false; - try { - AccountHead accountHead = accountHeadService.get(model.getAccountHeadID()); - accountHead.setType(model.getType()); - if (model.getOrganId() != null) { - accountHead.setOrganId(new Supplier(model.getOrganId())); - } - if (model.getHandsPersonId() != null) { - accountHead.setHandsPersonId(new Person(model.getHandsPersonId())); - } - accountHead.setChangeAmount(model.getChangeAmount() == null ? 0 : model.getChangeAmount()); - accountHead.setTotalPrice(model.getTotalPrice()); - if (model.getAccountId() != null) { - accountHead.setAccountId(new Account(model.getAccountId())); - } - accountHead.setBillNo(model.getBillNo()); - try { - accountHead.setBillTime(new Timestamp(Tools.parse(model.getBillTime(), "yyyy-MM-dd HH:mm:ss").getTime())); - } catch (ParseException e) { - Log.errorFileSync(">>>>>>>>>>>>>>>解析购买日期格式异常", e); - } - accountHead.setRemark(model.getRemark()); - accountHeadService.update(accountHead); - - flag = true; - tipMsg = "成功"; - tipType = 0; - } catch (DataAccessException e) { - Log.errorFileSync(">>>>>>>>>>>>>修改财务ID为 : " + model.getAccountHeadID() + "信息失败", e); - flag = false; - tipMsg = "失败"; - tipType = 1; - } finally { - try { - toClient(flag.toString()); - } catch (IOException e) { - Log.errorFileSync(">>>>>>>>>>>>修改财务回写客户端结果异常", e); - } - } - logService.create(new Logdetails(getUser(), "更新财务", model.getClientIp(), - new Timestamp(System.currentTimeMillis()) - , tipType, "更新财务ID为 " + model.getAccountHeadID() + " " + tipMsg + "!", "更新财务" + tipMsg)); - } - - /** - * 批量删除指定ID财务 - * - * @return - */ - public String batchDelete() { - try { - accountHeadService.batchDelete(model.getAccountHeadIDs()); - model.getShowModel().setMsgTip("成功"); - //记录操作日志使用 - tipMsg = "成功"; - tipType = 0; - } catch (DataAccessException e) { - Log.errorFileSync(">>>>>>>>>>>批量删除财务ID为:" + model.getAccountHeadIDs() + "信息异常", e); - tipMsg = "失败"; - tipType = 1; - } - - logService.create(new Logdetails(getUser(), "批量删除财务", model.getClientIp(), - new Timestamp(System.currentTimeMillis()) - , tipType, "批量删除财务ID为 " + model.getAccountHeadIDs() + " " + tipMsg + "!", "批量删除财务" + tipMsg)); - return SUCCESS; - } - - /** - * 查找财务信息 - * - * @return - */ - public void findBy() { - try { - PageUtil pageUtil = new PageUtil(); - pageUtil.setPageSize(model.getPageSize()); - pageUtil.setCurPage(model.getPageNo()); - pageUtil.setAdvSearch(getCondition()); - accountHeadService.find(pageUtil); - List dataList = pageUtil.getPageList(); - - JSONObject outer = new JSONObject(); - outer.put("total", pageUtil.getTotalCount()); - //存放数据json数组 - JSONArray dataArray = new JSONArray(); - if (null != dataList) { - for (AccountHead accountHead : dataList) { - JSONObject item = new JSONObject(); - item.put("Id", accountHead.getId()); - item.put("OrganId", accountHead.getOrganId() == null ? "" : accountHead.getOrganId().getId()); - item.put("OrganName", accountHead.getOrganId() == null ? "" : accountHead.getOrganId().getSupplier()); - item.put("HandsPersonId", accountHead.getHandsPersonId() == null ? "" : accountHead.getHandsPersonId().getId()); - item.put("HandsPersonName", accountHead.getHandsPersonId() == null ? "" : accountHead.getHandsPersonId().getName()); - item.put("AccountId", accountHead.getAccountId() == null ? "" : accountHead.getAccountId().getId()); - item.put("AccountName", accountHead.getAccountId() == null ? "" : accountHead.getAccountId().getName()); - item.put("BillNo", accountHead.getBillNo()); - item.put("BillTime", Tools.getCenternTime(accountHead.getBillTime())); - item.put("ChangeAmount", accountHead.getChangeAmount() == null ? "" : Math.abs(accountHead.getChangeAmount())); - item.put("TotalPrice", accountHead.getTotalPrice() == null ? "" : Math.abs(accountHead.getTotalPrice())); - item.put("Remark", accountHead.getRemark()); - item.put("op", 1); - dataArray.add(item); - } - } - outer.put("rows", dataArray); - //回写查询结果 - toClient(outer.toString()); - } catch (DataAccessException e) { - Log.errorFileSync(">>>>>>>>>>>>>>>>>>>查找财务信息异常", e); - } catch (IOException e) { - Log.errorFileSync(">>>>>>>>>>>>>>>>>>>回写查询财务信息结果异常", e); - } - } - - /** - * 根据编号查询单据信息 - */ - public void getDetailByNumber() { - try { - PageUtil pageUtil = new PageUtil(); - pageUtil.setPageSize(0); - pageUtil.setCurPage(0); - pageUtil.setAdvSearch(getConditionByNumber()); - accountHeadService.find(pageUtil); - List dataList = pageUtil.getPageList(); - JSONObject item = new JSONObject(); - if (dataList != null && dataList.get(0) != null) { - AccountHead accountHead = dataList.get(0); - item.put("Id", accountHead.getId()); - item.put("OrganId", accountHead.getOrganId() == null ? "" : accountHead.getOrganId().getId()); - item.put("OrganName", accountHead.getOrganId() == null ? "" : accountHead.getOrganId().getSupplier()); - item.put("HandsPersonId", accountHead.getHandsPersonId() == null ? "" : accountHead.getHandsPersonId().getId()); - item.put("HandsPersonName", accountHead.getHandsPersonId() == null ? "" : accountHead.getHandsPersonId().getName()); - item.put("AccountId", accountHead.getAccountId() == null ? "" : accountHead.getAccountId().getId()); - item.put("AccountName", accountHead.getAccountId() == null ? "" : accountHead.getAccountId().getName()); - item.put("BillNo", accountHead.getBillNo()); - item.put("BillTime", Tools.getCenternTime(accountHead.getBillTime())); - item.put("ChangeAmount", accountHead.getChangeAmount() == null ? "" : Math.abs(accountHead.getChangeAmount())); - item.put("TotalPrice", accountHead.getTotalPrice() == null ? "" : Math.abs(accountHead.getTotalPrice())); - item.put("Remark", accountHead.getRemark()); - } - //回写查询结果 - toClient(item.toString()); - } catch (DataAccessException e) { - Log.errorFileSync(">>>>>>>>>>>>>>>>>>>查找单据信息异常", e); - } catch (IOException e) { - Log.errorFileSync(">>>>>>>>>>>>>>>>>>>回写查询单据信息结果异常", e); - } - } - - /** - * 查询单位的累计应收和累计应付,收预付款不计入此处 - * - * @return - */ - public void findTotalPay() { - try { - JSONObject outer = new JSONObject(); - Double sum = 0.0; - String getS = model.getSupplierId(); - String supType = model.getSupType(); //单位类型:客户、供应商 - int i = 1; - if (supType.equals("customer")) { //客户 - i = 1; - } else if (supType.equals("vendor")) { //供应商 - i = -1; - } - //收付款部分 - sum = sum + (allMoney(getS, "付款", "合计") + allMoney(getS, "付款", "实际")) * i; - sum = sum - (allMoney(getS, "收款", "合计") + allMoney(getS, "收款", "实际")) * i; - sum = sum + (allMoney(getS, "收入", "合计") - allMoney(getS, "收入", "实际")) * i; - sum = sum - (allMoney(getS, "支出", "合计") - allMoney(getS, "支出", "实际")) * i; - outer.put("getAllMoney", sum); - toClient(outer.toString()); - } catch (DataAccessException e) { - Log.errorFileSync(">>>>>>>>>>>>>>>>>>>查找异常", e); - } catch (IOException e) { - Log.errorFileSync(">>>>>>>>>>>>>>>>>>>回写查询结果异常", e); - } - } - - /** - * 统计总金额 - * - * @param type - * @param mode 合计或者金额 - * @return - */ - @SuppressWarnings({"unchecked", "rawtypes"}) - public Double allMoney(String getS, String type, String mode) { - Log.infoFileSync("getS:" + getS); - Double allMoney = 0.0; - String allReturn = ""; - PageUtil pageUtil = new PageUtil(); - pageUtil.setPageSize(0); - pageUtil.setCurPage(0); - pageUtil.setAdvSearch(getConditionHead_byEndTime()); - try { - Integer supplierId = Integer.valueOf(getS); - accountHeadService.findAllMoney(pageUtil, supplierId, type, mode); - allReturn = pageUtil.getPageList().toString(); - allReturn = allReturn.substring(1, allReturn.length() - 1); - if (allReturn.equals("null")) { - allReturn = "0"; - } - } catch (JshException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - allMoney = Double.parseDouble(allReturn); - //返回正数,如果负数也转为正数 - if (allMoney < 0) { - allMoney = -allMoney; - } - return allMoney; - } - - private Map getConditionByNumber() { - Map condition = new HashMap(); - condition.put("BillNo_s_eq", model.getBillNo()); - return condition; - } - - /** - * 拼接搜索条件 - * - * @return - */ - private Map getCondition() { - /** - * 拼接搜索条件 - */ - Map condition = new HashMap(); - { - condition.put("BillNo_s_like", model.getBillNo()); - } - condition.put("Type_s_eq", model.getType()); - condition.put("BillTime_s_gteq", model.getBeginTime()); - condition.put("BillTime_s_lteq", model.getEndTime()); - condition.put("Id_s_order", "desc"); - return condition; - } - - private Map getConditionHead_byEndTime() { - Map condition = new HashMap(); - condition.put("BillTime_s_lteq", model.getEndTime()); - return condition; - } - - //=============以下spring注入以及Model驱动公共方法,与Action处理无关================== - public AccountHeadModel getModel() { - return model; - } - - public void setAccountHeadService(AccountHeadIService accountHeadService) { - this.accountHeadService = accountHeadService; - } -} diff --git a/src/main/java/com/jsh/action/materials/AccountItemAction.java b/src/main/java/com/jsh/action/materials/AccountItemAction.java deleted file mode 100644 index 549cc572..00000000 --- a/src/main/java/com/jsh/action/materials/AccountItemAction.java +++ /dev/null @@ -1,193 +0,0 @@ -package com.jsh.action.materials; - -import com.jsh.base.BaseAction; -import com.jsh.base.Log; -import com.jsh.model.po.*; -import com.jsh.model.vo.materials.AccountItemModel; -import com.jsh.service.materials.AccountItemIService; -import com.jsh.util.PageUtil; -import net.sf.json.JSONArray; -import net.sf.json.JSONObject; -import org.springframework.dao.DataAccessException; - -import java.io.IOException; -import java.sql.Timestamp; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -/* - * 财务明细管理(收支|收付款|转账) - * @author jishenghua qq:752718920 - */ -@SuppressWarnings("serial") -public class AccountItemAction extends BaseAction { - private AccountItemIService accountItemService; - private AccountItemModel model = new AccountItemModel(); - - /** - * 保存明细 - * - * @return - */ - public void saveDetials() { - Log.infoFileSync("==================开始调用保存财务明细信息方法saveDetials()==================="); - Boolean flag = false; - try { - Long headerId = model.getHeaderId(); - String listType = model.getListType(); //单据类型 - String inserted = model.getInserted(); - String deleted = model.getDeleted(); - String updated = model.getUpdated(); - //转为json - JSONArray insertedJson = JSONArray.fromObject(inserted); - JSONArray deletedJson = JSONArray.fromObject(deleted); - JSONArray updatedJson = JSONArray.fromObject(updated); - if (null != insertedJson) { - for (int i = 0; i < insertedJson.size(); i++) { - AccountItem accountItem = new AccountItem(); - JSONObject tempInsertedJson = JSONObject.fromObject(insertedJson.get(i)); - accountItem.setHeaderId(new AccountHead(headerId)); - if (tempInsertedJson.get("AccountId") != null && !tempInsertedJson.get("AccountId").equals("")) { - accountItem.setAccountId(new Account(tempInsertedJson.getLong("AccountId"))); - } - if (tempInsertedJson.get("InOutItemId") != null && !tempInsertedJson.get("InOutItemId").equals("")) { - accountItem.setInOutItemId(new InOutItem(tempInsertedJson.getLong("InOutItemId"))); - } - if (tempInsertedJson.get("EachAmount") != null && !tempInsertedJson.get("EachAmount").equals("")) { - Double eachAmount = tempInsertedJson.getDouble("EachAmount"); - if (listType.equals("付款")) { - eachAmount = 0 - eachAmount; - } - accountItem.setEachAmount(eachAmount); - } else { - accountItem.setEachAmount(0.0); - } - accountItem.setRemark(tempInsertedJson.getString("Remark")); - accountItemService.create(accountItem); - } - } - if (null != deletedJson) { - for (int i = 0; i < deletedJson.size(); i++) { - JSONObject tempDeletedJson = JSONObject.fromObject(deletedJson.get(i)); - accountItemService.delete(tempDeletedJson.getLong("Id")); - } - } - if (null != updatedJson) { - for (int i = 0; i < updatedJson.size(); i++) { - JSONObject tempUpdatedJson = JSONObject.fromObject(updatedJson.get(i)); - AccountItem accountItem = accountItemService.get(tempUpdatedJson.getLong("Id")); - accountItem.setHeaderId(new AccountHead(headerId)); - if (tempUpdatedJson.get("AccountId") != null && !tempUpdatedJson.get("AccountId").equals("")) { - accountItem.setAccountId(new Account(tempUpdatedJson.getLong("AccountId"))); - } - if (tempUpdatedJson.get("InOutItemId") != null && !tempUpdatedJson.get("InOutItemId").equals("")) { - accountItem.setInOutItemId(new InOutItem(tempUpdatedJson.getLong("InOutItemId"))); - } - if (tempUpdatedJson.get("EachAmount") != null && !tempUpdatedJson.get("EachAmount").equals("")) { - Double eachAmount = tempUpdatedJson.getDouble("EachAmount"); - if (listType.equals("付款")) { - eachAmount = 0 - eachAmount; - } - accountItem.setEachAmount(eachAmount); - } else { - accountItem.setEachAmount(0.0); - } - accountItem.setRemark(tempUpdatedJson.getString("Remark")); - accountItemService.create(accountItem); - } - } - - //========标识位=========== - flag = true; - //记录操作日志使用 - tipMsg = "成功"; - tipType = 0; - } catch (DataAccessException e) { - Log.errorFileSync(">>>>>>>>>>>>>>>>>>>保存财务明细信息异常", e); - flag = false; - tipMsg = "失败"; - tipType = 1; - } finally { - try { - toClient(flag.toString()); - } catch (IOException e) { - Log.errorFileSync(">>>>>>>>>>>>保存财务明细信息回写客户端结果异常", e); - } - } - - logService.create(new Logdetails(getUser(), "保存财务明细", model.getClientIp(), - new Timestamp(System.currentTimeMillis()) - , tipType, "保存财务明细对应主表编号为 " + model.getHeaderId() + " " + tipMsg + "!", "保存财务明细" + tipMsg)); - Log.infoFileSync("==================结束调用保存财务明细方法saveDetials()==================="); - } - - - /** - * 查找财务信息 - * - * @return - */ - public void findBy() { - try { - PageUtil pageUtil = new PageUtil(); - pageUtil.setPageSize(model.getPageSize()); - pageUtil.setCurPage(model.getPageNo()); - pageUtil.setAdvSearch(getCondition()); - accountItemService.find(pageUtil); - List dataList = pageUtil.getPageList(); - - JSONObject outer = new JSONObject(); - outer.put("total", pageUtil.getTotalCount()); - //存放数据json数组 - JSONArray dataArray = new JSONArray(); - if (null != dataList) { - for (AccountItem accountItem : dataList) { - JSONObject item = new JSONObject(); - item.put("Id", accountItem.getId()); - item.put("AccountId", accountItem.getAccountId() == null ? "" : accountItem.getAccountId().getId()); - item.put("AccountName", accountItem.getAccountId() == null ? "" : accountItem.getAccountId().getName()); - item.put("InOutItemId", accountItem.getInOutItemId() == null ? "" : accountItem.getInOutItemId().getId()); - item.put("InOutItemName", accountItem.getInOutItemId() == null ? "" : accountItem.getInOutItemId().getName()); - Double eachAmount = accountItem.getEachAmount(); - item.put("EachAmount", eachAmount < 0 ? 0 - eachAmount : eachAmount); - item.put("Remark", accountItem.getRemark()); - item.put("op", 1); - dataArray.add(item); - } - } - outer.put("rows", dataArray); - //回写查询结果 - toClient(outer.toString()); - } catch (DataAccessException e) { - Log.errorFileSync(">>>>>>>>>>>>>>>>>>>查找财务信息异常", e); - } catch (IOException e) { - Log.errorFileSync(">>>>>>>>>>>>>>>>>>>回写查询财务信息结果异常", e); - } - } - - /** - * 拼接搜索条件 - * - * @return - */ - private Map getCondition() { - /** - * 拼接搜索条件 - */ - Map condition = new HashMap(); - condition.put("HeaderId_n_eq", model.getHeaderId()); - condition.put("Id_s_order", "asc"); - return condition; - } - - //=============以下spring注入以及Model驱动公共方法,与Action处理无关================== - @Override - public AccountItemModel getModel() { - return model; - } - - public void setAccountItemService(AccountItemIService accountItemService) { - this.accountItemService = accountItemService; - } -} diff --git a/src/main/java/com/jsh/action/materials/DepotHeadAction.java b/src/main/java/com/jsh/action/materials/DepotHeadAction.java deleted file mode 100644 index 3c2b4029..00000000 --- a/src/main/java/com/jsh/action/materials/DepotHeadAction.java +++ /dev/null @@ -1,920 +0,0 @@ -package com.jsh.action.materials; - -import com.jsh.base.BaseAction; -import com.jsh.base.Log; -import com.jsh.model.po.*; -import com.jsh.model.vo.materials.DepotHeadModel; -import com.jsh.service.materials.DepotHeadIService; -import com.jsh.util.JshException; -import com.jsh.util.PageUtil; -import com.jsh.util.Tools; -import net.sf.json.JSONArray; -import net.sf.json.JSONObject; -import org.springframework.dao.DataAccessException; - -import java.io.IOException; -import java.sql.Timestamp; -import java.text.ParseException; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - - -/* - * 单据表头管理 - * @author jishenghua qq:752718920 - */ -@SuppressWarnings("serial") -public class DepotHeadAction extends BaseAction { - private DepotHeadIService depotHeadService; - private DepotHeadModel model = new DepotHeadModel(); - - /* - * 获取MaxId - */ - @SuppressWarnings({"rawtypes", "unchecked"}) - public String getMaxId() { - Map mapData = model.getShowModel().getMap(); - PageUtil pageUtil = new PageUtil(); - pageUtil.setPageSize(0); - pageUtil.setCurPage(0); - try { - depotHeadService.find(pageUtil, "maxId"); - mapData.put("depotHeadMax", pageUtil.getPageList()); - } catch (Exception e) { - Log.errorFileSync(">>>>>>>>>>>>>查找最大的Id信息异常", e); - model.getShowModel().setMsgTip("exceptoin"); - } - return SUCCESS; - } - - /** - * 增加单据 - * - * @return - */ - public void create() { - Log.infoFileSync("==================开始调用增加单据信息信息方法create()==================="); - Boolean flag = false; - try { - DepotHead depotHead = new DepotHead(); - depotHead.setType(model.getType()); - depotHead.setSubType(model.getSubType()); - if (model.getProjectId() != null) { - depotHead.setProjectId(new Depot(model.getProjectId())); - } - //构造新的编号 - String dNumber = model.getDefaultNumber(); - String number = dNumber.substring(0, 12); //截取前缀 - String beginTime = Tools.getNow() + " 00:00:00"; - String endTime = Tools.getNow() + " 23:59:59"; - String newNumber = buildNumberFun(model.getType(), model.getSubType(), beginTime, endTime); //从数据库查询最新的编号+1,这样能防止重复 - String allNewNumber = number + newNumber; - depotHead.setNumber(model.getNumber()); //一直从前端文本框里面获取 - depotHead.setDefaultNumber(allNewNumber); //初始编号,一直都从后台取值 - - depotHead.setOperPersonName(getUser().getUsername()); - depotHead.setCreateTime(new Timestamp(System.currentTimeMillis())); - try { - depotHead.setOperTime(new Timestamp(Tools.parse(model.getOperTime(), "yyyy-MM-dd HH:mm:ss").getTime())); - } catch (ParseException e) { - Log.errorFileSync(">>>>>>>>>>>>>>>解析购买日期格式异常", e); - } - if (model.getOrganId() != null) { - depotHead.setOrganId(new Supplier(model.getOrganId())); - } - if (model.getHandsPersonId() != null) { - depotHead.setHandsPersonId(new Person(model.getHandsPersonId())); - } - if (model.getSalesman() != null) { - depotHead.setSalesman(model.getSalesman().toString()); - } - if (model.getAccountId() != null) { - depotHead.setAccountId(new Account(model.getAccountId())); - } - depotHead.setChangeAmount(model.getChangeAmount()); - depotHead.setAccountIdList(model.getAccountIdList()); - depotHead.setAccountMoneyList(model.getAccountMoneyList()); - depotHead.setDiscount(model.getDiscount()); - depotHead.setDiscountMoney(model.getDiscountMoney()); - depotHead.setDiscountLastMoney(model.getDiscountLastMoney()); - depotHead.setOtherMoney(model.getOtherMoney()); - depotHead.setOtherMoneyList(model.getOtherMoneyList()); - depotHead.setOtherMoneyItem(model.getOtherMoneyItem()); - depotHead.setAccountDay(model.getAccountDay()); - if (model.getAllocationProjectId() != null) { - depotHead.setAllocationProjectId(new Depot(model.getAllocationProjectId())); - } - depotHead.setTotalPrice(model.getTotalPrice()); - depotHead.setPayType(model.getPayType()); - depotHead.setStatus(false); - depotHead.setRemark(model.getRemark()); - depotHeadService.create(depotHead); - - //========标识位=========== - flag = true; - //记录操作日志使用 - tipMsg = "成功"; - tipType = 0; - } catch (DataAccessException e) { - Log.errorFileSync(">>>>>>>>>>>>>>>>>>>增加单据信息异常", e); - flag = false; - tipMsg = "失败"; - tipType = 1; - } finally { - try { - toClient(flag.toString()); - } catch (IOException e) { - Log.errorFileSync(">>>>>>>>>>>>增加单据信息回写客户端结果异常", e); - } - } - - logService.create(new Logdetails(getUser(), "增加单据", model.getClientIp(), - new Timestamp(System.currentTimeMillis()) - , tipType, "增加单据编号为 " + model.getNumber() + " " + tipMsg + "!", "增加单据" + tipMsg)); - Log.infoFileSync("==================结束调用增加单据方法create()==================="); - } - - /** - * 删除单据 - * - * @return - */ - public String delete() { - Log.infoFileSync("====================开始调用删除单据信息方法delete()================"); - try { - depotHeadService.delete(model.getDepotHeadID()); - tipMsg = "成功"; - tipType = 0; - } catch (DataAccessException e) { - Log.errorFileSync(">>>>>>>>>>>删除ID为 " + model.getDepotHeadID() + " 的单据异常", e); - tipMsg = "失败"; - tipType = 1; - } - model.getShowModel().setMsgTip(tipMsg); - logService.create(new Logdetails(getUser(), "删除单据", model.getClientIp(), - new Timestamp(System.currentTimeMillis()) - , tipType, "删除单据ID为 " + model.getDepotHeadID() + " " + tipMsg + "!", "删除单据" + tipMsg)); - Log.infoFileSync("====================结束调用删除单据信息方法delete()================"); - return SUCCESS; - } - - /** - * 更新单据 - * - * @return - */ - public void update() { - Boolean flag = false; - try { - DepotHead depotHead = depotHeadService.get(model.getDepotHeadID()); - depotHead.setType(model.getType()); - depotHead.setSubType(model.getSubType()); - if (model.getProjectId() != null) { - depotHead.setProjectId(new Depot(model.getProjectId())); - } - depotHead.setNumber(model.getNumber()); - depotHead.setOperPersonName(getUser().getUsername()); - try { - depotHead.setOperTime(new Timestamp(Tools.parse(model.getOperTime(), "yyyy-MM-dd HH:mm:ss").getTime())); - } catch (ParseException e) { - Log.errorFileSync(">>>>>>>>>>>>>>>解析入库时间格式异常", e); - } - if (model.getOrganId() != null) { - depotHead.setOrganId(new Supplier(model.getOrganId())); - } - if (model.getHandsPersonId() != null) { - depotHead.setHandsPersonId(new Person(model.getHandsPersonId())); - } - depotHead.setSalesman(model.getSalesman()); - if (model.getAccountId() != null) { - depotHead.setAccountId(new Account(model.getAccountId())); - } else { - depotHead.setAccountId(null); - } - depotHead.setChangeAmount(model.getChangeAmount()); - depotHead.setAccountIdList(model.getAccountIdList()); - depotHead.setAccountMoneyList(model.getAccountMoneyList()); - depotHead.setDiscount(model.getDiscount()); - depotHead.setDiscountMoney(model.getDiscountMoney()); - depotHead.setDiscountLastMoney(model.getDiscountLastMoney()); - depotHead.setOtherMoney(model.getOtherMoney()); - depotHead.setOtherMoneyList(model.getOtherMoneyList()); - depotHead.setOtherMoneyItem(model.getOtherMoneyItem()); - depotHead.setAccountDay(model.getAccountDay()); - if (model.getAllocationProjectId() != null) { - depotHead.setAllocationProjectId(new Depot(model.getAllocationProjectId())); - } - depotHead.setTotalPrice(model.getTotalPrice()); - depotHead.setPayType(model.getPayType()); - depotHead.setStatus(false); - depotHead.setRemark(model.getRemark()); - depotHeadService.update(depotHead); - - flag = true; - tipMsg = "成功"; - tipType = 0; - } catch (DataAccessException e) { - Log.errorFileSync(">>>>>>>>>>>>>修改单据ID为 : " + model.getDepotHeadID() + "信息失败", e); - flag = false; - tipMsg = "失败"; - tipType = 1; - } finally { - try { - toClient(flag.toString()); - } catch (IOException e) { - Log.errorFileSync(">>>>>>>>>>>>修改单据回写客户端结果异常", e); - } - } - logService.create(new Logdetails(getUser(), "更新单据", model.getClientIp(), - new Timestamp(System.currentTimeMillis()) - , tipType, "更新单据ID为 " + model.getDepotHeadID() + " " + tipMsg + "!", "更新单据" + tipMsg)); - } - - /** - * 批量删除指定ID单据 - * - * @return - */ - public String batchDelete() { - try { - depotHeadService.batchDelete(model.getDepotHeadIDs()); - model.getShowModel().setMsgTip("成功"); - //记录操作日志使用 - tipMsg = "成功"; - tipType = 0; - } catch (DataAccessException e) { - Log.errorFileSync(">>>>>>>>>>>批量删除单据ID为:" + model.getDepotHeadIDs() + "信息异常", e); - tipMsg = "失败"; - tipType = 1; - } - - logService.create(new Logdetails(getUser(), "批量删除单据", model.getClientIp(), - new Timestamp(System.currentTimeMillis()) - , tipType, "批量删除单据ID为 " + model.getDepotHeadIDs() + " " + tipMsg + "!", "批量删除单据" + tipMsg)); - return SUCCESS; - } - - /** - * 批量设置状态-审核或者反审核 - * - * @return - */ - public String batchSetStatus() { - try { - depotHeadService.batchSetStatus(model.getStatus(), model.getDepotHeadIDs()); - model.getShowModel().setMsgTip("成功"); - //记录操作日志使用 - tipMsg = "成功"; - tipType = 0; - } catch (DataAccessException e) { - Log.errorFileSync(">>>>>>>>>>>批量修改状态,单据ID为:" + model.getDepotHeadIDs() + "信息异常", e); - tipMsg = "失败"; - tipType = 1; - } - - logService.create(new Logdetails(getUser(), "批量修改单据状态", model.getClientIp(), - new Timestamp(System.currentTimeMillis()) - , tipType, "批量修改状态,单据ID为 " + model.getDepotHeadIDs() + " " + tipMsg + "!", "批量修改单据状态" + tipMsg)); - return SUCCESS; - } - - /** - * 检查单据编号是否存在 - */ - public void checkIsNumberExist() { - Boolean flag = false; - try { - flag = depotHeadService.checkIsNameExist("Number", model.getNumber(), "Id", model.getDepotHeadID()); - } catch (DataAccessException e) { - Log.errorFileSync(">>>>>>>>>>>>>>>>>检查单据编号为:" + model.getNumber() + " ID为: " + model.getDepotHeadID() + " 是否存在出现异常!"); - } finally { - try { - toClient(flag.toString()); - } catch (IOException e) { - Log.errorFileSync(">>>>>>>>>>>>回写检查单据编号为:" + model.getNumber() + " ID为: " + model.getDepotHeadID() + " 是否存在出现异常!", e); - } - } - } - - /** - * 单据编号生成接口,规则:查找当前类型单据下的当天最大的单据号,并加1 - */ - public void buildNumber() { - try { - String beginTime = model.getBeginTime(); - String endTime = model.getEndTime(); - String newNumber = buildNumberFun(model.getType(), model.getSubType(), beginTime, endTime); - JSONObject outer = new JSONObject(); - outer.put("DefaultNumber", newNumber); - //回写查询结果 - toClient(outer.toString()); - } catch (DataAccessException e) { - Log.errorFileSync(">>>>>>>>>>>>>>>>>>>单据编号生成异常", e); - } catch (IOException e) { - Log.errorFileSync(">>>>>>>>>>>>>>>>>>>回写单据编号生成接口异常", e); - } - } - - /** - * 查找单据编号 - * - * @return - */ - public String buildNumberFun(String type, String subType, String beginTime, String endTime) { - String newNumber = "0001"; //新编号 - try { - PageUtil pageUtil = new PageUtil(); - pageUtil.setPageSize(0); - pageUtil.setCurPage(0); - pageUtil.setAdvSearch(buildNumberCondition(type, subType, beginTime, endTime)); - depotHeadService.find(pageUtil); - List dataList = pageUtil.getPageList(); - //存放数据json数组 - if (null != dataList && dataList.size() > 0) { - DepotHead depotHead = dataList.get(0); - if (depotHead != null) { - String number = depotHead.getDefaultNumber(); //最大的单据编号 - if (number != null) { - Integer lastNumber = Integer.parseInt(number.substring(12, 16)); //末四尾 - lastNumber = lastNumber + 1; - Integer nLen = lastNumber.toString().length(); - if (nLen == 1) { - newNumber = "000" + lastNumber.toString(); - } else if (nLen == 2) { - newNumber = "00" + lastNumber.toString(); - } else if (nLen == 3) { - newNumber = "0" + lastNumber.toString(); - } else if (nLen == 4) { - newNumber = lastNumber.toString(); - } - } - } - } - } catch (DataAccessException e) { - Log.errorFileSync(">>>>>>>>>>>>>>>>>>>单据编号生成异常", e); - } - return newNumber; - } - - /** - * 根据材料信息获取 - */ - public void getHeaderIdByMaterial() { - try { - String materialParam = model.getMaterialParam(); //商品参数 - String depotIds = model.getDepotIds(); //拥有的仓库信息 - PageUtil pageUtil = new PageUtil(); - pageUtil.setPageSize(0); - pageUtil.setCurPage(0); - depotHeadService.getHeaderIdByMaterial(pageUtil, materialParam, depotIds); - JSONObject outer = new JSONObject(); - String allReturn = ""; - List dataList = pageUtil.getPageList(); - if (dataList != null) { - for (Integer i = 0; i < dataList.size(); i++) { - Object dl = dataList.get(i); //获取对象 - allReturn = allReturn + dl.toString() + ","; - } - } - allReturn = allReturn.substring(0, allReturn.length() - 1); - if (allReturn.equals("null")) { - allReturn = ""; - } - outer.put("ret", allReturn); - //回写查询结果 - toClient(outer.toString()); - } catch (JshException e) { - Log.errorFileSync(">>>>>>>>>>>>>>>>>>>查找信息异常", e); - } catch (IOException e) { - Log.errorFileSync(">>>>>>>>>>>>>>>>>>>回写查询单据信息结果异常", e); - } - } - - /** - * 查找单据信息 - * - * @return - */ - public void findBy() { - try { - PageUtil pageUtil = new PageUtil(); - pageUtil.setPageSize(model.getPageSize()); - pageUtil.setCurPage(model.getPageNo()); - pageUtil.setAdvSearch(getCondition()); - depotHeadService.find(pageUtil); - List dataList = pageUtil.getPageList(); - - JSONObject outer = new JSONObject(); - outer.put("total", pageUtil.getTotalCount()); - //存放数据json数组 - JSONArray dataArray = new JSONArray(); - if (null != dataList) { - for (DepotHead depotHead : dataList) { - JSONObject item = new JSONObject(); - item.put("Id", depotHead.getId()); - item.put("ProjectId", depotHead.getProjectId() == null ? "" : depotHead.getProjectId().getId()); - item.put("ProjectName", depotHead.getProjectId() == null ? "" : depotHead.getProjectId().getName()); - item.put("Number", depotHead.getNumber()); - item.put("OperPersonName", depotHead.getOperPersonName()); - item.put("CreateTime", Tools.getCenternTime(depotHead.getCreateTime())); - item.put("OperTime", Tools.getCenternTime(depotHead.getOperTime())); - item.put("OrganId", depotHead.getOrganId() == null ? "" : depotHead.getOrganId().getId()); - item.put("OrganName", depotHead.getOrganId() == null ? "" : depotHead.getOrganId().getSupplier()); - item.put("HandsPersonId", depotHead.getHandsPersonId() == null ? "" : depotHead.getHandsPersonId().getId()); - item.put("Salesman", depotHead.getSalesman().toString()); - item.put("HandsPersonName", depotHead.getHandsPersonId() == null ? "" : depotHead.getHandsPersonId().getName()); - item.put("AccountId", depotHead.getAccountId() == null ? "" : depotHead.getAccountId().getId()); - item.put("AccountName", depotHead.getAccountId() == null ? "" : depotHead.getAccountId().getName()); - item.put("ChangeAmount", depotHead.getChangeAmount() == null ? "" : Math.abs(depotHead.getChangeAmount())); - item.put("AccountIdList", depotHead.getAccountIdList()); - item.put("AccountMoneyList", depotHead.getAccountMoneyList()); - item.put("Discount", depotHead.getDiscount()); - item.put("DiscountMoney", depotHead.getDiscountMoney()); - item.put("DiscountLastMoney", depotHead.getDiscountLastMoney()); - item.put("OtherMoney", depotHead.getOtherMoney()); - item.put("OtherMoneyList", depotHead.getOtherMoneyList()); //id列表 - item.put("OtherMoneyItem", depotHead.getOtherMoneyItem()); //money列表 - item.put("AccountDay", depotHead.getAccountDay()); //结算天数 - item.put("AllocationProjectId", depotHead.getAllocationProjectId() == null ? "" : depotHead.getAllocationProjectId().getId()); - item.put("AllocationProjectName", depotHead.getAllocationProjectId() == null ? "" : depotHead.getAllocationProjectId().getName()); - item.put("TotalPrice", depotHead.getTotalPrice() == null ? "" : Math.abs(depotHead.getTotalPrice())); - item.put("payType", depotHead.getPayType() == null ? "" : depotHead.getPayType()); - item.put("Status", depotHead.getStatus()); - item.put("Remark", depotHead.getRemark()); - item.put("MaterialsList", findMaterialsListByHeaderId(depotHead.getId())); - item.put("op", 1); - dataArray.add(item); - } - } - outer.put("rows", dataArray); - //回写查询结果 - toClient(outer.toString()); - } catch (DataAccessException e) { - Log.errorFileSync(">>>>>>>>>>>>>>>>>>>查找单据信息异常", e); - } catch (IOException e) { - Log.errorFileSync(">>>>>>>>>>>>>>>>>>>回写查询单据信息结果异常", e); - } - } - - /** - * 根据编号查询单据信息 - */ - public void getDetailByNumber() { - try { - PageUtil pageUtil = new PageUtil(); - pageUtil.setPageSize(0); - pageUtil.setCurPage(0); - pageUtil.setAdvSearch(getConditionByNumber()); - depotHeadService.find(pageUtil); - List dataList = pageUtil.getPageList(); - JSONObject item = new JSONObject(); - if (dataList != null && dataList.get(0) != null) { - DepotHead depotHead = dataList.get(0); - item.put("Id", depotHead.getId()); - item.put("ProjectId", depotHead.getProjectId() == null ? "" : depotHead.getProjectId().getId()); - item.put("ProjectName", depotHead.getProjectId() == null ? "" : depotHead.getProjectId().getName()); - item.put("Number", depotHead.getNumber()); - item.put("OperPersonName", depotHead.getOperPersonName()); - item.put("CreateTime", Tools.getCenternTime(depotHead.getCreateTime())); - item.put("OperTime", Tools.getCenternTime(depotHead.getOperTime())); - item.put("OrganId", depotHead.getOrganId() == null ? "" : depotHead.getOrganId().getId()); - item.put("OrganName", depotHead.getOrganId() == null ? "" : depotHead.getOrganId().getSupplier()); - item.put("HandsPersonId", depotHead.getHandsPersonId() == null ? "" : depotHead.getHandsPersonId().getId()); - item.put("Salesman", depotHead.getSalesman().toString()); - item.put("HandsPersonName", depotHead.getHandsPersonId() == null ? "" : depotHead.getHandsPersonId().getName()); - item.put("AccountId", depotHead.getAccountId() == null ? "" : depotHead.getAccountId().getId()); - item.put("AccountName", depotHead.getAccountId() == null ? "" : depotHead.getAccountId().getName()); - item.put("ChangeAmount", depotHead.getChangeAmount() == null ? "" : Math.abs(depotHead.getChangeAmount())); - item.put("AccountIdList", depotHead.getAccountIdList()); - item.put("AccountMoneyList", depotHead.getAccountMoneyList()); - item.put("Discount", depotHead.getDiscount()); - item.put("DiscountMoney", depotHead.getDiscountMoney()); - item.put("DiscountLastMoney", depotHead.getDiscountLastMoney()); - item.put("OtherMoney", depotHead.getOtherMoney()); - item.put("OtherMoneyList", depotHead.getOtherMoneyList()); //id列表 - item.put("OtherMoneyItem", depotHead.getOtherMoneyItem()); //money列表 - item.put("AccountDay", depotHead.getAccountDay()); //结算天数 - item.put("AllocationProjectId", depotHead.getAllocationProjectId() == null ? "" : depotHead.getAllocationProjectId().getId()); - item.put("AllocationProjectName", depotHead.getAllocationProjectId() == null ? "" : depotHead.getAllocationProjectId().getName()); - item.put("TotalPrice", depotHead.getTotalPrice() == null ? "" : Math.abs(depotHead.getTotalPrice())); - item.put("payType", depotHead.getPayType() == null ? "" : depotHead.getPayType()); - item.put("Status", depotHead.getStatus()); - item.put("Remark", depotHead.getRemark()); - item.put("MaterialsList", findMaterialsListByHeaderId(depotHead.getId())); - } - //回写查询结果 - toClient(item.toString()); - } catch (DataAccessException e) { - Log.errorFileSync(">>>>>>>>>>>>>>>>>>>查找单据信息异常", e); - } catch (IOException e) { - Log.errorFileSync(">>>>>>>>>>>>>>>>>>>回写查询单据信息结果异常", e); - } - } - - /** - * 查找单据_根据月份(报表) - * - * @return - */ - public void findByMonth() { - try { - PageUtil pageUtil = new PageUtil(); - pageUtil.setPageSize(1000); - pageUtil.setCurPage(1); - pageUtil.setAdvSearch(getConditionHead()); - depotHeadService.find(pageUtil); - List dataList = pageUtil.getPageList(); - JSONObject outer = new JSONObject(); - String headId = ""; - if (null != dataList) { - for (DepotHead depotHead : dataList) { - headId = headId + depotHead.getId() + ","; - } - } - if (headId != "") { - headId = headId.substring(0, headId.lastIndexOf(",")); - } - outer.put("HeadIds", headId); - toClient(outer.toString()); - } catch (DataAccessException e) { - Log.errorFileSync(">>>>>>>>>>>>>>>>>>>查找单据信息异常", e); - } catch (IOException e) { - Log.errorFileSync(">>>>>>>>>>>>>>>>>>>回写查询单据信息结果异常", e); - } - } - - /** - * 查找统计信息_根据礼品卡(报表) - * - * @return - */ - public void findGiftReport() { - try { - PageUtil pageUtil_in = new PageUtil(); - pageUtil_in.setPageSize(0); - pageUtil_in.setCurPage(0); - pageUtil_in.setAdvSearch(getConditionHead_Gift_In()); - depotHeadService.find(pageUtil_in); - List dataList_in = pageUtil_in.getPageList(); - JSONObject outer = new JSONObject(); - String headId = ""; - if (null != dataList_in) { - for (DepotHead depotHead : dataList_in) { - headId = headId + depotHead.getId() + ","; - } - PageUtil pageUtil_out = new PageUtil(); - pageUtil_out.setPageSize(0); - pageUtil_out.setCurPage(0); - pageUtil_out.setAdvSearch(getConditionHead_Gift_Out()); - depotHeadService.find(pageUtil_out); - List dataList_out = pageUtil_out.getPageList(); - if (null != dataList_out) { - for (DepotHead depotHead : dataList_out) { - headId = headId + depotHead.getId() + ","; - } - } - } - if (headId != "") { - headId = headId.substring(0, headId.lastIndexOf(",")); - } - outer.put("HeadIds", headId); - toClient(outer.toString()); - } catch (DataAccessException e) { - Log.errorFileSync(">>>>>>>>>>>>>>>>>>>查找单据信息异常", e); - } catch (IOException e) { - Log.errorFileSync(">>>>>>>>>>>>>>>>>>>回写查询单据信息结果异常", e); - } - } - - /** - * 查询单位的累计应收和累计应付,零售不能计入 - * - * @return - */ - public void findTotalPay() { - try { - JSONObject outer = new JSONObject(); - Double sum = 0.0; - String getS = model.getSupplierId(); - String supType = model.getSupType(); //单位类型:客户、供应商 - int i = 1; - if (supType.equals("customer")) { //客户 - i = 1; - } else if (supType.equals("vendor")) { //供应商 - i = -1; - } - //进销部分 - sum = sum - (allMoney(getS, "入库", "采购", "合计") - allMoney(getS, "入库", "采购", "实际")) * i; - sum = sum - (allMoney(getS, "入库", "销售退货", "合计") - allMoney(getS, "入库", "销售退货", "实际")) * i; - sum = sum + (allMoney(getS, "出库", "销售", "合计") - allMoney(getS, "出库", "销售", "实际")) * i; - sum = sum + (allMoney(getS, "出库", "采购退货", "合计") - allMoney(getS, "出库", "采购退货", "实际")) * i; - outer.put("getAllMoney", sum); - toClient(outer.toString()); - } catch (DataAccessException e) { - Log.errorFileSync(">>>>>>>>>>>>>>>>>>>查找异常", e); - } catch (IOException e) { - Log.errorFileSync(">>>>>>>>>>>>>>>>>>>回写查询结果异常", e); - } - } - - - /** - * 统计总金额 - * - * @param type - * @param subType - * @param mode 合计或者金额 - * @return - */ - @SuppressWarnings({"unchecked", "rawtypes"}) - public Double allMoney(String getS, String type, String subType, String mode) { - Log.infoFileSync("getS:" + getS); - Double allMoney = 0.0; - String allReturn = ""; - PageUtil pageUtil = new PageUtil(); - pageUtil.setPageSize(0); - pageUtil.setCurPage(0); - pageUtil.setAdvSearch(getConditionHead_byEndTime()); - try { - Integer supplierId = Integer.valueOf(getS); - depotHeadService.findAllMoney(pageUtil, supplierId, type, subType, mode); - allReturn = pageUtil.getPageList().toString(); - allReturn = allReturn.substring(1, allReturn.length() - 1); - if (allReturn.equals("null")) { - allReturn = "0"; - } - } catch (JshException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - allMoney = Double.parseDouble(allReturn); - //返回正数,如果负数也转为正数 - if (allMoney < 0) { - allMoney = -allMoney; - } - return allMoney; - } - - /** - * 入库出库明细接口 - */ - public void findInDetail() { - PageUtil pageUtil = new PageUtil(); - pageUtil.setPageSize(model.getPageSize()); - pageUtil.setCurPage(model.getPageNo()); - Long pid = model.getProjectId(); - String dids = model.getDepotIds(); - Long oId = model.getOrganId(); - String beginTime = model.getBeginTime(); - String endTime = model.getEndTime(); - String type = model.getType(); - try { - depotHeadService.findInDetail(pageUtil, beginTime, endTime, type, pid, dids, oId); - List dataList = pageUtil.getPageList(); - JSONObject outer = new JSONObject(); - outer.put("total", pageUtil.getTotalCount()); - //存放数据json数组 - JSONArray dataArray = new JSONArray(); - if (dataList != null) { - for (Integer i = 0; i < dataList.size(); i++) { - JSONObject item = new JSONObject(); - Object dl = dataList.get(i); //获取对象 - Object[] arr = (Object[]) dl; //转为数组 - item.put("number", arr[0]); //单据编号 - item.put("materialName", arr[1]); //商品名称 - item.put("materialModel", arr[2]); //商品型号 - item.put("unitPrice", arr[3]); //单价 - item.put("operNumber", arr[4]); //入库出库数量 - item.put("allPrice", arr[5]); //金额 - item.put("supplierName", arr[6]); //供应商 - item.put("depotName", arr[7]); //仓库 - item.put("operTime", arr[8]); //入库出库日期 - item.put("type", arr[9]); //入库出库日期 - dataArray.add(item); - } - } - outer.put("rows", dataArray); - //回写查询结果 - toClient(outer.toString()); - } catch (JshException e) { - Log.errorFileSync(">>>>>>>>>>>>>>>>>>>查找信息异常", e); - } catch (IOException e) { - Log.errorFileSync(">>>>>>>>>>>>>>>>>>>回写查询信息结果异常", e); - } - } - - /** - * 入库出库统计接口 - */ - public void findInOutMaterialCount() { - PageUtil pageUtil = new PageUtil(); - pageUtil.setPageSize(model.getPageSize()); - pageUtil.setCurPage(model.getPageNo()); - Long pid = model.getProjectId(); - String dids = model.getDepotIds(); - Long oId = model.getOrganId(); - String beginTime = model.getBeginTime(); - String endTime = model.getEndTime(); - String type = model.getType(); - try { - depotHeadService.findInOutMaterialCount(pageUtil, beginTime, endTime, type, pid, dids, oId); - List dataList = pageUtil.getPageList(); - JSONObject outer = new JSONObject(); - outer.put("total", pageUtil.getTotalCount()); - //存放数据json数组 - JSONArray dataArray = new JSONArray(); - if (dataList != null) { - for (Integer i = 0; i < dataList.size(); i++) { - JSONObject item = new JSONObject(); - Object dl = dataList.get(i); //获取对象 - Object[] arr = (Object[]) dl; //转为数组 - item.put("MaterialId", arr[0]); //商品Id - item.put("mName", arr[1]); //商品名称 - item.put("Model", arr[2]); //商品型号 - item.put("categoryName", arr[3]); //商品类型 - item.put("numSum", arr[4]); //数量 - item.put("priceSum", arr[5]); //金额 - dataArray.add(item); - } - } - outer.put("rows", dataArray); - //回写查询结果 - toClient(outer.toString()); - } catch (JshException e) { - Log.errorFileSync(">>>>>>>>>>>>>>>>>>>查找信息异常", e); - } catch (IOException e) { - Log.errorFileSync(">>>>>>>>>>>>>>>>>>>回写查询信息结果异常", e); - } - } - - public String findMaterialsListByHeaderId(Long headerId) { - String allReturn = ""; - PageUtil pageUtil = new PageUtil(); - pageUtil.setPageSize(0); - pageUtil.setCurPage(0); - try { - depotHeadService.findMaterialsListByHeaderId(pageUtil, headerId); - allReturn = pageUtil.getPageList().toString(); - allReturn = allReturn.substring(1, allReturn.length() - 1); - if (allReturn.equals("null")) { - allReturn = ""; - } - } catch (JshException e) { - Log.errorFileSync(">>>>>>>>>>>>>>>>>>>查找信息异常", e); - } - return allReturn; - } - - /** - * 对账单接口 - */ - public void findStatementAccount() { - PageUtil pageUtil = new PageUtil(); - pageUtil.setPageSize(model.getPageSize()); - pageUtil.setCurPage(model.getPageNo()); - String beginTime = model.getBeginTime(); - String endTime = model.getEndTime(); - Long organId = model.getOrganId(); - String supType = model.getSupType(); //单位类型:客户、供应商 - int j = 1; - if (supType.equals("客户")) { //客户 - j = 1; - } else if (supType.equals("供应商")) { //供应商 - j = -1; - } - try { - depotHeadService.findStatementAccount(pageUtil, beginTime, endTime, organId, supType); - List dataList = pageUtil.getPageList(); - JSONObject outer = new JSONObject(); - outer.put("total", pageUtil.getTotalCount()); - //存放数据json数组 - JSONArray dataArray = new JSONArray(); - if (dataList != null) { - for (Integer i = 0; i < dataList.size(); i++) { - JSONObject item = new JSONObject(); - Object dl = dataList.get(i); //获取对象 - Object[] arr = (Object[]) dl; //转为数组 - item.put("number", arr[0]); //单据编号 - item.put("type", arr[1]); //类型 - String type = arr[1].toString(); - Double p1 = 0.0; - Double p2 = 0.0; - if (arr[2] != null) { - p1 = Double.parseDouble(arr[2].toString()); - } - if (arr[3] != null) { - p2 = Double.parseDouble(arr[3].toString()); - } - Double allPrice = 0.0; - if (p1 < 0) { - p1 = -p1; - } - if (p2 < 0) { - p2 = -p2; - } - if (type.equals("采购入库")) { - allPrice = -(p1 - p2); - } else if (type.equals("销售退货入库")) { - allPrice = -(p1 - p2); - } else if (type.equals("销售出库")) { - allPrice = p1 - p2; - } else if (type.equals("采购退货出库")) { - allPrice = p1 - p2; - } else if (type.equals("付款")) { - allPrice = p1 + p2; - } else if (type.equals("收款")) { - allPrice = -(p1 + p2); - } else if (type.equals("收入")) { - allPrice = p1 - p2; - } else if (type.equals("支出")) { - allPrice = -(p1 - p2); - } - item.put("discountLastMoney", p1); //金额 - item.put("changeAmount", p2); //金额 - item.put("allPrice", String.format("%.2f", allPrice * j)); //计算后的金额 - item.put("supplierName", arr[4]); //供应商 - item.put("operTime", arr[5]); //入库出库日期 - dataArray.add(item); - } - } - outer.put("rows", dataArray); - //回写查询结果 - toClient(outer.toString()); - } catch (JshException e) { - Log.errorFileSync(">>>>>>>>>>>>>>>>>>>查找信息异常", e); - } catch (IOException e) { - Log.errorFileSync(">>>>>>>>>>>>>>>>>>>回写查询信息结果异常", e); - } - } - - private Map getConditionByNumber() { - Map condition = new HashMap(); - condition.put("Number_s_eq", model.getNumber()); - return condition; - } - - /** - * 拼接搜索条件 - * - * @return - */ - private Map getCondition() { - /** - * 拼接搜索条件 - */ - Map condition = new HashMap(); - condition.put("Type_s_eq", model.getType()); - condition.put("SubType_s_eq", model.getSubType()); - condition.put("Number_s_like", model.getNumber()); - condition.put("Id_s_in", model.getDhIds()); - condition.put("OperTime_s_gteq", model.getBeginTime()); - condition.put("OperTime_s_lteq", model.getEndTime()); - condition.put("Id_s_order", "desc"); - return condition; - } - - private Map buildNumberCondition(String type, String subType, String beginTime, String endTime) { - Map condition = new HashMap(); - condition.put("Type_s_eq", type); - condition.put("SubType_s_eq", subType); - condition.put("OperTime_s_gteq", beginTime); - condition.put("OperTime_s_lteq", endTime); - condition.put("Id_s_order", "desc"); - return condition; - } - - private Map getConditionHead() { - Map condition = new HashMap(); - condition.put("OperTime_s_lteq", model.getMonthTime() + "-31 00:00:00"); - return condition; - } - - private Map getConditionHead_Gift_In() { - Map condition = new HashMap(); - return condition; - } - - private Map getConditionHead_Gift_Out() { - Map condition = new HashMap(); - if (model.getProjectId() != null) { - condition.put("ProjectId_n_eq", model.getProjectId()); - } - return condition; - } - - private Map getConditionHead_byEndTime() { - Map condition = new HashMap(); - condition.put("OperTime_s_lteq", model.getEndTime()); - return condition; - } - - //=============以下spring注入以及Model驱动公共方法,与Action处理无关================== - public DepotHeadModel getModel() { - return model; - } - - public void setDepotHeadService(DepotHeadIService depotHeadService) { - this.depotHeadService = depotHeadService; - } -} diff --git a/src/main/java/com/jsh/action/materials/DepotItemAction.java b/src/main/java/com/jsh/action/materials/DepotItemAction.java deleted file mode 100644 index d790d5c4..00000000 --- a/src/main/java/com/jsh/action/materials/DepotItemAction.java +++ /dev/null @@ -1,1010 +0,0 @@ -package com.jsh.action.materials; - -import com.jsh.base.BaseAction; -import com.jsh.base.Log; -import com.jsh.model.po.*; -import com.jsh.model.vo.materials.DepotItemModel; -import com.jsh.service.materials.DepotItemIService; -import com.jsh.service.materials.MaterialIService; -import com.jsh.util.JshException; -import com.jsh.util.PageUtil; -import com.jsh.util.Tools; -import net.sf.json.JSONArray; -import net.sf.json.JSONObject; -import org.apache.commons.lang.StringUtils; -import org.springframework.dao.DataAccessException; - -import java.io.IOException; -import java.sql.Timestamp; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -/* - * 单据明细管理 - * @author jishenghua qq:752718920 - */ -@SuppressWarnings("serial") -public class DepotItemAction extends BaseAction { - /** - * action返回excel结果 - */ - public static final String EXCEL = "excel"; - private MaterialIService materialService; - private DepotItemIService depotItemService; - private DepotItemModel model = new DepotItemModel(); - - /** - * 保存明细 - * - * @return - */ - public void saveDetials() { - Log.infoFileSync("==================开始调用保存仓管通明细信息方法saveDetials()==================="); - Boolean flag = false; - try { - Long headerId = model.getHeaderId(); - String inserted = model.getInserted(); - String deleted = model.getDeleted(); - String updated = model.getUpdated(); - //转为json - JSONArray insertedJson = JSONArray.fromObject(inserted); - JSONArray deletedJson = JSONArray.fromObject(deleted); - JSONArray updatedJson = JSONArray.fromObject(updated); - if (null != insertedJson) { - for (int i = 0; i < insertedJson.size(); i++) { - DepotItem depotItem = new DepotItem(); - JSONObject tempInsertedJson = JSONObject.fromObject(insertedJson.get(i)); - depotItem.setHeaderId(new DepotHead(headerId)); - depotItem.setMaterialId(new Material(tempInsertedJson.getLong("MaterialId"))); - depotItem.setMUnit(tempInsertedJson.getString("Unit")); - if (!StringUtils.isEmpty(tempInsertedJson.get("OperNumber").toString())) { - depotItem.setOperNumber(tempInsertedJson.getDouble("OperNumber")); - try { - String Unit = tempInsertedJson.get("Unit").toString(); - Double oNumber = tempInsertedJson.getDouble("OperNumber"); - Long mId = Long.parseLong(tempInsertedJson.get("MaterialId").toString()); - //以下进行单位换算 - String UnitName = findUnitName(mId); //查询计量单位名称 - if (!UnitName.equals("")) { - String UnitList = UnitName.substring(0, UnitName.indexOf("(")); - String RatioList = UnitName.substring(UnitName.indexOf("(")); - String basicUnit = UnitList.substring(0, UnitList.indexOf(",")); //基本单位 - String otherUnit = UnitList.substring(UnitList.indexOf(",") + 1); //副单位 - Integer ratio = Integer.parseInt(RatioList.substring(RatioList.indexOf(":") + 1).replace(")", "")); //比例 - if (Unit.equals(basicUnit)) { //如果等于基础单位 - depotItem.setBasicNumber(oNumber); //数量一致 - } else if (Unit.equals(otherUnit)) { //如果等于副单位 - depotItem.setBasicNumber(oNumber * ratio); //数量乘以比例 - } - } else { - depotItem.setBasicNumber(oNumber); //其他情况 - } - } catch (Exception e) { - Log.errorFileSync(">>>>>>>>>>>>>>>>>>>设置基础数量异常", e); - } - } - if (!StringUtils.isEmpty(tempInsertedJson.get("UnitPrice").toString())) { - depotItem.setUnitPrice(tempInsertedJson.getDouble("UnitPrice")); - } - if (!StringUtils.isEmpty(tempInsertedJson.get("TaxUnitPrice").toString())) { - depotItem.setTaxUnitPrice(tempInsertedJson.getDouble("TaxUnitPrice")); - } - if (!StringUtils.isEmpty(tempInsertedJson.get("AllPrice").toString())) { - depotItem.setAllPrice(tempInsertedJson.getDouble("AllPrice")); - } - depotItem.setRemark(tempInsertedJson.getString("Remark")); - if (tempInsertedJson.get("DepotId") != null && !StringUtils.isEmpty(tempInsertedJson.get("DepotId").toString())) { - depotItem.setDepotId(new Depot(tempInsertedJson.getLong("DepotId"))); - } - if (tempInsertedJson.get("AnotherDepotId") != null && !StringUtils.isEmpty(tempInsertedJson.get("AnotherDepotId").toString())) { - depotItem.setAnotherDepotId(new Depot(tempInsertedJson.getLong("AnotherDepotId"))); - } - if (!StringUtils.isEmpty(tempInsertedJson.get("TaxRate").toString())) { - depotItem.setTaxRate(tempInsertedJson.getDouble("TaxRate")); - } - if (!StringUtils.isEmpty(tempInsertedJson.get("TaxMoney").toString())) { - depotItem.setTaxMoney(tempInsertedJson.getDouble("TaxMoney")); - } - if (!StringUtils.isEmpty(tempInsertedJson.get("TaxLastMoney").toString())) { - depotItem.setTaxLastMoney(tempInsertedJson.getDouble("TaxLastMoney")); - } - if (tempInsertedJson.get("OtherField1") != null) { - depotItem.setOtherField1(tempInsertedJson.getString("OtherField1")); - } - if (tempInsertedJson.get("OtherField2") != null) { - depotItem.setOtherField2(tempInsertedJson.getString("OtherField2")); - } - if (tempInsertedJson.get("OtherField3") != null) { - depotItem.setOtherField3(tempInsertedJson.getString("OtherField3")); - } - if (tempInsertedJson.get("OtherField4") != null) { - depotItem.setOtherField4(tempInsertedJson.getString("OtherField4")); - } - if (tempInsertedJson.get("OtherField5") != null) { - depotItem.setOtherField5(tempInsertedJson.getString("OtherField5")); - } - if (tempInsertedJson.get("MType") != null) { - depotItem.setMType(tempInsertedJson.getString("MType")); - } - depotItemService.create(depotItem); - } - } - if (null != deletedJson) { - for (int i = 0; i < deletedJson.size(); i++) { - JSONObject tempDeletedJson = JSONObject.fromObject(deletedJson.get(i)); - depotItemService.delete(tempDeletedJson.getLong("Id")); - } - } - if (null != updatedJson) { - for (int i = 0; i < updatedJson.size(); i++) { - JSONObject tempUpdatedJson = JSONObject.fromObject(updatedJson.get(i)); - DepotItem depotItem = depotItemService.get(tempUpdatedJson.getLong("Id")); - depotItem.setMaterialId(new Material(tempUpdatedJson.getLong("MaterialId"))); - depotItem.setMUnit(tempUpdatedJson.getString("Unit")); - if (!StringUtils.isEmpty(tempUpdatedJson.get("OperNumber").toString())) { - depotItem.setOperNumber(tempUpdatedJson.getDouble("OperNumber")); - try { - String Unit = tempUpdatedJson.get("Unit").toString(); - Double oNumber = tempUpdatedJson.getDouble("OperNumber"); - Long mId = Long.parseLong(tempUpdatedJson.get("MaterialId").toString()); - //以下进行单位换算 - String UnitName = findUnitName(mId); //查询计量单位名称 - if (!UnitName.equals("")) { - String UnitList = UnitName.substring(0, UnitName.indexOf("(")); - String RatioList = UnitName.substring(UnitName.indexOf("(")); - String basicUnit = UnitList.substring(0, UnitList.indexOf(",")); //基本单位 - String otherUnit = UnitList.substring(UnitList.indexOf(",") + 1); //副单位 - Integer ratio = Integer.parseInt(RatioList.substring(RatioList.indexOf(":") + 1).replace(")", "")); //比例 - if (Unit.equals(basicUnit)) { //如果等于基础单位 - depotItem.setBasicNumber(oNumber); //数量一致 - } else if (Unit.equals(otherUnit)) { //如果等于副单位 - depotItem.setBasicNumber(oNumber * ratio); //数量乘以比例 - } - } else { - depotItem.setBasicNumber(oNumber); //其他情况 - } - } catch (Exception e) { - Log.errorFileSync(">>>>>>>>>>>>>>>>>>>设置基础数量异常", e); - } - } - if (!StringUtils.isEmpty(tempUpdatedJson.get("UnitPrice").toString())) { - depotItem.setUnitPrice(tempUpdatedJson.getDouble("UnitPrice")); - } - if (!StringUtils.isEmpty(tempUpdatedJson.get("TaxUnitPrice").toString())) { - depotItem.setTaxUnitPrice(tempUpdatedJson.getDouble("TaxUnitPrice")); - } - if (!StringUtils.isEmpty(tempUpdatedJson.get("AllPrice").toString())) { - depotItem.setAllPrice(tempUpdatedJson.getDouble("AllPrice")); - } - depotItem.setRemark(tempUpdatedJson.getString("Remark")); - if (tempUpdatedJson.get("DepotId") != null && !StringUtils.isEmpty(tempUpdatedJson.get("DepotId").toString())) { - depotItem.setDepotId(new Depot(tempUpdatedJson.getLong("DepotId"))); - } - if (tempUpdatedJson.get("AnotherDepotId") != null && !StringUtils.isEmpty(tempUpdatedJson.get("AnotherDepotId").toString())) { - depotItem.setAnotherDepotId(new Depot(tempUpdatedJson.getLong("AnotherDepotId"))); - } - if (!StringUtils.isEmpty(tempUpdatedJson.get("TaxRate").toString())) { - depotItem.setTaxRate(tempUpdatedJson.getDouble("TaxRate")); - } - if (!StringUtils.isEmpty(tempUpdatedJson.get("TaxMoney").toString())) { - depotItem.setTaxMoney(tempUpdatedJson.getDouble("TaxMoney")); - } - if (!StringUtils.isEmpty(tempUpdatedJson.get("TaxLastMoney").toString())) { - depotItem.setTaxLastMoney(tempUpdatedJson.getDouble("TaxLastMoney")); - } - depotItem.setOtherField1(tempUpdatedJson.getString("OtherField1")); - depotItem.setOtherField2(tempUpdatedJson.getString("OtherField2")); - depotItem.setOtherField3(tempUpdatedJson.getString("OtherField3")); - depotItem.setOtherField4(tempUpdatedJson.getString("OtherField4")); - depotItem.setOtherField5(tempUpdatedJson.getString("OtherField5")); - depotItem.setMType(tempUpdatedJson.getString("MType")); - depotItemService.create(depotItem); - } - } - - //========标识位=========== - flag = true; - //记录操作日志使用 - tipMsg = "成功"; - tipType = 0; - } catch (DataAccessException e) { - Log.errorFileSync(">>>>>>>>>>>>>>>>>>>保存仓管通明细信息异常", e); - flag = false; - tipMsg = "失败"; - tipType = 1; - } finally { - try { - toClient(flag.toString()); - } catch (IOException e) { - Log.errorFileSync(">>>>>>>>>>>>保存仓管通明细信息回写客户端结果异常", e); - } - } - - logService.create(new Logdetails(getUser(), "保存仓管通明细", model.getClientIp(), - new Timestamp(System.currentTimeMillis()) - , tipType, "保存仓管通明细对应主表编号为 " + model.getHeaderId() + " " + tipMsg + "!", "保存仓管通明细" + tipMsg)); - Log.infoFileSync("==================结束调用保存仓管通明细方法saveDetials()==================="); - } - - /** - * 查询计量单位信息 - * - * @return - */ - public String findUnitName(Long mId) { - String unitName = ""; - PageUtil pageUtil = new PageUtil(); - pageUtil.setPageSize(0); - pageUtil.setCurPage(0); - try { - materialService.findUnitName(pageUtil, mId); - unitName = pageUtil.getPageList().toString(); - if (unitName != null) { - unitName = unitName.substring(1, unitName.length() - 1); - if (unitName.equals("null")) { - unitName = ""; - } - } - } catch (JshException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - return unitName; - } - - - /** - * 查找明细信息 - * - * @return - */ - public void findBy() { - try { - PageUtil pageUtil = new PageUtil(); - pageUtil.setPageSize(model.getPageSize()); - pageUtil.setCurPage(model.getPageNo()); - pageUtil.setAdvSearch(getCondition()); - depotItemService.find(pageUtil); - List dataList = pageUtil.getPageList(); - String mpList = model.getMpList(); //商品属性 - String[] mpArr = mpList.split(","); - JSONObject outer = new JSONObject(); - outer.put("total", pageUtil.getTotalCount()); - //存放数据json数组 - JSONArray dataArray = new JSONArray(); - if (null != dataList) { - for (DepotItem depotItem : dataList) { - JSONObject item = new JSONObject(); - item.put("Id", depotItem.getId()); - item.put("MaterialId", depotItem.getMaterialId() == null ? "" : depotItem.getMaterialId().getId()); - String ratio; //比例 - if (depotItem.getMaterialId().getUnitId() == null || depotItem.getMaterialId().getUnitId().equals("")) { - ratio = ""; - } else { - ratio = depotItem.getMaterialId().getUnitId().getUName(); - ratio = ratio.substring(ratio.indexOf("(")); - } - //品名/型号/扩展信息/包装 - String MaterialName = depotItem.getMaterialId().getName() + ((depotItem.getMaterialId().getModel() == null || depotItem.getMaterialId().getModel().equals("")) ? "" : "(" + depotItem.getMaterialId().getModel() + ")"); - String materialOther = getOtherInfo(mpArr, depotItem); - MaterialName = MaterialName + materialOther + ((depotItem.getMaterialId().getUnit() == null || depotItem.getMaterialId().getUnit().equals("")) ? "" : "(" + depotItem.getMaterialId().getUnit() + ")") + ratio; - item.put("MaterialName", MaterialName); - item.put("Unit", depotItem.getMUnit()); - item.put("OperNumber", depotItem.getOperNumber()); - item.put("BasicNumber", depotItem.getBasicNumber()); - item.put("UnitPrice", depotItem.getUnitPrice()); - item.put("TaxUnitPrice", depotItem.getTaxUnitPrice()); - item.put("AllPrice", depotItem.getAllPrice()); - item.put("Remark", depotItem.getRemark()); - item.put("Img", depotItem.getImg()); - item.put("DepotId", depotItem.getDepotId() == null ? "" : depotItem.getDepotId().getId()); - item.put("DepotName", depotItem.getDepotId() == null ? "" : depotItem.getDepotId().getName()); - item.put("AnotherDepotId", depotItem.getAnotherDepotId() == null ? "" : depotItem.getAnotherDepotId().getId()); - item.put("AnotherDepotName", depotItem.getAnotherDepotId() == null ? "" : depotItem.getAnotherDepotId().getName()); - item.put("TaxRate", depotItem.getTaxRate()); - item.put("TaxMoney", depotItem.getTaxMoney()); - item.put("TaxLastMoney", depotItem.getTaxLastMoney()); - item.put("OtherField1", depotItem.getOtherField1()); - item.put("OtherField2", depotItem.getOtherField2()); - item.put("OtherField3", depotItem.getOtherField3()); - item.put("OtherField4", depotItem.getOtherField4()); - item.put("OtherField5", depotItem.getOtherField5()); - item.put("MType", depotItem.getMType()); - item.put("op", 1); - dataArray.add(item); - } - } - outer.put("rows", dataArray); - //回写查询结果 - toClient(outer.toString()); - } catch (DataAccessException e) { - Log.errorFileSync(">>>>>>>>>>>>>>>>>>>查找仓管通信息异常", e); - } catch (IOException e) { - Log.errorFileSync(">>>>>>>>>>>>>>>>>>>回写查询仓管通信息结果异常", e); - } - } - - /** - * 查找所有的明细 - * - * @return - */ - public void findByAll() { - try { - PageUtil pageUtil = new PageUtil(); - pageUtil.setPageSize(model.getPageSize()); - pageUtil.setCurPage(model.getPageNo()); - pageUtil.setAdvSearch(getConditionALL()); - depotItemService.find(pageUtil); - List dataList = pageUtil.getPageList(); - String mpList = model.getMpList(); //商品属性 - String[] mpArr = mpList.split(","); - JSONObject outer = new JSONObject(); - outer.put("total", pageUtil.getTotalCount()); - //存放数据json数组 - Integer pid = model.getProjectId(); - JSONArray dataArray = new JSONArray(); - if (null != dataList) { - for (DepotItem depotItem : dataList) { - JSONObject item = new JSONObject(); - Integer prevSum = sumNumber("入库", pid, depotItem.getMaterialId().getId(), model.getMonthTime(), true) - sumNumber("出库", pid, depotItem.getMaterialId().getId(), model.getMonthTime(), true); - Integer InSum = sumNumber("入库", pid, depotItem.getMaterialId().getId(), model.getMonthTime(), false); - Integer OutSum = sumNumber("出库", pid, depotItem.getMaterialId().getId(), model.getMonthTime(), false); - Double prevPrice = sumPrice("入库", pid, depotItem.getMaterialId().getId(), model.getMonthTime(), true) - sumPrice("出库", pid, depotItem.getMaterialId().getId(), model.getMonthTime(), true); - Double InPrice = sumPrice("入库", pid, depotItem.getMaterialId().getId(), model.getMonthTime(), false); - Double OutPrice = sumPrice("出库", pid, depotItem.getMaterialId().getId(), model.getMonthTime(), false); - item.put("Id", depotItem.getId()); - item.put("MaterialId", depotItem.getMaterialId() == null ? "" : depotItem.getMaterialId().getId()); - item.put("MaterialName", depotItem.getMaterialId().getName()); - item.put("MaterialModel", depotItem.getMaterialId().getModel()); - //扩展信息 - String materialOther = getOtherInfo(mpArr, depotItem); - item.put("MaterialOther", materialOther); - item.put("MaterialColor", depotItem.getMaterialId().getColor()); - item.put("MaterialUnit", depotItem.getMaterialId().getUnit()); - Double unitPrice = 0.0; - if (prevSum + InSum - OutSum != 0.0) { - unitPrice = (prevPrice + InPrice - OutPrice) / (prevSum + InSum - OutSum); - } - item.put("UnitPrice", unitPrice); - item.put("prevSum", prevSum); - item.put("InSum", InSum); - item.put("OutSum", OutSum); - item.put("thisSum", prevSum + InSum - OutSum); - item.put("thisAllPrice", prevPrice + InPrice - OutPrice); - dataArray.add(item); - } - } - outer.put("rows", dataArray); - //回写查询结果 - toClient(outer.toString()); - } catch (DataAccessException e) { - Log.errorFileSync(">>>>>>>>>>>>>>>>>>>查找信息异常", e); - } catch (IOException e) { - Log.errorFileSync(">>>>>>>>>>>>>>>>>>>回写查询信息结果异常", e); - } - } - - /** - * 根据商品id和仓库id查询库存数量 - * - * @return - */ - public void findStockNumById() { - try { - PageUtil pageUtil = new PageUtil(); - pageUtil.setPageSize(model.getPageSize()); - pageUtil.setCurPage(model.getPageNo()); - pageUtil.setAdvSearch(getConditionById()); - depotItemService.find(pageUtil); - List dataList = pageUtil.getPageList(); - JSONObject outer = new JSONObject(); - outer.put("total", pageUtil.getTotalCount()); - //存放数据json数组 - Integer pid = model.getProjectId(); - JSONArray dataArray = new JSONArray(); - if (null != dataList) { - for (DepotItem depotItem : dataList) { - JSONObject item = new JSONObject(); - Integer prevSum = sumNumber("入库", pid, depotItem.getMaterialId().getId(), model.getMonthTime(), true) - sumNumber("出库", pid, depotItem.getMaterialId().getId(), model.getMonthTime(), true); - Integer InSum = sumNumber("入库", pid, depotItem.getMaterialId().getId(), model.getMonthTime(), false); - Integer OutSum = sumNumber("出库", pid, depotItem.getMaterialId().getId(), model.getMonthTime(), false); - item.put("MaterialId", depotItem.getMaterialId() == null ? "" : depotItem.getMaterialId().getId()); - item.put("MaterialName", depotItem.getMaterialId().getName()); - item.put("MaterialModel", depotItem.getMaterialId().getModel()); - item.put("thisSum", prevSum + InSum - OutSum); - dataArray.add(item); - } - } - outer.put("rows", dataArray); - //回写查询结果 - toClient(outer.toString()); - } catch (DataAccessException e) { - Log.errorFileSync(">>>>>>>>>>>>>>>>>>>查找信息异常", e); - } catch (IOException e) { - Log.errorFileSync(">>>>>>>>>>>>>>>>>>>回写查询信息结果异常", e); - } - } - - /** - * 只根据商品id查询库存数量 - * - * @return - */ - public void findStockNumByMaterialId() { - try { - PageUtil pageUtil = new PageUtil(); - pageUtil.setPageSize(model.getPageSize()); - pageUtil.setCurPage(model.getPageNo()); - pageUtil.setAdvSearch(getConditionById()); - depotItemService.find(pageUtil); - List dataList = pageUtil.getPageList(); - JSONObject outer = new JSONObject(); - outer.put("total", pageUtil.getTotalCount()); - //存放数据json数组 - JSONArray dataArray = new JSONArray(); - if (null != dataList) { - for (DepotItem depotItem : dataList) { - JSONObject item = new JSONObject(); - Integer InSum = sumNumberByMaterialId("入库", depotItem.getMaterialId().getId()); - Integer OutSum = sumNumberByMaterialId("出库", depotItem.getMaterialId().getId()); - item.put("MaterialId", depotItem.getMaterialId() == null ? "" : depotItem.getMaterialId().getId()); - item.put("MaterialName", depotItem.getMaterialId().getName()); - item.put("MaterialModel", depotItem.getMaterialId().getModel()); - item.put("thisSum", InSum - OutSum); - dataArray.add(item); - } - } - outer.put("rows", dataArray); - //回写查询结果 - toClient(outer.toString()); - } catch (DataAccessException e) { - Log.errorFileSync(">>>>>>>>>>>>>>>>>>>查找信息异常", e); - } catch (IOException e) { - Log.errorFileSync(">>>>>>>>>>>>>>>>>>>回写查询信息结果异常", e); - } - } - - /** - * 只根据商品id查询单据列表 - * - * @return - */ - public void findDetailByTypeAndMaterialId() { - try { - PageUtil pageUtil = new PageUtil(); - pageUtil.setPageSize(model.getPageSize()); - pageUtil.setCurPage(model.getPageNo()); - Long mId = model.getMaterialId(); - depotItemService.findDetailByTypeAndMaterialId(pageUtil, mId); - List dataList = pageUtil.getPageList(); - JSONObject outer = new JSONObject(); - outer.put("total", pageUtil.getTotalCount()); - //存放数据json数组 - JSONArray dataArray = new JSONArray(); - if (dataList != null) { - for (Integer i = 0; i < dataList.size(); i++) { - JSONObject item = new JSONObject(); - Object dl = dataList.get(i); //获取对象 - Object[] arr = (Object[]) dl; //转为数组 - item.put("Number", arr[0]); //商品编号 - item.put("Type", arr[1]); //进出类型 - item.put("BasicNumber", arr[2]); //数量 - item.put("OperTime", arr[3]); //时间 - dataArray.add(item); - } - } - outer.put("rows", dataArray); - //回写查询结果 - toClient(outer.toString()); - } catch (IOException e) { - Log.errorFileSync(">>>>>>>>>>>>>>>>>>>回写查询信息结果异常", e); - } catch (JshException e) { - e.printStackTrace(); - } - } - - /** - * 查找礼品卡信息 - * - * @return - */ - public void findGiftByAll() { - try { - PageUtil pageUtil = new PageUtil(); - pageUtil.setPageSize(model.getPageSize()); - pageUtil.setCurPage(model.getPageNo()); - pageUtil.setAdvSearch(getConditionALL()); - depotItemService.find(pageUtil); - List dataList = pageUtil.getPageList(); - String mpList = model.getMpList(); //商品属性 - String[] mpArr = mpList.split(","); - JSONObject outer = new JSONObject(); - outer.put("total", pageUtil.getTotalCount()); - //存放数据json数组 - Integer pid = model.getProjectId(); - JSONArray dataArray = new JSONArray(); - if (null != dataList) { - for (DepotItem depotItem : dataList) { - JSONObject item = new JSONObject(); - Integer InSum = sumNumberGift("礼品充值", pid, depotItem.getMaterialId().getId(), "in"); - Integer OutSum = sumNumberGift("礼品销售", pid, depotItem.getMaterialId().getId(), "out"); - item.put("Id", depotItem.getId()); - item.put("MaterialId", depotItem.getMaterialId() == null ? "" : depotItem.getMaterialId().getId()); - item.put("MaterialName", depotItem.getMaterialId().getName()); - item.put("MaterialModel", depotItem.getMaterialId().getModel()); - //扩展信息 - String materialOther = getOtherInfo(mpArr, depotItem); - item.put("MaterialOther", materialOther); - item.put("MaterialColor", depotItem.getMaterialId().getColor()); - item.put("MaterialUnit", depotItem.getMaterialId().getUnit()); - item.put("thisSum", InSum - OutSum); - dataArray.add(item); - } - } - outer.put("rows", dataArray); - //回写查询结果 - toClient(outer.toString()); - } catch (DataAccessException e) { - Log.errorFileSync(">>>>>>>>>>>>>>>>>>>查找信息异常", e); - } catch (IOException e) { - Log.errorFileSync(">>>>>>>>>>>>>>>>>>>回写查询信息结果异常", e); - } - } - - /** - * 进货统计 - * - * @return - */ - public void buyIn() { - try { - PageUtil pageUtil = new PageUtil(); - pageUtil.setPageSize(model.getPageSize()); - pageUtil.setCurPage(model.getPageNo()); - pageUtil.setAdvSearch(getConditionALL()); - depotItemService.find(pageUtil); - List dataList = pageUtil.getPageList(); - String mpList = model.getMpList(); //商品属性 - String[] mpArr = mpList.split(","); - JSONObject outer = new JSONObject(); - outer.put("total", pageUtil.getTotalCount()); - //存放数据json数组 - JSONArray dataArray = new JSONArray(); - if (null != dataList) { - for (DepotItem depotItem : dataList) { - JSONObject item = new JSONObject(); - Integer InSum = sumNumberBuyOrSale("入库", "采购", depotItem.getMaterialId().getId(), model.getMonthTime()); - Integer OutSum = sumNumberBuyOrSale("出库", "采购退货", depotItem.getMaterialId().getId(), model.getMonthTime()); - Double InSumPrice = sumPriceBuyOrSale("入库", "采购", depotItem.getMaterialId().getId(), model.getMonthTime()); - Double OutSumPrice = sumPriceBuyOrSale("出库", "采购退货", depotItem.getMaterialId().getId(), model.getMonthTime()); - item.put("Id", depotItem.getId()); - item.put("MaterialId", depotItem.getMaterialId() == null ? "" : depotItem.getMaterialId().getId()); - item.put("MaterialName", depotItem.getMaterialId().getName()); - item.put("MaterialModel", depotItem.getMaterialId().getModel()); - //扩展信息 - String materialOther = getOtherInfo(mpArr, depotItem); - item.put("MaterialOther", materialOther); - item.put("MaterialColor", depotItem.getMaterialId().getColor()); - item.put("MaterialUnit", depotItem.getMaterialId().getUnit()); - item.put("InSum", InSum); - item.put("OutSum", OutSum); - item.put("InSumPrice", InSumPrice); - item.put("OutSumPrice", OutSumPrice); - dataArray.add(item); - } - } - outer.put("rows", dataArray); - //回写查询结果 - toClient(outer.toString()); - } catch (DataAccessException e) { - Log.errorFileSync(">>>>>>>>>>>>>>>>>>>查找信息异常", e); - } catch (IOException e) { - Log.errorFileSync(">>>>>>>>>>>>>>>>>>>回写查询信息结果异常", e); - } - } - - /** - * 销售统计 - * - * @return - */ - public void saleOut() { - try { - PageUtil pageUtil = new PageUtil(); - pageUtil.setPageSize(model.getPageSize()); - pageUtil.setCurPage(model.getPageNo()); - pageUtil.setAdvSearch(getConditionALL()); - depotItemService.find(pageUtil); - List dataList = pageUtil.getPageList(); - String mpList = model.getMpList(); //商品属性 - String[] mpArr = mpList.split(","); - JSONObject outer = new JSONObject(); - outer.put("total", pageUtil.getTotalCount()); - //存放数据json数组 - JSONArray dataArray = new JSONArray(); - if (null != dataList) { - for (DepotItem depotItem : dataList) { - JSONObject item = new JSONObject(); - Integer OutSumRetail = sumNumberBuyOrSale("出库", "零售", depotItem.getMaterialId().getId(), model.getMonthTime()); - Integer OutSum = sumNumberBuyOrSale("出库", "销售", depotItem.getMaterialId().getId(), model.getMonthTime()); - Integer InSumRetail = sumNumberBuyOrSale("入库", "零售退货", depotItem.getMaterialId().getId(), model.getMonthTime()); - Integer InSum = sumNumberBuyOrSale("入库", "销售退货", depotItem.getMaterialId().getId(), model.getMonthTime()); - Double OutSumRetailPrice = sumPriceBuyOrSale("出库", "零售", depotItem.getMaterialId().getId(), model.getMonthTime()); - Double OutSumPrice = sumPriceBuyOrSale("出库", "销售", depotItem.getMaterialId().getId(), model.getMonthTime()); - Double InSumRetailPrice = sumPriceBuyOrSale("入库", "零售退货", depotItem.getMaterialId().getId(), model.getMonthTime()); - Double InSumPrice = sumPriceBuyOrSale("入库", "销售退货", depotItem.getMaterialId().getId(), model.getMonthTime()); - item.put("Id", depotItem.getId()); - item.put("MaterialId", depotItem.getMaterialId() == null ? "" : depotItem.getMaterialId().getId()); - item.put("MaterialName", depotItem.getMaterialId().getName()); - item.put("MaterialModel", depotItem.getMaterialId().getModel()); - //扩展信息 - String materialOther = getOtherInfo(mpArr, depotItem); - item.put("MaterialOther", materialOther); - item.put("MaterialColor", depotItem.getMaterialId().getColor()); - item.put("MaterialUnit", depotItem.getMaterialId().getUnit()); - item.put("OutSum", OutSumRetail + OutSum); - item.put("InSum", InSumRetail + InSum); - item.put("OutSumPrice", OutSumRetailPrice + OutSumPrice); - item.put("InSumPrice", InSumRetailPrice + InSumPrice); - dataArray.add(item); - } - } - outer.put("rows", dataArray); - //回写查询结果 - toClient(outer.toString()); - } catch (DataAccessException e) { - Log.errorFileSync(">>>>>>>>>>>>>>>>>>>查找信息异常", e); - } catch (IOException e) { - Log.errorFileSync(">>>>>>>>>>>>>>>>>>>回写查询信息结果异常", e); - } - } - - /** - * 统计总计金额 - * - * @return - */ - public void totalCountMoney() { - try { - PageUtil pageUtil = new PageUtil(); - pageUtil.setPageSize(0); - pageUtil.setCurPage(0); - pageUtil.setAdvSearch(getConditionALL()); - depotItemService.find(pageUtil); - List dataList = pageUtil.getPageList(); - - JSONObject outer = new JSONObject(); - Integer pid = model.getProjectId(); - Double thisAllPrice = 0.0; - if (null != dataList) { - for (DepotItem depotItem : dataList) { - Double prevPrice = sumPrice("入库", pid, depotItem.getMaterialId().getId(), model.getMonthTime(), true) - sumPrice("出库", pid, depotItem.getMaterialId().getId(), model.getMonthTime(), true); - Double InPrice = sumPrice("入库", pid, depotItem.getMaterialId().getId(), model.getMonthTime(), false); - Double OutPrice = sumPrice("出库", pid, depotItem.getMaterialId().getId(), model.getMonthTime(), false); - thisAllPrice = thisAllPrice + (prevPrice + InPrice - OutPrice); - } - } - outer.put("totalCount", thisAllPrice); - //回写查询结果 - toClient(outer.toString()); - } catch (DataAccessException e) { - Log.errorFileSync(">>>>>>>>>>>>>>>>>>>查找信息异常", e); - } catch (IOException e) { - Log.errorFileSync(">>>>>>>>>>>>>>>>>>>回写查询信息结果异常", e); - } - } - - /** - * 导出excel表格 - * - * @return - */ - @SuppressWarnings("unchecked") - public String exportExcel() { - Log.infoFileSync("===================调用导出信息action方法exportExcel开始======================="); - try { - PageUtil pageUtil = new PageUtil(); - pageUtil.setPageSize(model.getPageSize()); - pageUtil.setCurPage(model.getPageNo()); - pageUtil.setAdvSearch(getConditionALL()); - depotItemService.find(pageUtil); - List dataList = pageUtil.getPageList(); - - //存放数据json数组 - Integer pid = model.getProjectId(); - JSONArray dataArray = new JSONArray(); - if (null != dataList) { - for (DepotItem depotItem : dataList) { - JSONObject item = new JSONObject(); - Integer prevSum = sumNumber("入库", pid, depotItem.getMaterialId().getId(), model.getMonthTime(), true) - sumNumber("出库", pid, depotItem.getMaterialId().getId(), model.getMonthTime(), true); - Integer InSum = sumNumber("入库", pid, depotItem.getMaterialId().getId(), model.getMonthTime(), false); - Integer OutSum = sumNumber("出库", pid, depotItem.getMaterialId().getId(), model.getMonthTime(), false); - Double prevPrice = sumPrice("入库", pid, depotItem.getMaterialId().getId(), model.getMonthTime(), true) - sumPrice("出库", pid, depotItem.getMaterialId().getId(), model.getMonthTime(), true); - Double InPrice = sumPrice("入库", pid, depotItem.getMaterialId().getId(), model.getMonthTime(), false); - Double OutPrice = sumPrice("出库", pid, depotItem.getMaterialId().getId(), model.getMonthTime(), false); - Double unitPrice = 0.0; - if (prevSum + InSum - OutSum != 0) { - unitPrice = (prevPrice + InPrice - OutPrice) / (prevSum + InSum - OutSum); - } - item.put("Id", depotItem.getId()); - item.put("MaterialId", depotItem.getMaterialId() == null ? "" : depotItem.getMaterialId().getId()); - item.put("MaterialName", depotItem.getMaterialId().getName()); - item.put("MaterialModel", depotItem.getMaterialId().getModel()); - item.put("MaterialStandard", depotItem.getMaterialId().getStandard()); - item.put("MaterialColor", depotItem.getMaterialId().getColor()); - item.put("MaterialUnit", depotItem.getMaterialId().getUnit()); - item.put("UnitPrice", unitPrice); - item.put("prevSum", prevSum); - item.put("InSum", InSum); - item.put("OutSum", OutSum); - item.put("thisSum", prevSum + InSum - OutSum); - item.put("thisAllPrice", prevPrice + InPrice - OutPrice); - dataArray.add(item); - } - } - String isCurrentPage = "allPage"; - model.setFileName(Tools.changeUnicode("report.xls", model.getBrowserType())); - model.setExcelStream(depotItemService.exmportExcel(isCurrentPage, dataArray)); - } catch (Exception e) { - Log.errorFileSync(">>>>>>>>>>>>>>>>>>>>>>调用导出信息action方法exportExcel异常", e); - model.getShowModel().setMsgTip("export excel exception"); - } - Log.infoFileSync("===================调用导出信息action方法exportExcel结束=================="); - return EXCEL; - } - - /** - * 数量合计 - * - * @param type - * @param MId - * @param MonthTime - * @param isPrev - * @return - */ - @SuppressWarnings("unchecked") - public Integer sumNumber(String type, Integer ProjectId, Long MId, String MonthTime, Boolean isPrev) { - Integer sumNumber = 0; - String allNumber = ""; - PageUtil pageUtil = new PageUtil(); - pageUtil.setPageSize(0); - pageUtil.setCurPage(0); - try { - depotItemService.findByType(pageUtil, type, ProjectId, MId, MonthTime, isPrev); - allNumber = pageUtil.getPageList().toString(); - allNumber = allNumber.substring(1, allNumber.length() - 1); - if (allNumber.equals("null")) { - allNumber = "0"; - } - allNumber = allNumber.replace(".0", ""); - } catch (JshException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - sumNumber = Integer.parseInt(allNumber); - return sumNumber; - } - - /** - * 仅根据商品Id进行数量合计 - * - * @param type - * @param MId - * @return - */ - @SuppressWarnings("unchecked") - public Integer sumNumberByMaterialId(String type, Long MId) { - Integer sumNumber = 0; - String allNumber = ""; - PageUtil pageUtil = new PageUtil(); - pageUtil.setPageSize(0); - pageUtil.setCurPage(0); - try { - depotItemService.findByTypeAndMaterialId(pageUtil, type, MId); - allNumber = pageUtil.getPageList().toString(); - allNumber = allNumber.substring(1, allNumber.length() - 1); - if (allNumber.equals("null")) { - allNumber = "0"; - } - allNumber = allNumber.replace(".0", ""); - } catch (JshException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - sumNumber = Integer.parseInt(allNumber); - return sumNumber; - } - - /** - * 数量合计-礼品卡 - * - * @param type - * @param MId - * @param MonthTime - * @param isPrev - * @return - */ - @SuppressWarnings("unchecked") - public Integer sumNumberGift(String subType, Integer ProjectId, Long MId, String type) { - Integer sumNumber = 0; - String allNumber = ""; - PageUtil pageUtil = new PageUtil(); - pageUtil.setPageSize(0); - pageUtil.setCurPage(0); - try { - depotItemService.findGiftByType(pageUtil, subType, ProjectId, MId, type); - allNumber = pageUtil.getPageList().toString(); - allNumber = allNumber.substring(1, allNumber.length() - 1); - if (allNumber.equals("null")) { - allNumber = "0"; - } - allNumber = allNumber.replace(".0", ""); - } catch (JshException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - sumNumber = Integer.parseInt(allNumber); - return sumNumber; - } - - /** - * 价格合计 - * - * @param type - * @param MId - * @param MonthTime - * @param isPrev - * @return - */ - @SuppressWarnings("unchecked") - public Double sumPrice(String type, Integer ProjectId, Long MId, String MonthTime, Boolean isPrev) { - Double sumPrice = 0.0; - String allPrice = ""; - PageUtil pageUtil = new PageUtil(); - pageUtil.setPageSize(0); - pageUtil.setCurPage(0); - try { - depotItemService.findPriceByType(pageUtil, type, ProjectId, MId, MonthTime, isPrev); - allPrice = pageUtil.getPageList().toString(); - allPrice = allPrice.substring(1, allPrice.length() - 1); - if (allPrice.equals("null")) { - allPrice = "0"; - } - allPrice = allPrice.replace(".0", ""); - } catch (JshException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - sumPrice = Double.parseDouble(allPrice); - return sumPrice; - } - - @SuppressWarnings("unchecked") - public Integer sumNumberBuyOrSale(String type, String subType, Long MId, String MonthTime) { - Integer sumNumber = 0; - String allNumber = ""; - String sumType = "Number"; - PageUtil pageUtil = new PageUtil(); - pageUtil.setPageSize(0); - pageUtil.setCurPage(0); - try { - depotItemService.buyOrSale(pageUtil, type, subType, MId, MonthTime, sumType); - allNumber = pageUtil.getPageList().toString(); - allNumber = allNumber.substring(1, allNumber.length() - 1); - if (allNumber.equals("null")) { - allNumber = "0"; - } - allNumber = allNumber.replace(".0", ""); - } catch (JshException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - sumNumber = Integer.parseInt(allNumber); - return sumNumber; - } - - @SuppressWarnings("unchecked") - public Double sumPriceBuyOrSale(String type, String subType, Long MId, String MonthTime) { - Double sumPrice = 0.0; - String allPrice = ""; - String sumType = "Price"; - PageUtil pageUtil = new PageUtil(); - pageUtil.setPageSize(0); - pageUtil.setCurPage(0); - try { - depotItemService.buyOrSale(pageUtil, type, subType, MId, MonthTime, sumType); - allPrice = pageUtil.getPageList().toString(); - allPrice = allPrice.substring(1, allPrice.length() - 1); - if (allPrice.equals("null")) { - allPrice = "0"; - } - allPrice = allPrice.replace(".0", ""); - } catch (JshException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - sumPrice = Double.parseDouble(allPrice); - return sumPrice; - } - - /** - * 获取扩展信息 - * - * @return - */ - public String getOtherInfo(String[] mpArr, DepotItem depotItem) { - String materialOther = ""; - for (int i = 0; i < mpArr.length; i++) { - if (mpArr[i].equals("颜色")) { - materialOther = materialOther + ((depotItem.getMaterialId().getColor() == null || depotItem.getMaterialId().getColor().equals("")) ? "" : "(" + depotItem.getMaterialId().getColor() + ")"); - } - if (mpArr[i].equals("规格")) { - materialOther = materialOther + ((depotItem.getMaterialId().getStandard() == null || depotItem.getMaterialId().getStandard().equals("")) ? "" : "(" + depotItem.getMaterialId().getStandard() + ")"); - } - if (mpArr[i].equals("制造商")) { - materialOther = materialOther + ((depotItem.getMaterialId().getMfrs() == null || depotItem.getMaterialId().getMfrs().equals("")) ? "" : "(" + depotItem.getMaterialId().getMfrs() + ")"); - } - if (mpArr[i].equals("自定义1")) { - materialOther = materialOther + ((depotItem.getMaterialId().getOtherField1() == null || depotItem.getMaterialId().getOtherField1().equals("")) ? "" : "(" + depotItem.getMaterialId().getOtherField1() + ")"); - } - if (mpArr[i].equals("自定义2")) { - materialOther = materialOther + ((depotItem.getMaterialId().getOtherField2() == null || depotItem.getMaterialId().getOtherField2().equals("")) ? "" : "(" + depotItem.getMaterialId().getOtherField2() + ")"); - } - if (mpArr[i].equals("自定义3")) { - materialOther = materialOther + ((depotItem.getMaterialId().getOtherField3() == null || depotItem.getMaterialId().getOtherField3().equals("")) ? "" : "(" + depotItem.getMaterialId().getOtherField3() + ")"); - } - } - return materialOther; - } - - /** - * 拼接搜索条件 - * - * @return - */ - private Map getCondition() { - /** - * 拼接搜索条件 - */ - Map condition = new HashMap(); - condition.put("HeaderId_n_eq", model.getHeaderId()); - condition.put("Id_s_order", "asc"); - return condition; - } - - private Map getConditionALL() { - /** - * 拼接搜索条件 - */ - Map condition = new HashMap(); - condition.put("HeaderId_s_in", model.getHeadIds()); - condition.put("MaterialId_s_in", model.getMaterialIds()); - condition.put("MaterialId_s_gb", "aaa"); - return condition; - } - - private Map getConditionById() { - /** - * 拼接搜索条件 - */ - Map condition = new HashMap(); - condition.put("MaterialId_n_eq", model.getMaterialId()); - return condition; - } - - //=============以下spring注入以及Model驱动公共方法,与Action处理无关================== - @Override - public DepotItemModel getModel() { - return model; - } - - public void setDepotItemService(DepotItemIService depotItemService) { - this.depotItemService = depotItemService; - } - - public void setMaterialService(MaterialIService materialService) { - this.materialService = materialService; - } -} diff --git a/src/main/java/com/jsh/action/materials/MaterialAction.java b/src/main/java/com/jsh/action/materials/MaterialAction.java deleted file mode 100644 index cea03a7d..00000000 --- a/src/main/java/com/jsh/action/materials/MaterialAction.java +++ /dev/null @@ -1,666 +0,0 @@ -package com.jsh.action.materials; - -import com.jsh.base.BaseAction; -import com.jsh.base.Log; -import com.jsh.model.po.Logdetails; -import com.jsh.model.po.Material; -import com.jsh.model.po.MaterialCategory; -import com.jsh.model.po.Unit; -import com.jsh.model.vo.materials.MaterialModel; -import com.jsh.service.materials.MaterialIService; -import com.jsh.util.JshException; -import com.jsh.util.MaterialConstants; -import com.jsh.util.PageUtil; -import com.jsh.util.Tools; -import net.sf.json.JSONArray; -import net.sf.json.JSONObject; -import org.springframework.dao.DataAccessException; - -import java.io.IOException; -import java.io.InputStream; -import java.sql.Timestamp; -import java.util.Calendar; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -/* - * 商品管理 - * @author jishenghua qq:752718920 - */ -@SuppressWarnings("serial") -public class MaterialAction extends BaseAction { - public static final String EXCEL = "excel"; //action返回excel结果 - private MaterialIService materialService; - private MaterialModel model = new MaterialModel(); - - /** - * 增加商品 - * - * @return - */ - public void create() { - Log.infoFileSync("==================开始调用增加商品信息方法create()==================="); - Boolean flag = false; - try { - Material material = new Material(); - material.setMaterialCategory(new MaterialCategory(model.getCategoryId())); - - material.setName(model.getName()); - material.setMfrs(model.getMfrs()); - material.setPacking(model.getPacking()); - material.setSafetyStock(model.getSafetyStock()); - material.setModel(model.getModel()); - material.setStandard(model.getStandard()); - material.setColor(model.getColor()); - material.setUnit(model.getUnit()); - material.setRetailPrice(model.getRetailPrice()); - material.setLowPrice(model.getLowPrice()); - material.setPresetPriceOne(model.getPresetPriceOne()); - material.setPresetPriceTwo(model.getPresetPriceTwo()); - if (model.getUnitId() != null) { - material.setUnitId(new Unit(model.getUnitId())); - } else { - material.setUnitId(null); - } - material.setFirstOutUnit(model.getFirstOutUnit()); - material.setFirstInUnit(model.getFirstInUnit()); - material.setPriceStrategy(model.getPriceStrategy()); - material.setRemark(model.getRemark()); - material.setEnabled(model.getEnabled()); - material.setOtherField1(model.getOtherField1()); - material.setOtherField2(model.getOtherField2()); - material.setOtherField3(model.getOtherField3()); - materialService.create(material); - - //========标识位=========== - flag = true; - //记录操作日志使用 - tipMsg = "成功"; - tipType = 0; - } catch (DataAccessException e) { - Log.errorFileSync(">>>>>>>>>>>>>>>>>>>增加商品信息异常", e); - flag = false; - tipMsg = "失败"; - tipType = 1; - } finally { - try { - toClient(flag.toString()); - } catch (IOException e) { - Log.errorFileSync(">>>>>>>>>>>>增加商品信息回写客户端结果异常", e); - } - } - - logService.create(new Logdetails(getUser(), "增加商品", model.getClientIp(), - new Timestamp(System.currentTimeMillis()) - , tipType, "增加商品名称为 " + model.getName() + " " + tipMsg + "!", "增加商品" + tipMsg)); - Log.infoFileSync("==================结束调用增加商品方法create()==================="); - } - - /** - * 删除商品 - * - * @return - */ - public String delete() { - Log.infoFileSync("====================开始调用删除商品信息方法delete()================"); - try { - materialService.delete(model.getMaterialID()); - tipMsg = "成功"; - tipType = 0; - } catch (DataAccessException e) { - Log.errorFileSync(">>>>>>>>>>>删除ID为 " + model.getMaterialID() + " 的商品异常", e); - tipMsg = "失败"; - tipType = 1; - } - model.getShowModel().setMsgTip(tipMsg); - logService.create(new Logdetails(getUser(), "删除商品", model.getClientIp(), - new Timestamp(System.currentTimeMillis()) - , tipType, "删除商品ID为 " + model.getMaterialID() + " " + tipMsg + "!", "删除商品" + tipMsg)); - Log.infoFileSync("====================结束调用删除商品信息方法delete()================"); - return SUCCESS; - } - - /** - * 更新商品 - * - * @return - */ - public void update() { - Boolean flag = false; - try { - Material material = materialService.get(model.getMaterialID()); - material.setMaterialCategory(new MaterialCategory(model.getCategoryId())); - - material.setName(model.getName()); - material.setMfrs(model.getMfrs()); - material.setPacking(model.getPacking()); - material.setSafetyStock(model.getSafetyStock()); - material.setModel(model.getModel()); - material.setStandard(model.getStandard()); - material.setColor(model.getColor()); - material.setUnit(model.getUnit()); - material.setRetailPrice(model.getRetailPrice()); - material.setLowPrice(model.getLowPrice()); - material.setPresetPriceOne(model.getPresetPriceOne()); - material.setPresetPriceTwo(model.getPresetPriceTwo()); - if (model.getUnitId() != null) { - material.setUnitId(new Unit(model.getUnitId())); - } else { - material.setUnitId(null); - } - material.setFirstOutUnit(model.getFirstOutUnit()); - material.setFirstInUnit(model.getFirstInUnit()); - material.setPriceStrategy(model.getPriceStrategy()); - material.setRemark(model.getRemark()); - material.setOtherField1(model.getOtherField1()); - material.setOtherField2(model.getOtherField2()); - material.setOtherField3(model.getOtherField3()); - materialService.update(material); - - flag = true; - tipMsg = "成功"; - tipType = 0; - } catch (DataAccessException e) { - Log.errorFileSync(">>>>>>>>>>>>>修改商品ID为 : " + model.getMaterialID() + "信息失败", e); - flag = false; - tipMsg = "失败"; - tipType = 1; - } finally { - try { - toClient(flag.toString()); - } catch (IOException e) { - Log.errorFileSync(">>>>>>>>>>>>修改商品回写客户端结果异常", e); - } - } - logService.create(new Logdetails(getUser(), "更新商品", model.getClientIp(), - new Timestamp(System.currentTimeMillis()) - , tipType, "更新商品ID为 " + model.getMaterialID() + " " + tipMsg + "!", "更新商品" + tipMsg)); - } - - /** - * 批量删除指定ID商品 - * - * @return - */ - public String batchDelete() { - try { - materialService.batchDelete(model.getMaterialIDs()); - model.getShowModel().setMsgTip("成功"); - //记录操作日志使用 - tipMsg = "成功"; - tipType = 0; - } catch (DataAccessException e) { - Log.errorFileSync(">>>>>>>>>>>批量删除商品ID为:" + model.getMaterialIDs() + "信息异常", e); - tipMsg = "失败"; - tipType = 1; - } - - logService.create(new Logdetails(getUser(), "批量删除商品", model.getClientIp(), - new Timestamp(System.currentTimeMillis()) - , tipType, "批量删除商品ID为 " + model.getMaterialIDs() + " " + tipMsg + "!", "批量删除商品" + tipMsg)); - return SUCCESS; - } - - /** - * 批量设置状态-启用或者禁用 - * - * @return - */ - public String batchSetEnable() { - try { - materialService.batchSetEnable(model.getEnabled(), model.getMaterialIDs()); - model.getShowModel().setMsgTip("成功"); - //记录操作日志使用 - tipMsg = "成功"; - tipType = 0; - } catch (DataAccessException e) { - Log.errorFileSync(">>>>>>>>>>>批量修改状态,商品ID为:" + model.getMaterialIDs() + "信息异常", e); - tipMsg = "失败"; - tipType = 1; - } - - logService.create(new Logdetails(getUser(), "批量修改商品状态", model.getClientIp(), - new Timestamp(System.currentTimeMillis()) - , tipType, "批量修改状态,商品ID为 " + model.getMaterialIDs() + " " + tipMsg + "!", "批量修改商品状态" + tipMsg)); - return SUCCESS; - } - - /** - * 查找该商品是否存在 - * - * @return - */ - public void checkIsExist() { - try { - Boolean flag = false; - PageUtil pageUtil = new PageUtil(); - pageUtil.setPageSize(0); - pageUtil.setCurPage(0); - pageUtil.setAdvSearch(getConditionCheckIsExist()); - materialService.find(pageUtil); - List dataList = pageUtil.getPageList(); - if (null != dataList && dataList.size() > 0) { - flag = true; - } else { - flag = false; - } - //回写查询结果 - toClient(flag.toString()); - } catch (DataAccessException e) { - Log.errorFileSync(">>>>>>>>>>>>>>>>>>>查找商品信息异常", e); - } catch (IOException e) { - Log.errorFileSync(">>>>>>>>>>>>>>>>>>>回写查询商品信息结果异常", e); - } - } - - /** - * 查找商品信息 - * - * @return - */ - public void findBy() { - try { - PageUtil pageUtil = new PageUtil(); - pageUtil.setPageSize(model.getPageSize()); - pageUtil.setCurPage(model.getPageNo()); - Long lei = model.getCategoryId(); - if (1 == lei) //判断值还真不能用String类型的判断 - { - pageUtil.setAdvSearch(getCondition_all()); - } else if (1 != lei) { - pageUtil.setAdvSearch(getCondition()); - } - materialService.find(pageUtil); - getSession().put("pageUtilMaterial", pageUtil); - List dataList = pageUtil.getPageList(); - String mpList = model.getMpList(); //商品属性 - String[] mpArr = mpList.split(","); - JSONObject outer = new JSONObject(); - outer.put("total", pageUtil.getTotalCount()); - //存放数据json数组 - JSONArray dataArray = new JSONArray(); - if (null != dataList) { - for (Material material : dataList) { - JSONObject item = new JSONObject(); - item.put("Id", material.getId()); - item.put("Name", material.getName()); - item.put("CategoryId", material.getMaterialCategory().getId()); //类型Id - item.put("CategoryName", material.getMaterialCategory().getName()); //类型名称 - item.put("Packing", material.getPacking() == null ? "" : material.getPacking()); - item.put("SafetyStock", material.getSafetyStock() == null ? "" : material.getSafetyStock()); - item.put("Model", material.getModel() == null ? "" : material.getModel()); - //扩展信息 - String materialOther = ""; - for (int i = 0; i < mpArr.length; i++) { - if (mpArr[i].equals("颜色")) { - materialOther = materialOther + ((material.getColor() == null || material.getColor().equals("")) ? "" : "(" + material.getColor() + ")"); - } - if (mpArr[i].equals("规格")) { - materialOther = materialOther + ((material.getStandard() == null || material.getStandard().equals("")) ? "" : "(" + material.getStandard() + ")"); - } - if (mpArr[i].equals("制造商")) { - materialOther = materialOther + ((material.getMfrs() == null || material.getMfrs().equals("")) ? "" : "(" + material.getMfrs() + ")"); - } - if (mpArr[i].equals("自定义1")) { - materialOther = materialOther + ((material.getOtherField1() == null || material.getOtherField1().equals("")) ? "" : "(" + material.getOtherField1() + ")"); - } - if (mpArr[i].equals("自定义2")) { - materialOther = materialOther + ((material.getOtherField2() == null || material.getOtherField2().equals("")) ? "" : "(" + material.getOtherField2() + ")"); - } - if (mpArr[i].equals("自定义3")) { - materialOther = materialOther + ((material.getOtherField3() == null || material.getOtherField3().equals("")) ? "" : "(" + material.getOtherField3() + ")"); - } - } - item.put("MaterialOther", materialOther); - item.put("Unit", material.getUnit() == null ? "" : material.getUnit()); - item.put("RetailPrice", material.getRetailPrice()); - item.put("LowPrice", material.getLowPrice()); - item.put("PresetPriceOne", material.getPresetPriceOne() == null ? "" : material.getPresetPriceOne()); - item.put("PresetPriceTwo", material.getPresetPriceTwo() == null ? "" : material.getPresetPriceTwo()); - item.put("UnitId", material.getUnitId() == null ? "" : material.getUnitId().getId()); //计量单位Id - item.put("UnitName", material.getUnitId() == null ? "" : material.getUnitId().getUName()); //计量单位名称 - item.put("FirstOutUnit", material.getFirstOutUnit()); - item.put("FirstInUnit", material.getFirstInUnit()); - item.put("PriceStrategy", material.getPriceStrategy()); - item.put("Enabled", material.getEnabled()); - item.put("Remark", material.getRemark()); - item.put("Color", material.getColor() == null ? "" : material.getColor()); - item.put("Standard", material.getStandard() == null ? "" : material.getStandard()); - item.put("Mfrs", material.getMfrs() == null ? "" : material.getMfrs()); - item.put("OtherField1", material.getOtherField1() == null ? "" : material.getOtherField1()); - item.put("OtherField2", material.getOtherField2() == null ? "" : material.getOtherField2()); - item.put("OtherField3", material.getOtherField3() == null ? "" : material.getOtherField3()); - item.put("op", 1); - dataArray.add(item); - } - } - outer.put("rows", dataArray); - //回写查询结果 - toClient(outer.toString()); - } catch (DataAccessException e) { - Log.errorFileSync(">>>>>>>>>>>>>>>>>>>查找商品信息异常", e); - } catch (IOException e) { - Log.errorFileSync(">>>>>>>>>>>>>>>>>>>回写查询商品信息结果异常", e); - } - } - - /** - * 根据id来查询商品名称 - * - * @return - */ - public void findById() { - try { - PageUtil pageUtil = new PageUtil(); - pageUtil.setAdvSearch(getConditionById()); - materialService.find(pageUtil); - List dataList = pageUtil.getPageList(); - JSONObject outer = new JSONObject(); - outer.put("total", pageUtil.getTotalCount()); - //存放数据json数组 - JSONArray dataArray = new JSONArray(); - if (null != dataList) { - for (Material material : dataList) { - JSONObject item = new JSONObject(); - item.put("Id", material.getId()); - item.put("Name", material.getName()); - item.put("Mfrs", material.getMfrs() == null ? "" : material.getMfrs()); - item.put("Packing", material.getPacking() == null ? "" : material.getPacking()); - item.put("SafetyStock", material.getSafetyStock() == null ? "" : material.getSafetyStock()); - item.put("Model", material.getModel()); - item.put("Standard", material.getStandard()); - item.put("Color", material.getColor() == null ? "" : material.getColor()); - item.put("Unit", material.getUnit()); - item.put("RetailPrice", material.getRetailPrice()); - item.put("LowPrice", material.getLowPrice()); - item.put("PresetPriceOne", material.getPresetPriceOne()); - item.put("PresetPriceTwo", material.getPresetPriceTwo()); - item.put("UnitId", material.getUnitId() == null ? "" : material.getUnitId().getId()); //计量单位Id - item.put("UnitName", material.getUnitId() == null ? "" : material.getUnitId().getUName()); //计量单位名称 - item.put("FirstOutUnit", material.getFirstOutUnit()); - item.put("FirstInUnit", material.getFirstInUnit()); - item.put("PriceStrategy", material.getPriceStrategy()); - item.put("Remark", material.getRemark()); - item.put("op", 1); - dataArray.add(item); - } - } - outer.put("rows", dataArray); - //回写查询结果 - toClient(outer.toString()); - } catch (DataAccessException e) { - Log.errorFileSync(">>>>>>>>>>>>>>>>>>>查找商品信息异常", e); - } catch (IOException e) { - Log.errorFileSync(">>>>>>>>>>>>>>>>>>>回写查询商品信息结果异常", e); - } - } - - /** - * 查找商品信息-下拉框 - * - * @return - */ - public void findBySelect() { - try { - PageUtil pageUtil = new PageUtil(); - pageUtil.setPageSize(0); - pageUtil.setCurPage(0); - pageUtil.setAdvSearch(getCondition_Select()); - materialService.find(pageUtil); - List dataList = pageUtil.getPageList(); - String mpList = model.getMpList(); //商品属性 - String[] mpArr = mpList.split(","); - //存放数据json数组 - JSONArray dataArray = new JSONArray(); - if (null != dataList) { - for (Material material : dataList) { - JSONObject item = new JSONObject(); - item.put("Id", material.getId()); - String ratio; //比例 - if (material.getUnitId() == null || material.getUnitId().equals("")) { - ratio = ""; - } else { - ratio = material.getUnitId().getUName(); - ratio = ratio.substring(ratio.indexOf("(")); - } - //品名/型号/扩展信息/包装 - String MaterialName = material.getName() + ((material.getModel() == null || material.getModel().equals("")) ? "" : "(" + material.getModel() + ")"); - for (int i = 0; i < mpArr.length; i++) { - if (mpArr[i].equals("颜色")) { - MaterialName = MaterialName + ((material.getColor() == null || material.getColor().equals("")) ? "" : "(" + material.getColor() + ")"); - } - if (mpArr[i].equals("规格")) { - MaterialName = MaterialName + ((material.getStandard() == null || material.getStandard().equals("")) ? "" : "(" + material.getStandard() + ")"); - } - if (mpArr[i].equals("制造商")) { - MaterialName = MaterialName + ((material.getMfrs() == null || material.getMfrs().equals("")) ? "" : "(" + material.getMfrs() + ")"); - } - if (mpArr[i].equals("自定义1")) { - MaterialName = MaterialName + ((material.getOtherField1() == null || material.getOtherField1().equals("")) ? "" : "(" + material.getOtherField1() + ")"); - } - if (mpArr[i].equals("自定义2")) { - MaterialName = MaterialName + ((material.getOtherField2() == null || material.getOtherField2().equals("")) ? "" : "(" + material.getOtherField2() + ")"); - } - if (mpArr[i].equals("自定义3")) { - MaterialName = MaterialName + ((material.getOtherField3() == null || material.getOtherField3().equals("")) ? "" : "(" + material.getOtherField3() + ")"); - } - } - MaterialName = MaterialName + ((material.getUnit() == null || material.getUnit().equals("")) ? "" : "(" + material.getUnit() + ")") + ratio; - item.put("MaterialName", MaterialName); - dataArray.add(item); - } - } - //回写查询结果 - toClient(dataArray.toString()); - } catch (DataAccessException e) { - Log.errorFileSync(">>>>>>>>>查找供应商信息异常", e); - } catch (IOException e) { - Log.errorFileSync(">>>>>>>>>回写查询供应商信息结果异常", e); - } catch (Exception e) { - e.printStackTrace(); - } - } - - /** - * 查找商品信息-统计排序 - * - * @return - */ - public void findByOrder() { - try { - PageUtil pageUtil = new PageUtil(); - pageUtil.setPageSize(0); - pageUtil.setCurPage(0); - pageUtil.setAdvSearch(getCondition_Order()); - materialService.find(pageUtil); - List dataList = pageUtil.getPageList(); - //存放数据json数组 - JSONObject outer = new JSONObject(); - String mId = ""; - if (null != dataList) { - for (Material material : dataList) { - mId = mId + material.getId() + ","; - } - } - if (mId != "") { - mId = mId.substring(0, mId.lastIndexOf(",")); - } - outer.put("mIds", mId); - //回写查询结果 - toClient(outer.toString()); - } catch (DataAccessException e) { - Log.errorFileSync(">>>>>>>>>查找供应商信息异常", e); - } catch (IOException e) { - Log.errorFileSync(">>>>>>>>>回写查询供应商信息结果异常", e); - } - } - - /** - * 导入excel表格-供应商 - * - * @return - */ - @SuppressWarnings("unchecked") - public String importExcel() { - //excel表格file - Boolean result = false; - String returnStr = ""; - try { - InputStream in = materialService.importExcel(model.getMaterialFile()); - - if (null != in) { - model.setFileName(Tools.getRandomChar() + Tools.getNow2(Calendar.getInstance().getTime()) + "_wrong.xls"); - model.setExcelStream(in); - returnStr = MaterialConstants.BusinessForExcel.EXCEL; - } else { - result = true; - try { - toClient(result.toString()); - } catch (IOException e) { - Log.errorFileSync(">>>>>>>>>回写导入信息结果异常", e); - } - //导入数据成功 - returnStr = SUCCESS; - } - - } catch (JshException e) { - Log.errorFileSync(">>>>>>>>>>>>>>>>>>>导入excel表格信息异常", e); - } - return returnStr; - } - - /** - * 导出excel表格 - * - * @return - */ - @SuppressWarnings("unchecked") - public String exportExcel() { - Log.infoFileSync("===================调用导出信息action方法exportExcel开始======================="); - try { - String sName = "pageUtilMaterial"; - PageUtil pageUtil = (PageUtil) getSession().get(sName); - pageUtil.setPageSize(model.getPageSize()); - pageUtil.setCurPage(model.getPageNo()); - String isCurrentPage = "allPage"; - model.setFileName(Tools.changeUnicode("goods" + System.currentTimeMillis() + ".xls", model.getBrowserType())); - model.setExcelStream(materialService.exmportExcel(isCurrentPage, pageUtil)); - } catch (Exception e) { - Log.errorFileSync(">>>>>>>>>>>>>>>>>>>>>>调用导出信息action方法exportExcel异常", e); - model.getShowModel().setMsgTip("export excel exception"); - } - Log.infoFileSync("===================调用导出信息action方法exportExcel结束=================="); - return EXCEL; - } - - /** - * 拼接搜索条件(查全部) - * - * @return - */ - private Map getCondition_all() { - /** - * 拼接搜索条件 - */ - Map condition = new HashMap(); - condition.put("Name_s_like", model.getName()); - condition.put("Model_s_like", model.getModel()); - condition.put("Color_s_like", model.getColor()); - condition.put("Id_s_order", "asc"); - return condition; - } - - /** - * 拼接搜索条件 - * - * @return - */ - private Map getCondition() { - /** - * 拼接搜索条件 - */ - Map condition = new HashMap(); - condition.put("Name_s_like", model.getName()); - condition.put("Model_s_like", model.getModel()); - condition.put("Color_s_like", model.getColor()); - condition.put("CategoryId_s_in", model.getCategoryIds()); - condition.put("Id_s_order", "asc"); - return condition; - } - - private Map getConditionCheckIsExist() { - Map condition = new HashMap(); - if (model.getMaterialID() > 0) { - condition.put("ID_n_neq", model.getMaterialID()); - } - condition.put("Name_s_eq", model.getName()); - condition.put("Model_s_eq", model.getModel()); - condition.put("Color_s_eq", model.getColor()); - condition.put("Standard_s_eq", model.getStandard()); - condition.put("Mfrs_s_eq", model.getMfrs()); - condition.put("OtherField1_s_eq", model.getOtherField1()); - condition.put("OtherField2_s_eq", model.getOtherField2()); - condition.put("OtherField3_s_eq", model.getOtherField3()); - if (model.getUnit() != null) { - condition.put("Unit_s_eq", model.getUnit()); - } - if (model.getUnitId() != null) { - condition.put("UnitId_n_eq", model.getUnitId()); - } - return condition; - } - - /** - * 拼接搜索条件 - * - * @return - */ - private Map getConditionById() { - /** - * 拼接搜索条件 - */ - Map condition = new HashMap(); - condition.put("Id_n_eq", model.getMaterialID()); - return condition; - } - - /** - * 拼接搜索条件-下拉框 - * - * @return - */ - private Map getCondition_Select() { - /** - * 拼接搜索条件 - */ - Map condition = new HashMap(); - condition.put("enabled_s_eq", 1); - condition.put("Id_s_order", "asc"); - return condition; - } - - /** - * 拼接搜索条件-下拉框 - * - * @return - */ - private Map getCondition_Order() { - /** - * 拼接搜索条件 - */ - Map condition = new HashMap(); - condition.put("Name,Model_s_order", "asc"); - return condition; - } - - //=============以下spring注入以及Model驱动公共方法,与Action处理无关================== - @Override - public MaterialModel getModel() { - return model; - } - - public void setMaterialService(MaterialIService materialService) { - this.materialService = materialService; - } -} diff --git a/src/main/java/com/jsh/action/materials/MaterialCategoryAction.java b/src/main/java/com/jsh/action/materials/MaterialCategoryAction.java deleted file mode 100644 index 55497855..00000000 --- a/src/main/java/com/jsh/action/materials/MaterialCategoryAction.java +++ /dev/null @@ -1,284 +0,0 @@ -package com.jsh.action.materials; - -import com.jsh.base.BaseAction; -import com.jsh.base.Log; -import com.jsh.model.po.Logdetails; -import com.jsh.model.po.MaterialCategory; -import com.jsh.model.vo.materials.MaterialCategoryModel; -import com.jsh.service.materials.MaterialCategoryIService; -import com.jsh.util.PageUtil; -import net.sf.json.JSONArray; -import net.sf.json.JSONObject; -import org.springframework.dao.DataAccessException; - -import java.io.IOException; -import java.sql.Timestamp; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -/* - * 商品类型管理 - * @author jishenghua qq:752718920 - */ -@SuppressWarnings("serial") -public class MaterialCategoryAction extends BaseAction { - private MaterialCategoryIService materialCategoryService; - private MaterialCategoryModel model = new MaterialCategoryModel(); - - - @SuppressWarnings({"rawtypes", "unchecked"}) - public String getBasicData() { - Map mapData = model.getShowModel().getMap(); - PageUtil pageUtil = new PageUtil(); - pageUtil.setPageSize(0); - pageUtil.setCurPage(0); - try { - Map condition = pageUtil.getAdvSearch(); - condition.put("ParentId_n_eq", model.getParentId()); - condition.put("Id_n_neq", 1); - condition.put("Id_s_order", "asc"); - materialCategoryService.find(pageUtil); - mapData.put("materialCategoryList", pageUtil.getPageList()); - } catch (Exception e) { - Log.errorFileSync(">>>>>>>>>>>>>查找商品类别信息异常", e); - model.getShowModel().setMsgTip("exceptoin"); - } - return SUCCESS; - } - - /** - * 增加商品类别 - * - * @return - */ - public void create() { - Log.infoFileSync("==================开始调用增加商品类别信息方法create()==================="); - Boolean flag = false; - try { - MaterialCategory materialCategory = new MaterialCategory(); - materialCategory.setMaterialCategory(new MaterialCategory(model.getParentId())); - - materialCategory.setCategoryLevel(model.getCategoryLevel()); - materialCategory.setName(model.getName()); - materialCategoryService.create(materialCategory); - - //========标识位=========== - flag = true; - //记录操作日志使用 - tipMsg = "成功"; - tipType = 0; - } catch (DataAccessException e) { - Log.errorFileSync(">>>>>>>>>>>>>>>>>>>增加商品类别信息异常", e); - flag = false; - tipMsg = "失败"; - tipType = 1; - } finally { - try { - toClient(flag.toString()); - } catch (IOException e) { - Log.errorFileSync(">>>>>>>>>>>>增加商品类别信息回写客户端结果异常", e); - } - } - - logService.create(new Logdetails(getUser(), "增加商品类别", model.getClientIp(), - new Timestamp(System.currentTimeMillis()) - , tipType, "增加商品类别名称为 " + model.getName() + " " + tipMsg + "!", "增加商品类别" + tipMsg)); - Log.infoFileSync("==================结束调用增加商品类别方法create()==================="); - } - - /** - * 删除商品类别 - * - * @return - */ - public String delete() { - Log.infoFileSync("====================开始调用删除商品类别信息方法delete()================"); - try { - materialCategoryService.delete(model.getMaterialCategoryID()); - tipMsg = "成功"; - tipType = 0; - } catch (DataAccessException e) { - Log.errorFileSync(">>>>>>>>>>>删除ID为 " + model.getMaterialCategoryID() + " 的商品类别异常", e); - tipMsg = "失败"; - tipType = 1; - } - model.getShowModel().setMsgTip(tipMsg); - logService.create(new Logdetails(getUser(), "删除商品类别", model.getClientIp(), - new Timestamp(System.currentTimeMillis()) - , tipType, "删除商品类别ID为 " + model.getMaterialCategoryID() + " " + tipMsg + "!", "删除商品类别" + tipMsg)); - Log.infoFileSync("====================结束调用删除商品类别信息方法delete()================"); - return SUCCESS; - } - - /** - * 更新商品类别 - * - * @return - */ - public void update() { - Boolean flag = false; - try { - MaterialCategory materialCategory = materialCategoryService.get(model.getMaterialCategoryID()); - materialCategory.setMaterialCategory(new MaterialCategory(model.getParentId())); - - materialCategory.setCategoryLevel(model.getCategoryLevel()); - materialCategory.setName(model.getName()); - materialCategoryService.update(materialCategory); - - flag = true; - tipMsg = "成功"; - tipType = 0; - } catch (DataAccessException e) { - Log.errorFileSync(">>>>>>>>>>>>>修改商品类别ID为 : " + model.getMaterialCategoryID() + "信息失败", e); - flag = false; - tipMsg = "失败"; - tipType = 1; - } finally { - try { - toClient(flag.toString()); - } catch (IOException e) { - Log.errorFileSync(">>>>>>>>>>>>修改商品类别回写客户端结果异常", e); - } - } - logService.create(new Logdetails(getUser(), "更新商品类别", model.getClientIp(), - new Timestamp(System.currentTimeMillis()) - , tipType, "更新商品类别ID为 " + model.getMaterialCategoryID() + " " + tipMsg + "!", "更新商品类别" + tipMsg)); - } - - /** - * 批量删除指定ID商品类别 - * - * @return - */ - public String batchDelete() { - try { - materialCategoryService.batchDelete(model.getMaterialCategoryIDs()); - model.getShowModel().setMsgTip("成功"); - //记录操作日志使用 - tipMsg = "成功"; - tipType = 0; - } catch (DataAccessException e) { - Log.errorFileSync(">>>>>>>>>>>批量删除商品类别ID为:" + model.getMaterialCategoryIDs() + "信息异常", e); - tipMsg = "失败"; - tipType = 1; - } - - logService.create(new Logdetails(getUser(), "批量删除商品类别", model.getClientIp(), - new Timestamp(System.currentTimeMillis()) - , tipType, "批量删除商品类别ID为 " + model.getMaterialCategoryIDs() + " " + tipMsg + "!", "批量删除商品类别" + tipMsg)); - return SUCCESS; - } - - /** - * 查找商品类别信息 - * - * @return - */ - public void findBy() { - try { - PageUtil pageUtil = new PageUtil(); - pageUtil.setPageSize(model.getPageSize()); - pageUtil.setCurPage(model.getPageNo()); - pageUtil.setAdvSearch(getCondition()); - materialCategoryService.find(pageUtil); - List dataList = pageUtil.getPageList(); - - //开始拼接json数据 -// {"total":28,"rows":[ -// {"productid":"AV-CB-01","attr1":"Adult Male","itemid":"EST-18"} -// ]} - JSONObject outer = new JSONObject(); - outer.put("total", pageUtil.getTotalCount()); - //存放数据json数组 - JSONArray dataArray = new JSONArray(); - if (null != dataList) { - for (MaterialCategory materialCategory : dataList) { - JSONObject item = new JSONObject(); - item.put("Id", materialCategory.getId()); - item.put("ParentId", materialCategory.getMaterialCategory().getId()); - item.put("ParentName", materialCategory.getMaterialCategory().getName()); - item.put("CategoryLevel", materialCategory.getCategoryLevel()); - item.put("Name", materialCategory.getName()); - item.put("op", 1); - dataArray.add(item); - } - } - outer.put("rows", dataArray); - //回写查询结果 - toClient(outer.toString()); - } catch (DataAccessException e) { - Log.errorFileSync(">>>>>>>>>>>>>>>>>>>查找商品类别信息异常", e); - } catch (IOException e) { - Log.errorFileSync(">>>>>>>>>>>>>>>>>>>回写查询商品类别信息结果异常", e); - } - } - - /** - * 根据id来查询商品名称 - * - * @return - */ - public void findById() { - try { - PageUtil pageUtil = new PageUtil(); - pageUtil.setAdvSearch(getConditionById()); - materialCategoryService.find(pageUtil); - List dataList = pageUtil.getPageList(); - JSONObject outer = new JSONObject(); - if (null != dataList) { - for (MaterialCategory materialCategory : dataList) { - outer.put("name", materialCategory.getName()); - outer.put("parentId", materialCategory.getMaterialCategory().getId()); - } - } - //回写查询结果 - toClient(outer.toString()); - } catch (DataAccessException e) { - Log.errorFileSync(">>>>>>>>>>>>>>>>>>>查找商品类别信息异常", e); - } catch (IOException e) { - Log.errorFileSync(">>>>>>>>>>>>>>>>>>>回写查询商品类别信息结果异常", e); - } - } - - /** - * 拼接搜索条件 - * - * @return - */ - private Map getCondition() { - /** - * 拼接搜索条件 - */ - Map condition = new HashMap(); - condition.put("Name_s_like", model.getName()); - condition.put("ParentId_n_eq", model.getParentId()); - condition.put("Id_n_neq", 1); - condition.put("Id_s_order", "asc"); - return condition; - } - - /** - * 拼接搜索条件 - * - * @return - */ - private Map getConditionById() { - /** - * 拼接搜索条件 - */ - Map condition = new HashMap(); - condition.put("Id_n_eq", model.getMaterialCategoryID()); - return condition; - } - - //=============以下spring注入以及Model驱动公共方法,与Action处理无关================== - @Override - public MaterialCategoryModel getModel() { - return model; - } - - public void setMaterialCategoryService(MaterialCategoryIService materialCategoryService) { - this.materialCategoryService = materialCategoryService; - } -} diff --git a/src/main/java/com/jsh/action/materials/MaterialPropertyAction.java b/src/main/java/com/jsh/action/materials/MaterialPropertyAction.java deleted file mode 100644 index fa8eeaf1..00000000 --- a/src/main/java/com/jsh/action/materials/MaterialPropertyAction.java +++ /dev/null @@ -1,127 +0,0 @@ -package com.jsh.action.materials; - -import com.jsh.base.BaseAction; -import com.jsh.base.Log; -import com.jsh.model.po.Logdetails; -import com.jsh.model.po.MaterialProperty; -import com.jsh.model.vo.materials.MaterialPropertyModel; -import com.jsh.service.materials.MaterialPropertyIService; -import com.jsh.util.PageUtil; -import net.sf.json.JSONArray; -import net.sf.json.JSONObject; -import org.springframework.dao.DataAccessException; - -import java.io.IOException; -import java.sql.Timestamp; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -/* - * 商品属性 - * @author ji s h e n g hua qq:75 27 18 920 - */ -@SuppressWarnings("serial") -public class MaterialPropertyAction extends BaseAction { - private MaterialPropertyIService materialPropertyService; - private MaterialPropertyModel model = new MaterialPropertyModel(); - - /** - * 更新商品属性 - * - * @return - */ - public void update() { - Boolean flag = false; - try { - MaterialProperty materialProperty = materialPropertyService.get(model.getId()); - materialProperty.setNativeName(model.getNativeName()); - materialProperty.setEnabled(model.getEnabled()); - materialProperty.setSort(model.getSort()); - materialProperty.setAnotherName(model.getAnotherName()); - materialPropertyService.update(materialProperty); - - flag = true; - tipMsg = "成功"; - tipType = 0; - } catch (DataAccessException e) { - Log.errorFileSync(">>>>>>>>>>>>>修改商品属性ID为 : " + model.getId() + "失败", e); - flag = false; - tipMsg = "失败"; - tipType = 1; - } finally { - try { - toClient(flag.toString()); - } catch (IOException e) { - Log.errorFileSync(">>>>>>>>>>>>修改商品属性回写客户端结果异常", e); - } - } - logService.create(new Logdetails(getUser(), "更新商品属性", model.getClientIp(), - new Timestamp(System.currentTimeMillis()) - , tipType, "更新商品属性ID为 " + model.getId() + " " + tipMsg + "!", "更新商品属性" + tipMsg)); - } - - /** - * 查找商品属性 - * - * @return - */ - public void findBy() { - try { - PageUtil pageUtil = new PageUtil(); - pageUtil.setPageSize(0); - pageUtil.setCurPage(0); - pageUtil.setAdvSearch(getCondition()); - materialPropertyService.find(pageUtil); - List dataList = pageUtil.getPageList(); - - JSONObject outer = new JSONObject(); - outer.put("total", pageUtil.getTotalCount()); - //存放数据json数组 - JSONArray dataArray = new JSONArray(); - if (null != dataList) { - for (MaterialProperty materialProperty : dataList) { - JSONObject item = new JSONObject(); - item.put("id", materialProperty.getId()); - item.put("nativeName", materialProperty.getNativeName()); - item.put("enabled", materialProperty.getEnabled()); - item.put("sort", materialProperty.getSort()); - item.put("anotherName", materialProperty.getAnotherName()); - dataArray.add(item); - } - } - outer.put("rows", dataArray); - //回写查询结果 - toClient(outer.toString()); - } catch (DataAccessException e) { - Log.errorFileSync(">>>>>>>>>>>>>>>>>>>查找商品属性异常", e); - } catch (IOException e) { - Log.errorFileSync(">>>>>>>>>>>>>>>>>>>回写查询商品属性结果异常", e); - } - } - - /** - * 拼接搜索条件 - * - * @return - */ - private Map getCondition() { - /** - * 拼接搜索条件 - */ - Map condition = new HashMap(); - condition.put("nativeName_s_like", model.getNativeName()); - condition.put("sort_s_order", "asc"); - return condition; - } - - //=============以下spring注入以及Model驱动公共方法,与Action处理无关================== - @Override - public MaterialPropertyModel getModel() { - return model; - } - - public void setMaterialPropertyService(MaterialPropertyIService materialPropertyService) { - this.materialPropertyService = materialPropertyService; - } -} diff --git a/src/main/java/com/jsh/action/materials/PersonAction.java b/src/main/java/com/jsh/action/materials/PersonAction.java deleted file mode 100644 index c16bfee1..00000000 --- a/src/main/java/com/jsh/action/materials/PersonAction.java +++ /dev/null @@ -1,320 +0,0 @@ -package com.jsh.action.materials; - -import com.jsh.base.BaseAction; -import com.jsh.base.Log; -import com.jsh.model.po.Logdetails; -import com.jsh.model.po.Person; -import com.jsh.model.vo.materials.PersonModel; -import com.jsh.service.materials.PersonIService; -import com.jsh.util.PageUtil; -import net.sf.json.JSONArray; -import net.sf.json.JSONObject; -import org.springframework.dao.DataAccessException; - -import java.io.IOException; -import java.sql.Timestamp; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -/* - * 经手人管理 - * @author jishenghua qq:752718920 - */ -@SuppressWarnings("serial") -public class PersonAction extends BaseAction { - private PersonIService personService; - private PersonModel model = new PersonModel(); - - @SuppressWarnings({"rawtypes", "unchecked"}) - public String getBasicData() { - Map mapData = model.getShowModel().getMap(); - PageUtil pageUtil = new PageUtil(); - pageUtil.setPageSize(0); - pageUtil.setCurPage(0); - try { - Map condition = pageUtil.getAdvSearch(); - condition.put("Id_s_order", "asc"); - personService.find(pageUtil); - mapData.put("personList", pageUtil.getPageList()); - } catch (Exception e) { - Log.errorFileSync(">>>>>>>>>>>>>查找系统基础数据信息异常", e); - model.getShowModel().setMsgTip("exceptoin"); - } - return SUCCESS; - } - - @SuppressWarnings({"rawtypes", "unchecked"}) - public String getPersonByType() { - Map mapData = model.getShowModel().getMap(); - PageUtil pageUtil = new PageUtil(); - pageUtil.setPageSize(0); - pageUtil.setCurPage(0); - try { - Map condition = pageUtil.getAdvSearch(); - condition.put("Type_s_eq", model.getType()); - condition.put("Id_s_order", "asc"); - personService.find(pageUtil); - mapData.put("personList", pageUtil.getPageList()); - } catch (Exception e) { - Log.errorFileSync(">>>>>>>>>>>>>查找系统基础数据信息异常", e); - model.getShowModel().setMsgTip("exceptoin"); - } - return SUCCESS; - } - - /** - * 根据类型获取经手人信息 1-业务员,2-仓管员,3-财务员 - * - * @return - */ - public void getPersonByNumType() { - try { - PageUtil pageUtil = new PageUtil(); - pageUtil.setPageSize(0); - pageUtil.setCurPage(0); - Map condition = pageUtil.getAdvSearch(); - String type = ""; - if (model.getType().equals("1")) { - type = "业务员"; - } else if (model.getType().equals("2")) { - type = "仓管员"; - } else if (model.getType().equals("3")) { - type = "财务员"; - } - condition.put("Type_s_eq", type); - condition.put("Id_s_order", "asc"); - personService.find(pageUtil); - List dataList = pageUtil.getPageList(); - JSONArray dataArray = new JSONArray(); - if (null != dataList) { - for (Person person : dataList) { - JSONObject item = new JSONObject(); - item.put("id", person.getId()); - item.put("name", person.getName()); - dataArray.add(item); - } - } - //回写查询结果 - toClient(dataArray.toString()); - } catch (DataAccessException e) { - Log.errorFileSync(">>>>>>>>>查找信息异常", e); - } catch (IOException e) { - Log.errorFileSync(">>>>>>>>>回写查询信息结果异常", e); - } - } - - /** - * 根据Id获取经手人信息 - * - * @return - */ - public void getPersonByIds() { - try { - PageUtil pageUtil = new PageUtil(); - pageUtil.setPageSize(0); - pageUtil.setCurPage(0); - Map condition = pageUtil.getAdvSearch(); - condition.put("Id_s_in", model.getPersonIDs()); - condition.put("Id_s_order", "asc"); - personService.find(pageUtil); - List dataList = pageUtil.getPageList(); - StringBuffer sb = new StringBuffer(); - if (null != dataList) { - for (Person person : dataList) { - sb.append(person.getName() + " "); - } - } - //回写查询结果 - toClient(sb.toString()); - } catch (DataAccessException e) { - Log.errorFileSync(">>>>>>>>>查找信息异常", e); - } catch (IOException e) { - Log.errorFileSync(">>>>>>>>>回写查询信息结果异常", e); - } - } - - /** - * 增加经手人 - * - * @return - */ - public void create() { - Log.infoFileSync("==================开始调用增加经手人信息方法create()==================="); - Boolean flag = false; - try { - Person person = new Person(); - - person.setType(model.getType()); - person.setName(model.getName()); - personService.create(person); - - //========标识位=========== - flag = true; - //记录操作日志使用 - tipMsg = "成功"; - tipType = 0; - } catch (DataAccessException e) { - Log.errorFileSync(">>>>>>>>>>>>>>>>>>>增加经手人信息异常", e); - flag = false; - tipMsg = "失败"; - tipType = 1; - } finally { - try { - toClient(flag.toString()); - } catch (IOException e) { - Log.errorFileSync(">>>>>>>>>>>>增加经手人信息回写客户端结果异常", e); - } - } - - logService.create(new Logdetails(getUser(), "增加经手人", model.getClientIp(), - new Timestamp(System.currentTimeMillis()) - , tipType, "增加经手人名称为 " + model.getName() + " " + tipMsg + "!", "增加经手人" + tipMsg)); - Log.infoFileSync("==================结束调用增加经手人方法create()==================="); - } - - /** - * 删除经手人 - * - * @return - */ - public String delete() { - Log.infoFileSync("====================开始调用删除经手人信息方法delete()================"); - try { - personService.delete(model.getPersonID()); - tipMsg = "成功"; - tipType = 0; - } catch (DataAccessException e) { - Log.errorFileSync(">>>>>>>>>>>删除ID为 " + model.getPersonID() + " 的经手人异常", e); - tipMsg = "失败"; - tipType = 1; - } - model.getShowModel().setMsgTip(tipMsg); - logService.create(new Logdetails(getUser(), "删除经手人", model.getClientIp(), - new Timestamp(System.currentTimeMillis()) - , tipType, "删除经手人ID为 " + model.getPersonID() + " " + tipMsg + "!", "删除经手人" + tipMsg)); - Log.infoFileSync("====================结束调用删除经手人信息方法delete()================"); - return SUCCESS; - } - - /** - * 更新经手人 - * - * @return - */ - public void update() { - Boolean flag = false; - try { - Person person = personService.get(model.getPersonID()); - - person.setType(model.getType()); - person.setName(model.getName()); - personService.update(person); - - flag = true; - tipMsg = "成功"; - tipType = 0; - } catch (DataAccessException e) { - Log.errorFileSync(">>>>>>>>>>>>>修改经手人ID为 : " + model.getPersonID() + "信息失败", e); - flag = false; - tipMsg = "失败"; - tipType = 1; - } finally { - try { - toClient(flag.toString()); - } catch (IOException e) { - Log.errorFileSync(">>>>>>>>>>>>修改经手人回写客户端结果异常", e); - } - } - logService.create(new Logdetails(getUser(), "更新经手人", model.getClientIp(), - new Timestamp(System.currentTimeMillis()) - , tipType, "更新经手人ID为 " + model.getPersonID() + " " + tipMsg + "!", "更新经手人" + tipMsg)); - } - - /** - * 批量删除指定ID经手人 - * - * @return - */ - public String batchDelete() { - try { - personService.batchDelete(model.getPersonIDs()); - model.getShowModel().setMsgTip("成功"); - //记录操作日志使用 - tipMsg = "成功"; - tipType = 0; - } catch (DataAccessException e) { - Log.errorFileSync(">>>>>>>>>>>批量删除经手人ID为:" + model.getPersonIDs() + "信息异常", e); - tipMsg = "失败"; - tipType = 1; - } - - logService.create(new Logdetails(getUser(), "批量删除经手人", model.getClientIp(), - new Timestamp(System.currentTimeMillis()) - , tipType, "批量删除经手人ID为 " + model.getPersonIDs() + " " + tipMsg + "!", "批量删除经手人" + tipMsg)); - return SUCCESS; - } - - /** - * 查找经手人信息 - * - * @return - */ - public void findBy() { - try { - PageUtil pageUtil = new PageUtil(); - pageUtil.setPageSize(model.getPageSize()); - pageUtil.setCurPage(model.getPageNo()); - pageUtil.setAdvSearch(getCondition()); - personService.find(pageUtil); - List dataList = pageUtil.getPageList(); - - JSONObject outer = new JSONObject(); - outer.put("total", pageUtil.getTotalCount()); - //存放数据json数组 - JSONArray dataArray = new JSONArray(); - if (null != dataList) { - for (Person person : dataList) { - JSONObject item = new JSONObject(); - item.put("Id", person.getId()); - item.put("Type", person.getType()); - item.put("Name", person.getName()); - item.put("op", 1); - dataArray.add(item); - } - } - outer.put("rows", dataArray); - //回写查询结果 - toClient(outer.toString()); - } catch (DataAccessException e) { - Log.errorFileSync(">>>>>>>>>>>>>>>>>>>查找经手人信息异常", e); - } catch (IOException e) { - Log.errorFileSync(">>>>>>>>>>>>>>>>>>>回写查询经手人信息结果异常", e); - } - } - - /** - * 拼接搜索条件 - * - * @return - */ - private Map getCondition() { - /** - * 拼接搜索条件 - */ - Map condition = new HashMap(); - condition.put("Name_s_like", model.getName()); - condition.put("Type_s_eq", model.getType()); - return condition; - } - - //=============以下spring注入以及Model驱动公共方法,与Action处理无关================== - @Override - public PersonModel getModel() { - return model; - } - - public void setPersonService(PersonIService personService) { - this.personService = personService; - } -} diff --git a/src/main/java/com/jsh/base/BaseAction.java b/src/main/java/com/jsh/base/BaseAction.java deleted file mode 100644 index 1130da72..00000000 --- a/src/main/java/com/jsh/base/BaseAction.java +++ /dev/null @@ -1,115 +0,0 @@ -package com.jsh.base; - -import com.jsh.model.po.Basicuser; -import com.jsh.service.basic.LogIService; -import com.opensymphony.xwork2.ActionContext; -import com.opensymphony.xwork2.ActionSupport; -import com.opensymphony.xwork2.ModelDriven; -import org.apache.struts2.ServletActionContext; - -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import java.io.IOException; -import java.util.Map; - -/** - * struts2工具类 - * - * @author jishenghua qq752718920 - * struts2 base action 一些常用方法获取 - */ -@SuppressWarnings("serial") -public abstract class BaseAction extends ActionSupport implements ModelDriven { - public LogIService logService; - - /** - * 操作日志使用 是否成功表示 - */ - public String tipMsg = "成功"; - - /** - * 操作日志使用 是否成功表示 0 ==成功 1==失败 - */ - public short tipType = 0; - - /** - * 获取session - * - * @return - */ - public static Map getSession() { - return ActionContext.getContext().getSession(); - } - - /** - * 获取request - * - * @return - */ - public static HttpServletRequest getRequest() { - return ServletActionContext.getRequest(); - } - - /** - * 获取response - * - * @return response - */ - public static HttpServletResponse getResponse() { - return ServletActionContext.getResponse(); - } - - public void setLogService(LogIService logService) { - this.logService = logService; - } - - /** - * 添加错误信息 - * - * @param anErrorMessage - */ - public void addActionError(String anErrorMessage) { - super.addActionError(anErrorMessage); - } - - /** - * 添加消息 - * - * @param aMessage - */ - public void addActionMessage(String aMessage) { - clearErrorsAndMessages(); - super.addActionMessage(aMessage); - } - - /** - * 添加字段错误 - * - * @param fieldName - * @param errorMessage - */ - public void addFieldError(String fieldName, String errorMessage) { - clearErrorsAndMessages(); - super.addFieldError(fieldName, errorMessage); - } - - /** - * 登录用户信息 - * - * @return 登录用户对象 - */ - public Basicuser getUser() { - return (Basicuser) getSession().get("user"); - } - - /** - * 回写客户端数据 - * - * @throws IOException - */ - public void toClient(String jsonData) throws IOException { - HttpServletResponse response = ServletActionContext.getResponse(); - response.setContentType("text/html;charset=utf-8"); - response.getWriter().print(jsonData); - } -} diff --git a/src/main/java/com/jsh/base/BaseDAO.java b/src/main/java/com/jsh/base/BaseDAO.java deleted file mode 100644 index 673ac810..00000000 --- a/src/main/java/com/jsh/base/BaseDAO.java +++ /dev/null @@ -1,126 +0,0 @@ -package com.jsh.base; - -import com.jsh.util.PageUtil; -import com.jsh.util.SearchConditionUtil; -import org.hibernate.Query; -import org.springframework.dao.DataAccessException; -import org.springframework.orm.hibernate3.support.HibernateDaoSupport; - -import java.io.Serializable; -import java.util.List; -import java.util.Map; - -/** - * 基础dao - * - * @author ji_sheng_hua qq:752718920 - */ -public class BaseDAO extends HibernateDaoSupport implements BaseIDAO { - protected Class entityClass; - - public void setPoJoClass(Class c) { - this.entityClass = c; - } - - protected Class getEntityClass() { - return this.entityClass; - } - - @Override - public Serializable create(T t) throws DataAccessException { - return this.getHibernateTemplate().save(t); - } - - @Override - public void delete(T t) throws DataAccessException { - this.getHibernateTemplate().delete(t); - } - - @Override - public T get(Long objID) throws DataAccessException { - return (T) this.getHibernateTemplate().get(getEntityClass(), objID); - } - - @Override - public void update(T t) throws DataAccessException { - this.getHibernateTemplate().update(t); - } - - @Override - public void batchDelete(String objIDs) throws DataAccessException { - this.getHibernateTemplate().bulkUpdate("delete from " + getEntityClass().getName() + " where id in (" + objIDs + ")"); - } - - @SuppressWarnings("unchecked") - @Override - public void find(PageUtil pageUtil) throws DataAccessException { - Query query = this.getHibernateTemplate().getSessionFactory().getCurrentSession() - .createQuery(" from " + getEntityClass().getName() + " where 1=1 " + - SearchConditionUtil.getCondition(pageUtil.getAdvSearch())); - pageUtil.setTotalCount(query.list().size()); - - // 分页查询 - int pageNo = pageUtil.getCurPage(); - int pageSize = pageUtil.getPageSize(); - if (0 != pageNo && 0 != pageSize) { - query.setFirstResult((pageNo - 1) * pageSize); - query.setMaxResults(pageSize); - } - pageUtil.setPageList(query.list()); - } - -// @SuppressWarnings("unchecked") -// @Override -// public List find(Map conditon)throws DataAccessException -// { -// return this.getHibernateTemplate().find(" from " + getEntityClass().getName() + " where 1=1 "+ SearchConditionUtil.getCondition(conditon)); -// } - -// @SuppressWarnings("unchecked") -// @Override -// public List find(String hql) throws DataAccessException -// { -// return this.getHibernateTemplate().find(" from " + getEntityClass().getName() + " where 1=1 "+ hql); -// } - - @SuppressWarnings("unchecked") - @Override - public List find(Map conditon, int pageSize, int pageNo) throws DataAccessException { - Query query = this.getHibernateTemplate().getSessionFactory().getCurrentSession() - .createQuery(" from " + getEntityClass().getName() + " where 1=1 " + SearchConditionUtil.getCondition(conditon)); - query.setFirstResult((pageNo - 1) * pageSize); - query.setMaxResults(pageSize); - return query.list(); - } - - @SuppressWarnings("unchecked") - @Override - public List find(String hql, int pageSize, int pageNo) throws DataAccessException { - Query query = this.getHibernateTemplate().getSessionFactory().getCurrentSession() - .createQuery(" from " + getEntityClass().getName() + " where 1=1 " + hql); - query.setFirstResult((pageNo - 1) * pageSize); - query.setMaxResults(pageSize); - return query.list(); - } - - @SuppressWarnings("unchecked") - @Override - public Integer countSum(Map conditon) throws DataAccessException { - List dataList = this.getHibernateTemplate().getSessionFactory().getCurrentSession() - .createQuery(" from " + getEntityClass().getName() + " where 1=1 " + SearchConditionUtil.getCondition(conditon)).list(); - return dataList == null ? 0 : dataList.size(); - } - - @SuppressWarnings("unchecked") - @Override - public Integer countSum(String hql) throws DataAccessException { - List dataList = this.getHibernateTemplate().getSessionFactory().getCurrentSession() - .createQuery(" from " + getEntityClass().getName() + " where 1=1 " + hql).list(); - return dataList == null ? 0 : dataList.size(); - } - - @Override - public void save(T t) throws DataAccessException { - this.getHibernateTemplate().save(t); - } -} diff --git a/src/main/java/com/jsh/base/BaseIDAO.java b/src/main/java/com/jsh/base/BaseIDAO.java deleted file mode 100644 index 333a57c9..00000000 --- a/src/main/java/com/jsh/base/BaseIDAO.java +++ /dev/null @@ -1,135 +0,0 @@ -package com.jsh.base; - -import com.jsh.util.PageUtil; -import org.springframework.dao.DataAccessException; - -import java.io.Serializable; -import java.util.List; -import java.util.Map; - -/** - * 常用增删改查操作 - * - * @param - * @author ji-sheng-hua qq752718920 - */ -public interface BaseIDAO { - - /** - * 设置操作类对象 - * - * @param paramClass - */ - void setPoJoClass(Class paramClass); - - /** - * 增加 - * - * @param t 对象 - * @throws DataAccessException - */ - Serializable create(T t) throws DataAccessException; - - /** - * 增加 - * - * @param t 对象 - * @throws DataAccessException - */ - void save(T t) throws DataAccessException; - - /** - * 删除 - * - * @param t 对象 - * @throws DataAccessException - */ - void delete(T t) throws DataAccessException; - - /** - * 获取 - * - * @param objID ID - * @return 对象 - * @throws DataAccessException - */ - T get(Long objID) throws DataAccessException; - - /** - * 修改信息 - * - * @param t 要修改的对象 - * @throws DataAccessException - */ - void update(T t) throws DataAccessException; - - /** - * 批量删除信息 - * - * @param 以逗号分割的ID - * @throws DataAccessException - */ - void batchDelete(String objIDs) throws DataAccessException; - - /** - * 查找列表 - * - * @param pageUtil 分页工具类 - * @throws DataAccessException - */ - void find(PageUtil pageUtil) throws DataAccessException; - - /** - * 根据条件查询列表--没有分页信息 - * @param conditon 查询条件 - * @return 查询列表数据 - */ -// List find(Map conditon)throws DataAccessException; - - /** - * 根据hql查询 --没有分页信息 - * @param hql hibernate查询 - * @return 查询列表数据 - */ -// List find(String hql)throws DataAccessException; - - /** - * 根据搜索条件查询--分页 - * - * @param conditon 查询条件 - * @param pageSize 每页个数 - * @param pageNo 页码 - * @return 查询列表数据 - * @throws DataAccessException - */ - List find(Map conditon, int pageSize, int pageNo) throws DataAccessException; - - /** - * 根据hql查询--分页 - * - * @param hql hibernate查询语句 - * @param pageSize 每页个数 - * @param pageNo 页码 - * @return 查询列表数据 - * @throws DataAccessException - */ - List find(String hql, int pageSize, int pageNo) throws DataAccessException; - - /** - * 查找符合条件的总数 - * - * @param conditon - * @return - * @throws DataAccessException - */ - Integer countSum(Map conditon) throws DataAccessException; - - /** - * 查找符合条件的总数 - * - * @param hql - * @return - * @throws DataAccessException - */ - Integer countSum(String hql) throws DataAccessException; -} diff --git a/src/main/java/com/jsh/base/BaseIService.java b/src/main/java/com/jsh/base/BaseIService.java deleted file mode 100644 index 08d43f51..00000000 --- a/src/main/java/com/jsh/base/BaseIService.java +++ /dev/null @@ -1,119 +0,0 @@ -package com.jsh.base; - -import com.jsh.util.PageUtil; -import org.springframework.dao.DataAccessException; - -import java.io.Serializable; - -/** - * 服务层底层接口 - * - * @param - * @author ji-sheng-hua qq752718920 - */ -public interface BaseIService { - /** - * 增加 - * - * @param t 对象 - * @throws DataAccessException - */ - Serializable create(T t) throws DataAccessException; - - /** - * 增加 - * - * @param t 对象 - * @throws DataAccessException - */ - void save(T t) throws DataAccessException; - - /** - * 删除 - * - * @param t 对象 - * @throws DataAccessException - */ - void delete(T t) throws DataAccessException; - - /** - * 删除 - * - * @param id 对象ID - * @throws DataAccessException - */ - void delete(Long id) throws DataAccessException; - - /** - * 获取 - * - * @param objID ID - * @return 对象 - * @throws DataAccessException - */ - T get(Long objID) throws DataAccessException; - - /** - * 修改信息 - * - * @param t 要修改的对象 - * @throws DataAccessException - */ - void update(T t) throws DataAccessException; - - /** - * 批量删除信息 - * - * @param 以逗号分割的ID - * @throws DataAccessException - */ - void batchDelete(String objIDs) throws DataAccessException; - - /** - * 查找列表 - * - * @param pageUtil 分页工具类 - * @throws DataAccessException - */ - void find(PageUtil pageUtil) throws DataAccessException; - - /** - * 检查名称是否存在,页面唯一性效验使用 - * - * @param filedName 效验的字段名称 - * @param filedVale 校验值 - * @param idFiled ID字段名称 - * @param objectID 修改时对象ID - * @return true==存在 false==不存在 - * @throws DataAccessException - */ - Boolean checkIsNameExist(String filedName, String filedVale, String idFiled, Long objectID) throws DataAccessException; - - /** - * 检查UserBusiness是否存在,页面唯一性效验使用 - * - * @param TypeName 类型名称 - * @param TypeVale 类型值 - * @param KeyIdName 关键id - * @param KeyIdValue 关键值 - * @param UBName 关系名称 - * @param UBValue 关系值 - * @return true==存在 false==不存在 - * @throws DataAccessException - */ - Boolean checkIsUserBusinessExist(String TypeName, String TypeVale, String KeyIdName, String KeyIdValue, String UBName, String UBValue) throws DataAccessException; - - /** - * 检查UserBusiness是否存在,页面唯一性效验使用 - * - * @param TypeName 类型名称 - * @param TypeVale 类型值 - * @param KeyIdName 关键id - * @param KeyIdValue 关键值 - * @return true==存在 false==不存在 - * @throws DataAccessException - */ - Boolean checkIsValueExist(String TypeName, String TypeVale, String KeyIdName, String KeyIdValue) throws DataAccessException; - - -} diff --git a/src/main/java/com/jsh/base/BaseService.java b/src/main/java/com/jsh/base/BaseService.java deleted file mode 100644 index 2070fba6..00000000 --- a/src/main/java/com/jsh/base/BaseService.java +++ /dev/null @@ -1,124 +0,0 @@ -package com.jsh.base; - -import com.jsh.util.PageUtil; -import org.springframework.dao.DataAccessException; - -import java.io.Serializable; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -/** - * 底层服务层 - * - * @param - * @author ji-sheng-hua qq752718920 - */ -public abstract class BaseService implements BaseIService { - protected Class entityClass; - /** - * Dao对象 - */ - private BaseIDAO baseDao; - - protected BaseIDAO getBaseDao() { - return this.baseDao; - } - - public void setBaseDao(BaseIDAO baseDao) { - this.baseDao = baseDao; - setPoJoClass(getEntityClass()); - } - - private void setPoJoClass(Class c) { - this.baseDao.setPoJoClass(c); - } - - protected abstract Class getEntityClass(); - - @Override - public Serializable create(T t) throws DataAccessException { - return baseDao.create(t); - } - - @Override - public void save(T t) throws DataAccessException { - baseDao.save(t); - } - - @Override - public void delete(T t) throws DataAccessException { - baseDao.delete(t); - } - - @Override - public void delete(Long id) throws DataAccessException { - baseDao.batchDelete(id.toString()); - } - - @Override - public T get(Long objID) throws DataAccessException { - return baseDao.get(objID); - } - - @Override - public void update(T t) throws DataAccessException { - baseDao.update(t); - } - - @Override - public void batchDelete(String objIDs) throws DataAccessException { - baseDao.batchDelete(objIDs); - } - - @Override - public void find(PageUtil pageUtil) throws DataAccessException { - baseDao.find(pageUtil); - } - - @Override - public Boolean checkIsNameExist(String filedName, String filedVale, String idFiled, Long objectID) throws DataAccessException { - PageUtil pageUtil = new PageUtil(); - Map condition = new HashMap(); - condition.put(filedName + "_s_eq", filedVale); - condition.put(idFiled + "_n_neq", objectID); - pageUtil.setAdvSearch(condition); - baseDao.find(pageUtil); - - List dataList = pageUtil.getPageList(); - if (null != dataList && dataList.size() > 0) - return true; - return false; - } - - @Override - public Boolean checkIsUserBusinessExist(String TypeName, String TypeVale, String KeyIdName, String KeyIdValue, String UBName, String UBValue) throws DataAccessException { - PageUtil pageUtil = new PageUtil(); - Map condition = new HashMap(); - condition.put(TypeName + "_s_eq", TypeVale); - condition.put(KeyIdName + "_s_eq", KeyIdValue); - condition.put(UBName + "_s_like", UBValue); - pageUtil.setAdvSearch(condition); - baseDao.find(pageUtil); - - List dataList = pageUtil.getPageList(); - if (null != dataList && dataList.size() > 0) - return true; - return false; - } - - @Override - public Boolean checkIsValueExist(String TypeName, String TypeVale, String KeyIdName, String KeyIdValue) throws DataAccessException { - PageUtil pageUtil = new PageUtil(); - Map condition = new HashMap(); - condition.put(TypeName + "_s_eq", TypeVale); - condition.put(KeyIdName + "_s_eq", KeyIdValue); - pageUtil.setAdvSearch(condition); - baseDao.find(pageUtil); - - List dataList = pageUtil.getPageList(); - if (null != dataList && dataList.size() > 0) - return true; - return false; - } -} diff --git a/src/main/java/com/jsh/base/Log.java b/src/main/java/com/jsh/base/Log.java deleted file mode 100644 index 6e822880..00000000 --- a/src/main/java/com/jsh/base/Log.java +++ /dev/null @@ -1,165 +0,0 @@ -package com.jsh.base; - -import org.apache.log4j.Logger; - -/** - * 封装log4j日志信息,打印日志信息类 - * - * @author ji/sheng/hua qq_7527.18920 - * @since 2014-01-22 - */ -public class Log { - /** - * Info级别日志前缀 - */ - public static final String LOG_INFO_PREFIX = "=========="; - /** - * error级别日志前缀 - */ - public static final String LOG_ERROR_PREFIX = ">>>>>>>>>>"; - /** - * debug级别日志前缀 - */ - public static final String LOG_DEBUG_PREFIX = "-----------"; - /** - * fatal级别日志前缀 - */ - public static final String LOG_FATAL_PREFIX = "$$$$$$$$$$"; - /** - * warn级别日志前缀 - */ - public static final String LOG_WARN_PREFIX = "##########"; - /** - * 根据异常信息获取调用类的信息 - */ - private static final Exception ex = new Exception(); - /** - * 获取Log4j实例 - */ - private static final Logger log = Logger.getLogger("jsh"); - - /** - * 打印deug日期信息 - * - * @param msg 日志信息 - */ - public static void debugFileSync(Object msg) { - log.debug(getLogDetail(msg)); - } - - /** - * 打印debug异常信息 - * - * @param msg 日志信息 - * @param e 异常堆栈 - */ - public static void debugFileSync(Object msg, Throwable e) { - log.debug(getLogDetail(msg), e); - } - - /** - * 打印info日志信息 - * - * @param msg 日志信息 - */ - public static void infoFileSync(Object msg) { - log.info(getLogDetail(msg)); - } - - /** - * 打印 info日志带异常信息 - * - * @param msg 日志信息 - * @param e 异常堆栈 - */ - public static void infoFileSync(Object msg, Throwable e) { - log.info(getLogDetail(msg), e); - } - - /** - * 打印warn日期信息 - * - * @param msg 日志信息 - */ - public static void warnFileSync(Object msg) { - log.warn(getLogDetail(msg)); - } - - /** - * 打印warn日志信息带异常 - * - * @param msg日志信息 - * @param e 异常堆栈 - */ - public static void warnFileSync(Object msg, Throwable e) { - log.warn(getLogDetail(msg), e); - } - - /** - * 打印error日志信息 - * - * @param msg 日志信息 - */ - public static void errorFileSync(Object msg) { - log.error(getLogDetail(msg)); - } - - /** - * 打印error日志信息带异常 - * - * @param msg 日志信息 - * @param e 异常堆栈 - */ - public static void errorFileSync(Object msg, Throwable e) { - log.error(getLogDetail(msg), e); - } - - /** - * 打印fatal日志信息 - * - * @param msg 日志信息 - */ - public static void fatalFileSync(Object msg) { - log.fatal(getLogDetail(msg)); - } - - /** - * 打印fatal日志信息带异常 - * - * @param msg 日志信息 - * @param e 异常堆栈 - */ - public static void fatalFileSync(Object msg, Throwable e) { - log.fatal(getLogDetail(msg), e); - } - - /** - * 拼装日志详细信息 - * - * @param message 要打印的日志信息 - * @return 封装后的日志详细信息 - */ - private static synchronized String getLogDetail(Object message) { - String msg = ""; - if (null != message) - msg = message.toString(); - StringBuffer bf = new StringBuffer(); - try { - ex.fillInStackTrace(); - throw ex; - } catch (Exception ex) { - StackTraceElement[] trace = ex.getStackTrace(); - //获取异常堆栈中的调用类信息 - final int pos = 2; - bf.append(msg); - bf.append(" [class:"); - bf.append(trace[pos].getClassName()); - bf.append(" method:"); - bf.append(trace[pos].getMethodName()); - bf.append(" line:"); - bf.append(trace[pos].getLineNumber()); - bf.append("]"); - } - return bf.toString(); - } -} diff --git a/src/main/java/com/jsh/dao/asset/AssetDAO.java b/src/main/java/com/jsh/dao/asset/AssetDAO.java deleted file mode 100644 index cb747475..00000000 --- a/src/main/java/com/jsh/dao/asset/AssetDAO.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.jsh.dao.asset; - -import com.jsh.base.BaseDAO; -import com.jsh.model.po.Asset; - -public class AssetDAO extends BaseDAO implements AssetIDAO { - /** - * 设置dao映射基类 - * - * @return - */ - @Override - public Class getEntityClass() { - return Asset.class; - } -} diff --git a/src/main/java/com/jsh/dao/asset/AssetIDAO.java b/src/main/java/com/jsh/dao/asset/AssetIDAO.java deleted file mode 100644 index 76c302b2..00000000 --- a/src/main/java/com/jsh/dao/asset/AssetIDAO.java +++ /dev/null @@ -1,8 +0,0 @@ -package com.jsh.dao.asset; - -import com.jsh.base.BaseIDAO; -import com.jsh.model.po.Asset; - -public interface AssetIDAO extends BaseIDAO { - -} diff --git a/src/main/java/com/jsh/dao/asset/ReportDAO.java b/src/main/java/com/jsh/dao/asset/ReportDAO.java deleted file mode 100644 index 51cd1888..00000000 --- a/src/main/java/com/jsh/dao/asset/ReportDAO.java +++ /dev/null @@ -1,18 +0,0 @@ -package com.jsh.dao.asset; - -import com.jsh.model.po.Asset; -import com.jsh.util.JshException; -import com.jsh.util.PageUtil; -import com.jsh.util.SearchConditionUtil; -import org.hibernate.Query; -import org.springframework.orm.hibernate3.support.HibernateDaoSupport; - -public class ReportDAO extends HibernateDaoSupport implements ReportIDAO { - @SuppressWarnings("unchecked") - @Override - public void find(PageUtil pageUtil, String reportType, String reportName) throws JshException { - Query query = this.getHibernateTemplate().getSessionFactory().getCurrentSession().createQuery("select count(" + reportType + ") as dataSum, " + reportName + " from Asset asset where 1=1 " + SearchConditionUtil.getCondition(pageUtil.getAdvSearch())); - pageUtil.setTotalCount(query.list().size()); - pageUtil.setPageList(query.list()); - } -} diff --git a/src/main/java/com/jsh/dao/asset/ReportIDAO.java b/src/main/java/com/jsh/dao/asset/ReportIDAO.java deleted file mode 100644 index 18adba81..00000000 --- a/src/main/java/com/jsh/dao/asset/ReportIDAO.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.jsh.dao.asset; - -import com.jsh.model.po.Asset; -import com.jsh.util.JshException; -import com.jsh.util.PageUtil; - -public interface ReportIDAO { - /** - * 查找资产列表 - * - * @param pageUtil 分页工具类 - * @param reportType 报表统计字段 - * @throws JshException - */ - void find(PageUtil pageUtil, String reportType, String reportName) throws JshException; -} diff --git a/src/main/java/com/jsh/dao/basic/AccountDAO.java b/src/main/java/com/jsh/dao/basic/AccountDAO.java deleted file mode 100644 index 399b3943..00000000 --- a/src/main/java/com/jsh/dao/basic/AccountDAO.java +++ /dev/null @@ -1,82 +0,0 @@ -package com.jsh.dao.basic; - -import com.jsh.base.BaseDAO; -import com.jsh.model.po.Account; -import com.jsh.util.JshException; -import com.jsh.util.PageUtil; -import com.jsh.util.SearchConditionUtil; -import org.hibernate.Query; - -public class AccountDAO extends BaseDAO implements AccountIDAO { - /** - * 设置dao映射基类 - * - * @return - */ - @Override - public Class getEntityClass() { - return Account.class; - } - - @SuppressWarnings("unchecked") - public void findAccountInOutList(PageUtil pageUtil, Long accountId) throws JshException { - StringBuffer queryString = new StringBuffer(); - //主表出入库涉及的账户 - queryString.append("select dh.Number,concat(dh.SubType,dh.Type) as newType,s.supplier,dh.ChangeAmount,date_format(dh.OperTime,'%Y-%m-%d %H:%i:%S') as oTime,'' as AList,'' as AMList " + - " from jsh_depothead dh inner join jsh_supplier s on dh.OrganId = s.id where 1=1 "); - if (accountId != null && !accountId.equals("")) { - queryString.append(" and dh.AccountId='" + accountId + "' "); - } - //主表收入和支出涉及的账户 - queryString.append("UNION ALL " + - "select ah.BillNo,ah.Type as newType,s.supplier,ah.ChangeAmount,date_format(ah.BillTime,'%Y-%m-%d %H:%i:%S') as oTime,'' as AList,'' as AMList " + - " from jsh_accounthead ah inner join jsh_supplier s on ah.OrganId=s.id where 1=1 "); - if (accountId != null && !accountId.equals("")) { - queryString.append(" and ah.AccountId='" + accountId + "' "); - } - //明细中涉及的账户(收款,付款,收预付款) - queryString.append("UNION ALL " + - "select ah.BillNo,ah.Type as newType,s.supplier,ai.EachAmount,date_format(ah.BillTime,'%Y-%m-%d %H:%i:%S') as oTime,'' as AList,'' as AMList " + - " from jsh_accounthead ah inner join jsh_supplier s on ah.OrganId=s.id " + - " inner join jsh_accountitem ai on ai.HeaderId=ah.Id " + - " where ah.Type in ('收款','付款','收预付款') "); - if (accountId != null && !accountId.equals("")) { - queryString.append(" and ai.AccountId='" + accountId + "' "); - } - //主表中转出的账户 - queryString.append("UNION ALL " + - "select ah.BillNo,ah.Type as newType, '' as sName,ah.ChangeAmount,date_format(ah.BillTime,'%Y-%m-%d %H:%i:%S') as oTime,'' as AList,'' as AMList " + - " from jsh_accounthead ah inner join jsh_accountitem ai on ai.HeaderId=ah.Id " + - " where ah.Type='转账' "); - if (accountId != null && !accountId.equals("")) { - queryString.append(" and ah.AccountId='" + accountId + "' "); - } - //明细中被转入的账户 - queryString.append("UNION ALL " + - "select ah.BillNo,ah.Type as newType, '' as sName,ai.EachAmount,date_format(ah.BillTime,'%Y-%m-%d %H:%i:%S') as oTime,'' as AList,'' as AMList " + - " from jsh_accounthead ah inner join jsh_accountitem ai on ai.HeaderId=ah.Id " + - " where ah.Type='转账' "); - if (accountId != null && !accountId.equals("")) { - queryString.append(" and ai.AccountId='" + accountId + "' "); - } - //多账户的情况 - queryString.append("UNION ALL " + - "select dh.Number,concat(dh.SubType,dh.Type) as newType,s.supplier,dh.ChangeAmount,date_format(dh.OperTime,'%Y-%m-%d %H:%i:%S') as oTime,dh.AccountIdList,dh.AccountMoneyList" + - " from jsh_depothead dh inner join jsh_supplier s on dh.OrganId = s.id where 1=1 "); - if (accountId != null && !accountId.equals("")) { - queryString.append(" and dh.AccountIdList like '%\"" + accountId + "\"%' "); - } - queryString.append(" ORDER BY oTime desc"); - Query query; - query = this.getHibernateTemplate().getSessionFactory().getCurrentSession().createSQLQuery(queryString + SearchConditionUtil.getCondition(pageUtil.getAdvSearch())); - pageUtil.setTotalCount(query.list().size()); - // 分页查询 - int pageNo = pageUtil.getCurPage(); - int pageSize = pageUtil.getPageSize(); - if (0 != pageNo && 0 != pageSize) { - query.setFirstResult((pageNo - 1) * pageSize); - query.setMaxResults(pageSize); - } - pageUtil.setPageList(query.list()); - } -} diff --git a/src/main/java/com/jsh/dao/basic/AccountIDAO.java b/src/main/java/com/jsh/dao/basic/AccountIDAO.java deleted file mode 100644 index b6f31978..00000000 --- a/src/main/java/com/jsh/dao/basic/AccountIDAO.java +++ /dev/null @@ -1,12 +0,0 @@ -package com.jsh.dao.basic; - -import com.jsh.base.BaseIDAO; -import com.jsh.model.po.Account; -import com.jsh.util.JshException; -import com.jsh.util.PageUtil; - -public interface AccountIDAO extends BaseIDAO { - - public void findAccountInOutList(PageUtil pageUtil, Long accountId) throws JshException; - -} diff --git a/src/main/java/com/jsh/dao/basic/AppDAO.java b/src/main/java/com/jsh/dao/basic/AppDAO.java deleted file mode 100644 index 134c3be2..00000000 --- a/src/main/java/com/jsh/dao/basic/AppDAO.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.jsh.dao.basic; - -import com.jsh.base.BaseDAO; -import com.jsh.model.po.App; - -public class AppDAO extends BaseDAO implements AppIDAO { - /** - * 设置dao映射基类 - * - * @return - */ - @Override - public Class getEntityClass() { - return App.class; - } -} diff --git a/src/main/java/com/jsh/dao/basic/AppIDAO.java b/src/main/java/com/jsh/dao/basic/AppIDAO.java deleted file mode 100644 index e0a99dbf..00000000 --- a/src/main/java/com/jsh/dao/basic/AppIDAO.java +++ /dev/null @@ -1,8 +0,0 @@ -package com.jsh.dao.basic; - -import com.jsh.base.BaseIDAO; -import com.jsh.model.po.App; - -public interface AppIDAO extends BaseIDAO { - -} diff --git a/src/main/java/com/jsh/dao/basic/AssetNameDAO.java b/src/main/java/com/jsh/dao/basic/AssetNameDAO.java deleted file mode 100644 index 6d4f2173..00000000 --- a/src/main/java/com/jsh/dao/basic/AssetNameDAO.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.jsh.dao.basic; - -import com.jsh.base.BaseDAO; -import com.jsh.model.po.Assetname; - -public class AssetNameDAO extends BaseDAO implements AssetNameIDAO { - /** - * 设置dao映射基类 - * - * @return - */ - @Override - public Class getEntityClass() { - return Assetname.class; - } -} diff --git a/src/main/java/com/jsh/dao/basic/AssetNameIDAO.java b/src/main/java/com/jsh/dao/basic/AssetNameIDAO.java deleted file mode 100644 index 919b0df9..00000000 --- a/src/main/java/com/jsh/dao/basic/AssetNameIDAO.java +++ /dev/null @@ -1,8 +0,0 @@ -package com.jsh.dao.basic; - -import com.jsh.base.BaseIDAO; -import com.jsh.model.po.Assetname; - -public interface AssetNameIDAO extends BaseIDAO { - -} diff --git a/src/main/java/com/jsh/dao/basic/CategoryDAO.java b/src/main/java/com/jsh/dao/basic/CategoryDAO.java deleted file mode 100644 index 31045c0c..00000000 --- a/src/main/java/com/jsh/dao/basic/CategoryDAO.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.jsh.dao.basic; - -import com.jsh.base.BaseDAO; -import com.jsh.model.po.Category; - -public class CategoryDAO extends BaseDAO implements CategoryIDAO { - /** - * 设置dao映射基类 - * - * @return - */ - @Override - public Class getEntityClass() { - return Category.class; - } -} diff --git a/src/main/java/com/jsh/dao/basic/CategoryIDAO.java b/src/main/java/com/jsh/dao/basic/CategoryIDAO.java deleted file mode 100644 index d46bb3aa..00000000 --- a/src/main/java/com/jsh/dao/basic/CategoryIDAO.java +++ /dev/null @@ -1,8 +0,0 @@ -package com.jsh.dao.basic; - -import com.jsh.base.BaseIDAO; -import com.jsh.model.po.Category; - -public interface CategoryIDAO extends BaseIDAO { - -} diff --git a/src/main/java/com/jsh/dao/basic/DepotDAO.java b/src/main/java/com/jsh/dao/basic/DepotDAO.java deleted file mode 100644 index ce138a6c..00000000 --- a/src/main/java/com/jsh/dao/basic/DepotDAO.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.jsh.dao.basic; - -import com.jsh.base.BaseDAO; -import com.jsh.model.po.Depot; - -public class DepotDAO extends BaseDAO implements DepotIDAO { - /** - * 设置dao映射基类 - * - * @return - */ - @Override - public Class getEntityClass() { - return Depot.class; - } -} diff --git a/src/main/java/com/jsh/dao/basic/DepotIDAO.java b/src/main/java/com/jsh/dao/basic/DepotIDAO.java deleted file mode 100644 index 803c4ad8..00000000 --- a/src/main/java/com/jsh/dao/basic/DepotIDAO.java +++ /dev/null @@ -1,8 +0,0 @@ -package com.jsh.dao.basic; - -import com.jsh.base.BaseIDAO; -import com.jsh.model.po.Depot; - -public interface DepotIDAO extends BaseIDAO { - -} diff --git a/src/main/java/com/jsh/dao/basic/FunctionsDAO.java b/src/main/java/com/jsh/dao/basic/FunctionsDAO.java deleted file mode 100644 index 62b9d9b1..00000000 --- a/src/main/java/com/jsh/dao/basic/FunctionsDAO.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.jsh.dao.basic; - -import com.jsh.base.BaseDAO; -import com.jsh.model.po.Functions; - -public class FunctionsDAO extends BaseDAO implements FunctionsIDAO { - /** - * 设置dao映射基类 - * - * @return - */ - @Override - public Class getEntityClass() { - return Functions.class; - } -} diff --git a/src/main/java/com/jsh/dao/basic/FunctionsIDAO.java b/src/main/java/com/jsh/dao/basic/FunctionsIDAO.java deleted file mode 100644 index c2fc936a..00000000 --- a/src/main/java/com/jsh/dao/basic/FunctionsIDAO.java +++ /dev/null @@ -1,8 +0,0 @@ -package com.jsh.dao.basic; - -import com.jsh.base.BaseIDAO; -import com.jsh.model.po.Functions; - -public interface FunctionsIDAO extends BaseIDAO { - -} diff --git a/src/main/java/com/jsh/dao/basic/InOutItemDAO.java b/src/main/java/com/jsh/dao/basic/InOutItemDAO.java deleted file mode 100644 index 20022605..00000000 --- a/src/main/java/com/jsh/dao/basic/InOutItemDAO.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.jsh.dao.basic; - -import com.jsh.base.BaseDAO; -import com.jsh.model.po.InOutItem; - -public class InOutItemDAO extends BaseDAO implements InOutItemIDAO { - /** - * 设置dao映射基类 - * - * @return - */ - @Override - public Class getEntityClass() { - return InOutItem.class; - } -} diff --git a/src/main/java/com/jsh/dao/basic/InOutItemIDAO.java b/src/main/java/com/jsh/dao/basic/InOutItemIDAO.java deleted file mode 100644 index 00949f26..00000000 --- a/src/main/java/com/jsh/dao/basic/InOutItemIDAO.java +++ /dev/null @@ -1,8 +0,0 @@ -package com.jsh.dao.basic; - -import com.jsh.base.BaseIDAO; -import com.jsh.model.po.InOutItem; - -public interface InOutItemIDAO extends BaseIDAO { - -} diff --git a/src/main/java/com/jsh/dao/basic/LogDAO.java b/src/main/java/com/jsh/dao/basic/LogDAO.java deleted file mode 100644 index bf204aac..00000000 --- a/src/main/java/com/jsh/dao/basic/LogDAO.java +++ /dev/null @@ -1,17 +0,0 @@ -package com.jsh.dao.basic; - -import com.jsh.base.BaseDAO; -import com.jsh.model.po.Logdetails; - -public class LogDAO extends BaseDAO implements LogIDAO { - /** - * 设置dao映射基类 - * - * @return - */ - @Override - public Class getEntityClass() { - return Logdetails.class; - } - -} diff --git a/src/main/java/com/jsh/dao/basic/LogIDAO.java b/src/main/java/com/jsh/dao/basic/LogIDAO.java deleted file mode 100644 index 52586322..00000000 --- a/src/main/java/com/jsh/dao/basic/LogIDAO.java +++ /dev/null @@ -1,13 +0,0 @@ -package com.jsh.dao.basic; - -import com.jsh.base.BaseIDAO; -import com.jsh.model.po.Logdetails; - -/** - * 日志相关处理接口 - * - * @author angel - */ -public interface LogIDAO extends BaseIDAO { - -} diff --git a/src/main/java/com/jsh/dao/basic/RoleDAO.java b/src/main/java/com/jsh/dao/basic/RoleDAO.java deleted file mode 100644 index 2695eb78..00000000 --- a/src/main/java/com/jsh/dao/basic/RoleDAO.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.jsh.dao.basic; - -import com.jsh.base.BaseDAO; -import com.jsh.model.po.Role; - -public class RoleDAO extends BaseDAO implements RoleIDAO { - /** - * 设置dao映射基类 - * - * @return - */ - @Override - public Class getEntityClass() { - return Role.class; - } -} diff --git a/src/main/java/com/jsh/dao/basic/RoleIDAO.java b/src/main/java/com/jsh/dao/basic/RoleIDAO.java deleted file mode 100644 index 10f246bd..00000000 --- a/src/main/java/com/jsh/dao/basic/RoleIDAO.java +++ /dev/null @@ -1,8 +0,0 @@ -package com.jsh.dao.basic; - -import com.jsh.base.BaseIDAO; -import com.jsh.model.po.Role; - -public interface RoleIDAO extends BaseIDAO { - -} diff --git a/src/main/java/com/jsh/dao/basic/SupplierDAO.java b/src/main/java/com/jsh/dao/basic/SupplierDAO.java deleted file mode 100644 index 1300715d..00000000 --- a/src/main/java/com/jsh/dao/basic/SupplierDAO.java +++ /dev/null @@ -1,25 +0,0 @@ -package com.jsh.dao.basic; - -import com.jsh.base.BaseDAO; -import com.jsh.model.po.Supplier; -import org.hibernate.Query; - -public class SupplierDAO extends BaseDAO implements SupplierIDAO { - /** - * 设置dao映射基类 - * - * @return - */ - @Override - public Class getEntityClass() { - return Supplier.class; - } - - @SuppressWarnings("unchecked") - @Override - public void batchSetEnable(Boolean enable, String supplierIDs) { - String sql = "update jsh_supplier s set s.enabled=" + enable + " where s.id in (" + supplierIDs + ")"; - Query query = this.getHibernateTemplate().getSessionFactory().getCurrentSession().createSQLQuery(sql); - query.executeUpdate(); - } -} diff --git a/src/main/java/com/jsh/dao/basic/SupplierIDAO.java b/src/main/java/com/jsh/dao/basic/SupplierIDAO.java deleted file mode 100644 index 50dd50c7..00000000 --- a/src/main/java/com/jsh/dao/basic/SupplierIDAO.java +++ /dev/null @@ -1,8 +0,0 @@ -package com.jsh.dao.basic; - -import com.jsh.base.BaseIDAO; -import com.jsh.model.po.Supplier; - -public interface SupplierIDAO extends BaseIDAO { - public void batchSetEnable(Boolean enable, String supplierIDs); -} diff --git a/src/main/java/com/jsh/dao/basic/SystemConfigDAO.java b/src/main/java/com/jsh/dao/basic/SystemConfigDAO.java deleted file mode 100644 index 79754f2d..00000000 --- a/src/main/java/com/jsh/dao/basic/SystemConfigDAO.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.jsh.dao.basic; - -import com.jsh.base.BaseDAO; -import com.jsh.model.po.SystemConfig; - -public class SystemConfigDAO extends BaseDAO implements SystemConfigIDAO { - /** - * 设置dao映射基类 - * - * @return - */ - @Override - public Class getEntityClass() { - return SystemConfig.class; - } -} diff --git a/src/main/java/com/jsh/dao/basic/SystemConfigIDAO.java b/src/main/java/com/jsh/dao/basic/SystemConfigIDAO.java deleted file mode 100644 index 01b1b735..00000000 --- a/src/main/java/com/jsh/dao/basic/SystemConfigIDAO.java +++ /dev/null @@ -1,8 +0,0 @@ -package com.jsh.dao.basic; - -import com.jsh.base.BaseIDAO; -import com.jsh.model.po.SystemConfig; - -public interface SystemConfigIDAO extends BaseIDAO { - -} diff --git a/src/main/java/com/jsh/dao/basic/UnitDAO.java b/src/main/java/com/jsh/dao/basic/UnitDAO.java deleted file mode 100644 index 674f7fce..00000000 --- a/src/main/java/com/jsh/dao/basic/UnitDAO.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.jsh.dao.basic; - -import com.jsh.base.BaseDAO; -import com.jsh.model.po.Unit; - -public class UnitDAO extends BaseDAO implements UnitIDAO { - /** - * 设置dao映射基类 - * - * @return - */ - @Override - public Class getEntityClass() { - return Unit.class; - } -} diff --git a/src/main/java/com/jsh/dao/basic/UnitIDAO.java b/src/main/java/com/jsh/dao/basic/UnitIDAO.java deleted file mode 100644 index 19e1ca65..00000000 --- a/src/main/java/com/jsh/dao/basic/UnitIDAO.java +++ /dev/null @@ -1,8 +0,0 @@ -package com.jsh.dao.basic; - -import com.jsh.base.BaseIDAO; -import com.jsh.model.po.Unit; - -public interface UnitIDAO extends BaseIDAO { - -} diff --git a/src/main/java/com/jsh/dao/basic/UserBusinessDAO.java b/src/main/java/com/jsh/dao/basic/UserBusinessDAO.java deleted file mode 100644 index da66f5b4..00000000 --- a/src/main/java/com/jsh/dao/basic/UserBusinessDAO.java +++ /dev/null @@ -1,28 +0,0 @@ -package com.jsh.dao.basic; - -import com.jsh.base.BaseDAO; -import com.jsh.model.po.UserBusiness; -import com.jsh.util.JshException; -import com.jsh.util.PageUtil; -import com.jsh.util.SearchConditionUtil; -import org.hibernate.Query; - -public class UserBusinessDAO extends BaseDAO implements UserBusinessIDAO { - /** - * 设置dao映射基类 - * - * @return - */ - @Override - public Class getEntityClass() { - return UserBusiness.class; - } - - @SuppressWarnings("unchecked") - @Override - public void find(PageUtil pageUtil, String ceshi) throws JshException { - Query query = this.getHibernateTemplate().getSessionFactory().getCurrentSession().createQuery("select count(id),sum(id) from UserBusiness userBusiness where 1=1 " + SearchConditionUtil.getCondition(pageUtil.getAdvSearch())); - pageUtil.setTotalCount(query.list().size()); - pageUtil.setPageList(query.list()); - } -} diff --git a/src/main/java/com/jsh/dao/basic/UserBusinessIDAO.java b/src/main/java/com/jsh/dao/basic/UserBusinessIDAO.java deleted file mode 100644 index 2b36142b..00000000 --- a/src/main/java/com/jsh/dao/basic/UserBusinessIDAO.java +++ /dev/null @@ -1,13 +0,0 @@ -package com.jsh.dao.basic; - -import com.jsh.base.BaseIDAO; -import com.jsh.model.po.UserBusiness; -import com.jsh.util.JshException; -import com.jsh.util.PageUtil; - -public interface UserBusinessIDAO extends BaseIDAO { - /* - * 测试hql语句 - */ - void find(PageUtil pageUtil, String ceshi) throws JshException; -} diff --git a/src/main/java/com/jsh/dao/basic/UserDAO.java b/src/main/java/com/jsh/dao/basic/UserDAO.java deleted file mode 100644 index 9cb5a6b0..00000000 --- a/src/main/java/com/jsh/dao/basic/UserDAO.java +++ /dev/null @@ -1,18 +0,0 @@ -package com.jsh.dao.basic; - -import com.jsh.base.BaseDAO; -import com.jsh.model.po.Basicuser; - -public class UserDAO extends BaseDAO implements UserIDAO { - /** - * 设置dao映射基类 - * - * @return - */ - @Override - public Class getEntityClass() { - return Basicuser.class; - } - - -} diff --git a/src/main/java/com/jsh/dao/basic/UserIDAO.java b/src/main/java/com/jsh/dao/basic/UserIDAO.java deleted file mode 100644 index ef53ae63..00000000 --- a/src/main/java/com/jsh/dao/basic/UserIDAO.java +++ /dev/null @@ -1,8 +0,0 @@ -package com.jsh.dao.basic; - -import com.jsh.base.BaseIDAO; -import com.jsh.model.po.Basicuser; - -public interface UserIDAO extends BaseIDAO { - -} diff --git a/src/main/java/com/jsh/dao/materials/AccountHeadDAO.java b/src/main/java/com/jsh/dao/materials/AccountHeadDAO.java deleted file mode 100644 index 00fb2b50..00000000 --- a/src/main/java/com/jsh/dao/materials/AccountHeadDAO.java +++ /dev/null @@ -1,46 +0,0 @@ -package com.jsh.dao.materials; - -import com.jsh.base.BaseDAO; -import com.jsh.model.po.AccountHead; -import com.jsh.util.JshException; -import com.jsh.util.PageUtil; -import com.jsh.util.SearchConditionUtil; -import org.hibernate.Query; - -/** - * @author alan - */ -public class AccountHeadDAO extends BaseDAO implements AccountHeadIDAO { - /** - * 设置dao映射基类 - * - * @return - */ - @Override - public Class getEntityClass() { - return AccountHead.class; - } - - @SuppressWarnings("unchecked") - @Override - public void find(PageUtil pageUtil, String maxid) throws JshException { - Query query = this.getHibernateTemplate().getSessionFactory().getCurrentSession().createQuery("select max(Id) as Id from AccountHead accountHead where 1=1 " + SearchConditionUtil.getCondition(pageUtil.getAdvSearch())); - pageUtil.setTotalCount(query.list().size()); - pageUtil.setPageList(query.list()); - } - - @SuppressWarnings("unchecked") - @Override - public void findAllMoney(PageUtil pageUtil, Integer supplierId, String type, String mode) throws JshException { - Query query; - String modeName = ""; - if (mode.equals("实际")) { - modeName = "ChangeAmount"; - } else if (mode.equals("合计")) { - modeName = "TotalPrice"; - } - query = this.getHibernateTemplate().getSessionFactory().getCurrentSession().createQuery("select sum(" + modeName + ") as allMoney from AccountHead accountHead where Type='" + type + "' and OrganId =" + supplierId + SearchConditionUtil.getCondition(pageUtil.getAdvSearch())); - pageUtil.setTotalCount(query.list().size()); - pageUtil.setPageList(query.list()); - } -} diff --git a/src/main/java/com/jsh/dao/materials/AccountHeadIDAO.java b/src/main/java/com/jsh/dao/materials/AccountHeadIDAO.java deleted file mode 100644 index a84c5cda..00000000 --- a/src/main/java/com/jsh/dao/materials/AccountHeadIDAO.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.jsh.dao.materials; - -import com.jsh.base.BaseIDAO; -import com.jsh.model.po.AccountHead; -import com.jsh.util.JshException; -import com.jsh.util.PageUtil; - -public interface AccountHeadIDAO extends BaseIDAO { - /* - * 获取MaxId - */ - void find(PageUtil pageUtil, String maxid) throws JshException; - - void findAllMoney(PageUtil pageUtil, Integer supplierId, String type, String mode) throws JshException; -} diff --git a/src/main/java/com/jsh/dao/materials/AccountItemDAO.java b/src/main/java/com/jsh/dao/materials/AccountItemDAO.java deleted file mode 100644 index 60714f56..00000000 --- a/src/main/java/com/jsh/dao/materials/AccountItemDAO.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.jsh.dao.materials; - -import com.jsh.base.BaseDAO; -import com.jsh.model.po.AccountItem; - -public class AccountItemDAO extends BaseDAO implements AccountItemIDAO { - /** - * 设置dao映射基类 - * - * @return - */ - @Override - public Class getEntityClass() { - return AccountItem.class; - } -} diff --git a/src/main/java/com/jsh/dao/materials/AccountItemIDAO.java b/src/main/java/com/jsh/dao/materials/AccountItemIDAO.java deleted file mode 100644 index 4982d386..00000000 --- a/src/main/java/com/jsh/dao/materials/AccountItemIDAO.java +++ /dev/null @@ -1,9 +0,0 @@ -package com.jsh.dao.materials; - -import com.jsh.base.BaseIDAO; -import com.jsh.model.po.AccountItem; - -public interface AccountItemIDAO extends BaseIDAO { - -} - diff --git a/src/main/java/com/jsh/dao/materials/DepotHeadDAO.java b/src/main/java/com/jsh/dao/materials/DepotHeadDAO.java deleted file mode 100644 index a951e532..00000000 --- a/src/main/java/com/jsh/dao/materials/DepotHeadDAO.java +++ /dev/null @@ -1,196 +0,0 @@ -package com.jsh.dao.materials; - -import com.jsh.base.BaseDAO; -import com.jsh.model.po.DepotHead; -import com.jsh.util.JshException; -import com.jsh.util.PageUtil; -import com.jsh.util.SearchConditionUtil; -import org.hibernate.Query; - -public class DepotHeadDAO extends BaseDAO implements DepotHeadIDAO { - /** - * 设置dao映射基类 - * - * @return - */ - @Override - public Class getEntityClass() { - return DepotHead.class; - } - - @SuppressWarnings("unchecked") - @Override - public void find(PageUtil pageUtil, String maxid) throws JshException { - Query query = this.getHibernateTemplate().getSessionFactory().getCurrentSession().createQuery("select max(Id) as Id from DepotHead depotHead where 1=1 " + SearchConditionUtil.getCondition(pageUtil.getAdvSearch())); - pageUtil.setTotalCount(query.list().size()); - pageUtil.setPageList(query.list()); - } - - @SuppressWarnings("unchecked") - @Override - public void findAllMoney(PageUtil pageUtil, Integer supplierId, String type, String subType, String mode) throws JshException { - Query query; - String modeName = ""; - if (mode.equals("实际")) { - modeName = "ChangeAmount"; - } else if (mode.equals("合计")) { - modeName = "DiscountLastMoney"; - } - query = this.getHibernateTemplate().getSessionFactory().getCurrentSession().createQuery("select sum(" + modeName + ") as allMoney from DepotHead depotHead where Type='" + type + "' and SubType = '" + subType + "' and OrganId =" + supplierId + SearchConditionUtil.getCondition(pageUtil.getAdvSearch())); - pageUtil.setTotalCount(query.list().size()); - pageUtil.setPageList(query.list()); - } - - @SuppressWarnings("unchecked") - @Override - public void batchSetStatus(Boolean status, String depotHeadIDs) { - String sql = "update jsh_depothead d set d.Status=" + status + " where d.id in (" + depotHeadIDs + ")"; - Query query = this.getHibernateTemplate().getSessionFactory().getCurrentSession().createSQLQuery(sql); - query.executeUpdate(); - } - - @Override - @SuppressWarnings("unchecked") - public void findInDetail(PageUtil pageUtil, String beginTime, String endTime, String type, Long pid, String dids, Long oId) throws JshException { - StringBuffer queryString = new StringBuffer(); - queryString.append("select dh.Number,m.`name`,m.Model,di.UnitPrice,di.OperNumber,di.AllPrice,s.supplier,d.dName," + - "date_format(dh.OperTime, '%Y-%m-%d'), concat(dh.SubType,dh.Type) as newType " + - "from jsh_depothead dh inner join jsh_depotitem di on di.HeaderId=dh.id " + - "inner join jsh_material m on m.id=di.MaterialId " + - "inner join jsh_supplier s on s.id=dh.OrganId " + - "inner join (select id,name as dName from jsh_depot) d on d.id=di.DepotId " + - "where dh.OperTime >='" + beginTime + "' and dh.OperTime <='" + endTime + "' "); - if (oId != null) { - queryString.append(" and dh.OrganId = " + oId); - } - if (pid != null) { - queryString.append(" and di.DepotId=" + pid); - } else { - queryString.append(" and di.DepotId in (" + dids + ")"); - } - if (type != null && !type.equals("")) { - queryString.append(" and dh.Type='" + type + "'"); - } - queryString.append(" ORDER BY OperTime DESC,Number desc"); - Query query; - query = this.getHibernateTemplate().getSessionFactory().getCurrentSession().createSQLQuery(queryString + SearchConditionUtil.getCondition(pageUtil.getAdvSearch())); - pageUtil.setTotalCount(query.list().size()); - // 分页查询 - int pageNo = pageUtil.getCurPage(); - int pageSize = pageUtil.getPageSize(); - if (0 != pageNo && 0 != pageSize) { - query.setFirstResult((pageNo - 1) * pageSize); - query.setMaxResults(pageSize); - } - pageUtil.setPageList(query.list()); - } - - @Override - @SuppressWarnings("unchecked") - public void findInOutMaterialCount(PageUtil pageUtil, String beginTime, String endTime, String type, Long pid, String dids, Long oId) throws JshException { - StringBuffer queryString = new StringBuffer(); - queryString.append("select di.MaterialId, m.mName,m.Model,m.categoryName, "); - //数量汇总 - queryString.append(" (select sum(jdi.BasicNumber) numSum from jsh_depothead jdh INNER JOIN jsh_depotitem jdi " + - "on jdh.id=jdi.HeaderId where jdi.MaterialId=di.MaterialId " + - " and jdh.type='" + type + "' and jdh.OperTime >='" + beginTime + "' and jdh.OperTime <='" + endTime + "'"); - if (oId != null) { - queryString.append(" and jdh.OrganId = " + oId); - } - if (pid != null) { - queryString.append(" and jdi.DepotId=" + pid); - } else { - queryString.append(" and jdi.DepotId in (" + dids + ")"); - } - queryString.append(" ) numSum, "); - //金额汇总 - queryString.append(" (select sum(jdi.AllPrice) priceSum from jsh_depothead jdh INNER JOIN jsh_depotitem jdi " + - "on jdh.id=jdi.HeaderId where jdi.MaterialId=di.MaterialId " + - " and jdh.type='" + type + "' and jdh.OperTime >='" + beginTime + "' and jdh.OperTime <='" + endTime + "'"); - if (oId != null) { - queryString.append(" and jdh.OrganId = " + oId); - } - if (pid != null) { - queryString.append(" and jdi.DepotId=" + pid); - } else { - queryString.append(" and jdi.DepotId in (" + dids + ")"); - } - queryString.append(" ) priceSum "); - - queryString.append(" from jsh_depothead dh INNER JOIN jsh_depotitem di on dh.id=di.HeaderId " + - " INNER JOIN (SELECT jsh_material.id,jsh_material.name mName, Model,jsh_materialcategory.`Name` categoryName from jsh_material INNER JOIN jsh_materialcategory on jsh_material.CategoryId=jsh_materialcategory.Id) m " + - " on m.Id=di.MaterialId where dh.type='" + type + "' and dh.OperTime >='" + beginTime + "' and dh.OperTime <='" + endTime + "' "); - if (oId != null) { - queryString.append(" and dh.OrganId = " + oId); - } - if (pid != null) { - queryString.append(" and di.DepotId=" + pid); - } else { - queryString.append(" and di.DepotId in (" + dids + ")"); - } - queryString.append(" GROUP BY di.MaterialId,m.mName,m.Model,m.categoryName "); - Query query; - query = this.getHibernateTemplate().getSessionFactory().getCurrentSession().createSQLQuery(queryString + SearchConditionUtil.getCondition(pageUtil.getAdvSearch())); - pageUtil.setTotalCount(query.list().size()); - // 分页查询 - int pageNo = pageUtil.getCurPage(); - int pageSize = pageUtil.getPageSize(); - if (0 != pageNo && 0 != pageSize) { - query.setFirstResult((pageNo - 1) * pageSize); - query.setMaxResults(pageSize); - } - pageUtil.setPageList(query.list()); - } - - @SuppressWarnings("unchecked") - public void findMaterialsListByHeaderId(PageUtil pageUtil, Long headerId) throws JshException { - StringBuffer queryString = new StringBuffer(); - queryString.append("select group_concat(concat(jsh_material.`Name`,' ',jsh_material.Model)) as mName from jsh_depotitem inner join jsh_material " + - " on jsh_depotitem.MaterialId = jsh_material.Id where jsh_depotitem.HeaderId =" + headerId); - Query query = this.getHibernateTemplate().getSessionFactory().getCurrentSession().createSQLQuery(queryString + SearchConditionUtil.getCondition(pageUtil.getAdvSearch())); - pageUtil.setPageList(query.list()); - } - - @SuppressWarnings("unchecked") - public void findStatementAccount(PageUtil pageUtil, String beginTime, String endTime, Long organId, String supType) throws JshException { - StringBuffer queryString = new StringBuffer(); - queryString.append("select dh.Number,concat(dh.SubType,dh.Type) as newType,dh.DiscountLastMoney,dh.ChangeAmount,s.supplier,date_format(dh.OperTime,'%Y-%m-%d %H:%i:%S') as oTime from jsh_depothead dh " + - "inner join jsh_supplier s on s.id=dh.OrganId where s.type='" + supType + "' and dh.SubType!='其它' " + - "and dh.OperTime >='" + beginTime + "' and dh.OperTime<='" + endTime + "' "); - if (organId != null && !organId.equals("")) { - queryString.append(" and dh.OrganId='" + organId + "' "); - } - queryString.append("UNION ALL " + - "select ah.BillNo,ah.Type as newType,ah.TotalPrice,ah.ChangeAmount,s.supplier,date_format(ah.BillTime,'%Y-%m-%d %H:%i:%S') as oTime from jsh_accounthead ah " + - "inner join jsh_supplier s on s.id=ah.OrganId where s.type='" + supType + "' " + - "and ah.BillTime >='" + beginTime + "' and ah.BillTime<='" + endTime + "' "); - if (organId != null && !organId.equals("")) { - queryString.append(" and ah.OrganId='" + organId + "' "); - } - queryString.append(" ORDER BY oTime"); - Query query; - query = this.getHibernateTemplate().getSessionFactory().getCurrentSession().createSQLQuery(queryString + SearchConditionUtil.getCondition(pageUtil.getAdvSearch())); - pageUtil.setTotalCount(query.list().size()); - // 分页查询 - int pageNo = pageUtil.getCurPage(); - int pageSize = pageUtil.getPageSize(); - if (0 != pageNo && 0 != pageSize) { - query.setFirstResult((pageNo - 1) * pageSize); - query.setMaxResults(pageSize); - } - pageUtil.setPageList(query.list()); - } - - @Override - @SuppressWarnings("unchecked") - public void getHeaderIdByMaterial(PageUtil pageUtil, String materialParam, String depotIds) throws JshException { - StringBuffer queryString = new StringBuffer(); - queryString.append("select dt.HeaderId from jsh_depotitem dt INNER JOIN jsh_material m on dt.MaterialId = m.Id where ( m.`Name` " + - " like '%" + materialParam + "%' or m.Model like '%" + materialParam + "%') "); - if (!depotIds.equals("")) { - queryString.append(" and dt.DepotId in (" + depotIds + ") "); - } - Query query = this.getHibernateTemplate().getSessionFactory().getCurrentSession().createSQLQuery(queryString + SearchConditionUtil.getCondition(pageUtil.getAdvSearch())); - pageUtil.setPageList(query.list()); - } -} diff --git a/src/main/java/com/jsh/dao/materials/DepotHeadIDAO.java b/src/main/java/com/jsh/dao/materials/DepotHeadIDAO.java deleted file mode 100644 index bf00e0b6..00000000 --- a/src/main/java/com/jsh/dao/materials/DepotHeadIDAO.java +++ /dev/null @@ -1,28 +0,0 @@ -package com.jsh.dao.materials; - -import com.jsh.base.BaseIDAO; -import com.jsh.model.po.DepotHead; -import com.jsh.util.JshException; -import com.jsh.util.PageUtil; - -public interface DepotHeadIDAO extends BaseIDAO { - /* - * 获取MaxId - */ - void find(PageUtil pageUtil, String maxid) throws JshException; - - void findAllMoney(PageUtil pageUtil, Integer supplierId, String type, String subType, String mode) throws JshException; - - void batchSetStatus(Boolean status, String depotHeadIDs); - - void findInDetail(PageUtil pageUtil, String beginTime, String endTime, String type, Long pid, String dids, Long oId) throws JshException; - - void findInOutMaterialCount(PageUtil pageUtil, String beginTime, String endTime, String type, Long pid, String dids, Long oId) throws JshException; - - void findMaterialsListByHeaderId(PageUtil pageUtil, Long headerId) throws JshException; - - void findStatementAccount(PageUtil pageUtil, String beginTime, String endTime, Long organId, String supType) throws JshException; - - void getHeaderIdByMaterial(PageUtil pageUtil, String materialParam, String depotIds) throws JshException; - -} diff --git a/src/main/java/com/jsh/dao/materials/DepotItemDAO.java b/src/main/java/com/jsh/dao/materials/DepotItemDAO.java deleted file mode 100644 index a942fa85..00000000 --- a/src/main/java/com/jsh/dao/materials/DepotItemDAO.java +++ /dev/null @@ -1,175 +0,0 @@ -package com.jsh.dao.materials; - -import com.jsh.base.BaseDAO; -import com.jsh.model.po.DepotItem; -import com.jsh.util.JshException; -import com.jsh.util.PageUtil; -import com.jsh.util.SearchConditionUtil; -import org.hibernate.Query; - -public class DepotItemDAO extends BaseDAO implements DepotItemIDAO { - private final static String TYPE = "入库"; - private final static String SUM_TYPE = "Number"; - private final static String IN = "in"; - private final static String OUT = "out"; - - /** - * 设置dao映射基类 - * - * @return - */ - @Override - public Class getEntityClass() { - return DepotItem.class; - } - - @SuppressWarnings("unchecked") - @Override - public void findByType(PageUtil pageUtil, String type, Integer dId, Long MId, String MonthTime, Boolean isPrev) throws JshException { - //多表联查,多表连查,此处用到了createSQLQuery,可以随便写sql语句,很方便 - Query query; - StringBuilder queryString = new StringBuilder(); - if (TYPE.equals(type)) { - if (isPrev) { - queryString.append("select sum(BasicNumber) as BasicNumber from jsh_depotitem di,jsh_depothead dh where di.HeaderId = dh.id "); - queryString.append(" and ((type='入库' and DepotId='").append(dId).append("') ").append(" or (SubType='调拨' and AnotherDepotId='").append(dId).append("') ").append(" or (SubType='礼品充值' and AnotherDepotId='").append(dId).append("')) "); - queryString.append(" and MaterialId =").append(MId).append(" and dh.OperTime <'").append(MonthTime).append("-01 00:00:00' "); - query = this.getHibernateTemplate().getSessionFactory().getCurrentSession().createSQLQuery(queryString + SearchConditionUtil.getCondition(pageUtil.getAdvSearch())); - } else { - queryString.append("select sum(BasicNumber) as BasicNumber from jsh_depotitem di,jsh_depothead dh where di.HeaderId = dh.id "); - queryString.append(" and ((type='入库' and DepotId='").append(dId).append("') ").append(" or (SubType='调拨' and AnotherDepotId='").append(dId).append("') ").append(" or (SubType='礼品充值' and AnotherDepotId='").append(dId).append("')) "); - queryString.append(" and MaterialId =").append(MId).append(" and dh.OperTime >='").append(MonthTime).append("-01 00:00:00' and dh.OperTime <='").append(MonthTime).append("-31 59:59:59' "); - query = this.getHibernateTemplate().getSessionFactory().getCurrentSession().createSQLQuery(queryString + SearchConditionUtil.getCondition(pageUtil.getAdvSearch())); - } - } else { - if (isPrev) { - queryString.append("select sum(BasicNumber) as BasicNumber from jsh_depotitem,jsh_depothead where jsh_depotitem.HeaderId = jsh_depothead.id and type='出库'"); - queryString.append(" and DepotId='").append(dId).append("'"); - queryString.append(" and MaterialId =").append(MId).append(" and jsh_depothead.OperTime <'").append(MonthTime).append("-01 00:00:00' "); - query = this.getHibernateTemplate().getSessionFactory().getCurrentSession().createSQLQuery(queryString + SearchConditionUtil.getCondition(pageUtil.getAdvSearch())); - } else { - queryString.append("select sum(BasicNumber) as BasicNumber from jsh_depotitem,jsh_depothead where jsh_depotitem.HeaderId = jsh_depothead.id and type='出库'"); - queryString.append(" and DepotId='").append(dId).append("'"); - queryString.append(" and MaterialId =").append(MId).append(" and jsh_depothead.OperTime >='").append(MonthTime).append("-01 00:00:00' and jsh_depothead.OperTime <='").append(MonthTime).append("-31 59:59:59' "); - query = this.getHibernateTemplate().getSessionFactory().getCurrentSession().createSQLQuery(queryString + SearchConditionUtil.getCondition(pageUtil.getAdvSearch())); - } - } - pageUtil.setTotalCount(query.list().size()); - pageUtil.setPageList(query.list()); - } - - @SuppressWarnings("unchecked") - @Override - public void findPriceByType(PageUtil pageUtil, String type, Integer dId, Long MId, String MonthTime, Boolean isPrev) throws JshException { - //多表联查,多表连查,此处用到了createSQLQuery,可以随便写sql语句,很方便 - Query query; - StringBuilder queryString = new StringBuilder(); - if (TYPE.equals(type)) { - if (isPrev) { - queryString.append("select sum(AllPrice) as AllPrice from jsh_depotitem di,jsh_depothead dh where di.HeaderId = dh.id "); - queryString.append(" and ((type='入库' and DepotId='").append(dId).append("') ").append(" or (SubType='调拨' and AnotherDepotId='").append(dId).append("') ").append(" or (SubType='礼品充值' and AnotherDepotId='").append(dId).append("')) "); - queryString.append(" and MaterialId =").append(MId).append(" and dh.OperTime <'").append(MonthTime).append("-01 00:00:00' "); - query = this.getHibernateTemplate().getSessionFactory().getCurrentSession().createSQLQuery(queryString + SearchConditionUtil.getCondition(pageUtil.getAdvSearch())); - } else { - queryString.append("select sum(AllPrice) as AllPrice from jsh_depotitem di,jsh_depothead dh where di.HeaderId = dh.id "); - queryString.append(" and ((type='入库' and DepotId='").append(dId).append("') ").append(" or (SubType='调拨' and AnotherDepotId='").append(dId).append("') ").append(" or (SubType='礼品充值' and AnotherDepotId='").append(dId).append("')) "); - queryString.append(" and MaterialId =").append(MId).append(" and dh.OperTime >='").append(MonthTime).append("-01 00:00:00' and dh.OperTime <='").append(MonthTime).append("-31 59:59:59' "); - query = this.getHibernateTemplate().getSessionFactory().getCurrentSession().createSQLQuery(queryString + SearchConditionUtil.getCondition(pageUtil.getAdvSearch())); - } - } else { - if (isPrev) { - queryString.append("select sum(AllPrice) as AllPrice from jsh_depotitem,jsh_depothead where jsh_depotitem.HeaderId = jsh_depothead.id and type='出库'"); - queryString.append(" and DepotId='").append(dId).append("'"); - queryString.append(" and MaterialId =").append(MId).append(" and jsh_depothead.OperTime <'").append(MonthTime).append("-01 00:00:00' "); - query = this.getHibernateTemplate().getSessionFactory().getCurrentSession().createSQLQuery(queryString + SearchConditionUtil.getCondition(pageUtil.getAdvSearch())); - } else { - queryString.append("select sum(AllPrice) as AllPrice from jsh_depotitem,jsh_depothead where jsh_depotitem.HeaderId = jsh_depothead.id and type='出库'"); - queryString.append(" and DepotId='").append(dId).append("'"); - queryString.append(" and MaterialId =").append(MId).append(" and jsh_depothead.OperTime >='").append(MonthTime).append("-01 00:00:00' and jsh_depothead.OperTime <='").append(MonthTime).append("-31 59:59:59' "); - query = this.getHibernateTemplate().getSessionFactory().getCurrentSession().createSQLQuery(queryString + SearchConditionUtil.getCondition(pageUtil.getAdvSearch())); - } - } - pageUtil.setTotalCount(query.list().size()); - pageUtil.setPageList(query.list()); - } - - @SuppressWarnings("unchecked") - @Override - public void findByTypeAndMaterialId(PageUtil pageUtil, String type, Long MId) throws JshException { - //多表联查,多表连查,此处用到了createSQLQuery,可以随便写sql语句,很方便 - Query query; - StringBuilder queryString = new StringBuilder(); - if (TYPE.equals(type)) { - queryString.append("select sum(BasicNumber) as BasicNumber from jsh_depothead dh INNER JOIN jsh_depotitem di on dh.id=di.HeaderId where type='入库'"); - queryString.append(" and MaterialId =").append(MId); - query = this.getHibernateTemplate().getSessionFactory().getCurrentSession().createSQLQuery(queryString + SearchConditionUtil.getCondition(pageUtil.getAdvSearch())); - } else { - queryString.append("select sum(BasicNumber) as BasicNumber from jsh_depothead dh INNER JOIN jsh_depotitem di on dh.id=di.HeaderId where type='出库'"); - queryString.append(" and SubType!='调拨' and SubType!='礼品充值' and MaterialId =").append(MId); - query = this.getHibernateTemplate().getSessionFactory().getCurrentSession().createSQLQuery(queryString + SearchConditionUtil.getCondition(pageUtil.getAdvSearch())); - } - pageUtil.setTotalCount(query.list().size()); - pageUtil.setPageList(query.list()); - } - - @SuppressWarnings("unchecked") - @Override - public void findDetailByTypeAndMaterialId(PageUtil pageUtil, Long MId) throws JshException { - //多表联查,多表连查,此处用到了createSQLQuery,可以随便写sql语句,很方便 - Query query; - StringBuilder queryString = new StringBuilder(); - queryString.append("select dh.Number,concat(dh.SubType,dh.Type) as newType, " + - "case when type='入库' then di.BasicNumber when type='出库' then 0-di.BasicNumber else 0 end as b_num, " + - "date_format(dh.OperTime,'%Y-%m-%d %H:%i:%S') as oTime " + - "from jsh_depothead dh INNER JOIN jsh_depotitem di on dh.id=di.HeaderId where type!='其它' " + - "and SubType!='调拨' and SubType!='礼品充值' "); - queryString.append(" and MaterialId =").append(MId).append(" ORDER BY oTime desc "); - query = this.getHibernateTemplate().getSessionFactory().getCurrentSession().createSQLQuery(queryString + SearchConditionUtil.getCondition(pageUtil.getAdvSearch())); - pageUtil.setTotalCount(query.list().size()); - // 分页查询 - int pageNo = pageUtil.getCurPage(); - int pageSize = pageUtil.getPageSize(); - if (0 != pageNo && 0 != pageSize) { - query.setFirstResult((pageNo - 1) * pageSize); - query.setMaxResults(pageSize); - } - pageUtil.setPageList(query.list()); - } - - @SuppressWarnings("unchecked") - @Override - public void buyOrSale(PageUtil pageUtil, String type, String subType, Long MId, String MonthTime, String sumType) throws JshException { - //多表联查,多表连查,此处用到了createSQLQuery,可以随便写sql语句,很方便 - Query query; - if (SUM_TYPE.equals(sumType)) { - query = this.getHibernateTemplate().getSessionFactory().getCurrentSession().createSQLQuery("select sum(BasicNumber) as BasicNumber from jsh_depotitem,jsh_depothead where jsh_depotitem.HeaderId = jsh_depothead.id and type='" + type + "' and subType='" + subType + "' and MaterialId =" + MId + " and jsh_depothead.OperTime >='" + MonthTime + "-01 00:00:00' and jsh_depothead.OperTime <='" + MonthTime + "-31 59:59:59' " + SearchConditionUtil.getCondition(pageUtil.getAdvSearch())); - } else { - query = this.getHibernateTemplate().getSessionFactory().getCurrentSession().createSQLQuery("select sum(AllPrice) as AllPrice from jsh_depotitem,jsh_depothead where jsh_depotitem.HeaderId = jsh_depothead.id and type='" + type + "' and subType='" + subType + "' and MaterialId =" + MId + " and jsh_depothead.OperTime >='" + MonthTime + "-01 00:00:00' and jsh_depothead.OperTime <='" + MonthTime + "-31 59:59:59' " + SearchConditionUtil.getCondition(pageUtil.getAdvSearch())); - } - pageUtil.setTotalCount(query.list().size()); - pageUtil.setPageList(query.list()); - } - - @SuppressWarnings("unchecked") - @Override - public void findGiftByType(PageUtil pageUtil, String subType, Integer ProjectId, Long MId, String type) throws JshException { - //多表联查,多表连查,此处用到了createSQLQuery,可以随便写sql语句,很方便 - Query query; - StringBuilder queryString = new StringBuilder(); - queryString.append("select sum(BasicNumber) as BasicNumber from jsh_depotitem,jsh_depothead where jsh_depotitem.HeaderId = jsh_depothead.id and jsh_depothead.SubType='").append(subType).append("'"); - if (ProjectId != null) { - if (IN.equals(type)) { - queryString.append(" and jsh_depotitem.AnotherDepotId='").append(ProjectId).append("'"); //礼品充值时 - } else if (OUT.equals(type)) { - queryString.append(" and jsh_depotitem.DepotId='").append(ProjectId).append("'"); - } - } - queryString.append(" and jsh_depotitem.MaterialId =").append(MId); - query = this.getHibernateTemplate().getSessionFactory().getCurrentSession().createSQLQuery(queryString + SearchConditionUtil.getCondition(pageUtil.getAdvSearch())); - pageUtil.setTotalCount(query.list().size()); - pageUtil.setPageList(query.list()); - } -} - - - diff --git a/src/main/java/com/jsh/dao/materials/DepotItemIDAO.java b/src/main/java/com/jsh/dao/materials/DepotItemIDAO.java deleted file mode 100644 index 3cb22f5a..00000000 --- a/src/main/java/com/jsh/dao/materials/DepotItemIDAO.java +++ /dev/null @@ -1,20 +0,0 @@ -package com.jsh.dao.materials; - -import com.jsh.base.BaseIDAO; -import com.jsh.model.po.DepotItem; -import com.jsh.util.JshException; -import com.jsh.util.PageUtil; - -public interface DepotItemIDAO extends BaseIDAO { - public void findByType(PageUtil pageUtil, String type, Integer ProjectId, Long MId, String MonthTime, Boolean isPrev) throws JshException; - - public void findByTypeAndMaterialId(PageUtil pageUtil, String type, Long MId) throws JshException; - - public void findDetailByTypeAndMaterialId(PageUtil pageUtil, Long MId) throws JshException; - - public void findPriceByType(PageUtil pageUtil, String type, Integer ProjectId, Long MId, String MonthTime, Boolean isPrev) throws JshException; - - public void buyOrSale(PageUtil pageUtil, String type, String subType, Long MId, String MonthTime, String sumType) throws JshException; - - public void findGiftByType(PageUtil pageUtil, String subType, Integer ProjectId, Long MId, String type) throws JshException; -} diff --git a/src/main/java/com/jsh/dao/materials/MaterialCategoryDAO.java b/src/main/java/com/jsh/dao/materials/MaterialCategoryDAO.java deleted file mode 100644 index 60d2e15f..00000000 --- a/src/main/java/com/jsh/dao/materials/MaterialCategoryDAO.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.jsh.dao.materials; - -import com.jsh.base.BaseDAO; -import com.jsh.model.po.MaterialCategory; - -public class MaterialCategoryDAO extends BaseDAO implements MaterialCategoryIDAO { - /** - * 设置dao映射基类 - * - * @return - */ - @Override - public Class getEntityClass() { - return MaterialCategory.class; - } -} diff --git a/src/main/java/com/jsh/dao/materials/MaterialCategoryIDAO.java b/src/main/java/com/jsh/dao/materials/MaterialCategoryIDAO.java deleted file mode 100644 index e2927851..00000000 --- a/src/main/java/com/jsh/dao/materials/MaterialCategoryIDAO.java +++ /dev/null @@ -1,8 +0,0 @@ -package com.jsh.dao.materials; - -import com.jsh.base.BaseIDAO; -import com.jsh.model.po.MaterialCategory; - -public interface MaterialCategoryIDAO extends BaseIDAO { - -} diff --git a/src/main/java/com/jsh/dao/materials/MaterialDAO.java b/src/main/java/com/jsh/dao/materials/MaterialDAO.java deleted file mode 100644 index a2541d3f..00000000 --- a/src/main/java/com/jsh/dao/materials/MaterialDAO.java +++ /dev/null @@ -1,41 +0,0 @@ -package com.jsh.dao.materials; - -import com.jsh.base.BaseDAO; -import com.jsh.model.po.Material; -import com.jsh.util.JshException; -import com.jsh.util.PageUtil; -import com.jsh.util.SearchConditionUtil; -import org.hibernate.Query; - -public class MaterialDAO extends BaseDAO implements MaterialIDAO { - /** - * 设置dao映射基类 - * - * @return - */ - @Override - public Class getEntityClass() { - return Material.class; - } - - @SuppressWarnings("unchecked") - @Override - public void batchSetEnable(Boolean enable, String supplierIDs) { - String sql = "update jsh_material m set m.enabled=" + enable + " where m.id in (" + supplierIDs + ")"; - Query query = this.getHibernateTemplate().getSessionFactory().getCurrentSession().createSQLQuery(sql); - query.executeUpdate(); - } - - @SuppressWarnings("unchecked") - @Override - public void findUnitName(PageUtil pageUtil, Long mId) throws JshException { - //多表联查,多表连查,此处用到了createSQLQuery,可以随便写sql语句,很方便, - StringBuffer queryString = new StringBuffer(); - queryString.append("select jsh_unit.UName from jsh_unit inner join jsh_material on UnitId=jsh_unit.id where jsh_material.id=" + mId); - Query query; - query = this.getHibernateTemplate().getSessionFactory().getCurrentSession().createSQLQuery(queryString + SearchConditionUtil.getCondition(pageUtil.getAdvSearch())); - pageUtil.setTotalCount(query.list().size()); - pageUtil.setPageList(query.list()); - } - -} diff --git a/src/main/java/com/jsh/dao/materials/MaterialIDAO.java b/src/main/java/com/jsh/dao/materials/MaterialIDAO.java deleted file mode 100644 index 641bf3ac..00000000 --- a/src/main/java/com/jsh/dao/materials/MaterialIDAO.java +++ /dev/null @@ -1,12 +0,0 @@ -package com.jsh.dao.materials; - -import com.jsh.base.BaseIDAO; -import com.jsh.model.po.Material; -import com.jsh.util.JshException; -import com.jsh.util.PageUtil; - -public interface MaterialIDAO extends BaseIDAO { - public void batchSetEnable(Boolean enable, String supplierIDs); - - public void findUnitName(PageUtil pageUtil, Long mId) throws JshException; -} diff --git a/src/main/java/com/jsh/dao/materials/MaterialPropertyDAO.java b/src/main/java/com/jsh/dao/materials/MaterialPropertyDAO.java deleted file mode 100644 index b7e33060..00000000 --- a/src/main/java/com/jsh/dao/materials/MaterialPropertyDAO.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.jsh.dao.materials; - -import com.jsh.base.BaseDAO; -import com.jsh.model.po.MaterialProperty; - -public class MaterialPropertyDAO extends BaseDAO implements MaterialPropertyIDAO { - /** - * 设置dao映射基类 - * - * @return - */ - @Override - public Class getEntityClass() { - return MaterialProperty.class; - } -} diff --git a/src/main/java/com/jsh/dao/materials/MaterialPropertyIDAO.java b/src/main/java/com/jsh/dao/materials/MaterialPropertyIDAO.java deleted file mode 100644 index 754160c4..00000000 --- a/src/main/java/com/jsh/dao/materials/MaterialPropertyIDAO.java +++ /dev/null @@ -1,8 +0,0 @@ -package com.jsh.dao.materials; - -import com.jsh.base.BaseIDAO; -import com.jsh.model.po.MaterialProperty; - -public interface MaterialPropertyIDAO extends BaseIDAO { - -} diff --git a/src/main/java/com/jsh/dao/materials/PersonDAO.java b/src/main/java/com/jsh/dao/materials/PersonDAO.java deleted file mode 100644 index 6a5d65dc..00000000 --- a/src/main/java/com/jsh/dao/materials/PersonDAO.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.jsh.dao.materials; - -import com.jsh.base.BaseDAO; -import com.jsh.model.po.Person; - -public class PersonDAO extends BaseDAO implements PersonIDAO { - /** - * 设置dao映射基类 - * - * @return - */ - @Override - public Class getEntityClass() { - return Person.class; - } -} diff --git a/src/main/java/com/jsh/dao/materials/PersonIDAO.java b/src/main/java/com/jsh/dao/materials/PersonIDAO.java deleted file mode 100644 index d97e31f7..00000000 --- a/src/main/java/com/jsh/dao/materials/PersonIDAO.java +++ /dev/null @@ -1,8 +0,0 @@ -package com.jsh.dao.materials; - -import com.jsh.base.BaseIDAO; -import com.jsh.model.po.Person; - -public interface PersonIDAO extends BaseIDAO { - -} diff --git a/src/main/java/com/jsh/erp/ErpApplication.java b/src/main/java/com/jsh/erp/ErpApplication.java new file mode 100644 index 00000000..8a94ce46 --- /dev/null +++ b/src/main/java/com/jsh/erp/ErpApplication.java @@ -0,0 +1,15 @@ +package com.jsh.erp; + +import org.mybatis.spring.annotation.MapperScan; +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.scheduling.annotation.EnableScheduling; + +@SpringBootApplication +@MapperScan(basePackages = {"com.jsh.erp.datasource.mappers"}) +@EnableScheduling +public class ErpApplication { + public static void main(String[] args) { + SpringApplication.run(ErpApplication.class, args); + } +} diff --git a/src/main/java/com/jsh/erp/config/DbConfig.java b/src/main/java/com/jsh/erp/config/DbConfig.java new file mode 100644 index 00000000..7ba75140 --- /dev/null +++ b/src/main/java/com/jsh/erp/config/DbConfig.java @@ -0,0 +1,97 @@ +package com.jsh.erp.config; + +import com.alibaba.druid.pool.DruidDataSource; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Primary; +import org.springframework.jdbc.core.JdbcTemplate; +import org.springframework.transaction.annotation.EnableTransactionManagement; + +import javax.sql.DataSource; + + +@Configuration +@EnableTransactionManagement(proxyTargetClass = true) +public class DbConfig { + private static final Logger logger = LoggerFactory.getLogger(DbConfig.class); + + @Bean(name = "erpDatasource") + @Primary + public DataSource erpDatasource(ErpDatasourceProperties properties){ + try { + DruidDataSource datasource = new DruidDataSource(); + datasource.setDriverClassName(properties.driverClassName); + datasource.setUrl(properties.url); + datasource.setUsername(properties.username); + datasource.setPassword(properties.password); + datasource.setInitialSize(1); + datasource.setMinIdle(1); + datasource.setMaxWait(60000); + datasource.setMaxActive(5); + datasource.setTimeBetweenEvictionRunsMillis(60000); + datasource.setValidationQuery("select '1'"); + datasource.setTestOnBorrow(false); + datasource.setTestOnReturn(false); + datasource.setTestWhileIdle(true); + datasource.setPoolPreparedStatements(true); + datasource.setMaxOpenPreparedStatements(20); + datasource.setMinEvictableIdleTimeMillis(300000); + datasource.init(); + return datasource; + }catch (Exception e){ + logger.error("服务启动失败,jsh_erp数据库Datasource初始化失败:"+e.getMessage()); + throw new IllegalArgumentException(e); + } + } + + @Bean + @Primary + public JdbcTemplate jdbcTemplate(@Qualifier("erpDatasource") DataSource dataSource) { + return new JdbcTemplate(dataSource); + } + + @Configuration + @ConfigurationProperties(prefix = "erpDatasource") + public static class ErpDatasourceProperties { + private String driverClassName; + private String url; + private String username; + private String password; + + public String getDriverClassName() { + return driverClassName; + } + + public void setDriverClassName(String driverClassName) { + this.driverClassName = driverClassName; + } + + public String getUrl() { + return url; + } + + public void setUrl(String url) { + this.url = url; + } + + public String getUsername() { + return username; + } + + public void setUsername(String username) { + this.username = username; + } + + public String getPassword() { + return password; + } + + public void setPassword(String password) { + this.password = password; + } + } +} diff --git a/src/main/java/com/jsh/erp/config/WebConfig.java b/src/main/java/com/jsh/erp/config/WebConfig.java new file mode 100644 index 00000000..3ee2c26a --- /dev/null +++ b/src/main/java/com/jsh/erp/config/WebConfig.java @@ -0,0 +1,40 @@ +package com.jsh.erp.config; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.boot.context.embedded.ConfigurableEmbeddedServletContainer; +import org.springframework.boot.context.embedded.EmbeddedServletContainerCustomizer; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.context.annotation.Configuration; +import java.io.File; + +@Configuration +public class WebConfig { + private static final Logger logger = LoggerFactory.getLogger(WebConfig.class); + + @Configuration + @ConfigurationProperties(prefix = "web.front") + public static class FrontEnd implements EmbeddedServletContainerCustomizer { + private File baseDir; + + public File getBaseDir() { + return baseDir; + } + + public void setBaseDir(File baseDir) { + this.baseDir = baseDir; + } + + @Override + public void customize(ConfigurableEmbeddedServletContainer container) { + if (!baseDir.exists()) { + if (!baseDir.mkdir()) { + logger.info("create web.front base path:" + baseDir + " failed!already exists!"); + } else { + logger.info("create web.front base path:" + baseDir + " success!"); + } + } + container.setDocumentRoot(baseDir); + } + } +} \ No newline at end of file diff --git a/src/main/java/com/jsh/erp/controller/AccountController.java b/src/main/java/com/jsh/erp/controller/AccountController.java new file mode 100644 index 00000000..247b90fd --- /dev/null +++ b/src/main/java/com/jsh/erp/controller/AccountController.java @@ -0,0 +1,124 @@ +package com.jsh.erp.controller; + +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.jsh.erp.datasource.entities.Account; +import com.jsh.erp.datasource.vo.AccountVo4InOutList; +import com.jsh.erp.service.account.AccountService; +import com.jsh.erp.utils.BaseResponseInfo; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +@RestController +@RequestMapping(value = "/account") +public class AccountController { + private Logger logger = LoggerFactory.getLogger(AccountController.class); + + @Resource + private AccountService accountService; + + /** + * 查找结算账户信息-下拉框 + * @param request + * @return + */ + @GetMapping(value = "/findBySelect") + public String findBySelect(HttpServletRequest request) { + String res = null; + try { + List dataList = accountService.findBySelect(); + //存放数据json数组 + JSONArray dataArray = new JSONArray(); + if (null != dataList) { + for (Account account : dataList) { + JSONObject item = new JSONObject(); + item.put("Id", account.getId()); + //结算账户名称 + item.put("AccountName", account.getName()); + dataArray.add(item); + } + } + res = dataArray.toJSONString(); + } catch(Exception e){ + e.printStackTrace(); + res = "获取数据失败"; + } + return res; + } + + /** + * 获取所有结算账户 + * @param request + * @return + */ + @GetMapping(value = "/getAccount") + public BaseResponseInfo getAccount(HttpServletRequest request) { + BaseResponseInfo res = new BaseResponseInfo(); + Map map = new HashMap(); + try { + List accountList = accountService.getAccount(); + map.put("accountList", accountList); + res.code = 200; + res.data = map; + } catch(Exception e){ + e.printStackTrace(); + res.code = 500; + res.data = "获取数据失败"; + } + return res; + } + + /** + * 账户流水信息 + * @param currentPage + * @param pageSize + * @param accountId + * @param initialAmount + * @param request + * @return + */ + @GetMapping(value = "/findAccountInOutList") + public BaseResponseInfo findAccountInOutList(@RequestParam("currentPage") Integer currentPage, + @RequestParam("pageSize") Integer pageSize, + @RequestParam("accountId") Long accountId, + @RequestParam("initialAmount") Double initialAmount, + HttpServletRequest request) { + BaseResponseInfo res = new BaseResponseInfo(); + Map map = new HashMap(); + try { + List dataList = accountService.findAccountInOutList(accountId, (currentPage-1)*pageSize, pageSize); + int total = accountService.findAccountInOutListCount(accountId); + map.put("total", total); + //存放数据json数组 + JSONArray dataArray = new JSONArray(); + if (null != dataList) { + for (AccountVo4InOutList aEx : dataList) { + String timeStr = aEx.getOperTime().toString(); + Double balance = accountService.getAccountSum(accountId, timeStr, "date") + accountService.getAccountSumByHead(accountId, timeStr, "date") + + accountService.getAccountSumByDetail(accountId, timeStr, "date") + accountService.getManyAccountSum(accountId, timeStr, "date") + initialAmount; + aEx.setBalance(balance); + dataArray.add(aEx); + } + } + map.put("rows", dataArray); + res.code = 200; + res.data = map; + } catch(Exception e){ + e.printStackTrace(); + res.code = 500; + res.data = "获取数据失败"; + } + return res; + } + +} diff --git a/src/main/java/com/jsh/erp/controller/AccountHeadController.java b/src/main/java/com/jsh/erp/controller/AccountHeadController.java new file mode 100644 index 00000000..d991a04c --- /dev/null +++ b/src/main/java/com/jsh/erp/controller/AccountHeadController.java @@ -0,0 +1,146 @@ +package com.jsh.erp.controller; + +import com.alibaba.fastjson.JSONObject; +import com.jsh.erp.datasource.entities.AccountHead; +import com.jsh.erp.datasource.entities.AccountHeadVo4ListEx; +import com.jsh.erp.service.accountHead.AccountHeadService; +import com.jsh.erp.utils.BaseResponseInfo; +import com.jsh.erp.utils.ErpInfo; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import static com.jsh.erp.utils.ResponseJsonUtil.returnJson; + +@RestController +@RequestMapping(value = "/accountHead") +public class AccountHeadController { + private Logger logger = LoggerFactory.getLogger(AccountHeadController.class); + + @Resource + private AccountHeadService accountHeadService; + + /** + * 获取最大的id + * @param request + * @return + */ + @GetMapping(value = "/getMaxId") + public BaseResponseInfo getMaxId(HttpServletRequest request) { + BaseResponseInfo res = new BaseResponseInfo(); + Map map = new HashMap(); + try { + Long maxId = accountHeadService.getMaxId(); + map.put("maxId", maxId); + res.code = 200; + res.data = map; + } catch(Exception e){ + e.printStackTrace(); + res.code = 500; + res.data = "获取数据失败"; + } + return res; + } + + /** + * 查询单位的累计应收和累计应付,收预付款不计入此处 + * @param supplierId + * @param endTime + * @param supType + * @param request + * @return + */ + @GetMapping(value = "/findTotalPay") + public BaseResponseInfo findTotalPay(@RequestParam("supplierId") Integer supplierId, + @RequestParam("endTime") String endTime, + @RequestParam("supType") String supType, + HttpServletRequest request) { + BaseResponseInfo res = new BaseResponseInfo(); + Map map = new HashMap(); + try { + JSONObject outer = new JSONObject(); + Double sum = 0.0; + String getS = supplierId.toString(); + int i = 1; + if (supType.equals("customer")) { //客户 + i = 1; + } else if (supType.equals("vendor")) { //供应商 + i = -1; + } + //收付款部分 + sum = sum + (allMoney(getS, "付款", "合计",endTime) + allMoney(getS, "付款", "实际",endTime)) * i; + sum = sum - (allMoney(getS, "收款", "合计",endTime) + allMoney(getS, "收款", "实际",endTime)) * i; + sum = sum + (allMoney(getS, "收入", "合计",endTime) - allMoney(getS, "收入", "实际",endTime)) * i; + sum = sum - (allMoney(getS, "支出", "合计",endTime) - allMoney(getS, "支出", "实际",endTime)) * i; + outer.put("getAllMoney", sum); + map.put("rows", outer); + res.code = 200; + res.data = map; + } catch (Exception e) { + e.printStackTrace(); + res.code = 500; + res.data = "获取数据失败"; + } + return res; + } + + /** + * 根据编号查询单据信息 + * @param number + * @param request + * @return + */ + @GetMapping(value = "/getDetailByNumber") + public BaseResponseInfo getDetailByNumber(@RequestParam("billNo") String billNo, + HttpServletRequest request) { + BaseResponseInfo res = new BaseResponseInfo(); + AccountHeadVo4ListEx ahl = new AccountHeadVo4ListEx(); + try { + List list = accountHeadService.getDetailByNumber(billNo); + if(list.size() == 1) { + ahl = list.get(0); + } + res.code = 200; + res.data = ahl; + } catch(Exception e){ + e.printStackTrace(); + res.code = 500; + res.data = "获取数据失败"; + } + return res; + } + + /** + * 统计总金额 + * @param getS + * @param type + * @param subType + * @param mode 合计或者金额 + * @return + */ + public Double allMoney(String getS, String type, String mode, String endTime) { + Double allMoney = 0.0; + try { + Integer supplierId = Integer.valueOf(getS); + Double sum = accountHeadService.findAllMoney(supplierId, type, mode, endTime); + if(sum != null) { + allMoney = sum; + } + } catch (Exception e) { + e.printStackTrace(); + } + //返回正数,如果负数也转为正数 + if (allMoney < 0) { + allMoney = -allMoney; + } + return allMoney; + } + +} diff --git a/src/main/java/com/jsh/erp/controller/AccountItemController.java b/src/main/java/com/jsh/erp/controller/AccountItemController.java new file mode 100644 index 00000000..de3d8373 --- /dev/null +++ b/src/main/java/com/jsh/erp/controller/AccountItemController.java @@ -0,0 +1,147 @@ +package com.jsh.erp.controller; + +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.jsh.erp.datasource.entities.AccountItem; +import com.jsh.erp.datasource.vo.AccountItemVo4List; +import com.jsh.erp.service.accountItem.AccountItemService; +import com.jsh.erp.utils.*; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.dao.DataAccessException; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import java.io.IOException; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import static com.jsh.erp.utils.ResponseJsonUtil.returnJson; + +@RestController +@RequestMapping(value = "/accountItem") +public class AccountItemController { + private Logger logger = LoggerFactory.getLogger(AccountItemController.class); + + @Resource + private AccountItemService accountItemService; + + @PostMapping(value = "/saveDetials") + public String saveDetials(@RequestParam("inserted") String inserted, + @RequestParam("deleted") String deleted, + @RequestParam("updated") String updated, + @RequestParam("headerId") Long headerId, + @RequestParam("listType") String listType, + HttpServletRequest request) { + Map objectMap = new HashMap(); + try { + //转为json + JSONArray insertedJson = JSONArray.parseArray(inserted); + JSONArray deletedJson = JSONArray.parseArray(deleted); + JSONArray updatedJson = JSONArray.parseArray(updated); + if (null != insertedJson) { + for (int i = 0; i < insertedJson.size(); i++) { + AccountItem accountItem = new AccountItem(); + JSONObject tempInsertedJson = JSONObject.parseObject(insertedJson.getString(i)); + accountItem.setHeaderid(headerId); + if (tempInsertedJson.get("AccountId") != null && !tempInsertedJson.get("AccountId").equals("")) { + accountItem.setAccountid(tempInsertedJson.getLong("AccountId")); + } + if (tempInsertedJson.get("InOutItemId") != null && !tempInsertedJson.get("InOutItemId").equals("")) { + accountItem.setInoutitemid(tempInsertedJson.getLong("InOutItemId")); + } + if (tempInsertedJson.get("EachAmount") != null && !tempInsertedJson.get("EachAmount").equals("")) { + Double eachAmount = tempInsertedJson.getDouble("EachAmount"); + if (listType.equals("付款")) { + eachAmount = 0 - eachAmount; + } + accountItem.setEachamount(eachAmount); + } else { + accountItem.setEachamount(0.0); + } + accountItem.setRemark(tempInsertedJson.getString("Remark")); + accountItemService.insertAccountItemWithObj(accountItem); + } + } + if (null != deletedJson) { + for (int i = 0; i < deletedJson.size(); i++) { + JSONObject tempDeletedJson = JSONObject.parseObject(deletedJson.getString(i)); + accountItemService.deleteAccountItem(tempDeletedJson.getLong("Id")); + } + } + if (null != updatedJson) { + for (int i = 0; i < updatedJson.size(); i++) { + JSONObject tempUpdatedJson = JSONObject.parseObject(updatedJson.getString(i)); + AccountItem accountItem = accountItemService.getAccountItem(tempUpdatedJson.getLong("Id")); + accountItem.setId(tempUpdatedJson.getLong("Id")); + accountItem.setHeaderid(headerId); + if (tempUpdatedJson.get("AccountId") != null && !tempUpdatedJson.get("AccountId").equals("")) { + accountItem.setAccountid(tempUpdatedJson.getLong("AccountId")); + } + if (tempUpdatedJson.get("InOutItemId") != null && !tempUpdatedJson.get("InOutItemId").equals("")) { + accountItem.setInoutitemid(tempUpdatedJson.getLong("InOutItemId")); + } + if (tempUpdatedJson.get("EachAmount") != null && !tempUpdatedJson.get("EachAmount").equals("")) { + Double eachAmount = tempUpdatedJson.getDouble("EachAmount"); + if (listType.equals("付款")) { + eachAmount = 0 - eachAmount; + } + accountItem.setEachamount(eachAmount); + } else { + accountItem.setEachamount(0.0); + } + accountItem.setRemark(tempUpdatedJson.getString("Remark")); + accountItemService.updateAccountItemWithObj(accountItem); + } + } + return returnJson(objectMap, ErpInfo.OK.name, ErpInfo.OK.code); + } catch (DataAccessException e) { + e.printStackTrace(); + logger.error(">>>>>>>>>>>>>>>>>>>保存明细信息异常", e); + return returnJson(objectMap, ErpInfo.ERROR.name, ErpInfo.ERROR.code); + } + } + + @GetMapping(value = "/getDetailList") + public BaseResponseInfo getDetailList(@RequestParam("headerId") Long headerId, + HttpServletRequest request) { + BaseResponseInfo res = new BaseResponseInfo(); + Map map = new HashMap(); + try { + List dataList = new ArrayList(); + if(headerId != 0) { + dataList = accountItemService.getDetailList(headerId); + } + JSONObject outer = new JSONObject(); + outer.put("total", dataList.size()); + //存放数据json数组 + JSONArray dataArray = new JSONArray(); + if (null != dataList) { + for (AccountItemVo4List ai : dataList) { + JSONObject item = new JSONObject(); + item.put("Id", ai.getId()); + item.put("AccountId", ai.getAccountid()); + item.put("AccountName", ai.getAccountName()); + item.put("InOutItemId", ai.getInoutitemid()); + item.put("InOutItemName", ai.getInOutItemName()); + Double eachAmount = ai.getEachamount(); + item.put("EachAmount", eachAmount < 0 ? 0 - eachAmount : eachAmount); + item.put("Remark", ai.getRemark()); + dataArray.add(item); + } + } + outer.put("rows", dataArray); + res.code = 200; + res.data = outer; + } catch (Exception e) { + e.printStackTrace(); + res.code = 500; + res.data = "获取数据失败"; + } + return res; + } + +} diff --git a/src/main/java/com/jsh/erp/controller/AppController.java b/src/main/java/com/jsh/erp/controller/AppController.java new file mode 100644 index 00000000..117af70a --- /dev/null +++ b/src/main/java/com/jsh/erp/controller/AppController.java @@ -0,0 +1,116 @@ +package com.jsh.erp.controller; + +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.jsh.erp.datasource.entities.App; +import com.jsh.erp.service.app.AppService; +import com.jsh.erp.service.userBusiness.UserBusinessService; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import java.util.List; + +@RestController +@RequestMapping(value = "/app") +public class AppController { + private Logger logger = LoggerFactory.getLogger(AppController.class); + + @Resource + private AppService appService; + + @Resource + private UserBusinessService userBusinessService; + + @GetMapping(value = "/findDesk") + public JSONObject findDesk(HttpServletRequest request) { + JSONObject obj = new JSONObject(); + List dockList = appService.findDock(); + JSONArray dockArray = new JSONArray(); + if (null != dockList) { + for (App app : dockList) { + JSONObject item = new JSONObject(); + item.put("id", app.getId()); + item.put("title", app.getName()); + item.put("type", app.getType()); + item.put("icon", "../../upload/images/deskIcon/" + app.getIcon()); + item.put("url", app.getUrl()); + item.put("width", app.getWidth()); + item.put("height", app.getHeight()); + item.put("isresize", app.getResize()); + item.put("isopenmax", app.getOpenmax()); + item.put("isflash", app.getFlash()); + dockArray.add(item); + } + } + obj.put("dock",dockArray); + + List deskList = appService.findDesk(); + JSONArray deskArray = new JSONArray(); + if (null != deskList) { + for (App app : deskList) { + JSONObject item = new JSONObject(); + item.put("id", app.getId()); + item.put("title", app.getName()); + item.put("type", app.getType()); + item.put("icon", "../../upload/images/deskIcon/" + app.getIcon()); + item.put("url", "../../pages/common/menu.html?appID=" + app.getNumber() + "&id=" + app.getId()); + item.put("width", app.getWidth()); + item.put("height", app.getHeight()); + item.put("isresize", app.getResize()); + item.put("isopenmax", app.getOpenmax()); + item.put("isflash", app.getFlash()); + deskArray.add(item); + } + } + obj.put("desk",deskArray); + return obj; + } + + /** + * 角色对应应用显示 + * @param request + * @return + */ + @PostMapping(value = "/findRoleAPP") + public JSONArray findRoleAPP(@RequestParam("UBType") String type, @RequestParam("UBKeyId") String keyId, + HttpServletRequest request) { + JSONArray arr = new JSONArray(); + try { + List dataList = appService.findRoleAPP(); + //开始拼接json数据 + JSONObject outer = new JSONObject(); + outer.put("id", 1); + outer.put("text", "应用列表"); + outer.put("state", "open"); + //存放数据json数组 + JSONArray dataArray = new JSONArray(); + if (null != dataList) { + for (App app : dataList) { + JSONObject item = new JSONObject(); + item.put("id", app.getId()); + item.put("text", app.getName()); + //勾选判断1 + Boolean flag = false; + try { + flag = userBusinessService.checkIsUserBusinessExist(type, keyId, "[" + app.getId().toString() + "]"); + } catch (Exception e) { + logger.error(">>>>>>>>>>>>>>>>>设置角色对应的应用:类型" + type + " KeyId为: " + keyId + " 存在异常!"); + } + if (flag == true) { + item.put("checked", true); + } + //结束 + dataArray.add(item); + } + } + outer.put("children", dataArray); + arr.add(outer); + } catch (Exception e) { + e.printStackTrace(); + } + return arr; + } +} diff --git a/src/main/java/com/jsh/erp/controller/DepotController.java b/src/main/java/com/jsh/erp/controller/DepotController.java new file mode 100644 index 00000000..d8bfc6ec --- /dev/null +++ b/src/main/java/com/jsh/erp/controller/DepotController.java @@ -0,0 +1,149 @@ +package com.jsh.erp.controller; + +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.jsh.erp.datasource.entities.Depot; +import com.jsh.erp.service.depot.DepotService; +import com.jsh.erp.service.userBusiness.UserBusinessService; +import com.jsh.erp.utils.BaseResponseInfo; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.dao.DataAccessException; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import java.io.IOException; +import java.util.List; + +@RestController +@RequestMapping(value = "/depot") +public class DepotController { + private Logger logger = LoggerFactory.getLogger(DepotController.class); + + @Resource + private DepotService depotService; + + @Resource + private UserBusinessService userBusinessService; + + @GetMapping(value = "/getAllList") + public BaseResponseInfo getAllList(HttpServletRequest request) { + BaseResponseInfo res = new BaseResponseInfo(); + try { + List depotList = depotService.getAllList(); + res.code = 200; + res.data = depotList; + } catch(Exception e){ + e.printStackTrace(); + res.code = 500; + res.data = "获取数据失败"; + } + return res; + } + + /** + * 用户对应仓库显示 + * @param type + * @param keyId + * @param request + * @return + */ + @PostMapping(value = "/findUserDepot") + public JSONArray findUserDepot(@RequestParam("UBType") String type, @RequestParam("UBKeyId") String keyId, + HttpServletRequest request) { + JSONArray arr = new JSONArray(); + try { + List dataList = depotService.findUserDepot(); + //开始拼接json数据 + JSONObject outer = new JSONObject(); + outer.put("id", 1); + outer.put("text", "仓库列表"); + outer.put("state", "open"); + //存放数据json数组 + JSONArray dataArray = new JSONArray(); + if (null != dataList) { + for (Depot depot : dataList) { + JSONObject item = new JSONObject(); + item.put("id", depot.getId()); + item.put("text", depot.getName()); + //勾选判断1 + Boolean flag = false; + try { + flag = userBusinessService.checkIsUserBusinessExist(type, keyId, "[" + depot.getId().toString() + "]"); + } catch (Exception e) { + logger.error(">>>>>>>>>>>>>>>>>设置用户对应的仓库:类型" + type + " KeyId为: " + keyId + " 存在异常!"); + } + if (flag == true) { + item.put("checked", true); + } + //结束 + dataArray.add(item); + } + } + outer.put("children", dataArray); + arr.add(outer); + } catch (Exception e) { + e.printStackTrace(); + } + return arr; + } + + @GetMapping(value = "/findDepotByUserId") + public JSONArray findDepotByUserId(@RequestParam("UBType") String type, @RequestParam("UBKeyId") String keyId, + HttpServletRequest request) { + JSONArray arr = new JSONArray(); + try { + List dataList = depotService.findUserDepot(); + //开始拼接json数据 + if (null != dataList) { + for (Depot depot : dataList) { + JSONObject item = new JSONObject(); + //勾选判断1 + Boolean flag = false; + try { + flag = userBusinessService.checkIsUserBusinessExist(type, keyId, "[" + depot.getId().toString() + "]"); + } catch (DataAccessException e) { + logger.error(">>>>>>>>>>>>>>>>>查询用户对应的仓库:类型" + type + " KeyId为: " + keyId + " 存在异常!"); + } + if (flag == true) { + item.put("id", depot.getId()); + item.put("depotName", depot.getName()); + arr.add(item); + } + } + } + } catch (Exception e) { + e.printStackTrace(); + } + return arr; + } + + /** + * 查找礼品卡-虚拟仓库 + * @param type + * @param request + * @return + */ + @PostMapping(value = "/findGiftByType") + public JSONArray findGiftByType(@RequestParam("type") Integer type, + HttpServletRequest request) { + JSONArray arr = new JSONArray(); + try { + List dataList = depotService.findGiftByType(type); + //存放数据json数组 + if (null != dataList) { + for (Depot depot : dataList) { + JSONObject item = new JSONObject(); + item.put("id", depot.getId()); + //仓库名称 + item.put("name", depot.getName()); + arr.add(item); + } + } + } catch (Exception e) { + logger.error(">>>>>>>>>查找仓库信息异常", e); + } + return arr; + } +} diff --git a/src/main/java/com/jsh/erp/controller/DepotHeadController.java b/src/main/java/com/jsh/erp/controller/DepotHeadController.java new file mode 100644 index 00000000..64492ccc --- /dev/null +++ b/src/main/java/com/jsh/erp/controller/DepotHeadController.java @@ -0,0 +1,458 @@ +package com.jsh.erp.controller; + +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.jsh.erp.datasource.entities.DepotHead; +import com.jsh.erp.datasource.vo.DepotHeadVo4InDetail; +import com.jsh.erp.datasource.vo.DepotHeadVo4InOutMCount; +import com.jsh.erp.datasource.vo.DepotHeadVo4List; +import com.jsh.erp.datasource.vo.DepotHeadVo4StatementAccount; +import com.jsh.erp.service.depotHead.DepotHeadService; +import com.jsh.erp.utils.BaseResponseInfo; +import com.jsh.erp.utils.ErpInfo; +import com.jsh.erp.utils.StringUtil; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import java.sql.Date; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import static com.jsh.erp.utils.ResponseJsonUtil.returnJson; + +@RestController +@RequestMapping(value = "/depotHead") +public class DepotHeadController { + private Logger logger = LoggerFactory.getLogger(DepotHeadController.class); + + @Resource + private DepotHeadService depotHeadService; + + /** + * 批量设置状态-审核或者反审核 + * @param status + * @param depotHeadIDs + * @param request + * @return + */ + @PostMapping(value = "/batchSetStatus") + public String batchSetStatus(@RequestParam("status") Boolean status, + @RequestParam("depotHeadIDs") String depotHeadIDs, + HttpServletRequest request) { + Map objectMap = new HashMap(); + int res = depotHeadService.batchSetStatus(status, depotHeadIDs); + if(res > 0) { + return returnJson(objectMap, ErpInfo.OK.name, ErpInfo.OK.code); + } else { + return returnJson(objectMap, ErpInfo.ERROR.name, ErpInfo.ERROR.code); + } + } + + /** + * 单据编号生成接口,规则:查找当前类型单据下的当天最大的单据号,并加1 + * @param type + * @param subType + * @param beginTime + * @param endTime + * @param request + * @return + */ + @GetMapping(value = "/buildNumber") + public BaseResponseInfo buildNumber(@RequestParam("type") String type, + @RequestParam("subType") String subType, + @RequestParam("beginTime") String beginTime, + @RequestParam("endTime") String endTime, + HttpServletRequest request) { + BaseResponseInfo res = new BaseResponseInfo(); + Map map = new HashMap(); + try { + String number = depotHeadService.buildNumber(type, subType, beginTime, endTime); + map.put("DefaultNumber", number); + res.code = 200; + res.data = map; + } catch(Exception e){ + e.printStackTrace(); + res.code = 500; + res.data = "获取数据失败"; + } + return res; + } + + /** + * 获取最大的id + * @param request + * @return + */ + @GetMapping(value = "/getMaxId") + public BaseResponseInfo getMaxId(HttpServletRequest request) { + BaseResponseInfo res = new BaseResponseInfo(); + Map map = new HashMap(); + try { + Long maxId = depotHeadService.getMaxId(); + map.put("maxId", maxId); + res.code = 200; + res.data = map; + } catch(Exception e){ + e.printStackTrace(); + res.code = 500; + res.data = "获取数据失败"; + } + return res; + } + + /** + * 查找单据_根据月份(报表) + * @param monthTime + * @param request + * @return + */ + @GetMapping(value = "/findByMonth") + public BaseResponseInfo findByMonth(@RequestParam("monthTime") String monthTime, + HttpServletRequest request) { + BaseResponseInfo res = new BaseResponseInfo(); + Map map = new HashMap(); + try { + List dataList = depotHeadService.findByMonth(monthTime); + String headId = ""; + if (null != dataList) { + for (DepotHead depotHead : dataList) { + headId = headId + depotHead.getId() + ","; + } + } + if (headId != "") { + headId = headId.substring(0, headId.lastIndexOf(",")); + } + map.put("HeadIds", headId); + res.code = 200; + res.data = map; + } catch(Exception e){ + e.printStackTrace(); + res.code = 500; + res.data = "获取数据失败"; + } + return res; + } + + /** + * 查找统计信息_根据礼品卡(报表) + * @param projectId + * @param request + * @return + */ + @GetMapping(value = "/findGiftReport") + public BaseResponseInfo findGiftReport(@RequestParam("projectId") String projectId, + HttpServletRequest request) { + BaseResponseInfo res = new BaseResponseInfo(); + Map map = new HashMap(); + try { + List dataList_in = depotHeadService.getDepotHead(); + String headId = ""; + if (null != dataList_in) { + for (DepotHead depotHead : dataList_in) { + headId = headId + depotHead.getId() + ","; + } + List dataList_out = depotHeadService.getDepotHeadGiftOut(projectId); + if (null != dataList_out) { + for (DepotHead depotHead : dataList_out) { + headId = headId + depotHead.getId() + ","; + } + } + } + if (headId != "") { + headId = headId.substring(0, headId.lastIndexOf(",")); + } + map.put("HeadIds", headId); + res.code = 200; + res.data = map; + } catch(Exception e){ + e.printStackTrace(); + res.code = 500; + res.data = "获取数据失败"; + } + return res; + } + + /** + * 入库出库明细接口 + * @param currentPage + * @param pageSize + * @param oId + * @param pid + * @param dids + * @param beginTime + * @param endTime + * @param type + * @param request + * @return + */ + @GetMapping(value = "/findInDetail") + public BaseResponseInfo findInDetail(@RequestParam("currentPage") Integer currentPage, + @RequestParam("pageSize") Integer pageSize, + @RequestParam("organId") Integer oId, + @RequestParam("projectId") Integer pid, + @RequestParam("depotIds") String dids, + @RequestParam("beginTime") String beginTime, + @RequestParam("endTime") String endTime, + @RequestParam("type") String type, + HttpServletRequest request) { + BaseResponseInfo res = new BaseResponseInfo(); + Map map = new HashMap(); + try { + List resList = new ArrayList(); + List list = depotHeadService.findByAll(beginTime, endTime, type, pid, dids, oId, currentPage, pageSize); + int total = depotHeadService.findByAllCount(beginTime, endTime, type, pid, dids, oId); + map.put("total", total); + //存放数据json数组 + if (null != list) { + for (DepotHeadVo4InDetail dhd : list) { + resList.add(dhd); + } + } + map.put("rows", resList); + res.code = 200; + res.data = map; + } catch(Exception e){ + e.printStackTrace(); + res.code = 500; + res.data = "获取数据失败"; + } + return res; + } + + /** + * 入库出库统计接口 + * @param currentPage + * @param pageSize + * @param oId + * @param pid + * @param dids + * @param beginTime + * @param endTime + * @param type + * @param request + * @return + */ + @GetMapping(value = "/findInOutMaterialCount") + public BaseResponseInfo findInOutMaterialCount(@RequestParam("currentPage") Integer currentPage, + @RequestParam("pageSize") Integer pageSize, + @RequestParam("organId") Integer oId, + @RequestParam("projectId") Integer pid, + @RequestParam("depotIds") String dids, + @RequestParam("beginTime") String beginTime, + @RequestParam("endTime") String endTime, + @RequestParam("type") String type, + HttpServletRequest request) { + BaseResponseInfo res = new BaseResponseInfo(); + Map map = new HashMap(); + try { + List resList = new ArrayList(); + List list = depotHeadService.findInOutMaterialCount(beginTime, endTime, type, pid, dids, oId, currentPage, pageSize); + int total = depotHeadService.findInOutMaterialCountTotal(beginTime, endTime, type, pid, dids, oId); + map.put("total", total); + //存放数据json数组 + if (null != list) { + for (DepotHeadVo4InOutMCount dhc : list) { + resList.add(dhc); + } + } + map.put("rows", resList); + res.code = 200; + res.data = map; + } catch(Exception e){ + e.printStackTrace(); + res.code = 500; + res.data = "获取数据失败"; + } + return res; + } + + /** + * 对账单接口 + * @param currentPage + * @param pageSize + * @param beginTime + * @param endTime + * @param organId + * @param supType + * @param request + * @return + */ + @GetMapping(value = "/findStatementAccount") + public BaseResponseInfo findStatementAccount(@RequestParam("currentPage") Integer currentPage, + @RequestParam("pageSize") Integer pageSize, + @RequestParam("beginTime") String beginTime, + @RequestParam("endTime") String endTime, + @RequestParam("organId") Integer organId, + @RequestParam("supType") String supType, + HttpServletRequest request) { + BaseResponseInfo res = new BaseResponseInfo(); + Map map = new HashMap(); + try { + int j = 1; + if (supType.equals("客户")) { //客户 + j = 1; + } else if (supType.equals("供应商")) { //供应商 + j = -1; + } + List resList = new ArrayList(); + List list = depotHeadService.findStatementAccount(beginTime, endTime, organId, supType, (currentPage-1)*pageSize, pageSize); + int total = depotHeadService.findStatementAccountCount(beginTime, endTime, organId, supType); + map.put("total", total); + //存放数据json数组 + if (null != list) { + for (DepotHeadVo4StatementAccount dha : list) { + dha.setNumber(dha.getNumber()); //单据编号 + dha.setType(dha.getType()); //类型 + String type = dha.getType(); + Double p1 = 0.0; + Double p2 = 0.0; + if (dha.getDiscountLastMoney() != null) { + p1 = dha.getDiscountLastMoney(); + } + if (dha.getChangeAmount() != null) { + p2 = dha.getChangeAmount(); + } + Double allPrice = 0.0; + if (p1 < 0) { + p1 = -p1; + } + if (p2 < 0) { + p2 = -p2; + } + if (type.equals("采购入库")) { + allPrice = -(p1 - p2); + } else if (type.equals("销售退货入库")) { + allPrice = -(p1 - p2); + } else if (type.equals("销售出库")) { + allPrice = p1 - p2; + } else if (type.equals("采购退货出库")) { + allPrice = p1 - p2; + } else if (type.equals("付款")) { + allPrice = p1 + p2; + } else if (type.equals("收款")) { + allPrice = -(p1 + p2); + } else if (type.equals("收入")) { + allPrice = p1 - p2; + } else if (type.equals("支出")) { + allPrice = -(p1 - p2); + } + dha.setDiscountLastMoney(p1); //金额 + dha.setChangeAmount(p2); //金额 + dha.setAllPrice(Double.parseDouble(String.format("%.2f", allPrice * j))); //计算后的金额 + dha.setSupplierName(dha.getSupplierName()); //供应商 + dha.setoTime(dha.getoTime()); //入库出库日期 + resList.add(dha); + } + } + map.put("rows", resList); + res.code = 200; + res.data = map; + } catch(Exception e){ + e.printStackTrace(); + res.code = 500; + res.data = "获取数据失败"; + } + return res; + } + + /** + * 查询单位的累计应收和累计应付,零售不能计入 + * @param supplierId + * @param endTime + * @param supType + * @param request + * @return + */ + @GetMapping(value = "/findTotalPay") + public BaseResponseInfo findTotalPay(@RequestParam("supplierId") Integer supplierId, + @RequestParam("endTime") String endTime, + @RequestParam("supType") String supType, + HttpServletRequest request) { + BaseResponseInfo res = new BaseResponseInfo(); + Map map = new HashMap(); + try { + JSONObject outer = new JSONObject(); + Double sum = 0.0; + String getS = supplierId.toString(); + int i = 1; + if (supType.equals("customer")) { //客户 + i = 1; + } else if (supType.equals("vendor")) { //供应商 + i = -1; + } + //进销部分 + sum = sum - (allMoney(getS, "入库", "采购", "合计",endTime) - allMoney(getS, "入库", "采购", "实际",endTime)) * i; + sum = sum - (allMoney(getS, "入库", "销售退货", "合计",endTime) - allMoney(getS, "入库", "销售退货", "实际",endTime)) * i; + sum = sum + (allMoney(getS, "出库", "销售", "合计",endTime) - allMoney(getS, "出库", "销售", "实际",endTime)) * i; + sum = sum + (allMoney(getS, "出库", "采购退货", "合计",endTime) - allMoney(getS, "出库", "采购退货", "实际",endTime)) * i; + outer.put("getAllMoney", sum); + map.put("rows", outer); + res.code = 200; + res.data = map; + } catch (Exception e) { + e.printStackTrace(); + res.code = 500; + res.data = "获取数据失败"; + } + return res; + } + + /** + * 根据编号查询单据信息 + * @param number + * @param request + * @return + */ + @GetMapping(value = "/getDetailByNumber") + public BaseResponseInfo getDetailByNumber(@RequestParam("number") String number, + HttpServletRequest request) { + BaseResponseInfo res = new BaseResponseInfo(); + DepotHeadVo4List dhl = new DepotHeadVo4List(); + try { + List list = depotHeadService.getDetailByNumber(number); + if(list.size() == 1) { + dhl = list.get(0); + } + res.code = 200; + res.data = dhl; + } catch(Exception e){ + e.printStackTrace(); + res.code = 500; + res.data = "获取数据失败"; + } + return res; + } + + + /** + * 统计总金额 + * @param getS + * @param type + * @param subType + * @param mode 合计或者金额 + * @return + */ + public Double allMoney(String getS, String type, String subType, String mode, String endTime) { + Double allMoney = 0.0; + try { + Integer supplierId = Integer.valueOf(getS); + Double sum = depotHeadService.findAllMoney(supplierId, type, subType, mode, endTime); + if(sum != null) { + allMoney = sum; + } + } catch (Exception e) { + e.printStackTrace(); + } + //返回正数,如果负数也转为正数 + if (allMoney < 0) { + allMoney = -allMoney; + } + return allMoney; + } + +} diff --git a/src/main/java/com/jsh/erp/controller/DepotItemController.java b/src/main/java/com/jsh/erp/controller/DepotItemController.java new file mode 100644 index 00000000..fbc0492a --- /dev/null +++ b/src/main/java/com/jsh/erp/controller/DepotItemController.java @@ -0,0 +1,936 @@ +package com.jsh.erp.controller; + +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.jsh.erp.datasource.entities.*; +import com.jsh.erp.service.depotItem.DepotItemService; +import com.jsh.erp.service.material.MaterialService; +import com.jsh.erp.utils.*; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.dao.DataAccessException; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import static com.jsh.erp.utils.ResponseJsonUtil.returnJson; + +@RestController +@RequestMapping(value = "/depotItem") +public class DepotItemController { + private Logger logger = LoggerFactory.getLogger(DepotItemController.class); + + @Resource + private DepotItemService depotItemService; + + @Resource + private MaterialService materialService; + + /** + * 根据材料信息获取 + * @param materialParam 商品参数 + * @param depotIds 拥有的仓库信息 + * @param request + * @return + */ + @GetMapping(value = "/getHeaderIdByMaterial") + public BaseResponseInfo getHeaderIdByMaterial(@RequestParam("materialParam") String materialParam, + @RequestParam("depotIds") String depotIds, + HttpServletRequest request) { + BaseResponseInfo res = new BaseResponseInfo(); + try { + List depotItemList = depotItemService.getHeaderIdByMaterial(materialParam, depotIds); + String allReturn = ""; + if (depotItemList != null) { + for (DepotItemVo4HeaderId d : depotItemList) { + Long dl = d.getHeaderid(); //获取对象 + allReturn = allReturn + dl.toString() + ","; + } + } + allReturn = allReturn.substring(0, allReturn.length() - 1); + if (allReturn.equals("null")) { + allReturn = ""; + } + res.code = 200; + res.data = allReturn; + } catch(Exception e){ + e.printStackTrace(); + res.code = 500; + res.data = "获取数据失败"; + } + return res; + } + + /** + * 只根据商品id查询单据列表 + * @param mId + * @param request + * @return + */ + @GetMapping(value = "/findDetailByTypeAndMaterialId") + public String findDetailByTypeAndMaterialId( + @RequestParam(value = Constants.PAGE_SIZE, required = false) Integer pageSize, + @RequestParam(value = Constants.CURRENT_PAGE, required = false) Integer currentPage, + @RequestParam("materialId") String mId, HttpServletRequest request) { + Map parameterMap = ParamUtils.requestToMap(request); + parameterMap.put("mId", mId); + PageQueryInfo queryInfo = new PageQueryInfo(); + Map objectMap = new HashMap(); + if (pageSize != null && pageSize <= 0) { + pageSize = 10; + } + String offset = ParamUtils.getPageOffset(currentPage, pageSize); + if (StringUtil.isNotEmpty(offset)) { + parameterMap.put(Constants.OFFSET, offset); + } + List list = depotItemService.findDetailByTypeAndMaterialIdList(parameterMap); + JSONArray dataArray = new JSONArray(); + if (list != null) { + for (DepotItemVo4DetailByTypeAndMId d: list) { + JSONObject item = new JSONObject(); + item.put("Number", d.getNumber()); //商品编号 + item.put("Type", d.getNewtype()); //进出类型 + item.put("BasicNumber", d.getBnum()); //数量 + item.put("OperTime", d.getOtime()); //时间 + dataArray.add(item); + } + } + objectMap.put("page", dataArray); + if (list == null) { + queryInfo.setRows(new ArrayList()); + queryInfo.setTotal(0); + return returnJson(objectMap, "查找不到数据", ErpInfo.OK.code); + } + queryInfo.setRows(list); + queryInfo.setTotal(depotItemService.findDetailByTypeAndMaterialIdCounts(parameterMap)); + return returnJson(objectMap, ErpInfo.OK.name, ErpInfo.OK.code); + } + + /** + * 根据商品id和仓库id查询库存数量 + * @param pageSize + * @param currentPage + * @param mId + * @param request + * @return + */ + @GetMapping(value = "/findStockNumById") + public String findStockNumById( + @RequestParam(value = Constants.PAGE_SIZE, required = false) Integer pageSize, + @RequestParam(value = Constants.CURRENT_PAGE, required = false) Integer currentPage, + @RequestParam("projectId") Integer pid, + @RequestParam("materialId") String mId, + @RequestParam("monthTime") String monthTime, + HttpServletRequest request) { + Map parameterMap = ParamUtils.requestToMap(request); + parameterMap.put("mId", mId); + parameterMap.put("monthTime", monthTime); + PageQueryInfo queryInfo = new PageQueryInfo(); + Map objectMap = new HashMap(); + if (pageSize != null && pageSize <= 0) { + pageSize = 10; + } + String offset = ParamUtils.getPageOffset(currentPage, pageSize); + if (StringUtil.isNotEmpty(offset)) { + parameterMap.put(Constants.OFFSET, offset); + } + List list = depotItemService.findStockNumByMaterialIdList(parameterMap); + //存放数据json数组 + Long materialId = Long.parseLong(mId); + JSONArray dataArray = new JSONArray(); + if (null != list) { + for (DepotItemVo4Material di : list) { + JSONObject item = new JSONObject(); + double prevSum = sumNumber("入库", pid, materialId, monthTime, true) - sumNumber("出库", pid, materialId, monthTime, true); + double InSum = sumNumber("入库", pid, materialId, monthTime, false); + double OutSum = sumNumber("出库", pid, materialId, monthTime, false); + item.put("MaterialId", di.getMaterialid() == null ? "" : di.getMaterialid()); + item.put("MaterialName", di.getMname()); + item.put("MaterialModel", di.getMmodel()); + item.put("thisSum", prevSum + InSum - OutSum); + dataArray.add(item); + } + } + objectMap.put("page", dataArray); + if (list == null) { + queryInfo.setRows(new ArrayList()); + queryInfo.setTotal(0); + return returnJson(objectMap, "查找不到数据", ErpInfo.OK.code); + } + queryInfo.setRows(list); + queryInfo.setTotal(depotItemService.findStockNumByMaterialIdCounts(parameterMap)); + return returnJson(objectMap, ErpInfo.OK.name, ErpInfo.OK.code); + } + + /** + * 只根据商品id查询库存数量 + * @param pageSize + * @param currentPage + * @param mId + * @param request + * @return + */ + @GetMapping(value = "/findStockNumByMaterialId") + public String findStockNumByMaterialId( + @RequestParam(value = Constants.PAGE_SIZE, required = false) Integer pageSize, + @RequestParam(value = Constants.CURRENT_PAGE, required = false) Integer currentPage, + @RequestParam("materialId") String mId, + @RequestParam("monthTime") String monthTime, + HttpServletRequest request) { + Map parameterMap = ParamUtils.requestToMap(request); + parameterMap.put("mId", mId); + parameterMap.put("monthTime", monthTime); + PageQueryInfo queryInfo = new PageQueryInfo(); + Map objectMap = new HashMap(); + if (pageSize != null && pageSize <= 0) { + pageSize = 10; + } + String offset = ParamUtils.getPageOffset(currentPage, pageSize); + if (StringUtil.isNotEmpty(offset)) { + parameterMap.put(Constants.OFFSET, offset); + } + List list = depotItemService.findStockNumByMaterialIdList(parameterMap); + + //存放数据json数组 + JSONArray dataArray = new JSONArray(); + if (null != list) { + for (DepotItemVo4Material di : list) { + JSONObject item = new JSONObject(); + int InSum = sumNumberByMaterialId("入库", di.getMaterialid()); + int OutSum = sumNumberByMaterialId("出库", di.getMaterialid()); + item.put("MaterialId", di.getMaterialid() == null ? "" : di.getMaterialid()); + item.put("MaterialName", di.getMname()); + item.put("MaterialModel", di.getMmodel()); + item.put("thisSum", InSum - OutSum); + dataArray.add(item); + } + } + objectMap.put("page", dataArray); + if (list == null) { + queryInfo.setRows(new ArrayList()); + queryInfo.setTotal(0); + return returnJson(objectMap, "查找不到数据", ErpInfo.OK.code); + } + queryInfo.setRows(list); + queryInfo.setTotal(depotItemService.findStockNumByMaterialIdCounts(parameterMap)); + return returnJson(objectMap, ErpInfo.OK.name, ErpInfo.OK.code); + } + + /** + * 仅根据商品Id进行数量合计 + * + * @param type + * @param mId + * @return + */ + public int sumNumberByMaterialId(String type, Long mId) { + int allNumber = 0; + try { + allNumber = depotItemService.findByTypeAndMaterialId(type, mId); + } catch (Exception e) { + e.printStackTrace(); + } + return allNumber; + } + + /** + * 保存明细 + * @param inserted + * @param deleted + * @param updated + * @param headerId + * @param request + * @return + */ + @PostMapping(value = "/saveDetials") + public String saveDetials(@RequestParam("inserted") String inserted, + @RequestParam("deleted") String deleted, + @RequestParam("updated") String updated, + @RequestParam("headerId") Long headerId, + HttpServletRequest request) { + Map objectMap = new HashMap(); + try { + //转为json + JSONArray insertedJson = JSONArray.parseArray(inserted); + JSONArray deletedJson = JSONArray.parseArray(deleted); + JSONArray updatedJson = JSONArray.parseArray(updated); + if (null != insertedJson) { + for (int i = 0; i < insertedJson.size(); i++) { + DepotItem depotItem = new DepotItem(); + JSONObject tempInsertedJson = JSONObject.parseObject(insertedJson.getString(i)); + depotItem.setHeaderid(headerId); + depotItem.setMaterialid(tempInsertedJson.getLong("MaterialId")); + depotItem.setMunit(tempInsertedJson.getString("Unit")); + if (!StringUtil.isEmpty(tempInsertedJson.get("OperNumber").toString())) { + depotItem.setOpernumber(tempInsertedJson.getDouble("OperNumber")); + try { + String Unit = tempInsertedJson.get("Unit").toString(); + Double oNumber = tempInsertedJson.getDouble("OperNumber"); + Long mId = Long.parseLong(tempInsertedJson.get("MaterialId").toString()); + //以下进行单位换算 + String UnitName = findUnitName(mId); //查询计量单位名称 + if (!UnitName.equals("")) { + String UnitList = UnitName.substring(0, UnitName.indexOf("(")); + String RatioList = UnitName.substring(UnitName.indexOf("(")); + String basicUnit = UnitList.substring(0, UnitList.indexOf(",")); //基本单位 + String otherUnit = UnitList.substring(UnitList.indexOf(",") + 1); //副单位 + Integer ratio = Integer.parseInt(RatioList.substring(RatioList.indexOf(":") + 1).replace(")", "")); //比例 + if (Unit.equals(basicUnit)) { //如果等于基础单位 + depotItem.setBasicnumber(oNumber); //数量一致 + } else if (Unit.equals(otherUnit)) { //如果等于副单位 + depotItem.setBasicnumber(oNumber * ratio); //数量乘以比例 + } + } else { + depotItem.setBasicnumber(oNumber); //其他情况 + } + } catch (Exception e) { + logger.error(">>>>>>>>>>>>>>>>>>>设置基础数量异常", e); + } + } + if (!StringUtil.isEmpty(tempInsertedJson.get("UnitPrice").toString())) { + depotItem.setUnitprice(tempInsertedJson.getDouble("UnitPrice")); + } + if (!StringUtil.isEmpty(tempInsertedJson.get("TaxUnitPrice").toString())) { + depotItem.setTaxunitprice(tempInsertedJson.getDouble("TaxUnitPrice")); + } + if (!StringUtil.isEmpty(tempInsertedJson.get("AllPrice").toString())) { + depotItem.setAllprice(tempInsertedJson.getDouble("AllPrice")); + } + depotItem.setRemark(tempInsertedJson.getString("Remark")); + if (tempInsertedJson.get("DepotId") != null && !StringUtil.isEmpty(tempInsertedJson.get("DepotId").toString())) { + depotItem.setDepotid(tempInsertedJson.getLong("DepotId")); + } + if (tempInsertedJson.get("AnotherDepotId") != null && !StringUtil.isEmpty(tempInsertedJson.get("AnotherDepotId").toString())) { + depotItem.setAnotherdepotid(tempInsertedJson.getLong("AnotherDepotId")); + } + if (!StringUtil.isEmpty(tempInsertedJson.get("TaxRate").toString())) { + depotItem.setTaxrate(tempInsertedJson.getDouble("TaxRate")); + } + if (!StringUtil.isEmpty(tempInsertedJson.get("TaxMoney").toString())) { + depotItem.setTaxmoney(tempInsertedJson.getDouble("TaxMoney")); + } + if (!StringUtil.isEmpty(tempInsertedJson.get("TaxLastMoney").toString())) { + depotItem.setTaxlastmoney(tempInsertedJson.getDouble("TaxLastMoney")); + } + if (tempInsertedJson.get("OtherField1") != null) { + depotItem.setOtherfield1(tempInsertedJson.getString("OtherField1")); + } + if (tempInsertedJson.get("OtherField2") != null) { + depotItem.setOtherfield2(tempInsertedJson.getString("OtherField2")); + } + if (tempInsertedJson.get("OtherField3") != null) { + depotItem.setOtherfield3(tempInsertedJson.getString("OtherField3")); + } + if (tempInsertedJson.get("OtherField4") != null) { + depotItem.setOtherfield4(tempInsertedJson.getString("OtherField4")); + } + if (tempInsertedJson.get("OtherField5") != null) { + depotItem.setOtherfield5(tempInsertedJson.getString("OtherField5")); + } + if (tempInsertedJson.get("MType") != null) { + depotItem.setMtype(tempInsertedJson.getString("MType")); + } + depotItemService.insertDepotItemWithObj(depotItem); + } + } + if (null != deletedJson) { + for (int i = 0; i < deletedJson.size(); i++) { + JSONObject tempDeletedJson = JSONObject.parseObject(deletedJson.getString(i)); + depotItemService.deleteDepotItem(tempDeletedJson.getLong("Id")); + } + } + if (null != updatedJson) { + for (int i = 0; i < updatedJson.size(); i++) { + JSONObject tempUpdatedJson = JSONObject.parseObject(updatedJson.getString(i)); + DepotItem depotItem = depotItemService.getDepotItem(tempUpdatedJson.getLong("Id")); + depotItem.setId(tempUpdatedJson.getLong("Id")); + depotItem.setMaterialid(tempUpdatedJson.getLong("MaterialId")); + depotItem.setMunit(tempUpdatedJson.getString("Unit")); + if (!StringUtil.isEmpty(tempUpdatedJson.get("OperNumber").toString())) { + depotItem.setOpernumber(tempUpdatedJson.getDouble("OperNumber")); + try { + String Unit = tempUpdatedJson.get("Unit").toString(); + Double oNumber = tempUpdatedJson.getDouble("OperNumber"); + Long mId = Long.parseLong(tempUpdatedJson.get("MaterialId").toString()); + //以下进行单位换算 + String UnitName = findUnitName(mId); //查询计量单位名称 + if (!UnitName.equals("")) { + String UnitList = UnitName.substring(0, UnitName.indexOf("(")); + String RatioList = UnitName.substring(UnitName.indexOf("(")); + String basicUnit = UnitList.substring(0, UnitList.indexOf(",")); //基本单位 + String otherUnit = UnitList.substring(UnitList.indexOf(",") + 1); //副单位 + Integer ratio = Integer.parseInt(RatioList.substring(RatioList.indexOf(":") + 1).replace(")", "")); //比例 + if (Unit.equals(basicUnit)) { //如果等于基础单位 + depotItem.setBasicnumber(oNumber); //数量一致 + } else if (Unit.equals(otherUnit)) { //如果等于副单位 + depotItem.setBasicnumber(oNumber * ratio); //数量乘以比例 + } + } else { + depotItem.setBasicnumber(oNumber); //其他情况 + } + } catch (Exception e) { + logger.error(">>>>>>>>>>>>>>>>>>>设置基础数量异常", e); + } + } + if (!StringUtil.isEmpty(tempUpdatedJson.get("UnitPrice").toString())) { + depotItem.setUnitprice(tempUpdatedJson.getDouble("UnitPrice")); + } + if (!StringUtil.isEmpty(tempUpdatedJson.get("TaxUnitPrice").toString())) { + depotItem.setTaxunitprice(tempUpdatedJson.getDouble("TaxUnitPrice")); + } + if (!StringUtil.isEmpty(tempUpdatedJson.get("AllPrice").toString())) { + depotItem.setAllprice(tempUpdatedJson.getDouble("AllPrice")); + } + depotItem.setRemark(tempUpdatedJson.getString("Remark")); + if (tempUpdatedJson.get("DepotId") != null && !StringUtil.isEmpty(tempUpdatedJson.get("DepotId").toString())) { + depotItem.setDepotid(tempUpdatedJson.getLong("DepotId")); + } + if (tempUpdatedJson.get("AnotherDepotId") != null && !StringUtil.isEmpty(tempUpdatedJson.get("AnotherDepotId").toString())) { + depotItem.setAnotherdepotid(tempUpdatedJson.getLong("AnotherDepotId")); + } + if (!StringUtil.isEmpty(tempUpdatedJson.get("TaxRate").toString())) { + depotItem.setTaxrate(tempUpdatedJson.getDouble("TaxRate")); + } + if (!StringUtil.isEmpty(tempUpdatedJson.get("TaxMoney").toString())) { + depotItem.setTaxmoney(tempUpdatedJson.getDouble("TaxMoney")); + } + if (!StringUtil.isEmpty(tempUpdatedJson.get("TaxLastMoney").toString())) { + depotItem.setTaxlastmoney(tempUpdatedJson.getDouble("TaxLastMoney")); + } + depotItem.setOtherfield1(tempUpdatedJson.getString("OtherField1")); + depotItem.setOtherfield2(tempUpdatedJson.getString("OtherField2")); + depotItem.setOtherfield3(tempUpdatedJson.getString("OtherField3")); + depotItem.setOtherfield4(tempUpdatedJson.getString("OtherField4")); + depotItem.setOtherfield5(tempUpdatedJson.getString("OtherField5")); + depotItem.setMtype(tempUpdatedJson.getString("MType")); + depotItemService.updateDepotItemWithObj(depotItem); + } + } + + return returnJson(objectMap, ErpInfo.OK.name, ErpInfo.OK.code); + } catch (DataAccessException e) { + e.printStackTrace(); + logger.error(">>>>>>>>>>>>>>>>>>>保存明细信息异常", e); + return returnJson(objectMap, ErpInfo.ERROR.name, ErpInfo.ERROR.code); + } + } + + /** + * 查询计量单位信息 + * + * @return + */ + public String findUnitName(Long mId) { + String unitName = ""; + try { + unitName = materialService.findUnitName(mId); + if (unitName != null) { + unitName = unitName.substring(1, unitName.length() - 1); + if (unitName.equals("null")) { + unitName = ""; + } + } + } catch (Exception e) { + e.printStackTrace(); + } + return unitName; + } + + @GetMapping(value = "/getDetailList") + public BaseResponseInfo getDetailList(@RequestParam("headerId") Long headerId, + @RequestParam("mpList") String mpList, + HttpServletRequest request) { + BaseResponseInfo res = new BaseResponseInfo(); + Map map = new HashMap(); + try { + List dataList = new ArrayList(); + if(headerId != 0) { + dataList = depotItemService.getDetailList(headerId); + } + String[] mpArr = mpList.split(","); + JSONObject outer = new JSONObject(); + outer.put("total", dataList.size()); + //存放数据json数组 + JSONArray dataArray = new JSONArray(); + if (null != dataList) { + for (DepotItemVo4WithInfoEx diEx : dataList) { + JSONObject item = new JSONObject(); + item.put("Id", diEx.getId()); + item.put("MaterialId", diEx.getMaterialid() == null ? "" : diEx.getMaterialid()); + String ratio; //比例 + if (diEx.getUnitId() == null || diEx.getUnitId().equals("")) { + ratio = ""; + } else { + ratio = diEx.getUName(); + ratio = ratio.substring(ratio.indexOf("(")); + } + //品名/型号/扩展信息/包装 + String MaterialName = diEx.getMName() + ((diEx.getMModel() == null || diEx.getMModel().equals("")) ? "" : "(" + diEx.getMModel() + ")"); + String materialOther = getOtherInfo(mpArr, diEx); + MaterialName = MaterialName + materialOther + ((diEx.getUName() == null || diEx.getUName().equals("")) ? "" : "(" + diEx.getUName() + ")") + ratio; + item.put("MaterialName", MaterialName); + item.put("Unit", diEx.getMunit()); + item.put("OperNumber", diEx.getOpernumber()); + item.put("BasicNumber", diEx.getBasicnumber()); + item.put("UnitPrice", diEx.getUnitprice()); + item.put("TaxUnitPrice", diEx.getTaxunitprice()); + item.put("AllPrice", diEx.getAllprice()); + item.put("Remark", diEx.getRemark()); + item.put("Img", diEx.getImg()); + item.put("DepotId", diEx.getDepotid() == null ? "" : diEx.getDepotid()); + item.put("DepotName", diEx.getDepotid() == null ? "" : diEx.getDepotName()); + item.put("AnotherDepotId", diEx.getAnotherdepotid() == null ? "" : diEx.getAnotherdepotid()); + item.put("AnotherDepotName", diEx.getAnotherdepotid() == null ? "" : diEx.getAnotherDepotName()); + item.put("TaxRate", diEx.getTaxrate()); + item.put("TaxMoney", diEx.getTaxmoney()); + item.put("TaxLastMoney", diEx.getTaxlastmoney()); + item.put("OtherField1", diEx.getOtherfield1()); + item.put("OtherField2", diEx.getOtherfield2()); + item.put("OtherField3", diEx.getOtherfield3()); + item.put("OtherField4", diEx.getOtherfield4()); + item.put("OtherField5", diEx.getOtherfield5()); + item.put("MType", diEx.getMtype()); + item.put("op", 1); + dataArray.add(item); + } + } + outer.put("rows", dataArray); + res.code = 200; + res.data = outer; + } catch (Exception e) { + e.printStackTrace(); + res.code = 500; + res.data = "获取数据失败"; + } + return res; + } + + + /** + * 获取扩展信息 + * + * @return + */ + public String getOtherInfo(String[] mpArr, DepotItemVo4WithInfoEx diEx) { + String materialOther = ""; + for (int i = 0; i < mpArr.length; i++) { + if (mpArr[i].equals("颜色")) { + materialOther = materialOther + ((diEx.getMColor() == null || diEx.getMColor().equals("")) ? "" : "(" + diEx.getMColor() + ")"); + } + if (mpArr[i].equals("规格")) { + materialOther = materialOther + ((diEx.getMStandard() == null || diEx.getMStandard().equals("")) ? "" : "(" + diEx.getMStandard() + ")"); + } + if (mpArr[i].equals("制造商")) { + materialOther = materialOther + ((diEx.getMMfrs() == null || diEx.getMMfrs().equals("")) ? "" : "(" + diEx.getMMfrs() + ")"); + } + if (mpArr[i].equals("自定义1")) { + materialOther = materialOther + ((diEx.getMOtherField1() == null || diEx.getMOtherField1().equals("")) ? "" : "(" + diEx.getMOtherField1() + ")"); + } + if (mpArr[i].equals("自定义2")) { + materialOther = materialOther + ((diEx.getMOtherField2() == null || diEx.getMOtherField2().equals("")) ? "" : "(" + diEx.getMOtherField2() + ")"); + } + if (mpArr[i].equals("自定义3")) { + materialOther = materialOther + ((diEx.getMOtherField3() == null || diEx.getMOtherField3().equals("")) ? "" : "(" + diEx.getMOtherField3() + ")"); + } + } + return materialOther; + } + + /** + * 查找所有的明细 + * @param currentPage + * @param pageSize + * @param projectId + * @param monthTime + * @param headIds + * @param materialIds + * @param mpList + * @param request + * @return + */ + @GetMapping(value = "/findByAll") + public BaseResponseInfo findByAll(@RequestParam("currentPage") Integer currentPage, + @RequestParam("pageSize") Integer pageSize, + @RequestParam("projectId") Integer projectId, + @RequestParam("monthTime") String monthTime, + @RequestParam("headIds") String headIds, + @RequestParam("materialIds") String materialIds, + @RequestParam("mpList") String mpList, + HttpServletRequest request) { + BaseResponseInfo res = new BaseResponseInfo(); + Map map = new HashMap(); + try { + List dataList = depotItemService.findByAll(headIds, materialIds, currentPage, pageSize); + String[] mpArr = mpList.split(","); + int total = depotItemService.findByAllCount(headIds, materialIds); + map.put("total", total); + //存放数据json数组 + Integer pid = projectId; + JSONArray dataArray = new JSONArray(); + if (null != dataList) { + for (DepotItemVo4WithInfoEx diEx : dataList) { + JSONObject item = new JSONObject(); + Double prevSum = sumNumber("入库", pid, diEx.getMaterialid(), monthTime, true) - sumNumber("出库", pid, diEx.getMaterialid(), monthTime, true); + Double InSum = sumNumber("入库", pid, diEx.getMaterialid(), monthTime, false); + Double OutSum = sumNumber("出库", pid, diEx.getMaterialid(), monthTime, false); + Double prevPrice = sumPrice("入库", pid, diEx.getMaterialid(), monthTime, true) - sumPrice("出库", pid, diEx.getMaterialid(), monthTime, true); + Double InPrice = sumPrice("入库", pid, diEx.getMaterialid(), monthTime, false); + Double OutPrice = sumPrice("出库", pid, diEx.getMaterialid(), monthTime, false); + item.put("Id", diEx.getId()); + item.put("MaterialId", diEx.getMaterialid()); + item.put("MaterialName", diEx.getMName()); + item.put("MaterialModel", diEx.getMColor()); + //扩展信息 + String materialOther = getOtherInfo(mpArr, diEx); + item.put("MaterialOther", materialOther); + item.put("MaterialColor", diEx.getMColor()); + item.put("MaterialUnit", diEx.getMaterialUnit()); + Double unitPrice = 0.0; + if (prevSum + InSum - OutSum != 0.0) { + unitPrice = (prevPrice + InPrice - OutPrice) / (prevSum + InSum - OutSum); + } + item.put("UnitPrice", unitPrice); + item.put("prevSum", prevSum); + item.put("InSum", InSum); + item.put("OutSum", OutSum); + item.put("thisSum", prevSum + InSum - OutSum); + item.put("thisAllPrice", prevPrice + InPrice - OutPrice); + dataArray.add(item); + } + } + map.put("rows", dataArray); + res.code = 200; + res.data = map; + } catch(Exception e){ + e.printStackTrace(); + res.code = 500; + res.data = "获取数据失败"; + } + return res; + } + + /** + * 统计总计金额 + * @param pid + * @param monthTime + * @param headIds + * @param materialIds + * @param request + * @return + */ + @GetMapping(value = "/totalCountMoney") + public BaseResponseInfo totalCountMoney(@RequestParam("projectId") Integer pid, + @RequestParam("monthTime") String monthTime, + @RequestParam("headIds") String headIds, + @RequestParam("materialIds") String materialIds, + HttpServletRequest request) { + BaseResponseInfo res = new BaseResponseInfo(); + Map map = new HashMap(); + try { + List dataList = depotItemService.findByAll(headIds, materialIds, null, null); + Double thisAllPrice = 0.0; + if (null != dataList) { + for (DepotItemVo4WithInfoEx diEx : dataList) { + Double prevPrice = sumPrice("入库", pid, diEx.getMaterialid(), monthTime, true) - sumPrice("出库", pid, diEx.getMaterialid(), monthTime, true); + Double InPrice = sumPrice("入库", pid, diEx.getMaterialid(), monthTime, false); + Double OutPrice = sumPrice("出库", pid, diEx.getMaterialid(), monthTime, false); + thisAllPrice = thisAllPrice + (prevPrice + InPrice - OutPrice); + } + } + map.put("totalCount", thisAllPrice); + res.code = 200; + res.data = map; + } catch(Exception e){ + e.printStackTrace(); + res.code = 500; + res.data = "获取数据失败"; + } + return res; + } + + /** + * 进货统计 + * @param currentPage + * @param pageSize + * @param monthTime + * @param headIds + * @param materialIds + * @param mpList + * @param request + * @return + */ + @GetMapping(value = "/buyIn") + public BaseResponseInfo buyIn(@RequestParam("currentPage") Integer currentPage, + @RequestParam("pageSize") Integer pageSize, + @RequestParam("monthTime") String monthTime, + @RequestParam("headIds") String headIds, + @RequestParam("materialIds") String materialIds, + @RequestParam("mpList") String mpList, + HttpServletRequest request) { + BaseResponseInfo res = new BaseResponseInfo(); + Map map = new HashMap(); + try { + List dataList = depotItemService.findByAll(headIds, materialIds, currentPage, pageSize); + String[] mpArr = mpList.split(","); + int total = depotItemService.findByAllCount(headIds, materialIds); + map.put("total", total); + //存放数据json数组 + JSONArray dataArray = new JSONArray(); + if (null != dataList) { + for (DepotItemVo4WithInfoEx diEx : dataList) { + JSONObject item = new JSONObject(); + Double InSum = sumNumberBuyOrSale("入库", "采购", diEx.getMaterialid(), monthTime); + Double OutSum = sumNumberBuyOrSale("出库", "采购退货", diEx.getMaterialid(), monthTime); + Double InSumPrice = sumPriceBuyOrSale("入库", "采购", diEx.getMaterialid(), monthTime); + Double OutSumPrice = sumPriceBuyOrSale("出库", "采购退货", diEx.getMaterialid(), monthTime); + item.put("Id", diEx.getId()); + item.put("MaterialId", diEx.getMaterialid()); + item.put("MaterialName", diEx.getMName()); + item.put("MaterialModel", diEx.getMModel()); + //扩展信息 + String materialOther = getOtherInfo(mpArr, diEx); + item.put("MaterialOther", materialOther); + item.put("MaterialColor", diEx.getMColor()); + item.put("MaterialUnit", diEx.getMaterialUnit()); + item.put("InSum", InSum); + item.put("OutSum", OutSum); + item.put("InSumPrice", InSumPrice); + item.put("OutSumPrice", OutSumPrice); + dataArray.add(item); + } + } + map.put("rows", dataArray); + res.code = 200; + res.data = map; + } catch(Exception e){ + e.printStackTrace(); + res.code = 500; + res.data = "获取数据失败"; + } + return res; + } + + /** + * 销售统计 + * @param currentPage + * @param pageSize + * @param monthTime + * @param headIds + * @param materialIds + * @param mpList + * @param request + * @return + */ + @GetMapping(value = "/saleOut") + public BaseResponseInfo saleOut(@RequestParam("currentPage") Integer currentPage, + @RequestParam("pageSize") Integer pageSize, + @RequestParam("monthTime") String monthTime, + @RequestParam("headIds") String headIds, + @RequestParam("materialIds") String materialIds, + @RequestParam("mpList") String mpList, + HttpServletRequest request) { + BaseResponseInfo res = new BaseResponseInfo(); + Map map = new HashMap(); + try { + List dataList = depotItemService.findByAll(headIds, materialIds, currentPage, pageSize); + String[] mpArr = mpList.split(","); + int total = depotItemService.findByAllCount(headIds, materialIds); + map.put("total", total); + //存放数据json数组 + JSONArray dataArray = new JSONArray(); + if (null != dataList) { + for (DepotItemVo4WithInfoEx diEx : dataList) { + JSONObject item = new JSONObject(); + Double OutSumRetail = sumNumberBuyOrSale("出库", "零售", diEx.getMaterialid(), monthTime); + Double OutSum = sumNumberBuyOrSale("出库", "销售", diEx.getMaterialid(), monthTime); + Double InSumRetail = sumNumberBuyOrSale("入库", "零售退货", diEx.getMaterialid(), monthTime); + Double InSum = sumNumberBuyOrSale("入库", "销售退货", diEx.getMaterialid(), monthTime); + Double OutSumRetailPrice = sumPriceBuyOrSale("出库", "零售", diEx.getMaterialid(), monthTime); + Double OutSumPrice = sumPriceBuyOrSale("出库", "销售", diEx.getMaterialid(), monthTime); + Double InSumRetailPrice = sumPriceBuyOrSale("入库", "零售退货", diEx.getMaterialid(), monthTime); + Double InSumPrice = sumPriceBuyOrSale("入库", "销售退货", diEx.getMaterialid(), monthTime); + item.put("Id", diEx.getId()); + item.put("MaterialId", diEx.getMaterialid()); + item.put("MaterialName", diEx.getMName()); + item.put("MaterialModel", diEx.getMModel()); + //扩展信息 + String materialOther = getOtherInfo(mpArr, diEx); + item.put("MaterialOther", materialOther); + item.put("MaterialColor", diEx.getMColor()); + item.put("MaterialUnit", diEx.getMaterialUnit()); + item.put("OutSum", OutSumRetail + OutSum); + item.put("InSum", InSumRetail + InSum); + item.put("OutSumPrice", OutSumRetailPrice + OutSumPrice); + item.put("InSumPrice", InSumRetailPrice + InSumPrice); + dataArray.add(item); + } + } + map.put("rows", dataArray); + res.code = 200; + res.data = map; + } catch(Exception e){ + e.printStackTrace(); + res.code = 500; + res.data = "获取数据失败"; + } + return res; + } + + /** + * 查找礼品卡信息 + * @param currentPage + * @param pageSize + * @param projectId + * @param headIds + * @param materialIds + * @param mpList + * @param request + * @return + */ + @GetMapping(value = "/findGiftByAll") + public BaseResponseInfo findGiftByAll(@RequestParam("currentPage") Integer currentPage, + @RequestParam("pageSize") Integer pageSize, + @RequestParam("projectId") Integer projectId, + @RequestParam("headIds") String headIds, + @RequestParam("materialIds") String materialIds, + @RequestParam("mpList") String mpList, + HttpServletRequest request) { + BaseResponseInfo res = new BaseResponseInfo(); + Map map = new HashMap(); + try { + List dataList = depotItemService.findByAll(headIds, materialIds, currentPage, pageSize); + String[] mpArr = mpList.split(","); + int total = depotItemService.findByAllCount(headIds, materialIds); + map.put("total", total); + Integer pid = projectId; + JSONArray dataArray = new JSONArray(); + if (null != dataList) { + for (DepotItemVo4WithInfoEx diEx : dataList) { + JSONObject item = new JSONObject(); + Double InSum = sumNumberGift("礼品充值", pid, diEx.getMaterialid(), "in"); + Double OutSum = sumNumberGift("礼品销售", pid, diEx.getMaterialid(), "out"); + item.put("Id", diEx.getId()); + item.put("MaterialId", diEx.getMaterialid()); + item.put("MaterialName", diEx.getMName()); + item.put("MaterialModel", diEx.getMModel()); + //扩展信息 + String materialOther = getOtherInfo(mpArr, diEx); + item.put("MaterialOther", materialOther); + item.put("MaterialColor", diEx.getMColor()); + item.put("MaterialUnit", diEx.getMaterialUnit()); + item.put("thisSum", InSum - OutSum); + dataArray.add(item); + } + } + map.put("rows", dataArray); + res.code = 200; + res.data = map; + } catch(Exception e){ + e.printStackTrace(); + res.code = 500; + res.data = "获取数据失败"; + } + return res; + } + + /** + * 数量合计 + * + * @param type + * @param MId + * @param MonthTime + * @param isPrev + * @return + */ + public Double sumNumber(String type, Integer ProjectId, Long MId, String MonthTime, Boolean isPrev) { + Double sumNumber = 0.0; + try { + Double sum = depotItemService.findByType(type, ProjectId, MId, MonthTime, isPrev); + if(sum != null) { + sumNumber = sum; + } + } catch (Exception e) { + e.printStackTrace(); + } + return sumNumber; + } + + /** + * 价格合计 + * + * @param type + * @param MId + * @param MonthTime + * @param isPrev + * @return + */ + public Double sumPrice(String type, Integer ProjectId, Long MId, String MonthTime, Boolean isPrev) { + Double sumPrice = 0.0; + try { + Double sum = depotItemService.findPriceByType(type, ProjectId, MId, MonthTime, isPrev); + if(sum != null) { + sumPrice = sum; + } + } catch (Exception e) { + e.printStackTrace(); + } + return sumPrice; + } + + public Double sumNumberBuyOrSale(String type, String subType, Long MId, String MonthTime) { + Double sumNumber = 0.0; + String sumType = "Number"; + try { + Double sum = depotItemService.buyOrSale(type, subType, MId, MonthTime, sumType); + if(sum != null) { + sumNumber = sum; + } + } catch (Exception e) { + e.printStackTrace(); + } + return sumNumber; + } + + public Double sumPriceBuyOrSale(String type, String subType, Long MId, String MonthTime) { + Double sumPrice = 0.0; + String sumType = "Price"; + try { + Double sum = depotItemService.buyOrSale(type, subType, MId, MonthTime, sumType); + if(sum != null) { + sumPrice = sum; + } + } catch (Exception e) { + e.printStackTrace(); + } + return sumPrice; + } + + /** + * 数量合计-礼品卡 + * @param subType + * @param ProjectId + * @param MId + * @param type + * @return + */ + public Double sumNumberGift(String subType, Integer ProjectId, Long MId, String type) { + Double sumNumber = 0.0; + String allNumber = ""; + try { + if (ProjectId != null) { + Double sum = depotItemService.findGiftByType(subType, ProjectId, MId, type); + if(sum != null) { + sumNumber = sum; + } + } + } catch (Exception e) { + e.printStackTrace(); + } + return sumNumber; + } +} diff --git a/src/main/java/com/jsh/erp/controller/FunctionsController.java b/src/main/java/com/jsh/erp/controller/FunctionsController.java new file mode 100644 index 00000000..5ece96ce --- /dev/null +++ b/src/main/java/com/jsh/erp/controller/FunctionsController.java @@ -0,0 +1,235 @@ +package com.jsh.erp.controller; + +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.jsh.erp.datasource.entities.Functions; +import com.jsh.erp.service.functions.FunctionsService; +import com.jsh.erp.service.userBusiness.UserBusinessService; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.dao.DataAccessException; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import java.io.IOException; +import java.util.List; + +@RestController +@RequestMapping(value = "/functions") +public class FunctionsController { + private Logger logger = LoggerFactory.getLogger(FunctionsController.class); + + @Resource + private FunctionsService functionsService; + + @Resource + private UserBusinessService userBusinessService; + + @PostMapping(value = "/findMenu") + public JSONArray findMenu(@RequestParam(value="pNumber") String pNumber, + @RequestParam(value="hasFunctions") String hasFunctions, + HttpServletRequest request) { + //存放数据json数组 + JSONArray dataArray = new JSONArray(); + try { + String fc = hasFunctions; //当前用户所拥有的功能列表,格式如:[1][2][5] + List dataList = functionsService.getRoleFunctions(pNumber); + if (null != dataList) { + for (Functions functions : dataList) { + JSONObject item = new JSONObject(); + item.put("id", functions.getId()); + List dataList1 = functionsService.getRoleFunctions(functions.getNumber()); + JSONArray dataArray1 = new JSONArray(); + if (dataList1.size() != 0) { + item.put("text", functions.getName()); //是目录就没链接 + for (Functions functions1 : dataList1) { + item.put("state", "open"); //如果不为空,节点展开 + JSONObject item1 = new JSONObject(); + List dataList2 = functionsService.getRoleFunctions(functions1.getNumber()); + if (fc.indexOf("[" + functions1.getId().toString() + "]") != -1 || dataList2.size() != 0) { + item1.put("id", functions1.getId()); + JSONArray dataArray2 = new JSONArray(); + if (dataList2.size() != 0) { + item1.put("text", functions1.getName());//是目录就没链接 + for (Functions functions2 : dataList2) { + item1.put("state", "closed"); //如果不为空,节点不展开 + JSONObject item2 = new JSONObject(); + List dataList3 = functionsService.getRoleFunctions(functions2.getNumber()); + if (fc.indexOf("[" + functions2.getId().toString() + "]") != -1 || dataList3.size() != 0) { + item2.put("id", functions2.getId()); + JSONArray dataArray3 = new JSONArray(); + if (dataList3.size() != 0) { + item2.put("text", functions2.getName());//是目录就没链接 + for (Functions functions3 : dataList3) { + item2.put("state", "closed"); //如果不为空,节点不展开 + JSONObject item3 = new JSONObject(); + item3.put("id", functions3.getId()); + item3.put("text", functions3.getName()); + // + dataArray3.add(item3); + item2.put("children", dataArray3); + } + } else { + //不是目录,有链接 + item2.put("text", "" + functions2.getName() + ""); + } + } else { + //不是目录,有链接 + item2.put("text", "" + functions2.getName() + ""); + } + dataArray2.add(item2); + item1.put("children", dataArray2); + } + } else { + //不是目录,有链接 + item1.put("text", "" + functions1.getName() + ""); + } + } else { + //不是目录,有链接 + item1.put("text", "" + functions1.getName() + ""); + } + dataArray1.add(item1); + item.put("children", dataArray1); + } + } else { + //不是目录,有链接 + item.put("text", "" + functions.getName() + ""); + } + dataArray.add(item); + } + } + } catch (DataAccessException e) { + logger.error(">>>>>>>>>>>>>>>>>>>查找应用异常", e); + } + return dataArray; + } + + /** + * 角色对应功能显示 + * @param request + * @return + */ + @PostMapping(value = "/findRoleFunctions") + public JSONArray findRoleFunctions(@RequestParam("UBType") String type, @RequestParam("UBKeyId") String keyId, + HttpServletRequest request) { + JSONArray arr = new JSONArray(); + try { + List dataList = functionsService.findRoleFunctions("0"); + //开始拼接json数据 + JSONObject outer = new JSONObject(); + outer.put("id", 1); + outer.put("text", "功能列表"); + outer.put("state", "open"); + //存放数据json数组 + JSONArray dataArray = new JSONArray(); + if (null != dataList) { + for (Functions functions : dataList) { + JSONObject item = new JSONObject(); + item.put("id", functions.getId()); + item.put("text", functions.getName()); + + //勾选判断1 + Boolean flag = false; + try { + flag = userBusinessService.checkIsUserBusinessExist(type, keyId, "[" + functions.getId().toString() + "]"); + } catch (Exception e) { + logger.error(">>>>>>>>>>>>>>>>>设置角色对应的功能:类型" + type + " KeyId为: " + keyId + " 存在异常!"); + } + if (flag == true) { + item.put("checked", true); + } + //结束 + + List dataList1 = functionsService.findRoleFunctions(functions.getNumber()); + JSONArray dataArray1 = new JSONArray(); + if (null != dataList1) { + + for (Functions functions1 : dataList1) { + item.put("state", "open"); //如果不为空,节点不展开 + JSONObject item1 = new JSONObject(); + item1.put("id", functions1.getId()); + item1.put("text", functions1.getName()); + + //勾选判断2 + //Boolean flag = false; + try { + flag = userBusinessService.checkIsUserBusinessExist(type, keyId, "[" + functions1.getId().toString() + "]"); + } catch (Exception e) { + logger.error(">>>>>>>>>>>>>>>>>设置角色对应的功能:类型" + type + " KeyId为: " + keyId + " 存在异常!"); + } + if (flag == true) { + item1.put("checked", true); + } + //结束 + + List dataList2 = functionsService.findRoleFunctions(functions1.getNumber()); + JSONArray dataArray2 = new JSONArray(); + if (null != dataList2) { + + for (Functions functions2 : dataList2) { + item1.put("state", "closed"); //如果不为空,节点不展开 + JSONObject item2 = new JSONObject(); + item2.put("id", functions2.getId()); + item2.put("text", functions2.getName()); + + //勾选判断3 + //Boolean flag = false; + try { + flag = userBusinessService.checkIsUserBusinessExist(type, keyId, "[" + functions2.getId().toString() + "]"); + } catch (Exception e) { + logger.error(">>>>>>>>>>>>>>>>>设置角色对应的功能:类型" + type + " KeyId为: " + keyId + " 存在异常!"); + } + if (flag == true) { + item2.put("checked", true); + } + //结束 + + List dataList3 = functionsService.findRoleFunctions(functions2.getNumber()); + JSONArray dataArray3 = new JSONArray(); + if (null != dataList3) { + + for (Functions functions3 : dataList3) { + item2.put("state", "closed"); //如果不为空,节点不展开 + JSONObject item3 = new JSONObject(); + item3.put("id", functions3.getId()); + item3.put("text", functions3.getName()); + + //勾选判断4 + //Boolean flag = false; + try { + flag = userBusinessService.checkIsUserBusinessExist(type, keyId, "[" + functions3.getId().toString() + "]"); + } catch (Exception e) { + logger.error(">>>>>>>>>>>>>>>>>设置角色对应的功能:类型" + type + " KeyId为: " + keyId + " 存在异常!"); + } + if (flag == true) { + item3.put("checked", true); + } + //结束 + + dataArray3.add(item3); + item2.put("children", dataArray3); + } + } + + dataArray2.add(item2); + item1.put("children", dataArray2); + } + } + + dataArray1.add(item1); + item.put("children", dataArray1); + } + + } + dataArray.add(item); + } + outer.put("children", dataArray); + arr.add(outer); + } + } catch (Exception e) { + e.printStackTrace(); + } + return arr; + } +} diff --git a/src/main/java/com/jsh/erp/controller/InOutItemController.java b/src/main/java/com/jsh/erp/controller/InOutItemController.java new file mode 100644 index 00000000..4ff02dab --- /dev/null +++ b/src/main/java/com/jsh/erp/controller/InOutItemController.java @@ -0,0 +1,55 @@ +package com.jsh.erp.controller; + +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.jsh.erp.datasource.entities.InOutItem; +import com.jsh.erp.service.inOutItem.InOutItemService; +import com.jsh.erp.utils.BaseResponseInfo; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +@RestController +@RequestMapping(value = "/inOutItem") +public class InOutItemController { + private Logger logger = LoggerFactory.getLogger(InOutItemController.class); + + @Resource + private InOutItemService inOutItemService; + + /** + * 查找收支项目信息-下拉框 + * @param request + * @return + */ + @GetMapping(value = "/findBySelect") + public String findBySelect(@RequestParam("type") String type, HttpServletRequest request) { + String res = null; + try { + List dataList = inOutItemService.findBySelect(type); + //存放数据json数组 + JSONArray dataArray = new JSONArray(); + if (null != dataList) { + for (InOutItem inOutItem : dataList) { + JSONObject item = new JSONObject(); + item.put("Id", inOutItem.getId()); + //收支项目名称 + item.put("InOutItemName", inOutItem.getName()); + dataArray.add(item); + } + } + res = dataArray.toJSONString(); + } catch(Exception e){ + e.printStackTrace(); + res = "获取数据失败"; + } + return res; + } + +} diff --git a/src/main/java/com/jsh/erp/controller/MaterialCategoryController.java b/src/main/java/com/jsh/erp/controller/MaterialCategoryController.java new file mode 100644 index 00000000..c99ee6ee --- /dev/null +++ b/src/main/java/com/jsh/erp/controller/MaterialCategoryController.java @@ -0,0 +1,66 @@ +package com.jsh.erp.controller; + +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.jsh.erp.datasource.entities.MaterialCategory; +import com.jsh.erp.service.materialCategory.MaterialCategoryService; +import com.jsh.erp.utils.BaseResponseInfo; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import java.util.List; + +@RestController +@RequestMapping(value = "/materialCategory") +public class MaterialCategoryController { + private Logger logger = LoggerFactory.getLogger(MaterialCategoryController.class); + + @Resource + private MaterialCategoryService materialCategoryService; + + @GetMapping(value = "/getAllList") + public BaseResponseInfo getAllList(@RequestParam("parentId") Long parentId, HttpServletRequest request) { + BaseResponseInfo res = new BaseResponseInfo(); + try { + List materialCategoryList = materialCategoryService.getAllList(parentId); + res.code = 200; + res.data = materialCategoryList; + } catch(Exception e){ + e.printStackTrace(); + res.code = 500; + res.data = "获取数据失败"; + } + return res; + } + + /** + * 根据id来查询商品名称 + * @param id + * @param request + * @return + */ + @GetMapping(value = "/findById") + public BaseResponseInfo findById(@RequestParam("id") Long id, HttpServletRequest request) { + BaseResponseInfo res = new BaseResponseInfo(); + try { + List dataList = materialCategoryService.findById(id); + JSONObject outer = new JSONObject(); + if (null != dataList) { + for (MaterialCategory mc : dataList) { + outer.put("name", mc.getName()); + outer.put("parentId", mc.getParentid()); + } + } + res.code = 200; + res.data = dataList; + } catch(Exception e){ + e.printStackTrace(); + res.code = 500; + res.data = "获取数据失败"; + } + return res; + } +} diff --git a/src/main/java/com/jsh/erp/controller/MaterialController.java b/src/main/java/com/jsh/erp/controller/MaterialController.java new file mode 100644 index 00000000..674cbc6b --- /dev/null +++ b/src/main/java/com/jsh/erp/controller/MaterialController.java @@ -0,0 +1,177 @@ +package com.jsh.erp.controller; + +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.jsh.erp.datasource.entities.Material; +import com.jsh.erp.datasource.entities.MaterialVo4Unit; +import com.jsh.erp.service.material.MaterialService; +import com.jsh.erp.utils.BaseResponseInfo; +import com.jsh.erp.utils.ErpInfo; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import static com.jsh.erp.utils.ResponseJsonUtil.returnJson; + +@RestController +@RequestMapping(value = "/material") +public class MaterialController { + private Logger logger = LoggerFactory.getLogger(MaterialController.class); + + @Resource + private MaterialService materialService; + + @GetMapping(value = "/checkIsExist") + public String checkIsExist(@RequestParam("materialId") Long id, @RequestParam("name") String name, + @RequestParam("model") String model, @RequestParam("color") String color, + @RequestParam("standard") String standard, @RequestParam("mfrs") String mfrs, + @RequestParam("otherField1") String otherField1, @RequestParam("otherField2") String otherField2, + @RequestParam("otherField3") String otherField3, @RequestParam("unit") String unit,@RequestParam("unitId") Long unitId, + HttpServletRequest request) { + Map objectMap = new HashMap(); + int exist = materialService.checkIsExist(id, name, model, color, standard, mfrs, + otherField1, otherField2, otherField3, unit, unitId); + if(exist > 0) { + objectMap.put("status", true); + } else { + objectMap.put("status", false); + } + return returnJson(objectMap, ErpInfo.OK.name, ErpInfo.OK.code); + } + + /** + * 批量设置状态-启用或者禁用 + * @param enabled + * @param materialIDs + * @param request + * @return + */ + @PostMapping(value = "/batchSetEnable") + public String batchSetEnable(@RequestParam("enabled") Boolean enabled, + @RequestParam("materialIDs") String materialIDs, + HttpServletRequest request) { + Map objectMap = new HashMap(); + int res = materialService.batchSetEnable(enabled, materialIDs); + if(res > 0) { + return returnJson(objectMap, ErpInfo.OK.name, ErpInfo.OK.code); + } else { + return returnJson(objectMap, ErpInfo.ERROR.name, ErpInfo.ERROR.code); + } + } + + /** + * 根据id来查询商品名称 + * @param id + * @param request + * @return + */ + @GetMapping(value = "/findById") + public BaseResponseInfo findById(@RequestParam("id") Long id, HttpServletRequest request) { + BaseResponseInfo res = new BaseResponseInfo(); + try { + List list = materialService.findById(id); + res.code = 200; + res.data = list; + } catch(Exception e){ + e.printStackTrace(); + res.code = 500; + res.data = "获取数据失败"; + } + return res; + } + + /** + * 查找商品信息-下拉框 + * @param mpList + * @param request + * @return + */ + @GetMapping(value = "/findBySelect") + public JSONArray findBySelect(@RequestParam("mpList") String mpList, HttpServletRequest request) { + JSONArray dataArray = new JSONArray(); + try { + List dataList = materialService.findBySelect(); + String[] mpArr = mpList.split(","); + //存放数据json数组 + if (null != dataList) { + for (MaterialVo4Unit material : dataList) { + JSONObject item = new JSONObject(); + item.put("Id", material.getId()); + String ratio; //比例 + if (material.getUnitid() == null || material.getUnitid().equals("")) { + ratio = ""; + } else { + ratio = material.getUnitName(); + ratio = ratio.substring(ratio.indexOf("(")); + } + //品名/型号/扩展信息/包装 + String MaterialName = material.getName() + ((material.getModel() == null || material.getModel().equals("")) ? "" : "(" + material.getModel() + ")"); + for (int i = 0; i < mpArr.length; i++) { + if (mpArr[i].equals("颜色")) { + MaterialName = MaterialName + ((material.getColor() == null || material.getColor().equals("")) ? "" : "(" + material.getColor() + ")"); + } + if (mpArr[i].equals("规格")) { + MaterialName = MaterialName + ((material.getStandard() == null || material.getStandard().equals("")) ? "" : "(" + material.getStandard() + ")"); + } + if (mpArr[i].equals("制造商")) { + MaterialName = MaterialName + ((material.getMfrs() == null || material.getMfrs().equals("")) ? "" : "(" + material.getMfrs() + ")"); + } + if (mpArr[i].equals("自定义1")) { + MaterialName = MaterialName + ((material.getOtherfield1() == null || material.getOtherfield1().equals("")) ? "" : "(" + material.getOtherfield1() + ")"); + } + if (mpArr[i].equals("自定义2")) { + MaterialName = MaterialName + ((material.getOtherfield2() == null || material.getOtherfield2().equals("")) ? "" : "(" + material.getOtherfield2() + ")"); + } + if (mpArr[i].equals("自定义3")) { + MaterialName = MaterialName + ((material.getOtherfield3() == null || material.getOtherfield3().equals("")) ? "" : "(" + material.getOtherfield3() + ")"); + } + } + MaterialName = MaterialName + ((material.getUnit() == null || material.getUnit().equals("")) ? "" : "(" + material.getUnit() + ")") + ratio; + item.put("MaterialName", MaterialName); + dataArray.add(item); + } + } + } catch (Exception e) { + e.printStackTrace(); + } + return dataArray; + } + + + /** + * 查找商品信息-统计排序 + * @param request + * @return + */ + @GetMapping(value = "/findByOrder") + public BaseResponseInfo findByOrder(HttpServletRequest request) { + BaseResponseInfo res = new BaseResponseInfo(); + Map map = new HashMap(); + try { + List dataList = materialService.findByOrder(); + String mId = ""; + if (null != dataList) { + for (Material material : dataList) { + mId = mId + material.getId() + ","; + } + } + if (mId != "") { + mId = mId.substring(0, mId.lastIndexOf(",")); + } + map.put("mIds", mId); + res.code = 200; + res.data = map; + } catch(Exception e){ + e.printStackTrace(); + res.code = 500; + res.data = "获取数据失败"; + } + return res; + } +} diff --git a/src/main/java/com/jsh/erp/controller/PersonController.java b/src/main/java/com/jsh/erp/controller/PersonController.java new file mode 100644 index 00000000..a6472056 --- /dev/null +++ b/src/main/java/com/jsh/erp/controller/PersonController.java @@ -0,0 +1,121 @@ +package com.jsh.erp.controller; + +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.jsh.erp.datasource.entities.Person; +import com.jsh.erp.service.person.PersonService; +import com.jsh.erp.utils.BaseResponseInfo; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +@RestController +@RequestMapping(value = "/person") +public class PersonController { + private Logger logger = LoggerFactory.getLogger(PersonController.class); + + @Resource + private PersonService personService; + + @GetMapping(value = "/getAllList") + public BaseResponseInfo getAllList(HttpServletRequest request) { + BaseResponseInfo res = new BaseResponseInfo(); + Map map = new HashMap(); + try { + List personList = personService.getPerson(); + map.put("personList", personList); + res.code = 200; + res.data = personList; + } catch(Exception e){ + e.printStackTrace(); + res.code = 500; + res.data = "获取数据失败"; + } + return res; + } + + /** + * 根据Id获取经手人信息 + * @param personIDs + * @param request + * @return + */ + @GetMapping(value = "/getPersonByIds") + public BaseResponseInfo getPersonByIds(@RequestParam("personIDs") String personIDs, HttpServletRequest request) { + BaseResponseInfo res = new BaseResponseInfo(); + Map map = new HashMap(); + try { + String names = personService.getPersonByIds(personIDs); + map.put("names", names); + res.code = 200; + res.data = map; + } catch(Exception e){ + e.printStackTrace(); + res.code = 500; + res.data = "获取数据失败"; + } + return res; + } + + /** + * 根据类型获取经手人信息 + * @param type + * @param request + * @return + */ + @GetMapping(value = "/getPersonByType") + public BaseResponseInfo getPersonByType(@RequestParam("type") String type, HttpServletRequest request) { + BaseResponseInfo res = new BaseResponseInfo(); + Map map = new HashMap(); + try { + List personList = personService.getPersonByType(type); + map.put("personList", personList); + res.code = 200; + res.data = map; + } catch(Exception e){ + e.printStackTrace(); + res.code = 500; + res.data = "获取数据失败"; + } + return res; + } + + /** + * 根据类型获取经手人信息 1-业务员,2-仓管员,3-财务员 + * @param typeNum + * @param request + * @return + */ + @PostMapping(value = "/getPersonByNumType") + public JSONArray getPersonByNumType(@RequestParam("type") String typeNum, HttpServletRequest request) { + JSONArray dataArray = new JSONArray(); + try { + String type = ""; + if (typeNum.equals("1")) { + type = "业务员"; + } else if (typeNum.equals("2")) { + type = "仓管员"; + } else if (typeNum.equals("3")) { + type = "财务员"; + } + List personList = personService.getPersonByType(type); + if (null != personList) { + for (Person person : personList) { + JSONObject item = new JSONObject(); + item.put("id", person.getId()); + item.put("name", person.getName()); + dataArray.add(item); + } + } + } catch(Exception e){ + e.printStackTrace(); + } + return dataArray; + } +} diff --git a/src/main/java/com/jsh/erp/controller/ResourceController.java b/src/main/java/com/jsh/erp/controller/ResourceController.java new file mode 100644 index 00000000..65fd46a6 --- /dev/null +++ b/src/main/java/com/jsh/erp/controller/ResourceController.java @@ -0,0 +1,124 @@ +package com.jsh.erp.controller; + +import com.alibaba.fastjson.JSONObject; +import com.jsh.erp.service.CommonQueryManager; +import com.jsh.erp.utils.*; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.web.bind.annotation.*; +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import java.util.*; + +import static com.jsh.erp.utils.ResponseJsonUtil.returnJson; + +/** + * by jishenghua 2018-9-12 23:58:10 + */ +@RestController +public class ResourceController { + private Logger logger = LoggerFactory.getLogger(ResourceController.class); + + @Resource + private CommonQueryManager configResourceManager; + + @GetMapping(value = "/test/heart") + public JSONObject exitHeart(HttpServletRequest request) { + return JsonUtils.ok(); + } + + @GetMapping(value = "/{apiName}/list") + public String getList(@PathVariable("apiName") String apiName, + @RequestParam(value = Constants.PAGE_SIZE, required = false) Integer pageSize, + @RequestParam(value = Constants.CURRENT_PAGE, required = false) Integer currentPage, + @RequestParam(value = Constants.SEARCH, required = false) String search, + HttpServletRequest request) { + Map parameterMap = ParamUtils.requestToMap(request); + parameterMap.put(Constants.SEARCH, search); + PageQueryInfo queryInfo = new PageQueryInfo(); + Map objectMap = new HashMap(); + if (pageSize != null && pageSize <= 0) { + pageSize = 10; + } + String offset = ParamUtils.getPageOffset(currentPage, pageSize); + if (StringUtil.isNotEmpty(offset)) { + parameterMap.put(Constants.OFFSET, offset); + } + List list = configResourceManager.select(apiName, parameterMap); + objectMap.put("page", queryInfo); + if (list == null) { + queryInfo.setRows(new ArrayList()); + queryInfo.setTotal(0); + return returnJson(objectMap, "查找不到数据", ErpInfo.OK.code); + } + queryInfo.setRows(list); + queryInfo.setTotal(configResourceManager.counts(apiName, parameterMap)); + return returnJson(objectMap, ErpInfo.OK.name, ErpInfo.OK.code); + } + + @PostMapping(value = "/{apiName}/add", produces = {"application/javascript", "application/json"}) + public String addResource(@PathVariable("apiName") String apiName, + @RequestParam("info") String beanJson, HttpServletRequest request) { + Map objectMap = new HashMap(); + int insert = configResourceManager.insert(apiName, beanJson, request); + if(insert > 0) { + return returnJson(objectMap, ErpInfo.OK.name, ErpInfo.OK.code); + } else { + return returnJson(objectMap, ErpInfo.ERROR.name, ErpInfo.ERROR.code); + } + } + + @PostMapping(value = "/{apiName}/update", produces = {"application/javascript", "application/json"}) + public String updateResource(@PathVariable("apiName") String apiName, + @RequestParam("info") String beanJson, + @RequestParam("id") Long id, HttpServletRequest request) { + Map objectMap = new HashMap(); + int update = configResourceManager.update(apiName, beanJson, id); + if(update > 0) { + return returnJson(objectMap, ErpInfo.OK.name, ErpInfo.OK.code); + } else { + return returnJson(objectMap, ErpInfo.ERROR.name, ErpInfo.ERROR.code); + } + } + + @PostMapping(value = "/{apiName}/{id}/delete", produces = {"application/javascript", "application/json"}) + public String deleteResource(@PathVariable("apiName") String apiName, + @PathVariable Long id, HttpServletRequest request) { + Map objectMap = new HashMap(); + int delete = configResourceManager.delete(apiName, id); + if(delete > 0) { + return returnJson(objectMap, ErpInfo.OK.name, ErpInfo.OK.code); + } else { + return returnJson(objectMap, ErpInfo.ERROR.name, ErpInfo.ERROR.code); + } + } + + @PostMapping(value = "/{apiName}/batchDelete", produces = {"application/javascript", "application/json"}) + public String batchDeleteResource(@PathVariable("apiName") String apiName, + @RequestParam("ids") String ids, HttpServletRequest request) { + Map objectMap = new HashMap(); + int delete = configResourceManager.batchDelete(apiName, ids); + if(delete > 0) { + return returnJson(objectMap, ErpInfo.OK.name, ErpInfo.OK.code); + } else { + return returnJson(objectMap, ErpInfo.ERROR.name, ErpInfo.ERROR.code); + } + } + + @GetMapping(value = "/{apiName}/checkIsNameExist") + public String checkIsNameExist(@PathVariable("apiName") String apiName, + @RequestParam Long id, @RequestParam(value ="name", required = false) String name, + HttpServletRequest request) { + Map objectMap = new HashMap(); + int exist = configResourceManager.checkIsNameExist(apiName, id, name); + if(exist > 0) { + objectMap.put("status", true); + } else { + objectMap.put("status", false); + } + return returnJson(objectMap, ErpInfo.OK.name, ErpInfo.OK.code); + } + + +} diff --git a/src/main/java/com/jsh/erp/controller/RoleController.java b/src/main/java/com/jsh/erp/controller/RoleController.java new file mode 100644 index 00000000..4d75882c --- /dev/null +++ b/src/main/java/com/jsh/erp/controller/RoleController.java @@ -0,0 +1,71 @@ +package com.jsh.erp.controller; + +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.jsh.erp.datasource.entities.Role; +import com.jsh.erp.service.role.RoleService; +import com.jsh.erp.service.userBusiness.UserBusinessService; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import java.util.List; + +@RestController +@RequestMapping(value = "/role") +public class RoleController { + private Logger logger = LoggerFactory.getLogger(RoleController.class); + + @Resource + private RoleService roleService; + + @Resource + private UserBusinessService userBusinessService; + + /** + * 角色对应应用显示 + * @param request + * @return + */ + @PostMapping(value = "/findUserRole") + public JSONArray findUserRole(@RequestParam("UBType") String type, @RequestParam("UBKeyId") String keyId, + HttpServletRequest request) { + JSONArray arr = new JSONArray(); + try { + List dataList = roleService.findUserRole(); + //开始拼接json数据 + JSONObject outer = new JSONObject(); + outer.put("id", 1); + outer.put("text", "角色列表"); + outer.put("state", "open"); + //存放数据json数组 + JSONArray dataArray = new JSONArray(); + if (null != dataList) { + for (Role role : dataList) { + JSONObject item = new JSONObject(); + item.put("id", role.getId()); + item.put("text", role.getName()); + //勾选判断1 + Boolean flag = false; + try { + flag = userBusinessService.checkIsUserBusinessExist(type, keyId, "[" + role.getId().toString() + "]"); + } catch (Exception e) { + logger.error(">>>>>>>>>>>>>>>>>设置用户对应的角色:类型" + type + " KeyId为: " + keyId + " 存在异常!"); + } + if (flag == true) { + item.put("checked", true); + } + //结束 + dataArray.add(item); + } + } + outer.put("children", dataArray); + arr.add(outer); + } catch (Exception e) { + e.printStackTrace(); + } + return arr; + } +} diff --git a/src/main/java/com/jsh/erp/controller/SupplierController.java b/src/main/java/com/jsh/erp/controller/SupplierController.java new file mode 100644 index 00000000..44c2cbec --- /dev/null +++ b/src/main/java/com/jsh/erp/controller/SupplierController.java @@ -0,0 +1,192 @@ +package com.jsh.erp.controller; + +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.jsh.erp.datasource.entities.Supplier; +import com.jsh.erp.service.supplier.SupplierService; +import com.jsh.erp.service.userBusiness.UserBusinessService; +import com.jsh.erp.utils.BaseResponseInfo; +import com.jsh.erp.utils.ErpInfo; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.dao.DataAccessException; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import static com.jsh.erp.utils.ResponseJsonUtil.returnJson; + +@RestController +@RequestMapping(value = "/supplier") +public class SupplierController { + private Logger logger = LoggerFactory.getLogger(SupplierController.class); + + @Resource + private SupplierService supplierService; + + @Resource + private UserBusinessService userBusinessService; + + /** + * 更新供应商-只更新预付款,其余用原来的值 + * @param supplierId + * @param advanceIn + * @param request + * @return + */ + @PostMapping(value = "/updateAdvanceIn") + public String updateAdvanceIn(@RequestParam("supplierId") Long supplierId, + @RequestParam("advanceIn") Double advanceIn, + HttpServletRequest request) { + Map objectMap = new HashMap(); + int res = supplierService.updateAdvanceIn(supplierId, advanceIn); + if(res > 0) { + return returnJson(objectMap, ErpInfo.OK.name, ErpInfo.OK.code); + } else { + return returnJson(objectMap, ErpInfo.ERROR.name, ErpInfo.ERROR.code); + } + } + + /** + * 查找客户信息-下拉框 + * @param request + * @return + */ + @PostMapping(value = "/findBySelect_cus") + public JSONArray findBySelectCus(HttpServletRequest request) { + JSONArray arr = new JSONArray(); + try { + List supplierList = supplierService.findBySelectCus(); + JSONArray dataArray = new JSONArray(); + if (null != supplierList) { + for (Supplier supplier : supplierList) { + JSONObject item = new JSONObject(); + //勾选判断1 + Boolean flag = false; + try { + flag = userBusinessService.checkIsUserBusinessExist(null, null, "[" + supplier.getId().toString() + "]"); + } catch (DataAccessException e) { + logger.error(">>>>>>>>>>>>>>>>>查询用户对应的客户:存在异常!"); + } + if (flag == true) { + item.put("id", supplier.getId()); + item.put("supplier", supplier.getSupplier()); //客户名称 + dataArray.add(item); + } + } + } + arr = dataArray; + } catch(Exception e){ + e.printStackTrace(); + } + return arr; + } + + /** + * 查找供应商信息-下拉框 + * @param request + * @return + */ + @PostMapping(value = "/findBySelect_sup") + public JSONArray findBySelectSup(HttpServletRequest request) { + JSONArray arr = new JSONArray(); + try { + List supplierList = supplierService.findBySelectSup(); + JSONArray dataArray = new JSONArray(); + if (null != supplierList) { + for (Supplier supplier : supplierList) { + JSONObject item = new JSONObject(); + item.put("id", supplier.getId()); + //供应商名称 + item.put("supplier", supplier.getSupplier()); + dataArray.add(item); + } + } + arr = dataArray; + } catch(Exception e){ + e.printStackTrace(); + } + return arr; + } + + /** + * 查找会员信息-下拉框 + * @param request + * @return + */ + @PostMapping(value = "/findBySelect_retail") + public JSONArray findBySelectRetail(HttpServletRequest request) { + JSONArray arr = new JSONArray(); + try { + List supplierList = supplierService.findBySelectRetail(); + JSONArray dataArray = new JSONArray(); + if (null != supplierList) { + for (Supplier supplier : supplierList) { + JSONObject item = new JSONObject(); + item.put("id", supplier.getId()); + //客户名称 + item.put("supplier", supplier.getSupplier()); + item.put("advanceIn", supplier.getAdvancein()); //预付款金额 + dataArray.add(item); + } + } + arr = dataArray; + } catch(Exception e){ + e.printStackTrace(); + } + return arr; + } + + /** + * 根据id查找信息 + * @param supplierId + * @param request + * @return + */ + @GetMapping(value = "/findById") + public BaseResponseInfo findById(@RequestParam("supplierId") Long supplierId, + HttpServletRequest request) { + BaseResponseInfo res = new BaseResponseInfo(); + try { + JSONArray dataArray = new JSONArray(); + List dataList = supplierService.findById(supplierId); + if (null != dataList) { + for (Supplier supplier : dataList) { + JSONObject item = new JSONObject(); + item.put("id", supplier.getId()); + //名称 + item.put("supplier", supplier.getSupplier()); + item.put("type", supplier.getType()); + item.put("contacts", supplier.getContacts()); + item.put("phonenum", supplier.getPhonenum()); + item.put("email", supplier.getEmail()); + item.put("AdvanceIn", supplier.getAdvancein()); + item.put("BeginNeedGet", supplier.getBeginneedget()); + item.put("BeginNeedPay", supplier.getBeginneedpay()); + item.put("isystem", supplier.getIsystem() == (short) 0 ? "是" : "否"); + item.put("description", supplier.getDescription()); + item.put("fax", supplier.getFax()); + item.put("telephone", supplier.getTelephone()); + item.put("address", supplier.getAddress()); + item.put("taxNum", supplier.getTaxnum()); + item.put("bankName", supplier.getBankname()); + item.put("accountNumber", supplier.getAccountnumber()); + item.put("taxRate", supplier.getTaxrate()); + item.put("enabled", supplier.getEnabled()); + dataArray.add(item); + } + res.code = 200; + res.data = dataArray; + } + } catch (Exception e) { + e.printStackTrace(); + res.code = 500; + res.data = "获取数据失败"; + } + return res; + } +} diff --git a/src/main/java/com/jsh/erp/controller/UserBusinessController.java b/src/main/java/com/jsh/erp/controller/UserBusinessController.java new file mode 100644 index 00000000..1e4c6b2a --- /dev/null +++ b/src/main/java/com/jsh/erp/controller/UserBusinessController.java @@ -0,0 +1,60 @@ +package com.jsh.erp.controller; + +import com.alibaba.fastjson.JSONObject; +import com.jsh.erp.datasource.entities.UserBusiness; +import com.jsh.erp.service.userBusiness.UserBusinessService; +import com.jsh.erp.utils.BaseResponseInfo; +import com.jsh.erp.utils.ErpInfo; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import static com.jsh.erp.utils.ResponseJsonUtil.returnJson; + +@RestController +@RequestMapping(value = "/userBusiness") +public class UserBusinessController { + private Logger logger = LoggerFactory.getLogger(UserBusinessController.class); + + @Resource + private UserBusinessService userBusinessService; + + @GetMapping(value = "/getBasicData") + public BaseResponseInfo getBasicData(@RequestParam(value = "KeyId") String keyId, + @RequestParam(value = "Type") String type, + HttpServletRequest request) { + BaseResponseInfo res = new BaseResponseInfo(); + try { + List list = userBusinessService.getBasicData(keyId, type); + Map mapData = new HashMap(); + mapData.put("userBusinessList", list); + res.code = 200; + res.data = mapData; + } catch (Exception e) { + e.printStackTrace(); + res.code = 500; + res.data = "查询权限失败"; + } + return res; + } + + @GetMapping(value = "/checkIsValueExist") + public String checkIsValueExist(@RequestParam(value ="type", required = false) String type, + @RequestParam(value ="keyId", required = false) String keyId, + HttpServletRequest request) { + Map objectMap = new HashMap(); + Long id = userBusinessService.checkIsValueExist(type, keyId); + if(id != null) { + objectMap.put("id", id); + } else { + objectMap.put("id", null); + } + return returnJson(objectMap, ErpInfo.OK.name, ErpInfo.OK.code); + } +} diff --git a/src/main/java/com/jsh/erp/controller/UserController.java b/src/main/java/com/jsh/erp/controller/UserController.java new file mode 100644 index 00000000..19aa3e43 --- /dev/null +++ b/src/main/java/com/jsh/erp/controller/UserController.java @@ -0,0 +1,188 @@ +package com.jsh.erp.controller; + +import com.jsh.erp.datasource.entities.User; +import com.jsh.erp.service.user.UserService; +import com.jsh.erp.utils.*; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.security.NoSuchAlgorithmException; +import java.util.HashMap; +import java.util.Map; +import static com.jsh.erp.utils.ResponseJsonUtil.returnJson; + +/** + * 用户管理 2018-10-13 21:24:06 + * @author jishenghua qq:752718920 + */ +@RestController +@RequestMapping(value = "/user") +public class UserController { + private Logger logger = LoggerFactory.getLogger(ResourceController.class); + + @Resource + private UserService userService; + + private static String message = "成功"; + + @PostMapping(value = "/login") + public BaseResponseInfo login(@RequestParam(value = "loginame", required = false) String loginame, + @RequestParam(value = "password", required = false) String password, + HttpServletRequest request) { + logger.info("============用户登录 login 方法调用开始=============="); + String msgTip = ""; + BaseResponseInfo res = new BaseResponseInfo(); + try { + String username = loginame.trim(); + password = password.trim(); + //因密码用MD5加密,需要对密码进行转化 + try { + password = Tools.md5Encryp(password); + } catch (NoSuchAlgorithmException e) { + e.printStackTrace(); + logger.error(">>>>>>>>>>>>>>转化MD5字符串错误 :" + e.getMessage(), e); + } + //判断用户是否已经登录过,登录过不再处理 + Object userInfo = request.getSession().getAttribute("user"); + User sessionUser = new User(); + if (userInfo != null) { + sessionUser = (User) userInfo; + } + if (sessionUser != null && username.equalsIgnoreCase(sessionUser.getLoginame()) + && sessionUser.getPassword().equals(password)) { + logger.info("====用户 " + username + "已经登录过, login 方法调用结束===="); + msgTip = "user already login"; + } + //获取用户状态 + int userStatus = -1; + try { + userStatus = userService.validateUser(username, password); + } catch (Exception e) { + logger.error(">>>>>>>>>>>>>用户 " + username + " 登录 login 方法 访问服务层异常====", e); + msgTip = "access service exception"; + } + switch (userStatus) { + case ExceptionCodeConstants.UserExceptionCode.USER_NOT_EXIST: + msgTip = "user is not exist"; + break; + case ExceptionCodeConstants.UserExceptionCode.USER_PASSWORD_ERROR: + msgTip = "user password error"; + break; + case ExceptionCodeConstants.UserExceptionCode.BLACK_USER: + msgTip = "user is black"; + break; + case ExceptionCodeConstants.UserExceptionCode.USER_ACCESS_EXCEPTION: + msgTip = "access service error"; + break; + default: + try { + //验证通过 ,可以登录,放入session,记录登录日志 + User user = userService.getUserByUserName(username); + // logService.create(new Logdetails(user, "登录系统", model.getClientIp(), + // new Timestamp(System.currentTimeMillis()), (short) 0, "管理用户:" + username + " 登录系统", username + " 登录系统")); + msgTip = "user can login"; + request.getSession().setAttribute("user",user); + } catch (Exception e) { + logger.error(">>>>>>>>>>>>>>>查询用户名为:" + username + " ,用户信息异常", e); + } + break; + } + Map data = new HashMap(); + data.put("msgTip", msgTip); + res.code = 200; + res.data = data; + logger.info("===============用户登录 login 方法调用结束==============="); + } catch(Exception e){ + e.printStackTrace(); + res.code = 500; + res.data = "用户登录失败"; + } + return res; + } + + @GetMapping(value = "/getUserSession") + public BaseResponseInfo getSessionUser(HttpServletRequest request) { + BaseResponseInfo res = new BaseResponseInfo(); + try { + Map data = new HashMap(); + Object userInfo = request.getSession().getAttribute("user"); + if(userInfo!=null) { + User user = (User) userInfo; + user.setPassword(null); + data.put("user", user); + } + res.code = 200; + res.data = data; + } catch(Exception e){ + e.printStackTrace(); + res.code = 500; + res.data = "获取session失败"; + } + return res; + } + + @GetMapping(value = "/logout") + public BaseResponseInfo logout(HttpServletRequest request, HttpServletResponse response) { + BaseResponseInfo res = new BaseResponseInfo(); + try { + request.getSession().removeAttribute("user"); + response.sendRedirect("/login.html"); + } catch(Exception e){ + e.printStackTrace(); + res.code = 500; + res.data = "退出失败"; + } + return res; + } + + @PostMapping(value = "/resetPwd") + public String resetPwd(@RequestParam("id") Long id, + HttpServletRequest request) throws NoSuchAlgorithmException { + Map objectMap = new HashMap(); + String password = "123456"; + String md5Pwd = Tools.md5Encryp(password); + int update = userService.resetPwd(md5Pwd, id); + if(update > 0) { + return returnJson(objectMap, message, ErpInfo.OK.code); + } else { + return returnJson(objectMap, message, ErpInfo.ERROR.code); + } + } + + @PostMapping(value = "/updatePwd") + public String updatePwd(@RequestParam("userId") Long userId, @RequestParam("password") String password, + @RequestParam("oldpwd") String oldpwd, HttpServletRequest request) { + Integer flag = 0; + Map objectMap = new HashMap(); + try { + User user = userService.getUser(userId); + String oldPassword = Tools.md5Encryp(oldpwd); + String md5Pwd = Tools.md5Encryp(password); + //必须和原始密码一致才可以更新密码 + if(user.getLoginame().equals("jsh")){ + flag = 3; //管理员jsh不能修改密码 + } else if (oldPassword.equalsIgnoreCase(user.getPassword())) { + user.setPassword(md5Pwd); + flag = userService.updateUserByObj(user); //1-成功 + } else { + flag = 2; //原始密码输入错误 + } + objectMap.put("status", flag); + if(flag > 0) { + return returnJson(objectMap, message, ErpInfo.OK.code); + } else { + return returnJson(objectMap, message, ErpInfo.ERROR.code); + } + } catch (Exception e) { + logger.error(">>>>>>>>>>>>>修改用户ID为 : " + userId + "密码信息失败", e); + flag = 3; + objectMap.put("status", flag); + return returnJson(objectMap, message, ErpInfo.ERROR.code); + } + } +} diff --git a/src/main/java/com/jsh/erp/datasource/entities/Account.java b/src/main/java/com/jsh/erp/datasource/entities/Account.java new file mode 100644 index 00000000..c134ad8e --- /dev/null +++ b/src/main/java/com/jsh/erp/datasource/entities/Account.java @@ -0,0 +1,227 @@ +package com.jsh.erp.datasource.entities; + +public class Account { + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database column jsh_account.Id + * + * @mbggenerated + */ + private Long id; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database column jsh_account.Name + * + * @mbggenerated + */ + private String name; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database column jsh_account.SerialNo + * + * @mbggenerated + */ + private String serialno; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database column jsh_account.InitialAmount + * + * @mbggenerated + */ + private Double initialamount; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database column jsh_account.CurrentAmount + * + * @mbggenerated + */ + private Double currentamount; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database column jsh_account.Remark + * + * @mbggenerated + */ + private String remark; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database column jsh_account.IsDefault + * + * @mbggenerated + */ + private Boolean isdefault; + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column jsh_account.Id + * + * @return the value of jsh_account.Id + * + * @mbggenerated + */ + public Long getId() { + return id; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column jsh_account.Id + * + * @param id the value for jsh_account.Id + * + * @mbggenerated + */ + public void setId(Long id) { + this.id = id; + } + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column jsh_account.Name + * + * @return the value of jsh_account.Name + * + * @mbggenerated + */ + public String getName() { + return name; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column jsh_account.Name + * + * @param name the value for jsh_account.Name + * + * @mbggenerated + */ + public void setName(String name) { + this.name = name == null ? null : name.trim(); + } + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column jsh_account.SerialNo + * + * @return the value of jsh_account.SerialNo + * + * @mbggenerated + */ + public String getSerialno() { + return serialno; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column jsh_account.SerialNo + * + * @param serialno the value for jsh_account.SerialNo + * + * @mbggenerated + */ + public void setSerialno(String serialno) { + this.serialno = serialno == null ? null : serialno.trim(); + } + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column jsh_account.InitialAmount + * + * @return the value of jsh_account.InitialAmount + * + * @mbggenerated + */ + public Double getInitialamount() { + return initialamount; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column jsh_account.InitialAmount + * + * @param initialamount the value for jsh_account.InitialAmount + * + * @mbggenerated + */ + public void setInitialamount(Double initialamount) { + this.initialamount = initialamount; + } + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column jsh_account.CurrentAmount + * + * @return the value of jsh_account.CurrentAmount + * + * @mbggenerated + */ + public Double getCurrentamount() { + return currentamount; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column jsh_account.CurrentAmount + * + * @param currentamount the value for jsh_account.CurrentAmount + * + * @mbggenerated + */ + public void setCurrentamount(Double currentamount) { + this.currentamount = currentamount; + } + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column jsh_account.Remark + * + * @return the value of jsh_account.Remark + * + * @mbggenerated + */ + public String getRemark() { + return remark; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column jsh_account.Remark + * + * @param remark the value for jsh_account.Remark + * + * @mbggenerated + */ + public void setRemark(String remark) { + this.remark = remark == null ? null : remark.trim(); + } + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column jsh_account.IsDefault + * + * @return the value of jsh_account.IsDefault + * + * @mbggenerated + */ + public Boolean getIsdefault() { + return isdefault; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column jsh_account.IsDefault + * + * @param isdefault the value for jsh_account.IsDefault + * + * @mbggenerated + */ + public void setIsdefault(Boolean isdefault) { + this.isdefault = isdefault; + } +} \ No newline at end of file diff --git a/src/main/java/com/jsh/erp/datasource/entities/AccountExample.java b/src/main/java/com/jsh/erp/datasource/entities/AccountExample.java new file mode 100644 index 00000000..633d7817 --- /dev/null +++ b/src/main/java/com/jsh/erp/datasource/entities/AccountExample.java @@ -0,0 +1,752 @@ +package com.jsh.erp.datasource.entities; + +import java.util.ArrayList; +import java.util.List; + +public class AccountExample { + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database table jsh_account + * + * @mbggenerated + */ + protected String orderByClause; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database table jsh_account + * + * @mbggenerated + */ + protected boolean distinct; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database table jsh_account + * + * @mbggenerated + */ + protected List oredCriteria; + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_account + * + * @mbggenerated + */ + public AccountExample() { + oredCriteria = new ArrayList(); + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_account + * + * @mbggenerated + */ + public void setOrderByClause(String orderByClause) { + this.orderByClause = orderByClause; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_account + * + * @mbggenerated + */ + public String getOrderByClause() { + return orderByClause; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_account + * + * @mbggenerated + */ + public void setDistinct(boolean distinct) { + this.distinct = distinct; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_account + * + * @mbggenerated + */ + public boolean isDistinct() { + return distinct; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_account + * + * @mbggenerated + */ + public List getOredCriteria() { + return oredCriteria; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_account + * + * @mbggenerated + */ + public void or(Criteria criteria) { + oredCriteria.add(criteria); + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_account + * + * @mbggenerated + */ + public Criteria or() { + Criteria criteria = createCriteriaInternal(); + oredCriteria.add(criteria); + return criteria; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_account + * + * @mbggenerated + */ + public Criteria createCriteria() { + Criteria criteria = createCriteriaInternal(); + if (oredCriteria.size() == 0) { + oredCriteria.add(criteria); + } + return criteria; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_account + * + * @mbggenerated + */ + protected Criteria createCriteriaInternal() { + Criteria criteria = new Criteria(); + return criteria; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_account + * + * @mbggenerated + */ + public void clear() { + oredCriteria.clear(); + orderByClause = null; + distinct = false; + } + + /** + * This class was generated by MyBatis Generator. + * This class corresponds to the database table jsh_account + * + * @mbggenerated + */ + protected abstract static class GeneratedCriteria { + protected List criteria; + + protected GeneratedCriteria() { + super(); + criteria = new ArrayList(); + } + + public boolean isValid() { + return criteria.size() > 0; + } + + public List getAllCriteria() { + return criteria; + } + + public List getCriteria() { + return criteria; + } + + protected void addCriterion(String condition) { + if (condition == null) { + throw new RuntimeException("Value for condition cannot be null"); + } + criteria.add(new Criterion(condition)); + } + + protected void addCriterion(String condition, Object value, String property) { + if (value == null) { + throw new RuntimeException("Value for " + property + " cannot be null"); + } + criteria.add(new Criterion(condition, value)); + } + + protected void addCriterion(String condition, Object value1, Object value2, String property) { + if (value1 == null || value2 == null) { + throw new RuntimeException("Between values for " + property + " cannot be null"); + } + criteria.add(new Criterion(condition, value1, value2)); + } + + public Criteria andIdIsNull() { + addCriterion("Id is null"); + return (Criteria) this; + } + + public Criteria andIdIsNotNull() { + addCriterion("Id is not null"); + return (Criteria) this; + } + + public Criteria andIdEqualTo(Long value) { + addCriterion("Id =", value, "id"); + return (Criteria) this; + } + + public Criteria andIdNotEqualTo(Long value) { + addCriterion("Id <>", value, "id"); + return (Criteria) this; + } + + public Criteria andIdGreaterThan(Long value) { + addCriterion("Id >", value, "id"); + return (Criteria) this; + } + + public Criteria andIdGreaterThanOrEqualTo(Long value) { + addCriterion("Id >=", value, "id"); + return (Criteria) this; + } + + public Criteria andIdLessThan(Long value) { + addCriterion("Id <", value, "id"); + return (Criteria) this; + } + + public Criteria andIdLessThanOrEqualTo(Long value) { + addCriterion("Id <=", value, "id"); + return (Criteria) this; + } + + public Criteria andIdIn(List values) { + addCriterion("Id in", values, "id"); + return (Criteria) this; + } + + public Criteria andIdNotIn(List values) { + addCriterion("Id not in", values, "id"); + return (Criteria) this; + } + + public Criteria andIdBetween(Long value1, Long value2) { + addCriterion("Id between", value1, value2, "id"); + return (Criteria) this; + } + + public Criteria andIdNotBetween(Long value1, Long value2) { + addCriterion("Id not between", value1, value2, "id"); + return (Criteria) this; + } + + public Criteria andNameIsNull() { + addCriterion("Name is null"); + return (Criteria) this; + } + + public Criteria andNameIsNotNull() { + addCriterion("Name is not null"); + return (Criteria) this; + } + + public Criteria andNameEqualTo(String value) { + addCriterion("Name =", value, "name"); + return (Criteria) this; + } + + public Criteria andNameNotEqualTo(String value) { + addCriterion("Name <>", value, "name"); + return (Criteria) this; + } + + public Criteria andNameGreaterThan(String value) { + addCriterion("Name >", value, "name"); + return (Criteria) this; + } + + public Criteria andNameGreaterThanOrEqualTo(String value) { + addCriterion("Name >=", value, "name"); + return (Criteria) this; + } + + public Criteria andNameLessThan(String value) { + addCriterion("Name <", value, "name"); + return (Criteria) this; + } + + public Criteria andNameLessThanOrEqualTo(String value) { + addCriterion("Name <=", value, "name"); + return (Criteria) this; + } + + public Criteria andNameLike(String value) { + addCriterion("Name like", value, "name"); + return (Criteria) this; + } + + public Criteria andNameNotLike(String value) { + addCriterion("Name not like", value, "name"); + return (Criteria) this; + } + + public Criteria andNameIn(List values) { + addCriterion("Name in", values, "name"); + return (Criteria) this; + } + + public Criteria andNameNotIn(List values) { + addCriterion("Name not in", values, "name"); + return (Criteria) this; + } + + public Criteria andNameBetween(String value1, String value2) { + addCriterion("Name between", value1, value2, "name"); + return (Criteria) this; + } + + public Criteria andNameNotBetween(String value1, String value2) { + addCriterion("Name not between", value1, value2, "name"); + return (Criteria) this; + } + + public Criteria andSerialnoIsNull() { + addCriterion("SerialNo is null"); + return (Criteria) this; + } + + public Criteria andSerialnoIsNotNull() { + addCriterion("SerialNo is not null"); + return (Criteria) this; + } + + public Criteria andSerialnoEqualTo(String value) { + addCriterion("SerialNo =", value, "serialno"); + return (Criteria) this; + } + + public Criteria andSerialnoNotEqualTo(String value) { + addCriterion("SerialNo <>", value, "serialno"); + return (Criteria) this; + } + + public Criteria andSerialnoGreaterThan(String value) { + addCriterion("SerialNo >", value, "serialno"); + return (Criteria) this; + } + + public Criteria andSerialnoGreaterThanOrEqualTo(String value) { + addCriterion("SerialNo >=", value, "serialno"); + return (Criteria) this; + } + + public Criteria andSerialnoLessThan(String value) { + addCriterion("SerialNo <", value, "serialno"); + return (Criteria) this; + } + + public Criteria andSerialnoLessThanOrEqualTo(String value) { + addCriterion("SerialNo <=", value, "serialno"); + return (Criteria) this; + } + + public Criteria andSerialnoLike(String value) { + addCriterion("SerialNo like", value, "serialno"); + return (Criteria) this; + } + + public Criteria andSerialnoNotLike(String value) { + addCriterion("SerialNo not like", value, "serialno"); + return (Criteria) this; + } + + public Criteria andSerialnoIn(List values) { + addCriterion("SerialNo in", values, "serialno"); + return (Criteria) this; + } + + public Criteria andSerialnoNotIn(List values) { + addCriterion("SerialNo not in", values, "serialno"); + return (Criteria) this; + } + + public Criteria andSerialnoBetween(String value1, String value2) { + addCriterion("SerialNo between", value1, value2, "serialno"); + return (Criteria) this; + } + + public Criteria andSerialnoNotBetween(String value1, String value2) { + addCriterion("SerialNo not between", value1, value2, "serialno"); + return (Criteria) this; + } + + public Criteria andInitialamountIsNull() { + addCriterion("InitialAmount is null"); + return (Criteria) this; + } + + public Criteria andInitialamountIsNotNull() { + addCriterion("InitialAmount is not null"); + return (Criteria) this; + } + + public Criteria andInitialamountEqualTo(Double value) { + addCriterion("InitialAmount =", value, "initialamount"); + return (Criteria) this; + } + + public Criteria andInitialamountNotEqualTo(Double value) { + addCriterion("InitialAmount <>", value, "initialamount"); + return (Criteria) this; + } + + public Criteria andInitialamountGreaterThan(Double value) { + addCriterion("InitialAmount >", value, "initialamount"); + return (Criteria) this; + } + + public Criteria andInitialamountGreaterThanOrEqualTo(Double value) { + addCriterion("InitialAmount >=", value, "initialamount"); + return (Criteria) this; + } + + public Criteria andInitialamountLessThan(Double value) { + addCriterion("InitialAmount <", value, "initialamount"); + return (Criteria) this; + } + + public Criteria andInitialamountLessThanOrEqualTo(Double value) { + addCriterion("InitialAmount <=", value, "initialamount"); + return (Criteria) this; + } + + public Criteria andInitialamountIn(List values) { + addCriterion("InitialAmount in", values, "initialamount"); + return (Criteria) this; + } + + public Criteria andInitialamountNotIn(List values) { + addCriterion("InitialAmount not in", values, "initialamount"); + return (Criteria) this; + } + + public Criteria andInitialamountBetween(Double value1, Double value2) { + addCriterion("InitialAmount between", value1, value2, "initialamount"); + return (Criteria) this; + } + + public Criteria andInitialamountNotBetween(Double value1, Double value2) { + addCriterion("InitialAmount not between", value1, value2, "initialamount"); + return (Criteria) this; + } + + public Criteria andCurrentamountIsNull() { + addCriterion("CurrentAmount is null"); + return (Criteria) this; + } + + public Criteria andCurrentamountIsNotNull() { + addCriterion("CurrentAmount is not null"); + return (Criteria) this; + } + + public Criteria andCurrentamountEqualTo(Double value) { + addCriterion("CurrentAmount =", value, "currentamount"); + return (Criteria) this; + } + + public Criteria andCurrentamountNotEqualTo(Double value) { + addCriterion("CurrentAmount <>", value, "currentamount"); + return (Criteria) this; + } + + public Criteria andCurrentamountGreaterThan(Double value) { + addCriterion("CurrentAmount >", value, "currentamount"); + return (Criteria) this; + } + + public Criteria andCurrentamountGreaterThanOrEqualTo(Double value) { + addCriterion("CurrentAmount >=", value, "currentamount"); + return (Criteria) this; + } + + public Criteria andCurrentamountLessThan(Double value) { + addCriterion("CurrentAmount <", value, "currentamount"); + return (Criteria) this; + } + + public Criteria andCurrentamountLessThanOrEqualTo(Double value) { + addCriterion("CurrentAmount <=", value, "currentamount"); + return (Criteria) this; + } + + public Criteria andCurrentamountIn(List values) { + addCriterion("CurrentAmount in", values, "currentamount"); + return (Criteria) this; + } + + public Criteria andCurrentamountNotIn(List values) { + addCriterion("CurrentAmount not in", values, "currentamount"); + return (Criteria) this; + } + + public Criteria andCurrentamountBetween(Double value1, Double value2) { + addCriterion("CurrentAmount between", value1, value2, "currentamount"); + return (Criteria) this; + } + + public Criteria andCurrentamountNotBetween(Double value1, Double value2) { + addCriterion("CurrentAmount not between", value1, value2, "currentamount"); + return (Criteria) this; + } + + public Criteria andRemarkIsNull() { + addCriterion("Remark is null"); + return (Criteria) this; + } + + public Criteria andRemarkIsNotNull() { + addCriterion("Remark is not null"); + return (Criteria) this; + } + + public Criteria andRemarkEqualTo(String value) { + addCriterion("Remark =", value, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkNotEqualTo(String value) { + addCriterion("Remark <>", value, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkGreaterThan(String value) { + addCriterion("Remark >", value, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkGreaterThanOrEqualTo(String value) { + addCriterion("Remark >=", value, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkLessThan(String value) { + addCriterion("Remark <", value, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkLessThanOrEqualTo(String value) { + addCriterion("Remark <=", value, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkLike(String value) { + addCriterion("Remark like", value, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkNotLike(String value) { + addCriterion("Remark not like", value, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkIn(List values) { + addCriterion("Remark in", values, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkNotIn(List values) { + addCriterion("Remark not in", values, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkBetween(String value1, String value2) { + addCriterion("Remark between", value1, value2, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkNotBetween(String value1, String value2) { + addCriterion("Remark not between", value1, value2, "remark"); + return (Criteria) this; + } + + public Criteria andIsdefaultIsNull() { + addCriterion("IsDefault is null"); + return (Criteria) this; + } + + public Criteria andIsdefaultIsNotNull() { + addCriterion("IsDefault is not null"); + return (Criteria) this; + } + + public Criteria andIsdefaultEqualTo(Boolean value) { + addCriterion("IsDefault =", value, "isdefault"); + return (Criteria) this; + } + + public Criteria andIsdefaultNotEqualTo(Boolean value) { + addCriterion("IsDefault <>", value, "isdefault"); + return (Criteria) this; + } + + public Criteria andIsdefaultGreaterThan(Boolean value) { + addCriterion("IsDefault >", value, "isdefault"); + return (Criteria) this; + } + + public Criteria andIsdefaultGreaterThanOrEqualTo(Boolean value) { + addCriterion("IsDefault >=", value, "isdefault"); + return (Criteria) this; + } + + public Criteria andIsdefaultLessThan(Boolean value) { + addCriterion("IsDefault <", value, "isdefault"); + return (Criteria) this; + } + + public Criteria andIsdefaultLessThanOrEqualTo(Boolean value) { + addCriterion("IsDefault <=", value, "isdefault"); + return (Criteria) this; + } + + public Criteria andIsdefaultIn(List values) { + addCriterion("IsDefault in", values, "isdefault"); + return (Criteria) this; + } + + public Criteria andIsdefaultNotIn(List values) { + addCriterion("IsDefault not in", values, "isdefault"); + return (Criteria) this; + } + + public Criteria andIsdefaultBetween(Boolean value1, Boolean value2) { + addCriterion("IsDefault between", value1, value2, "isdefault"); + return (Criteria) this; + } + + public Criteria andIsdefaultNotBetween(Boolean value1, Boolean value2) { + addCriterion("IsDefault not between", value1, value2, "isdefault"); + return (Criteria) this; + } + } + + /** + * This class was generated by MyBatis Generator. + * This class corresponds to the database table jsh_account + * + * @mbggenerated do_not_delete_during_merge + */ + public static class Criteria extends GeneratedCriteria { + + protected Criteria() { + super(); + } + } + + /** + * This class was generated by MyBatis Generator. + * This class corresponds to the database table jsh_account + * + * @mbggenerated + */ + public static class Criterion { + private String condition; + + private Object value; + + private Object secondValue; + + private boolean noValue; + + private boolean singleValue; + + private boolean betweenValue; + + private boolean listValue; + + private String typeHandler; + + public String getCondition() { + return condition; + } + + public Object getValue() { + return value; + } + + public Object getSecondValue() { + return secondValue; + } + + public boolean isNoValue() { + return noValue; + } + + public boolean isSingleValue() { + return singleValue; + } + + public boolean isBetweenValue() { + return betweenValue; + } + + public boolean isListValue() { + return listValue; + } + + public String getTypeHandler() { + return typeHandler; + } + + protected Criterion(String condition) { + super(); + this.condition = condition; + this.typeHandler = null; + this.noValue = true; + } + + protected Criterion(String condition, Object value, String typeHandler) { + super(); + this.condition = condition; + this.value = value; + this.typeHandler = typeHandler; + if (value instanceof List) { + this.listValue = true; + } else { + this.singleValue = true; + } + } + + protected Criterion(String condition, Object value) { + this(condition, value, null); + } + + protected Criterion(String condition, Object value, Object secondValue, String typeHandler) { + super(); + this.condition = condition; + this.value = value; + this.secondValue = secondValue; + this.typeHandler = typeHandler; + this.betweenValue = true; + } + + protected Criterion(String condition, Object value, Object secondValue) { + this(condition, value, secondValue, null); + } + } +} \ No newline at end of file diff --git a/src/main/java/com/jsh/erp/datasource/entities/AccountHead.java b/src/main/java/com/jsh/erp/datasource/entities/AccountHead.java new file mode 100644 index 00000000..500eca86 --- /dev/null +++ b/src/main/java/com/jsh/erp/datasource/entities/AccountHead.java @@ -0,0 +1,325 @@ +package com.jsh.erp.datasource.entities; + +import java.util.Date; + +public class AccountHead { + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database column jsh_accounthead.Id + * + * @mbggenerated + */ + private Long id; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database column jsh_accounthead.Type + * + * @mbggenerated + */ + private String type; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database column jsh_accounthead.OrganId + * + * @mbggenerated + */ + private Long organid; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database column jsh_accounthead.HandsPersonId + * + * @mbggenerated + */ + private Long handspersonid; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database column jsh_accounthead.ChangeAmount + * + * @mbggenerated + */ + private Double changeamount; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database column jsh_accounthead.TotalPrice + * + * @mbggenerated + */ + private Double totalprice; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database column jsh_accounthead.AccountId + * + * @mbggenerated + */ + private Long accountid; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database column jsh_accounthead.BillNo + * + * @mbggenerated + */ + private String billno; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database column jsh_accounthead.BillTime + * + * @mbggenerated + */ + private Date billtime; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database column jsh_accounthead.Remark + * + * @mbggenerated + */ + private String remark; + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column jsh_accounthead.Id + * + * @return the value of jsh_accounthead.Id + * + * @mbggenerated + */ + public Long getId() { + return id; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column jsh_accounthead.Id + * + * @param id the value for jsh_accounthead.Id + * + * @mbggenerated + */ + public void setId(Long id) { + this.id = id; + } + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column jsh_accounthead.Type + * + * @return the value of jsh_accounthead.Type + * + * @mbggenerated + */ + public String getType() { + return type; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column jsh_accounthead.Type + * + * @param type the value for jsh_accounthead.Type + * + * @mbggenerated + */ + public void setType(String type) { + this.type = type == null ? null : type.trim(); + } + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column jsh_accounthead.OrganId + * + * @return the value of jsh_accounthead.OrganId + * + * @mbggenerated + */ + public Long getOrganid() { + return organid; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column jsh_accounthead.OrganId + * + * @param organid the value for jsh_accounthead.OrganId + * + * @mbggenerated + */ + public void setOrganid(Long organid) { + this.organid = organid; + } + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column jsh_accounthead.HandsPersonId + * + * @return the value of jsh_accounthead.HandsPersonId + * + * @mbggenerated + */ + public Long getHandspersonid() { + return handspersonid; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column jsh_accounthead.HandsPersonId + * + * @param handspersonid the value for jsh_accounthead.HandsPersonId + * + * @mbggenerated + */ + public void setHandspersonid(Long handspersonid) { + this.handspersonid = handspersonid; + } + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column jsh_accounthead.ChangeAmount + * + * @return the value of jsh_accounthead.ChangeAmount + * + * @mbggenerated + */ + public Double getChangeamount() { + return changeamount; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column jsh_accounthead.ChangeAmount + * + * @param changeamount the value for jsh_accounthead.ChangeAmount + * + * @mbggenerated + */ + public void setChangeamount(Double changeamount) { + this.changeamount = changeamount; + } + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column jsh_accounthead.TotalPrice + * + * @return the value of jsh_accounthead.TotalPrice + * + * @mbggenerated + */ + public Double getTotalprice() { + return totalprice; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column jsh_accounthead.TotalPrice + * + * @param totalprice the value for jsh_accounthead.TotalPrice + * + * @mbggenerated + */ + public void setTotalprice(Double totalprice) { + this.totalprice = totalprice; + } + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column jsh_accounthead.AccountId + * + * @return the value of jsh_accounthead.AccountId + * + * @mbggenerated + */ + public Long getAccountid() { + return accountid; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column jsh_accounthead.AccountId + * + * @param accountid the value for jsh_accounthead.AccountId + * + * @mbggenerated + */ + public void setAccountid(Long accountid) { + this.accountid = accountid; + } + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column jsh_accounthead.BillNo + * + * @return the value of jsh_accounthead.BillNo + * + * @mbggenerated + */ + public String getBillno() { + return billno; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column jsh_accounthead.BillNo + * + * @param billno the value for jsh_accounthead.BillNo + * + * @mbggenerated + */ + public void setBillno(String billno) { + this.billno = billno == null ? null : billno.trim(); + } + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column jsh_accounthead.BillTime + * + * @return the value of jsh_accounthead.BillTime + * + * @mbggenerated + */ + public Date getBilltime() { + return billtime; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column jsh_accounthead.BillTime + * + * @param billtime the value for jsh_accounthead.BillTime + * + * @mbggenerated + */ + public void setBilltime(Date billtime) { + this.billtime = billtime; + } + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column jsh_accounthead.Remark + * + * @return the value of jsh_accounthead.Remark + * + * @mbggenerated + */ + public String getRemark() { + return remark; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column jsh_accounthead.Remark + * + * @param remark the value for jsh_accounthead.Remark + * + * @mbggenerated + */ + public void setRemark(String remark) { + this.remark = remark == null ? null : remark.trim(); + } +} \ No newline at end of file diff --git a/src/main/java/com/jsh/erp/datasource/entities/AccountHeadExample.java b/src/main/java/com/jsh/erp/datasource/entities/AccountHeadExample.java new file mode 100644 index 00000000..249c76a5 --- /dev/null +++ b/src/main/java/com/jsh/erp/datasource/entities/AccountHeadExample.java @@ -0,0 +1,933 @@ +package com.jsh.erp.datasource.entities; + +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +public class AccountHeadExample { + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database table jsh_accounthead + * + * @mbggenerated + */ + protected String orderByClause; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database table jsh_accounthead + * + * @mbggenerated + */ + protected boolean distinct; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database table jsh_accounthead + * + * @mbggenerated + */ + protected List oredCriteria; + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_accounthead + * + * @mbggenerated + */ + public AccountHeadExample() { + oredCriteria = new ArrayList(); + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_accounthead + * + * @mbggenerated + */ + public void setOrderByClause(String orderByClause) { + this.orderByClause = orderByClause; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_accounthead + * + * @mbggenerated + */ + public String getOrderByClause() { + return orderByClause; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_accounthead + * + * @mbggenerated + */ + public void setDistinct(boolean distinct) { + this.distinct = distinct; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_accounthead + * + * @mbggenerated + */ + public boolean isDistinct() { + return distinct; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_accounthead + * + * @mbggenerated + */ + public List getOredCriteria() { + return oredCriteria; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_accounthead + * + * @mbggenerated + */ + public void or(Criteria criteria) { + oredCriteria.add(criteria); + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_accounthead + * + * @mbggenerated + */ + public Criteria or() { + Criteria criteria = createCriteriaInternal(); + oredCriteria.add(criteria); + return criteria; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_accounthead + * + * @mbggenerated + */ + public Criteria createCriteria() { + Criteria criteria = createCriteriaInternal(); + if (oredCriteria.size() == 0) { + oredCriteria.add(criteria); + } + return criteria; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_accounthead + * + * @mbggenerated + */ + protected Criteria createCriteriaInternal() { + Criteria criteria = new Criteria(); + return criteria; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_accounthead + * + * @mbggenerated + */ + public void clear() { + oredCriteria.clear(); + orderByClause = null; + distinct = false; + } + + /** + * This class was generated by MyBatis Generator. + * This class corresponds to the database table jsh_accounthead + * + * @mbggenerated + */ + protected abstract static class GeneratedCriteria { + protected List criteria; + + protected GeneratedCriteria() { + super(); + criteria = new ArrayList(); + } + + public boolean isValid() { + return criteria.size() > 0; + } + + public List getAllCriteria() { + return criteria; + } + + public List getCriteria() { + return criteria; + } + + protected void addCriterion(String condition) { + if (condition == null) { + throw new RuntimeException("Value for condition cannot be null"); + } + criteria.add(new Criterion(condition)); + } + + protected void addCriterion(String condition, Object value, String property) { + if (value == null) { + throw new RuntimeException("Value for " + property + " cannot be null"); + } + criteria.add(new Criterion(condition, value)); + } + + protected void addCriterion(String condition, Object value1, Object value2, String property) { + if (value1 == null || value2 == null) { + throw new RuntimeException("Between values for " + property + " cannot be null"); + } + criteria.add(new Criterion(condition, value1, value2)); + } + + public Criteria andIdIsNull() { + addCriterion("Id is null"); + return (Criteria) this; + } + + public Criteria andIdIsNotNull() { + addCriterion("Id is not null"); + return (Criteria) this; + } + + public Criteria andIdEqualTo(Long value) { + addCriterion("Id =", value, "id"); + return (Criteria) this; + } + + public Criteria andIdNotEqualTo(Long value) { + addCriterion("Id <>", value, "id"); + return (Criteria) this; + } + + public Criteria andIdGreaterThan(Long value) { + addCriterion("Id >", value, "id"); + return (Criteria) this; + } + + public Criteria andIdGreaterThanOrEqualTo(Long value) { + addCriterion("Id >=", value, "id"); + return (Criteria) this; + } + + public Criteria andIdLessThan(Long value) { + addCriterion("Id <", value, "id"); + return (Criteria) this; + } + + public Criteria andIdLessThanOrEqualTo(Long value) { + addCriterion("Id <=", value, "id"); + return (Criteria) this; + } + + public Criteria andIdIn(List values) { + addCriterion("Id in", values, "id"); + return (Criteria) this; + } + + public Criteria andIdNotIn(List values) { + addCriterion("Id not in", values, "id"); + return (Criteria) this; + } + + public Criteria andIdBetween(Long value1, Long value2) { + addCriterion("Id between", value1, value2, "id"); + return (Criteria) this; + } + + public Criteria andIdNotBetween(Long value1, Long value2) { + addCriterion("Id not between", value1, value2, "id"); + return (Criteria) this; + } + + public Criteria andTypeIsNull() { + addCriterion("Type is null"); + return (Criteria) this; + } + + public Criteria andTypeIsNotNull() { + addCriterion("Type is not null"); + return (Criteria) this; + } + + public Criteria andTypeEqualTo(String value) { + addCriterion("Type =", value, "type"); + return (Criteria) this; + } + + public Criteria andTypeNotEqualTo(String value) { + addCriterion("Type <>", value, "type"); + return (Criteria) this; + } + + public Criteria andTypeGreaterThan(String value) { + addCriterion("Type >", value, "type"); + return (Criteria) this; + } + + public Criteria andTypeGreaterThanOrEqualTo(String value) { + addCriterion("Type >=", value, "type"); + return (Criteria) this; + } + + public Criteria andTypeLessThan(String value) { + addCriterion("Type <", value, "type"); + return (Criteria) this; + } + + public Criteria andTypeLessThanOrEqualTo(String value) { + addCriterion("Type <=", value, "type"); + return (Criteria) this; + } + + public Criteria andTypeLike(String value) { + addCriterion("Type like", value, "type"); + return (Criteria) this; + } + + public Criteria andTypeNotLike(String value) { + addCriterion("Type not like", value, "type"); + return (Criteria) this; + } + + public Criteria andTypeIn(List values) { + addCriterion("Type in", values, "type"); + return (Criteria) this; + } + + public Criteria andTypeNotIn(List values) { + addCriterion("Type not in", values, "type"); + return (Criteria) this; + } + + public Criteria andTypeBetween(String value1, String value2) { + addCriterion("Type between", value1, value2, "type"); + return (Criteria) this; + } + + public Criteria andTypeNotBetween(String value1, String value2) { + addCriterion("Type not between", value1, value2, "type"); + return (Criteria) this; + } + + public Criteria andOrganidIsNull() { + addCriterion("OrganId is null"); + return (Criteria) this; + } + + public Criteria andOrganidIsNotNull() { + addCriterion("OrganId is not null"); + return (Criteria) this; + } + + public Criteria andOrganidEqualTo(Long value) { + addCriterion("OrganId =", value, "organid"); + return (Criteria) this; + } + + public Criteria andOrganidNotEqualTo(Long value) { + addCriterion("OrganId <>", value, "organid"); + return (Criteria) this; + } + + public Criteria andOrganidGreaterThan(Long value) { + addCriterion("OrganId >", value, "organid"); + return (Criteria) this; + } + + public Criteria andOrganidGreaterThanOrEqualTo(Long value) { + addCriterion("OrganId >=", value, "organid"); + return (Criteria) this; + } + + public Criteria andOrganidLessThan(Long value) { + addCriterion("OrganId <", value, "organid"); + return (Criteria) this; + } + + public Criteria andOrganidLessThanOrEqualTo(Long value) { + addCriterion("OrganId <=", value, "organid"); + return (Criteria) this; + } + + public Criteria andOrganidIn(List values) { + addCriterion("OrganId in", values, "organid"); + return (Criteria) this; + } + + public Criteria andOrganidNotIn(List values) { + addCriterion("OrganId not in", values, "organid"); + return (Criteria) this; + } + + public Criteria andOrganidBetween(Long value1, Long value2) { + addCriterion("OrganId between", value1, value2, "organid"); + return (Criteria) this; + } + + public Criteria andOrganidNotBetween(Long value1, Long value2) { + addCriterion("OrganId not between", value1, value2, "organid"); + return (Criteria) this; + } + + public Criteria andHandspersonidIsNull() { + addCriterion("HandsPersonId is null"); + return (Criteria) this; + } + + public Criteria andHandspersonidIsNotNull() { + addCriterion("HandsPersonId is not null"); + return (Criteria) this; + } + + public Criteria andHandspersonidEqualTo(Long value) { + addCriterion("HandsPersonId =", value, "handspersonid"); + return (Criteria) this; + } + + public Criteria andHandspersonidNotEqualTo(Long value) { + addCriterion("HandsPersonId <>", value, "handspersonid"); + return (Criteria) this; + } + + public Criteria andHandspersonidGreaterThan(Long value) { + addCriterion("HandsPersonId >", value, "handspersonid"); + return (Criteria) this; + } + + public Criteria andHandspersonidGreaterThanOrEqualTo(Long value) { + addCriterion("HandsPersonId >=", value, "handspersonid"); + return (Criteria) this; + } + + public Criteria andHandspersonidLessThan(Long value) { + addCriterion("HandsPersonId <", value, "handspersonid"); + return (Criteria) this; + } + + public Criteria andHandspersonidLessThanOrEqualTo(Long value) { + addCriterion("HandsPersonId <=", value, "handspersonid"); + return (Criteria) this; + } + + public Criteria andHandspersonidIn(List values) { + addCriterion("HandsPersonId in", values, "handspersonid"); + return (Criteria) this; + } + + public Criteria andHandspersonidNotIn(List values) { + addCriterion("HandsPersonId not in", values, "handspersonid"); + return (Criteria) this; + } + + public Criteria andHandspersonidBetween(Long value1, Long value2) { + addCriterion("HandsPersonId between", value1, value2, "handspersonid"); + return (Criteria) this; + } + + public Criteria andHandspersonidNotBetween(Long value1, Long value2) { + addCriterion("HandsPersonId not between", value1, value2, "handspersonid"); + return (Criteria) this; + } + + public Criteria andChangeamountIsNull() { + addCriterion("ChangeAmount is null"); + return (Criteria) this; + } + + public Criteria andChangeamountIsNotNull() { + addCriterion("ChangeAmount is not null"); + return (Criteria) this; + } + + public Criteria andChangeamountEqualTo(Double value) { + addCriterion("ChangeAmount =", value, "changeamount"); + return (Criteria) this; + } + + public Criteria andChangeamountNotEqualTo(Double value) { + addCriterion("ChangeAmount <>", value, "changeamount"); + return (Criteria) this; + } + + public Criteria andChangeamountGreaterThan(Double value) { + addCriterion("ChangeAmount >", value, "changeamount"); + return (Criteria) this; + } + + public Criteria andChangeamountGreaterThanOrEqualTo(Double value) { + addCriterion("ChangeAmount >=", value, "changeamount"); + return (Criteria) this; + } + + public Criteria andChangeamountLessThan(Double value) { + addCriterion("ChangeAmount <", value, "changeamount"); + return (Criteria) this; + } + + public Criteria andChangeamountLessThanOrEqualTo(Double value) { + addCriterion("ChangeAmount <=", value, "changeamount"); + return (Criteria) this; + } + + public Criteria andChangeamountIn(List values) { + addCriterion("ChangeAmount in", values, "changeamount"); + return (Criteria) this; + } + + public Criteria andChangeamountNotIn(List values) { + addCriterion("ChangeAmount not in", values, "changeamount"); + return (Criteria) this; + } + + public Criteria andChangeamountBetween(Double value1, Double value2) { + addCriterion("ChangeAmount between", value1, value2, "changeamount"); + return (Criteria) this; + } + + public Criteria andChangeamountNotBetween(Double value1, Double value2) { + addCriterion("ChangeAmount not between", value1, value2, "changeamount"); + return (Criteria) this; + } + + public Criteria andTotalpriceIsNull() { + addCriterion("TotalPrice is null"); + return (Criteria) this; + } + + public Criteria andTotalpriceIsNotNull() { + addCriterion("TotalPrice is not null"); + return (Criteria) this; + } + + public Criteria andTotalpriceEqualTo(Double value) { + addCriterion("TotalPrice =", value, "totalprice"); + return (Criteria) this; + } + + public Criteria andTotalpriceNotEqualTo(Double value) { + addCriterion("TotalPrice <>", value, "totalprice"); + return (Criteria) this; + } + + public Criteria andTotalpriceGreaterThan(Double value) { + addCriterion("TotalPrice >", value, "totalprice"); + return (Criteria) this; + } + + public Criteria andTotalpriceGreaterThanOrEqualTo(Double value) { + addCriterion("TotalPrice >=", value, "totalprice"); + return (Criteria) this; + } + + public Criteria andTotalpriceLessThan(Double value) { + addCriterion("TotalPrice <", value, "totalprice"); + return (Criteria) this; + } + + public Criteria andTotalpriceLessThanOrEqualTo(Double value) { + addCriterion("TotalPrice <=", value, "totalprice"); + return (Criteria) this; + } + + public Criteria andTotalpriceIn(List values) { + addCriterion("TotalPrice in", values, "totalprice"); + return (Criteria) this; + } + + public Criteria andTotalpriceNotIn(List values) { + addCriterion("TotalPrice not in", values, "totalprice"); + return (Criteria) this; + } + + public Criteria andTotalpriceBetween(Double value1, Double value2) { + addCriterion("TotalPrice between", value1, value2, "totalprice"); + return (Criteria) this; + } + + public Criteria andTotalpriceNotBetween(Double value1, Double value2) { + addCriterion("TotalPrice not between", value1, value2, "totalprice"); + return (Criteria) this; + } + + public Criteria andAccountidIsNull() { + addCriterion("AccountId is null"); + return (Criteria) this; + } + + public Criteria andAccountidIsNotNull() { + addCriterion("AccountId is not null"); + return (Criteria) this; + } + + public Criteria andAccountidEqualTo(Long value) { + addCriterion("AccountId =", value, "accountid"); + return (Criteria) this; + } + + public Criteria andAccountidNotEqualTo(Long value) { + addCriterion("AccountId <>", value, "accountid"); + return (Criteria) this; + } + + public Criteria andAccountidGreaterThan(Long value) { + addCriterion("AccountId >", value, "accountid"); + return (Criteria) this; + } + + public Criteria andAccountidGreaterThanOrEqualTo(Long value) { + addCriterion("AccountId >=", value, "accountid"); + return (Criteria) this; + } + + public Criteria andAccountidLessThan(Long value) { + addCriterion("AccountId <", value, "accountid"); + return (Criteria) this; + } + + public Criteria andAccountidLessThanOrEqualTo(Long value) { + addCriterion("AccountId <=", value, "accountid"); + return (Criteria) this; + } + + public Criteria andAccountidIn(List values) { + addCriterion("AccountId in", values, "accountid"); + return (Criteria) this; + } + + public Criteria andAccountidNotIn(List values) { + addCriterion("AccountId not in", values, "accountid"); + return (Criteria) this; + } + + public Criteria andAccountidBetween(Long value1, Long value2) { + addCriterion("AccountId between", value1, value2, "accountid"); + return (Criteria) this; + } + + public Criteria andAccountidNotBetween(Long value1, Long value2) { + addCriterion("AccountId not between", value1, value2, "accountid"); + return (Criteria) this; + } + + public Criteria andBillnoIsNull() { + addCriterion("BillNo is null"); + return (Criteria) this; + } + + public Criteria andBillnoIsNotNull() { + addCriterion("BillNo is not null"); + return (Criteria) this; + } + + public Criteria andBillnoEqualTo(String value) { + addCriterion("BillNo =", value, "billno"); + return (Criteria) this; + } + + public Criteria andBillnoNotEqualTo(String value) { + addCriterion("BillNo <>", value, "billno"); + return (Criteria) this; + } + + public Criteria andBillnoGreaterThan(String value) { + addCriterion("BillNo >", value, "billno"); + return (Criteria) this; + } + + public Criteria andBillnoGreaterThanOrEqualTo(String value) { + addCriterion("BillNo >=", value, "billno"); + return (Criteria) this; + } + + public Criteria andBillnoLessThan(String value) { + addCriterion("BillNo <", value, "billno"); + return (Criteria) this; + } + + public Criteria andBillnoLessThanOrEqualTo(String value) { + addCriterion("BillNo <=", value, "billno"); + return (Criteria) this; + } + + public Criteria andBillnoLike(String value) { + addCriterion("BillNo like", value, "billno"); + return (Criteria) this; + } + + public Criteria andBillnoNotLike(String value) { + addCriterion("BillNo not like", value, "billno"); + return (Criteria) this; + } + + public Criteria andBillnoIn(List values) { + addCriterion("BillNo in", values, "billno"); + return (Criteria) this; + } + + public Criteria andBillnoNotIn(List values) { + addCriterion("BillNo not in", values, "billno"); + return (Criteria) this; + } + + public Criteria andBillnoBetween(String value1, String value2) { + addCriterion("BillNo between", value1, value2, "billno"); + return (Criteria) this; + } + + public Criteria andBillnoNotBetween(String value1, String value2) { + addCriterion("BillNo not between", value1, value2, "billno"); + return (Criteria) this; + } + + public Criteria andBilltimeIsNull() { + addCriterion("BillTime is null"); + return (Criteria) this; + } + + public Criteria andBilltimeIsNotNull() { + addCriterion("BillTime is not null"); + return (Criteria) this; + } + + public Criteria andBilltimeEqualTo(Date value) { + addCriterion("BillTime =", value, "billtime"); + return (Criteria) this; + } + + public Criteria andBilltimeNotEqualTo(Date value) { + addCriterion("BillTime <>", value, "billtime"); + return (Criteria) this; + } + + public Criteria andBilltimeGreaterThan(Date value) { + addCriterion("BillTime >", value, "billtime"); + return (Criteria) this; + } + + public Criteria andBilltimeGreaterThanOrEqualTo(Date value) { + addCriterion("BillTime >=", value, "billtime"); + return (Criteria) this; + } + + public Criteria andBilltimeLessThan(Date value) { + addCriterion("BillTime <", value, "billtime"); + return (Criteria) this; + } + + public Criteria andBilltimeLessThanOrEqualTo(Date value) { + addCriterion("BillTime <=", value, "billtime"); + return (Criteria) this; + } + + public Criteria andBilltimeIn(List values) { + addCriterion("BillTime in", values, "billtime"); + return (Criteria) this; + } + + public Criteria andBilltimeNotIn(List values) { + addCriterion("BillTime not in", values, "billtime"); + return (Criteria) this; + } + + public Criteria andBilltimeBetween(Date value1, Date value2) { + addCriterion("BillTime between", value1, value2, "billtime"); + return (Criteria) this; + } + + public Criteria andBilltimeNotBetween(Date value1, Date value2) { + addCriterion("BillTime not between", value1, value2, "billtime"); + return (Criteria) this; + } + + public Criteria andRemarkIsNull() { + addCriterion("Remark is null"); + return (Criteria) this; + } + + public Criteria andRemarkIsNotNull() { + addCriterion("Remark is not null"); + return (Criteria) this; + } + + public Criteria andRemarkEqualTo(String value) { + addCriterion("Remark =", value, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkNotEqualTo(String value) { + addCriterion("Remark <>", value, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkGreaterThan(String value) { + addCriterion("Remark >", value, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkGreaterThanOrEqualTo(String value) { + addCriterion("Remark >=", value, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkLessThan(String value) { + addCriterion("Remark <", value, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkLessThanOrEqualTo(String value) { + addCriterion("Remark <=", value, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkLike(String value) { + addCriterion("Remark like", value, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkNotLike(String value) { + addCriterion("Remark not like", value, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkIn(List values) { + addCriterion("Remark in", values, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkNotIn(List values) { + addCriterion("Remark not in", values, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkBetween(String value1, String value2) { + addCriterion("Remark between", value1, value2, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkNotBetween(String value1, String value2) { + addCriterion("Remark not between", value1, value2, "remark"); + return (Criteria) this; + } + } + + /** + * This class was generated by MyBatis Generator. + * This class corresponds to the database table jsh_accounthead + * + * @mbggenerated do_not_delete_during_merge + */ + public static class Criteria extends GeneratedCriteria { + + protected Criteria() { + super(); + } + } + + /** + * This class was generated by MyBatis Generator. + * This class corresponds to the database table jsh_accounthead + * + * @mbggenerated + */ + public static class Criterion { + private String condition; + + private Object value; + + private Object secondValue; + + private boolean noValue; + + private boolean singleValue; + + private boolean betweenValue; + + private boolean listValue; + + private String typeHandler; + + public String getCondition() { + return condition; + } + + public Object getValue() { + return value; + } + + public Object getSecondValue() { + return secondValue; + } + + public boolean isNoValue() { + return noValue; + } + + public boolean isSingleValue() { + return singleValue; + } + + public boolean isBetweenValue() { + return betweenValue; + } + + public boolean isListValue() { + return listValue; + } + + public String getTypeHandler() { + return typeHandler; + } + + protected Criterion(String condition) { + super(); + this.condition = condition; + this.typeHandler = null; + this.noValue = true; + } + + protected Criterion(String condition, Object value, String typeHandler) { + super(); + this.condition = condition; + this.value = value; + this.typeHandler = typeHandler; + if (value instanceof List) { + this.listValue = true; + } else { + this.singleValue = true; + } + } + + protected Criterion(String condition, Object value) { + this(condition, value, null); + } + + protected Criterion(String condition, Object value, Object secondValue, String typeHandler) { + super(); + this.condition = condition; + this.value = value; + this.secondValue = secondValue; + this.typeHandler = typeHandler; + this.betweenValue = true; + } + + protected Criterion(String condition, Object value, Object secondValue) { + this(condition, value, secondValue, null); + } + } +} \ No newline at end of file diff --git a/src/main/java/com/jsh/erp/datasource/entities/AccountHeadVo4ListEx.java b/src/main/java/com/jsh/erp/datasource/entities/AccountHeadVo4ListEx.java new file mode 100644 index 00000000..e2f729bd --- /dev/null +++ b/src/main/java/com/jsh/erp/datasource/entities/AccountHeadVo4ListEx.java @@ -0,0 +1,136 @@ +package com.jsh.erp.datasource.entities; + +import java.util.Date; + +public class AccountHeadVo4ListEx { + + private Long id; + + private String type; + + private Long organid; + + private Long handspersonid; + + private Double changeamount; + + private Double totalprice; + + private Long accountid; + + private String billno; + + private Date billtime; + + private String remark; + + private String organname; + + private String handspersonname; + + private String accountname; + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getType() { + return type; + } + + public void setType(String type) { + this.type = type; + } + + public Long getOrganid() { + return organid; + } + + public void setOrganid(Long organid) { + this.organid = organid; + } + + public Long getHandspersonid() { + return handspersonid; + } + + public void setHandspersonid(Long handspersonid) { + this.handspersonid = handspersonid; + } + + public Double getChangeamount() { + return changeamount; + } + + public void setChangeamount(Double changeamount) { + this.changeamount = changeamount; + } + + public Double getTotalprice() { + return totalprice; + } + + public void setTotalprice(Double totalprice) { + this.totalprice = totalprice; + } + + public Long getAccountid() { + return accountid; + } + + public void setAccountid(Long accountid) { + this.accountid = accountid; + } + + public String getBillno() { + return billno; + } + + public void setBillno(String billno) { + this.billno = billno; + } + + public Date getBilltime() { + return billtime; + } + + public void setBilltime(Date billtime) { + this.billtime = billtime; + } + + public String getRemark() { + return remark; + } + + public void setRemark(String remark) { + this.remark = remark; + } + + public String getOrganname() { + return organname; + } + + public void setOrganname(String organname) { + this.organname = organname; + } + + public String getHandspersonname() { + return handspersonname; + } + + public void setHandspersonname(String handspersonname) { + this.handspersonname = handspersonname; + } + + public String getAccountname() { + return accountname; + } + + public void setAccountname(String accountname) { + this.accountname = accountname; + } +} \ No newline at end of file diff --git a/src/main/java/com/jsh/erp/datasource/entities/AccountItem.java b/src/main/java/com/jsh/erp/datasource/entities/AccountItem.java new file mode 100644 index 00000000..847b36a0 --- /dev/null +++ b/src/main/java/com/jsh/erp/datasource/entities/AccountItem.java @@ -0,0 +1,195 @@ +package com.jsh.erp.datasource.entities; + +public class AccountItem { + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database column jsh_accountitem.Id + * + * @mbggenerated + */ + private Long id; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database column jsh_accountitem.HeaderId + * + * @mbggenerated + */ + private Long headerid; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database column jsh_accountitem.AccountId + * + * @mbggenerated + */ + private Long accountid; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database column jsh_accountitem.InOutItemId + * + * @mbggenerated + */ + private Long inoutitemid; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database column jsh_accountitem.EachAmount + * + * @mbggenerated + */ + private Double eachamount; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database column jsh_accountitem.Remark + * + * @mbggenerated + */ + private String remark; + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column jsh_accountitem.Id + * + * @return the value of jsh_accountitem.Id + * + * @mbggenerated + */ + public Long getId() { + return id; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column jsh_accountitem.Id + * + * @param id the value for jsh_accountitem.Id + * + * @mbggenerated + */ + public void setId(Long id) { + this.id = id; + } + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column jsh_accountitem.HeaderId + * + * @return the value of jsh_accountitem.HeaderId + * + * @mbggenerated + */ + public Long getHeaderid() { + return headerid; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column jsh_accountitem.HeaderId + * + * @param headerid the value for jsh_accountitem.HeaderId + * + * @mbggenerated + */ + public void setHeaderid(Long headerid) { + this.headerid = headerid; + } + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column jsh_accountitem.AccountId + * + * @return the value of jsh_accountitem.AccountId + * + * @mbggenerated + */ + public Long getAccountid() { + return accountid; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column jsh_accountitem.AccountId + * + * @param accountid the value for jsh_accountitem.AccountId + * + * @mbggenerated + */ + public void setAccountid(Long accountid) { + this.accountid = accountid; + } + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column jsh_accountitem.InOutItemId + * + * @return the value of jsh_accountitem.InOutItemId + * + * @mbggenerated + */ + public Long getInoutitemid() { + return inoutitemid; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column jsh_accountitem.InOutItemId + * + * @param inoutitemid the value for jsh_accountitem.InOutItemId + * + * @mbggenerated + */ + public void setInoutitemid(Long inoutitemid) { + this.inoutitemid = inoutitemid; + } + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column jsh_accountitem.EachAmount + * + * @return the value of jsh_accountitem.EachAmount + * + * @mbggenerated + */ + public Double getEachamount() { + return eachamount; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column jsh_accountitem.EachAmount + * + * @param eachamount the value for jsh_accountitem.EachAmount + * + * @mbggenerated + */ + public void setEachamount(Double eachamount) { + this.eachamount = eachamount; + } + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column jsh_accountitem.Remark + * + * @return the value of jsh_accountitem.Remark + * + * @mbggenerated + */ + public String getRemark() { + return remark; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column jsh_accountitem.Remark + * + * @param remark the value for jsh_accountitem.Remark + * + * @mbggenerated + */ + public void setRemark(String remark) { + this.remark = remark == null ? null : remark.trim(); + } +} \ No newline at end of file diff --git a/src/main/java/com/jsh/erp/datasource/entities/AccountItemExample.java b/src/main/java/com/jsh/erp/datasource/entities/AccountItemExample.java new file mode 100644 index 00000000..df089b48 --- /dev/null +++ b/src/main/java/com/jsh/erp/datasource/entities/AccountItemExample.java @@ -0,0 +1,672 @@ +package com.jsh.erp.datasource.entities; + +import java.util.ArrayList; +import java.util.List; + +public class AccountItemExample { + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database table jsh_accountitem + * + * @mbggenerated + */ + protected String orderByClause; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database table jsh_accountitem + * + * @mbggenerated + */ + protected boolean distinct; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database table jsh_accountitem + * + * @mbggenerated + */ + protected List oredCriteria; + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_accountitem + * + * @mbggenerated + */ + public AccountItemExample() { + oredCriteria = new ArrayList(); + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_accountitem + * + * @mbggenerated + */ + public void setOrderByClause(String orderByClause) { + this.orderByClause = orderByClause; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_accountitem + * + * @mbggenerated + */ + public String getOrderByClause() { + return orderByClause; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_accountitem + * + * @mbggenerated + */ + public void setDistinct(boolean distinct) { + this.distinct = distinct; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_accountitem + * + * @mbggenerated + */ + public boolean isDistinct() { + return distinct; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_accountitem + * + * @mbggenerated + */ + public List getOredCriteria() { + return oredCriteria; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_accountitem + * + * @mbggenerated + */ + public void or(Criteria criteria) { + oredCriteria.add(criteria); + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_accountitem + * + * @mbggenerated + */ + public Criteria or() { + Criteria criteria = createCriteriaInternal(); + oredCriteria.add(criteria); + return criteria; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_accountitem + * + * @mbggenerated + */ + public Criteria createCriteria() { + Criteria criteria = createCriteriaInternal(); + if (oredCriteria.size() == 0) { + oredCriteria.add(criteria); + } + return criteria; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_accountitem + * + * @mbggenerated + */ + protected Criteria createCriteriaInternal() { + Criteria criteria = new Criteria(); + return criteria; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_accountitem + * + * @mbggenerated + */ + public void clear() { + oredCriteria.clear(); + orderByClause = null; + distinct = false; + } + + /** + * This class was generated by MyBatis Generator. + * This class corresponds to the database table jsh_accountitem + * + * @mbggenerated + */ + protected abstract static class GeneratedCriteria { + protected List criteria; + + protected GeneratedCriteria() { + super(); + criteria = new ArrayList(); + } + + public boolean isValid() { + return criteria.size() > 0; + } + + public List getAllCriteria() { + return criteria; + } + + public List getCriteria() { + return criteria; + } + + protected void addCriterion(String condition) { + if (condition == null) { + throw new RuntimeException("Value for condition cannot be null"); + } + criteria.add(new Criterion(condition)); + } + + protected void addCriterion(String condition, Object value, String property) { + if (value == null) { + throw new RuntimeException("Value for " + property + " cannot be null"); + } + criteria.add(new Criterion(condition, value)); + } + + protected void addCriterion(String condition, Object value1, Object value2, String property) { + if (value1 == null || value2 == null) { + throw new RuntimeException("Between values for " + property + " cannot be null"); + } + criteria.add(new Criterion(condition, value1, value2)); + } + + public Criteria andIdIsNull() { + addCriterion("Id is null"); + return (Criteria) this; + } + + public Criteria andIdIsNotNull() { + addCriterion("Id is not null"); + return (Criteria) this; + } + + public Criteria andIdEqualTo(Long value) { + addCriterion("Id =", value, "id"); + return (Criteria) this; + } + + public Criteria andIdNotEqualTo(Long value) { + addCriterion("Id <>", value, "id"); + return (Criteria) this; + } + + public Criteria andIdGreaterThan(Long value) { + addCriterion("Id >", value, "id"); + return (Criteria) this; + } + + public Criteria andIdGreaterThanOrEqualTo(Long value) { + addCriterion("Id >=", value, "id"); + return (Criteria) this; + } + + public Criteria andIdLessThan(Long value) { + addCriterion("Id <", value, "id"); + return (Criteria) this; + } + + public Criteria andIdLessThanOrEqualTo(Long value) { + addCriterion("Id <=", value, "id"); + return (Criteria) this; + } + + public Criteria andIdIn(List values) { + addCriterion("Id in", values, "id"); + return (Criteria) this; + } + + public Criteria andIdNotIn(List values) { + addCriterion("Id not in", values, "id"); + return (Criteria) this; + } + + public Criteria andIdBetween(Long value1, Long value2) { + addCriterion("Id between", value1, value2, "id"); + return (Criteria) this; + } + + public Criteria andIdNotBetween(Long value1, Long value2) { + addCriterion("Id not between", value1, value2, "id"); + return (Criteria) this; + } + + public Criteria andHeaderidIsNull() { + addCriterion("HeaderId is null"); + return (Criteria) this; + } + + public Criteria andHeaderidIsNotNull() { + addCriterion("HeaderId is not null"); + return (Criteria) this; + } + + public Criteria andHeaderidEqualTo(Long value) { + addCriterion("HeaderId =", value, "headerid"); + return (Criteria) this; + } + + public Criteria andHeaderidNotEqualTo(Long value) { + addCriterion("HeaderId <>", value, "headerid"); + return (Criteria) this; + } + + public Criteria andHeaderidGreaterThan(Long value) { + addCriterion("HeaderId >", value, "headerid"); + return (Criteria) this; + } + + public Criteria andHeaderidGreaterThanOrEqualTo(Long value) { + addCriterion("HeaderId >=", value, "headerid"); + return (Criteria) this; + } + + public Criteria andHeaderidLessThan(Long value) { + addCriterion("HeaderId <", value, "headerid"); + return (Criteria) this; + } + + public Criteria andHeaderidLessThanOrEqualTo(Long value) { + addCriterion("HeaderId <=", value, "headerid"); + return (Criteria) this; + } + + public Criteria andHeaderidIn(List values) { + addCriterion("HeaderId in", values, "headerid"); + return (Criteria) this; + } + + public Criteria andHeaderidNotIn(List values) { + addCriterion("HeaderId not in", values, "headerid"); + return (Criteria) this; + } + + public Criteria andHeaderidBetween(Long value1, Long value2) { + addCriterion("HeaderId between", value1, value2, "headerid"); + return (Criteria) this; + } + + public Criteria andHeaderidNotBetween(Long value1, Long value2) { + addCriterion("HeaderId not between", value1, value2, "headerid"); + return (Criteria) this; + } + + public Criteria andAccountidIsNull() { + addCriterion("AccountId is null"); + return (Criteria) this; + } + + public Criteria andAccountidIsNotNull() { + addCriterion("AccountId is not null"); + return (Criteria) this; + } + + public Criteria andAccountidEqualTo(Long value) { + addCriterion("AccountId =", value, "accountid"); + return (Criteria) this; + } + + public Criteria andAccountidNotEqualTo(Long value) { + addCriterion("AccountId <>", value, "accountid"); + return (Criteria) this; + } + + public Criteria andAccountidGreaterThan(Long value) { + addCriterion("AccountId >", value, "accountid"); + return (Criteria) this; + } + + public Criteria andAccountidGreaterThanOrEqualTo(Long value) { + addCriterion("AccountId >=", value, "accountid"); + return (Criteria) this; + } + + public Criteria andAccountidLessThan(Long value) { + addCriterion("AccountId <", value, "accountid"); + return (Criteria) this; + } + + public Criteria andAccountidLessThanOrEqualTo(Long value) { + addCriterion("AccountId <=", value, "accountid"); + return (Criteria) this; + } + + public Criteria andAccountidIn(List values) { + addCriterion("AccountId in", values, "accountid"); + return (Criteria) this; + } + + public Criteria andAccountidNotIn(List values) { + addCriterion("AccountId not in", values, "accountid"); + return (Criteria) this; + } + + public Criteria andAccountidBetween(Long value1, Long value2) { + addCriterion("AccountId between", value1, value2, "accountid"); + return (Criteria) this; + } + + public Criteria andAccountidNotBetween(Long value1, Long value2) { + addCriterion("AccountId not between", value1, value2, "accountid"); + return (Criteria) this; + } + + public Criteria andInoutitemidIsNull() { + addCriterion("InOutItemId is null"); + return (Criteria) this; + } + + public Criteria andInoutitemidIsNotNull() { + addCriterion("InOutItemId is not null"); + return (Criteria) this; + } + + public Criteria andInoutitemidEqualTo(Long value) { + addCriterion("InOutItemId =", value, "inoutitemid"); + return (Criteria) this; + } + + public Criteria andInoutitemidNotEqualTo(Long value) { + addCriterion("InOutItemId <>", value, "inoutitemid"); + return (Criteria) this; + } + + public Criteria andInoutitemidGreaterThan(Long value) { + addCriterion("InOutItemId >", value, "inoutitemid"); + return (Criteria) this; + } + + public Criteria andInoutitemidGreaterThanOrEqualTo(Long value) { + addCriterion("InOutItemId >=", value, "inoutitemid"); + return (Criteria) this; + } + + public Criteria andInoutitemidLessThan(Long value) { + addCriterion("InOutItemId <", value, "inoutitemid"); + return (Criteria) this; + } + + public Criteria andInoutitemidLessThanOrEqualTo(Long value) { + addCriterion("InOutItemId <=", value, "inoutitemid"); + return (Criteria) this; + } + + public Criteria andInoutitemidIn(List values) { + addCriterion("InOutItemId in", values, "inoutitemid"); + return (Criteria) this; + } + + public Criteria andInoutitemidNotIn(List values) { + addCriterion("InOutItemId not in", values, "inoutitemid"); + return (Criteria) this; + } + + public Criteria andInoutitemidBetween(Long value1, Long value2) { + addCriterion("InOutItemId between", value1, value2, "inoutitemid"); + return (Criteria) this; + } + + public Criteria andInoutitemidNotBetween(Long value1, Long value2) { + addCriterion("InOutItemId not between", value1, value2, "inoutitemid"); + return (Criteria) this; + } + + public Criteria andEachamountIsNull() { + addCriterion("EachAmount is null"); + return (Criteria) this; + } + + public Criteria andEachamountIsNotNull() { + addCriterion("EachAmount is not null"); + return (Criteria) this; + } + + public Criteria andEachamountEqualTo(Double value) { + addCriterion("EachAmount =", value, "eachamount"); + return (Criteria) this; + } + + public Criteria andEachamountNotEqualTo(Double value) { + addCriterion("EachAmount <>", value, "eachamount"); + return (Criteria) this; + } + + public Criteria andEachamountGreaterThan(Double value) { + addCriterion("EachAmount >", value, "eachamount"); + return (Criteria) this; + } + + public Criteria andEachamountGreaterThanOrEqualTo(Double value) { + addCriterion("EachAmount >=", value, "eachamount"); + return (Criteria) this; + } + + public Criteria andEachamountLessThan(Double value) { + addCriterion("EachAmount <", value, "eachamount"); + return (Criteria) this; + } + + public Criteria andEachamountLessThanOrEqualTo(Double value) { + addCriterion("EachAmount <=", value, "eachamount"); + return (Criteria) this; + } + + public Criteria andEachamountIn(List values) { + addCriterion("EachAmount in", values, "eachamount"); + return (Criteria) this; + } + + public Criteria andEachamountNotIn(List values) { + addCriterion("EachAmount not in", values, "eachamount"); + return (Criteria) this; + } + + public Criteria andEachamountBetween(Double value1, Double value2) { + addCriterion("EachAmount between", value1, value2, "eachamount"); + return (Criteria) this; + } + + public Criteria andEachamountNotBetween(Double value1, Double value2) { + addCriterion("EachAmount not between", value1, value2, "eachamount"); + return (Criteria) this; + } + + public Criteria andRemarkIsNull() { + addCriterion("Remark is null"); + return (Criteria) this; + } + + public Criteria andRemarkIsNotNull() { + addCriterion("Remark is not null"); + return (Criteria) this; + } + + public Criteria andRemarkEqualTo(String value) { + addCriterion("Remark =", value, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkNotEqualTo(String value) { + addCriterion("Remark <>", value, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkGreaterThan(String value) { + addCriterion("Remark >", value, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkGreaterThanOrEqualTo(String value) { + addCriterion("Remark >=", value, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkLessThan(String value) { + addCriterion("Remark <", value, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkLessThanOrEqualTo(String value) { + addCriterion("Remark <=", value, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkLike(String value) { + addCriterion("Remark like", value, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkNotLike(String value) { + addCriterion("Remark not like", value, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkIn(List values) { + addCriterion("Remark in", values, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkNotIn(List values) { + addCriterion("Remark not in", values, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkBetween(String value1, String value2) { + addCriterion("Remark between", value1, value2, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkNotBetween(String value1, String value2) { + addCriterion("Remark not between", value1, value2, "remark"); + return (Criteria) this; + } + } + + /** + * This class was generated by MyBatis Generator. + * This class corresponds to the database table jsh_accountitem + * + * @mbggenerated do_not_delete_during_merge + */ + public static class Criteria extends GeneratedCriteria { + + protected Criteria() { + super(); + } + } + + /** + * This class was generated by MyBatis Generator. + * This class corresponds to the database table jsh_accountitem + * + * @mbggenerated + */ + public static class Criterion { + private String condition; + + private Object value; + + private Object secondValue; + + private boolean noValue; + + private boolean singleValue; + + private boolean betweenValue; + + private boolean listValue; + + private String typeHandler; + + public String getCondition() { + return condition; + } + + public Object getValue() { + return value; + } + + public Object getSecondValue() { + return secondValue; + } + + public boolean isNoValue() { + return noValue; + } + + public boolean isSingleValue() { + return singleValue; + } + + public boolean isBetweenValue() { + return betweenValue; + } + + public boolean isListValue() { + return listValue; + } + + public String getTypeHandler() { + return typeHandler; + } + + protected Criterion(String condition) { + super(); + this.condition = condition; + this.typeHandler = null; + this.noValue = true; + } + + protected Criterion(String condition, Object value, String typeHandler) { + super(); + this.condition = condition; + this.value = value; + this.typeHandler = typeHandler; + if (value instanceof List) { + this.listValue = true; + } else { + this.singleValue = true; + } + } + + protected Criterion(String condition, Object value) { + this(condition, value, null); + } + + protected Criterion(String condition, Object value, Object secondValue, String typeHandler) { + super(); + this.condition = condition; + this.value = value; + this.secondValue = secondValue; + this.typeHandler = typeHandler; + this.betweenValue = true; + } + + protected Criterion(String condition, Object value, Object secondValue) { + this(condition, value, secondValue, null); + } + } +} \ No newline at end of file diff --git a/src/main/java/com/jsh/erp/datasource/entities/App.java b/src/main/java/com/jsh/erp/datasource/entities/App.java new file mode 100644 index 00000000..279c8d39 --- /dev/null +++ b/src/main/java/com/jsh/erp/datasource/entities/App.java @@ -0,0 +1,483 @@ +package com.jsh.erp.datasource.entities; + +public class App { + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database column jsh_app.Id + * + * @mbggenerated + */ + private Long id; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database column jsh_app.Number + * + * @mbggenerated + */ + private String number; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database column jsh_app.Name + * + * @mbggenerated + */ + private String name; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database column jsh_app.Type + * + * @mbggenerated + */ + private String type; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database column jsh_app.Icon + * + * @mbggenerated + */ + private String icon; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database column jsh_app.URL + * + * @mbggenerated + */ + private String url; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database column jsh_app.Width + * + * @mbggenerated + */ + private String width; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database column jsh_app.Height + * + * @mbggenerated + */ + private String height; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database column jsh_app.ReSize + * + * @mbggenerated + */ + private Boolean resize; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database column jsh_app.OpenMax + * + * @mbggenerated + */ + private Boolean openmax; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database column jsh_app.Flash + * + * @mbggenerated + */ + private Boolean flash; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database column jsh_app.ZL + * + * @mbggenerated + */ + private String zl; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database column jsh_app.Sort + * + * @mbggenerated + */ + private String sort; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database column jsh_app.Remark + * + * @mbggenerated + */ + private String remark; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database column jsh_app.Enabled + * + * @mbggenerated + */ + private Boolean enabled; + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column jsh_app.Id + * + * @return the value of jsh_app.Id + * + * @mbggenerated + */ + public Long getId() { + return id; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column jsh_app.Id + * + * @param id the value for jsh_app.Id + * + * @mbggenerated + */ + public void setId(Long id) { + this.id = id; + } + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column jsh_app.Number + * + * @return the value of jsh_app.Number + * + * @mbggenerated + */ + public String getNumber() { + return number; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column jsh_app.Number + * + * @param number the value for jsh_app.Number + * + * @mbggenerated + */ + public void setNumber(String number) { + this.number = number == null ? null : number.trim(); + } + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column jsh_app.Name + * + * @return the value of jsh_app.Name + * + * @mbggenerated + */ + public String getName() { + return name; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column jsh_app.Name + * + * @param name the value for jsh_app.Name + * + * @mbggenerated + */ + public void setName(String name) { + this.name = name == null ? null : name.trim(); + } + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column jsh_app.Type + * + * @return the value of jsh_app.Type + * + * @mbggenerated + */ + public String getType() { + return type; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column jsh_app.Type + * + * @param type the value for jsh_app.Type + * + * @mbggenerated + */ + public void setType(String type) { + this.type = type == null ? null : type.trim(); + } + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column jsh_app.Icon + * + * @return the value of jsh_app.Icon + * + * @mbggenerated + */ + public String getIcon() { + return icon; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column jsh_app.Icon + * + * @param icon the value for jsh_app.Icon + * + * @mbggenerated + */ + public void setIcon(String icon) { + this.icon = icon == null ? null : icon.trim(); + } + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column jsh_app.URL + * + * @return the value of jsh_app.URL + * + * @mbggenerated + */ + public String getUrl() { + return url; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column jsh_app.URL + * + * @param url the value for jsh_app.URL + * + * @mbggenerated + */ + public void setUrl(String url) { + this.url = url == null ? null : url.trim(); + } + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column jsh_app.Width + * + * @return the value of jsh_app.Width + * + * @mbggenerated + */ + public String getWidth() { + return width; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column jsh_app.Width + * + * @param width the value for jsh_app.Width + * + * @mbggenerated + */ + public void setWidth(String width) { + this.width = width == null ? null : width.trim(); + } + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column jsh_app.Height + * + * @return the value of jsh_app.Height + * + * @mbggenerated + */ + public String getHeight() { + return height; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column jsh_app.Height + * + * @param height the value for jsh_app.Height + * + * @mbggenerated + */ + public void setHeight(String height) { + this.height = height == null ? null : height.trim(); + } + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column jsh_app.ReSize + * + * @return the value of jsh_app.ReSize + * + * @mbggenerated + */ + public Boolean getResize() { + return resize; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column jsh_app.ReSize + * + * @param resize the value for jsh_app.ReSize + * + * @mbggenerated + */ + public void setResize(Boolean resize) { + this.resize = resize; + } + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column jsh_app.OpenMax + * + * @return the value of jsh_app.OpenMax + * + * @mbggenerated + */ + public Boolean getOpenmax() { + return openmax; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column jsh_app.OpenMax + * + * @param openmax the value for jsh_app.OpenMax + * + * @mbggenerated + */ + public void setOpenmax(Boolean openmax) { + this.openmax = openmax; + } + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column jsh_app.Flash + * + * @return the value of jsh_app.Flash + * + * @mbggenerated + */ + public Boolean getFlash() { + return flash; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column jsh_app.Flash + * + * @param flash the value for jsh_app.Flash + * + * @mbggenerated + */ + public void setFlash(Boolean flash) { + this.flash = flash; + } + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column jsh_app.ZL + * + * @return the value of jsh_app.ZL + * + * @mbggenerated + */ + public String getZl() { + return zl; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column jsh_app.ZL + * + * @param zl the value for jsh_app.ZL + * + * @mbggenerated + */ + public void setZl(String zl) { + this.zl = zl == null ? null : zl.trim(); + } + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column jsh_app.Sort + * + * @return the value of jsh_app.Sort + * + * @mbggenerated + */ + public String getSort() { + return sort; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column jsh_app.Sort + * + * @param sort the value for jsh_app.Sort + * + * @mbggenerated + */ + public void setSort(String sort) { + this.sort = sort == null ? null : sort.trim(); + } + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column jsh_app.Remark + * + * @return the value of jsh_app.Remark + * + * @mbggenerated + */ + public String getRemark() { + return remark; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column jsh_app.Remark + * + * @param remark the value for jsh_app.Remark + * + * @mbggenerated + */ + public void setRemark(String remark) { + this.remark = remark == null ? null : remark.trim(); + } + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column jsh_app.Enabled + * + * @return the value of jsh_app.Enabled + * + * @mbggenerated + */ + public Boolean getEnabled() { + return enabled; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column jsh_app.Enabled + * + * @param enabled the value for jsh_app.Enabled + * + * @mbggenerated + */ + public void setEnabled(Boolean enabled) { + this.enabled = enabled; + } +} \ No newline at end of file diff --git a/src/main/java/com/jsh/erp/datasource/entities/AppExample.java b/src/main/java/com/jsh/erp/datasource/entities/AppExample.java new file mode 100644 index 00000000..d2075307 --- /dev/null +++ b/src/main/java/com/jsh/erp/datasource/entities/AppExample.java @@ -0,0 +1,1302 @@ +package com.jsh.erp.datasource.entities; + +import java.util.ArrayList; +import java.util.List; + +public class AppExample { + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database table jsh_app + * + * @mbggenerated + */ + protected String orderByClause; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database table jsh_app + * + * @mbggenerated + */ + protected boolean distinct; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database table jsh_app + * + * @mbggenerated + */ + protected List oredCriteria; + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_app + * + * @mbggenerated + */ + public AppExample() { + oredCriteria = new ArrayList(); + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_app + * + * @mbggenerated + */ + public void setOrderByClause(String orderByClause) { + this.orderByClause = orderByClause; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_app + * + * @mbggenerated + */ + public String getOrderByClause() { + return orderByClause; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_app + * + * @mbggenerated + */ + public void setDistinct(boolean distinct) { + this.distinct = distinct; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_app + * + * @mbggenerated + */ + public boolean isDistinct() { + return distinct; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_app + * + * @mbggenerated + */ + public List getOredCriteria() { + return oredCriteria; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_app + * + * @mbggenerated + */ + public void or(Criteria criteria) { + oredCriteria.add(criteria); + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_app + * + * @mbggenerated + */ + public Criteria or() { + Criteria criteria = createCriteriaInternal(); + oredCriteria.add(criteria); + return criteria; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_app + * + * @mbggenerated + */ + public Criteria createCriteria() { + Criteria criteria = createCriteriaInternal(); + if (oredCriteria.size() == 0) { + oredCriteria.add(criteria); + } + return criteria; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_app + * + * @mbggenerated + */ + protected Criteria createCriteriaInternal() { + Criteria criteria = new Criteria(); + return criteria; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_app + * + * @mbggenerated + */ + public void clear() { + oredCriteria.clear(); + orderByClause = null; + distinct = false; + } + + /** + * This class was generated by MyBatis Generator. + * This class corresponds to the database table jsh_app + * + * @mbggenerated + */ + protected abstract static class GeneratedCriteria { + protected List criteria; + + protected GeneratedCriteria() { + super(); + criteria = new ArrayList(); + } + + public boolean isValid() { + return criteria.size() > 0; + } + + public List getAllCriteria() { + return criteria; + } + + public List getCriteria() { + return criteria; + } + + protected void addCriterion(String condition) { + if (condition == null) { + throw new RuntimeException("Value for condition cannot be null"); + } + criteria.add(new Criterion(condition)); + } + + protected void addCriterion(String condition, Object value, String property) { + if (value == null) { + throw new RuntimeException("Value for " + property + " cannot be null"); + } + criteria.add(new Criterion(condition, value)); + } + + protected void addCriterion(String condition, Object value1, Object value2, String property) { + if (value1 == null || value2 == null) { + throw new RuntimeException("Between values for " + property + " cannot be null"); + } + criteria.add(new Criterion(condition, value1, value2)); + } + + public Criteria andIdIsNull() { + addCriterion("Id is null"); + return (Criteria) this; + } + + public Criteria andIdIsNotNull() { + addCriterion("Id is not null"); + return (Criteria) this; + } + + public Criteria andIdEqualTo(Long value) { + addCriterion("Id =", value, "id"); + return (Criteria) this; + } + + public Criteria andIdNotEqualTo(Long value) { + addCriterion("Id <>", value, "id"); + return (Criteria) this; + } + + public Criteria andIdGreaterThan(Long value) { + addCriterion("Id >", value, "id"); + return (Criteria) this; + } + + public Criteria andIdGreaterThanOrEqualTo(Long value) { + addCriterion("Id >=", value, "id"); + return (Criteria) this; + } + + public Criteria andIdLessThan(Long value) { + addCriterion("Id <", value, "id"); + return (Criteria) this; + } + + public Criteria andIdLessThanOrEqualTo(Long value) { + addCriterion("Id <=", value, "id"); + return (Criteria) this; + } + + public Criteria andIdIn(List values) { + addCriterion("Id in", values, "id"); + return (Criteria) this; + } + + public Criteria andIdNotIn(List values) { + addCriterion("Id not in", values, "id"); + return (Criteria) this; + } + + public Criteria andIdBetween(Long value1, Long value2) { + addCriterion("Id between", value1, value2, "id"); + return (Criteria) this; + } + + public Criteria andIdNotBetween(Long value1, Long value2) { + addCriterion("Id not between", value1, value2, "id"); + return (Criteria) this; + } + + public Criteria andNumberIsNull() { + addCriterion("Number is null"); + return (Criteria) this; + } + + public Criteria andNumberIsNotNull() { + addCriterion("Number is not null"); + return (Criteria) this; + } + + public Criteria andNumberEqualTo(String value) { + addCriterion("Number =", value, "number"); + return (Criteria) this; + } + + public Criteria andNumberNotEqualTo(String value) { + addCriterion("Number <>", value, "number"); + return (Criteria) this; + } + + public Criteria andNumberGreaterThan(String value) { + addCriterion("Number >", value, "number"); + return (Criteria) this; + } + + public Criteria andNumberGreaterThanOrEqualTo(String value) { + addCriterion("Number >=", value, "number"); + return (Criteria) this; + } + + public Criteria andNumberLessThan(String value) { + addCriterion("Number <", value, "number"); + return (Criteria) this; + } + + public Criteria andNumberLessThanOrEqualTo(String value) { + addCriterion("Number <=", value, "number"); + return (Criteria) this; + } + + public Criteria andNumberLike(String value) { + addCriterion("Number like", value, "number"); + return (Criteria) this; + } + + public Criteria andNumberNotLike(String value) { + addCriterion("Number not like", value, "number"); + return (Criteria) this; + } + + public Criteria andNumberIn(List values) { + addCriterion("Number in", values, "number"); + return (Criteria) this; + } + + public Criteria andNumberNotIn(List values) { + addCriterion("Number not in", values, "number"); + return (Criteria) this; + } + + public Criteria andNumberBetween(String value1, String value2) { + addCriterion("Number between", value1, value2, "number"); + return (Criteria) this; + } + + public Criteria andNumberNotBetween(String value1, String value2) { + addCriterion("Number not between", value1, value2, "number"); + return (Criteria) this; + } + + public Criteria andNameIsNull() { + addCriterion("Name is null"); + return (Criteria) this; + } + + public Criteria andNameIsNotNull() { + addCriterion("Name is not null"); + return (Criteria) this; + } + + public Criteria andNameEqualTo(String value) { + addCriterion("Name =", value, "name"); + return (Criteria) this; + } + + public Criteria andNameNotEqualTo(String value) { + addCriterion("Name <>", value, "name"); + return (Criteria) this; + } + + public Criteria andNameGreaterThan(String value) { + addCriterion("Name >", value, "name"); + return (Criteria) this; + } + + public Criteria andNameGreaterThanOrEqualTo(String value) { + addCriterion("Name >=", value, "name"); + return (Criteria) this; + } + + public Criteria andNameLessThan(String value) { + addCriterion("Name <", value, "name"); + return (Criteria) this; + } + + public Criteria andNameLessThanOrEqualTo(String value) { + addCriterion("Name <=", value, "name"); + return (Criteria) this; + } + + public Criteria andNameLike(String value) { + addCriterion("Name like", value, "name"); + return (Criteria) this; + } + + public Criteria andNameNotLike(String value) { + addCriterion("Name not like", value, "name"); + return (Criteria) this; + } + + public Criteria andNameIn(List values) { + addCriterion("Name in", values, "name"); + return (Criteria) this; + } + + public Criteria andNameNotIn(List values) { + addCriterion("Name not in", values, "name"); + return (Criteria) this; + } + + public Criteria andNameBetween(String value1, String value2) { + addCriterion("Name between", value1, value2, "name"); + return (Criteria) this; + } + + public Criteria andNameNotBetween(String value1, String value2) { + addCriterion("Name not between", value1, value2, "name"); + return (Criteria) this; + } + + public Criteria andTypeIsNull() { + addCriterion("Type is null"); + return (Criteria) this; + } + + public Criteria andTypeIsNotNull() { + addCriterion("Type is not null"); + return (Criteria) this; + } + + public Criteria andTypeEqualTo(String value) { + addCriterion("Type =", value, "type"); + return (Criteria) this; + } + + public Criteria andTypeNotEqualTo(String value) { + addCriterion("Type <>", value, "type"); + return (Criteria) this; + } + + public Criteria andTypeGreaterThan(String value) { + addCriterion("Type >", value, "type"); + return (Criteria) this; + } + + public Criteria andTypeGreaterThanOrEqualTo(String value) { + addCriterion("Type >=", value, "type"); + return (Criteria) this; + } + + public Criteria andTypeLessThan(String value) { + addCriterion("Type <", value, "type"); + return (Criteria) this; + } + + public Criteria andTypeLessThanOrEqualTo(String value) { + addCriterion("Type <=", value, "type"); + return (Criteria) this; + } + + public Criteria andTypeLike(String value) { + addCriterion("Type like", value, "type"); + return (Criteria) this; + } + + public Criteria andTypeNotLike(String value) { + addCriterion("Type not like", value, "type"); + return (Criteria) this; + } + + public Criteria andTypeIn(List values) { + addCriterion("Type in", values, "type"); + return (Criteria) this; + } + + public Criteria andTypeNotIn(List values) { + addCriterion("Type not in", values, "type"); + return (Criteria) this; + } + + public Criteria andTypeBetween(String value1, String value2) { + addCriterion("Type between", value1, value2, "type"); + return (Criteria) this; + } + + public Criteria andTypeNotBetween(String value1, String value2) { + addCriterion("Type not between", value1, value2, "type"); + return (Criteria) this; + } + + public Criteria andIconIsNull() { + addCriterion("Icon is null"); + return (Criteria) this; + } + + public Criteria andIconIsNotNull() { + addCriterion("Icon is not null"); + return (Criteria) this; + } + + public Criteria andIconEqualTo(String value) { + addCriterion("Icon =", value, "icon"); + return (Criteria) this; + } + + public Criteria andIconNotEqualTo(String value) { + addCriterion("Icon <>", value, "icon"); + return (Criteria) this; + } + + public Criteria andIconGreaterThan(String value) { + addCriterion("Icon >", value, "icon"); + return (Criteria) this; + } + + public Criteria andIconGreaterThanOrEqualTo(String value) { + addCriterion("Icon >=", value, "icon"); + return (Criteria) this; + } + + public Criteria andIconLessThan(String value) { + addCriterion("Icon <", value, "icon"); + return (Criteria) this; + } + + public Criteria andIconLessThanOrEqualTo(String value) { + addCriterion("Icon <=", value, "icon"); + return (Criteria) this; + } + + public Criteria andIconLike(String value) { + addCriterion("Icon like", value, "icon"); + return (Criteria) this; + } + + public Criteria andIconNotLike(String value) { + addCriterion("Icon not like", value, "icon"); + return (Criteria) this; + } + + public Criteria andIconIn(List values) { + addCriterion("Icon in", values, "icon"); + return (Criteria) this; + } + + public Criteria andIconNotIn(List values) { + addCriterion("Icon not in", values, "icon"); + return (Criteria) this; + } + + public Criteria andIconBetween(String value1, String value2) { + addCriterion("Icon between", value1, value2, "icon"); + return (Criteria) this; + } + + public Criteria andIconNotBetween(String value1, String value2) { + addCriterion("Icon not between", value1, value2, "icon"); + return (Criteria) this; + } + + public Criteria andUrlIsNull() { + addCriterion("URL is null"); + return (Criteria) this; + } + + public Criteria andUrlIsNotNull() { + addCriterion("URL is not null"); + return (Criteria) this; + } + + public Criteria andUrlEqualTo(String value) { + addCriterion("URL =", value, "url"); + return (Criteria) this; + } + + public Criteria andUrlNotEqualTo(String value) { + addCriterion("URL <>", value, "url"); + return (Criteria) this; + } + + public Criteria andUrlGreaterThan(String value) { + addCriterion("URL >", value, "url"); + return (Criteria) this; + } + + public Criteria andUrlGreaterThanOrEqualTo(String value) { + addCriterion("URL >=", value, "url"); + return (Criteria) this; + } + + public Criteria andUrlLessThan(String value) { + addCriterion("URL <", value, "url"); + return (Criteria) this; + } + + public Criteria andUrlLessThanOrEqualTo(String value) { + addCriterion("URL <=", value, "url"); + return (Criteria) this; + } + + public Criteria andUrlLike(String value) { + addCriterion("URL like", value, "url"); + return (Criteria) this; + } + + public Criteria andUrlNotLike(String value) { + addCriterion("URL not like", value, "url"); + return (Criteria) this; + } + + public Criteria andUrlIn(List values) { + addCriterion("URL in", values, "url"); + return (Criteria) this; + } + + public Criteria andUrlNotIn(List values) { + addCriterion("URL not in", values, "url"); + return (Criteria) this; + } + + public Criteria andUrlBetween(String value1, String value2) { + addCriterion("URL between", value1, value2, "url"); + return (Criteria) this; + } + + public Criteria andUrlNotBetween(String value1, String value2) { + addCriterion("URL not between", value1, value2, "url"); + return (Criteria) this; + } + + public Criteria andWidthIsNull() { + addCriterion("Width is null"); + return (Criteria) this; + } + + public Criteria andWidthIsNotNull() { + addCriterion("Width is not null"); + return (Criteria) this; + } + + public Criteria andWidthEqualTo(String value) { + addCriterion("Width =", value, "width"); + return (Criteria) this; + } + + public Criteria andWidthNotEqualTo(String value) { + addCriterion("Width <>", value, "width"); + return (Criteria) this; + } + + public Criteria andWidthGreaterThan(String value) { + addCriterion("Width >", value, "width"); + return (Criteria) this; + } + + public Criteria andWidthGreaterThanOrEqualTo(String value) { + addCriterion("Width >=", value, "width"); + return (Criteria) this; + } + + public Criteria andWidthLessThan(String value) { + addCriterion("Width <", value, "width"); + return (Criteria) this; + } + + public Criteria andWidthLessThanOrEqualTo(String value) { + addCriterion("Width <=", value, "width"); + return (Criteria) this; + } + + public Criteria andWidthLike(String value) { + addCriterion("Width like", value, "width"); + return (Criteria) this; + } + + public Criteria andWidthNotLike(String value) { + addCriterion("Width not like", value, "width"); + return (Criteria) this; + } + + public Criteria andWidthIn(List values) { + addCriterion("Width in", values, "width"); + return (Criteria) this; + } + + public Criteria andWidthNotIn(List values) { + addCriterion("Width not in", values, "width"); + return (Criteria) this; + } + + public Criteria andWidthBetween(String value1, String value2) { + addCriterion("Width between", value1, value2, "width"); + return (Criteria) this; + } + + public Criteria andWidthNotBetween(String value1, String value2) { + addCriterion("Width not between", value1, value2, "width"); + return (Criteria) this; + } + + public Criteria andHeightIsNull() { + addCriterion("Height is null"); + return (Criteria) this; + } + + public Criteria andHeightIsNotNull() { + addCriterion("Height is not null"); + return (Criteria) this; + } + + public Criteria andHeightEqualTo(String value) { + addCriterion("Height =", value, "height"); + return (Criteria) this; + } + + public Criteria andHeightNotEqualTo(String value) { + addCriterion("Height <>", value, "height"); + return (Criteria) this; + } + + public Criteria andHeightGreaterThan(String value) { + addCriterion("Height >", value, "height"); + return (Criteria) this; + } + + public Criteria andHeightGreaterThanOrEqualTo(String value) { + addCriterion("Height >=", value, "height"); + return (Criteria) this; + } + + public Criteria andHeightLessThan(String value) { + addCriterion("Height <", value, "height"); + return (Criteria) this; + } + + public Criteria andHeightLessThanOrEqualTo(String value) { + addCriterion("Height <=", value, "height"); + return (Criteria) this; + } + + public Criteria andHeightLike(String value) { + addCriterion("Height like", value, "height"); + return (Criteria) this; + } + + public Criteria andHeightNotLike(String value) { + addCriterion("Height not like", value, "height"); + return (Criteria) this; + } + + public Criteria andHeightIn(List values) { + addCriterion("Height in", values, "height"); + return (Criteria) this; + } + + public Criteria andHeightNotIn(List values) { + addCriterion("Height not in", values, "height"); + return (Criteria) this; + } + + public Criteria andHeightBetween(String value1, String value2) { + addCriterion("Height between", value1, value2, "height"); + return (Criteria) this; + } + + public Criteria andHeightNotBetween(String value1, String value2) { + addCriterion("Height not between", value1, value2, "height"); + return (Criteria) this; + } + + public Criteria andResizeIsNull() { + addCriterion("ReSize is null"); + return (Criteria) this; + } + + public Criteria andResizeIsNotNull() { + addCriterion("ReSize is not null"); + return (Criteria) this; + } + + public Criteria andResizeEqualTo(Boolean value) { + addCriterion("ReSize =", value, "resize"); + return (Criteria) this; + } + + public Criteria andResizeNotEqualTo(Boolean value) { + addCriterion("ReSize <>", value, "resize"); + return (Criteria) this; + } + + public Criteria andResizeGreaterThan(Boolean value) { + addCriterion("ReSize >", value, "resize"); + return (Criteria) this; + } + + public Criteria andResizeGreaterThanOrEqualTo(Boolean value) { + addCriterion("ReSize >=", value, "resize"); + return (Criteria) this; + } + + public Criteria andResizeLessThan(Boolean value) { + addCriterion("ReSize <", value, "resize"); + return (Criteria) this; + } + + public Criteria andResizeLessThanOrEqualTo(Boolean value) { + addCriterion("ReSize <=", value, "resize"); + return (Criteria) this; + } + + public Criteria andResizeIn(List values) { + addCriterion("ReSize in", values, "resize"); + return (Criteria) this; + } + + public Criteria andResizeNotIn(List values) { + addCriterion("ReSize not in", values, "resize"); + return (Criteria) this; + } + + public Criteria andResizeBetween(Boolean value1, Boolean value2) { + addCriterion("ReSize between", value1, value2, "resize"); + return (Criteria) this; + } + + public Criteria andResizeNotBetween(Boolean value1, Boolean value2) { + addCriterion("ReSize not between", value1, value2, "resize"); + return (Criteria) this; + } + + public Criteria andOpenmaxIsNull() { + addCriterion("OpenMax is null"); + return (Criteria) this; + } + + public Criteria andOpenmaxIsNotNull() { + addCriterion("OpenMax is not null"); + return (Criteria) this; + } + + public Criteria andOpenmaxEqualTo(Boolean value) { + addCriterion("OpenMax =", value, "openmax"); + return (Criteria) this; + } + + public Criteria andOpenmaxNotEqualTo(Boolean value) { + addCriterion("OpenMax <>", value, "openmax"); + return (Criteria) this; + } + + public Criteria andOpenmaxGreaterThan(Boolean value) { + addCriterion("OpenMax >", value, "openmax"); + return (Criteria) this; + } + + public Criteria andOpenmaxGreaterThanOrEqualTo(Boolean value) { + addCriterion("OpenMax >=", value, "openmax"); + return (Criteria) this; + } + + public Criteria andOpenmaxLessThan(Boolean value) { + addCriterion("OpenMax <", value, "openmax"); + return (Criteria) this; + } + + public Criteria andOpenmaxLessThanOrEqualTo(Boolean value) { + addCriterion("OpenMax <=", value, "openmax"); + return (Criteria) this; + } + + public Criteria andOpenmaxIn(List values) { + addCriterion("OpenMax in", values, "openmax"); + return (Criteria) this; + } + + public Criteria andOpenmaxNotIn(List values) { + addCriterion("OpenMax not in", values, "openmax"); + return (Criteria) this; + } + + public Criteria andOpenmaxBetween(Boolean value1, Boolean value2) { + addCriterion("OpenMax between", value1, value2, "openmax"); + return (Criteria) this; + } + + public Criteria andOpenmaxNotBetween(Boolean value1, Boolean value2) { + addCriterion("OpenMax not between", value1, value2, "openmax"); + return (Criteria) this; + } + + public Criteria andFlashIsNull() { + addCriterion("Flash is null"); + return (Criteria) this; + } + + public Criteria andFlashIsNotNull() { + addCriterion("Flash is not null"); + return (Criteria) this; + } + + public Criteria andFlashEqualTo(Boolean value) { + addCriterion("Flash =", value, "flash"); + return (Criteria) this; + } + + public Criteria andFlashNotEqualTo(Boolean value) { + addCriterion("Flash <>", value, "flash"); + return (Criteria) this; + } + + public Criteria andFlashGreaterThan(Boolean value) { + addCriterion("Flash >", value, "flash"); + return (Criteria) this; + } + + public Criteria andFlashGreaterThanOrEqualTo(Boolean value) { + addCriterion("Flash >=", value, "flash"); + return (Criteria) this; + } + + public Criteria andFlashLessThan(Boolean value) { + addCriterion("Flash <", value, "flash"); + return (Criteria) this; + } + + public Criteria andFlashLessThanOrEqualTo(Boolean value) { + addCriterion("Flash <=", value, "flash"); + return (Criteria) this; + } + + public Criteria andFlashIn(List values) { + addCriterion("Flash in", values, "flash"); + return (Criteria) this; + } + + public Criteria andFlashNotIn(List values) { + addCriterion("Flash not in", values, "flash"); + return (Criteria) this; + } + + public Criteria andFlashBetween(Boolean value1, Boolean value2) { + addCriterion("Flash between", value1, value2, "flash"); + return (Criteria) this; + } + + public Criteria andFlashNotBetween(Boolean value1, Boolean value2) { + addCriterion("Flash not between", value1, value2, "flash"); + return (Criteria) this; + } + + public Criteria andZlIsNull() { + addCriterion("ZL is null"); + return (Criteria) this; + } + + public Criteria andZlIsNotNull() { + addCriterion("ZL is not null"); + return (Criteria) this; + } + + public Criteria andZlEqualTo(String value) { + addCriterion("ZL =", value, "zl"); + return (Criteria) this; + } + + public Criteria andZlNotEqualTo(String value) { + addCriterion("ZL <>", value, "zl"); + return (Criteria) this; + } + + public Criteria andZlGreaterThan(String value) { + addCriterion("ZL >", value, "zl"); + return (Criteria) this; + } + + public Criteria andZlGreaterThanOrEqualTo(String value) { + addCriterion("ZL >=", value, "zl"); + return (Criteria) this; + } + + public Criteria andZlLessThan(String value) { + addCriterion("ZL <", value, "zl"); + return (Criteria) this; + } + + public Criteria andZlLessThanOrEqualTo(String value) { + addCriterion("ZL <=", value, "zl"); + return (Criteria) this; + } + + public Criteria andZlLike(String value) { + addCriterion("ZL like", value, "zl"); + return (Criteria) this; + } + + public Criteria andZlNotLike(String value) { + addCriterion("ZL not like", value, "zl"); + return (Criteria) this; + } + + public Criteria andZlIn(List values) { + addCriterion("ZL in", values, "zl"); + return (Criteria) this; + } + + public Criteria andZlNotIn(List values) { + addCriterion("ZL not in", values, "zl"); + return (Criteria) this; + } + + public Criteria andZlBetween(String value1, String value2) { + addCriterion("ZL between", value1, value2, "zl"); + return (Criteria) this; + } + + public Criteria andZlNotBetween(String value1, String value2) { + addCriterion("ZL not between", value1, value2, "zl"); + return (Criteria) this; + } + + public Criteria andSortIsNull() { + addCriterion("Sort is null"); + return (Criteria) this; + } + + public Criteria andSortIsNotNull() { + addCriterion("Sort is not null"); + return (Criteria) this; + } + + public Criteria andSortEqualTo(String value) { + addCriterion("Sort =", value, "sort"); + return (Criteria) this; + } + + public Criteria andSortNotEqualTo(String value) { + addCriterion("Sort <>", value, "sort"); + return (Criteria) this; + } + + public Criteria andSortGreaterThan(String value) { + addCriterion("Sort >", value, "sort"); + return (Criteria) this; + } + + public Criteria andSortGreaterThanOrEqualTo(String value) { + addCriterion("Sort >=", value, "sort"); + return (Criteria) this; + } + + public Criteria andSortLessThan(String value) { + addCriterion("Sort <", value, "sort"); + return (Criteria) this; + } + + public Criteria andSortLessThanOrEqualTo(String value) { + addCriterion("Sort <=", value, "sort"); + return (Criteria) this; + } + + public Criteria andSortLike(String value) { + addCriterion("Sort like", value, "sort"); + return (Criteria) this; + } + + public Criteria andSortNotLike(String value) { + addCriterion("Sort not like", value, "sort"); + return (Criteria) this; + } + + public Criteria andSortIn(List values) { + addCriterion("Sort in", values, "sort"); + return (Criteria) this; + } + + public Criteria andSortNotIn(List values) { + addCriterion("Sort not in", values, "sort"); + return (Criteria) this; + } + + public Criteria andSortBetween(String value1, String value2) { + addCriterion("Sort between", value1, value2, "sort"); + return (Criteria) this; + } + + public Criteria andSortNotBetween(String value1, String value2) { + addCriterion("Sort not between", value1, value2, "sort"); + return (Criteria) this; + } + + public Criteria andRemarkIsNull() { + addCriterion("Remark is null"); + return (Criteria) this; + } + + public Criteria andRemarkIsNotNull() { + addCriterion("Remark is not null"); + return (Criteria) this; + } + + public Criteria andRemarkEqualTo(String value) { + addCriterion("Remark =", value, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkNotEqualTo(String value) { + addCriterion("Remark <>", value, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkGreaterThan(String value) { + addCriterion("Remark >", value, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkGreaterThanOrEqualTo(String value) { + addCriterion("Remark >=", value, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkLessThan(String value) { + addCriterion("Remark <", value, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkLessThanOrEqualTo(String value) { + addCriterion("Remark <=", value, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkLike(String value) { + addCriterion("Remark like", value, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkNotLike(String value) { + addCriterion("Remark not like", value, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkIn(List values) { + addCriterion("Remark in", values, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkNotIn(List values) { + addCriterion("Remark not in", values, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkBetween(String value1, String value2) { + addCriterion("Remark between", value1, value2, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkNotBetween(String value1, String value2) { + addCriterion("Remark not between", value1, value2, "remark"); + return (Criteria) this; + } + + public Criteria andEnabledIsNull() { + addCriterion("Enabled is null"); + return (Criteria) this; + } + + public Criteria andEnabledIsNotNull() { + addCriterion("Enabled is not null"); + return (Criteria) this; + } + + public Criteria andEnabledEqualTo(Boolean value) { + addCriterion("Enabled =", value, "enabled"); + return (Criteria) this; + } + + public Criteria andEnabledNotEqualTo(Boolean value) { + addCriterion("Enabled <>", value, "enabled"); + return (Criteria) this; + } + + public Criteria andEnabledGreaterThan(Boolean value) { + addCriterion("Enabled >", value, "enabled"); + return (Criteria) this; + } + + public Criteria andEnabledGreaterThanOrEqualTo(Boolean value) { + addCriterion("Enabled >=", value, "enabled"); + return (Criteria) this; + } + + public Criteria andEnabledLessThan(Boolean value) { + addCriterion("Enabled <", value, "enabled"); + return (Criteria) this; + } + + public Criteria andEnabledLessThanOrEqualTo(Boolean value) { + addCriterion("Enabled <=", value, "enabled"); + return (Criteria) this; + } + + public Criteria andEnabledIn(List values) { + addCriterion("Enabled in", values, "enabled"); + return (Criteria) this; + } + + public Criteria andEnabledNotIn(List values) { + addCriterion("Enabled not in", values, "enabled"); + return (Criteria) this; + } + + public Criteria andEnabledBetween(Boolean value1, Boolean value2) { + addCriterion("Enabled between", value1, value2, "enabled"); + return (Criteria) this; + } + + public Criteria andEnabledNotBetween(Boolean value1, Boolean value2) { + addCriterion("Enabled not between", value1, value2, "enabled"); + return (Criteria) this; + } + } + + /** + * This class was generated by MyBatis Generator. + * This class corresponds to the database table jsh_app + * + * @mbggenerated do_not_delete_during_merge + */ + public static class Criteria extends GeneratedCriteria { + + protected Criteria() { + super(); + } + } + + /** + * This class was generated by MyBatis Generator. + * This class corresponds to the database table jsh_app + * + * @mbggenerated + */ + public static class Criterion { + private String condition; + + private Object value; + + private Object secondValue; + + private boolean noValue; + + private boolean singleValue; + + private boolean betweenValue; + + private boolean listValue; + + private String typeHandler; + + public String getCondition() { + return condition; + } + + public Object getValue() { + return value; + } + + public Object getSecondValue() { + return secondValue; + } + + public boolean isNoValue() { + return noValue; + } + + public boolean isSingleValue() { + return singleValue; + } + + public boolean isBetweenValue() { + return betweenValue; + } + + public boolean isListValue() { + return listValue; + } + + public String getTypeHandler() { + return typeHandler; + } + + protected Criterion(String condition) { + super(); + this.condition = condition; + this.typeHandler = null; + this.noValue = true; + } + + protected Criterion(String condition, Object value, String typeHandler) { + super(); + this.condition = condition; + this.value = value; + this.typeHandler = typeHandler; + if (value instanceof List) { + this.listValue = true; + } else { + this.singleValue = true; + } + } + + protected Criterion(String condition, Object value) { + this(condition, value, null); + } + + protected Criterion(String condition, Object value, Object secondValue, String typeHandler) { + super(); + this.condition = condition; + this.value = value; + this.secondValue = secondValue; + this.typeHandler = typeHandler; + this.betweenValue = true; + } + + protected Criterion(String condition, Object value, Object secondValue) { + this(condition, value, secondValue, null); + } + } +} \ No newline at end of file diff --git a/src/main/java/com/jsh/erp/datasource/entities/Asset.java b/src/main/java/com/jsh/erp/datasource/entities/Asset.java new file mode 100644 index 00000000..93281107 --- /dev/null +++ b/src/main/java/com/jsh/erp/datasource/entities/Asset.java @@ -0,0 +1,613 @@ +package com.jsh.erp.datasource.entities; + +import java.util.Date; + +public class Asset { + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database column jsh_asset.id + * + * @mbggenerated + */ + private Long id; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database column jsh_asset.assetnameID + * + * @mbggenerated + */ + private Long assetnameid; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database column jsh_asset.location + * + * @mbggenerated + */ + private String location; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database column jsh_asset.labels + * + * @mbggenerated + */ + private String labels; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database column jsh_asset.status + * + * @mbggenerated + */ + private Short status; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database column jsh_asset.userID + * + * @mbggenerated + */ + private Long userid; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database column jsh_asset.price + * + * @mbggenerated + */ + private Double price; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database column jsh_asset.purchasedate + * + * @mbggenerated + */ + private Date purchasedate; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database column jsh_asset.periodofvalidity + * + * @mbggenerated + */ + private Date periodofvalidity; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database column jsh_asset.warrantydate + * + * @mbggenerated + */ + private Date warrantydate; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database column jsh_asset.assetnum + * + * @mbggenerated + */ + private String assetnum; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database column jsh_asset.serialnum + * + * @mbggenerated + */ + private String serialnum; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database column jsh_asset.supplier + * + * @mbggenerated + */ + private Long supplier; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database column jsh_asset.createtime + * + * @mbggenerated + */ + private Date createtime; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database column jsh_asset.creator + * + * @mbggenerated + */ + private Long creator; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database column jsh_asset.updatetime + * + * @mbggenerated + */ + private Date updatetime; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database column jsh_asset.updator + * + * @mbggenerated + */ + private Long updator; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database column jsh_asset.description + * + * @mbggenerated + */ + private String description; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database column jsh_asset.addMonth + * + * @mbggenerated + */ + private String addmonth; + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column jsh_asset.id + * + * @return the value of jsh_asset.id + * + * @mbggenerated + */ + public Long getId() { + return id; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column jsh_asset.id + * + * @param id the value for jsh_asset.id + * + * @mbggenerated + */ + public void setId(Long id) { + this.id = id; + } + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column jsh_asset.assetnameID + * + * @return the value of jsh_asset.assetnameID + * + * @mbggenerated + */ + public Long getAssetnameid() { + return assetnameid; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column jsh_asset.assetnameID + * + * @param assetnameid the value for jsh_asset.assetnameID + * + * @mbggenerated + */ + public void setAssetnameid(Long assetnameid) { + this.assetnameid = assetnameid; + } + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column jsh_asset.location + * + * @return the value of jsh_asset.location + * + * @mbggenerated + */ + public String getLocation() { + return location; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column jsh_asset.location + * + * @param location the value for jsh_asset.location + * + * @mbggenerated + */ + public void setLocation(String location) { + this.location = location == null ? null : location.trim(); + } + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column jsh_asset.labels + * + * @return the value of jsh_asset.labels + * + * @mbggenerated + */ + public String getLabels() { + return labels; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column jsh_asset.labels + * + * @param labels the value for jsh_asset.labels + * + * @mbggenerated + */ + public void setLabels(String labels) { + this.labels = labels == null ? null : labels.trim(); + } + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column jsh_asset.status + * + * @return the value of jsh_asset.status + * + * @mbggenerated + */ + public Short getStatus() { + return status; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column jsh_asset.status + * + * @param status the value for jsh_asset.status + * + * @mbggenerated + */ + public void setStatus(Short status) { + this.status = status; + } + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column jsh_asset.userID + * + * @return the value of jsh_asset.userID + * + * @mbggenerated + */ + public Long getUserid() { + return userid; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column jsh_asset.userID + * + * @param userid the value for jsh_asset.userID + * + * @mbggenerated + */ + public void setUserid(Long userid) { + this.userid = userid; + } + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column jsh_asset.price + * + * @return the value of jsh_asset.price + * + * @mbggenerated + */ + public Double getPrice() { + return price; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column jsh_asset.price + * + * @param price the value for jsh_asset.price + * + * @mbggenerated + */ + public void setPrice(Double price) { + this.price = price; + } + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column jsh_asset.purchasedate + * + * @return the value of jsh_asset.purchasedate + * + * @mbggenerated + */ + public Date getPurchasedate() { + return purchasedate; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column jsh_asset.purchasedate + * + * @param purchasedate the value for jsh_asset.purchasedate + * + * @mbggenerated + */ + public void setPurchasedate(Date purchasedate) { + this.purchasedate = purchasedate; + } + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column jsh_asset.periodofvalidity + * + * @return the value of jsh_asset.periodofvalidity + * + * @mbggenerated + */ + public Date getPeriodofvalidity() { + return periodofvalidity; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column jsh_asset.periodofvalidity + * + * @param periodofvalidity the value for jsh_asset.periodofvalidity + * + * @mbggenerated + */ + public void setPeriodofvalidity(Date periodofvalidity) { + this.periodofvalidity = periodofvalidity; + } + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column jsh_asset.warrantydate + * + * @return the value of jsh_asset.warrantydate + * + * @mbggenerated + */ + public Date getWarrantydate() { + return warrantydate; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column jsh_asset.warrantydate + * + * @param warrantydate the value for jsh_asset.warrantydate + * + * @mbggenerated + */ + public void setWarrantydate(Date warrantydate) { + this.warrantydate = warrantydate; + } + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column jsh_asset.assetnum + * + * @return the value of jsh_asset.assetnum + * + * @mbggenerated + */ + public String getAssetnum() { + return assetnum; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column jsh_asset.assetnum + * + * @param assetnum the value for jsh_asset.assetnum + * + * @mbggenerated + */ + public void setAssetnum(String assetnum) { + this.assetnum = assetnum == null ? null : assetnum.trim(); + } + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column jsh_asset.serialnum + * + * @return the value of jsh_asset.serialnum + * + * @mbggenerated + */ + public String getSerialnum() { + return serialnum; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column jsh_asset.serialnum + * + * @param serialnum the value for jsh_asset.serialnum + * + * @mbggenerated + */ + public void setSerialnum(String serialnum) { + this.serialnum = serialnum == null ? null : serialnum.trim(); + } + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column jsh_asset.supplier + * + * @return the value of jsh_asset.supplier + * + * @mbggenerated + */ + public Long getSupplier() { + return supplier; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column jsh_asset.supplier + * + * @param supplier the value for jsh_asset.supplier + * + * @mbggenerated + */ + public void setSupplier(Long supplier) { + this.supplier = supplier; + } + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column jsh_asset.createtime + * + * @return the value of jsh_asset.createtime + * + * @mbggenerated + */ + public Date getCreatetime() { + return createtime; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column jsh_asset.createtime + * + * @param createtime the value for jsh_asset.createtime + * + * @mbggenerated + */ + public void setCreatetime(Date createtime) { + this.createtime = createtime; + } + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column jsh_asset.creator + * + * @return the value of jsh_asset.creator + * + * @mbggenerated + */ + public Long getCreator() { + return creator; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column jsh_asset.creator + * + * @param creator the value for jsh_asset.creator + * + * @mbggenerated + */ + public void setCreator(Long creator) { + this.creator = creator; + } + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column jsh_asset.updatetime + * + * @return the value of jsh_asset.updatetime + * + * @mbggenerated + */ + public Date getUpdatetime() { + return updatetime; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column jsh_asset.updatetime + * + * @param updatetime the value for jsh_asset.updatetime + * + * @mbggenerated + */ + public void setUpdatetime(Date updatetime) { + this.updatetime = updatetime; + } + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column jsh_asset.updator + * + * @return the value of jsh_asset.updator + * + * @mbggenerated + */ + public Long getUpdator() { + return updator; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column jsh_asset.updator + * + * @param updator the value for jsh_asset.updator + * + * @mbggenerated + */ + public void setUpdator(Long updator) { + this.updator = updator; + } + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column jsh_asset.description + * + * @return the value of jsh_asset.description + * + * @mbggenerated + */ + public String getDescription() { + return description; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column jsh_asset.description + * + * @param description the value for jsh_asset.description + * + * @mbggenerated + */ + public void setDescription(String description) { + this.description = description == null ? null : description.trim(); + } + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column jsh_asset.addMonth + * + * @return the value of jsh_asset.addMonth + * + * @mbggenerated + */ + public String getAddmonth() { + return addmonth; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column jsh_asset.addMonth + * + * @param addmonth the value for jsh_asset.addMonth + * + * @mbggenerated + */ + public void setAddmonth(String addmonth) { + this.addmonth = addmonth == null ? null : addmonth.trim(); + } +} \ No newline at end of file diff --git a/src/main/java/com/jsh/erp/datasource/entities/AssetCategory.java b/src/main/java/com/jsh/erp/datasource/entities/AssetCategory.java new file mode 100644 index 00000000..0bf7f829 --- /dev/null +++ b/src/main/java/com/jsh/erp/datasource/entities/AssetCategory.java @@ -0,0 +1,131 @@ +package com.jsh.erp.datasource.entities; + +public class AssetCategory { + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database column jsh_assetcategory.id + * + * @mbggenerated + */ + private Long id; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database column jsh_assetcategory.assetname + * + * @mbggenerated + */ + private String assetname; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database column jsh_assetcategory.isystem + * + * @mbggenerated + */ + private Byte isystem; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database column jsh_assetcategory.description + * + * @mbggenerated + */ + private String description; + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column jsh_assetcategory.id + * + * @return the value of jsh_assetcategory.id + * + * @mbggenerated + */ + public Long getId() { + return id; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column jsh_assetcategory.id + * + * @param id the value for jsh_assetcategory.id + * + * @mbggenerated + */ + public void setId(Long id) { + this.id = id; + } + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column jsh_assetcategory.assetname + * + * @return the value of jsh_assetcategory.assetname + * + * @mbggenerated + */ + public String getAssetname() { + return assetname; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column jsh_assetcategory.assetname + * + * @param assetname the value for jsh_assetcategory.assetname + * + * @mbggenerated + */ + public void setAssetname(String assetname) { + this.assetname = assetname == null ? null : assetname.trim(); + } + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column jsh_assetcategory.isystem + * + * @return the value of jsh_assetcategory.isystem + * + * @mbggenerated + */ + public Byte getIsystem() { + return isystem; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column jsh_assetcategory.isystem + * + * @param isystem the value for jsh_assetcategory.isystem + * + * @mbggenerated + */ + public void setIsystem(Byte isystem) { + this.isystem = isystem; + } + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column jsh_assetcategory.description + * + * @return the value of jsh_assetcategory.description + * + * @mbggenerated + */ + public String getDescription() { + return description; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column jsh_assetcategory.description + * + * @param description the value for jsh_assetcategory.description + * + * @mbggenerated + */ + public void setDescription(String description) { + this.description = description == null ? null : description.trim(); + } +} \ No newline at end of file diff --git a/src/main/java/com/jsh/erp/datasource/entities/AssetCategoryExample.java b/src/main/java/com/jsh/erp/datasource/entities/AssetCategoryExample.java new file mode 100644 index 00000000..9f70fc5a --- /dev/null +++ b/src/main/java/com/jsh/erp/datasource/entities/AssetCategoryExample.java @@ -0,0 +1,562 @@ +package com.jsh.erp.datasource.entities; + +import java.util.ArrayList; +import java.util.List; + +public class AssetCategoryExample { + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database table jsh_assetcategory + * + * @mbggenerated + */ + protected String orderByClause; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database table jsh_assetcategory + * + * @mbggenerated + */ + protected boolean distinct; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database table jsh_assetcategory + * + * @mbggenerated + */ + protected List oredCriteria; + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_assetcategory + * + * @mbggenerated + */ + public AssetCategoryExample() { + oredCriteria = new ArrayList(); + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_assetcategory + * + * @mbggenerated + */ + public void setOrderByClause(String orderByClause) { + this.orderByClause = orderByClause; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_assetcategory + * + * @mbggenerated + */ + public String getOrderByClause() { + return orderByClause; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_assetcategory + * + * @mbggenerated + */ + public void setDistinct(boolean distinct) { + this.distinct = distinct; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_assetcategory + * + * @mbggenerated + */ + public boolean isDistinct() { + return distinct; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_assetcategory + * + * @mbggenerated + */ + public List getOredCriteria() { + return oredCriteria; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_assetcategory + * + * @mbggenerated + */ + public void or(Criteria criteria) { + oredCriteria.add(criteria); + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_assetcategory + * + * @mbggenerated + */ + public Criteria or() { + Criteria criteria = createCriteriaInternal(); + oredCriteria.add(criteria); + return criteria; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_assetcategory + * + * @mbggenerated + */ + public Criteria createCriteria() { + Criteria criteria = createCriteriaInternal(); + if (oredCriteria.size() == 0) { + oredCriteria.add(criteria); + } + return criteria; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_assetcategory + * + * @mbggenerated + */ + protected Criteria createCriteriaInternal() { + Criteria criteria = new Criteria(); + return criteria; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_assetcategory + * + * @mbggenerated + */ + public void clear() { + oredCriteria.clear(); + orderByClause = null; + distinct = false; + } + + /** + * This class was generated by MyBatis Generator. + * This class corresponds to the database table jsh_assetcategory + * + * @mbggenerated + */ + protected abstract static class GeneratedCriteria { + protected List criteria; + + protected GeneratedCriteria() { + super(); + criteria = new ArrayList(); + } + + public boolean isValid() { + return criteria.size() > 0; + } + + public List getAllCriteria() { + return criteria; + } + + public List getCriteria() { + return criteria; + } + + protected void addCriterion(String condition) { + if (condition == null) { + throw new RuntimeException("Value for condition cannot be null"); + } + criteria.add(new Criterion(condition)); + } + + protected void addCriterion(String condition, Object value, String property) { + if (value == null) { + throw new RuntimeException("Value for " + property + " cannot be null"); + } + criteria.add(new Criterion(condition, value)); + } + + protected void addCriterion(String condition, Object value1, Object value2, String property) { + if (value1 == null || value2 == null) { + throw new RuntimeException("Between values for " + property + " cannot be null"); + } + criteria.add(new Criterion(condition, value1, value2)); + } + + public Criteria andIdIsNull() { + addCriterion("id is null"); + return (Criteria) this; + } + + public Criteria andIdIsNotNull() { + addCriterion("id is not null"); + return (Criteria) this; + } + + public Criteria andIdEqualTo(Long value) { + addCriterion("id =", value, "id"); + return (Criteria) this; + } + + public Criteria andIdNotEqualTo(Long value) { + addCriterion("id <>", value, "id"); + return (Criteria) this; + } + + public Criteria andIdGreaterThan(Long value) { + addCriterion("id >", value, "id"); + return (Criteria) this; + } + + public Criteria andIdGreaterThanOrEqualTo(Long value) { + addCriterion("id >=", value, "id"); + return (Criteria) this; + } + + public Criteria andIdLessThan(Long value) { + addCriterion("id <", value, "id"); + return (Criteria) this; + } + + public Criteria andIdLessThanOrEqualTo(Long value) { + addCriterion("id <=", value, "id"); + return (Criteria) this; + } + + public Criteria andIdIn(List values) { + addCriterion("id in", values, "id"); + return (Criteria) this; + } + + public Criteria andIdNotIn(List values) { + addCriterion("id not in", values, "id"); + return (Criteria) this; + } + + public Criteria andIdBetween(Long value1, Long value2) { + addCriterion("id between", value1, value2, "id"); + return (Criteria) this; + } + + public Criteria andIdNotBetween(Long value1, Long value2) { + addCriterion("id not between", value1, value2, "id"); + return (Criteria) this; + } + + public Criteria andAssetnameIsNull() { + addCriterion("assetname is null"); + return (Criteria) this; + } + + public Criteria andAssetnameIsNotNull() { + addCriterion("assetname is not null"); + return (Criteria) this; + } + + public Criteria andAssetnameEqualTo(String value) { + addCriterion("assetname =", value, "assetname"); + return (Criteria) this; + } + + public Criteria andAssetnameNotEqualTo(String value) { + addCriterion("assetname <>", value, "assetname"); + return (Criteria) this; + } + + public Criteria andAssetnameGreaterThan(String value) { + addCriterion("assetname >", value, "assetname"); + return (Criteria) this; + } + + public Criteria andAssetnameGreaterThanOrEqualTo(String value) { + addCriterion("assetname >=", value, "assetname"); + return (Criteria) this; + } + + public Criteria andAssetnameLessThan(String value) { + addCriterion("assetname <", value, "assetname"); + return (Criteria) this; + } + + public Criteria andAssetnameLessThanOrEqualTo(String value) { + addCriterion("assetname <=", value, "assetname"); + return (Criteria) this; + } + + public Criteria andAssetnameLike(String value) { + addCriterion("assetname like", value, "assetname"); + return (Criteria) this; + } + + public Criteria andAssetnameNotLike(String value) { + addCriterion("assetname not like", value, "assetname"); + return (Criteria) this; + } + + public Criteria andAssetnameIn(List values) { + addCriterion("assetname in", values, "assetname"); + return (Criteria) this; + } + + public Criteria andAssetnameNotIn(List values) { + addCriterion("assetname not in", values, "assetname"); + return (Criteria) this; + } + + public Criteria andAssetnameBetween(String value1, String value2) { + addCriterion("assetname between", value1, value2, "assetname"); + return (Criteria) this; + } + + public Criteria andAssetnameNotBetween(String value1, String value2) { + addCriterion("assetname not between", value1, value2, "assetname"); + return (Criteria) this; + } + + public Criteria andIsystemIsNull() { + addCriterion("isystem is null"); + return (Criteria) this; + } + + public Criteria andIsystemIsNotNull() { + addCriterion("isystem is not null"); + return (Criteria) this; + } + + public Criteria andIsystemEqualTo(Byte value) { + addCriterion("isystem =", value, "isystem"); + return (Criteria) this; + } + + public Criteria andIsystemNotEqualTo(Byte value) { + addCriterion("isystem <>", value, "isystem"); + return (Criteria) this; + } + + public Criteria andIsystemGreaterThan(Byte value) { + addCriterion("isystem >", value, "isystem"); + return (Criteria) this; + } + + public Criteria andIsystemGreaterThanOrEqualTo(Byte value) { + addCriterion("isystem >=", value, "isystem"); + return (Criteria) this; + } + + public Criteria andIsystemLessThan(Byte value) { + addCriterion("isystem <", value, "isystem"); + return (Criteria) this; + } + + public Criteria andIsystemLessThanOrEqualTo(Byte value) { + addCriterion("isystem <=", value, "isystem"); + return (Criteria) this; + } + + public Criteria andIsystemIn(List values) { + addCriterion("isystem in", values, "isystem"); + return (Criteria) this; + } + + public Criteria andIsystemNotIn(List values) { + addCriterion("isystem not in", values, "isystem"); + return (Criteria) this; + } + + public Criteria andIsystemBetween(Byte value1, Byte value2) { + addCriterion("isystem between", value1, value2, "isystem"); + return (Criteria) this; + } + + public Criteria andIsystemNotBetween(Byte value1, Byte value2) { + addCriterion("isystem not between", value1, value2, "isystem"); + return (Criteria) this; + } + + public Criteria andDescriptionIsNull() { + addCriterion("description is null"); + return (Criteria) this; + } + + public Criteria andDescriptionIsNotNull() { + addCriterion("description is not null"); + return (Criteria) this; + } + + public Criteria andDescriptionEqualTo(String value) { + addCriterion("description =", value, "description"); + return (Criteria) this; + } + + public Criteria andDescriptionNotEqualTo(String value) { + addCriterion("description <>", value, "description"); + return (Criteria) this; + } + + public Criteria andDescriptionGreaterThan(String value) { + addCriterion("description >", value, "description"); + return (Criteria) this; + } + + public Criteria andDescriptionGreaterThanOrEqualTo(String value) { + addCriterion("description >=", value, "description"); + return (Criteria) this; + } + + public Criteria andDescriptionLessThan(String value) { + addCriterion("description <", value, "description"); + return (Criteria) this; + } + + public Criteria andDescriptionLessThanOrEqualTo(String value) { + addCriterion("description <=", value, "description"); + return (Criteria) this; + } + + public Criteria andDescriptionLike(String value) { + addCriterion("description like", value, "description"); + return (Criteria) this; + } + + public Criteria andDescriptionNotLike(String value) { + addCriterion("description not like", value, "description"); + return (Criteria) this; + } + + public Criteria andDescriptionIn(List values) { + addCriterion("description in", values, "description"); + return (Criteria) this; + } + + public Criteria andDescriptionNotIn(List values) { + addCriterion("description not in", values, "description"); + return (Criteria) this; + } + + public Criteria andDescriptionBetween(String value1, String value2) { + addCriterion("description between", value1, value2, "description"); + return (Criteria) this; + } + + public Criteria andDescriptionNotBetween(String value1, String value2) { + addCriterion("description not between", value1, value2, "description"); + return (Criteria) this; + } + } + + /** + * This class was generated by MyBatis Generator. + * This class corresponds to the database table jsh_assetcategory + * + * @mbggenerated do_not_delete_during_merge + */ + public static class Criteria extends GeneratedCriteria { + + protected Criteria() { + super(); + } + } + + /** + * This class was generated by MyBatis Generator. + * This class corresponds to the database table jsh_assetcategory + * + * @mbggenerated + */ + public static class Criterion { + private String condition; + + private Object value; + + private Object secondValue; + + private boolean noValue; + + private boolean singleValue; + + private boolean betweenValue; + + private boolean listValue; + + private String typeHandler; + + public String getCondition() { + return condition; + } + + public Object getValue() { + return value; + } + + public Object getSecondValue() { + return secondValue; + } + + public boolean isNoValue() { + return noValue; + } + + public boolean isSingleValue() { + return singleValue; + } + + public boolean isBetweenValue() { + return betweenValue; + } + + public boolean isListValue() { + return listValue; + } + + public String getTypeHandler() { + return typeHandler; + } + + protected Criterion(String condition) { + super(); + this.condition = condition; + this.typeHandler = null; + this.noValue = true; + } + + protected Criterion(String condition, Object value, String typeHandler) { + super(); + this.condition = condition; + this.value = value; + this.typeHandler = typeHandler; + if (value instanceof List) { + this.listValue = true; + } else { + this.singleValue = true; + } + } + + protected Criterion(String condition, Object value) { + this(condition, value, null); + } + + protected Criterion(String condition, Object value, Object secondValue, String typeHandler) { + super(); + this.condition = condition; + this.value = value; + this.secondValue = secondValue; + this.typeHandler = typeHandler; + this.betweenValue = true; + } + + protected Criterion(String condition, Object value, Object secondValue) { + this(condition, value, secondValue, null); + } + } +} \ No newline at end of file diff --git a/src/main/java/com/jsh/erp/datasource/entities/AssetExample.java b/src/main/java/com/jsh/erp/datasource/entities/AssetExample.java new file mode 100644 index 00000000..f98d5cba --- /dev/null +++ b/src/main/java/com/jsh/erp/datasource/entities/AssetExample.java @@ -0,0 +1,1363 @@ +package com.jsh.erp.datasource.entities; + +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +public class AssetExample { + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database table jsh_asset + * + * @mbggenerated + */ + protected String orderByClause; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database table jsh_asset + * + * @mbggenerated + */ + protected boolean distinct; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database table jsh_asset + * + * @mbggenerated + */ + protected List oredCriteria; + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_asset + * + * @mbggenerated + */ + public AssetExample() { + oredCriteria = new ArrayList(); + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_asset + * + * @mbggenerated + */ + public void setOrderByClause(String orderByClause) { + this.orderByClause = orderByClause; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_asset + * + * @mbggenerated + */ + public String getOrderByClause() { + return orderByClause; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_asset + * + * @mbggenerated + */ + public void setDistinct(boolean distinct) { + this.distinct = distinct; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_asset + * + * @mbggenerated + */ + public boolean isDistinct() { + return distinct; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_asset + * + * @mbggenerated + */ + public List getOredCriteria() { + return oredCriteria; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_asset + * + * @mbggenerated + */ + public void or(Criteria criteria) { + oredCriteria.add(criteria); + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_asset + * + * @mbggenerated + */ + public Criteria or() { + Criteria criteria = createCriteriaInternal(); + oredCriteria.add(criteria); + return criteria; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_asset + * + * @mbggenerated + */ + public Criteria createCriteria() { + Criteria criteria = createCriteriaInternal(); + if (oredCriteria.size() == 0) { + oredCriteria.add(criteria); + } + return criteria; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_asset + * + * @mbggenerated + */ + protected Criteria createCriteriaInternal() { + Criteria criteria = new Criteria(); + return criteria; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_asset + * + * @mbggenerated + */ + public void clear() { + oredCriteria.clear(); + orderByClause = null; + distinct = false; + } + + /** + * This class was generated by MyBatis Generator. + * This class corresponds to the database table jsh_asset + * + * @mbggenerated + */ + protected abstract static class GeneratedCriteria { + protected List criteria; + + protected GeneratedCriteria() { + super(); + criteria = new ArrayList(); + } + + public boolean isValid() { + return criteria.size() > 0; + } + + public List getAllCriteria() { + return criteria; + } + + public List getCriteria() { + return criteria; + } + + protected void addCriterion(String condition) { + if (condition == null) { + throw new RuntimeException("Value for condition cannot be null"); + } + criteria.add(new Criterion(condition)); + } + + protected void addCriterion(String condition, Object value, String property) { + if (value == null) { + throw new RuntimeException("Value for " + property + " cannot be null"); + } + criteria.add(new Criterion(condition, value)); + } + + protected void addCriterion(String condition, Object value1, Object value2, String property) { + if (value1 == null || value2 == null) { + throw new RuntimeException("Between values for " + property + " cannot be null"); + } + criteria.add(new Criterion(condition, value1, value2)); + } + + public Criteria andIdIsNull() { + addCriterion("id is null"); + return (Criteria) this; + } + + public Criteria andIdIsNotNull() { + addCriterion("id is not null"); + return (Criteria) this; + } + + public Criteria andIdEqualTo(Long value) { + addCriterion("id =", value, "id"); + return (Criteria) this; + } + + public Criteria andIdNotEqualTo(Long value) { + addCriterion("id <>", value, "id"); + return (Criteria) this; + } + + public Criteria andIdGreaterThan(Long value) { + addCriterion("id >", value, "id"); + return (Criteria) this; + } + + public Criteria andIdGreaterThanOrEqualTo(Long value) { + addCriterion("id >=", value, "id"); + return (Criteria) this; + } + + public Criteria andIdLessThan(Long value) { + addCriterion("id <", value, "id"); + return (Criteria) this; + } + + public Criteria andIdLessThanOrEqualTo(Long value) { + addCriterion("id <=", value, "id"); + return (Criteria) this; + } + + public Criteria andIdIn(List values) { + addCriterion("id in", values, "id"); + return (Criteria) this; + } + + public Criteria andIdNotIn(List values) { + addCriterion("id not in", values, "id"); + return (Criteria) this; + } + + public Criteria andIdBetween(Long value1, Long value2) { + addCriterion("id between", value1, value2, "id"); + return (Criteria) this; + } + + public Criteria andIdNotBetween(Long value1, Long value2) { + addCriterion("id not between", value1, value2, "id"); + return (Criteria) this; + } + + public Criteria andAssetnameidIsNull() { + addCriterion("assetnameID is null"); + return (Criteria) this; + } + + public Criteria andAssetnameidIsNotNull() { + addCriterion("assetnameID is not null"); + return (Criteria) this; + } + + public Criteria andAssetnameidEqualTo(Long value) { + addCriterion("assetnameID =", value, "assetnameid"); + return (Criteria) this; + } + + public Criteria andAssetnameidNotEqualTo(Long value) { + addCriterion("assetnameID <>", value, "assetnameid"); + return (Criteria) this; + } + + public Criteria andAssetnameidGreaterThan(Long value) { + addCriterion("assetnameID >", value, "assetnameid"); + return (Criteria) this; + } + + public Criteria andAssetnameidGreaterThanOrEqualTo(Long value) { + addCriterion("assetnameID >=", value, "assetnameid"); + return (Criteria) this; + } + + public Criteria andAssetnameidLessThan(Long value) { + addCriterion("assetnameID <", value, "assetnameid"); + return (Criteria) this; + } + + public Criteria andAssetnameidLessThanOrEqualTo(Long value) { + addCriterion("assetnameID <=", value, "assetnameid"); + return (Criteria) this; + } + + public Criteria andAssetnameidIn(List values) { + addCriterion("assetnameID in", values, "assetnameid"); + return (Criteria) this; + } + + public Criteria andAssetnameidNotIn(List values) { + addCriterion("assetnameID not in", values, "assetnameid"); + return (Criteria) this; + } + + public Criteria andAssetnameidBetween(Long value1, Long value2) { + addCriterion("assetnameID between", value1, value2, "assetnameid"); + return (Criteria) this; + } + + public Criteria andAssetnameidNotBetween(Long value1, Long value2) { + addCriterion("assetnameID not between", value1, value2, "assetnameid"); + return (Criteria) this; + } + + public Criteria andLocationIsNull() { + addCriterion("location is null"); + return (Criteria) this; + } + + public Criteria andLocationIsNotNull() { + addCriterion("location is not null"); + return (Criteria) this; + } + + public Criteria andLocationEqualTo(String value) { + addCriterion("location =", value, "location"); + return (Criteria) this; + } + + public Criteria andLocationNotEqualTo(String value) { + addCriterion("location <>", value, "location"); + return (Criteria) this; + } + + public Criteria andLocationGreaterThan(String value) { + addCriterion("location >", value, "location"); + return (Criteria) this; + } + + public Criteria andLocationGreaterThanOrEqualTo(String value) { + addCriterion("location >=", value, "location"); + return (Criteria) this; + } + + public Criteria andLocationLessThan(String value) { + addCriterion("location <", value, "location"); + return (Criteria) this; + } + + public Criteria andLocationLessThanOrEqualTo(String value) { + addCriterion("location <=", value, "location"); + return (Criteria) this; + } + + public Criteria andLocationLike(String value) { + addCriterion("location like", value, "location"); + return (Criteria) this; + } + + public Criteria andLocationNotLike(String value) { + addCriterion("location not like", value, "location"); + return (Criteria) this; + } + + public Criteria andLocationIn(List values) { + addCriterion("location in", values, "location"); + return (Criteria) this; + } + + public Criteria andLocationNotIn(List values) { + addCriterion("location not in", values, "location"); + return (Criteria) this; + } + + public Criteria andLocationBetween(String value1, String value2) { + addCriterion("location between", value1, value2, "location"); + return (Criteria) this; + } + + public Criteria andLocationNotBetween(String value1, String value2) { + addCriterion("location not between", value1, value2, "location"); + return (Criteria) this; + } + + public Criteria andLabelsIsNull() { + addCriterion("labels is null"); + return (Criteria) this; + } + + public Criteria andLabelsIsNotNull() { + addCriterion("labels is not null"); + return (Criteria) this; + } + + public Criteria andLabelsEqualTo(String value) { + addCriterion("labels =", value, "labels"); + return (Criteria) this; + } + + public Criteria andLabelsNotEqualTo(String value) { + addCriterion("labels <>", value, "labels"); + return (Criteria) this; + } + + public Criteria andLabelsGreaterThan(String value) { + addCriterion("labels >", value, "labels"); + return (Criteria) this; + } + + public Criteria andLabelsGreaterThanOrEqualTo(String value) { + addCriterion("labels >=", value, "labels"); + return (Criteria) this; + } + + public Criteria andLabelsLessThan(String value) { + addCriterion("labels <", value, "labels"); + return (Criteria) this; + } + + public Criteria andLabelsLessThanOrEqualTo(String value) { + addCriterion("labels <=", value, "labels"); + return (Criteria) this; + } + + public Criteria andLabelsLike(String value) { + addCriterion("labels like", value, "labels"); + return (Criteria) this; + } + + public Criteria andLabelsNotLike(String value) { + addCriterion("labels not like", value, "labels"); + return (Criteria) this; + } + + public Criteria andLabelsIn(List values) { + addCriterion("labels in", values, "labels"); + return (Criteria) this; + } + + public Criteria andLabelsNotIn(List values) { + addCriterion("labels not in", values, "labels"); + return (Criteria) this; + } + + public Criteria andLabelsBetween(String value1, String value2) { + addCriterion("labels between", value1, value2, "labels"); + return (Criteria) this; + } + + public Criteria andLabelsNotBetween(String value1, String value2) { + addCriterion("labels not between", value1, value2, "labels"); + return (Criteria) this; + } + + public Criteria andStatusIsNull() { + addCriterion("status is null"); + return (Criteria) this; + } + + public Criteria andStatusIsNotNull() { + addCriterion("status is not null"); + return (Criteria) this; + } + + public Criteria andStatusEqualTo(Short value) { + addCriterion("status =", value, "status"); + return (Criteria) this; + } + + public Criteria andStatusNotEqualTo(Short value) { + addCriterion("status <>", value, "status"); + return (Criteria) this; + } + + public Criteria andStatusGreaterThan(Short value) { + addCriterion("status >", value, "status"); + return (Criteria) this; + } + + public Criteria andStatusGreaterThanOrEqualTo(Short value) { + addCriterion("status >=", value, "status"); + return (Criteria) this; + } + + public Criteria andStatusLessThan(Short value) { + addCriterion("status <", value, "status"); + return (Criteria) this; + } + + public Criteria andStatusLessThanOrEqualTo(Short value) { + addCriterion("status <=", value, "status"); + return (Criteria) this; + } + + public Criteria andStatusIn(List values) { + addCriterion("status in", values, "status"); + return (Criteria) this; + } + + public Criteria andStatusNotIn(List values) { + addCriterion("status not in", values, "status"); + return (Criteria) this; + } + + public Criteria andStatusBetween(Short value1, Short value2) { + addCriterion("status between", value1, value2, "status"); + return (Criteria) this; + } + + public Criteria andStatusNotBetween(Short value1, Short value2) { + addCriterion("status not between", value1, value2, "status"); + return (Criteria) this; + } + + public Criteria andUseridIsNull() { + addCriterion("userID is null"); + return (Criteria) this; + } + + public Criteria andUseridIsNotNull() { + addCriterion("userID is not null"); + return (Criteria) this; + } + + public Criteria andUseridEqualTo(Long value) { + addCriterion("userID =", value, "userid"); + return (Criteria) this; + } + + public Criteria andUseridNotEqualTo(Long value) { + addCriterion("userID <>", value, "userid"); + return (Criteria) this; + } + + public Criteria andUseridGreaterThan(Long value) { + addCriterion("userID >", value, "userid"); + return (Criteria) this; + } + + public Criteria andUseridGreaterThanOrEqualTo(Long value) { + addCriterion("userID >=", value, "userid"); + return (Criteria) this; + } + + public Criteria andUseridLessThan(Long value) { + addCriterion("userID <", value, "userid"); + return (Criteria) this; + } + + public Criteria andUseridLessThanOrEqualTo(Long value) { + addCriterion("userID <=", value, "userid"); + return (Criteria) this; + } + + public Criteria andUseridIn(List values) { + addCriterion("userID in", values, "userid"); + return (Criteria) this; + } + + public Criteria andUseridNotIn(List values) { + addCriterion("userID not in", values, "userid"); + return (Criteria) this; + } + + public Criteria andUseridBetween(Long value1, Long value2) { + addCriterion("userID between", value1, value2, "userid"); + return (Criteria) this; + } + + public Criteria andUseridNotBetween(Long value1, Long value2) { + addCriterion("userID not between", value1, value2, "userid"); + return (Criteria) this; + } + + public Criteria andPriceIsNull() { + addCriterion("price is null"); + return (Criteria) this; + } + + public Criteria andPriceIsNotNull() { + addCriterion("price is not null"); + return (Criteria) this; + } + + public Criteria andPriceEqualTo(Double value) { + addCriterion("price =", value, "price"); + return (Criteria) this; + } + + public Criteria andPriceNotEqualTo(Double value) { + addCriterion("price <>", value, "price"); + return (Criteria) this; + } + + public Criteria andPriceGreaterThan(Double value) { + addCriterion("price >", value, "price"); + return (Criteria) this; + } + + public Criteria andPriceGreaterThanOrEqualTo(Double value) { + addCriterion("price >=", value, "price"); + return (Criteria) this; + } + + public Criteria andPriceLessThan(Double value) { + addCriterion("price <", value, "price"); + return (Criteria) this; + } + + public Criteria andPriceLessThanOrEqualTo(Double value) { + addCriterion("price <=", value, "price"); + return (Criteria) this; + } + + public Criteria andPriceIn(List values) { + addCriterion("price in", values, "price"); + return (Criteria) this; + } + + public Criteria andPriceNotIn(List values) { + addCriterion("price not in", values, "price"); + return (Criteria) this; + } + + public Criteria andPriceBetween(Double value1, Double value2) { + addCriterion("price between", value1, value2, "price"); + return (Criteria) this; + } + + public Criteria andPriceNotBetween(Double value1, Double value2) { + addCriterion("price not between", value1, value2, "price"); + return (Criteria) this; + } + + public Criteria andPurchasedateIsNull() { + addCriterion("purchasedate is null"); + return (Criteria) this; + } + + public Criteria andPurchasedateIsNotNull() { + addCriterion("purchasedate is not null"); + return (Criteria) this; + } + + public Criteria andPurchasedateEqualTo(Date value) { + addCriterion("purchasedate =", value, "purchasedate"); + return (Criteria) this; + } + + public Criteria andPurchasedateNotEqualTo(Date value) { + addCriterion("purchasedate <>", value, "purchasedate"); + return (Criteria) this; + } + + public Criteria andPurchasedateGreaterThan(Date value) { + addCriterion("purchasedate >", value, "purchasedate"); + return (Criteria) this; + } + + public Criteria andPurchasedateGreaterThanOrEqualTo(Date value) { + addCriterion("purchasedate >=", value, "purchasedate"); + return (Criteria) this; + } + + public Criteria andPurchasedateLessThan(Date value) { + addCriterion("purchasedate <", value, "purchasedate"); + return (Criteria) this; + } + + public Criteria andPurchasedateLessThanOrEqualTo(Date value) { + addCriterion("purchasedate <=", value, "purchasedate"); + return (Criteria) this; + } + + public Criteria andPurchasedateIn(List values) { + addCriterion("purchasedate in", values, "purchasedate"); + return (Criteria) this; + } + + public Criteria andPurchasedateNotIn(List values) { + addCriterion("purchasedate not in", values, "purchasedate"); + return (Criteria) this; + } + + public Criteria andPurchasedateBetween(Date value1, Date value2) { + addCriterion("purchasedate between", value1, value2, "purchasedate"); + return (Criteria) this; + } + + public Criteria andPurchasedateNotBetween(Date value1, Date value2) { + addCriterion("purchasedate not between", value1, value2, "purchasedate"); + return (Criteria) this; + } + + public Criteria andPeriodofvalidityIsNull() { + addCriterion("periodofvalidity is null"); + return (Criteria) this; + } + + public Criteria andPeriodofvalidityIsNotNull() { + addCriterion("periodofvalidity is not null"); + return (Criteria) this; + } + + public Criteria andPeriodofvalidityEqualTo(Date value) { + addCriterion("periodofvalidity =", value, "periodofvalidity"); + return (Criteria) this; + } + + public Criteria andPeriodofvalidityNotEqualTo(Date value) { + addCriterion("periodofvalidity <>", value, "periodofvalidity"); + return (Criteria) this; + } + + public Criteria andPeriodofvalidityGreaterThan(Date value) { + addCriterion("periodofvalidity >", value, "periodofvalidity"); + return (Criteria) this; + } + + public Criteria andPeriodofvalidityGreaterThanOrEqualTo(Date value) { + addCriterion("periodofvalidity >=", value, "periodofvalidity"); + return (Criteria) this; + } + + public Criteria andPeriodofvalidityLessThan(Date value) { + addCriterion("periodofvalidity <", value, "periodofvalidity"); + return (Criteria) this; + } + + public Criteria andPeriodofvalidityLessThanOrEqualTo(Date value) { + addCriterion("periodofvalidity <=", value, "periodofvalidity"); + return (Criteria) this; + } + + public Criteria andPeriodofvalidityIn(List values) { + addCriterion("periodofvalidity in", values, "periodofvalidity"); + return (Criteria) this; + } + + public Criteria andPeriodofvalidityNotIn(List values) { + addCriterion("periodofvalidity not in", values, "periodofvalidity"); + return (Criteria) this; + } + + public Criteria andPeriodofvalidityBetween(Date value1, Date value2) { + addCriterion("periodofvalidity between", value1, value2, "periodofvalidity"); + return (Criteria) this; + } + + public Criteria andPeriodofvalidityNotBetween(Date value1, Date value2) { + addCriterion("periodofvalidity not between", value1, value2, "periodofvalidity"); + return (Criteria) this; + } + + public Criteria andWarrantydateIsNull() { + addCriterion("warrantydate is null"); + return (Criteria) this; + } + + public Criteria andWarrantydateIsNotNull() { + addCriterion("warrantydate is not null"); + return (Criteria) this; + } + + public Criteria andWarrantydateEqualTo(Date value) { + addCriterion("warrantydate =", value, "warrantydate"); + return (Criteria) this; + } + + public Criteria andWarrantydateNotEqualTo(Date value) { + addCriterion("warrantydate <>", value, "warrantydate"); + return (Criteria) this; + } + + public Criteria andWarrantydateGreaterThan(Date value) { + addCriterion("warrantydate >", value, "warrantydate"); + return (Criteria) this; + } + + public Criteria andWarrantydateGreaterThanOrEqualTo(Date value) { + addCriterion("warrantydate >=", value, "warrantydate"); + return (Criteria) this; + } + + public Criteria andWarrantydateLessThan(Date value) { + addCriterion("warrantydate <", value, "warrantydate"); + return (Criteria) this; + } + + public Criteria andWarrantydateLessThanOrEqualTo(Date value) { + addCriterion("warrantydate <=", value, "warrantydate"); + return (Criteria) this; + } + + public Criteria andWarrantydateIn(List values) { + addCriterion("warrantydate in", values, "warrantydate"); + return (Criteria) this; + } + + public Criteria andWarrantydateNotIn(List values) { + addCriterion("warrantydate not in", values, "warrantydate"); + return (Criteria) this; + } + + public Criteria andWarrantydateBetween(Date value1, Date value2) { + addCriterion("warrantydate between", value1, value2, "warrantydate"); + return (Criteria) this; + } + + public Criteria andWarrantydateNotBetween(Date value1, Date value2) { + addCriterion("warrantydate not between", value1, value2, "warrantydate"); + return (Criteria) this; + } + + public Criteria andAssetnumIsNull() { + addCriterion("assetnum is null"); + return (Criteria) this; + } + + public Criteria andAssetnumIsNotNull() { + addCriterion("assetnum is not null"); + return (Criteria) this; + } + + public Criteria andAssetnumEqualTo(String value) { + addCriterion("assetnum =", value, "assetnum"); + return (Criteria) this; + } + + public Criteria andAssetnumNotEqualTo(String value) { + addCriterion("assetnum <>", value, "assetnum"); + return (Criteria) this; + } + + public Criteria andAssetnumGreaterThan(String value) { + addCriterion("assetnum >", value, "assetnum"); + return (Criteria) this; + } + + public Criteria andAssetnumGreaterThanOrEqualTo(String value) { + addCriterion("assetnum >=", value, "assetnum"); + return (Criteria) this; + } + + public Criteria andAssetnumLessThan(String value) { + addCriterion("assetnum <", value, "assetnum"); + return (Criteria) this; + } + + public Criteria andAssetnumLessThanOrEqualTo(String value) { + addCriterion("assetnum <=", value, "assetnum"); + return (Criteria) this; + } + + public Criteria andAssetnumLike(String value) { + addCriterion("assetnum like", value, "assetnum"); + return (Criteria) this; + } + + public Criteria andAssetnumNotLike(String value) { + addCriterion("assetnum not like", value, "assetnum"); + return (Criteria) this; + } + + public Criteria andAssetnumIn(List values) { + addCriterion("assetnum in", values, "assetnum"); + return (Criteria) this; + } + + public Criteria andAssetnumNotIn(List values) { + addCriterion("assetnum not in", values, "assetnum"); + return (Criteria) this; + } + + public Criteria andAssetnumBetween(String value1, String value2) { + addCriterion("assetnum between", value1, value2, "assetnum"); + return (Criteria) this; + } + + public Criteria andAssetnumNotBetween(String value1, String value2) { + addCriterion("assetnum not between", value1, value2, "assetnum"); + return (Criteria) this; + } + + public Criteria andSerialnumIsNull() { + addCriterion("serialnum is null"); + return (Criteria) this; + } + + public Criteria andSerialnumIsNotNull() { + addCriterion("serialnum is not null"); + return (Criteria) this; + } + + public Criteria andSerialnumEqualTo(String value) { + addCriterion("serialnum =", value, "serialnum"); + return (Criteria) this; + } + + public Criteria andSerialnumNotEqualTo(String value) { + addCriterion("serialnum <>", value, "serialnum"); + return (Criteria) this; + } + + public Criteria andSerialnumGreaterThan(String value) { + addCriterion("serialnum >", value, "serialnum"); + return (Criteria) this; + } + + public Criteria andSerialnumGreaterThanOrEqualTo(String value) { + addCriterion("serialnum >=", value, "serialnum"); + return (Criteria) this; + } + + public Criteria andSerialnumLessThan(String value) { + addCriterion("serialnum <", value, "serialnum"); + return (Criteria) this; + } + + public Criteria andSerialnumLessThanOrEqualTo(String value) { + addCriterion("serialnum <=", value, "serialnum"); + return (Criteria) this; + } + + public Criteria andSerialnumLike(String value) { + addCriterion("serialnum like", value, "serialnum"); + return (Criteria) this; + } + + public Criteria andSerialnumNotLike(String value) { + addCriterion("serialnum not like", value, "serialnum"); + return (Criteria) this; + } + + public Criteria andSerialnumIn(List values) { + addCriterion("serialnum in", values, "serialnum"); + return (Criteria) this; + } + + public Criteria andSerialnumNotIn(List values) { + addCriterion("serialnum not in", values, "serialnum"); + return (Criteria) this; + } + + public Criteria andSerialnumBetween(String value1, String value2) { + addCriterion("serialnum between", value1, value2, "serialnum"); + return (Criteria) this; + } + + public Criteria andSerialnumNotBetween(String value1, String value2) { + addCriterion("serialnum not between", value1, value2, "serialnum"); + return (Criteria) this; + } + + public Criteria andSupplierIsNull() { + addCriterion("supplier is null"); + return (Criteria) this; + } + + public Criteria andSupplierIsNotNull() { + addCriterion("supplier is not null"); + return (Criteria) this; + } + + public Criteria andSupplierEqualTo(Long value) { + addCriterion("supplier =", value, "supplier"); + return (Criteria) this; + } + + public Criteria andSupplierNotEqualTo(Long value) { + addCriterion("supplier <>", value, "supplier"); + return (Criteria) this; + } + + public Criteria andSupplierGreaterThan(Long value) { + addCriterion("supplier >", value, "supplier"); + return (Criteria) this; + } + + public Criteria andSupplierGreaterThanOrEqualTo(Long value) { + addCriterion("supplier >=", value, "supplier"); + return (Criteria) this; + } + + public Criteria andSupplierLessThan(Long value) { + addCriterion("supplier <", value, "supplier"); + return (Criteria) this; + } + + public Criteria andSupplierLessThanOrEqualTo(Long value) { + addCriterion("supplier <=", value, "supplier"); + return (Criteria) this; + } + + public Criteria andSupplierIn(List values) { + addCriterion("supplier in", values, "supplier"); + return (Criteria) this; + } + + public Criteria andSupplierNotIn(List values) { + addCriterion("supplier not in", values, "supplier"); + return (Criteria) this; + } + + public Criteria andSupplierBetween(Long value1, Long value2) { + addCriterion("supplier between", value1, value2, "supplier"); + return (Criteria) this; + } + + public Criteria andSupplierNotBetween(Long value1, Long value2) { + addCriterion("supplier not between", value1, value2, "supplier"); + return (Criteria) this; + } + + public Criteria andCreatetimeIsNull() { + addCriterion("createtime is null"); + return (Criteria) this; + } + + public Criteria andCreatetimeIsNotNull() { + addCriterion("createtime is not null"); + return (Criteria) this; + } + + public Criteria andCreatetimeEqualTo(Date value) { + addCriterion("createtime =", value, "createtime"); + return (Criteria) this; + } + + public Criteria andCreatetimeNotEqualTo(Date value) { + addCriterion("createtime <>", value, "createtime"); + return (Criteria) this; + } + + public Criteria andCreatetimeGreaterThan(Date value) { + addCriterion("createtime >", value, "createtime"); + return (Criteria) this; + } + + public Criteria andCreatetimeGreaterThanOrEqualTo(Date value) { + addCriterion("createtime >=", value, "createtime"); + return (Criteria) this; + } + + public Criteria andCreatetimeLessThan(Date value) { + addCriterion("createtime <", value, "createtime"); + return (Criteria) this; + } + + public Criteria andCreatetimeLessThanOrEqualTo(Date value) { + addCriterion("createtime <=", value, "createtime"); + return (Criteria) this; + } + + public Criteria andCreatetimeIn(List values) { + addCriterion("createtime in", values, "createtime"); + return (Criteria) this; + } + + public Criteria andCreatetimeNotIn(List values) { + addCriterion("createtime not in", values, "createtime"); + return (Criteria) this; + } + + public Criteria andCreatetimeBetween(Date value1, Date value2) { + addCriterion("createtime between", value1, value2, "createtime"); + return (Criteria) this; + } + + public Criteria andCreatetimeNotBetween(Date value1, Date value2) { + addCriterion("createtime not between", value1, value2, "createtime"); + return (Criteria) this; + } + + public Criteria andCreatorIsNull() { + addCriterion("creator is null"); + return (Criteria) this; + } + + public Criteria andCreatorIsNotNull() { + addCriterion("creator is not null"); + return (Criteria) this; + } + + public Criteria andCreatorEqualTo(Long value) { + addCriterion("creator =", value, "creator"); + return (Criteria) this; + } + + public Criteria andCreatorNotEqualTo(Long value) { + addCriterion("creator <>", value, "creator"); + return (Criteria) this; + } + + public Criteria andCreatorGreaterThan(Long value) { + addCriterion("creator >", value, "creator"); + return (Criteria) this; + } + + public Criteria andCreatorGreaterThanOrEqualTo(Long value) { + addCriterion("creator >=", value, "creator"); + return (Criteria) this; + } + + public Criteria andCreatorLessThan(Long value) { + addCriterion("creator <", value, "creator"); + return (Criteria) this; + } + + public Criteria andCreatorLessThanOrEqualTo(Long value) { + addCriterion("creator <=", value, "creator"); + return (Criteria) this; + } + + public Criteria andCreatorIn(List values) { + addCriterion("creator in", values, "creator"); + return (Criteria) this; + } + + public Criteria andCreatorNotIn(List values) { + addCriterion("creator not in", values, "creator"); + return (Criteria) this; + } + + public Criteria andCreatorBetween(Long value1, Long value2) { + addCriterion("creator between", value1, value2, "creator"); + return (Criteria) this; + } + + public Criteria andCreatorNotBetween(Long value1, Long value2) { + addCriterion("creator not between", value1, value2, "creator"); + return (Criteria) this; + } + + public Criteria andUpdatetimeIsNull() { + addCriterion("updatetime is null"); + return (Criteria) this; + } + + public Criteria andUpdatetimeIsNotNull() { + addCriterion("updatetime is not null"); + return (Criteria) this; + } + + public Criteria andUpdatetimeEqualTo(Date value) { + addCriterion("updatetime =", value, "updatetime"); + return (Criteria) this; + } + + public Criteria andUpdatetimeNotEqualTo(Date value) { + addCriterion("updatetime <>", value, "updatetime"); + return (Criteria) this; + } + + public Criteria andUpdatetimeGreaterThan(Date value) { + addCriterion("updatetime >", value, "updatetime"); + return (Criteria) this; + } + + public Criteria andUpdatetimeGreaterThanOrEqualTo(Date value) { + addCriterion("updatetime >=", value, "updatetime"); + return (Criteria) this; + } + + public Criteria andUpdatetimeLessThan(Date value) { + addCriterion("updatetime <", value, "updatetime"); + return (Criteria) this; + } + + public Criteria andUpdatetimeLessThanOrEqualTo(Date value) { + addCriterion("updatetime <=", value, "updatetime"); + return (Criteria) this; + } + + public Criteria andUpdatetimeIn(List values) { + addCriterion("updatetime in", values, "updatetime"); + return (Criteria) this; + } + + public Criteria andUpdatetimeNotIn(List values) { + addCriterion("updatetime not in", values, "updatetime"); + return (Criteria) this; + } + + public Criteria andUpdatetimeBetween(Date value1, Date value2) { + addCriterion("updatetime between", value1, value2, "updatetime"); + return (Criteria) this; + } + + public Criteria andUpdatetimeNotBetween(Date value1, Date value2) { + addCriterion("updatetime not between", value1, value2, "updatetime"); + return (Criteria) this; + } + + public Criteria andUpdatorIsNull() { + addCriterion("updator is null"); + return (Criteria) this; + } + + public Criteria andUpdatorIsNotNull() { + addCriterion("updator is not null"); + return (Criteria) this; + } + + public Criteria andUpdatorEqualTo(Long value) { + addCriterion("updator =", value, "updator"); + return (Criteria) this; + } + + public Criteria andUpdatorNotEqualTo(Long value) { + addCriterion("updator <>", value, "updator"); + return (Criteria) this; + } + + public Criteria andUpdatorGreaterThan(Long value) { + addCriterion("updator >", value, "updator"); + return (Criteria) this; + } + + public Criteria andUpdatorGreaterThanOrEqualTo(Long value) { + addCriterion("updator >=", value, "updator"); + return (Criteria) this; + } + + public Criteria andUpdatorLessThan(Long value) { + addCriterion("updator <", value, "updator"); + return (Criteria) this; + } + + public Criteria andUpdatorLessThanOrEqualTo(Long value) { + addCriterion("updator <=", value, "updator"); + return (Criteria) this; + } + + public Criteria andUpdatorIn(List values) { + addCriterion("updator in", values, "updator"); + return (Criteria) this; + } + + public Criteria andUpdatorNotIn(List values) { + addCriterion("updator not in", values, "updator"); + return (Criteria) this; + } + + public Criteria andUpdatorBetween(Long value1, Long value2) { + addCriterion("updator between", value1, value2, "updator"); + return (Criteria) this; + } + + public Criteria andUpdatorNotBetween(Long value1, Long value2) { + addCriterion("updator not between", value1, value2, "updator"); + return (Criteria) this; + } + } + + /** + * This class was generated by MyBatis Generator. + * This class corresponds to the database table jsh_asset + * + * @mbggenerated do_not_delete_during_merge + */ + public static class Criteria extends GeneratedCriteria { + + protected Criteria() { + super(); + } + } + + /** + * This class was generated by MyBatis Generator. + * This class corresponds to the database table jsh_asset + * + * @mbggenerated + */ + public static class Criterion { + private String condition; + + private Object value; + + private Object secondValue; + + private boolean noValue; + + private boolean singleValue; + + private boolean betweenValue; + + private boolean listValue; + + private String typeHandler; + + public String getCondition() { + return condition; + } + + public Object getValue() { + return value; + } + + public Object getSecondValue() { + return secondValue; + } + + public boolean isNoValue() { + return noValue; + } + + public boolean isSingleValue() { + return singleValue; + } + + public boolean isBetweenValue() { + return betweenValue; + } + + public boolean isListValue() { + return listValue; + } + + public String getTypeHandler() { + return typeHandler; + } + + protected Criterion(String condition) { + super(); + this.condition = condition; + this.typeHandler = null; + this.noValue = true; + } + + protected Criterion(String condition, Object value, String typeHandler) { + super(); + this.condition = condition; + this.value = value; + this.typeHandler = typeHandler; + if (value instanceof List) { + this.listValue = true; + } else { + this.singleValue = true; + } + } + + protected Criterion(String condition, Object value) { + this(condition, value, null); + } + + protected Criterion(String condition, Object value, Object secondValue, String typeHandler) { + super(); + this.condition = condition; + this.value = value; + this.secondValue = secondValue; + this.typeHandler = typeHandler; + this.betweenValue = true; + } + + protected Criterion(String condition, Object value, Object secondValue) { + this(condition, value, secondValue, null); + } + } +} \ No newline at end of file diff --git a/src/main/java/com/jsh/erp/datasource/entities/AssetName.java b/src/main/java/com/jsh/erp/datasource/entities/AssetName.java new file mode 100644 index 00000000..51aa3b19 --- /dev/null +++ b/src/main/java/com/jsh/erp/datasource/entities/AssetName.java @@ -0,0 +1,195 @@ +package com.jsh.erp.datasource.entities; + +public class AssetName { + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database column jsh_assetname.id + * + * @mbggenerated + */ + private Long id; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database column jsh_assetname.assetname + * + * @mbggenerated + */ + private String assetname; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database column jsh_assetname.assetcategoryID + * + * @mbggenerated + */ + private Long assetcategoryid; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database column jsh_assetname.isystem + * + * @mbggenerated + */ + private Short isystem; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database column jsh_assetname.isconsumables + * + * @mbggenerated + */ + private Short isconsumables; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database column jsh_assetname.description + * + * @mbggenerated + */ + private String description; + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column jsh_assetname.id + * + * @return the value of jsh_assetname.id + * + * @mbggenerated + */ + public Long getId() { + return id; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column jsh_assetname.id + * + * @param id the value for jsh_assetname.id + * + * @mbggenerated + */ + public void setId(Long id) { + this.id = id; + } + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column jsh_assetname.assetname + * + * @return the value of jsh_assetname.assetname + * + * @mbggenerated + */ + public String getAssetname() { + return assetname; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column jsh_assetname.assetname + * + * @param assetname the value for jsh_assetname.assetname + * + * @mbggenerated + */ + public void setAssetname(String assetname) { + this.assetname = assetname == null ? null : assetname.trim(); + } + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column jsh_assetname.assetcategoryID + * + * @return the value of jsh_assetname.assetcategoryID + * + * @mbggenerated + */ + public Long getAssetcategoryid() { + return assetcategoryid; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column jsh_assetname.assetcategoryID + * + * @param assetcategoryid the value for jsh_assetname.assetcategoryID + * + * @mbggenerated + */ + public void setAssetcategoryid(Long assetcategoryid) { + this.assetcategoryid = assetcategoryid; + } + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column jsh_assetname.isystem + * + * @return the value of jsh_assetname.isystem + * + * @mbggenerated + */ + public Short getIsystem() { + return isystem; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column jsh_assetname.isystem + * + * @param isystem the value for jsh_assetname.isystem + * + * @mbggenerated + */ + public void setIsystem(Short isystem) { + this.isystem = isystem; + } + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column jsh_assetname.isconsumables + * + * @return the value of jsh_assetname.isconsumables + * + * @mbggenerated + */ + public Short getIsconsumables() { + return isconsumables; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column jsh_assetname.isconsumables + * + * @param isconsumables the value for jsh_assetname.isconsumables + * + * @mbggenerated + */ + public void setIsconsumables(Short isconsumables) { + this.isconsumables = isconsumables; + } + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column jsh_assetname.description + * + * @return the value of jsh_assetname.description + * + * @mbggenerated + */ + public String getDescription() { + return description; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column jsh_assetname.description + * + * @param description the value for jsh_assetname.description + * + * @mbggenerated + */ + public void setDescription(String description) { + this.description = description == null ? null : description.trim(); + } +} \ No newline at end of file diff --git a/src/main/java/com/jsh/erp/datasource/entities/AssetNameExample.java b/src/main/java/com/jsh/erp/datasource/entities/AssetNameExample.java new file mode 100644 index 00000000..521dae4d --- /dev/null +++ b/src/main/java/com/jsh/erp/datasource/entities/AssetNameExample.java @@ -0,0 +1,612 @@ +package com.jsh.erp.datasource.entities; + +import java.util.ArrayList; +import java.util.List; + +public class AssetNameExample { + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database table jsh_assetname + * + * @mbggenerated + */ + protected String orderByClause; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database table jsh_assetname + * + * @mbggenerated + */ + protected boolean distinct; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database table jsh_assetname + * + * @mbggenerated + */ + protected List oredCriteria; + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_assetname + * + * @mbggenerated + */ + public AssetNameExample() { + oredCriteria = new ArrayList(); + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_assetname + * + * @mbggenerated + */ + public void setOrderByClause(String orderByClause) { + this.orderByClause = orderByClause; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_assetname + * + * @mbggenerated + */ + public String getOrderByClause() { + return orderByClause; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_assetname + * + * @mbggenerated + */ + public void setDistinct(boolean distinct) { + this.distinct = distinct; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_assetname + * + * @mbggenerated + */ + public boolean isDistinct() { + return distinct; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_assetname + * + * @mbggenerated + */ + public List getOredCriteria() { + return oredCriteria; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_assetname + * + * @mbggenerated + */ + public void or(Criteria criteria) { + oredCriteria.add(criteria); + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_assetname + * + * @mbggenerated + */ + public Criteria or() { + Criteria criteria = createCriteriaInternal(); + oredCriteria.add(criteria); + return criteria; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_assetname + * + * @mbggenerated + */ + public Criteria createCriteria() { + Criteria criteria = createCriteriaInternal(); + if (oredCriteria.size() == 0) { + oredCriteria.add(criteria); + } + return criteria; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_assetname + * + * @mbggenerated + */ + protected Criteria createCriteriaInternal() { + Criteria criteria = new Criteria(); + return criteria; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_assetname + * + * @mbggenerated + */ + public void clear() { + oredCriteria.clear(); + orderByClause = null; + distinct = false; + } + + /** + * This class was generated by MyBatis Generator. + * This class corresponds to the database table jsh_assetname + * + * @mbggenerated + */ + protected abstract static class GeneratedCriteria { + protected List criteria; + + protected GeneratedCriteria() { + super(); + criteria = new ArrayList(); + } + + public boolean isValid() { + return criteria.size() > 0; + } + + public List getAllCriteria() { + return criteria; + } + + public List getCriteria() { + return criteria; + } + + protected void addCriterion(String condition) { + if (condition == null) { + throw new RuntimeException("Value for condition cannot be null"); + } + criteria.add(new Criterion(condition)); + } + + protected void addCriterion(String condition, Object value, String property) { + if (value == null) { + throw new RuntimeException("Value for " + property + " cannot be null"); + } + criteria.add(new Criterion(condition, value)); + } + + protected void addCriterion(String condition, Object value1, Object value2, String property) { + if (value1 == null || value2 == null) { + throw new RuntimeException("Between values for " + property + " cannot be null"); + } + criteria.add(new Criterion(condition, value1, value2)); + } + + public Criteria andIdIsNull() { + addCriterion("id is null"); + return (Criteria) this; + } + + public Criteria andIdIsNotNull() { + addCriterion("id is not null"); + return (Criteria) this; + } + + public Criteria andIdEqualTo(Long value) { + addCriterion("id =", value, "id"); + return (Criteria) this; + } + + public Criteria andIdNotEqualTo(Long value) { + addCriterion("id <>", value, "id"); + return (Criteria) this; + } + + public Criteria andIdGreaterThan(Long value) { + addCriterion("id >", value, "id"); + return (Criteria) this; + } + + public Criteria andIdGreaterThanOrEqualTo(Long value) { + addCriterion("id >=", value, "id"); + return (Criteria) this; + } + + public Criteria andIdLessThan(Long value) { + addCriterion("id <", value, "id"); + return (Criteria) this; + } + + public Criteria andIdLessThanOrEqualTo(Long value) { + addCriterion("id <=", value, "id"); + return (Criteria) this; + } + + public Criteria andIdIn(List values) { + addCriterion("id in", values, "id"); + return (Criteria) this; + } + + public Criteria andIdNotIn(List values) { + addCriterion("id not in", values, "id"); + return (Criteria) this; + } + + public Criteria andIdBetween(Long value1, Long value2) { + addCriterion("id between", value1, value2, "id"); + return (Criteria) this; + } + + public Criteria andIdNotBetween(Long value1, Long value2) { + addCriterion("id not between", value1, value2, "id"); + return (Criteria) this; + } + + public Criteria andAssetnameIsNull() { + addCriterion("assetname is null"); + return (Criteria) this; + } + + public Criteria andAssetnameIsNotNull() { + addCriterion("assetname is not null"); + return (Criteria) this; + } + + public Criteria andAssetnameEqualTo(String value) { + addCriterion("assetname =", value, "assetname"); + return (Criteria) this; + } + + public Criteria andAssetnameNotEqualTo(String value) { + addCriterion("assetname <>", value, "assetname"); + return (Criteria) this; + } + + public Criteria andAssetnameGreaterThan(String value) { + addCriterion("assetname >", value, "assetname"); + return (Criteria) this; + } + + public Criteria andAssetnameGreaterThanOrEqualTo(String value) { + addCriterion("assetname >=", value, "assetname"); + return (Criteria) this; + } + + public Criteria andAssetnameLessThan(String value) { + addCriterion("assetname <", value, "assetname"); + return (Criteria) this; + } + + public Criteria andAssetnameLessThanOrEqualTo(String value) { + addCriterion("assetname <=", value, "assetname"); + return (Criteria) this; + } + + public Criteria andAssetnameLike(String value) { + addCriterion("assetname like", value, "assetname"); + return (Criteria) this; + } + + public Criteria andAssetnameNotLike(String value) { + addCriterion("assetname not like", value, "assetname"); + return (Criteria) this; + } + + public Criteria andAssetnameIn(List values) { + addCriterion("assetname in", values, "assetname"); + return (Criteria) this; + } + + public Criteria andAssetnameNotIn(List values) { + addCriterion("assetname not in", values, "assetname"); + return (Criteria) this; + } + + public Criteria andAssetnameBetween(String value1, String value2) { + addCriterion("assetname between", value1, value2, "assetname"); + return (Criteria) this; + } + + public Criteria andAssetnameNotBetween(String value1, String value2) { + addCriterion("assetname not between", value1, value2, "assetname"); + return (Criteria) this; + } + + public Criteria andAssetcategoryidIsNull() { + addCriterion("assetcategoryID is null"); + return (Criteria) this; + } + + public Criteria andAssetcategoryidIsNotNull() { + addCriterion("assetcategoryID is not null"); + return (Criteria) this; + } + + public Criteria andAssetcategoryidEqualTo(Long value) { + addCriterion("assetcategoryID =", value, "assetcategoryid"); + return (Criteria) this; + } + + public Criteria andAssetcategoryidNotEqualTo(Long value) { + addCriterion("assetcategoryID <>", value, "assetcategoryid"); + return (Criteria) this; + } + + public Criteria andAssetcategoryidGreaterThan(Long value) { + addCriterion("assetcategoryID >", value, "assetcategoryid"); + return (Criteria) this; + } + + public Criteria andAssetcategoryidGreaterThanOrEqualTo(Long value) { + addCriterion("assetcategoryID >=", value, "assetcategoryid"); + return (Criteria) this; + } + + public Criteria andAssetcategoryidLessThan(Long value) { + addCriterion("assetcategoryID <", value, "assetcategoryid"); + return (Criteria) this; + } + + public Criteria andAssetcategoryidLessThanOrEqualTo(Long value) { + addCriterion("assetcategoryID <=", value, "assetcategoryid"); + return (Criteria) this; + } + + public Criteria andAssetcategoryidIn(List values) { + addCriterion("assetcategoryID in", values, "assetcategoryid"); + return (Criteria) this; + } + + public Criteria andAssetcategoryidNotIn(List values) { + addCriterion("assetcategoryID not in", values, "assetcategoryid"); + return (Criteria) this; + } + + public Criteria andAssetcategoryidBetween(Long value1, Long value2) { + addCriterion("assetcategoryID between", value1, value2, "assetcategoryid"); + return (Criteria) this; + } + + public Criteria andAssetcategoryidNotBetween(Long value1, Long value2) { + addCriterion("assetcategoryID not between", value1, value2, "assetcategoryid"); + return (Criteria) this; + } + + public Criteria andIsystemIsNull() { + addCriterion("isystem is null"); + return (Criteria) this; + } + + public Criteria andIsystemIsNotNull() { + addCriterion("isystem is not null"); + return (Criteria) this; + } + + public Criteria andIsystemEqualTo(Short value) { + addCriterion("isystem =", value, "isystem"); + return (Criteria) this; + } + + public Criteria andIsystemNotEqualTo(Short value) { + addCriterion("isystem <>", value, "isystem"); + return (Criteria) this; + } + + public Criteria andIsystemGreaterThan(Short value) { + addCriterion("isystem >", value, "isystem"); + return (Criteria) this; + } + + public Criteria andIsystemGreaterThanOrEqualTo(Short value) { + addCriterion("isystem >=", value, "isystem"); + return (Criteria) this; + } + + public Criteria andIsystemLessThan(Short value) { + addCriterion("isystem <", value, "isystem"); + return (Criteria) this; + } + + public Criteria andIsystemLessThanOrEqualTo(Short value) { + addCriterion("isystem <=", value, "isystem"); + return (Criteria) this; + } + + public Criteria andIsystemIn(List values) { + addCriterion("isystem in", values, "isystem"); + return (Criteria) this; + } + + public Criteria andIsystemNotIn(List values) { + addCriterion("isystem not in", values, "isystem"); + return (Criteria) this; + } + + public Criteria andIsystemBetween(Short value1, Short value2) { + addCriterion("isystem between", value1, value2, "isystem"); + return (Criteria) this; + } + + public Criteria andIsystemNotBetween(Short value1, Short value2) { + addCriterion("isystem not between", value1, value2, "isystem"); + return (Criteria) this; + } + + public Criteria andIsconsumablesIsNull() { + addCriterion("isconsumables is null"); + return (Criteria) this; + } + + public Criteria andIsconsumablesIsNotNull() { + addCriterion("isconsumables is not null"); + return (Criteria) this; + } + + public Criteria andIsconsumablesEqualTo(Short value) { + addCriterion("isconsumables =", value, "isconsumables"); + return (Criteria) this; + } + + public Criteria andIsconsumablesNotEqualTo(Short value) { + addCriterion("isconsumables <>", value, "isconsumables"); + return (Criteria) this; + } + + public Criteria andIsconsumablesGreaterThan(Short value) { + addCriterion("isconsumables >", value, "isconsumables"); + return (Criteria) this; + } + + public Criteria andIsconsumablesGreaterThanOrEqualTo(Short value) { + addCriterion("isconsumables >=", value, "isconsumables"); + return (Criteria) this; + } + + public Criteria andIsconsumablesLessThan(Short value) { + addCriterion("isconsumables <", value, "isconsumables"); + return (Criteria) this; + } + + public Criteria andIsconsumablesLessThanOrEqualTo(Short value) { + addCriterion("isconsumables <=", value, "isconsumables"); + return (Criteria) this; + } + + public Criteria andIsconsumablesIn(List values) { + addCriterion("isconsumables in", values, "isconsumables"); + return (Criteria) this; + } + + public Criteria andIsconsumablesNotIn(List values) { + addCriterion("isconsumables not in", values, "isconsumables"); + return (Criteria) this; + } + + public Criteria andIsconsumablesBetween(Short value1, Short value2) { + addCriterion("isconsumables between", value1, value2, "isconsumables"); + return (Criteria) this; + } + + public Criteria andIsconsumablesNotBetween(Short value1, Short value2) { + addCriterion("isconsumables not between", value1, value2, "isconsumables"); + return (Criteria) this; + } + } + + /** + * This class was generated by MyBatis Generator. + * This class corresponds to the database table jsh_assetname + * + * @mbggenerated do_not_delete_during_merge + */ + public static class Criteria extends GeneratedCriteria { + + protected Criteria() { + super(); + } + } + + /** + * This class was generated by MyBatis Generator. + * This class corresponds to the database table jsh_assetname + * + * @mbggenerated + */ + public static class Criterion { + private String condition; + + private Object value; + + private Object secondValue; + + private boolean noValue; + + private boolean singleValue; + + private boolean betweenValue; + + private boolean listValue; + + private String typeHandler; + + public String getCondition() { + return condition; + } + + public Object getValue() { + return value; + } + + public Object getSecondValue() { + return secondValue; + } + + public boolean isNoValue() { + return noValue; + } + + public boolean isSingleValue() { + return singleValue; + } + + public boolean isBetweenValue() { + return betweenValue; + } + + public boolean isListValue() { + return listValue; + } + + public String getTypeHandler() { + return typeHandler; + } + + protected Criterion(String condition) { + super(); + this.condition = condition; + this.typeHandler = null; + this.noValue = true; + } + + protected Criterion(String condition, Object value, String typeHandler) { + super(); + this.condition = condition; + this.value = value; + this.typeHandler = typeHandler; + if (value instanceof List) { + this.listValue = true; + } else { + this.singleValue = true; + } + } + + protected Criterion(String condition, Object value) { + this(condition, value, null); + } + + protected Criterion(String condition, Object value, Object secondValue, String typeHandler) { + super(); + this.condition = condition; + this.value = value; + this.secondValue = secondValue; + this.typeHandler = typeHandler; + this.betweenValue = true; + } + + protected Criterion(String condition, Object value, Object secondValue) { + this(condition, value, secondValue, null); + } + } +} \ No newline at end of file diff --git a/src/main/java/com/jsh/erp/datasource/entities/Depot.java b/src/main/java/com/jsh/erp/datasource/entities/Depot.java new file mode 100644 index 00000000..2c102bb2 --- /dev/null +++ b/src/main/java/com/jsh/erp/datasource/entities/Depot.java @@ -0,0 +1,259 @@ +package com.jsh.erp.datasource.entities; + +public class Depot { + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database column jsh_depot.id + * + * @mbggenerated + */ + private Long id; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database column jsh_depot.name + * + * @mbggenerated + */ + private String name; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database column jsh_depot.address + * + * @mbggenerated + */ + private String address; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database column jsh_depot.warehousing + * + * @mbggenerated + */ + private Double warehousing; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database column jsh_depot.truckage + * + * @mbggenerated + */ + private Double truckage; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database column jsh_depot.type + * + * @mbggenerated + */ + private Integer type; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database column jsh_depot.sort + * + * @mbggenerated + */ + private String sort; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database column jsh_depot.remark + * + * @mbggenerated + */ + private String remark; + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column jsh_depot.id + * + * @return the value of jsh_depot.id + * + * @mbggenerated + */ + public Long getId() { + return id; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column jsh_depot.id + * + * @param id the value for jsh_depot.id + * + * @mbggenerated + */ + public void setId(Long id) { + this.id = id; + } + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column jsh_depot.name + * + * @return the value of jsh_depot.name + * + * @mbggenerated + */ + public String getName() { + return name; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column jsh_depot.name + * + * @param name the value for jsh_depot.name + * + * @mbggenerated + */ + public void setName(String name) { + this.name = name == null ? null : name.trim(); + } + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column jsh_depot.address + * + * @return the value of jsh_depot.address + * + * @mbggenerated + */ + public String getAddress() { + return address; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column jsh_depot.address + * + * @param address the value for jsh_depot.address + * + * @mbggenerated + */ + public void setAddress(String address) { + this.address = address == null ? null : address.trim(); + } + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column jsh_depot.warehousing + * + * @return the value of jsh_depot.warehousing + * + * @mbggenerated + */ + public Double getWarehousing() { + return warehousing; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column jsh_depot.warehousing + * + * @param warehousing the value for jsh_depot.warehousing + * + * @mbggenerated + */ + public void setWarehousing(Double warehousing) { + this.warehousing = warehousing; + } + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column jsh_depot.truckage + * + * @return the value of jsh_depot.truckage + * + * @mbggenerated + */ + public Double getTruckage() { + return truckage; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column jsh_depot.truckage + * + * @param truckage the value for jsh_depot.truckage + * + * @mbggenerated + */ + public void setTruckage(Double truckage) { + this.truckage = truckage; + } + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column jsh_depot.type + * + * @return the value of jsh_depot.type + * + * @mbggenerated + */ + public Integer getType() { + return type; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column jsh_depot.type + * + * @param type the value for jsh_depot.type + * + * @mbggenerated + */ + public void setType(Integer type) { + this.type = type; + } + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column jsh_depot.sort + * + * @return the value of jsh_depot.sort + * + * @mbggenerated + */ + public String getSort() { + return sort; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column jsh_depot.sort + * + * @param sort the value for jsh_depot.sort + * + * @mbggenerated + */ + public void setSort(String sort) { + this.sort = sort == null ? null : sort.trim(); + } + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column jsh_depot.remark + * + * @return the value of jsh_depot.remark + * + * @mbggenerated + */ + public String getRemark() { + return remark; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column jsh_depot.remark + * + * @param remark the value for jsh_depot.remark + * + * @mbggenerated + */ + public void setRemark(String remark) { + this.remark = remark == null ? null : remark.trim(); + } +} \ No newline at end of file diff --git a/src/main/java/com/jsh/erp/datasource/entities/DepotExample.java b/src/main/java/com/jsh/erp/datasource/entities/DepotExample.java new file mode 100644 index 00000000..f1108626 --- /dev/null +++ b/src/main/java/com/jsh/erp/datasource/entities/DepotExample.java @@ -0,0 +1,822 @@ +package com.jsh.erp.datasource.entities; + +import java.util.ArrayList; +import java.util.List; + +public class DepotExample { + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database table jsh_depot + * + * @mbggenerated + */ + protected String orderByClause; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database table jsh_depot + * + * @mbggenerated + */ + protected boolean distinct; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database table jsh_depot + * + * @mbggenerated + */ + protected List oredCriteria; + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_depot + * + * @mbggenerated + */ + public DepotExample() { + oredCriteria = new ArrayList(); + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_depot + * + * @mbggenerated + */ + public void setOrderByClause(String orderByClause) { + this.orderByClause = orderByClause; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_depot + * + * @mbggenerated + */ + public String getOrderByClause() { + return orderByClause; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_depot + * + * @mbggenerated + */ + public void setDistinct(boolean distinct) { + this.distinct = distinct; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_depot + * + * @mbggenerated + */ + public boolean isDistinct() { + return distinct; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_depot + * + * @mbggenerated + */ + public List getOredCriteria() { + return oredCriteria; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_depot + * + * @mbggenerated + */ + public void or(Criteria criteria) { + oredCriteria.add(criteria); + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_depot + * + * @mbggenerated + */ + public Criteria or() { + Criteria criteria = createCriteriaInternal(); + oredCriteria.add(criteria); + return criteria; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_depot + * + * @mbggenerated + */ + public Criteria createCriteria() { + Criteria criteria = createCriteriaInternal(); + if (oredCriteria.size() == 0) { + oredCriteria.add(criteria); + } + return criteria; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_depot + * + * @mbggenerated + */ + protected Criteria createCriteriaInternal() { + Criteria criteria = new Criteria(); + return criteria; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_depot + * + * @mbggenerated + */ + public void clear() { + oredCriteria.clear(); + orderByClause = null; + distinct = false; + } + + /** + * This class was generated by MyBatis Generator. + * This class corresponds to the database table jsh_depot + * + * @mbggenerated + */ + protected abstract static class GeneratedCriteria { + protected List criteria; + + protected GeneratedCriteria() { + super(); + criteria = new ArrayList(); + } + + public boolean isValid() { + return criteria.size() > 0; + } + + public List getAllCriteria() { + return criteria; + } + + public List getCriteria() { + return criteria; + } + + protected void addCriterion(String condition) { + if (condition == null) { + throw new RuntimeException("Value for condition cannot be null"); + } + criteria.add(new Criterion(condition)); + } + + protected void addCriterion(String condition, Object value, String property) { + if (value == null) { + throw new RuntimeException("Value for " + property + " cannot be null"); + } + criteria.add(new Criterion(condition, value)); + } + + protected void addCriterion(String condition, Object value1, Object value2, String property) { + if (value1 == null || value2 == null) { + throw new RuntimeException("Between values for " + property + " cannot be null"); + } + criteria.add(new Criterion(condition, value1, value2)); + } + + public Criteria andIdIsNull() { + addCriterion("id is null"); + return (Criteria) this; + } + + public Criteria andIdIsNotNull() { + addCriterion("id is not null"); + return (Criteria) this; + } + + public Criteria andIdEqualTo(Long value) { + addCriterion("id =", value, "id"); + return (Criteria) this; + } + + public Criteria andIdNotEqualTo(Long value) { + addCriterion("id <>", value, "id"); + return (Criteria) this; + } + + public Criteria andIdGreaterThan(Long value) { + addCriterion("id >", value, "id"); + return (Criteria) this; + } + + public Criteria andIdGreaterThanOrEqualTo(Long value) { + addCriterion("id >=", value, "id"); + return (Criteria) this; + } + + public Criteria andIdLessThan(Long value) { + addCriterion("id <", value, "id"); + return (Criteria) this; + } + + public Criteria andIdLessThanOrEqualTo(Long value) { + addCriterion("id <=", value, "id"); + return (Criteria) this; + } + + public Criteria andIdIn(List values) { + addCriterion("id in", values, "id"); + return (Criteria) this; + } + + public Criteria andIdNotIn(List values) { + addCriterion("id not in", values, "id"); + return (Criteria) this; + } + + public Criteria andIdBetween(Long value1, Long value2) { + addCriterion("id between", value1, value2, "id"); + return (Criteria) this; + } + + public Criteria andIdNotBetween(Long value1, Long value2) { + addCriterion("id not between", value1, value2, "id"); + return (Criteria) this; + } + + public Criteria andNameIsNull() { + addCriterion("name is null"); + return (Criteria) this; + } + + public Criteria andNameIsNotNull() { + addCriterion("name is not null"); + return (Criteria) this; + } + + public Criteria andNameEqualTo(String value) { + addCriterion("name =", value, "name"); + return (Criteria) this; + } + + public Criteria andNameNotEqualTo(String value) { + addCriterion("name <>", value, "name"); + return (Criteria) this; + } + + public Criteria andNameGreaterThan(String value) { + addCriterion("name >", value, "name"); + return (Criteria) this; + } + + public Criteria andNameGreaterThanOrEqualTo(String value) { + addCriterion("name >=", value, "name"); + return (Criteria) this; + } + + public Criteria andNameLessThan(String value) { + addCriterion("name <", value, "name"); + return (Criteria) this; + } + + public Criteria andNameLessThanOrEqualTo(String value) { + addCriterion("name <=", value, "name"); + return (Criteria) this; + } + + public Criteria andNameLike(String value) { + addCriterion("name like", value, "name"); + return (Criteria) this; + } + + public Criteria andNameNotLike(String value) { + addCriterion("name not like", value, "name"); + return (Criteria) this; + } + + public Criteria andNameIn(List values) { + addCriterion("name in", values, "name"); + return (Criteria) this; + } + + public Criteria andNameNotIn(List values) { + addCriterion("name not in", values, "name"); + return (Criteria) this; + } + + public Criteria andNameBetween(String value1, String value2) { + addCriterion("name between", value1, value2, "name"); + return (Criteria) this; + } + + public Criteria andNameNotBetween(String value1, String value2) { + addCriterion("name not between", value1, value2, "name"); + return (Criteria) this; + } + + public Criteria andAddressIsNull() { + addCriterion("address is null"); + return (Criteria) this; + } + + public Criteria andAddressIsNotNull() { + addCriterion("address is not null"); + return (Criteria) this; + } + + public Criteria andAddressEqualTo(String value) { + addCriterion("address =", value, "address"); + return (Criteria) this; + } + + public Criteria andAddressNotEqualTo(String value) { + addCriterion("address <>", value, "address"); + return (Criteria) this; + } + + public Criteria andAddressGreaterThan(String value) { + addCriterion("address >", value, "address"); + return (Criteria) this; + } + + public Criteria andAddressGreaterThanOrEqualTo(String value) { + addCriterion("address >=", value, "address"); + return (Criteria) this; + } + + public Criteria andAddressLessThan(String value) { + addCriterion("address <", value, "address"); + return (Criteria) this; + } + + public Criteria andAddressLessThanOrEqualTo(String value) { + addCriterion("address <=", value, "address"); + return (Criteria) this; + } + + public Criteria andAddressLike(String value) { + addCriterion("address like", value, "address"); + return (Criteria) this; + } + + public Criteria andAddressNotLike(String value) { + addCriterion("address not like", value, "address"); + return (Criteria) this; + } + + public Criteria andAddressIn(List values) { + addCriterion("address in", values, "address"); + return (Criteria) this; + } + + public Criteria andAddressNotIn(List values) { + addCriterion("address not in", values, "address"); + return (Criteria) this; + } + + public Criteria andAddressBetween(String value1, String value2) { + addCriterion("address between", value1, value2, "address"); + return (Criteria) this; + } + + public Criteria andAddressNotBetween(String value1, String value2) { + addCriterion("address not between", value1, value2, "address"); + return (Criteria) this; + } + + public Criteria andWarehousingIsNull() { + addCriterion("warehousing is null"); + return (Criteria) this; + } + + public Criteria andWarehousingIsNotNull() { + addCriterion("warehousing is not null"); + return (Criteria) this; + } + + public Criteria andWarehousingEqualTo(Double value) { + addCriterion("warehousing =", value, "warehousing"); + return (Criteria) this; + } + + public Criteria andWarehousingNotEqualTo(Double value) { + addCriterion("warehousing <>", value, "warehousing"); + return (Criteria) this; + } + + public Criteria andWarehousingGreaterThan(Double value) { + addCriterion("warehousing >", value, "warehousing"); + return (Criteria) this; + } + + public Criteria andWarehousingGreaterThanOrEqualTo(Double value) { + addCriterion("warehousing >=", value, "warehousing"); + return (Criteria) this; + } + + public Criteria andWarehousingLessThan(Double value) { + addCriterion("warehousing <", value, "warehousing"); + return (Criteria) this; + } + + public Criteria andWarehousingLessThanOrEqualTo(Double value) { + addCriterion("warehousing <=", value, "warehousing"); + return (Criteria) this; + } + + public Criteria andWarehousingIn(List values) { + addCriterion("warehousing in", values, "warehousing"); + return (Criteria) this; + } + + public Criteria andWarehousingNotIn(List values) { + addCriterion("warehousing not in", values, "warehousing"); + return (Criteria) this; + } + + public Criteria andWarehousingBetween(Double value1, Double value2) { + addCriterion("warehousing between", value1, value2, "warehousing"); + return (Criteria) this; + } + + public Criteria andWarehousingNotBetween(Double value1, Double value2) { + addCriterion("warehousing not between", value1, value2, "warehousing"); + return (Criteria) this; + } + + public Criteria andTruckageIsNull() { + addCriterion("truckage is null"); + return (Criteria) this; + } + + public Criteria andTruckageIsNotNull() { + addCriterion("truckage is not null"); + return (Criteria) this; + } + + public Criteria andTruckageEqualTo(Double value) { + addCriterion("truckage =", value, "truckage"); + return (Criteria) this; + } + + public Criteria andTruckageNotEqualTo(Double value) { + addCriterion("truckage <>", value, "truckage"); + return (Criteria) this; + } + + public Criteria andTruckageGreaterThan(Double value) { + addCriterion("truckage >", value, "truckage"); + return (Criteria) this; + } + + public Criteria andTruckageGreaterThanOrEqualTo(Double value) { + addCriterion("truckage >=", value, "truckage"); + return (Criteria) this; + } + + public Criteria andTruckageLessThan(Double value) { + addCriterion("truckage <", value, "truckage"); + return (Criteria) this; + } + + public Criteria andTruckageLessThanOrEqualTo(Double value) { + addCriterion("truckage <=", value, "truckage"); + return (Criteria) this; + } + + public Criteria andTruckageIn(List values) { + addCriterion("truckage in", values, "truckage"); + return (Criteria) this; + } + + public Criteria andTruckageNotIn(List values) { + addCriterion("truckage not in", values, "truckage"); + return (Criteria) this; + } + + public Criteria andTruckageBetween(Double value1, Double value2) { + addCriterion("truckage between", value1, value2, "truckage"); + return (Criteria) this; + } + + public Criteria andTruckageNotBetween(Double value1, Double value2) { + addCriterion("truckage not between", value1, value2, "truckage"); + return (Criteria) this; + } + + public Criteria andTypeIsNull() { + addCriterion("type is null"); + return (Criteria) this; + } + + public Criteria andTypeIsNotNull() { + addCriterion("type is not null"); + return (Criteria) this; + } + + public Criteria andTypeEqualTo(Integer value) { + addCriterion("type =", value, "type"); + return (Criteria) this; + } + + public Criteria andTypeNotEqualTo(Integer value) { + addCriterion("type <>", value, "type"); + return (Criteria) this; + } + + public Criteria andTypeGreaterThan(Integer value) { + addCriterion("type >", value, "type"); + return (Criteria) this; + } + + public Criteria andTypeGreaterThanOrEqualTo(Integer value) { + addCriterion("type >=", value, "type"); + return (Criteria) this; + } + + public Criteria andTypeLessThan(Integer value) { + addCriterion("type <", value, "type"); + return (Criteria) this; + } + + public Criteria andTypeLessThanOrEqualTo(Integer value) { + addCriterion("type <=", value, "type"); + return (Criteria) this; + } + + public Criteria andTypeIn(List values) { + addCriterion("type in", values, "type"); + return (Criteria) this; + } + + public Criteria andTypeNotIn(List values) { + addCriterion("type not in", values, "type"); + return (Criteria) this; + } + + public Criteria andTypeBetween(Integer value1, Integer value2) { + addCriterion("type between", value1, value2, "type"); + return (Criteria) this; + } + + public Criteria andTypeNotBetween(Integer value1, Integer value2) { + addCriterion("type not between", value1, value2, "type"); + return (Criteria) this; + } + + public Criteria andSortIsNull() { + addCriterion("sort is null"); + return (Criteria) this; + } + + public Criteria andSortIsNotNull() { + addCriterion("sort is not null"); + return (Criteria) this; + } + + public Criteria andSortEqualTo(String value) { + addCriterion("sort =", value, "sort"); + return (Criteria) this; + } + + public Criteria andSortNotEqualTo(String value) { + addCriterion("sort <>", value, "sort"); + return (Criteria) this; + } + + public Criteria andSortGreaterThan(String value) { + addCriterion("sort >", value, "sort"); + return (Criteria) this; + } + + public Criteria andSortGreaterThanOrEqualTo(String value) { + addCriterion("sort >=", value, "sort"); + return (Criteria) this; + } + + public Criteria andSortLessThan(String value) { + addCriterion("sort <", value, "sort"); + return (Criteria) this; + } + + public Criteria andSortLessThanOrEqualTo(String value) { + addCriterion("sort <=", value, "sort"); + return (Criteria) this; + } + + public Criteria andSortLike(String value) { + addCriterion("sort like", value, "sort"); + return (Criteria) this; + } + + public Criteria andSortNotLike(String value) { + addCriterion("sort not like", value, "sort"); + return (Criteria) this; + } + + public Criteria andSortIn(List values) { + addCriterion("sort in", values, "sort"); + return (Criteria) this; + } + + public Criteria andSortNotIn(List values) { + addCriterion("sort not in", values, "sort"); + return (Criteria) this; + } + + public Criteria andSortBetween(String value1, String value2) { + addCriterion("sort between", value1, value2, "sort"); + return (Criteria) this; + } + + public Criteria andSortNotBetween(String value1, String value2) { + addCriterion("sort not between", value1, value2, "sort"); + return (Criteria) this; + } + + public Criteria andRemarkIsNull() { + addCriterion("remark is null"); + return (Criteria) this; + } + + public Criteria andRemarkIsNotNull() { + addCriterion("remark is not null"); + return (Criteria) this; + } + + public Criteria andRemarkEqualTo(String value) { + addCriterion("remark =", value, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkNotEqualTo(String value) { + addCriterion("remark <>", value, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkGreaterThan(String value) { + addCriterion("remark >", value, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkGreaterThanOrEqualTo(String value) { + addCriterion("remark >=", value, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkLessThan(String value) { + addCriterion("remark <", value, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkLessThanOrEqualTo(String value) { + addCriterion("remark <=", value, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkLike(String value) { + addCriterion("remark like", value, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkNotLike(String value) { + addCriterion("remark not like", value, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkIn(List values) { + addCriterion("remark in", values, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkNotIn(List values) { + addCriterion("remark not in", values, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkBetween(String value1, String value2) { + addCriterion("remark between", value1, value2, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkNotBetween(String value1, String value2) { + addCriterion("remark not between", value1, value2, "remark"); + return (Criteria) this; + } + } + + /** + * This class was generated by MyBatis Generator. + * This class corresponds to the database table jsh_depot + * + * @mbggenerated do_not_delete_during_merge + */ + public static class Criteria extends GeneratedCriteria { + + protected Criteria() { + super(); + } + } + + /** + * This class was generated by MyBatis Generator. + * This class corresponds to the database table jsh_depot + * + * @mbggenerated + */ + public static class Criterion { + private String condition; + + private Object value; + + private Object secondValue; + + private boolean noValue; + + private boolean singleValue; + + private boolean betweenValue; + + private boolean listValue; + + private String typeHandler; + + public String getCondition() { + return condition; + } + + public Object getValue() { + return value; + } + + public Object getSecondValue() { + return secondValue; + } + + public boolean isNoValue() { + return noValue; + } + + public boolean isSingleValue() { + return singleValue; + } + + public boolean isBetweenValue() { + return betweenValue; + } + + public boolean isListValue() { + return listValue; + } + + public String getTypeHandler() { + return typeHandler; + } + + protected Criterion(String condition) { + super(); + this.condition = condition; + this.typeHandler = null; + this.noValue = true; + } + + protected Criterion(String condition, Object value, String typeHandler) { + super(); + this.condition = condition; + this.value = value; + this.typeHandler = typeHandler; + if (value instanceof List) { + this.listValue = true; + } else { + this.singleValue = true; + } + } + + protected Criterion(String condition, Object value) { + this(condition, value, null); + } + + protected Criterion(String condition, Object value, Object secondValue, String typeHandler) { + super(); + this.condition = condition; + this.value = value; + this.secondValue = secondValue; + this.typeHandler = typeHandler; + this.betweenValue = true; + } + + protected Criterion(String condition, Object value, Object secondValue) { + this(condition, value, secondValue, null); + } + } +} \ No newline at end of file diff --git a/src/main/java/com/jsh/erp/datasource/entities/DepotHead.java b/src/main/java/com/jsh/erp/datasource/entities/DepotHead.java new file mode 100644 index 00000000..9799a403 --- /dev/null +++ b/src/main/java/com/jsh/erp/datasource/entities/DepotHead.java @@ -0,0 +1,901 @@ +package com.jsh.erp.datasource.entities; + +import java.util.Date; + +public class DepotHead { + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database column jsh_depothead.Id + * + * @mbggenerated + */ + private Long id; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database column jsh_depothead.Type + * + * @mbggenerated + */ + private String type; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database column jsh_depothead.SubType + * + * @mbggenerated + */ + private String subtype; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database column jsh_depothead.ProjectId + * + * @mbggenerated + */ + private Long projectid; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database column jsh_depothead.DefaultNumber + * + * @mbggenerated + */ + private String defaultnumber; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database column jsh_depothead.Number + * + * @mbggenerated + */ + private String number; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database column jsh_depothead.OperPersonName + * + * @mbggenerated + */ + private String operpersonname; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database column jsh_depothead.CreateTime + * + * @mbggenerated + */ + private Date createtime; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database column jsh_depothead.OperTime + * + * @mbggenerated + */ + private Date opertime; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database column jsh_depothead.OrganId + * + * @mbggenerated + */ + private Long organid; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database column jsh_depothead.HandsPersonId + * + * @mbggenerated + */ + private Long handspersonid; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database column jsh_depothead.AccountId + * + * @mbggenerated + */ + private Long accountid; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database column jsh_depothead.ChangeAmount + * + * @mbggenerated + */ + private Double changeamount; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database column jsh_depothead.AllocationProjectId + * + * @mbggenerated + */ + private Long allocationprojectid; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database column jsh_depothead.TotalPrice + * + * @mbggenerated + */ + private Double totalprice; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database column jsh_depothead.PayType + * + * @mbggenerated + */ + private String paytype; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database column jsh_depothead.Remark + * + * @mbggenerated + */ + private String remark; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database column jsh_depothead.Salesman + * + * @mbggenerated + */ + private String salesman; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database column jsh_depothead.AccountIdList + * + * @mbggenerated + */ + private String accountidlist; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database column jsh_depothead.AccountMoneyList + * + * @mbggenerated + */ + private String accountmoneylist; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database column jsh_depothead.Discount + * + * @mbggenerated + */ + private Double discount; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database column jsh_depothead.DiscountMoney + * + * @mbggenerated + */ + private Double discountmoney; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database column jsh_depothead.DiscountLastMoney + * + * @mbggenerated + */ + private Double discountlastmoney; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database column jsh_depothead.OtherMoney + * + * @mbggenerated + */ + private Double othermoney; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database column jsh_depothead.OtherMoneyList + * + * @mbggenerated + */ + private String othermoneylist; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database column jsh_depothead.OtherMoneyItem + * + * @mbggenerated + */ + private String othermoneyitem; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database column jsh_depothead.AccountDay + * + * @mbggenerated + */ + private Integer accountday; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database column jsh_depothead.Status + * + * @mbggenerated + */ + private Boolean status; + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column jsh_depothead.Id + * + * @return the value of jsh_depothead.Id + * + * @mbggenerated + */ + public Long getId() { + return id; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column jsh_depothead.Id + * + * @param id the value for jsh_depothead.Id + * + * @mbggenerated + */ + public void setId(Long id) { + this.id = id; + } + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column jsh_depothead.Type + * + * @return the value of jsh_depothead.Type + * + * @mbggenerated + */ + public String getType() { + return type; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column jsh_depothead.Type + * + * @param type the value for jsh_depothead.Type + * + * @mbggenerated + */ + public void setType(String type) { + this.type = type == null ? null : type.trim(); + } + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column jsh_depothead.SubType + * + * @return the value of jsh_depothead.SubType + * + * @mbggenerated + */ + public String getSubtype() { + return subtype; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column jsh_depothead.SubType + * + * @param subtype the value for jsh_depothead.SubType + * + * @mbggenerated + */ + public void setSubtype(String subtype) { + this.subtype = subtype == null ? null : subtype.trim(); + } + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column jsh_depothead.ProjectId + * + * @return the value of jsh_depothead.ProjectId + * + * @mbggenerated + */ + public Long getProjectid() { + return projectid; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column jsh_depothead.ProjectId + * + * @param projectid the value for jsh_depothead.ProjectId + * + * @mbggenerated + */ + public void setProjectid(Long projectid) { + this.projectid = projectid; + } + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column jsh_depothead.DefaultNumber + * + * @return the value of jsh_depothead.DefaultNumber + * + * @mbggenerated + */ + public String getDefaultnumber() { + return defaultnumber; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column jsh_depothead.DefaultNumber + * + * @param defaultnumber the value for jsh_depothead.DefaultNumber + * + * @mbggenerated + */ + public void setDefaultnumber(String defaultnumber) { + this.defaultnumber = defaultnumber == null ? null : defaultnumber.trim(); + } + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column jsh_depothead.Number + * + * @return the value of jsh_depothead.Number + * + * @mbggenerated + */ + public String getNumber() { + return number; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column jsh_depothead.Number + * + * @param number the value for jsh_depothead.Number + * + * @mbggenerated + */ + public void setNumber(String number) { + this.number = number == null ? null : number.trim(); + } + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column jsh_depothead.OperPersonName + * + * @return the value of jsh_depothead.OperPersonName + * + * @mbggenerated + */ + public String getOperpersonname() { + return operpersonname; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column jsh_depothead.OperPersonName + * + * @param operpersonname the value for jsh_depothead.OperPersonName + * + * @mbggenerated + */ + public void setOperpersonname(String operpersonname) { + this.operpersonname = operpersonname == null ? null : operpersonname.trim(); + } + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column jsh_depothead.CreateTime + * + * @return the value of jsh_depothead.CreateTime + * + * @mbggenerated + */ + public Date getCreatetime() { + return createtime; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column jsh_depothead.CreateTime + * + * @param createtime the value for jsh_depothead.CreateTime + * + * @mbggenerated + */ + public void setCreatetime(Date createtime) { + this.createtime = createtime; + } + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column jsh_depothead.OperTime + * + * @return the value of jsh_depothead.OperTime + * + * @mbggenerated + */ + public Date getOpertime() { + return opertime; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column jsh_depothead.OperTime + * + * @param opertime the value for jsh_depothead.OperTime + * + * @mbggenerated + */ + public void setOpertime(Date opertime) { + this.opertime = opertime; + } + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column jsh_depothead.OrganId + * + * @return the value of jsh_depothead.OrganId + * + * @mbggenerated + */ + public Long getOrganid() { + return organid; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column jsh_depothead.OrganId + * + * @param organid the value for jsh_depothead.OrganId + * + * @mbggenerated + */ + public void setOrganid(Long organid) { + this.organid = organid; + } + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column jsh_depothead.HandsPersonId + * + * @return the value of jsh_depothead.HandsPersonId + * + * @mbggenerated + */ + public Long getHandspersonid() { + return handspersonid; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column jsh_depothead.HandsPersonId + * + * @param handspersonid the value for jsh_depothead.HandsPersonId + * + * @mbggenerated + */ + public void setHandspersonid(Long handspersonid) { + this.handspersonid = handspersonid; + } + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column jsh_depothead.AccountId + * + * @return the value of jsh_depothead.AccountId + * + * @mbggenerated + */ + public Long getAccountid() { + return accountid; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column jsh_depothead.AccountId + * + * @param accountid the value for jsh_depothead.AccountId + * + * @mbggenerated + */ + public void setAccountid(Long accountid) { + this.accountid = accountid; + } + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column jsh_depothead.ChangeAmount + * + * @return the value of jsh_depothead.ChangeAmount + * + * @mbggenerated + */ + public Double getChangeamount() { + return changeamount; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column jsh_depothead.ChangeAmount + * + * @param changeamount the value for jsh_depothead.ChangeAmount + * + * @mbggenerated + */ + public void setChangeamount(Double changeamount) { + this.changeamount = changeamount; + } + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column jsh_depothead.AllocationProjectId + * + * @return the value of jsh_depothead.AllocationProjectId + * + * @mbggenerated + */ + public Long getAllocationprojectid() { + return allocationprojectid; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column jsh_depothead.AllocationProjectId + * + * @param allocationprojectid the value for jsh_depothead.AllocationProjectId + * + * @mbggenerated + */ + public void setAllocationprojectid(Long allocationprojectid) { + this.allocationprojectid = allocationprojectid; + } + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column jsh_depothead.TotalPrice + * + * @return the value of jsh_depothead.TotalPrice + * + * @mbggenerated + */ + public Double getTotalprice() { + return totalprice; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column jsh_depothead.TotalPrice + * + * @param totalprice the value for jsh_depothead.TotalPrice + * + * @mbggenerated + */ + public void setTotalprice(Double totalprice) { + this.totalprice = totalprice; + } + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column jsh_depothead.PayType + * + * @return the value of jsh_depothead.PayType + * + * @mbggenerated + */ + public String getPaytype() { + return paytype; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column jsh_depothead.PayType + * + * @param paytype the value for jsh_depothead.PayType + * + * @mbggenerated + */ + public void setPaytype(String paytype) { + this.paytype = paytype == null ? null : paytype.trim(); + } + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column jsh_depothead.Remark + * + * @return the value of jsh_depothead.Remark + * + * @mbggenerated + */ + public String getRemark() { + return remark; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column jsh_depothead.Remark + * + * @param remark the value for jsh_depothead.Remark + * + * @mbggenerated + */ + public void setRemark(String remark) { + this.remark = remark == null ? null : remark.trim(); + } + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column jsh_depothead.Salesman + * + * @return the value of jsh_depothead.Salesman + * + * @mbggenerated + */ + public String getSalesman() { + return salesman; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column jsh_depothead.Salesman + * + * @param salesman the value for jsh_depothead.Salesman + * + * @mbggenerated + */ + public void setSalesman(String salesman) { + this.salesman = salesman == null ? null : salesman.trim(); + } + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column jsh_depothead.AccountIdList + * + * @return the value of jsh_depothead.AccountIdList + * + * @mbggenerated + */ + public String getAccountidlist() { + return accountidlist; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column jsh_depothead.AccountIdList + * + * @param accountidlist the value for jsh_depothead.AccountIdList + * + * @mbggenerated + */ + public void setAccountidlist(String accountidlist) { + this.accountidlist = accountidlist == null ? null : accountidlist.trim(); + } + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column jsh_depothead.AccountMoneyList + * + * @return the value of jsh_depothead.AccountMoneyList + * + * @mbggenerated + */ + public String getAccountmoneylist() { + return accountmoneylist; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column jsh_depothead.AccountMoneyList + * + * @param accountmoneylist the value for jsh_depothead.AccountMoneyList + * + * @mbggenerated + */ + public void setAccountmoneylist(String accountmoneylist) { + this.accountmoneylist = accountmoneylist == null ? null : accountmoneylist.trim(); + } + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column jsh_depothead.Discount + * + * @return the value of jsh_depothead.Discount + * + * @mbggenerated + */ + public Double getDiscount() { + return discount; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column jsh_depothead.Discount + * + * @param discount the value for jsh_depothead.Discount + * + * @mbggenerated + */ + public void setDiscount(Double discount) { + this.discount = discount; + } + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column jsh_depothead.DiscountMoney + * + * @return the value of jsh_depothead.DiscountMoney + * + * @mbggenerated + */ + public Double getDiscountmoney() { + return discountmoney; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column jsh_depothead.DiscountMoney + * + * @param discountmoney the value for jsh_depothead.DiscountMoney + * + * @mbggenerated + */ + public void setDiscountmoney(Double discountmoney) { + this.discountmoney = discountmoney; + } + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column jsh_depothead.DiscountLastMoney + * + * @return the value of jsh_depothead.DiscountLastMoney + * + * @mbggenerated + */ + public Double getDiscountlastmoney() { + return discountlastmoney; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column jsh_depothead.DiscountLastMoney + * + * @param discountlastmoney the value for jsh_depothead.DiscountLastMoney + * + * @mbggenerated + */ + public void setDiscountlastmoney(Double discountlastmoney) { + this.discountlastmoney = discountlastmoney; + } + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column jsh_depothead.OtherMoney + * + * @return the value of jsh_depothead.OtherMoney + * + * @mbggenerated + */ + public Double getOthermoney() { + return othermoney; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column jsh_depothead.OtherMoney + * + * @param othermoney the value for jsh_depothead.OtherMoney + * + * @mbggenerated + */ + public void setOthermoney(Double othermoney) { + this.othermoney = othermoney; + } + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column jsh_depothead.OtherMoneyList + * + * @return the value of jsh_depothead.OtherMoneyList + * + * @mbggenerated + */ + public String getOthermoneylist() { + return othermoneylist; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column jsh_depothead.OtherMoneyList + * + * @param othermoneylist the value for jsh_depothead.OtherMoneyList + * + * @mbggenerated + */ + public void setOthermoneylist(String othermoneylist) { + this.othermoneylist = othermoneylist == null ? null : othermoneylist.trim(); + } + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column jsh_depothead.OtherMoneyItem + * + * @return the value of jsh_depothead.OtherMoneyItem + * + * @mbggenerated + */ + public String getOthermoneyitem() { + return othermoneyitem; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column jsh_depothead.OtherMoneyItem + * + * @param othermoneyitem the value for jsh_depothead.OtherMoneyItem + * + * @mbggenerated + */ + public void setOthermoneyitem(String othermoneyitem) { + this.othermoneyitem = othermoneyitem == null ? null : othermoneyitem.trim(); + } + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column jsh_depothead.AccountDay + * + * @return the value of jsh_depothead.AccountDay + * + * @mbggenerated + */ + public Integer getAccountday() { + return accountday; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column jsh_depothead.AccountDay + * + * @param accountday the value for jsh_depothead.AccountDay + * + * @mbggenerated + */ + public void setAccountday(Integer accountday) { + this.accountday = accountday; + } + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column jsh_depothead.Status + * + * @return the value of jsh_depothead.Status + * + * @mbggenerated + */ + public Boolean getStatus() { + return status; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column jsh_depothead.Status + * + * @param status the value for jsh_depothead.Status + * + * @mbggenerated + */ + public void setStatus(Boolean status) { + this.status = status; + } +} \ No newline at end of file diff --git a/src/main/java/com/jsh/erp/datasource/entities/DepotHeadExample.java b/src/main/java/com/jsh/erp/datasource/entities/DepotHeadExample.java new file mode 100644 index 00000000..416e8aa7 --- /dev/null +++ b/src/main/java/com/jsh/erp/datasource/entities/DepotHeadExample.java @@ -0,0 +1,2103 @@ +package com.jsh.erp.datasource.entities; + +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +public class DepotHeadExample { + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database table jsh_depothead + * + * @mbggenerated + */ + protected String orderByClause; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database table jsh_depothead + * + * @mbggenerated + */ + protected boolean distinct; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database table jsh_depothead + * + * @mbggenerated + */ + protected List oredCriteria; + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_depothead + * + * @mbggenerated + */ + public DepotHeadExample() { + oredCriteria = new ArrayList(); + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_depothead + * + * @mbggenerated + */ + public void setOrderByClause(String orderByClause) { + this.orderByClause = orderByClause; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_depothead + * + * @mbggenerated + */ + public String getOrderByClause() { + return orderByClause; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_depothead + * + * @mbggenerated + */ + public void setDistinct(boolean distinct) { + this.distinct = distinct; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_depothead + * + * @mbggenerated + */ + public boolean isDistinct() { + return distinct; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_depothead + * + * @mbggenerated + */ + public List getOredCriteria() { + return oredCriteria; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_depothead + * + * @mbggenerated + */ + public void or(Criteria criteria) { + oredCriteria.add(criteria); + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_depothead + * + * @mbggenerated + */ + public Criteria or() { + Criteria criteria = createCriteriaInternal(); + oredCriteria.add(criteria); + return criteria; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_depothead + * + * @mbggenerated + */ + public Criteria createCriteria() { + Criteria criteria = createCriteriaInternal(); + if (oredCriteria.size() == 0) { + oredCriteria.add(criteria); + } + return criteria; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_depothead + * + * @mbggenerated + */ + protected Criteria createCriteriaInternal() { + Criteria criteria = new Criteria(); + return criteria; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_depothead + * + * @mbggenerated + */ + public void clear() { + oredCriteria.clear(); + orderByClause = null; + distinct = false; + } + + /** + * This class was generated by MyBatis Generator. + * This class corresponds to the database table jsh_depothead + * + * @mbggenerated + */ + protected abstract static class GeneratedCriteria { + protected List criteria; + + protected GeneratedCriteria() { + super(); + criteria = new ArrayList(); + } + + public boolean isValid() { + return criteria.size() > 0; + } + + public List getAllCriteria() { + return criteria; + } + + public List getCriteria() { + return criteria; + } + + protected void addCriterion(String condition) { + if (condition == null) { + throw new RuntimeException("Value for condition cannot be null"); + } + criteria.add(new Criterion(condition)); + } + + protected void addCriterion(String condition, Object value, String property) { + if (value == null) { + throw new RuntimeException("Value for " + property + " cannot be null"); + } + criteria.add(new Criterion(condition, value)); + } + + protected void addCriterion(String condition, Object value1, Object value2, String property) { + if (value1 == null || value2 == null) { + throw new RuntimeException("Between values for " + property + " cannot be null"); + } + criteria.add(new Criterion(condition, value1, value2)); + } + + public Criteria andIdIsNull() { + addCriterion("Id is null"); + return (Criteria) this; + } + + public Criteria andIdIsNotNull() { + addCriterion("Id is not null"); + return (Criteria) this; + } + + public Criteria andIdEqualTo(Long value) { + addCriterion("Id =", value, "id"); + return (Criteria) this; + } + + public Criteria andIdNotEqualTo(Long value) { + addCriterion("Id <>", value, "id"); + return (Criteria) this; + } + + public Criteria andIdGreaterThan(Long value) { + addCriterion("Id >", value, "id"); + return (Criteria) this; + } + + public Criteria andIdGreaterThanOrEqualTo(Long value) { + addCriterion("Id >=", value, "id"); + return (Criteria) this; + } + + public Criteria andIdLessThan(Long value) { + addCriterion("Id <", value, "id"); + return (Criteria) this; + } + + public Criteria andIdLessThanOrEqualTo(Long value) { + addCriterion("Id <=", value, "id"); + return (Criteria) this; + } + + public Criteria andIdIn(List values) { + addCriterion("Id in", values, "id"); + return (Criteria) this; + } + + public Criteria andIdNotIn(List values) { + addCriterion("Id not in", values, "id"); + return (Criteria) this; + } + + public Criteria andIdBetween(Long value1, Long value2) { + addCriterion("Id between", value1, value2, "id"); + return (Criteria) this; + } + + public Criteria andIdNotBetween(Long value1, Long value2) { + addCriterion("Id not between", value1, value2, "id"); + return (Criteria) this; + } + + public Criteria andTypeIsNull() { + addCriterion("Type is null"); + return (Criteria) this; + } + + public Criteria andTypeIsNotNull() { + addCriterion("Type is not null"); + return (Criteria) this; + } + + public Criteria andTypeEqualTo(String value) { + addCriterion("Type =", value, "type"); + return (Criteria) this; + } + + public Criteria andTypeNotEqualTo(String value) { + addCriterion("Type <>", value, "type"); + return (Criteria) this; + } + + public Criteria andTypeGreaterThan(String value) { + addCriterion("Type >", value, "type"); + return (Criteria) this; + } + + public Criteria andTypeGreaterThanOrEqualTo(String value) { + addCriterion("Type >=", value, "type"); + return (Criteria) this; + } + + public Criteria andTypeLessThan(String value) { + addCriterion("Type <", value, "type"); + return (Criteria) this; + } + + public Criteria andTypeLessThanOrEqualTo(String value) { + addCriterion("Type <=", value, "type"); + return (Criteria) this; + } + + public Criteria andTypeLike(String value) { + addCriterion("Type like", value, "type"); + return (Criteria) this; + } + + public Criteria andTypeNotLike(String value) { + addCriterion("Type not like", value, "type"); + return (Criteria) this; + } + + public Criteria andTypeIn(List values) { + addCriterion("Type in", values, "type"); + return (Criteria) this; + } + + public Criteria andTypeNotIn(List values) { + addCriterion("Type not in", values, "type"); + return (Criteria) this; + } + + public Criteria andTypeBetween(String value1, String value2) { + addCriterion("Type between", value1, value2, "type"); + return (Criteria) this; + } + + public Criteria andTypeNotBetween(String value1, String value2) { + addCriterion("Type not between", value1, value2, "type"); + return (Criteria) this; + } + + public Criteria andSubtypeIsNull() { + addCriterion("SubType is null"); + return (Criteria) this; + } + + public Criteria andSubtypeIsNotNull() { + addCriterion("SubType is not null"); + return (Criteria) this; + } + + public Criteria andSubtypeEqualTo(String value) { + addCriterion("SubType =", value, "subtype"); + return (Criteria) this; + } + + public Criteria andSubtypeNotEqualTo(String value) { + addCriterion("SubType <>", value, "subtype"); + return (Criteria) this; + } + + public Criteria andSubtypeGreaterThan(String value) { + addCriterion("SubType >", value, "subtype"); + return (Criteria) this; + } + + public Criteria andSubtypeGreaterThanOrEqualTo(String value) { + addCriterion("SubType >=", value, "subtype"); + return (Criteria) this; + } + + public Criteria andSubtypeLessThan(String value) { + addCriterion("SubType <", value, "subtype"); + return (Criteria) this; + } + + public Criteria andSubtypeLessThanOrEqualTo(String value) { + addCriterion("SubType <=", value, "subtype"); + return (Criteria) this; + } + + public Criteria andSubtypeLike(String value) { + addCriterion("SubType like", value, "subtype"); + return (Criteria) this; + } + + public Criteria andSubtypeNotLike(String value) { + addCriterion("SubType not like", value, "subtype"); + return (Criteria) this; + } + + public Criteria andSubtypeIn(List values) { + addCriterion("SubType in", values, "subtype"); + return (Criteria) this; + } + + public Criteria andSubtypeNotIn(List values) { + addCriterion("SubType not in", values, "subtype"); + return (Criteria) this; + } + + public Criteria andSubtypeBetween(String value1, String value2) { + addCriterion("SubType between", value1, value2, "subtype"); + return (Criteria) this; + } + + public Criteria andSubtypeNotBetween(String value1, String value2) { + addCriterion("SubType not between", value1, value2, "subtype"); + return (Criteria) this; + } + + public Criteria andProjectidIsNull() { + addCriterion("ProjectId is null"); + return (Criteria) this; + } + + public Criteria andProjectidIsNotNull() { + addCriterion("ProjectId is not null"); + return (Criteria) this; + } + + public Criteria andProjectidEqualTo(Long value) { + addCriterion("ProjectId =", value, "projectid"); + return (Criteria) this; + } + + public Criteria andProjectidNotEqualTo(Long value) { + addCriterion("ProjectId <>", value, "projectid"); + return (Criteria) this; + } + + public Criteria andProjectidGreaterThan(Long value) { + addCriterion("ProjectId >", value, "projectid"); + return (Criteria) this; + } + + public Criteria andProjectidGreaterThanOrEqualTo(Long value) { + addCriterion("ProjectId >=", value, "projectid"); + return (Criteria) this; + } + + public Criteria andProjectidLessThan(Long value) { + addCriterion("ProjectId <", value, "projectid"); + return (Criteria) this; + } + + public Criteria andProjectidLessThanOrEqualTo(Long value) { + addCriterion("ProjectId <=", value, "projectid"); + return (Criteria) this; + } + + public Criteria andProjectidIn(List values) { + addCriterion("ProjectId in", values, "projectid"); + return (Criteria) this; + } + + public Criteria andProjectidNotIn(List values) { + addCriterion("ProjectId not in", values, "projectid"); + return (Criteria) this; + } + + public Criteria andProjectidBetween(Long value1, Long value2) { + addCriterion("ProjectId between", value1, value2, "projectid"); + return (Criteria) this; + } + + public Criteria andProjectidNotBetween(Long value1, Long value2) { + addCriterion("ProjectId not between", value1, value2, "projectid"); + return (Criteria) this; + } + + public Criteria andDefaultnumberIsNull() { + addCriterion("DefaultNumber is null"); + return (Criteria) this; + } + + public Criteria andDefaultnumberIsNotNull() { + addCriterion("DefaultNumber is not null"); + return (Criteria) this; + } + + public Criteria andDefaultnumberEqualTo(String value) { + addCriterion("DefaultNumber =", value, "defaultnumber"); + return (Criteria) this; + } + + public Criteria andDefaultnumberNotEqualTo(String value) { + addCriterion("DefaultNumber <>", value, "defaultnumber"); + return (Criteria) this; + } + + public Criteria andDefaultnumberGreaterThan(String value) { + addCriterion("DefaultNumber >", value, "defaultnumber"); + return (Criteria) this; + } + + public Criteria andDefaultnumberGreaterThanOrEqualTo(String value) { + addCriterion("DefaultNumber >=", value, "defaultnumber"); + return (Criteria) this; + } + + public Criteria andDefaultnumberLessThan(String value) { + addCriterion("DefaultNumber <", value, "defaultnumber"); + return (Criteria) this; + } + + public Criteria andDefaultnumberLessThanOrEqualTo(String value) { + addCriterion("DefaultNumber <=", value, "defaultnumber"); + return (Criteria) this; + } + + public Criteria andDefaultnumberLike(String value) { + addCriterion("DefaultNumber like", value, "defaultnumber"); + return (Criteria) this; + } + + public Criteria andDefaultnumberNotLike(String value) { + addCriterion("DefaultNumber not like", value, "defaultnumber"); + return (Criteria) this; + } + + public Criteria andDefaultnumberIn(List values) { + addCriterion("DefaultNumber in", values, "defaultnumber"); + return (Criteria) this; + } + + public Criteria andDefaultnumberNotIn(List values) { + addCriterion("DefaultNumber not in", values, "defaultnumber"); + return (Criteria) this; + } + + public Criteria andDefaultnumberBetween(String value1, String value2) { + addCriterion("DefaultNumber between", value1, value2, "defaultnumber"); + return (Criteria) this; + } + + public Criteria andDefaultnumberNotBetween(String value1, String value2) { + addCriterion("DefaultNumber not between", value1, value2, "defaultnumber"); + return (Criteria) this; + } + + public Criteria andNumberIsNull() { + addCriterion("Number is null"); + return (Criteria) this; + } + + public Criteria andNumberIsNotNull() { + addCriterion("Number is not null"); + return (Criteria) this; + } + + public Criteria andNumberEqualTo(String value) { + addCriterion("Number =", value, "number"); + return (Criteria) this; + } + + public Criteria andNumberNotEqualTo(String value) { + addCriterion("Number <>", value, "number"); + return (Criteria) this; + } + + public Criteria andNumberGreaterThan(String value) { + addCriterion("Number >", value, "number"); + return (Criteria) this; + } + + public Criteria andNumberGreaterThanOrEqualTo(String value) { + addCriterion("Number >=", value, "number"); + return (Criteria) this; + } + + public Criteria andNumberLessThan(String value) { + addCriterion("Number <", value, "number"); + return (Criteria) this; + } + + public Criteria andNumberLessThanOrEqualTo(String value) { + addCriterion("Number <=", value, "number"); + return (Criteria) this; + } + + public Criteria andNumberLike(String value) { + addCriterion("Number like", value, "number"); + return (Criteria) this; + } + + public Criteria andNumberNotLike(String value) { + addCriterion("Number not like", value, "number"); + return (Criteria) this; + } + + public Criteria andNumberIn(List values) { + addCriterion("Number in", values, "number"); + return (Criteria) this; + } + + public Criteria andNumberNotIn(List values) { + addCriterion("Number not in", values, "number"); + return (Criteria) this; + } + + public Criteria andNumberBetween(String value1, String value2) { + addCriterion("Number between", value1, value2, "number"); + return (Criteria) this; + } + + public Criteria andNumberNotBetween(String value1, String value2) { + addCriterion("Number not between", value1, value2, "number"); + return (Criteria) this; + } + + public Criteria andOperpersonnameIsNull() { + addCriterion("OperPersonName is null"); + return (Criteria) this; + } + + public Criteria andOperpersonnameIsNotNull() { + addCriterion("OperPersonName is not null"); + return (Criteria) this; + } + + public Criteria andOperpersonnameEqualTo(String value) { + addCriterion("OperPersonName =", value, "operpersonname"); + return (Criteria) this; + } + + public Criteria andOperpersonnameNotEqualTo(String value) { + addCriterion("OperPersonName <>", value, "operpersonname"); + return (Criteria) this; + } + + public Criteria andOperpersonnameGreaterThan(String value) { + addCriterion("OperPersonName >", value, "operpersonname"); + return (Criteria) this; + } + + public Criteria andOperpersonnameGreaterThanOrEqualTo(String value) { + addCriterion("OperPersonName >=", value, "operpersonname"); + return (Criteria) this; + } + + public Criteria andOperpersonnameLessThan(String value) { + addCriterion("OperPersonName <", value, "operpersonname"); + return (Criteria) this; + } + + public Criteria andOperpersonnameLessThanOrEqualTo(String value) { + addCriterion("OperPersonName <=", value, "operpersonname"); + return (Criteria) this; + } + + public Criteria andOperpersonnameLike(String value) { + addCriterion("OperPersonName like", value, "operpersonname"); + return (Criteria) this; + } + + public Criteria andOperpersonnameNotLike(String value) { + addCriterion("OperPersonName not like", value, "operpersonname"); + return (Criteria) this; + } + + public Criteria andOperpersonnameIn(List values) { + addCriterion("OperPersonName in", values, "operpersonname"); + return (Criteria) this; + } + + public Criteria andOperpersonnameNotIn(List values) { + addCriterion("OperPersonName not in", values, "operpersonname"); + return (Criteria) this; + } + + public Criteria andOperpersonnameBetween(String value1, String value2) { + addCriterion("OperPersonName between", value1, value2, "operpersonname"); + return (Criteria) this; + } + + public Criteria andOperpersonnameNotBetween(String value1, String value2) { + addCriterion("OperPersonName not between", value1, value2, "operpersonname"); + return (Criteria) this; + } + + public Criteria andCreatetimeIsNull() { + addCriterion("CreateTime is null"); + return (Criteria) this; + } + + public Criteria andCreatetimeIsNotNull() { + addCriterion("CreateTime is not null"); + return (Criteria) this; + } + + public Criteria andCreatetimeEqualTo(Date value) { + addCriterion("CreateTime =", value, "createtime"); + return (Criteria) this; + } + + public Criteria andCreatetimeNotEqualTo(Date value) { + addCriterion("CreateTime <>", value, "createtime"); + return (Criteria) this; + } + + public Criteria andCreatetimeGreaterThan(Date value) { + addCriterion("CreateTime >", value, "createtime"); + return (Criteria) this; + } + + public Criteria andCreatetimeGreaterThanOrEqualTo(Date value) { + addCriterion("CreateTime >=", value, "createtime"); + return (Criteria) this; + } + + public Criteria andCreatetimeLessThan(Date value) { + addCriterion("CreateTime <", value, "createtime"); + return (Criteria) this; + } + + public Criteria andCreatetimeLessThanOrEqualTo(Date value) { + addCriterion("CreateTime <=", value, "createtime"); + return (Criteria) this; + } + + public Criteria andCreatetimeIn(List values) { + addCriterion("CreateTime in", values, "createtime"); + return (Criteria) this; + } + + public Criteria andCreatetimeNotIn(List values) { + addCriterion("CreateTime not in", values, "createtime"); + return (Criteria) this; + } + + public Criteria andCreatetimeBetween(Date value1, Date value2) { + addCriterion("CreateTime between", value1, value2, "createtime"); + return (Criteria) this; + } + + public Criteria andCreatetimeNotBetween(Date value1, Date value2) { + addCriterion("CreateTime not between", value1, value2, "createtime"); + return (Criteria) this; + } + + public Criteria andOpertimeIsNull() { + addCriterion("OperTime is null"); + return (Criteria) this; + } + + public Criteria andOpertimeIsNotNull() { + addCriterion("OperTime is not null"); + return (Criteria) this; + } + + public Criteria andOpertimeEqualTo(Date value) { + addCriterion("OperTime =", value, "opertime"); + return (Criteria) this; + } + + public Criteria andOpertimeNotEqualTo(Date value) { + addCriterion("OperTime <>", value, "opertime"); + return (Criteria) this; + } + + public Criteria andOpertimeGreaterThan(Date value) { + addCriterion("OperTime >", value, "opertime"); + return (Criteria) this; + } + + public Criteria andOpertimeGreaterThanOrEqualTo(Date value) { + addCriterion("OperTime >=", value, "opertime"); + return (Criteria) this; + } + + public Criteria andOpertimeLessThan(Date value) { + addCriterion("OperTime <", value, "opertime"); + return (Criteria) this; + } + + public Criteria andOpertimeLessThanOrEqualTo(Date value) { + addCriterion("OperTime <=", value, "opertime"); + return (Criteria) this; + } + + public Criteria andOpertimeIn(List values) { + addCriterion("OperTime in", values, "opertime"); + return (Criteria) this; + } + + public Criteria andOpertimeNotIn(List values) { + addCriterion("OperTime not in", values, "opertime"); + return (Criteria) this; + } + + public Criteria andOpertimeBetween(Date value1, Date value2) { + addCriterion("OperTime between", value1, value2, "opertime"); + return (Criteria) this; + } + + public Criteria andOpertimeNotBetween(Date value1, Date value2) { + addCriterion("OperTime not between", value1, value2, "opertime"); + return (Criteria) this; + } + + public Criteria andOrganidIsNull() { + addCriterion("OrganId is null"); + return (Criteria) this; + } + + public Criteria andOrganidIsNotNull() { + addCriterion("OrganId is not null"); + return (Criteria) this; + } + + public Criteria andOrganidEqualTo(Long value) { + addCriterion("OrganId =", value, "organid"); + return (Criteria) this; + } + + public Criteria andOrganidNotEqualTo(Long value) { + addCriterion("OrganId <>", value, "organid"); + return (Criteria) this; + } + + public Criteria andOrganidGreaterThan(Long value) { + addCriterion("OrganId >", value, "organid"); + return (Criteria) this; + } + + public Criteria andOrganidGreaterThanOrEqualTo(Long value) { + addCriterion("OrganId >=", value, "organid"); + return (Criteria) this; + } + + public Criteria andOrganidLessThan(Long value) { + addCriterion("OrganId <", value, "organid"); + return (Criteria) this; + } + + public Criteria andOrganidLessThanOrEqualTo(Long value) { + addCriterion("OrganId <=", value, "organid"); + return (Criteria) this; + } + + public Criteria andOrganidIn(List values) { + addCriterion("OrganId in", values, "organid"); + return (Criteria) this; + } + + public Criteria andOrganidNotIn(List values) { + addCriterion("OrganId not in", values, "organid"); + return (Criteria) this; + } + + public Criteria andOrganidBetween(Long value1, Long value2) { + addCriterion("OrganId between", value1, value2, "organid"); + return (Criteria) this; + } + + public Criteria andOrganidNotBetween(Long value1, Long value2) { + addCriterion("OrganId not between", value1, value2, "organid"); + return (Criteria) this; + } + + public Criteria andHandspersonidIsNull() { + addCriterion("HandsPersonId is null"); + return (Criteria) this; + } + + public Criteria andHandspersonidIsNotNull() { + addCriterion("HandsPersonId is not null"); + return (Criteria) this; + } + + public Criteria andHandspersonidEqualTo(Long value) { + addCriterion("HandsPersonId =", value, "handspersonid"); + return (Criteria) this; + } + + public Criteria andHandspersonidNotEqualTo(Long value) { + addCriterion("HandsPersonId <>", value, "handspersonid"); + return (Criteria) this; + } + + public Criteria andHandspersonidGreaterThan(Long value) { + addCriterion("HandsPersonId >", value, "handspersonid"); + return (Criteria) this; + } + + public Criteria andHandspersonidGreaterThanOrEqualTo(Long value) { + addCriterion("HandsPersonId >=", value, "handspersonid"); + return (Criteria) this; + } + + public Criteria andHandspersonidLessThan(Long value) { + addCriterion("HandsPersonId <", value, "handspersonid"); + return (Criteria) this; + } + + public Criteria andHandspersonidLessThanOrEqualTo(Long value) { + addCriterion("HandsPersonId <=", value, "handspersonid"); + return (Criteria) this; + } + + public Criteria andHandspersonidIn(List values) { + addCriterion("HandsPersonId in", values, "handspersonid"); + return (Criteria) this; + } + + public Criteria andHandspersonidNotIn(List values) { + addCriterion("HandsPersonId not in", values, "handspersonid"); + return (Criteria) this; + } + + public Criteria andHandspersonidBetween(Long value1, Long value2) { + addCriterion("HandsPersonId between", value1, value2, "handspersonid"); + return (Criteria) this; + } + + public Criteria andHandspersonidNotBetween(Long value1, Long value2) { + addCriterion("HandsPersonId not between", value1, value2, "handspersonid"); + return (Criteria) this; + } + + public Criteria andAccountidIsNull() { + addCriterion("AccountId is null"); + return (Criteria) this; + } + + public Criteria andAccountidIsNotNull() { + addCriterion("AccountId is not null"); + return (Criteria) this; + } + + public Criteria andAccountidEqualTo(Long value) { + addCriterion("AccountId =", value, "accountid"); + return (Criteria) this; + } + + public Criteria andAccountidNotEqualTo(Long value) { + addCriterion("AccountId <>", value, "accountid"); + return (Criteria) this; + } + + public Criteria andAccountidGreaterThan(Long value) { + addCriterion("AccountId >", value, "accountid"); + return (Criteria) this; + } + + public Criteria andAccountidGreaterThanOrEqualTo(Long value) { + addCriterion("AccountId >=", value, "accountid"); + return (Criteria) this; + } + + public Criteria andAccountidLessThan(Long value) { + addCriterion("AccountId <", value, "accountid"); + return (Criteria) this; + } + + public Criteria andAccountidLessThanOrEqualTo(Long value) { + addCriterion("AccountId <=", value, "accountid"); + return (Criteria) this; + } + + public Criteria andAccountidIn(List values) { + addCriterion("AccountId in", values, "accountid"); + return (Criteria) this; + } + + public Criteria andAccountidNotIn(List values) { + addCriterion("AccountId not in", values, "accountid"); + return (Criteria) this; + } + + public Criteria andAccountidBetween(Long value1, Long value2) { + addCriterion("AccountId between", value1, value2, "accountid"); + return (Criteria) this; + } + + public Criteria andAccountidNotBetween(Long value1, Long value2) { + addCriterion("AccountId not between", value1, value2, "accountid"); + return (Criteria) this; + } + + public Criteria andChangeamountIsNull() { + addCriterion("ChangeAmount is null"); + return (Criteria) this; + } + + public Criteria andChangeamountIsNotNull() { + addCriterion("ChangeAmount is not null"); + return (Criteria) this; + } + + public Criteria andChangeamountEqualTo(Double value) { + addCriterion("ChangeAmount =", value, "changeamount"); + return (Criteria) this; + } + + public Criteria andChangeamountNotEqualTo(Double value) { + addCriterion("ChangeAmount <>", value, "changeamount"); + return (Criteria) this; + } + + public Criteria andChangeamountGreaterThan(Double value) { + addCriterion("ChangeAmount >", value, "changeamount"); + return (Criteria) this; + } + + public Criteria andChangeamountGreaterThanOrEqualTo(Double value) { + addCriterion("ChangeAmount >=", value, "changeamount"); + return (Criteria) this; + } + + public Criteria andChangeamountLessThan(Double value) { + addCriterion("ChangeAmount <", value, "changeamount"); + return (Criteria) this; + } + + public Criteria andChangeamountLessThanOrEqualTo(Double value) { + addCriterion("ChangeAmount <=", value, "changeamount"); + return (Criteria) this; + } + + public Criteria andChangeamountIn(List values) { + addCriterion("ChangeAmount in", values, "changeamount"); + return (Criteria) this; + } + + public Criteria andChangeamountNotIn(List values) { + addCriterion("ChangeAmount not in", values, "changeamount"); + return (Criteria) this; + } + + public Criteria andChangeamountBetween(Double value1, Double value2) { + addCriterion("ChangeAmount between", value1, value2, "changeamount"); + return (Criteria) this; + } + + public Criteria andChangeamountNotBetween(Double value1, Double value2) { + addCriterion("ChangeAmount not between", value1, value2, "changeamount"); + return (Criteria) this; + } + + public Criteria andAllocationprojectidIsNull() { + addCriterion("AllocationProjectId is null"); + return (Criteria) this; + } + + public Criteria andAllocationprojectidIsNotNull() { + addCriterion("AllocationProjectId is not null"); + return (Criteria) this; + } + + public Criteria andAllocationprojectidEqualTo(Long value) { + addCriterion("AllocationProjectId =", value, "allocationprojectid"); + return (Criteria) this; + } + + public Criteria andAllocationprojectidNotEqualTo(Long value) { + addCriterion("AllocationProjectId <>", value, "allocationprojectid"); + return (Criteria) this; + } + + public Criteria andAllocationprojectidGreaterThan(Long value) { + addCriterion("AllocationProjectId >", value, "allocationprojectid"); + return (Criteria) this; + } + + public Criteria andAllocationprojectidGreaterThanOrEqualTo(Long value) { + addCriterion("AllocationProjectId >=", value, "allocationprojectid"); + return (Criteria) this; + } + + public Criteria andAllocationprojectidLessThan(Long value) { + addCriterion("AllocationProjectId <", value, "allocationprojectid"); + return (Criteria) this; + } + + public Criteria andAllocationprojectidLessThanOrEqualTo(Long value) { + addCriterion("AllocationProjectId <=", value, "allocationprojectid"); + return (Criteria) this; + } + + public Criteria andAllocationprojectidIn(List values) { + addCriterion("AllocationProjectId in", values, "allocationprojectid"); + return (Criteria) this; + } + + public Criteria andAllocationprojectidNotIn(List values) { + addCriterion("AllocationProjectId not in", values, "allocationprojectid"); + return (Criteria) this; + } + + public Criteria andAllocationprojectidBetween(Long value1, Long value2) { + addCriterion("AllocationProjectId between", value1, value2, "allocationprojectid"); + return (Criteria) this; + } + + public Criteria andAllocationprojectidNotBetween(Long value1, Long value2) { + addCriterion("AllocationProjectId not between", value1, value2, "allocationprojectid"); + return (Criteria) this; + } + + public Criteria andTotalpriceIsNull() { + addCriterion("TotalPrice is null"); + return (Criteria) this; + } + + public Criteria andTotalpriceIsNotNull() { + addCriterion("TotalPrice is not null"); + return (Criteria) this; + } + + public Criteria andTotalpriceEqualTo(Double value) { + addCriterion("TotalPrice =", value, "totalprice"); + return (Criteria) this; + } + + public Criteria andTotalpriceNotEqualTo(Double value) { + addCriterion("TotalPrice <>", value, "totalprice"); + return (Criteria) this; + } + + public Criteria andTotalpriceGreaterThan(Double value) { + addCriterion("TotalPrice >", value, "totalprice"); + return (Criteria) this; + } + + public Criteria andTotalpriceGreaterThanOrEqualTo(Double value) { + addCriterion("TotalPrice >=", value, "totalprice"); + return (Criteria) this; + } + + public Criteria andTotalpriceLessThan(Double value) { + addCriterion("TotalPrice <", value, "totalprice"); + return (Criteria) this; + } + + public Criteria andTotalpriceLessThanOrEqualTo(Double value) { + addCriterion("TotalPrice <=", value, "totalprice"); + return (Criteria) this; + } + + public Criteria andTotalpriceIn(List values) { + addCriterion("TotalPrice in", values, "totalprice"); + return (Criteria) this; + } + + public Criteria andTotalpriceNotIn(List values) { + addCriterion("TotalPrice not in", values, "totalprice"); + return (Criteria) this; + } + + public Criteria andTotalpriceBetween(Double value1, Double value2) { + addCriterion("TotalPrice between", value1, value2, "totalprice"); + return (Criteria) this; + } + + public Criteria andTotalpriceNotBetween(Double value1, Double value2) { + addCriterion("TotalPrice not between", value1, value2, "totalprice"); + return (Criteria) this; + } + + public Criteria andPaytypeIsNull() { + addCriterion("PayType is null"); + return (Criteria) this; + } + + public Criteria andPaytypeIsNotNull() { + addCriterion("PayType is not null"); + return (Criteria) this; + } + + public Criteria andPaytypeEqualTo(String value) { + addCriterion("PayType =", value, "paytype"); + return (Criteria) this; + } + + public Criteria andPaytypeNotEqualTo(String value) { + addCriterion("PayType <>", value, "paytype"); + return (Criteria) this; + } + + public Criteria andPaytypeGreaterThan(String value) { + addCriterion("PayType >", value, "paytype"); + return (Criteria) this; + } + + public Criteria andPaytypeGreaterThanOrEqualTo(String value) { + addCriterion("PayType >=", value, "paytype"); + return (Criteria) this; + } + + public Criteria andPaytypeLessThan(String value) { + addCriterion("PayType <", value, "paytype"); + return (Criteria) this; + } + + public Criteria andPaytypeLessThanOrEqualTo(String value) { + addCriterion("PayType <=", value, "paytype"); + return (Criteria) this; + } + + public Criteria andPaytypeLike(String value) { + addCriterion("PayType like", value, "paytype"); + return (Criteria) this; + } + + public Criteria andPaytypeNotLike(String value) { + addCriterion("PayType not like", value, "paytype"); + return (Criteria) this; + } + + public Criteria andPaytypeIn(List values) { + addCriterion("PayType in", values, "paytype"); + return (Criteria) this; + } + + public Criteria andPaytypeNotIn(List values) { + addCriterion("PayType not in", values, "paytype"); + return (Criteria) this; + } + + public Criteria andPaytypeBetween(String value1, String value2) { + addCriterion("PayType between", value1, value2, "paytype"); + return (Criteria) this; + } + + public Criteria andPaytypeNotBetween(String value1, String value2) { + addCriterion("PayType not between", value1, value2, "paytype"); + return (Criteria) this; + } + + public Criteria andRemarkIsNull() { + addCriterion("Remark is null"); + return (Criteria) this; + } + + public Criteria andRemarkIsNotNull() { + addCriterion("Remark is not null"); + return (Criteria) this; + } + + public Criteria andRemarkEqualTo(String value) { + addCriterion("Remark =", value, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkNotEqualTo(String value) { + addCriterion("Remark <>", value, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkGreaterThan(String value) { + addCriterion("Remark >", value, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkGreaterThanOrEqualTo(String value) { + addCriterion("Remark >=", value, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkLessThan(String value) { + addCriterion("Remark <", value, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkLessThanOrEqualTo(String value) { + addCriterion("Remark <=", value, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkLike(String value) { + addCriterion("Remark like", value, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkNotLike(String value) { + addCriterion("Remark not like", value, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkIn(List values) { + addCriterion("Remark in", values, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkNotIn(List values) { + addCriterion("Remark not in", values, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkBetween(String value1, String value2) { + addCriterion("Remark between", value1, value2, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkNotBetween(String value1, String value2) { + addCriterion("Remark not between", value1, value2, "remark"); + return (Criteria) this; + } + + public Criteria andSalesmanIsNull() { + addCriterion("Salesman is null"); + return (Criteria) this; + } + + public Criteria andSalesmanIsNotNull() { + addCriterion("Salesman is not null"); + return (Criteria) this; + } + + public Criteria andSalesmanEqualTo(String value) { + addCriterion("Salesman =", value, "salesman"); + return (Criteria) this; + } + + public Criteria andSalesmanNotEqualTo(String value) { + addCriterion("Salesman <>", value, "salesman"); + return (Criteria) this; + } + + public Criteria andSalesmanGreaterThan(String value) { + addCriterion("Salesman >", value, "salesman"); + return (Criteria) this; + } + + public Criteria andSalesmanGreaterThanOrEqualTo(String value) { + addCriterion("Salesman >=", value, "salesman"); + return (Criteria) this; + } + + public Criteria andSalesmanLessThan(String value) { + addCriterion("Salesman <", value, "salesman"); + return (Criteria) this; + } + + public Criteria andSalesmanLessThanOrEqualTo(String value) { + addCriterion("Salesman <=", value, "salesman"); + return (Criteria) this; + } + + public Criteria andSalesmanLike(String value) { + addCriterion("Salesman like", value, "salesman"); + return (Criteria) this; + } + + public Criteria andSalesmanNotLike(String value) { + addCriterion("Salesman not like", value, "salesman"); + return (Criteria) this; + } + + public Criteria andSalesmanIn(List values) { + addCriterion("Salesman in", values, "salesman"); + return (Criteria) this; + } + + public Criteria andSalesmanNotIn(List values) { + addCriterion("Salesman not in", values, "salesman"); + return (Criteria) this; + } + + public Criteria andSalesmanBetween(String value1, String value2) { + addCriterion("Salesman between", value1, value2, "salesman"); + return (Criteria) this; + } + + public Criteria andSalesmanNotBetween(String value1, String value2) { + addCriterion("Salesman not between", value1, value2, "salesman"); + return (Criteria) this; + } + + public Criteria andAccountidlistIsNull() { + addCriterion("AccountIdList is null"); + return (Criteria) this; + } + + public Criteria andAccountidlistIsNotNull() { + addCriterion("AccountIdList is not null"); + return (Criteria) this; + } + + public Criteria andAccountidlistEqualTo(String value) { + addCriterion("AccountIdList =", value, "accountidlist"); + return (Criteria) this; + } + + public Criteria andAccountidlistNotEqualTo(String value) { + addCriterion("AccountIdList <>", value, "accountidlist"); + return (Criteria) this; + } + + public Criteria andAccountidlistGreaterThan(String value) { + addCriterion("AccountIdList >", value, "accountidlist"); + return (Criteria) this; + } + + public Criteria andAccountidlistGreaterThanOrEqualTo(String value) { + addCriterion("AccountIdList >=", value, "accountidlist"); + return (Criteria) this; + } + + public Criteria andAccountidlistLessThan(String value) { + addCriterion("AccountIdList <", value, "accountidlist"); + return (Criteria) this; + } + + public Criteria andAccountidlistLessThanOrEqualTo(String value) { + addCriterion("AccountIdList <=", value, "accountidlist"); + return (Criteria) this; + } + + public Criteria andAccountidlistLike(String value) { + addCriterion("AccountIdList like", value, "accountidlist"); + return (Criteria) this; + } + + public Criteria andAccountidlistNotLike(String value) { + addCriterion("AccountIdList not like", value, "accountidlist"); + return (Criteria) this; + } + + public Criteria andAccountidlistIn(List values) { + addCriterion("AccountIdList in", values, "accountidlist"); + return (Criteria) this; + } + + public Criteria andAccountidlistNotIn(List values) { + addCriterion("AccountIdList not in", values, "accountidlist"); + return (Criteria) this; + } + + public Criteria andAccountidlistBetween(String value1, String value2) { + addCriterion("AccountIdList between", value1, value2, "accountidlist"); + return (Criteria) this; + } + + public Criteria andAccountidlistNotBetween(String value1, String value2) { + addCriterion("AccountIdList not between", value1, value2, "accountidlist"); + return (Criteria) this; + } + + public Criteria andAccountmoneylistIsNull() { + addCriterion("AccountMoneyList is null"); + return (Criteria) this; + } + + public Criteria andAccountmoneylistIsNotNull() { + addCriterion("AccountMoneyList is not null"); + return (Criteria) this; + } + + public Criteria andAccountmoneylistEqualTo(String value) { + addCriterion("AccountMoneyList =", value, "accountmoneylist"); + return (Criteria) this; + } + + public Criteria andAccountmoneylistNotEqualTo(String value) { + addCriterion("AccountMoneyList <>", value, "accountmoneylist"); + return (Criteria) this; + } + + public Criteria andAccountmoneylistGreaterThan(String value) { + addCriterion("AccountMoneyList >", value, "accountmoneylist"); + return (Criteria) this; + } + + public Criteria andAccountmoneylistGreaterThanOrEqualTo(String value) { + addCriterion("AccountMoneyList >=", value, "accountmoneylist"); + return (Criteria) this; + } + + public Criteria andAccountmoneylistLessThan(String value) { + addCriterion("AccountMoneyList <", value, "accountmoneylist"); + return (Criteria) this; + } + + public Criteria andAccountmoneylistLessThanOrEqualTo(String value) { + addCriterion("AccountMoneyList <=", value, "accountmoneylist"); + return (Criteria) this; + } + + public Criteria andAccountmoneylistLike(String value) { + addCriterion("AccountMoneyList like", value, "accountmoneylist"); + return (Criteria) this; + } + + public Criteria andAccountmoneylistNotLike(String value) { + addCriterion("AccountMoneyList not like", value, "accountmoneylist"); + return (Criteria) this; + } + + public Criteria andAccountmoneylistIn(List values) { + addCriterion("AccountMoneyList in", values, "accountmoneylist"); + return (Criteria) this; + } + + public Criteria andAccountmoneylistNotIn(List values) { + addCriterion("AccountMoneyList not in", values, "accountmoneylist"); + return (Criteria) this; + } + + public Criteria andAccountmoneylistBetween(String value1, String value2) { + addCriterion("AccountMoneyList between", value1, value2, "accountmoneylist"); + return (Criteria) this; + } + + public Criteria andAccountmoneylistNotBetween(String value1, String value2) { + addCriterion("AccountMoneyList not between", value1, value2, "accountmoneylist"); + return (Criteria) this; + } + + public Criteria andDiscountIsNull() { + addCriterion("Discount is null"); + return (Criteria) this; + } + + public Criteria andDiscountIsNotNull() { + addCriterion("Discount is not null"); + return (Criteria) this; + } + + public Criteria andDiscountEqualTo(Double value) { + addCriterion("Discount =", value, "discount"); + return (Criteria) this; + } + + public Criteria andDiscountNotEqualTo(Double value) { + addCriterion("Discount <>", value, "discount"); + return (Criteria) this; + } + + public Criteria andDiscountGreaterThan(Double value) { + addCriterion("Discount >", value, "discount"); + return (Criteria) this; + } + + public Criteria andDiscountGreaterThanOrEqualTo(Double value) { + addCriterion("Discount >=", value, "discount"); + return (Criteria) this; + } + + public Criteria andDiscountLessThan(Double value) { + addCriterion("Discount <", value, "discount"); + return (Criteria) this; + } + + public Criteria andDiscountLessThanOrEqualTo(Double value) { + addCriterion("Discount <=", value, "discount"); + return (Criteria) this; + } + + public Criteria andDiscountIn(List values) { + addCriterion("Discount in", values, "discount"); + return (Criteria) this; + } + + public Criteria andDiscountNotIn(List values) { + addCriterion("Discount not in", values, "discount"); + return (Criteria) this; + } + + public Criteria andDiscountBetween(Double value1, Double value2) { + addCriterion("Discount between", value1, value2, "discount"); + return (Criteria) this; + } + + public Criteria andDiscountNotBetween(Double value1, Double value2) { + addCriterion("Discount not between", value1, value2, "discount"); + return (Criteria) this; + } + + public Criteria andDiscountmoneyIsNull() { + addCriterion("DiscountMoney is null"); + return (Criteria) this; + } + + public Criteria andDiscountmoneyIsNotNull() { + addCriterion("DiscountMoney is not null"); + return (Criteria) this; + } + + public Criteria andDiscountmoneyEqualTo(Double value) { + addCriterion("DiscountMoney =", value, "discountmoney"); + return (Criteria) this; + } + + public Criteria andDiscountmoneyNotEqualTo(Double value) { + addCriterion("DiscountMoney <>", value, "discountmoney"); + return (Criteria) this; + } + + public Criteria andDiscountmoneyGreaterThan(Double value) { + addCriterion("DiscountMoney >", value, "discountmoney"); + return (Criteria) this; + } + + public Criteria andDiscountmoneyGreaterThanOrEqualTo(Double value) { + addCriterion("DiscountMoney >=", value, "discountmoney"); + return (Criteria) this; + } + + public Criteria andDiscountmoneyLessThan(Double value) { + addCriterion("DiscountMoney <", value, "discountmoney"); + return (Criteria) this; + } + + public Criteria andDiscountmoneyLessThanOrEqualTo(Double value) { + addCriterion("DiscountMoney <=", value, "discountmoney"); + return (Criteria) this; + } + + public Criteria andDiscountmoneyIn(List values) { + addCriterion("DiscountMoney in", values, "discountmoney"); + return (Criteria) this; + } + + public Criteria andDiscountmoneyNotIn(List values) { + addCriterion("DiscountMoney not in", values, "discountmoney"); + return (Criteria) this; + } + + public Criteria andDiscountmoneyBetween(Double value1, Double value2) { + addCriterion("DiscountMoney between", value1, value2, "discountmoney"); + return (Criteria) this; + } + + public Criteria andDiscountmoneyNotBetween(Double value1, Double value2) { + addCriterion("DiscountMoney not between", value1, value2, "discountmoney"); + return (Criteria) this; + } + + public Criteria andDiscountlastmoneyIsNull() { + addCriterion("DiscountLastMoney is null"); + return (Criteria) this; + } + + public Criteria andDiscountlastmoneyIsNotNull() { + addCriterion("DiscountLastMoney is not null"); + return (Criteria) this; + } + + public Criteria andDiscountlastmoneyEqualTo(Double value) { + addCriterion("DiscountLastMoney =", value, "discountlastmoney"); + return (Criteria) this; + } + + public Criteria andDiscountlastmoneyNotEqualTo(Double value) { + addCriterion("DiscountLastMoney <>", value, "discountlastmoney"); + return (Criteria) this; + } + + public Criteria andDiscountlastmoneyGreaterThan(Double value) { + addCriterion("DiscountLastMoney >", value, "discountlastmoney"); + return (Criteria) this; + } + + public Criteria andDiscountlastmoneyGreaterThanOrEqualTo(Double value) { + addCriterion("DiscountLastMoney >=", value, "discountlastmoney"); + return (Criteria) this; + } + + public Criteria andDiscountlastmoneyLessThan(Double value) { + addCriterion("DiscountLastMoney <", value, "discountlastmoney"); + return (Criteria) this; + } + + public Criteria andDiscountlastmoneyLessThanOrEqualTo(Double value) { + addCriterion("DiscountLastMoney <=", value, "discountlastmoney"); + return (Criteria) this; + } + + public Criteria andDiscountlastmoneyIn(List values) { + addCriterion("DiscountLastMoney in", values, "discountlastmoney"); + return (Criteria) this; + } + + public Criteria andDiscountlastmoneyNotIn(List values) { + addCriterion("DiscountLastMoney not in", values, "discountlastmoney"); + return (Criteria) this; + } + + public Criteria andDiscountlastmoneyBetween(Double value1, Double value2) { + addCriterion("DiscountLastMoney between", value1, value2, "discountlastmoney"); + return (Criteria) this; + } + + public Criteria andDiscountlastmoneyNotBetween(Double value1, Double value2) { + addCriterion("DiscountLastMoney not between", value1, value2, "discountlastmoney"); + return (Criteria) this; + } + + public Criteria andOthermoneyIsNull() { + addCriterion("OtherMoney is null"); + return (Criteria) this; + } + + public Criteria andOthermoneyIsNotNull() { + addCriterion("OtherMoney is not null"); + return (Criteria) this; + } + + public Criteria andOthermoneyEqualTo(Double value) { + addCriterion("OtherMoney =", value, "othermoney"); + return (Criteria) this; + } + + public Criteria andOthermoneyNotEqualTo(Double value) { + addCriterion("OtherMoney <>", value, "othermoney"); + return (Criteria) this; + } + + public Criteria andOthermoneyGreaterThan(Double value) { + addCriterion("OtherMoney >", value, "othermoney"); + return (Criteria) this; + } + + public Criteria andOthermoneyGreaterThanOrEqualTo(Double value) { + addCriterion("OtherMoney >=", value, "othermoney"); + return (Criteria) this; + } + + public Criteria andOthermoneyLessThan(Double value) { + addCriterion("OtherMoney <", value, "othermoney"); + return (Criteria) this; + } + + public Criteria andOthermoneyLessThanOrEqualTo(Double value) { + addCriterion("OtherMoney <=", value, "othermoney"); + return (Criteria) this; + } + + public Criteria andOthermoneyIn(List values) { + addCriterion("OtherMoney in", values, "othermoney"); + return (Criteria) this; + } + + public Criteria andOthermoneyNotIn(List values) { + addCriterion("OtherMoney not in", values, "othermoney"); + return (Criteria) this; + } + + public Criteria andOthermoneyBetween(Double value1, Double value2) { + addCriterion("OtherMoney between", value1, value2, "othermoney"); + return (Criteria) this; + } + + public Criteria andOthermoneyNotBetween(Double value1, Double value2) { + addCriterion("OtherMoney not between", value1, value2, "othermoney"); + return (Criteria) this; + } + + public Criteria andOthermoneylistIsNull() { + addCriterion("OtherMoneyList is null"); + return (Criteria) this; + } + + public Criteria andOthermoneylistIsNotNull() { + addCriterion("OtherMoneyList is not null"); + return (Criteria) this; + } + + public Criteria andOthermoneylistEqualTo(String value) { + addCriterion("OtherMoneyList =", value, "othermoneylist"); + return (Criteria) this; + } + + public Criteria andOthermoneylistNotEqualTo(String value) { + addCriterion("OtherMoneyList <>", value, "othermoneylist"); + return (Criteria) this; + } + + public Criteria andOthermoneylistGreaterThan(String value) { + addCriterion("OtherMoneyList >", value, "othermoneylist"); + return (Criteria) this; + } + + public Criteria andOthermoneylistGreaterThanOrEqualTo(String value) { + addCriterion("OtherMoneyList >=", value, "othermoneylist"); + return (Criteria) this; + } + + public Criteria andOthermoneylistLessThan(String value) { + addCriterion("OtherMoneyList <", value, "othermoneylist"); + return (Criteria) this; + } + + public Criteria andOthermoneylistLessThanOrEqualTo(String value) { + addCriterion("OtherMoneyList <=", value, "othermoneylist"); + return (Criteria) this; + } + + public Criteria andOthermoneylistLike(String value) { + addCriterion("OtherMoneyList like", value, "othermoneylist"); + return (Criteria) this; + } + + public Criteria andOthermoneylistNotLike(String value) { + addCriterion("OtherMoneyList not like", value, "othermoneylist"); + return (Criteria) this; + } + + public Criteria andOthermoneylistIn(List values) { + addCriterion("OtherMoneyList in", values, "othermoneylist"); + return (Criteria) this; + } + + public Criteria andOthermoneylistNotIn(List values) { + addCriterion("OtherMoneyList not in", values, "othermoneylist"); + return (Criteria) this; + } + + public Criteria andOthermoneylistBetween(String value1, String value2) { + addCriterion("OtherMoneyList between", value1, value2, "othermoneylist"); + return (Criteria) this; + } + + public Criteria andOthermoneylistNotBetween(String value1, String value2) { + addCriterion("OtherMoneyList not between", value1, value2, "othermoneylist"); + return (Criteria) this; + } + + public Criteria andOthermoneyitemIsNull() { + addCriterion("OtherMoneyItem is null"); + return (Criteria) this; + } + + public Criteria andOthermoneyitemIsNotNull() { + addCriterion("OtherMoneyItem is not null"); + return (Criteria) this; + } + + public Criteria andOthermoneyitemEqualTo(String value) { + addCriterion("OtherMoneyItem =", value, "othermoneyitem"); + return (Criteria) this; + } + + public Criteria andOthermoneyitemNotEqualTo(String value) { + addCriterion("OtherMoneyItem <>", value, "othermoneyitem"); + return (Criteria) this; + } + + public Criteria andOthermoneyitemGreaterThan(String value) { + addCriterion("OtherMoneyItem >", value, "othermoneyitem"); + return (Criteria) this; + } + + public Criteria andOthermoneyitemGreaterThanOrEqualTo(String value) { + addCriterion("OtherMoneyItem >=", value, "othermoneyitem"); + return (Criteria) this; + } + + public Criteria andOthermoneyitemLessThan(String value) { + addCriterion("OtherMoneyItem <", value, "othermoneyitem"); + return (Criteria) this; + } + + public Criteria andOthermoneyitemLessThanOrEqualTo(String value) { + addCriterion("OtherMoneyItem <=", value, "othermoneyitem"); + return (Criteria) this; + } + + public Criteria andOthermoneyitemLike(String value) { + addCriterion("OtherMoneyItem like", value, "othermoneyitem"); + return (Criteria) this; + } + + public Criteria andOthermoneyitemNotLike(String value) { + addCriterion("OtherMoneyItem not like", value, "othermoneyitem"); + return (Criteria) this; + } + + public Criteria andOthermoneyitemIn(List values) { + addCriterion("OtherMoneyItem in", values, "othermoneyitem"); + return (Criteria) this; + } + + public Criteria andOthermoneyitemNotIn(List values) { + addCriterion("OtherMoneyItem not in", values, "othermoneyitem"); + return (Criteria) this; + } + + public Criteria andOthermoneyitemBetween(String value1, String value2) { + addCriterion("OtherMoneyItem between", value1, value2, "othermoneyitem"); + return (Criteria) this; + } + + public Criteria andOthermoneyitemNotBetween(String value1, String value2) { + addCriterion("OtherMoneyItem not between", value1, value2, "othermoneyitem"); + return (Criteria) this; + } + + public Criteria andAccountdayIsNull() { + addCriterion("AccountDay is null"); + return (Criteria) this; + } + + public Criteria andAccountdayIsNotNull() { + addCriterion("AccountDay is not null"); + return (Criteria) this; + } + + public Criteria andAccountdayEqualTo(Integer value) { + addCriterion("AccountDay =", value, "accountday"); + return (Criteria) this; + } + + public Criteria andAccountdayNotEqualTo(Integer value) { + addCriterion("AccountDay <>", value, "accountday"); + return (Criteria) this; + } + + public Criteria andAccountdayGreaterThan(Integer value) { + addCriterion("AccountDay >", value, "accountday"); + return (Criteria) this; + } + + public Criteria andAccountdayGreaterThanOrEqualTo(Integer value) { + addCriterion("AccountDay >=", value, "accountday"); + return (Criteria) this; + } + + public Criteria andAccountdayLessThan(Integer value) { + addCriterion("AccountDay <", value, "accountday"); + return (Criteria) this; + } + + public Criteria andAccountdayLessThanOrEqualTo(Integer value) { + addCriterion("AccountDay <=", value, "accountday"); + return (Criteria) this; + } + + public Criteria andAccountdayIn(List values) { + addCriterion("AccountDay in", values, "accountday"); + return (Criteria) this; + } + + public Criteria andAccountdayNotIn(List values) { + addCriterion("AccountDay not in", values, "accountday"); + return (Criteria) this; + } + + public Criteria andAccountdayBetween(Integer value1, Integer value2) { + addCriterion("AccountDay between", value1, value2, "accountday"); + return (Criteria) this; + } + + public Criteria andAccountdayNotBetween(Integer value1, Integer value2) { + addCriterion("AccountDay not between", value1, value2, "accountday"); + return (Criteria) this; + } + + public Criteria andStatusIsNull() { + addCriterion("Status is null"); + return (Criteria) this; + } + + public Criteria andStatusIsNotNull() { + addCriterion("Status is not null"); + return (Criteria) this; + } + + public Criteria andStatusEqualTo(Boolean value) { + addCriterion("Status =", value, "status"); + return (Criteria) this; + } + + public Criteria andStatusNotEqualTo(Boolean value) { + addCriterion("Status <>", value, "status"); + return (Criteria) this; + } + + public Criteria andStatusGreaterThan(Boolean value) { + addCriterion("Status >", value, "status"); + return (Criteria) this; + } + + public Criteria andStatusGreaterThanOrEqualTo(Boolean value) { + addCriterion("Status >=", value, "status"); + return (Criteria) this; + } + + public Criteria andStatusLessThan(Boolean value) { + addCriterion("Status <", value, "status"); + return (Criteria) this; + } + + public Criteria andStatusLessThanOrEqualTo(Boolean value) { + addCriterion("Status <=", value, "status"); + return (Criteria) this; + } + + public Criteria andStatusIn(List values) { + addCriterion("Status in", values, "status"); + return (Criteria) this; + } + + public Criteria andStatusNotIn(List values) { + addCriterion("Status not in", values, "status"); + return (Criteria) this; + } + + public Criteria andStatusBetween(Boolean value1, Boolean value2) { + addCriterion("Status between", value1, value2, "status"); + return (Criteria) this; + } + + public Criteria andStatusNotBetween(Boolean value1, Boolean value2) { + addCriterion("Status not between", value1, value2, "status"); + return (Criteria) this; + } + } + + /** + * This class was generated by MyBatis Generator. + * This class corresponds to the database table jsh_depothead + * + * @mbggenerated do_not_delete_during_merge + */ + public static class Criteria extends GeneratedCriteria { + + protected Criteria() { + super(); + } + } + + /** + * This class was generated by MyBatis Generator. + * This class corresponds to the database table jsh_depothead + * + * @mbggenerated + */ + public static class Criterion { + private String condition; + + private Object value; + + private Object secondValue; + + private boolean noValue; + + private boolean singleValue; + + private boolean betweenValue; + + private boolean listValue; + + private String typeHandler; + + public String getCondition() { + return condition; + } + + public Object getValue() { + return value; + } + + public Object getSecondValue() { + return secondValue; + } + + public boolean isNoValue() { + return noValue; + } + + public boolean isSingleValue() { + return singleValue; + } + + public boolean isBetweenValue() { + return betweenValue; + } + + public boolean isListValue() { + return listValue; + } + + public String getTypeHandler() { + return typeHandler; + } + + protected Criterion(String condition) { + super(); + this.condition = condition; + this.typeHandler = null; + this.noValue = true; + } + + protected Criterion(String condition, Object value, String typeHandler) { + super(); + this.condition = condition; + this.value = value; + this.typeHandler = typeHandler; + if (value instanceof List) { + this.listValue = true; + } else { + this.singleValue = true; + } + } + + protected Criterion(String condition, Object value) { + this(condition, value, null); + } + + protected Criterion(String condition, Object value, Object secondValue, String typeHandler) { + super(); + this.condition = condition; + this.value = value; + this.secondValue = secondValue; + this.typeHandler = typeHandler; + this.betweenValue = true; + } + + protected Criterion(String condition, Object value, Object secondValue) { + this(condition, value, secondValue, null); + } + } +} \ No newline at end of file diff --git a/src/main/java/com/jsh/erp/datasource/entities/DepotItem.java b/src/main/java/com/jsh/erp/datasource/entities/DepotItem.java new file mode 100644 index 00000000..93316626 --- /dev/null +++ b/src/main/java/com/jsh/erp/datasource/entities/DepotItem.java @@ -0,0 +1,739 @@ +package com.jsh.erp.datasource.entities; + +public class DepotItem { + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database column jsh_depotitem.Id + * + * @mbggenerated + */ + private Long id; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database column jsh_depotitem.HeaderId + * + * @mbggenerated + */ + private Long headerid; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database column jsh_depotitem.MaterialId + * + * @mbggenerated + */ + private Long materialid; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database column jsh_depotitem.MUnit + * + * @mbggenerated + */ + private String munit; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database column jsh_depotitem.OperNumber + * + * @mbggenerated + */ + private Double opernumber; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database column jsh_depotitem.BasicNumber + * + * @mbggenerated + */ + private Double basicnumber; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database column jsh_depotitem.UnitPrice + * + * @mbggenerated + */ + private Double unitprice; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database column jsh_depotitem.TaxUnitPrice + * + * @mbggenerated + */ + private Double taxunitprice; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database column jsh_depotitem.AllPrice + * + * @mbggenerated + */ + private Double allprice; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database column jsh_depotitem.Remark + * + * @mbggenerated + */ + private String remark; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database column jsh_depotitem.Img + * + * @mbggenerated + */ + private String img; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database column jsh_depotitem.Incidentals + * + * @mbggenerated + */ + private Double incidentals; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database column jsh_depotitem.DepotId + * + * @mbggenerated + */ + private Long depotid; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database column jsh_depotitem.AnotherDepotId + * + * @mbggenerated + */ + private Long anotherdepotid; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database column jsh_depotitem.TaxRate + * + * @mbggenerated + */ + private Double taxrate; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database column jsh_depotitem.TaxMoney + * + * @mbggenerated + */ + private Double taxmoney; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database column jsh_depotitem.TaxLastMoney + * + * @mbggenerated + */ + private Double taxlastmoney; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database column jsh_depotitem.OtherField1 + * + * @mbggenerated + */ + private String otherfield1; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database column jsh_depotitem.OtherField2 + * + * @mbggenerated + */ + private String otherfield2; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database column jsh_depotitem.OtherField3 + * + * @mbggenerated + */ + private String otherfield3; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database column jsh_depotitem.OtherField4 + * + * @mbggenerated + */ + private String otherfield4; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database column jsh_depotitem.OtherField5 + * + * @mbggenerated + */ + private String otherfield5; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database column jsh_depotitem.MType + * + * @mbggenerated + */ + private String mtype; + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column jsh_depotitem.Id + * + * @return the value of jsh_depotitem.Id + * + * @mbggenerated + */ + public Long getId() { + return id; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column jsh_depotitem.Id + * + * @param id the value for jsh_depotitem.Id + * + * @mbggenerated + */ + public void setId(Long id) { + this.id = id; + } + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column jsh_depotitem.HeaderId + * + * @return the value of jsh_depotitem.HeaderId + * + * @mbggenerated + */ + public Long getHeaderid() { + return headerid; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column jsh_depotitem.HeaderId + * + * @param headerid the value for jsh_depotitem.HeaderId + * + * @mbggenerated + */ + public void setHeaderid(Long headerid) { + this.headerid = headerid; + } + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column jsh_depotitem.MaterialId + * + * @return the value of jsh_depotitem.MaterialId + * + * @mbggenerated + */ + public Long getMaterialid() { + return materialid; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column jsh_depotitem.MaterialId + * + * @param materialid the value for jsh_depotitem.MaterialId + * + * @mbggenerated + */ + public void setMaterialid(Long materialid) { + this.materialid = materialid; + } + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column jsh_depotitem.MUnit + * + * @return the value of jsh_depotitem.MUnit + * + * @mbggenerated + */ + public String getMunit() { + return munit; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column jsh_depotitem.MUnit + * + * @param munit the value for jsh_depotitem.MUnit + * + * @mbggenerated + */ + public void setMunit(String munit) { + this.munit = munit == null ? null : munit.trim(); + } + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column jsh_depotitem.OperNumber + * + * @return the value of jsh_depotitem.OperNumber + * + * @mbggenerated + */ + public Double getOpernumber() { + return opernumber; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column jsh_depotitem.OperNumber + * + * @param opernumber the value for jsh_depotitem.OperNumber + * + * @mbggenerated + */ + public void setOpernumber(Double opernumber) { + this.opernumber = opernumber; + } + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column jsh_depotitem.BasicNumber + * + * @return the value of jsh_depotitem.BasicNumber + * + * @mbggenerated + */ + public Double getBasicnumber() { + return basicnumber; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column jsh_depotitem.BasicNumber + * + * @param basicnumber the value for jsh_depotitem.BasicNumber + * + * @mbggenerated + */ + public void setBasicnumber(Double basicnumber) { + this.basicnumber = basicnumber; + } + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column jsh_depotitem.UnitPrice + * + * @return the value of jsh_depotitem.UnitPrice + * + * @mbggenerated + */ + public Double getUnitprice() { + return unitprice; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column jsh_depotitem.UnitPrice + * + * @param unitprice the value for jsh_depotitem.UnitPrice + * + * @mbggenerated + */ + public void setUnitprice(Double unitprice) { + this.unitprice = unitprice; + } + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column jsh_depotitem.TaxUnitPrice + * + * @return the value of jsh_depotitem.TaxUnitPrice + * + * @mbggenerated + */ + public Double getTaxunitprice() { + return taxunitprice; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column jsh_depotitem.TaxUnitPrice + * + * @param taxunitprice the value for jsh_depotitem.TaxUnitPrice + * + * @mbggenerated + */ + public void setTaxunitprice(Double taxunitprice) { + this.taxunitprice = taxunitprice; + } + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column jsh_depotitem.AllPrice + * + * @return the value of jsh_depotitem.AllPrice + * + * @mbggenerated + */ + public Double getAllprice() { + return allprice; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column jsh_depotitem.AllPrice + * + * @param allprice the value for jsh_depotitem.AllPrice + * + * @mbggenerated + */ + public void setAllprice(Double allprice) { + this.allprice = allprice; + } + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column jsh_depotitem.Remark + * + * @return the value of jsh_depotitem.Remark + * + * @mbggenerated + */ + public String getRemark() { + return remark; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column jsh_depotitem.Remark + * + * @param remark the value for jsh_depotitem.Remark + * + * @mbggenerated + */ + public void setRemark(String remark) { + this.remark = remark == null ? null : remark.trim(); + } + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column jsh_depotitem.Img + * + * @return the value of jsh_depotitem.Img + * + * @mbggenerated + */ + public String getImg() { + return img; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column jsh_depotitem.Img + * + * @param img the value for jsh_depotitem.Img + * + * @mbggenerated + */ + public void setImg(String img) { + this.img = img == null ? null : img.trim(); + } + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column jsh_depotitem.Incidentals + * + * @return the value of jsh_depotitem.Incidentals + * + * @mbggenerated + */ + public Double getIncidentals() { + return incidentals; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column jsh_depotitem.Incidentals + * + * @param incidentals the value for jsh_depotitem.Incidentals + * + * @mbggenerated + */ + public void setIncidentals(Double incidentals) { + this.incidentals = incidentals; + } + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column jsh_depotitem.DepotId + * + * @return the value of jsh_depotitem.DepotId + * + * @mbggenerated + */ + public Long getDepotid() { + return depotid; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column jsh_depotitem.DepotId + * + * @param depotid the value for jsh_depotitem.DepotId + * + * @mbggenerated + */ + public void setDepotid(Long depotid) { + this.depotid = depotid; + } + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column jsh_depotitem.AnotherDepotId + * + * @return the value of jsh_depotitem.AnotherDepotId + * + * @mbggenerated + */ + public Long getAnotherdepotid() { + return anotherdepotid; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column jsh_depotitem.AnotherDepotId + * + * @param anotherdepotid the value for jsh_depotitem.AnotherDepotId + * + * @mbggenerated + */ + public void setAnotherdepotid(Long anotherdepotid) { + this.anotherdepotid = anotherdepotid; + } + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column jsh_depotitem.TaxRate + * + * @return the value of jsh_depotitem.TaxRate + * + * @mbggenerated + */ + public Double getTaxrate() { + return taxrate; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column jsh_depotitem.TaxRate + * + * @param taxrate the value for jsh_depotitem.TaxRate + * + * @mbggenerated + */ + public void setTaxrate(Double taxrate) { + this.taxrate = taxrate; + } + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column jsh_depotitem.TaxMoney + * + * @return the value of jsh_depotitem.TaxMoney + * + * @mbggenerated + */ + public Double getTaxmoney() { + return taxmoney; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column jsh_depotitem.TaxMoney + * + * @param taxmoney the value for jsh_depotitem.TaxMoney + * + * @mbggenerated + */ + public void setTaxmoney(Double taxmoney) { + this.taxmoney = taxmoney; + } + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column jsh_depotitem.TaxLastMoney + * + * @return the value of jsh_depotitem.TaxLastMoney + * + * @mbggenerated + */ + public Double getTaxlastmoney() { + return taxlastmoney; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column jsh_depotitem.TaxLastMoney + * + * @param taxlastmoney the value for jsh_depotitem.TaxLastMoney + * + * @mbggenerated + */ + public void setTaxlastmoney(Double taxlastmoney) { + this.taxlastmoney = taxlastmoney; + } + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column jsh_depotitem.OtherField1 + * + * @return the value of jsh_depotitem.OtherField1 + * + * @mbggenerated + */ + public String getOtherfield1() { + return otherfield1; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column jsh_depotitem.OtherField1 + * + * @param otherfield1 the value for jsh_depotitem.OtherField1 + * + * @mbggenerated + */ + public void setOtherfield1(String otherfield1) { + this.otherfield1 = otherfield1 == null ? null : otherfield1.trim(); + } + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column jsh_depotitem.OtherField2 + * + * @return the value of jsh_depotitem.OtherField2 + * + * @mbggenerated + */ + public String getOtherfield2() { + return otherfield2; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column jsh_depotitem.OtherField2 + * + * @param otherfield2 the value for jsh_depotitem.OtherField2 + * + * @mbggenerated + */ + public void setOtherfield2(String otherfield2) { + this.otherfield2 = otherfield2 == null ? null : otherfield2.trim(); + } + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column jsh_depotitem.OtherField3 + * + * @return the value of jsh_depotitem.OtherField3 + * + * @mbggenerated + */ + public String getOtherfield3() { + return otherfield3; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column jsh_depotitem.OtherField3 + * + * @param otherfield3 the value for jsh_depotitem.OtherField3 + * + * @mbggenerated + */ + public void setOtherfield3(String otherfield3) { + this.otherfield3 = otherfield3 == null ? null : otherfield3.trim(); + } + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column jsh_depotitem.OtherField4 + * + * @return the value of jsh_depotitem.OtherField4 + * + * @mbggenerated + */ + public String getOtherfield4() { + return otherfield4; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column jsh_depotitem.OtherField4 + * + * @param otherfield4 the value for jsh_depotitem.OtherField4 + * + * @mbggenerated + */ + public void setOtherfield4(String otherfield4) { + this.otherfield4 = otherfield4 == null ? null : otherfield4.trim(); + } + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column jsh_depotitem.OtherField5 + * + * @return the value of jsh_depotitem.OtherField5 + * + * @mbggenerated + */ + public String getOtherfield5() { + return otherfield5; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column jsh_depotitem.OtherField5 + * + * @param otherfield5 the value for jsh_depotitem.OtherField5 + * + * @mbggenerated + */ + public void setOtherfield5(String otherfield5) { + this.otherfield5 = otherfield5 == null ? null : otherfield5.trim(); + } + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column jsh_depotitem.MType + * + * @return the value of jsh_depotitem.MType + * + * @mbggenerated + */ + public String getMtype() { + return mtype; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column jsh_depotitem.MType + * + * @param mtype the value for jsh_depotitem.MType + * + * @mbggenerated + */ + public void setMtype(String mtype) { + this.mtype = mtype == null ? null : mtype.trim(); + } +} \ No newline at end of file diff --git a/src/main/java/com/jsh/erp/datasource/entities/DepotItemExample.java b/src/main/java/com/jsh/erp/datasource/entities/DepotItemExample.java new file mode 100644 index 00000000..aafd71a8 --- /dev/null +++ b/src/main/java/com/jsh/erp/datasource/entities/DepotItemExample.java @@ -0,0 +1,1772 @@ +package com.jsh.erp.datasource.entities; + +import java.util.ArrayList; +import java.util.List; + +public class DepotItemExample { + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database table jsh_depotitem + * + * @mbggenerated + */ + protected String orderByClause; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database table jsh_depotitem + * + * @mbggenerated + */ + protected boolean distinct; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database table jsh_depotitem + * + * @mbggenerated + */ + protected List oredCriteria; + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_depotitem + * + * @mbggenerated + */ + public DepotItemExample() { + oredCriteria = new ArrayList(); + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_depotitem + * + * @mbggenerated + */ + public void setOrderByClause(String orderByClause) { + this.orderByClause = orderByClause; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_depotitem + * + * @mbggenerated + */ + public String getOrderByClause() { + return orderByClause; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_depotitem + * + * @mbggenerated + */ + public void setDistinct(boolean distinct) { + this.distinct = distinct; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_depotitem + * + * @mbggenerated + */ + public boolean isDistinct() { + return distinct; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_depotitem + * + * @mbggenerated + */ + public List getOredCriteria() { + return oredCriteria; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_depotitem + * + * @mbggenerated + */ + public void or(Criteria criteria) { + oredCriteria.add(criteria); + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_depotitem + * + * @mbggenerated + */ + public Criteria or() { + Criteria criteria = createCriteriaInternal(); + oredCriteria.add(criteria); + return criteria; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_depotitem + * + * @mbggenerated + */ + public Criteria createCriteria() { + Criteria criteria = createCriteriaInternal(); + if (oredCriteria.size() == 0) { + oredCriteria.add(criteria); + } + return criteria; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_depotitem + * + * @mbggenerated + */ + protected Criteria createCriteriaInternal() { + Criteria criteria = new Criteria(); + return criteria; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_depotitem + * + * @mbggenerated + */ + public void clear() { + oredCriteria.clear(); + orderByClause = null; + distinct = false; + } + + /** + * This class was generated by MyBatis Generator. + * This class corresponds to the database table jsh_depotitem + * + * @mbggenerated + */ + protected abstract static class GeneratedCriteria { + protected List criteria; + + protected GeneratedCriteria() { + super(); + criteria = new ArrayList(); + } + + public boolean isValid() { + return criteria.size() > 0; + } + + public List getAllCriteria() { + return criteria; + } + + public List getCriteria() { + return criteria; + } + + protected void addCriterion(String condition) { + if (condition == null) { + throw new RuntimeException("Value for condition cannot be null"); + } + criteria.add(new Criterion(condition)); + } + + protected void addCriterion(String condition, Object value, String property) { + if (value == null) { + throw new RuntimeException("Value for " + property + " cannot be null"); + } + criteria.add(new Criterion(condition, value)); + } + + protected void addCriterion(String condition, Object value1, Object value2, String property) { + if (value1 == null || value2 == null) { + throw new RuntimeException("Between values for " + property + " cannot be null"); + } + criteria.add(new Criterion(condition, value1, value2)); + } + + public Criteria andIdIsNull() { + addCriterion("Id is null"); + return (Criteria) this; + } + + public Criteria andIdIsNotNull() { + addCriterion("Id is not null"); + return (Criteria) this; + } + + public Criteria andIdEqualTo(Long value) { + addCriterion("Id =", value, "id"); + return (Criteria) this; + } + + public Criteria andIdNotEqualTo(Long value) { + addCriterion("Id <>", value, "id"); + return (Criteria) this; + } + + public Criteria andIdGreaterThan(Long value) { + addCriterion("Id >", value, "id"); + return (Criteria) this; + } + + public Criteria andIdGreaterThanOrEqualTo(Long value) { + addCriterion("Id >=", value, "id"); + return (Criteria) this; + } + + public Criteria andIdLessThan(Long value) { + addCriterion("Id <", value, "id"); + return (Criteria) this; + } + + public Criteria andIdLessThanOrEqualTo(Long value) { + addCriterion("Id <=", value, "id"); + return (Criteria) this; + } + + public Criteria andIdIn(List values) { + addCriterion("Id in", values, "id"); + return (Criteria) this; + } + + public Criteria andIdNotIn(List values) { + addCriterion("Id not in", values, "id"); + return (Criteria) this; + } + + public Criteria andIdBetween(Long value1, Long value2) { + addCriterion("Id between", value1, value2, "id"); + return (Criteria) this; + } + + public Criteria andIdNotBetween(Long value1, Long value2) { + addCriterion("Id not between", value1, value2, "id"); + return (Criteria) this; + } + + public Criteria andHeaderidIsNull() { + addCriterion("HeaderId is null"); + return (Criteria) this; + } + + public Criteria andHeaderidIsNotNull() { + addCriterion("HeaderId is not null"); + return (Criteria) this; + } + + public Criteria andHeaderidEqualTo(Long value) { + addCriterion("HeaderId =", value, "headerid"); + return (Criteria) this; + } + + public Criteria andHeaderidNotEqualTo(Long value) { + addCriterion("HeaderId <>", value, "headerid"); + return (Criteria) this; + } + + public Criteria andHeaderidGreaterThan(Long value) { + addCriterion("HeaderId >", value, "headerid"); + return (Criteria) this; + } + + public Criteria andHeaderidGreaterThanOrEqualTo(Long value) { + addCriterion("HeaderId >=", value, "headerid"); + return (Criteria) this; + } + + public Criteria andHeaderidLessThan(Long value) { + addCriterion("HeaderId <", value, "headerid"); + return (Criteria) this; + } + + public Criteria andHeaderidLessThanOrEqualTo(Long value) { + addCriterion("HeaderId <=", value, "headerid"); + return (Criteria) this; + } + + public Criteria andHeaderidIn(List values) { + addCriterion("HeaderId in", values, "headerid"); + return (Criteria) this; + } + + public Criteria andHeaderidNotIn(List values) { + addCriterion("HeaderId not in", values, "headerid"); + return (Criteria) this; + } + + public Criteria andHeaderidBetween(Long value1, Long value2) { + addCriterion("HeaderId between", value1, value2, "headerid"); + return (Criteria) this; + } + + public Criteria andHeaderidNotBetween(Long value1, Long value2) { + addCriterion("HeaderId not between", value1, value2, "headerid"); + return (Criteria) this; + } + + public Criteria andMaterialidIsNull() { + addCriterion("MaterialId is null"); + return (Criteria) this; + } + + public Criteria andMaterialidIsNotNull() { + addCriterion("MaterialId is not null"); + return (Criteria) this; + } + + public Criteria andMaterialidEqualTo(Long value) { + addCriterion("MaterialId =", value, "materialid"); + return (Criteria) this; + } + + public Criteria andMaterialidNotEqualTo(Long value) { + addCriterion("MaterialId <>", value, "materialid"); + return (Criteria) this; + } + + public Criteria andMaterialidGreaterThan(Long value) { + addCriterion("MaterialId >", value, "materialid"); + return (Criteria) this; + } + + public Criteria andMaterialidGreaterThanOrEqualTo(Long value) { + addCriterion("MaterialId >=", value, "materialid"); + return (Criteria) this; + } + + public Criteria andMaterialidLessThan(Long value) { + addCriterion("MaterialId <", value, "materialid"); + return (Criteria) this; + } + + public Criteria andMaterialidLessThanOrEqualTo(Long value) { + addCriterion("MaterialId <=", value, "materialid"); + return (Criteria) this; + } + + public Criteria andMaterialidIn(List values) { + addCriterion("MaterialId in", values, "materialid"); + return (Criteria) this; + } + + public Criteria andMaterialidNotIn(List values) { + addCriterion("MaterialId not in", values, "materialid"); + return (Criteria) this; + } + + public Criteria andMaterialidBetween(Long value1, Long value2) { + addCriterion("MaterialId between", value1, value2, "materialid"); + return (Criteria) this; + } + + public Criteria andMaterialidNotBetween(Long value1, Long value2) { + addCriterion("MaterialId not between", value1, value2, "materialid"); + return (Criteria) this; + } + + public Criteria andMunitIsNull() { + addCriterion("MUnit is null"); + return (Criteria) this; + } + + public Criteria andMunitIsNotNull() { + addCriterion("MUnit is not null"); + return (Criteria) this; + } + + public Criteria andMunitEqualTo(String value) { + addCriterion("MUnit =", value, "munit"); + return (Criteria) this; + } + + public Criteria andMunitNotEqualTo(String value) { + addCriterion("MUnit <>", value, "munit"); + return (Criteria) this; + } + + public Criteria andMunitGreaterThan(String value) { + addCriterion("MUnit >", value, "munit"); + return (Criteria) this; + } + + public Criteria andMunitGreaterThanOrEqualTo(String value) { + addCriterion("MUnit >=", value, "munit"); + return (Criteria) this; + } + + public Criteria andMunitLessThan(String value) { + addCriterion("MUnit <", value, "munit"); + return (Criteria) this; + } + + public Criteria andMunitLessThanOrEqualTo(String value) { + addCriterion("MUnit <=", value, "munit"); + return (Criteria) this; + } + + public Criteria andMunitLike(String value) { + addCriterion("MUnit like", value, "munit"); + return (Criteria) this; + } + + public Criteria andMunitNotLike(String value) { + addCriterion("MUnit not like", value, "munit"); + return (Criteria) this; + } + + public Criteria andMunitIn(List values) { + addCriterion("MUnit in", values, "munit"); + return (Criteria) this; + } + + public Criteria andMunitNotIn(List values) { + addCriterion("MUnit not in", values, "munit"); + return (Criteria) this; + } + + public Criteria andMunitBetween(String value1, String value2) { + addCriterion("MUnit between", value1, value2, "munit"); + return (Criteria) this; + } + + public Criteria andMunitNotBetween(String value1, String value2) { + addCriterion("MUnit not between", value1, value2, "munit"); + return (Criteria) this; + } + + public Criteria andOpernumberIsNull() { + addCriterion("OperNumber is null"); + return (Criteria) this; + } + + public Criteria andOpernumberIsNotNull() { + addCriterion("OperNumber is not null"); + return (Criteria) this; + } + + public Criteria andOpernumberEqualTo(Double value) { + addCriterion("OperNumber =", value, "opernumber"); + return (Criteria) this; + } + + public Criteria andOpernumberNotEqualTo(Double value) { + addCriterion("OperNumber <>", value, "opernumber"); + return (Criteria) this; + } + + public Criteria andOpernumberGreaterThan(Double value) { + addCriterion("OperNumber >", value, "opernumber"); + return (Criteria) this; + } + + public Criteria andOpernumberGreaterThanOrEqualTo(Double value) { + addCriterion("OperNumber >=", value, "opernumber"); + return (Criteria) this; + } + + public Criteria andOpernumberLessThan(Double value) { + addCriterion("OperNumber <", value, "opernumber"); + return (Criteria) this; + } + + public Criteria andOpernumberLessThanOrEqualTo(Double value) { + addCriterion("OperNumber <=", value, "opernumber"); + return (Criteria) this; + } + + public Criteria andOpernumberIn(List values) { + addCriterion("OperNumber in", values, "opernumber"); + return (Criteria) this; + } + + public Criteria andOpernumberNotIn(List values) { + addCriterion("OperNumber not in", values, "opernumber"); + return (Criteria) this; + } + + public Criteria andOpernumberBetween(Double value1, Double value2) { + addCriterion("OperNumber between", value1, value2, "opernumber"); + return (Criteria) this; + } + + public Criteria andOpernumberNotBetween(Double value1, Double value2) { + addCriterion("OperNumber not between", value1, value2, "opernumber"); + return (Criteria) this; + } + + public Criteria andBasicnumberIsNull() { + addCriterion("BasicNumber is null"); + return (Criteria) this; + } + + public Criteria andBasicnumberIsNotNull() { + addCriterion("BasicNumber is not null"); + return (Criteria) this; + } + + public Criteria andBasicnumberEqualTo(Double value) { + addCriterion("BasicNumber =", value, "basicnumber"); + return (Criteria) this; + } + + public Criteria andBasicnumberNotEqualTo(Double value) { + addCriterion("BasicNumber <>", value, "basicnumber"); + return (Criteria) this; + } + + public Criteria andBasicnumberGreaterThan(Double value) { + addCriterion("BasicNumber >", value, "basicnumber"); + return (Criteria) this; + } + + public Criteria andBasicnumberGreaterThanOrEqualTo(Double value) { + addCriterion("BasicNumber >=", value, "basicnumber"); + return (Criteria) this; + } + + public Criteria andBasicnumberLessThan(Double value) { + addCriterion("BasicNumber <", value, "basicnumber"); + return (Criteria) this; + } + + public Criteria andBasicnumberLessThanOrEqualTo(Double value) { + addCriterion("BasicNumber <=", value, "basicnumber"); + return (Criteria) this; + } + + public Criteria andBasicnumberIn(List values) { + addCriterion("BasicNumber in", values, "basicnumber"); + return (Criteria) this; + } + + public Criteria andBasicnumberNotIn(List values) { + addCriterion("BasicNumber not in", values, "basicnumber"); + return (Criteria) this; + } + + public Criteria andBasicnumberBetween(Double value1, Double value2) { + addCriterion("BasicNumber between", value1, value2, "basicnumber"); + return (Criteria) this; + } + + public Criteria andBasicnumberNotBetween(Double value1, Double value2) { + addCriterion("BasicNumber not between", value1, value2, "basicnumber"); + return (Criteria) this; + } + + public Criteria andUnitpriceIsNull() { + addCriterion("UnitPrice is null"); + return (Criteria) this; + } + + public Criteria andUnitpriceIsNotNull() { + addCriterion("UnitPrice is not null"); + return (Criteria) this; + } + + public Criteria andUnitpriceEqualTo(Double value) { + addCriterion("UnitPrice =", value, "unitprice"); + return (Criteria) this; + } + + public Criteria andUnitpriceNotEqualTo(Double value) { + addCriterion("UnitPrice <>", value, "unitprice"); + return (Criteria) this; + } + + public Criteria andUnitpriceGreaterThan(Double value) { + addCriterion("UnitPrice >", value, "unitprice"); + return (Criteria) this; + } + + public Criteria andUnitpriceGreaterThanOrEqualTo(Double value) { + addCriterion("UnitPrice >=", value, "unitprice"); + return (Criteria) this; + } + + public Criteria andUnitpriceLessThan(Double value) { + addCriterion("UnitPrice <", value, "unitprice"); + return (Criteria) this; + } + + public Criteria andUnitpriceLessThanOrEqualTo(Double value) { + addCriterion("UnitPrice <=", value, "unitprice"); + return (Criteria) this; + } + + public Criteria andUnitpriceIn(List values) { + addCriterion("UnitPrice in", values, "unitprice"); + return (Criteria) this; + } + + public Criteria andUnitpriceNotIn(List values) { + addCriterion("UnitPrice not in", values, "unitprice"); + return (Criteria) this; + } + + public Criteria andUnitpriceBetween(Double value1, Double value2) { + addCriterion("UnitPrice between", value1, value2, "unitprice"); + return (Criteria) this; + } + + public Criteria andUnitpriceNotBetween(Double value1, Double value2) { + addCriterion("UnitPrice not between", value1, value2, "unitprice"); + return (Criteria) this; + } + + public Criteria andTaxunitpriceIsNull() { + addCriterion("TaxUnitPrice is null"); + return (Criteria) this; + } + + public Criteria andTaxunitpriceIsNotNull() { + addCriterion("TaxUnitPrice is not null"); + return (Criteria) this; + } + + public Criteria andTaxunitpriceEqualTo(Double value) { + addCriterion("TaxUnitPrice =", value, "taxunitprice"); + return (Criteria) this; + } + + public Criteria andTaxunitpriceNotEqualTo(Double value) { + addCriterion("TaxUnitPrice <>", value, "taxunitprice"); + return (Criteria) this; + } + + public Criteria andTaxunitpriceGreaterThan(Double value) { + addCriterion("TaxUnitPrice >", value, "taxunitprice"); + return (Criteria) this; + } + + public Criteria andTaxunitpriceGreaterThanOrEqualTo(Double value) { + addCriterion("TaxUnitPrice >=", value, "taxunitprice"); + return (Criteria) this; + } + + public Criteria andTaxunitpriceLessThan(Double value) { + addCriterion("TaxUnitPrice <", value, "taxunitprice"); + return (Criteria) this; + } + + public Criteria andTaxunitpriceLessThanOrEqualTo(Double value) { + addCriterion("TaxUnitPrice <=", value, "taxunitprice"); + return (Criteria) this; + } + + public Criteria andTaxunitpriceIn(List values) { + addCriterion("TaxUnitPrice in", values, "taxunitprice"); + return (Criteria) this; + } + + public Criteria andTaxunitpriceNotIn(List values) { + addCriterion("TaxUnitPrice not in", values, "taxunitprice"); + return (Criteria) this; + } + + public Criteria andTaxunitpriceBetween(Double value1, Double value2) { + addCriterion("TaxUnitPrice between", value1, value2, "taxunitprice"); + return (Criteria) this; + } + + public Criteria andTaxunitpriceNotBetween(Double value1, Double value2) { + addCriterion("TaxUnitPrice not between", value1, value2, "taxunitprice"); + return (Criteria) this; + } + + public Criteria andAllpriceIsNull() { + addCriterion("AllPrice is null"); + return (Criteria) this; + } + + public Criteria andAllpriceIsNotNull() { + addCriterion("AllPrice is not null"); + return (Criteria) this; + } + + public Criteria andAllpriceEqualTo(Double value) { + addCriterion("AllPrice =", value, "allprice"); + return (Criteria) this; + } + + public Criteria andAllpriceNotEqualTo(Double value) { + addCriterion("AllPrice <>", value, "allprice"); + return (Criteria) this; + } + + public Criteria andAllpriceGreaterThan(Double value) { + addCriterion("AllPrice >", value, "allprice"); + return (Criteria) this; + } + + public Criteria andAllpriceGreaterThanOrEqualTo(Double value) { + addCriterion("AllPrice >=", value, "allprice"); + return (Criteria) this; + } + + public Criteria andAllpriceLessThan(Double value) { + addCriterion("AllPrice <", value, "allprice"); + return (Criteria) this; + } + + public Criteria andAllpriceLessThanOrEqualTo(Double value) { + addCriterion("AllPrice <=", value, "allprice"); + return (Criteria) this; + } + + public Criteria andAllpriceIn(List values) { + addCriterion("AllPrice in", values, "allprice"); + return (Criteria) this; + } + + public Criteria andAllpriceNotIn(List values) { + addCriterion("AllPrice not in", values, "allprice"); + return (Criteria) this; + } + + public Criteria andAllpriceBetween(Double value1, Double value2) { + addCriterion("AllPrice between", value1, value2, "allprice"); + return (Criteria) this; + } + + public Criteria andAllpriceNotBetween(Double value1, Double value2) { + addCriterion("AllPrice not between", value1, value2, "allprice"); + return (Criteria) this; + } + + public Criteria andRemarkIsNull() { + addCriterion("Remark is null"); + return (Criteria) this; + } + + public Criteria andRemarkIsNotNull() { + addCriterion("Remark is not null"); + return (Criteria) this; + } + + public Criteria andRemarkEqualTo(String value) { + addCriterion("Remark =", value, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkNotEqualTo(String value) { + addCriterion("Remark <>", value, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkGreaterThan(String value) { + addCriterion("Remark >", value, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkGreaterThanOrEqualTo(String value) { + addCriterion("Remark >=", value, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkLessThan(String value) { + addCriterion("Remark <", value, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkLessThanOrEqualTo(String value) { + addCriterion("Remark <=", value, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkLike(String value) { + addCriterion("Remark like", value, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkNotLike(String value) { + addCriterion("Remark not like", value, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkIn(List values) { + addCriterion("Remark in", values, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkNotIn(List values) { + addCriterion("Remark not in", values, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkBetween(String value1, String value2) { + addCriterion("Remark between", value1, value2, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkNotBetween(String value1, String value2) { + addCriterion("Remark not between", value1, value2, "remark"); + return (Criteria) this; + } + + public Criteria andImgIsNull() { + addCriterion("Img is null"); + return (Criteria) this; + } + + public Criteria andImgIsNotNull() { + addCriterion("Img is not null"); + return (Criteria) this; + } + + public Criteria andImgEqualTo(String value) { + addCriterion("Img =", value, "img"); + return (Criteria) this; + } + + public Criteria andImgNotEqualTo(String value) { + addCriterion("Img <>", value, "img"); + return (Criteria) this; + } + + public Criteria andImgGreaterThan(String value) { + addCriterion("Img >", value, "img"); + return (Criteria) this; + } + + public Criteria andImgGreaterThanOrEqualTo(String value) { + addCriterion("Img >=", value, "img"); + return (Criteria) this; + } + + public Criteria andImgLessThan(String value) { + addCriterion("Img <", value, "img"); + return (Criteria) this; + } + + public Criteria andImgLessThanOrEqualTo(String value) { + addCriterion("Img <=", value, "img"); + return (Criteria) this; + } + + public Criteria andImgLike(String value) { + addCriterion("Img like", value, "img"); + return (Criteria) this; + } + + public Criteria andImgNotLike(String value) { + addCriterion("Img not like", value, "img"); + return (Criteria) this; + } + + public Criteria andImgIn(List values) { + addCriterion("Img in", values, "img"); + return (Criteria) this; + } + + public Criteria andImgNotIn(List values) { + addCriterion("Img not in", values, "img"); + return (Criteria) this; + } + + public Criteria andImgBetween(String value1, String value2) { + addCriterion("Img between", value1, value2, "img"); + return (Criteria) this; + } + + public Criteria andImgNotBetween(String value1, String value2) { + addCriterion("Img not between", value1, value2, "img"); + return (Criteria) this; + } + + public Criteria andIncidentalsIsNull() { + addCriterion("Incidentals is null"); + return (Criteria) this; + } + + public Criteria andIncidentalsIsNotNull() { + addCriterion("Incidentals is not null"); + return (Criteria) this; + } + + public Criteria andIncidentalsEqualTo(Double value) { + addCriterion("Incidentals =", value, "incidentals"); + return (Criteria) this; + } + + public Criteria andIncidentalsNotEqualTo(Double value) { + addCriterion("Incidentals <>", value, "incidentals"); + return (Criteria) this; + } + + public Criteria andIncidentalsGreaterThan(Double value) { + addCriterion("Incidentals >", value, "incidentals"); + return (Criteria) this; + } + + public Criteria andIncidentalsGreaterThanOrEqualTo(Double value) { + addCriterion("Incidentals >=", value, "incidentals"); + return (Criteria) this; + } + + public Criteria andIncidentalsLessThan(Double value) { + addCriterion("Incidentals <", value, "incidentals"); + return (Criteria) this; + } + + public Criteria andIncidentalsLessThanOrEqualTo(Double value) { + addCriterion("Incidentals <=", value, "incidentals"); + return (Criteria) this; + } + + public Criteria andIncidentalsIn(List values) { + addCriterion("Incidentals in", values, "incidentals"); + return (Criteria) this; + } + + public Criteria andIncidentalsNotIn(List values) { + addCriterion("Incidentals not in", values, "incidentals"); + return (Criteria) this; + } + + public Criteria andIncidentalsBetween(Double value1, Double value2) { + addCriterion("Incidentals between", value1, value2, "incidentals"); + return (Criteria) this; + } + + public Criteria andIncidentalsNotBetween(Double value1, Double value2) { + addCriterion("Incidentals not between", value1, value2, "incidentals"); + return (Criteria) this; + } + + public Criteria andDepotidIsNull() { + addCriterion("DepotId is null"); + return (Criteria) this; + } + + public Criteria andDepotidIsNotNull() { + addCriterion("DepotId is not null"); + return (Criteria) this; + } + + public Criteria andDepotidEqualTo(Long value) { + addCriterion("DepotId =", value, "depotid"); + return (Criteria) this; + } + + public Criteria andDepotidNotEqualTo(Long value) { + addCriterion("DepotId <>", value, "depotid"); + return (Criteria) this; + } + + public Criteria andDepotidGreaterThan(Long value) { + addCriterion("DepotId >", value, "depotid"); + return (Criteria) this; + } + + public Criteria andDepotidGreaterThanOrEqualTo(Long value) { + addCriterion("DepotId >=", value, "depotid"); + return (Criteria) this; + } + + public Criteria andDepotidLessThan(Long value) { + addCriterion("DepotId <", value, "depotid"); + return (Criteria) this; + } + + public Criteria andDepotidLessThanOrEqualTo(Long value) { + addCriterion("DepotId <=", value, "depotid"); + return (Criteria) this; + } + + public Criteria andDepotidIn(List values) { + addCriterion("DepotId in", values, "depotid"); + return (Criteria) this; + } + + public Criteria andDepotidNotIn(List values) { + addCriterion("DepotId not in", values, "depotid"); + return (Criteria) this; + } + + public Criteria andDepotidBetween(Long value1, Long value2) { + addCriterion("DepotId between", value1, value2, "depotid"); + return (Criteria) this; + } + + public Criteria andDepotidNotBetween(Long value1, Long value2) { + addCriterion("DepotId not between", value1, value2, "depotid"); + return (Criteria) this; + } + + public Criteria andAnotherdepotidIsNull() { + addCriterion("AnotherDepotId is null"); + return (Criteria) this; + } + + public Criteria andAnotherdepotidIsNotNull() { + addCriterion("AnotherDepotId is not null"); + return (Criteria) this; + } + + public Criteria andAnotherdepotidEqualTo(Long value) { + addCriterion("AnotherDepotId =", value, "anotherdepotid"); + return (Criteria) this; + } + + public Criteria andAnotherdepotidNotEqualTo(Long value) { + addCriterion("AnotherDepotId <>", value, "anotherdepotid"); + return (Criteria) this; + } + + public Criteria andAnotherdepotidGreaterThan(Long value) { + addCriterion("AnotherDepotId >", value, "anotherdepotid"); + return (Criteria) this; + } + + public Criteria andAnotherdepotidGreaterThanOrEqualTo(Long value) { + addCriterion("AnotherDepotId >=", value, "anotherdepotid"); + return (Criteria) this; + } + + public Criteria andAnotherdepotidLessThan(Long value) { + addCriterion("AnotherDepotId <", value, "anotherdepotid"); + return (Criteria) this; + } + + public Criteria andAnotherdepotidLessThanOrEqualTo(Long value) { + addCriterion("AnotherDepotId <=", value, "anotherdepotid"); + return (Criteria) this; + } + + public Criteria andAnotherdepotidIn(List values) { + addCriterion("AnotherDepotId in", values, "anotherdepotid"); + return (Criteria) this; + } + + public Criteria andAnotherdepotidNotIn(List values) { + addCriterion("AnotherDepotId not in", values, "anotherdepotid"); + return (Criteria) this; + } + + public Criteria andAnotherdepotidBetween(Long value1, Long value2) { + addCriterion("AnotherDepotId between", value1, value2, "anotherdepotid"); + return (Criteria) this; + } + + public Criteria andAnotherdepotidNotBetween(Long value1, Long value2) { + addCriterion("AnotherDepotId not between", value1, value2, "anotherdepotid"); + return (Criteria) this; + } + + public Criteria andTaxrateIsNull() { + addCriterion("TaxRate is null"); + return (Criteria) this; + } + + public Criteria andTaxrateIsNotNull() { + addCriterion("TaxRate is not null"); + return (Criteria) this; + } + + public Criteria andTaxrateEqualTo(Double value) { + addCriterion("TaxRate =", value, "taxrate"); + return (Criteria) this; + } + + public Criteria andTaxrateNotEqualTo(Double value) { + addCriterion("TaxRate <>", value, "taxrate"); + return (Criteria) this; + } + + public Criteria andTaxrateGreaterThan(Double value) { + addCriterion("TaxRate >", value, "taxrate"); + return (Criteria) this; + } + + public Criteria andTaxrateGreaterThanOrEqualTo(Double value) { + addCriterion("TaxRate >=", value, "taxrate"); + return (Criteria) this; + } + + public Criteria andTaxrateLessThan(Double value) { + addCriterion("TaxRate <", value, "taxrate"); + return (Criteria) this; + } + + public Criteria andTaxrateLessThanOrEqualTo(Double value) { + addCriterion("TaxRate <=", value, "taxrate"); + return (Criteria) this; + } + + public Criteria andTaxrateIn(List values) { + addCriterion("TaxRate in", values, "taxrate"); + return (Criteria) this; + } + + public Criteria andTaxrateNotIn(List values) { + addCriterion("TaxRate not in", values, "taxrate"); + return (Criteria) this; + } + + public Criteria andTaxrateBetween(Double value1, Double value2) { + addCriterion("TaxRate between", value1, value2, "taxrate"); + return (Criteria) this; + } + + public Criteria andTaxrateNotBetween(Double value1, Double value2) { + addCriterion("TaxRate not between", value1, value2, "taxrate"); + return (Criteria) this; + } + + public Criteria andTaxmoneyIsNull() { + addCriterion("TaxMoney is null"); + return (Criteria) this; + } + + public Criteria andTaxmoneyIsNotNull() { + addCriterion("TaxMoney is not null"); + return (Criteria) this; + } + + public Criteria andTaxmoneyEqualTo(Double value) { + addCriterion("TaxMoney =", value, "taxmoney"); + return (Criteria) this; + } + + public Criteria andTaxmoneyNotEqualTo(Double value) { + addCriterion("TaxMoney <>", value, "taxmoney"); + return (Criteria) this; + } + + public Criteria andTaxmoneyGreaterThan(Double value) { + addCriterion("TaxMoney >", value, "taxmoney"); + return (Criteria) this; + } + + public Criteria andTaxmoneyGreaterThanOrEqualTo(Double value) { + addCriterion("TaxMoney >=", value, "taxmoney"); + return (Criteria) this; + } + + public Criteria andTaxmoneyLessThan(Double value) { + addCriterion("TaxMoney <", value, "taxmoney"); + return (Criteria) this; + } + + public Criteria andTaxmoneyLessThanOrEqualTo(Double value) { + addCriterion("TaxMoney <=", value, "taxmoney"); + return (Criteria) this; + } + + public Criteria andTaxmoneyIn(List values) { + addCriterion("TaxMoney in", values, "taxmoney"); + return (Criteria) this; + } + + public Criteria andTaxmoneyNotIn(List values) { + addCriterion("TaxMoney not in", values, "taxmoney"); + return (Criteria) this; + } + + public Criteria andTaxmoneyBetween(Double value1, Double value2) { + addCriterion("TaxMoney between", value1, value2, "taxmoney"); + return (Criteria) this; + } + + public Criteria andTaxmoneyNotBetween(Double value1, Double value2) { + addCriterion("TaxMoney not between", value1, value2, "taxmoney"); + return (Criteria) this; + } + + public Criteria andTaxlastmoneyIsNull() { + addCriterion("TaxLastMoney is null"); + return (Criteria) this; + } + + public Criteria andTaxlastmoneyIsNotNull() { + addCriterion("TaxLastMoney is not null"); + return (Criteria) this; + } + + public Criteria andTaxlastmoneyEqualTo(Double value) { + addCriterion("TaxLastMoney =", value, "taxlastmoney"); + return (Criteria) this; + } + + public Criteria andTaxlastmoneyNotEqualTo(Double value) { + addCriterion("TaxLastMoney <>", value, "taxlastmoney"); + return (Criteria) this; + } + + public Criteria andTaxlastmoneyGreaterThan(Double value) { + addCriterion("TaxLastMoney >", value, "taxlastmoney"); + return (Criteria) this; + } + + public Criteria andTaxlastmoneyGreaterThanOrEqualTo(Double value) { + addCriterion("TaxLastMoney >=", value, "taxlastmoney"); + return (Criteria) this; + } + + public Criteria andTaxlastmoneyLessThan(Double value) { + addCriterion("TaxLastMoney <", value, "taxlastmoney"); + return (Criteria) this; + } + + public Criteria andTaxlastmoneyLessThanOrEqualTo(Double value) { + addCriterion("TaxLastMoney <=", value, "taxlastmoney"); + return (Criteria) this; + } + + public Criteria andTaxlastmoneyIn(List values) { + addCriterion("TaxLastMoney in", values, "taxlastmoney"); + return (Criteria) this; + } + + public Criteria andTaxlastmoneyNotIn(List values) { + addCriterion("TaxLastMoney not in", values, "taxlastmoney"); + return (Criteria) this; + } + + public Criteria andTaxlastmoneyBetween(Double value1, Double value2) { + addCriterion("TaxLastMoney between", value1, value2, "taxlastmoney"); + return (Criteria) this; + } + + public Criteria andTaxlastmoneyNotBetween(Double value1, Double value2) { + addCriterion("TaxLastMoney not between", value1, value2, "taxlastmoney"); + return (Criteria) this; + } + + public Criteria andOtherfield1IsNull() { + addCriterion("OtherField1 is null"); + return (Criteria) this; + } + + public Criteria andOtherfield1IsNotNull() { + addCriterion("OtherField1 is not null"); + return (Criteria) this; + } + + public Criteria andOtherfield1EqualTo(String value) { + addCriterion("OtherField1 =", value, "otherfield1"); + return (Criteria) this; + } + + public Criteria andOtherfield1NotEqualTo(String value) { + addCriterion("OtherField1 <>", value, "otherfield1"); + return (Criteria) this; + } + + public Criteria andOtherfield1GreaterThan(String value) { + addCriterion("OtherField1 >", value, "otherfield1"); + return (Criteria) this; + } + + public Criteria andOtherfield1GreaterThanOrEqualTo(String value) { + addCriterion("OtherField1 >=", value, "otherfield1"); + return (Criteria) this; + } + + public Criteria andOtherfield1LessThan(String value) { + addCriterion("OtherField1 <", value, "otherfield1"); + return (Criteria) this; + } + + public Criteria andOtherfield1LessThanOrEqualTo(String value) { + addCriterion("OtherField1 <=", value, "otherfield1"); + return (Criteria) this; + } + + public Criteria andOtherfield1Like(String value) { + addCriterion("OtherField1 like", value, "otherfield1"); + return (Criteria) this; + } + + public Criteria andOtherfield1NotLike(String value) { + addCriterion("OtherField1 not like", value, "otherfield1"); + return (Criteria) this; + } + + public Criteria andOtherfield1In(List values) { + addCriterion("OtherField1 in", values, "otherfield1"); + return (Criteria) this; + } + + public Criteria andOtherfield1NotIn(List values) { + addCriterion("OtherField1 not in", values, "otherfield1"); + return (Criteria) this; + } + + public Criteria andOtherfield1Between(String value1, String value2) { + addCriterion("OtherField1 between", value1, value2, "otherfield1"); + return (Criteria) this; + } + + public Criteria andOtherfield1NotBetween(String value1, String value2) { + addCriterion("OtherField1 not between", value1, value2, "otherfield1"); + return (Criteria) this; + } + + public Criteria andOtherfield2IsNull() { + addCriterion("OtherField2 is null"); + return (Criteria) this; + } + + public Criteria andOtherfield2IsNotNull() { + addCriterion("OtherField2 is not null"); + return (Criteria) this; + } + + public Criteria andOtherfield2EqualTo(String value) { + addCriterion("OtherField2 =", value, "otherfield2"); + return (Criteria) this; + } + + public Criteria andOtherfield2NotEqualTo(String value) { + addCriterion("OtherField2 <>", value, "otherfield2"); + return (Criteria) this; + } + + public Criteria andOtherfield2GreaterThan(String value) { + addCriterion("OtherField2 >", value, "otherfield2"); + return (Criteria) this; + } + + public Criteria andOtherfield2GreaterThanOrEqualTo(String value) { + addCriterion("OtherField2 >=", value, "otherfield2"); + return (Criteria) this; + } + + public Criteria andOtherfield2LessThan(String value) { + addCriterion("OtherField2 <", value, "otherfield2"); + return (Criteria) this; + } + + public Criteria andOtherfield2LessThanOrEqualTo(String value) { + addCriterion("OtherField2 <=", value, "otherfield2"); + return (Criteria) this; + } + + public Criteria andOtherfield2Like(String value) { + addCriterion("OtherField2 like", value, "otherfield2"); + return (Criteria) this; + } + + public Criteria andOtherfield2NotLike(String value) { + addCriterion("OtherField2 not like", value, "otherfield2"); + return (Criteria) this; + } + + public Criteria andOtherfield2In(List values) { + addCriterion("OtherField2 in", values, "otherfield2"); + return (Criteria) this; + } + + public Criteria andOtherfield2NotIn(List values) { + addCriterion("OtherField2 not in", values, "otherfield2"); + return (Criteria) this; + } + + public Criteria andOtherfield2Between(String value1, String value2) { + addCriterion("OtherField2 between", value1, value2, "otherfield2"); + return (Criteria) this; + } + + public Criteria andOtherfield2NotBetween(String value1, String value2) { + addCriterion("OtherField2 not between", value1, value2, "otherfield2"); + return (Criteria) this; + } + + public Criteria andOtherfield3IsNull() { + addCriterion("OtherField3 is null"); + return (Criteria) this; + } + + public Criteria andOtherfield3IsNotNull() { + addCriterion("OtherField3 is not null"); + return (Criteria) this; + } + + public Criteria andOtherfield3EqualTo(String value) { + addCriterion("OtherField3 =", value, "otherfield3"); + return (Criteria) this; + } + + public Criteria andOtherfield3NotEqualTo(String value) { + addCriterion("OtherField3 <>", value, "otherfield3"); + return (Criteria) this; + } + + public Criteria andOtherfield3GreaterThan(String value) { + addCriterion("OtherField3 >", value, "otherfield3"); + return (Criteria) this; + } + + public Criteria andOtherfield3GreaterThanOrEqualTo(String value) { + addCriterion("OtherField3 >=", value, "otherfield3"); + return (Criteria) this; + } + + public Criteria andOtherfield3LessThan(String value) { + addCriterion("OtherField3 <", value, "otherfield3"); + return (Criteria) this; + } + + public Criteria andOtherfield3LessThanOrEqualTo(String value) { + addCriterion("OtherField3 <=", value, "otherfield3"); + return (Criteria) this; + } + + public Criteria andOtherfield3Like(String value) { + addCriterion("OtherField3 like", value, "otherfield3"); + return (Criteria) this; + } + + public Criteria andOtherfield3NotLike(String value) { + addCriterion("OtherField3 not like", value, "otherfield3"); + return (Criteria) this; + } + + public Criteria andOtherfield3In(List values) { + addCriterion("OtherField3 in", values, "otherfield3"); + return (Criteria) this; + } + + public Criteria andOtherfield3NotIn(List values) { + addCriterion("OtherField3 not in", values, "otherfield3"); + return (Criteria) this; + } + + public Criteria andOtherfield3Between(String value1, String value2) { + addCriterion("OtherField3 between", value1, value2, "otherfield3"); + return (Criteria) this; + } + + public Criteria andOtherfield3NotBetween(String value1, String value2) { + addCriterion("OtherField3 not between", value1, value2, "otherfield3"); + return (Criteria) this; + } + + public Criteria andOtherfield4IsNull() { + addCriterion("OtherField4 is null"); + return (Criteria) this; + } + + public Criteria andOtherfield4IsNotNull() { + addCriterion("OtherField4 is not null"); + return (Criteria) this; + } + + public Criteria andOtherfield4EqualTo(String value) { + addCriterion("OtherField4 =", value, "otherfield4"); + return (Criteria) this; + } + + public Criteria andOtherfield4NotEqualTo(String value) { + addCriterion("OtherField4 <>", value, "otherfield4"); + return (Criteria) this; + } + + public Criteria andOtherfield4GreaterThan(String value) { + addCriterion("OtherField4 >", value, "otherfield4"); + return (Criteria) this; + } + + public Criteria andOtherfield4GreaterThanOrEqualTo(String value) { + addCriterion("OtherField4 >=", value, "otherfield4"); + return (Criteria) this; + } + + public Criteria andOtherfield4LessThan(String value) { + addCriterion("OtherField4 <", value, "otherfield4"); + return (Criteria) this; + } + + public Criteria andOtherfield4LessThanOrEqualTo(String value) { + addCriterion("OtherField4 <=", value, "otherfield4"); + return (Criteria) this; + } + + public Criteria andOtherfield4Like(String value) { + addCriterion("OtherField4 like", value, "otherfield4"); + return (Criteria) this; + } + + public Criteria andOtherfield4NotLike(String value) { + addCriterion("OtherField4 not like", value, "otherfield4"); + return (Criteria) this; + } + + public Criteria andOtherfield4In(List values) { + addCriterion("OtherField4 in", values, "otherfield4"); + return (Criteria) this; + } + + public Criteria andOtherfield4NotIn(List values) { + addCriterion("OtherField4 not in", values, "otherfield4"); + return (Criteria) this; + } + + public Criteria andOtherfield4Between(String value1, String value2) { + addCriterion("OtherField4 between", value1, value2, "otherfield4"); + return (Criteria) this; + } + + public Criteria andOtherfield4NotBetween(String value1, String value2) { + addCriterion("OtherField4 not between", value1, value2, "otherfield4"); + return (Criteria) this; + } + + public Criteria andOtherfield5IsNull() { + addCriterion("OtherField5 is null"); + return (Criteria) this; + } + + public Criteria andOtherfield5IsNotNull() { + addCriterion("OtherField5 is not null"); + return (Criteria) this; + } + + public Criteria andOtherfield5EqualTo(String value) { + addCriterion("OtherField5 =", value, "otherfield5"); + return (Criteria) this; + } + + public Criteria andOtherfield5NotEqualTo(String value) { + addCriterion("OtherField5 <>", value, "otherfield5"); + return (Criteria) this; + } + + public Criteria andOtherfield5GreaterThan(String value) { + addCriterion("OtherField5 >", value, "otherfield5"); + return (Criteria) this; + } + + public Criteria andOtherfield5GreaterThanOrEqualTo(String value) { + addCriterion("OtherField5 >=", value, "otherfield5"); + return (Criteria) this; + } + + public Criteria andOtherfield5LessThan(String value) { + addCriterion("OtherField5 <", value, "otherfield5"); + return (Criteria) this; + } + + public Criteria andOtherfield5LessThanOrEqualTo(String value) { + addCriterion("OtherField5 <=", value, "otherfield5"); + return (Criteria) this; + } + + public Criteria andOtherfield5Like(String value) { + addCriterion("OtherField5 like", value, "otherfield5"); + return (Criteria) this; + } + + public Criteria andOtherfield5NotLike(String value) { + addCriterion("OtherField5 not like", value, "otherfield5"); + return (Criteria) this; + } + + public Criteria andOtherfield5In(List values) { + addCriterion("OtherField5 in", values, "otherfield5"); + return (Criteria) this; + } + + public Criteria andOtherfield5NotIn(List values) { + addCriterion("OtherField5 not in", values, "otherfield5"); + return (Criteria) this; + } + + public Criteria andOtherfield5Between(String value1, String value2) { + addCriterion("OtherField5 between", value1, value2, "otherfield5"); + return (Criteria) this; + } + + public Criteria andOtherfield5NotBetween(String value1, String value2) { + addCriterion("OtherField5 not between", value1, value2, "otherfield5"); + return (Criteria) this; + } + + public Criteria andMtypeIsNull() { + addCriterion("MType is null"); + return (Criteria) this; + } + + public Criteria andMtypeIsNotNull() { + addCriterion("MType is not null"); + return (Criteria) this; + } + + public Criteria andMtypeEqualTo(String value) { + addCriterion("MType =", value, "mtype"); + return (Criteria) this; + } + + public Criteria andMtypeNotEqualTo(String value) { + addCriterion("MType <>", value, "mtype"); + return (Criteria) this; + } + + public Criteria andMtypeGreaterThan(String value) { + addCriterion("MType >", value, "mtype"); + return (Criteria) this; + } + + public Criteria andMtypeGreaterThanOrEqualTo(String value) { + addCriterion("MType >=", value, "mtype"); + return (Criteria) this; + } + + public Criteria andMtypeLessThan(String value) { + addCriterion("MType <", value, "mtype"); + return (Criteria) this; + } + + public Criteria andMtypeLessThanOrEqualTo(String value) { + addCriterion("MType <=", value, "mtype"); + return (Criteria) this; + } + + public Criteria andMtypeLike(String value) { + addCriterion("MType like", value, "mtype"); + return (Criteria) this; + } + + public Criteria andMtypeNotLike(String value) { + addCriterion("MType not like", value, "mtype"); + return (Criteria) this; + } + + public Criteria andMtypeIn(List values) { + addCriterion("MType in", values, "mtype"); + return (Criteria) this; + } + + public Criteria andMtypeNotIn(List values) { + addCriterion("MType not in", values, "mtype"); + return (Criteria) this; + } + + public Criteria andMtypeBetween(String value1, String value2) { + addCriterion("MType between", value1, value2, "mtype"); + return (Criteria) this; + } + + public Criteria andMtypeNotBetween(String value1, String value2) { + addCriterion("MType not between", value1, value2, "mtype"); + return (Criteria) this; + } + } + + /** + * This class was generated by MyBatis Generator. + * This class corresponds to the database table jsh_depotitem + * + * @mbggenerated do_not_delete_during_merge + */ + public static class Criteria extends GeneratedCriteria { + + protected Criteria() { + super(); + } + } + + /** + * This class was generated by MyBatis Generator. + * This class corresponds to the database table jsh_depotitem + * + * @mbggenerated + */ + public static class Criterion { + private String condition; + + private Object value; + + private Object secondValue; + + private boolean noValue; + + private boolean singleValue; + + private boolean betweenValue; + + private boolean listValue; + + private String typeHandler; + + public String getCondition() { + return condition; + } + + public Object getValue() { + return value; + } + + public Object getSecondValue() { + return secondValue; + } + + public boolean isNoValue() { + return noValue; + } + + public boolean isSingleValue() { + return singleValue; + } + + public boolean isBetweenValue() { + return betweenValue; + } + + public boolean isListValue() { + return listValue; + } + + public String getTypeHandler() { + return typeHandler; + } + + protected Criterion(String condition) { + super(); + this.condition = condition; + this.typeHandler = null; + this.noValue = true; + } + + protected Criterion(String condition, Object value, String typeHandler) { + super(); + this.condition = condition; + this.value = value; + this.typeHandler = typeHandler; + if (value instanceof List) { + this.listValue = true; + } else { + this.singleValue = true; + } + } + + protected Criterion(String condition, Object value) { + this(condition, value, null); + } + + protected Criterion(String condition, Object value, Object secondValue, String typeHandler) { + super(); + this.condition = condition; + this.value = value; + this.secondValue = secondValue; + this.typeHandler = typeHandler; + this.betweenValue = true; + } + + protected Criterion(String condition, Object value, Object secondValue) { + this(condition, value, secondValue, null); + } + } +} \ No newline at end of file diff --git a/src/main/java/com/jsh/erp/datasource/entities/DepotItemVo4DetailByTypeAndMId.java b/src/main/java/com/jsh/erp/datasource/entities/DepotItemVo4DetailByTypeAndMId.java new file mode 100644 index 00000000..d6ad0a58 --- /dev/null +++ b/src/main/java/com/jsh/erp/datasource/entities/DepotItemVo4DetailByTypeAndMId.java @@ -0,0 +1,46 @@ +package com.jsh.erp.datasource.entities; + +import java.util.Date; + +public class DepotItemVo4DetailByTypeAndMId { + + private String number; + + private String newtype; + + private Integer bnum; + + private Date otime; + + public String getNumber() { + return number; + } + + public void setNumber(String number) { + this.number = number; + } + + public String getNewtype() { + return newtype; + } + + public void setNewtype(String newtype) { + this.newtype = newtype; + } + + public Integer getBnum() { + return bnum; + } + + public void setBnum(Integer bnum) { + this.bnum = bnum; + } + + public Date getOtime() { + return otime; + } + + public void setOtime(Date otime) { + this.otime = otime; + } +} \ No newline at end of file diff --git a/src/main/java/com/jsh/erp/datasource/entities/DepotItemVo4HeaderId.java b/src/main/java/com/jsh/erp/datasource/entities/DepotItemVo4HeaderId.java new file mode 100644 index 00000000..0e6eda79 --- /dev/null +++ b/src/main/java/com/jsh/erp/datasource/entities/DepotItemVo4HeaderId.java @@ -0,0 +1,15 @@ +package com.jsh.erp.datasource.entities; + +public class DepotItemVo4HeaderId { + + private Long headerid; + + public Long getHeaderid() { + return headerid; + } + + public void setHeaderid(Long headerid) { + this.headerid = headerid; + } + +} \ No newline at end of file diff --git a/src/main/java/com/jsh/erp/datasource/entities/DepotItemVo4Material.java b/src/main/java/com/jsh/erp/datasource/entities/DepotItemVo4Material.java new file mode 100644 index 00000000..dbb2b9af --- /dev/null +++ b/src/main/java/com/jsh/erp/datasource/entities/DepotItemVo4Material.java @@ -0,0 +1,256 @@ +package com.jsh.erp.datasource.entities; + +import java.util.Date; + +public class DepotItemVo4Material { + + private Long id; + + private Long headerid; + + private Long materialid; + + private String munit; + + private Double opernumber; + + private Double basicnumber; + + private Double unitprice; + + private Double taxunitprice; + + private Double allprice; + + private String remark; + + private String img; + + private Double incidentals; + + private Long depotid; + + private Long anotherdepotid; + + private Double taxrate; + + private Double taxmoney; + + private Double taxlastmoney; + + private String otherfield1; + + private String otherfield2; + + private String otherfield3; + + private String otherfield4; + + private String otherfield5; + + private String mtype; + + private String mname; + + private String mmodel; + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public Long getHeaderid() { + return headerid; + } + + public void setHeaderid(Long headerid) { + this.headerid = headerid; + } + + public Long getMaterialid() { + return materialid; + } + + public void setMaterialid(Long materialid) { + this.materialid = materialid; + } + + public String getMunit() { + return munit; + } + + public void setMunit(String munit) { + this.munit = munit; + } + + public Double getOpernumber() { + return opernumber; + } + + public void setOpernumber(Double opernumber) { + this.opernumber = opernumber; + } + + public Double getBasicnumber() { + return basicnumber; + } + + public void setBasicnumber(Double basicnumber) { + this.basicnumber = basicnumber; + } + + public Double getUnitprice() { + return unitprice; + } + + public void setUnitprice(Double unitprice) { + this.unitprice = unitprice; + } + + public Double getTaxunitprice() { + return taxunitprice; + } + + public void setTaxunitprice(Double taxunitprice) { + this.taxunitprice = taxunitprice; + } + + public Double getAllprice() { + return allprice; + } + + public void setAllprice(Double allprice) { + this.allprice = allprice; + } + + public String getRemark() { + return remark; + } + + public void setRemark(String remark) { + this.remark = remark; + } + + public String getImg() { + return img; + } + + public void setImg(String img) { + this.img = img; + } + + public Double getIncidentals() { + return incidentals; + } + + public void setIncidentals(Double incidentals) { + this.incidentals = incidentals; + } + + public Long getDepotid() { + return depotid; + } + + public void setDepotid(Long depotid) { + this.depotid = depotid; + } + + public Long getAnotherdepotid() { + return anotherdepotid; + } + + public void setAnotherdepotid(Long anotherdepotid) { + this.anotherdepotid = anotherdepotid; + } + + public Double getTaxrate() { + return taxrate; + } + + public void setTaxrate(Double taxrate) { + this.taxrate = taxrate; + } + + public Double getTaxmoney() { + return taxmoney; + } + + public void setTaxmoney(Double taxmoney) { + this.taxmoney = taxmoney; + } + + public Double getTaxlastmoney() { + return taxlastmoney; + } + + public void setTaxlastmoney(Double taxlastmoney) { + this.taxlastmoney = taxlastmoney; + } + + public String getOtherfield1() { + return otherfield1; + } + + public void setOtherfield1(String otherfield1) { + this.otherfield1 = otherfield1; + } + + public String getOtherfield2() { + return otherfield2; + } + + public void setOtherfield2(String otherfield2) { + this.otherfield2 = otherfield2; + } + + public String getOtherfield3() { + return otherfield3; + } + + public void setOtherfield3(String otherfield3) { + this.otherfield3 = otherfield3; + } + + public String getOtherfield4() { + return otherfield4; + } + + public void setOtherfield4(String otherfield4) { + this.otherfield4 = otherfield4; + } + + public String getOtherfield5() { + return otherfield5; + } + + public void setOtherfield5(String otherfield5) { + this.otherfield5 = otherfield5; + } + + public String getMtype() { + return mtype; + } + + public void setMtype(String mtype) { + this.mtype = mtype; + } + + public String getMname() { + return mname; + } + + public void setMname(String mname) { + this.mname = mname; + } + + public String getMmodel() { + return mmodel; + } + + public void setMmodel(String mmodel) { + this.mmodel = mmodel; + } +} \ No newline at end of file diff --git a/src/main/java/com/jsh/erp/datasource/entities/DepotItemVo4WithInfoEx.java b/src/main/java/com/jsh/erp/datasource/entities/DepotItemVo4WithInfoEx.java new file mode 100644 index 00000000..697dd3e1 --- /dev/null +++ b/src/main/java/com/jsh/erp/datasource/entities/DepotItemVo4WithInfoEx.java @@ -0,0 +1,364 @@ +package com.jsh.erp.datasource.entities; + +public class DepotItemVo4WithInfoEx { + + private Long id; + + private Long headerid; + + private Long materialid; + + private String munit; + + private Double opernumber; + + private Double basicnumber; + + private Double unitprice; + + private Double taxunitprice; + + private Double allprice; + + private String remark; + + private String img; + + private Double incidentals; + + private Long depotid; + + private Long anotherdepotid; + + private Double taxrate; + + private Double taxmoney; + + private Double taxlastmoney; + + private String otherfield1; + + private String otherfield2; + + private String otherfield3; + + private String otherfield4; + + private String otherfield5; + + private String mtype; + + private String MName; + + private String MModel; + + private String MaterialUnit; + + private String MColor; + + private String MStandard; + + private String MMfrs; + + private String MOtherField1; + + private String MOtherField2; + + private String MOtherField3; + + private String DepotName; + + private String AnotherDepotName; + + private Long UnitId; + + private String UName; + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public Long getHeaderid() { + return headerid; + } + + public void setHeaderid(Long headerid) { + this.headerid = headerid; + } + + public Long getMaterialid() { + return materialid; + } + + public void setMaterialid(Long materialid) { + this.materialid = materialid; + } + + public String getMunit() { + return munit; + } + + public void setMunit(String munit) { + this.munit = munit; + } + + public Double getOpernumber() { + return opernumber; + } + + public void setOpernumber(Double opernumber) { + this.opernumber = opernumber; + } + + public Double getBasicnumber() { + return basicnumber; + } + + public void setBasicnumber(Double basicnumber) { + this.basicnumber = basicnumber; + } + + public Double getUnitprice() { + return unitprice; + } + + public void setUnitprice(Double unitprice) { + this.unitprice = unitprice; + } + + public Double getTaxunitprice() { + return taxunitprice; + } + + public void setTaxunitprice(Double taxunitprice) { + this.taxunitprice = taxunitprice; + } + + public Double getAllprice() { + return allprice; + } + + public void setAllprice(Double allprice) { + this.allprice = allprice; + } + + public String getRemark() { + return remark; + } + + public void setRemark(String remark) { + this.remark = remark; + } + + public String getImg() { + return img; + } + + public void setImg(String img) { + this.img = img; + } + + public Double getIncidentals() { + return incidentals; + } + + public void setIncidentals(Double incidentals) { + this.incidentals = incidentals; + } + + public Long getDepotid() { + return depotid; + } + + public void setDepotid(Long depotid) { + this.depotid = depotid; + } + + public Long getAnotherdepotid() { + return anotherdepotid; + } + + public void setAnotherdepotid(Long anotherdepotid) { + this.anotherdepotid = anotherdepotid; + } + + public Double getTaxrate() { + return taxrate; + } + + public void setTaxrate(Double taxrate) { + this.taxrate = taxrate; + } + + public Double getTaxmoney() { + return taxmoney; + } + + public void setTaxmoney(Double taxmoney) { + this.taxmoney = taxmoney; + } + + public Double getTaxlastmoney() { + return taxlastmoney; + } + + public void setTaxlastmoney(Double taxlastmoney) { + this.taxlastmoney = taxlastmoney; + } + + public String getOtherfield1() { + return otherfield1; + } + + public void setOtherfield1(String otherfield1) { + this.otherfield1 = otherfield1; + } + + public String getOtherfield2() { + return otherfield2; + } + + public void setOtherfield2(String otherfield2) { + this.otherfield2 = otherfield2; + } + + public String getOtherfield3() { + return otherfield3; + } + + public void setOtherfield3(String otherfield3) { + this.otherfield3 = otherfield3; + } + + public String getOtherfield4() { + return otherfield4; + } + + public void setOtherfield4(String otherfield4) { + this.otherfield4 = otherfield4; + } + + public String getOtherfield5() { + return otherfield5; + } + + public void setOtherfield5(String otherfield5) { + this.otherfield5 = otherfield5; + } + + public String getMtype() { + return mtype; + } + + public void setMtype(String mtype) { + this.mtype = mtype; + } + + public String getMName() { + return MName; + } + + public void setMName(String MName) { + this.MName = MName; + } + + public String getMModel() { + return MModel; + } + + public void setMModel(String MModel) { + this.MModel = MModel; + } + + public String getMaterialUnit() { + return MaterialUnit; + } + + public void setMaterialUnit(String materialUnit) { + MaterialUnit = materialUnit; + } + + public String getMColor() { + return MColor; + } + + public void setMColor(String MColor) { + this.MColor = MColor; + } + + public String getMStandard() { + return MStandard; + } + + public void setMStandard(String MStandard) { + this.MStandard = MStandard; + } + + public String getMMfrs() { + return MMfrs; + } + + public void setMMfrs(String MMfrs) { + this.MMfrs = MMfrs; + } + + public String getMOtherField1() { + return MOtherField1; + } + + public void setMOtherField1(String MOtherField1) { + this.MOtherField1 = MOtherField1; + } + + public String getMOtherField2() { + return MOtherField2; + } + + public void setMOtherField2(String MOtherField2) { + this.MOtherField2 = MOtherField2; + } + + public String getMOtherField3() { + return MOtherField3; + } + + public void setMOtherField3(String MOtherField3) { + this.MOtherField3 = MOtherField3; + } + + public String getDepotName() { + return DepotName; + } + + public void setDepotName(String depotName) { + DepotName = depotName; + } + + public String getAnotherDepotName() { + return AnotherDepotName; + } + + public void setAnotherDepotName(String anotherDepotName) { + AnotherDepotName = anotherDepotName; + } + + public Long getUnitId() { + return UnitId; + } + + public void setUnitId(Long unitId) { + UnitId = unitId; + } + + public String getUName() { + return UName; + } + + public void setUName(String UName) { + this.UName = UName; + } +} \ No newline at end of file diff --git a/src/main/java/com/jsh/erp/datasource/entities/Functions.java b/src/main/java/com/jsh/erp/datasource/entities/Functions.java new file mode 100644 index 00000000..0bc861c7 --- /dev/null +++ b/src/main/java/com/jsh/erp/datasource/entities/Functions.java @@ -0,0 +1,323 @@ +package com.jsh.erp.datasource.entities; + +public class Functions { + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database column jsh_functions.Id + * + * @mbggenerated + */ + private Long id; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database column jsh_functions.Number + * + * @mbggenerated + */ + private String number; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database column jsh_functions.Name + * + * @mbggenerated + */ + private String name; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database column jsh_functions.PNumber + * + * @mbggenerated + */ + private String pnumber; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database column jsh_functions.URL + * + * @mbggenerated + */ + private String url; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database column jsh_functions.State + * + * @mbggenerated + */ + private Boolean state; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database column jsh_functions.Sort + * + * @mbggenerated + */ + private String sort; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database column jsh_functions.Enabled + * + * @mbggenerated + */ + private Boolean enabled; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database column jsh_functions.Type + * + * @mbggenerated + */ + private String type; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database column jsh_functions.PushBtn + * + * @mbggenerated + */ + private String pushbtn; + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column jsh_functions.Id + * + * @return the value of jsh_functions.Id + * + * @mbggenerated + */ + public Long getId() { + return id; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column jsh_functions.Id + * + * @param id the value for jsh_functions.Id + * + * @mbggenerated + */ + public void setId(Long id) { + this.id = id; + } + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column jsh_functions.Number + * + * @return the value of jsh_functions.Number + * + * @mbggenerated + */ + public String getNumber() { + return number; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column jsh_functions.Number + * + * @param number the value for jsh_functions.Number + * + * @mbggenerated + */ + public void setNumber(String number) { + this.number = number == null ? null : number.trim(); + } + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column jsh_functions.Name + * + * @return the value of jsh_functions.Name + * + * @mbggenerated + */ + public String getName() { + return name; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column jsh_functions.Name + * + * @param name the value for jsh_functions.Name + * + * @mbggenerated + */ + public void setName(String name) { + this.name = name == null ? null : name.trim(); + } + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column jsh_functions.PNumber + * + * @return the value of jsh_functions.PNumber + * + * @mbggenerated + */ + public String getPnumber() { + return pnumber; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column jsh_functions.PNumber + * + * @param pnumber the value for jsh_functions.PNumber + * + * @mbggenerated + */ + public void setPnumber(String pnumber) { + this.pnumber = pnumber == null ? null : pnumber.trim(); + } + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column jsh_functions.URL + * + * @return the value of jsh_functions.URL + * + * @mbggenerated + */ + public String getUrl() { + return url; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column jsh_functions.URL + * + * @param url the value for jsh_functions.URL + * + * @mbggenerated + */ + public void setUrl(String url) { + this.url = url == null ? null : url.trim(); + } + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column jsh_functions.State + * + * @return the value of jsh_functions.State + * + * @mbggenerated + */ + public Boolean getState() { + return state; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column jsh_functions.State + * + * @param state the value for jsh_functions.State + * + * @mbggenerated + */ + public void setState(Boolean state) { + this.state = state; + } + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column jsh_functions.Sort + * + * @return the value of jsh_functions.Sort + * + * @mbggenerated + */ + public String getSort() { + return sort; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column jsh_functions.Sort + * + * @param sort the value for jsh_functions.Sort + * + * @mbggenerated + */ + public void setSort(String sort) { + this.sort = sort == null ? null : sort.trim(); + } + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column jsh_functions.Enabled + * + * @return the value of jsh_functions.Enabled + * + * @mbggenerated + */ + public Boolean getEnabled() { + return enabled; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column jsh_functions.Enabled + * + * @param enabled the value for jsh_functions.Enabled + * + * @mbggenerated + */ + public void setEnabled(Boolean enabled) { + this.enabled = enabled; + } + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column jsh_functions.Type + * + * @return the value of jsh_functions.Type + * + * @mbggenerated + */ + public String getType() { + return type; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column jsh_functions.Type + * + * @param type the value for jsh_functions.Type + * + * @mbggenerated + */ + public void setType(String type) { + this.type = type == null ? null : type.trim(); + } + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column jsh_functions.PushBtn + * + * @return the value of jsh_functions.PushBtn + * + * @mbggenerated + */ + public String getPushbtn() { + return pushbtn; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column jsh_functions.PushBtn + * + * @param pushbtn the value for jsh_functions.PushBtn + * + * @mbggenerated + */ + public void setPushbtn(String pushbtn) { + this.pushbtn = pushbtn == null ? null : pushbtn.trim(); + } +} \ No newline at end of file diff --git a/src/main/java/com/jsh/erp/datasource/entities/FunctionsExample.java b/src/main/java/com/jsh/erp/datasource/entities/FunctionsExample.java new file mode 100644 index 00000000..19e46683 --- /dev/null +++ b/src/main/java/com/jsh/erp/datasource/entities/FunctionsExample.java @@ -0,0 +1,972 @@ +package com.jsh.erp.datasource.entities; + +import java.util.ArrayList; +import java.util.List; + +public class FunctionsExample { + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database table jsh_functions + * + * @mbggenerated + */ + protected String orderByClause; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database table jsh_functions + * + * @mbggenerated + */ + protected boolean distinct; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database table jsh_functions + * + * @mbggenerated + */ + protected List oredCriteria; + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_functions + * + * @mbggenerated + */ + public FunctionsExample() { + oredCriteria = new ArrayList(); + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_functions + * + * @mbggenerated + */ + public void setOrderByClause(String orderByClause) { + this.orderByClause = orderByClause; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_functions + * + * @mbggenerated + */ + public String getOrderByClause() { + return orderByClause; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_functions + * + * @mbggenerated + */ + public void setDistinct(boolean distinct) { + this.distinct = distinct; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_functions + * + * @mbggenerated + */ + public boolean isDistinct() { + return distinct; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_functions + * + * @mbggenerated + */ + public List getOredCriteria() { + return oredCriteria; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_functions + * + * @mbggenerated + */ + public void or(Criteria criteria) { + oredCriteria.add(criteria); + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_functions + * + * @mbggenerated + */ + public Criteria or() { + Criteria criteria = createCriteriaInternal(); + oredCriteria.add(criteria); + return criteria; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_functions + * + * @mbggenerated + */ + public Criteria createCriteria() { + Criteria criteria = createCriteriaInternal(); + if (oredCriteria.size() == 0) { + oredCriteria.add(criteria); + } + return criteria; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_functions + * + * @mbggenerated + */ + protected Criteria createCriteriaInternal() { + Criteria criteria = new Criteria(); + return criteria; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_functions + * + * @mbggenerated + */ + public void clear() { + oredCriteria.clear(); + orderByClause = null; + distinct = false; + } + + /** + * This class was generated by MyBatis Generator. + * This class corresponds to the database table jsh_functions + * + * @mbggenerated + */ + protected abstract static class GeneratedCriteria { + protected List criteria; + + protected GeneratedCriteria() { + super(); + criteria = new ArrayList(); + } + + public boolean isValid() { + return criteria.size() > 0; + } + + public List getAllCriteria() { + return criteria; + } + + public List getCriteria() { + return criteria; + } + + protected void addCriterion(String condition) { + if (condition == null) { + throw new RuntimeException("Value for condition cannot be null"); + } + criteria.add(new Criterion(condition)); + } + + protected void addCriterion(String condition, Object value, String property) { + if (value == null) { + throw new RuntimeException("Value for " + property + " cannot be null"); + } + criteria.add(new Criterion(condition, value)); + } + + protected void addCriterion(String condition, Object value1, Object value2, String property) { + if (value1 == null || value2 == null) { + throw new RuntimeException("Between values for " + property + " cannot be null"); + } + criteria.add(new Criterion(condition, value1, value2)); + } + + public Criteria andIdIsNull() { + addCriterion("Id is null"); + return (Criteria) this; + } + + public Criteria andIdIsNotNull() { + addCriterion("Id is not null"); + return (Criteria) this; + } + + public Criteria andIdEqualTo(Long value) { + addCriterion("Id =", value, "id"); + return (Criteria) this; + } + + public Criteria andIdNotEqualTo(Long value) { + addCriterion("Id <>", value, "id"); + return (Criteria) this; + } + + public Criteria andIdGreaterThan(Long value) { + addCriterion("Id >", value, "id"); + return (Criteria) this; + } + + public Criteria andIdGreaterThanOrEqualTo(Long value) { + addCriterion("Id >=", value, "id"); + return (Criteria) this; + } + + public Criteria andIdLessThan(Long value) { + addCriterion("Id <", value, "id"); + return (Criteria) this; + } + + public Criteria andIdLessThanOrEqualTo(Long value) { + addCriterion("Id <=", value, "id"); + return (Criteria) this; + } + + public Criteria andIdIn(List values) { + addCriterion("Id in", values, "id"); + return (Criteria) this; + } + + public Criteria andIdNotIn(List values) { + addCriterion("Id not in", values, "id"); + return (Criteria) this; + } + + public Criteria andIdBetween(Long value1, Long value2) { + addCriterion("Id between", value1, value2, "id"); + return (Criteria) this; + } + + public Criteria andIdNotBetween(Long value1, Long value2) { + addCriterion("Id not between", value1, value2, "id"); + return (Criteria) this; + } + + public Criteria andNumberIsNull() { + addCriterion("Number is null"); + return (Criteria) this; + } + + public Criteria andNumberIsNotNull() { + addCriterion("Number is not null"); + return (Criteria) this; + } + + public Criteria andNumberEqualTo(String value) { + addCriterion("Number =", value, "number"); + return (Criteria) this; + } + + public Criteria andNumberNotEqualTo(String value) { + addCriterion("Number <>", value, "number"); + return (Criteria) this; + } + + public Criteria andNumberGreaterThan(String value) { + addCriterion("Number >", value, "number"); + return (Criteria) this; + } + + public Criteria andNumberGreaterThanOrEqualTo(String value) { + addCriterion("Number >=", value, "number"); + return (Criteria) this; + } + + public Criteria andNumberLessThan(String value) { + addCriterion("Number <", value, "number"); + return (Criteria) this; + } + + public Criteria andNumberLessThanOrEqualTo(String value) { + addCriterion("Number <=", value, "number"); + return (Criteria) this; + } + + public Criteria andNumberLike(String value) { + addCriterion("Number like", value, "number"); + return (Criteria) this; + } + + public Criteria andNumberNotLike(String value) { + addCriterion("Number not like", value, "number"); + return (Criteria) this; + } + + public Criteria andNumberIn(List values) { + addCriterion("Number in", values, "number"); + return (Criteria) this; + } + + public Criteria andNumberNotIn(List values) { + addCriterion("Number not in", values, "number"); + return (Criteria) this; + } + + public Criteria andNumberBetween(String value1, String value2) { + addCriterion("Number between", value1, value2, "number"); + return (Criteria) this; + } + + public Criteria andNumberNotBetween(String value1, String value2) { + addCriterion("Number not between", value1, value2, "number"); + return (Criteria) this; + } + + public Criteria andNameIsNull() { + addCriterion("Name is null"); + return (Criteria) this; + } + + public Criteria andNameIsNotNull() { + addCriterion("Name is not null"); + return (Criteria) this; + } + + public Criteria andNameEqualTo(String value) { + addCriterion("Name =", value, "name"); + return (Criteria) this; + } + + public Criteria andNameNotEqualTo(String value) { + addCriterion("Name <>", value, "name"); + return (Criteria) this; + } + + public Criteria andNameGreaterThan(String value) { + addCriterion("Name >", value, "name"); + return (Criteria) this; + } + + public Criteria andNameGreaterThanOrEqualTo(String value) { + addCriterion("Name >=", value, "name"); + return (Criteria) this; + } + + public Criteria andNameLessThan(String value) { + addCriterion("Name <", value, "name"); + return (Criteria) this; + } + + public Criteria andNameLessThanOrEqualTo(String value) { + addCriterion("Name <=", value, "name"); + return (Criteria) this; + } + + public Criteria andNameLike(String value) { + addCriterion("Name like", value, "name"); + return (Criteria) this; + } + + public Criteria andNameNotLike(String value) { + addCriterion("Name not like", value, "name"); + return (Criteria) this; + } + + public Criteria andNameIn(List values) { + addCriterion("Name in", values, "name"); + return (Criteria) this; + } + + public Criteria andNameNotIn(List values) { + addCriterion("Name not in", values, "name"); + return (Criteria) this; + } + + public Criteria andNameBetween(String value1, String value2) { + addCriterion("Name between", value1, value2, "name"); + return (Criteria) this; + } + + public Criteria andNameNotBetween(String value1, String value2) { + addCriterion("Name not between", value1, value2, "name"); + return (Criteria) this; + } + + public Criteria andPnumberIsNull() { + addCriterion("PNumber is null"); + return (Criteria) this; + } + + public Criteria andPnumberIsNotNull() { + addCriterion("PNumber is not null"); + return (Criteria) this; + } + + public Criteria andPnumberEqualTo(String value) { + addCriterion("PNumber =", value, "pnumber"); + return (Criteria) this; + } + + public Criteria andPnumberNotEqualTo(String value) { + addCriterion("PNumber <>", value, "pnumber"); + return (Criteria) this; + } + + public Criteria andPnumberGreaterThan(String value) { + addCriterion("PNumber >", value, "pnumber"); + return (Criteria) this; + } + + public Criteria andPnumberGreaterThanOrEqualTo(String value) { + addCriterion("PNumber >=", value, "pnumber"); + return (Criteria) this; + } + + public Criteria andPnumberLessThan(String value) { + addCriterion("PNumber <", value, "pnumber"); + return (Criteria) this; + } + + public Criteria andPnumberLessThanOrEqualTo(String value) { + addCriterion("PNumber <=", value, "pnumber"); + return (Criteria) this; + } + + public Criteria andPnumberLike(String value) { + addCriterion("PNumber like", value, "pnumber"); + return (Criteria) this; + } + + public Criteria andPnumberNotLike(String value) { + addCriterion("PNumber not like", value, "pnumber"); + return (Criteria) this; + } + + public Criteria andPnumberIn(List values) { + addCriterion("PNumber in", values, "pnumber"); + return (Criteria) this; + } + + public Criteria andPnumberNotIn(List values) { + addCriterion("PNumber not in", values, "pnumber"); + return (Criteria) this; + } + + public Criteria andPnumberBetween(String value1, String value2) { + addCriterion("PNumber between", value1, value2, "pnumber"); + return (Criteria) this; + } + + public Criteria andPnumberNotBetween(String value1, String value2) { + addCriterion("PNumber not between", value1, value2, "pnumber"); + return (Criteria) this; + } + + public Criteria andUrlIsNull() { + addCriterion("URL is null"); + return (Criteria) this; + } + + public Criteria andUrlIsNotNull() { + addCriterion("URL is not null"); + return (Criteria) this; + } + + public Criteria andUrlEqualTo(String value) { + addCriterion("URL =", value, "url"); + return (Criteria) this; + } + + public Criteria andUrlNotEqualTo(String value) { + addCriterion("URL <>", value, "url"); + return (Criteria) this; + } + + public Criteria andUrlGreaterThan(String value) { + addCriterion("URL >", value, "url"); + return (Criteria) this; + } + + public Criteria andUrlGreaterThanOrEqualTo(String value) { + addCriterion("URL >=", value, "url"); + return (Criteria) this; + } + + public Criteria andUrlLessThan(String value) { + addCriterion("URL <", value, "url"); + return (Criteria) this; + } + + public Criteria andUrlLessThanOrEqualTo(String value) { + addCriterion("URL <=", value, "url"); + return (Criteria) this; + } + + public Criteria andUrlLike(String value) { + addCriterion("URL like", value, "url"); + return (Criteria) this; + } + + public Criteria andUrlNotLike(String value) { + addCriterion("URL not like", value, "url"); + return (Criteria) this; + } + + public Criteria andUrlIn(List values) { + addCriterion("URL in", values, "url"); + return (Criteria) this; + } + + public Criteria andUrlNotIn(List values) { + addCriterion("URL not in", values, "url"); + return (Criteria) this; + } + + public Criteria andUrlBetween(String value1, String value2) { + addCriterion("URL between", value1, value2, "url"); + return (Criteria) this; + } + + public Criteria andUrlNotBetween(String value1, String value2) { + addCriterion("URL not between", value1, value2, "url"); + return (Criteria) this; + } + + public Criteria andStateIsNull() { + addCriterion("State is null"); + return (Criteria) this; + } + + public Criteria andStateIsNotNull() { + addCriterion("State is not null"); + return (Criteria) this; + } + + public Criteria andStateEqualTo(Boolean value) { + addCriterion("State =", value, "state"); + return (Criteria) this; + } + + public Criteria andStateNotEqualTo(Boolean value) { + addCriterion("State <>", value, "state"); + return (Criteria) this; + } + + public Criteria andStateGreaterThan(Boolean value) { + addCriterion("State >", value, "state"); + return (Criteria) this; + } + + public Criteria andStateGreaterThanOrEqualTo(Boolean value) { + addCriterion("State >=", value, "state"); + return (Criteria) this; + } + + public Criteria andStateLessThan(Boolean value) { + addCriterion("State <", value, "state"); + return (Criteria) this; + } + + public Criteria andStateLessThanOrEqualTo(Boolean value) { + addCriterion("State <=", value, "state"); + return (Criteria) this; + } + + public Criteria andStateIn(List values) { + addCriterion("State in", values, "state"); + return (Criteria) this; + } + + public Criteria andStateNotIn(List values) { + addCriterion("State not in", values, "state"); + return (Criteria) this; + } + + public Criteria andStateBetween(Boolean value1, Boolean value2) { + addCriterion("State between", value1, value2, "state"); + return (Criteria) this; + } + + public Criteria andStateNotBetween(Boolean value1, Boolean value2) { + addCriterion("State not between", value1, value2, "state"); + return (Criteria) this; + } + + public Criteria andSortIsNull() { + addCriterion("Sort is null"); + return (Criteria) this; + } + + public Criteria andSortIsNotNull() { + addCriterion("Sort is not null"); + return (Criteria) this; + } + + public Criteria andSortEqualTo(String value) { + addCriterion("Sort =", value, "sort"); + return (Criteria) this; + } + + public Criteria andSortNotEqualTo(String value) { + addCriterion("Sort <>", value, "sort"); + return (Criteria) this; + } + + public Criteria andSortGreaterThan(String value) { + addCriterion("Sort >", value, "sort"); + return (Criteria) this; + } + + public Criteria andSortGreaterThanOrEqualTo(String value) { + addCriterion("Sort >=", value, "sort"); + return (Criteria) this; + } + + public Criteria andSortLessThan(String value) { + addCriterion("Sort <", value, "sort"); + return (Criteria) this; + } + + public Criteria andSortLessThanOrEqualTo(String value) { + addCriterion("Sort <=", value, "sort"); + return (Criteria) this; + } + + public Criteria andSortLike(String value) { + addCriterion("Sort like", value, "sort"); + return (Criteria) this; + } + + public Criteria andSortNotLike(String value) { + addCriterion("Sort not like", value, "sort"); + return (Criteria) this; + } + + public Criteria andSortIn(List values) { + addCriterion("Sort in", values, "sort"); + return (Criteria) this; + } + + public Criteria andSortNotIn(List values) { + addCriterion("Sort not in", values, "sort"); + return (Criteria) this; + } + + public Criteria andSortBetween(String value1, String value2) { + addCriterion("Sort between", value1, value2, "sort"); + return (Criteria) this; + } + + public Criteria andSortNotBetween(String value1, String value2) { + addCriterion("Sort not between", value1, value2, "sort"); + return (Criteria) this; + } + + public Criteria andEnabledIsNull() { + addCriterion("Enabled is null"); + return (Criteria) this; + } + + public Criteria andEnabledIsNotNull() { + addCriterion("Enabled is not null"); + return (Criteria) this; + } + + public Criteria andEnabledEqualTo(Boolean value) { + addCriterion("Enabled =", value, "enabled"); + return (Criteria) this; + } + + public Criteria andEnabledNotEqualTo(Boolean value) { + addCriterion("Enabled <>", value, "enabled"); + return (Criteria) this; + } + + public Criteria andEnabledGreaterThan(Boolean value) { + addCriterion("Enabled >", value, "enabled"); + return (Criteria) this; + } + + public Criteria andEnabledGreaterThanOrEqualTo(Boolean value) { + addCriterion("Enabled >=", value, "enabled"); + return (Criteria) this; + } + + public Criteria andEnabledLessThan(Boolean value) { + addCriterion("Enabled <", value, "enabled"); + return (Criteria) this; + } + + public Criteria andEnabledLessThanOrEqualTo(Boolean value) { + addCriterion("Enabled <=", value, "enabled"); + return (Criteria) this; + } + + public Criteria andEnabledIn(List values) { + addCriterion("Enabled in", values, "enabled"); + return (Criteria) this; + } + + public Criteria andEnabledNotIn(List values) { + addCriterion("Enabled not in", values, "enabled"); + return (Criteria) this; + } + + public Criteria andEnabledBetween(Boolean value1, Boolean value2) { + addCriterion("Enabled between", value1, value2, "enabled"); + return (Criteria) this; + } + + public Criteria andEnabledNotBetween(Boolean value1, Boolean value2) { + addCriterion("Enabled not between", value1, value2, "enabled"); + return (Criteria) this; + } + + public Criteria andTypeIsNull() { + addCriterion("Type is null"); + return (Criteria) this; + } + + public Criteria andTypeIsNotNull() { + addCriterion("Type is not null"); + return (Criteria) this; + } + + public Criteria andTypeEqualTo(String value) { + addCriterion("Type =", value, "type"); + return (Criteria) this; + } + + public Criteria andTypeNotEqualTo(String value) { + addCriterion("Type <>", value, "type"); + return (Criteria) this; + } + + public Criteria andTypeGreaterThan(String value) { + addCriterion("Type >", value, "type"); + return (Criteria) this; + } + + public Criteria andTypeGreaterThanOrEqualTo(String value) { + addCriterion("Type >=", value, "type"); + return (Criteria) this; + } + + public Criteria andTypeLessThan(String value) { + addCriterion("Type <", value, "type"); + return (Criteria) this; + } + + public Criteria andTypeLessThanOrEqualTo(String value) { + addCriterion("Type <=", value, "type"); + return (Criteria) this; + } + + public Criteria andTypeLike(String value) { + addCriterion("Type like", value, "type"); + return (Criteria) this; + } + + public Criteria andTypeNotLike(String value) { + addCriterion("Type not like", value, "type"); + return (Criteria) this; + } + + public Criteria andTypeIn(List values) { + addCriterion("Type in", values, "type"); + return (Criteria) this; + } + + public Criteria andTypeNotIn(List values) { + addCriterion("Type not in", values, "type"); + return (Criteria) this; + } + + public Criteria andTypeBetween(String value1, String value2) { + addCriterion("Type between", value1, value2, "type"); + return (Criteria) this; + } + + public Criteria andTypeNotBetween(String value1, String value2) { + addCriterion("Type not between", value1, value2, "type"); + return (Criteria) this; + } + + public Criteria andPushbtnIsNull() { + addCriterion("PushBtn is null"); + return (Criteria) this; + } + + public Criteria andPushbtnIsNotNull() { + addCriterion("PushBtn is not null"); + return (Criteria) this; + } + + public Criteria andPushbtnEqualTo(String value) { + addCriterion("PushBtn =", value, "pushbtn"); + return (Criteria) this; + } + + public Criteria andPushbtnNotEqualTo(String value) { + addCriterion("PushBtn <>", value, "pushbtn"); + return (Criteria) this; + } + + public Criteria andPushbtnGreaterThan(String value) { + addCriterion("PushBtn >", value, "pushbtn"); + return (Criteria) this; + } + + public Criteria andPushbtnGreaterThanOrEqualTo(String value) { + addCriterion("PushBtn >=", value, "pushbtn"); + return (Criteria) this; + } + + public Criteria andPushbtnLessThan(String value) { + addCriterion("PushBtn <", value, "pushbtn"); + return (Criteria) this; + } + + public Criteria andPushbtnLessThanOrEqualTo(String value) { + addCriterion("PushBtn <=", value, "pushbtn"); + return (Criteria) this; + } + + public Criteria andPushbtnLike(String value) { + addCriterion("PushBtn like", value, "pushbtn"); + return (Criteria) this; + } + + public Criteria andPushbtnNotLike(String value) { + addCriterion("PushBtn not like", value, "pushbtn"); + return (Criteria) this; + } + + public Criteria andPushbtnIn(List values) { + addCriterion("PushBtn in", values, "pushbtn"); + return (Criteria) this; + } + + public Criteria andPushbtnNotIn(List values) { + addCriterion("PushBtn not in", values, "pushbtn"); + return (Criteria) this; + } + + public Criteria andPushbtnBetween(String value1, String value2) { + addCriterion("PushBtn between", value1, value2, "pushbtn"); + return (Criteria) this; + } + + public Criteria andPushbtnNotBetween(String value1, String value2) { + addCriterion("PushBtn not between", value1, value2, "pushbtn"); + return (Criteria) this; + } + } + + /** + * This class was generated by MyBatis Generator. + * This class corresponds to the database table jsh_functions + * + * @mbggenerated do_not_delete_during_merge + */ + public static class Criteria extends GeneratedCriteria { + + protected Criteria() { + super(); + } + } + + /** + * This class was generated by MyBatis Generator. + * This class corresponds to the database table jsh_functions + * + * @mbggenerated + */ + public static class Criterion { + private String condition; + + private Object value; + + private Object secondValue; + + private boolean noValue; + + private boolean singleValue; + + private boolean betweenValue; + + private boolean listValue; + + private String typeHandler; + + public String getCondition() { + return condition; + } + + public Object getValue() { + return value; + } + + public Object getSecondValue() { + return secondValue; + } + + public boolean isNoValue() { + return noValue; + } + + public boolean isSingleValue() { + return singleValue; + } + + public boolean isBetweenValue() { + return betweenValue; + } + + public boolean isListValue() { + return listValue; + } + + public String getTypeHandler() { + return typeHandler; + } + + protected Criterion(String condition) { + super(); + this.condition = condition; + this.typeHandler = null; + this.noValue = true; + } + + protected Criterion(String condition, Object value, String typeHandler) { + super(); + this.condition = condition; + this.value = value; + this.typeHandler = typeHandler; + if (value instanceof List) { + this.listValue = true; + } else { + this.singleValue = true; + } + } + + protected Criterion(String condition, Object value) { + this(condition, value, null); + } + + protected Criterion(String condition, Object value, Object secondValue, String typeHandler) { + super(); + this.condition = condition; + this.value = value; + this.secondValue = secondValue; + this.typeHandler = typeHandler; + this.betweenValue = true; + } + + protected Criterion(String condition, Object value, Object secondValue) { + this(condition, value, secondValue, null); + } + } +} \ No newline at end of file diff --git a/src/main/java/com/jsh/erp/datasource/entities/InOutItem.java b/src/main/java/com/jsh/erp/datasource/entities/InOutItem.java new file mode 100644 index 00000000..f38bf4fe --- /dev/null +++ b/src/main/java/com/jsh/erp/datasource/entities/InOutItem.java @@ -0,0 +1,131 @@ +package com.jsh.erp.datasource.entities; + +public class InOutItem { + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database column jsh_inoutitem.Id + * + * @mbggenerated + */ + private Long id; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database column jsh_inoutitem.Name + * + * @mbggenerated + */ + private String name; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database column jsh_inoutitem.Type + * + * @mbggenerated + */ + private String type; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database column jsh_inoutitem.Remark + * + * @mbggenerated + */ + private String remark; + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column jsh_inoutitem.Id + * + * @return the value of jsh_inoutitem.Id + * + * @mbggenerated + */ + public Long getId() { + return id; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column jsh_inoutitem.Id + * + * @param id the value for jsh_inoutitem.Id + * + * @mbggenerated + */ + public void setId(Long id) { + this.id = id; + } + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column jsh_inoutitem.Name + * + * @return the value of jsh_inoutitem.Name + * + * @mbggenerated + */ + public String getName() { + return name; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column jsh_inoutitem.Name + * + * @param name the value for jsh_inoutitem.Name + * + * @mbggenerated + */ + public void setName(String name) { + this.name = name == null ? null : name.trim(); + } + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column jsh_inoutitem.Type + * + * @return the value of jsh_inoutitem.Type + * + * @mbggenerated + */ + public String getType() { + return type; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column jsh_inoutitem.Type + * + * @param type the value for jsh_inoutitem.Type + * + * @mbggenerated + */ + public void setType(String type) { + this.type = type == null ? null : type.trim(); + } + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column jsh_inoutitem.Remark + * + * @return the value of jsh_inoutitem.Remark + * + * @mbggenerated + */ + public String getRemark() { + return remark; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column jsh_inoutitem.Remark + * + * @param remark the value for jsh_inoutitem.Remark + * + * @mbggenerated + */ + public void setRemark(String remark) { + this.remark = remark == null ? null : remark.trim(); + } +} \ No newline at end of file diff --git a/src/main/java/com/jsh/erp/datasource/entities/InOutItemExample.java b/src/main/java/com/jsh/erp/datasource/entities/InOutItemExample.java new file mode 100644 index 00000000..af5bf824 --- /dev/null +++ b/src/main/java/com/jsh/erp/datasource/entities/InOutItemExample.java @@ -0,0 +1,572 @@ +package com.jsh.erp.datasource.entities; + +import java.util.ArrayList; +import java.util.List; + +public class InOutItemExample { + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database table jsh_inoutitem + * + * @mbggenerated + */ + protected String orderByClause; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database table jsh_inoutitem + * + * @mbggenerated + */ + protected boolean distinct; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database table jsh_inoutitem + * + * @mbggenerated + */ + protected List oredCriteria; + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_inoutitem + * + * @mbggenerated + */ + public InOutItemExample() { + oredCriteria = new ArrayList(); + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_inoutitem + * + * @mbggenerated + */ + public void setOrderByClause(String orderByClause) { + this.orderByClause = orderByClause; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_inoutitem + * + * @mbggenerated + */ + public String getOrderByClause() { + return orderByClause; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_inoutitem + * + * @mbggenerated + */ + public void setDistinct(boolean distinct) { + this.distinct = distinct; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_inoutitem + * + * @mbggenerated + */ + public boolean isDistinct() { + return distinct; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_inoutitem + * + * @mbggenerated + */ + public List getOredCriteria() { + return oredCriteria; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_inoutitem + * + * @mbggenerated + */ + public void or(Criteria criteria) { + oredCriteria.add(criteria); + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_inoutitem + * + * @mbggenerated + */ + public Criteria or() { + Criteria criteria = createCriteriaInternal(); + oredCriteria.add(criteria); + return criteria; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_inoutitem + * + * @mbggenerated + */ + public Criteria createCriteria() { + Criteria criteria = createCriteriaInternal(); + if (oredCriteria.size() == 0) { + oredCriteria.add(criteria); + } + return criteria; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_inoutitem + * + * @mbggenerated + */ + protected Criteria createCriteriaInternal() { + Criteria criteria = new Criteria(); + return criteria; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_inoutitem + * + * @mbggenerated + */ + public void clear() { + oredCriteria.clear(); + orderByClause = null; + distinct = false; + } + + /** + * This class was generated by MyBatis Generator. + * This class corresponds to the database table jsh_inoutitem + * + * @mbggenerated + */ + protected abstract static class GeneratedCriteria { + protected List criteria; + + protected GeneratedCriteria() { + super(); + criteria = new ArrayList(); + } + + public boolean isValid() { + return criteria.size() > 0; + } + + public List getAllCriteria() { + return criteria; + } + + public List getCriteria() { + return criteria; + } + + protected void addCriterion(String condition) { + if (condition == null) { + throw new RuntimeException("Value for condition cannot be null"); + } + criteria.add(new Criterion(condition)); + } + + protected void addCriterion(String condition, Object value, String property) { + if (value == null) { + throw new RuntimeException("Value for " + property + " cannot be null"); + } + criteria.add(new Criterion(condition, value)); + } + + protected void addCriterion(String condition, Object value1, Object value2, String property) { + if (value1 == null || value2 == null) { + throw new RuntimeException("Between values for " + property + " cannot be null"); + } + criteria.add(new Criterion(condition, value1, value2)); + } + + public Criteria andIdIsNull() { + addCriterion("Id is null"); + return (Criteria) this; + } + + public Criteria andIdIsNotNull() { + addCriterion("Id is not null"); + return (Criteria) this; + } + + public Criteria andIdEqualTo(Long value) { + addCriterion("Id =", value, "id"); + return (Criteria) this; + } + + public Criteria andIdNotEqualTo(Long value) { + addCriterion("Id <>", value, "id"); + return (Criteria) this; + } + + public Criteria andIdGreaterThan(Long value) { + addCriterion("Id >", value, "id"); + return (Criteria) this; + } + + public Criteria andIdGreaterThanOrEqualTo(Long value) { + addCriterion("Id >=", value, "id"); + return (Criteria) this; + } + + public Criteria andIdLessThan(Long value) { + addCriterion("Id <", value, "id"); + return (Criteria) this; + } + + public Criteria andIdLessThanOrEqualTo(Long value) { + addCriterion("Id <=", value, "id"); + return (Criteria) this; + } + + public Criteria andIdIn(List values) { + addCriterion("Id in", values, "id"); + return (Criteria) this; + } + + public Criteria andIdNotIn(List values) { + addCriterion("Id not in", values, "id"); + return (Criteria) this; + } + + public Criteria andIdBetween(Long value1, Long value2) { + addCriterion("Id between", value1, value2, "id"); + return (Criteria) this; + } + + public Criteria andIdNotBetween(Long value1, Long value2) { + addCriterion("Id not between", value1, value2, "id"); + return (Criteria) this; + } + + public Criteria andNameIsNull() { + addCriterion("Name is null"); + return (Criteria) this; + } + + public Criteria andNameIsNotNull() { + addCriterion("Name is not null"); + return (Criteria) this; + } + + public Criteria andNameEqualTo(String value) { + addCriterion("Name =", value, "name"); + return (Criteria) this; + } + + public Criteria andNameNotEqualTo(String value) { + addCriterion("Name <>", value, "name"); + return (Criteria) this; + } + + public Criteria andNameGreaterThan(String value) { + addCriterion("Name >", value, "name"); + return (Criteria) this; + } + + public Criteria andNameGreaterThanOrEqualTo(String value) { + addCriterion("Name >=", value, "name"); + return (Criteria) this; + } + + public Criteria andNameLessThan(String value) { + addCriterion("Name <", value, "name"); + return (Criteria) this; + } + + public Criteria andNameLessThanOrEqualTo(String value) { + addCriterion("Name <=", value, "name"); + return (Criteria) this; + } + + public Criteria andNameLike(String value) { + addCriterion("Name like", value, "name"); + return (Criteria) this; + } + + public Criteria andNameNotLike(String value) { + addCriterion("Name not like", value, "name"); + return (Criteria) this; + } + + public Criteria andNameIn(List values) { + addCriterion("Name in", values, "name"); + return (Criteria) this; + } + + public Criteria andNameNotIn(List values) { + addCriterion("Name not in", values, "name"); + return (Criteria) this; + } + + public Criteria andNameBetween(String value1, String value2) { + addCriterion("Name between", value1, value2, "name"); + return (Criteria) this; + } + + public Criteria andNameNotBetween(String value1, String value2) { + addCriterion("Name not between", value1, value2, "name"); + return (Criteria) this; + } + + public Criteria andTypeIsNull() { + addCriterion("Type is null"); + return (Criteria) this; + } + + public Criteria andTypeIsNotNull() { + addCriterion("Type is not null"); + return (Criteria) this; + } + + public Criteria andTypeEqualTo(String value) { + addCriterion("Type =", value, "type"); + return (Criteria) this; + } + + public Criteria andTypeNotEqualTo(String value) { + addCriterion("Type <>", value, "type"); + return (Criteria) this; + } + + public Criteria andTypeGreaterThan(String value) { + addCriterion("Type >", value, "type"); + return (Criteria) this; + } + + public Criteria andTypeGreaterThanOrEqualTo(String value) { + addCriterion("Type >=", value, "type"); + return (Criteria) this; + } + + public Criteria andTypeLessThan(String value) { + addCriterion("Type <", value, "type"); + return (Criteria) this; + } + + public Criteria andTypeLessThanOrEqualTo(String value) { + addCriterion("Type <=", value, "type"); + return (Criteria) this; + } + + public Criteria andTypeLike(String value) { + addCriterion("Type like", value, "type"); + return (Criteria) this; + } + + public Criteria andTypeNotLike(String value) { + addCriterion("Type not like", value, "type"); + return (Criteria) this; + } + + public Criteria andTypeIn(List values) { + addCriterion("Type in", values, "type"); + return (Criteria) this; + } + + public Criteria andTypeNotIn(List values) { + addCriterion("Type not in", values, "type"); + return (Criteria) this; + } + + public Criteria andTypeBetween(String value1, String value2) { + addCriterion("Type between", value1, value2, "type"); + return (Criteria) this; + } + + public Criteria andTypeNotBetween(String value1, String value2) { + addCriterion("Type not between", value1, value2, "type"); + return (Criteria) this; + } + + public Criteria andRemarkIsNull() { + addCriterion("Remark is null"); + return (Criteria) this; + } + + public Criteria andRemarkIsNotNull() { + addCriterion("Remark is not null"); + return (Criteria) this; + } + + public Criteria andRemarkEqualTo(String value) { + addCriterion("Remark =", value, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkNotEqualTo(String value) { + addCriterion("Remark <>", value, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkGreaterThan(String value) { + addCriterion("Remark >", value, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkGreaterThanOrEqualTo(String value) { + addCriterion("Remark >=", value, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkLessThan(String value) { + addCriterion("Remark <", value, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkLessThanOrEqualTo(String value) { + addCriterion("Remark <=", value, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkLike(String value) { + addCriterion("Remark like", value, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkNotLike(String value) { + addCriterion("Remark not like", value, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkIn(List values) { + addCriterion("Remark in", values, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkNotIn(List values) { + addCriterion("Remark not in", values, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkBetween(String value1, String value2) { + addCriterion("Remark between", value1, value2, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkNotBetween(String value1, String value2) { + addCriterion("Remark not between", value1, value2, "remark"); + return (Criteria) this; + } + } + + /** + * This class was generated by MyBatis Generator. + * This class corresponds to the database table jsh_inoutitem + * + * @mbggenerated do_not_delete_during_merge + */ + public static class Criteria extends GeneratedCriteria { + + protected Criteria() { + super(); + } + } + + /** + * This class was generated by MyBatis Generator. + * This class corresponds to the database table jsh_inoutitem + * + * @mbggenerated + */ + public static class Criterion { + private String condition; + + private Object value; + + private Object secondValue; + + private boolean noValue; + + private boolean singleValue; + + private boolean betweenValue; + + private boolean listValue; + + private String typeHandler; + + public String getCondition() { + return condition; + } + + public Object getValue() { + return value; + } + + public Object getSecondValue() { + return secondValue; + } + + public boolean isNoValue() { + return noValue; + } + + public boolean isSingleValue() { + return singleValue; + } + + public boolean isBetweenValue() { + return betweenValue; + } + + public boolean isListValue() { + return listValue; + } + + public String getTypeHandler() { + return typeHandler; + } + + protected Criterion(String condition) { + super(); + this.condition = condition; + this.typeHandler = null; + this.noValue = true; + } + + protected Criterion(String condition, Object value, String typeHandler) { + super(); + this.condition = condition; + this.value = value; + this.typeHandler = typeHandler; + if (value instanceof List) { + this.listValue = true; + } else { + this.singleValue = true; + } + } + + protected Criterion(String condition, Object value) { + this(condition, value, null); + } + + protected Criterion(String condition, Object value, Object secondValue, String typeHandler) { + super(); + this.condition = condition; + this.value = value; + this.secondValue = secondValue; + this.typeHandler = typeHandler; + this.betweenValue = true; + } + + protected Criterion(String condition, Object value, Object secondValue) { + this(condition, value, secondValue, null); + } + } +} \ No newline at end of file diff --git a/src/main/java/com/jsh/erp/datasource/entities/Log.java b/src/main/java/com/jsh/erp/datasource/entities/Log.java new file mode 100644 index 00000000..103f3975 --- /dev/null +++ b/src/main/java/com/jsh/erp/datasource/entities/Log.java @@ -0,0 +1,261 @@ +package com.jsh.erp.datasource.entities; + +import java.util.Date; + +public class Log { + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database column jsh_log.id + * + * @mbggenerated + */ + private Long id; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database column jsh_log.userID + * + * @mbggenerated + */ + private Long userid; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database column jsh_log.operation + * + * @mbggenerated + */ + private String operation; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database column jsh_log.clientIP + * + * @mbggenerated + */ + private String clientip; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database column jsh_log.createtime + * + * @mbggenerated + */ + private Date createtime; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database column jsh_log.status + * + * @mbggenerated + */ + private Byte status; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database column jsh_log.contentdetails + * + * @mbggenerated + */ + private String contentdetails; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database column jsh_log.remark + * + * @mbggenerated + */ + private String remark; + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column jsh_log.id + * + * @return the value of jsh_log.id + * + * @mbggenerated + */ + public Long getId() { + return id; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column jsh_log.id + * + * @param id the value for jsh_log.id + * + * @mbggenerated + */ + public void setId(Long id) { + this.id = id; + } + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column jsh_log.userID + * + * @return the value of jsh_log.userID + * + * @mbggenerated + */ + public Long getUserid() { + return userid; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column jsh_log.userID + * + * @param userid the value for jsh_log.userID + * + * @mbggenerated + */ + public void setUserid(Long userid) { + this.userid = userid; + } + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column jsh_log.operation + * + * @return the value of jsh_log.operation + * + * @mbggenerated + */ + public String getOperation() { + return operation; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column jsh_log.operation + * + * @param operation the value for jsh_log.operation + * + * @mbggenerated + */ + public void setOperation(String operation) { + this.operation = operation == null ? null : operation.trim(); + } + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column jsh_log.clientIP + * + * @return the value of jsh_log.clientIP + * + * @mbggenerated + */ + public String getClientip() { + return clientip; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column jsh_log.clientIP + * + * @param clientip the value for jsh_log.clientIP + * + * @mbggenerated + */ + public void setClientip(String clientip) { + this.clientip = clientip == null ? null : clientip.trim(); + } + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column jsh_log.createtime + * + * @return the value of jsh_log.createtime + * + * @mbggenerated + */ + public Date getCreatetime() { + return createtime; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column jsh_log.createtime + * + * @param createtime the value for jsh_log.createtime + * + * @mbggenerated + */ + public void setCreatetime(Date createtime) { + this.createtime = createtime; + } + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column jsh_log.status + * + * @return the value of jsh_log.status + * + * @mbggenerated + */ + public Byte getStatus() { + return status; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column jsh_log.status + * + * @param status the value for jsh_log.status + * + * @mbggenerated + */ + public void setStatus(Byte status) { + this.status = status; + } + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column jsh_log.contentdetails + * + * @return the value of jsh_log.contentdetails + * + * @mbggenerated + */ + public String getContentdetails() { + return contentdetails; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column jsh_log.contentdetails + * + * @param contentdetails the value for jsh_log.contentdetails + * + * @mbggenerated + */ + public void setContentdetails(String contentdetails) { + this.contentdetails = contentdetails == null ? null : contentdetails.trim(); + } + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column jsh_log.remark + * + * @return the value of jsh_log.remark + * + * @mbggenerated + */ + public String getRemark() { + return remark; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column jsh_log.remark + * + * @param remark the value for jsh_log.remark + * + * @mbggenerated + */ + public void setRemark(String remark) { + this.remark = remark == null ? null : remark.trim(); + } +} \ No newline at end of file diff --git a/src/main/java/com/jsh/erp/datasource/entities/LogExample.java b/src/main/java/com/jsh/erp/datasource/entities/LogExample.java new file mode 100644 index 00000000..00b7687e --- /dev/null +++ b/src/main/java/com/jsh/erp/datasource/entities/LogExample.java @@ -0,0 +1,823 @@ +package com.jsh.erp.datasource.entities; + +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +public class LogExample { + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database table jsh_log + * + * @mbggenerated + */ + protected String orderByClause; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database table jsh_log + * + * @mbggenerated + */ + protected boolean distinct; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database table jsh_log + * + * @mbggenerated + */ + protected List oredCriteria; + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_log + * + * @mbggenerated + */ + public LogExample() { + oredCriteria = new ArrayList(); + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_log + * + * @mbggenerated + */ + public void setOrderByClause(String orderByClause) { + this.orderByClause = orderByClause; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_log + * + * @mbggenerated + */ + public String getOrderByClause() { + return orderByClause; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_log + * + * @mbggenerated + */ + public void setDistinct(boolean distinct) { + this.distinct = distinct; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_log + * + * @mbggenerated + */ + public boolean isDistinct() { + return distinct; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_log + * + * @mbggenerated + */ + public List getOredCriteria() { + return oredCriteria; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_log + * + * @mbggenerated + */ + public void or(Criteria criteria) { + oredCriteria.add(criteria); + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_log + * + * @mbggenerated + */ + public Criteria or() { + Criteria criteria = createCriteriaInternal(); + oredCriteria.add(criteria); + return criteria; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_log + * + * @mbggenerated + */ + public Criteria createCriteria() { + Criteria criteria = createCriteriaInternal(); + if (oredCriteria.size() == 0) { + oredCriteria.add(criteria); + } + return criteria; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_log + * + * @mbggenerated + */ + protected Criteria createCriteriaInternal() { + Criteria criteria = new Criteria(); + return criteria; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_log + * + * @mbggenerated + */ + public void clear() { + oredCriteria.clear(); + orderByClause = null; + distinct = false; + } + + /** + * This class was generated by MyBatis Generator. + * This class corresponds to the database table jsh_log + * + * @mbggenerated + */ + protected abstract static class GeneratedCriteria { + protected List criteria; + + protected GeneratedCriteria() { + super(); + criteria = new ArrayList(); + } + + public boolean isValid() { + return criteria.size() > 0; + } + + public List getAllCriteria() { + return criteria; + } + + public List getCriteria() { + return criteria; + } + + protected void addCriterion(String condition) { + if (condition == null) { + throw new RuntimeException("Value for condition cannot be null"); + } + criteria.add(new Criterion(condition)); + } + + protected void addCriterion(String condition, Object value, String property) { + if (value == null) { + throw new RuntimeException("Value for " + property + " cannot be null"); + } + criteria.add(new Criterion(condition, value)); + } + + protected void addCriterion(String condition, Object value1, Object value2, String property) { + if (value1 == null || value2 == null) { + throw new RuntimeException("Between values for " + property + " cannot be null"); + } + criteria.add(new Criterion(condition, value1, value2)); + } + + public Criteria andIdIsNull() { + addCriterion("id is null"); + return (Criteria) this; + } + + public Criteria andIdIsNotNull() { + addCriterion("id is not null"); + return (Criteria) this; + } + + public Criteria andIdEqualTo(Long value) { + addCriterion("id =", value, "id"); + return (Criteria) this; + } + + public Criteria andIdNotEqualTo(Long value) { + addCriterion("id <>", value, "id"); + return (Criteria) this; + } + + public Criteria andIdGreaterThan(Long value) { + addCriterion("id >", value, "id"); + return (Criteria) this; + } + + public Criteria andIdGreaterThanOrEqualTo(Long value) { + addCriterion("id >=", value, "id"); + return (Criteria) this; + } + + public Criteria andIdLessThan(Long value) { + addCriterion("id <", value, "id"); + return (Criteria) this; + } + + public Criteria andIdLessThanOrEqualTo(Long value) { + addCriterion("id <=", value, "id"); + return (Criteria) this; + } + + public Criteria andIdIn(List values) { + addCriterion("id in", values, "id"); + return (Criteria) this; + } + + public Criteria andIdNotIn(List values) { + addCriterion("id not in", values, "id"); + return (Criteria) this; + } + + public Criteria andIdBetween(Long value1, Long value2) { + addCriterion("id between", value1, value2, "id"); + return (Criteria) this; + } + + public Criteria andIdNotBetween(Long value1, Long value2) { + addCriterion("id not between", value1, value2, "id"); + return (Criteria) this; + } + + public Criteria andUseridIsNull() { + addCriterion("userID is null"); + return (Criteria) this; + } + + public Criteria andUseridIsNotNull() { + addCriterion("userID is not null"); + return (Criteria) this; + } + + public Criteria andUseridEqualTo(Long value) { + addCriterion("userID =", value, "userid"); + return (Criteria) this; + } + + public Criteria andUseridNotEqualTo(Long value) { + addCriterion("userID <>", value, "userid"); + return (Criteria) this; + } + + public Criteria andUseridGreaterThan(Long value) { + addCriterion("userID >", value, "userid"); + return (Criteria) this; + } + + public Criteria andUseridGreaterThanOrEqualTo(Long value) { + addCriterion("userID >=", value, "userid"); + return (Criteria) this; + } + + public Criteria andUseridLessThan(Long value) { + addCriterion("userID <", value, "userid"); + return (Criteria) this; + } + + public Criteria andUseridLessThanOrEqualTo(Long value) { + addCriterion("userID <=", value, "userid"); + return (Criteria) this; + } + + public Criteria andUseridIn(List values) { + addCriterion("userID in", values, "userid"); + return (Criteria) this; + } + + public Criteria andUseridNotIn(List values) { + addCriterion("userID not in", values, "userid"); + return (Criteria) this; + } + + public Criteria andUseridBetween(Long value1, Long value2) { + addCriterion("userID between", value1, value2, "userid"); + return (Criteria) this; + } + + public Criteria andUseridNotBetween(Long value1, Long value2) { + addCriterion("userID not between", value1, value2, "userid"); + return (Criteria) this; + } + + public Criteria andOperationIsNull() { + addCriterion("operation is null"); + return (Criteria) this; + } + + public Criteria andOperationIsNotNull() { + addCriterion("operation is not null"); + return (Criteria) this; + } + + public Criteria andOperationEqualTo(String value) { + addCriterion("operation =", value, "operation"); + return (Criteria) this; + } + + public Criteria andOperationNotEqualTo(String value) { + addCriterion("operation <>", value, "operation"); + return (Criteria) this; + } + + public Criteria andOperationGreaterThan(String value) { + addCriterion("operation >", value, "operation"); + return (Criteria) this; + } + + public Criteria andOperationGreaterThanOrEqualTo(String value) { + addCriterion("operation >=", value, "operation"); + return (Criteria) this; + } + + public Criteria andOperationLessThan(String value) { + addCriterion("operation <", value, "operation"); + return (Criteria) this; + } + + public Criteria andOperationLessThanOrEqualTo(String value) { + addCriterion("operation <=", value, "operation"); + return (Criteria) this; + } + + public Criteria andOperationLike(String value) { + addCriterion("operation like", value, "operation"); + return (Criteria) this; + } + + public Criteria andOperationNotLike(String value) { + addCriterion("operation not like", value, "operation"); + return (Criteria) this; + } + + public Criteria andOperationIn(List values) { + addCriterion("operation in", values, "operation"); + return (Criteria) this; + } + + public Criteria andOperationNotIn(List values) { + addCriterion("operation not in", values, "operation"); + return (Criteria) this; + } + + public Criteria andOperationBetween(String value1, String value2) { + addCriterion("operation between", value1, value2, "operation"); + return (Criteria) this; + } + + public Criteria andOperationNotBetween(String value1, String value2) { + addCriterion("operation not between", value1, value2, "operation"); + return (Criteria) this; + } + + public Criteria andClientipIsNull() { + addCriterion("clientIP is null"); + return (Criteria) this; + } + + public Criteria andClientipIsNotNull() { + addCriterion("clientIP is not null"); + return (Criteria) this; + } + + public Criteria andClientipEqualTo(String value) { + addCriterion("clientIP =", value, "clientip"); + return (Criteria) this; + } + + public Criteria andClientipNotEqualTo(String value) { + addCriterion("clientIP <>", value, "clientip"); + return (Criteria) this; + } + + public Criteria andClientipGreaterThan(String value) { + addCriterion("clientIP >", value, "clientip"); + return (Criteria) this; + } + + public Criteria andClientipGreaterThanOrEqualTo(String value) { + addCriterion("clientIP >=", value, "clientip"); + return (Criteria) this; + } + + public Criteria andClientipLessThan(String value) { + addCriterion("clientIP <", value, "clientip"); + return (Criteria) this; + } + + public Criteria andClientipLessThanOrEqualTo(String value) { + addCriterion("clientIP <=", value, "clientip"); + return (Criteria) this; + } + + public Criteria andClientipLike(String value) { + addCriterion("clientIP like", value, "clientip"); + return (Criteria) this; + } + + public Criteria andClientipNotLike(String value) { + addCriterion("clientIP not like", value, "clientip"); + return (Criteria) this; + } + + public Criteria andClientipIn(List values) { + addCriterion("clientIP in", values, "clientip"); + return (Criteria) this; + } + + public Criteria andClientipNotIn(List values) { + addCriterion("clientIP not in", values, "clientip"); + return (Criteria) this; + } + + public Criteria andClientipBetween(String value1, String value2) { + addCriterion("clientIP between", value1, value2, "clientip"); + return (Criteria) this; + } + + public Criteria andClientipNotBetween(String value1, String value2) { + addCriterion("clientIP not between", value1, value2, "clientip"); + return (Criteria) this; + } + + public Criteria andCreatetimeIsNull() { + addCriterion("createtime is null"); + return (Criteria) this; + } + + public Criteria andCreatetimeIsNotNull() { + addCriterion("createtime is not null"); + return (Criteria) this; + } + + public Criteria andCreatetimeEqualTo(Date value) { + addCriterion("createtime =", value, "createtime"); + return (Criteria) this; + } + + public Criteria andCreatetimeNotEqualTo(Date value) { + addCriterion("createtime <>", value, "createtime"); + return (Criteria) this; + } + + public Criteria andCreatetimeGreaterThan(Date value) { + addCriterion("createtime >", value, "createtime"); + return (Criteria) this; + } + + public Criteria andCreatetimeGreaterThanOrEqualTo(Date value) { + addCriterion("createtime >=", value, "createtime"); + return (Criteria) this; + } + + public Criteria andCreatetimeLessThan(Date value) { + addCriterion("createtime <", value, "createtime"); + return (Criteria) this; + } + + public Criteria andCreatetimeLessThanOrEqualTo(Date value) { + addCriterion("createtime <=", value, "createtime"); + return (Criteria) this; + } + + public Criteria andCreatetimeIn(List values) { + addCriterion("createtime in", values, "createtime"); + return (Criteria) this; + } + + public Criteria andCreatetimeNotIn(List values) { + addCriterion("createtime not in", values, "createtime"); + return (Criteria) this; + } + + public Criteria andCreatetimeBetween(Date value1, Date value2) { + addCriterion("createtime between", value1, value2, "createtime"); + return (Criteria) this; + } + + public Criteria andCreatetimeNotBetween(Date value1, Date value2) { + addCriterion("createtime not between", value1, value2, "createtime"); + return (Criteria) this; + } + + public Criteria andStatusIsNull() { + addCriterion("status is null"); + return (Criteria) this; + } + + public Criteria andStatusIsNotNull() { + addCriterion("status is not null"); + return (Criteria) this; + } + + public Criteria andStatusEqualTo(Byte value) { + addCriterion("status =", value, "status"); + return (Criteria) this; + } + + public Criteria andStatusNotEqualTo(Byte value) { + addCriterion("status <>", value, "status"); + return (Criteria) this; + } + + public Criteria andStatusGreaterThan(Byte value) { + addCriterion("status >", value, "status"); + return (Criteria) this; + } + + public Criteria andStatusGreaterThanOrEqualTo(Byte value) { + addCriterion("status >=", value, "status"); + return (Criteria) this; + } + + public Criteria andStatusLessThan(Byte value) { + addCriterion("status <", value, "status"); + return (Criteria) this; + } + + public Criteria andStatusLessThanOrEqualTo(Byte value) { + addCriterion("status <=", value, "status"); + return (Criteria) this; + } + + public Criteria andStatusIn(List values) { + addCriterion("status in", values, "status"); + return (Criteria) this; + } + + public Criteria andStatusNotIn(List values) { + addCriterion("status not in", values, "status"); + return (Criteria) this; + } + + public Criteria andStatusBetween(Byte value1, Byte value2) { + addCriterion("status between", value1, value2, "status"); + return (Criteria) this; + } + + public Criteria andStatusNotBetween(Byte value1, Byte value2) { + addCriterion("status not between", value1, value2, "status"); + return (Criteria) this; + } + + public Criteria andContentdetailsIsNull() { + addCriterion("contentdetails is null"); + return (Criteria) this; + } + + public Criteria andContentdetailsIsNotNull() { + addCriterion("contentdetails is not null"); + return (Criteria) this; + } + + public Criteria andContentdetailsEqualTo(String value) { + addCriterion("contentdetails =", value, "contentdetails"); + return (Criteria) this; + } + + public Criteria andContentdetailsNotEqualTo(String value) { + addCriterion("contentdetails <>", value, "contentdetails"); + return (Criteria) this; + } + + public Criteria andContentdetailsGreaterThan(String value) { + addCriterion("contentdetails >", value, "contentdetails"); + return (Criteria) this; + } + + public Criteria andContentdetailsGreaterThanOrEqualTo(String value) { + addCriterion("contentdetails >=", value, "contentdetails"); + return (Criteria) this; + } + + public Criteria andContentdetailsLessThan(String value) { + addCriterion("contentdetails <", value, "contentdetails"); + return (Criteria) this; + } + + public Criteria andContentdetailsLessThanOrEqualTo(String value) { + addCriterion("contentdetails <=", value, "contentdetails"); + return (Criteria) this; + } + + public Criteria andContentdetailsLike(String value) { + addCriterion("contentdetails like", value, "contentdetails"); + return (Criteria) this; + } + + public Criteria andContentdetailsNotLike(String value) { + addCriterion("contentdetails not like", value, "contentdetails"); + return (Criteria) this; + } + + public Criteria andContentdetailsIn(List values) { + addCriterion("contentdetails in", values, "contentdetails"); + return (Criteria) this; + } + + public Criteria andContentdetailsNotIn(List values) { + addCriterion("contentdetails not in", values, "contentdetails"); + return (Criteria) this; + } + + public Criteria andContentdetailsBetween(String value1, String value2) { + addCriterion("contentdetails between", value1, value2, "contentdetails"); + return (Criteria) this; + } + + public Criteria andContentdetailsNotBetween(String value1, String value2) { + addCriterion("contentdetails not between", value1, value2, "contentdetails"); + return (Criteria) this; + } + + public Criteria andRemarkIsNull() { + addCriterion("remark is null"); + return (Criteria) this; + } + + public Criteria andRemarkIsNotNull() { + addCriterion("remark is not null"); + return (Criteria) this; + } + + public Criteria andRemarkEqualTo(String value) { + addCriterion("remark =", value, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkNotEqualTo(String value) { + addCriterion("remark <>", value, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkGreaterThan(String value) { + addCriterion("remark >", value, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkGreaterThanOrEqualTo(String value) { + addCriterion("remark >=", value, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkLessThan(String value) { + addCriterion("remark <", value, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkLessThanOrEqualTo(String value) { + addCriterion("remark <=", value, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkLike(String value) { + addCriterion("remark like", value, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkNotLike(String value) { + addCriterion("remark not like", value, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkIn(List values) { + addCriterion("remark in", values, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkNotIn(List values) { + addCriterion("remark not in", values, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkBetween(String value1, String value2) { + addCriterion("remark between", value1, value2, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkNotBetween(String value1, String value2) { + addCriterion("remark not between", value1, value2, "remark"); + return (Criteria) this; + } + } + + /** + * This class was generated by MyBatis Generator. + * This class corresponds to the database table jsh_log + * + * @mbggenerated do_not_delete_during_merge + */ + public static class Criteria extends GeneratedCriteria { + + protected Criteria() { + super(); + } + } + + /** + * This class was generated by MyBatis Generator. + * This class corresponds to the database table jsh_log + * + * @mbggenerated + */ + public static class Criterion { + private String condition; + + private Object value; + + private Object secondValue; + + private boolean noValue; + + private boolean singleValue; + + private boolean betweenValue; + + private boolean listValue; + + private String typeHandler; + + public String getCondition() { + return condition; + } + + public Object getValue() { + return value; + } + + public Object getSecondValue() { + return secondValue; + } + + public boolean isNoValue() { + return noValue; + } + + public boolean isSingleValue() { + return singleValue; + } + + public boolean isBetweenValue() { + return betweenValue; + } + + public boolean isListValue() { + return listValue; + } + + public String getTypeHandler() { + return typeHandler; + } + + protected Criterion(String condition) { + super(); + this.condition = condition; + this.typeHandler = null; + this.noValue = true; + } + + protected Criterion(String condition, Object value, String typeHandler) { + super(); + this.condition = condition; + this.value = value; + this.typeHandler = typeHandler; + if (value instanceof List) { + this.listValue = true; + } else { + this.singleValue = true; + } + } + + protected Criterion(String condition, Object value) { + this(condition, value, null); + } + + protected Criterion(String condition, Object value, Object secondValue, String typeHandler) { + super(); + this.condition = condition; + this.value = value; + this.secondValue = secondValue; + this.typeHandler = typeHandler; + this.betweenValue = true; + } + + protected Criterion(String condition, Object value, Object secondValue) { + this(condition, value, secondValue, null); + } + } +} \ No newline at end of file diff --git a/src/main/java/com/jsh/erp/datasource/entities/Material.java b/src/main/java/com/jsh/erp/datasource/entities/Material.java new file mode 100644 index 00000000..946262e7 --- /dev/null +++ b/src/main/java/com/jsh/erp/datasource/entities/Material.java @@ -0,0 +1,739 @@ +package com.jsh.erp.datasource.entities; + +public class Material { + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database column jsh_material.Id + * + * @mbggenerated + */ + private Long id; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database column jsh_material.CategoryId + * + * @mbggenerated + */ + private Long categoryid; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database column jsh_material.Name + * + * @mbggenerated + */ + private String name; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database column jsh_material.Mfrs + * + * @mbggenerated + */ + private String mfrs; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database column jsh_material.Packing + * + * @mbggenerated + */ + private Double packing; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database column jsh_material.SafetyStock + * + * @mbggenerated + */ + private Double safetystock; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database column jsh_material.Model + * + * @mbggenerated + */ + private String model; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database column jsh_material.Standard + * + * @mbggenerated + */ + private String standard; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database column jsh_material.Color + * + * @mbggenerated + */ + private String color; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database column jsh_material.Unit + * + * @mbggenerated + */ + private String unit; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database column jsh_material.Remark + * + * @mbggenerated + */ + private String remark; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database column jsh_material.RetailPrice + * + * @mbggenerated + */ + private Double retailprice; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database column jsh_material.LowPrice + * + * @mbggenerated + */ + private Double lowprice; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database column jsh_material.PresetPriceOne + * + * @mbggenerated + */ + private Double presetpriceone; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database column jsh_material.PresetPriceTwo + * + * @mbggenerated + */ + private Double presetpricetwo; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database column jsh_material.UnitId + * + * @mbggenerated + */ + private Long unitid; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database column jsh_material.FirstOutUnit + * + * @mbggenerated + */ + private String firstoutunit; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database column jsh_material.FirstInUnit + * + * @mbggenerated + */ + private String firstinunit; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database column jsh_material.PriceStrategy + * + * @mbggenerated + */ + private String pricestrategy; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database column jsh_material.Enabled + * + * @mbggenerated + */ + private Boolean enabled; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database column jsh_material.OtherField1 + * + * @mbggenerated + */ + private String otherfield1; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database column jsh_material.OtherField2 + * + * @mbggenerated + */ + private String otherfield2; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database column jsh_material.OtherField3 + * + * @mbggenerated + */ + private String otherfield3; + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column jsh_material.Id + * + * @return the value of jsh_material.Id + * + * @mbggenerated + */ + public Long getId() { + return id; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column jsh_material.Id + * + * @param id the value for jsh_material.Id + * + * @mbggenerated + */ + public void setId(Long id) { + this.id = id; + } + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column jsh_material.CategoryId + * + * @return the value of jsh_material.CategoryId + * + * @mbggenerated + */ + public Long getCategoryid() { + return categoryid; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column jsh_material.CategoryId + * + * @param categoryid the value for jsh_material.CategoryId + * + * @mbggenerated + */ + public void setCategoryid(Long categoryid) { + this.categoryid = categoryid; + } + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column jsh_material.Name + * + * @return the value of jsh_material.Name + * + * @mbggenerated + */ + public String getName() { + return name; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column jsh_material.Name + * + * @param name the value for jsh_material.Name + * + * @mbggenerated + */ + public void setName(String name) { + this.name = name == null ? null : name.trim(); + } + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column jsh_material.Mfrs + * + * @return the value of jsh_material.Mfrs + * + * @mbggenerated + */ + public String getMfrs() { + return mfrs; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column jsh_material.Mfrs + * + * @param mfrs the value for jsh_material.Mfrs + * + * @mbggenerated + */ + public void setMfrs(String mfrs) { + this.mfrs = mfrs == null ? null : mfrs.trim(); + } + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column jsh_material.Packing + * + * @return the value of jsh_material.Packing + * + * @mbggenerated + */ + public Double getPacking() { + return packing; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column jsh_material.Packing + * + * @param packing the value for jsh_material.Packing + * + * @mbggenerated + */ + public void setPacking(Double packing) { + this.packing = packing; + } + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column jsh_material.SafetyStock + * + * @return the value of jsh_material.SafetyStock + * + * @mbggenerated + */ + public Double getSafetystock() { + return safetystock; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column jsh_material.SafetyStock + * + * @param safetystock the value for jsh_material.SafetyStock + * + * @mbggenerated + */ + public void setSafetystock(Double safetystock) { + this.safetystock = safetystock; + } + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column jsh_material.Model + * + * @return the value of jsh_material.Model + * + * @mbggenerated + */ + public String getModel() { + return model; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column jsh_material.Model + * + * @param model the value for jsh_material.Model + * + * @mbggenerated + */ + public void setModel(String model) { + this.model = model == null ? null : model.trim(); + } + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column jsh_material.Standard + * + * @return the value of jsh_material.Standard + * + * @mbggenerated + */ + public String getStandard() { + return standard; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column jsh_material.Standard + * + * @param standard the value for jsh_material.Standard + * + * @mbggenerated + */ + public void setStandard(String standard) { + this.standard = standard == null ? null : standard.trim(); + } + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column jsh_material.Color + * + * @return the value of jsh_material.Color + * + * @mbggenerated + */ + public String getColor() { + return color; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column jsh_material.Color + * + * @param color the value for jsh_material.Color + * + * @mbggenerated + */ + public void setColor(String color) { + this.color = color == null ? null : color.trim(); + } + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column jsh_material.Unit + * + * @return the value of jsh_material.Unit + * + * @mbggenerated + */ + public String getUnit() { + return unit; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column jsh_material.Unit + * + * @param unit the value for jsh_material.Unit + * + * @mbggenerated + */ + public void setUnit(String unit) { + this.unit = unit == null ? null : unit.trim(); + } + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column jsh_material.Remark + * + * @return the value of jsh_material.Remark + * + * @mbggenerated + */ + public String getRemark() { + return remark; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column jsh_material.Remark + * + * @param remark the value for jsh_material.Remark + * + * @mbggenerated + */ + public void setRemark(String remark) { + this.remark = remark == null ? null : remark.trim(); + } + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column jsh_material.RetailPrice + * + * @return the value of jsh_material.RetailPrice + * + * @mbggenerated + */ + public Double getRetailprice() { + return retailprice; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column jsh_material.RetailPrice + * + * @param retailprice the value for jsh_material.RetailPrice + * + * @mbggenerated + */ + public void setRetailprice(Double retailprice) { + this.retailprice = retailprice; + } + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column jsh_material.LowPrice + * + * @return the value of jsh_material.LowPrice + * + * @mbggenerated + */ + public Double getLowprice() { + return lowprice; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column jsh_material.LowPrice + * + * @param lowprice the value for jsh_material.LowPrice + * + * @mbggenerated + */ + public void setLowprice(Double lowprice) { + this.lowprice = lowprice; + } + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column jsh_material.PresetPriceOne + * + * @return the value of jsh_material.PresetPriceOne + * + * @mbggenerated + */ + public Double getPresetpriceone() { + return presetpriceone; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column jsh_material.PresetPriceOne + * + * @param presetpriceone the value for jsh_material.PresetPriceOne + * + * @mbggenerated + */ + public void setPresetpriceone(Double presetpriceone) { + this.presetpriceone = presetpriceone; + } + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column jsh_material.PresetPriceTwo + * + * @return the value of jsh_material.PresetPriceTwo + * + * @mbggenerated + */ + public Double getPresetpricetwo() { + return presetpricetwo; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column jsh_material.PresetPriceTwo + * + * @param presetpricetwo the value for jsh_material.PresetPriceTwo + * + * @mbggenerated + */ + public void setPresetpricetwo(Double presetpricetwo) { + this.presetpricetwo = presetpricetwo; + } + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column jsh_material.UnitId + * + * @return the value of jsh_material.UnitId + * + * @mbggenerated + */ + public Long getUnitid() { + return unitid; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column jsh_material.UnitId + * + * @param unitid the value for jsh_material.UnitId + * + * @mbggenerated + */ + public void setUnitid(Long unitid) { + this.unitid = unitid; + } + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column jsh_material.FirstOutUnit + * + * @return the value of jsh_material.FirstOutUnit + * + * @mbggenerated + */ + public String getFirstoutunit() { + return firstoutunit; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column jsh_material.FirstOutUnit + * + * @param firstoutunit the value for jsh_material.FirstOutUnit + * + * @mbggenerated + */ + public void setFirstoutunit(String firstoutunit) { + this.firstoutunit = firstoutunit == null ? null : firstoutunit.trim(); + } + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column jsh_material.FirstInUnit + * + * @return the value of jsh_material.FirstInUnit + * + * @mbggenerated + */ + public String getFirstinunit() { + return firstinunit; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column jsh_material.FirstInUnit + * + * @param firstinunit the value for jsh_material.FirstInUnit + * + * @mbggenerated + */ + public void setFirstinunit(String firstinunit) { + this.firstinunit = firstinunit == null ? null : firstinunit.trim(); + } + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column jsh_material.PriceStrategy + * + * @return the value of jsh_material.PriceStrategy + * + * @mbggenerated + */ + public String getPricestrategy() { + return pricestrategy; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column jsh_material.PriceStrategy + * + * @param pricestrategy the value for jsh_material.PriceStrategy + * + * @mbggenerated + */ + public void setPricestrategy(String pricestrategy) { + this.pricestrategy = pricestrategy == null ? null : pricestrategy.trim(); + } + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column jsh_material.Enabled + * + * @return the value of jsh_material.Enabled + * + * @mbggenerated + */ + public Boolean getEnabled() { + return enabled; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column jsh_material.Enabled + * + * @param enabled the value for jsh_material.Enabled + * + * @mbggenerated + */ + public void setEnabled(Boolean enabled) { + this.enabled = enabled; + } + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column jsh_material.OtherField1 + * + * @return the value of jsh_material.OtherField1 + * + * @mbggenerated + */ + public String getOtherfield1() { + return otherfield1; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column jsh_material.OtherField1 + * + * @param otherfield1 the value for jsh_material.OtherField1 + * + * @mbggenerated + */ + public void setOtherfield1(String otherfield1) { + this.otherfield1 = otherfield1 == null ? null : otherfield1.trim(); + } + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column jsh_material.OtherField2 + * + * @return the value of jsh_material.OtherField2 + * + * @mbggenerated + */ + public String getOtherfield2() { + return otherfield2; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column jsh_material.OtherField2 + * + * @param otherfield2 the value for jsh_material.OtherField2 + * + * @mbggenerated + */ + public void setOtherfield2(String otherfield2) { + this.otherfield2 = otherfield2 == null ? null : otherfield2.trim(); + } + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column jsh_material.OtherField3 + * + * @return the value of jsh_material.OtherField3 + * + * @mbggenerated + */ + public String getOtherfield3() { + return otherfield3; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column jsh_material.OtherField3 + * + * @param otherfield3 the value for jsh_material.OtherField3 + * + * @mbggenerated + */ + public void setOtherfield3(String otherfield3) { + this.otherfield3 = otherfield3 == null ? null : otherfield3.trim(); + } +} \ No newline at end of file diff --git a/src/main/java/com/jsh/erp/datasource/entities/MaterialCategory.java b/src/main/java/com/jsh/erp/datasource/entities/MaterialCategory.java new file mode 100644 index 00000000..fe948130 --- /dev/null +++ b/src/main/java/com/jsh/erp/datasource/entities/MaterialCategory.java @@ -0,0 +1,131 @@ +package com.jsh.erp.datasource.entities; + +public class MaterialCategory { + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database column jsh_materialcategory.Id + * + * @mbggenerated + */ + private Long id; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database column jsh_materialcategory.Name + * + * @mbggenerated + */ + private String name; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database column jsh_materialcategory.CategoryLevel + * + * @mbggenerated + */ + private Short categorylevel; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database column jsh_materialcategory.ParentId + * + * @mbggenerated + */ + private Long parentid; + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column jsh_materialcategory.Id + * + * @return the value of jsh_materialcategory.Id + * + * @mbggenerated + */ + public Long getId() { + return id; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column jsh_materialcategory.Id + * + * @param id the value for jsh_materialcategory.Id + * + * @mbggenerated + */ + public void setId(Long id) { + this.id = id; + } + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column jsh_materialcategory.Name + * + * @return the value of jsh_materialcategory.Name + * + * @mbggenerated + */ + public String getName() { + return name; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column jsh_materialcategory.Name + * + * @param name the value for jsh_materialcategory.Name + * + * @mbggenerated + */ + public void setName(String name) { + this.name = name == null ? null : name.trim(); + } + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column jsh_materialcategory.CategoryLevel + * + * @return the value of jsh_materialcategory.CategoryLevel + * + * @mbggenerated + */ + public Short getCategorylevel() { + return categorylevel; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column jsh_materialcategory.CategoryLevel + * + * @param categorylevel the value for jsh_materialcategory.CategoryLevel + * + * @mbggenerated + */ + public void setCategorylevel(Short categorylevel) { + this.categorylevel = categorylevel; + } + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column jsh_materialcategory.ParentId + * + * @return the value of jsh_materialcategory.ParentId + * + * @mbggenerated + */ + public Long getParentid() { + return parentid; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column jsh_materialcategory.ParentId + * + * @param parentid the value for jsh_materialcategory.ParentId + * + * @mbggenerated + */ + public void setParentid(Long parentid) { + this.parentid = parentid; + } +} \ No newline at end of file diff --git a/src/main/java/com/jsh/erp/datasource/entities/MaterialCategoryExample.java b/src/main/java/com/jsh/erp/datasource/entities/MaterialCategoryExample.java new file mode 100644 index 00000000..3c7fe5b3 --- /dev/null +++ b/src/main/java/com/jsh/erp/datasource/entities/MaterialCategoryExample.java @@ -0,0 +1,552 @@ +package com.jsh.erp.datasource.entities; + +import java.util.ArrayList; +import java.util.List; + +public class MaterialCategoryExample { + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database table jsh_materialcategory + * + * @mbggenerated + */ + protected String orderByClause; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database table jsh_materialcategory + * + * @mbggenerated + */ + protected boolean distinct; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database table jsh_materialcategory + * + * @mbggenerated + */ + protected List oredCriteria; + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_materialcategory + * + * @mbggenerated + */ + public MaterialCategoryExample() { + oredCriteria = new ArrayList(); + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_materialcategory + * + * @mbggenerated + */ + public void setOrderByClause(String orderByClause) { + this.orderByClause = orderByClause; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_materialcategory + * + * @mbggenerated + */ + public String getOrderByClause() { + return orderByClause; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_materialcategory + * + * @mbggenerated + */ + public void setDistinct(boolean distinct) { + this.distinct = distinct; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_materialcategory + * + * @mbggenerated + */ + public boolean isDistinct() { + return distinct; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_materialcategory + * + * @mbggenerated + */ + public List getOredCriteria() { + return oredCriteria; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_materialcategory + * + * @mbggenerated + */ + public void or(Criteria criteria) { + oredCriteria.add(criteria); + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_materialcategory + * + * @mbggenerated + */ + public Criteria or() { + Criteria criteria = createCriteriaInternal(); + oredCriteria.add(criteria); + return criteria; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_materialcategory + * + * @mbggenerated + */ + public Criteria createCriteria() { + Criteria criteria = createCriteriaInternal(); + if (oredCriteria.size() == 0) { + oredCriteria.add(criteria); + } + return criteria; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_materialcategory + * + * @mbggenerated + */ + protected Criteria createCriteriaInternal() { + Criteria criteria = new Criteria(); + return criteria; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_materialcategory + * + * @mbggenerated + */ + public void clear() { + oredCriteria.clear(); + orderByClause = null; + distinct = false; + } + + /** + * This class was generated by MyBatis Generator. + * This class corresponds to the database table jsh_materialcategory + * + * @mbggenerated + */ + protected abstract static class GeneratedCriteria { + protected List criteria; + + protected GeneratedCriteria() { + super(); + criteria = new ArrayList(); + } + + public boolean isValid() { + return criteria.size() > 0; + } + + public List getAllCriteria() { + return criteria; + } + + public List getCriteria() { + return criteria; + } + + protected void addCriterion(String condition) { + if (condition == null) { + throw new RuntimeException("Value for condition cannot be null"); + } + criteria.add(new Criterion(condition)); + } + + protected void addCriterion(String condition, Object value, String property) { + if (value == null) { + throw new RuntimeException("Value for " + property + " cannot be null"); + } + criteria.add(new Criterion(condition, value)); + } + + protected void addCriterion(String condition, Object value1, Object value2, String property) { + if (value1 == null || value2 == null) { + throw new RuntimeException("Between values for " + property + " cannot be null"); + } + criteria.add(new Criterion(condition, value1, value2)); + } + + public Criteria andIdIsNull() { + addCriterion("Id is null"); + return (Criteria) this; + } + + public Criteria andIdIsNotNull() { + addCriterion("Id is not null"); + return (Criteria) this; + } + + public Criteria andIdEqualTo(Long value) { + addCriterion("Id =", value, "id"); + return (Criteria) this; + } + + public Criteria andIdNotEqualTo(Long value) { + addCriterion("Id <>", value, "id"); + return (Criteria) this; + } + + public Criteria andIdGreaterThan(Long value) { + addCriterion("Id >", value, "id"); + return (Criteria) this; + } + + public Criteria andIdGreaterThanOrEqualTo(Long value) { + addCriterion("Id >=", value, "id"); + return (Criteria) this; + } + + public Criteria andIdLessThan(Long value) { + addCriterion("Id <", value, "id"); + return (Criteria) this; + } + + public Criteria andIdLessThanOrEqualTo(Long value) { + addCriterion("Id <=", value, "id"); + return (Criteria) this; + } + + public Criteria andIdIn(List values) { + addCriterion("Id in", values, "id"); + return (Criteria) this; + } + + public Criteria andIdNotIn(List values) { + addCriterion("Id not in", values, "id"); + return (Criteria) this; + } + + public Criteria andIdBetween(Long value1, Long value2) { + addCriterion("Id between", value1, value2, "id"); + return (Criteria) this; + } + + public Criteria andIdNotBetween(Long value1, Long value2) { + addCriterion("Id not between", value1, value2, "id"); + return (Criteria) this; + } + + public Criteria andNameIsNull() { + addCriterion("Name is null"); + return (Criteria) this; + } + + public Criteria andNameIsNotNull() { + addCriterion("Name is not null"); + return (Criteria) this; + } + + public Criteria andNameEqualTo(String value) { + addCriterion("Name =", value, "name"); + return (Criteria) this; + } + + public Criteria andNameNotEqualTo(String value) { + addCriterion("Name <>", value, "name"); + return (Criteria) this; + } + + public Criteria andNameGreaterThan(String value) { + addCriterion("Name >", value, "name"); + return (Criteria) this; + } + + public Criteria andNameGreaterThanOrEqualTo(String value) { + addCriterion("Name >=", value, "name"); + return (Criteria) this; + } + + public Criteria andNameLessThan(String value) { + addCriterion("Name <", value, "name"); + return (Criteria) this; + } + + public Criteria andNameLessThanOrEqualTo(String value) { + addCriterion("Name <=", value, "name"); + return (Criteria) this; + } + + public Criteria andNameLike(String value) { + addCriterion("Name like", value, "name"); + return (Criteria) this; + } + + public Criteria andNameNotLike(String value) { + addCriterion("Name not like", value, "name"); + return (Criteria) this; + } + + public Criteria andNameIn(List values) { + addCriterion("Name in", values, "name"); + return (Criteria) this; + } + + public Criteria andNameNotIn(List values) { + addCriterion("Name not in", values, "name"); + return (Criteria) this; + } + + public Criteria andNameBetween(String value1, String value2) { + addCriterion("Name between", value1, value2, "name"); + return (Criteria) this; + } + + public Criteria andNameNotBetween(String value1, String value2) { + addCriterion("Name not between", value1, value2, "name"); + return (Criteria) this; + } + + public Criteria andCategorylevelIsNull() { + addCriterion("CategoryLevel is null"); + return (Criteria) this; + } + + public Criteria andCategorylevelIsNotNull() { + addCriterion("CategoryLevel is not null"); + return (Criteria) this; + } + + public Criteria andCategorylevelEqualTo(Short value) { + addCriterion("CategoryLevel =", value, "categorylevel"); + return (Criteria) this; + } + + public Criteria andCategorylevelNotEqualTo(Short value) { + addCriterion("CategoryLevel <>", value, "categorylevel"); + return (Criteria) this; + } + + public Criteria andCategorylevelGreaterThan(Short value) { + addCriterion("CategoryLevel >", value, "categorylevel"); + return (Criteria) this; + } + + public Criteria andCategorylevelGreaterThanOrEqualTo(Short value) { + addCriterion("CategoryLevel >=", value, "categorylevel"); + return (Criteria) this; + } + + public Criteria andCategorylevelLessThan(Short value) { + addCriterion("CategoryLevel <", value, "categorylevel"); + return (Criteria) this; + } + + public Criteria andCategorylevelLessThanOrEqualTo(Short value) { + addCriterion("CategoryLevel <=", value, "categorylevel"); + return (Criteria) this; + } + + public Criteria andCategorylevelIn(List values) { + addCriterion("CategoryLevel in", values, "categorylevel"); + return (Criteria) this; + } + + public Criteria andCategorylevelNotIn(List values) { + addCriterion("CategoryLevel not in", values, "categorylevel"); + return (Criteria) this; + } + + public Criteria andCategorylevelBetween(Short value1, Short value2) { + addCriterion("CategoryLevel between", value1, value2, "categorylevel"); + return (Criteria) this; + } + + public Criteria andCategorylevelNotBetween(Short value1, Short value2) { + addCriterion("CategoryLevel not between", value1, value2, "categorylevel"); + return (Criteria) this; + } + + public Criteria andParentidIsNull() { + addCriterion("ParentId is null"); + return (Criteria) this; + } + + public Criteria andParentidIsNotNull() { + addCriterion("ParentId is not null"); + return (Criteria) this; + } + + public Criteria andParentidEqualTo(Long value) { + addCriterion("ParentId =", value, "parentid"); + return (Criteria) this; + } + + public Criteria andParentidNotEqualTo(Long value) { + addCriterion("ParentId <>", value, "parentid"); + return (Criteria) this; + } + + public Criteria andParentidGreaterThan(Long value) { + addCriterion("ParentId >", value, "parentid"); + return (Criteria) this; + } + + public Criteria andParentidGreaterThanOrEqualTo(Long value) { + addCriterion("ParentId >=", value, "parentid"); + return (Criteria) this; + } + + public Criteria andParentidLessThan(Long value) { + addCriterion("ParentId <", value, "parentid"); + return (Criteria) this; + } + + public Criteria andParentidLessThanOrEqualTo(Long value) { + addCriterion("ParentId <=", value, "parentid"); + return (Criteria) this; + } + + public Criteria andParentidIn(List values) { + addCriterion("ParentId in", values, "parentid"); + return (Criteria) this; + } + + public Criteria andParentidNotIn(List values) { + addCriterion("ParentId not in", values, "parentid"); + return (Criteria) this; + } + + public Criteria andParentidBetween(Long value1, Long value2) { + addCriterion("ParentId between", value1, value2, "parentid"); + return (Criteria) this; + } + + public Criteria andParentidNotBetween(Long value1, Long value2) { + addCriterion("ParentId not between", value1, value2, "parentid"); + return (Criteria) this; + } + } + + /** + * This class was generated by MyBatis Generator. + * This class corresponds to the database table jsh_materialcategory + * + * @mbggenerated do_not_delete_during_merge + */ + public static class Criteria extends GeneratedCriteria { + + protected Criteria() { + super(); + } + } + + /** + * This class was generated by MyBatis Generator. + * This class corresponds to the database table jsh_materialcategory + * + * @mbggenerated + */ + public static class Criterion { + private String condition; + + private Object value; + + private Object secondValue; + + private boolean noValue; + + private boolean singleValue; + + private boolean betweenValue; + + private boolean listValue; + + private String typeHandler; + + public String getCondition() { + return condition; + } + + public Object getValue() { + return value; + } + + public Object getSecondValue() { + return secondValue; + } + + public boolean isNoValue() { + return noValue; + } + + public boolean isSingleValue() { + return singleValue; + } + + public boolean isBetweenValue() { + return betweenValue; + } + + public boolean isListValue() { + return listValue; + } + + public String getTypeHandler() { + return typeHandler; + } + + protected Criterion(String condition) { + super(); + this.condition = condition; + this.typeHandler = null; + this.noValue = true; + } + + protected Criterion(String condition, Object value, String typeHandler) { + super(); + this.condition = condition; + this.value = value; + this.typeHandler = typeHandler; + if (value instanceof List) { + this.listValue = true; + } else { + this.singleValue = true; + } + } + + protected Criterion(String condition, Object value) { + this(condition, value, null); + } + + protected Criterion(String condition, Object value, Object secondValue, String typeHandler) { + super(); + this.condition = condition; + this.value = value; + this.secondValue = secondValue; + this.typeHandler = typeHandler; + this.betweenValue = true; + } + + protected Criterion(String condition, Object value, Object secondValue) { + this(condition, value, secondValue, null); + } + } +} \ No newline at end of file diff --git a/src/main/java/com/jsh/erp/datasource/entities/MaterialExample.java b/src/main/java/com/jsh/erp/datasource/entities/MaterialExample.java new file mode 100644 index 00000000..c3adc6a7 --- /dev/null +++ b/src/main/java/com/jsh/erp/datasource/entities/MaterialExample.java @@ -0,0 +1,1812 @@ +package com.jsh.erp.datasource.entities; + +import java.util.ArrayList; +import java.util.List; + +public class MaterialExample { + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database table jsh_material + * + * @mbggenerated + */ + protected String orderByClause; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database table jsh_material + * + * @mbggenerated + */ + protected boolean distinct; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database table jsh_material + * + * @mbggenerated + */ + protected List oredCriteria; + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_material + * + * @mbggenerated + */ + public MaterialExample() { + oredCriteria = new ArrayList(); + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_material + * + * @mbggenerated + */ + public void setOrderByClause(String orderByClause) { + this.orderByClause = orderByClause; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_material + * + * @mbggenerated + */ + public String getOrderByClause() { + return orderByClause; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_material + * + * @mbggenerated + */ + public void setDistinct(boolean distinct) { + this.distinct = distinct; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_material + * + * @mbggenerated + */ + public boolean isDistinct() { + return distinct; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_material + * + * @mbggenerated + */ + public List getOredCriteria() { + return oredCriteria; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_material + * + * @mbggenerated + */ + public void or(Criteria criteria) { + oredCriteria.add(criteria); + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_material + * + * @mbggenerated + */ + public Criteria or() { + Criteria criteria = createCriteriaInternal(); + oredCriteria.add(criteria); + return criteria; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_material + * + * @mbggenerated + */ + public Criteria createCriteria() { + Criteria criteria = createCriteriaInternal(); + if (oredCriteria.size() == 0) { + oredCriteria.add(criteria); + } + return criteria; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_material + * + * @mbggenerated + */ + protected Criteria createCriteriaInternal() { + Criteria criteria = new Criteria(); + return criteria; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_material + * + * @mbggenerated + */ + public void clear() { + oredCriteria.clear(); + orderByClause = null; + distinct = false; + } + + /** + * This class was generated by MyBatis Generator. + * This class corresponds to the database table jsh_material + * + * @mbggenerated + */ + protected abstract static class GeneratedCriteria { + protected List criteria; + + protected GeneratedCriteria() { + super(); + criteria = new ArrayList(); + } + + public boolean isValid() { + return criteria.size() > 0; + } + + public List getAllCriteria() { + return criteria; + } + + public List getCriteria() { + return criteria; + } + + protected void addCriterion(String condition) { + if (condition == null) { + throw new RuntimeException("Value for condition cannot be null"); + } + criteria.add(new Criterion(condition)); + } + + protected void addCriterion(String condition, Object value, String property) { + if (value == null) { + throw new RuntimeException("Value for " + property + " cannot be null"); + } + criteria.add(new Criterion(condition, value)); + } + + protected void addCriterion(String condition, Object value1, Object value2, String property) { + if (value1 == null || value2 == null) { + throw new RuntimeException("Between values for " + property + " cannot be null"); + } + criteria.add(new Criterion(condition, value1, value2)); + } + + public Criteria andIdIsNull() { + addCriterion("Id is null"); + return (Criteria) this; + } + + public Criteria andIdIsNotNull() { + addCriterion("Id is not null"); + return (Criteria) this; + } + + public Criteria andIdEqualTo(Long value) { + addCriterion("Id =", value, "id"); + return (Criteria) this; + } + + public Criteria andIdNotEqualTo(Long value) { + addCriterion("Id <>", value, "id"); + return (Criteria) this; + } + + public Criteria andIdGreaterThan(Long value) { + addCriterion("Id >", value, "id"); + return (Criteria) this; + } + + public Criteria andIdGreaterThanOrEqualTo(Long value) { + addCriterion("Id >=", value, "id"); + return (Criteria) this; + } + + public Criteria andIdLessThan(Long value) { + addCriterion("Id <", value, "id"); + return (Criteria) this; + } + + public Criteria andIdLessThanOrEqualTo(Long value) { + addCriterion("Id <=", value, "id"); + return (Criteria) this; + } + + public Criteria andIdIn(List values) { + addCriterion("Id in", values, "id"); + return (Criteria) this; + } + + public Criteria andIdNotIn(List values) { + addCriterion("Id not in", values, "id"); + return (Criteria) this; + } + + public Criteria andIdBetween(Long value1, Long value2) { + addCriterion("Id between", value1, value2, "id"); + return (Criteria) this; + } + + public Criteria andIdNotBetween(Long value1, Long value2) { + addCriterion("Id not between", value1, value2, "id"); + return (Criteria) this; + } + + public Criteria andCategoryidIsNull() { + addCriterion("CategoryId is null"); + return (Criteria) this; + } + + public Criteria andCategoryidIsNotNull() { + addCriterion("CategoryId is not null"); + return (Criteria) this; + } + + public Criteria andCategoryidEqualTo(Long value) { + addCriterion("CategoryId =", value, "categoryid"); + return (Criteria) this; + } + + public Criteria andCategoryidNotEqualTo(Long value) { + addCriterion("CategoryId <>", value, "categoryid"); + return (Criteria) this; + } + + public Criteria andCategoryidGreaterThan(Long value) { + addCriterion("CategoryId >", value, "categoryid"); + return (Criteria) this; + } + + public Criteria andCategoryidGreaterThanOrEqualTo(Long value) { + addCriterion("CategoryId >=", value, "categoryid"); + return (Criteria) this; + } + + public Criteria andCategoryidLessThan(Long value) { + addCriterion("CategoryId <", value, "categoryid"); + return (Criteria) this; + } + + public Criteria andCategoryidLessThanOrEqualTo(Long value) { + addCriterion("CategoryId <=", value, "categoryid"); + return (Criteria) this; + } + + public Criteria andCategoryidIn(List values) { + addCriterion("CategoryId in", values, "categoryid"); + return (Criteria) this; + } + + public Criteria andCategoryidNotIn(List values) { + addCriterion("CategoryId not in", values, "categoryid"); + return (Criteria) this; + } + + public Criteria andCategoryidBetween(Long value1, Long value2) { + addCriterion("CategoryId between", value1, value2, "categoryid"); + return (Criteria) this; + } + + public Criteria andCategoryidNotBetween(Long value1, Long value2) { + addCriterion("CategoryId not between", value1, value2, "categoryid"); + return (Criteria) this; + } + + public Criteria andNameIsNull() { + addCriterion("Name is null"); + return (Criteria) this; + } + + public Criteria andNameIsNotNull() { + addCriterion("Name is not null"); + return (Criteria) this; + } + + public Criteria andNameEqualTo(String value) { + addCriterion("Name =", value, "name"); + return (Criteria) this; + } + + public Criteria andNameNotEqualTo(String value) { + addCriterion("Name <>", value, "name"); + return (Criteria) this; + } + + public Criteria andNameGreaterThan(String value) { + addCriterion("Name >", value, "name"); + return (Criteria) this; + } + + public Criteria andNameGreaterThanOrEqualTo(String value) { + addCriterion("Name >=", value, "name"); + return (Criteria) this; + } + + public Criteria andNameLessThan(String value) { + addCriterion("Name <", value, "name"); + return (Criteria) this; + } + + public Criteria andNameLessThanOrEqualTo(String value) { + addCriterion("Name <=", value, "name"); + return (Criteria) this; + } + + public Criteria andNameLike(String value) { + addCriterion("Name like", value, "name"); + return (Criteria) this; + } + + public Criteria andNameNotLike(String value) { + addCriterion("Name not like", value, "name"); + return (Criteria) this; + } + + public Criteria andNameIn(List values) { + addCriterion("Name in", values, "name"); + return (Criteria) this; + } + + public Criteria andNameNotIn(List values) { + addCriterion("Name not in", values, "name"); + return (Criteria) this; + } + + public Criteria andNameBetween(String value1, String value2) { + addCriterion("Name between", value1, value2, "name"); + return (Criteria) this; + } + + public Criteria andNameNotBetween(String value1, String value2) { + addCriterion("Name not between", value1, value2, "name"); + return (Criteria) this; + } + + public Criteria andMfrsIsNull() { + addCriterion("Mfrs is null"); + return (Criteria) this; + } + + public Criteria andMfrsIsNotNull() { + addCriterion("Mfrs is not null"); + return (Criteria) this; + } + + public Criteria andMfrsEqualTo(String value) { + addCriterion("Mfrs =", value, "mfrs"); + return (Criteria) this; + } + + public Criteria andMfrsNotEqualTo(String value) { + addCriterion("Mfrs <>", value, "mfrs"); + return (Criteria) this; + } + + public Criteria andMfrsGreaterThan(String value) { + addCriterion("Mfrs >", value, "mfrs"); + return (Criteria) this; + } + + public Criteria andMfrsGreaterThanOrEqualTo(String value) { + addCriterion("Mfrs >=", value, "mfrs"); + return (Criteria) this; + } + + public Criteria andMfrsLessThan(String value) { + addCriterion("Mfrs <", value, "mfrs"); + return (Criteria) this; + } + + public Criteria andMfrsLessThanOrEqualTo(String value) { + addCriterion("Mfrs <=", value, "mfrs"); + return (Criteria) this; + } + + public Criteria andMfrsLike(String value) { + addCriterion("Mfrs like", value, "mfrs"); + return (Criteria) this; + } + + public Criteria andMfrsNotLike(String value) { + addCriterion("Mfrs not like", value, "mfrs"); + return (Criteria) this; + } + + public Criteria andMfrsIn(List values) { + addCriterion("Mfrs in", values, "mfrs"); + return (Criteria) this; + } + + public Criteria andMfrsNotIn(List values) { + addCriterion("Mfrs not in", values, "mfrs"); + return (Criteria) this; + } + + public Criteria andMfrsBetween(String value1, String value2) { + addCriterion("Mfrs between", value1, value2, "mfrs"); + return (Criteria) this; + } + + public Criteria andMfrsNotBetween(String value1, String value2) { + addCriterion("Mfrs not between", value1, value2, "mfrs"); + return (Criteria) this; + } + + public Criteria andPackingIsNull() { + addCriterion("Packing is null"); + return (Criteria) this; + } + + public Criteria andPackingIsNotNull() { + addCriterion("Packing is not null"); + return (Criteria) this; + } + + public Criteria andPackingEqualTo(Double value) { + addCriterion("Packing =", value, "packing"); + return (Criteria) this; + } + + public Criteria andPackingNotEqualTo(Double value) { + addCriterion("Packing <>", value, "packing"); + return (Criteria) this; + } + + public Criteria andPackingGreaterThan(Double value) { + addCriterion("Packing >", value, "packing"); + return (Criteria) this; + } + + public Criteria andPackingGreaterThanOrEqualTo(Double value) { + addCriterion("Packing >=", value, "packing"); + return (Criteria) this; + } + + public Criteria andPackingLessThan(Double value) { + addCriterion("Packing <", value, "packing"); + return (Criteria) this; + } + + public Criteria andPackingLessThanOrEqualTo(Double value) { + addCriterion("Packing <=", value, "packing"); + return (Criteria) this; + } + + public Criteria andPackingIn(List values) { + addCriterion("Packing in", values, "packing"); + return (Criteria) this; + } + + public Criteria andPackingNotIn(List values) { + addCriterion("Packing not in", values, "packing"); + return (Criteria) this; + } + + public Criteria andPackingBetween(Double value1, Double value2) { + addCriterion("Packing between", value1, value2, "packing"); + return (Criteria) this; + } + + public Criteria andPackingNotBetween(Double value1, Double value2) { + addCriterion("Packing not between", value1, value2, "packing"); + return (Criteria) this; + } + + public Criteria andSafetystockIsNull() { + addCriterion("SafetyStock is null"); + return (Criteria) this; + } + + public Criteria andSafetystockIsNotNull() { + addCriterion("SafetyStock is not null"); + return (Criteria) this; + } + + public Criteria andSafetystockEqualTo(Double value) { + addCriterion("SafetyStock =", value, "safetystock"); + return (Criteria) this; + } + + public Criteria andSafetystockNotEqualTo(Double value) { + addCriterion("SafetyStock <>", value, "safetystock"); + return (Criteria) this; + } + + public Criteria andSafetystockGreaterThan(Double value) { + addCriterion("SafetyStock >", value, "safetystock"); + return (Criteria) this; + } + + public Criteria andSafetystockGreaterThanOrEqualTo(Double value) { + addCriterion("SafetyStock >=", value, "safetystock"); + return (Criteria) this; + } + + public Criteria andSafetystockLessThan(Double value) { + addCriterion("SafetyStock <", value, "safetystock"); + return (Criteria) this; + } + + public Criteria andSafetystockLessThanOrEqualTo(Double value) { + addCriterion("SafetyStock <=", value, "safetystock"); + return (Criteria) this; + } + + public Criteria andSafetystockIn(List values) { + addCriterion("SafetyStock in", values, "safetystock"); + return (Criteria) this; + } + + public Criteria andSafetystockNotIn(List values) { + addCriterion("SafetyStock not in", values, "safetystock"); + return (Criteria) this; + } + + public Criteria andSafetystockBetween(Double value1, Double value2) { + addCriterion("SafetyStock between", value1, value2, "safetystock"); + return (Criteria) this; + } + + public Criteria andSafetystockNotBetween(Double value1, Double value2) { + addCriterion("SafetyStock not between", value1, value2, "safetystock"); + return (Criteria) this; + } + + public Criteria andModelIsNull() { + addCriterion("Model is null"); + return (Criteria) this; + } + + public Criteria andModelIsNotNull() { + addCriterion("Model is not null"); + return (Criteria) this; + } + + public Criteria andModelEqualTo(String value) { + addCriterion("Model =", value, "model"); + return (Criteria) this; + } + + public Criteria andModelNotEqualTo(String value) { + addCriterion("Model <>", value, "model"); + return (Criteria) this; + } + + public Criteria andModelGreaterThan(String value) { + addCriterion("Model >", value, "model"); + return (Criteria) this; + } + + public Criteria andModelGreaterThanOrEqualTo(String value) { + addCriterion("Model >=", value, "model"); + return (Criteria) this; + } + + public Criteria andModelLessThan(String value) { + addCriterion("Model <", value, "model"); + return (Criteria) this; + } + + public Criteria andModelLessThanOrEqualTo(String value) { + addCriterion("Model <=", value, "model"); + return (Criteria) this; + } + + public Criteria andModelLike(String value) { + addCriterion("Model like", value, "model"); + return (Criteria) this; + } + + public Criteria andModelNotLike(String value) { + addCriterion("Model not like", value, "model"); + return (Criteria) this; + } + + public Criteria andModelIn(List values) { + addCriterion("Model in", values, "model"); + return (Criteria) this; + } + + public Criteria andModelNotIn(List values) { + addCriterion("Model not in", values, "model"); + return (Criteria) this; + } + + public Criteria andModelBetween(String value1, String value2) { + addCriterion("Model between", value1, value2, "model"); + return (Criteria) this; + } + + public Criteria andModelNotBetween(String value1, String value2) { + addCriterion("Model not between", value1, value2, "model"); + return (Criteria) this; + } + + public Criteria andStandardIsNull() { + addCriterion("Standard is null"); + return (Criteria) this; + } + + public Criteria andStandardIsNotNull() { + addCriterion("Standard is not null"); + return (Criteria) this; + } + + public Criteria andStandardEqualTo(String value) { + addCriterion("Standard =", value, "standard"); + return (Criteria) this; + } + + public Criteria andStandardNotEqualTo(String value) { + addCriterion("Standard <>", value, "standard"); + return (Criteria) this; + } + + public Criteria andStandardGreaterThan(String value) { + addCriterion("Standard >", value, "standard"); + return (Criteria) this; + } + + public Criteria andStandardGreaterThanOrEqualTo(String value) { + addCriterion("Standard >=", value, "standard"); + return (Criteria) this; + } + + public Criteria andStandardLessThan(String value) { + addCriterion("Standard <", value, "standard"); + return (Criteria) this; + } + + public Criteria andStandardLessThanOrEqualTo(String value) { + addCriterion("Standard <=", value, "standard"); + return (Criteria) this; + } + + public Criteria andStandardLike(String value) { + addCriterion("Standard like", value, "standard"); + return (Criteria) this; + } + + public Criteria andStandardNotLike(String value) { + addCriterion("Standard not like", value, "standard"); + return (Criteria) this; + } + + public Criteria andStandardIn(List values) { + addCriterion("Standard in", values, "standard"); + return (Criteria) this; + } + + public Criteria andStandardNotIn(List values) { + addCriterion("Standard not in", values, "standard"); + return (Criteria) this; + } + + public Criteria andStandardBetween(String value1, String value2) { + addCriterion("Standard between", value1, value2, "standard"); + return (Criteria) this; + } + + public Criteria andStandardNotBetween(String value1, String value2) { + addCriterion("Standard not between", value1, value2, "standard"); + return (Criteria) this; + } + + public Criteria andColorIsNull() { + addCriterion("Color is null"); + return (Criteria) this; + } + + public Criteria andColorIsNotNull() { + addCriterion("Color is not null"); + return (Criteria) this; + } + + public Criteria andColorEqualTo(String value) { + addCriterion("Color =", value, "color"); + return (Criteria) this; + } + + public Criteria andColorNotEqualTo(String value) { + addCriterion("Color <>", value, "color"); + return (Criteria) this; + } + + public Criteria andColorGreaterThan(String value) { + addCriterion("Color >", value, "color"); + return (Criteria) this; + } + + public Criteria andColorGreaterThanOrEqualTo(String value) { + addCriterion("Color >=", value, "color"); + return (Criteria) this; + } + + public Criteria andColorLessThan(String value) { + addCriterion("Color <", value, "color"); + return (Criteria) this; + } + + public Criteria andColorLessThanOrEqualTo(String value) { + addCriterion("Color <=", value, "color"); + return (Criteria) this; + } + + public Criteria andColorLike(String value) { + addCriterion("Color like", value, "color"); + return (Criteria) this; + } + + public Criteria andColorNotLike(String value) { + addCriterion("Color not like", value, "color"); + return (Criteria) this; + } + + public Criteria andColorIn(List values) { + addCriterion("Color in", values, "color"); + return (Criteria) this; + } + + public Criteria andColorNotIn(List values) { + addCriterion("Color not in", values, "color"); + return (Criteria) this; + } + + public Criteria andColorBetween(String value1, String value2) { + addCriterion("Color between", value1, value2, "color"); + return (Criteria) this; + } + + public Criteria andColorNotBetween(String value1, String value2) { + addCriterion("Color not between", value1, value2, "color"); + return (Criteria) this; + } + + public Criteria andUnitIsNull() { + addCriterion("Unit is null"); + return (Criteria) this; + } + + public Criteria andUnitIsNotNull() { + addCriterion("Unit is not null"); + return (Criteria) this; + } + + public Criteria andUnitEqualTo(String value) { + addCriterion("Unit =", value, "unit"); + return (Criteria) this; + } + + public Criteria andUnitNotEqualTo(String value) { + addCriterion("Unit <>", value, "unit"); + return (Criteria) this; + } + + public Criteria andUnitGreaterThan(String value) { + addCriterion("Unit >", value, "unit"); + return (Criteria) this; + } + + public Criteria andUnitGreaterThanOrEqualTo(String value) { + addCriterion("Unit >=", value, "unit"); + return (Criteria) this; + } + + public Criteria andUnitLessThan(String value) { + addCriterion("Unit <", value, "unit"); + return (Criteria) this; + } + + public Criteria andUnitLessThanOrEqualTo(String value) { + addCriterion("Unit <=", value, "unit"); + return (Criteria) this; + } + + public Criteria andUnitLike(String value) { + addCriterion("Unit like", value, "unit"); + return (Criteria) this; + } + + public Criteria andUnitNotLike(String value) { + addCriterion("Unit not like", value, "unit"); + return (Criteria) this; + } + + public Criteria andUnitIn(List values) { + addCriterion("Unit in", values, "unit"); + return (Criteria) this; + } + + public Criteria andUnitNotIn(List values) { + addCriterion("Unit not in", values, "unit"); + return (Criteria) this; + } + + public Criteria andUnitBetween(String value1, String value2) { + addCriterion("Unit between", value1, value2, "unit"); + return (Criteria) this; + } + + public Criteria andUnitNotBetween(String value1, String value2) { + addCriterion("Unit not between", value1, value2, "unit"); + return (Criteria) this; + } + + public Criteria andRemarkIsNull() { + addCriterion("Remark is null"); + return (Criteria) this; + } + + public Criteria andRemarkIsNotNull() { + addCriterion("Remark is not null"); + return (Criteria) this; + } + + public Criteria andRemarkEqualTo(String value) { + addCriterion("Remark =", value, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkNotEqualTo(String value) { + addCriterion("Remark <>", value, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkGreaterThan(String value) { + addCriterion("Remark >", value, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkGreaterThanOrEqualTo(String value) { + addCriterion("Remark >=", value, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkLessThan(String value) { + addCriterion("Remark <", value, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkLessThanOrEqualTo(String value) { + addCriterion("Remark <=", value, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkLike(String value) { + addCriterion("Remark like", value, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkNotLike(String value) { + addCriterion("Remark not like", value, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkIn(List values) { + addCriterion("Remark in", values, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkNotIn(List values) { + addCriterion("Remark not in", values, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkBetween(String value1, String value2) { + addCriterion("Remark between", value1, value2, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkNotBetween(String value1, String value2) { + addCriterion("Remark not between", value1, value2, "remark"); + return (Criteria) this; + } + + public Criteria andRetailpriceIsNull() { + addCriterion("RetailPrice is null"); + return (Criteria) this; + } + + public Criteria andRetailpriceIsNotNull() { + addCriterion("RetailPrice is not null"); + return (Criteria) this; + } + + public Criteria andRetailpriceEqualTo(Double value) { + addCriterion("RetailPrice =", value, "retailprice"); + return (Criteria) this; + } + + public Criteria andRetailpriceNotEqualTo(Double value) { + addCriterion("RetailPrice <>", value, "retailprice"); + return (Criteria) this; + } + + public Criteria andRetailpriceGreaterThan(Double value) { + addCriterion("RetailPrice >", value, "retailprice"); + return (Criteria) this; + } + + public Criteria andRetailpriceGreaterThanOrEqualTo(Double value) { + addCriterion("RetailPrice >=", value, "retailprice"); + return (Criteria) this; + } + + public Criteria andRetailpriceLessThan(Double value) { + addCriterion("RetailPrice <", value, "retailprice"); + return (Criteria) this; + } + + public Criteria andRetailpriceLessThanOrEqualTo(Double value) { + addCriterion("RetailPrice <=", value, "retailprice"); + return (Criteria) this; + } + + public Criteria andRetailpriceIn(List values) { + addCriterion("RetailPrice in", values, "retailprice"); + return (Criteria) this; + } + + public Criteria andRetailpriceNotIn(List values) { + addCriterion("RetailPrice not in", values, "retailprice"); + return (Criteria) this; + } + + public Criteria andRetailpriceBetween(Double value1, Double value2) { + addCriterion("RetailPrice between", value1, value2, "retailprice"); + return (Criteria) this; + } + + public Criteria andRetailpriceNotBetween(Double value1, Double value2) { + addCriterion("RetailPrice not between", value1, value2, "retailprice"); + return (Criteria) this; + } + + public Criteria andLowpriceIsNull() { + addCriterion("LowPrice is null"); + return (Criteria) this; + } + + public Criteria andLowpriceIsNotNull() { + addCriterion("LowPrice is not null"); + return (Criteria) this; + } + + public Criteria andLowpriceEqualTo(Double value) { + addCriterion("LowPrice =", value, "lowprice"); + return (Criteria) this; + } + + public Criteria andLowpriceNotEqualTo(Double value) { + addCriterion("LowPrice <>", value, "lowprice"); + return (Criteria) this; + } + + public Criteria andLowpriceGreaterThan(Double value) { + addCriterion("LowPrice >", value, "lowprice"); + return (Criteria) this; + } + + public Criteria andLowpriceGreaterThanOrEqualTo(Double value) { + addCriterion("LowPrice >=", value, "lowprice"); + return (Criteria) this; + } + + public Criteria andLowpriceLessThan(Double value) { + addCriterion("LowPrice <", value, "lowprice"); + return (Criteria) this; + } + + public Criteria andLowpriceLessThanOrEqualTo(Double value) { + addCriterion("LowPrice <=", value, "lowprice"); + return (Criteria) this; + } + + public Criteria andLowpriceIn(List values) { + addCriterion("LowPrice in", values, "lowprice"); + return (Criteria) this; + } + + public Criteria andLowpriceNotIn(List values) { + addCriterion("LowPrice not in", values, "lowprice"); + return (Criteria) this; + } + + public Criteria andLowpriceBetween(Double value1, Double value2) { + addCriterion("LowPrice between", value1, value2, "lowprice"); + return (Criteria) this; + } + + public Criteria andLowpriceNotBetween(Double value1, Double value2) { + addCriterion("LowPrice not between", value1, value2, "lowprice"); + return (Criteria) this; + } + + public Criteria andPresetpriceoneIsNull() { + addCriterion("PresetPriceOne is null"); + return (Criteria) this; + } + + public Criteria andPresetpriceoneIsNotNull() { + addCriterion("PresetPriceOne is not null"); + return (Criteria) this; + } + + public Criteria andPresetpriceoneEqualTo(Double value) { + addCriterion("PresetPriceOne =", value, "presetpriceone"); + return (Criteria) this; + } + + public Criteria andPresetpriceoneNotEqualTo(Double value) { + addCriterion("PresetPriceOne <>", value, "presetpriceone"); + return (Criteria) this; + } + + public Criteria andPresetpriceoneGreaterThan(Double value) { + addCriterion("PresetPriceOne >", value, "presetpriceone"); + return (Criteria) this; + } + + public Criteria andPresetpriceoneGreaterThanOrEqualTo(Double value) { + addCriterion("PresetPriceOne >=", value, "presetpriceone"); + return (Criteria) this; + } + + public Criteria andPresetpriceoneLessThan(Double value) { + addCriterion("PresetPriceOne <", value, "presetpriceone"); + return (Criteria) this; + } + + public Criteria andPresetpriceoneLessThanOrEqualTo(Double value) { + addCriterion("PresetPriceOne <=", value, "presetpriceone"); + return (Criteria) this; + } + + public Criteria andPresetpriceoneIn(List values) { + addCriterion("PresetPriceOne in", values, "presetpriceone"); + return (Criteria) this; + } + + public Criteria andPresetpriceoneNotIn(List values) { + addCriterion("PresetPriceOne not in", values, "presetpriceone"); + return (Criteria) this; + } + + public Criteria andPresetpriceoneBetween(Double value1, Double value2) { + addCriterion("PresetPriceOne between", value1, value2, "presetpriceone"); + return (Criteria) this; + } + + public Criteria andPresetpriceoneNotBetween(Double value1, Double value2) { + addCriterion("PresetPriceOne not between", value1, value2, "presetpriceone"); + return (Criteria) this; + } + + public Criteria andPresetpricetwoIsNull() { + addCriterion("PresetPriceTwo is null"); + return (Criteria) this; + } + + public Criteria andPresetpricetwoIsNotNull() { + addCriterion("PresetPriceTwo is not null"); + return (Criteria) this; + } + + public Criteria andPresetpricetwoEqualTo(Double value) { + addCriterion("PresetPriceTwo =", value, "presetpricetwo"); + return (Criteria) this; + } + + public Criteria andPresetpricetwoNotEqualTo(Double value) { + addCriterion("PresetPriceTwo <>", value, "presetpricetwo"); + return (Criteria) this; + } + + public Criteria andPresetpricetwoGreaterThan(Double value) { + addCriterion("PresetPriceTwo >", value, "presetpricetwo"); + return (Criteria) this; + } + + public Criteria andPresetpricetwoGreaterThanOrEqualTo(Double value) { + addCriterion("PresetPriceTwo >=", value, "presetpricetwo"); + return (Criteria) this; + } + + public Criteria andPresetpricetwoLessThan(Double value) { + addCriterion("PresetPriceTwo <", value, "presetpricetwo"); + return (Criteria) this; + } + + public Criteria andPresetpricetwoLessThanOrEqualTo(Double value) { + addCriterion("PresetPriceTwo <=", value, "presetpricetwo"); + return (Criteria) this; + } + + public Criteria andPresetpricetwoIn(List values) { + addCriterion("PresetPriceTwo in", values, "presetpricetwo"); + return (Criteria) this; + } + + public Criteria andPresetpricetwoNotIn(List values) { + addCriterion("PresetPriceTwo not in", values, "presetpricetwo"); + return (Criteria) this; + } + + public Criteria andPresetpricetwoBetween(Double value1, Double value2) { + addCriterion("PresetPriceTwo between", value1, value2, "presetpricetwo"); + return (Criteria) this; + } + + public Criteria andPresetpricetwoNotBetween(Double value1, Double value2) { + addCriterion("PresetPriceTwo not between", value1, value2, "presetpricetwo"); + return (Criteria) this; + } + + public Criteria andUnitidIsNull() { + addCriterion("UnitId is null"); + return (Criteria) this; + } + + public Criteria andUnitidIsNotNull() { + addCriterion("UnitId is not null"); + return (Criteria) this; + } + + public Criteria andUnitidEqualTo(Long value) { + addCriterion("UnitId =", value, "unitid"); + return (Criteria) this; + } + + public Criteria andUnitidNotEqualTo(Long value) { + addCriterion("UnitId <>", value, "unitid"); + return (Criteria) this; + } + + public Criteria andUnitidGreaterThan(Long value) { + addCriterion("UnitId >", value, "unitid"); + return (Criteria) this; + } + + public Criteria andUnitidGreaterThanOrEqualTo(Long value) { + addCriterion("UnitId >=", value, "unitid"); + return (Criteria) this; + } + + public Criteria andUnitidLessThan(Long value) { + addCriterion("UnitId <", value, "unitid"); + return (Criteria) this; + } + + public Criteria andUnitidLessThanOrEqualTo(Long value) { + addCriterion("UnitId <=", value, "unitid"); + return (Criteria) this; + } + + public Criteria andUnitidIn(List values) { + addCriterion("UnitId in", values, "unitid"); + return (Criteria) this; + } + + public Criteria andUnitidNotIn(List values) { + addCriterion("UnitId not in", values, "unitid"); + return (Criteria) this; + } + + public Criteria andUnitidBetween(Long value1, Long value2) { + addCriterion("UnitId between", value1, value2, "unitid"); + return (Criteria) this; + } + + public Criteria andUnitidNotBetween(Long value1, Long value2) { + addCriterion("UnitId not between", value1, value2, "unitid"); + return (Criteria) this; + } + + public Criteria andFirstoutunitIsNull() { + addCriterion("FirstOutUnit is null"); + return (Criteria) this; + } + + public Criteria andFirstoutunitIsNotNull() { + addCriterion("FirstOutUnit is not null"); + return (Criteria) this; + } + + public Criteria andFirstoutunitEqualTo(String value) { + addCriterion("FirstOutUnit =", value, "firstoutunit"); + return (Criteria) this; + } + + public Criteria andFirstoutunitNotEqualTo(String value) { + addCriterion("FirstOutUnit <>", value, "firstoutunit"); + return (Criteria) this; + } + + public Criteria andFirstoutunitGreaterThan(String value) { + addCriterion("FirstOutUnit >", value, "firstoutunit"); + return (Criteria) this; + } + + public Criteria andFirstoutunitGreaterThanOrEqualTo(String value) { + addCriterion("FirstOutUnit >=", value, "firstoutunit"); + return (Criteria) this; + } + + public Criteria andFirstoutunitLessThan(String value) { + addCriterion("FirstOutUnit <", value, "firstoutunit"); + return (Criteria) this; + } + + public Criteria andFirstoutunitLessThanOrEqualTo(String value) { + addCriterion("FirstOutUnit <=", value, "firstoutunit"); + return (Criteria) this; + } + + public Criteria andFirstoutunitLike(String value) { + addCriterion("FirstOutUnit like", value, "firstoutunit"); + return (Criteria) this; + } + + public Criteria andFirstoutunitNotLike(String value) { + addCriterion("FirstOutUnit not like", value, "firstoutunit"); + return (Criteria) this; + } + + public Criteria andFirstoutunitIn(List values) { + addCriterion("FirstOutUnit in", values, "firstoutunit"); + return (Criteria) this; + } + + public Criteria andFirstoutunitNotIn(List values) { + addCriterion("FirstOutUnit not in", values, "firstoutunit"); + return (Criteria) this; + } + + public Criteria andFirstoutunitBetween(String value1, String value2) { + addCriterion("FirstOutUnit between", value1, value2, "firstoutunit"); + return (Criteria) this; + } + + public Criteria andFirstoutunitNotBetween(String value1, String value2) { + addCriterion("FirstOutUnit not between", value1, value2, "firstoutunit"); + return (Criteria) this; + } + + public Criteria andFirstinunitIsNull() { + addCriterion("FirstInUnit is null"); + return (Criteria) this; + } + + public Criteria andFirstinunitIsNotNull() { + addCriterion("FirstInUnit is not null"); + return (Criteria) this; + } + + public Criteria andFirstinunitEqualTo(String value) { + addCriterion("FirstInUnit =", value, "firstinunit"); + return (Criteria) this; + } + + public Criteria andFirstinunitNotEqualTo(String value) { + addCriterion("FirstInUnit <>", value, "firstinunit"); + return (Criteria) this; + } + + public Criteria andFirstinunitGreaterThan(String value) { + addCriterion("FirstInUnit >", value, "firstinunit"); + return (Criteria) this; + } + + public Criteria andFirstinunitGreaterThanOrEqualTo(String value) { + addCriterion("FirstInUnit >=", value, "firstinunit"); + return (Criteria) this; + } + + public Criteria andFirstinunitLessThan(String value) { + addCriterion("FirstInUnit <", value, "firstinunit"); + return (Criteria) this; + } + + public Criteria andFirstinunitLessThanOrEqualTo(String value) { + addCriterion("FirstInUnit <=", value, "firstinunit"); + return (Criteria) this; + } + + public Criteria andFirstinunitLike(String value) { + addCriterion("FirstInUnit like", value, "firstinunit"); + return (Criteria) this; + } + + public Criteria andFirstinunitNotLike(String value) { + addCriterion("FirstInUnit not like", value, "firstinunit"); + return (Criteria) this; + } + + public Criteria andFirstinunitIn(List values) { + addCriterion("FirstInUnit in", values, "firstinunit"); + return (Criteria) this; + } + + public Criteria andFirstinunitNotIn(List values) { + addCriterion("FirstInUnit not in", values, "firstinunit"); + return (Criteria) this; + } + + public Criteria andFirstinunitBetween(String value1, String value2) { + addCriterion("FirstInUnit between", value1, value2, "firstinunit"); + return (Criteria) this; + } + + public Criteria andFirstinunitNotBetween(String value1, String value2) { + addCriterion("FirstInUnit not between", value1, value2, "firstinunit"); + return (Criteria) this; + } + + public Criteria andPricestrategyIsNull() { + addCriterion("PriceStrategy is null"); + return (Criteria) this; + } + + public Criteria andPricestrategyIsNotNull() { + addCriterion("PriceStrategy is not null"); + return (Criteria) this; + } + + public Criteria andPricestrategyEqualTo(String value) { + addCriterion("PriceStrategy =", value, "pricestrategy"); + return (Criteria) this; + } + + public Criteria andPricestrategyNotEqualTo(String value) { + addCriterion("PriceStrategy <>", value, "pricestrategy"); + return (Criteria) this; + } + + public Criteria andPricestrategyGreaterThan(String value) { + addCriterion("PriceStrategy >", value, "pricestrategy"); + return (Criteria) this; + } + + public Criteria andPricestrategyGreaterThanOrEqualTo(String value) { + addCriterion("PriceStrategy >=", value, "pricestrategy"); + return (Criteria) this; + } + + public Criteria andPricestrategyLessThan(String value) { + addCriterion("PriceStrategy <", value, "pricestrategy"); + return (Criteria) this; + } + + public Criteria andPricestrategyLessThanOrEqualTo(String value) { + addCriterion("PriceStrategy <=", value, "pricestrategy"); + return (Criteria) this; + } + + public Criteria andPricestrategyLike(String value) { + addCriterion("PriceStrategy like", value, "pricestrategy"); + return (Criteria) this; + } + + public Criteria andPricestrategyNotLike(String value) { + addCriterion("PriceStrategy not like", value, "pricestrategy"); + return (Criteria) this; + } + + public Criteria andPricestrategyIn(List values) { + addCriterion("PriceStrategy in", values, "pricestrategy"); + return (Criteria) this; + } + + public Criteria andPricestrategyNotIn(List values) { + addCriterion("PriceStrategy not in", values, "pricestrategy"); + return (Criteria) this; + } + + public Criteria andPricestrategyBetween(String value1, String value2) { + addCriterion("PriceStrategy between", value1, value2, "pricestrategy"); + return (Criteria) this; + } + + public Criteria andPricestrategyNotBetween(String value1, String value2) { + addCriterion("PriceStrategy not between", value1, value2, "pricestrategy"); + return (Criteria) this; + } + + public Criteria andEnabledIsNull() { + addCriterion("Enabled is null"); + return (Criteria) this; + } + + public Criteria andEnabledIsNotNull() { + addCriterion("Enabled is not null"); + return (Criteria) this; + } + + public Criteria andEnabledEqualTo(Boolean value) { + addCriterion("Enabled =", value, "enabled"); + return (Criteria) this; + } + + public Criteria andEnabledNotEqualTo(Boolean value) { + addCriterion("Enabled <>", value, "enabled"); + return (Criteria) this; + } + + public Criteria andEnabledGreaterThan(Boolean value) { + addCriterion("Enabled >", value, "enabled"); + return (Criteria) this; + } + + public Criteria andEnabledGreaterThanOrEqualTo(Boolean value) { + addCriterion("Enabled >=", value, "enabled"); + return (Criteria) this; + } + + public Criteria andEnabledLessThan(Boolean value) { + addCriterion("Enabled <", value, "enabled"); + return (Criteria) this; + } + + public Criteria andEnabledLessThanOrEqualTo(Boolean value) { + addCriterion("Enabled <=", value, "enabled"); + return (Criteria) this; + } + + public Criteria andEnabledIn(List values) { + addCriterion("Enabled in", values, "enabled"); + return (Criteria) this; + } + + public Criteria andEnabledNotIn(List values) { + addCriterion("Enabled not in", values, "enabled"); + return (Criteria) this; + } + + public Criteria andEnabledBetween(Boolean value1, Boolean value2) { + addCriterion("Enabled between", value1, value2, "enabled"); + return (Criteria) this; + } + + public Criteria andEnabledNotBetween(Boolean value1, Boolean value2) { + addCriterion("Enabled not between", value1, value2, "enabled"); + return (Criteria) this; + } + + public Criteria andOtherfield1IsNull() { + addCriterion("OtherField1 is null"); + return (Criteria) this; + } + + public Criteria andOtherfield1IsNotNull() { + addCriterion("OtherField1 is not null"); + return (Criteria) this; + } + + public Criteria andOtherfield1EqualTo(String value) { + addCriterion("OtherField1 =", value, "otherfield1"); + return (Criteria) this; + } + + public Criteria andOtherfield1NotEqualTo(String value) { + addCriterion("OtherField1 <>", value, "otherfield1"); + return (Criteria) this; + } + + public Criteria andOtherfield1GreaterThan(String value) { + addCriterion("OtherField1 >", value, "otherfield1"); + return (Criteria) this; + } + + public Criteria andOtherfield1GreaterThanOrEqualTo(String value) { + addCriterion("OtherField1 >=", value, "otherfield1"); + return (Criteria) this; + } + + public Criteria andOtherfield1LessThan(String value) { + addCriterion("OtherField1 <", value, "otherfield1"); + return (Criteria) this; + } + + public Criteria andOtherfield1LessThanOrEqualTo(String value) { + addCriterion("OtherField1 <=", value, "otherfield1"); + return (Criteria) this; + } + + public Criteria andOtherfield1Like(String value) { + addCriterion("OtherField1 like", value, "otherfield1"); + return (Criteria) this; + } + + public Criteria andOtherfield1NotLike(String value) { + addCriterion("OtherField1 not like", value, "otherfield1"); + return (Criteria) this; + } + + public Criteria andOtherfield1In(List values) { + addCriterion("OtherField1 in", values, "otherfield1"); + return (Criteria) this; + } + + public Criteria andOtherfield1NotIn(List values) { + addCriterion("OtherField1 not in", values, "otherfield1"); + return (Criteria) this; + } + + public Criteria andOtherfield1Between(String value1, String value2) { + addCriterion("OtherField1 between", value1, value2, "otherfield1"); + return (Criteria) this; + } + + public Criteria andOtherfield1NotBetween(String value1, String value2) { + addCriterion("OtherField1 not between", value1, value2, "otherfield1"); + return (Criteria) this; + } + + public Criteria andOtherfield2IsNull() { + addCriterion("OtherField2 is null"); + return (Criteria) this; + } + + public Criteria andOtherfield2IsNotNull() { + addCriterion("OtherField2 is not null"); + return (Criteria) this; + } + + public Criteria andOtherfield2EqualTo(String value) { + addCriterion("OtherField2 =", value, "otherfield2"); + return (Criteria) this; + } + + public Criteria andOtherfield2NotEqualTo(String value) { + addCriterion("OtherField2 <>", value, "otherfield2"); + return (Criteria) this; + } + + public Criteria andOtherfield2GreaterThan(String value) { + addCriterion("OtherField2 >", value, "otherfield2"); + return (Criteria) this; + } + + public Criteria andOtherfield2GreaterThanOrEqualTo(String value) { + addCriterion("OtherField2 >=", value, "otherfield2"); + return (Criteria) this; + } + + public Criteria andOtherfield2LessThan(String value) { + addCriterion("OtherField2 <", value, "otherfield2"); + return (Criteria) this; + } + + public Criteria andOtherfield2LessThanOrEqualTo(String value) { + addCriterion("OtherField2 <=", value, "otherfield2"); + return (Criteria) this; + } + + public Criteria andOtherfield2Like(String value) { + addCriterion("OtherField2 like", value, "otherfield2"); + return (Criteria) this; + } + + public Criteria andOtherfield2NotLike(String value) { + addCriterion("OtherField2 not like", value, "otherfield2"); + return (Criteria) this; + } + + public Criteria andOtherfield2In(List values) { + addCriterion("OtherField2 in", values, "otherfield2"); + return (Criteria) this; + } + + public Criteria andOtherfield2NotIn(List values) { + addCriterion("OtherField2 not in", values, "otherfield2"); + return (Criteria) this; + } + + public Criteria andOtherfield2Between(String value1, String value2) { + addCriterion("OtherField2 between", value1, value2, "otherfield2"); + return (Criteria) this; + } + + public Criteria andOtherfield2NotBetween(String value1, String value2) { + addCriterion("OtherField2 not between", value1, value2, "otherfield2"); + return (Criteria) this; + } + + public Criteria andOtherfield3IsNull() { + addCriterion("OtherField3 is null"); + return (Criteria) this; + } + + public Criteria andOtherfield3IsNotNull() { + addCriterion("OtherField3 is not null"); + return (Criteria) this; + } + + public Criteria andOtherfield3EqualTo(String value) { + addCriterion("OtherField3 =", value, "otherfield3"); + return (Criteria) this; + } + + public Criteria andOtherfield3NotEqualTo(String value) { + addCriterion("OtherField3 <>", value, "otherfield3"); + return (Criteria) this; + } + + public Criteria andOtherfield3GreaterThan(String value) { + addCriterion("OtherField3 >", value, "otherfield3"); + return (Criteria) this; + } + + public Criteria andOtherfield3GreaterThanOrEqualTo(String value) { + addCriterion("OtherField3 >=", value, "otherfield3"); + return (Criteria) this; + } + + public Criteria andOtherfield3LessThan(String value) { + addCriterion("OtherField3 <", value, "otherfield3"); + return (Criteria) this; + } + + public Criteria andOtherfield3LessThanOrEqualTo(String value) { + addCriterion("OtherField3 <=", value, "otherfield3"); + return (Criteria) this; + } + + public Criteria andOtherfield3Like(String value) { + addCriterion("OtherField3 like", value, "otherfield3"); + return (Criteria) this; + } + + public Criteria andOtherfield3NotLike(String value) { + addCriterion("OtherField3 not like", value, "otherfield3"); + return (Criteria) this; + } + + public Criteria andOtherfield3In(List values) { + addCriterion("OtherField3 in", values, "otherfield3"); + return (Criteria) this; + } + + public Criteria andOtherfield3NotIn(List values) { + addCriterion("OtherField3 not in", values, "otherfield3"); + return (Criteria) this; + } + + public Criteria andOtherfield3Between(String value1, String value2) { + addCriterion("OtherField3 between", value1, value2, "otherfield3"); + return (Criteria) this; + } + + public Criteria andOtherfield3NotBetween(String value1, String value2) { + addCriterion("OtherField3 not between", value1, value2, "otherfield3"); + return (Criteria) this; + } + } + + /** + * This class was generated by MyBatis Generator. + * This class corresponds to the database table jsh_material + * + * @mbggenerated do_not_delete_during_merge + */ + public static class Criteria extends GeneratedCriteria { + + protected Criteria() { + super(); + } + } + + /** + * This class was generated by MyBatis Generator. + * This class corresponds to the database table jsh_material + * + * @mbggenerated + */ + public static class Criterion { + private String condition; + + private Object value; + + private Object secondValue; + + private boolean noValue; + + private boolean singleValue; + + private boolean betweenValue; + + private boolean listValue; + + private String typeHandler; + + public String getCondition() { + return condition; + } + + public Object getValue() { + return value; + } + + public Object getSecondValue() { + return secondValue; + } + + public boolean isNoValue() { + return noValue; + } + + public boolean isSingleValue() { + return singleValue; + } + + public boolean isBetweenValue() { + return betweenValue; + } + + public boolean isListValue() { + return listValue; + } + + public String getTypeHandler() { + return typeHandler; + } + + protected Criterion(String condition) { + super(); + this.condition = condition; + this.typeHandler = null; + this.noValue = true; + } + + protected Criterion(String condition, Object value, String typeHandler) { + super(); + this.condition = condition; + this.value = value; + this.typeHandler = typeHandler; + if (value instanceof List) { + this.listValue = true; + } else { + this.singleValue = true; + } + } + + protected Criterion(String condition, Object value) { + this(condition, value, null); + } + + protected Criterion(String condition, Object value, Object secondValue, String typeHandler) { + super(); + this.condition = condition; + this.value = value; + this.secondValue = secondValue; + this.typeHandler = typeHandler; + this.betweenValue = true; + } + + protected Criterion(String condition, Object value, Object secondValue) { + this(condition, value, secondValue, null); + } + } +} \ No newline at end of file diff --git a/src/main/java/com/jsh/erp/datasource/entities/MaterialProperty.java b/src/main/java/com/jsh/erp/datasource/entities/MaterialProperty.java new file mode 100644 index 00000000..dc075f26 --- /dev/null +++ b/src/main/java/com/jsh/erp/datasource/entities/MaterialProperty.java @@ -0,0 +1,163 @@ +package com.jsh.erp.datasource.entities; + +public class MaterialProperty { + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database column jsh_materialproperty.id + * + * @mbggenerated + */ + private Long id; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database column jsh_materialproperty.nativeName + * + * @mbggenerated + */ + private String nativename; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database column jsh_materialproperty.enabled + * + * @mbggenerated + */ + private Boolean enabled; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database column jsh_materialproperty.sort + * + * @mbggenerated + */ + private String sort; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database column jsh_materialproperty.anotherName + * + * @mbggenerated + */ + private String anothername; + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column jsh_materialproperty.id + * + * @return the value of jsh_materialproperty.id + * + * @mbggenerated + */ + public Long getId() { + return id; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column jsh_materialproperty.id + * + * @param id the value for jsh_materialproperty.id + * + * @mbggenerated + */ + public void setId(Long id) { + this.id = id; + } + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column jsh_materialproperty.nativeName + * + * @return the value of jsh_materialproperty.nativeName + * + * @mbggenerated + */ + public String getNativename() { + return nativename; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column jsh_materialproperty.nativeName + * + * @param nativename the value for jsh_materialproperty.nativeName + * + * @mbggenerated + */ + public void setNativename(String nativename) { + this.nativename = nativename == null ? null : nativename.trim(); + } + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column jsh_materialproperty.enabled + * + * @return the value of jsh_materialproperty.enabled + * + * @mbggenerated + */ + public Boolean getEnabled() { + return enabled; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column jsh_materialproperty.enabled + * + * @param enabled the value for jsh_materialproperty.enabled + * + * @mbggenerated + */ + public void setEnabled(Boolean enabled) { + this.enabled = enabled; + } + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column jsh_materialproperty.sort + * + * @return the value of jsh_materialproperty.sort + * + * @mbggenerated + */ + public String getSort() { + return sort; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column jsh_materialproperty.sort + * + * @param sort the value for jsh_materialproperty.sort + * + * @mbggenerated + */ + public void setSort(String sort) { + this.sort = sort == null ? null : sort.trim(); + } + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column jsh_materialproperty.anotherName + * + * @return the value of jsh_materialproperty.anotherName + * + * @mbggenerated + */ + public String getAnothername() { + return anothername; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column jsh_materialproperty.anotherName + * + * @param anothername the value for jsh_materialproperty.anotherName + * + * @mbggenerated + */ + public void setAnothername(String anothername) { + this.anothername = anothername == null ? null : anothername.trim(); + } +} \ No newline at end of file diff --git a/src/main/java/com/jsh/erp/datasource/entities/MaterialPropertyExample.java b/src/main/java/com/jsh/erp/datasource/entities/MaterialPropertyExample.java new file mode 100644 index 00000000..298e6516 --- /dev/null +++ b/src/main/java/com/jsh/erp/datasource/entities/MaterialPropertyExample.java @@ -0,0 +1,632 @@ +package com.jsh.erp.datasource.entities; + +import java.util.ArrayList; +import java.util.List; + +public class MaterialPropertyExample { + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database table jsh_materialproperty + * + * @mbggenerated + */ + protected String orderByClause; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database table jsh_materialproperty + * + * @mbggenerated + */ + protected boolean distinct; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database table jsh_materialproperty + * + * @mbggenerated + */ + protected List oredCriteria; + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_materialproperty + * + * @mbggenerated + */ + public MaterialPropertyExample() { + oredCriteria = new ArrayList(); + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_materialproperty + * + * @mbggenerated + */ + public void setOrderByClause(String orderByClause) { + this.orderByClause = orderByClause; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_materialproperty + * + * @mbggenerated + */ + public String getOrderByClause() { + return orderByClause; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_materialproperty + * + * @mbggenerated + */ + public void setDistinct(boolean distinct) { + this.distinct = distinct; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_materialproperty + * + * @mbggenerated + */ + public boolean isDistinct() { + return distinct; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_materialproperty + * + * @mbggenerated + */ + public List getOredCriteria() { + return oredCriteria; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_materialproperty + * + * @mbggenerated + */ + public void or(Criteria criteria) { + oredCriteria.add(criteria); + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_materialproperty + * + * @mbggenerated + */ + public Criteria or() { + Criteria criteria = createCriteriaInternal(); + oredCriteria.add(criteria); + return criteria; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_materialproperty + * + * @mbggenerated + */ + public Criteria createCriteria() { + Criteria criteria = createCriteriaInternal(); + if (oredCriteria.size() == 0) { + oredCriteria.add(criteria); + } + return criteria; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_materialproperty + * + * @mbggenerated + */ + protected Criteria createCriteriaInternal() { + Criteria criteria = new Criteria(); + return criteria; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_materialproperty + * + * @mbggenerated + */ + public void clear() { + oredCriteria.clear(); + orderByClause = null; + distinct = false; + } + + /** + * This class was generated by MyBatis Generator. + * This class corresponds to the database table jsh_materialproperty + * + * @mbggenerated + */ + protected abstract static class GeneratedCriteria { + protected List criteria; + + protected GeneratedCriteria() { + super(); + criteria = new ArrayList(); + } + + public boolean isValid() { + return criteria.size() > 0; + } + + public List getAllCriteria() { + return criteria; + } + + public List getCriteria() { + return criteria; + } + + protected void addCriterion(String condition) { + if (condition == null) { + throw new RuntimeException("Value for condition cannot be null"); + } + criteria.add(new Criterion(condition)); + } + + protected void addCriterion(String condition, Object value, String property) { + if (value == null) { + throw new RuntimeException("Value for " + property + " cannot be null"); + } + criteria.add(new Criterion(condition, value)); + } + + protected void addCriterion(String condition, Object value1, Object value2, String property) { + if (value1 == null || value2 == null) { + throw new RuntimeException("Between values for " + property + " cannot be null"); + } + criteria.add(new Criterion(condition, value1, value2)); + } + + public Criteria andIdIsNull() { + addCriterion("id is null"); + return (Criteria) this; + } + + public Criteria andIdIsNotNull() { + addCriterion("id is not null"); + return (Criteria) this; + } + + public Criteria andIdEqualTo(Long value) { + addCriterion("id =", value, "id"); + return (Criteria) this; + } + + public Criteria andIdNotEqualTo(Long value) { + addCriterion("id <>", value, "id"); + return (Criteria) this; + } + + public Criteria andIdGreaterThan(Long value) { + addCriterion("id >", value, "id"); + return (Criteria) this; + } + + public Criteria andIdGreaterThanOrEqualTo(Long value) { + addCriterion("id >=", value, "id"); + return (Criteria) this; + } + + public Criteria andIdLessThan(Long value) { + addCriterion("id <", value, "id"); + return (Criteria) this; + } + + public Criteria andIdLessThanOrEqualTo(Long value) { + addCriterion("id <=", value, "id"); + return (Criteria) this; + } + + public Criteria andIdIn(List values) { + addCriterion("id in", values, "id"); + return (Criteria) this; + } + + public Criteria andIdNotIn(List values) { + addCriterion("id not in", values, "id"); + return (Criteria) this; + } + + public Criteria andIdBetween(Long value1, Long value2) { + addCriterion("id between", value1, value2, "id"); + return (Criteria) this; + } + + public Criteria andIdNotBetween(Long value1, Long value2) { + addCriterion("id not between", value1, value2, "id"); + return (Criteria) this; + } + + public Criteria andNativenameIsNull() { + addCriterion("nativeName is null"); + return (Criteria) this; + } + + public Criteria andNativenameIsNotNull() { + addCriterion("nativeName is not null"); + return (Criteria) this; + } + + public Criteria andNativenameEqualTo(String value) { + addCriterion("nativeName =", value, "nativename"); + return (Criteria) this; + } + + public Criteria andNativenameNotEqualTo(String value) { + addCriterion("nativeName <>", value, "nativename"); + return (Criteria) this; + } + + public Criteria andNativenameGreaterThan(String value) { + addCriterion("nativeName >", value, "nativename"); + return (Criteria) this; + } + + public Criteria andNativenameGreaterThanOrEqualTo(String value) { + addCriterion("nativeName >=", value, "nativename"); + return (Criteria) this; + } + + public Criteria andNativenameLessThan(String value) { + addCriterion("nativeName <", value, "nativename"); + return (Criteria) this; + } + + public Criteria andNativenameLessThanOrEqualTo(String value) { + addCriterion("nativeName <=", value, "nativename"); + return (Criteria) this; + } + + public Criteria andNativenameLike(String value) { + addCriterion("nativeName like", value, "nativename"); + return (Criteria) this; + } + + public Criteria andNativenameNotLike(String value) { + addCriterion("nativeName not like", value, "nativename"); + return (Criteria) this; + } + + public Criteria andNativenameIn(List values) { + addCriterion("nativeName in", values, "nativename"); + return (Criteria) this; + } + + public Criteria andNativenameNotIn(List values) { + addCriterion("nativeName not in", values, "nativename"); + return (Criteria) this; + } + + public Criteria andNativenameBetween(String value1, String value2) { + addCriterion("nativeName between", value1, value2, "nativename"); + return (Criteria) this; + } + + public Criteria andNativenameNotBetween(String value1, String value2) { + addCriterion("nativeName not between", value1, value2, "nativename"); + return (Criteria) this; + } + + public Criteria andEnabledIsNull() { + addCriterion("enabled is null"); + return (Criteria) this; + } + + public Criteria andEnabledIsNotNull() { + addCriterion("enabled is not null"); + return (Criteria) this; + } + + public Criteria andEnabledEqualTo(Boolean value) { + addCriterion("enabled =", value, "enabled"); + return (Criteria) this; + } + + public Criteria andEnabledNotEqualTo(Boolean value) { + addCriterion("enabled <>", value, "enabled"); + return (Criteria) this; + } + + public Criteria andEnabledGreaterThan(Boolean value) { + addCriterion("enabled >", value, "enabled"); + return (Criteria) this; + } + + public Criteria andEnabledGreaterThanOrEqualTo(Boolean value) { + addCriterion("enabled >=", value, "enabled"); + return (Criteria) this; + } + + public Criteria andEnabledLessThan(Boolean value) { + addCriterion("enabled <", value, "enabled"); + return (Criteria) this; + } + + public Criteria andEnabledLessThanOrEqualTo(Boolean value) { + addCriterion("enabled <=", value, "enabled"); + return (Criteria) this; + } + + public Criteria andEnabledIn(List values) { + addCriterion("enabled in", values, "enabled"); + return (Criteria) this; + } + + public Criteria andEnabledNotIn(List values) { + addCriterion("enabled not in", values, "enabled"); + return (Criteria) this; + } + + public Criteria andEnabledBetween(Boolean value1, Boolean value2) { + addCriterion("enabled between", value1, value2, "enabled"); + return (Criteria) this; + } + + public Criteria andEnabledNotBetween(Boolean value1, Boolean value2) { + addCriterion("enabled not between", value1, value2, "enabled"); + return (Criteria) this; + } + + public Criteria andSortIsNull() { + addCriterion("sort is null"); + return (Criteria) this; + } + + public Criteria andSortIsNotNull() { + addCriterion("sort is not null"); + return (Criteria) this; + } + + public Criteria andSortEqualTo(String value) { + addCriterion("sort =", value, "sort"); + return (Criteria) this; + } + + public Criteria andSortNotEqualTo(String value) { + addCriterion("sort <>", value, "sort"); + return (Criteria) this; + } + + public Criteria andSortGreaterThan(String value) { + addCriterion("sort >", value, "sort"); + return (Criteria) this; + } + + public Criteria andSortGreaterThanOrEqualTo(String value) { + addCriterion("sort >=", value, "sort"); + return (Criteria) this; + } + + public Criteria andSortLessThan(String value) { + addCriterion("sort <", value, "sort"); + return (Criteria) this; + } + + public Criteria andSortLessThanOrEqualTo(String value) { + addCriterion("sort <=", value, "sort"); + return (Criteria) this; + } + + public Criteria andSortLike(String value) { + addCriterion("sort like", value, "sort"); + return (Criteria) this; + } + + public Criteria andSortNotLike(String value) { + addCriterion("sort not like", value, "sort"); + return (Criteria) this; + } + + public Criteria andSortIn(List values) { + addCriterion("sort in", values, "sort"); + return (Criteria) this; + } + + public Criteria andSortNotIn(List values) { + addCriterion("sort not in", values, "sort"); + return (Criteria) this; + } + + public Criteria andSortBetween(String value1, String value2) { + addCriterion("sort between", value1, value2, "sort"); + return (Criteria) this; + } + + public Criteria andSortNotBetween(String value1, String value2) { + addCriterion("sort not between", value1, value2, "sort"); + return (Criteria) this; + } + + public Criteria andAnothernameIsNull() { + addCriterion("anotherName is null"); + return (Criteria) this; + } + + public Criteria andAnothernameIsNotNull() { + addCriterion("anotherName is not null"); + return (Criteria) this; + } + + public Criteria andAnothernameEqualTo(String value) { + addCriterion("anotherName =", value, "anothername"); + return (Criteria) this; + } + + public Criteria andAnothernameNotEqualTo(String value) { + addCriterion("anotherName <>", value, "anothername"); + return (Criteria) this; + } + + public Criteria andAnothernameGreaterThan(String value) { + addCriterion("anotherName >", value, "anothername"); + return (Criteria) this; + } + + public Criteria andAnothernameGreaterThanOrEqualTo(String value) { + addCriterion("anotherName >=", value, "anothername"); + return (Criteria) this; + } + + public Criteria andAnothernameLessThan(String value) { + addCriterion("anotherName <", value, "anothername"); + return (Criteria) this; + } + + public Criteria andAnothernameLessThanOrEqualTo(String value) { + addCriterion("anotherName <=", value, "anothername"); + return (Criteria) this; + } + + public Criteria andAnothernameLike(String value) { + addCriterion("anotherName like", value, "anothername"); + return (Criteria) this; + } + + public Criteria andAnothernameNotLike(String value) { + addCriterion("anotherName not like", value, "anothername"); + return (Criteria) this; + } + + public Criteria andAnothernameIn(List values) { + addCriterion("anotherName in", values, "anothername"); + return (Criteria) this; + } + + public Criteria andAnothernameNotIn(List values) { + addCriterion("anotherName not in", values, "anothername"); + return (Criteria) this; + } + + public Criteria andAnothernameBetween(String value1, String value2) { + addCriterion("anotherName between", value1, value2, "anothername"); + return (Criteria) this; + } + + public Criteria andAnothernameNotBetween(String value1, String value2) { + addCriterion("anotherName not between", value1, value2, "anothername"); + return (Criteria) this; + } + } + + /** + * This class was generated by MyBatis Generator. + * This class corresponds to the database table jsh_materialproperty + * + * @mbggenerated do_not_delete_during_merge + */ + public static class Criteria extends GeneratedCriteria { + + protected Criteria() { + super(); + } + } + + /** + * This class was generated by MyBatis Generator. + * This class corresponds to the database table jsh_materialproperty + * + * @mbggenerated + */ + public static class Criterion { + private String condition; + + private Object value; + + private Object secondValue; + + private boolean noValue; + + private boolean singleValue; + + private boolean betweenValue; + + private boolean listValue; + + private String typeHandler; + + public String getCondition() { + return condition; + } + + public Object getValue() { + return value; + } + + public Object getSecondValue() { + return secondValue; + } + + public boolean isNoValue() { + return noValue; + } + + public boolean isSingleValue() { + return singleValue; + } + + public boolean isBetweenValue() { + return betweenValue; + } + + public boolean isListValue() { + return listValue; + } + + public String getTypeHandler() { + return typeHandler; + } + + protected Criterion(String condition) { + super(); + this.condition = condition; + this.typeHandler = null; + this.noValue = true; + } + + protected Criterion(String condition, Object value, String typeHandler) { + super(); + this.condition = condition; + this.value = value; + this.typeHandler = typeHandler; + if (value instanceof List) { + this.listValue = true; + } else { + this.singleValue = true; + } + } + + protected Criterion(String condition, Object value) { + this(condition, value, null); + } + + protected Criterion(String condition, Object value, Object secondValue, String typeHandler) { + super(); + this.condition = condition; + this.value = value; + this.secondValue = secondValue; + this.typeHandler = typeHandler; + this.betweenValue = true; + } + + protected Criterion(String condition, Object value, Object secondValue) { + this(condition, value, secondValue, null); + } + } +} \ No newline at end of file diff --git a/src/main/java/com/jsh/erp/datasource/entities/MaterialVo4Unit.java b/src/main/java/com/jsh/erp/datasource/entities/MaterialVo4Unit.java new file mode 100644 index 00000000..1855fdf1 --- /dev/null +++ b/src/main/java/com/jsh/erp/datasource/entities/MaterialVo4Unit.java @@ -0,0 +1,244 @@ +package com.jsh.erp.datasource.entities; + +public class MaterialVo4Unit { + + private Long id; + + private Long categoryid; + + private String name; + + private String mfrs; + + private Double packing; + + private Double safetystock; + + private String model; + + private String standard; + + private String color; + + private String unit; + + private String remark; + + private Double retailprice; + + private Double lowprice; + + private Double presetpriceone; + + private Double presetpricetwo; + + private Long unitid; + + private String firstoutunit; + + private String firstinunit; + + private String pricestrategy; + + private Boolean enabled; + + private String otherfield1; + + private String otherfield2; + + private String otherfield3; + + private String unitName; + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public Long getCategoryid() { + return categoryid; + } + + public void setCategoryid(Long categoryid) { + this.categoryid = categoryid; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getMfrs() { + return mfrs; + } + + public void setMfrs(String mfrs) { + this.mfrs = mfrs; + } + + public Double getPacking() { + return packing; + } + + public void setPacking(Double packing) { + this.packing = packing; + } + + public Double getSafetystock() { + return safetystock; + } + + public void setSafetystock(Double safetystock) { + this.safetystock = safetystock; + } + + public String getModel() { + return model; + } + + public void setModel(String model) { + this.model = model; + } + + public String getStandard() { + return standard; + } + + public void setStandard(String standard) { + this.standard = standard; + } + + public String getColor() { + return color; + } + + public void setColor(String color) { + this.color = color; + } + + public String getUnit() { + return unit; + } + + public void setUnit(String unit) { + this.unit = unit; + } + + public String getRemark() { + return remark; + } + + public void setRemark(String remark) { + this.remark = remark; + } + + public Double getRetailprice() { + return retailprice; + } + + public void setRetailprice(Double retailprice) { + this.retailprice = retailprice; + } + + public Double getLowprice() { + return lowprice; + } + + public void setLowprice(Double lowprice) { + this.lowprice = lowprice; + } + + public Double getPresetpriceone() { + return presetpriceone; + } + + public void setPresetpriceone(Double presetpriceone) { + this.presetpriceone = presetpriceone; + } + + public Double getPresetpricetwo() { + return presetpricetwo; + } + + public void setPresetpricetwo(Double presetpricetwo) { + this.presetpricetwo = presetpricetwo; + } + + public Long getUnitid() { + return unitid; + } + + public void setUnitid(Long unitid) { + this.unitid = unitid; + } + + public String getFirstoutunit() { + return firstoutunit; + } + + public void setFirstoutunit(String firstoutunit) { + this.firstoutunit = firstoutunit; + } + + public String getFirstinunit() { + return firstinunit; + } + + public void setFirstinunit(String firstinunit) { + this.firstinunit = firstinunit; + } + + public String getPricestrategy() { + return pricestrategy; + } + + public void setPricestrategy(String pricestrategy) { + this.pricestrategy = pricestrategy; + } + + public Boolean getEnabled() { + return enabled; + } + + public void setEnabled(Boolean enabled) { + this.enabled = enabled; + } + + public String getOtherfield1() { + return otherfield1; + } + + public void setOtherfield1(String otherfield1) { + this.otherfield1 = otherfield1; + } + + public String getOtherfield2() { + return otherfield2; + } + + public void setOtherfield2(String otherfield2) { + this.otherfield2 = otherfield2; + } + + public String getOtherfield3() { + return otherfield3; + } + + public void setOtherfield3(String otherfield3) { + this.otherfield3 = otherfield3; + } + + public String getUnitName() { + return unitName; + } + + public void setUnitName(String unitName) { + this.unitName = unitName; + } +} \ No newline at end of file diff --git a/src/main/java/com/jsh/erp/datasource/entities/Person.java b/src/main/java/com/jsh/erp/datasource/entities/Person.java new file mode 100644 index 00000000..03052d6f --- /dev/null +++ b/src/main/java/com/jsh/erp/datasource/entities/Person.java @@ -0,0 +1,99 @@ +package com.jsh.erp.datasource.entities; + +public class Person { + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database column jsh_person.Id + * + * @mbggenerated + */ + private Long id; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database column jsh_person.Type + * + * @mbggenerated + */ + private String type; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database column jsh_person.Name + * + * @mbggenerated + */ + private String name; + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column jsh_person.Id + * + * @return the value of jsh_person.Id + * + * @mbggenerated + */ + public Long getId() { + return id; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column jsh_person.Id + * + * @param id the value for jsh_person.Id + * + * @mbggenerated + */ + public void setId(Long id) { + this.id = id; + } + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column jsh_person.Type + * + * @return the value of jsh_person.Type + * + * @mbggenerated + */ + public String getType() { + return type; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column jsh_person.Type + * + * @param type the value for jsh_person.Type + * + * @mbggenerated + */ + public void setType(String type) { + this.type = type == null ? null : type.trim(); + } + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column jsh_person.Name + * + * @return the value of jsh_person.Name + * + * @mbggenerated + */ + public String getName() { + return name; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column jsh_person.Name + * + * @param name the value for jsh_person.Name + * + * @mbggenerated + */ + public void setName(String name) { + this.name = name == null ? null : name.trim(); + } +} \ No newline at end of file diff --git a/src/main/java/com/jsh/erp/datasource/entities/PersonExample.java b/src/main/java/com/jsh/erp/datasource/entities/PersonExample.java new file mode 100644 index 00000000..dfd19780 --- /dev/null +++ b/src/main/java/com/jsh/erp/datasource/entities/PersonExample.java @@ -0,0 +1,502 @@ +package com.jsh.erp.datasource.entities; + +import java.util.ArrayList; +import java.util.List; + +public class PersonExample { + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database table jsh_person + * + * @mbggenerated + */ + protected String orderByClause; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database table jsh_person + * + * @mbggenerated + */ + protected boolean distinct; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database table jsh_person + * + * @mbggenerated + */ + protected List oredCriteria; + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_person + * + * @mbggenerated + */ + public PersonExample() { + oredCriteria = new ArrayList(); + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_person + * + * @mbggenerated + */ + public void setOrderByClause(String orderByClause) { + this.orderByClause = orderByClause; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_person + * + * @mbggenerated + */ + public String getOrderByClause() { + return orderByClause; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_person + * + * @mbggenerated + */ + public void setDistinct(boolean distinct) { + this.distinct = distinct; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_person + * + * @mbggenerated + */ + public boolean isDistinct() { + return distinct; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_person + * + * @mbggenerated + */ + public List getOredCriteria() { + return oredCriteria; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_person + * + * @mbggenerated + */ + public void or(Criteria criteria) { + oredCriteria.add(criteria); + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_person + * + * @mbggenerated + */ + public Criteria or() { + Criteria criteria = createCriteriaInternal(); + oredCriteria.add(criteria); + return criteria; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_person + * + * @mbggenerated + */ + public Criteria createCriteria() { + Criteria criteria = createCriteriaInternal(); + if (oredCriteria.size() == 0) { + oredCriteria.add(criteria); + } + return criteria; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_person + * + * @mbggenerated + */ + protected Criteria createCriteriaInternal() { + Criteria criteria = new Criteria(); + return criteria; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_person + * + * @mbggenerated + */ + public void clear() { + oredCriteria.clear(); + orderByClause = null; + distinct = false; + } + + /** + * This class was generated by MyBatis Generator. + * This class corresponds to the database table jsh_person + * + * @mbggenerated + */ + protected abstract static class GeneratedCriteria { + protected List criteria; + + protected GeneratedCriteria() { + super(); + criteria = new ArrayList(); + } + + public boolean isValid() { + return criteria.size() > 0; + } + + public List getAllCriteria() { + return criteria; + } + + public List getCriteria() { + return criteria; + } + + protected void addCriterion(String condition) { + if (condition == null) { + throw new RuntimeException("Value for condition cannot be null"); + } + criteria.add(new Criterion(condition)); + } + + protected void addCriterion(String condition, Object value, String property) { + if (value == null) { + throw new RuntimeException("Value for " + property + " cannot be null"); + } + criteria.add(new Criterion(condition, value)); + } + + protected void addCriterion(String condition, Object value1, Object value2, String property) { + if (value1 == null || value2 == null) { + throw new RuntimeException("Between values for " + property + " cannot be null"); + } + criteria.add(new Criterion(condition, value1, value2)); + } + + public Criteria andIdIsNull() { + addCriterion("Id is null"); + return (Criteria) this; + } + + public Criteria andIdIsNotNull() { + addCriterion("Id is not null"); + return (Criteria) this; + } + + public Criteria andIdEqualTo(Long value) { + addCriterion("Id =", value, "id"); + return (Criteria) this; + } + + public Criteria andIdNotEqualTo(Long value) { + addCriterion("Id <>", value, "id"); + return (Criteria) this; + } + + public Criteria andIdGreaterThan(Long value) { + addCriterion("Id >", value, "id"); + return (Criteria) this; + } + + public Criteria andIdGreaterThanOrEqualTo(Long value) { + addCriterion("Id >=", value, "id"); + return (Criteria) this; + } + + public Criteria andIdLessThan(Long value) { + addCriterion("Id <", value, "id"); + return (Criteria) this; + } + + public Criteria andIdLessThanOrEqualTo(Long value) { + addCriterion("Id <=", value, "id"); + return (Criteria) this; + } + + public Criteria andIdIn(List values) { + addCriterion("Id in", values, "id"); + return (Criteria) this; + } + + public Criteria andIdNotIn(List values) { + addCriterion("Id not in", values, "id"); + return (Criteria) this; + } + + public Criteria andIdBetween(Long value1, Long value2) { + addCriterion("Id between", value1, value2, "id"); + return (Criteria) this; + } + + public Criteria andIdNotBetween(Long value1, Long value2) { + addCriterion("Id not between", value1, value2, "id"); + return (Criteria) this; + } + + public Criteria andTypeIsNull() { + addCriterion("Type is null"); + return (Criteria) this; + } + + public Criteria andTypeIsNotNull() { + addCriterion("Type is not null"); + return (Criteria) this; + } + + public Criteria andTypeEqualTo(String value) { + addCriterion("Type =", value, "type"); + return (Criteria) this; + } + + public Criteria andTypeNotEqualTo(String value) { + addCriterion("Type <>", value, "type"); + return (Criteria) this; + } + + public Criteria andTypeGreaterThan(String value) { + addCriterion("Type >", value, "type"); + return (Criteria) this; + } + + public Criteria andTypeGreaterThanOrEqualTo(String value) { + addCriterion("Type >=", value, "type"); + return (Criteria) this; + } + + public Criteria andTypeLessThan(String value) { + addCriterion("Type <", value, "type"); + return (Criteria) this; + } + + public Criteria andTypeLessThanOrEqualTo(String value) { + addCriterion("Type <=", value, "type"); + return (Criteria) this; + } + + public Criteria andTypeLike(String value) { + addCriterion("Type like", value, "type"); + return (Criteria) this; + } + + public Criteria andTypeNotLike(String value) { + addCriterion("Type not like", value, "type"); + return (Criteria) this; + } + + public Criteria andTypeIn(List values) { + addCriterion("Type in", values, "type"); + return (Criteria) this; + } + + public Criteria andTypeNotIn(List values) { + addCriterion("Type not in", values, "type"); + return (Criteria) this; + } + + public Criteria andTypeBetween(String value1, String value2) { + addCriterion("Type between", value1, value2, "type"); + return (Criteria) this; + } + + public Criteria andTypeNotBetween(String value1, String value2) { + addCriterion("Type not between", value1, value2, "type"); + return (Criteria) this; + } + + public Criteria andNameIsNull() { + addCriterion("Name is null"); + return (Criteria) this; + } + + public Criteria andNameIsNotNull() { + addCriterion("Name is not null"); + return (Criteria) this; + } + + public Criteria andNameEqualTo(String value) { + addCriterion("Name =", value, "name"); + return (Criteria) this; + } + + public Criteria andNameNotEqualTo(String value) { + addCriterion("Name <>", value, "name"); + return (Criteria) this; + } + + public Criteria andNameGreaterThan(String value) { + addCriterion("Name >", value, "name"); + return (Criteria) this; + } + + public Criteria andNameGreaterThanOrEqualTo(String value) { + addCriterion("Name >=", value, "name"); + return (Criteria) this; + } + + public Criteria andNameLessThan(String value) { + addCriterion("Name <", value, "name"); + return (Criteria) this; + } + + public Criteria andNameLessThanOrEqualTo(String value) { + addCriterion("Name <=", value, "name"); + return (Criteria) this; + } + + public Criteria andNameLike(String value) { + addCriterion("Name like", value, "name"); + return (Criteria) this; + } + + public Criteria andNameNotLike(String value) { + addCriterion("Name not like", value, "name"); + return (Criteria) this; + } + + public Criteria andNameIn(List values) { + addCriterion("Name in", values, "name"); + return (Criteria) this; + } + + public Criteria andNameNotIn(List values) { + addCriterion("Name not in", values, "name"); + return (Criteria) this; + } + + public Criteria andNameBetween(String value1, String value2) { + addCriterion("Name between", value1, value2, "name"); + return (Criteria) this; + } + + public Criteria andNameNotBetween(String value1, String value2) { + addCriterion("Name not between", value1, value2, "name"); + return (Criteria) this; + } + } + + /** + * This class was generated by MyBatis Generator. + * This class corresponds to the database table jsh_person + * + * @mbggenerated do_not_delete_during_merge + */ + public static class Criteria extends GeneratedCriteria { + + protected Criteria() { + super(); + } + } + + /** + * This class was generated by MyBatis Generator. + * This class corresponds to the database table jsh_person + * + * @mbggenerated + */ + public static class Criterion { + private String condition; + + private Object value; + + private Object secondValue; + + private boolean noValue; + + private boolean singleValue; + + private boolean betweenValue; + + private boolean listValue; + + private String typeHandler; + + public String getCondition() { + return condition; + } + + public Object getValue() { + return value; + } + + public Object getSecondValue() { + return secondValue; + } + + public boolean isNoValue() { + return noValue; + } + + public boolean isSingleValue() { + return singleValue; + } + + public boolean isBetweenValue() { + return betweenValue; + } + + public boolean isListValue() { + return listValue; + } + + public String getTypeHandler() { + return typeHandler; + } + + protected Criterion(String condition) { + super(); + this.condition = condition; + this.typeHandler = null; + this.noValue = true; + } + + protected Criterion(String condition, Object value, String typeHandler) { + super(); + this.condition = condition; + this.value = value; + this.typeHandler = typeHandler; + if (value instanceof List) { + this.listValue = true; + } else { + this.singleValue = true; + } + } + + protected Criterion(String condition, Object value) { + this(condition, value, null); + } + + protected Criterion(String condition, Object value, Object secondValue, String typeHandler) { + super(); + this.condition = condition; + this.value = value; + this.secondValue = secondValue; + this.typeHandler = typeHandler; + this.betweenValue = true; + } + + protected Criterion(String condition, Object value, Object secondValue) { + this(condition, value, secondValue, null); + } + } +} \ No newline at end of file diff --git a/src/main/java/com/jsh/erp/datasource/entities/Role.java b/src/main/java/com/jsh/erp/datasource/entities/Role.java new file mode 100644 index 00000000..0f2d70ba --- /dev/null +++ b/src/main/java/com/jsh/erp/datasource/entities/Role.java @@ -0,0 +1,163 @@ +package com.jsh.erp.datasource.entities; + +public class Role { + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database column jsh_role.Id + * + * @mbggenerated + */ + private Long id; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database column jsh_role.Name + * + * @mbggenerated + */ + private String name; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database column jsh_role.type + * + * @mbggenerated + */ + private String type; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database column jsh_role.value + * + * @mbggenerated + */ + private String value; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database column jsh_role.description + * + * @mbggenerated + */ + private String description; + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column jsh_role.Id + * + * @return the value of jsh_role.Id + * + * @mbggenerated + */ + public Long getId() { + return id; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column jsh_role.Id + * + * @param id the value for jsh_role.Id + * + * @mbggenerated + */ + public void setId(Long id) { + this.id = id; + } + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column jsh_role.Name + * + * @return the value of jsh_role.Name + * + * @mbggenerated + */ + public String getName() { + return name; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column jsh_role.Name + * + * @param name the value for jsh_role.Name + * + * @mbggenerated + */ + public void setName(String name) { + this.name = name == null ? null : name.trim(); + } + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column jsh_role.type + * + * @return the value of jsh_role.type + * + * @mbggenerated + */ + public String getType() { + return type; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column jsh_role.type + * + * @param type the value for jsh_role.type + * + * @mbggenerated + */ + public void setType(String type) { + this.type = type == null ? null : type.trim(); + } + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column jsh_role.value + * + * @return the value of jsh_role.value + * + * @mbggenerated + */ + public String getValue() { + return value; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column jsh_role.value + * + * @param value the value for jsh_role.value + * + * @mbggenerated + */ + public void setValue(String value) { + this.value = value == null ? null : value.trim(); + } + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column jsh_role.description + * + * @return the value of jsh_role.description + * + * @mbggenerated + */ + public String getDescription() { + return description; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column jsh_role.description + * + * @param description the value for jsh_role.description + * + * @mbggenerated + */ + public void setDescription(String description) { + this.description = description == null ? null : description.trim(); + } +} \ No newline at end of file diff --git a/src/main/java/com/jsh/erp/datasource/entities/RoleExample.java b/src/main/java/com/jsh/erp/datasource/entities/RoleExample.java new file mode 100644 index 00000000..e41faabe --- /dev/null +++ b/src/main/java/com/jsh/erp/datasource/entities/RoleExample.java @@ -0,0 +1,642 @@ +package com.jsh.erp.datasource.entities; + +import java.util.ArrayList; +import java.util.List; + +public class RoleExample { + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database table jsh_role + * + * @mbggenerated + */ + protected String orderByClause; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database table jsh_role + * + * @mbggenerated + */ + protected boolean distinct; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database table jsh_role + * + * @mbggenerated + */ + protected List oredCriteria; + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_role + * + * @mbggenerated + */ + public RoleExample() { + oredCriteria = new ArrayList(); + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_role + * + * @mbggenerated + */ + public void setOrderByClause(String orderByClause) { + this.orderByClause = orderByClause; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_role + * + * @mbggenerated + */ + public String getOrderByClause() { + return orderByClause; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_role + * + * @mbggenerated + */ + public void setDistinct(boolean distinct) { + this.distinct = distinct; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_role + * + * @mbggenerated + */ + public boolean isDistinct() { + return distinct; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_role + * + * @mbggenerated + */ + public List getOredCriteria() { + return oredCriteria; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_role + * + * @mbggenerated + */ + public void or(Criteria criteria) { + oredCriteria.add(criteria); + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_role + * + * @mbggenerated + */ + public Criteria or() { + Criteria criteria = createCriteriaInternal(); + oredCriteria.add(criteria); + return criteria; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_role + * + * @mbggenerated + */ + public Criteria createCriteria() { + Criteria criteria = createCriteriaInternal(); + if (oredCriteria.size() == 0) { + oredCriteria.add(criteria); + } + return criteria; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_role + * + * @mbggenerated + */ + protected Criteria createCriteriaInternal() { + Criteria criteria = new Criteria(); + return criteria; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_role + * + * @mbggenerated + */ + public void clear() { + oredCriteria.clear(); + orderByClause = null; + distinct = false; + } + + /** + * This class was generated by MyBatis Generator. + * This class corresponds to the database table jsh_role + * + * @mbggenerated + */ + protected abstract static class GeneratedCriteria { + protected List criteria; + + protected GeneratedCriteria() { + super(); + criteria = new ArrayList(); + } + + public boolean isValid() { + return criteria.size() > 0; + } + + public List getAllCriteria() { + return criteria; + } + + public List getCriteria() { + return criteria; + } + + protected void addCriterion(String condition) { + if (condition == null) { + throw new RuntimeException("Value for condition cannot be null"); + } + criteria.add(new Criterion(condition)); + } + + protected void addCriterion(String condition, Object value, String property) { + if (value == null) { + throw new RuntimeException("Value for " + property + " cannot be null"); + } + criteria.add(new Criterion(condition, value)); + } + + protected void addCriterion(String condition, Object value1, Object value2, String property) { + if (value1 == null || value2 == null) { + throw new RuntimeException("Between values for " + property + " cannot be null"); + } + criteria.add(new Criterion(condition, value1, value2)); + } + + public Criteria andIdIsNull() { + addCriterion("Id is null"); + return (Criteria) this; + } + + public Criteria andIdIsNotNull() { + addCriterion("Id is not null"); + return (Criteria) this; + } + + public Criteria andIdEqualTo(Long value) { + addCriterion("Id =", value, "id"); + return (Criteria) this; + } + + public Criteria andIdNotEqualTo(Long value) { + addCriterion("Id <>", value, "id"); + return (Criteria) this; + } + + public Criteria andIdGreaterThan(Long value) { + addCriterion("Id >", value, "id"); + return (Criteria) this; + } + + public Criteria andIdGreaterThanOrEqualTo(Long value) { + addCriterion("Id >=", value, "id"); + return (Criteria) this; + } + + public Criteria andIdLessThan(Long value) { + addCriterion("Id <", value, "id"); + return (Criteria) this; + } + + public Criteria andIdLessThanOrEqualTo(Long value) { + addCriterion("Id <=", value, "id"); + return (Criteria) this; + } + + public Criteria andIdIn(List values) { + addCriterion("Id in", values, "id"); + return (Criteria) this; + } + + public Criteria andIdNotIn(List values) { + addCriterion("Id not in", values, "id"); + return (Criteria) this; + } + + public Criteria andIdBetween(Long value1, Long value2) { + addCriterion("Id between", value1, value2, "id"); + return (Criteria) this; + } + + public Criteria andIdNotBetween(Long value1, Long value2) { + addCriterion("Id not between", value1, value2, "id"); + return (Criteria) this; + } + + public Criteria andNameIsNull() { + addCriterion("Name is null"); + return (Criteria) this; + } + + public Criteria andNameIsNotNull() { + addCriterion("Name is not null"); + return (Criteria) this; + } + + public Criteria andNameEqualTo(String value) { + addCriterion("Name =", value, "name"); + return (Criteria) this; + } + + public Criteria andNameNotEqualTo(String value) { + addCriterion("Name <>", value, "name"); + return (Criteria) this; + } + + public Criteria andNameGreaterThan(String value) { + addCriterion("Name >", value, "name"); + return (Criteria) this; + } + + public Criteria andNameGreaterThanOrEqualTo(String value) { + addCriterion("Name >=", value, "name"); + return (Criteria) this; + } + + public Criteria andNameLessThan(String value) { + addCriterion("Name <", value, "name"); + return (Criteria) this; + } + + public Criteria andNameLessThanOrEqualTo(String value) { + addCriterion("Name <=", value, "name"); + return (Criteria) this; + } + + public Criteria andNameLike(String value) { + addCriterion("Name like", value, "name"); + return (Criteria) this; + } + + public Criteria andNameNotLike(String value) { + addCriterion("Name not like", value, "name"); + return (Criteria) this; + } + + public Criteria andNameIn(List values) { + addCriterion("Name in", values, "name"); + return (Criteria) this; + } + + public Criteria andNameNotIn(List values) { + addCriterion("Name not in", values, "name"); + return (Criteria) this; + } + + public Criteria andNameBetween(String value1, String value2) { + addCriterion("Name between", value1, value2, "name"); + return (Criteria) this; + } + + public Criteria andNameNotBetween(String value1, String value2) { + addCriterion("Name not between", value1, value2, "name"); + return (Criteria) this; + } + + public Criteria andTypeIsNull() { + addCriterion("type is null"); + return (Criteria) this; + } + + public Criteria andTypeIsNotNull() { + addCriterion("type is not null"); + return (Criteria) this; + } + + public Criteria andTypeEqualTo(String value) { + addCriterion("type =", value, "type"); + return (Criteria) this; + } + + public Criteria andTypeNotEqualTo(String value) { + addCriterion("type <>", value, "type"); + return (Criteria) this; + } + + public Criteria andTypeGreaterThan(String value) { + addCriterion("type >", value, "type"); + return (Criteria) this; + } + + public Criteria andTypeGreaterThanOrEqualTo(String value) { + addCriterion("type >=", value, "type"); + return (Criteria) this; + } + + public Criteria andTypeLessThan(String value) { + addCriterion("type <", value, "type"); + return (Criteria) this; + } + + public Criteria andTypeLessThanOrEqualTo(String value) { + addCriterion("type <=", value, "type"); + return (Criteria) this; + } + + public Criteria andTypeLike(String value) { + addCriterion("type like", value, "type"); + return (Criteria) this; + } + + public Criteria andTypeNotLike(String value) { + addCriterion("type not like", value, "type"); + return (Criteria) this; + } + + public Criteria andTypeIn(List values) { + addCriterion("type in", values, "type"); + return (Criteria) this; + } + + public Criteria andTypeNotIn(List values) { + addCriterion("type not in", values, "type"); + return (Criteria) this; + } + + public Criteria andTypeBetween(String value1, String value2) { + addCriterion("type between", value1, value2, "type"); + return (Criteria) this; + } + + public Criteria andTypeNotBetween(String value1, String value2) { + addCriterion("type not between", value1, value2, "type"); + return (Criteria) this; + } + + public Criteria andValueIsNull() { + addCriterion("value is null"); + return (Criteria) this; + } + + public Criteria andValueIsNotNull() { + addCriterion("value is not null"); + return (Criteria) this; + } + + public Criteria andValueEqualTo(String value) { + addCriterion("value =", value, "value"); + return (Criteria) this; + } + + public Criteria andValueNotEqualTo(String value) { + addCriterion("value <>", value, "value"); + return (Criteria) this; + } + + public Criteria andValueGreaterThan(String value) { + addCriterion("value >", value, "value"); + return (Criteria) this; + } + + public Criteria andValueGreaterThanOrEqualTo(String value) { + addCriterion("value >=", value, "value"); + return (Criteria) this; + } + + public Criteria andValueLessThan(String value) { + addCriterion("value <", value, "value"); + return (Criteria) this; + } + + public Criteria andValueLessThanOrEqualTo(String value) { + addCriterion("value <=", value, "value"); + return (Criteria) this; + } + + public Criteria andValueLike(String value) { + addCriterion("value like", value, "value"); + return (Criteria) this; + } + + public Criteria andValueNotLike(String value) { + addCriterion("value not like", value, "value"); + return (Criteria) this; + } + + public Criteria andValueIn(List values) { + addCriterion("value in", values, "value"); + return (Criteria) this; + } + + public Criteria andValueNotIn(List values) { + addCriterion("value not in", values, "value"); + return (Criteria) this; + } + + public Criteria andValueBetween(String value1, String value2) { + addCriterion("value between", value1, value2, "value"); + return (Criteria) this; + } + + public Criteria andValueNotBetween(String value1, String value2) { + addCriterion("value not between", value1, value2, "value"); + return (Criteria) this; + } + + public Criteria andDescriptionIsNull() { + addCriterion("description is null"); + return (Criteria) this; + } + + public Criteria andDescriptionIsNotNull() { + addCriterion("description is not null"); + return (Criteria) this; + } + + public Criteria andDescriptionEqualTo(String value) { + addCriterion("description =", value, "description"); + return (Criteria) this; + } + + public Criteria andDescriptionNotEqualTo(String value) { + addCriterion("description <>", value, "description"); + return (Criteria) this; + } + + public Criteria andDescriptionGreaterThan(String value) { + addCriterion("description >", value, "description"); + return (Criteria) this; + } + + public Criteria andDescriptionGreaterThanOrEqualTo(String value) { + addCriterion("description >=", value, "description"); + return (Criteria) this; + } + + public Criteria andDescriptionLessThan(String value) { + addCriterion("description <", value, "description"); + return (Criteria) this; + } + + public Criteria andDescriptionLessThanOrEqualTo(String value) { + addCriterion("description <=", value, "description"); + return (Criteria) this; + } + + public Criteria andDescriptionLike(String value) { + addCriterion("description like", value, "description"); + return (Criteria) this; + } + + public Criteria andDescriptionNotLike(String value) { + addCriterion("description not like", value, "description"); + return (Criteria) this; + } + + public Criteria andDescriptionIn(List values) { + addCriterion("description in", values, "description"); + return (Criteria) this; + } + + public Criteria andDescriptionNotIn(List values) { + addCriterion("description not in", values, "description"); + return (Criteria) this; + } + + public Criteria andDescriptionBetween(String value1, String value2) { + addCriterion("description between", value1, value2, "description"); + return (Criteria) this; + } + + public Criteria andDescriptionNotBetween(String value1, String value2) { + addCriterion("description not between", value1, value2, "description"); + return (Criteria) this; + } + } + + /** + * This class was generated by MyBatis Generator. + * This class corresponds to the database table jsh_role + * + * @mbggenerated do_not_delete_during_merge + */ + public static class Criteria extends GeneratedCriteria { + + protected Criteria() { + super(); + } + } + + /** + * This class was generated by MyBatis Generator. + * This class corresponds to the database table jsh_role + * + * @mbggenerated + */ + public static class Criterion { + private String condition; + + private Object value; + + private Object secondValue; + + private boolean noValue; + + private boolean singleValue; + + private boolean betweenValue; + + private boolean listValue; + + private String typeHandler; + + public String getCondition() { + return condition; + } + + public Object getValue() { + return value; + } + + public Object getSecondValue() { + return secondValue; + } + + public boolean isNoValue() { + return noValue; + } + + public boolean isSingleValue() { + return singleValue; + } + + public boolean isBetweenValue() { + return betweenValue; + } + + public boolean isListValue() { + return listValue; + } + + public String getTypeHandler() { + return typeHandler; + } + + protected Criterion(String condition) { + super(); + this.condition = condition; + this.typeHandler = null; + this.noValue = true; + } + + protected Criterion(String condition, Object value, String typeHandler) { + super(); + this.condition = condition; + this.value = value; + this.typeHandler = typeHandler; + if (value instanceof List) { + this.listValue = true; + } else { + this.singleValue = true; + } + } + + protected Criterion(String condition, Object value) { + this(condition, value, null); + } + + protected Criterion(String condition, Object value, Object secondValue, String typeHandler) { + super(); + this.condition = condition; + this.value = value; + this.secondValue = secondValue; + this.typeHandler = typeHandler; + this.betweenValue = true; + } + + protected Criterion(String condition, Object value, Object secondValue) { + this(condition, value, secondValue, null); + } + } +} \ No newline at end of file diff --git a/src/main/java/com/jsh/erp/datasource/entities/Supplier.java b/src/main/java/com/jsh/erp/datasource/entities/Supplier.java new file mode 100644 index 00000000..6ce1a054 --- /dev/null +++ b/src/main/java/com/jsh/erp/datasource/entities/Supplier.java @@ -0,0 +1,675 @@ +package com.jsh.erp.datasource.entities; + +public class Supplier { + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database column jsh_supplier.id + * + * @mbggenerated + */ + private Long id; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database column jsh_supplier.supplier + * + * @mbggenerated + */ + private String supplier; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database column jsh_supplier.contacts + * + * @mbggenerated + */ + private String contacts; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database column jsh_supplier.phonenum + * + * @mbggenerated + */ + private String phonenum; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database column jsh_supplier.email + * + * @mbggenerated + */ + private String email; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database column jsh_supplier.description + * + * @mbggenerated + */ + private String description; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database column jsh_supplier.isystem + * + * @mbggenerated + */ + private Byte isystem; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database column jsh_supplier.type + * + * @mbggenerated + */ + private String type; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database column jsh_supplier.enabled + * + * @mbggenerated + */ + private Boolean enabled; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database column jsh_supplier.AdvanceIn + * + * @mbggenerated + */ + private Double advancein; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database column jsh_supplier.BeginNeedGet + * + * @mbggenerated + */ + private Double beginneedget; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database column jsh_supplier.BeginNeedPay + * + * @mbggenerated + */ + private Double beginneedpay; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database column jsh_supplier.AllNeedGet + * + * @mbggenerated + */ + private Double allneedget; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database column jsh_supplier.AllNeedPay + * + * @mbggenerated + */ + private Double allneedpay; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database column jsh_supplier.fax + * + * @mbggenerated + */ + private String fax; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database column jsh_supplier.telephone + * + * @mbggenerated + */ + private String telephone; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database column jsh_supplier.address + * + * @mbggenerated + */ + private String address; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database column jsh_supplier.taxNum + * + * @mbggenerated + */ + private String taxnum; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database column jsh_supplier.bankName + * + * @mbggenerated + */ + private String bankname; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database column jsh_supplier.accountNumber + * + * @mbggenerated + */ + private String accountnumber; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database column jsh_supplier.taxRate + * + * @mbggenerated + */ + private Double taxrate; + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column jsh_supplier.id + * + * @return the value of jsh_supplier.id + * + * @mbggenerated + */ + public Long getId() { + return id; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column jsh_supplier.id + * + * @param id the value for jsh_supplier.id + * + * @mbggenerated + */ + public void setId(Long id) { + this.id = id; + } + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column jsh_supplier.supplier + * + * @return the value of jsh_supplier.supplier + * + * @mbggenerated + */ + public String getSupplier() { + return supplier; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column jsh_supplier.supplier + * + * @param supplier the value for jsh_supplier.supplier + * + * @mbggenerated + */ + public void setSupplier(String supplier) { + this.supplier = supplier == null ? null : supplier.trim(); + } + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column jsh_supplier.contacts + * + * @return the value of jsh_supplier.contacts + * + * @mbggenerated + */ + public String getContacts() { + return contacts; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column jsh_supplier.contacts + * + * @param contacts the value for jsh_supplier.contacts + * + * @mbggenerated + */ + public void setContacts(String contacts) { + this.contacts = contacts == null ? null : contacts.trim(); + } + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column jsh_supplier.phonenum + * + * @return the value of jsh_supplier.phonenum + * + * @mbggenerated + */ + public String getPhonenum() { + return phonenum; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column jsh_supplier.phonenum + * + * @param phonenum the value for jsh_supplier.phonenum + * + * @mbggenerated + */ + public void setPhonenum(String phonenum) { + this.phonenum = phonenum == null ? null : phonenum.trim(); + } + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column jsh_supplier.email + * + * @return the value of jsh_supplier.email + * + * @mbggenerated + */ + public String getEmail() { + return email; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column jsh_supplier.email + * + * @param email the value for jsh_supplier.email + * + * @mbggenerated + */ + public void setEmail(String email) { + this.email = email == null ? null : email.trim(); + } + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column jsh_supplier.description + * + * @return the value of jsh_supplier.description + * + * @mbggenerated + */ + public String getDescription() { + return description; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column jsh_supplier.description + * + * @param description the value for jsh_supplier.description + * + * @mbggenerated + */ + public void setDescription(String description) { + this.description = description == null ? null : description.trim(); + } + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column jsh_supplier.isystem + * + * @return the value of jsh_supplier.isystem + * + * @mbggenerated + */ + public Byte getIsystem() { + return isystem; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column jsh_supplier.isystem + * + * @param isystem the value for jsh_supplier.isystem + * + * @mbggenerated + */ + public void setIsystem(Byte isystem) { + this.isystem = isystem; + } + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column jsh_supplier.type + * + * @return the value of jsh_supplier.type + * + * @mbggenerated + */ + public String getType() { + return type; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column jsh_supplier.type + * + * @param type the value for jsh_supplier.type + * + * @mbggenerated + */ + public void setType(String type) { + this.type = type == null ? null : type.trim(); + } + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column jsh_supplier.enabled + * + * @return the value of jsh_supplier.enabled + * + * @mbggenerated + */ + public Boolean getEnabled() { + return enabled; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column jsh_supplier.enabled + * + * @param enabled the value for jsh_supplier.enabled + * + * @mbggenerated + */ + public void setEnabled(Boolean enabled) { + this.enabled = enabled; + } + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column jsh_supplier.AdvanceIn + * + * @return the value of jsh_supplier.AdvanceIn + * + * @mbggenerated + */ + public Double getAdvancein() { + return advancein; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column jsh_supplier.AdvanceIn + * + * @param advancein the value for jsh_supplier.AdvanceIn + * + * @mbggenerated + */ + public void setAdvancein(Double advancein) { + this.advancein = advancein; + } + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column jsh_supplier.BeginNeedGet + * + * @return the value of jsh_supplier.BeginNeedGet + * + * @mbggenerated + */ + public Double getBeginneedget() { + return beginneedget; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column jsh_supplier.BeginNeedGet + * + * @param beginneedget the value for jsh_supplier.BeginNeedGet + * + * @mbggenerated + */ + public void setBeginneedget(Double beginneedget) { + this.beginneedget = beginneedget; + } + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column jsh_supplier.BeginNeedPay + * + * @return the value of jsh_supplier.BeginNeedPay + * + * @mbggenerated + */ + public Double getBeginneedpay() { + return beginneedpay; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column jsh_supplier.BeginNeedPay + * + * @param beginneedpay the value for jsh_supplier.BeginNeedPay + * + * @mbggenerated + */ + public void setBeginneedpay(Double beginneedpay) { + this.beginneedpay = beginneedpay; + } + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column jsh_supplier.AllNeedGet + * + * @return the value of jsh_supplier.AllNeedGet + * + * @mbggenerated + */ + public Double getAllneedget() { + return allneedget; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column jsh_supplier.AllNeedGet + * + * @param allneedget the value for jsh_supplier.AllNeedGet + * + * @mbggenerated + */ + public void setAllneedget(Double allneedget) { + this.allneedget = allneedget; + } + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column jsh_supplier.AllNeedPay + * + * @return the value of jsh_supplier.AllNeedPay + * + * @mbggenerated + */ + public Double getAllneedpay() { + return allneedpay; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column jsh_supplier.AllNeedPay + * + * @param allneedpay the value for jsh_supplier.AllNeedPay + * + * @mbggenerated + */ + public void setAllneedpay(Double allneedpay) { + this.allneedpay = allneedpay; + } + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column jsh_supplier.fax + * + * @return the value of jsh_supplier.fax + * + * @mbggenerated + */ + public String getFax() { + return fax; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column jsh_supplier.fax + * + * @param fax the value for jsh_supplier.fax + * + * @mbggenerated + */ + public void setFax(String fax) { + this.fax = fax == null ? null : fax.trim(); + } + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column jsh_supplier.telephone + * + * @return the value of jsh_supplier.telephone + * + * @mbggenerated + */ + public String getTelephone() { + return telephone; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column jsh_supplier.telephone + * + * @param telephone the value for jsh_supplier.telephone + * + * @mbggenerated + */ + public void setTelephone(String telephone) { + this.telephone = telephone == null ? null : telephone.trim(); + } + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column jsh_supplier.address + * + * @return the value of jsh_supplier.address + * + * @mbggenerated + */ + public String getAddress() { + return address; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column jsh_supplier.address + * + * @param address the value for jsh_supplier.address + * + * @mbggenerated + */ + public void setAddress(String address) { + this.address = address == null ? null : address.trim(); + } + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column jsh_supplier.taxNum + * + * @return the value of jsh_supplier.taxNum + * + * @mbggenerated + */ + public String getTaxnum() { + return taxnum; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column jsh_supplier.taxNum + * + * @param taxnum the value for jsh_supplier.taxNum + * + * @mbggenerated + */ + public void setTaxnum(String taxnum) { + this.taxnum = taxnum == null ? null : taxnum.trim(); + } + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column jsh_supplier.bankName + * + * @return the value of jsh_supplier.bankName + * + * @mbggenerated + */ + public String getBankname() { + return bankname; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column jsh_supplier.bankName + * + * @param bankname the value for jsh_supplier.bankName + * + * @mbggenerated + */ + public void setBankname(String bankname) { + this.bankname = bankname == null ? null : bankname.trim(); + } + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column jsh_supplier.accountNumber + * + * @return the value of jsh_supplier.accountNumber + * + * @mbggenerated + */ + public String getAccountnumber() { + return accountnumber; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column jsh_supplier.accountNumber + * + * @param accountnumber the value for jsh_supplier.accountNumber + * + * @mbggenerated + */ + public void setAccountnumber(String accountnumber) { + this.accountnumber = accountnumber == null ? null : accountnumber.trim(); + } + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column jsh_supplier.taxRate + * + * @return the value of jsh_supplier.taxRate + * + * @mbggenerated + */ + public Double getTaxrate() { + return taxrate; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column jsh_supplier.taxRate + * + * @param taxrate the value for jsh_supplier.taxRate + * + * @mbggenerated + */ + public void setTaxrate(Double taxrate) { + this.taxrate = taxrate; + } +} \ No newline at end of file diff --git a/src/main/java/com/jsh/erp/datasource/entities/SupplierExample.java b/src/main/java/com/jsh/erp/datasource/entities/SupplierExample.java new file mode 100644 index 00000000..1c785635 --- /dev/null +++ b/src/main/java/com/jsh/erp/datasource/entities/SupplierExample.java @@ -0,0 +1,1682 @@ +package com.jsh.erp.datasource.entities; + +import java.util.ArrayList; +import java.util.List; + +public class SupplierExample { + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database table jsh_supplier + * + * @mbggenerated + */ + protected String orderByClause; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database table jsh_supplier + * + * @mbggenerated + */ + protected boolean distinct; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database table jsh_supplier + * + * @mbggenerated + */ + protected List oredCriteria; + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_supplier + * + * @mbggenerated + */ + public SupplierExample() { + oredCriteria = new ArrayList(); + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_supplier + * + * @mbggenerated + */ + public void setOrderByClause(String orderByClause) { + this.orderByClause = orderByClause; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_supplier + * + * @mbggenerated + */ + public String getOrderByClause() { + return orderByClause; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_supplier + * + * @mbggenerated + */ + public void setDistinct(boolean distinct) { + this.distinct = distinct; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_supplier + * + * @mbggenerated + */ + public boolean isDistinct() { + return distinct; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_supplier + * + * @mbggenerated + */ + public List getOredCriteria() { + return oredCriteria; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_supplier + * + * @mbggenerated + */ + public void or(Criteria criteria) { + oredCriteria.add(criteria); + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_supplier + * + * @mbggenerated + */ + public Criteria or() { + Criteria criteria = createCriteriaInternal(); + oredCriteria.add(criteria); + return criteria; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_supplier + * + * @mbggenerated + */ + public Criteria createCriteria() { + Criteria criteria = createCriteriaInternal(); + if (oredCriteria.size() == 0) { + oredCriteria.add(criteria); + } + return criteria; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_supplier + * + * @mbggenerated + */ + protected Criteria createCriteriaInternal() { + Criteria criteria = new Criteria(); + return criteria; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_supplier + * + * @mbggenerated + */ + public void clear() { + oredCriteria.clear(); + orderByClause = null; + distinct = false; + } + + /** + * This class was generated by MyBatis Generator. + * This class corresponds to the database table jsh_supplier + * + * @mbggenerated + */ + protected abstract static class GeneratedCriteria { + protected List criteria; + + protected GeneratedCriteria() { + super(); + criteria = new ArrayList(); + } + + public boolean isValid() { + return criteria.size() > 0; + } + + public List getAllCriteria() { + return criteria; + } + + public List getCriteria() { + return criteria; + } + + protected void addCriterion(String condition) { + if (condition == null) { + throw new RuntimeException("Value for condition cannot be null"); + } + criteria.add(new Criterion(condition)); + } + + protected void addCriterion(String condition, Object value, String property) { + if (value == null) { + throw new RuntimeException("Value for " + property + " cannot be null"); + } + criteria.add(new Criterion(condition, value)); + } + + protected void addCriterion(String condition, Object value1, Object value2, String property) { + if (value1 == null || value2 == null) { + throw new RuntimeException("Between values for " + property + " cannot be null"); + } + criteria.add(new Criterion(condition, value1, value2)); + } + + public Criteria andIdIsNull() { + addCriterion("id is null"); + return (Criteria) this; + } + + public Criteria andIdIsNotNull() { + addCriterion("id is not null"); + return (Criteria) this; + } + + public Criteria andIdEqualTo(Long value) { + addCriterion("id =", value, "id"); + return (Criteria) this; + } + + public Criteria andIdNotEqualTo(Long value) { + addCriterion("id <>", value, "id"); + return (Criteria) this; + } + + public Criteria andIdGreaterThan(Long value) { + addCriterion("id >", value, "id"); + return (Criteria) this; + } + + public Criteria andIdGreaterThanOrEqualTo(Long value) { + addCriterion("id >=", value, "id"); + return (Criteria) this; + } + + public Criteria andIdLessThan(Long value) { + addCriterion("id <", value, "id"); + return (Criteria) this; + } + + public Criteria andIdLessThanOrEqualTo(Long value) { + addCriterion("id <=", value, "id"); + return (Criteria) this; + } + + public Criteria andIdIn(List values) { + addCriterion("id in", values, "id"); + return (Criteria) this; + } + + public Criteria andIdNotIn(List values) { + addCriterion("id not in", values, "id"); + return (Criteria) this; + } + + public Criteria andIdBetween(Long value1, Long value2) { + addCriterion("id between", value1, value2, "id"); + return (Criteria) this; + } + + public Criteria andIdNotBetween(Long value1, Long value2) { + addCriterion("id not between", value1, value2, "id"); + return (Criteria) this; + } + + public Criteria andSupplierIsNull() { + addCriterion("supplier is null"); + return (Criteria) this; + } + + public Criteria andSupplierIsNotNull() { + addCriterion("supplier is not null"); + return (Criteria) this; + } + + public Criteria andSupplierEqualTo(String value) { + addCriterion("supplier =", value, "supplier"); + return (Criteria) this; + } + + public Criteria andSupplierNotEqualTo(String value) { + addCriterion("supplier <>", value, "supplier"); + return (Criteria) this; + } + + public Criteria andSupplierGreaterThan(String value) { + addCriterion("supplier >", value, "supplier"); + return (Criteria) this; + } + + public Criteria andSupplierGreaterThanOrEqualTo(String value) { + addCriterion("supplier >=", value, "supplier"); + return (Criteria) this; + } + + public Criteria andSupplierLessThan(String value) { + addCriterion("supplier <", value, "supplier"); + return (Criteria) this; + } + + public Criteria andSupplierLessThanOrEqualTo(String value) { + addCriterion("supplier <=", value, "supplier"); + return (Criteria) this; + } + + public Criteria andSupplierLike(String value) { + addCriterion("supplier like", value, "supplier"); + return (Criteria) this; + } + + public Criteria andSupplierNotLike(String value) { + addCriterion("supplier not like", value, "supplier"); + return (Criteria) this; + } + + public Criteria andSupplierIn(List values) { + addCriterion("supplier in", values, "supplier"); + return (Criteria) this; + } + + public Criteria andSupplierNotIn(List values) { + addCriterion("supplier not in", values, "supplier"); + return (Criteria) this; + } + + public Criteria andSupplierBetween(String value1, String value2) { + addCriterion("supplier between", value1, value2, "supplier"); + return (Criteria) this; + } + + public Criteria andSupplierNotBetween(String value1, String value2) { + addCriterion("supplier not between", value1, value2, "supplier"); + return (Criteria) this; + } + + public Criteria andContactsIsNull() { + addCriterion("contacts is null"); + return (Criteria) this; + } + + public Criteria andContactsIsNotNull() { + addCriterion("contacts is not null"); + return (Criteria) this; + } + + public Criteria andContactsEqualTo(String value) { + addCriterion("contacts =", value, "contacts"); + return (Criteria) this; + } + + public Criteria andContactsNotEqualTo(String value) { + addCriterion("contacts <>", value, "contacts"); + return (Criteria) this; + } + + public Criteria andContactsGreaterThan(String value) { + addCriterion("contacts >", value, "contacts"); + return (Criteria) this; + } + + public Criteria andContactsGreaterThanOrEqualTo(String value) { + addCriterion("contacts >=", value, "contacts"); + return (Criteria) this; + } + + public Criteria andContactsLessThan(String value) { + addCriterion("contacts <", value, "contacts"); + return (Criteria) this; + } + + public Criteria andContactsLessThanOrEqualTo(String value) { + addCriterion("contacts <=", value, "contacts"); + return (Criteria) this; + } + + public Criteria andContactsLike(String value) { + addCriterion("contacts like", value, "contacts"); + return (Criteria) this; + } + + public Criteria andContactsNotLike(String value) { + addCriterion("contacts not like", value, "contacts"); + return (Criteria) this; + } + + public Criteria andContactsIn(List values) { + addCriterion("contacts in", values, "contacts"); + return (Criteria) this; + } + + public Criteria andContactsNotIn(List values) { + addCriterion("contacts not in", values, "contacts"); + return (Criteria) this; + } + + public Criteria andContactsBetween(String value1, String value2) { + addCriterion("contacts between", value1, value2, "contacts"); + return (Criteria) this; + } + + public Criteria andContactsNotBetween(String value1, String value2) { + addCriterion("contacts not between", value1, value2, "contacts"); + return (Criteria) this; + } + + public Criteria andPhonenumIsNull() { + addCriterion("phonenum is null"); + return (Criteria) this; + } + + public Criteria andPhonenumIsNotNull() { + addCriterion("phonenum is not null"); + return (Criteria) this; + } + + public Criteria andPhonenumEqualTo(String value) { + addCriterion("phonenum =", value, "phonenum"); + return (Criteria) this; + } + + public Criteria andPhonenumNotEqualTo(String value) { + addCriterion("phonenum <>", value, "phonenum"); + return (Criteria) this; + } + + public Criteria andPhonenumGreaterThan(String value) { + addCriterion("phonenum >", value, "phonenum"); + return (Criteria) this; + } + + public Criteria andPhonenumGreaterThanOrEqualTo(String value) { + addCriterion("phonenum >=", value, "phonenum"); + return (Criteria) this; + } + + public Criteria andPhonenumLessThan(String value) { + addCriterion("phonenum <", value, "phonenum"); + return (Criteria) this; + } + + public Criteria andPhonenumLessThanOrEqualTo(String value) { + addCriterion("phonenum <=", value, "phonenum"); + return (Criteria) this; + } + + public Criteria andPhonenumLike(String value) { + addCriterion("phonenum like", value, "phonenum"); + return (Criteria) this; + } + + public Criteria andPhonenumNotLike(String value) { + addCriterion("phonenum not like", value, "phonenum"); + return (Criteria) this; + } + + public Criteria andPhonenumIn(List values) { + addCriterion("phonenum in", values, "phonenum"); + return (Criteria) this; + } + + public Criteria andPhonenumNotIn(List values) { + addCriterion("phonenum not in", values, "phonenum"); + return (Criteria) this; + } + + public Criteria andPhonenumBetween(String value1, String value2) { + addCriterion("phonenum between", value1, value2, "phonenum"); + return (Criteria) this; + } + + public Criteria andPhonenumNotBetween(String value1, String value2) { + addCriterion("phonenum not between", value1, value2, "phonenum"); + return (Criteria) this; + } + + public Criteria andEmailIsNull() { + addCriterion("email is null"); + return (Criteria) this; + } + + public Criteria andEmailIsNotNull() { + addCriterion("email is not null"); + return (Criteria) this; + } + + public Criteria andEmailEqualTo(String value) { + addCriterion("email =", value, "email"); + return (Criteria) this; + } + + public Criteria andEmailNotEqualTo(String value) { + addCriterion("email <>", value, "email"); + return (Criteria) this; + } + + public Criteria andEmailGreaterThan(String value) { + addCriterion("email >", value, "email"); + return (Criteria) this; + } + + public Criteria andEmailGreaterThanOrEqualTo(String value) { + addCriterion("email >=", value, "email"); + return (Criteria) this; + } + + public Criteria andEmailLessThan(String value) { + addCriterion("email <", value, "email"); + return (Criteria) this; + } + + public Criteria andEmailLessThanOrEqualTo(String value) { + addCriterion("email <=", value, "email"); + return (Criteria) this; + } + + public Criteria andEmailLike(String value) { + addCriterion("email like", value, "email"); + return (Criteria) this; + } + + public Criteria andEmailNotLike(String value) { + addCriterion("email not like", value, "email"); + return (Criteria) this; + } + + public Criteria andEmailIn(List values) { + addCriterion("email in", values, "email"); + return (Criteria) this; + } + + public Criteria andEmailNotIn(List values) { + addCriterion("email not in", values, "email"); + return (Criteria) this; + } + + public Criteria andEmailBetween(String value1, String value2) { + addCriterion("email between", value1, value2, "email"); + return (Criteria) this; + } + + public Criteria andEmailNotBetween(String value1, String value2) { + addCriterion("email not between", value1, value2, "email"); + return (Criteria) this; + } + + public Criteria andDescriptionIsNull() { + addCriterion("description is null"); + return (Criteria) this; + } + + public Criteria andDescriptionIsNotNull() { + addCriterion("description is not null"); + return (Criteria) this; + } + + public Criteria andDescriptionEqualTo(String value) { + addCriterion("description =", value, "description"); + return (Criteria) this; + } + + public Criteria andDescriptionNotEqualTo(String value) { + addCriterion("description <>", value, "description"); + return (Criteria) this; + } + + public Criteria andDescriptionGreaterThan(String value) { + addCriterion("description >", value, "description"); + return (Criteria) this; + } + + public Criteria andDescriptionGreaterThanOrEqualTo(String value) { + addCriterion("description >=", value, "description"); + return (Criteria) this; + } + + public Criteria andDescriptionLessThan(String value) { + addCriterion("description <", value, "description"); + return (Criteria) this; + } + + public Criteria andDescriptionLessThanOrEqualTo(String value) { + addCriterion("description <=", value, "description"); + return (Criteria) this; + } + + public Criteria andDescriptionLike(String value) { + addCriterion("description like", value, "description"); + return (Criteria) this; + } + + public Criteria andDescriptionNotLike(String value) { + addCriterion("description not like", value, "description"); + return (Criteria) this; + } + + public Criteria andDescriptionIn(List values) { + addCriterion("description in", values, "description"); + return (Criteria) this; + } + + public Criteria andDescriptionNotIn(List values) { + addCriterion("description not in", values, "description"); + return (Criteria) this; + } + + public Criteria andDescriptionBetween(String value1, String value2) { + addCriterion("description between", value1, value2, "description"); + return (Criteria) this; + } + + public Criteria andDescriptionNotBetween(String value1, String value2) { + addCriterion("description not between", value1, value2, "description"); + return (Criteria) this; + } + + public Criteria andIsystemIsNull() { + addCriterion("isystem is null"); + return (Criteria) this; + } + + public Criteria andIsystemIsNotNull() { + addCriterion("isystem is not null"); + return (Criteria) this; + } + + public Criteria andIsystemEqualTo(Byte value) { + addCriterion("isystem =", value, "isystem"); + return (Criteria) this; + } + + public Criteria andIsystemNotEqualTo(Byte value) { + addCriterion("isystem <>", value, "isystem"); + return (Criteria) this; + } + + public Criteria andIsystemGreaterThan(Byte value) { + addCriterion("isystem >", value, "isystem"); + return (Criteria) this; + } + + public Criteria andIsystemGreaterThanOrEqualTo(Byte value) { + addCriterion("isystem >=", value, "isystem"); + return (Criteria) this; + } + + public Criteria andIsystemLessThan(Byte value) { + addCriterion("isystem <", value, "isystem"); + return (Criteria) this; + } + + public Criteria andIsystemLessThanOrEqualTo(Byte value) { + addCriterion("isystem <=", value, "isystem"); + return (Criteria) this; + } + + public Criteria andIsystemIn(List values) { + addCriterion("isystem in", values, "isystem"); + return (Criteria) this; + } + + public Criteria andIsystemNotIn(List values) { + addCriterion("isystem not in", values, "isystem"); + return (Criteria) this; + } + + public Criteria andIsystemBetween(Byte value1, Byte value2) { + addCriterion("isystem between", value1, value2, "isystem"); + return (Criteria) this; + } + + public Criteria andIsystemNotBetween(Byte value1, Byte value2) { + addCriterion("isystem not between", value1, value2, "isystem"); + return (Criteria) this; + } + + public Criteria andTypeIsNull() { + addCriterion("type is null"); + return (Criteria) this; + } + + public Criteria andTypeIsNotNull() { + addCriterion("type is not null"); + return (Criteria) this; + } + + public Criteria andTypeEqualTo(String value) { + addCriterion("type =", value, "type"); + return (Criteria) this; + } + + public Criteria andTypeNotEqualTo(String value) { + addCriterion("type <>", value, "type"); + return (Criteria) this; + } + + public Criteria andTypeGreaterThan(String value) { + addCriterion("type >", value, "type"); + return (Criteria) this; + } + + public Criteria andTypeGreaterThanOrEqualTo(String value) { + addCriterion("type >=", value, "type"); + return (Criteria) this; + } + + public Criteria andTypeLessThan(String value) { + addCriterion("type <", value, "type"); + return (Criteria) this; + } + + public Criteria andTypeLessThanOrEqualTo(String value) { + addCriterion("type <=", value, "type"); + return (Criteria) this; + } + + public Criteria andTypeLike(String value) { + addCriterion("type like", value, "type"); + return (Criteria) this; + } + + public Criteria andTypeNotLike(String value) { + addCriterion("type not like", value, "type"); + return (Criteria) this; + } + + public Criteria andTypeIn(List values) { + addCriterion("type in", values, "type"); + return (Criteria) this; + } + + public Criteria andTypeNotIn(List values) { + addCriterion("type not in", values, "type"); + return (Criteria) this; + } + + public Criteria andTypeBetween(String value1, String value2) { + addCriterion("type between", value1, value2, "type"); + return (Criteria) this; + } + + public Criteria andTypeNotBetween(String value1, String value2) { + addCriterion("type not between", value1, value2, "type"); + return (Criteria) this; + } + + public Criteria andEnabledIsNull() { + addCriterion("enabled is null"); + return (Criteria) this; + } + + public Criteria andEnabledIsNotNull() { + addCriterion("enabled is not null"); + return (Criteria) this; + } + + public Criteria andEnabledEqualTo(Boolean value) { + addCriterion("enabled =", value, "enabled"); + return (Criteria) this; + } + + public Criteria andEnabledNotEqualTo(Boolean value) { + addCriterion("enabled <>", value, "enabled"); + return (Criteria) this; + } + + public Criteria andEnabledGreaterThan(Boolean value) { + addCriterion("enabled >", value, "enabled"); + return (Criteria) this; + } + + public Criteria andEnabledGreaterThanOrEqualTo(Boolean value) { + addCriterion("enabled >=", value, "enabled"); + return (Criteria) this; + } + + public Criteria andEnabledLessThan(Boolean value) { + addCriterion("enabled <", value, "enabled"); + return (Criteria) this; + } + + public Criteria andEnabledLessThanOrEqualTo(Boolean value) { + addCriterion("enabled <=", value, "enabled"); + return (Criteria) this; + } + + public Criteria andEnabledIn(List values) { + addCriterion("enabled in", values, "enabled"); + return (Criteria) this; + } + + public Criteria andEnabledNotIn(List values) { + addCriterion("enabled not in", values, "enabled"); + return (Criteria) this; + } + + public Criteria andEnabledBetween(Boolean value1, Boolean value2) { + addCriterion("enabled between", value1, value2, "enabled"); + return (Criteria) this; + } + + public Criteria andEnabledNotBetween(Boolean value1, Boolean value2) { + addCriterion("enabled not between", value1, value2, "enabled"); + return (Criteria) this; + } + + public Criteria andAdvanceinIsNull() { + addCriterion("AdvanceIn is null"); + return (Criteria) this; + } + + public Criteria andAdvanceinIsNotNull() { + addCriterion("AdvanceIn is not null"); + return (Criteria) this; + } + + public Criteria andAdvanceinEqualTo(Double value) { + addCriterion("AdvanceIn =", value, "advancein"); + return (Criteria) this; + } + + public Criteria andAdvanceinNotEqualTo(Double value) { + addCriterion("AdvanceIn <>", value, "advancein"); + return (Criteria) this; + } + + public Criteria andAdvanceinGreaterThan(Double value) { + addCriterion("AdvanceIn >", value, "advancein"); + return (Criteria) this; + } + + public Criteria andAdvanceinGreaterThanOrEqualTo(Double value) { + addCriterion("AdvanceIn >=", value, "advancein"); + return (Criteria) this; + } + + public Criteria andAdvanceinLessThan(Double value) { + addCriterion("AdvanceIn <", value, "advancein"); + return (Criteria) this; + } + + public Criteria andAdvanceinLessThanOrEqualTo(Double value) { + addCriterion("AdvanceIn <=", value, "advancein"); + return (Criteria) this; + } + + public Criteria andAdvanceinIn(List values) { + addCriterion("AdvanceIn in", values, "advancein"); + return (Criteria) this; + } + + public Criteria andAdvanceinNotIn(List values) { + addCriterion("AdvanceIn not in", values, "advancein"); + return (Criteria) this; + } + + public Criteria andAdvanceinBetween(Double value1, Double value2) { + addCriterion("AdvanceIn between", value1, value2, "advancein"); + return (Criteria) this; + } + + public Criteria andAdvanceinNotBetween(Double value1, Double value2) { + addCriterion("AdvanceIn not between", value1, value2, "advancein"); + return (Criteria) this; + } + + public Criteria andBeginneedgetIsNull() { + addCriterion("BeginNeedGet is null"); + return (Criteria) this; + } + + public Criteria andBeginneedgetIsNotNull() { + addCriterion("BeginNeedGet is not null"); + return (Criteria) this; + } + + public Criteria andBeginneedgetEqualTo(Double value) { + addCriterion("BeginNeedGet =", value, "beginneedget"); + return (Criteria) this; + } + + public Criteria andBeginneedgetNotEqualTo(Double value) { + addCriterion("BeginNeedGet <>", value, "beginneedget"); + return (Criteria) this; + } + + public Criteria andBeginneedgetGreaterThan(Double value) { + addCriterion("BeginNeedGet >", value, "beginneedget"); + return (Criteria) this; + } + + public Criteria andBeginneedgetGreaterThanOrEqualTo(Double value) { + addCriterion("BeginNeedGet >=", value, "beginneedget"); + return (Criteria) this; + } + + public Criteria andBeginneedgetLessThan(Double value) { + addCriterion("BeginNeedGet <", value, "beginneedget"); + return (Criteria) this; + } + + public Criteria andBeginneedgetLessThanOrEqualTo(Double value) { + addCriterion("BeginNeedGet <=", value, "beginneedget"); + return (Criteria) this; + } + + public Criteria andBeginneedgetIn(List values) { + addCriterion("BeginNeedGet in", values, "beginneedget"); + return (Criteria) this; + } + + public Criteria andBeginneedgetNotIn(List values) { + addCriterion("BeginNeedGet not in", values, "beginneedget"); + return (Criteria) this; + } + + public Criteria andBeginneedgetBetween(Double value1, Double value2) { + addCriterion("BeginNeedGet between", value1, value2, "beginneedget"); + return (Criteria) this; + } + + public Criteria andBeginneedgetNotBetween(Double value1, Double value2) { + addCriterion("BeginNeedGet not between", value1, value2, "beginneedget"); + return (Criteria) this; + } + + public Criteria andBeginneedpayIsNull() { + addCriterion("BeginNeedPay is null"); + return (Criteria) this; + } + + public Criteria andBeginneedpayIsNotNull() { + addCriterion("BeginNeedPay is not null"); + return (Criteria) this; + } + + public Criteria andBeginneedpayEqualTo(Double value) { + addCriterion("BeginNeedPay =", value, "beginneedpay"); + return (Criteria) this; + } + + public Criteria andBeginneedpayNotEqualTo(Double value) { + addCriterion("BeginNeedPay <>", value, "beginneedpay"); + return (Criteria) this; + } + + public Criteria andBeginneedpayGreaterThan(Double value) { + addCriterion("BeginNeedPay >", value, "beginneedpay"); + return (Criteria) this; + } + + public Criteria andBeginneedpayGreaterThanOrEqualTo(Double value) { + addCriterion("BeginNeedPay >=", value, "beginneedpay"); + return (Criteria) this; + } + + public Criteria andBeginneedpayLessThan(Double value) { + addCriterion("BeginNeedPay <", value, "beginneedpay"); + return (Criteria) this; + } + + public Criteria andBeginneedpayLessThanOrEqualTo(Double value) { + addCriterion("BeginNeedPay <=", value, "beginneedpay"); + return (Criteria) this; + } + + public Criteria andBeginneedpayIn(List values) { + addCriterion("BeginNeedPay in", values, "beginneedpay"); + return (Criteria) this; + } + + public Criteria andBeginneedpayNotIn(List values) { + addCriterion("BeginNeedPay not in", values, "beginneedpay"); + return (Criteria) this; + } + + public Criteria andBeginneedpayBetween(Double value1, Double value2) { + addCriterion("BeginNeedPay between", value1, value2, "beginneedpay"); + return (Criteria) this; + } + + public Criteria andBeginneedpayNotBetween(Double value1, Double value2) { + addCriterion("BeginNeedPay not between", value1, value2, "beginneedpay"); + return (Criteria) this; + } + + public Criteria andAllneedgetIsNull() { + addCriterion("AllNeedGet is null"); + return (Criteria) this; + } + + public Criteria andAllneedgetIsNotNull() { + addCriterion("AllNeedGet is not null"); + return (Criteria) this; + } + + public Criteria andAllneedgetEqualTo(Double value) { + addCriterion("AllNeedGet =", value, "allneedget"); + return (Criteria) this; + } + + public Criteria andAllneedgetNotEqualTo(Double value) { + addCriterion("AllNeedGet <>", value, "allneedget"); + return (Criteria) this; + } + + public Criteria andAllneedgetGreaterThan(Double value) { + addCriterion("AllNeedGet >", value, "allneedget"); + return (Criteria) this; + } + + public Criteria andAllneedgetGreaterThanOrEqualTo(Double value) { + addCriterion("AllNeedGet >=", value, "allneedget"); + return (Criteria) this; + } + + public Criteria andAllneedgetLessThan(Double value) { + addCriterion("AllNeedGet <", value, "allneedget"); + return (Criteria) this; + } + + public Criteria andAllneedgetLessThanOrEqualTo(Double value) { + addCriterion("AllNeedGet <=", value, "allneedget"); + return (Criteria) this; + } + + public Criteria andAllneedgetIn(List values) { + addCriterion("AllNeedGet in", values, "allneedget"); + return (Criteria) this; + } + + public Criteria andAllneedgetNotIn(List values) { + addCriterion("AllNeedGet not in", values, "allneedget"); + return (Criteria) this; + } + + public Criteria andAllneedgetBetween(Double value1, Double value2) { + addCriterion("AllNeedGet between", value1, value2, "allneedget"); + return (Criteria) this; + } + + public Criteria andAllneedgetNotBetween(Double value1, Double value2) { + addCriterion("AllNeedGet not between", value1, value2, "allneedget"); + return (Criteria) this; + } + + public Criteria andAllneedpayIsNull() { + addCriterion("AllNeedPay is null"); + return (Criteria) this; + } + + public Criteria andAllneedpayIsNotNull() { + addCriterion("AllNeedPay is not null"); + return (Criteria) this; + } + + public Criteria andAllneedpayEqualTo(Double value) { + addCriterion("AllNeedPay =", value, "allneedpay"); + return (Criteria) this; + } + + public Criteria andAllneedpayNotEqualTo(Double value) { + addCriterion("AllNeedPay <>", value, "allneedpay"); + return (Criteria) this; + } + + public Criteria andAllneedpayGreaterThan(Double value) { + addCriterion("AllNeedPay >", value, "allneedpay"); + return (Criteria) this; + } + + public Criteria andAllneedpayGreaterThanOrEqualTo(Double value) { + addCriterion("AllNeedPay >=", value, "allneedpay"); + return (Criteria) this; + } + + public Criteria andAllneedpayLessThan(Double value) { + addCriterion("AllNeedPay <", value, "allneedpay"); + return (Criteria) this; + } + + public Criteria andAllneedpayLessThanOrEqualTo(Double value) { + addCriterion("AllNeedPay <=", value, "allneedpay"); + return (Criteria) this; + } + + public Criteria andAllneedpayIn(List values) { + addCriterion("AllNeedPay in", values, "allneedpay"); + return (Criteria) this; + } + + public Criteria andAllneedpayNotIn(List values) { + addCriterion("AllNeedPay not in", values, "allneedpay"); + return (Criteria) this; + } + + public Criteria andAllneedpayBetween(Double value1, Double value2) { + addCriterion("AllNeedPay between", value1, value2, "allneedpay"); + return (Criteria) this; + } + + public Criteria andAllneedpayNotBetween(Double value1, Double value2) { + addCriterion("AllNeedPay not between", value1, value2, "allneedpay"); + return (Criteria) this; + } + + public Criteria andFaxIsNull() { + addCriterion("fax is null"); + return (Criteria) this; + } + + public Criteria andFaxIsNotNull() { + addCriterion("fax is not null"); + return (Criteria) this; + } + + public Criteria andFaxEqualTo(String value) { + addCriterion("fax =", value, "fax"); + return (Criteria) this; + } + + public Criteria andFaxNotEqualTo(String value) { + addCriterion("fax <>", value, "fax"); + return (Criteria) this; + } + + public Criteria andFaxGreaterThan(String value) { + addCriterion("fax >", value, "fax"); + return (Criteria) this; + } + + public Criteria andFaxGreaterThanOrEqualTo(String value) { + addCriterion("fax >=", value, "fax"); + return (Criteria) this; + } + + public Criteria andFaxLessThan(String value) { + addCriterion("fax <", value, "fax"); + return (Criteria) this; + } + + public Criteria andFaxLessThanOrEqualTo(String value) { + addCriterion("fax <=", value, "fax"); + return (Criteria) this; + } + + public Criteria andFaxLike(String value) { + addCriterion("fax like", value, "fax"); + return (Criteria) this; + } + + public Criteria andFaxNotLike(String value) { + addCriterion("fax not like", value, "fax"); + return (Criteria) this; + } + + public Criteria andFaxIn(List values) { + addCriterion("fax in", values, "fax"); + return (Criteria) this; + } + + public Criteria andFaxNotIn(List values) { + addCriterion("fax not in", values, "fax"); + return (Criteria) this; + } + + public Criteria andFaxBetween(String value1, String value2) { + addCriterion("fax between", value1, value2, "fax"); + return (Criteria) this; + } + + public Criteria andFaxNotBetween(String value1, String value2) { + addCriterion("fax not between", value1, value2, "fax"); + return (Criteria) this; + } + + public Criteria andTelephoneIsNull() { + addCriterion("telephone is null"); + return (Criteria) this; + } + + public Criteria andTelephoneIsNotNull() { + addCriterion("telephone is not null"); + return (Criteria) this; + } + + public Criteria andTelephoneEqualTo(String value) { + addCriterion("telephone =", value, "telephone"); + return (Criteria) this; + } + + public Criteria andTelephoneNotEqualTo(String value) { + addCriterion("telephone <>", value, "telephone"); + return (Criteria) this; + } + + public Criteria andTelephoneGreaterThan(String value) { + addCriterion("telephone >", value, "telephone"); + return (Criteria) this; + } + + public Criteria andTelephoneGreaterThanOrEqualTo(String value) { + addCriterion("telephone >=", value, "telephone"); + return (Criteria) this; + } + + public Criteria andTelephoneLessThan(String value) { + addCriterion("telephone <", value, "telephone"); + return (Criteria) this; + } + + public Criteria andTelephoneLessThanOrEqualTo(String value) { + addCriterion("telephone <=", value, "telephone"); + return (Criteria) this; + } + + public Criteria andTelephoneLike(String value) { + addCriterion("telephone like", value, "telephone"); + return (Criteria) this; + } + + public Criteria andTelephoneNotLike(String value) { + addCriterion("telephone not like", value, "telephone"); + return (Criteria) this; + } + + public Criteria andTelephoneIn(List values) { + addCriterion("telephone in", values, "telephone"); + return (Criteria) this; + } + + public Criteria andTelephoneNotIn(List values) { + addCriterion("telephone not in", values, "telephone"); + return (Criteria) this; + } + + public Criteria andTelephoneBetween(String value1, String value2) { + addCriterion("telephone between", value1, value2, "telephone"); + return (Criteria) this; + } + + public Criteria andTelephoneNotBetween(String value1, String value2) { + addCriterion("telephone not between", value1, value2, "telephone"); + return (Criteria) this; + } + + public Criteria andAddressIsNull() { + addCriterion("address is null"); + return (Criteria) this; + } + + public Criteria andAddressIsNotNull() { + addCriterion("address is not null"); + return (Criteria) this; + } + + public Criteria andAddressEqualTo(String value) { + addCriterion("address =", value, "address"); + return (Criteria) this; + } + + public Criteria andAddressNotEqualTo(String value) { + addCriterion("address <>", value, "address"); + return (Criteria) this; + } + + public Criteria andAddressGreaterThan(String value) { + addCriterion("address >", value, "address"); + return (Criteria) this; + } + + public Criteria andAddressGreaterThanOrEqualTo(String value) { + addCriterion("address >=", value, "address"); + return (Criteria) this; + } + + public Criteria andAddressLessThan(String value) { + addCriterion("address <", value, "address"); + return (Criteria) this; + } + + public Criteria andAddressLessThanOrEqualTo(String value) { + addCriterion("address <=", value, "address"); + return (Criteria) this; + } + + public Criteria andAddressLike(String value) { + addCriterion("address like", value, "address"); + return (Criteria) this; + } + + public Criteria andAddressNotLike(String value) { + addCriterion("address not like", value, "address"); + return (Criteria) this; + } + + public Criteria andAddressIn(List values) { + addCriterion("address in", values, "address"); + return (Criteria) this; + } + + public Criteria andAddressNotIn(List values) { + addCriterion("address not in", values, "address"); + return (Criteria) this; + } + + public Criteria andAddressBetween(String value1, String value2) { + addCriterion("address between", value1, value2, "address"); + return (Criteria) this; + } + + public Criteria andAddressNotBetween(String value1, String value2) { + addCriterion("address not between", value1, value2, "address"); + return (Criteria) this; + } + + public Criteria andTaxnumIsNull() { + addCriterion("taxNum is null"); + return (Criteria) this; + } + + public Criteria andTaxnumIsNotNull() { + addCriterion("taxNum is not null"); + return (Criteria) this; + } + + public Criteria andTaxnumEqualTo(String value) { + addCriterion("taxNum =", value, "taxnum"); + return (Criteria) this; + } + + public Criteria andTaxnumNotEqualTo(String value) { + addCriterion("taxNum <>", value, "taxnum"); + return (Criteria) this; + } + + public Criteria andTaxnumGreaterThan(String value) { + addCriterion("taxNum >", value, "taxnum"); + return (Criteria) this; + } + + public Criteria andTaxnumGreaterThanOrEqualTo(String value) { + addCriterion("taxNum >=", value, "taxnum"); + return (Criteria) this; + } + + public Criteria andTaxnumLessThan(String value) { + addCriterion("taxNum <", value, "taxnum"); + return (Criteria) this; + } + + public Criteria andTaxnumLessThanOrEqualTo(String value) { + addCriterion("taxNum <=", value, "taxnum"); + return (Criteria) this; + } + + public Criteria andTaxnumLike(String value) { + addCriterion("taxNum like", value, "taxnum"); + return (Criteria) this; + } + + public Criteria andTaxnumNotLike(String value) { + addCriterion("taxNum not like", value, "taxnum"); + return (Criteria) this; + } + + public Criteria andTaxnumIn(List values) { + addCriterion("taxNum in", values, "taxnum"); + return (Criteria) this; + } + + public Criteria andTaxnumNotIn(List values) { + addCriterion("taxNum not in", values, "taxnum"); + return (Criteria) this; + } + + public Criteria andTaxnumBetween(String value1, String value2) { + addCriterion("taxNum between", value1, value2, "taxnum"); + return (Criteria) this; + } + + public Criteria andTaxnumNotBetween(String value1, String value2) { + addCriterion("taxNum not between", value1, value2, "taxnum"); + return (Criteria) this; + } + + public Criteria andBanknameIsNull() { + addCriterion("bankName is null"); + return (Criteria) this; + } + + public Criteria andBanknameIsNotNull() { + addCriterion("bankName is not null"); + return (Criteria) this; + } + + public Criteria andBanknameEqualTo(String value) { + addCriterion("bankName =", value, "bankname"); + return (Criteria) this; + } + + public Criteria andBanknameNotEqualTo(String value) { + addCriterion("bankName <>", value, "bankname"); + return (Criteria) this; + } + + public Criteria andBanknameGreaterThan(String value) { + addCriterion("bankName >", value, "bankname"); + return (Criteria) this; + } + + public Criteria andBanknameGreaterThanOrEqualTo(String value) { + addCriterion("bankName >=", value, "bankname"); + return (Criteria) this; + } + + public Criteria andBanknameLessThan(String value) { + addCriterion("bankName <", value, "bankname"); + return (Criteria) this; + } + + public Criteria andBanknameLessThanOrEqualTo(String value) { + addCriterion("bankName <=", value, "bankname"); + return (Criteria) this; + } + + public Criteria andBanknameLike(String value) { + addCriterion("bankName like", value, "bankname"); + return (Criteria) this; + } + + public Criteria andBanknameNotLike(String value) { + addCriterion("bankName not like", value, "bankname"); + return (Criteria) this; + } + + public Criteria andBanknameIn(List values) { + addCriterion("bankName in", values, "bankname"); + return (Criteria) this; + } + + public Criteria andBanknameNotIn(List values) { + addCriterion("bankName not in", values, "bankname"); + return (Criteria) this; + } + + public Criteria andBanknameBetween(String value1, String value2) { + addCriterion("bankName between", value1, value2, "bankname"); + return (Criteria) this; + } + + public Criteria andBanknameNotBetween(String value1, String value2) { + addCriterion("bankName not between", value1, value2, "bankname"); + return (Criteria) this; + } + + public Criteria andAccountnumberIsNull() { + addCriterion("accountNumber is null"); + return (Criteria) this; + } + + public Criteria andAccountnumberIsNotNull() { + addCriterion("accountNumber is not null"); + return (Criteria) this; + } + + public Criteria andAccountnumberEqualTo(String value) { + addCriterion("accountNumber =", value, "accountnumber"); + return (Criteria) this; + } + + public Criteria andAccountnumberNotEqualTo(String value) { + addCriterion("accountNumber <>", value, "accountnumber"); + return (Criteria) this; + } + + public Criteria andAccountnumberGreaterThan(String value) { + addCriterion("accountNumber >", value, "accountnumber"); + return (Criteria) this; + } + + public Criteria andAccountnumberGreaterThanOrEqualTo(String value) { + addCriterion("accountNumber >=", value, "accountnumber"); + return (Criteria) this; + } + + public Criteria andAccountnumberLessThan(String value) { + addCriterion("accountNumber <", value, "accountnumber"); + return (Criteria) this; + } + + public Criteria andAccountnumberLessThanOrEqualTo(String value) { + addCriterion("accountNumber <=", value, "accountnumber"); + return (Criteria) this; + } + + public Criteria andAccountnumberLike(String value) { + addCriterion("accountNumber like", value, "accountnumber"); + return (Criteria) this; + } + + public Criteria andAccountnumberNotLike(String value) { + addCriterion("accountNumber not like", value, "accountnumber"); + return (Criteria) this; + } + + public Criteria andAccountnumberIn(List values) { + addCriterion("accountNumber in", values, "accountnumber"); + return (Criteria) this; + } + + public Criteria andAccountnumberNotIn(List values) { + addCriterion("accountNumber not in", values, "accountnumber"); + return (Criteria) this; + } + + public Criteria andAccountnumberBetween(String value1, String value2) { + addCriterion("accountNumber between", value1, value2, "accountnumber"); + return (Criteria) this; + } + + public Criteria andAccountnumberNotBetween(String value1, String value2) { + addCriterion("accountNumber not between", value1, value2, "accountnumber"); + return (Criteria) this; + } + + public Criteria andTaxrateIsNull() { + addCriterion("taxRate is null"); + return (Criteria) this; + } + + public Criteria andTaxrateIsNotNull() { + addCriterion("taxRate is not null"); + return (Criteria) this; + } + + public Criteria andTaxrateEqualTo(Double value) { + addCriterion("taxRate =", value, "taxrate"); + return (Criteria) this; + } + + public Criteria andTaxrateNotEqualTo(Double value) { + addCriterion("taxRate <>", value, "taxrate"); + return (Criteria) this; + } + + public Criteria andTaxrateGreaterThan(Double value) { + addCriterion("taxRate >", value, "taxrate"); + return (Criteria) this; + } + + public Criteria andTaxrateGreaterThanOrEqualTo(Double value) { + addCriterion("taxRate >=", value, "taxrate"); + return (Criteria) this; + } + + public Criteria andTaxrateLessThan(Double value) { + addCriterion("taxRate <", value, "taxrate"); + return (Criteria) this; + } + + public Criteria andTaxrateLessThanOrEqualTo(Double value) { + addCriterion("taxRate <=", value, "taxrate"); + return (Criteria) this; + } + + public Criteria andTaxrateIn(List values) { + addCriterion("taxRate in", values, "taxrate"); + return (Criteria) this; + } + + public Criteria andTaxrateNotIn(List values) { + addCriterion("taxRate not in", values, "taxrate"); + return (Criteria) this; + } + + public Criteria andTaxrateBetween(Double value1, Double value2) { + addCriterion("taxRate between", value1, value2, "taxrate"); + return (Criteria) this; + } + + public Criteria andTaxrateNotBetween(Double value1, Double value2) { + addCriterion("taxRate not between", value1, value2, "taxrate"); + return (Criteria) this; + } + } + + /** + * This class was generated by MyBatis Generator. + * This class corresponds to the database table jsh_supplier + * + * @mbggenerated do_not_delete_during_merge + */ + public static class Criteria extends GeneratedCriteria { + + protected Criteria() { + super(); + } + } + + /** + * This class was generated by MyBatis Generator. + * This class corresponds to the database table jsh_supplier + * + * @mbggenerated + */ + public static class Criterion { + private String condition; + + private Object value; + + private Object secondValue; + + private boolean noValue; + + private boolean singleValue; + + private boolean betweenValue; + + private boolean listValue; + + private String typeHandler; + + public String getCondition() { + return condition; + } + + public Object getValue() { + return value; + } + + public Object getSecondValue() { + return secondValue; + } + + public boolean isNoValue() { + return noValue; + } + + public boolean isSingleValue() { + return singleValue; + } + + public boolean isBetweenValue() { + return betweenValue; + } + + public boolean isListValue() { + return listValue; + } + + public String getTypeHandler() { + return typeHandler; + } + + protected Criterion(String condition) { + super(); + this.condition = condition; + this.typeHandler = null; + this.noValue = true; + } + + protected Criterion(String condition, Object value, String typeHandler) { + super(); + this.condition = condition; + this.value = value; + this.typeHandler = typeHandler; + if (value instanceof List) { + this.listValue = true; + } else { + this.singleValue = true; + } + } + + protected Criterion(String condition, Object value) { + this(condition, value, null); + } + + protected Criterion(String condition, Object value, Object secondValue, String typeHandler) { + super(); + this.condition = condition; + this.value = value; + this.secondValue = secondValue; + this.typeHandler = typeHandler; + this.betweenValue = true; + } + + protected Criterion(String condition, Object value, Object secondValue) { + this(condition, value, secondValue, null); + } + } +} \ No newline at end of file diff --git a/src/main/java/com/jsh/erp/datasource/entities/SystemConfig.java b/src/main/java/com/jsh/erp/datasource/entities/SystemConfig.java new file mode 100644 index 00000000..177a5153 --- /dev/null +++ b/src/main/java/com/jsh/erp/datasource/entities/SystemConfig.java @@ -0,0 +1,163 @@ +package com.jsh.erp.datasource.entities; + +public class SystemConfig { + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database column jsh_systemconfig.id + * + * @mbggenerated + */ + private Long id; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database column jsh_systemconfig.type + * + * @mbggenerated + */ + private String type; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database column jsh_systemconfig.name + * + * @mbggenerated + */ + private String name; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database column jsh_systemconfig.value + * + * @mbggenerated + */ + private String value; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database column jsh_systemconfig.description + * + * @mbggenerated + */ + private String description; + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column jsh_systemconfig.id + * + * @return the value of jsh_systemconfig.id + * + * @mbggenerated + */ + public Long getId() { + return id; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column jsh_systemconfig.id + * + * @param id the value for jsh_systemconfig.id + * + * @mbggenerated + */ + public void setId(Long id) { + this.id = id; + } + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column jsh_systemconfig.type + * + * @return the value of jsh_systemconfig.type + * + * @mbggenerated + */ + public String getType() { + return type; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column jsh_systemconfig.type + * + * @param type the value for jsh_systemconfig.type + * + * @mbggenerated + */ + public void setType(String type) { + this.type = type == null ? null : type.trim(); + } + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column jsh_systemconfig.name + * + * @return the value of jsh_systemconfig.name + * + * @mbggenerated + */ + public String getName() { + return name; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column jsh_systemconfig.name + * + * @param name the value for jsh_systemconfig.name + * + * @mbggenerated + */ + public void setName(String name) { + this.name = name == null ? null : name.trim(); + } + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column jsh_systemconfig.value + * + * @return the value of jsh_systemconfig.value + * + * @mbggenerated + */ + public String getValue() { + return value; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column jsh_systemconfig.value + * + * @param value the value for jsh_systemconfig.value + * + * @mbggenerated + */ + public void setValue(String value) { + this.value = value == null ? null : value.trim(); + } + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column jsh_systemconfig.description + * + * @return the value of jsh_systemconfig.description + * + * @mbggenerated + */ + public String getDescription() { + return description; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column jsh_systemconfig.description + * + * @param description the value for jsh_systemconfig.description + * + * @mbggenerated + */ + public void setDescription(String description) { + this.description = description == null ? null : description.trim(); + } +} \ No newline at end of file diff --git a/src/main/java/com/jsh/erp/datasource/entities/SystemConfigExample.java b/src/main/java/com/jsh/erp/datasource/entities/SystemConfigExample.java new file mode 100644 index 00000000..bf71a761 --- /dev/null +++ b/src/main/java/com/jsh/erp/datasource/entities/SystemConfigExample.java @@ -0,0 +1,642 @@ +package com.jsh.erp.datasource.entities; + +import java.util.ArrayList; +import java.util.List; + +public class SystemConfigExample { + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database table jsh_systemconfig + * + * @mbggenerated + */ + protected String orderByClause; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database table jsh_systemconfig + * + * @mbggenerated + */ + protected boolean distinct; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database table jsh_systemconfig + * + * @mbggenerated + */ + protected List oredCriteria; + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_systemconfig + * + * @mbggenerated + */ + public SystemConfigExample() { + oredCriteria = new ArrayList(); + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_systemconfig + * + * @mbggenerated + */ + public void setOrderByClause(String orderByClause) { + this.orderByClause = orderByClause; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_systemconfig + * + * @mbggenerated + */ + public String getOrderByClause() { + return orderByClause; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_systemconfig + * + * @mbggenerated + */ + public void setDistinct(boolean distinct) { + this.distinct = distinct; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_systemconfig + * + * @mbggenerated + */ + public boolean isDistinct() { + return distinct; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_systemconfig + * + * @mbggenerated + */ + public List getOredCriteria() { + return oredCriteria; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_systemconfig + * + * @mbggenerated + */ + public void or(Criteria criteria) { + oredCriteria.add(criteria); + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_systemconfig + * + * @mbggenerated + */ + public Criteria or() { + Criteria criteria = createCriteriaInternal(); + oredCriteria.add(criteria); + return criteria; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_systemconfig + * + * @mbggenerated + */ + public Criteria createCriteria() { + Criteria criteria = createCriteriaInternal(); + if (oredCriteria.size() == 0) { + oredCriteria.add(criteria); + } + return criteria; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_systemconfig + * + * @mbggenerated + */ + protected Criteria createCriteriaInternal() { + Criteria criteria = new Criteria(); + return criteria; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_systemconfig + * + * @mbggenerated + */ + public void clear() { + oredCriteria.clear(); + orderByClause = null; + distinct = false; + } + + /** + * This class was generated by MyBatis Generator. + * This class corresponds to the database table jsh_systemconfig + * + * @mbggenerated + */ + protected abstract static class GeneratedCriteria { + protected List criteria; + + protected GeneratedCriteria() { + super(); + criteria = new ArrayList(); + } + + public boolean isValid() { + return criteria.size() > 0; + } + + public List getAllCriteria() { + return criteria; + } + + public List getCriteria() { + return criteria; + } + + protected void addCriterion(String condition) { + if (condition == null) { + throw new RuntimeException("Value for condition cannot be null"); + } + criteria.add(new Criterion(condition)); + } + + protected void addCriterion(String condition, Object value, String property) { + if (value == null) { + throw new RuntimeException("Value for " + property + " cannot be null"); + } + criteria.add(new Criterion(condition, value)); + } + + protected void addCriterion(String condition, Object value1, Object value2, String property) { + if (value1 == null || value2 == null) { + throw new RuntimeException("Between values for " + property + " cannot be null"); + } + criteria.add(new Criterion(condition, value1, value2)); + } + + public Criteria andIdIsNull() { + addCriterion("id is null"); + return (Criteria) this; + } + + public Criteria andIdIsNotNull() { + addCriterion("id is not null"); + return (Criteria) this; + } + + public Criteria andIdEqualTo(Long value) { + addCriterion("id =", value, "id"); + return (Criteria) this; + } + + public Criteria andIdNotEqualTo(Long value) { + addCriterion("id <>", value, "id"); + return (Criteria) this; + } + + public Criteria andIdGreaterThan(Long value) { + addCriterion("id >", value, "id"); + return (Criteria) this; + } + + public Criteria andIdGreaterThanOrEqualTo(Long value) { + addCriterion("id >=", value, "id"); + return (Criteria) this; + } + + public Criteria andIdLessThan(Long value) { + addCriterion("id <", value, "id"); + return (Criteria) this; + } + + public Criteria andIdLessThanOrEqualTo(Long value) { + addCriterion("id <=", value, "id"); + return (Criteria) this; + } + + public Criteria andIdIn(List values) { + addCriterion("id in", values, "id"); + return (Criteria) this; + } + + public Criteria andIdNotIn(List values) { + addCriterion("id not in", values, "id"); + return (Criteria) this; + } + + public Criteria andIdBetween(Long value1, Long value2) { + addCriterion("id between", value1, value2, "id"); + return (Criteria) this; + } + + public Criteria andIdNotBetween(Long value1, Long value2) { + addCriterion("id not between", value1, value2, "id"); + return (Criteria) this; + } + + public Criteria andTypeIsNull() { + addCriterion("type is null"); + return (Criteria) this; + } + + public Criteria andTypeIsNotNull() { + addCriterion("type is not null"); + return (Criteria) this; + } + + public Criteria andTypeEqualTo(String value) { + addCriterion("type =", value, "type"); + return (Criteria) this; + } + + public Criteria andTypeNotEqualTo(String value) { + addCriterion("type <>", value, "type"); + return (Criteria) this; + } + + public Criteria andTypeGreaterThan(String value) { + addCriterion("type >", value, "type"); + return (Criteria) this; + } + + public Criteria andTypeGreaterThanOrEqualTo(String value) { + addCriterion("type >=", value, "type"); + return (Criteria) this; + } + + public Criteria andTypeLessThan(String value) { + addCriterion("type <", value, "type"); + return (Criteria) this; + } + + public Criteria andTypeLessThanOrEqualTo(String value) { + addCriterion("type <=", value, "type"); + return (Criteria) this; + } + + public Criteria andTypeLike(String value) { + addCriterion("type like", value, "type"); + return (Criteria) this; + } + + public Criteria andTypeNotLike(String value) { + addCriterion("type not like", value, "type"); + return (Criteria) this; + } + + public Criteria andTypeIn(List values) { + addCriterion("type in", values, "type"); + return (Criteria) this; + } + + public Criteria andTypeNotIn(List values) { + addCriterion("type not in", values, "type"); + return (Criteria) this; + } + + public Criteria andTypeBetween(String value1, String value2) { + addCriterion("type between", value1, value2, "type"); + return (Criteria) this; + } + + public Criteria andTypeNotBetween(String value1, String value2) { + addCriterion("type not between", value1, value2, "type"); + return (Criteria) this; + } + + public Criteria andNameIsNull() { + addCriterion("name is null"); + return (Criteria) this; + } + + public Criteria andNameIsNotNull() { + addCriterion("name is not null"); + return (Criteria) this; + } + + public Criteria andNameEqualTo(String value) { + addCriterion("name =", value, "name"); + return (Criteria) this; + } + + public Criteria andNameNotEqualTo(String value) { + addCriterion("name <>", value, "name"); + return (Criteria) this; + } + + public Criteria andNameGreaterThan(String value) { + addCriterion("name >", value, "name"); + return (Criteria) this; + } + + public Criteria andNameGreaterThanOrEqualTo(String value) { + addCriterion("name >=", value, "name"); + return (Criteria) this; + } + + public Criteria andNameLessThan(String value) { + addCriterion("name <", value, "name"); + return (Criteria) this; + } + + public Criteria andNameLessThanOrEqualTo(String value) { + addCriterion("name <=", value, "name"); + return (Criteria) this; + } + + public Criteria andNameLike(String value) { + addCriterion("name like", value, "name"); + return (Criteria) this; + } + + public Criteria andNameNotLike(String value) { + addCriterion("name not like", value, "name"); + return (Criteria) this; + } + + public Criteria andNameIn(List values) { + addCriterion("name in", values, "name"); + return (Criteria) this; + } + + public Criteria andNameNotIn(List values) { + addCriterion("name not in", values, "name"); + return (Criteria) this; + } + + public Criteria andNameBetween(String value1, String value2) { + addCriterion("name between", value1, value2, "name"); + return (Criteria) this; + } + + public Criteria andNameNotBetween(String value1, String value2) { + addCriterion("name not between", value1, value2, "name"); + return (Criteria) this; + } + + public Criteria andValueIsNull() { + addCriterion("value is null"); + return (Criteria) this; + } + + public Criteria andValueIsNotNull() { + addCriterion("value is not null"); + return (Criteria) this; + } + + public Criteria andValueEqualTo(String value) { + addCriterion("value =", value, "value"); + return (Criteria) this; + } + + public Criteria andValueNotEqualTo(String value) { + addCriterion("value <>", value, "value"); + return (Criteria) this; + } + + public Criteria andValueGreaterThan(String value) { + addCriterion("value >", value, "value"); + return (Criteria) this; + } + + public Criteria andValueGreaterThanOrEqualTo(String value) { + addCriterion("value >=", value, "value"); + return (Criteria) this; + } + + public Criteria andValueLessThan(String value) { + addCriterion("value <", value, "value"); + return (Criteria) this; + } + + public Criteria andValueLessThanOrEqualTo(String value) { + addCriterion("value <=", value, "value"); + return (Criteria) this; + } + + public Criteria andValueLike(String value) { + addCriterion("value like", value, "value"); + return (Criteria) this; + } + + public Criteria andValueNotLike(String value) { + addCriterion("value not like", value, "value"); + return (Criteria) this; + } + + public Criteria andValueIn(List values) { + addCriterion("value in", values, "value"); + return (Criteria) this; + } + + public Criteria andValueNotIn(List values) { + addCriterion("value not in", values, "value"); + return (Criteria) this; + } + + public Criteria andValueBetween(String value1, String value2) { + addCriterion("value between", value1, value2, "value"); + return (Criteria) this; + } + + public Criteria andValueNotBetween(String value1, String value2) { + addCriterion("value not between", value1, value2, "value"); + return (Criteria) this; + } + + public Criteria andDescriptionIsNull() { + addCriterion("description is null"); + return (Criteria) this; + } + + public Criteria andDescriptionIsNotNull() { + addCriterion("description is not null"); + return (Criteria) this; + } + + public Criteria andDescriptionEqualTo(String value) { + addCriterion("description =", value, "description"); + return (Criteria) this; + } + + public Criteria andDescriptionNotEqualTo(String value) { + addCriterion("description <>", value, "description"); + return (Criteria) this; + } + + public Criteria andDescriptionGreaterThan(String value) { + addCriterion("description >", value, "description"); + return (Criteria) this; + } + + public Criteria andDescriptionGreaterThanOrEqualTo(String value) { + addCriterion("description >=", value, "description"); + return (Criteria) this; + } + + public Criteria andDescriptionLessThan(String value) { + addCriterion("description <", value, "description"); + return (Criteria) this; + } + + public Criteria andDescriptionLessThanOrEqualTo(String value) { + addCriterion("description <=", value, "description"); + return (Criteria) this; + } + + public Criteria andDescriptionLike(String value) { + addCriterion("description like", value, "description"); + return (Criteria) this; + } + + public Criteria andDescriptionNotLike(String value) { + addCriterion("description not like", value, "description"); + return (Criteria) this; + } + + public Criteria andDescriptionIn(List values) { + addCriterion("description in", values, "description"); + return (Criteria) this; + } + + public Criteria andDescriptionNotIn(List values) { + addCriterion("description not in", values, "description"); + return (Criteria) this; + } + + public Criteria andDescriptionBetween(String value1, String value2) { + addCriterion("description between", value1, value2, "description"); + return (Criteria) this; + } + + public Criteria andDescriptionNotBetween(String value1, String value2) { + addCriterion("description not between", value1, value2, "description"); + return (Criteria) this; + } + } + + /** + * This class was generated by MyBatis Generator. + * This class corresponds to the database table jsh_systemconfig + * + * @mbggenerated do_not_delete_during_merge + */ + public static class Criteria extends GeneratedCriteria { + + protected Criteria() { + super(); + } + } + + /** + * This class was generated by MyBatis Generator. + * This class corresponds to the database table jsh_systemconfig + * + * @mbggenerated + */ + public static class Criterion { + private String condition; + + private Object value; + + private Object secondValue; + + private boolean noValue; + + private boolean singleValue; + + private boolean betweenValue; + + private boolean listValue; + + private String typeHandler; + + public String getCondition() { + return condition; + } + + public Object getValue() { + return value; + } + + public Object getSecondValue() { + return secondValue; + } + + public boolean isNoValue() { + return noValue; + } + + public boolean isSingleValue() { + return singleValue; + } + + public boolean isBetweenValue() { + return betweenValue; + } + + public boolean isListValue() { + return listValue; + } + + public String getTypeHandler() { + return typeHandler; + } + + protected Criterion(String condition) { + super(); + this.condition = condition; + this.typeHandler = null; + this.noValue = true; + } + + protected Criterion(String condition, Object value, String typeHandler) { + super(); + this.condition = condition; + this.value = value; + this.typeHandler = typeHandler; + if (value instanceof List) { + this.listValue = true; + } else { + this.singleValue = true; + } + } + + protected Criterion(String condition, Object value) { + this(condition, value, null); + } + + protected Criterion(String condition, Object value, Object secondValue, String typeHandler) { + super(); + this.condition = condition; + this.value = value; + this.secondValue = secondValue; + this.typeHandler = typeHandler; + this.betweenValue = true; + } + + protected Criterion(String condition, Object value, Object secondValue) { + this(condition, value, secondValue, null); + } + } +} \ No newline at end of file diff --git a/src/main/java/com/jsh/erp/datasource/entities/Unit.java b/src/main/java/com/jsh/erp/datasource/entities/Unit.java new file mode 100644 index 00000000..8fef6931 --- /dev/null +++ b/src/main/java/com/jsh/erp/datasource/entities/Unit.java @@ -0,0 +1,67 @@ +package com.jsh.erp.datasource.entities; + +public class Unit { + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database column jsh_unit.id + * + * @mbggenerated + */ + private Long id; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database column jsh_unit.UName + * + * @mbggenerated + */ + private String uname; + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column jsh_unit.id + * + * @return the value of jsh_unit.id + * + * @mbggenerated + */ + public Long getId() { + return id; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column jsh_unit.id + * + * @param id the value for jsh_unit.id + * + * @mbggenerated + */ + public void setId(Long id) { + this.id = id; + } + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column jsh_unit.UName + * + * @return the value of jsh_unit.UName + * + * @mbggenerated + */ + public String getUname() { + return uname; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column jsh_unit.UName + * + * @param uname the value for jsh_unit.UName + * + * @mbggenerated + */ + public void setUname(String uname) { + this.uname = uname == null ? null : uname.trim(); + } +} \ No newline at end of file diff --git a/src/main/java/com/jsh/erp/datasource/entities/UnitExample.java b/src/main/java/com/jsh/erp/datasource/entities/UnitExample.java new file mode 100644 index 00000000..089d41b0 --- /dev/null +++ b/src/main/java/com/jsh/erp/datasource/entities/UnitExample.java @@ -0,0 +1,432 @@ +package com.jsh.erp.datasource.entities; + +import java.util.ArrayList; +import java.util.List; + +public class UnitExample { + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database table jsh_unit + * + * @mbggenerated + */ + protected String orderByClause; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database table jsh_unit + * + * @mbggenerated + */ + protected boolean distinct; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database table jsh_unit + * + * @mbggenerated + */ + protected List oredCriteria; + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_unit + * + * @mbggenerated + */ + public UnitExample() { + oredCriteria = new ArrayList(); + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_unit + * + * @mbggenerated + */ + public void setOrderByClause(String orderByClause) { + this.orderByClause = orderByClause; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_unit + * + * @mbggenerated + */ + public String getOrderByClause() { + return orderByClause; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_unit + * + * @mbggenerated + */ + public void setDistinct(boolean distinct) { + this.distinct = distinct; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_unit + * + * @mbggenerated + */ + public boolean isDistinct() { + return distinct; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_unit + * + * @mbggenerated + */ + public List getOredCriteria() { + return oredCriteria; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_unit + * + * @mbggenerated + */ + public void or(Criteria criteria) { + oredCriteria.add(criteria); + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_unit + * + * @mbggenerated + */ + public Criteria or() { + Criteria criteria = createCriteriaInternal(); + oredCriteria.add(criteria); + return criteria; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_unit + * + * @mbggenerated + */ + public Criteria createCriteria() { + Criteria criteria = createCriteriaInternal(); + if (oredCriteria.size() == 0) { + oredCriteria.add(criteria); + } + return criteria; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_unit + * + * @mbggenerated + */ + protected Criteria createCriteriaInternal() { + Criteria criteria = new Criteria(); + return criteria; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_unit + * + * @mbggenerated + */ + public void clear() { + oredCriteria.clear(); + orderByClause = null; + distinct = false; + } + + /** + * This class was generated by MyBatis Generator. + * This class corresponds to the database table jsh_unit + * + * @mbggenerated + */ + protected abstract static class GeneratedCriteria { + protected List criteria; + + protected GeneratedCriteria() { + super(); + criteria = new ArrayList(); + } + + public boolean isValid() { + return criteria.size() > 0; + } + + public List getAllCriteria() { + return criteria; + } + + public List getCriteria() { + return criteria; + } + + protected void addCriterion(String condition) { + if (condition == null) { + throw new RuntimeException("Value for condition cannot be null"); + } + criteria.add(new Criterion(condition)); + } + + protected void addCriterion(String condition, Object value, String property) { + if (value == null) { + throw new RuntimeException("Value for " + property + " cannot be null"); + } + criteria.add(new Criterion(condition, value)); + } + + protected void addCriterion(String condition, Object value1, Object value2, String property) { + if (value1 == null || value2 == null) { + throw new RuntimeException("Between values for " + property + " cannot be null"); + } + criteria.add(new Criterion(condition, value1, value2)); + } + + public Criteria andIdIsNull() { + addCriterion("id is null"); + return (Criteria) this; + } + + public Criteria andIdIsNotNull() { + addCriterion("id is not null"); + return (Criteria) this; + } + + public Criteria andIdEqualTo(Long value) { + addCriterion("id =", value, "id"); + return (Criteria) this; + } + + public Criteria andIdNotEqualTo(Long value) { + addCriterion("id <>", value, "id"); + return (Criteria) this; + } + + public Criteria andIdGreaterThan(Long value) { + addCriterion("id >", value, "id"); + return (Criteria) this; + } + + public Criteria andIdGreaterThanOrEqualTo(Long value) { + addCriterion("id >=", value, "id"); + return (Criteria) this; + } + + public Criteria andIdLessThan(Long value) { + addCriterion("id <", value, "id"); + return (Criteria) this; + } + + public Criteria andIdLessThanOrEqualTo(Long value) { + addCriterion("id <=", value, "id"); + return (Criteria) this; + } + + public Criteria andIdIn(List values) { + addCriterion("id in", values, "id"); + return (Criteria) this; + } + + public Criteria andIdNotIn(List values) { + addCriterion("id not in", values, "id"); + return (Criteria) this; + } + + public Criteria andIdBetween(Long value1, Long value2) { + addCriterion("id between", value1, value2, "id"); + return (Criteria) this; + } + + public Criteria andIdNotBetween(Long value1, Long value2) { + addCriterion("id not between", value1, value2, "id"); + return (Criteria) this; + } + + public Criteria andUnameIsNull() { + addCriterion("UName is null"); + return (Criteria) this; + } + + public Criteria andUnameIsNotNull() { + addCriterion("UName is not null"); + return (Criteria) this; + } + + public Criteria andUnameEqualTo(String value) { + addCriterion("UName =", value, "uname"); + return (Criteria) this; + } + + public Criteria andUnameNotEqualTo(String value) { + addCriterion("UName <>", value, "uname"); + return (Criteria) this; + } + + public Criteria andUnameGreaterThan(String value) { + addCriterion("UName >", value, "uname"); + return (Criteria) this; + } + + public Criteria andUnameGreaterThanOrEqualTo(String value) { + addCriterion("UName >=", value, "uname"); + return (Criteria) this; + } + + public Criteria andUnameLessThan(String value) { + addCriterion("UName <", value, "uname"); + return (Criteria) this; + } + + public Criteria andUnameLessThanOrEqualTo(String value) { + addCriterion("UName <=", value, "uname"); + return (Criteria) this; + } + + public Criteria andUnameLike(String value) { + addCriterion("UName like", value, "uname"); + return (Criteria) this; + } + + public Criteria andUnameNotLike(String value) { + addCriterion("UName not like", value, "uname"); + return (Criteria) this; + } + + public Criteria andUnameIn(List values) { + addCriterion("UName in", values, "uname"); + return (Criteria) this; + } + + public Criteria andUnameNotIn(List values) { + addCriterion("UName not in", values, "uname"); + return (Criteria) this; + } + + public Criteria andUnameBetween(String value1, String value2) { + addCriterion("UName between", value1, value2, "uname"); + return (Criteria) this; + } + + public Criteria andUnameNotBetween(String value1, String value2) { + addCriterion("UName not between", value1, value2, "uname"); + return (Criteria) this; + } + } + + /** + * This class was generated by MyBatis Generator. + * This class corresponds to the database table jsh_unit + * + * @mbggenerated do_not_delete_during_merge + */ + public static class Criteria extends GeneratedCriteria { + + protected Criteria() { + super(); + } + } + + /** + * This class was generated by MyBatis Generator. + * This class corresponds to the database table jsh_unit + * + * @mbggenerated + */ + public static class Criterion { + private String condition; + + private Object value; + + private Object secondValue; + + private boolean noValue; + + private boolean singleValue; + + private boolean betweenValue; + + private boolean listValue; + + private String typeHandler; + + public String getCondition() { + return condition; + } + + public Object getValue() { + return value; + } + + public Object getSecondValue() { + return secondValue; + } + + public boolean isNoValue() { + return noValue; + } + + public boolean isSingleValue() { + return singleValue; + } + + public boolean isBetweenValue() { + return betweenValue; + } + + public boolean isListValue() { + return listValue; + } + + public String getTypeHandler() { + return typeHandler; + } + + protected Criterion(String condition) { + super(); + this.condition = condition; + this.typeHandler = null; + this.noValue = true; + } + + protected Criterion(String condition, Object value, String typeHandler) { + super(); + this.condition = condition; + this.value = value; + this.typeHandler = typeHandler; + if (value instanceof List) { + this.listValue = true; + } else { + this.singleValue = true; + } + } + + protected Criterion(String condition, Object value) { + this(condition, value, null); + } + + protected Criterion(String condition, Object value, Object secondValue, String typeHandler) { + super(); + this.condition = condition; + this.value = value; + this.secondValue = secondValue; + this.typeHandler = typeHandler; + this.betweenValue = true; + } + + protected Criterion(String condition, Object value, Object secondValue) { + this(condition, value, secondValue, null); + } + } +} \ No newline at end of file diff --git a/src/main/java/com/jsh/erp/datasource/entities/User.java b/src/main/java/com/jsh/erp/datasource/entities/User.java new file mode 100644 index 00000000..a283516b --- /dev/null +++ b/src/main/java/com/jsh/erp/datasource/entities/User.java @@ -0,0 +1,419 @@ +package com.jsh.erp.datasource.entities; + +public class User { + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database column jsh_user.id + * + * @mbggenerated + */ + private Long id; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database column jsh_user.username + * + * @mbggenerated + */ + private String username; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database column jsh_user.loginame + * + * @mbggenerated + */ + private String loginame; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database column jsh_user.password + * + * @mbggenerated + */ + private String password; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database column jsh_user.position + * + * @mbggenerated + */ + private String position; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database column jsh_user.department + * + * @mbggenerated + */ + private String department; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database column jsh_user.email + * + * @mbggenerated + */ + private String email; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database column jsh_user.phonenum + * + * @mbggenerated + */ + private String phonenum; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database column jsh_user.ismanager + * + * @mbggenerated + */ + private Byte ismanager; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database column jsh_user.isystem + * + * @mbggenerated + */ + private Byte isystem; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database column jsh_user.status + * + * @mbggenerated + */ + private Byte status; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database column jsh_user.description + * + * @mbggenerated + */ + private String description; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database column jsh_user.remark + * + * @mbggenerated + */ + private String remark; + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column jsh_user.id + * + * @return the value of jsh_user.id + * + * @mbggenerated + */ + public Long getId() { + return id; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column jsh_user.id + * + * @param id the value for jsh_user.id + * + * @mbggenerated + */ + public void setId(Long id) { + this.id = id; + } + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column jsh_user.username + * + * @return the value of jsh_user.username + * + * @mbggenerated + */ + public String getUsername() { + return username; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column jsh_user.username + * + * @param username the value for jsh_user.username + * + * @mbggenerated + */ + public void setUsername(String username) { + this.username = username == null ? null : username.trim(); + } + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column jsh_user.loginame + * + * @return the value of jsh_user.loginame + * + * @mbggenerated + */ + public String getLoginame() { + return loginame; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column jsh_user.loginame + * + * @param loginame the value for jsh_user.loginame + * + * @mbggenerated + */ + public void setLoginame(String loginame) { + this.loginame = loginame == null ? null : loginame.trim(); + } + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column jsh_user.password + * + * @return the value of jsh_user.password + * + * @mbggenerated + */ + public String getPassword() { + return password; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column jsh_user.password + * + * @param password the value for jsh_user.password + * + * @mbggenerated + */ + public void setPassword(String password) { + this.password = password == null ? null : password.trim(); + } + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column jsh_user.position + * + * @return the value of jsh_user.position + * + * @mbggenerated + */ + public String getPosition() { + return position; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column jsh_user.position + * + * @param position the value for jsh_user.position + * + * @mbggenerated + */ + public void setPosition(String position) { + this.position = position == null ? null : position.trim(); + } + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column jsh_user.department + * + * @return the value of jsh_user.department + * + * @mbggenerated + */ + public String getDepartment() { + return department; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column jsh_user.department + * + * @param department the value for jsh_user.department + * + * @mbggenerated + */ + public void setDepartment(String department) { + this.department = department == null ? null : department.trim(); + } + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column jsh_user.email + * + * @return the value of jsh_user.email + * + * @mbggenerated + */ + public String getEmail() { + return email; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column jsh_user.email + * + * @param email the value for jsh_user.email + * + * @mbggenerated + */ + public void setEmail(String email) { + this.email = email == null ? null : email.trim(); + } + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column jsh_user.phonenum + * + * @return the value of jsh_user.phonenum + * + * @mbggenerated + */ + public String getPhonenum() { + return phonenum; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column jsh_user.phonenum + * + * @param phonenum the value for jsh_user.phonenum + * + * @mbggenerated + */ + public void setPhonenum(String phonenum) { + this.phonenum = phonenum == null ? null : phonenum.trim(); + } + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column jsh_user.ismanager + * + * @return the value of jsh_user.ismanager + * + * @mbggenerated + */ + public Byte getIsmanager() { + return ismanager; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column jsh_user.ismanager + * + * @param ismanager the value for jsh_user.ismanager + * + * @mbggenerated + */ + public void setIsmanager(Byte ismanager) { + this.ismanager = ismanager; + } + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column jsh_user.isystem + * + * @return the value of jsh_user.isystem + * + * @mbggenerated + */ + public Byte getIsystem() { + return isystem; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column jsh_user.isystem + * + * @param isystem the value for jsh_user.isystem + * + * @mbggenerated + */ + public void setIsystem(Byte isystem) { + this.isystem = isystem; + } + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column jsh_user.status + * + * @return the value of jsh_user.status + * + * @mbggenerated + */ + public Byte getStatus() { + return status; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column jsh_user.status + * + * @param status the value for jsh_user.status + * + * @mbggenerated + */ + public void setStatus(Byte status) { + this.status = status; + } + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column jsh_user.description + * + * @return the value of jsh_user.description + * + * @mbggenerated + */ + public String getDescription() { + return description; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column jsh_user.description + * + * @param description the value for jsh_user.description + * + * @mbggenerated + */ + public void setDescription(String description) { + this.description = description == null ? null : description.trim(); + } + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column jsh_user.remark + * + * @return the value of jsh_user.remark + * + * @mbggenerated + */ + public String getRemark() { + return remark; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column jsh_user.remark + * + * @param remark the value for jsh_user.remark + * + * @mbggenerated + */ + public void setRemark(String remark) { + this.remark = remark == null ? null : remark.trim(); + } +} \ No newline at end of file diff --git a/src/main/java/com/jsh/erp/datasource/entities/UserBusiness.java b/src/main/java/com/jsh/erp/datasource/entities/UserBusiness.java new file mode 100644 index 00000000..efc031ee --- /dev/null +++ b/src/main/java/com/jsh/erp/datasource/entities/UserBusiness.java @@ -0,0 +1,163 @@ +package com.jsh.erp.datasource.entities; + +public class UserBusiness { + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database column jsh_userbusiness.Id + * + * @mbggenerated + */ + private Long id; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database column jsh_userbusiness.Type + * + * @mbggenerated + */ + private String type; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database column jsh_userbusiness.KeyId + * + * @mbggenerated + */ + private String keyid; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database column jsh_userbusiness.Value + * + * @mbggenerated + */ + private String value; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database column jsh_userbusiness.BtnStr + * + * @mbggenerated + */ + private String btnstr; + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column jsh_userbusiness.Id + * + * @return the value of jsh_userbusiness.Id + * + * @mbggenerated + */ + public Long getId() { + return id; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column jsh_userbusiness.Id + * + * @param id the value for jsh_userbusiness.Id + * + * @mbggenerated + */ + public void setId(Long id) { + this.id = id; + } + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column jsh_userbusiness.Type + * + * @return the value of jsh_userbusiness.Type + * + * @mbggenerated + */ + public String getType() { + return type; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column jsh_userbusiness.Type + * + * @param type the value for jsh_userbusiness.Type + * + * @mbggenerated + */ + public void setType(String type) { + this.type = type == null ? null : type.trim(); + } + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column jsh_userbusiness.KeyId + * + * @return the value of jsh_userbusiness.KeyId + * + * @mbggenerated + */ + public String getKeyid() { + return keyid; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column jsh_userbusiness.KeyId + * + * @param keyid the value for jsh_userbusiness.KeyId + * + * @mbggenerated + */ + public void setKeyid(String keyid) { + this.keyid = keyid == null ? null : keyid.trim(); + } + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column jsh_userbusiness.Value + * + * @return the value of jsh_userbusiness.Value + * + * @mbggenerated + */ + public String getValue() { + return value; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column jsh_userbusiness.Value + * + * @param value the value for jsh_userbusiness.Value + * + * @mbggenerated + */ + public void setValue(String value) { + this.value = value == null ? null : value.trim(); + } + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column jsh_userbusiness.BtnStr + * + * @return the value of jsh_userbusiness.BtnStr + * + * @mbggenerated + */ + public String getBtnstr() { + return btnstr; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column jsh_userbusiness.BtnStr + * + * @param btnstr the value for jsh_userbusiness.BtnStr + * + * @mbggenerated + */ + public void setBtnstr(String btnstr) { + this.btnstr = btnstr == null ? null : btnstr.trim(); + } +} \ No newline at end of file diff --git a/src/main/java/com/jsh/erp/datasource/entities/UserBusinessExample.java b/src/main/java/com/jsh/erp/datasource/entities/UserBusinessExample.java new file mode 100644 index 00000000..535b5251 --- /dev/null +++ b/src/main/java/com/jsh/erp/datasource/entities/UserBusinessExample.java @@ -0,0 +1,642 @@ +package com.jsh.erp.datasource.entities; + +import java.util.ArrayList; +import java.util.List; + +public class UserBusinessExample { + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database table jsh_userbusiness + * + * @mbggenerated + */ + protected String orderByClause; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database table jsh_userbusiness + * + * @mbggenerated + */ + protected boolean distinct; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database table jsh_userbusiness + * + * @mbggenerated + */ + protected List oredCriteria; + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_userbusiness + * + * @mbggenerated + */ + public UserBusinessExample() { + oredCriteria = new ArrayList(); + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_userbusiness + * + * @mbggenerated + */ + public void setOrderByClause(String orderByClause) { + this.orderByClause = orderByClause; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_userbusiness + * + * @mbggenerated + */ + public String getOrderByClause() { + return orderByClause; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_userbusiness + * + * @mbggenerated + */ + public void setDistinct(boolean distinct) { + this.distinct = distinct; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_userbusiness + * + * @mbggenerated + */ + public boolean isDistinct() { + return distinct; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_userbusiness + * + * @mbggenerated + */ + public List getOredCriteria() { + return oredCriteria; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_userbusiness + * + * @mbggenerated + */ + public void or(Criteria criteria) { + oredCriteria.add(criteria); + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_userbusiness + * + * @mbggenerated + */ + public Criteria or() { + Criteria criteria = createCriteriaInternal(); + oredCriteria.add(criteria); + return criteria; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_userbusiness + * + * @mbggenerated + */ + public Criteria createCriteria() { + Criteria criteria = createCriteriaInternal(); + if (oredCriteria.size() == 0) { + oredCriteria.add(criteria); + } + return criteria; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_userbusiness + * + * @mbggenerated + */ + protected Criteria createCriteriaInternal() { + Criteria criteria = new Criteria(); + return criteria; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_userbusiness + * + * @mbggenerated + */ + public void clear() { + oredCriteria.clear(); + orderByClause = null; + distinct = false; + } + + /** + * This class was generated by MyBatis Generator. + * This class corresponds to the database table jsh_userbusiness + * + * @mbggenerated + */ + protected abstract static class GeneratedCriteria { + protected List criteria; + + protected GeneratedCriteria() { + super(); + criteria = new ArrayList(); + } + + public boolean isValid() { + return criteria.size() > 0; + } + + public List getAllCriteria() { + return criteria; + } + + public List getCriteria() { + return criteria; + } + + protected void addCriterion(String condition) { + if (condition == null) { + throw new RuntimeException("Value for condition cannot be null"); + } + criteria.add(new Criterion(condition)); + } + + protected void addCriterion(String condition, Object value, String property) { + if (value == null) { + throw new RuntimeException("Value for " + property + " cannot be null"); + } + criteria.add(new Criterion(condition, value)); + } + + protected void addCriterion(String condition, Object value1, Object value2, String property) { + if (value1 == null || value2 == null) { + throw new RuntimeException("Between values for " + property + " cannot be null"); + } + criteria.add(new Criterion(condition, value1, value2)); + } + + public Criteria andIdIsNull() { + addCriterion("Id is null"); + return (Criteria) this; + } + + public Criteria andIdIsNotNull() { + addCriterion("Id is not null"); + return (Criteria) this; + } + + public Criteria andIdEqualTo(Long value) { + addCriterion("Id =", value, "id"); + return (Criteria) this; + } + + public Criteria andIdNotEqualTo(Long value) { + addCriterion("Id <>", value, "id"); + return (Criteria) this; + } + + public Criteria andIdGreaterThan(Long value) { + addCriterion("Id >", value, "id"); + return (Criteria) this; + } + + public Criteria andIdGreaterThanOrEqualTo(Long value) { + addCriterion("Id >=", value, "id"); + return (Criteria) this; + } + + public Criteria andIdLessThan(Long value) { + addCriterion("Id <", value, "id"); + return (Criteria) this; + } + + public Criteria andIdLessThanOrEqualTo(Long value) { + addCriterion("Id <=", value, "id"); + return (Criteria) this; + } + + public Criteria andIdIn(List values) { + addCriterion("Id in", values, "id"); + return (Criteria) this; + } + + public Criteria andIdNotIn(List values) { + addCriterion("Id not in", values, "id"); + return (Criteria) this; + } + + public Criteria andIdBetween(Long value1, Long value2) { + addCriterion("Id between", value1, value2, "id"); + return (Criteria) this; + } + + public Criteria andIdNotBetween(Long value1, Long value2) { + addCriterion("Id not between", value1, value2, "id"); + return (Criteria) this; + } + + public Criteria andTypeIsNull() { + addCriterion("Type is null"); + return (Criteria) this; + } + + public Criteria andTypeIsNotNull() { + addCriterion("Type is not null"); + return (Criteria) this; + } + + public Criteria andTypeEqualTo(String value) { + addCriterion("Type =", value, "type"); + return (Criteria) this; + } + + public Criteria andTypeNotEqualTo(String value) { + addCriterion("Type <>", value, "type"); + return (Criteria) this; + } + + public Criteria andTypeGreaterThan(String value) { + addCriterion("Type >", value, "type"); + return (Criteria) this; + } + + public Criteria andTypeGreaterThanOrEqualTo(String value) { + addCriterion("Type >=", value, "type"); + return (Criteria) this; + } + + public Criteria andTypeLessThan(String value) { + addCriterion("Type <", value, "type"); + return (Criteria) this; + } + + public Criteria andTypeLessThanOrEqualTo(String value) { + addCriterion("Type <=", value, "type"); + return (Criteria) this; + } + + public Criteria andTypeLike(String value) { + addCriterion("Type like", value, "type"); + return (Criteria) this; + } + + public Criteria andTypeNotLike(String value) { + addCriterion("Type not like", value, "type"); + return (Criteria) this; + } + + public Criteria andTypeIn(List values) { + addCriterion("Type in", values, "type"); + return (Criteria) this; + } + + public Criteria andTypeNotIn(List values) { + addCriterion("Type not in", values, "type"); + return (Criteria) this; + } + + public Criteria andTypeBetween(String value1, String value2) { + addCriterion("Type between", value1, value2, "type"); + return (Criteria) this; + } + + public Criteria andTypeNotBetween(String value1, String value2) { + addCriterion("Type not between", value1, value2, "type"); + return (Criteria) this; + } + + public Criteria andKeyidIsNull() { + addCriterion("KeyId is null"); + return (Criteria) this; + } + + public Criteria andKeyidIsNotNull() { + addCriterion("KeyId is not null"); + return (Criteria) this; + } + + public Criteria andKeyidEqualTo(String value) { + addCriterion("KeyId =", value, "keyid"); + return (Criteria) this; + } + + public Criteria andKeyidNotEqualTo(String value) { + addCriterion("KeyId <>", value, "keyid"); + return (Criteria) this; + } + + public Criteria andKeyidGreaterThan(String value) { + addCriterion("KeyId >", value, "keyid"); + return (Criteria) this; + } + + public Criteria andKeyidGreaterThanOrEqualTo(String value) { + addCriterion("KeyId >=", value, "keyid"); + return (Criteria) this; + } + + public Criteria andKeyidLessThan(String value) { + addCriterion("KeyId <", value, "keyid"); + return (Criteria) this; + } + + public Criteria andKeyidLessThanOrEqualTo(String value) { + addCriterion("KeyId <=", value, "keyid"); + return (Criteria) this; + } + + public Criteria andKeyidLike(String value) { + addCriterion("KeyId like", value, "keyid"); + return (Criteria) this; + } + + public Criteria andKeyidNotLike(String value) { + addCriterion("KeyId not like", value, "keyid"); + return (Criteria) this; + } + + public Criteria andKeyidIn(List values) { + addCriterion("KeyId in", values, "keyid"); + return (Criteria) this; + } + + public Criteria andKeyidNotIn(List values) { + addCriterion("KeyId not in", values, "keyid"); + return (Criteria) this; + } + + public Criteria andKeyidBetween(String value1, String value2) { + addCriterion("KeyId between", value1, value2, "keyid"); + return (Criteria) this; + } + + public Criteria andKeyidNotBetween(String value1, String value2) { + addCriterion("KeyId not between", value1, value2, "keyid"); + return (Criteria) this; + } + + public Criteria andValueIsNull() { + addCriterion("Value is null"); + return (Criteria) this; + } + + public Criteria andValueIsNotNull() { + addCriterion("Value is not null"); + return (Criteria) this; + } + + public Criteria andValueEqualTo(String value) { + addCriterion("Value =", value, "value"); + return (Criteria) this; + } + + public Criteria andValueNotEqualTo(String value) { + addCriterion("Value <>", value, "value"); + return (Criteria) this; + } + + public Criteria andValueGreaterThan(String value) { + addCriterion("Value >", value, "value"); + return (Criteria) this; + } + + public Criteria andValueGreaterThanOrEqualTo(String value) { + addCriterion("Value >=", value, "value"); + return (Criteria) this; + } + + public Criteria andValueLessThan(String value) { + addCriterion("Value <", value, "value"); + return (Criteria) this; + } + + public Criteria andValueLessThanOrEqualTo(String value) { + addCriterion("Value <=", value, "value"); + return (Criteria) this; + } + + public Criteria andValueLike(String value) { + addCriterion("Value like", value, "value"); + return (Criteria) this; + } + + public Criteria andValueNotLike(String value) { + addCriterion("Value not like", value, "value"); + return (Criteria) this; + } + + public Criteria andValueIn(List values) { + addCriterion("Value in", values, "value"); + return (Criteria) this; + } + + public Criteria andValueNotIn(List values) { + addCriterion("Value not in", values, "value"); + return (Criteria) this; + } + + public Criteria andValueBetween(String value1, String value2) { + addCriterion("Value between", value1, value2, "value"); + return (Criteria) this; + } + + public Criteria andValueNotBetween(String value1, String value2) { + addCriterion("Value not between", value1, value2, "value"); + return (Criteria) this; + } + + public Criteria andBtnstrIsNull() { + addCriterion("BtnStr is null"); + return (Criteria) this; + } + + public Criteria andBtnstrIsNotNull() { + addCriterion("BtnStr is not null"); + return (Criteria) this; + } + + public Criteria andBtnstrEqualTo(String value) { + addCriterion("BtnStr =", value, "btnstr"); + return (Criteria) this; + } + + public Criteria andBtnstrNotEqualTo(String value) { + addCriterion("BtnStr <>", value, "btnstr"); + return (Criteria) this; + } + + public Criteria andBtnstrGreaterThan(String value) { + addCriterion("BtnStr >", value, "btnstr"); + return (Criteria) this; + } + + public Criteria andBtnstrGreaterThanOrEqualTo(String value) { + addCriterion("BtnStr >=", value, "btnstr"); + return (Criteria) this; + } + + public Criteria andBtnstrLessThan(String value) { + addCriterion("BtnStr <", value, "btnstr"); + return (Criteria) this; + } + + public Criteria andBtnstrLessThanOrEqualTo(String value) { + addCriterion("BtnStr <=", value, "btnstr"); + return (Criteria) this; + } + + public Criteria andBtnstrLike(String value) { + addCriterion("BtnStr like", value, "btnstr"); + return (Criteria) this; + } + + public Criteria andBtnstrNotLike(String value) { + addCriterion("BtnStr not like", value, "btnstr"); + return (Criteria) this; + } + + public Criteria andBtnstrIn(List values) { + addCriterion("BtnStr in", values, "btnstr"); + return (Criteria) this; + } + + public Criteria andBtnstrNotIn(List values) { + addCriterion("BtnStr not in", values, "btnstr"); + return (Criteria) this; + } + + public Criteria andBtnstrBetween(String value1, String value2) { + addCriterion("BtnStr between", value1, value2, "btnstr"); + return (Criteria) this; + } + + public Criteria andBtnstrNotBetween(String value1, String value2) { + addCriterion("BtnStr not between", value1, value2, "btnstr"); + return (Criteria) this; + } + } + + /** + * This class was generated by MyBatis Generator. + * This class corresponds to the database table jsh_userbusiness + * + * @mbggenerated do_not_delete_during_merge + */ + public static class Criteria extends GeneratedCriteria { + + protected Criteria() { + super(); + } + } + + /** + * This class was generated by MyBatis Generator. + * This class corresponds to the database table jsh_userbusiness + * + * @mbggenerated + */ + public static class Criterion { + private String condition; + + private Object value; + + private Object secondValue; + + private boolean noValue; + + private boolean singleValue; + + private boolean betweenValue; + + private boolean listValue; + + private String typeHandler; + + public String getCondition() { + return condition; + } + + public Object getValue() { + return value; + } + + public Object getSecondValue() { + return secondValue; + } + + public boolean isNoValue() { + return noValue; + } + + public boolean isSingleValue() { + return singleValue; + } + + public boolean isBetweenValue() { + return betweenValue; + } + + public boolean isListValue() { + return listValue; + } + + public String getTypeHandler() { + return typeHandler; + } + + protected Criterion(String condition) { + super(); + this.condition = condition; + this.typeHandler = null; + this.noValue = true; + } + + protected Criterion(String condition, Object value, String typeHandler) { + super(); + this.condition = condition; + this.value = value; + this.typeHandler = typeHandler; + if (value instanceof List) { + this.listValue = true; + } else { + this.singleValue = true; + } + } + + protected Criterion(String condition, Object value) { + this(condition, value, null); + } + + protected Criterion(String condition, Object value, Object secondValue, String typeHandler) { + super(); + this.condition = condition; + this.value = value; + this.secondValue = secondValue; + this.typeHandler = typeHandler; + this.betweenValue = true; + } + + protected Criterion(String condition, Object value, Object secondValue) { + this(condition, value, secondValue, null); + } + } +} \ No newline at end of file diff --git a/src/main/java/com/jsh/erp/datasource/entities/UserExample.java b/src/main/java/com/jsh/erp/datasource/entities/UserExample.java new file mode 100644 index 00000000..e4412b6a --- /dev/null +++ b/src/main/java/com/jsh/erp/datasource/entities/UserExample.java @@ -0,0 +1,1172 @@ +package com.jsh.erp.datasource.entities; + +import java.util.ArrayList; +import java.util.List; + +public class UserExample { + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database table jsh_user + * + * @mbggenerated + */ + protected String orderByClause; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database table jsh_user + * + * @mbggenerated + */ + protected boolean distinct; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database table jsh_user + * + * @mbggenerated + */ + protected List oredCriteria; + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_user + * + * @mbggenerated + */ + public UserExample() { + oredCriteria = new ArrayList(); + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_user + * + * @mbggenerated + */ + public void setOrderByClause(String orderByClause) { + this.orderByClause = orderByClause; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_user + * + * @mbggenerated + */ + public String getOrderByClause() { + return orderByClause; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_user + * + * @mbggenerated + */ + public void setDistinct(boolean distinct) { + this.distinct = distinct; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_user + * + * @mbggenerated + */ + public boolean isDistinct() { + return distinct; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_user + * + * @mbggenerated + */ + public List getOredCriteria() { + return oredCriteria; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_user + * + * @mbggenerated + */ + public void or(Criteria criteria) { + oredCriteria.add(criteria); + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_user + * + * @mbggenerated + */ + public Criteria or() { + Criteria criteria = createCriteriaInternal(); + oredCriteria.add(criteria); + return criteria; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_user + * + * @mbggenerated + */ + public Criteria createCriteria() { + Criteria criteria = createCriteriaInternal(); + if (oredCriteria.size() == 0) { + oredCriteria.add(criteria); + } + return criteria; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_user + * + * @mbggenerated + */ + protected Criteria createCriteriaInternal() { + Criteria criteria = new Criteria(); + return criteria; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_user + * + * @mbggenerated + */ + public void clear() { + oredCriteria.clear(); + orderByClause = null; + distinct = false; + } + + /** + * This class was generated by MyBatis Generator. + * This class corresponds to the database table jsh_user + * + * @mbggenerated + */ + protected abstract static class GeneratedCriteria { + protected List criteria; + + protected GeneratedCriteria() { + super(); + criteria = new ArrayList(); + } + + public boolean isValid() { + return criteria.size() > 0; + } + + public List getAllCriteria() { + return criteria; + } + + public List getCriteria() { + return criteria; + } + + protected void addCriterion(String condition) { + if (condition == null) { + throw new RuntimeException("Value for condition cannot be null"); + } + criteria.add(new Criterion(condition)); + } + + protected void addCriterion(String condition, Object value, String property) { + if (value == null) { + throw new RuntimeException("Value for " + property + " cannot be null"); + } + criteria.add(new Criterion(condition, value)); + } + + protected void addCriterion(String condition, Object value1, Object value2, String property) { + if (value1 == null || value2 == null) { + throw new RuntimeException("Between values for " + property + " cannot be null"); + } + criteria.add(new Criterion(condition, value1, value2)); + } + + public Criteria andIdIsNull() { + addCriterion("id is null"); + return (Criteria) this; + } + + public Criteria andIdIsNotNull() { + addCriterion("id is not null"); + return (Criteria) this; + } + + public Criteria andIdEqualTo(Long value) { + addCriterion("id =", value, "id"); + return (Criteria) this; + } + + public Criteria andIdNotEqualTo(Long value) { + addCriterion("id <>", value, "id"); + return (Criteria) this; + } + + public Criteria andIdGreaterThan(Long value) { + addCriterion("id >", value, "id"); + return (Criteria) this; + } + + public Criteria andIdGreaterThanOrEqualTo(Long value) { + addCriterion("id >=", value, "id"); + return (Criteria) this; + } + + public Criteria andIdLessThan(Long value) { + addCriterion("id <", value, "id"); + return (Criteria) this; + } + + public Criteria andIdLessThanOrEqualTo(Long value) { + addCriterion("id <=", value, "id"); + return (Criteria) this; + } + + public Criteria andIdIn(List values) { + addCriterion("id in", values, "id"); + return (Criteria) this; + } + + public Criteria andIdNotIn(List values) { + addCriterion("id not in", values, "id"); + return (Criteria) this; + } + + public Criteria andIdBetween(Long value1, Long value2) { + addCriterion("id between", value1, value2, "id"); + return (Criteria) this; + } + + public Criteria andIdNotBetween(Long value1, Long value2) { + addCriterion("id not between", value1, value2, "id"); + return (Criteria) this; + } + + public Criteria andUsernameIsNull() { + addCriterion("username is null"); + return (Criteria) this; + } + + public Criteria andUsernameIsNotNull() { + addCriterion("username is not null"); + return (Criteria) this; + } + + public Criteria andUsernameEqualTo(String value) { + addCriterion("username =", value, "username"); + return (Criteria) this; + } + + public Criteria andUsernameNotEqualTo(String value) { + addCriterion("username <>", value, "username"); + return (Criteria) this; + } + + public Criteria andUsernameGreaterThan(String value) { + addCriterion("username >", value, "username"); + return (Criteria) this; + } + + public Criteria andUsernameGreaterThanOrEqualTo(String value) { + addCriterion("username >=", value, "username"); + return (Criteria) this; + } + + public Criteria andUsernameLessThan(String value) { + addCriterion("username <", value, "username"); + return (Criteria) this; + } + + public Criteria andUsernameLessThanOrEqualTo(String value) { + addCriterion("username <=", value, "username"); + return (Criteria) this; + } + + public Criteria andUsernameLike(String value) { + addCriterion("username like", value, "username"); + return (Criteria) this; + } + + public Criteria andUsernameNotLike(String value) { + addCriterion("username not like", value, "username"); + return (Criteria) this; + } + + public Criteria andUsernameIn(List values) { + addCriterion("username in", values, "username"); + return (Criteria) this; + } + + public Criteria andUsernameNotIn(List values) { + addCriterion("username not in", values, "username"); + return (Criteria) this; + } + + public Criteria andUsernameBetween(String value1, String value2) { + addCriterion("username between", value1, value2, "username"); + return (Criteria) this; + } + + public Criteria andUsernameNotBetween(String value1, String value2) { + addCriterion("username not between", value1, value2, "username"); + return (Criteria) this; + } + + public Criteria andLoginameIsNull() { + addCriterion("loginame is null"); + return (Criteria) this; + } + + public Criteria andLoginameIsNotNull() { + addCriterion("loginame is not null"); + return (Criteria) this; + } + + public Criteria andLoginameEqualTo(String value) { + addCriterion("loginame =", value, "loginame"); + return (Criteria) this; + } + + public Criteria andLoginameNotEqualTo(String value) { + addCriterion("loginame <>", value, "loginame"); + return (Criteria) this; + } + + public Criteria andLoginameGreaterThan(String value) { + addCriterion("loginame >", value, "loginame"); + return (Criteria) this; + } + + public Criteria andLoginameGreaterThanOrEqualTo(String value) { + addCriterion("loginame >=", value, "loginame"); + return (Criteria) this; + } + + public Criteria andLoginameLessThan(String value) { + addCriterion("loginame <", value, "loginame"); + return (Criteria) this; + } + + public Criteria andLoginameLessThanOrEqualTo(String value) { + addCriterion("loginame <=", value, "loginame"); + return (Criteria) this; + } + + public Criteria andLoginameLike(String value) { + addCriterion("loginame like", value, "loginame"); + return (Criteria) this; + } + + public Criteria andLoginameNotLike(String value) { + addCriterion("loginame not like", value, "loginame"); + return (Criteria) this; + } + + public Criteria andLoginameIn(List values) { + addCriterion("loginame in", values, "loginame"); + return (Criteria) this; + } + + public Criteria andLoginameNotIn(List values) { + addCriterion("loginame not in", values, "loginame"); + return (Criteria) this; + } + + public Criteria andLoginameBetween(String value1, String value2) { + addCriterion("loginame between", value1, value2, "loginame"); + return (Criteria) this; + } + + public Criteria andLoginameNotBetween(String value1, String value2) { + addCriterion("loginame not between", value1, value2, "loginame"); + return (Criteria) this; + } + + public Criteria andPasswordIsNull() { + addCriterion("password is null"); + return (Criteria) this; + } + + public Criteria andPasswordIsNotNull() { + addCriterion("password is not null"); + return (Criteria) this; + } + + public Criteria andPasswordEqualTo(String value) { + addCriterion("password =", value, "password"); + return (Criteria) this; + } + + public Criteria andPasswordNotEqualTo(String value) { + addCriterion("password <>", value, "password"); + return (Criteria) this; + } + + public Criteria andPasswordGreaterThan(String value) { + addCriterion("password >", value, "password"); + return (Criteria) this; + } + + public Criteria andPasswordGreaterThanOrEqualTo(String value) { + addCriterion("password >=", value, "password"); + return (Criteria) this; + } + + public Criteria andPasswordLessThan(String value) { + addCriterion("password <", value, "password"); + return (Criteria) this; + } + + public Criteria andPasswordLessThanOrEqualTo(String value) { + addCriterion("password <=", value, "password"); + return (Criteria) this; + } + + public Criteria andPasswordLike(String value) { + addCriterion("password like", value, "password"); + return (Criteria) this; + } + + public Criteria andPasswordNotLike(String value) { + addCriterion("password not like", value, "password"); + return (Criteria) this; + } + + public Criteria andPasswordIn(List values) { + addCriterion("password in", values, "password"); + return (Criteria) this; + } + + public Criteria andPasswordNotIn(List values) { + addCriterion("password not in", values, "password"); + return (Criteria) this; + } + + public Criteria andPasswordBetween(String value1, String value2) { + addCriterion("password between", value1, value2, "password"); + return (Criteria) this; + } + + public Criteria andPasswordNotBetween(String value1, String value2) { + addCriterion("password not between", value1, value2, "password"); + return (Criteria) this; + } + + public Criteria andPositionIsNull() { + addCriterion("position is null"); + return (Criteria) this; + } + + public Criteria andPositionIsNotNull() { + addCriterion("position is not null"); + return (Criteria) this; + } + + public Criteria andPositionEqualTo(String value) { + addCriterion("position =", value, "position"); + return (Criteria) this; + } + + public Criteria andPositionNotEqualTo(String value) { + addCriterion("position <>", value, "position"); + return (Criteria) this; + } + + public Criteria andPositionGreaterThan(String value) { + addCriterion("position >", value, "position"); + return (Criteria) this; + } + + public Criteria andPositionGreaterThanOrEqualTo(String value) { + addCriterion("position >=", value, "position"); + return (Criteria) this; + } + + public Criteria andPositionLessThan(String value) { + addCriterion("position <", value, "position"); + return (Criteria) this; + } + + public Criteria andPositionLessThanOrEqualTo(String value) { + addCriterion("position <=", value, "position"); + return (Criteria) this; + } + + public Criteria andPositionLike(String value) { + addCriterion("position like", value, "position"); + return (Criteria) this; + } + + public Criteria andPositionNotLike(String value) { + addCriterion("position not like", value, "position"); + return (Criteria) this; + } + + public Criteria andPositionIn(List values) { + addCriterion("position in", values, "position"); + return (Criteria) this; + } + + public Criteria andPositionNotIn(List values) { + addCriterion("position not in", values, "position"); + return (Criteria) this; + } + + public Criteria andPositionBetween(String value1, String value2) { + addCriterion("position between", value1, value2, "position"); + return (Criteria) this; + } + + public Criteria andPositionNotBetween(String value1, String value2) { + addCriterion("position not between", value1, value2, "position"); + return (Criteria) this; + } + + public Criteria andDepartmentIsNull() { + addCriterion("department is null"); + return (Criteria) this; + } + + public Criteria andDepartmentIsNotNull() { + addCriterion("department is not null"); + return (Criteria) this; + } + + public Criteria andDepartmentEqualTo(String value) { + addCriterion("department =", value, "department"); + return (Criteria) this; + } + + public Criteria andDepartmentNotEqualTo(String value) { + addCriterion("department <>", value, "department"); + return (Criteria) this; + } + + public Criteria andDepartmentGreaterThan(String value) { + addCriterion("department >", value, "department"); + return (Criteria) this; + } + + public Criteria andDepartmentGreaterThanOrEqualTo(String value) { + addCriterion("department >=", value, "department"); + return (Criteria) this; + } + + public Criteria andDepartmentLessThan(String value) { + addCriterion("department <", value, "department"); + return (Criteria) this; + } + + public Criteria andDepartmentLessThanOrEqualTo(String value) { + addCriterion("department <=", value, "department"); + return (Criteria) this; + } + + public Criteria andDepartmentLike(String value) { + addCriterion("department like", value, "department"); + return (Criteria) this; + } + + public Criteria andDepartmentNotLike(String value) { + addCriterion("department not like", value, "department"); + return (Criteria) this; + } + + public Criteria andDepartmentIn(List values) { + addCriterion("department in", values, "department"); + return (Criteria) this; + } + + public Criteria andDepartmentNotIn(List values) { + addCriterion("department not in", values, "department"); + return (Criteria) this; + } + + public Criteria andDepartmentBetween(String value1, String value2) { + addCriterion("department between", value1, value2, "department"); + return (Criteria) this; + } + + public Criteria andDepartmentNotBetween(String value1, String value2) { + addCriterion("department not between", value1, value2, "department"); + return (Criteria) this; + } + + public Criteria andEmailIsNull() { + addCriterion("email is null"); + return (Criteria) this; + } + + public Criteria andEmailIsNotNull() { + addCriterion("email is not null"); + return (Criteria) this; + } + + public Criteria andEmailEqualTo(String value) { + addCriterion("email =", value, "email"); + return (Criteria) this; + } + + public Criteria andEmailNotEqualTo(String value) { + addCriterion("email <>", value, "email"); + return (Criteria) this; + } + + public Criteria andEmailGreaterThan(String value) { + addCriterion("email >", value, "email"); + return (Criteria) this; + } + + public Criteria andEmailGreaterThanOrEqualTo(String value) { + addCriterion("email >=", value, "email"); + return (Criteria) this; + } + + public Criteria andEmailLessThan(String value) { + addCriterion("email <", value, "email"); + return (Criteria) this; + } + + public Criteria andEmailLessThanOrEqualTo(String value) { + addCriterion("email <=", value, "email"); + return (Criteria) this; + } + + public Criteria andEmailLike(String value) { + addCriterion("email like", value, "email"); + return (Criteria) this; + } + + public Criteria andEmailNotLike(String value) { + addCriterion("email not like", value, "email"); + return (Criteria) this; + } + + public Criteria andEmailIn(List values) { + addCriterion("email in", values, "email"); + return (Criteria) this; + } + + public Criteria andEmailNotIn(List values) { + addCriterion("email not in", values, "email"); + return (Criteria) this; + } + + public Criteria andEmailBetween(String value1, String value2) { + addCriterion("email between", value1, value2, "email"); + return (Criteria) this; + } + + public Criteria andEmailNotBetween(String value1, String value2) { + addCriterion("email not between", value1, value2, "email"); + return (Criteria) this; + } + + public Criteria andPhonenumIsNull() { + addCriterion("phonenum is null"); + return (Criteria) this; + } + + public Criteria andPhonenumIsNotNull() { + addCriterion("phonenum is not null"); + return (Criteria) this; + } + + public Criteria andPhonenumEqualTo(String value) { + addCriterion("phonenum =", value, "phonenum"); + return (Criteria) this; + } + + public Criteria andPhonenumNotEqualTo(String value) { + addCriterion("phonenum <>", value, "phonenum"); + return (Criteria) this; + } + + public Criteria andPhonenumGreaterThan(String value) { + addCriterion("phonenum >", value, "phonenum"); + return (Criteria) this; + } + + public Criteria andPhonenumGreaterThanOrEqualTo(String value) { + addCriterion("phonenum >=", value, "phonenum"); + return (Criteria) this; + } + + public Criteria andPhonenumLessThan(String value) { + addCriterion("phonenum <", value, "phonenum"); + return (Criteria) this; + } + + public Criteria andPhonenumLessThanOrEqualTo(String value) { + addCriterion("phonenum <=", value, "phonenum"); + return (Criteria) this; + } + + public Criteria andPhonenumLike(String value) { + addCriterion("phonenum like", value, "phonenum"); + return (Criteria) this; + } + + public Criteria andPhonenumNotLike(String value) { + addCriterion("phonenum not like", value, "phonenum"); + return (Criteria) this; + } + + public Criteria andPhonenumIn(List values) { + addCriterion("phonenum in", values, "phonenum"); + return (Criteria) this; + } + + public Criteria andPhonenumNotIn(List values) { + addCriterion("phonenum not in", values, "phonenum"); + return (Criteria) this; + } + + public Criteria andPhonenumBetween(String value1, String value2) { + addCriterion("phonenum between", value1, value2, "phonenum"); + return (Criteria) this; + } + + public Criteria andPhonenumNotBetween(String value1, String value2) { + addCriterion("phonenum not between", value1, value2, "phonenum"); + return (Criteria) this; + } + + public Criteria andIsmanagerIsNull() { + addCriterion("ismanager is null"); + return (Criteria) this; + } + + public Criteria andIsmanagerIsNotNull() { + addCriterion("ismanager is not null"); + return (Criteria) this; + } + + public Criteria andIsmanagerEqualTo(Byte value) { + addCriterion("ismanager =", value, "ismanager"); + return (Criteria) this; + } + + public Criteria andIsmanagerNotEqualTo(Byte value) { + addCriterion("ismanager <>", value, "ismanager"); + return (Criteria) this; + } + + public Criteria andIsmanagerGreaterThan(Byte value) { + addCriterion("ismanager >", value, "ismanager"); + return (Criteria) this; + } + + public Criteria andIsmanagerGreaterThanOrEqualTo(Byte value) { + addCriterion("ismanager >=", value, "ismanager"); + return (Criteria) this; + } + + public Criteria andIsmanagerLessThan(Byte value) { + addCriterion("ismanager <", value, "ismanager"); + return (Criteria) this; + } + + public Criteria andIsmanagerLessThanOrEqualTo(Byte value) { + addCriterion("ismanager <=", value, "ismanager"); + return (Criteria) this; + } + + public Criteria andIsmanagerIn(List values) { + addCriterion("ismanager in", values, "ismanager"); + return (Criteria) this; + } + + public Criteria andIsmanagerNotIn(List values) { + addCriterion("ismanager not in", values, "ismanager"); + return (Criteria) this; + } + + public Criteria andIsmanagerBetween(Byte value1, Byte value2) { + addCriterion("ismanager between", value1, value2, "ismanager"); + return (Criteria) this; + } + + public Criteria andIsmanagerNotBetween(Byte value1, Byte value2) { + addCriterion("ismanager not between", value1, value2, "ismanager"); + return (Criteria) this; + } + + public Criteria andIsystemIsNull() { + addCriterion("isystem is null"); + return (Criteria) this; + } + + public Criteria andIsystemIsNotNull() { + addCriterion("isystem is not null"); + return (Criteria) this; + } + + public Criteria andIsystemEqualTo(Byte value) { + addCriterion("isystem =", value, "isystem"); + return (Criteria) this; + } + + public Criteria andIsystemNotEqualTo(Byte value) { + addCriterion("isystem <>", value, "isystem"); + return (Criteria) this; + } + + public Criteria andIsystemGreaterThan(Byte value) { + addCriterion("isystem >", value, "isystem"); + return (Criteria) this; + } + + public Criteria andIsystemGreaterThanOrEqualTo(Byte value) { + addCriterion("isystem >=", value, "isystem"); + return (Criteria) this; + } + + public Criteria andIsystemLessThan(Byte value) { + addCriterion("isystem <", value, "isystem"); + return (Criteria) this; + } + + public Criteria andIsystemLessThanOrEqualTo(Byte value) { + addCriterion("isystem <=", value, "isystem"); + return (Criteria) this; + } + + public Criteria andIsystemIn(List values) { + addCriterion("isystem in", values, "isystem"); + return (Criteria) this; + } + + public Criteria andIsystemNotIn(List values) { + addCriterion("isystem not in", values, "isystem"); + return (Criteria) this; + } + + public Criteria andIsystemBetween(Byte value1, Byte value2) { + addCriterion("isystem between", value1, value2, "isystem"); + return (Criteria) this; + } + + public Criteria andIsystemNotBetween(Byte value1, Byte value2) { + addCriterion("isystem not between", value1, value2, "isystem"); + return (Criteria) this; + } + + public Criteria andStatusIsNull() { + addCriterion("status is null"); + return (Criteria) this; + } + + public Criteria andStatusIsNotNull() { + addCriterion("status is not null"); + return (Criteria) this; + } + + public Criteria andStatusEqualTo(Byte value) { + addCriterion("status =", value, "status"); + return (Criteria) this; + } + + public Criteria andStatusNotEqualTo(Byte value) { + addCriterion("status <>", value, "status"); + return (Criteria) this; + } + + public Criteria andStatusGreaterThan(Byte value) { + addCriterion("status >", value, "status"); + return (Criteria) this; + } + + public Criteria andStatusGreaterThanOrEqualTo(Byte value) { + addCriterion("status >=", value, "status"); + return (Criteria) this; + } + + public Criteria andStatusLessThan(Byte value) { + addCriterion("status <", value, "status"); + return (Criteria) this; + } + + public Criteria andStatusLessThanOrEqualTo(Byte value) { + addCriterion("status <=", value, "status"); + return (Criteria) this; + } + + public Criteria andStatusIn(List values) { + addCriterion("status in", values, "status"); + return (Criteria) this; + } + + public Criteria andStatusNotIn(List values) { + addCriterion("status not in", values, "status"); + return (Criteria) this; + } + + public Criteria andStatusBetween(Byte value1, Byte value2) { + addCriterion("status between", value1, value2, "status"); + return (Criteria) this; + } + + public Criteria andStatusNotBetween(Byte value1, Byte value2) { + addCriterion("status not between", value1, value2, "status"); + return (Criteria) this; + } + + public Criteria andDescriptionIsNull() { + addCriterion("description is null"); + return (Criteria) this; + } + + public Criteria andDescriptionIsNotNull() { + addCriterion("description is not null"); + return (Criteria) this; + } + + public Criteria andDescriptionEqualTo(String value) { + addCriterion("description =", value, "description"); + return (Criteria) this; + } + + public Criteria andDescriptionNotEqualTo(String value) { + addCriterion("description <>", value, "description"); + return (Criteria) this; + } + + public Criteria andDescriptionGreaterThan(String value) { + addCriterion("description >", value, "description"); + return (Criteria) this; + } + + public Criteria andDescriptionGreaterThanOrEqualTo(String value) { + addCriterion("description >=", value, "description"); + return (Criteria) this; + } + + public Criteria andDescriptionLessThan(String value) { + addCriterion("description <", value, "description"); + return (Criteria) this; + } + + public Criteria andDescriptionLessThanOrEqualTo(String value) { + addCriterion("description <=", value, "description"); + return (Criteria) this; + } + + public Criteria andDescriptionLike(String value) { + addCriterion("description like", value, "description"); + return (Criteria) this; + } + + public Criteria andDescriptionNotLike(String value) { + addCriterion("description not like", value, "description"); + return (Criteria) this; + } + + public Criteria andDescriptionIn(List values) { + addCriterion("description in", values, "description"); + return (Criteria) this; + } + + public Criteria andDescriptionNotIn(List values) { + addCriterion("description not in", values, "description"); + return (Criteria) this; + } + + public Criteria andDescriptionBetween(String value1, String value2) { + addCriterion("description between", value1, value2, "description"); + return (Criteria) this; + } + + public Criteria andDescriptionNotBetween(String value1, String value2) { + addCriterion("description not between", value1, value2, "description"); + return (Criteria) this; + } + + public Criteria andRemarkIsNull() { + addCriterion("remark is null"); + return (Criteria) this; + } + + public Criteria andRemarkIsNotNull() { + addCriterion("remark is not null"); + return (Criteria) this; + } + + public Criteria andRemarkEqualTo(String value) { + addCriterion("remark =", value, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkNotEqualTo(String value) { + addCriterion("remark <>", value, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkGreaterThan(String value) { + addCriterion("remark >", value, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkGreaterThanOrEqualTo(String value) { + addCriterion("remark >=", value, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkLessThan(String value) { + addCriterion("remark <", value, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkLessThanOrEqualTo(String value) { + addCriterion("remark <=", value, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkLike(String value) { + addCriterion("remark like", value, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkNotLike(String value) { + addCriterion("remark not like", value, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkIn(List values) { + addCriterion("remark in", values, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkNotIn(List values) { + addCriterion("remark not in", values, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkBetween(String value1, String value2) { + addCriterion("remark between", value1, value2, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkNotBetween(String value1, String value2) { + addCriterion("remark not between", value1, value2, "remark"); + return (Criteria) this; + } + } + + /** + * This class was generated by MyBatis Generator. + * This class corresponds to the database table jsh_user + * + * @mbggenerated do_not_delete_during_merge + */ + public static class Criteria extends GeneratedCriteria { + + protected Criteria() { + super(); + } + } + + /** + * This class was generated by MyBatis Generator. + * This class corresponds to the database table jsh_user + * + * @mbggenerated + */ + public static class Criterion { + private String condition; + + private Object value; + + private Object secondValue; + + private boolean noValue; + + private boolean singleValue; + + private boolean betweenValue; + + private boolean listValue; + + private String typeHandler; + + public String getCondition() { + return condition; + } + + public Object getValue() { + return value; + } + + public Object getSecondValue() { + return secondValue; + } + + public boolean isNoValue() { + return noValue; + } + + public boolean isSingleValue() { + return singleValue; + } + + public boolean isBetweenValue() { + return betweenValue; + } + + public boolean isListValue() { + return listValue; + } + + public String getTypeHandler() { + return typeHandler; + } + + protected Criterion(String condition) { + super(); + this.condition = condition; + this.typeHandler = null; + this.noValue = true; + } + + protected Criterion(String condition, Object value, String typeHandler) { + super(); + this.condition = condition; + this.value = value; + this.typeHandler = typeHandler; + if (value instanceof List) { + this.listValue = true; + } else { + this.singleValue = true; + } + } + + protected Criterion(String condition, Object value) { + this(condition, value, null); + } + + protected Criterion(String condition, Object value, Object secondValue, String typeHandler) { + super(); + this.condition = condition; + this.value = value; + this.secondValue = secondValue; + this.typeHandler = typeHandler; + this.betweenValue = true; + } + + protected Criterion(String condition, Object value, Object secondValue) { + this(condition, value, secondValue, null); + } + } +} \ No newline at end of file diff --git a/src/main/java/com/jsh/erp/datasource/mappers/AccountHeadMapper.java b/src/main/java/com/jsh/erp/datasource/mappers/AccountHeadMapper.java new file mode 100644 index 00000000..ed3f03a6 --- /dev/null +++ b/src/main/java/com/jsh/erp/datasource/mappers/AccountHeadMapper.java @@ -0,0 +1,123 @@ +package com.jsh.erp.datasource.mappers; + +import com.jsh.erp.datasource.entities.AccountHead; +import com.jsh.erp.datasource.entities.AccountHeadExample; +import java.util.List; + +import com.jsh.erp.datasource.entities.AccountHeadVo4ListEx; +import org.apache.ibatis.annotations.Param; + +public interface AccountHeadMapper { + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_accounthead + * + * @mbggenerated + */ + int countByExample(AccountHeadExample example); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_accounthead + * + * @mbggenerated + */ + int deleteByExample(AccountHeadExample example); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_accounthead + * + * @mbggenerated + */ + int deleteByPrimaryKey(Long id); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_accounthead + * + * @mbggenerated + */ + int insert(AccountHead record); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_accounthead + * + * @mbggenerated + */ + int insertSelective(AccountHead record); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_accounthead + * + * @mbggenerated + */ + List selectByExample(AccountHeadExample example); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_accounthead + * + * @mbggenerated + */ + AccountHead selectByPrimaryKey(Long id); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_accounthead + * + * @mbggenerated + */ + int updateByExampleSelective(@Param("record") AccountHead record, @Param("example") AccountHeadExample example); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_accounthead + * + * @mbggenerated + */ + int updateByExample(@Param("record") AccountHead record, @Param("example") AccountHeadExample example); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_accounthead + * + * @mbggenerated + */ + int updateByPrimaryKeySelective(AccountHead record); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_accounthead + * + * @mbggenerated + */ + int updateByPrimaryKey(AccountHead record); + + List selectByConditionAccountHead( + @Param("type") String type, + @Param("billNo") String billNo, + @Param("beginTime") String beginTime, + @Param("endTime") String endTime, + @Param("offset") Integer offset, + @Param("rows") Integer rows); + + int countsByAccountHead( + @Param("type") String type, + @Param("billNo") String billNo, + @Param("beginTime") String beginTime, + @Param("endTime") String endTime); + + Long getMaxId(); + + Double findAllMoney( + @Param("supplierId") Integer supplierId, + @Param("type") String type, + @Param("modeName") String modeName, + @Param("endTime") String endTime); + + List getDetailByNumber( + @Param("billNo") String billNo); +} \ No newline at end of file diff --git a/src/main/java/com/jsh/erp/datasource/mappers/AccountItemMapper.java b/src/main/java/com/jsh/erp/datasource/mappers/AccountItemMapper.java new file mode 100644 index 00000000..8ac893be --- /dev/null +++ b/src/main/java/com/jsh/erp/datasource/mappers/AccountItemMapper.java @@ -0,0 +1,114 @@ +package com.jsh.erp.datasource.mappers; + +import com.jsh.erp.datasource.entities.AccountItem; +import com.jsh.erp.datasource.entities.AccountItemExample; +import java.util.List; + +import com.jsh.erp.datasource.vo.AccountItemVo4List; +import org.apache.ibatis.annotations.Param; + +public interface AccountItemMapper { + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_accountitem + * + * @mbggenerated + */ + int countByExample(AccountItemExample example); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_accountitem + * + * @mbggenerated + */ + int deleteByExample(AccountItemExample example); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_accountitem + * + * @mbggenerated + */ + int deleteByPrimaryKey(Long id); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_accountitem + * + * @mbggenerated + */ + int insert(AccountItem record); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_accountitem + * + * @mbggenerated + */ + int insertSelective(AccountItem record); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_accountitem + * + * @mbggenerated + */ + List selectByExample(AccountItemExample example); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_accountitem + * + * @mbggenerated + */ + AccountItem selectByPrimaryKey(Long id); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_accountitem + * + * @mbggenerated + */ + int updateByExampleSelective(@Param("record") AccountItem record, @Param("example") AccountItemExample example); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_accountitem + * + * @mbggenerated + */ + int updateByExample(@Param("record") AccountItem record, @Param("example") AccountItemExample example); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_accountitem + * + * @mbggenerated + */ + int updateByPrimaryKeySelective(AccountItem record); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_accountitem + * + * @mbggenerated + */ + int updateByPrimaryKey(AccountItem record); + + List selectByConditionAccountItem( + @Param("name") String name, + @Param("type") Integer type, + @Param("remark") String remark, + @Param("offset") Integer offset, + @Param("rows") Integer rows); + + int countsByAccountItem( + @Param("name") String name, + @Param("type") Integer type, + @Param("remark") String remark); + + List getDetailList( + @Param("headerId") Long headerId); + +} \ No newline at end of file diff --git a/src/main/java/com/jsh/erp/datasource/mappers/AccountMapper.java b/src/main/java/com/jsh/erp/datasource/mappers/AccountMapper.java new file mode 100644 index 00000000..2df74bde --- /dev/null +++ b/src/main/java/com/jsh/erp/datasource/mappers/AccountMapper.java @@ -0,0 +1,119 @@ +package com.jsh.erp.datasource.mappers; + +import com.jsh.erp.datasource.entities.Account; +import com.jsh.erp.datasource.entities.AccountExample; +import java.util.List; + +import com.jsh.erp.datasource.vo.AccountVo4InOutList; +import com.jsh.erp.datasource.vo.AccountVo4List; +import org.apache.ibatis.annotations.Param; + +public interface AccountMapper { + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_account + * + * @mbggenerated + */ + int countByExample(AccountExample example); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_account + * + * @mbggenerated + */ + int deleteByExample(AccountExample example); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_account + * + * @mbggenerated + */ + int deleteByPrimaryKey(Long id); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_account + * + * @mbggenerated + */ + int insert(Account record); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_account + * + * @mbggenerated + */ + int insertSelective(Account record); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_account + * + * @mbggenerated + */ + List selectByExample(AccountExample example); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_account + * + * @mbggenerated + */ + Account selectByPrimaryKey(Long id); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_account + * + * @mbggenerated + */ + int updateByExampleSelective(@Param("record") Account record, @Param("example") AccountExample example); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_account + * + * @mbggenerated + */ + int updateByExample(@Param("record") Account record, @Param("example") AccountExample example); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_account + * + * @mbggenerated + */ + int updateByPrimaryKeySelective(Account record); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_account + * + * @mbggenerated + */ + int updateByPrimaryKey(Account record); + + List selectByConditionAccount( + @Param("name") String name, + @Param("serialNo") String serialNo, + @Param("remark") String remark, + @Param("offset") Integer offset, + @Param("rows") Integer rows); + + int countsByAccount( + @Param("name") String name, + @Param("serialNo") String serialNo, + @Param("remark") String remark); + + List findAccountInOutList( + @Param("accountId") Long accountId, + @Param("offset") Integer offset, + @Param("rows") Integer rows); + + int findAccountInOutListCount( + @Param("accountId") Long accountId); +} \ No newline at end of file diff --git a/src/main/java/com/jsh/erp/datasource/mappers/AppMapper.java b/src/main/java/com/jsh/erp/datasource/mappers/AppMapper.java new file mode 100644 index 00000000..d0abdd90 --- /dev/null +++ b/src/main/java/com/jsh/erp/datasource/mappers/AppMapper.java @@ -0,0 +1,106 @@ +package com.jsh.erp.datasource.mappers; + +import com.jsh.erp.datasource.entities.App; +import com.jsh.erp.datasource.entities.AppExample; +import java.util.List; +import org.apache.ibatis.annotations.Param; + +public interface AppMapper { + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_app + * + * @mbggenerated + */ + int countByExample(AppExample example); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_app + * + * @mbggenerated + */ + int deleteByExample(AppExample example); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_app + * + * @mbggenerated + */ + int deleteByPrimaryKey(Long id); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_app + * + * @mbggenerated + */ + int insert(App record); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_app + * + * @mbggenerated + */ + int insertSelective(App record); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_app + * + * @mbggenerated + */ + List selectByExample(AppExample example); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_app + * + * @mbggenerated + */ + App selectByPrimaryKey(Long id); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_app + * + * @mbggenerated + */ + int updateByExampleSelective(@Param("record") App record, @Param("example") AppExample example); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_app + * + * @mbggenerated + */ + int updateByExample(@Param("record") App record, @Param("example") AppExample example); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_app + * + * @mbggenerated + */ + int updateByPrimaryKeySelective(App record); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_app + * + * @mbggenerated + */ + int updateByPrimaryKey(App record); + + List selectByConditionApp( + @Param("name") String name, + @Param("type") String type, + @Param("offset") Integer offset, + @Param("rows") Integer rows); + + int countsByApp( + @Param("name") String name, + @Param("type") String type); +} \ No newline at end of file diff --git a/src/main/java/com/jsh/erp/datasource/mappers/AssetCategoryMapper.java b/src/main/java/com/jsh/erp/datasource/mappers/AssetCategoryMapper.java new file mode 100644 index 00000000..e3900fc3 --- /dev/null +++ b/src/main/java/com/jsh/erp/datasource/mappers/AssetCategoryMapper.java @@ -0,0 +1,96 @@ +package com.jsh.erp.datasource.mappers; + +import com.jsh.erp.datasource.entities.AssetCategory; +import com.jsh.erp.datasource.entities.AssetCategoryExample; +import java.util.List; +import org.apache.ibatis.annotations.Param; + +public interface AssetCategoryMapper { + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_assetcategory + * + * @mbggenerated + */ + int countByExample(AssetCategoryExample example); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_assetcategory + * + * @mbggenerated + */ + int deleteByExample(AssetCategoryExample example); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_assetcategory + * + * @mbggenerated + */ + int deleteByPrimaryKey(Long id); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_assetcategory + * + * @mbggenerated + */ + int insert(AssetCategory record); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_assetcategory + * + * @mbggenerated + */ + int insertSelective(AssetCategory record); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_assetcategory + * + * @mbggenerated + */ + List selectByExample(AssetCategoryExample example); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_assetcategory + * + * @mbggenerated + */ + AssetCategory selectByPrimaryKey(Long id); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_assetcategory + * + * @mbggenerated + */ + int updateByExampleSelective(@Param("record") AssetCategory record, @Param("example") AssetCategoryExample example); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_assetcategory + * + * @mbggenerated + */ + int updateByExample(@Param("record") AssetCategory record, @Param("example") AssetCategoryExample example); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_assetcategory + * + * @mbggenerated + */ + int updateByPrimaryKeySelective(AssetCategory record); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_assetcategory + * + * @mbggenerated + */ + int updateByPrimaryKey(AssetCategory record); +} \ No newline at end of file diff --git a/src/main/java/com/jsh/erp/datasource/mappers/AssetMapper.java b/src/main/java/com/jsh/erp/datasource/mappers/AssetMapper.java new file mode 100644 index 00000000..a20a1723 --- /dev/null +++ b/src/main/java/com/jsh/erp/datasource/mappers/AssetMapper.java @@ -0,0 +1,120 @@ +package com.jsh.erp.datasource.mappers; + +import com.jsh.erp.datasource.entities.Asset; +import com.jsh.erp.datasource.entities.AssetExample; +import java.util.List; +import org.apache.ibatis.annotations.Param; + +public interface AssetMapper { + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_asset + * + * @mbggenerated + */ + int countByExample(AssetExample example); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_asset + * + * @mbggenerated + */ + int deleteByExample(AssetExample example); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_asset + * + * @mbggenerated + */ + int deleteByPrimaryKey(Long id); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_asset + * + * @mbggenerated + */ + int insert(Asset record); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_asset + * + * @mbggenerated + */ + int insertSelective(Asset record); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_asset + * + * @mbggenerated + */ + List selectByExampleWithBLOBs(AssetExample example); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_asset + * + * @mbggenerated + */ + List selectByExample(AssetExample example); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_asset + * + * @mbggenerated + */ + Asset selectByPrimaryKey(Long id); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_asset + * + * @mbggenerated + */ + int updateByExampleSelective(@Param("record") Asset record, @Param("example") AssetExample example); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_asset + * + * @mbggenerated + */ + int updateByExampleWithBLOBs(@Param("record") Asset record, @Param("example") AssetExample example); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_asset + * + * @mbggenerated + */ + int updateByExample(@Param("record") Asset record, @Param("example") AssetExample example); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_asset + * + * @mbggenerated + */ + int updateByPrimaryKeySelective(Asset record); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_asset + * + * @mbggenerated + */ + int updateByPrimaryKeyWithBLOBs(Asset record); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_asset + * + * @mbggenerated + */ + int updateByPrimaryKey(Asset record); +} \ No newline at end of file diff --git a/src/main/java/com/jsh/erp/datasource/mappers/AssetNameMapper.java b/src/main/java/com/jsh/erp/datasource/mappers/AssetNameMapper.java new file mode 100644 index 00000000..e473f3bb --- /dev/null +++ b/src/main/java/com/jsh/erp/datasource/mappers/AssetNameMapper.java @@ -0,0 +1,120 @@ +package com.jsh.erp.datasource.mappers; + +import com.jsh.erp.datasource.entities.AssetName; +import com.jsh.erp.datasource.entities.AssetNameExample; +import java.util.List; +import org.apache.ibatis.annotations.Param; + +public interface AssetNameMapper { + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_assetname + * + * @mbggenerated + */ + int countByExample(AssetNameExample example); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_assetname + * + * @mbggenerated + */ + int deleteByExample(AssetNameExample example); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_assetname + * + * @mbggenerated + */ + int deleteByPrimaryKey(Long id); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_assetname + * + * @mbggenerated + */ + int insert(AssetName record); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_assetname + * + * @mbggenerated + */ + int insertSelective(AssetName record); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_assetname + * + * @mbggenerated + */ + List selectByExampleWithBLOBs(AssetNameExample example); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_assetname + * + * @mbggenerated + */ + List selectByExample(AssetNameExample example); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_assetname + * + * @mbggenerated + */ + AssetName selectByPrimaryKey(Long id); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_assetname + * + * @mbggenerated + */ + int updateByExampleSelective(@Param("record") AssetName record, @Param("example") AssetNameExample example); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_assetname + * + * @mbggenerated + */ + int updateByExampleWithBLOBs(@Param("record") AssetName record, @Param("example") AssetNameExample example); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_assetname + * + * @mbggenerated + */ + int updateByExample(@Param("record") AssetName record, @Param("example") AssetNameExample example); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_assetname + * + * @mbggenerated + */ + int updateByPrimaryKeySelective(AssetName record); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_assetname + * + * @mbggenerated + */ + int updateByPrimaryKeyWithBLOBs(AssetName record); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_assetname + * + * @mbggenerated + */ + int updateByPrimaryKey(AssetName record); +} \ No newline at end of file diff --git a/src/main/java/com/jsh/erp/datasource/mappers/DepotHeadMapper.java b/src/main/java/com/jsh/erp/datasource/mappers/DepotHeadMapper.java new file mode 100644 index 00000000..ad895ee9 --- /dev/null +++ b/src/main/java/com/jsh/erp/datasource/mappers/DepotHeadMapper.java @@ -0,0 +1,185 @@ +package com.jsh.erp.datasource.mappers; + +import com.jsh.erp.datasource.entities.DepotHead; +import com.jsh.erp.datasource.entities.DepotHeadExample; +import java.util.List; + +import com.jsh.erp.datasource.vo.DepotHeadVo4InDetail; +import com.jsh.erp.datasource.vo.DepotHeadVo4InOutMCount; +import com.jsh.erp.datasource.vo.DepotHeadVo4List; +import com.jsh.erp.datasource.vo.DepotHeadVo4StatementAccount; +import org.apache.ibatis.annotations.Param; + +public interface DepotHeadMapper { + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_depothead + * + * @mbggenerated + */ + int countByExample(DepotHeadExample example); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_depothead + * + * @mbggenerated + */ + int deleteByExample(DepotHeadExample example); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_depothead + * + * @mbggenerated + */ + int deleteByPrimaryKey(Long id); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_depothead + * + * @mbggenerated + */ + int insert(DepotHead record); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_depothead + * + * @mbggenerated + */ + int insertSelective(DepotHead record); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_depothead + * + * @mbggenerated + */ + List selectByExample(DepotHeadExample example); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_depothead + * + * @mbggenerated + */ + DepotHead selectByPrimaryKey(Long id); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_depothead + * + * @mbggenerated + */ + int updateByExampleSelective(@Param("record") DepotHead record, @Param("example") DepotHeadExample example); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_depothead + * + * @mbggenerated + */ + int updateByExample(@Param("record") DepotHead record, @Param("example") DepotHeadExample example); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_depothead + * + * @mbggenerated + */ + int updateByPrimaryKeySelective(DepotHead record); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_depothead + * + * @mbggenerated + */ + int updateByPrimaryKey(DepotHead record); + + List selectByConditionDepotHead( + @Param("type") String type, + @Param("subType") String subType, + @Param("number") String number, + @Param("beginTime") String beginTime, + @Param("endTime") String endTime, + @Param("dhIds") String dhIds, + @Param("offset") Integer offset, + @Param("rows") Integer rows); + + int countsByDepotHead( + @Param("type") String type, + @Param("subType") String subType, + @Param("number") String number, + @Param("beginTime") String beginTime, + @Param("endTime") String endTime, + @Param("dhIds") String dhIds); + + Long getMaxId(); + + String findMaterialsListByHeaderId( + @Param("id") Long id); + + List findByAll( + @Param("beginTime") String beginTime, + @Param("endTime") String endTime, + @Param("type") String type, + @Param("pid") Integer pid, + @Param("dids") String dids, + @Param("oId") Integer oId, + @Param("offset") Integer offset, + @Param("rows") Integer rows); + + int findByAllCount( + @Param("beginTime") String beginTime, + @Param("endTime") String endTime, + @Param("type") String type, + @Param("pid") Integer pid, + @Param("dids") String dids, + @Param("oId") Integer oId); + + List findInOutMaterialCount( + @Param("beginTime") String beginTime, + @Param("endTime") String endTime, + @Param("type") String type, + @Param("pid") Integer pid, + @Param("dids") String dids, + @Param("oId") Integer oId, + @Param("offset") Integer offset, + @Param("rows") Integer rows); + + int findInOutMaterialCountTotal( + @Param("beginTime") String beginTime, + @Param("endTime") String endTime, + @Param("type") String type, + @Param("pid") Integer pid, + @Param("dids") String dids, + @Param("oId") Integer oId); + + List findStatementAccount( + @Param("beginTime") String beginTime, + @Param("endTime") String endTime, + @Param("organId") Integer organId, + @Param("supType") String supType, + @Param("offset") Integer offset, + @Param("rows") Integer rows); + + int findStatementAccountCount( + @Param("beginTime") String beginTime, + @Param("endTime") String endTime, + @Param("organId") Integer organId, + @Param("supType") String supType); + + Double findAllMoney( + @Param("supplierId") Integer supplierId, + @Param("type") String type, + @Param("subType") String subType, + @Param("modeName") String modeName, + @Param("endTime") String endTime); + + List getDetailByNumber( + @Param("number") String number); + +} \ No newline at end of file diff --git a/src/main/java/com/jsh/erp/datasource/mappers/DepotItemMapper.java b/src/main/java/com/jsh/erp/datasource/mappers/DepotItemMapper.java new file mode 100644 index 00000000..ae53d0d9 --- /dev/null +++ b/src/main/java/com/jsh/erp/datasource/mappers/DepotItemMapper.java @@ -0,0 +1,217 @@ +package com.jsh.erp.datasource.mappers; + +import com.jsh.erp.datasource.entities.*; + +import java.util.List; + +import org.apache.ibatis.annotations.Param; + +public interface DepotItemMapper { + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_depotitem + * + * @mbggenerated + */ + int countByExample(DepotItemExample example); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_depotitem + * + * @mbggenerated + */ + int deleteByExample(DepotItemExample example); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_depotitem + * + * @mbggenerated + */ + int deleteByPrimaryKey(Long id); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_depotitem + * + * @mbggenerated + */ + int insert(DepotItem record); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_depotitem + * + * @mbggenerated + */ + int insertSelective(DepotItem record); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_depotitem + * + * @mbggenerated + */ + List selectByExample(DepotItemExample example); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_depotitem + * + * @mbggenerated + */ + DepotItem selectByPrimaryKey(Long id); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_depotitem + * + * @mbggenerated + */ + int updateByExampleSelective(@Param("record") DepotItem record, @Param("example") DepotItemExample example); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_depotitem + * + * @mbggenerated + */ + int updateByExample(@Param("record") DepotItem record, @Param("example") DepotItemExample example); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_depotitem + * + * @mbggenerated + */ + int updateByPrimaryKeySelective(DepotItem record); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_depotitem + * + * @mbggenerated + */ + int updateByPrimaryKey(DepotItem record); + + List selectByConditionDepotItem( + @Param("name") String name, + @Param("type") Integer type, + @Param("remark") String remark, + @Param("offset") Integer offset, + @Param("rows") Integer rows); + + int countsByDepotItem( + @Param("name") String name, + @Param("type") Integer type, + @Param("remark") String remark); + + List getHeaderIdByMaterial( + @Param("materialParam") String materialParam, + @Param("depotIds") String depotIds); + + List findDetailByTypeAndMaterialIdList( + @Param("mId") Long mId, + @Param("offset") Integer offset, + @Param("rows") Integer rows); + + int findDetailByTypeAndMaterialIdCounts( + @Param("mId") Long mId); + + List findStockNumByMaterialIdList( + @Param("mId") Long mId, + @Param("monthTime") String monthTime, + @Param("offset") Integer offset, + @Param("rows") Integer rows); + + int findStockNumByMaterialIdCounts( + @Param("mId") Long mId, + @Param("monthTime") String monthTime); + + int findByTypeAndMaterialIdIn( + @Param("mId") Long mId); + + int findByTypeAndMaterialIdOut( + @Param("mId") Long mId); + + List getDetailList( + @Param("headerId") Long headerId); + + List findByAll( + @Param("headIds") String headIds, + @Param("materialIds") String materialIds, + @Param("offset") Integer offset, + @Param("rows") Integer rows); + + int findByAllCount( + @Param("headIds") String headIds, + @Param("materialIds") String materialIds); + + Double findByTypeInIsPrev( + @Param("ProjectId") Integer ProjectId, + @Param("MId") Long MId, + @Param("MonthTime") String MonthTime); + + Double findByTypeInIsNotPrev( + @Param("ProjectId") Integer ProjectId, + @Param("MId") Long MId, + @Param("MonthTime") String MonthTime); + + Double findByTypeOutIsPrev( + @Param("ProjectId") Integer ProjectId, + @Param("MId") Long MId, + @Param("MonthTime") String MonthTime); + + Double findByTypeOutIsNotPrev( + @Param("ProjectId") Integer ProjectId, + @Param("MId") Long MId, + @Param("MonthTime") String MonthTime); + + + + Double findPriceByTypeInIsPrev( + @Param("ProjectId") Integer ProjectId, + @Param("MId") Long MId, + @Param("MonthTime") String MonthTime); + + Double findPriceByTypeInIsNotPrev( + @Param("ProjectId") Integer ProjectId, + @Param("MId") Long MId, + @Param("MonthTime") String MonthTime); + + Double findPriceByTypeOutIsPrev( + @Param("ProjectId") Integer ProjectId, + @Param("MId") Long MId, + @Param("MonthTime") String MonthTime); + + Double findPriceByTypeOutIsNotPrev( + @Param("ProjectId") Integer ProjectId, + @Param("MId") Long MId, + @Param("MonthTime") String MonthTime); + + Double buyOrSaleNumber( + @Param("type") String type, + @Param("subType") String subType, + @Param("MId") Long MId, + @Param("MonthTime") String MonthTime, + @Param("sumType") String sumType); + + Double buyOrSalePrice( + @Param("type") String type, + @Param("subType") String subType, + @Param("MId") Long MId, + @Param("MonthTime") String MonthTime, + @Param("sumType") String sumType); + + Double findGiftByTypeIn( + @Param("subType") String subType, + @Param("ProjectId") Integer ProjectId, + @Param("MId") Long MId); + + Double findGiftByTypeOut( + @Param("subType") String subType, + @Param("ProjectId") Integer ProjectId, + @Param("MId") Long MId); + +} \ No newline at end of file diff --git a/src/main/java/com/jsh/erp/datasource/mappers/DepotMapper.java b/src/main/java/com/jsh/erp/datasource/mappers/DepotMapper.java new file mode 100644 index 00000000..6c754c20 --- /dev/null +++ b/src/main/java/com/jsh/erp/datasource/mappers/DepotMapper.java @@ -0,0 +1,108 @@ +package com.jsh.erp.datasource.mappers; + +import com.jsh.erp.datasource.entities.Depot; +import com.jsh.erp.datasource.entities.DepotExample; +import java.util.List; +import org.apache.ibatis.annotations.Param; + +public interface DepotMapper { + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_depot + * + * @mbggenerated + */ + int countByExample(DepotExample example); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_depot + * + * @mbggenerated + */ + int deleteByExample(DepotExample example); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_depot + * + * @mbggenerated + */ + int deleteByPrimaryKey(Long id); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_depot + * + * @mbggenerated + */ + int insert(Depot record); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_depot + * + * @mbggenerated + */ + int insertSelective(Depot record); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_depot + * + * @mbggenerated + */ + List selectByExample(DepotExample example); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_depot + * + * @mbggenerated + */ + Depot selectByPrimaryKey(Long id); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_depot + * + * @mbggenerated + */ + int updateByExampleSelective(@Param("record") Depot record, @Param("example") DepotExample example); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_depot + * + * @mbggenerated + */ + int updateByExample(@Param("record") Depot record, @Param("example") DepotExample example); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_depot + * + * @mbggenerated + */ + int updateByPrimaryKeySelective(Depot record); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_depot + * + * @mbggenerated + */ + int updateByPrimaryKey(Depot record); + + List selectByConditionDepot( + @Param("name") String name, + @Param("type") Integer type, + @Param("remark") String remark, + @Param("offset") Integer offset, + @Param("rows") Integer rows); + + int countsByDepot( + @Param("name") String name, + @Param("type") Integer type, + @Param("remark") String remark); +} \ No newline at end of file diff --git a/src/main/java/com/jsh/erp/datasource/mappers/FunctionsMapper.java b/src/main/java/com/jsh/erp/datasource/mappers/FunctionsMapper.java new file mode 100644 index 00000000..f80c6a2b --- /dev/null +++ b/src/main/java/com/jsh/erp/datasource/mappers/FunctionsMapper.java @@ -0,0 +1,106 @@ +package com.jsh.erp.datasource.mappers; + +import com.jsh.erp.datasource.entities.Functions; +import com.jsh.erp.datasource.entities.FunctionsExample; +import java.util.List; +import org.apache.ibatis.annotations.Param; + +public interface FunctionsMapper { + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_functions + * + * @mbggenerated + */ + int countByExample(FunctionsExample example); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_functions + * + * @mbggenerated + */ + int deleteByExample(FunctionsExample example); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_functions + * + * @mbggenerated + */ + int deleteByPrimaryKey(Long id); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_functions + * + * @mbggenerated + */ + int insert(Functions record); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_functions + * + * @mbggenerated + */ + int insertSelective(Functions record); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_functions + * + * @mbggenerated + */ + List selectByExample(FunctionsExample example); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_functions + * + * @mbggenerated + */ + Functions selectByPrimaryKey(Long id); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_functions + * + * @mbggenerated + */ + int updateByExampleSelective(@Param("record") Functions record, @Param("example") FunctionsExample example); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_functions + * + * @mbggenerated + */ + int updateByExample(@Param("record") Functions record, @Param("example") FunctionsExample example); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_functions + * + * @mbggenerated + */ + int updateByPrimaryKeySelective(Functions record); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_functions + * + * @mbggenerated + */ + int updateByPrimaryKey(Functions record); + + List selectByConditionFunctions( + @Param("name") String name, + @Param("type") String type, + @Param("offset") Integer offset, + @Param("rows") Integer rows); + + int countsByFunctions( + @Param("name") String name, + @Param("type") String type); +} \ No newline at end of file diff --git a/src/main/java/com/jsh/erp/datasource/mappers/InOutItemMapper.java b/src/main/java/com/jsh/erp/datasource/mappers/InOutItemMapper.java new file mode 100644 index 00000000..b5300995 --- /dev/null +++ b/src/main/java/com/jsh/erp/datasource/mappers/InOutItemMapper.java @@ -0,0 +1,108 @@ +package com.jsh.erp.datasource.mappers; + +import com.jsh.erp.datasource.entities.InOutItem; +import com.jsh.erp.datasource.entities.InOutItemExample; +import java.util.List; +import org.apache.ibatis.annotations.Param; + +public interface InOutItemMapper { + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_inoutitem + * + * @mbggenerated + */ + int countByExample(InOutItemExample example); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_inoutitem + * + * @mbggenerated + */ + int deleteByExample(InOutItemExample example); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_inoutitem + * + * @mbggenerated + */ + int deleteByPrimaryKey(Long id); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_inoutitem + * + * @mbggenerated + */ + int insert(InOutItem record); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_inoutitem + * + * @mbggenerated + */ + int insertSelective(InOutItem record); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_inoutitem + * + * @mbggenerated + */ + List selectByExample(InOutItemExample example); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_inoutitem + * + * @mbggenerated + */ + InOutItem selectByPrimaryKey(Long id); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_inoutitem + * + * @mbggenerated + */ + int updateByExampleSelective(@Param("record") InOutItem record, @Param("example") InOutItemExample example); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_inoutitem + * + * @mbggenerated + */ + int updateByExample(@Param("record") InOutItem record, @Param("example") InOutItemExample example); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_inoutitem + * + * @mbggenerated + */ + int updateByPrimaryKeySelective(InOutItem record); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_inoutitem + * + * @mbggenerated + */ + int updateByPrimaryKey(InOutItem record); + + List selectByConditionInOutItem( + @Param("name") String name, + @Param("type") String type, + @Param("remark") String remark, + @Param("offset") Integer offset, + @Param("rows") Integer rows); + + int countsByInOutItem( + @Param("name") String name, + @Param("type") String type, + @Param("remark") String remark); +} \ No newline at end of file diff --git a/src/main/java/com/jsh/erp/datasource/mappers/LogMapper.java b/src/main/java/com/jsh/erp/datasource/mappers/LogMapper.java new file mode 100644 index 00000000..5dc679e1 --- /dev/null +++ b/src/main/java/com/jsh/erp/datasource/mappers/LogMapper.java @@ -0,0 +1,116 @@ +package com.jsh.erp.datasource.mappers; + +import com.jsh.erp.datasource.entities.Log; +import com.jsh.erp.datasource.entities.LogExample; +import java.util.List; +import org.apache.ibatis.annotations.Param; + +public interface LogMapper { + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_log + * + * @mbggenerated + */ + int countByExample(LogExample example); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_log + * + * @mbggenerated + */ + int deleteByExample(LogExample example); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_log + * + * @mbggenerated + */ + int deleteByPrimaryKey(Long id); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_log + * + * @mbggenerated + */ + int insert(Log record); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_log + * + * @mbggenerated + */ + int insertSelective(Log record); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_log + * + * @mbggenerated + */ + List selectByExample(LogExample example); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_log + * + * @mbggenerated + */ + Log selectByPrimaryKey(Long id); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_log + * + * @mbggenerated + */ + int updateByExampleSelective(@Param("record") Log record, @Param("example") LogExample example); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_log + * + * @mbggenerated + */ + int updateByExample(@Param("record") Log record, @Param("example") LogExample example); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_log + * + * @mbggenerated + */ + int updateByPrimaryKeySelective(Log record); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_log + * + * @mbggenerated + */ + int updateByPrimaryKey(Log record); + + List selectByConditionLog( + @Param("operation") String operation, + @Param("usernameID") Integer usernameID, + @Param("clientIp") String clientIp, + @Param("status") Integer status, + @Param("beginTime") String beginTime, + @Param("endTime") String endTime, + @Param("contentdetails") String contentdetails, + @Param("offset") Integer offset, + @Param("rows") Integer rows); + + int countsByLog( + @Param("operation") String operation, + @Param("usernameID") Integer usernameID, + @Param("clientIp") String clientIp, + @Param("status") Integer status, + @Param("beginTime") String beginTime, + @Param("endTime") String endTime, + @Param("contentdetails") String contentdetails); +} \ No newline at end of file diff --git a/src/main/java/com/jsh/erp/datasource/mappers/MaterialCategoryMapper.java b/src/main/java/com/jsh/erp/datasource/mappers/MaterialCategoryMapper.java new file mode 100644 index 00000000..9a25dd1b --- /dev/null +++ b/src/main/java/com/jsh/erp/datasource/mappers/MaterialCategoryMapper.java @@ -0,0 +1,106 @@ +package com.jsh.erp.datasource.mappers; + +import com.jsh.erp.datasource.entities.MaterialCategory; +import com.jsh.erp.datasource.entities.MaterialCategoryExample; +import java.util.List; +import org.apache.ibatis.annotations.Param; + +public interface MaterialCategoryMapper { + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_materialcategory + * + * @mbggenerated + */ + int countByExample(MaterialCategoryExample example); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_materialcategory + * + * @mbggenerated + */ + int deleteByExample(MaterialCategoryExample example); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_materialcategory + * + * @mbggenerated + */ + int deleteByPrimaryKey(Long id); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_materialcategory + * + * @mbggenerated + */ + int insert(MaterialCategory record); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_materialcategory + * + * @mbggenerated + */ + int insertSelective(MaterialCategory record); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_materialcategory + * + * @mbggenerated + */ + List selectByExample(MaterialCategoryExample example); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_materialcategory + * + * @mbggenerated + */ + MaterialCategory selectByPrimaryKey(Long id); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_materialcategory + * + * @mbggenerated + */ + int updateByExampleSelective(@Param("record") MaterialCategory record, @Param("example") MaterialCategoryExample example); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_materialcategory + * + * @mbggenerated + */ + int updateByExample(@Param("record") MaterialCategory record, @Param("example") MaterialCategoryExample example); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_materialcategory + * + * @mbggenerated + */ + int updateByPrimaryKeySelective(MaterialCategory record); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_materialcategory + * + * @mbggenerated + */ + int updateByPrimaryKey(MaterialCategory record); + + List selectByConditionMaterialCategory( + @Param("name") String name, + @Param("parentId") Integer parentId, + @Param("offset") Integer offset, + @Param("rows") Integer rows); + + int countsByMaterialCategory( + @Param("name") String name, + @Param("parentId") Integer parentId); +} \ No newline at end of file diff --git a/src/main/java/com/jsh/erp/datasource/mappers/MaterialMapper.java b/src/main/java/com/jsh/erp/datasource/mappers/MaterialMapper.java new file mode 100644 index 00000000..85867077 --- /dev/null +++ b/src/main/java/com/jsh/erp/datasource/mappers/MaterialMapper.java @@ -0,0 +1,115 @@ +package com.jsh.erp.datasource.mappers; + +import com.jsh.erp.datasource.entities.Material; +import com.jsh.erp.datasource.entities.MaterialExample; +import java.util.List; + +import com.jsh.erp.datasource.entities.MaterialVo4Unit; +import org.apache.ibatis.annotations.Param; + +public interface MaterialMapper { + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_material + * + * @mbggenerated + */ + int countByExample(MaterialExample example); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_material + * + * @mbggenerated + */ + int deleteByExample(MaterialExample example); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_material + * + * @mbggenerated + */ + int deleteByPrimaryKey(Long id); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_material + * + * @mbggenerated + */ + int insert(Material record); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_material + * + * @mbggenerated + */ + int insertSelective(Material record); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_material + * + * @mbggenerated + */ + List selectByExample(MaterialExample example); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_material + * + * @mbggenerated + */ + Material selectByPrimaryKey(Long id); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_material + * + * @mbggenerated + */ + int updateByExampleSelective(@Param("record") Material record, @Param("example") MaterialExample example); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_material + * + * @mbggenerated + */ + int updateByExample(@Param("record") Material record, @Param("example") MaterialExample example); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_material + * + * @mbggenerated + */ + int updateByPrimaryKeySelective(Material record); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_material + * + * @mbggenerated + */ + int updateByPrimaryKey(Material record); + + List selectByConditionMaterial( + @Param("name") String name, + @Param("model") String model, + @Param("offset") Integer offset, + @Param("rows") Integer rows); + + int countsByMaterial( + @Param("name") String name, + @Param("model") String model); + + String findUnitName(@Param("mId") Long mId); + + List findById(@Param("id") Long id); + + List findBySelect(); + +} \ No newline at end of file diff --git a/src/main/java/com/jsh/erp/datasource/mappers/MaterialPropertyMapper.java b/src/main/java/com/jsh/erp/datasource/mappers/MaterialPropertyMapper.java new file mode 100644 index 00000000..4fff13f9 --- /dev/null +++ b/src/main/java/com/jsh/erp/datasource/mappers/MaterialPropertyMapper.java @@ -0,0 +1,103 @@ +package com.jsh.erp.datasource.mappers; + +import com.jsh.erp.datasource.entities.MaterialProperty; +import com.jsh.erp.datasource.entities.MaterialPropertyExample; +import java.util.List; +import org.apache.ibatis.annotations.Param; + +public interface MaterialPropertyMapper { + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_materialproperty + * + * @mbggenerated + */ + int countByExample(MaterialPropertyExample example); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_materialproperty + * + * @mbggenerated + */ + int deleteByExample(MaterialPropertyExample example); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_materialproperty + * + * @mbggenerated + */ + int deleteByPrimaryKey(Long id); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_materialproperty + * + * @mbggenerated + */ + int insert(MaterialProperty record); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_materialproperty + * + * @mbggenerated + */ + int insertSelective(MaterialProperty record); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_materialproperty + * + * @mbggenerated + */ + List selectByExample(MaterialPropertyExample example); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_materialproperty + * + * @mbggenerated + */ + MaterialProperty selectByPrimaryKey(Long id); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_materialproperty + * + * @mbggenerated + */ + int updateByExampleSelective(@Param("record") MaterialProperty record, @Param("example") MaterialPropertyExample example); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_materialproperty + * + * @mbggenerated + */ + int updateByExample(@Param("record") MaterialProperty record, @Param("example") MaterialPropertyExample example); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_materialproperty + * + * @mbggenerated + */ + int updateByPrimaryKeySelective(MaterialProperty record); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_materialproperty + * + * @mbggenerated + */ + int updateByPrimaryKey(MaterialProperty record); + + List selectByConditionMaterialProperty( + @Param("name") String name, + @Param("offset") Integer offset, + @Param("rows") Integer rows); + + int countsByMaterialProperty(@Param("name") String name); +} \ No newline at end of file diff --git a/src/main/java/com/jsh/erp/datasource/mappers/PersonMapper.java b/src/main/java/com/jsh/erp/datasource/mappers/PersonMapper.java new file mode 100644 index 00000000..c6111b6c --- /dev/null +++ b/src/main/java/com/jsh/erp/datasource/mappers/PersonMapper.java @@ -0,0 +1,106 @@ +package com.jsh.erp.datasource.mappers; + +import com.jsh.erp.datasource.entities.Person; +import com.jsh.erp.datasource.entities.PersonExample; +import java.util.List; +import org.apache.ibatis.annotations.Param; + +public interface PersonMapper { + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_person + * + * @mbggenerated + */ + int countByExample(PersonExample example); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_person + * + * @mbggenerated + */ + int deleteByExample(PersonExample example); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_person + * + * @mbggenerated + */ + int deleteByPrimaryKey(Long id); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_person + * + * @mbggenerated + */ + int insert(Person record); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_person + * + * @mbggenerated + */ + int insertSelective(Person record); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_person + * + * @mbggenerated + */ + List selectByExample(PersonExample example); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_person + * + * @mbggenerated + */ + Person selectByPrimaryKey(Long id); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_person + * + * @mbggenerated + */ + int updateByExampleSelective(@Param("record") Person record, @Param("example") PersonExample example); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_person + * + * @mbggenerated + */ + int updateByExample(@Param("record") Person record, @Param("example") PersonExample example); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_person + * + * @mbggenerated + */ + int updateByPrimaryKeySelective(Person record); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_person + * + * @mbggenerated + */ + int updateByPrimaryKey(Person record); + + List selectByConditionPerson( + @Param("name") String name, + @Param("type") String type, + @Param("offset") Integer offset, + @Param("rows") Integer rows); + + int countsByPerson( + @Param("name") String name, + @Param("type") String type); +} \ No newline at end of file diff --git a/src/main/java/com/jsh/erp/datasource/mappers/RoleMapper.java b/src/main/java/com/jsh/erp/datasource/mappers/RoleMapper.java new file mode 100644 index 00000000..f5805ee0 --- /dev/null +++ b/src/main/java/com/jsh/erp/datasource/mappers/RoleMapper.java @@ -0,0 +1,104 @@ +package com.jsh.erp.datasource.mappers; + +import com.jsh.erp.datasource.entities.Role; +import com.jsh.erp.datasource.entities.RoleExample; +import java.util.List; +import org.apache.ibatis.annotations.Param; + +public interface RoleMapper { + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_role + * + * @mbggenerated + */ + int countByExample(RoleExample example); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_role + * + * @mbggenerated + */ + int deleteByExample(RoleExample example); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_role + * + * @mbggenerated + */ + int deleteByPrimaryKey(Long id); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_role + * + * @mbggenerated + */ + int insert(Role record); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_role + * + * @mbggenerated + */ + int insertSelective(Role record); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_role + * + * @mbggenerated + */ + List selectByExample(RoleExample example); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_role + * + * @mbggenerated + */ + Role selectByPrimaryKey(Long id); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_role + * + * @mbggenerated + */ + int updateByExampleSelective(@Param("record") Role record, @Param("example") RoleExample example); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_role + * + * @mbggenerated + */ + int updateByExample(@Param("record") Role record, @Param("example") RoleExample example); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_role + * + * @mbggenerated + */ + int updateByPrimaryKeySelective(Role record); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_role + * + * @mbggenerated + */ + int updateByPrimaryKey(Role record); + + List selectByConditionRole( + @Param("name") String name, + @Param("offset") Integer offset, + @Param("rows") Integer rows); + + int countsByRole( + @Param("name") String name); +} \ No newline at end of file diff --git a/src/main/java/com/jsh/erp/datasource/mappers/SupplierMapper.java b/src/main/java/com/jsh/erp/datasource/mappers/SupplierMapper.java new file mode 100644 index 00000000..d06df131 --- /dev/null +++ b/src/main/java/com/jsh/erp/datasource/mappers/SupplierMapper.java @@ -0,0 +1,112 @@ +package com.jsh.erp.datasource.mappers; + +import com.jsh.erp.datasource.entities.Supplier; +import com.jsh.erp.datasource.entities.SupplierExample; +import java.util.List; +import org.apache.ibatis.annotations.Param; + +public interface SupplierMapper { + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_supplier + * + * @mbggenerated + */ + int countByExample(SupplierExample example); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_supplier + * + * @mbggenerated + */ + int deleteByExample(SupplierExample example); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_supplier + * + * @mbggenerated + */ + int deleteByPrimaryKey(Long id); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_supplier + * + * @mbggenerated + */ + int insert(Supplier record); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_supplier + * + * @mbggenerated + */ + int insertSelective(Supplier record); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_supplier + * + * @mbggenerated + */ + List selectByExample(SupplierExample example); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_supplier + * + * @mbggenerated + */ + Supplier selectByPrimaryKey(Long id); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_supplier + * + * @mbggenerated + */ + int updateByExampleSelective(@Param("record") Supplier record, @Param("example") SupplierExample example); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_supplier + * + * @mbggenerated + */ + int updateByExample(@Param("record") Supplier record, @Param("example") SupplierExample example); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_supplier + * + * @mbggenerated + */ + int updateByPrimaryKeySelective(Supplier record); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_supplier + * + * @mbggenerated + */ + int updateByPrimaryKey(Supplier record); + + List selectByConditionSupplier( + @Param("supplier") String supplier, + @Param("type") String type, + @Param("phonenum") String phonenum, + @Param("telephone") String telephone, + @Param("description") String description, + @Param("offset") Integer offset, + @Param("rows") Integer rows); + + int countsBySupplier( + @Param("supplier") String supplier, + @Param("type") String type, + @Param("phonenum") String phonenum, + @Param("telephone") String telephone, + @Param("description") String description); +} \ No newline at end of file diff --git a/src/main/java/com/jsh/erp/datasource/mappers/SystemConfigMapper.java b/src/main/java/com/jsh/erp/datasource/mappers/SystemConfigMapper.java new file mode 100644 index 00000000..12edffb0 --- /dev/null +++ b/src/main/java/com/jsh/erp/datasource/mappers/SystemConfigMapper.java @@ -0,0 +1,102 @@ +package com.jsh.erp.datasource.mappers; + +import com.jsh.erp.datasource.entities.SystemConfig; +import com.jsh.erp.datasource.entities.SystemConfigExample; +import java.util.List; +import org.apache.ibatis.annotations.Param; + +public interface SystemConfigMapper { + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_systemconfig + * + * @mbggenerated + */ + int countByExample(SystemConfigExample example); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_systemconfig + * + * @mbggenerated + */ + int deleteByExample(SystemConfigExample example); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_systemconfig + * + * @mbggenerated + */ + int deleteByPrimaryKey(Long id); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_systemconfig + * + * @mbggenerated + */ + int insert(SystemConfig record); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_systemconfig + * + * @mbggenerated + */ + int insertSelective(SystemConfig record); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_systemconfig + * + * @mbggenerated + */ + List selectByExample(SystemConfigExample example); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_systemconfig + * + * @mbggenerated + */ + SystemConfig selectByPrimaryKey(Long id); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_systemconfig + * + * @mbggenerated + */ + int updateByExampleSelective(@Param("record") SystemConfig record, @Param("example") SystemConfigExample example); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_systemconfig + * + * @mbggenerated + */ + int updateByExample(@Param("record") SystemConfig record, @Param("example") SystemConfigExample example); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_systemconfig + * + * @mbggenerated + */ + int updateByPrimaryKeySelective(SystemConfig record); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_systemconfig + * + * @mbggenerated + */ + int updateByPrimaryKey(SystemConfig record); + + List selectByConditionSystemConfig( + @Param("offset") Integer offset, + @Param("rows") Integer rows); + + int countsBySystemConfig(); +} \ No newline at end of file diff --git a/src/main/java/com/jsh/erp/datasource/mappers/UnitMapper.java b/src/main/java/com/jsh/erp/datasource/mappers/UnitMapper.java new file mode 100644 index 00000000..4983727a --- /dev/null +++ b/src/main/java/com/jsh/erp/datasource/mappers/UnitMapper.java @@ -0,0 +1,104 @@ +package com.jsh.erp.datasource.mappers; + +import com.jsh.erp.datasource.entities.Unit; +import com.jsh.erp.datasource.entities.UnitExample; +import java.util.List; +import org.apache.ibatis.annotations.Param; + +public interface UnitMapper { + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_unit + * + * @mbggenerated + */ + int countByExample(UnitExample example); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_unit + * + * @mbggenerated + */ + int deleteByExample(UnitExample example); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_unit + * + * @mbggenerated + */ + int deleteByPrimaryKey(Long id); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_unit + * + * @mbggenerated + */ + int insert(Unit record); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_unit + * + * @mbggenerated + */ + int insertSelective(Unit record); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_unit + * + * @mbggenerated + */ + List selectByExample(UnitExample example); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_unit + * + * @mbggenerated + */ + Unit selectByPrimaryKey(Long id); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_unit + * + * @mbggenerated + */ + int updateByExampleSelective(@Param("record") Unit record, @Param("example") UnitExample example); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_unit + * + * @mbggenerated + */ + int updateByExample(@Param("record") Unit record, @Param("example") UnitExample example); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_unit + * + * @mbggenerated + */ + int updateByPrimaryKeySelective(Unit record); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_unit + * + * @mbggenerated + */ + int updateByPrimaryKey(Unit record); + + List selectByConditionUnit( + @Param("name") String name, + @Param("offset") Integer offset, + @Param("rows") Integer rows); + + int countsByUnit( + @Param("name") String name); +} \ No newline at end of file diff --git a/src/main/java/com/jsh/erp/datasource/mappers/UserBusinessMapper.java b/src/main/java/com/jsh/erp/datasource/mappers/UserBusinessMapper.java new file mode 100644 index 00000000..ad6238ef --- /dev/null +++ b/src/main/java/com/jsh/erp/datasource/mappers/UserBusinessMapper.java @@ -0,0 +1,96 @@ +package com.jsh.erp.datasource.mappers; + +import com.jsh.erp.datasource.entities.UserBusiness; +import com.jsh.erp.datasource.entities.UserBusinessExample; +import java.util.List; +import org.apache.ibatis.annotations.Param; + +public interface UserBusinessMapper { + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_userbusiness + * + * @mbggenerated + */ + int countByExample(UserBusinessExample example); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_userbusiness + * + * @mbggenerated + */ + int deleteByExample(UserBusinessExample example); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_userbusiness + * + * @mbggenerated + */ + int deleteByPrimaryKey(Long id); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_userbusiness + * + * @mbggenerated + */ + int insert(UserBusiness record); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_userbusiness + * + * @mbggenerated + */ + int insertSelective(UserBusiness record); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_userbusiness + * + * @mbggenerated + */ + List selectByExample(UserBusinessExample example); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_userbusiness + * + * @mbggenerated + */ + UserBusiness selectByPrimaryKey(Long id); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_userbusiness + * + * @mbggenerated + */ + int updateByExampleSelective(@Param("record") UserBusiness record, @Param("example") UserBusinessExample example); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_userbusiness + * + * @mbggenerated + */ + int updateByExample(@Param("record") UserBusiness record, @Param("example") UserBusinessExample example); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_userbusiness + * + * @mbggenerated + */ + int updateByPrimaryKeySelective(UserBusiness record); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_userbusiness + * + * @mbggenerated + */ + int updateByPrimaryKey(UserBusiness record); +} \ No newline at end of file diff --git a/src/main/java/com/jsh/erp/datasource/mappers/UserMapper.java b/src/main/java/com/jsh/erp/datasource/mappers/UserMapper.java new file mode 100644 index 00000000..4671e309 --- /dev/null +++ b/src/main/java/com/jsh/erp/datasource/mappers/UserMapper.java @@ -0,0 +1,106 @@ +package com.jsh.erp.datasource.mappers; + +import com.jsh.erp.datasource.entities.User; +import com.jsh.erp.datasource.entities.UserExample; +import java.util.List; +import org.apache.ibatis.annotations.Param; + +public interface UserMapper { + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_user + * + * @mbggenerated + */ + int countByExample(UserExample example); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_user + * + * @mbggenerated + */ + int deleteByExample(UserExample example); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_user + * + * @mbggenerated + */ + int deleteByPrimaryKey(Long id); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_user + * + * @mbggenerated + */ + int insert(User record); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_user + * + * @mbggenerated + */ + int insertSelective(User record); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_user + * + * @mbggenerated + */ + List selectByExample(UserExample example); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_user + * + * @mbggenerated + */ + User selectByPrimaryKey(Long id); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_user + * + * @mbggenerated + */ + int updateByExampleSelective(@Param("record") User record, @Param("example") UserExample example); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_user + * + * @mbggenerated + */ + int updateByExample(@Param("record") User record, @Param("example") UserExample example); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_user + * + * @mbggenerated + */ + int updateByPrimaryKeySelective(User record); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_user + * + * @mbggenerated + */ + int updateByPrimaryKey(User record); + + List selectByConditionUser( + @Param("userName") String userName, + @Param("loginName") String loginName, + @Param("offset") Integer offset, + @Param("rows") Integer rows); + + int countsByUser( + @Param("userName") String userName, + @Param("loginName") String loginName); +} \ No newline at end of file diff --git a/src/main/java/com/jsh/erp/datasource/vo/AccountItemVo4List.java b/src/main/java/com/jsh/erp/datasource/vo/AccountItemVo4List.java new file mode 100644 index 00000000..54b11774 --- /dev/null +++ b/src/main/java/com/jsh/erp/datasource/vo/AccountItemVo4List.java @@ -0,0 +1,84 @@ +package com.jsh.erp.datasource.vo; + +public class AccountItemVo4List { + + private Long id; + + private Long headerid; + + private Long accountid; + + private Long inoutitemid; + + private Double eachamount; + + private String remark; + + private String accountName; + + private String inOutItemName; + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public Long getHeaderid() { + return headerid; + } + + public void setHeaderid(Long headerid) { + this.headerid = headerid; + } + + public Long getAccountid() { + return accountid; + } + + public void setAccountid(Long accountid) { + this.accountid = accountid; + } + + public Long getInoutitemid() { + return inoutitemid; + } + + public void setInoutitemid(Long inoutitemid) { + this.inoutitemid = inoutitemid; + } + + public Double getEachamount() { + return eachamount; + } + + public void setEachamount(Double eachamount) { + this.eachamount = eachamount; + } + + public String getRemark() { + return remark; + } + + public void setRemark(String remark) { + this.remark = remark; + } + + public String getAccountName() { + return accountName; + } + + public void setAccountName(String accountName) { + this.accountName = accountName; + } + + public String getInOutItemName() { + return inOutItemName; + } + + public void setInOutItemName(String inOutItemName) { + this.inOutItemName = inOutItemName; + } +} \ No newline at end of file diff --git a/src/main/java/com/jsh/erp/datasource/vo/AccountVo4InOutList.java b/src/main/java/com/jsh/erp/datasource/vo/AccountVo4InOutList.java new file mode 100644 index 00000000..8f00881f --- /dev/null +++ b/src/main/java/com/jsh/erp/datasource/vo/AccountVo4InOutList.java @@ -0,0 +1,84 @@ +package com.jsh.erp.datasource.vo; + +public class AccountVo4InOutList { + + private String number; + + private String type; + + private String supplierName; + + private Double changeAmount; + + private Double balance; + + private String operTime; + + private String aList; + + private String amList; + + public String getNumber() { + return number; + } + + public void setNumber(String number) { + this.number = number; + } + + public String getType() { + return type; + } + + public void setType(String type) { + this.type = type; + } + + public String getSupplierName() { + return supplierName; + } + + public void setSupplierName(String supplierName) { + this.supplierName = supplierName; + } + + public Double getChangeAmount() { + return changeAmount; + } + + public void setChangeAmount(Double changeAmount) { + this.changeAmount = changeAmount; + } + + public Double getBalance() { + return balance; + } + + public void setBalance(Double balance) { + this.balance = balance; + } + + public String getOperTime() { + return operTime; + } + + public void setOperTime(String operTime) { + this.operTime = operTime; + } + + public String getaList() { + return aList; + } + + public void setaList(String aList) { + this.aList = aList; + } + + public String getAmList() { + return amList; + } + + public void setAmList(String amList) { + this.amList = amList; + } +} \ No newline at end of file diff --git a/src/main/java/com/jsh/erp/datasource/vo/AccountVo4List.java b/src/main/java/com/jsh/erp/datasource/vo/AccountVo4List.java new file mode 100644 index 00000000..2a66bbbd --- /dev/null +++ b/src/main/java/com/jsh/erp/datasource/vo/AccountVo4List.java @@ -0,0 +1,84 @@ +package com.jsh.erp.datasource.vo; + +public class AccountVo4List { + + private Long id; + + private String name; + + private String serialno; + + private Double initialamount; + + private Double currentamount; + + private String remark; + + private Boolean isdefault; + + private String thismonthamount; + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getSerialno() { + return serialno; + } + + public void setSerialno(String serialno) { + this.serialno = serialno; + } + + public Double getInitialamount() { + return initialamount; + } + + public void setInitialamount(Double initialamount) { + this.initialamount = initialamount; + } + + public Double getCurrentamount() { + return currentamount; + } + + public void setCurrentamount(Double currentamount) { + this.currentamount = currentamount; + } + + public String getRemark() { + return remark; + } + + public void setRemark(String remark) { + this.remark = remark; + } + + public Boolean getIsdefault() { + return isdefault; + } + + public void setIsdefault(Boolean isdefault) { + this.isdefault = isdefault; + } + + public String getThismonthamount() { + return thismonthamount; + } + + public void setThismonthamount(String thismonthamount) { + this.thismonthamount = thismonthamount; + } +} \ No newline at end of file diff --git a/src/main/java/com/jsh/erp/datasource/vo/DepotHeadVo4InDetail.java b/src/main/java/com/jsh/erp/datasource/vo/DepotHeadVo4InDetail.java new file mode 100644 index 00000000..19a5ec16 --- /dev/null +++ b/src/main/java/com/jsh/erp/datasource/vo/DepotHeadVo4InDetail.java @@ -0,0 +1,107 @@ +package com.jsh.erp.datasource.vo; + + +import java.util.Date; + +public class DepotHeadVo4InDetail { + + private String Number; + + private String MName; + + private String Model; + + private Double UnitPrice; + + private Double OperNumber; + + private Double AllPrice; + + private String SName; + + private String DName; + + private String OperTime; + + private String NewType; + + public String getNumber() { + return Number; + } + + public void setNumber(String number) { + Number = number; + } + + public String getMName() { + return MName; + } + + public void setMName(String MName) { + this.MName = MName; + } + + public String getModel() { + return Model; + } + + public void setModel(String model) { + Model = model; + } + + public Double getUnitPrice() { + return UnitPrice; + } + + public void setUnitPrice(Double unitPrice) { + UnitPrice = unitPrice; + } + + public Double getOperNumber() { + return OperNumber; + } + + public void setOperNumber(Double operNumber) { + OperNumber = operNumber; + } + + public Double getAllPrice() { + return AllPrice; + } + + public void setAllPrice(Double allPrice) { + AllPrice = allPrice; + } + + public String getSName() { + return SName; + } + + public void setSName(String SName) { + this.SName = SName; + } + + public String getDName() { + return DName; + } + + public void setDName(String DName) { + this.DName = DName; + } + + public String getOperTime() { + return OperTime; + } + + public void setOperTime(String operTime) { + OperTime = operTime; + } + + public String getNewType() { + return NewType; + } + + public void setNewType(String newType) { + NewType = newType; + } +} \ No newline at end of file diff --git a/src/main/java/com/jsh/erp/datasource/vo/DepotHeadVo4InOutMCount.java b/src/main/java/com/jsh/erp/datasource/vo/DepotHeadVo4InOutMCount.java new file mode 100644 index 00000000..442b7fb2 --- /dev/null +++ b/src/main/java/com/jsh/erp/datasource/vo/DepotHeadVo4InOutMCount.java @@ -0,0 +1,65 @@ +package com.jsh.erp.datasource.vo; + + +public class DepotHeadVo4InOutMCount { + + private Long MaterialId; + + private String mName; + + private String Model; + + private String categoryName; + + private Double numSum; + + private Double priceSum; + + public Long getMaterialId() { + return MaterialId; + } + + public void setMaterialId(Long materialId) { + MaterialId = materialId; + } + + public String getmName() { + return mName; + } + + public void setmName(String mName) { + this.mName = mName; + } + + public String getModel() { + return Model; + } + + public void setModel(String model) { + Model = model; + } + + public String getCategoryName() { + return categoryName; + } + + public void setCategoryName(String categoryName) { + this.categoryName = categoryName; + } + + public Double getNumSum() { + return numSum; + } + + public void setNumSum(Double numSum) { + this.numSum = numSum; + } + + public Double getPriceSum() { + return priceSum; + } + + public void setPriceSum(Double priceSum) { + this.priceSum = priceSum; + } +} \ No newline at end of file diff --git a/src/main/java/com/jsh/erp/datasource/vo/DepotHeadVo4List.java b/src/main/java/com/jsh/erp/datasource/vo/DepotHeadVo4List.java new file mode 100644 index 00000000..fed3e2c0 --- /dev/null +++ b/src/main/java/com/jsh/erp/datasource/vo/DepotHeadVo4List.java @@ -0,0 +1,346 @@ +package com.jsh.erp.datasource.vo; + +import java.util.Date; + +public class DepotHeadVo4List { + + private Long id; + + private String type; + + private String subtype; + + private Long projectid; + + private String defaultnumber; + + private String number; + + private String operpersonname; + + private Date createtime; + + private Date opertime; + + private Long organid; + + private Long handspersonid; + + private Long accountid; + + private Double changeamount; + + private Long allocationprojectid; + + private Double totalprice; + + private String paytype; + + private String remark; + + private String salesman; + + private String accountidlist; + + private String accountmoneylist; + + private Double discount; + + private Double discountmoney; + + private Double discountlastmoney; + + private Double othermoney; + + private String othermoneylist; + + private String othermoneyitem; + + private Integer accountday; + + private Boolean status; + + private String projectName; + + private String organName; + + private String handsPersonName; + + private String accountName; + + private String allocationProjectName; + + private String materialsList; + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getType() { + return type; + } + + public void setType(String type) { + this.type = type; + } + + public String getSubtype() { + return subtype; + } + + public void setSubtype(String subtype) { + this.subtype = subtype; + } + + public Long getProjectid() { + return projectid; + } + + public void setProjectid(Long projectid) { + this.projectid = projectid; + } + + public String getDefaultnumber() { + return defaultnumber; + } + + public void setDefaultnumber(String defaultnumber) { + this.defaultnumber = defaultnumber; + } + + public String getNumber() { + return number; + } + + public void setNumber(String number) { + this.number = number; + } + + public String getOperpersonname() { + return operpersonname; + } + + public void setOperpersonname(String operpersonname) { + this.operpersonname = operpersonname; + } + + public Date getCreatetime() { + return createtime; + } + + public void setCreatetime(Date createtime) { + this.createtime = createtime; + } + + public Date getOpertime() { + return opertime; + } + + public void setOpertime(Date opertime) { + this.opertime = opertime; + } + + public Long getOrganid() { + return organid; + } + + public void setOrganid(Long organid) { + this.organid = organid; + } + + public Long getHandspersonid() { + return handspersonid; + } + + public void setHandspersonid(Long handspersonid) { + this.handspersonid = handspersonid; + } + + public Long getAccountid() { + return accountid; + } + + public void setAccountid(Long accountid) { + this.accountid = accountid; + } + + public Double getChangeamount() { + return changeamount; + } + + public void setChangeamount(Double changeamount) { + this.changeamount = changeamount; + } + + public Long getAllocationprojectid() { + return allocationprojectid; + } + + public void setAllocationprojectid(Long allocationprojectid) { + this.allocationprojectid = allocationprojectid; + } + + public Double getTotalprice() { + return totalprice; + } + + public void setTotalprice(Double totalprice) { + this.totalprice = totalprice; + } + + public String getPaytype() { + return paytype; + } + + public void setPaytype(String paytype) { + this.paytype = paytype; + } + + public String getRemark() { + return remark; + } + + public void setRemark(String remark) { + this.remark = remark; + } + + public String getSalesman() { + return salesman; + } + + public void setSalesman(String salesman) { + this.salesman = salesman; + } + + public String getAccountidlist() { + return accountidlist; + } + + public void setAccountidlist(String accountidlist) { + this.accountidlist = accountidlist; + } + + public String getAccountmoneylist() { + return accountmoneylist; + } + + public void setAccountmoneylist(String accountmoneylist) { + this.accountmoneylist = accountmoneylist; + } + + public Double getDiscount() { + return discount; + } + + public void setDiscount(Double discount) { + this.discount = discount; + } + + public Double getDiscountmoney() { + return discountmoney; + } + + public void setDiscountmoney(Double discountmoney) { + this.discountmoney = discountmoney; + } + + public Double getDiscountlastmoney() { + return discountlastmoney; + } + + public void setDiscountlastmoney(Double discountlastmoney) { + this.discountlastmoney = discountlastmoney; + } + + public Double getOthermoney() { + return othermoney; + } + + public void setOthermoney(Double othermoney) { + this.othermoney = othermoney; + } + + public String getOthermoneylist() { + return othermoneylist; + } + + public void setOthermoneylist(String othermoneylist) { + this.othermoneylist = othermoneylist; + } + + public String getOthermoneyitem() { + return othermoneyitem; + } + + public void setOthermoneyitem(String othermoneyitem) { + this.othermoneyitem = othermoneyitem; + } + + public Integer getAccountday() { + return accountday; + } + + public void setAccountday(Integer accountday) { + this.accountday = accountday; + } + + public Boolean getStatus() { + return status; + } + + public void setStatus(Boolean status) { + this.status = status; + } + + public String getProjectName() { + return projectName; + } + + public void setProjectName(String projectName) { + this.projectName = projectName; + } + + public String getOrganName() { + return organName; + } + + public void setOrganName(String organName) { + this.organName = organName; + } + + public String getHandsPersonName() { + return handsPersonName; + } + + public void setHandsPersonName(String handsPersonName) { + this.handsPersonName = handsPersonName; + } + + public String getAccountName() { + return accountName; + } + + public void setAccountName(String accountName) { + this.accountName = accountName; + } + + public String getAllocationProjectName() { + return allocationProjectName; + } + + public void setAllocationProjectName(String allocationProjectName) { + this.allocationProjectName = allocationProjectName; + } + + public String getMaterialsList() { + return materialsList; + } + + public void setMaterialsList(String materialsList) { + this.materialsList = materialsList; + } +} \ No newline at end of file diff --git a/src/main/java/com/jsh/erp/datasource/vo/DepotHeadVo4StatementAccount.java b/src/main/java/com/jsh/erp/datasource/vo/DepotHeadVo4StatementAccount.java new file mode 100644 index 00000000..327f334b --- /dev/null +++ b/src/main/java/com/jsh/erp/datasource/vo/DepotHeadVo4StatementAccount.java @@ -0,0 +1,75 @@ +package com.jsh.erp.datasource.vo; + + +public class DepotHeadVo4StatementAccount { + + private String number; + + private String type; + + private Double discountLastMoney; + + private Double changeAmount; + + private Double allPrice; + + private String supplierName; + + private String oTime; + + public String getNumber() { + return number; + } + + public void setNumber(String number) { + this.number = number; + } + + public String getType() { + return type; + } + + public void setType(String type) { + this.type = type; + } + + public Double getDiscountLastMoney() { + return discountLastMoney; + } + + public void setDiscountLastMoney(Double discountLastMoney) { + this.discountLastMoney = discountLastMoney; + } + + public Double getChangeAmount() { + return changeAmount; + } + + public void setChangeAmount(Double changeAmount) { + this.changeAmount = changeAmount; + } + + public Double getAllPrice() { + return allPrice; + } + + public void setAllPrice(Double allPrice) { + this.allPrice = allPrice; + } + + public String getSupplierName() { + return supplierName; + } + + public void setSupplierName(String supplierName) { + this.supplierName = supplierName; + } + + public String getoTime() { + return oTime; + } + + public void setoTime(String oTime) { + this.oTime = oTime; + } +} \ No newline at end of file diff --git a/src/main/java/com/jsh/erp/service/CommonQueryManager.java b/src/main/java/com/jsh/erp/service/CommonQueryManager.java new file mode 100644 index 00000000..a12e8969 --- /dev/null +++ b/src/main/java/com/jsh/erp/service/CommonQueryManager.java @@ -0,0 +1,127 @@ +package com.jsh.erp.service; + +import com.jsh.erp.utils.StringUtil; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +/** + * @author jishenghua 752718920 2018-10-7 15:25:58 + */ +@Service +public class CommonQueryManager { + + @Resource + private InterfaceContainer container; + + /** + * 查询单条 + * + * @param apiName 接口名称 + * @param id ID + */ + public Object selectOne(String apiName, String id) { + if (StringUtil.isNotEmpty(apiName) && StringUtil.isNotEmpty(id)) { + return container.getCommonQuery(apiName).selectOne(id); + } + return null; + } + + /** + * 查询 + * @param apiName + * @param parameterMap + * @return + */ + public List select(String apiName, Map parameterMap) { + if (StringUtil.isNotEmpty(apiName)) { + return container.getCommonQuery(apiName).select(parameterMap); + } + return new ArrayList(); + } + + /** + * 计数 + * @param apiName + * @param parameterMap + * @return + */ + public int counts(String apiName, Map parameterMap) { + if (StringUtil.isNotEmpty(apiName)) { + return container.getCommonQuery(apiName).counts(parameterMap); + } + return 0; + } + + /** + * 插入 + * @param apiName + * @param beanJson + * @return + */ + public int insert(String apiName, String beanJson, HttpServletRequest request) { + if (StringUtil.isNotEmpty(apiName)) { + return container.getCommonQuery(apiName).insert(beanJson, request); + } + return 0; + } + + /** + * 更新 + * @param apiName + * @param beanJson + * @param id + * @return + */ + public int update(String apiName, String beanJson, Long id) { + if (StringUtil.isNotEmpty(apiName)) { + return container.getCommonQuery(apiName).update(beanJson, id); + } + return 0; + } + + /** + * 删除 + * @param apiName + * @param id + * @return + */ + public int delete(String apiName, Long id) { + if (StringUtil.isNotEmpty(apiName)) { + return container.getCommonQuery(apiName).delete(id); + } + return 0; + } + + /** + * 批量删除 + * @param apiName + * @param ids + * @return + */ + public int batchDelete(String apiName, String ids) { + if (StringUtil.isNotEmpty(apiName)) { + return container.getCommonQuery(apiName).batchDelete(ids); + } + return 0; + } + + /** + * 判断是否存在 + * @param apiName + * @param id + * @param name + * @return + */ + public int checkIsNameExist(String apiName, Long id, String name) { + if (StringUtil.isNotEmpty(apiName)) { + return container.getCommonQuery(apiName).checkIsNameExist(id, name); + } + return 0; + } + +} \ No newline at end of file diff --git a/src/main/java/com/jsh/erp/service/ICommonQuery.java b/src/main/java/com/jsh/erp/service/ICommonQuery.java new file mode 100644 index 00000000..62f635c0 --- /dev/null +++ b/src/main/java/com/jsh/erp/service/ICommonQuery.java @@ -0,0 +1,78 @@ +package com.jsh.erp.service; + +import javax.servlet.http.HttpServletRequest; +import java.util.List; +import java.util.Map; + +/** + * 通用查询接口 + * 功能:1、单条查询 2、分页+搜索 3、查询数量 + * + * @author jishenghua + * @version 1.0 + */ +public interface ICommonQuery { + /** + * 查询:解析JSON,查询资源。 + * + * @param condition 资源id + * @return 资源 + */ + Object selectOne(String condition); + + /** + * 自定义查询 + * + * @param parameterMap 查询参数 + * @return 查询结果 + */ + List select(Map parameterMap); + + /** + * 查询数量 + * + * @param parameterMap 查询参数 + * @return 查询结果 + */ + int counts(Map parameterMap); + + /** + * 新增数据 + * + * @param beanJson + * @return + */ + int insert(String beanJson, HttpServletRequest request); + + /** + * 更新数据 + * + * @param beanJson + * @return + */ + int update(String beanJson, Long id); + + /** + * 删除数据 + * + * @param id + * @return + */ + int delete(Long id); + + /** + * 批量删除数据 + * + * @param ids + * @return + */ + int batchDelete(String ids); + + /** + * 查询名称是否存在 + * + * @param id + * @return + */ + int checkIsNameExist(Long id, String name); +} \ No newline at end of file diff --git a/src/main/java/com/jsh/erp/service/InterfaceContainer.java b/src/main/java/com/jsh/erp/service/InterfaceContainer.java new file mode 100644 index 00000000..5102bf38 --- /dev/null +++ b/src/main/java/com/jsh/erp/service/InterfaceContainer.java @@ -0,0 +1,59 @@ +package com.jsh.erp.service; + +import com.jsh.erp.utils.AnnotationUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.util.Assert; + +import java.util.HashMap; +import java.util.Map; + +/** + * @author jishenghua 2018-10-7 15:25:09 + */ +@Service +public class InterfaceContainer { + private final Map nameTypeMap; + private final Map configComponentMap; + + public InterfaceContainer() { + nameTypeMap = new HashMap<>(); + configComponentMap = new HashMap<>(); + } + + + @Autowired(required = false) + private void init(ICommonQuery[] configComponents) { + for (ICommonQuery configComponent : configComponents) { + ResourceInfo info = AnnotationUtils.getAnnotation(configComponent, ResourceInfo.class); + if (info != null) { + initResourceInfo(info); + configComponentMap.put(info.type(), configComponent); + } + } + } + + public int getResourceType(String apiName) { + if (!nameTypeMap.containsKey(apiName)) + throw new RuntimeException("资源:" + apiName + "的组件不存在"); + return nameTypeMap.get(apiName); + } + + public ICommonQuery getCommonQuery(String apiName) { + return getCommonQuery(this.getResourceType(apiName)); + } + + private ICommonQuery getCommonQuery(int resourceType) { + Assert.isTrue(configComponentMap.containsKey(resourceType)); + return configComponentMap.get(resourceType); + } + + private synchronized void initResourceInfo(ResourceInfo info) { + if (nameTypeMap.containsKey(info.value())) { + Assert.isTrue(nameTypeMap.get(info.value()).equals(info.type())); + } else { + nameTypeMap.put(info.value(), info.type()); + } + } + +} diff --git a/src/main/java/com/jsh/erp/service/ResourceInfo.java b/src/main/java/com/jsh/erp/service/ResourceInfo.java new file mode 100644 index 00000000..70d85eda --- /dev/null +++ b/src/main/java/com/jsh/erp/service/ResourceInfo.java @@ -0,0 +1,35 @@ +package com.jsh.erp.service; + +import java.lang.annotation.*; + +/** + * @author jishenghua 2018-10-7 15:25:39 + * user-5 + * role-10 + * app-15 + * depot-20 + * log-25 + * functions-30 + * inOutItem-35 + * unit-40 + * person-45 + * userBusiness-50 + * systemConfig-55 + * materialProperty-60 + * account-65 + * supplier-70 + * materialCategory-75 + * material-80 + * depotHead-85 + * depotItem-90 + * accountHead-95 + * accountItem-100 + */ +@Target({ElementType.TYPE, ElementType.ANNOTATION_TYPE}) +@Retention(RetentionPolicy.RUNTIME) +@Inherited +@Documented +public @interface ResourceInfo { + String value(); + int type(); +} diff --git a/src/main/java/com/jsh/erp/service/account/AccountComponent.java b/src/main/java/com/jsh/erp/service/account/AccountComponent.java new file mode 100644 index 00000000..63704589 --- /dev/null +++ b/src/main/java/com/jsh/erp/service/account/AccountComponent.java @@ -0,0 +1,76 @@ +package com.jsh.erp.service.account; + +import com.jsh.erp.service.ICommonQuery; +import com.jsh.erp.service.depot.DepotResource; +import com.jsh.erp.service.depot.DepotService; +import com.jsh.erp.utils.Constants; +import com.jsh.erp.utils.QueryUtils; +import com.jsh.erp.utils.StringUtil; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import java.util.List; +import java.util.Map; + +@Service(value = "account_component") +@AccountResource +public class AccountComponent implements ICommonQuery { + + @Resource + private AccountService accountService; + + @Override + public Object selectOne(String condition) { + return null; + } + + @Override + public List select(Map map) { + return getAccountList(map); + } + + private List getAccountList(Map map) { + String search = map.get(Constants.SEARCH); + String name = StringUtil.getInfo(search, "name"); + String serialNo = StringUtil.getInfo(search, "serialNo"); + String remark = StringUtil.getInfo(search, "remark"); + String order = QueryUtils.order(map); + return accountService.select(name, serialNo, remark, QueryUtils.offset(map), QueryUtils.rows(map)); + } + + @Override + public int counts(Map map) { + String search = map.get(Constants.SEARCH); + String name = StringUtil.getInfo(search, "name"); + String serialNo = StringUtil.getInfo(search, "serialNo"); + String remark = StringUtil.getInfo(search, "remark"); + return accountService.countAccount(name, serialNo, remark); + } + + @Override + public int insert(String beanJson, HttpServletRequest request) { + return accountService.insertAccount(beanJson, request); + } + + @Override + public int update(String beanJson, Long id) { + return accountService.updateAccount(beanJson, id); + } + + @Override + public int delete(Long id) { + return accountService.deleteAccount(id); + } + + @Override + public int batchDelete(String ids) { + return accountService.batchDeleteAccount(ids); + } + + @Override + public int checkIsNameExist(Long id, String name) { + return accountService.checkIsNameExist(id, name); + } + +} diff --git a/src/main/java/com/jsh/erp/service/account/AccountResource.java b/src/main/java/com/jsh/erp/service/account/AccountResource.java new file mode 100644 index 00000000..962174bd --- /dev/null +++ b/src/main/java/com/jsh/erp/service/account/AccountResource.java @@ -0,0 +1,15 @@ +package com.jsh.erp.service.account; + +import com.jsh.erp.service.ResourceInfo; + +import java.lang.annotation.*; + +/** + * @author jishenghua qq752718920 2018-10-7 15:26:27 + */ +@ResourceInfo(value = "account", type = 65) +@Inherited +@Target(ElementType.TYPE) +@Retention(RetentionPolicy.RUNTIME) +public @interface AccountResource { +} diff --git a/src/main/java/com/jsh/erp/service/account/AccountService.java b/src/main/java/com/jsh/erp/service/account/AccountService.java new file mode 100644 index 00000000..18b424f8 --- /dev/null +++ b/src/main/java/com/jsh/erp/service/account/AccountService.java @@ -0,0 +1,295 @@ +package com.jsh.erp.service.account; + +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.jsh.erp.datasource.entities.*; +import com.jsh.erp.datasource.mappers.AccountHeadMapper; +import com.jsh.erp.datasource.mappers.AccountItemMapper; +import com.jsh.erp.datasource.mappers.AccountMapper; +import com.jsh.erp.datasource.mappers.DepotHeadMapper; +import com.jsh.erp.datasource.vo.AccountVo4InOutList; +import com.jsh.erp.datasource.vo.AccountVo4List; +import com.jsh.erp.utils.StringUtil; +import com.jsh.erp.utils.Tools; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.dao.DataAccessException; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import java.text.DecimalFormat; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +@Service +public class AccountService { + private Logger logger = LoggerFactory.getLogger(AccountService.class); + + @Resource + private AccountMapper accountMapper; + + @Resource + private DepotHeadMapper depotHeadMapper; + + @Resource + private AccountHeadMapper accountHeadMapper; + + @Resource + private AccountItemMapper accountItemMapper; + + public Account getAccount(long id) { + return accountMapper.selectByPrimaryKey(id); + } + + public List getAccount() { + AccountExample example = new AccountExample(); + return accountMapper.selectByExample(example); + } + + public List select(String name, String serialNo, String remark, int offset, int rows) { + List resList = new ArrayList(); + List list = accountMapper.selectByConditionAccount(name, serialNo, remark, offset, rows); + String timeStr = Tools.getCurrentMonth(); + if (null != list && null !=timeStr) { + for (AccountVo4List al : list) { + DecimalFormat df = new DecimalFormat(".##"); + Double thisMonthAmount = getAccountSum(al.getId(), timeStr, "month") + getAccountSumByHead(al.getId(), timeStr, "month") + getAccountSumByDetail(al.getId(), timeStr, "month") + getManyAccountSum(al.getId(), timeStr, "month"); + String thisMonthAmountFmt = "0"; + if (thisMonthAmount != 0) { + thisMonthAmountFmt = df.format(thisMonthAmount); + } + al.setThismonthamount(thisMonthAmountFmt); //本月发生额 + Double currentAmount = getAccountSum(al.getId(), "", "month") + getAccountSumByHead(al.getId(), "", "month") + getAccountSumByDetail(al.getId(), "", "month") + getManyAccountSum(al.getId(), "", "month") + al.getInitialamount(); + al.setCurrentamount(currentAmount); + resList.add(al); + } + } + return resList; + } + + public int countAccount(String name, String serialNo, String remark) { + return accountMapper.countsByAccount(name, serialNo, remark); + } + + public int insertAccount(String beanJson, HttpServletRequest request) { + Account account = JSONObject.parseObject(beanJson, Account.class); + return accountMapper.insertSelective(account); + } + + public int updateAccount(String beanJson, Long id) { + Account account = JSONObject.parseObject(beanJson, Account.class); + account.setId(id); + return accountMapper.updateByPrimaryKeySelective(account); + } + + public int deleteAccount(Long id) { + return accountMapper.deleteByPrimaryKey(id); + } + + public int batchDeleteAccount(String ids) { + List idList = StringUtil.strToLongList(ids); + AccountExample example = new AccountExample(); + example.createCriteria().andIdIn(idList); + return accountMapper.deleteByExample(example); + } + + public int checkIsNameExist(Long id, String name) { + AccountExample example = new AccountExample(); + example.createCriteria().andIdNotEqualTo(id).andNameEqualTo(name); + List list = accountMapper.selectByExample(example); + return list.size(); + } + + public List findBySelect() { + AccountExample example = new AccountExample(); + example.setOrderByClause("id desc"); + return accountMapper.selectByExample(example); + } + + /** + * 单个账户的金额求和-入库和出库 + * + * @param id + * @return + */ + public Double getAccountSum(Long id, String timeStr, String type) { + Double accountSum = 0.0; + try { + DepotHeadExample example = new DepotHeadExample(); + if (!timeStr.equals("")) { + Date bTime = StringUtil.getDateByString(timeStr + "-01 00:00:00", null); + Date eTime = StringUtil.getDateByString(timeStr + "-31 00:00:00", null); + Date mTime = StringUtil.getDateByString(timeStr + "-01 00:00:00", null); + if (type.equals("month")) { + example.createCriteria().andAccountidEqualTo(id).andPaytypeNotEqualTo("预付款") + .andOpertimeGreaterThanOrEqualTo(bTime).andOpertimeLessThanOrEqualTo(eTime); + } else if (type.equals("date")) { + example.createCriteria().andAccountidEqualTo(id).andPaytypeNotEqualTo("预付款") + .andOpertimeLessThanOrEqualTo(mTime); + } + } else { + example.createCriteria().andAccountidEqualTo(id).andPaytypeNotEqualTo("预付款"); + } + List dataList = depotHeadMapper.selectByExample(example); + if (dataList != null) { + for (DepotHead depotHead : dataList) { + if(depotHead.getChangeamount()!=null) { + accountSum = accountSum + depotHead.getChangeamount(); + } + } + } + } catch (DataAccessException e) { + logger.error(">>>>>>>>>查找进销存信息异常", e); + } + return accountSum; + } + + /** + * 单个账户的金额求和-收入、支出、转账的单据表头的合计 + * + * @param id + * @return + */ + public Double getAccountSumByHead(Long id, String timeStr, String type) { + Double accountSum = 0.0; + try { + AccountHeadExample example = new AccountHeadExample(); + if (!timeStr.equals("")) { + Date bTime = StringUtil.getDateByString(timeStr + "-01 00:00:00", null); + Date eTime = StringUtil.getDateByString(timeStr + "-31 00:00:00", null); + Date mTime = StringUtil.getDateByString(timeStr + "-01 00:00:00", null); + if (type.equals("month")) { + example.createCriteria().andAccountidEqualTo(id) + .andBilltimeGreaterThanOrEqualTo(bTime).andBilltimeLessThanOrEqualTo(eTime); + } else if (type.equals("date")) { + example.createCriteria().andAccountidEqualTo(id) + .andBilltimeLessThanOrEqualTo(mTime); + } + } else { + example.createCriteria().andAccountidEqualTo(id); + } + List dataList = accountHeadMapper.selectByExample(example); + if (dataList != null) { + for (AccountHead accountHead : dataList) { + if(accountHead.getChangeamount()!=null) { + accountSum = accountSum + accountHead.getChangeamount(); + } + } + } + } catch (DataAccessException e) { + logger.error(">>>>>>>>>查找进销存信息异常", e); + } + return accountSum; + } + + /** + * 单个账户的金额求和-收款、付款、转账、收预付款的单据明细的合计 + * + * @param id + * @return + */ + public Double getAccountSumByDetail(Long id, String timeStr, String type) { + Double accountSum = 0.0; + try { + AccountHeadExample example = new AccountHeadExample(); + if (!timeStr.equals("")) { + Date bTime = StringUtil.getDateByString(timeStr + "-01 00:00:00", null); + Date eTime = StringUtil.getDateByString(timeStr + "-31 00:00:00", null); + Date mTime = StringUtil.getDateByString(timeStr + "-01 00:00:00", null); + if (type.equals("month")) { + example.createCriteria().andBilltimeGreaterThanOrEqualTo(bTime).andBilltimeLessThanOrEqualTo(eTime); + } else if (type.equals("date")) { + example.createCriteria().andBilltimeLessThanOrEqualTo(mTime); + } + } + List dataList = accountHeadMapper.selectByExample(example); + if (dataList != null) { + String ids = ""; + for (AccountHead accountHead : dataList) { + ids = ids + accountHead.getId() + ","; + } + if (!ids.equals("")) { + ids = ids.substring(0, ids.length() - 1); + } + + AccountItemExample exampleAi = new AccountItemExample(); + if (!ids.equals("")) { + List idList = StringUtil.strToLongList(ids); + exampleAi.createCriteria().andAccountidEqualTo(id).andHeaderidIn(idList); + } else { + exampleAi.createCriteria().andAccountidEqualTo(id); + } + List dataListOne = accountItemMapper.selectByExample(exampleAi); + if (dataListOne != null) { + for (AccountItem accountItem : dataListOne) { + if(accountItem.getEachamount()!=null) { + accountSum = accountSum + accountItem.getEachamount(); + } + } + } + } + } catch (DataAccessException e) { + logger.error(">>>>>>>>>查找进销存信息异常", e); + } catch (Exception e) { + logger.error(">>>>>>>>>异常信息:", e); + } + return accountSum; + } + + /** + * 单个账户的金额求和-多账户的明细合计 + * + * @param id + * @return + */ + public Double getManyAccountSum(Long id, String timeStr, String type) { + Double accountSum = 0.0; + try { + DepotHeadExample example = new DepotHeadExample(); + if (!timeStr.equals("")) { + Date bTime = StringUtil.getDateByString(timeStr + "-01 00:00:00", null); + Date eTime = StringUtil.getDateByString(timeStr + "-31 00:00:00", null); + Date mTime = StringUtil.getDateByString(timeStr + "-01 00:00:00", null); + if (type.equals("month")) { + example.createCriteria().andAccountidlistLike("%" +id.toString() + "%") + .andOpertimeGreaterThanOrEqualTo(bTime).andOpertimeLessThanOrEqualTo(eTime); + } else if (type.equals("date")) { + example.createCriteria().andAccountidlistLike("%" +id.toString() + "%") + .andOpertimeLessThanOrEqualTo(mTime); + } + } else { + example.createCriteria().andAccountidlistLike("%" +id.toString() + "%"); + } + List dataList = depotHeadMapper.selectByExample(example); + if (dataList != null) { + for (DepotHead depotHead : dataList) { + String accountIdList = depotHead.getAccountidlist(); + String accountMoneyList = depotHead.getAccountmoneylist(); + accountIdList = accountIdList.replace("[", "").replace("]", "").replace("\"", ""); + accountMoneyList = accountMoneyList.replace("[", "").replace("]", "").replace("\"", ""); + String[] aList = accountIdList.split(","); + String[] amList = accountMoneyList.split(","); + for (int i = 0; i < aList.length; i++) { + if (aList[i].toString().equals(id.toString())) { + accountSum = accountSum + Double.parseDouble(amList[i].toString()); + } + } + } + } + } catch (DataAccessException e) { + logger.error(">>>>>>>>>查找信息异常", e); + } + return accountSum; + } + + public List findAccountInOutList(Long accountId, Integer offset, Integer rows) { + return accountMapper.findAccountInOutList(accountId, offset, rows); + } + + public int findAccountInOutListCount(Long accountId) { + return accountMapper.findAccountInOutListCount(accountId); + } + +} diff --git a/src/main/java/com/jsh/erp/service/accountHead/AccountHeadComponent.java b/src/main/java/com/jsh/erp/service/accountHead/AccountHeadComponent.java new file mode 100644 index 00000000..5d03d19d --- /dev/null +++ b/src/main/java/com/jsh/erp/service/accountHead/AccountHeadComponent.java @@ -0,0 +1,76 @@ +package com.jsh.erp.service.accountHead; + +import com.jsh.erp.service.ICommonQuery; +import com.jsh.erp.utils.Constants; +import com.jsh.erp.utils.QueryUtils; +import com.jsh.erp.utils.StringUtil; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import java.util.List; +import java.util.Map; + +@Service(value = "accountHead_component") +@AccountHeadResource +public class AccountHeadComponent implements ICommonQuery { + + @Resource + private AccountHeadService accountHeadService; + + @Override + public Object selectOne(String condition) { + return null; + } + + @Override + public List select(Map map) { + return getAccountHeadList(map); + } + + private List getAccountHeadList(Map map) { + String search = map.get(Constants.SEARCH); + String type = StringUtil.getInfo(search, "type"); + String billNo = StringUtil.getInfo(search, "billNo"); + String beginTime = StringUtil.getInfo(search, "beginTime"); + String endTime = StringUtil.getInfo(search, "endTime"); + String order = QueryUtils.order(map); + return accountHeadService.select(type, billNo, beginTime, endTime, QueryUtils.offset(map), QueryUtils.rows(map)); + } + + @Override + public int counts(Map map) { + String search = map.get(Constants.SEARCH); + String type = StringUtil.getInfo(search, "type"); + String billNo = StringUtil.getInfo(search, "billNo"); + String beginTime = StringUtil.getInfo(search, "beginTime"); + String endTime = StringUtil.getInfo(search, "endTime"); + return accountHeadService.countAccountHead(type, billNo, beginTime, endTime); + } + + @Override + public int insert(String beanJson, HttpServletRequest request) { + return accountHeadService.insertAccountHead(beanJson, request); + } + + @Override + public int update(String beanJson, Long id) { + return accountHeadService.updateAccountHead(beanJson, id); + } + + @Override + public int delete(Long id) { + return accountHeadService.deleteAccountHead(id); + } + + @Override + public int batchDelete(String ids) { + return accountHeadService.batchDeleteAccountHead(ids); + } + + @Override + public int checkIsNameExist(Long id, String name) { + return accountHeadService.checkIsNameExist(id, name); + } + +} diff --git a/src/main/java/com/jsh/erp/service/accountHead/AccountHeadResource.java b/src/main/java/com/jsh/erp/service/accountHead/AccountHeadResource.java new file mode 100644 index 00000000..7e27fd94 --- /dev/null +++ b/src/main/java/com/jsh/erp/service/accountHead/AccountHeadResource.java @@ -0,0 +1,15 @@ +package com.jsh.erp.service.accountHead; + +import com.jsh.erp.service.ResourceInfo; + +import java.lang.annotation.*; + +/** + * @author jishenghua qq752718920 2018-10-7 15:26:27 + */ +@ResourceInfo(value = "accountHead", type = 95) +@Inherited +@Target(ElementType.TYPE) +@Retention(RetentionPolicy.RUNTIME) +public @interface AccountHeadResource { +} diff --git a/src/main/java/com/jsh/erp/service/accountHead/AccountHeadService.java b/src/main/java/com/jsh/erp/service/accountHead/AccountHeadService.java new file mode 100644 index 00000000..58527b9d --- /dev/null +++ b/src/main/java/com/jsh/erp/service/accountHead/AccountHeadService.java @@ -0,0 +1,116 @@ +package com.jsh.erp.service.accountHead; + +import com.alibaba.fastjson.JSONObject; +import com.jsh.erp.datasource.entities.AccountHead; +import com.jsh.erp.datasource.entities.AccountHeadExample; +import com.jsh.erp.datasource.entities.AccountHeadVo4ListEx; +import com.jsh.erp.datasource.mappers.AccountHeadMapper; +import com.jsh.erp.utils.StringUtil; +import com.jsh.erp.utils.Tools; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import java.util.ArrayList; +import java.util.List; + +@Service +public class AccountHeadService { + private Logger logger = LoggerFactory.getLogger(AccountHeadService.class); + + @Resource + private AccountHeadMapper accountHeadMapper; + + public AccountHead getAccountHead(long id) { + return accountHeadMapper.selectByPrimaryKey(id); + } + + public List getAccountHead() { + AccountHeadExample example = new AccountHeadExample(); + return accountHeadMapper.selectByExample(example); + } + + public List select(String type, String billNo, String beginTime, String endTime, int offset, int rows) { + List resList = new ArrayList(); + List list = accountHeadMapper.selectByConditionAccountHead(type, billNo, beginTime, endTime, offset, rows); + if (null != list) { + for (AccountHeadVo4ListEx ah : list) { + if(ah.getChangeamount() != null) { + ah.setChangeamount(Math.abs(ah.getChangeamount())); + } + if(ah.getTotalprice() != null) { + ah.setTotalprice(Math.abs(ah.getTotalprice())); + } + resList.add(ah); + } + } + return resList; + } + + public int countAccountHead(String type, String billNo, String beginTime, String endTime) { + return accountHeadMapper.countsByAccountHead(type, billNo, beginTime, endTime); + } + + public int insertAccountHead(String beanJson, HttpServletRequest request) { + AccountHead accountHead = JSONObject.parseObject(beanJson, AccountHead.class); + return accountHeadMapper.insertSelective(accountHead); + } + + public int updateAccountHead(String beanJson, Long id) { + AccountHead accountHead = JSONObject.parseObject(beanJson, AccountHead.class); + accountHead.setId(id); + return accountHeadMapper.updateByPrimaryKeySelective(accountHead); + } + + public int deleteAccountHead(Long id) { + return accountHeadMapper.deleteByPrimaryKey(id); + } + + public int batchDeleteAccountHead(String ids) { + List idList = StringUtil.strToLongList(ids); + AccountHeadExample example = new AccountHeadExample(); + example.createCriteria().andIdIn(idList); + return accountHeadMapper.deleteByExample(example); + } + + public int checkIsNameExist(Long id, String name) { + AccountHeadExample example = new AccountHeadExample(); + example.createCriteria().andIdNotEqualTo(id); + List list = accountHeadMapper.selectByExample(example); + return list.size(); + } + + public Long getMaxId() { + return accountHeadMapper.getMaxId(); + } + + public Double findAllMoney(Integer supplierId, String type, String mode, String endTime) { + String modeName = ""; + if (mode.equals("实际")) { + modeName = "ChangeAmount"; + } else if (mode.equals("合计")) { + modeName = "TotalPrice"; + } + return accountHeadMapper.findAllMoney(supplierId, type, modeName, endTime); + } + + public List getDetailByNumber(String billNo) { + List resList = new ArrayList(); + List list = accountHeadMapper.getDetailByNumber(billNo); + if (null != list) { + for (AccountHeadVo4ListEx ah : list) { + if(ah.getChangeamount() != null) { + ah.setChangeamount(Math.abs(ah.getChangeamount())); + } + if(ah.getTotalprice() != null) { + ah.setTotalprice(Math.abs(ah.getTotalprice())); + } + resList.add(ah); + } + } + return resList; + } + +} diff --git a/src/main/java/com/jsh/erp/service/accountItem/AccountItemComponent.java b/src/main/java/com/jsh/erp/service/accountItem/AccountItemComponent.java new file mode 100644 index 00000000..c6f5345a --- /dev/null +++ b/src/main/java/com/jsh/erp/service/accountItem/AccountItemComponent.java @@ -0,0 +1,74 @@ +package com.jsh.erp.service.accountItem; + +import com.jsh.erp.service.ICommonQuery; +import com.jsh.erp.utils.Constants; +import com.jsh.erp.utils.QueryUtils; +import com.jsh.erp.utils.StringUtil; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import java.util.List; +import java.util.Map; + +@Service(value = "accountItem_component") +@AccountItemResource +public class AccountItemComponent implements ICommonQuery { + + @Resource + private AccountItemService accountItemService; + + @Override + public Object selectOne(String condition) { + return null; + } + + @Override + public List select(Map map) { + return getAccountItemList(map); + } + + private List getAccountItemList(Map map) { + String search = map.get(Constants.SEARCH); + String name = StringUtil.getInfo(search, "name"); + Integer type = StringUtil.parseInteger(StringUtil.getInfo(search, "type")); + String remark = StringUtil.getInfo(search, "remark"); + String order = QueryUtils.order(map); + return accountItemService.select(name, type, remark, QueryUtils.offset(map), QueryUtils.rows(map)); + } + + @Override + public int counts(Map map) { + String search = map.get(Constants.SEARCH); + String name = StringUtil.getInfo(search, "name"); + Integer type = StringUtil.parseInteger(StringUtil.getInfo(search, "type")); + String remark = StringUtil.getInfo(search, "remark"); + return accountItemService.countAccountItem(name, type, remark); + } + + @Override + public int insert(String beanJson, HttpServletRequest request) { + return accountItemService.insertAccountItem(beanJson, request); + } + + @Override + public int update(String beanJson, Long id) { + return accountItemService.updateAccountItem(beanJson, id); + } + + @Override + public int delete(Long id) { + return accountItemService.deleteAccountItem(id); + } + + @Override + public int batchDelete(String ids) { + return accountItemService.batchDeleteAccountItem(ids); + } + + @Override + public int checkIsNameExist(Long id, String name) { + return accountItemService.checkIsNameExist(id, name); + } + +} diff --git a/src/main/java/com/jsh/erp/service/accountItem/AccountItemResource.java b/src/main/java/com/jsh/erp/service/accountItem/AccountItemResource.java new file mode 100644 index 00000000..84abd37c --- /dev/null +++ b/src/main/java/com/jsh/erp/service/accountItem/AccountItemResource.java @@ -0,0 +1,15 @@ +package com.jsh.erp.service.accountItem; + +import com.jsh.erp.service.ResourceInfo; + +import java.lang.annotation.*; + +/** + * @author jishenghua qq752718920 2018-10-7 15:26:27 + */ +@ResourceInfo(value = "accountItem", type = 100) +@Inherited +@Target(ElementType.TYPE) +@Retention(RetentionPolicy.RUNTIME) +public @interface AccountItemResource { +} diff --git a/src/main/java/com/jsh/erp/service/accountItem/AccountItemService.java b/src/main/java/com/jsh/erp/service/accountItem/AccountItemService.java new file mode 100644 index 00000000..3ed08bfb --- /dev/null +++ b/src/main/java/com/jsh/erp/service/accountItem/AccountItemService.java @@ -0,0 +1,81 @@ +package com.jsh.erp.service.accountItem; + +import com.alibaba.fastjson.JSONObject; +import com.jsh.erp.datasource.entities.AccountItem; +import com.jsh.erp.datasource.entities.AccountItemExample; +import com.jsh.erp.datasource.mappers.AccountItemMapper; +import com.jsh.erp.datasource.vo.AccountItemVo4List; +import com.jsh.erp.utils.StringUtil; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import java.util.List; + +@Service +public class AccountItemService { + private Logger logger = LoggerFactory.getLogger(AccountItemService.class); + + @Resource + private AccountItemMapper accountItemMapper; + + public AccountItem getAccountItem(long id) { + return accountItemMapper.selectByPrimaryKey(id); + } + + public List getAccountItem() { + AccountItemExample example = new AccountItemExample(); + return accountItemMapper.selectByExample(example); + } + + public List select(String name, Integer type, String remark, int offset, int rows) { + return accountItemMapper.selectByConditionAccountItem(name, type, remark, offset, rows); + } + + public int countAccountItem(String name, Integer type, String remark) { + return accountItemMapper.countsByAccountItem(name, type, remark); + } + + public int insertAccountItem(String beanJson, HttpServletRequest request) { + AccountItem accountItem = JSONObject.parseObject(beanJson, AccountItem.class); + return accountItemMapper.insertSelective(accountItem); + } + + public int updateAccountItem(String beanJson, Long id) { + AccountItem accountItem = JSONObject.parseObject(beanJson, AccountItem.class); + accountItem.setId(id); + return accountItemMapper.updateByPrimaryKeySelective(accountItem); + } + + public int deleteAccountItem(Long id) { + return accountItemMapper.deleteByPrimaryKey(id); + } + + public int batchDeleteAccountItem(String ids) { + List idList = StringUtil.strToLongList(ids); + AccountItemExample example = new AccountItemExample(); + example.createCriteria().andIdIn(idList); + return accountItemMapper.deleteByExample(example); + } + + public int checkIsNameExist(Long id, String name) { + AccountItemExample example = new AccountItemExample(); + example.createCriteria().andIdNotEqualTo(id); + List list = accountItemMapper.selectByExample(example); + return list.size(); + } + + public int insertAccountItemWithObj(AccountItem accountItem) { + return accountItemMapper.insertSelective(accountItem); + } + + public int updateAccountItemWithObj(AccountItem accountItem) { + return accountItemMapper.updateByPrimaryKeySelective(accountItem); + } + + public List getDetailList(Long headerId) { + return accountItemMapper.getDetailList(headerId); + } +} diff --git a/src/main/java/com/jsh/erp/service/app/AppComponent.java b/src/main/java/com/jsh/erp/service/app/AppComponent.java new file mode 100644 index 00000000..f264b565 --- /dev/null +++ b/src/main/java/com/jsh/erp/service/app/AppComponent.java @@ -0,0 +1,72 @@ +package com.jsh.erp.service.app; + +import com.jsh.erp.service.ICommonQuery; +import com.jsh.erp.utils.Constants; +import com.jsh.erp.utils.QueryUtils; +import com.jsh.erp.utils.StringUtil; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import java.util.List; +import java.util.Map; + +@Service(value = "app_component") +@AppResource +public class AppComponent implements ICommonQuery { + + @Resource + private AppService appService; + + @Override + public Object selectOne(String condition) { + return null; + } + + @Override + public List select(Map map) { + return getAppList(map); + } + + private List getAppList(Map map) { + String search = map.get(Constants.SEARCH); + String name = StringUtil.getInfo(search, "name"); + String type = StringUtil.getInfo(search, "type"); + String order = QueryUtils.order(map); + return appService.select(name, type, QueryUtils.offset(map), QueryUtils.rows(map)); + } + + @Override + public int counts(Map map) { + String search = map.get(Constants.SEARCH); + String name = StringUtil.getInfo(search, "name"); + String type = StringUtil.getInfo(search, "type"); + return appService.countApp(name, type); + } + + @Override + public int insert(String beanJson, HttpServletRequest request) { + return appService.insertApp(beanJson, request); + } + + @Override + public int update(String beanJson, Long id) { + return appService.updateApp(beanJson, id); + } + + @Override + public int delete(Long id) { + return appService.deleteApp(id); + } + + @Override + public int batchDelete(String ids) { + return appService.batchDeleteApp(ids); + } + + @Override + public int checkIsNameExist(Long id, String name) { + return 0; + } + +} diff --git a/src/main/java/com/jsh/erp/service/app/AppResource.java b/src/main/java/com/jsh/erp/service/app/AppResource.java new file mode 100644 index 00000000..c5d3d56b --- /dev/null +++ b/src/main/java/com/jsh/erp/service/app/AppResource.java @@ -0,0 +1,15 @@ +package com.jsh.erp.service.app; + +import com.jsh.erp.service.ResourceInfo; + +import java.lang.annotation.*; + +/** + * @author jishenghua qq752718920 2018-10-7 15:26:27 + */ +@ResourceInfo(value = "app", type = 15) +@Inherited +@Target(ElementType.TYPE) +@Retention(RetentionPolicy.RUNTIME) +public @interface AppResource { +} diff --git a/src/main/java/com/jsh/erp/service/app/AppService.java b/src/main/java/com/jsh/erp/service/app/AppService.java new file mode 100644 index 00000000..833a0311 --- /dev/null +++ b/src/main/java/com/jsh/erp/service/app/AppService.java @@ -0,0 +1,85 @@ +package com.jsh.erp.service.app; + +import com.alibaba.fastjson.JSONObject; +import com.jsh.erp.datasource.entities.App; +import com.jsh.erp.datasource.entities.AppExample; +import com.jsh.erp.datasource.mappers.AppMapper; +import com.jsh.erp.utils.StringUtil; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import java.util.List; + +@Service +public class AppService { + private Logger logger = LoggerFactory.getLogger(AppService.class); + + @Resource + private AppMapper appMapper; + + public List findDock(){ + AppExample example = new AppExample(); + example.createCriteria().andZlEqualTo("dock").andEnabledEqualTo(true); + example.setOrderByClause("Sort"); + List list = appMapper.selectByExample(example); + return list; + } + + public List findDesk(){ + AppExample example = new AppExample(); + example.createCriteria().andZlEqualTo("desk").andEnabledEqualTo(true); + example.setOrderByClause("Sort"); + List list = appMapper.selectByExample(example); + return list; + } + + public App getApp(long id) { + return appMapper.selectByPrimaryKey(id); + } + + public List getApp() { + AppExample example = new AppExample(); + return appMapper.selectByExample(example); + } + + public List select(String name, String type, int offset, int rows) { + return appMapper.selectByConditionApp(name, type, offset, rows); + } + + public int countApp(String name, String type) { + return appMapper.countsByApp(name, type); + } + + public int insertApp(String beanJson, HttpServletRequest request) { + App app = JSONObject.parseObject(beanJson, App.class); + return appMapper.insertSelective(app); + } + + public int updateApp(String beanJson, Long id) { + App app = JSONObject.parseObject(beanJson, App.class); + app.setId(id); + return appMapper.updateByPrimaryKeySelective(app); + } + + public int deleteApp(Long id) { + return appMapper.deleteByPrimaryKey(id); + } + + public int batchDeleteApp(String ids) { + List idList = StringUtil.strToLongList(ids); + AppExample example = new AppExample(); + example.createCriteria().andIdIn(idList); + return appMapper.deleteByExample(example); + } + + public List findRoleAPP(){ + AppExample example = new AppExample(); + example.createCriteria().andEnabledEqualTo(true); + example.setOrderByClause("Sort"); + List list = appMapper.selectByExample(example); + return list; + } +} diff --git a/src/main/java/com/jsh/erp/service/depot/DepotComponent.java b/src/main/java/com/jsh/erp/service/depot/DepotComponent.java new file mode 100644 index 00000000..56a0516c --- /dev/null +++ b/src/main/java/com/jsh/erp/service/depot/DepotComponent.java @@ -0,0 +1,75 @@ +package com.jsh.erp.service.depot; + +import com.jsh.erp.service.ICommonQuery; +import com.jsh.erp.service.app.AppResource; +import com.jsh.erp.utils.Constants; +import com.jsh.erp.utils.QueryUtils; +import com.jsh.erp.utils.StringUtil; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import java.util.List; +import java.util.Map; + +@Service(value = "depot_component") +@DepotResource +public class DepotComponent implements ICommonQuery { + + @Resource + private DepotService depotService; + + @Override + public Object selectOne(String condition) { + return null; + } + + @Override + public List select(Map map) { + return getDepotList(map); + } + + private List getDepotList(Map map) { + String search = map.get(Constants.SEARCH); + String name = StringUtil.getInfo(search, "name"); + Integer type = StringUtil.parseInteger(StringUtil.getInfo(search, "type")); + String remark = StringUtil.getInfo(search, "remark"); + String order = QueryUtils.order(map); + return depotService.select(name, type, remark, QueryUtils.offset(map), QueryUtils.rows(map)); + } + + @Override + public int counts(Map map) { + String search = map.get(Constants.SEARCH); + String name = StringUtil.getInfo(search, "name"); + Integer type = StringUtil.parseInteger(StringUtil.getInfo(search, "type")); + String remark = StringUtil.getInfo(search, "remark"); + return depotService.countDepot(name, type, remark); + } + + @Override + public int insert(String beanJson, HttpServletRequest request) { + return depotService.insertDepot(beanJson, request); + } + + @Override + public int update(String beanJson, Long id) { + return depotService.updateDepot(beanJson, id); + } + + @Override + public int delete(Long id) { + return depotService.deleteDepot(id); + } + + @Override + public int batchDelete(String ids) { + return depotService.batchDeleteDepot(ids); + } + + @Override + public int checkIsNameExist(Long id, String name) { + return depotService.checkIsNameExist(id, name); + } + +} diff --git a/src/main/java/com/jsh/erp/service/depot/DepotResource.java b/src/main/java/com/jsh/erp/service/depot/DepotResource.java new file mode 100644 index 00000000..4d7d0f1e --- /dev/null +++ b/src/main/java/com/jsh/erp/service/depot/DepotResource.java @@ -0,0 +1,15 @@ +package com.jsh.erp.service.depot; + +import com.jsh.erp.service.ResourceInfo; + +import java.lang.annotation.*; + +/** + * @author jishenghua qq752718920 2018-10-7 15:26:27 + */ +@ResourceInfo(value = "depot", type = 20) +@Inherited +@Target(ElementType.TYPE) +@Retention(RetentionPolicy.RUNTIME) +public @interface DepotResource { +} diff --git a/src/main/java/com/jsh/erp/service/depot/DepotService.java b/src/main/java/com/jsh/erp/service/depot/DepotService.java new file mode 100644 index 00000000..fdba9a56 --- /dev/null +++ b/src/main/java/com/jsh/erp/service/depot/DepotService.java @@ -0,0 +1,91 @@ +package com.jsh.erp.service.depot; + +import com.alibaba.fastjson.JSONObject; +import com.jsh.erp.datasource.entities.Depot; +import com.jsh.erp.datasource.entities.DepotExample; +import com.jsh.erp.datasource.mappers.DepotMapper; +import com.jsh.erp.utils.StringUtil; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import java.util.List; + +@Service +public class DepotService { + private Logger logger = LoggerFactory.getLogger(DepotService.class); + + @Resource + private DepotMapper depotMapper; + + public Depot getDepot(long id) { + return depotMapper.selectByPrimaryKey(id); + } + + public List getDepot() { + DepotExample example = new DepotExample(); + return depotMapper.selectByExample(example); + } + + public List getAllList() { + DepotExample example = new DepotExample(); + example.setOrderByClause("sort"); + return depotMapper.selectByExample(example); + } + + public List select(String name, Integer type, String remark, int offset, int rows) { + return depotMapper.selectByConditionDepot(name, type, remark, offset, rows); + } + + public int countDepot(String name, Integer type, String remark) { + return depotMapper.countsByDepot(name, type, remark); + } + + public int insertDepot(String beanJson, HttpServletRequest request) { + Depot depot = JSONObject.parseObject(beanJson, Depot.class); + return depotMapper.insertSelective(depot); + } + + public int updateDepot(String beanJson, Long id) { + Depot depot = JSONObject.parseObject(beanJson, Depot.class); + depot.setId(id); + return depotMapper.updateByPrimaryKeySelective(depot); + } + + public int deleteDepot(Long id) { + return depotMapper.deleteByPrimaryKey(id); + } + + public int batchDeleteDepot(String ids) { + List idList = StringUtil.strToLongList(ids); + DepotExample example = new DepotExample(); + example.createCriteria().andIdIn(idList); + return depotMapper.deleteByExample(example); + } + + public int checkIsNameExist(Long id, String name) { + DepotExample example = new DepotExample(); + example.createCriteria().andIdNotEqualTo(id).andNameEqualTo(name); + List list = depotMapper.selectByExample(example); + return list.size(); + } + + public List findUserDepot(){ + DepotExample example = new DepotExample(); + example.createCriteria().andTypeEqualTo(0); + example.setOrderByClause("Sort"); + List list = depotMapper.selectByExample(example); + return list; + } + + public List findGiftByType(Integer type){ + DepotExample example = new DepotExample(); + example.createCriteria().andTypeEqualTo(type); + example.setOrderByClause("Sort"); + List list = depotMapper.selectByExample(example); + return list; + } + +} diff --git a/src/main/java/com/jsh/erp/service/depotHead/DepotHeadComponent.java b/src/main/java/com/jsh/erp/service/depotHead/DepotHeadComponent.java new file mode 100644 index 00000000..eec25de3 --- /dev/null +++ b/src/main/java/com/jsh/erp/service/depotHead/DepotHeadComponent.java @@ -0,0 +1,80 @@ +package com.jsh.erp.service.depotHead; + +import com.jsh.erp.service.ICommonQuery; +import com.jsh.erp.utils.Constants; +import com.jsh.erp.utils.QueryUtils; +import com.jsh.erp.utils.StringUtil; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import java.util.List; +import java.util.Map; + +@Service(value = "depotHead_component") +@DepotHeadResource +public class DepotHeadComponent implements ICommonQuery { + + @Resource + private DepotHeadService depotHeadService; + + @Override + public Object selectOne(String condition) { + return null; + } + + @Override + public List select(Map map) { + return getDepotHeadList(map); + } + + private List getDepotHeadList(Map map) { + String search = map.get(Constants.SEARCH); + String type = StringUtil.getInfo(search, "type"); + String subType = StringUtil.getInfo(search, "subType"); + String number = StringUtil.getInfo(search, "number"); + String beginTime = StringUtil.getInfo(search, "beginTime"); + String endTime = StringUtil.getInfo(search, "endTime"); + String dhIds = StringUtil.getInfo(search, "dhIds"); + String order = QueryUtils.order(map); + return depotHeadService.select(type, subType, number, beginTime, endTime, dhIds, QueryUtils.offset(map), QueryUtils.rows(map)); + } + + @Override + public int counts(Map map) { + String search = map.get(Constants.SEARCH); + String type = StringUtil.getInfo(search, "type"); + String subType = StringUtil.getInfo(search, "subType"); + String number = StringUtil.getInfo(search, "number"); + String beginTime = StringUtil.getInfo(search, "beginTime"); + String endTime = StringUtil.getInfo(search, "endTime"); + String dhIds = StringUtil.getInfo(search, "dhIds"); + return depotHeadService.countDepotHead(type, subType, number, beginTime, endTime, dhIds); + } + + @Override + public int insert(String beanJson, HttpServletRequest request) { + return depotHeadService.insertDepotHead(beanJson, request); + } + + @Override + public int update(String beanJson, Long id) { + return depotHeadService.updateDepotHead(beanJson, id); + } + + @Override + public int delete(Long id) { + return depotHeadService.deleteDepotHead(id); + } + + @Override + public int batchDelete(String ids) { + return depotHeadService.batchDeleteDepotHead(ids); + } + + @Override + public int checkIsNameExist(Long id, String name) { + return depotHeadService.checkIsNameExist(id, name); + } + +} diff --git a/src/main/java/com/jsh/erp/service/depotHead/DepotHeadResource.java b/src/main/java/com/jsh/erp/service/depotHead/DepotHeadResource.java new file mode 100644 index 00000000..1548cf30 --- /dev/null +++ b/src/main/java/com/jsh/erp/service/depotHead/DepotHeadResource.java @@ -0,0 +1,15 @@ +package com.jsh.erp.service.depotHead; + +import com.jsh.erp.service.ResourceInfo; + +import java.lang.annotation.*; + +/** + * @author jishenghua qq752718920 2018-10-7 15:26:27 + */ +@ResourceInfo(value = "depotHead", type = 85) +@Inherited +@Target(ElementType.TYPE) +@Retention(RetentionPolicy.RUNTIME) +public @interface DepotHeadResource { +} diff --git a/src/main/java/com/jsh/erp/service/depotHead/DepotHeadService.java b/src/main/java/com/jsh/erp/service/depotHead/DepotHeadService.java new file mode 100644 index 00000000..d4c7f96f --- /dev/null +++ b/src/main/java/com/jsh/erp/service/depotHead/DepotHeadService.java @@ -0,0 +1,242 @@ +package com.jsh.erp.service.depotHead; + +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.jsh.erp.datasource.entities.DepotHead; +import com.jsh.erp.datasource.entities.DepotHeadExample; +import com.jsh.erp.datasource.entities.User; +import com.jsh.erp.datasource.mappers.DepotHeadMapper; +import com.jsh.erp.datasource.vo.DepotHeadVo4InDetail; +import com.jsh.erp.datasource.vo.DepotHeadVo4InOutMCount; +import com.jsh.erp.datasource.vo.DepotHeadVo4List; +import com.jsh.erp.datasource.vo.DepotHeadVo4StatementAccount; +import com.jsh.erp.utils.StringUtil; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.dao.DataAccessException; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +@Service +public class DepotHeadService { + private Logger logger = LoggerFactory.getLogger(DepotHeadService.class); + + @Resource + private DepotHeadMapper depotHeadMapper; + + public DepotHead getDepotHead(long id) { + return depotHeadMapper.selectByPrimaryKey(id); + } + + public List getDepotHead() { + DepotHeadExample example = new DepotHeadExample(); + return depotHeadMapper.selectByExample(example); + } + + public List select(String type, String subType, String number, String beginTime, String endTime, String dhIds, int offset, int rows) { + List resList = new ArrayList(); + List list = depotHeadMapper.selectByConditionDepotHead(type, subType, number, beginTime, endTime, dhIds, offset, rows); + if (null != list) { + for (DepotHeadVo4List dh : list) { + if(dh.getOthermoneylist() != null) { + String otherMoneyListStr = dh.getOthermoneylist().replace("[", "").replace("]", "").replaceAll("\"", ""); + dh.setOthermoneylist(otherMoneyListStr); + } + if(dh.getOthermoneyitem() != null) { + String otherMoneyItemStr = dh.getOthermoneyitem().replace("[", "").replace("]", "").replaceAll("\"", ""); + dh.setOthermoneyitem(otherMoneyItemStr); + } + if(dh.getChangeamount() != null) { + dh.setChangeamount(Math.abs(dh.getChangeamount())); + } + if(dh.getTotalprice() != null) { + dh.setTotalprice(Math.abs(dh.getTotalprice())); + } + dh.setMaterialsList(findMaterialsListByHeaderId(dh.getId())); + resList.add(dh); + } + } + return resList; + } + + + + public int countDepotHead(String type, String subType, String number, String beginTime, String endTime, String dhIds) { + return depotHeadMapper.countsByDepotHead(type, subType, number, beginTime, endTime, dhIds); + } + + public int insertDepotHead(String beanJson, HttpServletRequest request) { + DepotHead depotHead = JSONObject.parseObject(beanJson, DepotHead.class); + //判断用户是否已经登录过,登录过不再处理 + Object userInfo = request.getSession().getAttribute("user"); + if (userInfo != null) { + User sessionUser = (User) userInfo; + String uName = sessionUser.getUsername(); + depotHead.setOperpersonname(uName); + } + depotHead.setCreatetime(new Timestamp(System.currentTimeMillis())); + depotHead.setStatus(false); + return depotHeadMapper.insertSelective(depotHead); + } + + public int updateDepotHead(String beanJson, Long id) { + DepotHead depotHead = JSONObject.parseObject(beanJson, DepotHead.class); + depotHead.setId(id); + return depotHeadMapper.updateByPrimaryKeySelective(depotHead); + } + + public int deleteDepotHead(Long id) { + return depotHeadMapper.deleteByPrimaryKey(id); + } + + public int batchDeleteDepotHead(String ids) { + List idList = StringUtil.strToLongList(ids); + DepotHeadExample example = new DepotHeadExample(); + example.createCriteria().andIdIn(idList); + return depotHeadMapper.deleteByExample(example); + } + + public int checkIsNameExist(Long id, String name) { + DepotHeadExample example = new DepotHeadExample(); + example.createCriteria().andIdNotEqualTo(id); + List list = depotHeadMapper.selectByExample(example); + return list.size(); + } + + public int batchSetStatus(Boolean status, String depotHeadIDs) { + List ids = StringUtil.strToLongList(depotHeadIDs); + DepotHead depotHead = new DepotHead(); + depotHead.setStatus(status); + DepotHeadExample example = new DepotHeadExample(); + example.createCriteria().andIdIn(ids); + return depotHeadMapper.updateByExampleSelective(depotHead, example); + } + + public String buildNumber(String type, String subType, String beginTime, String endTime) { + String newNumber = "0001"; //新编号 + try { + DepotHeadExample example = new DepotHeadExample(); + example.createCriteria().andTypeEqualTo(type).andSubtypeEqualTo(subType) + .andOpertimeGreaterThanOrEqualTo(StringUtil.getDateByString(beginTime,null)) + .andOpertimeLessThanOrEqualTo(StringUtil.getDateByString(endTime,null)); + example.setOrderByClause("Id desc"); + List dataList = depotHeadMapper.selectByExample(example); + //存放数据json数组 + if (null != dataList && dataList.size() > 0) { + DepotHead depotHead = dataList.get(0); + if (depotHead != null) { + String number = depotHead.getDefaultnumber(); //最大的单据编号 + if (number != null) { + Integer lastNumber = Integer.parseInt(number.substring(12, 16)); //末四尾 + lastNumber = lastNumber + 1; + Integer nLen = lastNumber.toString().length(); + if (nLen == 1) { + newNumber = "000" + lastNumber.toString(); + } else if (nLen == 2) { + newNumber = "00" + lastNumber.toString(); + } else if (nLen == 3) { + newNumber = "0" + lastNumber.toString(); + } else if (nLen == 4) { + newNumber = lastNumber.toString(); + } + } + } + } + } catch (DataAccessException e) { + logger.error(">>>>>>>>>>>>>>>>>>>单据编号生成异常", e); + } + return newNumber; + } + + public Long getMaxId() { + return depotHeadMapper.getMaxId(); + } + + public String findMaterialsListByHeaderId(Long id) { + String allReturn = depotHeadMapper.findMaterialsListByHeaderId(id); + return allReturn; + } + + public List findByMonth(String monthTime) { + DepotHeadExample example = new DepotHeadExample(); + monthTime = monthTime + "-31 00:00:00"; + Date month = StringUtil.getDateByString(monthTime, null); + example.createCriteria().andOpertimeLessThanOrEqualTo(month); + return depotHeadMapper.selectByExample(example); + } + + public List getDepotHeadGiftOut(String projectId) { + DepotHeadExample example = new DepotHeadExample(); + if (projectId != null) { + example.createCriteria().andProjectidEqualTo(Long.parseLong(projectId)); + } + return depotHeadMapper.selectByExample(example); + } + + public List findByAll(String beginTime, String endTime, String type, Integer pid, String dids, Integer oId, Integer offset, Integer rows) { + return depotHeadMapper.findByAll(beginTime, endTime, type, pid, dids, oId, offset, rows); + } + + public int findByAllCount(String beginTime, String endTime, String type, Integer pid, String dids, Integer oId) { + return depotHeadMapper.findByAllCount(beginTime, endTime, type, pid, dids, oId); + } + + public List findInOutMaterialCount(String beginTime, String endTime, String type, Integer pid, String dids, Integer oId, Integer offset, Integer rows) { + return depotHeadMapper.findInOutMaterialCount(beginTime, endTime, type, pid, dids, oId, offset, rows); + } + + public int findInOutMaterialCountTotal(String beginTime, String endTime, String type, Integer pid, String dids, Integer oId) { + return depotHeadMapper.findInOutMaterialCountTotal(beginTime, endTime, type, pid, dids, oId); + } + + public List findStatementAccount(String beginTime, String endTime, Integer organId, String supType, Integer offset, Integer rows) { + return depotHeadMapper.findStatementAccount(beginTime, endTime, organId, supType, offset, rows); + } + + public int findStatementAccountCount(String beginTime, String endTime, Integer organId, String supType) { + return depotHeadMapper.findStatementAccountCount(beginTime, endTime, organId, supType); + } + + public Double findAllMoney(Integer supplierId, String type, String subType, String mode, String endTime) { + String modeName = ""; + if (mode.equals("实际")) { + modeName = "ChangeAmount"; + } else if (mode.equals("合计")) { + modeName = "DiscountLastMoney"; + } + return depotHeadMapper.findAllMoney(supplierId, type, subType, modeName, endTime); + } + + public List getDetailByNumber(String number) { + List resList = new ArrayList(); + List list = depotHeadMapper.getDetailByNumber(number); + if (null != list) { + for (DepotHeadVo4List dh : list) { + if(dh.getOthermoneylist() != null) { + String otherMoneyListStr = dh.getOthermoneylist().replace("[", "").replace("]", "").replaceAll("\"", ""); + dh.setOthermoneylist(otherMoneyListStr); + } + if(dh.getOthermoneyitem() != null) { + String otherMoneyItemStr = dh.getOthermoneyitem().replace("[", "").replace("]", "").replaceAll("\"", ""); + dh.setOthermoneyitem(otherMoneyItemStr); + } + if(dh.getChangeamount() != null) { + dh.setChangeamount(Math.abs(dh.getChangeamount())); + } + if(dh.getTotalprice() != null) { + dh.setTotalprice(Math.abs(dh.getTotalprice())); + } + dh.setMaterialsList(findMaterialsListByHeaderId(dh.getId())); + resList.add(dh); + } + } + return resList; + } + +} diff --git a/src/main/java/com/jsh/erp/service/depotItem/DepotItemComponent.java b/src/main/java/com/jsh/erp/service/depotItem/DepotItemComponent.java new file mode 100644 index 00000000..78309adc --- /dev/null +++ b/src/main/java/com/jsh/erp/service/depotItem/DepotItemComponent.java @@ -0,0 +1,74 @@ +package com.jsh.erp.service.depotItem; + +import com.jsh.erp.service.ICommonQuery; +import com.jsh.erp.utils.Constants; +import com.jsh.erp.utils.QueryUtils; +import com.jsh.erp.utils.StringUtil; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import java.util.List; +import java.util.Map; + +@Service(value = "depotItem_component") +@DepotItemResource +public class DepotItemComponent implements ICommonQuery { + + @Resource + private DepotItemService depotItemService; + + @Override + public Object selectOne(String condition) { + return null; + } + + @Override + public List select(Map map) { + return getDepotItemList(map); + } + + private List getDepotItemList(Map map) { + String search = map.get(Constants.SEARCH); + String name = StringUtil.getInfo(search, "name"); + Integer type = StringUtil.parseInteger(StringUtil.getInfo(search, "type")); + String remark = StringUtil.getInfo(search, "remark"); + String order = QueryUtils.order(map); + return depotItemService.select(name, type, remark, QueryUtils.offset(map), QueryUtils.rows(map)); + } + + @Override + public int counts(Map map) { + String search = map.get(Constants.SEARCH); + String name = StringUtil.getInfo(search, "name"); + Integer type = StringUtil.parseInteger(StringUtil.getInfo(search, "type")); + String remark = StringUtil.getInfo(search, "remark"); + return depotItemService.countDepotItem(name, type, remark); + } + + @Override + public int insert(String beanJson, HttpServletRequest request) { + return depotItemService.insertDepotItem(beanJson, request); + } + + @Override + public int update(String beanJson, Long id) { + return depotItemService.updateDepotItem(beanJson, id); + } + + @Override + public int delete(Long id) { + return depotItemService.deleteDepotItem(id); + } + + @Override + public int batchDelete(String ids) { + return depotItemService.batchDeleteDepotItem(ids); + } + + @Override + public int checkIsNameExist(Long id, String name) { + return depotItemService.checkIsNameExist(id, name); + } + +} diff --git a/src/main/java/com/jsh/erp/service/depotItem/DepotItemResource.java b/src/main/java/com/jsh/erp/service/depotItem/DepotItemResource.java new file mode 100644 index 00000000..4f305781 --- /dev/null +++ b/src/main/java/com/jsh/erp/service/depotItem/DepotItemResource.java @@ -0,0 +1,15 @@ +package com.jsh.erp.service.depotItem; + +import com.jsh.erp.service.ResourceInfo; + +import java.lang.annotation.*; + +/** + * @author jishenghua qq752718920 2018-10-7 15:26:27 + */ +@ResourceInfo(value = "depotItem", type = 90) +@Inherited +@Target(ElementType.TYPE) +@Retention(RetentionPolicy.RUNTIME) +public @interface DepotItemResource { +} diff --git a/src/main/java/com/jsh/erp/service/depotItem/DepotItemService.java b/src/main/java/com/jsh/erp/service/depotItem/DepotItemService.java new file mode 100644 index 00000000..42f8c625 --- /dev/null +++ b/src/main/java/com/jsh/erp/service/depotItem/DepotItemService.java @@ -0,0 +1,194 @@ +package com.jsh.erp.service.depotItem; + +import com.alibaba.fastjson.JSONObject; +import com.jsh.erp.datasource.entities.*; +import com.jsh.erp.datasource.mappers.DepotItemMapper; +import com.jsh.erp.utils.QueryUtils; +import com.jsh.erp.utils.StringUtil; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import java.util.List; +import java.util.Map; + +@Service +public class DepotItemService { + private Logger logger = LoggerFactory.getLogger(DepotItemService.class); + + private final static String TYPE = "入库"; + private final static String SUM_TYPE = "Number"; + private final static String IN = "in"; + private final static String OUT = "out"; + + @Resource + private DepotItemMapper depotItemMapper; + + public DepotItem getDepotItem(long id) { + return depotItemMapper.selectByPrimaryKey(id); + } + + public List getDepotItem() { + DepotItemExample example = new DepotItemExample(); + return depotItemMapper.selectByExample(example); + } + + public List select(String name, Integer type, String remark, int offset, int rows) { + return depotItemMapper.selectByConditionDepotItem(name, type, remark, offset, rows); + } + + public int countDepotItem(String name, Integer type, String remark) { + return depotItemMapper.countsByDepotItem(name, type, remark); + } + + public int insertDepotItem(String beanJson, HttpServletRequest request) { + DepotItem depotItem = JSONObject.parseObject(beanJson, DepotItem.class); + return depotItemMapper.insertSelective(depotItem); + } + + public int updateDepotItem(String beanJson, Long id) { + DepotItem depotItem = JSONObject.parseObject(beanJson, DepotItem.class); + depotItem.setId(id); + return depotItemMapper.updateByPrimaryKeySelective(depotItem); + } + + public int deleteDepotItem(Long id) { + return depotItemMapper.deleteByPrimaryKey(id); + } + + public int batchDeleteDepotItem(String ids) { + List idList = StringUtil.strToLongList(ids); + DepotItemExample example = new DepotItemExample(); + example.createCriteria().andIdIn(idList); + return depotItemMapper.deleteByExample(example); + } + + public int checkIsNameExist(Long id, String name) { + DepotItemExample example = new DepotItemExample(); + example.createCriteria().andIdNotEqualTo(id); + List list = depotItemMapper.selectByExample(example); + return list.size(); + } + + public List getHeaderIdByMaterial(String materialParam, String depotIds) { + return depotItemMapper.getHeaderIdByMaterial(materialParam, depotIds); + } + + public List findDetailByTypeAndMaterialIdList(Map map) { + String mIdStr = map.get("mId"); + Long mId = null; + if(!StringUtil.isEmpty(mIdStr)) { + mId = Long.parseLong(mIdStr); + } + return depotItemMapper.findDetailByTypeAndMaterialIdList(mId, QueryUtils.offset(map), QueryUtils.rows(map)); + } + + public int findDetailByTypeAndMaterialIdCounts(Map map) { + String mIdStr = map.get("mId"); + Long mId = null; + if(!StringUtil.isEmpty(mIdStr)) { + mId = Long.parseLong(mIdStr); + } + return depotItemMapper.findDetailByTypeAndMaterialIdCounts(mId); + } + + public List findStockNumByMaterialIdList(Map map) { + String mIdStr = map.get("mId"); + Long mId = null; + if(!StringUtil.isEmpty(mIdStr)) { + mId = Long.parseLong(mIdStr); + } + String monthTime = map.get("monthTime"); + return depotItemMapper.findStockNumByMaterialIdList(mId, monthTime, QueryUtils.offset(map), QueryUtils.rows(map)); + } + + public int findStockNumByMaterialIdCounts(Map map) { + String mIdStr = map.get("mId"); + Long mId = null; + if(!StringUtil.isEmpty(mIdStr)) { + mId = Long.parseLong(mIdStr); + } + String monthTime = map.get("monthTime"); + return depotItemMapper.findStockNumByMaterialIdCounts(mId, monthTime); + } + + public int insertDepotItemWithObj(DepotItem depotItem) { + return depotItemMapper.insertSelective(depotItem); + } + + public int updateDepotItemWithObj(DepotItem depotItem) { + return depotItemMapper.updateByPrimaryKeySelective(depotItem); + } + + public int findByTypeAndMaterialId(String type, Long mId) { + if(type.equals(TYPE)) { + return depotItemMapper.findByTypeAndMaterialIdIn(mId); + } else { + return depotItemMapper.findByTypeAndMaterialIdOut(mId); + } + } + + public List getDetailList(Long headerId) { + return depotItemMapper.getDetailList(headerId); + } + + public List findByAll(String headIds, String materialIds, Integer offset, Integer rows) { + return depotItemMapper.findByAll(headIds, materialIds, offset, rows); + } + + public int findByAllCount(String headIds, String materialIds) { + return depotItemMapper.findByAllCount(headIds, materialIds); + } + + public Double findByType(String type, Integer ProjectId, Long MId, String MonthTime, Boolean isPrev) { + if (TYPE.equals(type)) { + if (isPrev) { + return depotItemMapper.findByTypeInIsPrev(ProjectId, MId, MonthTime); + } else { + return depotItemMapper.findByTypeInIsNotPrev(ProjectId, MId, MonthTime); + } + } else { + if (isPrev) { + return depotItemMapper.findByTypeOutIsPrev(ProjectId, MId, MonthTime); + } else { + return depotItemMapper.findByTypeOutIsNotPrev(ProjectId, MId, MonthTime); + } + } + } + + public Double findPriceByType(String type, Integer ProjectId, Long MId, String MonthTime, Boolean isPrev) { + if (TYPE.equals(type)) { + if (isPrev) { + return depotItemMapper.findPriceByTypeInIsPrev(ProjectId, MId, MonthTime); + } else { + return depotItemMapper.findPriceByTypeInIsNotPrev(ProjectId, MId, MonthTime); + } + } else { + if (isPrev) { + return depotItemMapper.findPriceByTypeOutIsPrev(ProjectId, MId, MonthTime); + } else { + return depotItemMapper.findPriceByTypeOutIsNotPrev(ProjectId, MId, MonthTime); + } + } + } + + public Double buyOrSale(String type, String subType, Long MId, String MonthTime, String sumType) { + if (SUM_TYPE.equals(sumType)) { + return depotItemMapper.buyOrSaleNumber(type, subType, MId, MonthTime, sumType); + } else { + return depotItemMapper.buyOrSalePrice(type, subType, MId, MonthTime, sumType); + } + } + + public Double findGiftByType(String subType, Integer ProjectId, Long MId, String type) { + if (IN.equals(type)) { + return depotItemMapper.findGiftByTypeIn(subType, ProjectId, MId); + } else { + return depotItemMapper.findGiftByTypeOut(subType, ProjectId, MId); + } + } + + +} diff --git a/src/main/java/com/jsh/erp/service/functions/FunctionsComponent.java b/src/main/java/com/jsh/erp/service/functions/FunctionsComponent.java new file mode 100644 index 00000000..3e5d0504 --- /dev/null +++ b/src/main/java/com/jsh/erp/service/functions/FunctionsComponent.java @@ -0,0 +1,74 @@ +package com.jsh.erp.service.functions; + +import com.jsh.erp.service.ICommonQuery; +import com.jsh.erp.service.app.AppResource; +import com.jsh.erp.service.functions.FunctionsService; +import com.jsh.erp.utils.Constants; +import com.jsh.erp.utils.QueryUtils; +import com.jsh.erp.utils.StringUtil; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import java.util.List; +import java.util.Map; + +@Service(value = "functions_component") +@FunctionsResource +public class FunctionsComponent implements ICommonQuery { + + @Resource + private FunctionsService functionsService; + + @Override + public Object selectOne(String condition) { + return null; + } + + @Override + public List select(Map map) { + return getFunctionsList(map); + } + + private List getFunctionsList(Map map) { + String search = map.get(Constants.SEARCH); + String name = StringUtil.getInfo(search, "name"); + String type = StringUtil.getInfo(search, "type"); + String order = QueryUtils.order(map); + return functionsService.select(name, type, QueryUtils.offset(map), QueryUtils.rows(map)); + } + + @Override + public int counts(Map map) { + String search = map.get(Constants.SEARCH); + String name = StringUtil.getInfo(search, "name"); + String type = StringUtil.getInfo(search, "type"); + return functionsService.countFunctions(name, type); + } + + @Override + public int insert(String beanJson, HttpServletRequest request) { + return functionsService.insertFunctions(beanJson, request); + } + + @Override + public int update(String beanJson, Long id) { + return functionsService.updateFunctions(beanJson, id); + } + + @Override + public int delete(Long id) { + return functionsService.deleteFunctions(id); + } + + @Override + public int batchDelete(String ids) { + return functionsService.batchDeleteFunctions(ids); + } + + @Override + public int checkIsNameExist(Long id, String name) { + return functionsService.checkIsNameExist(id, name); + } + +} diff --git a/src/main/java/com/jsh/erp/service/functions/FunctionsResource.java b/src/main/java/com/jsh/erp/service/functions/FunctionsResource.java new file mode 100644 index 00000000..b2938b6a --- /dev/null +++ b/src/main/java/com/jsh/erp/service/functions/FunctionsResource.java @@ -0,0 +1,15 @@ +package com.jsh.erp.service.functions; + +import com.jsh.erp.service.ResourceInfo; + +import java.lang.annotation.*; + +/** + * @author jishenghua qq752718920 2018-10-7 15:26:27 + */ +@ResourceInfo(value = "functions", type = 30) +@Inherited +@Target(ElementType.TYPE) +@Retention(RetentionPolicy.RUNTIME) +public @interface FunctionsResource { +} diff --git a/src/main/java/com/jsh/erp/service/functions/FunctionsService.java b/src/main/java/com/jsh/erp/service/functions/FunctionsService.java new file mode 100644 index 00000000..e625c2af --- /dev/null +++ b/src/main/java/com/jsh/erp/service/functions/FunctionsService.java @@ -0,0 +1,84 @@ +package com.jsh.erp.service.functions; + +import com.alibaba.fastjson.JSONObject; +import com.jsh.erp.datasource.entities.Functions; +import com.jsh.erp.datasource.entities.FunctionsExample; +import com.jsh.erp.datasource.mappers.FunctionsMapper; +import com.jsh.erp.utils.StringUtil; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import java.util.List; + +@Service +public class FunctionsService { + private Logger logger = LoggerFactory.getLogger(FunctionsService.class); + + @Resource + private FunctionsMapper functionsMapper; + + public Functions getFunctions(long id) { + return functionsMapper.selectByPrimaryKey(id); + } + + public List getFunctions() { + FunctionsExample example = new FunctionsExample(); + return functionsMapper.selectByExample(example); + } + + public List select(String name, String type, int offset, int rows) { + return functionsMapper.selectByConditionFunctions(name, type, offset, rows); + } + + public int countFunctions(String name, String type) { + return functionsMapper.countsByFunctions(name, type); + } + + public int insertFunctions(String beanJson, HttpServletRequest request) { + Functions depot = JSONObject.parseObject(beanJson, Functions.class); + return functionsMapper.insertSelective(depot); + } + + public int updateFunctions(String beanJson, Long id) { + Functions depot = JSONObject.parseObject(beanJson, Functions.class); + depot.setId(id); + return functionsMapper.updateByPrimaryKeySelective(depot); + } + + public int deleteFunctions(Long id) { + return functionsMapper.deleteByPrimaryKey(id); + } + + public int batchDeleteFunctions(String ids) { + List idList = StringUtil.strToLongList(ids); + FunctionsExample example = new FunctionsExample(); + example.createCriteria().andIdIn(idList); + return functionsMapper.deleteByExample(example); + } + + public int checkIsNameExist(Long id, String name) { + FunctionsExample example = new FunctionsExample(); + example.createCriteria().andIdNotEqualTo(id).andNameEqualTo(name); + List list = functionsMapper.selectByExample(example); + return list.size(); + } + + public List getRoleFunctions(String pNumber) { + FunctionsExample example = new FunctionsExample(); + example.createCriteria().andEnabledEqualTo(true).andPnumberEqualTo(pNumber); + example.setOrderByClause("Sort"); + List list = functionsMapper.selectByExample(example); + return list; + } + + public List findRoleFunctions(String pnumber){ + FunctionsExample example = new FunctionsExample(); + example.createCriteria().andEnabledEqualTo(true).andPnumberEqualTo(pnumber); + example.setOrderByClause("Sort"); + List list = functionsMapper.selectByExample(example); + return list; + } +} diff --git a/src/main/java/com/jsh/erp/service/inOutItem/InOutItemComponent.java b/src/main/java/com/jsh/erp/service/inOutItem/InOutItemComponent.java new file mode 100644 index 00000000..90705a98 --- /dev/null +++ b/src/main/java/com/jsh/erp/service/inOutItem/InOutItemComponent.java @@ -0,0 +1,74 @@ +package com.jsh.erp.service.inOutItem; + +import com.jsh.erp.service.ICommonQuery; +import com.jsh.erp.utils.Constants; +import com.jsh.erp.utils.QueryUtils; +import com.jsh.erp.utils.StringUtil; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import java.util.List; +import java.util.Map; + +@Service(value = "inOutItem_component") +@InOutItemResource +public class InOutItemComponent implements ICommonQuery { + + @Resource + private InOutItemService inOutItemService; + + @Override + public Object selectOne(String condition) { + return null; + } + + @Override + public List select(Map map) { + return getFunctionsList(map); + } + + private List getFunctionsList(Map map) { + String search = map.get(Constants.SEARCH); + String name = StringUtil.getInfo(search, "name"); + String type = StringUtil.getInfo(search, "type"); + String remark = StringUtil.getInfo(search, "remark"); + String order = QueryUtils.order(map); + return inOutItemService.select(name, type, remark, QueryUtils.offset(map), QueryUtils.rows(map)); + } + + @Override + public int counts(Map map) { + String search = map.get(Constants.SEARCH); + String name = StringUtil.getInfo(search, "name"); + String type = StringUtil.getInfo(search, "type"); + String remark = StringUtil.getInfo(search, "remark"); + return inOutItemService.countInOutItem(name, type, remark); + } + + @Override + public int insert(String beanJson, HttpServletRequest request) { + return inOutItemService.insertInOutItem(beanJson, request); + } + + @Override + public int update(String beanJson, Long id) { + return inOutItemService.updateInOutItem(beanJson, id); + } + + @Override + public int delete(Long id) { + return inOutItemService.deleteInOutItem(id); + } + + @Override + public int batchDelete(String ids) { + return inOutItemService.batchDeleteInOutItem(ids); + } + + @Override + public int checkIsNameExist(Long id, String name) { + return inOutItemService.checkIsNameExist(id, name); + } + +} diff --git a/src/main/java/com/jsh/erp/service/inOutItem/InOutItemResource.java b/src/main/java/com/jsh/erp/service/inOutItem/InOutItemResource.java new file mode 100644 index 00000000..6869a16c --- /dev/null +++ b/src/main/java/com/jsh/erp/service/inOutItem/InOutItemResource.java @@ -0,0 +1,15 @@ +package com.jsh.erp.service.inOutItem; + +import com.jsh.erp.service.ResourceInfo; + +import java.lang.annotation.*; + +/** + * @author jishenghua qq752718920 2018-10-7 15:26:27 + */ +@ResourceInfo(value = "inOutItem", type = 35) +@Inherited +@Target(ElementType.TYPE) +@Retention(RetentionPolicy.RUNTIME) +public @interface InOutItemResource { +} diff --git a/src/main/java/com/jsh/erp/service/inOutItem/InOutItemService.java b/src/main/java/com/jsh/erp/service/inOutItem/InOutItemService.java new file mode 100644 index 00000000..9bd964d7 --- /dev/null +++ b/src/main/java/com/jsh/erp/service/inOutItem/InOutItemService.java @@ -0,0 +1,79 @@ +package com.jsh.erp.service.inOutItem; + +import com.alibaba.fastjson.JSONObject; +import com.jsh.erp.datasource.entities.InOutItem; +import com.jsh.erp.datasource.entities.InOutItemExample; +import com.jsh.erp.datasource.mappers.InOutItemMapper; +import com.jsh.erp.utils.StringUtil; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import java.util.List; + +@Service +public class InOutItemService { + private Logger logger = LoggerFactory.getLogger(InOutItemService.class); + + @Resource + private InOutItemMapper inOutItemMapper; + + public InOutItem getInOutItem(long id) { + return inOutItemMapper.selectByPrimaryKey(id); + } + + public List getInOutItem() { + InOutItemExample example = new InOutItemExample(); + return inOutItemMapper.selectByExample(example); + } + + public List select(String name, String type, String remark, int offset, int rows) { + return inOutItemMapper.selectByConditionInOutItem(name, type, remark, offset, rows); + } + + public int countInOutItem(String name, String type, String remark) { + return inOutItemMapper.countsByInOutItem(name, type, remark); + } + + public int insertInOutItem(String beanJson, HttpServletRequest request) { + InOutItem depot = JSONObject.parseObject(beanJson, InOutItem.class); + return inOutItemMapper.insertSelective(depot); + } + + public int updateInOutItem(String beanJson, Long id) { + InOutItem depot = JSONObject.parseObject(beanJson, InOutItem.class); + depot.setId(id); + return inOutItemMapper.updateByPrimaryKeySelective(depot); + } + + public int deleteInOutItem(Long id) { + return inOutItemMapper.deleteByPrimaryKey(id); + } + + public int batchDeleteInOutItem(String ids) { + List idList = StringUtil.strToLongList(ids); + InOutItemExample example = new InOutItemExample(); + example.createCriteria().andIdIn(idList); + return inOutItemMapper.deleteByExample(example); + } + + public int checkIsNameExist(Long id, String name) { + InOutItemExample example = new InOutItemExample(); + example.createCriteria().andIdNotEqualTo(id).andNameEqualTo(name); + List list = inOutItemMapper.selectByExample(example); + return list.size(); + } + + public List findBySelect(String type) { + InOutItemExample example = new InOutItemExample(); + if (type.equals("in")) { + example.createCriteria().andTypeEqualTo("收入"); + } else if (type.equals("out")) { + example.createCriteria().andTypeEqualTo("支出"); + } + example.setOrderByClause("id desc"); + return inOutItemMapper.selectByExample(example); + } +} diff --git a/src/main/java/com/jsh/erp/service/log/LogComponent.java b/src/main/java/com/jsh/erp/service/log/LogComponent.java new file mode 100644 index 00000000..aaf3680c --- /dev/null +++ b/src/main/java/com/jsh/erp/service/log/LogComponent.java @@ -0,0 +1,83 @@ +package com.jsh.erp.service.log; + +import com.jsh.erp.service.ICommonQuery; +import com.jsh.erp.utils.Constants; +import com.jsh.erp.utils.QueryUtils; +import com.jsh.erp.utils.StringUtil; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import java.util.List; +import java.util.Map; + +@Service(value = "log_component") +@LogResource +public class LogComponent implements ICommonQuery { + + @Resource + private LogService logService; + + @Override + public Object selectOne(String condition) { + return null; + } + + @Override + public List select(Map map) { + return getUserList(map); + } + + private List getUserList(Map map) { + String search = map.get(Constants.SEARCH); + String operation = StringUtil.getInfo(search, "operation"); + Integer usernameID = StringUtil.parseInteger(StringUtil.getInfo(search, "usernameID")); + String clientIp = StringUtil.getInfo(search, "clientIp"); + Integer status = StringUtil.parseInteger(StringUtil.getInfo(search, "status")); + String beginTime = StringUtil.getInfo(search, "beginTime"); + String endTime = StringUtil.getInfo(search, "endTime"); + String contentdetails = StringUtil.getInfo(search, "contentdetails"); + String order = QueryUtils.order(map); + return logService.select(operation, usernameID, clientIp, status, beginTime, endTime, contentdetails, + QueryUtils.offset(map), QueryUtils.rows(map)); + } + + @Override + public int counts(Map map) { + String search = map.get(Constants.SEARCH); + String operation = StringUtil.getInfo(search, "operation"); + Integer usernameID = StringUtil.parseInteger(StringUtil.getInfo(search, "usernameID")); + String clientIp = StringUtil.getInfo(search, "clientIp"); + Integer status = StringUtil.parseInteger(StringUtil.getInfo(search, "status")); + String beginTime = StringUtil.getInfo(search, "beginTime"); + String endTime = StringUtil.getInfo(search, "endTime"); + String contentdetails = StringUtil.getInfo(search, "contentdetails"); + return logService.countLog(operation, usernameID, clientIp, status, beginTime, endTime, contentdetails); + } + + @Override + public int insert(String beanJson, HttpServletRequest request) { + return logService.insertLog(beanJson, request); + } + + @Override + public int update(String beanJson, Long id) { + return logService.updateLog(beanJson, id); + } + + @Override + public int delete(Long id) { + return logService.deleteLog(id); + } + + @Override + public int batchDelete(String ids) { + return logService.batchDeleteLog(ids); + } + + @Override + public int checkIsNameExist(Long id, String name) { + return 0; + } + +} diff --git a/src/main/java/com/jsh/erp/service/log/LogResource.java b/src/main/java/com/jsh/erp/service/log/LogResource.java new file mode 100644 index 00000000..2c02ffa3 --- /dev/null +++ b/src/main/java/com/jsh/erp/service/log/LogResource.java @@ -0,0 +1,15 @@ +package com.jsh.erp.service.log; + +import com.jsh.erp.service.ResourceInfo; + +import java.lang.annotation.*; + +/** + * @author jishenghua qq752718920 2018-10-7 15:26:27 + */ +@ResourceInfo(value = "log", type = 25) +@Inherited +@Target(ElementType.TYPE) +@Retention(RetentionPolicy.RUNTIME) +public @interface LogResource { +} diff --git a/src/main/java/com/jsh/erp/service/log/LogService.java b/src/main/java/com/jsh/erp/service/log/LogService.java new file mode 100644 index 00000000..538d8229 --- /dev/null +++ b/src/main/java/com/jsh/erp/service/log/LogService.java @@ -0,0 +1,68 @@ +package com.jsh.erp.service.log; + +import com.alibaba.fastjson.JSONObject; +import com.jsh.erp.datasource.entities.Log; +import com.jsh.erp.datasource.entities.LogExample; +import com.jsh.erp.datasource.mappers.LogMapper; +import com.jsh.erp.utils.ExceptionCodeConstants; +import com.jsh.erp.utils.JshException; +import com.jsh.erp.utils.StringUtil; +import com.jsh.erp.utils.Tools; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import java.security.NoSuchAlgorithmException; +import java.util.List; + +@Service +public class LogService { + private Logger logger = LoggerFactory.getLogger(LogService.class); + @Resource + private LogMapper logMapper; + + public Log getLog(long id) { + return logMapper.selectByPrimaryKey(id); + } + + public List getLog() { + LogExample example = new LogExample(); + return logMapper.selectByExample(example); + } + + public List select(String operation, Integer usernameID, String clientIp, Integer status, String beginTime, String endTime, + String contentdetails, int offset, int rows) { + return logMapper.selectByConditionLog(operation, usernameID, clientIp, status, beginTime, endTime, + contentdetails, offset, rows); + } + + public int countLog(String operation, Integer usernameID, String clientIp, Integer status, String beginTime, String endTime, + String contentdetails) { + return logMapper.countsByLog(operation, usernameID, clientIp, status, beginTime, endTime, contentdetails); + } + + public int insertLog(String beanJson, HttpServletRequest request) { + Log log = JSONObject.parseObject(beanJson, Log.class); + return logMapper.insertSelective(log); + } + + public int updateLog(String beanJson, Long id) { + Log log = JSONObject.parseObject(beanJson, Log.class); + log.setId(id); + return logMapper.updateByPrimaryKeySelective(log); + } + + public int deleteLog(Long id) { + return logMapper.deleteByPrimaryKey(id); + } + + public int batchDeleteLog(String ids) { + List idList = StringUtil.strToLongList(ids); + LogExample example = new LogExample(); + example.createCriteria().andIdIn(idList); + return logMapper.deleteByExample(example); + } + +} diff --git a/src/main/java/com/jsh/erp/service/material/MaterialComponent.java b/src/main/java/com/jsh/erp/service/material/MaterialComponent.java new file mode 100644 index 00000000..7d986cf1 --- /dev/null +++ b/src/main/java/com/jsh/erp/service/material/MaterialComponent.java @@ -0,0 +1,74 @@ +package com.jsh.erp.service.material; + +import com.jsh.erp.service.ICommonQuery; +import com.jsh.erp.service.depot.DepotResource; +import com.jsh.erp.service.depot.DepotService; +import com.jsh.erp.utils.Constants; +import com.jsh.erp.utils.QueryUtils; +import com.jsh.erp.utils.StringUtil; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import java.util.List; +import java.util.Map; + +@Service(value = "material_component") +@MaterialResource +public class MaterialComponent implements ICommonQuery { + + @Resource + private MaterialService materialService; + + @Override + public Object selectOne(String condition) { + return null; + } + + @Override + public List select(Map map) { + return getMaterialList(map); + } + + private List getMaterialList(Map map) { + String search = map.get(Constants.SEARCH); + String name = StringUtil.getInfo(search, "name"); + String model = StringUtil.getInfo(search, "model"); + String order = QueryUtils.order(map); + return materialService.select(name, model, QueryUtils.offset(map), QueryUtils.rows(map)); + } + + @Override + public int counts(Map map) { + String search = map.get(Constants.SEARCH); + String name = StringUtil.getInfo(search, "name"); + String model = StringUtil.getInfo(search, "model"); + return materialService.countMaterial(name, model); + } + + @Override + public int insert(String beanJson, HttpServletRequest request) { + return materialService.insertMaterial(beanJson, request); + } + + @Override + public int update(String beanJson, Long id) { + return materialService.updateMaterial(beanJson, id); + } + + @Override + public int delete(Long id) { + return materialService.deleteMaterial(id); + } + + @Override + public int batchDelete(String ids) { + return materialService.batchDeleteMaterial(ids); + } + + @Override + public int checkIsNameExist(Long id, String name) { + return materialService.checkIsNameExist(id, name); + } + +} diff --git a/src/main/java/com/jsh/erp/service/material/MaterialResource.java b/src/main/java/com/jsh/erp/service/material/MaterialResource.java new file mode 100644 index 00000000..507df1b0 --- /dev/null +++ b/src/main/java/com/jsh/erp/service/material/MaterialResource.java @@ -0,0 +1,15 @@ +package com.jsh.erp.service.material; + +import com.jsh.erp.service.ResourceInfo; + +import java.lang.annotation.*; + +/** + * @author jishenghua qq752718920 2018-10-7 15:26:27 + */ +@ResourceInfo(value = "material", type = 80) +@Inherited +@Target(ElementType.TYPE) +@Retention(RetentionPolicy.RUNTIME) +public @interface MaterialResource { +} diff --git a/src/main/java/com/jsh/erp/service/material/MaterialService.java b/src/main/java/com/jsh/erp/service/material/MaterialService.java new file mode 100644 index 00000000..650c3ee8 --- /dev/null +++ b/src/main/java/com/jsh/erp/service/material/MaterialService.java @@ -0,0 +1,117 @@ +package com.jsh.erp.service.material; + +import com.alibaba.fastjson.JSONObject; +import com.jsh.erp.datasource.entities.Material; +import com.jsh.erp.datasource.entities.MaterialExample; +import com.jsh.erp.datasource.entities.MaterialVo4Unit; +import com.jsh.erp.datasource.mappers.MaterialMapper; +import com.jsh.erp.utils.StringUtil; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import java.util.ArrayList; +import java.util.List; + +@Service +public class MaterialService { + private Logger logger = LoggerFactory.getLogger(MaterialService.class); + + @Resource + private MaterialMapper materialMapper; + + public Material getMaterial(long id) { + return materialMapper.selectByPrimaryKey(id); + } + + public List getMaterial() { + MaterialExample example = new MaterialExample(); + return materialMapper.selectByExample(example); + } + + public List select(String name, String model, int offset, int rows) { + return materialMapper.selectByConditionMaterial(name, model, offset, rows); + } + + public int countMaterial(String name, String model) { + return materialMapper.countsByMaterial(name, model); + } + + public int insertMaterial(String beanJson, HttpServletRequest request) { + Material material = JSONObject.parseObject(beanJson, Material.class); + return materialMapper.insertSelective(material); + } + + public int updateMaterial(String beanJson, Long id) { + Material material = JSONObject.parseObject(beanJson, Material.class); + material.setId(id); + return materialMapper.updateByPrimaryKeySelective(material); + } + + public int deleteMaterial(Long id) { + return materialMapper.deleteByPrimaryKey(id); + } + + public int batchDeleteMaterial(String ids) { + List idList = StringUtil.strToLongList(ids); + MaterialExample example = new MaterialExample(); + example.createCriteria().andIdIn(idList); + return materialMapper.deleteByExample(example); + } + + public int checkIsNameExist(Long id, String name) { + MaterialExample example = new MaterialExample(); + example.createCriteria().andIdNotEqualTo(id).andNameEqualTo(name); + List list = materialMapper.selectByExample(example); + return list.size(); + } + + public int checkIsExist(Long id, String name, String model, String color, String standard, String mfrs, + String otherField1, String otherField2, String otherField3, String unit, Long unitId) { + MaterialExample example = new MaterialExample(); + if (id > 0) { + example.createCriteria().andIdNotEqualTo(id); + } + example.createCriteria().andNameEqualTo(name).andModelEqualTo(model).andColorEqualTo(color) + .andStandardEqualTo(standard).andMfrsEqualTo(mfrs) + .andOtherfield1EqualTo(otherField1).andOtherfield2EqualTo(otherField2).andOtherfield2EqualTo(otherField3); + if (unit !=null) { + example.createCriteria().andUnitEqualTo(unit); + } + if (unitId !=null) { + example.createCriteria().andUnitidEqualTo(unitId); + } + List list = materialMapper.selectByExample(example); + return list.size(); + } + + public int batchSetEnable(Boolean enabled, String materialIDs) { + List ids = StringUtil.strToLongList(materialIDs); + Material material = new Material(); + material.setEnabled(enabled); + MaterialExample example = new MaterialExample(); + example.createCriteria().andIdIn(ids); + return materialMapper.updateByExampleSelective(material, example); + } + + public String findUnitName(Long mId){ + return materialMapper.findUnitName(mId); + } + + public List findById(Long id){ + return materialMapper.findById(id); + } + + public List findBySelect(){ + return materialMapper.findBySelect(); + } + + public List findByOrder(){ + MaterialExample example = new MaterialExample(); + example.setOrderByClause("Name,Model asc"); + return materialMapper.selectByExample(example); + } + +} diff --git a/src/main/java/com/jsh/erp/service/materialCategory/MaterialCategoryComponent.java b/src/main/java/com/jsh/erp/service/materialCategory/MaterialCategoryComponent.java new file mode 100644 index 00000000..2e3f15b2 --- /dev/null +++ b/src/main/java/com/jsh/erp/service/materialCategory/MaterialCategoryComponent.java @@ -0,0 +1,74 @@ +package com.jsh.erp.service.materialCategory; + +import com.jsh.erp.service.ICommonQuery; +import com.jsh.erp.service.materialProperty.MaterialPropertyResource; +import com.jsh.erp.service.materialProperty.MaterialPropertyService; +import com.jsh.erp.utils.Constants; +import com.jsh.erp.utils.QueryUtils; +import com.jsh.erp.utils.StringUtil; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import java.util.List; +import java.util.Map; + +@Service(value = "materialCategory_component") +@MaterialCategoryResource +public class MaterialCategoryComponent implements ICommonQuery { + + @Resource + private MaterialCategoryService materialCategoryService; + + @Override + public Object selectOne(String condition) { + return null; + } + + @Override + public List select(Map map) { + return getMaterialCategoryList(map); + } + + private List getMaterialCategoryList(Map map) { + String search = map.get(Constants.SEARCH); + String name = StringUtil.getInfo(search, "name"); + Integer parentId = StringUtil.parseInteger(StringUtil.getInfo(search, "parentId")); + String order = QueryUtils.order(map); + return materialCategoryService.select(name, parentId, QueryUtils.offset(map), QueryUtils.rows(map)); + } + + @Override + public int counts(Map map) { + String search = map.get(Constants.SEARCH); + String name = StringUtil.getInfo(search, "name"); + Integer parentId = StringUtil.parseInteger(StringUtil.getInfo(search, "parentId")); + return materialCategoryService.countMaterialCategory(name, parentId); + } + + @Override + public int insert(String beanJson, HttpServletRequest request) { + return materialCategoryService.insertMaterialCategory(beanJson, request); + } + + @Override + public int update(String beanJson, Long id) { + return materialCategoryService.updateMaterialCategory(beanJson, id); + } + + @Override + public int delete(Long id) { + return materialCategoryService.deleteMaterialCategory(id); + } + + @Override + public int batchDelete(String ids) { + return materialCategoryService.batchDeleteMaterialCategory(ids); + } + + @Override + public int checkIsNameExist(Long id, String name) { + return materialCategoryService.checkIsNameExist(id, name); + } + +} diff --git a/src/main/java/com/jsh/erp/service/materialCategory/MaterialCategoryResource.java b/src/main/java/com/jsh/erp/service/materialCategory/MaterialCategoryResource.java new file mode 100644 index 00000000..9ba1b8c9 --- /dev/null +++ b/src/main/java/com/jsh/erp/service/materialCategory/MaterialCategoryResource.java @@ -0,0 +1,15 @@ +package com.jsh.erp.service.materialCategory; + +import com.jsh.erp.service.ResourceInfo; + +import java.lang.annotation.*; + +/** + * @author jishenghua qq752718920 2018-10-7 15:26:27 + */ +@ResourceInfo(value = "materialCategory", type = 75) +@Inherited +@Target(ElementType.TYPE) +@Retention(RetentionPolicy.RUNTIME) +public @interface MaterialCategoryResource { +} diff --git a/src/main/java/com/jsh/erp/service/materialCategory/MaterialCategoryService.java b/src/main/java/com/jsh/erp/service/materialCategory/MaterialCategoryService.java new file mode 100644 index 00000000..a814af25 --- /dev/null +++ b/src/main/java/com/jsh/erp/service/materialCategory/MaterialCategoryService.java @@ -0,0 +1,78 @@ +package com.jsh.erp.service.materialCategory; + +import com.alibaba.fastjson.JSONObject; +import com.jsh.erp.datasource.entities.MaterialCategory; +import com.jsh.erp.datasource.entities.MaterialCategoryExample; +import com.jsh.erp.datasource.mappers.MaterialCategoryMapper; +import com.jsh.erp.utils.StringUtil; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import java.util.List; + +@Service +public class MaterialCategoryService { + private Logger logger = LoggerFactory.getLogger(MaterialCategoryService.class); + + @Resource + private MaterialCategoryMapper materialCategoryMapper; + + public MaterialCategory getMaterialCategory(long id) { + return materialCategoryMapper.selectByPrimaryKey(id); + } + + public List getMaterialCategory() { + MaterialCategoryExample example = new MaterialCategoryExample(); + return materialCategoryMapper.selectByExample(example); + } + + public List getAllList(Long parentId) { + MaterialCategoryExample example = new MaterialCategoryExample(); + example.createCriteria().andParentidEqualTo(parentId); + example.setOrderByClause("id"); + return materialCategoryMapper.selectByExample(example); + } + + public List select(String name, Integer parentId, int offset, int rows) { + return materialCategoryMapper.selectByConditionMaterialCategory(name, parentId, offset, rows); + } + + public int countMaterialCategory(String name, Integer parentId) { + return materialCategoryMapper.countsByMaterialCategory(name, parentId); + } + + public int insertMaterialCategory(String beanJson, HttpServletRequest request) { + MaterialCategory materialCategory = JSONObject.parseObject(beanJson, MaterialCategory.class); + return materialCategoryMapper.insertSelective(materialCategory); + } + + public int updateMaterialCategory(String beanJson, Long id) { + MaterialCategory materialCategory = JSONObject.parseObject(beanJson, MaterialCategory.class); + materialCategory.setId(id); + return materialCategoryMapper.updateByPrimaryKeySelective(materialCategory); + } + + public int deleteMaterialCategory(Long id) { + return materialCategoryMapper.deleteByPrimaryKey(id); + } + + public int batchDeleteMaterialCategory(String ids) { + List idList = StringUtil.strToLongList(ids); + MaterialCategoryExample example = new MaterialCategoryExample(); + example.createCriteria().andIdIn(idList); + return materialCategoryMapper.deleteByExample(example); + } + + public int checkIsNameExist(Long id, String name) { + return 0; + } + + public List findById(Long id) { + MaterialCategoryExample example = new MaterialCategoryExample(); + example.createCriteria().andIdEqualTo(id); + return materialCategoryMapper.selectByExample(example); + } +} diff --git a/src/main/java/com/jsh/erp/service/materialProperty/MaterialPropertyComponent.java b/src/main/java/com/jsh/erp/service/materialProperty/MaterialPropertyComponent.java new file mode 100644 index 00000000..f562a798 --- /dev/null +++ b/src/main/java/com/jsh/erp/service/materialProperty/MaterialPropertyComponent.java @@ -0,0 +1,70 @@ +package com.jsh.erp.service.materialProperty; + +import com.jsh.erp.service.ICommonQuery; +import com.jsh.erp.utils.Constants; +import com.jsh.erp.utils.QueryUtils; +import com.jsh.erp.utils.StringUtil; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import java.util.List; +import java.util.Map; + +@Service(value = "materialProperty_component") +@MaterialPropertyResource +public class MaterialPropertyComponent implements ICommonQuery { + + @Resource + private MaterialPropertyService materialPropertyService; + + @Override + public Object selectOne(String condition) { + return null; + } + + @Override + public List select(Map map) { + return getMaterialPropertyList(map); + } + + private List getMaterialPropertyList(Map map) { + String search = map.get(Constants.SEARCH); + String name = StringUtil.getInfo(search, "name"); + String order = QueryUtils.order(map); + return materialPropertyService.select(name, QueryUtils.offset(map), QueryUtils.rows(map)); + } + + @Override + public int counts(Map map) { + String search = map.get(Constants.SEARCH); + String name = StringUtil.getInfo(search, "name"); + return materialPropertyService.countMaterialProperty(name); + } + + @Override + public int insert(String beanJson, HttpServletRequest request) { + return materialPropertyService.insertMaterialProperty(beanJson, request); + } + + @Override + public int update(String beanJson, Long id) { + return materialPropertyService.updateMaterialProperty(beanJson, id); + } + + @Override + public int delete(Long id) { + return materialPropertyService.deleteMaterialProperty(id); + } + + @Override + public int batchDelete(String ids) { + return materialPropertyService.batchDeleteMaterialProperty(ids); + } + + @Override + public int checkIsNameExist(Long id, String name) { + return materialPropertyService.checkIsNameExist(id, name); + } + +} diff --git a/src/main/java/com/jsh/erp/service/materialProperty/MaterialPropertyResource.java b/src/main/java/com/jsh/erp/service/materialProperty/MaterialPropertyResource.java new file mode 100644 index 00000000..b4837b30 --- /dev/null +++ b/src/main/java/com/jsh/erp/service/materialProperty/MaterialPropertyResource.java @@ -0,0 +1,15 @@ +package com.jsh.erp.service.materialProperty; + +import com.jsh.erp.service.ResourceInfo; + +import java.lang.annotation.*; + +/** + * @author jishenghua qq752718920 2018-10-7 15:26:27 + */ +@ResourceInfo(value = "materialProperty", type = 60) +@Inherited +@Target(ElementType.TYPE) +@Retention(RetentionPolicy.RUNTIME) +public @interface MaterialPropertyResource { +} diff --git a/src/main/java/com/jsh/erp/service/materialProperty/MaterialPropertyService.java b/src/main/java/com/jsh/erp/service/materialProperty/MaterialPropertyService.java new file mode 100644 index 00000000..7d9f0980 --- /dev/null +++ b/src/main/java/com/jsh/erp/service/materialProperty/MaterialPropertyService.java @@ -0,0 +1,64 @@ +package com.jsh.erp.service.materialProperty; + +import com.alibaba.fastjson.JSONObject; +import com.jsh.erp.datasource.entities.MaterialProperty; +import com.jsh.erp.datasource.entities.MaterialPropertyExample; +import com.jsh.erp.datasource.mappers.MaterialPropertyMapper; +import com.jsh.erp.utils.StringUtil; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import java.util.List; + +@Service +public class MaterialPropertyService { + private Logger logger = LoggerFactory.getLogger(MaterialPropertyService.class); + + @Resource + private MaterialPropertyMapper materialPropertyMapper; + + public MaterialProperty getMaterialProperty(long id) { + return materialPropertyMapper.selectByPrimaryKey(id); + } + + public List getMaterialProperty() { + MaterialPropertyExample example = new MaterialPropertyExample(); + return materialPropertyMapper.selectByExample(example); + } + public List select(String name, int offset, int rows) { + return materialPropertyMapper.selectByConditionMaterialProperty(name, offset, rows); + } + + public int countMaterialProperty(String name) { + return materialPropertyMapper.countsByMaterialProperty(name); + } + + public int insertMaterialProperty(String beanJson, HttpServletRequest request) { + MaterialProperty materialProperty = JSONObject.parseObject(beanJson, MaterialProperty.class); + return materialPropertyMapper.insertSelective(materialProperty); + } + + public int updateMaterialProperty(String beanJson, Long id) { + MaterialProperty materialProperty = JSONObject.parseObject(beanJson, MaterialProperty.class); + materialProperty.setId(id); + return materialPropertyMapper.updateByPrimaryKeySelective(materialProperty); + } + + public int deleteMaterialProperty(Long id) { + return materialPropertyMapper.deleteByPrimaryKey(id); + } + + public int batchDeleteMaterialProperty(String ids) { + List idList = StringUtil.strToLongList(ids); + MaterialPropertyExample example = new MaterialPropertyExample(); + example.createCriteria().andIdIn(idList); + return materialPropertyMapper.deleteByExample(example); + } + + public int checkIsNameExist(Long id, String name) { + return 0; + } +} diff --git a/src/main/java/com/jsh/erp/service/person/PersonComponent.java b/src/main/java/com/jsh/erp/service/person/PersonComponent.java new file mode 100644 index 00000000..3b1dd7ef --- /dev/null +++ b/src/main/java/com/jsh/erp/service/person/PersonComponent.java @@ -0,0 +1,74 @@ +package com.jsh.erp.service.person; + +import com.jsh.erp.service.ICommonQuery; +import com.jsh.erp.service.depot.DepotResource; +import com.jsh.erp.service.depot.DepotService; +import com.jsh.erp.utils.Constants; +import com.jsh.erp.utils.QueryUtils; +import com.jsh.erp.utils.StringUtil; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import java.util.List; +import java.util.Map; + +@Service(value = "person_component") +@PersonResource +public class PersonComponent implements ICommonQuery { + + @Resource + private PersonService personService; + + @Override + public Object selectOne(String condition) { + return null; + } + + @Override + public List select(Map map) { + return getPersonList(map); + } + + private List getPersonList(Map map) { + String search = map.get(Constants.SEARCH); + String name = StringUtil.getInfo(search, "name"); + String type = StringUtil.getInfo(search, "type"); + String order = QueryUtils.order(map); + return personService.select(name, type, QueryUtils.offset(map), QueryUtils.rows(map)); + } + + @Override + public int counts(Map map) { + String search = map.get(Constants.SEARCH); + String name = StringUtil.getInfo(search, "name"); + String type = StringUtil.getInfo(search, "type"); + return personService.countPerson(name, type); + } + + @Override + public int insert(String beanJson, HttpServletRequest request) { + return personService.insertPerson(beanJson, request); + } + + @Override + public int update(String beanJson, Long id) { + return personService.updatePerson(beanJson, id); + } + + @Override + public int delete(Long id) { + return personService.deletePerson(id); + } + + @Override + public int batchDelete(String ids) { + return personService.batchDeletePerson(ids); + } + + @Override + public int checkIsNameExist(Long id, String name) { + return personService.checkIsNameExist(id, name); + } + +} diff --git a/src/main/java/com/jsh/erp/service/person/PersonResource.java b/src/main/java/com/jsh/erp/service/person/PersonResource.java new file mode 100644 index 00000000..ca82fcd8 --- /dev/null +++ b/src/main/java/com/jsh/erp/service/person/PersonResource.java @@ -0,0 +1,15 @@ +package com.jsh.erp.service.person; + +import com.jsh.erp.service.ResourceInfo; + +import java.lang.annotation.*; + +/** + * @author jishenghua qq752718920 2018-10-7 15:26:27 + */ +@ResourceInfo(value = "person", type = 45) +@Inherited +@Target(ElementType.TYPE) +@Retention(RetentionPolicy.RUNTIME) +public @interface PersonResource { +} diff --git a/src/main/java/com/jsh/erp/service/person/PersonService.java b/src/main/java/com/jsh/erp/service/person/PersonService.java new file mode 100644 index 00000000..2acd9eef --- /dev/null +++ b/src/main/java/com/jsh/erp/service/person/PersonService.java @@ -0,0 +1,93 @@ +package com.jsh.erp.service.person; + +import com.alibaba.fastjson.JSONObject; +import com.jsh.erp.datasource.entities.Person; +import com.jsh.erp.datasource.entities.PersonExample; +import com.jsh.erp.datasource.mappers.PersonMapper; +import com.jsh.erp.utils.StringUtil; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import java.util.List; + +@Service +public class PersonService { + private Logger logger = LoggerFactory.getLogger(PersonService.class); + + @Resource + private PersonMapper personMapper; + + public Person getPerson(long id) { + return personMapper.selectByPrimaryKey(id); + } + + public List getPerson() { + PersonExample example = new PersonExample(); + return personMapper.selectByExample(example); + } + + public List select(String name, String type, int offset, int rows) { + return personMapper.selectByConditionPerson(name, type, offset, rows); + } + + public int countPerson(String name, String type) { + return personMapper.countsByPerson(name, type); + } + + public int insertPerson(String beanJson, HttpServletRequest request) { + Person person = JSONObject.parseObject(beanJson, Person.class); + return personMapper.insertSelective(person); + } + + public int updatePerson(String beanJson, Long id) { + Person person = JSONObject.parseObject(beanJson, Person.class); + person.setId(id); + return personMapper.updateByPrimaryKeySelective(person); + } + + public int deletePerson(Long id) { + return personMapper.deleteByPrimaryKey(id); + } + + public int batchDeletePerson(String ids) { + List idList = StringUtil.strToLongList(ids); + PersonExample example = new PersonExample(); + example.createCriteria().andIdIn(idList); + return personMapper.deleteByExample(example); + } + + public int checkIsNameExist(Long id, String name) { + PersonExample example = new PersonExample(); + example.createCriteria().andIdNotEqualTo(id).andNameEqualTo(name); + List list = personMapper.selectByExample(example); + return list.size(); + } + + public String getPersonByIds(String personIDs) { + List ids = StringUtil.strToLongList(personIDs); + PersonExample example = new PersonExample(); + example.createCriteria().andIdIn(ids); + example.setOrderByClause("Id asc"); + List list = personMapper.selectByExample(example); + StringBuffer sb = new StringBuffer(); + if (null != list) { + for (Person person : list) { + sb.append(person.getName() + " "); + } + } + return sb.toString(); + } + + public List getPersonByType(String type) { + PersonExample example = new PersonExample(); + example.createCriteria().andTypeEqualTo(type); + example.setOrderByClause("Id asc"); + return personMapper.selectByExample(example); + } + + + +} diff --git a/src/main/java/com/jsh/erp/service/role/RoleComponent.java b/src/main/java/com/jsh/erp/service/role/RoleComponent.java new file mode 100644 index 00000000..0e5e1728 --- /dev/null +++ b/src/main/java/com/jsh/erp/service/role/RoleComponent.java @@ -0,0 +1,71 @@ +package com.jsh.erp.service.role; + +import com.jsh.erp.service.ICommonQuery; +import com.jsh.erp.utils.Constants; +import com.jsh.erp.utils.QueryUtils; +import com.jsh.erp.utils.StringUtil; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import java.util.List; +import java.util.Map; + +@Service(value = "role_component") +@RoleResource +public class RoleComponent implements ICommonQuery { + + @Resource + private RoleService roleService; + + @Override + public Object selectOne(String condition) { + return null; + } + + @Override + public List select(Map map) { + return getRoleList(map); + } + + private List getRoleList(Map map) { + String search = map.get(Constants.SEARCH); + String name = StringUtil.getInfo(search, "name"); + String order = QueryUtils.order(map); + String filter = QueryUtils.filter(map); + return roleService.select(name, QueryUtils.offset(map), QueryUtils.rows(map)); + } + + @Override + public int counts(Map map) { + String search = map.get(Constants.SEARCH); + String name = StringUtil.getInfo(search, "name"); + return roleService.countRole(name); + } + + @Override + public int insert(String beanJson, HttpServletRequest request) { + return roleService.insertRole(beanJson, request); + } + + @Override + public int update(String beanJson, Long id) { + return roleService.updateRole(beanJson, id); + } + + @Override + public int delete(Long id) { + return roleService.deleteRole(id); + } + + @Override + public int batchDelete(String ids) { + return roleService.batchDeleteRole(ids); + } + + @Override + public int checkIsNameExist(Long id, String name) { + return 0; + } + +} diff --git a/src/main/java/com/jsh/erp/service/role/RoleResource.java b/src/main/java/com/jsh/erp/service/role/RoleResource.java new file mode 100644 index 00000000..b9aa0c5c --- /dev/null +++ b/src/main/java/com/jsh/erp/service/role/RoleResource.java @@ -0,0 +1,15 @@ +package com.jsh.erp.service.role; + +import com.jsh.erp.service.ResourceInfo; + +import java.lang.annotation.*; + +/** + * @author jishenghua qq752718920 2018-10-7 15:26:27 + */ +@ResourceInfo(value = "role", type = 10) +@Inherited +@Target(ElementType.TYPE) +@Retention(RetentionPolicy.RUNTIME) +public @interface RoleResource { +} diff --git a/src/main/java/com/jsh/erp/service/role/RoleService.java b/src/main/java/com/jsh/erp/service/role/RoleService.java new file mode 100644 index 00000000..c82be221 --- /dev/null +++ b/src/main/java/com/jsh/erp/service/role/RoleService.java @@ -0,0 +1,71 @@ +package com.jsh.erp.service.role; + +import com.alibaba.fastjson.JSONObject; +import com.jsh.erp.datasource.entities.Role; +import com.jsh.erp.datasource.entities.RoleExample; +import com.jsh.erp.datasource.entities.User; +import com.jsh.erp.datasource.entities.UserExample; +import com.jsh.erp.datasource.mappers.RoleMapper; +import com.jsh.erp.datasource.mappers.UserMapper; +import com.jsh.erp.utils.QueryUtils; +import com.jsh.erp.utils.RegExpTools; +import com.jsh.erp.utils.StringUtil; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import java.util.List; +import java.util.Map; + +@Service +public class RoleService { + @Resource + private RoleMapper roleMapper; + + public Role getRole(long id) { + return roleMapper.selectByPrimaryKey(id); + } + + public List getRole() { + RoleExample example = new RoleExample(); + return roleMapper.selectByExample(example); + } + + public List select(String name, int offset, int rows) { + return roleMapper.selectByConditionRole(name, offset, rows); + } + + public int countRole(String name) { + return roleMapper.countsByRole(name); + } + + public int insertRole(String beanJson, HttpServletRequest request) { + Role role = JSONObject.parseObject(beanJson, Role.class); + return roleMapper.insertSelective(role); + } + + public int updateRole(String beanJson, Long id) { + Role role = JSONObject.parseObject(beanJson, Role.class); + role.setId(id); + return roleMapper.updateByPrimaryKeySelective(role); + } + + public int deleteRole(Long id) { + return roleMapper.deleteByPrimaryKey(id); + } + + public int batchDeleteRole(String ids) { + List idList = StringUtil.strToLongList(ids); + RoleExample example = new RoleExample(); + example.createCriteria().andIdIn(idList); + return roleMapper.deleteByExample(example); + } + + public List findUserRole(){ + RoleExample example = new RoleExample(); + example.setOrderByClause("Id"); + List list = roleMapper.selectByExample(example); + return list; + } +} diff --git a/src/main/java/com/jsh/erp/service/supplier/SupplierComponent.java b/src/main/java/com/jsh/erp/service/supplier/SupplierComponent.java new file mode 100644 index 00000000..9b032df8 --- /dev/null +++ b/src/main/java/com/jsh/erp/service/supplier/SupplierComponent.java @@ -0,0 +1,80 @@ +package com.jsh.erp.service.supplier; + +import com.jsh.erp.service.ICommonQuery; +import com.jsh.erp.service.depot.DepotResource; +import com.jsh.erp.service.depot.DepotService; +import com.jsh.erp.utils.Constants; +import com.jsh.erp.utils.QueryUtils; +import com.jsh.erp.utils.StringUtil; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import java.util.List; +import java.util.Map; + +@Service(value = "supplier_component") +@SupplierResource +public class SupplierComponent implements ICommonQuery { + + @Resource + private SupplierService supplierService; + + @Override + public Object selectOne(String condition) { + return null; + } + + @Override + public List select(Map map) { + return getSupplierList(map); + } + + private List getSupplierList(Map map) { + String search = map.get(Constants.SEARCH); + String supplier = StringUtil.getInfo(search, "supplier"); + String type = StringUtil.getInfo(search, "type"); + String phonenum = StringUtil.getInfo(search, "phonenum"); + String telephone = StringUtil.getInfo(search, "telephone"); + String description = StringUtil.getInfo(search, "description"); + String order = QueryUtils.order(map); + return supplierService.select(supplier, type, phonenum, telephone, description, QueryUtils.offset(map), QueryUtils.rows(map)); + } + + @Override + public int counts(Map map) { + String search = map.get(Constants.SEARCH); + String supplier = StringUtil.getInfo(search, "supplier"); + String type = StringUtil.getInfo(search, "type"); + String phonenum = StringUtil.getInfo(search, "phonenum"); + String telephone = StringUtil.getInfo(search, "telephone"); + String description = StringUtil.getInfo(search, "description"); + return supplierService.countSupplier(supplier, type, phonenum, telephone, description); + } + + @Override + public int insert(String beanJson, HttpServletRequest request) { + return supplierService.insertSupplier(beanJson, request); + } + + @Override + public int update(String beanJson, Long id) { + return supplierService.updateSupplier(beanJson, id); + } + + @Override + public int delete(Long id) { + return supplierService.deleteSupplier(id); + } + + @Override + public int batchDelete(String ids) { + return supplierService.batchDeleteSupplier(ids); + } + + @Override + public int checkIsNameExist(Long id, String name) { + return supplierService.checkIsNameExist(id, name); + } + +} diff --git a/src/main/java/com/jsh/erp/service/supplier/SupplierResource.java b/src/main/java/com/jsh/erp/service/supplier/SupplierResource.java new file mode 100644 index 00000000..e9d70918 --- /dev/null +++ b/src/main/java/com/jsh/erp/service/supplier/SupplierResource.java @@ -0,0 +1,15 @@ +package com.jsh.erp.service.supplier; + +import com.jsh.erp.service.ResourceInfo; + +import java.lang.annotation.*; + +/** + * @author jishenghua qq752718920 2018-10-7 15:26:27 + */ +@ResourceInfo(value = "supplier", type = 70) +@Inherited +@Target(ElementType.TYPE) +@Retention(RetentionPolicy.RUNTIME) +public @interface SupplierResource { +} diff --git a/src/main/java/com/jsh/erp/service/supplier/SupplierService.java b/src/main/java/com/jsh/erp/service/supplier/SupplierService.java new file mode 100644 index 00000000..b0770866 --- /dev/null +++ b/src/main/java/com/jsh/erp/service/supplier/SupplierService.java @@ -0,0 +1,102 @@ +package com.jsh.erp.service.supplier; + +import com.alibaba.fastjson.JSONObject; +import com.jsh.erp.datasource.entities.Supplier; +import com.jsh.erp.datasource.entities.SupplierExample; +import com.jsh.erp.datasource.mappers.SupplierMapper; +import com.jsh.erp.utils.StringUtil; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import java.util.List; + +@Service +public class SupplierService { + private Logger logger = LoggerFactory.getLogger(SupplierService.class); + + @Resource + private SupplierMapper supplierMapper; + + public Supplier getSupplier(long id) { + return supplierMapper.selectByPrimaryKey(id); + } + + public List getSupplier() { + SupplierExample example = new SupplierExample(); + return supplierMapper.selectByExample(example); + } + + public List select(String supplier, String type, String phonenum, String telephone, String description, int offset, int rows) { + return supplierMapper.selectByConditionSupplier(supplier, type, phonenum, telephone, description, offset, rows); + } + + public int countSupplier(String supplier, String type, String phonenum, String telephone, String description) { + return supplierMapper.countsBySupplier(supplier, type, phonenum, telephone, description); + } + + public int insertSupplier(String beanJson, HttpServletRequest request) { + Supplier supplier = JSONObject.parseObject(beanJson, Supplier.class); + return supplierMapper.insertSelective(supplier); + } + + public int updateSupplier(String beanJson, Long id) { + Supplier supplier = JSONObject.parseObject(beanJson, Supplier.class); + supplier.setId(id); + return supplierMapper.updateByPrimaryKeySelective(supplier); + } + + public int deleteSupplier(Long id) { + return supplierMapper.deleteByPrimaryKey(id); + } + + public int batchDeleteSupplier(String ids) { + List idList = StringUtil.strToLongList(ids); + SupplierExample example = new SupplierExample(); + example.createCriteria().andIdIn(idList); + return supplierMapper.deleteByExample(example); + } + + public int checkIsNameExist(Long id, String name) { + SupplierExample example = new SupplierExample(); + example.createCriteria().andIdNotEqualTo(id).andSupplierEqualTo(name); + List list = supplierMapper.selectByExample(example); + return list.size(); + } + + public int updateAdvanceIn(Long supplierId, Double advanceIn){ + Supplier supplier = supplierMapper.selectByPrimaryKey(supplierId); + supplier.setAdvancein(supplier.getAdvancein() + advanceIn); //增加预收款的金额,可能增加的是负值 + return supplierMapper.updateByPrimaryKeySelective(supplier); + } + + public List findBySelectCus() { + SupplierExample example = new SupplierExample(); + example.createCriteria().andTypeLike("客户").andEnabledEqualTo(true); + example.setOrderByClause("id desc"); + return supplierMapper.selectByExample(example); + } + + public List findBySelectSup() { + SupplierExample example = new SupplierExample(); + example.createCriteria().andTypeLike("供应商").andEnabledEqualTo(true); + example.setOrderByClause("id desc"); + return supplierMapper.selectByExample(example); + } + + public List findBySelectRetail() { + SupplierExample example = new SupplierExample(); + example.createCriteria().andTypeLike("会员").andEnabledEqualTo(true); + example.setOrderByClause("id desc"); + return supplierMapper.selectByExample(example); + } + + public List findById(Long supplierId) { + SupplierExample example = new SupplierExample(); + example.createCriteria().andIdEqualTo(supplierId); + example.setOrderByClause("id desc"); + return supplierMapper.selectByExample(example); + } +} diff --git a/src/main/java/com/jsh/erp/service/systemConfig/SystemConfigComponent.java b/src/main/java/com/jsh/erp/service/systemConfig/SystemConfigComponent.java new file mode 100644 index 00000000..5f822761 --- /dev/null +++ b/src/main/java/com/jsh/erp/service/systemConfig/SystemConfigComponent.java @@ -0,0 +1,68 @@ +package com.jsh.erp.service.systemConfig; + +import com.jsh.erp.service.ICommonQuery; +import com.jsh.erp.service.systemConfig.SystemConfigResource; +import com.jsh.erp.service.systemConfig.SystemConfigService; +import com.jsh.erp.utils.Constants; +import com.jsh.erp.utils.QueryUtils; +import com.jsh.erp.utils.StringUtil; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import java.util.List; +import java.util.Map; + +@Service(value = "systemConfig_component") +@SystemConfigResource +public class SystemConfigComponent implements ICommonQuery { + + @Resource + private SystemConfigService systemConfigService; + + @Override + public Object selectOne(String condition) { + return null; + } + + @Override + public List select(Map map) { + return getSystemConfigList(map); + } + + private List getSystemConfigList(Map map) { + String order = QueryUtils.order(map); + return systemConfigService.select(QueryUtils.offset(map), QueryUtils.rows(map)); + } + + @Override + public int counts(Map map) { + return systemConfigService.countSystemConfig(); + } + + @Override + public int insert(String beanJson, HttpServletRequest request) { + return systemConfigService.insertSystemConfig(beanJson, request); + } + + @Override + public int update(String beanJson, Long id) { + return systemConfigService.updateSystemConfig(beanJson, id); + } + + @Override + public int delete(Long id) { + return systemConfigService.deleteSystemConfig(id); + } + + @Override + public int batchDelete(String ids) { + return systemConfigService.batchDeleteSystemConfig(ids); + } + + @Override + public int checkIsNameExist(Long id, String name) { + return systemConfigService.checkIsNameExist(id, name); + } + +} diff --git a/src/main/java/com/jsh/erp/service/systemConfig/SystemConfigResource.java b/src/main/java/com/jsh/erp/service/systemConfig/SystemConfigResource.java new file mode 100644 index 00000000..30cf8deb --- /dev/null +++ b/src/main/java/com/jsh/erp/service/systemConfig/SystemConfigResource.java @@ -0,0 +1,15 @@ +package com.jsh.erp.service.systemConfig; + +import com.jsh.erp.service.ResourceInfo; + +import java.lang.annotation.*; + +/** + * @author jishenghua qq752718920 2018-10-7 15:26:27 + */ +@ResourceInfo(value = "systemConfig", type = 55) +@Inherited +@Target(ElementType.TYPE) +@Retention(RetentionPolicy.RUNTIME) +public @interface SystemConfigResource { +} diff --git a/src/main/java/com/jsh/erp/service/systemConfig/SystemConfigService.java b/src/main/java/com/jsh/erp/service/systemConfig/SystemConfigService.java new file mode 100644 index 00000000..b3b3bed1 --- /dev/null +++ b/src/main/java/com/jsh/erp/service/systemConfig/SystemConfigService.java @@ -0,0 +1,67 @@ +package com.jsh.erp.service.systemConfig; + +import com.alibaba.fastjson.JSONObject; +import com.jsh.erp.datasource.entities.SystemConfig; +import com.jsh.erp.datasource.entities.SystemConfigExample; +import com.jsh.erp.datasource.mappers.SystemConfigMapper; +import com.jsh.erp.utils.StringUtil; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import java.util.List; + +@Service +public class SystemConfigService { + private Logger logger = LoggerFactory.getLogger(SystemConfigService.class); + + @Resource + private SystemConfigMapper systemConfigMapper; + + public SystemConfig getSystemConfig(long id) { + return systemConfigMapper.selectByPrimaryKey(id); + } + + public List getSystemConfig() { + SystemConfigExample example = new SystemConfigExample(); + return systemConfigMapper.selectByExample(example); + } + public List select(int offset, int rows) { + return systemConfigMapper.selectByConditionSystemConfig(offset, rows); + } + + public int countSystemConfig() { + return systemConfigMapper.countsBySystemConfig(); + } + + public int insertSystemConfig(String beanJson, HttpServletRequest request) { + SystemConfig systemConfig = JSONObject.parseObject(beanJson, SystemConfig.class); + return systemConfigMapper.insertSelective(systemConfig); + } + + public int updateSystemConfig(String beanJson, Long id) { + SystemConfig systemConfig = JSONObject.parseObject(beanJson, SystemConfig.class); + systemConfig.setId(id); + return systemConfigMapper.updateByPrimaryKeySelective(systemConfig); + } + + public int deleteSystemConfig(Long id) { + return systemConfigMapper.deleteByPrimaryKey(id); + } + + public int batchDeleteSystemConfig(String ids) { + List idList = StringUtil.strToLongList(ids); + SystemConfigExample example = new SystemConfigExample(); + example.createCriteria().andIdIn(idList); + return systemConfigMapper.deleteByExample(example); + } + + public int checkIsNameExist(Long id, String name) { + SystemConfigExample example = new SystemConfigExample(); + example.createCriteria().andIdNotEqualTo(id).andNameEqualTo(name); + List list = systemConfigMapper.selectByExample(example); + return list.size(); + } +} diff --git a/src/main/java/com/jsh/erp/service/unit/UnitComponent.java b/src/main/java/com/jsh/erp/service/unit/UnitComponent.java new file mode 100644 index 00000000..b1cfdbd7 --- /dev/null +++ b/src/main/java/com/jsh/erp/service/unit/UnitComponent.java @@ -0,0 +1,71 @@ +package com.jsh.erp.service.unit; + +import com.jsh.erp.service.ICommonQuery; +import com.jsh.erp.service.app.AppResource; +import com.jsh.erp.utils.Constants; +import com.jsh.erp.utils.QueryUtils; +import com.jsh.erp.utils.StringUtil; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import java.util.List; +import java.util.Map; + +@Service(value = "unit_component") +@UnitResource +public class UnitComponent implements ICommonQuery { + + @Resource + private UnitService unitService; + + @Override + public Object selectOne(String condition) { + return null; + } + + @Override + public List select(Map map) { + return getUnitList(map); + } + + private List getUnitList(Map map) { + String search = map.get(Constants.SEARCH); + String name = StringUtil.getInfo(search, "name"); + String order = QueryUtils.order(map); + return unitService.select(name, QueryUtils.offset(map), QueryUtils.rows(map)); + } + + @Override + public int counts(Map map) { + String search = map.get(Constants.SEARCH); + String name = StringUtil.getInfo(search, "name"); + return unitService.countUnit(name); + } + + @Override + public int insert(String beanJson, HttpServletRequest request) { + return unitService.insertUnit(beanJson, request); + } + + @Override + public int update(String beanJson, Long id) { + return unitService.updateUnit(beanJson, id); + } + + @Override + public int delete(Long id) { + return unitService.deleteUnit(id); + } + + @Override + public int batchDelete(String ids) { + return unitService.batchDeleteUnit(ids); + } + + @Override + public int checkIsNameExist(Long id, String name) { + return unitService.checkIsNameExist(id, name); + } + +} diff --git a/src/main/java/com/jsh/erp/service/unit/UnitResource.java b/src/main/java/com/jsh/erp/service/unit/UnitResource.java new file mode 100644 index 00000000..31611993 --- /dev/null +++ b/src/main/java/com/jsh/erp/service/unit/UnitResource.java @@ -0,0 +1,15 @@ +package com.jsh.erp.service.unit; + +import com.jsh.erp.service.ResourceInfo; + +import java.lang.annotation.*; + +/** + * @author jishenghua qq752718920 2018-10-7 15:26:27 + */ +@ResourceInfo(value = "unit", type = 40) +@Inherited +@Target(ElementType.TYPE) +@Retention(RetentionPolicy.RUNTIME) +public @interface UnitResource { +} diff --git a/src/main/java/com/jsh/erp/service/unit/UnitService.java b/src/main/java/com/jsh/erp/service/unit/UnitService.java new file mode 100644 index 00000000..eb9ef1fd --- /dev/null +++ b/src/main/java/com/jsh/erp/service/unit/UnitService.java @@ -0,0 +1,68 @@ +package com.jsh.erp.service.unit; + +import com.alibaba.fastjson.JSONObject; +import com.jsh.erp.datasource.entities.Unit; +import com.jsh.erp.datasource.entities.UnitExample; +import com.jsh.erp.datasource.mappers.UnitMapper; +import com.jsh.erp.utils.StringUtil; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import java.util.List; + +@Service +public class UnitService { + private Logger logger = LoggerFactory.getLogger(UnitService.class); + + @Resource + private UnitMapper unitMapper; + + public Unit getUnit(long id) { + return unitMapper.selectByPrimaryKey(id); + } + + public List getUnit() { + UnitExample example = new UnitExample(); + return unitMapper.selectByExample(example); + } + + public List select(String name, int offset, int rows) { + return unitMapper.selectByConditionUnit(name, offset, rows); + } + + public int countUnit(String name) { + return unitMapper.countsByUnit(name); + } + + public int insertUnit(String beanJson, HttpServletRequest request) { + Unit unit = JSONObject.parseObject(beanJson, Unit.class); + return unitMapper.insertSelective(unit); + } + + public int updateUnit(String beanJson, Long id) { + Unit unit = JSONObject.parseObject(beanJson, Unit.class); + unit.setId(id); + return unitMapper.updateByPrimaryKeySelective(unit); + } + + public int deleteUnit(Long id) { + return unitMapper.deleteByPrimaryKey(id); + } + + public int batchDeleteUnit(String ids) { + List idList = StringUtil.strToLongList(ids); + UnitExample example = new UnitExample(); + example.createCriteria().andIdIn(idList); + return unitMapper.deleteByExample(example); + } + + public int checkIsNameExist(Long id, String name) { + UnitExample example = new UnitExample(); + example.createCriteria().andIdNotEqualTo(id).andUnameEqualTo(name); + List list = unitMapper.selectByExample(example); + return list.size(); + } +} diff --git a/src/main/java/com/jsh/erp/service/user/UserComponent.java b/src/main/java/com/jsh/erp/service/user/UserComponent.java new file mode 100644 index 00000000..aecd0300 --- /dev/null +++ b/src/main/java/com/jsh/erp/service/user/UserComponent.java @@ -0,0 +1,72 @@ +package com.jsh.erp.service.user; + +import com.jsh.erp.service.ICommonQuery; +import com.jsh.erp.utils.Constants; +import com.jsh.erp.utils.QueryUtils; +import com.jsh.erp.utils.StringUtil; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import java.util.*; + +@Service(value = "user_component") +@UserResource +public class UserComponent implements ICommonQuery { + + @Resource + private UserService userService; + + @Override + public Object selectOne(String condition) { + return null; + } + + @Override + public List select(Map map) { + return getUserList(map); + } + + private List getUserList(Map map) { + String search = map.get(Constants.SEARCH); + String userName = StringUtil.getInfo(search, "userName"); + String loginName = StringUtil.getInfo(search, "loginName"); + String order = QueryUtils.order(map); + String filter = QueryUtils.filter(map); + return userService.select(userName, loginName, QueryUtils.offset(map), QueryUtils.rows(map)); + } + + @Override + public int counts(Map map) { + String search = map.get(Constants.SEARCH); + String userName = StringUtil.getInfo(search, "userName"); + String loginName = StringUtil.getInfo(search, "loginName"); + return userService.countUser(userName, loginName); + } + + @Override + public int insert(String beanJson, HttpServletRequest request) { + return userService.insertUser(beanJson, request); + } + + @Override + public int update(String beanJson, Long id) { + return userService.updateUser(beanJson, id); + } + + @Override + public int delete(Long id) { + return userService.deleteUser(id); + } + + @Override + public int batchDelete(String ids) { + return userService.batchDeleteUser(ids); + } + + @Override + public int checkIsNameExist(Long id, String name) { + return userService.checkIsNameExist(id, name); + } + +} diff --git a/src/main/java/com/jsh/erp/service/user/UserResource.java b/src/main/java/com/jsh/erp/service/user/UserResource.java new file mode 100644 index 00000000..9b0fb611 --- /dev/null +++ b/src/main/java/com/jsh/erp/service/user/UserResource.java @@ -0,0 +1,15 @@ +package com.jsh.erp.service.user; + +import com.jsh.erp.service.ResourceInfo; + +import java.lang.annotation.*; + +/** + * @author jishenghua qq752718920 2018-10-7 15:26:27 + */ +@ResourceInfo(value = "user", type = 5) +@Inherited +@Target(ElementType.TYPE) +@Retention(RetentionPolicy.RUNTIME) +public @interface UserResource { +} diff --git a/src/main/java/com/jsh/erp/service/user/UserService.java b/src/main/java/com/jsh/erp/service/user/UserService.java new file mode 100644 index 00000000..cb6c7f78 --- /dev/null +++ b/src/main/java/com/jsh/erp/service/user/UserService.java @@ -0,0 +1,133 @@ +package com.jsh.erp.service.user; + +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.jsh.erp.datasource.entities.User; +import com.jsh.erp.datasource.entities.UserExample; +import com.jsh.erp.datasource.mappers.UserMapper; +import com.jsh.erp.utils.*; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import java.security.NoSuchAlgorithmException; +import java.util.List; +import java.util.Map; + +@Service +public class UserService { + private Logger logger = LoggerFactory.getLogger(UserService.class); + @Resource + private UserMapper userMapper; + + public User getUser(long id) { + return userMapper.selectByPrimaryKey(id); + } + + public List getUser() { + UserExample example = new UserExample(); + return userMapper.selectByExample(example); + } + + public List select(String userName, String loginName, int offset, int rows) { + return userMapper.selectByConditionUser(userName, loginName, offset, rows); + } + + public int countUser(String userName, String loginName) { + return userMapper.countsByUser(userName, loginName); + } + + public int insertUser(String beanJson, HttpServletRequest request) { + User user = JSONObject.parseObject(beanJson, User.class); + String password = "123456"; + //因密码用MD5加密,需要对密码进行转化 + try { + password = Tools.md5Encryp(password); + user.setPassword(password); + } catch (NoSuchAlgorithmException e) { + e.printStackTrace(); + logger.error(">>>>>>>>>>>>>>转化MD5字符串错误 :" + e.getMessage()); + } + return userMapper.insertSelective(user); + } + + public int updateUser(String beanJson, Long id) { + User user = JSONObject.parseObject(beanJson, User.class); + user.setId(id); + return userMapper.updateByPrimaryKeySelective(user); + } + + public int updateUserByObj(User user) { + return userMapper.updateByPrimaryKeySelective(user); + } + + public int resetPwd(String md5Pwd, Long id) { + User user = new User(); + user.setId(id); + user.setPassword(md5Pwd); + return userMapper.updateByPrimaryKeySelective(user); + } + + public int deleteUser(Long id) { + return userMapper.deleteByPrimaryKey(id); + } + + public int batchDeleteUser(String ids) { + List idList = StringUtil.strToLongList(ids); + UserExample example = new UserExample(); + example.createCriteria().andIdIn(idList); + return userMapper.deleteByExample(example); + } + + public int validateUser(String username, String password) throws JshException { + try { + /**默认是可以登录的*/ + List list = null; + try { + UserExample example = new UserExample(); + example.createCriteria().andLoginameEqualTo(username); + list = userMapper.selectByExample(example); + } catch (Exception e) { + logger.error(">>>>>>>>访问验证用户姓名是否存在后台信息异常", e); + return ExceptionCodeConstants.UserExceptionCode.USER_ACCESS_EXCEPTION; + } + + if (null != list && list.size() == 0) { + return ExceptionCodeConstants.UserExceptionCode.USER_NOT_EXIST; + } + + try { + UserExample example = new UserExample(); + example.createCriteria().andLoginameEqualTo(username).andPasswordEqualTo(password); + list = userMapper.selectByExample(example); + } catch (Exception e) { + logger.error(">>>>>>>>>>访问验证用户密码后台信息异常", e); + return ExceptionCodeConstants.UserExceptionCode.USER_ACCESS_EXCEPTION; + } + + if (null != list && list.size() == 0) { + return ExceptionCodeConstants.UserExceptionCode.USER_PASSWORD_ERROR; + } + return ExceptionCodeConstants.UserExceptionCode.USER_CONDITION_FIT; + } catch (Exception e) { + throw new JshException("unknown exception", e); + } + } + + public User getUserByUserName(String username) { + UserExample example = new UserExample(); + example.createCriteria().andLoginameEqualTo(username); + List list = userMapper.selectByExample(example); + User user = list.get(0); + return user; + } + + public int checkIsNameExist(Long id, String name) { + UserExample example = new UserExample(); + example.createCriteria().andIdNotEqualTo(id).andLoginameEqualTo(name); + List list = userMapper.selectByExample(example); + return list.size(); + } +} diff --git a/src/main/java/com/jsh/erp/service/userBusiness/UserBusinessComponent.java b/src/main/java/com/jsh/erp/service/userBusiness/UserBusinessComponent.java new file mode 100644 index 00000000..dedbccf9 --- /dev/null +++ b/src/main/java/com/jsh/erp/service/userBusiness/UserBusinessComponent.java @@ -0,0 +1,67 @@ +package com.jsh.erp.service.userBusiness; + +import com.jsh.erp.service.ICommonQuery; +import com.jsh.erp.service.depot.DepotResource; +import com.jsh.erp.service.depot.DepotService; +import com.jsh.erp.utils.Constants; +import com.jsh.erp.utils.QueryUtils; +import com.jsh.erp.utils.StringUtil; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import java.util.List; +import java.util.Map; + +@Service(value = "userBusiness_component") +@UserBusinessResource +public class UserBusinessComponent implements ICommonQuery { + + @Resource + private UserBusinessService userBusinessService; + + @Override + public Object selectOne(String condition) { + return null; + } + + @Override + public List select(Map map) { + return getUserBusinessList(map); + } + + private List getUserBusinessList(Map map) { + return null; + } + + @Override + public int counts(Map map) { + return 0; + } + + @Override + public int insert(String beanJson, HttpServletRequest request) { + return userBusinessService.insertUserBusiness(beanJson, request); + } + + @Override + public int update(String beanJson, Long id) { + return userBusinessService.updateUserBusiness(beanJson, id); + } + + @Override + public int delete(Long id) { + return userBusinessService.deleteUserBusiness(id); + } + + @Override + public int batchDelete(String ids) { + return userBusinessService.batchDeleteUserBusiness(ids); + } + + @Override + public int checkIsNameExist(Long id, String name) { + return userBusinessService.checkIsNameExist(id, name); + } + +} diff --git a/src/main/java/com/jsh/erp/service/userBusiness/UserBusinessResource.java b/src/main/java/com/jsh/erp/service/userBusiness/UserBusinessResource.java new file mode 100644 index 00000000..d3e4f96d --- /dev/null +++ b/src/main/java/com/jsh/erp/service/userBusiness/UserBusinessResource.java @@ -0,0 +1,15 @@ +package com.jsh.erp.service.userBusiness; + +import com.jsh.erp.service.ResourceInfo; + +import java.lang.annotation.*; + +/** + * @author jishenghua qq752718920 2018-10-7 15:26:27 + */ +@ResourceInfo(value = "userBusiness", type = 50) +@Inherited +@Target(ElementType.TYPE) +@Retention(RetentionPolicy.RUNTIME) +public @interface UserBusinessResource { +} diff --git a/src/main/java/com/jsh/erp/service/userBusiness/UserBusinessService.java b/src/main/java/com/jsh/erp/service/userBusiness/UserBusinessService.java new file mode 100644 index 00000000..865f791e --- /dev/null +++ b/src/main/java/com/jsh/erp/service/userBusiness/UserBusinessService.java @@ -0,0 +1,92 @@ +package com.jsh.erp.service.userBusiness; + +import com.alibaba.fastjson.JSONObject; +import com.jsh.erp.datasource.entities.UserBusiness; +import com.jsh.erp.datasource.entities.UserBusinessExample; +import com.jsh.erp.datasource.mappers.UserBusinessMapper; +import com.jsh.erp.utils.StringUtil; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import java.util.List; + +@Service +public class UserBusinessService { + private Logger logger = LoggerFactory.getLogger(UserBusinessService.class); + + @Resource + private UserBusinessMapper userBusinessMapper; + + public UserBusiness getUserBusiness(long id) { + return userBusinessMapper.selectByPrimaryKey(id); + } + + public List getUserBusiness() { + UserBusinessExample example = new UserBusinessExample(); + return userBusinessMapper.selectByExample(example); + } + + public int insertUserBusiness(String beanJson, HttpServletRequest request) { + UserBusiness userBusiness = JSONObject.parseObject(beanJson, UserBusiness.class); + return userBusinessMapper.insertSelective(userBusiness); + } + + public int updateUserBusiness(String beanJson, Long id) { + UserBusiness userBusiness = JSONObject.parseObject(beanJson, UserBusiness.class); + userBusiness.setId(id); + return userBusinessMapper.updateByPrimaryKeySelective(userBusiness); + } + + public int deleteUserBusiness(Long id) { + return userBusinessMapper.deleteByPrimaryKey(id); + } + + public int batchDeleteUserBusiness(String ids) { + List idList = StringUtil.strToLongList(ids); + UserBusinessExample example = new UserBusinessExample(); + example.createCriteria().andIdIn(idList); + return userBusinessMapper.deleteByExample(example); + } + + public int checkIsNameExist(Long id, String name) { + return 1; + } + + public List getBasicData(String keyId, String type){ + UserBusinessExample example = new UserBusinessExample(); + example.createCriteria().andKeyidEqualTo(keyId).andTypeEqualTo(type); + List list = userBusinessMapper.selectByExample(example); + return list; + } + + public Long checkIsValueExist(String type, String keyId) { + UserBusinessExample example = new UserBusinessExample(); + example.createCriteria().andTypeEqualTo(type).andKeyidEqualTo(keyId); + List list = userBusinessMapper.selectByExample(example); + Long id = null; + if(list.size() > 0) { + id = list.get(0).getId(); + } + return id; + } + + public Boolean checkIsUserBusinessExist(String TypeVale, String KeyIdValue, String UBValue) { + UserBusinessExample example = new UserBusinessExample(); + String newVaule = "%" + UBValue + "%"; + if(TypeVale !=null && KeyIdValue !=null) { + example.createCriteria().andTypeEqualTo(TypeVale).andKeyidEqualTo(KeyIdValue).andValueLike(newVaule); + } else { + example.createCriteria().andValueLike(newVaule); + } + List list = userBusinessMapper.selectByExample(example); + if(list.size() > 0) { + return true; + } else { + return false; + } + } + +} diff --git a/src/main/java/com/jsh/erp/utils/AnnotationUtils.java b/src/main/java/com/jsh/erp/utils/AnnotationUtils.java new file mode 100644 index 00000000..f3b5a80b --- /dev/null +++ b/src/main/java/com/jsh/erp/utils/AnnotationUtils.java @@ -0,0 +1,28 @@ +package com.jsh.erp.utils; + +import java.lang.annotation.Annotation; +import java.lang.annotation.Documented; + +/** + * @author jishenghua qq752718920 2018-10-7 15:26:27 + */ +public class AnnotationUtils { + public static A getAnnotation(Class cls, Class annotationClass) { + A res = cls.getAnnotation(annotationClass); + if (res == null) { + for (Annotation annotation : cls.getAnnotations()) { + if (annotation instanceof Documented) { + break; + } + res = getAnnotation(annotation.annotationType(), annotationClass); + if (res != null) + break; + } + } + return res; + } + + public static A getAnnotation(T obj, Class annotationClass) { + return getAnnotation(obj.getClass(), annotationClass); + } +} diff --git a/src/main/java/com/jsh/erp/utils/BaseResponseInfo.java b/src/main/java/com/jsh/erp/utils/BaseResponseInfo.java new file mode 100644 index 00000000..f27deb82 --- /dev/null +++ b/src/main/java/com/jsh/erp/utils/BaseResponseInfo.java @@ -0,0 +1,11 @@ +package com.jsh.erp.utils; + +public class BaseResponseInfo { + public int code; + public Object data; + + public BaseResponseInfo() { + code = 400; + data = null; + } +} diff --git a/src/main/java/com/jsh/erp/utils/ColumnPropertyUtil.java b/src/main/java/com/jsh/erp/utils/ColumnPropertyUtil.java new file mode 100644 index 00000000..f3e7ad24 --- /dev/null +++ b/src/main/java/com/jsh/erp/utils/ColumnPropertyUtil.java @@ -0,0 +1,65 @@ +package com.jsh.erp.utils; + +/** + * @author jishenghua qq752718920 2018-10-7 15:26:27 + */ +public class ColumnPropertyUtil { + + /** + * 将数据库字段转换成属性 + */ + public static String columnToProperty(String column) { + StringBuilder result = new StringBuilder(); + // 快速检查 + if (StringUtil.isEmpty(column)) { + // 没必要转换 + return ""; + } else if (!column.contains("_")) { + // 不做转换 + return column; + } else { + // 用下划线将原始字符串分割 + String[] columns = column.split("_"); + for (String columnSplit : columns) { + // 跳过原始字符串中开头、结尾的下换线或双重下划线 + if (StringUtil.isEmpty(columnSplit)) { + continue; + } + // 处理真正的驼峰片段 + if (result.length() == 0) { + // 第一个驼峰片段,全部字母都小写 + result.append(columnSplit.toLowerCase()); + } else { + // 其他的驼峰片段,首字母大写 + result.append(columnSplit.substring(0, 1).toUpperCase()).append(columnSplit.substring(1).toLowerCase()); + } + } + return result.toString(); + } + + } + + + /** + * 驼峰转换下划线 + */ + public static String propertyToColumn(String property) { + if (StringUtil.isEmpty(property)) { + return ""; + } + StringBuilder column = new StringBuilder(); + column.append(property.substring(0, 1).toLowerCase()); + for (int i = 1; i < property.length(); i++) { + String s = property.substring(i, i + 1); + // 在小写字母前添加下划线 + if (!Character.isDigit(s.charAt(0)) && s.equals(s.toUpperCase())) { + column.append("_"); + } + // 其他字符直接转成小写 + column.append(s.toLowerCase()); + } + + return column.toString(); + } + +} diff --git a/src/main/java/com/jsh/erp/utils/Constants.java b/src/main/java/com/jsh/erp/utils/Constants.java new file mode 100644 index 00000000..f3a40266 --- /dev/null +++ b/src/main/java/com/jsh/erp/utils/Constants.java @@ -0,0 +1,33 @@ +package com.jsh.erp.utils; + +import java.util.UUID; + +/** + * by jishenghua qq-752718920 2018-10-7 12:01:36 + */ +public class Constants { + + //查询参数 + public final static String PAGE_SIZE = "pageSize"; + public final static String CURRENT_PAGE = "currentPage"; + public final static String ORDER = "order"; + public final static String FILTER = "filter"; + public final static String SPLIT = ","; + public final static String SEARCH = "search"; + public final static String DEVICE_ID = "deviceId"; + public final static String OFFSET = "offset"; + public final static String IS_RECURSION = "isRecursion"; + public final static String IS_RECURSION_VALUE = "1"; + public final static String IS_QUERYBYNODEID = "isquerybyid"; + public final static String IS_QUERYBYNODEID_VALUE = "1"; + + //级联类别 + public final static String TYPE = "type"; + + //转发 + public final static String TEAM = "team"; + + //增加了角色等级常量 + public final static String LEVEL="level"; + +} \ No newline at end of file diff --git a/src/main/java/com/jsh/erp/utils/ErpInfo.java b/src/main/java/com/jsh/erp/utils/ErpInfo.java new file mode 100644 index 00000000..f83db5a2 --- /dev/null +++ b/src/main/java/com/jsh/erp/utils/ErpInfo.java @@ -0,0 +1,36 @@ +package com.jsh.erp.utils; + +/** + * + */ +public enum ErpInfo { + //通过构造传递参数 + OK(200, "成功"), + BAD_REQUEST(400, "请求错误或参数错误"), + UNAUTHORIZED(401, "未认证用户"), + INVALID_VERIFY_CODE(461, "错误的验证码"), + ERROR(500, "服务内部错误"), + WARING_MSG(201, "提醒信息"), + REDIRECT(301, "session失效,重定向"), + FORWARD_REDIRECT(302, "转发请求session失效"), + FORWARD_FAILED(303, "转发请求失败!"); + + public final int code; + public final String name; + + public int getCode() { + return code; + } + + public String getName() { + return name; + } + + /** + * 定义枚举构造函数 + */ + ErpInfo(int code, String name) { + this.code = code; + this.name = name; + } +} diff --git a/src/main/java/com/jsh/util/ExceptionCodeConstants.java b/src/main/java/com/jsh/erp/utils/ExceptionCodeConstants.java similarity index 96% rename from src/main/java/com/jsh/util/ExceptionCodeConstants.java rename to src/main/java/com/jsh/erp/utils/ExceptionCodeConstants.java index db4afcad..9c235d8c 100644 --- a/src/main/java/com/jsh/util/ExceptionCodeConstants.java +++ b/src/main/java/com/jsh/erp/utils/ExceptionCodeConstants.java @@ -1,4 +1,4 @@ -package com.jsh.util; +package com.jsh.erp.utils; public interface ExceptionCodeConstants { /** diff --git a/src/main/java/com/jsh/erp/utils/ExtJsonUtils.java b/src/main/java/com/jsh/erp/utils/ExtJsonUtils.java new file mode 100644 index 00000000..a1c67a57 --- /dev/null +++ b/src/main/java/com/jsh/erp/utils/ExtJsonUtils.java @@ -0,0 +1,195 @@ +package com.jsh.erp.utils; + +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; +import com.alibaba.fastjson.parser.ParserConfig; +import com.alibaba.fastjson.parser.deserializer.ExtraProcessor; +import com.alibaba.fastjson.parser.deserializer.FieldDeserializer; +import com.alibaba.fastjson.serializer.*; + +import java.io.IOException; +import java.lang.reflect.Type; +import java.util.HashMap; +import java.util.HashSet; +import java.util.Map; +import java.util.Set; + +/** + * @author jishenghua qq752718920 2018-10-7 15:26:27 + */ +public class ExtJsonUtils { + private static class NPFloatCodec extends FloatCodec { + public void write(JSONSerializer serializer, Object object, Object fieldName, Type fieldType) throws IOException { + SerializeWriter out = serializer.getWriter(); + + if (object == null) { + if (serializer.isEnabled(SerializerFeature.WriteNullNumberAsZero)) { + out.write('0'); + } else { + out.writeNull(); + } + return; + } + + float floatValue = (Float) object; + + if (Float.isNaN(floatValue)) { + out.writeNull(); + } else if (Float.isInfinite(floatValue)) { + out.writeNull(); + } else { + String floatText = Float.toString(floatValue); + out.write(floatText); + + if (serializer.isEnabled(SerializerFeature.WriteClassName)) { + out.write('F'); + } + } + } + } + + private static class NPDoubleSerializer extends DoubleSerializer { + public void write(JSONSerializer serializer, Object object, Object fieldName, Type fieldType) throws IOException { + SerializeWriter out = serializer.getWriter(); + + if (object == null) { + if (!serializer.isEnabled(SerializerFeature.WriteNullNumberAsZero)) { + out.writeNull(); + } else { + out.write('0'); + } + return; + } + + double doubleValue = (Double) object; + + if (Double.isNaN(doubleValue)) { + out.writeNull(); + } else if (Double.isInfinite(doubleValue)) { + out.writeNull(); + } else { + String doubleText; + doubleText = Double.toString(doubleValue); + out.append(doubleText); + + if (serializer.isEnabled(SerializerFeature.WriteClassName)) { + out.write('D'); + } + } + } + } + + private static final String EXT_NAME = "ext"; + + static class ExtFilter extends AfterFilter implements PropertyFilter { + static { + SerializeConfig.getGlobalInstance().put(Float.class, new NPFloatCodec()); + SerializeConfig.getGlobalInstance().put(float.class, new NPFloatCodec()); + SerializeConfig.getGlobalInstance().put(Double.class, new NPDoubleSerializer()); + SerializeConfig.getGlobalInstance().put(double.class, new NPDoubleSerializer()); + } + + private Map map = new HashMap<>(); + + private Map> ignoredKey = new HashMap<>(); + + @Override + public boolean apply(Object object, String name, Object value) { + if (name.equals(EXT_NAME) && value instanceof String) { + map.put(object, JSON.parseObject((String) value)); + return false; + } + if (!map.containsKey(object)) { + ignoredKey.put(object, new HashSet()); + } + ignoredKey.get(object).add(name); +// if (value instanceof Float || value instanceof Double) { +// if (!floatMap.containsKey(object)) { +// floatMap.put(object, new HashMap()); +// } +// floatMap.get(object).put(name, value); +// return false; +// } + return true; + } + + @Override + public void writeAfter(Object object) { + if (map.containsKey(object)) { + Set ignoredKeys; + if (ignoredKey.containsKey(object)) { + ignoredKeys = ignoredKey.get(object); + } else { + ignoredKeys = new HashSet<>(); + } + for (Map.Entry entry : map.get(object).entrySet()) { + if (!ignoredKeys.contains(entry.getKey())) { + writeKeyValue(entry.getKey(), entry.getValue()); + } + } + } + } + } + + public static String toJSONString(Object object) { + return JSON.toJSONString(object, new ExtFilter()); + } + + public interface ExtExtractor { + String getExt(Object bean); + } + + private static class MetaInfo { + private final static ParserConfig INSTANCE = ParserConfig.getGlobalInstance(); + + private final Object object; + private final Map map; + private final JSONObject ext = new JSONObject(); + + private MetaInfo(Object object) { + this.object = object; + this.map = INSTANCE.getFieldDeserializers(object.getClass()); + } + + void gather(String key, Object value) { + if (!map.containsKey(key)) { + ext.put(key, value); + } + } + + public void update(ExtExtractor extractor) { + JSONObject old = JSON.parseObject(extractor.getExt(object)); + if (old == null) { + old = new JSONObject(); + } + old.putAll(ext); + map.get(EXT_NAME).setValue(object, old.toJSONString()); + } + + static boolean hasExt(Class clazz) { + return INSTANCE.getFieldDeserializers(clazz).containsKey(EXT_NAME); + } + } + + public static T parseObject(String text, final Class clazz, ExtExtractor extractor) { + final Map map = new HashMap<>(); + + T object = JSON.parseObject(text, clazz, new ExtraProcessor() { + @Override + public void processExtra(Object object, String key, Object value) { + if (!map.containsKey(object) && MetaInfo.hasExt(object.getClass())) { + map.put(object, new MetaInfo(object)); + } + if (map.containsKey(object)) { + map.get(object).gather(key, value); + } + } + }); + + for (Map.Entry entry : map.entrySet()) { + entry.getValue().update(extractor); + } + + return object; + } +} diff --git a/src/main/java/com/jsh/util/JshException.java b/src/main/java/com/jsh/erp/utils/JshException.java similarity index 98% rename from src/main/java/com/jsh/util/JshException.java rename to src/main/java/com/jsh/erp/utils/JshException.java index d7b2a0d3..9b189114 100644 --- a/src/main/java/com/jsh/util/JshException.java +++ b/src/main/java/com/jsh/erp/utils/JshException.java @@ -1,4 +1,4 @@ -package com.jsh.util; +package com.jsh.erp.utils; /** * @author jishenghua diff --git a/src/main/java/com/jsh/erp/utils/JsonUtils.java b/src/main/java/com/jsh/erp/utils/JsonUtils.java new file mode 100644 index 00000000..d990ccb2 --- /dev/null +++ b/src/main/java/com/jsh/erp/utils/JsonUtils.java @@ -0,0 +1,21 @@ +package com.jsh.erp.utils; + +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; + +/** + * Created by jishenghua 2018-5-11 09:48:08 + * + * @author jishenghua + */ +public class JsonUtils { + + public static JSONObject ok(){ + JSONObject obj = new JSONObject(); + JSONObject tmp = new JSONObject(); + tmp.put("message", "成功"); + obj.put("code", 200); + obj.put("data", tmp); + return obj; + } +} diff --git a/src/main/java/com/jsh/erp/utils/OrderUtils.java b/src/main/java/com/jsh/erp/utils/OrderUtils.java new file mode 100644 index 00000000..38a312ca --- /dev/null +++ b/src/main/java/com/jsh/erp/utils/OrderUtils.java @@ -0,0 +1,69 @@ +package com.jsh.erp.utils; + +/** + * @author jishenghua qq752718920 2018-10-7 15:26:27 + */ +public class OrderUtils { + + /** + * 将指定字段排序 + * + * @param orders 格式 属性名,排序方式 例如( name,asc或ip,desc) + * @return 排序字符串 例如:(name asc 或 ip desc) + */ + public static String getOrderString(String orders) { + if (StringUtil.isNotEmpty(orders)) { + String[] splits = orders.split(Constants.SPLIT); + if (splits.length == 2) { + String column = ColumnPropertyUtil.propertyToColumn(splits[0]); + if (column.equals("audit_status")) { + // TODO: 2015/12/24 这么处理不好,得相伴办法调整 + return "IF(`audit_status`=3,-1,`audit_status`) " + splits[1]; + } else if (column.equals("create_time") || column.equals("modify_time")) { + // TODO: 2015/12/24 这么处理不好,得相伴办法调整 + return column + " " + splits[1]; + } else { + return "convert(" + column + " using gbk) " + splits[1]; + } + } + } + return ""; + } + + public static String getJoinTablesOrderString(String orders, String tableName) { + if (StringUtil.isNotEmpty(orders)) { + String[] splits = orders.split(Constants.SPLIT); + if (splits.length == 2) { + return "convert(" + tableName + "." + ColumnPropertyUtil.propertyToColumn(splits[0]) + " using gbk) " + splits[1]; + } + } + return ""; + } + + + /** + * 将指定字段排序 + * inet_aton:mysql将IP 转成 long类别函数 + * + * @param orders 格式 属性名,排序方式 例如( name,asc或ip,desc) + * @param ipPropertyName 如果需要按IP属性排序,需要将属性名传入(可不传) + * @return 排序字符串 例如:(name asc 或 ip desc) + */ + public static String getOrderString(String orders, String... ipPropertyName) { + if (StringUtil.isNotEmpty(orders)) { + String[] splits = orders.split(Constants.SPLIT); + if (splits.length == 2) { + String column = ColumnPropertyUtil.propertyToColumn(splits[0]); + if (ipPropertyName != null && ipPropertyName.length > 0) { + for (String ip : ipPropertyName) { + if (ip.equals(column)) { + return "inet_aton(" + column + ") " + splits[1]; + } + } + } + return column + " " + splits[1]; + } + } + return ""; + } +} diff --git a/src/main/java/com/jsh/erp/utils/PageQueryInfo.java b/src/main/java/com/jsh/erp/utils/PageQueryInfo.java new file mode 100644 index 00000000..8cb143ac --- /dev/null +++ b/src/main/java/com/jsh/erp/utils/PageQueryInfo.java @@ -0,0 +1,30 @@ +package com.jsh.erp.utils; + +import java.util.List; + +/** + * 分页查询结果 + * + * @author jishenghua qq752718920 2018-10-7 15:26:27 + */ +public class PageQueryInfo { + + private Integer total; + private List rows; + + public Integer getTotal() { + return total; + } + + public void setTotal(Integer total) { + this.total = total; + } + + public List getRows() { + return rows; + } + + public void setRows(List rows) { + this.rows = rows; + } +} diff --git a/src/main/java/com/jsh/erp/utils/ParamUtils.java b/src/main/java/com/jsh/erp/utils/ParamUtils.java new file mode 100644 index 00000000..9e38f4cd --- /dev/null +++ b/src/main/java/com/jsh/erp/utils/ParamUtils.java @@ -0,0 +1,40 @@ +package com.jsh.erp.utils; + +import javax.servlet.http.HttpServletRequest; +import java.util.Collections; +import java.util.Enumeration; +import java.util.HashMap; + +/** + * @author jishenghua qq752718920 2018-10-7 15:26:27 + */ +public class ParamUtils { + public static String getPageOffset(Integer currentPage, Integer pageSize) { + if (currentPage != null && pageSize != null) { + int offset = (currentPage - 1) * pageSize; + if (offset < 0) { + return 0 + ""; + } else { + return offset + ""; + } + } + return null; + } + + public static HashMap requestToMap(HttpServletRequest request) { + + HashMap parameterMap = new HashMap(); + Enumeration names = request.getParameterNames(); + if (names != null) { + for (String name : Collections.list(names)) { + parameterMap.put(name, request.getParameter(name)); + /*HttpMethod method = HttpMethod.valueOf(request.getMethod()); + if (method == GET || method == DELETE) + parameterMap.put(name, transcoding(request.getParameter(name))); + else + parameterMap.put(name, request.getParameter(name));*/ + } + } + return parameterMap; + } +} diff --git a/src/main/java/com/jsh/erp/utils/QueryUtils.java b/src/main/java/com/jsh/erp/utils/QueryUtils.java new file mode 100644 index 00000000..3d7c1cc0 --- /dev/null +++ b/src/main/java/com/jsh/erp/utils/QueryUtils.java @@ -0,0 +1,142 @@ +package com.jsh.erp.utils; + +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import org.springframework.util.Assert; + +import java.util.List; +import java.util.Map; + +import static com.jsh.erp.utils.Constants.CURRENT_PAGE; +import static com.jsh.erp.utils.Constants.PAGE_SIZE; + +/** + * @author jishenghua qq752718920 2018-10-7 15:26:27 + */ +public class QueryUtils { + public static String filterSqlSpecialChar(String search) { + return search != null ? search + .replaceAll("_", "\\\\_") + .replaceAll("!", "\\\\!") + .replaceAll("\\[", "\\\\[") + .replaceAll("\\]", "\\\\]") + .replaceAll("\\^", "\\\\^") : null; + } + + public static T list2One(List list, String label) { + Assert.notNull(label); + Assert.notEmpty(list, label + "对应的记录不存在"); + Assert.isTrue(list.size() == 1, label + "对应的记录不止一个"); + return list.get(0); + } + + public static T list2One(List list, String label, T defaultValue) { + Assert.notNull(list); + Assert.notNull(label); + if (list.isEmpty()) + return defaultValue; + else { + Assert.isTrue(list.size() == 1, label + "对应的记录不止一个"); + return list.get(0); + } + } + + public static List search(Map map) { + List search = null; + + String str = map.get(Constants.SEARCH); + if (StringUtil.isNotEmpty(str)) { + search = StringUtil.searchCondition(str); + } + return search; + } + + public static int rows(Map map) { + return Integer.parseInt(map.get(PAGE_SIZE)); + } + + public static int offset(Map map) { + return (currentPage(map) - 1) * pageSize(map); + } + + public static int pageSize(Map map) { + return Integer.parseInt(map.get(PAGE_SIZE)); + } + + public static int currentPage(Map map) { + int val = Integer.parseInt(map.get(CURRENT_PAGE)); + if (val < 1) + throw new RuntimeException("当前页数目:" + val + " 必须大于0"); + return val; + } + + public static String order(Map map) { + String orderString = OrderUtils.getOrderString(map.get(Constants.ORDER)); + return orderString.trim().isEmpty() ? null : orderString; + } + + public static Integer level(Map map) { + String levelString = map.get(Constants.LEVEL); + return StringUtil.isEmpty(levelString) ? null : Integer.parseInt(levelString); + } + + public static boolean isRecursion(Map map) { + String isRecursion = map.get(Constants.IS_RECURSION); + return StringUtil.isNotEmpty(isRecursion) && Constants.IS_RECURSION_VALUE.equals(isRecursion); + } + + public static int type(Map map) { + return Integer.parseInt(map.get(Constants.TYPE)); + } + + public static String filter(Map map) { + if (map.containsKey(Constants.FILTER)) { + JSONArray array = JSON.parseArray(map.get(Constants.FILTER)); + if (array.isEmpty()) { + return null; + } else { + boolean first = true; + StringBuilder builder = new StringBuilder(); + for (int idx = 0; idx < array.size(); ++idx) { + JSONObject object = array.getJSONObject(idx); + if (object.get("value") instanceof JSONArray) { + + JSONArray value = object.getJSONArray("value"); + + if (!value.isEmpty()) { + if (!first) { + builder.append(" AND "); + } else { + first = false; + } + + String key = object.getString("name"); + + builder.append("("); + + builder.append("`").append(key).append("`"); + + builder.append(" IN "); + + builder.append("("); + + for (int vidx = 0; vidx < value.size(); ++vidx) { + if (vidx != 0) { + builder.append(","); + } + builder.append(value.getString(vidx)); + } + builder.append(")"); + + builder.append(")"); + } + } + } + return builder.toString(); + } + } else { + return null; + } + } +} diff --git a/src/main/java/com/jsh/erp/utils/RegExpTools.java b/src/main/java/com/jsh/erp/utils/RegExpTools.java new file mode 100644 index 00000000..56d0f9a1 --- /dev/null +++ b/src/main/java/com/jsh/erp/utils/RegExpTools.java @@ -0,0 +1,154 @@ +package com.jsh.erp.utils; + +import org.springframework.util.Assert; + +import java.util.ArrayList; +import java.util.List; + +/** + * Created by Adm on 2015/12/14. + * + * @author yubiao + *

+ * mysql匹配正则表达式 + */ +public class RegExpTools { + /** + * @param search 模糊匹配字符串数组 + */ + public static String regexp(List search) { + if (search == null || search.isEmpty()) + return null; + String regexp = ""; + for (String s : search) { + if (!regexp.isEmpty()) { + regexp = regexp + "|"; + } + regexp = regexp + ".*"; + regexp = regexp + s.replaceAll("\\.", "\\\\."); + regexp = regexp + ".*"; + } + return regexp; + } + + /** + * @param key json字段key + * @param search 模糊匹配字符串数组 + * json的mysql匹配正则表达式 + */ + public static String regexp(String key, List search) { + if (search == null || search.isEmpty()) + return null; + StringBuilder sb = new StringBuilder(); + for (String s : search) { + if (sb.length() == 0) { + sb.append(".*\\\"").append(key).append("\\\":\\\"[a-zA-Z0-9]*("); + } else { + sb.append("|"); + } + sb.append(s); + } + sb.append(")[a-zA-Z0-9]*\\\".*"); + return sb.toString(); + } + + public static class RegExp { + public static final String ANY = ".*"; + public static final String QUOTE = "\\\""; + public static final String LFT_PAREN = "("; + public static final String RHT_PAREN = ")"; + public static final String COLON = ":"; + public static final String OR = "|"; + + private final StringBuilder builder = new StringBuilder(); + + public RegExp any() { + builder.append(ANY); + return this; + } + + public RegExp lftParen() { + builder.append(LFT_PAREN); + return this; + } + + public RegExp rhtParen() { + builder.append(RHT_PAREN); + return this; + } + + public RegExp colon() { + builder.append(COLON); + return this; + + } + + public RegExp quote() { + builder.append(QUOTE); + return this; + } + + public RegExp quote(String str) { + Assert.notNull(str, "str为空"); + builder.append(QUOTE).append(str).append(QUOTE); + return this; + } + + public RegExp value(String str) { + Assert.notNull(str, "str为空"); + builder.append(str); + return this; + } + + public RegExp or() { + builder.append(OR); + return this; + } + + public RegExp or(List values) { + Assert.notEmpty(values, "values必须非空"); + lftParen(); + boolean first = true; + for (String value : values) { + if (first) { + builder.append(value); + first = false; + } else { + builder.append(OR).append(value); + } + } + rhtParen(); + return this; + } + + @Override + public String toString() { + return builder.toString(); + } + + public static void main(String[] args) { + List values = new ArrayList(); + + values.add("310"); + values.add(String.valueOf(2)); + values.add(String.valueOf(3)); + + RegExp exp = new RegExp(); + + exp.any(); + exp.quote("fullKbNum").colon() + .quote() + .value("[a-zA-Z0-9]*").or(values).value("[a-zA-Z0-9]*") + .quote(); + exp.or(); + exp.quote("gbId[a-f0-9-]{36}").colon() + .quote() + .value("[0-9]*").or(values).value("[0-9]*") + .quote(); + exp.any(); + + System.out.println(exp); + } + + } +} diff --git a/src/main/java/com/jsh/erp/utils/ResponseCode.java b/src/main/java/com/jsh/erp/utils/ResponseCode.java new file mode 100644 index 00000000..b7072ac6 --- /dev/null +++ b/src/main/java/com/jsh/erp/utils/ResponseCode.java @@ -0,0 +1,24 @@ +package com.jsh.erp.utils; + +import com.alibaba.fastjson.annotation.JSONCreator; +import com.alibaba.fastjson.annotation.JSONField; + +/** + * @author jishenghua qq752718920 2018-10-7 15:26:27 + */ +public class ResponseCode { + + public final int code; + public final Object data; + + /** + * + * @param code + * @param data + */ + @JSONCreator + public ResponseCode(@JSONField(name = "code") int code, @JSONField(name = "data")Object data) { + this.code = code; + this.data = data; + } +} \ No newline at end of file diff --git a/src/main/java/com/jsh/erp/utils/ResponseJsonUtil.java b/src/main/java/com/jsh/erp/utils/ResponseJsonUtil.java new file mode 100644 index 00000000..953cc8d6 --- /dev/null +++ b/src/main/java/com/jsh/erp/utils/ResponseJsonUtil.java @@ -0,0 +1,83 @@ +package com.jsh.erp.utils; + +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.serializer.SerializerFeature; +import com.alibaba.fastjson.serializer.ValueFilter; + +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.HashMap; +import java.util.Map; +import java.util.TimeZone; + +public class ResponseJsonUtil { + public static final SimpleDateFormat FORMAT = new SimpleDateFormat("yyyy-MM-dd"); + + static { + FORMAT.setTimeZone(TimeZone.getTimeZone("GMT+8")); + } + + /** + * 响应过滤器 + */ + public static final class ResponseFilter extends ExtJsonUtils.ExtFilter implements ValueFilter { + @Override + public Object process(Object object, String name, Object value) { + if (name.equals("createTime") || name.equals("modifyTime")) { + return value; + } else if (value instanceof Date) { + return FORMAT.format(value); + } else { + return value; + } + } + } + + /** + * + * @param responseCode + * @return + */ + public static String backJson4HttpApi(ResponseCode responseCode) { + if (responseCode != null) { + String result = JSON.toJSONString(responseCode, new ResponseFilter(), + SerializerFeature.DisableCircularReferenceDetect, + SerializerFeature.WriteNonStringKeyAsString); + result = result.replaceFirst("\"data\":\\{", ""); + return result.substring(0, result.length() - 1); + } + return null; + } + + /** + * 验证失败的json串 + * @param code + * @return + */ + public static String backJson4VerifyFailure(int code) { + Map map = new HashMap(); + map.put("message", "未通过验证"); + return JSON.toJSONString(new ResponseCode(code, map), new ResponseFilter(), + SerializerFeature.DisableCircularReferenceDetect, + SerializerFeature.WriteNonStringKeyAsString); + } + + /** + * 成功的json串 + * @param responseCode + * @return + */ + public static String backJson(ResponseCode responseCode) { + if (responseCode != null) { + return JSON.toJSONString(responseCode, new ResponseFilter(), + SerializerFeature.DisableCircularReferenceDetect, + SerializerFeature.WriteNonStringKeyAsString); + } + return null; + } + + public static String returnJson(Map map, String message, int code) { + map.put("message", message); + return backJson(new ResponseCode(code, map)); + } +} diff --git a/src/main/java/com/jsh/erp/utils/StringUtil.java b/src/main/java/com/jsh/erp/utils/StringUtil.java new file mode 100644 index 00000000..0e712dcd --- /dev/null +++ b/src/main/java/com/jsh/erp/utils/StringUtil.java @@ -0,0 +1,196 @@ +package com.jsh.erp.utils; + +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; + +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.*; + +/** + * @author jishenghua qq752718920 2018-10-7 15:26:27 + */ +public class StringUtil { + + private StringUtil() { + + } + + private static String DEFAULT_FORMAT = "yyyy-MM-dd HH:mm:ss"; + + public static String filterNull(String str) { + if (str == null) { + return ""; + } else { + return str.trim(); + } + } + + public static boolean stringEquels(String source,String target) { + if(isEmpty(source)||isEmpty(target)){ + return false; + }else{ + return source.equals(target); + } + } + + public static boolean isEmpty(String str) { + return str == null || "".equals(str.trim()); + } + + public static boolean isNotEmpty(String str) { + return !isEmpty(str); + } + + public static String getSysDate(String format) { + if (StringUtil.isEmpty(format)) { + format = DEFAULT_FORMAT; + } + SimpleDateFormat df = new SimpleDateFormat(format); + return df.format(new Date()); + } + + public static Date getDateByString(String date, String format) { + if (StringUtil.isEmpty(format)) { + format = DEFAULT_FORMAT; + } + if (StringUtil.isNotEmpty(date)) { + SimpleDateFormat sdf = new SimpleDateFormat(format); + try { + return sdf.parse(date); + } catch (ParseException e) { + throw new RuntimeException("转换为日期类型错误:DATE:" + date + " FORMAT:" + format); + } + } else { + return null; + } + } + + public static Date getDateByLongDate(Long millis) { + if (millis == null) { + return new Date(); + } + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(millis); + return cal.getTime(); + + } + + public static UUID stringToUUID(String id) { + if (StringUtil.isNotEmpty(id)) { + return UUID.fromString(id); + } else { + return null; + } + } + + public static Integer parseInteger(String str) { + if (StringUtil.isNotEmpty(str)) { + return Integer.parseInt(str); + } else { + return null; + } + } + + public static List listToUUID(List listStrs) { + if (listStrs != null && listStrs.size() > 0) { + List uuidList = new ArrayList(); + for (String str : listStrs) { + uuidList.add(UUID.fromString(str)); + } + return uuidList; + } else { + return null; + } + } + + public static List arrayToUUIDList(String[] uuids) { + if (uuids != null && uuids.length > 0) { + List uuidList = new ArrayList(); + for (String str : uuids) { + uuidList.add(UUID.fromString(str)); + } + return uuidList; + } else { + return null; + } + } + + //是否是JSON + public static boolean containsAny(String str, String... flag) { + if (str != null) { + if (flag == null || flag.length == 0) { + flag = "[-{-}-]-,".split("-"); + } + for (String s : flag) { + if (str.contains(s)) { + return true; + } + } + } + return false; + } + + public static String getModifyOrgOperateData(UUID resourceId, UUID orgId) { + if (resourceId != null && orgId != null) { + Map map = new HashMap(); + map.put(resourceId, orgId); + return JSON.toJSONString(map); + } + return ""; + } + + public static String[] listToStringArray(List list) { + if (list != null && !list.isEmpty()) { + return list.toArray(new String[list.size()]); + } + return new String[0]; + } + + public static List stringToListArray(String[] strings) { + if (strings != null && strings.length > 0) { + return Arrays.asList(strings); + } + return new ArrayList(); + } + + /** + * String字符串转成List数据格式 + * String str = "1,2,3,4,5,6" -> List listLong [1,2,3,4,5,6]; + * + * @param strArr + * @return + */ + public static List strToLongList(String strArr) { + List idList=new ArrayList(); + String[] d=strArr.split(","); + for (int i = 0, size = d.length; i < size; i++) { + if(d[i]!=null) { + idList.add(Long.parseLong(d[i])); + } + } + return idList; + } + + public static List searchCondition(String search) { + if (isEmpty(search)) { + return new ArrayList(); + }else{ + //String[] split = search.split(" "); + String[] split = search.split("#"); + return stringToListArray(split); + } + } + + public static String getInfo(String search, String key){ + String value = ""; + if(search!=null) { + JSONObject obj = JSONObject.parseObject(search); + value = obj.getString(key); + if(value.equals("")) { + value = null; + } + } + return value; + } +} diff --git a/src/main/java/com/jsh/util/Tools.java b/src/main/java/com/jsh/erp/utils/Tools.java similarity index 99% rename from src/main/java/com/jsh/util/Tools.java rename to src/main/java/com/jsh/erp/utils/Tools.java index 84dcfe36..31c23cdb 100644 --- a/src/main/java/com/jsh/util/Tools.java +++ b/src/main/java/com/jsh/erp/utils/Tools.java @@ -1,4 +1,4 @@ -package com.jsh.util; +package com.jsh.erp.utils; import javax.servlet.http.HttpServletRequest; import java.io.IOException; @@ -12,10 +12,7 @@ import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import java.text.ParseException; import java.text.SimpleDateFormat; -import java.util.Calendar; -import java.util.Date; -import java.util.Locale; -import java.util.UUID; +import java.util.*; import java.util.regex.Pattern; /** diff --git a/src/main/java/com/jsh/model/po/Account.java b/src/main/java/com/jsh/model/po/Account.java deleted file mode 100644 index 69e11d93..00000000 --- a/src/main/java/com/jsh/model/po/Account.java +++ /dev/null @@ -1,85 +0,0 @@ -package com.jsh.model.po; - -@SuppressWarnings("serial") -public class Account implements java.io.Serializable { - private Long Id; - private String Name; - private String SerialNo; - private Double InitialAmount; - private Double CurrentAmount; - private Boolean IsDefault; - private String Remark; - - public Account() { - - } - - public Account(Long Id) { - this.Id = Id; - } - - public Account(String name, String serialNo, Double initialAmount, Double currentAmount, Boolean isDefault, String remark) { - Name = name; - SerialNo = serialNo; - InitialAmount = initialAmount; - CurrentAmount = currentAmount; - IsDefault = isDefault; - Remark = remark; - } - - public Long getId() { - return Id; - } - - public void setId(Long id) { - Id = id; - } - - public String getName() { - return Name; - } - - public void setName(String name) { - Name = name; - } - - public String getSerialNo() { - return SerialNo; - } - - public void setSerialNo(String serialNo) { - SerialNo = serialNo; - } - - public Double getInitialAmount() { - return InitialAmount; - } - - public void setInitialAmount(Double initialAmount) { - InitialAmount = initialAmount; - } - - public Double getCurrentAmount() { - return CurrentAmount; - } - - public void setCurrentAmount(Double currentAmount) { - CurrentAmount = currentAmount; - } - - public Boolean getIsDefault() { - return IsDefault; - } - - public void setIsDefault(Boolean isDefault) { - IsDefault = isDefault; - } - - public String getRemark() { - return Remark; - } - - public void setRemark(String remark) { - Remark = remark; - } -} diff --git a/src/main/java/com/jsh/model/po/AccountHead.java b/src/main/java/com/jsh/model/po/AccountHead.java deleted file mode 100644 index 99f12789..00000000 --- a/src/main/java/com/jsh/model/po/AccountHead.java +++ /dev/null @@ -1,121 +0,0 @@ -package com.jsh.model.po; - -import java.sql.Timestamp; - -@SuppressWarnings("serial") -public class AccountHead implements java.io.Serializable { - private Long Id; - private String Type; - private Supplier OrganId; - private Person HandsPersonId; - private Double ChangeAmount; - private Double TotalPrice; - private Account AccountId; - private String BillNo; - private Timestamp BillTime; - private String Remark; - - public AccountHead() { - - } - - public AccountHead(Long Id) { - this.Id = Id; - } - - public AccountHead(String type, Supplier organId, - Person handsPersonId, Double changeAmount, Double totalPrice, - Account accountId, String billNo, Timestamp billTime, String remark) { - super(); - Type = type; - OrganId = organId; - HandsPersonId = handsPersonId; - ChangeAmount = changeAmount; - TotalPrice = totalPrice; - AccountId = accountId; - BillNo = billNo; - BillTime = billTime; - Remark = remark; - } - - public Long getId() { - return Id; - } - - public void setId(Long id) { - Id = id; - } - - public String getType() { - return Type; - } - - public void setType(String type) { - Type = type; - } - - public Supplier getOrganId() { - return OrganId; - } - - public void setOrganId(Supplier organId) { - OrganId = organId; - } - - public Person getHandsPersonId() { - return HandsPersonId; - } - - public void setHandsPersonId(Person handsPersonId) { - HandsPersonId = handsPersonId; - } - - public Double getChangeAmount() { - return ChangeAmount; - } - - public void setChangeAmount(Double changeAmount) { - ChangeAmount = changeAmount; - } - - public Double getTotalPrice() { - return TotalPrice; - } - - public void setTotalPrice(Double totalPrice) { - TotalPrice = totalPrice; - } - - public Account getAccountId() { - return AccountId; - } - - public void setAccountId(Account accountId) { - AccountId = accountId; - } - - public String getBillNo() { - return BillNo; - } - - public void setBillNo(String billNo) { - BillNo = billNo; - } - - public Timestamp getBillTime() { - return BillTime; - } - - public void setBillTime(Timestamp billTime) { - BillTime = billTime; - } - - public String getRemark() { - return Remark; - } - - public void setRemark(String remark) { - Remark = remark; - } - -} diff --git a/src/main/java/com/jsh/model/po/AccountItem.java b/src/main/java/com/jsh/model/po/AccountItem.java deleted file mode 100644 index e08bd23c..00000000 --- a/src/main/java/com/jsh/model/po/AccountItem.java +++ /dev/null @@ -1,78 +0,0 @@ -package com.jsh.model.po; - -@SuppressWarnings("serial") -public class AccountItem implements java.io.Serializable { - private Long Id; - private AccountHead HeaderId; - private Account AccountId; - private InOutItem InOutItemId; - private Double EachAmount; - private String Remark; - - public AccountItem() { - - } - - public AccountItem(Long Id) { - this.Id = Id; - } - - public AccountItem(AccountHead headerId, Account accountId, - InOutItem inOutItemId, Double eachAmount, String remark) { - super(); - HeaderId = headerId; - AccountId = accountId; - InOutItemId = inOutItemId; - EachAmount = eachAmount; - Remark = remark; - } - - public Long getId() { - return Id; - } - - public void setId(Long id) { - Id = id; - } - - public AccountHead getHeaderId() { - return HeaderId; - } - - public void setHeaderId(AccountHead headerId) { - HeaderId = headerId; - } - - public Account getAccountId() { - return AccountId; - } - - public void setAccountId(Account accountId) { - AccountId = accountId; - } - - public InOutItem getInOutItemId() { - return InOutItemId; - } - - public void setInOutItemId(InOutItem inOutItemId) { - InOutItemId = inOutItemId; - } - - public Double getEachAmount() { - return EachAmount; - } - - public void setEachAmount(Double eachAmount) { - EachAmount = eachAmount; - } - - public String getRemark() { - return Remark; - } - - public void setRemark(String remark) { - Remark = remark; - } - -} diff --git a/src/main/java/com/jsh/model/po/App.java b/src/main/java/com/jsh/model/po/App.java deleted file mode 100644 index a6af765d..00000000 --- a/src/main/java/com/jsh/model/po/App.java +++ /dev/null @@ -1,170 +0,0 @@ -package com.jsh.model.po; - -@SuppressWarnings("serial") -public class App implements java.io.Serializable { - private Long Id; - private String Number; - private String Name; - private String Type; - private String Icon; - private String URL; - private String Width; - private String Height; - private Boolean ReSize; - private Boolean OpenMax; - private Boolean Flash; - private String ZL; - private String Sort; - private String Remark; - private Boolean Enabled; - - - public App() { - - } - - public App(Long Id) { - this.Id = Id; - } - - public App(String Number, String Name, String Type, String Icon, String URL, String Width, - String Height, Boolean ReSize, Boolean OpenMax, Boolean Flash, String ZL, String Sort, - String Remark, Boolean Enabled) { - this.Number = Number; - this.Name = Name; - this.Type = Type; - this.Icon = Icon; - this.URL = URL; - this.Width = Width; - this.Height = Height; - this.ReSize = ReSize; - this.OpenMax = OpenMax; - this.Flash = Flash; - this.ZL = ZL; - this.Sort = Sort; - this.Remark = Remark; - this.Enabled = Enabled; - } - - public Long getId() { - return Id; - } - - public void setId(Long id) { - Id = id; - } - - public String getNumber() { - return Number; - } - - public void setNumber(String number) { - Number = number; - } - - public String getName() { - return Name; - } - - public void setName(String name) { - Name = name; - } - - public String getType() { - return Type; - } - - public void setType(String type) { - Type = type; - } - - public String getIcon() { - return Icon; - } - - public void setIcon(String icon) { - Icon = icon; - } - - public String getURL() { - return URL; - } - - public void setURL(String uRL) { - URL = uRL; - } - - public String getWidth() { - return Width; - } - - public void setWidth(String width) { - Width = width; - } - - public String getHeight() { - return Height; - } - - public void setHeight(String height) { - Height = height; - } - - public Boolean getReSize() { - return ReSize; - } - - public void setReSize(Boolean reSize) { - ReSize = reSize; - } - - public Boolean getOpenMax() { - return OpenMax; - } - - public void setOpenMax(Boolean openMax) { - OpenMax = openMax; - } - - public Boolean getFlash() { - return Flash; - } - - public void setFlash(Boolean flash) { - Flash = flash; - } - - public String getZL() { - return ZL; - } - - public void setZL(String zL) { - ZL = zL; - } - - public String getSort() { - return Sort; - } - - public void setSort(String sort) { - Sort = sort; - } - - public String getRemark() { - return Remark; - } - - public void setRemark(String remark) { - Remark = remark; - } - - public Boolean getEnabled() { - return Enabled; - } - - public void setEnabled(Boolean enabled) { - Enabled = enabled; - } - - -} \ No newline at end of file diff --git a/src/main/java/com/jsh/model/po/Asset.java b/src/main/java/com/jsh/model/po/Asset.java deleted file mode 100644 index 1f19cdf3..00000000 --- a/src/main/java/com/jsh/model/po/Asset.java +++ /dev/null @@ -1,320 +0,0 @@ -package com.jsh.model.po; - -import java.sql.Timestamp; -import java.util.Map; - -@SuppressWarnings("serial") -public class Asset implements java.io.Serializable { - private Long id; - private Assetname assetname; - private String location; - private Short status; - private Basicuser user; - private Double price; - private Timestamp purchasedate; - private Timestamp periodofvalidity; - private Timestamp warrantydate; - private String assetnum; - private String serialnum; - private Supplier supplier; - private String labels; - private String description; - private String addMonth; - private Timestamp createtime; - private Basicuser creator; - private Timestamp updatetime; - private Basicuser updator; - - //----------以下属性导入exel表格使用-------------------- - /** - * 类型 right--正确 warn--警告 wrong--错误 - */ - private Map cellInfo; - - /** - * 行号 - */ - private Integer rowLineNum; - - /** - * 保存价格 - */ - private String priceStr; - - /** - * 资产名称 - */ - private String assetnameStr; - - /** - * 资产类型 - */ - private String category; - - /** - * 购买日期 - */ - private String purchasedateStr; - - /** - * 有效日期 - */ - private String periodofvalidityStr; - - /** - * 保修日期 - */ - private String warrantydateStr; - - public Asset() { - - } - - public Asset(Long id) { - this.id = id; - } - - public Asset(Assetname assetname, String location, - Short status, Basicuser user, Double price, Timestamp purchasedate, - Timestamp periodofvalidity, Timestamp warrantydate, - String assetnum, String serialnum, Supplier supplier, - String description, Timestamp createtime, Basicuser creator, - Timestamp updatetime, String labels, Basicuser updator, String addMonth) { - super(); - this.assetname = assetname; - this.location = location; - this.status = status; - this.user = user; - this.price = price; - this.purchasedate = purchasedate; - this.periodofvalidity = periodofvalidity; - this.warrantydate = warrantydate; - this.assetnum = assetnum; - this.serialnum = serialnum; - this.supplier = supplier; - this.description = description; - this.createtime = createtime; - this.creator = creator; - this.updatetime = updatetime; - this.updator = updator; - this.labels = labels; - this.addMonth = addMonth; - } - - - public Long getId() { - return id; - } - - public void setId(Long id) { - this.id = id; - } - - public Assetname getAssetname() { - return assetname; - } - - public void setAssetname(Assetname assetname) { - this.assetname = assetname; - } - - public String getLocation() { - return location; - } - - public void setLocation(String location) { - this.location = location; - } - - public Short getStatus() { - return status; - } - - public void setStatus(Short status) { - this.status = status; - } - - public Basicuser getUser() { - return user; - } - - public void setUser(Basicuser user) { - this.user = user; - } - - public Double getPrice() { - return price; - } - - public void setPrice(Double price) { - this.price = price; - } - - public Timestamp getPurchasedate() { - return purchasedate; - } - - public void setPurchasedate(Timestamp purchasedate) { - this.purchasedate = purchasedate; - } - - public Timestamp getPeriodofvalidity() { - return periodofvalidity; - } - - public void setPeriodofvalidity(Timestamp periodofvalidity) { - this.periodofvalidity = periodofvalidity; - } - - public Timestamp getWarrantydate() { - return warrantydate; - } - - public void setWarrantydate(Timestamp warrantydate) { - this.warrantydate = warrantydate; - } - - public String getAssetnum() { - return assetnum; - } - - public void setAssetnum(String assetnum) { - this.assetnum = assetnum; - } - - public String getSerialnum() { - return serialnum; - } - - public void setSerialnum(String serialnum) { - this.serialnum = serialnum; - } - - public Supplier getSupplier() { - return supplier; - } - - public void setSupplier(Supplier supplier) { - this.supplier = supplier; - } - - public String getDescription() { - return description; - } - - public void setDescription(String description) { - this.description = description; - } - - public Timestamp getCreatetime() { - return createtime; - } - - public void setCreatetime(Timestamp createtime) { - this.createtime = createtime; - } - - public Basicuser getCreator() { - return creator; - } - - public void setCreator(Basicuser creator) { - this.creator = creator; - } - - public Timestamp getUpdatetime() { - return updatetime; - } - - public void setUpdatetime(Timestamp updatetime) { - this.updatetime = updatetime; - } - - public Basicuser getUpdator() { - return updator; - } - - public void setUpdator(Basicuser updator) { - this.updator = updator; - } - - public String getLabels() { - return labels; - } - - public void setLabels(String labels) { - this.labels = labels; - } - - public String getAddMonth() { - return addMonth; - } - - public void setAddMonth(String addMonth) { - this.addMonth = addMonth; - } - - public Integer getRowLineNum() { - return rowLineNum; - } - - public void setRowLineNum(Integer rowLineNum) { - this.rowLineNum = rowLineNum; - } - - public Map getCellInfo() { - return cellInfo; - } - - public void setCellInfo(Map cellInfo) { - this.cellInfo = cellInfo; - } - - public String getPriceStr() { - return priceStr; - } - - public void setPriceStr(String priceStr) { - this.priceStr = priceStr; - } - - public String getAssetnameStr() { - return assetnameStr; - } - - public void setAssetnameStr(String assetnameStr) { - this.assetnameStr = assetnameStr; - } - - public String getCategory() { - return category; - } - - public void setCategory(String category) { - this.category = category; - } - - public String getPurchasedateStr() { - return purchasedateStr; - } - - public void setPurchasedateStr(String purchasedateStr) { - this.purchasedateStr = purchasedateStr; - } - - public String getPeriodofvalidityStr() { - return periodofvalidityStr; - } - - public void setPeriodofvalidityStr(String periodofvalidityStr) { - this.periodofvalidityStr = periodofvalidityStr; - } - - public String getWarrantydateStr() { - return warrantydateStr; - } - - public void setWarrantydateStr(String warrantydateStr) { - this.warrantydateStr = warrantydateStr; - } -} \ No newline at end of file diff --git a/src/main/java/com/jsh/model/po/Assetname.java b/src/main/java/com/jsh/model/po/Assetname.java deleted file mode 100644 index 7ea410f0..00000000 --- a/src/main/java/com/jsh/model/po/Assetname.java +++ /dev/null @@ -1,77 +0,0 @@ -package com.jsh.model.po; - -@SuppressWarnings("serial") -public class Assetname implements java.io.Serializable { - private Long id; - private String assetname; - private Short isystem; - private Category category; - private String description; - private Short isconsumables; - - public Assetname() { - - } - - public Assetname(Long id) { - this.id = id; - } - - public Assetname(String assetname, Short isystem, String description, - Short isconsumables, Category category) { - this.assetname = assetname; - this.isystem = isystem; - this.description = description; - this.isconsumables = isconsumables; - this.category = category; - } - - public Long getId() { - return this.id; - } - - public void setId(Long id) { - this.id = id; - } - - public String getAssetname() { - return this.assetname; - } - - public void setAssetname(String assetname) { - this.assetname = assetname; - } - - public Short getIsystem() { - return this.isystem; - } - - public void setIsystem(Short isystem) { - this.isystem = isystem; - } - - public String getDescription() { - return this.description; - } - - public void setDescription(String description) { - this.description = description; - } - - public Short getIsconsumables() { - return this.isconsumables; - } - - public void setIsconsumables(Short isconsumables) { - this.isconsumables = isconsumables; - } - - public Category getCategory() { - return category; - } - - public void setCategory(Category category) { - this.category = category; - } - -} \ No newline at end of file diff --git a/src/main/java/com/jsh/model/po/Basicuser.java b/src/main/java/com/jsh/model/po/Basicuser.java deleted file mode 100644 index 02136d01..00000000 --- a/src/main/java/com/jsh/model/po/Basicuser.java +++ /dev/null @@ -1,147 +0,0 @@ -package com.jsh.model.po; - -@SuppressWarnings("serial") -public class Basicuser implements java.io.Serializable { - private Long id; - private String username; - private String loginame; - private String password; - private String position; - private String department; - private String email; - private String phonenum; - private Short ismanager; - private Short isystem; - private Short status; - private String description; - private String remark; - - public Basicuser() { - } - - public Basicuser(Long id) { - this.id = id; - } - - public Basicuser(String username, String loginame, String password, - String position, String department, String email, String phonenum, - Short ismanager, Short isystem, Short status, String description, - String remark) { - this.username = username; - this.loginame = loginame; - this.password = password; - this.position = position; - this.department = department; - this.email = email; - this.phonenum = phonenum; - this.ismanager = ismanager; - this.isystem = isystem; - this.status = status; - this.description = description; - this.remark = remark; - } - - public Long getId() { - return this.id; - } - - public void setId(Long id) { - this.id = id; - } - - public String getUsername() { - return this.username; - } - - public void setUsername(String username) { - this.username = username; - } - - public String getLoginame() { - return this.loginame; - } - - public void setLoginame(String loginame) { - this.loginame = loginame; - } - - public String getPassword() { - return this.password; - } - - public void setPassword(String password) { - this.password = password; - } - - public String getPosition() { - return this.position; - } - - public void setPosition(String position) { - this.position = position; - } - - public String getDepartment() { - return this.department; - } - - public void setDepartment(String department) { - this.department = department; - } - - public String getEmail() { - return this.email; - } - - public void setEmail(String email) { - this.email = email; - } - - public String getPhonenum() { - return this.phonenum; - } - - public void setPhonenum(String phonenum) { - this.phonenum = phonenum; - } - - public Short getIsmanager() { - return this.ismanager; - } - - public void setIsmanager(Short ismanager) { - this.ismanager = ismanager; - } - - public Short getIsystem() { - return this.isystem; - } - - public void setIsystem(Short isystem) { - this.isystem = isystem; - } - - public Short getStatus() { - return this.status; - } - - public void setStatus(Short status) { - this.status = status; - } - - public String getDescription() { - return this.description; - } - - public void setDescription(String description) { - this.description = description; - } - - public String getRemark() { - return this.remark; - } - - public void setRemark(String remark) { - this.remark = remark; - } -} \ No newline at end of file diff --git a/src/main/java/com/jsh/model/po/Category.java b/src/main/java/com/jsh/model/po/Category.java deleted file mode 100644 index 4a10fd8e..00000000 --- a/src/main/java/com/jsh/model/po/Category.java +++ /dev/null @@ -1,55 +0,0 @@ -package com.jsh.model.po; - -@SuppressWarnings("serial") -public class Category implements java.io.Serializable { - private Long id; - private String assetname; - private Short isystem; - private String description; - - public Category() { - - } - - public Category(Long id) { - this.id = id; - } - - public Category(String assetname, Short isystem, String description) { - this.assetname = assetname; - this.isystem = isystem; - this.description = description; - } - - public Long getId() { - return this.id; - } - - public void setId(Long id) { - this.id = id; - } - - public String getAssetname() { - return this.assetname; - } - - public void setAssetname(String assetname) { - this.assetname = assetname; - } - - public Short getIsystem() { - return this.isystem; - } - - public void setIsystem(Short isystem) { - this.isystem = isystem; - } - - public String getDescription() { - return this.description; - } - - public void setDescription(String description) { - this.description = description; - } -} \ No newline at end of file diff --git a/src/main/java/com/jsh/model/po/Depot.java b/src/main/java/com/jsh/model/po/Depot.java deleted file mode 100644 index 69638081..00000000 --- a/src/main/java/com/jsh/model/po/Depot.java +++ /dev/null @@ -1,96 +0,0 @@ -package com.jsh.model.po; - -@SuppressWarnings("serial") -public class Depot implements java.io.Serializable { - private Long id; - private String name; - private String address; - private Double warehousing; - private Double truckage; - private Integer type; - private String sort; - private String remark; - - public Depot() { - - } - - public Depot(Long id) { - this.id = id; - } - - public Depot(String name, String address, Double warehousing, Double truckage, Integer type, String sort, String remark) { - this.name = name; - this.address = address; - this.warehousing = warehousing; - this.truckage = truckage; - this.type = type; - this.sort = sort; - this.remark = remark; - } - - public Long getId() { - return id; - } - - public void setId(Long id) { - this.id = id; - } - - public String getName() { - return name; - } - - public void setName(String name) { - this.name = name; - } - - public String getAddress() { - return address; - } - - public void setAddress(String address) { - this.address = address; - } - - public Double getWarehousing() { - return warehousing; - } - - public void setWarehousing(Double warehousing) { - this.warehousing = warehousing; - } - - public Double getTruckage() { - return truckage; - } - - public void setTruckage(Double truckage) { - this.truckage = truckage; - } - - public Integer getType() { - return type; - } - - public void setType(Integer type) { - this.type = type; - } - - public String getSort() { - return sort; - } - - public void setSort(String sort) { - this.sort = sort; - } - - public String getRemark() { - return remark; - } - - public void setRemark(String remark) { - this.remark = remark; - } - -} \ No newline at end of file diff --git a/src/main/java/com/jsh/model/po/DepotHead.java b/src/main/java/com/jsh/model/po/DepotHead.java deleted file mode 100644 index 1f551b90..00000000 --- a/src/main/java/com/jsh/model/po/DepotHead.java +++ /dev/null @@ -1,300 +0,0 @@ -package com.jsh.model.po; - -import java.sql.Timestamp; - -@SuppressWarnings("serial") -public class DepotHead implements java.io.Serializable { - private Long Id; - private String Type; - private String SubType; - private Depot ProjectId; - private String DefaultNumber; - private String Number; - private String OperPersonName; - private Timestamp CreateTime; - private Timestamp OperTime; - private Supplier OrganId; - private Person HandsPersonId; - private String Salesman; //业务员(可以多个)[2][3] - private Account AccountId; - private Double ChangeAmount; - private String AccountIdList; //多账户ID列表 [2][3] - private String AccountMoneyList; //多账户金额列表 [{"[2]",22},{"[3]",33}] - private Double Discount; //优惠率 0.10 - private Double DiscountMoney; //优惠金额 10 - private Double DiscountLastMoney; //优惠后金额 90 - private Double OtherMoney; //销售或采购费用 100 - private String OtherMoneyList; //销售或采购费用涉及项目Id数组(包括快递、招待等)[2][3] - private String OtherMoneyItem; //销售费用涉及项目(包括快递、招待等) [{"[2]",22},{"[3]",33}] - private Integer AccountDay; //结算天数 - private Depot AllocationProjectId; - private Double TotalPrice; - private String PayType; - private Boolean Status = false; //单据状态 - private String Remark; - - public DepotHead() { - - } - - public DepotHead(Long Id) { - this.Id = Id; - } - - public DepotHead(String type, String subType, Depot projectId, String defaultNumber, String number, String operPersonName, Timestamp createTime, - Timestamp operTime, Supplier organId, Person handsPersonId, String salesman, String accountIdList, String accountMoneyList, - Double discount, Double discountMoney, Double discountLastMoney, Double otherMoney, String otherMoneyItem, Integer accountDay, - Account accountId, Double changeAmount, Depot allocationProjectId, Double totalPrice, String payType, Boolean status, String remark) { - super(); - Type = type; - SubType = subType; - ProjectId = projectId; - DefaultNumber = defaultNumber; - Number = number; - OperPersonName = operPersonName; - CreateTime = createTime; - OperTime = operTime; - OrganId = organId; - HandsPersonId = handsPersonId; - Salesman = salesman; - AccountIdList = accountIdList; - AccountMoneyList = accountMoneyList; - Discount = discount; - DiscountMoney = discountMoney; - DiscountLastMoney = discountLastMoney; - OtherMoney = otherMoney; - OtherMoneyItem = otherMoneyItem; - AccountDay = accountDay; - AccountId = accountId; - ChangeAmount = changeAmount; - AllocationProjectId = allocationProjectId; - TotalPrice = totalPrice; - PayType = payType; - Status = status; - Remark = remark; - } - - public Long getId() { - return Id; - } - - public void setId(Long id) { - Id = id; - } - - public String getType() { - return Type; - } - - public void setType(String type) { - Type = type; - } - - public String getSubType() { - return SubType; - } - - public void setSubType(String subType) { - SubType = subType; - } - - public Depot getProjectId() { - return ProjectId; - } - - public void setProjectId(Depot projectId) { - ProjectId = projectId; - } - - public String getDefaultNumber() { - return DefaultNumber; - } - - public void setDefaultNumber(String defaultNumber) { - DefaultNumber = defaultNumber; - } - - public String getNumber() { - return Number; - } - - public void setNumber(String number) { - Number = number; - } - - public String getOperPersonName() { - return OperPersonName; - } - - public void setOperPersonName(String operPersonName) { - OperPersonName = operPersonName; - } - - public Timestamp getCreateTime() { - return CreateTime; - } - - public void setCreateTime(Timestamp createTime) { - CreateTime = createTime; - } - - public Timestamp getOperTime() { - return OperTime; - } - - public void setOperTime(Timestamp operTime) { - OperTime = operTime; - } - - public Supplier getOrganId() { - return OrganId; - } - - public void setOrganId(Supplier organId) { - OrganId = organId; - } - - public Person getHandsPersonId() { - return HandsPersonId; - } - - public void setHandsPersonId(Person handsPersonId) { - HandsPersonId = handsPersonId; - } - - public Account getAccountId() { - return AccountId; - } - - public void setAccountId(Account accountId) { - AccountId = accountId; - } - - public Double getChangeAmount() { - return ChangeAmount; - } - - public void setChangeAmount(Double changeAmount) { - ChangeAmount = changeAmount; - } - - public Depot getAllocationProjectId() { - return AllocationProjectId; - } - - public void setAllocationProjectId(Depot allocationProjectId) { - AllocationProjectId = allocationProjectId; - } - - public Double getTotalPrice() { - return TotalPrice; - } - - public void setTotalPrice(Double totalPrice) { - TotalPrice = totalPrice; - } - - public String getPayType() { - return PayType; - } - - public void setPayType(String payType) { - PayType = payType; - } - - public String getRemark() { - return Remark; - } - - public void setRemark(String remark) { - Remark = remark; - } - - public String getSalesman() { - return Salesman; - } - - public void setSalesman(String salesman) { - Salesman = salesman; - } - - public String getAccountIdList() { - return AccountIdList; - } - - public void setAccountIdList(String accountIdList) { - AccountIdList = accountIdList; - } - - public String getAccountMoneyList() { - return AccountMoneyList; - } - - public void setAccountMoneyList(String accountMoneyList) { - AccountMoneyList = accountMoneyList; - } - - public Double getDiscount() { - return Discount; - } - - public void setDiscount(Double discount) { - Discount = discount; - } - - public Double getDiscountMoney() { - return DiscountMoney; - } - - public void setDiscountMoney(Double discountMoney) { - DiscountMoney = discountMoney; - } - - public Double getDiscountLastMoney() { - return DiscountLastMoney; - } - - public void setDiscountLastMoney(Double discountLastMoney) { - DiscountLastMoney = discountLastMoney; - } - - public Double getOtherMoney() { - return OtherMoney; - } - - public void setOtherMoney(Double otherMoney) { - OtherMoney = otherMoney; - } - - public String getOtherMoneyList() { - return OtherMoneyList; - } - - public void setOtherMoneyList(String otherMoneyList) { - OtherMoneyList = otherMoneyList; - } - - public String getOtherMoneyItem() { - return OtherMoneyItem; - } - - public void setOtherMoneyItem(String otherMoneyItem) { - OtherMoneyItem = otherMoneyItem; - } - - public Integer getAccountDay() { - return AccountDay; - } - - public void setAccountDay(Integer accountDay) { - AccountDay = accountDay; - } - - public Boolean getStatus() { - return Status; - } - - public void setStatus(Boolean status) { - Status = status; - } -} \ No newline at end of file diff --git a/src/main/java/com/jsh/model/po/DepotItem.java b/src/main/java/com/jsh/model/po/DepotItem.java deleted file mode 100644 index db1357d3..00000000 --- a/src/main/java/com/jsh/model/po/DepotItem.java +++ /dev/null @@ -1,240 +0,0 @@ -package com.jsh.model.po; - -@SuppressWarnings("serial") -public class DepotItem implements java.io.Serializable { - private Long Id; - private DepotHead HeaderId; - private Material MaterialId; - private String MUnit; //计量单位 - private Double OperNumber; - private Double BasicNumber; - private Double UnitPrice; - private Double TaxUnitPrice; //含税单价 - private Double AllPrice; - private String Remark; - private String Img; - private Depot DepotId; //仓库ID - private Depot AnotherDepotId; //对方仓库Id - private Double TaxRate; //税率 - private Double TaxMoney; //税额 - private Double TaxLastMoney; //价税合计 - private String OtherField1; //自定义字段1-品名 - private String OtherField2; //自定义字段2-型号 - private String OtherField3; //自定义字段3-制造商 - private String OtherField4; //自定义字段4 - private String OtherField5; //自定义字段5 - private String MType; //商品类型 - - - public DepotItem() { - - } - - public DepotItem(Long Id) { - this.Id = Id; - } - - public DepotItem(DepotHead headerId, Material materialId, String mUnit, - Double operNumber, Double basicNumber, Double unitPrice, Double taxUnitPrice, Double allPrice, String remark, String img, - Depot depotId, Depot anotherDepotId, Double taxRate, Double taxMoney, Double taxLastMoney, - String otherField1, String otherField2, String otherField3, String otherField4, String otherField5, String mType) { - super(); - HeaderId = headerId; - MaterialId = materialId; - MUnit = mUnit; - OperNumber = operNumber; - BasicNumber = basicNumber; - UnitPrice = unitPrice; - TaxUnitPrice = taxUnitPrice; - AllPrice = allPrice; - Remark = remark; - Img = img; - DepotId = depotId; - AnotherDepotId = anotherDepotId; - TaxRate = taxRate; - TaxMoney = taxMoney; - TaxLastMoney = taxLastMoney; - OtherField1 = otherField1; - OtherField2 = otherField2; - OtherField3 = otherField3; - OtherField4 = otherField4; - OtherField5 = otherField5; - MType = mType; - } - - public Long getId() { - return Id; - } - - public void setId(Long id) { - Id = id; - } - - public DepotHead getHeaderId() { - return HeaderId; - } - - public void setHeaderId(DepotHead headerId) { - HeaderId = headerId; - } - - public Material getMaterialId() { - return MaterialId; - } - - public void setMaterialId(Material materialId) { - MaterialId = materialId; - } - - public String getMUnit() { - return MUnit; - } - - public void setMUnit(String MUnit) { - this.MUnit = MUnit; - } - - public Double getTaxUnitPrice() { - return TaxUnitPrice; - } - - public void setTaxUnitPrice(Double taxUnitPrice) { - TaxUnitPrice = taxUnitPrice; - } - - public Double getOperNumber() { - return OperNumber; - } - - public void setOperNumber(Double operNumber) { - OperNumber = operNumber; - } - - public Double getBasicNumber() { - return BasicNumber; - } - - public void setBasicNumber(Double basicNumber) { - BasicNumber = basicNumber; - } - - public Double getUnitPrice() { - return UnitPrice; - } - - public void setUnitPrice(Double unitPrice) { - UnitPrice = unitPrice; - } - - public Double getAllPrice() { - return AllPrice; - } - - public void setAllPrice(Double allPrice) { - AllPrice = allPrice; - } - - public String getRemark() { - return Remark; - } - - public void setRemark(String remark) { - Remark = remark; - } - - public String getImg() { - return Img; - } - - public void setImg(String img) { - Img = img; - } - - public Depot getDepotId() { - return DepotId; - } - - public void setDepotId(Depot depotId) { - DepotId = depotId; - } - - public Depot getAnotherDepotId() { - return AnotherDepotId; - } - - public void setAnotherDepotId(Depot anotherDepotId) { - AnotherDepotId = anotherDepotId; - } - - public Double getTaxRate() { - return TaxRate; - } - - public void setTaxRate(Double taxRate) { - TaxRate = taxRate; - } - - public Double getTaxMoney() { - return TaxMoney; - } - - public void setTaxMoney(Double taxMoney) { - TaxMoney = taxMoney; - } - - public Double getTaxLastMoney() { - return TaxLastMoney; - } - - public void setTaxLastMoney(Double taxLastMoney) { - TaxLastMoney = taxLastMoney; - } - - public String getOtherField1() { - return OtherField1; - } - - public void setOtherField1(String otherField1) { - OtherField1 = otherField1; - } - - public String getOtherField2() { - return OtherField2; - } - - public void setOtherField2(String otherField2) { - OtherField2 = otherField2; - } - - public String getOtherField3() { - return OtherField3; - } - - public void setOtherField3(String otherField3) { - OtherField3 = otherField3; - } - - public String getOtherField4() { - return OtherField4; - } - - public void setOtherField4(String otherField4) { - OtherField4 = otherField4; - } - - public String getOtherField5() { - return OtherField5; - } - - public void setOtherField5(String otherField5) { - OtherField5 = otherField5; - } - - public String getMType() { - return MType; - } - - public void setMType(String MType) { - this.MType = MType; - } -} diff --git a/src/main/java/com/jsh/model/po/Functions.java b/src/main/java/com/jsh/model/po/Functions.java deleted file mode 100644 index 27872e5a..00000000 --- a/src/main/java/com/jsh/model/po/Functions.java +++ /dev/null @@ -1,99 +0,0 @@ -package com.jsh.model.po; - -@SuppressWarnings("serial") -public class Functions implements java.io.Serializable { - private Long Id; - private String Number; - private String Name; - private String PNumber; - private String URL; - private Boolean State; - private String Sort; - private Boolean Enabled; - private String Type; - private String PushBtn; - - public Functions() { - - } - - public Long getId() { - return Id; - } - - public void setId(Long id) { - Id = id; - } - - public String getNumber() { - return Number; - } - - public void setNumber(String number) { - Number = number; - } - - public String getName() { - return Name; - } - - public void setName(String name) { - Name = name; - } - - public String getPNumber() { - return PNumber; - } - - public void setPNumber(String pNumber) { - PNumber = pNumber; - } - - public String getURL() { - return URL; - } - - public void setURL(String uRL) { - URL = uRL; - } - - public Boolean getState() { - return State; - } - - public void setState(Boolean state) { - State = state; - } - - public String getSort() { - return Sort; - } - - public void setSort(String sort) { - Sort = sort; - } - - public Boolean getEnabled() { - return Enabled; - } - - public void setEnabled(Boolean enabled) { - Enabled = enabled; - } - - public String getType() { - return Type; - } - - public void setType(String type) { - Type = type; - } - - public String getPushBtn() { - return PushBtn; - } - - public void setPushBtn(String pushBtn) { - PushBtn = pushBtn; - } -} \ No newline at end of file diff --git a/src/main/java/com/jsh/model/po/InOutItem.java b/src/main/java/com/jsh/model/po/InOutItem.java deleted file mode 100644 index 5aea6aa7..00000000 --- a/src/main/java/com/jsh/model/po/InOutItem.java +++ /dev/null @@ -1,55 +0,0 @@ -package com.jsh.model.po; - -@SuppressWarnings("serial") -public class InOutItem implements java.io.Serializable { - private Long Id; - private String Name; - private String Type; - private String Remark; - - public InOutItem() { - - } - - public InOutItem(Long Id) { - this.Id = Id; - } - - public InOutItem(String name, String type, String remark) { - Name = name; - Type = type; - Remark = remark; - } - - public Long getId() { - return Id; - } - - public void setId(Long id) { - Id = id; - } - - public String getName() { - return Name; - } - - public void setName(String name) { - Name = name; - } - - public String getType() { - return Type; - } - - public void setType(String type) { - Type = type; - } - - public String getRemark() { - return Remark; - } - - public void setRemark(String remark) { - Remark = remark; - } -} diff --git a/src/main/java/com/jsh/model/po/Logdetails.java b/src/main/java/com/jsh/model/po/Logdetails.java deleted file mode 100644 index fb682596..00000000 --- a/src/main/java/com/jsh/model/po/Logdetails.java +++ /dev/null @@ -1,101 +0,0 @@ -package com.jsh.model.po; - -import java.sql.Timestamp; - -@SuppressWarnings("serial") -public class Logdetails implements java.io.Serializable { - - private Long id; - private Basicuser user; - private String operation; - private String clientIp; - private Timestamp createtime; - private Short status; - private String contentdetails; - private String remark; - - public Logdetails() { - - } - - public Logdetails(Long id) { - this.id = id; - } - - public Logdetails(Basicuser user, String operation, String clientIp, - Timestamp createtime, Short status, String contentdetails, - String remark) { - this.user = user; - this.operation = operation; - this.clientIp = clientIp; - this.createtime = createtime; - this.status = status; - this.contentdetails = contentdetails; - this.remark = remark; - } - - public Long getId() { - return this.id; - } - - public void setId(Long id) { - this.id = id; - } - - public Basicuser getUser() { - return user; - } - - public void setUser(Basicuser user) { - this.user = user; - } - - public String getOperation() { - return this.operation; - } - - public void setOperation(String operation) { - this.operation = operation; - } - - public String getClientIp() { - return this.clientIp; - } - - public void setClientIp(String clientIp) { - this.clientIp = clientIp; - } - - public Timestamp getCreatetime() { - return this.createtime; - } - - public void setCreatetime(Timestamp createtime) { - this.createtime = createtime; - } - - public Short getStatus() { - return this.status; - } - - public void setStatus(Short status) { - this.status = status; - } - - public String getContentdetails() { - return this.contentdetails; - } - - public void setContentdetails(String contentdetails) { - this.contentdetails = contentdetails; - } - - public String getRemark() { - return this.remark; - } - - public void setRemark(String remark) { - this.remark = remark; - } - -} \ No newline at end of file diff --git a/src/main/java/com/jsh/model/po/Material.java b/src/main/java/com/jsh/model/po/Material.java deleted file mode 100644 index f44d7e60..00000000 --- a/src/main/java/com/jsh/model/po/Material.java +++ /dev/null @@ -1,289 +0,0 @@ -package com.jsh.model.po; - -import java.util.Map; - -@SuppressWarnings("serial") -public class Material implements java.io.Serializable { - private Long Id; - private MaterialCategory materialCategory; - private String Name; - private String Mfrs; - private Double Packing; - private Double SafetyStock; - private String Model; - private String Standard; - private String Color; - private String Unit; - private Double RetailPrice; - private Double LowPrice; - private Double PresetPriceOne; - private Double PresetPriceTwo; - private Unit UnitId; - private String FirstOutUnit; - private String FirstInUnit; - private String PriceStrategy; - private String Remark; - private Boolean Enabled; - private String OtherField1; - private String OtherField2; - private String OtherField3; - - //----------以下属性导入exel表格使用-------------------- - /** - * 类型 right--正确 warn--警告 wrong--错误 - */ - private Map cellInfo; - - /** - * 行号 - */ - private Integer rowLineNum; - - private String safetyStockStr; - - public Material() { - - } - - public Material(Long Id) { - this.Id = Id; - } - - public Material(MaterialCategory materialCategory, String name, String mfrs, Double packing, - Double safetyStock, String model, String standard, String color, String unit, String remark, - Double retailPrice, Double lowPrice, Double presetPriceOne, Double presetPriceTwo, - Unit unitId, String firstOutUnit, String firstInUnit, String priceStrategy, Boolean enabled, - String otherField1, String otherField2, String otherField3) { - super(); - this.materialCategory = materialCategory; - Name = name; - Mfrs = mfrs; - Packing = packing; - SafetyStock = safetyStock; - Model = model; - Standard = standard; - Color = color; - Unit = unit; - RetailPrice = retailPrice; - LowPrice = lowPrice; - PresetPriceOne = presetPriceOne; - PresetPriceTwo = presetPriceTwo; - Remark = remark; - UnitId = unitId; - FirstOutUnit = firstOutUnit; - FirstInUnit = firstInUnit; - PriceStrategy = priceStrategy; - Enabled = enabled; - OtherField1 = otherField1; - OtherField2 = otherField2; - OtherField3 = otherField3; - } - - public Long getId() { - return Id; - } - - public void setId(Long id) { - Id = id; - } - - public MaterialCategory getMaterialCategory() { - return materialCategory; - } - - public void setMaterialCategory(MaterialCategory materialCategory) { - this.materialCategory = materialCategory; - } - - public String getName() { - return Name; - } - - public void setName(String name) { - Name = name; - } - - public String getModel() { - return Model; - } - - public void setModel(String model) { - Model = model; - } - - public String getStandard() { - return Standard; - } - - public void setStandard(String standard) { - Standard = standard; - } - - public String getColor() { - return Color; - } - - public void setColor(String color) { - Color = color; - } - - public String getUnit() { - return Unit; - } - - public void setUnit(String unit) { - Unit = unit; - } - - public Double getRetailPrice() { - return RetailPrice; - } - - public void setRetailPrice(Double retailPrice) { - RetailPrice = retailPrice; - } - - public Double getLowPrice() { - return LowPrice; - } - - public void setLowPrice(Double lowPrice) { - LowPrice = lowPrice; - } - - public Double getPresetPriceOne() { - return PresetPriceOne; - } - - public void setPresetPriceOne(Double presetPriceOne) { - PresetPriceOne = presetPriceOne; - } - - public Double getPresetPriceTwo() { - return PresetPriceTwo; - } - - public void setPresetPriceTwo(Double presetPriceTwo) { - PresetPriceTwo = presetPriceTwo; - } - - public String getRemark() { - return Remark; - } - - public void setRemark(String remark) { - Remark = remark; - } - - public String getMfrs() { - return Mfrs; - } - - public void setMfrs(String mfrs) { - Mfrs = mfrs; - } - - public Double getPacking() { - return Packing; - } - - public void setPacking(Double packing) { - Packing = packing; - } - - public Double getSafetyStock() { - return SafetyStock; - } - - public void setSafetyStock(Double safetyStock) { - SafetyStock = safetyStock; - } - - public Unit getUnitId() { - return UnitId; - } - - public void setUnitId(Unit unitId) { - UnitId = unitId; - } - - public String getFirstOutUnit() { - return FirstOutUnit; - } - - public void setFirstOutUnit(String firstOutUnit) { - FirstOutUnit = firstOutUnit; - } - - public String getFirstInUnit() { - return FirstInUnit; - } - - public void setFirstInUnit(String firstInUnit) { - FirstInUnit = firstInUnit; - } - - public String getPriceStrategy() { - return PriceStrategy; - } - - public void setPriceStrategy(String priceStrategy) { - PriceStrategy = priceStrategy; - } - - public Boolean getEnabled() { - return Enabled; - } - - public void setEnabled(Boolean enabled) { - Enabled = enabled; - } - - public String getOtherField1() { - return OtherField1; - } - - public void setOtherField1(String otherField1) { - OtherField1 = otherField1; - } - - public String getOtherField3() { - return OtherField3; - } - - public void setOtherField3(String otherField3) { - OtherField3 = otherField3; - } - - public String getOtherField2() { - return OtherField2; - } - - public void setOtherField2(String otherField2) { - OtherField2 = otherField2; - } - - public Map getCellInfo() { - return cellInfo; - } - - public void setCellInfo(Map cellInfo) { - this.cellInfo = cellInfo; - } - - public Integer getRowLineNum() { - return rowLineNum; - } - - public void setRowLineNum(Integer rowLineNum) { - this.rowLineNum = rowLineNum; - } - - public String getSafetyStockStr() { - return safetyStockStr; - } - - public void setSafetyStockStr(String safetyStockStr) { - this.safetyStockStr = safetyStockStr; - } -} diff --git a/src/main/java/com/jsh/model/po/MaterialCategory.java b/src/main/java/com/jsh/model/po/MaterialCategory.java deleted file mode 100644 index ef300385..00000000 --- a/src/main/java/com/jsh/model/po/MaterialCategory.java +++ /dev/null @@ -1,58 +0,0 @@ -package com.jsh.model.po; - -@SuppressWarnings("serial") -public class MaterialCategory implements java.io.Serializable { - private Long Id; - private String Name; - private Short CategoryLevel; - private MaterialCategory materialCategory; - - - public MaterialCategory() { - - } - - public MaterialCategory(Long Id) { - this.Id = Id; - } - - public MaterialCategory(String name, Short categoryLevel, - MaterialCategory materialCategory) { - Name = name; - CategoryLevel = categoryLevel; - this.materialCategory = materialCategory; - } - - public Long getId() { - return Id; - } - - public void setId(Long id) { - Id = id; - } - - public String getName() { - return Name; - } - - public void setName(String name) { - Name = name; - } - - public Short getCategoryLevel() { - return CategoryLevel; - } - - public void setCategoryLevel(Short categoryLevel) { - CategoryLevel = categoryLevel; - } - - public MaterialCategory getMaterialCategory() { - return materialCategory; - } - - public void setMaterialCategory(MaterialCategory materialCategory) { - this.materialCategory = materialCategory; - } - -} \ No newline at end of file diff --git a/src/main/java/com/jsh/model/po/MaterialProperty.java b/src/main/java/com/jsh/model/po/MaterialProperty.java deleted file mode 100644 index 214bab1c..00000000 --- a/src/main/java/com/jsh/model/po/MaterialProperty.java +++ /dev/null @@ -1,65 +0,0 @@ -package com.jsh.model.po; - -@SuppressWarnings("serial") -public class MaterialProperty implements java.io.Serializable { - private Long id; - private String nativeName; - private Boolean enabled; - private String sort; - private String anotherName; - - public MaterialProperty() { - - } - - public MaterialProperty(Long id) { - this.id = id; - } - - public MaterialProperty(String nativeName, Boolean enabled, String sort, String anotherName) { - nativeName = nativeName; - enabled = enabled; - sort = sort; - anotherName = anotherName; - } - - public Long getId() { - return id; - } - - public void setId(Long id) { - this.id = id; - } - - public String getNativeName() { - return nativeName; - } - - public void setNativeName(String nativeName) { - this.nativeName = nativeName; - } - - public Boolean getEnabled() { - return enabled; - } - - public void setEnabled(Boolean enabled) { - this.enabled = enabled; - } - - public String getSort() { - return sort; - } - - public void setSort(String sort) { - this.sort = sort; - } - - public String getAnotherName() { - return anotherName; - } - - public void setAnotherName(String anotherName) { - this.anotherName = anotherName; - } -} \ No newline at end of file diff --git a/src/main/java/com/jsh/model/po/Person.java b/src/main/java/com/jsh/model/po/Person.java deleted file mode 100644 index e1b76ea0..00000000 --- a/src/main/java/com/jsh/model/po/Person.java +++ /dev/null @@ -1,46 +0,0 @@ -package com.jsh.model.po; - -@SuppressWarnings("serial") -public class Person implements java.io.Serializable { - private Long Id; - private String Type; - private String Name; - - public Person() { - - } - - public Person(Long Id) { - this.Id = Id; - } - - public Person(String type, String name) { - Type = type; - Name = name; - } - - public Long getId() { - return Id; - } - - public void setId(Long id) { - Id = id; - } - - public String getType() { - return Type; - } - - public void setType(String type) { - Type = type; - } - - public String getName() { - return Name; - } - - public void setName(String name) { - Name = name; - } - -} \ No newline at end of file diff --git a/src/main/java/com/jsh/model/po/Role.java b/src/main/java/com/jsh/model/po/Role.java deleted file mode 100644 index ea7a3b9b..00000000 --- a/src/main/java/com/jsh/model/po/Role.java +++ /dev/null @@ -1,29 +0,0 @@ -package com.jsh.model.po; - -@SuppressWarnings("serial") -public class Role implements java.io.Serializable { - private Long Id; - private String Name; - - public Role() { - - } - - public Long getId() { - return Id; - } - - public void setId(Long id) { - Id = id; - } - - public String getName() { - return Name; - } - - public void setName(String name) { - Name = name; - } - - -} \ No newline at end of file diff --git a/src/main/java/com/jsh/model/po/Supplier.java b/src/main/java/com/jsh/model/po/Supplier.java deleted file mode 100644 index 10b7c51d..00000000 --- a/src/main/java/com/jsh/model/po/Supplier.java +++ /dev/null @@ -1,309 +0,0 @@ -package com.jsh.model.po; - -import java.util.Map; - -@SuppressWarnings("serial") -public class Supplier implements java.io.Serializable { - private Long id = 0l; - private String supplier = ""; - private String type = ""; - private String contacts = ""; - private String phonenum = ""; - private String fax = ""; - private String telephone = ""; - private String email = ""; - private String address = ""; - private Double advanceIn = 0d; - private String taxNum = ""; - private String bankName = ""; - private String accountNumber = ""; - private Double taxRate = 0d; - private Double BeginNeedGet = 0d; - private Double BeginNeedPay = 0d; - private Double AllNeedGet = 0d; - private Double AllNeedPay = 0d; - private Short isystem = 1; - private String description = ""; - private Boolean enabled = true; - - //----------以下属性导入exel表格使用-------------------- - /** - * 类型 right--正确 warn--警告 wrong--错误 - */ - private Map cellInfo; - - /** - * 行号 - */ - private Integer rowLineNum; - - private String advanceInStr; - - private String beginNeedGetStr; - - private String beginNeedPayStr; - - private String taxRateStr; - - private String enabledStr; - - - public Supplier() { - - } - - public Supplier(Long id) { - this.id = id; - } - - public Supplier(String supplier, String type, String contacts, String phonenum, - String fax, String telephone, String email, String address, Short isystem, String description, - Boolean enabled, Double advanceIn, String taxNum, String bankName, String accountNumber, Double taxRate, - Double beginNeedGet, Double beginNeedPay, Double allNeedGet, Double allNeedPay) { - super(); - this.supplier = supplier; - this.type = type; - this.contacts = contacts; - this.phonenum = phonenum; - this.fax = fax; - this.telephone = telephone; - this.address = address; - this.email = email; - this.BeginNeedGet = beginNeedGet; - this.BeginNeedPay = beginNeedPay; - this.AllNeedGet = allNeedGet; - this.AllNeedPay = allNeedPay; - this.isystem = isystem; - this.description = description; - this.enabled = enabled; - this.advanceIn = advanceIn; - this.taxNum = taxNum; - this.bankName = bankName; - this.accountNumber = accountNumber; - this.taxRate = taxRate; - } - - public Long getId() { - return id; - } - - public void setId(Long id) { - this.id = id; - } - - public String getSupplier() { - return supplier; - } - - public void setSupplier(String supplier) { - this.supplier = supplier; - } - - public String getType() { - return type; - } - - public void setType(String type) { - this.type = type; - } - - public String getContacts() { - return contacts; - } - - public void setContacts(String contacts) { - this.contacts = contacts; - } - - public String getPhonenum() { - return phonenum; - } - - public void setPhonenum(String phonenum) { - this.phonenum = phonenum; - } - - public String getEmail() { - return email; - } - - public void setEmail(String email) { - this.email = email; - } - - public Double getBeginNeedGet() { - return BeginNeedGet; - } - - public void setBeginNeedGet(Double beginNeedGet) { - BeginNeedGet = beginNeedGet; - } - - public Double getBeginNeedPay() { - return BeginNeedPay; - } - - public void setBeginNeedPay(Double beginNeedPay) { - BeginNeedPay = beginNeedPay; - } - - public Double getAllNeedGet() { - return AllNeedGet; - } - - public void setAllNeedGet(Double allNeedGet) { - AllNeedGet = allNeedGet; - } - - public Double getAllNeedPay() { - return AllNeedPay; - } - - public void setAllNeedPay(Double allNeedPay) { - AllNeedPay = allNeedPay; - } - - public Short getIsystem() { - return isystem; - } - - public void setIsystem(Short isystem) { - this.isystem = isystem; - } - - public String getDescription() { - return description; - } - - public void setDescription(String description) { - this.description = description; - } - - public Boolean getEnabled() { - return enabled; - } - - public void setEnabled(Boolean enabled) { - this.enabled = enabled; - } - - public Double getAdvanceIn() { - return advanceIn; - } - - public void setAdvanceIn(Double advanceIn) { - this.advanceIn = advanceIn; - } - - public String getFax() { - return fax; - } - - public void setFax(String fax) { - this.fax = fax; - } - - public String getTelephone() { - return telephone; - } - - public void setTelephone(String telephone) { - this.telephone = telephone; - } - - public String getAddress() { - return address; - } - - public void setAddress(String address) { - this.address = address; - } - - public String getTaxNum() { - return taxNum; - } - - public void setTaxNum(String taxNum) { - this.taxNum = taxNum; - } - - public String getBankName() { - return bankName; - } - - public void setBankName(String bankName) { - this.bankName = bankName; - } - - public String getAccountNumber() { - return accountNumber; - } - - public void setAccountNumber(String accountNumber) { - this.accountNumber = accountNumber; - } - - public Double getTaxRate() { - return taxRate; - } - - public void setTaxRate(Double taxRate) { - this.taxRate = taxRate; - } - - public Map getCellInfo() { - return cellInfo; - } - - public void setCellInfo(Map cellInfo) { - this.cellInfo = cellInfo; - } - - public Integer getRowLineNum() { - return rowLineNum; - } - - public void setRowLineNum(Integer rowLineNum) { - this.rowLineNum = rowLineNum; - } - - public String getAdvanceInStr() { - return advanceInStr; - } - - public void setAdvanceInStr(String advanceInStr) { - this.advanceInStr = advanceInStr; - } - - public String getBeginNeedGetStr() { - return beginNeedGetStr; - } - - public void setBeginNeedGetStr(String beginNeedGetStr) { - this.beginNeedGetStr = beginNeedGetStr; - } - - public String getBeginNeedPayStr() { - return beginNeedPayStr; - } - - public void setBeginNeedPayStr(String beginNeedPayStr) { - this.beginNeedPayStr = beginNeedPayStr; - } - - public String getTaxRateStr() { - return taxRateStr; - } - - public void setTaxRateStr(String taxRateStr) { - this.taxRateStr = taxRateStr; - } - - public String getEnabledStr() { - return enabledStr; - } - - public void setEnabledStr(String enabledStr) { - this.enabledStr = enabledStr; - } -} diff --git a/src/main/java/com/jsh/model/po/SystemConfig.java b/src/main/java/com/jsh/model/po/SystemConfig.java deleted file mode 100644 index 935d390a..00000000 --- a/src/main/java/com/jsh/model/po/SystemConfig.java +++ /dev/null @@ -1,50 +0,0 @@ -package com.jsh.model.po; - -@SuppressWarnings("serial") -public class SystemConfig implements java.io.Serializable { - private Long id; - private String type; - private String name; - private String value; - private String description; - - public Long getId() { - return id; - } - - public void setId(Long id) { - this.id = id; - } - - public String getType() { - return type; - } - - public void setType(String type) { - this.type = type; - } - - public String getName() { - return name; - } - - public void setName(String name) { - this.name = name; - } - - public String getValue() { - return value; - } - - public void setValue(String value) { - this.value = value; - } - - public String getDescription() { - return description; - } - - public void setDescription(String description) { - this.description = description; - } -} \ No newline at end of file diff --git a/src/main/java/com/jsh/model/po/Unit.java b/src/main/java/com/jsh/model/po/Unit.java deleted file mode 100644 index 1a53dd3c..00000000 --- a/src/main/java/com/jsh/model/po/Unit.java +++ /dev/null @@ -1,36 +0,0 @@ -package com.jsh.model.po; - -@SuppressWarnings("serial") -public class Unit implements java.io.Serializable { - private Long id; - private String UName; - - public Unit() { - - } - - public Unit(Long id) { - this.id = id; - } - - public Unit(String UName) { - this.UName = UName; - } - - public Long getId() { - return id; - } - - public void setId(Long id) { - this.id = id; - } - - public String getUName() { - return UName; - } - - public void setUName(String UName) { - this.UName = UName; - } - -} \ No newline at end of file diff --git a/src/main/java/com/jsh/model/po/UserBusiness.java b/src/main/java/com/jsh/model/po/UserBusiness.java deleted file mode 100644 index 6581dca1..00000000 --- a/src/main/java/com/jsh/model/po/UserBusiness.java +++ /dev/null @@ -1,54 +0,0 @@ -package com.jsh.model.po; - -@SuppressWarnings("serial") -public class UserBusiness implements java.io.Serializable { - private Long Id; - private String Type; - private String KeyId; - private String Value; - private String BtnStr; - - public UserBusiness() { - - } - - public Long getId() { - return Id; - } - - public void setId(Long id) { - Id = id; - } - - public String getType() { - return Type; - } - - public void setType(String type) { - Type = type; - } - - public String getKeyId() { - return KeyId; - } - - public void setKeyId(String keyId) { - KeyId = keyId; - } - - public String getValue() { - return Value; - } - - public void setValue(String value) { - Value = value; - } - - public String getBtnStr() { - return BtnStr; - } - - public void setBtnStr(String btnStr) { - BtnStr = btnStr; - } -} \ No newline at end of file diff --git a/src/main/java/com/jsh/model/vo/asset/AssetModel.java b/src/main/java/com/jsh/model/vo/asset/AssetModel.java deleted file mode 100644 index bfd3702e..00000000 --- a/src/main/java/com/jsh/model/vo/asset/AssetModel.java +++ /dev/null @@ -1,372 +0,0 @@ -package com.jsh.model.vo.asset; - -import java.io.File; -import java.io.InputStream; -import java.io.Serializable; - -@SuppressWarnings("serial") -public class AssetModel implements Serializable { - private AssetShowModel showModel = new AssetShowModel(); - - - /**======开始接受页面参数=================**/ - /** - * 资产名称ID - */ - private Long assetNameID; - - /** - * 资产类型ID - */ - private Long assetCategoryID; - - /** - * 位置属性 - */ - private String location = ""; - - /** - * 状态属性 - */ - private Short status; - - /** - * 用户ID - */ - private Long userID; - - /** - * 资产单价 - */ - private double price = 0; - - /** - * 购买日期 - */ - private String purchasedate = ""; - - /** - * 有效日期 - */ - private String periodofvalidity = ""; - - /** - * 保修日期 - */ - private String warrantydate = ""; - - /** - * 资产编号 - */ - private String assetnum = ""; - - /** - * 资产序列号 - */ - private String serialnum = ""; - - /** - * 标签 - */ - private String labels = ""; - - /** - * 资产ID - */ - private Long supplierID; - - /** - * 描述信息 - */ - private String description = ""; - - - /** - * 资产ID - */ - private Long assetID; - - /** - * 资产IDs 批量操作使用 - */ - private String assetIDs = ""; - - /** - * 每页显示的个数 - */ - private int pageSize = 10; - - /** - * 当前页码 - */ - private int pageNo = 1; - - /** - * 用户IP,用户记录操作日志 - */ - private String clientIp = ""; - - /** - * 输入流,导出excel文件 - */ - private InputStream excelStream; - - /** - * 文件名称 - */ - private String fileName = ""; - - /** - * 是否全部数据--根据搜索条件 - */ - private String isAllData = ""; - - /** - * 浏览器类型--中文字符乱码问题解决,火狐和IE下字符类型不一样 - */ - private String browserType = ""; - - /** - * 导入excel文件 - */ - private File assetFile; - - /** - * 文件类型 - */ - private String assetFileContentType; - - /** - * 文件名称 - */ - private String assetFileFileName; - - /** - * 是否只手工检查数据 0==检查 1==不检查直接导入数据库中 - */ - private Integer isCheck; - - public AssetShowModel getShowModel() { - return showModel; - } - - public void setShowModel(AssetShowModel showModel) { - this.showModel = showModel; - } - - public String getDescription() { - return description; - } - - public void setDescription(String description) { - this.description = description; - } - - public Long getAssetID() { - return assetID; - } - - public void setAssetID(Long assetID) { - this.assetID = assetID; - } - - public String getAssetIDs() { - return assetIDs; - } - - public void setAssetIDs(String assetIDs) { - this.assetIDs = assetIDs; - } - - public int getPageSize() { - return pageSize; - } - - public void setPageSize(int pageSize) { - this.pageSize = pageSize; - } - - public int getPageNo() { - return pageNo; - } - - public void setPageNo(int pageNo) { - this.pageNo = pageNo; - } - - public String getClientIp() { - return clientIp; - } - - public void setClientIp(String clientIp) { - this.clientIp = clientIp; - } - - public Long getAssetNameID() { - return assetNameID; - } - - public void setAssetNameID(Long assetNameID) { - this.assetNameID = assetNameID; - } - - public Long getAssetCategoryID() { - return assetCategoryID; - } - - public void setAssetCategoryID(Long assetCategoryID) { - this.assetCategoryID = assetCategoryID; - } - - public String getLocation() { - return location; - } - - public void setLocation(String location) { - this.location = location; - } - - public Short getStatus() { - return status; - } - - public void setStatus(Short status) { - this.status = status; - } - - public Long getUserID() { - return userID; - } - - public void setUserID(Long userID) { - this.userID = userID; - } - - public double getPrice() { - return price; - } - - public void setPrice(double price) { - this.price = price; - } - - public String getPurchasedate() { - return purchasedate; - } - - public void setPurchasedate(String purchasedate) { - this.purchasedate = purchasedate; - } - - public String getPeriodofvalidity() { - return periodofvalidity; - } - - public void setPeriodofvalidity(String periodofvalidity) { - this.periodofvalidity = periodofvalidity; - } - - public String getWarrantydate() { - return warrantydate; - } - - public void setWarrantydate(String warrantydate) { - this.warrantydate = warrantydate; - } - - public String getLabels() { - return labels; - } - - public void setLabels(String labels) { - this.labels = labels; - } - - public Long getSupplierID() { - return supplierID; - } - - public void setSupplierID(Long supplierID) { - this.supplierID = supplierID; - } - - public String getAssetnum() { - return assetnum; - } - - public void setAssetnum(String assetnum) { - this.assetnum = assetnum; - } - - public String getSerialnum() { - return serialnum; - } - - public void setSerialnum(String serialnum) { - this.serialnum = serialnum; - } - - public InputStream getExcelStream() { - return excelStream; - } - - public void setExcelStream(InputStream excelStream) { - this.excelStream = excelStream; - } - - public String getFileName() { - return fileName; - } - - public void setFileName(String fileName) { - this.fileName = fileName; - } - - public String getIsAllData() { - return isAllData; - } - - public void setIsAllData(String isAllData) { - this.isAllData = isAllData; - } - - public String getBrowserType() { - return browserType; - } - - public void setBrowserType(String browserType) { - this.browserType = browserType; - } - - public File getAssetFile() { - return assetFile; - } - - public void setAssetFile(File assetFile) { - this.assetFile = assetFile; - } - - public Integer getIsCheck() { - return isCheck; - } - - public void setIsCheck(Integer isCheck) { - this.isCheck = isCheck; - } - - public String getAssetFileContentType() { - return assetFileContentType; - } - - public void setAssetFileContentType(String assetFileContentType) { - this.assetFileContentType = assetFileContentType; - } - - public String getAssetFileFileName() { - return assetFileFileName; - } - - public void setAssetFileFileName(String assetFileFileName) { - this.assetFileFileName = assetFileFileName; - } -} diff --git a/src/main/java/com/jsh/model/vo/asset/AssetShowModel.java b/src/main/java/com/jsh/model/vo/asset/AssetShowModel.java deleted file mode 100644 index 523d88a4..00000000 --- a/src/main/java/com/jsh/model/vo/asset/AssetShowModel.java +++ /dev/null @@ -1,38 +0,0 @@ -package com.jsh.model.vo.asset; - -import java.io.Serializable; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -@SuppressWarnings({"serial"}) -public class AssetShowModel implements Serializable { - /** - * 提示信息 - */ - private String msgTip = ""; - - /** - * 系统数据 - */ - @SuppressWarnings("rawtypes") - private Map map = new HashMap(); - - public String getMsgTip() { - return msgTip; - } - - public void setMsgTip(String msgTip) { - this.msgTip = msgTip; - } - - @SuppressWarnings("rawtypes") - public Map getMap() { - return map; - } - - @SuppressWarnings("rawtypes") - public void setMap(Map map) { - this.map = map; - } -} diff --git a/src/main/java/com/jsh/model/vo/asset/ReportModel.java b/src/main/java/com/jsh/model/vo/asset/ReportModel.java deleted file mode 100644 index 4f4c1a2c..00000000 --- a/src/main/java/com/jsh/model/vo/asset/ReportModel.java +++ /dev/null @@ -1,278 +0,0 @@ -package com.jsh.model.vo.asset; - -import java.io.Serializable; - -@SuppressWarnings("serial") -public class ReportModel implements Serializable { - private ReportShowModel showModel = new ReportShowModel(); - - /**======开始接受页面参数=================**/ - /** - * 资产名称ID - */ - private Long assetNameID; - - /** - * 资产类型ID - */ - private Long assetCategoryID; - - /** - * 位置属性 - */ - private String location = ""; - - /** - * 状态属性 - */ - private Short status; - - /** - * 用户ID - */ - private Long usernameID; - - /** - * 资产单价 - */ - private float price = 0; - - /** - * 购买日期 - */ - private String purchasedate = ""; - - /** - * 有效日期 - */ - private String periodofvalidity = ""; - - /** - * 保修日期 - */ - private String warrantydate = ""; - - /** - * 资产编号 - */ - private String assetnum = ""; - - /** - * 资产序列号 - */ - private String serialnum = ""; - - /** - * 标签 - */ - private String labels = ""; - - /** - * 资产ID - */ - private Long supplierID; - - /** - * 描述信息 - */ - private String description = ""; - - - /** - * 资产ID - */ - private Long assetID; - - /** - * 资产IDs 批量操作使用 - */ - private String assetIDs = ""; - - /** - * 每页显示的个数 - */ - private int pageSize = 10; - - /** - * 当前页码 - */ - private int pageNo = 1; - - /** - * 用户IP,用户记录操作日志 - */ - private String clientIp = ""; - - /** - * 报表类型 - */ - private Integer reportType; - - public ReportShowModel getShowModel() { - return showModel; - } - - public void setShowModel(ReportShowModel showModel) { - this.showModel = showModel; - } - - public Long getAssetNameID() { - return assetNameID; - } - - public void setAssetNameID(Long assetNameID) { - this.assetNameID = assetNameID; - } - - public Long getAssetCategoryID() { - return assetCategoryID; - } - - public void setAssetCategoryID(Long assetCategoryID) { - this.assetCategoryID = assetCategoryID; - } - - public String getLocation() { - return location; - } - - public void setLocation(String location) { - this.location = location; - } - - public Short getStatus() { - return status; - } - - public void setStatus(Short status) { - this.status = status; - } - - public Long getUsernameID() { - return usernameID; - } - - public void setUsernameID(Long usernameID) { - this.usernameID = usernameID; - } - - public float getPrice() { - return price; - } - - public void setPrice(float price) { - this.price = price; - } - - public String getPurchasedate() { - return purchasedate; - } - - public void setPurchasedate(String purchasedate) { - this.purchasedate = purchasedate; - } - - public String getPeriodofvalidity() { - return periodofvalidity; - } - - public void setPeriodofvalidity(String periodofvalidity) { - this.periodofvalidity = periodofvalidity; - } - - public String getWarrantydate() { - return warrantydate; - } - - public void setWarrantydate(String warrantydate) { - this.warrantydate = warrantydate; - } - - public String getAssetnum() { - return assetnum; - } - - public void setAssetnum(String assetnum) { - this.assetnum = assetnum; - } - - public String getSerialnum() { - return serialnum; - } - - public void setSerialnum(String serialnum) { - this.serialnum = serialnum; - } - - public String getLabels() { - return labels; - } - - public void setLabels(String labels) { - this.labels = labels; - } - - public Long getSupplierID() { - return supplierID; - } - - public void setSupplierID(Long supplierID) { - this.supplierID = supplierID; - } - - public String getDescription() { - return description; - } - - public void setDescription(String description) { - this.description = description; - } - - public Long getAssetID() { - return assetID; - } - - public void setAssetID(Long assetID) { - this.assetID = assetID; - } - - public String getAssetIDs() { - return assetIDs; - } - - public void setAssetIDs(String assetIDs) { - this.assetIDs = assetIDs; - } - - public int getPageSize() { - return pageSize; - } - - public void setPageSize(int pageSize) { - this.pageSize = pageSize; - } - - public int getPageNo() { - return pageNo; - } - - public void setPageNo(int pageNo) { - this.pageNo = pageNo; - } - - public String getClientIp() { - return clientIp; - } - - public void setClientIp(String clientIp) { - this.clientIp = clientIp; - } - - public Integer getReportType() { - return reportType; - } - - public void setReportType(Integer reportType) { - this.reportType = reportType; - } -} diff --git a/src/main/java/com/jsh/model/vo/asset/ReportShowModel.java b/src/main/java/com/jsh/model/vo/asset/ReportShowModel.java deleted file mode 100644 index 2135e6db..00000000 --- a/src/main/java/com/jsh/model/vo/asset/ReportShowModel.java +++ /dev/null @@ -1,29 +0,0 @@ -package com.jsh.model.vo.asset; - -import java.io.Serializable; -import java.util.ArrayList; -import java.util.List; - -@SuppressWarnings({"serial", "rawtypes"}) -public class ReportShowModel implements Serializable { - //保存报表数据 - private List reportData = new ArrayList(); - //保存提示信息 - private String msgTip = ""; - - public List getReportData() { - return reportData; - } - - public void setReportData(List reportData) { - this.reportData = reportData; - } - - public String getMsgTip() { - return msgTip; - } - - public void setMsgTip(String msgTip) { - this.msgTip = msgTip; - } -} diff --git a/src/main/java/com/jsh/model/vo/basic/AccountModel.java b/src/main/java/com/jsh/model/vo/basic/AccountModel.java deleted file mode 100644 index d4244619..00000000 --- a/src/main/java/com/jsh/model/vo/basic/AccountModel.java +++ /dev/null @@ -1,160 +0,0 @@ -package com.jsh.model.vo.basic; - -import java.io.Serializable; - -@SuppressWarnings("serial") -public class AccountModel implements Serializable { - private AccountShowModel showModel = new AccountShowModel(); - - /**======开始接受页面参数=================**/ - /** - * 名称 - */ - private String name = ""; - - /** - * 编号 - */ - private String serialNo = ""; - - /** - * 期初金额 - */ - private Double initialAmount; - - /** - * 当前余额 - */ - private Double currentAmount; - - /** - * 是否设为默认 - */ - private Boolean isDefault; - - /** - * 备注 - */ - private String remark = ""; - - /** - * 分类ID - */ - private Long accountID = 0l; - - /** - * 分类IDs 批量操作使用 - */ - private String accountIDs = ""; - - /** - * 每页显示的个数 - */ - private int pageSize = 10; - - /** - * 当前页码 - */ - private int pageNo = 1; - - /** - * 用户IP,用户记录操作日志 - */ - private String clientIp = ""; - - public AccountShowModel getShowModel() { - return showModel; - } - - public void setShowModel(AccountShowModel showModel) { - this.showModel = showModel; - } - - public String getName() { - return name; - } - - public void setName(String name) { - this.name = name; - } - - public String getSerialNo() { - return serialNo; - } - - public void setSerialNo(String serialNo) { - this.serialNo = serialNo; - } - - public Double getInitialAmount() { - return initialAmount; - } - - public void setInitialAmount(Double initialAmount) { - this.initialAmount = initialAmount; - } - - public Double getCurrentAmount() { - return currentAmount; - } - - public void setCurrentAmount(Double currentAmount) { - this.currentAmount = currentAmount; - } - - public Boolean getIsDefault() { - return isDefault; - } - - public void setIsDefault(Boolean isDefault) { - this.isDefault = isDefault; - } - - public String getRemark() { - return remark; - } - - public void setRemark(String remark) { - this.remark = remark; - } - - public Long getAccountID() { - return accountID; - } - - public void setAccountID(Long accountID) { - this.accountID = accountID; - } - - public String getAccountIDs() { - return accountIDs; - } - - public void setAccountIDs(String accountIDs) { - this.accountIDs = accountIDs; - } - - public int getPageSize() { - return pageSize; - } - - public void setPageSize(int pageSize) { - this.pageSize = pageSize; - } - - public int getPageNo() { - return pageNo; - } - - public void setPageNo(int pageNo) { - this.pageNo = pageNo; - } - - public String getClientIp() { - return clientIp; - } - - public void setClientIp(String clientIp) { - this.clientIp = clientIp; - } -} diff --git a/src/main/java/com/jsh/model/vo/basic/AccountShowModel.java b/src/main/java/com/jsh/model/vo/basic/AccountShowModel.java deleted file mode 100644 index ae5e8c93..00000000 --- a/src/main/java/com/jsh/model/vo/basic/AccountShowModel.java +++ /dev/null @@ -1,40 +0,0 @@ -package com.jsh.model.vo.basic; - -import java.io.Serializable; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -@SuppressWarnings("serial") -public class AccountShowModel implements Serializable { - /** - * 提示信息 - */ - private String msgTip = ""; - - /** - * 系统数据 - */ - @SuppressWarnings("rawtypes") - private Map map = new HashMap(); - - public String getMsgTip() { - return msgTip; - } - - public void setMsgTip(String msgTip) { - this.msgTip = msgTip; - } - - @SuppressWarnings("rawtypes") - public Map getMap() { - return map; - } - - @SuppressWarnings("rawtypes") - public void setMap(Map map) { - this.map = map; - } - - -} diff --git a/src/main/java/com/jsh/model/vo/basic/AppModel.java b/src/main/java/com/jsh/model/vo/basic/AppModel.java deleted file mode 100644 index 98e8d220..00000000 --- a/src/main/java/com/jsh/model/vo/basic/AppModel.java +++ /dev/null @@ -1,311 +0,0 @@ -package com.jsh.model.vo.basic; - -import java.io.File; -import java.io.Serializable; - -@SuppressWarnings("serial") -public class AppModel implements Serializable { - private AppShowModel showModel = new AppShowModel(); - - /**======开始接受页面参数=================**/ - /** - * 代号 - */ - private String Number = ""; - - /** - * 名称 - */ - private String Name = ""; - - /** - * 类型 - */ - private String Type = ""; - - /** - * 图标 - */ - private String Icon = ""; - - private File fileInfo; - private String fileInfoName; //图片名称 - /** - * 链接 - */ - private String URL = ""; - - /** - * 宽度 - */ - private String Width = ""; - - /** - * 高度 - */ - private String Height = ""; - - /** - * 拉伸 - */ - private Boolean ReSize = false; - - /** - * 最大化 - */ - private Boolean OpenMax = false; - - /** - * Flash - */ - private Boolean Flash = false; - - /** - * 种类 - */ - private String ZL = ""; - - /** - * 排序号 - */ - private String Sort = ""; - - /** - * 备注 - */ - private String Remark = ""; - - /** - * 启用 - */ - private Boolean Enabled = false; - - /** - * 分类ID - */ - private Long appID = 0l; - - /** - * 分类IDs 批量操作使用 - */ - private String appIDs = ""; - - /** - * 每页显示的个数 - */ - private int pageSize = 10; - - /** - * 当前页码 - */ - private int pageNo = 1; - - /** - * 用户IP,用户记录操作日志 - */ - private String clientIp = ""; - - /** - * UBType,UserBusiness类型 - */ - private String UBType = ""; - - /** - * UBKeyId,UserBusiness关键id - */ - private String UBKeyId = ""; - - - public AppShowModel getShowModel() { - return showModel; - } - - public void setShowModel(AppShowModel showModel) { - this.showModel = showModel; - } - - public String getNumber() { - return Number; - } - - public void setNumber(String number) { - Number = number; - } - - public String getName() { - return Name; - } - - public void setName(String name) { - Name = name; - } - - public File getFileInfo() { - return fileInfo; - } - - public void setFileInfo(File fileInfo) { - this.fileInfo = fileInfo; - } - - public String getFileInfoName() { - return fileInfoName; - } - - public void setFileInfoName(String fileInfoName) { - this.fileInfoName = fileInfoName; - } - - public String getType() { - return Type; - } - - public void setType(String type) { - Type = type; - } - - public String getIcon() { - return Icon; - } - - public void setIcon(String icon) { - Icon = icon; - } - - public String getURL() { - return URL; - } - - public void setURL(String uRL) { - URL = uRL; - } - - public String getWidth() { - return Width; - } - - public void setWidth(String width) { - Width = width; - } - - public String getHeight() { - return Height; - } - - public void setHeight(String height) { - Height = height; - } - - public Boolean getReSize() { - return ReSize; - } - - public void setReSize(Boolean reSize) { - ReSize = reSize; - } - - public Boolean getOpenMax() { - return OpenMax; - } - - public void setOpenMax(Boolean openMax) { - OpenMax = openMax; - } - - public Boolean getFlash() { - return Flash; - } - - public void setFlash(Boolean flash) { - Flash = flash; - } - - public String getZL() { - return ZL; - } - - public void setZL(String zL) { - ZL = zL; - } - - public String getSort() { - return Sort; - } - - public void setSort(String sort) { - Sort = sort; - } - - public String getRemark() { - return Remark; - } - - public void setRemark(String remark) { - Remark = remark; - } - - public Boolean getEnabled() { - return Enabled; - } - - public void setEnabled(Boolean enabled) { - Enabled = enabled; - } - - public Long getAppID() { - return appID; - } - - public void setAppID(Long appID) { - this.appID = appID; - } - - public String getAppIDs() { - return appIDs; - } - - public void setAppIDs(String appIDs) { - this.appIDs = appIDs; - } - - public int getPageSize() { - return pageSize; - } - - public void setPageSize(int pageSize) { - this.pageSize = pageSize; - } - - public int getPageNo() { - return pageNo; - } - - public void setPageNo(int pageNo) { - this.pageNo = pageNo; - } - - public String getClientIp() { - return clientIp; - } - - public void setClientIp(String clientIp) { - this.clientIp = clientIp; - } - - public String getUBType() { - return UBType; - } - - public void setUBType(String uBType) { - UBType = uBType; - } - - public String getUBKeyId() { - return UBKeyId; - } - - public void setUBKeyId(String uBKeyId) { - UBKeyId = uBKeyId; - } - -} diff --git a/src/main/java/com/jsh/model/vo/basic/AppShowModel.java b/src/main/java/com/jsh/model/vo/basic/AppShowModel.java deleted file mode 100644 index 291859d6..00000000 --- a/src/main/java/com/jsh/model/vo/basic/AppShowModel.java +++ /dev/null @@ -1,19 +0,0 @@ -package com.jsh.model.vo.basic; - -import java.io.Serializable; - -@SuppressWarnings("serial") -public class AppShowModel implements Serializable { - /** - * 提示信息 - */ - private String msgTip = ""; - - public String getMsgTip() { - return msgTip; - } - - public void setMsgTip(String msgTip) { - this.msgTip = msgTip; - } -} diff --git a/src/main/java/com/jsh/model/vo/basic/AssetNameModel.java b/src/main/java/com/jsh/model/vo/basic/AssetNameModel.java deleted file mode 100644 index b3b93834..00000000 --- a/src/main/java/com/jsh/model/vo/basic/AssetNameModel.java +++ /dev/null @@ -1,133 +0,0 @@ -package com.jsh.model.vo.basic; - -import java.io.Serializable; - -@SuppressWarnings("serial") -public class AssetNameModel implements Serializable { - private AssetNameShowModel showModel = new AssetNameShowModel(); - /**======开始接受页面参数=================**/ - /** - * 名称 - */ - private String assetName = ""; - - /** - * 是否易耗品 - */ - private Short consumable; - - /** - * 描述信息 - */ - private String description = ""; - - /** - * 分类ID - */ - private Long categoryID; - - /** - * ID - */ - private Long assetNameID = 0l; - - /** - * IDs 批量操作使用 - */ - private String assetNameIDs = ""; - - /** - * 每页显示的个数 - */ - private int pageSize = 10; - - /** - * 当前页码 - */ - private int pageNo = 1; - - /** - * 用户IP,用户记录操作日志 - */ - private String clientIp = ""; - - public AssetNameShowModel getShowModel() { - return showModel; - } - - public void setShowModel(AssetNameShowModel showModel) { - this.showModel = showModel; - } - - public String getAssetName() { - return assetName; - } - - public void setAssetName(String assetName) { - this.assetName = assetName; - } - - public String getDescription() { - return description; - } - - public void setDescription(String description) { - this.description = description; - } - - public Long getAssetNameID() { - return assetNameID; - } - - public void setAssetNameID(Long assetNameID) { - this.assetNameID = assetNameID; - } - - public String getAssetNameIDs() { - return assetNameIDs; - } - - public void setAssetNameIDs(String assetNameIDs) { - this.assetNameIDs = assetNameIDs; - } - - public int getPageSize() { - return pageSize; - } - - public void setPageSize(int pageSize) { - this.pageSize = pageSize; - } - - public int getPageNo() { - return pageNo; - } - - public void setPageNo(int pageNo) { - this.pageNo = pageNo; - } - - public String getClientIp() { - return clientIp; - } - - public void setClientIp(String clientIp) { - this.clientIp = clientIp; - } - - public Short getConsumable() { - return consumable; - } - - public void setConsumable(Short consumable) { - this.consumable = consumable; - } - - public Long getCategoryID() { - return categoryID; - } - - public void setCategoryID(Long categoryID) { - this.categoryID = categoryID; - } -} diff --git a/src/main/java/com/jsh/model/vo/basic/AssetNameShowModel.java b/src/main/java/com/jsh/model/vo/basic/AssetNameShowModel.java deleted file mode 100644 index 80ef3aa1..00000000 --- a/src/main/java/com/jsh/model/vo/basic/AssetNameShowModel.java +++ /dev/null @@ -1,19 +0,0 @@ -package com.jsh.model.vo.basic; - -import java.io.Serializable; - -@SuppressWarnings("serial") -public class AssetNameShowModel implements Serializable { - /** - * 提示信息 - */ - private String msgTip = ""; - - public String getMsgTip() { - return msgTip; - } - - public void setMsgTip(String msgTip) { - this.msgTip = msgTip; - } -} diff --git a/src/main/java/com/jsh/model/vo/basic/CategoryModel.java b/src/main/java/com/jsh/model/vo/basic/CategoryModel.java deleted file mode 100644 index d4078a50..00000000 --- a/src/main/java/com/jsh/model/vo/basic/CategoryModel.java +++ /dev/null @@ -1,108 +0,0 @@ -package com.jsh.model.vo.basic; - -import java.io.Serializable; - -@SuppressWarnings("serial") -public class CategoryModel implements Serializable { - private CategoryShowModel showModel = new CategoryShowModel(); - - /**======开始接受页面参数=================**/ - /** - * 分类名称 - */ - private String categoryName = ""; - - /** - * 描述信息 - */ - private String description = ""; - - /** - * 分类ID - */ - private Long categoryID = 0l; - - /** - * 分类IDs 批量操作使用 - */ - private String categoryIDs = ""; - - /** - * 每页显示的个数 - */ - private int pageSize = 10; - - /** - * 当前页码 - */ - private int pageNo = 1; - - /** - * 用户IP,用户记录操作日志 - */ - private String clientIp = ""; - - public CategoryShowModel getShowModel() { - return showModel; - } - - public void setShowModel(CategoryShowModel showModel) { - this.showModel = showModel; - } - - public String getCategoryName() { - return categoryName; - } - - public void setCategoryName(String categoryName) { - this.categoryName = categoryName; - } - - public String getDescription() { - return description; - } - - public void setDescription(String description) { - this.description = description; - } - - public Long getCategoryID() { - return categoryID; - } - - public void setCategoryID(Long categoryID) { - this.categoryID = categoryID; - } - - public String getCategoryIDs() { - return categoryIDs; - } - - public void setCategoryIDs(String categoryIDs) { - this.categoryIDs = categoryIDs; - } - - public int getPageSize() { - return pageSize; - } - - public void setPageSize(int pageSize) { - this.pageSize = pageSize; - } - - public int getPageNo() { - return pageNo; - } - - public void setPageNo(int pageNo) { - this.pageNo = pageNo; - } - - public String getClientIp() { - return clientIp; - } - - public void setClientIp(String clientIp) { - this.clientIp = clientIp; - } -} diff --git a/src/main/java/com/jsh/model/vo/basic/CategoryShowModel.java b/src/main/java/com/jsh/model/vo/basic/CategoryShowModel.java deleted file mode 100644 index 54264c5c..00000000 --- a/src/main/java/com/jsh/model/vo/basic/CategoryShowModel.java +++ /dev/null @@ -1,19 +0,0 @@ -package com.jsh.model.vo.basic; - -import java.io.Serializable; - -@SuppressWarnings("serial") -public class CategoryShowModel implements Serializable { - /** - * 提示信息 - */ - private String msgTip = ""; - - public String getMsgTip() { - return msgTip; - } - - public void setMsgTip(String msgTip) { - this.msgTip = msgTip; - } -} diff --git a/src/main/java/com/jsh/model/vo/basic/DepotModel.java b/src/main/java/com/jsh/model/vo/basic/DepotModel.java deleted file mode 100644 index 6b752119..00000000 --- a/src/main/java/com/jsh/model/vo/basic/DepotModel.java +++ /dev/null @@ -1,190 +0,0 @@ -package com.jsh.model.vo.basic; - -import java.io.Serializable; - -@SuppressWarnings("serial") -public class DepotModel implements Serializable { - private DepotShowModel showModel = new DepotShowModel(); - - /**======开始接受页面参数=================**/ - /** - * 仓库名称 - */ - private String name = ""; - - private String address = ""; //仓库地址 - private Double warehousing; //仓储费 - private Double truckage; //搬运费 - - /** - * 排序 - */ - private String sort = ""; - - /** - * 类型 - */ - private Integer type = 0; - - /** - * 描述 - */ - private String remark = ""; - - /** - * 分类ID - */ - private Long depotID = 0l; - - /** - * 分类IDs 批量操作使用 - */ - private String depotIDs = ""; - - /** - * 每页显示的个数 - */ - private int pageSize = 10; - - /** - * 当前页码 - */ - private int pageNo = 1; - - /** - * 用户IP,用户记录操作日志 - */ - private String clientIp = ""; - - /** - * UBType,UserBusiness类型 - */ - private String UBType = ""; - - /** - * UBKeyId,UserBusiness关键id - */ - private String UBKeyId = ""; - - public DepotShowModel getShowModel() { - return showModel; - } - - public void setShowModel(DepotShowModel showModel) { - this.showModel = showModel; - } - - public String getName() { - return name; - } - - public void setName(String name) { - this.name = name; - } - - public String getAddress() { - return address; - } - - public void setAddress(String address) { - this.address = address; - } - - public Double getWarehousing() { - return warehousing; - } - - public void setWarehousing(Double warehousing) { - this.warehousing = warehousing; - } - - public Double getTruckage() { - return truckage; - } - - public void setTruckage(Double truckage) { - this.truckage = truckage; - } - - public Integer getType() { - return type; - } - - public void setType(Integer type) { - this.type = type; - } - - public String getSort() { - return sort; - } - - public void setSort(String sort) { - this.sort = sort; - } - - public String getRemark() { - return remark; - } - - public void setRemark(String remark) { - this.remark = remark; - } - - public Long getDepotID() { - return depotID; - } - - public void setDepotID(Long depotID) { - this.depotID = depotID; - } - - public String getDepotIDs() { - return depotIDs; - } - - public void setDepotIDs(String depotIDs) { - this.depotIDs = depotIDs; - } - - public int getPageSize() { - return pageSize; - } - - public void setPageSize(int pageSize) { - this.pageSize = pageSize; - } - - public int getPageNo() { - return pageNo; - } - - public void setPageNo(int pageNo) { - this.pageNo = pageNo; - } - - public String getClientIp() { - return clientIp; - } - - public void setClientIp(String clientIp) { - this.clientIp = clientIp; - } - - public String getUBType() { - return UBType; - } - - public void setUBType(String uBType) { - UBType = uBType; - } - - public String getUBKeyId() { - return UBKeyId; - } - - public void setUBKeyId(String uBKeyId) { - UBKeyId = uBKeyId; - } - - -} diff --git a/src/main/java/com/jsh/model/vo/basic/DepotShowModel.java b/src/main/java/com/jsh/model/vo/basic/DepotShowModel.java deleted file mode 100644 index 7535dcbf..00000000 --- a/src/main/java/com/jsh/model/vo/basic/DepotShowModel.java +++ /dev/null @@ -1,40 +0,0 @@ -package com.jsh.model.vo.basic; - -import java.io.Serializable; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -@SuppressWarnings("serial") -public class DepotShowModel implements Serializable { - /** - * 提示信息 - */ - private String msgTip = ""; - - /** - * 系统数据 - */ - @SuppressWarnings("rawtypes") - private Map map = new HashMap(); - - public String getMsgTip() { - return msgTip; - } - - public void setMsgTip(String msgTip) { - this.msgTip = msgTip; - } - - @SuppressWarnings("rawtypes") - public Map getMap() { - return map; - } - - @SuppressWarnings("rawtypes") - public void setMap(Map map) { - this.map = map; - } - - -} diff --git a/src/main/java/com/jsh/model/vo/basic/FunctionsModel.java b/src/main/java/com/jsh/model/vo/basic/FunctionsModel.java deleted file mode 100644 index 826b044f..00000000 --- a/src/main/java/com/jsh/model/vo/basic/FunctionsModel.java +++ /dev/null @@ -1,228 +0,0 @@ -package com.jsh.model.vo.basic; - -import java.io.Serializable; - -@SuppressWarnings("serial") -public class FunctionsModel implements Serializable { - private FunctionsShowModel showModel = new FunctionsShowModel(); - - /**======开始接受页面参数=================**/ - /** - * 编号 - */ - private String Number = ""; - /** - * 名称 - */ - private String Name = ""; - /** - * 上级编号 - */ - private String PNumber = ""; - /** - * 链接 - */ - private String URL = ""; - /** - * 收缩 - */ - private Boolean State = false; - /** - * 排序 - */ - private String Sort = ""; - /** - * 启用 - */ - private Boolean Enabled = false; - /** - * 类型 - */ - private String Type = ""; - /** - * 功能按钮 - */ - private String PushBtn = ""; - /** - * 拥有的功能列表 - */ - private String hasFunctions = ""; - /** - * 分类ID - */ - private Long functionsID = 0l; - - /** - * 分类IDs 批量操作使用 - */ - private String functionsIDs = ""; - - /** - * 每页显示的个数 - */ - private int pageSize = 10; - - /** - * 当前页码 - */ - private int pageNo = 1; - - /** - * 用户IP,用户记录操作日志 - */ - private String clientIp = ""; - - /** - * UBType,UserBusiness类型 - */ - private String UBType = ""; - - /** - * UBKeyId,UserBusiness关键id - */ - private String UBKeyId = ""; - - public FunctionsShowModel getShowModel() { - return showModel; - } - - public void setShowModel(FunctionsShowModel showModel) { - this.showModel = showModel; - } - - public String getNumber() { - return Number; - } - - public void setNumber(String number) { - Number = number; - } - - public String getName() { - return Name; - } - - public void setName(String name) { - Name = name; - } - - public String getPNumber() { - return PNumber; - } - - public void setPNumber(String pNumber) { - PNumber = pNumber; - } - - public String getURL() { - return URL; - } - - public void setURL(String uRL) { - URL = uRL; - } - - public Boolean getState() { - return State; - } - - public void setState(Boolean state) { - State = state; - } - - public String getSort() { - return Sort; - } - - public void setSort(String sort) { - Sort = sort; - } - - public Boolean getEnabled() { - return Enabled; - } - - public void setEnabled(Boolean enabled) { - Enabled = enabled; - } - - public String getType() { - return Type; - } - - public void setType(String type) { - Type = type; - } - - public Long getFunctionsID() { - return functionsID; - } - - public void setFunctionsID(Long functionsID) { - this.functionsID = functionsID; - } - - public String getFunctionsIDs() { - return functionsIDs; - } - - public void setFunctionsIDs(String functionsIDs) { - this.functionsIDs = functionsIDs; - } - - public int getPageSize() { - return pageSize; - } - - public void setPageSize(int pageSize) { - this.pageSize = pageSize; - } - - public int getPageNo() { - return pageNo; - } - - public void setPageNo(int pageNo) { - this.pageNo = pageNo; - } - - public String getClientIp() { - return clientIp; - } - - public void setClientIp(String clientIp) { - this.clientIp = clientIp; - } - - public String getUBType() { - return UBType; - } - - public void setUBType(String uBType) { - UBType = uBType; - } - - public String getUBKeyId() { - return UBKeyId; - } - - public void setUBKeyId(String uBKeyId) { - UBKeyId = uBKeyId; - } - - public String getHasFunctions() { - return hasFunctions; - } - - public void setHasFunctions(String hasFunctions) { - this.hasFunctions = hasFunctions; - } - - public String getPushBtn() { - return PushBtn; - } - - public void setPushBtn(String pushBtn) { - PushBtn = pushBtn; - } -} diff --git a/src/main/java/com/jsh/model/vo/basic/FunctionsShowModel.java b/src/main/java/com/jsh/model/vo/basic/FunctionsShowModel.java deleted file mode 100644 index 1da40c7c..00000000 --- a/src/main/java/com/jsh/model/vo/basic/FunctionsShowModel.java +++ /dev/null @@ -1,19 +0,0 @@ -package com.jsh.model.vo.basic; - -import java.io.Serializable; - -@SuppressWarnings("serial") -public class FunctionsShowModel implements Serializable { - /** - * 提示信息 - */ - private String msgTip = ""; - - public String getMsgTip() { - return msgTip; - } - - public void setMsgTip(String msgTip) { - this.msgTip = msgTip; - } -} diff --git a/src/main/java/com/jsh/model/vo/basic/InOutItemModel.java b/src/main/java/com/jsh/model/vo/basic/InOutItemModel.java deleted file mode 100644 index e859fbf4..00000000 --- a/src/main/java/com/jsh/model/vo/basic/InOutItemModel.java +++ /dev/null @@ -1,121 +0,0 @@ -package com.jsh.model.vo.basic; - -import java.io.Serializable; - -@SuppressWarnings("serial") -public class InOutItemModel implements Serializable { - private InOutItemShowModel showModel = new InOutItemShowModel(); - - /**======开始接受页面参数=================**/ - /** - * 名称 - */ - private String name = ""; - - /** - * 类型 - */ - private String type = ""; - - /** - * 备注 - */ - private String remark = ""; - - /** - * 分类ID - */ - private Long inOutItemID = 0l; - - /** - * 分类IDs 批量操作使用 - */ - private String inOutItemIDs = ""; - - /** - * 每页显示的个数 - */ - private int pageSize = 10; - - /** - * 当前页码 - */ - private int pageNo = 1; - - /** - * 用户IP,用户记录操作日志 - */ - private String clientIp = ""; - - public InOutItemShowModel getShowModel() { - return showModel; - } - - public void setShowModel(InOutItemShowModel showModel) { - this.showModel = showModel; - } - - public String getName() { - return name; - } - - public void setName(String name) { - this.name = name; - } - - public String getType() { - return type; - } - - public void setType(String type) { - this.type = type; - } - - public String getRemark() { - return remark; - } - - public void setRemark(String remark) { - this.remark = remark; - } - - public Long getInOutItemID() { - return inOutItemID; - } - - public void setInOutItemID(Long inOutItemID) { - this.inOutItemID = inOutItemID; - } - - public String getInOutItemIDs() { - return inOutItemIDs; - } - - public void setInOutItemIDs(String inOutItemIDs) { - this.inOutItemIDs = inOutItemIDs; - } - - public int getPageSize() { - return pageSize; - } - - public void setPageSize(int pageSize) { - this.pageSize = pageSize; - } - - public int getPageNo() { - return pageNo; - } - - public void setPageNo(int pageNo) { - this.pageNo = pageNo; - } - - public String getClientIp() { - return clientIp; - } - - public void setClientIp(String clientIp) { - this.clientIp = clientIp; - } -} diff --git a/src/main/java/com/jsh/model/vo/basic/InOutItemShowModel.java b/src/main/java/com/jsh/model/vo/basic/InOutItemShowModel.java deleted file mode 100644 index 0708ff8b..00000000 --- a/src/main/java/com/jsh/model/vo/basic/InOutItemShowModel.java +++ /dev/null @@ -1,40 +0,0 @@ -package com.jsh.model.vo.basic; - -import java.io.Serializable; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -@SuppressWarnings("serial") -public class InOutItemShowModel implements Serializable { - /** - * 提示信息 - */ - private String msgTip = ""; - - /** - * 系统数据 - */ - @SuppressWarnings("rawtypes") - private Map map = new HashMap(); - - public String getMsgTip() { - return msgTip; - } - - public void setMsgTip(String msgTip) { - this.msgTip = msgTip; - } - - @SuppressWarnings("rawtypes") - public Map getMap() { - return map; - } - - @SuppressWarnings("rawtypes") - public void setMap(Map map) { - this.map = map; - } - - -} diff --git a/src/main/java/com/jsh/model/vo/basic/LogModel.java b/src/main/java/com/jsh/model/vo/basic/LogModel.java deleted file mode 100644 index 8ff786bc..00000000 --- a/src/main/java/com/jsh/model/vo/basic/LogModel.java +++ /dev/null @@ -1,176 +0,0 @@ -package com.jsh.model.vo.basic; - -import java.io.Serializable; - -@SuppressWarnings("serial") -public class LogModel implements Serializable { - private LogShowModel showModel = new LogShowModel(); - /**======开始接受页面参数=================**/ - /** - * 用户ID - */ - private Long usernameID; - - /** - * 操作 - */ - private String operation; - - /** - * 开始时间 - */ - private String beginTime; - - /** - * 结束时间 - */ - private String endTime; - - /** - * 是否成功 0==成功 1==失败 - */ - private Short status; - - /** - * 操作具体内容 - */ - private String contentdetails; - - /** - * 描述信息 - */ - private String remark = ""; - - /** - * 日志ID - */ - private Long logID = 0l; - - /** - * 日志IDs 批量操作使用 - */ - private String logIDs = ""; - - /** - * 每页显示的个数 - */ - private int pageSize = 10; - - /** - * 当前页码 - */ - private int pageNo = 1; - - /** - * 用户IP,用户记录操作日志 - */ - private String clientIp = ""; - - public LogShowModel getShowModel() { - return showModel; - } - - public void setShowModel(LogShowModel showModel) { - this.showModel = showModel; - } - - public Long getLogID() { - return logID; - } - - public void setLogID(Long logID) { - this.logID = logID; - } - - public String getLogIDs() { - return logIDs; - } - - public void setLogIDs(String logIDs) { - this.logIDs = logIDs; - } - - public int getPageSize() { - return pageSize; - } - - public void setPageSize(int pageSize) { - this.pageSize = pageSize; - } - - public int getPageNo() { - return pageNo; - } - - public void setPageNo(int pageNo) { - this.pageNo = pageNo; - } - - public String getClientIp() { - return clientIp; - } - - public void setClientIp(String clientIp) { - this.clientIp = clientIp; - } - - public Long getUsernameID() { - return usernameID; - } - - public void setUsernameID(Long usernameID) { - this.usernameID = usernameID; - } - - public String getOperation() { - return operation; - } - - public void setOperation(String operation) { - this.operation = operation; - } - - public String getBeginTime() { - if (null == beginTime || beginTime.length() == 0) - return beginTime; - return beginTime + " 00:00:00"; - } - - public void setBeginTime(String beginTime) { - this.beginTime = beginTime; - } - - public String getEndTime() { - if (null == endTime || endTime.length() == 0) - return endTime; - return endTime + " 23:59:59"; - } - - public void setEndTime(String endTime) { - this.endTime = endTime; - } - - public Short getStatus() { - return status; - } - - public void setStatus(Short status) { - this.status = status; - } - - public String getContentdetails() { - return contentdetails; - } - - public void setContentdetails(String contentdetails) { - this.contentdetails = contentdetails; - } - - public String getRemark() { - return remark; - } - - public void setRemark(String remark) { - this.remark = remark; - } -} diff --git a/src/main/java/com/jsh/model/vo/basic/LogShowModel.java b/src/main/java/com/jsh/model/vo/basic/LogShowModel.java deleted file mode 100644 index 7a88a1cd..00000000 --- a/src/main/java/com/jsh/model/vo/basic/LogShowModel.java +++ /dev/null @@ -1,38 +0,0 @@ -package com.jsh.model.vo.basic; - -import java.io.Serializable; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -@SuppressWarnings("serial") -public class LogShowModel implements Serializable { - /** - * 提示信息 - */ - private String msgTip = ""; - - /** - * 系统数据 - */ - @SuppressWarnings("rawtypes") - private Map map = new HashMap(); - - public String getMsgTip() { - return msgTip; - } - - public void setMsgTip(String msgTip) { - this.msgTip = msgTip; - } - - @SuppressWarnings("rawtypes") - public Map getMap() { - return map; - } - - @SuppressWarnings("rawtypes") - public void setMap(Map map) { - this.map = map; - } -} diff --git a/src/main/java/com/jsh/model/vo/basic/RoleModel.java b/src/main/java/com/jsh/model/vo/basic/RoleModel.java deleted file mode 100644 index 8fdad4a0..00000000 --- a/src/main/java/com/jsh/model/vo/basic/RoleModel.java +++ /dev/null @@ -1,122 +0,0 @@ -package com.jsh.model.vo.basic; - -import java.io.Serializable; - -@SuppressWarnings("serial") -public class RoleModel implements Serializable { - private RoleShowModel showModel = new RoleShowModel(); - - /**======开始接受页面参数=================**/ - /** - * 角色名称 - */ - private String Name = ""; - - /** - * 分类ID - */ - private Long roleID = 0l; - - /** - * 分类IDs 批量操作使用 - */ - private String roleIDs = ""; - - /** - * 每页显示的个数 - */ - private int pageSize = 10; - - /** - * 当前页码 - */ - private int pageNo = 1; - - /** - * 用户IP,用户记录操作日志 - */ - private String clientIp = ""; - - /** - * UBType,UserBusiness类型 - */ - private String UBType = ""; - - /** - * UBKeyId,UserBusiness关键id - */ - private String UBKeyId = ""; - - public RoleShowModel getShowModel() { - return showModel; - } - - public void setShowModel(RoleShowModel showModel) { - this.showModel = showModel; - } - - public String getName() { - return Name; - } - - public void setName(String name) { - Name = name; - } - - public Long getRoleID() { - return roleID; - } - - public void setRoleID(Long roleID) { - this.roleID = roleID; - } - - public String getRoleIDs() { - return roleIDs; - } - - public void setRoleIDs(String roleIDs) { - this.roleIDs = roleIDs; - } - - public int getPageSize() { - return pageSize; - } - - public void setPageSize(int pageSize) { - this.pageSize = pageSize; - } - - public int getPageNo() { - return pageNo; - } - - public void setPageNo(int pageNo) { - this.pageNo = pageNo; - } - - public String getClientIp() { - return clientIp; - } - - public void setClientIp(String clientIp) { - this.clientIp = clientIp; - } - - public String getUBType() { - return UBType; - } - - public void setUBType(String uBType) { - UBType = uBType; - } - - public String getUBKeyId() { - return UBKeyId; - } - - public void setUBKeyId(String uBKeyId) { - UBKeyId = uBKeyId; - } - -} diff --git a/src/main/java/com/jsh/model/vo/basic/RoleShowModel.java b/src/main/java/com/jsh/model/vo/basic/RoleShowModel.java deleted file mode 100644 index 924912a9..00000000 --- a/src/main/java/com/jsh/model/vo/basic/RoleShowModel.java +++ /dev/null @@ -1,19 +0,0 @@ -package com.jsh.model.vo.basic; - -import java.io.Serializable; - -@SuppressWarnings("serial") -public class RoleShowModel implements Serializable { - /** - * 提示信息 - */ - private String msgTip = ""; - - public String getMsgTip() { - return msgTip; - } - - public void setMsgTip(String msgTip) { - this.msgTip = msgTip; - } -} diff --git a/src/main/java/com/jsh/model/vo/basic/SupplierModel.java b/src/main/java/com/jsh/model/vo/basic/SupplierModel.java deleted file mode 100644 index f58979f7..00000000 --- a/src/main/java/com/jsh/model/vo/basic/SupplierModel.java +++ /dev/null @@ -1,364 +0,0 @@ -package com.jsh.model.vo.basic; - -import java.io.File; -import java.io.InputStream; -import java.io.Serializable; - -@SuppressWarnings("serial") -public class SupplierModel implements Serializable { - private SupplierShowModel showModel = new SupplierShowModel(); - - /**======开始接受页面参数=================**/ - /** - * 名称 - */ - private String supplier = ""; - - /** - * 类型 - */ - private String type = ""; - - /** - * 联系人 - */ - private String contacts = ""; - - /** - * 联系电话 - */ - private String phonenum = ""; - - /** - * 电子邮箱 - */ - private String email = ""; - - /** - * 预付款 - */ - private Double AdvanceIn; - - /** - * 期初应收 - */ - private Double BeginNeedGet; - - /** - * 期初应付 - */ - private Double BeginNeedPay; - - /** - * 累计应收 - */ - private Double AllNeedGet; - - /** - * 累计应付 - */ - private Double AllNeedPay; - - /** - * 描述信息 - */ - private String description = ""; - - private String fax = ""; - private String telephone = ""; - private String address = ""; - private String taxNum = ""; - private String bankName = ""; - private String accountNumber = ""; - private Double taxRate; - - private String UBType = ""; //UBType,UserBusiness类型 - - private String UBKeyId = ""; //UBKeyId,UserBusiness关键id - - /** - * 导入excel文件 - */ - private File supplierFile; - - /** - * 启用 - */ - private Boolean enabled = false; - - /** - * 供应商ID - */ - private Long supplierID = 0l; - - /** - * 供应商IDs 批量操作使用 - */ - private String supplierIDs = ""; - - /** - * 每页显示的个数 - */ - private int pageSize = 10; - - /** - * 当前页码 - */ - private int pageNo = 1; - - /** - * 用户IP,用户记录操作日志 - */ - private String clientIp = ""; - private String browserType = ""; //浏览器类型 - private String fileName = ""; //文件名称 - private InputStream excelStream; //输入流,导出excel文件 - - public SupplierShowModel getShowModel() { - return showModel; - } - - public void setShowModel(SupplierShowModel showModel) { - this.showModel = showModel; - } - - public String getSupplier() { - return supplier; - } - - public void setSupplier(String supplier) { - this.supplier = supplier; - } - - public String getType() { - return type; - } - - public void setType(String type) { - this.type = type; - } - - public String getContacts() { - return contacts; - } - - public void setContacts(String contacts) { - this.contacts = contacts; - } - - public String getPhonenum() { - return phonenum; - } - - public void setPhonenum(String phonenum) { - this.phonenum = phonenum; - } - - public String getEmail() { - return email; - } - - public void setEmail(String email) { - this.email = email; - } - - public Double getAdvanceIn() { - return AdvanceIn; - } - - public void setAdvanceIn(Double advanceIn) { - AdvanceIn = advanceIn; - } - - public Double getBeginNeedGet() { - return BeginNeedGet; - } - - public void setBeginNeedGet(Double beginNeedGet) { - BeginNeedGet = beginNeedGet; - } - - public Double getBeginNeedPay() { - return BeginNeedPay; - } - - public void setBeginNeedPay(Double beginNeedPay) { - BeginNeedPay = beginNeedPay; - } - - public Double getAllNeedGet() { - return AllNeedGet; - } - - public void setAllNeedGet(Double allNeedGet) { - AllNeedGet = allNeedGet; - } - - public Double getAllNeedPay() { - return AllNeedPay; - } - - public void setAllNeedPay(Double allNeedPay) { - AllNeedPay = allNeedPay; - } - - public String getDescription() { - return description; - } - - public void setDescription(String description) { - this.description = description; - } - - public Boolean getEnabled() { - return enabled; - } - - public void setEnabled(Boolean enabled) { - this.enabled = enabled; - } - - public Long getSupplierID() { - return supplierID; - } - - public void setSupplierID(Long supplierID) { - this.supplierID = supplierID; - } - - public String getSupplierIDs() { - return supplierIDs; - } - - public void setSupplierIDs(String supplierIDs) { - this.supplierIDs = supplierIDs; - } - - public int getPageSize() { - return pageSize; - } - - public void setPageSize(int pageSize) { - this.pageSize = pageSize; - } - - public int getPageNo() { - return pageNo; - } - - public void setPageNo(int pageNo) { - this.pageNo = pageNo; - } - - public String getClientIp() { - return clientIp; - } - - public void setClientIp(String clientIp) { - this.clientIp = clientIp; - } - - public String getFax() { - return fax; - } - - public void setFax(String fax) { - this.fax = fax; - } - - public String getTelephone() { - return telephone; - } - - public void setTelephone(String telephone) { - this.telephone = telephone; - } - - public String getAddress() { - return address; - } - - public void setAddress(String address) { - this.address = address; - } - - public String getTaxNum() { - return taxNum; - } - - public void setTaxNum(String taxNum) { - this.taxNum = taxNum; - } - - public String getBankName() { - return bankName; - } - - public void setBankName(String bankName) { - this.bankName = bankName; - } - - public String getAccountNumber() { - return accountNumber; - } - - public void setAccountNumber(String accountNumber) { - this.accountNumber = accountNumber; - } - - public Double getTaxRate() { - return taxRate; - } - - public void setTaxRate(Double taxRate) { - this.taxRate = taxRate; - } - - public String getUBType() { - return UBType; - } - - public void setUBType(String UBType) { - this.UBType = UBType; - } - - public String getUBKeyId() { - return UBKeyId; - } - - public void setUBKeyId(String UBKeyId) { - this.UBKeyId = UBKeyId; - } - - public String getBrowserType() { - return browserType; - } - - public void setBrowserType(String browserType) { - this.browserType = browserType; - } - - public String getFileName() { - return fileName; - } - - public void setFileName(String fileName) { - this.fileName = fileName; - } - - public InputStream getExcelStream() { - return excelStream; - } - - public void setExcelStream(InputStream excelStream) { - this.excelStream = excelStream; - } - - public File getSupplierFile() { - return supplierFile; - } - - public void setSupplierFile(File supplierFile) { - this.supplierFile = supplierFile; - } -} diff --git a/src/main/java/com/jsh/model/vo/basic/SupplierShowModel.java b/src/main/java/com/jsh/model/vo/basic/SupplierShowModel.java deleted file mode 100644 index 9a24ad84..00000000 --- a/src/main/java/com/jsh/model/vo/basic/SupplierShowModel.java +++ /dev/null @@ -1,39 +0,0 @@ -package com.jsh.model.vo.basic; - -import java.io.Serializable; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -@SuppressWarnings("serial") -public class SupplierShowModel implements Serializable { - /** - * 提示信息 - */ - private String msgTip = ""; - - /** - * 系统数据 - */ - @SuppressWarnings("rawtypes") - private Map map = new HashMap(); - - public String getMsgTip() { - return msgTip; - } - - public void setMsgTip(String msgTip) { - this.msgTip = msgTip; - } - - @SuppressWarnings("rawtypes") - public Map getMap() { - return map; - } - - @SuppressWarnings("rawtypes") - public void setMap(Map map) { - this.map = map; - } - -} diff --git a/src/main/java/com/jsh/model/vo/basic/SystemConfigModel.java b/src/main/java/com/jsh/model/vo/basic/SystemConfigModel.java deleted file mode 100644 index d8af20a9..00000000 --- a/src/main/java/com/jsh/model/vo/basic/SystemConfigModel.java +++ /dev/null @@ -1,78 +0,0 @@ -package com.jsh.model.vo.basic; - -import java.io.Serializable; - -@SuppressWarnings("serial") -public class SystemConfigModel implements Serializable { - private SystemConfigShowModel showModel = new SystemConfigShowModel(); - - /** - * ======开始接受页面参数================= - **/ - private Long id = 0l; - private String type = ""; - private String name = ""; - private String value = ""; - private String description = ""; - - /** - * 用户IP,用户记录操作日志 - */ - private String clientIp = ""; - - public SystemConfigShowModel getShowModel() { - return showModel; - } - - public void setShowModel(SystemConfigShowModel showModel) { - this.showModel = showModel; - } - - public Long getId() { - return id; - } - - public void setId(Long id) { - this.id = id; - } - - public String getType() { - return type; - } - - public void setType(String type) { - this.type = type; - } - - public String getName() { - return name; - } - - public void setName(String name) { - this.name = name; - } - - public String getValue() { - return value; - } - - public void setValue(String value) { - this.value = value; - } - - public String getDescription() { - return description; - } - - public void setDescription(String description) { - this.description = description; - } - - public String getClientIp() { - return clientIp; - } - - public void setClientIp(String clientIp) { - this.clientIp = clientIp; - } -} diff --git a/src/main/java/com/jsh/model/vo/basic/SystemConfigShowModel.java b/src/main/java/com/jsh/model/vo/basic/SystemConfigShowModel.java deleted file mode 100644 index 1f36e97e..00000000 --- a/src/main/java/com/jsh/model/vo/basic/SystemConfigShowModel.java +++ /dev/null @@ -1,19 +0,0 @@ -package com.jsh.model.vo.basic; - -import java.io.Serializable; - -@SuppressWarnings("serial") -public class SystemConfigShowModel implements Serializable { - /** - * 提示信息 - */ - private String msgTip = ""; - - public String getMsgTip() { - return msgTip; - } - - public void setMsgTip(String msgTip) { - this.msgTip = msgTip; - } -} diff --git a/src/main/java/com/jsh/model/vo/basic/UnitModel.java b/src/main/java/com/jsh/model/vo/basic/UnitModel.java deleted file mode 100644 index 70524187..00000000 --- a/src/main/java/com/jsh/model/vo/basic/UnitModel.java +++ /dev/null @@ -1,97 +0,0 @@ -package com.jsh.model.vo.basic; - -import java.io.Serializable; - -@SuppressWarnings("serial") -public class UnitModel implements Serializable { - private DepotShowModel showModel = new DepotShowModel(); - - /**======开始接受页面参数=================**/ - /** - * 名称 - */ - private String UName = ""; - - /** - * ID - */ - private Long unitID = 0l; - - /** - * IDs 批量操作使用 - */ - private String unitIDs = ""; - - /** - * 每页显示的个数 - */ - private int pageSize = 10; - - /** - * 当前页码 - */ - private int pageNo = 1; - - /** - * 用户IP,用户记录操作日志 - */ - private String clientIp = ""; - - - public DepotShowModel getShowModel() { - return showModel; - } - - public void setShowModel(DepotShowModel showModel) { - this.showModel = showModel; - } - - public String getUName() { - return UName; - } - - public void setUName(String UName) { - this.UName = UName; - } - - public Long getUnitID() { - return unitID; - } - - public void setUnitID(Long unitID) { - this.unitID = unitID; - } - - public String getUnitIDs() { - return unitIDs; - } - - public void setUnitIDs(String unitIDs) { - this.unitIDs = unitIDs; - } - - public int getPageSize() { - return pageSize; - } - - public void setPageSize(int pageSize) { - this.pageSize = pageSize; - } - - public int getPageNo() { - return pageNo; - } - - public void setPageNo(int pageNo) { - this.pageNo = pageNo; - } - - public String getClientIp() { - return clientIp; - } - - public void setClientIp(String clientIp) { - this.clientIp = clientIp; - } - -} diff --git a/src/main/java/com/jsh/model/vo/basic/UnitShowModel.java b/src/main/java/com/jsh/model/vo/basic/UnitShowModel.java deleted file mode 100644 index c68ce9cc..00000000 --- a/src/main/java/com/jsh/model/vo/basic/UnitShowModel.java +++ /dev/null @@ -1,40 +0,0 @@ -package com.jsh.model.vo.basic; - -import java.io.Serializable; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -@SuppressWarnings("serial") -public class UnitShowModel implements Serializable { - /** - * 提示信息 - */ - private String msgTip = ""; - - /** - * 系统数据 - */ - @SuppressWarnings("rawtypes") - private Map map = new HashMap(); - - public String getMsgTip() { - return msgTip; - } - - public void setMsgTip(String msgTip) { - this.msgTip = msgTip; - } - - @SuppressWarnings("rawtypes") - public Map getMap() { - return map; - } - - @SuppressWarnings("rawtypes") - public void setMap(Map map) { - this.map = map; - } - - -} diff --git a/src/main/java/com/jsh/model/vo/basic/UserBusinessModel.java b/src/main/java/com/jsh/model/vo/basic/UserBusinessModel.java deleted file mode 100644 index a4cf03a5..00000000 --- a/src/main/java/com/jsh/model/vo/basic/UserBusinessModel.java +++ /dev/null @@ -1,131 +0,0 @@ -package com.jsh.model.vo.basic; - -import java.io.Serializable; - -@SuppressWarnings("serial") -public class UserBusinessModel implements Serializable { - private UserBusinessShowModel showModel = new UserBusinessShowModel(); - - /**======开始接受页面参数=================**/ - /** - * 角色名称 - */ - private String Type = ""; - - /** - * 主ID - */ - private String KeyId = ""; - - /** - * 值 - */ - private String Value = ""; - - private String BtnStr = ""; - - /** - * 分类ID - */ - private Long userBusinessID = 0l; - - /** - * 分类IDs 批量操作使用 - */ - private String userBusinessIDs = ""; - - /** - * 每页显示的个数 - */ - private int pageSize = 10; - - /** - * 当前页码 - */ - private int pageNo = 1; - - /** - * 用户IP,用户记录操作日志 - */ - private String clientIp = ""; - - public UserBusinessShowModel getShowModel() { - return showModel; - } - - public void setShowModel(UserBusinessShowModel showModel) { - this.showModel = showModel; - } - - public String getType() { - return Type; - } - - public void setType(String type) { - Type = type; - } - - public String getKeyId() { - return KeyId; - } - - public void setKeyId(String keyId) { - KeyId = keyId; - } - - public String getValue() { - return Value; - } - - public void setValue(String value) { - Value = value; - } - - public Long getUserBusinessID() { - return userBusinessID; - } - - public void setUserBusinessID(Long userBusinessID) { - this.userBusinessID = userBusinessID; - } - - public String getUserBusinessIDs() { - return userBusinessIDs; - } - - public void setUserBusinessIDs(String userBusinessIDs) { - this.userBusinessIDs = userBusinessIDs; - } - - public int getPageSize() { - return pageSize; - } - - public void setPageSize(int pageSize) { - this.pageSize = pageSize; - } - - public int getPageNo() { - return pageNo; - } - - public void setPageNo(int pageNo) { - this.pageNo = pageNo; - } - - public String getClientIp() { - return clientIp; - } - - public void setClientIp(String clientIp) { - this.clientIp = clientIp; - } - - public String getBtnStr() { - return BtnStr; - } - - public void setBtnStr(String btnStr) { - BtnStr = btnStr; - } -} diff --git a/src/main/java/com/jsh/model/vo/basic/UserBusinessShowModel.java b/src/main/java/com/jsh/model/vo/basic/UserBusinessShowModel.java deleted file mode 100644 index d5e83227..00000000 --- a/src/main/java/com/jsh/model/vo/basic/UserBusinessShowModel.java +++ /dev/null @@ -1,40 +0,0 @@ -package com.jsh.model.vo.basic; - -import java.io.Serializable; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -@SuppressWarnings("serial") -public class UserBusinessShowModel implements Serializable { - /** - * 提示信息 - */ - private String msgTip = ""; - - /** - * 系统数据 - */ - @SuppressWarnings("rawtypes") - private Map map = new HashMap(); - - public String getMsgTip() { - return msgTip; - } - - public void setMsgTip(String msgTip) { - this.msgTip = msgTip; - } - - @SuppressWarnings("rawtypes") - public Map getMap() { - return map; - } - - @SuppressWarnings("rawtypes") - public void setMap(Map map) { - this.map = map; - } - - -} diff --git a/src/main/java/com/jsh/model/vo/basic/UserModel.java b/src/main/java/com/jsh/model/vo/basic/UserModel.java deleted file mode 100644 index 65bb412d..00000000 --- a/src/main/java/com/jsh/model/vo/basic/UserModel.java +++ /dev/null @@ -1,220 +0,0 @@ -package com.jsh.model.vo.basic; - -import java.io.Serializable; - -@SuppressWarnings("serial") -public class UserModel implements Serializable { - private UserShowModel showModel = new UserShowModel(); - - /*+++++用户登录开始+++++++++++*/ - private String username = ""; - private String password = ""; - /*+++++用户登录结束+++++++++++*/ - - /** - * ===============以下处理用户管理部分=============== - */ - /** - * 用户登录名称 - */ - private String loginame; - - /** - * 职位 - */ - private String position; - - /** - * 部门 - */ - private String department; - - /** - * 电子邮件 - */ - private String email; - - /** - * 电话号码 - */ - private String phonenum; - - /** - * 是否管理员 0 ==管理员 1==非管理员 - */ - private Short ismanager = 1; - - /** - * 用户描述 - */ - private String description; - - /** - * 用户ID - */ - private Long userID = 0l; - - /** - * 用户IDs 批量操作使用 - */ - private String userIDs = ""; - - /** - * 每页显示的个数 - */ - private int pageSize = 10; - - /** - * 当前页码 - */ - private int pageNo = 1; - - /** - * 用户IP,用户记录操作日志 - */ - private String clientIp = ""; - - /** - * 根据标识判断是校验登录名称还是用户名称 0==用户名称 1==登录名称 - */ - private int checkFlag = 0; - - private String orgpwd = ""; - - public String getClientIp() { - return clientIp; - } - - public void setClientIp(String clientIp) { - this.clientIp = clientIp; - } - - public String getUsername() { - return username; - } - - public void setUsername(String username) { - this.username = username; - } - - public String getPassword() { - return password; - } - - public void setPassword(String password) { - this.password = password; - } - - public UserShowModel getShowModel() { - return showModel; - } - - public void setShowModel(UserShowModel showModel) { - this.showModel = showModel; - } - - public String getLoginame() { - return loginame; - } - - public void setLoginame(String loginame) { - this.loginame = loginame; - } - - public String getPosition() { - return position; - } - - public void setPosition(String position) { - this.position = position; - } - - public String getDepartment() { - return department; - } - - public void setDepartment(String department) { - this.department = department; - } - - public String getEmail() { - return email; - } - - public void setEmail(String email) { - this.email = email; - } - - public String getPhonenum() { - return phonenum; - } - - public void setPhonenum(String phonenum) { - this.phonenum = phonenum; - } - - public Short getIsmanager() { - return ismanager; - } - - public void setIsmanager(Short ismanager) { - this.ismanager = ismanager; - } - - public String getDescription() { - return description; - } - - public void setDescription(String description) { - this.description = description; - } - - public Long getUserID() { - return userID; - } - - public void setUserID(Long userID) { - this.userID = userID; - } - - public String getUserIDs() { - return userIDs; - } - - public void setUserIDs(String userIDs) { - this.userIDs = userIDs; - } - - public int getPageSize() { - return pageSize; - } - - public void setPageSize(int pageSize) { - this.pageSize = pageSize; - } - - public int getPageNo() { - return pageNo; - } - - public void setPageNo(int pageNo) { - this.pageNo = pageNo; - } - - public int getCheckFlag() { - return checkFlag; - } - - public void setCheckFlag(int checkFlag) { - this.checkFlag = checkFlag; - } - - public String getOrgpwd() { - return orgpwd; - } - - public void setOrgpwd(String orgpwd) { - this.orgpwd = orgpwd; - } - -} diff --git a/src/main/java/com/jsh/model/vo/basic/UserShowModel.java b/src/main/java/com/jsh/model/vo/basic/UserShowModel.java deleted file mode 100644 index 7339d745..00000000 --- a/src/main/java/com/jsh/model/vo/basic/UserShowModel.java +++ /dev/null @@ -1,19 +0,0 @@ -package com.jsh.model.vo.basic; - -import java.io.Serializable; - -@SuppressWarnings("serial") -public class UserShowModel implements Serializable { - /** - * 提示信息 - */ - private String msgTip = ""; - - public String getMsgTip() { - return msgTip; - } - - public void setMsgTip(String msgTip) { - this.msgTip = msgTip; - } -} diff --git a/src/main/java/com/jsh/model/vo/materials/AccountHeadModel.java b/src/main/java/com/jsh/model/vo/materials/AccountHeadModel.java deleted file mode 100644 index afb90d19..00000000 --- a/src/main/java/com/jsh/model/vo/materials/AccountHeadModel.java +++ /dev/null @@ -1,212 +0,0 @@ -package com.jsh.model.vo.materials; - -import java.io.Serializable; - -@SuppressWarnings("serial") -public class AccountHeadModel implements Serializable { - private AccountHeadShowModel showModel = new AccountHeadShowModel(); - - /** - * ======开始接受页面参数================= - **/ - private String Type; - private Long OrganId; - private Long HandsPersonId; - private Double ChangeAmount; - private Double TotalPrice; - private Long AccountId; - private String BillNo; - private String BillTime; - private String Remark; - private String BeginTime; //查询开始时间 - private String EndTime; //查询结束时间 - private String MonthTime; //查询月份 - - private String supplierId; //单位Id,用于查询单位的收付款 - - private String supType; //单位类型,客户、供应商 - /** - * 分类ID - */ - private Long accountHeadID = 0l; - - /** - * 分类IDs 批量操作使用 - */ - private String accountHeadIDs = ""; - - /** - * 每页显示的个数 - */ - private int pageSize = 10; - - /** - * 当前页码 - */ - private int pageNo = 1; - - /** - * 用户IP,用户记录操作日志 - */ - private String clientIp = ""; - - public AccountHeadShowModel getShowModel() { - return showModel; - } - - public void setShowModel(AccountHeadShowModel showModel) { - this.showModel = showModel; - } - - public String getType() { - return Type; - } - - public void setType(String type) { - Type = type; - } - - public Long getOrganId() { - return OrganId; - } - - public void setOrganId(Long organId) { - OrganId = organId; - } - - public Long getHandsPersonId() { - return HandsPersonId; - } - - public void setHandsPersonId(Long handsPersonId) { - HandsPersonId = handsPersonId; - } - - public Double getChangeAmount() { - return ChangeAmount; - } - - public void setChangeAmount(Double changeAmount) { - ChangeAmount = changeAmount; - } - - public Double getTotalPrice() { - return TotalPrice; - } - - public void setTotalPrice(Double totalPrice) { - TotalPrice = totalPrice; - } - - public Long getAccountId() { - return AccountId; - } - - public void setAccountId(Long accountId) { - AccountId = accountId; - } - - public String getBillNo() { - return BillNo; - } - - public void setBillNo(String billNo) { - BillNo = billNo; - } - - public String getBillTime() { - return BillTime; - } - - public void setBillTime(String billTime) { - BillTime = billTime; - } - - public String getRemark() { - return Remark; - } - - public void setRemark(String remark) { - Remark = remark; - } - - public String getBeginTime() { - return BeginTime; - } - - public void setBeginTime(String beginTime) { - BeginTime = beginTime; - } - - public String getEndTime() { - return EndTime; - } - - public void setEndTime(String endTime) { - EndTime = endTime; - } - - public String getMonthTime() { - return MonthTime; - } - - public void setMonthTime(String monthTime) { - MonthTime = monthTime; - } - - public Long getAccountHeadID() { - return accountHeadID; - } - - public void setAccountHeadID(Long accountHeadID) { - this.accountHeadID = accountHeadID; - } - - public String getAccountHeadIDs() { - return accountHeadIDs; - } - - public void setAccountHeadIDs(String accountHeadIDs) { - this.accountHeadIDs = accountHeadIDs; - } - - public int getPageSize() { - return pageSize; - } - - public void setPageSize(int pageSize) { - this.pageSize = pageSize; - } - - public int getPageNo() { - return pageNo; - } - - public void setPageNo(int pageNo) { - this.pageNo = pageNo; - } - - public String getClientIp() { - return clientIp; - } - - public void setClientIp(String clientIp) { - this.clientIp = clientIp; - } - - public String getSupplierId() { - return supplierId; - } - - public void setSupplierId(String supplierId) { - this.supplierId = supplierId; - } - - public String getSupType() { - return supType; - } - - public void setSupType(String supType) { - this.supType = supType; - } -} diff --git a/src/main/java/com/jsh/model/vo/materials/AccountHeadShowModel.java b/src/main/java/com/jsh/model/vo/materials/AccountHeadShowModel.java deleted file mode 100644 index 5a3d41b6..00000000 --- a/src/main/java/com/jsh/model/vo/materials/AccountHeadShowModel.java +++ /dev/null @@ -1,39 +0,0 @@ -package com.jsh.model.vo.materials; - -import java.io.Serializable; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -@SuppressWarnings("serial") -public class AccountHeadShowModel implements Serializable { - /** - * 提示信息 - */ - private String msgTip = ""; - - /** - * 系统数据 - */ - @SuppressWarnings("rawtypes") - private Map map = new HashMap(); - - public String getMsgTip() { - return msgTip; - } - - public void setMsgTip(String msgTip) { - this.msgTip = msgTip; - } - - @SuppressWarnings("rawtypes") - public Map getMap() { - return map; - } - - @SuppressWarnings("rawtypes") - public void setMap(Map map) { - this.map = map; - } - -} diff --git a/src/main/java/com/jsh/model/vo/materials/AccountItemModel.java b/src/main/java/com/jsh/model/vo/materials/AccountItemModel.java deleted file mode 100644 index 0a0da394..00000000 --- a/src/main/java/com/jsh/model/vo/materials/AccountItemModel.java +++ /dev/null @@ -1,221 +0,0 @@ -package com.jsh.model.vo.materials; - -import java.io.InputStream; -import java.io.Serializable; - -@SuppressWarnings("serial") -public class AccountItemModel implements Serializable { - private AccountItemShowModel showModel = new AccountItemShowModel(); - - /** - * ======开始接受页面参数================= - **/ - private Long HeaderId; - private Long AccountId; - private Long InOutItemId; - private Double EachAmount; - private String Remark = ""; - - private String Inserted = ""; //json插入记录 - private String Deleted = ""; //json删除记录 - private String Updated = ""; //json修改记录 - - private String HeadIds = ""; //表头集合列表 - private String ListType = ""; //单据类型 - private String MonthTime = ""; //月份 - private String browserType = ""; - /** - * 文件名称 - */ - private String fileName = ""; - /** - * 分类ID - */ - private Long accountItemID = 0l; - - /** - * 分类IDs 批量操作使用 - */ - private String accountItemIDs = ""; - - /** - * 每页显示的个数 - */ - private int pageSize = 800; - - /** - * 当前页码 - */ - private int pageNo = 1; - - /** - * 用户IP,用户记录操作日志 - */ - private String clientIp = ""; - - - /** - * 输入流,导出excel文件 - */ - private InputStream excelStream; - - public AccountItemShowModel getShowModel() { - return showModel; - } - - public void setShowModel(AccountItemShowModel showModel) { - this.showModel = showModel; - } - - public Long getHeaderId() { - return HeaderId; - } - - public void setHeaderId(Long headerId) { - HeaderId = headerId; - } - - public Long getAccountId() { - return AccountId; - } - - public void setAccountId(Long accountId) { - AccountId = accountId; - } - - public Long getInOutItemId() { - return InOutItemId; - } - - public void setInOutItemId(Long inOutItemId) { - InOutItemId = inOutItemId; - } - - public Double getEachAmount() { - return EachAmount; - } - - public void setEachAmount(Double eachAmount) { - EachAmount = eachAmount; - } - - public String getRemark() { - return Remark; - } - - public void setRemark(String remark) { - Remark = remark; - } - - public String getInserted() { - return Inserted; - } - - public void setInserted(String inserted) { - Inserted = inserted; - } - - public String getDeleted() { - return Deleted; - } - - public void setDeleted(String deleted) { - Deleted = deleted; - } - - public String getUpdated() { - return Updated; - } - - public void setUpdated(String updated) { - Updated = updated; - } - - public String getHeadIds() { - return HeadIds; - } - - public void setHeadIds(String headIds) { - HeadIds = headIds; - } - - public String getListType() { - return ListType; - } - - public void setListType(String listType) { - ListType = listType; - } - - public String getMonthTime() { - return MonthTime; - } - - public void setMonthTime(String monthTime) { - MonthTime = monthTime; - } - - public String getBrowserType() { - return browserType; - } - - public void setBrowserType(String browserType) { - this.browserType = browserType; - } - - public String getFileName() { - return fileName; - } - - public void setFileName(String fileName) { - this.fileName = fileName; - } - - public Long getAccountItemID() { - return accountItemID; - } - - public void setAccountItemID(Long accountItemID) { - this.accountItemID = accountItemID; - } - - public String getAccountItemIDs() { - return accountItemIDs; - } - - public void setAccountItemIDs(String accountItemIDs) { - this.accountItemIDs = accountItemIDs; - } - - public int getPageSize() { - return pageSize; - } - - public void setPageSize(int pageSize) { - this.pageSize = pageSize; - } - - public int getPageNo() { - return pageNo; - } - - public void setPageNo(int pageNo) { - this.pageNo = pageNo; - } - - public String getClientIp() { - return clientIp; - } - - public void setClientIp(String clientIp) { - this.clientIp = clientIp; - } - - public InputStream getExcelStream() { - return excelStream; - } - - public void setExcelStream(InputStream excelStream) { - this.excelStream = excelStream; - } -} diff --git a/src/main/java/com/jsh/model/vo/materials/AccountItemShowModel.java b/src/main/java/com/jsh/model/vo/materials/AccountItemShowModel.java deleted file mode 100644 index 9b8e05c9..00000000 --- a/src/main/java/com/jsh/model/vo/materials/AccountItemShowModel.java +++ /dev/null @@ -1,19 +0,0 @@ -package com.jsh.model.vo.materials; - -import java.io.Serializable; - -@SuppressWarnings("serial") -public class AccountItemShowModel implements Serializable { - /** - * 提示信息 - */ - private String msgTip = ""; - - public String getMsgTip() { - return msgTip; - } - - public void setMsgTip(String msgTip) { - this.msgTip = msgTip; - } -} diff --git a/src/main/java/com/jsh/model/vo/materials/DepotHeadModel.java b/src/main/java/com/jsh/model/vo/materials/DepotHeadModel.java deleted file mode 100644 index c5a9ee59..00000000 --- a/src/main/java/com/jsh/model/vo/materials/DepotHeadModel.java +++ /dev/null @@ -1,404 +0,0 @@ -package com.jsh.model.vo.materials; - -import java.io.Serializable; - -/** - * @author alan - */ -@SuppressWarnings("serial") -public class DepotHeadModel implements Serializable { - private DepotHeadShowModel showModel = new DepotHeadShowModel(); - - /** - * ======开始接受页面参数================= - **/ - private String Type = ""; - private String SubType = ""; - private Long ProjectId; - private String DepotIds = ""; - private String DefaultNumber = ""; - private String Number = ""; - private String OperPersonName = ""; - private String OperTime; - private Long OrganId; - private Long HandsPersonId; - private Long AccountId; - private Double ChangeAmount; - private Long AllocationProjectId; - private Double TotalPrice; - private String PayType = ""; - private String Remark = ""; - - private String Salesman; - private String AccountIdList; - private String AccountMoneyList; - private Double Discount; - private Double DiscountMoney; - private Double DiscountLastMoney; - private Double OtherMoney; - private String OtherMoneyList; - private String OtherMoneyItem; - private Integer AccountDay; - //单据状态 - private Boolean Status = false; - //查询开始时间 - private String BeginTime; - //查询结束时间 - private String EndTime; - //查询月份 - private String MonthTime; - //单位Id,用于查询单位的应收应付 - private String supplierId; - //商品参数 - private String MaterialParam; - //单据id列表 - private String dhIds; - //单位类型,客户、供应商 - private String supType; - - - /** - * 分类ID - */ - private Long depotHeadID = 0L; - - /** - * 分类IDs 批量操作使用 - */ - private String depotHeadIDs = ""; - - /** - * 每页显示的个数 - */ - private int pageSize = 10; - - /** - * 当前页码 - */ - private int pageNo = 1; - - /** - * 用户IP,用户记录操作日志 - */ - private String clientIp = ""; - - public DepotHeadShowModel getShowModel() { - return showModel; - } - - public void setShowModel(DepotHeadShowModel showModel) { - this.showModel = showModel; - } - - public String getType() { - return Type; - } - - public void setType(String type) { - Type = type; - } - - public String getSubType() { - return SubType; - } - - public void setSubType(String subType) { - SubType = subType; - } - - public Long getProjectId() { - return ProjectId; - } - - public void setProjectId(Long projectId) { - ProjectId = projectId; - } - - public String getDepotIds() { - return DepotIds; - } - - public void setDepotIds(String depotIds) { - DepotIds = depotIds; - } - - public String getDefaultNumber() { - return DefaultNumber; - } - - public void setDefaultNumber(String defaultNumber) { - DefaultNumber = defaultNumber; - } - - public String getNumber() { - return Number; - } - - public void setNumber(String number) { - Number = number; - } - - public String getOperPersonName() { - return OperPersonName; - } - - public void setOperPersonName(String operPersonName) { - OperPersonName = operPersonName; - } - - public Long getOrganId() { - return OrganId; - } - - public void setOrganId(Long organId) { - OrganId = organId; - } - - public Long getHandsPersonId() { - return HandsPersonId; - } - - public void setHandsPersonId(Long handsPersonId) { - HandsPersonId = handsPersonId; - } - - public Long getAccountId() { - return AccountId; - } - - public void setAccountId(Long accountId) { - AccountId = accountId; - } - - public Double getChangeAmount() { - return ChangeAmount; - } - - public void setChangeAmount(Double changeAmount) { - ChangeAmount = changeAmount; - } - - public Long getAllocationProjectId() { - return AllocationProjectId; - } - - public void setAllocationProjectId(Long allocationProjectId) { - AllocationProjectId = allocationProjectId; - } - - public Double getTotalPrice() { - return TotalPrice; - } - - public void setTotalPrice(Double totalPrice) { - TotalPrice = totalPrice; - } - - public String getPayType() { - return PayType; - } - - public void setPayType(String payType) { - PayType = payType; - } - - public String getRemark() { - return Remark; - } - - public void setRemark(String remark) { - Remark = remark; - } - - public Long getDepotHeadID() { - return depotHeadID; - } - - public void setDepotHeadID(Long depotHeadID) { - this.depotHeadID = depotHeadID; - } - - public String getDepotHeadIDs() { - return depotHeadIDs; - } - - public void setDepotHeadIDs(String depotHeadIDs) { - this.depotHeadIDs = depotHeadIDs; - } - - public int getPageSize() { - return pageSize; - } - - public void setPageSize(int pageSize) { - this.pageSize = pageSize; - } - - public int getPageNo() { - return pageNo; - } - - public void setPageNo(int pageNo) { - this.pageNo = pageNo; - } - - public String getClientIp() { - return clientIp; - } - - public void setClientIp(String clientIp) { - this.clientIp = clientIp; - } - - public String getBeginTime() { - return BeginTime; - } - - public void setBeginTime(String beginTime) { - BeginTime = beginTime; - } - - public String getEndTime() { - return EndTime; - } - - public void setEndTime(String endTime) { - EndTime = endTime; - } - - public String getOperTime() { - return OperTime; - } - - public void setOperTime(String operTime) { - OperTime = operTime; - } - - public String getMonthTime() { - return MonthTime; - } - - public void setMonthTime(String monthTime) { - MonthTime = monthTime; - } - - public String getSupplierId() { - return supplierId; - } - - public void setSupplierId(String supplierId) { - this.supplierId = supplierId; - } - - public String getSalesman() { - return Salesman; - } - - public void setSalesman(String salesman) { - Salesman = salesman; - } - - public String getAccountIdList() { - return AccountIdList; - } - - public void setAccountIdList(String accountIdList) { - AccountIdList = accountIdList; - } - - public String getAccountMoneyList() { - return AccountMoneyList; - } - - public void setAccountMoneyList(String accountMoneyList) { - AccountMoneyList = accountMoneyList; - } - - public Double getDiscount() { - return Discount; - } - - public void setDiscount(Double discount) { - Discount = discount; - } - - public Double getDiscountMoney() { - return DiscountMoney; - } - - public void setDiscountMoney(Double discountMoney) { - DiscountMoney = discountMoney; - } - - public Double getDiscountLastMoney() { - return DiscountLastMoney; - } - - public void setDiscountLastMoney(Double discountLastMoney) { - DiscountLastMoney = discountLastMoney; - } - - public Double getOtherMoney() { - return OtherMoney; - } - - public void setOtherMoney(Double otherMoney) { - OtherMoney = otherMoney; - } - - public String getOtherMoneyList() { - return OtherMoneyList; - } - - public void setOtherMoneyList(String otherMoneyList) { - OtherMoneyList = otherMoneyList; - } - - public String getOtherMoneyItem() { - return OtherMoneyItem; - } - - public void setOtherMoneyItem(String otherMoneyItem) { - OtherMoneyItem = otherMoneyItem; - } - - public Integer getAccountDay() { - return AccountDay; - } - - public void setAccountDay(Integer accountDay) { - AccountDay = accountDay; - } - - public Boolean getStatus() { - return Status; - } - - public void setStatus(Boolean status) { - Status = status; - } - - public String getMaterialParam() { - return MaterialParam; - } - - public void setMaterialParam(String materialParam) { - MaterialParam = materialParam; - } - - public String getDhIds() { - return dhIds; - } - - public void setDhIds(String dhIds) { - this.dhIds = dhIds; - } - - public String getSupType() { - return supType; - } - - public void setSupType(String supType) { - this.supType = supType; - } -} diff --git a/src/main/java/com/jsh/model/vo/materials/DepotHeadShowModel.java b/src/main/java/com/jsh/model/vo/materials/DepotHeadShowModel.java deleted file mode 100644 index c71a2486..00000000 --- a/src/main/java/com/jsh/model/vo/materials/DepotHeadShowModel.java +++ /dev/null @@ -1,39 +0,0 @@ -package com.jsh.model.vo.materials; - -import java.io.Serializable; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -@SuppressWarnings("serial") -public class DepotHeadShowModel implements Serializable { - /** - * 提示信息 - */ - private String msgTip = ""; - - /** - * 系统数据 - */ - @SuppressWarnings("rawtypes") - private Map map = new HashMap(); - - public String getMsgTip() { - return msgTip; - } - - public void setMsgTip(String msgTip) { - this.msgTip = msgTip; - } - - @SuppressWarnings("rawtypes") - public Map getMap() { - return map; - } - - @SuppressWarnings("rawtypes") - public void setMap(Map map) { - this.map = map; - } - -} diff --git a/src/main/java/com/jsh/model/vo/materials/DepotItemModel.java b/src/main/java/com/jsh/model/vo/materials/DepotItemModel.java deleted file mode 100644 index 20d2bba8..00000000 --- a/src/main/java/com/jsh/model/vo/materials/DepotItemModel.java +++ /dev/null @@ -1,385 +0,0 @@ -package com.jsh.model.vo.materials; - -import java.io.InputStream; -import java.io.Serializable; - -@SuppressWarnings("serial") -public class DepotItemModel implements Serializable { - private DepotItemShowModel showModel = new DepotItemShowModel(); - - /** - * ======开始接受页面参数================= - **/ - private Long HeaderId; - private Long MaterialId; - private String MUnit; //计量单位 - private Double OperNumber; - private Double BasicNumber; - private Double UnitPrice; - private Double TaxUnitPrice; //含税单价 - private Double AllPrice; - private String Remark = ""; - private String Img = ""; - - private Long DepotId; - private Long AnotherDepotId; - private Double TaxRate; - private Double TaxMoney; - private Double TaxLastMoney; - private String OtherField1; - private String OtherField2; - private String OtherField3; - private String OtherField4; - private String OtherField5; - private String MType; - - private String Inserted = ""; //json插入记录 - private String Deleted = ""; //json删除记录 - private String Updated = ""; //json修改记录 - - private String HeadIds = ""; //表头集合列表 - private String MaterialIds = ""; //材料列表 - private String MonthTime = ""; //月份 - private Integer ProjectId = null; - private String browserType = ""; - /** - * 文件名称 - */ - private String fileName = ""; - /** - * 分类ID - */ - private Long depotItemID = 0l; - - /** - * 分类IDs 批量操作使用 - */ - private String depotItemIDs = ""; - - /** - * 每页显示的个数 - */ - private int pageSize = 800; - - /** - * 当前页码 - */ - private int pageNo = 1; - - /** - * 用户IP,用户记录操作日志 - */ - private String clientIp = ""; - - - /** - * 输入流,导出excel文件 - */ - private InputStream excelStream; - - private String mpList = ""; //商品属性 - - public DepotItemShowModel getShowModel() { - return showModel; - } - - public void setShowModel(DepotItemShowModel showModel) { - this.showModel = showModel; - } - - public Long getHeaderId() { - return HeaderId; - } - - public void setHeaderId(Long headerId) { - HeaderId = headerId; - } - - public Long getMaterialId() { - return MaterialId; - } - - public void setMaterialId(Long materialId) { - MaterialId = materialId; - } - - public String getMUnit() { - return MUnit; - } - - public void setMUnit(String MUnit) { - this.MUnit = MUnit; - } - - public Double getTaxUnitPrice() { - return TaxUnitPrice; - } - - public void setTaxUnitPrice(Double taxUnitPrice) { - TaxUnitPrice = taxUnitPrice; - } - - public Double getOperNumber() { - return OperNumber; - } - - public void setOperNumber(Double operNumber) { - OperNumber = operNumber; - } - - public Double getBasicNumber() { - return BasicNumber; - } - - public void setBasicNumber(Double basicNumber) { - BasicNumber = basicNumber; - } - - public Double getUnitPrice() { - return UnitPrice; - } - - public void setUnitPrice(Double unitPrice) { - UnitPrice = unitPrice; - } - - public Double getAllPrice() { - return AllPrice; - } - - public void setAllPrice(Double allPrice) { - AllPrice = allPrice; - } - - public String getRemark() { - return Remark; - } - - public void setRemark(String remark) { - Remark = remark; - } - - public String getImg() { - return Img; - } - - public void setImg(String img) { - Img = img; - } - - public Long getDepotItemID() { - return depotItemID; - } - - public void setDepotItemID(Long depotItemID) { - this.depotItemID = depotItemID; - } - - public String getDepotItemIDs() { - return depotItemIDs; - } - - public void setDepotItemIDs(String depotItemIDs) { - this.depotItemIDs = depotItemIDs; - } - - public int getPageSize() { - return pageSize; - } - - public void setPageSize(int pageSize) { - this.pageSize = pageSize; - } - - public int getPageNo() { - return pageNo; - } - - public void setPageNo(int pageNo) { - this.pageNo = pageNo; - } - - public String getClientIp() { - return clientIp; - } - - public void setClientIp(String clientIp) { - this.clientIp = clientIp; - } - - public String getInserted() { - return Inserted; - } - - public void setInserted(String inserted) { - Inserted = inserted; - } - - public String getDeleted() { - return Deleted; - } - - public void setDeleted(String deleted) { - Deleted = deleted; - } - - public String getUpdated() { - return Updated; - } - - public void setUpdated(String updated) { - Updated = updated; - } - - public String getHeadIds() { - return HeadIds; - } - - public void setHeadIds(String headIds) { - HeadIds = headIds; - } - - public String getMonthTime() { - return MonthTime; - } - - public void setMonthTime(String monthTime) { - MonthTime = monthTime; - } - - public Integer getProjectId() { - return ProjectId; - } - - public void setProjectId(Integer projectId) { - ProjectId = projectId; - } - - public String getMaterialIds() { - return MaterialIds; - } - - public void setMaterialIds(String materialIds) { - MaterialIds = materialIds; - } - - public String getBrowserType() { - return browserType; - } - - public void setBrowserType(String browserType) { - this.browserType = browserType; - } - - public String getFileName() { - return fileName; - } - - public void setFileName(String fileName) { - this.fileName = fileName; - } - - public InputStream getExcelStream() { - return excelStream; - } - - public void setExcelStream(InputStream excelStream) { - this.excelStream = excelStream; - } - - public Long getDepotId() { - return DepotId; - } - - public void setDepotId(Long depotId) { - DepotId = depotId; - } - - public Long getAnotherDepotId() { - return AnotherDepotId; - } - - public void setAnotherDepotId(Long anotherDepotId) { - AnotherDepotId = anotherDepotId; - } - - public Double getTaxRate() { - return TaxRate; - } - - public void setTaxRate(Double taxRate) { - TaxRate = taxRate; - } - - public Double getTaxMoney() { - return TaxMoney; - } - - public void setTaxMoney(Double taxMoney) { - TaxMoney = taxMoney; - } - - public Double getTaxLastMoney() { - return TaxLastMoney; - } - - public void setTaxLastMoney(Double taxLastMoney) { - TaxLastMoney = taxLastMoney; - } - - public String getOtherField1() { - return OtherField1; - } - - public void setOtherField1(String otherField1) { - OtherField1 = otherField1; - } - - public String getOtherField2() { - return OtherField2; - } - - public void setOtherField2(String otherField2) { - OtherField2 = otherField2; - } - - public String getOtherField3() { - return OtherField3; - } - - public void setOtherField3(String otherField3) { - OtherField3 = otherField3; - } - - public String getOtherField4() { - return OtherField4; - } - - public void setOtherField4(String otherField4) { - OtherField4 = otherField4; - } - - public String getOtherField5() { - return OtherField5; - } - - public void setOtherField5(String otherField5) { - OtherField5 = otherField5; - } - - public String getMType() { - return MType; - } - - public void setMType(String MType) { - this.MType = MType; - } - - public String getMpList() { - return mpList; - } - - public void setMpList(String mpList) { - this.mpList = mpList; - } -} diff --git a/src/main/java/com/jsh/model/vo/materials/DepotItemShowModel.java b/src/main/java/com/jsh/model/vo/materials/DepotItemShowModel.java deleted file mode 100644 index e4ff69c8..00000000 --- a/src/main/java/com/jsh/model/vo/materials/DepotItemShowModel.java +++ /dev/null @@ -1,19 +0,0 @@ -package com.jsh.model.vo.materials; - -import java.io.Serializable; - -@SuppressWarnings("serial") -public class DepotItemShowModel implements Serializable { - /** - * 提示信息 - */ - private String msgTip = ""; - - public String getMsgTip() { - return msgTip; - } - - public void setMsgTip(String msgTip) { - this.msgTip = msgTip; - } -} diff --git a/src/main/java/com/jsh/model/vo/materials/MaterialCategoryModel.java b/src/main/java/com/jsh/model/vo/materials/MaterialCategoryModel.java deleted file mode 100644 index 1130f417..00000000 --- a/src/main/java/com/jsh/model/vo/materials/MaterialCategoryModel.java +++ /dev/null @@ -1,122 +0,0 @@ -package com.jsh.model.vo.materials; - -import java.io.Serializable; - -@SuppressWarnings("serial") -public class MaterialCategoryModel implements Serializable { - private MaterialCategoryShowModel showModel = new MaterialCategoryShowModel(); - - /**======开始接受页面参数=================**/ - /** - * 名称 - */ - private String Name = ""; - - /** - * 等级 - */ - private Short CategoryLevel; - - /** - * ParentId - */ - private Long ParentId; - - /** - * 分类ID - */ - private Long materialCategoryID = 0l; - - /** - * 分类IDs 批量操作使用 - */ - private String materialCategoryIDs = ""; - - /** - * 每页显示的个数 - */ - private int pageSize = 10; - - /** - * 当前页码 - */ - private int pageNo = 1; - - /** - * 用户IP,用户记录操作日志 - */ - private String clientIp = ""; - - public MaterialCategoryShowModel getShowModel() { - return showModel; - } - - public void setShowModel(MaterialCategoryShowModel showModel) { - this.showModel = showModel; - } - - public String getName() { - return Name; - } - - public void setName(String name) { - Name = name; - } - - public Short getCategoryLevel() { - return CategoryLevel; - } - - public void setCategoryLevel(Short categoryLevel) { - CategoryLevel = categoryLevel; - } - - public Long getParentId() { - return ParentId; - } - - public void setParentId(Long parentId) { - ParentId = parentId; - } - - public Long getMaterialCategoryID() { - return materialCategoryID; - } - - public void setMaterialCategoryID(Long materialCategoryID) { - this.materialCategoryID = materialCategoryID; - } - - public String getMaterialCategoryIDs() { - return materialCategoryIDs; - } - - public void setMaterialCategoryIDs(String materialCategoryIDs) { - this.materialCategoryIDs = materialCategoryIDs; - } - - public int getPageSize() { - return pageSize; - } - - public void setPageSize(int pageSize) { - this.pageSize = pageSize; - } - - public int getPageNo() { - return pageNo; - } - - public void setPageNo(int pageNo) { - this.pageNo = pageNo; - } - - public String getClientIp() { - return clientIp; - } - - public void setClientIp(String clientIp) { - this.clientIp = clientIp; - } - -} diff --git a/src/main/java/com/jsh/model/vo/materials/MaterialCategoryShowModel.java b/src/main/java/com/jsh/model/vo/materials/MaterialCategoryShowModel.java deleted file mode 100644 index 8a451111..00000000 --- a/src/main/java/com/jsh/model/vo/materials/MaterialCategoryShowModel.java +++ /dev/null @@ -1,40 +0,0 @@ -package com.jsh.model.vo.materials; - -import java.io.Serializable; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -@SuppressWarnings("serial") -public class MaterialCategoryShowModel implements Serializable { - /** - * 提示信息 - */ - private String msgTip = ""; - - /** - * 系统数据 - */ - @SuppressWarnings("rawtypes") - private Map map = new HashMap(); - - public String getMsgTip() { - return msgTip; - } - - public void setMsgTip(String msgTip) { - this.msgTip = msgTip; - } - - @SuppressWarnings("rawtypes") - public Map getMap() { - return map; - } - - @SuppressWarnings("rawtypes") - public void setMap(Map map) { - this.map = map; - } - - -} diff --git a/src/main/java/com/jsh/model/vo/materials/MaterialModel.java b/src/main/java/com/jsh/model/vo/materials/MaterialModel.java deleted file mode 100644 index d70b4a37..00000000 --- a/src/main/java/com/jsh/model/vo/materials/MaterialModel.java +++ /dev/null @@ -1,397 +0,0 @@ -package com.jsh.model.vo.materials; - -import java.io.File; -import java.io.InputStream; -import java.io.Serializable; - -@SuppressWarnings("serial") -public class MaterialModel implements Serializable { - private MaterialShowModel showModel = new MaterialShowModel(); - - /**======开始接受页面参数=================**/ - /** - * 名称 - */ - private String Name = ""; - - private String Mfrs = ""; //制造商 - - private Double Packing; //包装(KG/包) - - private Double SafetyStock; //安全存量(KG) - /** - * 型号 - */ - private String Model = ""; - - /** - * 规格 - */ - private String Standard = ""; - - /** - * 颜色 - */ - private String Color = ""; - - /** - * 单位 - */ - private String Unit = ""; - - /** - * 零售价 - */ - private Double RetailPrice; - - /** - * 最低售价 - */ - private Double LowPrice; - - /** - * 预设售价一 - */ - private Double PresetPriceOne; - - /** - * 预设售价二 - */ - private Double PresetPriceTwo; - - /** - * 备注 - */ - private String Remark = ""; - - private Long UnitId; - private String FirstOutUnit; - private String FirstInUnit; - private String PriceStrategy; - - /** - * 导入excel文件 - */ - private File materialFile; - - private Boolean Enabled = true; //是否启用 - - private String OtherField1; - - private String OtherField2; - - private String OtherField3; - - /** - * CategoryId - */ - private Long CategoryId; - - /** - * CategoryIds 用于in子查询 - */ - private String CategoryIds = "1"; - - /** - * 分类ID - */ - private Long materialID = 0l; - - /** - * 分类IDs 批量操作使用 - */ - private String materialIDs = ""; - - /** - * 每页显示的个数 - */ - private int pageSize = 10; - - /** - * 当前页码 - */ - private int pageNo = 1; - - /** - * 用户IP,用户记录操作日志 - */ - private String clientIp = ""; - - private String browserType = ""; //浏览器类型 - private String fileName = ""; //文件名称 - private InputStream excelStream; //输入流,导出excel文件 - - private String mpList = ""; //商品属性 - - public MaterialShowModel getShowModel() { - return showModel; - } - - public void setShowModel(MaterialShowModel showModel) { - this.showModel = showModel; - } - - public String getName() { - return Name; - } - - public void setName(String name) { - Name = name; - } - - public String getMfrs() { - return Mfrs; - } - - public void setMfrs(String mfrs) { - Mfrs = mfrs; - } - - public Double getPacking() { - return Packing; - } - - public void setPacking(Double packing) { - Packing = packing; - } - - public Double getSafetyStock() { - return SafetyStock; - } - - public void setSafetyStock(Double safetyStock) { - SafetyStock = safetyStock; - } - - public String getModel() { - return Model; - } - - public void setModel(String model) { - Model = model; - } - - public String getStandard() { - return Standard; - } - - public void setStandard(String standard) { - Standard = standard; - } - - public String getColor() { - return Color; - } - - public void setColor(String color) { - Color = color; - } - - public String getUnit() { - return Unit; - } - - public void setUnit(String unit) { - Unit = unit; - } - - public Double getRetailPrice() { - return RetailPrice; - } - - public void setRetailPrice(Double retailPrice) { - RetailPrice = retailPrice; - } - - public Double getLowPrice() { - return LowPrice; - } - - public void setLowPrice(Double lowPrice) { - LowPrice = lowPrice; - } - - public Double getPresetPriceOne() { - return PresetPriceOne; - } - - public void setPresetPriceOne(Double presetPriceOne) { - PresetPriceOne = presetPriceOne; - } - - public Double getPresetPriceTwo() { - return PresetPriceTwo; - } - - public void setPresetPriceTwo(Double presetPriceTwo) { - PresetPriceTwo = presetPriceTwo; - } - - public String getRemark() { - return Remark; - } - - public void setRemark(String remark) { - Remark = remark; - } - - public Long getCategoryId() { - return CategoryId; - } - - public void setCategoryId(Long categoryId) { - CategoryId = categoryId; - } - - public Long getMaterialID() { - return materialID; - } - - public void setMaterialID(Long materialID) { - this.materialID = materialID; - } - - public String getMaterialIDs() { - return materialIDs; - } - - public void setMaterialIDs(String materialIDs) { - this.materialIDs = materialIDs; - } - - public int getPageSize() { - return pageSize; - } - - public void setPageSize(int pageSize) { - this.pageSize = pageSize; - } - - public int getPageNo() { - return pageNo; - } - - public void setPageNo(int pageNo) { - this.pageNo = pageNo; - } - - public String getClientIp() { - return clientIp; - } - - public void setClientIp(String clientIp) { - this.clientIp = clientIp; - } - - public String getCategoryIds() { - return CategoryIds; - } - - public void setCategoryIds(String categoryIds) { - CategoryIds = categoryIds; - } - - public Long getUnitId() { - return UnitId; - } - - public void setUnitId(Long unitId) { - UnitId = unitId; - } - - public String getFirstOutUnit() { - return FirstOutUnit; - } - - public void setFirstOutUnit(String firstOutUnit) { - FirstOutUnit = firstOutUnit; - } - - public String getFirstInUnit() { - return FirstInUnit; - } - - public void setFirstInUnit(String firstInUnit) { - FirstInUnit = firstInUnit; - } - - public String getPriceStrategy() { - return PriceStrategy; - } - - public void setPriceStrategy(String priceStrategy) { - PriceStrategy = priceStrategy; - } - - public Boolean getEnabled() { - return Enabled; - } - - public void setEnabled(Boolean enabled) { - Enabled = enabled; - } - - public String getOtherField1() { - return OtherField1; - } - - public void setOtherField1(String otherField1) { - OtherField1 = otherField1; - } - - public String getOtherField2() { - return OtherField2; - } - - public void setOtherField2(String otherField2) { - OtherField2 = otherField2; - } - - public String getOtherField3() { - return OtherField3; - } - - public void setOtherField3(String otherField3) { - OtherField3 = otherField3; - } - - public String getBrowserType() { - return browserType; - } - - public void setBrowserType(String browserType) { - this.browserType = browserType; - } - - public String getFileName() { - return fileName; - } - - public void setFileName(String fileName) { - this.fileName = fileName; - } - - public InputStream getExcelStream() { - return excelStream; - } - - public void setExcelStream(InputStream excelStream) { - this.excelStream = excelStream; - } - - public File getMaterialFile() { - return materialFile; - } - - public void setMaterialFile(File materialFile) { - this.materialFile = materialFile; - } - - public String getMpList() { - return mpList; - } - - public void setMpList(String mpList) { - this.mpList = mpList; - } -} diff --git a/src/main/java/com/jsh/model/vo/materials/MaterialPropertyModel.java b/src/main/java/com/jsh/model/vo/materials/MaterialPropertyModel.java deleted file mode 100644 index f1d99784..00000000 --- a/src/main/java/com/jsh/model/vo/materials/MaterialPropertyModel.java +++ /dev/null @@ -1,121 +0,0 @@ -package com.jsh.model.vo.materials; - -import java.io.Serializable; - -@SuppressWarnings("serial") -public class MaterialPropertyModel implements Serializable { - private MaterialCategoryShowModel showModel = new MaterialCategoryShowModel(); - - /**======开始接受页面参数=================**/ - /** - * 名称 - */ - private String nativeName; - - /** - * 是否启用 - */ - private Boolean enabled = true; - - /** - * 排序 - */ - private String sort; - - /** - * 别名 - */ - private String anotherName; - - /** - * Id编号 - */ - private Long id; - - /** - * 每页显示的个数 - */ - private int pageSize = 10; - - /** - * 当前页码 - */ - private int pageNo = 1; - - /** - * 用户IP,用户记录操作日志 - */ - private String clientIp = ""; - - public MaterialCategoryShowModel getShowModel() { - return showModel; - } - - public void setShowModel(MaterialCategoryShowModel showModel) { - this.showModel = showModel; - } - - public String getNativeName() { - return nativeName; - } - - public void setNativeName(String nativeName) { - this.nativeName = nativeName; - } - - public Boolean getEnabled() { - return enabled; - } - - public void setEnabled(Boolean enabled) { - this.enabled = enabled; - } - - public String getSort() { - return sort; - } - - public void setSort(String sort) { - this.sort = sort; - } - - public String getAnotherName() { - return anotherName; - } - - public void setAnotherName(String anotherName) { - this.anotherName = anotherName; - } - - public Long getId() { - return id; - } - - public void setId(Long id) { - this.id = id; - } - - public int getPageSize() { - return pageSize; - } - - public void setPageSize(int pageSize) { - this.pageSize = pageSize; - } - - public int getPageNo() { - return pageNo; - } - - public void setPageNo(int pageNo) { - this.pageNo = pageNo; - } - - public String getClientIp() { - return clientIp; - } - - public void setClientIp(String clientIp) { - this.clientIp = clientIp; - } -} diff --git a/src/main/java/com/jsh/model/vo/materials/MaterialPropertyShowModel.java b/src/main/java/com/jsh/model/vo/materials/MaterialPropertyShowModel.java deleted file mode 100644 index 4440b500..00000000 --- a/src/main/java/com/jsh/model/vo/materials/MaterialPropertyShowModel.java +++ /dev/null @@ -1,40 +0,0 @@ -package com.jsh.model.vo.materials; - -import java.io.Serializable; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -@SuppressWarnings("serial") -public class MaterialPropertyShowModel implements Serializable { - /** - * 提示信息 - */ - private String msgTip = ""; - - /** - * 系统数据 - */ - @SuppressWarnings("rawtypes") - private Map map = new HashMap(); - - public String getMsgTip() { - return msgTip; - } - - public void setMsgTip(String msgTip) { - this.msgTip = msgTip; - } - - @SuppressWarnings("rawtypes") - public Map getMap() { - return map; - } - - @SuppressWarnings("rawtypes") - public void setMap(Map map) { - this.map = map; - } - - -} diff --git a/src/main/java/com/jsh/model/vo/materials/MaterialShowModel.java b/src/main/java/com/jsh/model/vo/materials/MaterialShowModel.java deleted file mode 100644 index 9056215d..00000000 --- a/src/main/java/com/jsh/model/vo/materials/MaterialShowModel.java +++ /dev/null @@ -1,40 +0,0 @@ -package com.jsh.model.vo.materials; - -import java.io.Serializable; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -@SuppressWarnings("serial") -public class MaterialShowModel implements Serializable { - /** - * 提示信息 - */ - private String msgTip = ""; - - /** - * 系统数据 - */ - @SuppressWarnings("rawtypes") - private Map map = new HashMap(); - - public String getMsgTip() { - return msgTip; - } - - public void setMsgTip(String msgTip) { - this.msgTip = msgTip; - } - - @SuppressWarnings("rawtypes") - public Map getMap() { - return map; - } - - @SuppressWarnings("rawtypes") - public void setMap(Map map) { - this.map = map; - } - - -} diff --git a/src/main/java/com/jsh/model/vo/materials/PersonModel.java b/src/main/java/com/jsh/model/vo/materials/PersonModel.java deleted file mode 100644 index 3c43c69a..00000000 --- a/src/main/java/com/jsh/model/vo/materials/PersonModel.java +++ /dev/null @@ -1,108 +0,0 @@ -package com.jsh.model.vo.materials; - -import java.io.Serializable; - -@SuppressWarnings("serial") -public class PersonModel implements Serializable { - private PersonShowModel showModel = new PersonShowModel(); - - /**======开始接受页面参数=================**/ - /** - * 类型 - */ - private String Type = ""; - /** - * 姓名 - */ - private String Name = ""; - - /** - * 分类ID - */ - private Long personID = 0l; - - /** - * 分类IDs 批量操作使用 - */ - private String personIDs = ""; - - /** - * 每页显示的个数 - */ - private int pageSize = 10; - - /** - * 当前页码 - */ - private int pageNo = 1; - - /** - * 用户IP,用户记录操作日志 - */ - private String clientIp = ""; - - public PersonShowModel getShowModel() { - return showModel; - } - - public void setShowModel(PersonShowModel showModel) { - this.showModel = showModel; - } - - public String getType() { - return Type; - } - - public void setType(String type) { - Type = type; - } - - public String getName() { - return Name; - } - - public void setName(String name) { - Name = name; - } - - public Long getPersonID() { - return personID; - } - - public void setPersonID(Long personID) { - this.personID = personID; - } - - public String getPersonIDs() { - return personIDs; - } - - public void setPersonIDs(String personIDs) { - this.personIDs = personIDs; - } - - public int getPageSize() { - return pageSize; - } - - public void setPageSize(int pageSize) { - this.pageSize = pageSize; - } - - public int getPageNo() { - return pageNo; - } - - public void setPageNo(int pageNo) { - this.pageNo = pageNo; - } - - public String getClientIp() { - return clientIp; - } - - public void setClientIp(String clientIp) { - this.clientIp = clientIp; - } - -} diff --git a/src/main/java/com/jsh/model/vo/materials/PersonShowModel.java b/src/main/java/com/jsh/model/vo/materials/PersonShowModel.java deleted file mode 100644 index 4162fce7..00000000 --- a/src/main/java/com/jsh/model/vo/materials/PersonShowModel.java +++ /dev/null @@ -1,39 +0,0 @@ -package com.jsh.model.vo.materials; - -import java.io.Serializable; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -@SuppressWarnings("serial") -public class PersonShowModel implements Serializable { - /** - * 提示信息 - */ - private String msgTip = ""; - - /** - * 系统数据 - */ - @SuppressWarnings("rawtypes") - private Map map = new HashMap(); - - public String getMsgTip() { - return msgTip; - } - - public void setMsgTip(String msgTip) { - this.msgTip = msgTip; - } - - @SuppressWarnings("rawtypes") - public Map getMap() { - return map; - } - - @SuppressWarnings("rawtypes") - public void setMap(Map map) { - this.map = map; - } - -} diff --git a/src/main/java/com/jsh/service/asset/AssetIService.java b/src/main/java/com/jsh/service/asset/AssetIService.java deleted file mode 100644 index f18a8891..00000000 --- a/src/main/java/com/jsh/service/asset/AssetIService.java +++ /dev/null @@ -1,30 +0,0 @@ -package com.jsh.service.asset; - -import com.jsh.base.BaseIService; -import com.jsh.model.po.Asset; -import com.jsh.util.JshException; -import com.jsh.util.PageUtil; - -import java.io.File; -import java.io.InputStream; - -public interface AssetIService extends BaseIService { - /** - * 导出信息 - * - * @return - */ - InputStream exmportExcel(String isAllPage, PageUtil pageUtil) throws JshException; - - /** - * 导入资产excel文件--表格格式 同 媒资列表 || 资产名称-资产类型-单价-用户-购买时间-状态-位置-资产编号-序列号-有效日期-保修日期-供应商-标签-描述 - * 业务规则:导入时,检查资产名称是否存在,如存在就不考虑表格中资产类型。如资产名不存在,就新建资产名,类型用表格中的,但类型必须是系统中存在的,不存在的不能导入。 - * 资产名称,用户可以添加,其他的应该不能填 - * - * @param assetFile excel表格文件 - * @param isCheck 是否检查 0--手工确定 1--直接导入数据库中 - * @return 错误的表格数据 - * @throws JshException - */ - InputStream importExcel(File assetFile, int isCheck) throws JshException; -} diff --git a/src/main/java/com/jsh/service/asset/AssetService.java b/src/main/java/com/jsh/service/asset/AssetService.java deleted file mode 100644 index 4c24cb1a..00000000 --- a/src/main/java/com/jsh/service/asset/AssetService.java +++ /dev/null @@ -1,629 +0,0 @@ -package com.jsh.service.asset; - -import com.jsh.base.BaseService; -import com.jsh.base.Log; -import com.jsh.dao.asset.AssetIDAO; -import com.jsh.dao.basic.AssetNameIDAO; -import com.jsh.dao.basic.CategoryIDAO; -import com.jsh.dao.basic.SupplierIDAO; -import com.jsh.dao.basic.UserIDAO; -import com.jsh.model.po.Asset; -import com.jsh.model.po.Assetname; -import com.jsh.model.po.Category; -import com.jsh.model.po.Supplier; -import com.jsh.util.AssetConstants; -import com.jsh.util.JshException; -import com.jsh.util.PageUtil; -import com.jsh.util.Tools; -import jxl.Workbook; -import jxl.format.Colour; -import jxl.write.*; -import org.apache.poi.hssf.usermodel.HSSFSheet; -import org.apache.poi.hssf.usermodel.HSSFWorkbook; -import org.apache.poi.ss.usermodel.Cell; -import org.apache.poi.ss.usermodel.DateUtil; -import org.apache.poi.ss.usermodel.Row; - -import java.io.*; -import java.sql.Timestamp; -import java.text.ParseException; -import java.util.*; - -public class AssetService extends BaseService implements AssetIService { - /** - * 初始化加载所有系统基础数据 - */ - @SuppressWarnings({"rawtypes"}) - private static Map mapData = new HashMap(); - /** - * 错误的表格数据 - */ - private static List wrongData = new ArrayList(); - private AssetIDAO assetDao; - private AssetNameIDAO assetNameDao; - private CategoryIDAO categoryDao; - private SupplierIDAO supplierDao; - private UserIDAO userDao; - - /** - * 导出Excel表格 - */ - @Override - public InputStream exmportExcel(String isAllPage, PageUtil pageUtil) throws JshException { - try { - if ("currentPage".equals(isAllPage)) { - assetDao.find(pageUtil); - } else { - pageUtil.setCurPage(0); - pageUtil.setPageSize(0); - assetDao.find(pageUtil); - } - - //将OutputStream转化为InputStream - ByteArrayOutputStream out = new ByteArrayOutputStream(); - putDataOnOutputStream(out, pageUtil.getPageList()); - return new ByteArrayInputStream(out.toByteArray()); - } catch (Exception e) { - Log.errorFileSync(">>>>>>>>>>>>>>>>>>>>>>>导出资产信息为excel表格异常", e); - throw new JshException("export asset info to excel exception", e); - } - } - - @Override - public InputStream importExcel(File assetFile, int isCheck) throws JshException { - //全局变量--每次调用前需要清空数据 - mapData.clear(); - //1、加载系统基础数据 - loadSystemData(); - //2、解析文件成资产数据 - parseFile(assetFile); - - if (null != wrongData && wrongData.size() > 0) { - //将OutputStream转化为InputStream - ByteArrayOutputStream out = new ByteArrayOutputStream(); - putDataOnOutputStream(out, wrongData); - return new ByteArrayInputStream(out.toByteArray()); - } else - return null; - //2、是否直接插入数据库中 -// if(0 == isCheck) -// System.out.println("手动检查"); -// else -// System.out.println("自动检查插入"); - } - - /** - * 初始加载系统基础数据--导入过程中,不用频繁查询数据库内容,影响系统性能。 - * - * @throws JshException - */ - @SuppressWarnings({"unchecked", "rawtypes"}) - private void loadSystemData() throws JshException { - PageUtil pageUtil = new PageUtil(); - pageUtil.setPageSize(0); - pageUtil.setCurPage(0); - try { - Map condition = pageUtil.getAdvSearch(); - condition.put("id_s_order", "desc"); - categoryDao.find(pageUtil); - mapData.put("categoryList", pageUtil.getPageList()); - - supplierDao.find(pageUtil); - mapData.put("supplierList", pageUtil.getPageList()); - - condition.put("isystem_n_eq", 1); - condition.put("id_s_order", "desc"); - userDao.find(pageUtil); - mapData.put("userList", pageUtil.getPageList()); - - //清除搜索条件 防止对查询有影响 - condition.remove("isystem_n_eq"); - - assetNameDao.find(pageUtil); - mapData.put("assetnameList", pageUtil.getPageList()); - } catch (Exception e) { - Log.errorFileSync(">>>>>>>>>>>>>查找系统基础数据信息异常", e); - } - } - - /** - * 解析excel表格 - * - * @param assetFile - */ - @SuppressWarnings("unchecked") - private void parseFile(File assetFile) { - //每次调用前清空 - wrongData.clear(); - int totalRow = 0; - try { - //创建对Excel工作簿文件的引用 - HSSFWorkbook workbook = new HSSFWorkbook(new FileInputStream(assetFile)); - //创建对工作表的引用,获取第一个工作表的内容 - HSSFSheet sheet = workbook.getSheetAt(0); - /** - * ===================================== - * 1、此处要增加文件的验证,如果不是资产文件需要进行特殊的处理,13列 - * 2、文件内容为空处理 - * 3、如果是修改过的文件内容 - */ - Iterator itsheet = sheet.rowIterator(); - while (itsheet.hasNext()) { - //获取当前行数据 - Row row = itsheet.next(); - //获取一行有多少单元格 -// System.out.println(row.getLastCellNum()); - - //excel表格第几行数据 从1开始 0 是表头 - int rowNum = row.getRowNum(); - /** - * 表头跳过不读 - */ - if (AssetConstants.BusinessForExcel.EXCEL_TABLE_HEAD == rowNum) - continue; - - //开始处理excel表格内容 --每行数据读取,同时统计总共行数 - totalRow++; - - //获取excel表格的每格数据内容 - Iterator it = row.cellIterator(); - //资产子类型--添加了一些excel表格数据 - Asset asset = new Asset(); - //保存每个单元格错误类型 - Map cellType = new HashMap(); - - //名称需要类型字段 - Assetname nameModel = null; - //资产名称 - @SuppressWarnings("unused") - String assetname = ""; - - //资产类型 - String categoryStr = ""; - //设置列号 - asset.setRowLineNum(rowNum); - - Cell cell = null; - //判断列号--从零开始 - int cellIndex = 0; - while (it.hasNext()) { - //获取每个单元格对象 - cell = it.next(); - //获取列号 - cellIndex = cell.getColumnIndex(); - //设置此单元格为字符串类型 - cell.setCellType(Cell.CELL_TYPE_STRING); - - Log.infoFileSync("==================excel表格中第" + totalRow + "行的第 " + cellIndex + "列的值为" + cell.getStringCellValue()); - - //每行中数据顺序 资产名称-资产类型-单价-用户-购买时间-状态-位置-资产编号-序列号-有效日期-保修日期-供应商-标签-描述 - switch (cellIndex) { - case AssetConstants.BusinessForExcel.EXCEL_ASSETNAME: - //资产名称是否存在 - boolean isAssetnameExist = false; - //此处添加资产名称处理 - String nameValue = cell.getStringCellValue(); - if (null == nameValue || "".equals(nameValue)) { - Log.errorFileSync(">>>>>>>>>>>>>>>>资产名称没有填写"); - cellType.put(cellIndex, "wrong"); - break; - } - assetname = nameValue; - - List nameList = mapData.get("assetnameList"); - for (Assetname name : nameList) { - //表示名称存在--直接进行保存,不需要判断类型字段 - if (nameValue.equals(name.getAssetname())) { - isAssetnameExist = true; - //直接进行设置 - asset.setAssetname(name); - break; - } - } - //名称不存在 重新创建 - if (!isAssetnameExist) { - isAssetnameExist = false; - nameModel = new Assetname(); - nameModel.setAssetname(nameValue); - nameModel.setIsconsumables((short) 0); - nameModel.setIsystem((short) 1); - nameModel.setDescription(""); - - asset.setAssetnameStr(nameValue); - } - break; - case AssetConstants.BusinessForExcel.EXCEL_CATEGORY: - //此处添加资产类型处理 - //类型信息是否存在 - boolean isCategoryExist = false; - String categoryValue = cell.getStringCellValue(); - if ((null == categoryValue || "".equals(categoryValue)) && null != nameModel) { - Log.errorFileSync(">>>>>>>>>>>>>>>>资产名称没有指定类型"); - cellType.put(cellIndex, "wrong"); - break; - } - categoryStr = categoryValue; - - List categoryList = mapData.get("categoryList"); - for (Category category : categoryList) { - //表示新创建 --名称设置过 不需要再进行处理 - if (category.getAssetname().equals(categoryValue) && null != nameModel) { - isCategoryExist = true; - nameModel.setCategory(category); - asset.setAssetname(nameModel); - assetNameDao.create(nameModel); - break; - } - } - //重新创建 - if (null != nameModel && !isCategoryExist) { - //首先创建类型信息 - Category canew = new Category(); - canew.setAssetname(categoryValue); - canew.setIsystem((short) 1); - canew.setDescription(""); - categoryDao.create(canew); - - nameModel.setCategory(canew); - - assetNameDao.create(nameModel); - - asset.setAssetname(nameModel); - } - //nameModel为空表示 已经处理过类型信息 --此处不需要进行处理 - else { - asset.setCategory(categoryStr); - } - break; - case AssetConstants.BusinessForExcel.EXCEL_PRICE: - //此处添加单价处理 - String priceValue = cell.getStringCellValue(); - //String priceValue = getCellFormatValue(cell); - if (null == priceValue || "".equals(priceValue)) { - Log.errorFileSync(">>>>>>>>>>>>>>>>资产没有填写单价"); - break; - } - //解析价格 - if (Tools.checkStrIsNum(priceValue)) - asset.setPrice(Double.parseDouble(priceValue)); - else { - Log.errorFileSync(">>>>>>>>>>>>>>>>>资产价格不是数字格式"); - cellType.put(cellIndex, "wrong"); - asset.setPrice(0.00d); - asset.setPriceStr(priceValue); - } - break; - case AssetConstants.BusinessForExcel.EXCEL_USER: - //此处添加用户处理--用户信息不需要进行处理 - break; - case AssetConstants.BusinessForExcel.EXCEL_PURCHASE_DATE: - //此处添加购买时间处理--时间不需要处理 - String purchaseValue = cell.getStringCellValue(); - if (null == purchaseValue || "".equals(purchaseValue)) { - Log.errorFileSync(">>>>>>>>>>>>>>>>资产没有填写购买日期"); - break; - } - try { - asset.setPurchasedate(new Timestamp(Tools.parse(purchaseValue, "yyyy-MM-dd").getTime())); - } catch (ParseException e) { - Log.errorFileSync(">>>>>>>>>>>>>>>>>解析购买日期异常", e); - try { - asset.setPurchasedate(new Timestamp(DateUtil.getJavaDate(Double.parseDouble(purchaseValue)).getTime())); - } catch (Exception t) { - asset.setPurchasedateStr(purchaseValue); - cellType.put(cellIndex, "wrong"); - } - } - break; - case AssetConstants.BusinessForExcel.EXCEL_STATUS: - //此处添加状态处理--默认为在库状态 - asset.setStatus((short) 0); - break; - case AssetConstants.BusinessForExcel.EXCEL_LOCATION: - //此处添加位置处理--不需要进行处理 - String locationValue = cell.getStringCellValue(); - if (null == locationValue || "".equals(locationValue)) { - Log.errorFileSync(">>>>>>>>>>>>>>>>资产没有填写位置信息"); - break; - } - asset.setLocation(locationValue); - break; - case AssetConstants.BusinessForExcel.EXCEL_NUM: - //此处添加资产编号处理 - String assetnumValue = cell.getStringCellValue(); - if (null == assetnumValue || "".equals(assetnumValue)) { - Log.errorFileSync(">>>>>>>>>>>>>>>>资产没有填写资产编号"); - break; - } - //设置资产编号 - asset.setAssetnum(assetnumValue); - break; - case AssetConstants.BusinessForExcel.EXCEL_SERIALNO: - //此处添加序列号处理 - String assetseriValue = cell.getStringCellValue(); - if (null == assetseriValue || "".equals(assetseriValue)) { - Log.errorFileSync(">>>>>>>>>>>>>>>>资产没有填写序列号"); - break; - } - //设置资产编号 - asset.setSerialnum(assetseriValue); - break; - case AssetConstants.BusinessForExcel.EXCEL_EXPIRATION_DATE: - //此处添加有效日期处理--不需要处理 - String expirationValue = cell.getStringCellValue(); - if (null == expirationValue || "".equals(expirationValue)) { - Log.errorFileSync(">>>>>>>>>>>>>>>>资产没有有效日期"); - break; - } - - try { - asset.setPeriodofvalidity(new Timestamp(Tools.parse(expirationValue, "yyyy-MM-dd").getTime())); - } catch (ParseException e) { - try { - asset.setPeriodofvalidity(new Timestamp(DateUtil.getJavaDate(Double.parseDouble(expirationValue)).getTime())); - } catch (Exception t) { - Log.errorFileSync(">>>>>>>>>>>>>>>>>解析有效日期异常", t); - asset.setPeriodofvalidityStr(expirationValue); - cellType.put(cellIndex, "wrong"); - } - } - break; - case AssetConstants.BusinessForExcel.EXCEL_WARRANTY_DATE: - //此处添加保修日期处理--不需要处理 - String warrantyValue = cell.getStringCellValue(); - if (null == warrantyValue || "".equals(warrantyValue)) { - Log.errorFileSync(">>>>>>>>>>>>>>>>资产没有保修日期"); - break; - } - try { - asset.setWarrantydate(new Timestamp(Tools.parse(warrantyValue, "yyyy-MM-dd").getTime())); - } catch (ParseException e) { - try { - asset.setWarrantydate(new Timestamp(DateUtil.getJavaDate(Double.parseDouble(warrantyValue)).getTime())); - } catch (Exception t) { - Log.errorFileSync(">>>>>>>>>>>>>>>>>解析保修日期异常", t); - asset.setWarrantydateStr(warrantyValue); - cellType.put(cellIndex, "wrong"); - } - } - break; - case AssetConstants.BusinessForExcel.EXCEL_SUPPLIER: - //此处添加供应商处理 - - String supplierValue = cell.getStringCellValue(); - if (null == supplierValue || "".equals(supplierValue)) { - Log.errorFileSync(">>>>>>>>>>>>>>>>资产没有填写供应商"); - cellType.put(cellIndex, "wrong"); - break; - } - //供应商 - List supplierList = mapData.get("supplierList"); - boolean isSupplerExist = false; - for (Supplier supplier : supplierList) { - if (supplierValue.equals(supplier.getSupplier())) { - isSupplerExist = true; - asset.setSupplier(supplier); - break; - } - } - if (!isSupplerExist) { - Supplier sup = new Supplier(); - sup.setIsystem((short) 1); - sup.setSupplier(supplierValue); - sup.setDescription(""); - supplierDao.create(sup); - //保存供应商信息 - asset.setSupplier(sup); - } - break; - case AssetConstants.BusinessForExcel.EXCEL_LABLE: - //此处添加标签处理 - String lableValue = cell.getStringCellValue(); - if (null == lableValue || "".equals(lableValue)) { - Log.errorFileSync(">>>>>>>>>>>>>>>>资产没有填写标签信息"); - break; - } - asset.setLabels(lableValue); - break; - case AssetConstants.BusinessForExcel.EXCEL_DESC: - //此处添加描述信息处理 - String descValue = cell.getStringCellValue(); - if (null == descValue || "".equals(descValue)) { - Log.errorFileSync(">>>>>>>>>>>>>>>>资产没有填写描述信息"); - break; - } - asset.setDescription(descValue); - break; - } - } - asset.setCreatetime(new Timestamp(Calendar.getInstance().getTime().getTime())); - asset.setUpdatetime(new Timestamp(Calendar.getInstance().getTime().getTime())); - asset.setCellInfo(cellType); - - Log.infoFileSync(totalRow + "行总共有" + cellIndex + "列"); - //资产文件为13列,否则不是资产模板文件--不输入的时候 判断会有问题 暂时去掉 -// if(cellIndex != 13) -// { -// Log.errorFileSync(">>>>>>>>>>>>>>>>>>>>>>导入文件格式不合法,请重新选择文件进行操作!"); -// return; -// } - - //判断完成后增加数据 - if ((null != cellType && cellType.size() > 0) - || asset.getAssetname() == null || asset.getAssetname().getCategory() == null) - wrongData.add(asset); - else { - if (null == asset.getStatus()) - asset.setStatus((short) 0); - assetDao.save(asset); - } - } - } catch (FileNotFoundException e) { - Log.errorFileSync(">>>>>>>>>>>>>>>>>>读取excel文件异常:找不到指定文件!", e); - } catch (IOException e) { - Log.errorFileSync(">>>>>>>>>>>>>>>>>>读取excel文件异常,请确认文件格式是否正确 !", e); - } - Log.infoFileSync("===================excel表格总共有 " + totalRow + " 条记录!"); - } - - /** - * 生成excel表格 - * - * @param os - */ - private void putDataOnOutputStream(OutputStream os, List dataList) { - WritableWorkbook workbook = null; - try { - workbook = Workbook.createWorkbook(os); - WritableSheet sheet = workbook.createSheet("资产详细信息", 0); - //增加列头 - int[] colunmWidth = {30, 30, 10, 15, 20, 10, 30, 30, 30, 20, 20, 20, 30, 80}; - String[] colunmName = {"资产名称", "资产类型", "单价", "用户", "购买时间", "状态", "位置", "资产编号", "序列号", "有效日期", "保修日期", "供应商", "标签", "描述"}; - for (int i = 0; i < colunmWidth.length; i++) { - sheet.setColumnView(i, colunmWidth[i]); - sheet.addCell(new Label(i, 0, colunmName[i])); - } - - if (null != dataList && dataList.size() > 0) { - int i = 1; - for (Asset asset : dataList) { - int j = 0; - Map cellInfo = asset.getCellInfo(); - - //第一列,填充 数据, Label(列,行,值) - sheet.addCell(getLabelInfo(cellInfo, j++, i, asset.getAssetname() == null ? "" : asset.getAssetname().getAssetname(), asset)); - sheet.addCell(getLabelInfo(cellInfo, j++, i, asset.getAssetname() == null || asset.getAssetname().getCategory() == null ? "" : asset.getAssetname().getCategory().getAssetname(), asset)); - sheet.addCell(getLabelInfo(cellInfo, j++, i, asset.getPrice() == null ? "" : asset.getPrice().toString(), asset)); - sheet.addCell(new Label(j++, i, asset.getUser() == null ? "" : asset.getUser().getUsername())); - sheet.addCell(getLabelInfo(cellInfo, j++, i, asset.getPurchasedate() == null ? "" : Tools.getCurrentMonth(asset.getPurchasedate()), asset)); - Short status = asset.getStatus(); - if (null == status) - status = 0; - if (AssetConstants.BusinessForExcel.EXCEl_STATUS_ZAIKU == status) - sheet.addCell(new Label(j++, i, "在库")); - else if (AssetConstants.BusinessForExcel.EXCEl_STATUS_INUSE == status) - sheet.addCell(new Label(j++, i, "在用")); - else if (AssetConstants.BusinessForExcel.EXCEl_STATUS_CONSUME == status) - sheet.addCell(new Label(j++, i, "消费")); - sheet.addCell(new Label(j++, i, asset.getLocation())); - sheet.addCell(new Label(j++, i, asset.getAssetnum())); - sheet.addCell(new Label(j++, i, asset.getSerialnum())); - sheet.addCell(getLabelInfo(cellInfo, j++, i, asset.getPeriodofvalidity() == null ? "" : Tools.getCurrentMonth(asset.getPeriodofvalidity()), asset)); - sheet.addCell(getLabelInfo(cellInfo, j++, i, asset.getWarrantydate() == null ? "" : Tools.getCurrentMonth(asset.getWarrantydate()), asset)); - sheet.addCell(new Label(j++, i, asset.getSupplier() == null ? "" : asset.getSupplier().getSupplier())); - sheet.addCell(new Label(j++, i, asset.getLabels())); - sheet.addCell(new Label(j++, i, asset.getDescription())); - - i++; - } - } - workbook.write(); - workbook.close(); - } catch (Exception e) { - Log.errorFileSync(">>>>>>>>>>>>>>>>>>>>>>>导出资产信息为excel表格异常", e); - } - } - - /** - * 根据错误信息进行提示--execel表格背景设置为红色,表示导入信息有误 - * - * @param cellInfo - * @param cellNum - * @param columnNum - * @param value - * @return - */ - private Label getLabelInfo(Map cellInfo, int cellNum, int columnNum, String value, Asset asset) { - Label label = null; - - //设置背景颜色 - WritableCellFormat cellFormat = new WritableCellFormat(); - try { - cellFormat.setBackground(Colour.RED); - } catch (WriteException e) { - Log.errorFileSync(">>>>>>>>>>>>>>>>>>>>>设置单元格背景颜色错误", e); - } - - if (null == cellInfo || cellInfo.size() == 0) { - if (cellNum == AssetConstants.BusinessForExcel.EXCEL_ASSETNAME) { - if (null == asset.getAssetname() && null != asset.getAssetnameStr()) - label = new Label(cellNum, columnNum, asset.getAssetnameStr()); - else if (null != asset.getAssetname()) - label = new Label(cellNum, columnNum, value); - else - label = new Label(cellNum, columnNum, null, cellFormat); - } else if (cellNum == AssetConstants.BusinessForExcel.EXCEL_CATEGORY) { - if (null != asset.getAssetnameStr() && null == asset.getAssetname()) - label = new Label(cellNum, columnNum, null, cellFormat); - else if (null == asset.getAssetnameStr() && null == asset.getAssetname() - && asset.getCategory() != null && asset.getCategory().length() > 0) - label = new Label(cellNum, columnNum, asset.getCategory()); - else - label = new Label(cellNum, columnNum, value); - } else - label = new Label(cellNum, columnNum, value); - } else { - //表示此单元格有错误 - if (cellInfo.containsKey(cellNum)) { - if (cellNum == AssetConstants.BusinessForExcel.EXCEL_ASSETNAME) { - if (null == asset.getAssetname() && null != asset.getAssetnameStr()) - label = new Label(cellNum, columnNum, asset.getAssetnameStr()); - if (null != asset.getAssetname()) - label = new Label(cellNum, columnNum, asset.getAssetname().getAssetname()); - else - label = new Label(cellNum, columnNum, value, cellFormat); - } else if (cellNum == AssetConstants.BusinessForExcel.EXCEL_CATEGORY) { - if (null != asset.getAssetnameStr() && null == asset.getAssetname()) - label = new Label(cellNum, columnNum, null, cellFormat); - else if (null == asset.getAssetnameStr() && null == asset.getAssetname() - && asset.getCategory() != null && asset.getCategory().length() > 0) - label = new Label(cellNum, columnNum, asset.getCategory()); - } else if (cellNum == AssetConstants.BusinessForExcel.EXCEL_PRICE) - label = new Label(cellNum, columnNum, asset.getPriceStr(), cellFormat); - else if (cellNum == AssetConstants.BusinessForExcel.EXCEL_PURCHASE_DATE) - label = new Label(cellNum, columnNum, asset.getPurchasedateStr(), cellFormat); - else if (cellNum == AssetConstants.BusinessForExcel.EXCEL_WARRANTY_DATE) - label = new Label(cellNum, columnNum, asset.getWarrantydateStr(), cellFormat); - else if (cellNum == AssetConstants.BusinessForExcel.EXCEL_EXPIRATION_DATE) - label = new Label(cellNum, columnNum, asset.getPeriodofvalidityStr(), cellFormat); - else - label = new Label(cellNum, columnNum, value, cellFormat); - } else { - if (null == asset.getAssetname() && null != asset.getAssetnameStr() && cellNum == 0) - label = new Label(cellNum, columnNum, asset.getAssetnameStr()); - else if (null == asset.getAssetnameStr() && null == asset.getAssetname() - && asset.getCategory() != null && asset.getCategory().length() > 0 && cellNum == 1) - label = new Label(cellNum, columnNum, asset.getCategory()); - else - label = new Label(cellNum, columnNum, value); - } - } - return label; - } - - /*=====================以下处理与业务无关的共用方法=================================*/ - public void setAssetDao(AssetIDAO assetDao) { - this.assetDao = assetDao; - } - - public void setAssetNameDao(AssetNameIDAO assetNameDao) { - this.assetNameDao = assetNameDao; - } - - public void setCategoryDao(CategoryIDAO categoryDao) { - this.categoryDao = categoryDao; - } - - public void setSupplierDao(SupplierIDAO supplierDao) { - this.supplierDao = supplierDao; - } - - public void setUserDao(UserIDAO userDao) { - this.userDao = userDao; - } - - @Override - protected Class getEntityClass() { - return Asset.class; - } -} diff --git a/src/main/java/com/jsh/service/asset/ReportIService.java b/src/main/java/com/jsh/service/asset/ReportIService.java deleted file mode 100644 index c8cd3234..00000000 --- a/src/main/java/com/jsh/service/asset/ReportIService.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.jsh.service.asset; - -import com.jsh.model.po.Asset; -import com.jsh.util.JshException; -import com.jsh.util.PageUtil; - -public interface ReportIService { - /** - * 查找报表数据 - * - * @param asset - * @throws JshException - */ - void find(PageUtil asset, String reportType, String reportName) throws JshException; -} diff --git a/src/main/java/com/jsh/service/asset/ReportService.java b/src/main/java/com/jsh/service/asset/ReportService.java deleted file mode 100644 index 6ad9f958..00000000 --- a/src/main/java/com/jsh/service/asset/ReportService.java +++ /dev/null @@ -1,20 +0,0 @@ -package com.jsh.service.asset; - -import com.jsh.dao.asset.ReportIDAO; -import com.jsh.model.po.Asset; -import com.jsh.util.JshException; -import com.jsh.util.PageUtil; - -public class ReportService implements ReportIService { - private ReportIDAO reportDao; - - public void setReportDao(ReportIDAO reportDao) { - this.reportDao = reportDao; - } - - @Override - public void find(PageUtil pageUtil, String reportType, String reportName) throws JshException { - reportDao.find(pageUtil, reportType, reportName); - } - -} diff --git a/src/main/java/com/jsh/service/basic/AccountIService.java b/src/main/java/com/jsh/service/basic/AccountIService.java deleted file mode 100644 index 7e2615c5..00000000 --- a/src/main/java/com/jsh/service/basic/AccountIService.java +++ /dev/null @@ -1,10 +0,0 @@ -package com.jsh.service.basic; - -import com.jsh.base.BaseIService; -import com.jsh.model.po.Account; -import com.jsh.util.JshException; -import com.jsh.util.PageUtil; - -public interface AccountIService extends BaseIService { - public void findAccountInOutList(PageUtil depotHead, Long accountId) throws JshException; -} diff --git a/src/main/java/com/jsh/service/basic/AccountService.java b/src/main/java/com/jsh/service/basic/AccountService.java deleted file mode 100644 index 01d30dfa..00000000 --- a/src/main/java/com/jsh/service/basic/AccountService.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.jsh.service.basic; - -import com.jsh.base.BaseService; -import com.jsh.dao.basic.AccountIDAO; -import com.jsh.model.po.Account; -import com.jsh.util.JshException; -import com.jsh.util.PageUtil; - -public class AccountService extends BaseService implements AccountIService { - @SuppressWarnings("unused") - private AccountIDAO accountDao; - - public void setAccountDao(AccountIDAO accountDao) { - this.accountDao = accountDao; - } - - @Override - protected Class getEntityClass() { - return Account.class; - } - - public void findAccountInOutList(PageUtil pageUtil, Long accountId) throws JshException { - accountDao.findAccountInOutList(pageUtil, accountId); - } - -} diff --git a/src/main/java/com/jsh/service/basic/AppIService.java b/src/main/java/com/jsh/service/basic/AppIService.java deleted file mode 100644 index a5e575be..00000000 --- a/src/main/java/com/jsh/service/basic/AppIService.java +++ /dev/null @@ -1,8 +0,0 @@ -package com.jsh.service.basic; - -import com.jsh.base.BaseIService; -import com.jsh.model.po.App; - -public interface AppIService extends BaseIService { - -} diff --git a/src/main/java/com/jsh/service/basic/AppService.java b/src/main/java/com/jsh/service/basic/AppService.java deleted file mode 100644 index b8140850..00000000 --- a/src/main/java/com/jsh/service/basic/AppService.java +++ /dev/null @@ -1,28 +0,0 @@ -package com.jsh.service.basic; - -import com.jsh.base.BaseService; -import com.jsh.dao.basic.AppIDAO; -import com.jsh.dao.basic.UserBusinessIDAO; -import com.jsh.model.po.App; - -public class AppService extends BaseService implements AppIService { - @SuppressWarnings("unused") - private AppIDAO appDao; - @SuppressWarnings("unused") - private UserBusinessIDAO userBusinessDao; - - - public void setAppDao(AppIDAO appDao) { - this.appDao = appDao; - } - - public void setUserBusinessDao(UserBusinessIDAO userBusinessDao) { - this.userBusinessDao = userBusinessDao; - } - - @Override - protected Class getEntityClass() { - return App.class; - } - -} diff --git a/src/main/java/com/jsh/service/basic/AssetNameIService.java b/src/main/java/com/jsh/service/basic/AssetNameIService.java deleted file mode 100644 index 0505861f..00000000 --- a/src/main/java/com/jsh/service/basic/AssetNameIService.java +++ /dev/null @@ -1,8 +0,0 @@ -package com.jsh.service.basic; - -import com.jsh.base.BaseIService; -import com.jsh.model.po.Assetname; - -public interface AssetNameIService extends BaseIService { - -} diff --git a/src/main/java/com/jsh/service/basic/AssetNameService.java b/src/main/java/com/jsh/service/basic/AssetNameService.java deleted file mode 100644 index bb8340d7..00000000 --- a/src/main/java/com/jsh/service/basic/AssetNameService.java +++ /dev/null @@ -1,19 +0,0 @@ -package com.jsh.service.basic; - -import com.jsh.base.BaseService; -import com.jsh.dao.basic.AssetNameIDAO; -import com.jsh.model.po.Assetname; - -public class AssetNameService extends BaseService implements AssetNameIService { - @SuppressWarnings("unused") - private AssetNameIDAO assetNameDao; - - public void setAssetNameDao(AssetNameIDAO assetNameDao) { - this.assetNameDao = assetNameDao; - } - - @Override - protected Class getEntityClass() { - return Assetname.class; - } -} diff --git a/src/main/java/com/jsh/service/basic/CategoryIService.java b/src/main/java/com/jsh/service/basic/CategoryIService.java deleted file mode 100644 index 3a2aee7f..00000000 --- a/src/main/java/com/jsh/service/basic/CategoryIService.java +++ /dev/null @@ -1,8 +0,0 @@ -package com.jsh.service.basic; - -import com.jsh.base.BaseIService; -import com.jsh.model.po.Category; - -public interface CategoryIService extends BaseIService { - -} diff --git a/src/main/java/com/jsh/service/basic/CategoryService.java b/src/main/java/com/jsh/service/basic/CategoryService.java deleted file mode 100644 index 6482fd58..00000000 --- a/src/main/java/com/jsh/service/basic/CategoryService.java +++ /dev/null @@ -1,20 +0,0 @@ -package com.jsh.service.basic; - -import com.jsh.base.BaseService; -import com.jsh.dao.basic.CategoryIDAO; -import com.jsh.model.po.Category; - -public class CategoryService extends BaseService implements CategoryIService { - @SuppressWarnings("unused") - private CategoryIDAO categoryDao; - - public void setCategoryDao(CategoryIDAO categoryDao) { - this.categoryDao = categoryDao; - } - - @Override - protected Class getEntityClass() { - return Category.class; - } - -} diff --git a/src/main/java/com/jsh/service/basic/DepotIService.java b/src/main/java/com/jsh/service/basic/DepotIService.java deleted file mode 100644 index 47634f95..00000000 --- a/src/main/java/com/jsh/service/basic/DepotIService.java +++ /dev/null @@ -1,8 +0,0 @@ -package com.jsh.service.basic; - -import com.jsh.base.BaseIService; -import com.jsh.model.po.Depot; - -public interface DepotIService extends BaseIService { - -} diff --git a/src/main/java/com/jsh/service/basic/DepotService.java b/src/main/java/com/jsh/service/basic/DepotService.java deleted file mode 100644 index e8833d02..00000000 --- a/src/main/java/com/jsh/service/basic/DepotService.java +++ /dev/null @@ -1,29 +0,0 @@ -package com.jsh.service.basic; - -import com.jsh.base.BaseService; -import com.jsh.dao.basic.DepotIDAO; -import com.jsh.dao.basic.UserBusinessIDAO; -import com.jsh.model.po.Depot; - -public class DepotService extends BaseService implements DepotIService { - @SuppressWarnings("unused") - private DepotIDAO depotDao; - @SuppressWarnings("unused") - private UserBusinessIDAO userBusinessDao; - - - public void setDepotDao(DepotIDAO depotDao) { - this.depotDao = depotDao; - } - - public void setUserBusinessDao(UserBusinessIDAO userBusinessDao) { - this.userBusinessDao = userBusinessDao; - } - - - @Override - protected Class getEntityClass() { - return Depot.class; - } - -} diff --git a/src/main/java/com/jsh/service/basic/FunctionsIService.java b/src/main/java/com/jsh/service/basic/FunctionsIService.java deleted file mode 100644 index 57d89f78..00000000 --- a/src/main/java/com/jsh/service/basic/FunctionsIService.java +++ /dev/null @@ -1,8 +0,0 @@ -package com.jsh.service.basic; - -import com.jsh.base.BaseIService; -import com.jsh.model.po.Functions; - -public interface FunctionsIService extends BaseIService { - -} diff --git a/src/main/java/com/jsh/service/basic/FunctionsService.java b/src/main/java/com/jsh/service/basic/FunctionsService.java deleted file mode 100644 index b9b539cf..00000000 --- a/src/main/java/com/jsh/service/basic/FunctionsService.java +++ /dev/null @@ -1,28 +0,0 @@ -package com.jsh.service.basic; - -import com.jsh.base.BaseService; -import com.jsh.dao.basic.FunctionsIDAO; -import com.jsh.dao.basic.UserBusinessIDAO; -import com.jsh.model.po.Functions; - -public class FunctionsService extends BaseService implements FunctionsIService { - @SuppressWarnings("unused") - private FunctionsIDAO functionsDao; - @SuppressWarnings("unused") - private UserBusinessIDAO userBusinessDao; - - - public void setFunctionsDao(FunctionsIDAO functionsDao) { - this.functionsDao = functionsDao; - } - - public void setUserBusinessDao(UserBusinessIDAO userBusinessDao) { - this.userBusinessDao = userBusinessDao; - } - - @Override - protected Class getEntityClass() { - return Functions.class; - } - -} diff --git a/src/main/java/com/jsh/service/basic/InOutItemIService.java b/src/main/java/com/jsh/service/basic/InOutItemIService.java deleted file mode 100644 index 7702102e..00000000 --- a/src/main/java/com/jsh/service/basic/InOutItemIService.java +++ /dev/null @@ -1,8 +0,0 @@ -package com.jsh.service.basic; - -import com.jsh.base.BaseIService; -import com.jsh.model.po.InOutItem; - -public interface InOutItemIService extends BaseIService { - -} diff --git a/src/main/java/com/jsh/service/basic/InOutItemService.java b/src/main/java/com/jsh/service/basic/InOutItemService.java deleted file mode 100644 index eb3dd2be..00000000 --- a/src/main/java/com/jsh/service/basic/InOutItemService.java +++ /dev/null @@ -1,20 +0,0 @@ -package com.jsh.service.basic; - -import com.jsh.base.BaseService; -import com.jsh.dao.basic.InOutItemIDAO; -import com.jsh.model.po.InOutItem; - -public class InOutItemService extends BaseService implements InOutItemIService { - @SuppressWarnings("unused") - private InOutItemIDAO inOutItemDao; - - public void setInOutItemDao(InOutItemIDAO inOutItemDao) { - this.inOutItemDao = inOutItemDao; - } - - @Override - protected Class getEntityClass() { - return InOutItem.class; - } - -} diff --git a/src/main/java/com/jsh/service/basic/LogIService.java b/src/main/java/com/jsh/service/basic/LogIService.java deleted file mode 100644 index 856f1322..00000000 --- a/src/main/java/com/jsh/service/basic/LogIService.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.jsh.service.basic; - -import com.jsh.base.BaseIService; -import com.jsh.model.po.Logdetails; -import com.jsh.util.JshException; - -public interface LogIService extends BaseIService { - /** - * 增加 - * - * @param t 对象 - * @throws JshException - */ - @Override - void save(Logdetails t); -} diff --git a/src/main/java/com/jsh/service/basic/LogService.java b/src/main/java/com/jsh/service/basic/LogService.java deleted file mode 100644 index 56e064fa..00000000 --- a/src/main/java/com/jsh/service/basic/LogService.java +++ /dev/null @@ -1,29 +0,0 @@ -package com.jsh.service.basic; - -import com.jsh.base.BaseService; -import com.jsh.base.Log; -import com.jsh.dao.basic.LogIDAO; -import com.jsh.model.po.Logdetails; - -public class LogService extends BaseService implements LogIService { - @SuppressWarnings("unused") - private LogIDAO logDao; - - public void setLogDao(LogIDAO logDao) { - this.logDao = logDao; - } - - @Override - protected Class getEntityClass() { - return Logdetails.class; - } - - @Override - public void save(Logdetails t) { - try { - super.save(t); - } catch (Exception e) { - Log.errorFileSync(">>>>>>>>>>>>>>>>创建操作日志异常", e); - } - } -} \ No newline at end of file diff --git a/src/main/java/com/jsh/service/basic/RoleIService.java b/src/main/java/com/jsh/service/basic/RoleIService.java deleted file mode 100644 index 8cc2aaa3..00000000 --- a/src/main/java/com/jsh/service/basic/RoleIService.java +++ /dev/null @@ -1,8 +0,0 @@ -package com.jsh.service.basic; - -import com.jsh.base.BaseIService; -import com.jsh.model.po.Role; - -public interface RoleIService extends BaseIService { - -} diff --git a/src/main/java/com/jsh/service/basic/RoleService.java b/src/main/java/com/jsh/service/basic/RoleService.java deleted file mode 100644 index 3ce8dfd2..00000000 --- a/src/main/java/com/jsh/service/basic/RoleService.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.jsh.service.basic; - -import com.jsh.base.BaseService; -import com.jsh.dao.basic.RoleIDAO; -import com.jsh.dao.basic.UserBusinessIDAO; -import com.jsh.model.po.Role; - -public class RoleService extends BaseService implements RoleIService { - @SuppressWarnings("unused") - private RoleIDAO roleDao; - @SuppressWarnings("unused") - private UserBusinessIDAO userBusinessDao; - - public void setRoleDao(RoleIDAO roleDao) { - this.roleDao = roleDao; - } - - public void setUserBusinessDao(UserBusinessIDAO userBusinessDao) { - this.userBusinessDao = userBusinessDao; - } - - @Override - protected Class getEntityClass() { - return Role.class; - } - -} diff --git a/src/main/java/com/jsh/service/basic/SupplierIService.java b/src/main/java/com/jsh/service/basic/SupplierIService.java deleted file mode 100644 index 02880701..00000000 --- a/src/main/java/com/jsh/service/basic/SupplierIService.java +++ /dev/null @@ -1,17 +0,0 @@ -package com.jsh.service.basic; - -import com.jsh.base.BaseIService; -import com.jsh.model.po.Supplier; -import com.jsh.util.JshException; -import com.jsh.util.PageUtil; - -import java.io.File; -import java.io.InputStream; - -public interface SupplierIService extends BaseIService { - public void batchSetEnable(Boolean enable, String supplierIDs); - - public InputStream exmportExcel(String isAllPage, PageUtil pageUtil) throws JshException; - - public InputStream importExcel(File assetFile) throws JshException; -} diff --git a/src/main/java/com/jsh/service/basic/SupplierService.java b/src/main/java/com/jsh/service/basic/SupplierService.java deleted file mode 100644 index 3eed4ec4..00000000 --- a/src/main/java/com/jsh/service/basic/SupplierService.java +++ /dev/null @@ -1,437 +0,0 @@ -package com.jsh.service.basic; - -import com.jsh.base.BaseService; -import com.jsh.base.Log; -import com.jsh.dao.basic.SupplierIDAO; -import com.jsh.dao.basic.UserBusinessIDAO; -import com.jsh.model.po.Supplier; -import com.jsh.util.JshException; -import com.jsh.util.PageUtil; -import com.jsh.util.SupplierConstants; -import com.jsh.util.Tools; -import jxl.Workbook; -import jxl.format.Colour; -import jxl.write.*; -import org.apache.poi.hssf.usermodel.HSSFSheet; -import org.apache.poi.hssf.usermodel.HSSFWorkbook; -import org.apache.poi.ss.usermodel.Cell; -import org.apache.poi.ss.usermodel.Row; - -import java.io.*; -import java.lang.Boolean; -import java.util.*; - -public class SupplierService extends BaseService implements SupplierIService { - /** - * 初始化加载所有系统基础数据 - */ - @SuppressWarnings({"rawtypes"}) - private static Map mapData = new HashMap(); - /** - * 错误的表格数据 - */ - private static List wrongData = new ArrayList(); - @SuppressWarnings("unused") - private SupplierIDAO supplierDao; - @SuppressWarnings("unused") - private UserBusinessIDAO userBusinessDao; - - /** - * 设置映射基类 - * - * @return - */ - @Override - protected Class getEntityClass() { - return Supplier.class; - } - - public void setSupplierDao(SupplierIDAO supplierDao) { - this.supplierDao = supplierDao; - } - - public void setUserBusinessDao(UserBusinessIDAO userBusinessDao) { - this.userBusinessDao = userBusinessDao; - } - - public void batchSetEnable(Boolean enable, String supplierIDs) { - supplierDao.batchSetEnable(enable, supplierIDs); - } - - /** - * 导出Excel表格 - */ - @Override - public InputStream exmportExcel(String isAllPage, PageUtil pageUtil) throws JshException { - try { - //将OutputStream转化为InputStream - ByteArrayOutputStream out = new ByteArrayOutputStream(); - putDataOnOutputStream(out, pageUtil.getPageList()); - return new ByteArrayInputStream(out.toByteArray()); - } catch (Exception e) { - Log.errorFileSync(">>>>>>>>>>>>>>>>>>>>>>>导出信息为excel表格异常", e); - throw new JshException("导出信息为excel表格异常", e); - } - } - - /** - * 生成excel表格 - * - * @param os - */ - @SuppressWarnings("deprecation") - private void putDataOnOutputStream(OutputStream os, List dataList) { - WritableWorkbook workbook = null; - try { - workbook = Workbook.createWorkbook(os); - WritableSheet sheet = workbook.createSheet("信息报表", 0); - //增加列头 - String[] colunmName = {"名称", "类型", "联系人", "电话", "电子邮箱", "预收款", "期初应收", "期初应付", "备注", "传真", "手机", "地址", "纳税人识别号", "开户行", "账号", "税率", "状态"}; - for (int i = 0; i < colunmName.length; i++) { - sheet.setColumnView(i, 10); - sheet.addCell(new Label(i, 0, colunmName[i])); - } - if (null != dataList && dataList.size() > 0) { - int i = 1; - for (Supplier supplier : dataList) { - int j = 0; - Map cellInfo = supplier.getCellInfo(); - sheet.addCell(new Label(j++, i, supplier.getSupplier())); - sheet.addCell(new Label(j++, i, supplier.getType())); - sheet.addCell(new Label(j++, i, supplier.getContacts() == null ? "" : supplier.getContacts())); - sheet.addCell(new Label(j++, i, supplier.getPhonenum() == null ? "" : supplier.getPhonenum())); - sheet.addCell(new Label(j++, i, supplier.getEmail() == null ? "" : supplier.getEmail())); - sheet.addCell(getLabelInfo(cellInfo, j++, i, supplier.getAdvanceIn() == null ? "" : supplier.getAdvanceIn().toString(), supplier)); - sheet.addCell(getLabelInfo(cellInfo, j++, i, supplier.getBeginNeedGet() == null ? "" : supplier.getBeginNeedGet().toString(), supplier)); - sheet.addCell(getLabelInfo(cellInfo, j++, i, supplier.getBeginNeedPay() == null ? "" : supplier.getBeginNeedPay().toString(), supplier)); - sheet.addCell(new Label(j++, i, supplier.getDescription() == null ? "" : supplier.getDescription())); - sheet.addCell(new Label(j++, i, supplier.getFax() == null ? "" : supplier.getFax())); - sheet.addCell(new Label(j++, i, supplier.getTelephone() == null ? "" : supplier.getTelephone())); - sheet.addCell(new Label(j++, i, supplier.getAddress() == null ? "" : supplier.getAddress())); - sheet.addCell(new Label(j++, i, supplier.getTaxNum() == null ? "" : supplier.getTaxNum())); - sheet.addCell(new Label(j++, i, supplier.getBankName() == null ? "" : supplier.getBankName())); - sheet.addCell(new Label(j++, i, supplier.getAccountNumber() == null ? "" : supplier.getAccountNumber())); - sheet.addCell(getLabelInfo(cellInfo, j++, i, supplier.getTaxRate() == null ? "" : supplier.getTaxRate().toString(), supplier)); - sheet.addCell(new Label(j++, i, supplier.getEnabled() ? "启用" : "禁用")); - i++; - } - } - workbook.write(); - workbook.close(); - } catch (Exception e) { - Log.errorFileSync(">>>>>>>>>>>>>>>>>>>>>>>导出信息为excel表格异常", e); - } - } - - /** - * 根据错误信息进行提示--excel表格背景设置为红色,表示导入信息有误 - * - * @param cellInfo - * @param cellNum - * @param columnNum - * @param value - * @return - */ - private Label getLabelInfo(Map cellInfo, int cellNum, int columnNum, String value, Supplier supplier) { - Label label = null; - - //设置背景颜色 - WritableCellFormat cellFormat = new WritableCellFormat(); - try { - cellFormat.setBackground(Colour.RED); - } catch (WriteException e) { - Log.errorFileSync(">>>>>>>>>>>>>>>>>>>>>设置单元格背景颜色错误", e); - } - - if (null == cellInfo || cellInfo.size() == 0) { - label = new Label(cellNum, columnNum, value); - } else { - //表示此单元格有错误 - if (cellInfo.containsKey(cellNum)) { - if (cellNum == SupplierConstants.BusinessForExcel.EXCEL_ADVANCE_IN) { - label = new Label(cellNum, columnNum, supplier.getAdvanceInStr(), cellFormat); - } else if (cellNum == SupplierConstants.BusinessForExcel.EXCEL_BEGIN_NEED_GET) { - label = new Label(cellNum, columnNum, supplier.getBeginNeedGetStr(), cellFormat); - } else if (cellNum == SupplierConstants.BusinessForExcel.EXCEL_BEGIN_NEED_PAY) { - label = new Label(cellNum, columnNum, supplier.getBeginNeedPayStr(), cellFormat); - } else if (cellNum == SupplierConstants.BusinessForExcel.EXCEL_TAX_RATE) { - label = new Label(cellNum, columnNum, supplier.getTaxRateStr(), cellFormat); - } - } else { - label = new Label(cellNum, columnNum, value); - } - } - return label; - } - - @Override - public InputStream importExcel(File assetFile) throws JshException { - //全局变量--每次调用前需要清空数据 - mapData.clear(); - //2、解析文件成资产数据 - parseFile(assetFile); - - if (null != wrongData && wrongData.size() > 0) { - //将OutputStream转化为InputStream - ByteArrayOutputStream out = new ByteArrayOutputStream(); - putDataOnOutputStream(out, wrongData); - return new ByteArrayInputStream(out.toByteArray()); - } else { - return null; - } - } - - - /** - * 解析excel表格 - * - * @param assetFile - */ - @SuppressWarnings("unchecked") - private void parseFile(File assetFile) { - //每次调用前清空 - wrongData.clear(); - int totalRow = 0; - try { - //创建对Excel工作簿文件的引用 - HSSFWorkbook workbook = new HSSFWorkbook(new FileInputStream(assetFile)); - //创建对工作表的引用,获取第一个工作表的内容 - HSSFSheet sheet = workbook.getSheetAt(0); - /** - * ===================================== - * 1、此处要增加文件的验证,如果不是资产文件需要进行特殊的处理,13列 - * 2、文件内容为空处理 - * 3、如果是修改过的文件内容 - */ - Iterator itsheet = sheet.rowIterator(); - while (itsheet.hasNext()) { - //获取当前行数据 - Row row = itsheet.next(); - //获取一行有多少单元格 -// System.out.println(row.getLastCellNum()); - - //excel表格第几行数据 从1开始 0 是表头 - int rowNum = row.getRowNum(); - /** - * 表头跳过不读 - */ - if (SupplierConstants.BusinessForExcel.EXCEL_TABLE_HEAD == rowNum) - continue; - - //开始处理excel表格内容 --每行数据读取,同时统计总共行数 - totalRow++; - - //获取excel表格的每格数据内容 - Iterator it = row.cellIterator(); - //资产子类型--添加了一些excel表格数据 - Supplier supplier = new Supplier(); - //保存每个单元格错误类型 - Map cellType = new HashMap(); - Boolean hasBeginNeedGet = false; //是否存在期初应付 - //设置列号 - supplier.setRowLineNum(rowNum); - - Cell cell = null; - //判断列号--从零开始 - int cellIndex = 0; - while (it.hasNext()) { - //获取每个单元格对象 - cell = it.next(); - //获取列号 - cellIndex = cell.getColumnIndex(); - //设置此单元格为字符串类型 - cell.setCellType(Cell.CELL_TYPE_STRING); - - Log.infoFileSync("==================excel表格中第" + totalRow + "行的第 " + cellIndex + "列的值为" + cell.getStringCellValue()); - - //每行中数据顺序 "名称","类型","联系人","电话","电子邮箱","预收款","期初应收","期初应付","备注","传真","手机","地址","纳税人识别号","开户行","账号","税率" - switch (cellIndex) { - case SupplierConstants.BusinessForExcel.EXCEL_SUPPLIER: - String supplierName = cell.getStringCellValue(); - if (null == supplierName || "".equals(supplierName)) { - Log.errorFileSync(">>>>>>>>>>>>>>>>列表没有填写(名称)信息"); - break; - } - supplier.setSupplier(supplierName); - break; - case SupplierConstants.BusinessForExcel.EXCEL_TYPE: - String type = cell.getStringCellValue(); - if (null == type || "".equals(type)) { - Log.errorFileSync(">>>>>>>>>>>>>>>>列表没有填写(类型)信息"); - break; - } - supplier.setType(type); - break; - case SupplierConstants.BusinessForExcel.EXCEL_CONTACTS: - String contacts = cell.getStringCellValue(); - if (null == contacts || "".equals(contacts)) { - Log.errorFileSync(">>>>>>>>>>>>>>>>列表没有填写(联系人)信息"); - break; - } - supplier.setContacts(contacts); - break; - case SupplierConstants.BusinessForExcel.EXCEL_PHONE_NUM: - String phoneNum = cell.getStringCellValue(); - if (null == phoneNum || "".equals(phoneNum)) { - Log.errorFileSync(">>>>>>>>>>>>>>>>列表没有填写(电话)信息"); - break; - } - supplier.setPhonenum(phoneNum); - break; - case SupplierConstants.BusinessForExcel.EXCEL_EMAIL: - String email = cell.getStringCellValue(); - if (null == email || "".equals(email)) { - Log.errorFileSync(">>>>>>>>>>>>>>>>列表没有填写(电子邮箱)信息"); - break; - } - supplier.setEmail(email); - break; - case SupplierConstants.BusinessForExcel.EXCEL_ADVANCE_IN: - String advanceIn = cell.getStringCellValue(); - if (null == advanceIn || "".equals(advanceIn)) { - Log.errorFileSync(">>>>>>>>>>>>>>>>列表没有填写(预收款)信息"); - break; - } - if (Tools.checkStrIsNum(advanceIn)) { - supplier.setAdvanceIn(Double.parseDouble(advanceIn)); - } else { - Log.errorFileSync(">>>>>>>>>>>>>>>>>(预收款)不是数字格式"); - cellType.put(cellIndex, "wrong"); - supplier.setAdvanceIn(0.00d); - supplier.setAdvanceInStr(advanceIn); - } - break; - case SupplierConstants.BusinessForExcel.EXCEL_BEGIN_NEED_GET: - String beginNeedGet = cell.getStringCellValue(); - if (null == beginNeedGet || "".equals(beginNeedGet)) { - Log.errorFileSync(">>>>>>>>>>>>>>>>列表没有填写(期初应收)信息"); - break; - } - if (Tools.checkStrIsNum(beginNeedGet) && Double.parseDouble(beginNeedGet) >= 0) { - if (Double.parseDouble(beginNeedGet) > 0) { - hasBeginNeedGet = true; //存在期初应付信息 - } - supplier.setBeginNeedGet(Double.parseDouble(beginNeedGet)); - } else { - Log.errorFileSync(">>>>>>>>>>>>>>>>>(期初应收)不是数字格式"); - cellType.put(cellIndex, "wrong"); - supplier.setBeginNeedGet(0.00d); - supplier.setBeginNeedGetStr(beginNeedGet); - } - break; - case SupplierConstants.BusinessForExcel.EXCEL_BEGIN_NEED_PAY: - String beginNeedPay = cell.getStringCellValue(); - if (null == beginNeedPay || "".equals(beginNeedPay)) { - Log.errorFileSync(">>>>>>>>>>>>>>>>列表没有填写(期初应付)信息"); - break; - } - if (Tools.checkStrIsNum(beginNeedPay) && Double.parseDouble(beginNeedPay) >= 0) { - if (hasBeginNeedGet) { //同时存在不允许 - Log.errorFileSync(">>>>>>>>>>>>>>>>>(期初应付)和期初应收不能同时存在"); - cellType.put(cellIndex, "wrong"); - supplier.setBeginNeedPay(0.00d); - supplier.setBeginNeedPayStr(beginNeedPay); - } else { - supplier.setBeginNeedPay(Double.parseDouble(beginNeedPay)); - } - } else { - Log.errorFileSync(">>>>>>>>>>>>>>>>>(期初应付)不是数字格式"); - cellType.put(cellIndex, "wrong"); - supplier.setBeginNeedPay(0.00d); - supplier.setBeginNeedPayStr(beginNeedPay); - } - break; - case SupplierConstants.BusinessForExcel.EXCEL_DESCRIPTION: - String description = cell.getStringCellValue(); - if (null == description || "".equals(description)) { - Log.errorFileSync(">>>>>>>>>>>>>>>>列表没有填写(备注)信息"); - break; - } - supplier.setDescription(description); - break; - case SupplierConstants.BusinessForExcel.EXCEL_FAX: - String fax = cell.getStringCellValue(); - if (null == fax || "".equals(fax)) { - Log.errorFileSync(">>>>>>>>>>>>>>>>列表没有填写(传真)信息"); - break; - } - supplier.setFax(fax); - break; - case SupplierConstants.BusinessForExcel.EXCEL_TELEPHONE: - String telephone = cell.getStringCellValue(); - if (null == telephone || "".equals(telephone)) { - Log.errorFileSync(">>>>>>>>>>>>>>>>列表没有填写(手机)信息"); - break; - } - supplier.setTelephone(telephone); - break; - case SupplierConstants.BusinessForExcel.EXCEL_ADDRESS: - String address = cell.getStringCellValue(); - if (null == address || "".equals(address)) { - Log.errorFileSync(">>>>>>>>>>>>>>>>列表没有填写(地址)信息"); - break; - } - supplier.setAddress(address); - break; - case SupplierConstants.BusinessForExcel.EXCEL_TAX_NUM: - String taxNum = cell.getStringCellValue(); - if (null == taxNum || "".equals(taxNum)) { - Log.errorFileSync(">>>>>>>>>>>>>>>>列表没有填写(纳税人识别号)信息"); - break; - } - supplier.setTaxNum(taxNum); - break; - case SupplierConstants.BusinessForExcel.EXCEL_BANK_NAME: - String bankName = cell.getStringCellValue(); - if (null == bankName || "".equals(bankName)) { - Log.errorFileSync(">>>>>>>>>>>>>>>>列表没有填写(开户行)信息"); - break; - } - supplier.setBankName(bankName); - break; - case SupplierConstants.BusinessForExcel.EXCEL_ACCOUNT_NUMBER: - String accountNumber = cell.getStringCellValue(); - if (null == accountNumber || "".equals(accountNumber)) { - Log.errorFileSync(">>>>>>>>>>>>>>>>列表没有填写(账号)信息"); - break; - } - supplier.setAccountNumber(accountNumber); - break; - case SupplierConstants.BusinessForExcel.EXCEL_TAX_RATE: - String taxRate = cell.getStringCellValue(); - if (null == taxRate || "".equals(taxRate)) { - Log.errorFileSync(">>>>>>>>>>>>>>>>列表没有填写(税率)信息"); - break; - } - if (Tools.checkStrIsNum(taxRate)) { - supplier.setTaxRate(Double.parseDouble(taxRate)); - } else { - Log.errorFileSync(">>>>>>>>>>>>>>>>>(税率)不是数字格式"); - cellType.put(cellIndex, "wrong"); - supplier.setTaxRate(0.00d); - supplier.setTaxRateStr(taxRate); - } - break; - } - } - supplier.setCellInfo(cellType); - - Log.infoFileSync(totalRow + "行总共有" + cellIndex + "列"); - - //判断完成后增加数据 - if ((null != cellType && cellType.size() > 0) || supplier.getSupplier() == null) { - wrongData.add(supplier); - } else { - supplier.setEnabled(true); - supplier.setIsystem((short) 1); - supplierDao.save(supplier); - } - } - } catch (FileNotFoundException e) { - Log.errorFileSync(">>>>>>>>>>>>>>>>>>读取excel文件异常:找不到指定文件!", e); - } catch (IOException e) { - Log.errorFileSync(">>>>>>>>>>>>>>>>>>读取excel文件异常,请确认文件格式是否正确 !", e); - } - Log.infoFileSync("===================excel表格总共有 " + totalRow + " 条记录!"); - } -} diff --git a/src/main/java/com/jsh/service/basic/SystemConfigIService.java b/src/main/java/com/jsh/service/basic/SystemConfigIService.java deleted file mode 100644 index 5cca2eb9..00000000 --- a/src/main/java/com/jsh/service/basic/SystemConfigIService.java +++ /dev/null @@ -1,8 +0,0 @@ -package com.jsh.service.basic; - -import com.jsh.base.BaseIService; -import com.jsh.model.po.SystemConfig; - -public interface SystemConfigIService extends BaseIService { - -} diff --git a/src/main/java/com/jsh/service/basic/SystemConfigService.java b/src/main/java/com/jsh/service/basic/SystemConfigService.java deleted file mode 100644 index 8d94977a..00000000 --- a/src/main/java/com/jsh/service/basic/SystemConfigService.java +++ /dev/null @@ -1,20 +0,0 @@ -package com.jsh.service.basic; - -import com.jsh.base.BaseService; -import com.jsh.dao.basic.SystemConfigIDAO; -import com.jsh.model.po.SystemConfig; - -public class SystemConfigService extends BaseService implements SystemConfigIService { - @SuppressWarnings("unused") - private SystemConfigIDAO systemConfigDao; - - public void setSystemConfigDao(SystemConfigIDAO systemConfigDao) { - this.systemConfigDao = systemConfigDao; - } - - @Override - protected Class getEntityClass() { - return SystemConfig.class; - } - -} diff --git a/src/main/java/com/jsh/service/basic/UnitIService.java b/src/main/java/com/jsh/service/basic/UnitIService.java deleted file mode 100644 index 630eb252..00000000 --- a/src/main/java/com/jsh/service/basic/UnitIService.java +++ /dev/null @@ -1,8 +0,0 @@ -package com.jsh.service.basic; - -import com.jsh.base.BaseIService; -import com.jsh.model.po.Unit; - -public interface UnitIService extends BaseIService { - -} diff --git a/src/main/java/com/jsh/service/basic/UnitService.java b/src/main/java/com/jsh/service/basic/UnitService.java deleted file mode 100644 index f49d1855..00000000 --- a/src/main/java/com/jsh/service/basic/UnitService.java +++ /dev/null @@ -1,21 +0,0 @@ -package com.jsh.service.basic; - -import com.jsh.base.BaseService; -import com.jsh.dao.basic.UnitIDAO; -import com.jsh.model.po.Unit; - -public class UnitService extends BaseService implements UnitIService { - @SuppressWarnings("unused") - private UnitIDAO unitDao; - - - public void setUnitDao(UnitIDAO unitDao) { - this.unitDao = unitDao; - } - - @Override - protected Class getEntityClass() { - return Unit.class; - } - -} diff --git a/src/main/java/com/jsh/service/basic/UserBusinessIService.java b/src/main/java/com/jsh/service/basic/UserBusinessIService.java deleted file mode 100644 index 94ff0a58..00000000 --- a/src/main/java/com/jsh/service/basic/UserBusinessIService.java +++ /dev/null @@ -1,14 +0,0 @@ -package com.jsh.service.basic; - -import com.jsh.base.BaseIService; -import com.jsh.model.po.UserBusiness; -import com.jsh.util.JshException; -import com.jsh.util.PageUtil; - -public interface UserBusinessIService extends BaseIService { - /* - * 测试一下自定义hql语句 - */ - void find(PageUtil userBusiness, String ceshi) throws JshException; - -} diff --git a/src/main/java/com/jsh/service/basic/UserBusinessService.java b/src/main/java/com/jsh/service/basic/UserBusinessService.java deleted file mode 100644 index 5f883adc..00000000 --- a/src/main/java/com/jsh/service/basic/UserBusinessService.java +++ /dev/null @@ -1,28 +0,0 @@ -package com.jsh.service.basic; - -import com.jsh.base.BaseService; -import com.jsh.dao.basic.UserBusinessIDAO; -import com.jsh.model.po.UserBusiness; -import com.jsh.util.JshException; -import com.jsh.util.PageUtil; - -public class UserBusinessService extends BaseService implements UserBusinessIService { - @SuppressWarnings("unused") - private UserBusinessIDAO userBusinessDao; - - public void setUserBusinessDao(UserBusinessIDAO userBusinessDao) { - this.userBusinessDao = userBusinessDao; - } - - @Override - protected Class getEntityClass() { - return UserBusiness.class; - } - - @Override - public void find(PageUtil pageUtil, String ceshi) throws JshException { - userBusinessDao.find(pageUtil, ceshi); - } - - -} diff --git a/src/main/java/com/jsh/service/basic/UserIService.java b/src/main/java/com/jsh/service/basic/UserIService.java deleted file mode 100644 index 2584e6aa..00000000 --- a/src/main/java/com/jsh/service/basic/UserIService.java +++ /dev/null @@ -1,35 +0,0 @@ -package com.jsh.service.basic; - -import com.jsh.base.BaseIService; -import com.jsh.model.po.Basicuser; -import com.jsh.util.JshException; - -public interface UserIService extends BaseIService { - /** - * 判断用户名是否符合登录条件 - * - * @param username 用户名 String password - * @return int 1、用户名不存在 2、密码不正确 3、黑名单用户 4、符合条件 5、访问后台异常 - */ - int validateUser(String username, String password) throws JshException; - - /** - * 获取用户信息 - * - * @param username - * @return 用户信息 - * @throws JshException - */ - public Basicuser getUser(String username) throws JshException; - - /** - * 检查用户名称是否存在 - * - * @param field 用户属性 - * @param username 用户名称 - * @param userID 供应商ID - * @return true==存在重名 false==不存在 - * @throws JshException - */ - Boolean checkIsNameExist(String field, String username, Long userID) throws JshException; -} diff --git a/src/main/java/com/jsh/service/basic/UserService.java b/src/main/java/com/jsh/service/basic/UserService.java deleted file mode 100644 index 9996bfdf..00000000 --- a/src/main/java/com/jsh/service/basic/UserService.java +++ /dev/null @@ -1,98 +0,0 @@ -package com.jsh.service.basic; - -import com.jsh.base.BaseService; -import com.jsh.base.Log; -import com.jsh.dao.basic.UserIDAO; -import com.jsh.model.po.Basicuser; -import com.jsh.util.ExceptionCodeConstants; -import com.jsh.util.JshException; -import com.jsh.util.PageUtil; - -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -public class UserService extends BaseService implements UserIService { - private PageUtil pageUtil = new PageUtil(); - private Map condition = new HashMap(); - private UserIDAO userDao; - - @Override - public int validateUser(String username, String password) throws JshException { - try { - //全局变量 每次使用前清除 - condition.clear(); - - /**默认是可以登录的*/ - List list = null; - try { - - condition.put("loginame_s_eq", username); - pageUtil.setAdvSearch(condition); - userDao.find(pageUtil); - list = pageUtil.getPageList(); - } catch (Exception e) { - Log.errorFileSync(">>>>>>>>访问验证用户姓名是否存在后台信息异常", e); - return ExceptionCodeConstants.UserExceptionCode.USER_ACCESS_EXCEPTION; - } - - if (null != list && list.size() == 0) - return ExceptionCodeConstants.UserExceptionCode.USER_NOT_EXIST; - - try { - condition.put("loginame_s_eq", username); - condition.put("password_s_eq", password); - pageUtil.setAdvSearch(condition); - userDao.find(pageUtil); - list = pageUtil.getPageList(); - } catch (Exception e) { - Log.errorFileSync(">>>>>>>>>>访问验证用户密码后台信息异常", e); - return ExceptionCodeConstants.UserExceptionCode.USER_ACCESS_EXCEPTION; - } - - if (null != list && list.size() == 0) - return ExceptionCodeConstants.UserExceptionCode.USER_PASSWORD_ERROR; - return ExceptionCodeConstants.UserExceptionCode.USER_CONDITION_FIT; - } catch (Exception e) { - throw new JshException("unknown exception", e); - } - } - - @Override - public Basicuser getUser(String username) throws JshException { - //全局变量 每次使用前清除 - condition.clear(); - condition.put("loginame_s_eq", username); - pageUtil.setAdvSearch(condition); - userDao.find(pageUtil); - List list = pageUtil.getPageList(); - if (null != list && list.size() > 0) - return list.get(0); - else - throw new JshException("no username exist"); - } - - @Override - public Boolean checkIsNameExist(String field, String username, Long userID) throws JshException { - condition.clear(); - condition.put(field + "_s_eq", username); - condition.put("id_n_neq", userID); - pageUtil.setAdvSearch(condition); - userDao.find(pageUtil); - - List dataList = pageUtil.getPageList(); - if (null != dataList && dataList.size() > 0) - return true; - return false; - } - - //==============spring注入等公共方法,与业务无关========================= - public void setUserDao(UserIDAO userDao) { - this.userDao = userDao; - } - - @Override - protected Class getEntityClass() { - return Basicuser.class; - } -} diff --git a/src/main/java/com/jsh/service/materials/AccountHeadIService.java b/src/main/java/com/jsh/service/materials/AccountHeadIService.java deleted file mode 100644 index afadf326..00000000 --- a/src/main/java/com/jsh/service/materials/AccountHeadIService.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.jsh.service.materials; - -import com.jsh.base.BaseIService; -import com.jsh.model.po.AccountHead; -import com.jsh.util.JshException; -import com.jsh.util.PageUtil; - -public interface AccountHeadIService extends BaseIService { - /* - * 获取MaxId - */ - void find(PageUtil accountHead, String maxid) throws JshException; - - void findAllMoney(PageUtil accountHead, Integer supplierId, String type, String mode) throws JshException; -} diff --git a/src/main/java/com/jsh/service/materials/AccountHeadService.java b/src/main/java/com/jsh/service/materials/AccountHeadService.java deleted file mode 100644 index 69599b96..00000000 --- a/src/main/java/com/jsh/service/materials/AccountHeadService.java +++ /dev/null @@ -1,31 +0,0 @@ -package com.jsh.service.materials; - -import com.jsh.base.BaseService; -import com.jsh.dao.materials.AccountHeadIDAO; -import com.jsh.model.po.AccountHead; -import com.jsh.util.JshException; -import com.jsh.util.PageUtil; - -public class AccountHeadService extends BaseService implements AccountHeadIService { - @SuppressWarnings("unused") - private AccountHeadIDAO accountHeadDao; - - - public void setAccountHeadDao(AccountHeadIDAO accountHeadDao) { - this.accountHeadDao = accountHeadDao; - } - - - @Override - protected Class getEntityClass() { - return AccountHead.class; - } - - public void find(PageUtil pageUtil, String maxid) throws JshException { - accountHeadDao.find(pageUtil, maxid); - } - - public void findAllMoney(PageUtil pageUtil, Integer supplierId, String type, String mode) throws JshException { - accountHeadDao.findAllMoney(pageUtil, supplierId, type, mode); - } -} diff --git a/src/main/java/com/jsh/service/materials/AccountItemIService.java b/src/main/java/com/jsh/service/materials/AccountItemIService.java deleted file mode 100644 index b225fa08..00000000 --- a/src/main/java/com/jsh/service/materials/AccountItemIService.java +++ /dev/null @@ -1,8 +0,0 @@ -package com.jsh.service.materials; - -import com.jsh.base.BaseIService; -import com.jsh.model.po.AccountItem; - -public interface AccountItemIService extends BaseIService { - -} diff --git a/src/main/java/com/jsh/service/materials/AccountItemService.java b/src/main/java/com/jsh/service/materials/AccountItemService.java deleted file mode 100644 index 9e9ff19a..00000000 --- a/src/main/java/com/jsh/service/materials/AccountItemService.java +++ /dev/null @@ -1,23 +0,0 @@ -package com.jsh.service.materials; - -import com.jsh.base.BaseService; -import com.jsh.dao.materials.AccountItemIDAO; -import com.jsh.model.po.AccountItem; - -public class AccountItemService extends BaseService implements AccountItemIService { - @SuppressWarnings("unused") - private AccountItemIDAO accoumtItemDao; - - - public void setAccountItemDao(AccountItemIDAO accoumtItemDao) { - this.accoumtItemDao = accoumtItemDao; - } - - - @Override - protected Class getEntityClass() { - return AccountItem.class; - } - - -} diff --git a/src/main/java/com/jsh/service/materials/DepotHeadIService.java b/src/main/java/com/jsh/service/materials/DepotHeadIService.java deleted file mode 100644 index 86cd36db..00000000 --- a/src/main/java/com/jsh/service/materials/DepotHeadIService.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.jsh.service.materials; - -import com.jsh.base.BaseIService; -import com.jsh.model.po.DepotHead; -import com.jsh.util.JshException; -import com.jsh.util.PageUtil; - -public interface DepotHeadIService extends BaseIService { - /* - * 获取MaxId - */ - void find(PageUtil depotHead, String maxid) throws JshException; - - void findAllMoney(PageUtil depotHead, Integer supplierId, String type, String subType, String mode) throws JshException; - - void batchSetStatus(Boolean status, String depotHeadIDs); - - void findInDetail(PageUtil pageUtil, String beginTime, String endTime, String type, Long pid, String dids, Long oId) throws JshException; - - void findInOutMaterialCount(PageUtil pageUtil, String beginTime, String endTime, String type, Long pid, String dids, Long oId) throws JshException; - - void findMaterialsListByHeaderId(PageUtil pageUtil, Long headerId) throws JshException; - - void findStatementAccount(PageUtil pageUtil, String beginTime, String endTime, Long organId, String supType) throws JshException; - - void getHeaderIdByMaterial(PageUtil pageUtil, String materialParam, String depotIds) throws JshException; -} diff --git a/src/main/java/com/jsh/service/materials/DepotHeadService.java b/src/main/java/com/jsh/service/materials/DepotHeadService.java deleted file mode 100644 index 8f65918a..00000000 --- a/src/main/java/com/jsh/service/materials/DepotHeadService.java +++ /dev/null @@ -1,63 +0,0 @@ -package com.jsh.service.materials; - -import com.jsh.base.BaseService; -import com.jsh.dao.materials.DepotHeadIDAO; -import com.jsh.model.po.DepotHead; -import com.jsh.util.JshException; -import com.jsh.util.PageUtil; - -public class DepotHeadService extends BaseService implements DepotHeadIService { - @SuppressWarnings("unused") - private DepotHeadIDAO depotHeadDao; - - - public void setDepotHeadDao(DepotHeadIDAO depotHeadDao) { - this.depotHeadDao = depotHeadDao; - } - - - @Override - protected Class getEntityClass() { - return DepotHead.class; - } - - @Override - public void find(PageUtil pageUtil, String maxid) throws JshException { - depotHeadDao.find(pageUtil, maxid); - } - - @Override - public void findAllMoney(PageUtil pageUtil, Integer supplierId, String type, String subType, String mode) throws JshException { - depotHeadDao.findAllMoney(pageUtil, supplierId, type, subType, mode); - } - - @Override - public void batchSetStatus(Boolean status, String depotHeadIDs) { - depotHeadDao.batchSetStatus(status, depotHeadIDs); - } - - @Override - public void findInDetail(PageUtil pageUtil, String beginTime, String endTime, String type, Long pid, String dids, Long oId) throws JshException { - depotHeadDao.findInDetail(pageUtil, beginTime, endTime, type, pid, dids, oId); - } - - @Override - public void findInOutMaterialCount(PageUtil pageUtil, String beginTime, String endTime, String type, Long pid, String dids, Long oId) throws JshException { - depotHeadDao.findInOutMaterialCount(pageUtil, beginTime, endTime, type, pid, dids, oId); - } - - @Override - public void findMaterialsListByHeaderId(PageUtil pageUtil, Long headerId) throws JshException { - depotHeadDao.findMaterialsListByHeaderId(pageUtil, headerId); - } - - @Override - public void findStatementAccount(PageUtil pageUtil, String beginTime, String endTime, Long organId, String supType) throws JshException { - depotHeadDao.findStatementAccount(pageUtil, beginTime, endTime, organId, supType); - } - - @Override - public void getHeaderIdByMaterial(PageUtil pageUtil, String materialParam, String depotIds) throws JshException { - depotHeadDao.getHeaderIdByMaterial(pageUtil, materialParam, depotIds); - } -} diff --git a/src/main/java/com/jsh/service/materials/DepotItemIService.java b/src/main/java/com/jsh/service/materials/DepotItemIService.java deleted file mode 100644 index 2f7b80c4..00000000 --- a/src/main/java/com/jsh/service/materials/DepotItemIService.java +++ /dev/null @@ -1,30 +0,0 @@ -package com.jsh.service.materials; - -import com.jsh.base.BaseIService; -import com.jsh.model.po.DepotItem; -import com.jsh.util.JshException; -import com.jsh.util.PageUtil; -import net.sf.json.JSONArray; - -import java.io.InputStream; - -public interface DepotItemIService extends BaseIService { - void findByType(PageUtil depotItem, String type, Integer ProjectId, Long MId, String MonthTime, Boolean isPrev) throws JshException; - - void findByTypeAndMaterialId(PageUtil depotItem, String type, Long MId) throws JshException; - - void findDetailByTypeAndMaterialId(PageUtil depotItem, Long MId) throws JshException; - - void findPriceByType(PageUtil depotItem, String type, Integer ProjectId, Long MId, String MonthTime, Boolean isPrev) throws JshException; - - void buyOrSale(PageUtil depotItem, String type, String subType, Long MId, String MonthTime, String sumType) throws JshException; - - void findGiftByType(PageUtil depotItem, String subType, Integer ProjectId, Long MId, String type) throws JshException; - - /** - * 导出信息 - * - * @return - */ - InputStream exmportExcel(String isAllPage, JSONArray dataArray) throws JshException; -} diff --git a/src/main/java/com/jsh/service/materials/DepotItemService.java b/src/main/java/com/jsh/service/materials/DepotItemService.java deleted file mode 100644 index 09c2aea9..00000000 --- a/src/main/java/com/jsh/service/materials/DepotItemService.java +++ /dev/null @@ -1,124 +0,0 @@ -package com.jsh.service.materials; - -import com.jsh.base.BaseService; -import com.jsh.base.Log; -import com.jsh.dao.materials.DepotItemIDAO; -import com.jsh.model.po.DepotItem; -import com.jsh.util.JshException; -import com.jsh.util.PageUtil; -import jxl.Workbook; -import jxl.write.Label; -import jxl.write.WritableSheet; -import jxl.write.WritableWorkbook; -import net.sf.json.JSONArray; -import net.sf.json.JSONObject; - -import java.io.ByteArrayInputStream; -import java.io.ByteArrayOutputStream; -import java.io.InputStream; -import java.io.OutputStream; - -public class DepotItemService extends BaseService implements DepotItemIService { - @SuppressWarnings("unused") - private DepotItemIDAO depotItemDao; - - - public void setDepotItemDao(DepotItemIDAO depotItemDao) { - this.depotItemDao = depotItemDao; - } - - - @Override - protected Class getEntityClass() { - return DepotItem.class; - } - - @Override - public void findByType(PageUtil pageUtil, String type, Integer ProjectId, Long MId, String MonthTime, Boolean isPrev) throws JshException { - depotItemDao.findByType(pageUtil, type, ProjectId, MId, MonthTime, isPrev); - } - - @Override - public void findByTypeAndMaterialId(PageUtil pageUtil, String type, Long MId) throws JshException { - depotItemDao.findByTypeAndMaterialId(pageUtil, type, MId); - } - - @Override - public void findDetailByTypeAndMaterialId(PageUtil pageUtil, Long MId) throws JshException { - depotItemDao.findDetailByTypeAndMaterialId(pageUtil, MId); - } - - @Override - public void findPriceByType(PageUtil pageUtil, String type, Integer ProjectId, Long MId, String MonthTime, Boolean isPrev) throws JshException { - depotItemDao.findPriceByType(pageUtil, type, ProjectId, MId, MonthTime, isPrev); - } - - @Override - public void buyOrSale(PageUtil pageUtil, String type, String subType, Long MId, String MonthTime, String sumType) throws JshException { - depotItemDao.buyOrSale(pageUtil, type, subType, MId, MonthTime, sumType); - } - - @Override - public void findGiftByType(PageUtil pageUtil, String subType, Integer ProjectId, Long MId, String type) throws JshException { - depotItemDao.findGiftByType(pageUtil, subType, ProjectId, MId, type); - } - - /** - * 导出Excel表格 - */ - @Override - public InputStream exmportExcel(String isAllPage, JSONArray dataArray) throws JshException { - try { - //将OutputStream转化为InputStream - ByteArrayOutputStream out = new ByteArrayOutputStream(); - putDataOnOutputStream(out, dataArray); - return new ByteArrayInputStream(out.toByteArray()); - } catch (Exception e) { - Log.errorFileSync(">>>>>>>>>>>>>>>>>>>>>>>导出信息为excel表格异常", e); - throw new JshException("export asset info to excel exception", e); - } - } - - /** - * 生成excel表格 - * - * @param os - */ - @SuppressWarnings("deprecation") - private void putDataOnOutputStream(OutputStream os, JSONArray dataArray) { - WritableWorkbook workbook = null; - try { - workbook = Workbook.createWorkbook(os); - WritableSheet sheet = workbook.createSheet("进销存报表", 0); - //增加列头 - int[] colunmWidth = {10, 10, 10, 10, 10, 10, 15, 15, 15, 15, 15}; - String[] colunmName = {"名称", "型号", "规格", "颜色", "单位", "单价", "上月结存数量", "入库数量", "出库数量", "本月结存数量", "结存金额"}; - for (int i = 0; i < colunmWidth.length; i++) { - sheet.setColumnView(i, colunmWidth[i]); - sheet.addCell(new Label(i, 0, colunmName[i])); - } - if (null != dataArray && dataArray.size() > 0) { - for (int j = 0; j < dataArray.size(); j++) { - JSONObject jo = JSONObject.fromObject(dataArray.get(j)); - sheet.addCell(new Label(0, j + 1, jo.getString("MaterialName"))); - sheet.addCell(new Label(1, j + 1, jo.getString("MaterialModel"))); - sheet.addCell(new Label(2, j + 1, jo.getString("MaterialStandard"))); - sheet.addCell(new Label(3, j + 1, jo.getString("MaterialColor"))); - sheet.addCell(new Label(4, j + 1, jo.getString("MaterialUnit"))); - sheet.addCell(new Label(5, j + 1, jo.getString("UnitPrice"))); - sheet.addCell(new Label(6, j + 1, jo.getString("prevSum"))); - sheet.addCell(new Label(7, j + 1, jo.getString("InSum"))); - sheet.addCell(new Label(8, j + 1, jo.getString("OutSum"))); - sheet.addCell(new Label(9, j + 1, jo.getString("thisSum"))); - double d = Double.parseDouble(jo.getString("thisAllPrice").toString()); - String s1 = String.format("%.2f", d); - sheet.addCell(new Label(10, j + 1, s1)); - } - } - workbook.write(); - workbook.close(); - } catch (Exception e) { - Log.errorFileSync(">>>>>>>>>>>>>>>>>>>>>>>导出资产信息为excel表格异常", e); - } - } -} diff --git a/src/main/java/com/jsh/service/materials/MaterialCategoryIService.java b/src/main/java/com/jsh/service/materials/MaterialCategoryIService.java deleted file mode 100644 index 58cf9ca1..00000000 --- a/src/main/java/com/jsh/service/materials/MaterialCategoryIService.java +++ /dev/null @@ -1,8 +0,0 @@ -package com.jsh.service.materials; - -import com.jsh.base.BaseIService; -import com.jsh.model.po.MaterialCategory; - -public interface MaterialCategoryIService extends BaseIService { - -} diff --git a/src/main/java/com/jsh/service/materials/MaterialCategoryService.java b/src/main/java/com/jsh/service/materials/MaterialCategoryService.java deleted file mode 100644 index a5ebb93a..00000000 --- a/src/main/java/com/jsh/service/materials/MaterialCategoryService.java +++ /dev/null @@ -1,22 +0,0 @@ -package com.jsh.service.materials; - -import com.jsh.base.BaseService; -import com.jsh.dao.materials.MaterialCategoryIDAO; -import com.jsh.model.po.MaterialCategory; - -public class MaterialCategoryService extends BaseService implements MaterialCategoryIService { - @SuppressWarnings("unused") - private MaterialCategoryIDAO materialCategoryDao; - - - public void setMaterialCategoryDao(MaterialCategoryIDAO materialCategoryDao) { - this.materialCategoryDao = materialCategoryDao; - } - - - @Override - protected Class getEntityClass() { - return MaterialCategory.class; - } - -} diff --git a/src/main/java/com/jsh/service/materials/MaterialIService.java b/src/main/java/com/jsh/service/materials/MaterialIService.java deleted file mode 100644 index 83862b4a..00000000 --- a/src/main/java/com/jsh/service/materials/MaterialIService.java +++ /dev/null @@ -1,19 +0,0 @@ -package com.jsh.service.materials; - -import com.jsh.base.BaseIService; -import com.jsh.model.po.Material; -import com.jsh.util.JshException; -import com.jsh.util.PageUtil; - -import java.io.File; -import java.io.InputStream; - -public interface MaterialIService extends BaseIService { - public void batchSetEnable(Boolean enable, String supplierIDs); - - public void findUnitName(PageUtil material, Long mId) throws JshException; - - public InputStream exmportExcel(String isAllPage, PageUtil pageUtil) throws JshException; - - public InputStream importExcel(File materialFile) throws JshException; -} diff --git a/src/main/java/com/jsh/service/materials/MaterialPropertyIService.java b/src/main/java/com/jsh/service/materials/MaterialPropertyIService.java deleted file mode 100644 index 7dc2eca6..00000000 --- a/src/main/java/com/jsh/service/materials/MaterialPropertyIService.java +++ /dev/null @@ -1,8 +0,0 @@ -package com.jsh.service.materials; - -import com.jsh.base.BaseIService; -import com.jsh.model.po.MaterialProperty; - -public interface MaterialPropertyIService extends BaseIService { - -} diff --git a/src/main/java/com/jsh/service/materials/MaterialPropertyService.java b/src/main/java/com/jsh/service/materials/MaterialPropertyService.java deleted file mode 100644 index 73feece7..00000000 --- a/src/main/java/com/jsh/service/materials/MaterialPropertyService.java +++ /dev/null @@ -1,22 +0,0 @@ -package com.jsh.service.materials; - -import com.jsh.base.BaseService; -import com.jsh.dao.materials.MaterialPropertyIDAO; -import com.jsh.model.po.MaterialProperty; - -public class MaterialPropertyService extends BaseService implements MaterialPropertyIService { - @SuppressWarnings("unused") - private MaterialPropertyIDAO materialPropertyDao; - - - public void setMaterialPropertyDao(MaterialPropertyIDAO materialPropertyDao) { - this.materialPropertyDao = materialPropertyDao; - } - - - @Override - protected Class getEntityClass() { - return MaterialProperty.class; - } - -} diff --git a/src/main/java/com/jsh/service/materials/MaterialService.java b/src/main/java/com/jsh/service/materials/MaterialService.java deleted file mode 100644 index c96bfc25..00000000 --- a/src/main/java/com/jsh/service/materials/MaterialService.java +++ /dev/null @@ -1,304 +0,0 @@ -package com.jsh.service.materials; - -import com.jsh.base.BaseService; -import com.jsh.base.Log; -import com.jsh.dao.materials.MaterialIDAO; -import com.jsh.model.po.Material; -import com.jsh.model.po.MaterialCategory; -import com.jsh.util.JshException; -import com.jsh.util.MaterialConstants; -import com.jsh.util.PageUtil; -import com.jsh.util.Tools; -import jxl.Workbook; -import jxl.format.Colour; -import jxl.write.*; -import org.apache.poi.hssf.usermodel.HSSFSheet; -import org.apache.poi.hssf.usermodel.HSSFWorkbook; -import org.apache.poi.ss.usermodel.Cell; -import org.apache.poi.ss.usermodel.Row; - -import java.io.*; -import java.lang.Boolean; -import java.util.*; - -public class MaterialService extends BaseService implements MaterialIService { - /** - * 初始化加载所有系统基础数据 - */ - @SuppressWarnings({"rawtypes"}) - private static Map mapData = new HashMap(); - /** - * 错误的表格数据 - */ - private static List wrongData = new ArrayList(); - @SuppressWarnings("unused") - private MaterialIDAO materialDao; - - public void setMaterialDao(MaterialIDAO materialDao) { - this.materialDao = materialDao; - } - - public void batchSetEnable(Boolean enable, String supplierIDs) { - materialDao.batchSetEnable(enable, supplierIDs); - } - - @Override - public void findUnitName(PageUtil pageUtil, Long mId) throws JshException { - materialDao.findUnitName(pageUtil, mId); - } - - @Override - protected Class getEntityClass() { - return Material.class; - } - - /** - * 导出Excel表格 - */ - @Override - public InputStream exmportExcel(String isAllPage, PageUtil pageUtil) throws JshException { - try { - //将OutputStream转化为InputStream - ByteArrayOutputStream out = new ByteArrayOutputStream(); - putDataOnOutputStream(out, pageUtil.getPageList()); - return new ByteArrayInputStream(out.toByteArray()); - } catch (Exception e) { - Log.errorFileSync(">>>>>>>>>>>>>>>>>>>>>>>导出信息为excel表格异常", e); - throw new JshException("导出信息为excel表格异常", e); - } - } - - /** - * 生成excel表格 - * - * @param os - */ - @SuppressWarnings("deprecation") - private void putDataOnOutputStream(OutputStream os, List dataList) { - WritableWorkbook workbook = null; - try { - workbook = Workbook.createWorkbook(os); - WritableSheet sheet = workbook.createSheet("信息报表", 0); - //增加列头 - String[] colunmName = {"品名", "类型", "型号", "安全存量", "单位", "零售价", "最低售价", "预计采购价", "批发价", "备注", "状态"}; - for (int i = 0; i < colunmName.length; i++) { - sheet.setColumnView(i, 10); - sheet.addCell(new Label(i, 0, colunmName[i])); - } - if (null != dataList && dataList.size() > 0) { - int i = 1; - for (Material material : dataList) { - int j = 0; - Map cellInfo = material.getCellInfo(); - sheet.addCell(new Label(j++, i, material.getName())); - sheet.addCell(new Label(j++, i, material.getMaterialCategory().getName())); - sheet.addCell(new Label(j++, i, material.getModel() == null ? "" : material.getModel())); - sheet.addCell(getLabelInfo(cellInfo, j++, i, material.getSafetyStock() == null ? "" : material.getSafetyStock().toString(), material)); - sheet.addCell(new Label(j++, i, material.getUnit() == null ? "" : material.getUnit())); - sheet.addCell(new Label(j++, i, material.getRetailPrice() == null ? "" : material.getRetailPrice().toString())); - sheet.addCell(new Label(j++, i, material.getLowPrice() == null ? "" : material.getLowPrice().toString())); - sheet.addCell(new Label(j++, i, material.getPresetPriceOne() == null ? "" : material.getPresetPriceOne().toString())); - sheet.addCell(new Label(j++, i, material.getPresetPriceTwo() == null ? "" : material.getPresetPriceTwo().toString())); - sheet.addCell(new Label(j++, i, material.getRemark() == null ? "" : material.getRemark())); - sheet.addCell(new Label(j++, i, material.getEnabled() ? "启用" : "禁用")); - i++; - } - } - workbook.write(); - workbook.close(); - } catch (Exception e) { - Log.errorFileSync(">>>>>>>>>>>>>>>>>>>>>>>导出信息为excel表格异常", e); - } - } - - /** - * 根据错误信息进行提示--excel表格背景设置为红色,表示导入信息有误 - * - * @param cellInfo - * @param cellNum - * @param columnNum - * @param value - * @return - */ - private Label getLabelInfo(Map cellInfo, int cellNum, int columnNum, String value, Material material) { - Label label = null; - - //设置背景颜色 - WritableCellFormat cellFormat = new WritableCellFormat(); - try { - cellFormat.setBackground(Colour.RED); - } catch (WriteException e) { - Log.errorFileSync(">>>>>>>>>>>>>>>>>>>>>设置单元格背景颜色错误", e); - } - - if (null == cellInfo || cellInfo.size() == 0) { - label = new Label(cellNum, columnNum, value); - } else { - //表示此单元格有错误 - if (cellInfo.containsKey(cellNum)) { - if (cellNum == MaterialConstants.BusinessForExcel.EXCEL_SAFETY_STOCK) { - label = new Label(cellNum, columnNum, material.getSafetyStockStr(), cellFormat); - } - } else { - label = new Label(cellNum, columnNum, value); - } - } - return label; - } - - @Override - public InputStream importExcel(File materialFile) throws JshException { - //全局变量--每次调用前需要清空数据 - mapData.clear(); - //2、解析文件成资产数据 - parseFile(materialFile); - - if (null != wrongData && wrongData.size() > 0) { - //将OutputStream转化为InputStream - ByteArrayOutputStream out = new ByteArrayOutputStream(); - putDataOnOutputStream(out, wrongData); - return new ByteArrayInputStream(out.toByteArray()); - } else { - return null; - } - } - - - /** - * 解析excel表格 - * - * @param assetFile - */ - @SuppressWarnings("unchecked") - private void parseFile(File assetFile) { - //每次调用前清空 - wrongData.clear(); - int totalRow = 0; - try { - //创建对Excel工作簿文件的引用 - HSSFWorkbook workbook = new HSSFWorkbook(new FileInputStream(assetFile)); - //创建对工作表的引用,获取第一个工作表的内容 - HSSFSheet sheet = workbook.getSheetAt(0); - /** - * ===================================== - * 1、此处要增加文件的验证,如果不是资产文件需要进行特殊的处理,13列 - * 2、文件内容为空处理 - * 3、如果是修改过的文件内容 - */ - Iterator itsheet = sheet.rowIterator(); - while (itsheet.hasNext()) { - //获取当前行数据 - Row row = itsheet.next(); - - //excel表格第几行数据 从1开始 0 是表头 - int rowNum = row.getRowNum(); - /** - * 表头跳过不读 - */ - if (MaterialConstants.BusinessForExcel.EXCEL_TABLE_HEAD == rowNum) - continue; - - //开始处理excel表格内容 --每行数据读取,同时统计总共行数 - totalRow++; - - //获取excel表格的每格数据内容 - Iterator it = row.cellIterator(); - //资产子类型--添加了一些excel表格数据 - Material material = new Material(); - //保存每个单元格错误类型 - Map cellType = new HashMap(); - //设置列号 - material.setRowLineNum(rowNum); - - Cell cell = null; - //判断列号--从零开始 - int cellIndex = 0; - while (it.hasNext()) { - //获取每个单元格对象 - cell = it.next(); - //获取列号 - cellIndex = cell.getColumnIndex(); - //设置此单元格为字符串类型 - cell.setCellType(Cell.CELL_TYPE_STRING); - - Log.infoFileSync("==================excel表格中第" + totalRow + "行的第 " + cellIndex + "列的值为" + cell.getStringCellValue()); - - //每行中数据顺序 "品名","类型","型号","安全存量","单位","零售价","最低售价","预计采购价","批发价","备注","状态" - switch (cellIndex) { - case MaterialConstants.BusinessForExcel.EXCEL_NAME: - String materialName = cell.getStringCellValue(); - if (null == materialName || "".equals(materialName)) { - Log.errorFileSync(">>>>>>>>>>>>>>>>列表没有填写(品名)信息"); - break; - } - material.setName(materialName); - break; - case MaterialConstants.BusinessForExcel.EXCEL_CATEGORY: - String category = cell.getStringCellValue(); - if (null == category || "".equals(category)) { - Log.errorFileSync(">>>>>>>>>>>>>>>>列表没有填写(类型)信息"); - break; - } - material.setMaterialCategory(new MaterialCategory(1l)); //根目录 - break; - case MaterialConstants.BusinessForExcel.EXCEL_MODEL: - String model = cell.getStringCellValue(); - if (null == model || "".equals(model)) { - Log.errorFileSync(">>>>>>>>>>>>>>>>列表没有填写(型号)信息"); - break; - } - material.setModel(model); - break; - case MaterialConstants.BusinessForExcel.EXCEL_SAFETY_STOCK: - String safetyStock = cell.getStringCellValue(); - if (null == safetyStock || "".equals(safetyStock)) { - Log.errorFileSync(">>>>>>>>>>>>>>>>列表没有填写(安全存量)信息"); - break; - } - if (Tools.checkStrIsNum(safetyStock)) { - material.setSafetyStock(Double.parseDouble(safetyStock)); - } else { - Log.errorFileSync(">>>>>>>>>>>>>>>>>(安全存量)不是数字格式"); - cellType.put(cellIndex, "wrong"); - material.setSafetyStock(0.00d); - material.setSafetyStockStr(safetyStock); - } - break; - case MaterialConstants.BusinessForExcel.EXCEL_UNIT: - String unit = cell.getStringCellValue(); - if (null == unit || "".equals(unit)) { - Log.errorFileSync(">>>>>>>>>>>>>>>>列表没有填写(单位)信息"); - break; - } - material.setUnit(unit); - break; - case MaterialConstants.BusinessForExcel.EXCEL_REMARK: - String remark = cell.getStringCellValue(); - if (null == remark || "".equals(remark)) { - Log.errorFileSync(">>>>>>>>>>>>>>>>列表没有填写(备注)信息"); - break; - } - material.setRemark(remark); - break; - } - } - material.setCellInfo(cellType); - - Log.infoFileSync(totalRow + "行总共有" + cellIndex + "列"); - - //判断完成后增加数据 - if ((null != cellType && cellType.size() > 0) || material.getName() == null) { - wrongData.add(material); - } else { - material.setEnabled(true); - materialDao.save(material); - } - } - } catch (FileNotFoundException e) { - Log.errorFileSync(">>>>>>>>>>>>>>>>>>读取excel文件异常:找不到指定文件!", e); - } catch (IOException e) { - Log.errorFileSync(">>>>>>>>>>>>>>>>>>读取excel文件异常,请确认文件格式是否正确 !", e); - } - Log.infoFileSync("===================excel表格总共有 " + totalRow + " 条记录!"); - } -} diff --git a/src/main/java/com/jsh/service/materials/PersonIService.java b/src/main/java/com/jsh/service/materials/PersonIService.java deleted file mode 100644 index 948a6479..00000000 --- a/src/main/java/com/jsh/service/materials/PersonIService.java +++ /dev/null @@ -1,8 +0,0 @@ -package com.jsh.service.materials; - -import com.jsh.base.BaseIService; -import com.jsh.model.po.Person; - -public interface PersonIService extends BaseIService { - -} diff --git a/src/main/java/com/jsh/service/materials/PersonService.java b/src/main/java/com/jsh/service/materials/PersonService.java deleted file mode 100644 index 1e05c4c4..00000000 --- a/src/main/java/com/jsh/service/materials/PersonService.java +++ /dev/null @@ -1,22 +0,0 @@ -package com.jsh.service.materials; - -import com.jsh.base.BaseService; -import com.jsh.dao.materials.PersonIDAO; -import com.jsh.model.po.Person; - -public class PersonService extends BaseService implements PersonIService { - @SuppressWarnings("unused") - private PersonIDAO personDao; - - - public void setPersonDao(PersonIDAO personDao) { - this.personDao = personDao; - } - - - @Override - protected Class getEntityClass() { - return Person.class; - } - -} diff --git a/src/main/java/com/jsh/util/AssetConstants.java b/src/main/java/com/jsh/util/AssetConstants.java deleted file mode 100644 index b88bdac8..00000000 --- a/src/main/java/com/jsh/util/AssetConstants.java +++ /dev/null @@ -1,121 +0,0 @@ -package com.jsh.util; - -/** - * 定义资产管理常量 - * - * @author jishenghua - */ -public interface AssetConstants { - /** - * 公共常量 - * - * @author jishenghua - */ - public class Common { - - - } - - /** - * 资产常量--导入导出excel表格业务相关 - * - * @author jishenghua - */ - public class BusinessForExcel { - /** - * 资产名称常量 - */ - public static final int EXCEL_ASSETNAME = 0; - - /** - * 资产类型常量 - */ - public static final int EXCEL_CATEGORY = 1; - - /** - * 资产单价 - */ - public static final int EXCEL_PRICE = 2; - - /** - * 用户 - */ - public static final int EXCEL_USER = 3; - - /** - * 购买日期 - */ - public static final int EXCEL_PURCHASE_DATE = 4; - - /** - * 资产状态 - */ - public static final int EXCEL_STATUS = 5; - - /** - * 位置 - */ - public static final int EXCEL_LOCATION = 6; - - /** - * 资产编号 - */ - public static final int EXCEL_NUM = 7; - - /** - * 序列号 - */ - public static final int EXCEL_SERIALNO = 8; - - /** - * 有效日期 - */ - public static final int EXCEL_EXPIRATION_DATE = 9; - - /** - * 保修日期 - */ - public static final int EXCEL_WARRANTY_DATE = 10; - - /** - * 供应商 - */ - public static final int EXCEL_SUPPLIER = 11; - - /** - * 标签 - */ - public static final int EXCEL_LABLE = 12; - - /** - * 描述 - */ - public static final int EXCEL_DESC = 13; - - /** - * 表头 - */ - public static final int EXCEL_TABLE_HEAD = 0; - - /** - * 状态 --在库 - */ - public static final int EXCEl_STATUS_ZAIKU = 0; - - /** - * 状态 --在用 - */ - public static final int EXCEl_STATUS_INUSE = 1; - - /** - * 状态 -- 消费 - */ - public static final int EXCEl_STATUS_CONSUME = 2; - - /** - * action返回excel结果 - */ - public static final String EXCEL = "excel"; - - } -} diff --git a/src/main/java/com/jsh/util/BeanFactoryUtil.java b/src/main/java/com/jsh/util/BeanFactoryUtil.java deleted file mode 100644 index 719cabe4..00000000 --- a/src/main/java/com/jsh/util/BeanFactoryUtil.java +++ /dev/null @@ -1,117 +0,0 @@ -package com.jsh.util; - -import org.springframework.context.ApplicationContext; -import org.springframework.context.support.ClassPathXmlApplicationContext; -import org.springframework.context.support.FileSystemXmlApplicationContext; - -import java.util.HashMap; -import java.util.Map; - -/** - * 获取spring配置中的bean对象,是单例,只会加载一次,请注意使用 - * 注意:此工具类默认处理UI组件WEB-INF目录下的applicationContext.xml配置文件,请注意文件 名和路径 - * - * @author jishenghua - * @version V1.0 - * @qq 7 5 2 7 1 8 9 2 0 - */ -public class BeanFactoryUtil { - private static BeanFactoryUtil defaultBeanFactory; - private static BeanFactoryUtil specialBeanFactory; - - //private ApplicationContext autoLoadAC = null; - private static Map beanMap = new HashMap(); - private ApplicationContext defaultAC = null; - private ApplicationContext specialAC = null; - - //private Logger log = Logger.getLogger(BeanFactoryUtil.class); - - /** - * 私有构造函数,默认为UI组件WEB-INF目录下的applicationContext.xml配置文件 - */ - private BeanFactoryUtil() { - String fileUrl = PathTool.getWebinfPath(); - //这里只对UI组件WEB-INF目录下的applicationContext.xml配置文件 - defaultAC = new FileSystemXmlApplicationContext(new - String[]{fileUrl - + "spring/basic-applicationContext.xml", - fileUrl + "spring/dao-applicationContext.xml"}); - } - - /** - * 私有构造函数,带有文件的classpath路径,可能是非applicationContext.xml文件 - */ - private BeanFactoryUtil(String fileClassPath) { - specialAC = new ClassPathXmlApplicationContext("classpath:" - + fileClassPath); - } - - /** - * 非web.xml方式加载spring配置文件方式的实体实例获取方式 - * - * @param fileClassPath - * @param beanName - * @return - */ - public synchronized static Object getBeanByClassPathAndBeanName( - String fileClassPath, String beanName) { - ApplicationContext ac = beanMap.get(fileClassPath); - if (null == ac) { - ac = new ClassPathXmlApplicationContext("classpath:" - + fileClassPath); - beanMap.put(fileClassPath, ac); - } - return ac.getBean(beanName); - } - - /** - * 获取类实例 - * 默认加载UI组件WEB-INF目录下的applicationContext.xml配置文件 - * - * @return - */ - public synchronized static BeanFactoryUtil getInstance() { - if (null == defaultBeanFactory) { - defaultBeanFactory = new BeanFactoryUtil(); - } - return defaultBeanFactory; - } - - /** - * 获取类实例,这种情况一定是在依赖其他组件时没有在applicationContext.xml加载器spring文件时使用 - * 这种情况请少用 - * - * @param fileClassPath - * @return - */ - @Deprecated - public synchronized static BeanFactoryUtil getInstance(String fileClassPath) { - if (null == specialBeanFactory) { - specialBeanFactory = new BeanFactoryUtil(fileClassPath); - } - return specialBeanFactory; - } - - /** - * 获取UI组件WEB-INF目录下的applicationContext.xml配置文件中配置的bean实例 - * - * @param beanName - * @return - */ - public Object getBean(String beanName) { - return defaultAC.getBean(beanName); - } - - /** - * 获取没有在applicationContext.xml配置文件中引入的spring配置文件,即没有用容器加载过的配置文件 - * 这里为特殊情况下使用,不推荐使用 - * 推荐在applicationContext.xml配置文件中引入需要使用的spring配置文件,然后使用BeanFactoryUtil.getInstance().getBean("")方法 - * - * @param beanName - * @return - */ - @Deprecated - public Object getSpecialBean(String beanName) { - return specialAC.getBean(beanName); - } -} diff --git a/src/main/java/com/jsh/util/JshConstants.java b/src/main/java/com/jsh/util/JshConstants.java deleted file mode 100644 index 91332ef3..00000000 --- a/src/main/java/com/jsh/util/JshConstants.java +++ /dev/null @@ -1,35 +0,0 @@ -package com.jsh.util; - -public interface JshConstants { - /** - * 定义资产管理公共常量 - * - * @author jishenghua - */ - public class Common { - /** - * Info级别日志前缀 - */ - public static final String LOG_INFO_PREFIX = "=========="; - - /** - * error级别日志前缀 - */ - public static final String LOG_ERROR_PREFIX = ">>>>>>>>>>"; - - /** - * debug级别日志前缀 - */ - public static final String LOG_DEBUG_PREFIX = "-----------"; - - /** - * fatal级别日志前缀 - */ - public static final String LOG_FATAL_PREFIX = "$$$$$$$$$$"; - - /** - * warn级别日志前缀 - */ - public static final String LOG_WARN_PREFIX = "##########"; - } -} diff --git a/src/main/java/com/jsh/util/MaterialConstants.java b/src/main/java/com/jsh/util/MaterialConstants.java deleted file mode 100644 index a7987445..00000000 --- a/src/main/java/com/jsh/util/MaterialConstants.java +++ /dev/null @@ -1,84 +0,0 @@ -package com.jsh.util; - -/** - * 定义商品信息常量 - * - * @author jishenghua - */ -public interface MaterialConstants { - /** - * 公共常量 - * - * @author ji sheng hua - */ - public class Common { - - } - - /** - * 常量--导入导出excel表格业务相关 - * - * @author jishenghua - */ - public class BusinessForExcel { - /** - * 名称 - */ - public static final int EXCEL_NAME = 0; - - /** - * 类型 - */ - public static final int EXCEL_CATEGORY = 1; - - /** - * 型号 - */ - public static final int EXCEL_MODEL = 2; - - /** - * 安全存量 - */ - public static final int EXCEL_SAFETY_STOCK = 3; - - /** - * 单位 - */ - public static final int EXCEL_UNIT = 4; - - /** - * 零售价 - */ - public static final int EXCEL_RETAILPRICE = 5; - - /** - * 最低售价 - */ - public static final int EXCEL_LOWPRICE = 6; - - /** - * 预计采购价 - */ - public static final int EXCEL_PRESETPRICEONE = 7; - - /** - * 批发价 - */ - public static final int EXCEL_PRESETPRICETWO = 8; - - /** - * 备注 - */ - public static final int EXCEL_REMARK = 9; - - /** - * 表头 - */ - public static final int EXCEL_TABLE_HEAD = 0; - - /** - * action返回excel结果 - */ - public static final String EXCEL = "excel"; - } -} diff --git a/src/main/java/com/jsh/util/OpenSessionInViewFilterExtend.java b/src/main/java/com/jsh/util/OpenSessionInViewFilterExtend.java deleted file mode 100644 index 224e2543..00000000 --- a/src/main/java/com/jsh/util/OpenSessionInViewFilterExtend.java +++ /dev/null @@ -1,22 +0,0 @@ -package com.jsh.util; - -import org.hibernate.FlushMode; -import org.hibernate.Session; -import org.hibernate.SessionFactory; -import org.springframework.dao.DataAccessResourceFailureException; -import org.springframework.orm.hibernate3.support.OpenSessionInViewFilter; - -public class OpenSessionInViewFilterExtend extends OpenSessionInViewFilter { - @Override - protected Session getSession(SessionFactory sessionFactory) - throws DataAccessResourceFailureException { - this.setFlushMode(FlushMode.AUTO); - return super.getSession(sessionFactory); - } - - @Override - protected void closeSession(Session session, SessionFactory sessionFactory) { - session.flush(); - super.closeSession(session, sessionFactory); - } -} diff --git a/src/main/java/com/jsh/util/PageUtil.java b/src/main/java/com/jsh/util/PageUtil.java deleted file mode 100644 index 3cf286af..00000000 --- a/src/main/java/com/jsh/util/PageUtil.java +++ /dev/null @@ -1,190 +0,0 @@ -package com.jsh.util; - -import java.io.Serializable; -import java.util.ArrayList; -import java.util.Hashtable; -import java.util.List; -import java.util.Map; - -/** - * 分页工具类,实现分页功能 - * - * @author jishenghua - * @version [版本号version01, 2014-2-21] - * @qq 7 5 2 7 1 8 9 2 0 - */ -@SuppressWarnings("serial") -public class PageUtil implements Serializable { - /** - * 总页数,根据总数和单页显示个数进行计算 - */ - private int totalPage = 0; - - /** - * 总个数 - */ - private int totalCount = 0; - - /** - * 当前页码 - */ - private int curPage = 1; - - /** - * 每页显示个数 - */ - private int pageSize = 10; - - /** - * 是否为第一页 - */ - private boolean isFirstPage = false; - /** - * 是否是最后一页 - */ - private boolean isLastPage = false; - - /** - * 是否有上一页 - */ - private boolean hasPrevious = false; - - /** - * 是否有下一页 - */ - private boolean hasNext = false; - - /** - * 返回页面list数组 - */ - private List pageList = new ArrayList(); - - /** - * 页面搜索条件,用map来实现 - */ - private Map advSearch = new Hashtable(); - - public PageUtil() { - - } - - public PageUtil(int totalCount, int pageSize, int curPage, Map adv) { - init(totalCount, pageSize, curPage, adv); - } - - /** - * 初始化页面显示参数 - * - * @param totalCount 总数 - * @param pageSize 页面显示个数 - * @param curPage 当前页面 - */ - public void init(int totalCount, int pageSize, int curPage, Map adv) { - this.totalCount = totalCount; - this.pageSize = pageSize; - this.curPage = curPage; - this.advSearch = adv; - //计算总页数 - if (pageSize != 0) { - this.totalPage = (totalCount + pageSize - 1) / pageSize; - } - if (curPage < 1) { - this.curPage = 1; - } - if (curPage > this.totalPage) { - this.curPage = this.totalPage; - } - if (curPage > 0 && this.totalPage != 1 && curPage < this.totalPage) { - this.hasNext = true; - } - if (curPage > 0 && this.totalPage != 1 && curPage > 1 && curPage <= this.totalPage) { - this.hasPrevious = true; - } - if (curPage == 1) { - this.isFirstPage = true; - } - if (curPage == this.totalPage) { - this.isLastPage = true; - } - } - - public int getTotalPage() { - return totalPage; - } - - public void setTotalPage(int totalPage) { - this.totalPage = totalPage; - } - - public int getTotalCount() { - return totalCount; - } - - public void setTotalCount(int totalCount) { - this.totalCount = totalCount; - } - - public int getCurPage() { - return curPage; - } - - public void setCurPage(int curPage) { - this.curPage = curPage; - } - - public int getPageSize() { - return pageSize; - } - - public void setPageSize(int pageSize) { - this.pageSize = pageSize; - } - - public boolean isFirstPage() { - return isFirstPage; - } - - public void setFirstPage(boolean isFirstPage) { - this.isFirstPage = isFirstPage; - } - - public boolean isLastPage() { - return isLastPage; - } - - public void setLastPage(boolean isLastPage) { - this.isLastPage = isLastPage; - } - - public boolean isHasPrevious() { - return hasPrevious; - } - - public void setHasPrevious(boolean hasPrevious) { - this.hasPrevious = hasPrevious; - } - - public boolean isHasNext() { - return hasNext; - } - - public void setHasNext(boolean hasNext) { - this.hasNext = hasNext; - } - - public List getPageList() { - return pageList; - } - - public void setPageList(List pageList) { - this.pageList = pageList; - } - - public Map getAdvSearch() { - return advSearch; - } - - public void setAdvSearch(Map advSearch) { - this.advSearch = advSearch; - } -} diff --git a/src/main/java/com/jsh/util/PathTool.java b/src/main/java/com/jsh/util/PathTool.java deleted file mode 100644 index 041b9904..00000000 --- a/src/main/java/com/jsh/util/PathTool.java +++ /dev/null @@ -1,76 +0,0 @@ -package com.jsh.util; - -import com.jsh.base.Log; - -import java.io.File; -import java.net.URISyntaxException; -import java.net.URL; - -/** - * 获取应用系统路径 - * - * @author jishenghua - * @qq 7 5 2 7 1 8 9 2 0 - */ -public class PathTool { - - /** - * 获取WEB-INF的绝对路径 - * - * @return - */ - public static String getWebinfPath() { - String webinfPath = ""; - //获取URL对象 - URL url = PathTool.class.getClassLoader().getResource(""); - try { - //获取路径 - webinfPath = url.toURI().getPath(); - //截取路径到WEB-INF结束 -// webinfPath = path.substring(0, path.indexOf("/WEB-INF") + 8); - } catch (URISyntaxException e) { - Log.errorFileSync(">>>>>>>>>>>>>>>>>>>>>>>路径获取异常", e); - } - return webinfPath; - } - - /** - * 获取webapp的绝对路径 - * - * @return - */ - public static String getWebappPath() { - //先获取工程路径 - String projectPath = getProjectPath(); - //获取工程路径的上级路径 - File f = new File(projectPath); - //路径不存在就返回 - if (!f.exists()) { - return projectPath; - } else { - //返回webapp路径 - return f.getParent(); - } - } - - /** - * 获取工程的绝对路径 - * - * @return - */ - public static String getProjectPath() { - String projectPath = ""; - //获取URL对象 - URL url = PathTool.class.getClassLoader().getResource(""); - String path = null; - try { - //获取路径 - path = url.toURI().getPath(); - //截取webapp路径 - projectPath = path.substring(0, path.indexOf("/WEB-INF")); - } catch (URISyntaxException e) { - Log.errorFileSync(">>>>>>>>>>>>>>>>>>>>>>>路径获取异常", e); - } - return projectPath; - } -} diff --git a/src/main/java/com/jsh/util/SearchConditionUtil.java b/src/main/java/com/jsh/util/SearchConditionUtil.java deleted file mode 100644 index 0e8b1e61..00000000 --- a/src/main/java/com/jsh/util/SearchConditionUtil.java +++ /dev/null @@ -1,123 +0,0 @@ -package com.jsh.util; - -import java.util.HashMap; -import java.util.Map; -import java.util.Set; - -/** - * 根据搜索条件拼装成查询hql语句 - * - * @author jishenghua qq:752718920 - */ -public class SearchConditionUtil { - //拼接字符串的前缀空格字符串 - private static final String emptyPrefix = " and "; - - /** - * 根据搜索条件自动拼接成hql搜索语句 - * - * @param condition 搜索条件 规则: - * 1、类型 n--数字 s--字符串 - * 2、属性 eq--等于 neq--不等于 like--像'%XX%' llike--左像'%XX' rlike--右像'XX%' in--包含 gt--大于 gteq--大于等于 lt--小于 lteq--小于等于 - * order--value desc asc gy-- group by - * 示例: - * Map condition = new HashMap(); - * condition.put("supplier_s_like", "aaa"); - * condition.put("contacts_s_llike", "186"); - * condition.put("contacts_s_rlike", "186"); - * condition.put("phonenum_s_eq", null); - * condition.put("email_n_neq", 23); - * condition.put("description_s_order", "desc"); - * @return 封装后的字符串 - */ - public static String getCondition(Map condition) { - StringBuffer hql = new StringBuffer(); - Set key = condition.keySet(); - String groupbyInfo = ""; - String orderInfo = ""; - for (String keyInfo : key) { - /* - * 1、数组为三个 第一个为对象实例的字段 第二个为字段类型 第三个为属性 - * 2、根据分解后的数组拼接搜索条件 - */ - Object valueInfo = condition.get(keyInfo); - if (null != valueInfo && valueInfo.toString().length() > 0) { - String[] searchCondition = keyInfo.split("_"); - if (searchCondition[1].equals("n")) - hql.append(emptyPrefix + searchCondition[0] + getType(searchCondition[2]) + valueInfo); - else if (searchCondition[1].equals("s")) { - if (searchCondition[2].equals("like")) - hql.append(emptyPrefix + searchCondition[0] + getType(searchCondition[2]) + "'%" + valueInfo + "%'"); - else if (searchCondition[2].equals("llike")) - hql.append(emptyPrefix + searchCondition[0] + getType(searchCondition[2]) + "'%" + valueInfo + "'"); - else if (searchCondition[2].equals("rlike")) - hql.append(emptyPrefix + searchCondition[0] + getType(searchCondition[2]) + "'" + valueInfo + "%'"); - else if (searchCondition[2].equals("in")) - hql.append(emptyPrefix + searchCondition[0] + getType(searchCondition[2]) + "(" + valueInfo + ")"); - else if (searchCondition[2].equals("order")) - orderInfo = " order by " + searchCondition[0] + " " + valueInfo; - else if (searchCondition[2].equals("gb")) - groupbyInfo = " group by " + searchCondition[0]; - else - hql.append(emptyPrefix + searchCondition[0] + getType(searchCondition[2]) + "'" + valueInfo + "'"); - } - } - } - return hql.append(groupbyInfo).append(orderInfo).toString(); - } - - /** - * 获取指定类型的符号 - * 属性 eq--等于 neq--不等于 like--像 in--包含 gt--大于 gteq--大于等于 lt--小于 lteq--小于等于 order--value desc asc - * - * @param type - * @return 类型字符串 - */ - private static String getType(String type) { - String typeStr = ""; - if (type.equals("eq")) - typeStr = " = "; - else if (type.equals("neq")) - typeStr = " != "; - else if (type.equals("like")) - typeStr = " like "; - else if (type.equals("llike")) - typeStr = " like "; - else if (type.equals("rlike")) - typeStr = " like "; - else if (type.equals("in")) - typeStr = " in "; - else if (type.equals("gt")) - typeStr = " > "; - else if (type.equals("gteq")) - typeStr = " >= "; - else if (type.equals("lt")) - typeStr = " < "; - else if (type.equals("lteq")) - typeStr = " <= "; - else if (type.equals("order")) - typeStr = " order "; - else if (type.equals("gy")) - typeStr = " group by "; - else - typeStr = "unknown"; - return typeStr; - } - - public static void main(String[] args) { - /** - * 拼接搜索条件 - */ - Map condition = new HashMap(); - condition.put("supplier_s_like", "aaa"); - condition.put("contacts_s_llike", "186"); - condition.put("contacts_s_rlike", "186"); - condition.put("phonenum_s_eq", null); - condition.put("email_n_neq", 23); - condition.put("description_s_order", "desc"); - condition.put("description_s_gb", "aaa"); - - //获取搜索条件拼接 - System.out.println(getCondition(condition)); - } -} diff --git a/src/main/java/com/jsh/util/SessionFilter.java b/src/main/java/com/jsh/util/SessionFilter.java deleted file mode 100644 index cb6a1643..00000000 --- a/src/main/java/com/jsh/util/SessionFilter.java +++ /dev/null @@ -1,64 +0,0 @@ -package com.jsh.util; - -import javax.servlet.*; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import javax.servlet.http.HttpSession; -import java.io.IOException; - -/** - * 用户登录session处理类 - * 过滤session是否超时 - * - * @author jishenghua qq_752718920 - * @version [版本号, 2012-3-6] - * @see [相关类/方法] - * @since - */ -public class SessionFilter implements Filter { - /** - * 初始化过滤器 暂不处理 - * 重载方法 - * - * @param arg0 - * @throws ServletException - */ - - public void init(FilterConfig arg0) - throws ServletException { - - } - - /** - * 判断用户session是否存在 不存在则跳转到登录页面 - * 重载方法 - * - * @param srequest - * @param sresponse - * @param chain - * @throws IOException - * @throws ServletException - */ - public void doFilter(ServletRequest srequest, ServletResponse sresponse, FilterChain chain) - throws IOException, ServletException { - HttpServletRequest request = (HttpServletRequest) srequest; - HttpServletResponse response = (HttpServletResponse) sresponse; - HttpSession session = request.getSession(); - - //获取工程路径 - String path = request.getContextPath(); - String requestURl = request.getRequestURI(); - - if (requestURl.contains("/pages") && null != session.getAttribute("user")) - chain.doFilter(request, response); - else - response.sendRedirect(path + "/logout.jsp"); - } - - /** - * 销毁过滤器 - */ - public void destroy() { - - } -} diff --git a/src/main/java/com/jsh/util/SupplierConstants.java b/src/main/java/com/jsh/util/SupplierConstants.java deleted file mode 100644 index 5a591e3c..00000000 --- a/src/main/java/com/jsh/util/SupplierConstants.java +++ /dev/null @@ -1,115 +0,0 @@ -package com.jsh.util; - -/** - * 定义供应商、客户管理常量 - * - * @author jishenghua - */ -public interface SupplierConstants { - /** - * 公共常量 - * - * @author jishenghua - */ - public class Common { - - } - - /** - * 常量--导入导出excel表格业务相关 - * - * @author jishenghua - */ - public class BusinessForExcel { - /** - * 名称 - */ - public static final int EXCEL_SUPPLIER = 0; - - /** - * 类型 - */ - public static final int EXCEL_TYPE = 1; - - /** - * 联系人 - */ - public static final int EXCEL_CONTACTS = 2; - - /** - * 电话 - */ - public static final int EXCEL_PHONE_NUM = 3; - - /** - * 电子邮箱 - */ - public static final int EXCEL_EMAIL = 4; - - /** - * 预收款 - */ - public static final int EXCEL_ADVANCE_IN = 5; - - /** - * 期初应收 - */ - public static final int EXCEL_BEGIN_NEED_GET = 6; - - /** - * 期初应付 - */ - public static final int EXCEL_BEGIN_NEED_PAY = 7; - - /** - * 备注 - */ - public static final int EXCEL_DESCRIPTION = 8; - - /** - * 传真 - */ - public static final int EXCEL_FAX = 9; - - /** - * 手机 - */ - public static final int EXCEL_TELEPHONE = 10; - - /** - * 地址 - */ - public static final int EXCEL_ADDRESS = 11; - - /** - * 纳税人识别号 - */ - public static final int EXCEL_TAX_NUM = 12; - - /** - * 开户行 - */ - public static final int EXCEL_BANK_NAME = 13; - - /** - * 账号 - */ - public static final int EXCEL_ACCOUNT_NUMBER = 14; - - /** - * 税率 - */ - public static final int EXCEL_TAX_RATE = 15; - - - /** - * 表头 - */ - public static final int EXCEL_TABLE_HEAD = 0; - - /** - * action返回excel结果 - */ - public static final String EXCEL = "excel"; - } -} diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml new file mode 100644 index 00000000..b31e0135 --- /dev/null +++ b/src/main/resources/application.yml @@ -0,0 +1,13 @@ +server: + port: 80 +erpDatasource: + driver-class-name: com.mysql.jdbc.Driver + url: jdbc:mysql://127.0.0.1:3306/jsh_erp?useUnicode=true&characterEncoding=utf8&useCursorFetch=true&defaultFetchSize=500&allowMultiQueries=true&rewriteBatchedStatements=true&useSSL=false + username: root + password: 1234 +web: + front: + base-dir: erp_web +mybatis: + mapperLocations: classpath:mapper_xml/*.xml #一定要对应mapper映射xml文件的所在路径 + executorType: SIMPLE \ No newline at end of file diff --git a/src/main/resources/common/email.properties b/src/main/resources/common/email.properties deleted file mode 100644 index bd530070..00000000 --- a/src/main/resources/common/email.properties +++ /dev/null @@ -1,3 +0,0 @@ -stmp=smtp.126.com -emailname=accountnms@126.com -password=public \ No newline at end of file diff --git a/src/main/resources/common/jdbc.properties b/src/main/resources/common/jdbc.properties deleted file mode 100644 index cf5bf151..00000000 --- a/src/main/resources/common/jdbc.properties +++ /dev/null @@ -1,4 +0,0 @@ -jdbcUrl= jdbc\:mysql\://localhost\:3306/jsh_erp?useUnicode\=true&characterEncoding\=UTF-8 -driverClass= com.mysql.jdbc.Driver -user= root -password= 1234 \ No newline at end of file diff --git a/src/main/resources/common/limitbasicdata.properties b/src/main/resources/common/limitbasicdata.properties deleted file mode 100644 index 6177cad4..00000000 --- a/src/main/resources/common/limitbasicdata.properties +++ /dev/null @@ -1,5 +0,0 @@ -bigtypenum=20 -smalltypenum=20 -consumeForm=20 -consumePlace=20 -emailnum=20 \ No newline at end of file diff --git a/src/main/resources/hibernate/Account.hbm.xml b/src/main/resources/hibernate/Account.hbm.xml deleted file mode 100644 index cbe28d9e..00000000 --- a/src/main/resources/hibernate/Account.hbm.xml +++ /dev/null @@ -1,41 +0,0 @@ - - - - - - - - - - - 名称 - - - - - 编号 - - - - - 期初金额 - - - - - 当前余额 - - - - - 是否设为默认 - - - - - 备注 - - - - diff --git a/src/main/resources/hibernate/AccountHead.hbm.xml b/src/main/resources/hibernate/AccountHead.hbm.xml deleted file mode 100644 index c854333e..00000000 --- a/src/main/resources/hibernate/AccountHead.hbm.xml +++ /dev/null @@ -1,56 +0,0 @@ - - - - - - - - - - - 类型(支出/收入/收款/付款/转账) - - - - - 单位Id(收款/付款单位) - - - - - 经手人Id - - - - - 变动金额(优惠/收款/付款/实付) - - - - - 合计金额 - - - - - 账户(收款/付款) - - - - - 单据编号 - - - - - 单据日期 - - - - - 备注 - - - - diff --git a/src/main/resources/hibernate/AccountItem.hbm.xml b/src/main/resources/hibernate/AccountItem.hbm.xml deleted file mode 100644 index 581854b0..00000000 --- a/src/main/resources/hibernate/AccountItem.hbm.xml +++ /dev/null @@ -1,36 +0,0 @@ - - - - - - - - - - - 表头Id - - - - - 账户Id - - - - - 收支项目Id - - - - - 单项金额 - - - - - 单据备注 - - - - diff --git a/src/main/resources/hibernate/App.hbm.xml b/src/main/resources/hibernate/App.hbm.xml deleted file mode 100644 index 6daa362f..00000000 --- a/src/main/resources/hibernate/App.hbm.xml +++ /dev/null @@ -1,81 +0,0 @@ - - - - - - - - - - - 代号 - - - - - 名称 - - - - - 类型 - - - - - 图标 - - - - - 链接 - - - - - 宽度 - - - - - 高度 - - - - - 拉伸 - - - - - 最大化 - - - - - Flash - - - - - 种类 - - - - - 排序号 - - - - - 备注 - - - - - 启用 - - - - diff --git a/src/main/resources/hibernate/Asset.hbm.xml b/src/main/resources/hibernate/Asset.hbm.xml deleted file mode 100644 index 1bf1e386..00000000 --- a/src/main/resources/hibernate/Asset.hbm.xml +++ /dev/null @@ -1,96 +0,0 @@ - - - - - - - - - - - - - - - - 位置 - - - - - 标签:以空格为分隔符 - - - - - 资产的状态:0==在库,1==在用,2==消费 - - - - - - - - - - 购买价格 - - - - - 购买日期 - - - - - 有效日期 - - - - - 保修日期 - - - - - 资产编号 - - - - - 资产序列号 - - - - - - - - - - 描述信息 - - - - - 资产添加时间,统计报表使用 - - - - - - - - - - - - - - - - - - - diff --git a/src/main/resources/hibernate/Assetname.hbm.xml b/src/main/resources/hibernate/Assetname.hbm.xml deleted file mode 100644 index 45610bdb..00000000 --- a/src/main/resources/hibernate/Assetname.hbm.xml +++ /dev/null @@ -1,34 +0,0 @@ - - - - - - - - - - - 资产名称 - - - - - - - - 是否系统自带 0==系统 1==非系统 - - - - - 描述信息 - - - - - 是否为耗材 0==否 1==是 耗材状态只能是消费 - - - - diff --git a/src/main/resources/hibernate/Basicuser.hbm.xml b/src/main/resources/hibernate/Basicuser.hbm.xml deleted file mode 100644 index e6abb717..00000000 --- a/src/main/resources/hibernate/Basicuser.hbm.xml +++ /dev/null @@ -1,69 +0,0 @@ - - - - - - - - - - - 用户姓名--例如张三 - - - - - 登录用户名--可能为空 - - - - - 登陆密码 - - - - - 职位 - - - - - 所属部门 - - - - - 电子邮箱 - - - - - 手机号码 - - - - - 是否为管理者 0==管理者 1==员工 - - - - - 是否系统自带数据 - - - - - 用户状态 - - - - - 用户描述信息 - - - - - - - diff --git a/src/main/resources/hibernate/Category.hbm.xml b/src/main/resources/hibernate/Category.hbm.xml deleted file mode 100644 index 0e808600..00000000 --- a/src/main/resources/hibernate/Category.hbm.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - - - 资产类型名称 - - - - - 是否系统自带 0==系统 1==非系统 - - - - - 描述信息 - - - - diff --git a/src/main/resources/hibernate/Depot.hbm.xml b/src/main/resources/hibernate/Depot.hbm.xml deleted file mode 100644 index 8fe3df57..00000000 --- a/src/main/resources/hibernate/Depot.hbm.xml +++ /dev/null @@ -1,46 +0,0 @@ - - - - - - - - - - - 仓库名称 - - - - - 仓库地址 - - - - - 仓储费 - - - - - 搬运费 - - - - - 类型 - - - - - 排序 - - - - - 描述 - - - - diff --git a/src/main/resources/hibernate/DepotHead.hbm.xml b/src/main/resources/hibernate/DepotHead.hbm.xml deleted file mode 100644 index f4ee9e95..00000000 --- a/src/main/resources/hibernate/DepotHead.hbm.xml +++ /dev/null @@ -1,146 +0,0 @@ - - - - - - - - - - - 类型(出库/入库) - - - - - 出入库分类(销售、采购、调拨等) - - - - - 仓库id(停用) - - - - - 初始票据号 - - - - - 票据号 - - - - - 操作员名字 - - - - - 创建时间 - - - - - 出入库时间 - - - - - 供应商或客户Id - - - - - 经手人Id - - - - - 业务员(可以多个) - - - - - 账户Id - - - - - 单据总金额(收款/付款) - - - - - 多账户ID列表 - - - - - 多账户金额列表 - - - - - 优惠率 - - - - - 优惠金额 - - - - - 优惠后金额 - - - - - 销售或采购费用 - - - - - 销售或采购费用涉及项目Id数组(包括快递、招待等) - - - - - 销售或采购费用涉及项目(包括快递、招待等) - - - - - 结算天数 - - - - - 调拨时,对方仓库Id(停用) - - - - - 合计金额 - - - - - 付款类型(现金、记账等) - - - - - 单据状态(未审核、已审核) - - - - - 备注 - - - - diff --git a/src/main/resources/hibernate/DepotItem.hbm.xml b/src/main/resources/hibernate/DepotItem.hbm.xml deleted file mode 100644 index 343a6662..00000000 --- a/src/main/resources/hibernate/DepotItem.hbm.xml +++ /dev/null @@ -1,111 +0,0 @@ - - - - - - - - - - - 主表Id - - - - - 商品Id - - - - - 商品计量单位 - - - - - 数量 - - - - - 基础数量,如kg、瓶 - - - - - 单价 - - - - - 含税单价 - - - - - 金额 - - - - - 仓库ID(库存是统计出来的) - - - - - 调拨时,对方仓库Id - - - - - 税率 - - - - - 税额 - - - - - 价税合计 - - - - - 自定义字段1-品名 - - - - - 自定义字段2-型号 - - - - - 自定义字段3-制造商 - - - - - 自定义字段4 - - - - - 自定义字段5 - - - - - 商品类型 - - - - - 描述 - - - - diff --git a/src/main/resources/hibernate/Functions.hbm.xml b/src/main/resources/hibernate/Functions.hbm.xml deleted file mode 100644 index f1e1d478..00000000 --- a/src/main/resources/hibernate/Functions.hbm.xml +++ /dev/null @@ -1,59 +0,0 @@ - - - - - - - - - - - 编号 - - - - - 名称 - - - - - 上级编号 - - - - - 链接 - - - - - 收缩 - - - - - 排序 - - - - - 启用 - - - - - 类型 - - - - - 功能按钮 - - - - - - - diff --git a/src/main/resources/hibernate/InOutItem.hbm.xml b/src/main/resources/hibernate/InOutItem.hbm.xml deleted file mode 100644 index 4e8afb9c..00000000 --- a/src/main/resources/hibernate/InOutItem.hbm.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - - - 名称 - - - - - 类型 - - - - - 备注 - - - - diff --git a/src/main/resources/hibernate/Logdetails.hbm.xml b/src/main/resources/hibernate/Logdetails.hbm.xml deleted file mode 100644 index 8f6d4429..00000000 --- a/src/main/resources/hibernate/Logdetails.hbm.xml +++ /dev/null @@ -1,44 +0,0 @@ - - - - - - - - - - - - - - 操作模块名称 - - - - - 客户端IP - - - - - 创建时间 - - - - - 操作状态 0==成功,1==失败 - - - - - 操作详情 - - - - - 备注信息 - - - - diff --git a/src/main/resources/hibernate/Material.hbm.xml b/src/main/resources/hibernate/Material.hbm.xml deleted file mode 100644 index 6bfb6b20..00000000 --- a/src/main/resources/hibernate/Material.hbm.xml +++ /dev/null @@ -1,119 +0,0 @@ - - - - - - - - - - - - - - 名称 - - - - - 制造商 - - - - - 包装(KG/包) - - - - - 安全存量(KG) - - - - - 型号 - - - - - 规格 - - - - - 颜色 - - - - - 单位-单个 - - - - - 多单位 - - - - - 首选出库单位 - - - - - 首选入库单位 - - - - - 价格策略 - - - - - 零售价 - - - - - 最低售价 - - - - - 预设售价一 - - - - - 预设售价二 - - - - - 备注 - - - - - 启用 - - - - - 自定义1 - - - - - 自定义2 - - - - - 自定义3 - - - - diff --git a/src/main/resources/hibernate/MaterialCategory.hbm.xml b/src/main/resources/hibernate/MaterialCategory.hbm.xml deleted file mode 100644 index 211cd14b..00000000 --- a/src/main/resources/hibernate/MaterialCategory.hbm.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - - - - - - - - - 名称 - - - - - 等级 - - - - - - - diff --git a/src/main/resources/hibernate/MaterialProperty.hbm.xml b/src/main/resources/hibernate/MaterialProperty.hbm.xml deleted file mode 100644 index e12109d9..00000000 --- a/src/main/resources/hibernate/MaterialProperty.hbm.xml +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - - - - - - 原始名称 - - - - - 是否启用 - - - - - 排序 - - - - - 别名 - - - - diff --git a/src/main/resources/hibernate/Person.hbm.xml b/src/main/resources/hibernate/Person.hbm.xml deleted file mode 100644 index f3e03159..00000000 --- a/src/main/resources/hibernate/Person.hbm.xml +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - - - - - 类型 - - - - - 姓名 - - - - diff --git a/src/main/resources/hibernate/Role.hbm.xml b/src/main/resources/hibernate/Role.hbm.xml deleted file mode 100644 index a76e27f1..00000000 --- a/src/main/resources/hibernate/Role.hbm.xml +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - - 角色名称 - - - - diff --git a/src/main/resources/hibernate/Supplier.hbm.xml b/src/main/resources/hibernate/Supplier.hbm.xml deleted file mode 100644 index 80260dc1..00000000 --- a/src/main/resources/hibernate/Supplier.hbm.xml +++ /dev/null @@ -1,111 +0,0 @@ - - - - - - - - - - - 名称 - - - - - 类型 - - - - - 联系人 - - - - - 电话 - - - - - 传真 - - - - - 手机 - - - - - 电子邮箱 - - - - - 地址 - - - - - 预收款 - - - - - 纳税人识别号 - - - - - 开户行 - - - - - 账号 - - - - - 税率 - - - - - 期初应收 - - - - - 期初应付 - - - - - 累计应收 - - - - - 累计应付 - - - - - 备注 - - - - - 是否系统自带 0==系统 1==非系统 - - - - - 启用 - - - - diff --git a/src/main/resources/hibernate/SystemConfig.hbm.xml b/src/main/resources/hibernate/SystemConfig.hbm.xml deleted file mode 100644 index e4e046a4..00000000 --- a/src/main/resources/hibernate/SystemConfig.hbm.xml +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - - - - - - 类型 - - - - - 名称 - - - - - - - - - - 描述 - - - - diff --git a/src/main/resources/hibernate/Unit.hbm.xml b/src/main/resources/hibernate/Unit.hbm.xml deleted file mode 100644 index 2071c2a3..00000000 --- a/src/main/resources/hibernate/Unit.hbm.xml +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - - 单位名称 - - - - diff --git a/src/main/resources/hibernate/UserBusiness.hbm.xml b/src/main/resources/hibernate/UserBusiness.hbm.xml deleted file mode 100644 index 638c4116..00000000 --- a/src/main/resources/hibernate/UserBusiness.hbm.xml +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - - - - - - 类别 - - - - - 主ID - - - - - - - - - - 按钮权限 - - - - diff --git a/src/main/resources/hibernate/hibernate.cfg.xml b/src/main/resources/hibernate/hibernate.cfg.xml deleted file mode 100644 index da0f8651..00000000 --- a/src/main/resources/hibernate/hibernate.cfg.xml +++ /dev/null @@ -1,49 +0,0 @@ - - - - - - - org.hibernate.dialect.MySQL5Dialect - - true - - update - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/main/resources/i18n/messages_en_US.properties b/src/main/resources/i18n/messages_en_US.properties deleted file mode 100644 index cf790962..00000000 --- a/src/main/resources/i18n/messages_en_US.properties +++ /dev/null @@ -1,7 +0,0 @@ -language=Select Language -enus=American English -zhcn=Simplified Chinese -logintitle=Welcome to the BenaMaid System -username=username -password=password -login_submit=login diff --git a/src/main/resources/i18n/messages_zh_CN.properties b/src/main/resources/i18n/messages_zh_CN.properties deleted file mode 100644 index b8211f37..00000000 --- a/src/main/resources/i18n/messages_zh_CN.properties +++ /dev/null @@ -1,7 +0,0 @@ -language=\u9009\u62e9\u8bed\u8a00 -enus=\u7f8e\u5f0f\u82f1\u8bed -zhcn=\u7b80\u4f53\u4e2d\u6587 -logintitle=\u6b22\u8fce\u5149\u4e34BenaMaid\u7cfb\u7edf -username=\u7528\u6237\u540d -password=\u5bc6\u7801 -login_submit=\u767b\u5f55 diff --git a/src/main/resources/log4j/log4j.properties b/src/main/resources/log4j/log4j.properties deleted file mode 100644 index 46226f16..00000000 --- a/src/main/resources/log4j/log4j.properties +++ /dev/null @@ -1,67 +0,0 @@ -# level : 是日志记录的优先级,分为OFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL或者您定义的级别。 -#Log4j建议只使用四个级别,优先级从高到低分别是ERROR、WARN、INFO、DEBUG。 -#Log4jTest.java中的Logger logger = Logger.getLogger(this.getClass().getName());可能对应了log4j.rootLogger=DEBUG,CONSOLE,A1的配置 -log4j.rootLogger=INFO,D,E,stdout - -##########控制台输出############## -log4j.appender.stdout=org.apache.log4j.ConsoleAppender -log4j.appender.stdout.Target=System.out -log4j.appender.stdout.layout=org.apache.log4j.PatternLayout -#log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} [%p]-[%C %M %L]:%m%n -log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} [%p]-%m%n - -#######配置hibernate日志输入目录,暂时没有使用到############ -#log4j.logger.org.hibernate = OFF,hibernate -#log4j.logger.org.hibernate.tool.hbm2ddl=debug -#log4j.appender.hibernate = org.apache.log4j.RollingFileAppender -#log4j.appender.hibernate.file = ${webApp.log4j.path}/logs/jsh_hibernate.log -#log4j.appender.hibernate.layout = org.apache.log4j.PatternLayout -#log4j.appender.hibernate.layout.conversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [%p]-[%C %M %L]:%m%n -#log4j.appender.hibernate.layout.conversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [%p]-%m%n -#log4j.appender.hibernate.append = false - -###输出到日志文件指定最低为INFO级别 ### -log4j.appender.D=org.apache.log4j.RollingFileAppender -log4j.appender.D.File=${webApp.log4j.path}/logs/jsh-info.log -log4j.appender.D.MaxFileSize=50MB -log4j.appender.D.MaxBackupIndex=10 -##the lower level -log4j.appender.D.Threshold=INFO -log4j.appender.D.layout=org.apache.log4j.PatternLayout -#log4j.appender.D.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss} [%p]-[%C %M %L]:%m%n -log4j.appender.D.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss} [%p]-%m%n - -###输出错误信息内容到指定文件ERROR级别### -log4j.appender.E= org.apache.log4j.RollingFileAppender -log4j.appender.E.File=${webApp.log4j.path}/logs/jsh-error.log -log4j.appender.E.MaxFileSize=50MB -log4j.appender.E.MaxBackupIndex=10 -log4j.appender.E.Threshold = ERROR -log4j.appender.E.layout = org.apache.log4j.PatternLayout -##log4j.appender.E.layout.ConversionPattern =%-d{yyyy-MM-dd HH\:mm\:ss} [%p]-[%C %M %L]\:%m%n -log4j.appender.E.layout.ConversionPattern =%-d{yyyy-MM-dd HH\:mm\:ss} [%p]-%m%n -# %n代表换行 -# %d代表日期 -# %c代表路径名(Logger.getLogger("DAO")时为DAO:,Logger.getLogger(this.getClass().getName())时为绝对类名)# %c{1}为类名,如Log4jTest -# %l代表类路径及代码所在行数,%L仅代表代码所在行数 -# [%-5p]代表该日志对应的日志级别(%5p),如DEBUG,ERROR,中间的-起到在[]中左对齐的作用 -# %m代表“类名:”(Logger.getLogger("DAO")时为DAO:,Logger.getLogger(this.getClass().getName())时为类名)及日志信息 -#---------------------------------------------------------------------------------- -#分别说明如下: -#1、使用Logger logger = Logger.getLogger("DAO")获得配置时,属性文件中必须要有对应设置:log4j.logger.DAO=DEBUG,A2 -#2、%c为DAO -#3、%l为logger.debug("DAO: Debug info.");的类绝对路径以及代码所在行, -# log.DAOlogTest.doGet(DAOlogTest.java:23) -#4、%L为logger.debug("DAO: Debug info.");代码所在行 23 -#5、%m为类名和日志信息 DAO: Debug info. -#1、使用Logger logger = Logger.getLogger(this.getClass().getName())获得配置时 -#2、%c为log.Log4jTest %c{1}为Log4jTest -#3、%l为 log.Log4jTest.doGet(Log4jTest.java:23) -#4、%L同上 -#5、%m为 Debug info. -#-X号: X信息输出时左对齐; -#%p: 日志信息级别 -#%d{}: 日志信息产生时间 -#%c: 日志信息所在地(类名) -#%m: 产生的日志具体信息 -#%n: 输出日志信息换行 diff --git a/src/main/resources/mapper_xml/AccountHeadMapper.xml b/src/main/resources/mapper_xml/AccountHeadMapper.xml new file mode 100644 index 00000000..ba23d43e --- /dev/null +++ b/src/main/resources/mapper_xml/AccountHeadMapper.xml @@ -0,0 +1,351 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + and ${criterion.condition} + + + and ${criterion.condition} #{criterion.value} + + + and ${criterion.condition} #{criterion.value} and #{criterion.secondValue} + + + and ${criterion.condition} + + #{listItem} + + + + + + + + + + + + + + + + + + + and ${criterion.condition} + + + and ${criterion.condition} #{criterion.value} + + + and ${criterion.condition} #{criterion.value} and #{criterion.secondValue} + + + and ${criterion.condition} + + #{listItem} + + + + + + + + + + + + Id, Type, OrganId, HandsPersonId, ChangeAmount, TotalPrice, AccountId, BillNo, BillTime, + Remark + + + + + + delete from jsh_accounthead + where Id = #{id,jdbcType=BIGINT} + + + + delete from jsh_accounthead + + + + + + + insert into jsh_accounthead (Id, Type, OrganId, + HandsPersonId, ChangeAmount, TotalPrice, + AccountId, BillNo, BillTime, + Remark) + values (#{id,jdbcType=BIGINT}, #{type,jdbcType=VARCHAR}, #{organid,jdbcType=BIGINT}, + #{handspersonid,jdbcType=BIGINT}, #{changeamount,jdbcType=DOUBLE}, #{totalprice,jdbcType=DOUBLE}, + #{accountid,jdbcType=BIGINT}, #{billno,jdbcType=VARCHAR}, #{billtime,jdbcType=TIMESTAMP}, + #{remark,jdbcType=VARCHAR}) + + + + insert into jsh_accounthead + + + Id, + + + Type, + + + OrganId, + + + HandsPersonId, + + + ChangeAmount, + + + TotalPrice, + + + AccountId, + + + BillNo, + + + BillTime, + + + Remark, + + + + + #{id,jdbcType=BIGINT}, + + + #{type,jdbcType=VARCHAR}, + + + #{organid,jdbcType=BIGINT}, + + + #{handspersonid,jdbcType=BIGINT}, + + + #{changeamount,jdbcType=DOUBLE}, + + + #{totalprice,jdbcType=DOUBLE}, + + + #{accountid,jdbcType=BIGINT}, + + + #{billno,jdbcType=VARCHAR}, + + + #{billtime,jdbcType=TIMESTAMP}, + + + #{remark,jdbcType=VARCHAR}, + + + + + + + update jsh_accounthead + + + Id = #{record.id,jdbcType=BIGINT}, + + + Type = #{record.type,jdbcType=VARCHAR}, + + + OrganId = #{record.organid,jdbcType=BIGINT}, + + + HandsPersonId = #{record.handspersonid,jdbcType=BIGINT}, + + + ChangeAmount = #{record.changeamount,jdbcType=DOUBLE}, + + + TotalPrice = #{record.totalprice,jdbcType=DOUBLE}, + + + AccountId = #{record.accountid,jdbcType=BIGINT}, + + + BillNo = #{record.billno,jdbcType=VARCHAR}, + + + BillTime = #{record.billtime,jdbcType=TIMESTAMP}, + + + Remark = #{record.remark,jdbcType=VARCHAR}, + + + + + + + + + update jsh_accounthead + set Id = #{record.id,jdbcType=BIGINT}, + Type = #{record.type,jdbcType=VARCHAR}, + OrganId = #{record.organid,jdbcType=BIGINT}, + HandsPersonId = #{record.handspersonid,jdbcType=BIGINT}, + ChangeAmount = #{record.changeamount,jdbcType=DOUBLE}, + TotalPrice = #{record.totalprice,jdbcType=DOUBLE}, + AccountId = #{record.accountid,jdbcType=BIGINT}, + BillNo = #{record.billno,jdbcType=VARCHAR}, + BillTime = #{record.billtime,jdbcType=TIMESTAMP}, + Remark = #{record.remark,jdbcType=VARCHAR} + + + + + + + update jsh_accounthead + + + Type = #{type,jdbcType=VARCHAR}, + + + OrganId = #{organid,jdbcType=BIGINT}, + + + HandsPersonId = #{handspersonid,jdbcType=BIGINT}, + + + ChangeAmount = #{changeamount,jdbcType=DOUBLE}, + + + TotalPrice = #{totalprice,jdbcType=DOUBLE}, + + + AccountId = #{accountid,jdbcType=BIGINT}, + + + BillNo = #{billno,jdbcType=VARCHAR}, + + + BillTime = #{billtime,jdbcType=TIMESTAMP}, + + + Remark = #{remark,jdbcType=VARCHAR}, + + + where Id = #{id,jdbcType=BIGINT} + + + + update jsh_accounthead + set Type = #{type,jdbcType=VARCHAR}, + OrganId = #{organid,jdbcType=BIGINT}, + HandsPersonId = #{handspersonid,jdbcType=BIGINT}, + ChangeAmount = #{changeamount,jdbcType=DOUBLE}, + TotalPrice = #{totalprice,jdbcType=DOUBLE}, + AccountId = #{accountid,jdbcType=BIGINT}, + BillNo = #{billno,jdbcType=VARCHAR}, + BillTime = #{billtime,jdbcType=TIMESTAMP}, + Remark = #{remark,jdbcType=VARCHAR} + where Id = #{id,jdbcType=BIGINT} + + \ No newline at end of file diff --git a/src/main/resources/mapper_xml/AccountHeadMapperEx.xml b/src/main/resources/mapper_xml/AccountHeadMapperEx.xml new file mode 100644 index 00000000..e9d96143 --- /dev/null +++ b/src/main/resources/mapper_xml/AccountHeadMapperEx.xml @@ -0,0 +1,76 @@ + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/resources/mapper_xml/AccountItemMapper.xml b/src/main/resources/mapper_xml/AccountItemMapper.xml new file mode 100644 index 00000000..7b02e788 --- /dev/null +++ b/src/main/resources/mapper_xml/AccountItemMapper.xml @@ -0,0 +1,288 @@ + + + + + + + + + + + + + + + + + + + + + + and ${criterion.condition} + + + and ${criterion.condition} #{criterion.value} + + + and ${criterion.condition} #{criterion.value} and #{criterion.secondValue} + + + and ${criterion.condition} + + #{listItem} + + + + + + + + + + + + + + + + + + + and ${criterion.condition} + + + and ${criterion.condition} #{criterion.value} + + + and ${criterion.condition} #{criterion.value} and #{criterion.secondValue} + + + and ${criterion.condition} + + #{listItem} + + + + + + + + + + + + Id, HeaderId, AccountId, InOutItemId, EachAmount, Remark + + + + + + delete from jsh_accountitem + where Id = #{id,jdbcType=BIGINT} + + + + delete from jsh_accountitem + + + + + + + insert into jsh_accountitem (Id, HeaderId, AccountId, + InOutItemId, EachAmount, Remark + ) + values (#{id,jdbcType=BIGINT}, #{headerid,jdbcType=BIGINT}, #{accountid,jdbcType=BIGINT}, + #{inoutitemid,jdbcType=BIGINT}, #{eachamount,jdbcType=DOUBLE}, #{remark,jdbcType=VARCHAR} + ) + + + + insert into jsh_accountitem + + + Id, + + + HeaderId, + + + AccountId, + + + InOutItemId, + + + EachAmount, + + + Remark, + + + + + #{id,jdbcType=BIGINT}, + + + #{headerid,jdbcType=BIGINT}, + + + #{accountid,jdbcType=BIGINT}, + + + #{inoutitemid,jdbcType=BIGINT}, + + + #{eachamount,jdbcType=DOUBLE}, + + + #{remark,jdbcType=VARCHAR}, + + + + + + + update jsh_accountitem + + + Id = #{record.id,jdbcType=BIGINT}, + + + HeaderId = #{record.headerid,jdbcType=BIGINT}, + + + AccountId = #{record.accountid,jdbcType=BIGINT}, + + + InOutItemId = #{record.inoutitemid,jdbcType=BIGINT}, + + + EachAmount = #{record.eachamount,jdbcType=DOUBLE}, + + + Remark = #{record.remark,jdbcType=VARCHAR}, + + + + + + + + + update jsh_accountitem + set Id = #{record.id,jdbcType=BIGINT}, + HeaderId = #{record.headerid,jdbcType=BIGINT}, + AccountId = #{record.accountid,jdbcType=BIGINT}, + InOutItemId = #{record.inoutitemid,jdbcType=BIGINT}, + EachAmount = #{record.eachamount,jdbcType=DOUBLE}, + Remark = #{record.remark,jdbcType=VARCHAR} + + + + + + + update jsh_accountitem + + + HeaderId = #{headerid,jdbcType=BIGINT}, + + + AccountId = #{accountid,jdbcType=BIGINT}, + + + InOutItemId = #{inoutitemid,jdbcType=BIGINT}, + + + EachAmount = #{eachamount,jdbcType=DOUBLE}, + + + Remark = #{remark,jdbcType=VARCHAR}, + + + where Id = #{id,jdbcType=BIGINT} + + + + update jsh_accountitem + set HeaderId = #{headerid,jdbcType=BIGINT}, + AccountId = #{accountid,jdbcType=BIGINT}, + InOutItemId = #{inoutitemid,jdbcType=BIGINT}, + EachAmount = #{eachamount,jdbcType=DOUBLE}, + Remark = #{remark,jdbcType=VARCHAR} + where Id = #{id,jdbcType=BIGINT} + + \ No newline at end of file diff --git a/src/main/resources/mapper_xml/AccountItemMapperEx.xml b/src/main/resources/mapper_xml/AccountItemMapperEx.xml new file mode 100644 index 00000000..fe26140c --- /dev/null +++ b/src/main/resources/mapper_xml/AccountItemMapperEx.xml @@ -0,0 +1,50 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/resources/mapper_xml/AccountMapper.xml b/src/main/resources/mapper_xml/AccountMapper.xml new file mode 100644 index 00000000..dc9f3c6d --- /dev/null +++ b/src/main/resources/mapper_xml/AccountMapper.xml @@ -0,0 +1,303 @@ + + + + + + + + + + + + + + + + + + + + + + + and ${criterion.condition} + + + and ${criterion.condition} #{criterion.value} + + + and ${criterion.condition} #{criterion.value} and #{criterion.secondValue} + + + and ${criterion.condition} + + #{listItem} + + + + + + + + + + + + + + + + + + + and ${criterion.condition} + + + and ${criterion.condition} #{criterion.value} + + + and ${criterion.condition} #{criterion.value} and #{criterion.secondValue} + + + and ${criterion.condition} + + #{listItem} + + + + + + + + + + + + Id, Name, SerialNo, InitialAmount, CurrentAmount, Remark, IsDefault + + + + + + delete from jsh_account + where Id = #{id,jdbcType=BIGINT} + + + + delete from jsh_account + + + + + + + insert into jsh_account (Id, Name, SerialNo, + InitialAmount, CurrentAmount, Remark, + IsDefault) + values (#{id,jdbcType=BIGINT}, #{name,jdbcType=VARCHAR}, #{serialno,jdbcType=VARCHAR}, + #{initialamount,jdbcType=DOUBLE}, #{currentamount,jdbcType=DOUBLE}, #{remark,jdbcType=VARCHAR}, + #{isdefault,jdbcType=BIT}) + + + + insert into jsh_account + + + Id, + + + Name, + + + SerialNo, + + + InitialAmount, + + + CurrentAmount, + + + Remark, + + + IsDefault, + + + + + #{id,jdbcType=BIGINT}, + + + #{name,jdbcType=VARCHAR}, + + + #{serialno,jdbcType=VARCHAR}, + + + #{initialamount,jdbcType=DOUBLE}, + + + #{currentamount,jdbcType=DOUBLE}, + + + #{remark,jdbcType=VARCHAR}, + + + #{isdefault,jdbcType=BIT}, + + + + + + + update jsh_account + + + Id = #{record.id,jdbcType=BIGINT}, + + + Name = #{record.name,jdbcType=VARCHAR}, + + + SerialNo = #{record.serialno,jdbcType=VARCHAR}, + + + InitialAmount = #{record.initialamount,jdbcType=DOUBLE}, + + + CurrentAmount = #{record.currentamount,jdbcType=DOUBLE}, + + + Remark = #{record.remark,jdbcType=VARCHAR}, + + + IsDefault = #{record.isdefault,jdbcType=BIT}, + + + + + + + + + update jsh_account + set Id = #{record.id,jdbcType=BIGINT}, + Name = #{record.name,jdbcType=VARCHAR}, + SerialNo = #{record.serialno,jdbcType=VARCHAR}, + InitialAmount = #{record.initialamount,jdbcType=DOUBLE}, + CurrentAmount = #{record.currentamount,jdbcType=DOUBLE}, + Remark = #{record.remark,jdbcType=VARCHAR}, + IsDefault = #{record.isdefault,jdbcType=BIT} + + + + + + + update jsh_account + + + Name = #{name,jdbcType=VARCHAR}, + + + SerialNo = #{serialno,jdbcType=VARCHAR}, + + + InitialAmount = #{initialamount,jdbcType=DOUBLE}, + + + CurrentAmount = #{currentamount,jdbcType=DOUBLE}, + + + Remark = #{remark,jdbcType=VARCHAR}, + + + IsDefault = #{isdefault,jdbcType=BIT}, + + + where Id = #{id,jdbcType=BIGINT} + + + + update jsh_account + set Name = #{name,jdbcType=VARCHAR}, + SerialNo = #{serialno,jdbcType=VARCHAR}, + InitialAmount = #{initialamount,jdbcType=DOUBLE}, + CurrentAmount = #{currentamount,jdbcType=DOUBLE}, + Remark = #{remark,jdbcType=VARCHAR}, + IsDefault = #{isdefault,jdbcType=BIT} + where Id = #{id,jdbcType=BIGINT} + + \ No newline at end of file diff --git a/src/main/resources/mapper_xml/AccountMapperEx.xml b/src/main/resources/mapper_xml/AccountMapperEx.xml new file mode 100644 index 00000000..e0dfb275 --- /dev/null +++ b/src/main/resources/mapper_xml/AccountMapperEx.xml @@ -0,0 +1,172 @@ + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/resources/mapper_xml/AppMapper.xml b/src/main/resources/mapper_xml/AppMapper.xml new file mode 100644 index 00000000..aee4c8b0 --- /dev/null +++ b/src/main/resources/mapper_xml/AppMapper.xml @@ -0,0 +1,428 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + and ${criterion.condition} + + + and ${criterion.condition} #{criterion.value} + + + and ${criterion.condition} #{criterion.value} and #{criterion.secondValue} + + + and ${criterion.condition} + + #{listItem} + + + + + + + + + + + + + + + + + + + and ${criterion.condition} + + + and ${criterion.condition} #{criterion.value} + + + and ${criterion.condition} #{criterion.value} and #{criterion.secondValue} + + + and ${criterion.condition} + + #{listItem} + + + + + + + + + + + + Id, Number, Name, Type, Icon, URL, Width, Height, ReSize, OpenMax, Flash, ZL, Sort, + Remark, Enabled + + + + + + delete from jsh_app + where Id = #{id,jdbcType=BIGINT} + + + + delete from jsh_app + + + + + + + insert into jsh_app (Id, Number, Name, + Type, Icon, URL, Width, + Height, ReSize, OpenMax, Flash, + ZL, Sort, Remark, Enabled + ) + values (#{id,jdbcType=BIGINT}, #{number,jdbcType=VARCHAR}, #{name,jdbcType=VARCHAR}, + #{type,jdbcType=VARCHAR}, #{icon,jdbcType=VARCHAR}, #{url,jdbcType=VARCHAR}, #{width,jdbcType=VARCHAR}, + #{height,jdbcType=VARCHAR}, #{resize,jdbcType=BIT}, #{openmax,jdbcType=BIT}, #{flash,jdbcType=BIT}, + #{zl,jdbcType=VARCHAR}, #{sort,jdbcType=VARCHAR}, #{remark,jdbcType=VARCHAR}, #{enabled,jdbcType=BIT} + ) + + + + insert into jsh_app + + + Id, + + + Number, + + + Name, + + + Type, + + + Icon, + + + URL, + + + Width, + + + Height, + + + ReSize, + + + OpenMax, + + + Flash, + + + ZL, + + + Sort, + + + Remark, + + + Enabled, + + + + + #{id,jdbcType=BIGINT}, + + + #{number,jdbcType=VARCHAR}, + + + #{name,jdbcType=VARCHAR}, + + + #{type,jdbcType=VARCHAR}, + + + #{icon,jdbcType=VARCHAR}, + + + #{url,jdbcType=VARCHAR}, + + + #{width,jdbcType=VARCHAR}, + + + #{height,jdbcType=VARCHAR}, + + + #{resize,jdbcType=BIT}, + + + #{openmax,jdbcType=BIT}, + + + #{flash,jdbcType=BIT}, + + + #{zl,jdbcType=VARCHAR}, + + + #{sort,jdbcType=VARCHAR}, + + + #{remark,jdbcType=VARCHAR}, + + + #{enabled,jdbcType=BIT}, + + + + + + + update jsh_app + + + Id = #{record.id,jdbcType=BIGINT}, + + + Number = #{record.number,jdbcType=VARCHAR}, + + + Name = #{record.name,jdbcType=VARCHAR}, + + + Type = #{record.type,jdbcType=VARCHAR}, + + + Icon = #{record.icon,jdbcType=VARCHAR}, + + + URL = #{record.url,jdbcType=VARCHAR}, + + + Width = #{record.width,jdbcType=VARCHAR}, + + + Height = #{record.height,jdbcType=VARCHAR}, + + + ReSize = #{record.resize,jdbcType=BIT}, + + + OpenMax = #{record.openmax,jdbcType=BIT}, + + + Flash = #{record.flash,jdbcType=BIT}, + + + ZL = #{record.zl,jdbcType=VARCHAR}, + + + Sort = #{record.sort,jdbcType=VARCHAR}, + + + Remark = #{record.remark,jdbcType=VARCHAR}, + + + Enabled = #{record.enabled,jdbcType=BIT}, + + + + + + + + + update jsh_app + set Id = #{record.id,jdbcType=BIGINT}, + Number = #{record.number,jdbcType=VARCHAR}, + Name = #{record.name,jdbcType=VARCHAR}, + Type = #{record.type,jdbcType=VARCHAR}, + Icon = #{record.icon,jdbcType=VARCHAR}, + URL = #{record.url,jdbcType=VARCHAR}, + Width = #{record.width,jdbcType=VARCHAR}, + Height = #{record.height,jdbcType=VARCHAR}, + ReSize = #{record.resize,jdbcType=BIT}, + OpenMax = #{record.openmax,jdbcType=BIT}, + Flash = #{record.flash,jdbcType=BIT}, + ZL = #{record.zl,jdbcType=VARCHAR}, + Sort = #{record.sort,jdbcType=VARCHAR}, + Remark = #{record.remark,jdbcType=VARCHAR}, + Enabled = #{record.enabled,jdbcType=BIT} + + + + + + + update jsh_app + + + Number = #{number,jdbcType=VARCHAR}, + + + Name = #{name,jdbcType=VARCHAR}, + + + Type = #{type,jdbcType=VARCHAR}, + + + Icon = #{icon,jdbcType=VARCHAR}, + + + URL = #{url,jdbcType=VARCHAR}, + + + Width = #{width,jdbcType=VARCHAR}, + + + Height = #{height,jdbcType=VARCHAR}, + + + ReSize = #{resize,jdbcType=BIT}, + + + OpenMax = #{openmax,jdbcType=BIT}, + + + Flash = #{flash,jdbcType=BIT}, + + + ZL = #{zl,jdbcType=VARCHAR}, + + + Sort = #{sort,jdbcType=VARCHAR}, + + + Remark = #{remark,jdbcType=VARCHAR}, + + + Enabled = #{enabled,jdbcType=BIT}, + + + where Id = #{id,jdbcType=BIGINT} + + + + update jsh_app + set Number = #{number,jdbcType=VARCHAR}, + Name = #{name,jdbcType=VARCHAR}, + Type = #{type,jdbcType=VARCHAR}, + Icon = #{icon,jdbcType=VARCHAR}, + URL = #{url,jdbcType=VARCHAR}, + Width = #{width,jdbcType=VARCHAR}, + Height = #{height,jdbcType=VARCHAR}, + ReSize = #{resize,jdbcType=BIT}, + OpenMax = #{openmax,jdbcType=BIT}, + Flash = #{flash,jdbcType=BIT}, + ZL = #{zl,jdbcType=VARCHAR}, + Sort = #{sort,jdbcType=VARCHAR}, + Remark = #{remark,jdbcType=VARCHAR}, + Enabled = #{enabled,jdbcType=BIT} + where Id = #{id,jdbcType=BIGINT} + + \ No newline at end of file diff --git a/src/main/resources/mapper_xml/AppMapperEx.xml b/src/main/resources/mapper_xml/AppMapperEx.xml new file mode 100644 index 00000000..620ba75c --- /dev/null +++ b/src/main/resources/mapper_xml/AppMapperEx.xml @@ -0,0 +1,30 @@ + + + + + + \ No newline at end of file diff --git a/src/main/resources/mapper_xml/AssetCategoryMapper.xml b/src/main/resources/mapper_xml/AssetCategoryMapper.xml new file mode 100644 index 00000000..b660e68a --- /dev/null +++ b/src/main/resources/mapper_xml/AssetCategoryMapper.xml @@ -0,0 +1,256 @@ + + + + + + + + + + + + + + + + + + + + and ${criterion.condition} + + + and ${criterion.condition} #{criterion.value} + + + and ${criterion.condition} #{criterion.value} and #{criterion.secondValue} + + + and ${criterion.condition} + + #{listItem} + + + + + + + + + + + + + + + + + + + and ${criterion.condition} + + + and ${criterion.condition} #{criterion.value} + + + and ${criterion.condition} #{criterion.value} and #{criterion.secondValue} + + + and ${criterion.condition} + + #{listItem} + + + + + + + + + + + + id, assetname, isystem, description + + + + + + delete from jsh_assetcategory + where id = #{id,jdbcType=BIGINT} + + + + delete from jsh_assetcategory + + + + + + + insert into jsh_assetcategory (id, assetname, isystem, + description) + values (#{id,jdbcType=BIGINT}, #{assetname,jdbcType=VARCHAR}, #{isystem,jdbcType=TINYINT}, + #{description,jdbcType=VARCHAR}) + + + + insert into jsh_assetcategory + + + id, + + + assetname, + + + isystem, + + + description, + + + + + #{id,jdbcType=BIGINT}, + + + #{assetname,jdbcType=VARCHAR}, + + + #{isystem,jdbcType=TINYINT}, + + + #{description,jdbcType=VARCHAR}, + + + + + + + update jsh_assetcategory + + + id = #{record.id,jdbcType=BIGINT}, + + + assetname = #{record.assetname,jdbcType=VARCHAR}, + + + isystem = #{record.isystem,jdbcType=TINYINT}, + + + description = #{record.description,jdbcType=VARCHAR}, + + + + + + + + + update jsh_assetcategory + set id = #{record.id,jdbcType=BIGINT}, + assetname = #{record.assetname,jdbcType=VARCHAR}, + isystem = #{record.isystem,jdbcType=TINYINT}, + description = #{record.description,jdbcType=VARCHAR} + + + + + + + update jsh_assetcategory + + + assetname = #{assetname,jdbcType=VARCHAR}, + + + isystem = #{isystem,jdbcType=TINYINT}, + + + description = #{description,jdbcType=VARCHAR}, + + + where id = #{id,jdbcType=BIGINT} + + + + update jsh_assetcategory + set assetname = #{assetname,jdbcType=VARCHAR}, + isystem = #{isystem,jdbcType=TINYINT}, + description = #{description,jdbcType=VARCHAR} + where id = #{id,jdbcType=BIGINT} + + \ No newline at end of file diff --git a/src/main/resources/mapper_xml/AssetMapper.xml b/src/main/resources/mapper_xml/AssetMapper.xml new file mode 100644 index 00000000..122045ba --- /dev/null +++ b/src/main/resources/mapper_xml/AssetMapper.xml @@ -0,0 +1,578 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + and ${criterion.condition} + + + and ${criterion.condition} #{criterion.value} + + + and ${criterion.condition} #{criterion.value} and #{criterion.secondValue} + + + and ${criterion.condition} + + #{listItem} + + + + + + + + + + + + + + + + + + + and ${criterion.condition} + + + and ${criterion.condition} #{criterion.value} + + + and ${criterion.condition} #{criterion.value} and #{criterion.secondValue} + + + and ${criterion.condition} + + #{listItem} + + + + + + + + + + + + id, assetnameID, location, labels, status, userID, price, purchasedate, periodofvalidity, + warrantydate, assetnum, serialnum, supplier, createtime, creator, updatetime, updator + + + + description, addMonth + + + + + + + delete from jsh_asset + where id = #{id,jdbcType=BIGINT} + + + + delete from jsh_asset + + + + + + + insert into jsh_asset (id, assetnameID, location, + labels, status, userID, + price, purchasedate, periodofvalidity, + warrantydate, assetnum, serialnum, + supplier, createtime, creator, + updatetime, updator, description, + addMonth) + values (#{id,jdbcType=BIGINT}, #{assetnameid,jdbcType=BIGINT}, #{location,jdbcType=VARCHAR}, + #{labels,jdbcType=VARCHAR}, #{status,jdbcType=SMALLINT}, #{userid,jdbcType=BIGINT}, + #{price,jdbcType=DOUBLE}, #{purchasedate,jdbcType=TIMESTAMP}, #{periodofvalidity,jdbcType=TIMESTAMP}, + #{warrantydate,jdbcType=TIMESTAMP}, #{assetnum,jdbcType=VARCHAR}, #{serialnum,jdbcType=VARCHAR}, + #{supplier,jdbcType=BIGINT}, #{createtime,jdbcType=TIMESTAMP}, #{creator,jdbcType=BIGINT}, + #{updatetime,jdbcType=TIMESTAMP}, #{updator,jdbcType=BIGINT}, #{description,jdbcType=LONGVARCHAR}, + #{addmonth,jdbcType=LONGVARCHAR}) + + + + insert into jsh_asset + + + id, + + + assetnameID, + + + location, + + + labels, + + + status, + + + userID, + + + price, + + + purchasedate, + + + periodofvalidity, + + + warrantydate, + + + assetnum, + + + serialnum, + + + supplier, + + + createtime, + + + creator, + + + updatetime, + + + updator, + + + description, + + + addMonth, + + + + + #{id,jdbcType=BIGINT}, + + + #{assetnameid,jdbcType=BIGINT}, + + + #{location,jdbcType=VARCHAR}, + + + #{labels,jdbcType=VARCHAR}, + + + #{status,jdbcType=SMALLINT}, + + + #{userid,jdbcType=BIGINT}, + + + #{price,jdbcType=DOUBLE}, + + + #{purchasedate,jdbcType=TIMESTAMP}, + + + #{periodofvalidity,jdbcType=TIMESTAMP}, + + + #{warrantydate,jdbcType=TIMESTAMP}, + + + #{assetnum,jdbcType=VARCHAR}, + + + #{serialnum,jdbcType=VARCHAR}, + + + #{supplier,jdbcType=BIGINT}, + + + #{createtime,jdbcType=TIMESTAMP}, + + + #{creator,jdbcType=BIGINT}, + + + #{updatetime,jdbcType=TIMESTAMP}, + + + #{updator,jdbcType=BIGINT}, + + + #{description,jdbcType=LONGVARCHAR}, + + + #{addmonth,jdbcType=LONGVARCHAR}, + + + + + + + update jsh_asset + + + id = #{record.id,jdbcType=BIGINT}, + + + assetnameID = #{record.assetnameid,jdbcType=BIGINT}, + + + location = #{record.location,jdbcType=VARCHAR}, + + + labels = #{record.labels,jdbcType=VARCHAR}, + + + status = #{record.status,jdbcType=SMALLINT}, + + + userID = #{record.userid,jdbcType=BIGINT}, + + + price = #{record.price,jdbcType=DOUBLE}, + + + purchasedate = #{record.purchasedate,jdbcType=TIMESTAMP}, + + + periodofvalidity = #{record.periodofvalidity,jdbcType=TIMESTAMP}, + + + warrantydate = #{record.warrantydate,jdbcType=TIMESTAMP}, + + + assetnum = #{record.assetnum,jdbcType=VARCHAR}, + + + serialnum = #{record.serialnum,jdbcType=VARCHAR}, + + + supplier = #{record.supplier,jdbcType=BIGINT}, + + + createtime = #{record.createtime,jdbcType=TIMESTAMP}, + + + creator = #{record.creator,jdbcType=BIGINT}, + + + updatetime = #{record.updatetime,jdbcType=TIMESTAMP}, + + + updator = #{record.updator,jdbcType=BIGINT}, + + + description = #{record.description,jdbcType=LONGVARCHAR}, + + + addMonth = #{record.addmonth,jdbcType=LONGVARCHAR}, + + + + + + + + + update jsh_asset + set id = #{record.id,jdbcType=BIGINT}, + assetnameID = #{record.assetnameid,jdbcType=BIGINT}, + location = #{record.location,jdbcType=VARCHAR}, + labels = #{record.labels,jdbcType=VARCHAR}, + status = #{record.status,jdbcType=SMALLINT}, + userID = #{record.userid,jdbcType=BIGINT}, + price = #{record.price,jdbcType=DOUBLE}, + purchasedate = #{record.purchasedate,jdbcType=TIMESTAMP}, + periodofvalidity = #{record.periodofvalidity,jdbcType=TIMESTAMP}, + warrantydate = #{record.warrantydate,jdbcType=TIMESTAMP}, + assetnum = #{record.assetnum,jdbcType=VARCHAR}, + serialnum = #{record.serialnum,jdbcType=VARCHAR}, + supplier = #{record.supplier,jdbcType=BIGINT}, + createtime = #{record.createtime,jdbcType=TIMESTAMP}, + creator = #{record.creator,jdbcType=BIGINT}, + updatetime = #{record.updatetime,jdbcType=TIMESTAMP}, + updator = #{record.updator,jdbcType=BIGINT}, + description = #{record.description,jdbcType=LONGVARCHAR}, + addMonth = #{record.addmonth,jdbcType=LONGVARCHAR} + + + + + + + update jsh_asset + set id = #{record.id,jdbcType=BIGINT}, + assetnameID = #{record.assetnameid,jdbcType=BIGINT}, + location = #{record.location,jdbcType=VARCHAR}, + labels = #{record.labels,jdbcType=VARCHAR}, + status = #{record.status,jdbcType=SMALLINT}, + userID = #{record.userid,jdbcType=BIGINT}, + price = #{record.price,jdbcType=DOUBLE}, + purchasedate = #{record.purchasedate,jdbcType=TIMESTAMP}, + periodofvalidity = #{record.periodofvalidity,jdbcType=TIMESTAMP}, + warrantydate = #{record.warrantydate,jdbcType=TIMESTAMP}, + assetnum = #{record.assetnum,jdbcType=VARCHAR}, + serialnum = #{record.serialnum,jdbcType=VARCHAR}, + supplier = #{record.supplier,jdbcType=BIGINT}, + createtime = #{record.createtime,jdbcType=TIMESTAMP}, + creator = #{record.creator,jdbcType=BIGINT}, + updatetime = #{record.updatetime,jdbcType=TIMESTAMP}, + updator = #{record.updator,jdbcType=BIGINT} + + + + + + + update jsh_asset + + + assetnameID = #{assetnameid,jdbcType=BIGINT}, + + + location = #{location,jdbcType=VARCHAR}, + + + labels = #{labels,jdbcType=VARCHAR}, + + + status = #{status,jdbcType=SMALLINT}, + + + userID = #{userid,jdbcType=BIGINT}, + + + price = #{price,jdbcType=DOUBLE}, + + + purchasedate = #{purchasedate,jdbcType=TIMESTAMP}, + + + periodofvalidity = #{periodofvalidity,jdbcType=TIMESTAMP}, + + + warrantydate = #{warrantydate,jdbcType=TIMESTAMP}, + + + assetnum = #{assetnum,jdbcType=VARCHAR}, + + + serialnum = #{serialnum,jdbcType=VARCHAR}, + + + supplier = #{supplier,jdbcType=BIGINT}, + + + createtime = #{createtime,jdbcType=TIMESTAMP}, + + + creator = #{creator,jdbcType=BIGINT}, + + + updatetime = #{updatetime,jdbcType=TIMESTAMP}, + + + updator = #{updator,jdbcType=BIGINT}, + + + description = #{description,jdbcType=LONGVARCHAR}, + + + addMonth = #{addmonth,jdbcType=LONGVARCHAR}, + + + where id = #{id,jdbcType=BIGINT} + + + + update jsh_asset + set assetnameID = #{assetnameid,jdbcType=BIGINT}, + location = #{location,jdbcType=VARCHAR}, + labels = #{labels,jdbcType=VARCHAR}, + status = #{status,jdbcType=SMALLINT}, + userID = #{userid,jdbcType=BIGINT}, + price = #{price,jdbcType=DOUBLE}, + purchasedate = #{purchasedate,jdbcType=TIMESTAMP}, + periodofvalidity = #{periodofvalidity,jdbcType=TIMESTAMP}, + warrantydate = #{warrantydate,jdbcType=TIMESTAMP}, + assetnum = #{assetnum,jdbcType=VARCHAR}, + serialnum = #{serialnum,jdbcType=VARCHAR}, + supplier = #{supplier,jdbcType=BIGINT}, + createtime = #{createtime,jdbcType=TIMESTAMP}, + creator = #{creator,jdbcType=BIGINT}, + updatetime = #{updatetime,jdbcType=TIMESTAMP}, + updator = #{updator,jdbcType=BIGINT}, + description = #{description,jdbcType=LONGVARCHAR}, + addMonth = #{addmonth,jdbcType=LONGVARCHAR} + where id = #{id,jdbcType=BIGINT} + + + + update jsh_asset + set assetnameID = #{assetnameid,jdbcType=BIGINT}, + location = #{location,jdbcType=VARCHAR}, + labels = #{labels,jdbcType=VARCHAR}, + status = #{status,jdbcType=SMALLINT}, + userID = #{userid,jdbcType=BIGINT}, + price = #{price,jdbcType=DOUBLE}, + purchasedate = #{purchasedate,jdbcType=TIMESTAMP}, + periodofvalidity = #{periodofvalidity,jdbcType=TIMESTAMP}, + warrantydate = #{warrantydate,jdbcType=TIMESTAMP}, + assetnum = #{assetnum,jdbcType=VARCHAR}, + serialnum = #{serialnum,jdbcType=VARCHAR}, + supplier = #{supplier,jdbcType=BIGINT}, + createtime = #{createtime,jdbcType=TIMESTAMP}, + creator = #{creator,jdbcType=BIGINT}, + updatetime = #{updatetime,jdbcType=TIMESTAMP}, + updator = #{updator,jdbcType=BIGINT} + where id = #{id,jdbcType=BIGINT} + + \ No newline at end of file diff --git a/src/main/resources/mapper_xml/AssetNameMapper.xml b/src/main/resources/mapper_xml/AssetNameMapper.xml new file mode 100644 index 00000000..2e2172de --- /dev/null +++ b/src/main/resources/mapper_xml/AssetNameMapper.xml @@ -0,0 +1,350 @@ + + + + + + + + + + + + + + + + + + + + + + + + + and ${criterion.condition} + + + and ${criterion.condition} #{criterion.value} + + + and ${criterion.condition} #{criterion.value} and #{criterion.secondValue} + + + and ${criterion.condition} + + #{listItem} + + + + + + + + + + + + + + + + + + + and ${criterion.condition} + + + and ${criterion.condition} #{criterion.value} + + + and ${criterion.condition} #{criterion.value} and #{criterion.secondValue} + + + and ${criterion.condition} + + #{listItem} + + + + + + + + + + + + id, assetname, assetcategoryID, isystem, isconsumables + + + + description + + + + + + + delete from jsh_assetname + where id = #{id,jdbcType=BIGINT} + + + + delete from jsh_assetname + + + + + + + insert into jsh_assetname (id, assetname, assetcategoryID, + isystem, isconsumables, description + ) + values (#{id,jdbcType=BIGINT}, #{assetname,jdbcType=VARCHAR}, #{assetcategoryid,jdbcType=BIGINT}, + #{isystem,jdbcType=SMALLINT}, #{isconsumables,jdbcType=SMALLINT}, #{description,jdbcType=LONGVARCHAR} + ) + + + + insert into jsh_assetname + + + id, + + + assetname, + + + assetcategoryID, + + + isystem, + + + isconsumables, + + + description, + + + + + #{id,jdbcType=BIGINT}, + + + #{assetname,jdbcType=VARCHAR}, + + + #{assetcategoryid,jdbcType=BIGINT}, + + + #{isystem,jdbcType=SMALLINT}, + + + #{isconsumables,jdbcType=SMALLINT}, + + + #{description,jdbcType=LONGVARCHAR}, + + + + + + + update jsh_assetname + + + id = #{record.id,jdbcType=BIGINT}, + + + assetname = #{record.assetname,jdbcType=VARCHAR}, + + + assetcategoryID = #{record.assetcategoryid,jdbcType=BIGINT}, + + + isystem = #{record.isystem,jdbcType=SMALLINT}, + + + isconsumables = #{record.isconsumables,jdbcType=SMALLINT}, + + + description = #{record.description,jdbcType=LONGVARCHAR}, + + + + + + + + + update jsh_assetname + set id = #{record.id,jdbcType=BIGINT}, + assetname = #{record.assetname,jdbcType=VARCHAR}, + assetcategoryID = #{record.assetcategoryid,jdbcType=BIGINT}, + isystem = #{record.isystem,jdbcType=SMALLINT}, + isconsumables = #{record.isconsumables,jdbcType=SMALLINT}, + description = #{record.description,jdbcType=LONGVARCHAR} + + + + + + + update jsh_assetname + set id = #{record.id,jdbcType=BIGINT}, + assetname = #{record.assetname,jdbcType=VARCHAR}, + assetcategoryID = #{record.assetcategoryid,jdbcType=BIGINT}, + isystem = #{record.isystem,jdbcType=SMALLINT}, + isconsumables = #{record.isconsumables,jdbcType=SMALLINT} + + + + + + + update jsh_assetname + + + assetname = #{assetname,jdbcType=VARCHAR}, + + + assetcategoryID = #{assetcategoryid,jdbcType=BIGINT}, + + + isystem = #{isystem,jdbcType=SMALLINT}, + + + isconsumables = #{isconsumables,jdbcType=SMALLINT}, + + + description = #{description,jdbcType=LONGVARCHAR}, + + + where id = #{id,jdbcType=BIGINT} + + + + update jsh_assetname + set assetname = #{assetname,jdbcType=VARCHAR}, + assetcategoryID = #{assetcategoryid,jdbcType=BIGINT}, + isystem = #{isystem,jdbcType=SMALLINT}, + isconsumables = #{isconsumables,jdbcType=SMALLINT}, + description = #{description,jdbcType=LONGVARCHAR} + where id = #{id,jdbcType=BIGINT} + + + + update jsh_assetname + set assetname = #{assetname,jdbcType=VARCHAR}, + assetcategoryID = #{assetcategoryid,jdbcType=BIGINT}, + isystem = #{isystem,jdbcType=SMALLINT}, + isconsumables = #{isconsumables,jdbcType=SMALLINT} + where id = #{id,jdbcType=BIGINT} + + \ No newline at end of file diff --git a/src/main/resources/mapper_xml/DepotHeadMapper.xml b/src/main/resources/mapper_xml/DepotHeadMapper.xml new file mode 100644 index 00000000..4e46eb39 --- /dev/null +++ b/src/main/resources/mapper_xml/DepotHeadMapper.xml @@ -0,0 +1,635 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + and ${criterion.condition} + + + and ${criterion.condition} #{criterion.value} + + + and ${criterion.condition} #{criterion.value} and #{criterion.secondValue} + + + and ${criterion.condition} + + #{listItem} + + + + + + + + + + + + + + + + + + + and ${criterion.condition} + + + and ${criterion.condition} #{criterion.value} + + + and ${criterion.condition} #{criterion.value} and #{criterion.secondValue} + + + and ${criterion.condition} + + #{listItem} + + + + + + + + + + + + Id, Type, SubType, ProjectId, DefaultNumber, Number, OperPersonName, CreateTime, + OperTime, OrganId, HandsPersonId, AccountId, ChangeAmount, AllocationProjectId, TotalPrice, + PayType, Remark, Salesman, AccountIdList, AccountMoneyList, Discount, DiscountMoney, + DiscountLastMoney, OtherMoney, OtherMoneyList, OtherMoneyItem, AccountDay, Status + + + + + + delete from jsh_depothead + where Id = #{id,jdbcType=BIGINT} + + + + delete from jsh_depothead + + + + + + + insert into jsh_depothead (Id, Type, SubType, + ProjectId, DefaultNumber, Number, + OperPersonName, CreateTime, OperTime, + OrganId, HandsPersonId, AccountId, + ChangeAmount, AllocationProjectId, TotalPrice, + PayType, Remark, Salesman, + AccountIdList, AccountMoneyList, Discount, + DiscountMoney, DiscountLastMoney, OtherMoney, + OtherMoneyList, OtherMoneyItem, AccountDay, + Status) + values (#{id,jdbcType=BIGINT}, #{type,jdbcType=VARCHAR}, #{subtype,jdbcType=VARCHAR}, + #{projectid,jdbcType=BIGINT}, #{defaultnumber,jdbcType=VARCHAR}, #{number,jdbcType=VARCHAR}, + #{operpersonname,jdbcType=VARCHAR}, #{createtime,jdbcType=TIMESTAMP}, #{opertime,jdbcType=TIMESTAMP}, + #{organid,jdbcType=BIGINT}, #{handspersonid,jdbcType=BIGINT}, #{accountid,jdbcType=BIGINT}, + #{changeamount,jdbcType=DOUBLE}, #{allocationprojectid,jdbcType=BIGINT}, #{totalprice,jdbcType=DOUBLE}, + #{paytype,jdbcType=VARCHAR}, #{remark,jdbcType=VARCHAR}, #{salesman,jdbcType=VARCHAR}, + #{accountidlist,jdbcType=VARCHAR}, #{accountmoneylist,jdbcType=VARCHAR}, #{discount,jdbcType=DOUBLE}, + #{discountmoney,jdbcType=DOUBLE}, #{discountlastmoney,jdbcType=DOUBLE}, #{othermoney,jdbcType=DOUBLE}, + #{othermoneylist,jdbcType=VARCHAR}, #{othermoneyitem,jdbcType=VARCHAR}, #{accountday,jdbcType=INTEGER}, + #{status,jdbcType=BIT}) + + + + insert into jsh_depothead + + + Id, + + + Type, + + + SubType, + + + ProjectId, + + + DefaultNumber, + + + Number, + + + OperPersonName, + + + CreateTime, + + + OperTime, + + + OrganId, + + + HandsPersonId, + + + AccountId, + + + ChangeAmount, + + + AllocationProjectId, + + + TotalPrice, + + + PayType, + + + Remark, + + + Salesman, + + + AccountIdList, + + + AccountMoneyList, + + + Discount, + + + DiscountMoney, + + + DiscountLastMoney, + + + OtherMoney, + + + OtherMoneyList, + + + OtherMoneyItem, + + + AccountDay, + + + Status, + + + + + #{id,jdbcType=BIGINT}, + + + #{type,jdbcType=VARCHAR}, + + + #{subtype,jdbcType=VARCHAR}, + + + #{projectid,jdbcType=BIGINT}, + + + #{defaultnumber,jdbcType=VARCHAR}, + + + #{number,jdbcType=VARCHAR}, + + + #{operpersonname,jdbcType=VARCHAR}, + + + #{createtime,jdbcType=TIMESTAMP}, + + + #{opertime,jdbcType=TIMESTAMP}, + + + #{organid,jdbcType=BIGINT}, + + + #{handspersonid,jdbcType=BIGINT}, + + + #{accountid,jdbcType=BIGINT}, + + + #{changeamount,jdbcType=DOUBLE}, + + + #{allocationprojectid,jdbcType=BIGINT}, + + + #{totalprice,jdbcType=DOUBLE}, + + + #{paytype,jdbcType=VARCHAR}, + + + #{remark,jdbcType=VARCHAR}, + + + #{salesman,jdbcType=VARCHAR}, + + + #{accountidlist,jdbcType=VARCHAR}, + + + #{accountmoneylist,jdbcType=VARCHAR}, + + + #{discount,jdbcType=DOUBLE}, + + + #{discountmoney,jdbcType=DOUBLE}, + + + #{discountlastmoney,jdbcType=DOUBLE}, + + + #{othermoney,jdbcType=DOUBLE}, + + + #{othermoneylist,jdbcType=VARCHAR}, + + + #{othermoneyitem,jdbcType=VARCHAR}, + + + #{accountday,jdbcType=INTEGER}, + + + #{status,jdbcType=BIT}, + + + + + + + update jsh_depothead + + + Id = #{record.id,jdbcType=BIGINT}, + + + Type = #{record.type,jdbcType=VARCHAR}, + + + SubType = #{record.subtype,jdbcType=VARCHAR}, + + + ProjectId = #{record.projectid,jdbcType=BIGINT}, + + + DefaultNumber = #{record.defaultnumber,jdbcType=VARCHAR}, + + + Number = #{record.number,jdbcType=VARCHAR}, + + + OperPersonName = #{record.operpersonname,jdbcType=VARCHAR}, + + + CreateTime = #{record.createtime,jdbcType=TIMESTAMP}, + + + OperTime = #{record.opertime,jdbcType=TIMESTAMP}, + + + OrganId = #{record.organid,jdbcType=BIGINT}, + + + HandsPersonId = #{record.handspersonid,jdbcType=BIGINT}, + + + AccountId = #{record.accountid,jdbcType=BIGINT}, + + + ChangeAmount = #{record.changeamount,jdbcType=DOUBLE}, + + + AllocationProjectId = #{record.allocationprojectid,jdbcType=BIGINT}, + + + TotalPrice = #{record.totalprice,jdbcType=DOUBLE}, + + + PayType = #{record.paytype,jdbcType=VARCHAR}, + + + Remark = #{record.remark,jdbcType=VARCHAR}, + + + Salesman = #{record.salesman,jdbcType=VARCHAR}, + + + AccountIdList = #{record.accountidlist,jdbcType=VARCHAR}, + + + AccountMoneyList = #{record.accountmoneylist,jdbcType=VARCHAR}, + + + Discount = #{record.discount,jdbcType=DOUBLE}, + + + DiscountMoney = #{record.discountmoney,jdbcType=DOUBLE}, + + + DiscountLastMoney = #{record.discountlastmoney,jdbcType=DOUBLE}, + + + OtherMoney = #{record.othermoney,jdbcType=DOUBLE}, + + + OtherMoneyList = #{record.othermoneylist,jdbcType=VARCHAR}, + + + OtherMoneyItem = #{record.othermoneyitem,jdbcType=VARCHAR}, + + + AccountDay = #{record.accountday,jdbcType=INTEGER}, + + + Status = #{record.status,jdbcType=BIT}, + + + + + + + + + update jsh_depothead + set Id = #{record.id,jdbcType=BIGINT}, + Type = #{record.type,jdbcType=VARCHAR}, + SubType = #{record.subtype,jdbcType=VARCHAR}, + ProjectId = #{record.projectid,jdbcType=BIGINT}, + DefaultNumber = #{record.defaultnumber,jdbcType=VARCHAR}, + Number = #{record.number,jdbcType=VARCHAR}, + OperPersonName = #{record.operpersonname,jdbcType=VARCHAR}, + CreateTime = #{record.createtime,jdbcType=TIMESTAMP}, + OperTime = #{record.opertime,jdbcType=TIMESTAMP}, + OrganId = #{record.organid,jdbcType=BIGINT}, + HandsPersonId = #{record.handspersonid,jdbcType=BIGINT}, + AccountId = #{record.accountid,jdbcType=BIGINT}, + ChangeAmount = #{record.changeamount,jdbcType=DOUBLE}, + AllocationProjectId = #{record.allocationprojectid,jdbcType=BIGINT}, + TotalPrice = #{record.totalprice,jdbcType=DOUBLE}, + PayType = #{record.paytype,jdbcType=VARCHAR}, + Remark = #{record.remark,jdbcType=VARCHAR}, + Salesman = #{record.salesman,jdbcType=VARCHAR}, + AccountIdList = #{record.accountidlist,jdbcType=VARCHAR}, + AccountMoneyList = #{record.accountmoneylist,jdbcType=VARCHAR}, + Discount = #{record.discount,jdbcType=DOUBLE}, + DiscountMoney = #{record.discountmoney,jdbcType=DOUBLE}, + DiscountLastMoney = #{record.discountlastmoney,jdbcType=DOUBLE}, + OtherMoney = #{record.othermoney,jdbcType=DOUBLE}, + OtherMoneyList = #{record.othermoneylist,jdbcType=VARCHAR}, + OtherMoneyItem = #{record.othermoneyitem,jdbcType=VARCHAR}, + AccountDay = #{record.accountday,jdbcType=INTEGER}, + Status = #{record.status,jdbcType=BIT} + + + + + + + update jsh_depothead + + + Type = #{type,jdbcType=VARCHAR}, + + + SubType = #{subtype,jdbcType=VARCHAR}, + + + ProjectId = #{projectid,jdbcType=BIGINT}, + + + DefaultNumber = #{defaultnumber,jdbcType=VARCHAR}, + + + Number = #{number,jdbcType=VARCHAR}, + + + OperPersonName = #{operpersonname,jdbcType=VARCHAR}, + + + CreateTime = #{createtime,jdbcType=TIMESTAMP}, + + + OperTime = #{opertime,jdbcType=TIMESTAMP}, + + + OrganId = #{organid,jdbcType=BIGINT}, + + + HandsPersonId = #{handspersonid,jdbcType=BIGINT}, + + + AccountId = #{accountid,jdbcType=BIGINT}, + + + ChangeAmount = #{changeamount,jdbcType=DOUBLE}, + + + AllocationProjectId = #{allocationprojectid,jdbcType=BIGINT}, + + + TotalPrice = #{totalprice,jdbcType=DOUBLE}, + + + PayType = #{paytype,jdbcType=VARCHAR}, + + + Remark = #{remark,jdbcType=VARCHAR}, + + + Salesman = #{salesman,jdbcType=VARCHAR}, + + + AccountIdList = #{accountidlist,jdbcType=VARCHAR}, + + + AccountMoneyList = #{accountmoneylist,jdbcType=VARCHAR}, + + + Discount = #{discount,jdbcType=DOUBLE}, + + + DiscountMoney = #{discountmoney,jdbcType=DOUBLE}, + + + DiscountLastMoney = #{discountlastmoney,jdbcType=DOUBLE}, + + + OtherMoney = #{othermoney,jdbcType=DOUBLE}, + + + OtherMoneyList = #{othermoneylist,jdbcType=VARCHAR}, + + + OtherMoneyItem = #{othermoneyitem,jdbcType=VARCHAR}, + + + AccountDay = #{accountday,jdbcType=INTEGER}, + + + Status = #{status,jdbcType=BIT}, + + + where Id = #{id,jdbcType=BIGINT} + + + + update jsh_depothead + set Type = #{type,jdbcType=VARCHAR}, + SubType = #{subtype,jdbcType=VARCHAR}, + ProjectId = #{projectid,jdbcType=BIGINT}, + DefaultNumber = #{defaultnumber,jdbcType=VARCHAR}, + Number = #{number,jdbcType=VARCHAR}, + OperPersonName = #{operpersonname,jdbcType=VARCHAR}, + CreateTime = #{createtime,jdbcType=TIMESTAMP}, + OperTime = #{opertime,jdbcType=TIMESTAMP}, + OrganId = #{organid,jdbcType=BIGINT}, + HandsPersonId = #{handspersonid,jdbcType=BIGINT}, + AccountId = #{accountid,jdbcType=BIGINT}, + ChangeAmount = #{changeamount,jdbcType=DOUBLE}, + AllocationProjectId = #{allocationprojectid,jdbcType=BIGINT}, + TotalPrice = #{totalprice,jdbcType=DOUBLE}, + PayType = #{paytype,jdbcType=VARCHAR}, + Remark = #{remark,jdbcType=VARCHAR}, + Salesman = #{salesman,jdbcType=VARCHAR}, + AccountIdList = #{accountidlist,jdbcType=VARCHAR}, + AccountMoneyList = #{accountmoneylist,jdbcType=VARCHAR}, + Discount = #{discount,jdbcType=DOUBLE}, + DiscountMoney = #{discountmoney,jdbcType=DOUBLE}, + DiscountLastMoney = #{discountlastmoney,jdbcType=DOUBLE}, + OtherMoney = #{othermoney,jdbcType=DOUBLE}, + OtherMoneyList = #{othermoneylist,jdbcType=VARCHAR}, + OtherMoneyItem = #{othermoneyitem,jdbcType=VARCHAR}, + AccountDay = #{accountday,jdbcType=INTEGER}, + Status = #{status,jdbcType=BIT} + where Id = #{id,jdbcType=BIGINT} + + \ No newline at end of file diff --git a/src/main/resources/mapper_xml/DepotHeadMapperEx.xml b/src/main/resources/mapper_xml/DepotHeadMapperEx.xml new file mode 100644 index 00000000..9d7204cf --- /dev/null +++ b/src/main/resources/mapper_xml/DepotHeadMapperEx.xml @@ -0,0 +1,284 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/resources/mapper_xml/DepotItemMapper.xml b/src/main/resources/mapper_xml/DepotItemMapper.xml new file mode 100644 index 00000000..9b2de519 --- /dev/null +++ b/src/main/resources/mapper_xml/DepotItemMapper.xml @@ -0,0 +1,555 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + and ${criterion.condition} + + + and ${criterion.condition} #{criterion.value} + + + and ${criterion.condition} #{criterion.value} and #{criterion.secondValue} + + + and ${criterion.condition} + + #{listItem} + + + + + + + + + + + + + + + + + + + and ${criterion.condition} + + + and ${criterion.condition} #{criterion.value} + + + and ${criterion.condition} #{criterion.value} and #{criterion.secondValue} + + + and ${criterion.condition} + + #{listItem} + + + + + + + + + + + + Id, HeaderId, MaterialId, MUnit, OperNumber, BasicNumber, UnitPrice, TaxUnitPrice, + AllPrice, Remark, Img, Incidentals, DepotId, AnotherDepotId, TaxRate, TaxMoney, TaxLastMoney, + OtherField1, OtherField2, OtherField3, OtherField4, OtherField5, MType + + + + + + delete from jsh_depotitem + where Id = #{id,jdbcType=BIGINT} + + + + delete from jsh_depotitem + + + + + + + insert into jsh_depotitem (Id, HeaderId, MaterialId, + MUnit, OperNumber, BasicNumber, + UnitPrice, TaxUnitPrice, AllPrice, + Remark, Img, Incidentals, + DepotId, AnotherDepotId, TaxRate, + TaxMoney, TaxLastMoney, OtherField1, + OtherField2, OtherField3, OtherField4, + OtherField5, MType) + values (#{id,jdbcType=BIGINT}, #{headerid,jdbcType=BIGINT}, #{materialid,jdbcType=BIGINT}, + #{munit,jdbcType=VARCHAR}, #{opernumber,jdbcType=DOUBLE}, #{basicnumber,jdbcType=DOUBLE}, + #{unitprice,jdbcType=DOUBLE}, #{taxunitprice,jdbcType=DOUBLE}, #{allprice,jdbcType=DOUBLE}, + #{remark,jdbcType=VARCHAR}, #{img,jdbcType=VARCHAR}, #{incidentals,jdbcType=DOUBLE}, + #{depotid,jdbcType=BIGINT}, #{anotherdepotid,jdbcType=BIGINT}, #{taxrate,jdbcType=DOUBLE}, + #{taxmoney,jdbcType=DOUBLE}, #{taxlastmoney,jdbcType=DOUBLE}, #{otherfield1,jdbcType=VARCHAR}, + #{otherfield2,jdbcType=VARCHAR}, #{otherfield3,jdbcType=VARCHAR}, #{otherfield4,jdbcType=VARCHAR}, + #{otherfield5,jdbcType=VARCHAR}, #{mtype,jdbcType=VARCHAR}) + + + + insert into jsh_depotitem + + + Id, + + + HeaderId, + + + MaterialId, + + + MUnit, + + + OperNumber, + + + BasicNumber, + + + UnitPrice, + + + TaxUnitPrice, + + + AllPrice, + + + Remark, + + + Img, + + + Incidentals, + + + DepotId, + + + AnotherDepotId, + + + TaxRate, + + + TaxMoney, + + + TaxLastMoney, + + + OtherField1, + + + OtherField2, + + + OtherField3, + + + OtherField4, + + + OtherField5, + + + MType, + + + + + #{id,jdbcType=BIGINT}, + + + #{headerid,jdbcType=BIGINT}, + + + #{materialid,jdbcType=BIGINT}, + + + #{munit,jdbcType=VARCHAR}, + + + #{opernumber,jdbcType=DOUBLE}, + + + #{basicnumber,jdbcType=DOUBLE}, + + + #{unitprice,jdbcType=DOUBLE}, + + + #{taxunitprice,jdbcType=DOUBLE}, + + + #{allprice,jdbcType=DOUBLE}, + + + #{remark,jdbcType=VARCHAR}, + + + #{img,jdbcType=VARCHAR}, + + + #{incidentals,jdbcType=DOUBLE}, + + + #{depotid,jdbcType=BIGINT}, + + + #{anotherdepotid,jdbcType=BIGINT}, + + + #{taxrate,jdbcType=DOUBLE}, + + + #{taxmoney,jdbcType=DOUBLE}, + + + #{taxlastmoney,jdbcType=DOUBLE}, + + + #{otherfield1,jdbcType=VARCHAR}, + + + #{otherfield2,jdbcType=VARCHAR}, + + + #{otherfield3,jdbcType=VARCHAR}, + + + #{otherfield4,jdbcType=VARCHAR}, + + + #{otherfield5,jdbcType=VARCHAR}, + + + #{mtype,jdbcType=VARCHAR}, + + + + + + + update jsh_depotitem + + + Id = #{record.id,jdbcType=BIGINT}, + + + HeaderId = #{record.headerid,jdbcType=BIGINT}, + + + MaterialId = #{record.materialid,jdbcType=BIGINT}, + + + MUnit = #{record.munit,jdbcType=VARCHAR}, + + + OperNumber = #{record.opernumber,jdbcType=DOUBLE}, + + + BasicNumber = #{record.basicnumber,jdbcType=DOUBLE}, + + + UnitPrice = #{record.unitprice,jdbcType=DOUBLE}, + + + TaxUnitPrice = #{record.taxunitprice,jdbcType=DOUBLE}, + + + AllPrice = #{record.allprice,jdbcType=DOUBLE}, + + + Remark = #{record.remark,jdbcType=VARCHAR}, + + + Img = #{record.img,jdbcType=VARCHAR}, + + + Incidentals = #{record.incidentals,jdbcType=DOUBLE}, + + + DepotId = #{record.depotid,jdbcType=BIGINT}, + + + AnotherDepotId = #{record.anotherdepotid,jdbcType=BIGINT}, + + + TaxRate = #{record.taxrate,jdbcType=DOUBLE}, + + + TaxMoney = #{record.taxmoney,jdbcType=DOUBLE}, + + + TaxLastMoney = #{record.taxlastmoney,jdbcType=DOUBLE}, + + + OtherField1 = #{record.otherfield1,jdbcType=VARCHAR}, + + + OtherField2 = #{record.otherfield2,jdbcType=VARCHAR}, + + + OtherField3 = #{record.otherfield3,jdbcType=VARCHAR}, + + + OtherField4 = #{record.otherfield4,jdbcType=VARCHAR}, + + + OtherField5 = #{record.otherfield5,jdbcType=VARCHAR}, + + + MType = #{record.mtype,jdbcType=VARCHAR}, + + + + + + + + + update jsh_depotitem + set Id = #{record.id,jdbcType=BIGINT}, + HeaderId = #{record.headerid,jdbcType=BIGINT}, + MaterialId = #{record.materialid,jdbcType=BIGINT}, + MUnit = #{record.munit,jdbcType=VARCHAR}, + OperNumber = #{record.opernumber,jdbcType=DOUBLE}, + BasicNumber = #{record.basicnumber,jdbcType=DOUBLE}, + UnitPrice = #{record.unitprice,jdbcType=DOUBLE}, + TaxUnitPrice = #{record.taxunitprice,jdbcType=DOUBLE}, + AllPrice = #{record.allprice,jdbcType=DOUBLE}, + Remark = #{record.remark,jdbcType=VARCHAR}, + Img = #{record.img,jdbcType=VARCHAR}, + Incidentals = #{record.incidentals,jdbcType=DOUBLE}, + DepotId = #{record.depotid,jdbcType=BIGINT}, + AnotherDepotId = #{record.anotherdepotid,jdbcType=BIGINT}, + TaxRate = #{record.taxrate,jdbcType=DOUBLE}, + TaxMoney = #{record.taxmoney,jdbcType=DOUBLE}, + TaxLastMoney = #{record.taxlastmoney,jdbcType=DOUBLE}, + OtherField1 = #{record.otherfield1,jdbcType=VARCHAR}, + OtherField2 = #{record.otherfield2,jdbcType=VARCHAR}, + OtherField3 = #{record.otherfield3,jdbcType=VARCHAR}, + OtherField4 = #{record.otherfield4,jdbcType=VARCHAR}, + OtherField5 = #{record.otherfield5,jdbcType=VARCHAR}, + MType = #{record.mtype,jdbcType=VARCHAR} + + + + + + + update jsh_depotitem + + + HeaderId = #{headerid,jdbcType=BIGINT}, + + + MaterialId = #{materialid,jdbcType=BIGINT}, + + + MUnit = #{munit,jdbcType=VARCHAR}, + + + OperNumber = #{opernumber,jdbcType=DOUBLE}, + + + BasicNumber = #{basicnumber,jdbcType=DOUBLE}, + + + UnitPrice = #{unitprice,jdbcType=DOUBLE}, + + + TaxUnitPrice = #{taxunitprice,jdbcType=DOUBLE}, + + + AllPrice = #{allprice,jdbcType=DOUBLE}, + + + Remark = #{remark,jdbcType=VARCHAR}, + + + Img = #{img,jdbcType=VARCHAR}, + + + Incidentals = #{incidentals,jdbcType=DOUBLE}, + + + DepotId = #{depotid,jdbcType=BIGINT}, + + + AnotherDepotId = #{anotherdepotid,jdbcType=BIGINT}, + + + TaxRate = #{taxrate,jdbcType=DOUBLE}, + + + TaxMoney = #{taxmoney,jdbcType=DOUBLE}, + + + TaxLastMoney = #{taxlastmoney,jdbcType=DOUBLE}, + + + OtherField1 = #{otherfield1,jdbcType=VARCHAR}, + + + OtherField2 = #{otherfield2,jdbcType=VARCHAR}, + + + OtherField3 = #{otherfield3,jdbcType=VARCHAR}, + + + OtherField4 = #{otherfield4,jdbcType=VARCHAR}, + + + OtherField5 = #{otherfield5,jdbcType=VARCHAR}, + + + MType = #{mtype,jdbcType=VARCHAR}, + + + where Id = #{id,jdbcType=BIGINT} + + + + update jsh_depotitem + set HeaderId = #{headerid,jdbcType=BIGINT}, + MaterialId = #{materialid,jdbcType=BIGINT}, + MUnit = #{munit,jdbcType=VARCHAR}, + OperNumber = #{opernumber,jdbcType=DOUBLE}, + BasicNumber = #{basicnumber,jdbcType=DOUBLE}, + UnitPrice = #{unitprice,jdbcType=DOUBLE}, + TaxUnitPrice = #{taxunitprice,jdbcType=DOUBLE}, + AllPrice = #{allprice,jdbcType=DOUBLE}, + Remark = #{remark,jdbcType=VARCHAR}, + Img = #{img,jdbcType=VARCHAR}, + Incidentals = #{incidentals,jdbcType=DOUBLE}, + DepotId = #{depotid,jdbcType=BIGINT}, + AnotherDepotId = #{anotherdepotid,jdbcType=BIGINT}, + TaxRate = #{taxrate,jdbcType=DOUBLE}, + TaxMoney = #{taxmoney,jdbcType=DOUBLE}, + TaxLastMoney = #{taxlastmoney,jdbcType=DOUBLE}, + OtherField1 = #{otherfield1,jdbcType=VARCHAR}, + OtherField2 = #{otherfield2,jdbcType=VARCHAR}, + OtherField3 = #{otherfield3,jdbcType=VARCHAR}, + OtherField4 = #{otherfield4,jdbcType=VARCHAR}, + OtherField5 = #{otherfield5,jdbcType=VARCHAR}, + MType = #{mtype,jdbcType=VARCHAR} + where Id = #{id,jdbcType=BIGINT} + + \ No newline at end of file diff --git a/src/main/resources/mapper_xml/DepotItemMapperEx.xml b/src/main/resources/mapper_xml/DepotItemMapperEx.xml new file mode 100644 index 00000000..f585bacd --- /dev/null +++ b/src/main/resources/mapper_xml/DepotItemMapperEx.xml @@ -0,0 +1,268 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/resources/mapper_xml/DepotMapper.xml b/src/main/resources/mapper_xml/DepotMapper.xml new file mode 100644 index 00000000..ca29c900 --- /dev/null +++ b/src/main/resources/mapper_xml/DepotMapper.xml @@ -0,0 +1,318 @@ + + + + + + + + + + + + + + + + + + + + + + + + and ${criterion.condition} + + + and ${criterion.condition} #{criterion.value} + + + and ${criterion.condition} #{criterion.value} and #{criterion.secondValue} + + + and ${criterion.condition} + + #{listItem} + + + + + + + + + + + + + + + + + + + and ${criterion.condition} + + + and ${criterion.condition} #{criterion.value} + + + and ${criterion.condition} #{criterion.value} and #{criterion.secondValue} + + + and ${criterion.condition} + + #{listItem} + + + + + + + + + + + + id, name, address, warehousing, truckage, type, sort, remark + + + + + + delete from jsh_depot + where id = #{id,jdbcType=BIGINT} + + + + delete from jsh_depot + + + + + + + insert into jsh_depot (id, name, address, + warehousing, truckage, type, + sort, remark) + values (#{id,jdbcType=BIGINT}, #{name,jdbcType=VARCHAR}, #{address,jdbcType=VARCHAR}, + #{warehousing,jdbcType=DOUBLE}, #{truckage,jdbcType=DOUBLE}, #{type,jdbcType=INTEGER}, + #{sort,jdbcType=VARCHAR}, #{remark,jdbcType=VARCHAR}) + + + + insert into jsh_depot + + + id, + + + name, + + + address, + + + warehousing, + + + truckage, + + + type, + + + sort, + + + remark, + + + + + #{id,jdbcType=BIGINT}, + + + #{name,jdbcType=VARCHAR}, + + + #{address,jdbcType=VARCHAR}, + + + #{warehousing,jdbcType=DOUBLE}, + + + #{truckage,jdbcType=DOUBLE}, + + + #{type,jdbcType=INTEGER}, + + + #{sort,jdbcType=VARCHAR}, + + + #{remark,jdbcType=VARCHAR}, + + + + + + + update jsh_depot + + + id = #{record.id,jdbcType=BIGINT}, + + + name = #{record.name,jdbcType=VARCHAR}, + + + address = #{record.address,jdbcType=VARCHAR}, + + + warehousing = #{record.warehousing,jdbcType=DOUBLE}, + + + truckage = #{record.truckage,jdbcType=DOUBLE}, + + + type = #{record.type,jdbcType=INTEGER}, + + + sort = #{record.sort,jdbcType=VARCHAR}, + + + remark = #{record.remark,jdbcType=VARCHAR}, + + + + + + + + + update jsh_depot + set id = #{record.id,jdbcType=BIGINT}, + name = #{record.name,jdbcType=VARCHAR}, + address = #{record.address,jdbcType=VARCHAR}, + warehousing = #{record.warehousing,jdbcType=DOUBLE}, + truckage = #{record.truckage,jdbcType=DOUBLE}, + type = #{record.type,jdbcType=INTEGER}, + sort = #{record.sort,jdbcType=VARCHAR}, + remark = #{record.remark,jdbcType=VARCHAR} + + + + + + + update jsh_depot + + + name = #{name,jdbcType=VARCHAR}, + + + address = #{address,jdbcType=VARCHAR}, + + + warehousing = #{warehousing,jdbcType=DOUBLE}, + + + truckage = #{truckage,jdbcType=DOUBLE}, + + + type = #{type,jdbcType=INTEGER}, + + + sort = #{sort,jdbcType=VARCHAR}, + + + remark = #{remark,jdbcType=VARCHAR}, + + + where id = #{id,jdbcType=BIGINT} + + + + update jsh_depot + set name = #{name,jdbcType=VARCHAR}, + address = #{address,jdbcType=VARCHAR}, + warehousing = #{warehousing,jdbcType=DOUBLE}, + truckage = #{truckage,jdbcType=DOUBLE}, + type = #{type,jdbcType=INTEGER}, + sort = #{sort,jdbcType=VARCHAR}, + remark = #{remark,jdbcType=VARCHAR} + where id = #{id,jdbcType=BIGINT} + + \ No newline at end of file diff --git a/src/main/resources/mapper_xml/DepotMapperEx.xml b/src/main/resources/mapper_xml/DepotMapperEx.xml new file mode 100644 index 00000000..1843e404 --- /dev/null +++ b/src/main/resources/mapper_xml/DepotMapperEx.xml @@ -0,0 +1,36 @@ + + + + + + \ No newline at end of file diff --git a/src/main/resources/mapper_xml/FunctionsMapper.xml b/src/main/resources/mapper_xml/FunctionsMapper.xml new file mode 100644 index 00000000..acd10d72 --- /dev/null +++ b/src/main/resources/mapper_xml/FunctionsMapper.xml @@ -0,0 +1,348 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + and ${criterion.condition} + + + and ${criterion.condition} #{criterion.value} + + + and ${criterion.condition} #{criterion.value} and #{criterion.secondValue} + + + and ${criterion.condition} + + #{listItem} + + + + + + + + + + + + + + + + + + + and ${criterion.condition} + + + and ${criterion.condition} #{criterion.value} + + + and ${criterion.condition} #{criterion.value} and #{criterion.secondValue} + + + and ${criterion.condition} + + #{listItem} + + + + + + + + + + + + Id, Number, Name, PNumber, URL, State, Sort, Enabled, Type, PushBtn + + + + + + delete from jsh_functions + where Id = #{id,jdbcType=BIGINT} + + + + delete from jsh_functions + + + + + + + insert into jsh_functions (Id, Number, Name, + PNumber, URL, State, Sort, + Enabled, Type, PushBtn) + values (#{id,jdbcType=BIGINT}, #{number,jdbcType=VARCHAR}, #{name,jdbcType=VARCHAR}, + #{pnumber,jdbcType=VARCHAR}, #{url,jdbcType=VARCHAR}, #{state,jdbcType=BIT}, #{sort,jdbcType=VARCHAR}, + #{enabled,jdbcType=BIT}, #{type,jdbcType=VARCHAR}, #{pushbtn,jdbcType=VARCHAR}) + + + + insert into jsh_functions + + + Id, + + + Number, + + + Name, + + + PNumber, + + + URL, + + + State, + + + Sort, + + + Enabled, + + + Type, + + + PushBtn, + + + + + #{id,jdbcType=BIGINT}, + + + #{number,jdbcType=VARCHAR}, + + + #{name,jdbcType=VARCHAR}, + + + #{pnumber,jdbcType=VARCHAR}, + + + #{url,jdbcType=VARCHAR}, + + + #{state,jdbcType=BIT}, + + + #{sort,jdbcType=VARCHAR}, + + + #{enabled,jdbcType=BIT}, + + + #{type,jdbcType=VARCHAR}, + + + #{pushbtn,jdbcType=VARCHAR}, + + + + + + + update jsh_functions + + + Id = #{record.id,jdbcType=BIGINT}, + + + Number = #{record.number,jdbcType=VARCHAR}, + + + Name = #{record.name,jdbcType=VARCHAR}, + + + PNumber = #{record.pnumber,jdbcType=VARCHAR}, + + + URL = #{record.url,jdbcType=VARCHAR}, + + + State = #{record.state,jdbcType=BIT}, + + + Sort = #{record.sort,jdbcType=VARCHAR}, + + + Enabled = #{record.enabled,jdbcType=BIT}, + + + Type = #{record.type,jdbcType=VARCHAR}, + + + PushBtn = #{record.pushbtn,jdbcType=VARCHAR}, + + + + + + + + + update jsh_functions + set Id = #{record.id,jdbcType=BIGINT}, + Number = #{record.number,jdbcType=VARCHAR}, + Name = #{record.name,jdbcType=VARCHAR}, + PNumber = #{record.pnumber,jdbcType=VARCHAR}, + URL = #{record.url,jdbcType=VARCHAR}, + State = #{record.state,jdbcType=BIT}, + Sort = #{record.sort,jdbcType=VARCHAR}, + Enabled = #{record.enabled,jdbcType=BIT}, + Type = #{record.type,jdbcType=VARCHAR}, + PushBtn = #{record.pushbtn,jdbcType=VARCHAR} + + + + + + + update jsh_functions + + + Number = #{number,jdbcType=VARCHAR}, + + + Name = #{name,jdbcType=VARCHAR}, + + + PNumber = #{pnumber,jdbcType=VARCHAR}, + + + URL = #{url,jdbcType=VARCHAR}, + + + State = #{state,jdbcType=BIT}, + + + Sort = #{sort,jdbcType=VARCHAR}, + + + Enabled = #{enabled,jdbcType=BIT}, + + + Type = #{type,jdbcType=VARCHAR}, + + + PushBtn = #{pushbtn,jdbcType=VARCHAR}, + + + where Id = #{id,jdbcType=BIGINT} + + + + update jsh_functions + set Number = #{number,jdbcType=VARCHAR}, + Name = #{name,jdbcType=VARCHAR}, + PNumber = #{pnumber,jdbcType=VARCHAR}, + URL = #{url,jdbcType=VARCHAR}, + State = #{state,jdbcType=BIT}, + Sort = #{sort,jdbcType=VARCHAR}, + Enabled = #{enabled,jdbcType=BIT}, + Type = #{type,jdbcType=VARCHAR}, + PushBtn = #{pushbtn,jdbcType=VARCHAR} + where Id = #{id,jdbcType=BIGINT} + + \ No newline at end of file diff --git a/src/main/resources/mapper_xml/FunctionsMapperEx.xml b/src/main/resources/mapper_xml/FunctionsMapperEx.xml new file mode 100644 index 00000000..846a1df9 --- /dev/null +++ b/src/main/resources/mapper_xml/FunctionsMapperEx.xml @@ -0,0 +1,30 @@ + + + + + + \ No newline at end of file diff --git a/src/main/resources/mapper_xml/InOutItemMapper.xml b/src/main/resources/mapper_xml/InOutItemMapper.xml new file mode 100644 index 00000000..c386d91f --- /dev/null +++ b/src/main/resources/mapper_xml/InOutItemMapper.xml @@ -0,0 +1,256 @@ + + + + + + + + + + + + + + + + + + + + and ${criterion.condition} + + + and ${criterion.condition} #{criterion.value} + + + and ${criterion.condition} #{criterion.value} and #{criterion.secondValue} + + + and ${criterion.condition} + + #{listItem} + + + + + + + + + + + + + + + + + + + and ${criterion.condition} + + + and ${criterion.condition} #{criterion.value} + + + and ${criterion.condition} #{criterion.value} and #{criterion.secondValue} + + + and ${criterion.condition} + + #{listItem} + + + + + + + + + + + + Id, Name, Type, Remark + + + + + + delete from jsh_inoutitem + where Id = #{id,jdbcType=BIGINT} + + + + delete from jsh_inoutitem + + + + + + + insert into jsh_inoutitem (Id, Name, Type, + Remark) + values (#{id,jdbcType=BIGINT}, #{name,jdbcType=VARCHAR}, #{type,jdbcType=VARCHAR}, + #{remark,jdbcType=VARCHAR}) + + + + insert into jsh_inoutitem + + + Id, + + + Name, + + + Type, + + + Remark, + + + + + #{id,jdbcType=BIGINT}, + + + #{name,jdbcType=VARCHAR}, + + + #{type,jdbcType=VARCHAR}, + + + #{remark,jdbcType=VARCHAR}, + + + + + + + update jsh_inoutitem + + + Id = #{record.id,jdbcType=BIGINT}, + + + Name = #{record.name,jdbcType=VARCHAR}, + + + Type = #{record.type,jdbcType=VARCHAR}, + + + Remark = #{record.remark,jdbcType=VARCHAR}, + + + + + + + + + update jsh_inoutitem + set Id = #{record.id,jdbcType=BIGINT}, + Name = #{record.name,jdbcType=VARCHAR}, + Type = #{record.type,jdbcType=VARCHAR}, + Remark = #{record.remark,jdbcType=VARCHAR} + + + + + + + update jsh_inoutitem + + + Name = #{name,jdbcType=VARCHAR}, + + + Type = #{type,jdbcType=VARCHAR}, + + + Remark = #{remark,jdbcType=VARCHAR}, + + + where Id = #{id,jdbcType=BIGINT} + + + + update jsh_inoutitem + set Name = #{name,jdbcType=VARCHAR}, + Type = #{type,jdbcType=VARCHAR}, + Remark = #{remark,jdbcType=VARCHAR} + where Id = #{id,jdbcType=BIGINT} + + \ No newline at end of file diff --git a/src/main/resources/mapper_xml/InOutItemMapperEx.xml b/src/main/resources/mapper_xml/InOutItemMapperEx.xml new file mode 100644 index 00000000..effc54b2 --- /dev/null +++ b/src/main/resources/mapper_xml/InOutItemMapperEx.xml @@ -0,0 +1,36 @@ + + + + + + \ No newline at end of file diff --git a/src/main/resources/mapper_xml/LogMapper.xml b/src/main/resources/mapper_xml/LogMapper.xml new file mode 100644 index 00000000..f13bde0d --- /dev/null +++ b/src/main/resources/mapper_xml/LogMapper.xml @@ -0,0 +1,318 @@ + + + + + + + + + + + + + + + + + + + + + + + + and ${criterion.condition} + + + and ${criterion.condition} #{criterion.value} + + + and ${criterion.condition} #{criterion.value} and #{criterion.secondValue} + + + and ${criterion.condition} + + #{listItem} + + + + + + + + + + + + + + + + + + + and ${criterion.condition} + + + and ${criterion.condition} #{criterion.value} + + + and ${criterion.condition} #{criterion.value} and #{criterion.secondValue} + + + and ${criterion.condition} + + #{listItem} + + + + + + + + + + + + id, userID, operation, clientIP, createtime, status, contentdetails, remark + + + + + + delete from jsh_log + where id = #{id,jdbcType=BIGINT} + + + + delete from jsh_log + + + + + + + insert into jsh_log (id, userID, operation, + clientIP, createtime, status, + contentdetails, remark) + values (#{id,jdbcType=BIGINT}, #{userid,jdbcType=BIGINT}, #{operation,jdbcType=VARCHAR}, + #{clientip,jdbcType=VARCHAR}, #{createtime,jdbcType=TIMESTAMP}, #{status,jdbcType=TINYINT}, + #{contentdetails,jdbcType=VARCHAR}, #{remark,jdbcType=VARCHAR}) + + + + insert into jsh_log + + + id, + + + userID, + + + operation, + + + clientIP, + + + createtime, + + + status, + + + contentdetails, + + + remark, + + + + + #{id,jdbcType=BIGINT}, + + + #{userid,jdbcType=BIGINT}, + + + #{operation,jdbcType=VARCHAR}, + + + #{clientip,jdbcType=VARCHAR}, + + + #{createtime,jdbcType=TIMESTAMP}, + + + #{status,jdbcType=TINYINT}, + + + #{contentdetails,jdbcType=VARCHAR}, + + + #{remark,jdbcType=VARCHAR}, + + + + + + + update jsh_log + + + id = #{record.id,jdbcType=BIGINT}, + + + userID = #{record.userid,jdbcType=BIGINT}, + + + operation = #{record.operation,jdbcType=VARCHAR}, + + + clientIP = #{record.clientip,jdbcType=VARCHAR}, + + + createtime = #{record.createtime,jdbcType=TIMESTAMP}, + + + status = #{record.status,jdbcType=TINYINT}, + + + contentdetails = #{record.contentdetails,jdbcType=VARCHAR}, + + + remark = #{record.remark,jdbcType=VARCHAR}, + + + + + + + + + update jsh_log + set id = #{record.id,jdbcType=BIGINT}, + userID = #{record.userid,jdbcType=BIGINT}, + operation = #{record.operation,jdbcType=VARCHAR}, + clientIP = #{record.clientip,jdbcType=VARCHAR}, + createtime = #{record.createtime,jdbcType=TIMESTAMP}, + status = #{record.status,jdbcType=TINYINT}, + contentdetails = #{record.contentdetails,jdbcType=VARCHAR}, + remark = #{record.remark,jdbcType=VARCHAR} + + + + + + + update jsh_log + + + userID = #{userid,jdbcType=BIGINT}, + + + operation = #{operation,jdbcType=VARCHAR}, + + + clientIP = #{clientip,jdbcType=VARCHAR}, + + + createtime = #{createtime,jdbcType=TIMESTAMP}, + + + status = #{status,jdbcType=TINYINT}, + + + contentdetails = #{contentdetails,jdbcType=VARCHAR}, + + + remark = #{remark,jdbcType=VARCHAR}, + + + where id = #{id,jdbcType=BIGINT} + + + + update jsh_log + set userID = #{userid,jdbcType=BIGINT}, + operation = #{operation,jdbcType=VARCHAR}, + clientIP = #{clientip,jdbcType=VARCHAR}, + createtime = #{createtime,jdbcType=TIMESTAMP}, + status = #{status,jdbcType=TINYINT}, + contentdetails = #{contentdetails,jdbcType=VARCHAR}, + remark = #{remark,jdbcType=VARCHAR} + where id = #{id,jdbcType=BIGINT} + + \ No newline at end of file diff --git a/src/main/resources/mapper_xml/LogMapperEx.xml b/src/main/resources/mapper_xml/LogMapperEx.xml new file mode 100644 index 00000000..875583e5 --- /dev/null +++ b/src/main/resources/mapper_xml/LogMapperEx.xml @@ -0,0 +1,61 @@ + + + + + + \ No newline at end of file diff --git a/src/main/resources/mapper_xml/MaterialCategoryMapper.xml b/src/main/resources/mapper_xml/MaterialCategoryMapper.xml new file mode 100644 index 00000000..8fccced5 --- /dev/null +++ b/src/main/resources/mapper_xml/MaterialCategoryMapper.xml @@ -0,0 +1,256 @@ + + + + + + + + + + + + + + + + + + + + and ${criterion.condition} + + + and ${criterion.condition} #{criterion.value} + + + and ${criterion.condition} #{criterion.value} and #{criterion.secondValue} + + + and ${criterion.condition} + + #{listItem} + + + + + + + + + + + + + + + + + + + and ${criterion.condition} + + + and ${criterion.condition} #{criterion.value} + + + and ${criterion.condition} #{criterion.value} and #{criterion.secondValue} + + + and ${criterion.condition} + + #{listItem} + + + + + + + + + + + + Id, Name, CategoryLevel, ParentId + + + + + + delete from jsh_materialcategory + where Id = #{id,jdbcType=BIGINT} + + + + delete from jsh_materialcategory + + + + + + + insert into jsh_materialcategory (Id, Name, CategoryLevel, + ParentId) + values (#{id,jdbcType=BIGINT}, #{name,jdbcType=VARCHAR}, #{categorylevel,jdbcType=SMALLINT}, + #{parentid,jdbcType=BIGINT}) + + + + insert into jsh_materialcategory + + + Id, + + + Name, + + + CategoryLevel, + + + ParentId, + + + + + #{id,jdbcType=BIGINT}, + + + #{name,jdbcType=VARCHAR}, + + + #{categorylevel,jdbcType=SMALLINT}, + + + #{parentid,jdbcType=BIGINT}, + + + + + + + update jsh_materialcategory + + + Id = #{record.id,jdbcType=BIGINT}, + + + Name = #{record.name,jdbcType=VARCHAR}, + + + CategoryLevel = #{record.categorylevel,jdbcType=SMALLINT}, + + + ParentId = #{record.parentid,jdbcType=BIGINT}, + + + + + + + + + update jsh_materialcategory + set Id = #{record.id,jdbcType=BIGINT}, + Name = #{record.name,jdbcType=VARCHAR}, + CategoryLevel = #{record.categorylevel,jdbcType=SMALLINT}, + ParentId = #{record.parentid,jdbcType=BIGINT} + + + + + + + update jsh_materialcategory + + + Name = #{name,jdbcType=VARCHAR}, + + + CategoryLevel = #{categorylevel,jdbcType=SMALLINT}, + + + ParentId = #{parentid,jdbcType=BIGINT}, + + + where Id = #{id,jdbcType=BIGINT} + + + + update jsh_materialcategory + set Name = #{name,jdbcType=VARCHAR}, + CategoryLevel = #{categorylevel,jdbcType=SMALLINT}, + ParentId = #{parentid,jdbcType=BIGINT} + where Id = #{id,jdbcType=BIGINT} + + \ No newline at end of file diff --git a/src/main/resources/mapper_xml/MaterialCategoryMapperEx.xml b/src/main/resources/mapper_xml/MaterialCategoryMapperEx.xml new file mode 100644 index 00000000..9ad69e85 --- /dev/null +++ b/src/main/resources/mapper_xml/MaterialCategoryMapperEx.xml @@ -0,0 +1,30 @@ + + + + + + \ No newline at end of file diff --git a/src/main/resources/mapper_xml/MaterialMapper.xml b/src/main/resources/mapper_xml/MaterialMapper.xml new file mode 100644 index 00000000..6f4ac744 --- /dev/null +++ b/src/main/resources/mapper_xml/MaterialMapper.xml @@ -0,0 +1,555 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + and ${criterion.condition} + + + and ${criterion.condition} #{criterion.value} + + + and ${criterion.condition} #{criterion.value} and #{criterion.secondValue} + + + and ${criterion.condition} + + #{listItem} + + + + + + + + + + + + + + + + + + + and ${criterion.condition} + + + and ${criterion.condition} #{criterion.value} + + + and ${criterion.condition} #{criterion.value} and #{criterion.secondValue} + + + and ${criterion.condition} + + #{listItem} + + + + + + + + + + + + Id, CategoryId, Name, Mfrs, Packing, SafetyStock, Model, Standard, Color, Unit, Remark, + RetailPrice, LowPrice, PresetPriceOne, PresetPriceTwo, UnitId, FirstOutUnit, FirstInUnit, + PriceStrategy, Enabled, OtherField1, OtherField2, OtherField3 + + + + + + delete from jsh_material + where Id = #{id,jdbcType=BIGINT} + + + + delete from jsh_material + + + + + + + insert into jsh_material (Id, CategoryId, Name, + Mfrs, Packing, SafetyStock, + Model, Standard, Color, + Unit, Remark, RetailPrice, + LowPrice, PresetPriceOne, PresetPriceTwo, + UnitId, FirstOutUnit, FirstInUnit, + PriceStrategy, Enabled, OtherField1, + OtherField2, OtherField3) + values (#{id,jdbcType=BIGINT}, #{categoryid,jdbcType=BIGINT}, #{name,jdbcType=VARCHAR}, + #{mfrs,jdbcType=VARCHAR}, #{packing,jdbcType=DOUBLE}, #{safetystock,jdbcType=DOUBLE}, + #{model,jdbcType=VARCHAR}, #{standard,jdbcType=VARCHAR}, #{color,jdbcType=VARCHAR}, + #{unit,jdbcType=VARCHAR}, #{remark,jdbcType=VARCHAR}, #{retailprice,jdbcType=DOUBLE}, + #{lowprice,jdbcType=DOUBLE}, #{presetpriceone,jdbcType=DOUBLE}, #{presetpricetwo,jdbcType=DOUBLE}, + #{unitid,jdbcType=BIGINT}, #{firstoutunit,jdbcType=VARCHAR}, #{firstinunit,jdbcType=VARCHAR}, + #{pricestrategy,jdbcType=VARCHAR}, #{enabled,jdbcType=BIT}, #{otherfield1,jdbcType=VARCHAR}, + #{otherfield2,jdbcType=VARCHAR}, #{otherfield3,jdbcType=VARCHAR}) + + + + insert into jsh_material + + + Id, + + + CategoryId, + + + Name, + + + Mfrs, + + + Packing, + + + SafetyStock, + + + Model, + + + Standard, + + + Color, + + + Unit, + + + Remark, + + + RetailPrice, + + + LowPrice, + + + PresetPriceOne, + + + PresetPriceTwo, + + + UnitId, + + + FirstOutUnit, + + + FirstInUnit, + + + PriceStrategy, + + + Enabled, + + + OtherField1, + + + OtherField2, + + + OtherField3, + + + + + #{id,jdbcType=BIGINT}, + + + #{categoryid,jdbcType=BIGINT}, + + + #{name,jdbcType=VARCHAR}, + + + #{mfrs,jdbcType=VARCHAR}, + + + #{packing,jdbcType=DOUBLE}, + + + #{safetystock,jdbcType=DOUBLE}, + + + #{model,jdbcType=VARCHAR}, + + + #{standard,jdbcType=VARCHAR}, + + + #{color,jdbcType=VARCHAR}, + + + #{unit,jdbcType=VARCHAR}, + + + #{remark,jdbcType=VARCHAR}, + + + #{retailprice,jdbcType=DOUBLE}, + + + #{lowprice,jdbcType=DOUBLE}, + + + #{presetpriceone,jdbcType=DOUBLE}, + + + #{presetpricetwo,jdbcType=DOUBLE}, + + + #{unitid,jdbcType=BIGINT}, + + + #{firstoutunit,jdbcType=VARCHAR}, + + + #{firstinunit,jdbcType=VARCHAR}, + + + #{pricestrategy,jdbcType=VARCHAR}, + + + #{enabled,jdbcType=BIT}, + + + #{otherfield1,jdbcType=VARCHAR}, + + + #{otherfield2,jdbcType=VARCHAR}, + + + #{otherfield3,jdbcType=VARCHAR}, + + + + + + + update jsh_material + + + Id = #{record.id,jdbcType=BIGINT}, + + + CategoryId = #{record.categoryid,jdbcType=BIGINT}, + + + Name = #{record.name,jdbcType=VARCHAR}, + + + Mfrs = #{record.mfrs,jdbcType=VARCHAR}, + + + Packing = #{record.packing,jdbcType=DOUBLE}, + + + SafetyStock = #{record.safetystock,jdbcType=DOUBLE}, + + + Model = #{record.model,jdbcType=VARCHAR}, + + + Standard = #{record.standard,jdbcType=VARCHAR}, + + + Color = #{record.color,jdbcType=VARCHAR}, + + + Unit = #{record.unit,jdbcType=VARCHAR}, + + + Remark = #{record.remark,jdbcType=VARCHAR}, + + + RetailPrice = #{record.retailprice,jdbcType=DOUBLE}, + + + LowPrice = #{record.lowprice,jdbcType=DOUBLE}, + + + PresetPriceOne = #{record.presetpriceone,jdbcType=DOUBLE}, + + + PresetPriceTwo = #{record.presetpricetwo,jdbcType=DOUBLE}, + + + UnitId = #{record.unitid,jdbcType=BIGINT}, + + + FirstOutUnit = #{record.firstoutunit,jdbcType=VARCHAR}, + + + FirstInUnit = #{record.firstinunit,jdbcType=VARCHAR}, + + + PriceStrategy = #{record.pricestrategy,jdbcType=VARCHAR}, + + + Enabled = #{record.enabled,jdbcType=BIT}, + + + OtherField1 = #{record.otherfield1,jdbcType=VARCHAR}, + + + OtherField2 = #{record.otherfield2,jdbcType=VARCHAR}, + + + OtherField3 = #{record.otherfield3,jdbcType=VARCHAR}, + + + + + + + + + update jsh_material + set Id = #{record.id,jdbcType=BIGINT}, + CategoryId = #{record.categoryid,jdbcType=BIGINT}, + Name = #{record.name,jdbcType=VARCHAR}, + Mfrs = #{record.mfrs,jdbcType=VARCHAR}, + Packing = #{record.packing,jdbcType=DOUBLE}, + SafetyStock = #{record.safetystock,jdbcType=DOUBLE}, + Model = #{record.model,jdbcType=VARCHAR}, + Standard = #{record.standard,jdbcType=VARCHAR}, + Color = #{record.color,jdbcType=VARCHAR}, + Unit = #{record.unit,jdbcType=VARCHAR}, + Remark = #{record.remark,jdbcType=VARCHAR}, + RetailPrice = #{record.retailprice,jdbcType=DOUBLE}, + LowPrice = #{record.lowprice,jdbcType=DOUBLE}, + PresetPriceOne = #{record.presetpriceone,jdbcType=DOUBLE}, + PresetPriceTwo = #{record.presetpricetwo,jdbcType=DOUBLE}, + UnitId = #{record.unitid,jdbcType=BIGINT}, + FirstOutUnit = #{record.firstoutunit,jdbcType=VARCHAR}, + FirstInUnit = #{record.firstinunit,jdbcType=VARCHAR}, + PriceStrategy = #{record.pricestrategy,jdbcType=VARCHAR}, + Enabled = #{record.enabled,jdbcType=BIT}, + OtherField1 = #{record.otherfield1,jdbcType=VARCHAR}, + OtherField2 = #{record.otherfield2,jdbcType=VARCHAR}, + OtherField3 = #{record.otherfield3,jdbcType=VARCHAR} + + + + + + + update jsh_material + + + CategoryId = #{categoryid,jdbcType=BIGINT}, + + + Name = #{name,jdbcType=VARCHAR}, + + + Mfrs = #{mfrs,jdbcType=VARCHAR}, + + + Packing = #{packing,jdbcType=DOUBLE}, + + + SafetyStock = #{safetystock,jdbcType=DOUBLE}, + + + Model = #{model,jdbcType=VARCHAR}, + + + Standard = #{standard,jdbcType=VARCHAR}, + + + Color = #{color,jdbcType=VARCHAR}, + + + Unit = #{unit,jdbcType=VARCHAR}, + + + Remark = #{remark,jdbcType=VARCHAR}, + + + RetailPrice = #{retailprice,jdbcType=DOUBLE}, + + + LowPrice = #{lowprice,jdbcType=DOUBLE}, + + + PresetPriceOne = #{presetpriceone,jdbcType=DOUBLE}, + + + PresetPriceTwo = #{presetpricetwo,jdbcType=DOUBLE}, + + + UnitId = #{unitid,jdbcType=BIGINT}, + + + FirstOutUnit = #{firstoutunit,jdbcType=VARCHAR}, + + + FirstInUnit = #{firstinunit,jdbcType=VARCHAR}, + + + PriceStrategy = #{pricestrategy,jdbcType=VARCHAR}, + + + Enabled = #{enabled,jdbcType=BIT}, + + + OtherField1 = #{otherfield1,jdbcType=VARCHAR}, + + + OtherField2 = #{otherfield2,jdbcType=VARCHAR}, + + + OtherField3 = #{otherfield3,jdbcType=VARCHAR}, + + + where Id = #{id,jdbcType=BIGINT} + + + + update jsh_material + set CategoryId = #{categoryid,jdbcType=BIGINT}, + Name = #{name,jdbcType=VARCHAR}, + Mfrs = #{mfrs,jdbcType=VARCHAR}, + Packing = #{packing,jdbcType=DOUBLE}, + SafetyStock = #{safetystock,jdbcType=DOUBLE}, + Model = #{model,jdbcType=VARCHAR}, + Standard = #{standard,jdbcType=VARCHAR}, + Color = #{color,jdbcType=VARCHAR}, + Unit = #{unit,jdbcType=VARCHAR}, + Remark = #{remark,jdbcType=VARCHAR}, + RetailPrice = #{retailprice,jdbcType=DOUBLE}, + LowPrice = #{lowprice,jdbcType=DOUBLE}, + PresetPriceOne = #{presetpriceone,jdbcType=DOUBLE}, + PresetPriceTwo = #{presetpricetwo,jdbcType=DOUBLE}, + UnitId = #{unitid,jdbcType=BIGINT}, + FirstOutUnit = #{firstoutunit,jdbcType=VARCHAR}, + FirstInUnit = #{firstinunit,jdbcType=VARCHAR}, + PriceStrategy = #{pricestrategy,jdbcType=VARCHAR}, + Enabled = #{enabled,jdbcType=BIT}, + OtherField1 = #{otherfield1,jdbcType=VARCHAR}, + OtherField2 = #{otherfield2,jdbcType=VARCHAR}, + OtherField3 = #{otherfield3,jdbcType=VARCHAR} + where Id = #{id,jdbcType=BIGINT} + + \ No newline at end of file diff --git a/src/main/resources/mapper_xml/MaterialMapperEx.xml b/src/main/resources/mapper_xml/MaterialMapperEx.xml new file mode 100644 index 00000000..be0e7f66 --- /dev/null +++ b/src/main/resources/mapper_xml/MaterialMapperEx.xml @@ -0,0 +1,47 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/resources/mapper_xml/MaterialPropertyMapper.xml b/src/main/resources/mapper_xml/MaterialPropertyMapper.xml new file mode 100644 index 00000000..59ddf8d6 --- /dev/null +++ b/src/main/resources/mapper_xml/MaterialPropertyMapper.xml @@ -0,0 +1,271 @@ + + + + + + + + + + + + + + + + + + + + + and ${criterion.condition} + + + and ${criterion.condition} #{criterion.value} + + + and ${criterion.condition} #{criterion.value} and #{criterion.secondValue} + + + and ${criterion.condition} + + #{listItem} + + + + + + + + + + + + + + + + + + + and ${criterion.condition} + + + and ${criterion.condition} #{criterion.value} + + + and ${criterion.condition} #{criterion.value} and #{criterion.secondValue} + + + and ${criterion.condition} + + #{listItem} + + + + + + + + + + + + id, nativeName, enabled, sort, anotherName + + + + + + delete from jsh_materialproperty + where id = #{id,jdbcType=BIGINT} + + + + delete from jsh_materialproperty + + + + + + + insert into jsh_materialproperty (id, nativeName, enabled, + sort, anotherName) + values (#{id,jdbcType=BIGINT}, #{nativename,jdbcType=VARCHAR}, #{enabled,jdbcType=BIT}, + #{sort,jdbcType=VARCHAR}, #{anothername,jdbcType=VARCHAR}) + + + + insert into jsh_materialproperty + + + id, + + + nativeName, + + + enabled, + + + sort, + + + anotherName, + + + + + #{id,jdbcType=BIGINT}, + + + #{nativename,jdbcType=VARCHAR}, + + + #{enabled,jdbcType=BIT}, + + + #{sort,jdbcType=VARCHAR}, + + + #{anothername,jdbcType=VARCHAR}, + + + + + + + update jsh_materialproperty + + + id = #{record.id,jdbcType=BIGINT}, + + + nativeName = #{record.nativename,jdbcType=VARCHAR}, + + + enabled = #{record.enabled,jdbcType=BIT}, + + + sort = #{record.sort,jdbcType=VARCHAR}, + + + anotherName = #{record.anothername,jdbcType=VARCHAR}, + + + + + + + + + update jsh_materialproperty + set id = #{record.id,jdbcType=BIGINT}, + nativeName = #{record.nativename,jdbcType=VARCHAR}, + enabled = #{record.enabled,jdbcType=BIT}, + sort = #{record.sort,jdbcType=VARCHAR}, + anotherName = #{record.anothername,jdbcType=VARCHAR} + + + + + + + update jsh_materialproperty + + + nativeName = #{nativename,jdbcType=VARCHAR}, + + + enabled = #{enabled,jdbcType=BIT}, + + + sort = #{sort,jdbcType=VARCHAR}, + + + anotherName = #{anothername,jdbcType=VARCHAR}, + + + where id = #{id,jdbcType=BIGINT} + + + + update jsh_materialproperty + set nativeName = #{nativename,jdbcType=VARCHAR}, + enabled = #{enabled,jdbcType=BIT}, + sort = #{sort,jdbcType=VARCHAR}, + anotherName = #{anothername,jdbcType=VARCHAR} + where id = #{id,jdbcType=BIGINT} + + \ No newline at end of file diff --git a/src/main/resources/mapper_xml/MaterialPropertyMapperEx.xml b/src/main/resources/mapper_xml/MaterialPropertyMapperEx.xml new file mode 100644 index 00000000..0cde7348 --- /dev/null +++ b/src/main/resources/mapper_xml/MaterialPropertyMapperEx.xml @@ -0,0 +1,24 @@ + + + + + + \ No newline at end of file diff --git a/src/main/resources/mapper_xml/PersonMapper.xml b/src/main/resources/mapper_xml/PersonMapper.xml new file mode 100644 index 00000000..73494482 --- /dev/null +++ b/src/main/resources/mapper_xml/PersonMapper.xml @@ -0,0 +1,241 @@ + + + + + + + + + + + + + + + + + + + and ${criterion.condition} + + + and ${criterion.condition} #{criterion.value} + + + and ${criterion.condition} #{criterion.value} and #{criterion.secondValue} + + + and ${criterion.condition} + + #{listItem} + + + + + + + + + + + + + + + + + + + and ${criterion.condition} + + + and ${criterion.condition} #{criterion.value} + + + and ${criterion.condition} #{criterion.value} and #{criterion.secondValue} + + + and ${criterion.condition} + + #{listItem} + + + + + + + + + + + + Id, Type, Name + + + + + + delete from jsh_person + where Id = #{id,jdbcType=BIGINT} + + + + delete from jsh_person + + + + + + + insert into jsh_person (Id, Type, Name + ) + values (#{id,jdbcType=BIGINT}, #{type,jdbcType=VARCHAR}, #{name,jdbcType=VARCHAR} + ) + + + + insert into jsh_person + + + Id, + + + Type, + + + Name, + + + + + #{id,jdbcType=BIGINT}, + + + #{type,jdbcType=VARCHAR}, + + + #{name,jdbcType=VARCHAR}, + + + + + + + update jsh_person + + + Id = #{record.id,jdbcType=BIGINT}, + + + Type = #{record.type,jdbcType=VARCHAR}, + + + Name = #{record.name,jdbcType=VARCHAR}, + + + + + + + + + update jsh_person + set Id = #{record.id,jdbcType=BIGINT}, + Type = #{record.type,jdbcType=VARCHAR}, + Name = #{record.name,jdbcType=VARCHAR} + + + + + + + update jsh_person + + + Type = #{type,jdbcType=VARCHAR}, + + + Name = #{name,jdbcType=VARCHAR}, + + + where Id = #{id,jdbcType=BIGINT} + + + + update jsh_person + set Type = #{type,jdbcType=VARCHAR}, + Name = #{name,jdbcType=VARCHAR} + where Id = #{id,jdbcType=BIGINT} + + \ No newline at end of file diff --git a/src/main/resources/mapper_xml/PersonMapperEx.xml b/src/main/resources/mapper_xml/PersonMapperEx.xml new file mode 100644 index 00000000..86b8b4a4 --- /dev/null +++ b/src/main/resources/mapper_xml/PersonMapperEx.xml @@ -0,0 +1,30 @@ + + + + + + \ No newline at end of file diff --git a/src/main/resources/mapper_xml/RoleMapper.xml b/src/main/resources/mapper_xml/RoleMapper.xml new file mode 100644 index 00000000..0a9ecee0 --- /dev/null +++ b/src/main/resources/mapper_xml/RoleMapper.xml @@ -0,0 +1,271 @@ + + + + + + + + + + + + + + + + + + + + + and ${criterion.condition} + + + and ${criterion.condition} #{criterion.value} + + + and ${criterion.condition} #{criterion.value} and #{criterion.secondValue} + + + and ${criterion.condition} + + #{listItem} + + + + + + + + + + + + + + + + + + + and ${criterion.condition} + + + and ${criterion.condition} #{criterion.value} + + + and ${criterion.condition} #{criterion.value} and #{criterion.secondValue} + + + and ${criterion.condition} + + #{listItem} + + + + + + + + + + + + Id, Name, type, value, description + + + + + + delete from jsh_role + where Id = #{id,jdbcType=BIGINT} + + + + delete from jsh_role + + + + + + + insert into jsh_role (Id, Name, type, + value, description) + values (#{id,jdbcType=BIGINT}, #{name,jdbcType=VARCHAR}, #{type,jdbcType=VARCHAR}, + #{value,jdbcType=VARCHAR}, #{description,jdbcType=VARCHAR}) + + + + insert into jsh_role + + + Id, + + + Name, + + + type, + + + value, + + + description, + + + + + #{id,jdbcType=BIGINT}, + + + #{name,jdbcType=VARCHAR}, + + + #{type,jdbcType=VARCHAR}, + + + #{value,jdbcType=VARCHAR}, + + + #{description,jdbcType=VARCHAR}, + + + + + + + update jsh_role + + + Id = #{record.id,jdbcType=BIGINT}, + + + Name = #{record.name,jdbcType=VARCHAR}, + + + type = #{record.type,jdbcType=VARCHAR}, + + + value = #{record.value,jdbcType=VARCHAR}, + + + description = #{record.description,jdbcType=VARCHAR}, + + + + + + + + + update jsh_role + set Id = #{record.id,jdbcType=BIGINT}, + Name = #{record.name,jdbcType=VARCHAR}, + type = #{record.type,jdbcType=VARCHAR}, + value = #{record.value,jdbcType=VARCHAR}, + description = #{record.description,jdbcType=VARCHAR} + + + + + + + update jsh_role + + + Name = #{name,jdbcType=VARCHAR}, + + + type = #{type,jdbcType=VARCHAR}, + + + value = #{value,jdbcType=VARCHAR}, + + + description = #{description,jdbcType=VARCHAR}, + + + where Id = #{id,jdbcType=BIGINT} + + + + update jsh_role + set Name = #{name,jdbcType=VARCHAR}, + type = #{type,jdbcType=VARCHAR}, + value = #{value,jdbcType=VARCHAR}, + description = #{description,jdbcType=VARCHAR} + where Id = #{id,jdbcType=BIGINT} + + \ No newline at end of file diff --git a/src/main/resources/mapper_xml/RoleMapperEx.xml b/src/main/resources/mapper_xml/RoleMapperEx.xml new file mode 100644 index 00000000..343b3d4b --- /dev/null +++ b/src/main/resources/mapper_xml/RoleMapperEx.xml @@ -0,0 +1,24 @@ + + + + + + \ No newline at end of file diff --git a/src/main/resources/mapper_xml/SupplierMapper.xml b/src/main/resources/mapper_xml/SupplierMapper.xml new file mode 100644 index 00000000..32541300 --- /dev/null +++ b/src/main/resources/mapper_xml/SupplierMapper.xml @@ -0,0 +1,525 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + and ${criterion.condition} + + + and ${criterion.condition} #{criterion.value} + + + and ${criterion.condition} #{criterion.value} and #{criterion.secondValue} + + + and ${criterion.condition} + + #{listItem} + + + + + + + + + + + + + + + + + + + and ${criterion.condition} + + + and ${criterion.condition} #{criterion.value} + + + and ${criterion.condition} #{criterion.value} and #{criterion.secondValue} + + + and ${criterion.condition} + + #{listItem} + + + + + + + + + + + + id, supplier, contacts, phonenum, email, description, isystem, type, enabled, AdvanceIn, + BeginNeedGet, BeginNeedPay, AllNeedGet, AllNeedPay, fax, telephone, address, taxNum, + bankName, accountNumber, taxRate + + + + + + delete from jsh_supplier + where id = #{id,jdbcType=BIGINT} + + + + delete from jsh_supplier + + + + + + + insert into jsh_supplier (id, supplier, contacts, + phonenum, email, description, + isystem, type, enabled, + AdvanceIn, BeginNeedGet, BeginNeedPay, + AllNeedGet, AllNeedPay, fax, + telephone, address, taxNum, + bankName, accountNumber, taxRate + ) + values (#{id,jdbcType=BIGINT}, #{supplier,jdbcType=VARCHAR}, #{contacts,jdbcType=VARCHAR}, + #{phonenum,jdbcType=VARCHAR}, #{email,jdbcType=VARCHAR}, #{description,jdbcType=VARCHAR}, + #{isystem,jdbcType=TINYINT}, #{type,jdbcType=VARCHAR}, #{enabled,jdbcType=BIT}, + #{advancein,jdbcType=DOUBLE}, #{beginneedget,jdbcType=DOUBLE}, #{beginneedpay,jdbcType=DOUBLE}, + #{allneedget,jdbcType=DOUBLE}, #{allneedpay,jdbcType=DOUBLE}, #{fax,jdbcType=VARCHAR}, + #{telephone,jdbcType=VARCHAR}, #{address,jdbcType=VARCHAR}, #{taxnum,jdbcType=VARCHAR}, + #{bankname,jdbcType=VARCHAR}, #{accountnumber,jdbcType=VARCHAR}, #{taxrate,jdbcType=DOUBLE} + ) + + + + insert into jsh_supplier + + + id, + + + supplier, + + + contacts, + + + phonenum, + + + email, + + + description, + + + isystem, + + + type, + + + enabled, + + + AdvanceIn, + + + BeginNeedGet, + + + BeginNeedPay, + + + AllNeedGet, + + + AllNeedPay, + + + fax, + + + telephone, + + + address, + + + taxNum, + + + bankName, + + + accountNumber, + + + taxRate, + + + + + #{id,jdbcType=BIGINT}, + + + #{supplier,jdbcType=VARCHAR}, + + + #{contacts,jdbcType=VARCHAR}, + + + #{phonenum,jdbcType=VARCHAR}, + + + #{email,jdbcType=VARCHAR}, + + + #{description,jdbcType=VARCHAR}, + + + #{isystem,jdbcType=TINYINT}, + + + #{type,jdbcType=VARCHAR}, + + + #{enabled,jdbcType=BIT}, + + + #{advancein,jdbcType=DOUBLE}, + + + #{beginneedget,jdbcType=DOUBLE}, + + + #{beginneedpay,jdbcType=DOUBLE}, + + + #{allneedget,jdbcType=DOUBLE}, + + + #{allneedpay,jdbcType=DOUBLE}, + + + #{fax,jdbcType=VARCHAR}, + + + #{telephone,jdbcType=VARCHAR}, + + + #{address,jdbcType=VARCHAR}, + + + #{taxnum,jdbcType=VARCHAR}, + + + #{bankname,jdbcType=VARCHAR}, + + + #{accountnumber,jdbcType=VARCHAR}, + + + #{taxrate,jdbcType=DOUBLE}, + + + + + + + update jsh_supplier + + + id = #{record.id,jdbcType=BIGINT}, + + + supplier = #{record.supplier,jdbcType=VARCHAR}, + + + contacts = #{record.contacts,jdbcType=VARCHAR}, + + + phonenum = #{record.phonenum,jdbcType=VARCHAR}, + + + email = #{record.email,jdbcType=VARCHAR}, + + + description = #{record.description,jdbcType=VARCHAR}, + + + isystem = #{record.isystem,jdbcType=TINYINT}, + + + type = #{record.type,jdbcType=VARCHAR}, + + + enabled = #{record.enabled,jdbcType=BIT}, + + + AdvanceIn = #{record.advancein,jdbcType=DOUBLE}, + + + BeginNeedGet = #{record.beginneedget,jdbcType=DOUBLE}, + + + BeginNeedPay = #{record.beginneedpay,jdbcType=DOUBLE}, + + + AllNeedGet = #{record.allneedget,jdbcType=DOUBLE}, + + + AllNeedPay = #{record.allneedpay,jdbcType=DOUBLE}, + + + fax = #{record.fax,jdbcType=VARCHAR}, + + + telephone = #{record.telephone,jdbcType=VARCHAR}, + + + address = #{record.address,jdbcType=VARCHAR}, + + + taxNum = #{record.taxnum,jdbcType=VARCHAR}, + + + bankName = #{record.bankname,jdbcType=VARCHAR}, + + + accountNumber = #{record.accountnumber,jdbcType=VARCHAR}, + + + taxRate = #{record.taxrate,jdbcType=DOUBLE}, + + + + + + + + + update jsh_supplier + set id = #{record.id,jdbcType=BIGINT}, + supplier = #{record.supplier,jdbcType=VARCHAR}, + contacts = #{record.contacts,jdbcType=VARCHAR}, + phonenum = #{record.phonenum,jdbcType=VARCHAR}, + email = #{record.email,jdbcType=VARCHAR}, + description = #{record.description,jdbcType=VARCHAR}, + isystem = #{record.isystem,jdbcType=TINYINT}, + type = #{record.type,jdbcType=VARCHAR}, + enabled = #{record.enabled,jdbcType=BIT}, + AdvanceIn = #{record.advancein,jdbcType=DOUBLE}, + BeginNeedGet = #{record.beginneedget,jdbcType=DOUBLE}, + BeginNeedPay = #{record.beginneedpay,jdbcType=DOUBLE}, + AllNeedGet = #{record.allneedget,jdbcType=DOUBLE}, + AllNeedPay = #{record.allneedpay,jdbcType=DOUBLE}, + fax = #{record.fax,jdbcType=VARCHAR}, + telephone = #{record.telephone,jdbcType=VARCHAR}, + address = #{record.address,jdbcType=VARCHAR}, + taxNum = #{record.taxnum,jdbcType=VARCHAR}, + bankName = #{record.bankname,jdbcType=VARCHAR}, + accountNumber = #{record.accountnumber,jdbcType=VARCHAR}, + taxRate = #{record.taxrate,jdbcType=DOUBLE} + + + + + + + update jsh_supplier + + + supplier = #{supplier,jdbcType=VARCHAR}, + + + contacts = #{contacts,jdbcType=VARCHAR}, + + + phonenum = #{phonenum,jdbcType=VARCHAR}, + + + email = #{email,jdbcType=VARCHAR}, + + + description = #{description,jdbcType=VARCHAR}, + + + isystem = #{isystem,jdbcType=TINYINT}, + + + type = #{type,jdbcType=VARCHAR}, + + + enabled = #{enabled,jdbcType=BIT}, + + + AdvanceIn = #{advancein,jdbcType=DOUBLE}, + + + BeginNeedGet = #{beginneedget,jdbcType=DOUBLE}, + + + BeginNeedPay = #{beginneedpay,jdbcType=DOUBLE}, + + + AllNeedGet = #{allneedget,jdbcType=DOUBLE}, + + + AllNeedPay = #{allneedpay,jdbcType=DOUBLE}, + + + fax = #{fax,jdbcType=VARCHAR}, + + + telephone = #{telephone,jdbcType=VARCHAR}, + + + address = #{address,jdbcType=VARCHAR}, + + + taxNum = #{taxnum,jdbcType=VARCHAR}, + + + bankName = #{bankname,jdbcType=VARCHAR}, + + + accountNumber = #{accountnumber,jdbcType=VARCHAR}, + + + taxRate = #{taxrate,jdbcType=DOUBLE}, + + + where id = #{id,jdbcType=BIGINT} + + + + update jsh_supplier + set supplier = #{supplier,jdbcType=VARCHAR}, + contacts = #{contacts,jdbcType=VARCHAR}, + phonenum = #{phonenum,jdbcType=VARCHAR}, + email = #{email,jdbcType=VARCHAR}, + description = #{description,jdbcType=VARCHAR}, + isystem = #{isystem,jdbcType=TINYINT}, + type = #{type,jdbcType=VARCHAR}, + enabled = #{enabled,jdbcType=BIT}, + AdvanceIn = #{advancein,jdbcType=DOUBLE}, + BeginNeedGet = #{beginneedget,jdbcType=DOUBLE}, + BeginNeedPay = #{beginneedpay,jdbcType=DOUBLE}, + AllNeedGet = #{allneedget,jdbcType=DOUBLE}, + AllNeedPay = #{allneedpay,jdbcType=DOUBLE}, + fax = #{fax,jdbcType=VARCHAR}, + telephone = #{telephone,jdbcType=VARCHAR}, + address = #{address,jdbcType=VARCHAR}, + taxNum = #{taxnum,jdbcType=VARCHAR}, + bankName = #{bankname,jdbcType=VARCHAR}, + accountNumber = #{accountnumber,jdbcType=VARCHAR}, + taxRate = #{taxrate,jdbcType=DOUBLE} + where id = #{id,jdbcType=BIGINT} + + \ No newline at end of file diff --git a/src/main/resources/mapper_xml/SupplierMapperEx.xml b/src/main/resources/mapper_xml/SupplierMapperEx.xml new file mode 100644 index 00000000..d890226e --- /dev/null +++ b/src/main/resources/mapper_xml/SupplierMapperEx.xml @@ -0,0 +1,48 @@ + + + + + + \ No newline at end of file diff --git a/src/main/resources/mapper_xml/SystemConfigMapper.xml b/src/main/resources/mapper_xml/SystemConfigMapper.xml new file mode 100644 index 00000000..4a128242 --- /dev/null +++ b/src/main/resources/mapper_xml/SystemConfigMapper.xml @@ -0,0 +1,271 @@ + + + + + + + + + + + + + + + + + + + + + and ${criterion.condition} + + + and ${criterion.condition} #{criterion.value} + + + and ${criterion.condition} #{criterion.value} and #{criterion.secondValue} + + + and ${criterion.condition} + + #{listItem} + + + + + + + + + + + + + + + + + + + and ${criterion.condition} + + + and ${criterion.condition} #{criterion.value} + + + and ${criterion.condition} #{criterion.value} and #{criterion.secondValue} + + + and ${criterion.condition} + + #{listItem} + + + + + + + + + + + + id, type, name, value, description + + + + + + delete from jsh_systemconfig + where id = #{id,jdbcType=BIGINT} + + + + delete from jsh_systemconfig + + + + + + + insert into jsh_systemconfig (id, type, name, + value, description) + values (#{id,jdbcType=BIGINT}, #{type,jdbcType=VARCHAR}, #{name,jdbcType=VARCHAR}, + #{value,jdbcType=VARCHAR}, #{description,jdbcType=VARCHAR}) + + + + insert into jsh_systemconfig + + + id, + + + type, + + + name, + + + value, + + + description, + + + + + #{id,jdbcType=BIGINT}, + + + #{type,jdbcType=VARCHAR}, + + + #{name,jdbcType=VARCHAR}, + + + #{value,jdbcType=VARCHAR}, + + + #{description,jdbcType=VARCHAR}, + + + + + + + update jsh_systemconfig + + + id = #{record.id,jdbcType=BIGINT}, + + + type = #{record.type,jdbcType=VARCHAR}, + + + name = #{record.name,jdbcType=VARCHAR}, + + + value = #{record.value,jdbcType=VARCHAR}, + + + description = #{record.description,jdbcType=VARCHAR}, + + + + + + + + + update jsh_systemconfig + set id = #{record.id,jdbcType=BIGINT}, + type = #{record.type,jdbcType=VARCHAR}, + name = #{record.name,jdbcType=VARCHAR}, + value = #{record.value,jdbcType=VARCHAR}, + description = #{record.description,jdbcType=VARCHAR} + + + + + + + update jsh_systemconfig + + + type = #{type,jdbcType=VARCHAR}, + + + name = #{name,jdbcType=VARCHAR}, + + + value = #{value,jdbcType=VARCHAR}, + + + description = #{description,jdbcType=VARCHAR}, + + + where id = #{id,jdbcType=BIGINT} + + + + update jsh_systemconfig + set type = #{type,jdbcType=VARCHAR}, + name = #{name,jdbcType=VARCHAR}, + value = #{value,jdbcType=VARCHAR}, + description = #{description,jdbcType=VARCHAR} + where id = #{id,jdbcType=BIGINT} + + \ No newline at end of file diff --git a/src/main/resources/mapper_xml/SystemConfigMapperEx.xml b/src/main/resources/mapper_xml/SystemConfigMapperEx.xml new file mode 100644 index 00000000..fb930632 --- /dev/null +++ b/src/main/resources/mapper_xml/SystemConfigMapperEx.xml @@ -0,0 +1,18 @@ + + + + + + \ No newline at end of file diff --git a/src/main/resources/mapper_xml/UnitMapper.xml b/src/main/resources/mapper_xml/UnitMapper.xml new file mode 100644 index 00000000..dce89400 --- /dev/null +++ b/src/main/resources/mapper_xml/UnitMapper.xml @@ -0,0 +1,224 @@ + + + + + + + + + + + + + + + + + + and ${criterion.condition} + + + and ${criterion.condition} #{criterion.value} + + + and ${criterion.condition} #{criterion.value} and #{criterion.secondValue} + + + and ${criterion.condition} + + #{listItem} + + + + + + + + + + + + + + + + + + + and ${criterion.condition} + + + and ${criterion.condition} #{criterion.value} + + + and ${criterion.condition} #{criterion.value} and #{criterion.secondValue} + + + and ${criterion.condition} + + #{listItem} + + + + + + + + + + + + id, UName + + + + + + delete from jsh_unit + where id = #{id,jdbcType=BIGINT} + + + + delete from jsh_unit + + + + + + + insert into jsh_unit (id, UName) + values (#{id,jdbcType=BIGINT}, #{uname,jdbcType=VARCHAR}) + + + + insert into jsh_unit + + + id, + + + UName, + + + + + #{id,jdbcType=BIGINT}, + + + #{uname,jdbcType=VARCHAR}, + + + + + + + update jsh_unit + + + id = #{record.id,jdbcType=BIGINT}, + + + UName = #{record.uname,jdbcType=VARCHAR}, + + + + + + + + + update jsh_unit + set id = #{record.id,jdbcType=BIGINT}, + UName = #{record.uname,jdbcType=VARCHAR} + + + + + + + update jsh_unit + + + UName = #{uname,jdbcType=VARCHAR}, + + + where id = #{id,jdbcType=BIGINT} + + + + update jsh_unit + set UName = #{uname,jdbcType=VARCHAR} + where id = #{id,jdbcType=BIGINT} + + \ No newline at end of file diff --git a/src/main/resources/mapper_xml/UnitMapperEx.xml b/src/main/resources/mapper_xml/UnitMapperEx.xml new file mode 100644 index 00000000..c96d50ae --- /dev/null +++ b/src/main/resources/mapper_xml/UnitMapperEx.xml @@ -0,0 +1,24 @@ + + + + + + \ No newline at end of file diff --git a/src/main/resources/mapper_xml/UserBusinessMapper.xml b/src/main/resources/mapper_xml/UserBusinessMapper.xml new file mode 100644 index 00000000..536c0124 --- /dev/null +++ b/src/main/resources/mapper_xml/UserBusinessMapper.xml @@ -0,0 +1,271 @@ + + + + + + + + + + + + + + + + + + + + + and ${criterion.condition} + + + and ${criterion.condition} #{criterion.value} + + + and ${criterion.condition} #{criterion.value} and #{criterion.secondValue} + + + and ${criterion.condition} + + #{listItem} + + + + + + + + + + + + + + + + + + + and ${criterion.condition} + + + and ${criterion.condition} #{criterion.value} + + + and ${criterion.condition} #{criterion.value} and #{criterion.secondValue} + + + and ${criterion.condition} + + #{listItem} + + + + + + + + + + + + Id, Type, KeyId, Value, BtnStr + + + + + + delete from jsh_userbusiness + where Id = #{id,jdbcType=BIGINT} + + + + delete from jsh_userbusiness + + + + + + + insert into jsh_userbusiness (Id, Type, KeyId, + Value, BtnStr) + values (#{id,jdbcType=BIGINT}, #{type,jdbcType=VARCHAR}, #{keyid,jdbcType=VARCHAR}, + #{value,jdbcType=VARCHAR}, #{btnstr,jdbcType=VARCHAR}) + + + + insert into jsh_userbusiness + + + Id, + + + Type, + + + KeyId, + + + Value, + + + BtnStr, + + + + + #{id,jdbcType=BIGINT}, + + + #{type,jdbcType=VARCHAR}, + + + #{keyid,jdbcType=VARCHAR}, + + + #{value,jdbcType=VARCHAR}, + + + #{btnstr,jdbcType=VARCHAR}, + + + + + + + update jsh_userbusiness + + + Id = #{record.id,jdbcType=BIGINT}, + + + Type = #{record.type,jdbcType=VARCHAR}, + + + KeyId = #{record.keyid,jdbcType=VARCHAR}, + + + Value = #{record.value,jdbcType=VARCHAR}, + + + BtnStr = #{record.btnstr,jdbcType=VARCHAR}, + + + + + + + + + update jsh_userbusiness + set Id = #{record.id,jdbcType=BIGINT}, + Type = #{record.type,jdbcType=VARCHAR}, + KeyId = #{record.keyid,jdbcType=VARCHAR}, + Value = #{record.value,jdbcType=VARCHAR}, + BtnStr = #{record.btnstr,jdbcType=VARCHAR} + + + + + + + update jsh_userbusiness + + + Type = #{type,jdbcType=VARCHAR}, + + + KeyId = #{keyid,jdbcType=VARCHAR}, + + + Value = #{value,jdbcType=VARCHAR}, + + + BtnStr = #{btnstr,jdbcType=VARCHAR}, + + + where Id = #{id,jdbcType=BIGINT} + + + + update jsh_userbusiness + set Type = #{type,jdbcType=VARCHAR}, + KeyId = #{keyid,jdbcType=VARCHAR}, + Value = #{value,jdbcType=VARCHAR}, + BtnStr = #{btnstr,jdbcType=VARCHAR} + where Id = #{id,jdbcType=BIGINT} + + \ No newline at end of file diff --git a/src/main/resources/mapper_xml/UserMapper.xml b/src/main/resources/mapper_xml/UserMapper.xml new file mode 100644 index 00000000..c275733a --- /dev/null +++ b/src/main/resources/mapper_xml/UserMapper.xml @@ -0,0 +1,398 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + and ${criterion.condition} + + + and ${criterion.condition} #{criterion.value} + + + and ${criterion.condition} #{criterion.value} and #{criterion.secondValue} + + + and ${criterion.condition} + + #{listItem} + + + + + + + + + + + + + + + + + + + and ${criterion.condition} + + + and ${criterion.condition} #{criterion.value} + + + and ${criterion.condition} #{criterion.value} and #{criterion.secondValue} + + + and ${criterion.condition} + + #{listItem} + + + + + + + + + + + + id, username, loginame, password, position, department, email, phonenum, ismanager, + isystem, status, description, remark + + + + + + delete from jsh_user + where id = #{id,jdbcType=BIGINT} + + + + delete from jsh_user + + + + + + + insert into jsh_user (id, username, loginame, + password, position, department, + email, phonenum, ismanager, + isystem, status, description, + remark) + values (#{id,jdbcType=BIGINT}, #{username,jdbcType=VARCHAR}, #{loginame,jdbcType=VARCHAR}, + #{password,jdbcType=VARCHAR}, #{position,jdbcType=VARCHAR}, #{department,jdbcType=VARCHAR}, + #{email,jdbcType=VARCHAR}, #{phonenum,jdbcType=VARCHAR}, #{ismanager,jdbcType=TINYINT}, + #{isystem,jdbcType=TINYINT}, #{status,jdbcType=TINYINT}, #{description,jdbcType=VARCHAR}, + #{remark,jdbcType=VARCHAR}) + + + + insert into jsh_user + + + id, + + + username, + + + loginame, + + + password, + + + position, + + + department, + + + email, + + + phonenum, + + + ismanager, + + + isystem, + + + status, + + + description, + + + remark, + + + + + #{id,jdbcType=BIGINT}, + + + #{username,jdbcType=VARCHAR}, + + + #{loginame,jdbcType=VARCHAR}, + + + #{password,jdbcType=VARCHAR}, + + + #{position,jdbcType=VARCHAR}, + + + #{department,jdbcType=VARCHAR}, + + + #{email,jdbcType=VARCHAR}, + + + #{phonenum,jdbcType=VARCHAR}, + + + #{ismanager,jdbcType=TINYINT}, + + + #{isystem,jdbcType=TINYINT}, + + + #{status,jdbcType=TINYINT}, + + + #{description,jdbcType=VARCHAR}, + + + #{remark,jdbcType=VARCHAR}, + + + + + + + update jsh_user + + + id = #{record.id,jdbcType=BIGINT}, + + + username = #{record.username,jdbcType=VARCHAR}, + + + loginame = #{record.loginame,jdbcType=VARCHAR}, + + + password = #{record.password,jdbcType=VARCHAR}, + + + position = #{record.position,jdbcType=VARCHAR}, + + + department = #{record.department,jdbcType=VARCHAR}, + + + email = #{record.email,jdbcType=VARCHAR}, + + + phonenum = #{record.phonenum,jdbcType=VARCHAR}, + + + ismanager = #{record.ismanager,jdbcType=TINYINT}, + + + isystem = #{record.isystem,jdbcType=TINYINT}, + + + status = #{record.status,jdbcType=TINYINT}, + + + description = #{record.description,jdbcType=VARCHAR}, + + + remark = #{record.remark,jdbcType=VARCHAR}, + + + + + + + + + update jsh_user + set id = #{record.id,jdbcType=BIGINT}, + username = #{record.username,jdbcType=VARCHAR}, + loginame = #{record.loginame,jdbcType=VARCHAR}, + password = #{record.password,jdbcType=VARCHAR}, + position = #{record.position,jdbcType=VARCHAR}, + department = #{record.department,jdbcType=VARCHAR}, + email = #{record.email,jdbcType=VARCHAR}, + phonenum = #{record.phonenum,jdbcType=VARCHAR}, + ismanager = #{record.ismanager,jdbcType=TINYINT}, + isystem = #{record.isystem,jdbcType=TINYINT}, + status = #{record.status,jdbcType=TINYINT}, + description = #{record.description,jdbcType=VARCHAR}, + remark = #{record.remark,jdbcType=VARCHAR} + + + + + + + update jsh_user + + + username = #{username,jdbcType=VARCHAR}, + + + loginame = #{loginame,jdbcType=VARCHAR}, + + + password = #{password,jdbcType=VARCHAR}, + + + position = #{position,jdbcType=VARCHAR}, + + + department = #{department,jdbcType=VARCHAR}, + + + email = #{email,jdbcType=VARCHAR}, + + + phonenum = #{phonenum,jdbcType=VARCHAR}, + + + ismanager = #{ismanager,jdbcType=TINYINT}, + + + isystem = #{isystem,jdbcType=TINYINT}, + + + status = #{status,jdbcType=TINYINT}, + + + description = #{description,jdbcType=VARCHAR}, + + + remark = #{remark,jdbcType=VARCHAR}, + + + where id = #{id,jdbcType=BIGINT} + + + + update jsh_user + set username = #{username,jdbcType=VARCHAR}, + loginame = #{loginame,jdbcType=VARCHAR}, + password = #{password,jdbcType=VARCHAR}, + position = #{position,jdbcType=VARCHAR}, + department = #{department,jdbcType=VARCHAR}, + email = #{email,jdbcType=VARCHAR}, + phonenum = #{phonenum,jdbcType=VARCHAR}, + ismanager = #{ismanager,jdbcType=TINYINT}, + isystem = #{isystem,jdbcType=TINYINT}, + status = #{status,jdbcType=TINYINT}, + description = #{description,jdbcType=VARCHAR}, + remark = #{remark,jdbcType=VARCHAR} + where id = #{id,jdbcType=BIGINT} + + \ No newline at end of file diff --git a/src/main/resources/mapper_xml/UserMapperEx.xml b/src/main/resources/mapper_xml/UserMapperEx.xml new file mode 100644 index 00000000..5f005bf6 --- /dev/null +++ b/src/main/resources/mapper_xml/UserMapperEx.xml @@ -0,0 +1,30 @@ + + + + + + \ No newline at end of file diff --git a/src/main/resources/spring/basic-applicationContext.xml b/src/main/resources/spring/basic-applicationContext.xml deleted file mode 100644 index 29f61596..00000000 --- a/src/main/resources/spring/basic-applicationContext.xml +++ /dev/null @@ -1,387 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/main/resources/spring/dao-applicationContext.xml b/src/main/resources/spring/dao-applicationContext.xml deleted file mode 100644 index 48ad2418..00000000 --- a/src/main/resources/spring/dao-applicationContext.xml +++ /dev/null @@ -1,61 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/main/resources/spring/quartz-applicationContext.xml.xml b/src/main/resources/spring/quartz-applicationContext.xml.xml deleted file mode 100644 index 444ff888..00000000 --- a/src/main/resources/spring/quartz-applicationContext.xml.xml +++ /dev/null @@ -1,36 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - 0 45 9,10,11,12 * * ? - - - - - - - - timerTest - - - - \ No newline at end of file diff --git a/src/main/resources/struts2/account-struts.xml b/src/main/resources/struts2/account-struts.xml deleted file mode 100644 index e96a081d..00000000 --- a/src/main/resources/struts2/account-struts.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - diff --git a/src/main/resources/struts2/accountHead-struts.xml b/src/main/resources/struts2/accountHead-struts.xml deleted file mode 100644 index 927330b6..00000000 --- a/src/main/resources/struts2/accountHead-struts.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - diff --git a/src/main/resources/struts2/accountItem-struts.xml b/src/main/resources/struts2/accountItem-struts.xml deleted file mode 100644 index c470d14b..00000000 --- a/src/main/resources/struts2/accountItem-struts.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - diff --git a/src/main/resources/struts2/app-struts.xml b/src/main/resources/struts2/app-struts.xml deleted file mode 100644 index e856de87..00000000 --- a/src/main/resources/struts2/app-struts.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/src/main/resources/struts2/asset-struts.xml b/src/main/resources/struts2/asset-struts.xml deleted file mode 100644 index 50c75347..00000000 --- a/src/main/resources/struts2/asset-struts.xml +++ /dev/null @@ -1,32 +0,0 @@ - - - - - - - - - - - - application/vnd.ms-excel - excelStream - attachment;filename="${fileName}" - 1024 - - - - - - - application/vnd.ms-excel - excelStream - attachment;filename="${fileName}" - 1024 - - /pages/asset/asset.jsp - - - \ No newline at end of file diff --git a/src/main/resources/struts2/assetname-struts.xml b/src/main/resources/struts2/assetname-struts.xml deleted file mode 100644 index 5aeb1016..00000000 --- a/src/main/resources/struts2/assetname-struts.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/src/main/resources/struts2/category-struts.xml b/src/main/resources/struts2/category-struts.xml deleted file mode 100644 index 3322bbba..00000000 --- a/src/main/resources/struts2/category-struts.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/src/main/resources/struts2/channel-struts.xml b/src/main/resources/struts2/channel-struts.xml deleted file mode 100644 index 1b245309..00000000 --- a/src/main/resources/struts2/channel-struts.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - diff --git a/src/main/resources/struts2/depot-struts.xml b/src/main/resources/struts2/depot-struts.xml deleted file mode 100644 index c3c219b7..00000000 --- a/src/main/resources/struts2/depot-struts.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/src/main/resources/struts2/depotHead-struts.xml b/src/main/resources/struts2/depotHead-struts.xml deleted file mode 100644 index e6f581fa..00000000 --- a/src/main/resources/struts2/depotHead-struts.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/src/main/resources/struts2/depotItem-struts.xml b/src/main/resources/struts2/depotItem-struts.xml deleted file mode 100644 index 2d106613..00000000 --- a/src/main/resources/struts2/depotItem-struts.xml +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - - - - - - application/vnd.ms-excel - excelStream - attachment;filename="${fileName}" - 1024 - - - - \ No newline at end of file diff --git a/src/main/resources/struts2/functions-struts.xml b/src/main/resources/struts2/functions-struts.xml deleted file mode 100644 index 5fb66ff6..00000000 --- a/src/main/resources/struts2/functions-struts.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/src/main/resources/struts2/inOutItem-struts.xml b/src/main/resources/struts2/inOutItem-struts.xml deleted file mode 100644 index 99d49db8..00000000 --- a/src/main/resources/struts2/inOutItem-struts.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - diff --git a/src/main/resources/struts2/log-struts.xml b/src/main/resources/struts2/log-struts.xml deleted file mode 100644 index 77fb2949..00000000 --- a/src/main/resources/struts2/log-struts.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/src/main/resources/struts2/material-struts.xml b/src/main/resources/struts2/material-struts.xml deleted file mode 100644 index 1e590ba7..00000000 --- a/src/main/resources/struts2/material-struts.xml +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - - - application/vnd.ms-excel - excelStream - attachment;filename="${fileName}" - 1024 - - /pages/materials/material.jsp - - - - - application/vnd.ms-excel - excelStream - attachment;filename="${fileName}" - 1024 - - - - \ No newline at end of file diff --git a/src/main/resources/struts2/materialCategory-struts.xml b/src/main/resources/struts2/materialCategory-struts.xml deleted file mode 100644 index d682bdaa..00000000 --- a/src/main/resources/struts2/materialCategory-struts.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/src/main/resources/struts2/materialProperty-struts.xml b/src/main/resources/struts2/materialProperty-struts.xml deleted file mode 100644 index 9c29f29f..00000000 --- a/src/main/resources/struts2/materialProperty-struts.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/src/main/resources/struts2/person-struts.xml b/src/main/resources/struts2/person-struts.xml deleted file mode 100644 index 47fb0b16..00000000 --- a/src/main/resources/struts2/person-struts.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/src/main/resources/struts2/report-struts.xml b/src/main/resources/struts2/report-struts.xml deleted file mode 100644 index b34945fd..00000000 --- a/src/main/resources/struts2/report-struts.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/src/main/resources/struts2/role-struts.xml b/src/main/resources/struts2/role-struts.xml deleted file mode 100644 index 09fb1c67..00000000 --- a/src/main/resources/struts2/role-struts.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/src/main/resources/struts2/struts.properties b/src/main/resources/struts2/struts.properties deleted file mode 100644 index 8847c128..00000000 --- a/src/main/resources/struts2/struts.properties +++ /dev/null @@ -1,2 +0,0 @@ -# struts.properties -#struts.custom.i18n.resources=messages diff --git a/src/main/resources/struts2/struts.xml b/src/main/resources/struts2/struts.xml deleted file mode 100644 index 6f8de078..00000000 --- a/src/main/resources/struts2/struts.xml +++ /dev/null @@ -1,46 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - /pages/common/admin.jsp - - - /pages/common/{1}.jsp - - - /pages/common/admin.jsp - - - \ No newline at end of file diff --git a/src/main/resources/struts2/supplier-struts.xml b/src/main/resources/struts2/supplier-struts.xml deleted file mode 100644 index 3545c13e..00000000 --- a/src/main/resources/struts2/supplier-struts.xml +++ /dev/null @@ -1,52 +0,0 @@ - - - - - - - - - - - - application/vnd.ms-excel - excelStream - attachment;filename="${fileName}" - 1024 - - /pages/manage/vendor.jsp - - - - - application/vnd.ms-excel - excelStream - attachment;filename="${fileName}" - 1024 - - /pages/manage/customer.jsp - - - - - application/vnd.ms-excel - excelStream - attachment;filename="${fileName}" - 1024 - - /pages/manage/member.jsp - - - - - - application/vnd.ms-excel - excelStream - attachment;filename="${fileName}" - 1024 - - - - \ No newline at end of file diff --git a/src/main/resources/struts2/systemConfig-struts.xml b/src/main/resources/struts2/systemConfig-struts.xml deleted file mode 100644 index dacd7978..00000000 --- a/src/main/resources/struts2/systemConfig-struts.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/src/main/resources/struts2/unit-struts.xml b/src/main/resources/struts2/unit-struts.xml deleted file mode 100644 index 6a3dd7c1..00000000 --- a/src/main/resources/struts2/unit-struts.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/src/main/resources/struts2/user-struts.xml b/src/main/resources/struts2/user-struts.xml deleted file mode 100644 index 02abc391..00000000 --- a/src/main/resources/struts2/user-struts.xml +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - - - - - /logout.jsp - - - - \ No newline at end of file diff --git a/src/main/resources/struts2/userBusiness-struts.xml b/src/main/resources/struts2/userBusiness-struts.xml deleted file mode 100644 index 467130c4..00000000 --- a/src/main/resources/struts2/userBusiness-struts.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/src/main/webapp/META-INF/MANIFEST.MF b/src/main/webapp/META-INF/MANIFEST.MF deleted file mode 100644 index 254272e1..00000000 --- a/src/main/webapp/META-INF/MANIFEST.MF +++ /dev/null @@ -1,3 +0,0 @@ -Manifest-Version: 1.0 -Class-Path: - diff --git a/src/main/webapp/WEB-INF/lib/hibernate3-1.0.0.jar b/src/main/webapp/WEB-INF/lib/hibernate3-1.0.0.jar deleted file mode 100644 index 7275ad6e372e23aa5a90219e367920a039f17379..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4089101 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

{ow6V(jXEND*L(;XZ9MDEo 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%0D^G)(DzpqAAhED5TfvJN60)Q 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

WwO+&O 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

i~!8m_~Ch&|KOF>@gA51d&FU_DjeYz%D4RDF#fQ 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

m#VheSPzp}SKwbB28IsJ?B7 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�(P#=ft|rwGu33K4dUQ~&1}^o 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%0DQ}t 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∈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

LKIKKYBqhSr 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%0D=xzFJ|yw`bEHpWf?d?AU?p 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 z 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%0AkUUCm(A3H8 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 z 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%0DKpfZzpTt4U;)lgF!6rm%a;S96 z%G%*wBkbd`+_9{PRR=^uMO^#~&ln0va1btp5G8c~seo{6JBoRSzl24R;*rwDBU&+T zA976jk!(>@T~}4)w(&dCeXwCvT6pEw#n>bAd{S;d(`G*oH%`U%_no92n|yKs z@g78WBV@aCmD|tf0mOF%c6GRRT*mDd5!(5-Ig9jsx~lP`59z$baM{t)gQ!YugVzLD z3z3iQ6pycH%s|OvxwPiSVq;YyHVKj;G6ixfw>KswO;UP_{C3{;Ng9lVGsiOdHRu(L z9Qu`&zrH?Y+7SM(t#J)|0e%NHm*>QP~=n4vMn#Sqn4d%sBj7(vbu%?5cr90p< z(fu;|3@IDN1gkU3r<76H*ZAAgvL%o(SM z!=P}cZi!bYx`;6pgDVW9TBUn6lixP|Mjq-478Uq`#6nV0;LiaG%_&JO1BJ;9si@Eq zC2bdGA^Dj+$B2N_@co1XmkI7|^T$k+KZj-o*oGlzbX z(76I^z?r&A#pFac*wAEkzMLNFyk7pWwGpX3Lq#u9Hu+ec2K+*y1hZ5j#W1!q(7UMs z?5C9vwfPP@RU>#3%LsC%G!@qtw$W*qBvZMoso zZjfFXfaGAG8y$3yjGb*ZDC~eLjbsL}c7TPQa@tjQz@zKHAL&$v^s5z2G?k_XV8jsk2m;! zJd|`Ha*OOG!VTC)nsv-`&n*i_^Qd)?c!Iya)7@j)7JJWu75I`e)Yt$i!5@Zx+-@y6F_A~BB{9sN`iyZJs7{Hbh0-Yz-(q+vw% z+iv~dx`0K+aW~gE2b^#-m+Vhu2Kpt{bJpQtY}8+b2H-BXRS$z?~n^324*8WSz393cqnO#EoL&NF(+hD zK>G*1w9tMW7AAn1*_V+y0_8Y;ZS5ADk@-^|a=P2x)Kn{M!+h48fhs8n?=I}O^m*W9 zg5f*0vYvTZAYs8fGWBe@UoK}>_;f^^_hf7N@>uJ$%toWC*}!7E!0iSYNz4w@zG?!r zBqm1kKW|2%C9z74SuzlHG7=ZEOAnr)c&f)wTUin&GR3i`G3Bi8bfz-j2W3sq=Pl*E zsVG-HUAczo!@%7$ZDewRp@)ynWqO6J?oc$7t_@ZRWysfO*?TfSh;B75v% zJ2%crf~ZKsu!_O5N`kqH;jR)mxv7C~3Z=tVjKRD~n|9IG5+pDTPaBygQ+3qET}^|G0i?IxPBjZ{z!OU-!0 z1qqC~P*9C7I5LvG8x_N=P~|Jpz=aQ&3Oy=`f;2>iQIlT&u%SC0Xw^(rc*a1AGhR9_ zA^n$ugAZ8PlFNY8iJx?mH;W56j_1g&Hvnd4(GPlDYV=!IxA0&-iS z<m{C?c5;O18vmg z;|6b!pIFp%#$n@8bFS59_lG3as=70>DQb;QhhVM&-3XVXe^z7eC|f0TV_NqymkH~P zYSR0#?($W(<>( zc^G!IRZFeKFr`hkWcq%#e9~III6!v|Yx)MSxh&rqL2T&L^5v)M)ON=qvj^xDR*Uk%9v3&yOyNUFSG>e6w))|oZunE0(-hrWb)Y>@f+4@fLHO1R@Y*|n7gt7Z1daoId99aLkh%=)TK@Yk+w4exwwGLF*ufFZpT9@4wYi2F9t{JlfterGF z!B%gq(Q7VwYCiky*;UW*iq+63`Ae)v;!7K(xee0%HbaECCUFG&Dv^Ews@2gN5XI!5LE1H7 zqKN1mF8x(wrzo$#Ggt=soQ=9$HetDp3cB-MG(UNp|&Q~ zFbIV0qm~xVN_u5wzK3eL*SmZ#+sY|(dni;|2jBS|so!l!Fa3z~OYALlFrwGsktSf= z-ak{p96sCFYFVPe14L<=JCI_9J5YO$8DWJlQ-itUWz*16ukk+S0TJnA3k#0n)OLqK zw+-*6RQUkbTq>!$qS98}kG^Yh<)?92sC9sCW0+09=PGJ*5h^}ZCckLq z)@=|&*cdAA7U#q~jX@hhVkgN-+>N{VuI7_?)+t2@GtCz8vnLyi6L$a;x7PNB?TfnH zj`VD*okN@UE=2a>+MUi-Dj>IiEtlrcr7g!EME3rgV^h~*Np62fE=^mz7Vp5M{K6mn z7XQgp5TyNpW$^(ACnKo04c1l&aLFToRM#Yv5=L-COtILm08%kvV4FA!+qzMW#rew= zigvKVHprR_(?*Njv>G2OoL@q$!#LbqGrG2xvX2+GVsbl@Y&RCU{W;%BC@0{&U5b+U zUDxfxq2 zN;EEO@dO*8$i-^^=J~vpzxgilSks5OpMPg_`+YY1v3R&L!#;~4x&fRfx&Hl#WII~y z7p84{eH0>REYkBc&+|?Qp3Yk*!5OwnD7Ge`A_5%6AzP-n%zatTa~EBxjovFlb8f)S z4>o~Uy;=JH*QV?s`whKX7ePn4a|^uYx%y2Ofv1%fi#BJ!`B9;lJS#UgwhH_%@-sdY zi+x(0dPoK`PabBazzAabzmOx*OBbD9|hpZHF&GaDC8g~6#g!c>u+rvtf_nhpYC z=D?+{3jfCP!%h|aIcP83l+{&@{kz!<(23uF<9fK?f)VNU(r>=zWuIyTMSW@IGKTM( z89JTS&j@ZpIEw}A2O|k8RDE=VF*RCO<2OrsP%!T~)zxUn%2j?FyRZc-X%53)6yi;u zbRf`^$5WJyDq6iV3AjtT8lXR5GrJ+IMjYKXWkGhR-qyq+@ya>h&9p;9@7;pG;{oaM zhAWcB3mE7XQ>cv_VE==we&L0^y#JKK>tx~%?P`lHz4TgM@*-cZ_i2j%wTdfh=+mz96pJ%8vpun4EuPrO1j=<_LCv>8b#}~C9!wwlNTvel%0;)9$WvS+ zq^kaFQj{#lv9KQ#I~vZ)c|o?l#|3rQBG__u{2A9S&Z>F=l+jtp~5Pq zE`T=Z+l*P%Lu0F5M4_^*Ywa5GvTPc0vlwc`x%zui50q@xYyVpPVyJpu6|%~F^*kIzC` zpm(THX<%@dA-UgI#7v@^7${j}FkFloFjOtCpH|qvSQLm{P$Z)B;?K&?nL@n24>7a}9xVO`)QkBQIU#6)8$V}CYx%sLjT{w` zJ)2ci@uD3{@Ozh}5~7p>gR%DZ?S9$iTf7@&bm&VvP(f84m2x*Mt*QfR@GfPFUuERV z01IWQ7_M8PcGiwJN?j0_iuHsCvhk0Tj`$Kce_T&7^isFLc~7%s2ekCMr@;DcxXg#E zdZ2|eLr3NZ~lww zq4FJl$U~=vbWd7|z%`Ve_;`^u!rbm2$kB%}(2?;`B?NFE&( zyo+JMnYC7b&wnU+iO=F@*35MWi8^^3I#$vx{df~?0*S3;!3qHM~W%#8#BhqGS^Is2^U0I z$UL)`{aD5zTteLJf{XUcHrQIkQ2{B2b<$JtTUtW@28mHiyvHJc-^m=NR2B0i8cA~FTXm%)&NDT}1qiCrPRw0>j8Te_->9b@O`cpg0_J2H4j zjX>yNzqlmnnE;p)F`1II?B=(Jr4JgdgaIWPzUPD*6X`D*1;yE z4SE|rd$I0AmC@F*`pI}kksu(=-su~6Wa*0c%)Z^wn^*2GuVgFAlLl;d?q6f5VO*Ow z=m`;fjzO)7CL$1tB)gIJaR!`zKULX{(fMx9ik%v%wYz>>Cdx`FG8j+j#&CsYpOj3k zvg6`L@i+c`DG!eAV^{3Jv2a2|9>%4RvRE|;VY8{|nnN-T?X|}OQI%pTQ_>)$L#UHn zo|(bJtl$_cVQ2tZuFDr^Aw6L-G?v1+{3pQDaL!9FG*AYI%|6M%A^4|w zjz#F@*CiyNs4opYn-i=jw$i@CZ&?o)a8+*+4OS}Q{(`V`RKfJ)9h}_qR!S30|IR=L zmRpf}?l^xTjxm&DOqf5skJy;C$!O>2U=QFr?* z3KHIULO*ql#d-jYWTV6mjdqC^Ef}H!X1FZFym#KU=1SUSWV4X*yn7!_3%K z^R(==h>o|ME)eeH$A|o0&NLy(b9~5J22b{Vm)o)K=ZnuzeegJ`v3*?xtjV2rz5XB| zTt@01Wz7yXXn`8vq5h|7b;j!El+>IgIU);iL*yhyn=J7mu|dkOoQO>smBAmOl2TR{ zPeuvEiODss4N3NuL3WdskNe#=a^2a+KFru7_@yrgswmI+-iEV0HiVOa9{SCi|jGw;$`u!nP_)fef_?31Yw7ZJHtB3 zCpsAz@*^(KEI~YzoDh{A z*G}=rYOlXO1(tttMcJAud?F2aKMto*&o=(NDz0_;{$_k4=RP6pVr~6DXR#VJFK=uWluuK)thFuaOlBL**X=^)aZ-Z0WkLy> zVw>Nkr559*4K~4@ThhO2-o(w!HbjL*L=f`y5g;MQs?-tIfliY|;k9ymZvr9}rIf!f zZ~whnr>iMhQ#Ue;z)z>^9Ix4rnYU~%xsT&9haboLGJL28X>iy5FuvXhY_ASTu5YLJ zrnt7dL3FoglZ>{10bx42nRN>C) zxcfPFcQ@>QzLQ}{?Bf8W?x*7DvUhjP+2>p8-sv;%Fb`j~ktbtsy%8ryU;N$b)Vb1` zk!2T|EY5YTw3gIs)A;gioeSxhCEPh%Ppi{UMe*Lf&+Wz zgq3sznG=<=5Vu=d!!es>*__Lf)ha~5Fnq*aU_I*AnqyeuT>AFC=CW5?Wt*?kMWz-+I~cNH5+d} zpD^1RH=xVh4@SEaEIm3%WF*OgEjs#5;jbI;+;P4BhE5E!ylFJ1#*qtt9Zb%3qMGejA#PKk zps1YTMe;zKpPW}-_(uPNSUEcaGO!nfH7cI!O1Br~MM{MC5QQpVRIKy{9}=#`%h8e4 zMrh}gHgnqTO|X^BIV)vuG%Qaxa-x-p_G{YqiW9Y=At09~V~dAPb$GMBc)Ynnd_$W$ z1jxdb2L~C6}Iz?{rs{g5#a|MTjZ38hU&Ejy6S}mfKex(69Vz}JuvtbZj|1o z2T077<^oh8X@z+f=BO&U*_hHwiyCZcvzS3$?e)5kcX9#hxteMQ9Xmd?c_n~j$&P$ z`%yfzQE?ta&#IY4j!aYN6k#)w2f`wY7B@T1m5|$q?NVZguZ$YOCI?tgq-3N_zmasD zibxEg@Sq-T=4xBi@fkJ^G$(#gY-gXM@^)HUOR$$QURUlD_4=RrXXYc<@Bk)Rs9a9= zrY2J7W6P8|A2$-U5x&W@x%f^g91wFE5_qF*#qQ~67q)>F)(BreeHjNWD@As7KgT0T zJrf@q$NdK9mT-2H9a4PJSxsLE7q}q}l{X(~JQ$LfiyAoRk(8*G)bXqo@+0LSkeaCY zZV3W77jsJMM=V=`b&EGO@ITWQzI4-Z(Rtds9ZZJPl}PAmD`NSZ@)X6<6vd zM0xS7ur4F+UZuadQ}1&iZ~`3-nU@9x=971<&mN~r@=itUcY(T-MozUietHLM{g`IL zcM!|JC48+c(kS#0yumO2Xtv)q#Dp3;@@D>Bjt-(8X|k8y8SK#!()(P^{S2>7#=!6` zWB3No4F?$hUewzo>=)b_jDe_0(hXJ}ftQIK1WI#I0z06n7=j+l2@Wn5gbM5;sCX|M z(4{O~8Pd*@;!AjLz^cIM4fJ9eH$Yb^z)C8h>z4Iv#sNb2l6(9*3}#`GEk58$7v0#f|MIig{eg^FX8r>Su4pynOaqyOB#dD^hNoSA zZe{gUDuP#C2)4Mx*>T21sD;97PVc%wFVj+&vQ3YYCkl0e8#rCGi9h{nka>2;y>@1* zw^MJ`lxmM0>AuGp3NRuy#@By5hMGs_r5EP0D&pFkpmAh?6y#&MWJn5v~=lw z4|_43!yeLggLu_INF;IE32{x7-O~(d)O7O^e^^B@sV0l1;zb^4%f#3z4fitU zef0vIo|1+2v@tkn)^H~v636~jfTjgPmG=v*On=N9d^f0Qm;`y-fpj4zsmY=~mTKG^!`^ zlOz+>ODgV-o7MwzOo4TTnW(PrHq(N8{O9N5mB7Hy?5wKAEY^~{ zKN8)Ys^lc|dM9NvDut#&6m^GW@)V$OPcxlc@jPBT4#(}9j%$>H9m9p#c?=rK`%R^S zhl>hb!Q_XnYT*T$X`D7k7+O?U3Y{_|9>DBh@JD!qfdF-Kg|vjV(nJ}+Fo;hM{HdpR zfZYe$|BQoT>i&!ufBU-I-#6)h_Idw_*hLMDob4Pv{yYBhiI#yJq=ygDYsRbr^#VE_ zY$-59YbfnM0wuu~f<(Uw0v5ND!~CR#`bSj&UjBVOx=R#);z3-^>=e z*}9}7h64c4w``$UVz4W}0jm1KCYHw7$!qd(+2hT$LrL!0IO_jmr|+goHu zaw2_0BU``y`~T%TmFygyO^js>?Ejsj7*@4W`bI+f+HNmX@0Q>HwGId4CJ|lfXjm9l0Fr{Y1=6xu{9&f{Br3uPlo4v<(9p|PU zb02RuvArGZ&E^8TW9e0(k2+!>+k5?Tt4AEw*;J~pB#eYZK2Roa|4s-7vVh`Mq7MRt zf`Y=SK<^V7P*RdpxDVy4UTEsLInTPHmqvoWwspFmV3ejpJxoG3Y=oM)Q$gY~4Y6Ul z=+>^f%*2zcqq;ekUUhDotjeL-n8|Ihxpo+x;;wKzE(L#O>Jk)>EaAJZ$(fuj=c+zp z1J=2e7NpF~Y@-Mgo2rEMo6XhV=M7>IZO^($Ek>eTMcCS$N8#U68TT%+hOQ?p9wu7% zZ!IP2plp?`Hmz3DuKI8#_f~lW(9ZPHE4dC1++$!qSsGY3xfNoK{$@tK_S)x<_c{<8j3%_AzTmacT^+NbB4WWIwnN@bc2N zE?KMxi)}MT63mzHwBfYD$0W)RTXxIa?PcnijNc-lGGz=R&(j9yvhFSvPu&CW&{IEc z4u@W_wts>3wt+$$d2Md&Y!?{aR$|+QMl5QNj!Tko$d*Fpoc-Mbo)CFeaEM1Kl5MUu z*$;KNkFof*M+2SpbKmM)6L;k` zn?KaR6YY+9TDOS!dQ+-m8^K!3B9%7V#3+1QkB)}7c)OeW^Te;~xtt2>gADBoK>Or~ zkr_fndpD9M6g;S8eDO|p6`M?M8kCBUrK$7 z@&8!Q#b}&uBZ`FH^a{6!Ks_jrvxc~2#|?jh{d-#ZC;55$<|d2s>&K5}wEs0_@ZUo1 z|DIKP)Xv?ohEcv^s4f1kb`u$m(nyelXfdJ|TSzj5aE_?rw(hIj`lFxKmbCO3l&H9> zk%qQ52d4troCc`@J-|>9lz`1Roco@Px8*MQ6@E#`T~Em_|F)DlAbkijb-kYH>3i!f z^7}Zx{;opc@yZl{A0w|?2=5f{7S5!VAV2O{fF8f}PNkVW-%;!JCJnmX^2|J8`+fLg z^7Y?)cl4*B{eC9!9ZG}p_DH~cX$VaFeKIsD(H)p)KOu+m9raW}`p&@n&6Q(b2|?rZ z_>^H30#r53R#{Dz|3-M4$hMWWa3qm)jaDa`<}OM&!6ei)_p#OpDiIIB4Q z?e5ZExEFGYwXz~{%hUzKa7CYq-&ZFQa)POvhyc2S2Dkz+TBVifYW!A5BvLX}ma1yS z6kyDX&oHkVzg}0LSHmmRPC$Yb3l}nF@IpODXDp>Ow-+m+UXq;5B+m4Im1yY6-LY%% zuDV4B7NUJ~}BLG|}$dkUL7TK2L%}l~fQaucpY&N7Ch7TKMtf8e4 zr#Q@x%ACt=J4Lo|vMu_lI$ITV+7EFfR+X)~0R0s9Dm8@*$2tU_PIU~repS`JwpO%-D#6gHA_9x#-QLc#63$m3jX z`5f5@5^RpOwHe0yfmgUo*&=mDM|KxW{8=1sN$cLFN}?6_nvafiY!lsLX6v zj1CKD2~xjXb(vZcc?q;V^VP=4wNix4?vZ+>uXP?j1$e(}xKHR&ivF!iEPDN*x2%CPFzKX5GBZMm0PQK(P6t= zE))@Is^^|azMVMAZNM8P?Y#<1zIA71hN%TJ-caL*{6lG%H( z{t1kYqcUGVmwvNVV2|m->eKPzHOa3>f9(0b+TF4`AUD~q(;{jn7#Zdo&8-bXG?XUU zmk5TfjqU+#vgPzDwQ#>^MeA@NwaJEgQdncf3XpsW-7?!|7drFDa*H`?y<2xj1?^X5 zIXlBpc2TFsz70cdl-ixS)@4Lo;!q*q+X=4R!0P&@21Ve(ki=RB)9ZEU)8+7{qW zdp4Z-8Vv#nBtz%xt4ph%Re6@yF=RHq@x^4;#4t4HFx8`{iEWq>2{Jfeb+U<8;z6^A zLg34s;xh~$4i?91dIm4UgWI+FilqIfBq1dtqy^~NuRJpmaY~V=g|A^;`GGmSW!m+M zmHE!J?Ym~Cb)&VuKp$y1go`2;+VGE6xvDdqew=5-%V;;!@lCo6A{;f~>=&?^@L7+1 zm>Ie-$L%e!V>KZTuZdiaFDu@VUH z6?jkK*A~!oO2XWS4s@L1o_Mf`A;8=s-q}rLPjW-6lB{C*3SgQ>&{g4jL5+LBwj`!I z=nU9oH@9FrxOnYhggZZyU|%gP|W z=E2@+@%o|)Z}a=F?{2#UZ!DT6-^oaPL*uUz=BmWC0}*?o&87Ntt$$2E=VL$?n>mC1 ziQk_2^=vvvfSr&pCoeE$F6S_JbwZg)^|M$cz zp=alGJoD8w@k@3WHwyBNbY?Cm%$PhAF?tE4e8a@kZ{@Co+elG=W>1 zqlGzHV<;v65GDA)d+krhc@z~35r9x|!B*1G#0ZPUahMWH-+YYx>70ovs7(HuKD7ID zkCZC7DY8Z&T@9dmu1I|81qp3ipyDq(#WjRqK(GByfb|v6L8H~`2)*ovYpB@E zIczA)MKpd}sE+VinU5RDInteLBIK(PJivpMu58UgPbh^Fm*H_}TYD%tYxsE*# zSow#ylsN~#$$c<+u!gsmrE|Kg0`HpsX%AJg%fy~09gi(aT7iM=(Rp74k%SjPSLBq) z#k8)_F>u7y5T>osNo*fo*Pg*4qpNRVt*E4EM>viy+j(qFVOIIadE^DbKtH(g1B&%P zm~fY*rMIw?xd=I%T#pqLM?o;-a3WSMQcPF*4wZI)Ahb+CXHnWu(7q=WAah*ZkHlQssh~uDkq|!&tm|BIm|gRDxgExR^?afA zb5y6;L!?Qy2YO%_sgv(j23JNSED~!cHIT2L8+r?c29wNpaYS>bid?4#Zxr?@6^`ma zP$6D1Agg71T2*ND4byMg_ryLfuJ7a;foMbNKDMi}Szk57)QJR93Kf`gsMe3gD@|HK zzjSUKK@-7D?oRurrPCMzO4*EHR+ukX08K;eo*8htn!G`ay8;U*zoUXIJ8q|*x8|$? zr{WLF=m_4j~6zHlk^XJ)#OQ28BWkE zkJi&^gu|H@VkNI)sycKw;b)A%Igw*WE-P1VI6U;igO^#Mb{T~`Z4E?Hb}?RrwK(d~ zjaQF6Nq<_04A|qjHJkzoc6$SZ%*EaD*GmH>suf91L5$I5()t4PZkX1d{{|xZ8nJi& z{fr&uqRkOKX5t^Pc(2?c_(qV;C*G(BL^cNQr<<}r##HeSxrz&O4A6h|JTgjOUJwHW z!Sbhl7MeVp|7Lz|E^Df$y#>r)LX0?akH&Y%brGrcbvT|_|4!(s?gq|KbzLaQLuvoq zltplBI^yvxHs8a2+5mFS|cuyy*7hQF|qVU&~k6WRq6w)@)+ zfk8&Eg<)|+UC8a%G(<{Nf&$}VMK{1Vw0YT)kcs1WWpH}NJV~Sn z>mv=?2%VZKFMlDmpEy-T1oa_1Wd^Git>TJsYO!Y~t9!m@3Ua96A5%teB_t10A1").appendTo(_89c); -$.data(_89b,"combotree").tree=tree; -} -tree.tree($.extend({},opts,{checkbox:opts.multiple,onLoadSuccess:function(node,data){ -var _89d=$(_89b).combotree("getValues"); -if(opts.multiple){ -var _89e=tree.tree("getChecked"); -for(var i=0;i<_89e.length;i++){ -var id=_89e[i].id; -(function(){ -for(var i=0;i<_89d.length;i++){ -if(id==_89d[i]){ -return; -} -} -_89d.push(id); -})(); -} -} -$(_89b).combotree("setValues",_89d); -opts.onLoadSuccess.call(this,node,data); -},onClick:function(node){ -_8a0(_89b); -$(_89b).combo("hidePanel"); -opts.onClick.call(this,node); -},onCheck:function(node,_89f){ -_8a0(_89b); -opts.onCheck.call(this,node,_89f); -}})); -}; -function _8a0(_8a1){ -var opts=$.data(_8a1,"combotree").options; -var tree=$.data(_8a1,"combotree").tree; -var vv=[],ss=[]; -if(opts.multiple){ -var _8a2=tree.tree("getChecked"); -for(var i=0;i<_8a2.length;i++){ -vv.push(_8a2[i].id); -ss.push(_8a2[i].text); -} -}else{ -var node=tree.tree("getSelected"); -if(node){ -vv.push(node.id); -ss.push(node.text); -} -} -$(_8a1).combo("setValues",vv).combo("setText",ss.join(opts.separator)); -}; -function _8a3(_8a4,_8a5){ -var opts=$.data(_8a4,"combotree").options; -var tree=$.data(_8a4,"combotree").tree; -tree.find("span.tree-checkbox").addClass("tree-checkbox0").removeClass("tree-checkbox1 tree-checkbox2"); -var vv=[],ss=[]; -for(var i=0;i<_8a5.length;i++){ -var v=_8a5[i]; -var s=v; -var node=tree.tree("find",v); -if(node){ -s=node.text; -tree.tree("check",node.target); -tree.tree("select",node.target); -} -vv.push(v); -ss.push(s); -} -$(_8a4).combo("setValues",vv).combo("setText",ss.join(opts.separator)); -}; -$.fn.combotree=function(_8a6,_8a7){ -if(typeof _8a6=="string"){ -var _8a8=$.fn.combotree.methods[_8a6]; -if(_8a8){ -return _8a8(this,_8a7); -}else{ -return this.combo(_8a6,_8a7); -} -} -_8a6=_8a6||{}; -return this.each(function(){ -var _8a9=$.data(this,"combotree"); -if(_8a9){ -$.extend(_8a9.options,_8a6); -}else{ -$.data(this,"combotree",{options:$.extend({},$.fn.combotree.defaults,$.fn.combotree.parseOptions(this),_8a6)}); -} -_89a(this); -}); -}; -$.fn.combotree.methods={options:function(jq){ -var _8aa=jq.combo("options"); -return $.extend($.data(jq[0],"combotree").options,{originalValue:_8aa.originalValue,disabled:_8aa.disabled,readonly:_8aa.readonly}); -},tree:function(jq){ -return $.data(jq[0],"combotree").tree; -},loadData:function(jq,data){ -return jq.each(function(){ -var opts=$.data(this,"combotree").options; -opts.data=data; -var tree=$.data(this,"combotree").tree; -tree.tree("loadData",data); -}); -},reload:function(jq,url){ -return jq.each(function(){ -var opts=$.data(this,"combotree").options; -var tree=$.data(this,"combotree").tree; -if(url){ -opts.url=url; -} -tree.tree({url:opts.url}); -}); -},setValues:function(jq,_8ab){ -return jq.each(function(){ -_8a3(this,_8ab); -}); -},setValue:function(jq,_8ac){ -return jq.each(function(){ -_8a3(this,[_8ac]); -}); -},clear:function(jq){ -return jq.each(function(){ -var tree=$.data(this,"combotree").tree; -tree.find("div.tree-node-selected").removeClass("tree-node-selected"); -var cc=tree.tree("getChecked"); -for(var i=0;i").appendTo(_8b1); -_8b0.grid=grid; -} -grid.datagrid($.extend({},opts,{border:false,fit:true,singleSelect:(!opts.multiple),onLoadSuccess:function(data){ -var _8b2=$(_8af).combo("getValues"); -var _8b3=opts.onSelect; -opts.onSelect=function(){ -}; -_8bd(_8af,_8b2,_8b0.remainText); -opts.onSelect=_8b3; -opts.onLoadSuccess.apply(_8af,arguments); -},onClickRow:_8b4,onSelect:function(_8b5,row){ -_8b6(); -opts.onSelect.call(this,_8b5,row); -},onUnselect:function(_8b7,row){ -_8b6(); -opts.onUnselect.call(this,_8b7,row); -},onSelectAll:function(rows){ -_8b6(); -opts.onSelectAll.call(this,rows); -},onUnselectAll:function(rows){ -if(opts.multiple){ -_8b6(); -} -opts.onUnselectAll.call(this,rows); -}})); -function _8b4(_8b8,row){ -_8b0.remainText=false; -_8b6(); -if(!opts.multiple){ -$(_8af).combo("hidePanel"); -} -opts.onClickRow.call(this,_8b8,row); -}; -function _8b6(){ -var rows=grid.datagrid("getSelections"); -var vv=[],ss=[]; -for(var i=0;i=_8bb){ -_8bc=0; -} -} -grid.datagrid("highlightRow",_8bc); -if(opts.selectOnNavigation){ -_8ba.remainText=false; -grid.datagrid("selectRow",_8bc); -} -}; -function _8bd(_8be,_8bf,_8c0){ -var _8c1=$.data(_8be,"combogrid"); -var opts=_8c1.options; -var grid=_8c1.grid; -var rows=grid.datagrid("getRows"); -var ss=[]; -var _8c2=$(_8be).combo("getValues"); -var _8c3=$(_8be).combo("options"); -var _8c4=_8c3.onChange; -_8c3.onChange=function(){ -}; -grid.datagrid("clearSelections"); -for(var i=0;i<_8bf.length;i++){ -var _8c5=grid.datagrid("getRowIndex",_8bf[i]); -if(_8c5>=0){ -grid.datagrid("selectRow",_8c5); -ss.push(rows[_8c5][opts.textField]); -}else{ -ss.push(_8bf[i]); -} -} -$(_8be).combo("setValues",_8c2); -_8c3.onChange=_8c4; -$(_8be).combo("setValues",_8bf); -if(!_8c0){ -var s=ss.join(opts.separator); -if($(_8be).combo("getText")!=s){ -$(_8be).combo("setText",s); -} -} -}; -function _8c6(_8c7,q){ -var _8c8=$.data(_8c7,"combogrid"); -var opts=_8c8.options; -var grid=_8c8.grid; -_8c8.remainText=true; -if(opts.multiple&&!q){ -_8bd(_8c7,[],true); -}else{ -_8bd(_8c7,[q],true); -} -if(opts.mode=="remote"){ -grid.datagrid("clearSelections"); -grid.datagrid("load",$.extend({},opts.queryParams,{q:q})); -}else{ -if(!q){ -return; -} -var rows=grid.datagrid("getRows"); -for(var i=0;i").appendTo(_8da); -if(opts.sharedCalendar){ -_8d7.calendar=$(opts.sharedCalendar).appendTo(cc); -if(!_8d7.calendar.hasClass("calendar")){ -_8d7.calendar.calendar(); -} -}else{ -_8d7.calendar=$("
").appendTo(cc).calendar(); -} -$.extend(_8d7.calendar.calendar("options"),{fit:true,border:false,onSelect:function(date){ -var opts=$(this.target).datebox("options"); -_8e0(this.target,opts.formatter(date)); -$(this.target).combo("hidePanel"); -opts.onSelect.call(_8d6,date); -}}); -_8e0(_8d6,opts.value); -var _8db=$("
").appendTo(_8da); -var tr=_8db.find("tr"); -for(var i=0;i").appendTo(tr); -var btn=opts.buttons[i]; -var t=$("").html($.isFunction(btn.text)?btn.text(_8d6):btn.text).appendTo(td); -t.bind("click",{target:_8d6,handler:btn.handler},function(e){ -e.data.handler.call(this,e.data.target); -}); -} -tr.find("td").css("width",(100/opts.buttons.length)+"%"); -}; -function _8d8(){ -var _8dc=$(_8d6).combo("panel"); -var cc=_8dc.children("div.datebox-calendar-inner"); -_8dc.children()._outerWidth(_8dc.width()); -_8d7.calendar.appendTo(cc); -_8d7.calendar[0].target=_8d6; -if(opts.panelHeight!="auto"){ -var _8dd=_8dc.height(); -_8dc.children().not(cc).each(function(){ -_8dd-=$(this).outerHeight(); -}); -cc._outerHeight(_8dd); -} -_8d7.calendar.calendar("resize"); -}; -}; -function _8de(_8df,q){ -_8e0(_8df,q); -}; -function _8e1(_8e2){ -var _8e3=$.data(_8e2,"datebox"); -var opts=_8e3.options; -var _8e4=opts.formatter(_8e3.calendar.calendar("options").current); -_8e0(_8e2,_8e4); -$(_8e2).combo("hidePanel"); -}; -function _8e0(_8e5,_8e6){ -var _8e7=$.data(_8e5,"datebox"); -var opts=_8e7.options; -$(_8e5).combo("setValue",_8e6).combo("setText",_8e6); -_8e7.calendar.calendar("moveTo",opts.parser(_8e6)); -}; -$.fn.datebox=function(_8e8,_8e9){ -if(typeof _8e8=="string"){ -var _8ea=$.fn.datebox.methods[_8e8]; -if(_8ea){ -return _8ea(this,_8e9); -}else{ -return this.combo(_8e8,_8e9); -} -} -_8e8=_8e8||{}; -return this.each(function(){ -var _8eb=$.data(this,"datebox"); -if(_8eb){ -$.extend(_8eb.options,_8e8); -}else{ -$.data(this,"datebox",{options:$.extend({},$.fn.datebox.defaults,$.fn.datebox.parseOptions(this),_8e8)}); -} -_8d5(this); -}); -}; -$.fn.datebox.methods={options:function(jq){ -var _8ec=jq.combo("options"); -return $.extend($.data(jq[0],"datebox").options,{originalValue:_8ec.originalValue,disabled:_8ec.disabled,readonly:_8ec.readonly}); -},calendar:function(jq){ -return $.data(jq[0],"datebox").calendar; -},setValue:function(jq,_8ed){ -return jq.each(function(){ -_8e0(this,_8ed); -}); -},reset:function(jq){ -return jq.each(function(){ -var opts=$(this).datebox("options"); -$(this).datebox("setValue",opts.originalValue); -}); -}}; -$.fn.datebox.parseOptions=function(_8ee){ -return $.extend({},$.fn.combo.parseOptions(_8ee),$.parser.parseOptions(_8ee,["sharedCalendar"])); -}; -$.fn.datebox.defaults=$.extend({},$.fn.combo.defaults,{panelWidth:180,panelHeight:"auto",sharedCalendar:null,keyHandler:{up:function(e){ -},down:function(e){ -},left:function(e){ -},right:function(e){ -},enter:function(e){ -_8e1(this); -},query:function(q,e){ -_8de(this,q); -}},currentText:"Today",closeText:"Close",okText:"Ok",buttons:[{text:function(_8ef){ -return $(_8ef).datebox("options").currentText; -},handler:function(_8f0){ -$(_8f0).datebox("calendar").calendar({year:new Date().getFullYear(),month:new Date().getMonth()+1,current:new Date()}); -_8e1(_8f0); -}},{text:function(_8f1){ -return $(_8f1).datebox("options").closeText; -},handler:function(_8f2){ -$(this).closest("div.combo-panel").panel("close"); -}}],formatter:function(date){ -var y=date.getFullYear(); -var m=date.getMonth()+1; -var d=date.getDate(); -return m+"/"+d+"/"+y; -},parser:function(s){ -var t=Date.parse(s); -if(!isNaN(t)){ -return new Date(t); -}else{ -return new Date(); -} -},onSelect:function(date){ -}}); -})(jQuery); -(function($){ -function _8f3(_8f4){ -var _8f5=$.data(_8f4,"datetimebox"); -var opts=_8f5.options; -$(_8f4).datebox($.extend({},opts,{onShowPanel:function(){ -var _8f6=$(_8f4).datetimebox("getValue"); -_8f8(_8f4,_8f6,true); -opts.onShowPanel.call(_8f4); -},formatter:$.fn.datebox.defaults.formatter,parser:$.fn.datebox.defaults.parser})); -$(_8f4).removeClass("datebox-f").addClass("datetimebox-f"); -$(_8f4).datebox("calendar").calendar({onSelect:function(date){ -opts.onSelect.call(_8f4,date); -}}); -var _8f7=$(_8f4).datebox("panel"); -if(!_8f5.spinner){ -var p=$("
").insertAfter(_8f7.children("div.datebox-calendar-inner")); -_8f5.spinner=p.children("input"); -} -_8f5.spinner.timespinner({showSeconds:opts.showSeconds,separator:opts.timeSeparator}).unbind(".datetimebox").bind("mousedown.datetimebox",function(e){ -e.stopPropagation(); -}); -_8f8(_8f4,opts.value); -}; -function _8f9(_8fa){ -var c=$(_8fa).datetimebox("calendar"); -var t=$(_8fa).datetimebox("spinner"); -var date=c.calendar("options").current; -return new Date(date.getFullYear(),date.getMonth(),date.getDate(),t.timespinner("getHours"),t.timespinner("getMinutes"),t.timespinner("getSeconds")); -}; -function _8fb(_8fc,q){ -_8f8(_8fc,q,true); -}; -function _8fd(_8fe){ -var opts=$.data(_8fe,"datetimebox").options; -var date=_8f9(_8fe); -_8f8(_8fe,opts.formatter.call(_8fe,date)); -$(_8fe).combo("hidePanel"); -}; -function _8f8(_8ff,_900,_901){ -var opts=$.data(_8ff,"datetimebox").options; -$(_8ff).combo("setValue",_900); -if(!_901){ -if(_900){ -var date=opts.parser.call(_8ff,_900); -$(_8ff).combo("setValue",opts.formatter.call(_8ff,date)); -$(_8ff).combo("setText",opts.formatter.call(_8ff,date)); -}else{ -$(_8ff).combo("setText",_900); -} -} -var date=opts.parser.call(_8ff,_900); -$(_8ff).datetimebox("calendar").calendar("moveTo",date); -$(_8ff).datetimebox("spinner").timespinner("setValue",_902(date)); -function _902(date){ -function _903(_904){ -return (_904<10?"0":"")+_904; -}; -var tt=[_903(date.getHours()),_903(date.getMinutes())]; -if(opts.showSeconds){ -tt.push(_903(date.getSeconds())); -} -return tt.join($(_8ff).datetimebox("spinner").timespinner("options").separator); -}; -}; -$.fn.datetimebox=function(_905,_906){ -if(typeof _905=="string"){ -var _907=$.fn.datetimebox.methods[_905]; -if(_907){ -return _907(this,_906); -}else{ -return this.datebox(_905,_906); -} -} -_905=_905||{}; -return this.each(function(){ -var _908=$.data(this,"datetimebox"); -if(_908){ -$.extend(_908.options,_905); -}else{ -$.data(this,"datetimebox",{options:$.extend({},$.fn.datetimebox.defaults,$.fn.datetimebox.parseOptions(this),_905)}); -} -_8f3(this); -}); -}; -$.fn.datetimebox.methods={options:function(jq){ -var _909=jq.datebox("options"); -return $.extend($.data(jq[0],"datetimebox").options,{originalValue:_909.originalValue,disabled:_909.disabled,readonly:_909.readonly}); -},spinner:function(jq){ -return $.data(jq[0],"datetimebox").spinner; -},setValue:function(jq,_90a){ -return jq.each(function(){ -_8f8(this,_90a); -}); -},reset:function(jq){ -return jq.each(function(){ -var opts=$(this).datetimebox("options"); -$(this).datetimebox("setValue",opts.originalValue); -}); -}}; -$.fn.datetimebox.parseOptions=function(_90b){ -var t=$(_90b); -return $.extend({},$.fn.datebox.parseOptions(_90b),$.parser.parseOptions(_90b,["timeSeparator",{showSeconds:"boolean"}])); -}; -$.fn.datetimebox.defaults=$.extend({},$.fn.datebox.defaults,{showSeconds:true,timeSeparator:":",keyHandler:{up:function(e){ -},down:function(e){ -},left:function(e){ -},right:function(e){ -},enter:function(e){ -_8fd(this); -},query:function(q,e){ -_8fb(this,q); -}},buttons:[{text:function(_90c){ -return $(_90c).datetimebox("options").currentText; -},handler:function(_90d){ -$(_90d).datetimebox("calendar").calendar({year:new Date().getFullYear(),month:new Date().getMonth()+1,current:new Date()}); -_8fd(_90d); -}},{text:function(_90e){ -return $(_90e).datetimebox("options").okText; -},handler:function(_90f){ -_8fd(_90f); -}},{text:function(_910){ -return $(_910).datetimebox("options").closeText; -},handler:function(_911){ -$(this).closest("div.combo-panel").panel("close"); -}}],formatter:function(date){ -var h=date.getHours(); -var M=date.getMinutes(); -var s=date.getSeconds(); -function _912(_913){ -return (_913<10?"0":"")+_913; -}; -var _914=$(this).datetimebox("spinner").timespinner("options").separator; -var r=$.fn.datebox.defaults.formatter(date)+" "+_912(h)+_914+_912(M); -if($(this).datetimebox("options").showSeconds){ -r+=_914+_912(s); -} -return r; -},parser:function(s){ -if($.trim(s)==""){ -return new Date(); -} -var dt=s.split(" "); -var d=$.fn.datebox.defaults.parser(dt[0]); -if(dt.length<2){ -return d; -} -var _915=$(this).datetimebox("spinner").timespinner("options").separator; -var tt=dt[1].split(_915); -var hour=parseInt(tt[0],10)||0; -var _916=parseInt(tt[1],10)||0; -var _917=parseInt(tt[2],10)||0; -return new Date(d.getFullYear(),d.getMonth(),d.getDate(),hour,_916,_917); -}}); -})(jQuery); -(function($){ -function init(_918){ -var _919=$("
"+"
"+""+""+"
"+"
"+"
"+"
"+""+"
").insertAfter(_918); -var t=$(_918); -t.addClass("slider-f").hide(); -var name=t.attr("name"); -if(name){ -_919.find("input.slider-value").attr("name",name); -t.removeAttr("name").attr("sliderName",name); -} -return _919; -}; -function _91a(_91b,_91c){ -var _91d=$.data(_91b,"slider"); -var opts=_91d.options; -var _91e=_91d.slider; -if(_91c){ -if(_91c.width){ -opts.width=_91c.width; -} -if(_91c.height){ -opts.height=_91c.height; -} -} -if(opts.mode=="h"){ -_91e.css("height",""); -_91e.children("div").css("height",""); -if(!isNaN(opts.width)){ -_91e.width(opts.width); -} -}else{ -_91e.css("width",""); -_91e.children("div").css("width",""); -if(!isNaN(opts.height)){ -_91e.height(opts.height); -_91e.find("div.slider-rule").height(opts.height); -_91e.find("div.slider-rulelabel").height(opts.height); -_91e.find("div.slider-inner")._outerHeight(opts.height); -} -} -_91f(_91b); -}; -function _920(_921){ -var _922=$.data(_921,"slider"); -var opts=_922.options; -var _923=_922.slider; -var aa=opts.mode=="h"?opts.rule:opts.rule.slice(0).reverse(); -if(opts.reversed){ -aa=aa.slice(0).reverse(); -} -_924(aa); -function _924(aa){ -var rule=_923.find("div.slider-rule"); -var _925=_923.find("div.slider-rulelabel"); -rule.empty(); -_925.empty(); -for(var i=0;i").appendTo(rule); -span.css((opts.mode=="h"?"left":"top"),_926); -if(aa[i]!="|"){ -span=$("").appendTo(_925); -span.html(aa[i]); -if(opts.mode=="h"){ -span.css({left:_926,marginLeft:-Math.round(span.outerWidth()/2)}); -}else{ -span.css({top:_926,marginTop:-Math.round(span.outerHeight()/2)}); -} -} -} -}; -}; -function _927(_928){ -var _929=$.data(_928,"slider"); -var opts=_929.options; -var _92a=_929.slider; -_92a.removeClass("slider-h slider-v slider-disabled"); -_92a.addClass(opts.mode=="h"?"slider-h":"slider-v"); -_92a.addClass(opts.disabled?"slider-disabled":""); -_92a.find("a.slider-handle").draggable({axis:opts.mode,cursor:"pointer",disabled:opts.disabled,onDrag:function(e){ -var left=e.data.left; -var _92b=_92a.width(); -if(opts.mode!="h"){ -left=e.data.top; -_92b=_92a.height(); -} -if(left<0||left>_92b){ -return false; -}else{ -var _92c=_93e(_928,left); -_92d(_92c); -return false; -} -},onBeforeDrag:function(){ -_929.isDragging=true; -},onStartDrag:function(){ -opts.onSlideStart.call(_928,opts.value); -},onStopDrag:function(e){ -var _92e=_93e(_928,(opts.mode=="h"?e.data.left:e.data.top)); -_92d(_92e); -opts.onSlideEnd.call(_928,opts.value); -opts.onComplete.call(_928,opts.value); -_929.isDragging=false; -}}); -_92a.find("div.slider-inner").unbind(".slider").bind("mousedown.slider",function(e){ -if(_929.isDragging){ -return; -} -var pos=$(this).offset(); -var _92f=_93e(_928,(opts.mode=="h"?(e.pageX-pos.left):(e.pageY-pos.top))); -_92d(_92f); -opts.onComplete.call(_928,opts.value); -}); -function _92d(_930){ -var s=Math.abs(_930%opts.step); -if(sopts.max){ -_933=opts.max; -} -opts.value=_933; -$(_932).val(_933); -_935.find("input.slider-value").val(_933); -var pos=_937(_932,_933); -var tip=_935.find(".slider-tip"); -if(opts.showTip){ -tip.show(); -tip.html(opts.tipFormatter.call(_932,opts.value)); -}else{ -tip.hide(); -} -if(opts.mode=="h"){ -var _938="left:"+pos+"px;"; -_935.find(".slider-handle").attr("style",_938); -tip.attr("style",_938+"margin-left:"+(-Math.round(tip.outerWidth()/2))+"px"); -}else{ -var _938="top:"+pos+"px;"; -_935.find(".slider-handle").attr("style",_938); -tip.attr("style",_938+"margin-left:"+(-Math.round(tip.outerWidth()))+"px"); -} -if(_936!=_933){ -opts.onChange.call(_932,_933,_936); -} -}; -function _91f(_939){ -var opts=$.data(_939,"slider").options; -var fn=opts.onChange; -opts.onChange=function(){ -}; -_931(_939,opts.value); -opts.onChange=fn; -}; -function _937(_93a,_93b){ -var _93c=$.data(_93a,"slider"); -var opts=_93c.options; -var _93d=_93c.slider; -if(opts.mode=="h"){ -var pos=(_93b-opts.min)/(opts.max-opts.min)*_93d.width(); -if(opts.reversed){ -pos=_93d.width()-pos; -} -}else{ -var pos=_93d.height()-(_93b-opts.min)/(opts.max-opts.min)*_93d.height(); -if(opts.reversed){ -pos=_93d.height()-pos; -} -} -return pos.toFixed(0); -}; -function _93e(_93f,pos){ -var _940=$.data(_93f,"slider"); -var opts=_940.options; -var _941=_940.slider; -if(opts.mode=="h"){ -var _942=opts.min+(opts.max-opts.min)*(pos/_941.width()); -}else{ -var _942=opts.min+(opts.max-opts.min)*((_941.height()-pos)/_941.height()); -} -return opts.reversed?opts.max-_942.toFixed(0):_942.toFixed(0); -}; -$.fn.slider=function(_943,_944){ -if(typeof _943=="string"){ -return $.fn.slider.methods[_943](this,_944); -} -_943=_943||{}; -return this.each(function(){ -var _945=$.data(this,"slider"); -if(_945){ -$.extend(_945.options,_943); -}else{ -_945=$.data(this,"slider",{options:$.extend({},$.fn.slider.defaults,$.fn.slider.parseOptions(this),_943),slider:init(this)}); -$(this).removeAttr("disabled"); -} -var opts=_945.options; -opts.min=parseFloat(opts.min); -opts.max=parseFloat(opts.max); -opts.value=parseFloat(opts.value); -opts.step=parseFloat(opts.step); -opts.originalValue=opts.value; -_927(this); -_920(this); -_91a(this); -}); -}; -$.fn.slider.methods={options:function(jq){ -return $.data(jq[0],"slider").options; -},destroy:function(jq){ -return jq.each(function(){ -$.data(this,"slider").slider.remove(); -$(this).remove(); -}); -},resize:function(jq,_946){ -return jq.each(function(){ -_91a(this,_946); -}); -},getValue:function(jq){ -return jq.slider("options").value; -},setValue:function(jq,_947){ -return jq.each(function(){ -_931(this,_947); -}); -},clear:function(jq){ -return jq.each(function(){ -var opts=$(this).slider("options"); -_931(this,opts.min); -}); -},reset:function(jq){ -return jq.each(function(){ -var opts=$(this).slider("options"); -_931(this,opts.originalValue); -}); -},enable:function(jq){ -return jq.each(function(){ -$.data(this,"slider").options.disabled=false; -_927(this); -}); -},disable:function(jq){ -return jq.each(function(){ -$.data(this,"slider").options.disabled=true; -_927(this); -}); -}}; -$.fn.slider.parseOptions=function(_948){ -var t=$(_948); -return $.extend({},$.parser.parseOptions(_948,["width","height","mode",{reversed:"boolean",showTip:"boolean",min:"number",max:"number",step:"number"}]),{value:(t.val()||undefined),disabled:(t.attr("disabled")?true:undefined),rule:(t.attr("rule")?eval(t.attr("rule")):undefined)}); -}; -$.fn.slider.defaults={width:"auto",height:"auto",mode:"h",reversed:false,showTip:false,disabled:false,value:0,min:0,max:100,step:1,rule:[],tipFormatter:function(_949){ -return _949; -},onChange:function(_94a,_94b){ -},onSlideStart:function(_94c){ -},onSlideEnd:function(_94d){ -},onComplete:function(_94e){ -}}; -})(jQuery); - -$.extend($.fn.validatebox.defaults.rules, { - equals: { - validator: function(value,param) - { - return value == $(param[0]).val(); - }, - message: '确认密码与输入密码不一致' - } -}); diff --git a/src/main/webapp/js/easyui-1.3.5/jquery.min.js b/src/main/webapp/js/easyui-1.3.5/jquery.min.js deleted file mode 100644 index f121291c..00000000 --- a/src/main/webapp/js/easyui-1.3.5/jquery.min.js +++ /dev/null @@ -1,2 +0,0 @@ -/*! jQuery v@1.8.0 jquery.com | jquery.org/license */ -(function(a,b){function G(a){var b=F[a]={};return p.each(a.split(s),function(a,c){b[c]=!0}),b}function J(a,c,d){if(d===b&&a.nodeType===1){var e="data-"+c.replace(I,"-$1").toLowerCase();d=a.getAttribute(e);if(typeof d=="string"){try{d=d==="true"?!0:d==="false"?!1:d==="null"?null:+d+""===d?+d:H.test(d)?p.parseJSON(d):d}catch(f){}p.data(a,c,d)}else d=b}return d}function K(a){var b;for(b in a){if(b==="data"&&p.isEmptyObject(a[b]))continue;if(b!=="toJSON")return!1}return!0}function ba(){return!1}function bb(){return!0}function bh(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function bi(a,b){do a=a[b];while(a&&a.nodeType!==1);return a}function bj(a,b,c){b=b||0;if(p.isFunction(b))return p.grep(a,function(a,d){var e=!!b.call(a,d,a);return e===c});if(b.nodeType)return p.grep(a,function(a,d){return a===b===c});if(typeof b=="string"){var d=p.grep(a,function(a){return a.nodeType===1});if(be.test(b))return p.filter(b,d,!c);b=p.filter(b,d)}return p.grep(a,function(a,d){return p.inArray(a,b)>=0===c})}function bk(a){var b=bl.split("|"),c=a.createDocumentFragment();if(c.createElement)while(b.length)c.createElement(b.pop());return c}function bC(a,b){return a.getElementsByTagName(b)[0]||a.appendChild(a.ownerDocument.createElement(b))}function bD(a,b){if(b.nodeType!==1||!p.hasData(a))return;var c,d,e,f=p._data(a),g=p._data(b,f),h=f.events;if(h){delete g.handle,g.events={};for(c in h)for(d=0,e=h[c].length;d").appendTo(e.body),c=b.css("display");b.remove();if(c==="none"||c===""){bI=e.body.appendChild(bI||p.extend(e.createElement("iframe"),{frameBorder:0,width:0,height:0}));if(!bJ||!bI.createElement)bJ=(bI.contentWindow||bI.contentDocument).document,bJ.write(""),bJ.close();b=bJ.body.appendChild(bJ.createElement(a)),c=bH(b,"display"),e.body.removeChild(bI)}return bR[a]=c,c}function ch(a,b,c,d){var e;if(p.isArray(b))p.each(b,function(b,e){c||cd.test(a)?d(a,e):ch(a+"["+(typeof e=="object"?b:"")+"]",e,c,d)});else if(!c&&p.type(b)==="object")for(e in b)ch(a+"["+e+"]",b[e],c,d);else d(a,b)}function cy(a){return function(b,c){typeof b!="string"&&(c=b,b="*");var d,e,f,g=b.toLowerCase().split(s),h=0,i=g.length;if(p.isFunction(c))for(;h)[^>]*$|#([\w\-]*)$)/,v=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,w=/^[\],:{}\s]*$/,x=/(?:^|:|,)(?:\s*\[)+/g,y=/\\(?:["\\\/bfnrt]|u[\da-fA-F]{4})/g,z=/"[^"\\\r\n]*"|true|false|null|-?(?:\d\d*\.|)\d+(?:[eE][\-+]?\d+|)/g,A=/^-ms-/,B=/-([\da-z])/gi,C=function(a,b){return(b+"").toUpperCase()},D=function(){e.addEventListener?(e.removeEventListener("DOMContentLoaded",D,!1),p.ready()):e.readyState==="complete"&&(e.detachEvent("onreadystatechange",D),p.ready())},E={};p.fn=p.prototype={constructor:p,init:function(a,c,d){var f,g,h,i;if(!a)return this;if(a.nodeType)return this.context=this[0]=a,this.length=1,this;if(typeof a=="string"){a.charAt(0)==="<"&&a.charAt(a.length-1)===">"&&a.length>=3?f=[null,a,null]:f=u.exec(a);if(f&&(f[1]||!c)){if(f[1])return c=c instanceof p?c[0]:c,i=c&&c.nodeType?c.ownerDocument||c:e,a=p.parseHTML(f[1],i,!0),v.test(f[1])&&p.isPlainObject(c)&&this.attr.call(a,c,!0),p.merge(this,a);g=e.getElementById(f[2]);if(g&&g.parentNode){if(g.id!==f[2])return d.find(a);this.length=1,this[0]=g}return this.context=e,this.selector=a,this}return!c||c.jquery?(c||d).find(a):this.constructor(c).find(a)}return p.isFunction(a)?d.ready(a):(a.selector!==b&&(this.selector=a.selector,this.context=a.context),p.makeArray(a,this))},selector:"",jquery:"1.8.0",length:0,size:function(){return this.length},toArray:function(){return k.call(this)},get:function(a){return a==null?this.toArray():a<0?this[this.length+a]:this[a]},pushStack:function(a,b,c){var d=p.merge(this.constructor(),a);return d.prevObject=this,d.context=this.context,b==="find"?d.selector=this.selector+(this.selector?" ":"")+c:b&&(d.selector=this.selector+"."+b+"("+c+")"),d},each:function(a,b){return p.each(this,a,b)},ready:function(a){return p.ready.promise().done(a),this},eq:function(a){return a=+a,a===-1?this.slice(a):this.slice(a,a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(k.apply(this,arguments),"slice",k.call(arguments).join(","))},map:function(a){return this.pushStack(p.map(this,function(b,c){return a.call(b,c,b)}))},end:function(){return this.prevObject||this.constructor(null)},push:j,sort:[].sort,splice:[].splice},p.fn.init.prototype=p.fn,p.extend=p.fn.extend=function(){var a,c,d,e,f,g,h=arguments[0]||{},i=1,j=arguments.length,k=!1;typeof h=="boolean"&&(k=h,h=arguments[1]||{},i=2),typeof h!="object"&&!p.isFunction(h)&&(h={}),j===i&&(h=this,--i);for(;i0)return;d.resolveWith(e,[p]),p.fn.trigger&&p(e).trigger("ready").off("ready")},isFunction:function(a){return p.type(a)==="function"},isArray:Array.isArray||function(a){return p.type(a)==="array"},isWindow:function(a){return a!=null&&a==a.window},isNumeric:function(a){return!isNaN(parseFloat(a))&&isFinite(a)},type:function(a){return a==null?String(a):E[m.call(a)]||"object"},isPlainObject:function(a){if(!a||p.type(a)!=="object"||a.nodeType||p.isWindow(a))return!1;try{if(a.constructor&&!n.call(a,"constructor")&&!n.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}var d;for(d in a);return d===b||n.call(a,d)},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},error:function(a){throw new Error(a)},parseHTML:function(a,b,c){var d;return!a||typeof a!="string"?null:(typeof b=="boolean"&&(c=b,b=0),b=b||e,(d=v.exec(a))?[b.createElement(d[1])]:(d=p.buildFragment([a],b,c?null:[]),p.merge([],(d.cacheable?p.clone(d.fragment):d.fragment).childNodes)))},parseJSON:function(b){if(!b||typeof b!="string")return null;b=p.trim(b);if(a.JSON&&a.JSON.parse)return a.JSON.parse(b);if(w.test(b.replace(y,"@").replace(z,"]").replace(x,"")))return(new Function("return "+b))();p.error("Invalid JSON: "+b)},parseXML:function(c){var d,e;if(!c||typeof c!="string")return null;try{a.DOMParser?(e=new DOMParser,d=e.parseFromString(c,"text/xml")):(d=new ActiveXObject("Microsoft.XMLDOM"),d.async="false",d.loadXML(c))}catch(f){d=b}return(!d||!d.documentElement||d.getElementsByTagName("parsererror").length)&&p.error("Invalid XML: "+c),d},noop:function(){},globalEval:function(b){b&&r.test(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(A,"ms-").replace(B,C)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,c,d){var e,f=0,g=a.length,h=g===b||p.isFunction(a);if(d){if(h){for(e in a)if(c.apply(a[e],d)===!1)break}else for(;f0&&a[0]&&a[i-1]||i===0||p.isArray(a));if(j)for(;h-1)i.splice(c,1),e&&(c<=g&&g--,c<=h&&h--)}),this},has:function(a){return p.inArray(a,i)>-1},empty:function(){return i=[],this},disable:function(){return i=j=c=b,this},disabled:function(){return!i},lock:function(){return j=b,c||l.disable(),this},locked:function(){return!j},fireWith:function(a,b){return b=b||[],b=[a,b.slice?b.slice():b],i&&(!d||j)&&(e?j.push(b):k(b)),this},fire:function(){return l.fireWith(this,arguments),this},fired:function(){return!!d}};return l},p.extend({Deferred:function(a){var b=[["resolve","done",p.Callbacks("once memory"),"resolved"],["reject","fail",p.Callbacks("once memory"),"rejected"],["notify","progress",p.Callbacks("memory")]],c="pending",d={state:function(){return c},always:function(){return e.done(arguments).fail(arguments),this},then:function(){var a=arguments;return p.Deferred(function(c){p.each(b,function(b,d){var f=d[0],g=a[b];e[d[1]](p.isFunction(g)?function(){var a=g.apply(this,arguments);a&&p.isFunction(a.promise)?a.promise().done(c.resolve).fail(c.reject).progress(c.notify):c[f+"With"](this===e?c:this,[a])}:c[f])}),a=null}).promise()},promise:function(a){return typeof a=="object"?p.extend(a,d):d}},e={};return d.pipe=d.then,p.each(b,function(a,f){var g=f[2],h=f[3];d[f[1]]=g.add,h&&g.add(function(){c=h},b[a^1][2].disable,b[2][2].lock),e[f[0]]=g.fire,e[f[0]+"With"]=g.fireWith}),d.promise(e),a&&a.call(e,e),e},when:function(a){var b=0,c=k.call(arguments),d=c.length,e=d!==1||a&&p.isFunction(a.promise)?d:0,f=e===1?a:p.Deferred(),g=function(a,b,c){return function(d){b[a]=this,c[a]=arguments.length>1?k.call(arguments):d,c===h?f.notifyWith(b,c):--e||f.resolveWith(b,c)}},h,i,j;if(d>1){h=new Array(d),i=new Array(d),j=new Array(d);for(;b
a",c=n.getElementsByTagName("*"),d=n.getElementsByTagName("a")[0],d.style.cssText="top:1px;float:left;opacity:.5";if(!c||!c.length||!d)return{};f=e.createElement("select"),g=f.appendChild(e.createElement("option")),h=n.getElementsByTagName("input")[0],b={leadingWhitespace:n.firstChild.nodeType===3,tbody:!n.getElementsByTagName("tbody").length,htmlSerialize:!!n.getElementsByTagName("link").length,style:/top/.test(d.getAttribute("style")),hrefNormalized:d.getAttribute("href")==="/a",opacity:/^0.5/.test(d.style.opacity),cssFloat:!!d.style.cssFloat,checkOn:h.value==="on",optSelected:g.selected,getSetAttribute:n.className!=="t",enctype:!!e.createElement("form").enctype,html5Clone:e.createElement("nav").cloneNode(!0).outerHTML!=="<:nav>",boxModel:e.compatMode==="CSS1Compat",submitBubbles:!0,changeBubbles:!0,focusinBubbles:!1,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0,boxSizingReliable:!0,pixelPosition:!1},h.checked=!0,b.noCloneChecked=h.cloneNode(!0).checked,f.disabled=!0,b.optDisabled=!g.disabled;try{delete n.test}catch(o){b.deleteExpando=!1}!n.addEventListener&&n.attachEvent&&n.fireEvent&&(n.attachEvent("onclick",m=function(){b.noCloneEvent=!1}),n.cloneNode(!0).fireEvent("onclick"),n.detachEvent("onclick",m)),h=e.createElement("input"),h.value="t",h.setAttribute("type","radio"),b.radioValue=h.value==="t",h.setAttribute("checked","checked"),h.setAttribute("name","t"),n.appendChild(h),i=e.createDocumentFragment(),i.appendChild(n.lastChild),b.checkClone=i.cloneNode(!0).cloneNode(!0).lastChild.checked,b.appendChecked=h.checked,i.removeChild(h),i.appendChild(n);if(n.attachEvent)for(k in{submit:!0,change:!0,focusin:!0})j="on"+k,l=j in n,l||(n.setAttribute(j,"return;"),l=typeof n[j]=="function"),b[k+"Bubbles"]=l;return p(function(){var c,d,f,g,h="padding:0;margin:0;border:0;display:block;overflow:hidden;",i=e.getElementsByTagName("body")[0];if(!i)return;c=e.createElement("div"),c.style.cssText="visibility:hidden;border:0;width:0;height:0;position:static;top:0;margin-top:1px",i.insertBefore(c,i.firstChild),d=e.createElement("div"),c.appendChild(d),d.innerHTML="
t
",f=d.getElementsByTagName("td"),f[0].style.cssText="padding:0;margin:0;border:0;display:none",l=f[0].offsetHeight===0,f[0].style.display="",f[1].style.display="none",b.reliableHiddenOffsets=l&&f[0].offsetHeight===0,d.innerHTML="",d.style.cssText="box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;padding:1px;border:1px;display:block;width:4px;margin-top:1%;position:absolute;top:1%;",b.boxSizing=d.offsetWidth===4,b.doesNotIncludeMarginInBodyOffset=i.offsetTop!==1,a.getComputedStyle&&(b.pixelPosition=(a.getComputedStyle(d,null)||{}).top!=="1%",b.boxSizingReliable=(a.getComputedStyle(d,null)||{width:"4px"}).width==="4px",g=e.createElement("div"),g.style.cssText=d.style.cssText=h,g.style.marginRight=g.style.width="0",d.style.width="1px",d.appendChild(g),b.reliableMarginRight=!parseFloat((a.getComputedStyle(g,null)||{}).marginRight)),typeof d.style.zoom!="undefined"&&(d.innerHTML="",d.style.cssText=h+"width:1px;padding:1px;display:inline;zoom:1",b.inlineBlockNeedsLayout=d.offsetWidth===3,d.style.display="block",d.style.overflow="visible",d.innerHTML="
",d.firstChild.style.width="5px",b.shrinkWrapBlocks=d.offsetWidth!==3,c.style.zoom=1),i.removeChild(c),c=d=f=g=null}),i.removeChild(n),c=d=f=g=h=i=n=null,b}();var H=/^(?:\{.*\}|\[.*\])$/,I=/([A-Z])/g;p.extend({cache:{},deletedIds:[],uuid:0,expando:"jQuery"+(p.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(a){return a=a.nodeType?p.cache[a[p.expando]]:a[p.expando],!!a&&!K(a)},data:function(a,c,d,e){if(!p.acceptData(a))return;var f,g,h=p.expando,i=typeof c=="string",j=a.nodeType,k=j?p.cache:a,l=j?a[h]:a[h]&&h;if((!l||!k[l]||!e&&!k[l].data)&&i&&d===b)return;l||(j?a[h]=l=p.deletedIds.pop()||++p.uuid:l=h),k[l]||(k[l]={},j||(k[l].toJSON=p.noop));if(typeof c=="object"||typeof c=="function")e?k[l]=p.extend(k[l],c):k[l].data=p.extend(k[l].data,c);return f=k[l],e||(f.data||(f.data={}),f=f.data),d!==b&&(f[p.camelCase(c)]=d),i?(g=f[c],g==null&&(g=f[p.camelCase(c)])):g=f,g},removeData:function(a,b,c){if(!p.acceptData(a))return;var d,e,f,g=a.nodeType,h=g?p.cache:a,i=g?a[p.expando]:p.expando;if(!h[i])return;if(b){d=c?h[i]:h[i].data;if(d){p.isArray(b)||(b in d?b=[b]:(b=p.camelCase(b),b in d?b=[b]:b=b.split(" ")));for(e=0,f=b.length;e1,null,!1))},removeData:function(a){return this.each(function(){p.removeData(this,a)})}}),p.extend({queue:function(a,b,c){var d;if(a)return b=(b||"fx")+"queue",d=p._data(a,b),c&&(!d||p.isArray(c)?d=p._data(a,b,p.makeArray(c)):d.push(c)),d||[]},dequeue:function(a,b){b=b||"fx";var c=p.queue(a,b),d=c.shift(),e=p._queueHooks(a,b),f=function(){p.dequeue(a,b)};d==="inprogress"&&(d=c.shift()),d&&(b==="fx"&&c.unshift("inprogress"),delete e.stop,d.call(a,f,e)),!c.length&&e&&e.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return p._data(a,c)||p._data(a,c,{empty:p.Callbacks("once memory").add(function(){p.removeData(a,b+"queue",!0),p.removeData(a,c,!0)})})}}),p.fn.extend({queue:function(a,c){var d=2;return typeof a!="string"&&(c=a,a="fx",d--),arguments.length1)},removeAttr:function(a){return this.each(function(){p.removeAttr(this,a)})},prop:function(a,b){return p.access(this,p.prop,a,b,arguments.length>1)},removeProp:function(a){return a=p.propFix[a]||a,this.each(function(){try{this[a]=b,delete this[a]}catch(c){}})},addClass:function(a){var b,c,d,e,f,g,h;if(p.isFunction(a))return this.each(function(b){p(this).addClass(a.call(this,b,this.className))});if(a&&typeof a=="string"){b=a.split(s);for(c=0,d=this.length;c-1)d=d.replace(" "+c[f]+" "," ");e.className=a?p.trim(d):""}}}return this},toggleClass:function(a,b){var c=typeof a,d=typeof b=="boolean";return p.isFunction(a)?this.each(function(c){p(this).toggleClass(a.call(this,c,this.className,b),b)}):this.each(function(){if(c==="string"){var e,f=0,g=p(this),h=b,i=a.split(s);while(e=i[f++])h=d?h:!g.hasClass(e),g[h?"addClass":"removeClass"](e)}else if(c==="undefined"||c==="boolean")this.className&&p._data(this,"__className__",this.className),this.className=this.className||a===!1?"":p._data(this,"__className__")||""})},hasClass:function(a){var b=" "+a+" ",c=0,d=this.length;for(;c-1)return!0;return!1},val:function(a){var c,d,e,f=this[0];if(!arguments.length){if(f)return c=p.valHooks[f.type]||p.valHooks[f.nodeName.toLowerCase()],c&&"get"in c&&(d=c.get(f,"value"))!==b?d:(d=f.value,typeof d=="string"?d.replace(P,""):d==null?"":d);return}return e=p.isFunction(a),this.each(function(d){var f,g=p(this);if(this.nodeType!==1)return;e?f=a.call(this,d,g.val()):f=a,f==null?f="":typeof f=="number"?f+="":p.isArray(f)&&(f=p.map(f,function(a){return a==null?"":a+""})),c=p.valHooks[this.type]||p.valHooks[this.nodeName.toLowerCase()];if(!c||!("set"in c)||c.set(this,f,"value")===b)this.value=f})}}),p.extend({valHooks:{option:{get:function(a){var b=a.attributes.value;return!b||b.specified?a.value:a.text}},select:{get:function(a){var b,c,d,e,f=a.selectedIndex,g=[],h=a.options,i=a.type==="select-one";if(f<0)return null;c=i?f:0,d=i?f+1:h.length;for(;c=0}),c.length||(a.selectedIndex=-1),c}}},attrFn:{},attr:function(a,c,d,e){var f,g,h,i=a.nodeType;if(!a||i===3||i===8||i===2)return;if(e&&p.isFunction(p.fn[c]))return p(a)[c](d);if(typeof a.getAttribute=="undefined")return p.prop(a,c,d);h=i!==1||!p.isXMLDoc(a),h&&(c=c.toLowerCase(),g=p.attrHooks[c]||(T.test(c)?M:L));if(d!==b){if(d===null){p.removeAttr(a,c);return}return g&&"set"in g&&h&&(f=g.set(a,d,c))!==b?f:(a.setAttribute(c,""+d),d)}return g&&"get"in g&&h&&(f=g.get(a,c))!==null?f:(f=a.getAttribute(c),f===null?b:f)},removeAttr:function(a,b){var c,d,e,f,g=0;if(b&&a.nodeType===1){d=b.split(s);for(;g=0}})});var V=/^(?:textarea|input|select)$/i,W=/^([^\.]*|)(?:\.(.+)|)$/,X=/(?:^|\s)hover(\.\S+|)\b/,Y=/^key/,Z=/^(?:mouse|contextmenu)|click/,$=/^(?:focusinfocus|focusoutblur)$/,_=function(a){return p.event.special.hover?a:a.replace(X,"mouseenter$1 mouseleave$1")};p.event={add:function(a,c,d,e,f){var g,h,i,j,k,l,m,n,o,q,r;if(a.nodeType===3||a.nodeType===8||!c||!d||!(g=p._data(a)))return;d.handler&&(o=d,d=o.handler,f=o.selector),d.guid||(d.guid=p.guid++),i=g.events,i||(g.events=i={}),h=g.handle,h||(g.handle=h=function(a){return typeof p!="undefined"&&(!a||p.event.triggered!==a.type)?p.event.dispatch.apply(h.elem,arguments):b},h.elem=a),c=p.trim(_(c)).split(" ");for(j=0;j=0&&(s=s.slice(0,-1),i=!0),s.indexOf(".")>=0&&(t=s.split("."),s=t.shift(),t.sort());if((!f||p.event.customEvent[s])&&!p.event.global[s])return;c=typeof c=="object"?c[p.expando]?c:new p.Event(s,c):new p.Event(s),c.type=s,c.isTrigger=!0,c.exclusive=i,c.namespace=t.join("."),c.namespace_re=c.namespace?new RegExp("(^|\\.)"+t.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,m=s.indexOf(":")<0?"on"+s:"";if(!f){h=p.cache;for(j in h)h[j].events&&h[j].events[s]&&p.event.trigger(c,d,h[j].handle.elem,!0);return}c.result=b,c.target||(c.target=f),d=d!=null?p.makeArray(d):[],d.unshift(c),n=p.event.special[s]||{};if(n.trigger&&n.trigger.apply(f,d)===!1)return;q=[[f,n.bindType||s]];if(!g&&!n.noBubble&&!p.isWindow(f)){r=n.delegateType||s,k=$.test(r+s)?f:f.parentNode;for(l=f;k;k=k.parentNode)q.push([k,r]),l=k;l===(f.ownerDocument||e)&&q.push([l.defaultView||l.parentWindow||a,r])}for(j=0;jq&&u.push({elem:this,matches:o.slice(q)});for(d=0;d0?this.on(b,null,a,c):this.trigger(b)},Y.test(b)&&(p.event.fixHooks[b]=p.event.keyHooks),Z.test(b)&&(p.event.fixHooks[b]=p.event.mouseHooks)}),function(a,b){function bd(a,b,c,d){var e=0,f=b.length;for(;e0?h(g,c,f):[]}function bf(a,c,d,e,f){var g,h,i,j,k,l,m,n,p=0,q=f.length,s=L.POS,t=new RegExp("^"+s.source+"(?!"+r+")","i"),u=function(){var a=1,c=arguments.length-2;for(;ai){m=a.slice(i,g.index),i=n,l=[c],B.test(m)&&(k&&(l=k),k=e);if(h=H.test(m))m=m.slice(0,-5).replace(B,"$&*");g.length>1&&g[0].replace(t,u),k=be(m,g[1],g[2],l,k,h)}}k?(j=j.concat(k),(m=a.slice(i))&&m!==")"?B.test(m)?bd(m,j,d,e):Z(m,c,d,e?e.concat(k):k):o.apply(d,j)):Z(a,c,d,e)}return q===1?d:Z.uniqueSort(d)}function bg(a,b,c){var d,e,f,g=[],i=0,j=D.exec(a),k=!j.pop()&&!j.pop(),l=k&&a.match(C)||[""],m=$.preFilter,n=$.filter,o=!c&&b!==h;for(;(e=l[i])!=null&&k;i++){g.push(d=[]),o&&(e=" "+e);while(e){k=!1;if(j=B.exec(e))e=e.slice(j[0].length),k=d.push({part:j.pop().replace(A," "),captures:j});for(f in n)(j=L[f].exec(e))&&(!m[f]||(j=m[f](j,b,c)))&&(e=e.slice(j.shift().length),k=d.push({part:f,captures:j}));if(!k)break}}return k||Z.error(a),g}function bh(a,b,e){var f=b.dir,g=m++;return a||(a=function(a){return a===e}),b.first?function(b,c){while(b=b[f])if(b.nodeType===1)return a(b,c)&&b}:function(b,e){var h,i=g+"."+d,j=i+"."+c;while(b=b[f])if(b.nodeType===1){if((h=b[q])===j)return b.sizset;if(typeof h=="string"&&h.indexOf(i)===0){if(b.sizset)return b}else{b[q]=j;if(a(b,e))return b.sizset=!0,b;b.sizset=!1}}}}function bi(a,b){return a?function(c,d){var e=b(c,d);return e&&a(e===!0?c:e,d)}:b}function bj(a,b,c){var d,e,f=0;for(;d=a[f];f++)$.relative[d.part]?e=bh(e,$.relative[d.part],b):(d.captures.push(b,c),e=bi(e,$.filter[d.part].apply(null,d.captures)));return e}function bk(a){return function(b,c){var d,e=0;for(;d=a[e];e++)if(d(b,c))return!0;return!1}}var c,d,e,f,g,h=a.document,i=h.documentElement,j="undefined",k=!1,l=!0,m=0,n=[].slice,o=[].push,q=("sizcache"+Math.random()).replace(".",""),r="[\\x20\\t\\r\\n\\f]",s="(?:\\\\.|[-\\w]|[^\\x00-\\xa0])+",t=s.replace("w","w#"),u="([*^$|!~]?=)",v="\\["+r+"*("+s+")"+r+"*(?:"+u+r+"*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|("+t+")|)|)"+r+"*\\]",w=":("+s+")(?:\\((?:(['\"])((?:\\\\.|[^\\\\])*?)\\2|((?:[^,]|\\\\,|(?:,(?=[^\\[]*\\]))|(?:,(?=[^\\(]*\\))))*))\\)|)",x=":(nth|eq|gt|lt|first|last|even|odd)(?:\\((\\d*)\\)|)(?=[^-]|$)",y=r+"*([\\x20\\t\\r\\n\\f>+~])"+r+"*",z="(?=[^\\x20\\t\\r\\n\\f])(?:\\\\.|"+v+"|"+w.replace(2,7)+"|[^\\\\(),])+",A=new RegExp("^"+r+"+|((?:^|[^\\\\])(?:\\\\.)*)"+r+"+$","g"),B=new RegExp("^"+y),C=new RegExp(z+"?(?="+r+"*,|$)","g"),D=new RegExp("^(?:(?!,)(?:(?:^|,)"+r+"*"+z+")*?|"+r+"*(.*?))(\\)|$)"),E=new RegExp(z.slice(19,-6)+"\\x20\\t\\r\\n\\f>+~])+|"+y,"g"),F=/^(?:#([\w\-]+)|(\w+)|\.([\w\-]+))$/,G=/[\x20\t\r\n\f]*[+~]/,H=/:not\($/,I=/h\d/i,J=/input|select|textarea|button/i,K=/\\(?!\\)/g,L={ID:new RegExp("^#("+s+")"),CLASS:new RegExp("^\\.("+s+")"),NAME:new RegExp("^\\[name=['\"]?("+s+")['\"]?\\]"),TAG:new RegExp("^("+s.replace("[-","[-\\*")+")"),ATTR:new RegExp("^"+v),PSEUDO:new RegExp("^"+w),CHILD:new RegExp("^:(only|nth|last|first)-child(?:\\("+r+"*(even|odd|(([+-]|)(\\d*)n|)"+r+"*(?:([+-]|)"+r+"*(\\d+)|))"+r+"*\\)|)","i"),POS:new RegExp(x,"ig"),needsContext:new RegExp("^"+r+"*[>+~]|"+x,"i")},M={},N=[],O={},P=[],Q=function(a){return a.sizzleFilter=!0,a},R=function(a){return function(b){return b.nodeName.toLowerCase()==="input"&&b.type===a}},S=function(a){return function(b){var c=b.nodeName.toLowerCase();return(c==="input"||c==="button")&&b.type===a}},T=function(a){var b=!1,c=h.createElement("div");try{b=a(c)}catch(d){}return c=null,b},U=T(function(a){a.innerHTML="";var b=typeof a.lastChild.getAttribute("multiple");return b!=="boolean"&&b!=="string"}),V=T(function(a){a.id=q+0,a.innerHTML="
",i.insertBefore(a,i.firstChild);var b=h.getElementsByName&&h.getElementsByName(q).length===2+h.getElementsByName(q+0).length;return g=!h.getElementById(q),i.removeChild(a),b}),W=T(function(a){return a.appendChild(h.createComment("")),a.getElementsByTagName("*").length===0}),X=T(function(a){return a.innerHTML="",a.firstChild&&typeof a.firstChild.getAttribute!==j&&a.firstChild.getAttribute("href")==="#"}),Y=T(function(a){return a.innerHTML="",!a.getElementsByClassName||a.getElementsByClassName("e").length===0?!1:(a.lastChild.className="e",a.getElementsByClassName("e").length!==1)}),Z=function(a,b,c,d){c=c||[],b=b||h;var e,f,g,i,j=b.nodeType;if(j!==1&&j!==9)return[];if(!a||typeof a!="string")return c;g=ba(b);if(!g&&!d)if(e=F.exec(a))if(i=e[1]){if(j===9){f=b.getElementById(i);if(!f||!f.parentNode)return c;if(f.id===i)return c.push(f),c}else if(b.ownerDocument&&(f=b.ownerDocument.getElementById(i))&&bb(b,f)&&f.id===i)return c.push(f),c}else{if(e[2])return o.apply(c,n.call(b.getElementsByTagName(a),0)),c;if((i=e[3])&&Y&&b.getElementsByClassName)return o.apply(c,n.call(b.getElementsByClassName(i),0)),c}return bm(a,b,c,d,g)},$=Z.selectors={cacheLength:50,match:L,order:["ID","TAG"],attrHandle:{},createPseudo:Q,find:{ID:g?function(a,b,c){if(typeof b.getElementById!==j&&!c){var d=b.getElementById(a);return d&&d.parentNode?[d]:[]}}:function(a,c,d){if(typeof c.getElementById!==j&&!d){var e=c.getElementById(a);return e?e.id===a||typeof e.getAttributeNode!==j&&e.getAttributeNode("id").value===a?[e]:b:[]}},TAG:W?function(a,b){if(typeof b.getElementsByTagName!==j)return b.getElementsByTagName(a)}:function(a,b){var c=b.getElementsByTagName(a);if(a==="*"){var d,e=[],f=0;for(;d=c[f];f++)d.nodeType===1&&e.push(d);return e}return c}},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(K,""),a[3]=(a[4]||a[5]||"").replace(K,""),a[2]==="~="&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),a[1]==="nth"?(a[2]||Z.error(a[0]),a[3]=+(a[3]?a[4]+(a[5]||1):2*(a[2]==="even"||a[2]==="odd")),a[4]=+(a[6]+a[7]||a[2]==="odd")):a[2]&&Z.error(a[0]),a},PSEUDO:function(a){var b,c=a[4];return L.CHILD.test(a[0])?null:(c&&(b=D.exec(c))&&b.pop()&&(a[0]=a[0].slice(0,b[0].length-c.length-1),c=b[0].slice(0,-1)),a.splice(2,3,c||a[3]),a)}},filter:{ID:g?function(a){return a=a.replace(K,""),function(b){return b.getAttribute("id")===a}}:function(a){return a=a.replace(K,""),function(b){var c=typeof b.getAttributeNode!==j&&b.getAttributeNode("id");return c&&c.value===a}},TAG:function(a){return a==="*"?function(){return!0}:(a=a.replace(K,"").toLowerCase(),function(b){return b.nodeName&&b.nodeName.toLowerCase()===a})},CLASS:function(a){var b=M[a];return b||(b=M[a]=new RegExp("(^|"+r+")"+a+"("+r+"|$)"),N.push(a),N.length>$.cacheLength&&delete M[N.shift()]),function(a){return b.test(a.className||typeof a.getAttribute!==j&&a.getAttribute("class")||"")}},ATTR:function(a,b,c){return b?function(d){var e=Z.attr(d,a),f=e+"";if(e==null)return b==="!=";switch(b){case"=":return f===c;case"!=":return f!==c;case"^=":return c&&f.indexOf(c)===0;case"*=":return c&&f.indexOf(c)>-1;case"$=":return c&&f.substr(f.length-c.length)===c;case"~=":return(" "+f+" ").indexOf(c)>-1;case"|=":return f===c||f.substr(0,c.length+1)===c+"-"}}:function(b){return Z.attr(b,a)!=null}},CHILD:function(a,b,c,d){if(a==="nth"){var e=m++;return function(a){var b,f,g=0,h=a;if(c===1&&d===0)return!0;b=a.parentNode;if(b&&(b[q]!==e||!a.sizset)){for(h=b.firstChild;h;h=h.nextSibling)if(h.nodeType===1){h.sizset=++g;if(h===a)break}b[q]=e}return f=a.sizset-d,c===0?f===0:f%c===0&&f/c>=0}}return function(b){var c=b;switch(a){case"only":case"first":while(c=c.previousSibling)if(c.nodeType===1)return!1;if(a==="first")return!0;c=b;case"last":while(c=c.nextSibling)if(c.nodeType===1)return!1;return!0}}},PSEUDO:function(a,b,c,d){var e=$.pseudos[a]||$.pseudos[a.toLowerCase()];return e||Z.error("unsupported pseudo: "+a),e.sizzleFilter?e(b,c,d):e}},pseudos:{not:Q(function(a,b,c){var d=bl(a.replace(A,"$1"),b,c);return function(a){return!d(a)}}),enabled:function(a){return a.disabled===!1},disabled:function(a){return a.disabled===!0},checked:function(a){var b=a.nodeName.toLowerCase();return b==="input"&&!!a.checked||b==="option"&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},parent:function(a){return!$.pseudos.empty(a)},empty:function(a){var b;a=a.firstChild;while(a){if(a.nodeName>"@"||(b=a.nodeType)===3||b===4)return!1;a=a.nextSibling}return!0},contains:Q(function(a){return function(b){return(b.textContent||b.innerText||bc(b)).indexOf(a)>-1}}),has:Q(function(a){return function(b){return Z(a,b).length>0}}),header:function(a){return I.test(a.nodeName)},text:function(a){var b,c;return a.nodeName.toLowerCase()==="input"&&(b=a.type)==="text"&&((c=a.getAttribute("type"))==null||c.toLowerCase()===b)},radio:R("radio"),checkbox:R("checkbox"),file:R("file"),password:R("password"),image:R("image"),submit:S("submit"),reset:S("reset"),button:function(a){var b=a.nodeName.toLowerCase();return b==="input"&&a.type==="button"||b==="button"},input:function(a){return J.test(a.nodeName)},focus:function(a){var b=a.ownerDocument;return a===b.activeElement&&(!b.hasFocus||b.hasFocus())&&(!!a.type||!!a.href)},active:function(a){return a===a.ownerDocument.activeElement}},setFilters:{first:function(a,b,c){return c?a.slice(1):[a[0]]},last:function(a,b,c){var d=a.pop();return c?a:[d]},even:function(a,b,c){var d=[],e=c?1:0,f=a.length;for(;e$.cacheLength&&delete O[P.shift()],g};Z.matches=function(a,b){return Z(a,null,null,b)},Z.matchesSelector=function(a,b){return Z(b,null,null,[a]).length>0};var bm=function(a,b,e,f,g){a=a.replace(A,"$1");var h,i,j,k,l,m,p,q,r,s=a.match(C),t=a.match(E),u=b.nodeType;if(L.POS.test(a))return bf(a,b,e,f,s);if(f)h=n.call(f,0);else if(s&&s.length===1){if(t.length>1&&u===9&&!g&&(s=L.ID.exec(t[0]))){b=$.find.ID(s[1],b,g)[0];if(!b)return e;a=a.slice(t.shift().length)}q=(s=G.exec(t[0]))&&!s.index&&b.parentNode||b,r=t.pop(),m=r.split(":not")[0];for(j=0,k=$.order.length;j",a.querySelectorAll("[selected]").length||e.push("\\["+r+"*(?:checked|disabled|ismap|multiple|readonly|selected|value)"),a.querySelectorAll(":checked").length||e.push(":checked")}),T(function(a){a.innerHTML="

",a.querySelectorAll("[test^='']").length&&e.push("[*^$]="+r+"*(?:\"\"|'')"),a.innerHTML="",a.querySelectorAll(":enabled").length||e.push(":enabled",":disabled")}),e=e.length&&new RegExp(e.join("|")),bm=function(a,d,f,g,h){if(!g&&!h&&(!e||!e.test(a)))if(d.nodeType===9)try{return o.apply(f,n.call(d.querySelectorAll(a),0)),f}catch(i){}else if(d.nodeType===1&&d.nodeName.toLowerCase()!=="object"){var j=d.getAttribute("id"),k=j||q,l=G.test(a)&&d.parentNode||d;j?k=k.replace(c,"\\$&"):d.setAttribute("id",k);try{return o.apply(f,n.call(l.querySelectorAll(a.replace(C,"[id='"+k+"'] $&")),0)),f}catch(i){}finally{j||d.removeAttribute("id")}}return b(a,d,f,g,h)},g&&(T(function(b){a=g.call(b,"div");try{g.call(b,"[test!='']:sizzle"),f.push($.match.PSEUDO)}catch(c){}}),f=new RegExp(f.join("|")),Z.matchesSelector=function(b,c){c=c.replace(d,"='$1']");if(!ba(b)&&!f.test(c)&&(!e||!e.test(c)))try{var h=g.call(b,c);if(h||a||b.document&&b.document.nodeType!==11)return h}catch(i){}return Z(c,null,null,[b]).length>0})}(),Z.attr=p.attr,p.find=Z,p.expr=Z.selectors,p.expr[":"]=p.expr.pseudos,p.unique=Z.uniqueSort,p.text=Z.getText,p.isXMLDoc=Z.isXML,p.contains=Z.contains}(a);var bc=/Until$/,bd=/^(?:parents|prev(?:Until|All))/,be=/^.[^:#\[\.,]*$/,bf=p.expr.match.needsContext,bg={children:!0,contents:!0,next:!0,prev:!0};p.fn.extend({find:function(a){var b,c,d,e,f,g,h=this;if(typeof a!="string")return p(a).filter(function(){for(b=0,c=h.length;b0)for(e=d;e=0:p.filter(a,this).length>0:this.filter(a).length>0)},closest:function(a,b){var c,d=0,e=this.length,f=[],g=bf.test(a)||typeof a!="string"?p(a,b||this.context):0;for(;d-1:p.find.matchesSelector(c,a)){f.push(c);break}c=c.parentNode}}return f=f.length>1?p.unique(f):f,this.pushStack(f,"closest",a)},index:function(a){return a?typeof a=="string"?p.inArray(this[0],p(a)):p.inArray(a.jquery?a[0]:a,this):this[0]&&this[0].parentNode?this.prevAll().length:-1},add:function(a,b){var c=typeof a=="string"?p(a,b):p.makeArray(a&&a.nodeType?[a]:a),d=p.merge(this.get(),c);return this.pushStack(bh(c[0])||bh(d[0])?d:p.unique(d))},addBack:function(a){return this.add(a==null?this.prevObject:this.prevObject.filter(a))}}),p.fn.andSelf=p.fn.addBack,p.each({parent:function(a){var b=a.parentNode;return b&&b.nodeType!==11?b:null},parents:function(a){return p.dir(a,"parentNode")},parentsUntil:function(a,b,c){return p.dir(a,"parentNode",c)},next:function(a){return bi(a,"nextSibling")},prev:function(a){return bi(a,"previousSibling")},nextAll:function(a){return p.dir(a,"nextSibling")},prevAll:function(a){return p.dir(a,"previousSibling")},nextUntil:function(a,b,c){return p.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return p.dir(a,"previousSibling",c)},siblings:function(a){return p.sibling((a.parentNode||{}).firstChild,a)},children:function(a){return p.sibling(a.firstChild)},contents:function(a){return p.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:p.merge([],a.childNodes)}},function(a,b){p.fn[a]=function(c,d){var e=p.map(this,b,c);return bc.test(a)||(d=c),d&&typeof d=="string"&&(e=p.filter(d,e)),e=this.length>1&&!bg[a]?p.unique(e):e,this.length>1&&bd.test(a)&&(e=e.reverse()),this.pushStack(e,a,k.call(arguments).join(","))}}),p.extend({filter:function(a,b,c){return c&&(a=":not("+a+")"),b.length===1?p.find.matchesSelector(b[0],a)?[b[0]]:[]:p.find.matches(a,b)},dir:function(a,c,d){var e=[],f=a[c];while(f&&f.nodeType!==9&&(d===b||f.nodeType!==1||!p(f).is(d)))f.nodeType===1&&e.push(f),f=f[c];return e},sibling:function(a,b){var c=[];for(;a;a=a.nextSibling)a.nodeType===1&&a!==b&&c.push(a);return c}});var bl="abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",bm=/ jQuery\d+="(?:null|\d+)"/g,bn=/^\s+/,bo=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,bp=/<([\w:]+)/,bq=/]","i"),bv=/^(?:checkbox|radio)$/,bw=/checked\s*(?:[^=]|=\s*.checked.)/i,bx=/\/(java|ecma)script/i,by=/^\s*\s*$/g,bz={option:[1,""],legend:[1,"
","
"],thead:[1,"","
"],tr:[2,"","
"],td:[3,"","
"],col:[2,"","
"],area:[1,"",""],_default:[0,"",""]},bA=bk(e),bB=bA.appendChild(e.createElement("div"));bz.optgroup=bz.option,bz.tbody=bz.tfoot=bz.colgroup=bz.caption=bz.thead,bz.th=bz.td,p.support.htmlSerialize||(bz._default=[1,"X
","
"]),p.fn.extend({text:function(a){return p.access(this,function(a){return a===b?p.text(this):this.empty().append((this[0]&&this[0].ownerDocument||e).createTextNode(a))},null,a,arguments.length)},wrapAll:function(a){if(p.isFunction(a))return this.each(function(b){p(this).wrapAll(a.call(this,b))});if(this[0]){var b=p(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&a.firstChild.nodeType===1)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){return p.isFunction(a)?this.each(function(b){p(this).wrapInner(a.call(this,b))}):this.each(function(){var b=p(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=p.isFunction(a);return this.each(function(c){p(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){p.nodeName(this,"body")||p(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(a){(this.nodeType===1||this.nodeType===11)&&this.appendChild(a)})},prepend:function(){return this.domManip(arguments,!0,function(a){(this.nodeType===1||this.nodeType===11)&&this.insertBefore(a,this.firstChild)})},before:function(){if(!bh(this[0]))return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this)});if(arguments.length){var a=p.clean(arguments);return this.pushStack(p.merge(a,this),"before",this.selector)}},after:function(){if(!bh(this[0]))return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this.nextSibling)});if(arguments.length){var a=p.clean(arguments);return this.pushStack(p.merge(this,a),"after",this.selector)}},remove:function(a,b){var c,d=0;for(;(c=this[d])!=null;d++)if(!a||p.filter(a,[c]).length)!b&&c.nodeType===1&&(p.cleanData(c.getElementsByTagName("*")),p.cleanData([c])),c.parentNode&&c.parentNode.removeChild(c);return this},empty:function(){var a,b=0;for(;(a=this[b])!=null;b++){a.nodeType===1&&p.cleanData(a.getElementsByTagName("*"));while(a.firstChild)a.removeChild(a.firstChild)}return this},clone:function(a,b){return a=a==null?!1:a,b=b==null?a:b,this.map(function(){return p.clone(this,a,b)})},html:function(a){return p.access(this,function(a){var c=this[0]||{},d=0,e=this.length;if(a===b)return c.nodeType===1?c.innerHTML.replace(bm,""):b;if(typeof a=="string"&&!bs.test(a)&&(p.support.htmlSerialize||!bu.test(a))&&(p.support.leadingWhitespace||!bn.test(a))&&!bz[(bp.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(bo,"<$1>");try{for(;d1&&typeof j=="string"&&bw.test(j))return this.each(function(){p(this).domManip(a,c,d)});if(p.isFunction(j))return this.each(function(e){var f=p(this);a[0]=j.call(this,e,c?f.html():b),f.domManip(a,c,d)});if(this[0]){e=p.buildFragment(a,this,k),g=e.fragment,f=g.firstChild,g.childNodes.length===1&&(g=f);if(f){c=c&&p.nodeName(f,"tr");for(h=e.cacheable||l-1;i0?this.clone(!0):this).get(),p(g[e])[b](d),f=f.concat(d);return this.pushStack(f,a,g.selector)}}),p.extend({clone:function(a,b,c){var d,e,f,g;p.support.html5Clone||p.isXMLDoc(a)||!bu.test("<"+a.nodeName+">")?g=a.cloneNode(!0):(bB.innerHTML=a.outerHTML,bB.removeChild(g=bB.firstChild));if((!p.support.noCloneEvent||!p.support.noCloneChecked)&&(a.nodeType===1||a.nodeType===11)&&!p.isXMLDoc(a)){bE(a,g),d=bF(a),e=bF(g);for(f=0;d[f];++f)e[f]&&bE(d[f],e[f])}if(b){bD(a,g);if(c){d=bF(a),e=bF(g);for(f=0;d[f];++f)bD(d[f],e[f])}}return d=e=null,g},clean:function(a,b,c,d){var f,g,h,i,j,k,l,m,n,o,q,r,s=0,t=[];if(!b||typeof b.createDocumentFragment=="undefined")b=e;for(g=b===e&&bA;(h=a[s])!=null;s++){typeof h=="number"&&(h+="");if(!h)continue;if(typeof h=="string")if(!br.test(h))h=b.createTextNode(h);else{g=g||bk(b),l=l||g.appendChild(b.createElement("div")),h=h.replace(bo,"<$1>"),i=(bp.exec(h)||["",""])[1].toLowerCase(),j=bz[i]||bz._default,k=j[0],l.innerHTML=j[1]+h+j[2];while(k--)l=l.lastChild;if(!p.support.tbody){m=bq.test(h),n=i==="table"&&!m?l.firstChild&&l.firstChild.childNodes:j[1]===""&&!m?l.childNodes:[];for(f=n.length-1;f>=0;--f)p.nodeName(n[f],"tbody")&&!n[f].childNodes.length&&n[f].parentNode.removeChild(n[f])}!p.support.leadingWhitespace&&bn.test(h)&&l.insertBefore(b.createTextNode(bn.exec(h)[0]),l.firstChild),h=l.childNodes,l=g.lastChild}h.nodeType?t.push(h):t=p.merge(t,h)}l&&(g.removeChild(l),h=l=g=null);if(!p.support.appendChecked)for(s=0;(h=t[s])!=null;s++)p.nodeName(h,"input")?bG(h):typeof h.getElementsByTagName!="undefined"&&p.grep(h.getElementsByTagName("input"),bG);if(c){q=function(a){if(!a.type||bx.test(a.type))return d?d.push(a.parentNode?a.parentNode.removeChild(a):a):c.appendChild(a)};for(s=0;(h=t[s])!=null;s++)if(!p.nodeName(h,"script")||!q(h))c.appendChild(h),typeof h.getElementsByTagName!="undefined"&&(r=p.grep(p.merge([],h.getElementsByTagName("script")),q),t.splice.apply(t,[s+1,0].concat(r)),s+=r.length)}return t},cleanData:function(a,b){var c,d,e,f,g=0,h=p.expando,i=p.cache,j=p.support.deleteExpando,k=p.event.special;for(;(e=a[g])!=null;g++)if(b||p.acceptData(e)){d=e[h],c=d&&i[d];if(c){if(c.events)for(f in c.events)k[f]?p.event.remove(e,f):p.removeEvent(e,f,c.handle);i[d]&&(delete i[d],j?delete e[h]:e.removeAttribute?e.removeAttribute(h):e[h]=null,p.deletedIds.push(d))}}}}),function(){var a,b;p.uaMatch=function(a){a=a.toLowerCase();var b=/(chrome)[ \/]([\w.]+)/.exec(a)||/(webkit)[ \/]([\w.]+)/.exec(a)||/(opera)(?:.*version|)[ \/]([\w.]+)/.exec(a)||/(msie) ([\w.]+)/.exec(a)||a.indexOf("compatible")<0&&/(mozilla)(?:.*? rv:([\w.]+)|)/.exec(a)||[];return{browser:b[1]||"",version:b[2]||"0"}},a=p.uaMatch(g.userAgent),b={},a.browser&&(b[a.browser]=!0,b.version=a.version),b.webkit&&(b.safari=!0),p.browser=b,p.sub=function(){function a(b,c){return new a.fn.init(b,c)}p.extend(!0,a,this),a.superclass=this,a.fn=a.prototype=this(),a.fn.constructor=a,a.sub=this.sub,a.fn.init=function c(c,d){return d&&d instanceof p&&!(d instanceof a)&&(d=a(d)),p.fn.init.call(this,c,d,b)},a.fn.init.prototype=a.fn;var b=a(e);return a}}();var bH,bI,bJ,bK=/alpha\([^)]*\)/i,bL=/opacity=([^)]*)/,bM=/^(top|right|bottom|left)$/,bN=/^margin/,bO=new RegExp("^("+q+")(.*)$","i"),bP=new RegExp("^("+q+")(?!px)[a-z%]+$","i"),bQ=new RegExp("^([-+])=("+q+")","i"),bR={},bS={position:"absolute",visibility:"hidden",display:"block"},bT={letterSpacing:0,fontWeight:400,lineHeight:1},bU=["Top","Right","Bottom","Left"],bV=["Webkit","O","Moz","ms"],bW=p.fn.toggle;p.fn.extend({css:function(a,c){return p.access(this,function(a,c,d){return d!==b?p.style(a,c,d):p.css(a,c)},a,c,arguments.length>1)},show:function(){return bZ(this,!0)},hide:function(){return bZ(this)},toggle:function(a,b){var c=typeof a=="boolean";return p.isFunction(a)&&p.isFunction(b)?bW.apply(this,arguments):this.each(function(){(c?a:bY(this))?p(this).show():p(this).hide()})}}),p.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=bH(a,"opacity");return c===""?"1":c}}}},cssNumber:{fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":p.support.cssFloat?"cssFloat":"styleFloat"},style:function(a,c,d,e){if(!a||a.nodeType===3||a.nodeType===8||!a.style)return;var f,g,h,i=p.camelCase(c),j=a.style;c=p.cssProps[i]||(p.cssProps[i]=bX(j,i)),h=p.cssHooks[c]||p.cssHooks[i];if(d===b)return h&&"get"in h&&(f=h.get(a,!1,e))!==b?f:j[c];g=typeof d,g==="string"&&(f=bQ.exec(d))&&(d=(f[1]+1)*f[2]+parseFloat(p.css(a,c)),g="number");if(d==null||g==="number"&&isNaN(d))return;g==="number"&&!p.cssNumber[i]&&(d+="px");if(!h||!("set"in h)||(d=h.set(a,d,e))!==b)try{j[c]=d}catch(k){}},css:function(a,c,d,e){var f,g,h,i=p.camelCase(c);return c=p.cssProps[i]||(p.cssProps[i]=bX(a.style,i)),h=p.cssHooks[c]||p.cssHooks[i],h&&"get"in h&&(f=h.get(a,!0,e)),f===b&&(f=bH(a,c)),f==="normal"&&c in bT&&(f=bT[c]),d||e!==b?(g=parseFloat(f),d||p.isNumeric(g)?g||0:f):f},swap:function(a,b,c){var d,e,f={};for(e in b)f[e]=a.style[e],a.style[e]=b[e];d=c.call(a);for(e in b)a.style[e]=f[e];return d}}),a.getComputedStyle?bH=function(a,b){var c,d,e,f,g=getComputedStyle(a,null),h=a.style;return g&&(c=g[b],c===""&&!p.contains(a.ownerDocument.documentElement,a)&&(c=p.style(a,b)),bP.test(c)&&bN.test(b)&&(d=h.width,e=h.minWidth,f=h.maxWidth,h.minWidth=h.maxWidth=h.width=c,c=g.width,h.width=d,h.minWidth=e,h.maxWidth=f)),c}:e.documentElement.currentStyle&&(bH=function(a,b){var c,d,e=a.currentStyle&&a.currentStyle[b],f=a.style;return e==null&&f&&f[b]&&(e=f[b]),bP.test(e)&&!bM.test(b)&&(c=f.left,d=a.runtimeStyle&&a.runtimeStyle.left,d&&(a.runtimeStyle.left=a.currentStyle.left),f.left=b==="fontSize"?"1em":e,e=f.pixelLeft+"px",f.left=c,d&&(a.runtimeStyle.left=d)),e===""?"auto":e}),p.each(["height","width"],function(a,b){p.cssHooks[b]={get:function(a,c,d){if(c)return a.offsetWidth!==0||bH(a,"display")!=="none"?ca(a,b,d):p.swap(a,bS,function(){return ca(a,b,d)})},set:function(a,c,d){return b$(a,c,d?b_(a,b,d,p.support.boxSizing&&p.css(a,"boxSizing")==="border-box"):0)}}}),p.support.opacity||(p.cssHooks.opacity={get:function(a,b){return bL.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?.01*parseFloat(RegExp.$1)+"":b?"1":""},set:function(a,b){var c=a.style,d=a.currentStyle,e=p.isNumeric(b)?"alpha(opacity="+b*100+")":"",f=d&&d.filter||c.filter||"";c.zoom=1;if(b>=1&&p.trim(f.replace(bK,""))===""&&c.removeAttribute){c.removeAttribute("filter");if(d&&!d.filter)return}c.filter=bK.test(f)?f.replace(bK,e):f+" "+e}}),p(function(){p.support.reliableMarginRight||(p.cssHooks.marginRight={get:function(a,b){return p.swap(a,{display:"inline-block"},function(){if(b)return bH(a,"marginRight")})}}),!p.support.pixelPosition&&p.fn.position&&p.each(["top","left"],function(a,b){p.cssHooks[b]={get:function(a,c){if(c){var d=bH(a,b);return bP.test(d)?p(a).position()[b]+"px":d}}}})}),p.expr&&p.expr.filters&&(p.expr.filters.hidden=function(a){return a.offsetWidth===0&&a.offsetHeight===0||!p.support.reliableHiddenOffsets&&(a.style&&a.style.display||bH(a,"display"))==="none"},p.expr.filters.visible=function(a){return!p.expr.filters.hidden(a)}),p.each({margin:"",padding:"",border:"Width"},function(a,b){p.cssHooks[a+b]={expand:function(c){var d,e=typeof c=="string"?c.split(" "):[c],f={};for(d=0;d<4;d++)f[a+bU[d]+b]=e[d]||e[d-2]||e[0];return f}},bN.test(a)||(p.cssHooks[a+b].set=b$)});var cc=/%20/g,cd=/\[\]$/,ce=/\r?\n/g,cf=/^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,cg=/^(?:select|textarea)/i;p.fn.extend({serialize:function(){return p.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?p.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||cg.test(this.nodeName)||cf.test(this.type))}).map(function(a,b){var c=p(this).val();return c==null?null:p.isArray(c)?p.map(c,function(a,c){return{name:b.name,value:a.replace(ce,"\r\n")}}):{name:b.name,value:c.replace(ce,"\r\n")}}).get()}}),p.param=function(a,c){var d,e=[],f=function(a,b){b=p.isFunction(b)?b():b==null?"":b,e[e.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};c===b&&(c=p.ajaxSettings&&p.ajaxSettings.traditional);if(p.isArray(a)||a.jquery&&!p.isPlainObject(a))p.each(a,function(){f(this.name,this.value)});else for(d in a)ch(d,a[d],c,f);return e.join("&").replace(cc,"+")};var ci,cj,ck=/#.*$/,cl=/^(.*?):[ \t]*([^\r\n]*)\r?$/mg,cm=/^(?:about|app|app\-storage|.+\-extension|file|res|widget):$/,cn=/^(?:GET|HEAD)$/,co=/^\/\//,cp=/\?/,cq=/)<[^<]*)*<\/script>/gi,cr=/([?&])_=[^&]*/,cs=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+)|)|)/,ct=p.fn.load,cu={},cv={},cw=["*/"]+["*"];try{ci=f.href}catch(cx){ci=e.createElement("a"),ci.href="",ci=ci.href}cj=cs.exec(ci.toLowerCase())||[],p.fn.load=function(a,c,d){if(typeof a!="string"&&ct)return ct.apply(this,arguments);if(!this.length)return this;var e,f,g,h=this,i=a.indexOf(" ");return i>=0&&(e=a.slice(i,a.length),a=a.slice(0,i)),p.isFunction(c)?(d=c,c=b):typeof c=="object"&&(f="POST"),p.ajax({url:a,type:f,dataType:"html",data:c,complete:function(a,b){d&&h.each(d,g||[a.responseText,b,a])}}).done(function(a){g=arguments,h.html(e?p("
").append(a.replace(cq,"")).find(e):a)}),this},p.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(a,b){p.fn[b]=function(a){return this.on(b,a)}}),p.each(["get","post"],function(a,c){p[c]=function(a,d,e,f){return p.isFunction(d)&&(f=f||e,e=d,d=b),p.ajax({type:c,url:a,data:d,success:e,dataType:f})}}),p.extend({getScript:function(a,c){return p.get(a,b,c,"script")},getJSON:function(a,b,c){return p.get(a,b,c,"json")},ajaxSetup:function(a,b){return b?cA(a,p.ajaxSettings):(b=a,a=p.ajaxSettings),cA(a,b),a},ajaxSettings:{url:ci,isLocal:cm.test(cj[1]),global:!0,type:"GET",contentType:"application/x-www-form-urlencoded; charset=UTF-8",processData:!0,async:!0,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":cw},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":a.String,"text html":!0,"text json":p.parseJSON,"text xml":p.parseXML},flatOptions:{context:!0,url:!0}},ajaxPrefilter:cy(cu),ajaxTransport:cy(cv),ajax:function(a,c){function y(a,c,f,i){var k,s,t,u,w,y=c;if(v===2)return;v=2,h&&clearTimeout(h),g=b,e=i||"",x.readyState=a>0?4:0,f&&(u=cB(l,x,f));if(a>=200&&a<300||a===304)l.ifModified&&(w=x.getResponseHeader("Last-Modified"),w&&(p.lastModified[d]=w),w=x.getResponseHeader("Etag"),w&&(p.etag[d]=w)),a===304?(y="notmodified",k=!0):(k=cC(l,u),y=k.state,s=k.data,t=k.error,k=!t);else{t=y;if(!y||a)y="error",a<0&&(a=0)}x.status=a,x.statusText=""+(c||y),k?o.resolveWith(m,[s,y,x]):o.rejectWith(m,[x,y,t]),x.statusCode(r),r=b,j&&n.trigger("ajax"+(k?"Success":"Error"),[x,l,k?s:t]),q.fireWith(m,[x,y]),j&&(n.trigger("ajaxComplete",[x,l]),--p.active||p.event.trigger("ajaxStop"))}typeof a=="object"&&(c=a,a=b),c=c||{};var d,e,f,g,h,i,j,k,l=p.ajaxSetup({},c),m=l.context||l,n=m!==l&&(m.nodeType||m instanceof p)?p(m):p.event,o=p.Deferred(),q=p.Callbacks("once memory"),r=l.statusCode||{},t={},u={},v=0,w="canceled",x={readyState:0,setRequestHeader:function(a,b){if(!v){var c=a.toLowerCase();a=u[c]=u[c]||a,t[a]=b}return this},getAllResponseHeaders:function(){return v===2?e:null},getResponseHeader:function(a){var c;if(v===2){if(!f){f={};while(c=cl.exec(e))f[c[1].toLowerCase()]=c[2]}c=f[a.toLowerCase()]}return c===b?null:c},overrideMimeType:function(a){return v||(l.mimeType=a),this},abort:function(a){return a=a||w,g&&g.abort(a),y(0,a),this}};o.promise(x),x.success=x.done,x.error=x.fail,x.complete=q.add,x.statusCode=function(a){if(a){var b;if(v<2)for(b in a)r[b]=[r[b],a[b]];else b=a[x.status],x.always(b)}return this},l.url=((a||l.url)+"").replace(ck,"").replace(co,cj[1]+"//"),l.dataTypes=p.trim(l.dataType||"*").toLowerCase().split(s),l.crossDomain==null&&(i=cs.exec(l.url.toLowerCase()),l.crossDomain=!(!i||i[1]==cj[1]&&i[2]==cj[2]&&(i[3]||(i[1]==="http:"?80:443))==(cj[3]||(cj[1]==="http:"?80:443)))),l.data&&l.processData&&typeof l.data!="string"&&(l.data=p.param(l.data,l.traditional)),cz(cu,l,c,x);if(v===2)return x;j=l.global,l.type=l.type.toUpperCase(),l.hasContent=!cn.test(l.type),j&&p.active++===0&&p.event.trigger("ajaxStart");if(!l.hasContent){l.data&&(l.url+=(cp.test(l.url)?"&":"?")+l.data,delete l.data),d=l.url;if(l.cache===!1){var z=p.now(),A=l.url.replace(cr,"$1_="+z);l.url=A+(A===l.url?(cp.test(l.url)?"&":"?")+"_="+z:"")}}(l.data&&l.hasContent&&l.contentType!==!1||c.contentType)&&x.setRequestHeader("Content-Type",l.contentType),l.ifModified&&(d=d||l.url,p.lastModified[d]&&x.setRequestHeader("If-Modified-Since",p.lastModified[d]),p.etag[d]&&x.setRequestHeader("If-None-Match",p.etag[d])),x.setRequestHeader("Accept",l.dataTypes[0]&&l.accepts[l.dataTypes[0]]?l.accepts[l.dataTypes[0]]+(l.dataTypes[0]!=="*"?", "+cw+"; q=0.01":""):l.accepts["*"]);for(k in l.headers)x.setRequestHeader(k,l.headers[k]);if(!l.beforeSend||l.beforeSend.call(m,x,l)!==!1&&v!==2){w="abort";for(k in{success:1,error:1,complete:1})x[k](l[k]);g=cz(cv,l,c,x);if(!g)y(-1,"No Transport");else{x.readyState=1,j&&n.trigger("ajaxSend",[x,l]),l.async&&l.timeout>0&&(h=setTimeout(function(){x.abort("timeout")},l.timeout));try{v=1,g.send(t,y)}catch(B){if(v<2)y(-1,B);else throw B}}return x}return x.abort()},active:0,lastModified:{},etag:{}});var cD=[],cE=/\?/,cF=/(=)\?(?=&|$)|\?\?/,cG=p.now();p.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var a=cD.pop()||p.expando+"_"+cG++;return this[a]=!0,a}}),p.ajaxPrefilter("json jsonp",function(c,d,e){var f,g,h,i=c.data,j=c.url,k=c.jsonp!==!1,l=k&&cF.test(j),m=k&&!l&&typeof i=="string"&&!(c.contentType||"").indexOf("application/x-www-form-urlencoded")&&cF.test(i);if(c.dataTypes[0]==="jsonp"||l||m)return f=c.jsonpCallback=p.isFunction(c.jsonpCallback)?c.jsonpCallback():c.jsonpCallback,g=a[f],l?c.url=j.replace(cF,"$1"+f):m?c.data=i.replace(cF,"$1"+f):k&&(c.url+=(cE.test(j)?"&":"?")+c.jsonp+"="+f),c.converters["script json"]=function(){return h||p.error(f+" was not called"),h[0]},c.dataTypes[0]="json",a[f]=function(){h=arguments},e.always(function(){a[f]=g,c[f]&&(c.jsonpCallback=d.jsonpCallback,cD.push(f)),h&&p.isFunction(g)&&g(h[0]),h=g=b}),"script"}),p.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/javascript|ecmascript/},converters:{"text script":function(a){return p.globalEval(a),a}}}),p.ajaxPrefilter("script",function(a){a.cache===b&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),p.ajaxTransport("script",function(a){if(a.crossDomain){var c,d=e.head||e.getElementsByTagName("head")[0]||e.documentElement;return{send:function(f,g){c=e.createElement("script"),c.async="async",a.scriptCharset&&(c.charset=a.scriptCharset),c.src=a.url,c.onload=c.onreadystatechange=function(a,e){if(e||!c.readyState||/loaded|complete/.test(c.readyState))c.onload=c.onreadystatechange=null,d&&c.parentNode&&d.removeChild(c),c=b,e||g(200,"success")},d.insertBefore(c,d.firstChild)},abort:function(){c&&c.onload(0,1)}}}});var cH,cI=a.ActiveXObject?function(){for(var a in cH)cH[a](0,1)}:!1,cJ=0;p.ajaxSettings.xhr=a.ActiveXObject?function(){return!this.isLocal&&cK()||cL()}:cK,function(a){p.extend(p.support,{ajax:!!a,cors:!!a&&"withCredentials"in a})}(p.ajaxSettings.xhr()),p.support.ajax&&p.ajaxTransport(function(c){if(!c.crossDomain||p.support.cors){var d;return{send:function(e,f){var g,h,i=c.xhr();c.username?i.open(c.type,c.url,c.async,c.username,c.password):i.open(c.type,c.url,c.async);if(c.xhrFields)for(h in c.xhrFields)i[h]=c.xhrFields[h];c.mimeType&&i.overrideMimeType&&i.overrideMimeType(c.mimeType),!c.crossDomain&&!e["X-Requested-With"]&&(e["X-Requested-With"]="XMLHttpRequest");try{for(h in e)i.setRequestHeader(h,e[h])}catch(j){}i.send(c.hasContent&&c.data||null),d=function(a,e){var h,j,k,l,m;try{if(d&&(e||i.readyState===4)){d=b,g&&(i.onreadystatechange=p.noop,cI&&delete cH[g]);if(e)i.readyState!==4&&i.abort();else{h=i.status,k=i.getAllResponseHeaders(),l={},m=i.responseXML,m&&m.documentElement&&(l.xml=m);try{l.text=i.responseText}catch(a){}try{j=i.statusText}catch(n){j=""}!h&&c.isLocal&&!c.crossDomain?h=l.text?200:404:h===1223&&(h=204)}}}catch(o){e||f(-1,o)}l&&f(h,j,l,k)},c.async?i.readyState===4?setTimeout(d,0):(g=++cJ,cI&&(cH||(cH={},p(a).unload(cI)),cH[g]=d),i.onreadystatechange=d):d()},abort:function(){d&&d(0,1)}}}});var cM,cN,cO=/^(?:toggle|show|hide)$/,cP=new RegExp("^(?:([-+])=|)("+q+")([a-z%]*)$","i"),cQ=/queueHooks$/,cR=[cX],cS={"*":[function(a,b){var c,d,e,f=this.createTween(a,b),g=cP.exec(b),h=f.cur(),i=+h||0,j=1;if(g){c=+g[2],d=g[3]||(p.cssNumber[a]?"":"px");if(d!=="px"&&i){i=p.css(f.elem,a,!0)||c||1;do e=j=j||".5",i=i/j,p.style(f.elem,a,i+d),j=f.cur()/h;while(j!==1&&j!==e)}f.unit=d,f.start=i,f.end=g[1]?i+(g[1]+1)*c:c}return f}]};p.Animation=p.extend(cV,{tweener:function(a,b){p.isFunction(a)?(b=a,a=["*"]):a=a.split(" ");var c,d=0,e=a.length;for(;d-1,j={},k={},l,m;i?(k=e.position(),l=k.top,m=k.left):(l=parseFloat(g)||0,m=parseFloat(h)||0),p.isFunction(b)&&(b=b.call(a,c,f)),b.top!=null&&(j.top=b.top-f.top+l),b.left!=null&&(j.left=b.left-f.left+m),"using"in b?b.using.call(a,j):e.css(j)}},p.fn.extend({position:function(){if(!this[0])return;var a=this[0],b=this.offsetParent(),c=this.offset(),d=c$.test(b[0].nodeName)?{top:0,left:0}:b.offset();return c.top-=parseFloat(p.css(a,"marginTop"))||0,c.left-=parseFloat(p.css(a,"marginLeft"))||0,d.top+=parseFloat(p.css(b[0],"borderTopWidth"))||0,d.left+=parseFloat(p.css(b[0],"borderLeftWidth"))||0,{top:c.top-d.top,left:c.left-d.left}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||e.body;while(a&&!c$.test(a.nodeName)&&p.css(a,"position")==="static")a=a.offsetParent;return a||e.body})}}),p.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(a,c){var d=/Y/.test(c);p.fn[a]=function(e){return p.access(this,function(a,e,f){var g=c_(a);if(f===b)return g?c in g?g[c]:g.document.documentElement[e]:a[e];g?g.scrollTo(d?p(g).scrollLeft():f,d?f:p(g).scrollTop()):a[e]=f},a,e,arguments.length,null)}}),p.each({Height:"height",Width:"width"},function(a,c){p.each({padding:"inner"+a,content:c,"":"outer"+a},function(d,e){p.fn[e]=function(e,f){var g=arguments.length&&(d||typeof e!="boolean"),h=d||(e===!0||f===!0?"margin":"border");return p.access(this,function(c,d,e){var f;return p.isWindow(c)?c.document.documentElement["client"+a]:c.nodeType===9?(f=c.documentElement,Math.max(c.body["scroll"+a],f["scroll"+a],c.body["offset"+a],f["offset"+a],f["client"+a])):e===b?p.css(c,d,e,h):p.style(c,d,e,h)},c,g?e:b,g)}})}),a.jQuery=a.$=p,typeof define=="function"&&define.amd&&define.amd.jQuery&&define("jquery",[],function(){return p})})(window); \ No newline at end of file diff --git a/src/main/webapp/js/easyui-1.3.5/locale/easyui-lang-af.js b/src/main/webapp/js/easyui-1.3.5/locale/easyui-lang-af.js deleted file mode 100644 index b8a7cce6..00000000 --- a/src/main/webapp/js/easyui-1.3.5/locale/easyui-lang-af.js +++ /dev/null @@ -1,51 +0,0 @@ -if ($.fn.pagination){ - $.fn.pagination.defaults.beforePageText = 'Bladsy'; - $.fn.pagination.defaults.afterPageText = 'Van {pages}'; - $.fn.pagination.defaults.displayMsg = 'Wys (from) tot (to) van (total) items'; -} -if ($.fn.datagrid){ - $.fn.datagrid.defaults.loadMsg = 'Verwerking, wag asseblief ...'; -} -if ($.fn.treegrid && $.fn.datagrid){ - $.fn.treegrid.defaults.loadMsg = $.fn.datagrid.defaults.loadMsg; -} -if ($.messager){ - $.messager.defaults.ok = 'Ok'; - $.messager.defaults.cancel = 'Die styl'; -} -if ($.fn.validatebox){ - $.fn.validatebox.defaults.missingMessage = "Die veld is verpligtend."; - $.fn.validatebox.defaults.rules.email.message = "Gee 'n geldige e-pos adres."; - $.fn.validatebox.defaults.rules.url.message = "Gee 'n geldige URL nie."; - $.fn.validatebox.defaults.rules.length.message = "Voer 'n waarde tussen {0} en {1}."; -} -if ($.fn.numberbox){ - $.fn.numberbox.defaults.missingMessage = 'Die veld is verpligtend.'; -} -if ($.fn.combobox){ - $.fn.combobox.defaults.missingMessage = 'Die veld is verpligtend.'; -} -if ($.fn.combotree){ - $.fn.combotree.defaults.missingMessage = 'Die veld is verpligtend.'; -} -if ($.fn.combogrid){ - $.fn.combogrid.defaults.missingMessage = 'Die veld is verpligtend.'; -} -if ($.fn.calendar){ - $.fn.calendar.defaults.weeks = ['S','M','T','W','T','F','S']; - $.fn.calendar.defaults.months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']; -} -if ($.fn.datebox){ - $.fn.datebox.defaults.currentText = 'Vandag'; - $.fn.datebox.defaults.closeText = 'Sluit'; - $.fn.datebox.defaults.okText = 'Ok'; - $.fn.datebox.defaults.missingMessage = 'Die veld is verpligtend.'; -} -if ($.fn.datetimebox && $.fn.datebox){ - $.extend($.fn.datetimebox.defaults,{ - currentText: $.fn.datebox.defaults.currentText, - closeText: $.fn.datebox.defaults.closeText, - okText: $.fn.datebox.defaults.okText, - missingMessage: $.fn.datebox.defaults.missingMessage - }); -} diff --git a/src/main/webapp/js/easyui-1.3.5/locale/easyui-lang-ar.js b/src/main/webapp/js/easyui-1.3.5/locale/easyui-lang-ar.js deleted file mode 100644 index 5abd14ad..00000000 --- a/src/main/webapp/js/easyui-1.3.5/locale/easyui-lang-ar.js +++ /dev/null @@ -1,52 +0,0 @@ -if ($.fn.pagination){ - $.fn.pagination.defaults.beforePageText = 'صفحة'; - $.fn.pagination.defaults.afterPageText = 'من {pages}'; - $.fn.pagination.defaults.displayMsg = 'عرض {from} إلى {to} من {total} عنصر'; -} -if ($.fn.datagrid){ - $.fn.datagrid.defaults.loadMsg = 'معالجة, الرجاء الإنتظار ...'; -} -if ($.fn.treegrid && $.fn.datagrid){ - $.fn.treegrid.defaults.loadMsg = $.fn.datagrid.defaults.loadMsg; -} -if ($.messager){ - $.messager.defaults.ok = 'موافق'; - $.messager.defaults.cancel = 'إلغاء'; -} -if ($.fn.validatebox){ - $.fn.validatebox.defaults.missingMessage = 'هذا الحقل مطلوب.'; - $.fn.validatebox.defaults.rules.email.message = 'الرجاء إدخال بريد إلكتروني صحيح.'; - $.fn.validatebox.defaults.rules.url.message = 'الرجاء إدخال رابط صحيح.'; - $.fn.validatebox.defaults.rules.length.message = 'الرجاء إدخال قيمة بين {0} و {1}.'; - $.fn.validatebox.defaults.rules.remote.message = 'الرجاء التأكد من الحقل.'; -} -if ($.fn.numberbox){ - $.fn.numberbox.defaults.missingMessage = 'هذا الحقل مطلوب.'; -} -if ($.fn.combobox){ - $.fn.combobox.defaults.missingMessage = 'هذا الحقل مطلوب.'; -} -if ($.fn.combotree){ - $.fn.combotree.defaults.missingMessage = 'هذا الحقل مطلوب.'; -} -if ($.fn.combogrid){ - $.fn.combogrid.defaults.missingMessage = 'هذا الحقل مطلوب.'; -} -if ($.fn.calendar){ - $.fn.calendar.defaults.weeks = ['S','M','T','W','T','F','S']; - $.fn.calendar.defaults.months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']; -} -if ($.fn.datebox){ - $.fn.datebox.defaults.currentText = 'اليوم'; - $.fn.datebox.defaults.closeText = 'إغلاق'; - $.fn.datebox.defaults.okText = 'موافق'; - $.fn.datebox.defaults.missingMessage = 'هذا الحقل مطلوب.'; -} -if ($.fn.datetimebox && $.fn.datebox){ - $.extend($.fn.datetimebox.defaults,{ - currentText: $.fn.datebox.defaults.currentText, - closeText: $.fn.datebox.defaults.closeText, - okText: $.fn.datebox.defaults.okText, - missingMessage: $.fn.datebox.defaults.missingMessage - }); -} diff --git a/src/main/webapp/js/easyui-1.3.5/locale/easyui-lang-bg.js b/src/main/webapp/js/easyui-1.3.5/locale/easyui-lang-bg.js deleted file mode 100644 index 6b877375..00000000 --- a/src/main/webapp/js/easyui-1.3.5/locale/easyui-lang-bg.js +++ /dev/null @@ -1,51 +0,0 @@ -if ($.fn.pagination){ - $.fn.pagination.defaults.beforePageText = 'Страница'; - $.fn.pagination.defaults.afterPageText = 'от {pages}'; - $.fn.pagination.defaults.displayMsg = 'Показани {from} за {to} от {total} продукти'; -} -if ($.fn.datagrid){ - $.fn.datagrid.defaults.loadMsg = 'Обработка, моля изчакайте ...'; -} -if ($.fn.treegrid && $.fn.datagrid){ - $.fn.treegrid.defaults.loadMsg = $.fn.datagrid.defaults.loadMsg; -} -if ($.messager){ - $.messager.defaults.ok = 'Добре'; - $.messager.defaults.cancel = 'Задрасквам'; -} -if ($.fn.validatebox){ - $.fn.validatebox.defaults.missingMessage = 'Това поле е задължително.'; - $.fn.validatebox.defaults.rules.email.message = 'Моля, въведете валиден имейл адрес.'; - $.fn.validatebox.defaults.rules.url.message = 'Моля въведете валиден URL.'; - $.fn.validatebox.defaults.rules.length.message = 'Моля, въведете стойност между {0} и {1}.'; -} -if ($.fn.numberbox){ - $.fn.numberbox.defaults.missingMessage = 'Това поле е задължително.'; -} -if ($.fn.combobox){ - $.fn.combobox.defaults.missingMessage = 'Това поле е задължително.'; -} -if ($.fn.combotree){ - $.fn.combotree.defaults.missingMessage = 'Това поле е задължително.'; -} -if ($.fn.combogrid){ - $.fn.combogrid.defaults.missingMessage = 'Това поле е задължително.'; -} -if ($.fn.calendar){ - $.fn.calendar.defaults.weeks = ['S','M','T','W','T','F','S']; - $.fn.calendar.defaults.months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']; -} -if ($.fn.datebox){ - $.fn.datebox.defaults.currentText = 'Днес'; - $.fn.datebox.defaults.closeText = 'Близо'; - $.fn.datebox.defaults.okText = 'Добре'; - $.fn.datebox.defaults.missingMessage = 'Това поле е задължително.'; -} -if ($.fn.datetimebox && $.fn.datebox){ - $.extend($.fn.datetimebox.defaults,{ - currentText: $.fn.datebox.defaults.currentText, - closeText: $.fn.datebox.defaults.closeText, - okText: $.fn.datebox.defaults.okText, - missingMessage: $.fn.datebox.defaults.missingMessage - }); -} diff --git a/src/main/webapp/js/easyui-1.3.5/locale/easyui-lang-ca.js b/src/main/webapp/js/easyui-1.3.5/locale/easyui-lang-ca.js deleted file mode 100644 index d37a579f..00000000 --- a/src/main/webapp/js/easyui-1.3.5/locale/easyui-lang-ca.js +++ /dev/null @@ -1,51 +0,0 @@ -if ($.fn.pagination){ - $.fn.pagination.defaults.beforePageText = 'Pàgina'; - $.fn.pagination.defaults.afterPageText = 'de {pages}'; - $.fn.pagination.defaults.displayMsg = "Veient {from} a {to} de {total} d'articles"; -} -if ($.fn.datagrid){ - $.fn.datagrid.defaults.loadMsg = 'Elaboració, si us plau esperi ...'; -} -if ($.fn.treegrid && $.fn.datagrid){ - $.fn.treegrid.defaults.loadMsg = $.fn.datagrid.defaults.loadMsg; -} -if ($.messager){ - $.messager.defaults.ok = 'Ok'; - $.messager.defaults.cancel = 'Cancel'; -} -if ($.fn.validatebox){ - $.fn.validatebox.defaults.missingMessage = 'Aquest camp és obligatori.'; - $.fn.validatebox.defaults.rules.email.message = 'Introduïu una adreça de correu electrònic vàlida.'; - $.fn.validatebox.defaults.rules.url.message = 'Si us plau, introduïu un URL vàlida.'; - $.fn.validatebox.defaults.rules.length.message = 'Si us plau, introduïu un valor entre {0} i {1}.'; -} -if ($.fn.numberbox){ - $.fn.numberbox.defaults.missingMessage = 'Aquest camp és obligatori.'; -} -if ($.fn.combobox){ - $.fn.combobox.defaults.missingMessage = 'Aquest camp és obligatori.'; -} -if ($.fn.combotree){ - $.fn.combotree.defaults.missingMessage = 'Aquest camp és obligatori.'; -} -if ($.fn.combogrid){ - $.fn.combogrid.defaults.missingMessage = 'Aquest camp és obligatori.'; -} -if ($.fn.calendar){ - $.fn.calendar.defaults.weeks = ['S','M','T','W','T','F','S']; - $.fn.calendar.defaults.months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']; -} -if ($.fn.datebox){ - $.fn.datebox.defaults.currentText = 'Avui'; - $.fn.datebox.defaults.closeText = 'Tancar'; - $.fn.datebox.defaults.okText = 'Ok'; - $.fn.datebox.defaults.missingMessage = 'Aquest camp és obligatori.'; -} -if ($.fn.datetimebox && $.fn.datebox){ - $.extend($.fn.datetimebox.defaults,{ - currentText: $.fn.datebox.defaults.currentText, - closeText: $.fn.datebox.defaults.closeText, - okText: $.fn.datebox.defaults.okText, - missingMessage: $.fn.datebox.defaults.missingMessage - }); -} diff --git a/src/main/webapp/js/easyui-1.3.5/locale/easyui-lang-cs.js b/src/main/webapp/js/easyui-1.3.5/locale/easyui-lang-cs.js deleted file mode 100644 index c0408ec2..00000000 --- a/src/main/webapp/js/easyui-1.3.5/locale/easyui-lang-cs.js +++ /dev/null @@ -1,51 +0,0 @@ -if ($.fn.pagination){ - $.fn.pagination.defaults.beforePageText = 'Strana'; - $.fn.pagination.defaults.afterPageText = 'z {pages}'; - $.fn.pagination.defaults.displayMsg = 'Zobrazuji {from} do {to} z {total} položky'; -} -if ($.fn.datagrid){ - $.fn.datagrid.defaults.loadMsg = 'Zpracování, čekejte prosím ...'; -} -if ($.fn.treegrid && $.fn.datagrid){ - $.fn.treegrid.defaults.loadMsg = $.fn.datagrid.defaults.loadMsg; -} -if ($.messager){ - $.messager.defaults.ok = 'Ok'; - $.messager.defaults.cancel = 'Zrušit'; -} -if ($.fn.validatebox){ - $.fn.validatebox.defaults.missingMessage = 'Toto pole je vyžadováno.'; - $.fn.validatebox.defaults.rules.email.message = 'Zadejte prosím platnou e-mailovou adresu.'; - $.fn.validatebox.defaults.rules.url.message = 'Zadejte prosím platnou adresu URL.'; - $.fn.validatebox.defaults.rules.length.message = 'Prosím, zadejte hodnotu mezi {0} a {1}.'; -} -if ($.fn.numberbox){ - $.fn.numberbox.defaults.missingMessage = 'Toto pole je vyžadováno.'; -} -if ($.fn.combobox){ - $.fn.combobox.defaults.missingMessage = 'Toto pole je vyžadováno.'; -} -if ($.fn.combotree){ - $.fn.combotree.defaults.missingMessage = 'Toto pole je vyžadováno.'; -} -if ($.fn.combogrid){ - $.fn.combogrid.defaults.missingMessage = 'Toto pole je vyžadováno.'; -} -if ($.fn.calendar){ - $.fn.calendar.defaults.weeks = ['S','M','T','W','T','F','S']; - $.fn.calendar.defaults.months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']; -} -if ($.fn.datebox){ - $.fn.datebox.defaults.currentText = 'Dnes'; - $.fn.datebox.defaults.closeText = 'Zavřít'; - $.fn.datebox.defaults.okText = 'Ok'; - $.fn.datebox.defaults.missingMessage = 'Toto pole je vyžadováno.'; -} -if ($.fn.datetimebox && $.fn.datebox){ - $.extend($.fn.datetimebox.defaults,{ - currentText: $.fn.datebox.defaults.currentText, - closeText: $.fn.datebox.defaults.closeText, - okText: $.fn.datebox.defaults.okText, - missingMessage: $.fn.datebox.defaults.missingMessage - }); -} diff --git a/src/main/webapp/js/easyui-1.3.5/locale/easyui-lang-cz.js b/src/main/webapp/js/easyui-1.3.5/locale/easyui-lang-cz.js deleted file mode 100644 index ef23d6b0..00000000 --- a/src/main/webapp/js/easyui-1.3.5/locale/easyui-lang-cz.js +++ /dev/null @@ -1,51 +0,0 @@ -if ($.fn.pagination){ - $.fn.pagination.defaults.beforePageText = 'Strana'; - $.fn.pagination.defaults.afterPageText = 'z {pages}'; - $.fn.pagination.defaults.displayMsg = 'Zobrazuji záznam {from} až {to} z {total}.'; -} -if ($.fn.datagrid){ - $.fn.datagrid.defaults.loadMsg = 'Pracuji, čekejte prosím…'; -} -if ($.fn.treegrid && $.fn.datagrid){ - $.fn.treegrid.defaults.loadMsg = $.fn.datagrid.defaults.loadMsg; -} -if ($.messager){ - $.messager.defaults.ok = 'Ok'; - $.messager.defaults.cancel = 'Zrušit'; -} -if ($.fn.validatebox){ - $.fn.validatebox.defaults.missingMessage = 'Toto pole je vyžadováno.'; - $.fn.validatebox.defaults.rules.email.message = 'Zadejte, prosím, platnou e-mailovou adresu.'; - $.fn.validatebox.defaults.rules.url.message = 'Zadejte, prosím, platnou adresu URL.'; - $.fn.validatebox.defaults.rules.length.message = 'Zadejte, prosím, hodnotu mezi {0} a {1}.'; -} -if ($.fn.numberbox){ - $.fn.numberbox.defaults.missingMessage = 'Toto pole je vyžadováno.'; -} -if ($.fn.combobox){ - $.fn.combobox.defaults.missingMessage = 'Toto pole je vyžadováno.'; -} -if ($.fn.combotree){ - $.fn.combotree.defaults.missingMessage = 'Toto pole je vyžadováno.'; -} -if ($.fn.combogrid){ - $.fn.combogrid.defaults.missingMessage = 'Toto pole je vyžadováno.'; -} -if ($.fn.calendar){ - $.fn.calendar.defaults.weeks = ['N','P','Ú','S','Č','P','S']; //neděle pondělí úterý středa čtvrtek pátek sobota - $.fn.calendar.defaults.months = ['led', 'únr', 'bře', 'dub', 'kvě', 'čvn', 'čvc', 'srp', 'zář', 'říj', 'lis', 'pro']; //leden únor březen duben květen červen červenec srpen září říjen listopad prosinec -} -if ($.fn.datebox){ - $.fn.datebox.defaults.currentText = 'Dnes'; - $.fn.datebox.defaults.closeText = 'Zavřít'; - $.fn.datebox.defaults.okText = 'Ok'; - $.fn.datebox.defaults.missingMessage = 'Toto pole je vyžadováno.'; -} -if ($.fn.datetimebox && $.fn.datebox){ - $.extend($.fn.datetimebox.defaults,{ - currentText: $.fn.datebox.defaults.currentText, - closeText: $.fn.datebox.defaults.closeText, - okText: $.fn.datebox.defaults.okText, - missingMessage: $.fn.datebox.defaults.missingMessage - }); -} diff --git a/src/main/webapp/js/easyui-1.3.5/locale/easyui-lang-da.js b/src/main/webapp/js/easyui-1.3.5/locale/easyui-lang-da.js deleted file mode 100644 index 1ee1a7ba..00000000 --- a/src/main/webapp/js/easyui-1.3.5/locale/easyui-lang-da.js +++ /dev/null @@ -1,51 +0,0 @@ -if ($.fn.pagination){ - $.fn.pagination.defaults.beforePageText = 'Page'; - $.fn.pagination.defaults.afterPageText = 'af {pages}'; - $.fn.pagination.defaults.displayMsg = 'Viser {from} til {to} af {total} poster'; -} -if ($.fn.datagrid){ - $.fn.datagrid.defaults.loadMsg = 'Behandling, vent venligst ...'; -} -if ($.fn.treegrid && $.fn.datagrid){ - $.fn.treegrid.defaults.loadMsg = $.fn.datagrid.defaults.loadMsg; -} -if ($.messager){ - $.messager.defaults.ok = 'Ok'; - $.messager.defaults.cancel = 'Annuller'; -} -if ($.fn.validatebox){ - $.fn.validatebox.defaults.missingMessage = 'Dette felt er påkrævet.'; - $.fn.validatebox.defaults.rules.email.message = 'Angiv en gyldig e-mail-adresse.'; - $.fn.validatebox.defaults.rules.url.message = 'Angiv en gyldig webadresse.'; - $.fn.validatebox.defaults.rules.length.message = 'Angiv en værdi mellem {0} og {1}.'; -} -if ($.fn.numberbox){ - $.fn.numberbox.defaults.missingMessage = 'Dette felt er påkrævet.'; -} -if ($.fn.combobox){ - $.fn.combobox.defaults.missingMessage = 'Dette felt er påkrævet.'; -} -if ($.fn.combotree){ - $.fn.combotree.defaults.missingMessage = 'Dette felt er påkrævet.'; -} -if ($.fn.combogrid){ - $.fn.combogrid.defaults.missingMessage = 'Dette felt er påkrævet.'; -} -if ($.fn.calendar){ - $.fn.calendar.defaults.weeks = ['S','M','T','W','T','F','S']; - $.fn.calendar.defaults.months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']; -} -if ($.fn.datebox){ - $.fn.datebox.defaults.currentText = 'I dag'; - $.fn.datebox.defaults.closeText = 'Luk'; - $.fn.datebox.defaults.okText = 'Ok'; - $.fn.datebox.defaults.missingMessage = 'Dette felt er påkrævet.'; -} -if ($.fn.datetimebox && $.fn.datebox){ - $.extend($.fn.datetimebox.defaults,{ - currentText: $.fn.datebox.defaults.currentText, - closeText: $.fn.datebox.defaults.closeText, - okText: $.fn.datebox.defaults.okText, - missingMessage: $.fn.datebox.defaults.missingMessage - }); -} diff --git a/src/main/webapp/js/easyui-1.3.5/locale/easyui-lang-de.js b/src/main/webapp/js/easyui-1.3.5/locale/easyui-lang-de.js deleted file mode 100644 index 2d0e9a4c..00000000 --- a/src/main/webapp/js/easyui-1.3.5/locale/easyui-lang-de.js +++ /dev/null @@ -1,70 +0,0 @@ -if ($.fn.pagination){ - $.fn.pagination.defaults.beforePageText = 'Seite'; - $.fn.pagination.defaults.afterPageText = 'von {pages}'; - $.fn.pagination.defaults.displayMsg = '{from} bis {to} von {total} Datensätzen'; -} -if ($.fn.datagrid){ - $.fn.datagrid.defaults.loadMsg = 'Verarbeitung läuft, bitte warten ...'; -} -if ($.fn.treegrid && $.fn.datagrid){ - $.fn.treegrid.defaults.loadMsg = $.fn.datagrid.defaults.loadMsg; -} -if ($.messager){ - $.messager.defaults.ok = 'OK'; - $.messager.defaults.cancel = 'Abbruch'; -} -if ($.fn.validatebox){ - $.fn.validatebox.defaults.missingMessage = 'Dieses Feld wird benötigt.'; - $.fn.validatebox.defaults.rules.email.message = 'Bitte geben Sie eine gültige E-Mail-Adresse ein.'; - $.fn.validatebox.defaults.rules.url.message = 'Bitte geben Sie eine gültige URL ein.'; - $.fn.validatebox.defaults.rules.length.message = 'Bitte geben Sie einen Wert zwischen {0} und {1} ein.'; -} -if ($.fn.numberbox){ - $.fn.numberbox.defaults.missingMessage = 'Dieses Feld wird benötigt.'; -} -if ($.fn.combobox){ - $.fn.combobox.defaults.missingMessage = 'Dieses Feld wird benötigt.'; -} -if ($.fn.combotree){ - $.fn.combotree.defaults.missingMessage = 'Dieses Feld wird benötigt.'; -} -if ($.fn.combogrid){ - $.fn.combogrid.defaults.missingMessage = 'Dieses Feld wird benötigt.'; -} -if ($.fn.calendar){ - $.fn.calendar.defaults.firstDay = 1; - $.fn.calendar.defaults.weeks = ['S','M','D','M','D','F','S']; - $.fn.calendar.defaults.months = ['Jan', 'Feb', 'Mär', 'Apr', 'Mai', 'Jun', 'Jul', 'Aug', 'Sep', 'Okt', 'Nov', 'Dez']; -} -if ($.fn.datebox){ - $.fn.datebox.defaults.currentText = 'Heute'; - $.fn.datebox.defaults.closeText = 'Schließen'; - $.fn.datebox.defaults.okText = 'OK'; - $.fn.datebox.defaults.missingMessage = 'Dieses Feld wird benötigt.'; - $.fn.datebox.defaults.formatter = function(date){ - var y = date.getFullYear(); - var m = date.getMonth()+1; - var d = date.getDate(); - return (d<10?('0'+d):d)+'.'+(m<10?('0'+m):m)+'.'+y; - }; - $.fn.datebox.defaults.parser = function(s){ - if (!s) return new Date(); - var ss = s.split('.'); - var m = parseInt(ss[1],10); - var d = parseInt(ss[0],10); - var y = parseInt(ss[2],10); - if (!isNaN(y) && !isNaN(m) && !isNaN(d)){ - return new Date(y,m-1,d); - } else { - return new Date(); - } - }; -} -if ($.fn.datetimebox && $.fn.datebox){ - $.extend($.fn.datetimebox.defaults,{ - currentText: $.fn.datebox.defaults.currentText, - closeText: $.fn.datebox.defaults.closeText, - okText: $.fn.datebox.defaults.okText, - missingMessage: $.fn.datebox.defaults.missingMessage - }); -} diff --git a/src/main/webapp/js/easyui-1.3.5/locale/easyui-lang-el.js b/src/main/webapp/js/easyui-1.3.5/locale/easyui-lang-el.js deleted file mode 100644 index f2545719..00000000 --- a/src/main/webapp/js/easyui-1.3.5/locale/easyui-lang-el.js +++ /dev/null @@ -1,52 +0,0 @@ -if ($.fn.pagination){ - $.fn.pagination.defaults.beforePageText = 'Σελίδα'; - $.fn.pagination.defaults.afterPageText = 'από {pages}'; - $.fn.pagination.defaults.displayMsg = 'Εμφάνιση {from} εώς {to} από {total} αντικείμενα'; -} -if ($.fn.datagrid){ - $.fn.datagrid.defaults.loadMsg = 'Γίνεται Επεξεργασία, Παρακαλώ Περιμένετε ...'; -} -if ($.fn.treegrid && $.fn.datagrid){ - $.fn.treegrid.defaults.loadMsg = $.fn.datagrid.defaults.loadMsg; -} -if ($.messager){ - $.messager.defaults.ok = 'Εντάξει'; - $.messager.defaults.cancel = 'Άκυρο'; -} -if ($.fn.validatebox){ - $.fn.validatebox.defaults.missingMessage = 'Το πεδίο είναι υποχρεωτικό.'; - $.fn.validatebox.defaults.rules.email.message = 'Παρακαλώ εισάγετε σωστή Ηλ.Διεύθυνση.'; - $.fn.validatebox.defaults.rules.url.message = 'Παρακαλώ εισάγετε σωστό σύνδεσμο.'; - $.fn.validatebox.defaults.rules.length.message = 'Παρακαλώ εισάγετε τιμή μεταξύ {0} και {1}.'; - $.fn.validatebox.defaults.rules.remote.message = 'Παρακαλώ διορθώστε αυτό το πεδίο.'; -} -if ($.fn.numberbox){ - $.fn.numberbox.defaults.missingMessage = 'Το πεδίο είναι υποχρεωτικό.'; -} -if ($.fn.combobox){ - $.fn.combobox.defaults.missingMessage = 'Το πεδίο είναι υποχρεωτικό.'; -} -if ($.fn.combotree){ - $.fn.combotree.defaults.missingMessage = 'Το πεδίο είναι υποχρεωτικό.'; -} -if ($.fn.combogrid){ - $.fn.combogrid.defaults.missingMessage = 'Το πεδίο είναι υποχρεωτικό.'; -} -if ($.fn.calendar){ - $.fn.calendar.defaults.weeks = ['Κυρ','Δευ','Τρι','Τετ','Πεμ','Παρ','Σαβ']; - $.fn.calendar.defaults.months = ['Ιαν', 'Φεβ', 'Μαρ', 'Απρ', 'Μαϊ', 'Ιου', 'Ιου', 'Αυγ', 'Σεπ', 'Οκτ', 'Νοε', 'Δεκ']; -} -if ($.fn.datebox){ - $.fn.datebox.defaults.currentText = 'Σήμερα'; - $.fn.datebox.defaults.closeText = 'Κλείσιμο'; - $.fn.datebox.defaults.okText = 'Εντάξει'; - $.fn.datebox.defaults.missingMessage = 'Το πεδίο είναι υποχρεωτικό.'; -} -if ($.fn.datetimebox && $.fn.datebox){ - $.extend($.fn.datetimebox.defaults,{ - currentText: $.fn.datebox.defaults.currentText, - closeText: $.fn.datebox.defaults.closeText, - okText: $.fn.datebox.defaults.okText, - missingMessage: $.fn.datebox.defaults.missingMessage - }); -} diff --git a/src/main/webapp/js/easyui-1.3.5/locale/easyui-lang-en.js b/src/main/webapp/js/easyui-1.3.5/locale/easyui-lang-en.js deleted file mode 100644 index 6528efa2..00000000 --- a/src/main/webapp/js/easyui-1.3.5/locale/easyui-lang-en.js +++ /dev/null @@ -1,52 +0,0 @@ -if ($.fn.pagination){ - $.fn.pagination.defaults.beforePageText = 'Page'; - $.fn.pagination.defaults.afterPageText = 'of {pages}'; - $.fn.pagination.defaults.displayMsg = 'Displaying {from} to {to} of {total} items'; -} -if ($.fn.datagrid){ - $.fn.datagrid.defaults.loadMsg = 'Processing, please wait ...'; -} -if ($.fn.treegrid && $.fn.datagrid){ - $.fn.treegrid.defaults.loadMsg = $.fn.datagrid.defaults.loadMsg; -} -if ($.messager){ - $.messager.defaults.ok = 'Ok'; - $.messager.defaults.cancel = 'Cancel'; -} -if ($.fn.validatebox){ - $.fn.validatebox.defaults.missingMessage = 'This field is required.'; - $.fn.validatebox.defaults.rules.email.message = 'Please enter a valid email address.'; - $.fn.validatebox.defaults.rules.url.message = 'Please enter a valid URL.'; - $.fn.validatebox.defaults.rules.length.message = 'Please enter a value between {0} and {1}.'; - $.fn.validatebox.defaults.rules.remote.message = 'Please fix this field.'; -} -if ($.fn.numberbox){ - $.fn.numberbox.defaults.missingMessage = 'This field is required.'; -} -if ($.fn.combobox){ - $.fn.combobox.defaults.missingMessage = 'This field is required.'; -} -if ($.fn.combotree){ - $.fn.combotree.defaults.missingMessage = 'This field is required.'; -} -if ($.fn.combogrid){ - $.fn.combogrid.defaults.missingMessage = 'This field is required.'; -} -if ($.fn.calendar){ - $.fn.calendar.defaults.weeks = ['S','M','T','W','T','F','S']; - $.fn.calendar.defaults.months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']; -} -if ($.fn.datebox){ - $.fn.datebox.defaults.currentText = 'Today'; - $.fn.datebox.defaults.closeText = 'Close'; - $.fn.datebox.defaults.okText = 'Ok'; - $.fn.datebox.defaults.missingMessage = 'This field is required.'; -} -if ($.fn.datetimebox && $.fn.datebox){ - $.extend($.fn.datetimebox.defaults,{ - currentText: $.fn.datebox.defaults.currentText, - closeText: $.fn.datebox.defaults.closeText, - okText: $.fn.datebox.defaults.okText, - missingMessage: $.fn.datebox.defaults.missingMessage - }); -} diff --git a/src/main/webapp/js/easyui-1.3.5/locale/easyui-lang-es.js b/src/main/webapp/js/easyui-1.3.5/locale/easyui-lang-es.js deleted file mode 100644 index d6582e81..00000000 --- a/src/main/webapp/js/easyui-1.3.5/locale/easyui-lang-es.js +++ /dev/null @@ -1,52 +0,0 @@ -if ($.fn.pagination){ - $.fn.pagination.defaults.beforePageText = 'Página'; - $.fn.pagination.defaults.afterPageText = 'de {pages}'; - $.fn.pagination.defaults.displayMsg = 'Mostrando {from} a {to} de {total} elementos'; -} -if ($.fn.datagrid){ - $.fn.datagrid.defaults.loadMsg = 'Procesando, por favor espere ...'; -} -if ($.fn.treegrid && $.fn.datagrid){ - $.fn.treegrid.defaults.loadMsg = $.fn.datagrid.defaults.loadMsg; -} -if ($.messager){ - $.messager.defaults.ok = 'Aceptar'; - $.messager.defaults.cancel = 'Cancelar'; -} -if ($.fn.validatebox){ - $.fn.validatebox.defaults.missingMessage = 'Este campo es obligatorio.'; - $.fn.validatebox.defaults.rules.email.message = 'Por favor ingrese una dirección de correo válida.'; - $.fn.validatebox.defaults.rules.url.message = 'Por favor ingrese una URL válida.'; - $.fn.validatebox.defaults.rules.length.message = 'Por favor ingrese un valor entre {0} y {1}.'; - $.fn.validatebox.defaults.rules.remote.message = 'Por favor corrija este campo.'; -} -if ($.fn.numberbox){ - $.fn.numberbox.defaults.missingMessage = 'Este campo es obligatorio.'; -} -if ($.fn.combobox){ - $.fn.combobox.defaults.missingMessage = 'Este campo es obligatorio.'; -} -if ($.fn.combotree){ - $.fn.combotree.defaults.missingMessage = 'Este campo es obligatorio.'; -} -if ($.fn.combogrid){ - $.fn.combogrid.defaults.missingMessage = 'Este campo es obligatorio.'; -} -if ($.fn.calendar){ - $.fn.calendar.defaults.weeks = ['Do','Lu','Ma','Mi','Ju','Vi','Sá']; - $.fn.calendar.defaults.months = ['Ene', 'Feb', 'Mar', 'Abr', 'May', 'Jun', 'Jul', 'Ago', 'Sep', 'Oct', 'Nov', 'Dic']; -} -if ($.fn.datebox){ - $.fn.datebox.defaults.currentText = 'Hoy'; - $.fn.datebox.defaults.closeText = 'Cerrar'; - $.fn.datebox.defaults.okText = 'Aceptar'; - $.fn.datebox.defaults.missingMessage = 'Este campo es obligatorio.'; -} -if ($.fn.datetimebox && $.fn.datebox){ - $.extend($.fn.datetimebox.defaults,{ - currentText: $.fn.datebox.defaults.currentText, - closeText: $.fn.datebox.defaults.closeText, - okText: $.fn.datebox.defaults.okText, - missingMessage: $.fn.datebox.defaults.missingMessage - }); -} diff --git a/src/main/webapp/js/easyui-1.3.5/locale/easyui-lang-fr.js b/src/main/webapp/js/easyui-1.3.5/locale/easyui-lang-fr.js deleted file mode 100644 index cac005ce..00000000 --- a/src/main/webapp/js/easyui-1.3.5/locale/easyui-lang-fr.js +++ /dev/null @@ -1,51 +0,0 @@ -if ($.fn.pagination){ - $.fn.pagination.defaults.beforePageText = 'Page'; - $.fn.pagination.defaults.afterPageText = 'de {pages}'; - $.fn.pagination.defaults.displayMsg = 'Affichage de {from} et {to} au {total} des articles'; -} -if ($.fn.datagrid){ - $.fn.datagrid.defaults.loadMsg = "Traitement, s'il vous plaît patienter ..."; -} -if ($.fn.treegrid && $.fn.datagrid){ - $.fn.treegrid.defaults.loadMsg = $.fn.datagrid.defaults.loadMsg; -} -if ($.messager){ - $.messager.defaults.ok = 'Ok'; - $.messager.defaults.cancel = 'Annuler'; -} -if ($.fn.validatebox){ - $.fn.validatebox.defaults.missingMessage = 'Ce champ est obligatoire.'; - $.fn.validatebox.defaults.rules.email.message = "S'il vous plaît entrer une adresse email valide."; - $.fn.validatebox.defaults.rules.url.message = "S'il vous plaît entrer une URL valide."; - $.fn.validatebox.defaults.rules.length.message = "S'il vous plaît entrez une valeur comprise entre {0} et {1}."; -} -if ($.fn.numberbox){ - $.fn.numberbox.defaults.missingMessage = 'Ce champ est obligatoire.'; -} -if ($.fn.combobox){ - $.fn.combobox.defaults.missingMessage = 'Ce champ est obligatoire.'; -} -if ($.fn.combotree){ - $.fn.combotree.defaults.missingMessage = 'Ce champ est obligatoire.'; -} -if ($.fn.combogrid){ - $.fn.combogrid.defaults.missingMessage = 'Ce champ est obligatoire.'; -} -if ($.fn.calendar){ - $.fn.calendar.defaults.weeks = ['S','M','T','W','T','F','S']; - $.fn.calendar.defaults.months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']; -} -if ($.fn.datebox){ - $.fn.datebox.defaults.currentText = "Aujourd'hui"; - $.fn.datebox.defaults.closeText = 'Fermer'; - $.fn.datebox.defaults.okText = 'Ok'; - $.fn.datebox.defaults.missingMessage = 'Ce champ est obligatoire.'; -} -if ($.fn.datetimebox && $.fn.datebox){ - $.extend($.fn.datetimebox.defaults,{ - currentText: $.fn.datebox.defaults.currentText, - closeText: $.fn.datebox.defaults.closeText, - okText: $.fn.datebox.defaults.okText, - missingMessage: $.fn.datebox.defaults.missingMessage - }); -} diff --git a/src/main/webapp/js/easyui-1.3.5/locale/easyui-lang-it.js b/src/main/webapp/js/easyui-1.3.5/locale/easyui-lang-it.js deleted file mode 100644 index b0ca33cf..00000000 --- a/src/main/webapp/js/easyui-1.3.5/locale/easyui-lang-it.js +++ /dev/null @@ -1,52 +0,0 @@ -if ($.fn.pagination){ - $.fn.pagination.defaults.beforePageText = 'Pagina'; - $.fn.pagination.defaults.afterPageText = 'di {pages}'; - $.fn.pagination.defaults.displayMsg = 'Visualizzazione {from} a {to} di {total} elementi'; -} -if ($.fn.datagrid){ - $.fn.datagrid.defaults.loadMsg = 'In lavorazione, attendere ...'; -} -if ($.fn.treegrid && $.fn.datagrid){ - $.fn.treegrid.defaults.loadMsg = $.fn.datagrid.defaults.loadMsg; -} -if ($.messager){ - $.messager.defaults.ok = 'Ok'; - $.messager.defaults.cancel = 'Annulla'; -} -if ($.fn.validatebox){ - $.fn.validatebox.defaults.missingMessage = 'Questo campo è richiesto.'; - $.fn.validatebox.defaults.rules.email.message = 'Inserisci un indirizzo email valido.'; - $.fn.validatebox.defaults.rules.url.message = 'Inserisci un URL valido.'; - $.fn.validatebox.defaults.rules.length.message = 'Inserisci un valore tra {0} e {1}.'; - $.fn.validatebox.defaults.rules.remote.message = 'Aggiusta questo campo.'; -} -if ($.fn.numberbox){ - $.fn.numberbox.defaults.missingMessage = 'Questo campo è richiesto.'; -} -if ($.fn.combobox){ - $.fn.combobox.defaults.missingMessage = 'Questo campo è richiesto.'; -} -if ($.fn.combotree){ - $.fn.combotree.defaults.missingMessage = 'Questo campo è richiesto.'; -} -if ($.fn.combogrid){ - $.fn.combogrid.defaults.missingMessage = 'Questo campo è richiesto.'; -} -if ($.fn.calendar){ - $.fn.calendar.defaults.weeks = ['S','M','T','W','T','F','S']; - $.fn.calendar.defaults.months = ['Gen', 'Feb', 'Mar', 'Apr', 'Mag', 'Giu', 'Lug', 'Ago', 'Set', 'Ott', 'Nov', 'Dic']; -} -if ($.fn.datebox){ - $.fn.datebox.defaults.currentText = 'Oggi'; - $.fn.datebox.defaults.closeText = 'Chiudi'; - $.fn.datebox.defaults.okText = 'Ok'; - $.fn.datebox.defaults.missingMessage = 'Questo campo è richiesto.'; -} -if ($.fn.datetimebox && $.fn.datebox){ - $.extend($.fn.datetimebox.defaults,{ - currentText: $.fn.datebox.defaults.currentText, - closeText: $.fn.datebox.defaults.closeText, - okText: $.fn.datebox.defaults.okText, - missingMessage: $.fn.datebox.defaults.missingMessage - }); -} diff --git a/src/main/webapp/js/easyui-1.3.5/locale/easyui-lang-jp.js b/src/main/webapp/js/easyui-1.3.5/locale/easyui-lang-jp.js deleted file mode 100644 index 2c155f51..00000000 --- a/src/main/webapp/js/easyui-1.3.5/locale/easyui-lang-jp.js +++ /dev/null @@ -1,52 +0,0 @@ -if ($.fn.pagination){ - $.fn.pagination.defaults.beforePageText = 'ページ'; - $.fn.pagination.defaults.afterPageText = '{pages} 中'; - $.fn.pagination.defaults.displayMsg = '全 {total} アイテム中 {from} から {to} を表示中'; -} -if ($.fn.datagrid){ - $.fn.datagrid.defaults.loadMsg = '処理中です。少々お待ちください...'; -} -if ($.fn.treegrid && $.fn.datagrid){ - $.fn.treegrid.defaults.loadMsg = $.fn.datagrid.defaults.loadMsg; -} -if ($.messager){ - $.messager.defaults.ok = 'OK'; - $.messager.defaults.cancel = 'キャンセル'; -} -if ($.fn.validatebox){ - $.fn.validatebox.defaults.missingMessage = '入力は必須です。'; - $.fn.validatebox.defaults.rules.email.message = '正しいメールアドレスを入力してください。'; - $.fn.validatebox.defaults.rules.url.message = '正しいURLを入力してください。'; - $.fn.validatebox.defaults.rules.length.message = '{0} から {1} の範囲の正しい値を入力してください。'; - $.fn.validatebox.defaults.rules.remote.message = 'このフィールドを修正してください。'; -} -if ($.fn.numberbox){ - $.fn.numberbox.defaults.missingMessage = '入力は必須です。'; -} -if ($.fn.combobox){ - $.fn.combobox.defaults.missingMessage = '入力は必須です。'; -} -if ($.fn.combotree){ - $.fn.combotree.defaults.missingMessage = '入力は必須です。'; -} -if ($.fn.combogrid){ - $.fn.combogrid.defaults.missingMessage = '入力は必須です。'; -} -if ($.fn.calendar){ - $.fn.calendar.defaults.weeks = ['日','月','火','水','木','金','土']; - $.fn.calendar.defaults.months = ['1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月', '12月']; -} -if ($.fn.datebox){ - $.fn.datebox.defaults.currentText = '今日'; - $.fn.datebox.defaults.closeText = '閉じる'; - $.fn.datebox.defaults.okText = 'OK'; - $.fn.datebox.defaults.missingMessage = '入力は必須です。'; -} -if ($.fn.datetimebox && $.fn.datebox){ - $.extend($.fn.datetimebox.defaults,{ - currentText: $.fn.datebox.defaults.currentText, - closeText: $.fn.datebox.defaults.closeText, - okText: $.fn.datebox.defaults.okText, - missingMessage: $.fn.datebox.defaults.missingMessage - }); -} diff --git a/src/main/webapp/js/easyui-1.3.5/locale/easyui-lang-nl.js b/src/main/webapp/js/easyui-1.3.5/locale/easyui-lang-nl.js deleted file mode 100644 index 3bc5f9ec..00000000 --- a/src/main/webapp/js/easyui-1.3.5/locale/easyui-lang-nl.js +++ /dev/null @@ -1,51 +0,0 @@ -if ($.fn.pagination){ - $.fn.pagination.defaults.beforePageText = 'Pagina'; - $.fn.pagination.defaults.afterPageText = 'van {pages}'; - $.fn.pagination.defaults.displayMsg = 'Tonen van {from} tot {to} van de {total} items'; -} -if ($.fn.datagrid){ - $.fn.datagrid.defaults.loadMsg = 'Verwerking, even geduld ...'; -} -if ($.fn.treegrid && $.fn.datagrid){ - $.fn.treegrid.defaults.loadMsg = $.fn.datagrid.defaults.loadMsg; -} -if ($.messager){ - $.messager.defaults.ok = 'Ok'; - $.messager.defaults.cancel = 'Annuleren'; -} -if ($.fn.validatebox){ - $.fn.validatebox.defaults.missingMessage = 'Dit veld is verplicht.'; - $.fn.validatebox.defaults.rules.email.message = 'Geef een geldig e-mailadres.'; - $.fn.validatebox.defaults.rules.url.message = 'Vul een geldige URL.'; - $.fn.validatebox.defaults.rules.length.message = 'Voer een waarde tussen {0} en {1}.'; -} -if ($.fn.numberbox){ - $.fn.numberbox.defaults.missingMessage = 'Dit veld is verplicht.'; -} -if ($.fn.combobox){ - $.fn.combobox.defaults.missingMessage = 'Dit veld is verplicht.'; -} -if ($.fn.combotree){ - $.fn.combotree.defaults.missingMessage = 'Dit veld is verplicht.'; -} -if ($.fn.combogrid){ - $.fn.combogrid.defaults.missingMessage = 'Dit veld is verplicht.'; -} -if ($.fn.calendar){ - $.fn.calendar.defaults.weeks = ['S','M','T','W','T','F','S']; - $.fn.calendar.defaults.months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']; -} -if ($.fn.datebox){ - $.fn.datebox.defaults.currentText = 'Vandaag'; - $.fn.datebox.defaults.closeText = 'Dicht'; - $.fn.datebox.defaults.okText = 'Ok'; - $.fn.datebox.defaults.missingMessage = 'Dit veld is verplicht.'; -} -if ($.fn.datetimebox && $.fn.datebox){ - $.extend($.fn.datetimebox.defaults,{ - currentText: $.fn.datebox.defaults.currentText, - closeText: $.fn.datebox.defaults.closeText, - okText: $.fn.datebox.defaults.okText, - missingMessage: $.fn.datebox.defaults.missingMessage - }); -} diff --git a/src/main/webapp/js/easyui-1.3.5/locale/easyui-lang-pl.js b/src/main/webapp/js/easyui-1.3.5/locale/easyui-lang-pl.js deleted file mode 100644 index 6957f528..00000000 --- a/src/main/webapp/js/easyui-1.3.5/locale/easyui-lang-pl.js +++ /dev/null @@ -1,52 +0,0 @@ -if ($.fn.pagination){ - $.fn.pagination.defaults.beforePageText = 'Strona'; - $.fn.pagination.defaults.afterPageText = 'z {pages}'; - $.fn.pagination.defaults.displayMsg = 'Wyświetlono elementy od {from} do {to} z {total}'; -} -if ($.fn.datagrid){ - $.fn.datagrid.defaults.loadMsg = 'Przetwarzanie, proszę czekać ...'; -} -if ($.fn.treegrid && $.fn.datagrid){ - $.fn.treegrid.defaults.loadMsg = $.fn.datagrid.defaults.loadMsg; -} -if ($.messager){ - $.messager.defaults.ok = 'Ok'; - $.messager.defaults.cancel = 'Cancel'; -} -if ($.fn.validatebox){ - $.fn.validatebox.defaults.missingMessage = 'To pole jest wymagane.'; - $.fn.validatebox.defaults.rules.email.message = 'Wprowadź poprawny adres email.'; - $.fn.validatebox.defaults.rules.url.message = 'Wprowadź poprawny adres URL.'; - $.fn.validatebox.defaults.rules.length.message = 'Wprowadź wartość z zakresu od {0} do {1}.'; - $.fn.validatebox.defaults.rules.remote.message = 'Proszę poprawić to pole.'; -} -if ($.fn.numberbox){ - $.fn.numberbox.defaults.missingMessage = 'To pole jest wymagane.'; -} -if ($.fn.combobox){ - $.fn.combobox.defaults.missingMessage = 'To pole jest wymagane.'; -} -if ($.fn.combotree){ - $.fn.combotree.defaults.missingMessage = 'To pole jest wymagane.'; -} -if ($.fn.combogrid){ - $.fn.combogrid.defaults.missingMessage = 'To pole jest wymagane.'; -} -if ($.fn.calendar){ - $.fn.calendar.defaults.weeks = ['N','P','W','Ś','C','P','S']; - $.fn.calendar.defaults.months = ['Sty', 'Lut', 'Mar', 'Kwi', 'Maj', 'Cze', 'Lip', 'Sie', 'Wrz', 'Paź', 'Lis', 'Gru']; -} -if ($.fn.datebox){ - $.fn.datebox.defaults.currentText = 'Dzisiaj'; - $.fn.datebox.defaults.closeText = 'Zamknij'; - $.fn.datebox.defaults.okText = 'Ok'; - $.fn.datebox.defaults.missingMessage = 'To pole jest wymagane.'; -} -if ($.fn.datetimebox && $.fn.datebox){ - $.extend($.fn.datetimebox.defaults,{ - currentText: $.fn.datebox.defaults.currentText, - closeText: $.fn.datebox.defaults.closeText, - okText: $.fn.datebox.defaults.okText, - missingMessage: $.fn.datebox.defaults.missingMessage - }); -} diff --git a/src/main/webapp/js/easyui-1.3.5/locale/easyui-lang-pt_BR.js b/src/main/webapp/js/easyui-1.3.5/locale/easyui-lang-pt_BR.js deleted file mode 100644 index 9cd4985d..00000000 --- a/src/main/webapp/js/easyui-1.3.5/locale/easyui-lang-pt_BR.js +++ /dev/null @@ -1,52 +0,0 @@ -if ($.fn.pagination){ - $.fn.pagination.defaults.beforePageText = 'Página'; - $.fn.pagination.defaults.afterPageText = 'de {pages}'; - $.fn.pagination.defaults.displayMsg = 'Mostrando {from} a {to} de {total} itens'; -} -if ($.fn.datagrid){ - $.fn.datagrid.defaults.loadMsg = 'Processando, aguarde ...'; -} -if ($.fn.treegrid && $.fn.datagrid){ - $.fn.treegrid.defaults.loadMsg = $.fn.datagrid.defaults.loadMsg; -} -if ($.messager){ - $.messager.defaults.ok = 'Ok'; - $.messager.defaults.cancel = 'Cancelar'; -} -if ($.fn.validatebox){ - $.fn.validatebox.defaults.missingMessage = 'Esse campo é requerido.'; - $.fn.validatebox.defaults.rules.email.message = 'Insira um endereço de email válido.'; - $.fn.validatebox.defaults.rules.url.message = 'Insira uma URL válida.'; - $.fn.validatebox.defaults.rules.length.message = 'Insira uma valor entre {0} e {1}.'; - $.fn.validatebox.defaults.rules.remote.message = 'Corrija esse campo.'; -} -if ($.fn.numberbox){ - $.fn.numberbox.defaults.missingMessage = 'Esse campo é requerido.'; -} -if ($.fn.combobox){ - $.fn.combobox.defaults.missingMessage = 'Esse campo é requerido.'; -} -if ($.fn.combotree){ - $.fn.combotree.defaults.missingMessage = 'Esse campo é requerido.'; -} -if ($.fn.combogrid){ - $.fn.combogrid.defaults.missingMessage = 'Esse campo é requerido.'; -} -if ($.fn.calendar){ - $.fn.calendar.defaults.weeks = ['D','S','T','Q','Q','S','S']; - $.fn.calendar.defaults.months = ['Jan', 'Fev', 'Mar', 'Abr', 'Mai', 'Jun', 'Jul', 'Ago', 'Set', 'Out', 'Nov', 'Dez']; -} -if ($.fn.datebox){ - $.fn.datebox.defaults.currentText = 'Hoje'; - $.fn.datebox.defaults.closeText = 'Fechar'; - $.fn.datebox.defaults.okText = 'Ok'; - $.fn.datebox.defaults.missingMessage = 'Esse campo é requerido.'; -} -if ($.fn.datetimebox && $.fn.datebox){ - $.extend($.fn.datetimebox.defaults,{ - currentText: $.fn.datebox.defaults.currentText, - closeText: $.fn.datebox.defaults.closeText, - okText: $.fn.datebox.defaults.okText, - missingMessage: $.fn.datebox.defaults.missingMessage - }); -} diff --git a/src/main/webapp/js/easyui-1.3.5/locale/easyui-lang-ru.js b/src/main/webapp/js/easyui-1.3.5/locale/easyui-lang-ru.js deleted file mode 100644 index 492964e4..00000000 --- a/src/main/webapp/js/easyui-1.3.5/locale/easyui-lang-ru.js +++ /dev/null @@ -1,53 +0,0 @@ -if ($.fn.pagination){ - $.fn.pagination.defaults.beforePageText = 'Страница'; - $.fn.pagination.defaults.afterPageText = 'из {pages}'; - $.fn.pagination.defaults.displayMsg = 'Просмотр {from} до {to} из {total} записей'; -} -if ($.fn.datagrid){ - $.fn.datagrid.defaults.loadMsg = 'Обрабатывается, пожалуйста ждите ...'; -} -if ($.fn.treegrid && $.fn.datagrid){ - $.fn.treegrid.defaults.loadMsg = $.fn.datagrid.defaults.loadMsg; -} -if ($.messager){ - $.messager.defaults.ok = 'Ок'; - $.messager.defaults.cancel = 'Закрыть'; -} -if ($.fn.validatebox){ - $.fn.validatebox.defaults.missingMessage = 'Это поле необходимо.'; - $.fn.validatebox.defaults.rules.email.message = 'Пожалуйста введите корректный e-mail адрес.'; - $.fn.validatebox.defaults.rules.url.message = 'Пожалуйста введите корректный URL.'; - $.fn.validatebox.defaults.rules.length.message = 'Пожалуйста введите зачение между {0} и {1}.'; - $.fn.validatebox.defaults.rules.remote.message = 'Пожалуйста исправте это поле.'; -} -if ($.fn.numberbox){ - $.fn.numberbox.defaults.missingMessage = 'Это поле необходимо.'; -} -if ($.fn.combobox){ - $.fn.combobox.defaults.missingMessage = 'Это поле необходимо.'; -} -if ($.fn.combotree){ - $.fn.combotree.defaults.missingMessage = 'Это поле необходимо.'; -} -if ($.fn.combogrid){ - $.fn.combogrid.defaults.missingMessage = 'Это поле необходимо.'; -} -if ($.fn.calendar){ - $.fn.calendar.defaults.firstDay = 1; - $.fn.calendar.defaults.weeks = ['В','П','В','С','Ч','П','С']; - $.fn.calendar.defaults.months = ['Янв', 'Фев', 'Мар', 'Апр', 'Май', 'Июн', 'Июл', 'Авг', 'Сен', 'Окт', 'Ноя', 'Дек']; -} -if ($.fn.datebox){ - $.fn.datebox.defaults.currentText = 'Сегодня'; - $.fn.datebox.defaults.closeText = 'Закрыть'; - $.fn.datebox.defaults.okText = 'Ок'; - $.fn.datebox.defaults.missingMessage = 'Это поле необходимо.'; -} -if ($.fn.datetimebox && $.fn.datebox){ - $.extend($.fn.datetimebox.defaults,{ - currentText: $.fn.datebox.defaults.currentText, - closeText: $.fn.datebox.defaults.closeText, - okText: $.fn.datebox.defaults.okText, - missingMessage: $.fn.datebox.defaults.missingMessage - }); -} diff --git a/src/main/webapp/js/easyui-1.3.5/locale/easyui-lang-sv_SE.js b/src/main/webapp/js/easyui-1.3.5/locale/easyui-lang-sv_SE.js deleted file mode 100644 index feb03211..00000000 --- a/src/main/webapp/js/easyui-1.3.5/locale/easyui-lang-sv_SE.js +++ /dev/null @@ -1,52 +0,0 @@ -if ($.fn.pagination) { - $.fn.pagination.defaults.beforePageText = 'Sida'; - $.fn.pagination.defaults.afterPageText = 'av {pages}'; - $.fn.pagination.defaults.displayMsg = 'Visar {from} till {to} av {total} poster'; -} -if ($.fn.datagrid) { - $.fn.datagrid.defaults.loadMsg = 'Bearbetar, vänligen vänta ...'; -} -if ($.fn.treegrid && $.fn.datagrid) { - $.fn.treegrid.defaults.loadMsg = $.fn.datagrid.defaults.loadMsg; -} -if ($.messager) { - $.messager.defaults.ok = 'Ok'; - $.messager.defaults.cancel = 'Avbryt'; -} -if ($.fn.validatebox) { - $.fn.validatebox.defaults.missingMessage = 'Detta fält är obligatoriskt.'; - $.fn.validatebox.defaults.rules.email.message = 'Vänligen ange en korrekt e-post adress.'; - $.fn.validatebox.defaults.rules.url.message = 'Vänligen ange en korrekt URL.'; - $.fn.validatebox.defaults.rules.length.message = 'Vänligen ange ett nummer mellan {0} och {1}.'; - $.fn.validatebox.defaults.rules.remote.message = 'Vänligen åtgärda detta fält.'; -} -if ($.fn.numberbox) { - $.fn.numberbox.defaults.missingMessage = 'Detta fält är obligatoriskt.'; -} -if ($.fn.combobox) { - $.fn.combobox.defaults.missingMessage = 'Detta fält är obligatoriskt.'; -} -if ($.fn.combotree) { - $.fn.combotree.defaults.missingMessage = 'Detta fält är obligatoriskt.'; -} -if ($.fn.combogrid) { - $.fn.combogrid.defaults.missingMessage = 'Detta fält är obligatoriskt.'; -} -if ($.fn.calendar) { - $.fn.calendar.defaults.weeks = ['Sön', 'Mån', 'Tis', 'Ons', 'Tors', 'Fre', 'Lör']; - $.fn.calendar.defaults.months = ['Jan', 'Feb', 'Mar', 'Apr', 'Maj', 'Jun', 'Jul', 'Aug', 'Sep', 'Okt', 'Nov', 'Dec']; -} -if ($.fn.datebox) { - $.fn.datebox.defaults.currentText = 'I dag'; - $.fn.datebox.defaults.closeText = 'Stäng'; - $.fn.datebox.defaults.okText = 'Ok'; - $.fn.datebox.defaults.missingMessage = 'Detta fält är obligatoriskt.'; -} -if ($.fn.datetimebox && $.fn.datebox) { - $.extend($.fn.datetimebox.defaults, { - currentText: $.fn.datebox.defaults.currentText, - closeText: $.fn.datebox.defaults.closeText, - okText: $.fn.datebox.defaults.okText, - missingMessage: $.fn.datebox.defaults.missingMessage - }); -} diff --git a/src/main/webapp/js/easyui-1.3.5/locale/easyui-lang-tr.js b/src/main/webapp/js/easyui-1.3.5/locale/easyui-lang-tr.js deleted file mode 100644 index d3aa7066..00000000 --- a/src/main/webapp/js/easyui-1.3.5/locale/easyui-lang-tr.js +++ /dev/null @@ -1,66 +0,0 @@ -if ($.fn.pagination){ - $.fn.pagination.defaults.beforePageText = 'Sayfa'; - $.fn.pagination.defaults.afterPageText = ' / {pages}'; - $.fn.pagination.defaults.displayMsg = '{from} ile {to} arası gösteriliyor, toplam {total} kayıt'; -} -if ($.fn.datagrid){ - $.fn.panel.defaults.loadingMessage = "Yükleniyor..."; -} - -if ($.fn.datagrid){ - $.fn.datagrid.defaults.loadingMessage = "Yükleniyor..."; - $.fn.datagrid.defaults.loadMsg = 'İşleminiz Yapılıyor, lütfen bekleyin ...'; -} -if ($.fn.treegrid && $.fn.datagrid){ - $.fn.treegrid.defaults.loadMsg = $.fn.datagrid.defaults.loadMsg; -} -if ($.messager){ - $.messager.defaults.ok = 'Tamam'; - $.messager.defaults.cancel = 'İptal'; -} -if ($.fn.validatebox){ - $.fn.validatebox.defaults.missingMessage = 'Bu alan zorunludur.'; - $.fn.validatebox.defaults.rules.email.message = 'Lütfen geçerli bir email adresi giriniz.'; - $.fn.validatebox.defaults.rules.url.message = 'Lütfen geçerli bir URL giriniz.'; - $.fn.validatebox.defaults.rules.length.message = 'Lütfen {0} ile {1} arasında bir değer giriniz.'; - $.fn.validatebox.defaults.rules.remote.message = 'Lütfen bu alanı düzeltiniz.'; -} -if ($.fn.numberbox){ - $.fn.numberbox.defaults.missingMessage = 'Bu alan zorunludur.'; -} -if ($.fn.combobox){ - $.fn.combobox.defaults.missingMessage = 'Bu alan zorunludur.'; -} -if ($.fn.combotree){ - $.fn.combotree.defaults.missingMessage = 'Bu alan zorunludur.'; -} -if ($.fn.combogrid){ - $.fn.combogrid.defaults.missingMessage = 'Bu alan zorunludur.'; -} -if ($.fn.calendar){ - $.fn.calendar.defaults.weeks = ['Pz','Pt','Sa','Ça','Pe','Cu','Ct']; - $.fn.calendar.defaults.months = ['Oca', 'Şub', 'Mar', 'Nis', 'May', 'Haz', 'Tem', 'Ağu', 'Eyl', 'Eki', 'Kas', 'Ara']; -} -if ($.fn.datebox){ - $.fn.datebox.defaults.currentText = 'Bugün'; - $.fn.datebox.defaults.closeText = 'Kapat'; - $.fn.datebox.defaults.okText = 'Tamam'; - $.fn.datebox.defaults.missingMessage = 'Bu alan zorunludur.'; -} -if ($.fn.datetimebox && $.fn.datebox){ - $.extend($.fn.datetimebox.defaults,{ - currentText: $.fn.datebox.defaults.currentText, - closeText: $.fn.datebox.defaults.closeText, - okText: $.fn.datebox.defaults.okText, - missingMessage: $.fn.datebox.defaults.missingMessage - }); - - $.fn.datebox.defaults.formatter=function(date){ - var y=date.getFullYear(); - var m=date.getMonth()+1; - var d=date.getDate(); - if(m<10){m="0"+m;} - if(d<10){d="0"+d;} - return d+"."+m+"."+y; - }; -} diff --git a/src/main/webapp/js/easyui-1.3.5/locale/easyui-lang-zh_CN.js b/src/main/webapp/js/easyui-1.3.5/locale/easyui-lang-zh_CN.js deleted file mode 100644 index 24a3a18a..00000000 --- a/src/main/webapp/js/easyui-1.3.5/locale/easyui-lang-zh_CN.js +++ /dev/null @@ -1,70 +0,0 @@ -if ($.fn.pagination){ - $.fn.pagination.defaults.beforePageText = '第'; - $.fn.pagination.defaults.afterPageText = '共{pages}页'; - $.fn.pagination.defaults.displayMsg = '显示{from}到{to},共{total}记录'; -} -if ($.fn.datagrid){ - $.fn.datagrid.defaults.loadMsg = '正在处理,请稍待。。。'; -} -if ($.fn.treegrid && $.fn.datagrid){ - $.fn.treegrid.defaults.loadMsg = $.fn.datagrid.defaults.loadMsg; -} -if ($.messager){ - $.messager.defaults.ok = '确定'; - $.messager.defaults.cancel = '取消'; -} -if ($.fn.validatebox){ - $.fn.validatebox.defaults.missingMessage = '必填'; - $.fn.validatebox.defaults.rules.email.message = '请输入有效的电子邮件地址'; - $.fn.validatebox.defaults.rules.url.message = '请输入有效的URL地址'; - $.fn.validatebox.defaults.rules.length.message = '输入内容长度必须介于{0}和{1}之间'; - $.fn.validatebox.defaults.rules.remote.message = '请修正该字段'; -} -if ($.fn.numberbox){ - $.fn.numberbox.defaults.missingMessage = '必填'; -} -if ($.fn.combobox){ - $.fn.combobox.defaults.missingMessage = '必填'; -} -if ($.fn.combotree){ - $.fn.combotree.defaults.missingMessage = '必填'; -} -if ($.fn.combogrid){ - $.fn.combogrid.defaults.missingMessage = '必填'; -} -if ($.fn.calendar){ - $.fn.calendar.defaults.weeks = ['日','一','二','三','四','五','六']; - $.fn.calendar.defaults.months = ['一月','二月','三月','四月','五月','六月','七月','八月','九月','十月','十一月','十二月']; -} -if ($.fn.datebox){ - $.fn.datebox.defaults.currentText = '今天'; - $.fn.datebox.defaults.closeText = '关闭'; - $.fn.datebox.defaults.okText = '确定'; - $.fn.datebox.defaults.missingMessage = '必填'; - $.fn.datebox.defaults.formatter = function(date){ - var y = date.getFullYear(); - var m = date.getMonth()+1; - var d = date.getDate(); - return y+'-'+(m<10?('0'+m):m)+'-'+(d<10?('0'+d):d); - }; - $.fn.datebox.defaults.parser = function(s){ - if (!s) return new Date(); - var ss = s.split('-'); - var y = parseInt(ss[0],10); - var m = parseInt(ss[1],10); - var d = parseInt(ss[2],10); - if (!isNaN(y) && !isNaN(m) && !isNaN(d)){ - return new Date(y,m-1,d); - } else { - return new Date(); - } - }; -} -if ($.fn.datetimebox && $.fn.datebox){ - $.extend($.fn.datetimebox.defaults,{ - currentText: $.fn.datebox.defaults.currentText, - closeText: $.fn.datebox.defaults.closeText, - okText: $.fn.datebox.defaults.okText, - missingMessage: $.fn.datebox.defaults.missingMessage - }); -} diff --git a/src/main/webapp/js/easyui-1.3.5/locale/easyui-lang-zh_TW.js b/src/main/webapp/js/easyui-1.3.5/locale/easyui-lang-zh_TW.js deleted file mode 100644 index 70ffa76a..00000000 --- a/src/main/webapp/js/easyui-1.3.5/locale/easyui-lang-zh_TW.js +++ /dev/null @@ -1,52 +0,0 @@ -if ($.fn.pagination){ - $.fn.pagination.defaults.beforePageText = '第'; - $.fn.pagination.defaults.afterPageText = '共{pages}頁'; - $.fn.pagination.defaults.displayMsg = '顯示{from}到{to},共{total}記錄'; -} -if ($.fn.datagrid){ - $.fn.datagrid.defaults.loadMsg = '正在處理,請稍待。。。'; -} -if ($.fn.treegrid && $.fn.datagrid){ - $.fn.treegrid.defaults.loadMsg = $.fn.datagrid.defaults.loadMsg; -} -if ($.messager){ - $.messager.defaults.ok = '確定'; - $.messager.defaults.cancel = '取消'; -} -if ($.fn.validatebox){ - $.fn.validatebox.defaults.missingMessage = '該輸入項為必輸項'; - $.fn.validatebox.defaults.rules.email.message = '請輸入有效的電子郵件地址'; - $.fn.validatebox.defaults.rules.url.message = '請輸入有效的URL地址'; - $.fn.validatebox.defaults.rules.length.message = '輸入內容長度必須介於{0}和{1}之間'; - $.fn.validatebox.defaults.rules.remote.message = '請修正此欄位'; -} -if ($.fn.numberbox){ - $.fn.numberbox.defaults.missingMessage = '該輸入項為必輸項'; -} -if ($.fn.combobox){ - $.fn.combobox.defaults.missingMessage = '該輸入項為必輸項'; -} -if ($.fn.combotree){ - $.fn.combotree.defaults.missingMessage = '該輸入項為必輸項'; -} -if ($.fn.combogrid){ - $.fn.combogrid.defaults.missingMessage = '該輸入項為必輸項'; -} -if ($.fn.calendar){ - $.fn.calendar.defaults.weeks = ['日','一','二','三','四','五','六']; - $.fn.calendar.defaults.months = ['一月','二月','三月','四月','五月','六月','七月','八月','九月','十月','十一月','十二月']; -} -if ($.fn.datebox){ - $.fn.datebox.defaults.currentText = '今天'; - $.fn.datebox.defaults.closeText = '關閉'; - $.fn.datebox.defaults.okText = '確定'; - $.fn.datebox.defaults.missingMessage = '該輸入項為必輸項'; -} -if ($.fn.datetimebox && $.fn.datebox){ - $.extend($.fn.datetimebox.defaults,{ - currentText: $.fn.datebox.defaults.currentText, - closeText: $.fn.datebox.defaults.closeText, - okText: $.fn.datebox.defaults.okText, - missingMessage: $.fn.datebox.defaults.missingMessage - }); -} diff --git a/src/main/webapp/js/easyui-1.3.5/outlook.js b/src/main/webapp/js/easyui-1.3.5/outlook.js deleted file mode 100644 index 5b6dd7bf..00000000 --- a/src/main/webapp/js/easyui-1.3.5/outlook.js +++ /dev/null @@ -1,183 +0,0 @@ -$(function () { - // InitLeftMenu(); - tabClose(); - tabCloseEven(); - - - // $('#tabs').tabs('add',{ - // title:'title', - // content:createFrame('http://www.xjz365.com') - // }).tabs({ - // onSelect: function (title) { - // var currTab = $('#tabs').tabs('getTab', title); - // var iframe = $(currTab.panel('options').content); - - // var src = iframe.attr('src'); - // if(src) - // $('#tabs').tabs('update', { tab: currTab, options: { content: createFrame(src)} }); - - // } - // }); -}) - -//初始化左侧 -function InitLeftMenu() { - $("#nav").accordion({ animate: false }); - - $.each(_menus.menus, function (i, n) { - var menulist = ''; - menulist += ''; - - $('#nav').accordion('add', { - title: n.menuname, - content: menulist, - iconCls: 'icon ' + n.icon - }); - - }); - - $('.easyui-accordion li a').click(function () { - var tabTitle = $(this).children('.nav').text(); - - var url = $(this).attr("rel"); - var menuid = $(this).attr("ref"); - var icon = getIcon(menuid, icon); - - addTab(tabTitle, url, icon); - $('.easyui-accordion li div').removeClass("selected"); - $(this).parent().addClass("selected"); - }).hover(function () { - $(this).parent().addClass("hover"); - }, function () { - $(this).parent().removeClass("hover"); - }); - - //选中第一个 - var panels = $('#nav').accordion('panels'); - var t = panels[0].panel('options').title; - $('#nav').accordion('select', t); -} -//获取左侧导航的图标 -function getIcon(menuid) { - var icon = 'icon '; - $.each(_menus.menus, function (i, n) { - $.each(n.menus, function (j, o) { - if (o.menuid == menuid) { - icon += o.icon; - } - }) - }) - - return icon; -} - -function addTab(subtitle, url, icon) { - if (!$('#tabs').tabs('exists', subtitle)) { - $('#tabs').tabs('add', { - title: subtitle, - content: createFrame(url), - closable: true, - icon: icon - }); - } else { - $('#tabs').tabs('select', subtitle); - $('#mm-tabupdate').click(); - } - tabClose(); -} -function createFrame(url) { - var s = ''; - return s; -} -function tabClose() { - /*双击关闭TAB选项卡*/ - $(".tabs-inner").dblclick(function () { - var subtitle = $(this).children(".tabs-closable").text(); - $('#tabs').tabs('close', subtitle); - }) - /*为选项卡绑定右键*/ - $(".tabs-inner").bind('contextmenu', function (e) { - $('#mm').menu('show', { - left: e.pageX, - top: e.pageY - }); - - var subtitle = $(this).children(".tabs-closable").text(); - - $('#mm').data("currtab", subtitle); - $('#tabs').tabs('select', subtitle); - return false; - }); -} -//绑定右键菜单事件 -function tabCloseEven() { - //刷新 - $('#mm-tabupdate').click(function () { - var currTab = $('#tabs').tabs('getSelected'); - var url = $(currTab.panel('options').content).attr('src'); - $('#tabs').tabs('update', { - tab: currTab, - options: { - content: createFrame(url) - } - }) - }) - //关闭当前 - $('#mm-tabclose').click(function () { - var currtab_title = $('#mm').data("currtab"); - $('#tabs').tabs('close', currtab_title); - }) - //全部关闭 - $('#mm-tabcloseall').click(function () { - $('.tabs-inner span').each(function (i, n) { - var t = $(n).text(); - $('#tabs').tabs('close', t); - }); - }); - //关闭除当前之外的TAB - $('#mm-tabcloseother').click(function () { - $('#mm-tabcloseright').click(); - $('#mm-tabcloseleft').click(); - }); - //关闭当前右侧的TAB - $('#mm-tabcloseright').click(function () { - var nextall = $('.tabs-selected').nextAll(); - if (nextall.length == 0) { - //msgShow('系统提示','后边没有啦~~','error'); - //alert('后边没有啦~~'); - return false; - } - nextall.each(function (i, n) { - var t = $('a:eq(0) span', $(n)).text(); - $('#tabs').tabs('close', t); - }); - return false; - }); - //关闭当前左侧的TAB - $('#mm-tabcloseleft').click(function () { - var prevall = $('.tabs-selected').prevAll(); - if (prevall.length == 0) { - //alert('到头了,前边没有啦~~'); - return false; - } - prevall.each(function (i, n) { - var t = $('a:eq(0) span', $(n)).text(); - $('#tabs').tabs('close', t); - }); - return false; - }); - - //显示版权信息 - $("#mm-version").click(function () { - window.open("https://gitee.com/jishenghua/JSH_ERP"); - }) -} - -//弹出信息窗口 title:标题 msgString:提示信息 msgType:信息类型 [error,info,question,warning] -function msgShow(title, msgString, msgType) { - $.messager.alert(title, msgString, msgType); -} diff --git a/src/main/webapp/js/easyui-1.3.5/plugins/jquery.accordion.js b/src/main/webapp/js/easyui-1.3.5/plugins/jquery.accordion.js deleted file mode 100644 index 15b316f2..00000000 --- a/src/main/webapp/js/easyui-1.3.5/plugins/jquery.accordion.js +++ /dev/null @@ -1,322 +0,0 @@ -/** - * jQuery EasyUI 1.3.5 - * - * Copyright (c) 2009-2013 www.jeasyui.com. All rights reserved. - * - * Licensed under the GPL or commercial licenses - * To use it on other terms please contact us: info@jeasyui.com - * http://www.gnu.org/licenses/gpl.txt - * http://www.jeasyui.com/license_commercial.php - * - */ -(function($){ -function _1(_2){ -var _3=$.data(_2,"accordion"); -var _4=_3.options; -var _5=_3.panels; -var cc=$(_2); -_4.fit?$.extend(_4,cc._fit()):cc._fit(false); -if(!isNaN(_4.width)){ -cc._outerWidth(_4.width); -}else{ -cc.css("width",""); -} -var _6=0; -var _7="auto"; -var _8=cc.find(">div.panel>div.accordion-header"); -if(_8.length){ -_6=$(_8[0]).css("height","")._outerHeight(); -} -if(!isNaN(_4.height)){ -cc._outerHeight(_4.height); -_7=cc.height()-_6*_8.length; -}else{ -cc.css("height",""); -} -_9(true,_7-_9(false)+1); -function _9(_a,_b){ -var _c=0; -for(var i=0;i<_5.length;i++){ -var p=_5[i]; -var h=p.panel("header")._outerHeight(_6); -if(p.panel("options").collapsible==_a){ -var _d=isNaN(_b)?undefined:(_b+_6*h.length); -p.panel("resize",{width:cc.width(),height:(_a?_d:undefined)}); -_c+=p.panel("panel").outerHeight()-_6; -} -} -return _c; -}; -}; -function _e(_f,_10,_11,all){ -var _12=$.data(_f,"accordion").panels; -var pp=[]; -for(var i=0;i<_12.length;i++){ -var p=_12[i]; -if(_10){ -if(p.panel("options")[_10]==_11){ -pp.push(p); -} -}else{ -if(p[0]==$(_11)[0]){ -return i; -} -} -} -if(_10){ -return all?pp:(pp.length?pp[0]:null); -}else{ -return -1; -} -}; -function _13(_14){ -return _e(_14,"collapsed",false,true); -}; -function _15(_16){ -var pp=_13(_16); -return pp.length?pp[0]:null; -}; -function _17(_18,_19){ -return _e(_18,null,_19); -}; -function _1a(_1b,_1c){ -var _1d=$.data(_1b,"accordion").panels; -if(typeof _1c=="number"){ -if(_1c<0||_1c>=_1d.length){ -return null; -}else{ -return _1d[_1c]; -} -} -return _e(_1b,"title",_1c); -}; -function _1e(_1f){ -var _20=$.data(_1f,"accordion").options; -var cc=$(_1f); -if(_20.border){ -cc.removeClass("accordion-noborder"); -}else{ -cc.addClass("accordion-noborder"); -} -}; -function _21(_22){ -var _23=$.data(_22,"accordion"); -var cc=$(_22); -cc.addClass("accordion"); -_23.panels=[]; -cc.children("div").each(function(){ -var _24=$.extend({},$.parser.parseOptions(this),{selected:($(this).attr("selected")?true:undefined)}); -var pp=$(this); -_23.panels.push(pp); -_27(_22,pp,_24); -}); -cc.bind("_resize",function(e,_25){ -var _26=$.data(_22,"accordion").options; -if(_26.fit==true||_25){ -_1(_22); -} -return false; -}); -}; -function _27(_28,pp,_29){ -var _2a=$.data(_28,"accordion").options; -pp.panel($.extend({},{collapsible:true,minimizable:false,maximizable:false,closable:false,doSize:false,collapsed:true,headerCls:"accordion-header",bodyCls:"accordion-body"},_29,{onBeforeExpand:function(){ -if(_29.onBeforeExpand){ -if(_29.onBeforeExpand.call(this)==false){ -return false; -} -} -if(!_2a.multiple){ -var all=$.grep(_13(_28),function(p){ -return p.panel("options").collapsible; -}); -for(var i=0;i").addClass("accordion-collapse accordion-expand").appendTo(_2e); -t.bind("click",function(){ -var _2f=_17(_28,pp); -if(pp.panel("options").collapsed){ -_30(_28,_2f); -}else{ -_35(_28,_2f); -} -return false; -}); -pp.panel("options").collapsible?t.show():t.hide(); -_2d.click(function(){ -$(this).find("a.accordion-collapse:visible").triggerHandler("click"); -return false; -}); -}; -function _30(_31,_32){ -var p=_1a(_31,_32); -if(!p){ -return; -} -_33(_31); -var _34=$.data(_31,"accordion").options; -p.panel("expand",_34.animate); -}; -function _35(_36,_37){ -var p=_1a(_36,_37); -if(!p){ -return; -} -_33(_36); -var _38=$.data(_36,"accordion").options; -p.panel("collapse",_38.animate); -}; -function _39(_3a){ -var _3b=$.data(_3a,"accordion").options; -var p=_e(_3a,"selected",true); -if(p){ -_3c(_17(_3a,p)); -}else{ -_3c(_3b.selected); -} -function _3c(_3d){ -var _3e=_3b.animate; -_3b.animate=false; -_30(_3a,_3d); -_3b.animate=_3e; -}; -}; -function _33(_3f){ -var _40=$.data(_3f,"accordion").panels; -for(var i=0;i<_40.length;i++){ -_40[i].stop(true,true); -} -}; -function add(_41,_42){ -var _43=$.data(_41,"accordion"); -var _44=_43.options; -var _45=_43.panels; -if(_42.selected==undefined){ -_42.selected=true; -} -_33(_41); -var pp=$("
").appendTo(_41); -_45.push(pp); -_27(_41,pp,_42); -_1(_41); -_44.onAdd.call(_41,_42.title,_45.length-1); -if(_42.selected){ -_30(_41,_45.length-1); -} -}; -function _46(_47,_48){ -var _49=$.data(_47,"accordion"); -var _4a=_49.options; -var _4b=_49.panels; -_33(_47); -var _4c=_1a(_47,_48); -var _4d=_4c.panel("options").title; -var _4e=_17(_47,_4c); -if(!_4c){ -return; -} -if(_4a.onBeforeRemove.call(_47,_4d,_4e)==false){ -return; -} -_4b.splice(_4e,1); -_4c.panel("destroy"); -if(_4b.length){ -_1(_47); -var _4f=_15(_47); -if(!_4f){ -_30(_47,0); -} -} -_4a.onRemove.call(_47,_4d,_4e); -}; -$.fn.accordion=function(_50,_51){ -if(typeof _50=="string"){ -return $.fn.accordion.methods[_50](this,_51); -} -_50=_50||{}; -return this.each(function(){ -var _52=$.data(this,"accordion"); -if(_52){ -$.extend(_52.options,_50); -}else{ -$.data(this,"accordion",{options:$.extend({},$.fn.accordion.defaults,$.fn.accordion.parseOptions(this),_50),accordion:$(this).addClass("accordion"),panels:[]}); -_21(this); -} -_1e(this); -_1(this); -_39(this); -}); -}; -$.fn.accordion.methods={options:function(jq){ -return $.data(jq[0],"accordion").options; -},panels:function(jq){ -return $.data(jq[0],"accordion").panels; -},resize:function(jq){ -return jq.each(function(){ -_1(this); -}); -},getSelections:function(jq){ -return _13(jq[0]); -},getSelected:function(jq){ -return _15(jq[0]); -},getPanel:function(jq,_53){ -return _1a(jq[0],_53); -},getPanelIndex:function(jq,_54){ -return _17(jq[0],_54); -},select:function(jq,_55){ -return jq.each(function(){ -_30(this,_55); -}); -},unselect:function(jq,_56){ -return jq.each(function(){ -_35(this,_56); -}); -},add:function(jq,_57){ -return jq.each(function(){ -add(this,_57); -}); -},remove:function(jq,_58){ -return jq.each(function(){ -_46(this,_58); -}); -}}; -$.fn.accordion.parseOptions=function(_59){ -var t=$(_59); -return $.extend({},$.parser.parseOptions(_59,["width","height",{fit:"boolean",border:"boolean",animate:"boolean",multiple:"boolean",selected:"number"}])); -}; -$.fn.accordion.defaults={width:"auto",height:"auto",fit:false,border:true,animate:true,multiple:false,selected:0,onSelect:function(_5a,_5b){ -},onUnselect:function(_5c,_5d){ -},onAdd:function(_5e,_5f){ -},onBeforeRemove:function(_60,_61){ -},onRemove:function(_62,_63){ -}}; -})(jQuery); - diff --git a/src/main/webapp/js/easyui-1.3.5/plugins/jquery.calendar.js b/src/main/webapp/js/easyui-1.3.5/plugins/jquery.calendar.js deleted file mode 100644 index 1f71fe6e..00000000 --- a/src/main/webapp/js/easyui-1.3.5/plugins/jquery.calendar.js +++ /dev/null @@ -1,304 +0,0 @@ -/** - * jQuery EasyUI 1.3.5 - * - * Copyright (c) 2009-2013 www.jeasyui.com. All rights reserved. - * - * Licensed under the GPL or commercial licenses - * To use it on other terms please contact us: info@jeasyui.com - * http://www.gnu.org/licenses/gpl.txt - * http://www.jeasyui.com/license_commercial.php - * - */ -(function($){ -function _1(_2){ -var _3=$.data(_2,"calendar").options; -var t=$(_2); -_3.fit?$.extend(_3,t._fit()):t._fit(false); -var _4=t.find(".calendar-header"); -t._outerWidth(_3.width); -t._outerHeight(_3.height); -t.find(".calendar-body")._outerHeight(t.height()-_4._outerHeight()); -}; -function _5(_6){ -$(_6).addClass("calendar").html("
"+"
"+"
"+"
"+"
"+"
"+"Aprial 2010"+"
"+"
"+"
"+"
"+"
"+""+""+""+"
"+"
"+"
"+"
"+"
"); -$(_6).find(".calendar-title span").hover(function(){ -$(this).addClass("calendar-menu-hover"); -},function(){ -$(this).removeClass("calendar-menu-hover"); -}).click(function(){ -var _7=$(_6).find(".calendar-menu"); -if(_7.is(":visible")){ -_7.hide(); -}else{ -_14(_6); -} -}); -$(".calendar-prevmonth,.calendar-nextmonth,.calendar-prevyear,.calendar-nextyear",_6).hover(function(){ -$(this).addClass("calendar-nav-hover"); -},function(){ -$(this).removeClass("calendar-nav-hover"); -}); -$(_6).find(".calendar-nextmonth").click(function(){ -_9(_6,1); -}); -$(_6).find(".calendar-prevmonth").click(function(){ -_9(_6,-1); -}); -$(_6).find(".calendar-nextyear").click(function(){ -_f(_6,1); -}); -$(_6).find(".calendar-prevyear").click(function(){ -_f(_6,-1); -}); -$(_6).bind("_resize",function(){ -var _8=$.data(_6,"calendar").options; -if(_8.fit==true){ -_1(_6); -} -return false; -}); -}; -function _9(_a,_b){ -var _c=$.data(_a,"calendar").options; -_c.month+=_b; -if(_c.month>12){ -_c.year++; -_c.month=1; -}else{ -if(_c.month<1){ -_c.year--; -_c.month=12; -} -} -_d(_a); -var _e=$(_a).find(".calendar-menu-month-inner"); -_e.find("td.calendar-selected").removeClass("calendar-selected"); -_e.find("td:eq("+(_c.month-1)+")").addClass("calendar-selected"); -}; -function _f(_10,_11){ -var _12=$.data(_10,"calendar").options; -_12.year+=_11; -_d(_10); -var _13=$(_10).find(".calendar-menu-year"); -_13.val(_12.year); -}; -function _14(_15){ -var _16=$.data(_15,"calendar").options; -$(_15).find(".calendar-menu").show(); -if($(_15).find(".calendar-menu-month-inner").is(":empty")){ -$(_15).find(".calendar-menu-month-inner").empty(); -var t=$("
").appendTo($(_15).find(".calendar-menu-month-inner")); -var idx=0; -for(var i=0;i<3;i++){ -var tr=$("").appendTo(t); -for(var j=0;j<4;j++){ -$("").html(_16.months[idx++]).attr("abbr",idx).appendTo(tr); -} -} -$(_15).find(".calendar-menu-prev,.calendar-menu-next").hover(function(){ -$(this).addClass("calendar-menu-hover"); -},function(){ -$(this).removeClass("calendar-menu-hover"); -}); -$(_15).find(".calendar-menu-next").click(function(){ -var y=$(_15).find(".calendar-menu-year"); -if(!isNaN(y.val())){ -y.val(parseInt(y.val())+1); -} -}); -$(_15).find(".calendar-menu-prev").click(function(){ -var y=$(_15).find(".calendar-menu-year"); -if(!isNaN(y.val())){ -y.val(parseInt(y.val()-1)); -} -}); -$(_15).find(".calendar-menu-year").keypress(function(e){ -if(e.keyCode==13){ -_17(); -} -}); -$(_15).find(".calendar-menu-month").hover(function(){ -$(this).addClass("calendar-menu-hover"); -},function(){ -$(this).removeClass("calendar-menu-hover"); -}).click(function(){ -var _18=$(_15).find(".calendar-menu"); -_18.find(".calendar-selected").removeClass("calendar-selected"); -$(this).addClass("calendar-selected"); -_17(); -}); -} -function _17(){ -var _19=$(_15).find(".calendar-menu"); -var _1a=_19.find(".calendar-menu-year").val(); -var _1b=_19.find(".calendar-selected").attr("abbr"); -if(!isNaN(_1a)){ -_16.year=parseInt(_1a); -_16.month=parseInt(_1b); -_d(_15); -} -_19.hide(); -}; -var _1c=$(_15).find(".calendar-body"); -var _1d=$(_15).find(".calendar-menu"); -var _1e=_1d.find(".calendar-menu-year-inner"); -var _1f=_1d.find(".calendar-menu-month-inner"); -_1e.find("input").val(_16.year).focus(); -_1f.find("td.calendar-selected").removeClass("calendar-selected"); -_1f.find("td:eq("+(_16.month-1)+")").addClass("calendar-selected"); -_1d._outerWidth(_1c._outerWidth()); -_1d._outerHeight(_1c._outerHeight()); -_1f._outerHeight(_1d.height()-_1e._outerHeight()); -}; -function _20(_21,_22,_23){ -var _24=$.data(_21,"calendar").options; -var _25=[]; -var _26=new Date(_22,_23,0).getDate(); -for(var i=1;i<=_26;i++){ -_25.push([_22,_23,i]); -} -var _27=[],_28=[]; -var _29=-1; -while(_25.length>0){ -var _2a=_25.shift(); -_28.push(_2a); -var day=new Date(_2a[0],_2a[1]-1,_2a[2]).getDay(); -if(_29==day){ -day=0; -}else{ -if(day==(_24.firstDay==0?7:_24.firstDay)-1){ -_27.push(_28); -_28=[]; -} -} -_29=day; -} -if(_28.length){ -_27.push(_28); -} -var _2b=_27[0]; -if(_2b.length<7){ -while(_2b.length<7){ -var _2c=_2b[0]; -var _2a=new Date(_2c[0],_2c[1]-1,_2c[2]-1); -_2b.unshift([_2a.getFullYear(),_2a.getMonth()+1,_2a.getDate()]); -} -}else{ -var _2c=_2b[0]; -var _28=[]; -for(var i=1;i<=7;i++){ -var _2a=new Date(_2c[0],_2c[1]-1,_2c[2]-i); -_28.unshift([_2a.getFullYear(),_2a.getMonth()+1,_2a.getDate()]); -} -_27.unshift(_28); -} -var _2d=_27[_27.length-1]; -while(_2d.length<7){ -var _2e=_2d[_2d.length-1]; -var _2a=new Date(_2e[0],_2e[1]-1,_2e[2]+1); -_2d.push([_2a.getFullYear(),_2a.getMonth()+1,_2a.getDate()]); -} -if(_27.length<6){ -var _2e=_2d[_2d.length-1]; -var _28=[]; -for(var i=1;i<=7;i++){ -var _2a=new Date(_2e[0],_2e[1]-1,_2e[2]+i); -_28.push([_2a.getFullYear(),_2a.getMonth()+1,_2a.getDate()]); -} -_27.push(_28); -} -return _27; -}; -function _d(_2f){ -var _30=$.data(_2f,"calendar").options; -$(_2f).find(".calendar-title span").html(_30.months[_30.month-1]+" "+_30.year); -var _31=$(_2f).find("div.calendar-body"); -_31.find(">table").remove(); -var t=$("
").prependTo(_31); -var tr=$("").appendTo(t.find("thead")); -for(var i=_30.firstDay;i<_30.weeks.length;i++){ -tr.append(""+_30.weeks[i]+""); -} -for(var i=0;i<_30.firstDay;i++){ -tr.append(""+_30.weeks[i]+""); -} -var _32=_20(_2f,_30.year,_30.month); -for(var i=0;i<_32.length;i++){ -var _33=_32[i]; -var tr=$("").appendTo(t.find("tbody")); -for(var j=0;j<_33.length;j++){ -var day=_33[j]; -$("").attr("abbr",day[0]+","+day[1]+","+day[2]).html(day[2]).appendTo(tr); -} -} -t.find("td[abbr^=\""+_30.year+","+_30.month+"\"]").removeClass("calendar-other-month"); -var now=new Date(); -var _34=now.getFullYear()+","+(now.getMonth()+1)+","+now.getDate(); -t.find("td[abbr=\""+_34+"\"]").addClass("calendar-today"); -if(_30.current){ -t.find(".calendar-selected").removeClass("calendar-selected"); -var _35=_30.current.getFullYear()+","+(_30.current.getMonth()+1)+","+_30.current.getDate(); -t.find("td[abbr=\""+_35+"\"]").addClass("calendar-selected"); -} -var _36=6-_30.firstDay; -var _37=_36+1; -if(_36>=7){ -_36-=7; -} -if(_37>=7){ -_37-=7; -} -t.find("tr").find("td:eq("+_36+")").addClass("calendar-saturday"); -t.find("tr").find("td:eq("+_37+")").addClass("calendar-sunday"); -t.find("td").hover(function(){ -$(this).addClass("calendar-hover"); -},function(){ -$(this).removeClass("calendar-hover"); -}).click(function(){ -t.find(".calendar-selected").removeClass("calendar-selected"); -$(this).addClass("calendar-selected"); -var _38=$(this).attr("abbr").split(","); -_30.current=new Date(_38[0],parseInt(_38[1])-1,_38[2]); -_30.onSelect.call(_2f,_30.current); -}); -}; -$.fn.calendar=function(_39,_3a){ -if(typeof _39=="string"){ -return $.fn.calendar.methods[_39](this,_3a); -} -_39=_39||{}; -return this.each(function(){ -var _3b=$.data(this,"calendar"); -if(_3b){ -$.extend(_3b.options,_39); -}else{ -_3b=$.data(this,"calendar",{options:$.extend({},$.fn.calendar.defaults,$.fn.calendar.parseOptions(this),_39)}); -_5(this); -} -if(_3b.options.border==false){ -$(this).addClass("calendar-noborder"); -} -_1(this); -_d(this); -$(this).find("div.calendar-menu").hide(); -}); -}; -$.fn.calendar.methods={options:function(jq){ -return $.data(jq[0],"calendar").options; -},resize:function(jq){ -return jq.each(function(){ -_1(this); -}); -},moveTo:function(jq,_3c){ -return jq.each(function(){ -$(this).calendar({year:_3c.getFullYear(),month:_3c.getMonth()+1,current:_3c}); -}); -}}; -$.fn.calendar.parseOptions=function(_3d){ -var t=$(_3d); -return $.extend({},$.parser.parseOptions(_3d,["width","height",{firstDay:"number",fit:"boolean",border:"boolean"}])); -}; -$.fn.calendar.defaults={width:180,height:180,fit:false,border:true,firstDay:0,weeks:["S","M","T","W","T","F","S"],months:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],year:new Date().getFullYear(),month:new Date().getMonth()+1,current:new Date(),onSelect:function(_3e){ -}}; -})(jQuery); - diff --git a/src/main/webapp/js/easyui-1.3.5/plugins/jquery.combo.js b/src/main/webapp/js/easyui-1.3.5/plugins/jquery.combo.js deleted file mode 100644 index 50cd8780..00000000 --- a/src/main/webapp/js/easyui-1.3.5/plugins/jquery.combo.js +++ /dev/null @@ -1,453 +0,0 @@ -/** - * jQuery EasyUI 1.3.5 - * - * Copyright (c) 2009-2013 www.jeasyui.com. All rights reserved. - * - * Licensed under the GPL or commercial licenses - * To use it on other terms please contact us: info@jeasyui.com - * http://www.gnu.org/licenses/gpl.txt - * http://www.jeasyui.com/license_commercial.php - * - */ -(function($){ -function _1(_2,_3){ -var _4=$.data(_2,"combo"); -var _5=_4.options; -var _6=_4.combo; -var _7=_4.panel; -if(_3){ -_5.width=_3; -} -if(isNaN(_5.width)){ -var c=$(_2).clone(); -c.css("visibility","hidden"); -c.appendTo("body"); -_5.width=c.outerWidth(); -c.remove(); -} -_6.appendTo("body"); -var _8=_6.find("input.combo-text"); -var _9=_6.find(".combo-arrow"); -var _a=_5.hasDownArrow?_9._outerWidth():0; -_6._outerWidth(_5.width)._outerHeight(_5.height); -_8._outerWidth(_6.width()-_a); -_8.css({height:_6.height()+"px",lineHeight:_6.height()+"px"}); -_9._outerHeight(_6.height()); -_7.panel("resize",{width:(_5.panelWidth?_5.panelWidth:_6.outerWidth()),height:_5.panelHeight}); -_6.insertAfter(_2); -}; -function _b(_c){ -$(_c).addClass("combo-f").hide(); -var _d=$(""+""+""+""+"").insertAfter(_c); -var _e=$("
").appendTo("body"); -_e.panel({doSize:false,closed:true,cls:"combo-p",style:{position:"absolute",zIndex:10},onOpen:function(){ -$(this).panel("resize"); -},onClose:function(){ -var _f=$.data(_c,"combo"); -if(_f){ -_f.options.onHidePanel.call(_c); -} -}}); -var _10=$(_c).attr("name"); -if(_10){ -_d.find("input.combo-value").attr("name",_10); -$(_c).removeAttr("name").attr("comboName",_10); -} -return {combo:_d,panel:_e}; -}; -function _11(_12){ -var _13=$.data(_12,"combo"); -var _14=_13.options; -var _15=_13.combo; -if(_14.hasDownArrow){ -_15.find(".combo-arrow").show(); -}else{ -_15.find(".combo-arrow").hide(); -} -_16(_12,_14.disabled); -_17(_12,_14.readonly); -}; -function _18(_19){ -var _1a=$.data(_19,"combo"); -var _1b=_1a.combo.find("input.combo-text"); -_1b.validatebox("destroy"); -_1a.panel.panel("destroy"); -_1a.combo.remove(); -$(_19).remove(); -}; -function _1c(_1d){ -$(_1d).find(".combo-f").each(function(){ -var p=$(this).combo("panel"); -if(p.is(":visible")){ -p.panel("close"); -} -}); -}; -function _1e(_1f){ -var _20=$.data(_1f,"combo"); -var _21=_20.options; -var _22=_20.panel; -var _23=_20.combo; -var _24=_23.find(".combo-text"); -var _25=_23.find(".combo-arrow"); -$(document).unbind(".combo").bind("mousedown.combo",function(e){ -var p=$(e.target).closest("span.combo,div.combo-p"); -if(p.length){ -_1c(p); -return; -} -$("body>div.combo-p>div.combo-panel:visible").panel("close"); -}); -_24.unbind(".combo"); -_25.unbind(".combo"); -if(!_21.disabled&&!_21.readonly){ -_24.bind("click.combo",function(e){ -if(!_21.editable){ -_26.call(this); -}else{ -var p=$(this).closest("div.combo-panel"); -$("div.combo-panel:visible").not(_22).not(p).panel("close"); -} -}).bind("keydown.combo",function(e){ -switch(e.keyCode){ -case 38: -_21.keyHandler.up.call(_1f,e); -break; -case 40: -_21.keyHandler.down.call(_1f,e); -break; -case 37: -_21.keyHandler.left.call(_1f,e); -break; -case 39: -_21.keyHandler.right.call(_1f,e); -break; -case 13: -e.preventDefault(); -_21.keyHandler.enter.call(_1f,e); -return false; -case 9: -case 27: -_27(_1f); -break; -default: -if(_21.editable){ -if(_20.timer){ -clearTimeout(_20.timer); -} -_20.timer=setTimeout(function(){ -var q=_24.val(); -if(_20.previousValue!=q){ -_20.previousValue=q; -$(_1f).combo("showPanel"); -_21.keyHandler.query.call(_1f,_24.val(),e); -$(_1f).combo("validate"); -} -},_21.delay); -} -} -}); -_25.bind("click.combo",function(){ -_26.call(this); -}).bind("mouseenter.combo",function(){ -$(this).addClass("combo-arrow-hover"); -}).bind("mouseleave.combo",function(){ -$(this).removeClass("combo-arrow-hover"); -}); -} -function _26(){ -if(_22.is(":visible")){ -_1c(_22); -_27(_1f); -}else{ -var p=$(this).closest("div.combo-panel"); -$("div.combo-panel:visible").not(_22).not(p).panel("close"); -$(_1f).combo("showPanel"); -} -_24.focus(); -}; -}; -function _28(_29){ -var _2a=$.data(_29,"combo").options; -var _2b=$.data(_29,"combo").combo; -var _2c=$.data(_29,"combo").panel; -if($.fn.window){ -_2c.panel("panel").css("z-index",$.fn.window.defaults.zIndex++); -} -_2c.panel("move",{left:_2b.offset().left,top:_2d()}); -if(_2c.panel("options").closed){ -_2c.panel("open"); -_2a.onShowPanel.call(_29); -} -(function(){ -if(_2c.is(":visible")){ -_2c.panel("move",{left:_2e(),top:_2d()}); -setTimeout(arguments.callee,200); -} -})(); -function _2e(){ -var _2f=_2b.offset().left; -if(_2f+_2c._outerWidth()>$(window)._outerWidth()+$(document).scrollLeft()){ -_2f=$(window)._outerWidth()+$(document).scrollLeft()-_2c._outerWidth(); -} -if(_2f<0){ -_2f=0; -} -return _2f; -}; -function _2d(){ -var top=_2b.offset().top+_2b._outerHeight(); -if(top+_2c._outerHeight()>$(window)._outerHeight()+$(document).scrollTop()){ -top=_2b.offset().top-_2c._outerHeight(); -} -if(top<$(document).scrollTop()){ -top=_2b.offset().top+_2b._outerHeight(); -} -return top; -}; -}; -function _27(_30){ -var _31=$.data(_30,"combo").panel; -_31.panel("close"); -}; -function _32(_33){ -var _34=$.data(_33,"combo").options; -var _35=$(_33).combo("textbox"); -_35.validatebox($.extend({},_34,{deltaX:(_34.hasDownArrow?_34.deltaX:(_34.deltaX>0?1:-1))})); -}; -function _16(_36,_37){ -var _38=$.data(_36,"combo"); -var _39=_38.options; -var _3a=_38.combo; -if(_37){ -_39.disabled=true; -$(_36).attr("disabled",true); -_3a.find(".combo-value").attr("disabled",true); -_3a.find(".combo-text").attr("disabled",true); -}else{ -_39.disabled=false; -$(_36).removeAttr("disabled"); -_3a.find(".combo-value").removeAttr("disabled"); -_3a.find(".combo-text").removeAttr("disabled"); -} -}; -function _17(_3b,_3c){ -var _3d=$.data(_3b,"combo"); -var _3e=_3d.options; -_3e.readonly=_3c==undefined?true:_3c; -var _3f=_3e.readonly?true:(!_3e.editable); -_3d.combo.find(".combo-text").attr("readonly",_3f).css("cursor",_3f?"pointer":""); -}; -function _40(_41){ -var _42=$.data(_41,"combo"); -var _43=_42.options; -var _44=_42.combo; -if(_43.multiple){ -_44.find("input.combo-value").remove(); -}else{ -_44.find("input.combo-value").val(""); -} -_44.find("input.combo-text").val(""); -}; -function _45(_46){ -var _47=$.data(_46,"combo").combo; -return _47.find("input.combo-text").val(); -}; -function _48(_49,_4a){ -var _4b=$.data(_49,"combo"); -var _4c=_4b.combo.find("input.combo-text"); -if(_4c.val()!=_4a){ -_4c.val(_4a); -$(_49).combo("validate"); -_4b.previousValue=_4a; -} -}; -function _4d(_4e){ -var _4f=[]; -var _50=$.data(_4e,"combo").combo; -_50.find("input.combo-value").each(function(){ -_4f.push($(this).val()); -}); -return _4f; -}; -function _51(_52,_53){ -var _54=$.data(_52,"combo").options; -var _55=_4d(_52); -var _56=$.data(_52,"combo").combo; -_56.find("input.combo-value").remove(); -var _57=$(_52).attr("comboName"); -for(var i=0;i<_53.length;i++){ -var _58=$("").appendTo(_56); -if(_57){ -_58.attr("name",_57); -} -_58.val(_53[i]); -} -var tmp=[]; -for(var i=0;i<_55.length;i++){ -tmp[i]=_55[i]; -} -var aa=[]; -for(var i=0;i<_53.length;i++){ -for(var j=0;j_10.height()){ -var h=_10.scrollTop()+_11.position().top+_11.outerHeight()-_10.height(); -_10.scrollTop(h); -} -} -} -}; -function nav(_12,dir){ -var _13=$.data(_12,"combobox").options; -var _14=$(_12).combobox("panel"); -var _15=_14.children("div.combobox-item-hover"); -if(!_15.length){ -_15=_14.children("div.combobox-item-selected"); -} -_15.removeClass("combobox-item-hover"); -var _16="div.combobox-item:visible:not(.combobox-item-disabled):first"; -var _17="div.combobox-item:visible:not(.combobox-item-disabled):last"; -if(!_15.length){ -_15=_14.children(dir=="next"?_16:_17); -}else{ -if(dir=="next"){ -_15=_15.nextAll(_16); -if(!_15.length){ -_15=_14.children(_16); -} -}else{ -_15=_15.prevAll(_16); -if(!_15.length){ -_15=_14.children(_17); -} -} -} -if(_15.length){ -_15.addClass("combobox-item-hover"); -var row=_1(_12,_15.attr("id"),"domId"); -if(row){ -_d(_12,row[_13.valueField]); -if(_13.selectOnNavigation){ -_18(_12,row[_13.valueField]); -} -} -} -}; -function _18(_19,_1a){ -var _1b=$.data(_19,"combobox").options; -var _1c=$(_19).combo("getValues"); -if($.inArray(_1a+"",_1c)==-1){ -if(_1b.multiple){ -_1c.push(_1a); -}else{ -_1c=[_1a]; -} -_1d(_19,_1c); -_1b.onSelect.call(_19,_1(_19,_1a)); -} -}; -function _1e(_1f,_20){ -var _21=$.data(_1f,"combobox").options; -var _22=$(_1f).combo("getValues"); -var _23=$.inArray(_20+"",_22); -if(_23>=0){ -_22.splice(_23,1); -_1d(_1f,_22); -_21.onUnselect.call(_1f,_1(_1f,_20)); -} -}; -function _1d(_24,_25,_26){ -var _27=$.data(_24,"combobox").options; -var _28=$(_24).combo("panel"); -_28.find("div.combobox-item-selected").removeClass("combobox-item-selected"); -var vv=[],ss=[]; -for(var i=0;i<_25.length;i++){ -var v=_25[i]; -var s=v; -var row=_1(_24,v); -if(row){ -s=row[_27.textField]; -$("#"+row.domId).addClass("combobox-item-selected"); -} -vv.push(v); -ss.push(s); -} -$(_24).combo("setValues",vv); -if(!_26){ -$(_24).combo("setText",ss.join(_27.separator)); -} -}; -var _29=1; -function _2a(_2b,_2c,_2d){ -var _2e=$.data(_2b,"combobox"); -var _2f=_2e.options; -_2e.data=_2f.loadFilter.call(_2b,_2c); -_2e.groups=[]; -_2c=_2e.data; -var _30=$(_2b).combobox("getValues"); -var dd=[]; -var _31=undefined; -for(var i=0;i<_2c.length;i++){ -var row=_2c[i]; -var v=row[_2f.valueField]+""; -var s=row[_2f.textField]; -var g=row[_2f.groupField]; -if(g){ -if(_31!=g){ -_31=g; -var _32={value:g,domId:("_easyui_combobox_"+_29++)}; -_2e.groups.push(_32); -dd.push("
"); -dd.push(_2f.groupFormatter?_2f.groupFormatter.call(_2b,g):g); -dd.push("
"); -} -}else{ -_31=undefined; -} -var cls="combobox-item"+(row.disabled?" combobox-item-disabled":"")+(g?" combobox-gitem":""); -row.domId="_easyui_combobox_"+_29++; -dd.push("
"); -dd.push(_2f.formatter?_2f.formatter.call(_2b,row):s); -dd.push("
"); -if(row["selected"]&&$.inArray(v,_30)==-1){ -_30.push(v); -} -} -$(_2b).combo("panel").html(dd.join("")); -if(_2f.multiple){ -_1d(_2b,_30,_2d); -}else{ -_1d(_2b,_30.length?[_30[_30.length-1]]:[],_2d); -} -_2f.onLoadSuccess.call(_2b,_2c); -}; -function _33(_34,url,_35,_36){ -var _37=$.data(_34,"combobox").options; -if(url){ -_37.url=url; -} -_35=_35||{}; -if(_37.onBeforeLoad.call(_34,_35)==false){ -return; -} -_37.loader.call(_34,_35,function(_38){ -_2a(_34,_38,_36); -},function(){ -_37.onLoadError.apply(this,arguments); -}); -}; -function _39(_3a,q){ -var _3b=$.data(_3a,"combobox"); -var _3c=_3b.options; -if(_3c.multiple&&!q){ -_1d(_3a,[],true); -}else{ -_1d(_3a,[q],true); -} -if(_3c.mode=="remote"){ -_33(_3a,null,{q:q},true); -}else{ -var _3d=$(_3a).combo("panel"); -_3d.find("div.combobox-item,div.combobox-group").hide(); -var _3e=_3b.data; -var _3f=undefined; -for(var i=0;i<_3e.length;i++){ -var row=_3e[i]; -if(_3c.filter.call(_3a,q,row)){ -var v=row[_3c.valueField]; -var s=row[_3c.textField]; -var g=row[_3c.groupField]; -var _40=$("#"+row.domId).show(); -if(s.toLowerCase()==q.toLowerCase()){ -_1d(_3a,[v]); -_40.addClass("combobox-item-selected"); -} -if(_3c.groupField&&_3f!=g){ -var _41=_1(_3a,g,"value",true); -if(_41){ -$("#"+_41.domId).show(); -} -_3f=g; -} -} -} -} -}; -function _42(_43){ -var t=$(_43); -var _44=t.combobox("options"); -var _45=t.combobox("panel"); -var _46=_45.children("div.combobox-item-hover"); -if(!_46.length){ -_46=_45.children("div.combobox-item-selected"); -} -if(!_46.length){ -return; -} -var row=_1(_43,_46.attr("id"),"domId"); -if(!row){ -return; -} -var _47=row[_44.valueField]; -if(_44.multiple){ -if(_46.hasClass("combobox-item-selected")){ -t.combobox("unselect",_47); -}else{ -t.combobox("select",_47); -} -}else{ -t.combobox("select",_47); -t.combobox("hidePanel"); -} -var vv=[]; -var _48=t.combobox("getValues"); -for(var i=0;i<_48.length;i++){ -if(_1(_43,_48[i])){ -vv.push(_48[i]); -} -} -t.combobox("setValues",vv); -}; -function _49(_4a){ -var _4b=$.data(_4a,"combobox").options; -$(_4a).addClass("combobox-f"); -$(_4a).combo($.extend({},_4b,{onShowPanel:function(){ -$(_4a).combo("panel").find("div.combobox-item,div.combobox-group").show(); -_d(_4a,$(_4a).combobox("getValue")); -_4b.onShowPanel.call(_4a); -}})); -$(_4a).combo("panel").unbind().bind("mouseover",function(e){ -$(this).children("div.combobox-item-hover").removeClass("combobox-item-hover"); -var _4c=$(e.target).closest("div.combobox-item"); -if(!_4c.hasClass("combobox-item-disabled")){ -_4c.addClass("combobox-item-hover"); -} -e.stopPropagation(); -}).bind("mouseout",function(e){ -$(e.target).closest("div.combobox-item").removeClass("combobox-item-hover"); -e.stopPropagation(); -}).bind("click",function(e){ -var _4d=$(e.target).closest("div.combobox-item"); -if(!_4d.length||_4d.hasClass("combobox-item-disabled")){ -return; -} -var row=_1(_4a,_4d.attr("id"),"domId"); -if(!row){ -return; -} -var _4e=row[_4b.valueField]; -if(_4b.multiple){ -if(_4d.hasClass("combobox-item-selected")){ -_1e(_4a,_4e); -}else{ -_18(_4a,_4e); -} -}else{ -_18(_4a,_4e); -$(_4a).combo("hidePanel"); -} -e.stopPropagation(); -}); -}; -$.fn.combobox=function(_4f,_50){ -if(typeof _4f=="string"){ -var _51=$.fn.combobox.methods[_4f]; -if(_51){ -return _51(this,_50); -}else{ -return this.combo(_4f,_50); -} -} -_4f=_4f||{}; -return this.each(function(){ -var _52=$.data(this,"combobox"); -if(_52){ -$.extend(_52.options,_4f); -_49(this); -}else{ -_52=$.data(this,"combobox",{options:$.extend({},$.fn.combobox.defaults,$.fn.combobox.parseOptions(this),_4f),data:[]}); -_49(this); -var _53=$.fn.combobox.parseData(this); -if(_53.length){ -_2a(this,_53); -} -} -if(_52.options.data){ -_2a(this,_52.options.data); -} -_33(this); -}); -}; -$.fn.combobox.methods={options:function(jq){ -var _54=jq.combo("options"); -return $.extend($.data(jq[0],"combobox").options,{originalValue:_54.originalValue,disabled:_54.disabled,readonly:_54.readonly}); -},getData:function(jq){ -return $.data(jq[0],"combobox").data; -},setValues:function(jq,_55){ -return jq.each(function(){ -_1d(this,_55); -}); -},setValue:function(jq,_56){ -return jq.each(function(){ -_1d(this,[_56]); -}); -},clear:function(jq){ -return jq.each(function(){ -$(this).combo("clear"); -var _57=$(this).combo("panel"); -_57.find("div.combobox-item-selected").removeClass("combobox-item-selected"); -}); -},reset:function(jq){ -return jq.each(function(){ -var _58=$(this).combobox("options"); -if(_58.multiple){ -$(this).combobox("setValues",_58.originalValue); -}else{ -$(this).combobox("setValue",_58.originalValue); -} -}); -},loadData:function(jq,_59){ -return jq.each(function(){ -_2a(this,_59); -}); -},reload:function(jq,url){ -return jq.each(function(){ -_33(this,url); -}); -},select:function(jq,_5a){ -return jq.each(function(){ -_18(this,_5a); -}); -},unselect:function(jq,_5b){ -return jq.each(function(){ -_1e(this,_5b); -}); -}}; -$.fn.combobox.parseOptions=function(_5c){ -var t=$(_5c); -return $.extend({},$.fn.combo.parseOptions(_5c),$.parser.parseOptions(_5c,["valueField","textField","groupField","mode","method","url"])); -}; -$.fn.combobox.parseData=function(_5d){ -var _5e=[]; -var _5f=$(_5d).combobox("options"); -$(_5d).children().each(function(){ -if(this.tagName.toLowerCase()=="optgroup"){ -var _60=$(this).attr("label"); -$(this).children().each(function(){ -_61(this,_60); -}); -}else{ -_61(this); -} -}); -return _5e; -function _61(el,_62){ -var t=$(el); -var row={}; -row[_5f.valueField]=t.attr("value")!=undefined?t.attr("value"):t.html(); -row[_5f.textField]=t.html(); -row["selected"]=t.is(":selected"); -row["disabled"]=t.is(":disabled"); -if(_62){ -_5f.groupField=_5f.groupField||"group"; -row[_5f.groupField]=_62; -} -_5e.push(row); -}; -}; -$.fn.combobox.defaults=$.extend({},$.fn.combo.defaults,{valueField:"value",textField:"text",groupField:null,groupFormatter:function(_63){ -return _63; -},mode:"local",method:"post",url:null,data:null,keyHandler:{up:function(e){ -nav(this,"prev"); -e.preventDefault(); -},down:function(e){ -nav(this,"next"); -e.preventDefault(); -},left:function(e){ -},right:function(e){ -},enter:function(e){ -_42(this); -},query:function(q,e){ -_39(this,q); -}},filter:function(q,row){ -var _64=$(this).combobox("options"); -return row[_64.textField].toLowerCase().indexOf(q.toLowerCase())==0; -},formatter:function(row){ -var _65=$(this).combobox("options"); -return row[_65.textField]; -},loader:function(_66,_67,_68){ -var _69=$(this).combobox("options"); -if(!_69.url){ -return false; -} -$.ajax({type:_69.method,url:_69.url,data:_66,dataType:"json",success:function(_6a){ -_67(_6a); -},error:function(){ -_68.apply(this,arguments); -}}); -},loadFilter:function(_6b){ -return _6b; -},onBeforeLoad:function(_6c){ -},onLoadSuccess:function(){ -},onLoadError:function(){ -},onSelect:function(_6d){ -},onUnselect:function(_6e){ -}}); -})(jQuery); - diff --git a/src/main/webapp/js/easyui-1.3.5/plugins/jquery.combogrid.js b/src/main/webapp/js/easyui-1.3.5/plugins/jquery.combogrid.js deleted file mode 100644 index 21290774..00000000 --- a/src/main/webapp/js/easyui-1.3.5/plugins/jquery.combogrid.js +++ /dev/null @@ -1,253 +0,0 @@ -/** - * jQuery EasyUI 1.3.5 - * - * Copyright (c) 2009-2013 www.jeasyui.com. All rights reserved. - * - * Licensed under the GPL or commercial licenses - * To use it on other terms please contact us: info@jeasyui.com - * http://www.gnu.org/licenses/gpl.txt - * http://www.jeasyui.com/license_commercial.php - * - */ -(function($){ -function _1(_2){ -var _3=$.data(_2,"combogrid"); -var _4=_3.options; -var _5=_3.grid; -$(_2).addClass("combogrid-f").combo(_4); -var _6=$(_2).combo("panel"); -if(!_5){ -_5=$("
").appendTo(_6); -_3.grid=_5; -} -_5.datagrid($.extend({},_4,{border:false,fit:true,singleSelect:(!_4.multiple),onLoadSuccess:function(_7){ -var _8=$(_2).combo("getValues"); -var _9=_4.onSelect; -_4.onSelect=function(){ -}; -_1a(_2,_8,_3.remainText); -_4.onSelect=_9; -_4.onLoadSuccess.apply(_2,arguments); -},onClickRow:_a,onSelect:function(_b,_c){ -_d(); -_4.onSelect.call(this,_b,_c); -},onUnselect:function(_e,_f){ -_d(); -_4.onUnselect.call(this,_e,_f); -},onSelectAll:function(_10){ -_d(); -_4.onSelectAll.call(this,_10); -},onUnselectAll:function(_11){ -if(_4.multiple){ -_d(); -} -_4.onUnselectAll.call(this,_11); -}})); -function _a(_12,row){ -_3.remainText=false; -_d(); -if(!_4.multiple){ -$(_2).combo("hidePanel"); -} -_4.onClickRow.call(this,_12,row); -}; -function _d(){ -var _13=_5.datagrid("getSelections"); -var vv=[],ss=[]; -for(var i=0;i<_13.length;i++){ -vv.push(_13[i][_4.idField]); -ss.push(_13[i][_4.textField]); -} -if(!_4.multiple){ -$(_2).combo("setValues",(vv.length?vv:[""])); -}else{ -$(_2).combo("setValues",vv); -} -if(!_3.remainText){ -$(_2).combo("setText",ss.join(_4.separator)); -} -}; -}; -function nav(_14,dir){ -var _15=$.data(_14,"combogrid"); -var _16=_15.options; -var _17=_15.grid; -var _18=_17.datagrid("getRows").length; -if(!_18){ -return; -} -var tr=_16.finder.getTr(_17[0],null,"highlight"); -if(!tr.length){ -tr=_16.finder.getTr(_17[0],null,"selected"); -} -var _19; -if(!tr.length){ -_19=(dir=="next"?0:_18-1); -}else{ -var _19=parseInt(tr.attr("datagrid-row-index")); -_19+=(dir=="next"?1:-1); -if(_19<0){ -_19=_18-1; -} -if(_19>=_18){ -_19=0; -} -} -_17.datagrid("highlightRow",_19); -if(_16.selectOnNavigation){ -_15.remainText=false; -_17.datagrid("selectRow",_19); -} -}; -function _1a(_1b,_1c,_1d){ -var _1e=$.data(_1b,"combogrid"); -var _1f=_1e.options; -var _20=_1e.grid; -var _21=_20.datagrid("getRows"); -var ss=[]; -var _22=$(_1b).combo("getValues"); -var _23=$(_1b).combo("options"); -var _24=_23.onChange; -_23.onChange=function(){ -}; -_20.datagrid("clearSelections"); -for(var i=0;i<_1c.length;i++){ -var _25=_20.datagrid("getRowIndex",_1c[i]); -if(_25>=0){ -_20.datagrid("selectRow",_25); -ss.push(_21[_25][_1f.textField]); -}else{ -ss.push(_1c[i]); -} -} -$(_1b).combo("setValues",_22); -_23.onChange=_24; -$(_1b).combo("setValues",_1c); -if(!_1d){ -var s=ss.join(_1f.separator); -if($(_1b).combo("getText")!=s){ -$(_1b).combo("setText",s); -} -} -}; -function _26(_27,q){ -var _28=$.data(_27,"combogrid"); -var _29=_28.options; -var _2a=_28.grid; -_28.remainText=true; -if(_29.multiple&&!q){ -_1a(_27,[],true); -}else{ -_1a(_27,[q],true); -} -if(_29.mode=="remote"){ -_2a.datagrid("clearSelections"); -_2a.datagrid("load",$.extend({},_29.queryParams,{q:q})); -}else{ -if(!q){ -return; -} -var _2b=_2a.datagrid("getRows"); -for(var i=0;i<_2b.length;i++){ -if(_29.filter.call(_27,q,_2b[i])){ -_2a.datagrid("clearSelections"); -_2a.datagrid("selectRow",i); -return; -} -} -} -}; -function _2c(_2d){ -var _2e=$.data(_2d,"combogrid"); -var _2f=_2e.options; -var _30=_2e.grid; -var tr=_2f.finder.getTr(_30[0],null,"highlight"); -if(!tr.length){ -tr=_2f.finder.getTr(_30[0],null,"selected"); -} -if(!tr.length){ -return; -} -_2e.remainText=false; -var _31=parseInt(tr.attr("datagrid-row-index")); -if(_2f.multiple){ -if(tr.hasClass("datagrid-row-selected")){ -_30.datagrid("unselectRow",_31); -}else{ -_30.datagrid("selectRow",_31); -} -}else{ -_30.datagrid("selectRow",_31); -$(_2d).combogrid("hidePanel"); -} -}; -$.fn.combogrid=function(_32,_33){ -if(typeof _32=="string"){ -var _34=$.fn.combogrid.methods[_32]; -if(_34){ -return _34(this,_33); -}else{ -return this.combo(_32,_33); -} -} -_32=_32||{}; -return this.each(function(){ -var _35=$.data(this,"combogrid"); -if(_35){ -$.extend(_35.options,_32); -}else{ -_35=$.data(this,"combogrid",{options:$.extend({},$.fn.combogrid.defaults,$.fn.combogrid.parseOptions(this),_32)}); -} -_1(this); -}); -}; -$.fn.combogrid.methods={options:function(jq){ -var _36=jq.combo("options"); -return $.extend($.data(jq[0],"combogrid").options,{originalValue:_36.originalValue,disabled:_36.disabled,readonly:_36.readonly}); -},grid:function(jq){ -return $.data(jq[0],"combogrid").grid; -},setValues:function(jq,_37){ -return jq.each(function(){ -_1a(this,_37); -}); -},setValue:function(jq,_38){ -return jq.each(function(){ -_1a(this,[_38]); -}); -},clear:function(jq){ -return jq.each(function(){ -$(this).combogrid("grid").datagrid("clearSelections"); -$(this).combo("clear"); -}); -},reset:function(jq){ -return jq.each(function(){ -var _39=$(this).combogrid("options"); -if(_39.multiple){ -$(this).combogrid("setValues",_39.originalValue); -}else{ -$(this).combogrid("setValue",_39.originalValue); -} -}); -}}; -$.fn.combogrid.parseOptions=function(_3a){ -var t=$(_3a); -return $.extend({},$.fn.combo.parseOptions(_3a),$.fn.datagrid.parseOptions(_3a),$.parser.parseOptions(_3a,["idField","textField","mode"])); -}; -$.fn.combogrid.defaults=$.extend({},$.fn.combo.defaults,$.fn.datagrid.defaults,{loadMsg:null,idField:null,textField:null,mode:"local",keyHandler:{up:function(e){ -nav(this,"prev"); -e.preventDefault(); -},down:function(e){ -nav(this,"next"); -e.preventDefault(); -},left:function(e){ -},right:function(e){ -},enter:function(e){ -_2c(this); -},query:function(q,e){ -_26(this,q); -}},filter:function(q,row){ -var _3b=$(this).combogrid("options"); -return row[_3b.textField].indexOf(q)==0; -}}); -})(jQuery); - diff --git a/src/main/webapp/js/easyui-1.3.5/plugins/jquery.combotree.js b/src/main/webapp/js/easyui-1.3.5/plugins/jquery.combotree.js deleted file mode 100644 index c31225ad..00000000 --- a/src/main/webapp/js/easyui-1.3.5/plugins/jquery.combotree.js +++ /dev/null @@ -1,162 +0,0 @@ -/** - * jQuery EasyUI 1.3.5 - * - * Copyright (c) 2009-2013 www.jeasyui.com. All rights reserved. - * - * Licensed under the GPL or commercial licenses - * To use it on other terms please contact us: info@jeasyui.com - * http://www.gnu.org/licenses/gpl.txt - * http://www.jeasyui.com/license_commercial.php - * - */ -(function($){ -function _1(_2){ -var _3=$.data(_2,"combotree").options; -var _4=$.data(_2,"combotree").tree; -$(_2).addClass("combotree-f"); -$(_2).combo(_3); -var _5=$(_2).combo("panel"); -if(!_4){ -_4=$("
    ").appendTo(_5); -$.data(_2,"combotree").tree=_4; -} -_4.tree($.extend({},_3,{checkbox:_3.multiple,onLoadSuccess:function(_6,_7){ -var _8=$(_2).combotree("getValues"); -if(_3.multiple){ -var _9=_4.tree("getChecked"); -for(var i=0;i<_9.length;i++){ -var id=_9[i].id; -(function(){ -for(var i=0;i<_8.length;i++){ -if(id==_8[i]){ -return; -} -} -_8.push(id); -})(); -} -} -$(_2).combotree("setValues",_8); -_3.onLoadSuccess.call(this,_6,_7); -},onClick:function(_a){ -_d(_2); -$(_2).combo("hidePanel"); -_3.onClick.call(this,_a); -},onCheck:function(_b,_c){ -_d(_2); -_3.onCheck.call(this,_b,_c); -}})); -}; -function _d(_e){ -var _f=$.data(_e,"combotree").options; -var _10=$.data(_e,"combotree").tree; -var vv=[],ss=[]; -if(_f.multiple){ -var _11=_10.tree("getChecked"); -for(var i=0;i<_11.length;i++){ -vv.push(_11[i].id); -ss.push(_11[i].text); -} -}else{ -var _12=_10.tree("getSelected"); -if(_12){ -vv.push(_12.id); -ss.push(_12.text); -} -} -$(_e).combo("setValues",vv).combo("setText",ss.join(_f.separator)); -}; -function _13(_14,_15){ -var _16=$.data(_14,"combotree").options; -var _17=$.data(_14,"combotree").tree; -_17.find("span.tree-checkbox").addClass("tree-checkbox0").removeClass("tree-checkbox1 tree-checkbox2"); -var vv=[],ss=[]; -for(var i=0;i<_15.length;i++){ -var v=_15[i]; -var s=v; -var _18=_17.tree("find",v); -if(_18){ -s=_18.text; -_17.tree("check",_18.target); -_17.tree("select",_18.target); -} -vv.push(v); -ss.push(s); -} -$(_14).combo("setValues",vv).combo("setText",ss.join(_16.separator)); -}; -$.fn.combotree=function(_19,_1a){ -if(typeof _19=="string"){ -var _1b=$.fn.combotree.methods[_19]; -if(_1b){ -return _1b(this,_1a); -}else{ -return this.combo(_19,_1a); -} -} -_19=_19||{}; -return this.each(function(){ -var _1c=$.data(this,"combotree"); -if(_1c){ -$.extend(_1c.options,_19); -}else{ -$.data(this,"combotree",{options:$.extend({},$.fn.combotree.defaults,$.fn.combotree.parseOptions(this),_19)}); -} -_1(this); -}); -}; -$.fn.combotree.methods={options:function(jq){ -var _1d=jq.combo("options"); -return $.extend($.data(jq[0],"combotree").options,{originalValue:_1d.originalValue,disabled:_1d.disabled,readonly:_1d.readonly}); -},tree:function(jq){ -return $.data(jq[0],"combotree").tree; -},loadData:function(jq,_1e){ -return jq.each(function(){ -var _1f=$.data(this,"combotree").options; -_1f.data=_1e; -var _20=$.data(this,"combotree").tree; -_20.tree("loadData",_1e); -}); -},reload:function(jq,url){ -return jq.each(function(){ -var _21=$.data(this,"combotree").options; -var _22=$.data(this,"combotree").tree; -if(url){ -_21.url=url; -} -_22.tree({url:_21.url}); -}); -},setValues:function(jq,_23){ -return jq.each(function(){ -_13(this,_23); -}); -},setValue:function(jq,_24){ -return jq.each(function(){ -_13(this,[_24]); -}); -},clear:function(jq){ -return jq.each(function(){ -var _25=$.data(this,"combotree").tree; -_25.find("div.tree-node-selected").removeClass("tree-node-selected"); -var cc=_25.tree("getChecked"); -for(var i=0;i"]; -for(var i=0;i<_c.length;i++){ -_b.cache[_c[i][0]]={width:_c[i][1]}; -} -var _d=0; -for(var s in _b.cache){ -var _e=_b.cache[s]; -_e.index=_d++; -ss.push(s+"{width:"+_e.width+"}"); -} -ss.push(""); -$(ss.join("\n")).appendTo(cc); -setTimeout(function(){ -cc.children("style:not(:last)").remove(); -},0); -},getRule:function(_f){ -var _10=cc.children("style:last")[0]; -var _11=_10.styleSheet?_10.styleSheet:(_10.sheet||document.styleSheets[document.styleSheets.length-1]); -var _12=_11.cssRules||_11.rules; -return _12[_f]; -},set:function(_13,_14){ -var _15=_b.cache[_13]; -if(_15){ -_15.width=_14; -var _16=this.getRule(_15.index); -if(_16){ -_16.style["width"]=_14; -} -} -},remove:function(_17){ -var tmp=[]; -for(var s in _b.cache){ -if(s.indexOf(_17)==-1){ -tmp.push([s,_b.cache[s].width]); -} -} -_b.cache={}; -this.add(tmp); -},dirty:function(_18){ -if(_18){ -_b.dirty.push(_18); -} -},clean:function(){ -for(var i=0;i<_b.dirty.length;i++){ -this.remove(_b.dirty[i]); -} -_b.dirty=[]; -}}; -}; -function _19(_1a,_1b){ -var _1c=$.data(_1a,"datagrid").options; -var _1d=$.data(_1a,"datagrid").panel; -if(_1b){ -if(_1b.width){ -_1c.width=_1b.width; -} -if(_1b.height){ -_1c.height=_1b.height; -} -} -if(_1c.fit==true){ -var p=_1d.panel("panel").parent(); -_1c.width=p.width(); -_1c.height=p.height(); -} -_1d.panel("resize",{width:_1c.width,height:_1c.height}); -}; -function _1e(_1f){ -var _20=$.data(_1f,"datagrid").options; -var dc=$.data(_1f,"datagrid").dc; -var _21=$.data(_1f,"datagrid").panel; -var _22=_21.width(); -var _23=_21.height(); -var _24=dc.view; -var _25=dc.view1; -var _26=dc.view2; -var _27=_25.children("div.datagrid-header"); -var _28=_26.children("div.datagrid-header"); -var _29=_27.find("table"); -var _2a=_28.find("table"); -_24.width(_22); -var _2b=_27.children("div.datagrid-header-inner").show(); -_25.width(_2b.find("table").width()); -if(!_20.showHeader){ -_2b.hide(); -} -_26.width(_22-_25._outerWidth()); -_25.children("div.datagrid-header,div.datagrid-body,div.datagrid-footer").width(_25.width()); -_26.children("div.datagrid-header,div.datagrid-body,div.datagrid-footer").width(_26.width()); -var hh; -_27.css("height",""); -_28.css("height",""); -_29.css("height",""); -_2a.css("height",""); -hh=Math.max(_29.height(),_2a.height()); -_29.height(hh); -_2a.height(hh); -_27.add(_28)._outerHeight(hh); -if(_20.height!="auto"){ -var _2c=_23-_26.children("div.datagrid-header")._outerHeight()-_26.children("div.datagrid-footer")._outerHeight()-_21.children("div.datagrid-toolbar")._outerHeight(); -_21.children("div.datagrid-pager").each(function(){ -_2c-=$(this)._outerHeight(); -}); -dc.body1.add(dc.body2).children("table.datagrid-btable-frozen").css({position:"absolute",top:dc.header2._outerHeight()}); -var _2d=dc.body2.children("table.datagrid-btable-frozen")._outerHeight(); -_25.add(_26).children("div.datagrid-body").css({marginTop:_2d,height:(_2c-_2d)}); -} -_24.height(_26.height()); -}; -function _2e(_2f,_30,_31){ -var _32=$.data(_2f,"datagrid").data.rows; -var _33=$.data(_2f,"datagrid").options; -var dc=$.data(_2f,"datagrid").dc; -if(!dc.body1.is(":empty")&&(!_33.nowrap||_33.autoRowHeight||_31)){ -if(_30!=undefined){ -var tr1=_33.finder.getTr(_2f,_30,"body",1); -var tr2=_33.finder.getTr(_2f,_30,"body",2); -_34(tr1,tr2); -}else{ -var tr1=_33.finder.getTr(_2f,0,"allbody",1); -var tr2=_33.finder.getTr(_2f,0,"allbody",2); -_34(tr1,tr2); -if(_33.showFooter){ -var tr1=_33.finder.getTr(_2f,0,"allfooter",1); -var tr2=_33.finder.getTr(_2f,0,"allfooter",2); -_34(tr1,tr2); -} -} -} -_1e(_2f); -if(_33.height=="auto"){ -var _35=dc.body1.parent(); -var _36=dc.body2; -var _37=_38(_36); -var _39=_37.height; -if(_37.width>_36.width()){ -_39+=18; -} -_35.height(_39); -_36.height(_39); -dc.view.height(dc.view2.height()); -} -dc.body2.triggerHandler("scroll"); -function _34(_3a,_3b){ -for(var i=0;i<_3b.length;i++){ -var tr1=$(_3a[i]); -var tr2=$(_3b[i]); -tr1.css("height",""); -tr2.css("height",""); -var _3c=Math.max(tr1.height(),tr2.height()); -tr1.css("height",_3c); -tr2.css("height",_3c); -} -}; -function _38(cc){ -var _3d=0; -var _3e=0; -$(cc).children().each(function(){ -var c=$(this); -if(c.is(":visible")){ -_3e+=c._outerHeight(); -if(_3d"); -} -_44(true); -_44(false); -_1e(_40); -function _44(_45){ -var _46=_45?1:2; -var tr=_43.finder.getTr(_40,_41,"body",_46); -(_45?dc.body1:dc.body2).children("table.datagrid-btable-frozen").append(tr); -}; -}; -function _47(_48,_49){ -function _4a(){ -var _4b=[]; -var _4c=[]; -$(_48).children("thead").each(function(){ -var opt=$.parser.parseOptions(this,[{frozen:"boolean"}]); -$(this).find("tr").each(function(){ -var _4d=[]; -$(this).find("th").each(function(){ -var th=$(this); -var col=$.extend({},$.parser.parseOptions(this,["field","align","halign","order",{sortable:"boolean",checkbox:"boolean",resizable:"boolean",fixed:"boolean"},{rowspan:"number",colspan:"number",width:"number"}]),{title:(th.html()||undefined),hidden:(th.attr("hidden")?true:undefined),formatter:(th.attr("formatter")?eval(th.attr("formatter")):undefined),styler:(th.attr("styler")?eval(th.attr("styler")):undefined),sorter:(th.attr("sorter")?eval(th.attr("sorter")):undefined)}); -if(th.attr("editor")){ -var s=$.trim(th.attr("editor")); -if(s.substr(0,1)=="{"){ -col.editor=eval("("+s+")"); -}else{ -col.editor=s; -} -} -_4d.push(col); -}); -opt.frozen?_4b.push(_4d):_4c.push(_4d); -}); -}); -return [_4b,_4c]; -}; -var _4e=$("
    "+"
    "+"
    "+"
    "+"
    "+"
    "+"
    "+"
    "+"
    "+"
    "+""+"
    "+"
    "+"
    "+"
    "+"
    "+"
    "+"
    "+"
    "+""+"
    "+"
    "+"
    "+"
    ").insertAfter(_48); -_4e.panel({doSize:false}); -_4e.panel("panel").addClass("datagrid").bind("_resize",function(e,_4f){ -var _50=$.data(_48,"datagrid").options; -if(_50.fit==true||_4f){ -_19(_48); -setTimeout(function(){ -if($.data(_48,"datagrid")){ -_51(_48); -} -},0); -} -return false; -}); -$(_48).hide().appendTo(_4e.children("div.datagrid-view")); -var cc=_4a(); -var _52=_4e.children("div.datagrid-view"); -var _53=_52.children("div.datagrid-view1"); -var _54=_52.children("div.datagrid-view2"); -var _55=_4e.closest("div.datagrid-view"); -if(!_55.length){ -_55=_52; -} -var ss=_9(_55); -return {panel:_4e,frozenColumns:cc[0],columns:cc[1],dc:{view:_52,view1:_53,view2:_54,header1:_53.children("div.datagrid-header").children("div.datagrid-header-inner"),header2:_54.children("div.datagrid-header").children("div.datagrid-header-inner"),body1:_53.children("div.datagrid-body").children("div.datagrid-body-inner"),body2:_54.children("div.datagrid-body"),footer1:_53.children("div.datagrid-footer").children("div.datagrid-footer-inner"),footer2:_54.children("div.datagrid-footer").children("div.datagrid-footer-inner")},ss:ss}; -}; -function _56(_57){ -var _58=$.data(_57,"datagrid"); -var _59=_58.options; -var dc=_58.dc; -var _5a=_58.panel; -_5a.panel($.extend({},_59,{id:null,doSize:false,onResize:function(_5b,_5c){ -setTimeout(function(){ -if($.data(_57,"datagrid")){ -_1e(_57); -_8d(_57); -_59.onResize.call(_5a,_5b,_5c); -} -},0); -},onExpand:function(){ -_2e(_57); -_59.onExpand.call(_5a); -}})); -_58.rowIdPrefix="datagrid-row-r"+(++_1); -_58.cellClassPrefix="datagrid-cell-c"+_1; -_5d(dc.header1,_59.frozenColumns,true); -_5d(dc.header2,_59.columns,false); -_5e(); -dc.header1.add(dc.header2).css("display",_59.showHeader?"block":"none"); -dc.footer1.add(dc.footer2).css("display",_59.showFooter?"block":"none"); -if(_59.toolbar){ -if($.isArray(_59.toolbar)){ -$("div.datagrid-toolbar",_5a).remove(); -var tb=$("
    ").prependTo(_5a); -var tr=tb.find("tr"); -for(var i=0;i<_59.toolbar.length;i++){ -var btn=_59.toolbar[i]; -if(btn=="-"){ -$("
    ").appendTo(tr); -}else{ -var td=$("").appendTo(tr); -var _5f=$("").appendTo(td); -_5f[0].onclick=eval(btn.handler||function(){ -}); -_5f.linkbutton($.extend({},btn,{plain:true})); -} -} -}else{ -$(_59.toolbar).addClass("datagrid-toolbar").prependTo(_5a); -$(_59.toolbar).show(); -} -}else{ -$("div.datagrid-toolbar",_5a).remove(); -} -$("div.datagrid-pager",_5a).remove(); -if(_59.pagination){ -var _60=$("
    "); -if(_59.pagePosition=="bottom"){ -_60.appendTo(_5a); -}else{ -if(_59.pagePosition=="top"){ -_60.addClass("datagrid-pager-top").prependTo(_5a); -}else{ -var _61=$("
    ").prependTo(_5a); -_60.appendTo(_5a); -_60=_60.add(_61); -} -} -_60.pagination({total:(_59.pageNumber*_59.pageSize),pageNumber:_59.pageNumber,pageSize:_59.pageSize,pageList:_59.pageList,onSelectPage:function(_62,_63){ -_59.pageNumber=_62; -_59.pageSize=_63; -_60.pagination("refresh",{pageNumber:_62,pageSize:_63}); -_16b(_57); -}}); -_59.pageSize=_60.pagination("options").pageSize; -} -function _5d(_64,_65,_66){ -if(!_65){ -return; -} -$(_64).show(); -$(_64).empty(); -var _67=[]; -var _68=[]; -if(_59.sortName){ -_67=_59.sortName.split(","); -_68=_59.sortOrder.split(","); -} -var t=$("
    ").appendTo(_64); -for(var i=0;i<_65.length;i++){ -var tr=$("").appendTo($("tbody",t)); -var _69=_65[i]; -for(var j=0;j<_69.length;j++){ -var col=_69[j]; -var _6a=""; -if(col.rowspan){ -_6a+="rowspan=\""+col.rowspan+"\" "; -} -if(col.colspan){ -_6a+="colspan=\""+col.colspan+"\" "; -} -var td=$("").appendTo(tr); -if(col.checkbox){ -td.attr("field",col.field); -$("
    ").html("").appendTo(td); -}else{ -if(col.field){ -td.attr("field",col.field); -td.append("
    "); -$("span",td).html(col.title); -$("span.datagrid-sort-icon",td).html(" "); -var _6b=td.find("div.datagrid-cell"); -var pos=_2(_67,col.field); -if(pos>=0){ -_6b.addClass("datagrid-sort-"+_68[pos]); -} -if(col.resizable==false){ -_6b.attr("resizable","false"); -} -if(col.width){ -_6b._outerWidth(col.width); -col.boxWidth=parseInt(_6b[0].style.width); -}else{ -col.auto=true; -} -_6b.css("text-align",(col.halign||col.align||"")); -col.cellClass=_58.cellClassPrefix+"-"+col.field.replace(/[\.|\s]/g,"-"); -_6b.addClass(col.cellClass).css("width",""); -}else{ -$("
    ").html(col.title).appendTo(td); -} -} -if(col.hidden){ -td.hide(); -} -} -} -if(_66&&_59.rownumbers){ -var td=$("
    "); -if($("tr",t).length==0){ -td.wrap("").parent().appendTo($("tbody",t)); -}else{ -td.prependTo($("tr:first",t)); -} -} -}; -function _5e(){ -var _6c=[]; -var _6d=_6e(_57,true).concat(_6e(_57)); -for(var i=0;i<_6d.length;i++){ -var col=_6f(_57,_6d[i]); -if(col&&!col.checkbox){ -_6c.push(["."+col.cellClass,col.boxWidth?col.boxWidth+"px":"auto"]); -} -} -_58.ss.add(_6c); -_58.ss.dirty(_58.cellSelectorPrefix); -_58.cellSelectorPrefix="."+_58.cellClassPrefix; -}; -}; -function _70(_71){ -var _72=$.data(_71,"datagrid"); -var _73=_72.panel; -var _74=_72.options; -var dc=_72.dc; -var _75=dc.header1.add(dc.header2); -_75.find("input[type=checkbox]").unbind(".datagrid").bind("click.datagrid",function(e){ -if(_74.singleSelect&&_74.selectOnCheck){ -return false; -} -if($(this).is(":checked")){ -_106(_71); -}else{ -_10c(_71); -} -e.stopPropagation(); -}); -var _76=_75.find("div.datagrid-cell"); -_76.closest("td").unbind(".datagrid").bind("mouseenter.datagrid",function(){ -if(_72.resizing){ -return; -} -$(this).addClass("datagrid-header-over"); -}).bind("mouseleave.datagrid",function(){ -$(this).removeClass("datagrid-header-over"); -}).bind("contextmenu.datagrid",function(e){ -var _77=$(this).attr("field"); -_74.onHeaderContextMenu.call(_71,e,_77); -}); -_76.unbind(".datagrid").bind("click.datagrid",function(e){ -var p1=$(this).offset().left+5; -var p2=$(this).offset().left+$(this)._outerWidth()-5; -if(e.pageXp1){ -var _78=$(this).parent().attr("field"); -var col=_6f(_71,_78); -if(!col.sortable||_72.resizing){ -return; -} -var _79=[]; -var _7a=[]; -if(_74.sortName){ -_79=_74.sortName.split(","); -_7a=_74.sortOrder.split(","); -} -var pos=_2(_79,_78); -var _7b=col.order||"asc"; -if(pos>=0){ -$(this).removeClass("datagrid-sort-asc datagrid-sort-desc"); -var _7c=_7a[pos]=="asc"?"desc":"asc"; -if(_74.multiSort&&_7c==_7b){ -_79.splice(pos,1); -_7a.splice(pos,1); -}else{ -_7a[pos]=_7c; -$(this).addClass("datagrid-sort-"+_7c); -} -}else{ -if(_74.multiSort){ -_79.push(_78); -_7a.push(_7b); -}else{ -_79=[_78]; -_7a=[_7b]; -_76.removeClass("datagrid-sort-asc datagrid-sort-desc"); -} -$(this).addClass("datagrid-sort-"+_7b); -} -_74.sortName=_79.join(","); -_74.sortOrder=_7a.join(","); -if(_74.remoteSort){ -_16b(_71); -}else{ -var _7d=$.data(_71,"datagrid").data; -_c6(_71,_7d); -} -_74.onSortColumn.call(_71,_74.sortName,_74.sortOrder); -} -}).bind("dblclick.datagrid",function(e){ -var p1=$(this).offset().left+5; -var p2=$(this).offset().left+$(this)._outerWidth()-5; -var _7e=_74.resizeHandle=="right"?(e.pageX>p2):(_74.resizeHandle=="left"?(e.pageXp2)); -if(_7e){ -var _7f=$(this).parent().attr("field"); -var col=_6f(_71,_7f); -if(col.resizable==false){ -return; -} -$(_71).datagrid("autoSizeColumn",_7f); -col.auto=false; -} -}); -var _80=_74.resizeHandle=="right"?"e":(_74.resizeHandle=="left"?"w":"e,w"); -_76.each(function(){ -$(this).resizable({handles:_80,disabled:($(this).attr("resizable")?$(this).attr("resizable")=="false":false),minWidth:25,onStartResize:function(e){ -_72.resizing=true; -_75.css("cursor",$("body").css("cursor")); -if(!_72.proxy){ -_72.proxy=$("
    ").appendTo(dc.view); -} -_72.proxy.css({left:e.pageX-$(_73).offset().left-1,display:"none"}); -setTimeout(function(){ -if(_72.proxy){ -_72.proxy.show(); -} -},500); -},onResize:function(e){ -_72.proxy.css({left:e.pageX-$(_73).offset().left-1,display:"block"}); -return false; -},onStopResize:function(e){ -_75.css("cursor",""); -$(this).css("height",""); -$(this)._outerWidth($(this)._outerWidth()); -var _81=$(this).parent().attr("field"); -var col=_6f(_71,_81); -col.width=$(this)._outerWidth(); -col.boxWidth=parseInt(this.style.width); -col.auto=undefined; -$(this).css("width",""); -_51(_71,_81); -_72.proxy.remove(); -_72.proxy=null; -if($(this).parents("div:first.datagrid-header").parent().hasClass("datagrid-view1")){ -_1e(_71); -} -_8d(_71); -_74.onResizeColumn.call(_71,_81,col.width); -setTimeout(function(){ -_72.resizing=false; -},0); -}}); -}); -dc.body1.add(dc.body2).unbind().bind("mouseover",function(e){ -if(_72.resizing){ -return; -} -var tr=$(e.target).closest("tr.datagrid-row"); -if(!_82(tr)){ -return; -} -var _83=_84(tr); -_eb(_71,_83); -e.stopPropagation(); -}).bind("mouseout",function(e){ -var tr=$(e.target).closest("tr.datagrid-row"); -if(!_82(tr)){ -return; -} -var _85=_84(tr); -_74.finder.getTr(_71,_85).removeClass("datagrid-row-over"); -e.stopPropagation(); -}).bind("click",function(e){ -var tt=$(e.target); -var tr=tt.closest("tr.datagrid-row"); -if(!_82(tr)){ -return; -} -var _86=_84(tr); -if(tt.parent().hasClass("datagrid-cell-check")){ -if(_74.singleSelect&&_74.selectOnCheck){ -if(!_74.checkOnSelect){ -_10c(_71,true); -} -_f8(_71,_86); -}else{ -if(tt.is(":checked")){ -_f8(_71,_86); -}else{ -_100(_71,_86); -} -} -}else{ -var row=_74.finder.getRow(_71,_86); -var td=tt.closest("td[field]",tr); -if(td.length){ -var _87=td.attr("field"); -_74.onClickCell.call(_71,_86,_87,row[_87]); -} -if(_74.singleSelect==true){ -_f0(_71,_86); -}else{ -if(tr.hasClass("datagrid-row-selected")){ -_f9(_71,_86); -}else{ -_f0(_71,_86); -} -} -_74.onClickRow.call(_71,_86,row); -} -e.stopPropagation(); -}).bind("dblclick",function(e){ -var tt=$(e.target); -var tr=tt.closest("tr.datagrid-row"); -if(!_82(tr)){ -return; -} -var _88=_84(tr); -var row=_74.finder.getRow(_71,_88); -var td=tt.closest("td[field]",tr); -if(td.length){ -var _89=td.attr("field"); -_74.onDblClickCell.call(_71,_88,_89,row[_89]); -} -_74.onDblClickRow.call(_71,_88,row); -e.stopPropagation(); -}).bind("contextmenu",function(e){ -var tr=$(e.target).closest("tr.datagrid-row"); -if(!_82(tr)){ -return; -} -var _8a=_84(tr); -var row=_74.finder.getRow(_71,_8a); -_74.onRowContextMenu.call(_71,e,_8a,row); -e.stopPropagation(); -}); -dc.body2.bind("scroll",function(){ -var b1=dc.view1.children("div.datagrid-body"); -b1.scrollTop($(this).scrollTop()); -var c1=dc.body1.children(":first"); -var c2=dc.body2.children(":first"); -if(c1.length&&c2.length){ -var _8b=c1.offset().top; -var _8c=c2.offset().top; -if(_8b!=_8c){ -b1.scrollTop(b1.scrollTop()+_8b-_8c); -} -} -dc.view2.children("div.datagrid-header,div.datagrid-footer")._scrollLeft($(this)._scrollLeft()); -dc.body2.children("table.datagrid-btable-frozen").css("left",-$(this)._scrollLeft()); -}); -function _84(tr){ -if(tr.attr("datagrid-row-index")){ -return parseInt(tr.attr("datagrid-row-index")); -}else{ -return tr.attr("node-id"); -} -}; -function _82(tr){ -return tr.length&&tr.parent().length; -}; -}; -function _8d(_8e){ -var _8f=$.data(_8e,"datagrid"); -var _90=_8f.options; -var dc=_8f.dc; -dc.body2.css("overflow-x",_90.fitColumns?"hidden":""); -if(!_90.fitColumns){ -return; -} -if(!_8f.leftWidth){ -_8f.leftWidth=0; -} -var _91=dc.view2.children("div.datagrid-header"); -var _92=0; -var _93; -var _94=_6e(_8e,false); -for(var i=0;i<_94.length;i++){ -var col=_6f(_8e,_94[i]); -if(_95(col)){ -_92+=col.width; -_93=col; -} -} -if(!_92){ -return; -} -if(_93){ -_96(_93,-_8f.leftWidth); -} -var _97=_91.children("div.datagrid-header-inner").show(); -var _98=_91.width()-_91.find("table").width()-_90.scrollbarSize+_8f.leftWidth; -var _99=_98/_92; -if(!_90.showHeader){ -_97.hide(); -} -for(var i=0;i<_94.length;i++){ -var col=_6f(_8e,_94[i]); -if(_95(col)){ -var _9a=parseInt(col.width*_99); -_96(col,_9a); -_98-=_9a; -} -} -_8f.leftWidth=_98; -if(_93){ -_96(_93,_8f.leftWidth); -} -_51(_8e); -function _96(col,_9b){ -col.width+=_9b; -col.boxWidth+=_9b; -}; -function _95(col){ -if(!col.hidden&&!col.checkbox&&!col.auto&&!col.fixed){ -return true; -} -}; -}; -function _9c(_9d,_9e){ -var _9f=$.data(_9d,"datagrid"); -var _a0=_9f.options; -var dc=_9f.dc; -var tmp=$("
    ").appendTo("body"); -if(_9e){ -_19(_9e); -if(_a0.fitColumns){ -_1e(_9d); -_8d(_9d); -} -}else{ -var _a1=false; -var _a2=_6e(_9d,true).concat(_6e(_9d,false)); -for(var i=0;i<_a2.length;i++){ -var _9e=_a2[i]; -var col=_6f(_9d,_9e); -if(col.auto){ -_19(_9e); -_a1=true; -} -} -if(_a1&&_a0.fitColumns){ -_1e(_9d); -_8d(_9d); -} -} -tmp.remove(); -function _19(_a3){ -var _a4=dc.view.find("div.datagrid-header td[field=\""+_a3+"\"] div.datagrid-cell"); -_a4.css("width",""); -var col=$(_9d).datagrid("getColumnOption",_a3); -col.width=undefined; -col.boxWidth=undefined; -col.auto=true; -$(_9d).datagrid("fixColumnSize",_a3); -var _a5=Math.max(_a6("header"),_a6("allbody"),_a6("allfooter")); -_a4._outerWidth(_a5); -col.width=_a5; -col.boxWidth=parseInt(_a4[0].style.width); -_a4.css("width",""); -$(_9d).datagrid("fixColumnSize",_a3); -_a0.onResizeColumn.call(_9d,_a3,col.width); -function _a6(_a7){ -var _a8=0; -if(_a7=="header"){ -_a8=_a9(_a4); -}else{ -_a0.finder.getTr(_9d,0,_a7).find("td[field=\""+_a3+"\"] div.datagrid-cell").each(function(){ -var w=_a9($(this)); -if(_a8b?1:-1); -}; -r=_cd(r1[sn],r2[sn])*(so=="asc"?1:-1); -if(r!=0){ -return r; -} -} -return r; -}); -} -if(_ca.view.onBeforeRender){ -_ca.view.onBeforeRender.call(_ca.view,_c7,_c8.rows); -} -_ca.view.render.call(_ca.view,_c7,dc.body2,false); -_ca.view.render.call(_ca.view,_c7,dc.body1,true); -if(_ca.showFooter){ -_ca.view.renderFooter.call(_ca.view,_c7,dc.footer2,false); -_ca.view.renderFooter.call(_ca.view,_c7,dc.footer1,true); -} -if(_ca.view.onAfterRender){ -_ca.view.onAfterRender.call(_ca.view,_c7); -} -_c9.ss.clean(); -_ca.onLoadSuccess.call(_c7,_c8); -var _ce=$(_c7).datagrid("getPager"); -if(_ce.length){ -var _cf=_ce.pagination("options"); -if(_cf.total!=_c8.total){ -_ce.pagination("refresh",{total:_c8.total}); -if(_ca.pageNumber!=_cf.pageNumber){ -_ca.pageNumber=_cf.pageNumber; -_16b(_c7); -} -} -} -_2e(_c7); -dc.body2.triggerHandler("scroll"); -_d0(); -$(_c7).datagrid("autoSizeColumn"); -function _d0(){ -if(_ca.idField){ -for(var i=0;i<_c8.rows.length;i++){ -var row=_c8.rows[i]; -if(_d1(_c9.selectedRows,row)){ -_ca.finder.getTr(_c7,i).addClass("datagrid-row-selected"); -} -if(_d1(_c9.checkedRows,row)){ -_ca.finder.getTr(_c7,i).find("div.datagrid-cell-check input[type=checkbox]")._propAttr("checked",true); -} -} -} -function _d1(a,r){ -for(var i=0;i_e9.height()-18){ -_e9.scrollTop(_e9.scrollTop()+top+tr._outerHeight()-_e9.height()+18); -} -} -} -}; -function _eb(_ec,_ed){ -var _ee=$.data(_ec,"datagrid"); -var _ef=_ee.options; -_ef.finder.getTr(_ec,_ee.highlightIndex).removeClass("datagrid-row-over"); -_ef.finder.getTr(_ec,_ed).addClass("datagrid-row-over"); -_ee.highlightIndex=_ed; -}; -function _f0(_f1,_f2,_f3){ -var _f4=$.data(_f1,"datagrid"); -var dc=_f4.dc; -var _f5=_f4.options; -var _f6=_f4.selectedRows; -if(_f5.singleSelect){ -_f7(_f1); -_f6.splice(0,_f6.length); -} -if(!_f3&&_f5.checkOnSelect){ -_f8(_f1,_f2,true); -} -var row=_f5.finder.getRow(_f1,_f2); -if(_f5.idField){ -_7(_f6,_f5.idField,row); -} -_f5.finder.getTr(_f1,_f2).addClass("datagrid-row-selected"); -_f5.onSelect.call(_f1,_f2,row); -_e3(_f1,_f2); -}; -function _f9(_fa,_fb,_fc){ -var _fd=$.data(_fa,"datagrid"); -var dc=_fd.dc; -var _fe=_fd.options; -var _ff=$.data(_fa,"datagrid").selectedRows; -if(!_fc&&_fe.checkOnSelect){ -_100(_fa,_fb,true); -} -_fe.finder.getTr(_fa,_fb).removeClass("datagrid-row-selected"); -var row=_fe.finder.getRow(_fa,_fb); -if(_fe.idField){ -_4(_ff,_fe.idField,row[_fe.idField]); -} -_fe.onUnselect.call(_fa,_fb,row); -}; -function _101(_102,_103){ -var _104=$.data(_102,"datagrid"); -var opts=_104.options; -var rows=_104.data.rows; -var _105=$.data(_102,"datagrid").selectedRows; -if(!_103&&opts.checkOnSelect){ -_106(_102,true); -} -opts.finder.getTr(_102,"","allbody").addClass("datagrid-row-selected"); -if(opts.idField){ -for(var _107=0;_107"); -cell.children("table").bind("click dblclick contextmenu",function(e){ -e.stopPropagation(); -}); -$.data(cell[0],"datagrid.editor",{actions:_13c,target:_13c.init(cell.find("td"),_13b),field:_139,type:_13a,oldHtml:_13d}); -} -} -}); -_2e(_137,_138,true); -}; -function _12e(_13f,_140){ -var opts=$.data(_13f,"datagrid").options; -var tr=opts.finder.getTr(_13f,_140); -tr.children("td").each(function(){ -var cell=$(this).find("div.datagrid-editable"); -if(cell.length){ -var ed=$.data(cell[0],"datagrid.editor"); -if(ed.actions.destroy){ -ed.actions.destroy(ed.target); -} -cell.html(ed.oldHtml); -$.removeData(cell[0],"datagrid.editor"); -cell.removeClass("datagrid-editable"); -cell.css("width",""); -} -}); -}; -function _123(_141,_142){ -var tr=$.data(_141,"datagrid").options.finder.getTr(_141,_142); -if(!tr.hasClass("datagrid-row-editing")){ -return true; -} -var vbox=tr.find(".validatebox-text"); -vbox.validatebox("validate"); -vbox.trigger("mouseleave"); -var _143=tr.find(".validatebox-invalid"); -return _143.length==0; -}; -function _144(_145,_146){ -var _147=$.data(_145,"datagrid").insertedRows; -var _148=$.data(_145,"datagrid").deletedRows; -var _149=$.data(_145,"datagrid").updatedRows; -if(!_146){ -var rows=[]; -rows=rows.concat(_147); -rows=rows.concat(_148); -rows=rows.concat(_149); -return rows; -}else{ -if(_146=="inserted"){ -return _147; -}else{ -if(_146=="deleted"){ -return _148; -}else{ -if(_146=="updated"){ -return _149; -} -} -} -} -return []; -}; -function _14a(_14b,_14c){ -var _14d=$.data(_14b,"datagrid"); -var opts=_14d.options; -var data=_14d.data; -var _14e=_14d.insertedRows; -var _14f=_14d.deletedRows; -$(_14b).datagrid("cancelEdit",_14c); -var row=data.rows[_14c]; -if(_2(_14e,row)>=0){ -_4(_14e,row); -}else{ -_14f.push(row); -} -_4(_14d.selectedRows,opts.idField,data.rows[_14c][opts.idField]); -_4(_14d.checkedRows,opts.idField,data.rows[_14c][opts.idField]); -opts.view.deleteRow.call(opts.view,_14b,_14c); -if(opts.height=="auto"){ -_2e(_14b); -} -$(_14b).datagrid("getPager").pagination("refresh",{total:data.total}); -}; -function _150(_151,_152){ -var data=$.data(_151,"datagrid").data; -var view=$.data(_151,"datagrid").options.view; -var _153=$.data(_151,"datagrid").insertedRows; -view.insertRow.call(view,_151,_152.index,_152.row); -_153.push(_152.row); -$(_151).datagrid("getPager").pagination("refresh",{total:data.total}); -}; -function _154(_155,row){ -var data=$.data(_155,"datagrid").data; -var view=$.data(_155,"datagrid").options.view; -var _156=$.data(_155,"datagrid").insertedRows; -view.insertRow.call(view,_155,null,row); -_156.push(row); -$(_155).datagrid("getPager").pagination("refresh",{total:data.total}); -}; -function _157(_158){ -var _159=$.data(_158,"datagrid"); -var data=_159.data; -var rows=data.rows; -var _15a=[]; -for(var i=0;i=0){ -(_167=="s"?_f0:_f8)(_15e,_168,true); -} -} -}; -for(var i=0;i0){ -_c6(this,data); -_157(this); -} -} -_19(this); -_16b(this); -_70(this); -}); -}; -var _179={text:{init:function(_17a,_17b){ -var _17c=$("").appendTo(_17a); -return _17c; -},getValue:function(_17d){ -return $(_17d).val(); -},setValue:function(_17e,_17f){ -$(_17e).val(_17f); -},resize:function(_180,_181){ -$(_180)._outerWidth(_181)._outerHeight(22); -}},textarea:{init:function(_182,_183){ -var _184=$("").appendTo(_182); -return _184; -},getValue:function(_185){ -return $(_185).val(); -},setValue:function(_186,_187){ -$(_186).val(_187); -},resize:function(_188,_189){ -$(_188)._outerWidth(_189); -}},checkbox:{init:function(_18a,_18b){ -var _18c=$("").appendTo(_18a); -_18c.val(_18b.on); -_18c.attr("offval",_18b.off); -return _18c; -},getValue:function(_18d){ -if($(_18d).is(":checked")){ -return $(_18d).val(); -}else{ -return $(_18d).attr("offval"); -} -},setValue:function(_18e,_18f){ -var _190=false; -if($(_18e).val()==_18f){ -_190=true; -} -$(_18e)._propAttr("checked",_190); -}},numberbox:{init:function(_191,_192){ -var _193=$("").appendTo(_191); -_193.numberbox(_192); -return _193; -},destroy:function(_194){ -$(_194).numberbox("destroy"); -},getValue:function(_195){ -$(_195).blur(); -return $(_195).numberbox("getValue"); -},setValue:function(_196,_197){ -$(_196).numberbox("setValue",_197); -},resize:function(_198,_199){ -$(_198)._outerWidth(_199)._outerHeight(22); -}},validatebox:{init:function(_19a,_19b){ -var _19c=$("").appendTo(_19a); -_19c.validatebox(_19b); -return _19c; -},destroy:function(_19d){ -$(_19d).validatebox("destroy"); -},getValue:function(_19e){ -return $(_19e).val(); -},setValue:function(_19f,_1a0){ -$(_19f).val(_1a0); -},resize:function(_1a1,_1a2){ -$(_1a1)._outerWidth(_1a2)._outerHeight(22); -}},datebox:{init:function(_1a3,_1a4){ -var _1a5=$("").appendTo(_1a3); -_1a5.datebox(_1a4); -return _1a5; -},destroy:function(_1a6){ -$(_1a6).datebox("destroy"); -},getValue:function(_1a7){ -return $(_1a7).datebox("getValue"); -},setValue:function(_1a8,_1a9){ -$(_1a8).datebox("setValue",_1a9); -},resize:function(_1aa,_1ab){ -$(_1aa).datebox("resize",_1ab); -}},combobox:{init:function(_1ac,_1ad){ -var _1ae=$("").appendTo(_1ac); -_1ae.combobox(_1ad||{}); -return _1ae; -},destroy:function(_1af){ -$(_1af).combobox("destroy"); -},getValue:function(_1b0){ -var opts=$(_1b0).combobox("options"); -if(opts.multiple){ -return $(_1b0).combobox("getValues").join(opts.separator); -}else{ -return $(_1b0).combobox("getValue"); -} -},setValue:function(_1b1,_1b2){ -var opts=$(_1b1).combobox("options"); -if(opts.multiple){ -if(_1b2){ -$(_1b1).combobox("setValues",_1b2.split(opts.separator)); -}else{ -$(_1b1).combobox("clear"); -} -}else{ -$(_1b1).combobox("setValue",_1b2); -} -},resize:function(_1b3,_1b4){ -$(_1b3).combobox("resize",_1b4); -}},combotree:{init:function(_1b5,_1b6){ -var _1b7=$("").appendTo(_1b5); -_1b7.combotree(_1b6); -return _1b7; -},destroy:function(_1b8){ -$(_1b8).combotree("destroy"); -},getValue:function(_1b9){ -return $(_1b9).combotree("getValue"); -},setValue:function(_1ba,_1bb){ -$(_1ba).combotree("setValue",_1bb); -},resize:function(_1bc,_1bd){ -$(_1bc).combotree("resize",_1bd); -}}}; -$.fn.datagrid.methods={options:function(jq){ -var _1be=$.data(jq[0],"datagrid").options; -var _1bf=$.data(jq[0],"datagrid").panel.panel("options"); -var opts=$.extend(_1be,{width:_1bf.width,height:_1bf.height,closed:_1bf.closed,collapsed:_1bf.collapsed,minimized:_1bf.minimized,maximized:_1bf.maximized}); -return opts; -},getPanel:function(jq){ -return $.data(jq[0],"datagrid").panel; -},getPager:function(jq){ -return $.data(jq[0],"datagrid").panel.children("div.datagrid-pager"); -},getColumnFields:function(jq,_1c0){ -return _6e(jq[0],_1c0); -},getColumnOption:function(jq,_1c1){ -return _6f(jq[0],_1c1); -},resize:function(jq,_1c2){ -return jq.each(function(){ -_19(this,_1c2); -}); -},load:function(jq,_1c3){ -return jq.each(function(){ -var opts=$(this).datagrid("options"); -opts.pageNumber=1; -var _1c4=$(this).datagrid("getPager"); -_1c4.pagination("refresh",{pageNumber:1}); -_16b(this,_1c3); -}); -},reload:function(jq,_1c5){ -return jq.each(function(){ -_16b(this,_1c5); -}); -},reloadFooter:function(jq,_1c6){ -return jq.each(function(){ -var opts=$.data(this,"datagrid").options; -var dc=$.data(this,"datagrid").dc; -if(_1c6){ -$.data(this,"datagrid").footer=_1c6; -} -if(opts.showFooter){ -opts.view.renderFooter.call(opts.view,this,dc.footer2,false); -opts.view.renderFooter.call(opts.view,this,dc.footer1,true); -if(opts.view.onAfterRender){ -opts.view.onAfterRender.call(opts.view,this); -} -$(this).datagrid("fixRowHeight"); -} -}); -},loading:function(jq){ -return jq.each(function(){ -var opts=$.data(this,"datagrid").options; -$(this).datagrid("getPager").pagination("loading"); -if(opts.loadMsg){ -var _1c7=$(this).datagrid("getPanel"); -if(!_1c7.children("div.datagrid-mask").length){ -$("
    ").appendTo(_1c7); -var msg=$("
    ").html(opts.loadMsg).appendTo(_1c7); -msg._outerHeight(40); -msg.css({marginLeft:(-msg.outerWidth()/2),lineHeight:(msg.height()+"px")}); -} -} -}); -},loaded:function(jq){ -return jq.each(function(){ -$(this).datagrid("getPager").pagination("loaded"); -var _1c8=$(this).datagrid("getPanel"); -_1c8.children("div.datagrid-mask-msg").remove(); -_1c8.children("div.datagrid-mask").remove(); -}); -},fitColumns:function(jq){ -return jq.each(function(){ -_8d(this); -}); -},fixColumnSize:function(jq,_1c9){ -return jq.each(function(){ -_51(this,_1c9); -}); -},fixRowHeight:function(jq,_1ca){ -return jq.each(function(){ -_2e(this,_1ca); -}); -},freezeRow:function(jq,_1cb){ -return jq.each(function(){ -_3f(this,_1cb); -}); -},autoSizeColumn:function(jq,_1cc){ -return jq.each(function(){ -_9c(this,_1cc); -}); -},loadData:function(jq,data){ -return jq.each(function(){ -_c6(this,data); -_157(this); -}); -},getData:function(jq){ -return $.data(jq[0],"datagrid").data; -},getRows:function(jq){ -return $.data(jq[0],"datagrid").data.rows; -},getFooterRows:function(jq){ -return $.data(jq[0],"datagrid").footer; -},getRowIndex:function(jq,id){ -return _d2(jq[0],id); -},getChecked:function(jq){ -return _de(jq[0]); -},getSelected:function(jq){ -var rows=_d7(jq[0]); -return rows.length>0?rows[0]:null; -},getSelections:function(jq){ -return _d7(jq[0]); -},clearSelections:function(jq){ -return jq.each(function(){ -var _1cd=$.data(this,"datagrid").selectedRows; -_1cd.splice(0,_1cd.length); -_f7(this); -}); -},clearChecked:function(jq){ -return jq.each(function(){ -var _1ce=$.data(this,"datagrid").checkedRows; -_1ce.splice(0,_1ce.length); -_10c(this); -}); -},scrollTo:function(jq,_1cf){ -return jq.each(function(){ -_e3(this,_1cf); -}); -},highlightRow:function(jq,_1d0){ -return jq.each(function(){ -_eb(this,_1d0); -_e3(this,_1d0); -}); -},selectAll:function(jq){ -return jq.each(function(){ -_101(this); -}); -},unselectAll:function(jq){ -return jq.each(function(){ -_f7(this); -}); -},selectRow:function(jq,_1d1){ -return jq.each(function(){ -_f0(this,_1d1); -}); -},selectRecord:function(jq,id){ -return jq.each(function(){ -var opts=$.data(this,"datagrid").options; -if(opts.idField){ -var _1d2=_d2(this,id); -if(_1d2>=0){ -$(this).datagrid("selectRow",_1d2); -} -} -}); -},unselectRow:function(jq,_1d3){ -return jq.each(function(){ -_f9(this,_1d3); -}); -},checkRow:function(jq,_1d4){ -return jq.each(function(){ -_f8(this,_1d4); -}); -},uncheckRow:function(jq,_1d5){ -return jq.each(function(){ -_100(this,_1d5); -}); -},checkAll:function(jq){ -return jq.each(function(){ -_106(this); -}); -},uncheckAll:function(jq){ -return jq.each(function(){ -_10c(this); -}); -},beginEdit:function(jq,_1d6){ -return jq.each(function(){ -_11e(this,_1d6); -}); -},endEdit:function(jq,_1d7){ -return jq.each(function(){ -_124(this,_1d7,false); -}); -},cancelEdit:function(jq,_1d8){ -return jq.each(function(){ -_124(this,_1d8,true); -}); -},getEditors:function(jq,_1d9){ -return _12f(jq[0],_1d9); -},getEditor:function(jq,_1da){ -return _133(jq[0],_1da); -},refreshRow:function(jq,_1db){ -return jq.each(function(){ -var opts=$.data(this,"datagrid").options; -opts.view.refreshRow.call(opts.view,this,_1db); -}); -},validateRow:function(jq,_1dc){ -return _123(jq[0],_1dc); -},updateRow:function(jq,_1dd){ -return jq.each(function(){ -var opts=$.data(this,"datagrid").options; -opts.view.updateRow.call(opts.view,this,_1dd.index,_1dd.row); -}); -},appendRow:function(jq,row){ -return jq.each(function(){ -_154(this,row); -}); -},insertRow:function(jq,_1de){ -return jq.each(function(){ -_150(this,_1de); -}); -},deleteRow:function(jq,_1df){ -return jq.each(function(){ -_14a(this,_1df); -}); -},getChanges:function(jq,_1e0){ -return _144(jq[0],_1e0); -},acceptChanges:function(jq){ -return jq.each(function(){ -_15b(this); -}); -},rejectChanges:function(jq){ -return jq.each(function(){ -_15d(this); -}); -},mergeCells:function(jq,_1e1){ -return jq.each(function(){ -_171(this,_1e1); -}); -},showColumn:function(jq,_1e2){ -return jq.each(function(){ -var _1e3=$(this).datagrid("getPanel"); -_1e3.find("td[field=\""+_1e2+"\"]").show(); -$(this).datagrid("getColumnOption",_1e2).hidden=false; -$(this).datagrid("fitColumns"); -}); -},hideColumn:function(jq,_1e4){ -return jq.each(function(){ -var _1e5=$(this).datagrid("getPanel"); -_1e5.find("td[field=\""+_1e4+"\"]").hide(); -$(this).datagrid("getColumnOption",_1e4).hidden=true; -$(this).datagrid("fitColumns"); -}); -}}; -$.fn.datagrid.parseOptions=function(_1e6){ -var t=$(_1e6); -return $.extend({},$.fn.panel.parseOptions(_1e6),$.parser.parseOptions(_1e6,["url","toolbar","idField","sortName","sortOrder","pagePosition","resizeHandle",{fitColumns:"boolean",autoRowHeight:"boolean",striped:"boolean",nowrap:"boolean"},{rownumbers:"boolean",singleSelect:"boolean",checkOnSelect:"boolean",selectOnCheck:"boolean"},{pagination:"boolean",pageSize:"number",pageNumber:"number"},{multiSort:"boolean",remoteSort:"boolean",showHeader:"boolean",showFooter:"boolean"},{scrollbarSize:"number"}]),{pageList:(t.attr("pageList")?eval(t.attr("pageList")):undefined),loadMsg:(t.attr("loadMsg")!=undefined?t.attr("loadMsg"):undefined),rowStyler:(t.attr("rowStyler")?eval(t.attr("rowStyler")):undefined)}); -}; -$.fn.datagrid.parseData=function(_1e7){ -var t=$(_1e7); -var data={total:0,rows:[]}; -var _1e8=t.datagrid("getColumnFields",true).concat(t.datagrid("getColumnFields",false)); -t.find("tbody tr").each(function(){ -data.total++; -var row={}; -$.extend(row,$.parser.parseOptions(this,["iconCls","state"])); -for(var i=0;i<_1e8.length;i++){ -row[_1e8[i]]=$(this).find("td:eq("+i+")").html(); -} -data.rows.push(row); -}); -return data; -}; -var _1e9={render:function(_1ea,_1eb,_1ec){ -var _1ed=$.data(_1ea,"datagrid"); -var opts=_1ed.options; -var rows=_1ed.data.rows; -var _1ee=$(_1ea).datagrid("getColumnFields",_1ec); -if(_1ec){ -if(!(opts.rownumbers||(opts.frozenColumns&&opts.frozenColumns.length))){ -return; -} -} -var _1ef=[""]; -for(var i=0;i"); -_1ef.push(this.renderRow.call(this,_1ea,_1ee,_1ec,i,rows[i])); -_1ef.push(""); -} -_1ef.push("
    "); -$(_1eb).html(_1ef.join("")); -},renderFooter:function(_1f4,_1f5,_1f6){ -var opts=$.data(_1f4,"datagrid").options; -var rows=$.data(_1f4,"datagrid").footer||[]; -var _1f7=$(_1f4).datagrid("getColumnFields",_1f6); -var _1f8=[""]; -for(var i=0;i"); -_1f8.push(this.renderRow.call(this,_1f4,_1f7,_1f6,i,rows[i])); -_1f8.push(""); -} -_1f8.push("
    "); -$(_1f5).html(_1f8.join("")); -},renderRow:function(_1f9,_1fa,_1fb,_1fc,_1fd){ -var opts=$.data(_1f9,"datagrid").options; -var cc=[]; -if(_1fb&&opts.rownumbers){ -var _1fe=_1fc+1; -if(opts.pagination){ -_1fe+=(opts.pageNumber-1)*opts.pageSize; -} -cc.push("
    "+_1fe+"
    "); -} -for(var i=0;i<_1fa.length;i++){ -var _1ff=_1fa[i]; -var col=$(_1f9).datagrid("getColumnOption",_1ff); -if(col){ -var _200=_1fd[_1ff]; -var css=col.styler?(col.styler(_200,_1fd,_1fc)||""):""; -var _201=""; -var _202=""; -if(typeof css=="string"){ -_202=css; -}else{ -if(cc){ -_201=css["class"]||""; -_202=css["style"]||""; -} -} -var cls=_201?"class=\""+_201+"\"":""; -var _203=col.hidden?"style=\"display:none;"+_202+"\"":(_202?"style=\""+_202+"\"":""); -cc.push(""); -if(col.checkbox){ -var _203=""; -}else{ -var _203=_202; -if(col.align){ -_203+=";text-align:"+col.align+";"; -} -if(!opts.nowrap){ -_203+=";white-space:normal;height:auto;"; -}else{ -if(opts.autoRowHeight){ -_203+=";height:auto;"; -} -} -} -cc.push("
    "); -if(col.checkbox){ -cc.push(""); -}else{ -if(col.formatter){ -cc.push(col.formatter(_200,_1fd,_1fc)); -}else{ -cc.push(_200); -} -} -cc.push("
    "); -cc.push(""); -} -} -return cc.join(""); -},refreshRow:function(_204,_205){ -this.updateRow.call(this,_204,_205,{}); -},updateRow:function(_206,_207,row){ -var opts=$.data(_206,"datagrid").options; -var rows=$(_206).datagrid("getRows"); -$.extend(rows[_207],row); -var css=opts.rowStyler?opts.rowStyler.call(_206,_207,rows[_207]):""; -var _208=""; -var _209=""; -if(typeof css=="string"){ -_209=css; -}else{ -if(css){ -_208=css["class"]||""; -_209=css["style"]||""; -} -} -var _208="datagrid-row "+(_207%2&&opts.striped?"datagrid-row-alt ":" ")+_208; -function _20a(_20b){ -var _20c=$(_206).datagrid("getColumnFields",_20b); -var tr=opts.finder.getTr(_206,_207,"body",(_20b?1:2)); -var _20d=tr.find("div.datagrid-cell-check input[type=checkbox]").is(":checked"); -tr.html(this.renderRow.call(this,_206,_20c,_20b,_207,rows[_207])); -tr.attr("style",_209).attr("class",tr.hasClass("datagrid-row-selected")?_208+" datagrid-row-selected":_208); -if(_20d){ -tr.find("div.datagrid-cell-check input[type=checkbox]")._propAttr("checked",true); -} -}; -_20a.call(this,true); -_20a.call(this,false); -$(_206).datagrid("fixRowHeight",_207); -},insertRow:function(_20e,_20f,row){ -var _210=$.data(_20e,"datagrid"); -var opts=_210.options; -var dc=_210.dc; -var data=_210.data; -if(_20f==undefined||_20f==null){ -_20f=data.rows.length; -} -if(_20f>data.rows.length){ -_20f=data.rows.length; -} -function _211(_212){ -var _213=_212?1:2; -for(var i=data.rows.length-1;i>=_20f;i--){ -var tr=opts.finder.getTr(_20e,i,"body",_213); -tr.attr("datagrid-row-index",i+1); -tr.attr("id",_210.rowIdPrefix+"-"+_213+"-"+(i+1)); -if(_212&&opts.rownumbers){ -var _214=i+2; -if(opts.pagination){ -_214+=(opts.pageNumber-1)*opts.pageSize; -} -tr.find("div.datagrid-cell-rownumber").html(_214); -} -if(opts.striped){ -tr.removeClass("datagrid-row-alt").addClass((i+1)%2?"datagrid-row-alt":""); -} -} -}; -function _215(_216){ -var _217=_216?1:2; -var _218=$(_20e).datagrid("getColumnFields",_216); -var _219=_210.rowIdPrefix+"-"+_217+"-"+_20f; -var tr=""; -if(_20f>=data.rows.length){ -if(data.rows.length){ -opts.finder.getTr(_20e,"","last",_217).after(tr); -}else{ -var cc=_216?dc.body1:dc.body2; -cc.html(""+tr+"
    "); -} -}else{ -opts.finder.getTr(_20e,_20f+1,"body",_217).before(tr); -} -}; -_211.call(this,true); -_211.call(this,false); -_215.call(this,true); -_215.call(this,false); -data.total+=1; -data.rows.splice(_20f,0,row); -this.refreshRow.call(this,_20e,_20f); -},deleteRow:function(_21a,_21b){ -var _21c=$.data(_21a,"datagrid"); -var opts=_21c.options; -var data=_21c.data; -function _21d(_21e){ -var _21f=_21e?1:2; -for(var i=_21b+1;itable>tbody>tr[datagrid-row-index="+_22a+"]"); -} -return tr; -}else{ -if(type=="footer"){ -return (_22b==1?dc.footer1:dc.footer2).find(">table>tbody>tr[datagrid-row-index="+_22a+"]"); -}else{ -if(type=="selected"){ -return (_22b==1?dc.body1:dc.body2).find(">table>tbody>tr.datagrid-row-selected"); -}else{ -if(type=="highlight"){ -return (_22b==1?dc.body1:dc.body2).find(">table>tbody>tr.datagrid-row-over"); -}else{ -if(type=="checked"){ -return (_22b==1?dc.body1:dc.body2).find(">table>tbody>tr.datagrid-row-checked"); -}else{ -if(type=="last"){ -return (_22b==1?dc.body1:dc.body2).find(">table>tbody>tr[datagrid-row-index]:last"); -}else{ -if(type=="allbody"){ -return (_22b==1?dc.body1:dc.body2).find(">table>tbody>tr[datagrid-row-index]"); -}else{ -if(type=="allfooter"){ -return (_22b==1?dc.footer1:dc.footer2).find(">table>tbody>tr[datagrid-row-index]"); -} -} -} -} -} -} -} -} -} -},getRow:function(_22d,p){ -var _22e=(typeof p=="object")?p.attr("datagrid-row-index"):p; -return $.data(_22d,"datagrid").data.rows[parseInt(_22e)]; -}},view:_1e9,onBeforeLoad:function(_22f){ -},onLoadSuccess:function(){ -},onLoadError:function(){ -},onClickRow:function(_230,_231){ -},onDblClickRow:function(_232,_233){ -},onClickCell:function(_234,_235,_236){ -},onDblClickCell:function(_237,_238,_239){ -},onSortColumn:function(sort,_23a){ -},onResizeColumn:function(_23b,_23c){ -},onSelect:function(_23d,_23e){ -},onUnselect:function(_23f,_240){ -},onSelectAll:function(rows){ -},onUnselectAll:function(rows){ -},onCheck:function(_241,_242){ -},onUncheck:function(_243,_244){ -},onCheckAll:function(rows){ -},onUncheckAll:function(rows){ -},onBeforeEdit:function(_245,_246){ -},onAfterEdit:function(_247,_248,_249){ -},onCancelEdit:function(_24a,_24b){ -},onHeaderContextMenu:function(e,_24c){ -},onRowContextMenu:function(e,_24d,_24e){ -}}); -})(jQuery); - diff --git a/src/main/webapp/js/easyui-1.3.5/plugins/jquery.datebox.js b/src/main/webapp/js/easyui-1.3.5/plugins/jquery.datebox.js deleted file mode 100644 index 9112d206..00000000 --- a/src/main/webapp/js/easyui-1.3.5/plugins/jquery.datebox.js +++ /dev/null @@ -1,157 +0,0 @@ -/** - * jQuery EasyUI 1.3.5 - * - * Copyright (c) 2009-2013 www.jeasyui.com. All rights reserved. - * - * Licensed under the GPL or commercial licenses - * To use it on other terms please contact us: info@jeasyui.com - * http://www.gnu.org/licenses/gpl.txt - * http://www.jeasyui.com/license_commercial.php - * - */ -(function($){ -function _1(_2){ -var _3=$.data(_2,"datebox"); -var _4=_3.options; -$(_2).addClass("datebox-f").combo($.extend({},_4,{onShowPanel:function(){ -_5(); -_10(_2,$(_2).datebox("getText")); -_4.onShowPanel.call(_2); -}})); -$(_2).combo("textbox").parent().addClass("datebox"); -if(!_3.calendar){ -_6(); -} -function _6(){ -var _7=$(_2).combo("panel").css("overflow","hidden"); -var cc=$("
    ").appendTo(_7); -if(_4.sharedCalendar){ -_3.calendar=$(_4.sharedCalendar).appendTo(cc); -if(!_3.calendar.hasClass("calendar")){ -_3.calendar.calendar(); -} -}else{ -_3.calendar=$("
    ").appendTo(cc).calendar(); -} -$.extend(_3.calendar.calendar("options"),{fit:true,border:false,onSelect:function(_8){ -var _9=$(this.target).datebox("options"); -_10(this.target,_9.formatter(_8)); -$(this.target).combo("hidePanel"); -_9.onSelect.call(_2,_8); -}}); -_10(_2,_4.value); -var _a=$("
    ").appendTo(_7); -var tr=_a.find("tr"); -for(var i=0;i<_4.buttons.length;i++){ -var td=$("").appendTo(tr); -var _b=_4.buttons[i]; -var t=$("").html($.isFunction(_b.text)?_b.text(_2):_b.text).appendTo(td); -t.bind("click",{target:_2,handler:_b.handler},function(e){ -e.data.handler.call(this,e.data.target); -}); -} -tr.find("td").css("width",(100/_4.buttons.length)+"%"); -}; -function _5(){ -var _c=$(_2).combo("panel"); -var cc=_c.children("div.datebox-calendar-inner"); -_c.children()._outerWidth(_c.width()); -_3.calendar.appendTo(cc); -_3.calendar[0].target=_2; -if(_4.panelHeight!="auto"){ -var _d=_c.height(); -_c.children().not(cc).each(function(){ -_d-=$(this).outerHeight(); -}); -cc._outerHeight(_d); -} -_3.calendar.calendar("resize"); -}; -}; -function _e(_f,q){ -_10(_f,q); -}; -function _11(_12){ -var _13=$.data(_12,"datebox"); -var _14=_13.options; -var _15=_14.formatter(_13.calendar.calendar("options").current); -_10(_12,_15); -$(_12).combo("hidePanel"); -}; -function _10(_16,_17){ -var _18=$.data(_16,"datebox"); -var _19=_18.options; -$(_16).combo("setValue",_17).combo("setText",_17); -_18.calendar.calendar("moveTo",_19.parser(_17)); -}; -$.fn.datebox=function(_1a,_1b){ -if(typeof _1a=="string"){ -var _1c=$.fn.datebox.methods[_1a]; -if(_1c){ -return _1c(this,_1b); -}else{ -return this.combo(_1a,_1b); -} -} -_1a=_1a||{}; -return this.each(function(){ -var _1d=$.data(this,"datebox"); -if(_1d){ -$.extend(_1d.options,_1a); -}else{ -$.data(this,"datebox",{options:$.extend({},$.fn.datebox.defaults,$.fn.datebox.parseOptions(this),_1a)}); -} -_1(this); -}); -}; -$.fn.datebox.methods={options:function(jq){ -var _1e=jq.combo("options"); -return $.extend($.data(jq[0],"datebox").options,{originalValue:_1e.originalValue,disabled:_1e.disabled,readonly:_1e.readonly}); -},calendar:function(jq){ -return $.data(jq[0],"datebox").calendar; -},setValue:function(jq,_1f){ -return jq.each(function(){ -_10(this,_1f); -}); -},reset:function(jq){ -return jq.each(function(){ -var _20=$(this).datebox("options"); -$(this).datebox("setValue",_20.originalValue); -}); -}}; -$.fn.datebox.parseOptions=function(_21){ -return $.extend({},$.fn.combo.parseOptions(_21),$.parser.parseOptions(_21,["sharedCalendar"])); -}; -$.fn.datebox.defaults=$.extend({},$.fn.combo.defaults,{panelWidth:180,panelHeight:"auto",sharedCalendar:null,keyHandler:{up:function(e){ -},down:function(e){ -},left:function(e){ -},right:function(e){ -},enter:function(e){ -_11(this); -},query:function(q,e){ -_e(this,q); -}},currentText:"Today",closeText:"Close",okText:"Ok",buttons:[{text:function(_22){ -return $(_22).datebox("options").currentText; -},handler:function(_23){ -$(_23).datebox("calendar").calendar({year:new Date().getFullYear(),month:new Date().getMonth()+1,current:new Date()}); -_11(_23); -}},{text:function(_24){ -return $(_24).datebox("options").closeText; -},handler:function(_25){ -$(this).closest("div.combo-panel").panel("close"); -}}],formatter:function(_26){ -var y=_26.getFullYear(); -var m=_26.getMonth()+1; -var d=_26.getDate(); -return m+"/"+d+"/"+y; -},parser:function(s){ -var t=Date.parse(s); -if(!isNaN(t)){ -return new Date(t); -}else{ -return new Date(); -} -},onSelect:function(_27){ -}}); -})(jQuery); - diff --git a/src/main/webapp/js/easyui-1.3.5/plugins/jquery.datetimebox.js b/src/main/webapp/js/easyui-1.3.5/plugins/jquery.datetimebox.js deleted file mode 100644 index 6b232edb..00000000 --- a/src/main/webapp/js/easyui-1.3.5/plugins/jquery.datetimebox.js +++ /dev/null @@ -1,166 +0,0 @@ -/** - * jQuery EasyUI 1.3.5 - * - * Copyright (c) 2009-2013 www.jeasyui.com. All rights reserved. - * - * Licensed under the GPL or commercial licenses - * To use it on other terms please contact us: info@jeasyui.com - * http://www.gnu.org/licenses/gpl.txt - * http://www.jeasyui.com/license_commercial.php - * - */ -(function($){ -function _1(_2){ -var _3=$.data(_2,"datetimebox"); -var _4=_3.options; -$(_2).datebox($.extend({},_4,{onShowPanel:function(){ -var _5=$(_2).datetimebox("getValue"); -_8(_2,_5,true); -_4.onShowPanel.call(_2); -},formatter:$.fn.datebox.defaults.formatter,parser:$.fn.datebox.defaults.parser})); -$(_2).removeClass("datebox-f").addClass("datetimebox-f"); -$(_2).datebox("calendar").calendar({onSelect:function(_6){ -_4.onSelect.call(_2,_6); -}}); -var _7=$(_2).datebox("panel"); -if(!_3.spinner){ -var p=$("
    ").insertAfter(_7.children("div.datebox-calendar-inner")); -_3.spinner=p.children("input"); -} -_3.spinner.timespinner({showSeconds:_4.showSeconds,separator:_4.timeSeparator}).unbind(".datetimebox").bind("mousedown.datetimebox",function(e){ -e.stopPropagation(); -}); -_8(_2,_4.value); -}; -function _9(_a){ -var c=$(_a).datetimebox("calendar"); -var t=$(_a).datetimebox("spinner"); -var _b=c.calendar("options").current; -return new Date(_b.getFullYear(),_b.getMonth(),_b.getDate(),t.timespinner("getHours"),t.timespinner("getMinutes"),t.timespinner("getSeconds")); -}; -function _c(_d,q){ -_8(_d,q,true); -}; -function _e(_f){ -var _10=$.data(_f,"datetimebox").options; -var _11=_9(_f); -_8(_f,_10.formatter.call(_f,_11)); -$(_f).combo("hidePanel"); -}; -function _8(_12,_13,_14){ -var _15=$.data(_12,"datetimebox").options; -$(_12).combo("setValue",_13); -if(!_14){ -if(_13){ -var _16=_15.parser.call(_12,_13); -$(_12).combo("setValue",_15.formatter.call(_12,_16)); -$(_12).combo("setText",_15.formatter.call(_12,_16)); -}else{ -$(_12).combo("setText",_13); -} -} -var _16=_15.parser.call(_12,_13); -$(_12).datetimebox("calendar").calendar("moveTo",_16); -$(_12).datetimebox("spinner").timespinner("setValue",_17(_16)); -function _17(_18){ -function _19(_1a){ -return (_1a<10?"0":"")+_1a; -}; -var tt=[_19(_18.getHours()),_19(_18.getMinutes())]; -if(_15.showSeconds){ -tt.push(_19(_18.getSeconds())); -} -return tt.join($(_12).datetimebox("spinner").timespinner("options").separator); -}; -}; -$.fn.datetimebox=function(_1b,_1c){ -if(typeof _1b=="string"){ -var _1d=$.fn.datetimebox.methods[_1b]; -if(_1d){ -return _1d(this,_1c); -}else{ -return this.datebox(_1b,_1c); -} -} -_1b=_1b||{}; -return this.each(function(){ -var _1e=$.data(this,"datetimebox"); -if(_1e){ -$.extend(_1e.options,_1b); -}else{ -$.data(this,"datetimebox",{options:$.extend({},$.fn.datetimebox.defaults,$.fn.datetimebox.parseOptions(this),_1b)}); -} -_1(this); -}); -}; -$.fn.datetimebox.methods={options:function(jq){ -var _1f=jq.datebox("options"); -return $.extend($.data(jq[0],"datetimebox").options,{originalValue:_1f.originalValue,disabled:_1f.disabled,readonly:_1f.readonly}); -},spinner:function(jq){ -return $.data(jq[0],"datetimebox").spinner; -},setValue:function(jq,_20){ -return jq.each(function(){ -_8(this,_20); -}); -},reset:function(jq){ -return jq.each(function(){ -var _21=$(this).datetimebox("options"); -$(this).datetimebox("setValue",_21.originalValue); -}); -}}; -$.fn.datetimebox.parseOptions=function(_22){ -var t=$(_22); -return $.extend({},$.fn.datebox.parseOptions(_22),$.parser.parseOptions(_22,["timeSeparator",{showSeconds:"boolean"}])); -}; -$.fn.datetimebox.defaults=$.extend({},$.fn.datebox.defaults,{showSeconds:true,timeSeparator:":",keyHandler:{up:function(e){ -},down:function(e){ -},left:function(e){ -},right:function(e){ -},enter:function(e){ -_e(this); -},query:function(q,e){ -_c(this,q); -}},buttons:[{text:function(_23){ -return $(_23).datetimebox("options").currentText; -},handler:function(_24){ -$(_24).datetimebox("calendar").calendar({year:new Date().getFullYear(),month:new Date().getMonth()+1,current:new Date()}); -_e(_24); -}},{text:function(_25){ -return $(_25).datetimebox("options").okText; -},handler:function(_26){ -_e(_26); -}},{text:function(_27){ -return $(_27).datetimebox("options").closeText; -},handler:function(_28){ -$(this).closest("div.combo-panel").panel("close"); -}}],formatter:function(_29){ -var h=_29.getHours(); -var M=_29.getMinutes(); -var s=_29.getSeconds(); -function _2a(_2b){ -return (_2b<10?"0":"")+_2b; -}; -var _2c=$(this).datetimebox("spinner").timespinner("options").separator; -var r=$.fn.datebox.defaults.formatter(_29)+" "+_2a(h)+_2c+_2a(M); -if($(this).datetimebox("options").showSeconds){ -r+=_2c+_2a(s); -} -return r; -},parser:function(s){ -if($.trim(s)==""){ -return new Date(); -} -var dt=s.split(" "); -var d=$.fn.datebox.defaults.parser(dt[0]); -if(dt.length<2){ -return d; -} -var _2d=$(this).datetimebox("spinner").timespinner("options").separator; -var tt=dt[1].split(_2d); -var _2e=parseInt(tt[0],10)||0; -var _2f=parseInt(tt[1],10)||0; -var _30=parseInt(tt[2],10)||0; -return new Date(d.getFullYear(),d.getMonth(),d.getDate(),_2e,_2f,_30); -}}); -})(jQuery); - diff --git a/src/main/webapp/js/easyui-1.3.5/plugins/jquery.dialog.js b/src/main/webapp/js/easyui-1.3.5/plugins/jquery.dialog.js deleted file mode 100644 index b88dec41..00000000 --- a/src/main/webapp/js/easyui-1.3.5/plugins/jquery.dialog.js +++ /dev/null @@ -1,141 +0,0 @@ -/** - * jQuery EasyUI 1.3.5 - * - * Copyright (c) 2009-2013 www.jeasyui.com. All rights reserved. - * - * Licensed under the GPL or commercial licenses - * To use it on other terms please contact us: info@jeasyui.com - * http://www.gnu.org/licenses/gpl.txt - * http://www.jeasyui.com/license_commercial.php - * - */ -(function($){ -function _1(_2){ -var cp=document.createElement("div"); -while(_2.firstChild){ -cp.appendChild(_2.firstChild); -} -_2.appendChild(cp); -var _3=$(cp); -_3.attr("style",$(_2).attr("style")); -$(_2).removeAttr("style").css("overflow","hidden"); -_3.panel({border:false,doSize:false,bodyCls:"dialog-content"}); -return _3; -}; -function _4(_5){ -var _6=$.data(_5,"dialog").options; -var _7=$.data(_5,"dialog").contentPanel; -if(_6.toolbar){ -if($.isArray(_6.toolbar)){ -$(_5).find("div.dialog-toolbar").remove(); -var _8=$("
    ").prependTo(_5); -var tr=_8.find("tr"); -for(var i=0;i<_6.toolbar.length;i++){ -var _9=_6.toolbar[i]; -if(_9=="-"){ -$("
    ").appendTo(tr); -}else{ -var td=$("").appendTo(tr); -var _a=$("").appendTo(td); -_a[0].onclick=eval(_9.handler||function(){ -}); -_a.linkbutton($.extend({},_9,{plain:true})); -} -} -}else{ -$(_6.toolbar).addClass("dialog-toolbar").prependTo(_5); -$(_6.toolbar).show(); -} -}else{ -$(_5).find("div.dialog-toolbar").remove(); -} -if(_6.buttons){ -if($.isArray(_6.buttons)){ -$(_5).find("div.dialog-button").remove(); -var _b=$("
    ").appendTo(_5); -for(var i=0;i<_6.buttons.length;i++){ -var p=_6.buttons[i]; -var _c=$("").appendTo(_b); -if(p.handler){ -_c[0].onclick=p.handler; -} -_c.linkbutton(p); -} -}else{ -$(_6.buttons).addClass("dialog-button").appendTo(_5); -$(_6.buttons).show(); -} -}else{ -$(_5).find("div.dialog-button").remove(); -} -var _d=_6.href; -var _e=_6.content; -_6.href=null; -_6.content=null; -_7.panel({closed:_6.closed,cache:_6.cache,href:_d,content:_e,onLoad:function(){ -if(_6.height=="auto"){ -$(_5).window("resize"); -} -_6.onLoad.apply(_5,arguments); -}}); -$(_5).window($.extend({},_6,{onOpen:function(){ -if(_7.panel("options").closed){ -_7.panel("open"); -} -if(_6.onOpen){ -_6.onOpen.call(_5); -} -},onResize:function(_f,_10){ -var _11=$(_5); -_7.panel("panel").show(); -_7.panel("resize",{width:_11.width(),height:(_10=="auto")?"auto":_11.height()-_11.children("div.dialog-toolbar")._outerHeight()-_11.children("div.dialog-button")._outerHeight()}); -if(_6.onResize){ -_6.onResize.call(_5,_f,_10); -} -}})); -_6.href=_d; -_6.content=_e; -}; -function _12(_13,_14){ -var _15=$.data(_13,"dialog").contentPanel; -_15.panel("refresh",_14); -}; -$.fn.dialog=function(_16,_17){ -if(typeof _16=="string"){ -var _18=$.fn.dialog.methods[_16]; -if(_18){ -return _18(this,_17); -}else{ -return this.window(_16,_17); -} -} -_16=_16||{}; -return this.each(function(){ -var _19=$.data(this,"dialog"); -if(_19){ -$.extend(_19.options,_16); -}else{ -$.data(this,"dialog",{options:$.extend({},$.fn.dialog.defaults,$.fn.dialog.parseOptions(this),_16),contentPanel:_1(this)}); -} -_4(this); -}); -}; -$.fn.dialog.methods={options:function(jq){ -var _1a=$.data(jq[0],"dialog").options; -var _1b=jq.panel("options"); -$.extend(_1a,{closed:_1b.closed,collapsed:_1b.collapsed,minimized:_1b.minimized,maximized:_1b.maximized}); -var _1c=$.data(jq[0],"dialog").contentPanel; -return _1a; -},dialog:function(jq){ -return jq.window("window"); -},refresh:function(jq,_1d){ -return jq.each(function(){ -_12(this,_1d); -}); -}}; -$.fn.dialog.parseOptions=function(_1e){ -return $.extend({},$.fn.window.parseOptions(_1e),$.parser.parseOptions(_1e,["toolbar","buttons"])); -}; -$.fn.dialog.defaults=$.extend({},$.fn.window.defaults,{title:"New Dialog",collapsible:false,minimizable:false,maximizable:false,resizable:false,toolbar:null,buttons:null}); -})(jQuery); - diff --git a/src/main/webapp/js/easyui-1.3.5/plugins/jquery.draggable.js b/src/main/webapp/js/easyui-1.3.5/plugins/jquery.draggable.js deleted file mode 100644 index b5b094cb..00000000 --- a/src/main/webapp/js/easyui-1.3.5/plugins/jquery.draggable.js +++ /dev/null @@ -1,285 +0,0 @@ -/** - * jQuery EasyUI 1.3.5 - * - * Copyright (c) 2009-2013 www.jeasyui.com. All rights reserved. - * - * Licensed under the GPL or commercial licenses - * To use it on other terms please contact us: info@jeasyui.com - * http://www.gnu.org/licenses/gpl.txt - * http://www.jeasyui.com/license_commercial.php - * - */ -(function($){ -function _1(e){ -var _2=$.data(e.data.target,"draggable"); -var _3=_2.options; -var _4=_2.proxy; -var _5=e.data; -var _6=_5.startLeft+e.pageX-_5.startX; -var _7=_5.startTop+e.pageY-_5.startY; -if(_4){ -if(_4.parent()[0]==document.body){ -if(_3.deltaX!=null&&_3.deltaX!=undefined){ -_6=e.pageX+_3.deltaX; -}else{ -_6=e.pageX-e.data.offsetWidth; -} -if(_3.deltaY!=null&&_3.deltaY!=undefined){ -_7=e.pageY+_3.deltaY; -}else{ -_7=e.pageY-e.data.offsetHeight; -} -}else{ -if(_3.deltaX!=null&&_3.deltaX!=undefined){ -_6+=e.data.offsetWidth+_3.deltaX; -} -if(_3.deltaY!=null&&_3.deltaY!=undefined){ -_7+=e.data.offsetHeight+_3.deltaY; -} -} -} -if(e.data.parent!=document.body){ -_6+=$(e.data.parent).scrollLeft(); -_7+=$(e.data.parent).scrollTop(); -} -if(_3.axis=="h"){ -_5.left=_6; -}else{ -if(_3.axis=="v"){ -_5.top=_7; -}else{ -_5.left=_6; -_5.top=_7; -} -} -}; -function _8(e){ -var _9=$.data(e.data.target,"draggable"); -var _a=_9.options; -var _b=_9.proxy; -if(!_b){ -_b=$(e.data.target); -} -_b.css({left:e.data.left,top:e.data.top}); -$("body").css("cursor",_a.cursor); -}; -function _c(e){ -$.fn.draggable.isDragging=true; -var _d=$.data(e.data.target,"draggable"); -var _e=_d.options; -var _f=$(".droppable").filter(function(){ -return e.data.target!=this; -}).filter(function(){ -var _10=$.data(this,"droppable").options.accept; -if(_10){ -return $(_10).filter(function(){ -return this==e.data.target; -}).length>0; -}else{ -return true; -} -}); -_d.droppables=_f; -var _11=_d.proxy; -if(!_11){ -if(_e.proxy){ -if(_e.proxy=="clone"){ -_11=$(e.data.target).clone().insertAfter(e.data.target); -}else{ -_11=_e.proxy.call(e.data.target,e.data.target); -} -_d.proxy=_11; -}else{ -_11=$(e.data.target); -} -} -_11.css("position","absolute"); -_1(e); -_8(e); -_e.onStartDrag.call(e.data.target,e); -return false; -}; -function _12(e){ -var _13=$.data(e.data.target,"draggable"); -_1(e); -if(_13.options.onDrag.call(e.data.target,e)!=false){ -_8(e); -} -var _14=e.data.target; -_13.droppables.each(function(){ -var _15=$(this); -if(_15.droppable("options").disabled){ -return; -} -var p2=_15.offset(); -if(e.pageX>p2.left&&e.pageXp2.top&&e.pageYp2.left&&e.pageXp2.top&&e.pageY_2a.options.edge; -}; -}); -}; -$.fn.draggable.methods={options:function(jq){ -return $.data(jq[0],"draggable").options; -},proxy:function(jq){ -return $.data(jq[0],"draggable").proxy; -},enable:function(jq){ -return jq.each(function(){ -$(this).draggable({disabled:false}); -}); -},disable:function(jq){ -return jq.each(function(){ -$(this).draggable({disabled:true}); -}); -}}; -$.fn.draggable.parseOptions=function(_2f){ -var t=$(_2f); -return $.extend({},$.parser.parseOptions(_2f,["cursor","handle","axis",{"revert":"boolean","deltaX":"number","deltaY":"number","edge":"number"}]),{disabled:(t.attr("disabled")?true:undefined)}); -}; -$.fn.draggable.defaults={proxy:null,revert:false,cursor:"move",deltaX:null,deltaY:null,handle:null,disabled:false,edge:0,axis:null,onBeforeDrag:function(e){ -},onStartDrag:function(e){ -},onDrag:function(e){ -},onStopDrag:function(e){ -}}; -$.fn.draggable.isDragging=false; -})(jQuery); - diff --git a/src/main/webapp/js/easyui-1.3.5/plugins/jquery.droppable.js b/src/main/webapp/js/easyui-1.3.5/plugins/jquery.droppable.js deleted file mode 100644 index 77438d69..00000000 --- a/src/main/webapp/js/easyui-1.3.5/plugins/jquery.droppable.js +++ /dev/null @@ -1,64 +0,0 @@ -/** - * jQuery EasyUI 1.3.5 - * - * Copyright (c) 2009-2013 www.jeasyui.com. All rights reserved. - * - * Licensed under the GPL or commercial licenses - * To use it on other terms please contact us: info@jeasyui.com - * http://www.gnu.org/licenses/gpl.txt - * http://www.jeasyui.com/license_commercial.php - * - */ -(function($){ -function _1(_2){ -$(_2).addClass("droppable"); -$(_2).bind("_dragenter",function(e,_3){ -$.data(_2,"droppable").options.onDragEnter.apply(_2,[e,_3]); -}); -$(_2).bind("_dragleave",function(e,_4){ -$.data(_2,"droppable").options.onDragLeave.apply(_2,[e,_4]); -}); -$(_2).bind("_dragover",function(e,_5){ -$.data(_2,"droppable").options.onDragOver.apply(_2,[e,_5]); -}); -$(_2).bind("_drop",function(e,_6){ -$.data(_2,"droppable").options.onDrop.apply(_2,[e,_6]); -}); -}; -$.fn.droppable=function(_7,_8){ -if(typeof _7=="string"){ -return $.fn.droppable.methods[_7](this,_8); -} -_7=_7||{}; -return this.each(function(){ -var _9=$.data(this,"droppable"); -if(_9){ -$.extend(_9.options,_7); -}else{ -_1(this); -$.data(this,"droppable",{options:$.extend({},$.fn.droppable.defaults,$.fn.droppable.parseOptions(this),_7)}); -} -}); -}; -$.fn.droppable.methods={options:function(jq){ -return $.data(jq[0],"droppable").options; -},enable:function(jq){ -return jq.each(function(){ -$(this).droppable({disabled:false}); -}); -},disable:function(jq){ -return jq.each(function(){ -$(this).droppable({disabled:true}); -}); -}}; -$.fn.droppable.parseOptions=function(_a){ -var t=$(_a); -return $.extend({},$.parser.parseOptions(_a,["accept"]),{disabled:(t.attr("disabled")?true:undefined)}); -}; -$.fn.droppable.defaults={accept:null,disabled:false,onDragEnter:function(e,_b){ -},onDragOver:function(e,_c){ -},onDragLeave:function(e,_d){ -},onDrop:function(e,_e){ -}}; -})(jQuery); - diff --git a/src/main/webapp/js/easyui-1.3.5/plugins/jquery.form.js b/src/main/webapp/js/easyui-1.3.5/plugins/jquery.form.js deleted file mode 100644 index 65957645..00000000 --- a/src/main/webapp/js/easyui-1.3.5/plugins/jquery.form.js +++ /dev/null @@ -1,292 +0,0 @@ -/** - * jQuery EasyUI 1.3.5 - * - * Copyright (c) 2009-2013 www.jeasyui.com. All rights reserved. - * - * Licensed under the GPL or commercial licenses - * To use it on other terms please contact us: info@jeasyui.com - * http://www.gnu.org/licenses/gpl.txt - * http://www.jeasyui.com/license_commercial.php - * - */ -(function($){ -function _1(_2,_3){ -_3=_3||{}; -var _4={}; -if(_3.onSubmit){ -if(_3.onSubmit.call(_2,_4)==false){ -return; -} -} -var _5=$(_2); -if(_3.url){ -_5.attr("action",_3.url); -} -var _6="easyui_frame_"+(new Date().getTime()); -var _7=$("").attr("src",window.ActiveXObject?"javascript:false":"about:blank").css({position:"absolute",top:-1000,left:-1000}); -var t=_5.attr("target"),a=_5.attr("action"); -_5.attr("target",_6); -var _8=$(); -try{ -_7.appendTo("body"); -_7.bind("load",cb); -for(var n in _4){ -var f=$("").val(_4[n]).appendTo(_5); -_8=_8.add(f); -} -_9(); -_5[0].submit(); -} -finally{ -_5.attr("action",a); -t?_5.attr("target",t):_5.removeAttr("target"); -_8.remove(); -} -function _9(){ -var f=$("#"+_6); -if(!f.length){ -return; -} -try{ -var s=f.contents()[0].readyState; -if(s&&s.toLowerCase()=="uninitialized"){ -setTimeout(_9,100); -} -} -catch(e){ -cb(); -} -}; -var _a=10; -function cb(){ -var _b=$("#"+_6); -if(!_b.length){ -return; -} -_b.unbind(); -var _c=""; -try{ -var _d=_b.contents().find("body"); -_c=_d.html(); -if(_c==""){ -if(--_a){ -setTimeout(cb,100); -return; -} -} -var ta=_d.find(">textarea"); -if(ta.length){ -_c=ta.val(); -}else{ -var _e=_d.find(">pre"); -if(_e.length){ -_c=_e.html(); -} -} -} -catch(e){ -} -if(_3.success){ -_3.success(_c); -} -setTimeout(function(){ -_b.unbind(); -_b.remove(); -},100); -}; -}; -function _f(_10,_11){ -if(!$.data(_10,"form")){ -$.data(_10,"form",{options:$.extend({},$.fn.form.defaults)}); -} -var _12=$.data(_10,"form").options; -if(typeof _11=="string"){ -var _13={}; -if(_12.onBeforeLoad.call(_10,_13)==false){ -return; -} -$.ajax({url:_11,data:_13,dataType:"json",success:function(_14){ -_15(_14); -},error:function(){ -_12.onLoadError.apply(_10,arguments); -}}); -}else{ -_15(_11); -} -function _15(_16){ -var _17=$(_10); -for(var _18 in _16){ -var val=_16[_18]; -var rr=_19(_18,val); -if(!rr.length){ -var _1a=_1b(_18,val); -if(!_1a){ -$("input[name=\""+_18+"\"]",_17).val(val); -$("textarea[name=\""+_18+"\"]",_17).val(val); -$("select[name=\""+_18+"\"]",_17).val(val); -} -} -_1c(_18,val); -} -_12.onLoadSuccess.call(_10,_16); -_28(_10); -}; -function _19(_1d,val){ -var rr=$(_10).find("input[name=\""+_1d+"\"][type=radio], input[name=\""+_1d+"\"][type=checkbox]"); -rr._propAttr("checked",false); -rr.each(function(){ -var f=$(this); -if(f.val()==String(val)||$.inArray(f.val(),$.isArray(val)?val:[val])>=0){ -f._propAttr("checked",true); -} -}); -return rr; -}; -function _1b(_1e,val){ -var _1f=0; -var pp=["numberbox","slider"]; -for(var i=0;i=0){ -_1b(_16,_18,this); -} -}); -}; -cc.children("form").length?_17(cc.children("form")):_17(cc); -cc.append("
    "); -cc.bind("_resize",function(e,_19){ -var _1a=$.data(_16,"layout").options; -if(_1a.fit==true||_19){ -_2(_16); -} -return false; -}); -}; -function _1b(_1c,_1d,el){ -_1d.region=_1d.region||"center"; -var _1e=$.data(_1c,"layout").panels; -var cc=$(_1c); -var dir=_1d.region; -if(_1e[dir].length){ -return; -} -var pp=$(el); -if(!pp.length){ -pp=$("
    ").appendTo(cc); -} -var _1f=$.extend({},$.fn.layout.paneldefaults,{width:(pp.length?parseInt(pp[0].style.width)||pp.outerWidth():"auto"),height:(pp.length?parseInt(pp[0].style.height)||pp.outerHeight():"auto"),doSize:false,collapsible:true,cls:("layout-panel layout-panel-"+dir),bodyCls:"layout-body",onOpen:function(){ -var _20=$(this).panel("header").children("div.panel-tool"); -_20.children("a.panel-tool-collapse").hide(); -var _21={north:"up",south:"down",east:"right",west:"left"}; -if(!_21[dir]){ -return; -} -var _22="layout-button-"+_21[dir]; -var t=_20.children("a."+_22); -if(!t.length){ -t=$("").addClass(_22).appendTo(_20); -t.bind("click",{dir:dir},function(e){ -_2f(_1c,e.data.dir); -return false; -}); -} -$(this).panel("options").collapsible?t.show():t.hide(); -}},_1d); -pp.panel(_1f); -_1e[dir]=pp; -if(pp.panel("options").split){ -var _23=pp.panel("panel"); -_23.addClass("layout-split-"+dir); -var _24=""; -if(dir=="north"){ -_24="s"; -} -if(dir=="south"){ -_24="n"; -} -if(dir=="east"){ -_24="w"; -} -if(dir=="west"){ -_24="e"; -} -_23.resizable($.extend({},{handles:_24,onStartResize:function(e){ -_1=true; -if(dir=="north"||dir=="south"){ -var _25=$(">div.layout-split-proxy-v",_1c); -}else{ -var _25=$(">div.layout-split-proxy-h",_1c); -} -var top=0,_26=0,_27=0,_28=0; -var pos={display:"block"}; -if(dir=="north"){ -pos.top=parseInt(_23.css("top"))+_23.outerHeight()-_25.height(); -pos.left=parseInt(_23.css("left")); -pos.width=_23.outerWidth(); -pos.height=_25.height(); -}else{ -if(dir=="south"){ -pos.top=parseInt(_23.css("top")); -pos.left=parseInt(_23.css("left")); -pos.width=_23.outerWidth(); -pos.height=_25.height(); -}else{ -if(dir=="east"){ -pos.top=parseInt(_23.css("top"))||0; -pos.left=parseInt(_23.css("left"))||0; -pos.width=_25.width(); -pos.height=_23.outerHeight(); -}else{ -if(dir=="west"){ -pos.top=parseInt(_23.css("top"))||0; -pos.left=_23.outerWidth()-_25.width(); -pos.width=_25.width(); -pos.height=_23.outerHeight(); -} -} -} -} -_25.css(pos); -$("
    ").css({left:0,top:0,width:cc.width(),height:cc.height()}).appendTo(cc); -},onResize:function(e){ -if(dir=="north"||dir=="south"){ -var _29=$(">div.layout-split-proxy-v",_1c); -_29.css("top",e.pageY-$(_1c).offset().top-_29.height()/2); -}else{ -var _29=$(">div.layout-split-proxy-h",_1c); -_29.css("left",e.pageX-$(_1c).offset().left-_29.width()/2); -} -return false; -},onStopResize:function(e){ -cc.children("div.layout-split-proxy-v,div.layout-split-proxy-h").hide(); -pp.panel("resize",e.data); -_2(_1c); -_1=false; -cc.find(">div.layout-mask").remove(); -}},_1d)); -} -}; -function _2a(_2b,_2c){ -var _2d=$.data(_2b,"layout").panels; -if(_2d[_2c].length){ -_2d[_2c].panel("destroy"); -_2d[_2c]=$(); -var _2e="expand"+_2c.substring(0,1).toUpperCase()+_2c.substring(1); -if(_2d[_2e]){ -_2d[_2e].panel("destroy"); -_2d[_2e]=undefined; -} -} -}; -function _2f(_30,_31,_32){ -if(_32==undefined){ -_32="normal"; -} -var _33=$.data(_30,"layout").panels; -var p=_33[_31]; -var _34=p.panel("options"); -if(_34.onBeforeCollapse.call(p)==false){ -return; -} -var _35="expand"+_31.substring(0,1).toUpperCase()+_31.substring(1); -if(!_33[_35]){ -_33[_35]=_36(_31); -_33[_35].panel("panel").bind("click",function(){ -var _37=_38(); -p.panel("expand",false).panel("open").panel("resize",_37.collapse); -p.panel("panel").animate(_37.expand,function(){ -$(this).unbind(".layout").bind("mouseleave.layout",{region:_31},function(e){ -if(_1==true){ -return; -} -_2f(_30,e.data.region); -}); -}); -return false; -}); -} -var _39=_38(); -if(!_9(_33[_35])){ -_33.center.panel("resize",_39.resizeC); -} -p.panel("panel").animate(_39.collapse,_32,function(){ -p.panel("collapse",false).panel("close"); -_33[_35].panel("open").panel("resize",_39.expandP); -$(this).unbind(".layout"); -}); -function _36(dir){ -var _3a; -if(dir=="east"){ -_3a="layout-button-left"; -}else{ -if(dir=="west"){ -_3a="layout-button-right"; -}else{ -if(dir=="north"){ -_3a="layout-button-down"; -}else{ -if(dir=="south"){ -_3a="layout-button-up"; -} -} -} -} -var p=$("
    ").appendTo(_30); -p.panel($.extend({},$.fn.layout.paneldefaults,{cls:("layout-expand layout-expand-"+dir),title:" ",closed:true,doSize:false,tools:[{iconCls:_3a,handler:function(){ -_3c(_30,_31); -return false; -}}]})); -p.panel("panel").hover(function(){ -$(this).addClass("layout-expand-over"); -},function(){ -$(this).removeClass("layout-expand-over"); -}); -return p; -}; -function _38(){ -var cc=$(_30); -var _3b=_33.center.panel("options"); -if(_31=="east"){ -var ww=_3b.width+_34.width-28; -if(_34.split||!_34.border){ -ww++; -} -return {resizeC:{width:ww},expand:{left:cc.width()-_34.width},expandP:{top:_3b.top,left:cc.width()-28,width:28,height:_3b.height},collapse:{left:cc.width(),top:_3b.top,height:_3b.height}}; -}else{ -if(_31=="west"){ -var ww=_3b.width+_34.width-28; -if(_34.split||!_34.border){ -ww++; -} -return {resizeC:{width:ww,left:28-1},expand:{left:0},expandP:{left:0,top:_3b.top,width:28,height:_3b.height},collapse:{left:-_34.width,top:_3b.top,height:_3b.height}}; -}else{ -if(_31=="north"){ -var hh=_3b.height; -if(!_9(_33.expandNorth)){ -hh+=_34.height-28+((_34.split||!_34.border)?1:0); -} -_33.east.add(_33.west).add(_33.expandEast).add(_33.expandWest).panel("resize",{top:28-1,height:hh}); -return {resizeC:{top:28-1,height:hh},expand:{top:0},expandP:{top:0,left:0,width:cc.width(),height:28},collapse:{top:-_34.height,width:cc.width()}}; -}else{ -if(_31=="south"){ -var hh=_3b.height; -if(!_9(_33.expandSouth)){ -hh+=_34.height-28+((_34.split||!_34.border)?1:0); -} -_33.east.add(_33.west).add(_33.expandEast).add(_33.expandWest).panel("resize",{height:hh}); -return {resizeC:{height:hh},expand:{top:cc.height()-_34.height},expandP:{top:cc.height()-28,left:0,width:cc.width(),height:28},collapse:{top:cc.height(),width:cc.width()}}; -} -} -} -} -}; -}; -function _3c(_3d,_3e){ -var _3f=$.data(_3d,"layout").panels; -var p=_3f[_3e]; -var _40=p.panel("options"); -if(_40.onBeforeExpand.call(p)==false){ -return; -} -var _41=_42(); -var _43="expand"+_3e.substring(0,1).toUpperCase()+_3e.substring(1); -if(_3f[_43]){ -_3f[_43].panel("close"); -p.panel("panel").stop(true,true); -p.panel("expand",false).panel("open").panel("resize",_41.collapse); -p.panel("panel").animate(_41.expand,function(){ -_2(_3d); -}); -} -function _42(){ -var cc=$(_3d); -var _44=_3f.center.panel("options"); -if(_3e=="east"&&_3f.expandEast){ -return {collapse:{left:cc.width(),top:_44.top,height:_44.height},expand:{left:cc.width()-_3f["east"].panel("options").width}}; -}else{ -if(_3e=="west"&&_3f.expandWest){ -return {collapse:{left:-_3f["west"].panel("options").width,top:_44.top,height:_44.height},expand:{left:0}}; -}else{ -if(_3e=="north"&&_3f.expandNorth){ -return {collapse:{top:-_3f["north"].panel("options").height,width:cc.width()},expand:{top:0}}; -}else{ -if(_3e=="south"&&_3f.expandSouth){ -return {collapse:{top:cc.height(),width:cc.width()},expand:{top:cc.height()-_3f["south"].panel("options").height}}; -} -} -} -} -}; -}; -function _9(pp){ -if(!pp){ -return false; -} -if(pp.length){ -return pp.panel("panel").is(":visible"); -}else{ -return false; -} -}; -function _45(_46){ -var _47=$.data(_46,"layout").panels; -if(_47.east.length&&_47.east.panel("options").collapsed){ -_2f(_46,"east",0); -} -if(_47.west.length&&_47.west.panel("options").collapsed){ -_2f(_46,"west",0); -} -if(_47.north.length&&_47.north.panel("options").collapsed){ -_2f(_46,"north",0); -} -if(_47.south.length&&_47.south.panel("options").collapsed){ -_2f(_46,"south",0); -} -}; -$.fn.layout=function(_48,_49){ -if(typeof _48=="string"){ -return $.fn.layout.methods[_48](this,_49); -} -_48=_48||{}; -return this.each(function(){ -var _4a=$.data(this,"layout"); -if(_4a){ -$.extend(_4a.options,_48); -}else{ -var _4b=$.extend({},$.fn.layout.defaults,$.fn.layout.parseOptions(this),_48); -$.data(this,"layout",{options:_4b,panels:{center:$(),north:$(),south:$(),east:$(),west:$()}}); -_15(this); -} -_2(this); -_45(this); -}); -}; -$.fn.layout.methods={resize:function(jq){ -return jq.each(function(){ -_2(this); -}); -},panel:function(jq,_4c){ -return $.data(jq[0],"layout").panels[_4c]; -},collapse:function(jq,_4d){ -return jq.each(function(){ -_2f(this,_4d); -}); -},expand:function(jq,_4e){ -return jq.each(function(){ -_3c(this,_4e); -}); -},add:function(jq,_4f){ -return jq.each(function(){ -_1b(this,_4f); -_2(this); -if($(this).layout("panel",_4f.region).panel("options").collapsed){ -_2f(this,_4f.region,0); -} -}); -},remove:function(jq,_50){ -return jq.each(function(){ -_2a(this,_50); -_2(this); -}); -}}; -$.fn.layout.parseOptions=function(_51){ -return $.extend({},$.parser.parseOptions(_51,[{fit:"boolean"}])); -}; -$.fn.layout.defaults={fit:false}; -$.fn.layout.parsePanelOptions=function(_52){ -var t=$(_52); -return $.extend({},$.fn.panel.parseOptions(_52),$.parser.parseOptions(_52,["region",{split:"boolean",minWidth:"number",minHeight:"number",maxWidth:"number",maxHeight:"number"}])); -}; -$.fn.layout.paneldefaults=$.extend({},$.fn.panel.defaults,{region:null,split:false,minWidth:10,minHeight:10,maxWidth:10000,maxHeight:10000}); -})(jQuery); - diff --git a/src/main/webapp/js/easyui-1.3.5/plugins/jquery.linkbutton.js b/src/main/webapp/js/easyui-1.3.5/plugins/jquery.linkbutton.js deleted file mode 100644 index eb43f949..00000000 --- a/src/main/webapp/js/easyui-1.3.5/plugins/jquery.linkbutton.js +++ /dev/null @@ -1,144 +0,0 @@ -/** - * jQuery EasyUI 1.3.5 - * - * Copyright (c) 2009-2013 www.jeasyui.com. All rights reserved. - * - * Licensed under the GPL or commercial licenses - * To use it on other terms please contact us: info@jeasyui.com - * http://www.gnu.org/licenses/gpl.txt - * http://www.jeasyui.com/license_commercial.php - * - */ -(function($){ -function _1(_2){ -var _3=$.data(_2,"linkbutton").options; -var t=$(_2); -t.addClass("l-btn").removeClass("l-btn-plain l-btn-selected l-btn-plain-selected"); -if(_3.plain){ -t.addClass("l-btn-plain"); -} -if(_3.selected){ -t.addClass(_3.plain?"l-btn-selected l-btn-plain-selected":"l-btn-selected"); -} -t.attr("group",_3.group||""); -t.attr("id",_3.id||""); -t.html(""+""+""); -if(_3.text){ -t.find(".l-btn-text").html(_3.text); -if(_3.iconCls){ -t.find(".l-btn-text").addClass(_3.iconCls).addClass(_3.iconAlign=="left"?"l-btn-icon-left":"l-btn-icon-right"); -} -}else{ -t.find(".l-btn-text").html(" "); -if(_3.iconCls){ -t.find(".l-btn-empty").addClass(_3.iconCls); -} -} -t.unbind(".linkbutton").bind("focus.linkbutton",function(){ -if(!_3.disabled){ -$(this).find(".l-btn-text").addClass("l-btn-focus"); -} -}).bind("blur.linkbutton",function(){ -$(this).find(".l-btn-text").removeClass("l-btn-focus"); -}); -if(_3.toggle&&!_3.disabled){ -t.bind("click.linkbutton",function(){ -if(_3.selected){ -$(this).linkbutton("unselect"); -}else{ -$(this).linkbutton("select"); -} -}); -} -_4(_2,_3.selected); -_5(_2,_3.disabled); -}; -function _4(_6,_7){ -var _8=$.data(_6,"linkbutton").options; -if(_7){ -if(_8.group){ -$("a.l-btn[group=\""+_8.group+"\"]").each(function(){ -var o=$(this).linkbutton("options"); -if(o.toggle){ -$(this).removeClass("l-btn-selected l-btn-plain-selected"); -o.selected=false; -} -}); -} -$(_6).addClass(_8.plain?"l-btn-selected l-btn-plain-selected":"l-btn-selected"); -_8.selected=true; -}else{ -if(!_8.group){ -$(_6).removeClass("l-btn-selected l-btn-plain-selected"); -_8.selected=false; -} -} -}; -function _5(_9,_a){ -var _b=$.data(_9,"linkbutton"); -var _c=_b.options; -$(_9).removeClass("l-btn-disabled l-btn-plain-disabled"); -if(_a){ -_c.disabled=true; -var _d=$(_9).attr("href"); -if(_d){ -_b.href=_d; -$(_9).attr("href","javascript:void(0)"); -} -if(_9.onclick){ -_b.onclick=_9.onclick; -_9.onclick=null; -} -_c.plain?$(_9).addClass("l-btn-disabled l-btn-plain-disabled"):$(_9).addClass("l-btn-disabled"); -}else{ -_c.disabled=false; -if(_b.href){ -$(_9).attr("href",_b.href); -} -if(_b.onclick){ -_9.onclick=_b.onclick; -} -} -}; -$.fn.linkbutton=function(_e,_f){ -if(typeof _e=="string"){ -return $.fn.linkbutton.methods[_e](this,_f); -} -_e=_e||{}; -return this.each(function(){ -var _10=$.data(this,"linkbutton"); -if(_10){ -$.extend(_10.options,_e); -}else{ -$.data(this,"linkbutton",{options:$.extend({},$.fn.linkbutton.defaults,$.fn.linkbutton.parseOptions(this),_e)}); -$(this).removeAttr("disabled"); -} -_1(this); -}); -}; -$.fn.linkbutton.methods={options:function(jq){ -return $.data(jq[0],"linkbutton").options; -},enable:function(jq){ -return jq.each(function(){ -_5(this,false); -}); -},disable:function(jq){ -return jq.each(function(){ -_5(this,true); -}); -},select:function(jq){ -return jq.each(function(){ -_4(this,true); -}); -},unselect:function(jq){ -return jq.each(function(){ -_4(this,false); -}); -}}; -$.fn.linkbutton.parseOptions=function(_11){ -var t=$(_11); -return $.extend({},$.parser.parseOptions(_11,["id","iconCls","iconAlign","group",{plain:"boolean",toggle:"boolean",selected:"boolean"}]),{disabled:(t.attr("disabled")?true:undefined),text:$.trim(t.html()),iconCls:(t.attr("icon")||t.attr("iconCls"))}); -}; -$.fn.linkbutton.defaults={id:null,disabled:false,toggle:false,selected:false,group:null,plain:false,text:"",iconCls:null,iconAlign:"left"}; -})(jQuery); - diff --git a/src/main/webapp/js/easyui-1.3.5/plugins/jquery.menu.js b/src/main/webapp/js/easyui-1.3.5/plugins/jquery.menu.js deleted file mode 100644 index 6b337f9b..00000000 --- a/src/main/webapp/js/easyui-1.3.5/plugins/jquery.menu.js +++ /dev/null @@ -1,427 +0,0 @@ -/** - * jQuery EasyUI 1.3.5 - * - * Copyright (c) 2009-2013 www.jeasyui.com. All rights reserved. - * - * Licensed under the GPL or commercial licenses - * To use it on other terms please contact us: info@jeasyui.com - * http://www.gnu.org/licenses/gpl.txt - * http://www.jeasyui.com/license_commercial.php - * - */ -(function($){ -function _1(_2){ -$(_2).appendTo("body"); -$(_2).addClass("menu-top"); -$(document).unbind(".menu").bind("mousedown.menu",function(e){ -var _3=$("body>div.menu:visible"); -var m=$(e.target).closest("div.menu",_3); -if(m.length){ -return; -} -$("body>div.menu-top:visible").menu("hide"); -}); -var _4=_5($(_2)); -for(var i=0;i<_4.length;i++){ -_6(_4[i]); -} -function _5(_7){ -var _8=[]; -_7.addClass("menu"); -_8.push(_7); -if(!_7.hasClass("menu-content")){ -_7.children("div").each(function(){ -var _9=$(this).children("div"); -if(_9.length){ -_9.insertAfter(_2); -this.submenu=_9; -var mm=_5(_9); -_8=_8.concat(mm); -} -}); -} -return _8; -}; -function _6(_a){ -var _b=$.parser.parseOptions(_a[0],["width"]).width; -if(_a.hasClass("menu-content")){ -_a[0].originalWidth=_b||_a._outerWidth(); -}else{ -_a[0].originalWidth=_b||0; -_a.children("div").each(function(){ -var _c=$(this); -var _d=$.extend({},$.parser.parseOptions(this,["name","iconCls","href",{separator:"boolean"}]),{disabled:(_c.attr("disabled")?true:undefined)}); -if(_d.separator){ -_c.addClass("menu-sep"); -} -if(!_c.hasClass("menu-sep")){ -_c[0].itemName=_d.name||""; -_c[0].itemHref=_d.href||""; -var _e=_c.addClass("menu-item").html(); -_c.empty().append($("
    ").html(_e)); -if(_d.iconCls){ -$("
    ").addClass(_d.iconCls).appendTo(_c); -} -if(_d.disabled){ -_f(_2,_c[0],true); -} -if(_c[0].submenu){ -$("
    ").appendTo(_c); -} -_10(_2,_c); -} -}); -$("
    ").prependTo(_a); -} -_11(_2,_a); -_a.hide(); -_12(_2,_a); -}; -}; -function _11(_13,_14){ -var _15=$.data(_13,"menu").options; -var _16=_14.attr("style"); -_14.css({display:"block",left:-10000,height:"auto",overflow:"hidden"}); -var _17=0; -_14.find("div.menu-text").each(function(){ -if(_17<$(this)._outerWidth()){ -_17=$(this)._outerWidth(); -} -$(this).closest("div.menu-item")._outerHeight($(this)._outerHeight()+2); -}); -_17+=65; -_14._outerWidth(Math.max((_14[0].originalWidth||0),_17,_15.minWidth)); -_14.children("div.menu-line")._outerHeight(_14.outerHeight()); -_14.attr("style",_16); -}; -function _12(_18,_19){ -var _1a=$.data(_18,"menu"); -_19.unbind(".menu").bind("mouseenter.menu",function(){ -if(_1a.timer){ -clearTimeout(_1a.timer); -_1a.timer=null; -} -}).bind("mouseleave.menu",function(){ -if(_1a.options.hideOnUnhover){ -_1a.timer=setTimeout(function(){ -_1b(_18); -},100); -} -}); -}; -function _10(_1c,_1d){ -if(!_1d.hasClass("menu-item")){ -return; -} -_1d.unbind(".menu"); -_1d.bind("click.menu",function(){ -if($(this).hasClass("menu-item-disabled")){ -return; -} -if(!this.submenu){ -_1b(_1c); -var _1e=$(this).attr("href"); -if(_1e){ -location.href=_1e; -} -} -var _1f=$(_1c).menu("getItem",this); -$.data(_1c,"menu").options.onClick.call(_1c,_1f); -}).bind("mouseenter.menu",function(e){ -_1d.siblings().each(function(){ -if(this.submenu){ -_22(this.submenu); -} -$(this).removeClass("menu-active"); -}); -_1d.addClass("menu-active"); -if($(this).hasClass("menu-item-disabled")){ -_1d.addClass("menu-active-disabled"); -return; -} -var _20=_1d[0].submenu; -if(_20){ -$(_1c).menu("show",{menu:_20,parent:_1d}); -} -}).bind("mouseleave.menu",function(e){ -_1d.removeClass("menu-active menu-active-disabled"); -var _21=_1d[0].submenu; -if(_21){ -if(e.pageX>=parseInt(_21.css("left"))){ -_1d.addClass("menu-active"); -}else{ -_22(_21); -} -}else{ -_1d.removeClass("menu-active"); -} -}); -}; -function _1b(_23){ -var _24=$.data(_23,"menu"); -if(_24){ -if($(_23).is(":visible")){ -_22($(_23)); -_24.options.onHide.call(_23); -} -} -return false; -}; -function _25(_26,_27){ -var _28,top; -_27=_27||{}; -var _29=$(_27.menu||_26); -if(_29.hasClass("menu-top")){ -var _2a=$.data(_26,"menu").options; -$.extend(_2a,_27); -_28=_2a.left; -top=_2a.top; -if(_2a.alignTo){ -var at=$(_2a.alignTo); -_28=at.offset().left; -top=at.offset().top+at._outerHeight(); -} -if(_28+_29.outerWidth()>$(window)._outerWidth()+$(document)._scrollLeft()){ -_28=$(window)._outerWidth()+$(document).scrollLeft()-_29.outerWidth()-5; -} -if(top+_29.outerHeight()>$(window)._outerHeight()+$(document).scrollTop()){ -top=$(window)._outerHeight()+$(document).scrollTop()-_29.outerHeight()-5; -} -}else{ -var _2b=_27.parent; -_28=_2b.offset().left+_2b.outerWidth()-2; -if(_28+_29.outerWidth()+5>$(window)._outerWidth()+$(document).scrollLeft()){ -_28=_2b.offset().left-_29.outerWidth()+2; -} -var top=_2b.offset().top-3; -if(top+_29.outerHeight()>$(window)._outerHeight()+$(document).scrollTop()){ -top=$(window)._outerHeight()+$(document).scrollTop()-_29.outerHeight()-5; -} -} -_29.css({left:_28,top:top}); -_29.show(0,function(){ -if(!_29[0].shadow){ -_29[0].shadow=$("
    ").insertAfter(_29); -} -_29[0].shadow.css({display:"block",zIndex:$.fn.menu.defaults.zIndex++,left:_29.css("left"),top:_29.css("top"),width:_29.outerWidth(),height:_29.outerHeight()}); -_29.css("z-index",$.fn.menu.defaults.zIndex++); -if(_29.hasClass("menu-top")){ -$.data(_29[0],"menu").options.onShow.call(_29[0]); -} -}); -}; -function _22(_2c){ -if(!_2c){ -return; -} -_2d(_2c); -_2c.find("div.menu-item").each(function(){ -if(this.submenu){ -_22(this.submenu); -} -$(this).removeClass("menu-active"); -}); -function _2d(m){ -m.stop(true,true); -if(m[0].shadow){ -m[0].shadow.hide(); -} -m.hide(); -}; -}; -function _2e(_2f,_30){ -var _31=null; -var tmp=$("
    "); -function _32(_33){ -_33.children("div.menu-item").each(function(){ -var _34=$(_2f).menu("getItem",this); -var s=tmp.empty().html(_34.text).text(); -if(_30==$.trim(s)){ -_31=_34; -}else{ -if(this.submenu&&!_31){ -_32(this.submenu); -} -} -}); -}; -_32($(_2f)); -tmp.remove(); -return _31; -}; -function _f(_35,_36,_37){ -var t=$(_36); -if(!t.hasClass("menu-item")){ -return; -} -if(_37){ -t.addClass("menu-item-disabled"); -if(_36.onclick){ -_36.onclick1=_36.onclick; -_36.onclick=null; -} -}else{ -t.removeClass("menu-item-disabled"); -if(_36.onclick1){ -_36.onclick=_36.onclick1; -_36.onclick1=null; -} -} -}; -function _38(_39,_3a){ -var _3b=$(_39); -if(_3a.parent){ -if(!_3a.parent.submenu){ -var _3c=$("
    ").appendTo("body"); -_3c.hide(); -_3a.parent.submenu=_3c; -$("
    ").appendTo(_3a.parent); -} -_3b=_3a.parent.submenu; -} -if(_3a.separator){ -var _3d=$("
    ").appendTo(_3b); -}else{ -var _3d=$("
    ").appendTo(_3b); -$("
    ").html(_3a.text).appendTo(_3d); -} -if(_3a.iconCls){ -$("
    ").addClass(_3a.iconCls).appendTo(_3d); -} -if(_3a.id){ -_3d.attr("id",_3a.id); -} -if(_3a.name){ -_3d[0].itemName=_3a.name; -} -if(_3a.href){ -_3d[0].itemHref=_3a.href; -} -if(_3a.onclick){ -if(typeof _3a.onclick=="string"){ -_3d.attr("onclick",_3a.onclick); -}else{ -_3d[0].onclick=eval(_3a.onclick); -} -} -if(_3a.handler){ -_3d[0].onclick=eval(_3a.handler); -} -if(_3a.disabled){ -_f(_39,_3d[0],true); -} -_10(_39,_3d); -_12(_39,_3b); -_11(_39,_3b); -}; -function _3e(_3f,_40){ -function _41(el){ -if(el.submenu){ -el.submenu.children("div.menu-item").each(function(){ -_41(this); -}); -var _42=el.submenu[0].shadow; -if(_42){ -_42.remove(); -} -el.submenu.remove(); -} -$(el).remove(); -}; -_41(_40); -}; -function _43(_44){ -$(_44).children("div.menu-item").each(function(){ -_3e(_44,this); -}); -if(_44.shadow){ -_44.shadow.remove(); -} -$(_44).remove(); -}; -$.fn.menu=function(_45,_46){ -if(typeof _45=="string"){ -return $.fn.menu.methods[_45](this,_46); -} -_45=_45||{}; -return this.each(function(){ -var _47=$.data(this,"menu"); -if(_47){ -$.extend(_47.options,_45); -}else{ -_47=$.data(this,"menu",{options:$.extend({},$.fn.menu.defaults,$.fn.menu.parseOptions(this),_45)}); -_1(this); -} -$(this).css({left:_47.options.left,top:_47.options.top}); -}); -}; -$.fn.menu.methods={options:function(jq){ -return $.data(jq[0],"menu").options; -},show:function(jq,pos){ -return jq.each(function(){ -_25(this,pos); -}); -},hide:function(jq){ -return jq.each(function(){ -_1b(this); -}); -},destroy:function(jq){ -return jq.each(function(){ -_43(this); -}); -},setText:function(jq,_48){ -return jq.each(function(){ -$(_48.target).children("div.menu-text").html(_48.text); -}); -},setIcon:function(jq,_49){ -return jq.each(function(){ -var _4a=$(this).menu("getItem",_49.target); -if(_4a.iconCls){ -$(_4a.target).children("div.menu-icon").removeClass(_4a.iconCls).addClass(_49.iconCls); -}else{ -$("
    ").addClass(_49.iconCls).appendTo(_49.target); -} -}); -},getItem:function(jq,_4b){ -var t=$(_4b); -var _4c={target:_4b,id:t.attr("id"),text:$.trim(t.children("div.menu-text").html()),disabled:t.hasClass("menu-item-disabled"),name:_4b.itemName,href:_4b.itemHref,onclick:_4b.onclick}; -var _4d=t.children("div.menu-icon"); -if(_4d.length){ -var cc=[]; -var aa=_4d.attr("class").split(" "); -for(var i=0;i "})); -if(_3.menu){ -$(_3.menu).menu(); -var _5=$(_3.menu).menu("options"); -var _6=_5.onShow; -var _7=_5.onHide; -$.extend(_5,{onShow:function(){ -var _8=$(this).menu("options"); -var _9=$(_8.alignTo); -var _a=_9.menubutton("options"); -_9.addClass((_a.plain==true)?_a.cls.btn2:_a.cls.btn1); -_6.call(this); -},onHide:function(){ -var _b=$(this).menu("options"); -var _c=$(_b.alignTo); -var _d=_c.menubutton("options"); -_c.removeClass((_d.plain==true)?_d.cls.btn2:_d.cls.btn1); -_7.call(this); -}}); -} -_e(_2,_3.disabled); -}; -function _e(_f,_10){ -var _11=$.data(_f,"menubutton").options; -_11.disabled=_10; -var btn=$(_f); -var t=btn.find("."+_11.cls.trigger); -if(!t.length){ -t=btn; -} -t.unbind(".menubutton"); -if(_10){ -btn.linkbutton("disable"); -}else{ -btn.linkbutton("enable"); -var _12=null; -t.bind("click.menubutton",function(){ -_13(_f); -return false; -}).bind("mouseenter.menubutton",function(){ -_12=setTimeout(function(){ -_13(_f); -},_11.duration); -return false; -}).bind("mouseleave.menubutton",function(){ -if(_12){ -clearTimeout(_12); -} -}); -} -}; -function _13(_14){ -var _15=$.data(_14,"menubutton").options; -if(_15.disabled||!_15.menu){ -return; -} -$("body>div.menu-top").menu("hide"); -var btn=$(_14); -var mm=$(_15.menu); -if(mm.length){ -mm.menu("options").alignTo=btn; -mm.menu("show",{alignTo:btn}); -} -btn.blur(); -}; -$.fn.menubutton=function(_16,_17){ -if(typeof _16=="string"){ -var _18=$.fn.menubutton.methods[_16]; -if(_18){ -return _18(this,_17); -}else{ -return this.linkbutton(_16,_17); -} -} -_16=_16||{}; -return this.each(function(){ -var _19=$.data(this,"menubutton"); -if(_19){ -$.extend(_19.options,_16); -}else{ -$.data(this,"menubutton",{options:$.extend({},$.fn.menubutton.defaults,$.fn.menubutton.parseOptions(this),_16)}); -$(this).removeAttr("disabled"); -} -_1(this); -}); -}; -$.fn.menubutton.methods={options:function(jq){ -var _1a=jq.linkbutton("options"); -var _1b=$.data(jq[0],"menubutton").options; -_1b.toggle=_1a.toggle; -_1b.selected=_1a.selected; -return _1b; -},enable:function(jq){ -return jq.each(function(){ -_e(this,false); -}); -},disable:function(jq){ -return jq.each(function(){ -_e(this,true); -}); -},destroy:function(jq){ -return jq.each(function(){ -var _1c=$(this).menubutton("options"); -if(_1c.menu){ -$(_1c.menu).menu("destroy"); -} -$(this).remove(); -}); -}}; -$.fn.menubutton.parseOptions=function(_1d){ -var t=$(_1d); -return $.extend({},$.fn.linkbutton.parseOptions(_1d),$.parser.parseOptions(_1d,["menu",{plain:"boolean",duration:"number"}])); -}; -$.fn.menubutton.defaults=$.extend({},$.fn.linkbutton.defaults,{plain:true,menu:null,duration:100,cls:{btn1:"m-btn-active",btn2:"m-btn-plain-active",arrow:"m-btn-downarrow",trigger:"m-btn"}}); -})(jQuery); - diff --git a/src/main/webapp/js/easyui-1.3.5/plugins/jquery.messager.js b/src/main/webapp/js/easyui-1.3.5/plugins/jquery.messager.js deleted file mode 100644 index cac65812..00000000 --- a/src/main/webapp/js/easyui-1.3.5/plugins/jquery.messager.js +++ /dev/null @@ -1,217 +0,0 @@ -/** - * jQuery EasyUI 1.3.5 - * - * Copyright (c) 2009-2013 www.jeasyui.com. All rights reserved. - * - * Licensed under the GPL or commercial licenses - * To use it on other terms please contact us: info@jeasyui.com - * http://www.gnu.org/licenses/gpl.txt - * http://www.jeasyui.com/license_commercial.php - * - */ -(function($){ -function _1(el,_2,_3,_4){ -var _5=$(el).window("window"); -if(!_5){ -return; -} -switch(_2){ -case null: -_5.show(); -break; -case "slide": -_5.slideDown(_3); -break; -case "fade": -_5.fadeIn(_3); -break; -case "show": -_5.show(_3); -break; -} -var _6=null; -if(_4>0){ -_6=setTimeout(function(){ -_7(el,_2,_3); -},_4); -} -_5.hover(function(){ -if(_6){ -clearTimeout(_6); -} -},function(){ -if(_4>0){ -_6=setTimeout(function(){ -_7(el,_2,_3); -},_4); -} -}); -}; -function _7(el,_8,_9){ -if(el.locked==true){ -return; -} -el.locked=true; -var _a=$(el).window("window"); -if(!_a){ -return; -} -switch(_8){ -case null: -_a.hide(); -break; -case "slide": -_a.slideUp(_9); -break; -case "fade": -_a.fadeOut(_9); -break; -case "show": -_a.hide(_9); -break; -} -setTimeout(function(){ -$(el).window("destroy"); -},_9); -}; -function _b(_c){ -var _d=$.extend({},$.fn.window.defaults,{collapsible:false,minimizable:false,maximizable:false,shadow:false,draggable:false,resizable:false,closed:true,style:{left:"",top:"",right:0,zIndex:$.fn.window.defaults.zIndex++,bottom:-document.body.scrollTop-document.documentElement.scrollTop},onBeforeOpen:function(){ -_1(this,_d.showType,_d.showSpeed,_d.timeout); -return false; -},onBeforeClose:function(){ -_7(this,_d.showType,_d.showSpeed); -return false; -}},{title:"",width:250,height:100,showType:"slide",showSpeed:600,msg:"",timeout:4000},_c); -_d.style.zIndex=$.fn.window.defaults.zIndex++; -var _e=$("
    ").html(_d.msg).appendTo("body"); -_e.window(_d); -_e.window("window").css(_d.style); -_e.window("open"); -return _e; -}; -function _f(_10,_11,_12){ -var win=$("
    ").appendTo("body"); -win.append(_11); -if(_12){ -var tb=$("
    ").appendTo(win); -for(var _13 in _12){ -$("").attr("href","javascript:void(0)").text(_13).css("margin-left",10).bind("click",eval(_12[_13])).appendTo(tb).linkbutton(); -} -} -win.window({title:_10,noheader:(_10?false:true),width:300,height:"auto",modal:true,collapsible:false,minimizable:false,maximizable:false,resizable:false,onClose:function(){ -setTimeout(function(){ -win.window("destroy"); -},100); -}}); -win.window("window").addClass("messager-window"); -win.children("div.messager-button").children("a:first").focus(); -return win; -}; -$.messager={show:function(_14){ -return _b(_14); -},alert:function(_15,msg,_16,fn){ -var _17="
    "+msg+"
    "; -switch(_16){ -case "error": -_17="
    "+_17; -break; -case "info": -_17="
    "+_17; -break; -case "question": -_17="
    "+_17; -break; -case "warning": -_17="
    "+_17; -break; -} -_17+="
    "; -var _18={}; -_18[$.messager.defaults.ok]=function(){ -win.window("close"); -if(fn){ -fn(); -return false; -} -}; -var win=_f(_15,_17,_18); -return win; -},confirm:function(_19,msg,fn){ -var _1a="
    "+"
    "+msg+"
    "+"
    "; -var _1b={}; -_1b[$.messager.defaults.ok]=function(){ -win.window("close"); -if(fn){ -fn(true); -return false; -} -}; -_1b[$.messager.defaults.cancel]=function(){ -win.window("close"); -if(fn){ -fn(false); -return false; -} -}; -var win=_f(_19,_1a,_1b); -return win; -},prompt:function(_1c,msg,fn){ -var _1d="
    "+"
    "+msg+"
    "+"
    "+"
    "+"
    "; -var _1e={}; -_1e[$.messager.defaults.ok]=function(){ -win.window("close"); -if(fn){ -fn($(".messager-input",win).val()); -return false; -} -}; -_1e[$.messager.defaults.cancel]=function(){ -win.window("close"); -if(fn){ -fn(); -return false; -} -}; -var win=_f(_1c,_1d,_1e); -win.children("input.messager-input").focus(); -return win; -},progress:function(_1f){ -var _20={bar:function(){ -return $("body>div.messager-window").find("div.messager-p-bar"); -},close:function(){ -var win=$("body>div.messager-window>div.messager-body:has(div.messager-progress)"); -if(win.length){ -win.window("close"); -} -}}; -if(typeof _1f=="string"){ -var _21=_20[_1f]; -return _21(); -} -var _22=$.extend({title:"",msg:"",text:undefined,interval:300},_1f||{}); -var _23="
    "; -var win=_f(_22.title,_23,null); -win.find("div.messager-p-msg").html(_22.msg); -var bar=win.find("div.messager-p-bar"); -bar.progressbar({text:_22.text}); -win.window({closable:false,onClose:function(){ -if(this.timer){ -clearInterval(this.timer); -} -$(this).window("destroy"); -}}); -if(_22.interval){ -win[0].timer=setInterval(function(){ -var v=bar.progressbar("getValue"); -v+=10; -if(v>100){ -v=0; -} -bar.progressbar("setValue",v); -},_22.interval); -} -return win; -}}; -$.messager.defaults={ok:"Ok",cancel:"Cancel"}; -})(jQuery); - diff --git a/src/main/webapp/js/easyui-1.3.5/plugins/jquery.numberbox.js b/src/main/webapp/js/easyui-1.3.5/plugins/jquery.numberbox.js deleted file mode 100644 index edc30385..00000000 --- a/src/main/webapp/js/easyui-1.3.5/plugins/jquery.numberbox.js +++ /dev/null @@ -1,224 +0,0 @@ -/** - * jQuery EasyUI 1.3.5 - * - * Copyright (c) 2009-2013 www.jeasyui.com. All rights reserved. - * - * Licensed under the GPL or commercial licenses - * To use it on other terms please contact us: info@jeasyui.com - * http://www.gnu.org/licenses/gpl.txt - * http://www.jeasyui.com/license_commercial.php - * - */ -(function($){ -function _1(_2){ -$(_2).addClass("numberbox-f"); -var v=$("").insertAfter(_2); -var _3=$(_2).attr("name"); -if(_3){ -v.attr("name",_3); -$(_2).removeAttr("name").attr("numberboxName",_3); -} -return v; -}; -function _4(_5){ -var _6=$.data(_5,"numberbox").options; -var fn=_6.onChange; -_6.onChange=function(){ -}; -_7(_5,_6.parser.call(_5,_6.value)); -_6.onChange=fn; -_6.originalValue=_8(_5); -}; -function _8(_9){ -return $.data(_9,"numberbox").field.val(); -}; -function _7(_a,_b){ -var _c=$.data(_a,"numberbox"); -var _d=_c.options; -var _e=_8(_a); -_b=_d.parser.call(_a,_b); -_d.value=_b; -_c.field.val(_b); -$(_a).val(_d.formatter.call(_a,_b)); -if(_e!=_b){ -_d.onChange.call(_a,_b,_e); -} -}; -function _f(_10){ -var _11=$.data(_10,"numberbox").options; -$(_10).unbind(".numberbox").bind("keypress.numberbox",function(e){ -return _11.filter.call(_10,e); -}).bind("blur.numberbox",function(){ -_7(_10,$(this).val()); -$(this).val(_11.formatter.call(_10,_8(_10))); -}).bind("focus.numberbox",function(){ -var vv=_8(_10); -if(vv!=_11.parser.call(_10,$(this).val())){ -$(this).val(_11.formatter.call(_10,vv)); -} -}); -}; -function _12(_13){ -if($.fn.validatebox){ -var _14=$.data(_13,"numberbox").options; -$(_13).validatebox(_14); -} -}; -function _15(_16,_17){ -var _18=$.data(_16,"numberbox").options; -if(_17){ -_18.disabled=true; -$(_16).attr("disabled",true); -}else{ -_18.disabled=false; -$(_16).removeAttr("disabled"); -} -}; -$.fn.numberbox=function(_19,_1a){ -if(typeof _19=="string"){ -var _1b=$.fn.numberbox.methods[_19]; -if(_1b){ -return _1b(this,_1a); -}else{ -return this.validatebox(_19,_1a); -} -} -_19=_19||{}; -return this.each(function(){ -var _1c=$.data(this,"numberbox"); -if(_1c){ -$.extend(_1c.options,_19); -}else{ -_1c=$.data(this,"numberbox",{options:$.extend({},$.fn.numberbox.defaults,$.fn.numberbox.parseOptions(this),_19),field:_1(this)}); -$(this).removeAttr("disabled"); -$(this).css({imeMode:"disabled"}); -} -_15(this,_1c.options.disabled); -_f(this); -_12(this); -_4(this); -}); -}; -$.fn.numberbox.methods={options:function(jq){ -return $.data(jq[0],"numberbox").options; -},destroy:function(jq){ -return jq.each(function(){ -$.data(this,"numberbox").field.remove(); -$(this).validatebox("destroy"); -$(this).remove(); -}); -},disable:function(jq){ -return jq.each(function(){ -_15(this,true); -}); -},enable:function(jq){ -return jq.each(function(){ -_15(this,false); -}); -},fix:function(jq){ -return jq.each(function(){ -_7(this,$(this).val()); -}); -},setValue:function(jq,_1d){ -return jq.each(function(){ -_7(this,_1d); -}); -},getValue:function(jq){ -return _8(jq[0]); -},clear:function(jq){ -return jq.each(function(){ -var _1e=$.data(this,"numberbox"); -_1e.field.val(""); -$(this).val(""); -}); -},reset:function(jq){ -return jq.each(function(){ -var _1f=$(this).numberbox("options"); -$(this).numberbox("setValue",_1f.originalValue); -}); -}}; -$.fn.numberbox.parseOptions=function(_20){ -var t=$(_20); -return $.extend({},$.fn.validatebox.parseOptions(_20),$.parser.parseOptions(_20,["decimalSeparator","groupSeparator","suffix",{min:"number",max:"number",precision:"number"}]),{prefix:(t.attr("prefix")?t.attr("prefix"):undefined),disabled:(t.attr("disabled")?true:undefined),value:(t.val()||undefined)}); -}; -$.fn.numberbox.defaults=$.extend({},$.fn.validatebox.defaults,{disabled:false,value:"",min:null,max:null,precision:0,decimalSeparator:".",groupSeparator:"",prefix:"",suffix:"",filter:function(e){ -var _21=$(this).numberbox("options"); -if(e.which==45){ -return ($(this).val().indexOf("-")==-1?true:false); -} -var c=String.fromCharCode(e.which); -if(c==_21.decimalSeparator){ -return ($(this).val().indexOf(c)==-1?true:false); -}else{ -if(c==_21.groupSeparator){ -return true; -}else{ -if((e.which>=48&&e.which<=57&&e.ctrlKey==false&&e.shiftKey==false)||e.which==0||e.which==8){ -return true; -}else{ -if(e.ctrlKey==true&&(e.which==99||e.which==118)){ -return true; -}else{ -return false; -} -} -} -} -},formatter:function(_22){ -if(!_22){ -return _22; -} -_22=_22+""; -var _23=$(this).numberbox("options"); -var s1=_22,s2=""; -var _24=_22.indexOf("."); -if(_24>=0){ -s1=_22.substring(0,_24); -s2=_22.substring(_24+1,_22.length); -} -if(_23.groupSeparator){ -var p=/(\d+)(\d{3})/; -while(p.test(s1)){ -s1=s1.replace(p,"$1"+_23.groupSeparator+"$2"); -} -} -if(s2){ -return _23.prefix+s1+_23.decimalSeparator+s2+_23.suffix; -}else{ -return _23.prefix+s1+_23.suffix; -} -},parser:function(s){ -s=s+""; -var _25=$(this).numberbox("options"); -if(parseFloat(s)!=s){ -if(_25.prefix){ -s=$.trim(s.replace(new RegExp("\\"+$.trim(_25.prefix),"g"),"")); -} -if(_25.suffix){ -s=$.trim(s.replace(new RegExp("\\"+$.trim(_25.suffix),"g"),"")); -} -if(_25.groupSeparator){ -s=$.trim(s.replace(new RegExp("\\"+_25.groupSeparator,"g"),"")); -} -if(_25.decimalSeparator){ -s=$.trim(s.replace(new RegExp("\\"+_25.decimalSeparator,"g"),".")); -} -s=s.replace(/\s/g,""); -} -var val=parseFloat(s).toFixed(_25.precision); -if(isNaN(val)){ -val=""; -}else{ -if(typeof (_25.min)=="number"&&val<_25.min){ -val=_25.min.toFixed(_25.precision); -}else{ -if(typeof (_25.max)=="number"&&val>_25.max){ -val=_25.max.toFixed(_25.precision); -} -} -} -return val; -},onChange:function(_26,_27){ -}}); -})(jQuery); - diff --git a/src/main/webapp/js/easyui-1.3.5/plugins/jquery.numberspinner.js b/src/main/webapp/js/easyui-1.3.5/plugins/jquery.numberspinner.js deleted file mode 100644 index 5856610f..00000000 --- a/src/main/webapp/js/easyui-1.3.5/plugins/jquery.numberspinner.js +++ /dev/null @@ -1,75 +0,0 @@ -/** - * jQuery EasyUI 1.3.5 - * - * Copyright (c) 2009-2013 www.jeasyui.com. All rights reserved. - * - * Licensed under the GPL or commercial licenses - * To use it on other terms please contact us: info@jeasyui.com - * http://www.gnu.org/licenses/gpl.txt - * http://www.jeasyui.com/license_commercial.php - * - */ -(function($){ -function _1(_2){ -$(_2).addClass("numberspinner-f"); -var _3=$.data(_2,"numberspinner").options; -$(_2).spinner(_3).numberbox(_3); -}; -function _4(_5,_6){ -var _7=$.data(_5,"numberspinner").options; -var v=parseFloat($(_5).numberbox("getValue")||_7.value)||0; -if(_6==true){ -v-=_7.increment; -}else{ -v+=_7.increment; -} -$(_5).numberbox("setValue",v); -}; -$.fn.numberspinner=function(_8,_9){ -if(typeof _8=="string"){ -var _a=$.fn.numberspinner.methods[_8]; -if(_a){ -return _a(this,_9); -}else{ -return this.spinner(_8,_9); -} -} -_8=_8||{}; -return this.each(function(){ -var _b=$.data(this,"numberspinner"); -if(_b){ -$.extend(_b.options,_8); -}else{ -$.data(this,"numberspinner",{options:$.extend({},$.fn.numberspinner.defaults,$.fn.numberspinner.parseOptions(this),_8)}); -} -_1(this); -}); -}; -$.fn.numberspinner.methods={options:function(jq){ -var _c=$.data(jq[0],"numberspinner").options; -return $.extend(_c,{value:jq.numberbox("getValue"),originalValue:jq.numberbox("options").originalValue}); -},setValue:function(jq,_d){ -return jq.each(function(){ -$(this).numberbox("setValue",_d); -}); -},getValue:function(jq){ -return jq.numberbox("getValue"); -},clear:function(jq){ -return jq.each(function(){ -$(this).spinner("clear"); -$(this).numberbox("clear"); -}); -},reset:function(jq){ -return jq.each(function(){ -var _e=$(this).numberspinner("options"); -$(this).numberspinner("setValue",_e.originalValue); -}); -}}; -$.fn.numberspinner.parseOptions=function(_f){ -return $.extend({},$.fn.spinner.parseOptions(_f),$.fn.numberbox.parseOptions(_f),{}); -}; -$.fn.numberspinner.defaults=$.extend({},$.fn.spinner.defaults,$.fn.numberbox.defaults,{spin:function(_10){ -_4(this,_10); -}}); -})(jQuery); - diff --git a/src/main/webapp/js/easyui-1.3.5/plugins/jquery.pagination.js b/src/main/webapp/js/easyui-1.3.5/plugins/jquery.pagination.js deleted file mode 100644 index fa20f58a..00000000 --- a/src/main/webapp/js/easyui-1.3.5/plugins/jquery.pagination.js +++ /dev/null @@ -1,284 +0,0 @@ -/** - * jQuery EasyUI 1.3.5 - * - * Copyright (c) 2009-2013 www.jeasyui.com. All rights reserved. - * - * Licensed under the GPL or commercial licenses - * To use it on other terms please contact us: info@jeasyui.com - * http://www.gnu.org/licenses/gpl.txt - * http://www.jeasyui.com/license_commercial.php - * - */ -(function($){ -function _1(_2){ -var _3=$.data(_2,"pagination"); -var _4=_3.options; -var bb=_3.bb={}; -var _5=$(_2).addClass("pagination").html("
    "); -var tr=_5.find("tr"); -var aa=$.extend([],_4.layout); -if(!_4.showPageList){ -_6(aa,"list"); -} -if(!_4.showRefresh){ -_6(aa,"refresh"); -} -if(aa[0]=="sep"){ -aa.shift(); -} -if(aa[aa.length-1]=="sep"){ -aa.pop(); -} -for(var _7=0;_7"); -ps.bind("change",function(){ -_4.pageSize=parseInt($(this).val()); -_4.onChangePageSize.call(_2,_4.pageSize); -_10(_2,_4.pageNumber); -}); -for(var i=0;i<_4.pageList.length;i++){ -$("").text(_4.pageList[i]).appendTo(ps); -} -$("").append(ps).appendTo(tr); -}else{ -if(_8=="sep"){ -$("
    ").appendTo(tr); -}else{ -if(_8=="first"){ -bb.first=_9("first"); -}else{ -if(_8=="prev"){ -bb.prev=_9("prev"); -}else{ -if(_8=="next"){ -bb.next=_9("next"); -}else{ -if(_8=="last"){ -bb.last=_9("last"); -}else{ -if(_8=="manual"){ -$("").html(_4.beforePageText).appendTo(tr).wrap(""); -bb.num=$("").appendTo(tr).wrap(""); -bb.num.unbind(".pagination").bind("keydown.pagination",function(e){ -if(e.keyCode==13){ -var _a=parseInt($(this).val())||1; -_10(_2,_a); -return false; -} -}); -bb.after=$("").appendTo(tr).wrap(""); -}else{ -if(_8=="refresh"){ -bb.refresh=_9("refresh"); -}else{ -if(_8=="links"){ -$("").appendTo(tr); -} -} -} -} -} -} -} -} -} -} -if(_4.buttons){ -$("
    ").appendTo(tr); -if($.isArray(_4.buttons)){ -for(var i=0;i<_4.buttons.length;i++){ -var _b=_4.buttons[i]; -if(_b=="-"){ -$("
    ").appendTo(tr); -}else{ -var td=$("").appendTo(tr); -var a=$("").appendTo(td); -a[0].onclick=eval(_b.handler||function(){ -}); -a.linkbutton($.extend({},_b,{plain:true})); -} -} -}else{ -var td=$("").appendTo(tr); -$(_4.buttons).appendTo(td).show(); -} -} -$("
    ").appendTo(_5); -$("
    ").appendTo(_5); -function _9(_c){ -var _d=_4.nav[_c]; -var a=$("").appendTo(tr); -a.wrap(""); -a.linkbutton({iconCls:_d.iconCls,plain:true}).unbind(".pagination").bind("click.pagination",function(){ -_d.handler.call(_2); -}); -return a; -}; -function _6(aa,_e){ -var _f=$.inArray(_e,aa); -if(_f>=0){ -aa.splice(_f,1); -} -return aa; -}; -}; -function _10(_11,_12){ -var _13=$.data(_11,"pagination").options; -_14(_11,{pageNumber:_12}); -_13.onSelectPage.call(_11,_13.pageNumber,_13.pageSize); -}; -function _14(_15,_16){ -var _17=$.data(_15,"pagination"); -var _18=_17.options; -var bb=_17.bb; -$.extend(_18,_16||{}); -var ps=$(_15).find("select.pagination-page-list"); -if(ps.length){ -ps.val(_18.pageSize+""); -_18.pageSize=parseInt(ps.val()); -} -var _19=Math.ceil(_18.total/_18.pageSize)||1; -if(_18.pageNumber<1){ -_18.pageNumber=1; -} -if(_18.pageNumber>_19){ -_18.pageNumber=_19; -} -if(bb.num){ -bb.num.val(_18.pageNumber); -} -if(bb.after){ -bb.after.html(_18.afterPageText.replace(/{pages}/,_19)); -} -var td=$(_15).find("td.pagination-links"); -if(td.length){ -td.empty(); -var _1a=_18.pageNumber-Math.floor(_18.links/2); -if(_1a<1){ -_1a=1; -} -var _1b=_1a+_18.links-1; -if(_1b>_19){ -_1b=_19; -} -_1a=_1b-_18.links+1; -if(_1a<1){ -_1a=1; -} -for(var i=_1a;i<=_1b;i++){ -var a=$("").appendTo(td); -a.linkbutton({plain:true,text:i}); -if(i==_18.pageNumber){ -a.linkbutton("select"); -}else{ -a.unbind(".pagination").bind("click.pagination",{pageNumber:i},function(e){ -_10(_15,e.data.pageNumber); -}); -} -} -} -var _1c=_18.displayMsg; -_1c=_1c.replace(/{from}/,_18.total==0?0:_18.pageSize*(_18.pageNumber-1)+1); -_1c=_1c.replace(/{to}/,Math.min(_18.pageSize*(_18.pageNumber),_18.total)); -_1c=_1c.replace(/{total}/,_18.total); -$(_15).find("div.pagination-info").html(_1c); -if(bb.first){ -bb.first.linkbutton({disabled:(_18.pageNumber==1)}); -} -if(bb.prev){ -bb.prev.linkbutton({disabled:(_18.pageNumber==1)}); -} -if(bb.next){ -bb.next.linkbutton({disabled:(_18.pageNumber==_19)}); -} -if(bb.last){ -bb.last.linkbutton({disabled:(_18.pageNumber==_19)}); -} -_1d(_15,_18.loading); -}; -function _1d(_1e,_1f){ -var _20=$.data(_1e,"pagination"); -var _21=_20.options; -_21.loading=_1f; -if(_21.showRefresh&&_20.bb.refresh){ -_20.bb.refresh.linkbutton({iconCls:(_21.loading?"pagination-loading":"pagination-load")}); -} -}; -$.fn.pagination=function(_22,_23){ -if(typeof _22=="string"){ -return $.fn.pagination.methods[_22](this,_23); -} -_22=_22||{}; -return this.each(function(){ -var _24; -var _25=$.data(this,"pagination"); -if(_25){ -_24=$.extend(_25.options,_22); -}else{ -_24=$.extend({},$.fn.pagination.defaults,$.fn.pagination.parseOptions(this),_22); -$.data(this,"pagination",{options:_24}); -} -_1(this); -_14(this); -}); -}; -$.fn.pagination.methods={options:function(jq){ -return $.data(jq[0],"pagination").options; -},loading:function(jq){ -return jq.each(function(){ -_1d(this,true); -}); -},loaded:function(jq){ -return jq.each(function(){ -_1d(this,false); -}); -},refresh:function(jq,_26){ -return jq.each(function(){ -_14(this,_26); -}); -},select:function(jq,_27){ -return jq.each(function(){ -_10(this,_27); -}); -}}; -$.fn.pagination.parseOptions=function(_28){ -var t=$(_28); -return $.extend({},$.parser.parseOptions(_28,[{total:"number",pageSize:"number",pageNumber:"number",links:"number"},{loading:"boolean",showPageList:"boolean",showRefresh:"boolean"}]),{pageList:(t.attr("pageList")?eval(t.attr("pageList")):undefined)}); -}; -$.fn.pagination.defaults={total:1,pageSize:10,pageNumber:1,pageList:[10,20,30,50],loading:false,buttons:null,showPageList:true,showRefresh:true,links:10,layout:["list","sep","first","prev","sep","manual","sep","next","last","sep","refresh"],onSelectPage:function(_29,_2a){ -},onBeforeRefresh:function(_2b,_2c){ -},onRefresh:function(_2d,_2e){ -},onChangePageSize:function(_2f){ -},beforePageText:"Page",afterPageText:"of {pages}",displayMsg:"Displaying {from} to {to} of {total} items",nav:{first:{iconCls:"pagination-first",handler:function(){ -var _30=$(this).pagination("options"); -if(_30.pageNumber>1){ -$(this).pagination("select",1); -} -}},prev:{iconCls:"pagination-prev",handler:function(){ -var _31=$(this).pagination("options"); -if(_31.pageNumber>1){ -$(this).pagination("select",_31.pageNumber-1); -} -}},next:{iconCls:"pagination-next",handler:function(){ -var _32=$(this).pagination("options"); -var _33=Math.ceil(_32.total/_32.pageSize); -if(_32.pageNumber<_33){ -$(this).pagination("select",_32.pageNumber+1); -} -}},last:{iconCls:"pagination-last",handler:function(){ -var _34=$(this).pagination("options"); -var _35=Math.ceil(_34.total/_34.pageSize); -if(_34.pageNumber<_35){ -$(this).pagination("select",_35); -} -}},refresh:{iconCls:"pagination-refresh",handler:function(){ -var _36=$(this).pagination("options"); -if(_36.onBeforeRefresh.call(this,_36.pageNumber,_36.pageSize)!=false){ -$(this).pagination("select",_36.pageNumber); -_36.onRefresh.call(this,_36.pageNumber,_36.pageSize); -} -}}}}; -})(jQuery); - diff --git a/src/main/webapp/js/easyui-1.3.5/plugins/jquery.panel.js b/src/main/webapp/js/easyui-1.3.5/plugins/jquery.panel.js deleted file mode 100644 index 0956a0bb..00000000 --- a/src/main/webapp/js/easyui-1.3.5/plugins/jquery.panel.js +++ /dev/null @@ -1,520 +0,0 @@ -/** - * jQuery EasyUI 1.3.5 - * - * Copyright (c) 2009-2013 www.jeasyui.com. All rights reserved. - * - * Licensed under the GPL or commercial licenses - * To use it on other terms please contact us: info@jeasyui.com - * http://www.gnu.org/licenses/gpl.txt - * http://www.jeasyui.com/license_commercial.php - * - */ -(function($){ -$.fn._remove=function(){ -return this.each(function(){ -$(this).remove(); -try{ -this.outerHTML=""; -} -catch(err){ -} -}); -}; -function _1(_2){ -_2._remove(); -}; -function _3(_4,_5){ -var _6=$.data(_4,"panel").options; -var _7=$.data(_4,"panel").panel; -var _8=_7.children("div.panel-header"); -var _9=_7.children("div.panel-body"); -if(_5){ -$.extend(_6,{width:_5.width,height:_5.height,left:_5.left,top:_5.top}); -} -_6.fit?$.extend(_6,_7._fit()):_7._fit(false); -_7.css({left:_6.left,top:_6.top}); -if(!isNaN(_6.width)){ -_7._outerWidth(_6.width); -}else{ -_7.width("auto"); -} -_8.add(_9)._outerWidth(_7.width()); -if(!isNaN(_6.height)){ -_7._outerHeight(_6.height); -_9._outerHeight(_7.height()-_8._outerHeight()); -}else{ -_9.height("auto"); -} -_7.css("height",""); -_6.onResize.apply(_4,[_6.width,_6.height]); -$(_4).find(">div,>form>div").triggerHandler("_resize"); -}; -function _a(_b,_c){ -var _d=$.data(_b,"panel").options; -var _e=$.data(_b,"panel").panel; -if(_c){ -if(_c.left!=null){ -_d.left=_c.left; -} -if(_c.top!=null){ -_d.top=_c.top; -} -} -_e.css({left:_d.left,top:_d.top}); -_d.onMove.apply(_b,[_d.left,_d.top]); -}; -function _f(_10){ -$(_10).addClass("panel-body"); -var _11=$("
    ").insertBefore(_10); -_11[0].appendChild(_10); -_11.bind("_resize",function(){ -var _12=$.data(_10,"panel").options; -if(_12.fit==true){ -_3(_10); -} -return false; -}); -return _11; -}; -function _13(_14){ -var _15=$.data(_14,"panel").options; -var _16=$.data(_14,"panel").panel; -if(_15.tools&&typeof _15.tools=="string"){ -_16.find(">div.panel-header>div.panel-tool .panel-tool-a").appendTo(_15.tools); -} -_1(_16.children("div.panel-header")); -if(_15.title&&!_15.noheader){ -var _17=$("
    "+_15.title+"
    ").prependTo(_16); -if(_15.iconCls){ -_17.find(".panel-title").addClass("panel-with-icon"); -$("
    ").addClass(_15.iconCls).appendTo(_17); -} -var _18=$("
    ").appendTo(_17); -_18.bind("click",function(e){ -e.stopPropagation(); -}); -if(_15.tools){ -if($.isArray(_15.tools)){ -for(var i=0;i<_15.tools.length;i++){ -var t=$("").addClass(_15.tools[i].iconCls).appendTo(_18); -if(_15.tools[i].handler){ -t.bind("click",eval(_15.tools[i].handler)); -} -} -}else{ -$(_15.tools).children().each(function(){ -$(this).addClass($(this).attr("iconCls")).addClass("panel-tool-a").appendTo(_18); -}); -} -} -if(_15.collapsible){ -$("").appendTo(_18).bind("click",function(){ -if(_15.collapsed==true){ -_3c(_14,true); -}else{ -_2c(_14,true); -} -return false; -}); -} -if(_15.minimizable){ -$("").appendTo(_18).bind("click",function(){ -_47(_14); -return false; -}); -} -if(_15.maximizable){ -$("").appendTo(_18).bind("click",function(){ -if(_15.maximized==true){ -_4b(_14); -}else{ -_2b(_14); -} -return false; -}); -} -if(_15.closable){ -$("").appendTo(_18).bind("click",function(){ -_19(_14); -return false; -}); -} -_16.children("div.panel-body").removeClass("panel-body-noheader"); -}else{ -_16.children("div.panel-body").addClass("panel-body-noheader"); -} -}; -function _1a(_1b){ -var _1c=$.data(_1b,"panel"); -var _1d=_1c.options; -if(_1d.href){ -if(!_1c.isLoaded||!_1d.cache){ -if(_1d.onBeforeLoad.call(_1b)==false){ -return; -} -_1c.isLoaded=false; -_1e(_1b); -if(_1d.loadingMessage){ -$(_1b).html($("
    ").html(_1d.loadingMessage)); -} -$.ajax({url:_1d.href,cache:false,dataType:"html",success:function(_1f){ -_20(_1d.extractor.call(_1b,_1f)); -_1d.onLoad.apply(_1b,arguments); -_1c.isLoaded=true; -}}); -} -}else{ -if(_1d.content){ -if(!_1c.isLoaded){ -_1e(_1b); -_20(_1d.content); -_1c.isLoaded=true; -} -} -} -function _20(_21){ -$(_1b).html(_21); -if($.parser){ -$.parser.parse($(_1b)); -} -}; -}; -function _1e(_22){ -var t=$(_22); -t.find(".combo-f").each(function(){ -$(this).combo("destroy"); -}); -t.find(".m-btn").each(function(){ -$(this).menubutton("destroy"); -}); -t.find(".s-btn").each(function(){ -$(this).splitbutton("destroy"); -}); -t.find(".tooltip-f").each(function(){ -$(this).tooltip("destroy"); -}); -}; -function _23(_24){ -$(_24).find("div.panel:visible,div.accordion:visible,div.tabs-container:visible,div.layout:visible").each(function(){ -$(this).triggerHandler("_resize",[true]); -}); -}; -function _25(_26,_27){ -var _28=$.data(_26,"panel").options; -var _29=$.data(_26,"panel").panel; -if(_27!=true){ -if(_28.onBeforeOpen.call(_26)==false){ -return; -} -} -_29.show(); -_28.closed=false; -_28.minimized=false; -var _2a=_29.children("div.panel-header").find("a.panel-tool-restore"); -if(_2a.length){ -_28.maximized=true; -} -_28.onOpen.call(_26); -if(_28.maximized==true){ -_28.maximized=false; -_2b(_26); -} -if(_28.collapsed==true){ -_28.collapsed=false; -_2c(_26); -} -if(!_28.collapsed){ -_1a(_26); -_23(_26); -} -}; -function _19(_2d,_2e){ -var _2f=$.data(_2d,"panel").options; -var _30=$.data(_2d,"panel").panel; -if(_2e!=true){ -if(_2f.onBeforeClose.call(_2d)==false){ -return; -} -} -_30._fit(false); -_30.hide(); -_2f.closed=true; -_2f.onClose.call(_2d); -}; -function _31(_32,_33){ -var _34=$.data(_32,"panel").options; -var _35=$.data(_32,"panel").panel; -if(_33!=true){ -if(_34.onBeforeDestroy.call(_32)==false){ -return; -} -} -_1e(_32); -_1(_35); -_34.onDestroy.call(_32); -}; -function _2c(_36,_37){ -var _38=$.data(_36,"panel").options; -var _39=$.data(_36,"panel").panel; -var _3a=_39.children("div.panel-body"); -var _3b=_39.children("div.panel-header").find("a.panel-tool-collapse"); -if(_38.collapsed==true){ -return; -} -_3a.stop(true,true); -if(_38.onBeforeCollapse.call(_36)==false){ -return; -} -_3b.addClass("panel-tool-expand"); -if(_37==true){ -_3a.slideUp("normal",function(){ -_38.collapsed=true; -_38.onCollapse.call(_36); -}); -}else{ -_3a.hide(); -_38.collapsed=true; -_38.onCollapse.call(_36); -} -}; -function _3c(_3d,_3e){ -var _3f=$.data(_3d,"panel").options; -var _40=$.data(_3d,"panel").panel; -var _41=_40.children("div.panel-body"); -var _42=_40.children("div.panel-header").find("a.panel-tool-collapse"); -if(_3f.collapsed==false){ -return; -} -_41.stop(true,true); -if(_3f.onBeforeExpand.call(_3d)==false){ -return; -} -_42.removeClass("panel-tool-expand"); -if(_3e==true){ -_41.slideDown("normal",function(){ -_3f.collapsed=false; -_3f.onExpand.call(_3d); -_1a(_3d); -_23(_3d); -}); -}else{ -_41.show(); -_3f.collapsed=false; -_3f.onExpand.call(_3d); -_1a(_3d); -_23(_3d); -} -}; -function _2b(_43){ -var _44=$.data(_43,"panel").options; -var _45=$.data(_43,"panel").panel; -var _46=_45.children("div.panel-header").find("a.panel-tool-max"); -if(_44.maximized==true){ -return; -} -_46.addClass("panel-tool-restore"); -if(!$.data(_43,"panel").original){ -$.data(_43,"panel").original={width:_44.width,height:_44.height,left:_44.left,top:_44.top,fit:_44.fit}; -} -_44.left=0; -_44.top=0; -_44.fit=true; -_3(_43); -_44.minimized=false; -_44.maximized=true; -_44.onMaximize.call(_43); -}; -function _47(_48){ -var _49=$.data(_48,"panel").options; -var _4a=$.data(_48,"panel").panel; -_4a._fit(false); -_4a.hide(); -_49.minimized=true; -_49.maximized=false; -_49.onMinimize.call(_48); -}; -function _4b(_4c){ -var _4d=$.data(_4c,"panel").options; -var _4e=$.data(_4c,"panel").panel; -var _4f=_4e.children("div.panel-header").find("a.panel-tool-max"); -if(_4d.maximized==false){ -return; -} -_4e.show(); -_4f.removeClass("panel-tool-restore"); -$.extend(_4d,$.data(_4c,"panel").original); -_3(_4c); -_4d.minimized=false; -_4d.maximized=false; -$.data(_4c,"panel").original=null; -_4d.onRestore.call(_4c); -}; -function _50(_51){ -var _52=$.data(_51,"panel").options; -var _53=$.data(_51,"panel").panel; -var _54=$(_51).panel("header"); -var _55=$(_51).panel("body"); -_53.css(_52.style); -_53.addClass(_52.cls); -if(_52.border){ -_54.removeClass("panel-header-noborder"); -_55.removeClass("panel-body-noborder"); -}else{ -_54.addClass("panel-header-noborder"); -_55.addClass("panel-body-noborder"); -} -_54.addClass(_52.headerCls); -_55.addClass(_52.bodyCls); -if(_52.id){ -$(_51).attr("id",_52.id); -}else{ -$(_51).attr("id",""); -} -}; -function _56(_57,_58){ -$.data(_57,"panel").options.title=_58; -$(_57).panel("header").find("div.panel-title").html(_58); -}; -var TO=false; -var _59=true; -$(window).unbind(".panel").bind("resize.panel",function(){ -if(!_59){ -return; -} -if(TO!==false){ -clearTimeout(TO); -} -TO=setTimeout(function(){ -_59=false; -var _5a=$("body.layout"); -if(_5a.length){ -_5a.layout("resize"); -}else{ -$("body").children("div.panel,div.accordion,div.tabs-container,div.layout").triggerHandler("_resize"); -} -_59=true; -TO=false; -},200); -}); -$.fn.panel=function(_5b,_5c){ -if(typeof _5b=="string"){ -return $.fn.panel.methods[_5b](this,_5c); -} -_5b=_5b||{}; -return this.each(function(){ -var _5d=$.data(this,"panel"); -var _5e; -if(_5d){ -_5e=$.extend(_5d.options,_5b); -_5d.isLoaded=false; -}else{ -_5e=$.extend({},$.fn.panel.defaults,$.fn.panel.parseOptions(this),_5b); -$(this).attr("title",""); -_5d=$.data(this,"panel",{options:_5e,panel:_f(this),isLoaded:false}); -} -_13(this); -_50(this); -if(_5e.doSize==true){ -_5d.panel.css("display","block"); -_3(this); -} -if(_5e.closed==true||_5e.minimized==true){ -_5d.panel.hide(); -}else{ -_25(this); -} -}); -}; -$.fn.panel.methods={options:function(jq){ -return $.data(jq[0],"panel").options; -},panel:function(jq){ -return $.data(jq[0],"panel").panel; -},header:function(jq){ -return $.data(jq[0],"panel").panel.find(">div.panel-header"); -},body:function(jq){ -return $.data(jq[0],"panel").panel.find(">div.panel-body"); -},setTitle:function(jq,_5f){ -return jq.each(function(){ -_56(this,_5f); -}); -},open:function(jq,_60){ -return jq.each(function(){ -_25(this,_60); -}); -},close:function(jq,_61){ -return jq.each(function(){ -_19(this,_61); -}); -},destroy:function(jq,_62){ -return jq.each(function(){ -_31(this,_62); -}); -},refresh:function(jq,_63){ -return jq.each(function(){ -$.data(this,"panel").isLoaded=false; -if(_63){ -$.data(this,"panel").options.href=_63; -} -_1a(this); -}); -},resize:function(jq,_64){ -return jq.each(function(){ -_3(this,_64); -}); -},move:function(jq,_65){ -return jq.each(function(){ -_a(this,_65); -}); -},maximize:function(jq){ -return jq.each(function(){ -_2b(this); -}); -},minimize:function(jq){ -return jq.each(function(){ -_47(this); -}); -},restore:function(jq){ -return jq.each(function(){ -_4b(this); -}); -},collapse:function(jq,_66){ -return jq.each(function(){ -_2c(this,_66); -}); -},expand:function(jq,_67){ -return jq.each(function(){ -_3c(this,_67); -}); -}}; -$.fn.panel.parseOptions=function(_68){ -var t=$(_68); -return $.extend({},$.parser.parseOptions(_68,["id","width","height","left","top","title","iconCls","cls","headerCls","bodyCls","tools","href",{cache:"boolean",fit:"boolean",border:"boolean",noheader:"boolean"},{collapsible:"boolean",minimizable:"boolean",maximizable:"boolean"},{closable:"boolean",collapsed:"boolean",minimized:"boolean",maximized:"boolean",closed:"boolean"}]),{loadingMessage:(t.attr("loadingMessage")!=undefined?t.attr("loadingMessage"):undefined)}); -}; -$.fn.panel.defaults={id:null,title:null,iconCls:null,width:"auto",height:"auto",left:null,top:null,cls:null,headerCls:null,bodyCls:null,style:{},href:null,cache:true,fit:false,border:true,doSize:true,noheader:false,content:null,collapsible:false,minimizable:false,maximizable:false,closable:false,collapsed:false,minimized:false,maximized:false,closed:false,tools:null,href:null,loadingMessage:"Loading...",extractor:function(_69){ -var _6a=/]*>((.|[\n\r])*)<\/body>/im; -var _6b=_6a.exec(_69); -if(_6b){ -return _6b[1]; -}else{ -return _69; -} -},onBeforeLoad:function(){ -},onLoad:function(){ -},onBeforeOpen:function(){ -},onOpen:function(){ -},onBeforeClose:function(){ -},onClose:function(){ -},onBeforeDestroy:function(){ -},onDestroy:function(){ -},onResize:function(_6c,_6d){ -},onMove:function(_6e,top){ -},onMaximize:function(){ -},onRestore:function(){ -},onMinimize:function(){ -},onBeforeCollapse:function(){ -},onBeforeExpand:function(){ -},onCollapse:function(){ -},onExpand:function(){ -}}; -})(jQuery); - diff --git a/src/main/webapp/js/easyui-1.3.5/plugins/jquery.parser.js b/src/main/webapp/js/easyui-1.3.5/plugins/jquery.parser.js deleted file mode 100644 index 298a0fff..00000000 --- a/src/main/webapp/js/easyui-1.3.5/plugins/jquery.parser.js +++ /dev/null @@ -1,218 +0,0 @@ -/** - * jQuery EasyUI 1.3.5 - * - * Copyright (c) 2009-2013 www.jeasyui.com. All rights reserved. - * - * Licensed under the GPL or commercial licenses - * To use it on other terms please contact us: info@jeasyui.com - * http://www.gnu.org/licenses/gpl.txt - * http://www.jeasyui.com/license_commercial.php - * - */ -(function($){ -$.parser={auto:true,onComplete:function(_1){ -},plugins:["draggable","droppable","resizable","pagination","tooltip","linkbutton","menu","menubutton","splitbutton","progressbar","tree","combobox","combotree","combogrid","numberbox","validatebox","searchbox","numberspinner","timespinner","calendar","datebox","datetimebox","slider","layout","panel","datagrid","propertygrid","treegrid","tabs","accordion","window","dialog"],parse:function(_2){ -var aa=[]; -for(var i=0;i<$.parser.plugins.length;i++){ -var _3=$.parser.plugins[i]; -var r=$(".easyui-"+_3,_2); -if(r.length){ -if(r[_3]){ -r[_3](); -}else{ -aa.push({name:_3,jq:r}); -} -} -} -if(aa.length&&window.easyloader){ -var _4=[]; -for(var i=0;i
    ").appendTo("body"); -d.width(100); -$._boxModel=parseInt(d.width())==100; -d.remove(); -if(!window.easyloader&&$.parser.auto){ -$.parser.parse(); -} -}); -$.fn._outerWidth=function(_c){ -if(_c==undefined){ -if(this[0]==window){ -return this.width()||document.body.clientWidth; -} -return this.outerWidth()||0; -} -return this.each(function(){ -if($._boxModel){ -$(this).width(_c-($(this).outerWidth()-$(this).width())); -}else{ -$(this).width(_c); -} -}); -}; -$.fn._outerHeight=function(_d){ -if(_d==undefined){ -if(this[0]==window){ -return this.height()||document.body.clientHeight; -} -return this.outerHeight()||0; -} -return this.each(function(){ -if($._boxModel){ -$(this).height(_d-($(this).outerHeight()-$(this).height())); -}else{ -$(this).height(_d); -} -}); -}; -$.fn._scrollLeft=function(_e){ -if(_e==undefined){ -return this.scrollLeft(); -}else{ -return this.each(function(){ -$(this).scrollLeft(_e); -}); -} -}; -$.fn._propAttr=$.fn.prop||$.fn.attr; -$.fn._fit=function(_f){ -_f=_f==undefined?true:_f; -var t=this[0]; -var p=(t.tagName=="BODY"?t:this.parent()[0]); -var _10=p.fcount||0; -if(_f){ -if(!t.fitted){ -t.fitted=true; -p.fcount=_10+1; -$(p).addClass("panel-noscroll"); -if(p.tagName=="BODY"){ -$("html").addClass("panel-fit"); -} -} -}else{ -if(t.fitted){ -t.fitted=false; -p.fcount=_10-1; -if(p.fcount==0){ -$(p).removeClass("panel-noscroll"); -if(p.tagName=="BODY"){ -$("html").removeClass("panel-fit"); -} -} -} -} -return {width:$(p).width(),height:$(p).height()}; -}; -})(jQuery); -(function($){ -var _11=null; -var _12=null; -var _13=false; -function _14(e){ -if(e.touches.length!=1){ -return; -} -if(!_13){ -_13=true; -dblClickTimer=setTimeout(function(){ -_13=false; -},500); -}else{ -clearTimeout(dblClickTimer); -_13=false; -_15(e,"dblclick"); -} -_11=setTimeout(function(){ -_15(e,"contextmenu",3); -},1000); -_15(e,"mousedown"); -if($.fn.draggable.isDragging||$.fn.resizable.isResizing){ -e.preventDefault(); -} -}; -function _16(e){ -if(e.touches.length!=1){ -return; -} -if(_11){ -clearTimeout(_11); -} -_15(e,"mousemove"); -if($.fn.draggable.isDragging||$.fn.resizable.isResizing){ -e.preventDefault(); -} -}; -function _17(e){ -if(_11){ -clearTimeout(_11); -} -_15(e,"mouseup"); -if($.fn.draggable.isDragging||$.fn.resizable.isResizing){ -e.preventDefault(); -} -}; -function _15(e,_18,_19){ -var _1a=new $.Event(_18); -_1a.pageX=e.changedTouches[0].pageX; -_1a.pageY=e.changedTouches[0].pageY; -_1a.which=_19||1; -$(e.target).trigger(_1a); -}; -if(document.addEventListener){ -document.addEventListener("touchstart",_14,true); -document.addEventListener("touchmove",_16,true); -document.addEventListener("touchend",_17,true); -} -})(jQuery); - diff --git a/src/main/webapp/js/easyui-1.3.5/plugins/jquery.progressbar.js b/src/main/webapp/js/easyui-1.3.5/plugins/jquery.progressbar.js deleted file mode 100644 index 68f25b91..00000000 --- a/src/main/webapp/js/easyui-1.3.5/plugins/jquery.progressbar.js +++ /dev/null @@ -1,80 +0,0 @@ -/** - * jQuery EasyUI 1.3.5 - * - * Copyright (c) 2009-2013 www.jeasyui.com. All rights reserved. - * - * Licensed under the GPL or commercial licenses - * To use it on other terms please contact us: info@jeasyui.com - * http://www.gnu.org/licenses/gpl.txt - * http://www.jeasyui.com/license_commercial.php - * - */ -(function($){ -function _1(_2){ -$(_2).addClass("progressbar"); -$(_2).html("
    "); -return $(_2); -}; -function _3(_4,_5){ -var _6=$.data(_4,"progressbar").options; -var _7=$.data(_4,"progressbar").bar; -if(_5){ -_6.width=_5; -} -_7._outerWidth(_6.width)._outerHeight(_6.height); -_7.find("div.progressbar-text").width(_7.width()); -_7.find("div.progressbar-text,div.progressbar-value").css({height:_7.height()+"px",lineHeight:_7.height()+"px"}); -}; -$.fn.progressbar=function(_8,_9){ -if(typeof _8=="string"){ -var _a=$.fn.progressbar.methods[_8]; -if(_a){ -return _a(this,_9); -} -} -_8=_8||{}; -return this.each(function(){ -var _b=$.data(this,"progressbar"); -if(_b){ -$.extend(_b.options,_8); -}else{ -_b=$.data(this,"progressbar",{options:$.extend({},$.fn.progressbar.defaults,$.fn.progressbar.parseOptions(this),_8),bar:_1(this)}); -} -$(this).progressbar("setValue",_b.options.value); -_3(this); -}); -}; -$.fn.progressbar.methods={options:function(jq){ -return $.data(jq[0],"progressbar").options; -},resize:function(jq,_c){ -return jq.each(function(){ -_3(this,_c); -}); -},getValue:function(jq){ -return $.data(jq[0],"progressbar").options.value; -},setValue:function(jq,_d){ -if(_d<0){ -_d=0; -} -if(_d>100){ -_d=100; -} -return jq.each(function(){ -var _e=$.data(this,"progressbar").options; -var _f=_e.text.replace(/{value}/,_d); -var _10=_e.value; -_e.value=_d; -$(this).find("div.progressbar-value").width(_d+"%"); -$(this).find("div.progressbar-text").html(_f); -if(_10!=_d){ -_e.onChange.call(this,_d,_10); -} -}); -}}; -$.fn.progressbar.parseOptions=function(_11){ -return $.extend({},$.parser.parseOptions(_11,["width","height","text",{value:"number"}])); -}; -$.fn.progressbar.defaults={width:"auto",height:22,value:0,text:"{value}%",onChange:function(_12,_13){ -}}; -})(jQuery); - diff --git a/src/main/webapp/js/easyui-1.3.5/plugins/jquery.propertygrid.js b/src/main/webapp/js/easyui-1.3.5/plugins/jquery.propertygrid.js deleted file mode 100644 index 3f700374..00000000 --- a/src/main/webapp/js/easyui-1.3.5/plugins/jquery.propertygrid.js +++ /dev/null @@ -1,237 +0,0 @@ -/** - * jQuery EasyUI 1.3.5 - * - * Copyright (c) 2009-2013 www.jeasyui.com. All rights reserved. - * - * Licensed under the GPL or commercial licenses - * To use it on other terms please contact us: info@jeasyui.com - * http://www.gnu.org/licenses/gpl.txt - * http://www.jeasyui.com/license_commercial.php - * - */ -(function($){ -var _1; -function _2(_3){ -var _4=$.data(_3,"propertygrid"); -var _5=$.data(_3,"propertygrid").options; -$(_3).datagrid($.extend({},_5,{cls:"propertygrid",view:(_5.showGroup?_5.groupView:_5.view),onClickRow:function(_6,_7){ -if(_1!=this){ -_a(_1); -_1=this; -} -if(_5.editIndex!=_6&&_7.editor){ -var _8=$(this).datagrid("getColumnOption","value"); -_8.editor=_7.editor; -_a(_1); -$(this).datagrid("beginEdit",_6); -$(this).datagrid("getEditors",_6)[0].target.focus(); -_5.editIndex=_6; -} -_5.onClickRow.call(_3,_6,_7); -},loadFilter:function(_9){ -_a(this); -return _5.loadFilter.call(this,_9); -}})); -$(document).unbind(".propertygrid").bind("mousedown.propertygrid",function(e){ -var p=$(e.target).closest("div.datagrid-view,div.combo-panel"); -if(p.length){ -return; -} -_a(_1); -_1=undefined; -}); -}; -function _a(_b){ -var t=$(_b); -if(!t.length){ -return; -} -var _c=$.data(_b,"propertygrid").options; -var _d=_c.editIndex; -if(_d==undefined){ -return; -} -var ed=t.datagrid("getEditors",_d)[0]; -if(ed){ -ed.target.blur(); -if(t.datagrid("validateRow",_d)){ -t.datagrid("endEdit",_d); -}else{ -t.datagrid("cancelEdit",_d); -} -} -_c.editIndex=undefined; -}; -$.fn.propertygrid=function(_e,_f){ -if(typeof _e=="string"){ -var _10=$.fn.propertygrid.methods[_e]; -if(_10){ -return _10(this,_f); -}else{ -return this.datagrid(_e,_f); -} -} -_e=_e||{}; -return this.each(function(){ -var _11=$.data(this,"propertygrid"); -if(_11){ -$.extend(_11.options,_e); -}else{ -var _12=$.extend({},$.fn.propertygrid.defaults,$.fn.propertygrid.parseOptions(this),_e); -_12.frozenColumns=$.extend(true,[],_12.frozenColumns); -_12.columns=$.extend(true,[],_12.columns); -$.data(this,"propertygrid",{options:_12}); -} -_2(this); -}); -}; -$.fn.propertygrid.methods={options:function(jq){ -return $.data(jq[0],"propertygrid").options; -}}; -$.fn.propertygrid.parseOptions=function(_13){ -return $.extend({},$.fn.datagrid.parseOptions(_13),$.parser.parseOptions(_13,[{showGroup:"boolean"}])); -}; -var _14=$.extend({},$.fn.datagrid.defaults.view,{render:function(_15,_16,_17){ -var _18=[]; -var _19=this.groups; -for(var i=0;i<_19.length;i++){ -_18.push(this.renderGroup.call(this,_15,i,_19[i],_17)); -} -$(_16).html(_18.join("")); -},renderGroup:function(_1a,_1b,_1c,_1d){ -var _1e=$.data(_1a,"datagrid"); -var _1f=_1e.options; -var _20=$(_1a).datagrid("getColumnFields",_1d); -var _21=[]; -_21.push("
    "); -_21.push(""); -_21.push(""); -if((_1d&&(_1f.rownumbers||_1f.frozenColumns.length))||(!_1d&&!(_1f.rownumbers||_1f.frozenColumns.length))){ -_21.push(""); -} -_21.push(""); -_21.push(""); -_21.push("
     "); -if(!_1d){ -_21.push(""); -_21.push(_1f.groupFormatter.call(_1a,_1c.value,_1c.rows)); -_21.push(""); -} -_21.push("
    "); -_21.push("
    "); -_21.push(""); -var _22=_1c.startIndex; -for(var j=0;j<_1c.rows.length;j++){ -var css=_1f.rowStyler?_1f.rowStyler.call(_1a,_22,_1c.rows[j]):""; -var _23=""; -var _24=""; -if(typeof css=="string"){ -_24=css; -}else{ -if(css){ -_23=css["class"]||""; -_24=css["style"]||""; -} -} -var cls="class=\"datagrid-row "+(_22%2&&_1f.striped?"datagrid-row-alt ":" ")+_23+"\""; -var _25=_24?"style=\""+_24+"\"":""; -var _26=_1e.rowIdPrefix+"-"+(_1d?1:2)+"-"+_22; -_21.push(""); -_21.push(this.renderRow.call(this,_1a,_20,_1d,_22,_1c.rows[j])); -_21.push(""); -_22++; -} -_21.push("
    "); -return _21.join(""); -},bindEvents:function(_27){ -var _28=$.data(_27,"datagrid"); -var dc=_28.dc; -var _29=dc.body1.add(dc.body2); -var _2a=($.data(_29[0],"events")||$._data(_29[0],"events")).click[0].handler; -_29.unbind("click").bind("click",function(e){ -var tt=$(e.target); -var _2b=tt.closest("span.datagrid-row-expander"); -if(_2b.length){ -var _2c=_2b.closest("div.datagrid-group").attr("group-index"); -if(_2b.hasClass("datagrid-row-collapse")){ -$(_27).datagrid("collapseGroup",_2c); -}else{ -$(_27).datagrid("expandGroup",_2c); -} -}else{ -_2a(e); -} -e.stopPropagation(); -}); -},onBeforeRender:function(_2d,_2e){ -var _2f=$.data(_2d,"datagrid"); -var _30=_2f.options; -_31(); -var _32=[]; -for(var i=0;i<_2e.length;i++){ -var row=_2e[i]; -var _33=_34(row[_30.groupField]); -if(!_33){ -_33={value:row[_30.groupField],rows:[row]}; -_32.push(_33); -}else{ -_33.rows.push(row); -} -} -var _35=0; -var _36=[]; -for(var i=0;i<_32.length;i++){ -var _33=_32[i]; -_33.startIndex=_35; -_35+=_33.rows.length; -_36=_36.concat(_33.rows); -} -_2f.data.rows=_36; -this.groups=_32; -var _37=this; -setTimeout(function(){ -_37.bindEvents(_2d); -},0); -function _34(_38){ -for(var i=0;i<_32.length;i++){ -var _39=_32[i]; -if(_39.value==_38){ -return _39; -} -} -return null; -}; -function _31(){ -if(!$("#datagrid-group-style").length){ -$("head").append(""); -} -}; -}}); -$.extend($.fn.datagrid.methods,{expandGroup:function(jq,_3a){ -return jq.each(function(){ -var _3b=$.data(this,"datagrid").dc.view; -var _3c=_3b.find(_3a!=undefined?"div.datagrid-group[group-index=\""+_3a+"\"]":"div.datagrid-group"); -var _3d=_3c.find("span.datagrid-row-expander"); -if(_3d.hasClass("datagrid-row-expand")){ -_3d.removeClass("datagrid-row-expand").addClass("datagrid-row-collapse"); -_3c.next("table").show(); -} -$(this).datagrid("fixRowHeight"); -}); -},collapseGroup:function(jq,_3e){ -return jq.each(function(){ -var _3f=$.data(this,"datagrid").dc.view; -var _40=_3f.find(_3e!=undefined?"div.datagrid-group[group-index=\""+_3e+"\"]":"div.datagrid-group"); -var _41=_40.find("span.datagrid-row-expander"); -if(_41.hasClass("datagrid-row-collapse")){ -_41.removeClass("datagrid-row-collapse").addClass("datagrid-row-expand"); -_40.next("table").hide(); -} -$(this).datagrid("fixRowHeight"); -}); -}}); -$.fn.propertygrid.defaults=$.extend({},$.fn.datagrid.defaults,{singleSelect:true,remoteSort:false,fitColumns:true,loadMsg:"",frozenColumns:[[{field:"f",width:16,resizable:false}]],columns:[[{field:"name",title:"Name",width:100,sortable:true},{field:"value",title:"Value",width:100,resizable:false}]],showGroup:false,groupView:_14,groupField:"group",groupFormatter:function(_42,_43){ -return _42; -}}); -})(jQuery); - diff --git a/src/main/webapp/js/easyui-1.3.5/plugins/jquery.resizable.js b/src/main/webapp/js/easyui-1.3.5/plugins/jquery.resizable.js deleted file mode 100644 index 2b4634e3..00000000 --- a/src/main/webapp/js/easyui-1.3.5/plugins/jquery.resizable.js +++ /dev/null @@ -1,172 +0,0 @@ -/** - * jQuery EasyUI 1.3.5 - * - * Copyright (c) 2009-2013 www.jeasyui.com. All rights reserved. - * - * Licensed under the GPL or commercial licenses - * To use it on other terms please contact us: info@jeasyui.com - * http://www.gnu.org/licenses/gpl.txt - * http://www.jeasyui.com/license_commercial.php - * - */ -(function($){ -$.fn.resizable=function(_1,_2){ -if(typeof _1=="string"){ -return $.fn.resizable.methods[_1](this,_2); -} -function _3(e){ -var _4=e.data; -var _5=$.data(_4.target,"resizable").options; -if(_4.dir.indexOf("e")!=-1){ -var _6=_4.startWidth+e.pageX-_4.startX; -_6=Math.min(Math.max(_6,_5.minWidth),_5.maxWidth); -_4.width=_6; -} -if(_4.dir.indexOf("s")!=-1){ -var _7=_4.startHeight+e.pageY-_4.startY; -_7=Math.min(Math.max(_7,_5.minHeight),_5.maxHeight); -_4.height=_7; -} -if(_4.dir.indexOf("w")!=-1){ -var _6=_4.startWidth-e.pageX+_4.startX; -_6=Math.min(Math.max(_6,_5.minWidth),_5.maxWidth); -_4.width=_6; -_4.left=_4.startLeft+_4.startWidth-_4.width; -} -if(_4.dir.indexOf("n")!=-1){ -var _7=_4.startHeight-e.pageY+_4.startY; -_7=Math.min(Math.max(_7,_5.minHeight),_5.maxHeight); -_4.height=_7; -_4.top=_4.startTop+_4.startHeight-_4.height; -} -}; -function _8(e){ -var _9=e.data; -var t=$(_9.target); -t.css({left:_9.left,top:_9.top}); -if(t.outerWidth()!=_9.width){ -t._outerWidth(_9.width); -} -if(t.outerHeight()!=_9.height){ -t._outerHeight(_9.height); -} -}; -function _a(e){ -$.fn.resizable.isResizing=true; -$.data(e.data.target,"resizable").options.onStartResize.call(e.data.target,e); -return false; -}; -function _b(e){ -_3(e); -if($.data(e.data.target,"resizable").options.onResize.call(e.data.target,e)!=false){ -_8(e); -} -return false; -}; -function _c(e){ -$.fn.resizable.isResizing=false; -_3(e,true); -_8(e); -$.data(e.data.target,"resizable").options.onStopResize.call(e.data.target,e); -$(document).unbind(".resizable"); -$("body").css("cursor",""); -return false; -}; -return this.each(function(){ -var _d=null; -var _e=$.data(this,"resizable"); -if(_e){ -$(this).unbind(".resizable"); -_d=$.extend(_e.options,_1||{}); -}else{ -_d=$.extend({},$.fn.resizable.defaults,$.fn.resizable.parseOptions(this),_1||{}); -$.data(this,"resizable",{options:_d}); -} -if(_d.disabled==true){ -return; -} -$(this).bind("mousemove.resizable",{target:this},function(e){ -if($.fn.resizable.isResizing){ -return; -} -var _f=_10(e); -if(_f==""){ -$(e.data.target).css("cursor",""); -}else{ -$(e.data.target).css("cursor",_f+"-resize"); -} -}).bind("mouseleave.resizable",{target:this},function(e){ -$(e.data.target).css("cursor",""); -}).bind("mousedown.resizable",{target:this},function(e){ -var dir=_10(e); -if(dir==""){ -return; -} -function _11(css){ -var val=parseInt($(e.data.target).css(css)); -if(isNaN(val)){ -return 0; -}else{ -return val; -} -}; -var _12={target:e.data.target,dir:dir,startLeft:_11("left"),startTop:_11("top"),left:_11("left"),top:_11("top"),startX:e.pageX,startY:e.pageY,startWidth:$(e.data.target).outerWidth(),startHeight:$(e.data.target).outerHeight(),width:$(e.data.target).outerWidth(),height:$(e.data.target).outerHeight(),deltaWidth:$(e.data.target).outerWidth()-$(e.data.target).width(),deltaHeight:$(e.data.target).outerHeight()-$(e.data.target).height()}; -$(document).bind("mousedown.resizable",_12,_a); -$(document).bind("mousemove.resizable",_12,_b); -$(document).bind("mouseup.resizable",_12,_c); -$("body").css("cursor",dir+"-resize"); -}); -function _10(e){ -var tt=$(e.data.target); -var dir=""; -var _13=tt.offset(); -var _14=tt.outerWidth(); -var _15=tt.outerHeight(); -var _16=_d.edge; -if(e.pageY>_13.top&&e.pageY<_13.top+_16){ -dir+="n"; -}else{ -if(e.pageY<_13.top+_15&&e.pageY>_13.top+_15-_16){ -dir+="s"; -} -} -if(e.pageX>_13.left&&e.pageX<_13.left+_16){ -dir+="w"; -}else{ -if(e.pageX<_13.left+_14&&e.pageX>_13.left+_14-_16){ -dir+="e"; -} -} -var _17=_d.handles.split(","); -for(var i=0;i<_17.length;i++){ -var _18=_17[i].replace(/(^\s*)|(\s*$)/g,""); -if(_18=="all"||_18==dir){ -return dir; -} -} -return ""; -}; -}); -}; -$.fn.resizable.methods={options:function(jq){ -return $.data(jq[0],"resizable").options; -},enable:function(jq){ -return jq.each(function(){ -$(this).resizable({disabled:false}); -}); -},disable:function(jq){ -return jq.each(function(){ -$(this).resizable({disabled:true}); -}); -}}; -$.fn.resizable.parseOptions=function(_19){ -var t=$(_19); -return $.extend({},$.parser.parseOptions(_19,["handles",{minWidth:"number",minHeight:"number",maxWidth:"number",maxHeight:"number",edge:"number"}]),{disabled:(t.attr("disabled")?true:undefined)}); -}; -$.fn.resizable.defaults={disabled:false,handles:"n, e, s, w, ne, se, sw, nw, all",minWidth:10,minHeight:10,maxWidth:10000,maxHeight:10000,edge:5,onStartResize:function(e){ -},onResize:function(e){ -},onStopResize:function(e){ -}}; -$.fn.resizable.isResizing=false; -})(jQuery); - diff --git a/src/main/webapp/js/easyui-1.3.5/plugins/jquery.searchbox.js b/src/main/webapp/js/easyui-1.3.5/plugins/jquery.searchbox.js deleted file mode 100644 index 92bd8df4..00000000 --- a/src/main/webapp/js/easyui-1.3.5/plugins/jquery.searchbox.js +++ /dev/null @@ -1,184 +0,0 @@ -/** - * jQuery EasyUI 1.3.5 - * - * Copyright (c) 2009-2013 www.jeasyui.com. All rights reserved. - * - * Licensed under the GPL or commercial licenses - * To use it on other terms please contact us: info@jeasyui.com - * http://www.gnu.org/licenses/gpl.txt - * http://www.jeasyui.com/license_commercial.php - * - */ -(function($){ -function _1(_2){ -$(_2).addClass("searchbox-f").hide(); -var _3=$("").insertAfter(_2); -var _4=$("").appendTo(_3); -$("").appendTo(_3); -var _5=$(_2).attr("name"); -if(_5){ -_4.attr("name",_5); -$(_2).removeAttr("name").attr("searchboxName",_5); -} -return _3; -}; -function _6(_7,_8){ -var _9=$.data(_7,"searchbox").options; -var sb=$.data(_7,"searchbox").searchbox; -if(_8){ -_9.width=_8; -} -sb.appendTo("body"); -if(isNaN(_9.width)){ -_9.width=sb._outerWidth(); -} -var _a=sb.find("span.searchbox-button"); -var _b=sb.find("a.searchbox-menu"); -var _c=sb.find("input.searchbox-text"); -sb._outerWidth(_9.width)._outerHeight(_9.height); -_c._outerWidth(sb.width()-_b._outerWidth()-_a._outerWidth()); -_c.css({height:sb.height()+"px",lineHeight:sb.height()+"px"}); -_b._outerHeight(sb.height()); -_a._outerHeight(sb.height()); -var _d=_b.find("span.l-btn-left"); -_d._outerHeight(sb.height()); -_d.find("span.l-btn-text,span.m-btn-downarrow").css({height:_d.height()+"px",lineHeight:_d.height()+"px"}); -sb.insertAfter(_7); -}; -function _e(_f){ -var _10=$.data(_f,"searchbox"); -var _11=_10.options; -if(_11.menu){ -_10.menu=$(_11.menu).menu({onClick:function(_12){ -_13(_12); -}}); -var _14=_10.menu.children("div.menu-item:first"); -_10.menu.children("div.menu-item").each(function(){ -var _15=$.extend({},$.parser.parseOptions(this),{selected:($(this).attr("selected")?true:undefined)}); -if(_15.selected){ -_14=$(this); -return false; -} -}); -_14.triggerHandler("click"); -}else{ -_10.searchbox.find("a.searchbox-menu").remove(); -_10.menu=null; -} -function _13(_16){ -_10.searchbox.find("a.searchbox-menu").remove(); -var mb=$("").html(_16.text); -mb.prependTo(_10.searchbox).menubutton({menu:_10.menu,iconCls:_16.iconCls}); -_10.searchbox.find("input.searchbox-text").attr("name",_16.name||_16.text); -_6(_f); -}; -}; -function _17(_18){ -var _19=$.data(_18,"searchbox"); -var _1a=_19.options; -var _1b=_19.searchbox.find("input.searchbox-text"); -var _1c=_19.searchbox.find(".searchbox-button"); -_1b.unbind(".searchbox").bind("blur.searchbox",function(e){ -_1a.value=$(this).val(); -if(_1a.value==""){ -$(this).val(_1a.prompt); -$(this).addClass("searchbox-prompt"); -}else{ -$(this).removeClass("searchbox-prompt"); -} -}).bind("focus.searchbox",function(e){ -if($(this).val()!=_1a.value){ -$(this).val(_1a.value); -} -$(this).removeClass("searchbox-prompt"); -}).bind("keydown.searchbox",function(e){ -if(e.keyCode==13){ -e.preventDefault(); -_1a.value=$(this).val(); -_1a.searcher.call(_18,_1a.value,_1b._propAttr("name")); -return false; -} -}); -_1c.unbind(".searchbox").bind("click.searchbox",function(){ -_1a.searcher.call(_18,_1a.value,_1b._propAttr("name")); -}).bind("mouseenter.searchbox",function(){ -$(this).addClass("searchbox-button-hover"); -}).bind("mouseleave.searchbox",function(){ -$(this).removeClass("searchbox-button-hover"); -}); -}; -function _1d(_1e){ -var _1f=$.data(_1e,"searchbox"); -var _20=_1f.options; -var _21=_1f.searchbox.find("input.searchbox-text"); -if(_20.value==""){ -_21.val(_20.prompt); -_21.addClass("searchbox-prompt"); -}else{ -_21.val(_20.value); -_21.removeClass("searchbox-prompt"); -} -}; -$.fn.searchbox=function(_22,_23){ -if(typeof _22=="string"){ -return $.fn.searchbox.methods[_22](this,_23); -} -_22=_22||{}; -return this.each(function(){ -var _24=$.data(this,"searchbox"); -if(_24){ -$.extend(_24.options,_22); -}else{ -_24=$.data(this,"searchbox",{options:$.extend({},$.fn.searchbox.defaults,$.fn.searchbox.parseOptions(this),_22),searchbox:_1(this)}); -} -_e(this); -_1d(this); -_17(this); -_6(this); -}); -}; -$.fn.searchbox.methods={options:function(jq){ -return $.data(jq[0],"searchbox").options; -},menu:function(jq){ -return $.data(jq[0],"searchbox").menu; -},textbox:function(jq){ -return $.data(jq[0],"searchbox").searchbox.find("input.searchbox-text"); -},getValue:function(jq){ -return $.data(jq[0],"searchbox").options.value; -},setValue:function(jq,_25){ -return jq.each(function(){ -$(this).searchbox("options").value=_25; -$(this).searchbox("textbox").val(_25); -$(this).searchbox("textbox").blur(); -}); -},getName:function(jq){ -return $.data(jq[0],"searchbox").searchbox.find("input.searchbox-text").attr("name"); -},selectName:function(jq,_26){ -return jq.each(function(){ -var _27=$.data(this,"searchbox").menu; -if(_27){ -_27.children("div.menu-item[name=\""+_26+"\"]").triggerHandler("click"); -} -}); -},destroy:function(jq){ -return jq.each(function(){ -var _28=$(this).searchbox("menu"); -if(_28){ -_28.menu("destroy"); -} -$.data(this,"searchbox").searchbox.remove(); -$(this).remove(); -}); -},resize:function(jq,_29){ -return jq.each(function(){ -_6(this,_29); -}); -}}; -$.fn.searchbox.parseOptions=function(_2a){ -var t=$(_2a); -return $.extend({},$.parser.parseOptions(_2a,["width","height","prompt","menu"]),{value:t.val(),searcher:(t.attr("searcher")?eval(t.attr("searcher")):undefined)}); -}; -$.fn.searchbox.defaults={width:"auto",height:22,prompt:"",value:"",menu:null,searcher:function(_2b,_2c){ -}}; -})(jQuery); - diff --git a/src/main/webapp/js/easyui-1.3.5/plugins/jquery.slider.js b/src/main/webapp/js/easyui-1.3.5/plugins/jquery.slider.js deleted file mode 100644 index 1959bdb8..00000000 --- a/src/main/webapp/js/easyui-1.3.5/plugins/jquery.slider.js +++ /dev/null @@ -1,280 +0,0 @@ -/** - * jQuery EasyUI 1.3.5 - * - * Copyright (c) 2009-2013 www.jeasyui.com. All rights reserved. - * - * Licensed under the GPL or commercial licenses - * To use it on other terms please contact us: info@jeasyui.com - * http://www.gnu.org/licenses/gpl.txt - * http://www.jeasyui.com/license_commercial.php - * - */ -(function($){ -function _1(_2){ -var _3=$("
    "+"
    "+""+""+"
    "+"
    "+"
    "+"
    "+""+"
    ").insertAfter(_2); -var t=$(_2); -t.addClass("slider-f").hide(); -var _4=t.attr("name"); -if(_4){ -_3.find("input.slider-value").attr("name",_4); -t.removeAttr("name").attr("sliderName",_4); -} -return _3; -}; -function _5(_6,_7){ -var _8=$.data(_6,"slider"); -var _9=_8.options; -var _a=_8.slider; -if(_7){ -if(_7.width){ -_9.width=_7.width; -} -if(_7.height){ -_9.height=_7.height; -} -} -if(_9.mode=="h"){ -_a.css("height",""); -_a.children("div").css("height",""); -if(!isNaN(_9.width)){ -_a.width(_9.width); -} -}else{ -_a.css("width",""); -_a.children("div").css("width",""); -if(!isNaN(_9.height)){ -_a.height(_9.height); -_a.find("div.slider-rule").height(_9.height); -_a.find("div.slider-rulelabel").height(_9.height); -_a.find("div.slider-inner")._outerHeight(_9.height); -} -} -_b(_6); -}; -function _c(_d){ -var _e=$.data(_d,"slider"); -var _f=_e.options; -var _10=_e.slider; -var aa=_f.mode=="h"?_f.rule:_f.rule.slice(0).reverse(); -if(_f.reversed){ -aa=aa.slice(0).reverse(); -} -_11(aa); -function _11(aa){ -var _12=_10.find("div.slider-rule"); -var _13=_10.find("div.slider-rulelabel"); -_12.empty(); -_13.empty(); -for(var i=0;i").appendTo(_12); -_15.css((_f.mode=="h"?"left":"top"),_14); -if(aa[i]!="|"){ -_15=$("").appendTo(_13); -_15.html(aa[i]); -if(_f.mode=="h"){ -_15.css({left:_14,marginLeft:-Math.round(_15.outerWidth()/2)}); -}else{ -_15.css({top:_14,marginTop:-Math.round(_15.outerHeight()/2)}); -} -} -} -}; -}; -function _16(_17){ -var _18=$.data(_17,"slider"); -var _19=_18.options; -var _1a=_18.slider; -_1a.removeClass("slider-h slider-v slider-disabled"); -_1a.addClass(_19.mode=="h"?"slider-h":"slider-v"); -_1a.addClass(_19.disabled?"slider-disabled":""); -_1a.find("a.slider-handle").draggable({axis:_19.mode,cursor:"pointer",disabled:_19.disabled,onDrag:function(e){ -var _1b=e.data.left; -var _1c=_1a.width(); -if(_19.mode!="h"){ -_1b=e.data.top; -_1c=_1a.height(); -} -if(_1b<0||_1b>_1c){ -return false; -}else{ -var _1d=_32(_17,_1b); -_1e(_1d); -return false; -} -},onBeforeDrag:function(){ -_18.isDragging=true; -},onStartDrag:function(){ -_19.onSlideStart.call(_17,_19.value); -},onStopDrag:function(e){ -var _1f=_32(_17,(_19.mode=="h"?e.data.left:e.data.top)); -_1e(_1f); -_19.onSlideEnd.call(_17,_19.value); -_19.onComplete.call(_17,_19.value); -_18.isDragging=false; -}}); -_1a.find("div.slider-inner").unbind(".slider").bind("mousedown.slider",function(e){ -if(_18.isDragging){ -return; -} -var pos=$(this).offset(); -var _20=_32(_17,(_19.mode=="h"?(e.pageX-pos.left):(e.pageY-pos.top))); -_1e(_20); -_19.onComplete.call(_17,_19.value); -}); -function _1e(_21){ -var s=Math.abs(_21%_19.step); -if(s<_19.step/2){ -_21-=s; -}else{ -_21=_21-s+_19.step; -} -_22(_17,_21); -}; -}; -function _22(_23,_24){ -var _25=$.data(_23,"slider"); -var _26=_25.options; -var _27=_25.slider; -var _28=_26.value; -if(_24<_26.min){ -_24=_26.min; -} -if(_24>_26.max){ -_24=_26.max; -} -_26.value=_24; -$(_23).val(_24); -_27.find("input.slider-value").val(_24); -var pos=_29(_23,_24); -var tip=_27.find(".slider-tip"); -if(_26.showTip){ -tip.show(); -tip.html(_26.tipFormatter.call(_23,_26.value)); -}else{ -tip.hide(); -} -if(_26.mode=="h"){ -var _2a="left:"+pos+"px;"; -_27.find(".slider-handle").attr("style",_2a); -tip.attr("style",_2a+"margin-left:"+(-Math.round(tip.outerWidth()/2))+"px"); -}else{ -var _2a="top:"+pos+"px;"; -_27.find(".slider-handle").attr("style",_2a); -tip.attr("style",_2a+"margin-left:"+(-Math.round(tip.outerWidth()))+"px"); -} -if(_28!=_24){ -_26.onChange.call(_23,_24,_28); -} -}; -function _b(_2b){ -var _2c=$.data(_2b,"slider").options; -var fn=_2c.onChange; -_2c.onChange=function(){ -}; -_22(_2b,_2c.value); -_2c.onChange=fn; -}; -function _29(_2d,_2e){ -var _2f=$.data(_2d,"slider"); -var _30=_2f.options; -var _31=_2f.slider; -if(_30.mode=="h"){ -var pos=(_2e-_30.min)/(_30.max-_30.min)*_31.width(); -if(_30.reversed){ -pos=_31.width()-pos; -} -}else{ -var pos=_31.height()-(_2e-_30.min)/(_30.max-_30.min)*_31.height(); -if(_30.reversed){ -pos=_31.height()-pos; -} -} -return pos.toFixed(0); -}; -function _32(_33,pos){ -var _34=$.data(_33,"slider"); -var _35=_34.options; -var _36=_34.slider; -if(_35.mode=="h"){ -var _37=_35.min+(_35.max-_35.min)*(pos/_36.width()); -}else{ -var _37=_35.min+(_35.max-_35.min)*((_36.height()-pos)/_36.height()); -} -return _35.reversed?_35.max-_37.toFixed(0):_37.toFixed(0); -}; -$.fn.slider=function(_38,_39){ -if(typeof _38=="string"){ -return $.fn.slider.methods[_38](this,_39); -} -_38=_38||{}; -return this.each(function(){ -var _3a=$.data(this,"slider"); -if(_3a){ -$.extend(_3a.options,_38); -}else{ -_3a=$.data(this,"slider",{options:$.extend({},$.fn.slider.defaults,$.fn.slider.parseOptions(this),_38),slider:_1(this)}); -$(this).removeAttr("disabled"); -} -var _3b=_3a.options; -_3b.min=parseFloat(_3b.min); -_3b.max=parseFloat(_3b.max); -_3b.value=parseFloat(_3b.value); -_3b.step=parseFloat(_3b.step); -_3b.originalValue=_3b.value; -_16(this); -_c(this); -_5(this); -}); -}; -$.fn.slider.methods={options:function(jq){ -return $.data(jq[0],"slider").options; -},destroy:function(jq){ -return jq.each(function(){ -$.data(this,"slider").slider.remove(); -$(this).remove(); -}); -},resize:function(jq,_3c){ -return jq.each(function(){ -_5(this,_3c); -}); -},getValue:function(jq){ -return jq.slider("options").value; -},setValue:function(jq,_3d){ -return jq.each(function(){ -_22(this,_3d); -}); -},clear:function(jq){ -return jq.each(function(){ -var _3e=$(this).slider("options"); -_22(this,_3e.min); -}); -},reset:function(jq){ -return jq.each(function(){ -var _3f=$(this).slider("options"); -_22(this,_3f.originalValue); -}); -},enable:function(jq){ -return jq.each(function(){ -$.data(this,"slider").options.disabled=false; -_16(this); -}); -},disable:function(jq){ -return jq.each(function(){ -$.data(this,"slider").options.disabled=true; -_16(this); -}); -}}; -$.fn.slider.parseOptions=function(_40){ -var t=$(_40); -return $.extend({},$.parser.parseOptions(_40,["width","height","mode",{reversed:"boolean",showTip:"boolean",min:"number",max:"number",step:"number"}]),{value:(t.val()||undefined),disabled:(t.attr("disabled")?true:undefined),rule:(t.attr("rule")?eval(t.attr("rule")):undefined)}); -}; -$.fn.slider.defaults={width:"auto",height:"auto",mode:"h",reversed:false,showTip:false,disabled:false,value:0,min:0,max:100,step:1,rule:[],tipFormatter:function(_41){ -return _41; -},onChange:function(_42,_43){ -},onSlideStart:function(_44){ -},onSlideEnd:function(_45){ -},onComplete:function(_46){ -}}; -})(jQuery); - diff --git a/src/main/webapp/js/easyui-1.3.5/plugins/jquery.spinner.js b/src/main/webapp/js/easyui-1.3.5/plugins/jquery.spinner.js deleted file mode 100644 index 47839f54..00000000 --- a/src/main/webapp/js/easyui-1.3.5/plugins/jquery.spinner.js +++ /dev/null @@ -1,152 +0,0 @@ -/** - * jQuery EasyUI 1.3.5 - * - * Copyright (c) 2009-2013 www.jeasyui.com. All rights reserved. - * - * Licensed under the GPL or commercial licenses - * To use it on other terms please contact us: info@jeasyui.com - * http://www.gnu.org/licenses/gpl.txt - * http://www.jeasyui.com/license_commercial.php - * - */ -(function($){ -function _1(_2){ -var _3=$(""+""+""+""+""+"").insertAfter(_2); -$(_2).addClass("spinner-text spinner-f").prependTo(_3); -return _3; -}; -function _4(_5,_6){ -var _7=$.data(_5,"spinner").options; -var _8=$.data(_5,"spinner").spinner; -if(_6){ -_7.width=_6; -} -var _9=$("
    ").insertBefore(_8); -_8.appendTo("body"); -if(isNaN(_7.width)){ -_7.width=$(_5).outerWidth(); -} -var _a=_8.find(".spinner-arrow"); -_8._outerWidth(_7.width)._outerHeight(_7.height); -$(_5)._outerWidth(_8.width()-_a.outerWidth()); -$(_5).css({height:_8.height()+"px",lineHeight:_8.height()+"px"}); -_a._outerHeight(_8.height()); -_a.find("span")._outerHeight(_a.height()/2); -_8.insertAfter(_9); -_9.remove(); -}; -function _b(_c){ -var _d=$.data(_c,"spinner").options; -var _e=$.data(_c,"spinner").spinner; -_e.find(".spinner-arrow-up,.spinner-arrow-down").unbind(".spinner"); -if(!_d.disabled){ -_e.find(".spinner-arrow-up").bind("mouseenter.spinner",function(){ -$(this).addClass("spinner-arrow-hover"); -}).bind("mouseleave.spinner",function(){ -$(this).removeClass("spinner-arrow-hover"); -}).bind("click.spinner",function(){ -_d.spin.call(_c,false); -_d.onSpinUp.call(_c); -$(_c).validatebox("validate"); -}); -_e.find(".spinner-arrow-down").bind("mouseenter.spinner",function(){ -$(this).addClass("spinner-arrow-hover"); -}).bind("mouseleave.spinner",function(){ -$(this).removeClass("spinner-arrow-hover"); -}).bind("click.spinner",function(){ -_d.spin.call(_c,true); -_d.onSpinDown.call(_c); -$(_c).validatebox("validate"); -}); -} -}; -function _f(_10,_11){ -var _12=$.data(_10,"spinner").options; -if(_11){ -_12.disabled=true; -$(_10).attr("disabled",true); -}else{ -_12.disabled=false; -$(_10).removeAttr("disabled"); -} -}; -$.fn.spinner=function(_13,_14){ -if(typeof _13=="string"){ -var _15=$.fn.spinner.methods[_13]; -if(_15){ -return _15(this,_14); -}else{ -return this.validatebox(_13,_14); -} -} -_13=_13||{}; -return this.each(function(){ -var _16=$.data(this,"spinner"); -if(_16){ -$.extend(_16.options,_13); -}else{ -_16=$.data(this,"spinner",{options:$.extend({},$.fn.spinner.defaults,$.fn.spinner.parseOptions(this),_13),spinner:_1(this)}); -$(this).removeAttr("disabled"); -} -_16.options.originalValue=_16.options.value; -$(this).val(_16.options.value); -$(this).attr("readonly",!_16.options.editable); -_f(this,_16.options.disabled); -_4(this); -$(this).validatebox(_16.options); -_b(this); -}); -}; -$.fn.spinner.methods={options:function(jq){ -var _17=$.data(jq[0],"spinner").options; -return $.extend(_17,{value:jq.val()}); -},destroy:function(jq){ -return jq.each(function(){ -var _18=$.data(this,"spinner").spinner; -$(this).validatebox("destroy"); -_18.remove(); -}); -},resize:function(jq,_19){ -return jq.each(function(){ -_4(this,_19); -}); -},enable:function(jq){ -return jq.each(function(){ -_f(this,false); -_b(this); -}); -},disable:function(jq){ -return jq.each(function(){ -_f(this,true); -_b(this); -}); -},getValue:function(jq){ -return jq.val(); -},setValue:function(jq,_1a){ -return jq.each(function(){ -var _1b=$.data(this,"spinner").options; -_1b.value=_1a; -$(this).val(_1a); -}); -},clear:function(jq){ -return jq.each(function(){ -var _1c=$.data(this,"spinner").options; -_1c.value=""; -$(this).val(""); -}); -},reset:function(jq){ -return jq.each(function(){ -var _1d=$(this).spinner("options"); -$(this).spinner("setValue",_1d.originalValue); -}); -}}; -$.fn.spinner.parseOptions=function(_1e){ -var t=$(_1e); -return $.extend({},$.fn.validatebox.parseOptions(_1e),$.parser.parseOptions(_1e,["width","height","min","max",{increment:"number",editable:"boolean"}]),{value:(t.val()||undefined),disabled:(t.attr("disabled")?true:undefined)}); -}; -$.fn.spinner.defaults=$.extend({},$.fn.validatebox.defaults,{width:"auto",height:22,deltaX:19,value:"",min:null,max:null,increment:1,editable:true,disabled:false,spin:function(_1f){ -},onSpinUp:function(){ -},onSpinDown:function(){ -}}); -})(jQuery); - diff --git a/src/main/webapp/js/easyui-1.3.5/plugins/jquery.splitbutton.js b/src/main/webapp/js/easyui-1.3.5/plugins/jquery.splitbutton.js deleted file mode 100644 index 8138b1a4..00000000 --- a/src/main/webapp/js/easyui-1.3.5/plugins/jquery.splitbutton.js +++ /dev/null @@ -1,50 +0,0 @@ -/** - * jQuery EasyUI 1.3.5 - * - * Copyright (c) 2009-2013 www.jeasyui.com. All rights reserved. - * - * Licensed under the GPL or commercial licenses - * To use it on other terms please contact us: info@jeasyui.com - * http://www.gnu.org/licenses/gpl.txt - * http://www.jeasyui.com/license_commercial.php - * - */ -(function($){ -function _1(_2){ -var _3=$.data(_2,"splitbutton").options; -$(_2).menubutton(_3); -}; -$.fn.splitbutton=function(_4,_5){ -if(typeof _4=="string"){ -var _6=$.fn.splitbutton.methods[_4]; -if(_6){ -return _6(this,_5); -}else{ -return this.menubutton(_4,_5); -} -} -_4=_4||{}; -return this.each(function(){ -var _7=$.data(this,"splitbutton"); -if(_7){ -$.extend(_7.options,_4); -}else{ -$.data(this,"splitbutton",{options:$.extend({},$.fn.splitbutton.defaults,$.fn.splitbutton.parseOptions(this),_4)}); -$(this).removeAttr("disabled"); -} -_1(this); -}); -}; -$.fn.splitbutton.methods={options:function(jq){ -var _8=jq.menubutton("options"); -var _9=$.data(jq[0],"splitbutton").options; -$.extend(_9,{disabled:_8.disabled,toggle:_8.toggle,selected:_8.selected}); -return _9; -}}; -$.fn.splitbutton.parseOptions=function(_a){ -var t=$(_a); -return $.extend({},$.fn.linkbutton.parseOptions(_a),$.parser.parseOptions(_a,["menu",{plain:"boolean",duration:"number"}])); -}; -$.fn.splitbutton.defaults=$.extend({},$.fn.linkbutton.defaults,{plain:true,menu:null,duration:100,cls:{btn1:"s-btn-active",btn2:"s-btn-plain-active",arrow:"s-btn-downarrow",trigger:"s-btn-downarrow"}}); -})(jQuery); - diff --git a/src/main/webapp/js/easyui-1.3.5/plugins/jquery.tabs.js b/src/main/webapp/js/easyui-1.3.5/plugins/jquery.tabs.js deleted file mode 100644 index 87b742b6..00000000 --- a/src/main/webapp/js/easyui-1.3.5/plugins/jquery.tabs.js +++ /dev/null @@ -1,609 +0,0 @@ -/** - * jQuery EasyUI 1.3.5 - * - * Copyright (c) 2009-2013 www.jeasyui.com. All rights reserved. - * - * Licensed under the GPL or commercial licenses - * To use it on other terms please contact us: info@jeasyui.com - * http://www.gnu.org/licenses/gpl.txt - * http://www.jeasyui.com/license_commercial.php - * - */ -(function($){ -function _1(_2){ -var _3=$.data(_2,"tabs").options; -if(_3.tabPosition=="left"||_3.tabPosition=="right"||!_3.showHeader){ -return; -} -var _4=$(_2).children("div.tabs-header"); -var _5=_4.children("div.tabs-tool"); -var _6=_4.children("div.tabs-scroller-left"); -var _7=_4.children("div.tabs-scroller-right"); -var _8=_4.children("div.tabs-wrap"); -var _9=_4.outerHeight(); -if(_3.plain){ -_9-=_9-_4.height(); -} -_5._outerHeight(_9); -var _a=0; -$("ul.tabs li",_4).each(function(){ -_a+=$(this).outerWidth(true); -}); -var _b=_4.width()-_5._outerWidth(); -if(_a>_b){ -_6.add(_7).show()._outerHeight(_9); -if(_3.toolPosition=="left"){ -_5.css({left:_6.outerWidth(),right:""}); -_8.css({marginLeft:_6.outerWidth()+_5._outerWidth(),marginRight:_7._outerWidth(),width:_b-_6.outerWidth()-_7.outerWidth()}); -}else{ -_5.css({left:"",right:_7.outerWidth()}); -_8.css({marginLeft:_6.outerWidth(),marginRight:_7.outerWidth()+_5._outerWidth(),width:_b-_6.outerWidth()-_7.outerWidth()}); -} -}else{ -_6.add(_7).hide(); -if(_3.toolPosition=="left"){ -_5.css({left:0,right:""}); -_8.css({marginLeft:_5._outerWidth(),marginRight:0,width:_b}); -}else{ -_5.css({left:"",right:0}); -_8.css({marginLeft:0,marginRight:_5._outerWidth(),width:_b}); -} -} -}; -function _c(_d){ -var _e=$.data(_d,"tabs").options; -var _f=$(_d).children("div.tabs-header"); -if(_e.tools){ -if(typeof _e.tools=="string"){ -$(_e.tools).addClass("tabs-tool").appendTo(_f); -$(_e.tools).show(); -}else{ -_f.children("div.tabs-tool").remove(); -var _10=$("
    ").appendTo(_f); -var tr=_10.find("tr"); -for(var i=0;i<_e.tools.length;i++){ -var td=$("").appendTo(tr); -var _11=$("").appendTo(td); -_11[0].onclick=eval(_e.tools[i].handler||function(){ -}); -_11.linkbutton($.extend({},_e.tools[i],{plain:true})); -} -} -}else{ -_f.children("div.tabs-tool").remove(); -} -}; -function _12(_13){ -var _14=$.data(_13,"tabs"); -var _15=_14.options; -var cc=$(_13); -_15.fit?$.extend(_15,cc._fit()):cc._fit(false); -cc.width(_15.width).height(_15.height); -var _16=$(_13).children("div.tabs-header"); -var _17=$(_13).children("div.tabs-panels"); -var _18=_16.find("div.tabs-wrap"); -var ul=_18.find(".tabs"); -for(var i=0;i<_14.tabs.length;i++){ -var _19=_14.tabs[i].panel("options"); -var p_t=_19.tab.find("a.tabs-inner"); -var _1a=parseInt(_19.tabWidth||_15.tabWidth)||undefined; -if(_1a){ -p_t._outerWidth(_1a); -}else{ -p_t.css("width",""); -} -p_t._outerHeight(_15.tabHeight); -p_t.css("lineHeight",p_t.height()+"px"); -} -if(_15.tabPosition=="left"||_15.tabPosition=="right"){ -_16._outerWidth(_15.showHeader?_15.headerWidth:0); -_17._outerWidth(cc.width()-_16.outerWidth()); -_16.add(_17)._outerHeight(_15.height); -_18._outerWidth(_16.width()); -ul._outerWidth(_18.width()).css("height",""); -}else{ -var lrt=_16.children("div.tabs-scroller-left,div.tabs-scroller-right,div.tabs-tool"); -_16._outerWidth(_15.width).css("height",""); -if(_15.showHeader){ -_16.css("background-color",""); -_18.css("height",""); -lrt.show(); -}else{ -_16.css("background-color","transparent"); -_16._outerHeight(0); -_18._outerHeight(0); -lrt.hide(); -} -ul._outerHeight(_15.tabHeight).css("width",""); -_1(_13); -var _1b=_15.height; -if(!isNaN(_1b)){ -_17._outerHeight(_1b-_16.outerHeight()); -}else{ -_17.height("auto"); -} -var _1a=_15.width; -if(!isNaN(_1a)){ -_17._outerWidth(_1a); -}else{ -_17.width("auto"); -} -} -}; -function _1c(_1d){ -var _1e=$.data(_1d,"tabs").options; -var tab=_1f(_1d); -if(tab){ -var _20=$(_1d).children("div.tabs-panels"); -var _21=_1e.width=="auto"?"auto":_20.width(); -var _22=_1e.height=="auto"?"auto":_20.height(); -tab.panel("resize",{width:_21,height:_22}); -} -}; -function _23(_24){ -var _25=$.data(_24,"tabs").tabs; -var cc=$(_24); -cc.addClass("tabs-container"); -var pp=$("
    ").insertBefore(cc); -cc.children("div").each(function(){ -pp[0].appendChild(this); -}); -cc[0].appendChild(pp[0]); -$("
    "+"
    "+"
    "+"
    "+"
      "+"
      "+"
      ").prependTo(_24); -cc.children("div.tabs-panels").children("div").each(function(i){ -var _26=$.extend({},$.parser.parseOptions(this),{selected:($(this).attr("selected")?true:undefined)}); -var pp=$(this); -_25.push(pp); -_36(_24,pp,_26); -}); -cc.children("div.tabs-header").find(".tabs-scroller-left, .tabs-scroller-right").hover(function(){ -$(this).addClass("tabs-scroller-over"); -},function(){ -$(this).removeClass("tabs-scroller-over"); -}); -cc.bind("_resize",function(e,_27){ -var _28=$.data(_24,"tabs").options; -if(_28.fit==true||_27){ -_12(_24); -_1c(_24); -} -return false; -}); -}; -function _29(_2a){ -var _2b=$.data(_2a,"tabs"); -var _2c=_2b.options; -$(_2a).children("div.tabs-header").unbind().bind("click",function(e){ -if($(e.target).hasClass("tabs-scroller-left")){ -$(_2a).tabs("scrollBy",-_2c.scrollIncrement); -}else{ -if($(e.target).hasClass("tabs-scroller-right")){ -$(_2a).tabs("scrollBy",_2c.scrollIncrement); -}else{ -var li=$(e.target).closest("li"); -if(li.hasClass("tabs-disabled")){ -return; -} -var a=$(e.target).closest("a.tabs-close"); -if(a.length){ -_4c(_2a,_2d(li)); -}else{ -if(li.length){ -var _2e=_2d(li); -var _2f=_2b.tabs[_2e].panel("options"); -if(_2f.collapsible){ -_2f.closed?_41(_2a,_2e):_6b(_2a,_2e); -}else{ -_41(_2a,_2e); -} -} -} -} -} -}).bind("contextmenu",function(e){ -var li=$(e.target).closest("li"); -if(li.hasClass("tabs-disabled")){ -return; -} -if(li.length){ -_2c.onContextMenu.call(_2a,e,li.find("span.tabs-title").html(),_2d(li)); -} -}); -function _2d(li){ -var _30=0; -li.parent().children("li").each(function(i){ -if(li[0]==this){ -_30=i; -return false; -} -}); -return _30; -}; -}; -function _31(_32){ -var _33=$.data(_32,"tabs").options; -var _34=$(_32).children("div.tabs-header"); -var _35=$(_32).children("div.tabs-panels"); -_34.removeClass("tabs-header-top tabs-header-bottom tabs-header-left tabs-header-right"); -_35.removeClass("tabs-panels-top tabs-panels-bottom tabs-panels-left tabs-panels-right"); -if(_33.tabPosition=="top"){ -_34.insertBefore(_35); -}else{ -if(_33.tabPosition=="bottom"){ -_34.insertAfter(_35); -_34.addClass("tabs-header-bottom"); -_35.addClass("tabs-panels-top"); -}else{ -if(_33.tabPosition=="left"){ -_34.addClass("tabs-header-left"); -_35.addClass("tabs-panels-right"); -}else{ -if(_33.tabPosition=="right"){ -_34.addClass("tabs-header-right"); -_35.addClass("tabs-panels-left"); -} -} -} -} -if(_33.plain==true){ -_34.addClass("tabs-header-plain"); -}else{ -_34.removeClass("tabs-header-plain"); -} -if(_33.border==true){ -_34.removeClass("tabs-header-noborder"); -_35.removeClass("tabs-panels-noborder"); -}else{ -_34.addClass("tabs-header-noborder"); -_35.addClass("tabs-panels-noborder"); -} -}; -function _36(_37,pp,_38){ -var _39=$.data(_37,"tabs"); -_38=_38||{}; -pp.panel($.extend({},_38,{border:false,noheader:true,closed:true,doSize:false,iconCls:(_38.icon?_38.icon:undefined),onLoad:function(){ -if(_38.onLoad){ -_38.onLoad.call(this,arguments); -} -_39.options.onLoad.call(_37,$(this)); -}})); -var _3a=pp.panel("options"); -var _3b=$(_37).children("div.tabs-header").find("ul.tabs"); -_3a.tab=$("
    • ").appendTo(_3b); -_3a.tab.append(""+""+""+""); -$(_37).tabs("update",{tab:pp,options:_3a}); -}; -function _3c(_3d,_3e){ -var _3f=$.data(_3d,"tabs").options; -var _40=$.data(_3d,"tabs").tabs; -if(_3e.selected==undefined){ -_3e.selected=true; -} -var pp=$("
      ").appendTo($(_3d).children("div.tabs-panels")); -_40.push(pp); -_36(_3d,pp,_3e); -_3f.onAdd.call(_3d,_3e.title,_40.length-1); -_12(_3d); -if(_3e.selected){ -_41(_3d,_40.length-1); -} -}; -function _42(_43,_44){ -var _45=$.data(_43,"tabs").selectHis; -var pp=_44.tab; -var _46=pp.panel("options").title; -pp.panel($.extend({},_44.options,{iconCls:(_44.options.icon?_44.options.icon:undefined)})); -var _47=pp.panel("options"); -var tab=_47.tab; -var _48=tab.find("span.tabs-title"); -var _49=tab.find("span.tabs-icon"); -_48.html(_47.title); -_49.attr("class","tabs-icon"); -tab.find("a.tabs-close").remove(); -if(_47.closable){ -_48.addClass("tabs-closable"); -$("").appendTo(tab); -}else{ -_48.removeClass("tabs-closable"); -} -if(_47.iconCls){ -_48.addClass("tabs-with-icon"); -_49.addClass(_47.iconCls); -}else{ -_48.removeClass("tabs-with-icon"); -} -if(_46!=_47.title){ -for(var i=0;i<_45.length;i++){ -if(_45[i]==_46){ -_45[i]=_47.title; -} -} -} -tab.find("span.tabs-p-tool").remove(); -if(_47.tools){ -var _4a=$("").insertAfter(tab.find("a.tabs-inner")); -if($.isArray(_47.tools)){ -for(var i=0;i<_47.tools.length;i++){ -var t=$("").appendTo(_4a); -t.addClass(_47.tools[i].iconCls); -if(_47.tools[i].handler){ -t.bind("click",{handler:_47.tools[i].handler},function(e){ -if($(this).parents("li").hasClass("tabs-disabled")){ -return; -} -e.data.handler.call(this); -}); -} -} -}else{ -$(_47.tools).children().appendTo(_4a); -} -var pr=_4a.children().length*12; -if(_47.closable){ -pr+=8; -}else{ -pr-=3; -_4a.css("right","5px"); -} -_48.css("padding-right",pr+"px"); -} -_12(_43); -$.data(_43,"tabs").options.onUpdate.call(_43,_47.title,_4b(_43,pp)); -}; -function _4c(_4d,_4e){ -var _4f=$.data(_4d,"tabs").options; -var _50=$.data(_4d,"tabs").tabs; -var _51=$.data(_4d,"tabs").selectHis; -if(!_52(_4d,_4e)){ -return; -} -var tab=_53(_4d,_4e); -var _54=tab.panel("options").title; -var _55=_4b(_4d,tab); -if(_4f.onBeforeClose.call(_4d,_54,_55)==false){ -return; -} -var tab=_53(_4d,_4e,true); -tab.panel("options").tab.remove(); -tab.panel("destroy"); -_4f.onClose.call(_4d,_54,_55); -_12(_4d); -for(var i=0;i<_51.length;i++){ -if(_51[i]==_54){ -_51.splice(i,1); -i--; -} -} -var _56=_51.pop(); -if(_56){ -_41(_4d,_56); -}else{ -if(_50.length){ -_41(_4d,0); -} -} -}; -function _53(_57,_58,_59){ -var _5a=$.data(_57,"tabs").tabs; -if(typeof _58=="number"){ -if(_58<0||_58>=_5a.length){ -return null; -}else{ -var tab=_5a[_58]; -if(_59){ -_5a.splice(_58,1); -} -return tab; -} -} -for(var i=0;i<_5a.length;i++){ -var tab=_5a[i]; -if(tab.panel("options").title==_58){ -if(_59){ -_5a.splice(i,1); -} -return tab; -} -} -return null; -}; -function _4b(_5b,tab){ -var _5c=$.data(_5b,"tabs").tabs; -for(var i=0;i<_5c.length;i++){ -if(_5c[i][0]==$(tab)[0]){ -return i; -} -} -return -1; -}; -function _1f(_5d){ -var _5e=$.data(_5d,"tabs").tabs; -for(var i=0;i<_5e.length;i++){ -var tab=_5e[i]; -if(tab.panel("options").closed==false){ -return tab; -} -} -return null; -}; -function _5f(_60){ -var _61=$.data(_60,"tabs"); -var _62=_61.tabs; -for(var i=0;i<_62.length;i++){ -if(_62[i].panel("options").selected){ -_41(_60,i); -return; -} -} -_41(_60,_61.options.selected); -}; -function _41(_63,_64){ -var _65=$.data(_63,"tabs"); -var _66=_65.options; -var _67=_65.tabs; -var _68=_65.selectHis; -if(_67.length==0){ -return; -} -var _69=_53(_63,_64); -if(!_69){ -return; -} -var _6a=_1f(_63); -if(_6a){ -if(_69[0]==_6a[0]){ -return; -} -_6b(_63,_4b(_63,_6a)); -if(!_6a.panel("options").closed){ -return; -} -} -_69.panel("open"); -var _6c=_69.panel("options").title; -_68.push(_6c); -var tab=_69.panel("options").tab; -tab.addClass("tabs-selected"); -var _6d=$(_63).find(">div.tabs-header>div.tabs-wrap"); -var _6e=tab.position().left; -var _6f=_6e+tab.outerWidth(); -if(_6e<0||_6f>_6d.width()){ -var _70=_6e-(_6d.width()-tab.width())/2; -$(_63).tabs("scrollBy",_70); -}else{ -$(_63).tabs("scrollBy",0); -} -_1c(_63); -_66.onSelect.call(_63,_6c,_4b(_63,_69)); -}; -function _6b(_71,_72){ -var _73=$.data(_71,"tabs"); -var p=_53(_71,_72); -if(p){ -var _74=p.panel("options"); -if(!_74.closed){ -p.panel("close"); -if(_74.closed){ -_74.tab.removeClass("tabs-selected"); -_73.options.onUnselect.call(_71,_74.title,_4b(_71,p)); -} -} -} -}; -function _52(_75,_76){ -return _53(_75,_76)!=null; -}; -function _77(_78,_79){ -var _7a=$.data(_78,"tabs").options; -_7a.showHeader=_79; -$(_78).tabs("resize"); -}; -$.fn.tabs=function(_7b,_7c){ -if(typeof _7b=="string"){ -return $.fn.tabs.methods[_7b](this,_7c); -} -_7b=_7b||{}; -return this.each(function(){ -var _7d=$.data(this,"tabs"); -var _7e; -if(_7d){ -_7e=$.extend(_7d.options,_7b); -_7d.options=_7e; -}else{ -$.data(this,"tabs",{options:$.extend({},$.fn.tabs.defaults,$.fn.tabs.parseOptions(this),_7b),tabs:[],selectHis:[]}); -_23(this); -} -_c(this); -_31(this); -_12(this); -_29(this); -_5f(this); -}); -}; -$.fn.tabs.methods={options:function(jq){ -var cc=jq[0]; -var _7f=$.data(cc,"tabs").options; -var s=_1f(cc); -_7f.selected=s?_4b(cc,s):-1; -return _7f; -},tabs:function(jq){ -return $.data(jq[0],"tabs").tabs; -},resize:function(jq){ -return jq.each(function(){ -_12(this); -_1c(this); -}); -},add:function(jq,_80){ -return jq.each(function(){ -_3c(this,_80); -}); -},close:function(jq,_81){ -return jq.each(function(){ -_4c(this,_81); -}); -},getTab:function(jq,_82){ -return _53(jq[0],_82); -},getTabIndex:function(jq,tab){ -return _4b(jq[0],tab); -},getSelected:function(jq){ -return _1f(jq[0]); -},select:function(jq,_83){ -return jq.each(function(){ -_41(this,_83); -}); -},unselect:function(jq,_84){ -return jq.each(function(){ -_6b(this,_84); -}); -},exists:function(jq,_85){ -return _52(jq[0],_85); -},update:function(jq,_86){ -return jq.each(function(){ -_42(this,_86); -}); -},enableTab:function(jq,_87){ -return jq.each(function(){ -$(this).tabs("getTab",_87).panel("options").tab.removeClass("tabs-disabled"); -}); -},disableTab:function(jq,_88){ -return jq.each(function(){ -$(this).tabs("getTab",_88).panel("options").tab.addClass("tabs-disabled"); -}); -},showHeader:function(jq){ -return jq.each(function(){ -_77(this,true); -}); -},hideHeader:function(jq){ -return jq.each(function(){ -_77(this,false); -}); -},scrollBy:function(jq,_89){ -return jq.each(function(){ -var _8a=$(this).tabs("options"); -var _8b=$(this).find(">div.tabs-header>div.tabs-wrap"); -var pos=Math.min(_8b._scrollLeft()+_89,_8c()); -_8b.animate({scrollLeft:pos},_8a.scrollDuration); -function _8c(){ -var w=0; -var ul=_8b.children("ul"); -ul.children("li").each(function(){ -w+=$(this).outerWidth(true); -}); -return w-_8b.width()+(ul.outerWidth()-ul.width()); -}; -}); -}}; -$.fn.tabs.parseOptions=function(_8d){ -return $.extend({},$.parser.parseOptions(_8d,["width","height","tools","toolPosition","tabPosition",{fit:"boolean",border:"boolean",plain:"boolean",headerWidth:"number",tabWidth:"number",tabHeight:"number",selected:"number",showHeader:"boolean"}])); -}; -$.fn.tabs.defaults={width:"auto",height:"auto",headerWidth:150,tabWidth:"auto",tabHeight:27,selected:0,showHeader:true,plain:false,fit:false,border:true,tools:null,toolPosition:"right",tabPosition:"top",scrollIncrement:100,scrollDuration:400,onLoad:function(_8e){ -},onSelect:function(_8f,_90){ -},onUnselect:function(_91,_92){ -},onBeforeClose:function(_93,_94){ -},onClose:function(_95,_96){ -},onAdd:function(_97,_98){ -},onUpdate:function(_99,_9a){ -},onContextMenu:function(e,_9b,_9c){ -}}; -})(jQuery); - diff --git a/src/main/webapp/js/easyui-1.3.5/plugins/jquery.timespinner.js b/src/main/webapp/js/easyui-1.3.5/plugins/jquery.timespinner.js deleted file mode 100644 index bcc79156..00000000 --- a/src/main/webapp/js/easyui-1.3.5/plugins/jquery.timespinner.js +++ /dev/null @@ -1,187 +0,0 @@ -/** - * jQuery EasyUI 1.3.5 - * - * Copyright (c) 2009-2013 www.jeasyui.com. All rights reserved. - * - * Licensed under the GPL or commercial licenses - * To use it on other terms please contact us: info@jeasyui.com - * http://www.gnu.org/licenses/gpl.txt - * http://www.jeasyui.com/license_commercial.php - * - */ -(function($){ -function _1(_2){ -var _3=$.data(_2,"timespinner").options; -$(_2).addClass("timespinner-f"); -$(_2).spinner(_3); -$(_2).unbind(".timespinner"); -$(_2).bind("click.timespinner",function(){ -var _4=0; -if(this.selectionStart!=null){ -_4=this.selectionStart; -}else{ -if(this.createTextRange){ -var _5=_2.createTextRange(); -var s=document.selection.createRange(); -s.setEndPoint("StartToStart",_5); -_4=s.text.length; -} -} -if(_4>=0&&_4<=2){ -_3.highlight=0; -}else{ -if(_4>=3&&_4<=5){ -_3.highlight=1; -}else{ -if(_4>=6&&_4<=8){ -_3.highlight=2; -} -} -} -_7(_2); -}).bind("blur.timespinner",function(){ -_6(_2); -}); -}; -function _7(_8){ -var _9=$.data(_8,"timespinner").options; -var _a=0,_b=0; -if(_9.highlight==0){ -_a=0; -_b=2; -}else{ -if(_9.highlight==1){ -_a=3; -_b=5; -}else{ -if(_9.highlight==2){ -_a=6; -_b=8; -} -} -} -if(_8.selectionStart!=null){ -_8.setSelectionRange(_a,_b); -}else{ -if(_8.createTextRange){ -var _c=_8.createTextRange(); -_c.collapse(); -_c.moveEnd("character",_b); -_c.moveStart("character",_a); -_c.select(); -} -} -$(_8).focus(); -}; -function _d(_e,_f){ -var _10=$.data(_e,"timespinner").options; -if(!_f){ -return null; -} -var vv=_f.split(_10.separator); -for(var i=0;i_14){ -_14=_15; -} -if(_16&&_16<_14){ -_14=_16; -} -var tt=[_17(_14.getHours()),_17(_14.getMinutes())]; -if(_12.showSeconds){ -tt.push(_17(_14.getSeconds())); -} -var val=tt.join(_12.separator); -_12.value=val; -$(_11).val(val); -function _17(_18){ -return (_18<10?"0":"")+_18; -}; -}; -function _19(_1a,_1b){ -var _1c=$.data(_1a,"timespinner").options; -var val=$(_1a).val(); -if(val==""){ -val=[0,0,0].join(_1c.separator); -} -var vv=val.split(_1c.separator); -for(var i=0;i"+"
      "+"
      "+"
      "+"
      ").appendTo("body"); -_12.tip=tip; -_14(_11); -} -tip.removeClass("tooltip-top tooltip-bottom tooltip-left tooltip-right").addClass("tooltip-"+_13.position); -_7(_11); -_12.showTimer=setTimeout(function(){ -_6(_11); -tip.show(); -_13.onShow.call(_11,e); -var _15=tip.children(".tooltip-arrow-outer"); -var _16=tip.children(".tooltip-arrow"); -var bc="border-"+_13.position+"-color"; -_15.add(_16).css({borderTopColor:"",borderBottomColor:"",borderLeftColor:"",borderRightColor:""}); -_15.css(bc,tip.css(bc)); -_16.css(bc,tip.css("backgroundColor")); -},_13.showDelay); -}; -function _17(_18,e){ -var _19=$.data(_18,"tooltip"); -if(_19&&_19.tip){ -_7(_18); -_19.hideTimer=setTimeout(function(){ -_19.tip.hide(); -_19.options.onHide.call(_18,e); -},_19.options.hideDelay); -} -}; -function _14(_1a,_1b){ -var _1c=$.data(_1a,"tooltip"); -var _1d=_1c.options; -if(_1b){ -_1d.content=_1b; -} -if(!_1c.tip){ -return; -} -var cc=typeof _1d.content=="function"?_1d.content.call(_1a):_1d.content; -_1c.tip.children(".tooltip-content").html(cc); -_1d.onUpdate.call(_1a,cc); -}; -function _1e(_1f){ -var _20=$.data(_1f,"tooltip"); -if(_20){ -_7(_1f); -var _21=_20.options; -if(_20.tip){ -_20.tip.remove(); -} -if(_21._title){ -$(_1f).attr("title",_21._title); -} -$.removeData(_1f,"tooltip"); -$(_1f).unbind(".tooltip").removeClass("tooltip-f"); -_21.onDestroy.call(_1f); -} -}; -$.fn.tooltip=function(_22,_23){ -if(typeof _22=="string"){ -return $.fn.tooltip.methods[_22](this,_23); -} -_22=_22||{}; -return this.each(function(){ -var _24=$.data(this,"tooltip"); -if(_24){ -$.extend(_24.options,_22); -}else{ -$.data(this,"tooltip",{options:$.extend({},$.fn.tooltip.defaults,$.fn.tooltip.parseOptions(this),_22)}); -_1(this); -} -_3(this); -_14(this); -}); -}; -$.fn.tooltip.methods={options:function(jq){ -return $.data(jq[0],"tooltip").options; -},tip:function(jq){ -return $.data(jq[0],"tooltip").tip; -},arrow:function(jq){ -return jq.tooltip("tip").children(".tooltip-arrow-outer,.tooltip-arrow"); -},show:function(jq,e){ -return jq.each(function(){ -_10(this,e); -}); -},hide:function(jq,e){ -return jq.each(function(){ -_17(this,e); -}); -},update:function(jq,_25){ -return jq.each(function(){ -_14(this,_25); -}); -},reposition:function(jq){ -return jq.each(function(){ -_6(this); -}); -},destroy:function(jq){ -return jq.each(function(){ -_1e(this); -}); -}}; -$.fn.tooltip.parseOptions=function(_26){ -var t=$(_26); -var _27=$.extend({},$.parser.parseOptions(_26,["position","showEvent","hideEvent","content",{deltaX:"number",deltaY:"number",showDelay:"number",hideDelay:"number"}]),{_title:t.attr("title")}); -t.attr("title",""); -if(!_27.content){ -_27.content=_27._title; -} -return _27; -}; -$.fn.tooltip.defaults={position:"bottom",content:null,trackMouse:false,deltaX:0,deltaY:0,showEvent:"mouseenter",hideEvent:"mouseleave",showDelay:200,hideDelay:100,onShow:function(e){ -},onHide:function(e){ -},onUpdate:function(_28){ -},onPosition:function(_29,top){ -},onDestroy:function(){ -}}; -})(jQuery); - diff --git a/src/main/webapp/js/easyui-1.3.5/plugins/jquery.tree.js b/src/main/webapp/js/easyui-1.3.5/plugins/jquery.tree.js deleted file mode 100644 index be50c7d5..00000000 --- a/src/main/webapp/js/easyui-1.3.5/plugins/jquery.tree.js +++ /dev/null @@ -1,1155 +0,0 @@ -/** - * jQuery EasyUI 1.3.5 - * - * Copyright (c) 2009-2013 www.jeasyui.com. All rights reserved. - * - * Licensed under the GPL or commercial licenses - * To use it on other terms please contact us: info@jeasyui.com - * http://www.gnu.org/licenses/gpl.txt - * http://www.jeasyui.com/license_commercial.php - * - */ -(function($){ -function _1(_2){ -var _3=$(_2); -_3.addClass("tree"); -return _3; -}; -function _4(_5){ -var _6=$.data(_5,"tree").options; -$(_5).unbind().bind("mouseover",function(e){ -var tt=$(e.target); -var _7=tt.closest("div.tree-node"); -if(!_7.length){ -return; -} -_7.addClass("tree-node-hover"); -if(tt.hasClass("tree-hit")){ -if(tt.hasClass("tree-expanded")){ -tt.addClass("tree-expanded-hover"); -}else{ -tt.addClass("tree-collapsed-hover"); -} -} -e.stopPropagation(); -}).bind("mouseout",function(e){ -var tt=$(e.target); -var _8=tt.closest("div.tree-node"); -if(!_8.length){ -return; -} -_8.removeClass("tree-node-hover"); -if(tt.hasClass("tree-hit")){ -if(tt.hasClass("tree-expanded")){ -tt.removeClass("tree-expanded-hover"); -}else{ -tt.removeClass("tree-collapsed-hover"); -} -} -e.stopPropagation(); -}).bind("click",function(e){ -var tt=$(e.target); -var _9=tt.closest("div.tree-node"); -if(!_9.length){ -return; -} -if(tt.hasClass("tree-hit")){ -_7e(_5,_9[0]); -return false; -}else{ -if(tt.hasClass("tree-checkbox")){ -_32(_5,_9[0],!tt.hasClass("tree-checkbox1")); -return false; -}else{ -_d6(_5,_9[0]); -_6.onClick.call(_5,_c(_5,_9[0])); -} -} -e.stopPropagation(); -}).bind("dblclick",function(e){ -var _a=$(e.target).closest("div.tree-node"); -if(!_a.length){ -return; -} -_d6(_5,_a[0]); -_6.onDblClick.call(_5,_c(_5,_a[0])); -e.stopPropagation(); -}).bind("contextmenu",function(e){ -var _b=$(e.target).closest("div.tree-node"); -if(!_b.length){ -return; -} -_6.onContextMenu.call(_5,e,_c(_5,_b[0])); -e.stopPropagation(); -}); -}; -function _d(_e){ -var _f=$.data(_e,"tree").options; -_f.dnd=false; -var _10=$(_e).find("div.tree-node"); -_10.draggable("disable"); -_10.css("cursor","pointer"); -}; -function _11(_12){ -var _13=$.data(_12,"tree"); -var _14=_13.options; -var _15=_13.tree; -_13.disabledNodes=[]; -_14.dnd=true; -_15.find("div.tree-node").draggable({disabled:false,revert:true,cursor:"pointer",proxy:function(_16){ -var p=$("
      ").appendTo("body"); -p.html(" "+$(_16).find(".tree-title").html()); -p.hide(); -return p; -},deltaX:15,deltaY:15,onBeforeDrag:function(e){ -if(_14.onBeforeDrag.call(_12,_c(_12,this))==false){ -return false; -} -if($(e.target).hasClass("tree-hit")||$(e.target).hasClass("tree-checkbox")){ -return false; -} -if(e.which!=1){ -return false; -} -$(this).next("ul").find("div.tree-node").droppable({accept:"no-accept"}); -var _17=$(this).find("span.tree-indent"); -if(_17.length){ -e.data.offsetWidth-=_17.length*_17.width(); -} -},onStartDrag:function(){ -$(this).draggable("proxy").css({left:-10000,top:-10000}); -_14.onStartDrag.call(_12,_c(_12,this)); -var _18=_c(_12,this); -if(_18.id==undefined){ -_18.id="easyui_tree_node_id_temp"; -_54(_12,_18); -} -_13.draggingNodeId=_18.id; -},onDrag:function(e){ -var x1=e.pageX,y1=e.pageY,x2=e.data.startX,y2=e.data.startY; -var d=Math.sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2)); -if(d>3){ -$(this).draggable("proxy").show(); -} -this.pageY=e.pageY; -},onStopDrag:function(){ -$(this).next("ul").find("div.tree-node").droppable({accept:"div.tree-node"}); -for(var i=0;i<_13.disabledNodes.length;i++){ -$(_13.disabledNodes[i]).droppable("enable"); -} -_13.disabledNodes=[]; -var _19=_c9(_12,_13.draggingNodeId); -if(_19&&_19.id=="easyui_tree_node_id_temp"){ -_19.id=""; -_54(_12,_19); -} -_14.onStopDrag.call(_12,_19); -}}).droppable({accept:"div.tree-node",onDragEnter:function(e,_1a){ -if(_14.onDragEnter.call(_12,this,_c(_12,_1a))==false){ -_1b(_1a,false); -$(this).removeClass("tree-node-append tree-node-top tree-node-bottom"); -$(this).droppable("disable"); -_13.disabledNodes.push(this); -} -},onDragOver:function(e,_1c){ -if($(this).droppable("options").disabled){ -return; -} -var _1d=_1c.pageY; -var top=$(this).offset().top; -var _1e=top+$(this).outerHeight(); -_1b(_1c,true); -$(this).removeClass("tree-node-append tree-node-top tree-node-bottom"); -if(_1d>top+(_1e-top)/2){ -if(_1e-_1d<5){ -$(this).addClass("tree-node-bottom"); -}else{ -$(this).addClass("tree-node-append"); -} -}else{ -if(_1d-top<5){ -$(this).addClass("tree-node-top"); -}else{ -$(this).addClass("tree-node-append"); -} -} -if(_14.onDragOver.call(_12,this,_c(_12,_1c))==false){ -_1b(_1c,false); -$(this).removeClass("tree-node-append tree-node-top tree-node-bottom"); -$(this).droppable("disable"); -_13.disabledNodes.push(this); -} -},onDragLeave:function(e,_1f){ -_1b(_1f,false); -$(this).removeClass("tree-node-append tree-node-top tree-node-bottom"); -_14.onDragLeave.call(_12,this,_c(_12,_1f)); -},onDrop:function(e,_20){ -var _21=this; -var _22,_23; -if($(this).hasClass("tree-node-append")){ -_22=_24; -_23="append"; -}else{ -_22=_25; -_23=$(this).hasClass("tree-node-top")?"top":"bottom"; -} -if(_14.onBeforeDrop.call(_12,_21,_c2(_12,_20),_23)==false){ -$(this).removeClass("tree-node-append tree-node-top tree-node-bottom"); -return; -} -_22(_20,_21,_23); -$(this).removeClass("tree-node-append tree-node-top tree-node-bottom"); -}}); -function _1b(_26,_27){ -var _28=$(_26).draggable("proxy").find("span.tree-dnd-icon"); -_28.removeClass("tree-dnd-yes tree-dnd-no").addClass(_27?"tree-dnd-yes":"tree-dnd-no"); -}; -function _24(_29,_2a){ -if(_c(_12,_2a).state=="closed"){ -_72(_12,_2a,function(){ -_2b(); -}); -}else{ -_2b(); -} -function _2b(){ -var _2c=$(_12).tree("pop",_29); -$(_12).tree("append",{parent:_2a,data:[_2c]}); -_14.onDrop.call(_12,_2a,_2c,"append"); -}; -}; -function _25(_2d,_2e,_2f){ -var _30={}; -if(_2f=="top"){ -_30.before=_2e; -}else{ -_30.after=_2e; -} -var _31=$(_12).tree("pop",_2d); -_30.data=_31; -$(_12).tree("insert",_30); -_14.onDrop.call(_12,_2e,_31,_2f); -}; -}; -function _32(_33,_34,_35){ -var _36=$.data(_33,"tree").options; -if(!_36.checkbox){ -return; -} -var _37=_c(_33,_34); -if(_36.onBeforeCheck.call(_33,_37,_35)==false){ -return; -} -var _38=$(_34); -var ck=_38.find(".tree-checkbox"); -ck.removeClass("tree-checkbox0 tree-checkbox1 tree-checkbox2"); -if(_35){ -ck.addClass("tree-checkbox1"); -}else{ -ck.addClass("tree-checkbox0"); -} -if(_36.cascadeCheck){ -_39(_38); -_3a(_38); -} -_36.onCheck.call(_33,_37,_35); -function _3a(_3b){ -var _3c=_3b.next().find(".tree-checkbox"); -_3c.removeClass("tree-checkbox0 tree-checkbox1 tree-checkbox2"); -if(_3b.find(".tree-checkbox").hasClass("tree-checkbox1")){ -_3c.addClass("tree-checkbox1"); -}else{ -_3c.addClass("tree-checkbox0"); -} -}; -function _39(_3d){ -var _3e=_89(_33,_3d[0]); -if(_3e){ -var ck=$(_3e.target).find(".tree-checkbox"); -ck.removeClass("tree-checkbox0 tree-checkbox1 tree-checkbox2"); -if(_3f(_3d)){ -ck.addClass("tree-checkbox1"); -}else{ -if(_40(_3d)){ -ck.addClass("tree-checkbox0"); -}else{ -ck.addClass("tree-checkbox2"); -} -} -_39($(_3e.target)); -} -function _3f(n){ -var ck=n.find(".tree-checkbox"); -if(ck.hasClass("tree-checkbox0")||ck.hasClass("tree-checkbox2")){ -return false; -} -var b=true; -n.parent().siblings().each(function(){ -if(!$(this).children("div.tree-node").children(".tree-checkbox").hasClass("tree-checkbox1")){ -b=false; -} -}); -return b; -}; -function _40(n){ -var ck=n.find(".tree-checkbox"); -if(ck.hasClass("tree-checkbox1")||ck.hasClass("tree-checkbox2")){ -return false; -} -var b=true; -n.parent().siblings().each(function(){ -if(!$(this).children("div.tree-node").children(".tree-checkbox").hasClass("tree-checkbox0")){ -b=false; -} -}); -return b; -}; -}; -}; -function _41(_42,_43){ -var _44=$.data(_42,"tree").options; -if(!_44.checkbox){ -return; -} -var _45=$(_43); -if(_46(_42,_43)){ -var ck=_45.find(".tree-checkbox"); -if(ck.length){ -if(ck.hasClass("tree-checkbox1")){ -_32(_42,_43,true); -}else{ -_32(_42,_43,false); -} -}else{ -if(_44.onlyLeafCheck){ -$("").insertBefore(_45.find(".tree-title")); -} -} -}else{ -var ck=_45.find(".tree-checkbox"); -if(_44.onlyLeafCheck){ -ck.remove(); -}else{ -if(ck.hasClass("tree-checkbox1")){ -_32(_42,_43,true); -}else{ -if(ck.hasClass("tree-checkbox2")){ -var _47=true; -var _48=true; -var _49=_4a(_42,_43); -for(var i=0;i<_49.length;i++){ -if(_49[i].checked){ -_48=false; -}else{ -_47=false; -} -} -if(_47){ -_32(_42,_43,true); -} -if(_48){ -_32(_42,_43,false); -} -} -} -} -} -}; -function _4b(_4c,ul,_4d,_4e){ -var _4f=$.data(_4c,"tree"); -var _50=_4f.options; -var _51=$(ul).prevAll("div.tree-node:first"); -_4d=_50.loadFilter.call(_4c,_4d,_51[0]); -var _52=_53(_4c,"domId",_51.attr("id")); -if(!_4e){ -_52?_52.children=_4d:_4f.data=_4d; -$(ul).empty(); -}else{ -if(_52){ -_52.children?_52.children=_52.children.concat(_4d):_52.children=_4d; -}else{ -_4f.data=_4f.data.concat(_4d); -} -} -_50.view.render.call(_50.view,_4c,ul,_4d); -if(_50.dnd){ -_11(_4c); -} -if(_52){ -_54(_4c,_52); -} -var _55=[]; -var _56=[]; -for(var i=0;i<_4d.length;i++){ -var _57=_4d[i]; -if(!_57.checked){ -_55.push(_57); -} -} -_58(_4d,function(_59){ -if(_59.checked){ -_56.push(_59); -} -}); -if(_55.length){ -_32(_4c,$("#"+_55[0].domId)[0],false); -} -for(var i=0;i<_56.length;i++){ -_32(_4c,$("#"+_56[i].domId)[0],true); -} -setTimeout(function(){ -_5a(_4c,_4c); -},0); -_50.onLoadSuccess.call(_4c,_52,_4d); -}; -function _5a(_5b,ul,_5c){ -var _5d=$.data(_5b,"tree").options; -if(_5d.lines){ -$(_5b).addClass("tree-lines"); -}else{ -$(_5b).removeClass("tree-lines"); -return; -} -if(!_5c){ -_5c=true; -$(_5b).find("span.tree-indent").removeClass("tree-line tree-join tree-joinbottom"); -$(_5b).find("div.tree-node").removeClass("tree-node-last tree-root-first tree-root-one"); -var _5e=$(_5b).tree("getRoots"); -if(_5e.length>1){ -$(_5e[0].target).addClass("tree-root-first"); -}else{ -if(_5e.length==1){ -$(_5e[0].target).addClass("tree-root-one"); -} -} -} -$(ul).children("li").each(function(){ -var _5f=$(this).children("div.tree-node"); -var ul=_5f.next("ul"); -if(ul.length){ -if($(this).next().length){ -_60(_5f); -} -_5a(_5b,ul,_5c); -}else{ -_61(_5f); -} -}); -var _62=$(ul).children("li:last").children("div.tree-node").addClass("tree-node-last"); -_62.children("span.tree-join").removeClass("tree-join").addClass("tree-joinbottom"); -function _61(_63,_64){ -var _65=_63.find("span.tree-icon"); -_65.prev("span.tree-indent").addClass("tree-join"); -}; -function _60(_66){ -var _67=_66.find("span.tree-indent, span.tree-hit").length; -_66.next().find("div.tree-node").each(function(){ -$(this).children("span:eq("+(_67-1)+")").addClass("tree-line"); -}); -}; -}; -function _68(_69,ul,_6a,_6b){ -var _6c=$.data(_69,"tree").options; -_6a=_6a||{}; -var _6d=null; -if(_69!=ul){ -var _6e=$(ul).prev(); -_6d=_c(_69,_6e[0]); -} -if(_6c.onBeforeLoad.call(_69,_6d,_6a)==false){ -return; -} -var _6f=$(ul).prev().children("span.tree-folder"); -_6f.addClass("tree-loading"); -var _70=_6c.loader.call(_69,_6a,function(_71){ -_6f.removeClass("tree-loading"); -_4b(_69,ul,_71); -if(_6b){ -_6b(); -} -},function(){ -_6f.removeClass("tree-loading"); -_6c.onLoadError.apply(_69,arguments); -if(_6b){ -_6b(); -} -}); -if(_70==false){ -_6f.removeClass("tree-loading"); -} -}; -function _72(_73,_74,_75){ -var _76=$.data(_73,"tree").options; -var hit=$(_74).children("span.tree-hit"); -if(hit.length==0){ -return; -} -if(hit.hasClass("tree-expanded")){ -return; -} -var _77=_c(_73,_74); -if(_76.onBeforeExpand.call(_73,_77)==false){ -return; -} -hit.removeClass("tree-collapsed tree-collapsed-hover").addClass("tree-expanded"); -hit.next().addClass("tree-folder-open"); -var ul=$(_74).next(); -if(ul.length){ -if(_76.animate){ -ul.slideDown("normal",function(){ -_77.state="open"; -_76.onExpand.call(_73,_77); -if(_75){ -_75(); -} -}); -}else{ -ul.css("display","block"); -_77.state="open"; -_76.onExpand.call(_73,_77); -if(_75){ -_75(); -} -} -}else{ -var _78=$("
        ").insertAfter(_74); -_68(_73,_78[0],{id:_77.id},function(){ -if(_78.is(":empty")){ -_78.remove(); -} -if(_76.animate){ -_78.slideDown("normal",function(){ -_77.state="open"; -_76.onExpand.call(_73,_77); -if(_75){ -_75(); -} -}); -}else{ -_78.css("display","block"); -_77.state="open"; -_76.onExpand.call(_73,_77); -if(_75){ -_75(); -} -} -}); -} -}; -function _79(_7a,_7b){ -var _7c=$.data(_7a,"tree").options; -var hit=$(_7b).children("span.tree-hit"); -if(hit.length==0){ -return; -} -if(hit.hasClass("tree-collapsed")){ -return; -} -var _7d=_c(_7a,_7b); -if(_7c.onBeforeCollapse.call(_7a,_7d)==false){ -return; -} -hit.removeClass("tree-expanded tree-expanded-hover").addClass("tree-collapsed"); -hit.next().removeClass("tree-folder-open"); -var ul=$(_7b).next(); -if(_7c.animate){ -ul.slideUp("normal",function(){ -_7d.state="closed"; -_7c.onCollapse.call(_7a,_7d); -}); -}else{ -ul.css("display","none"); -_7d.state="closed"; -_7c.onCollapse.call(_7a,_7d); -} -}; -function _7e(_7f,_80){ -var hit=$(_80).children("span.tree-hit"); -if(hit.length==0){ -return; -} -if(hit.hasClass("tree-expanded")){ -_79(_7f,_80); -}else{ -_72(_7f,_80); -} -}; -function _81(_82,_83){ -var _84=_4a(_82,_83); -if(_83){ -_84.unshift(_c(_82,_83)); -} -for(var i=0;i<_84.length;i++){ -_72(_82,_84[i].target); -} -}; -function _85(_86,_87){ -var _88=[]; -var p=_89(_86,_87); -while(p){ -_88.unshift(p); -p=_89(_86,p.target); -} -for(var i=0;i<_88.length;i++){ -_72(_86,_88[i].target); -} -}; -function _8a(_8b,_8c){ -var c=$(_8b).parent(); -while(c[0].tagName!="BODY"&&c.css("overflow-y")!="auto"){ -c=c.parent(); -} -var n=$(_8c); -var _8d=n.offset().top; -if(c[0].tagName!="BODY"){ -var _8e=c.offset().top; -if(_8d<_8e){ -c.scrollTop(c.scrollTop()+_8d-_8e); -}else{ -if(_8d+n.outerHeight()>_8e+c.outerHeight()-18){ -c.scrollTop(c.scrollTop()+_8d+n.outerHeight()-_8e-c.outerHeight()+18); -} -} -}else{ -c.scrollTop(_8d); -} -}; -function _8f(_90,_91){ -var _92=_4a(_90,_91); -if(_91){ -_92.unshift(_c(_90,_91)); -} -for(var i=0;i<_92.length;i++){ -_79(_90,_92[i].target); -} -}; -function _93(_94,_95){ -var _96=$(_95.parent); -var _97=_95.data; -if(!_97){ -return; -} -_97=$.isArray(_97)?_97:[_97]; -if(!_97.length){ -return; -} -var ul; -if(_96.length==0){ -ul=$(_94); -}else{ -if(_46(_94,_96[0])){ -var _98=_96.find("span.tree-icon"); -_98.removeClass("tree-file").addClass("tree-folder tree-folder-open"); -var hit=$("").insertBefore(_98); -if(hit.prev().length){ -hit.prev().remove(); -} -} -ul=_96.next(); -if(!ul.length){ -ul=$("
          ").insertAfter(_96); -} -} -_4b(_94,ul[0],_97,true); -_41(_94,ul.prev()); -}; -function _99(_9a,_9b){ -var ref=_9b.before||_9b.after; -var _9c=_89(_9a,ref); -var _9d=_9b.data; -if(!_9d){ -return; -} -_9d=$.isArray(_9d)?_9d:[_9d]; -if(!_9d.length){ -return; -} -_93(_9a,{parent:(_9c?_9c.target:null),data:_9d}); -var li=$(); -for(var i=0;i<_9d.length;i++){ -li=li.add($("#"+_9d[i].domId).parent()); -} -if(_9b.before){ -li.insertBefore($(ref).parent()); -}else{ -li.insertAfter($(ref).parent()); -} -}; -function _9e(_9f,_a0){ -var _a1=del(_a0); -$(_a0).parent().remove(); -if(_a1){ -if(!_a1.children||!_a1.children.length){ -var _a2=$(_a1.target); -_a2.find(".tree-icon").removeClass("tree-folder").addClass("tree-file"); -_a2.find(".tree-hit").remove(); -$("").prependTo(_a2); -_a2.next().remove(); -} -_54(_9f,_a1); -_41(_9f,_a1.target); -} -_5a(_9f,_9f); -function del(_a3){ -var id=$(_a3).attr("id"); -var _a4=_89(_9f,_a3); -var cc=_a4?_a4.children:$.data(_9f,"tree").data; -for(var i=0;i=0;i--){ -_d4.unshift(_d5.children[i]); -} -} -} -}; -function _d6(_d7,_d8){ -var _d9=$.data(_d7,"tree").options; -var _da=_c(_d7,_d8); -if(_d9.onBeforeSelect.call(_d7,_da)==false){ -return; -} -$(_d7).find("div.tree-node-selected").removeClass("tree-node-selected"); -$(_d8).addClass("tree-node-selected"); -_d9.onSelect.call(_d7,_da); -}; -function _46(_db,_dc){ -return $(_dc).children("span.tree-hit").length==0; -}; -function _dd(_de,_df){ -var _e0=$.data(_de,"tree").options; -var _e1=_c(_de,_df); -if(_e0.onBeforeEdit.call(_de,_e1)==false){ -return; -} -$(_df).css("position","relative"); -var nt=$(_df).find(".tree-title"); -var _e2=nt.outerWidth(); -nt.empty(); -var _e3=$("").appendTo(nt); -_e3.val(_e1.text).focus(); -_e3.width(_e2+20); -_e3.height(document.compatMode=="CSS1Compat"?(18-(_e3.outerHeight()-_e3.height())):18); -_e3.bind("click",function(e){ -return false; -}).bind("mousedown",function(e){ -e.stopPropagation(); -}).bind("mousemove",function(e){ -e.stopPropagation(); -}).bind("keydown",function(e){ -if(e.keyCode==13){ -_e4(_de,_df); -return false; -}else{ -if(e.keyCode==27){ -_ea(_de,_df); -return false; -} -} -}).bind("blur",function(e){ -e.stopPropagation(); -_e4(_de,_df); -}); -}; -function _e4(_e5,_e6){ -var _e7=$.data(_e5,"tree").options; -$(_e6).css("position",""); -var _e8=$(_e6).find("input.tree-editor"); -var val=_e8.val(); -_e8.remove(); -var _e9=_c(_e5,_e6); -_e9.text=val; -_54(_e5,_e9); -_e7.onAfterEdit.call(_e5,_e9); -}; -function _ea(_eb,_ec){ -var _ed=$.data(_eb,"tree").options; -$(_ec).css("position",""); -$(_ec).find("input.tree-editor").remove(); -var _ee=_c(_eb,_ec); -_54(_eb,_ee); -_ed.onCancelEdit.call(_eb,_ee); -}; -$.fn.tree=function(_ef,_f0){ -if(typeof _ef=="string"){ -return $.fn.tree.methods[_ef](this,_f0); -} -var _ef=_ef||{}; -return this.each(function(){ -var _f1=$.data(this,"tree"); -var _f2; -if(_f1){ -_f2=$.extend(_f1.options,_ef); -_f1.options=_f2; -}else{ -_f2=$.extend({},$.fn.tree.defaults,$.fn.tree.parseOptions(this),_ef); -$.data(this,"tree",{options:_f2,tree:_1(this),data:[]}); -var _f3=$.fn.tree.parseData(this); -if(_f3.length){ -_4b(this,this,_f3); -} -} -_4(this); -if(_f2.data){ -_4b(this,this,_f2.data); -} -_68(this,this); -}); -}; -$.fn.tree.methods={options:function(jq){ -return $.data(jq[0],"tree").options; -},loadData:function(jq,_f4){ -return jq.each(function(){ -_4b(this,this,_f4); -}); -},getNode:function(jq,_f5){ -return _c(jq[0],_f5); -},getData:function(jq,_f6){ -return _c2(jq[0],_f6); -},reload:function(jq,_f7){ -return jq.each(function(){ -if(_f7){ -var _f8=$(_f7); -var hit=_f8.children("span.tree-hit"); -hit.removeClass("tree-expanded tree-expanded-hover").addClass("tree-collapsed"); -_f8.next().remove(); -_72(this,_f7); -}else{ -$(this).empty(); -_68(this,this); -} -}); -},getRoot:function(jq){ -return _ab(jq[0]); -},getRoots:function(jq){ -return _ae(jq[0]); -},getParent:function(jq,_f9){ -return _89(jq[0],_f9); -},getChildren:function(jq,_fa){ -return _4a(jq[0],_fa); -},getChecked:function(jq,_fb){ -return _b9(jq[0],_fb); -},getSelected:function(jq){ -return _bf(jq[0]); -},isLeaf:function(jq,_fc){ -return _46(jq[0],_fc); -},find:function(jq,id){ -return _c9(jq[0],id); -},select:function(jq,_fd){ -return jq.each(function(){ -_d6(this,_fd); -}); -},check:function(jq,_fe){ -return jq.each(function(){ -_32(this,_fe,true); -}); -},uncheck:function(jq,_ff){ -return jq.each(function(){ -_32(this,_ff,false); -}); -},collapse:function(jq,_100){ -return jq.each(function(){ -_79(this,_100); -}); -},expand:function(jq,_101){ -return jq.each(function(){ -_72(this,_101); -}); -},collapseAll:function(jq,_102){ -return jq.each(function(){ -_8f(this,_102); -}); -},expandAll:function(jq,_103){ -return jq.each(function(){ -_81(this,_103); -}); -},expandTo:function(jq,_104){ -return jq.each(function(){ -_85(this,_104); -}); -},scrollTo:function(jq,_105){ -return jq.each(function(){ -_8a(this,_105); -}); -},toggle:function(jq,_106){ -return jq.each(function(){ -_7e(this,_106); -}); -},append:function(jq,_107){ -return jq.each(function(){ -_93(this,_107); -}); -},insert:function(jq,_108){ -return jq.each(function(){ -_99(this,_108); -}); -},remove:function(jq,_109){ -return jq.each(function(){ -_9e(this,_109); -}); -},pop:function(jq,_10a){ -var node=jq.tree("getData",_10a); -jq.tree("remove",_10a); -return node; -},update:function(jq,_10b){ -return jq.each(function(){ -_54(this,_10b); -}); -},enableDnd:function(jq){ -return jq.each(function(){ -_11(this); -}); -},disableDnd:function(jq){ -return jq.each(function(){ -_d(this); -}); -},beginEdit:function(jq,_10c){ -return jq.each(function(){ -_dd(this,_10c); -}); -},endEdit:function(jq,_10d){ -return jq.each(function(){ -_e4(this,_10d); -}); -},cancelEdit:function(jq,_10e){ -return jq.each(function(){ -_ea(this,_10e); -}); -}}; -$.fn.tree.parseOptions=function(_10f){ -var t=$(_10f); -return $.extend({},$.parser.parseOptions(_10f,["url","method",{checkbox:"boolean",cascadeCheck:"boolean",onlyLeafCheck:"boolean"},{animate:"boolean",lines:"boolean",dnd:"boolean"}])); -}; -$.fn.tree.parseData=function(_110){ -var data=[]; -_111(data,$(_110)); -return data; -function _111(aa,tree){ -tree.children("li").each(function(){ -var node=$(this); -var item=$.extend({},$.parser.parseOptions(this,["id","iconCls","state"]),{checked:(node.attr("checked")?true:undefined)}); -item.text=node.children("span").html(); -if(!item.text){ -item.text=node.html(); -} -var _112=node.children("ul"); -if(_112.length){ -item.children=[]; -_111(item.children,_112); -} -aa.push(item); -}); -}; -}; -var _113=1; -var _114={render:function(_115,ul,data){ -var opts=$.data(_115,"tree").options; -var _116=$(ul).prev("div.tree-node").find("span.tree-indent, span.tree-hit").length; -var cc=_117(_116,data); -$(ul).append(cc.join("")); -function _117(_118,_119){ -var cc=[]; -for(var i=0;i<_119.length;i++){ -var item=_119[i]; -if(item.state!="open"&&item.state!="closed"){ -item.state="open"; -} -item.domId="_easyui_tree_"+_113++; -cc.push("
        • "); -cc.push("
          "); -for(var j=0;j<_118;j++){ -cc.push(""); -} -if(item.state=="closed"){ -cc.push(""); -cc.push(""); -}else{ -if(item.children&&item.children.length){ -cc.push(""); -cc.push(""); -}else{ -cc.push(""); -cc.push(""); -} -} -if(opts.checkbox){ -if((!opts.onlyLeafCheck)||(opts.onlyLeafCheck&&(!item.children||!item.children.length))){ -cc.push(""); -} -} -cc.push(""+opts.formatter.call(_115,item)+""); -cc.push("
          "); -if(item.children&&item.children.length){ -var tmp=_117(_118+1,item.children); -cc.push("
            "); -cc=cc.concat(tmp); -cc.push("
          "); -} -cc.push("
        • "); -} -return cc; -}; -}}; -$.fn.tree.defaults={url:null,method:"post",animate:false,checkbox:false,cascadeCheck:true,onlyLeafCheck:false,lines:false,dnd:false,data:null,formatter:function(node){ -return node.text; -},loader:function(_11a,_11b,_11c){ -var opts=$(this).tree("options"); -if(!opts.url){ -return false; -} -$.ajax({type:opts.method,url:opts.url,data:_11a,dataType:"json",success:function(data){ -_11b(data); -},error:function(){ -_11c.apply(this,arguments); -}}); -},loadFilter:function(data,_11d){ -return data; -},view:_114,onBeforeLoad:function(node,_11e){ -},onLoadSuccess:function(node,data){ -},onLoadError:function(){ -},onClick:function(node){ -},onDblClick:function(node){ -},onBeforeExpand:function(node){ -},onExpand:function(node){ -},onBeforeCollapse:function(node){ -},onCollapse:function(node){ -},onBeforeCheck:function(node,_11f){ -},onCheck:function(node,_120){ -},onBeforeSelect:function(node){ -},onSelect:function(node){ -},onContextMenu:function(e,node){ -},onBeforeDrag:function(node){ -},onStartDrag:function(node){ -},onStopDrag:function(node){ -},onDragEnter:function(_121,_122){ -},onDragOver:function(_123,_124){ -},onDragLeave:function(_125,_126){ -},onBeforeDrop:function(_127,_128,_129){ -},onDrop:function(_12a,_12b,_12c){ -},onBeforeEdit:function(node){ -},onAfterEdit:function(node){ -},onCancelEdit:function(node){ -}}; -})(jQuery); - diff --git a/src/main/webapp/js/easyui-1.3.5/plugins/jquery.treegrid.js b/src/main/webapp/js/easyui-1.3.5/plugins/jquery.treegrid.js deleted file mode 100644 index 541e54c3..00000000 --- a/src/main/webapp/js/easyui-1.3.5/plugins/jquery.treegrid.js +++ /dev/null @@ -1,1100 +0,0 @@ -/** - * jQuery EasyUI 1.3.5 - * - * Copyright (c) 2009-2013 www.jeasyui.com. All rights reserved. - * - * Licensed under the GPL or commercial licenses - * To use it on other terms please contact us: info@jeasyui.com - * http://www.gnu.org/licenses/gpl.txt - * http://www.jeasyui.com/license_commercial.php - * - */ -(function($){ -function _1(_2){ -var _3=$.data(_2,"treegrid"); -var _4=_3.options; -$(_2).datagrid($.extend({},_4,{url:null,data:null,loader:function(){ -return false; -},onBeforeLoad:function(){ -return false; -},onLoadSuccess:function(){ -},onResizeColumn:function(_5,_6){ -_20(_2); -_4.onResizeColumn.call(_2,_5,_6); -},onSortColumn:function(_7,_8){ -_4.sortName=_7; -_4.sortOrder=_8; -if(_4.remoteSort){ -_1f(_2); -}else{ -var _9=$(_2).treegrid("getData"); -_39(_2,0,_9); -} -_4.onSortColumn.call(_2,_7,_8); -},onBeforeEdit:function(_a,_b){ -if(_4.onBeforeEdit.call(_2,_b)==false){ -return false; -} -},onAfterEdit:function(_c,_d,_e){ -_4.onAfterEdit.call(_2,_d,_e); -},onCancelEdit:function(_f,row){ -_4.onCancelEdit.call(_2,row); -},onSelect:function(_10){ -_4.onSelect.call(_2,_41(_2,_10)); -},onUnselect:function(_11){ -_4.onUnselect.call(_2,_41(_2,_11)); -},onSelectAll:function(){ -_4.onSelectAll.call(_2,$.data(_2,"treegrid").data); -},onUnselectAll:function(){ -_4.onUnselectAll.call(_2,$.data(_2,"treegrid").data); -},onCheck:function(_12){ -_4.onCheck.call(_2,_41(_2,_12)); -},onUncheck:function(_13){ -_4.onUncheck.call(_2,_41(_2,_13)); -},onCheckAll:function(){ -_4.onCheckAll.call(_2,$.data(_2,"treegrid").data); -},onUncheckAll:function(){ -_4.onUncheckAll.call(_2,$.data(_2,"treegrid").data); -},onClickRow:function(_14){ -_4.onClickRow.call(_2,_41(_2,_14)); -},onDblClickRow:function(_15){ -_4.onDblClickRow.call(_2,_41(_2,_15)); -},onClickCell:function(_16,_17){ -_4.onClickCell.call(_2,_17,_41(_2,_16)); -},onDblClickCell:function(_18,_19){ -_4.onDblClickCell.call(_2,_19,_41(_2,_18)); -},onRowContextMenu:function(e,_1a){ -_4.onContextMenu.call(_2,e,_41(_2,_1a)); -}})); -if(!_4.columns){ -var _1b=$.data(_2,"datagrid").options; -_4.columns=_1b.columns; -_4.frozenColumns=_1b.frozenColumns; -} -_3.dc=$.data(_2,"datagrid").dc; -if(_4.pagination){ -var _1c=$(_2).datagrid("getPager"); -_1c.pagination({pageNumber:_4.pageNumber,pageSize:_4.pageSize,pageList:_4.pageList,onSelectPage:function(_1d,_1e){ -_4.pageNumber=_1d; -_4.pageSize=_1e; -_1f(_2); -}}); -_4.pageSize=_1c.pagination("options").pageSize; -} -}; -function _20(_21,_22){ -var _23=$.data(_21,"datagrid").options; -var dc=$.data(_21,"datagrid").dc; -if(!dc.body1.is(":empty")&&(!_23.nowrap||_23.autoRowHeight)){ -if(_22!=undefined){ -var _24=_25(_21,_22); -for(var i=0;i<_24.length;i++){ -_26(_24[i][_23.idField]); -} -} -} -$(_21).datagrid("fixRowHeight",_22); -function _26(_27){ -var tr1=_23.finder.getTr(_21,_27,"body",1); -var tr2=_23.finder.getTr(_21,_27,"body",2); -tr1.css("height",""); -tr2.css("height",""); -var _28=Math.max(tr1.height(),tr2.height()); -tr1.css("height",_28); -tr2.css("height",_28); -}; -}; -function _29(_2a){ -var dc=$.data(_2a,"datagrid").dc; -var _2b=$.data(_2a,"treegrid").options; -if(!_2b.rownumbers){ -return; -} -dc.body1.find("div.datagrid-cell-rownumber").each(function(i){ -$(this).html(i+1); -}); -}; -function _2c(_2d){ -var dc=$.data(_2d,"datagrid").dc; -var _2e=dc.body1.add(dc.body2); -var _2f=($.data(_2e[0],"events")||$._data(_2e[0],"events")).click[0].handler; -dc.body1.add(dc.body2).bind("mouseover",function(e){ -var tt=$(e.target); -var tr=tt.closest("tr.datagrid-row"); -if(!tr.length){ -return; -} -if(tt.hasClass("tree-hit")){ -tt.hasClass("tree-expanded")?tt.addClass("tree-expanded-hover"):tt.addClass("tree-collapsed-hover"); -} -e.stopPropagation(); -}).bind("mouseout",function(e){ -var tt=$(e.target); -var tr=tt.closest("tr.datagrid-row"); -if(!tr.length){ -return; -} -if(tt.hasClass("tree-hit")){ -tt.hasClass("tree-expanded")?tt.removeClass("tree-expanded-hover"):tt.removeClass("tree-collapsed-hover"); -} -e.stopPropagation(); -}).unbind("click").bind("click",function(e){ -var tt=$(e.target); -var tr=tt.closest("tr.datagrid-row"); -if(!tr.length){ -return; -} -if(tt.hasClass("tree-hit")){ -_30(_2d,tr.attr("node-id")); -}else{ -_2f(e); -} -e.stopPropagation(); -}); -}; -function _31(_32,_33){ -var _34=$.data(_32,"treegrid").options; -var tr1=_34.finder.getTr(_32,_33,"body",1); -var tr2=_34.finder.getTr(_32,_33,"body",2); -var _35=$(_32).datagrid("getColumnFields",true).length+(_34.rownumbers?1:0); -var _36=$(_32).datagrid("getColumnFields",false).length; -_37(tr1,_35); -_37(tr2,_36); -function _37(tr,_38){ -$(""+""+"
          "+""+"").insertAfter(tr); -}; -}; -function _39(_3a,_3b,_3c,_3d){ -var _3e=$.data(_3a,"treegrid"); -var _3f=_3e.options; -var dc=_3e.dc; -_3c=_3f.loadFilter.call(_3a,_3c,_3b); -var _40=_41(_3a,_3b); -if(_40){ -var _42=_3f.finder.getTr(_3a,_3b,"body",1); -var _43=_3f.finder.getTr(_3a,_3b,"body",2); -var cc1=_42.next("tr.treegrid-tr-tree").children("td").children("div"); -var cc2=_43.next("tr.treegrid-tr-tree").children("td").children("div"); -if(!_3d){ -_40.children=[]; -} -}else{ -var cc1=dc.body1; -var cc2=dc.body2; -if(!_3d){ -_3e.data=[]; -} -} -if(!_3d){ -cc1.empty(); -cc2.empty(); -} -if(_3f.view.onBeforeRender){ -_3f.view.onBeforeRender.call(_3f.view,_3a,_3b,_3c); -} -_3f.view.render.call(_3f.view,_3a,cc1,true); -_3f.view.render.call(_3f.view,_3a,cc2,false); -if(_3f.showFooter){ -_3f.view.renderFooter.call(_3f.view,_3a,dc.footer1,true); -_3f.view.renderFooter.call(_3f.view,_3a,dc.footer2,false); -} -if(_3f.view.onAfterRender){ -_3f.view.onAfterRender.call(_3f.view,_3a); -} -_3f.onLoadSuccess.call(_3a,_40,_3c); -if(!_3b&&_3f.pagination){ -var _44=$.data(_3a,"treegrid").total; -var _45=$(_3a).datagrid("getPager"); -if(_45.pagination("options").total!=_44){ -_45.pagination({total:_44}); -} -} -_20(_3a); -_29(_3a); -$(_3a).treegrid("autoSizeColumn"); -}; -function _1f(_46,_47,_48,_49,_4a){ -var _4b=$.data(_46,"treegrid").options; -var _4c=$(_46).datagrid("getPanel").find("div.datagrid-body"); -if(_48){ -_4b.queryParams=_48; -} -var _4d=$.extend({},_4b.queryParams); -if(_4b.pagination){ -$.extend(_4d,{page:_4b.pageNumber,rows:_4b.pageSize}); -} -if(_4b.sortName){ -$.extend(_4d,{sort:_4b.sortName,order:_4b.sortOrder}); -} -var row=_41(_46,_47); -if(_4b.onBeforeLoad.call(_46,row,_4d)==false){ -return; -} -var _4e=_4c.find("tr[node-id=\""+_47+"\"] span.tree-folder"); -_4e.addClass("tree-loading"); -$(_46).treegrid("loading"); -var _4f=_4b.loader.call(_46,_4d,function(_50){ -_4e.removeClass("tree-loading"); -$(_46).treegrid("loaded"); -_39(_46,_47,_50,_49); -if(_4a){ -_4a(); -} -},function(){ -_4e.removeClass("tree-loading"); -$(_46).treegrid("loaded"); -_4b.onLoadError.apply(_46,arguments); -if(_4a){ -_4a(); -} -}); -if(_4f==false){ -_4e.removeClass("tree-loading"); -$(_46).treegrid("loaded"); -} -}; -function _51(_52){ -var _53=_54(_52); -if(_53.length){ -return _53[0]; -}else{ -return null; -} -}; -function _54(_55){ -return $.data(_55,"treegrid").data; -}; -function _56(_57,_58){ -var row=_41(_57,_58); -if(row._parentId){ -return _41(_57,row._parentId); -}else{ -return null; -} -}; -function _25(_59,_5a){ -var _5b=$.data(_59,"treegrid").options; -var _5c=$(_59).datagrid("getPanel").find("div.datagrid-view2 div.datagrid-body"); -var _5d=[]; -if(_5a){ -_5e(_5a); -}else{ -var _5f=_54(_59); -for(var i=0;i<_5f.length;i++){ -_5d.push(_5f[i]); -_5e(_5f[i][_5b.idField]); -} -} -function _5e(_60){ -var _61=_41(_59,_60); -if(_61&&_61.children){ -for(var i=0,len=_61.children.length;i").insertBefore(_96); -if(hit.prev().length){ -hit.prev().remove(); -} -} -} -_39(_92,_93.parent,_93.data,true); -}; -function _97(_98,_99){ -var ref=_99.before||_99.after; -var _9a=$.data(_98,"treegrid").options; -var _9b=_56(_98,ref); -_91(_98,{parent:(_9b?_9b[_9a.idField]:null),data:[_99.data]}); -_9c(true); -_9c(false); -_29(_98); -function _9c(_9d){ -var _9e=_9d?1:2; -var tr=_9a.finder.getTr(_98,_99.data[_9a.idField],"body",_9e); -var _9f=tr.closest("table.datagrid-btable"); -tr=tr.parent().children(); -var _a0=_9a.finder.getTr(_98,ref,"body",_9e); -if(_99.before){ -tr.insertBefore(_a0); -}else{ -var sub=_a0.next("tr.treegrid-tr-tree"); -tr.insertAfter(sub.length?sub:_a0); -} -_9f.remove(); -}; -}; -function _a1(_a2,_a3){ -var _a4=$.data(_a2,"treegrid").options; -var tr=_a4.finder.getTr(_a2,_a3); -tr.next("tr.treegrid-tr-tree").remove(); -tr.remove(); -var _a5=del(_a3); -if(_a5){ -if(_a5.children.length==0){ -tr=_a4.finder.getTr(_a2,_a5[_a4.idField]); -tr.next("tr.treegrid-tr-tree").remove(); -var _a6=tr.children("td[field=\""+_a4.treeField+"\"]").children("div.datagrid-cell"); -_a6.find(".tree-icon").removeClass("tree-folder").addClass("tree-file"); -_a6.find(".tree-hit").remove(); -$("").prependTo(_a6); -} -} -_29(_a2); -function del(id){ -var cc; -var _a7=_56(_a2,_a3); -if(_a7){ -cc=_a7.children; -}else{ -cc=$(_a2).treegrid("getData"); -} -for(var i=0;i"]; -for(var i=0;i<_c9.length;i++){ -var row=_c9[i]; -if(row.state!="open"&&row.state!="closed"){ -row.state="open"; -} -var css=_c0.rowStyler?_c0.rowStyler.call(_bd,row):""; -var _cb=""; -var _cc=""; -if(typeof css=="string"){ -_cc=css; -}else{ -if(css){ -_cb=css["class"]||""; -_cc=css["style"]||""; -} -} -var cls="class=\"datagrid-row "+(_c3++%2&&_c0.striped?"datagrid-row-alt ":" ")+_cb+"\""; -var _cd=_cc?"style=\""+_cc+"\"":""; -var _ce=_c2+"-"+(_c7?1:2)+"-"+row[_c0.idField]; -_ca.push(""); -_ca=_ca.concat(_c4.renderRow.call(_c4,_bd,_c1,_c7,_c8,row)); -_ca.push(""); -if(row.children&&row.children.length){ -var tt=_c6(_c7,_c8+1,row.children); -var v=row.state=="closed"?"none":"block"; -_ca.push("
          "); -_ca=_ca.concat(tt); -_ca.push("
          "); -} -} -_ca.push(""); -return _ca; -}; -},renderFooter:function(_cf,_d0,_d1){ -var _d2=$.data(_cf,"treegrid").options; -var _d3=$.data(_cf,"treegrid").footer||[]; -var _d4=$(_cf).datagrid("getColumnFields",_d1); -var _d5=[""]; -for(var i=0;i<_d3.length;i++){ -var row=_d3[i]; -row[_d2.idField]=row[_d2.idField]||("foot-row-id"+i); -_d5.push(""); -_d5.push(this.renderRow.call(this,_cf,_d4,_d1,0,row)); -_d5.push(""); -} -_d5.push("
          "); -$(_d0).html(_d5.join("")); -},renderRow:function(_d6,_d7,_d8,_d9,row){ -var _da=$.data(_d6,"treegrid").options; -var cc=[]; -if(_d8&&_da.rownumbers){ -cc.push("
          0
          "); -} -for(var i=0;i<_d7.length;i++){ -var _db=_d7[i]; -var col=$(_d6).datagrid("getColumnOption",_db); -if(col){ -var css=col.styler?(col.styler(row[_db],row)||""):""; -var _dc=""; -var _dd=""; -if(typeof css=="string"){ -_dd=css; -}else{ -if(cc){ -_dc=css["class"]||""; -_dd=css["style"]||""; -} -} -var cls=_dc?"class=\""+_dc+"\"":""; -var _de=col.hidden?"style=\"display:none;"+_dd+"\"":(_dd?"style=\""+_dd+"\"":""); -cc.push(""); -if(col.checkbox){ -var _de=""; -}else{ -var _de=_dd; -if(col.align){ -_de+=";text-align:"+col.align+";"; -} -if(!_da.nowrap){ -_de+=";white-space:normal;height:auto;"; -}else{ -if(_da.autoRowHeight){ -_de+=";height:auto;"; -} -} -} -cc.push("
          "); -if(col.checkbox){ -if(row.checked){ -cc.push(""); -}else{ -var val=null; -if(col.formatter){ -val=col.formatter(row[_db],row); -}else{ -val=row[_db]; -} -if(_db==_da.treeField){ -for(var j=0;j<_d9;j++){ -cc.push(""); -} -if(row.state=="closed"){ -cc.push(""); -cc.push(""); -}else{ -if(row.children&&row.children.length){ -cc.push(""); -cc.push(""); -}else{ -cc.push(""); -cc.push(""); -} -} -cc.push(""+val+""); -}else{ -cc.push(val); -} -} -cc.push("
          "); -cc.push(""); -} -} -return cc.join(""); -},refreshRow:function(_df,id){ -this.updateRow.call(this,_df,id,{}); -},updateRow:function(_e0,id,row){ -var _e1=$.data(_e0,"treegrid").options; -var _e2=$(_e0).treegrid("find",id); -$.extend(_e2,row); -var _e3=$(_e0).treegrid("getLevel",id)-1; -var _e4=_e1.rowStyler?_e1.rowStyler.call(_e0,_e2):""; -function _e5(_e6){ -var _e7=$(_e0).treegrid("getColumnFields",_e6); -var tr=_e1.finder.getTr(_e0,id,"body",(_e6?1:2)); -var _e8=tr.find("div.datagrid-cell-rownumber").html(); -var _e9=tr.find("div.datagrid-cell-check input[type=checkbox]").is(":checked"); -tr.html(this.renderRow(_e0,_e7,_e6,_e3,_e2)); -tr.attr("style",_e4||""); -tr.find("div.datagrid-cell-rownumber").html(_e8); -if(_e9){ -tr.find("div.datagrid-cell-check input[type=checkbox]")._propAttr("checked",true); -} -}; -_e5.call(this,true); -_e5.call(this,false); -$(_e0).treegrid("fixRowHeight",id); -},onBeforeRender:function(_ea,_eb,_ec){ -if($.isArray(_eb)){ -_ec={total:_eb.length,rows:_eb}; -_eb=null; -} -if(!_ec){ -return false; -} -var _ed=$.data(_ea,"treegrid"); -var _ee=_ed.options; -if(_ec.length==undefined){ -if(_ec.footer){ -_ed.footer=_ec.footer; -} -if(_ec.total){ -_ed.total=_ec.total; -} -_ec=this.transfer(_ea,_eb,_ec.rows); -}else{ -function _ef(_f0,_f1){ -for(var i=0;i<_f0.length;i++){ -var row=_f0[i]; -row._parentId=_f1; -if(row.children&&row.children.length){ -_ef(row.children,row[_ee.idField]); -} -} -}; -_ef(_ec,_eb); -} -var _f2=_41(_ea,_eb); -if(_f2){ -if(_f2.children){ -_f2.children=_f2.children.concat(_ec); -}else{ -_f2.children=_ec; -} -}else{ -_ed.data=_ed.data.concat(_ec); -} -this.sort(_ea,_ec); -this.treeNodes=_ec; -this.treeLevel=$(_ea).treegrid("getLevel",_eb); -},sort:function(_f3,_f4){ -var _f5=$.data(_f3,"treegrid").options; -if(!_f5.remoteSort&&_f5.sortName){ -var _f6=_f5.sortName.split(","); -var _f7=_f5.sortOrder.split(","); -_f8(_f4); -} -function _f8(_f9){ -_f9.sort(function(r1,r2){ -var r=0; -for(var i=0;i<_f6.length;i++){ -var sn=_f6[i]; -var so=_f7[i]; -var col=$(_f3).treegrid("getColumnOption",sn); -var _fa=col.sorter||function(a,b){ -return a==b?0:(a>b?1:-1); -}; -r=_fa(r1[sn],r2[sn])*(so=="asc"?1:-1); -if(r!=0){ -return r; -} -} -return r; -}); -for(var i=0;i<_f9.length;i++){ -var _fb=_f9[i].children; -if(_fb&&_fb.length){ -_f8(_fb); -} -} -}; -},transfer:function(_fc,_fd,_fe){ -var _ff=$.data(_fc,"treegrid").options; -var rows=[]; -for(var i=0;i<_fe.length;i++){ -rows.push(_fe[i]); -} -var _100=[]; -for(var i=0;i=_2b[0]&&len<=_2b[1]; -},message:"Please enter a value between {0} and {1}."},remote:{validator:function(_2c,_2d){ -var _2e={}; -_2e[_2d[1]]=_2c; -var _2f=$.ajax({url:_2d[0],dataType:"json",data:_2e,async:false,cache:false,type:"post"}).responseText; -return _2f=="true"; -},message:"Please fix this field."}}}; -})(jQuery); - diff --git a/src/main/webapp/js/easyui-1.3.5/plugins/jquery.window.js b/src/main/webapp/js/easyui-1.3.5/plugins/jquery.window.js deleted file mode 100644 index e3db1e16..00000000 --- a/src/main/webapp/js/easyui-1.3.5/plugins/jquery.window.js +++ /dev/null @@ -1,277 +0,0 @@ -/** - * jQuery EasyUI 1.3.5 - * - * Copyright (c) 2009-2013 www.jeasyui.com. All rights reserved. - * - * Licensed under the GPL or commercial licenses - * To use it on other terms please contact us: info@jeasyui.com - * http://www.gnu.org/licenses/gpl.txt - * http://www.jeasyui.com/license_commercial.php - * - */ -(function($){ -function _1(_2,_3){ -var _4=$.data(_2,"window").options; -if(_3){ -$.extend(_4,_3); -} -$(_2).panel("resize",_4); -}; -function _5(_6,_7){ -var _8=$.data(_6,"window"); -if(_7){ -if(_7.left!=null){ -_8.options.left=_7.left; -} -if(_7.top!=null){ -_8.options.top=_7.top; -} -} -$(_6).panel("move",_8.options); -if(_8.shadow){ -_8.shadow.css({left:_8.options.left,top:_8.options.top}); -} -}; -function _9(_a,_b){ -var _c=$.data(_a,"window"); -var _d=_c.options; -var _e=_d.width; -if(isNaN(_e)){ -_e=_c.window._outerWidth(); -} -if(_d.inline){ -var _f=_c.window.parent(); -_d.left=(_f.width()-_e)/2+_f.scrollLeft(); -}else{ -_d.left=($(window)._outerWidth()-_e)/2+$(document).scrollLeft(); -} -if(_b){ -_5(_a); -} -}; -function _10(_11,_12){ -var _13=$.data(_11,"window"); -var _14=_13.options; -var _15=_14.height; -if(isNaN(_15)){ -_15=_13.window._outerHeight(); -} -if(_14.inline){ -var _16=_13.window.parent(); -_14.top=(_16.height()-_15)/2+_16.scrollTop(); -}else{ -_14.top=($(window)._outerHeight()-_15)/2+$(document).scrollTop(); -} -if(_12){ -_5(_11); -} -}; -function _17(_18){ -var _19=$.data(_18,"window"); -var win=$(_18).panel($.extend({},_19.options,{border:false,doSize:true,closed:true,cls:"window",headerCls:"window-header",bodyCls:"window-body "+(_19.options.noheader?"window-body-noheader":""),onBeforeDestroy:function(){ -if(_19.options.onBeforeDestroy.call(_18)==false){ -return false; -} -if(_19.shadow){ -_19.shadow.remove(); -} -if(_19.mask){ -_19.mask.remove(); -} -},onClose:function(){ -if(_19.shadow){ -_19.shadow.hide(); -} -if(_19.mask){ -_19.mask.hide(); -} -_19.options.onClose.call(_18); -},onOpen:function(){ -if(_19.mask){ -_19.mask.css({display:"block",zIndex:$.fn.window.defaults.zIndex++}); -} -if(_19.shadow){ -_19.shadow.css({display:"block",zIndex:$.fn.window.defaults.zIndex++,left:_19.options.left,top:_19.options.top,width:_19.window._outerWidth(),height:_19.window._outerHeight()}); -} -_19.window.css("z-index",$.fn.window.defaults.zIndex++); -_19.options.onOpen.call(_18); -},onResize:function(_1a,_1b){ -var _1c=$(this).panel("options"); -$.extend(_19.options,{width:_1c.width,height:_1c.height,left:_1c.left,top:_1c.top}); -if(_19.shadow){ -_19.shadow.css({left:_19.options.left,top:_19.options.top,width:_19.window._outerWidth(),height:_19.window._outerHeight()}); -} -_19.options.onResize.call(_18,_1a,_1b); -},onMinimize:function(){ -if(_19.shadow){ -_19.shadow.hide(); -} -if(_19.mask){ -_19.mask.hide(); -} -_19.options.onMinimize.call(_18); -},onBeforeCollapse:function(){ -if(_19.options.onBeforeCollapse.call(_18)==false){ -return false; -} -if(_19.shadow){ -_19.shadow.hide(); -} -},onExpand:function(){ -if(_19.shadow){ -_19.shadow.show(); -} -_19.options.onExpand.call(_18); -}})); -_19.window=win.panel("panel"); -if(_19.mask){ -_19.mask.remove(); -} -if(_19.options.modal==true){ -_19.mask=$("
          ").insertAfter(_19.window); -_19.mask.css({width:(_19.options.inline?_19.mask.parent().width():_1d().width),height:(_19.options.inline?_19.mask.parent().height():_1d().height),display:"none"}); -} -if(_19.shadow){ -_19.shadow.remove(); -} -if(_19.options.shadow==true){ -_19.shadow=$("
          ").insertAfter(_19.window); -_19.shadow.css({display:"none"}); -} -if(_19.options.left==null){ -_9(_18); -} -if(_19.options.top==null){ -_10(_18); -} -_5(_18); -if(_19.options.closed==false){ -win.window("open"); -} -}; -function _1e(_1f){ -var _20=$.data(_1f,"window"); -_20.window.draggable({handle:">div.panel-header>div.panel-title",disabled:_20.options.draggable==false,onStartDrag:function(e){ -if(_20.mask){ -_20.mask.css("z-index",$.fn.window.defaults.zIndex++); -} -if(_20.shadow){ -_20.shadow.css("z-index",$.fn.window.defaults.zIndex++); -} -_20.window.css("z-index",$.fn.window.defaults.zIndex++); -if(!_20.proxy){ -_20.proxy=$("
          ").insertAfter(_20.window); -} -_20.proxy.css({display:"none",zIndex:$.fn.window.defaults.zIndex++,left:e.data.left,top:e.data.top}); -_20.proxy._outerWidth(_20.window._outerWidth()); -_20.proxy._outerHeight(_20.window._outerHeight()); -setTimeout(function(){ -if(_20.proxy){ -_20.proxy.show(); -} -},500); -},onDrag:function(e){ -_20.proxy.css({display:"block",left:e.data.left,top:e.data.top}); -return false; -},onStopDrag:function(e){ -_20.options.left=e.data.left; -_20.options.top=e.data.top; -$(_1f).window("move"); -_20.proxy.remove(); -_20.proxy=null; -}}); -_20.window.resizable({disabled:_20.options.resizable==false,onStartResize:function(e){ -_20.pmask=$("
          ").insertAfter(_20.window); -_20.pmask.css({zIndex:$.fn.window.defaults.zIndex++,left:e.data.left,top:e.data.top,width:_20.window._outerWidth(),height:_20.window._outerHeight()}); -if(!_20.proxy){ -_20.proxy=$("
          ").insertAfter(_20.window); -} -_20.proxy.css({zIndex:$.fn.window.defaults.zIndex++,left:e.data.left,top:e.data.top}); -_20.proxy._outerWidth(e.data.width); -_20.proxy._outerHeight(e.data.height); -},onResize:function(e){ -_20.proxy.css({left:e.data.left,top:e.data.top}); -_20.proxy._outerWidth(e.data.width); -_20.proxy._outerHeight(e.data.height); -return false; -},onStopResize:function(e){ -$.extend(_20.options,{left:e.data.left,top:e.data.top,width:e.data.width,height:e.data.height}); -_1(_1f); -_20.pmask.remove(); -_20.pmask=null; -_20.proxy.remove(); -_20.proxy=null; -}}); -}; -function _1d(){ -if(document.compatMode=="BackCompat"){ -return {width:Math.max(document.body.scrollWidth,document.body.clientWidth),height:Math.max(document.body.scrollHeight,document.body.clientHeight)}; -}else{ -return {width:Math.max(document.documentElement.scrollWidth,document.documentElement.clientWidth),height:Math.max(document.documentElement.scrollHeight,document.documentElement.clientHeight)}; -} -}; -$(window).resize(function(){ -$("body>div.window-mask").css({width:$(window)._outerWidth(),height:$(window)._outerHeight()}); -setTimeout(function(){ -$("body>div.window-mask").css({width:_1d().width,height:_1d().height}); -},50); -}); -$.fn.window=function(_21,_22){ -if(typeof _21=="string"){ -var _23=$.fn.window.methods[_21]; -if(_23){ -return _23(this,_22); -}else{ -return this.panel(_21,_22); -} -} -_21=_21||{}; -return this.each(function(){ -var _24=$.data(this,"window"); -if(_24){ -$.extend(_24.options,_21); -}else{ -_24=$.data(this,"window",{options:$.extend({},$.fn.window.defaults,$.fn.window.parseOptions(this),_21)}); -if(!_24.options.inline){ -document.body.appendChild(this); -} -} -_17(this); -_1e(this); -}); -}; -$.fn.window.methods={options:function(jq){ -var _25=jq.panel("options"); -var _26=$.data(jq[0],"window").options; -return $.extend(_26,{closed:_25.closed,collapsed:_25.collapsed,minimized:_25.minimized,maximized:_25.maximized}); -},window:function(jq){ -return $.data(jq[0],"window").window; -},resize:function(jq,_27){ -return jq.each(function(){ -_1(this,_27); -}); -},move:function(jq,_28){ -return jq.each(function(){ -_5(this,_28); -}); -},hcenter:function(jq){ -return jq.each(function(){ -_9(this,true); -}); -},vcenter:function(jq){ -return jq.each(function(){ -_10(this,true); -}); -},center:function(jq){ -return jq.each(function(){ -_9(this); -_10(this); -_5(this); -}); -}}; -$.fn.window.parseOptions=function(_29){ -return $.extend({},$.fn.panel.parseOptions(_29),$.parser.parseOptions(_29,[{draggable:"boolean",resizable:"boolean",shadow:"boolean",modal:"boolean",inline:"boolean"}])); -}; -$.fn.window.defaults=$.extend({},$.fn.panel.defaults,{zIndex:9000,draggable:true,resizable:true,shadow:true,modal:false,inline:false,title:"New Window",collapsible:true,minimizable:true,maximizable:true,closable:true,closed:false}); -})(jQuery); - diff --git a/src/main/webapp/js/easyui-1.3.5/src/easyloader.js b/src/main/webapp/js/easyui-1.3.5/src/easyloader.js deleted file mode 100644 index 2d589796..00000000 --- a/src/main/webapp/js/easyui-1.3.5/src/easyloader.js +++ /dev/null @@ -1,405 +0,0 @@ -/** - * easyloader - jQuery EasyUI - * - * Copyright (c) 2009-2013 www.jeasyui.com. All rights reserved. - * - * Licensed under the GPL or commercial licenses - * To use it on other terms please contact us: info@jeasyui.com - * http://www.gnu.org/licenses/gpl.txt - * http://www.jeasyui.com/license_commercial.php - * - */ -(function(){ - var modules = { - draggable:{ - js:'jquery.draggable.js' - }, - droppable:{ - js:'jquery.droppable.js' - }, - resizable:{ - js:'jquery.resizable.js' - }, - linkbutton:{ - js:'jquery.linkbutton.js', - css:'linkbutton.css' - }, - progressbar:{ - js:'jquery.progressbar.js', - css:'progressbar.css' - }, - tooltip:{ - js:'jquery.tooltip.js', - css:'tooltip.css' - }, - pagination:{ - js:'jquery.pagination.js', - css:'pagination.css', - dependencies:['linkbutton'] - }, - datagrid:{ - js:'jquery.datagrid.js', - css:'datagrid.css', - dependencies:['panel','resizable','linkbutton','pagination'] - }, - treegrid:{ - js:'jquery.treegrid.js', - css:'tree.css', - dependencies:['datagrid'] - }, - propertygrid:{ - js:'jquery.propertygrid.js', - css:'propertygrid.css', - dependencies:['datagrid'] - }, - panel: { - js:'jquery.panel.js', - css:'panel.css' - }, - window:{ - js:'jquery.window.js', - css:'window.css', - dependencies:['resizable','draggable','panel'] - }, - dialog:{ - js:'jquery.dialog.js', - css:'dialog.css', - dependencies:['linkbutton','window'] - }, - messager:{ - js:'jquery.messager.js', - css:'messager.css', - dependencies:['linkbutton','window','progressbar'] - }, - layout:{ - js:'jquery.layout.js', - css:'layout.css', - dependencies:['resizable','panel'] - }, - form:{ - js:'jquery.form.js' - }, - menu:{ - js:'jquery.menu.js', - css:'menu.css' - }, - tabs:{ - js:'jquery.tabs.js', - css:'tabs.css', - dependencies:['panel','linkbutton'] - }, - menubutton:{ - js:'jquery.menubutton.js', - css:'menubutton.css', - dependencies:['linkbutton','menu'] - }, - splitbutton:{ - js:'jquery.splitbutton.js', - css:'splitbutton.css', - dependencies:['menubutton'] - }, - accordion:{ - js:'jquery.accordion.js', - css:'accordion.css', - dependencies:['panel'] - }, - calendar:{ - js:'jquery.calendar.js', - css:'calendar.css' - }, - combo:{ - js:'jquery.combo.js', - css:'combo.css', - dependencies:['panel','validatebox'] - }, - combobox:{ - js:'jquery.combobox.js', - css:'combobox.css', - dependencies:['combo'] - }, - combotree:{ - js:'jquery.combotree.js', - dependencies:['combo','tree'] - }, - combogrid:{ - js:'jquery.combogrid.js', - dependencies:['combo','datagrid'] - }, - validatebox:{ - js:'jquery.validatebox.js', - css:'validatebox.css', - dependencies:['tooltip'] - }, - numberbox:{ - js:'jquery.numberbox.js', - dependencies:['validatebox'] - }, - searchbox:{ - js:'jquery.searchbox.js', - css:'searchbox.css', - dependencies:['menubutton'] - }, - spinner:{ - js:'jquery.spinner.js', - css:'spinner.css', - dependencies:['validatebox'] - }, - numberspinner:{ - js:'jquery.numberspinner.js', - dependencies:['spinner','numberbox'] - }, - timespinner:{ - js:'jquery.timespinner.js', - dependencies:['spinner'] - }, - tree:{ - js:'jquery.tree.js', - css:'tree.css', - dependencies:['draggable','droppable'] - }, - datebox:{ - js:'jquery.datebox.js', - css:'datebox.css', - dependencies:['calendar','combo'] - }, - datetimebox:{ - js:'jquery.datetimebox.js', - dependencies:['datebox','timespinner'] - }, - slider:{ - js:'jquery.slider.js', - dependencies:['draggable'] - }, - tooltip:{ - js:'jquery.tooltip.js' - }, - parser:{ - js:'jquery.parser.js' - } - }; - - var locales = { - 'af':'easyui-lang-af.js', - 'ar':'easyui-lang-ar.js', - 'bg':'easyui-lang-bg.js', - 'ca':'easyui-lang-ca.js', - 'cs':'easyui-lang-cs.js', - 'cz':'easyui-lang-cz.js', - 'da':'easyui-lang-da.js', - 'de':'easyui-lang-de.js', - 'el':'easyui-lang-el.js', - 'en':'easyui-lang-en.js', - 'es':'easyui-lang-es.js', - 'fr':'easyui-lang-fr.js', - 'it':'easyui-lang-it.js', - 'jp':'easyui-lang-jp.js', - 'nl':'easyui-lang-nl.js', - 'pl':'easyui-lang-pl.js', - 'pt_BR':'easyui-lang-pt_BR.js', - 'ru':'easyui-lang-ru.js', - 'sv_SE':'easyui-lang-sv_SE.js', - 'tr':'easyui-lang-tr.js', - 'zh_CN':'easyui-lang-zh_CN.js', - 'zh_TW':'easyui-lang-zh_TW.js' - }; - - var queues = {}; - - function loadJs(url, callback){ - var done = false; - var script = document.createElement('script'); - script.type = 'text/javascript'; - script.language = 'javascript'; - script.src = url; - script.onload = script.onreadystatechange = function(){ - if (!done && (!script.readyState || script.readyState == 'loaded' || script.readyState == 'complete')){ - done = true; - script.onload = script.onreadystatechange = null; - if (callback){ - callback.call(script); - } - } - } - document.getElementsByTagName("head")[0].appendChild(script); - } - - function runJs(url, callback){ - loadJs(url, function(){ - document.getElementsByTagName("head")[0].removeChild(this); - if (callback){ - callback(); - } - }); - } - - function loadCss(url, callback){ - var link = document.createElement('link'); - link.rel = 'stylesheet'; - link.type = 'text/css'; - link.media = 'screen'; - link.href = url; - document.getElementsByTagName('head')[0].appendChild(link); - if (callback){ - callback.call(link); - } - } - - function loadSingle(name, callback){ - queues[name] = 'loading'; - - var module = modules[name]; - var jsStatus = 'loading'; - var cssStatus = (easyloader.css && module['css']) ? 'loading' : 'loaded'; - - if (easyloader.css && module['css']){ - if (/^http/i.test(module['css'])){ - var url = module['css']; - } else { - var url = easyloader.base + 'themes/' + easyloader.theme + '/' + module['css']; - } - loadCss(url, function(){ - cssStatus = 'loaded'; - if (jsStatus == 'loaded' && cssStatus == 'loaded'){ - finish(); - } - }); - } - - if (/^http/i.test(module['js'])){ - var url = module['js']; - } else { - var url = easyloader.base + 'plugins/' + module['js']; - } - loadJs(url, function(){ - jsStatus = 'loaded'; - if (jsStatus == 'loaded' && cssStatus == 'loaded'){ - finish(); - } - }); - - function finish(){ - queues[name] = 'loaded'; - easyloader.onProgress(name); - if (callback){ - callback(); - } - } - } - - function loadModule(name, callback){ - var mm = []; - var doLoad = false; - - if (typeof name == 'string'){ - add(name); - } else { - for(var i=0; idiv.panel>div.accordion-header'); - if (headers.length){ - headerHeight = $(headers[0]).css('height', '')._outerHeight(); - } - if (!isNaN(opts.height)){ - cc._outerHeight(opts.height); - bodyHeight = cc.height() - headerHeight*headers.length; - } else { - cc.css('height', ''); - } - - _resize(true, bodyHeight - _resize(false) + 1); - - function _resize(collapsible, height){ - var totalHeight = 0; - for(var i=0; i= panels.length){ - return null; - } else { - return panels[which]; - } - } - return findBy(container, 'title', which); - } - - function setProperties(container){ - var opts = $.data(container, 'accordion').options; - var cc = $(container); - if (opts.border){ - cc.removeClass('accordion-noborder'); - } else { - cc.addClass('accordion-noborder'); - } - } - - function init(container){ - var state = $.data(container, 'accordion'); - var cc = $(container); - cc.addClass('accordion'); - - state.panels = []; - cc.children('div').each(function(){ - var opts = $.extend({}, $.parser.parseOptions(this), { - selected: ($(this).attr('selected') ? true : undefined) - }); - var pp = $(this); - state.panels.push(pp); - createPanel(container, pp, opts); - }); - - cc.bind('_resize', function(e,force){ - var opts = $.data(container, 'accordion').options; - if (opts.fit == true || force){ - setSize(container); - } - return false; - }); - } - - function createPanel(container, pp, options){ - var opts = $.data(container, 'accordion').options; - pp.panel($.extend({}, { - collapsible: true, - minimizable: false, - maximizable: false, - closable: false, - doSize: false, - collapsed: true, - headerCls: 'accordion-header', - bodyCls: 'accordion-body' - }, options, { - onBeforeExpand: function(){ - if (options.onBeforeExpand){ - if (options.onBeforeExpand.call(this) == false){return false} - } - if (!opts.multiple){ - // get all selected panel - var all = $.grep(getSelections(container), function(p){ - return p.panel('options').collapsible; - }); - for(var i=0; i').addClass('accordion-collapse accordion-expand').appendTo(tool); - t.bind('click', function(){ - var index = getPanelIndex(container, pp); - if (pp.panel('options').collapsed){ - select(container, index); - } else { - unselect(container, index); - } - return false; - }); - pp.panel('options').collapsible ? t.show() : t.hide(); - - header.click(function(){ - $(this).find('a.accordion-collapse:visible').triggerHandler('click'); - return false; - }); - } - - /** - * select and set the specified panel active - */ - function select(container, which){ - var p = getPanel(container, which); - if (!p){return} - stopAnimate(container); - var opts = $.data(container, 'accordion').options; - p.panel('expand', opts.animate); - } - - function unselect(container, which){ - var p = getPanel(container, which); - if (!p){return} - stopAnimate(container); - var opts = $.data(container, 'accordion').options; - p.panel('collapse', opts.animate); - } - - function doFirstSelect(container){ - var opts = $.data(container, 'accordion').options; - var p = findBy(container, 'selected', true); - if (p){ - _select(getPanelIndex(container, p)); - } else { - _select(opts.selected); - } - - function _select(index){ - var animate = opts.animate; - opts.animate = false; - select(container, index); - opts.animate = animate; - } - } - - /** - * stop the animation of all panels - */ - function stopAnimate(container){ - var panels = $.data(container, 'accordion').panels; - for(var i=0; i
          ').appendTo(container); - panels.push(pp); - createPanel(container, pp, options); - setSize(container); - - opts.onAdd.call(container, options.title, panels.length-1); - - if (options.selected){ - select(container, panels.length-1); - } - } - - function remove(container, which){ - var state = $.data(container, 'accordion'); - var opts = state.options; - var panels = state.panels; - - stopAnimate(container); - - var panel = getPanel(container, which); - var title = panel.panel('options').title; - var index = getPanelIndex(container, panel); - - if (!panel){return} - if (opts.onBeforeRemove.call(container, title, index) == false){return} - - panels.splice(index, 1); - panel.panel('destroy'); - if (panels.length){ - setSize(container); - var curr = getSelected(container); - if (!curr){ - select(container, 0); - } - } - - opts.onRemove.call(container, title, index); - } - - $.fn.accordion = function(options, param){ - if (typeof options == 'string'){ - return $.fn.accordion.methods[options](this, param); - } - - options = options || {}; - - return this.each(function(){ - var state = $.data(this, 'accordion'); - if (state){ - $.extend(state.options, options); - } else { - $.data(this, 'accordion', { - options: $.extend({}, $.fn.accordion.defaults, $.fn.accordion.parseOptions(this), options), - accordion: $(this).addClass('accordion'), - panels: [] - }); - init(this); - } - - setProperties(this); - setSize(this); - doFirstSelect(this); - }); - }; - - $.fn.accordion.methods = { - options: function(jq){ - return $.data(jq[0], 'accordion').options; - }, - panels: function(jq){ - return $.data(jq[0], 'accordion').panels; - }, - resize: function(jq){ - return jq.each(function(){ - setSize(this); - }); - }, - getSelections: function(jq){ - return getSelections(jq[0]); - }, - getSelected: function(jq){ - return getSelected(jq[0]); - }, - getPanel: function(jq, which){ - return getPanel(jq[0], which); - }, - getPanelIndex: function(jq, panel){ - return getPanelIndex(jq[0], panel); - }, - select: function(jq, which){ - return jq.each(function(){ - select(this, which); - }); - }, - unselect: function(jq, which){ - return jq.each(function(){ - unselect(this, which); - }); - }, - add: function(jq, options){ - return jq.each(function(){ - add(this, options); - }); - }, - remove: function(jq, which){ - return jq.each(function(){ - remove(this, which); - }); - } - }; - - $.fn.accordion.parseOptions = function(target){ - var t = $(target); - return $.extend({}, $.parser.parseOptions(target, [ - 'width','height', - {fit:'boolean',border:'boolean',animate:'boolean',multiple:'boolean',selected:'number'} - ])); - }; - - $.fn.accordion.defaults = { - width: 'auto', - height: 'auto', - fit: false, - border: true, - animate: true, - multiple: false, - selected: 0, - - onSelect: function(title, index){}, - onUnselect: function(title, index){}, - onAdd: function(title, index){}, - onBeforeRemove: function(title, index){}, - onRemove: function(title, index){} - }; -})(jQuery); diff --git a/src/main/webapp/js/easyui-1.3.5/src/jquery.calendar.js b/src/main/webapp/js/easyui-1.3.5/src/jquery.calendar.js deleted file mode 100644 index 095b50c8..00000000 --- a/src/main/webapp/js/easyui-1.3.5/src/jquery.calendar.js +++ /dev/null @@ -1,392 +0,0 @@ -/** - * calendar - jQuery EasyUI - * - * Copyright (c) 2009-2013 www.jeasyui.com. All rights reserved. - * - * Licensed under the GPL or commercial licenses - * To use it on other terms please contact us: info@jeasyui.com - * http://www.gnu.org/licenses/gpl.txt - * http://www.jeasyui.com/license_commercial.php - * - */ -(function($){ - - function setSize(target){ - var opts = $.data(target, 'calendar').options; - var t = $(target); -// if (opts.fit == true){ -// var p = t.parent(); -// opts.width = p.width(); -// opts.height = p.height(); -// } - opts.fit ? $.extend(opts, t._fit()) : t._fit(false); - var header = t.find('.calendar-header'); - t._outerWidth(opts.width); - t._outerHeight(opts.height); - t.find('.calendar-body')._outerHeight(t.height() - header._outerHeight()); - } - - function init(target){ - $(target).addClass('calendar').html( - '
          ' + - '
          ' + - '
          ' + - '
          ' + - '
          ' + - '
          ' + - 'Aprial 2010' + - '
          ' + - '
          ' + - '
          ' + - '
          ' + - '
          ' + - '' + - '' + - '' + - '
          ' + - '
          ' + - '
          ' + - '
          ' + - '
          ' - ); - - $(target).find('.calendar-title span').hover( - function(){$(this).addClass('calendar-menu-hover');}, - function(){$(this).removeClass('calendar-menu-hover');} - ).click(function(){ - var menu = $(target).find('.calendar-menu'); - if (menu.is(':visible')){ - menu.hide(); - } else { - showSelectMenus(target); - } - }); - - $('.calendar-prevmonth,.calendar-nextmonth,.calendar-prevyear,.calendar-nextyear', target).hover( - function(){$(this).addClass('calendar-nav-hover');}, - function(){$(this).removeClass('calendar-nav-hover');} - ); - $(target).find('.calendar-nextmonth').click(function(){ - showMonth(target, 1); - }); - $(target).find('.calendar-prevmonth').click(function(){ - showMonth(target, -1); - }); - $(target).find('.calendar-nextyear').click(function(){ - showYear(target, 1); - }); - $(target).find('.calendar-prevyear').click(function(){ - showYear(target, -1); - }); - - $(target).bind('_resize', function(){ - var opts = $.data(target, 'calendar').options; - if (opts.fit == true){ - setSize(target); - } - return false; - }); - } - - /** - * show the calendar corresponding to the current month. - */ - function showMonth(target, delta){ - var opts = $.data(target, 'calendar').options; - opts.month += delta; - if (opts.month > 12){ - opts.year++; - opts.month = 1; - } else if (opts.month < 1){ - opts.year--; - opts.month = 12; - } - show(target); - - var menu = $(target).find('.calendar-menu-month-inner'); - menu.find('td.calendar-selected').removeClass('calendar-selected'); - menu.find('td:eq(' + (opts.month-1) + ')').addClass('calendar-selected'); - } - - /** - * show the calendar corresponding to the current year. - */ - function showYear(target, delta){ - var opts = $.data(target, 'calendar').options; - opts.year += delta; - show(target); - - var menu = $(target).find('.calendar-menu-year'); - menu.val(opts.year); - } - - /** - * show the select menu that can change year or month, if the menu is not be created then create it. - */ - function showSelectMenus(target){ - var opts = $.data(target, 'calendar').options; - $(target).find('.calendar-menu').show(); - - if ($(target).find('.calendar-menu-month-inner').is(':empty')){ - $(target).find('.calendar-menu-month-inner').empty(); - var t = $('
          ').appendTo($(target).find('.calendar-menu-month-inner')); - var idx = 0; - for(var i=0; i<3; i++){ - var tr = $('').appendTo(t); - for(var j=0; j<4; j++){ - $('').html(opts.months[idx++]).attr('abbr',idx).appendTo(tr); - } - } - - $(target).find('.calendar-menu-prev,.calendar-menu-next').hover( - function(){$(this).addClass('calendar-menu-hover');}, - function(){$(this).removeClass('calendar-menu-hover');} - ); - $(target).find('.calendar-menu-next').click(function(){ - var y = $(target).find('.calendar-menu-year'); - if (!isNaN(y.val())){ - y.val(parseInt(y.val()) + 1); - } - }); - $(target).find('.calendar-menu-prev').click(function(){ - var y = $(target).find('.calendar-menu-year'); - if (!isNaN(y.val())){ - y.val(parseInt(y.val() - 1)); - } - }); - - $(target).find('.calendar-menu-year').keypress(function(e){ - if (e.keyCode == 13){ - setDate(); - } - }); - - $(target).find('.calendar-menu-month').hover( - function(){$(this).addClass('calendar-menu-hover');}, - function(){$(this).removeClass('calendar-menu-hover');} - ).click(function(){ - var menu = $(target).find('.calendar-menu'); - menu.find('.calendar-selected').removeClass('calendar-selected'); - $(this).addClass('calendar-selected'); - setDate(); - }); - } - - function setDate(){ - var menu = $(target).find('.calendar-menu'); - var year = menu.find('.calendar-menu-year').val(); - var month = menu.find('.calendar-selected').attr('abbr'); - if (!isNaN(year)){ - opts.year = parseInt(year); - opts.month = parseInt(month); - show(target); - } - menu.hide(); - } - - var body = $(target).find('.calendar-body'); - var sele = $(target).find('.calendar-menu'); - var seleYear = sele.find('.calendar-menu-year-inner'); - var seleMonth = sele.find('.calendar-menu-month-inner'); - - seleYear.find('input').val(opts.year).focus(); - seleMonth.find('td.calendar-selected').removeClass('calendar-selected'); - seleMonth.find('td:eq('+(opts.month-1)+')').addClass('calendar-selected'); - - sele._outerWidth(body._outerWidth()); - sele._outerHeight(body._outerHeight()); - seleMonth._outerHeight(sele.height() - seleYear._outerHeight()); - } - - /** - * get weeks data. - */ - function getWeeks(target, year, month){ - var opts = $.data(target, 'calendar').options; - var dates = []; - var lastDay = new Date(year, month, 0).getDate(); - for(var i=1; i<=lastDay; i++) dates.push([year,month,i]); - - // group date by week - var weeks = [], week = []; -// var memoDay = 0; - var memoDay = -1; - while(dates.length > 0){ - var date = dates.shift(); - week.push(date); - var day = new Date(date[0],date[1]-1,date[2]).getDay(); - if (memoDay == day){ - day = 0; - } else if (day == (opts.firstDay==0 ? 7 : opts.firstDay) - 1){ - weeks.push(week); - week = []; - } - memoDay = day; - } - if (week.length){ - weeks.push(week); - } - - var firstWeek = weeks[0]; - if (firstWeek.length < 7){ - while(firstWeek.length < 7){ - var firstDate = firstWeek[0]; - var date = new Date(firstDate[0],firstDate[1]-1,firstDate[2]-1) - firstWeek.unshift([date.getFullYear(), date.getMonth()+1, date.getDate()]); - } - } else { - var firstDate = firstWeek[0]; - var week = []; - for(var i=1; i<=7; i++){ - var date = new Date(firstDate[0], firstDate[1]-1, firstDate[2]-i); - week.unshift([date.getFullYear(), date.getMonth()+1, date.getDate()]); - } - weeks.unshift(week); - } - - var lastWeek = weeks[weeks.length-1]; - while(lastWeek.length < 7){ - var lastDate = lastWeek[lastWeek.length-1]; - var date = new Date(lastDate[0], lastDate[1]-1, lastDate[2]+1); - lastWeek.push([date.getFullYear(), date.getMonth()+1, date.getDate()]); - } - if (weeks.length < 6){ - var lastDate = lastWeek[lastWeek.length-1]; - var week = []; - for(var i=1; i<=7; i++){ - var date = new Date(lastDate[0], lastDate[1]-1, lastDate[2]+i); - week.push([date.getFullYear(), date.getMonth()+1, date.getDate()]); - } - weeks.push(week); - } - - return weeks; - } - - /** - * show the calendar day. - */ - function show(target){ - var opts = $.data(target, 'calendar').options; - $(target).find('.calendar-title span').html(opts.months[opts.month-1] + ' ' + opts.year); - - var body = $(target).find('div.calendar-body'); - body.find('>table').remove(); - - var t = $('
          ').prependTo(body); - var tr = $('').appendTo(t.find('thead')); - for(var i=opts.firstDay; i'+opts.weeks[i]+''); - } - for(var i=0; i'+opts.weeks[i]+''); - } - - var weeks = getWeeks(target, opts.year, opts.month); - for(var i=0; i').appendTo(t.find('tbody')); - for(var j=0; j').attr('abbr',day[0]+','+day[1]+','+day[2]).html(day[2]).appendTo(tr); - } - } - t.find('td[abbr^="'+opts.year+','+opts.month+'"]').removeClass('calendar-other-month'); - - var now = new Date(); - var today = now.getFullYear()+','+(now.getMonth()+1)+','+now.getDate(); - t.find('td[abbr="'+today+'"]').addClass('calendar-today'); - - if (opts.current){ - t.find('.calendar-selected').removeClass('calendar-selected'); - var current = opts.current.getFullYear()+','+(opts.current.getMonth()+1)+','+opts.current.getDate(); - t.find('td[abbr="'+current+'"]').addClass('calendar-selected'); - } - - // calulate the saturday and sunday index - var saIndex = 6 - opts.firstDay; - var suIndex = saIndex + 1; - if (saIndex >= 7) saIndex -= 7; - if (suIndex >= 7) suIndex -= 7; - t.find('tr').find('td:eq('+saIndex+')').addClass('calendar-saturday'); - t.find('tr').find('td:eq('+suIndex+')').addClass('calendar-sunday'); - - t.find('td').hover( - function(){$(this).addClass('calendar-hover');}, - function(){$(this).removeClass('calendar-hover');} - ).click(function(){ - t.find('.calendar-selected').removeClass('calendar-selected'); - $(this).addClass('calendar-selected'); - var parts = $(this).attr('abbr').split(','); - opts.current = new Date(parts[0], parseInt(parts[1])-1, parts[2]); - opts.onSelect.call(target, opts.current); - }); - } - - $.fn.calendar = function(options, param){ - if (typeof options == 'string'){ - return $.fn.calendar.methods[options](this, param); - } - - options = options || {}; - return this.each(function(){ - var state = $.data(this, 'calendar'); - if (state){ - $.extend(state.options, options); - } else { - state = $.data(this, 'calendar', { - options:$.extend({}, $.fn.calendar.defaults, $.fn.calendar.parseOptions(this), options) - }); - init(this); - } - if (state.options.border == false){ - $(this).addClass('calendar-noborder'); - } - setSize(this); - show(this); - $(this).find('div.calendar-menu').hide(); // hide the calendar menu - }); - }; - - $.fn.calendar.methods = { - options: function(jq){ - return $.data(jq[0], 'calendar').options; - }, - resize: function(jq){ - return jq.each(function(){ - setSize(this); - }); - }, - moveTo: function(jq, date){ - return jq.each(function(){ - $(this).calendar({ - year: date.getFullYear(), - month: date.getMonth()+1, - current: date - }); - }); - } - }; - - $.fn.calendar.parseOptions = function(target){ - var t = $(target); - return $.extend({}, $.parser.parseOptions(target, [ - 'width','height',{firstDay:'number',fit:'boolean',border:'boolean'} - ])); - }; - - $.fn.calendar.defaults = { - width:180, - height:180, - fit:false, - border:true, - firstDay:0, - weeks:['S','M','T','W','T','F','S'], - months:['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], - year:new Date().getFullYear(), - month:new Date().getMonth()+1, - current:new Date(), - - onSelect: function(date){} - }; -})(jQuery); diff --git a/src/main/webapp/js/easyui-1.3.5/src/jquery.combobox.js b/src/main/webapp/js/easyui-1.3.5/src/jquery.combobox.js deleted file mode 100644 index b63dc3d1..00000000 --- a/src/main/webapp/js/easyui-1.3.5/src/jquery.combobox.js +++ /dev/null @@ -1,539 +0,0 @@ -/** - * combobox - jQuery EasyUI - * - * Copyright (c) 2009-2013 www.jeasyui.com. All rights reserved. - * - * Licensed under the GPL or commercial licenses - * To use it on other terms please contact us: info@jeasyui.com - * http://www.gnu.org/licenses/gpl.txt - * http://www.jeasyui.com/license_commercial.php - * - * Dependencies: - * combo - * - */ -(function($){ - function findRowBy(target, value, param, isGroup){ - var state = $.data(target, 'combobox'); - var opts = state.options; - if (isGroup){ - return _findRow(state.groups, param, value); - } else { - return _findRow(state.data, (param ? param : state.options.valueField), value); - } - - function _findRow(data,key,value){ - for(var i=0; i panel.height()){ - var h = panel.scrollTop() + item.position().top + item.outerHeight() - panel.height(); - panel.scrollTop(h); - } - } - } - - function nav(target, dir){ - var opts = $.data(target, 'combobox').options; - var panel = $(target).combobox('panel'); - var item = panel.children('div.combobox-item-hover'); - if (!item.length){ - item = panel.children('div.combobox-item-selected'); - } - item.removeClass('combobox-item-hover'); - var firstSelector = 'div.combobox-item:visible:not(.combobox-item-disabled):first'; - var lastSelector = 'div.combobox-item:visible:not(.combobox-item-disabled):last'; - if (!item.length){ - item = panel.children(dir=='next' ? firstSelector : lastSelector); -// item = panel.children('div.combobox-item:visible:' + (dir=='next'?'first':'last')); - } else { - if (dir == 'next'){ - item = item.nextAll(firstSelector); -// item = item.nextAll('div.combobox-item:visible:first'); - if (!item.length){ - item = panel.children(firstSelector); -// item = panel.children('div.combobox-item:visible:first'); - } - } else { - item = item.prevAll(firstSelector); -// item = item.prevAll('div.combobox-item:visible:first'); - if (!item.length){ - item = panel.children(lastSelector); -// item = panel.children('div.combobox-item:visible:last'); - } - } - } - if (item.length){ - item.addClass('combobox-item-hover'); - var row = findRowBy(target, item.attr('id'), 'domId'); - if (row){ - scrollTo(target, row[opts.valueField]); - if (opts.selectOnNavigation){ - select(target, row[opts.valueField]); - } - } - } - } - - /** - * select the specified value - */ - function select(target, value){ - var opts = $.data(target, 'combobox').options; - var values = $(target).combo('getValues'); - if ($.inArray(value+'', values) == -1){ - if (opts.multiple){ - values.push(value); - } else { - values = [value]; - } - setValues(target, values); - opts.onSelect.call(target, findRowBy(target, value)); - } - } - - /** - * unselect the specified value - */ - function unselect(target, value){ - var opts = $.data(target, 'combobox').options; - var values = $(target).combo('getValues'); - var index = $.inArray(value+'', values); - if (index >= 0){ - values.splice(index, 1); - setValues(target, values); - opts.onUnselect.call(target, findRowBy(target, value)); - } - } - - /** - * set values - */ - function setValues(target, values, remainText){ - var opts = $.data(target, 'combobox').options; - var panel = $(target).combo('panel'); - - panel.find('div.combobox-item-selected').removeClass('combobox-item-selected'); - var vv = [], ss = []; - for(var i=0; i'); - dd.push(opts.groupFormatter ? opts.groupFormatter.call(target, g) : g); - dd.push(''); - } - } else { - group = undefined; - } - - var cls = 'combobox-item' + (row.disabled ? ' combobox-item-disabled' : '') + (g ? ' combobox-gitem' : ''); - row.domId = '_easyui_combobox_' + itemIndex++; - dd.push('
          '); - dd.push(opts.formatter ? opts.formatter.call(target, row) : s); - dd.push('
          '); - -// if (item['selected']){ -// (function(){ -// for(var i=0; i').appendTo(panel); - if (opts.sharedCalendar){ - state.calendar = $(opts.sharedCalendar).appendTo(cc); - if (!state.calendar.hasClass('calendar')){ - state.calendar.calendar(); - } - } else { - state.calendar = $('
          ').appendTo(cc).calendar(); - } - $.extend(state.calendar.calendar('options'), { - fit:true, - border:false, - onSelect:function(date){ - var opts = $(this.target).datebox('options'); - setValue(this.target, opts.formatter(date)); - $(this.target).combo('hidePanel'); - opts.onSelect.call(target, date); - } - }); - setValue(target, opts.value); - - var button = $('
          ').appendTo(panel); - var tr = button.find('tr'); - for(var i=0; i').appendTo(tr); - var btn = opts.buttons[i]; - var t = $('').html($.isFunction(btn.text) ? btn.text(target) : btn.text).appendTo(td); - t.bind('click', {target: target, handler: btn.handler}, function(e){ - e.data.handler.call(this, e.data.target); - }); - } - tr.find('td').css('width', (100/opts.buttons.length)+'%'); - } - - function setCalendar(){ - var panel = $(target).combo('panel'); - var cc = panel.children('div.datebox-calendar-inner'); - panel.children()._outerWidth(panel.width()); - state.calendar.appendTo(cc); - state.calendar[0].target = target; - if (opts.panelHeight != 'auto'){ - var height = panel.height(); - panel.children().not(cc).each(function(){ - height -= $(this).outerHeight(); - }); - cc._outerHeight(height); - } - state.calendar.calendar('resize'); - } - } - - /** - * called when user inputs some value in text box - */ - function doQuery(target, q){ - setValue(target, q); - } - - /** - * called when user press enter key - */ - function doEnter(target){ - var state = $.data(target, 'datebox'); - var opts = state.options; - var value = opts.formatter(state.calendar.calendar('options').current); - setValue(target, value); - $(target).combo('hidePanel'); - } - - function setValue(target, value){ - var state = $.data(target, 'datebox'); - var opts = state.options; - $(target).combo('setValue', value).combo('setText', value); - state.calendar.calendar('moveTo', opts.parser(value)); - } - - $.fn.datebox = function(options, param){ - if (typeof options == 'string'){ - var method = $.fn.datebox.methods[options]; - if (method){ - return method(this, param); - } else { - return this.combo(options, param); - } - } - - options = options || {}; - return this.each(function(){ - var state = $.data(this, 'datebox'); - if (state){ - $.extend(state.options, options); - } else { - $.data(this, 'datebox', { - options: $.extend({}, $.fn.datebox.defaults, $.fn.datebox.parseOptions(this), options) - }); - } - createBox(this); - }); - }; - - $.fn.datebox.methods = { - options: function(jq){ - var copts = jq.combo('options'); - return $.extend($.data(jq[0], 'datebox').options, { - originalValue: copts.originalValue, - disabled: copts.disabled, - readonly: copts.readonly - }); - }, - calendar: function(jq){ // get the calendar object - return $.data(jq[0], 'datebox').calendar; - }, - setValue: function(jq, value){ - return jq.each(function(){ - setValue(this, value); - }); - }, - reset: function(jq){ - return jq.each(function(){ - var opts = $(this).datebox('options'); - $(this).datebox('setValue', opts.originalValue); - }); - } - }; - - $.fn.datebox.parseOptions = function(target){ - return $.extend({}, $.fn.combo.parseOptions(target), $.parser.parseOptions(target, ['sharedCalendar'])); - }; - - $.fn.datebox.defaults = $.extend({}, $.fn.combo.defaults, { - panelWidth:180, - panelHeight:'auto', - sharedCalendar:null, - - keyHandler: { - up:function(e){}, - down:function(e){}, - left: function(e){}, - right: function(e){}, - enter:function(e){doEnter(this)}, - query:function(q,e){doQuery(this, q)} - }, - - currentText:'Today', - closeText:'Close', - okText:'Ok', - - buttons:[{ - text: function(target){return $(target).datebox('options').currentText;}, - handler: function(target){ - $(target).datebox('calendar').calendar({ - year:new Date().getFullYear(), - month:new Date().getMonth()+1, - current:new Date() - }); - doEnter(target); - } - },{ - text: function(target){return $(target).datebox('options').closeText;}, - handler: function(target){ - $(this).closest('div.combo-panel').panel('close'); - } - }], - - formatter:function(date){ - var y = date.getFullYear(); - var m = date.getMonth()+1; - var d = date.getDate(); - return m+'/'+d+'/'+y; - }, - parser:function(s){ - var t = Date.parse(s); - if (!isNaN(t)){ - return new Date(t); - } else { - return new Date(); - } - }, - - onSelect:function(date){} - }); -})(jQuery); diff --git a/src/main/webapp/js/easyui-1.3.5/src/jquery.draggable.js b/src/main/webapp/js/easyui-1.3.5/src/jquery.draggable.js deleted file mode 100644 index e4642e41..00000000 --- a/src/main/webapp/js/easyui-1.3.5/src/jquery.draggable.js +++ /dev/null @@ -1,417 +0,0 @@ -/** - * draggable - jQuery EasyUI - * - * Copyright (c) 2009-2013 www.jeasyui.com. All rights reserved. - * - * Licensed under the GPL or commercial licenses - * To use it on other terms please contact us: info@jeasyui.com - * http://www.gnu.org/licenses/gpl.txt - * http://www.jeasyui.com/license_commercial.php - */ -(function($){ -// var isDragging = false; - function drag(e){ - var state = $.data(e.data.target, 'draggable'); - var opts = state.options; - var proxy = state.proxy; - - var dragData = e.data; - var left = dragData.startLeft + e.pageX - dragData.startX; - var top = dragData.startTop + e.pageY - dragData.startY; - - if (proxy){ - if (proxy.parent()[0] == document.body){ - if (opts.deltaX != null && opts.deltaX != undefined){ - left = e.pageX + opts.deltaX; - } else { - left = e.pageX - e.data.offsetWidth; - } - if (opts.deltaY != null && opts.deltaY != undefined){ - top = e.pageY + opts.deltaY; - } else { - top = e.pageY - e.data.offsetHeight; - } - } else { - if (opts.deltaX != null && opts.deltaX != undefined){ - left += e.data.offsetWidth + opts.deltaX; - } - if (opts.deltaY != null && opts.deltaY != undefined){ - top += e.data.offsetHeight + opts.deltaY; - } - } - } - -// if (opts.deltaX != null && opts.deltaX != undefined){ -// left = e.pageX + opts.deltaX; -// } -// if (opts.deltaY != null && opts.deltaY != undefined){ -// top = e.pageY + opts.deltaY; -// } - - if (e.data.parent != document.body) { - left += $(e.data.parent).scrollLeft(); - top += $(e.data.parent).scrollTop(); - } - - if (opts.axis == 'h') { - dragData.left = left; - } else if (opts.axis == 'v') { - dragData.top = top; - } else { - dragData.left = left; - dragData.top = top; - } - } - - function applyDrag(e){ - var state = $.data(e.data.target, 'draggable'); - var opts = state.options; - var proxy = state.proxy; - if (!proxy){ - proxy = $(e.data.target); - } -// if (proxy){ -// proxy.css('cursor', opts.cursor); -// } else { -// proxy = $(e.data.target); -// $.data(e.data.target, 'draggable').handle.css('cursor', opts.cursor); -// } - proxy.css({ - left:e.data.left, - top:e.data.top - }); - $('body').css('cursor', opts.cursor); - } - - function doDown(e){ -// isDragging = true; - $.fn.draggable.isDragging = true; - var state = $.data(e.data.target, 'draggable'); - var opts = state.options; - - var droppables = $('.droppable').filter(function(){ - return e.data.target != this; - }).filter(function(){ - var accept = $.data(this, 'droppable').options.accept; - if (accept){ - return $(accept).filter(function(){ - return this == e.data.target; - }).length > 0; - } else { - return true; - } - }); - state.droppables = droppables; - - var proxy = state.proxy; - if (!proxy){ - if (opts.proxy){ - if (opts.proxy == 'clone'){ - proxy = $(e.data.target).clone().insertAfter(e.data.target); - } else { - proxy = opts.proxy.call(e.data.target, e.data.target); - } - state.proxy = proxy; - } else { - proxy = $(e.data.target); - } - } - - proxy.css('position', 'absolute'); - drag(e); - applyDrag(e); - - opts.onStartDrag.call(e.data.target, e); - return false; - } - - function doMove(e){ - var state = $.data(e.data.target, 'draggable'); - drag(e); - if (state.options.onDrag.call(e.data.target, e) != false){ - applyDrag(e); - } - - var source = e.data.target; - state.droppables.each(function(){ - var dropObj = $(this); - if (dropObj.droppable('options').disabled){return;} - - var p2 = dropObj.offset(); - if (e.pageX > p2.left && e.pageX < p2.left + dropObj.outerWidth() - && e.pageY > p2.top && e.pageY < p2.top + dropObj.outerHeight()){ - if (!this.entered){ - $(this).trigger('_dragenter', [source]); - this.entered = true; - } - $(this).trigger('_dragover', [source]); - } else { - if (this.entered){ - $(this).trigger('_dragleave', [source]); - this.entered = false; - } - } - }); - - return false; - } - - function doUp(e){ -// isDragging = false; - $.fn.draggable.isDragging = false; -// drag(e); - doMove(e); - - var state = $.data(e.data.target, 'draggable'); - var proxy = state.proxy; - var opts = state.options; - if (opts.revert){ - if (checkDrop() == true){ - $(e.data.target).css({ - position:e.data.startPosition, - left:e.data.startLeft, - top:e.data.startTop - }); - } else { - if (proxy){ - var left, top; - if (proxy.parent()[0] == document.body){ - left = e.data.startX - e.data.offsetWidth; - top = e.data.startY - e.data.offsetHeight; - } else { - left = e.data.startLeft; - top = e.data.startTop; - } - proxy.animate({ - left: left, - top: top - }, function(){ - removeProxy(); - }); - } else { - $(e.data.target).animate({ - left:e.data.startLeft, - top:e.data.startTop - }, function(){ - $(e.data.target).css('position', e.data.startPosition); - }); - } - } - } else { - $(e.data.target).css({ - position:'absolute', - left:e.data.left, - top:e.data.top - }); - checkDrop(); - } - - opts.onStopDrag.call(e.data.target, e); - - $(document).unbind('.draggable'); - setTimeout(function(){ - $('body').css('cursor',''); - },100); - - function removeProxy(){ - if (proxy){ - proxy.remove(); - } - state.proxy = null; - } - - function checkDrop(){ - var dropped = false; - state.droppables.each(function(){ - var dropObj = $(this); - if (dropObj.droppable('options').disabled){return;} - - var p2 = dropObj.offset(); - if (e.pageX > p2.left && e.pageX < p2.left + dropObj.outerWidth() - && e.pageY > p2.top && e.pageY < p2.top + dropObj.outerHeight()){ - if (opts.revert){ - $(e.data.target).css({ - position:e.data.startPosition, - left:e.data.startLeft, - top:e.data.startTop - }); - } - $(this).trigger('_drop', [e.data.target]); - removeProxy(); - dropped = true; - this.entered = false; - return false; - } - }); - if (!dropped && !opts.revert){ - removeProxy(); - } - return dropped; - } - - return false; - } - - $.fn.draggable = function(options, param){ - if (typeof options == 'string'){ - return $.fn.draggable.methods[options](this, param); - } - - return this.each(function(){ - var opts; - var state = $.data(this, 'draggable'); - if (state) { - state.handle.unbind('.draggable'); - opts = $.extend(state.options, options); - } else { - opts = $.extend({}, $.fn.draggable.defaults, $.fn.draggable.parseOptions(this), options || {}); - } - var handle = opts.handle ? (typeof opts.handle=='string' ? $(opts.handle, this) : opts.handle) : $(this); - - $.data(this, 'draggable', { - options: opts, - handle: handle - }); - - if (opts.disabled) { - $(this).css('cursor', ''); - return; - } - - handle.unbind('.draggable').bind('mousemove.draggable', {target:this}, function(e){ -// if (isDragging) return; - if ($.fn.draggable.isDragging){return} - var opts = $.data(e.data.target, 'draggable').options; - if (checkArea(e)){ - $(this).css('cursor', opts.cursor); - } else { - $(this).css('cursor', ''); - } - }).bind('mouseleave.draggable', {target:this}, function(e){ - $(this).css('cursor', ''); - }).bind('mousedown.draggable', {target:this}, function(e){ - if (checkArea(e) == false) return; - $(this).css('cursor', ''); - - var position = $(e.data.target).position(); - var offset = $(e.data.target).offset(); - var data = { - startPosition: $(e.data.target).css('position'), - startLeft: position.left, - startTop: position.top, - left: position.left, - top: position.top, - startX: e.pageX, - startY: e.pageY, - offsetWidth: (e.pageX - offset.left), - offsetHeight: (e.pageY - offset.top), - target: e.data.target, - parent: $(e.data.target).parent()[0] - }; - - $.extend(e.data, data); - var opts = $.data(e.data.target, 'draggable').options; - if (opts.onBeforeDrag.call(e.data.target, e) == false) return; - - $(document).bind('mousedown.draggable', e.data, doDown); - $(document).bind('mousemove.draggable', e.data, doMove); - $(document).bind('mouseup.draggable', e.data, doUp); -// $('body').css('cursor', opts.cursor); - }); - - // check if the handle can be dragged - function checkArea(e) { - var state = $.data(e.data.target, 'draggable'); - var handle = state.handle; - var offset = $(handle).offset(); - var width = $(handle).outerWidth(); - var height = $(handle).outerHeight(); - var t = e.pageY - offset.top; - var r = offset.left + width - e.pageX; - var b = offset.top + height - e.pageY; - var l = e.pageX - offset.left; - - return Math.min(t,r,b,l) > state.options.edge; - } - - }); - }; - - $.fn.draggable.methods = { - options: function(jq){ - return $.data(jq[0], 'draggable').options; - }, - proxy: function(jq){ - return $.data(jq[0], 'draggable').proxy; - }, - enable: function(jq){ - return jq.each(function(){ - $(this).draggable({disabled:false}); - }); - }, - disable: function(jq){ - return jq.each(function(){ - $(this).draggable({disabled:true}); - }); - } - }; - - $.fn.draggable.parseOptions = function(target){ - var t = $(target); - return $.extend({}, - $.parser.parseOptions(target, ['cursor','handle','axis', - {'revert':'boolean','deltaX':'number','deltaY':'number','edge':'number'}]), { - disabled: (t.attr('disabled') ? true : undefined) - }); - }; - - $.fn.draggable.defaults = { - proxy:null, // 'clone' or a function that will create the proxy object, - // the function has the source parameter that indicate the source object dragged. - revert:false, - cursor:'move', - deltaX:null, - deltaY:null, - handle: null, - disabled: false, - edge:0, - axis:null, // v or h - - onBeforeDrag: function(e){}, - onStartDrag: function(e){}, - onDrag: function(e){}, - onStopDrag: function(e){} - }; - - $.fn.draggable.isDragging = false; - -// $(function(){ -// function touchHandler(e) { -// var touches = e.changedTouches, first = touches[0], type = ""; -// -// switch(e.type) { -// case "touchstart": type = "mousedown"; break; -// case "touchmove": type = "mousemove"; break; -// case "touchend": type = "mouseup"; break; -// default: return; -// } -// var simulatedEvent = document.createEvent("MouseEvent"); -// simulatedEvent.initMouseEvent(type, true, true, window, 1, -// first.screenX, first.screenY, -// first.clientX, first.clientY, false, -// false, false, false, 0/*left*/, null); -// -// first.target.dispatchEvent(simulatedEvent); -// if (isDragging){ -// e.preventDefault(); -// } -// } -// -// if (document.addEventListener){ -// document.addEventListener("touchstart", touchHandler, true); -// document.addEventListener("touchmove", touchHandler, true); -// document.addEventListener("touchend", touchHandler, true); -// document.addEventListener("touchcancel", touchHandler, true); -// } -// }); -})(jQuery); diff --git a/src/main/webapp/js/easyui-1.3.5/src/jquery.droppable.js b/src/main/webapp/js/easyui-1.3.5/src/jquery.droppable.js deleted file mode 100644 index 2092a3d8..00000000 --- a/src/main/webapp/js/easyui-1.3.5/src/jquery.droppable.js +++ /dev/null @@ -1,78 +0,0 @@ -/** - * droppable - jQuery EasyUI - * - * Copyright (c) 2009-2013 www.jeasyui.com. All rights reserved. - * - * Licensed under the GPL or commercial licenses - * To use it on other terms please contact us: info@jeasyui.com - * http://www.gnu.org/licenses/gpl.txt - * http://www.jeasyui.com/license_commercial.php - */ -(function($){ - function init(target){ - $(target).addClass('droppable'); - $(target).bind('_dragenter', function(e, source){ - $.data(target, 'droppable').options.onDragEnter.apply(target, [e, source]); - }); - $(target).bind('_dragleave', function(e, source){ - $.data(target, 'droppable').options.onDragLeave.apply(target, [e, source]); - }); - $(target).bind('_dragover', function(e, source){ - $.data(target, 'droppable').options.onDragOver.apply(target, [e, source]); - }); - $(target).bind('_drop', function(e, source){ - $.data(target, 'droppable').options.onDrop.apply(target, [e, source]); - }); - } - - $.fn.droppable = function(options, param){ - if (typeof options == 'string'){ - return $.fn.droppable.methods[options](this, param); - } - - options = options || {}; - return this.each(function(){ - var state = $.data(this, 'droppable'); - if (state){ - $.extend(state.options, options); - } else { - init(this); - $.data(this, 'droppable', { - options: $.extend({}, $.fn.droppable.defaults, $.fn.droppable.parseOptions(this), options) - }); - } - }); - }; - - $.fn.droppable.methods = { - options: function(jq){ - return $.data(jq[0], 'droppable').options; - }, - enable: function(jq){ - return jq.each(function(){ - $(this).droppable({disabled:false}); - }); - }, - disable: function(jq){ - return jq.each(function(){ - $(this).droppable({disabled:true}); - }); - } - }; - - $.fn.droppable.parseOptions = function(target){ - var t = $(target); - return $.extend({}, $.parser.parseOptions(target, ['accept']), { - disabled: (t.attr('disabled') ? true : undefined) - }); - }; - - $.fn.droppable.defaults = { - accept:null, - disabled:false, - onDragEnter:function(e, source){}, - onDragOver:function(e, source){}, - onDragLeave:function(e, source){}, - onDrop:function(e, source){} - }; -})(jQuery); diff --git a/src/main/webapp/js/easyui-1.3.5/src/jquery.form.js b/src/main/webapp/js/easyui-1.3.5/src/jquery.form.js deleted file mode 100644 index 2a85dd71..00000000 --- a/src/main/webapp/js/easyui-1.3.5/src/jquery.form.js +++ /dev/null @@ -1,378 +0,0 @@ -/** - * form - jQuery EasyUI - * - * Copyright (c) 2009-2013 www.jeasyui.com. All rights reserved. - * - * Licensed under the GPL or commercial licenses - * To use it on other terms please contact us: info@jeasyui.com - * http://www.gnu.org/licenses/gpl.txt - * http://www.jeasyui.com/license_commercial.php - */ -(function($){ - /** - * submit the form - */ - function ajaxSubmit(target, options){ - options = options || {}; - - var param = {}; - if (options.onSubmit){ - if (options.onSubmit.call(target, param) == false) { - return; - } - } - - var form = $(target); - if (options.url){ - form.attr('action', options.url); - } - var frameId = 'easyui_frame_' + (new Date().getTime()); - var frame = $('') - .attr('src', window.ActiveXObject ? 'javascript:false' : 'about:blank') - .css({ - position:'absolute', - top:-1000, - left:-1000 - }); - var t = form.attr('target'), a = form.attr('action'); - form.attr('target', frameId); - - var paramFields = $(); - try { - frame.appendTo('body'); - frame.bind('load', cb); - for(var n in param){ - var f = $('').val(param[n]).appendTo(form); - paramFields = paramFields.add(f); - } - checkState(); - form[0].submit(); - } finally { - form.attr('action', a); - t ? form.attr('target', t) : form.removeAttr('target'); - paramFields.remove(); - } - - function checkState(){ - var f = $('#'+frameId); - if (!f.length){return} - try{ - var s = f.contents()[0].readyState; - if (s && s.toLowerCase() == 'uninitialized'){ - setTimeout(checkState, 100); - } - } catch(e){ - cb(); - } - } - - var checkCount = 10; - function cb(){ - var frame = $('#'+frameId); - if (!frame.length){return} - frame.unbind(); - var data = ''; - try{ - var body = frame.contents().find('body'); - data = body.html(); - if (data == ''){ - if (--checkCount){ - setTimeout(cb, 100); - return; - } -// return; - } - var ta = body.find('>textarea'); - if (ta.length){ - data = ta.val(); - } else { - var pre = body.find('>pre'); - if (pre.length){ - data = pre.html(); - } - } - } catch(e){ - - } - if (options.success){ - options.success(data); - } - setTimeout(function(){ - frame.unbind(); - frame.remove(); - }, 100); - } - } - - /** - * load form data - * if data is a URL string type load from remote site, - * otherwise load from local data object. - */ - function load(target, data){ - if (!$.data(target, 'form')){ - $.data(target, 'form', { - options: $.extend({}, $.fn.form.defaults) - }); - } - var opts = $.data(target, 'form').options; - - if (typeof data == 'string'){ - var param = {}; - if (opts.onBeforeLoad.call(target, param) == false) return; - - $.ajax({ - url: data, - data: param, - dataType: 'json', - success: function(data){ - _load(data); - }, - error: function(){ - opts.onLoadError.apply(target, arguments); - } - }); - } else { - _load(data); - } - - function _load(data){ - var form = $(target); - for(var name in data){ - var val = data[name]; - var rr = _checkField(name, val); - if (!rr.length){ -// var f = form.find('input[numberboxName="'+name+'"]'); -// if (f.length){ -// f.numberbox('setValue', val); // set numberbox value -// } else { -// $('input[name="'+name+'"]', form).val(val); -// $('textarea[name="'+name+'"]', form).val(val); -// $('select[name="'+name+'"]', form).val(val); -// } - var count = _loadOther(name, val); - if (!count){ - $('input[name="'+name+'"]', form).val(val); - $('textarea[name="'+name+'"]', form).val(val); - $('select[name="'+name+'"]', form).val(val); - } - } - _loadCombo(name, val); - } - opts.onLoadSuccess.call(target, data); - validate(target); - } - - /** - * check the checkbox and radio fields - */ - function _checkField(name, val){ - var rr = $(target).find('input[name="'+name+'"][type=radio], input[name="'+name+'"][type=checkbox]'); - rr._propAttr('checked', false); - rr.each(function(){ - var f = $(this); - if (f.val() == String(val) || $.inArray(f.val(), $.isArray(val)?val:[val]) >= 0){ - f._propAttr('checked', true); - } - }); - return rr; - } - - function _loadOther(name, val){ - var count = 0; - var pp = ['numberbox','slider']; - for(var i=0; i' + - '' + - '' - ); - if (opts.text){ - t.find('.l-btn-text').html(opts.text); - if (opts.iconCls){ - t.find('.l-btn-text').addClass(opts.iconCls).addClass(opts.iconAlign=='left' ? 'l-btn-icon-left' : 'l-btn-icon-right'); - } - } else { - t.find('.l-btn-text').html(' '); - if (opts.iconCls){ - t.find('.l-btn-empty').addClass(opts.iconCls); - } - } - - t.unbind('.linkbutton').bind('focus.linkbutton',function(){ - if (!opts.disabled){ - $(this).find('.l-btn-text').addClass('l-btn-focus'); - } - }).bind('blur.linkbutton',function(){ - $(this).find('.l-btn-text').removeClass('l-btn-focus'); - }); - if (opts.toggle && !opts.disabled){ - t.bind('click.linkbutton', function(){ - if (opts.selected){ - $(this).linkbutton('unselect'); - } else { - $(this).linkbutton('select'); - } - }); - } - - setSelected(target, opts.selected) - setDisabled(target, opts.disabled); - } - - function setSelected(target, selected){ - var opts = $.data(target, 'linkbutton').options; - if (selected){ - if (opts.group){ - $('a.l-btn[group="'+opts.group+'"]').each(function(){ - var o = $(this).linkbutton('options'); - if (o.toggle){ - $(this).removeClass('l-btn-selected l-btn-plain-selected'); - o.selected = false; - } - }); - } - $(target).addClass(opts.plain ? 'l-btn-selected l-btn-plain-selected' : 'l-btn-selected'); - opts.selected = true; - } else { - if (!opts.group){ - $(target).removeClass('l-btn-selected l-btn-plain-selected'); - opts.selected = false; - } - } - } - - function setDisabled(target, disabled){ - var state = $.data(target, 'linkbutton'); - var opts = state.options; - $(target).removeClass('l-btn-disabled l-btn-plain-disabled'); - if (disabled){ - opts.disabled = true; - var href = $(target).attr('href'); - if (href){ - state.href = href; - $(target).attr('href', 'javascript:void(0)'); - } - if (target.onclick){ - state.onclick = target.onclick; - target.onclick = null; - } - opts.plain ? $(target).addClass('l-btn-disabled l-btn-plain-disabled') : $(target).addClass('l-btn-disabled'); - } else { - opts.disabled = false; - if (state.href) { - $(target).attr('href', state.href); - } - if (state.onclick) { - target.onclick = state.onclick; - } - } - } - - $.fn.linkbutton = function(options, param){ - if (typeof options == 'string'){ - return $.fn.linkbutton.methods[options](this, param); - } - - options = options || {}; - return this.each(function(){ - var state = $.data(this, 'linkbutton'); - if (state){ - $.extend(state.options, options); - } else { - $.data(this, 'linkbutton', { - options: $.extend({}, $.fn.linkbutton.defaults, $.fn.linkbutton.parseOptions(this), options) - }); - $(this).removeAttr('disabled'); - } - - createButton(this); - }); - }; - - $.fn.linkbutton.methods = { - options: function(jq){ - return $.data(jq[0], 'linkbutton').options; - }, - enable: function(jq){ - return jq.each(function(){ - setDisabled(this, false); - }); - }, - disable: function(jq){ - return jq.each(function(){ - setDisabled(this, true); - }); - }, - select: function(jq){ - return jq.each(function(){ - setSelected(this, true); - }); - }, - unselect: function(jq){ - return jq.each(function(){ - setSelected(this, false); - }); - } - }; - - $.fn.linkbutton.parseOptions = function(target){ - var t = $(target); - return $.extend({}, $.parser.parseOptions(target, - ['id','iconCls','iconAlign','group',{plain:'boolean',toggle:'boolean',selected:'boolean'}] - ), { - disabled: (t.attr('disabled') ? true : undefined), - text: $.trim(t.html()), - iconCls: (t.attr('icon') || t.attr('iconCls')) - }); - }; - - $.fn.linkbutton.defaults = { - id: null, - disabled: false, - toggle: false, - selected: false, - group: null, - plain: false, - text: '', - iconCls: null, - iconAlign: 'left' - }; - -})(jQuery); diff --git a/src/main/webapp/js/easyui-1.3.5/src/jquery.menu.js b/src/main/webapp/js/easyui-1.3.5/src/jquery.menu.js deleted file mode 100644 index b03b7468..00000000 --- a/src/main/webapp/js/easyui-1.3.5/src/jquery.menu.js +++ /dev/null @@ -1,543 +0,0 @@ -/** - * menu - jQuery EasyUI - * - * Copyright (c) 2009-2013 www.jeasyui.com. All rights reserved. - * - * Licensed under the GPL or commercial licenses - * To use it on other terms please contact us: info@jeasyui.com - * http://www.gnu.org/licenses/gpl.txt - * http://www.jeasyui.com/license_commercial.php - */ -(function($){ - - /** - * initialize the target menu, the function can be invoked only once - */ - function init(target){ - $(target).appendTo('body'); - $(target).addClass('menu-top'); // the top menu - - $(document).unbind('.menu').bind('mousedown.menu', function(e){ - var allMenu = $('body>div.menu:visible'); - var m = $(e.target).closest('div.menu', allMenu); - if (m.length){return} - $('body>div.menu-top:visible').menu('hide'); - }); - - var menus = splitMenu($(target)); - for(var i=0; i').html(text)); - if (itemOpts.iconCls){ - $('').addClass(itemOpts.iconCls).appendTo(item); - } - if (itemOpts.disabled){ - setDisabled(target, item[0], true); - } - if (item[0].submenu){ - $('').appendTo(item); // has sub menu - } - - bindMenuItemEvent(target, item); - } - }); - $('').prependTo(menu); - } - setMenuWidth(target, menu); - menu.hide(); - - bindMenuEvent(target, menu); - } - } - - function setMenuWidth(target, menu){ - var opts = $.data(target, 'menu').options; -// var d = menu.css('display'); - var style = menu.attr('style'); - menu.css({ - display: 'block', - left:-10000, - height: 'auto', - overflow: 'hidden' - }); - -// menu.find('div.menu-item')._outerHeight(22); - var width = 0; - menu.find('div.menu-text').each(function(){ - if (width < $(this)._outerWidth()){ - width = $(this)._outerWidth(); - } - $(this).closest('div.menu-item')._outerHeight($(this)._outerHeight()+2); - }); - width += 65; - menu._outerWidth(Math.max((menu[0].originalWidth || 0), width, opts.minWidth)); - - menu.children('div.menu-line')._outerHeight(menu.outerHeight()); - -// menu.css('display', d); - menu.attr('style', style); - } - - /** - * bind menu event - */ - function bindMenuEvent(target, menu){ - var state = $.data(target, 'menu'); - menu.unbind('.menu').bind('mouseenter.menu', function(){ - if (state.timer){ - clearTimeout(state.timer); - state.timer = null; - } - }).bind('mouseleave.menu', function(){ - if (state.options.hideOnUnhover){ - state.timer = setTimeout(function(){ - hideAll(target); - }, 100); - } - }); - } - - /** - * bind menu item event - */ - function bindMenuItemEvent(target, item){ - if (!item.hasClass('menu-item')){return} - item.unbind('.menu'); - item.bind('click.menu', function(){ - if ($(this).hasClass('menu-item-disabled')){ - return; - } - // only the sub menu clicked can hide all menus - if (!this.submenu){ - hideAll(target); - var href = $(this).attr('href'); - if (href){ - location.href = href; - } - } - var item = $(target).menu('getItem', this); - $.data(target, 'menu').options.onClick.call(target, item); - }).bind('mouseenter.menu', function(e){ - // hide other menu - item.siblings().each(function(){ - if (this.submenu){ - hideMenu(this.submenu); - } - $(this).removeClass('menu-active'); - }); - // show this menu - item.addClass('menu-active'); - - if ($(this).hasClass('menu-item-disabled')){ - item.addClass('menu-active-disabled'); - return; - } - - var submenu = item[0].submenu; - if (submenu){ - $(target).menu('show', { - menu: submenu, - parent: item - }); - } - }).bind('mouseleave.menu', function(e){ - item.removeClass('menu-active menu-active-disabled'); - var submenu = item[0].submenu; - if (submenu){ - if (e.pageX>=parseInt(submenu.css('left'))){ - item.addClass('menu-active'); - } else { - hideMenu(submenu); - } - - } else { - item.removeClass('menu-active'); - } - }); - } - - /** - * hide top menu and it's all sub menus - */ - function hideAll(target){ - var state = $.data(target, 'menu'); - if (state){ - if ($(target).is(':visible')){ - hideMenu($(target)); - state.options.onHide.call(target); - } - } - return false; - } - - /** - * show the menu, the 'param' object has one or more properties: - * left: the left position to display - * top: the top position to display - * menu: the menu to display, if not defined, the 'target menu' is used - * parent: the parent menu item to align to - * alignTo: the element object to align to - */ - function showMenu(target, param){ - var left,top; - param = param || {}; - var menu = $(param.menu || target); - if (menu.hasClass('menu-top')){ - var opts = $.data(target, 'menu').options; - $.extend(opts, param); - left = opts.left; - top = opts.top; - if (opts.alignTo){ - var at = $(opts.alignTo); - left = at.offset().left; - top = at.offset().top + at._outerHeight(); - } -// if (param.left != undefined){left = param.left} -// if (param.top != undefined){top = param.top} - if (left + menu.outerWidth() > $(window)._outerWidth() + $(document)._scrollLeft()){ - left = $(window)._outerWidth() + $(document).scrollLeft() - menu.outerWidth() - 5; - } - if (top + menu.outerHeight() > $(window)._outerHeight() + $(document).scrollTop()){ -// top -= menu.outerHeight(); - top = $(window)._outerHeight() + $(document).scrollTop() - menu.outerHeight() - 5; - } - } else { - var parent = param.parent; // the parent menu item - left = parent.offset().left + parent.outerWidth() - 2; - if (left + menu.outerWidth() + 5 > $(window)._outerWidth() + $(document).scrollLeft()){ - left = parent.offset().left - menu.outerWidth() + 2; - } - var top = parent.offset().top - 3; - if (top + menu.outerHeight() > $(window)._outerHeight() + $(document).scrollTop()){ - top = $(window)._outerHeight() + $(document).scrollTop() - menu.outerHeight() - 5; - } - } - menu.css({left:left,top:top}); - menu.show(0, function(){ - if (!menu[0].shadow){ - menu[0].shadow = $('').insertAfter(menu); - } - menu[0].shadow.css({ - display:'block', - zIndex:$.fn.menu.defaults.zIndex++, - left:menu.css('left'), - top:menu.css('top'), - width:menu.outerWidth(), - height:menu.outerHeight() - }); - menu.css('z-index', $.fn.menu.defaults.zIndex++); - if (menu.hasClass('menu-top')){ - $.data(menu[0], 'menu').options.onShow.call(menu[0]); - } - }); - } - - function hideMenu(menu){ - if (!menu) return; - - hideit(menu); - menu.find('div.menu-item').each(function(){ - if (this.submenu){ - hideMenu(this.submenu); - } - $(this).removeClass('menu-active'); - }); - - function hideit(m){ - m.stop(true,true); - if (m[0].shadow){ - m[0].shadow.hide(); - } - m.hide(); - } - } - - function findItem(target, text){ - var result = null; - var tmp = $('
          '); - function find(menu){ - menu.children('div.menu-item').each(function(){ - var item = $(target).menu('getItem', this); - var s = tmp.empty().html(item.text).text(); - if (text == $.trim(s)) { - result = item; - } else if (this.submenu && !result){ - find(this.submenu); - } - }); - } - find($(target)); - tmp.remove(); - return result; - } - - function setDisabled(target, itemEl, disabled){ - var t = $(itemEl); - if (!t.hasClass('menu-item')){return} - - if (disabled){ - t.addClass('menu-item-disabled'); - if (itemEl.onclick){ - itemEl.onclick1 = itemEl.onclick; - itemEl.onclick = null; - } - } else { - t.removeClass('menu-item-disabled'); - if (itemEl.onclick1){ - itemEl.onclick = itemEl.onclick1; - itemEl.onclick1 = null; - } - } - } - - function appendItem(target, param){ - var menu = $(target); - if (param.parent){ - if (!param.parent.submenu){ - var submenu = $('').appendTo('body'); - submenu.hide(); - param.parent.submenu = submenu; - $('').appendTo(param.parent); - } - menu = param.parent.submenu; - } - if (param.separator){ - var item = $('').appendTo(menu); - } else { - var item = $('').appendTo(menu); - $('').html(param.text).appendTo(item); - } - if (param.iconCls) $('').addClass(param.iconCls).appendTo(item); - if (param.id) item.attr('id', param.id); - if (param.name){item[0].itemName = param.name} - if (param.href){item[0].itemHref = param.href} - if (param.onclick){ - if (typeof param.onclick == 'string'){ - item.attr('onclick', param.onclick); - } else { - item[0].onclick = eval(param.onclick); - } - } - if (param.handler){item[0].onclick = eval(param.handler)} - if (param.disabled){setDisabled(target, item[0], true)} - - bindMenuItemEvent(target, item); - bindMenuEvent(target, menu); - setMenuWidth(target, menu); - } - - function removeItem(target, itemEl){ - function removeit(el){ - if (el.submenu){ - el.submenu.children('div.menu-item').each(function(){ - removeit(this); - }); - var shadow = el.submenu[0].shadow; - if (shadow) shadow.remove(); - el.submenu.remove(); - } - $(el).remove(); - } - removeit(itemEl); - } - - function destroyMenu(target){ - $(target).children('div.menu-item').each(function(){ - removeItem(target, this); - }); - if (target.shadow) target.shadow.remove(); - $(target).remove(); - } - - $.fn.menu = function(options, param){ - if (typeof options == 'string'){ - return $.fn.menu.methods[options](this, param); - } - - options = options || {}; - return this.each(function(){ - var state = $.data(this, 'menu'); - if (state){ - $.extend(state.options, options); - } else { - state = $.data(this, 'menu', { - options: $.extend({}, $.fn.menu.defaults, $.fn.menu.parseOptions(this), options) - }); - init(this); - } - $(this).css({ - left: state.options.left, - top: state.options.top - }); - }); - }; - - $.fn.menu.methods = { - options: function(jq){ - return $.data(jq[0], 'menu').options; - }, - show: function(jq, pos){ - return jq.each(function(){ - showMenu(this, pos); - }); - }, - hide: function(jq){ - return jq.each(function(){ - hideAll(this); - }); - }, - destroy: function(jq){ - return jq.each(function(){ - destroyMenu(this); - }); - }, - /** - * set the menu item text - * param: { - * target: DOM object, indicate the menu item - * text: string, the new text - * } - */ - setText: function(jq, param){ - return jq.each(function(){ - $(param.target).children('div.menu-text').html(param.text); - }); - }, - /** - * set the menu icon class - * param: { - * target: DOM object, indicate the menu item - * iconCls: the menu item icon class - * } - */ - setIcon: function(jq, param){ - return jq.each(function(){ - var item = $(this).menu('getItem', param.target); - if (item.iconCls){ - $(item.target).children('div.menu-icon').removeClass(item.iconCls).addClass(param.iconCls); - } else { - $('').addClass(param.iconCls).appendTo(param.target); - } - }); - }, - /** - * get the menu item data that contains the following property: - * { - * target: DOM object, the menu item - * id: the menu id - * text: the menu item text - * iconCls: the icon class - * href: a remote address to redirect to - * onclick: a function to be called when the item is clicked - * } - */ - getItem: function(jq, itemEl){ - var t = $(itemEl); - var item = { - target: itemEl, - id: t.attr('id'), - text: $.trim(t.children('div.menu-text').html()), - disabled: t.hasClass('menu-item-disabled'), -// href: t.attr('href'), -// name: t.attr('name'), - name: itemEl.itemName, - href: itemEl.itemHref, - onclick: itemEl.onclick - } - var icon = t.children('div.menu-icon'); - if (icon.length){ - var cc = []; - var aa = icon.attr('class').split(' '); - for(var i=0; i').appendTo('body'); - d.width(100); - $._boxModel = parseInt(d.width()) == 100; - d.remove(); - - if (!window.easyloader && $.parser.auto){ - $.parser.parse(); - } - }); - - /** - * extend plugin to set box model width - */ - $.fn._outerWidth = function(width){ - if (width == undefined){ - if (this[0] == window){ - return this.width() || document.body.clientWidth; - } - return this.outerWidth()||0; - } - return this.each(function(){ - if ($._boxModel){ - $(this).width(width - ($(this).outerWidth() - $(this).width())); - } else { - $(this).width(width); - } - }); - }; - - /** - * extend plugin to set box model height - */ - $.fn._outerHeight = function(height){ - if (height == undefined){ - if (this[0] == window){ - return this.height() || document.body.clientHeight; - } - return this.outerHeight()||0; - } - return this.each(function(){ - if ($._boxModel){ - $(this).height(height - ($(this).outerHeight() - $(this).height())); - } else { - $(this).height(height); - } - }); - }; - - $.fn._scrollLeft = function(left){ - if (left == undefined){ - return this.scrollLeft(); - } else { - return this.each(function(){$(this).scrollLeft(left)}); - } - } - - $.fn._propAttr = $.fn.prop || $.fn.attr; - - /** - * set or unset the fit property of parent container, return the width and height of parent container - */ - $.fn._fit = function(fit){ - fit = fit == undefined ? true : fit; - var t = this[0]; - var p = (t.tagName == 'BODY' ? t : this.parent()[0]); - var fcount = p.fcount || 0; - if (fit){ - if (!t.fitted){ - t.fitted = true; - p.fcount = fcount + 1; - $(p).addClass('panel-noscroll'); - if (p.tagName == 'BODY'){ - $('html').addClass('panel-fit'); - } - } - } else { - if (t.fitted){ - t.fitted = false; - p.fcount = fcount - 1; - if (p.fcount == 0){ - $(p).removeClass('panel-noscroll'); - if (p.tagName == 'BODY'){ - $('html').removeClass('panel-fit'); - } - } - } - } - return { - width: $(p).width(), - height: $(p).height() - } - } - -})(jQuery); - -/** - * support for mobile devices - */ -(function($){ - var longTouchTimer = null; - var dblTouchTimer = null; - var isDblClick = false; - - function onTouchStart(e){ - if (e.touches.length != 1){return} - if (!isDblClick){ - isDblClick = true; - dblClickTimer = setTimeout(function(){ - isDblClick = false; - }, 500); - } else { - clearTimeout(dblClickTimer); - isDblClick = false; - fire(e, 'dblclick'); -// e.preventDefault(); - } - longTouchTimer = setTimeout(function(){ - fire(e, 'contextmenu', 3); - }, 1000); - fire(e, 'mousedown'); - if ($.fn.draggable.isDragging || $.fn.resizable.isResizing){ - e.preventDefault(); - } - } - function onTouchMove(e){ - if (e.touches.length != 1){return} - if (longTouchTimer){ - clearTimeout(longTouchTimer); - } - fire(e, 'mousemove'); - if ($.fn.draggable.isDragging || $.fn.resizable.isResizing){ - e.preventDefault(); - } - } - function onTouchEnd(e){ -// if (e.touches.length > 0){return} - if (longTouchTimer){ - clearTimeout(longTouchTimer); - } - fire(e, 'mouseup'); - if ($.fn.draggable.isDragging || $.fn.resizable.isResizing){ - e.preventDefault(); - } - } - - function fire(e, name, which){ - var event = new $.Event(name); - event.pageX = e.changedTouches[0].pageX; - event.pageY = e.changedTouches[0].pageY; - event.which = which || 1; - $(e.target).trigger(event); - } - - if (document.addEventListener){ - document.addEventListener("touchstart", onTouchStart, true); - document.addEventListener("touchmove", onTouchMove, true); - document.addEventListener("touchend", onTouchEnd, true); - } -})(jQuery); - diff --git a/src/main/webapp/js/easyui-1.3.5/src/jquery.progressbar.js b/src/main/webapp/js/easyui-1.3.5/src/jquery.progressbar.js deleted file mode 100644 index b62cf61a..00000000 --- a/src/main/webapp/js/easyui-1.3.5/src/jquery.progressbar.js +++ /dev/null @@ -1,99 +0,0 @@ -/** - * progressbar - jQuery EasyUI - * - * Copyright (c) 2009-2013 www.jeasyui.com. All rights reserved. - * - * Licensed under the GPL or commercial licenses - * To use it on other terms please contact us: info@jeasyui.com - * http://www.gnu.org/licenses/gpl.txt - * http://www.jeasyui.com/license_commercial.php - * - * Dependencies: - * none - * - */ -(function($){ - function init(target){ - $(target).addClass('progressbar'); - $(target).html('
          '); - return $(target); - } - - function setSize(target,width){ - var opts = $.data(target, 'progressbar').options; - var bar = $.data(target, 'progressbar').bar; - if (width) opts.width = width; - bar._outerWidth(opts.width)._outerHeight(opts.height); - - bar.find('div.progressbar-text').width(bar.width()); - bar.find('div.progressbar-text,div.progressbar-value').css({ - height: bar.height()+'px', - lineHeight: bar.height()+'px' - }); - } - - $.fn.progressbar = function(options, param){ - if (typeof options == 'string'){ - var method = $.fn.progressbar.methods[options]; - if (method){ - return method(this, param); - } - } - - options = options || {}; - return this.each(function(){ - var state = $.data(this, 'progressbar'); - if (state){ - $.extend(state.options, options); - } else { - state = $.data(this, 'progressbar', { - options: $.extend({}, $.fn.progressbar.defaults, $.fn.progressbar.parseOptions(this), options), - bar: init(this) - }); - } - $(this).progressbar('setValue', state.options.value); - setSize(this); - }); - }; - - $.fn.progressbar.methods = { - options: function(jq){ - return $.data(jq[0], 'progressbar').options; - }, - resize: function(jq, width){ - return jq.each(function(){ - setSize(this, width); - }); - }, - getValue: function(jq){ - return $.data(jq[0], 'progressbar').options.value; - }, - setValue: function(jq, value){ - if (value < 0) value = 0; - if (value > 100) value = 100; - return jq.each(function(){ - var opts = $.data(this, 'progressbar').options; - var text = opts.text.replace(/{value}/, value); - var oldValue = opts.value; - opts.value = value; - $(this).find('div.progressbar-value').width(value+'%'); - $(this).find('div.progressbar-text').html(text); - if (oldValue != value){ - opts.onChange.call(this, value, oldValue); - } - }); - } - }; - - $.fn.progressbar.parseOptions = function(target){ - return $.extend({}, $.parser.parseOptions(target, ['width','height','text',{value:'number'}])); - }; - - $.fn.progressbar.defaults = { - width: 'auto', - height: 22, - value: 0, // percentage value - text: '{value}%', - onChange:function(newValue,oldValue){} - }; -})(jQuery); diff --git a/src/main/webapp/js/easyui-1.3.5/src/jquery.propertygrid.js b/src/main/webapp/js/easyui-1.3.5/src/jquery.propertygrid.js deleted file mode 100644 index e695ddf3..00000000 --- a/src/main/webapp/js/easyui-1.3.5/src/jquery.propertygrid.js +++ /dev/null @@ -1,315 +0,0 @@ -/** - * propertygrid - jQuery EasyUI - * - * Copyright (c) 2009-2013 www.jeasyui.com. All rights reserved. - * - * Licensed under the GPL or commercial licenses - * To use it on other terms please contact us: info@jeasyui.com - * http://www.gnu.org/licenses/gpl.txt - * http://www.jeasyui.com/license_commercial.php - * - * Dependencies: - * datagrid - * - */ -(function($){ - var currTarget; - - function buildGrid(target){ - var state = $.data(target, 'propertygrid'); - var opts = $.data(target, 'propertygrid').options; - $(target).datagrid($.extend({}, opts, { - cls:'propertygrid', - view:(opts.showGroup ? opts.groupView : opts.view), - onClickRow:function(index, row){ - if (currTarget != this){ -// leaveCurrRow(); - stopEditing(currTarget); - currTarget = this; - } - if (opts.editIndex != index && row.editor){ - var col = $(this).datagrid('getColumnOption', "value"); - col.editor = row.editor; -// leaveCurrRow(); - stopEditing(currTarget); - $(this).datagrid('beginEdit', index); - $(this).datagrid('getEditors', index)[0].target.focus(); - opts.editIndex = index; - } - opts.onClickRow.call(target, index, row); - }, - loadFilter:function(data){ - stopEditing(this); - return opts.loadFilter.call(this, data); - } - })); - $(document).unbind('.propertygrid').bind('mousedown.propertygrid', function(e){ - var p = $(e.target).closest('div.datagrid-view,div.combo-panel'); -// var p = $(e.target).closest('div.propertygrid,div.combo-panel'); - if (p.length){return;} - stopEditing(currTarget); - currTarget = undefined; - }); - -// function leaveCurrRow(){ -// var t = $(currTarget); -// if (!t.length){return;} -// var opts = $.data(currTarget, 'propertygrid').options; -// var index = opts.editIndex; -// if (index == undefined){return;} -// var ed = t.datagrid('getEditors', index)[0]; -// if (ed){ -// ed.target.blur(); -// if (t.datagrid('validateRow', index)){ -// t.datagrid('endEdit', index); -// } else { -// t.datagrid('cancelEdit', index); -// } -// } -// opts.editIndex = undefined; -// } - } - - function stopEditing(target){ - var t = $(target); - if (!t.length){return} - var opts = $.data(target, 'propertygrid').options; - var index = opts.editIndex; - if (index == undefined){return;} - var ed = t.datagrid('getEditors', index)[0]; - if (ed){ - ed.target.blur(); - if (t.datagrid('validateRow', index)){ - t.datagrid('endEdit', index); - } else { - t.datagrid('cancelEdit', index); - } - } - opts.editIndex = undefined; - } - - $.fn.propertygrid = function(options, param){ - if (typeof options == 'string'){ - var method = $.fn.propertygrid.methods[options]; - if (method){ - return method(this, param); - } else { - return this.datagrid(options, param); - } - } - - options = options || {}; - return this.each(function(){ - var state = $.data(this, 'propertygrid'); - if (state){ - $.extend(state.options, options); - } else { - var opts = $.extend({}, $.fn.propertygrid.defaults, $.fn.propertygrid.parseOptions(this), options); - opts.frozenColumns = $.extend(true, [], opts.frozenColumns); - opts.columns = $.extend(true, [], opts.columns); - $.data(this, 'propertygrid', { - options: opts - }); - } - buildGrid(this); - }); - } - - $.fn.propertygrid.methods = { - options: function(jq){ - return $.data(jq[0], 'propertygrid').options; - } - }; - - $.fn.propertygrid.parseOptions = function(target){ - return $.extend({}, $.fn.datagrid.parseOptions(target), $.parser.parseOptions(target,[{showGroup:'boolean'}])); - }; - - // the group view definition - var groupview = $.extend({}, $.fn.datagrid.defaults.view, { - render: function(target, container, frozen){ - var table = []; - var groups = this.groups; - for(var i=0; i'); - table.push(''); - table.push(''); - if ((frozen && (opts.rownumbers || opts.frozenColumns.length)) || - (!frozen && !(opts.rownumbers || opts.frozenColumns.length))){ - table.push(''); - } - table.push(''); - table.push(''); - table.push('
           '); - if (!frozen){ - table.push(''); - table.push(opts.groupFormatter.call(target, group.value, group.rows)); - table.push(''); - } - table.push('
          '); - table.push(''); - - table.push(''); - var index = group.startIndex; - for(var j=0; j'); - table.push(this.renderRow.call(this, target, fields, frozen, index, group.rows[j])); - table.push(''); - index++; - } - table.push('
          '); - return table.join(''); - }, - - bindEvents: function(target){ - var state = $.data(target, 'datagrid'); - var dc = state.dc; - var body = dc.body1.add(dc.body2); - var clickHandler = ($.data(body[0],'events')||$._data(body[0],'events')).click[0].handler; - body.unbind('click').bind('click', function(e){ - var tt = $(e.target); - var expander = tt.closest('span.datagrid-row-expander'); - if (expander.length){ - var gindex = expander.closest('div.datagrid-group').attr('group-index'); - if (expander.hasClass('datagrid-row-collapse')){ - $(target).datagrid('collapseGroup', gindex); - } else { - $(target).datagrid('expandGroup', gindex); - } - } else { - clickHandler(e); - } - e.stopPropagation(); - }); - }, - - onBeforeRender: function(target, rows){ - var state = $.data(target, 'datagrid'); - var opts = state.options; - - initCss(); - - var groups = []; - for(var i=0; i' + - '.datagrid-group{height:25px;overflow:hidden;font-weight:bold;border-bottom:1px solid #ccc;}' + - '' - ); - } - } - } - }); - - $.extend($.fn.datagrid.methods, { - expandGroup:function(jq, groupIndex){ - return jq.each(function(){ - var view = $.data(this, 'datagrid').dc.view; - var group = view.find(groupIndex!=undefined ? 'div.datagrid-group[group-index="'+groupIndex+'"]' : 'div.datagrid-group'); - var expander = group.find('span.datagrid-row-expander'); - if (expander.hasClass('datagrid-row-expand')){ - expander.removeClass('datagrid-row-expand').addClass('datagrid-row-collapse'); - group.next('table').show(); - } - $(this).datagrid('fixRowHeight'); - }); - }, - collapseGroup:function(jq, groupIndex){ - return jq.each(function(){ - var view = $.data(this, 'datagrid').dc.view; - var group = view.find(groupIndex!=undefined ? 'div.datagrid-group[group-index="'+groupIndex+'"]' : 'div.datagrid-group'); - var expander = group.find('span.datagrid-row-expander'); - if (expander.hasClass('datagrid-row-collapse')){ - expander.removeClass('datagrid-row-collapse').addClass('datagrid-row-expand'); - group.next('table').hide(); - } - $(this).datagrid('fixRowHeight'); - }); - } - }); - // end of group view definition - - $.fn.propertygrid.defaults = $.extend({}, $.fn.datagrid.defaults, { - singleSelect:true, - remoteSort:false, - fitColumns:true, - loadMsg:'', - frozenColumns:[[ - {field:'f',width:16,resizable:false} - ]], - columns:[[ - {field:'name',title:'Name',width:100,sortable:true}, - {field:'value',title:'Value',width:100,resizable:false} - ]], - - showGroup:false, - groupView:groupview, - groupField:'group', - groupFormatter:function(fvalue,rows){return fvalue} - }); -})(jQuery); diff --git a/src/main/webapp/js/easyui-1.3.5/src/jquery.resizable.js b/src/main/webapp/js/easyui-1.3.5/src/jquery.resizable.js deleted file mode 100644 index e7002e31..00000000 --- a/src/main/webapp/js/easyui-1.3.5/src/jquery.resizable.js +++ /dev/null @@ -1,244 +0,0 @@ -/** - * resizable - jQuery EasyUI - * - * Copyright (c) 2009-2013 www.jeasyui.com. All rights reserved. - * - * Licensed under the GPL or commercial licenses - * To use it on other terms please contact us: info@jeasyui.com - * http://www.gnu.org/licenses/gpl.txt - * http://www.jeasyui.com/license_commercial.php - */ -(function($){ -// var isResizing = false; - $.fn.resizable = function(options, param){ - if (typeof options == 'string'){ - return $.fn.resizable.methods[options](this, param); - } - - function resize(e){ - var resizeData = e.data; - var options = $.data(resizeData.target, 'resizable').options; - if (resizeData.dir.indexOf('e') != -1) { - var width = resizeData.startWidth + e.pageX - resizeData.startX; - width = Math.min( - Math.max(width, options.minWidth), - options.maxWidth - ); - resizeData.width = width; - } - if (resizeData.dir.indexOf('s') != -1) { - var height = resizeData.startHeight + e.pageY - resizeData.startY; - height = Math.min( - Math.max(height, options.minHeight), - options.maxHeight - ); - resizeData.height = height; - } - if (resizeData.dir.indexOf('w') != -1) { - var width = resizeData.startWidth - e.pageX + resizeData.startX; - width = Math.min( - Math.max(width, options.minWidth), - options.maxWidth - ); - resizeData.width = width; - resizeData.left = resizeData.startLeft + resizeData.startWidth - resizeData.width; - -// resizeData.width = resizeData.startWidth - e.pageX + resizeData.startX; -// if (resizeData.width >= options.minWidth && resizeData.width <= options.maxWidth) { -// resizeData.left = resizeData.startLeft + e.pageX - resizeData.startX; -// } - } - if (resizeData.dir.indexOf('n') != -1) { - var height = resizeData.startHeight - e.pageY + resizeData.startY; - height = Math.min( - Math.max(height, options.minHeight), - options.maxHeight - ); - resizeData.height = height; - resizeData.top = resizeData.startTop + resizeData.startHeight - resizeData.height; - -// resizeData.height = resizeData.startHeight - e.pageY + resizeData.startY; -// if (resizeData.height >= options.minHeight && resizeData.height <= options.maxHeight) { -// resizeData.top = resizeData.startTop + e.pageY - resizeData.startY; -// } - } - } - - function applySize(e){ - var resizeData = e.data; - var t = $(resizeData.target); - t.css({ - left: resizeData.left, - top: resizeData.top - }); - if (t.outerWidth() != resizeData.width){t._outerWidth(resizeData.width)} - if (t.outerHeight() != resizeData.height){t._outerHeight(resizeData.height)} -// t._outerWidth(resizeData.width)._outerHeight(resizeData.height); - } - - function doDown(e){ -// isResizing = true; - $.fn.resizable.isResizing = true; - $.data(e.data.target, 'resizable').options.onStartResize.call(e.data.target, e); - return false; - } - - function doMove(e){ - resize(e); - if ($.data(e.data.target, 'resizable').options.onResize.call(e.data.target, e) != false){ - applySize(e) - } - return false; - } - - function doUp(e){ -// isResizing = false; - $.fn.resizable.isResizing = false; - resize(e, true); - applySize(e); - $.data(e.data.target, 'resizable').options.onStopResize.call(e.data.target, e); - $(document).unbind('.resizable'); - $('body').css('cursor',''); -// $('body').css('cursor','auto'); - return false; - } - - return this.each(function(){ - var opts = null; - var state = $.data(this, 'resizable'); - if (state) { - $(this).unbind('.resizable'); - opts = $.extend(state.options, options || {}); - } else { - opts = $.extend({}, $.fn.resizable.defaults, $.fn.resizable.parseOptions(this), options || {}); - $.data(this, 'resizable', { - options:opts - }); - } - - if (opts.disabled == true) { - return; - } - - // bind mouse event using namespace resizable - $(this).bind('mousemove.resizable', {target:this}, function(e){ -// if (isResizing) return; - if ($.fn.resizable.isResizing){return} - var dir = getDirection(e); - if (dir == '') { - $(e.data.target).css('cursor', ''); - } else { - $(e.data.target).css('cursor', dir + '-resize'); - } - }).bind('mouseleave.resizable', {target:this}, function(e){ - $(e.data.target).css('cursor', ''); - }).bind('mousedown.resizable', {target:this}, function(e){ - var dir = getDirection(e); - if (dir == '') return; - - function getCssValue(css) { - var val = parseInt($(e.data.target).css(css)); - if (isNaN(val)) { - return 0; - } else { - return val; - } - } - - var data = { - target: e.data.target, - dir: dir, - startLeft: getCssValue('left'), - startTop: getCssValue('top'), - left: getCssValue('left'), - top: getCssValue('top'), - startX: e.pageX, - startY: e.pageY, - startWidth: $(e.data.target).outerWidth(), - startHeight: $(e.data.target).outerHeight(), - width: $(e.data.target).outerWidth(), - height: $(e.data.target).outerHeight(), - deltaWidth: $(e.data.target).outerWidth() - $(e.data.target).width(), - deltaHeight: $(e.data.target).outerHeight() - $(e.data.target).height() - }; - $(document).bind('mousedown.resizable', data, doDown); - $(document).bind('mousemove.resizable', data, doMove); - $(document).bind('mouseup.resizable', data, doUp); - $('body').css('cursor', dir+'-resize'); - }); - - // get the resize direction - function getDirection(e) { - var tt = $(e.data.target); - var dir = ''; - var offset = tt.offset(); - var width = tt.outerWidth(); - var height = tt.outerHeight(); - var edge = opts.edge; - if (e.pageY > offset.top && e.pageY < offset.top + edge) { - dir += 'n'; - } else if (e.pageY < offset.top + height && e.pageY > offset.top + height - edge) { - dir += 's'; - } - if (e.pageX > offset.left && e.pageX < offset.left + edge) { - dir += 'w'; - } else if (e.pageX < offset.left + width && e.pageX > offset.left + width - edge) { - dir += 'e'; - } - - var handles = opts.handles.split(','); - for(var i=0; i' + - '
          ' + - '' + - '' + - '
          ' + - '
          ' + - '
          ' + - '
          ' + - '' + - '').insertAfter(target); - var t = $(target); - t.addClass('slider-f').hide(); - var name = t.attr('name'); - if (name){ - slider.find('input.slider-value').attr('name', name); - t.removeAttr('name').attr('sliderName', name); - } - return slider; - } - - /** - * set the slider size, for vertical slider, the height property is required - */ - function setSize(target, param){ - var state = $.data(target, 'slider'); - var opts = state.options; - var slider = state.slider; - - if (param){ - if (param.width) opts.width = param.width; - if (param.height) opts.height = param.height; - } - if (opts.mode == 'h'){ - slider.css('height', ''); - slider.children('div').css('height', ''); - if (!isNaN(opts.width)){ - slider.width(opts.width); - } - } else { - slider.css('width', ''); - slider.children('div').css('width', ''); - if (!isNaN(opts.height)){ - slider.height(opts.height); - slider.find('div.slider-rule').height(opts.height); - slider.find('div.slider-rulelabel').height(opts.height); - slider.find('div.slider-inner')._outerHeight(opts.height); - } - } - initValue(target); - } - - /** - * show slider rule if needed - */ - function showRule(target){ - var state = $.data(target, 'slider'); - var opts = state.options; - var slider = state.slider; - - var aa = opts.mode == 'h' ? opts.rule : opts.rule.slice(0).reverse(); - if (opts.reversed){ - aa = aa.slice(0).reverse(); - } - _build(aa); - - function _build(aa){ - var rule = slider.find('div.slider-rule'); - var label = slider.find('div.slider-rulelabel'); - rule.empty(); - label.empty(); - for(var i=0; i').appendTo(rule); - span.css((opts.mode=='h'?'left':'top'), distance); - - // show the labels - if (aa[i] != '|'){ - span = $('').appendTo(label); - span.html(aa[i]); - if (opts.mode == 'h'){ - span.css({ - left: distance, - marginLeft: -Math.round(span.outerWidth()/2) - }); - } else { - span.css({ - top: distance, - marginTop: -Math.round(span.outerHeight()/2) - }); - } - } - } - } - } - - /** - * build the slider and set some properties - */ - function buildSlider(target){ - var state = $.data(target, 'slider'); - var opts = state.options; - var slider = state.slider; - - slider.removeClass('slider-h slider-v slider-disabled'); - slider.addClass(opts.mode == 'h' ? 'slider-h' : 'slider-v'); - slider.addClass(opts.disabled ? 'slider-disabled' : ''); - - slider.find('a.slider-handle').draggable({ - axis:opts.mode, - cursor:'pointer', - disabled: opts.disabled, - onDrag:function(e){ - var left = e.data.left; - var width = slider.width(); - if (opts.mode!='h'){ - left = e.data.top; - width = slider.height(); - } - if (left < 0 || left > width) { - return false; - } else { - var value = pos2value(target, left); - adjustValue(value); - return false; - } - }, - onBeforeDrag:function(){ - state.isDragging = true; - }, - onStartDrag:function(){ - opts.onSlideStart.call(target, opts.value); - }, - onStopDrag:function(e){ - var value = pos2value(target, (opts.mode=='h'?e.data.left:e.data.top)); - adjustValue(value); - opts.onSlideEnd.call(target, opts.value); - opts.onComplete.call(target, opts.value); - state.isDragging = false; - } - }); - slider.find('div.slider-inner').unbind('.slider').bind('mousedown.slider', function(e){ - if (state.isDragging){return} - var pos = $(this).offset(); - var value = pos2value(target, (opts.mode=='h'?(e.pageX-pos.left):(e.pageY-pos.top))); - adjustValue(value); - opts.onComplete.call(target, opts.value); - }); - - function adjustValue(value){ - var s = Math.abs(value % opts.step); - if (s < opts.step/2){ - value -= s; - } else { - value = value - s + opts.step; - } - setValue(target, value); - } - } - - /** - * set a specified value to slider - */ - function setValue(target, value){ - var state = $.data(target, 'slider'); - var opts = state.options; - var slider = state.slider; - var oldValue = opts.value; - if (value < opts.min) value = opts.min; - if (value > opts.max) value = opts.max; - - opts.value = value; - $(target).val(value); - slider.find('input.slider-value').val(value); - - var pos = value2pos(target, value); - var tip = slider.find('.slider-tip'); - if (opts.showTip){ - tip.show(); - tip.html(opts.tipFormatter.call(target, opts.value)); - } else { - tip.hide(); - } - - if (opts.mode == 'h'){ - var style = 'left:'+pos+'px;'; - slider.find('.slider-handle').attr('style', style); - tip.attr('style', style + 'margin-left:' + (-Math.round(tip.outerWidth()/2)) + 'px'); - } else { - var style = 'top:' + pos + 'px;'; - slider.find('.slider-handle').attr('style', style); - tip.attr('style', style + 'margin-left:' + (-Math.round(tip.outerWidth())) + 'px'); - } - - if (oldValue != value){ - opts.onChange.call(target, value, oldValue); - } - } - - function initValue(target){ - var opts = $.data(target, 'slider').options; - var fn = opts.onChange; - opts.onChange = function(){}; - setValue(target, opts.value); - opts.onChange = fn; - } - - /** - * translate value to slider position - */ - function value2pos(target, value){ - var state = $.data(target, 'slider'); - var opts = state.options; - var slider = state.slider; - if (opts.mode == 'h'){ - var pos = (value-opts.min)/(opts.max-opts.min)*slider.width(); - if (opts.reversed){ - pos = slider.width() - pos; - } - } else { - var pos = slider.height() - (value-opts.min)/(opts.max-opts.min)*slider.height(); - if (opts.reversed){ - pos = slider.height() - pos; - } - } - return pos.toFixed(0); - } - - /** - * translate slider position to value - */ - function pos2value(target, pos){ - var state = $.data(target, 'slider'); - var opts = state.options; - var slider = state.slider; - if (opts.mode == 'h'){ - var value = opts.min + (opts.max-opts.min)*(pos/slider.width()); - } else { - var value = opts.min + (opts.max-opts.min)*((slider.height()-pos)/slider.height()); - } - return opts.reversed ? opts.max - value.toFixed(0) : value.toFixed(0); - } - - $.fn.slider = function(options, param){ - if (typeof options == 'string'){ - return $.fn.slider.methods[options](this, param); - } - - options = options || {}; - return this.each(function(){ - var state = $.data(this, 'slider'); - if (state){ - $.extend(state.options, options); - } else { - state = $.data(this, 'slider', { - options: $.extend({}, $.fn.slider.defaults, $.fn.slider.parseOptions(this), options), - slider: init(this) - }); - $(this).removeAttr('disabled'); - } - - var opts = state.options; - opts.min = parseFloat(opts.min); - opts.max = parseFloat(opts.max); - opts.value = parseFloat(opts.value); - opts.step = parseFloat(opts.step); - opts.originalValue = opts.value; - - buildSlider(this); - showRule(this); - setSize(this); - }); - }; - - $.fn.slider.methods = { - options: function(jq){ - return $.data(jq[0], 'slider').options; - }, - destroy: function(jq){ - return jq.each(function(){ - $.data(this, 'slider').slider.remove(); - $(this).remove(); - }); - }, - resize: function(jq, param){ - return jq.each(function(){ - setSize(this, param); - }); - }, - getValue: function(jq){ - return jq.slider('options').value; - }, - setValue: function(jq, value){ - return jq.each(function(){ - setValue(this, value); - }); - }, - clear: function(jq){ - return jq.each(function(){ - var opts = $(this).slider('options'); - setValue(this, opts.min); - }); - }, - reset: function(jq){ - return jq.each(function(){ - var opts = $(this).slider('options'); - setValue(this, opts.originalValue); - }); - }, - enable: function(jq){ - return jq.each(function(){ - $.data(this, 'slider').options.disabled = false; - buildSlider(this); - }); - }, - disable: function(jq){ - return jq.each(function(){ - $.data(this, 'slider').options.disabled = true; - buildSlider(this); - }); - } - }; - - $.fn.slider.parseOptions = function(target){ - var t = $(target); - return $.extend({}, $.parser.parseOptions(target, [ - 'width','height','mode',{reversed:'boolean',showTip:'boolean',min:'number',max:'number',step:'number'} - ]), { - value: (t.val() || undefined), - disabled: (t.attr('disabled') ? true : undefined), - rule: (t.attr('rule') ? eval(t.attr('rule')) : undefined) - }); - }; - - $.fn.slider.defaults = { - width: 'auto', - height: 'auto', - mode: 'h', // 'h'(horizontal) or 'v'(vertical) - reversed: false, - showTip: false, - disabled: false, - value: 0, - min: 0, - max: 100, - step: 1, - rule: [], // [0,'|',100] - tipFormatter: function(value){return value}, - onChange: function(value, oldValue){}, - onSlideStart: function(value){}, - onSlideEnd: function(value){}, - onComplete: function(value){} - }; -})(jQuery); diff --git a/src/main/webapp/js/easyui-1.3.5/src/jquery.tabs.js b/src/main/webapp/js/easyui-1.3.5/src/jquery.tabs.js deleted file mode 100644 index 8723aa43..00000000 --- a/src/main/webapp/js/easyui-1.3.5/src/jquery.tabs.js +++ /dev/null @@ -1,787 +0,0 @@ -/** - * tabs - jQuery EasyUI - * - * Copyright (c) 2009-2013 www.jeasyui.com. All rights reserved. - * - * Licensed under the GPL or commercial licenses - * To use it on other terms please contact us: info@jeasyui.com - * http://www.gnu.org/licenses/gpl.txt - * http://www.jeasyui.com/license_commercial.php - * - * Dependencies: - * panel - * linkbutton - * - */ -(function($){ - - /** - * set the tabs scrollers to show or not, - * dependent on the tabs count and width - */ - function setScrollers(container) { - var opts = $.data(container, 'tabs').options; - if (opts.tabPosition == 'left' || opts.tabPosition == 'right' || !opts.showHeader){return} - - var header = $(container).children('div.tabs-header'); - var tool = header.children('div.tabs-tool'); - var sLeft = header.children('div.tabs-scroller-left'); - var sRight = header.children('div.tabs-scroller-right'); - var wrap = header.children('div.tabs-wrap'); - - // set the tool height - var tHeight = header.outerHeight(); - if (opts.plain){ - tHeight -= tHeight - header.height(); - } - tool._outerHeight(tHeight); - - var tabsWidth = 0; - $('ul.tabs li', header).each(function(){ - tabsWidth += $(this).outerWidth(true); - }); - var cWidth = header.width() - tool._outerWidth(); - - if (tabsWidth > cWidth) { - sLeft.add(sRight).show()._outerHeight(tHeight); - if (opts.toolPosition == 'left'){ - tool.css({ - left: sLeft.outerWidth(), - right: '' - }); - wrap.css({ - marginLeft: sLeft.outerWidth() + tool._outerWidth(), - marginRight: sRight._outerWidth(), - width: cWidth - sLeft.outerWidth() - sRight.outerWidth() - }); - } else { - tool.css({ - left: '', - right: sRight.outerWidth() - }); - wrap.css({ - marginLeft: sLeft.outerWidth(), - marginRight: sRight.outerWidth() + tool._outerWidth(), - width: cWidth - sLeft.outerWidth() - sRight.outerWidth() - }); - } - } else { - sLeft.add(sRight).hide(); - if (opts.toolPosition == 'left'){ - tool.css({ - left: 0, - right: '' - }); - wrap.css({ - marginLeft: tool._outerWidth(), - marginRight: 0, - width: cWidth - }); - } else { - tool.css({ - left: '', - right: 0 - }); - wrap.css({ - marginLeft: 0, - marginRight: tool._outerWidth(), - width: cWidth - }); - } - } - } - - function addTools(container){ - var opts = $.data(container, 'tabs').options; - var header = $(container).children('div.tabs-header'); - if (opts.tools) { - if (typeof opts.tools == 'string'){ - $(opts.tools).addClass('tabs-tool').appendTo(header); - $(opts.tools).show(); - } else { - header.children('div.tabs-tool').remove(); - var tools = $('
          ').appendTo(header); - var tr = tools.find('tr'); - for(var i=0; i').appendTo(tr); - var tool = $('').appendTo(td); - tool[0].onclick = eval(opts.tools[i].handler || function(){}); - tool.linkbutton($.extend({}, opts.tools[i], { - plain: true - })); - } - } - } else { - header.children('div.tabs-tool').remove(); - } - } - - function setSize(container) { - var state = $.data(container, 'tabs'); - var opts = state.options; - var cc = $(container); - - opts.fit ? $.extend(opts, cc._fit()) : cc._fit(false); - cc.width(opts.width).height(opts.height); - - var header = $(container).children('div.tabs-header'); - var panels = $(container).children('div.tabs-panels'); - var wrap = header.find('div.tabs-wrap'); - var ul = wrap.find('.tabs'); - - for(var i=0; i').insertBefore(cc); - cc.children('div').each(function(){ - pp[0].appendChild(this); - }); - cc[0].appendChild(pp[0]); -// cc.wrapInner('
          '); - $('
          ' - + '
          ' - + '
          ' - + '
          ' - + '
            ' - + '
            ' - + '
            ').prependTo(container); - - cc.children('div.tabs-panels').children('div').each(function(i){ - var opts = $.extend({}, $.parser.parseOptions(this), { - selected: ($(this).attr('selected') ? true : undefined) - }); - var pp = $(this); - tabs.push(pp); - createTab(container, pp, opts); - }); - - cc.children('div.tabs-header').find('.tabs-scroller-left, .tabs-scroller-right').hover( - function(){$(this).addClass('tabs-scroller-over');}, - function(){$(this).removeClass('tabs-scroller-over');} - ); - cc.bind('_resize', function(e,force){ - var opts = $.data(container, 'tabs').options; - if (opts.fit == true || force){ - setSize(container); - setSelectedSize(container); - } - return false; - }); - } - - function bindEvents(container){ - var state = $.data(container, 'tabs') - var opts = state.options; - $(container).children('div.tabs-header').unbind().bind('click', function(e){ - if ($(e.target).hasClass('tabs-scroller-left')){ - $(container).tabs('scrollBy', -opts.scrollIncrement); - } else if ($(e.target).hasClass('tabs-scroller-right')){ - $(container).tabs('scrollBy', opts.scrollIncrement); - } else { - var li = $(e.target).closest('li'); - if (li.hasClass('tabs-disabled')){return;} - var a = $(e.target).closest('a.tabs-close'); - if (a.length){ - closeTab(container, getLiIndex(li)); - } else if (li.length){ -// selectTab(container, getLiIndex(li)); - var index = getLiIndex(li); - var popts = state.tabs[index].panel('options'); - if (popts.collapsible){ - popts.closed ? selectTab(container, index) : unselectTab(container, index); - } else { - selectTab(container, index); - } - } - } - }).bind('contextmenu', function(e){ - var li = $(e.target).closest('li'); - if (li.hasClass('tabs-disabled')){return;} - if (li.length){ - opts.onContextMenu.call(container, e, li.find('span.tabs-title').html(), getLiIndex(li)); - } - }); - - function getLiIndex(li){ - var index = 0; - li.parent().children('li').each(function(i){ - if (li[0] == this){ - index = i; - return false; - } - }); - return index; - } - } - - function setProperties(container){ - var opts = $.data(container, 'tabs').options; - var header = $(container).children('div.tabs-header'); - var panels = $(container).children('div.tabs-panels'); - - header.removeClass('tabs-header-top tabs-header-bottom tabs-header-left tabs-header-right'); - panels.removeClass('tabs-panels-top tabs-panels-bottom tabs-panels-left tabs-panels-right'); - if (opts.tabPosition == 'top'){ - header.insertBefore(panels); - } else if (opts.tabPosition == 'bottom'){ - header.insertAfter(panels); - header.addClass('tabs-header-bottom'); - panels.addClass('tabs-panels-top'); - } else if (opts.tabPosition == 'left'){ - header.addClass('tabs-header-left'); - panels.addClass('tabs-panels-right'); - } else if (opts.tabPosition == 'right'){ - header.addClass('tabs-header-right'); - panels.addClass('tabs-panels-left'); - } - - if (opts.plain == true) { - header.addClass('tabs-header-plain'); - } else { - header.removeClass('tabs-header-plain'); - } - if (opts.border == true){ - header.removeClass('tabs-header-noborder'); - panels.removeClass('tabs-panels-noborder'); - } else { - header.addClass('tabs-header-noborder'); - panels.addClass('tabs-panels-noborder'); - } - } - - function createTab(container, pp, options) { - var state = $.data(container, 'tabs'); - options = options || {}; - - // create panel - pp.panel($.extend({}, options, { - border: false, - noheader: true, - closed: true, - doSize: false, - iconCls: (options.icon ? options.icon : undefined), - onLoad: function(){ - if (options.onLoad){ - options.onLoad.call(this, arguments); - } - state.options.onLoad.call(container, $(this)); - } - })); - - var opts = pp.panel('options'); - - var tabs = $(container).children('div.tabs-header').find('ul.tabs'); - - opts.tab = $('
          • ').appendTo(tabs); // set the tab object in panel options - opts.tab.append( - '' + - '' + - '' + - '' - ); - - $(container).tabs('update', { - tab: pp, - options: opts - }); - } - - function addTab(container, options) { - var opts = $.data(container, 'tabs').options; - var tabs = $.data(container, 'tabs').tabs; - if (options.selected == undefined) options.selected = true; - - var pp = $('
            ').appendTo($(container).children('div.tabs-panels')); - tabs.push(pp); - createTab(container, pp, options); - - opts.onAdd.call(container, options.title, tabs.length-1); - -// setScrollers(container); - setSize(container); - if (options.selected){ - selectTab(container, tabs.length-1); // select the added tab panel - } - } - - /** - * update tab panel, param has following properties: - * tab: the tab panel to be updated - * options: the tab panel options - */ - function updateTab(container, param){ - var selectHis = $.data(container, 'tabs').selectHis; - var pp = param.tab; // the tab panel - var oldTitle = pp.panel('options').title; - pp.panel($.extend({}, param.options, { - iconCls: (param.options.icon ? param.options.icon : undefined) - })); - - var opts = pp.panel('options'); // get the tab panel options - var tab = opts.tab; - - var s_title = tab.find('span.tabs-title'); - var s_icon = tab.find('span.tabs-icon'); - s_title.html(opts.title); - s_icon.attr('class', 'tabs-icon'); - - tab.find('a.tabs-close').remove(); - if (opts.closable){ - s_title.addClass('tabs-closable'); - $('').appendTo(tab); - } else{ - s_title.removeClass('tabs-closable'); - } - if (opts.iconCls){ - s_title.addClass('tabs-with-icon'); - s_icon.addClass(opts.iconCls); - } else { - s_title.removeClass('tabs-with-icon'); - } - - if (oldTitle != opts.title){ - for(var i=0; i').insertAfter(tab.find('a.tabs-inner')); - if ($.isArray(opts.tools)){ - for(var i=0; i').appendTo(p_tool); - t.addClass(opts.tools[i].iconCls); - if (opts.tools[i].handler){ - t.bind('click', {handler:opts.tools[i].handler}, function(e){ - if ($(this).parents('li').hasClass('tabs-disabled')){return;} - e.data.handler.call(this); - }); - } - } - } else { - $(opts.tools).children().appendTo(p_tool); - } - var pr = p_tool.children().length * 12; - if (opts.closable) { - pr += 8; - } else { - pr -= 3; - p_tool.css('right','5px'); - } - s_title.css('padding-right', pr+'px'); - } - -// setProperties(container); -// setScrollers(container); - setSize(container); - - $.data(container, 'tabs').options.onUpdate.call(container, opts.title, getTabIndex(container, pp)); - } - - /** - * close a tab with specified index or title - */ - function closeTab(container, which) { - var opts = $.data(container, 'tabs').options; - var tabs = $.data(container, 'tabs').tabs; - var selectHis = $.data(container, 'tabs').selectHis; - - if (!exists(container, which)) return; - - var tab = getTab(container, which); - var title = tab.panel('options').title; - var index = getTabIndex(container, tab); - - if (opts.onBeforeClose.call(container, title, index) == false) return; - - var tab = getTab(container, which, true); - tab.panel('options').tab.remove(); - tab.panel('destroy'); - - opts.onClose.call(container, title, index); - -// setScrollers(container); - setSize(container); - - // remove the select history item - for(var i=0; i= tabs.length){ - return null; - } else { - var tab = tabs[which]; - if (removeit) { - tabs.splice(which, 1); - } - return tab; - } - } - for(var i=0; idiv.tabs-header>div.tabs-wrap'); - var left = tab.position().left; - var right = left + tab.outerWidth(); - if (left < 0 || right > wrap.width()){ - var deltaX = left - (wrap.width()-tab.width()) / 2; - $(container).tabs('scrollBy', deltaX); - } else { - $(container).tabs('scrollBy', 0); - } - - setSelectedSize(container); - - opts.onSelect.call(container, title, getTabIndex(container, panel)); - } - - function unselectTab(container, which){ - var state = $.data(container, 'tabs'); - var p = getTab(container, which); - if (p){ - var opts = p.panel('options'); - if (!opts.closed){ - p.panel('close'); - if (opts.closed){ - opts.tab.removeClass('tabs-selected'); - state.options.onUnselect.call(container, opts.title, getTabIndex(container, p)); - } - } - } - } - - function exists(container, which){ - return getTab(container, which) != null; - } - - function showHeader(container, visible){ - var opts = $.data(container, 'tabs').options; - opts.showHeader = visible; - $(container).tabs('resize'); - } - - - $.fn.tabs = function(options, param){ - if (typeof options == 'string') { - return $.fn.tabs.methods[options](this, param); - } - - options = options || {}; - return this.each(function(){ - var state = $.data(this, 'tabs'); - var opts; - if (state) { - opts = $.extend(state.options, options); - state.options = opts; - } else { - $.data(this, 'tabs', { - options: $.extend({},$.fn.tabs.defaults, $.fn.tabs.parseOptions(this), options), - tabs: [], - selectHis: [] - }); - wrapTabs(this); - } - - addTools(this); - setProperties(this); - setSize(this); - bindEvents(this); - - doFirstSelect(this); - }); - }; - - $.fn.tabs.methods = { - options: function(jq){ - var cc = jq[0]; - var opts = $.data(cc, 'tabs').options; - var s = getSelectedTab(cc); - opts.selected = s ? getTabIndex(cc, s) : -1; - return opts; - }, - tabs: function(jq){ - return $.data(jq[0], 'tabs').tabs; - }, - resize: function(jq){ - return jq.each(function(){ - setSize(this); - setSelectedSize(this); - }); - }, - add: function(jq, options){ - return jq.each(function(){ - addTab(this, options); - }); - }, - close: function(jq, which){ - return jq.each(function(){ - closeTab(this, which); - }); - }, - getTab: function(jq, which){ - return getTab(jq[0], which); - }, - getTabIndex: function(jq, tab){ - return getTabIndex(jq[0], tab); - }, - getSelected: function(jq){ - return getSelectedTab(jq[0]); - }, - select: function(jq, which){ - return jq.each(function(){ - selectTab(this, which); - }); - }, - unselect: function(jq, which){ - return jq.each(function(){ - unselectTab(this, which); - }); - }, - exists: function(jq, which){ - return exists(jq[0], which); - }, - update: function(jq, options){ - return jq.each(function(){ - updateTab(this, options); - }); - }, - enableTab: function(jq, which){ - return jq.each(function(){ - $(this).tabs('getTab', which).panel('options').tab.removeClass('tabs-disabled'); - }); - }, - disableTab: function(jq, which){ - return jq.each(function(){ - $(this).tabs('getTab', which).panel('options').tab.addClass('tabs-disabled'); - }); - }, - showHeader: function(jq){ - return jq.each(function(){ - showHeader(this, true); - }); - }, - hideHeader: function(jq){ - return jq.each(function(){ - showHeader(this, false); - }); - }, - scrollBy: function(jq, deltaX){ // scroll the tab header by the specified amount of pixels - return jq.each(function(){ - var opts = $(this).tabs('options'); - var wrap = $(this).find('>div.tabs-header>div.tabs-wrap'); - var pos = Math.min(wrap._scrollLeft() + deltaX, getMaxScrollWidth()); - wrap.animate({scrollLeft: pos}, opts.scrollDuration); - - function getMaxScrollWidth(){ - var w = 0; - var ul = wrap.children('ul'); - ul.children('li').each(function(){ - w += $(this).outerWidth(true); - }); - return w - wrap.width() + (ul.outerWidth() - ul.width()); - } - }); - } - }; - - $.fn.tabs.parseOptions = function(target){ - return $.extend({}, $.parser.parseOptions(target, [ - 'width','height','tools','toolPosition','tabPosition', - {fit:'boolean',border:'boolean',plain:'boolean',headerWidth:'number',tabWidth:'number',tabHeight:'number',selected:'number',showHeader:'boolean'} - ])); - }; - - $.fn.tabs.defaults = { - width: 'auto', - height: 'auto', - headerWidth: 150, // the tab header width, it is valid only when tabPosition set to 'left' or 'right' - tabWidth: 'auto', // the tab width - tabHeight: 27, // the tab height - selected: 0, // the initialized selected tab index - showHeader: true, - plain: false, - fit: false, - border: true, - tools: null, - toolPosition: 'right', // left,right - tabPosition: 'top', // possible values: top,bottom - scrollIncrement: 100, - scrollDuration: 400, - onLoad: function(panel){}, - onSelect: function(title, index){}, - onUnselect: function(title, index){}, - onBeforeClose: function(title, index){}, - onClose: function(title, index){}, - onAdd: function(title, index){}, - onUpdate: function(title, index){}, - onContextMenu: function(e, title, index){} - }; -})(jQuery); diff --git a/src/main/webapp/js/easyui-1.3.5/src/jquery.window.js b/src/main/webapp/js/easyui-1.3.5/src/jquery.window.js deleted file mode 100644 index 71fc6bb3..00000000 --- a/src/main/webapp/js/easyui-1.3.5/src/jquery.window.js +++ /dev/null @@ -1,409 +0,0 @@ -/** - * window - jQuery EasyUI - * - * Copyright (c) 2009-2013 www.jeasyui.com. All rights reserved. - * - * Licensed under the GPL or commercial licenses - * To use it on other terms please contact us: info@jeasyui.com - * http://www.gnu.org/licenses/gpl.txt - * http://www.jeasyui.com/license_commercial.php - * - * Dependencies: - * panel - * draggable - * resizable - * - */ -(function($){ - function setSize(target, param){ - var opts = $.data(target, 'window').options; - if (param){ - $.extend(opts, param); -// if (param.width) opts.width = param.width; -// if (param.height) opts.height = param.height; -// if (param.left != null) opts.left = param.left; -// if (param.top != null) opts.top = param.top; - } - $(target).panel('resize', opts); - } - - function moveWindow(target, param){ - var state = $.data(target, 'window'); - if (param){ - if (param.left != null) state.options.left = param.left; - if (param.top != null) state.options.top = param.top; - } - $(target).panel('move', state.options); - if (state.shadow){ - state.shadow.css({ - left: state.options.left, - top: state.options.top - }); - } - } - - /** - * center the window only horizontally - */ - function hcenter(target, tomove){ - var state = $.data(target, 'window'); - var opts = state.options; - var width = opts.width; - if (isNaN(width)){ - width = state.window._outerWidth(); - } - if (opts.inline){ - var parent = state.window.parent(); - opts.left = (parent.width() - width) / 2 + parent.scrollLeft(); - } else { - opts.left = ($(window)._outerWidth() - width) / 2 + $(document).scrollLeft(); - } - if (tomove){moveWindow(target);} - } - - /** - * center the window only vertically - */ - function vcenter(target, tomove){ - var state = $.data(target, 'window'); - var opts = state.options; - var height = opts.height; - if (isNaN(height)){ - height = state.window._outerHeight(); - } - if (opts.inline){ - var parent = state.window.parent(); - opts.top = (parent.height() - height) / 2 + parent.scrollTop(); - } else { - opts.top = ($(window)._outerHeight() - height) / 2 + $(document).scrollTop(); - } - if (tomove){moveWindow(target);} - } - - function create(target){ - var state = $.data(target, 'window'); - var win = $(target).panel($.extend({}, state.options, { - border: false, - doSize: true, // size the panel, the property undefined in window component - closed: true, // close the panel - cls: 'window', - headerCls: 'window-header', - bodyCls: 'window-body ' + (state.options.noheader ? 'window-body-noheader' : ''), - - onBeforeDestroy: function(){ - if (state.options.onBeforeDestroy.call(target) == false) return false; - if (state.shadow) state.shadow.remove(); - if (state.mask) state.mask.remove(); - }, - onClose: function(){ - if (state.shadow) state.shadow.hide(); - if (state.mask) state.mask.hide(); - - state.options.onClose.call(target); - }, - onOpen: function(){ - if (state.mask){ - state.mask.css({ - display:'block', - zIndex: $.fn.window.defaults.zIndex++ - }); - } - if (state.shadow){ - state.shadow.css({ - display:'block', - zIndex: $.fn.window.defaults.zIndex++, - left: state.options.left, - top: state.options.top, - width: state.window._outerWidth(), - height: state.window._outerHeight() - }); - } - state.window.css('z-index', $.fn.window.defaults.zIndex++); - - state.options.onOpen.call(target); - }, - onResize: function(width, height){ - var opts = $(this).panel('options'); - $.extend(state.options, { - width: opts.width, - height: opts.height, - left: opts.left, - top: opts.top - }); - if (state.shadow){ - state.shadow.css({ - left: state.options.left, - top: state.options.top, - width: state.window._outerWidth(), - height: state.window._outerHeight() - }); - } - - state.options.onResize.call(target, width, height); - }, - onMinimize: function(){ - if (state.shadow) state.shadow.hide(); - if (state.mask) state.mask.hide(); - - state.options.onMinimize.call(target); - }, - onBeforeCollapse: function(){ - if (state.options.onBeforeCollapse.call(target) == false) return false; - if (state.shadow) state.shadow.hide(); - }, - onExpand: function(){ - if (state.shadow) state.shadow.show(); - state.options.onExpand.call(target); - } - })); - - state.window = win.panel('panel'); - - // create mask - if (state.mask) state.mask.remove(); - if (state.options.modal == true){ - state.mask = $('
            ').insertAfter(state.window); - state.mask.css({ - width: (state.options.inline ? state.mask.parent().width() : getPageArea().width), - height: (state.options.inline ? state.mask.parent().height() : getPageArea().height), - display: 'none' - }); - } - - // create shadow - if (state.shadow) state.shadow.remove(); - if (state.options.shadow == true){ - state.shadow = $('
            ').insertAfter(state.window); - state.shadow.css({ - display: 'none' - }); - } - - // if require center the window - if (state.options.left == null){hcenter(target);} - if (state.options.top == null){vcenter(target);} - moveWindow(target); - - if (state.options.closed == false){ - win.window('open'); // open the window - } - } - - - /** - * set window drag and resize property - */ - function setProperties(target){ - var state = $.data(target, 'window'); - - state.window.draggable({ - handle: '>div.panel-header>div.panel-title', - disabled: state.options.draggable == false, - onStartDrag: function(e){ - if (state.mask) state.mask.css('z-index', $.fn.window.defaults.zIndex++); - if (state.shadow) state.shadow.css('z-index', $.fn.window.defaults.zIndex++); - state.window.css('z-index', $.fn.window.defaults.zIndex++); - - if (!state.proxy){ - state.proxy = $('
            ').insertAfter(state.window); - } - state.proxy.css({ - display:'none', - zIndex: $.fn.window.defaults.zIndex++, - left: e.data.left, - top: e.data.top - }); - state.proxy._outerWidth(state.window._outerWidth()); - state.proxy._outerHeight(state.window._outerHeight()); - setTimeout(function(){ - if (state.proxy) state.proxy.show(); - }, 500); - }, - onDrag: function(e){ - state.proxy.css({ - display:'block', - left: e.data.left, - top: e.data.top - }); - return false; - }, - onStopDrag: function(e){ - state.options.left = e.data.left; - state.options.top = e.data.top; - $(target).window('move'); - state.proxy.remove(); - state.proxy = null; - } - }); - - state.window.resizable({ - disabled: state.options.resizable == false, - onStartResize:function(e){ - state.pmask = $('
            ').insertAfter(state.window); - state.pmask.css({ - zIndex: $.fn.window.defaults.zIndex++, - left: e.data.left, - top: e.data.top, - width: state.window._outerWidth(), - height: state.window._outerHeight() - }); - if (!state.proxy){ - state.proxy = $('
            ').insertAfter(state.window); - } - state.proxy.css({ - zIndex: $.fn.window.defaults.zIndex++, - left: e.data.left, - top: e.data.top - }); - state.proxy._outerWidth(e.data.width); - state.proxy._outerHeight(e.data.height); - }, - onResize: function(e){ - state.proxy.css({ - left: e.data.left, - top: e.data.top - }); - state.proxy._outerWidth(e.data.width); - state.proxy._outerHeight(e.data.height); - return false; - }, - onStopResize: function(e){ - $.extend(state.options, { - left: e.data.left, - top: e.data.top, - width: e.data.width, - height: e.data.height - }); - setSize(target); - state.pmask.remove(); - state.pmask = null; - state.proxy.remove(); - state.proxy = null; - } - }); - } - - function getPageArea() { - if (document.compatMode == 'BackCompat') { - return { - width: Math.max(document.body.scrollWidth, document.body.clientWidth), - height: Math.max(document.body.scrollHeight, document.body.clientHeight) - } - } else { - return { - width: Math.max(document.documentElement.scrollWidth, document.documentElement.clientWidth), - height: Math.max(document.documentElement.scrollHeight, document.documentElement.clientHeight) - } - } - } - - // when window resize, reset the width and height of the window's mask - $(window).resize(function(){ - $('body>div.window-mask').css({ - width: $(window)._outerWidth(), - height: $(window)._outerHeight() - }); - setTimeout(function(){ - $('body>div.window-mask').css({ - width: getPageArea().width, - height: getPageArea().height - }); - }, 50); - }); - - $.fn.window = function(options, param){ - if (typeof options == 'string'){ - var method = $.fn.window.methods[options]; - if (method){ - return method(this, param); - } else { - return this.panel(options, param); - } - } - - options = options || {}; - return this.each(function(){ - var state = $.data(this, 'window'); - if (state){ - $.extend(state.options, options); - } else { - state = $.data(this, 'window', { - options: $.extend({}, $.fn.window.defaults, $.fn.window.parseOptions(this), options) - }); - if (!state.options.inline){ -// $(this).appendTo('body'); - document.body.appendChild(this); - } - } - create(this); - setProperties(this); - }); - }; - - $.fn.window.methods = { - options: function(jq){ - var popts = jq.panel('options'); - var wopts = $.data(jq[0], 'window').options; - return $.extend(wopts, { - closed: popts.closed, - collapsed: popts.collapsed, - minimized: popts.minimized, - maximized: popts.maximized - }); - }, - window: function(jq){ - return $.data(jq[0], 'window').window; - }, - resize: function(jq, param){ - return jq.each(function(){ - setSize(this, param); - }); - }, - move: function(jq, param){ - return jq.each(function(){ - moveWindow(this, param); - }); - }, - hcenter: function(jq){ - return jq.each(function(){ - hcenter(this, true); - }); - }, - vcenter: function(jq){ - return jq.each(function(){ - vcenter(this, true); - }); - }, - center: function(jq){ - return jq.each(function(){ - hcenter(this); - vcenter(this); - moveWindow(this); - }); - } - }; - - $.fn.window.parseOptions = function(target){ - return $.extend({}, $.fn.panel.parseOptions(target), $.parser.parseOptions(target, [ - {draggable:'boolean',resizable:'boolean',shadow:'boolean',modal:'boolean',inline:'boolean'} - ])); - }; - - // Inherited from $.fn.panel.defaults - $.fn.window.defaults = $.extend({}, $.fn.panel.defaults, { - zIndex: 9000, - draggable: true, - resizable: true, - shadow: true, - modal: false, - inline: false, // true to stay inside its parent, false to go on top of all elements - - // window's property which difference from panel - title: 'New Window', - collapsible: true, - minimizable: true, - maximizable: true, - closable: true, - closed: false - }); -})(jQuery); diff --git a/src/main/webapp/js/easyui-1.3.5/themes/black/accordion.css b/src/main/webapp/js/easyui-1.3.5/themes/black/accordion.css deleted file mode 100644 index a0f6ddc3..00000000 --- a/src/main/webapp/js/easyui-1.3.5/themes/black/accordion.css +++ /dev/null @@ -1,41 +0,0 @@ -.accordion { - overflow: hidden; - border-width: 1px; - border-style: solid; -} -.accordion .accordion-header { - border-width: 0 0 1px; - cursor: pointer; -} -.accordion .accordion-body { - border-width: 0 0 1px; -} -.accordion-noborder { - border-width: 0; -} -.accordion-noborder .accordion-header { - border-width: 0 0 1px; -} -.accordion-noborder .accordion-body { - border-width: 0 0 1px; -} -.accordion-collapse { - background: url('images/accordion_arrows.png') no-repeat 0 0; -} -.accordion-expand { - background: url('images/accordion_arrows.png') no-repeat -16px 0; -} -.accordion { - background: #666; - border-color: #000; -} -.accordion .accordion-header { - background: #3d3d3d; - filter: none; -} -.accordion .accordion-header-selected { - background: #0052A3; -} -.accordion .accordion-header-selected .panel-title { - color: #fff; -} diff --git a/src/main/webapp/js/easyui-1.3.5/themes/black/calendar.css b/src/main/webapp/js/easyui-1.3.5/themes/black/calendar.css deleted file mode 100644 index 514f3e3c..00000000 --- a/src/main/webapp/js/easyui-1.3.5/themes/black/calendar.css +++ /dev/null @@ -1,190 +0,0 @@ -.calendar { - border-width: 1px; - border-style: solid; - padding: 1px; - overflow: hidden; -} -.calendar table { - border-collapse: separate; - font-size: 12px; - width: 100%; - height: 100%; -} -.calendar table td, -.calendar table th { - font-size: 12px; -} -.calendar-noborder { - border: 0; -} -.calendar-header { - position: relative; - height: 22px; -} -.calendar-title { - text-align: center; - height: 22px; -} -.calendar-title span { - position: relative; - display: inline-block; - top: 2px; - padding: 0 3px; - height: 18px; - line-height: 18px; - font-size: 12px; - cursor: pointer; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.calendar-prevmonth, -.calendar-nextmonth, -.calendar-prevyear, -.calendar-nextyear { - position: absolute; - top: 50%; - margin-top: -7px; - width: 14px; - height: 14px; - cursor: pointer; - font-size: 1px; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.calendar-prevmonth { - left: 20px; - background: url('images/calendar_arrows.png') no-repeat -18px -2px; -} -.calendar-nextmonth { - right: 20px; - background: url('images/calendar_arrows.png') no-repeat -34px -2px; -} -.calendar-prevyear { - left: 3px; - background: url('images/calendar_arrows.png') no-repeat -1px -2px; -} -.calendar-nextyear { - right: 3px; - background: url('images/calendar_arrows.png') no-repeat -49px -2px; -} -.calendar-body { - position: relative; -} -.calendar-body th, -.calendar-body td { - text-align: center; -} -.calendar-day { - border: 0; - padding: 1px; - cursor: pointer; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.calendar-other-month { - opacity: 0.3; - filter: alpha(opacity=30); -} -.calendar-menu { - position: absolute; - top: 0; - left: 0; - width: 180px; - height: 150px; - padding: 5px; - font-size: 12px; - display: none; - overflow: hidden; -} -.calendar-menu-year-inner { - text-align: center; - padding-bottom: 5px; -} -.calendar-menu-year { - width: 40px; - text-align: center; - border-width: 1px; - border-style: solid; - margin: 0; - padding: 2px; - font-weight: bold; - font-size: 12px; -} -.calendar-menu-prev, -.calendar-menu-next { - display: inline-block; - width: 21px; - height: 21px; - vertical-align: top; - cursor: pointer; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.calendar-menu-prev { - margin-right: 10px; - background: url('images/calendar_arrows.png') no-repeat 2px 2px; -} -.calendar-menu-next { - margin-left: 10px; - background: url('images/calendar_arrows.png') no-repeat -45px 2px; -} -.calendar-menu-month { - text-align: center; - cursor: pointer; - font-weight: bold; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.calendar-body th, -.calendar-menu-month { - color: #ffffff; -} -.calendar-day { - color: #fff; -} -.calendar-sunday { - color: #CC2222; -} -.calendar-saturday { - color: #00ee00; -} -.calendar-today { - color: #0000ff; -} -.calendar-menu-year { - border-color: #000; -} -.calendar { - border-color: #000; -} -.calendar-header { - background: #3d3d3d; -} -.calendar-body, -.calendar-menu { - background: #666; -} -.calendar-body th { - background: #555; -} -.calendar-hover, -.calendar-nav-hover, -.calendar-menu-hover { - background-color: #777; - color: #fff; -} -.calendar-hover { - border: 1px solid #555; - padding: 0; -} -.calendar-selected { - background-color: #0052A3; - color: #fff; - border: 1px solid #00458a; - padding: 0; -} diff --git a/src/main/webapp/js/easyui-1.3.5/themes/black/combo.css b/src/main/webapp/js/easyui-1.3.5/themes/black/combo.css deleted file mode 100644 index d0af3b7d..00000000 --- a/src/main/webapp/js/easyui-1.3.5/themes/black/combo.css +++ /dev/null @@ -1,58 +0,0 @@ -.combo { - display: inline-block; - white-space: nowrap; - margin: 0; - padding: 0; - border-width: 1px; - border-style: solid; - overflow: hidden; - vertical-align: middle; -} -.combo .combo-text { - font-size: 12px; - border: 0px; - line-height: 20px; - height: 20px; - margin: 0; - padding: 0px 2px; - *margin-top: -1px; - *height: 18px; - *line-height: 18px; - _height: 18px; - _line-height: 18px; - vertical-align: baseline; -} -.combo-arrow { - width: 18px; - height: 20px; - overflow: hidden; - display: inline-block; - vertical-align: top; - cursor: pointer; - opacity: 0.6; - filter: alpha(opacity=60); -} -.combo-arrow-hover { - opacity: 1.0; - filter: alpha(opacity=100); -} -.combo-panel { - overflow: auto; -} -.combo-arrow { - background: url('images/combo_arrow.png') no-repeat center center; -} -.combo, -.combo-panel { - background-color: #666; -} -.combo { - border-color: #000; - background-color: #666; -} -.combo-arrow { - background-color: #3d3d3d; -} -.combo-arrow-hover { - background-color: #777; -} diff --git a/src/main/webapp/js/easyui-1.3.5/themes/black/combobox.css b/src/main/webapp/js/easyui-1.3.5/themes/black/combobox.css deleted file mode 100644 index 284332e0..00000000 --- a/src/main/webapp/js/easyui-1.3.5/themes/black/combobox.css +++ /dev/null @@ -1,24 +0,0 @@ -.combobox-item, -.combobox-group { - font-size: 12px; - padding: 3px; - padding-right: 0px; -} -.combobox-item-disabled { - opacity: 0.5; - filter: alpha(opacity=50); -} -.combobox-gitem { - padding-left: 10px; -} -.combobox-group { - font-weight: bold; -} -.combobox-item-hover { - background-color: #777; - color: #fff; -} -.combobox-item-selected { - background-color: #0052A3; - color: #fff; -} diff --git a/src/main/webapp/js/easyui-1.3.5/themes/black/datagrid.css b/src/main/webapp/js/easyui-1.3.5/themes/black/datagrid.css deleted file mode 100644 index c13f133a..00000000 --- a/src/main/webapp/js/easyui-1.3.5/themes/black/datagrid.css +++ /dev/null @@ -1,260 +0,0 @@ -.datagrid .panel-body { - overflow: hidden; - position: relative; -} -.datagrid-view { - position: relative; - overflow: hidden; -} -.datagrid-view1, -.datagrid-view2 { - position: absolute; - overflow: hidden; - top: 0; -} -.datagrid-view1 { - left: 0; -} -.datagrid-view2 { - right: 0; -} -.datagrid-mask { - position: absolute; - left: 0; - top: 0; - width: 100%; - height: 100%; - opacity: 0.3; - filter: alpha(opacity=30); - display: none; -} -.datagrid-mask-msg { - position: absolute; - top: 50%; - margin-top: -20px; - padding: 12px 5px 10px 30px; - width: auto; - height: 16px; - border-width: 2px; - border-style: solid; - display: none; -} -.datagrid-sort-icon { - padding: 0; -} -.datagrid-toolbar { - height: auto; - padding: 1px 2px; - border-width: 0 0 1px 0; - border-style: solid; -} -.datagrid-btn-separator { - float: left; - height: 24px; - border-left: 1px solid #444; - border-right: 1px solid #777; - margin: 2px 1px; -} -.datagrid .datagrid-pager { - display: block; - margin: 0; - border-width: 1px 0 0 0; - border-style: solid; -} -.datagrid .datagrid-pager-top { - border-width: 0 0 1px 0; -} -.datagrid-header { - overflow: hidden; - cursor: default; - border-width: 0 0 1px 0; - border-style: solid; -} -.datagrid-header-inner { - float: left; - width: 10000px; -} -.datagrid-header-row, -.datagrid-row { - height: 25px; -} -.datagrid-header td, -.datagrid-body td, -.datagrid-footer td { - border-width: 0 1px 1px 0; - border-style: dotted; - margin: 0; - padding: 0; -} -.datagrid-cell, -.datagrid-cell-group, -.datagrid-header-rownumber, -.datagrid-cell-rownumber { - margin: 0; - padding: 0 4px; - white-space: nowrap; - word-wrap: normal; - overflow: hidden; - height: 18px; - line-height: 18px; - font-size: 12px; -} -.datagrid-header .datagrid-cell { - height: auto; -} -.datagrid-header .datagrid-cell span { - font-size: 12px; -} -.datagrid-cell-group { - text-align: center; -} -.datagrid-header-rownumber, -.datagrid-cell-rownumber { - width: 25px; - text-align: center; - margin: 0; - padding: 0; -} -.datagrid-body { - margin: 0; - padding: 0; - overflow: auto; - zoom: 1; -} -.datagrid-view1 .datagrid-body-inner { - padding-bottom: 20px; -} -.datagrid-view1 .datagrid-body { - overflow: hidden; -} -.datagrid-footer { - overflow: hidden; -} -.datagrid-footer-inner { - border-width: 1px 0 0 0; - border-style: solid; - width: 10000px; - float: left; -} -.datagrid-row-editing .datagrid-cell { - height: auto; -} -.datagrid-header-check, -.datagrid-cell-check { - padding: 0; - width: 27px; - height: 18px; - font-size: 1px; - text-align: center; - overflow: hidden; -} -.datagrid-header-check input, -.datagrid-cell-check input { - margin: 0; - padding: 0; - width: 15px; - height: 18px; -} -.datagrid-resize-proxy { - position: absolute; - width: 1px; - height: 10000px; - top: 0; - cursor: e-resize; - display: none; -} -.datagrid-body .datagrid-editable { - margin: 0; - padding: 0; -} -.datagrid-body .datagrid-editable table { - width: 100%; - height: 100%; -} -.datagrid-body .datagrid-editable td { - border: 0; - margin: 0; - padding: 0; -} -.datagrid-body .datagrid-editable .datagrid-editable-input { - margin: 0; - padding: 2px; - border-width: 1px; - border-style: solid; -} -.datagrid-sort-desc .datagrid-sort-icon { - padding: 0 13px 0 0; - background: url('images/datagrid_icons.png') no-repeat -16px center; -} -.datagrid-sort-asc .datagrid-sort-icon { - padding: 0 13px 0 0; - background: url('images/datagrid_icons.png') no-repeat 0px center; -} -.datagrid-row-collapse { - background: url('images/datagrid_icons.png') no-repeat -48px center; -} -.datagrid-row-expand { - background: url('images/datagrid_icons.png') no-repeat -32px center; -} -.datagrid-mask-msg { - background: #666 url('images/loading.gif') no-repeat scroll 5px center; -} -.datagrid-header, -.datagrid-td-rownumber { - background-color: #444; - background: -webkit-linear-gradient(top,#4c4c4c 0,#3f3f3f 100%); - background: -moz-linear-gradient(top,#4c4c4c 0,#3f3f3f 100%); - background: -o-linear-gradient(top,#4c4c4c 0,#3f3f3f 100%); - background: linear-gradient(to bottom,#4c4c4c 0,#3f3f3f 100%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#4c4c4c,endColorstr=#3f3f3f,GradientType=0); -} -.datagrid-cell-rownumber { - color: #fff; -} -.datagrid-resize-proxy { - background: #cccccc; -} -.datagrid-mask { - background: #000; -} -.datagrid-mask-msg { - border-color: #000; -} -.datagrid-toolbar, -.datagrid-pager { - background: #555; -} -.datagrid-header, -.datagrid-toolbar, -.datagrid-pager, -.datagrid-footer-inner { - border-color: #222; -} -.datagrid-header td, -.datagrid-body td, -.datagrid-footer td { - border-color: #222; -} -.datagrid-htable, -.datagrid-btable, -.datagrid-ftable { - color: #fff; - border-collapse: separate; -} -.datagrid-row-alt { - background: #555; -} -.datagrid-row-over, -.datagrid-header td.datagrid-header-over { - background: #777; - color: #fff; - cursor: default; -} -.datagrid-row-selected { - background: #0052A3; - color: #fff; -} -.datagrid-body .datagrid-editable .datagrid-editable-input { - border-color: #000; -} diff --git a/src/main/webapp/js/easyui-1.3.5/themes/black/datebox.css b/src/main/webapp/js/easyui-1.3.5/themes/black/datebox.css deleted file mode 100644 index e368f640..00000000 --- a/src/main/webapp/js/easyui-1.3.5/themes/black/datebox.css +++ /dev/null @@ -1,36 +0,0 @@ -.datebox-calendar-inner { - height: 180px; -} -.datebox-button { - height: 18px; - padding: 2px 5px; - text-align: center; -} -.datebox-button a { - font-size: 12px; - font-weight: bold; - text-decoration: none; - opacity: 0.6; - filter: alpha(opacity=60); -} -.datebox-button a:hover { - opacity: 1.0; - filter: alpha(opacity=100); -} -.datebox-current, -.datebox-close { - float: left; -} -.datebox-close { - float: right; -} -.datebox .combo-arrow { - background-image: url('images/datebox_arrow.png'); - background-position: center center; -} -.datebox-button { - background-color: #555; -} -.datebox-button a { - color: #fff; -} diff --git a/src/main/webapp/js/easyui-1.3.5/themes/black/dialog.css b/src/main/webapp/js/easyui-1.3.5/themes/black/dialog.css deleted file mode 100644 index 4ee224a9..00000000 --- a/src/main/webapp/js/easyui-1.3.5/themes/black/dialog.css +++ /dev/null @@ -1,30 +0,0 @@ -.dialog-content { - overflow: auto; -} -.dialog-toolbar { - padding: 2px 5px; -} -.dialog-tool-separator { - float: left; - height: 24px; - border-left: 1px solid #444; - border-right: 1px solid #777; - margin: 2px 1px; -} -.dialog-button { - padding: 5px; - text-align: right; -} -.dialog-button .l-btn { - margin-left: 5px; -} -.dialog-toolbar, -.dialog-button { - background: #555; -} -.dialog-toolbar { - border-bottom: 1px solid #222; -} -.dialog-button { - border-top: 1px solid #222; -} diff --git a/src/main/webapp/js/easyui-1.3.5/themes/black/easyui.css b/src/main/webapp/js/easyui-1.3.5/themes/black/easyui.css deleted file mode 100644 index 11a0380b..00000000 --- a/src/main/webapp/js/easyui-1.3.5/themes/black/easyui.css +++ /dev/null @@ -1,2322 +0,0 @@ -.panel { - overflow: hidden; - text-align: left; - margin: 0; - border: 0; - -moz-border-radius: 0 0 0 0; - -webkit-border-radius: 0 0 0 0; - border-radius: 0 0 0 0; -} -.panel-header, -.panel-body { - border-width: 1px; - border-style: solid; -} -.panel-header { - padding: 5px; - position: relative; -} -.panel-title { - background: url('images/blank.gif') no-repeat; -} -.panel-header-noborder { - border-width: 0 0 1px 0; -} -.panel-body { - overflow: auto; - border-top-width: 0; - padding: 0; -} -.panel-body-noheader { - border-top-width: 1px; -} -.panel-body-noborder { - border-width: 0px; -} -.panel-with-icon { - padding-left: 18px; -} -.panel-icon, -.panel-tool { - position: absolute; - top: 50%; - margin-top: -8px; - height: 16px; - overflow: hidden; -} -.panel-icon { - left: 5px; - width: 16px; -} -.panel-tool { - right: 5px; - width: auto; -} -.panel-tool a { - display: inline-block; - width: 16px; - height: 16px; - opacity: 0.6; - filter: alpha(opacity=60); - margin: 0 0 0 2px; - vertical-align: top; -} -.panel-tool a:hover { - opacity: 1; - filter: alpha(opacity=100); - background-color: #777; - -moz-border-radius: 3px 3px 3px 3px; - -webkit-border-radius: 3px 3px 3px 3px; - border-radius: 3px 3px 3px 3px; -} -.panel-loading { - padding: 11px 0px 10px 30px; -} -.panel-noscroll { - overflow: hidden; -} -.panel-fit, -.panel-fit body { - height: 100%; - margin: 0; - padding: 0; - border: 0; - overflow: hidden; -} -.panel-loading { - background: url('images/loading.gif') no-repeat 10px 10px; -} -.panel-tool-close { - background: url('images/panel_tools.png') no-repeat -16px 0px; -} -.panel-tool-min { - background: url('images/panel_tools.png') no-repeat 0px 0px; -} -.panel-tool-max { - background: url('images/panel_tools.png') no-repeat 0px -16px; -} -.panel-tool-restore { - background: url('images/panel_tools.png') no-repeat -16px -16px; -} -.panel-tool-collapse { - background: url('images/panel_tools.png') no-repeat -32px 0; -} -.panel-tool-expand { - background: url('images/panel_tools.png') no-repeat -32px -16px; -} -.panel-header, -.panel-body { - border-color: #000; -} -.panel-header { - background-color: #3d3d3d; - background: -webkit-linear-gradient(top,#454545 0,#383838 100%); - background: -moz-linear-gradient(top,#454545 0,#383838 100%); - background: -o-linear-gradient(top,#454545 0,#383838 100%); - background: linear-gradient(to bottom,#454545 0,#383838 100%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#454545,endColorstr=#383838,GradientType=0); -} -.panel-body { - background-color: #666; - color: #fff; - font-size: 12px; -} -.panel-title { - font-size: 12px; - font-weight: bold; - color: #fff; - height: 16px; - line-height: 16px; -} -.accordion { - overflow: hidden; - border-width: 1px; - border-style: solid; -} -.accordion .accordion-header { - border-width: 0 0 1px; - cursor: pointer; -} -.accordion .accordion-body { - border-width: 0 0 1px; -} -.accordion-noborder { - border-width: 0; -} -.accordion-noborder .accordion-header { - border-width: 0 0 1px; -} -.accordion-noborder .accordion-body { - border-width: 0 0 1px; -} -.accordion-collapse { - background: url('images/accordion_arrows.png') no-repeat 0 0; -} -.accordion-expand { - background: url('images/accordion_arrows.png') no-repeat -16px 0; -} -.accordion { - background: #666; - border-color: #000; -} -.accordion .accordion-header { - background: #3d3d3d; - filter: none; -} -.accordion .accordion-header-selected { - background: #0052A3; -} -.accordion .accordion-header-selected .panel-title { - color: #fff; -} -.window { - overflow: hidden; - padding: 5px; - border-width: 1px; - border-style: solid; -} -.window .window-header { - background: transparent; - padding: 0px 0px 6px 0px; -} -.window .window-body { - border-width: 1px; - border-style: solid; - border-top-width: 0px; -} -.window .window-body-noheader { - border-top-width: 1px; -} -.window .window-header .panel-icon, -.window .window-header .panel-tool { - top: 50%; - margin-top: -11px; -} -.window .window-header .panel-icon { - left: 1px; -} -.window .window-header .panel-tool { - right: 1px; -} -.window .window-header .panel-with-icon { - padding-left: 18px; -} -.window-proxy { - position: absolute; - overflow: hidden; -} -.window-proxy-mask { - position: absolute; - filter: alpha(opacity=5); - opacity: 0.05; -} -.window-mask { - position: absolute; - left: 0; - top: 0; - width: 100%; - height: 100%; - filter: alpha(opacity=40); - opacity: 0.40; - font-size: 1px; - *zoom: 1; - overflow: hidden; -} -.window, -.window-shadow { - position: absolute; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.window-shadow { - background: #777; - -moz-box-shadow: 2px 2px 3px #787878; - -webkit-box-shadow: 2px 2px 3px #787878; - box-shadow: 2px 2px 3px #787878; - filter: progid:DXImageTransform.Microsoft.Blur(pixelRadius=2,MakeShadow=false,ShadowOpacity=0.2); -} -.window, -.window .window-body { - border-color: #000; -} -.window { - background-color: #3d3d3d; - background: -webkit-linear-gradient(top,#454545 0,#383838 20%); - background: -moz-linear-gradient(top,#454545 0,#383838 20%); - background: -o-linear-gradient(top,#454545 0,#383838 20%); - background: linear-gradient(to bottom,#454545 0,#383838 20%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#454545,endColorstr=#383838,GradientType=0); -} -.window-proxy { - border: 1px dashed #000; -} -.window-proxy-mask, -.window-mask { - background: #000; -} -.dialog-content { - overflow: auto; -} -.dialog-toolbar { - padding: 2px 5px; -} -.dialog-tool-separator { - float: left; - height: 24px; - border-left: 1px solid #444; - border-right: 1px solid #777; - margin: 2px 1px; -} -.dialog-button { - padding: 5px; - text-align: right; -} -.dialog-button .l-btn { - margin-left: 5px; -} -.dialog-toolbar, -.dialog-button { - background: #555; -} -.dialog-toolbar { - border-bottom: 1px solid #222; -} -.dialog-button { - border-top: 1px solid #222; -} -.combo { - display: inline-block; - white-space: nowrap; - margin: 0; - padding: 0; - border-width: 1px; - border-style: solid; - overflow: hidden; - vertical-align: middle; -} -.combo .combo-text { - font-size: 12px; - border: 0px; - line-height: 20px; - height: 20px; - margin: 0; - padding: 0px 2px; - *margin-top: -1px; - *height: 18px; - *line-height: 18px; - _height: 18px; - _line-height: 18px; - vertical-align: baseline; -} -.combo-arrow { - width: 18px; - height: 20px; - overflow: hidden; - display: inline-block; - vertical-align: top; - cursor: pointer; - opacity: 0.6; - filter: alpha(opacity=60); -} -.combo-arrow-hover { - opacity: 1.0; - filter: alpha(opacity=100); -} -.combo-panel { - overflow: auto; -} -.combo-arrow { - background: url('images/combo_arrow.png') no-repeat center center; -} -.combo, -.combo-panel { - background-color: #666; -} -.combo { - border-color: #000; - background-color: #666; -} -.combo-arrow { - background-color: #3d3d3d; -} -.combo-arrow-hover { - background-color: #777; -} -.combobox-item, -.combobox-group { - font-size: 12px; - padding: 3px; - padding-right: 0px; -} -.combobox-item-disabled { - opacity: 0.5; - filter: alpha(opacity=50); -} -.combobox-gitem { - padding-left: 10px; -} -.combobox-group { - font-weight: bold; -} -.combobox-item-hover { - background-color: #777; - color: #fff; -} -.combobox-item-selected { - background-color: #0052A3; - color: #fff; -} -.layout { - position: relative; - overflow: hidden; - margin: 0; - padding: 0; - z-index: 0; -} -.layout-panel { - position: absolute; - overflow: hidden; -} -.layout-panel-east, -.layout-panel-west { - z-index: 2; -} -.layout-panel-north, -.layout-panel-south { - z-index: 3; -} -.layout-expand { - position: absolute; - padding: 0px; - font-size: 1px; - cursor: pointer; - z-index: 1; -} -.layout-expand .panel-header, -.layout-expand .panel-body { - background: transparent; - filter: none; - overflow: hidden; -} -.layout-expand .panel-header { - border-bottom-width: 0px; -} -.layout-split-proxy-h, -.layout-split-proxy-v { - position: absolute; - font-size: 1px; - display: none; - z-index: 5; -} -.layout-split-proxy-h { - width: 5px; - cursor: e-resize; -} -.layout-split-proxy-v { - height: 5px; - cursor: n-resize; -} -.layout-mask { - position: absolute; - background: #fafafa; - filter: alpha(opacity=10); - opacity: 0.10; - z-index: 4; -} -.layout-button-up { - background: url('images/layout_arrows.png') no-repeat -16px -16px; -} -.layout-button-down { - background: url('images/layout_arrows.png') no-repeat -16px 0; -} -.layout-button-left { - background: url('images/layout_arrows.png') no-repeat 0 0; -} -.layout-button-right { - background: url('images/layout_arrows.png') no-repeat 0 -16px; -} -.layout-split-proxy-h, -.layout-split-proxy-v { - background-color: #cccccc; -} -.layout-split-north { - border-bottom: 5px solid #444; -} -.layout-split-south { - border-top: 5px solid #444; -} -.layout-split-east { - border-left: 5px solid #444; -} -.layout-split-west { - border-right: 5px solid #444; -} -.layout-expand { - background-color: #3d3d3d; -} -.layout-expand-over { - background-color: #3d3d3d; -} -.tabs-container { - overflow: hidden; -} -.tabs-header { - border-width: 1px; - border-style: solid; - border-bottom-width: 0; - position: relative; - padding: 0; - padding-top: 2px; - overflow: hidden; -} -.tabs-header-plain { - border: 0; - background: transparent; -} -.tabs-scroller-left, -.tabs-scroller-right { - position: absolute; - top: auto; - bottom: 0; - width: 18px; - font-size: 1px; - display: none; - cursor: pointer; - border-width: 1px; - border-style: solid; -} -.tabs-scroller-left { - left: 0; -} -.tabs-scroller-right { - right: 0; -} -.tabs-tool { - position: absolute; - bottom: 0; - padding: 1px; - overflow: hidden; - border-width: 1px; - border-style: solid; -} -.tabs-header-plain .tabs-tool { - padding: 0 1px; -} -.tabs-wrap { - position: relative; - left: 0; - overflow: hidden; - width: 100%; - margin: 0; - padding: 0; -} -.tabs-scrolling { - margin-left: 18px; - margin-right: 18px; -} -.tabs-disabled { - opacity: 0.3; - filter: alpha(opacity=30); -} -.tabs { - list-style-type: none; - height: 26px; - margin: 0px; - padding: 0px; - padding-left: 4px; - width: 5000px; - border-style: solid; - border-width: 0 0 1px 0; -} -.tabs li { - float: left; - display: inline-block; - margin: 0 4px -1px 0; - padding: 0; - position: relative; - border: 0; -} -.tabs li a.tabs-inner { - display: inline-block; - text-decoration: none; - margin: 0; - padding: 0 10px; - height: 25px; - line-height: 25px; - text-align: center; - white-space: nowrap; - border-width: 1px; - border-style: solid; - -moz-border-radius: 5px 5px 0 0; - -webkit-border-radius: 5px 5px 0 0; - border-radius: 5px 5px 0 0; -} -.tabs li.tabs-selected a.tabs-inner { - font-weight: bold; - outline: none; -} -.tabs li.tabs-selected a:hover.tabs-inner { - cursor: default; - pointer: default; -} -.tabs li a.tabs-close, -.tabs-p-tool { - position: absolute; - font-size: 1px; - display: block; - height: 12px; - padding: 0; - top: 50%; - margin-top: -6px; - overflow: hidden; -} -.tabs li a.tabs-close { - width: 12px; - right: 5px; - opacity: 0.6; - filter: alpha(opacity=60); -} -.tabs-p-tool { - right: 16px; -} -.tabs-p-tool a { - display: inline-block; - font-size: 1px; - width: 12px; - height: 12px; - margin: 0; - opacity: 0.6; - filter: alpha(opacity=60); -} -.tabs li a:hover.tabs-close, -.tabs-p-tool a:hover { - opacity: 1; - filter: alpha(opacity=100); - cursor: hand; - cursor: pointer; -} -.tabs-with-icon { - padding-left: 18px; -} -.tabs-icon { - position: absolute; - width: 16px; - height: 16px; - left: 10px; - top: 50%; - margin-top: -8px; -} -.tabs-title { - font-size: 12px; -} -.tabs-closable { - padding-right: 8px; -} -.tabs-panels { - margin: 0px; - padding: 0px; - border-width: 1px; - border-style: solid; - border-top-width: 0; - overflow: hidden; -} -.tabs-header-bottom { - border-width: 0 1px 1px 1px; - padding: 0 0 2px 0; -} -.tabs-header-bottom .tabs { - border-width: 1px 0 0 0; -} -.tabs-header-bottom .tabs li { - margin: -1px 4px 0 0; -} -.tabs-header-bottom .tabs li a.tabs-inner { - -moz-border-radius: 0 0 5px 5px; - -webkit-border-radius: 0 0 5px 5px; - border-radius: 0 0 5px 5px; -} -.tabs-header-bottom .tabs-tool { - top: 0; -} -.tabs-header-bottom .tabs-scroller-left, -.tabs-header-bottom .tabs-scroller-right { - top: 0; - bottom: auto; -} -.tabs-panels-top { - border-width: 1px 1px 0 1px; -} -.tabs-header-left { - float: left; - border-width: 1px 0 1px 1px; - padding: 0; -} -.tabs-header-right { - float: right; - border-width: 1px 1px 1px 0; - padding: 0; -} -.tabs-header-left .tabs-wrap, -.tabs-header-right .tabs-wrap { - height: 100%; -} -.tabs-header-left .tabs { - height: 100%; - padding: 4px 0 0 4px; - border-width: 0 1px 0 0; -} -.tabs-header-right .tabs { - height: 100%; - padding: 4px 4px 0 0; - border-width: 0 0 0 1px; -} -.tabs-header-left .tabs li, -.tabs-header-right .tabs li { - display: block; - width: 100%; - position: relative; -} -.tabs-header-left .tabs li { - left: auto; - right: 0; - margin: 0 -1px 4px 0; - float: right; -} -.tabs-header-right .tabs li { - left: 0; - right: auto; - margin: 0 0 4px -1px; - float: left; -} -.tabs-header-left .tabs li a.tabs-inner { - display: block; - text-align: left; - -moz-border-radius: 5px 0 0 5px; - -webkit-border-radius: 5px 0 0 5px; - border-radius: 5px 0 0 5px; -} -.tabs-header-right .tabs li a.tabs-inner { - display: block; - text-align: left; - -moz-border-radius: 0 5px 5px 0; - -webkit-border-radius: 0 5px 5px 0; - border-radius: 0 5px 5px 0; -} -.tabs-panels-right { - float: right; - border-width: 1px 1px 1px 0; -} -.tabs-panels-left { - float: left; - border-width: 1px 0 1px 1px; -} -.tabs-header-noborder, -.tabs-panels-noborder { - border: 0px; -} -.tabs-header-plain { - border: 0px; - background: transparent; -} -.tabs-scroller-left { - background: #3d3d3d url('images/tabs_icons.png') no-repeat 1px center; -} -.tabs-scroller-right { - background: #3d3d3d url('images/tabs_icons.png') no-repeat -15px center; -} -.tabs li a.tabs-close { - background: url('images/tabs_icons.png') no-repeat -34px center; -} -.tabs li a.tabs-inner:hover { - background: #777; - color: #fff; - filter: none; -} -.tabs li.tabs-selected a.tabs-inner { - background-color: #666; - color: #fff; - background: -webkit-linear-gradient(top,#454545 0,#666 100%); - background: -moz-linear-gradient(top,#454545 0,#666 100%); - background: -o-linear-gradient(top,#454545 0,#666 100%); - background: linear-gradient(to bottom,#454545 0,#666 100%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#454545,endColorstr=#666,GradientType=0); -} -.tabs-header-bottom .tabs li.tabs-selected a.tabs-inner { - background: -webkit-linear-gradient(top,#666 0,#454545 100%); - background: -moz-linear-gradient(top,#666 0,#454545 100%); - background: -o-linear-gradient(top,#666 0,#454545 100%); - background: linear-gradient(to bottom,#666 0,#454545 100%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#666,endColorstr=#454545,GradientType=0); -} -.tabs-header-left .tabs li.tabs-selected a.tabs-inner { - background: -webkit-linear-gradient(left,#454545 0,#666 100%); - background: -moz-linear-gradient(left,#454545 0,#666 100%); - background: -o-linear-gradient(left,#454545 0,#666 100%); - background: linear-gradient(to right,#454545 0,#666 100%); - background-repeat: repeat-y; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#454545,endColorstr=#666,GradientType=1); -} -.tabs-header-right .tabs li.tabs-selected a.tabs-inner { - background: -webkit-linear-gradient(left,#666 0,#454545 100%); - background: -moz-linear-gradient(left,#666 0,#454545 100%); - background: -o-linear-gradient(left,#666 0,#454545 100%); - background: linear-gradient(to right,#666 0,#454545 100%); - background-repeat: repeat-y; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#666,endColorstr=#454545,GradientType=1); -} -.tabs li a.tabs-inner { - color: #fff; - background-color: #3d3d3d; - background: -webkit-linear-gradient(top,#454545 0,#383838 100%); - background: -moz-linear-gradient(top,#454545 0,#383838 100%); - background: -o-linear-gradient(top,#454545 0,#383838 100%); - background: linear-gradient(to bottom,#454545 0,#383838 100%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#454545,endColorstr=#383838,GradientType=0); -} -.tabs-header, -.tabs-tool { - background-color: #3d3d3d; -} -.tabs-header-plain { - background: transparent; -} -.tabs-header, -.tabs-scroller-left, -.tabs-scroller-right, -.tabs-tool, -.tabs, -.tabs-panels, -.tabs li a.tabs-inner, -.tabs li.tabs-selected a.tabs-inner, -.tabs-header-bottom .tabs li.tabs-selected a.tabs-inner, -.tabs-header-left .tabs li.tabs-selected a.tabs-inner, -.tabs-header-right .tabs li.tabs-selected a.tabs-inner { - border-color: #000; -} -.tabs-p-tool a:hover, -.tabs li a:hover.tabs-close, -.tabs-scroller-over { - background-color: #777; -} -.tabs li.tabs-selected a.tabs-inner { - border-bottom: 1px solid #666; -} -.tabs-header-bottom .tabs li.tabs-selected a.tabs-inner { - border-top: 1px solid #666; -} -.tabs-header-left .tabs li.tabs-selected a.tabs-inner { - border-right: 1px solid #666; -} -.tabs-header-right .tabs li.tabs-selected a.tabs-inner { - border-left: 1px solid #666; -} -a.l-btn { - background-position: right 0; - text-decoration: none; - display: inline-block; - zoom: 1; - height: 24px; - padding-right: 18px; - cursor: pointer; - outline: none; -} -a.l-btn-plain { - border: 0; - padding: 1px 6px 1px 1px; -} -a.l-btn-disabled { - color: #ccc; - opacity: 0.5; - filter: alpha(opacity=50); - cursor: default; -} -a.l-btn span.l-btn-left { - display: inline-block; - background-position: 0 -48px; - padding: 0 0 0 18px; - line-height: 24px; - height: 24px; -} -a.l-btn-plain span.l-btn-left { - padding-left: 5px; -} -a.l-btn span span.l-btn-text { - position: relative; - display: inline-block; - vertical-align: top; - top: 4px; - width: auto; - height: 16px; - line-height: 16px; - font-size: 12px; - padding: 0; - margin: 0; -} -a.l-btn span span.l-btn-icon-left { - padding: 0 0 0 20px; - background-position: left center; -} -a.l-btn span span.l-btn-icon-right { - padding: 0 20px 0 0; - background-position: right center; -} -a.l-btn span span span.l-btn-empty { - display: inline-block; - margin: 0; - padding: 0; - width: 16px; -} -a:hover.l-btn { - background-position: right -24px; - outline: none; - text-decoration: none; -} -a:hover.l-btn span.l-btn-left { - background-position: 0 bottom; -} -a:hover.l-btn-plain { - padding: 0 5px 0 0; -} -a:hover.l-btn-disabled { - background-position: right 0; -} -a:hover.l-btn-disabled span.l-btn-left { - background-position: 0 -48px; -} -a.l-btn .l-btn-focus { - outline: #0000FF dotted thin; -} -a.l-btn { - color: #fff; - background-image: url('images/linkbutton_bg.png'); - background-repeat: no-repeat; - background: #777; - background-repeat: repeat-x; - border: 1px solid #555; - background: -webkit-linear-gradient(top,#919191 0,#6a6a6a 100%); - background: -moz-linear-gradient(top,#919191 0,#6a6a6a 100%); - background: -o-linear-gradient(top,#919191 0,#6a6a6a 100%); - background: linear-gradient(to bottom,#919191 0,#6a6a6a 100%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#919191,endColorstr=#6a6a6a,GradientType=0); - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -a.l-btn span.l-btn-left { - background-image: url('images/linkbutton_bg.png'); - background-repeat: no-repeat; - background-image: none; -} -a:hover.l-btn { - background: #777; - color: #fff; - border: 1px solid #555; - filter: none; -} -a.l-btn-plain, -a.l-btn-plain span.l-btn-left { - background: transparent; - border: 0; - filter: none; -} -a:hover.l-btn-plain { - background: #777; - color: #fff; - border: 1px solid #555; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -a.l-btn-disabled, -a:hover.l-btn-disabled { - color: #fff; - filter: alpha(opacity=50); - background: #777; - color: #fff; - background: -webkit-linear-gradient(top,#919191 0,#6a6a6a 100%); - background: -moz-linear-gradient(top,#919191 0,#6a6a6a 100%); - background: -o-linear-gradient(top,#919191 0,#6a6a6a 100%); - background: linear-gradient(to bottom,#919191 0,#6a6a6a 100%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#919191,endColorstr=#6a6a6a,GradientType=0); - filter: alpha(opacity=50) progid:DXImageTransform.Microsoft.gradient(startColorstr=#919191,endColorstr=#6a6a6a,GradientType=0); -} -a.l-btn-plain-disabled, -a:hover.l-btn-plain-disabled { - background: transparent; - filter: alpha(opacity=50); -} -a.l-btn-selected, -a:hover.l-btn-selected { - background-position: right -24px; - background: #000; - filter: none; -} -a.l-btn-selected span.l-btn-left, -a:hover.l-btn-selected span.l-btn-left { - background-position: 0 bottom; - background-image: none; -} -a.l-btn-plain-selected, -a:hover.l-btn-plain-selected { - background: #000; -} -.datagrid .panel-body { - overflow: hidden; - position: relative; -} -.datagrid-view { - position: relative; - overflow: hidden; -} -.datagrid-view1, -.datagrid-view2 { - position: absolute; - overflow: hidden; - top: 0; -} -.datagrid-view1 { - left: 0; -} -.datagrid-view2 { - right: 0; -} -.datagrid-mask { - position: absolute; - left: 0; - top: 0; - width: 100%; - height: 100%; - opacity: 0.3; - filter: alpha(opacity=30); - display: none; -} -.datagrid-mask-msg { - position: absolute; - top: 50%; - margin-top: -20px; - padding: 12px 5px 10px 30px; - width: auto; - height: 16px; - border-width: 2px; - border-style: solid; - display: none; -} -.datagrid-sort-icon { - padding: 0; -} -.datagrid-toolbar { - height: auto; - padding: 1px 2px; - border-width: 0 0 1px 0; - border-style: solid; -} -.datagrid-btn-separator { - float: left; - height: 24px; - border-left: 1px solid #444; - border-right: 1px solid #777; - margin: 2px 1px; -} -.datagrid .datagrid-pager { - display: block; - margin: 0; - border-width: 1px 0 0 0; - border-style: solid; -} -.datagrid .datagrid-pager-top { - border-width: 0 0 1px 0; -} -.datagrid-header { - overflow: hidden; - cursor: default; - border-width: 0 0 1px 0; - border-style: solid; -} -.datagrid-header-inner { - float: left; - width: 10000px; -} -.datagrid-header-row, -.datagrid-row { - height: 25px; -} -.datagrid-header td, -.datagrid-body td, -.datagrid-footer td { - border-width: 0 1px 1px 0; - border-style: dotted; - margin: 0; - padding: 0; -} -.datagrid-cell, -.datagrid-cell-group, -.datagrid-header-rownumber, -.datagrid-cell-rownumber { - margin: 0; - padding: 0 4px; - white-space: nowrap; - word-wrap: normal; - overflow: hidden; - height: 18px; - line-height: 18px; - font-size: 12px; -} -.datagrid-header .datagrid-cell { - height: auto; -} -.datagrid-header .datagrid-cell span { - font-size: 12px; -} -.datagrid-cell-group { - text-align: center; -} -.datagrid-header-rownumber, -.datagrid-cell-rownumber { - width: 25px; - text-align: center; - margin: 0; - padding: 0; -} -.datagrid-body { - margin: 0; - padding: 0; - overflow: auto; - zoom: 1; -} -.datagrid-view1 .datagrid-body-inner { - padding-bottom: 20px; -} -.datagrid-view1 .datagrid-body { - overflow: hidden; -} -.datagrid-footer { - overflow: hidden; -} -.datagrid-footer-inner { - border-width: 1px 0 0 0; - border-style: solid; - width: 10000px; - float: left; -} -.datagrid-row-editing .datagrid-cell { - height: auto; -} -.datagrid-header-check, -.datagrid-cell-check { - padding: 0; - width: 27px; - height: 18px; - font-size: 1px; - text-align: center; - overflow: hidden; -} -.datagrid-header-check input, -.datagrid-cell-check input { - margin: 0; - padding: 0; - width: 15px; - height: 18px; -} -.datagrid-resize-proxy { - position: absolute; - width: 1px; - height: 10000px; - top: 0; - cursor: e-resize; - display: none; -} -.datagrid-body .datagrid-editable { - margin: 0; - padding: 0; -} -.datagrid-body .datagrid-editable table { - width: 100%; - height: 100%; -} -.datagrid-body .datagrid-editable td { - border: 0; - margin: 0; - padding: 0; -} -.datagrid-body .datagrid-editable .datagrid-editable-input { - margin: 0; - padding: 2px; - border-width: 1px; - border-style: solid; -} -.datagrid-sort-desc .datagrid-sort-icon { - padding: 0 13px 0 0; - background: url('images/datagrid_icons.png') no-repeat -16px center; -} -.datagrid-sort-asc .datagrid-sort-icon { - padding: 0 13px 0 0; - background: url('images/datagrid_icons.png') no-repeat 0px center; -} -.datagrid-row-collapse { - background: url('images/datagrid_icons.png') no-repeat -48px center; -} -.datagrid-row-expand { - background: url('images/datagrid_icons.png') no-repeat -32px center; -} -.datagrid-mask-msg { - background: #666 url('images/loading.gif') no-repeat scroll 5px center; -} -.datagrid-header, -.datagrid-td-rownumber { - background-color: #444; - background: -webkit-linear-gradient(top,#4c4c4c 0,#3f3f3f 100%); - background: -moz-linear-gradient(top,#4c4c4c 0,#3f3f3f 100%); - background: -o-linear-gradient(top,#4c4c4c 0,#3f3f3f 100%); - background: linear-gradient(to bottom,#4c4c4c 0,#3f3f3f 100%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#4c4c4c,endColorstr=#3f3f3f,GradientType=0); -} -.datagrid-cell-rownumber { - color: #fff; -} -.datagrid-resize-proxy { - background: #cccccc; -} -.datagrid-mask { - background: #000; -} -.datagrid-mask-msg { - border-color: #000; -} -.datagrid-toolbar, -.datagrid-pager { - background: #555; -} -.datagrid-header, -.datagrid-toolbar, -.datagrid-pager, -.datagrid-footer-inner { - border-color: #222; -} -.datagrid-header td, -.datagrid-body td, -.datagrid-footer td { - border-color: #222; -} -.datagrid-htable, -.datagrid-btable, -.datagrid-ftable { - color: #fff; - border-collapse: separate; -} -.datagrid-row-alt { - background: #555; -} -.datagrid-row-over, -.datagrid-header td.datagrid-header-over { - background: #777; - color: #fff; - cursor: default; -} -.datagrid-row-selected { - background: #0052A3; - color: #fff; -} -.datagrid-body .datagrid-editable .datagrid-editable-input { - border-color: #000; -} -.propertygrid .datagrid-view1 .datagrid-body td { - padding-bottom: 1px; - border-width: 0 1px 0 0; -} -.propertygrid .datagrid-group { - height: 21px; - overflow: hidden; - border-width: 0 0 1px 0; - border-style: solid; -} -.propertygrid .datagrid-group span { - font-weight: bold; -} -.propertygrid .datagrid-view1 .datagrid-body td { - border-color: #222; -} -.propertygrid .datagrid-view1 .datagrid-group { - border-color: #3d3d3d; -} -.propertygrid .datagrid-view2 .datagrid-group { - border-color: #222; -} -.propertygrid .datagrid-group, -.propertygrid .datagrid-view1 .datagrid-body, -.propertygrid .datagrid-view1 .datagrid-row-over, -.propertygrid .datagrid-view1 .datagrid-row-selected { - background: #3d3d3d; -} -.pagination { - zoom: 1; -} -.pagination table { - float: left; - height: 30px; -} -.pagination td { - border: 0; -} -.pagination-btn-separator { - float: left; - height: 24px; - border-left: 1px solid #444; - border-right: 1px solid #777; - margin: 3px 1px; -} -.pagination .pagination-num { - border-width: 1px; - border-style: solid; - margin: 0 2px; - padding: 2px; - width: 2em; - height: auto; -} -.pagination-page-list { - margin: 0px 6px; - padding: 1px 2px; - width: auto; - height: auto; - border-width: 1px; - border-style: solid; -} -.pagination-info { - float: right; - margin: 0 6px 0 0; - padding: 0; - height: 30px; - line-height: 30px; - font-size: 12px; -} -.pagination span { - font-size: 12px; -} -a.pagination-link { - padding: 1px; -} -a.pagination-link span.l-btn-left { - padding-left: 0; -} -a.pagination-link span span.l-btn-text { - width: 24px; - text-align: center; -} -a:hover.pagination-link { - padding: 0; -} -.pagination-first { - background: url('images/pagination_icons.png') no-repeat 0 center; -} -.pagination-prev { - background: url('images/pagination_icons.png') no-repeat -16px center; -} -.pagination-next { - background: url('images/pagination_icons.png') no-repeat -32px center; -} -.pagination-last { - background: url('images/pagination_icons.png') no-repeat -48px center; -} -.pagination-load { - background: url('images/pagination_icons.png') no-repeat -64px center; -} -.pagination-loading { - background: url('images/loading.gif') no-repeat center center; -} -.pagination-page-list, -.pagination .pagination-num { - border-color: #000; -} -.calendar { - border-width: 1px; - border-style: solid; - padding: 1px; - overflow: hidden; -} -.calendar table { - border-collapse: separate; - font-size: 12px; - width: 100%; - height: 100%; -} -.calendar table td, -.calendar table th { - font-size: 12px; -} -.calendar-noborder { - border: 0; -} -.calendar-header { - position: relative; - height: 22px; -} -.calendar-title { - text-align: center; - height: 22px; -} -.calendar-title span { - position: relative; - display: inline-block; - top: 2px; - padding: 0 3px; - height: 18px; - line-height: 18px; - font-size: 12px; - cursor: pointer; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.calendar-prevmonth, -.calendar-nextmonth, -.calendar-prevyear, -.calendar-nextyear { - position: absolute; - top: 50%; - margin-top: -7px; - width: 14px; - height: 14px; - cursor: pointer; - font-size: 1px; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.calendar-prevmonth { - left: 20px; - background: url('images/calendar_arrows.png') no-repeat -18px -2px; -} -.calendar-nextmonth { - right: 20px; - background: url('images/calendar_arrows.png') no-repeat -34px -2px; -} -.calendar-prevyear { - left: 3px; - background: url('images/calendar_arrows.png') no-repeat -1px -2px; -} -.calendar-nextyear { - right: 3px; - background: url('images/calendar_arrows.png') no-repeat -49px -2px; -} -.calendar-body { - position: relative; -} -.calendar-body th, -.calendar-body td { - text-align: center; -} -.calendar-day { - border: 0; - padding: 1px; - cursor: pointer; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.calendar-other-month { - opacity: 0.3; - filter: alpha(opacity=30); -} -.calendar-menu { - position: absolute; - top: 0; - left: 0; - width: 180px; - height: 150px; - padding: 5px; - font-size: 12px; - display: none; - overflow: hidden; -} -.calendar-menu-year-inner { - text-align: center; - padding-bottom: 5px; -} -.calendar-menu-year { - width: 40px; - text-align: center; - border-width: 1px; - border-style: solid; - margin: 0; - padding: 2px; - font-weight: bold; - font-size: 12px; -} -.calendar-menu-prev, -.calendar-menu-next { - display: inline-block; - width: 21px; - height: 21px; - vertical-align: top; - cursor: pointer; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.calendar-menu-prev { - margin-right: 10px; - background: url('images/calendar_arrows.png') no-repeat 2px 2px; -} -.calendar-menu-next { - margin-left: 10px; - background: url('images/calendar_arrows.png') no-repeat -45px 2px; -} -.calendar-menu-month { - text-align: center; - cursor: pointer; - font-weight: bold; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.calendar-body th, -.calendar-menu-month { - color: #ffffff; -} -.calendar-day { - color: #fff; -} -.calendar-sunday { - color: #CC2222; -} -.calendar-saturday { - color: #00ee00; -} -.calendar-today { - color: #0000ff; -} -.calendar-menu-year { - border-color: #000; -} -.calendar { - border-color: #000; -} -.calendar-header { - background: #3d3d3d; -} -.calendar-body, -.calendar-menu { - background: #666; -} -.calendar-body th { - background: #555; -} -.calendar-hover, -.calendar-nav-hover, -.calendar-menu-hover { - background-color: #777; - color: #fff; -} -.calendar-hover { - border: 1px solid #555; - padding: 0; -} -.calendar-selected { - background-color: #0052A3; - color: #fff; - border: 1px solid #00458a; - padding: 0; -} -.datebox-calendar-inner { - height: 180px; -} -.datebox-button { - height: 18px; - padding: 2px 5px; - text-align: center; -} -.datebox-button a { - font-size: 12px; - font-weight: bold; - text-decoration: none; - opacity: 0.6; - filter: alpha(opacity=60); -} -.datebox-button a:hover { - opacity: 1.0; - filter: alpha(opacity=100); -} -.datebox-current, -.datebox-close { - float: left; -} -.datebox-close { - float: right; -} -.datebox .combo-arrow { - background-image: url('images/datebox_arrow.png'); - background-position: center center; -} -.datebox-button { - background-color: #555; -} -.datebox-button a { - color: #fff; -} -.spinner { - display: inline-block; - white-space: nowrap; - margin: 0; - padding: 0; - border-width: 1px; - border-style: solid; - overflow: hidden; - vertical-align: middle; -} -.spinner .spinner-text { - font-size: 12px; - border: 0px; - line-height: 20px; - height: 20px; - margin: 0; - padding: 0 2px; - *margin-top: -1px; - *height: 18px; - *line-height: 18px; - _height: 18px; - _line-height: 18px; - vertical-align: baseline; -} -.spinner-arrow { - display: inline-block; - overflow: hidden; - vertical-align: top; - margin: 0; - padding: 0; -} -.spinner-arrow-up, -.spinner-arrow-down { - opacity: 0.6; - filter: alpha(opacity=60); - display: block; - font-size: 1px; - width: 18px; - height: 10px; -} -.spinner-arrow-hover { - opacity: 1.0; - filter: alpha(opacity=100); -} -.spinner-arrow-up { - background: url('images/spinner_arrows.png') no-repeat 1px center; -} -.spinner-arrow-down { - background: url('images/spinner_arrows.png') no-repeat -15px center; -} -.spinner { - border-color: #000; -} -.spinner-arrow { - background-color: #3d3d3d; -} -.spinner-arrow-hover { - background-color: #777; -} -.progressbar { - border-width: 1px; - border-style: solid; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; - overflow: hidden; - position: relative; -} -.progressbar-text { - text-align: center; - position: absolute; -} -.progressbar-value { - position: relative; - overflow: hidden; - width: 0; - -moz-border-radius: 5px 0 0 5px; - -webkit-border-radius: 5px 0 0 5px; - border-radius: 5px 0 0 5px; -} -.progressbar { - border-color: #000; -} -.progressbar-text { - color: #fff; - font-size: 12px; -} -.progressbar-value .progressbar-text { - background-color: #0052A3; - color: #fff; -} -.searchbox { - display: inline-block; - white-space: nowrap; - margin: 0; - padding: 0; - border-width: 1px; - border-style: solid; - overflow: hidden; -} -.searchbox .searchbox-text { - font-size: 12px; - border: 0; - margin: 0; - padding: 0; - line-height: 20px; - height: 20px; - *margin-top: -1px; - *height: 18px; - *line-height: 18px; - _height: 18px; - _line-height: 18px; - vertical-align: baseline; -} -.searchbox .searchbox-prompt { - font-size: 12px; - color: #ccc; -} -.searchbox-button { - width: 18px; - height: 20px; - overflow: hidden; - display: inline-block; - vertical-align: top; - cursor: pointer; - opacity: 0.6; - filter: alpha(opacity=60); -} -.searchbox-button-hover { - opacity: 1.0; - filter: alpha(opacity=100); -} -.searchbox a.l-btn-plain { - height: 20px; - border: 0; - padding: 0 6px 0 0; - vertical-align: top; - opacity: 0.6; - filter: alpha(opacity=60); - -moz-border-radius: 0 0 0 0; - -webkit-border-radius: 0 0 0 0; - border-radius: 0 0 0 0; -} -.searchbox a.l-btn .l-btn-left { - padding: 0 0 0 4px; -} -.searchbox a.l-btn .l-btn-text { - position: static; - vertical-align: top; -} -.searchbox a.l-btn-plain:hover { - border: 0; - padding: 0 6px 0 0; - opacity: 1.0; - filter: alpha(opacity=100); - -moz-border-radius: 0 0 0 0; - -webkit-border-radius: 0 0 0 0; - border-radius: 0 0 0 0; -} -.searchbox a.m-btn-plain-active { - -moz-border-radius: 0 0 0 0; - -webkit-border-radius: 0 0 0 0; - border-radius: 0 0 0 0; -} -.searchbox-button { - background: url('images/searchbox_button.png') no-repeat center center; -} -.searchbox { - border-color: #000; - background-color: #fff; -} -.searchbox a.l-btn-plain { - background: #3d3d3d; -} -.slider-disabled { - opacity: 0.5; - filter: alpha(opacity=50); -} -.slider-h { - height: 22px; -} -.slider-v { - width: 22px; -} -.slider-inner { - position: relative; - height: 6px; - top: 7px; - border-width: 1px; - border-style: solid; - border-radius: 5px; -} -.slider-handle { - position: absolute; - display: block; - outline: none; - width: 20px; - height: 20px; - top: -7px; - margin-left: -10px; -} -.slider-tip { - position: absolute; - display: inline-block; - line-height: 12px; - font-size: 12px; - white-space: nowrap; - top: -22px; -} -.slider-rule { - position: relative; - top: 15px; -} -.slider-rule span { - position: absolute; - display: inline-block; - font-size: 0; - height: 5px; - border-width: 0 0 0 1px; - border-style: solid; -} -.slider-rulelabel { - position: relative; - top: 20px; -} -.slider-rulelabel span { - position: absolute; - display: inline-block; - font-size: 12px; -} -.slider-v .slider-inner { - width: 6px; - left: 7px; - top: 0; - float: left; -} -.slider-v .slider-handle { - left: 3px; - margin-top: -10px; -} -.slider-v .slider-tip { - left: -10px; - margin-top: -6px; -} -.slider-v .slider-rule { - float: left; - top: 0; - left: 16px; -} -.slider-v .slider-rule span { - width: 5px; - height: 'auto'; - border-left: 0; - border-width: 1px 0 0 0; - border-style: solid; -} -.slider-v .slider-rulelabel { - float: left; - top: 0; - left: 23px; -} -.slider-handle { - background: url('images/slider_handle.png') no-repeat; -} -.slider-inner { - border-color: #000; - background: #3d3d3d; -} -.slider-rule span { - border-color: #000; -} -.slider-rulelabel span { - color: #fff; -} -.menu { - position: absolute; - margin: 0; - padding: 2px; - border-width: 1px; - border-style: solid; - overflow: hidden; -} -.menu-item { - position: relative; - margin: 0; - padding: 0; - overflow: hidden; - white-space: nowrap; - cursor: pointer; - border-width: 1px; - border-style: solid; -} -.menu-text { - height: 20px; - line-height: 20px; - float: left; - padding-left: 28px; -} -.menu-icon { - position: absolute; - width: 16px; - height: 16px; - left: 2px; - top: 50%; - margin-top: -8px; -} -.menu-rightarrow { - position: absolute; - width: 16px; - height: 16px; - right: 0; - top: 50%; - margin-top: -8px; -} -.menu-line { - position: absolute; - left: 26px; - top: 0; - height: 2000px; - font-size: 1px; -} -.menu-sep { - margin: 3px 0px 3px 25px; - font-size: 1px; -} -.menu-active { - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.menu-item-disabled { - opacity: 0.5; - filter: alpha(opacity=50); - cursor: default; -} -.menu-text, -.menu-text span { - font-size: 12px; -} -.menu-shadow { - position: absolute; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; - background: #777; - -moz-box-shadow: 2px 2px 3px #787878; - -webkit-box-shadow: 2px 2px 3px #787878; - box-shadow: 2px 2px 3px #787878; - filter: progid:DXImageTransform.Microsoft.Blur(pixelRadius=2,MakeShadow=false,ShadowOpacity=0.2); -} -.menu-rightarrow { - background: url('images/menu_arrows.png') no-repeat -32px center; -} -.menu-line { - border-left: 1px solid #444; - border-right: 1px solid #777; -} -.menu-sep { - border-top: 1px solid #444; - border-bottom: 1px solid #777; -} -.menu { - background-color: #666; - border-color: #444; - color: #fff; -} -.menu-content { - background: #666; -} -.menu-item { - border-color: transparent; - _border-color: #666; -} -.menu-active { - border-color: #555; - color: #fff; - background: #777; -} -.menu-active-disabled { - border-color: transparent; - background: transparent; - color: #fff; -} -.m-btn-downarrow { - display: inline-block; - width: 16px; - height: 16px; - line-height: 16px; - font-size: 12px; - _vertical-align: middle; -} -a.m-btn-active { - background-position: bottom right; -} -a.m-btn-active span.l-btn-left { - background-position: bottom left; -} -a.m-btn-plain-active { - background: transparent; - padding: 0 5px 0 0; - border-width: 1px; - border-style: solid; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.m-btn-downarrow { - background: url('images/menu_arrows.png') no-repeat 2px center; -} -a.m-btn-plain-active { - border-color: #555; - background-color: #777; - color: #fff; -} -.s-btn-downarrow { - display: inline-block; - margin: 0 0 0 4px; - padding: 0 0 0 1px; - width: 14px; - height: 16px; - line-height: 16px; - border-width: 0; - border-style: solid; - font-size: 12px; - _vertical-align: middle; -} -a.s-btn-active { - background-position: bottom right; -} -a.s-btn-active span.l-btn-left { - background-position: bottom left; -} -a.s-btn-plain-active { - background: transparent; - padding: 0 5px 0 0; - border-width: 1px; - border-style: solid; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.s-btn-downarrow { - background: url('images/menu_arrows.png') no-repeat 2px center; - border-color: #cccccc; -} -a:hover.l-btn .s-btn-downarrow, -a.s-btn-active .s-btn-downarrow, -a.s-btn-plain-active .s-btn-downarrow { - background-position: 1px center; - padding: 0; - border-width: 0 0 0 1px; -} -a.s-btn-plain-active { - border-color: #555; - background-color: #777; - color: #fff; -} -.messager-body { - padding: 10px; - overflow: hidden; -} -.messager-button { - text-align: center; - padding-top: 10px; -} -.messager-icon { - float: left; - width: 32px; - height: 32px; - margin: 0 10px 10px 0; -} -.messager-error { - background: url('images/messager_icons.png') no-repeat scroll -64px 0; -} -.messager-info { - background: url('images/messager_icons.png') no-repeat scroll 0 0; -} -.messager-question { - background: url('images/messager_icons.png') no-repeat scroll -32px 0; -} -.messager-warning { - background: url('images/messager_icons.png') no-repeat scroll -96px 0; -} -.messager-progress { - padding: 10px; -} -.messager-p-msg { - margin-bottom: 5px; -} -.messager-body .messager-input { - width: 100%; - padding: 1px 0; - border: 1px solid #000; -} -.tree { - margin: 0; - padding: 0; - list-style-type: none; -} -.tree li { - white-space: nowrap; -} -.tree li ul { - list-style-type: none; - margin: 0; - padding: 0; -} -.tree-node { - height: 18px; - white-space: nowrap; - cursor: pointer; -} -.tree-hit { - cursor: pointer; -} -.tree-expanded, -.tree-collapsed, -.tree-folder, -.tree-file, -.tree-checkbox, -.tree-indent { - display: inline-block; - width: 16px; - height: 18px; - vertical-align: top; - overflow: hidden; -} -.tree-expanded { - background: url('images/tree_icons.png') no-repeat -18px 0px; -} -.tree-expanded-hover { - background: url('images/tree_icons.png') no-repeat -50px 0px; -} -.tree-collapsed { - background: url('images/tree_icons.png') no-repeat 0px 0px; -} -.tree-collapsed-hover { - background: url('images/tree_icons.png') no-repeat -32px 0px; -} -.tree-lines .tree-expanded, -.tree-lines .tree-root-first .tree-expanded { - background: url('images/tree_icons.png') no-repeat -144px 0; -} -.tree-lines .tree-collapsed, -.tree-lines .tree-root-first .tree-collapsed { - background: url('images/tree_icons.png') no-repeat -128px 0; -} -.tree-lines .tree-node-last .tree-expanded, -.tree-lines .tree-root-one .tree-expanded { - background: url('images/tree_icons.png') no-repeat -80px 0; -} -.tree-lines .tree-node-last .tree-collapsed, -.tree-lines .tree-root-one .tree-collapsed { - background: url('images/tree_icons.png') no-repeat -64px 0; -} -.tree-line { - background: url('images/tree_icons.png') no-repeat -176px 0; -} -.tree-join { - background: url('images/tree_icons.png') no-repeat -192px 0; -} -.tree-joinbottom { - background: url('images/tree_icons.png') no-repeat -160px 0; -} -.tree-folder { - background: url('images/tree_icons.png') no-repeat -208px 0; -} -.tree-folder-open { - background: url('images/tree_icons.png') no-repeat -224px 0; -} -.tree-file { - background: url('images/tree_icons.png') no-repeat -240px 0; -} -.tree-loading { - background: url('images/loading.gif') no-repeat center center; -} -.tree-checkbox0 { - background: url('images/tree_icons.png') no-repeat -208px -18px; -} -.tree-checkbox1 { - background: url('images/tree_icons.png') no-repeat -224px -18px; -} -.tree-checkbox2 { - background: url('images/tree_icons.png') no-repeat -240px -18px; -} -.tree-title { - font-size: 12px; - display: inline-block; - text-decoration: none; - vertical-align: top; - white-space: nowrap; - padding: 0 2px; - height: 18px; - line-height: 18px; -} -.tree-node-proxy { - font-size: 12px; - line-height: 20px; - padding: 0 2px 0 20px; - border-width: 1px; - border-style: solid; - z-index: 9900000; -} -.tree-dnd-icon { - display: inline-block; - position: absolute; - width: 16px; - height: 18px; - left: 2px; - top: 50%; - margin-top: -9px; -} -.tree-dnd-yes { - background: url('images/tree_icons.png') no-repeat -256px 0; -} -.tree-dnd-no { - background: url('images/tree_icons.png') no-repeat -256px -18px; -} -.tree-node-top { - border-top: 1px dotted red; -} -.tree-node-bottom { - border-bottom: 1px dotted red; -} -.tree-node-append .tree-title { - border: 1px dotted red; -} -.tree-editor { - border: 1px solid #ccc; - font-size: 12px; - height: 14px !important; - height: 18px; - line-height: 14px; - padding: 1px 2px; - width: 80px; - position: absolute; - top: 0; -} -.tree-node-proxy { - background-color: #666; - color: #fff; - border-color: #000; -} -.tree-node-hover { - background: #777; - color: #fff; -} -.tree-node-selected { - background: #0052A3; - color: #fff; -} -.validatebox-invalid { - background-image: url('images/validatebox_warning.png'); - background-repeat: no-repeat; - background-position: right center; - border-color: #ffa8a8; - background-color: #fff3f3; - color: #000; -} -.tooltip { - position: absolute; - display: none; - z-index: 9900000; - outline: none; - opacity: 1; - filter: alpha(opacity=100); - padding: 5px; - border-width: 1px; - border-style: solid; - border-radius: 5px; - -moz-border-radius: 5px 5px 5px 5px; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} -.tooltip-content { - font-size: 12px; -} -.tooltip-arrow-outer, -.tooltip-arrow { - position: absolute; - width: 0; - height: 0; - line-height: 0; - font-size: 0; - border-style: solid; - border-width: 6px; - border-color: transparent; - _border-color: tomato; - _filter: chroma(color=tomato); -} -.tooltip-right .tooltip-arrow-outer { - left: 0; - top: 50%; - margin: -6px 0 0 -13px; -} -.tooltip-right .tooltip-arrow { - left: 0; - top: 50%; - margin: -6px 0 0 -12px; -} -.tooltip-left .tooltip-arrow-outer { - right: 0; - top: 50%; - margin: -6px -13px 0 0; -} -.tooltip-left .tooltip-arrow { - right: 0; - top: 50%; - margin: -6px -12px 0 0; -} -.tooltip-top .tooltip-arrow-outer { - bottom: 0; - left: 50%; - margin: 0 0 -13px -6px; -} -.tooltip-top .tooltip-arrow { - bottom: 0; - left: 50%; - margin: 0 0 -12px -6px; -} -.tooltip-bottom .tooltip-arrow-outer { - top: 0; - left: 50%; - margin: -13px 0 0 -6px; -} -.tooltip-bottom .tooltip-arrow { - top: 0; - left: 50%; - margin: -12px 0 0 -6px; -} -.tooltip { - background-color: #666; - border-color: #000; - color: #fff; -} -.tooltip-right .tooltip-arrow-outer { - border-right-color: #000; -} -.tooltip-right .tooltip-arrow { - border-right-color: #666; -} -.tooltip-left .tooltip-arrow-outer { - border-left-color: #000; -} -.tooltip-left .tooltip-arrow { - border-left-color: #666; -} -.tooltip-top .tooltip-arrow-outer { - border-top-color: #000; -} -.tooltip-top .tooltip-arrow { - border-top-color: #666; -} -.tooltip-bottom .tooltip-arrow-outer { - border-bottom-color: #000; -} -.tooltip-bottom .tooltip-arrow { - border-bottom-color: #666; -} diff --git a/src/main/webapp/js/easyui-1.3.5/themes/black/images/accordion_arrows.png b/src/main/webapp/js/easyui-1.3.5/themes/black/images/accordion_arrows.png deleted file mode 100644 index 45fd44aa30476e107428feeea74273a354d3b003..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 122 zcmeAS@N?(olHy`uVBq!ia0vp^3P3Et!3HGD8EPYel%uDMV@SoVN1z5L3B> xDW~hhNx=}0EonJY9@lzK3(R79rLjPWf#H~1{zPk!fAK(V44$rjF6*2Ung93|vWVV6Z%4vL?&44I-o%PJ?Cx6QLVXnHR?Rhr;0){R%hr=okS>HS^0Qvf^!Vg~N^Sz&#ASvge z87j5M#D4oX@65PaX>s2t&yQ?p-0*+9{K1F+nQRT$=L)dM>6M4Gp7v%sn+|j&gQu&X J%Q~loCIFcQP)Gm( diff --git a/src/main/webapp/js/easyui-1.3.5/themes/black/images/datebox_arrow.png b/src/main/webapp/js/easyui-1.3.5/themes/black/images/datebox_arrow.png deleted file mode 100644 index 783c83357fdf90a1c7c024358e1d768b5c09c135..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 626 zcmV-&0*(ENP)5OC%H;f`~O(q$Q#t2<^v$A>fbmv%e#dKTwK=Ku{5lS|}<-`a#7b zzTCOnnT>at)D}AMFuOZ5&%EqFN(lyumd$2ASF6=;nM~%2?gqc@U=#|4PqkX@EBo-9 z7pD#bO_RUa>*faM`8;MYfVi$JnB-zcBFc6gjl$d!bF98Q!!!(Z1_R~P?e!pt#6CHJ9S&n_n&@=9 z%GP;!@Co4c*at+6vNz7o(6en^Q1%qHrc;1)9IRaz-$@S$Z-qdC^ds3X0NvQH;KS)D z-dh&rW&@X;1cS(45z)J&BVt+tv&GMVJ%!EiW) zLBGZW)#Z+gl-Lih&?>X3SS-S#ujQ;9JRXmIB7X)8`d6ETj)D#Q2+$s|<_b7-B9Xvq zwNfqlEp%y3$uY`h{Y$(Gn5@}sqEsq95lpAkFO5dyBmP6^H-51G4J|rN2Ujt<`2YX_ M07*qoM6N<$f3kcwMx!yWk;1b9CG_kXOx zmzFK*Ssi^NN-27((w?4M8@u`^_qP=9nfy4m{lwb6;U^wS@qDtp9?C45@HGEwayQ3S z%Ua=ZSB3W+c`gDw6;3c4*f@AGFEUxQKH4x2D*a5)78&qol`;+03qN((f|Me diff --git a/src/main/webapp/js/easyui-1.3.5/themes/black/images/linkbutton_bg.png b/src/main/webapp/js/easyui-1.3.5/themes/black/images/linkbutton_bg.png deleted file mode 100644 index fc66bd2cd24047b8377342365a1df3846327ecde..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1274 zcmVc6j2;SWMDuL>F^vlqEUI{oOgO!xNf*11TukM z6kTZ3V2qd3<~<$H&Lrt?SpXUxF5Zb^}(={r!EHE+$QMdH|XZ zSYbMyc0tQc3qbP$tG{U_Jyg>I(0srOscEGU?-T)4AzuS$_2J>6`+BJ50YDY<^>2vV z+uI880P2ui(hyHiPrK$)CkbHg=kD&V3^8pD z0v3QOB&8eT@87?rgaGPrb#+ySxU;jP=nkL`nZ_{0e*BD+1Tc5b&d$oLo}8R$90gF1 z^ij>~#>R%HIRNUB_kgpQ+Lg!80Gbb2saY8>1EBeUm7A3TegK*dSciv)Wqp0!h-3im z1+1f^qq4iZ+ZEMUS63~e0I+zh`2rwd0l@!F(!7sM%_`|&0+*B!z{1(u+A9BIU&~T- z2he=L>dmc7TLXZFkeTeCHMcE|qX51{z>0ZC=xGjss*FaXGOMX+dHf8Z8hL6ntGQ_z zF9V<&dwY9jh`D7czyqj4g3S=~)zFA!0980RI4DC*Ez1%L09D8%=OHF&S@Q*;3bRfe zeL2-ZzyeT(Av4`$>R3`j096>WH7BOELD3yR70%Dk%Mk4)1W=73OH{L_UgIc$YFu7k zmRaq`&NxK?Rk*skDzlhL4IV!OsLJ*Ab@{BRT^TO}pgQC6xO~R6G8o_oU?C)>`xlc2 zriH~zU-;g$PyPA_&X!OBSU6SIeB~eKNAhF&(fs&F|1n9<+Yj^2T+4Dj%UFjr zZ%rnX^7Qmn0ANwP308gILtaQfK0Z1j0Br`Wq<=~Ka+?BxW&>7kRtZ+q>C~wJXg6S` zW|cJ1%?d#C0V@Ue)T{uY>425ig?tTsczEc(0+M8_c7^t|!sm-1Nw(}#nnLr?FgGlc zY}ut0+w(d)Uk6FDWtY;*aCdjteIX>tmhA#o+8PqHNU~+SlrTfyKRaNHBx~Ch-FJ3& z%B(Y&NwStp{rH$6Yj{YqhR=Gk~Mtw_&K$#yeTBf z7JV~bCN(VwL$c|B^>Topn-X{+7;S!yV~2^ zBgv-iMkME}U;-COwrsbABDvwg!2wA&ZMWttf5^jTl5E*7V41=|@=Hu>NJ^O8(7b4p z&ChgC(LF5>Md#{+4LgS{%KA|H(Xv`l4P^KdiBKB*_;1&m|Q7!{|O$ k%vVK{T!hwqk^D0L0mO==@4IV9lK=n!07*qoM6N<$f|Ge;n*aa+ diff --git a/src/main/webapp/js/easyui-1.3.5/themes/black/images/loading.gif b/src/main/webapp/js/easyui-1.3.5/themes/black/images/loading.gif deleted file mode 100644 index 68f01d04813c1f622810864a3aaa04b4a17ac8f9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1737 zcmaKsX;2e)7>CzDa{xjjy99|1A!tC(kfocDi)<1$AxHpOQ4k^l!Vx1W6x7<&|FYXU zqO4jEiU-!VR1p+Xj1?4-iuI_J;!&?!+ghg|JJad3U)pMGzcKxNeCM6tJnuX+uPvX@ zZY|=AHdxt2Xr2y*)5|c6#FSEuyJ+Y3Z&l z2hJWo`9;lJ$6wzSoW60tqkB|d$oiO*d-^85^ojn{*NR{MP*%{@H*#gihZ8BKyB68E z-MIbjgNNV0y5khpJ^Jv`51aR%={<4jhaVq5e*9D5+*hL)XCHn4{^d%hPu@?KpKbc=eN!D=XUjDmH#n{YHNS zHCX6BV)yn2CuTNujhN~V+`RKpyXO6^ht92eqhIIlQLfz6eeCnH_C7`NPNrw9ks366 z4xX9(`s~z=+1uX^ocZ$2_fBs=JihPfWYufOIuD&AU-@`>>qn~cy$1)T7CU!5z2(U8 z)9Kt9)l`f6?NU41j6XbXfR{OHwm|T4}&24tIf+!C-g~6cQfY2^n$?AT&ZW zgqm`}3-jS2NS6n=k;sr5Hv(Q%%n)qW0X|neWVBd;Ko}d(=u%?{O0-a>kSI}shOd9n z5top}%gUCf=>?tg;*;#7!^HOL3k$fMxd=O-6Y4@%u8LS)C1D_a?27R6^vcC+6tttL z)GmTahbyJB!xmcHL#ya8ZXyfRl)a!N0BJE0y3BBfAV5;#=K&Z2VkaKZ)?9`1h5P_% znt*b}%j1|#j`b|aQDx@~wA#$PYRN2xE6UO;;vE(@$&xww-s8fZ5HmJ(eJ*rQrDbaawDbrfe_8F(wq{ge?)qQG`aXV;r(*6EM|ESje;52aFmrX!f=Pw^2oGQX$1|o4yts|b_5@w_kNwtl{wDP#JGMvIp#!SYX?Wq9S&`&_ZwkgGH5CLB7DEGJ6=R4J~p3Z4i^A}hs=-uZeD zs92l6u@**R$~L()G{5N8*7cE5-q$SCo`q4|NSVF*+A7&xZnypm$EdXgf)E%(VJHFD zSgi(H!D!(;9Zcc#GrCCJh=RlvXBQ-hv4Vodse`a32ZUFWgP5ZhM5LeV(#D^H8p@Lg ztra5R32z@1rQv{6u&RZL5%Z@Ye{q|t#6aM_1hIrpl@)oH6}os*cbAQywa{5<`ekzW O1il%9bk82&KlvLjD^%40 diff --git a/src/main/webapp/js/easyui-1.3.5/themes/black/images/menu_arrows.png b/src/main/webapp/js/easyui-1.3.5/themes/black/images/menu_arrows.png deleted file mode 100644 index 2a984941d6590c78d67ee68d2087d8cc88efbac6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 134 zcmeAS@N?(olHy`uVBq!ia0vp^4nQox!3HFkJ+IURQof!pjv*Dd-d;V(%b>u);`l3H z>g53sy@tf+`c*Dhco^6|8Eg#8WENqsU-wu%RB=*I5D$X7F_Nb6Mw<&;$S;RV&B< diff --git a/src/main/webapp/js/easyui-1.3.5/themes/black/images/messager_icons.png b/src/main/webapp/js/easyui-1.3.5/themes/black/images/messager_icons.png deleted file mode 100644 index 62c18c135860351063ebaabe8c0f4df7664b8f65..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6116 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 lGy-mR diff --git a/src/main/webapp/js/easyui-1.3.5/themes/black/images/panel_tools.png b/src/main/webapp/js/easyui-1.3.5/themes/black/images/panel_tools.png deleted file mode 100644 index f97761eb393def3b5f61774142413e740fe8fe8b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 184 zcmeAS@N?(olHy`uVBq!ia0vp^20*O9!3HEluKbn(QuUrLjv*Dd-p+93Yfuni{`r6T z$48CLf{EOzXU|M@xy0GMavBpu(5ti8zb3QZ+Tfp^siO37?WI*8%sM?7u5w1XttgAw z*Z5axHOr-aZj1~Mw;UHx3vIVCg!0FXpSG5`Po diff --git a/src/main/webapp/js/easyui-1.3.5/themes/black/images/searchbox_button.png b/src/main/webapp/js/easyui-1.3.5/themes/black/images/searchbox_button.png deleted file mode 100644 index 6dd1931589b453f6cc9772fd1851d8705d6b6631..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 813 zcmV+|1JeA7P)lXvaa)1B=8vtU6i;3jw7+Lm8D5$Z@i10EnF)=bcefw4K z$^E-CUfjQG`svfBbfD6|R#sLFj6lo3FG$G6@;ee>>~6i|H^5OY8c00W#fi<*1vzh{0&qu3dB`V0{{XDY`}(1n>S9M(9!zw#!&`A z#;*+0{6GVMSeWGp!`o{o8NPge#o%jgs54WT$qnQYpsyGNpauX05F;oJfZ`Pdw6!$j zynTH0RMa&!n3$Pa9zVGEY{&L(3qnPBl_DG6<9Xk0`Fl3`LiD4@pH{vDsxJWQ1qdJp zEJ>M}osCtQlY?CgW>F{;gVK#SmgoOZnEn5J%EtIXaWQXAO>Rdf)WFR;gt~f zXaA3z{{L{q=l48y!32yJ3i0hJ2BS=^}@sXzH{F9Iq&OW375;I7CG-}Vr|aF#l<(fySwu2>`YdxRW*W0f#2un=W5Jmvoe`XCK%I_Y++#`fwE+= zSd{sEULGDE%A=#BOW<6gP*6VfMa^fr8qe`5w%)P0a^Y9WGTw! zvI^|$>l@1Da^Ke1*T3RdY7KqM%gaBb(P+oP!GW;b?ZRfW3Bxc1H@GCaHK#XhZ*Lc= zRBC@>V&W#x&B5%(#>OW5`};d6I5Qw218EG_q@1gtr!Nl*v7yn?(MPMRt4SNy%--JK zanm#f^bw^}Nr7b(EUg}TUi(2;)deX10lAo=83+VA(QksJI6(zwptET-y~avN=J9w$ zI2`W5lG|aOkjY7(&!@;Jx*nUA>~J`Q)9L&(G8y=g$3a4YgD7z)5>gXQNKhw=uR0zF z#jHruh)gDv=bj|2ZES4(fEM?I!JyKqo=}sj-fBYTcDt4KXq)eFQH}wW`vh%Mla}#@ z@Mb`C)x@YkK{xd2>8ZLg+E!Lps$Q@6DY-~!0=Gs+Mm~_JnW1EbX2uxClEdN>Y@I78 z=ke_9?7sX@o0*x}M{JB77MIXj_MmNE%+1Xe{*{crh)9={dR(U;y-{jrxUXmG%Gt002ovPDHLkV1hy(sXhPz diff --git a/src/main/webapp/js/easyui-1.3.5/themes/black/images/spinner_arrows.png b/src/main/webapp/js/easyui-1.3.5/themes/black/images/spinner_arrows.png deleted file mode 100644 index 25ee848d772e71e591fdf4e4d07409b94e58fc92..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 112 zcmeAS@N?(olHy`uVBq!ia0vp^3P3Et!3HGD8EPYel)0yiV@SoV}ezCPaUb%ArQw1m64&Nzopr0N{TzyZ`_I diff --git a/src/main/webapp/js/easyui-1.3.5/themes/black/images/tree_icons.png b/src/main/webapp/js/easyui-1.3.5/themes/black/images/tree_icons.png deleted file mode 100644 index 2b4fd2025c7588c84df27d89466b470e273f5c06..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3086 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 diff --git a/src/main/webapp/js/easyui-1.3.5/themes/black/images/validatebox_warning.png b/src/main/webapp/js/easyui-1.3.5/themes/black/images/validatebox_warning.png deleted file mode 100644 index 2b3d4f05babf3f82b146350e96570fac02075de0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 921 zcmV;K17`e*P)nRv1_mBsMY*-M^XCf)eflW5 z|MC^)Hw+AW{sHCCF+cz@{fF8J!+#-kxoSv=7^|!zgOQUngSQ}mDo|J)n+pH}hzZ#= zr~y18$_m-?9v%$;?mu8);}>9vFgFvDXJDwrW&l6{p}625M66yTFhGz^K$w9^O$BHi zFN2Ym7DIple*#cW4BY^L0Al(Jbv6k9U|^6IQBp{hx3XdQ&CJ4Z_|YSVr@XujY(PVT zlok1<85nBO4FCurumK>O|A07*jFlSRUcxLAQVcIR*co#3@)&jj4Pj7KXRri%#h;fa z4ya5O*#Lk5Vq!q}T~=CGH(uV-hJk^fkAYoGjN#AMuMF($>N=giWG}IXse|=+c=i>7HEg>%*E%fLD!-uy|85n^6W?^Dt(9zXp5EB&z+w>_knBmdiKMbzi z?A!`WOl>e100a=&05*1xZdFls?*HtZ48H?o7=HW%ivIu45E2~BASWx!@DIpmv9e}h zaPwji|L}pqor@y`=yxrU0RRES^qYY}O;TRcU+DKIhL4`%3_nyf8U6tS<<-ZJ40D$( zWjJ%`G6NIPHNP2{7am*Fp% z{>ShK#0G`~kjd~57_BUUT_Y-nKxaI`{RC0WjSLJ&w^R(C-|JQTojLXc1&{d*_z{$ jW+oTMdQ(F|jDg|L>K${_)^zO#I)%a0)z4*}Q$iB}_fAN- diff --git a/src/main/webapp/js/easyui-1.3.5/themes/bootstrap/images/blank.gif b/src/main/webapp/js/easyui-1.3.5/themes/bootstrap/images/blank.gif deleted file mode 100644 index 1d11fa9ada9e93505b3d736acb204083f45d5fbf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 43 scmZ?wbhEHbWMp7uX!y@?;J^U}1_s5SEQ~;kK?g*DWEhy3To@Uw0n;G|I{*Lx diff --git a/src/main/webapp/js/easyui-1.3.5/themes/bootstrap/images/calendar_arrows.png b/src/main/webapp/js/easyui-1.3.5/themes/bootstrap/images/calendar_arrows.png deleted file mode 100644 index 430c4ad685b8c0068ecb7e3cbef74f493a84ad0d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 173 zcmeAS@N?(olHy`uVBq!ia0vp^4nQox!3HFkJ+IURQYD@)jv*Dd-cCEn)nLHm{QbZE z+q@uWwandfr?Jb4eDYYmB3UAt=OO2Vt+MMT&+KD%&6hZDt!FBpej;sEpMN69^tKl% zp6y<4_lG^P z=;=eQ4Vs74-2)Ua&f1tcVdk$#{GPKe@&?ZMHmT&SMw?IV&w7)}ixLbB3d$Zg{&KGb P8OPx1>gTe~DWM4f WNYm=W^A8UI00005OC%H;f`~O(q$Q#t2<^v$A>fbmv%e#dKTwK=Ku{5lS|}<-`a#7b zzTCOnnT>at)D}AMFuOZ5&%EqFN(lyumd$2ASF6=;nM~%2?gqc@U=#|4PqkX@EBo-9 z7pD#bO_RUa>*faM`8;MYfVi$JnB-zcBFc6gjl$d!bF98Q!!!(Z1_R~P?e!pt#6CHJ9S&n_n&@=9 z%GP;!@Co4c*at+6vNz7o(6en^Q1%qHrc;1)9IRaz-$@S$Z-qdC^ds3X0NvQH;KS)D z-dh&rW&@X;1cS(45z)J&BVt+tv&GMVJ%!EiW) zLBGZW)#Z+gl-Lih&?>X3SS-S#ujQ;9JRXmIB7X)8`d6ETj)D#Q2+$s|<_b7-B9Xvq zwNfqlEp%y3$uY`h{Y$(Gn5@}sqEsq95lpAkFO5dyBmP6^H-51G4J|rN2Ujt<`2YX_ M07*qoM6N<$fRl}UZ@-Co%Cq`k{wEj}Dr>ShP9AQ|IKKA30{ejJboVoF`C-z@6mZMY&%Wiz%6S}#zb4u?o?9Mi=ECopVxzz+sNviAA!DK)mm8xe zgY9ZT9jlddc^&y2^u9XqDeU4{8s^AS#8C7TXsxEJW@uLu(3Whc35-X6v}jEgEb{G` z!{)$uKzw<~%0A6PhNHYfSuTvOzD8LpPF>PVr=&QqGC936QlPgc6j2;SWMDuL>F^vlqEUI{oOgO!xNf*11TukM z6kTZ3V2qd3<~<$H&Lrt?SpXUxF5Zb^}(={r!EHE+$QMdH|XZ zSYbMyc0tQc3qbP$tG{U_Jyg>I(0srOscEGU?-T)4AzuS$_2J>6`+BJ50YDY<^>2vV z+uI880P2ui(hyHiPrK$)CkbHg=kD&V3^8pD z0v3QOB&8eT@87?rgaGPrb#+ySxU;jP=nkL`nZ_{0e*BD+1Tc5b&d$oLo}8R$90gF1 z^ij>~#>R%HIRNUB_kgpQ+Lg!80Gbb2saY8>1EBeUm7A3TegK*dSciv)Wqp0!h-3im z1+1f^qq4iZ+ZEMUS63~e0I+zh`2rwd0l@!F(!7sM%_`|&0+*B!z{1(u+A9BIU&~T- z2he=L>dmc7TLXZFkeTeCHMcE|qX51{z>0ZC=xGjss*FaXGOMX+dHf8Z8hL6ntGQ_z zF9V<&dwY9jh`D7czyqj4g3S=~)zFA!0980RI4DC*Ez1%L09D8%=OHF&S@Q*;3bRfe zeL2-ZzyeT(Av4`$>R3`j096>WH7BOELD3yR70%Dk%Mk4)1W=73OH{L_UgIc$YFu7k zmRaq`&NxK?Rk*skDzlhL4IV!OsLJ*Ab@{BRT^TO}pgQC6xO~R6G8o_oU?C)>`xlc2 zriH~zU-;g$PyPA_&X!OBSU6SIeB~eKNAhF&(fs&F|1n9<+Yj^2T+4Dj%UFjr zZ%rnX^7Qmn0ANwP308gILtaQfK0Z1j0Br`Wq<=~Ka+?BxW&>7kRtZ+q>C~wJXg6S` zW|cJ1%?d#C0V@Ue)T{uY>425ig?tTsczEc(0+M8_c7^t|!sm-1Nw(}#nnLr?FgGlc zY}ut0+w(d)Uk6FDWtY;*aCdjteIX>tmhA#o+8PqHNU~+SlrTfyKRaNHBx~Ch-FJ3& z%B(Y&NwStp{rH$6Yj{YqhR=Gk~Mtw_&K$#yeTBf z7JV~bCN(VwL$c|B^>Topn-X{+7;S!yV~2^ zBgv-iMkME}U;-COwrsbABDvwg!2wA&ZMWttf5^jTl5E*7V41=|@=Hu>NJ^O8(7b4p z&ChgC(LF5>Md#{+4LgS{%KA|H(Xv`l4P^KdiBKB*_;1&m|Q7!{|O$ k%vVK{T!hwqk^D0L0mO==@4IV9lK=n!07*qoM6N<$f|Ge;n*aa+ diff --git a/src/main/webapp/js/easyui-1.3.5/themes/bootstrap/images/loading.gif b/src/main/webapp/js/easyui-1.3.5/themes/bootstrap/images/loading.gif deleted file mode 100644 index 68f01d04813c1f622810864a3aaa04b4a17ac8f9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1737 zcmaKsX;2e)7>CzDa{xjjy99|1A!tC(kfocDi)<1$AxHpOQ4k^l!Vx1W6x7<&|FYXU zqO4jEiU-!VR1p+Xj1?4-iuI_J;!&?!+ghg|JJad3U)pMGzcKxNeCM6tJnuX+uPvX@ zZY|=AHdxt2Xr2y*)5|c6#FSEuyJ+Y3Z&l z2hJWo`9;lJ$6wzSoW60tqkB|d$oiO*d-^85^ojn{*NR{MP*%{@H*#gihZ8BKyB68E z-MIbjgNNV0y5khpJ^Jv`51aR%={<4jhaVq5e*9D5+*hL)XCHn4{^d%hPu@?KpKbc=eN!D=XUjDmH#n{YHNS zHCX6BV)yn2CuTNujhN~V+`RKpyXO6^ht92eqhIIlQLfz6eeCnH_C7`NPNrw9ks366 z4xX9(`s~z=+1uX^ocZ$2_fBs=JihPfWYufOIuD&AU-@`>>qn~cy$1)T7CU!5z2(U8 z)9Kt9)l`f6?NU41j6XbXfR{OHwm|T4}&24tIf+!C-g~6cQfY2^n$?AT&ZW zgqm`}3-jS2NS6n=k;sr5Hv(Q%%n)qW0X|neWVBd;Ko}d(=u%?{O0-a>kSI}shOd9n z5top}%gUCf=>?tg;*;#7!^HOL3k$fMxd=O-6Y4@%u8LS)C1D_a?27R6^vcC+6tttL z)GmTahbyJB!xmcHL#ya8ZXyfRl)a!N0BJE0y3BBfAV5;#=K&Z2VkaKZ)?9`1h5P_% znt*b}%j1|#j`b|aQDx@~wA#$PYRN2xE6UO;;vE(@$&xww-s8fZ5HmJ(eJ*rQrDbaawDbrfe_8F(wq{ge?)qQG`aXV;r(*6EM|ESje;52aFmrX!f=Pw^2oGQX$1|o4yts|b_5@w_kNwtl{wDP#JGMvIp#!SYX?Wq9S&`&_ZwkgGH5CLB7DEGJ6=R4J~p3Z4i^A}hs=-uZeD zs92l6u@**R$~L()G{5N8*7cE5-q$SCo`q4|NSVF*+A7&xZnypm$EdXgf)E%(VJHFD zSgi(H!D!(;9Zcc#GrCCJh=RlvXBQ-hv4Vodse`a32ZUFWgP5ZhM5LeV(#D^H8p@Lg ztra5R32z@1rQv{6u&RZL5%Z@Ye{q|t#6aM_1hIrpl@)oH6}os*cbAQywa{5<`ekzW O1il%9bk82&KlvLjD^%40 diff --git a/src/main/webapp/js/easyui-1.3.5/themes/bootstrap/images/menu_arrows.png b/src/main/webapp/js/easyui-1.3.5/themes/bootstrap/images/menu_arrows.png deleted file mode 100644 index b986842e7e4044caed18edbcb4b376a4bb915623..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 160 zcmeAS@N?(olHy`uVBq!ia0vp^4nQox!3HFkJ+IURQt6&9jv*Dd-cB{-J7B=U{PTZ! zWrKV9%Z3|Wt5t$(gq+#d+-OocB$0fsr9DfRx52vPhSu$$+yXuy+69hDZ54DDTxx#r zL7>-12UT01v)>tZ+;HI4pDNf?@KK~EC$@35ykmXyu^HJF3})N>8P9Uwo&~g$!PC{x JWt~$(697!FIeGv9 diff --git a/src/main/webapp/js/easyui-1.3.5/themes/bootstrap/images/messager_icons.png b/src/main/webapp/js/easyui-1.3.5/themes/bootstrap/images/messager_icons.png deleted file mode 100644 index 62c18c135860351063ebaabe8c0f4df7664b8f65..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6116 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 diff --git a/src/main/webapp/js/easyui-1.3.5/themes/bootstrap/images/spinner_arrows.png b/src/main/webapp/js/easyui-1.3.5/themes/bootstrap/images/spinner_arrows.png deleted file mode 100644 index b68592de3200fbe1f7defe98a2b59b0398b1b737..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 115 zcmeAS@N?(olHy`uVBq!ia0vp^3P3Et!3HGD8EPYel$EE8V@SoV_tDnm{r-UW|t3f!- diff --git a/src/main/webapp/js/easyui-1.3.5/themes/bootstrap/images/tree_icons.png b/src/main/webapp/js/easyui-1.3.5/themes/bootstrap/images/tree_icons.png deleted file mode 100644 index e9be4f3a9965e49a4e4078f8c53f486d761a7468..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3115 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 diff --git a/src/main/webapp/js/easyui-1.3.5/themes/bootstrap/images/validatebox_warning.png b/src/main/webapp/js/easyui-1.3.5/themes/bootstrap/images/validatebox_warning.png deleted file mode 100644 index 2b3d4f05babf3f82b146350e96570fac02075de0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 921 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 T0gjLZeOBaa?|wA#e_!~27*z{8 diff --git a/src/main/webapp/js/easyui-1.3.5/themes/default/images/accordion_arrows.png b/src/main/webapp/js/easyui-1.3.5/themes/default/images/accordion_arrows.png deleted file mode 100644 index 720835f69c96c17ec32a20b03ac9753aa59b7f4f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 184 zcmeAS@N?(olHy`uVBq!ia0vp^3P3Et!3HGD8EPYeRK2H*V@SoVUT_Y-nKxaI`{RC0WjSLJ&w^R(C-|JQTojLXc1&{d*_z{$ jW+oTMdQ(F|jDg|L>K${_)^zO#I)%a0)z4*}Q$iB}_fAN- diff --git a/src/main/webapp/js/easyui-1.3.5/themes/default/images/bg_positionl.gif b/src/main/webapp/js/easyui-1.3.5/themes/default/images/bg_positionl.gif deleted file mode 100644 index 3a39d13be474ea472817afca491474ae43cf53c1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 540 zcmZ?wbhEHbWMz9_Q`}hCgs|K67ikGx)V{C&&TS5x=AoOa;F?1OK={P^9p_4&qgAJ&|GKjYx*4d*}f z?S3_F|J$j1-|W2lxqkD@#x1X3e)+xf)cZ+$UT!@9wtdH|iF@Dn?|j*``DN?&7aza; z?cVYH-~YdD+g`M8dp_^*tG=Bt*PeafyYp51_Lr+pzw6xbs(07x-kr}|w!UoL`eND1 z_nkXmE<5?Qam(|@%`X`SB~bjy0(O@Uhy=w61AAqIfQqi5wxyh*n20#5osy!4v5qN& zkeZP!1G6SGH@Cf{o0+4GIC5UDGKfoZ!!63`P$jm6nz$D1XEXer(2tzK& zVL(SB04qBuBLg$47z-N*vjEV~tgHxi3=Ax+OhLlIQ$<6sid_=~n#01yj3mv>7|0}) zIC0~oOTv>cvxo*I1^>UrzymaxNsw8P!JgrE-IZmh!&v)!_42lwuU;)@WcNm-s9fQY vx2eQ($xo55Beu_XZCvXpY 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 diff --git a/src/main/webapp/js/easyui-1.3.5/themes/default/images/bg_positionrbak.jpg b/src/main/webapp/js/easyui-1.3.5/themes/default/images/bg_positionrbak.jpg deleted file mode 100644 index 9b3aaaffe1c90339a9593b8ddff62231f65a7166..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18506 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 diff --git a/src/main/webapp/js/easyui-1.3.5/themes/default/images/blank.gif b/src/main/webapp/js/easyui-1.3.5/themes/default/images/blank.gif deleted file mode 100644 index 1d11fa9ada9e93505b3d736acb204083f45d5fbf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 43 scmZ?wbhEHbWMp7uX!y@?;J^U}1_s5SEQ~;kK?g*DWEhy3To@Uw0n;G|I{*Lx diff --git a/src/main/webapp/js/easyui-1.3.5/themes/default/images/calendar_arrows.png b/src/main/webapp/js/easyui-1.3.5/themes/default/images/calendar_arrows.png deleted file mode 100644 index 430c4ad685b8c0068ecb7e3cbef74f493a84ad0d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 173 zcmeAS@N?(olHy`uVBq!ia0vp^4nQox!3HFkJ+IURQYD@)jv*Dd-cCEn)nLHm{QbZE z+q@uWwandfr?Jb4eDYYmB3UAt=OO2Vt+MMT&+KD%&6hZDt!FBpej;sEpMN69^tKl% zp6y<4_lG^P z=;=eQ4Vs74-2)Ua&f1tcVdk$#{GPKe@&?ZMHmT&SMw?IV&w7)}ixLbB3d$Zg{&KGb P8OPx1>gTe~DWM4f WNYm=W^A8UI00005OC%H;f`~O(q$Q#t2<^v$A>fbmv%e#dKTwK=Ku{5lS|}<-`a#7b zzTCOnnT>at)D}AMFuOZ5&%EqFN(lyumd$2ASF6=;nM~%2?gqc@U=#|4PqkX@EBo-9 z7pD#bO_RUa>*faM`8;MYfVi$JnB-zcBFc6gjl$d!bF98Q!!!(Z1_R~P?e!pt#6CHJ9S&n_n&@=9 z%GP;!@Co4c*at+6vNz7o(6en^Q1%qHrc;1)9IRaz-$@S$Z-qdC^ds3X0NvQH;KS)D z-dh&rW&@X;1cS(45z)J&BVt+tv&GMVJ%!EiW) zLBGZW)#Z+gl-Lih&?>X3SS-S#ujQ;9JRXmIB7X)8`d6ETj)D#Q2+$s|<_b7-B9Xvq zwNfqlEp%y3$uY`h{Y$(Gn5@}sqEsq95lpAkFO5dyBmP6^H-51G4J|rN2Ujt<`2YX_ M07*qoM6N<$fRl}UZ@-Co%Cq`k{wEj}Dr>ShP9AQ|IKKA30{ejJboVoF`C-z@6mZMY&%Wiz%6S}#zb4u?o?9Mi=ECopVxzz+sNviAA!DK)mm8xe zgY9ZT9jlddc^&y2^u9XqDeU4{8s^AS#8C7TXsxEJW@uLu(3Whc35-X6v}jEgEb{G` z!{)$uKzw<~%0A6PhNHYfSuTvOzD8LpPF>PVr=&QqGC936QlPgc6j2;SWMDuL>F^vlqEUI{oOgO!xNf*11TukM z6kTZ3V2qd3<~<$H&Lrt?SpXUxF5Zb^}(={r!EHE+$QMdH|XZ zSYbMyc0tQc3qbP$tG{U_Jyg>I(0srOscEGU?-T)4AzuS$_2J>6`+BJ50YDY<^>2vV z+uI880P2ui(hyHiPrK$)CkbHg=kD&V3^8pD z0v3QOB&8eT@87?rgaGPrb#+ySxU;jP=nkL`nZ_{0e*BD+1Tc5b&d$oLo}8R$90gF1 z^ij>~#>R%HIRNUB_kgpQ+Lg!80Gbb2saY8>1EBeUm7A3TegK*dSciv)Wqp0!h-3im z1+1f^qq4iZ+ZEMUS63~e0I+zh`2rwd0l@!F(!7sM%_`|&0+*B!z{1(u+A9BIU&~T- z2he=L>dmc7TLXZFkeTeCHMcE|qX51{z>0ZC=xGjss*FaXGOMX+dHf8Z8hL6ntGQ_z zF9V<&dwY9jh`D7czyqj4g3S=~)zFA!0980RI4DC*Ez1%L09D8%=OHF&S@Q*;3bRfe zeL2-ZzyeT(Av4`$>R3`j096>WH7BOELD3yR70%Dk%Mk4)1W=73OH{L_UgIc$YFu7k zmRaq`&NxK?Rk*skDzlhL4IV!OsLJ*Ab@{BRT^TO}pgQC6xO~R6G8o_oU?C)>`xlc2 zriH~zU-;g$PyPA_&X!OBSU6SIeB~eKNAhF&(fs&F|1n9<+Yj^2T+4Dj%UFjr zZ%rnX^7Qmn0ANwP308gILtaQfK0Z1j0Br`Wq<=~Ka+?BxW&>7kRtZ+q>C~wJXg6S` zW|cJ1%?d#C0V@Ue)T{uY>425ig?tTsczEc(0+M8_c7^t|!sm-1Nw(}#nnLr?FgGlc zY}ut0+w(d)Uk6FDWtY;*aCdjteIX>tmhA#o+8PqHNU~+SlrTfyKRaNHBx~Ch-FJ3& z%B(Y&NwStp{rH$6Yj{YqhR=Gk~Mtw_&K$#yeTBf z7JV~bCN(VwL$c|B^>Topn-X{+7;S!yV~2^ zBgv-iMkME}U;-COwrsbABDvwg!2wA&ZMWttf5^jTl5E*7V41=|@=Hu>NJ^O8(7b4p z&ChgC(LF5>Md#{+4LgS{%KA|H(Xv`l4P^KdiBKB*_;1&m|Q7!{|O$ k%vVK{T!hwqk^D0L0mO==@4IV9lK=n!07*qoM6N<$f|Ge;n*aa+ diff --git a/src/main/webapp/js/easyui-1.3.5/themes/default/images/loading.gif b/src/main/webapp/js/easyui-1.3.5/themes/default/images/loading.gif deleted file mode 100644 index 68f01d04813c1f622810864a3aaa04b4a17ac8f9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1737 zcmaKsX;2e)7>CzDa{xjjy99|1A!tC(kfocDi)<1$AxHpOQ4k^l!Vx1W6x7<&|FYXU zqO4jEiU-!VR1p+Xj1?4-iuI_J;!&?!+ghg|JJad3U)pMGzcKxNeCM6tJnuX+uPvX@ zZY|=AHdxt2Xr2y*)5|c6#FSEuyJ+Y3Z&l z2hJWo`9;lJ$6wzSoW60tqkB|d$oiO*d-^85^ojn{*NR{MP*%{@H*#gihZ8BKyB68E z-MIbjgNNV0y5khpJ^Jv`51aR%={<4jhaVq5e*9D5+*hL)XCHn4{^d%hPu@?KpKbc=eN!D=XUjDmH#n{YHNS zHCX6BV)yn2CuTNujhN~V+`RKpyXO6^ht92eqhIIlQLfz6eeCnH_C7`NPNrw9ks366 z4xX9(`s~z=+1uX^ocZ$2_fBs=JihPfWYufOIuD&AU-@`>>qn~cy$1)T7CU!5z2(U8 z)9Kt9)l`f6?NU41j6XbXfR{OHwm|T4}&24tIf+!C-g~6cQfY2^n$?AT&ZW zgqm`}3-jS2NS6n=k;sr5Hv(Q%%n)qW0X|neWVBd;Ko}d(=u%?{O0-a>kSI}shOd9n z5top}%gUCf=>?tg;*;#7!^HOL3k$fMxd=O-6Y4@%u8LS)C1D_a?27R6^vcC+6tttL z)GmTahbyJB!xmcHL#ya8ZXyfRl)a!N0BJE0y3BBfAV5;#=K&Z2VkaKZ)?9`1h5P_% znt*b}%j1|#j`b|aQDx@~wA#$PYRN2xE6UO;;vE(@$&xww-s8fZ5HmJ(eJ*rQrDbaawDbrfe_8F(wq{ge?)qQG`aXV;r(*6EM|ESje;52aFmrX!f=Pw^2oGQX$1|o4yts|b_5@w_kNwtl{wDP#JGMvIp#!SYX?Wq9S&`&_ZwkgGH5CLB7DEGJ6=R4J~p3Z4i^A}hs=-uZeD zs92l6u@**R$~L()G{5N8*7cE5-q$SCo`q4|NSVF*+A7&xZnypm$EdXgf)E%(VJHFD zSgi(H!D!(;9Zcc#GrCCJh=RlvXBQ-hv4Vodse`a32ZUFWgP5ZhM5LeV(#D^H8p@Lg ztra5R32z@1rQv{6u&RZL5%Z@Ye{q|t#6aM_1hIrpl@)oH6}os*cbAQywa{5<`ekzW O1il%9bk82&KlvLjD^%40 diff --git a/src/main/webapp/js/easyui-1.3.5/themes/default/images/menu_arrows.png b/src/main/webapp/js/easyui-1.3.5/themes/default/images/menu_arrows.png deleted file mode 100644 index b986842e7e4044caed18edbcb4b376a4bb915623..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 160 zcmeAS@N?(olHy`uVBq!ia0vp^4nQox!3HFkJ+IURQt6&9jv*Dd-cB{-J7B=U{PTZ! zWrKV9%Z3|Wt5t$(gq+#d+-OocB$0fsr9DfRx52vPhSu$$+yXuy+69hDZ54DDTxx#r zL7>-12UT01v)>tZ+;HI4pDNf?@KK~EC$@35ykmXyu^HJF3})N>8P9Uwo&~g$!PC{x JWt~$(697!FIeGv9 diff --git a/src/main/webapp/js/easyui-1.3.5/themes/default/images/messager_icons.png b/src/main/webapp/js/easyui-1.3.5/themes/default/images/messager_icons.png deleted file mode 100644 index 62c18c135860351063ebaabe8c0f4df7664b8f65..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6116 zcmV4ipNH~GQlZq-E3cpkxw(Z%$u2@caXAbn6(}n&uLHV9 zeNxi1kd>9kQ0nnzI23^L1q<=Vn6aoDF%s3ohok!Aj~SQ$`x!2NI~x~v?M6;^e!bq; z(yQQH2Fglz{=N4)aWWYxXLE7&Y9;>o<2T&6UWHrL)n-B0%fq!al> zED?O^kKb{*@(M0j-NawFs_P!l&x5Wsy=;C-LD_2Cr$+B z%mHj|RV-S>@98`V;?`TeQT5tuFpQgkwCK3MjU2=Ia8%!VQb0jfRbQMvlUu*{%FZul z*Gp2(5g!~LhrI`mu{iYSiF~~fJP$_Teq5hp&=D_4mPFqP)bF>;RV)Phj>y;)76J+C zUjBw+Pw%?KuU!kcxdHC(DyU88NC?xX1EWWCB9IU&+qOmg-0x8T&d*0>rGgt(3JZV` z7xx@CtUvnT_d1tvz-bZnB^NHR<4wtx=sSGAxY^r`hVB1rRv?$E{$x-)Fe)8~L+|Ve z8TE$qMNB?9`ff-!hq5cTSOiouf@3of6c&HiX+Tkb>(y78OeU5Hc51fL8ag5}E(J=lGyh8qk97Jwwr6mcmOH~pcs z{ZYUk%0meJKHGY(VY!oZsN-8;rXppImH-+?cddEOU*=taVXX;1q%Fey7;& z=F;GN`DHE%p{KIp=N}~EGW)jwq>8E2jpVcQiF_iN1Rx<@uay8vKKIuIK*@ogJy`^a z0>?s*qkihX!oW2vA%Lks^tHgk(n>$?n(v1DeuGaLGNswE5g^zn9vsnZ=+2`u~kwiWv5INS=`Im31M-s&s z-}^v$ei>dK=80EE?t#*7E|jOg#1pUDVA6I6BVh~Q_RMc9eR2NFSf$s`mND7aK61aPaJ z5P-G7v&M2TV894Wn6&-g?~!z-5ZO6-T=(_lOX3N1UJ|=9Y~k#Sf1$^4XDFTK zKavmknc%QWrF1UzurWAT;hF;pwys%aN|lN9t4v6QQaBU zS5*NV4|)cVJ@Gx_V$*R?b)RBAH}{+|t|g(ej#Hb+(>q)CF-N}Pat&l35&+?3W;twr zaKY)M49MuG5j)2}x&NjK`7{6&Mkn^+G(et*~p*dI{2}J5cUA{+ySJtu!-Wub{*IoTnIRRJzA_boPa3iM!eI`%biy*%z zx!^MPg{Ncd{xJCZ_!&z=CKKf)NQp?k53cKm9b;KhYfSyFBhm0Qvd(knXR(q!+^N2}jUepB8y!+?z(Z6v8xHFLZcgCSDn^0@g!T;>n&iP+APZ zPg_IP0iQ-bk(_<8+6X#NpHD8n#UeOxG7n$Ou;+CGa->lJCZwBU>Z%ZQ9_EYQGvYCS zb3D7-!6U9l03sP)8tlqM6Y=DFf)qhg@t-&tl?mTt$=K|&4KdO2ssOrnV*yYC$k^T? z>i(g#XHhMLPB>9ez#`BSFWW@^tj|7U@@0R|j0_x~JsVZco1;Jof!u#eAW|g7Ga*Nk(3#}L2*uv`@K9{&}TI~0z=_*swgh0B6#=RPcd`WU8ca1@C3C4Xf;|N;j%3S zuzE)f8og=@<*`NT44|U}l%_WL!TAIWz?67GYMBayCIBh{At^<8qrVLg2m_;1xCBs* z){`$ITn{2MIK2{)IaS=I{$m#H<>-I-%`Gf~&ld+7`w~)1YeYcpu=G+EfYbK9@E3Le zTv!x4lLerQ?ToL!LU>*tt_XigQt3UV0uf%Sk)I;kKa3fR-NN;HJRTih$V#{EP(p{dec9If%ipss2u&;)R3Pe-(DwG64LS-2|!M8&5gtGKdG z{gyGVujhn+eCPz_g^fHDpy}YkEwQx(AW7GQu95qRd_o87(XiX-iGZ*KL?mXi08ELe z*eBxT(Nqu=^=<*Y}O2!g82BRO<4eh z4dT0J%&@tuWn*%GQCjWVuR8xJST%TG9RH1>Z@;3g42pr_MO7&8z4IC7&G)-I0ffe6 zFgYXueeI?r5lZcxOE8LH(AT@vbpV|JC?WLZliTG{w&TuMBQWti3!qKcPw}JuPF|p) zGC%_~B2^MDT`SwBpld7KQ=t4~DXhnbV|~Ci#GkKA{HYQ!s7=@P0$93iCA*Z|$tfTP zag`E}Kdw5we}ANwm)8Vsp5b0`HCAVpaguNB+Z!blGMC$|yo_vH%ED0F(ff4kK{&9sYfS;V*G5?3fNcv|lj%5-7MRnPePcq242Ccp) zzWsI`5l~zI-WdC077_o@Lo5IyULrya6p8%9k30f@an1UL7ep=hzAZUr=a#7M&l2Qb z{XgT#|MS7k#OJ!A!y^MZ1w7V0X`B(z0@0sEY6^7gJ|0V#@4vkOypP22QZ232S*qU> zJfO2609oVdA5Bh=)Bf@Lc4Ss14ksAkbFvUtua0B^?D;j0#{qF!6}KhZ6f_o~nm>MZ zjIq8;!Yv^p=Q;~uTRd}h;G-O1walZw-WIZGUf>h@4d$&FeO|sh`a#>c#$t_U@kQ72=fM+rE-HrH<^^{E3Y-o_=W-Rc@o5r~Wy${K)P5kXZi9z=#_kZW$g~^krVUL#&j)}paQ3OPoF1GdL6N!Fyb||}c z&1?e1I5}}2OQ6`_C&+hi)QD4n1h9U+qeWs$Qd+S9IR1&yvc`ZG?L_p8tvh4d=palS z+Cz0ekzb^xfDpmWJXI9VYhJ_iudKAZWlVE%uM-(8g2S=-OroB6>1Y|_G!8H)06H(p z4lPvM!MV4%O~<{l7x+FK52vA1pBd=+?@2rjq#3{_?@%rU6wg$r^~CE*m+mHP*q@E* zcE@=jNJ7w)eY^k+Ixmkt@#Xj>_zc$WOTg%Fe#G3l^LR-(%(@3VlU!*Ofq-5Bbd6R6 zX+g+R3CO;31-or+xvyFB1?e7|0Je+wZNxakk^o9`*QxHOXfIOTPi|&{wG{aDKOMwp z7s1EzX*B@~G!!>hr-ULku4k*~I=?sx>((8#oB|s>!{B)|oDUr{7NZtLSwUnB8EwkcHd&tjurEao~N!N-G#!FiJlKPM0)W&yG; zOY&shmgIjob}W3NqAZfHpCWD&(?a<@K^jN^6#Yaz!A`VWw{DHin}0S-N=51us{7N) z#Vu6#OM;730jyovUVL^s68)N}2~eaH0qqnD+{kFaf{`hZlXK3z2xuvI#jfLU^$W*t z;Y4yPjo8fz;K=k)@hqa^?5BdKsYcnWjePT=v*!_c+w zM7V6*Z`>86hc=eE9p)sEA~1Ee-rfKF)Rou&d0(K@96V~h7~ZF@))GKK)-48+zcpCY zeeWnN+!2ocBgb+4A3qkx;!9q(oTp_Z0)LHgS<9*Y&8Sgk7kOxAaAxRG;}}4mr*(t% zHa5oZqSz<$cM7;_BCrwY(4hmiZmqj>SIhkcP1N|$Ra9sMQyDnv+YApYA8|jf{{>1- zKS}}GB%;sfszQ3@)$!Q4@mI?!Ku_-2`$WQdUj*C^#dEzpdiJVO0I8MW(LSyGDKEOA z&EQaU`6_`y?S|dgW7(c8WAyJ$xe52kB943_fBr8gIr^#g+bnRZ^|%;q2>Av?un0DK zg>apw`%~T4$GD94e$&;}zbD?=iM9iMc{;c^xvCcN`%-RTceHS1z*#1L(bfb+(2} zbL^OWc7J{|HU5drObz-Z5TqX8(XuA`b9H?(we&z2!0;%l)7A4Yb(sif=Rn+cYuM4% z4-;1T8q;8-Ujj!s)o&>V5&)$G5idc+Zx2%)Z@)L5vBEnJqn7SP^A|_3^G8lt4sX9u zvk!!DDH6o|yu%yc*n4pr5P4L$X~&OZd{?-EBc0q%AhM+}s03^eFNU)a-dew8qw6Qz z@58{)zh>vtw2wA`OrH<*7ozaj>hn&`wcg#j;Y310EmFz(rsT`feL%l{yh5lK%l;lc zn0Ru&opv0d)&C_+meu(mltnkjg(wBrk{SXPt(ZI``FastRE#Tr?EVs^wooK4TdAvq zDXK`eujzv4Ut4|q6d-c8dj#-q-30qXJT@RP5a?kGB9+KpdnlC&r>OTlRmqMgvCuW@ z_l4b2c73x>L(r+`XiWQVJq`wh^Mfb1Tl}CTpr>|bE_Z>Ay$_SP@)s5Ky(_&FcqC8J zPK1*Pyb`aly@6HRwO|Gko#Ycx>CYg9m-44}!>-?{l450IpiSCir&g zViW*5pU&;mL6R?H{z(7+M)E0D9CYLpYz3MLyxqGG_WRWym6v4NpvFxyM*p#^(dUa*7_-Ek%Yy_9Ly)~SvVvi^KaHdQo$>4N(nkyNu+{s#;WK#jLf-TV zi%7WZ-7l)oG)SY(nsGC2@zs1M7Q+IUKrRtSmXY+88u8SALv#PU z@4m0|P)J2w2Na)Ba4A+0XJ{@Q-NZ;_4WX(4I$O!@U@P7YT<~Qlbtf>rE>J3xaA?r-5JSGa1$c=VI0df1?0)#a+cRk3?AY zn!t6QM)}mAR{8>iqWFQ6`*}i{NFyQqvSSx-+}O;s#iW@FF>S#b76Q55ImEyMpkx?1 zWdT0^Xb_L`iTJ=@gSg(`?bETfe{*yH^5n573{(X`L=kCb-K-_Rptqjk?cmmp zC*as2AaL6dbugG|Aq7}ajd3+b?epp2!RYD2cl;uT#2|n6MfIHK^(%dnu=zwO=Il&n0gyoMhj{%xei|~AN!PpC&O{K7 zy7zWwh_}@+L?gfJYhB^6b{#U$=G6Jyile$9@34ZRAl0E)qcy~6(AqcRq^lMDIIR=D zA2$mAE`9hMT{G>k2Yv7FC)Cfco!1jho|uK;poIJ9Y0usuCY%O)I}v!ttqJjTZnpSr zcP;kG`Sx}WIFn&M5la)NB7L8NtOE)QA@7i7oYRCtg#RU`i>tE-?`>+7wJsRTF zZl&Il;iHPdcE;;y)^ZNocbs-_;{c04C`rl?gR)KNJ$@4>0tvvZHh0orCbulT#ax#_r5?!&GEF%OHcePw_U-5*t@-#r`Hkm z{@2&A?lzXUaqA1#-N&L=k1u%&_;{XKtbAL0?o7LV}O;_fHn3fykv;@7Aq5*LFJ6dpbX5@>H(%M~{XeC+FV(!O_tf q*!=TRhMQYZy@Oouu{+c_4g7y7m@TUq;8eW;0000zI<5nO~0)=fnxErNrCA`WgM*1^R=&_zX)CMr1T;-rJKi{RhT zwTRWWFSbznW6?ZwYBk2xccxEVa`0%4(Yva@;pbF0^9S2uAKfle(?qtbyxJ(2%kiF>CHXa` zwdcneqDH8s8`O=^Z;G*FoH3bGkRlewXgRMPCtCR>olp$6SSk2LaLtdk735GTeS6JrtWdjq}ZZs34}bF$p9qsdLBnIC+J1{xF!;M>5@n5YI? z&4z;cHjvE$_V&)MtT*$6579tEVTAaOu<<1(%cR!^622ph;K0g-9AQF(O3vhYiNJ*b z7Xuat7f#qV!aOb!Q6;pKF~UjxbnQ*DOwWIpHq-OqgFQe0fa`fz9oUMD0Z9VV1d9Q= z5#TIiB5HxD12dV7Jd)hJ_=qt$xd^NA4nEk!Bp@qUu0k4c(cRlRc0Y)25Z^q7^m|=T zEPSa{>fbuK*p?QKGWOF9-+|Bne}*tPWtM~)t<`EXu;7__@_h5{U+e{v=r+F-NMp}oB#0F&Ath1Z0fB%h<+sXzP;6TCwIF) z=XWKASa=$lA2eqle32Vdi_T3x4Qu>yxA*?om5;I#SWP5^#D2B6W$V>}P2w$`U+8H@ z0Ci?&Wu5GGc(Ia9{_CO5k{E>dTE6S>md@Y8z9L=77KeNpc;t7B)#8uV-B0>e^*5VwvF24Q#~Lh^WJDN!=N)I%V_ z3gc!>Fya-lLcclypp#1paq!SzI)AUI+cGqr6pX%dy3^@MQaM7bubeKKUmk$ssBS+{ z+D{bs1Nc(Z?FVcB@Meu!ev3HfXH1NcL_ z+>=<>Hi(2XX;)F{S;fEtv9G)w*hwlY~kM zCZMZPpFad1^A}a4J^;=P&LDat|`y57>Sp=A%yET$ajG`}@`p^xNM^J>GAB eBlUQ{{Qm&YJg{HE_Fe7(0000lXvaa)1B=8vtU6i;3jw7+Lm8D5$Z@i10EnF)=bcefw4K z$^E-CUfjQG`svfBbfD6|R#sLFj6lo3FG$G6@;ee>>~6i|H^5OY8c00W#fi<*1vzh{0&qu3dB`V0{{XDY`}(1n>S9M(9!zw#!&`A z#;*+0{6GVMSeWGp!`o{o8NPge#o%jgs54WT$qnQYpsyGNpauX05F;oJfZ`Pdw6!$j zynTH0RMa&!n3$Pa9zVGEY{&L(3qnPBl_DG6<9Xk0`Fl3`LiD4@pH{vDsxJWQ1qdJp zEJ>M}osCtQlY?CgW>F{;gVK#SmgoOZnEn5J%EtIXaWQXAO>Rdf)WFR;gt~f zXaA3z{{L{q=l48y!32yJ3i0hJ2BS=^}@sXzH{F9Iq&OW375;I7CG-}Vr|aF#l<(fySwu2>`YdxRW*W0f#2un=W5Jmvoe`XCK%I_Y++#`fwE+= zSd{sEULGDE%A=#BOW<6gP*6VfMa^fr8qe`5w%)P0a^Y9WGTw! zvI^|$>l@1Da^Ke1*T3RdY7KqM%gaBb(P+oP!GW;b?ZRfW3Bxc1H@GCaHK#XhZ*Lc= zRBC@>V&W#x&B5%(#>OW5`};d6I5Qw218EG_q@1gtr!Nl*v7yn?(MPMRt4SNy%--JK zanm#f^bw^}Nr7b(EUg}TUi(2;)deX10lAo=83+VA(QksJI6(zwptET-y~avN=J9w$ zI2`W5lG|aOkjY7(&!@;Jx*nUA>~J`Q)9L&(G8y=g$3a4YgD7z)5>gXQNKhw=uR0zF z#jHruh)gDv=bj|2ZES4(fEM?I!JyKqo=}sj-fBYTcDt4KXq)eFQH}wW`vh%Mla}#@ z@Mb`C)x@YkK{xd2>8ZLg+E!Lps$Q@6DY-~!0=Gs+Mm~_JnW1EbX2uxClEdN>Y@I78 z=ke_9?7sX@o0*x}M{JB77MIXj_MmNE%+1Xe{*{crh)9={dR(U;y-{jrxUXmG%Gt002ovPDHLkV1hy(sXhPz diff --git a/src/main/webapp/js/easyui-1.3.5/themes/default/images/spinner_arrows.png b/src/main/webapp/js/easyui-1.3.5/themes/default/images/spinner_arrows.png deleted file mode 100644 index b68592de3200fbe1f7defe98a2b59b0398b1b737..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 115 zcmeAS@N?(olHy`uVBq!ia0vp^3P3Et!3HGD8EPYel$EE8V@SoV_tDnm{r-UW|t3f!- diff --git a/src/main/webapp/js/easyui-1.3.5/themes/default/images/tree_icons.png b/src/main/webapp/js/easyui-1.3.5/themes/default/images/tree_icons.png deleted file mode 100644 index e9be4f3a9965e49a4e4078f8c53f486d761a7468..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3115 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 diff --git a/src/main/webapp/js/easyui-1.3.5/themes/default/images/validatebox_warning.png b/src/main/webapp/js/easyui-1.3.5/themes/default/images/validatebox_warning.png deleted file mode 100644 index 2b3d4f05babf3f82b146350e96570fac02075de0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 921 zcmV;K17`e*P)nRv1_mBsMY*-M^XCf)eflW5 z|MC^)Hw+AW{sHCCF+cz@{fF8J!+#-kxoSv=7^|!zgOQUngSQ}mDo|J)n+pH}hzZ#= zr~y18$_m-?9v%$;?mu8);}>9vFgFvDXJDwrW&l6{p}625M66yTFhGz^K$w9^O$BHi zFN2Ym7DIple*#cW4BY^L0Al(Jbv6k9U|^6IQBp{hx3XdQ&CJ4Z_|YSVr@XujY(PVT zlok1<85nBO4FCurumK>O|A07*jFlSRUcxLAQVcIR*co#3@)&jj4Pj7KXRri%#h;fa z4ya5O*#Lk5Vq!q}T~=CGH(uV-hJk^fkAYoGjN#AMuMF($>N=giWG}IXse|=+c=i>7HEg>%*E%fLD!-uy|85n^6W?^Dt(9zXp5EB&z+w>_knBmdiKMbzi z?A!`WOl>e100a=&05*1xZdFls?*HtZ48H?o7=HW%ivIu45E2~BASWx!@DIpmv9e}h zaPwji|L}pqor@y`=yxrU0RRES^qYY}O;TRcU+DKIhL4`%3_nyf8U6tS<<-ZJ40D$( zWjJ%`G6NIPHNP2{7am*Fp% z{>ShK#0G`~kjd~57_BUHq8x z8Mn?6aTf^k-V*tOYvn_ZO}fk5lvg|}E|PI9vs&aPwII@?XO4*juRBlIrj#un@>dub Yl7)&6CQe}74m6L!)78&qol`;+0Id=veEh?7!oT zn93bYIb9!43Wj)WNz0M)xYl!8U>3_OjRiss3@1w0OwrH79T#p(gyX!(OO%qL5+0mDFDfJ;B_@in}@(}4BiPLQ2?X$D?b^JVD5OIknH tgv}h^JNN(XBRKqD;7RpfJ(WszOFJ3?rQM;ds#yR4002ovPDHLkV1n1EUx5Gs diff --git a/src/main/webapp/js/easyui-1.3.5/themes/gray/images/datebox_arrow.png b/src/main/webapp/js/easyui-1.3.5/themes/gray/images/datebox_arrow.png deleted file mode 100644 index 783c83357fdf90a1c7c024358e1d768b5c09c135..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 626 zcmV-&0*(ENP)5OC%H;f`~O(q$Q#t2<^v$A>fbmv%e#dKTwK=Ku{5lS|}<-`a#7b zzTCOnnT>at)D}AMFuOZ5&%EqFN(lyumd$2ASF6=;nM~%2?gqc@U=#|4PqkX@EBo-9 z7pD#bO_RUa>*faM`8;MYfVi$JnB-zcBFc6gjl$d!bF98Q!!!(Z1_R~P?e!pt#6CHJ9S&n_n&@=9 z%GP;!@Co4c*at+6vNz7o(6en^Q1%qHrc;1)9IRaz-$@S$Z-qdC^ds3X0NvQH;KS)D z-dh&rW&@X;1cS(45z)J&BVt+tv&GMVJ%!EiW) zLBGZW)#Z+gl-Lih&?>X3SS-S#ujQ;9JRXmIB7X)8`d6ETj)D#Q2+$s|<_b7-B9Xvq zwNfqlEp%y3$uY`h{Y$(Gn5@}sqEsq95lpAkFO5dyBmP6^H-51G4J|rN2Ujt<`2YX_ M07*qoM6N<$fWs*_M~|PZK4f_B}P-f8$r|z#h zE+)9D_?OzcE{A)9cRCb`94D|RR5VOsbIEjx-=1{JpsQ;^Px3ZX?(@vc^nEOU2KU{_ gJ$cDa*@;a`BkgHpqSBTGpgR~mUHx3vIVCg!07Oqo9{>OV diff --git a/src/main/webapp/js/easyui-1.3.5/themes/gray/images/linkbutton_bg.png b/src/main/webapp/js/easyui-1.3.5/themes/gray/images/linkbutton_bg.png deleted file mode 100644 index fc66bd2cd24047b8377342365a1df3846327ecde..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1274 zcmVc6j2;SWMDuL>F^vlqEUI{oOgO!xNf*11TukM z6kTZ3V2qd3<~<$H&Lrt?SpXUxF5Zb^}(={r!EHE+$QMdH|XZ zSYbMyc0tQc3qbP$tG{U_Jyg>I(0srOscEGU?-T)4AzuS$_2J>6`+BJ50YDY<^>2vV z+uI880P2ui(hyHiPrK$)CkbHg=kD&V3^8pD z0v3QOB&8eT@87?rgaGPrb#+ySxU;jP=nkL`nZ_{0e*BD+1Tc5b&d$oLo}8R$90gF1 z^ij>~#>R%HIRNUB_kgpQ+Lg!80Gbb2saY8>1EBeUm7A3TegK*dSciv)Wqp0!h-3im z1+1f^qq4iZ+ZEMUS63~e0I+zh`2rwd0l@!F(!7sM%_`|&0+*B!z{1(u+A9BIU&~T- z2he=L>dmc7TLXZFkeTeCHMcE|qX51{z>0ZC=xGjss*FaXGOMX+dHf8Z8hL6ntGQ_z zF9V<&dwY9jh`D7czyqj4g3S=~)zFA!0980RI4DC*Ez1%L09D8%=OHF&S@Q*;3bRfe zeL2-ZzyeT(Av4`$>R3`j096>WH7BOELD3yR70%Dk%Mk4)1W=73OH{L_UgIc$YFu7k zmRaq`&NxK?Rk*skDzlhL4IV!OsLJ*Ab@{BRT^TO}pgQC6xO~R6G8o_oU?C)>`xlc2 zriH~zU-;g$PyPA_&X!OBSU6SIeB~eKNAhF&(fs&F|1n9<+Yj^2T+4Dj%UFjr zZ%rnX^7Qmn0ANwP308gILtaQfK0Z1j0Br`Wq<=~Ka+?BxW&>7kRtZ+q>C~wJXg6S` zW|cJ1%?d#C0V@Ue)T{uY>425ig?tTsczEc(0+M8_c7^t|!sm-1Nw(}#nnLr?FgGlc zY}ut0+w(d)Uk6FDWtY;*aCdjteIX>tmhA#o+8PqHNU~+SlrTfyKRaNHBx~Ch-FJ3& z%B(Y&NwStp{rH$6Yj{YqhR=Gk~Mtw_&K$#yeTBf z7JV~bCN(VwL$c|B^>Topn-X{+7;S!yV~2^ zBgv-iMkME}U;-COwrsbABDvwg!2wA&ZMWttf5^jTl5E*7V41=|@=Hu>NJ^O8(7b4p z&ChgC(LF5>Md#{+4LgS{%KA|H(Xv`l4P^KdiBKB*_;1&m|Q7!{|O$ k%vVK{T!hwqk^D0L0mO==@4IV9lK=n!07*qoM6N<$f|Ge;n*aa+ diff --git a/src/main/webapp/js/easyui-1.3.5/themes/gray/images/loading.gif b/src/main/webapp/js/easyui-1.3.5/themes/gray/images/loading.gif deleted file mode 100644 index 68f01d04813c1f622810864a3aaa04b4a17ac8f9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1737 zcmaKsX;2e)7>CzDa{xjjy99|1A!tC(kfocDi)<1$AxHpOQ4k^l!Vx1W6x7<&|FYXU zqO4jEiU-!VR1p+Xj1?4-iuI_J;!&?!+ghg|JJad3U)pMGzcKxNeCM6tJnuX+uPvX@ zZY|=AHdxt2Xr2y*)5|c6#FSEuyJ+Y3Z&l z2hJWo`9;lJ$6wzSoW60tqkB|d$oiO*d-^85^ojn{*NR{MP*%{@H*#gihZ8BKyB68E z-MIbjgNNV0y5khpJ^Jv`51aR%={<4jhaVq5e*9D5+*hL)XCHn4{^d%hPu@?KpKbc=eN!D=XUjDmH#n{YHNS zHCX6BV)yn2CuTNujhN~V+`RKpyXO6^ht92eqhIIlQLfz6eeCnH_C7`NPNrw9ks366 z4xX9(`s~z=+1uX^ocZ$2_fBs=JihPfWYufOIuD&AU-@`>>qn~cy$1)T7CU!5z2(U8 z)9Kt9)l`f6?NU41j6XbXfR{OHwm|T4}&24tIf+!C-g~6cQfY2^n$?AT&ZW zgqm`}3-jS2NS6n=k;sr5Hv(Q%%n)qW0X|neWVBd;Ko}d(=u%?{O0-a>kSI}shOd9n z5top}%gUCf=>?tg;*;#7!^HOL3k$fMxd=O-6Y4@%u8LS)C1D_a?27R6^vcC+6tttL z)GmTahbyJB!xmcHL#ya8ZXyfRl)a!N0BJE0y3BBfAV5;#=K&Z2VkaKZ)?9`1h5P_% znt*b}%j1|#j`b|aQDx@~wA#$PYRN2xE6UO;;vE(@$&xww-s8fZ5HmJ(eJ*rQrDbaawDbrfe_8F(wq{ge?)qQG`aXV;r(*6EM|ESje;52aFmrX!f=Pw^2oGQX$1|o4yts|b_5@w_kNwtl{wDP#JGMvIp#!SYX?Wq9S&`&_ZwkgGH5CLB7DEGJ6=R4J~p3Z4i^A}hs=-uZeD zs92l6u@**R$~L()G{5N8*7cE5-q$SCo`q4|NSVF*+A7&xZnypm$EdXgf)E%(VJHFD zSgi(H!D!(;9Zcc#GrCCJh=RlvXBQ-hv4Vodse`a32ZUFWgP5ZhM5LeV(#D^H8p@Lg ztra5R32z@1rQv{6u&RZL5%Z@Ye{q|t#6aM_1hIrpl@)oH6}os*cbAQywa{5<`ekzW O1il%9bk82&KlvLjD^%40 diff --git a/src/main/webapp/js/easyui-1.3.5/themes/gray/images/menu_arrows.png b/src/main/webapp/js/easyui-1.3.5/themes/gray/images/menu_arrows.png deleted file mode 100644 index b986842e7e4044caed18edbcb4b376a4bb915623..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 160 zcmeAS@N?(olHy`uVBq!ia0vp^4nQox!3HFkJ+IURQt6&9jv*Dd-cB{-J7B=U{PTZ! zWrKV9%Z3|Wt5t$(gq+#d+-OocB$0fsr9DfRx52vPhSu$$+yXuy+69hDZ54DDTxx#r zL7>-12UT01v)>tZ+;HI4pDNf?@KK~EC$@35ykmXyu^HJF3})N>8P9Uwo&~g$!PC{x JWt~$(697!FIeGv9 diff --git a/src/main/webapp/js/easyui-1.3.5/themes/gray/images/messager_icons.png b/src/main/webapp/js/easyui-1.3.5/themes/gray/images/messager_icons.png deleted file mode 100644 index 62c18c135860351063ebaabe8c0f4df7664b8f65..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6116 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 diff --git a/src/main/webapp/js/easyui-1.3.5/themes/gray/images/spinner_arrows.png b/src/main/webapp/js/easyui-1.3.5/themes/gray/images/spinner_arrows.png deleted file mode 100644 index dba62bb723518b491c763eb623179afab0f9e1a0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 141 zcmeAS@N?(olHy`uVBq!ia0vp^3P3Et!3HGD8EPYeREVdGV@SoV|gxNLixBH6G+?&imoXunS7gp2NL oacw*Y(&nwsF2UyID`n8m&$nZ<^krzppre_*0C6=+@buQ_y%c^L~IL^<_ t&+}8oM91jk1`W4%S64GGH^xE+hOnLmClB8dn+LRl!PC{xWt~$(69Df$H1z-g diff --git a/src/main/webapp/js/easyui-1.3.5/themes/gray/images/tree_icons.png b/src/main/webapp/js/easyui-1.3.5/themes/gray/images/tree_icons.png deleted file mode 100644 index e9be4f3a9965e49a4e4078f8c53f486d761a7468..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3115 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 diff --git a/src/main/webapp/js/easyui-1.3.5/themes/gray/images/validatebox_warning.png b/src/main/webapp/js/easyui-1.3.5/themes/gray/images/validatebox_warning.png deleted file mode 100644 index 2b3d4f05babf3f82b146350e96570fac02075de0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 921 zcmV;K17`e*P)nRv1_mBsMY*-M^XCf)eflW5 z|MC^)Hw+AW{sHCCF+cz@{fF8J!+#-kxoSv=7^|!zgOQUngSQ}mDo|J)n+pH}hzZ#= zr~y18$_m-?9v%$;?mu8);}>9vFgFvDXJDwrW&l6{p}625M66yTFhGz^K$w9^O$BHi zFN2Ym7DIple*#cW4BY^L0Al(Jbv6k9U|^6IQBp{hx3XdQ&CJ4Z_|YSVr@XujY(PVT zlok1<85nBO4FCurumK>O|A07*jFlSRUcxLAQVcIR*co#3@)&jj4Pj7KXRri%#h;fa z4ya5O*#Lk5Vq!q}T~=CGH(uV-hJk^fkAYoGjN#AMuMF($>N=giWG}IXse|=+c=i>7HEg>%*E%fLD!-uy|85n^6W?^Dt(9zXp5EB&z+w>_knBmdiKMbzi z?A!`WOl>e100a=&05*1xZdFls?*HtZ48H?o7=HW%ivIu45E2~BASWx!@DIpmv9e}h zaPwji|L}pqor@y`=yxrU0RRES^qYY}O;TRcU+DKIhL4`%3_nyf8U6tS<<-ZJ40D$( zWjJ%`G6NIPHNP2{7am*Fp% z{>ShK#0G`~kjd~57_BUEIXByHCeHaE1;X?z?mDoOj=wJCdepm}8&wfK#34WzG`kH6@HOEQ5D4nNU0p zg+c{IQ4o*Eh0tg;RKqaTPN%cW(<3;*GairkWmzs{G8wdeG3W-6(}DBnIOrK^RO4tc z8jTK;$t0fIKJ>>Dm;z|L+wCxK>uwdKQH_&+1o@wS#_tuvl{wN!N8gY%M+`O<~gOeOmuIf|ChB qqRVhXivFrO>^rc%=JDi9fB^so6Bm_-0j)p)0000$l!g*-<45%Tfal_QO3M!_cGPo$3v(JkL{K@Q z51|Vi&DiTh`D29Bc2GLsg^`#DWXp>{*dgvmvwgz7fRUBxQX~r1c4#1{!U%OP=)oU9 zm!$Gy=tc|Sg<2;FjgWIsGJw&)F^4y}@GBCD#z1OR^SJnDrNxJy5N19{e;B`q7IO>tSRB4*pRl4zavF}? z1HWi07^v@*bg;^f%hDH-NKWzFyLqt{A#{#xb%Sb$v0zg2)JJ*X`~Hr2j*_(*I$7B!L2;0a;uh ze*%m**EKhE`nH?x`c%G<$)GZrckVKUd}Hb6V>>g`IGnVHoNbCaNy&OHicbM$XKo+L}c+XB@=nqXjc%WR2_&rZH9^`(H*)LNCVWLmRE+tz|o-N9=} g?38)VDzrn|{q4yc43#y5pkuRSTR)fRrCiwc518Kcm;e9( diff --git a/src/main/webapp/js/easyui-1.3.5/themes/icons/back.png b/src/main/webapp/js/easyui-1.3.5/themes/icons/back.png deleted file mode 100644 index 3fe8b178ec9eb9fdbfefe0f2c81c8d4acf0dc275..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 912 zcmV;B18@9^P)DPbufGfoO#dy!l?7(~R{rJuB|Ic3( zr2qlMf}#2UUndb!-U*#ucDjkNIt+}=Obow%{r$o4^UqfXE*6k;foc%S0Rjlgfd4?5 zf5px&s!cN{J9F|ViZCp>{+}U8Tk|V?U_iPMphZz_IS$;9h@%hJaXH%3`;KjXZQ*9FFVV3hN%aCGjMUR1HHn+ z@a^MI26o0j4AJ(Y49b$+;J^R~Ag}?Z#!~g|?RE?+ZZR?}IQyT0vRH6Gfp6#Aq|XXnD!yol{GeUeEH15z{&iNK}>*+ff=Ho0U&_D2K@WS)Y#U3 zL<*QjlG@v>7^K*LF;uO1$H33~kD)O@mf_`_pA4@*{$OBc;sM6se}=oyzcD<1{hb-4 z7a)M3fynfS;s3w1j*cU*?%aD#}SqhQ+&{GkpB3~WDG86SXj0t66JI$#2Z>i^0$tFE0td*)?Zf4{AAccL7__n-e5zW@IF`Rlho zISk)^-(&#U%K~&i4@4_K0AWeW%&YF-``{WFx_xe1-VuhUFTXRebF#1lJi_@W|M}sAhw_srY>W~TKsPfouoxLJNIief_Uq!sAfaEsA{^Y@xOjmE zgETUH_`vZ0)G3BDOP2h+bm&kaKmak@u(Mx&^y$-mrq{2%AP9OrSt~`cWMBe}Df@WdXVtAb^-{fqrKM zhBm{WKbK$p{CV}~>(@b&Z{ISrfec|{VqpC9hvEOnj||^|n$Pav|M&czJ4yfk{hPxK ziXor@00G3p|Me>aP=MhdQ1O2@wh#Zfxc+?xI`hkm7YtzU0Ks3N8c+cLWnuXTwCn>L zPz;1Y=>#Bvm|a;}8UBK7;o$HwmX%#&_3Ev z8Du=HOuX z4|L&Apeyv`#@8bfBxE!U^>5?3)J&j7~IN0z^T7prh^aQ_9m=nqi-_p@gVCMG7_z;K%h5I{^nzkYr61?WsB zppBr|;1UpEcqkg| zJvP6cH#>7*3|AR=fFz}g@tYYSV}J2>BFSQub5g3_*R)>>)HtT z12EQ7fm9>wvA&pY{E9XIK4`_L=mX^e)HfiLSp`5llG)>q^{!Xi<5*OIrqj@?K!Xwj zGLbp}X)Gd0`-g5HX&XVRY6K}H3_SpAEC@7G9-!<&AcCM1Q!%g}YXuR=p#!k4ZDObb zO(ly|x|=B@gsw5v15G8%f$#u-3{vP8Y9oY3IWz~gO{AZv_j!L)`JHLohv diff --git a/src/main/webapp/js/easyui-1.3.5/themes/icons/comment.png b/src/main/webapp/js/easyui-1.3.5/themes/icons/comment.png deleted file mode 100644 index 296b830934f94120f7d623532272b9bc1cc834a5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 612 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 E-}fr1ApigX diff --git a/src/main/webapp/js/easyui-1.3.5/themes/icons/filesave.png b/src/main/webapp/js/easyui-1.3.5/themes/icons/filesave.png deleted file mode 100644 index fd0048ded9baa040b1c04b84cca92550acad6f64..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 898 zcmV-|1AY97P)uMFMs&||L0%d|AW9UApQ!(pZ@&+|Lq@y|Mx!xy!-m`f6?aW|CJIi zgSZR;0Vo`U6o5e(2o6=NC;k67TPnoF(0CnomdWR}+}Y*TYj=gwum!e34a6bEszh3= z!9Qg_5-j;~e*pwG;QznB|Ns7DWME)o1UvLUBgD}l>Nil}H_*V}Ob~(JKmlGpK?W`k zuzm)B0AgW)14af$paG0PMQqGK9!Q=Us_72{I7~pU0)`4Wj6lu@0e}Dk8vxV?mSALJ zf(SB0Y-eDC7z8r(H&F8*sH6WgGBGeRL#zb|Ah-*dfU4M-L8kr%^O=DPIDxwV0X6*r zc?B39|Nnu!_Y-I?Cj%2yA3y*>0ujjj`kRsA*aK#UKmY##Z39LlQ0L#je}VLWhQA;$ z03i$WUxq(F{xf{~!^yw`jbDHO0vo{2@}J?wcLs(tS6LbUeES7<^Pj&!!+?SC_b(&` z`~X_;?h`WuhX6AJJ3lZ+SRe)f1Q6H&W}qLx0b`K!=QoB7%dZUL;!F%*zcDiW`~?XM z77j*++Yf#-Kmb7k5$NBaKxeYD{AG|5`NuGK?Oz55Qziy; zeKv;gK$mfHGBNIfE{W8Kmb9!05tU%&_vdFGjGd1eqWv00a=k1&oZ$Yy|!NK66*5ZHhV+bRpY|MBzx zeXpJ~@NlyNT?C9qXd+?)M%h=O&F_E~aC~8Ako(8TcyI5es|*dw3;+Sd2uqUW0)PMm Y07EoBQ)jr0B>(^b07*qoM6N<$g57L=!vFvP diff --git a/src/main/webapp/js/easyui-1.3.5/themes/icons/filter.png b/src/main/webapp/js/easyui-1.3.5/themes/icons/filter.png deleted file mode 100644 index 1fedf7ae66f9512c8991a91f606e33926210dfd1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 305 zcmV-10nYx3P)i;JxOiC&m|MyN^@V~Zu%6~m0)Bj`zY(-tqe_OBM|76EZZDa3$M~@)# z4XCPX|L^4POMwARE&rW8d?@fjbNzpNXSe?h!y5nqPb`Zh>Gjmx00000NkvXXu0mjf D9Yd^C diff --git a/src/main/webapp/js/easyui-1.3.5/themes/icons/help.png b/src/main/webapp/js/easyui-1.3.5/themes/icons/help.png deleted file mode 100644 index 28a0f9e5e6a24fe2cc3d842d0708e70512dbf84b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1187 zcmXX`YfMuI6h6Hzx2+Ut1EjYq1A-3cSfq4{Is$g`oXj!QjiG^7TiBdhXGlOZxm1@9 zS*DOla3bRT0cHN_rJ;^5DgN)q2ZN z|EAt&1z&5w`m%mvX&4t+@c4Ki)zj^n9Qtq}u-Kkgm|S+sG2Fc6RK?X36?YJhP0dA}?VOU?JP&>G6klO2uGz08Gy=gKR?}h(b{K&aenodIzi% z2f@MJp01+RY|(6BJziiDpcm1+C)f4BSg6zCdpJmKRiimi){G4(q} z1^PxxRYp%IvSXi?q6Z{WU1=c||G9fvjNOV8M5eGC9+9=$-Km*DQ5AV*WII_(dnpARZKp%77uh;KZ$z~72R!)*N`!~x=0M8DAMel@xO((;7NkGYln^j z>m@53+D`)q@q?T2z|AfKr0Wq7@&V%3vEWE%IJj2*@I~|AQ1|l-SXw1vg>V7oa|8I- z0PP3HCDVWP3>La6dZtL>>2W$NTXeTeE3}I*#OEs`#HLvXE;&}!k}!JOU8}8G*^*;= zPjSv0_%M5yo+6j0Lw14m9`2dn-mf1NjIPg)Vw7)%a0o9zj^>|q#+Vv13MJSTT;}7h z4Zfq*P7G=k-K=j!InVUNj9wh!)4I~ern6^GUXtfu4!SZ`QB}@5t|WV`n%8=*ErSn) zGjYM$*~Vxc9q@=I`#Q~!`<=w&Se+$ud=Pk1O*Brwau1*M?WFKRth>8iTZJdIQgn~v zCzI($b7!BT>3&ZqyhH4&mz1-ow|8KFVjY;l(ti5lghhYge-hacl;-uimIqemZ0Qjj zBEs2%Kv-FHfq7&Jo><&)%Bjgdi{^SdvbB+` z{s9&)87BY$ diff --git a/src/main/webapp/js/easyui-1.3.5/themes/icons/list.png b/src/main/webapp/js/easyui-1.3.5/themes/icons/list.png deleted file mode 100644 index a14d95574f5f57c7d1514e72ca100dc15d70e78f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 295 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`k|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*D5XPI|gHhE&{2`t$$4J+muA3WKt8vV_3;#!Ea$k|xB7t*{hK zO-*f#jg9qj_@=euhLl2@%ORhPH`)#{e8r9|0{IP>RCYE9x)>N5PJH^e{{KHi1H%B0 z1hykgAN@3Zg&J6sYTVrBeeRK*Jfrc=(SVJ)9*k|=(TAA~1v~g1GJmltard>f8ee?K zb)-bWj(Mr4|0#z8V;vpYBRe=BIsC0)>F8(t$f;n*dL(_}%J+N%_Kc6dChQGh?rQuY pIpvsSM#Nt4%)BKQs!S{r49OK?dY9(~F93Rq!PC{xWt~$(699d=Xz>65 diff --git a/src/main/webapp/js/easyui-1.3.5/themes/icons/lock_unlock.png b/src/main/webapp/js/easyui-1.3.5/themes/icons/lock_unlock.png deleted file mode 100644 index 535dc1dd955d0dd0c7cec9f2609ca4791eebf7eb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 548 zcmV+<0^9wGP)cVHn51lhfuFq{%V_ z8gHk(DIQrYcvIy0qGX*ZL}fJ|xM(I6I!q1WrJnx=_zxeQfRk2nvU!(y=rK@dm_ zJGL-tgPWk)Y$BOVYPS3kjYg43Bxvmt&i2G(d%}|<^=*If`?V;FZck)o>lfyvAU^v7 zn0EVssZTI_*UjN zvaBI8W?BFoHiR+5#?~A{d@?Wz1MS)sl$$)3);;`Lw>0*S!SFNEakers++LocUA^Fa z8AD8BqJdpDfAQ<)56pg9e$Gw??1Kh01NXur*1qpN&j9A+7U++(pgCCW*lQ|%q&W>y mzi+21`STAQq;cY-00RInhZZ3^MY<*c0000>$j+3?x7IEPn{3BuiW)N`mv#O3D+9QW+dm@{>{( zJaZG%Q-e|yQz{EjrrH1%xd!-zxLTAQhakJ^Q+73{+?&sPG@tVTk}cBH8-FbMA2gTIwZ$R1rnqZ!{LQN5dZW*_A98)a hcb&}1B^+S+>+nau>-9y|=gz9{lr;}c=wVN)Q*o7; z#1rt#{)*L{NuLvUInMbWz@F$~q+t2X*32`7HA0n}1B^+RR-Z*1Eqt_euNB=!4?3hCYmYkCBcssH5 zPdnEk2K$~yJ;tQ}=`B*K3`ckaI0gPP&VH(3X7A9z$Z+9+&@?^iN_(Jb44$rjF6*2U FngA=BGHCz+ diff --git a/src/main/webapp/js/easyui-1.3.5/themes/icons/no.png b/src/main/webapp/js/easyui-1.3.5/themes/icons/no.png deleted file mode 100644 index 6adbed7079afc8920d345b8698043e0e456f2f0b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1853 zcmd5-ZA?>F81B%0nGoIfW0NJ@O?8_twxul;+u0eUAdRO8g$10XQripd>g~PuUPi&F zq(ld7ej$SLVUPf3L2AG+f~KgdCD* zrX;i}xEj~$)3-bEH5|?Yt}!lwNl*cqjwJY6ABJxwDCEuItXXTNv^o>cU|aDNqgl=! zzSzjcjCwgYK3El~qQY>4F*3t~$7V#u=`u_@sh+#`Yix~Gh6o6p(PCC&o0*nb<=kmr z8M1xH0xmWUVN7!FD^UrmXe^Ah;8-wU%+m!5g_uOb7X}4OB*ImgC{QR81fn6~34>(8 z5}7Cjn|Zh>nnj;1Q!657VxgU!YhV~kCJ>~hrSa3meA1F45K5&|ABRZ9LkJ$7Zf3Mr zo|#@Y%b>t%oyABoM$(M=7`0o;R7TE4N?)ZwP;<0qdZtXMU;?X_5(xQ$zLaKxD%F2O z31SXSGiv;`-hU;gq8xHoTxF)?>rTOGy4@WBH% zFYkO(lIz5YtNHm|NlAS-Z$g&~R#(?*G)+iDcQ?F$AJ)}*va+T&ZfuT^hn<~lS=j(V zIQQ=T$$>X+u%}MJkrCL|)_v(xS6$u2#KcXMW>wYY($cn~BDSy)rldFv z3gEM6H5v`{dhfQhbfCQU?dw97JaPm&osg#4?Cg4qdI!U94b^IASs8RVU`Gdw z;`a6qBT1V!{pIzJ_w}+>p zqPw!v1Hc#n&eBpiI5<8!3a1~%%L7l**RYaNN5#H6`G3zGY)AV-)T?hQ6`^s~-sK0f z_J@ZqQB3spXl|b;rbmzX(*}AhRjqtj@#T=8D{8axBT?fX(`Spp`Lns@l}Bo;*_ba@ zdnf&sfu+|@9zVN2^724RM!?eDPu4oxR<=AokvUK^c-{N_m!ns&wF51aIxG|t0o~WeTux?(*f!J?S`!vJrWM3^ z)v?u>(g^>@;xO#mkNlu=e*%b!BkO=S9U%&s|{QUTj4;ur+Qxv`b{1=&{q{_{@=tdkKKPJjPv{N-R+ z=H{q0b!wOgrI|?`QkZ(!{_7i9LV-VtRJx`%DQ2F^23wD{DqBhIRk` zF);r5{m+$GoMl&Put7+Jt2=`@4-Z4{!AlI=w!d7({+qd+0V(7F0suh(zW)OTFd63V z^!sFSNlF9<4gMd;*WzU&Dh*+FS2`3*A~OK^{__Bz$W0R(*Uum z?9l=80a*nF0_+3*1ONs71^@>82>=H93IGBCK>)u00}wAF|NZm@`|<(rTQ4UU0WcOM z00aL60Pp?k0KeVV0IsF+;Q#FbO$G-6;062!00#UB00{XE00{OE015OE00M|vNJE=} z^$*A6FQ5Ne@vDAS;$dfD`1Jo3!|5mY7`86`{^s{nmH;M>-&g)K|ATm%5g73x%=8b8 z0Ro7L;}<&v=RdZejL-PCo<9Aa;W^_ShKsN6GwfXY>&vg(Trted45#rWFn|DJV*bm{ z0Ky#q*cZJ%!~O8Y?dJ?fS26$kepw(JsCg%$6bcYP%o1uwz$j&AU}9wa&h(8#?9FW+ ziyzl{>lm2-O#9FFhv6UdZ-)OYzzhWT0wab200G2EX?6w(FaS`kAv2YZ@FM^K002ov JPDHLkV1n^7jC=q9 diff --git a/src/main/webapp/js/easyui-1.3.5/themes/icons/page_excel.png b/src/main/webapp/js/easyui-1.3.5/themes/icons/page_excel.png deleted file mode 100644 index 0f77b7d8edca3521599fa3c3ef1dd4f56b470e22..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 684 zcmV;d0#p5oP)B4=IQcq5cEf#?tmu5G!emQp95}O~k7g!GhAFSZF{YO5=}%o}v&+ ztF;D=tuc+e+1+v8Y&KMcs1F`*X6LCWHW4@5GZS86v1{@w*czF8%g}0Lafp zlOnfX7N6G*vASl6Pv6LO@iFiChp)Pz9O+YT4Y}q5*_I6^GgOd@EU$wUT^2h!!5aTNj^0Bwu~6M_6pBg{%`DqUgdf%{?w<}Rs%?R0$nMZsFX;&%Qt50&Gj$VVu^Y%1 z-(#h;h~)L8D(aa$gM1;6U7`uTb`zOZ9mm@JN)xN1$^O{VJG|%` z=|pI>8(+S!U`xHg{hKqO98LaIlUjJBCKSn}pwRS8Y zhyiyQoE+^!u9(C8%SUMQw_EDT*QSNm4I!vSzwkOJL~-Ku$w$A=H70o!cU1`VIO#$f;czYdb; z4*;58$>4b+qfQQR)!_m*FeI9eJ0Gxq#H zf0_XxfS9lv%LmkKB8}kx16siJFV!*nd7pOS69ERhSDg(18DcA(#PsQ(DfoWDDC{a=@>nto>xWzb;o zP$*;Aa%nq5TlT(fKhM4o2P*mk(g_ei5CcqsHvff2=RY9k`aMC~Kn&o76a{330bLQrJ&U26`M=Sy3)uqGxWf%F0d5QMO1 v>|l^)2n34pz-1YUGXNlf7%9!p009O71V-RMzjpE=00000NkvXXu0mjfxvf2L diff --git a/src/main/webapp/js/easyui-1.3.5/themes/icons/pie.png b/src/main/webapp/js/easyui-1.3.5/themes/icons/pie.png deleted file mode 100644 index 790686ed1e93c810942171e4529fba14bdf88ab4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1065 zcmV+^1lIeBP)o@=)y4c{KvaWqr(a!!r~>7qD=t}!U1D2USw;Iw+W_%3i4uiT-G7j z8%@OVA`J&IgiRS;ws3sE&(j81*XQo@yxsG1&mSK`oZtk6b9sT7N8T6=i#;~6S66QS z$l7X=G1@F+Se$O9srz)cxQ+XR+<2~5BIH(QTv(~Ni3soYj%}yv79}&^KGv}xmfM+r zsR!vVorvFGVzg7us4{Ez=U2C$5_79FEASKv_-i%^g@-SPYkEa80jWNk_Wjg->rjAbZ#7x7?to`~=KV$ZdJIOWta>#e13)@u2Zer?sj zMN2K{ER}F!R*8;|8pN;U03}HP*|7krQIuuHP}_Ski$CsIA3)yMztqycsKP4`>*4%^ zDr|b7#QNDXP|wIvJ6#M{2)CLl|T21tuW_CXXt;&%3Tauk|g-jYWO#uBX^HZ9cs zUXJHx6<)6Sg283ImLP9*ogpGel|1VlDGE zsGKao%KM*#+?b2S6A~zx_ylF6>F`JPKCmahh<_#R2K$knXn%7nJbvv3WcS>200000NkvXXu0mjfiY)Z6 diff --git a/src/main/webapp/js/easyui-1.3.5/themes/icons/polygram.png b/src/main/webapp/js/easyui-1.3.5/themes/icons/polygram.png deleted file mode 100644 index 13dd2625c89f576301b6f5f5dd89b6f85b0056dc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 772 zcmV+f1N;1mP)uaH+4e;KGAoS&WH{5nQPF+qB5kcAXP?_ZMMyM;VC7_o^WlC?$R za>1ODfj?r** zX`IsNDKLLPBqM~PZ9vL9q>t{9Jb#F=x{CVHOi7N%xWB)zn&@Ep77xBWVDWGfh7jmk z`#yoDTdOeqSy3gXgo?T@(Etoo3FUGb*LGPtUSg}c#r(Hf$GiQ31@m!DmPM(9-0Vt8^ zNoaaHo+-{S^?8c6*Eaw9f+;I>>9`%!Xv3gTD9~!Qux;DO+ENp-dp6#{BleUwoB&%X zRX5ym9eg!%5eU;r15mA2$>;NIZ*Lp0VzJ2X?k<%|h3Y|-qvIn^PfuyJT68)cF0U@> z*}c&ebR+ar{`WbL{{y9cZN3_%rykqbbW**h0sa8JTCX#*1e=}!0000z1G?hxZ;&`ED+>cNGYingzZn1m zi0SLs4-79~-etIOVGqOe=l2>Z%BAk7f^KhW_13_pMU`pwSH#-O94%^)f& z3N-K^13&;VLHzfh;p^8g3^#9{H2wblqZrJ9KS1%{Kv(?!`4i~P{|ua*91=XdJgT6; z`St4;*p&bQ!~(?P!otFnEG?~V1q1{|M1_S}KY#tr@b%YUh9AFvGyDPKzd*%*zcVld z`Ugr`TiaZI_TyS->P)7fU6h$3E;c9 zLDA?&*_qkSH=7YxH-7N#8@})D%X_;UHe1MIcRvosSQ&VkW#YS`^c5Jg7hTv8yPbg>>9)O{Vn`C{)MT5Pw@Ai&(^4<zgV%9gisAeqG4geF^@HO$_e5+2 z85W`Rw-FbIPbe{?jFuc$DkK8`cTkV=r5{D3QM4qJ z`8rJwL)sHB@Mo%TYpZ;vUe;6UxsI?>!+EwEGR}XO_V!k+z<&V-05OhC8s}LX+yDRo M07*qoM6N<$f|~mTaR2}S diff --git a/src/main/webapp/js/easyui-1.3.5/themes/icons/redo.png b/src/main/webapp/js/easyui-1.3.5/themes/icons/redo.png deleted file mode 100644 index f1e45cff9397f422f9d63459ea3e685d441f09ba..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 708 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 diff --git a/src/main/webapp/js/easyui-1.3.5/themes/icons/undo.png b/src/main/webapp/js/easyui-1.3.5/themes/icons/undo.png deleted file mode 100644 index 6129fa0c77eb1d2100ed1c99b5643ab8990a9566..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 707 zcmV;!0zCbRP)gx00G1Zv_aomR`x(qRh0l2FE0bbpFa!?fB$08 zkFQ)|s9L!2z&&2xfMaLReuNnS5I{^UzkfRf$Hoe9fp{-pGBCV;4WVDWU|@Lm41ym& zW{~CPX6X0xb5MHuav8D<00M~l)~8P=@1HyOnT?gzU0Y6$f#K#&28Oq985rKZgBbSe z6~w?NPZ+p>wDzArsy8?}Ki_-*{y4}0fB<3!5w|~mI{y0k^X(5GJqk7R^5S3xY54Gg z;V@9{y|_37pRO(g>+jzT438c$h_JFUeEIar>Y2FstQW6ee+LL4W|&hReEj(I13UYi znbkhd^K)@A%v-naX4mP{i91)X{{CA+!pI;bgn{AeRR)QlKiRi``0yC0=M+Ey zVT~0JdHJSom6iV+{r%6t#LV>djcY9}FMXXe=l_3O+y7ZoQhPw+00D#(*(oWx*+@tv zp{LLZetz%&x3v79qNw;ED8va6Kn$b;P{O)4dGi0A+S>nhH8gAh0*IMZ1Ma+ke^KiH z{{%~Qb%Axyo~;K6ASMPf!11eBC%hFCV_^OEO$;D_$THxanAm~S7cMXefB&up5J1f2 p81VS{^OpjgoMw-I|K0`=U;x^&`B18C?@a&z002ovPDHLkV1f|(PF(;1 diff --git a/src/main/webapp/js/easyui-1.3.5/themes/icons/zonghe.png b/src/main/webapp/js/easyui-1.3.5/themes/icons/zonghe.png deleted file mode 100644 index 224f28bc07caa4e009bcbd1582b38d86cd98a55c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 606 zcmV-k0-^nhP)3buIs>EEZqm|;wnh4pX1j+qfmS= ziQK99+!A$FP}KL{J`XmZlHGima9u?p;Cxmru$wF5-W758!r^uiWMc4PdGRAf(}ij% z+s#+sT5mqJHfxig*rtH^9uvZ?7RlD@B=hpt>p8Y}N`#0c1>N5pzBtj4H?Xm3 znKmGVupkJzAk!I<+d48EXpuH4;xLLLRksRtqtUT_Y-nKxaI`{RC0WjSLJ&w^R(C-|JQTojLXc1&{d*_z{$ jW+oTMdQ(F|jDg|L>K${_)^zO#I)%a0)z4*}Q$iB}_fAN- diff --git a/src/main/webapp/js/easyui-1.3.5/themes/metro/images/blank.gif b/src/main/webapp/js/easyui-1.3.5/themes/metro/images/blank.gif deleted file mode 100644 index 1d11fa9ada9e93505b3d736acb204083f45d5fbf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 43 scmZ?wbhEHbWMp7uX!y@?;J^U}1_s5SEQ~;kK?g*DWEhy3To@Uw0n;G|I{*Lx diff --git a/src/main/webapp/js/easyui-1.3.5/themes/metro/images/calendar_arrows.png b/src/main/webapp/js/easyui-1.3.5/themes/metro/images/calendar_arrows.png deleted file mode 100644 index 430c4ad685b8c0068ecb7e3cbef74f493a84ad0d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 173 zcmeAS@N?(olHy`uVBq!ia0vp^4nQox!3HFkJ+IURQYD@)jv*Dd-cCEn)nLHm{QbZE z+q@uWwandfr?Jb4eDYYmB3UAt=OO2Vt+MMT&+KD%&6hZDt!FBpej;sEpMN69^tKl% zp6y<4_lG^P z=;=eQ4Vs74-2)Ua&f1tcVdk$#{GPKe@&?ZMHmT&SMw?IV&w7)}ixLbB3d$Zg{&KGb P8OPx1>gTe~DWM4f WNYm=W^A8UI00005OC%H;f`~O(q$Q#t2<^v$A>fbmv%e#dKTwK=Ku{5lS|}<-`a#7b zzTCOnnT>at)D}AMFuOZ5&%EqFN(lyumd$2ASF6=;nM~%2?gqc@U=#|4PqkX@EBo-9 z7pD#bO_RUa>*faM`8;MYfVi$JnB-zcBFc6gjl$d!bF98Q!!!(Z1_R~P?e!pt#6CHJ9S&n_n&@=9 z%GP;!@Co4c*at+6vNz7o(6en^Q1%qHrc;1)9IRaz-$@S$Z-qdC^ds3X0NvQH;KS)D z-dh&rW&@X;1cS(45z)J&BVt+tv&GMVJ%!EiW) zLBGZW)#Z+gl-Lih&?>X3SS-S#ujQ;9JRXmIB7X)8`d6ETj)D#Q2+$s|<_b7-B9Xvq zwNfqlEp%y3$uY`h{Y$(Gn5@}sqEsq95lpAkFO5dyBmP6^H-51G4J|rN2Ujt<`2YX_ M07*qoM6N<$fRl}UZ@-Co%Cq`k{wEj}Dr>ShP9AQ|IKKA30{ejJboVoF`C-z@6mZMY&%Wiz%6S}#zb4u?o?9Mi=ECopVxzz+sNviAA!DK)mm8xe zgY9ZT9jlddc^&y2^u9XqDeU4{8s^AS#8C7TXsxEJW@uLu(3Whc35-X6v}jEgEb{G` z!{)$uKzw<~%0A6PhNHYfSuTvOzD8LpPF>PVr=&QqGC936QlPgc6j2;SWMDuL>F^vlqEUI{oOgO!xNf*11TukM z6kTZ3V2qd3<~<$H&Lrt?SpXUxF5Zb^}(={r!EHE+$QMdH|XZ zSYbMyc0tQc3qbP$tG{U_Jyg>I(0srOscEGU?-T)4AzuS$_2J>6`+BJ50YDY<^>2vV z+uI880P2ui(hyHiPrK$)CkbHg=kD&V3^8pD z0v3QOB&8eT@87?rgaGPrb#+ySxU;jP=nkL`nZ_{0e*BD+1Tc5b&d$oLo}8R$90gF1 z^ij>~#>R%HIRNUB_kgpQ+Lg!80Gbb2saY8>1EBeUm7A3TegK*dSciv)Wqp0!h-3im z1+1f^qq4iZ+ZEMUS63~e0I+zh`2rwd0l@!F(!7sM%_`|&0+*B!z{1(u+A9BIU&~T- z2he=L>dmc7TLXZFkeTeCHMcE|qX51{z>0ZC=xGjss*FaXGOMX+dHf8Z8hL6ntGQ_z zF9V<&dwY9jh`D7czyqj4g3S=~)zFA!0980RI4DC*Ez1%L09D8%=OHF&S@Q*;3bRfe zeL2-ZzyeT(Av4`$>R3`j096>WH7BOELD3yR70%Dk%Mk4)1W=73OH{L_UgIc$YFu7k zmRaq`&NxK?Rk*skDzlhL4IV!OsLJ*Ab@{BRT^TO}pgQC6xO~R6G8o_oU?C)>`xlc2 zriH~zU-;g$PyPA_&X!OBSU6SIeB~eKNAhF&(fs&F|1n9<+Yj^2T+4Dj%UFjr zZ%rnX^7Qmn0ANwP308gILtaQfK0Z1j0Br`Wq<=~Ka+?BxW&>7kRtZ+q>C~wJXg6S` zW|cJ1%?d#C0V@Ue)T{uY>425ig?tTsczEc(0+M8_c7^t|!sm-1Nw(}#nnLr?FgGlc zY}ut0+w(d)Uk6FDWtY;*aCdjteIX>tmhA#o+8PqHNU~+SlrTfyKRaNHBx~Ch-FJ3& z%B(Y&NwStp{rH$6Yj{YqhR=Gk~Mtw_&K$#yeTBf z7JV~bCN(VwL$c|B^>Topn-X{+7;S!yV~2^ zBgv-iMkME}U;-COwrsbABDvwg!2wA&ZMWttf5^jTl5E*7V41=|@=Hu>NJ^O8(7b4p z&ChgC(LF5>Md#{+4LgS{%KA|H(Xv`l4P^KdiBKB*_;1&m|Q7!{|O$ k%vVK{T!hwqk^D0L0mO==@4IV9lK=n!07*qoM6N<$f|Ge;n*aa+ diff --git a/src/main/webapp/js/easyui-1.3.5/themes/metro/images/loading.gif b/src/main/webapp/js/easyui-1.3.5/themes/metro/images/loading.gif deleted file mode 100644 index 68f01d04813c1f622810864a3aaa04b4a17ac8f9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1737 zcmaKsX;2e)7>CzDa{xjjy99|1A!tC(kfocDi)<1$AxHpOQ4k^l!Vx1W6x7<&|FYXU zqO4jEiU-!VR1p+Xj1?4-iuI_J;!&?!+ghg|JJad3U)pMGzcKxNeCM6tJnuX+uPvX@ zZY|=AHdxt2Xr2y*)5|c6#FSEuyJ+Y3Z&l z2hJWo`9;lJ$6wzSoW60tqkB|d$oiO*d-^85^ojn{*NR{MP*%{@H*#gihZ8BKyB68E z-MIbjgNNV0y5khpJ^Jv`51aR%={<4jhaVq5e*9D5+*hL)XCHn4{^d%hPu@?KpKbc=eN!D=XUjDmH#n{YHNS zHCX6BV)yn2CuTNujhN~V+`RKpyXO6^ht92eqhIIlQLfz6eeCnH_C7`NPNrw9ks366 z4xX9(`s~z=+1uX^ocZ$2_fBs=JihPfWYufOIuD&AU-@`>>qn~cy$1)T7CU!5z2(U8 z)9Kt9)l`f6?NU41j6XbXfR{OHwm|T4}&24tIf+!C-g~6cQfY2^n$?AT&ZW zgqm`}3-jS2NS6n=k;sr5Hv(Q%%n)qW0X|neWVBd;Ko}d(=u%?{O0-a>kSI}shOd9n z5top}%gUCf=>?tg;*;#7!^HOL3k$fMxd=O-6Y4@%u8LS)C1D_a?27R6^vcC+6tttL z)GmTahbyJB!xmcHL#ya8ZXyfRl)a!N0BJE0y3BBfAV5;#=K&Z2VkaKZ)?9`1h5P_% znt*b}%j1|#j`b|aQDx@~wA#$PYRN2xE6UO;;vE(@$&xww-s8fZ5HmJ(eJ*rQrDbaawDbrfe_8F(wq{ge?)qQG`aXV;r(*6EM|ESje;52aFmrX!f=Pw^2oGQX$1|o4yts|b_5@w_kNwtl{wDP#JGMvIp#!SYX?Wq9S&`&_ZwkgGH5CLB7DEGJ6=R4J~p3Z4i^A}hs=-uZeD zs92l6u@**R$~L()G{5N8*7cE5-q$SCo`q4|NSVF*+A7&xZnypm$EdXgf)E%(VJHFD zSgi(H!D!(;9Zcc#GrCCJh=RlvXBQ-hv4Vodse`a32ZUFWgP5ZhM5LeV(#D^H8p@Lg ztra5R32z@1rQv{6u&RZL5%Z@Ye{q|t#6aM_1hIrpl@)oH6}os*cbAQywa{5<`ekzW O1il%9bk82&KlvLjD^%40 diff --git a/src/main/webapp/js/easyui-1.3.5/themes/metro/images/menu_arrows.png b/src/main/webapp/js/easyui-1.3.5/themes/metro/images/menu_arrows.png deleted file mode 100644 index b986842e7e4044caed18edbcb4b376a4bb915623..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 160 zcmeAS@N?(olHy`uVBq!ia0vp^4nQox!3HFkJ+IURQt6&9jv*Dd-cB{-J7B=U{PTZ! zWrKV9%Z3|Wt5t$(gq+#d+-OocB$0fsr9DfRx52vPhSu$$+yXuy+69hDZ54DDTxx#r zL7>-12UT01v)>tZ+;HI4pDNf?@KK~EC$@35ykmXyu^HJF3})N>8P9Uwo&~g$!PC{x JWt~$(697!FIeGv9 diff --git a/src/main/webapp/js/easyui-1.3.5/themes/metro/images/messager_icons.png b/src/main/webapp/js/easyui-1.3.5/themes/metro/images/messager_icons.png deleted file mode 100644 index 62c18c135860351063ebaabe8c0f4df7664b8f65..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6116 zcmV4ipNH~GQlZq-E3cpkxw(Z%$u2@caXAbn6(}n&uLHV9 zeNxi1kd>9kQ0nnzI23^L1q<=Vn6aoDF%s3ohok!Aj~SQ$`x!2NI~x~v?M6;^e!bq; z(yQQH2Fglz{=N4)aWWYxXLE7&Y9;>o<2T&6UWHrL)n-B0%fq!al> zED?O^kKb{*@(M0j-NawFs_P!l&x5Wsy=;C-LD_2Cr$+B z%mHj|RV-S>@98`V;?`TeQT5tuFpQgkwCK3MjU2=Ia8%!VQb0jfRbQMvlUu*{%FZul z*Gp2(5g!~LhrI`mu{iYSiF~~fJP$_Teq5hp&=D_4mPFqP)bF>;RV)Phj>y;)76J+C zUjBw+Pw%?KuU!kcxdHC(DyU88NC?xX1EWWCB9IU&+qOmg-0x8T&d*0>rGgt(3JZV` z7xx@CtUvnT_d1tvz-bZnB^NHR<4wtx=sSGAxY^r`hVB1rRv?$E{$x-)Fe)8~L+|Ve z8TE$qMNB?9`ff-!hq5cTSOiouf@3of6c&HiX+Tkb>(y78OeU5Hc51fL8ag5}E(J=lGyh8qk97Jwwr6mcmOH~pcs z{ZYUk%0meJKHGY(VY!oZsN-8;rXppImH-+?cddEOU*=taVXX;1q%Fey7;& z=F;GN`DHE%p{KIp=N}~EGW)jwq>8E2jpVcQiF_iN1Rx<@uay8vKKIuIK*@ogJy`^a z0>?s*qkihX!oW2vA%Lks^tHgk(n>$?n(v1DeuGaLGNswE5g^zn9vsnZ=+2`u~kwiWv5INS=`Im31M-s&s z-}^v$ei>dK=80EE?t#*7E|jOg#1pUDVA6I6BVh~Q_RMc9eR2NFSf$s`mND7aK61aPaJ z5P-G7v&M2TV894Wn6&-g?~!z-5ZO6-T=(_lOX3N1UJ|=9Y~k#Sf1$^4XDFTK zKavmknc%QWrF1UzurWAT;hF;pwys%aN|lN9t4v6QQaBU zS5*NV4|)cVJ@Gx_V$*R?b)RBAH}{+|t|g(ej#Hb+(>q)CF-N}Pat&l35&+?3W;twr zaKY)M49MuG5j)2}x&NjK`7{6&Mkn^+G(et*~p*dI{2}J5cUA{+ySJtu!-Wub{*IoTnIRRJzA_boPa3iM!eI`%biy*%z zx!^MPg{Ncd{xJCZ_!&z=CKKf)NQp?k53cKm9b;KhYfSyFBhm0Qvd(knXR(q!+^N2}jUepB8y!+?z(Z6v8xHFLZcgCSDn^0@g!T;>n&iP+APZ zPg_IP0iQ-bk(_<8+6X#NpHD8n#UeOxG7n$Ou;+CGa->lJCZwBU>Z%ZQ9_EYQGvYCS zb3D7-!6U9l03sP)8tlqM6Y=DFf)qhg@t-&tl?mTt$=K|&4KdO2ssOrnV*yYC$k^T? z>i(g#XHhMLPB>9ez#`BSFWW@^tj|7U@@0R|j0_x~JsVZco1;Jof!u#eAW|g7Ga*Nk(3#}L2*uv`@K9{&}TI~0z=_*swgh0B6#=RPcd`WU8ca1@C3C4Xf;|N;j%3S zuzE)f8og=@<*`NT44|U}l%_WL!TAIWz?67GYMBayCIBh{At^<8qrVLg2m_;1xCBs* z){`$ITn{2MIK2{)IaS=I{$m#H<>-I-%`Gf~&ld+7`w~)1YeYcpu=G+EfYbK9@E3Le zTv!x4lLerQ?ToL!LU>*tt_XigQt3UV0uf%Sk)I;kKa3fR-NN;HJRTih$V#{EP(p{dec9If%ipss2u&;)R3Pe-(DwG64LS-2|!M8&5gtGKdG z{gyGVujhn+eCPz_g^fHDpy}YkEwQx(AW7GQu95qRd_o87(XiX-iGZ*KL?mXi08ELe z*eBxT(Nqu=^=<*Y}O2!g82BRO<4eh z4dT0J%&@tuWn*%GQCjWVuR8xJST%TG9RH1>Z@;3g42pr_MO7&8z4IC7&G)-I0ffe6 zFgYXueeI?r5lZcxOE8LH(AT@vbpV|JC?WLZliTG{w&TuMBQWti3!qKcPw}JuPF|p) zGC%_~B2^MDT`SwBpld7KQ=t4~DXhnbV|~Ci#GkKA{HYQ!s7=@P0$93iCA*Z|$tfTP zag`E}Kdw5we}ANwm)8Vsp5b0`HCAVpaguNB+Z!blGMC$|yo_vH%ED0F(ff4kK{&9sYfS;V*G5?3fNcv|lj%5-7MRnPePcq242Ccp) zzWsI`5l~zI-WdC077_o@Lo5IyULrya6p8%9k30f@an1UL7ep=hzAZUr=a#7M&l2Qb z{XgT#|MS7k#OJ!A!y^MZ1w7V0X`B(z0@0sEY6^7gJ|0V#@4vkOypP22QZ232S*qU> zJfO2609oVdA5Bh=)Bf@Lc4Ss14ksAkbFvUtua0B^?D;j0#{qF!6}KhZ6f_o~nm>MZ zjIq8;!Yv^p=Q;~uTRd}h;G-O1walZw-WIZGUf>h@4d$&FeO|sh`a#>c#$t_U@kQ72=fM+rE-HrH<^^{E3Y-o_=W-Rc@o5r~Wy${K)P5kXZi9z=#_kZW$g~^krVUL#&j)}paQ3OPoF1GdL6N!Fyb||}c z&1?e1I5}}2OQ6`_C&+hi)QD4n1h9U+qeWs$Qd+S9IR1&yvc`ZG?L_p8tvh4d=palS z+Cz0ekzb^xfDpmWJXI9VYhJ_iudKAZWlVE%uM-(8g2S=-OroB6>1Y|_G!8H)06H(p z4lPvM!MV4%O~<{l7x+FK52vA1pBd=+?@2rjq#3{_?@%rU6wg$r^~CE*m+mHP*q@E* zcE@=jNJ7w)eY^k+Ixmkt@#Xj>_zc$WOTg%Fe#G3l^LR-(%(@3VlU!*Ofq-5Bbd6R6 zX+g+R3CO;31-or+xvyFB1?e7|0Je+wZNxakk^o9`*QxHOXfIOTPi|&{wG{aDKOMwp z7s1EzX*B@~G!!>hr-ULku4k*~I=?sx>((8#oB|s>!{B)|oDUr{7NZtLSwUnB8EwkcHd&tjurEao~N!N-G#!FiJlKPM0)W&yG; zOY&shmgIjob}W3NqAZfHpCWD&(?a<@K^jN^6#Yaz!A`VWw{DHin}0S-N=51us{7N) z#Vu6#OM;730jyovUVL^s68)N}2~eaH0qqnD+{kFaf{`hZlXK3z2xuvI#jfLU^$W*t z;Y4yPjo8fz;K=k)@hqa^?5BdKsYcnWjePT=v*!_c+w zM7V6*Z`>86hc=eE9p)sEA~1Ee-rfKF)Rou&d0(K@96V~h7~ZF@))GKK)-48+zcpCY zeeWnN+!2ocBgb+4A3qkx;!9q(oTp_Z0)LHgS<9*Y&8Sgk7kOxAaAxRG;}}4mr*(t% zHa5oZqSz<$cM7;_BCrwY(4hmiZmqj>SIhkcP1N|$Ra9sMQyDnv+YApYA8|jf{{>1- zKS}}GB%;sfszQ3@)$!Q4@mI?!Ku_-2`$WQdUj*C^#dEzpdiJVO0I8MW(LSyGDKEOA z&EQaU`6_`y?S|dgW7(c8WAyJ$xe52kB943_fBr8gIr^#g+bnRZ^|%;q2>Av?un0DK zg>apw`%~T4$GD94e$&;}zbD?=iM9iMc{;c^xvCcN`%-RTceHS1z*#1L(bfb+(2} zbL^OWc7J{|HU5drObz-Z5TqX8(XuA`b9H?(we&z2!0;%l)7A4Yb(sif=Rn+cYuM4% z4-;1T8q;8-Ujj!s)o&>V5&)$G5idc+Zx2%)Z@)L5vBEnJqn7SP^A|_3^G8lt4sX9u zvk!!DDH6o|yu%yc*n4pr5P4L$X~&OZd{?-EBc0q%AhM+}s03^eFNU)a-dew8qw6Qz z@58{)zh>vtw2wA`OrH<*7ozaj>hn&`wcg#j;Y310EmFz(rsT`feL%l{yh5lK%l;lc zn0Ru&opv0d)&C_+meu(mltnkjg(wBrk{SXPt(ZI``FastRE#Tr?EVs^wooK4TdAvq zDXK`eujzv4Ut4|q6d-c8dj#-q-30qXJT@RP5a?kGB9+KpdnlC&r>OTlRmqMgvCuW@ z_l4b2c73x>L(r+`XiWQVJq`wh^Mfb1Tl}CTpr>|bE_Z>Ay$_SP@)s5Ky(_&FcqC8J zPK1*Pyb`aly@6HRwO|Gko#Ycx>CYg9m-44}!>-?{l450IpiSCir&g zViW*5pU&;mL6R?H{z(7+M)E0D9CYLpYz3MLyxqGG_WRWym6v4NpvFxyM*p#^(dUa*7_-Ek%Yy_9Ly)~SvVvi^KaHdQo$>4N(nkyNu+{s#;WK#jLf-TV zi%7WZ-7l)oG)SY(nsGC2@zs1M7Q+IUKrRtSmXY+88u8SALv#PU z@4m0|P)J2w2Na)Ba4A+0XJ{@Q-NZ;_4WX(4I$O!@U@P7YT<~Qlbtf>rE>J3xaA?r-5JSGa1$c=VI0df1?0)#a+cRk3?AY zn!t6QM)}mAR{8>iqWFQ6`*}i{NFyQqvSSx-+}O;s#iW@FF>S#b76Q55ImEyMpkx?1 zWdT0^Xb_L`iTJ=@gSg(`?bETfe{*yH^5n573{(X`L=kCb-K-_Rptqjk?cmmp zC*as2AaL6dbugG|Aq7}ajd3+b?epp2!RYD2cl;uT#2|n6MfIHK^(%dnu=zwO=Il&n0gyoMhj{%xei|~AN!PpC&O{K7 zy7zWwh_}@+L?gfJYhB^6b{#U$=G6Jyile$9@34ZRAl0E)qcy~6(AqcRq^lMDIIR=D zA2$mAE`9hMT{G>k2Yv7FC)Cfco!1jho|uK;poIJ9Y0usuCY%O)I}v!ttqJjTZnpSr zcP;kG`Sx}WIFn&M5la)NB7L8NtOE)QA@7i7oYRCtg#RU`i>tE-?`>+7wJsRTF zZl&Il;iHPdcE;;y)^ZNocbs-_;{c04C`rl?gR)KNJ$@4>0tvvZHh0orCbulT#ax#_r5?!&GEF%OHcePw_U-5*t@-#r`Hkm z{@2&A?lzXUaqA1#-N&L=k1u%&_;{XKtbAL0?o7LV}O;_fHn3fykv;@7Aq5*LFJ6dpbX5@>H(%M~{XeC+FV(!O_tf q*!=TRhMQYZy@Oouu{+c_4g7y7m@TUq;8eW;0000zI<5nO~0)=fnxErNrCA`WgM*1^R=&_zX)CMr1T;-rJKi{RhT zwTRWWFSbznW6?ZwYBk2xccxEVa`0%4(Yva@;pbF0^9S2uAKfle(?qtbyxJ(2%kiF>CHXa` zwdcneqDH8s8`O=^Z;G*FoH3bGkRlewXgRMPCtCR>olp$6SSk2LaLtdk735GTeS6JrtWdjq}ZZs34}bF$p9qsdLBnIC+J1{xF!;M>5@n5YI? z&4z;cHjvE$_V&)MtT*$6579tEVTAaOu<<1(%cR!^622ph;K0g-9AQF(O3vhYiNJ*b z7Xuat7f#qV!aOb!Q6;pKF~UjxbnQ*DOwWIpHq-OqgFQe0fa`fz9oUMD0Z9VV1d9Q= z5#TIiB5HxD12dV7Jd)hJ_=qt$xd^NA4nEk!Bp@qUu0k4c(cRlRc0Y)25Z^q7^m|=T zEPSa{>fbuK*p?QKGWOF9-+|Bne}*tPWtM~)t<`EXu;7__@_h5{U+e{vTT29oHFe~Ze6XJ(Q>Kb zHH)*`i>&-o-mMNlRLeM*)b=tl9I*eiXO{b+PdrTgTX%D4@ZRav{vE&cqCShv#9g;J tE!>t@mbeRM^gTGoKdYo(nL%h1<2#QP_cRaf4g@-i!PC{xWt~$(697vlXvaa)1B=8vtU6i;3jw7+Lm8D5$Z@i10EnF)=bcefw4K z$^E-CUfjQG`svfBbfD6|R#sLFj6lo3FG$G6@;ee>>~6i|H^5OY8c00W#fi<*1vzh{0&qu3dB`V0{{XDY`}(1n>S9M(9!zw#!&`A z#;*+0{6GVMSeWGp!`o{o8NPge#o%jgs54WT$qnQYpsyGNpauX05F;oJfZ`Pdw6!$j zynTH0RMa&!n3$Pa9zVGEY{&L(3qnPBl_DG6<9Xk0`Fl3`LiD4@pH{vDsxJWQ1qdJp zEJ>M}osCtQlY?CgW>F{;gVK#SmgoOZnEn5J%EtIXaWQXAO>Rdf)WFR;gt~f zXaA3z{{L{q=l48y!32yJ3i0hJ2BS=^}@sXzH{F9Iq&OW375;I7CG-}Vr|aF#l<(fySwu2>`YdxRW*W0f#2un=W5Jmvoe`XCK%I_Y++#`fwE+= zSd{sEULGDE%A=#BOW<6gP*6VfMa^fr8qe`5w%)P0a^Y9WGTw! zvI^|$>l@1Da^Ke1*T3RdY7KqM%gaBb(P+oP!GW;b?ZRfW3Bxc1H@GCaHK#XhZ*Lc= zRBC@>V&W#x&B5%(#>OW5`};d6I5Qw218EG_q@1gtr!Nl*v7yn?(MPMRt4SNy%--JK zanm#f^bw^}Nr7b(EUg}TUi(2;)deX10lAo=83+VA(QksJI6(zwptET-y~avN=J9w$ zI2`W5lG|aOkjY7(&!@;Jx*nUA>~J`Q)9L&(G8y=g$3a4YgD7z)5>gXQNKhw=uR0zF z#jHruh)gDv=bj|2ZES4(fEM?I!JyKqo=}sj-fBYTcDt4KXq)eFQH}wW`vh%Mla}#@ z@Mb`C)x@YkK{xd2>8ZLg+E!Lps$Q@6DY-~!0=Gs+Mm~_JnW1EbX2uxClEdN>Y@I78 z=ke_9?7sX@o0*x}M{JB77MIXj_MmNE%+1Xe{*{crh)9={dR(U;y-{jrxUXmG%Gt002ovPDHLkV1hy(sXhPz diff --git a/src/main/webapp/js/easyui-1.3.5/themes/metro/images/spinner_arrows.png b/src/main/webapp/js/easyui-1.3.5/themes/metro/images/spinner_arrows.png deleted file mode 100644 index b68592de3200fbe1f7defe98a2b59b0398b1b737..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 115 zcmeAS@N?(olHy`uVBq!ia0vp^3P3Et!3HGD8EPYel$EE8V@SoV_tDnm{r-UW|t3f!- diff --git a/src/main/webapp/js/easyui-1.3.5/themes/metro/images/tree_icons.png b/src/main/webapp/js/easyui-1.3.5/themes/metro/images/tree_icons.png deleted file mode 100644 index e9be4f3a9965e49a4e4078f8c53f486d761a7468..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3115 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 diff --git a/src/main/webapp/js/easyui-1.3.5/themes/metro/images/validatebox_warning.png b/src/main/webapp/js/easyui-1.3.5/themes/metro/images/validatebox_warning.png deleted file mode 100644 index 2b3d4f05babf3f82b146350e96570fac02075de0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 921 zcmV;K17`e*P)nRv1_mBsMY*-M^XCf)eflW5 z|MC^)Hw+AW{sHCCF+cz@{fF8J!+#-kxoSv=7^|!zgOQUngSQ}mDo|J)n+pH}hzZ#= zr~y18$_m-?9v%$;?mu8);}>9vFgFvDXJDwrW&l6{p}625M66yTFhGz^K$w9^O$BHi zFN2Ym7DIple*#cW4BY^L0Al(Jbv6k9U|^6IQBp{hx3XdQ&CJ4Z_|YSVr@XujY(PVT zlok1<85nBO4FCurumK>O|A07*jFlSRUcxLAQVcIR*co#3@)&jj4Pj7KXRri%#h;fa z4ya5O*#Lk5Vq!q}T~=CGH(uV-hJk^fkAYoGjN#AMuMF($>N=giWG}IXse|=+c=i>7HEg>%*E%fLD!-uy|85n^6W?^Dt(9zXp5EB&z+w>_knBmdiKMbzi z?A!`WOl>e100a=&05*1xZdFls?*HtZ48H?o7=HW%ivIu45E2~BASWx!@DIpmv9e}h zaPwji|L}pqor@y`=yxrU0RRES^qYY}O;TRcU+DKIhL4`%3_nyf8U6tS<<-ZJ40D$( zWjJ%`G6NIPHNP2{7am*Fp% z{>ShK#0G`~kjd~57_BU.progress_inner{ - background-color: #0099FF; - width: 0%; - height: 10px; - border-radius: 10px; -} -.fileUploadContent .fileItem .progress .error{ - background-color: red; -} -.fileUploadContent .fileItem .status{ - font-size: 15px; - text-align: center; -} -.fileUploadContent .fileItem .status i{ - display: block; - float: left; - padding: 2px 5px; - color: red; - margin-left: 3px; - border-radius: 5px;; - font-size: 15px; - cursor: pointer; -} -.fileUploadContent .fileItem .fileName{ - white-space: nowrap; - text-overflow: ellipsis; - -o-text-overflow: ellipsis; - -ms-text-overflow: ellipsis; - overflow: hidden; - clear: both; - padding: 2px 2px; -} -.fileUploadContent .uploadBts { - text-align: left; - height: 40px -} -.fileUploadContent .uploadBts>div{ - float: left; - margin-right: 15px; -} -.fileUploadContent .uploadBts>div .selectFileBt{ - border: none; - background-color: #0099FF; - color: #FFFFFF; - padding: 6px; - font-size: 15px; - border-radius: 5px; - cursor: pointer; -} -.fileUploadContent .uploadBts>div .selectFileBt:hover{ - color: #DDDDDD; -} -.fileUploadContent .uploadBts>div i{ - font-size: 30px; - color: #0099FF; - cursor: pointer; - -} -.fileUploadContent .subberProgress{ - padding: 5px; - display: none; -} -.fileUploadContent .subberProgress .progress{ - border:solid thin #0099FF; - height: 20px; - width: 100%; - border-radius: 20px; - overflow: hidden; -} -.fileUploadContent .subberProgress .progress>div{ - background-color: #0099FF; - width: 0%; - height: 20px; - border-bottom-left-radius: 20px; - border-top-left-radius: 20px; - text-align: center; - color: #FFFFFF; - transition: width 0.5s; - -moz-transition: width 0.5s; /* Firefox 4 */ - -webkit-transition: width 0.5s; /* Safari 和 Chrome */ - -o-transition: width 0.5s; /* Opera */ - transition-timing-function: linear; - -moz-transition-timing-function: linear; - -webkit-transition-timing-function: linear; - -o-transition-timing-function: linear; -} \ No newline at end of file diff --git a/src/main/webapp/js/fileUploadQT/css/iconfont.css b/src/main/webapp/js/fileUploadQT/css/iconfont.css deleted file mode 100644 index 57eba9ba..00000000 --- a/src/main/webapp/js/fileUploadQT/css/iconfont.css +++ /dev/null @@ -1,33 +0,0 @@ - -@font-face {font-family: "iconfont"; - src: url('../fonts/iconfont.eot?t=1489192348890'); /* IE9*/ - src: url('../fonts/iconfont.eot?t=1489192348890#iefix') format('embedded-opentype'), /* IE6-IE8 */ - url('../fonts/iconfont.woff?t=1489192348890') format('woff'), /* chrome, firefox */ - url('../fonts/iconfont.ttf?t=1489192348890') format('truetype'), /* chrome, firefox, opera, Safari, Android, iOS 4.2+*/ - url('../fonts/iconfont.svg?t=1489192348890#iconfont') format('svg'); /* iOS 4.1- */ -} - -.iconfont { - font-family:"iconfont" !important; - font-size:16px; - font-style:normal; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; -} - -.icon-shanchu:before { content: "\e636"; } - -.icon-gou:before { content: "\e666"; } - -.icon-wenjian:before { content: "\e634"; } - -.icon-wenjian1:before { content: "\e614"; } - -.icon-qingchu:before { content: "\e60a"; } - -.icon-shangchuan:before { content: "\e6f7"; } - -.icon-cha:before { content: "\e602"; } - -.icon-wenjian2:before { content: "\e615"; } - diff --git a/src/main/webapp/js/fileUploadQT/demo.html b/src/main/webapp/js/fileUploadQT/demo.html deleted file mode 100644 index 5fcac068..00000000 --- a/src/main/webapp/js/fileUploadQT/demo.html +++ /dev/null @@ -1,97 +0,0 @@ - - - - - 文件上传 - - - - -

            - - -
            - - - - - \ No newline at end of file diff --git a/src/main/webapp/js/fileUploadQT/fonts/iconfont.eot b/src/main/webapp/js/fileUploadQT/fonts/iconfont.eot deleted file mode 100644 index 81f883d5983caeb7ff7482af71762a1cc9980495..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7222 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 - - - -Created by FontForge 20120731 at Sat Mar 11 08:32:28 2017 - By admin - - - - - - - - - - - - - - - - - - - - diff --git a/src/main/webapp/js/fileUploadQT/fonts/iconfont.ttf b/src/main/webapp/js/fileUploadQT/fonts/iconfont.ttf deleted file mode 100644 index b578c52323ae8e768a82ce6bca334002c0d28229..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6940 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 diff --git a/src/main/webapp/js/fileUploadQT/js/fileUpload.js b/src/main/webapp/js/fileUploadQT/js/fileUpload.js deleted file mode 100644 index cb8ab6bf..00000000 --- a/src/main/webapp/js/fileUploadQT/js/fileUpload.js +++ /dev/null @@ -1,565 +0,0 @@ -/** - * Created by zxm on 2017/3/10. - */ -$.fn.extend({ - "initUpload":function(opt) { - if (typeof opt != "object") { - alert('参数错误!'); - return; - } - var uploadId = $(this).attr("id"); - if(uploadId==null||uploadId==""){ - alert("要设定一个id!"); - } - $.each(uploadTools.getInitOption(uploadId), function (key, value) { - if (opt[key] == null) { - opt[key] = value; - } - }); - uploadTools.initWithLayout(opt);//初始化布局 - uploadTools.initWithDrag(opt);//初始化拖拽 - uploadTools.initWithSelectFile(opt);//初始化选择文件按钮 - uploadTools.initWithUpload(opt);//初始化上传 - uploadTools.initWithCleanFile(opt); - uploadFileList.initFileList(); - } -}); -/** - * 上传基本工具和操作 - */ -var uploadTools = { - /** - * 基本配置参数 - * @param uploadId - * @returns {{uploadId: *, url: string, autoCommit: string, canDrag: boolean, fileType: string, size: string, ismultiple: boolean, showSummerProgress: boolean}} - */ - "getInitOption":function(uploadId){ - //url test测试需要更改 - var initOption={ - "uploadId":uploadId, - "uploadUrl":"#",//必须,上传地址 - "progressUrl":"#",//可选,获取进去信息的url - "autoCommit":false,//是否自动上传 - "canDrag":true,//是否可以拖动 - "fileType":"*",//文件类型 - "size":"-1",//文件大小限制,单位kB - "ismultiple":true,//是否选择多文件 - "showSummerProgress":true,//显示总进度条 - "filelSavePath":"",//文件上传地址,后台设置的根目录 - "beforeUpload":function(){//在上传前面执行的回调函数 - }, - "onUpload":function(){//在上传之后 - //alert("hellos"); - } - - }; - return initOption; - }, - /** - * 初始化文件上传 - * @param opt - */ - "initWithUpload":function(opt){ - var uploadId = opt.uploadId; - $("#"+uploadId+" .uploadBts .uploadFileBt").on("click",function(){ - uploadEvent.uploadFileEvent(opt); - }); - $("#"+uploadId+" .uploadBts .uploadFileBt i").css("color","#0099FF"); - }, - /** - * 初始化清除文件 - * @param opt - */ - "initWithCleanFile":function(opt){ - - var uploadId = opt.uploadId; - $("#"+uploadId+" .uploadBts .cleanFileBt").on("click",function(){ - uploadEvent.cleanFileEvent(opt); - }); - $("#"+uploadId+" .uploadBts .cleanFileBt i").css("color","#0099FF"); - - }, - /** - * 初始化选择文件按钮 - * @param opt - */ - "initWithSelectFile":function(opt){ - var uploadId = opt.uploadId; - $("#"+uploadId+" .uploadBts .selectFileBt").on("click",function(){ - uploadEvent.selectFileEvent(opt); - }); - }, - /** - * 返回显示文件类型的模板 - * @param isImg 是否式图片:true/false - * @param fileType 文件类型 - * @param fileName 文件名字 - * @param isImgUrl 如果事文件时的文件地址默认为null - */ - "getShowFileType":function(isImg,fileType,fileName,isImgUrl,fileCodeId){ - var showTypeStr="
            "+fileType+"
            ";//默认显示类型 - if(isImg){ - if(isImgUrl!=null&&isImgUrl!="null"&&isImgUrl!=""){//图片显示类型 - showTypeStr = ""; - } - } - var modelStr=""; - modelStr+="
            "; - modelStr+="
            "; - modelStr+=showTypeStr; - modelStr+="
            "; - modelStr+="
            "; - modelStr+="
            "; - modelStr+="
            "; - modelStr+="
            "; - modelStr+=""; - modelStr+="
            "; - modelStr+="
            "; - modelStr+=fileName; - modelStr+="
            "; - modelStr+="
            "; - return modelStr; - }, - /** - * 初始化布局 - * @param opt 参数对象 - */ - "initWithLayout":function(opt){ - var uploadId = opt.uploadId; - //选择文件和上传按钮模板 - var btsStr = ""; - btsStr += "
            "; - btsStr += "
            "; - btsStr += "
            选择文件
            "; - btsStr += "
            "; - btsStr += "
            "; - btsStr += ""; - btsStr += "
            "; - btsStr += "
            "; - btsStr += ""; - btsStr += "
            "; - btsStr += "
            "; - $("#"+uploadId).append(btsStr); - //添加总进度条 - if(opt.showSummerProgress){ - var summerProgressStr = "
            "; - summerProgressStr += "
            "; - summerProgressStr += "
            0%
            "; - summerProgressStr += "
            "; - summerProgressStr += "
            "; - $("#"+uploadId).append(summerProgressStr); - } - //添加文件显示框 - var boxStr = "
            "; - $("#"+uploadId).append(boxStr); - }, - /** - * 初始化拖拽事件 - * @param opt 参数对象 - */ - "initWithDrag":function(opt){ - var canDrag = opt.canDrag; - var uploadId = opt.uploadId; - if(canDrag){ - $(document).on({ - dragleave:function(e){//拖离  - e.preventDefault(); - }, - drop:function(e){//拖后放  - e.preventDefault(); - }, - dragenter:function(e){//拖进  - e.preventDefault(); - }, - dragover:function(e){//拖来拖去  - e.preventDefault(); - } - }); - var box = $("#"+uploadId+" .box").get(0); - if(box!=null){ - //验证图片格式,大小,是否存在 - box.addEventListener("drop",function(e) { - uploadEvent.dragListingEvent(e,opt); - }); - } - } - }, - /** - * 删除文件 - * @param opt - */ - "initWithDeleteFile":function(opt){ - var uploadId = opt.uploadId; - $("#"+uploadId+" .fileItem .status i").on("click",function(){ - uploadEvent.deleteFileEvent(opt,this); - }) - }, - /** - * 获取文件名后缀 - * @param fileName 文件名全名 - * */ - "getSuffixNameByFileName":function(fileName){ - var str = fileName; - var pos = str.lastIndexOf(".")+1; - var lastname = str.substring(pos,str.length); - return lastname; - }, - /** - * 判断某个值是否在这个数组内 - * */ - "isInArray":function(strFound,arrays){ - var ishave = false; - for(var i=0;iopt.maxFileNumber){ - alert("最多只能上传"+opt.maxFileNumber+"个文件"); - return; - } - var imgtest=/image\/(\w)*/;//图片文件测试 - var fileTypeArray = opt.fileType;//文件类型集合 - var fileSizeLimit = opt.size;//文件大小限制 - for(var i=0;i(fileSizeLimit*1000)){ - alert("文件("+fileList[i].name+")超出了大小限制!请控制在"+fileSizeLimit+"KB内"); - continue; - } - //文件类型判断 - if(fileTypeArray=="*"||uploadTools.isInArray(fileTypeStr,fileTypeArray)){ - var fileTypeUpcaseStr = fileTypeStr.toUpperCase(); - if(imgtest.test(fileList[i].type)){ - //var imgUrlStr = window.webkitURL.createObjectURL(fileList[i]);//获取文件路径 - var imgUrlStr ="";//获取文件路径 - if (window.createObjectURL != undefined) { // basic - imgUrlStr = window.createObjectURL(fileList[i]); - } else if (window.URL != undefined) { // mozilla(firefox) - imgUrlStr = window.URL.createObjectURL(fileList[i]); - } else if (window.webkitURL != undefined) { // webkit or chrome - imgUrlStr = window.webkitURL.createObjectURL(fileList[i]); - } - var fileModel = uploadTools.getShowFileType(true,fileTypeUpcaseStr,fileList[i].name,imgUrlStr,fileListArray.length); - $(boxJsObj).append(fileModel); - }else{ - var fileModel = uploadTools.getShowFileType(true,fileTypeUpcaseStr,fileList[i].name,null,fileListArray.length); - $(boxJsObj).append(fileModel); - } - uploadTools.initWithDeleteFile(opt); - fileListArray[fileListArray.length] = fileList[i]; - }else{ - alert("不支持该格式文件上传:"+fileList[i].name); - } - } - uploadFileList.setFileList(fileListArray); - - }, - /** - * 清除选择文件的input - * */ - "cleanFilInputWithSelectFile":function(opt){ - var uploadId = opt.uploadId; - $("#"+uploadId+"_file").remove(); - }, - /** - * 根据制定信息显示 - */ - "showUploadProgress":function(opt,bytesRead,percent){ - - var uploadId = opt.uploadId; - var fileListArray = uploadFileList.getFileList(); - if(opt.showSummerProgress){ - var progressBar = $("#"+uploadId+" .subberProgress .progress>div"); - progressBar.css("width",percent+"%"); - progressBar.html(percent+"%"); - } - for(var i=0;idiv").addClass("error"); - $("#"+uploadId+" .box .fileItem[fileCodeId='"+i+"'] .progress>div").css("width","100%"); - $("#"+uploadId+" .box .fileItem[fileCodeId='"+i+"'] .status>i").addClass("iconfont icon-cha"); - bytesRead = bytesRead-fileListArray[i].size; - }else{ - $("#"+uploadId+" .box .fileItem[fileCodeId='"+i+"'] .progress>div").css("width",(bytesRead/fileListArray[i].size*100)+"%"); - break; - } - }else if(testbytesRead>=0){ - - $("#"+uploadId+" .box .fileItem[fileCodeId='"+i+"'] .status>i").addClass("iconfont icon-gou"); - $("#"+uploadId+" .box .fileItem[fileCodeId='"+i+"'] .progress>div").css("width","100%"); - bytesRead = bytesRead-fileListArray[i].size; - } - } - }, - /** - * 上传文件失败集体显示 - * @param opt - */ - "uploadError":function(opt){ - var uploadId = opt.uploadId; - $("#"+uploadId+" .box .fileItem .progress>div").addClass("error"); - $("#"+uploadId+" .box .fileItem .progress>div").css("width","100%"); - $("#"+uploadId+" .box .fileItem .status>i").addClass("iconfont icon-cha"); - var progressBar = $("#"+uploadId+" .subberProgress .progress>div"); - progressBar.css("width","0%"); - progressBar.html("0%"); - }, - /** - * 上传文件 - */ - "uploadFile":function(opt){ - var uploadUrl = opt.uploadUrl; - var fileList = uploadFileList.getFileList(); - - var formData = new FormData(); - var fileNumber = uploadTools.getFileNumber(opt); - if(fileNumber<=0){ - alert("没有文件,不支持上传"); - return; - } - - for(var i=0;ii").removeClass(); - if(progressUrl!="#"&&progressUrl!="") { - var intervalId = setInterval(function(){ - $.get(progressUrl,{},function(data,status){ - console.log(data); - var percent = data.percent; - var bytesRead = data.bytesRead; - if(percent >= 100){ - clearInterval(intervalId); - percent = 100;//不能大于100 - uploadTools.initWithCleanFile(opt); - } - uploadTools.showUploadProgress(opt, bytesRead, percent); - },"json"); - },500); - }else{ - var percent = 0; - var bytesRead = 0; - var intervalId = setInterval(function(){ - percent+=5; - bytesRead+=50000; - if(percent >= 100){ - clearInterval(intervalId); - percent = 100;//不能大于100 - uploadTools.initWithCleanFile(opt); - } - uploadTools.showUploadProgress(opt, bytesRead, percent); - },500); - } - }, - /** - * 禁用文件上传 - */ - "disableFileUpload":function(opt){ - var uploadId = opt.uploadId; - $("#"+uploadId+" .uploadBts .uploadFileBt").off(); - $("#"+uploadId+" .uploadBts .uploadFileBt i").css("color","#DDDDDD"); - - }, - /** - * 禁用文件清除 - */ - "disableCleanFile":function(opt){ - var uploadId = opt.uploadId; - $("#"+uploadId+" .uploadBts .cleanFileBt").off(); - $("#"+uploadId+" .uploadBts .cleanFileBt i").css("color","#DDDDDD"); - }, - /** - * 获取文件个数 - * @param opt - */ - "getFileNumber":function(opt){ - var number = 0; - var fileList = uploadFileList.getFileList(); - for(var i=0;idiv").css("width","0%"); - $("#"+uploadId+" .subberProgress .progress>div").html("0%"); - } - uploadTools.cleanFilInputWithSelectFile(opt); - uploadFileList.setFileList([]); - $("#"+uploadId+" .box").html(""); - uploadTools.initWithUpload(opt);//初始化上传 - } -} - -var uploadFileList={ - "fileList":[], - "initFileList":function(){ - uploadFileList.fileList = new Array(); - }, - "getFileList":function(){ - return uploadFileList.fileList; - }, - "setFileList":function(fileList){ - uploadFileList.fileList = fileList; - } -} diff --git a/src/main/webapp/js/fileUploadQT/js/iconfont.js b/src/main/webapp/js/fileUploadQT/js/iconfont.js deleted file mode 100644 index 336eafab..00000000 --- a/src/main/webapp/js/fileUploadQT/js/iconfont.js +++ /dev/null @@ -1,168 +0,0 @@ -;(function(window) { - - var svgSprite = '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' - var script = function() { - var scripts = document.getElementsByTagName('script') - return scripts[scripts.length - 1] - }() - var shouldInjectCss = script.getAttribute("data-injectcss") - - /** - * document ready - */ - var ready = function(fn) { - if (document.addEventListener) { - if (~["complete", "loaded", "interactive"].indexOf(document.readyState)) { - setTimeout(fn, 0) - } else { - var loadFn = function() { - document.removeEventListener("DOMContentLoaded", loadFn, false) - fn() - } - document.addEventListener("DOMContentLoaded", loadFn, false) - } - } else if (document.attachEvent) { - IEContentLoaded(window, fn) - } - - function IEContentLoaded(w, fn) { - var d = w.document, - done = false, - // only fire once - init = function() { - if (!done) { - done = true - fn() - } - } - // polling for no errors - var polling = function() { - try { - // throws errors until after ondocumentready - d.documentElement.doScroll('left') - } catch (e) { - setTimeout(polling, 50) - return - } - // no errors, fire - - init() - }; - - polling() - // trying to always fire before onload - d.onreadystatechange = function() { - if (d.readyState == 'complete') { - d.onreadystatechange = null - init() - } - } - } - } - - /** - * Insert el before target - * - * @param {Element} el - * @param {Element} target - */ - - var before = function(el, target) { - target.parentNode.insertBefore(el, target) - } - - /** - * Prepend el to target - * - * @param {Element} el - * @param {Element} target - */ - - var prepend = function(el, target) { - if (target.firstChild) { - before(el, target.firstChild) - } else { - target.appendChild(el) - } - } - - function appendSvg() { - var div, svg - - div = document.createElement('div') - div.innerHTML = svgSprite - svgSprite = null - svg = div.getElementsByTagName('svg')[0] - if (svg) { - svg.setAttribute('aria-hidden', 'true') - svg.style.position = 'absolute' - svg.style.width = 0 - svg.style.height = 0 - svg.style.overflow = 'hidden' - prepend(svg, document.body) - } - } - - if (shouldInjectCss && !window.__iconfont__svg__cssinject__) { - window.__iconfont__svg__cssinject__ = true - try { - document.write(""); - } catch (e) { - console && console.log(e) - } - } - - ready(appendSvg) - - -})(window) \ No newline at end of file diff --git a/src/main/webapp/js/fileUploadQT/js/jquery-2.1.3.min.js b/src/main/webapp/js/fileUploadQT/js/jquery-2.1.3.min.js deleted file mode 100644 index 25714ed2..00000000 --- a/src/main/webapp/js/fileUploadQT/js/jquery-2.1.3.min.js +++ /dev/null @@ -1,4 +0,0 @@ -/*! jQuery v2.1.3 | (c) 2005, 2014 jQuery Foundation, Inc. | jquery.org/license */ -!function(a,b){"object"==typeof module&&"object"==typeof module.exports?module.exports=a.document?b(a,!0):function(a){if(!a.document)throw new Error("jQuery requires a window with a document");return b(a)}:b(a)}("undefined"!=typeof window?window:this,function(a,b){var c=[],d=c.slice,e=c.concat,f=c.push,g=c.indexOf,h={},i=h.toString,j=h.hasOwnProperty,k={},l=a.document,m="2.1.3",n=function(a,b){return new n.fn.init(a,b)},o=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,p=/^-ms-/,q=/-([\da-z])/gi,r=function(a,b){return b.toUpperCase()};n.fn=n.prototype={jquery:m,constructor:n,selector:"",length:0,toArray:function(){return d.call(this)},get:function(a){return null!=a?0>a?this[a+this.length]:this[a]:d.call(this)},pushStack:function(a){var b=n.merge(this.constructor(),a);return b.prevObject=this,b.context=this.context,b},each:function(a,b){return n.each(this,a,b)},map:function(a){return this.pushStack(n.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(d.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length,c=+a+(0>a?b:0);return this.pushStack(c>=0&&b>c?[this[c]]:[])},end:function(){return this.prevObject||this.constructor(null)},push:f,sort:c.sort,splice:c.splice},n.extend=n.fn.extend=function(){var a,b,c,d,e,f,g=arguments[0]||{},h=1,i=arguments.length,j=!1;for("boolean"==typeof g&&(j=g,g=arguments[h]||{},h++),"object"==typeof g||n.isFunction(g)||(g={}),h===i&&(g=this,h--);i>h;h++)if(null!=(a=arguments[h]))for(b in a)c=g[b],d=a[b],g!==d&&(j&&d&&(n.isPlainObject(d)||(e=n.isArray(d)))?(e?(e=!1,f=c&&n.isArray(c)?c:[]):f=c&&n.isPlainObject(c)?c:{},g[b]=n.extend(j,f,d)):void 0!==d&&(g[b]=d));return g},n.extend({expando:"jQuery"+(m+Math.random()).replace(/\D/g,""),isReady:!0,error:function(a){throw new Error(a)},noop:function(){},isFunction:function(a){return"function"===n.type(a)},isArray:Array.isArray,isWindow:function(a){return null!=a&&a===a.window},isNumeric:function(a){return!n.isArray(a)&&a-parseFloat(a)+1>=0},isPlainObject:function(a){return"object"!==n.type(a)||a.nodeType||n.isWindow(a)?!1:a.constructor&&!j.call(a.constructor.prototype,"isPrototypeOf")?!1:!0},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},type:function(a){return null==a?a+"":"object"==typeof a||"function"==typeof a?h[i.call(a)]||"object":typeof a},globalEval:function(a){var b,c=eval;a=n.trim(a),a&&(1===a.indexOf("use strict")?(b=l.createElement("script"),b.text=a,l.head.appendChild(b).parentNode.removeChild(b)):c(a))},camelCase:function(a){return a.replace(p,"ms-").replace(q,r)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()},each:function(a,b,c){var d,e=0,f=a.length,g=s(a);if(c){if(g){for(;f>e;e++)if(d=b.apply(a[e],c),d===!1)break}else for(e in a)if(d=b.apply(a[e],c),d===!1)break}else if(g){for(;f>e;e++)if(d=b.call(a[e],e,a[e]),d===!1)break}else for(e in a)if(d=b.call(a[e],e,a[e]),d===!1)break;return a},trim:function(a){return null==a?"":(a+"").replace(o,"")},makeArray:function(a,b){var c=b||[];return null!=a&&(s(Object(a))?n.merge(c,"string"==typeof a?[a]:a):f.call(c,a)),c},inArray:function(a,b,c){return null==b?-1:g.call(b,a,c)},merge:function(a,b){for(var c=+b.length,d=0,e=a.length;c>d;d++)a[e++]=b[d];return a.length=e,a},grep:function(a,b,c){for(var d,e=[],f=0,g=a.length,h=!c;g>f;f++)d=!b(a[f],f),d!==h&&e.push(a[f]);return e},map:function(a,b,c){var d,f=0,g=a.length,h=s(a),i=[];if(h)for(;g>f;f++)d=b(a[f],f,c),null!=d&&i.push(d);else for(f in a)d=b(a[f],f,c),null!=d&&i.push(d);return e.apply([],i)},guid:1,proxy:function(a,b){var c,e,f;return"string"==typeof b&&(c=a[b],b=a,a=c),n.isFunction(a)?(e=d.call(arguments,2),f=function(){return a.apply(b||this,e.concat(d.call(arguments)))},f.guid=a.guid=a.guid||n.guid++,f):void 0},now:Date.now,support:k}),n.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(a,b){h["[object "+b+"]"]=b.toLowerCase()});function s(a){var b=a.length,c=n.type(a);return"function"===c||n.isWindow(a)?!1:1===a.nodeType&&b?!0:"array"===c||0===b||"number"==typeof b&&b>0&&b-1 in a}var t=function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u="sizzle"+1*new Date,v=a.document,w=0,x=0,y=hb(),z=hb(),A=hb(),B=function(a,b){return a===b&&(l=!0),0},C=1<<31,D={}.hasOwnProperty,E=[],F=E.pop,G=E.push,H=E.push,I=E.slice,J=function(a,b){for(var c=0,d=a.length;d>c;c++)if(a[c]===b)return c;return-1},K="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",L="[\\x20\\t\\r\\n\\f]",M="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",N=M.replace("w","w#"),O="\\["+L+"*("+M+")(?:"+L+"*([*^$|!~]?=)"+L+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+N+"))|)"+L+"*\\]",P=":("+M+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+O+")*)|.*)\\)|)",Q=new RegExp(L+"+","g"),R=new RegExp("^"+L+"+|((?:^|[^\\\\])(?:\\\\.)*)"+L+"+$","g"),S=new RegExp("^"+L+"*,"+L+"*"),T=new RegExp("^"+L+"*([>+~]|"+L+")"+L+"*"),U=new RegExp("="+L+"*([^\\]'\"]*?)"+L+"*\\]","g"),V=new RegExp(P),W=new RegExp("^"+N+"$"),X={ID:new RegExp("^#("+M+")"),CLASS:new RegExp("^\\.("+M+")"),TAG:new RegExp("^("+M.replace("w","w*")+")"),ATTR:new RegExp("^"+O),PSEUDO:new RegExp("^"+P),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+L+"*(even|odd|(([+-]|)(\\d*)n|)"+L+"*(?:([+-]|)"+L+"*(\\d+)|))"+L+"*\\)|)","i"),bool:new RegExp("^(?:"+K+")$","i"),needsContext:new RegExp("^"+L+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+L+"*((?:-\\d)?\\d*)"+L+"*\\)|)(?=[^-]|$)","i")},Y=/^(?:input|select|textarea|button)$/i,Z=/^h\d$/i,$=/^[^{]+\{\s*\[native \w/,_=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ab=/[+~]/,bb=/'|\\/g,cb=new RegExp("\\\\([\\da-f]{1,6}"+L+"?|("+L+")|.)","ig"),db=function(a,b,c){var d="0x"+b-65536;return d!==d||c?b:0>d?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|56320)},eb=function(){m()};try{H.apply(E=I.call(v.childNodes),v.childNodes),E[v.childNodes.length].nodeType}catch(fb){H={apply:E.length?function(a,b){G.apply(a,I.call(b))}:function(a,b){var c=a.length,d=0;while(a[c++]=b[d++]);a.length=c-1}}}function gb(a,b,d,e){var f,h,j,k,l,o,r,s,w,x;if((b?b.ownerDocument||b:v)!==n&&m(b),b=b||n,d=d||[],k=b.nodeType,"string"!=typeof a||!a||1!==k&&9!==k&&11!==k)return d;if(!e&&p){if(11!==k&&(f=_.exec(a)))if(j=f[1]){if(9===k){if(h=b.getElementById(j),!h||!h.parentNode)return d;if(h.id===j)return d.push(h),d}else if(b.ownerDocument&&(h=b.ownerDocument.getElementById(j))&&t(b,h)&&h.id===j)return d.push(h),d}else{if(f[2])return H.apply(d,b.getElementsByTagName(a)),d;if((j=f[3])&&c.getElementsByClassName)return H.apply(d,b.getElementsByClassName(j)),d}if(c.qsa&&(!q||!q.test(a))){if(s=r=u,w=b,x=1!==k&&a,1===k&&"object"!==b.nodeName.toLowerCase()){o=g(a),(r=b.getAttribute("id"))?s=r.replace(bb,"\\$&"):b.setAttribute("id",s),s="[id='"+s+"'] ",l=o.length;while(l--)o[l]=s+rb(o[l]);w=ab.test(a)&&pb(b.parentNode)||b,x=o.join(",")}if(x)try{return H.apply(d,w.querySelectorAll(x)),d}catch(y){}finally{r||b.removeAttribute("id")}}}return i(a.replace(R,"$1"),b,d,e)}function hb(){var a=[];function b(c,e){return a.push(c+" ")>d.cacheLength&&delete b[a.shift()],b[c+" "]=e}return b}function ib(a){return a[u]=!0,a}function jb(a){var b=n.createElement("div");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function kb(a,b){var c=a.split("|"),e=a.length;while(e--)d.attrHandle[c[e]]=b}function lb(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&(~b.sourceIndex||C)-(~a.sourceIndex||C);if(d)return d;if(c)while(c=c.nextSibling)if(c===b)return-1;return a?1:-1}function mb(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function nb(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function ob(a){return ib(function(b){return b=+b,ib(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function pb(a){return a&&"undefined"!=typeof a.getElementsByTagName&&a}c=gb.support={},f=gb.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return b?"HTML"!==b.nodeName:!1},m=gb.setDocument=function(a){var b,e,g=a?a.ownerDocument||a:v;return g!==n&&9===g.nodeType&&g.documentElement?(n=g,o=g.documentElement,e=g.defaultView,e&&e!==e.top&&(e.addEventListener?e.addEventListener("unload",eb,!1):e.attachEvent&&e.attachEvent("onunload",eb)),p=!f(g),c.attributes=jb(function(a){return a.className="i",!a.getAttribute("className")}),c.getElementsByTagName=jb(function(a){return a.appendChild(g.createComment("")),!a.getElementsByTagName("*").length}),c.getElementsByClassName=$.test(g.getElementsByClassName),c.getById=jb(function(a){return o.appendChild(a).id=u,!g.getElementsByName||!g.getElementsByName(u).length}),c.getById?(d.find.ID=function(a,b){if("undefined"!=typeof b.getElementById&&p){var c=b.getElementById(a);return c&&c.parentNode?[c]:[]}},d.filter.ID=function(a){var b=a.replace(cb,db);return function(a){return a.getAttribute("id")===b}}):(delete d.find.ID,d.filter.ID=function(a){var b=a.replace(cb,db);return function(a){var c="undefined"!=typeof a.getAttributeNode&&a.getAttributeNode("id");return c&&c.value===b}}),d.find.TAG=c.getElementsByTagName?function(a,b){return"undefined"!=typeof b.getElementsByTagName?b.getElementsByTagName(a):c.qsa?b.querySelectorAll(a):void 0}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if("*"===a){while(c=f[e++])1===c.nodeType&&d.push(c);return d}return f},d.find.CLASS=c.getElementsByClassName&&function(a,b){return p?b.getElementsByClassName(a):void 0},r=[],q=[],(c.qsa=$.test(g.querySelectorAll))&&(jb(function(a){o.appendChild(a).innerHTML="",a.querySelectorAll("[msallowcapture^='']").length&&q.push("[*^$]="+L+"*(?:''|\"\")"),a.querySelectorAll("[selected]").length||q.push("\\["+L+"*(?:value|"+K+")"),a.querySelectorAll("[id~="+u+"-]").length||q.push("~="),a.querySelectorAll(":checked").length||q.push(":checked"),a.querySelectorAll("a#"+u+"+*").length||q.push(".#.+[+~]")}),jb(function(a){var b=g.createElement("input");b.setAttribute("type","hidden"),a.appendChild(b).setAttribute("name","D"),a.querySelectorAll("[name=d]").length&&q.push("name"+L+"*[*^$|!~]?="),a.querySelectorAll(":enabled").length||q.push(":enabled",":disabled"),a.querySelectorAll("*,:x"),q.push(",.*:")})),(c.matchesSelector=$.test(s=o.matches||o.webkitMatchesSelector||o.mozMatchesSelector||o.oMatchesSelector||o.msMatchesSelector))&&jb(function(a){c.disconnectedMatch=s.call(a,"div"),s.call(a,"[s!='']:x"),r.push("!=",P)}),q=q.length&&new RegExp(q.join("|")),r=r.length&&new RegExp(r.join("|")),b=$.test(o.compareDocumentPosition),t=b||$.test(o.contains)?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!(!d||1!==d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d)))}:function(a,b){if(b)while(b=b.parentNode)if(b===a)return!0;return!1},B=b?function(a,b){if(a===b)return l=!0,0;var d=!a.compareDocumentPosition-!b.compareDocumentPosition;return d?d:(d=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1,1&d||!c.sortDetached&&b.compareDocumentPosition(a)===d?a===g||a.ownerDocument===v&&t(v,a)?-1:b===g||b.ownerDocument===v&&t(v,b)?1:k?J(k,a)-J(k,b):0:4&d?-1:1)}:function(a,b){if(a===b)return l=!0,0;var c,d=0,e=a.parentNode,f=b.parentNode,h=[a],i=[b];if(!e||!f)return a===g?-1:b===g?1:e?-1:f?1:k?J(k,a)-J(k,b):0;if(e===f)return lb(a,b);c=a;while(c=c.parentNode)h.unshift(c);c=b;while(c=c.parentNode)i.unshift(c);while(h[d]===i[d])d++;return d?lb(h[d],i[d]):h[d]===v?-1:i[d]===v?1:0},g):n},gb.matches=function(a,b){return gb(a,null,null,b)},gb.matchesSelector=function(a,b){if((a.ownerDocument||a)!==n&&m(a),b=b.replace(U,"='$1']"),!(!c.matchesSelector||!p||r&&r.test(b)||q&&q.test(b)))try{var d=s.call(a,b);if(d||c.disconnectedMatch||a.document&&11!==a.document.nodeType)return d}catch(e){}return gb(b,n,null,[a]).length>0},gb.contains=function(a,b){return(a.ownerDocument||a)!==n&&m(a),t(a,b)},gb.attr=function(a,b){(a.ownerDocument||a)!==n&&m(a);var e=d.attrHandle[b.toLowerCase()],f=e&&D.call(d.attrHandle,b.toLowerCase())?e(a,b,!p):void 0;return void 0!==f?f:c.attributes||!p?a.getAttribute(b):(f=a.getAttributeNode(b))&&f.specified?f.value:null},gb.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},gb.uniqueSort=function(a){var b,d=[],e=0,f=0;if(l=!c.detectDuplicates,k=!c.sortStable&&a.slice(0),a.sort(B),l){while(b=a[f++])b===a[f]&&(e=d.push(f));while(e--)a.splice(d[e],1)}return k=null,a},e=gb.getText=function(a){var b,c="",d=0,f=a.nodeType;if(f){if(1===f||9===f||11===f){if("string"==typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=e(a)}else if(3===f||4===f)return a.nodeValue}else while(b=a[d++])c+=e(b);return c},d=gb.selectors={cacheLength:50,createPseudo:ib,match:X,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(cb,db),a[3]=(a[3]||a[4]||a[5]||"").replace(cb,db),"~="===a[2]&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),"nth"===a[1].slice(0,3)?(a[3]||gb.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*("even"===a[3]||"odd"===a[3])),a[5]=+(a[7]+a[8]||"odd"===a[3])):a[3]&&gb.error(a[0]),a},PSEUDO:function(a){var b,c=!a[6]&&a[2];return X.CHILD.test(a[0])?null:(a[3]?a[2]=a[4]||a[5]||"":c&&V.test(c)&&(b=g(c,!0))&&(b=c.indexOf(")",c.length-b)-c.length)&&(a[0]=a[0].slice(0,b),a[2]=c.slice(0,b)),a.slice(0,3))}},filter:{TAG:function(a){var b=a.replace(cb,db).toLowerCase();return"*"===a?function(){return!0}:function(a){return a.nodeName&&a.nodeName.toLowerCase()===b}},CLASS:function(a){var b=y[a+" "];return b||(b=new RegExp("(^|"+L+")"+a+"("+L+"|$)"))&&y(a,function(a){return b.test("string"==typeof a.className&&a.className||"undefined"!=typeof a.getAttribute&&a.getAttribute("class")||"")})},ATTR:function(a,b,c){return function(d){var e=gb.attr(d,a);return null==e?"!="===b:b?(e+="","="===b?e===c:"!="===b?e!==c:"^="===b?c&&0===e.indexOf(c):"*="===b?c&&e.indexOf(c)>-1:"$="===b?c&&e.slice(-c.length)===c:"~="===b?(" "+e.replace(Q," ")+" ").indexOf(c)>-1:"|="===b?e===c||e.slice(0,c.length+1)===c+"-":!1):!0}},CHILD:function(a,b,c,d,e){var f="nth"!==a.slice(0,3),g="last"!==a.slice(-4),h="of-type"===b;return 1===d&&0===e?function(a){return!!a.parentNode}:function(b,c,i){var j,k,l,m,n,o,p=f!==g?"nextSibling":"previousSibling",q=b.parentNode,r=h&&b.nodeName.toLowerCase(),s=!i&&!h;if(q){if(f){while(p){l=b;while(l=l[p])if(h?l.nodeName.toLowerCase()===r:1===l.nodeType)return!1;o=p="only"===a&&!o&&"nextSibling"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&s){k=q[u]||(q[u]={}),j=k[a]||[],n=j[0]===w&&j[1],m=j[0]===w&&j[2],l=n&&q.childNodes[n];while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if(1===l.nodeType&&++m&&l===b){k[a]=[w,n,m];break}}else if(s&&(j=(b[u]||(b[u]={}))[a])&&j[0]===w)m=j[1];else while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if((h?l.nodeName.toLowerCase()===r:1===l.nodeType)&&++m&&(s&&((l[u]||(l[u]={}))[a]=[w,m]),l===b))break;return m-=e,m===d||m%d===0&&m/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||gb.error("unsupported pseudo: "+a);return e[u]?e(b):e.length>1?(c=[a,a,"",b],d.setFilters.hasOwnProperty(a.toLowerCase())?ib(function(a,c){var d,f=e(a,b),g=f.length;while(g--)d=J(a,f[g]),a[d]=!(c[d]=f[g])}):function(a){return e(a,0,c)}):e}},pseudos:{not:ib(function(a){var b=[],c=[],d=h(a.replace(R,"$1"));return d[u]?ib(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)(f=g[h])&&(a[h]=!(b[h]=f))}):function(a,e,f){return b[0]=a,d(b,null,f,c),b[0]=null,!c.pop()}}),has:ib(function(a){return function(b){return gb(a,b).length>0}}),contains:ib(function(a){return a=a.replace(cb,db),function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:ib(function(a){return W.test(a||"")||gb.error("unsupported lang: "+a),a=a.replace(cb,db).toLowerCase(),function(b){var c;do if(c=p?b.lang:b.getAttribute("xml:lang")||b.getAttribute("lang"))return c=c.toLowerCase(),c===a||0===c.indexOf(a+"-");while((b=b.parentNode)&&1===b.nodeType);return!1}}),target:function(b){var c=a.location&&a.location.hash;return c&&c.slice(1)===b.id},root:function(a){return a===o},focus:function(a){return a===n.activeElement&&(!n.hasFocus||n.hasFocus())&&!!(a.type||a.href||~a.tabIndex)},enabled:function(a){return a.disabled===!1},disabled:function(a){return a.disabled===!0},checked:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&!!a.checked||"option"===b&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeType<6)return!1;return!0},parent:function(a){return!d.pseudos.empty(a)},header:function(a){return Z.test(a.nodeName)},input:function(a){return Y.test(a.nodeName)},button:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&"button"===a.type||"button"===b},text:function(a){var b;return"input"===a.nodeName.toLowerCase()&&"text"===a.type&&(null==(b=a.getAttribute("type"))||"text"===b.toLowerCase())},first:ob(function(){return[0]}),last:ob(function(a,b){return[b-1]}),eq:ob(function(a,b,c){return[0>c?c+b:c]}),even:ob(function(a,b){for(var c=0;b>c;c+=2)a.push(c);return a}),odd:ob(function(a,b){for(var c=1;b>c;c+=2)a.push(c);return a}),lt:ob(function(a,b,c){for(var d=0>c?c+b:c;--d>=0;)a.push(d);return a}),gt:ob(function(a,b,c){for(var d=0>c?c+b:c;++db;b++)d+=a[b].value;return d}function sb(a,b,c){var d=b.dir,e=c&&"parentNode"===d,f=x++;return b.first?function(b,c,f){while(b=b[d])if(1===b.nodeType||e)return a(b,c,f)}:function(b,c,g){var h,i,j=[w,f];if(g){while(b=b[d])if((1===b.nodeType||e)&&a(b,c,g))return!0}else while(b=b[d])if(1===b.nodeType||e){if(i=b[u]||(b[u]={}),(h=i[d])&&h[0]===w&&h[1]===f)return j[2]=h[2];if(i[d]=j,j[2]=a(b,c,g))return!0}}}function tb(a){return a.length>1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function ub(a,b,c){for(var d=0,e=b.length;e>d;d++)gb(a,b[d],c);return c}function vb(a,b,c,d,e){for(var f,g=[],h=0,i=a.length,j=null!=b;i>h;h++)(f=a[h])&&(!c||c(f,d,e))&&(g.push(f),j&&b.push(h));return g}function wb(a,b,c,d,e,f){return d&&!d[u]&&(d=wb(d)),e&&!e[u]&&(e=wb(e,f)),ib(function(f,g,h,i){var j,k,l,m=[],n=[],o=g.length,p=f||ub(b||"*",h.nodeType?[h]:h,[]),q=!a||!f&&b?p:vb(p,m,a,h,i),r=c?e||(f?a:o||d)?[]:g:q;if(c&&c(q,r,h,i),d){j=vb(r,n),d(j,[],h,i),k=j.length;while(k--)(l=j[k])&&(r[n[k]]=!(q[n[k]]=l))}if(f){if(e||a){if(e){j=[],k=r.length;while(k--)(l=r[k])&&j.push(q[k]=l);e(null,r=[],j,i)}k=r.length;while(k--)(l=r[k])&&(j=e?J(f,l):m[k])>-1&&(f[j]=!(g[j]=l))}}else r=vb(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):H.apply(g,r)})}function xb(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],h=g||d.relative[" "],i=g?1:0,k=sb(function(a){return a===b},h,!0),l=sb(function(a){return J(b,a)>-1},h,!0),m=[function(a,c,d){var e=!g&&(d||c!==j)||((b=c).nodeType?k(a,c,d):l(a,c,d));return b=null,e}];f>i;i++)if(c=d.relative[a[i].type])m=[sb(tb(m),c)];else{if(c=d.filter[a[i].type].apply(null,a[i].matches),c[u]){for(e=++i;f>e;e++)if(d.relative[a[e].type])break;return wb(i>1&&tb(m),i>1&&rb(a.slice(0,i-1).concat({value:" "===a[i-2].type?"*":""})).replace(R,"$1"),c,e>i&&xb(a.slice(i,e)),f>e&&xb(a=a.slice(e)),f>e&&rb(a))}m.push(c)}return tb(m)}function yb(a,b){var c=b.length>0,e=a.length>0,f=function(f,g,h,i,k){var l,m,o,p=0,q="0",r=f&&[],s=[],t=j,u=f||e&&d.find.TAG("*",k),v=w+=null==t?1:Math.random()||.1,x=u.length;for(k&&(j=g!==n&&g);q!==x&&null!=(l=u[q]);q++){if(e&&l){m=0;while(o=a[m++])if(o(l,g,h)){i.push(l);break}k&&(w=v)}c&&((l=!o&&l)&&p--,f&&r.push(l))}if(p+=q,c&&q!==p){m=0;while(o=b[m++])o(r,s,g,h);if(f){if(p>0)while(q--)r[q]||s[q]||(s[q]=F.call(i));s=vb(s)}H.apply(i,s),k&&!f&&s.length>0&&p+b.length>1&&gb.uniqueSort(i)}return k&&(w=v,j=t),r};return c?ib(f):f}return h=gb.compile=function(a,b){var c,d=[],e=[],f=A[a+" "];if(!f){b||(b=g(a)),c=b.length;while(c--)f=xb(b[c]),f[u]?d.push(f):e.push(f);f=A(a,yb(e,d)),f.selector=a}return f},i=gb.select=function(a,b,e,f){var i,j,k,l,m,n="function"==typeof a&&a,o=!f&&g(a=n.selector||a);if(e=e||[],1===o.length){if(j=o[0]=o[0].slice(0),j.length>2&&"ID"===(k=j[0]).type&&c.getById&&9===b.nodeType&&p&&d.relative[j[1].type]){if(b=(d.find.ID(k.matches[0].replace(cb,db),b)||[])[0],!b)return e;n&&(b=b.parentNode),a=a.slice(j.shift().value.length)}i=X.needsContext.test(a)?0:j.length;while(i--){if(k=j[i],d.relative[l=k.type])break;if((m=d.find[l])&&(f=m(k.matches[0].replace(cb,db),ab.test(j[0].type)&&pb(b.parentNode)||b))){if(j.splice(i,1),a=f.length&&rb(j),!a)return H.apply(e,f),e;break}}}return(n||h(a,o))(f,b,!p,e,ab.test(a)&&pb(b.parentNode)||b),e},c.sortStable=u.split("").sort(B).join("")===u,c.detectDuplicates=!!l,m(),c.sortDetached=jb(function(a){return 1&a.compareDocumentPosition(n.createElement("div"))}),jb(function(a){return a.innerHTML="","#"===a.firstChild.getAttribute("href")})||kb("type|href|height|width",function(a,b,c){return c?void 0:a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),c.attributes&&jb(function(a){return a.innerHTML="",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||kb("value",function(a,b,c){return c||"input"!==a.nodeName.toLowerCase()?void 0:a.defaultValue}),jb(function(a){return null==a.getAttribute("disabled")})||kb(K,function(a,b,c){var d;return c?void 0:a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),gb}(a);n.find=t,n.expr=t.selectors,n.expr[":"]=n.expr.pseudos,n.unique=t.uniqueSort,n.text=t.getText,n.isXMLDoc=t.isXML,n.contains=t.contains;var u=n.expr.match.needsContext,v=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,w=/^.[^:#\[\.,]*$/;function x(a,b,c){if(n.isFunction(b))return n.grep(a,function(a,d){return!!b.call(a,d,a)!==c});if(b.nodeType)return n.grep(a,function(a){return a===b!==c});if("string"==typeof b){if(w.test(b))return n.filter(b,a,c);b=n.filter(b,a)}return n.grep(a,function(a){return g.call(b,a)>=0!==c})}n.filter=function(a,b,c){var d=b[0];return c&&(a=":not("+a+")"),1===b.length&&1===d.nodeType?n.find.matchesSelector(d,a)?[d]:[]:n.find.matches(a,n.grep(b,function(a){return 1===a.nodeType}))},n.fn.extend({find:function(a){var b,c=this.length,d=[],e=this;if("string"!=typeof a)return this.pushStack(n(a).filter(function(){for(b=0;c>b;b++)if(n.contains(e[b],this))return!0}));for(b=0;c>b;b++)n.find(a,e[b],d);return d=this.pushStack(c>1?n.unique(d):d),d.selector=this.selector?this.selector+" "+a:a,d},filter:function(a){return this.pushStack(x(this,a||[],!1))},not:function(a){return this.pushStack(x(this,a||[],!0))},is:function(a){return!!x(this,"string"==typeof a&&u.test(a)?n(a):a||[],!1).length}});var y,z=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,A=n.fn.init=function(a,b){var c,d;if(!a)return this;if("string"==typeof a){if(c="<"===a[0]&&">"===a[a.length-1]&&a.length>=3?[null,a,null]:z.exec(a),!c||!c[1]&&b)return!b||b.jquery?(b||y).find(a):this.constructor(b).find(a);if(c[1]){if(b=b instanceof n?b[0]:b,n.merge(this,n.parseHTML(c[1],b&&b.nodeType?b.ownerDocument||b:l,!0)),v.test(c[1])&&n.isPlainObject(b))for(c in b)n.isFunction(this[c])?this[c](b[c]):this.attr(c,b[c]);return this}return d=l.getElementById(c[2]),d&&d.parentNode&&(this.length=1,this[0]=d),this.context=l,this.selector=a,this}return a.nodeType?(this.context=this[0]=a,this.length=1,this):n.isFunction(a)?"undefined"!=typeof y.ready?y.ready(a):a(n):(void 0!==a.selector&&(this.selector=a.selector,this.context=a.context),n.makeArray(a,this))};A.prototype=n.fn,y=n(l);var B=/^(?:parents|prev(?:Until|All))/,C={children:!0,contents:!0,next:!0,prev:!0};n.extend({dir:function(a,b,c){var d=[],e=void 0!==c;while((a=a[b])&&9!==a.nodeType)if(1===a.nodeType){if(e&&n(a).is(c))break;d.push(a)}return d},sibling:function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c}}),n.fn.extend({has:function(a){var b=n(a,this),c=b.length;return this.filter(function(){for(var a=0;c>a;a++)if(n.contains(this,b[a]))return!0})},closest:function(a,b){for(var c,d=0,e=this.length,f=[],g=u.test(a)||"string"!=typeof a?n(a,b||this.context):0;e>d;d++)for(c=this[d];c&&c!==b;c=c.parentNode)if(c.nodeType<11&&(g?g.index(c)>-1:1===c.nodeType&&n.find.matchesSelector(c,a))){f.push(c);break}return this.pushStack(f.length>1?n.unique(f):f)},index:function(a){return a?"string"==typeof a?g.call(n(a),this[0]):g.call(this,a.jquery?a[0]:a):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){return this.pushStack(n.unique(n.merge(this.get(),n(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});function D(a,b){while((a=a[b])&&1!==a.nodeType);return a}n.each({parent:function(a){var b=a.parentNode;return b&&11!==b.nodeType?b:null},parents:function(a){return n.dir(a,"parentNode")},parentsUntil:function(a,b,c){return n.dir(a,"parentNode",c)},next:function(a){return D(a,"nextSibling")},prev:function(a){return D(a,"previousSibling")},nextAll:function(a){return n.dir(a,"nextSibling")},prevAll:function(a){return n.dir(a,"previousSibling")},nextUntil:function(a,b,c){return n.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return n.dir(a,"previousSibling",c)},siblings:function(a){return n.sibling((a.parentNode||{}).firstChild,a)},children:function(a){return n.sibling(a.firstChild)},contents:function(a){return a.contentDocument||n.merge([],a.childNodes)}},function(a,b){n.fn[a]=function(c,d){var e=n.map(this,b,c);return"Until"!==a.slice(-5)&&(d=c),d&&"string"==typeof d&&(e=n.filter(d,e)),this.length>1&&(C[a]||n.unique(e),B.test(a)&&e.reverse()),this.pushStack(e)}});var E=/\S+/g,F={};function G(a){var b=F[a]={};return n.each(a.match(E)||[],function(a,c){b[c]=!0}),b}n.Callbacks=function(a){a="string"==typeof a?F[a]||G(a):n.extend({},a);var b,c,d,e,f,g,h=[],i=!a.once&&[],j=function(l){for(b=a.memory&&l,c=!0,g=e||0,e=0,f=h.length,d=!0;h&&f>g;g++)if(h[g].apply(l[0],l[1])===!1&&a.stopOnFalse){b=!1;break}d=!1,h&&(i?i.length&&j(i.shift()):b?h=[]:k.disable())},k={add:function(){if(h){var c=h.length;!function g(b){n.each(b,function(b,c){var d=n.type(c);"function"===d?a.unique&&k.has(c)||h.push(c):c&&c.length&&"string"!==d&&g(c)})}(arguments),d?f=h.length:b&&(e=c,j(b))}return this},remove:function(){return h&&n.each(arguments,function(a,b){var c;while((c=n.inArray(b,h,c))>-1)h.splice(c,1),d&&(f>=c&&f--,g>=c&&g--)}),this},has:function(a){return a?n.inArray(a,h)>-1:!(!h||!h.length)},empty:function(){return h=[],f=0,this},disable:function(){return h=i=b=void 0,this},disabled:function(){return!h},lock:function(){return i=void 0,b||k.disable(),this},locked:function(){return!i},fireWith:function(a,b){return!h||c&&!i||(b=b||[],b=[a,b.slice?b.slice():b],d?i.push(b):j(b)),this},fire:function(){return k.fireWith(this,arguments),this},fired:function(){return!!c}};return k},n.extend({Deferred:function(a){var b=[["resolve","done",n.Callbacks("once memory"),"resolved"],["reject","fail",n.Callbacks("once memory"),"rejected"],["notify","progress",n.Callbacks("memory")]],c="pending",d={state:function(){return c},always:function(){return e.done(arguments).fail(arguments),this},then:function(){var a=arguments;return n.Deferred(function(c){n.each(b,function(b,f){var g=n.isFunction(a[b])&&a[b];e[f[1]](function(){var a=g&&g.apply(this,arguments);a&&n.isFunction(a.promise)?a.promise().done(c.resolve).fail(c.reject).progress(c.notify):c[f[0]+"With"](this===d?c.promise():this,g?[a]:arguments)})}),a=null}).promise()},promise:function(a){return null!=a?n.extend(a,d):d}},e={};return d.pipe=d.then,n.each(b,function(a,f){var g=f[2],h=f[3];d[f[1]]=g.add,h&&g.add(function(){c=h},b[1^a][2].disable,b[2][2].lock),e[f[0]]=function(){return e[f[0]+"With"](this===e?d:this,arguments),this},e[f[0]+"With"]=g.fireWith}),d.promise(e),a&&a.call(e,e),e},when:function(a){var b=0,c=d.call(arguments),e=c.length,f=1!==e||a&&n.isFunction(a.promise)?e:0,g=1===f?a:n.Deferred(),h=function(a,b,c){return function(e){b[a]=this,c[a]=arguments.length>1?d.call(arguments):e,c===i?g.notifyWith(b,c):--f||g.resolveWith(b,c)}},i,j,k;if(e>1)for(i=new Array(e),j=new Array(e),k=new Array(e);e>b;b++)c[b]&&n.isFunction(c[b].promise)?c[b].promise().done(h(b,k,c)).fail(g.reject).progress(h(b,j,i)):--f;return f||g.resolveWith(k,c),g.promise()}});var H;n.fn.ready=function(a){return n.ready.promise().done(a),this},n.extend({isReady:!1,readyWait:1,holdReady:function(a){a?n.readyWait++:n.ready(!0)},ready:function(a){(a===!0?--n.readyWait:n.isReady)||(n.isReady=!0,a!==!0&&--n.readyWait>0||(H.resolveWith(l,[n]),n.fn.triggerHandler&&(n(l).triggerHandler("ready"),n(l).off("ready"))))}});function I(){l.removeEventListener("DOMContentLoaded",I,!1),a.removeEventListener("load",I,!1),n.ready()}n.ready.promise=function(b){return H||(H=n.Deferred(),"complete"===l.readyState?setTimeout(n.ready):(l.addEventListener("DOMContentLoaded",I,!1),a.addEventListener("load",I,!1))),H.promise(b)},n.ready.promise();var J=n.access=function(a,b,c,d,e,f,g){var h=0,i=a.length,j=null==c;if("object"===n.type(c)){e=!0;for(h in c)n.access(a,b,h,c[h],!0,f,g)}else if(void 0!==d&&(e=!0,n.isFunction(d)||(g=!0),j&&(g?(b.call(a,d),b=null):(j=b,b=function(a,b,c){return j.call(n(a),c)})),b))for(;i>h;h++)b(a[h],c,g?d:d.call(a[h],h,b(a[h],c)));return e?a:j?b.call(a):i?b(a[0],c):f};n.acceptData=function(a){return 1===a.nodeType||9===a.nodeType||!+a.nodeType};function K(){Object.defineProperty(this.cache={},0,{get:function(){return{}}}),this.expando=n.expando+K.uid++}K.uid=1,K.accepts=n.acceptData,K.prototype={key:function(a){if(!K.accepts(a))return 0;var b={},c=a[this.expando];if(!c){c=K.uid++;try{b[this.expando]={value:c},Object.defineProperties(a,b)}catch(d){b[this.expando]=c,n.extend(a,b)}}return this.cache[c]||(this.cache[c]={}),c},set:function(a,b,c){var d,e=this.key(a),f=this.cache[e];if("string"==typeof b)f[b]=c;else if(n.isEmptyObject(f))n.extend(this.cache[e],b);else for(d in b)f[d]=b[d];return f},get:function(a,b){var c=this.cache[this.key(a)];return void 0===b?c:c[b]},access:function(a,b,c){var d;return void 0===b||b&&"string"==typeof b&&void 0===c?(d=this.get(a,b),void 0!==d?d:this.get(a,n.camelCase(b))):(this.set(a,b,c),void 0!==c?c:b)},remove:function(a,b){var c,d,e,f=this.key(a),g=this.cache[f];if(void 0===b)this.cache[f]={};else{n.isArray(b)?d=b.concat(b.map(n.camelCase)):(e=n.camelCase(b),b in g?d=[b,e]:(d=e,d=d in g?[d]:d.match(E)||[])),c=d.length;while(c--)delete g[d[c]]}},hasData:function(a){return!n.isEmptyObject(this.cache[a[this.expando]]||{})},discard:function(a){a[this.expando]&&delete this.cache[a[this.expando]]}};var L=new K,M=new K,N=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,O=/([A-Z])/g;function P(a,b,c){var d;if(void 0===c&&1===a.nodeType)if(d="data-"+b.replace(O,"-$1").toLowerCase(),c=a.getAttribute(d),"string"==typeof c){try{c="true"===c?!0:"false"===c?!1:"null"===c?null:+c+""===c?+c:N.test(c)?n.parseJSON(c):c}catch(e){}M.set(a,b,c)}else c=void 0;return c}n.extend({hasData:function(a){return M.hasData(a)||L.hasData(a)},data:function(a,b,c){return M.access(a,b,c) -},removeData:function(a,b){M.remove(a,b)},_data:function(a,b,c){return L.access(a,b,c)},_removeData:function(a,b){L.remove(a,b)}}),n.fn.extend({data:function(a,b){var c,d,e,f=this[0],g=f&&f.attributes;if(void 0===a){if(this.length&&(e=M.get(f),1===f.nodeType&&!L.get(f,"hasDataAttrs"))){c=g.length;while(c--)g[c]&&(d=g[c].name,0===d.indexOf("data-")&&(d=n.camelCase(d.slice(5)),P(f,d,e[d])));L.set(f,"hasDataAttrs",!0)}return e}return"object"==typeof a?this.each(function(){M.set(this,a)}):J(this,function(b){var c,d=n.camelCase(a);if(f&&void 0===b){if(c=M.get(f,a),void 0!==c)return c;if(c=M.get(f,d),void 0!==c)return c;if(c=P(f,d,void 0),void 0!==c)return c}else this.each(function(){var c=M.get(this,d);M.set(this,d,b),-1!==a.indexOf("-")&&void 0!==c&&M.set(this,a,b)})},null,b,arguments.length>1,null,!0)},removeData:function(a){return this.each(function(){M.remove(this,a)})}}),n.extend({queue:function(a,b,c){var d;return a?(b=(b||"fx")+"queue",d=L.get(a,b),c&&(!d||n.isArray(c)?d=L.access(a,b,n.makeArray(c)):d.push(c)),d||[]):void 0},dequeue:function(a,b){b=b||"fx";var c=n.queue(a,b),d=c.length,e=c.shift(),f=n._queueHooks(a,b),g=function(){n.dequeue(a,b)};"inprogress"===e&&(e=c.shift(),d--),e&&("fx"===b&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return L.get(a,c)||L.access(a,c,{empty:n.Callbacks("once memory").add(function(){L.remove(a,[b+"queue",c])})})}}),n.fn.extend({queue:function(a,b){var c=2;return"string"!=typeof a&&(b=a,a="fx",c--),arguments.lengthx",k.noCloneChecked=!!b.cloneNode(!0).lastChild.defaultValue}();var U="undefined";k.focusinBubbles="onfocusin"in a;var V=/^key/,W=/^(?:mouse|pointer|contextmenu)|click/,X=/^(?:focusinfocus|focusoutblur)$/,Y=/^([^.]*)(?:\.(.+)|)$/;function Z(){return!0}function $(){return!1}function _(){try{return l.activeElement}catch(a){}}n.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=L.get(a);if(r){c.handler&&(f=c,c=f.handler,e=f.selector),c.guid||(c.guid=n.guid++),(i=r.events)||(i=r.events={}),(g=r.handle)||(g=r.handle=function(b){return typeof n!==U&&n.event.triggered!==b.type?n.event.dispatch.apply(a,arguments):void 0}),b=(b||"").match(E)||[""],j=b.length;while(j--)h=Y.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o&&(l=n.event.special[o]||{},o=(e?l.delegateType:l.bindType)||o,l=n.event.special[o]||{},k=n.extend({type:o,origType:q,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&n.expr.match.needsContext.test(e),namespace:p.join(".")},f),(m=i[o])||(m=i[o]=[],m.delegateCount=0,l.setup&&l.setup.call(a,d,p,g)!==!1||a.addEventListener&&a.addEventListener(o,g,!1)),l.add&&(l.add.call(a,k),k.handler.guid||(k.handler.guid=c.guid)),e?m.splice(m.delegateCount++,0,k):m.push(k),n.event.global[o]=!0)}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=L.hasData(a)&&L.get(a);if(r&&(i=r.events)){b=(b||"").match(E)||[""],j=b.length;while(j--)if(h=Y.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o){l=n.event.special[o]||{},o=(d?l.delegateType:l.bindType)||o,m=i[o]||[],h=h[2]&&new RegExp("(^|\\.)"+p.join("\\.(?:.*\\.|)")+"(\\.|$)"),g=f=m.length;while(f--)k=m[f],!e&&q!==k.origType||c&&c.guid!==k.guid||h&&!h.test(k.namespace)||d&&d!==k.selector&&("**"!==d||!k.selector)||(m.splice(f,1),k.selector&&m.delegateCount--,l.remove&&l.remove.call(a,k));g&&!m.length&&(l.teardown&&l.teardown.call(a,p,r.handle)!==!1||n.removeEvent(a,o,r.handle),delete i[o])}else for(o in i)n.event.remove(a,o+b[j],c,d,!0);n.isEmptyObject(i)&&(delete r.handle,L.remove(a,"events"))}},trigger:function(b,c,d,e){var f,g,h,i,k,m,o,p=[d||l],q=j.call(b,"type")?b.type:b,r=j.call(b,"namespace")?b.namespace.split("."):[];if(g=h=d=d||l,3!==d.nodeType&&8!==d.nodeType&&!X.test(q+n.event.triggered)&&(q.indexOf(".")>=0&&(r=q.split("."),q=r.shift(),r.sort()),k=q.indexOf(":")<0&&"on"+q,b=b[n.expando]?b:new n.Event(q,"object"==typeof b&&b),b.isTrigger=e?2:3,b.namespace=r.join("."),b.namespace_re=b.namespace?new RegExp("(^|\\.)"+r.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,b.result=void 0,b.target||(b.target=d),c=null==c?[b]:n.makeArray(c,[b]),o=n.event.special[q]||{},e||!o.trigger||o.trigger.apply(d,c)!==!1)){if(!e&&!o.noBubble&&!n.isWindow(d)){for(i=o.delegateType||q,X.test(i+q)||(g=g.parentNode);g;g=g.parentNode)p.push(g),h=g;h===(d.ownerDocument||l)&&p.push(h.defaultView||h.parentWindow||a)}f=0;while((g=p[f++])&&!b.isPropagationStopped())b.type=f>1?i:o.bindType||q,m=(L.get(g,"events")||{})[b.type]&&L.get(g,"handle"),m&&m.apply(g,c),m=k&&g[k],m&&m.apply&&n.acceptData(g)&&(b.result=m.apply(g,c),b.result===!1&&b.preventDefault());return b.type=q,e||b.isDefaultPrevented()||o._default&&o._default.apply(p.pop(),c)!==!1||!n.acceptData(d)||k&&n.isFunction(d[q])&&!n.isWindow(d)&&(h=d[k],h&&(d[k]=null),n.event.triggered=q,d[q](),n.event.triggered=void 0,h&&(d[k]=h)),b.result}},dispatch:function(a){a=n.event.fix(a);var b,c,e,f,g,h=[],i=d.call(arguments),j=(L.get(this,"events")||{})[a.type]||[],k=n.event.special[a.type]||{};if(i[0]=a,a.delegateTarget=this,!k.preDispatch||k.preDispatch.call(this,a)!==!1){h=n.event.handlers.call(this,a,j),b=0;while((f=h[b++])&&!a.isPropagationStopped()){a.currentTarget=f.elem,c=0;while((g=f.handlers[c++])&&!a.isImmediatePropagationStopped())(!a.namespace_re||a.namespace_re.test(g.namespace))&&(a.handleObj=g,a.data=g.data,e=((n.event.special[g.origType]||{}).handle||g.handler).apply(f.elem,i),void 0!==e&&(a.result=e)===!1&&(a.preventDefault(),a.stopPropagation()))}return k.postDispatch&&k.postDispatch.call(this,a),a.result}},handlers:function(a,b){var c,d,e,f,g=[],h=b.delegateCount,i=a.target;if(h&&i.nodeType&&(!a.button||"click"!==a.type))for(;i!==this;i=i.parentNode||this)if(i.disabled!==!0||"click"!==a.type){for(d=[],c=0;h>c;c++)f=b[c],e=f.selector+" ",void 0===d[e]&&(d[e]=f.needsContext?n(e,this).index(i)>=0:n.find(e,this,null,[i]).length),d[e]&&d.push(f);d.length&&g.push({elem:i,handlers:d})}return h]*)\/>/gi,bb=/<([\w:]+)/,cb=/<|&#?\w+;/,db=/<(?:script|style|link)/i,eb=/checked\s*(?:[^=]|=\s*.checked.)/i,fb=/^$|\/(?:java|ecma)script/i,gb=/^true\/(.*)/,hb=/^\s*\s*$/g,ib={option:[1,""],thead:[1,"","
            "],col:[2,"","
            "],tr:[2,"","
            "],td:[3,"","
            "],_default:[0,"",""]};ib.optgroup=ib.option,ib.tbody=ib.tfoot=ib.colgroup=ib.caption=ib.thead,ib.th=ib.td;function jb(a,b){return n.nodeName(a,"table")&&n.nodeName(11!==b.nodeType?b:b.firstChild,"tr")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function kb(a){return a.type=(null!==a.getAttribute("type"))+"/"+a.type,a}function lb(a){var b=gb.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function mb(a,b){for(var c=0,d=a.length;d>c;c++)L.set(a[c],"globalEval",!b||L.get(b[c],"globalEval"))}function nb(a,b){var c,d,e,f,g,h,i,j;if(1===b.nodeType){if(L.hasData(a)&&(f=L.access(a),g=L.set(b,f),j=f.events)){delete g.handle,g.events={};for(e in j)for(c=0,d=j[e].length;d>c;c++)n.event.add(b,e,j[e][c])}M.hasData(a)&&(h=M.access(a),i=n.extend({},h),M.set(b,i))}}function ob(a,b){var c=a.getElementsByTagName?a.getElementsByTagName(b||"*"):a.querySelectorAll?a.querySelectorAll(b||"*"):[];return void 0===b||b&&n.nodeName(a,b)?n.merge([a],c):c}function pb(a,b){var c=b.nodeName.toLowerCase();"input"===c&&T.test(a.type)?b.checked=a.checked:("input"===c||"textarea"===c)&&(b.defaultValue=a.defaultValue)}n.extend({clone:function(a,b,c){var d,e,f,g,h=a.cloneNode(!0),i=n.contains(a.ownerDocument,a);if(!(k.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||n.isXMLDoc(a)))for(g=ob(h),f=ob(a),d=0,e=f.length;e>d;d++)pb(f[d],g[d]);if(b)if(c)for(f=f||ob(a),g=g||ob(h),d=0,e=f.length;e>d;d++)nb(f[d],g[d]);else nb(a,h);return g=ob(h,"script"),g.length>0&&mb(g,!i&&ob(a,"script")),h},buildFragment:function(a,b,c,d){for(var e,f,g,h,i,j,k=b.createDocumentFragment(),l=[],m=0,o=a.length;o>m;m++)if(e=a[m],e||0===e)if("object"===n.type(e))n.merge(l,e.nodeType?[e]:e);else if(cb.test(e)){f=f||k.appendChild(b.createElement("div")),g=(bb.exec(e)||["",""])[1].toLowerCase(),h=ib[g]||ib._default,f.innerHTML=h[1]+e.replace(ab,"<$1>")+h[2],j=h[0];while(j--)f=f.lastChild;n.merge(l,f.childNodes),f=k.firstChild,f.textContent=""}else l.push(b.createTextNode(e));k.textContent="",m=0;while(e=l[m++])if((!d||-1===n.inArray(e,d))&&(i=n.contains(e.ownerDocument,e),f=ob(k.appendChild(e),"script"),i&&mb(f),c)){j=0;while(e=f[j++])fb.test(e.type||"")&&c.push(e)}return k},cleanData:function(a){for(var b,c,d,e,f=n.event.special,g=0;void 0!==(c=a[g]);g++){if(n.acceptData(c)&&(e=c[L.expando],e&&(b=L.cache[e]))){if(b.events)for(d in b.events)f[d]?n.event.remove(c,d):n.removeEvent(c,d,b.handle);L.cache[e]&&delete L.cache[e]}delete M.cache[c[M.expando]]}}}),n.fn.extend({text:function(a){return J(this,function(a){return void 0===a?n.text(this):this.empty().each(function(){(1===this.nodeType||11===this.nodeType||9===this.nodeType)&&(this.textContent=a)})},null,a,arguments.length)},append:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=jb(this,a);b.appendChild(a)}})},prepend:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=jb(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},remove:function(a,b){for(var c,d=a?n.filter(a,this):this,e=0;null!=(c=d[e]);e++)b||1!==c.nodeType||n.cleanData(ob(c)),c.parentNode&&(b&&n.contains(c.ownerDocument,c)&&mb(ob(c,"script")),c.parentNode.removeChild(c));return this},empty:function(){for(var a,b=0;null!=(a=this[b]);b++)1===a.nodeType&&(n.cleanData(ob(a,!1)),a.textContent="");return this},clone:function(a,b){return a=null==a?!1:a,b=null==b?a:b,this.map(function(){return n.clone(this,a,b)})},html:function(a){return J(this,function(a){var b=this[0]||{},c=0,d=this.length;if(void 0===a&&1===b.nodeType)return b.innerHTML;if("string"==typeof a&&!db.test(a)&&!ib[(bb.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(ab,"<$1>");try{for(;d>c;c++)b=this[c]||{},1===b.nodeType&&(n.cleanData(ob(b,!1)),b.innerHTML=a);b=0}catch(e){}}b&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(){var a=arguments[0];return this.domManip(arguments,function(b){a=this.parentNode,n.cleanData(ob(this)),a&&a.replaceChild(b,this)}),a&&(a.length||a.nodeType)?this:this.remove()},detach:function(a){return this.remove(a,!0)},domManip:function(a,b){a=e.apply([],a);var c,d,f,g,h,i,j=0,l=this.length,m=this,o=l-1,p=a[0],q=n.isFunction(p);if(q||l>1&&"string"==typeof p&&!k.checkClone&&eb.test(p))return this.each(function(c){var d=m.eq(c);q&&(a[0]=p.call(this,c,d.html())),d.domManip(a,b)});if(l&&(c=n.buildFragment(a,this[0].ownerDocument,!1,this),d=c.firstChild,1===c.childNodes.length&&(c=d),d)){for(f=n.map(ob(c,"script"),kb),g=f.length;l>j;j++)h=c,j!==o&&(h=n.clone(h,!0,!0),g&&n.merge(f,ob(h,"script"))),b.call(this[j],h,j);if(g)for(i=f[f.length-1].ownerDocument,n.map(f,lb),j=0;g>j;j++)h=f[j],fb.test(h.type||"")&&!L.access(h,"globalEval")&&n.contains(i,h)&&(h.src?n._evalUrl&&n._evalUrl(h.src):n.globalEval(h.textContent.replace(hb,"")))}return this}}),n.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){n.fn[a]=function(a){for(var c,d=[],e=n(a),g=e.length-1,h=0;g>=h;h++)c=h===g?this:this.clone(!0),n(e[h])[b](c),f.apply(d,c.get());return this.pushStack(d)}});var qb,rb={};function sb(b,c){var d,e=n(c.createElement(b)).appendTo(c.body),f=a.getDefaultComputedStyle&&(d=a.getDefaultComputedStyle(e[0]))?d.display:n.css(e[0],"display");return e.detach(),f}function tb(a){var b=l,c=rb[a];return c||(c=sb(a,b),"none"!==c&&c||(qb=(qb||n("
            "; - }, - //添加遮障层,修复iframe 鼠标经过事件bug - iframFix:function(obj){ - obj.each(function(){ - var o=$(this); - if(o.find('.zzDiv').size()<=0) - o.append($("
            ")); - }) - }, - //获取当前窗口最大的z-index值 - maxWinZindex:function($win){ - return Math.max.apply(null, $.map($win, function (e, n) { - if ($(e).css('position') == 'absolute') - return parseInt($(e).css('z-index')) || 1; - })); - }, - //获取当前最顶层窗口 - findTopWin:function($win,maxZ){ - var topWin; - $win.each(function(index){ - if($(this).css("z-index")==maxZ){ - topWin=$(this); - return false; - } - }); - return topWin; - }, - //关闭窗口 - closeWin:function(obj){ - var _this=this,$win=$('div.windows').not(".hideWin"),maxZ,topWin; - myLib.desktop.taskBar.delWinTab(obj); - obj.hide(200,function(){ - $(this).remove(); - }); - //当关闭窗口后寻找最大z-index的窗口并使其出入选择状态 - if($win.size()>1){ - maxZ=_this.maxWinZindex($win.not(obj)); - topWin=_this.findTopWin($win,maxZ); - _this.switchZindex(topWin); - } - }, - //最小化窗口 - minimize:function(obj){ - var _this=this,$win=$('div.windows').not(".hideWin"),maxZ,topWin,objTab; - //obj.hide(); - obj.css({"left":obj.position().left-10000,"visibility":"hidden"}).addClass("hideWin"); - - //最小化窗口后,寻找最大z-index窗口至顶 - if($win.size()>1){ - maxZ=_this.maxWinZindex($win.not(obj)); - topWin=_this.findTopWin($win,maxZ); - _this.switchZindex(topWin); - }else{ - objTab=myLib.desktop.taskBar.findWinTab(obj); - objTab.removeClass('selectTab').addClass('defaultTab'); - } - }, - //最大化窗口函数 - maximizeWin:function(obj){ - var myData=myLib.desktop.getMydata(), - panel=$("#desktopInnerPanel").offset(), - wh=myData.winWh;//获取当前document宽高 - obj - .css({'width':wh['w'],'height':wh['h'],'left':-panel.left,'top':-panel.top}) - .draggable( "disable" ) - .resizable( "disable" ) - .fadeTo("fast",1) - .find(".winframe") - .css({'width':wh['w'],'height':wh['h']-26}); - }, - //还原窗口函数 - hyimizeWin:function(obj){ - var myData=obj.data(), - winLocation=myData.winLocation;//获取窗口最大化前的位置大小 - - obj.css({'width':winLocation['w'],'height':winLocation['h'],'left':winLocation['left'],'top':winLocation['top']}) - .draggable( "enable" ) - .resizable( "enable" ) - .find(".winframe") - .css({'width':winLocation['w'],'height':winLocation['h']-26}); - }, - //交换窗口z-index值 - switchZindex:function(obj){ - var myData=myLib.desktop.getMydata() - ,$topWin=myData.topWin - ,$topWinTab=myData.topWinTab - ,curWinZindex=obj.css("z-index") - ,maxZ=myData.maxZindex - ,objTab=myLib.desktop.taskBar.findWinTab(obj); - - if(!$topWin.is(obj)){ - - obj.css("z-index",maxZ); - objTab.removeClass('defaultTab').addClass('selectTab'); - - $topWin.css("z-index",curWinZindex); - $topWinTab.removeClass('selectTab').addClass('defaultTab'); - this.iframFix($topWin); - //更新最顶层窗口对象 - $('body').data("topWin",obj).data("topWinTab",objTab); - } - }, - //新建一个窗口 - newWin:function(options){ - - var myData=myLib.desktop.getMydata(), - wh=myData.winWh,//获取当前document宽高 - $windows=$("div.windows"), - _this=this, - curwinNum=myLib._is(myData.winNum,"Number")?myData.winNum:0;//判断当前已有多少窗口 - _this.iframFix($windows); - - //默认参数配置 - var defaults = { - WindowTitle: null, - WindowsId: null, - WindowPositionTop: 'center', /* Posible are pixels or 'center' */ - WindowPositionLeft: 'center', /* Posible are pixels or 'center' */ - WindowWidth: Math.round(wh['w']*0.6), /* Only pixels */ - WindowHeight: Math.round(wh['h']*0.8), /* Only pixels */ - WindowMinWidth: 250, /* Only pixels */ - WindowMinHeight: 250, /* Only pixels */ - iframSrc: null, /* 框架的src路径*/ - WindowResizable: true, /* true, false*/ - WindowMaximize: true, /* true, false*/ - WindowMinimize: true, /* true, false*/ - WindowClosable: true, /* true, false*/ - WindowDraggable: true, /* true, false*/ - WindowStatus: 'regular', /* 'regular', 'maximized', 'minimized' */ - WindowAnimationSpeed: 500, - WindowAnimation: 'none' - }; - - var options = $.extend(defaults, options); - - //判断窗口位置,否则使用默认值 - var dxy=Math.floor((Math.random()*100))+30; - var panelLeft=$("#desktopInnerPanel").position(); - - var wLeft=myLib._is(options['WindowPositionLeft'],"Number")?options['WindowPositionLeft']+dxy-panelLeft.left:(wh['w']-options['WindowWidth'])/2+dxy-panelLeft.left; - var wTop=myLib._is(options['WindowPositionTop'],"Number")?options['WindowPositionTop']+dxy/2:(wh['h']-options['WindowHeight'])/2+dxy/2; - - //给窗口赋予新的z-index值 - var zindex=curwinNum+500; - var id="myWin_"+options['WindowsId'];//根据传来的id将作为新窗口id - $('body').data("winNum",curwinNum+1);//更新窗口数量 - - - //判断如果此id的窗口存在,则不创建窗口 - if($("#"+id).size()<=0){ - //在任务栏里添加tab - myLib.desktop.taskBar.addWinTab(options['WindowTitle'],options['WindowsId']); - //初始化新窗口并显示 - $(_this.winHtml(options['WindowTitle'],options['iframSrc'],id)).appendTo('#desktopInnerPanel'); - - var $newWin=$("#"+id) - ,$icon=$("#"+options['WindowsId']) - ,$iconOffset=$icon.offset() - ,$fram=$newWin.find(".winframe") - ,$winTitle=$newWin.find(".win_title") - ,winMaximize_btn=$newWin.find('a.winMaximize')//最大化按钮 - ,winMinimize_btn=$newWin.find('a.winMinimize')//最小化按钮 - ,winClose_btn=$newWin.find('a.winClose')//关闭按钮 - ,winHyimize_btn=$newWin.find('a.winHyimize');//还原按钮 - - winHyimize_btn.hide(); - if(!options['WindowMaximize']) winMaximize_btn.hide(); - if(!options['WindowMinimize']) winMinimize_btn.hide(); - if(!options['WindowClosable']) winClose_btn.hide(); - - //存储窗口最大的z-index值,及最顶层窗口对象 - $('body').data({"maxZindex":zindex,"topWin":$newWin}); - - //判断窗口是否启用动画效果 - if(options.WindowAnimation=='none'){ - - $newWin - .css({"width":options['WindowWidth'],"height":options['WindowHeight'],"left":wLeft,"top":wTop,"z-index":zindex}) - .addClass("loading") - .show(10,function(){ - $(this).find(".winframe").attr("src",options['iframSrc']).load(function(){ - $(this).show(); - }); - }); - - }else{ - - $newWin - .css({"left":$iconOffset.left,"top":$iconOffset.top,"z-index":zindex}) - .addClass("loading") - .show() - .animate({ - width: options['WindowWidth'], - height:options['WindowHeight'], - top: wTop, - left: wLeft}, 100,function(){ - $(this).find(".winframe").attr("src",options['iframSrc']).load(function(){ - $(this).show(); - }); - }); - } - - $newWin - //存储窗口当前位置大小 - .data('winLocation',{ - 'w':options['WindowWidth'], - 'h':options['WindowHeight'], - 'left':wLeft, - 'top':wTop - }) - //鼠标点击,切换窗口,使此窗口显示到最上面 - .bind({ - "mousedown":function(event){ - _this.switchZindex($(this)); - }, - "mouseup":function(){ - $(this).find('.zzDiv').remove(); - } - }) - .find(".winframe") - .css({"width":options['WindowWidth'],"height":options['WindowHeight']-26}); - - //调用窗口拖动,参数可拖动的范围上下左右,窗口id和,浏览器可视窗口大小 - if(options['WindowDraggable']){ - _this.drag([0,0,wh['w']-options['WindowWidth']-10,wh['h']-options['WindowHeight']-35],$newWin,wh); - } - //调用窗口resize,传递最大最小宽度和高度,新窗口对象id,浏览器可视窗口大小 - if(options['WindowResizable']){ - _this.resize(options['WindowMinWidth'],options['WindowMinHeight'],wh['w']-wLeft,wh['h']-wTop-35,$newWin,wh); - } - - //双击窗口标题栏 - $winTitle.dblclick(function(){ - var hasMaximizeBtn=$(this).find(winMaximize_btn); - - if(!hasMaximizeBtn.is(":hidden")){ - winMaximize_btn.trigger("click"); - }else{ - winHyimize_btn.trigger("click"); - } - - }); - - //窗口最大化,最小化,及关闭 - winClose_btn.click(function(event){ - event.stopPropagation(); - _this.closeWin($newWin); - }); - //最大化 - winMaximize_btn.click(function(event){ - event.stopPropagation(); - if(options['WindowStatus']=="regular"){ - _this.maximizeWin($newWin); - $(this).hide(); - winHyimize_btn.show(); - options['WindowStatus']="maximized"; - $("#desktopPanel").css("z-index",95); - } - }); - - //如果浏览器窗口大小改变,则更新窗口大小 - $(window).wresize(function(){ - if(options['WindowStatus']=="maximized"){ - _this.maximizeWin($newWin); - } - }); - //还原窗口 - winHyimize_btn.click(function(event){ - event.stopPropagation(); - if(options['WindowStatus']=="maximized"){ - _this.hyimizeWin($newWin); - $(this).hide(); - winMaximize_btn.show(); - options['WindowStatus']="regular"; - $("#desktopPanel").css("z-index",70); - } - }); - //最小化窗口 - winMinimize_btn.click(function(){ - _this.minimize($newWin); - }); - }else{ - - //如果已存在此窗口,判断是否隐藏 - var wins=$("#"+id),objTab=myLib.desktop.taskBar.findWinTab(wins); - if(wins.is(":hidden")){ - wins.show(); - objTab.removeClass('defaultTab').addClass('selectTab');//当只有一个窗口时 - myLib.desktop.win.switchZindex(wins); - }else{ - - } - } - }, - upWinResize_block:function(win){ - - //更新窗口可改变大小范围,wh为浏览器窗口大小 - var offset=win.offset(); - win.resizable( "option" ,{'maxWidth':$(window).width()-offset.left-10,'maxHeight':$(window).height()-offset.top-35}) - }, - drag:function(arr,$newWin,wh){ - var _this=this; - $newWin - .draggable({ - handle:'div.win_title', - iframeFix:false, - scroll: false - }) - .bind("dragstart",function(event,ui){ - _this.iframFix($(this)); - $("#desktopPanel").css("z-index",95); - }) - .bind( "dragstop", function(event, ui) { - $("#desktopPanel").css("z-index",70); - - var obj_this=$(this); - - var offset=obj_this.offset(); - //计算可拖曳范围 - _this.upWinResize_block(obj_this); - - obj_this - //更新窗口存储的位置属性 - .data('winLocation',{ - 'w':obj_this.width(), - 'h':obj_this.height(), - 'left':offset.left, - 'top':offset.top - }) - .find('.zzDiv') - .remove(); - - if(event.pageY>wh.h-50){ - $(this).css("top",event.pageY-90); - }else if(event.pageY<-35){ - $(this).css("top",-35); - } - }); - - $("div.win_title").css("cursor","move"); - - }, - resize:function(minW,minH,maxW,maxH,$newWin,wh){ - var _this=this; - $newWin - .resizable({ - minHeight:minH, - minWidth:minW, - containment:'document', - maxWidth:maxW, - maxHeight:maxH - }) - .css("position","absolute") - .bind( "resize", function(event, ui) { - var h=$(this).innerHeight(),w=$(this).innerWidth(); - _this.iframFix($(this)); - - //拖曳改变窗口大小,更新iframe宽度和高度,并显示iframe - $(this).children(".winframe").css({"width":w,"height":h-26}); - - }) - .bind( "resizestop", function(event, ui) { - var obj_this=$(this); - var offset=obj_this.offset(); - var h=obj_this.innerHeight(),w=obj_this.innerWidth(); - - obj_this - //更新窗口存储的位置属性 - .data('winLocation',{ - 'w':w, - 'h':h, - 'left':offset.left, - 'top':offset.top - }) - //删除遮障iframe的层 - .find(".zzDiv") - .remove(); - }); - } - } - -//侧边工具栏 -myLib.NS("desktop.lrBar"); -myLib.desktop.lrBar={ - upLrBar:function(){ - var myData=myLib.desktop.getMydata() - ,$lrBar=myData.panel.lrBar['_this'] - ,wh=myData.winWh; - $lrBar.css({'top':Math.floor((wh['h']-$lrBar.height())/2)-60}); - - }, - init:function(iconData){ - //读取元素对象数据 - var myData=myLib.desktop.getMydata() - ,$default_tools=myData.panel.lrBar['default_tools'] - ,$def_tools_Btn=$default_tools.find('span') - ,$start_btn=myData.panel.lrBar['start_btn'] - ,$start_block=myData.panel.lrBar.start_block - ,$start_item=myData.panel.lrBar['start_item'] - ,$default_app=myData.panel.lrBar['default_app'] - ,$lrBar=myData.panel.lrBar['_this'] - ,wh=myData.winWh - ,_this=this; - - //初始化侧栏位置 - _this.upLrBar(); - - //附加data数据 - myLib.desktop.iconDataInit(iconData); - - //如果窗口大小改变,则更新侧边栏位置 - $(window).wresize(function(){ - myLib.desktop.winWH();//更新窗口大小数据 - _this.upLrBar(); - }); - - //任务栏右边默认组件区域交互效果 - $def_tools_Btn.hover(function(){ - $(this).css("background-color","#999"); - },function(){ - $(this).css("background-color","transparent"); - }); - //默认应用程序区 - $default_app - .droppable({ - scope:'a', - drop: function(event,ui) { - var title=ui.draggable.find(".text").text(); - ui.draggable - .removeClass("desktop_icon") - .attr({"style":"", - "title":title - }) - .find("span") - .removeClass("icon") - .end() - .appendTo($default_app); - myLib.desktop.deskIcon.init(); - _this.init(); - } - }) - .find('li') - .hover(function(){ - $(this).addClass('btnOver'); - },function(){ - $(this).removeClass('btnOver'); - }) - .click(function(){ - - var data=$(this).data("iconData"),id=this.id; - myLib.desktop.win.newWin({ - WindowTitle:data.title, - iframSrc:data.url, - WindowsId:id, - WindowAnimation:'none', - WindowWidth:data.winWidth, - WindowHeight:data.winHeight - }); - - $(this).data("currPanel",$("ul.currDesktop").index("ul.deskIcon")); - - }) - .draggable({ - helper: "clone", - scroll:false, - opacity: 0.7, - scope:'a', - appendTo:'parent', - start:function(){ - $lrBar.css("z-index",90); - } - }) - .droppable({ - scope:'a', - drop: function(event,ui) { - - var title=ui.draggable.find(".text").text(); - ui.draggable - .removeClass("desktop_icon") - .attr({"style":"", - "title":title - }) - .find("span") - .removeClass("icon") - .end() - .insertBefore($(this)); - _this.init(); - myLib.desktop.deskIcon.init(); - } - }); - - //开始按钮、菜单交互效果 - $start_btn.click(function(event){ - event.preventDefault(); - event.stopPropagation() - if($start_item.is(":hidden")) - $start_item.show(); - else - $start_item.hide(); - }); - - $("body").click(function(event){ - event.preventDefault(); - $start_item.hide(); - }); - //全屏 - $("#showZm_btn") - .toggle(function(){ - myLib.fullscreenIE(); - myLib.fullscreen(); - }, - function(){ - myLib.fullscreenIE(); - myLib.exitFullscreen(); - }); - } - } -/*---------------------------------------------------------------------------------- -//声明任务栏空间,任务栏相关js操作 -----------------------------------------------------------------------------------*/ -myLib.NS("desktop.taskBar"); -myLib.desktop.taskBar={ - timer:function(obj){ - var curDaytime=new Date().toLocaleString().split(" "); - obj.innerHTML=curDaytime[1]; - obj.title=curDaytime[0]; - setInterval(function(){obj.innerHTML=new Date().toLocaleString().split(" ")[1];},1000); - }, - upTaskWidth:function(){ - var myData=myLib.desktop.getMydata() - ,$task_bar=myData.panel.taskBar['_this']; - var maxHdTabNum=Math.floor($(window).width()/100); - //计算任务栏宽度 - $task_bar.width(maxHdTabNum*100); - //存储活动任务栏tab默认组数 - $('body').data("maxHdTabNum",maxHdTabNum-2); - }, - init:function(){ - //读取元素对象数据 - var myData=myLib.desktop.getMydata(); - var $task_lb=myData.panel.taskBar['task_lb'] - ,$task_bar=myData.panel.taskBar['_this'] - ,wh=myData.winWh; - - var _this=this; - _this.upTaskWidth(); - //当改变浏览器窗口大小时,重新计算任务栏宽度 - $(window).wresize(function(){ - _this.upTaskWidth(); - }); - - }, - contextMenu:function(tab,id){ - var _this=this; - //初始化任务栏Tab右键菜单 - var data=[ - [{ - text:"最大化", - func:function(){ - $("#myWin_"+tab.data('win')).find('a.winMaximize').trigger('click'); - } - },{ - text:"最小化", - func:function(){ - myLib.desktop.win.minimize($("#myWin_"+tab.data('win'))); - } - }] - ,[{ - text:"关闭", - func:function(){ - $("#smartMenu_taskTab_menu"+id).remove(); - myLib.desktop.win.closeWin($("#myWin_"+tab.data('win'))); - } - }] - ]; - myLib.desktop.contextMenu(tab,data,"taskTab_menu"+id,10); - }, - addWinTab:function(text,id){ - var myData=myLib.desktop.getMydata(); - var $task_lb=myData.panel.taskBar['task_lb'] - ,$task_bar=myData.panel.taskBar['_this'] - ,$navBar=myData.panel.navBar - ,$navTab=$navBar.find("a") - ,tid="myWinTab_"+id - ,allTab=$task_lb.find('a') - ,curTabNum=allTab.size() - ,docHtml=""+text+""; - - //添加新的tab - $task_lb.append($(docHtml)); - var $newTab=$("#"+tid); - //右键菜单 - this.contextMenu($newTab,id); - - $task_lb - .find('a.selectTab') - .removeClass('selectTab') - .addClass('defaultTab'); - - $newTab - .data('win',id) - .addClass('selectTab') - .click(function(){ - var win=$("#myWin_"+$(this).data('win')), - tabId=this.id, - iconId=tabId.split("_")[1], - desk=$("#"+iconId).parent(), - i=desk.index("ul.deskIcon"); //判断窗口在那个桌面区域 - - if(i<0){ - i=$("#"+iconId).data("currPanel"); - } - //如果是当前桌面 - if(desk.is(".currDesktop")){ - if(win.is(".hideWin")){ - //win.show(); - win.css({"left":win.position().left+10000,"visibility":"visible"}).removeClass("hideWin"); - - $(this).removeClass('defaultTab').addClass('selectTab');//当只有一个窗口时 - myLib.desktop.win.switchZindex(win); - }else{ - if($(this).hasClass('selectTab')){ - myLib.desktop.win.minimize(win); - }else{ - myLib.desktop.win.switchZindex(win); - } - } - - //如果不在当前窗口 - }else{ - if(win.is(".hideWin")){ - //win.show(); - win.css({"left":win.position().left+10000,"visibility":"visible"}).removeClass("hideWin"); - - $(this).removeClass('defaultTab').addClass('selectTab');//当只有一个窗口时 - myLib.desktop.win.switchZindex(win); - } - $navTab.eq(i).trigger("click"); - } - - }); - - $('body').data("topWinTab",$newTab); - - //当任务栏活动窗口数超出时 - if(curTabNum>myData.maxHdTabNum-1){ - var LeftBtn=$('#leftBtn') - ,rightBtn=$('#rightBtn') - ,bH; - - LeftBtn - .show() - .find("a") - .click(function(){ - var pos=$task_lb.position(); - if(pos.top<0){ - $task_lb.animate({ - "top":pos.top+40 - }, 50); - } - }); - - rightBtn - .show() - .find("a") - .click(function(){ - var pos=$task_lb.position(),h=$task_lb.height(),row=h/40; - if(pos.top>(row-1)*(-40)){ - $task_lb.animate({ - "top": pos.top-40 - }, 50); - } - }); - - $task_lb.parent().css("margin","0 100"); - } - - }, - delWinTab:function(wObj){ - var myData=myLib.desktop.getMydata() - ,$task_lb=myData.panel.taskBar['task_lb'] - ,$task_bar=myData.panel.taskBar['_this'] - ,LeftBtn=$('#leftBtn') - ,rightBtn=$('#rightBtn') - ,pos=$task_lb.position(); - - this.findWinTab(wObj).remove(); - - var newH=$task_lb.height(); - if(Math.abs(pos.top)==newH){ - LeftBtn.find('a').trigger("click"); - } - if(newH==40){ - LeftBtn.hide(); - rightBtn.hide(); - $task_lb.parent().css("margin",0); - } - }, - findWinTab:function(wObj){ - var myData=myLib.desktop.getMydata(), - $task_lb=myData.panel.taskBar['task_lb'], - objTab; - $task_lb.find('a').each(function(index){ - var id="#myWin_"+$(this).data("win"); - if($(id).is(wObj)){ - objTab=$(this); - } - }); - return objTab; - } - } -//navbar -myLib.NS("desktop.navBar"); -myLib.desktop.navBar={ - init:function(){ - var myData=myLib.desktop.getMydata() - ,$navBar=myData.panel.navBar - ,$innerPanel=myData.panel.desktopPanel.innerPanel - ,$navTab=$navBar.find("a") - ,$deskIcon=myData.panel.desktopPanel['deskIcon'] - ,desktopWidth=$deskIcon.width() - ,lBarWidth=myData.panel.lrBar["_this"].outerWidth(); - - $navBar - .draggable({ - scroll:false - }); - - $navTab - .droppable({ - scope:'a', - over:function(event,ui){ - $(this).trigger("click"); - var i=$navTab.index($(this)); - //ui.draggable - //.css({left:event.pageX+$deskIcon.width()*i}); - }, - drop: function(event,ui) { - var i=$navTab.index($(this)); - ui.draggable - .addClass("desktop_icon") - .insertBefore($deskIcon.eq(i).find(".add_icon")) - .find("span") - .addClass("icon"); - myLib.desktop.deskIcon.init(); - myLib.desktop.lrBar.init(); - } - }) - .click(function(event){ - event.preventDefault(); - event.stopPropagation(); - var i=$navTab.index($(this)); - myLib.desktop.deskIcon.desktopMove($innerPanel,$deskIcon,$navTab,500,desktopWidth+lBarWidth,i); - }); - } - }; - -//桌面背景 -myLib.NS("desktop.wallpaper"); -myLib.desktop.wallpaper={ - init:function(imgUrl){ - - //将当前窗口宽度和高度数据存储在body元素上 - myLib.desktop.winWH(); - - var myData=myLib.desktop.getMydata() - ,winWh=myData.winWh - ,wallpaper=myData.panel.wallpaper - ,_this=this; - - if(imgUrl!==null){ - wallpaper.html(""); - var img=wallpaper.find("img"); - - myLib.getImgWh(imgUrl,function(imgW,imgH){ - if(imgW<=winWh.w){ - img.css('width',winWh.w); - }else{ - img.css({"margin-left":-(imgW-winWh.w)/2}); - } - if(imgH<=winWh.h){ - img.css('height',winWh.h); - }else{ - img.css({"margin-top":-(imgH-winWh.h)/2}); - } - }); - } - - //如果窗口大小改变,更新背景布局大小 - window.onresize=function(){ - _this.init(imgUrl); - }; - } - }; - -//桌面图标区域 -myLib.NS("desktop.deskIcon"); -myLib.desktop.deskIcon={ - //桌面图标排列 - arrangeIcons:function(desktop){ - var myData=myLib.desktop.getMydata() - ,winWh=myData.winWh - ,$navBar=myData.panel.navBar - ,navBarHeight=$navBar.outerHeight() - //计算一共有多少图标 - ,iconNum=desktop.find("li").size(); - - //存储当前总共有多少桌面图标 - desktop.data('deskIconNum',iconNum); - - var gH=120;//一个图标总高度,包括上下margin - var gW=120;//图标总宽度,包括左右margin - var rows=Math.floor((winWh['h']-navBarHeight-75)/gH); - var cols=Math.ceil(iconNum/rows); - var curcol=0,currow=0; - - desktop. - find("li") - .css({ - "position":"absolute", - "margin":0, - "left":function(index,value){ - var v=curcol*gW+30; - if((index+1)%rows==0){ - curcol=curcol+1; - } - return v; - }, - "top":function(index,value){ - var v=(index-rows*currow)*gH+20; - if((index+1)%rows==0){ - currow=currow+1; - } - return v; - }}); - }, - upDesktop:function($deskIcon,$deskIconBlock,$innerPanel,$deskIconNum,navBarHeight,lBarWidth){ - var myData=myLib.desktop.getMydata() - ,winWh=myData.winWh - ,w=winWh['w']-lBarWidth - ,h=(winWh['h']-75-navBarHeight) - ,_this=this; - - //设置桌面图标容器元素区域大小 - $innerPanel.css({"width":((w+lBarWidth)*$deskIconNum)+"px","height":h+"px"}); - $deskIcon.css({"width":w+"px","height":h+"px",'margin-right':lBarWidth}); - $deskIconBlock.css({"width":w+"px","height":h+"px","margin-top":navBarHeight,'margin-left':lBarWidth+'px','margin-bottom':75+"px"}); - - $deskIcon.each(function(){ - _this.arrangeIcons($(this)); - - $(this) - .droppable({ - scope:'a', - drop: function(event,ui) { - ui.draggable - .addClass("desktop_icon") - .insertBefore($(this).find(".add_icon")) - .find("span") - .addClass("icon"); - _this.init(); - myLib.desktop.lrBar.init(); - } - }); - }); - }, - desktopMove:function($innerPanel,$deskIcon,$navTab,dates,moveDx,nextIndex){ - $innerPanel - .stop() - .animate({ - left:-(nextIndex)*moveDx - },dates,function(){ - $deskIcon - .removeClass("currDesktop") - .eq(nextIndex) - .addClass("currDesktop"); - - $navTab - .removeClass("currTab") - .eq(nextIndex) - .addClass("currTab"); - }); - }, - init:function(iconData){ - - var myData=myLib.desktop.getMydata() - ,winWh=myData.winWh - ,$deskIconBlock=myData.panel.desktopPanel['_this'] - ,$innerPanel=myData.panel.desktopPanel.innerPanel - ,$deskIcon=myData.panel.desktopPanel['deskIcon'] - ,$deskIconNum=$deskIcon.size() - ,$navBar=myData.panel.navBar - ,navBarHeight=$navBar.outerHeight() - ,$navTab=$navBar.find("a") - ,lBarWidth=myData.panel.lrBar["_this"].outerWidth() - ,_this=this; - - _this.upDesktop($deskIcon,$deskIconBlock,$innerPanel,$deskIconNum,navBarHeight,lBarWidth); - - //如果窗口大小改变,则重新排列图标 - $(window).wresize(function(){ - myLib.desktop.winWH();//更新窗口大小数据 - _this.upDesktop($deskIcon,$deskIconBlock,$innerPanel,$deskIconNum,navBarHeight,lBarWidth); - }); - //附加data数据 - myLib.desktop.iconDataInit(iconData); - - //桌面可使用鼠标拖动切换 - var timeStart,timeEnd,dxStart,dxEnd; - - $innerPanel - .draggable({ - axis:'x', - start:function(event,ui){ - - $(this).css("cursor","move"); - timeStart=new Date().getTime(); - dxStart=event.pageX; - }, - stop:function(event,ui){ - $(this).css("cursor","inherit"); - timeEnd=new Date().getTime(); - dxEnd=event.pageX; - var timeCha=timeEnd-timeStart - ,dxCha=dxEnd-dxStart - ,currDesktop=$(this).find("ul.currDesktop") - ,deskIndex=$deskIcon.index(currDesktop) - ,moveDx=$deskIcon.width()+lBarWidth - ,dates=1000+timeCha; - - //左移 - if(dxCha < -150 && deskIndex<3){ - _this.desktopMove($(this),$deskIcon,$navTab,dates,moveDx,deskIndex+1); - //右移 - }else if(dxCha > 150 && deskIndex>0){ - _this.desktopMove($(this),$deskIcon,$navTab,dates,moveDx,deskIndex-1); - }else{ - $(this) - .animate({ - left:-(deskIndex)*moveDx - },500); - } - } - }); - - - //图标鼠标经过效果 - $deskIcon - .find("li") - .hover(function(){ - $(this).addClass("desktop_icon_over"); - }, - function(){ - $(this).removeClass("desktop_icon_over"); - }) - .not("li.add_icon") - //双击图标打开窗口 - .click(function(){ - var data=$(this).data("iconData"),id=this.id; - myLib.desktop.win.newWin({ - WindowTitle:data.title, - iframSrc:data.url, - WindowsId:id, - WindowAnimation:'none', - WindowWidth:data.winWidth, - WindowHeight:data.winHeight - }); - }) - .draggable({ - helper: "clone", - scroll:false, - opacity: 0.7, - scope:'a', - appendTo: 'body' , - zIndex:91, - start: function(event, ui) { - ui.helper.removeClass("desktop_icon_over"); - } - }) - .droppable({ - scope:'a', - drop: function(event,ui) { - ui.draggable - .unbind("dblclick") - .addClass("desktop_icon") - .insertBefore($(this)) - .find("span") - .addClass("icon"); - _this.init(); - myLib.desktop.lrBar.init(); - } - }); - - //初始化桌面右键菜单 - var data=[ - [{ - text:"显示桌面", - func:function(){} - }] - ,[{ - text:"系统设置", - func:function(){} - },{ - text:"主题设置", - func:function(){} - }] - ,[{ - text:"退出系统", - func:function(){} - }] - ,[{ - text:"关于fleiCms", - func:function(){} - }] - ]; - myLib.desktop.contextMenu($(document.body),data,"body",10); - } - } diff --git a/src/main/webapp/js/webqq/jquery-1.7.1.min.js b/src/main/webapp/js/webqq/jquery-1.7.1.min.js deleted file mode 100644 index 198b3ff0..00000000 --- a/src/main/webapp/js/webqq/jquery-1.7.1.min.js +++ /dev/null @@ -1,4 +0,0 @@ -/*! jQuery v1.7.1 jquery.com | jquery.org/license */ -(function(a,b){function cy(a){return f.isWindow(a)?a:a.nodeType===9?a.defaultView||a.parentWindow:!1}function cv(a){if(!ck[a]){var b=c.body,d=f("<"+a+">").appendTo(b),e=d.css("display");d.remove();if(e==="none"||e===""){cl||(cl=c.createElement("iframe"),cl.frameBorder=cl.width=cl.height=0),b.appendChild(cl);if(!cm||!cl.createElement)cm=(cl.contentWindow||cl.contentDocument).document,cm.write((c.compatMode==="CSS1Compat"?"":"")+""),cm.close();d=cm.createElement(a),cm.body.appendChild(d),e=f.css(d,"display"),b.removeChild(cl)}ck[a]=e}return ck[a]}function cu(a,b){var c={};f.each(cq.concat.apply([],cq.slice(0,b)),function(){c[this]=a});return c}function ct(){cr=b}function cs(){setTimeout(ct,0);return cr=f.now()}function cj(){try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}}function ci(){try{return new a.XMLHttpRequest}catch(b){}}function cc(a,c){a.dataFilter&&(c=a.dataFilter(c,a.dataType));var d=a.dataTypes,e={},g,h,i=d.length,j,k=d[0],l,m,n,o,p;for(g=1;g0){if(c!=="border")for(;g=0===c})}function S(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function K(){return!0}function J(){return!1}function n(a,b,c){var d=b+"defer",e=b+"queue",g=b+"mark",h=f._data(a,d);h&&(c==="queue"||!f._data(a,e))&&(c==="mark"||!f._data(a,g))&&setTimeout(function(){!f._data(a,e)&&!f._data(a,g)&&(f.removeData(a,d,!0),h.fire())},0)}function m(a){for(var b in a){if(b==="data"&&f.isEmptyObject(a[b]))continue;if(b!=="toJSON")return!1}return!0}function l(a,c,d){if(d===b&&a.nodeType===1){var e="data-"+c.replace(k,"-$1").toLowerCase();d=a.getAttribute(e);if(typeof d=="string"){try{d=d==="true"?!0:d==="false"?!1:d==="null"?null:f.isNumeric(d)?parseFloat(d):j.test(d)?f.parseJSON(d):d}catch(g){}f.data(a,c,d)}else d=b}return d}function h(a){var b=g[a]={},c,d;a=a.split(/\s+/);for(c=0,d=a.length;c)[^>]*$|#([\w\-]*)$)/,j=/\S/,k=/^\s+/,l=/\s+$/,m=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,n=/^[\],:{}\s]*$/,o=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,p=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,q=/(?:^|:|,)(?:\s*\[)+/g,r=/(webkit)[ \/]([\w.]+)/,s=/(opera)(?:.*version)?[ \/]([\w.]+)/,t=/(msie) ([\w.]+)/,u=/(mozilla)(?:.*? rv:([\w.]+))?/,v=/-([a-z]|[0-9])/ig,w=/^-ms-/,x=function(a,b){return(b+"").toUpperCase()},y=d.userAgent,z,A,B,C=Object.prototype.toString,D=Object.prototype.hasOwnProperty,E=Array.prototype.push,F=Array.prototype.slice,G=String.prototype.trim,H=Array.prototype.indexOf,I={};e.fn=e.prototype={constructor:e,init:function(a,d,f){var g,h,j,k;if(!a)return this;if(a.nodeType){this.context=this[0]=a,this.length=1;return this}if(a==="body"&&!d&&c.body){this.context=c,this[0]=c.body,this.selector=a,this.length=1;return this}if(typeof a=="string"){a.charAt(0)!=="<"||a.charAt(a.length-1)!==">"||a.length<3?g=i.exec(a):g=[null,a,null];if(g&&(g[1]||!d)){if(g[1]){d=d instanceof e?d[0]:d,k=d?d.ownerDocument||d:c,j=m.exec(a),j?e.isPlainObject(d)?(a=[c.createElement(j[1])],e.fn.attr.call(a,d,!0)):a=[k.createElement(j[1])]:(j=e.buildFragment([g[1]],[k]),a=(j.cacheable?e.clone(j.fragment):j.fragment).childNodes);return e.merge(this,a)}h=c.getElementById(g[2]);if(h&&h.parentNode){if(h.id!==g[2])return f.find(a);this.length=1,this[0]=h}this.context=c,this.selector=a;return this}return!d||d.jquery?(d||f).find(a):this.constructor(d).find(a)}if(e.isFunction(a))return f.ready(a);a.selector!==b&&(this.selector=a.selector,this.context=a.context);return e.makeArray(a,this)},selector:"",jquery:"1.7.1",length:0,size:function(){return this.length},toArray:function(){return F.call(this,0)},get:function(a){return a==null?this.toArray():a<0?this[this.length+a]:this[a]},pushStack:function(a,b,c){var d=this.constructor();e.isArray(a)?E.apply(d,a):e.merge(d,a),d.prevObject=this,d.context=this.context,b==="find"?d.selector=this.selector+(this.selector?" ":"")+c:b&&(d.selector=this.selector+"."+b+"("+c+")");return d},each:function(a,b){return e.each(this,a,b)},ready:function(a){e.bindReady(),A.add(a);return this},eq:function(a){a=+a;return a===-1?this.slice(a):this.slice(a,a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(F.apply(this,arguments),"slice",F.call(arguments).join(","))},map:function(a){return this.pushStack(e.map(this,function(b,c){return a.call(b,c,b)}))},end:function(){return this.prevObject||this.constructor(null)},push:E,sort:[].sort,splice:[].splice},e.fn.init.prototype=e.fn,e.extend=e.fn.extend=function(){var a,c,d,f,g,h,i=arguments[0]||{},j=1,k=arguments.length,l=!1;typeof i=="boolean"&&(l=i,i=arguments[1]||{},j=2),typeof i!="object"&&!e.isFunction(i)&&(i={}),k===j&&(i=this,--j);for(;j0)return;A.fireWith(c,[e]),e.fn.trigger&&e(c).trigger("ready").off("ready")}},bindReady:function(){if(!A){A=e.Callbacks("once memory");if(c.readyState==="complete")return setTimeout(e.ready,1);if(c.addEventListener)c.addEventListener("DOMContentLoaded",B,!1),a.addEventListener("load",e.ready,!1);else if(c.attachEvent){c.attachEvent("onreadystatechange",B),a.attachEvent("onload",e.ready);var b=!1;try{b=a.frameElement==null}catch(d){}c.documentElement.doScroll&&b&&J()}}},isFunction:function(a){return e.type(a)==="function"},isArray:Array.isArray||function(a){return e.type(a)==="array"},isWindow:function(a){return a&&typeof a=="object"&&"setInterval"in a},isNumeric:function(a){return!isNaN(parseFloat(a))&&isFinite(a)},type:function(a){return a==null?String(a):I[C.call(a)]||"object"},isPlainObject:function(a){if(!a||e.type(a)!=="object"||a.nodeType||e.isWindow(a))return!1;try{if(a.constructor&&!D.call(a,"constructor")&&!D.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}var d;for(d in a);return d===b||D.call(a,d)},isEmptyObject:function(a){for(var b in a)return!1;return!0},error:function(a){throw new Error(a)},parseJSON:function(b){if(typeof b!="string"||!b)return null;b=e.trim(b);if(a.JSON&&a.JSON.parse)return a.JSON.parse(b);if(n.test(b.replace(o,"@").replace(p,"]").replace(q,"")))return(new Function("return "+b))();e.error("Invalid JSON: "+b)},parseXML:function(c){var d,f;try{a.DOMParser?(f=new DOMParser,d=f.parseFromString(c,"text/xml")):(d=new ActiveXObject("Microsoft.XMLDOM"),d.async="false",d.loadXML(c))}catch(g){d=b}(!d||!d.documentElement||d.getElementsByTagName("parsererror").length)&&e.error("Invalid XML: "+c);return d},noop:function(){},globalEval:function(b){b&&j.test(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(w,"ms-").replace(v,x)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,c,d){var f,g=0,h=a.length,i=h===b||e.isFunction(a);if(d){if(i){for(f in a)if(c.apply(a[f],d)===!1)break}else for(;g0&&a[0]&&a[j-1]||j===0||e.isArray(a));if(k)for(;i1?i.call(arguments,0):b,j.notifyWith(k,e)}}function l(a){return function(c){b[a]=arguments.length>1?i.call(arguments,0):c,--g||j.resolveWith(j,b)}}var b=i.call(arguments,0),c=0,d=b.length,e=Array(d),g=d,h=d,j=d<=1&&a&&f.isFunction(a.promise)?a:f.Deferred(),k=j.promise();if(d>1){for(;c
            a",d=q.getElementsByTagName("*"),e=q.getElementsByTagName("a")[0];if(!d||!d.length||!e)return{};g=c.createElement("select"),h=g.appendChild(c.createElement("option")),i=q.getElementsByTagName("input")[0],b={leadingWhitespace:q.firstChild.nodeType===3,tbody:!q.getElementsByTagName("tbody").length,htmlSerialize:!!q.getElementsByTagName("link").length,style:/top/.test(e.getAttribute("style")),hrefNormalized:e.getAttribute("href")==="/a",opacity:/^0.55/.test(e.style.opacity),cssFloat:!!e.style.cssFloat,checkOn:i.value==="on",optSelected:h.selected,getSetAttribute:q.className!=="t",enctype:!!c.createElement("form").enctype,html5Clone:c.createElement("nav").cloneNode(!0).outerHTML!=="<:nav>",submitBubbles:!0,changeBubbles:!0,focusinBubbles:!1,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0},i.checked=!0,b.noCloneChecked=i.cloneNode(!0).checked,g.disabled=!0,b.optDisabled=!h.disabled;try{delete q.test}catch(s){b.deleteExpando=!1}!q.addEventListener&&q.attachEvent&&q.fireEvent&&(q.attachEvent("onclick",function(){b.noCloneEvent=!1}),q.cloneNode(!0).fireEvent("onclick")),i=c.createElement("input"),i.value="t",i.setAttribute("type","radio"),b.radioValue=i.value==="t",i.setAttribute("checked","checked"),q.appendChild(i),k=c.createDocumentFragment(),k.appendChild(q.lastChild),b.checkClone=k.cloneNode(!0).cloneNode(!0).lastChild.checked,b.appendChecked=i.checked,k.removeChild(i),k.appendChild(q),q.innerHTML="",a.getComputedStyle&&(j=c.createElement("div"),j.style.width="0",j.style.marginRight="0",q.style.width="2px",q.appendChild(j),b.reliableMarginRight=(parseInt((a.getComputedStyle(j,null)||{marginRight:0}).marginRight,10)||0)===0);if(q.attachEvent)for(o in{submit:1,change:1,focusin:1})n="on"+o,p=n in q,p||(q.setAttribute(n,"return;"),p=typeof q[n]=="function"),b[o+"Bubbles"]=p;k.removeChild(q),k=g=h=j=q=i=null,f(function(){var a,d,e,g,h,i,j,k,m,n,o,r=c.getElementsByTagName("body")[0];!r||(j=1,k="position:absolute;top:0;left:0;width:1px;height:1px;margin:0;",m="visibility:hidden;border:0;",n="style='"+k+"border:5px solid #000;padding:0;'",o="
            "+""+"
            ",a=c.createElement("div"),a.style.cssText=m+"width:0;height:0;position:static;top:0;margin-top:"+j+"px",r.insertBefore(a,r.firstChild),q=c.createElement("div"),a.appendChild(q),q.innerHTML="
            t
            ",l=q.getElementsByTagName("td"),p=l[0].offsetHeight===0,l[0].style.display="",l[1].style.display="none",b.reliableHiddenOffsets=p&&l[0].offsetHeight===0,q.innerHTML="",q.style.width=q.style.paddingLeft="1px",f.boxModel=b.boxModel=q.offsetWidth===2,typeof q.style.zoom!="undefined"&&(q.style.display="inline",q.style.zoom=1,b.inlineBlockNeedsLayout=q.offsetWidth===2,q.style.display="",q.innerHTML="
            ",b.shrinkWrapBlocks=q.offsetWidth!==2),q.style.cssText=k+m,q.innerHTML=o,d=q.firstChild,e=d.firstChild,h=d.nextSibling.firstChild.firstChild,i={doesNotAddBorder:e.offsetTop!==5,doesAddBorderForTableAndCells:h.offsetTop===5},e.style.position="fixed",e.style.top="20px",i.fixedPosition=e.offsetTop===20||e.offsetTop===15,e.style.position=e.style.top="",d.style.overflow="hidden",d.style.position="relative",i.subtractsBorderForOverflowNotVisible=e.offsetTop===-5,i.doesNotIncludeMarginInBodyOffset=r.offsetTop!==j,r.removeChild(a),q=a=null,f.extend(b,i))});return b}();var j=/^(?:\{.*\}|\[.*\])$/,k=/([A-Z])/g;f.extend({cache:{},uuid:0,expando:"jQuery"+(f.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(a){a=a.nodeType?f.cache[a[f.expando]]:a[f.expando];return!!a&&!m(a)},data:function(a,c,d,e){if(!!f.acceptData(a)){var g,h,i,j=f.expando,k=typeof c=="string",l=a.nodeType,m=l?f.cache:a,n=l?a[j]:a[j]&&j,o=c==="events";if((!n||!m[n]||!o&&!e&&!m[n].data)&&k&&d===b)return;n||(l?a[j]=n=++f.uuid:n=j),m[n]||(m[n]={},l||(m[n].toJSON=f.noop));if(typeof c=="object"||typeof c=="function")e?m[n]=f.extend(m[n],c):m[n].data=f.extend(m[n].data,c);g=h=m[n],e||(h.data||(h.data={}),h=h.data),d!==b&&(h[f.camelCase(c)]=d);if(o&&!h[c])return g.events;k?(i=h[c],i==null&&(i=h[f.camelCase(c)])):i=h;return i}},removeData:function(a,b,c){if(!!f.acceptData(a)){var d,e,g,h=f.expando,i=a.nodeType,j=i?f.cache:a,k=i?a[h]:h;if(!j[k])return;if(b){d=c?j[k]:j[k].data;if(d){f.isArray(b)||(b in d?b=[b]:(b=f.camelCase(b),b in d?b=[b]:b=b.split(" ")));for(e=0,g=b.length;e-1)return!0;return!1},val:function(a){var c,d,e,g=this[0];{if(!!arguments.length){e=f.isFunction(a);return this.each(function(d){var g=f(this),h;if(this.nodeType===1){e?h=a.call(this,d,g.val()):h=a,h==null?h="":typeof h=="number"?h+="":f.isArray(h)&&(h=f.map(h,function(a){return a==null?"":a+""})),c=f.valHooks[this.nodeName.toLowerCase()]||f.valHooks[this.type];if(!c||!("set"in c)||c.set(this,h,"value")===b)this.value=h}})}if(g){c=f.valHooks[g.nodeName.toLowerCase()]||f.valHooks[g.type];if(c&&"get"in c&&(d=c.get(g,"value"))!==b)return d;d=g.value;return typeof d=="string"?d.replace(q,""):d==null?"":d}}}}),f.extend({valHooks:{option:{get:function(a){var b=a.attributes.value;return!b||b.specified?a.value:a.text}},select:{get:function(a){var b,c,d,e,g=a.selectedIndex,h=[],i=a.options,j=a.type==="select-one";if(g<0)return null;c=j?g:0,d=j?g+1:i.length;for(;c=0}),c.length||(a.selectedIndex=-1);return c}}},attrFn:{val:!0,css:!0,html:!0,text:!0,data:!0,width:!0,height:!0,offset:!0},attr:function(a,c,d,e){var g,h,i,j=a.nodeType;if(!!a&&j!==3&&j!==8&&j!==2){if(e&&c in f.attrFn)return f(a)[c](d);if(typeof a.getAttribute=="undefined")return f.prop(a,c,d);i=j!==1||!f.isXMLDoc(a),i&&(c=c.toLowerCase(),h=f.attrHooks[c]||(u.test(c)?x:w));if(d!==b){if(d===null){f.removeAttr(a,c);return}if(h&&"set"in h&&i&&(g=h.set(a,d,c))!==b)return g;a.setAttribute(c,""+d);return d}if(h&&"get"in h&&i&&(g=h.get(a,c))!==null)return g;g=a.getAttribute(c);return g===null?b:g}},removeAttr:function(a,b){var c,d,e,g,h=0;if(b&&a.nodeType===1){d=b.toLowerCase().split(p),g=d.length;for(;h=0}})});var z=/^(?:textarea|input|select)$/i,A=/^([^\.]*)?(?:\.(.+))?$/,B=/\bhover(\.\S+)?\b/,C=/^key/,D=/^(?:mouse|contextmenu)|click/,E=/^(?:focusinfocus|focusoutblur)$/,F=/^(\w*)(?:#([\w\-]+))?(?:\.([\w\-]+))?$/,G=function(a){var b=F.exec(a);b&&(b[1]=(b[1]||"").toLowerCase(),b[3]=b[3]&&new RegExp("(?:^|\\s)"+b[3]+"(?:\\s|$)"));return b},H=function(a,b){var c=a.attributes||{};return(!b[1]||a.nodeName.toLowerCase()===b[1])&&(!b[2]||(c.id||{}).value===b[2])&&(!b[3]||b[3].test((c["class"]||{}).value))},I=function(a){return f.event.special.hover?a:a.replace(B,"mouseenter$1 mouseleave$1")}; -f.event={add:function(a,c,d,e,g){var h,i,j,k,l,m,n,o,p,q,r,s;if(!(a.nodeType===3||a.nodeType===8||!c||!d||!(h=f._data(a)))){d.handler&&(p=d,d=p.handler),d.guid||(d.guid=f.guid++),j=h.events,j||(h.events=j={}),i=h.handle,i||(h.handle=i=function(a){return typeof f!="undefined"&&(!a||f.event.triggered!==a.type)?f.event.dispatch.apply(i.elem,arguments):b},i.elem=a),c=f.trim(I(c)).split(" ");for(k=0;k=0&&(h=h.slice(0,-1),k=!0),h.indexOf(".")>=0&&(i=h.split("."),h=i.shift(),i.sort());if((!e||f.event.customEvent[h])&&!f.event.global[h])return;c=typeof c=="object"?c[f.expando]?c:new f.Event(h,c):new f.Event(h),c.type=h,c.isTrigger=!0,c.exclusive=k,c.namespace=i.join("."),c.namespace_re=c.namespace?new RegExp("(^|\\.)"+i.join("\\.(?:.*\\.)?")+"(\\.|$)"):null,o=h.indexOf(":")<0?"on"+h:"";if(!e){j=f.cache;for(l in j)j[l].events&&j[l].events[h]&&f.event.trigger(c,d,j[l].handle.elem,!0);return}c.result=b,c.target||(c.target=e),d=d!=null?f.makeArray(d):[],d.unshift(c),p=f.event.special[h]||{};if(p.trigger&&p.trigger.apply(e,d)===!1)return;r=[[e,p.bindType||h]];if(!g&&!p.noBubble&&!f.isWindow(e)){s=p.delegateType||h,m=E.test(s+h)?e:e.parentNode,n=null;for(;m;m=m.parentNode)r.push([m,s]),n=m;n&&n===e.ownerDocument&&r.push([n.defaultView||n.parentWindow||a,s])}for(l=0;le&&i.push({elem:this,matches:d.slice(e)});for(j=0;j0?this.on(b,null,a,c):this.trigger(b)},f.attrFn&&(f.attrFn[b]=!0),C.test(b)&&(f.event.fixHooks[b]=f.event.keyHooks),D.test(b)&&(f.event.fixHooks[b]=f.event.mouseHooks)}),function(){function x(a,b,c,e,f,g){for(var h=0,i=e.length;h0){k=j;break}}j=j[a]}e[h]=k}}}function w(a,b,c,e,f,g){for(var h=0,i=e.length;h+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,d="sizcache"+(Math.random()+"").replace(".",""),e=0,g=Object.prototype.toString,h=!1,i=!0,j=/\\/g,k=/\r\n/g,l=/\W/;[0,0].sort(function(){i=!1;return 0});var m=function(b,d,e,f){e=e||[],d=d||c;var h=d;if(d.nodeType!==1&&d.nodeType!==9)return[];if(!b||typeof b!="string")return e;var i,j,k,l,n,q,r,t,u=!0,v=m.isXML(d),w=[],x=b;do{a.exec(""),i=a.exec(x);if(i){x=i[3],w.push(i[1]);if(i[2]){l=i[3];break}}}while(i);if(w.length>1&&p.exec(b))if(w.length===2&&o.relative[w[0]])j=y(w[0]+w[1],d,f);else{j=o.relative[w[0]]?[d]:m(w.shift(),d);while(w.length)b=w.shift(),o.relative[b]&&(b+=w.shift()),j=y(b,j,f)}else{!f&&w.length>1&&d.nodeType===9&&!v&&o.match.ID.test(w[0])&&!o.match.ID.test(w[w.length-1])&&(n=m.find(w.shift(),d,v),d=n.expr?m.filter(n.expr,n.set)[0]:n.set[0]);if(d){n=f?{expr:w.pop(),set:s(f)}:m.find(w.pop(),w.length===1&&(w[0]==="~"||w[0]==="+")&&d.parentNode?d.parentNode:d,v),j=n.expr?m.filter(n.expr,n.set):n.set,w.length>0?k=s(j):u=!1;while(w.length)q=w.pop(),r=q,o.relative[q]?r=w.pop():q="",r==null&&(r=d),o.relative[q](k,r,v)}else k=w=[]}k||(k=j),k||m.error(q||b);if(g.call(k)==="[object Array]")if(!u)e.push.apply(e,k);else if(d&&d.nodeType===1)for(t=0;k[t]!=null;t++)k[t]&&(k[t]===!0||k[t].nodeType===1&&m.contains(d,k[t]))&&e.push(j[t]);else for(t=0;k[t]!=null;t++)k[t]&&k[t].nodeType===1&&e.push(j[t]);else s(k,e);l&&(m(l,h,e,f),m.uniqueSort(e));return e};m.uniqueSort=function(a){if(u){h=i,a.sort(u);if(h)for(var b=1;b0},m.find=function(a,b,c){var d,e,f,g,h,i;if(!a)return[];for(e=0,f=o.order.length;e":function(a,b){var c,d=typeof b=="string",e=0,f=a.length;if(d&&!l.test(b)){b=b.toLowerCase();for(;e=0)?c||d.push(h):c&&(b[g]=!1));return!1},ID:function(a){return a[1].replace(j,"")},TAG:function(a,b){return a[1].replace(j,"").toLowerCase()},CHILD:function(a){if(a[1]==="nth"){a[2]||m.error(a[0]),a[2]=a[2].replace(/^\+|\s*/g,"");var b=/(-?)(\d*)(?:n([+\-]?\d*))?/.exec(a[2]==="even"&&"2n"||a[2]==="odd"&&"2n+1"||!/\D/.test(a[2])&&"0n+"+a[2]||a[2]);a[2]=b[1]+(b[2]||1)-0,a[3]=b[3]-0}else a[2]&&m.error(a[0]);a[0]=e++;return a},ATTR:function(a,b,c,d,e,f){var g=a[1]=a[1].replace(j,"");!f&&o.attrMap[g]&&(a[1]=o.attrMap[g]),a[4]=(a[4]||a[5]||"").replace(j,""),a[2]==="~="&&(a[4]=" "+a[4]+" ");return a},PSEUDO:function(b,c,d,e,f){if(b[1]==="not")if((a.exec(b[3])||"").length>1||/^\w/.test(b[3]))b[3]=m(b[3],null,null,c);else{var g=m.filter(b[3],c,d,!0^f);d||e.push.apply(e,g);return!1}else if(o.match.POS.test(b[0])||o.match.CHILD.test(b[0]))return!0;return b},POS:function(a){a.unshift(!0);return a}},filters:{enabled:function(a){return a.disabled===!1&&a.type!=="hidden"},disabled:function(a){return a.disabled===!0},checked:function(a){return a.checked===!0},selected:function(a){a.parentNode&&a.parentNode.selectedIndex;return a.selected===!0},parent:function(a){return!!a.firstChild},empty:function(a){return!a.firstChild},has:function(a,b,c){return!!m(c[3],a).length},header:function(a){return/h\d/i.test(a.nodeName)},text:function(a){var b=a.getAttribute("type"),c=a.type;return a.nodeName.toLowerCase()==="input"&&"text"===c&&(b===c||b===null)},radio:function(a){return a.nodeName.toLowerCase()==="input"&&"radio"===a.type},checkbox:function(a){return a.nodeName.toLowerCase()==="input"&&"checkbox"===a.type},file:function(a){return a.nodeName.toLowerCase()==="input"&&"file"===a.type},password:function(a){return a.nodeName.toLowerCase()==="input"&&"password"===a.type},submit:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"submit"===a.type},image:function(a){return a.nodeName.toLowerCase()==="input"&&"image"===a.type},reset:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"reset"===a.type},button:function(a){var b=a.nodeName.toLowerCase();return b==="input"&&"button"===a.type||b==="button"},input:function(a){return/input|select|textarea|button/i.test(a.nodeName)},focus:function(a){return a===a.ownerDocument.activeElement}},setFilters:{first:function(a,b){return b===0},last:function(a,b,c,d){return b===d.length-1},even:function(a,b){return b%2===0},odd:function(a,b){return b%2===1},lt:function(a,b,c){return bc[3]-0},nth:function(a,b,c){return c[3]-0===b},eq:function(a,b,c){return c[3]-0===b}},filter:{PSEUDO:function(a,b,c,d){var e=b[1],f=o.filters[e];if(f)return f(a,c,b,d);if(e==="contains")return(a.textContent||a.innerText||n([a])||"").indexOf(b[3])>=0;if(e==="not"){var g=b[3];for(var h=0,i=g.length;h=0}},ID:function(a,b){return a.nodeType===1&&a.getAttribute("id")===b},TAG:function(a,b){return b==="*"&&a.nodeType===1||!!a.nodeName&&a.nodeName.toLowerCase()===b},CLASS:function(a,b){return(" "+(a.className||a.getAttribute("class"))+" ").indexOf(b)>-1},ATTR:function(a,b){var c=b[1],d=m.attr?m.attr(a,c):o.attrHandle[c]?o.attrHandle[c](a):a[c]!=null?a[c]:a.getAttribute(c),e=d+"",f=b[2],g=b[4];return d==null?f==="!=":!f&&m.attr?d!=null:f==="="?e===g:f==="*="?e.indexOf(g)>=0:f==="~="?(" "+e+" ").indexOf(g)>=0:g?f==="!="?e!==g:f==="^="?e.indexOf(g)===0:f==="$="?e.substr(e.length-g.length)===g:f==="|="?e===g||e.substr(0,g.length+1)===g+"-":!1:e&&d!==!1},POS:function(a,b,c,d){var e=b[2],f=o.setFilters[e];if(f)return f(a,c,b,d)}}},p=o.match.POS,q=function(a,b){return"\\"+(b-0+1)};for(var r in o.match)o.match[r]=new RegExp(o.match[r].source+/(?![^\[]*\])(?![^\(]*\))/.source),o.leftMatch[r]=new RegExp(/(^(?:.|\r|\n)*?)/.source+o.match[r].source.replace(/\\(\d+)/g,q));var s=function(a,b){a=Array.prototype.slice.call(a,0);if(b){b.push.apply(b,a);return b}return a};try{Array.prototype.slice.call(c.documentElement.childNodes,0)[0].nodeType}catch(t){s=function(a,b){var c=0,d=b||[];if(g.call(a)==="[object Array]")Array.prototype.push.apply(d,a);else if(typeof a.length=="number")for(var e=a.length;c",e.insertBefore(a,e.firstChild),c.getElementById(d)&&(o.find.ID=function(a,c,d){if(typeof c.getElementById!="undefined"&&!d){var e=c.getElementById(a[1]);return e?e.id===a[1]||typeof e.getAttributeNode!="undefined"&&e.getAttributeNode("id").nodeValue===a[1]?[e]:b:[]}},o.filter.ID=function(a,b){var c=typeof a.getAttributeNode!="undefined"&&a.getAttributeNode("id");return a.nodeType===1&&c&&c.nodeValue===b}),e.removeChild(a),e=a=null}(),function(){var a=c.createElement("div");a.appendChild(c.createComment("")),a.getElementsByTagName("*").length>0&&(o.find.TAG=function(a,b){var c=b.getElementsByTagName(a[1]);if(a[1]==="*"){var d=[];for(var e=0;c[e];e++)c[e].nodeType===1&&d.push(c[e]);c=d}return c}),a.innerHTML="",a.firstChild&&typeof a.firstChild.getAttribute!="undefined"&&a.firstChild.getAttribute("href")!=="#"&&(o.attrHandle.href=function(a){return a.getAttribute("href",2)}),a=null}(),c.querySelectorAll&&function(){var a=m,b=c.createElement("div"),d="__sizzle__";b.innerHTML="

            ";if(!b.querySelectorAll||b.querySelectorAll(".TEST").length!==0){m=function(b,e,f,g){e=e||c;if(!g&&!m.isXML(e)){var h=/^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(b);if(h&&(e.nodeType===1||e.nodeType===9)){if(h[1])return s(e.getElementsByTagName(b),f);if(h[2]&&o.find.CLASS&&e.getElementsByClassName)return s(e.getElementsByClassName(h[2]),f)}if(e.nodeType===9){if(b==="body"&&e.body)return s([e.body],f);if(h&&h[3]){var i=e.getElementById(h[3]);if(!i||!i.parentNode)return s([],f);if(i.id===h[3])return s([i],f)}try{return s(e.querySelectorAll(b),f)}catch(j){}}else if(e.nodeType===1&&e.nodeName.toLowerCase()!=="object"){var k=e,l=e.getAttribute("id"),n=l||d,p=e.parentNode,q=/^\s*[+~]/.test(b);l?n=n.replace(/'/g,"\\$&"):e.setAttribute("id",n),q&&p&&(e=e.parentNode);try{if(!q||p)return s(e.querySelectorAll("[id='"+n+"'] "+b),f)}catch(r){}finally{l||k.removeAttribute("id")}}}return a(b,e,f,g)};for(var e in a)m[e]=a[e];b=null}}(),function(){var a=c.documentElement,b=a.matchesSelector||a.mozMatchesSelector||a.webkitMatchesSelector||a.msMatchesSelector;if(b){var d=!b.call(c.createElement("div"),"div"),e=!1;try{b.call(c.documentElement,"[test!='']:sizzle")}catch(f){e=!0}m.matchesSelector=function(a,c){c=c.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!m.isXML(a))try{if(e||!o.match.PSEUDO.test(c)&&!/!=/.test(c)){var f=b.call(a,c);if(f||!d||a.document&&a.document.nodeType!==11)return f}}catch(g){}return m(c,null,null,[a]).length>0}}}(),function(){var a=c.createElement("div");a.innerHTML="
            ";if(!!a.getElementsByClassName&&a.getElementsByClassName("e").length!==0){a.lastChild.className="e";if(a.getElementsByClassName("e").length===1)return;o.order.splice(1,0,"CLASS"),o.find.CLASS=function(a,b,c){if(typeof b.getElementsByClassName!="undefined"&&!c)return b.getElementsByClassName(a[1])},a=null}}(),c.documentElement.contains?m.contains=function(a,b){return a!==b&&(a.contains?a.contains(b):!0)}:c.documentElement.compareDocumentPosition?m.contains=function(a,b){return!!(a.compareDocumentPosition(b)&16)}:m.contains=function(){return!1},m.isXML=function(a){var b=(a?a.ownerDocument||a:0).documentElement;return b?b.nodeName!=="HTML":!1};var y=function(a,b,c){var d,e=[],f="",g=b.nodeType?[b]:b;while(d=o.match.PSEUDO.exec(a))f+=d[0],a=a.replace(o.match.PSEUDO,"");a=o.relative[a]?a+"*":a;for(var h=0,i=g.length;h0)for(h=g;h=0:f.filter(a,this).length>0:this.filter(a).length>0)},closest:function(a,b){var c=[],d,e,g=this[0];if(f.isArray(a)){var h=1;while(g&&g.ownerDocument&&g!==b){for(d=0;d-1:f.find.matchesSelector(g,a)){c.push(g);break}g=g.parentNode;if(!g||!g.ownerDocument||g===b||g.nodeType===11)break}}c=c.length>1?f.unique(c):c;return this.pushStack(c,"closest",a)},index:function(a){if(!a)return this[0]&&this[0].parentNode?this.prevAll().length:-1;if(typeof a=="string")return f.inArray(this[0],f(a));return f.inArray(a.jquery?a[0]:a,this)},add:function(a,b){var c=typeof a=="string"?f(a,b):f.makeArray(a&&a.nodeType?[a]:a),d=f.merge(this.get(),c);return this.pushStack(S(c[0])||S(d[0])?d:f.unique(d))},andSelf:function(){return this.add(this.prevObject)}}),f.each({parent:function(a){var b=a.parentNode;return b&&b.nodeType!==11?b:null},parents:function(a){return f.dir(a,"parentNode")},parentsUntil:function(a,b,c){return f.dir(a,"parentNode",c)},next:function(a){return f.nth(a,2,"nextSibling")},prev:function(a){return f.nth(a,2,"previousSibling")},nextAll:function(a){return f.dir(a,"nextSibling")},prevAll:function(a){return f.dir(a,"previousSibling")},nextUntil:function(a,b,c){return f.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return f.dir(a,"previousSibling",c)},siblings:function(a){return f.sibling(a.parentNode.firstChild,a)},children:function(a){return f.sibling(a.firstChild)},contents:function(a){return f.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:f.makeArray(a.childNodes)}},function(a,b){f.fn[a]=function(c,d){var e=f.map(this,b,c);L.test(a)||(d=c),d&&typeof d=="string"&&(e=f.filter(d,e)),e=this.length>1&&!R[a]?f.unique(e):e,(this.length>1||N.test(d))&&M.test(a)&&(e=e.reverse());return this.pushStack(e,a,P.call(arguments).join(","))}}),f.extend({filter:function(a,b,c){c&&(a=":not("+a+")");return b.length===1?f.find.matchesSelector(b[0],a)?[b[0]]:[]:f.find.matches(a,b)},dir:function(a,c,d){var e=[],g=a[c];while(g&&g.nodeType!==9&&(d===b||g.nodeType!==1||!f(g).is(d)))g.nodeType===1&&e.push(g),g=g[c];return e},nth:function(a,b,c,d){b=b||1;var e=0;for(;a;a=a[c])if(a.nodeType===1&&++e===b)break;return a},sibling:function(a,b){var c=[];for(;a;a=a.nextSibling)a.nodeType===1&&a!==b&&c.push(a);return c}});var V="abbr|article|aside|audio|canvas|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",W=/ jQuery\d+="(?:\d+|null)"/g,X=/^\s+/,Y=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,Z=/<([\w:]+)/,$=/",""],legend:[1,"
            ","
            "],thead:[1,"","
            "],tr:[2,"","
            "],td:[3,"","
            "],col:[2,"","
            "],area:[1,"",""],_default:[0,"",""]},bh=U(c);bg.optgroup=bg.option,bg.tbody=bg.tfoot=bg.colgroup=bg.caption=bg.thead,bg.th=bg.td,f.support.htmlSerialize||(bg._default=[1,"div
            ","
            "]),f.fn.extend({text:function(a){if(f.isFunction(a))return this.each(function(b){var c=f(this);c.text(a.call(this,b,c.text()))});if(typeof a!="object"&&a!==b)return this.empty().append((this[0]&&this[0].ownerDocument||c).createTextNode(a));return f.text(this)},wrapAll:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapAll(a.call(this,b))});if(this[0]){var b=f(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&a.firstChild.nodeType===1)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapInner(a.call(this,b))});return this.each(function(){var b=f(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=f.isFunction(a);return this.each(function(c){f(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){f.nodeName(this,"body")||f(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.appendChild(a)})},prepend:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this)});if(arguments.length){var a=f.clean(arguments);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this.nextSibling)});if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,f.clean(arguments));return a}},remove:function(a,b){for(var c=0,d;(d=this[c])!=null;c++)if(!a||f.filter(a,[d]).length)!b&&d.nodeType===1&&(f.cleanData(d.getElementsByTagName("*")),f.cleanData([d])),d.parentNode&&d.parentNode.removeChild(d);return this},empty:function() -{for(var a=0,b;(b=this[a])!=null;a++){b.nodeType===1&&f.cleanData(b.getElementsByTagName("*"));while(b.firstChild)b.removeChild(b.firstChild)}return this},clone:function(a,b){a=a==null?!1:a,b=b==null?a:b;return this.map(function(){return f.clone(this,a,b)})},html:function(a){if(a===b)return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(W,""):null;if(typeof a=="string"&&!ba.test(a)&&(f.support.leadingWhitespace||!X.test(a))&&!bg[(Z.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(Y,"<$1>");try{for(var c=0,d=this.length;c1&&l0?this.clone(!0):this).get();f(e[h])[b](j),d=d.concat(j)}return this.pushStack(d,a,e.selector)}}),f.extend({clone:function(a,b,c){var d,e,g,h=f.support.html5Clone||!bc.test("<"+a.nodeName)?a.cloneNode(!0):bo(a);if((!f.support.noCloneEvent||!f.support.noCloneChecked)&&(a.nodeType===1||a.nodeType===11)&&!f.isXMLDoc(a)){bk(a,h),d=bl(a),e=bl(h);for(g=0;d[g];++g)e[g]&&bk(d[g],e[g])}if(b){bj(a,h);if(c){d=bl(a),e=bl(h);for(g=0;d[g];++g)bj(d[g],e[g])}}d=e=null;return h},clean:function(a,b,d,e){var g;b=b||c,typeof b.createElement=="undefined"&&(b=b.ownerDocument||b[0]&&b[0].ownerDocument||c);var h=[],i;for(var j=0,k;(k=a[j])!=null;j++){typeof k=="number"&&(k+="");if(!k)continue;if(typeof k=="string")if(!_.test(k))k=b.createTextNode(k);else{k=k.replace(Y,"<$1>");var l=(Z.exec(k)||["",""])[1].toLowerCase(),m=bg[l]||bg._default,n=m[0],o=b.createElement("div");b===c?bh.appendChild(o):U(b).appendChild(o),o.innerHTML=m[1]+k+m[2];while(n--)o=o.lastChild;if(!f.support.tbody){var p=$.test(k),q=l==="table"&&!p?o.firstChild&&o.firstChild.childNodes:m[1]===""&&!p?o.childNodes:[];for(i=q.length-1;i>=0;--i)f.nodeName(q[i],"tbody")&&!q[i].childNodes.length&&q[i].parentNode.removeChild(q[i])}!f.support.leadingWhitespace&&X.test(k)&&o.insertBefore(b.createTextNode(X.exec(k)[0]),o.firstChild),k=o.childNodes}var r;if(!f.support.appendChecked)if(k[0]&&typeof (r=k.length)=="number")for(i=0;i=0)return b+"px"}}}),f.support.opacity||(f.cssHooks.opacity={get:function(a,b){return br.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?parseFloat(RegExp.$1)/100+"":b?"1":""},set:function(a,b){var c=a.style,d=a.currentStyle,e=f.isNumeric(b)?"alpha(opacity="+b*100+")":"",g=d&&d.filter||c.filter||"";c.zoom=1;if(b>=1&&f.trim(g.replace(bq,""))===""){c.removeAttribute("filter");if(d&&!d.filter)return}c.filter=bq.test(g)?g.replace(bq,e):g+" "+e}}),f(function(){f.support.reliableMarginRight||(f.cssHooks.marginRight={get:function(a,b){var c;f.swap(a,{display:"inline-block"},function(){b?c=bz(a,"margin-right","marginRight"):c=a.style.marginRight});return c}})}),c.defaultView&&c.defaultView.getComputedStyle&&(bA=function(a,b){var c,d,e;b=b.replace(bs,"-$1").toLowerCase(),(d=a.ownerDocument.defaultView)&&(e=d.getComputedStyle(a,null))&&(c=e.getPropertyValue(b),c===""&&!f.contains(a.ownerDocument.documentElement,a)&&(c=f.style(a,b)));return c}),c.documentElement.currentStyle&&(bB=function(a,b){var c,d,e,f=a.currentStyle&&a.currentStyle[b],g=a.style;f===null&&g&&(e=g[b])&&(f=e),!bt.test(f)&&bu.test(f)&&(c=g.left,d=a.runtimeStyle&&a.runtimeStyle.left,d&&(a.runtimeStyle.left=a.currentStyle.left),g.left=b==="fontSize"?"1em":f||0,f=g.pixelLeft+"px",g.left=c,d&&(a.runtimeStyle.left=d));return f===""?"auto":f}),bz=bA||bB,f.expr&&f.expr.filters&&(f.expr.filters.hidden=function(a){var b=a.offsetWidth,c=a.offsetHeight;return b===0&&c===0||!f.support.reliableHiddenOffsets&&(a.style&&a.style.display||f.css(a,"display"))==="none"},f.expr.filters.visible=function(a){return!f.expr.filters.hidden(a)});var bD=/%20/g,bE=/\[\]$/,bF=/\r?\n/g,bG=/#.*$/,bH=/^(.*?):[ \t]*([^\r\n]*)\r?$/mg,bI=/^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,bJ=/^(?:about|app|app\-storage|.+\-extension|file|res|widget):$/,bK=/^(?:GET|HEAD)$/,bL=/^\/\//,bM=/\?/,bN=/)<[^<]*)*<\/script>/gi,bO=/^(?:select|textarea)/i,bP=/\s+/,bQ=/([?&])_=[^&]*/,bR=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/,bS=f.fn.load,bT={},bU={},bV,bW,bX=["*/"]+["*"];try{bV=e.href}catch(bY){bV=c.createElement("a"),bV.href="",bV=bV.href}bW=bR.exec(bV.toLowerCase())||[],f.fn.extend({load:function(a,c,d){if(typeof a!="string"&&bS)return bS.apply(this,arguments);if(!this.length)return this;var e=a.indexOf(" ");if(e>=0){var g=a.slice(e,a.length);a=a.slice(0,e)}var h="GET";c&&(f.isFunction(c)?(d=c,c=b):typeof c=="object"&&(c=f.param(c,f.ajaxSettings.traditional),h="POST"));var i=this;f.ajax({url:a,type:h,dataType:"html",data:c,complete:function(a,b,c){c=a.responseText,a.isResolved()&&(a.done(function(a){c=a}),i.html(g?f("
            ").append(c.replace(bN,"")).find(g):c)),d&&i.each(d,[c,b,a])}});return this},serialize:function(){return f.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?f.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||bO.test(this.nodeName)||bI.test(this.type))}).map(function(a,b){var c=f(this).val();return c==null?null:f.isArray(c)?f.map(c,function(a,c){return{name:b.name,value:a.replace(bF,"\r\n")}}):{name:b.name,value:c.replace(bF,"\r\n")}}).get()}}),f.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(a,b){f.fn[b]=function(a){return this.on(b,a)}}),f.each(["get","post"],function(a,c){f[c]=function(a,d,e,g){f.isFunction(d)&&(g=g||e,e=d,d=b);return f.ajax({type:c,url:a,data:d,success:e,dataType:g})}}),f.extend({getScript:function(a,c){return f.get(a,b,c,"script")},getJSON:function(a,b,c){return f.get(a,b,c,"json")},ajaxSetup:function(a,b){b?b_(a,f.ajaxSettings):(b=a,a=f.ajaxSettings),b_(a,b);return a},ajaxSettings:{url:bV,isLocal:bJ.test(bW[1]),global:!0,type:"GET",contentType:"application/x-www-form-urlencoded",processData:!0,async:!0,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":bX},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":a.String,"text html":!0,"text json":f.parseJSON,"text xml":f.parseXML},flatOptions:{context:!0,url:!0}},ajaxPrefilter:bZ(bT),ajaxTransport:bZ(bU),ajax:function(a,c){function w(a,c,l,m){if(s!==2){s=2,q&&clearTimeout(q),p=b,n=m||"",v.readyState=a>0?4:0;var o,r,u,w=c,x=l?cb(d,v,l):b,y,z;if(a>=200&&a<300||a===304){if(d.ifModified){if(y=v.getResponseHeader("Last-Modified"))f.lastModified[k]=y;if(z=v.getResponseHeader("Etag"))f.etag[k]=z}if(a===304)w="notmodified",o=!0;else try{r=cc(d,x),w="success",o=!0}catch(A){w="parsererror",u=A}}else{u=w;if(!w||a)w="error",a<0&&(a=0)}v.status=a,v.statusText=""+(c||w),o?h.resolveWith(e,[r,w,v]):h.rejectWith(e,[v,w,u]),v.statusCode(j),j=b,t&&g.trigger("ajax"+(o?"Success":"Error"),[v,d,o?r:u]),i.fireWith(e,[v,w]),t&&(g.trigger("ajaxComplete",[v,d]),--f.active||f.event.trigger("ajaxStop"))}}typeof a=="object"&&(c=a,a=b),c=c||{};var d=f.ajaxSetup({},c),e=d.context||d,g=e!==d&&(e.nodeType||e instanceof f)?f(e):f.event,h=f.Deferred(),i=f.Callbacks("once memory"),j=d.statusCode||{},k,l={},m={},n,o,p,q,r,s=0,t,u,v={readyState:0,setRequestHeader:function(a,b){if(!s){var c=a.toLowerCase();a=m[c]=m[c]||a,l[a]=b}return this},getAllResponseHeaders:function(){return s===2?n:null},getResponseHeader:function(a){var c;if(s===2){if(!o){o={};while(c=bH.exec(n))o[c[1].toLowerCase()]=c[2]}c=o[a.toLowerCase()]}return c===b?null:c},overrideMimeType:function(a){s||(d.mimeType=a);return this},abort:function(a){a=a||"abort",p&&p.abort(a),w(0,a);return this}};h.promise(v),v.success=v.done,v.error=v.fail,v.complete=i.add,v.statusCode=function(a){if(a){var b;if(s<2)for(b in a)j[b]=[j[b],a[b]];else b=a[v.status],v.then(b,b)}return this},d.url=((a||d.url)+"").replace(bG,"").replace(bL,bW[1]+"//"),d.dataTypes=f.trim(d.dataType||"*").toLowerCase().split(bP),d.crossDomain==null&&(r=bR.exec(d.url.toLowerCase()),d.crossDomain=!(!r||r[1]==bW[1]&&r[2]==bW[2]&&(r[3]||(r[1]==="http:"?80:443))==(bW[3]||(bW[1]==="http:"?80:443)))),d.data&&d.processData&&typeof d.data!="string"&&(d.data=f.param(d.data,d.traditional)),b$(bT,d,c,v);if(s===2)return!1;t=d.global,d.type=d.type.toUpperCase(),d.hasContent=!bK.test(d.type),t&&f.active++===0&&f.event.trigger("ajaxStart");if(!d.hasContent){d.data&&(d.url+=(bM.test(d.url)?"&":"?")+d.data,delete d.data),k=d.url;if(d.cache===!1){var x=f.now(),y=d.url.replace(bQ,"$1_="+x);d.url=y+(y===d.url?(bM.test(d.url)?"&":"?")+"_="+x:"")}}(d.data&&d.hasContent&&d.contentType!==!1||c.contentType)&&v.setRequestHeader("Content-Type",d.contentType),d.ifModified&&(k=k||d.url,f.lastModified[k]&&v.setRequestHeader("If-Modified-Since",f.lastModified[k]),f.etag[k]&&v.setRequestHeader("If-None-Match",f.etag[k])),v.setRequestHeader("Accept",d.dataTypes[0]&&d.accepts[d.dataTypes[0]]?d.accepts[d.dataTypes[0]]+(d.dataTypes[0]!=="*"?", "+bX+"; q=0.01":""):d.accepts["*"]);for(u in d.headers)v.setRequestHeader(u,d.headers[u]);if(d.beforeSend&&(d.beforeSend.call(e,v,d)===!1||s===2)){v.abort();return!1}for(u in{success:1,error:1,complete:1})v[u](d[u]);p=b$(bU,d,c,v);if(!p)w(-1,"No Transport");else{v.readyState=1,t&&g.trigger("ajaxSend",[v,d]),d.async&&d.timeout>0&&(q=setTimeout(function(){v.abort("timeout")},d.timeout));try{s=1,p.send(l,w)}catch(z){if(s<2)w(-1,z);else throw z}}return v},param:function(a,c){var d=[],e=function(a,b){b=f.isFunction(b)?b():b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};c===b&&(c=f.ajaxSettings.traditional);if(f.isArray(a)||a.jquery&&!f.isPlainObject(a))f.each(a,function(){e(this.name,this.value)});else for(var g in a)ca(g,a[g],c,e);return d.join("&").replace(bD,"+")}}),f.extend({active:0,lastModified:{},etag:{}});var cd=f.now(),ce=/(\=)\?(&|$)|\?\?/i;f.ajaxSetup({jsonp:"callback",jsonpCallback:function(){return f.expando+"_"+cd++}}),f.ajaxPrefilter("json jsonp",function(b,c,d){var e=b.contentType==="application/x-www-form-urlencoded"&&typeof b.data=="string";if(b.dataTypes[0]==="jsonp"||b.jsonp!==!1&&(ce.test(b.url)||e&&ce.test(b.data))){var g,h=b.jsonpCallback=f.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,i=a[h],j=b.url,k=b.data,l="$1"+h+"$2";b.jsonp!==!1&&(j=j.replace(ce,l),b.url===j&&(e&&(k=k.replace(ce,l)),b.data===k&&(j+=(/\?/.test(j)?"&":"?")+b.jsonp+"="+h))),b.url=j,b.data=k,a[h]=function(a){g=[a]},d.always(function(){a[h]=i,g&&f.isFunction(i)&&a[h](g[0])}),b.converters["script json"]=function(){g||f.error(h+" was not called");return g[0]},b.dataTypes[0]="json";return"script"}}),f.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/javascript|ecmascript/},converters:{"text script":function(a){f.globalEval(a);return a}}}),f.ajaxPrefilter("script",function(a){a.cache===b&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),f.ajaxTransport("script",function(a){if(a.crossDomain){var d,e=c.head||c.getElementsByTagName("head")[0]||c.documentElement;return{send:function(f,g){d=c.createElement("script"),d.async="async",a.scriptCharset&&(d.charset=a.scriptCharset),d.src=a.url,d.onload=d.onreadystatechange=function(a,c){if(c||!d.readyState||/loaded|complete/.test(d.readyState))d.onload=d.onreadystatechange=null,e&&d.parentNode&&e.removeChild(d),d=b,c||g(200,"success")},e.insertBefore(d,e.firstChild)},abort:function(){d&&d.onload(0,1)}}}});var cf=a.ActiveXObject?function(){for(var a in ch)ch[a](0,1)}:!1,cg=0,ch;f.ajaxSettings.xhr=a.ActiveXObject?function(){return!this.isLocal&&ci()||cj()}:ci,function(a){f.extend(f.support,{ajax:!!a,cors:!!a&&"withCredentials"in a})}(f.ajaxSettings.xhr()),f.support.ajax&&f.ajaxTransport(function(c){if(!c.crossDomain||f.support.cors){var d;return{send:function(e,g){var h=c.xhr(),i,j;c.username?h.open(c.type,c.url,c.async,c.username,c.password):h.open(c.type,c.url,c.async);if(c.xhrFields)for(j in c.xhrFields)h[j]=c.xhrFields[j];c.mimeType&&h.overrideMimeType&&h.overrideMimeType(c.mimeType),!c.crossDomain&&!e["X-Requested-With"]&&(e["X-Requested-With"]="XMLHttpRequest");try{for(j in e)h.setRequestHeader(j,e[j])}catch(k){}h.send(c.hasContent&&c.data||null),d=function(a,e){var j,k,l,m,n;try{if(d&&(e||h.readyState===4)){d=b,i&&(h.onreadystatechange=f.noop,cf&&delete ch[i]);if(e)h.readyState!==4&&h.abort();else{j=h.status,l=h.getAllResponseHeaders(),m={},n=h.responseXML,n&&n.documentElement&&(m.xml=n),m.text=h.responseText;try{k=h.statusText}catch(o){k=""}!j&&c.isLocal&&!c.crossDomain?j=m.text?200:404:j===1223&&(j=204)}}}catch(p){e||g(-1,p)}m&&g(j,k,m,l)},!c.async||h.readyState===4?d():(i=++cg,cf&&(ch||(ch={},f(a).unload(cf)),ch[i]=d),h.onreadystatechange=d)},abort:function(){d&&d(0,1)}}}});var ck={},cl,cm,cn=/^(?:toggle|show|hide)$/,co=/^([+\-]=)?([\d+.\-]+)([a-z%]*)$/i,cp,cq=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]],cr;f.fn.extend({show:function(a,b,c){var d,e;if(a||a===0)return this.animate(cu("show",3),a,b,c);for(var g=0,h=this.length;g=i.duration+this.startTime){this.now=this.end,this.pos=this.state=1,this.update(),i.animatedProperties[this.prop]=!0;for(b in i.animatedProperties)i.animatedProperties[b]!==!0&&(g=!1);if(g){i.overflow!=null&&!f.support.shrinkWrapBlocks&&f.each(["","X","Y"],function(a,b){h.style["overflow"+b]=i.overflow[a]}),i.hide&&f(h).hide();if(i.hide||i.show)for(b in i.animatedProperties)f.style(h,b,i.orig[b]),f.removeData(h,"fxshow"+b,!0),f.removeData(h,"toggle"+b,!0);d=i.complete,d&&(i.complete=!1,d.call(h))}return!1}i.duration==Infinity?this.now=e:(c=e-this.startTime,this.state=c/i.duration,this.pos=f.easing[i.animatedProperties[this.prop]](this.state,c,0,1,i.duration),this.now=this.start+(this.end-this.start)*this.pos),this.update();return!0}},f.extend(f.fx,{tick:function(){var a,b=f.timers,c=0;for(;c-1,k={},l={},m,n;j?(l=e.position(),m=l.top,n=l.left):(m=parseFloat(h)||0,n=parseFloat(i)||0),f.isFunction(b)&&(b=b.call(a,c,g)),b.top!=null&&(k.top=b.top-g.top+m),b.left!=null&&(k.left=b.left-g.left+n),"using"in b?b.using.call(a,k):e.css(k)}},f.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),c=this.offset(),d=cx.test(b[0].nodeName)?{top:0,left:0}:b.offset();c.top-=parseFloat(f.css(a,"marginTop"))||0,c.left-=parseFloat(f.css(a,"marginLeft"))||0,d.top+=parseFloat(f.css(b[0],"borderTopWidth"))||0,d.left+=parseFloat(f.css(b[0],"borderLeftWidth"))||0;return{top:c.top-d.top,left:c.left-d.left}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||c.body;while(a&&!cx.test(a.nodeName)&&f.css(a,"position")==="static")a=a.offsetParent;return a})}}),f.each(["Left","Top"],function(a,c){var d="scroll"+c;f.fn[d]=function(c){var e,g;if(c===b){e=this[0];if(!e)return null;g=cy(e);return g?"pageXOffset"in g?g[a?"pageYOffset":"pageXOffset"]:f.support.boxModel&&g.document.documentElement[d]||g.document.body[d]:e[d]}return this.each(function(){g=cy(this),g?g.scrollTo(a?f(g).scrollLeft():c,a?c:f(g).scrollTop()):this[d]=c})}}),f.each(["Height","Width"],function(a,c){var d=c.toLowerCase();f.fn["inner"+c]=function(){var a=this[0];return a?a.style?parseFloat(f.css(a,d,"padding")):this[d]():null},f.fn["outer"+c]=function(a){var b=this[0];return b?b.style?parseFloat(f.css(b,d,a?"margin":"border")):this[d]():null},f.fn[d]=function(a){var e=this[0];if(!e)return a==null?null:this;if(f.isFunction(a))return this.each(function(b){var c=f(this);c[d](a.call(this,b,c[d]()))});if(f.isWindow(e)){var g=e.document.documentElement["client"+c],h=e.document.body;return e.document.compatMode==="CSS1Compat"&&g||h&&h["client"+c]||g}if(e.nodeType===9)return Math.max(e.documentElement["client"+c],e.body["scroll"+c],e.documentElement["scroll"+c],e.body["offset"+c],e.documentElement["offset"+c]);if(a===b){var i=f.css(e,d),j=parseFloat(i);return f.isNumeric(j)?j:i}return this.css(d,typeof a=="string"?a:a+"px")}}),a.jQuery=a.$=f,typeof define=="function"&&define.amd&&define.amd.jQuery&&define("jquery",[],function(){return f})})(window); \ No newline at end of file diff --git a/src/main/webapp/js/webqq/jquery-smartMenu-min.js b/src/main/webapp/js/webqq/jquery-smartMenu-min.js deleted file mode 100644 index cab3a203..00000000 --- a/src/main/webapp/js/webqq/jquery-smartMenu-min.js +++ /dev/null @@ -1,10 +0,0 @@ -/* - * smartMenu.js 智能上下文菜单插件 - * http://www.zhangxinxu.com/ - * - * Copyright 2011, zhangxinxu - * - * 2011-05-26 v1.0 编写 - * 2011-06-03 v1.1 修复func中this失准问题 - */ -(function(a){var b=a(document).data("func",{}),c=a("body");a.smartMenu=a.noop;a.fn.smartMenu=function(g,d){var h={name:"",offsetX:2,offsetY:2,textLimit:6,beforeShow:a.noop,afterShow:a.noop};var i=a.extend(h,d||{});var f=function(k){var m=k||g,j=k?Math.random().toString():i.name,o="",n="",l="smart_menu_";if(a.isArray(m)&&m.length){o='
              ';a.each(m,function(q,p){if(q){o=o+'
            •  
            • '}if(a.isArray(p)){a.each(p,function(s,v){var w=v.text,u="",r="",t=Math.random().toString().replace(".","");if(w){if(w.length>i.textLimit){w=w.slice(0,i.textLimit)+"…";r=' title="'+v.text+'"'}if(a.isArray(v.data)&&v.data.length){u='
            • '+f(v.data)+''+w+"
            • "}else{u='
            • '+w+"
            • "}o+=u;var x=b.data("func");x[t]=v.func;b.data("func",x)}})}});o=o+"
            "}return o},e=function(){var j="#smartMenu_",l="smart_menu_",k=a(j+i.name);if(!k.size()){a("body").append(f());a(j+i.name+" a").bind("click",function(){var m=a(this).attr("data-key"),n=b.data("func")[m];if(a.isFunction(n)){n.call(b.data("trigger"))}a.smartMenu.hide();return false});a(j+i.name+" li").each(function(){var m=a(this).attr("data-hover"),n=l+"li_hover";if(m){a(this).hover(function(){a(this).addClass(n).children("."+l+"box").show();a(this).children("."+l+"a").addClass(l+"a_hover")},function(){a(this).removeClass(n).children("."+l+"box").hide();a(this).children("."+l+"a").removeClass(l+"a_hover")})}});return a(j+i.name)}return k};a(this).each(function(){this.oncontextmenu=function(l){if(a.isFunction(i.beforeShow)){i.beforeShow.call(this)}l=l||window.event;l.cancelBubble=true;if(l.stopPropagation){l.stopPropagation()}a.smartMenu.hide();var k=b.scrollTop();var j=e();if(j){j.css({display:"block",left:l.clientX+i.offsetX,top:l.clientY+k+i.offsetY});b.data("target",j);b.data("trigger",this);if(a.isFunction(i.afterShow)){i.afterShow.call(this)}return false}}});if(!c.data("bind")){c.bind("click",a.smartMenu.hide).data("bind",true)}};a.extend(a.smartMenu,{hide:function(){var d=b.data("target");if(d&&d.css("display")==="block"){d.hide()}},remove:function(){var d=b.data("target");if(d){d.remove()}}})})(jQuery); \ No newline at end of file diff --git a/src/main/webapp/js/webqq/jquery-ui-1.8.18.custom.min.js b/src/main/webapp/js/webqq/jquery-ui-1.8.18.custom.min.js deleted file mode 100644 index 39fa9458..00000000 --- a/src/main/webapp/js/webqq/jquery-ui-1.8.18.custom.min.js +++ /dev/null @@ -1,102 +0,0 @@ -/*! - * jQuery UI 1.8.18 - * - * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI - */(function(a,b){function d(b){return!a(b).parents().andSelf().filter(function(){return a.curCSS(this,"visibility")==="hidden"||a.expr.filters.hidden(this)}).length}function c(b,c){var e=b.nodeName.toLowerCase();if("area"===e){var f=b.parentNode,g=f.name,h;if(!b.href||!g||f.nodeName.toLowerCase()!=="map")return!1;h=a("img[usemap=#"+g+"]")[0];return!!h&&d(h)}return(/input|select|textarea|button|object/.test(e)?!b.disabled:"a"==e?b.href||c:c)&&d(b)}a.ui=a.ui||{};a.ui.version||(a.extend(a.ui,{version:"1.8.18",keyCode:{ALT:18,BACKSPACE:8,CAPS_LOCK:20,COMMA:188,COMMAND:91,COMMAND_LEFT:91,COMMAND_RIGHT:93,CONTROL:17,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,INSERT:45,LEFT:37,MENU:93,NUMPAD_ADD:107,NUMPAD_DECIMAL:110,NUMPAD_DIVIDE:111,NUMPAD_ENTER:108,NUMPAD_MULTIPLY:106,NUMPAD_SUBTRACT:109,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SHIFT:16,SPACE:32,TAB:9,UP:38,WINDOWS:91}}),a.fn.extend({propAttr:a.fn.prop||a.fn.attr,_focus:a.fn.focus,focus:function(b,c){return typeof b=="number"?this.each(function(){var d=this;setTimeout(function(){a(d).focus(),c&&c.call(d)},b)}):this._focus.apply(this,arguments)},scrollParent:function(){var b;a.browser.msie&&/(static|relative)/.test(this.css("position"))||/absolute/.test(this.css("position"))?b=this.parents().filter(function(){return/(relative|absolute|fixed)/.test(a.curCSS(this,"position",1))&&/(auto|scroll)/.test(a.curCSS(this,"overflow",1)+a.curCSS(this,"overflow-y",1)+a.curCSS(this,"overflow-x",1))}).eq(0):b=this.parents().filter(function(){return/(auto|scroll)/.test(a.curCSS(this,"overflow",1)+a.curCSS(this,"overflow-y",1)+a.curCSS(this,"overflow-x",1))}).eq(0);return/fixed/.test(this.css("position"))||!b.length?a(document):b},zIndex:function(c){if(c!==b)return this.css("zIndex",c);if(this.length){var d=a(this[0]),e,f;while(d.length&&d[0]!==document){e=d.css("position");if(e==="absolute"||e==="relative"||e==="fixed"){f=parseInt(d.css("zIndex"),10);if(!isNaN(f)&&f!==0)return f}d=d.parent()}}return 0},disableSelection:function(){return this.bind((a.support.selectstart?"selectstart":"mousedown")+".ui-disableSelection",function(a){a.preventDefault()})},enableSelection:function(){return this.unbind(".ui-disableSelection")}}),a.each(["Width","Height"],function(c,d){function h(b,c,d,f){a.each(e,function(){c-=parseFloat(a.curCSS(b,"padding"+this,!0))||0,d&&(c-=parseFloat(a.curCSS(b,"border"+this+"Width",!0))||0),f&&(c-=parseFloat(a.curCSS(b,"margin"+this,!0))||0)});return c}var e=d==="Width"?["Left","Right"]:["Top","Bottom"],f=d.toLowerCase(),g={innerWidth:a.fn.innerWidth,innerHeight:a.fn.innerHeight,outerWidth:a.fn.outerWidth,outerHeight:a.fn.outerHeight};a.fn["inner"+d]=function(c){if(c===b)return g["inner"+d].call(this);return this.each(function(){a(this).css(f,h(this,c)+"px")})},a.fn["outer"+d]=function(b,c){if(typeof b!="number")return g["outer"+d].call(this,b);return this.each(function(){a(this).css(f,h(this,b,!0,c)+"px")})}}),a.extend(a.expr[":"],{data:function(b,c,d){return!!a.data(b,d[3])},focusable:function(b){return c(b,!isNaN(a.attr(b,"tabindex")))},tabbable:function(b){var d=a.attr(b,"tabindex"),e=isNaN(d);return(e||d>=0)&&c(b,!e)}}),a(function(){var b=document.body,c=b.appendChild(c=document.createElement("div"));c.offsetHeight,a.extend(c.style,{minHeight:"100px",height:"auto",padding:0,borderWidth:0}),a.support.minHeight=c.offsetHeight===100,a.support.selectstart="onselectstart"in c,b.removeChild(c).style.display="none"}),a.extend(a.ui,{plugin:{add:function(b,c,d){var e=a.ui[b].prototype;for(var f in d)e.plugins[f]=e.plugins[f]||[],e.plugins[f].push([c,d[f]])},call:function(a,b,c){var d=a.plugins[b];if(!!d&&!!a.element[0].parentNode)for(var e=0;e0)return!0;b[d]=1,e=b[d]>0,b[d]=0;return e},isOverAxis:function(a,b,c){return a>b&&a=9)&&!b.button)return this._mouseUp(b);if(this._mouseStarted){this._mouseDrag(b);return b.preventDefault()}this._mouseDistanceMet(b)&&this._mouseDelayMet(b)&&(this._mouseStarted=this._mouseStart(this._mouseDownEvent,b)!==!1,this._mouseStarted?this._mouseDrag(b):this._mouseUp(b));return!this._mouseStarted},_mouseUp:function(b){a(document).unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate),this._mouseStarted&&(this._mouseStarted=!1,b.target==this._mouseDownEvent.target&&a.data(b.target,this.widgetName+".preventClickEvent",!0),this._mouseStop(b));return!1},_mouseDistanceMet:function(a){return Math.max(Math.abs(this._mouseDownEvent.pageX-a.pageX),Math.abs(this._mouseDownEvent.pageY-a.pageY))>=this.options.distance},_mouseDelayMet:function(a){return this.mouseDelayMet},_mouseStart:function(a){},_mouseDrag:function(a){},_mouseStop:function(a){},_mouseCapture:function(a){return!0}})})(jQuery);/* - * jQuery UI Position 1.8.18 - * - * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Position - */(function(a,b){a.ui=a.ui||{};var c=/left|center|right/,d=/top|center|bottom/,e="center",f={},g=a.fn.position,h=a.fn.offset;a.fn.position=function(b){if(!b||!b.of)return g.apply(this,arguments);b=a.extend({},b);var h=a(b.of),i=h[0],j=(b.collision||"flip").split(" "),k=b.offset?b.offset.split(" "):[0,0],l,m,n;i.nodeType===9?(l=h.width(),m=h.height(),n={top:0,left:0}):i.setTimeout?(l=h.width(),m=h.height(),n={top:h.scrollTop(),left:h.scrollLeft()}):i.preventDefault?(b.at="left top",l=m=0,n={top:b.of.pageY,left:b.of.pageX}):(l=h.outerWidth(),m=h.outerHeight(),n=h.offset()),a.each(["my","at"],function(){var a=(b[this]||"").split(" ");a.length===1&&(a=c.test(a[0])?a.concat([e]):d.test(a[0])?[e].concat(a):[e,e]),a[0]=c.test(a[0])?a[0]:e,a[1]=d.test(a[1])?a[1]:e,b[this]=a}),j.length===1&&(j[1]=j[0]),k[0]=parseInt(k[0],10)||0,k.length===1&&(k[1]=k[0]),k[1]=parseInt(k[1],10)||0,b.at[0]==="right"?n.left+=l:b.at[0]===e&&(n.left+=l/2),b.at[1]==="bottom"?n.top+=m:b.at[1]===e&&(n.top+=m/2),n.left+=k[0],n.top+=k[1];return this.each(function(){var c=a(this),d=c.outerWidth(),g=c.outerHeight(),h=parseInt(a.curCSS(this,"marginLeft",!0))||0,i=parseInt(a.curCSS(this,"marginTop",!0))||0,o=d+h+(parseInt(a.curCSS(this,"marginRight",!0))||0),p=g+i+(parseInt(a.curCSS(this,"marginBottom",!0))||0),q=a.extend({},n),r;b.my[0]==="right"?q.left-=d:b.my[0]===e&&(q.left-=d/2),b.my[1]==="bottom"?q.top-=g:b.my[1]===e&&(q.top-=g/2),f.fractions||(q.left=Math.round(q.left),q.top=Math.round(q.top)),r={left:q.left-h,top:q.top-i},a.each(["left","top"],function(c,e){a.ui.position[j[c]]&&a.ui.position[j[c]][e](q,{targetWidth:l,targetHeight:m,elemWidth:d,elemHeight:g,collisionPosition:r,collisionWidth:o,collisionHeight:p,offset:k,my:b.my,at:b.at})}),a.fn.bgiframe&&c.bgiframe(),c.offset(a.extend(q,{using:b.using}))})},a.ui.position={fit:{left:function(b,c){var d=a(window),e=c.collisionPosition.left+c.collisionWidth-d.width()-d.scrollLeft();b.left=e>0?b.left-e:Math.max(b.left-c.collisionPosition.left,b.left)},top:function(b,c){var d=a(window),e=c.collisionPosition.top+c.collisionHeight-d.height()-d.scrollTop();b.top=e>0?b.top-e:Math.max(b.top-c.collisionPosition.top,b.top)}},flip:{left:function(b,c){if(c.at[0]!==e){var d=a(window),f=c.collisionPosition.left+c.collisionWidth-d.width()-d.scrollLeft(),g=c.my[0]==="left"?-c.elemWidth:c.my[0]==="right"?c.elemWidth:0,h=c.at[0]==="left"?c.targetWidth:-c.targetWidth,i=-2*c.offset[0];b.left+=c.collisionPosition.left<0?g+h+i:f>0?g+h+i:0}},top:function(b,c){if(c.at[1]!==e){var d=a(window),f=c.collisionPosition.top+c.collisionHeight-d.height()-d.scrollTop(),g=c.my[1]==="top"?-c.elemHeight:c.my[1]==="bottom"?c.elemHeight:0,h=c.at[1]==="top"?c.targetHeight:-c.targetHeight,i=-2*c.offset[1];b.top+=c.collisionPosition.top<0?g+h+i:f>0?g+h+i:0}}}},a.offset.setOffset||(a.offset.setOffset=function(b,c){/static/.test(a.curCSS(b,"position"))&&(b.style.position="relative");var d=a(b),e=d.offset(),f=parseInt(a.curCSS(b,"top",!0),10)||0,g=parseInt(a.curCSS(b,"left",!0),10)||0,h={top:c.top-e.top+f,left:c.left-e.left+g};"using"in c?c.using.call(b,h):d.css(h)},a.fn.offset=function(b){var c=this[0];if(!c||!c.ownerDocument)return null;if(b)return this.each(function(){a.offset.setOffset(this,b)});return h.call(this)}),function(){var b=document.getElementsByTagName("body")[0],c=document.createElement("div"),d,e,g,h,i;d=document.createElement(b?"div":"body"),g={visibility:"hidden",width:0,height:0,border:0,margin:0,background:"none"},b&&a.extend(g,{position:"absolute",left:"-1000px",top:"-1000px"});for(var j in g)d.style[j]=g[j];d.appendChild(c),e=b||document.documentElement,e.insertBefore(d,e.firstChild),c.style.cssText="position: absolute; left: 10.7432222px; top: 10.432325px; height: 30px; width: 201px;",h=a(c).offset(function(a,b){return b}).offset(),d.innerHTML="",e.removeChild(d),i=h.top+h.left+(b?2e3:0),f.fractions=i>21&&i<22}()})(jQuery);/* - * jQuery UI Draggable 1.8.18 - * - * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Draggables - * - * Depends: - * jquery.ui.core.js - * jquery.ui.mouse.js - * jquery.ui.widget.js - */(function(a,b){a.widget("ui.draggable",a.ui.mouse,{widgetEventPrefix:"drag",options:{addClasses:!0,appendTo:"parent",axis:!1,connectToSortable:!1,containment:!1,cursor:"auto",cursorAt:!1,grid:!1,handle:!1,helper:"original",iframeFix:!1,opacity:!1,refreshPositions:!1,revert:!1,revertDuration:500,scope:"default",scroll:!0,scrollSensitivity:20,scrollSpeed:20,snap:!1,snapMode:"both",snapTolerance:20,stack:!1,zIndex:!1},_create:function(){this.options.helper=="original"&&!/^(?:r|a|f)/.test(this.element.css("position"))&&(this.element[0].style.position="relative"),this.options.addClasses&&this.element.addClass("ui-draggable"),this.options.disabled&&this.element.addClass("ui-draggable-disabled"),this._mouseInit()},destroy:function(){if(!!this.element.data("draggable")){this.element.removeData("draggable").unbind(".draggable").removeClass("ui-draggable ui-draggable-dragging ui-draggable-disabled"),this._mouseDestroy();return this}},_mouseCapture:function(b){var c=this.options;if(this.helper||c.disabled||a(b.target).is(".ui-resizable-handle"))return!1;this.handle=this._getHandle(b);if(!this.handle)return!1;c.iframeFix&&a(c.iframeFix===!0?"iframe":c.iframeFix).each(function(){a('
            ').css({width:this.offsetWidth+"px",height:this.offsetHeight+"px",position:"absolute",opacity:"0.001",zIndex:1e3}).css(a(this).offset()).appendTo("body")});return!0},_mouseStart:function(b){var c=this.options;this.helper=this._createHelper(b),this._cacheHelperProportions(),a.ui.ddmanager&&(a.ui.ddmanager.current=this),this._cacheMargins(),this.cssPosition=this.helper.css("position"),this.scrollParent=this.helper.scrollParent(),this.offset=this.positionAbs=this.element.offset(),this.offset={top:this.offset.top-this.margins.top,left:this.offset.left-this.margins.left},a.extend(this.offset,{click:{left:b.pageX-this.offset.left,top:b.pageY-this.offset.top},parent:this._getParentOffset(),relative:this._getRelativeOffset()}),this.originalPosition=this.position=this._generatePosition(b),this.originalPageX=b.pageX,this.originalPageY=b.pageY,c.cursorAt&&this._adjustOffsetFromHelper(c.cursorAt),c.containment&&this._setContainment();if(this._trigger("start",b)===!1){this._clear();return!1}this._cacheHelperProportions(),a.ui.ddmanager&&!c.dropBehaviour&&a.ui.ddmanager.prepareOffsets(this,b),this.helper.addClass("ui-draggable-dragging"),this._mouseDrag(b,!0),a.ui.ddmanager&&a.ui.ddmanager.dragStart(this,b);return!0},_mouseDrag:function(b,c){this.position=this._generatePosition(b),this.positionAbs=this._convertPositionTo("absolute");if(!c){var d=this._uiHash();if(this._trigger("drag",b,d)===!1){this._mouseUp({});return!1}this.position=d.position}if(!this.options.axis||this.options.axis!="y")this.helper[0].style.left=this.position.left+"px";if(!this.options.axis||this.options.axis!="x")this.helper[0].style.top=this.position.top+"px";a.ui.ddmanager&&a.ui.ddmanager.drag(this,b);return!1},_mouseStop:function(b){var c=!1;a.ui.ddmanager&&!this.options.dropBehaviour&&(c=a.ui.ddmanager.drop(this,b)),this.dropped&&(c=this.dropped,this.dropped=!1);if((!this.element[0]||!this.element[0].parentNode)&&this.options.helper=="original")return!1;if(this.options.revert=="invalid"&&!c||this.options.revert=="valid"&&c||this.options.revert===!0||a.isFunction(this.options.revert)&&this.options.revert.call(this.element,c)){var d=this;a(this.helper).animate(this.originalPosition,parseInt(this.options.revertDuration,10),function(){d._trigger("stop",b)!==!1&&d._clear()})}else this._trigger("stop",b)!==!1&&this._clear();return!1},_mouseUp:function(b){this.options.iframeFix===!0&&a("div.ui-draggable-iframeFix").each(function(){this.parentNode.removeChild(this)}),a.ui.ddmanager&&a.ui.ddmanager.dragStop(this,b);return a.ui.mouse.prototype._mouseUp.call(this,b)},cancel:function(){this.helper.is(".ui-draggable-dragging")?this._mouseUp({}):this._clear();return this},_getHandle:function(b){var c=!this.options.handle||!a(this.options.handle,this.element).length?!0:!1;a(this.options.handle,this.element).find("*").andSelf().each(function(){this==b.target&&(c=!0)});return c},_createHelper:function(b){var c=this.options,d=a.isFunction(c.helper)?a(c.helper.apply(this.element[0],[b])):c.helper=="clone"?this.element.clone().removeAttr("id"):this.element;d.parents("body").length||d.appendTo(c.appendTo=="parent"?this.element[0].parentNode:c.appendTo),d[0]!=this.element[0]&&!/(fixed|absolute)/.test(d.css("position"))&&d.css("position","absolute");return d},_adjustOffsetFromHelper:function(b){typeof b=="string"&&(b=b.split(" ")),a.isArray(b)&&(b={left:+b[0],top:+b[1]||0}),"left"in b&&(this.offset.click.left=b.left+this.margins.left),"right"in b&&(this.offset.click.left=this.helperProportions.width-b.right+this.margins.left),"top"in b&&(this.offset.click.top=b.top+this.margins.top),"bottom"in b&&(this.offset.click.top=this.helperProportions.height-b.bottom+this.margins.top)},_getParentOffset:function(){this.offsetParent=this.helper.offsetParent();var b=this.offsetParent.offset();this.cssPosition=="absolute"&&this.scrollParent[0]!=document&&a.ui.contains(this.scrollParent[0],this.offsetParent[0])&&(b.left+=this.scrollParent.scrollLeft(),b.top+=this.scrollParent.scrollTop());if(this.offsetParent[0]==document.body||this.offsetParent[0].tagName&&this.offsetParent[0].tagName.toLowerCase()=="html"&&a.browser.msie)b={top:0,left:0};return{top:b.top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:b.left+(parseInt(this.offsetParent.css("borderLeftWidth"),10)||0)}},_getRelativeOffset:function(){if(this.cssPosition=="relative"){var a=this.element.position();return{top:a.top-(parseInt(this.helper.css("top"),10)||0)+this.scrollParent.scrollTop(),left:a.left-(parseInt(this.helper.css("left"),10)||0)+this.scrollParent.scrollLeft()}}return{top:0,left:0}},_cacheMargins:function(){this.margins={left:parseInt(this.element.css("marginLeft"),10)||0,top:parseInt(this.element.css("marginTop"),10)||0,right:parseInt(this.element.css("marginRight"),10)||0,bottom:parseInt(this.element.css("marginBottom"),10)||0}},_cacheHelperProportions:function(){this.helperProportions={width:this.helper.outerWidth(),height:this.helper.outerHeight()}},_setContainment:function(){var b=this.options;b.containment=="parent"&&(b.containment=this.helper[0].parentNode);if(b.containment=="document"||b.containment=="window")this.containment=[b.containment=="document"?0:a(window).scrollLeft()-this.offset.relative.left-this.offset.parent.left,b.containment=="document"?0:a(window).scrollTop()-this.offset.relative.top-this.offset.parent.top,(b.containment=="document"?0:a(window).scrollLeft())+a(b.containment=="document"?document:window).width()-this.helperProportions.width-this.margins.left,(b.containment=="document"?0:a(window).scrollTop())+(a(b.containment=="document"?document:window).height()||document.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top];if(!/^(document|window|parent)$/.test(b.containment)&&b.containment.constructor!=Array){var c=a(b.containment),d=c[0];if(!d)return;var e=c.offset(),f=a(d).css("overflow")!="hidden";this.containment=[(parseInt(a(d).css("borderLeftWidth"),10)||0)+(parseInt(a(d).css("paddingLeft"),10)||0),(parseInt(a(d).css("borderTopWidth"),10)||0)+(parseInt(a(d).css("paddingTop"),10)||0),(f?Math.max(d.scrollWidth,d.offsetWidth):d.offsetWidth)-(parseInt(a(d).css("borderLeftWidth"),10)||0)-(parseInt(a(d).css("paddingRight"),10)||0)-this.helperProportions.width-this.margins.left-this.margins.right,(f?Math.max(d.scrollHeight,d.offsetHeight):d.offsetHeight)-(parseInt(a(d).css("borderTopWidth"),10)||0)-(parseInt(a(d).css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top-this.margins.bottom],this.relative_container=c}else b.containment.constructor==Array&&(this.containment=b.containment)},_convertPositionTo:function(b,c){c||(c=this.position);var d=b=="absolute"?1:-1,e=this.options,f=this.cssPosition=="absolute"&&(this.scrollParent[0]==document||!a.ui.contains(this.scrollParent[0],this.offsetParent[0]))?this.offsetParent:this.scrollParent,g=/(html|body)/i.test(f[0].tagName);return{top:c.top+this.offset.relative.top*d+this.offset.parent.top*d-(a.browser.safari&&a.browser.version<526&&this.cssPosition=="fixed"?0:(this.cssPosition=="fixed"?-this.scrollParent.scrollTop():g?0:f.scrollTop())*d),left:c.left+this.offset.relative.left*d+this.offset.parent.left*d-(a.browser.safari&&a.browser.version<526&&this.cssPosition=="fixed"?0:(this.cssPosition=="fixed"?-this.scrollParent.scrollLeft():g?0:f.scrollLeft())*d)}},_generatePosition:function(b){var c=this.options,d=this.cssPosition=="absolute"&&(this.scrollParent[0]==document||!a.ui.contains(this.scrollParent[0],this.offsetParent[0]))?this.offsetParent:this.scrollParent,e=/(html|body)/i.test(d[0].tagName),f=b.pageX,g=b.pageY;if(this.originalPosition){var h;if(this.containment){if(this.relative_container){var i=this.relative_container.offset();h=[this.containment[0]+i.left,this.containment[1]+i.top,this.containment[2]+i.left,this.containment[3]+i.top]}else h=this.containment;b.pageX-this.offset.click.lefth[2]&&(f=h[2]+this.offset.click.left),b.pageY-this.offset.click.top>h[3]&&(g=h[3]+this.offset.click.top)}if(c.grid){var j=c.grid[1]?this.originalPageY+Math.round((g-this.originalPageY)/c.grid[1])*c.grid[1]:this.originalPageY;g=h?j-this.offset.click.toph[3]?j-this.offset.click.toph[2]?k-this.offset.click.left=0;k--){var l=d.snapElements[k].left,m=l+d.snapElements[k].width,n=d.snapElements[k].top,o=n+d.snapElements[k].height;if(!(l-f=k&&g<=l||h>=k&&h<=l||gl)&&(e>=i&&e<=j||f>=i&&f<=j||ej);default:return!1}},a.ui.ddmanager={current:null,droppables:{"default":[]},prepareOffsets:function(b,c){var d=a.ui.ddmanager.droppables[b.options.scope]||[],e=c?c.type:null,f=(b.currentItem||b.element).find(":data(droppable)").andSelf();droppablesLoop:for(var g=0;g
            ').css({position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")})),this.element=this.element.parent().data("resizable",this.element.data("resizable")),this.elementIsWrapper=!0,this.element.css({marginLeft:this.originalElement.css("marginLeft"),marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom")}),this.originalElement.css({marginLeft:0,marginTop:0,marginRight:0,marginBottom:0}),this.originalResizeStyle=this.originalElement.css("resize"),this.originalElement.css("resize","none"),this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"})),this.originalElement.css({margin:this.originalElement.css("margin")}),this._proportionallyResize()),this.handles=c.handles||(a(".ui-resizable-handle",this.element).length?{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"}:"e,s,se");if(this.handles.constructor==String){this.handles=="all"&&(this.handles="n,e,s,w,se,sw,ne,nw");var d=this.handles.split(",");this.handles={};for(var e=0;e');/sw|se|ne|nw/.test(f)&&h.css({zIndex:++c.zIndex}),"se"==f&&h.addClass("ui-icon ui-icon-gripsmall-diagonal-se"),this.handles[f]=".ui-resizable-"+f,this.element.append(h)}}this._renderAxis=function(b){b=b||this.element;for(var c in this.handles){this.handles[c].constructor==String&&(this.handles[c]=a(this.handles[c],this.element).show());if(this.elementIsWrapper&&this.originalElement[0].nodeName.match(/textarea|input|select|button/i)){var d=a(this.handles[c],this.element),e=0;e=/sw|ne|nw|se|n|s/.test(c)?d.outerHeight():d.outerWidth();var f=["padding",/ne|nw|n/.test(c)?"Top":/se|sw|s/.test(c)?"Bottom":/^e$/.test(c)?"Right":"Left"].join("");b.css(f,e),this._proportionallyResize()}if(!a(this.handles[c]).length)continue}},this._renderAxis(this.element),this._handles=a(".ui-resizable-handle",this.element).disableSelection(),this._handles.mouseover(function(){if(!b.resizing){if(this.className)var a=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i);b.axis=a&&a[1]?a[1]:"se"}}),c.autoHide&&(this._handles.hide(),a(this.element).addClass("ui-resizable-autohide").hover(function(){c.disabled||(a(this).removeClass("ui-resizable-autohide"),b._handles.show())},function(){c.disabled||b.resizing||(a(this).addClass("ui-resizable-autohide"),b._handles.hide())})),this._mouseInit()},destroy:function(){this._mouseDestroy();var b=function(b){a(b).removeClass("ui-resizable ui-resizable-disabled ui-resizable-resizing").removeData("resizable").unbind(".resizable").find(".ui-resizable-handle").remove()};if(this.elementIsWrapper){b(this.element);var c=this.element;c.after(this.originalElement.css({position:c.css("position"),width:c.outerWidth(),height:c.outerHeight(),top:c.css("top"),left:c.css("left")})).remove()}this.originalElement.css("resize",this.originalResizeStyle),b(this.originalElement);return this},_mouseCapture:function(b){var c=!1;for(var d in this.handles)a(this.handles[d])[0]==b.target&&(c=!0);return!this.options.disabled&&c},_mouseStart:function(b){var d=this.options,e=this.element.position(),f=this.element;this.resizing=!0,this.documentScroll={top:a(document).scrollTop(),left:a(document).scrollLeft()},(f.is(".ui-draggable")||/absolute/.test(f.css("position")))&&f.css({position:"absolute",top:e.top,left:e.left}),this._renderProxy();var g=c(this.helper.css("left")),h=c(this.helper.css("top"));d.containment&&(g+=a(d.containment).scrollLeft()||0,h+=a(d.containment).scrollTop()||0),this.offset=this.helper.offset(),this.position={left:g,top:h},this.size=this._helper?{width:f.outerWidth(),height:f.outerHeight()}:{width:f.width(),height:f.height()},this.originalSize=this._helper?{width:f.outerWidth(),height:f.outerHeight()}:{width:f.width(),height:f.height()},this.originalPosition={left:g,top:h},this.sizeDiff={width:f.outerWidth()-f.width(),height:f.outerHeight()-f.height()},this.originalMousePosition={left:b.pageX,top:b.pageY},this.aspectRatio=typeof d.aspectRatio=="number"?d.aspectRatio:this.originalSize.width/this.originalSize.height||1;var i=a(".ui-resizable-"+this.axis).css("cursor");a("body").css("cursor",i=="auto"?this.axis+"-resize":i),f.addClass("ui-resizable-resizing"),this._propagate("start",b);return!0},_mouseDrag:function(b){var c=this.helper,d=this.options,e={},f=this,g=this.originalMousePosition,h=this.axis,i=b.pageX-g.left||0,j=b.pageY-g.top||0,k=this._change[h];if(!k)return!1;var l=k.apply(this,[b,i,j]),m=a.browser.msie&&a.browser.version<7,n=this.sizeDiff;this._updateVirtualBoundaries(b.shiftKey);if(this._aspectRatio||b.shiftKey)l=this._updateRatio(l,b);l=this._respectSize(l,b),this._propagate("resize",b),c.css({top:this.position.top+"px",left:this.position.left+"px",width:this.size.width+"px",height:this.size.height+"px"}),!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize(),this._updateCache(l),this._trigger("resize",b,this.ui());return!1},_mouseStop:function(b){this.resizing=!1;var c=this.options,d=this;if(this._helper){var e=this._proportionallyResizeElements,f=e.length&&/textarea/i.test(e[0].nodeName),g=f&&a.ui.hasScroll(e[0],"left")?0:d.sizeDiff.height,h=f?0:d.sizeDiff.width,i={width:d.helper.width()-h,height:d.helper.height()-g},j=parseInt(d.element.css("left"),10)+(d.position.left-d.originalPosition.left)||null,k=parseInt(d.element.css("top"),10)+(d.position.top-d.originalPosition.top)||null;c.animate||this.element.css(a.extend(i,{top:k,left:j})),d.helper.height(d.size.height),d.helper.width(d.size.width),this._helper&&!c.animate&&this._proportionallyResize()}a("body").css("cursor","auto"),this.element.removeClass("ui-resizable-resizing"),this._propagate("stop",b),this._helper&&this.helper.remove();return!1},_updateVirtualBoundaries:function(a){var b=this.options,c,e,f,g,h;h={minWidth:d(b.minWidth)?b.minWidth:0,maxWidth:d(b.maxWidth)?b.maxWidth:Infinity,minHeight:d(b.minHeight)?b.minHeight:0,maxHeight:d(b.maxHeight)?b.maxHeight:Infinity};if(this._aspectRatio||a)c=h.minHeight*this.aspectRatio,f=h.minWidth/this.aspectRatio,e=h.maxHeight*this.aspectRatio,g=h.maxWidth/this.aspectRatio,c>h.minWidth&&(h.minWidth=c),f>h.minHeight&&(h.minHeight=f),ea.width,k=d(a.height)&&e.minHeight&&e.minHeight>a.height;j&&(a.width=e.minWidth),k&&(a.height=e.minHeight),h&&(a.width=e.maxWidth),i&&(a.height=e.maxHeight);var l=this.originalPosition.left+this.originalSize.width,m=this.position.top+this.size.height,n=/sw|nw|w/.test(g),o=/nw|ne|n/.test(g);j&&n&&(a.left=l-e.minWidth),h&&n&&(a.left=l-e.maxWidth),k&&o&&(a.top=m-e.minHeight),i&&o&&(a.top=m-e.maxHeight);var p=!a.width&&!a.height;p&&!a.left&&a.top?a.top=null:p&&!a.top&&a.left&&(a.left=null);return a},_proportionallyResize:function(){var b=this.options;if(!!this._proportionallyResizeElements.length){var c=this.helper||this.element;for(var d=0;d');var d=a.browser.msie&&a.browser.version<7,e=d?1:0,f=d?2:-1;this.helper.addClass(this._helper).css({width:this.element.outerWidth()+f,height:this.element.outerHeight()+f,position:"absolute",left:this.elementOffset.left-e+"px",top:this.elementOffset.top-e+"px",zIndex:++c.zIndex}),this.helper.appendTo("body").disableSelection()}else this.helper=this.element},_change:{e:function(a,b,c){return{width:this.originalSize.width+b}},w:function(a,b,c){var d=this.options,e=this.originalSize,f=this.originalPosition;return{left:f.left+b,width:e.width-b}},n:function(a,b,c){var d=this.options,e=this.originalSize,f=this.originalPosition;return{top:f.top+c,height:e.height-c}},s:function(a,b,c){return{height:this.originalSize.height+c}},se:function(b,c,d){return a.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[b,c,d]))},sw:function(b,c,d){return a.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[b,c,d]))},ne:function(b,c,d){return a.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[b,c,d]))},nw:function(b,c,d){return a.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[b,c,d]))}},_propagate:function(b,c){a.ui.plugin.call(this,b,[c,this.ui()]),b!="resize"&&this._trigger(b,c,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}}),a.extend(a.ui.resizable,{version:"1.8.18"}),a.ui.plugin.add("resizable","alsoResize",{start:function(b,c){var d=a(this).data("resizable"),e=d.options,f=function(b){a(b).each(function(){var b=a(this);b.data("resizable-alsoresize",{width:parseInt(b.width(),10),height:parseInt(b.height(),10),left:parseInt(b.css("left"),10),top:parseInt(b.css("top"),10)})})};typeof e.alsoResize=="object"&&!e.alsoResize.parentNode?e.alsoResize.length?(e.alsoResize=e.alsoResize[0],f(e.alsoResize)):a.each(e.alsoResize,function(a){f(a)}):f(e.alsoResize)},resize:function(b,c){var d=a(this).data("resizable"),e=d.options,f=d.originalSize,g=d.originalPosition,h={height:d.size.height-f.height||0,width:d.size.width-f.width||0,top:d.position.top-g.top||0,left:d.position.left-g.left||0},i=function(b,d){a(b).each(function(){var b=a(this),e=a(this).data("resizable-alsoresize"),f={},g=d&&d.length?d:b.parents(c.originalElement[0]).length?["width","height"]:["width","height","top","left"];a.each(g,function(a,b){var c=(e[b]||0)+(h[b]||0);c&&c>=0&&(f[b]=c||null)}),b.css(f)})};typeof e.alsoResize=="object"&&!e.alsoResize.nodeType?a.each(e.alsoResize,function(a,b){i(a,b)}):i(e.alsoResize)},stop:function(b,c){a(this).removeData("resizable-alsoresize")}}),a.ui.plugin.add("resizable","animate",{stop:function(b,c){var d=a(this).data("resizable"),e=d.options,f=d._proportionallyResizeElements,g=f.length&&/textarea/i.test(f[0].nodeName),h=g&&a.ui.hasScroll(f[0],"left")?0:d.sizeDiff.height,i=g?0:d.sizeDiff.width,j={width:d.size.width-i,height:d.size.height-h},k=parseInt(d.element.css("left"),10)+(d.position.left-d.originalPosition.left)||null,l=parseInt(d.element.css("top"),10)+(d.position.top-d.originalPosition.top)||null;d.element.animate(a.extend(j,l&&k?{top:l,left:k}:{}),{duration:e.animateDuration,easing:e.animateEasing,step:function(){var c={width:parseInt(d.element.css("width"),10),height:parseInt(d.element.css("height"),10),top:parseInt(d.element.css("top"),10),left:parseInt(d.element.css("left"),10)};f&&f.length&&a(f[0]).css({width:c.width,height:c.height}),d._updateCache(c),d._propagate("resize",b)}})}}),a.ui.plugin.add("resizable","containment",{start:function(b,d){var e=a(this).data("resizable"),f=e.options,g=e.element,h=f.containment,i=h instanceof a?h.get(0):/parent/.test(h)?g.parent().get(0):h;if(!!i){e.containerElement=a(i);if(/document/.test(h)||h==document)e.containerOffset={left:0,top:0},e.containerPosition={left:0,top:0},e.parentData={element:a(document),left:0,top:0,width:a(document).width(),height:a(document).height()||document.body.parentNode.scrollHeight};else{var j=a(i),k=[];a(["Top","Right","Left","Bottom"]).each(function(a,b){k[a]=c(j.css("padding"+b))}),e.containerOffset=j.offset(),e.containerPosition=j.position(),e.containerSize={height:j.innerHeight()-k[3],width:j.innerWidth()-k[1]};var l=e.containerOffset,m=e.containerSize.height,n=e.containerSize.width,o=a.ui.hasScroll(i,"left")?i.scrollWidth:n,p=a.ui.hasScroll(i)?i.scrollHeight:m;e.parentData={element:i,left:l.left,top:l.top,width:o,height:p}}}},resize:function(b,c){var d=a(this).data("resizable"),e=d.options,f=d.containerSize,g=d.containerOffset,h=d.size,i=d.position,j=d._aspectRatio||b.shiftKey,k={top:0,left:0},l=d.containerElement;l[0]!=document&&/static/.test(l.css("position"))&&(k=g),i.left<(d._helper?g.left:0)&&(d.size.width=d.size.width+(d._helper?d.position.left-g.left:d.position.left-k.left),j&&(d.size.height=d.size.width/e.aspectRatio),d.position.left=e.helper?g.left:0),i.top<(d._helper?g.top:0)&&(d.size.height=d.size.height+(d._helper?d.position.top-g.top:d.position.top),j&&(d.size.width=d.size.height*e.aspectRatio),d.position.top=d._helper?g.top:0),d.offset.left=d.parentData.left+d.position.left,d.offset.top=d.parentData.top+d.position.top;var m=Math.abs((d._helper?d.offset.left-k.left:d.offset.left-k.left)+d.sizeDiff.width),n=Math.abs((d._helper?d.offset.top-k.top:d.offset.top-g.top)+d.sizeDiff.height),o=d.containerElement.get(0)==d.element.parent().get(0),p=/relative|absolute/.test(d.containerElement.css("position"));o&&p&&(m-=d.parentData.left),m+d.size.width>=d.parentData.width&&(d.size.width=d.parentData.width-m,j&&(d.size.height=d.size.width/d.aspectRatio)),n+d.size.height>=d.parentData.height&&(d.size.height=d.parentData.height-n,j&&(d.size.width=d.size.height*d.aspectRatio))},stop:function(b,c){var d=a(this).data("resizable"),e=d.options,f=d.position,g=d.containerOffset,h=d.containerPosition,i=d.containerElement,j=a(d.helper),k=j.offset(),l=j.outerWidth()-d.sizeDiff.width,m=j.outerHeight()-d.sizeDiff.height;d._helper&&!e.animate&&/relative/.test(i.css("position"))&&a(this).css({left:k.left-h.left-g.left,width:l,height:m}),d._helper&&!e.animate&&/static/.test(i.css("position"))&&a(this).css({left:k.left-h.left-g.left,width:l,height:m})}}),a.ui.plugin.add("resizable","ghost",{start:function(b,c){var d=a(this).data("resizable"),e=d.options,f=d.size;d.ghost=d.originalElement.clone(),d.ghost.css({opacity:.25,display:"block",position:"relative",height:f.height,width:f.width,margin:0,left:0,top:0}).addClass("ui-resizable-ghost").addClass(typeof e.ghost=="string"?e.ghost:""),d.ghost.appendTo(d.helper)},resize:function(b,c){var d=a(this).data("resizable"),e=d.options;d.ghost&&d.ghost.css({position:"relative",height:d.size.height,width:d.size.width})},stop:function(b,c){var d=a(this).data("resizable"),e=d.options;d.ghost&&d.helper&&d.helper.get(0).removeChild(d.ghost.get(0))}}),a.ui.plugin.add("resizable","grid",{resize:function(b,c){var d=a(this).data("resizable"),e=d.options,f=d.size,g=d.originalSize,h=d.originalPosition,i=d.axis,j=e._aspectRatio||b.shiftKey;e.grid=typeof e.grid=="number"?[e.grid,e.grid]:e.grid;var k=Math.round((f.width-g.width)/(e.grid[0]||1))*(e.grid[0]||1),l=Math.round((f.height-g.height)/(e.grid[1]||1))*(e.grid[1]||1);/^(se|s|e)$/.test(i)?(d.size.width=g.width+k,d.size.height=g.height+l):/^(ne)$/.test(i)?(d.size.width=g.width+k,d.size.height=g.height+l,d.position.top=h.top-l):/^(sw)$/.test(i)?(d.size.width=g.width+k,d.size.height=g.height+l,d.position.left=h.left-k):(d.size.width=g.width+k,d.size.height=g.height+l,d.position.top=h.top-l,d.position.left=h.left-k)}});var c=function(a){return parseInt(a,10)||0},d=function(a){return!isNaN(parseInt(a,10))}})(jQuery);/* - * jQuery UI Selectable 1.8.18 - * - * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Selectables - * - * Depends: - * jquery.ui.core.js - * jquery.ui.mouse.js - * jquery.ui.widget.js - */(function(a,b){a.widget("ui.selectable",a.ui.mouse,{options:{appendTo:"body",autoRefresh:!0,distance:0,filter:"*",tolerance:"touch"},_create:function(){var b=this;this.element.addClass("ui-selectable"),this.dragged=!1;var c;this.refresh=function(){c=a(b.options.filter,b.element[0]),c.addClass("ui-selectee"),c.each(function(){var b=a(this),c=b.offset();a.data(this,"selectable-item",{element:this,$element:b,left:c.left,top:c.top,right:c.left+b.outerWidth(),bottom:c.top+b.outerHeight(),startselected:!1,selected:b.hasClass("ui-selected"),selecting:b.hasClass("ui-selecting"),unselecting:b.hasClass("ui-unselecting")})})},this.refresh(),this.selectees=c.addClass("ui-selectee"),this._mouseInit(),this.helper=a("
            ")},destroy:function(){this.selectees.removeClass("ui-selectee").removeData("selectable-item"),this.element.removeClass("ui-selectable ui-selectable-disabled").removeData("selectable").unbind(".selectable"),this._mouseDestroy();return this},_mouseStart:function(b){var c=this;this.opos=[b.pageX,b.pageY];if(!this.options.disabled){var d=this.options;this.selectees=a(d.filter,this.element[0]),this._trigger("start",b),a(d.appendTo).append(this.helper),this.helper.css({left:b.clientX,top:b.clientY,width:0,height:0}),d.autoRefresh&&this.refresh(),this.selectees.filter(".ui-selected").each(function(){var d=a.data(this,"selectable-item");d.startselected=!0,!b.metaKey&&!b.ctrlKey&&(d.$element.removeClass("ui-selected"),d.selected=!1,d.$element.addClass("ui-unselecting"),d.unselecting=!0,c._trigger("unselecting",b,{unselecting:d.element}))}),a(b.target).parents().andSelf().each(function(){var d=a.data(this,"selectable-item");if(d){var e=!b.metaKey&&!b.ctrlKey||!d.$element.hasClass("ui-selected");d.$element.removeClass(e?"ui-unselecting":"ui-selected").addClass(e?"ui-selecting":"ui-unselecting"),d.unselecting=!e,d.selecting=e,d.selected=e,e?c._trigger("selecting",b,{selecting:d.element}):c._trigger("unselecting",b,{unselecting:d.element});return!1}})}},_mouseDrag:function(b){var c=this;this.dragged=!0;if(!this.options.disabled){var d=this.options,e=this.opos[0],f=this.opos[1],g=b.pageX,h=b.pageY;if(e>g){var i=g;g=e,e=i}if(f>h){var i=h;h=f,f=i}this.helper.css({left:e,top:f,width:g-e,height:h-f}),this.selectees.each(function(){var i=a.data(this,"selectable-item");if(!!i&&i.element!=c.element[0]){var j=!1;d.tolerance=="touch"?j=!(i.left>g||i.righth||i.bottome&&i.rightf&&i.bottom *",opacity:!1,placeholder:!1,revert:!1,scroll:!0,scrollSensitivity:20,scrollSpeed:20,scope:"default",tolerance:"intersect",zIndex:1e3},_create:function(){var a=this.options;this.containerCache={},this.element.addClass("ui-sortable"),this.refresh(),this.floating=this.items.length?a.axis==="x"||/left|right/.test(this.items[0].item.css("float"))||/inline|table-cell/.test(this.items[0].item.css("display")):!1,this.offset=this.element.offset(),this._mouseInit(),this.ready=!0},destroy:function(){a.Widget.prototype.destroy.call(this),this.element.removeClass("ui-sortable ui-sortable-disabled"),this._mouseDestroy();for(var b=this.items.length-1;b>=0;b--)this.items[b].item.removeData(this.widgetName+"-item");return this},_setOption:function(b,c){b==="disabled"?(this.options[b]=c,this.widget()[c?"addClass":"removeClass"]("ui-sortable-disabled")):a.Widget.prototype._setOption.apply(this,arguments)},_mouseCapture:function(b,c){var d=this;if(this.reverting)return!1;if(this.options.disabled||this.options.type=="static")return!1;this._refreshItems(b);var e=null,f=this,g=a(b.target).parents().each(function(){if(a.data(this,d.widgetName+"-item")==f){e=a(this);return!1}});a.data(b.target,d.widgetName+"-item")==f&&(e=a(b.target));if(!e)return!1;if(this.options.handle&&!c){var h=!1;a(this.options.handle,e).find("*").andSelf().each(function(){this==b.target&&(h=!0)});if(!h)return!1}this.currentItem=e,this._removeCurrentsFromItems();return!0},_mouseStart:function(b,c,d){var e=this.options,f=this;this.currentContainer=this,this.refreshPositions(),this.helper=this._createHelper(b),this._cacheHelperProportions(),this._cacheMargins(),this.scrollParent=this.helper.scrollParent(),this.offset=this.currentItem.offset(),this.offset={top:this.offset.top-this.margins.top,left:this.offset.left-this.margins.left},this.helper.css("position","absolute"),this.cssPosition=this.helper.css("position"),a.extend(this.offset,{click:{left:b.pageX-this.offset.left,top:b.pageY-this.offset.top},parent:this._getParentOffset(),relative:this._getRelativeOffset()}),this.originalPosition=this._generatePosition(b),this.originalPageX=b.pageX,this.originalPageY=b.pageY,e.cursorAt&&this._adjustOffsetFromHelper(e.cursorAt),this.domPosition={prev:this.currentItem.prev()[0],parent:this.currentItem.parent()[0]},this.helper[0]!=this.currentItem[0]&&this.currentItem.hide(),this._createPlaceholder(),e.containment&&this._setContainment(),e.cursor&&(a("body").css("cursor")&&(this._storedCursor=a("body").css("cursor")),a("body").css("cursor",e.cursor)),e.opacity&&(this.helper.css("opacity")&&(this._storedOpacity=this.helper.css("opacity")),this.helper.css("opacity",e.opacity)),e.zIndex&&(this.helper.css("zIndex")&&(this._storedZIndex=this.helper.css("zIndex")),this.helper.css("zIndex",e.zIndex)),this.scrollParent[0]!=document&&this.scrollParent[0].tagName!="HTML"&&(this.overflowOffset=this.scrollParent.offset()),this._trigger("start",b,this._uiHash()),this._preserveHelperProportions||this._cacheHelperProportions();if(!d)for(var g=this.containers.length-1;g>=0;g--)this.containers[g]._trigger("activate",b,f._uiHash(this));a.ui.ddmanager&&(a.ui.ddmanager.current=this),a.ui.ddmanager&&!e.dropBehaviour&&a.ui.ddmanager.prepareOffsets(this,b),this.dragging=!0,this.helper.addClass("ui-sortable-helper"),this._mouseDrag(b);return!0},_mouseDrag:function(b){this.position=this._generatePosition(b),this.positionAbs=this._convertPositionTo("absolute"),this.lastPositionAbs||(this.lastPositionAbs=this.positionAbs);if(this.options.scroll){var c=this.options,d=!1;this.scrollParent[0]!=document&&this.scrollParent[0].tagName!="HTML"?(this.overflowOffset.top+this.scrollParent[0].offsetHeight-b.pageY=0;e--){var f=this.items[e],g=f.item[0],h=this._intersectsWithPointer(f);if(!h)continue;if(g!=this.currentItem[0]&&this.placeholder[h==1?"next":"prev"]()[0]!=g&&!a.ui.contains(this.placeholder[0],g)&&(this.options.type=="semi-dynamic"?!a.ui.contains(this.element[0],g):!0)){this.direction=h==1?"down":"up";if(this.options.tolerance=="pointer"||this._intersectsWithSides(f))this._rearrange(b,f);else break;this._trigger("change",b,this._uiHash());break}}this._contactContainers(b),a.ui.ddmanager&&a.ui.ddmanager.drag(this,b),this._trigger("sort",b,this._uiHash()),this.lastPositionAbs=this.positionAbs;return!1},_mouseStop:function(b,c){if(!!b){a.ui.ddmanager&&!this.options.dropBehaviour&&a.ui.ddmanager.drop(this,b);if(this.options.revert){var d=this,e=d.placeholder.offset();d.reverting=!0,a(this.helper).animate({left:e.left-this.offset.parent.left-d.margins.left+(this.offsetParent[0]==document.body?0:this.offsetParent[0].scrollLeft),top:e.top-this.offset.parent.top-d.margins.top+(this.offsetParent[0]==document.body?0:this.offsetParent[0].scrollTop)},parseInt(this.options.revert,10)||500,function(){d._clear(b)})}else this._clear(b,c);return!1}},cancel:function(){var b=this;if(this.dragging){this._mouseUp({target:null}),this.options.helper=="original"?this.currentItem.css(this._storedCSS).removeClass("ui-sortable-helper"):this.currentItem.show();for(var c=this.containers.length-1;c>=0;c--)this.containers[c]._trigger("deactivate",null,b._uiHash(this)),this.containers[c].containerCache.over&&(this.containers[c]._trigger("out",null,b._uiHash(this)),this.containers[c].containerCache.over=0)}this.placeholder&&(this.placeholder[0].parentNode&&this.placeholder[0].parentNode.removeChild(this.placeholder[0]),this.options.helper!="original"&&this.helper&&this.helper[0].parentNode&&this.helper.remove(),a.extend(this,{helper:null,dragging:!1,reverting:!1,_noFinalSort:null}),this.domPosition.prev?a(this.domPosition.prev).after(this.currentItem):a(this.domPosition.parent).prepend(this.currentItem));return this},serialize:function(b){var c=this._getItemsAsjQuery(b&&b.connected),d=[];b=b||{},a(c).each(function(){var c=(a(b.item||this).attr(b.attribute||"id")||"").match(b.expression||/(.+)[-=_](.+)/);c&&d.push((b.key||c[1]+"[]")+"="+(b.key&&b.expression?c[1]:c[2]))}),!d.length&&b.key&&d.push(b.key+"=");return d.join("&")},toArray:function(b){var c=this._getItemsAsjQuery(b&&b.connected),d=[];b=b||{},c.each(function(){d.push(a(b.item||this).attr(b.attribute||"id")||"")});return d},_intersectsWith:function(a){var b=this.positionAbs.left,c=b+this.helperProportions.width,d=this.positionAbs.top,e=d+this.helperProportions.height,f=a.left,g=f+a.width,h=a.top,i=h+a.height,j=this.offset.click.top,k=this.offset.click.left,l=d+j>h&&d+jf&&b+ka[this.floating?"width":"height"]?l:f0?"down":"up")},_getDragHorizontalDirection:function(){var a=this.positionAbs.left-this.lastPositionAbs.left;return a!=0&&(a>0?"right":"left")},refresh:function(a){this._refreshItems(a),this.refreshPositions();return this},_connectWith:function(){var a=this.options;return a.connectWith.constructor==String?[a.connectWith]:a.connectWith},_getItemsAsjQuery:function(b){var c=this,d=[],e=[],f=this._connectWith();if(f&&b)for(var g=f.length-1;g>=0;g--){var h=a(f[g]);for(var i=h.length-1;i>=0;i--){var j=a.data(h[i],this.widgetName);j&&j!=this&&!j.options.disabled&&e.push([a.isFunction(j.options.items)?j.options.items.call(j.element):a(j.options.items,j.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"),j])}}e.push([a.isFunction(this.options.items)?this.options.items.call(this.element,null,{options:this.options,item:this.currentItem}):a(this.options.items,this.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"),this]);for(var g=e.length-1;g>=0;g--)e[g][0].each(function(){d.push(this)});return a(d)},_removeCurrentsFromItems:function(){var a=this.currentItem.find(":data("+this.widgetName+"-item)");for(var b=0;b=0;g--){var h=a(f[g]);for(var i=h.length-1;i>=0;i--){var j=a.data(h[i],this.widgetName);j&&j!=this&&!j.options.disabled&&(e.push([a.isFunction(j.options.items)?j.options.items.call(j.element[0],b,{item:this.currentItem}):a(j.options.items,j.element),j]),this.containers.push(j))}}for(var g=e.length-1;g>=0;g--){var k=e[g][1],l=e[g][0];for(var i=0,m=l.length;i=0;c--){var d=this.items[c];if(d.instance!=this.currentContainer&&this.currentContainer&&d.item[0]!=this.currentItem[0])continue;var e=this.options.toleranceElement?a(this.options.toleranceElement,d.item):d.item;b||(d.width=e.outerWidth(),d.height=e.outerHeight());var f=e.offset();d.left=f.left,d.top=f.top}if(this.options.custom&&this.options.custom.refreshContainers)this.options.custom.refreshContainers.call(this);else for(var c=this.containers.length-1;c>=0;c--){var f=this.containers[c].element.offset();this.containers[c].containerCache.left=f.left,this.containers[c].containerCache.top=f.top,this.containers[c].containerCache.width=this.containers[c].element.outerWidth(),this.containers[c].containerCache.height=this.containers[c].element.outerHeight()}return this},_createPlaceholder:function(b){var c=b||this,d=c.options;if(!d.placeholder||d.placeholder.constructor==String){var e=d.placeholder;d.placeholder={element:function(){var b=a(document.createElement(c.currentItem[0].nodeName)).addClass(e||c.currentItem[0].className+" ui-sortable-placeholder").removeClass("ui-sortable-helper")[0];e||(b.style.visibility="hidden");return b},update:function(a,b){if(!e||!!d.forcePlaceholderSize)b.height()||b.height(c.currentItem.innerHeight()-parseInt(c.currentItem.css("paddingTop")||0,10)-parseInt(c.currentItem.css("paddingBottom")||0,10)),b.width()||b.width(c.currentItem.innerWidth()-parseInt(c.currentItem.css("paddingLeft")||0,10)-parseInt(c.currentItem.css("paddingRight")||0,10))}}}c.placeholder=a(d.placeholder.element.call(c.element,c.currentItem)),c.currentItem.after(c.placeholder),d.placeholder.update(c,c.placeholder)},_contactContainers:function(b){var c=null,d=null;for(var e=this.containers.length-1;e>=0;e--){if(a.ui.contains(this.currentItem[0],this.containers[e].element[0]))continue;if(this._intersectsWith(this.containers[e].containerCache)){if(c&&a.ui.contains(this.containers[e].element[0],c.element[0]))continue;c=this.containers[e],d=e}else this.containers[e].containerCache.over&&(this.containers[e]._trigger("out",b,this._uiHash(this)),this.containers[e].containerCache.over=0)}if(!!c)if(this.containers.length===1)this.containers[d]._trigger("over",b,this._uiHash(this)),this.containers[d].containerCache.over=1;else if(this.currentContainer!=this.containers[d]){var f=1e4,g=null,h=this.positionAbs[this.containers[d].floating?"left":"top"];for(var i=this.items.length-1;i>=0;i--){if(!a.ui.contains(this.containers[d].element[0],this.items[i].item[0]))continue;var j=this.items[i][this.containers[d].floating?"left":"top"];Math.abs(j-h)this.containment[2]&&(f=this.containment[2]+this.offset.click.left),b.pageY-this.offset.click.top>this.containment[3]&&(g=this.containment[3]+this.offset.click.top));if(c.grid){var h=this.originalPageY+Math.round((g-this.originalPageY)/c.grid[1])*c.grid[1];g=this.containment?h-this.offset.click.topthis.containment[3]?h-this.offset.click.topthis.containment[2]?i-this.offset.click.left=0;f--)a.ui.contains(this.containers[f].element[0],this.currentItem[0])&&!c&&(d.push(function(a){return function(b){a._trigger("receive",b,this._uiHash(this))}}.call(this,this.containers[f])),d.push(function(a){return function(b){a._trigger("update",b,this._uiHash(this))}}.call(this,this.containers[f])))}for(var f=this.containers.length-1;f>=0;f--)c||d.push(function(a){return function(b){a._trigger("deactivate",b,this._uiHash(this))}}.call(this,this.containers[f])),this.containers[f].containerCache.over&&(d.push(function(a){return function(b){a._trigger("out",b,this._uiHash(this))}}.call(this,this.containers[f])),this.containers[f].containerCache.over=0);this._storedCursor&&a("body").css("cursor",this._storedCursor),this._storedOpacity&&this.helper.css("opacity",this._storedOpacity),this._storedZIndex&&this.helper.css("zIndex",this._storedZIndex=="auto"?"":this._storedZIndex),this.dragging=!1;if(this.cancelHelperRemoval){if(!c){this._trigger("beforeStop",b,this._uiHash());for(var f=0;f 255)){ - intLength=intLength+2; - }else{ - intLength=intLength+1; - } - } - return intLength - }, - //加载进度条 - progressBar:function(){ - $("
            正在加载,请稍等O(∩_∩)O哈!
            ").appendTo('body'); - var w=$(window).width(),h=$(window).height(); - $('#myCover').css({'width':'100%','height':h,'position':'absolute','background':'#fff','z-index':9999,'left':0,'top':0}).fadeTo('slow',0.8); - $('#loadimg').css({'position':'absolute','background':'url(themes/default/images/loading.gif) no-repeat center center','z-index':10000,'width':'110px','height':'64px','left':(w-110)/2,'top':((h-64)/2)-50}).find('span').css({'position':'absolute','left':0,'bottom':'-40px','width':110,'display':'block','height':40,'text-align':'center'}); - }, - //停止进度条 - stopProgress:function(){ - $('#myCover').remove(); - $('#loadimg').remove(); - }, - getImgWh:function(url, callback) { - var width, height, intervalId, check, div, img = new Image(), - body = document.body; - img.src = url; - - //从缓存中读取 - if (img.complete) { - return callback(img.width, img.height); - }; - - //通过占位提前获取图片头部数据 - if (body) { - div = document.createElement('div'); - div.style.cssText = 'visibility:hidden;position:absolute;left:0;top:0;width:1px;height:1px;overflow:hidden'; - div.appendChild(img) - body.appendChild(div); - width = img.offsetWidth; - height = img.offsetHeight; - check = function() { - if (img.offsetWidth !== width || img.offsetHeight !== height) { - clearInterval(intervalId); - callback(img.offsetWidth, img.clientHeight); - img.onload = null; - div.innerHTML = ''; - div.parentNode.removeChild(div); - }; - }; - intervalId = setInterval(check, 150); - }; - // 加载完毕后方式获取 - img.onload = function() { - callback(img.width, img.height); - img.onload = img.onerror = null; - clearInterval(intervalId); - body && img.parentNode.removeChild(img); - }; - }, - //全屏 - fullscreen:function(){ - var docElm = document.documentElement; - if (docElm.requestFullscreen) { - docElm.requestFullscreen(); - } - else if (docElm.mozRequestFullScreen) { - docElm.mozRequestFullScreen(); - } - else if (docElm.webkitRequestFullScreen) { - docElm.webkitRequestFullScreen(); - } - }, - //退出全屏 - exitFullscreen:function(){ - if (document.exitFullscreen) { - document.exitFullscreen(); - } - else if (document.mozCancelFullScreen) { - document.mozCancelFullScreen(); - } - else if (document.webkitCancelFullScreen) { - document.webkitCancelFullScreen(); - } - }, - //IE全屏 - fullscreenIE:function(){ - if($.browser.msie){ - var wsh = new ActiveXObject("WScript.Shell"); - wsh.sendKeys("{F11}"); - } - } - } - -/*------------------------------------------ - *jquery扩展,加载技术文件和css文件 --------------------------------------------*/ -$.extend({ - includePath: '', - include: function(file) - { - var files = typeof file == "string" ? [file] : file; - for (var i = 0; i < files.length; i++) - { - var name = files[i].replace(/^\s|\s$/g, ""); - var att = name.split('.'); - var ext = att[att.length - 1].toLowerCase(); - var isCSS = ext == "css"; - var tag = isCSS ? "link" : "script"; - var attr = isCSS ? " type='text/css' rel='stylesheet' " : " language='javascript' type='text/javascript' "; - var link = (isCSS ? "href" : "src") + "='" + $.includePath + name + "'"; - if ($(tag + "[" + link + "]").length == 0) document.write("<" + tag + attr + link + ">"); - } - } -}); \ No newline at end of file diff --git a/src/main/webapp/js/wth.js b/src/main/webapp/js/wth.js deleted file mode 100644 index cabf4643..00000000 --- a/src/main/webapp/js/wth.js +++ /dev/null @@ -1,121 +0,0 @@ -// JavaScript Document -function switchTableRow(conid,evenRowClassName,hoverRowClassName) -{ - $(conid + " tr:even").addClass(evenRowClassName); - $(conid + " tr").hover(function() - { - $(this).addClass(hoverRowClassName); - }, - function() - { - $(this).removeClass(hoverRowClassName); - }); -} -function switchTableRowView(conid,evenRowClassName) -{ - $(conid + " tr:odd").addClass(evenRowClassName); -} -function selectAll(selectAll,selectName) -{ - var checkboxName = document.getElementsByName(selectName); - for (var i=0; i
            "+dT+"
            "+dData+"
            "); - $("#dialog img").css({margin:"0 5px 0 0"}); - } - else if(tipstyle == 1) - { - $("body").append("
            "+dT+"
            "+dData+"
            "); - $("#dialog img").css({margin:"0 5px 0 0"}); - } - else - { - $("body").append("
            "+dT+"
            "+dData+"
            "); - } - } - else - { - $("body").append("
            "+dT+"
            "); - } - var leftpx = (webW-dW)/2; - var toppx = (webH-dH-headH)/2; - $("#dialog").css({height:(dH)+"px",width:dW+"px",left:leftpx+"px",top:toppx+"px"}); - $("#dialogFrame").css({height:(dH-32-33)+"px",width:dW+"px",margin:"2px 0 0 0"}); - $("#dialog_bg").css({height:webSH+"px"}); - $("#dialog_btnlist").css({width:(dW-30)+"px","padding-left":"30px"}); - $(obj).blur(); - MoveWindow('dialog_title','dialog') - $("#dialog_close").click(function() - { - $("#dialog").remove(); - $("#dialog_bg").remove(); - }); - $("#dialog_btnlist").click(function() - { - $("#dialog").remove(); - $("#dialog_bg").remove(); - }); - - -} -function MoveWindow(hanldID,windowID) -{ - var posx,posy,posx1,posx1,posx2,posx2,mbx,mby; - document.getElementById(hanldID).style.cursor = "move"; - var handle = document.getElementById(hanldID); - var moveWindow = document.getElementById(windowID); - function mdown(event) - { - event = window.event || event; - posx = event.clientX; - posy = event.clientY; - mbx = event.clientX - moveWindow.offsetLeft; - mby = event.clientY - moveWindow.offsetTop; - moveWindow.onmousemove = mmove; - moveWindow.onmouseup = mup; - moveWindow.onmouseout = mout; - } - var mmove = function(event) - { - event = window.event || event; - posx1 = event.clientX; - posy1 = event.clientY; - moveWindow.style.left = posx1 - mbx + "px"; - moveWindow.style.top = posy1 - mby + "px"; - } - function mup(event) - { - event = window.event || event; - posx2 = event.clientX; - posy2 = event.clientY; - moveWindow.onmousemove = ""; - } - function mout(event) - { - event = window.event || event; - moveWindow.onmousemove = ""; - } - handle.onmousedown = mdown; -} \ No newline at end of file diff --git a/src/main/webapp/login.jsp b/src/main/webapp/login.jsp deleted file mode 100644 index 2ba2e716..00000000 --- a/src/main/webapp/login.jsp +++ /dev/null @@ -1,184 +0,0 @@ -<%@page import="com.jsh.util.Tools" %> -<%@ page language="java" pageEncoding="utf-8" %> -<% - String path = request.getContextPath(); - String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + path + "/"; - String clientIp = Tools.getLocalIp(request); -%> - - - - ERP系统 - - - - - - - - - -
            -
            -
            -

            login

            -

            - -

            -

            - -

            - - - - - -
            - -
            -
            - - - \ No newline at end of file diff --git a/src/main/webapp/logout.jsp b/src/main/webapp/logout.jsp deleted file mode 100644 index 1497cb1d..00000000 --- a/src/main/webapp/logout.jsp +++ /dev/null @@ -1,26 +0,0 @@ -<%@ page language="java" pageEncoding="utf-8" %> -<% - String path = request.getContextPath(); - String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + path + "/"; -%> - - - - - - + - - - - - - - - - -
            - diff --git a/src/main/webapp/pages/asset/asset.jsp b/src/main/webapp/pages/asset/asset.jsp deleted file mode 100644 index 2560b9a0..00000000 --- a/src/main/webapp/pages/asset/asset.jsp +++ /dev/null @@ -1,1463 +0,0 @@ -<%@page import="com.jsh.util.Tools" %> -<%@ page language="java" pageEncoding="utf-8" %> -<% - String path = request.getContextPath(); - String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + path + "/"; - String clientIp = Tools.getLocalIp(request); -%> - - - - 资产管理 - - - - - - - - - - - - - -
            - -
            - - - - - - - - - - - - - - - - - - - - - - - - - -
            资产名称: - -   资产类型: - -   用户姓名: - -
            状        态: - -   供  应  商: - -     - 查询   - 重置 -
            -
            - - -
            -
            -
            - -
            -
            - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
            资产名称: - -   增加资产 -   状        态: - -
             
            位        置: - -   用        户: - -    -
             
            订购单价: -   元 -   购买日期: - -
             
            有效日期: - -   保修日期: - -
             
            资产编号: - -   序   列   号: - -
             
            资产标签: - -   供   应   商: - -   增加供应商 -
             
            描        述: - -
            - -
            -
            - - -
            -
            -
            - - -
            -
            - - -
            -
            - - -
            -
            - - -
            - -
            -
            -
            - 保存 - 取消 -
            - - -
            -
            - -
            - - -
            -
            - - -
            -
            - - -
            -
            - - -
            -
            - - -
            - -
            -
            -
            - 保存 - 取消 -
            - -
            -
            -
            - - -
            - -
            - - -
            -
            - - -
            -
            - - -
            -
            - - -
            -
            - - -
            - -
            -
            - 保存 - 取消 -
            -
            - - -
            -
            - - -
            - -
            - - -
            - -
            - 保存 - 取消 -
            -
            - - -
            -
            -
            - - -
            - - -
            - 导入 - 取消 -
            -
            -
            - -
            -
            编辑
            -
            删除
            - -
            取消
            -
            - - - \ No newline at end of file diff --git a/src/main/webapp/pages/asset/home.jsp b/src/main/webapp/pages/asset/home.jsp deleted file mode 100644 index 5392f0e0..00000000 --- a/src/main/webapp/pages/asset/home.jsp +++ /dev/null @@ -1,87 +0,0 @@ -<%@page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8" %> -<% - String path = request.getContextPath(); - String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + path + "/"; -%> - - - - - - - - - 首页说明 - - - - - - - - - - - - - -
            -    - 资产管理 -
            -

            -      - 资产管理是记录资产明细,包括资产名称、资产类型、供应商、使用用户等信息,通过资产管理,可以记录平时资产明细,管理资产信息。资产管理包括增加,修改,删除、搜索消费信息等功能点。报表图表最多显示十条报表记录。 -

            - - \ No newline at end of file diff --git a/src/main/webapp/pages/asset/report.jsp b/src/main/webapp/pages/asset/report.jsp deleted file mode 100644 index 82d167ba..00000000 --- a/src/main/webapp/pages/asset/report.jsp +++ /dev/null @@ -1,964 +0,0 @@ -<%@page import="com.jsh.util.Tools" %> -<%@ page language="java" pageEncoding="utf-8" %> -<% - String path = request.getContextPath(); - String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + path + "/"; - String clientIp = Tools.getLocalIp(request); -%> - - - - 资产管理 - - - - - - - - - - - - - - - - -
            - -
            - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
            资产名称: - -   资产类型: - -   用户姓名: - -   状        态: - -
            供    应    商: - -   统计类型: - -   是否前十: - -     - 查询   - 重置 -
            -
            - - -<%--
            --%> -<%--
            --%> -<%--
            --%> - -
            -
            -
            -
            综合图
            -
            -
            -
            柱状图
            -
            -
            -
            饼状图
            -
            -
            -
            折现图
            -
            -
            - -
            - - - - \ No newline at end of file diff --git a/src/main/webapp/pages/common/admin.jsp b/src/main/webapp/pages/common/admin.jsp deleted file mode 100644 index 90ec374b..00000000 --- a/src/main/webapp/pages/common/admin.jsp +++ /dev/null @@ -1,24 +0,0 @@ -<%@page import="com.jsh.util.Tools" %> -<%@ page language="java" pageEncoding="utf-8" %> -<% - String path = request.getContextPath(); - String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + path + "/"; - String clientIp = Tools.getLocalIp(request); -%> - - - - ERP系统 - - - - - - - - - - - - - \ No newline at end of file diff --git a/src/main/webapp/pages/common/foot.jsp b/src/main/webapp/pages/common/foot.jsp deleted file mode 100644 index b3337b56..00000000 --- a/src/main/webapp/pages/common/foot.jsp +++ /dev/null @@ -1,19 +0,0 @@ -<%@ page language="java" pageEncoding="utf-8" %> -<% - String path = request.getContextPath(); - String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + path + "/"; -%> - - - - 资产管理 - - - - - - - - - - \ No newline at end of file diff --git a/src/main/webapp/pages/common/head.jsp b/src/main/webapp/pages/common/head.jsp deleted file mode 100644 index 9bfb5003..00000000 --- a/src/main/webapp/pages/common/head.jsp +++ /dev/null @@ -1,161 +0,0 @@ -<%@page import="com.jsh.util.Tools" %> -<%@ page language="java" pageEncoding="utf-8" %> -<% - String path = request.getContextPath(); - String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + path + "/"; - String clientIp = Tools.getLocalIp(request); -%> - - - - 资产管理 - - - - - - - - - - - - \ No newline at end of file diff --git a/src/main/webapp/pages/common/home.jsp b/src/main/webapp/pages/common/home.jsp deleted file mode 100644 index db2b8b94..00000000 --- a/src/main/webapp/pages/common/home.jsp +++ /dev/null @@ -1,728 +0,0 @@ -<%@page import="com.jsh.util.Tools" %> -<%@ page language="java" pageEncoding="utf-8" %> -<% - String path = request.getContextPath(); - String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + path + "/"; - String clientIp = Tools.getLocalIp(request); - String type = request.getParameter("type"); - String location = "首页"; - if (null != type) - location = "资产管理 >资产概况"; -%> - - - - erp - - - - - - - - - - - - - - -
            - -
            -
            -
            -
            综合图
            -
            -
            - -
            -
            -
            折现图
            -
            -
            -
            -
            -
            饼状图
            -
            -
            -
            - - -
            -
            -
            - - - - \ No newline at end of file diff --git a/src/main/webapp/pages/common/main.jsp b/src/main/webapp/pages/common/main.jsp deleted file mode 100644 index a00ad906..00000000 --- a/src/main/webapp/pages/common/main.jsp +++ /dev/null @@ -1,131 +0,0 @@ -<%@page import="com.jsh.util.Tools" %> -<%@ page language="java" pageEncoding="utf-8" %> -<% - String path = request.getContextPath(); - String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + path + "/"; - String clientIp = Tools.getLocalIp(request); -%> - - - - - ERP系统 - - - - -
            - -
            -
            -
            您正在使用的IE浏览器版本过低,
            我们建议您升级或者更换浏览器,以便体验顺畅、兼容、安全的互联网。
            -
            选择一款浏览器吧
            - - -
            -
            - -
            -
            -
            - ×
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            - - - - - ${sessionScope.user.username} - -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            -
            - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/src/main/webapp/pages/common/menu.jsp b/src/main/webapp/pages/common/menu.jsp deleted file mode 100644 index 47efd963..00000000 --- a/src/main/webapp/pages/common/menu.jsp +++ /dev/null @@ -1,237 +0,0 @@ -<%@ page language="java" pageEncoding="utf-8" %> -<% - String path = request.getContextPath(); - String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + path + "/"; -%> - - - - - - - - - - - - - - - - - - - - - -
            - -
            -
            -
            -
            -
            -
            - 刷新 -
            - -
            - 关闭 -
            -
            - 全部关闭 -
            -
            - 关闭其他页 -
            - -
            - 关闭右侧页面 -
            -
            - 关闭左侧页面 -
            - -
            - 华夏ERP官网 -
            -
            - - \ No newline at end of file diff --git a/src/main/webapp/pages/common/templateforjsp.jsp b/src/main/webapp/pages/common/templateforjsp.jsp deleted file mode 100644 index 3eb054ac..00000000 --- a/src/main/webapp/pages/common/templateforjsp.jsp +++ /dev/null @@ -1,32 +0,0 @@ -<%@page import="com.jsh.util.Tools" %> -<%@ page language="java" pageEncoding="utf-8" %> -<% - String path = request.getContextPath(); - String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + path + "/"; - String clientIp = Tools.getLocalIp(request); -%> - - - - 资产管理 - - - - - - - - - - - - \ No newline at end of file diff --git a/src/main/webapp/pages/financial/advance_in.jsp b/src/main/webapp/pages/financial/advance_in.jsp deleted file mode 100644 index b8a2f2d5..00000000 --- a/src/main/webapp/pages/financial/advance_in.jsp +++ /dev/null @@ -1,162 +0,0 @@ -<%@page import="com.jsh.util.Tools" %> -<%@ page language="java" pageEncoding="utf-8" %> -<% - String path = request.getContextPath(); - String clientIp = Tools.getLocalIp(request); -%> - - - - 收预付款 - - - - - - - - - - - - - - - - - -
            - - - - - - - - - - - -
            单据编号: - - 单据日期: - - - - -   - 查询  - 重置 -
            -
            - - -
            -
            -
            - -
            -
            - - - - - - - - - - - - - - - - - - - - - - -
            付款会员: - - 经手人: - - 单据日期: - - 单据编号: - -
            - -
            -
            - -
            优惠金额: - -
            - -
            -
            -
            - 保存 - 取消 -
            -
            - - - - - - - - - - - - - - - - - - - - - - - -
            付款会员: - - 经手人: - - 单据日期: - - 单据编号: - -
            - -
            -
            单据备注: - -
            优惠金额: - -
            -
            - - diff --git a/src/main/webapp/pages/financial/giro.jsp b/src/main/webapp/pages/financial/giro.jsp deleted file mode 100644 index 810803d2..00000000 --- a/src/main/webapp/pages/financial/giro.jsp +++ /dev/null @@ -1,167 +0,0 @@ -<%@page import="com.jsh.util.Tools" %> -<%@ page language="java" pageEncoding="utf-8" %> -<% - String path = request.getContextPath(); - String clientIp = Tools.getLocalIp(request); -%> - - - - 转账单 - - - - - - - - - - - - - - - - - -
            - - - - - - - - - - - -
            单据编号: - - 单据日期: - - - - -   - 查询  - 重置 -
            -
            - - -
            -
            -
            - -
            -
            - - - - - - - - - - - - - - - - - - - - - - - - -
            经手人: - - 单据日期: - - 单据编号: - - -
            - -
            -
            - -
            付款账户: - - 实付金额: - -
            - -
            -
            -
            - 保存 - 取消 -
            -
            - - - - - - - - - - - - - - - - - - - - - - - - - -
            经手人: - - 单据日期: - - 单据编号: - -
            - -
            -
            单据备注: - -
            付款账户: - - 实付金额: - -
            -
            - - diff --git a/src/main/webapp/pages/financial/item_in.jsp b/src/main/webapp/pages/financial/item_in.jsp deleted file mode 100644 index 11cea606..00000000 --- a/src/main/webapp/pages/financial/item_in.jsp +++ /dev/null @@ -1,170 +0,0 @@ -<%@page import="com.jsh.util.Tools" %> -<%@ page language="java" pageEncoding="utf-8" %> -<% - String path = request.getContextPath(); - String clientIp = Tools.getLocalIp(request); -%> - - - - 收入单 - - - - - - - - - - - - - - - - - -
            - - - - - - - - - - - -
            单据编号: - - 单据日期: - - - - -   - 查询  - 重置 -
            -
            - - -
            -
            -
            - -
            -
            - - - - - - - - - - - - - - - - - - - - - - - - -
            往来单位: - - 经手人: - - 单据日期: - - 单据编号: - -
            - -
            -
            - -
            收款账户: - - 收款金额: - -
            - -
            -
            -
            - 保存 - 取消 -
            -
            - - - - - - - - - - - - - - - - - - - - - - - - - -
            往来单位: - - 经手人: - - 单据日期: - - 单据编号: - -
            - -
            -
            单据备注: - -
            收款账户: - - 收款金额: - -
            -
            - - diff --git a/src/main/webapp/pages/financial/item_out.jsp b/src/main/webapp/pages/financial/item_out.jsp deleted file mode 100644 index f53ed06d..00000000 --- a/src/main/webapp/pages/financial/item_out.jsp +++ /dev/null @@ -1,167 +0,0 @@ -<%@page import="com.jsh.util.Tools" %> -<%@ page language="java" pageEncoding="utf-8" %> -<% - String path = request.getContextPath(); - String clientIp = Tools.getLocalIp(request); -%> - - - - 支出单 - - - - - - - - - - - - - - - - - -
            - - - - - - - - - - - -
            单据编号: - - 单据日期: - - - - -   - 查询  - 重置 -
            -
            - - -
            -
            -
            - -
            -
            - - - - - - - - - - - - - - - - - - - - - - - - -
            往来单位: - - 单据日期: - - 单据编号: - - -
            - -
            -
            - -
            付款账户: - - 付款金额: - -
            - -
            -
            -
            - 保存 - 取消 -
            -
            - - - - - - - - - - - - - - - - - - - - - - - - - -
            往来单位: - - 单据日期: - - 单据编号: - -
            - -
            -
            单据备注: - -
            付款账户: - - 付款金额: - -
            -
            - - diff --git a/src/main/webapp/pages/financial/money_in.jsp b/src/main/webapp/pages/financial/money_in.jsp deleted file mode 100644 index 1986574e..00000000 --- a/src/main/webapp/pages/financial/money_in.jsp +++ /dev/null @@ -1,162 +0,0 @@ -<%@page import="com.jsh.util.Tools" %> -<%@ page language="java" pageEncoding="utf-8" %> -<% - String path = request.getContextPath(); - String clientIp = Tools.getLocalIp(request); -%> - - - - 收款单 - - - - - - - - - - - - - - - - - -
            - - - - - - - - - - - -
            单据编号: - - 单据日期: - - - - -   - 查询  - 重置 -
            -
            - - -
            -
            -
            - -
            -
            - - - - - - - - - - - - - - - - - - - - - - -
            付款单位: - - 经手人: - - 单据日期: - - 单据编号: - -
            - -
            -
            - -
            优惠金额: - -
            - -
            -
            -
            - 保存 - 取消 -
            -
            - - - - - - - - - - - - - - - - - - - - - - - -
            付款单位: - - 经手人: - - 单据日期: - - 单据编号: - -
            - -
            -
            单据备注: - -
            优惠金额: - -
            -
            - - diff --git a/src/main/webapp/pages/financial/money_out.jsp b/src/main/webapp/pages/financial/money_out.jsp deleted file mode 100644 index 7d4e0155..00000000 --- a/src/main/webapp/pages/financial/money_out.jsp +++ /dev/null @@ -1,161 +0,0 @@ -<%@page import="com.jsh.util.Tools" %> -<%@ page language="java" pageEncoding="utf-8" %> -<% - String path = request.getContextPath(); - String clientIp = Tools.getLocalIp(request); -%> - - - - 付款单 - - - - - - - - - - - - - - - - - -
            - - - - - - - - - - - -
            单据编号: - - 单据日期: - - - - -   - 查询  - 重置 -
            -
            - - -
            -
            -
            - -
            -
            - - - - - - - - - - - - - - - - - - - - - - -
            收款单位: - - 经手人: - - 单据日期: - - 单据编号: - -
            - -
            -
            - -
            优惠金额: - -
            - -
            -
            -
            - 保存 - 取消 -
            -
            - - - - - - - - - - - - - - - - - - - - - - - -
            收款单位: - - 经手人: - - 单据日期: - - 单据编号: - -
            - -
            -
            单据备注: - -
            优惠金额: - -
            -
            - - diff --git a/src/main/webapp/pages/manage/account.jsp b/src/main/webapp/pages/manage/account.jsp deleted file mode 100644 index 72c42bed..00000000 --- a/src/main/webapp/pages/manage/account.jsp +++ /dev/null @@ -1,635 +0,0 @@ -<%@page import="com.jsh.util.Tools" %> -<%@ page language="java" pageEncoding="utf-8" %> -<% - String path = request.getContextPath(); - String clientIp = Tools.getLocalIp(request); -%> - - - - 结算账户 - - - - - - - - - - - - - - - -
            - - - - - - - - - - - - - - - - - -
            名    称: - -   编    号: - -   备    注: - -    - 查询   - 重置 -
            -
            - - -
            -
            -
            -
            -
            -
            - - -
            -
            - - -
            -
            - - -
            -
            - - -
            -
            - - -
            - -
            -
            -
            - 保存 - 取消 -
            -
            -
            -
            - - - - diff --git a/src/main/webapp/pages/manage/app.jsp b/src/main/webapp/pages/manage/app.jsp deleted file mode 100644 index 5e93dce7..00000000 --- a/src/main/webapp/pages/manage/app.jsp +++ /dev/null @@ -1,570 +0,0 @@ -<%@page import="com.jsh.util.Tools" %> -<%@ page language="java" pageEncoding="utf-8" %> -<% - String path = request.getContextPath(); - String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + path + "/"; - String clientIp = Tools.getLocalIp(request); -%> - - - - 应用管理 - - - - - - - - - - - - - - - - - -
            - - - - - - - - - - - - - -
            名称: - -   种类: - -     - 查询   - 重置 -
            -
            - - -
            -
            -
            - -
            -
            - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
            代号名称拉伸
            类型链接最大化
            宽度高度Flash
            排序号种类启用
            备注
            图标 -
            -
            - -
            -
            -
            - 保存 - 取消 -
            - - - - \ No newline at end of file diff --git a/src/main/webapp/pages/manage/assetname.jsp b/src/main/webapp/pages/manage/assetname.jsp deleted file mode 100644 index 04b97a78..00000000 --- a/src/main/webapp/pages/manage/assetname.jsp +++ /dev/null @@ -1,682 +0,0 @@ -<%@page import="com.jsh.util.Tools" %> -<%@ page language="java" pageEncoding="utf-8" %> -<% - String path = request.getContextPath(); - String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + path + "/"; - String clientIp = Tools.getLocalIp(request); -%> - - - - 资产管理 - - - - - - - - - - - - - -
            - -
            - - - - - - - - - - - - - - - - - - - - - - - - - -
            类型名称: - -   资产类型: -   是否耗材: - -    
            描        述: - -     - 查询   - 重置 -  
            -
            - - -
            -
            -
            - -
            -
            -
            - - -
            -
            - - -   增加资产类型 -
            -
            - - -
            -
            - - -
            - -
            -
            -
            - 保存 - 取消 -
            - -
            -
            -
            - - -
            -
            - - -
            - -
            -
            -
            - 保存 - 取消 -
            - - - \ No newline at end of file diff --git a/src/main/webapp/pages/manage/category.jsp b/src/main/webapp/pages/manage/category.jsp deleted file mode 100644 index 8d419462..00000000 --- a/src/main/webapp/pages/manage/category.jsp +++ /dev/null @@ -1,460 +0,0 @@ -<%@page import="com.jsh.util.Tools" %> -<%@ page language="java" pageEncoding="utf-8" %> -<% - String path = request.getContextPath(); - String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + path + "/"; - String clientIp = Tools.getLocalIp(request); -%> - - - - 资产管理 - - - - - - - - - - - - - -
            - -
            - - - - - - - - - - - - - -
            类型名称: - -   描        述: - -     - 查询   - 重置 -
            -
            - - -
            -
            -
            - -
            -
            -
            - - -
            -
            - - -
            - -
            -
            -
            - 保存 - 取消 -
            - - - - \ No newline at end of file diff --git a/src/main/webapp/pages/manage/customer.jsp b/src/main/webapp/pages/manage/customer.jsp deleted file mode 100644 index 6df4d994..00000000 --- a/src/main/webapp/pages/manage/customer.jsp +++ /dev/null @@ -1,198 +0,0 @@ -<%@page import="com.jsh.util.Tools" %> -<%@ page language="java" pageEncoding="utf-8" %> -<% - String path = request.getContextPath(); - String clientIp = Tools.getLocalIp(request); -%> - - - - 客户信息 - - - - - - - - - - - - - - - - -
            - - - - - - - - - - - - - - - - -
            名    称: - -  手机号码: - -  联系电话: - -  备        注: - -   - 查询   - 重置 -
            -
            - - -
            -
            -
            -
            -
            - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
            名称 - - 联系人 - -
            手机号码 - - 电子邮箱 - -
            联系电话 - - 传真 - -
            期初应收 - - 期初应付 - -
            累计应收 - - 累计应付 - -
            纳税人识别号 - - 税率 - -
            开户行 - - 账号 - -
            地址 - -
            备注 - -
            -
            -
            -
            - 保存 - 取消 -
            - - -
            -
            -
            - - -
            -
            - (预收款、期初应收、期初应付、税率均为数值且要大于0;另外期初应收、期初应付不能同时输入) -
            - - -
            - 导入 - 取消 -
            -
            -
            - - \ No newline at end of file diff --git a/src/main/webapp/pages/manage/depot.jsp b/src/main/webapp/pages/manage/depot.jsp deleted file mode 100644 index 85f50294..00000000 --- a/src/main/webapp/pages/manage/depot.jsp +++ /dev/null @@ -1,496 +0,0 @@ -<%@page import="com.jsh.util.Tools" %> -<%@ page language="java" pageEncoding="utf-8" %> -<% - String path = request.getContextPath(); - String clientIp = Tools.getLocalIp(request); -%> - - - - 仓库管理 - - - - - - - - - - - - - - -
            - - - - - - - - - - -
            仓库名称: - -  描述: - -   - 查询   - 重置 -
            -
            - - -
            -
            -
            - -
            -
            - - - - - - - - - - - - - - - - - - - - - - - - - -
            仓库名称 - -
            仓库地址 - -
            仓储费 -  元/天/KG -
            搬运费 -  元 -
            排序 - -
            描述 - -
            - -
            -
            -
            - 保存 - 取消 -
            - - - - \ No newline at end of file diff --git a/src/main/webapp/pages/manage/depotGift.jsp b/src/main/webapp/pages/manage/depotGift.jsp deleted file mode 100644 index 5a356a5a..00000000 --- a/src/main/webapp/pages/manage/depotGift.jsp +++ /dev/null @@ -1,487 +0,0 @@ -<%@page import="com.jsh.util.Tools" %> -<%@ page language="java" pageEncoding="utf-8" %> -<% - String path = request.getContextPath(); - String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + path + "/"; - String clientIp = Tools.getLocalIp(request); -%> - - - - 礼品卡管理 - - - - - - - - - - - - - - -
            - - - - - - - - - - - - - -
            礼品卡名称: - -   描        述: - -     - 查询   - 重置 -
            -
            - - -
            -
            -
            - -
            -
            - - - - - - - - - - - - - -
            - -
            -
            -
            - 保存 - 取消 -
            - - - - \ No newline at end of file diff --git a/src/main/webapp/pages/manage/functions.jsp b/src/main/webapp/pages/manage/functions.jsp deleted file mode 100644 index f5cca0f0..00000000 --- a/src/main/webapp/pages/manage/functions.jsp +++ /dev/null @@ -1,547 +0,0 @@ -<%@page import="com.jsh.util.Tools" %> -<%@ page language="java" pageEncoding="utf-8" %> -<% - String path = request.getContextPath(); - String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + path + "/"; - String clientIp = Tools.getLocalIp(request); -%> - - - - 功能管理 - - - - - - - - - - - - - - -
            - - - - - - - - - - - - - -
            名称: - -   类型:  - -    - 查询   - 重置 -
            -
            - - -
            -
            -
            - -
            -
            - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
            编号
            名称
            上级编号
            链接
            排序
            功能按钮 - -
            收缩
            启用
            类型 -
            - -
            -
            -
            - 保存 - 取消 -
            - - - - \ No newline at end of file diff --git a/src/main/webapp/pages/manage/home.jsp b/src/main/webapp/pages/manage/home.jsp deleted file mode 100644 index 0116300d..00000000 --- a/src/main/webapp/pages/manage/home.jsp +++ /dev/null @@ -1,87 +0,0 @@ -<%@page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8" %> -<% - String path = request.getContextPath(); - String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + path + "/"; -%> - - - - - - - - - 首页说明 - - - - - - - - - - - - - -
            -    - 系统管理 -
            -

            -      - 系统管理是管理系统中的基础数据设置信息,包括供应商、资产类型、资产名称、用户管理等,通过系统管理,可以为系统提供基础数据支持。日志管理主要包括供应商、资产类型、资产名称、用户管理等的增删改查等功能点。 -

            - - \ No newline at end of file diff --git a/src/main/webapp/pages/manage/inOutItem.jsp b/src/main/webapp/pages/manage/inOutItem.jsp deleted file mode 100644 index dda82e24..00000000 --- a/src/main/webapp/pages/manage/inOutItem.jsp +++ /dev/null @@ -1,471 +0,0 @@ -<%@page import="com.jsh.util.Tools" %> -<%@ page language="java" pageEncoding="utf-8" %> -<% - String path = request.getContextPath(); - String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + path + "/"; - String clientIp = Tools.getLocalIp(request); -%> - - - - 收支项目 - - - - - - - - - - - - - - - -
            - - - - - - - - - - - - - - - - - -
            名    称: - -   类    型: - -   备    注: - -    - 查询   - 重置 -
            -
            - - -
            -
            -
            -
            -
            -
            - - -
            -
            - - -
            -
            - - -
            - -
            -
            -
            - 保存 - 取消 -
            - - - - diff --git a/src/main/webapp/pages/manage/log.jsp b/src/main/webapp/pages/manage/log.jsp deleted file mode 100644 index 852d3d59..00000000 --- a/src/main/webapp/pages/manage/log.jsp +++ /dev/null @@ -1,281 +0,0 @@ -<%@page import="com.jsh.util.Tools" %> -<%@ page language="java" pageEncoding="utf-8" %> -<% - String path = request.getContextPath(); - String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + path + "/"; - String clientIp = Tools.getLocalIp(request); -%> - - - - 资产管理 - - - - - - - - - - - - - - -
            - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
            操作模块: - -   操作人员: -   操作IP: - -   操作状态: - -
            开始时间: - -   结束时间: - -   操作详情: - -   - 查询 - 重置 -
            -
            - - -
            -
            -
            - - - \ No newline at end of file diff --git a/src/main/webapp/pages/manage/member.jsp b/src/main/webapp/pages/manage/member.jsp deleted file mode 100644 index 78a97440..00000000 --- a/src/main/webapp/pages/manage/member.jsp +++ /dev/null @@ -1,198 +0,0 @@ -<%@page import="com.jsh.util.Tools" %> -<%@ page language="java" pageEncoding="utf-8" %> -<% - String path = request.getContextPath(); - String clientIp = Tools.getLocalIp(request); -%> - - - - 会员信息 - - - - - - - - - - - - - - - - -
            - - - - - - - - - - - - - - - - -
            名    称: - -  手机号码: - -  联系电话: - -  备        注: - -   - 查询   - 重置 -
            -
            - - -
            -
            -
            -
            -
            - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
            名称 - - 联系人 - -
            手机号码 - - 电子邮箱 - -
            联系电话 - - 传真 - -
            期初应收 - - 期初应付 - -
            累计应收 - - 累计应付 - -
            纳税人识别号 - - 税率 - -
            开户行 - - 账号 - -
            地址 - -
            备注 - -
            -
            -
            -
            - 保存 - 取消 -
            - - -
            -
            -
            - - -
            -
            - (预收款、期初应收、期初应付、税率均为数值且要大于0;另外期初应收、期初应付不能同时输入) -
            - - -
            - 导入 - 取消 -
            -
            -
            - - \ No newline at end of file diff --git a/src/main/webapp/pages/manage/role.jsp b/src/main/webapp/pages/manage/role.jsp deleted file mode 100644 index 14b78822..00000000 --- a/src/main/webapp/pages/manage/role.jsp +++ /dev/null @@ -1,482 +0,0 @@ -<%@page import="com.jsh.util.Tools" %> -<%@ page language="java" pageEncoding="utf-8" %> -<% - String path = request.getContextPath(); - String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + path + "/"; - String clientIp = Tools.getLocalIp(request); -%> - - - - 角色管理 - - - - - - - - - - - - - - - - - -
            - - - - - - - - - -
            角色名称: - -     - 查询   - 重置   - 分配应用   - 分配功能   - 分配按钮 -
            -
            - - -
            -
            -
            - -
            -
            - - - - - -
            - -
            -
            -
            - 保存 - 取消 -
            - - - - \ No newline at end of file diff --git a/src/main/webapp/pages/manage/roleApp.jsp b/src/main/webapp/pages/manage/roleApp.jsp deleted file mode 100644 index ef101413..00000000 --- a/src/main/webapp/pages/manage/roleApp.jsp +++ /dev/null @@ -1,139 +0,0 @@ -<%@page import="com.jsh.util.Tools" %> -<%@ page language="java" pageEncoding="utf-8" %> -<% - String path = request.getContextPath(); - String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + path + "/"; - String clientIp = Tools.getLocalIp(request); -%> - - - - 角色对应应用 - - - - - - - - - - - - - - -
            - 保存 -
            -
            -
              -
              - - - - \ No newline at end of file diff --git a/src/main/webapp/pages/manage/roleFunctions.jsp b/src/main/webapp/pages/manage/roleFunctions.jsp deleted file mode 100644 index be7f0404..00000000 --- a/src/main/webapp/pages/manage/roleFunctions.jsp +++ /dev/null @@ -1,138 +0,0 @@ -<%@page import="com.jsh.util.Tools" %> -<%@ page language="java" pageEncoding="utf-8" %> -<% - String path = request.getContextPath(); - String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + path + "/"; - String clientIp = Tools.getLocalIp(request); -%> - - - - 角色对应应用 - - - - - - - - - - - - - - -
              - 保存 -
              -
              -
                -
                - - - - \ No newline at end of file diff --git a/src/main/webapp/pages/manage/rolePushBtn.jsp b/src/main/webapp/pages/manage/rolePushBtn.jsp deleted file mode 100644 index 7135af8e..00000000 --- a/src/main/webapp/pages/manage/rolePushBtn.jsp +++ /dev/null @@ -1,265 +0,0 @@ -<%@page import="com.jsh.util.Tools" %> -<%@ page language="java" pageEncoding="utf-8" %> -<% - String path = request.getContextPath(); - String clientIp = Tools.getLocalIp(request); -%> - - - - 角色分配按钮 - - - - - - - - - - - - - - -
                - 保存 -
                -
                - -
                -
                -
                -
                - - - - \ No newline at end of file diff --git a/src/main/webapp/pages/manage/systemConfig.jsp b/src/main/webapp/pages/manage/systemConfig.jsp deleted file mode 100644 index 06cc9d55..00000000 --- a/src/main/webapp/pages/manage/systemConfig.jsp +++ /dev/null @@ -1,142 +0,0 @@ -<%@page import="com.jsh.util.Tools" %> -<%@ page language="java" pageEncoding="utf-8" %> -<% - String path = request.getContextPath(); - String clientIp = Tools.getLocalIp(request); -%> - - - - 系统配置 - - - - - - - - - - - - - - - - - -
                - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                公司名称: - -
                联系人: - -
                公司地址: - -
                公司电话: - -
                公司传真: - -
                公司邮编: - -
                - 保存信息 -
                -
                - - \ No newline at end of file diff --git a/src/main/webapp/pages/manage/unit.jsp b/src/main/webapp/pages/manage/unit.jsp deleted file mode 100644 index a9cbb747..00000000 --- a/src/main/webapp/pages/manage/unit.jsp +++ /dev/null @@ -1,455 +0,0 @@ -<%@page import="com.jsh.util.Tools" %> -<%@ page language="java" pageEncoding="utf-8" %> -<% - String path = request.getContextPath(); - String clientIp = Tools.getLocalIp(request); -%> - - - - 计量单位管理 - - - - - - - - - - - - - - -
                - - - - - - - -
                计量单位: - -   - 查询   - 重置 -
                -
                - - -
                -
                -
                - -
                -
                - - - - - - - - - -
                基本单位 - - 基本单位应为最小度量单位 -
                副单位 - - = - - -
                - -
                -
                -
                - 保存 - 取消 -
                - - - - \ No newline at end of file diff --git a/src/main/webapp/pages/manage/user.jsp b/src/main/webapp/pages/manage/user.jsp deleted file mode 100644 index 0ee16d95..00000000 --- a/src/main/webapp/pages/manage/user.jsp +++ /dev/null @@ -1,581 +0,0 @@ -<%@page import="com.jsh.util.Tools" %> -<%@ page language="java" pageEncoding="utf-8" %> -<% - String path = request.getContextPath(); - String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + path + "/"; - String clientIp = Tools.getLocalIp(request); -%> - - - - 用户管理 - - - - - - - - - - - - - - - - - -
                - - - - - - - - - - - - - -
                用户名称: - -   登录名称: - -     - 查询   - 重置   - 分配角色   - 分配仓库   - 分配客户 -
                -
                - - -
                -
                -
                - -
                -
                -
                - - -
                -
                - - - 初始密码:123456 -
                -
                - - -
                -
                - - -
                -
                - - -
                -
                - - -
                -
                - - -
                - -
                -
                - - - - \ No newline at end of file diff --git a/src/main/webapp/pages/manage/vendor.jsp b/src/main/webapp/pages/manage/vendor.jsp deleted file mode 100644 index 7794c6cf..00000000 --- a/src/main/webapp/pages/manage/vendor.jsp +++ /dev/null @@ -1,199 +0,0 @@ -<%@page import="com.jsh.util.Tools" %> -<%@ page language="java" pageEncoding="utf-8" %> -<% - String path = request.getContextPath(); - String clientIp = Tools.getLocalIp(request); -%> - - - - 供应商信息 - - - - - - - - - - - - - - - - -
                - - - - - - - - - - - - - - - - -
                名    称: - -  手机号码: - -  联系电话: - -  备        注: - -   - 查询   - 重置 -
                -
                - - -
                -
                -
                -
                -
                - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                名称 - - 联系人 - -
                手机号码 - - 电子邮箱 - -
                联系电话 - - 传真 - -
                期初应收 - - 期初应付 - -
                累计应收 - - 累计应付 - -
                纳税人识别号 - - 税率 - -
                开户行 - - 账号 - -
                地址 - -
                备注 - -
                -
                -
                -
                - 保存 - 取消 -
                - - -
                -
                -
                - - -
                -
                - (预收款、期初应收、期初应付、税率均为数值且要大于0;另外期初应收、期初应付不能同时输入) -
                - - -
                - 导入 - 取消 -
                -
                -
                - - - \ No newline at end of file diff --git a/src/main/webapp/pages/materials/allocation_out_list.jsp b/src/main/webapp/pages/materials/allocation_out_list.jsp deleted file mode 100644 index 40b73a81..00000000 --- a/src/main/webapp/pages/materials/allocation_out_list.jsp +++ /dev/null @@ -1,146 +0,0 @@ -<%@page import="com.jsh.util.Tools" %> -<%@ page language="java" pageEncoding="utf-8" %> -<% - String path = request.getContextPath(); - String clientIp = Tools.getLocalIp(request); -%> - - - - 调拨出库 - - - - - - - - - - - - - - - - - - -
                - - - - - - - - - - - - - -
                单据编号: - - 商品信息: - - 单据日期: - - - - -   - 查询  - 重置 -
                -
                - - -
                -
                -
                - -
                -
                - - - - - - - - - - - - - - - - - - -
                单据日期: - - 单据编号: - -
                - -
                -
                - -
                - -
                -
                -
                - 保存 - 取消 -
                -
                - - - - - - - - - - - - - - - - - - - -
                单据日期: - - 单据编号: - -
                - -
                -
                单据备注: - -
                -
                - - \ No newline at end of file diff --git a/src/main/webapp/pages/materials/assemble_list.jsp b/src/main/webapp/pages/materials/assemble_list.jsp deleted file mode 100644 index e0e38400..00000000 --- a/src/main/webapp/pages/materials/assemble_list.jsp +++ /dev/null @@ -1,146 +0,0 @@ -<%@page import="com.jsh.util.Tools" %> -<%@ page language="java" pageEncoding="utf-8" %> -<% - String path = request.getContextPath(); - String clientIp = Tools.getLocalIp(request); -%> - - - - 组装单 - - - - - - - - - - - - - - - - - - -
                - - - - - - - - - - - - - -
                单据编号: - - 商品信息: - - 单据日期: - - - - -   - 查询  - 重置 -
                -
                - - -
                -
                -
                - -
                -
                - - - - - - - - - - - - - - - - - - -
                单据日期: - - 单据编号: - -
                - -
                -
                - -
                - -
                -
                -
                - 保存 - 取消 -
                -
                - - - - - - - - - - - - - - - - - - - -
                单据日期: - - 单据编号: - -
                - -
                -
                单据备注: - -
                -
                - - \ No newline at end of file diff --git a/src/main/webapp/pages/materials/bill_detail.jsp b/src/main/webapp/pages/materials/bill_detail.jsp deleted file mode 100644 index 26429664..00000000 --- a/src/main/webapp/pages/materials/bill_detail.jsp +++ /dev/null @@ -1,905 +0,0 @@ -<%@page import="com.jsh.util.Tools" %> -<%@ page language="java" pageEncoding="utf-8" %> -<% - String path = request.getContextPath(); - String clientIp = Tools.getLocalIp(request); -%> - - - - 单据明细 - - - - - - - - - - - - - - - - -
                - <%--零售出库--%> -
                - - - - - - - - - - - - - - - - - - -
                会员卡号: - - 单据日期: - - 单据编号: - - 付款类型: - -
                - -
                -
                - - - - - - - - - - - - - - - - - - - - - - - -
                实收金额
                - -
                收款金额
                - -
                找零
                - -
                收款账户: - -
                -
                - -
                -
                - <%--零售退货--%> -
                - - - - - - - - - - - - - - - - - - -
                会员卡号: - - 单据日期: - - 单据编号: - - -
                - -
                -
                - - - - - - - - - - - - - - - - - - - - - - - -
                实付金额
                - -
                付款金额
                - -
                找零
                - -
                付款账户: - -
                -
                - -
                -
                - <%--采购入库--%> -
                - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                供应商: - - 单据日期: - - 单据编号: - -
                - -
                -
                单据备注: - -
                优惠率: - - % - 付款优惠: - - 优惠后金额: - - 本次付款: - -
                结算账户: - - 本次欠款: - - 采购费用: - - 结算天数: - -
                -
                - <%--采购退货--%> -
                - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                供应商: - - 单据日期: - - 单据编号: - -
                - -
                -
                单据备注: - -
                优惠率: - - % - 付款优惠: - - 优惠后金额: - - 本次付款: - -
                结算账户: - - 本次欠款: - - 采购费用: - - -
                -
                - <%--销售出库--%> -
                - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                客户: - - 销售人员: - - 单据日期: - - 单据编号: - -
                - -
                -
                单据备注: - -
                优惠率: - - % - 收款优惠: - - 优惠后金额: - - 本次收款: - -
                结算账户: - - 本次欠款: - - 销售费用: - - 结算天数: - -
                -
                - <%--销售退货--%> -
                - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                客户: - - 销售人员: - - 单据日期: - - 单据编号: - -
                - -
                -
                单据备注: - -
                优惠率: - - % - 退款优惠: - - 优惠后金额: - - 本次退款: - -
                结算账户: - - 本次欠款: - - 销售费用: - - -
                -
                - <%--其它入库--%> -
                - - - - - - - - - - - - - - - - - - - -
                供应商: - - 单据日期: - - 单据编号: - -
                - -
                -
                单据备注: - -
                -
                - <%--其它出库--%> -
                - - - - - - - - - - - - - - - - - - - -
                客户: - - 单据日期: - - 单据编号: - -
                - -
                -
                单据备注: - -
                -
                - <%--调拨出库--%> -
                - - - - - - - - - - - - - - - - - - - -
                单据日期: - - 单据编号: - -
                - -
                -
                单据备注: - -
                -
                - <%--礼品充值--%> -
                - - - - - - - - - - - - - - - - - - - -
                单据日期: - - 单据编号: - -
                - -
                -
                单据备注: - -
                -
                - <%--礼品销售--%> -
                - - - - - - - - - - - - - - - - - - - -
                单据日期: - - 单据编号: - -
                - -
                -
                单据备注: - -
                -
                - <%--收入单--%> -
                - - - - - - - - - - - - - - - - - - - - - - - - - -
                往来单位: - - 经手人: - - 单据日期: - - 单据编号: - -
                - -
                -
                单据备注: - -
                收款账户: - - 收款金额: - -
                -
                - <%--支出单--%> -
                - - - - - - - - - - - - - - - - - - - - - - - - - -
                往来单位: - - 单据日期: - - 单据编号: - -
                - -
                -
                单据备注: - -
                付款账户: - - 付款金额: - -
                -
                - <%--收款单--%> -
                - - - - - - - - - - - - - - - - - - - - - - - -
                付款单位: - - 经手人: - - 单据日期: - - 单据编号: - -
                - -
                -
                单据备注: - -
                优惠金额: - -
                -
                - <%--付款单--%> -
                - - - - - - - - - - - - - - - - - - - - - - - -
                收款单位: - - 经手人: - - 单据日期: - - 单据编号: - -
                - -
                -
                单据备注: - -
                优惠金额: - -
                -
                - <%--转账单--%> -
                - - - - - - - - - - - - - - - - - - - - - - - - - -
                经手人: - - 单据日期: - - 单据编号: - -
                - -
                -
                单据备注: - -
                付款账户: - - 实付金额: - -
                -
                - <%--收预付款--%> -
                - - - - - - - - - - - - - - - - - - - - - - - -
                付款会员: - - 经手人: - - 单据日期: - - 单据编号: - -
                - -
                -
                单据备注: - -
                优惠金额: - -
                -
                -
                - - diff --git a/src/main/webapp/pages/materials/disassemble_list.jsp b/src/main/webapp/pages/materials/disassemble_list.jsp deleted file mode 100644 index 2b8ad4cb..00000000 --- a/src/main/webapp/pages/materials/disassemble_list.jsp +++ /dev/null @@ -1,146 +0,0 @@ -<%@page import="com.jsh.util.Tools" %> -<%@ page language="java" pageEncoding="utf-8" %> -<% - String path = request.getContextPath(); - String clientIp = Tools.getLocalIp(request); -%> - - - - 拆卸单 - - - - - - - - - - - - - - - - - - -
                - - - - - - - - - - - - - -
                单据编号: - - 商品信息: - - 单据日期: - - - - -   - 查询  - 重置 -
                -
                - - -
                -
                -
                - -
                -
                - - - - - - - - - - - - - - - - - - -
                单据日期: - - 单据编号: - -
                - -
                -
                - -
                - -
                -
                -
                - 保存 - 取消 -
                -
                - - - - - - - - - - - - - - - - - - - -
                单据日期: - - 单据编号: - -
                - -
                -
                单据备注: - -
                -
                - - \ No newline at end of file diff --git a/src/main/webapp/pages/materials/gift_out_list.jsp b/src/main/webapp/pages/materials/gift_out_list.jsp deleted file mode 100644 index fddd3931..00000000 --- a/src/main/webapp/pages/materials/gift_out_list.jsp +++ /dev/null @@ -1,146 +0,0 @@ -<%@page import="com.jsh.util.Tools" %> -<%@ page language="java" pageEncoding="utf-8" %> -<% - String path = request.getContextPath(); - String clientIp = Tools.getLocalIp(request); -%> - - - - 礼品销售 - - - - - - - - - - - - - - - - - - -
                - - - - - - - - - - - - - -
                单据编号: - - 商品信息: - - 单据日期: - - - - -   - 查询  - 重置 -
                -
                - - -
                -
                -
                - -
                -
                - - - - - - - - - - - - - - - - - - -
                单据日期: - - 单据编号: - -
                - -
                -
                - -
                - -
                -
                -
                - 保存 - 取消 -
                -
                - - - - - - - - - - - - - - - - - - - -
                单据日期: - - 单据编号: - -
                - -
                -
                单据备注: - -
                -
                - - \ No newline at end of file diff --git a/src/main/webapp/pages/materials/gift_recharge_list.jsp b/src/main/webapp/pages/materials/gift_recharge_list.jsp deleted file mode 100644 index 9cc53c1e..00000000 --- a/src/main/webapp/pages/materials/gift_recharge_list.jsp +++ /dev/null @@ -1,146 +0,0 @@ -<%@page import="com.jsh.util.Tools" %> -<%@ page language="java" pageEncoding="utf-8" %> -<% - String path = request.getContextPath(); - String clientIp = Tools.getLocalIp(request); -%> - - - - 礼品充值 - - - - - - - - - - - - - - - - - - -
                - - - - - - - - - - - - - -
                单据编号: - - 商品信息: - - 单据日期: - - - - -   - 查询  - 重置 -
                -
                - - -
                -
                -
                - -
                -
                - - - - - - - - - - - - - - - - - - -
                单据日期: - - 单据编号: - -
                - -
                -
                - -
                - -
                -
                -
                - 保存 - 取消 -
                -
                - - - - - - - - - - - - - - - - - - - -
                单据日期: - - 单据编号: - -
                - -
                -
                单据备注: - -
                -
                - - \ No newline at end of file diff --git a/src/main/webapp/pages/materials/material.jsp b/src/main/webapp/pages/materials/material.jsp deleted file mode 100644 index 97246527..00000000 --- a/src/main/webapp/pages/materials/material.jsp +++ /dev/null @@ -1,1639 +0,0 @@ -<%@page import="com.jsh.util.Tools" %> -<%@ page language="java" pageEncoding="utf-8" %> -<% - String path = request.getContextPath(); - String clientIp = Tools.getLocalIp(request); -%> - - - - 商品信息 - - - - - - - - - - - - - - - - -
                - - - - - - - - - - - - - -
                品名: - -  型号: - -  类别: - - - -   - 查询   - 重置 -
                -
                - - -
                -
                -
                - -
                -
                -
                - -
                -
                -
                -
                - - - - - - - - - - - - - - - - - - -
                品名 - - 型号 - -
                类别 - - - - - 修改 -
                备注 - -
                -
                -
                - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                安全存量 - - 单位 - - - - 多单位 -
                首选出库单位 - - 首选入库单位 - -
                - - - - - - - - - - - - - - - - - - - - - - - - - -
                价格列表计量单位零售价最低售价预计采购价批发价
                基本单位
                副单位
                -
                零售价最低售价
                预计采购价批发价
                -
                -
                - - - - - - - - - - - - - - - - - - - - - - - - - -
                颜色 - -
                规格 - -
                制造商 - -
                自定义1 - -
                自定义2 - -
                自定义3 - -
                -
                -
                - -
                -
                -
                - 保存 - 取消 -
                - - -
                -
                -
                - - -
                -
                - (多单位清空下,价格请用斜线隔开) -
                - - -
                - 导入 - 取消 -
                -
                -
                - - - diff --git a/src/main/webapp/pages/materials/materialProperty.jsp b/src/main/webapp/pages/materials/materialProperty.jsp deleted file mode 100644 index 337994be..00000000 --- a/src/main/webapp/pages/materials/materialProperty.jsp +++ /dev/null @@ -1,301 +0,0 @@ -<%@page import="com.jsh.util.Tools" %> -<%@ page language="java" pageEncoding="utf-8" %> -<% - String path = request.getContextPath(); - String clientIp = Tools.getLocalIp(request); -%> - - - - 商品属性 - - - - - - - - - - - - - - -
                - - - - - - - -
                名称: - -   - 查询   - 重置 -
                -
                - - -
                -
                -
                - -
                -
                - - - - - - - - - - - - - - - - - -
                名称 - -
                是否启用 - -
                排序 - -
                别名 - -
                - -
                -
                -
                - 保存 - 取消 -
                - - - - \ No newline at end of file diff --git a/src/main/webapp/pages/materials/materialcategory.jsp b/src/main/webapp/pages/materials/materialcategory.jsp deleted file mode 100644 index c8b2d330..00000000 --- a/src/main/webapp/pages/materials/materialcategory.jsp +++ /dev/null @@ -1,551 +0,0 @@ -<%@page import="com.jsh.util.Tools" %> -<%@ page language="java" pageEncoding="utf-8" %> -<% - String path = request.getContextPath(); - String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + path + "/"; - String clientIp = Tools.getLocalIp(request); -%> - - - - 商品类别管理 - - - - - - - - - - - - - - -
                - - - - - - - - - - -
                名称: - -  类别: - - - -   - 查询   - 重置 -
                -
                - - -
                -
                -
                - -
                -
                - - - - - - - - - - - - - -
                名称
                层次 - -
                上级 - - -
                - -
                -
                -
                - 保存 - 取消 -
                - - - - \ No newline at end of file diff --git a/src/main/webapp/pages/materials/other_in_list.jsp b/src/main/webapp/pages/materials/other_in_list.jsp deleted file mode 100644 index 7a407a52..00000000 --- a/src/main/webapp/pages/materials/other_in_list.jsp +++ /dev/null @@ -1,157 +0,0 @@ -<%@page import="com.jsh.util.Tools" %> -<%@ page language="java" pageEncoding="utf-8" %> -<% - String path = request.getContextPath(); - String clientIp = Tools.getLocalIp(request); -%> - - - - 其它入库 - - - - - - - - - - - - - - - - - - -
                - - - - - - - - - - - - - -
                单据编号: - - 商品信息: - - 单据日期: - - - - -   - 查询  - 重置 -
                -
                - - -
                -
                -
                - -
                -
                - - - - - - - - - - - - - - - - - - -
                供应商: -
                - -
                -
                - 增加供应商 -
                -
                单据日期: - - 单据编号: - - -
                - -
                -
                - -
                - -
                -
                -
                - 保存 - 取消 -
                -
                - - - - - - - - - - - - - - - - - - - -
                供应商: - - 单据日期: - - 单据编号: - -
                - -
                -
                单据备注: - -
                -
                - - diff --git a/src/main/webapp/pages/materials/other_out_list.jsp b/src/main/webapp/pages/materials/other_out_list.jsp deleted file mode 100644 index e741e6fc..00000000 --- a/src/main/webapp/pages/materials/other_out_list.jsp +++ /dev/null @@ -1,151 +0,0 @@ -<%@page import="com.jsh.util.Tools" %> -<%@ page language="java" pageEncoding="utf-8" %> -<% - String path = request.getContextPath(); - String clientIp = Tools.getLocalIp(request); -%> - - - - 其它出库 - - - - - - - - - - - - - - - - - - -
                - - - - - - - - - - - - - -
                单据编号: - - 商品信息: - - 单据日期: - - - - -   - 查询  - 重置 -
                -
                - - -
                -
                -
                - -
                -
                - - - - - - - - - - - - - - - - - - -
                客户: - - 单据日期: - - 单据编号: - - -
                - -
                -
                - -
                - -
                -
                -
                - 保存 - 取消 -
                -
                - - - - - - - - - - - - - - - - - - - -
                客户: - - 单据日期: - - 单据编号: - -
                - -
                -
                单据备注: - -
                -
                - - \ No newline at end of file diff --git a/src/main/webapp/pages/materials/person.jsp b/src/main/webapp/pages/materials/person.jsp deleted file mode 100644 index 45e14d31..00000000 --- a/src/main/webapp/pages/materials/person.jsp +++ /dev/null @@ -1,467 +0,0 @@ -<%@page import="com.jsh.util.Tools" %> -<%@ page language="java" pageEncoding="utf-8" %> -<% - String path = request.getContextPath(); - String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + path + "/"; - String clientIp = Tools.getLocalIp(request); -%> - - - - 经手人管理 - - - - - - - - - - - - - - -
                - - - - - - - - - - - -
                姓名: - - 类型: - -     - 查询   - 重置 -
                -
                - - -
                -
                -
                - -
                -
                - - - - - - - - - -
                类型 - -
                姓名 - -
                - -
                -
                -
                - 保存 - 取消 -
                - - - - \ No newline at end of file diff --git a/src/main/webapp/pages/materials/purchase_back_list.jsp b/src/main/webapp/pages/materials/purchase_back_list.jsp deleted file mode 100644 index 0ef26f22..00000000 --- a/src/main/webapp/pages/materials/purchase_back_list.jsp +++ /dev/null @@ -1,390 +0,0 @@ -<%@page import="com.jsh.util.Tools" %> -<%@ page language="java" pageEncoding="utf-8" %> -<% - String path = request.getContextPath(); - String clientIp = Tools.getLocalIp(request); -%> - - - - 采购退货 - - - - - - - - - - - - - - - - - - -
                - - - - - - - - - - - - - -
                单据编号: - - 商品信息: - - 单据日期: - - - - -   - 查询  - 重置 -
                -
                - - -
                -
                -
                - -
                -
                - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                供应商: -
                - -
                -
                - 增加供应商 -
                -
                单据日期: - - 单据编号: - - -
                - -
                -
                - -
                优惠率: - - % - 退款优惠: - - 优惠后金额: - - 本次退款: - -
                结算账户: - - - 本次欠款: - - 采购费用: - - - -
                - -
                -
                -
                - 保存 - 取消 -
                -
                - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                供应商: - - 单据日期: - - 单据编号: - -
                - -
                -
                单据备注: - -
                优惠率: - - % - 付款优惠: - - 优惠后金额: - - 本次付款: - -
                结算账户: - - 本次欠款: - - 采购费用: - - -
                -
                -
                - - - - - - - - - - - - - - - - - - -
                -
                -
                - 保存 - 取消 -
                -
                - - - - - - - - - - - -
                结算账户金额
                合计:
                - - - - - - -
                -
                -
                - 保存 - 取消 -
                -
                -
                - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                名称 - - 联系人 - -
                联系电话 - - 手机 - -
                电子邮箱 - - 传真 - -
                期初应收 - - 期初应付 - -
                累计应收 - - 累计应付 - -
                纳税人识别号 - - 税率 - -
                开户行 - - 账号 - -
                地址 - -
                备注 - -
                -
                -
                -
                - 保存 - 取消 -
                - - diff --git a/src/main/webapp/pages/materials/purchase_in_list.jsp b/src/main/webapp/pages/materials/purchase_in_list.jsp deleted file mode 100644 index 07a7d57c..00000000 --- a/src/main/webapp/pages/materials/purchase_in_list.jsp +++ /dev/null @@ -1,393 +0,0 @@ -<%@page import="com.jsh.util.Tools" %> -<%@ page language="java" pageEncoding="utf-8" %> -<% - String path = request.getContextPath(); - String clientIp = Tools.getLocalIp(request); -%> - - - - 采购入库 - - - - - - - - - - - - - - - - - - -
                - - - - - - - - - - - - - -
                单据编号: - - 商品信息: - - 单据日期: - - - - -   - 查询  - 重置 -
                -
                - - -
                -
                -
                - -
                -
                - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                供应商: -
                - -
                -
                - 增加供应商 -
                -
                单据日期: - - 单据编号: - - -
                - -
                -
                - -
                优惠率: - - % - 付款优惠: - - 优惠后金额: - - 本次付款: - -
                结算账户: - - - 本次欠款: - - 采购费用: - - - 结算天数: - -
                - -
                -
                -
                - 保存 - 取消 -
                -
                - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                供应商: - - 单据日期: - - 单据编号: - -
                - -
                -
                单据备注: - -
                优惠率: - - % - 付款优惠: - - 优惠后金额: - - 本次付款: - -
                结算账户: - - 本次欠款: - - 采购费用: - - 结算天数: - -
                -
                -
                - - - - - - - - - - - - - - - - - - -
                -
                -
                - 保存 - 取消 -
                -
                - - - - - - - - - - - -
                结算账户金额
                合计:
                - - - - - - -
                -
                -
                - 保存 - 取消 -
                -
                -
                - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                名称 - - 联系人 - -
                联系电话 - - 手机 - -
                电子邮箱 - - 传真 - -
                期初应收 - - 期初应付 - -
                累计应收 - - 累计应付 - -
                纳税人识别号 - - 税率 - -
                开户行 - - 账号 - -
                地址 - -
                备注 - -
                -
                -
                -
                - 保存 - 取消 -
                - - diff --git a/src/main/webapp/pages/materials/retail_back_list.jsp b/src/main/webapp/pages/materials/retail_back_list.jsp deleted file mode 100644 index ec162cf4..00000000 --- a/src/main/webapp/pages/materials/retail_back_list.jsp +++ /dev/null @@ -1,222 +0,0 @@ -<%@page import="com.jsh.util.Tools" %> -<%@ page language="java" pageEncoding="utf-8" %> -<% - String path = request.getContextPath(); - String clientIp = Tools.getLocalIp(request); -%> - - - - 零售退货 - - - - - - - - - - - - - - - - - - -
                - - - - - - - - - - - - - -
                单据编号: - - 商品信息: - - 单据日期: - - - - -   - 查询  - 重置 -
                -
                - - -
                -
                -
                - -
                -
                - - - - - - - - - - - - - - - - - - -
                会员卡号: - - 单据日期: - - 单据编号: - -
                - -
                -
                - - - - - - - - - - - - - - - - - - - - - - - -
                实付金额
                - -
                付款金额
                - -
                找零
                - -
                付款账户: - - -
                -
                - -
                - -
                -
                -
                - 保存 - 取消 -
                -
                - - - - - - - - - - - - - - - - - - -
                会员卡号: - - 单据日期: - - 单据编号: - - -
                - -
                -
                - - - - - - - - - - - - - - - - - - - - - - - -
                实付金额
                - -
                付款金额
                - -
                找零
                - -
                付款账户: - -
                -
                - -
                -
                - - \ No newline at end of file diff --git a/src/main/webapp/pages/materials/retail_out_list.jsp b/src/main/webapp/pages/materials/retail_out_list.jsp deleted file mode 100644 index 4b3c1eee..00000000 --- a/src/main/webapp/pages/materials/retail_out_list.jsp +++ /dev/null @@ -1,253 +0,0 @@ -<%@page import="com.jsh.util.Tools" %> -<%@ page language="java" pageEncoding="utf-8" %> -<% - String path = request.getContextPath(); - String clientIp = Tools.getLocalIp(request); -%> - - - - 零售出库 - - - - - - - - - - - - - - - - - - -
                - - - - - - - - - - - - - -
                单据编号: - - 商品信息: - - 单据日期: - - - - -   - 查询  - 重置 -
                -
                - - -
                -
                -
                - -
                -
                - - - - - - - - - - - - - - - - - - -
                会员卡号: - - 单据日期: - - 单据编号: - - 付款类型: - -
                - -
                -
                - - - - - - - - - - - - - - - - - - - - - - - -
                实收金额
                - -
                收款金额
                - -
                找零
                - -
                收款账户: - - -
                -
                - -
                - -
                -
                -
                - 保存 - 取消 -
                -
                - - - - - - - - - - - - - - - - - - -
                会员卡号: - - 单据日期: - - 单据编号: - - 付款类型: - -
                - -
                -
                - - - - - - - - - - - - - - - - - - - - - - - -
                实收金额
                - -
                收款金额
                - -
                找零
                - -
                收款账户: - -
                -
                - -
                -
                -
                - - - - - - - - - - - - - - - - - - -
                -
                -
                - 保存 - 取消 -
                - - \ No newline at end of file diff --git a/src/main/webapp/pages/materials/sale_back_list.jsp b/src/main/webapp/pages/materials/sale_back_list.jsp deleted file mode 100644 index f6c8a611..00000000 --- a/src/main/webapp/pages/materials/sale_back_list.jsp +++ /dev/null @@ -1,285 +0,0 @@ -<%@page import="com.jsh.util.Tools" %> -<%@ page language="java" pageEncoding="utf-8" %> -<% - String path = request.getContextPath(); - String clientIp = Tools.getLocalIp(request); -%> - - - - 销售退货 - - - - - - - - - - - - - - - - - - -
                - - - - - - - - - - - - - -
                单据编号: - - 商品信息: - - 单据日期: - - - - -   - 查询  - 重置 -
                -
                - - -
                -
                -
                - -
                -
                - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                客户: - - 销售人员: - - 单据日期: - - 单据编号: - -
                - -
                -
                - -
                优惠率: - - % - 退款优惠: - - 优惠后金额: - - 本次退款: - -
                结算账户: - - - 本次欠款: - - 销售费用: - - - -
                - -
                -
                -
                - 保存 - 取消 -
                -
                - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                客户: - - 销售人员: - - 单据日期: - - 单据编号: - -
                - -
                -
                单据备注: - -
                优惠率: - - % - 退款优惠: - - 优惠后金额: - - 本次退款: - -
                结算账户: - - 本次欠款: - - 销售费用: - - -
                -
                -
                - - - - - - - - - - - - - - - - - - -
                -
                -
                - 保存 - 取消 -
                -
                - - - - - - - - - - - -
                结算账户金额
                合计:
                - - - - - - -
                -
                -
                - 保存 - 取消 -
                - - \ No newline at end of file diff --git a/src/main/webapp/pages/materials/sale_out_list.jsp b/src/main/webapp/pages/materials/sale_out_list.jsp deleted file mode 100644 index 439ca738..00000000 --- a/src/main/webapp/pages/materials/sale_out_list.jsp +++ /dev/null @@ -1,289 +0,0 @@ -<%@page import="com.jsh.util.Tools" %> -<%@ page language="java" pageEncoding="utf-8" %> -<% - String path = request.getContextPath(); - String clientIp = Tools.getLocalIp(request); -%> - - - - 销售出库 - - - - - - - - - - - - - - - - - - -
                - - - - - - - - - - - - - -
                单据编号: - - 商品信息: - - 单据日期: - - - - -   - 查询  - 重置 -
                -
                - - -
                -
                -
                - -
                -
                - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                客户: - - 销售人员: - - 单据日期: - - 单据编号: - -
                - -
                -
                - -
                优惠率: - - % - 收款优惠: - - 优惠后金额: - - 本次收款: - -
                结算账户: - - - 本次欠款: - - 销售费用: - - - 结算天数: - -
                - -
                -
                -
                - 保存 - 取消 -
                -
                - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                客户: - - 销售人员: - - 单据日期: - - 单据编号: - -
                - -
                -
                单据备注: - -
                优惠率: - - % - 收款优惠: - - 优惠后金额: - - 本次收款: - -
                结算账户: - - 本次欠款: - - 销售费用: - - 结算天数: - -
                -
                -
                - - - - - - - - - - - - - - - - - - -
                -
                -
                - 保存 - 取消 -
                -
                - - - - - - - - - - - -
                结算账户金额
                合计:
                - - - - - - -
                -
                -
                - 保存 - 取消 -
                - - - \ No newline at end of file diff --git a/src/main/webapp/pages/other/clock.jsp b/src/main/webapp/pages/other/clock.jsp deleted file mode 100644 index 0abe8b5c..00000000 --- a/src/main/webapp/pages/other/clock.jsp +++ /dev/null @@ -1,145 +0,0 @@ -<%@page import="com.jsh.util.Tools" %> -<%@ page language="java" pageEncoding="utf-8" %> -<% - String path = request.getContextPath(); - String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + path + "/"; - String clientIp = Tools.getLocalIp(request); -%> - - - - 资产管理 - - - - - - - - - - - - - - - - - - -
                - - - \ No newline at end of file diff --git a/src/main/webapp/pages/other/preview.jsp b/src/main/webapp/pages/other/preview.jsp deleted file mode 100644 index 3de873f0..00000000 --- a/src/main/webapp/pages/other/preview.jsp +++ /dev/null @@ -1,42 +0,0 @@ -<%@page import="com.jsh.util.Tools" %> -<%@ page language="java" pageEncoding="utf-8" %> -<% - String path = request.getContextPath(); - String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + path + "/"; - String clientIp = Tools.getLocalIp(request); -%> - - - - Simple Map - - - - - - - - -
                - - \ No newline at end of file diff --git a/src/main/webapp/pages/reports/account_report.jsp b/src/main/webapp/pages/reports/account_report.jsp deleted file mode 100644 index 9a5b1538..00000000 --- a/src/main/webapp/pages/reports/account_report.jsp +++ /dev/null @@ -1,316 +0,0 @@ -<%@page import="com.jsh.util.Tools" %> -<%@ page language="java" pageEncoding="utf-8" %> -<% - String path = request.getContextPath(); - String clientIp = Tools.getLocalIp(request); -%> - - - - 结算账户查询 - - - - - - - - - - - - - - - - - -
                - - - - - - - - - - - -
                名称: - -   编号: - -   - 查询 -    - 打印 -
                -
                - - -
                -
                -
                - -
                -
                -
                - - - - \ No newline at end of file diff --git a/src/main/webapp/pages/reports/buy_in_report.jsp b/src/main/webapp/pages/reports/buy_in_report.jsp deleted file mode 100644 index f761bc06..00000000 --- a/src/main/webapp/pages/reports/buy_in_report.jsp +++ /dev/null @@ -1,256 +0,0 @@ -<%@page import="com.jsh.util.Tools" %> -<%@ page language="java" pageEncoding="utf-8" %> -<% - String path = request.getContextPath(); - String clientIp = Tools.getLocalIp(request); -%> - - - - 进货统计 - - - - - - - - - - - - - - - - -
                - - - - - - - - -
                月份: - -    - 查询 -    - 打印 -
                -
                - - -
                -
                -
                - - - - \ No newline at end of file diff --git a/src/main/webapp/pages/reports/customer_account.jsp b/src/main/webapp/pages/reports/customer_account.jsp deleted file mode 100644 index eae7f30a..00000000 --- a/src/main/webapp/pages/reports/customer_account.jsp +++ /dev/null @@ -1,364 +0,0 @@ -<%@page import="com.jsh.util.Tools" %> -<%@ page language="java" pageEncoding="utf-8" %> -<% - String path = request.getContextPath(); - String clientIp = Tools.getLocalIp(request); -%> - - - - 客户对账 - - - - - - - - - - - - - - - - - - -
                - - - - - - - - - - - - - - -
                客户: - -  单据日期: - - - - -   - 查询 -    - 打印 -   - 期初应收:0   - 期末应收:0 -
                -
                - - -
                -
                -
                - - - - \ No newline at end of file diff --git a/src/main/webapp/pages/reports/gift_manage_report.jsp b/src/main/webapp/pages/reports/gift_manage_report.jsp deleted file mode 100644 index 5e1dbad4..00000000 --- a/src/main/webapp/pages/reports/gift_manage_report.jsp +++ /dev/null @@ -1,264 +0,0 @@ -<%@page import="com.jsh.util.Tools" %> -<%@ page language="java" pageEncoding="utf-8" %> -<% - String path = request.getContextPath(); - String clientIp = Tools.getLocalIp(request); -%> - - - - 礼品卡统计 - - - - - - - - - - - - - - - -
                - - - - - - - -
                礼品卡: - -   - 查询 -
                -
                - - -
                -
                -
                - - - - \ No newline at end of file diff --git a/src/main/webapp/pages/reports/in_detail.jsp b/src/main/webapp/pages/reports/in_detail.jsp deleted file mode 100644 index f7a6ff76..00000000 --- a/src/main/webapp/pages/reports/in_detail.jsp +++ /dev/null @@ -1,332 +0,0 @@ -<%@page import="com.jsh.util.Tools" %> -<%@ page language="java" pageEncoding="utf-8" %> -<% - String path = request.getContextPath(); - String clientIp = Tools.getLocalIp(request); -%> - - - - 入库明细 - - - - - - - - - - - - - - - - - - -
                - - - - - - - - - - - - - - - -
                供应商: - -  仓库: - -  单据日期: - - - - -   - 查询 -    - 打印 -
                -
                - - -
                -
                -
                - - - - \ No newline at end of file diff --git a/src/main/webapp/pages/reports/in_material_count.jsp b/src/main/webapp/pages/reports/in_material_count.jsp deleted file mode 100644 index 4dfd423a..00000000 --- a/src/main/webapp/pages/reports/in_material_count.jsp +++ /dev/null @@ -1,321 +0,0 @@ -<%@page import="com.jsh.util.Tools" %> -<%@ page language="java" pageEncoding="utf-8" %> -<% - String path = request.getContextPath(); - String clientIp = Tools.getLocalIp(request); -%> - - - - 入库汇总 - - - - - - - - - - - - - - - - - -
                - - - - - - - - - - - - - - - -
                供应商: - -  仓库: - -  单据日期: - - - - -   - 查询 -    - 打印 -
                -
                - - -
                -
                -
                - - - - \ No newline at end of file diff --git a/src/main/webapp/pages/reports/in_out_stock_report.jsp b/src/main/webapp/pages/reports/in_out_stock_report.jsp deleted file mode 100644 index c343dc0c..00000000 --- a/src/main/webapp/pages/reports/in_out_stock_report.jsp +++ /dev/null @@ -1,422 +0,0 @@ -<%@page import="com.jsh.util.Tools" %> -<%@ page language="java" pageEncoding="utf-8" %> -<% - String path = request.getContextPath(); - String clientIp = Tools.getLocalIp(request); -%> - - - - 库存状况 - - - - - - - - - - - - - - - - - -
                - - - - - - - - - - -
                仓库: - -  月份: - -   - 查询 -    - 导出 -    - 打印 -    -
                -
                - - -
                -
                -
                - - - - \ No newline at end of file diff --git a/src/main/webapp/pages/reports/out_detail.jsp b/src/main/webapp/pages/reports/out_detail.jsp deleted file mode 100644 index ede34c43..00000000 --- a/src/main/webapp/pages/reports/out_detail.jsp +++ /dev/null @@ -1,332 +0,0 @@ -<%@page import="com.jsh.util.Tools" %> -<%@ page language="java" pageEncoding="utf-8" %> -<% - String path = request.getContextPath(); - String clientIp = Tools.getLocalIp(request); -%> - - - - 出库明细 - - - - - - - - - - - - - - - - - - -
                - - - - - - - - - - - - - - - -
                客户: - -  仓库: - -  单据日期: - - - - -   - 查询 -    - 打印 -
                -
                - - -
                -
                -
                - - - - \ No newline at end of file diff --git a/src/main/webapp/pages/reports/out_material_count.jsp b/src/main/webapp/pages/reports/out_material_count.jsp deleted file mode 100644 index c897c2d0..00000000 --- a/src/main/webapp/pages/reports/out_material_count.jsp +++ /dev/null @@ -1,321 +0,0 @@ -<%@page import="com.jsh.util.Tools" %> -<%@ page language="java" pageEncoding="utf-8" %> -<% - String path = request.getContextPath(); - String clientIp = Tools.getLocalIp(request); -%> - - - - 出库汇总 - - - - - - - - - - - - - - - - - -
                - - - - - - - - - - - - - - - -
                客户: - -  仓库: - -  单据日期: - - - - -   - 查询 -    - 打印 -
                -
                - - -
                -
                -
                - - - - \ No newline at end of file diff --git a/src/main/webapp/pages/reports/sale_out_report.jsp b/src/main/webapp/pages/reports/sale_out_report.jsp deleted file mode 100644 index a2f3fd83..00000000 --- a/src/main/webapp/pages/reports/sale_out_report.jsp +++ /dev/null @@ -1,259 +0,0 @@ -<%@page import="com.jsh.util.Tools" %> -<%@ page language="java" pageEncoding="utf-8" %> -<% - String path = request.getContextPath(); - String clientIp = Tools.getLocalIp(request); -%> - - - - 销售统计 - - - - - - - - - - - - - - - - -
                - - - - - - - - - -
                月份: - -    - 查询 -    - 打印 - 注:此处包含零售+批发销售
                -
                - - -
                -
                -
                - - - - \ No newline at end of file diff --git a/src/main/webapp/pages/reports/vendor_account.jsp b/src/main/webapp/pages/reports/vendor_account.jsp deleted file mode 100644 index 462d5c84..00000000 --- a/src/main/webapp/pages/reports/vendor_account.jsp +++ /dev/null @@ -1,364 +0,0 @@ -<%@page import="com.jsh.util.Tools" %> -<%@ page language="java" pageEncoding="utf-8" %> -<% - String path = request.getContextPath(); - String clientIp = Tools.getLocalIp(request); -%> - - - - 供应商对账 - - - - - - - - - - - - - - - - - - -
                - - - - - - - - - - - - - - -
                供应商: - -  单据日期: - - - - -   - 查询 -    - 打印 -   - 期初应付:0   - 期末应付:0 -
                -
                - - -
                -
                -
                - - - - \ No newline at end of file diff --git a/src/main/webapp/pages/user/password.jsp b/src/main/webapp/pages/user/password.jsp deleted file mode 100644 index c233af87..00000000 --- a/src/main/webapp/pages/user/password.jsp +++ /dev/null @@ -1,139 +0,0 @@ -<%@page import="com.jsh.util.Tools" %> -<%@ page language="java" pageEncoding="utf-8" %> -<% - String path = request.getContextPath(); - String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + path + "/"; - String clientIp = Tools.getLocalIp(request); -%> - - - - 个人资料 - - - - - - - - - - - - -
                -
                -
                - - - -
                -
                - - - -
                -
                - - - -
                - -
                -
                 
                -
                - 保存 - 重置 -
                -
                - - - - \ No newline at end of file diff --git a/src/main/webapp/pages/user/userCustomer.jsp b/src/main/webapp/pages/user/userCustomer.jsp deleted file mode 100644 index 5d1498f9..00000000 --- a/src/main/webapp/pages/user/userCustomer.jsp +++ /dev/null @@ -1,137 +0,0 @@ -<%@page import="com.jsh.util.Tools" %> -<%@ page language="java" pageEncoding="utf-8" %> -<% - String path = request.getContextPath(); - String clientIp = Tools.getLocalIp(request); -%> - - - - 用户对应客户 - - - - - - - - - - - - - - -
                - 保存 -
                -
                -
                  -
                  - - - - \ No newline at end of file diff --git a/src/main/webapp/pages/user/userDepot.jsp b/src/main/webapp/pages/user/userDepot.jsp deleted file mode 100644 index 1c25d33b..00000000 --- a/src/main/webapp/pages/user/userDepot.jsp +++ /dev/null @@ -1,138 +0,0 @@ -<%@page import="com.jsh.util.Tools" %> -<%@ page language="java" pageEncoding="utf-8" %> -<% - String path = request.getContextPath(); - String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + path + "/"; - String clientIp = Tools.getLocalIp(request); -%> - - - - 用户对应部门 - - - - - - - - - - - - - - -
                  - 保存 -
                  -
                  -
                    -
                    - - - - \ No newline at end of file diff --git a/src/main/webapp/pages/user/userRole.jsp b/src/main/webapp/pages/user/userRole.jsp deleted file mode 100644 index cadb1f09..00000000 --- a/src/main/webapp/pages/user/userRole.jsp +++ /dev/null @@ -1,138 +0,0 @@ -<%@page import="com.jsh.util.Tools" %> -<%@ page language="java" pageEncoding="utf-8" %> -<% - String path = request.getContextPath(); - String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + path + "/"; - String clientIp = Tools.getLocalIp(request); -%> - - - - 用户对应角色 - - - - - - - - - - - - - - -
                    - 保存 -
                    -
                    -
                      -
                      - - - - \ No newline at end of file diff --git a/src/main/webapp/pages/user/userinfo.jsp b/src/main/webapp/pages/user/userinfo.jsp deleted file mode 100644 index a4b85ac4..00000000 --- a/src/main/webapp/pages/user/userinfo.jsp +++ /dev/null @@ -1,188 +0,0 @@ -<%@page import="com.jsh.util.Tools" %> -<%@ page language="java" pageEncoding="utf-8" %> -<% - String path = request.getContextPath(); - String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + path + "/"; - String clientIp = Tools.getLocalIp(request); -%> - - - - 个人资料 - - - - - - - - - - - - -
                      -
                      -
                      -
                      - - -
                      - -
                      - - -
                      -
                      - - -
                      -
                      - - -
                      -
                      - - -
                      -
                      - - -
                      - - -
                      -
                       
                      -
                      - 修改 - 取消 -
                      -
                      -
                      - - - - \ No newline at end of file diff --git a/src/main/webapp/upload/images/deskIcon/0000000001.png b/src/main/webapp/upload/images/deskIcon/0000000001.png deleted file mode 100644 index dcfdbb0e25df36c6006163bb2b3c788dab8b36c0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11033 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 TBkp#Q00000NkvXXu0mjfsvuBn diff --git a/src/main/webapp/upload/images/deskIcon/0000000002.png b/src/main/webapp/upload/images/deskIcon/0000000002.png deleted file mode 100644 index 098c451dec5ceb163b6c7c7daa245ea96f90a827..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1842 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

                      B7)Evv;YXJ8hEp$L=jeU>%`Ff86Rq-gdir~4 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 Rsrdi^002ovPDHLkV1g3%*jWGo diff --git a/src/main/webapp/upload/images/deskIcon/0000000006.png b/src/main/webapp/upload/images/deskIcon/0000000006.png deleted file mode 100644 index a67f99f11135b5f6cf2991e202623b429d6b66fa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14269 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 GJmY^i*WCdC diff --git a/src/main/webapp/upload/images/deskIcon/0000000010.png b/src/main/webapp/upload/images/deskIcon/0000000010.png deleted file mode 100644 index e4c94be7b8b0b0826abc645c9a9bc79fd7dafd6d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15115 zcmW+-2RxN+8-H+&WQAmJIvF{(kiAJrLUuOU*_+JlkZeM-LI?>VNhL}0+971`&3B!z zpI7fM=kVP3eck`-KQ6I4+Nz|)^u!2)kgBUG>A~Nj*#C$K;B%LZWj}(jBI-)=`o1}< zZ9Z;{BUu7R%b1%tED1U+C}QNvIElh7kTiR}jC<7AM$L?hF2B1j8(``*!dnyMGgZC6 zb~OC!J^$44sx~33Odv_^+o8ZgdQtJ4i1jb zDIBVk@D;C$u=WW7w+eaPr}RijhIScCeqP?>%Kq`CSS5=1o(}i%oz>v>`=l%vaCNAA zP}4F-8TmWMr~5~NGNu?>CH54g*IlP#7|q8QIksx+y5BnKc%VZCKRp{qnwczm|LF8g zBYz;;SDMTygN+Dx$N#28B3>5;&BOB{mg;Kc*y*<>dKoWN0a}A8G&-$s?tN@*>{qjz zD}_2lMQDW*J^3nwJ1^1_Y>Zy>U2HI}YModQshCleN8*a85nn^|G^-Z+15Byx-dX(2vT=(w$dA~gBeFJGircKvV3UPas$`GW&ffHFFLLcze6!aZO*cN%6xv;{}Ks7dCV1*WmwEr zh8wrvG9x!>P&hMgz6DK9O@8NRr%PkU0ei%<`u>TU#ITN}{BCrD6vfIHp#Fl3LWi%ApltR8Etm|By&Hu?N8qK+M4UTkHPgJ7}pb!)1{{Ah(MT$ zQMmcL{%zcp@tHPsJn4?i3X7V5V@{kS7vhcsKQi~aPfH|DnrF-h9qJbC75e&h6(b`$z4D*o2cchW6>s0Z zJ^z(HP3n@tQ-oSs(Bk^?-(COpZT~jO_NgR8J_2Rkze~F%tRpQ0GT$cZ2DYWi8;nWS zQ(4t1OG`^Jf`VZ)GnOy)d44;KIgi%i7ol-Gq%X^@6%X3;+;dS{3pBjM0HyR0kzq+t zfyd0#fI4@RAW={4*p{AuZPWgf9VfTviByzj!LVaz9iLDZNh0G7+_ItA_$vY*7Pc+d zC)++*3%wp&eOXaa>@YokOcWlf#`%Yij?Spz;aKCG#*?qPWF!1If0a(ol-O%st*op# z)H{+Fb2Lhds>eJmugwZ%vc_1dQm~K^xG(+S+K^7t;*K~w3&vK&Sd**jg9jX3)TykW z%M_@U!wf1K2AWGUt9_i;xZiT)KJ%QA;Z^^k$ed(X(>ohBwXO_&!7iW(56I+vob7WZ*`0?UE}fQru&=5MuoB= zxDEooDl#LN;9SEv)qUquR2_qlhVmyj&YKygU!hq0x5_s+H}{s79R8`8etpzx@aa9d zybN0uoTx;uw!Xgp^q-!1D5(@R6rfoh--Ffv8s56i;EFl_4*l^%k0@NO1h)(Gb7A1> zRxBs$k1$JGPRa{!-n0LH5q<(iQtwzmKtPIiS>d34^}iNVUWz%YZy~3oL=((vfAsn>Q!wibA%?qUNdPk5KY(Kb}6Qz6{GPLSOu5$KWTKO9mjE zmX@~REB!X`P$-f4W}LkUG1TDXq!~PEL2)r&Nl6KX@};j|zv`6hL#gQt&2#&0DW7;G z^sn%z^~u$Yh@W=JojCG_1EJEgD3} z#mB?dgopoCbsxH5Vt6=iOp)5`#mM4Vch&Bo>fcw(EfQz#4~(h|280i2;-vu5o@tem zA?JPxvwkC;ca82-_bd)8wHKkkFYhMX&=u;$ke%IkZF_8iAu1k>u@;K87P0;HKFVSh&F-p?m-M^3dj@P@EcRx5buu~A}4C91Gm2;^Z7Z7u*hZ|Hp?y(xh znJ&JCWNC5Bd0h<~f1s@UeR7g4!v-!*LUr|ZLq3{CFUf8zLH)aTE#VsOk9(3gI*%&c z$hD-^zjv>=rG-9A%a*xmfl|Tc+Livg?~V=FWlJ;n!Ue^^_xSKZ;pCuKHfm&9`OY0G zs19Re<3-_J|C@#xJzu_%yfNknq~cV^eT~_EIcVRAdoW0xxX(m*k1Nz#Xh}FrEBiF>C$aDrD+MWEUhSy+#!bdAEwO1>IuwGzG8qt310a;17} zOj`}!4TinHV|gR7Eqn1xk6eZgyc$Cik&!|3rlDaFA?>e&7NZEQkutVhIy0HpDV1|x zbdJ_mthZ*^5jY7f2tFudQS2#1QPI)m!LH8EO7L>1z%FuG=_HH#HUt(R#~Rw%DQ_&R zV`%u6)vf?dERo2YX4A~n5#6Y^@d{;8Ygk%5h!%ab6^4!zkyA|8AP`AWvlxDL7nZ!~ z8#vfUL_?|7gz^4~j zDTuU;`Dp01`pAfFj(Td29Jsl~m9}#Q>j1)>5$&8Snt)5C=wt+(rRXI$}? zl9ZCN#Lz<7^3hym4%*RO-1Xm(z8#_TqDqsGCW2G_t=AGITs?T%;Lo3tzkV42d~_~( z>AB}m2!x_yfxLx#NhUyv4Dl57oTZ`TKrCoi8MG31ge}v~O3`O1BZWFIr<}#`o+X_) zKT2jY!ov(C2-7D3*wq@66rumDHcdsL<7jDVLx&yl2ey4zYI}8zjpOur@QpGGhaDaK znpBFz%xY9IwAh-2XUFab@X)q^{h}8yP^p}7`AL9L01@u9rUZ7uopu2MM#0wq|MuUX zDKI-3uwF7UA7OGAkolaLW%89XY2x8>7;k=Y7@~Ny)gQBmd_&q#ymGCLkoN_1m_ERup`+Wg zmsV6cW-@_;3t?yYA} zO(iQ)$i?Z35y5Xhe0=>xflDQsA`D{Aw9lVCb5knT-H?_YXt@WS*S`$_4%CoD@QH*$ zl`%dbQAB5G0)zMuEem&dL4b9ML`6$WHV~OlR5%hC{oBmmPPn`na`5u;0rvBAc(|~z z5JxPVl#7cCln#Y*iZ*)Kv0-s-Es9eeEg;YfCG7t1=QYDB1L=(pycdM5`aGARL!+7m$Y6W%m3uilJvRH-I+)P);SN!fB%0YRRtAizW;Jc{hhUyVYSUYF2`TjO@?%LPdKQmyhp*jyvl3#9YSJ*6F~OXkq&m=;|tg#h+3D3VIe>NqmO`35L*klEuhyVWl1C&72Q(xW$`2$O(R+a}47omTwT^3X-twiq{*g__6-EcZBD4_bW z63j3I`|ORbQ;BeSfyeQDvoTWPqrn^4p7zW0_}kr$f`J$%RB_4>o2;-_K@PWE!O$ks`P5u3kme6iIbx`VS7xol6A0KhxQ6FY7fif(h!h!69xYyCsQ;-Ty zJ_wy!$8utD8r@cY3!1zSq{~10S%&r)sk%=X(TPNN$=~VeW=OH2!)o07_Za};CWH1( z)l!wN=E2DnzkW>tjjCMVaj+J&5kbU^5z-(Y7ddueLB4g_qM{>Al|%U`wDO0XTp`q)#bGg4M=aw{8`-wldtgbLV%fkHD`= zqlo9v>9Nuhh!8MLT9WGr>&=57nn%?{W%Acsy<1PKA6=~R^LO>}*_Q$udtZXF^eo7w zjk$a-h4X@UYc9Kkqa!hBaX?3jkTdC{qoeP?e-pudYn>ni+EhHKw!;UD$rXhr6NP1% zZf+EI19{3out9-(ul$yu&`1^JBv=HsN1C7#LCPRD{j>be!K!OWd}1OQH4P2G4c37o z>C(x3BzO-qHq?jhF->DZN&WMZ{$Gnj2s=cn;x`sTMu3z@uqJM`({TN-s0k7sBzWD z!|eq@X=xH*{a>@iVNa>ATp0@2Lw@qYo#(+}hRE^^@Yu>W5pEd$YYsKt8*m z?J_47S63%$6SLKxXmR6#ULmeBQ_~M8!RIy3Vq;BeZ^fJD;tkJV zSW;*4Ydx2;5u($&efy5}`{T7%5qbzdUONu+oUBfr@k8}PrMD$gJOw=Ij39)hp|q@Q z5M(h}B!JdxsgV{KwTG18RD^}$z}*Gxm`w^f;edy*{}#SOf}&BC=?mdYm-)tX@3;>H zm6y7DUw*Znv#Y3yPg?%k+8S>W+Ms9F-7$!2B!9JH#@r4$8q$B2?DkrtL;;Qrdhy~S8Uz8> zSP%%_jE8dYQlVI~c}s20ku^u3@rwO92jvY$GFOjgliU%h_f5pr*$7Cqy_%k$p7ZJL zL$saUz%Q-{u707G)>fdKF{!DP^vN?4WHj;kAYk6)yGrJk4$BdeGk1fQ2c0tMx4`6x z{^uq6?sRYLAiMpL0a)L^j}8sSAWz{EVC%1{s!GCZk)rC9LoBw(N}fBd(DU+^yo@^d z&Q`UwkY+#wdE~iW9&^KCe)}+R8UCo&_&jmNH}NS}OX}VBjPBYbe?fz3{Ua`=`EqCp zI6iT%HeqHzJ|I@Q20kFxU3@`;VMkHuv}#h%w-*K;Kmme=0XxUA$%P5Dr$eiRJVmk^ zCo2&y@LPEHXz*Hr)nctxFmJFv)Pze}CxeyTb;3i`W;m-(*Deq4G zUCp{_)OmepcQ>f0y4q#KzxU9#i*(md%4co7RWjG*;sxSMc*!r3ts5z79agnE`8Qji z$5ieM!^6Twhc?flnkZK>{J~nN)2gpYCR)Xb9e<)2FG#2S83x@2%LdyCfTn#4h}4rz^I$rf_{Z8heX7W4^{h!@ z-yGQ1R~?<4j$N!PU1`QCaNZsLtGErk@g&gJHi}YC>`z~*K?P1A25mj9Hq;9S0SP%d zFfl7goB$-itpyQ-)9WtsuwrQG`{-z_94lg!p{u8d4FaGWf&2&lFJCdN7xCohDgWbx z6`7Bj*G$xpshByS5{W|)%}O18GP&U-B|5}!EZ17q3$;8WbZDJDh$?l2Hg3<+M-SOVx1 z&;jzrg9UAEOyEfUI!)2yaOXchI(qHD>uB=M7i%12J?g4kU$m!9NDsl?ql}ef+R<w-Vm0zT zGe3Oj3%}p_2?GfN$H=~syd!*TEs!yvX^^AbzG>{%rQnTed0;utQ}3C)TbTf~;iJ<%*lz@G?SHu&s~OOdKq+4Q_ponL0sRp<^>*c*U52L z5&FZGJlP$2&qm0FVtQvK{CCiBO5lPgDzW20wg3C)=*CEx{Z*`nQ;OwJ?B&~f9}xQl z3ow@8_QgWn4{8J+b7i76^FMZ_=gAt=DJhpurU_-`92~BJP`Y)C6zjx7975j<1PHM` zX4~7{EqwWs2&{c@i(b~$^nz9Nm#fNS%BOtW6LqG*lYTU1dVPf7w9#96gjCvhW7=nI zZ0tPGi?T0~$aW01>B|V58(eD&6b?{M|F*nu>-~BDjnv79XPgG$1Y^zMvlG8a1vab> z&`4h~dkk79Y;09USN9TDR;-LSQ^D3@xiiTBDlP8oFX7UB|4sou69p0KCBsX-a%@xt zBrvjT2ETe*dXAU4qfRGF%R+=6jm#up6SFh@}GPqJ98_o+pa`*~v zw2FqNX1qthZd$^NTd@^t;YJ=Z_uKQ zWD%CMKyG7fN&0pK)A}M|@4+M<48~P@1)dc2H#Q0)3pjOHG!)Rw>S}Cf?5p;YY%5Sh zA+&jf6?!;vxRcINM6AAlNq$UB)TiGeCH*cc8m3#$8qdxeXF*4xu6y$MsrGqV#Y=l% zuFW)ZgTVRk(5w#Q#~L3V8@UuJH*$WOH0K}C4!&LFZQZj0^A;v8UKfUjhGJBTf7jcQ zlQBw!Ha3bm|Mw>LI%5f%7_v32(|V^&dr*Z6`&d;~kB1%MdSMM7AU)5svjv5PVOApo zEPr}NM`!2m{~DZ@&Vl$}6pD>2lFQ&EGUi8BT;8;&wvr%mW1Q<#N9FkuOy-}G#3&UY z76~eg;x4GE@1a^EabJE?3&o<|iaP1+rPp+mCM2BO#j0$dSEIu{rc3#l0!|J#_eUy? zhBW^Eo!1D%7f4w!5woPw1XK5cg$2Ys1R#3}$ruZ=-nX1rp%7*MxP(~*4^Jk5f$uIZ#$3%Bg7}8MT;nAjZ9^fe9bmP20)Sf-+5kb5V5@ZL7 z^3C{>n{|KUa4-{cvIh|<(6&PfjxJai8T|Kk z^!1gp)e)8*ZZ8Ff}~=4#Jw%yb#H2j7I&4iU){Xxqg= zLZBU{r>EOP_JpR!MOvPGh3tighi7AK>Wl{V1q@O+Hu!SRu7T1e;|QGazR0C-+9pST z#S109NrDiwPCkWPL<4z->EGn}LWvho?!U+Tj0;yFR2{j5*gQ)oQ^_VJf44`krM=+# zV`k%g)W*)x?R$^ByiBSqE2%$O3=-NcY5#G|1v!y<{cH8eCtyNxalqyw=7rA+g%sdp zfO(IX{S|BJ&Vn-l_4fOX0~I!vk5#fC^Zn!Te(N(YkP58b2woIW1~^ana-m+i{dsuW z)!RRCGeELHkOwRmHYS2EhfAHZ%AVVzZp^*8mEk;S)i{v2gFEwL7YB#$oeWDcdR;w( zsMli&N~{>ClNr1ho}Ox~C{_d`m5X_%^@)VM_-a-+3G#c@E%cBhAGZ&8T#~ z{%9`sqYJ(6?PhKMyQ0zQt~@wM2ejk;PoPZ9-xyc@w12*j>)B!kz9txHrlzJ~bI5_k zoqLm!EZSjh`fwp%6*`~jKWOLnOi16{(yl*P{NRdX2`@GE^jGmICGhgGx$N)XYIc{m zrEd>obw*9dsgu5e!H?@!+-VMZUz15k&Eh7lI$3}Ys-FF;*_iuPMfCnml7Q-h2~I&p zd03AN;Q)prLjKc|2(1wThq?vM1|wmj4cnsEclrc5$popdZV@AvZNMUn8 zqJ0S3pHN*UyTwhFu)omq>QH8xpT=u{fA%r|{f&~g082+#)q$bg4_-7~dGM@$FFvlr zu>nI(qo7mKX`#)8ChoSUzK}%Nr-mvtB)Rs5K9aAOjZOU-QsCXZv2ea~+i+@<%yRAA zR#oM~r@9kvI5?o!s{Q@_nUzW{Tqp$TO=LQrINDui;UuNo^26&ORNFcXgosKBOc${A zp;5y$9pncDtrOZc`A&;Zppn5)5EwB;?I-gBkew^ECM44<{0Mh}4g&E6_^dGG)C=Dd z`>ra3i*07N?+;$TOQ0>2<_WN1cRQ!UM`rWF_aS&~gl5=EebIf}wtSyFCy<-%$vHAV|SCm!s12coC zPq?l{YnJG39G`-(f6fACV!+hdUemT%qwzb!6JkX_ze7!)^nYPdQ3Q70$`9XapqqDUFOfB!DWk*w4%kna2WuVkG~s=5R(kHxF1o=(q&jbrl@++1L_?#l+w zM?W$|8r-0Y#qzwh?~ODT&a4`I=7|ZGeM5rx%~nw_m6bc~ zdkni4UpzP=D8%y))lNdfciMz$d>pf}vq^;^;1c zvx%wGi5aJ!-YRZ{CUnK4`E&4g_SCy!@ZkUz6d&T^HrKnu=}l!A!s~F=Egqx@%q`tPfS+iFBE;C?(p!dB5bz z$;t|YslP{bk9OZlDq1+W z4A|j)m(8$|rBD=SB`3r}hmxycu4!bsBwl`=mr;~H0cHf`p#H(g!#1R*TBn)4lEe!X zcxe=DwE=3vnnEMVO2VS_qzP^<6KgMeXKyeksD$)ypYWQWAC27edNul$JG3YHcB2Gx za@>A?oYcMtVw6va4xzH{BoLRY z?OW+JsA~6>OnmV)#3Lm?3GqcNk*&=4J0-5C%k5{&?O>OJr^aWzc1t4Wi#+Sia~O;S z4d)*auq4?D77Ci5AH*^KT|rL01E@bs50BJpW<5j0m|wqs;s0aL?`fy5%M3`=S547* z1Bm|fr#^;)=-qRT60-%r_jk&MZf!}k1pbM=>S8>cpmpiB;5Md|~}~cz8hTu#OjWc_>4BJT&4(TKN9G3>YbKVlPm( zSK>?{O~jtazf9>_ zHq$vnE7)YGRER(=u!718U@%NT{J)Vz`v^So)YCI zs_1&{+kh%c+BV+0RFwW!&%O6hF=zAUXY*Ge*ExWJNndFh*VUQ80yK-)A-k01 zawF_rm^>Il*=l_Ato0JEq1N2CQGVv1z~B_m(PMO|8-!ASYl3$x%qQAI&ac-I2pWa* z!FO~WhaOiD`(h``!tA`f zJrr)3I8|)7e7eRXlZxRZi9}(GMzk89oGmRkiN#jm)%bA7|9g|k4uyjtOZoqDHAq`hkJv=ay<3R>RB+S4!s&fE&@zj$ZD?+-c8?S~Pd-3HhE-Tma#(fYX;jnug>4!K(S#q<4oNPYM zed)?EUMZ(@oo!C4>DhmXj9l=VV6#fM^9pPE$TBH|xXXC0{SDo@=XzrcMl|^Wej7~If9J??H$G3+LiL*cW`r|yaqi5f`mklj7jja}$ z)v$B#OOic1U~1Y~;lE9|ASZ*{=c6SPk931M zs_5iYQD0u(2MG{AI3dC9vP?<6M!M9ZSz0P^9ZRi+j8e7BVE7t_nb|+reSsC)j$QPu zE|!iK3EvRu!Ynm^_k>?zFu%^n$9Nr$CV~;gH-q+Ckh|yE7%}y_I~(M)-EbNhSS@1- zSg9SWUcM4Bb_*Fn!HJ)MDE|EX`Ewq)b6T~ATH3G@eI72&)NYN`ZtgU7v0Ux#C9mgS z#_G%T%Kg<-wLF#N)-xaR4a7QM3jN}qLlO$(Q7-kPfrHLs0gy{p4BEr+qEh0lwa{_a ztc2e;%!^NitQZn1Ld@as2T2oR7ej8ijZk!uha4zg9oW8WT=k1OzNcHCC!G_IJg}f& zed^px@~cKFN|(AvpQohHT8O`n?}{)96~~C(Qb?AK5qqPJvaU!ttJZU^Qf+yPROtaH zlzj4Cp37`x7&!J_S=I$4)Q*<>;BX-1tlH3IEAeXRLSDc(c6GgUbe!@ZzAuV_8TVBZ zu7CMBSf3f8shP_8La$s*J$1!%Jd25tl@h7rTlUS%hjYy3N#`Mzdq%bC@vGZ_U9#@d zz_+$|S4e$)DnAW8mdZf#{QlC((31ReV_e8#n6?%RuTRO-L?R{X5{(dbqm0M;JPo?3 zoEN(=n~e8#@)X|>*o!bP_?hWbD}QRq%<(*xe&D+HyFTRn?6E2Pn#Eg=3)2Bp$7Yv8 zd7>=6o+-a03Y>1W^9;#@xeqo52a>Mt%gTZ=MQ`!zC-FCX=5JV+iPC=+%vV@c#L zG#;dTfgs?Ti`f&7df7B06Biv@of5rKqYVB#)Lh>%PgHcDS{h|U3udQ0y~6Rfa)7T3 zGo#AvH&;Ele>e@l`GoyOFzBHFm5sOMsoKDe+X~&9bdN8-zelaCPd%S%Ty^~!)#;$M z&}cE5Sa7FXnJA8(MeYDXi{|1Y{}H^VTqJlSf`wX;q{{acXes+s2fn&8zv(7Bwxzc@64S>_iK5VOqW`fE((^D8+{_Z&-$sog736sx{)sI z_RZa=RH3<+&qTHs$9ud2ery*!IdO$h984~M%vxIQ+p z`wa%HjWw-T_y02$7#G1kfam=Dpix9a>CEEGyIC8LHIEX-wTAf7D;Cd2!*z=Gvnpfe zRB>GBaWEvp4_<$hLgY_#?JW`s8=c#cnr7#zW3eS#HeX@oFL9Q8AW3F|AfJOLTv`vR=KHT_O{r zZ>fAC^yepYUe#*O)V^T&MKKoj#Pb%7 diff --git a/src/main/webapp/upload/images/deskIcon/0000000011.png b/src/main/webapp/upload/images/deskIcon/0000000011.png deleted file mode 100644 index 17877aab946e06c215d73542ae0d9177c4f6bdd1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2672 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 diff --git a/src/main/webapp/upload/images/deskIcon/0000000013.png b/src/main/webapp/upload/images/deskIcon/0000000013.png deleted file mode 100644 index 745ed7fa2da66d03fcf18a032e4bb5f99179739e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18552 zcmV)7K*zs{P)KLZ*U+5Lu!Sk^o_Z5E4Meg@_7P6crJiNL9pw)e1;Xm069{HJUZAPk55R%$-RIA z6-eL&AQ0xu!e<4=008gy@A0LT~suv4>S3ILP<0Bm`DLLvaF4FK%)Nj?Pt*r}7;7Xa9z9H|HZjR63e zC`Tj$K)V27Re@400>HumpsYY5E(E}?0f1SyGDiY{y#)Yvj#!WnKwtoXnL;eg03bL5 z07D)V%>y7z1E4U{zu>7~aD})?0RX_umCct+(lZpemCzb@^6=o|A>zVpu|i=NDG+7} zl4`aK{0#b-!z=TL9Wt0BGO&T{GJWpjryhdijfaIQ&2!o}p04JRKYg3k&Tf zVxhe-O!X z{f;To;xw^bEES6JSc$k$B2CA6xl)ltA<32E66t?3@gJ7`36pmX0IY^jz)rRYwaaY4 ze(nJRiw;=Qb^t(r^DT@T3y}a2XEZW-_W%Hszxj_qD**t_m!#tW0KDiJT&R>6OvVTR z07RgHDzHHZ48atvzz&?j9lXF70$~P3Knx_nJP<+#`N z#-MZ2bTkiLfR>_b(HgWKJ%F~Nr_oF3b#wrIijHG|(J>BYjM-sajE6;FiC7vY#};Gd zST$CUHDeuEH+B^pz@B062qXfFfD`NpUW5?BY=V%GM_5c)L#QR}BeW8_2v-S%gfYS= zB9o|3v?Y2H`NVi)In3rTB8+ej^> zQ=~r95NVuDChL%G$=>7$vVg20myx%S50Foi`^m%Pw-h?Xh~i8Mq9jtJloCocWk2Nv zrJpiFnV_ms&8eQ$2&#xWpIS+6pmtC%Q-`S&GF4Q#^mhymh7E(qNMa}%YZ-ePrx>>xFPTiH1=E+A$W$=bG8>s^ zm=Bn5Rah$aDtr}@$`X}2l~$F0mFKEdRdZE8)p@E5RI61Ft6o-prbbn>P~)iy)E2AN zsU20jsWz_8Qg>31P|s0cqrPALg8E|(vWA65poU1JRAaZs8I2(p#xiB`SVGovRs-uS zYnV-9TeA7=Om+qP8+I>yOjAR1s%ETak!GFdam@h^# z)@rS0t$wXH+Irf)+G6c;?H29p+V6F6oj{!|o%K3xI`?%6x;DB|x`n#ibhIR?(H}Q3Gzd138Ei2)WAMz7W9Vy`X}HnwgyEn!VS)>mv$8&{hQn>w4zwy3R}t;BYlZQm5)6pty=DfLrs+A-|>>;~;Q z_F?uV_HFjh9n2gO9o9Q^JA86v({H5aB!kjoO6 zc9$1ZZKsN-Zl8L~mE{`ly3)1N^`o1+o7}D0ZPeY&J;i;i`%NyJ8_8Y6J?}yE@b_5a zam?eLr<8@mESk|3$_SkmS{wQ>%qC18))9_|&j{ZT zes8AvOzF(F2#DZEY>2oYX&IRp`F#{ADl)1r>QS^)ba8a|EY_^#S^HO&t^Rgqwv=MZThqqEWH8 zxJo>d=ABlR_Bh=;eM9Tw|Ih34~oTE|= zX_mAr*D$vzw@+p(E0Yc6dFE}(8oqt`+R{gE3x4zjX+Sb3_cYE^= zgB=w+-tUy`ytONMS8KgRef4hA?t0j zufM;t32jm~jUGrkaOInTZ`zyfns>EuS}G30LFK_G-==(f<51|K&cocp&EJ`SxAh3? zNO>#LI=^+SEu(FqJ)ynt=!~PC9bO$rzPJB=?=j6w@a-(u02P7 zaQ)#(uUl{HW%tYNS3ItC^iAtK(eKlL`f9+{bJzISE?u8_z3;~C8@FyI-5j_jy7l;W z_U#vU3hqqYU3!mrul&B+{ptt$59)uk{;_4iZQ%G|z+lhASr6|H35TBkl>gI*;nGLU zN7W-nBaM%pA0HbH8olyl&XeJ%vZoWz%6?Y=dFykl=imL}`%BMQ{Mhgd`HRoLu6e2R za__6DuR6yg#~-}Tc|Gx_{H@O0eebyMy5GmWADJlpK>kqk(fVV@r_fLLKIeS?{4e)} z^ZO;zpECde03c&XQcVB=dL;k=fP(-4`Tqa_faw4Lbua(`>RI+y?e7jKeZ#YO-C zJ*7!RK~#9!?7ermUFTWm{d?b4cRRi5s8>twmRoG6nZ$8OfJx)ZBm@SM03i$^Gki0{ z@R4B{NCAct7+`22p@bAjoRI3oaY<~;mb+z3vZ~ciZ@aC%)_TkL$6C7_Nj7#qa6H$r zeeG*+9qSyO{odT6biIGfDi($HMLre{{DV^-=|)$ zBc((Lfs_(s48|CgQYfXqCxE!$?Kc`@NRkxa^DbS#e)7%hHmrI5#G26yD*fehu~@)$ z9V`}YG*J{$uh*HMTa2DQe(K2aV<*2hJH7DtX`=2EGCQn)ef<9bBu!Hah42-ZT(;}y zFTHfv>xV}Meb0A0S6HeN;>2LB!Px9;LFhBNZmck|cI4tquh@C<%=G*(Jof05-#mWg z)JKz8ec5pw{uP(+0+2LS{ru~uV@L2HdR z2CWsTQW&i%_lIKVW$SMmnXKIO^r5M5&YWKQ??#)ur6d0pkmq9=8#k@{=*>6Y^zMtd zT}ipz$K(4RqZ-dq=<~?jwZ&RiS%)?nqcuuvlvXH}vRqvvYPBeq0=8eW?$twMl~+7{ zXy%XWE75sMSPkO_C%eaY}h0^tN5R=6z#p`|q&EUiN=$HvXI~L@DK7c*(X8 zjtq@5P#L7zY_hbpOtTrGts+h=*xXg+F3T8=v6;(iyRK%dK_jYTboOVZbm!Gr!|3|H z%cU#6K67&AP1cHg{%?yb?sK({LNWL^J9ciqDvlH8<`;<5l!b*QR;u$TuZf9e2N1BB z^8nIHS~R12H?FJ#B}+B6HuR4a$BngLm^)Ry5yZalCIf7z=Dme)c99rf%*F6?0z_*q zHm;le`C_q1l+-wU`~U-$QR>YVs(K3HXov-tww0JwfMl6hO4Mp(mS9#}O&1h{F&1kq zeM5zjI8vWjnQy*K2%2FKGCDMx)h(iX!1>{hNGW#+A+`eJrBZ1aC^(KY1PHKz5K_uo zxm;e6QZ8t%XMkhY+N0LmX(5DuF#z?P0C607)!KFAH?-mytrdwm&GN!DRw{%G#1`Am zuR4I3P8w{CCW>2Vonnk#1xNOQ{|6k$xe^#_7mI^~gA@t{!a{){2=H7FuxMjQQ-w-X;y9)iw}|6bEo!z7CQ1B2 zk|f_q)AU|z?bM4F5Tgx!gQXv>^p|ARY+|tp0ajQrAe6{~$gW&tGndc{h*Bx3%D}Mg z%&W&`Wk49L1!LRs$08g-vEskGS#SN>p^~FN*7Yc>Kk4hY`&*ftIaPhE_|$BuYXVoQGM|N zVr_AFY~XbOagty$klRD%Iy$z|u@GZ23(+QbOGU18!XW!z-97Nm&ud$4{^!g^s{HR{ zG>q>DIMN{q3nS%9{O9v_|Cf8E&Z_cW`X7L&&^qcx6n7@L^9I#v2l>b2^>5ki<31t8W~!lHj& z5c;HPN*pI7NrFn!%q7`2D63sh=86o$S{w;p=;FB&={X=}k2SFB0M7-;qP1@A+_d8t z$H&Issjs(zundSYO5pjpw`g1qUHrkf2pNU9}i((HevX6ewkgV})uYpf#=|aD0gf zT*5HGcU_ELZAI2(&aZt?r9vs(wPV*?wbr<<%dQJAWMpKNG)+35v+X$BDYrG5b=va) zWO6rZjO_to^+nKjuVD}p1i_81R%`DIMSwmlAOc9@w79suKv?n!123bot;Q&m`D>jA zOWlqQ2CKVqKuUr1B#|*J)l)W=id;WA!QquEr&}#boB4aOismh_!ZY-*Dk?{GwY*VwJmx91KAZ zAYC7=jV0At%qUpF6@7iYeC;rojrUV7m(hL!`te*B$8odz!q`v>Yj?ON+YFNE82&*Q3OSoZ!rtauxfG_wF9EJDhT^>hy-%a*j#xCTaD zmkUP*xoXW2n}*61To=M3qB20S+y{xk=IohZ0akq zexS@ixkOM1@q;3Tfg#*dg<7Pz|7e{@PRBgGVwr7dq7;m`o15N#8BwD_ePxmPsS_MO zaR}?oGP$Klxl}|tGArQn45|~q=%%yeF|7UfdZ`(sGmx}3ouaXm=9=~emn8^7ItVGd z7ayRK1TP4-D5DWVzVLux`Bqd*J{4)^$KAU5;cc5gy7j7;?U%|a5Q@v(p_LApAtlC2~x_ThyU`bRdfcH33d zmghNo{3vS%s(22#u1~Ys>X4VF-3ZIA#O7f17JItmj&x70k?{-~L8>j<3Z(0iDn;6A z(p*`jvAjfeVTP5tGpx)_voJNw$mZ=2k8awIegOs_&IZH)`(g|0Lb$QdWpH3{cw)ze zOl-M;ERaaZCKK|f%!>dGX$y1;zQgSg9ODyvmS{KwY?z$jec!i*sil-p-TDYC^(L+q zSsJP|TA7@F&koWHD=f@R@K^tMnuY2I`Nf}o3s+utA&q8~1>ZI(c~a2^qf5JF>2ns> zEODHYqzO8SQE`OOF-4)6IeDD#-1=3Ti&NAV=ZI=6M71hO0@^@ovY&J4f%}YnfjZ0Q z#1Lg+jc0lLD3mQYu2;?-G{_zwYBN$1qd_OxtF_>}Jo?1b{NWvQTzT0A?A}u1(zSKg zB!59NILX+}7jxg?2Dd+QhNz{mR(F6U2(-y9ZDcG1n5(+|53JpFAKX5s-T~iLt_?y=@G7N-NtQVNL^%`biUv+RBNAph&bKgZDEAdRR+Gm2?8o5al;B8l*AO3AT|xeyctg`&pM zNoM%g$xd6V{JmjxY>dj_APb92NGG!flabijGkBBa0yfi{`Jw?WXh`>HKS7fmjL>N29X0L>b@w!+eew{idBCTSd_C9B-k z;!+Kjs+`qt17dQ@-%zO(x#QdW`LDnHJAC>>KSEgYyB9_l-LsQaaTd>v&NDO9eQjrJ zKoZ9!N}(*sUhC)qqlZO$VE|dFK64L7r739~MeVjMrj3PN?W%+T$K`>2XE-!x7#!5p z>k&^)!OdgqG1GfUVuM_J6Q4V}nJ4z&iRTK^BoFGwP_IYCaf0kHg(gpNbJs{l?UyPc zU;OqFKKG4>dHWk*3Q^L%Kzb7k+XkTRUd`&S2|?71h!cedq86ko%US%Od!6Nv<_iW$ z)Mz{_AW0lAV>Q-jgs^$PL*~&=tg7C>_`qp2KCM=SwVE&8_Ar;PyOzuSr>KWxeCf<9 z_@lr34pyhc%4XJK3`wGBHDhGk_qDkwt1}Df9IQr=k$%7TnR|K5t1rj*{4A+ZNf(Ir z1%v5vRqdFUe@#lFRz#GfG$Oe6itW7erB}1>iGzIk&IfV4Rc0~wf&ubu)u)sam8Mmj zW*^jw+(bIB*=Uz=1l9RE_Z_L>`a?ufj5d~)T9e=Wn}>PR%fFu|pRV)8yY3-PQV?y9 zDI@ukB+cClorAPzU*SE#1fJyaBeOht;24)*xDKM|EYD(BxxDi}g=A%=#&R{~$KL#E ze)?Vi7N>uZH)@0YAHT`xzPXn|nEzDE=@(7MFl|LsMz!67$eb;r$3hIkbJ=@nmNP4g z!Ty9)>8wsLmcz&A`0W!jG$MsH0)y>o#8>Xzi)p96aNq?4 z#BrQw?uQ6Ln#9L-n&P-FRtSW#*mm6Lu)l))56z>DAdXukX-bkR;v^+a6-k@Hrs}8dpq^pfM1Ig$f3$d##?QBc2CUaRfiP<bpzzK*=0gFe$H8@hQa$UCbn#F=j=wx7Y z068mNq&JXTY+g56qp`|x*~QzzYSOrsS(3>L-84;6Dr-4N%k99z3kJxu4u@Gwnk4(1 z^=hM7DwZ$?o5v1;#EN{k!#XTg>ztXb5&A`h^fLo$9}4Y5%nD3vvI2np6HWzVx zhga>gj0~6g`hh`~8a@TjAcXF^v9`5f=r6i?!K$FAdw6ynX@hEwS@o)tELkBR&ahS^ z{D31zkF(NHxE@HuAHR5}PK3Z}Jyly;-aj%rdX?3tYat?YIZnajbKg12ZTqVDPJkf) zfSs7obC5X@Ha|qAQqoon*VFva^;`H4Z@7|8!4n93H$VA`CI0lzK0g2OAlf(tuFAo% zos7#G4f^~RvWgw<6ok3OnT*QM+*kL#kXZ%)rLW&kY9O?H8MysLH3lT4)XR&D-_~hz zRd(%3gcKMc2tDq5;tcQplSheC7vD>;x?Rnm50LB-lQc!gEy^XyTVA$~pSpP$H(az1 zFDTGxjBxP4KDLdw_{|@l<+T?r^T98Va(KE#!8hFu%ovhZBmbG|tlG`4nltX!Q9UuK z$1*Z^rSJ!ax%=Dqa{K*HQ1n@pmjC#o8{BM;2A_tqU*GtS)D$A4Cz>@HLEP8>$-FY9M|(%nqTA( zKK@y(MR}H=1fKerICMcbClcQcAZe=Zou8h4yizV*YK=h(fl`K_``80K_QV`iLYl1v zUuH#HYy?@ZkR66AVYK3M>4pk7UpB_8E?L92HN(h41?v~V3-BE$%a{ZV4DRH_@q0m7 zRubqBH6MA?G{5dAeBr?XJWt~|icl(03aiz52Lr6_sYmDn(aF}@g`%}!HNXGopW>+# zi?%=DUBKs_??FFPek4WKwQlEtkv?#dkK=ii3qG62`dBwwp}&6+8CGz@5}xbj)w#*5 zY``eWl{FX>qI8Nef<$FW@qf8_o@Q+M#-kOaG}yn1iDJ!>_A z=W@%}zs;BK+Bek~@E+ic&w3vD0KT!1<{?bFP^c8nYYl0dGS^Zx6fC6B&{?nLyK-3> zAcAJI^{J^-XWqYQ%f`#&IAQB(fseg=HwZz}jHtW)3|)8)X`_MG8tJ-7$3r?4AO*m(`nP z^|-Ds5SgV2$0d$heB(Qh{H;#;fOa`1^Gsa|aB||&imdx!1yoCGF$jvDV8cWole?}U zC>EL6w(Fe!e6djA)1Uq{kKKO9bEQt6`QlnNJkb$ZW-Se^Rz26&6b@dBn#pW?EuYyQOd-D4+bmS{9%O0K4ctI2!2m1eEdVqMYe-YURa-({f739Dak3Fwm7a5yg<=sr|9J#;dkz*j0t&7rHSOMj zz#vG|dc-M}#L*JGr zAytOY%x>Vpg-OnsKD1jvU=TUqCXLE}e}zs{k|ciSxT5tr)bXNr+}7KD6Q}2WZ~M2Gh1KWs zO$fABxUA#K%ic|8cmq+~;-0%cLL)gvoLXLcfnm!?m=lxsd?9_6g`885NEfG2X8FWn zN`Yjc99}lR+~ls>dcH8fmi>)BT1MhajjN* z&2I>Q__Zxs_OxPoiM4 z+Gp2}AEFeNXsw(k9Nx_E&<>VP9K~3{=-@a--#xFJcxFJlZcFx$kk*!IEH5xRP-387 zzvh4L-^kxiZwF~`rNI~KT;KgK4T$fYn-#bYIBxcvC&*O368GeNq6p5{}xN1-z-%L_+sHM@4cn!pW7(-x>0leV(m z4xLSt43yVqSyLzFT^&ViFO6cei=v(O%7ICQRV2*Afad>5Y$ka^>nPKm3I8v1x)67IDi%8Dpi>PAb~=vGn-c z?y!XJzP2sH>MnVxHHEO8lY=_<#foZm3T?qEhk?={bQ~6s9UzUGlq)5awhWg2;v3d3{j~J_FH6V$bF5waq64JoF(9z-j}vkCrmd52 z8yzY3JvuPPy;ViDvI0p96*bUlk~6t^vDOCR>}URUYgGPsbFw*5`FRZ0oOObHG z^1FgU;U3^eUg*u-f2s}m(gLPJ!m5f+Pi|EQZ?S&>h$ zbb@Vfkkwt*)pV=xHj68SBu*j@9ljH5VRWdBkP4Ny@E!LV2BmYr9S_;R2DdaoWA+3y zM-M@&7^oBp$`z#RW&ehh_*nk(!5T-CJ}RZ`w{;v3&-31xB*{yoM)QAYt^ep>df!l< z*CycK8m+#gb^KbD#6-;&Lj#&?Z?ISsQC*2>HY1`&6XKY~LcrnFp;cSST~6+jbmmgJ z@6-H!+oh!)*Vc{$ZL%=47KP)596x?PvkNnf4iqR=0;06Z(()`4+xfYjXYQV4X&7&8 zGa#6HVlO8TJc$GJ_m%NWnRN)66|Tj=iRJMw6^%Z@*ZHFIOVX^e|EW6}>~k3&E|MyP;~E}2 zeUg#>NrKSJ=cgoiK2BId1|>|IuyE`Eb5qk8pube25O{cgfLkcx1R(;8FI{Hl=J@5W z9HTz=HU?b_Mj}P8u$n+wc;hwWuZrXNuCG2a_nRtKzZWa}&%RaVZrZ4OSxG%RpT4?Q zvuFeT6_3}wc7k0yDpVUST8YNp1p)&a7vL>zY9GCq^@58Xj#F{~r&Q_WoA(+$i{Ph!>_grr9N&{#olk;meYAl~T z&f?+-U33&jI0ul` z!M*Leq~o!?TxWjeAfw~uY{Sy)V)7sZ)M#mFB^v8ElnNo0 zqEE?p34ISg2=KxpZdkzaJUmB`)T{i;r|#jCk1SAr$y@Opfi?MlNX|0E3SN7W&#%6H zHxuLIJn+O(4$nmVub;X44P~?Z8`E=3zaxa0`R5Aw&gKiYkPl*@jQzcJ>-%3aIacPC zub5)ZL{-s5b4#oLMccOcOS$IYJ}E#q+W z1p&YIj;mO|c9I95JjSp5&HenuO}lv2RXc*PJa~iad2ead>y0!`AC~9YS@1lMM<0EZ zqeqWEH$b-T+R_dno24)QVAI-hZ|#~ArIO#BuLeBVr4h$iEJ5fIHJVs7J1*VC(AYq> zAekDbYAM@K_MMzI|-XRs+ZYsqI3N)2v`lP`t~bWzjl(nPaNZyK7KE6f7wRf`kJe-(kDq` z!mu#VKQQ=1Nt#|8HJf{ZgW?9MOv0w8KttXsrLH>x7bHBg%giHNYOD2 z^%r<*VH@$obK#)p2LQ^6&ioUP(I4njIu;gV{>TQ4v0p&z}H^=l`2 z;K}3s(kJ%t_Lpts2VZs}PoJ43NfXA#MhU|Zr8Vo;t$*$M^&9ULLfq7wii>!vK>7~NCblQYlmoFu#x?9OSrnXl1@8m za3}pWDOP2}ZtlQ1E6tRrAKObvN~ymeq+~`F_~yy0`P#uze3@pOwE2pf(iY#*3?<*- zj=S$9C=4(@GQ{veA47wK42_Ia9vUJ^72mvTFK_!FALlI}`7A4<$X9RqG_&C@zWU$^ zN}&frpsd6g%}-ue=9k}gC8HxF-2LcLe(^8&@V4vM@rIXQM7^aj+ORM`PZULXuEWUi z5JBKEJTg47cHR2V2_ar#^W8;b4Aaxo&$}?}6Ozje&}hb#U6(Xfgx2q2wzJ)FDFjCJ zbRR_4QLMNHtZNzaLR7)y{-$JPafy+EKGfNHd#9}`ki~vvX^`1dPcwJ;NlKoeT<)h> zE-_nI+;K|a7K{AlzH8Xn_YJlTH)+NKZL+-%V+4N5@YLaN@bRxb$g3~k&hD)fIIhcF zEoR@zdA{?+(>!o=3gL$Q*gJlN-~7l2x#!RdzxDTDqpwuNVo@4GFXiW6HNlU6{}q%< zWxlrO0Kf5>2YKiBZQ^w|Tu7s(vKawKqO9T2p(AYCxPdi;1I*1y78Vv592_Xear{@a zGt<{Njx%%c;6V-^Jox;Et*y1&kgRcpq#i{SN~L^(pIjeHFkh{)(rV&5633Mtra}O| z_>0K4+4aMR%#h8ru?VZZQzGqaT$Rh@OR&Mm_PZ_W4!+d zck+GLUPPm%ay4xaYb{eVGlW4%F_-!%7Kh=1sq)GhVPkriBMA38a zr?|On_XQTj`mqx8D=lix76XpVMacxsR?JePj_iz1WKs|9>cW*0Yd|^z$8~WWNkK^B z_3QcA{ZI0eGc#Oy;YLJIM7Un&r{fm0M-H%X`VF90&`RK?7lJS0!TQydN7l1x-2|6kemOVX za05Gc?m|kz$(cpo^;=(|o(f6@K{GLI9TNP)>$mXID=xrV%OBsehtJ)0fM5Q%ySe7F zokX$9R>DR0Jbn5M)><}i+Q{3Jw2a`rU#@X7 zs!(yV`ow5Wu@W-zk~g9H$2eWOh$Gb>U}W)I>~4LQ3*Cn?3U+UW*KI3t-H(5i($KnW zQz}i-I-${2{M2uMjRR*^C>KJaSaaPbpZC6IGds6!pcS|H-M`<%1N%?%;UB+&i+63O z9>vH!FuShH($W$Oi;G-#$;FwlXR8HR3Sj{u1%*OLtJR`hE(g9J{G2i7XP#Fbk|v6Y zjcfkh$avrGO%oN8)No>InS$>z*x$!OqfT>Wg)mK#N+WXB9-E|y(8uu{9LFJ53C(7c z`yO54&ONhy>)slV9tO`V($a!ml|@Y4V5QMQDNPvol#2yQp-&+Q@CyaXeHDb~@iVt9 z@P#7*6;B|H$%sak;13Pax8o&QU{52Y@3cvBwuVUMl%`{sH z)*7VDKVzD5_{b5~teIfV!~}~=iyfsQ&-Xez@^RckYeT7A*|ulTy??#Dyj**(YjF<1 z+RbaZ3H{PYx`+3!;E9YlL* z!h%&TlBLr$rcZ!Zz%37g(a5BVBNR1n1N+SNEJuQ!!4s(F62~9<43347E!XpbzuL@QGaioKg0AOFc4O&)l&~W^xz)4gNowWz;S@mmYo~^ z<3&5hMkSCc!|Y-stLI#SPE$OiGy1$kxQV>gYe?M!`C`Pf}6#LggZ+&#eiUb~4M z8%6-Q>#>G!8!}VMFk3aH#_+g1woOZ-Ijmn_HFbJ^s~6Q)D^zT zbyPgp%k=H@-54PyLEsPGdh6H!Qfqzoru%t8ab4e^92zVScv6rmjVr-*9h5e-QiUr- zb}m?i&3YgLiz8BI8f!RaUPTgY!FM&LwanasJv66};JO2O_f_Ir!M+*6e9L9mU=iPS zD2G17eI*j<@%wko^6Ot)WHAZp3xKwSMJ`Hal3KPC>;y>Zflg^0euU`c0m|DiXZV7v zaHYj0O$sLAh`o}(S_$~!%HJ^NFVULX%g;|dhP~={*>%w_0#~rOT<7oZI?9>Fi2wGE z>v-u^7iN2pX%843nGVJA6DRO}pUKHJtSql&!k!)76pKj`bP#kz+l0tuqBd>XeE9_z zT(I@A#~yp?85)4AY64eEIT8kLu`NC(g`gCAtTdBs+sTnADe-icvRY{oSdOMUI9+@N zu0KRTo#y-;a}R%$=F|H#^&WhL4YR&Hf~BV7fisqu?w4+?w(f-PdyM@Ii=H}+O z7EK)qf+OVBfmBWaT4bz8<1YojTaO2L+`Td#WtK+XZhbsXtiA^c3N#Ucd^^@Y@8 zg%lYptAYTbQXHjmjpnGmlrzEA1X3cBC6-PfWB%c9qE_aSelZieR1vc0UlPV}_ff%* zUN5=*p;{$q@U!WZxXR4(9L_a2vf)*4!5!Gb$um=Y_B+Q}jx_Io%eB1vCA-i#dGNL!(dUkI zQ_h>6IWvXhI82O>vAnWEk}tvPw(3x>!#A`YZ)wi%q#~~tCCXL;)VuW^sso?R?O`2ImDV8);P=^d7Pzv-$odN z^h1ymAw7(aF=-QolaZ689Go(|?N6WL@uRcg1%yF>bTrl^ncPJWU2l!TqHqc$dCW4M zMO|=mtpJM`|JrT* z=*^ciIM7d&D74NvyI%Lxc3A?b)@m#+Ewg5P4A*m6Tv|f6r38&$B?FZt366BIh>rHW z5Q0*vctw7tiF~E(87;+e9I1vTMqU#XgYmNOpp3rTrou5U{1az3xb`vtUK_MkJZBadSh#}G7ik%x-uD5vP!F}BRz+wHq#uKXX zQ>P`qmr$LaLSR^U=m#Nk2IqBM!lkJM4X-sOn++Tj- z7^4{)92)HF>zkaPpRebctppVG%7pi@z4dDSz~0**dh?@?oxV5GptWFXHUm;(kV0|w zWn&baDO9VL^$e0`cE!q^P7!VY-yZ#Ok$yi;VHErcHcSrkf%m?WAHI1f1_y6oBU;ta zX(MBOO@c|ASl`DR+Kh06d{VDHA1pdgk!yAdA@lc{l#fHgmMvSU)*}ubei~y8TQ;x9 z@2~JXzxx+_>1%gTD1>KaP^(3hJL1qbb60U3Q?8VdLK3xFXluJlrYduJN-MOX!$Nnr zq_PCWb=`^(Vl*dn{rnjK-r0jDoj_v1&DXnd(o-Xdj{B6PM?^$b-5a)mt9`IX3Hk+Mv-FY_MHs$S^oUbKbcAS3DJoa z9gRZiAcT`2RQJ6Q83(jjOL_Fb3BGmzVV3JLZcs#q16bX}T8+~`fj7P*8_mgMM(=RM zIXme2u>8{((ZDzjNbOck!kU}XD! zb|nkPK^u5_x{=BIxdP#a;Cjfy08alT?!a2|*_-a_LK~3t^i#SkAey*7&F;%D0THnO z;89#B%ObT(8R)Mdu(Vnc(aJK5wFZ}7w4E&@bF42s#Pq2tYHFBrx!Aec3>KPElf|WF zT-T+)zb}t7`5hhdm}AcqoBf~*h|wC0#gz{C-?!(s0|yQq$X%7}p-_53vClNyYgQJQ zzjpVn5B}hz_a6N9Vt8V1cJ4@)@rd5lp0lZ$-dE9~TiX0r5V*K**SGZ8B{*9D^2 zHMK!G8>G(or$ohdDy4wUo40b{@Y8ur%l==Iq%@kDiwX-NvQXrn@7&KrkM3uE|7l9; zEE~)7)SA(1wNh(nMlGy01c9F=-A11i^q^BWGT2CK&^4JIV zeDmSAr*TpjZ2_9jc2ciD5$y!@>;+&zkSas0@}Y)&VsO=OEd@B4RaqfuC5k9f+1S?E zpmhEjOByY*efu_Q&6xT5CET8mWPwIAYYus?i|2XhW`n!$dki~!6nWwfjxgnjWb@5Y{l>S75`$C~vr78}GbsnTkBkXx|(7qtD*W$y3uv zW9hyA(`bpYkr6B|XQtDdO0lN7BpRchCf2;b+>p(7kWP-Fd7Kg7vp%SFkZ zY_L!9`0`pN*ILpv`yR*1=6l;R<=+h$?LmiTqY?E0&`wQLAOT`B)w<^hi1c=xZz8*^ zFnPAK>TWSfAc{4Q95}=1T!U&OLCQkc?HPkIFkJEY)i-b8h6|dk8MuSu%&o9+l6Q^X z$kjjjYQBABl0Ug+AJg;AjDgk(CT%b_v7PDJC0eZnr#q{fJMT;t&lr=*zB&>iA&C?Z zO}T8f4PL|Nm`v{D*1``nG(3z_iX=_5-#yPL+w{nD1;CzTA%?lRIn`5pq!OkruUG_Q5wg4Yr?sGLkF&LW zKNyJ>9zqr<&HN+R#s5gP_+D^)tZifqHc1`VaVVDhI6XDrv+U3n3=q&sKgp#5rN~q! z4lIO}miAE56Wr>(nR?$PY#Hjyq?uBckJic#>G)j1X!ne4PCmM>i&l#1>FFgP%w1Cg ztN_b7AW56!dM=`YkfbSL7*eZM^(X)KZ*G~InmUmm$TFG!)-n*~ zmSUfelEVPf9X&gG+nyDiv!AvHoJ>wH7tZVuiMcRHzFj4;M9r8w6Ht$#HVtVCQ3D%; z>D$b7w1s-@X#!VbRg6(Bg1%vD^@t=+R&Cn~Ydcf+*-gtb@yzZmPz>{tPifP23^*W# z&BmVEx7W+>+$O&Zeeo!YaovoKzWY1hKKNIk`1s%L+qZ8|9wTORFjiT`^OM#P!T~2Z z*D)HbO2Ez5!Ft(RA$qg{KnTD04XwdgO_CTq&*=&z=gOeu0XJzSJbuQ5jTgc3Cn1xr zB58ti$s4(EZwsBK2*<~$76OCghAgktF}WC8XV)Z`lx;**9YPG1=Y7F#M&`Ni2;gruQi+qF1J_7(!%Fbv|k|dlyb*gdy{rBy={ad$v=ds5g z+iR^ooyUnqpqc}r{;5LYIRIjptkwI3@VB=+L`KIHCN5>;8~zJ4=1As_5=|ecI(340 zWeJ_MkitQ_KCza({OZko_?Lc!uYT(x{`*J2kgKAd`EET@YDRt-%awN*Zo&Y zdp}50-po@QKfwR1_dsTbaBOKdI*gr;LWQ4wpF2(l+BB`@5HO0)aV=SLMMr-~IdTEhU zGt1n)cR!ErKiOUMR5pt%J=A*WIehwy_fqk8^R}x#$f-twkN)8!Jn+y_3W1w1^W-W* z!p*oMqt37I+m_Vtd|h_A11X5(gg8kFf*>mxd#mjnSgkd29Mfzx;)R9z#=`vk;*q0A zP9HyZ?C7CGhmK57Palip_)LEIjr`fnts#Au?%=boJwL}edG{ixwC3Z&I#*epvi?oK z%O3WHJUR=nY!b%=td2Miq7*^Y)Pkc122*H zsV#vAS6w*7shNmlXPN|lHz6=8LdT0pCq%e~%wlXV5@1!nINE)0b;_EF5j@wSR;yEQ zG)R&Z$92<}?B4p1eWjpQsq|GG#{q$<)oL}Zbh5O(R9{+JT8Ue&YNOGZpPQRo(ppEk z`>ExJ9_P;_2S9%}AUsc()h4#o6S^_=4iOIjfm;~5$*6>+zJw|caz%fG|MwLoKK^jb z7Y{3hH6*FY0;3SvxRLXQ7Gtvg#L<`BOgK1(NE(Q=iA|cM%{ocFPE@b+z*Ga>(u8G$ zQAxI$s}!hK`)=I1x@j8#y?PO-y_MBbvUXOvC2dUeuG_!yw|VA6ewZph*fc-zMo((m zn^LN-37%V>y)b}epd7T#*&o%|Upw>lKm5tLdp|?@nzu6ark67`P@=9akuvz%-^Hd8 z(cDRNtAWPFbu>a4gap4bNMU##o(qLg68a9F1F5z&qm)+Eq7@~iQ3F+9LN%7qtp>{n z@1u44De%tLhS#eFm+849!ZUmt93OOY7R!msfvEMQr!SbCgZuoy#m<=K?E7sRJ)&FH z4@6)2?TOD)i9bbk2NJSa!GrM#fp8qRn5eJLh+0Gr$)q#Rp5b!_LphaY13p|226Jw-foocf6; zAuO|W{2;HmY?9yl@9)8PEcfhvlAv#dfgQVX{1Ds#D}9s!lPZ4pO3T|W4Y~VR%tBou zRD?~N*rbI{8Y~}q6xCSH`uc4dj#U=YeTA&R8yxJ<)KzN@T5+6{nrgpIs(0iE9_5wu zeE!;eKAF+?*g|@#+~fhP=YLGA=9^@+`16imxk5NWR)@4|EbRFLsWL?IHWrubtkfG| z6iyIet)}|)K3WUY$goUt!$tHDjj(<=V9R756}Ot-X{UYVD@>Z8<7USCcVfh9%dolf zP+J2<2tkr6YSkL`Mud2h0&UDVmnS)BszTe`IZJ)$6s|d&I0l}OLPMd)iA8?GtilmUArT_0DTL$ZLlK!wptXiz>opWNT}*QPVdB}R zF-f)%;}48cT)%^*M{mcp>PVSQi_i(|x+9|5xxn+={8^jM7}dDdCe<%v)X_XnEaujc zJ{y(se?A~Rq@-{Q*9gDwb<(T6S~`VYNJnOUcBiM`-o4X8hYu4nlaZB9-jy_&_*hs1 z)yh@mx+vj}j=xp7;l()NcIkv$gm5O1UcZn|1%wYW=y3HJCnc~Z z!J60_-NdGKYt@3$@o`Lg44ph>O>z{YPvx;8?&-{_7c&UoYe3E!Wy+gi0YVNU-4PI> z5F$9cQEwr}+7?#TF}j@*HS?$Lsh;(!-tzxJkN7|!W=~zlaYUyqT6qGLMkPvX`?vU>8Py__&Zjcg?R7&ZR{NK-E z_p#@^eaw6_bLY=5P?3{kaB*|CwsWuofxLg@=-KG&?U74f{XCad zi$JBQIqQ-^8FXc%QKX5ioQ&8o)d>Y@Ayw757_44Do$UKGwE);42d zTyRlD)X43|`=Yn=?N`6YA3iTg?Np!TG)-c4LGjX*1$Bf`conjAMC-wWeFGcYyfT3} zEG{4zw8@gu{hk>Nx(<+#;9}~+`UV1f&*DNsT^dmYGJ+w(&hn~vVHhH3qs{wXS@f4UZpUSf%6kV3?x<& z@*vx1pz6sNQ3@bK1c=mHtxpWJ$OA&C7+5QV>c4=xCSbUYASfOPp%W3x0YZNdG96-O z_6CJyfJhZj4J1yuYGFH^z)EE_O0=?wDFnWP^0;Cd81T}uPpD9Ekv=tpm}ScF_V{E_ z3IqxfuAhy8K>3MefVXG&-V+416BAG4nhD~~^5GMSriJ^Y%ia*+XnHar5RAGrCN zs8G)^QH~FVPY%&-U*qO`UPW6s63ToASF!dCQG1zNuUz?^?J|Pxq1oBWD<6W`O5EjrMoY{ky_RR;)gNh+9)yBG^7(C+HdmcAZYm@JMZipI^9qdG{IJ#4(5meZ8)y9}*RmyT^%vI_xk z&+`@nNf*K!GiYu%dwU=@I&ug~V#fF*0&E^-$Q%cy$Oye=>{do6j%HyPjv&=xQcDz8 z=GTqVXLznmdn)M$5eqj~Y)gDL1QH0k3u{;6PYG<)k^GMLS+2EQgepX_5O>PbgFiE# zJU?s7?Gu$`%+rFMsVZB-AMsLhgNUwOIF?|a1A=#;SGGZv8#~!zw1KG_uWEp*{zWy~ z*T@Tt$p$ZU;y{Hi?5F5nvJ7T)NM%EHL(N6yat0a}A)+7HBG_mlIz4Pm$>nOFSlfvH z^})>r_`?mAxtZsQ<4O2n?<3^;L|BL;cRLsf4 zKP=xiVu_`2GjI)sZs%MWHlh3%DH-L6L)(P}E4=Eo_6 znbAF^-H*Fy=U#aDVPwIB5jO0US#T`44W$>nE?vEpayFWBP#+<}e~`YDL73tE+>o=G z(~m511SeHBl{J-`lTW{*vb6GNCGPXH=cD@Z6|eRDYZadh>TOkEe^0A=UYVnPphvA| zQ}L`kywaxJSzo$1!00{_)2LUyS4*x~C%@s%R{H=0t_5Y2H#g&3{Hid|K;b^thVdo8 zcbs3-?`gkAOIB7Ch{*}63K}%&o~2kzV{N6oUT1q~V(+k*eLM?@`bm1kvB^PQDx}`Z zZ)Ne*D#j@o%;5bmkipk2z zs;058ahR#A(OSw;`b_B0*P5?oL}jg-$(mKU^ESQpC(Xmn6<;Xpe=TAz z*ETyg`BB-K$NgLq)$&FO}h4|0RiR?pZ|Nir| zJw6-5N!a9~;8ruqC`X@Nj$YQRk`0ATt9$TSM0BKD&?xUmDc&sVfz_doZB>s8SCb9j znTwpPrmUX7<;!)4PY>-5!&maggz`9YjRf7NdWYoJb$(4t+I-$& z=Cj~SG^kmq|5D;rd1ZD)A$2L`mbWFfB_Z-t;HS}>F_Eq>LtjR%W-jZ1%#G5M`XGGu&EP0+9I8b;fpKM6IA zS3Btwi4%4Nq1pkv^HW%6zs;h11Mt{F!$S?iq~ly745_C1KMH$IugJNt$=}GQ$^Xo< z;nxzY<53mnl&a*lm-r#lCe$W9z-w(ZHfNY)sN$eTBgV^F`_#$d+uGgVv+&KFP28>b z6zP0JCN4e&6FujlW#kpS#N6U(GU^eUqAABn7-u7e2aFtl_s!3Dp=zJUGp=rMvns*%vsm8f~l$tUJde zN5s;qa=FI;jx~)eCx~Ppa&cqMTWr@_5!n7 zq9v-C({WC#>aW4a+JFvLUyZkcue(Qrx<7;89^gL5`4#Gau(I&iM9YxRXzjDvO;`@K z6j@|cE$K4FN3su#>?_{CsKcE{Ix|*MK2=opwOUSE&sgvM{>hX3iXg4>yRtxek;F2I;>&>;1FaG0Q%=_vM ztXcYZv^KPS_Oh9$nTlC@nYXXZU$tqCNlnl1|Mb06TBaw=7LqXXQ9aWiw)?RcG@ER5 zIvJCbn&Th9`)|c`xv=^Dj>W{9J)!ea8_Z*4M&U7f=UMx+3FFfikJHBGUnB-C2AOr@ zZyfhM_9Y&YXSD{uW`E7BZ8d(|dg$Bn`Mvek9(AtB#Ois6&k6bC{9LY>zans%-BH|H{ckxO!`;d9cj9#$5QRzBEwdF7u?uP9w%h6YbQ zBwoZ5%3;K3#E*vIhaKdKN{NYWO1s_f-Id8rT28X&QaltsjMh?+^95Yb9V|>tr%xAr zJpGv5>F8H-zu$F0S+_jUGeGxk*jteQ_4$k2zujIdUbII=YlK?ceheSjA8r3NTM0|8X%DG6M&ZngFyctf#V(s zJvv4aRu{Iq9Wr9nl>E8^0)5((Xm{t!hx5-Gq0d z;M0LXyq$WmVKzS&1Fh^ZdBJ&JP{W&m2PLUrkFF+y|Jrax|214z(F=DOg}FNgcbl5} zOtgXrnqs>1L&n?@S%PCO6KCswQT%DYXxwSIM=A4uXCJIj`3ym^geJr`VuIZXCg7r= z2~gbbTNin0G#L;|TNB%dEaicoVO!+QUE&+b>o&+8Bi+}|3yP-oq0sEuAm%|aE>JuA zfLb;);Y1WoG5Rsh4tyhqLUf0DU7}YkYd!l}cJD?ET6Ul-0fJy+R@O2bO@dfRvny%>yeW(~g4!tEdoG4+1JJ+zj}ND1R}W*HUDFhg;@~YRG7QTXRh>04Pt96GKfY&9+%~=eO z4GkrTX)LBELGo-FXxU16V7eUp3UqFlF z6RkIQYMr|G@h`!db@#=X0}ilUZ~{1dTN`RZXv@lQtd_N1)ZTE$7#jQ|&b3o88 zfFxA;^~V$Wd~R}ybnkDwnMT##6|)4GAw4Tq6WPVnQUR9SjToO#T$rFD`uZ_LiClaj5#)pxHHa8Yy15UO^EhCk!&~D zkK4Bqr=5lcn^y_qHK%-i&m!w0m5##sG0CsPj@s6a-XHEjk0amwqhEXAiGPF5A_GVK zS$Q*H5O6kYxi!&2_nGrsZUyLj)K8lDwW1a{uag@$@yQc5hU}rWUlPrjQO1#Y&WX@G z`KS~qODlFZZm6mgh~jY*MjY{|!lXc4$M+!_HiqU^FtwIQg0#aBwUOSY6G=qLlu zcmE;p@s|F&^~3RoUQxV0h+M$S&w7kDi#FU0b~Z8EY18>YFLmJg?Au%GGPv*=sGuU5 zgWwZskU1qWZo)Upk!fAJ5%(Z=Y0U{@Wu}(o+-PX1K4ef{B%;vg^!4Bx)9?|4&dZ+U ztDuzUOvCOZuB|NC+y#CbsXGZ@)H^5}1WwNP(k??47ZjivbL{M~Qg7SnKG;s-(Po;- zzsX|tm_?bTPvN041}2X_qxWCKT02pbKJ$-W65+vkOnqZ$z4808e_$N)=MGxA{B_&q zE!%DC+V!UomwP)mf;;3Il{PUhQy|>c?b7H`R*931%JuD5#)iwm56I1DLq>kR>FvS- zGhv0W7!|=$ivrl3NR%9NYQ$g}hm;@7KmQF2=H-kR+8fQHky`}+!Z*de9aiBHNtjVr z(4Osu7&b4t&x+_mzM8VgZZOp|G)xzb&%Tvt375Q$^;Chic7Wab%u^n;DfUyJ42^_% zbjdY>?Xr%zW7B9rt0I3f&;ti+95Ae%AnyXuH5tS2FC4cfJ_cw#Gkk+P(dqs9Bai0N zM!shH8iX)-`=@IXx~VZ8jqC9AUm~e2wzAY@(VHhMmy^aX@q3ck4cUk5$zZZO@*NhD zk?ZRWEF%Zt()1T}xQcYn{ncFa%AWYzE9A@^7O9JvR2}FW4Np|6gZJZ@LSr?cPiA8K z8S%?YK8zjKW(I9}FB>m26=Jgr$fe~su>m?zpJ_1*Dc+AtS{rp%{Z zagLVLw4@%A4bp5EZP@}nh^#OQHf4wiv31=qRj__Fi^Qk$pD!e--V1}~hSl=Aekqh< zG{+?`>xl_nH}gm^%zmn?ZJmz!z8E4OmKE44oRCl0%V}YGL&MD$?!X^^A4>})`Wr<2 zyQf&u2CtzwMNMgIRf_YdP}Q!&6t(BLRX8c^gJHPc3Hs}7n)FI;g_~O+#dYK_hByCF zs+4%n=qu;Zl?l0O%WP)n^_ArY2iLRAnS(qy87*AB0qI_qP-^y3Iut=SE47!13tCa8FkTU8aeuF!BVD9Kk ziIMD2*-0BZTU9PaymI(H{5H62(t1NV_Qtmdfwz4A{`qmf^tMs5@#}^|70s$*yLA?v z22p5PqK{^!I{JDxi3S$*3Fe%PGPiBzAV)H0LZ49ZjPg*5B3stX_q}NK4=XcI5_n#f zKd~&=C@#-b+PvgRc8YkCrf=U2vo%gjgWwi*;)uZv^tu_U%G7nxiEL2(h{Tk>C0s%) zaZ-bPF{nXRB@K8Gj54)`F11ro@gK?)z>sy^{z^O>p-8iF}YJ(i6;Y^s` z@s!-+GNv$YqOc2&%c;+wI_Ig5aoV#VHXlsB-qm`A_n(U5uZnL3;tt5dCP)WyA(eJ1 z@<`GMOjRM7*)5XFL9y7(D54VYOsAa@KPjpH!YugUj><#4e1i53B(h31SBXclSlw$y znn4>qs-P>H3qsBtDcyJOPVnTr2GfU$cwy9xKUu9YtClYmk0C^X5o`gPBMKYC5>;qp z@k+v7ckK?U!r;!BR2w43>OsL#jGsNFyjbW_^*coMId^JR#azet*m(7d-3*d`eI<=(L%51Q=N~pv3M0@*e7X%e z6`UkNmW0I}+&Aj-^z@Y<3>pbbMu$UnqYk1>2uL#2%8S)iDM+*XqKYLx7|ZM7noZwE zh}XvS3nmBK zEiW3sR&;cx=#RwKMpxO<^uSZ-VxA=gW<4r?-PiUSNI$w4kTi4^ziascvFy7qFpu)< z4~6K4av!QTu{S#@ydsClh4c=IwC){)lw^M3_wypzwIKqLgp?L4qhjQo`dkA&77Qfp zIeq1S$3af4WR(R}cXGxuZP>|{mVV{yN!#;djwm0K-3d{}oe4P+0r+{QDP!_#>v?j{ zd7-f#2iH5L8e9?#%HRT9UCes>qip)CtsdFp8w@jDTJ@3=Y^I1l9@D~4^`Y-oxJD9O zes$}FKgHuf`ml|dr%pNlinUg&K!LxlzAc`ACCAz0C%>nN(HKNkTs3D=S4hy9-cw0EBx}brR zz!pS2Ep9ea!P;8^*XqX__KbuiD;uP)$1%jUtK6J(r3I^1%bq^d#b$XLSnTG{djdhv z4p(VVHz(XQH}KQI&W-__6&vf%<|`es)4T}UBA5BTt&pN(_=6UWBhV#@ciRQj{sv7B zD@6BGeC5zb^1%FfdEdxwYy(_EoO*%Fi%lUCVZu1ASR7TIV3CW`;4PQtR=AY@sMfS5ZIgah!Bvt14!*X;``{EuhibJj8VT z-N6cm&r0|TGX2S121U)^4wVc)(Rm`J%fKoSS3FPCuusT^WWt0)NEd^7hs?it0`ug^mPIF4)TzY~ybDP!=Ns&E8657_NNNCTdWvh(nX~g1pCQbOM*)55fw1;H4M zXkBwmQ*wWFWVZda$G;0~DHJ}~E)~+5S z`kQ!tnD`6nV@z?WYdY~*KL$nLTw{wG+cQtIZC*ndnU^74@z>n7mn=E1l;wI1V?^hq zIa0f)z>c(3(JVt;oz^r&wuohfw3tyZTEQ4|T_u$mYITF15f&6l87%rh=Sh-y{^~&-ns6n0 z`{6)mK6~_;>h^eVQl%_`AWUCfbcjimMvbAOfp+fvLd1$egkorfz1yUMVTkPp)Yefr zV-Vs-9It2xw-*)zM#6f=;)3=G1o~BW+ah~*C4|OhTzcxKU z03Gy;4cWk?r!0&kXkq4Tf!pzdVksL;?pv|@M*c!x5`VY`LYQohx22NMYtbEkf^Wf( z&WR`Y&x;Yan-aXmXgCCO3!9413+Jy-V1#bv^?#ri2tzNQ{x%4v^=Il)~;QV-(afg7|az*x%SWtvo> z+^LW5M)T_5D1w4dp;fheR8Vm9(OPdP#cL27>DX15w}V?Rq77+AwLqSuP4~#%rov6` zGQ`vmHG=1Pgdyt=7jMf0_UIMhWVxRle|;iUn~|zTNhdXU6#J5M|DxJF3dJi; z4J=iYKZUV#EW#SY5xJKjoYykVjuzg6k!p!yRs}j$=Fa}O$!BEVs|0rl z)J`b09fX84L1obyqsLt%5D}S_X0V{Zt`W^3ZQ6_;xOy*gfTPzfs{Rio`wl*)e#wJ- z#ZplDrpd6Iy~H#|!PXd*NnQ|**BeotlPjfHVzc)C&&B>68Danl#*oS_{vuF`rS-*s z={Va|9A8~=R#cRI%$Ptw{y4(8D4qafCC@X~fy!k7^A}@LCg8wHok z-_j`bSrU80mU@SQ{uwdMQL0^$r8xG#-xFbY#~}xhm22|reiiAt`4sB zv#r0Uxv-{46+G%)`RD96+T(BB9cBjAnC%k#SoR%(2a`3;{GG?n7bI;v7@Jwlscguu z}!KWOa^E zGx*dNGOF%#_(E0L__JtKrM{qyIg)r4RDuaDfNl{h4S_Xn9l%gOY1ED{RE{v_q9BX3 zw4|5A(kxwb`;h~q*cD=<;WVGEdS|7h}pGJhBAax<8?BS#qtX3#i56 zTi!0W1lD=pkk8hHVX0c!t5^Ql-{?!+8cfA@IFhRm#JNX%K2#IRf}0QovyC#sX!;^s zSL5rq;1z`Y)D=+(Z_jlAdM@FbI}y4R#2JM+MhfGsellI6v~-|uJM5ZxS)YS97K6VtrcxB z%!L$V_v%(uLZWYR(Qv;KFfwzTl{0n3BFAroiM<3G1PU`_u`{|eeEoW0W`-DK`u;t& zi1W|B+qK7l_J^ATTOq2&rKN7cNr~W+k|%zr$$5SM|Gn_~J^t0rsC9^d<|=|ncUp$j}{db?Yg{tIxslMFDMwS zSQO~n5jQ=pbNwy8riLe5`U73w-8S1v&f346>x#S^j!+@cUyyA6#n3o~pW@y)|d>rvKmB4iP#yU>z#}RM+_+E~Fs`Lm%2Xb6zUk zKEpiKd_s9uN-EDh1!#!M=+R&hXqvElsmR~-<+Z^u$$kF52Er13PW56F7Ee0* zJxJdtf@V_=g@}MB`l@{+=*~htG_kyI!wAM>SWOP*I29>kQ%?VVix24J zD{|AAt#5C~n-Hsg-4V5R9lO@WRo4!g6>@!i@c;CZXQlH4y_Vz!>HjWZ5z?*i&s6~y zUSGU<^o)s#F}1Kjo3keif%zQ=)1!loTir0mtx2wq)&}S2$uF<2PPUV^dSag0G&ME- z|E=-0I}MNw@5kPO0ZeNfo0FS^x~(nxN70`rabBjDmfJk~IA|#&M%!-WLOi**Wu&m# z4t@1&MOij}HpmnC!aXE3!g|>L2~iV~(1TGnc@!oc8)4!De;CYDTtxUsF^Dxq>go5W z?+7Uw%E!Vs%-$)pbXL4k)UQRC+m3SXs`S4IJRVnDh_F;fdqcCr#3~P0(JL^reM#*vHqt*k7F21~LR~T#kN9a&vQ=Iy)1V zY2_)x!`Ml2>bcd(Jq88_5OBPN(O(IZI~$?|;yId}$9_le*P=gv7CyiA9~&E6R|?ox z`k8dhT%3YcX3A{fvc63t+KT5e802V^;L2_JhrL`-kQ^}Aj1s|v7DjpNEBGxwjFKYv z)1q+S3$)E`xwxMsnsnrl>}*Wpi)}rovNV=>LOmb*7Jv1i-e`6rMk)&4Xv$_|Ni+XfH8*_$<;>_dbLAliyuo7 zMG;$ECM_}uJ4GRL&F_&;NXta+%f6Cneu!yqCf@D^%*{2$pw- zfqEo#9H0`GC{st=ck^L6O^G~YrbZbl$Gr%N7pkiOvRoW2xLzHakm6tf0m?V#weazw z{QC84i|+;JM6P7CmjAxq_20DzN53tR0A{J{Zo7xShNYbTJJUU~Arw$rUywx`~t1_Mf%6$@Lxyf2o=0^jRU`zaLL{eIxnj zN7rwDvZ!)*>HK*4eIag(X0mhZuo%|v4G%jp%upzsMe=?OKDuoQxEIF>g@D%A*Fnzh zCzuY)VLLu8o(JT$#;rk`Wx;A6d4URG!GYnKf2dvIN*Wk+&sDS@-Y{};(M0B#>5n@&R+0UpVj!NDBY5Ks@>esmzUVAVYa=+e<24H1I1|?!(%HgS1t7!6Y{s>f{k>CgK^uPyhyd+xind!Fq3`$yDozDEc-c7I$B25W$f4htXh z#gnN@j~gB>iBv%aWPOhLIDoL#3HQ$zY5Z?4IDL&>LCBfuXN*F6 zhES&K^pW>0gSRu5I+bLsz1`>^^w1E-I4|rPQ$SkCYdpOM781U_Zj>c=(CE41Y*8j? zTF5pt%;6h583SIg1-U5#ZVDuQ+*Vg3_t^M&4&1imWPln#D8TZ8u`#^nFJE-H$z4x2 z70{8Wy*)eQ&H&n-$-F@Tjh$9n0;>$_f@UI+RjW?H?r|?`Fc&;G+IU&n*!YEoL+|hX z)ipHCTwRHp9k>4N^1l!w8)zWPa2cy{rdf|!l&IGcfN>$=9ga%XuV7u$`28x5sH{QeQBX+Wh z%!|rIuXc8yU0N^(5f|6mJ`nv{jILxz7IY&P7eHqv6ZIKjRH~<>=uMr*u5Stz!H0O7 z436@3#sCrNIg_BFp)qxGBB(tmoU<=@UAMKn3k7_rccfNRQ$uKw0Pl_GS(7^_HETCD zE;LxBcK@@M_3Yk8Zre;&40R6wYJsMMw%vDMcQ1U)UsTzCeyLO9Wr(elydHLne%zp}TqLRa-ia$edyVd>i&a}#In53KA|sSJq=p?Wnmvm@%?)fb zk=+fj0*B>+zCLshlkhE3cJk=-j0|LhVTj}M^;EbNy2h-j5jm7m)ax)?qC3q>rQ0_b z%Vgo#Tkl-9CbW~Lmo;JI;~MJf>iNJztU6gZIH;$Ea+ClBO{Qut=;&79RCmK(H*1?=Ew~a#f@yZc2&$jJyMb7D@V&yc3l+=Y>n?GXwK1S zMIrF?cu~4hUf<4gfEEfAlk_|tYY0Q~FwNT$JPQ!eF`Jv4WuVAbV}KxF0zEYC<3}Vk za7#2jH+NurnWV9#m%C+E*{a5EwTvueqZmeyk!|baXTTDc%=z2Cj!IVnDn7pWOqs z1oWnk*M!;bfZg0YJZ4^A25qtbGbb~+IZ%NB$4{LIIXsY0`wY}f|mhL&I3aKwdyUqs1XoxQ!_L0@-tu$`OV@pH5wf2omTh@D_O$rmEAGSbIC+?2^-(IRernVC7E+K?qlz=|;2=$leb4^q); zDlHSe^Zv6%sbtTC8;y(&gqNAqgxPgeU>y6?b8&IibK|~$|6bJnHy#j>Z>Ons`LlcZ zFKadd_&*i;edhB&yB~<92FeJaKR`(V=K~G_!w&!)Qe| zh=4?|JuoyhOhA^D+UgA5a^`#af6~vtDX~ymZ<|B+Rv(Qvvv2GE zWwC>zsj(y&!x?%lHu;On?u>NZ8I%QGiWRXf(nY+5(yY=i8>G7GF#y8>V*w9_ECt}S zw4sj6E+!ObXJ>}S#wiak7d(w>1T{z~c#TmzK0v7RQ&fKm;GqFjC$n^8m@Q8pXw}JD zQrOFJwPpI88vq=InJF)9`q05Gfa@`Y080jx1TZMQs0z)=p{1dv1&Xz3$)V7Y+uYn7 zqL-X3>S+&t)Jkzz!a~EY_ZF#(xio6UdcX!$S(^57JnE}<`#f`Cm zY7FiMMp9F2YsECLwX@tShL59+S>uJqyrY%0jOeMV7yyR_!k2w!k=n@s1(>^Ko{TBc zkH1fWq6I+efBZG(4Y$ejCkHb7)vH(kFWQ_v5H?_y&_UJJ)%i;fsu)HMHM!AqjEgt-N`q#unb+l#kwKH}l%AU>?R124E&~NRTk;`wnV7%b z#M=KlItSMtRDfKpt$!C(WZABl+hvv7HIlCUeFyYxzySbP3bcXn0V6l^%d&!0Uid*< zdRA6%cQ@dhV$rnB=a;FWrNO~y)wQ*j_oVGRxZLRlIf;yG}=g#L{Oy5=kU zp`90rbq~ybrZ*q8>tC+pA=2+E#&8NcC)6x>9 zRrd4!- zZ~sp-078IpSzBA1W)cY)EO;7HQkU9wMVa(nUweyX0igYhKB(cLR*ll zk_LS~D?eK8jpcjPXy2;9j~Rp1X2lw>cC%*paN`MvEdNEhvf+1>i3^RZFx`L0E}dDc ziZ;+)lE=}N0Ui}d)@B?u0R=jo%J6^~S6Nx*xapI+bMP=|T;HS*ay_SvoO#%zC%p!^|L6QrDP94F4^yUZUp}t?^ zbAsjm{GnT4KZeCx4FWF;0d@D-QX`$L31|I3X}5AqoGC6V2Vp=WrjAc(R>pDZq<4ta{jB?!@(6R*72 z>HdMiWOMf`$g+F7w`b^4jg#zBnS#O38_+Ax&xLS8gJK3~2Z8wtxXDFJ`d&yN15aWy z*vhEh@m0_>{N4mOBoIcvmwiJCYL5G{SmEh1^`~f>I)BMs=b***T;kI$ov#xpFVv+2 z6hm@;2jez9UZGnFpm!3Hhq;^k()Ic~V@{Ic>0iBHTpl%d8bBRkGUx|?_(b4uN&aFY z@W^ZZs~BveusqK?iMUqiL|@FooRLE1l7S_9%W^CMC8yl@^6$xyZq0-|~wfI@}A5N}-K?m?tfESVw_IErcyfFTUv zhoBNtAk7ePpp~l*`2Z^F{yyjbklp+(?rdk0*%FT{9RJVLTYe^yn<+dzyfz*h&#rC zXg(i%k``^6XYUr9F%ctQ)fWq+ssi2Lz9YV@5%aV@5taO-JK|OJ$q%?DsInNi!42hb z3k$u#QJorkE=5<0u!QUk)J>fLI)h8BJpJ8=sTP+J6>b{%nxTUJ&s{Zsq?#W|TmWI{haBpaC$c>1j!ZPWm6Z1Dsg# z%W|qGc)1yHJ%|Bhfd{l+0LAlD6pQp-&xR0qhH0VdtY{Oh=-y*7^|Snm|s*^_;&wHdZq7%h3F*JN9qiUw7u7C0W_!{kCfpN*)?zB-R|~ zXsdn)|7DTctJ%z#(eqiI@vd)R#+zVP42>+u zqB&n~ft{PcurxFV$$#vRCqWUM8~B2`jk@-LiCYruMGN$0N91@aL22nJq9Q&)2ZeD= z_#!`tvscJ#9m`_fjFni5?3J?ljAl}TKbxIoY6Vl^4EN@6ZD@o`((#}sn$-ly%Q!O+ z{upqI;?Q?XJ&Jf0rlRxUDqPI;E~yZKL9>&ttw;*N5NNX_wU*RBU{FcWpacOTzNr7r zIkQqHAt7NyQ&X^8E1(<$+Av#{pZOuB6nyA60$Mpir$4Bp1FHkLX=*u?B0JKAPvb}dQ{_m6{Qd*kE7q^5lc!`G0uizg7o`b^ zRH*FJ@WQ#Bq+%+E2tm<;lth;BlL0PPuU%+T(e9_O!9N?g*B2LwO9p-K{}u^-@k zz;=d^M(^SxymF57aIG_5wIs;8DN?oo70?+Eus{Z=CE=Q5?XF;$@g;`uuHKQFZ%TZeW8cRhStzC7=LT@(85Yhe9a zcWYzd4qr~7fgic`3Gr^Xr$dbgLed0P;bUrMDc8~ae7DurFvB1HCn?;k%TfY!IGDlh zu2@=rhQHl~mPIFtowbNnG&-Y#E)+|dEH!CAjvGo_CH@4aZR8`{_$Ltiq4PT?{L--e zCm>wmVWKT9*DV|XN&%pQy0ups^KJn<6U1FhPG10$#ljUaL@aOP;^9I1_uVTd-w;{E zz{WquOMA!fU(sm3- zKL7Iw6j!EMFYPVp&pgkkEE5OkUoMB$lsdn4@XfvubT*(_cz{bk2R^LJ+LyuH?yKD8Ku^jVK#wJ-Jgfys&dDEG&;qnNBQ^c?mMt|rcq^m~> zGthju5SYaNI)8Zfzgh*5IvP5)CG&(YXJ2mLiWt@Z`v2fn6O%MMYDi zG;X{|>^1WS_6DriLk+JFHYpy~!8hOHbE&(cebB`~!ME%%!pu^$P#c6PDb*FfrhUCw zFVawvy*UAfZ!8GhiHU>@x39d zTpYswyo4XKIkq5V^2s_{nyL4%?6Z$WkqmnCX@f(gydiAsJ)DA`_RG}L^K7u_tfV}_ z$WV8zdkYOZ{#g-;DMssmKnnKsKwj1WA_=AiUfdQSk`9?pHgW^fTemBX(aQ--fkq5& zI>-jIF%lLwW$v5y>MK47@1=T_3T(Q1aaA&V?#fi0;5DxG^f?ddw48F=;uSkQv)%(I z&)(LRVEl*)zPldN>sHOaPIJ#H`uElD=i5cYE7y%6jCp#Lt+-(wxbqu^`yV`Rcj}G+ zm62d}$;ZC2s;r?3?s=8!d{jI#4lc!s3)1DPOHSO-zc(^Rvm7Zq^o_!jXEAfnR5Wpz z$GZUQT;+(K6SymrQr$S_SR_iqF^Rxh9lb+{u`!t zV>+_&a3x{=D&d$vKV?@(yE?t8;`AcRUn}M+I(Iq1btZ;Y?Mtd|4GQ7BmoD*PsYcb4XG_Q7uB##gxu!fZd!V`(3@Uk=NmgMp zjh_q|qlrIbP|5YJB6rdOW)E>(Rs@9hs=1!+?czU2da6J%0qlu@kgz1f`O7jeM76y8 zOQo476{}gsJlef!mdX0ldkY^Bv7Vs-@dQp^#jy3IVbMgfW4YJghK{!&{hWFcF=)C- zaNfXy-iL1Y-Slb!yc%8>pKly3uhe^<@dJn-K7?m z6eOgU4v|*6K{^CfP--QW?uI3#OGE{v`GOMCtu#s~B`6>b(jeU|`#by2%P`E&z#p9F zoO8!@eeS1j+*s52MiR6@mfs?F+`uJO2Bmn0Plu*a@-%!Cw-tKuxaW_zw@~g+*(DN9 zF?Df!UT!l8X~1mSp1ubZ=ug1si;j*?{ZI*dUhY?*xBwE(!cewMUfMv5(uc85P)`NT z_xAO{L0;Dxi(K;u?b=t+z37bffD;WaUJF+|%PjX;hA(9Z8bME-=ke7onD*Tz~pF=b+ zkDz!za;3Xn-YC*&aR0Xl72)XFV}oh5yeQrn`ClnNIWhJAiLiT=Qr?{qPa$&GH${XG6tzH)0?+nHhh@i#_@*Ok#6Jk5qr9N`0HhN+ z0RJL?wRx*N<3mcnQ{LDoRWf$vn~u!Bu$XXqc9N_398yYuPBk6TjbzCY%JIs9n3~kc zD&upB5(&}fUbg&H1JsMO8%Kf6B@kGXRKhMrHzhDa!AS*Ta%OS=2Jq6NEh?j@rc9qJ zfm8|B2wa-v{WEZNJG{-aq&)9Gx+S#+yu+B{;1=`AhD49*m}_)?T`O_nm{Q7}XVva> z88Si^dl2b5oBXxR@4tuy9MSv3lSg62f$S`9s zGX3TAax44#*oGev}yEQvGTks84!0I@D1jWDc!5K%bqSSTraVn9H-Zt-f!edyKq zmAox!P~H?;vbXq})4f!NW)=fObNt2KNEE!+9UK4=DXCbXN&*)Z=N|wmC^dP++ngp| zZ9OWss}C;zU3p}yTbTE%Exwwuva@BM0a$iES|`gS2p==J}2Vb4yPXFeG+yLE8yga z7p6e0_ene={u!~VR*WB^@mYwntxURX6aiWpQMrJ}xfP$sxVZ5wxg1_PNK)bCMBUWT zm+g?I$brA}h}o!Cl^=~ZB_4_DJJuabqY7=DCMcr0yu9=XDx2T^Ui_eP;&n;k^GqC^ z0fhOaq$FXWQvlr#=N02L`;(J~$oTlur5QkI7>)Hk9vJZ=8N#b;EaRPjqBi1Wy<5dR zD4diOM%bZ8;XsPk8dV((7c$@TXlm*t9+~oiT5@NF5f0Mft1Ml5H}6-##(-a$o9M*%@Q+HttoAcYA%B>vE0Q~V zDRM8`6rv1Y%sLdBmFE=7sZ_lkHRhdXBbOk1EUT0gV;-SuYV*USbfa5}2=%}yqDL@q zx>Q>U5hpf$XlUS~G?F(&VbSCU1*YxmZN_kOoe6JnV8Lp^PjJkEJQGWM5X=fR8L)IE zN_-$Ag1cS(vdED5Tp7B2h@iJjC-Rg*Z{-KOp|3Xu*O8IK@S_06A}5Bo+3Mei@-@Zr zMJ^@oYShtmH&FS=ddbplIWjuj+oXS=13WXeeDS0xTQs1nCKkg)iq@6wxHJVA4m%o1I^*$!^in6y;jrHd*M=O zIz!ky-Oy2X?ov@+WVj6(3tg`FG2`%^L=SIP&g7EcT!FmyqB41Ari`~UM^J_m8YlB# z_o|vAG>G%4U|R4eiQRy`Eiwd7OBytn9!l353dI_Jjw)UFde~fX+tLxF^uoeI(9zwH zWiO3KEpX)Cw%Y$W);E3cpqa^|c{dET)^QiF#Rd787x|be>`k>&3GHZ|5y_#*83Ddn z-0Q)JLWF|VdL+mCdwVOQ#_IN8s?I3b8$-))FjQkyUNyqni{))~T-c?T&YwF1cOTY3 zQWpr9TcB*3y9>Gz9YV7esdPih%9^vU@1$`;qbV!WFC#f6GaMh^bM$OJlYEk{YW-U~ z8_6ByuL-}xwgKFgqKa0Q}_TzMHXLR5Fj9kLdfC51=LJI zRl$>m!Iimu;_GGv%Ycw1vJQ`h4t=%BpRk0#{X@_!6q@yJxtoDnl?DpJ$^`^r@!C9b+|LMXEZfJme$RMDS5kHLzB>40UF z;=tk_r{>N}s)DQRr+1dF&JR7Zw40JZSYg1tFXm%VX8lUnR9j0el7%1E!vUH$pqBW2 zP6Q97-)r?U1fK|@0^o(BkG6b8RW-I}#nAcH_0O+v(oe=$wGzQU%Q=-FJzy9_r@D~- zE^>3+8qprB+L0su!cWhd>=&L!uXrzP88fH}xxcP?8}DaKo*xm}V}|?;5(JgZ=ZreC z4X!@UMZ)+-%UBb%SV8$it`Yb`v-#0y=XJaLISG0^vz)-{0yO~8;QQ=2mR^qfU0b9m zz)K&GiLVUO)j~6L?teq{Z|88lQbf@YggqGb%S=!20N4nMo)E-JE-{VTDWIa_EKcD0 zg0dK*aqkeMl{76bvoC&B09Y8bGvc4E&ggX_2-ZS9<*w0#OjyIiACQX1_u*F-woH6m zT*NQ_#+%NX>(PkVbzuH|q&E3m&g;VZ84afzlRv3=7oTLz%|^0riJ}-y=e_&4SdqTa z6#T3FACcrcR8}t*h{*~01EHLMI8@OAI}qxz5C0KRdIpsuB&DUhinQOQ4B8bjQu=iO zWkWe1`Lx4hz}^u7n2`o&ug~VDiZ@h8zCNP@MUH4a6C-0cSOF*r+|Cbdot&IB+Hhhd zReu43PtUK_;++dFicUGvf`?-GCkEnshLW~5NbD-ORntZ=VYe3)WwFZcvSN9z5zSPn`J(+Dijoz{Y6kC;>PGAP8We+^?_vLA=13FP|Q1ACONr+(8(F zBtJGb_Ok_88jq9*31oHg{dtJZgKa#hIATj2LF8rQ;(rg% zt>buM?K<4AmHB<8nE^_I_Dlj`E4eB9hGd;XXG4B>zX^R48=*x^TQF5dCtio66()p; zdYSy=ZB6r_%}HJgqg2L`lRt)szw?H8d*1}dtIw`hm{g?& z62`*+MhoBrZ*BXJ1vxl4z(-7o<)al^TH3#katS1DCISNl)L>uIb93L37UL??i;I>z z0nk}}H0B2`22DUK%gMQHDuUe;) z9Z2E_?%`CNH;|c2)C*eCuhe_EOA#MgcbK&aKF_-Fzqm(=hpQDojJ+~Z6cGcE;7UJ@ z=LP?Kvc`VYGD$VTxVUZxZ5(>2!P)dN<%9@5X;ni*6cDke8$js|JPRKmA2+b0u~J~= zD;}n_|B36qR=wHl(k4ezH;t4I>-Ummpw8)C2!Kit`A~LvvCvRe_btA2cKRuvTP`}B63}K~F_DdO*L!bx;H{KM|DJu$aZh*P^vll#M*Yl8!@J;I{Nr3(-D|3s25_ufRv3(+e%6*GN(z=^n9q%Iz@) z$zd&6F~et_As|kwa&J%U@0a!ZnShqaWRZwFL8TR^xW5yD=Oo^H$)W|BK6}nRYk{FPJV$oF-038G-Tv?B*KA} z8C`Ag1kx>>bTb0~;g8wRz9J$bVIZY|4i(@i0}gZU;94_*T#Jhn&)|2yD+6=iO+bW+ z->?_tRsfM{Exys>0v`XS$;)AJUEt?6JO4$6KP(J=U`-j%mBgpmKuQY}hVw$bv``s@ zSvrKlGCdvN3tcVm|HcN18#cV@o*Lu63gcNs%`KADT}fvBz$2B8Unr-6DicVG4{a)c zTi*@YC?@YPdZV}mg`_y1ZmpiS1}aUE>H6ShTm^|{G}ANbJ?YXC)5w3lHqgPVRA*pV z_=-mCV9uthpPb!(-(vnv~Z%}nXa`o7FrN1x7WL%xgBqk#9LYd5{z%Y+aF zW{c-(hu`_$1tPlSnul1r@OKd5 zL=P%|y#Tg(iIJ3!{AG@%}Sa?@=V?VtO)jQ})k%*H7x<52az8jTdbc!-s!g zOo7fr6o7uXG6`P^87~T|$Mo!MwfZMt0ZNRkP7-#uw?P$xLxy~7 zs;k4Ao2A@__OA|yfs)u!Q=S$GUQ6b^WZE$^x1DdV1)t>?moj0jPF;^8pRP_hW{_=1 zE1fV%&bj7|ZKFJE(TMoin~?lHM@C^SF}H2=BaCyE8{4g}{0D5jqzoGrveZ<&UwWuY zXcZ4tii5Wsf6MQWo@Qre(f6CB@>mWE+3u^)K8?Vq6~y2@Y>44*=V?eyF*&=%B`H0r z^$<^uNjRv0ugJvIwDbB}9=IqS^Z==iJ30nnB0VSx!7vQ4%YYK-TS@h+uMIR z8Au*Zx2IYd>kz7|QVJADYu3MB{#kXu;5;DlhIrZM5{qWV4RQti3VAq8^O*ky2Jn2K zhJR($RsTe{BBfdY0giPlYl^2}Z(pQh&!0)d5-$N0>K;S>QgvGqDqXHup8yGI29%{n zm)X=Y^{!IDsrJSG<)zG0Bw}j0p--i(L>zmGPs_xkI!`9tXCAivuV7-s+WJniHk}xp z2-Ek%;ntT6>AIiKP3(w1&B@Je>Yd7D{~JB|x0sDR-woZi?1fsvZJ|{al#zsx0LY)q z#LhWO3|(dLRj)!_6V_QsC%A9q`TcwGZb8vjqHjuNYgMB>6rT&%+6;&%LE%X!5{C64 ziRk^nhqK{Isg)UkQ$reJ zLvphU9l@BA$mDMGvA9#5@|d_r-t3eq{2!B7D6@>?ogYJqNY~Hs@UuOCXHxQpg=FmG zb)S&nwMy)4=pkb3eY8yFyoDvyjsE+@W69b7V3GS2Es)JF)vKe*nadxT*`a^x?Hfm@ zNq-Y#^YbhA=lHzZNwhYY~7j7eea@}bpF74buP9(;}2 zja5q;mOV_6&7X35RFnAjyY2SQPChUg=UM}Sh2zGgE|?57ZM3Z^h*MvIGV0NsWkdHq zD@!%sKoRs2;1&Su8005#`fXoaw4Ju<+wt+}Dm|T|ax;%MyV=bk`2h|a_B9V3*=&vo zuos@3Eo-^Wc!}5gzF%HOi|%3;Y92V!x$+$nhA2+t5dNU}=P9y~%}x(H^5Zl(`Yxtb z;YzF>Z-Mu%BccN-zilw4NPAn+l5biBviPCx%jKJ27#Hwrwz{*{wc;9mPU{X;Qz0G) zZMKPY^veMo;i%Q$%~=#9d{Bbk(QER7<*}czn3)TZ^bsN;SuS1TKb^!}o>n(C#el~9 zYHk<9f-|h1RmVuo`Ki!)XC*LsH7r#Sh z6C)aRzA0XZULwx+uKe8RaxUS77tZMs!|Yx;klYL6y`gvc)P%aVZYxu+Ca@4YRz)$| z5G+bi5#2~wx@TRqH#g}(5V`{nNNxK`u29HcHr?%cn&a?P=fwiAAI}V7w96z?%l$nf zoR~UNB!`2EG4ss4sk*JliS8woy}b?0zyJf|zvqt_l)p-z;mDJf6%e!0jjcP*O}@J< zU{vU~zC+nB7#n`^^MdIez>8V~_#PxDj}ha(tz|ML6fBI)`o>*apvl}v)Ce)BFW$Pf>1XMq&kdxgDn4mv4BOzq}2?J2!jQGkVF z>7dT|EvT>rGXgcpo?w=apr;)wpsJ>gBT^`bwL}Z~^NU4A0b~gl{%H6V`D`Kll*wBznV13<-rwJ17pX-kkQ%&S+Z0E+f+izGq5!g3Sjf?D@@L0q z#WDWmcy5jb2TIk|MIzyQn`M>HTwL^utC!r*OYC*Nofms3@6I4O|DtME9at$PE z7NxJty(ebsu*^z$2FYq%O02!rA?3tlbltXlg+BDfcD6IckSqwxny_9(eWc{$bcIK9 zK^8DquAeYNe?ok*MDwAWfjsdU=Qdkh`XaR4MqOsisDulsh@x?!``r}EadIC+GB%WQ z^wv6Tndj~O*!TVbx@qP!%i0c-XI;FpT<~*Q+@a@Bh7NZG7+CCZXJU{5HydSVhqJW6 zU4FUdFM2U-SBnD@7%qa=BUE*X0rB1AiOfAJv*Yt+zX#C}2l&Qv!DqM!7 zH$NRg&)S2Rg_|0uORnn`8qdt%(UAxhzt!fORP3bJ%d1KL#wZ$XhfnVN$aY*1&GzZh zRyqvcrO|nHr!TLkpIQW$Fy+m&e5iPE0PNYS>$RPet1E7<4G3)=xJCdpE_VovXh6B) z_pf;k_*l3Zf*xvpoHYxAd@mTp#Z9sTbsq@$U|*%axnyz|7Z>l%&SPc)>T9?UhHhhx zCEsY-TEza$cox>|fqeOe5HdM@_49Y7<(Gr=eK6YKj4j%gOmeng>dx<17`vO9eXCN3 zzee^^vV4io*J#6TC|Zw6jRiJIRMlv@Q;9hnHpiaNH#J~yhxE15#H8JpA(GUOP+6`s zNMYV^SIBE=yf&$axVL;oMr$2$^815f7Th#Jbxlq9JIfFT&}ZVUnSCQqS_T$t;OW1` zfj75twaCWU2OLui)&driUd%_Q2|Syz5Bl2pH4f6|VDc11b5dG5y8WNpLICt$I#~G* z@NRH%Z!{teN2B+Vrf=__M<|>{#NgHY1hofNtI_kaww~GRLI&H<6fiS9*T32^pRo0h zT>r(CtRvyJT!v%bGL~-NmbHZZnGnKG#E~cdD!)786|UM(wNFF*ck&u9XLr*vNrsPD zwJT%8W@weu)M(hLM;x3o`P`ZsiNAFj-&sJFSOJFx@g9sU;jk4P7Y0N#Fc}Rdyt`_L z<>Q5d77<`8aAU^Q`m(q`Sg4<{=mv!&s3?WS#PGCA1eg+m*D6d3hA_0&Ppd}8ztZwF z-*{jWkY2?qDxw;C79DzaG>n-Uc9!cgF0-W*dITeboCjjp=dYrP%BC+BPE_Xit*Nb7 zc-ZA51;hs<^@ul)361u5f3i6q6q5+cs?*5+V2134?w>YDh{E)Bw zL9Il}=uzD9?I!H~M|OHLrAMc}2Dh?PjHG#PMi^7Bf)Wv6y#OjNGVG*l+ath@e+URH zTw^Z5lvSD;6ew7@DO)hoGlMUvX9wJf>PY@3^%a5YyKPvZ?9AMN#)>U^X4dYqiGR!UA)ANVaRf-qM3}6AV28om z1-v~=OUHoFV@nGxkHWtBn!?rg#!s1^KTo~CrRDA6$U#e!`4mrI^~uq`HAUeZLEkkEJ$ zALqcpON8H9_%O=dgD!jm}cnU-?B#mFYX_59fxBkN_gtHS5Qf8XDnCYpSMX;1y$wuGkm=F zpVy|oc3+Ul4Uk97DZAwvHnL%$i2@ z-5A-6N302WVf5vnJ~>k==REK|DXl73_yi_87xg|pDkEVN5)#^-YYPrsqYK@qlc33O ziAxDCilHXQ$Qb{d+9L`@9KiKIPMx)1Hw%ScyvNqkk=IWB@bwA|yRI6|YkVOVy$t(B z)9jv>8H=FvT7RbU6}Aqkao=42R9-&AtVaOcr*JS?iP2XE%Po8ac7lRM)+CskEq*x6 z@Cg}ks z=%m3b6>lgP#CE!&7kjRNU7H8fR+Xo?!uu@ua%Qb7^o#<#I304N9(r`H5GMl^fzw-w z_jlIU*Kv2y5zI6N;tm3)hey8pgwkjy7ise_tXqMNE%fd|-hQXp8@!KCc#G>`c~~lk z+|3(JhCCxtKgbpGYl`?JCU;LSG08!HIk2J)Bm|IUaHw8Gaf~w|} z(i0=8ys8p@{Ujj9@sLK!;H%tTV=7@tJ+vSlf1kAgLZN*pLNY{nc`_f8ce>CS@oJGy zMp{}L%s{FCdU5RL@9%GGZM_U8SN%_|SuZCCRA80S#8N>q{nt-u4<1v~MQV-sE(M-< zx1iOVqts2w*dZlx(<4jC0_X?5?%eX%`^nhmm6er3>d5V0sw2&?cc-~kDf6XFO;1MC zNcKMXc*m|jSWz({L!hbc;l(%BznFSq4A>481|=@)%h@aur!RpSSjSd|u0)(GJRtC^ u_|jC{?83jZJ9##!C~ diff --git a/src/main/webapp/upload/images/deskIcon/0000000015.png b/src/main/webapp/upload/images/deskIcon/0000000015.png deleted file mode 100644 index 44ea974a2b6b5e6092d04a413112180bed5220a4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 21119 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

                      &KHbhJQ4RnTs=Id{j? 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 Qp7}X-bM_*XIPFaQ6OF&ouK)l5 diff --git a/src/main/webapp/upload/images/deskIcon/0000000017.png b/src/main/webapp/upload/images/deskIcon/0000000017.png deleted file mode 100644 index fec1d88a0ca234a6eb76d7cd2df0e6f8985ae7c0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2785 zcmd^B_gfR$8jiX)MEAOY0hg5+1QbZ6X#^1xRL~$MbSZ{pLLzA-fkbQ|t1c*5c2Qx~ zYeD6Lun5vyKoTH8NFx%O1w;WA#R4iTcW~9cKV0uWaL+R{r#$cbe&6}dJM&D6pYP_y z2Fnc~5XfThEd&zS!)ERUbHFDdJ5>gDWRZ! zCnB22!vhTFmIOXPPVn`oCd5$J(ctbIV6I{uD8L4U6quOJ;s|hJH~1%A95|j?M!{j9 zAi@|o_+Lo{6a8R#E+2q7A<+mb+8GUV#vm~cjxH`P_Ao3OgGQmTC=3>XaltuYacDH` zbAyA?_%u3>MA-B>7C3W*GlW7O4uuklL`abXlFN@qVb-l%H=}{YB0vN}u!ke0h!Grt zVWm!Goh)&V=IO@O*$GSK9*|(Cd8A)N7f@!RI_ zUdRJFV%T>pYBv;ipmQ>be|0`dk>+0&eN83pzlXeu9 zR|SRdDl9G;dNQn1Ym@g1Qcq`uQ)tZ!)dml|wyS60(W4f5+xz$Lm0I1E8+o!e#o*&7 z`9-DO{r6Q`bz6s0*WIgVSD3AU7u>F>m&s8UHth;!%KmsJm0D5TkePL%|K9!MDJi<% zK6?bZvANC04IdRADr;3FaAUe=`P)KxXe43|RTR<>D}vrEe>Nr53D{yUDO zosu@o146=U8=HRo(Y#V}he+Hyf3eZ%)2F9X5-}L;GP9qGZ}K;{y?#CR;)VH2>lkYI>Gb0c&Ny#^#|9^?o#XmD&8--_HT8F-TYWaiFzMUy zuCmrPiL^On$JXJI(VE)2hXap#?hh1~RqDF*nl8PqwUtKG8AfLw6wqZ&@`k3?>U!x0 zZ{qOiQ{!dJ&3`Zvv1prow%V+=(`Y-DYPCY8ZdIzJ^7d0d@2jZ0Q&?JgBmWkgFFKlX zY!%D`zuD&>#%4Mr^i;PUm$f7goriP1s{d{FD zZ4yaCM0kkB3JY0%y;LfTjgIUc7&>`0`S;^LXJ!1Fc{JJ$LmzB_*Yob8<6&O}m-6_aAYL z9<5#yzzeCYY&^Cod)Lc{DA?Rq6feoRt(+BQK;ngjWr;GO(9wq`8=>~yw8CHZzVk;~ zo}8VTS)6Dv6@AErfrzZ8Yp!>;x96QjhBnKkwT9XE^_knJ&5*V!^IsqxDkbc~+wVpK z79GnQ4Mc^m&Db9j{hOs<(oKhCwbjeS;t1$66uXp{;lgI1Gs=`NBilwg7dqCzKmPRK zJS(f0IY8JVXiIpU(|-H-SC;qE2F6FN^If9Ho>sElwgxWAfzeZ-cgKl0V+M(%2b-EE zOkJ8sC;#}T{J^E|*rA&f8;t^MzO&sG-uPkEGfsA5Free!zR~i0XZ`t6$-A@IXu~@6 zYCwp{lofQE?CT~cT^>qLPL4i@Kdeo^ny~b7WP~$jFpAN3GTnA*-Co9(Ei3W%bMQ0< zBPWV=d1p2`Tz}Qj=#oj=N(V6@x?#J_R{M)_m-U;_xh9OGdu07V1-tb6oFe>*2O(6+ zM9l}QRX)d3O>gou@MZC$?I&}L*YwNJ%k`Iw2HcZVNfL8<3jgw*YY1!fGSLEiE8?S0sWblB`YL4)08g^*&l+*0*Hh*-mtQbA1^Mkte~g-zU0~o$Z$<@?1d5RZLtsKw5=Fy9ncd=Y{(9 zPQ45I;d(UO=0o6`(qY5cq}YvXU`tKU4aSUN7g|NKh9=sNrKkJ)_>5ezFf|pGhvyn1 z27)iX=s)n3d+^|NU0u_-@x?8amIV8^=H}08Ygy0w{~WRJdNp(^?JbMN8o9CLp`vfP i<4>+vYae9RJV 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 diff --git a/src/main/webapp/upload/images/deskIcon/0000000018.png b/src/main/webapp/upload/images/deskIcon/0000000018.png deleted file mode 100644 index c692ad31cbeefb2eef882dab06aadb3480079e17..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18971 zcmb4rWmg5wos3=siVf4F`iN*tzo0pWc!}%7ZCsq(pTEQo)!!~REYp=1H^+kA2NB1 zu!b+tp#zvPw(yo=R)&o=|L89(?ftTHx1EHpDIRAoF6?v-#)J0)?oYV$Pn)rA*OLI_@ka^rLH z`l&Aq(YyP74eKTP=^c32LseiT=i!<9)Aa_A7BoR>E5DKg8v4K%7u8Tl4Y`v)6~|?j z8t0nVEKrt_^qj+(9qQp0YeTZ3957)@{@ZMQo;;_2I*WZbRJHotK`}GMP%8PaiAj%v z&QN)ro=M+Mq27V>ynlT$B%dbu%yJ$}{J!CG@F=0~_kTOF??MEPpLGDv?wFP`v#?Z$ zMn_(QP?gq_xm5J#vlgA6ZgFVsh0x|_KB_0sBty{a{NQH_%vklP{YG^gfWV?@1mB^B z_S`WVSR3lOHv=c81SqEp7GNrP$V_b+9W9-HHAy(BQaqjyHY*N~>&G{2 zoQd>k4L=*sxsmIm^~GH-rH=wqMn%diScUm8s2 z_8;a}HdEW*4}NUp#7fjyihhgsuRN!uE>yWIijTW1QRY?bck8iuAuO349>E=Y(5x;& zz3%F-Gsz{*K0D|0{x`#d%Y8a9V@{eqG0oe|Y@#+2305Igxv);FlmUT7m2tquq!=){ zIglfi_^ES4XSFrw=0)GaWydrQN@s3S>KG1Ld|JmebgDLL=_Zpho{rT9a{8<+N9?Kkj2j4h6_Ye3C#19H6d_)U}a9=qvs!^}5?4`Xk)SK@A^@7w9FksNNG6-~KSe39u7SkxIq z?ZDcMwLNu@x#b+;JAa^LmzmDP=06IUpG0&Dm?xAa7@++FH7A$BL#Y#wp2CxzUcFH) zCa(q-4UCeA;h5UYf>}oB#h)(xF+4$!RKI-5h`&6Z{!H;0(c2&Fr^akGVb6;exK|GQfKl@gH1vEtE4nO<$}( z5*JfuUbw$WJ?-Cw;z=RXmDk9De-^8625=yw{M*Vziy(Qt98-~AhGrN4|$enef%4(6wPPQ^E;a@IPB>F#NCXSK#Z(@CH! zzb}cHwsbhxeAK=yb6OlZg8ly%O?mcli(6tC@pHW8Q)wY^CLD@~s2j;hXREVJd;j9! z@5r0KX--hN~Y`~XLJgMWVpgMl03GAm4Jlc|a_6IKk^ zsft!H!_<<9F^9+lrh)mTJ3VCPg!1240N~P4J7_`E>!2^&L5*)5=W>9YllyO5?{=Mv zcl{B3`KTX&2r2w^Vvu`t;f4~EZo2wB2~)Z@@_0`*;>GiOsq@UXAD0scKaB8fO{-0- zN6KiU6Lx53jXD@$9=5zX=B~xpN61va9|g2%eiN}!V@+ShngAlZQU% z6uoJY(xI9a(hb^!t&WPNToIDcRNn)W9XD_jD88Rw1|@jep&E+Yz4I3NwE`#J?`dGG z$S;U|gIacf<6+?^eOBf59daBEn(p5A+~v(6#bdhD`UR^vx+K--fK0E zmye;LEnFS0A376$j@KzeiP>5A=}llMC`Wiw-OhaBZ~OtFxpbQ@pQ=VWGnL+*g^ZQ0|s%R`3_Z(kYhCvqA^c z?3A#Cyx;eGwDpYxC_G_Nk}G}!EU(d)4%Dw2{Ji(VmE+#Y>QC}kPH-OG}1+D zk>nRJL4!+-bG!hec#;tosV`S78#x*q8+i<&8Qs=;?ZpnOo?hPXhTsH$=h7E_+Y2)D zQRB!k_GA*xCm7;n#Er=;^BFvrXBt1c)l0*klcq^`#Cf~e!3z9-%(ORj>J!uw{M(t) zX2tJQm|Fg>|47Uf)jw@lK*eTYiLnr3-Iam}cJZ4HL@>?RrdDdHsuQh@C%;O6YS4<$ z`@txI;7oZnbngnQ$)V0cRCwaCE=Fj5uKIN}10!HxID-}Z7GJE_D*f-L#gNC!kHh>A zrsM8^c--6Ubea=51v4$ab@}#lHsOzbpFuZC34u8_Jc>NTH6rDV6G(L#nnjGr(IfP@ zG7=4Nhs#c(z>6FTQ8%ZR0kOi{a(3gz!w&;C^^6Uf_ox*S_Cun6j1G{L&J+IN8>8o^ zE+hFJPIohw(!!Uou=(|Bor*pt(3>li-6m8!CCvWvh->?#3daIefbB9_dYRy3*+$ZQ zK}{6!oOGz8vmZ&uj`u#2Os>0#sYYrFjLDRnqod=dKR6$}YAGaeoU_!jve9~ZhsZ2= z=t^YF$B2vEqH3{}>atkTorUlL;}hhhn5l-@_+r$uTkRWguW5?%lL#pGS+)=nbkz+4 zt5tZXBdAZn!6*_LGVR^iCvZS^eI(i!&RI9&tpKxGaCeiUtm4lNV5oBf9Hm(jqt#*; z_*|x96gY&I^I67M_~I|WQ43w?>%Sxf1Ox^M{t3LQOk*J;$^U!(*aepwZG{x>@}XLx zU8K#N2h~?}o+@H)z!4;n6&0vn>U&V)e^gH*W}kPs zpgNB|rSRu37aw)WL5ecxKQT|z)TfHSA%`>Wl=p=1qYNPELYc^liAhXr{GVzW`Up+|@3oY-9v(=u`5!_r>TQ zT)Ee6cj%gBMj4C=Gub%Hg2x;wL2pR?dm1ZR`g_3l20dv;uaqWqJR2)Uubk5nqEd#3+7csD5t8Kp=j)qo z!^3rcKWq`bRQ2t4()2Af{YE0DQ}u8F!KUK?`PZ?hSy|clV0Ny%CUKrbuy;_4c&hkY z2?&z<)YSR?xt`kd`Z)bXW_{wW2Me`k5N!Hs`KzpS@U#;$e$}`LS8(gFui$pSR93Be z?#ETP-ztU|?cV#^;{_}=9fRi!3#kkYe>0`WkP3;8&0p0ngo+XP_sl9U&|)GMAVw(4 zn49fVt{J7v(+Z!9lxjx1Emsc~+aAct*?@h%xRVvD|93L_xX^vcB|K+-XNi!jy6F!( z)_%S(?EAR!ArbQ!>i>(p>b^e+s@bnSZqwbX%SQN+tAG8pCw~%l#l8Wc#$xY!{w_MZ1MCWVl3MP5J3NWpL#=6CTc^th zuJo_Krf3RwwCfc$6^A7yX_O_88(3NwCI)dmEzOu-A|S%aU;rdBT*Apd;$LhLd$&|K$t}60OfqT zJXHf*?0(qj)9scQHo9E1=>4H3yevchpt7EaZaC6^7oJ}ER3WnH8HOvITm>NA& ztq4U@KKxK-3sQ-})DrN6jR*NpujgL<&iS`jw_V`voBgaL!Ho7RcmQ}jd%sj7*cW2% z(|+0d2~H@d3HEt~%JUvl5cGslenNrfgd3VypIf;dahN1;n#%zDQW79vN6IG)VtXeO)CRNLJN;0W|Oh}}rFh#EUz+A{W%nMLDF-QchQA{K+Z%^e<^;GJbwdI#z*5(D5U1qMY`Z?F=j!sItTMOJ7@K`YgvY0#@ zG@jBfEHF(Ray<_UBgiXeo4UefyubY*_XD5Hi@gfBI)1rXbSh%;{n;FD_RrgKX;zYL z*ADO}^24sB&-*FP18&FY$&~)HB$FV}b$mqvsUWAQt21$$BRDcLrB~tGF(;gZ-?5k( zp;aSI)OZ~Ek2(zVQ@YzBgf%hOM1_B}ZN{>4azc_G*^&)Xf+1xuD;nxyD8xO_vv)&+zg7hgFD_0U*rb5qjcv-?X>qK#OsTIV&Da1#~cl(`>&7?Scld6?HjwjYD7nS$3kspFesr{$&E+; zHRkJI!;Hlv)cy(q2x7z(sk7^zQ1FY}+p|ex4qi zMMz;j8h=SjPFPS{)5EL0CFT+g=5x$>^r|r7F#G_k{v!ceue^RB+e+EG#>^SzMOyU$ zG@}NZzki3#G6pH+kldJzg7L&q`YBBN!F4hyCMWp*`Te3UKp2qjm!*%d>efSIIAl2w zp_o*Zzey4L3F7~0;El*dF{Mo~Rw~kB(_tmx*f}sPuBx7Q#-8AWUI)I4-bTRO=vAkS z;>r|S4|5?$2n+SO@x7?^C2-)Dwsb|6(QSp}sD$sw{i%$!)hFe5`C044kYJb|QN##A zlHT{4*VS$h7F}aMvS{g?V!4FdSOf~ntn88f`{@`)DJhz2z1|#YVczTOCY6-!$2X?A zul7C%3EPrCsG~KQx#xm@KHWMEmVUwA%2Le3gL84pCwfEU2ElrO@-rzu{`-xRpS5@8 z5BF+u@#`C4EnO=os}!ctCe_;#Rx|;DiLG&sb-aRhSQE*Z4>4kBM*R!vcL(&s|WZ|Jw3;yQkV{EtZYWVkTTeiaOqE zO|Ml4N0JtMr1|@mE{CLIS@MGL%WAQa@3RsT91N+L@6RCwjQaPzsGncyfBr4LyMJ)K z8Qyrhdb~RR=ePkS2Y`KtWk59R#geP<$vqGJz)aZkra`#=(RxoX%D`EyVX+73b)5*| zpqfJ=!4DS;_Lz#;X_bFcItu$V9W$l!cOj98ZK!MujWtD-oa66dNiSsP6cirY3q#=d zJV4yHwEWKv&h?qPwFWZ*qA?umHadR>j*N_K*%~gu*;(lGmYpA_vn8eDP_go9%G<8g zq!B2q&~;pI`w1+HiCbFY7`8d?&xQm(Ty4eS!btJ8KNZEc?}nmuoL_N#`TA9%;p7*T z>?HE1k2XyThnfDjnt-0!pHhs-1fR!2t~b_VhJMPx?^$`wi7VK8SNu`f**saR%L%EoNSh#~4CC+W1rDzmGrzgG4KTG?FJShdEH zVoI?i&9Tv=qKE(S@U?-S;&Y8YCo+nenI$uW|G}iM&cjcRj10E^$ELGr8W|bMl)`?JtD0Zz=qF(d6Ja&P)FCEM??&`IVNKxZ`;8GeX>agDwLC=R|BMqOP3M z%Q$;qO(}Nm>-1&C@esWb&u+Z!XyOGBLbkoS!~TxMy}jMnmGg_nm!AJek5+UHx9TEw zin^;SV)`S}7vahT>VtX2@JfQ2J1+rHp{QM+z-Lbw(CMj(Hof9kmkr_HtpclJ{kywA z%F4^f31U;31+#%_*1CM>%e7XM&&LZ(YaxzjtfsxcE;rh^U3Mwct<1HDI`z@6dCQt} z>DKjBt%1o`{(aL8mZJ@~Ea<3;H5&f8|5?f{q#S3iocj)xY8y^U0Sl{KrM)+Ce&O@q_+WL18Eo zt^2KE)TZaj0?Oc(BO%KRGQS=yRCk?bow=yN`yq@dkA7rRB_G$ zC^z1uC@3MY>yn|>_#xP~YpbhzWy6J1a-i4lYLk{^2X;9-!C`knDSlF`g=fP|)l%oGc8=Pnm6q9vXVUxZ! zNoQqc_>eiw^t93Y5Jki1zH_1T^rJfLJ?Pa4c%6^XD>Q?ly;s$=Tjl71BgFnTSH_V$ z4>q+yb6J-usIG;_gIVAl!;3+rBz7)osK85*bCZJ=C@Z69?69T8MaPL7Zoi0Oc}@uW zWPRNElrnigJ4XV*>^^|lyzHy3I_yzP;%qZ7t|=&qqw5>%GL(4@!%Q8CBP7jDeBSLj zm4C~%I_JX$6%@FfC(WYz8(JK*nCUU1Nx-9oK3-`)YhSQ1+b7PX*i@*BIDpw02c4-J)W~TS_-J#Fb_0V+8UlYTVg57U#>c-n$H9vXEU~F@cy} z^52n<67`R>5ZBVdk9XMS*4BD|eZC6qY;9&K=F9Mt7skVIiHNGY4*VfbMEJ0aNf!Sz z7s4(4nN)}IU`rzDIdNkAR)#SCwm2-h5tV1%A8OY_cYs)V^kg!U-IHJmy5?*YlV^N_ z-cWh5nESDNd3{;$5OpD*YQQTr!pDv8lZQYbys3oV|MDrpGlPUJBF;LX=%Sw^?c0}m zZ$8Z%4&o0B{PkW+=qWyFY(#%ij`NioDIFaM+p1XPkqR6Aqsz z>+9+DPM3ndzP?X`$Jdm(s&0o$btO%f(F;l$*tSZ@!_)}qq|}%$-wE@59(*FBq7+o= zk|eQ_s2355y#yYk=cG@fq}RI1X77YqHTJhtp?&7)Z)(c}2~+(X z{Gce3D?!Jn%F2%y04Ih2DX)&Q6vOZ7{d)n!Hp?4;iVEAzMb05l1U&L6`GBUxnw_#XZ@_azTyhi0kwlZjD<|&yr$Y5Xc>_pnX?@ z>FBu=>kDns?ICCT1lWBFHK?qBs|XU}mBoI2Ez#t+k$k1z71M~|z&z|m38IsV=E%c( ztIR4BX!gE~pJoYuF<%Ltz=n|lCr>M*ls3P$yV0i0gE_2+IF1i^9 zv0Pp%&GMivxJMdin0gW&=XHe?4oJ`@FE8^N7;M-$*^Qio3oDVyRbXkKjp8d#X(?@; zO$ToeSqMo;tbkYL-k@@^!>mo8L{eF&OY!jTmdNOTIt`^Rei+2y7&9Qhg%pbH>ZHnA z8@QrAqFyPS{z`g``sokYKM}5;xu7aoZGgm4DvR&<6Fdk)VIlgpB>=nQ*tEC{j4;NF z%)}b0(93Or!f*5!M2ZpTLz9)0jUKgpdJ6<#s`1P(ZpO$h)H|d&&`F`$D>$^ z9f$T~-M~;F@QuID*>QitG=Fz|G-{8|7%~49XUGIse?V5s1smdbQVupUBk$dPPwd;o zFVG)%pHsnJ9P=pY$S;84{)Mf0Y=Z~}cXor_N&!$`JLTK{9LH2-T_~;x=-iA07jFhv zH0SicL`SL;%50mm3ML6xW(D^AQLdWK`%n!4Oc3SYc`Ga)6}Ru#$UbFS3#0;E@#cD} zsXvG1|Kj|qj4AT5v2!X8P+-U|vmg{)7`K&;L}1dLkZ1ZSUG(?g7k?8mYz0nIx^x?} zrR*g$r4LKn$i9wuC^0{O!d6dyYIWAyr}6(c3xN0YN!>LTbHJpWvw1%-aJ><4=?QgS z451gv7fYVe`#%~*(a>@qSOYU|gC|I9O*i86;0=@@BNjyMf7E|`0IGT*iGvz^j{TF3 zkiaJ{Cr3b@5LwBbsz^6qfjgQ&R;pcFP(hqz^D9ysW_rI2+KZ>ambk1iWu}CXjHsyS zJTqN|AD2E|9upM+g(zeB7aPr6m>6d4dy}#n1JN{kAqjn8U%m~iDlPUvdUCQkIK%nE z>}2QmPD~V)z(bIFR#go!@$y}?=d@|8bC#pWOrPCfWdO%k4yk6ulDFWn(T0tn5WtLh z-n5Ev<-W^M335}P(i(gG!Rm{k`DVAf(w-B7I3o{*jTuv*S>fVRuyeo5AJ|7hg^P`* z!qe7VWXqgxl{Ec5Gl$e`89p1o(B-Gz{}uyBJD{F=I0qotkxX)nopWn{%`q0$akZuRKXlhzj0oW80(X<5B*MH~-tp zE(cYP8Ip=Gk6~Xd*Isj7>|iTsF!}!V363Ce5$!eP-ewPF)*Yo3WGp=!H6GET{a2ruQp|7gUuhPtqzU>)0Pj*SSfK#MKC`Sm5l zEVFcvF}th?F~Xlpjrr?z(h$NIWosVHI9UZ+Vs&ji9q|18{77=VDo;x`eDW_;vT`F& zX0SZ1BqQ!XBVB|AT(pYY26ksUyOb85wXr1E_;lUvZS?01XS*BWVJNya?XG|ZK+}%W zaVDC4KfUzP)%ciwk@EzG2kmbt2q=T%{3HFxS3Jz({74IQtmN=o8;_TltIl`H-VB<( z4Ip9Q{k@xh4yVTBIkxyEM&~qMbcqAu6D+h~SLd8|OY1kWG{qlxW9IJ0`QzYdc}`zoAIqxuDz;y`nDevXadb~6 z^M5L!->S8bnFXm5XZIl8P7q&lL~9Y?7V(C^xyt2)$;K%Ut}n-N*XGHz!4&E(0=d64 zSN~tSq0?N^+#g|YP{C%Cb%Os@$FXW<47URuup}7v{hgAw;m^W7`1Ku8rnI3VD}9-l zM`xHz1tJGPihxulE7T!lCftM-S=d7PR2$(vX(Sn{-_wcNs$WC}&#Iv`wYyEkvR6!B z=jOa=rfV*rx=m1vB?Z$gm<1Gi)m6S?4el{kmfbXXdEABw#eaEOWSoFg%K1^PJB|VOx?Gz zAVznBvUw0oglS9Xn)r|Nnl^YSA@T&nm?G`Rsxg6#VHC68d#HJzU~$g=kvI}N z)9#5OhHJLuKs!_`H=$Nce~VMHZoUT*hd6^m0(7YYv=MYE_DefD%EUr?VOFVy<$}o8 zc2F$h%_{1fCNwMTgcT>LJsR{fsaZ;Jq{e~{} z3p|^QasQEUMkOQj)&02P0E$l9 z5~3L)d{hFdWZj8PwyZFDd0}Dp@z?C^-?onS9^dY>WowwUS<@jD$PB{a@M*9;X2=dO z!fkEuX>j*&A*I;qsjX~Oyw z?oIt5!%kOd-^YanZ=9&=E;Wcnok;*LAG8z)R+{ZL8HT80jkq##t^dBH7i2qX-&rP# zh4X<>vk9duaC7`kXCy?`IyR@oL5m<@^GhAa(^*jy6b$=j$1Yk9oVcKe7OnL%0%m(p zpcq5|mC(Xfo}|rH;O62|?l2l@bfDhjyouyba=}G{*q9IP52Iw_S z!O`?Hse~S(B&(MGl%{5s#Ektb|93M!k9zD7Oq-%GB0I{dQiV_V?*{`gOp=nYkcD)p zxFR!MhCYQ}03v>9mlgd6NJ&udAqMiH6+GKqUyNMe7ukjS&peatTWX~$;xRy64`LW` zGbIK7WpSn7TC8Vy42qd)Oup%LhkF4^9cBw(V4&4;FlQu=+F^HaoaB)13nP~2e~iO< zKZ^F-TybhLng1Tj9LA00Y`ACr3~<2N$?eT-tLe?Gl_v%C`97g2!|23{XE?M_=X5!j z5~H!6ArEj1YyBw}PFRU5)a7?~K^@|p<-uss`!zBmYi+W9ZmIB!-6`0mt_^4G73n9J zKwhfOs6K}_xQ7U_wi)M7HoELlHMwI=h$OGFFm{;J5t3B6uZ^z=I|rYgy|Jk^qBHiL zOIcYp2`DsdF^d;Iy6>UOW83V-ZY5JkQF^EF^4JIKoT4I^AW^M^t%QgiRg_tn<}GppRcyc z@RQPS&x+IHdR7J`B*a5*g4W)gN~tmue%ctF=y8J_i+&*H(cq`9&+%U!1;jsAE4yg3(~@DR@qshhJa z`HMsTOTL*?P_!bO-lrl(#zBo3cxT(wgZ*C`>@i{Xjc}l!J~*I#wn&lyQ-2E&9RnS@ zyFWJgJ+|cdIf+f@GJA@K+2A5J;CQ3Th{*1we}53=iLoX0KgwDO)$RWe>3J3LUlH8_ zZkpJJ&aN1*96!gN0M-ZTs&z7UI3_6(@$t>p>llF|CBP(s+IUt6r1Lc54247HE81nGoX<%Sr>+H;ci)@}v--_0tmoqX#udOr0 z>8^RoV_8g-I*A8CEkgGPGyqJX1JliOD64TRX~O9K3>v@V*7%JEbLSPV>z)l8P$+j0 z5T{b}^k$-L%#bq8Dey(6P*0kVRnlAzGka8^EeVtPGIt9A3tcu6Z=Rhox3UroJf_pd zd;@w(zRgkez~_JHjJ*^5EgRUxC?zcnk4pbDJ%r%5nq?9NGLWaDsuH4ZZx4$p18tYP zzJWWiY8}8ckwKC7Q2fuLxon`5+G8RjwPgWTn@Z}CP?X*hM#Z((OS>^K=#NmCKfZmA z8z-GAGJN8KTViK}379iw$hI5GYHHjfBGYa_5y-AvKs+@){aZSR>A*x(G5BwA%R~6c3O((UkNmBNNQ+g8NR`W5Jc5rKIDRQSjWe|C=OGn zUskgq$`yOxk~^G|u071Kzx~fal7ZF=^yLbw${MWcbKNGANsOL!YW%y!b#;&?rrc*g z6aoghuAcfh^z`h>1X2E?XDHB#vG^ha5*PJ?7ly=;|wMFWG7BA?e zli(-e&8fQ(*59Hx*-~{PgonVG)qnp1j!8wL)_UKunA4C$#DjIJzBLt3vV$dnii#G!>^n>`f;mvFJiEqTmaXuY+Y#x;9g7&vM(J6)8R4WkyS}P_6ELq ziufgJ>dPVf3=-)^1p9lwFo*|UMuI&`n)Cd8SGrC55TV6ec8)XS;=~cVS}B{e;Vbul z&CO}VlL~~I6Se@qpcc30^=dOi0+HSG(ieH7RpV=19-at9MGn=eTB$E8N9Yriuh5oI zj0RFzoHk~rz=yl6caGDh;1okV;?!Avvn3A)@s`wc7;aP%}xHcW803eZjkt z>ckUCM~9AE#1rOCDheWA<>xQmvM|D7c!Sm1`N_H#dE{YT1wMZ4sO(~WeQH|9F_T=A z{IHM(Pz10?vF}|@N-;=>rVOZA-3mWnNR*XvqZ7a-&YZ~oNa(>-7Hb0U{qFnRat^Wt zFDt3kt=Nma#OAZx*@1YXLXeku8!=%j_!nv+id=y@2!#+Ye&V5GyVZHwKcbzT8GDbka)}qyZi(F{vS39FW1Vrusnq|`;x^{e{nc6bd>!WFFT^Pd~zS$q; z_q<>fdp%XFcl;eWBKz|4ZEmA2Id5Au-QB&Agzh$iS~K(?((F_4qb9b)@9jJA9)*ctm}drz5MN9} z9|NPwTno!2FB1xYD_#AZ!U=kO4(hvqKxs8Lhj4u`iYHMWvZuU$woALzX?5pE)74^UE6d2CC6!d-F#zCGZ?EA8+Gn^1V)&O zY>fIRtn`hxI=+2C^#rh-UK+}%T`P8Gu*vC&$lF>fMLQ}8ljHRP&r3pFqm}8WAw`Zw z!!K$Fi#bk~S4jW+o&9a-4@4+VDk%3#Gc;12OM6GZnb&&T9Y<92dPmy{8t9ooV4Q!ukVage6bwe1d#?6Nj{T7UWlqsF?)=yrZD`%|TW5 z=@63I1k7+aDb4kI%UA2Qw{yMS^&xQJ26z0rKiKa}g@TOUX|UtZ-N)3kR^`=Icj4za zaQ*4(0&DDQ1i!x`uyd;HyVe0ex%z-!Nw!42cL(iYF|Q5??mjQs)DvFU4T`L3mc1Zq zFys07UOPQptwlI)*kq5)Td|y+UKW=-<3S<kD{k^5T08y0oECHb9Qg8z zvABy6N(GbjJ#r+)OsOdP`xNR)dWnVn_WL|kg;8`=E5=YO`cH2x@{p|qxh&>lGd6bY zw>!eyc~xn*U}tpvaRc7`jm=+9gcoAMQ)AM|NQ^Nk8{ZNk51;ulkB}E|X1ViJC**8@ zZK82z@6aGC2Y+eN0O4L$n(TNoyeZ#U7pn1HmS7FxOz=V?w3hTBLyq6-OgeB@k^IjF zu7e;Qg#nEJ+&Wg|$7M+v4s<8d^eN8=fYa~yt%;PX_-K{%n`>jRu&+cXJGy=<)+?In zH7DkWm0wv+=j4Rv#%3Fap1PR>0s@}wK^TRV%#MyV-mvD@xe{{%j|pO!-#Z*F4b1d- zI~+p1j8Hod59dZ@6A3sZ!g~Ht4B0ou*o3mvO2T3qqH0`W1C#_n)iT zFlXhSs{x(bJuSV)Q!~`m;(L@I`HVFlMh)49wZa&W`i)R8Qc6QpjL(KFdv;kT|Gnt; zWKY($hxYc0!UT%F!y;@J<~11z=60(6;8_fRXA7IC6Ud4$+cO+73DUvxyu1101=Vpa{j zJqDOAqNOaew&X@0uP8V+z0ACCO?gLtIahuw6;mf{3vU)eT{>^cg67t>)lmogJf5yg z4tBnrRdu|q+Z#WH=z|zWMrR!(Y*<6o0f&kaM!n*KzsvvA1H`^R-BZ0pbvNg^VL>K8 zRkYR?Z5y4(zQ4F&&5^?=gwEoY=t`tIh9}D70$RQpUK$ke7sHeA=Y(WpU_B-^>O7E` z@Opc6OU~RGvVvE8OndjIciz@BdaHFO1jR)&bS8#F%XFDdHd^2L?bE9abwv0jXI-ep zzY7l_$!SoTy%nUnaFAShz=$l3QbII|FSdt42l}g^h>bMydJ}dE|vO5HdNL1 zW@q%grQJO|U?T#)3;I`196T|4ZQaYTE}RN_dU`B0xuPj$JkBn(5hnoEsGp^x70wIg71Nvjfji`htzEcp6ck{KpI+Vzv5gTx4g^=W!VO^$N-0)P6m%kdD)tayl9=!I^O-?;rnr)+HwIVuY)icS_r!^*^WaFV$j zNfM8>aGlA!{(P76+J1o}(EeJYJLHe&ACQF5R0u@yXZIgRQGhPDj2bD6gT?8PLSSeV z6XHqg>1h-2x7Sm;MMlqV?Wxw)2M-k47OLM^ixof9mSe<;~1}4 z57Zgl2eSVzEH9MT(z7y~rSAOa58-?i3Lf+gyN95m}v1<2vL5|uC- zNwG=@n*C|Ao0ij*pt-a*~IhBl>yuT$;HY9%t1ZhlfIh&g;j)j;XBTe~BCPti*Gu2JiXpU4Ik&d>t_aY7T;rhEP z;}EL%QqLmC%OBHA%SB`6ss1`q(>`U=Oc8DGxr<%xFK+J4ZI5P+{yR4n7kv)$t2=k{ z#eD;chB1j`owME8dpZ1-NB8lRm9w>-mF&j|)!zDCAEx=1F+ydg~|`xQY*qW&ix93kbxs zRR}-*FlJzP(Zu?NSKvS`NJ9zw8OPBPX%R>vmoGM=Ot_NOvsk6+)yMnSa%6*``aX~a zPTe_d!N=#nPGSH5I^RGI+RsV^HRtauS3h53+lw&#CQd=i5Ky^X&*)3u-X;$X*<}Uh z6H@G5bzNnDmD2A^ZuJeSrG(;T1vfUY4Xu`x+~>qXn3~ZzWj;qTL}ffsN@Wo&vr3xO z<-Fsv&-TcpxHCIYmNvAZ$JWC(pBRo7XXexokBL5sff}S)Ht}Zb6&HKW_eMu>#q&q{ zQ(z}JUu$|NP}c^u?z@M{w0})VAOe!*3%i@KzBd_)-bL$>0Q+`}h~L5x1iW_(_Mi7@ zHr*b#nvi=t7__U!y1w6g>Yx%lyy$Q3S^hUzX1TAVfg9q~S=uUe#&`}toGfH$yYa-6 zq7#k$8s$&eDa`{%iUm-U0u15}NMj{i>5+SU^S!I?iY$w#xp*JO5s!B1R_)wTUi4jb~fZf-7H&3Q;PkqjHJ zcq&7)B3L~J|6DV|7&Quxt+P{vS@KS@d&5coA#8nxZnvi|N!iem8NgR10M=!)#-{pw zv{P)D~}UNZ5!CSRX_kw5Gm*OI3k^3~-*x0=w7#S$7XoK_q=8540_#g*bXrw6zV9_w^( z38Q{y9x4p8Wa7r`=U!^d8xa+NJr}nhk6Y5_3dDIY#V5YtuC5kVc1}qtL$zOzA&2-A z6El?ZJC}B5#dg@Gc^m*0Had6_fCW2vL}`>m2KWzv7+)H4ilqMyJ>mmPH>eR{$k+Rn zQF{#Mgi1tV(B_w4xfnSGZ2NV`$l+HP%teb58%t4R0s*grz=_*g(|npHE}y;O$a+ zv9MBbN}PHA(9?X`mcVoAUy;N$ktnzcmwit8eG9>y2+$BbMVJ>$PYEOalq_RQaH0&W zWzk5oHd_~NH8XtA_YPy2*I5v=p1BC~f&FqFM^e}9_*!ej^HGt-ZB31hRQ#-tf*xn~ zQPWl}{3!*NRp)X@bVPCy^f{Lbw z=vrF-R98z+7JetSv-MfYbhf3O6$da7^O*Ca3jVj=VnfLa)x?waYbLkNMd5PsG}d}L zuWO74Rx7%U%7$2~?|JE{&S_(P6+oHO7s_~W4jpXyQJ$Wp&*C)PO&cj8E+FrP{#O(S zQMexqY9Et5Wk)wM7|u%EiZDVwpNC56yy0aXY!DlZ4kfnMY->>2_eqj&^&V?Z$f!b3 z)h_OQtsrfQ)ZF4VR&!dmjTo~$9 zE9;)>ZaikmT7JQg8~J;4#g3+VHk3#y5B2ll8W!|BeA3B8^^Exc1PlrD_Ew686M&L{ z{MzxPIT#HDE`z8F1G7t|XX<)Dp9?S{-?StMgoe9|Tag-Uz&*>G&vjA8oi=Rv@r~7! zs-LTvSQ$*j2OjhF`{bg1^(^cNx zpL%rw(101Fp-9N9s-El#Avj|UuIrGKCwdG!mkU5jegqN(vHWM%wIkR3L#uBlwM$lr z1xd+3K!Tui1PELXQDFfyVik za4ripuC(d-pC&CUc&N5^+62XP4&=|`mHmqXKrWlb;no)P_xC@1_uY4Y?j0WMZ=mo? zx~i-D+o%-N1til)E3^z3Sq#JErfKqAE_+(&6$*!m>$tk-F*E=C2qXaF`OhH~v;nYW z^-5B^bcMKlf^_T%fNWk9Fb{A!grz~$C8XrVi5H zE~V({IS$9R2iiM2{(0xiFX#Nv2m}Je^E{>6)#8UyU_c3^G$tU`vvSf@r>qOPqc)wt z1|c_Ds-3nD@)b7DIcJQH8gem8A!H}ZXpI@FV+T+G?RfRih)<3XT0RS9*6|8~ zi^dfI>(_7iaQVcE-v=RZr~~G(JmV=`#{qNYy-O(uQ~fw`;>0)CtXcEh>l+$KI2_gp zA)0O52BlOnU8!Ehbj5hT8rC5h;X+o^(f|e^nLe1m_cLA9)6XZ)R?Hqbt!w0S2s;1o z4V2BPA=y|BCIlr20ulr;HK+_C{^yYgaCl!giW@&=C$N*%(7ulf`(&e5wfGKE5i~#u zpzAa7>n9#O+l!7H0M@QsAJBFEe?y^g(xDWLGEmn6rIO){74B`@#z3ln;Q8mD|8zJU z_73ddZ??C$Tj_M#;+*>>J&pq7mD;r+7fLZ*N%|lPj8{zePtquwrE`JgZ_4xoq3~S6 zfwos(McJGhl8e<~q9rGr2Q?YzYeWKI<98o}ljSIM1^GcB!_AXNGN_zgh3d&4fTaUK z7+2r;EVe#(Ml&#OsbEIw*TUh*^h_oLuCicxyDu%jx)*R=2YdJKeR$WdT>?NU3L%?v z-u!LR#j$s>_g<)>7fZNe_64U@&q8WekKeIW?;}C#(IB>e{Xy{$U-=Tuxr?zdDM#5B zZKM$+djJ*rom>+gdtN5q(p!cR=Gs*NTF&%xap*N1YdtaIIqFhfKZH!2RUxii@^P4X z8F+2`H*n>3Lzp^8;J|CAz0{a%fNy{2dm16+$*k?_1UA6Q@Cn=iSAU@VGs7^j^Y=TR z?d$8SLLp@H$LT6Y&!I3EM}79k>?0c^$Agqc@+Xv(Mu@^rF>GD)Wh}eze!NBIU_lZv z^4a92%a`HRt$R?Mix}DZB}Bw5L0IJkcsDjacnW3J1{N$;K1mUcIRH#Uzhfw!S+kzE4DC|P&4+cfuecUV8h(vkjjx~pa`pdH8bHUgkKH(ICH6M`20#eC zT>@|Z!9&eVj*jN>YYM&pfp1lNoNu-r*DADSpS~F+V47ZQ^TBOv*FOG8Yinx?#U8u| z$@ny+YCi>_H~+U%^9lg(mNWNWP#%!v^bH%#rs&@LCo*ZtQe;USWfq_j4VPVYHC+33 zw7$6?1)xh)Rz8Vi)qUT@^tqn^0C3^r@q6#WP$~<6ArNF>)I%;^^b%vL0jyx)(bQl% zai;Nenx;W`^w_f-pMGNh{{0;&~~4?zMT4Y?R<9Gbr=@?s|r2mzvV2+!{z zIvD75#g_kCMONJZsA$z|Fe?raErd_p`2^}e*@*3%e+owTLDK`Mty_w}yJi&#rl|*$ zmwxw*=sJ?h-wL>{7)=hwEE9O|nl-i2XuLI>vo${eR1-xoVA4OozWasEn>ROl@(^Lb zS9n2T_FX1_jSSu1PmDjEh^|35bue3HDdH_sp^$Cub6)^s`>Mvy#2Fc9=PX0aA_8DsX+|(yh$c3 z`Y5QU4JU>a`3Jr@9!PWlVXn@bv=Hzk z)srTD#PhgjS%J*1S9bpJsi&S?mr4!vK&thA6x;Pa6vDXC5;pI1#`{SC%n`5>97ezc zb7bVw-_`}1eS;+C{ypiV7C5A1$RVqRX$I2cfV_2dyZG6cSK`!>9;nF33_6IFG7O#? zRXdIu0P5;4MNiLhZO4usM@mZ)ZQ+n*tXuo|-Fx=z*$pY}eJDtL3WW@v-`Tm?9lLjj zm@PpNF5%#w2akFRdwwsrZ}<|nefMGHQiD*; zubAQ@7-Hz_KBH+I(`sNt!*ac`af`~?E3aN<$|wM)X&OVm=z>Ca?yr~G??lyeG-Oi- zQeDHHNhm%C04R@AzT_sBk z%D#jUV;^SB^LM9S@4tVa?>}_id!P3_&wd`~JWFxeYtOeuY6}EGe2xw_`ymJc{}TaW zIN_g~=ksXr6*|Cbj}-)!X2dY|U4yT2{to;1Kv48n2qMKp&^myBPeIUm9SEBCfgsad z2oev@Ex!2;g8W4tZLD0Q^8M%l;2Q{jBuL8Tla&OH^d!jV;JTL??uOza3j#Ev*NRTg zL@p4mqq^H>KxP4b1uU-v(BVl3#LZ@LpHM#;2uslUG@NJ=!vx@WmWR3WQYO4;w7}oIEDmS3q+JC5jf*Q&W-NpWfqc0z)b%w;3kLI7DbyU27cQ2yzAVb z9{}_eq850V84v~+&htFCiRd*o5)6QGQAIgwIYdJB?yUm zhLW?S)4-}~vhUPgXd<3>GedIA#r9ez814Z;fJLC~#IkrAL5LZIBbAs?#l*I(5q+Jx za451P6bBS^dSBx)%;7a+a(wJa1O&5M14ZShp2l6hi;DqVLM(o6NgdA1U))Z*##~N1 zq*r+qCbb9A%Znc2avri8l}xZ&U~zL36MUkiE(p~1c(LkWW%>6=HH~g&ZbUj@f}va< zzD>2cxMYAFisES07L>S+f@yz+B5*3UTskqKQSnO$wJ;J$ea_q9Chs4~CgVKx1cx~6 z+4mOpe3{iz=p*%mAmLRqJ^?ggAyF0~a^1rb3$@y`0XFY?5IB?-f2+3V8rT)CUoAtD zjFR+V%9*Zk%weMzVtA6twriKAU1DUb{(X1*fSnEE32(*HntUFgUPyD>Gl{xbIoBl5 z%iZd@7|A#*Q3*pX2#xjPB5B{o{Y(Y2xTzOOYf$rrX4~O*xq&eYrw$R2ygZ6K0NJJo${ZML65JG>LAHozN*c{-i zfH|E!&50Ba;834NATfnj1_`H4u|YxR8^q1TT(zSYmg_m?;dOG(l$~Gt10J_4HgjUG z2vBbyHLhH2G)Ce`KD8X0%{th#RKzj0C%(}m-Ne~3)S62R*Y*KbHuJ3c7eUR@mVLa9 zhK5l6@Ptu`f5nNfN=$!L2RECAonx{OB+Ly-=9W-HNhu;`43&1M-zJ?8t7{26iz$9% zo-p*u7-*c-^CqC-62G)GDN}&Z!s&DLLe2s?IC%jP18)a+rdWO!%Cfp_J5y%~rf1Sj z4QYHAF{F!alK%HS-V0OCZl2}eD47wiOYGgzJ;>{W;Hix%Sz7L*CGk0B@tO7s6`Z?c>4{dSz&W9l*H0g=}tn9G+GKC&Yu`bQ}qfQln8W}?+ z@w1rtzzM#q&77UG2rR)^7D84ubIxr7=j){iEUa5he!`cxbDgqnh*V(=msVb+__O2m zW-dYmyz%W^%uUAH5LlWF$%IMK^+(~-c?YXmi9#MQ-@hYT?-FvhIvkBSRuc5*yeGFl z{|NyCBp6Pm5Gz`^vaF7-#CqN+9e#~UfR+0(`n3{a_^W-w@ru{7mTy9QVPhYMPRQK2 zqtdeD3_G0pVYb4*IQwCl!d4=2k{3%r&5_8>uz?w+J;i-en0}hVn#dFAsP`M60IY z4`lgce)x>aBsXNY?jjKAqwilmX|U+omvqTzCtgkB5(abD7?V&eh=q5!tvHU4V-Jc9 zS#k-DIk@A+5`yQd_~aX`y(f{)0@ypcz1VMMm$bp!S|Or}yOFXep&N~^zot?c&tYR? zf`C<*zNpnZ>|7WdheA#e@|1k}Uhip{^VdIUBv-Qrgt_GV$0)}{hWUd6E$ku;<0DtS z?~m?sj&1l>tzZDb&cUUQ!!U}KzcfrBt$eo{3)|H_NGksdQd8ruY)sE*zHaAAIB+eu zA$OESdsO2*EO+{}Ig|Lgn+v=$2k|=!l6Ihz%64;cDDi!I(Z^l*=#H}!oQhy|9~xDA zLWpDbiq5}@THEawjGuQv^{xI%Ix+OcD)2SHn=08?SnGUU_F*X=Ia$Osb*Q z7U>Vle|hj6!hImS%Ulq+)GK<*T>Qdk@iS+{FBFS4hiLumoXxj&bJ&80bx9M#m|$-! z`5temN{wzaI59=HK;Gv?-QOm@Q&P-MN=gMzwUEirAwq=D;U=-?W1>3wqGkdQLu|Z; z5^KB9GVY24#)h--bN-Qcf>NA&oXI-sYylqQfEMqW=h^SlG~6WC_#mn|A-5zgt&q&2 zs8xZH*2f84D!q9y1n@o;1rip%~MDYz&NTY@w+nT3Kb(B#FS;|Fg8O7Lmx zl(X2uhkv+l*heax+DUd$l1$4ot6c@s=W!!_nDl<3t%jnogh~-5awbrgEXMoj%~Bz` zCH(W}to!90owDy^Kk41`lQAqOrH^cG36Bvar|_}ErXi$)7_6>UnvA zMR`2Kd)NT^@|2Ry0f+itCI^BQsDt``E@b7#eebRTX)Svj_ zRz{rPws0a$!eInS6H6#CkD3u}rbE$_$s#TDKbBTN{^4?#k&#T(%S5WH1aC(^f8pZ` zwFI78hMHXMJ%x|^l=#X@r6&vFQM8CcV;vEsZP=2-G0a|k!Ix@^)#-eDj5b2ffJA591Z$>}Z~qMlXaC0vH%z;;mI%aqY*zv;&0;d!T-AOX@DboEvT+)1f3^X_!9SJhlnr5)F zd&vnxqZphQrcwKYB$F`Tw2uegYO&nN{TudKq2BZF!LA#YbjrmJ)%;JVI+xGfJH+-5 ztp`|ynEd_D;pYoj6rZ{~ps$Rg6nhC<_Tn)5#t`nu`fVw;VH82e~P-791z07W^~o;xXSAJI4|wk8R6Re9L$8jb6>z*y53tHh-Ybg#7fKb?K(7oc!k~Rz18m2A9&ebr)Z^d0-eU8mpCoG zij_eYo+^wVz0mvGNWwB?x&cVOd6nhbS^tQV{kSpHlN9`b;<%U1fS1#As!mQ(X_Xn; z+s<=*M5-T)Sy>Xu+4dO6o3_pAQInNK&khr({RlXv%^^uvhOjt7a5z=7Ua_8)r1|>X z4;C>DvEx;mi`nk2d9KcDt9Ldie>%fx-R=^0hqo=t-%RVApUj{??BRf8lbg_q zsjBj!Is_?y_Ns8MFB;lWFp-z}dOpup;I2RY$8m4Li#gdHy3dN^+|r&tK*I^ApeR)0 zO8a9}uV*xP@1>y4Dl?Lct2#|NxSGKr4rFivX=(nE-5VuuzMZUb5yFu$93;hPL&7Si zHU3kX_f9^vp<#}CNnasQyit#^cpcGl>E5E{nSEPh{tU~%MU8jzUyYYlvH!a-D~>4y zsk%(SZ4XHX68DO+J-oH@1mkFaL4ol~8`u>0s<*H?d0lNoarZeSoVGadL*vT!ZC~;N zs@9qk~6&Zojs*#C7#& zpSSX3BdD-s9a-d=9;>}q>VK(wTu9D4UeOwO z+41kfDv+`j=U&8wc8D0=u^@?HfHsj+JbzSo|J{#{yV)YzcNe__YbeVamj11~tiF96 z|NIJJ!TJ<3?O`_3M^QHxg~8oJL5HySqOy`DeqLbyAdcI8dGk=((QEU{Szm(nuQKys+G^zSV1QW1;iAht;S3&MqG~k|l6hp*a|i zujim5RkLL;g>!+}hey(nTi{J3E)<*J{k7Og=ljd)Wo0fNQV)+f%YIHw>0<4}OZaXH z>lO=($E@I=>-nP(SN6d9s9HY=iwN z>v<(nCd z6R)os?-pshK~HjNaU6AGi{Am*2HDHCoD}}L)iPp&t2ropaPST2c}aBI2oh8@^2bX5 zN2jXE8M%TTEB!z(m$mQv&Ifbb6%5%4!8k-UK9pY2cif>j`*jE+W?UUvIP~xD5wTJh z<~IB)D(r~-`}^<}@)EYVFEp8(9dJz`Im-u>fU>g}0qp<3U9j<6Do zf;uJmEV9;3&1V_rVv1K^nEy(_*yQA#$`Fjjl zw6LMj?xoE1c#ZLrs`FQD{zxc&UkE(3)9}!!>&}TFT?sh$+(SY)_ESJ;!Qb|n$H*P4yf3{OS5IH$BpX8$?C6V! zO5C%qmnM#1xi%$tr}H8UB%XhjyegvJ_eV@ShLpVpCO8LDL!9cbT`@F<2vvHV0F_4enlF z{X@+6nU~8C6uJd3dJi(bw57`b^$vx@3VN4Tz#i!#mw`9)AyHy)>(1@)OU;*vLBlG} z2N{n4gwRh$)y=CMhbRqmKe*QLq{lN3wAncgt)uKYVwWaND9$aIK&yMm{^^ zcp}-G!n#_iAobRzfh5%7*8s0xW(TLZ$U;jPyqZ;i6ksLp|Gh^B*Yu`{Pe$h3s+J)f z?Q_snr@VMy9(7+IKj66E-0Y5=T+?MZXHopDJaG`)F6r=ZsZzww4{v(^FUf%20@V-3 z21B^gN6G(y28kwA8UlHeDyx&qCH60m&>7ZfU63o14k4)elY;6HcQO!_+(}o3cUVHD z%LK+1xFTeO6B(G1`&J3O`WaGFAx&)X;#+bTa?}`CU@W2ZpqNDi1#^1fv2)c1vFjcK zHn)o`V#`YbkSW7RSwf4%J-+Mno`1_cS<$8X;*h=PT#Q9$c1Ai}1d0@oyiHCon-~MC z&Xvo=!Tvtr_B@73{M20z)@13cVEiU=IIw-h?T&xLxE(enJ7Hd5;`!tHVPgf($q@~g zY6g|-jPG(lk&-;SrZkC^uM@p#0M{EsHK?2Us25n--GVkR9O{kvxIPsdM`beWLaDqP z`v~ra@ij#O3HM>~)gNkW@!5qgiN7h2m-ZA4ANffEw3%IoNAEc)3tpc0X;G8*36Z&s zu6M6DCUs|D;e%7Az1&6d2_;+65>fP=RvDXkPjo}3nK;va@Fu#UFh8bP$k9FXLVcpV z51z%nSx*R$q4C<8ji}ZLvxBZH6fPnjtqARzucyweJ(w(#k2q}RQWS4PItq1 z*YMewy*f7r?k~ep3Sslsx~RdUOSY1)ayLJkFq!WA$*T2za$c(n=U6JegI|uevpY+` z&zDB&@LF6+EJ%TAQgehx zr}*!DBMNO5>}QZH{3f*ClN`{FpN8KvkJ@u}x7sz!r={xrM1Mf4U=8&85{{CvMsuEUe&hG*lZLz#c6uRtad+y4*8`x zj;W@tYC44ilkNOUqoB3b=gbbW@0s@)ldC~Qmi@bpOOq*+c>%_w#vOv2v8RmfEIs}R zM5H$brC%I*LjDUIcFI;p|1!uy)5fJ&{eqghrD>Swr}{JAb*(jYuj0#Ap=e~q#;R&} zJ~}Pu;E_3(Z3rKW2BA&!T@O&4rE(nWg*5flT(3(HcO8U@`{n@g(5@qk5H@GBQT46a z$#NfhYMD$5WArQFG4f&!4N?GcZ@X0fK)q%##rLyqiNpJqUq-16Ld)m91);0p>5E8~ zd9Y`o=Wp3>D)Wm4d`RJdTiw+o5ONo((CEE4;&RYA{e z#S(Gh=Q9w{hG$UjPY#3Bk1vK%8{8|H)l(It>CDK>2ODi+?-#x>@(NUCQdpF84K?7v zqe9^Aou+%6tGP&&FcsjbUaKT^F!W|*{Iqbs&4M0Mo)Q%Z^nB%#y zjawnuq+IAY5KaD+Z%gGv&i=wmk)%Du}o5YP0Wuc112Lao-_5gvG#@ zaFKzzOW%^&j5>j=$kb$0(J4$gI8X+HAMI(7svAzI`UINP8hT z|DB7f%DX2oY86}+jbsH6fobr21`m7VsD-1m5|bN^W>2CzM%MI;+48-`JuLAOO?vfY zr!&;_PzK5cxK12yR84oNk9dUN_`#B(i}A+@ z3x8Eaz*(SyFg3!H8}jD2c7{ye2kJ~Sg1wTf9HP<8ehF z8daS)8I-We7NF^7zK##uSOKzURduI*;Pe|#N;2gcJ3|%Wr1$Ao=%gaaY`n8BiH3$u zkNA}Qy7%jogJsg4(|I1;P(tqZ3&}w&)%~NqIMT@*kZE7WJy+DXWqr$-@mB5Esm{?O z?*hGiY9>>K`umf0_t`9)py1uTL6Zjgjl&WvF#Q}_LB+b;p@PHDhn(M`UA)6+Afa{% zh__WShz%QVKtPUe^;PqgL(|tsJ{ciG!U6E>f6$#Ub7EM#W47C6G@21vBQ6fSa z5k1}q-d&_BB|VksuyC@^%o{pYM+T}Z@Vorv~2tENWG6S#w`Xe!}bV6 z(dv*#dRL z(Z3Gn*o3gm7n)>r^%4?j_x2>)ltgt|_=WL)s3>N&0!QKPh)qWNBf(uCuY2-L3^Ys} zvKyzvy|<^TupH<~&qN@EpG8&hywOwTxDCU`^wI8Z!KHogCi_S>LI%21JE|^5Du^E> zR}MxAozc{K30ss3_b{IPl$2vra{&|LBkkiU>P~eC&o{9HeEd@V*JWH9D<#k18 zr@iuSAX+GH*9mUFQ2kI$tpI-g1~*RN$Bxcl*IS`*4PJGVg2bu7s*F@|@2ONG7b%d=S>g+$+|f z?X?$BYodh})a##KQEwkVB~nZwN9kg#vZV2_Vl1JdJ?Noq+1NGy6RXCK@fansp~@77 z>47s)xZC*LoyfX|0sYk88GAx|Eq!PE*THskp-(g3sjd84T;Mn@4ue`*2 zAeG0nYU9?8_bb7olYvY^85hsgt58Wj$nY{$W!+(9{PW(c|-)X{w_jQlVjtoa8GHUdC9*{)BPx)|A&R1 zjB2zRRC*9(TsRKbUgvCVNB!Bp|KIzZQt^+n$nM<915a_2GApQs360iD^Xfn`%y2t- zRhrFCxUsbpr>NfKh>|s=|10PcU2OKp;d#R=M(bgjb|lZrJ{RORwW@xzDMBBAvAz@x zyx(nn05AFmS#V>k4;+|;vr#_NE?z!=vu6GWW#!Ui=HAEJ%sK@#GT>A(2lET%Cysjw zjlPTDrfAjk>|J>Q9e--H34~4dZ&3W2?t|Oq)$5dbY7bEDVA{%9C2idiYOBUsn@lwp zc#$yrvi(3s|7raHinY?}gISkiiVS8lId=$I@mL+Xov}GTZw3#HJeLN!+b_|H4b5&K za($|Ww@j-6}4JP-BqJ&M5O;Aoz_Y+CWo{U>@6{H3HBU~Q;)MU zJCG@RaTUzfc!T-=c$s;p(+NVN#qs*qb#zny7?hb;g~W{dFW2{LNkXuseUMXFg&4uw zh?VoSvhmzkoF%=o#{{ECR0Qc_$oPyl@A7r^GTL?dR(94N!r7_NRv`rOdRCZ|-itUV z#D?(6Wns2*50Qsu8AE!TiOVAM&=`8lT?i^(P=+rstm6_l;Vd#m5M6#dw5ww>DosR!_)VfUzC3Lq{ z;@3S5PkJ2y2Oj&+S`X@B*`-s66C@ihVk9Ij%bl>ig=Ut(cKU+!RD0Q-CTJlgE;&x2?QEi zY~cM@uY(uc>_?6ce=5Nc)2VKSJ}s!DY?RB2qt_{pYfZ4_6iG2D2V-$@vjZ+mgP6f* z&FFZuK)!uRmIqzWF!0Ble}I{CJd3#T^A+fEwrr7H2RHN7+wV>W0TyM3b{lAR4+8x0 zpO*pON|M90O62)FjmalHa|42YZt@-lr=wNaAexh4=RWUFi}lUE;3!4tD6o4XSCc%J zYJ5(o_LK60=zCnu^v_Jtw_3xboLv6{Hig@LG!xb3G0%QxMju|*YrB{}Lg$#+<3niM z`-;tL8_mWZ3pDwYajK_#X;s9`&ZjmkNe;dIY~l(_J6$ny-Q)S=<6lJLg`oDp5i9yu zWc>EdS{mfvN*AqRC&1ZPq2*4CpI^c;27>)9M`yiifq>GEKE@iLz(ri$HA{hk*iA}s za~D|8)(f#?eO~G)6??y&5rYj1#%EkOzZuA^xXVALbGouk1_?KnQpp*nm*;*oI2gq< z*VC$|YT|ws_$(*0G&NF<6oyloT(>j)ww-expc~@2hnew(S;?2;sYXMiEx84L{ao}6 zIkp}+bQ7LvM6Jq2rjj9fNhIwzU?*(A;N*N5q9@> zgK}af9&okSG)UH!4~|gh1tnb17v1b|nqf0(T$$vxOvp1_*LPB+p8R7SwpGmPunfUimp;G=&jIqg+ZvCdxj zBVbIkM_WcM$W}^cd@*IG$cJxXt|R9uzGdOQ5+(>z#yR`;&DK1ZF5vFMf2MgQ7hun; z-%u34I6lW1>WiEP_e70Au-P&b6d&E`2#(pPwOrHxu$ERLe#;{sC1a2_$^V1d9u3wQ3Y99Rhs&)Ih--34&Xam|V zOwqW2wk8S1_J_xjaDMdK;GQbv;w>gw&5WygcX6ZL?fG{q(atVCIku;Zd{c)sowcIv ze*Sofo!b5faSKMXbUCTo1^)ZG4qx~G0}do+5M79uoPy`jUM%_@A5D2lXYUv(TjH)s z%cpiz>n%fI-gIFUTs1HPYpaDDnK6#zjl}_u87{`G3>2U?{sU_qkr?|(wW;SvkCC4B zer|K;$fP$c-g*%e4lfQA_?-iu^|V#fQseju+o4N0?rgpBMGlKV_8i{XGf*6 zm0(8PX&gUPCBD6Ur1fYUVk^>i`#VMX1U411$voilC=tV)!f!rhzp9T|7Cy~2d|E=V zl6OnDK}^s0%Zjxltrl%)LQ(6(L*r|EOl@Nl{8C(>)8%25gLTqF85T19nuCxNR3T+o zbWhr{ZfR6_)rPj9l-OIjGg3zgx~rI*-x|bmNIERnbDgq2d>=fXBhrar4WFtgB5voX z;}A6wlRh^r{BN;dXqj|z8M~6m>B)EBO6Z{ubvO2MkZ#t zWcT%wObdqwLuWztaW@cbu}BBM?d1WUzKelrI_x)0Z3(74-emw=jjJud-xK{HG;h$Yxc0E>ZBkV8PYu zS>pN4GH`8D4p2__Tu~6d+pFUwFv_LTyx*YdfZ5;TQi#fX%--;u9KjLt?nKF|=iakF zb87t&s5u}2ykGzR2rR_mmh9rH^nl`ZIl)v>VoOHovKPP0e{YkdYZGyu^6}4lWvQ5^ z)X*z3$cs*2PxuZp9sm4CSUOz@nz}))bDiZsmf+VA8S3k!Eunwf@vmcW)kS+F>1)I+ z(JGY0UH656S$ex_XURJL)?ZZT0umxy9h~L&Nw}JTx7N84L6ZIp#=xin?<2p+A|*Kb z<(DP;X>t3Q{JWuw=q&BsR8n67RdH<+rL z)Pc#sa#qqF+@`3QWR9Sdek@O&@ME9deBkl_p0kLWL`}KQ`t4QHV^J6*Lq(}B;W0~m z{7k7ht7lhE-DLN3Jh*+tUZbpzwC)pvWK#!*cARq;g3v=%jMJSqYNZloiHr2_9s2O- zEyCsnx|2LhEyRN&WynLcswn77*Ry$+{BO^6y+y0rwp{FFCO1L%Mq-ivyTA6OiO5kj zqs{bqt8tTDZ05|?ra|*10habq%o3>nB@UePVwuECUta=_%QGprq^afU>4yZPXFpDY z+Y$J6eDJ~w4Bx7T?A4TiPZtaxAMM8{zkM#3_MZD2JF$T2$x4`|3cwvu6-cIO`v!8~ zIhv-IZhtmlihnR!{<%a10tFWZ2HQ;i+kb&=pY1U(WvNMK;ePYEZYCQfHsv>nj*1m9`$hxf8d1ECocRj#8t$*|J;HLNckwKvTwH>^A z)zq8ic%JvCTB_XLiuNspI%llJE;riN|82Y%-uU{P4jP)aCO_vF`G>#l*U?sE%?P=P zbl+bSK=_0_qcHz1Z@@UdKPI8KGG{wC#3ss3UWwM|IC-)gi)Kq2+IFnPB09lc6ulQR zP8~4l(-Dt~JA@z~Le~`F<*N^)`}XT%W3|;Y4Hmu2_SSo37F2AUCkRnTf0gShig4f+ z)7^q&9Nzp@W+zCfHKQtW&B7c(DoYePpH-yqWOYq(m%@0WN1^f{g#pNz7&6{7JDvt0s4$Vkv`B zxK()aDwMT`f%8$A!h*42Oc?^>d#ol$q-q(CRJB)R@5{gH`I25*vn};6$Oi+SZm+7X z9ifVI;|QNZ88;+OMetbTHo_h#$3`PtFnZ$WJTMceerRkx@)s@>)jk|6Zh_eS(5{*d zA_&1n>=SOttzn9GGc!sUdU@p@uKLu6Sl*gO8;x3-=m`y-b8D1!%9&p^Kv=Z^HMBM1 z*%ipNBk3yU@(7Pn$neY)I?XYCDI@5B5*uxTEB!A`xv(-a1m^tKrY>v4YZ?nOnJI$n zFlf0>iJ3ePFD+7~s?CJ#gSHj4ZWTKqbT>h#>`mUOF19M(QYNK|W4VWWiU7RfWwrfgIL~bY$tpiD~V0 zhib;We76lG#Y2~pz)Y^~#mC*v&GXB>#ZCHx;qcA3pZBkuYWcbUe^fKyPr_6$8OK(s2z=Z+cfQ7;@OVqjW-cf?P_P;n8*C3_PT1)^5SVUtoRs3v(36DnFKMO0>E{NfGXVgU9S3 zIBPb<#D~rq?NJm-*B+&c>nx;vC3X%}W`1FVZ7@g1TCn!boAk>RUz-o%Iy?3{df2&^ zRt1geIgD?=Y%}L*oxQ68W05w0?!{8C?z=vCOw;BXI>cuPWrL)rz%N~C)ovZ4f!SX~ zRKZR-JMfg~5sjI$|8zi#jm%v`mxM87b2K3DhU7d<`)=8at_3T|hp$P22KIqX)>CGp`C%kAJFCjR`!WguN<&LD2o zd*Ax?rB3Yb<96K0*Mx-;C5dYuxoUrbLPw-~&7zb!g1N4zpE^KJbvdVF@E_qN$GWyg zA)zZ1{7?NNv36?36~zeuyBfmp|3mnfP824oLY*qv>|oi9*(w@5m>$YFsrtYBUmq70 z2_(Ae3xtIF+$VWKe z^fA!P_X=p|6W2gvEf0{McBrxyk##PJN;%D4^is+{;F@mnf6y>K(FRG_LjBWc31^gW zb*X-BI|vSXFqpkar#;{nFTMdqoB^aDmeGE;Vm-MD1r0kvk53(4J8+l&K>X1OBy~h! z-+s0j;Cp3bPEgOwua?%1bw|oOiMd!_ZI7rz#qvV)lvFG3)T`|L7=BDDWGks9^OSrs zE@rgR8^^MD8MyUb!YJY^M|@>af?|#<@1nL?l}O5eD07H?L}N>4vL4bh24^Ys^?=*{ zY8iC~3mz&qK_wcmCSjzeN#H*2~X12|ZmfKCH*!>?V1<9cGp6hCbc!*)0xQ#JpiY(1Rv~ zt3%6#OMfh*#<%@Acir?MbVUeyvgP-*@g}i5T^hiU{I0Lb7NPl3=}j+gca5>p)of@2 zcO)9fjW+6pAaP&rw`8y$I;rar2VhV;@Q_7QNkB_PTiUJcQ2QCjMyRtalS zXdY2L{})$=YlBnYAoDo5II6~3hU|yOrj-Q31C3uek>j~yNy7a;nJ(7!kG}vY#3yMr z-mw(*kCF&vw@l&GAEXp>CiAu(HM893x>UwM?jkStdURdOA@)g$>l1H3UcW9_`{KOhsPm7MFmU7Kg%~EGP zB7_W%^?wibqbg;6YmG&x&&ofU3>HQYQGm*~2yUoJ6h_rG5Usc)-9KX_nnH^dQ+v@N z%dPVF6mLl6U#sDF?*}q8hbHMCnGTs}T%zLmCp;?Yi{O^iXp24}6rRL|!#7BI!r5M+ zP}_UQ^3N7WK|U#mTLw!%!5yl`u_7f=an5z1tMi(8RpLkRPz)-#_AKgzhDP||O;~?! zaQh%$AAjs@v2y`)vID1%FeDD1O;6_hyt)lal{Z<24I<}BE6dU27`_4^dc)pxT3)@e z1)iJWff10;LR6ySE;2bo=JkT^EM2Qag1DHs+{*c)&|PO9`9e`DAs7{^iIrAp5rj8s zil`<;G(OAC``nGlbU+HG3KW{5Qf9p=I@OnjNplB~cZzl#|Dx_;yBvs{v(7x}38Shf z??5ii=;^0x{^-^#Gx3`HL+w@%I~)Tl3a_nJR@gwezk+`1>?eZf{>%RPg%U6<2xtGD zHZdE|lP1I_-kbG5jTD`s`4nz2TEu&KGgWt>>g{SG{l<2tTpY&G1ZbmlC42 z=pv_V%(^wD^`YId_~{v29-SNh2Y3Kt^cP{)dZq&53%mRG9PrYjKdwFAYu<$U_DTGd z{15T=zhgiP*_&|X;PYW=9DMum_>}06d2)q(^2(H;0DHQpOB0cd)!-nI#IiRh1r9ya zp)w+2EaAubd18R{=dxt7$A~CF%hKiFJj#F;GMXuKj->xhuE;|X5*>SBV>q?{*~&~% z=j&QaPmcGyvd>bIZ1-g+;RxJ*_kbuH3G>u-)Jt^7+ zNKxlSMKjLGs=>^G;l$rlWcp~6_;W!nsi9cbEC5LYEI?ek6|%Ro8QFb>|T>py!% zffihGhLTeb_f^>6IfCJH$e~_h$y`*VarnjaF4IszCMryH zyuiPi%ulb2W6v{by|gxSCVixvVLLeeo{{;7>tOWzBw-tuU8ksq&1x7fh|}*nnZNCB z^55wvD80f~*^d52LouMzPS+RSBx(-swhW_354bBbG_U~(T?U~lwBrANdg}kNld#V` zm5cx1+?7b?=sxq1|1}-pD>6JM#y;iJbU#W&K<0n_3HWOGUu(c_K~1g+mGpN5I;r;X zmGNJ~;ob#&MTK?k@1)n=G^^WzWOpd}I;j_(JU}u=R;D}_OIAfL_~8b(3|zWYzU7?U z7ram;Y=hr#@-%W2+Kf6`a(n-yBriITkof#roQzEww$hBHhV|we%_T5zCrZCPb=j(A zZ(PRR8*)=2@*n>_-yoS;!fVng5&kh@me8{9@^24Cs);8YEM+8Lb0%N3*Hiv25$QH$LZ&xm1g>P^_Qufr$uYPm zUAu{o9_<0w0zlkvlzlB2dIOfgo+Dnsy97QZQd{r_1U_rElz$?ee3R3(hK~bg$$iOl zc_X);Zi3rV8O-^UX6ux4#w_?Cti4%iGWHW(2n*iyuBNlVbxnETUCwF(+l~w|hu%x) z2@1q+636MU;A3?xIE(BjVl17_EyKu8bj666RU!1e1?@LTmvke?D*p~Q?iAceMcw(p zsR!%2pPq&pb{C?QAKQ1(YOfngmUslY?W`5bqDW~r_>iv&BUIVX)BIWKXwsZj@rHzrDYBQ98yHDgD65;9o11jDuyl}7i9f30i+YtuNZVI;^SFOe%yHlwXzZZt69t(IG;kF#q z9V;%4YknV!=(P8m%A?N`78b7yBwHAXeLI&fGqu|&57tQX7U+?N!ygMDgX3;TH&W8)8z9e~JfHk$6BH9_|D78L=Bg=J*=B!({a#Ybx&nuc=4ce(h^Q*;d&L z>w(InGmT@{#A7!L^>03@S|zN}8U?~9q@KJN-gIj`F3I-+7TPc5Rfi4agv zZe;grTsTY~o|i4Y$%5PZAR95IxZNdD3dWZjcRTInv>^VH#{yZJN6xq1PC=Ya)bf(C zv~u-^Bat;ofpj4UN>N?C;Cm_tJ}&BX$ZETR(&_JqoF_{GKDNl~%gV-|;kKf;FKrz^ z7rCujFhTBZ0U25E^Sgn!2{Xp!+r8!1BJ_gn7uv(B-i1f99Vw>-cf&$*42E^qMjgqS z&VwZ?Kf<|JZAj6hwU33Y)eV0v(tl;^*qWc|F+sS8-~+!VHi^NjWp#y)#W_}?qZc2H zd|F!=yTB8Sb!rHHYS%e!4ddgEx;j4NWV)0tM_t*A@_kznE_Xxb7jPen;va}@9-F^x zuylW{hnoXv4>0wN_0+HHsddp25i!3Md}CPf5Y5>a=vU%eur4_Yz=Rz;^)yav(8PMT zRS2{98kibhNVB?S_1iVg%WPvAczYr4?ZEF~y*!Tj#yCa|+~*PCB4HV}ISKBI*D@(l zU>;~@vJNE5`;Q)!mcu$xiarK)davx}hHWNQAB9SiPF@q%K%aiL3MiqQe0El}#Xr=5 zPQ9L3fREW&0yXwSV5k;+2UpArSl(}bkAPo+b1d(Q*=F!Q?Ip|mEpr0?%RGE*eFT1{ zkTp~`{~cJ^4{qY4roRGz@mlg{Tp8!3{;It3bb)$c{2mM)CZ6m3b}uCTM%VU11_RI^ z27@&@;u>*jZW0Dvh%{o|)!X3l=Za;@*r~AN-yuxj;@Z$&`7w zbwPXd8lG8`fa|=2ya>)LG#0NYLWWQM0!rh#ZS*Q&qAYdJz}+;9bxQd60q|zh zn}H8qd=LKoX#qW5bAw*@be|}`UtNY91L^uPnkCayzJk#-_-r>*`YK<2d%XN=eGemX3doYm}_^r!7EFqy(_0>=r8G# z#F*Xhen#l{b%x7nHH{mj*{C;zOm0;o=1_%jhu~>+_oxezFw47sW&1} zTzR2d;7>W@74ou_Y2bJ8bmJ_jdMvYnzx3fZSn4^-q=fgq1A(hUEXsOgJdn;DWKd3b zd850aqjm%LwrQ~8YBz*2kFt%`D}NNB zI>?I;_`VLP%}6ii>EB;~faN8{C;YNQ8=Gsy(BI8KRdk!-LG84OuO-I+Quw|>YI*Y}?O*!1kxm=>hcVP<8#q%@+vZ=cO^miTQ$ z!NLVHJ;Fw1E>@j`62{-!B%Z03jp2 z1m!;4w!B-Z3K2uL$W?FESZZ*aOi5-E>7yL&ZNS8`U@D!sXFr1&&8!FC-=>zkD002F0us*MHAjWm}bwX1Y=f zu@yD(!*L2@@t>83&BxnRQjT~_451nooPrX%IBz1l?=MCulnc@55 ztN<#oFKms1;z=jEc052`wd&fTzN2>OCR|;mc~kXMBK5i=abl8F>ASbHGhmNH9FoE~ zchsK3XwEWiKP`>^bVtLH1KkX722wvx+?jz$|-JJ#Iv2HYtpg2MTJZaG!l z1D28A4B&rd`aH;;!eEuWv^{mxs%v3D+nDAiLznig9;1g@pIU7s1ROgD$Na7VYabs` z>;cT|&>9q=0R0SiXgj%m$IF)k83s!SyZ!iSH8;&~KCvdbS8JQ2is_yS@Po0k~maet@Tehi=Ulw~=OD&$Mh$L~0Y ze<%uJ#_Pub)lhnK($MgnIs)9{3r|!Lg|lgbDAeCsD?A7dl>XswM?&biSmhTt`?@Y- z139&{evra^1irO_oNTN8&EVnvB~Zs$3(>nV-#EZQ-e!HzPH(OMKAiJ?t|eR}Tb)~I z7w-6d)oO$;eu|DTWJ;TPmERs#yjz93bJvl5h{8tn1x?IZES;w6nHg5k zjE7AJxR~Euu9N>l+bN{uU?F%p@CPB_^nP~E|Kt~yTIr;QkhL>A%`4l_u=aRU9`OHl zcIE$2fB*hHGiJyh*|U@)l_irDVtiU95fvg!DN049D9em3RH9WyOj1ai3fURElBJC- znTfJwnX%58?c6i^eDA$K-pBm|X6BsNd7amJEzjq3rkB2a7&wqNxV?3T1_bIBNc`;u z6%|l@_?={SdScV0y!*8<`S0~vSr5z4OVq@!!$h@PaP}5UiZ>F^(TU%uo`S5O>bmK2 z(|EtV&z6=ptahJqw6(dnoJ+q_~)vE+Jf81Vsw<%!oy3~FgLV)CcY7Pwn ztDzye1LXqdkti(nw=-?csi9XrW+CE82b%o;OFNuJ4w?VJk31z7HfR-ZGFf^WyB^*K zyT5QN#OU>;>>dYNm7viT;qi8Hy!LM!I}5kN?QU8{;Wk~h4n?(9a(IB+>P$y9_K$vd zQ*UN}ZlNqQxe%P573L)CmzYG6r_Lk@!>?)45?HQY+cvkIoLy!_s zHb?yS&KwkLT!st(?F{U#IBd|EosleQEM~l>(pc{k|B8F;dIQPz4;W#5+mAMN+cFhk z6A6}_UW5eMwFp7!Djj1eNZ#ZU#DZ{vTs;hNx0rF&)IwAIiybHL+e}FGFiK6DpCgQwm$&J!cMv~I{Ms<)bb(X@zzeDe5tF+ce; z;`I=Ys9C^L2tcX;IcnUUpvTS;|=UF9ZIO`QWs7;>~Rvd!~f$Qv0;TK@!1{~0X< z&!VIA$&)l|Q8%4u&iZ@q?A`NcPaP%8``7UgEvEfC&lO}XIu;}#V_L{aa$FH8?g=^K zH!oLgmL&Dyo)(RCyxfud*yh}%9yRvdgdH{3N}D-qo{^x3yps&-ul-v(lMW!W0}{Ju zukY-r@ls!}Dp@ol+Nxt6H^ylaFq* zTa}44YmV?@A=63dX8DNA)pdxqXbc_0s+P()F2m;e|VS zbKIeVZSp&$Yk%guqcR`5;j|L=B*+Sg{1kR&RRN0H8x?1bXB|6g_DMza_j>fcS0IU% zzI;|Ch-|E9uy@+-AHxk(_jHLs{@i)F5oG!E$hKobfevU3KP*ALiog@7vtAJb^|umQ z`_uy9bID|Lfqb#0z$#>_6+G5W=hI49HNvm}bM8MMfa~=(SXIIX+vJisU|KZ6_jIkC zAbRwd0loL}U#=A#9TE^*wf7tvB6gb|b2;9z&K|%y(%=~2XVV0Hg^M?<(I%%jEmvhG)BmGWMmf^J#?wiGu zdp~Xs8l3>Q-`Ziymgck+z(^|hh-bvxU@-~uy8x~b7yB)fEMeP50}G(}SrT1m>gwYp zVCZ&X7>r|`YfQO?#p)Q^r0sT{6)NqIf@8gK4G9UAi3teqh`N1@TPn^h=?NsW{k8Wk zHk$dPm*Il9$~i{Z=fwJ@-?uB~lLVu4T5HQ7=rG|CxdPo68!s4IEzE#la}>Zr`S^@^VT0<^uB#*VcZ!OtOk=6~e(pI&+G$pa&>{iQ;%aZERF|=uXhss?IERw6Dcr(L6rdZZg zy?IN=f~3lSzRsvdDa1Y_toATMGLTr2om+mTS3MKIKBwB_z*|&U65-g)JYa0k0-k|l z0;^-AD$F;uJk}3R_1xDwzEhJnV{RPI{pLsE0z5!hjxyXGfIt$Z1ZjYk9Q-QRn+ouuKGNh zZg}}=saml7B>L;73F^azTT|CtQ>QX?c!Q$sD�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 Giuy0un&Zj< diff --git a/src/main/webapp/upload/images/deskIcon/0000000020.png b/src/main/webapp/upload/images/deskIcon/0000000020.png deleted file mode 100644 index c215e98f6dc94866320acfb3177ed81413880380..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19375 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

                      6}Ipz_CdaG%s3 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 diff --git a/src/main/webapp/upload/images/deskIcon/0000000024.png b/src/main/webapp/upload/images/deskIcon/0000000024.png deleted file mode 100644 index 93da4ba0c2005ec3dd946a6d9db1a820b583af9b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20529 zcmV)&K#aeMP)Px#1ZP1_K>z@;j|==^1poj5AY({UO#lFTCIA3{ga82g0001h=l}q9FaQARU;qF* zm;eA5aGbhPJOBVsuSrBfRCr$PeFt=u)!OyYyY$|xiiiap3J4Yy6|oC8?1~)~1ym5} zz1IK%LP-LIByfty$0-&}##^09oO-nmzGQ3C{D0;W{O|pvwab2JtKWWPmAa$dn%3D8->EUSwyTY; zk5ote!&MR8rYgo&trgkC)~4eB-nF@5|Knz*-X!SbYcv?X?Dhs**4 zYg4yi&*Sw_@J=)Af4Vl}9idY zZv5+XWBrGvde~~W8(Xu%Q1=$~Vk6r(%0K&J6C8fJ4)%7gg~SduuQ*UGV0dF)q8snODfPCkPTNt{>J3|U zcjLH_whamncWH=I&)3J1XX_&UjV9RFr7of$s%9)cm{Px;Bsl(JLj(N!mbVzd*SD;Q z6EE3afk?29_rve4gar+2TDvtTwi^uZb=6^XI!aL43O!wD?L0xT~@OefQJ#uS4!|bqs)#^O&~PX!X?*+NKH;NQBd`HirLQm1x;^i}xk)2cN5t z1QJ7TAf|0~vv!d@$6siO5I)bi2tFscRb`BJbbVgdYx`Xneco38zEL$A{IdKGS~@{b@7@CV@K#*x zNoyzQCm6H|?2NaXVK0NabFekG;sCj)k4gbO8cX zE44=x9C)@KE#5BqauHiQ*1~?Kfqr*Z#0G*dg-}o^cOV5(oUn={@Nabs7B#F|@P)0; z>(}<>yguGt(dTTn?;TN%pto!k7T>8!Zu)Dq^7jb*d(DycR#Rlt>d(L41P7m`#S`@H zw0MDMf;vjJg0-;ws~Fi931ay(ffwxX`)BC)Gf5adXV+78u$81qB57pt^8La0R;Ja{ z;wkeY)K)5jT!bv%r)ha?y0el|8IeFsF+msuNtfEy&b@1EeE;=vnXj>T`Mj;pJtL|& z?6eliIFuH zTW`Uz3N<#_Y>$?{Hm~|M@~(Q?8g`sjy<+nI$7>Sw+YRU!-))8*0-r~zzrZM57B7$v z(JBSDe0`E-@r=w>y^~eT3WMp>1*$AP|NR!oe7hMW^+&rg4j^gt+>sTpV-Lw)0 zl&v}a8oAWh-rM-GWUcR(Hz=2pd{0qqX;TzuU#XAWcL^FT{sMzBEq$-3Uf{`URi#U% zj~D1+yx@{yS*{3jj*-2hd!rb9%o#@iB7mN+=gP`uy^?n+hp~7rNw=h3k-y|#fQk$v znTVvviU6{D{am++B!Zr&#~Q2W^VC03pt!Pyqg>pw0+u(fjPFaTW zqk93LPXB(90b&*bml`NOked*IQV?0MEMC?w5cS#uOhKW1x-tW~1U+ZZ({=4>BuS&c zD`F@9=i-9-ULY zVoGAm;z+*7hNOFnz`MQ;9@TA#xr6r~E^Fji0LW?;nV)*Ov9UtQt}Jmc0a8FGiO*v9 zPO-r`66Ms(OauA7Dt!WPo3Z$s*vH2UaK#4#P^p}(S81HcAZu1!AhKvlZA2IagV7{R zG^>VNSsRe#`|-Id{)jLllj;J>45R{511XA1#JVqXY5B8IG^0ks_??yNbZIk`3RNDTl?qdn2yf?TEaciqP&B%5@!M>5A$Fr1JZ- zwDb&<{tKR0fUweuEW%f17M_3=dX{S^?& z$82s_83&$eKtJBdqqegXn zNps-cRg4N)sh`}2;)VmJhEUI*5%9S&hBVcY{8%khHI&86vXuqM1qf)}S74~puq0p4 zG4%rae+7|iDF2qLkc+U~#D*5PU`Y8IYi+hRCH`4N{>H!lj;&FLIaMnrCEZ#a+wZg? zxpfh&sb>T0r5OA4bBG8E!j^5@5EC7Z*pwZJojMdzbOmt_6erM)>_H)|Ts8g7x0;(Y zPCj04LjGT_K|WrRFSSsNpst=IeB0x7%zat5(!jIq^PeK2lnLxt@rSCAOm$JZC&dV- zbPHrDgn*Vx$jVjj)omyVrPq~`$UVpfD3H`+MFe+tV{yynL@LUec}KDNs~EsklIH zLBJb}Cvj3};c5k2fuRCQrG%;h2yEZxx2R*cn~Ex?5^tDOA)sL-F^&{2R6=kIbo3F)5{4aqJX;B*6MQcF7<8)H8?(bVxp}J%!SL^yo1h zJAT3}5g{%v7BO3r5bL)VksX=qGgwT1%pSx^uB|GZ>D8-HLn&6HMyjAjj`{$K5fnQd za{w=kSN$N7(k*M2r5j78%Mf7l*|Jc%5Cwr!3Aq@hgNhB5F3Q)7Y>M)wGO~90c`J=n zCSXXQm_u!104g8uPyWo|3=SNPa9WfA^j}g}@&@b{tyAPn^Wwef#Y309`@Mf@ui9 zy9mPXD?+dpbX7N&7x!=t6SWI;rGttKloh1X@{PsQ9SB5OyaGdkD3>9h9m-0fz}w)+ z*{v#{ibaYoEYPJAmfTAzOy!S&s{tg^tYx`ZYM~_pZKP^Q?v-9@Ia|C{6VP)6z6lDs z{P_L2iZwR3wKb{n7eVs(ysRXDOu1_FLhF~tK7ziB;Kw#*kXO_$`D^C7B5~(V%6puV z`~wFM8L%zjEd|i+@sp>pW5*6eJ4g^cE-w<7A}&Ilz5 zc67dlxqow$6{zwj$(O~e>L)i~ES_#c@qmDoqzfRGXJw%Z7$xziXz3~yE3nk_)B@Jy z^*dAiVQe9#(Q~b-U;`L|m34~{B8ajCxf8_?dYlzNT0x)OgMfDi-JTLU+yY7B$DnXc z^UC{v{_abX|9ij-e2V}_ zj~zood;($;wjee<1QA`EB82sUz0X!N9YK2=S5bYv!al(k#sso-$+ebTg;F#rf$IMP zd@qMR6&r{+CXHlJX~h)+-uQV<{t#3FE&nah1bnn(E>HoY$Yi>YP9(8Pz{cvYuz20K z_YACo5_^0gl5AqE;MuSWdKa(r*LEJj${vUCMD?CDaIF+c-T z%9X|2bN<@K;_bV4Dx2?jbI3!ouI7*wL#d#MpvTMNHTos+^;lKJf778;U}rDH2q*=7CphY*I6?Wp(!~Ru2v!Zj zo(i(T;}{$w}H6rHd23o$}fbRg;9{t<<2C{au z9H3j(LFeaf;_s)|tbXXT67{dm%;0HTvs>m?s+e-1#U;sKOv&$4suWzm>Wu^yb?CcI zluyaGEc&t_?`pt1{Jt~zCrJdUz^OB5kdm?u(Ncn~DTwUT9U)8&!yhhXWL}c39Xm=3 z?I71TeS)?b-|R70cRCVgZusX$OtuWUe; zuYl0_ds(u>>ZKS4Ol==?G=_}DJ7iuiz*xLfV0dLfxQ?lzZ=(w6U%V#w9bSW9?QG4e zGtJv~i1~d2qx?xFZRl6O5mvj*DU9+rZ>HokpBI>a1bBgO2yp5QLl!50m9ub$$hg3hu1A{%}V+r>2dv0f8yy5P=j|sMDzOvFZj2 zCavO+r4S~?Bd`kOtZYC)`?u!nIY!Wo#XBm0mc?I+3+(ZMr2qn5zw>NR4%2Tbh4IBo zpkI+H%nGi-FA>1IX1Rm04T@rLi4yqf_InGQC0~|m<@1-K`hPF=B8z457VviPxlW(P znX_k2rO*_K5|a?KVI@Kzqx3&y!;zQjm>z*rLDdDM0s>C1;4+I>XOGrvK%(_Z0aRR4 zFlT|UTaib>p31zcJD5r#gF=zT^4*rTi#-0VSsUPMhVb!f99e-~p^v|c#oJwiodiqj zmBrNZr7)ss2@JQD!1$uY(f?W{z#FzZD~~Q)HMDQh${XIcRe0as)oo=Wt9e#o$64~P z>f?V`>g{rW$?EOED+aLE*|Xm3+%(C~Z97os~ltj?@y?&s68Px{0d%30!0KD(^Zn0nG=lc60?*E6|e5C=Bo% za&HmEvU2B+pnzY+;gLmk%3^Zak{Diuz;lf*RvZ&({S%6n!4E~MFS-WppHZI8R^&;i zs?~B|-`Oe2DLCLH`Tt39_wOv;8TivA!D+?;r_Y?l*>mTylRX3lg>eiDBZu_jpr#EG zkCw6zc{-Xy0$+aH$_NCKtX&c>RglbUTuj3s^7qOF)DN(NLR0P~@K%5(zpb<|-s}}% z6Nrjnrjwk~!2iVJ)m3z>Sr!vYm&6DGZ!3n8ysQF#OtG@~rAVc{-`Q#n_}o_i`j{E; z@$sE6s}-RCoyA|Wc4w*oJ>UhtmRy0>R+f}ak%-Nsu#Y+*pbdk<_T>=s5c7UVULMk> zGNX2T?O&FzuA&M@auM?J_BQaPYN6G?citapjfBh6H4Usrlw6CoZQL3bu?j#}TD(fX zs`hE)$h;b5Fs_ut;%!ASjKGiJ8dbS^!B0ghZ6)x%-(p4enza1idsC~{teJm?(tNc% z-Z`TGzgm1D@J`^LJ%8TB3kmV@_99V;KSG{wgun-F2!5zMVo8EMW=25!0-Kue1)Aam zwTu+bLF(oYEi#UKUf|(CIfK8JpW7&MSeed7%{Pkh+R}$e$0-T_aHx^CVwv@ph-2HnW z?=1CK171YaQY>)(d@7C{J!+pHV38==YXJf~ltEy-A~^PPeU^(`m^y$xFl=PXwhH#F zLXM=|+CQM&-zvxmSSf+rgr}F}r^F94Un? z-x~e0r+oIgKc#XrDwf75`t;$p;#@Xk@uSO@!@RCtv59jK2^@mi!YXO38e=5E%9Sg( z_wC!a@^wjoHFN<2!;<@q%uHJ7SyR1JGbfp3*w4sazZZ}K*8=~N#s7D}>+hY@qANI` znu_ggG(|^C36c@|-HX`7QgO_aFIV*?11pN3KHL>LV4-n+ziv<4v2`q^Ra`tiA z^5s~xcoEjGUw`8eKw#SQ_fyEp$w7X8KKAV0hYJ@j6p|r}%5d=DK_n+98)cA-IClKF zk#jv?x4$R#R|EbWV*tegT50?{`rC1oRJD#{)~!HbXM)zwhM))8zGWNOs`jZ1Xl4Of z`Li~ks5zuEv6&HYO#Z0&qrlI3w%-JH1l~&JCYB-aj#N%EuQjPrV=Vpp8w9UgkIj_% zI2Nt^Hf@5ZrzhM!Jg_l17;*gn;}yW(C<-7jt|Y*MB_5bIbOe09`ie0@3Y?WevMm>( zAK|Y!!xgN zOpM(?Z8g(&a>WAj?P?S$9aK}vO!cy)s|}!5N!MPxccgOME2va%d|@hA%z!SrpK{yn z@aq2)!Z_}huwy5p6E@SzH^AN99Ue=U!apJc2_%28>pZL-H5zdVY;)g81TeuJS58i@ zQ2_VlD=_-|A2FbMO?>msHyAQx2$oa+qypAgK|ukIQw2m2`9f9xBYsHTY}_ww_SdV5q~y>P#u>IcgE zW$9K{px{oa+}x^VFt#w2yOhJvXwwEhLx&?QJOc4_aS<`GSiNQqmMmV3rTl+`V`GrO z|1DtJbj*MJaST#0_|(&e3^xn`1c(Xjt{}kpem`S))8=4=i~c|Tgik;H6d!R-fA2kn zE?s5{I{M1a&Zd0Fn?O+@E1NiQ;GmK9)U*po<1&PBvUq3U1-@2VTDp0x+>DAuva;Y$ z9>IE&VDmGTarAlnyr1M=fuSkkGJluF+uOjGwswmI%bCi#FqIoqoH@KBm6OGfWXaa0 zLkFxHKM~;yK2x?MG$IPVzP?zra1oaK_#ljbJAp1~{fLp6{oq3w(WEJQJ@N=Xe(*so z?Aq-{BEZ`DlHe-|u+-ZZlYjY@1Zakz2>y(jGcjYv3=ADJ1_PS6zk5N2fCW$t4pFz+D z_`gsW8#+)4p5UgA_UsC3hp$pWM^C@7bLSY+SZbwmCWm)Q<;s-BoTs~B&CFQ{kEIW1 zYdR=23@g06v1rjE_^e)yNVUT$_p5*Y88hy>8>8>I1CvPlapT9M7Y*U7&YiLFx#w>z z0tgJ%>P3Paf+-i^yJj6+h78AuX3g>QFTY^gv}tgeH4AeWF2tk`k79Jsp7?d>P^yMK za5Mzq_ac*?udjS&5&Hcu*8W9?-Mctnz@brro}Q7xAk%K~W-$=d($6w7vsjrtZZ8sT z-G)d{7x+C^5`LYEBJ3ef@-Vu$k8ayLcanKk|J>`9`IZrqKStDR=~I&yx*_+>=|VE35%hgdF5<|MqlP${Sy_c-5Fs+D1R5`oqMwdSWCY%) zt8oSE+m+@akQLxos|+SOb>*z8-GurLu;lYE;J0!$eR(26qGJ&p9E#wOFobYf1n~4+ z%DO`|rr&)JMnC)rrVbvAS#EBIl#L0<0wgB)tmgqyiQJ z6dZZao`cbqDq(n&CYbo@tC&7~1YBtK6FPRHU+nd-1Yi~*H4y>w^761gAQ0m|{{|Ci zjXNJ^>$d-wI3E#$d@6)-5nRd~Q#>0+*CQ3S%aT7!$-sgu(yKTd|>& z4b!Svfn70^#%WDvY~s=92W(om0igswI5HYR1YYZE1n?jMqFL3O+`2WUj~i#Vcn9FR zRm>yh(^|maEo3@4`Kzz7;F;%cGy8fTt%E($6J^ktX_(Z&s4<3GWJrf+Og9Z ztSuWb2>zP_5kemy7#7K@U5Hu#mH=U4m`Z;?ZP+l(oITqRK)_4#r?cU+kSe!H`yyBr zij0cF48{QSo_y-Y2?C`6^1G&z$7Lx%GC>GfvIL`8Ao*?dXiRr?#q^OQG5O86Fs61L zjILP|)1G}6sVo&MZZHI(3z3>!B$!fwO~E0U-lsoi5iFltMKQ4ncNTLF(Yuxnfz_DW zaYxPG4_?Hnr3>jIPT5s~0i;N9mSnVCLNX68aXDmsw;)fqFlbMg}<4?ffZK3G|-ViZ> zAposdY1$dC+}u1918gJXgIM|;ecNrO2sDk>U?O6cL??E73=^L3h8Z7xfb)kAI}zZl z3F0mhAe037$q-<5ouZiDj6HOYpikrGlNns|dB(ts3fwZrk@UoSxjk&XuOWfT%pznK zV*;swVgZq0@7}#8Xp5zluU)VZ{scTQIvxQefPVmi*ZMyaVA5~DVb+{ESW1}>rKKmS zAjJ~!(q5mLtY9wFzl|=l*a_rD85M!}K5ifaWZ1iNA^K4VkmPN7f&Z1b*swn1jyZNkUMKP&%F}QL< zc?r)K+BwOp%DucW_iJ{0R6a{~&^|^#=$*%l4%8N6@Ob zl6+w+S7Pzo?_f&HJFwuz7ZI>{2^&H?5x$hsG6GyB3s4{_0!YS1fB;J9j34a;SX-|sJntz6ultH&*}YtCied2`#W1HqF?jHV zF;^-=^85)-1UOI7vyBSaSGFlri*Rx`vUWfE{69mGajfDlq2)Y! zX7|F0mk7ZAflAB*-YkBv`+9$;nK{V6|0x6r569#dw_+B{z0>Zz6P~?#A)JLFGw{KE zk>ODZ*y}$CXTv|lsn8E`GUQX72=0Z0{y!o*DjJ)ao?h4U03v|WE~`;(T|wdBRx~RX{D^7`lSU$S8zHZow|U zLBRfnj83=V;`xENc&_Sh;HT^*a${2*5zgYScIrAdr#p=;qBa zdeS7!U`nVo$*Kfitq`PEu*j6ps-Ipbkk&P`FA2b{XPcT8L)eq05Z$E|BA+gWC@%l@ zrQmf(NklwV59DTW(PMdX}0ek%65s`@C z3XM!eir;AD?;MBxf^$?wpdc?1IcY<=Mj|J39P;*jh@&CD!OM5!_FjF5U!Nmkb^>JC zn=_`2>*NC19UI@c2}V#FC$jJ}W6D&xFiJLspvz(a)d4n}SpY)-UM;;&5SuEqL;yzm z0X$(W{<$*P`a&5bb}Nm<7fK`i@lsfIS1D}a{piPRIPNv6&;>{V>|k>_fY*KNXMdCc z0Sp|M)8{LYQ>9Vu;BYMm_(^_Kkh^sdf#*cjHY&l+WP6&L6N;SkgOHOt0=XGuf!!Y> zdhur|wnuS&9w@zG!^YWJSviH>IRU4y1j?ZAs@3pf1I6u=PcfC{(y=THkALntjA3zT z@)uuTo(1snO5LO;iXrqm!MvC*eFwmWr-}u&EP-t=m&Kmf%VO7SWwD#L@mq}~GEe#`s(nF#Sm2oS>9B$PdY5N0VV3x}~WWDy{QvLEli09o-r z@+ur*MzR%04)4RhJ;~U!E5%%!i&^VPf?o{@E@qA)QQk;To7eEg>uxBN(S79=D^{$@ zWob5-l#}@4I>pma!!|mtD1qthJA7*a*{D2S{b{N8o5f zsnSU0?1cn~Bmw%706a-FDyibB>EOU^6scX(yC$8UpZn%GoUfgfNhD={JxYD_9EV zxx!J8md5d(obLIg0?vI@9(!Lchp={KaQ34LINrSoGS*&6fV@Jh7a6qjSg4W`gh%|} zV*rZ)QUN;ws0I=7JPKzu&WC;h@`wRr_$ z)|c{ewQ(a^mtW5^?>dqpld7S|hyWsv9%B(8lxfoJ{sS?K3UJ_IZvARg2HuTJBL0c8 z$oirJ4t6h($VbZ}e{G6V?!;|gFAAT*pYK+q`q1o;?&6_yeyf>y)cs`_zgK1Mgv(R zks174V#bIv^{xvN%yMy=10ET>`hgZ>w<4lRyMmLITWNu*fX8MebO*#FK>Z z#Ppdi7(8ScejynqF%4w4fSt^dmFp`AbN-Umt2(DtQU#kr0x-Is%^+|dw`L>d30(BM z1H0a{&`1P@MB?B^ z`uwxLID7sewj{(+(b$;EKS02DIS60}-+rGlK*27YKDiko99K(EPv!k13$V35E!A5o(sGcduH#QZ&{5 z)v%EQC~%WIum}*&3EMe84T1|}fZXXdkQK*I?Cf0$$DU?J(6J=;JX;#8TQLpnQVyrz zEP{)hF1Y~B0a$HiJNTS2p!G|IqzYkw*abwe+s9*YHuMLMbFd}jFy|0skdc0ZfF8U8 zd;zbu1NpgH+sXf(ID9Y)!9nY(NSu7SxPt^>jUaUxax+PSQ$HcyyW^y5ngEOe<}9Z4 z3-tMJi_NVo0k^(4B%mTlC3HJ=`YaPG3>^3?-NPJ2v1_LKzudqn4sxgyn8oi43BXuk z?oYpAHe0_3dzQiJDg5ZR7fWLeYyaC={5jgKB)4&u;yiyzp0j7ep(R%%fE{>|LF>;V zKwxM*wy*zy{Qyxr>Uz}vyk&rRV{T_6QJw+A9LWCPz9 zC#mw{?D0VAaO7o?1c$#znrC~Sy>*R#&2({@E&|M*=T->3vl561y02vs!DFeHaTlY; zjN`1}uNciTvBs$t911AwOI91QGXViIQpX7b?arR)qwJi_$w zrII-O6zc#^l|a*0rnOtZUm`$(2?qa&0tAM|BWe8@R{2IFCr_47BA-5N@_sw`mc?HU zcsuy{xrtnxsTK)z8|x4m;in1#3q`?>LeX&KXR}(klT%P`4}EgYQJ`nfp0!+DX0KV| zu@rM$7Zkbxfo?4ed?|sJC@@B)9U1N;Qu#?tDeNrEUu zhI=DE)}OD#_nft+uuxQxGY;8_ALpHRx$oNeyrE&khTYHN&sa{^97yE8x4H8c8t`S+ zx|JF@y8vhRpx;X|L;!cDkGfsH!WZ7YtKqq91xKf+npi=50t8efYwNB*55{}~9r!>= zENWGZE#ac@xVtFaxfa}33@-JG!Hx3)vl_A;JnvFFxR3x2;069=1PB)a{<~&SKq!0p z8|NcaRlb6~+}ak+$zw+LIN<r1IhZwj zo^b<~m0P5++<+87;9IUh;Cpi1T1p@iczLhHsx|B3!`IVnpumbE0p|TO7z-K|L2%nr zSkcDb`d#^8arkmAy{kCpH!cqE2S^MaNx!SG9lYCAB}F0&cyp_cj4rQn0skEV0zzUC z?za?ak>8rmUP=lBz+DRFPTE2L9pG`1#h`r4^0yFh3;Za4AI`-g*PI}#zdy1wHel^) zH`4p zC|k#j2thzdG(tA5!kLh-3Djon+`XBFo~?W(6?%SO?r||0Y3JjSdM=hENFvzr z4$F52Kad32#I=F1y_S#nfsfZ*96g+%Y6%NP(;PJdRtvL7Av5T$#M1-s{96h|#d-Kc zq*65bQQZo7f$qGl>06~;hdAFC%yO?RTj`(NgA_nySj64JS{_T6b9os8hzQG9_!PPU zS-&#@V%Q;^|H}}#(f3EN3>@6a-U<%y%=J_$__ZsE!4!%SHDzyXn z%L$P89}z$k!C{ec2nyJU69EK2JA(TWl6V%uX1*@LH_^SKdMmP*r90$4Zz~S&k6}@W z`F=<+wk2<3VMwwcX}A0wS-u7SdVaqe1v#8)Ebzw3;~wx@I*XZ+NOp{cqH!bvYXqtm zW{$vx4c&wHd|bKWU#$csc#1`WEM2E|pQPLicmb}ZoZWfpXR;73jE6mz<_Z6fFW4Wv6ocXQX$*z$a7gz+et zm23wm@O~6${f|3>K#Ksfc4q=u8HQZ}B7Qdr3=9f2-NMlDXm0&ljNPj~1v30`_-G2# zy%-vVET55nu6+Ez`gvU3iZiDY%szz^C$!P^FxIT{WsM*V1qS?Jt^h7Su62dr7v!uU z36}D0dXPNxvCMM@uQf;CSv|~2nbD8|U59Qw*D|}X( z?*+W?s=_0TZB(~eFcvp9f5NzapE-h{6|Hw zX2J4pKC61h(w!{cq;`t%*#qF<$C1Oyyk5u5nFR+A93laHke(Jq0$AX0yaIeL1Aaly z5-v^pXGVQNafg%9`0nxJh!vy{?NuZ@O zfJFwy1lrjv;05^A$Y2p6Gc$u1gC}}%N38(1X93HME3o|j%GGPJa`iex0xJfH<>rzF z1BSt^1wU5y>9W|%Ie??@l*3`RgVh2~e!eXH*$zI$@Atf5!+A$LSY>7H4fwq;DS$Hp zL{N1HgE=NXm!E9%G3OVae(oiXqdm+E?T&M)dzhw$(1K4Ad^UCr*v^r?9e6GIdLR)e zPo(fVi2%nC5*&%}P;U}L;QMnqgYQGY1->WOVlFqXc__%9&DWWUn5b!3?dxhX4djK} z;{mHsbmS+T_k3yKUqS*NX;O;?8e*-Fb~$0r`jG-yYM_H24seO#+QBPp7vL5dLcbUO+HkYg#zN6xT-^0J&MbW4(?6XA%=qefcz6t1vSi6looFSCvRr^60*N6t&<gkIFiU%x0INvHp$jQm3HKm*9M90L@>etW}tTMN2xG%4e07)dkufxpvcl1+~{^!df z^Ro)b`n&?tdtId+ywP3?-o}$U{Ml+=!MTHx+L6o7r1s`%qp0;2!<|6NTqaGP0v5IK z634l}{qB2ApW}`&uVF0lPG(tpFM$lg=~HUmvbkfxmi1qfdsXyskyd|k3yvHLXJIG~ zTa&ia>O+{)c_BE!6BilmDb2ead@90a;4dKP0$;atP>}fx3eukk()rm)sb%r$d!;dA z2o(uooFZC867*wm_ybAO8<|P(j+0d^%OYzB7j#HMNb~X<0;&Drkde3O7vz@}emduv~yXcfhsZ zuW;ojk(~RcJi<8#5Y)B|ws$Ruw2$rWV08lv=K-7u5UG^_aI@0E_L*ku*m*giJ zf1j5f&ze94f!74kLG0rJS^DI&?c5WvZtX@6jxM8XknFGFT1nsq{xXNCc{T z2mV556r|SUx&;O2%QNyXi|o`=c;l6Fm^-sG-%k`SrcWRNKIQs|d2LT*#JzUmgNPs! z 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 Ef|`{45&!@I diff --git a/src/main/webapp/upload/images/deskIcon/0000000025.png b/src/main/webapp/upload/images/deskIcon/0000000025.png deleted file mode 100644 index 4eb0d1d424a5e2abe5711a988d87e727c6061ea8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20673 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

                      Cx#!6lzWT@% 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 diff --git a/src/main/webapp/upload/images/deskIcon/buy.png b/src/main/webapp/upload/images/deskIcon/buy.png deleted file mode 100644 index 1189d1736fc1cb0889706a06c33c483372be1f64..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7919 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 S>t{DGKt@tgqDss-=>Gudo`=8y diff --git a/src/main/webapp/upload/images/deskIcon/money.png b/src/main/webapp/upload/images/deskIcon/money.png deleted file mode 100644 index a32a1fd8ffc9262186ade66f780cd59c9fa65d33..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17910 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 d1^zeZ7vj6`YtGdM{k(6Y{{ap5vOfR- diff --git a/src/main/webapp/upload/images/deskIcon/sale.png b/src/main/webapp/upload/images/deskIcon/sale.png deleted file mode 100644 index f27d7979e95ac07794645ab914f52477c9e28c29..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9097 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 diff --git a/src/test/java/Test.java b/src/test/java/Test.java new file mode 100644 index 00000000..e9250767 --- /dev/null +++ b/src/test/java/Test.java @@ -0,0 +1,12 @@ +import java.text.SimpleDateFormat; +import java.util.Date; + +public class Test { + + public static void main(String args[]){ + Date date = new Date(); + SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + String dateString = formatter.format(date); + System.out.println(dateString); + } +} diff --git a/src/test/java/com/jsh/test/MyRunnable.java b/src/test/java/com/jsh/test/MyRunnable.java deleted file mode 100644 index 6b3ede28..00000000 --- a/src/test/java/com/jsh/test/MyRunnable.java +++ /dev/null @@ -1,9 +0,0 @@ -package com.jsh.test; - -public class MyRunnable implements Runnable {//实现Runnable接口 - public void run(){ - for(int i=0; i<30; i++){ - System.out.println(Thread.currentThread().getName()+"运行, "+i); //获取当前线程的名称 - } - } -} \ No newline at end of file diff --git a/src/test/java/com/jsh/test/MyThread.java b/src/test/java/com/jsh/test/MyThread.java deleted file mode 100644 index 32193875..00000000 --- a/src/test/java/com/jsh/test/MyThread.java +++ /dev/null @@ -1,10 +0,0 @@ -package com.jsh.test; - -public class MyThread { - public static void main(String[] args) { - for (int i = 0; i < 3; i++) { - MyRunnable mt = new MyRunnable(); //定义Runnable子类对象 - new Thread(mt, "第" + i + "个线程").start(); - } - } -} diff --git a/src/test/java/com/jsh/test/Test.java b/src/test/java/com/jsh/test/Test.java deleted file mode 100644 index 69971e07..00000000 --- a/src/test/java/com/jsh/test/Test.java +++ /dev/null @@ -1,8 +0,0 @@ -package com.jsh.test; - -public class Test { - public static void main(String[] args) { - //This is test - - } -} diff --git a/src/test/resources/generatorConfig.xml b/src/test/resources/generatorConfig.xml new file mode 100644 index 00000000..b4b30c31 --- /dev/null +++ b/src/test/resources/generatorConfig.xml @@ -0,0 +1,68 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                      +
                      +
                      +
                      +
                      +
                      +
                      +
                      +
                      +
                      +
                      +
                      +
                      +
                      +
                      +
                      +
                      +
                      +
                      +
                      +
                      +
                      +
                      +
                      +