diff --git a/.idea/workspace.xml b/.idea/workspace.xml index c0560c6..3c1b81d 100644 --- a/.idea/workspace.xml +++ b/.idea/workspace.xml @@ -1,17 +1,14 @@ <?xml version="1.0" encoding="UTF-8"?> <project version="4"> + <component name="AnalysisUIOptions"> + <option name="GROUP_BY_SEVERITY" value="true" /> + </component> <component name="ChangeListManager"> <list default="true" id="baeae966-16bb-4f97-a411-22fe5a65cefd" name="Default Changelist" comment=""> <change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" /> - <change beforePath="$PROJECT_DIR$/src/main/java/com/huaheng/pc/check/checkingRegister/controller/CheckingRegisterController.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/huaheng/pc/check/checkingRegister/controller/CheckingRegisterController.java" afterDir="false" /> - <change beforePath="$PROJECT_DIR$/src/main/java/com/huaheng/pc/check/checkingRegister/service/CheckingRegisterService.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/huaheng/pc/check/checkingRegister/service/CheckingRegisterService.java" afterDir="false" /> - <change beforePath="$PROJECT_DIR$/src/main/java/com/huaheng/pc/config/statusFlow/controller/StatusFlowHeaderController.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/huaheng/pc/config/statusFlow/controller/StatusFlowHeaderController.java" afterDir="false" /> - <change beforePath="$PROJECT_DIR$/src/main/resources/templates/config/filterConfigHeader/add.html" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/resources/templates/config/filterConfigHeader/add.html" afterDir="false" /> - <change beforePath="$PROJECT_DIR$/src/main/resources/templates/config/receiptType/add.html" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/resources/templates/config/receiptType/add.html" afterDir="false" /> - <change beforePath="$PROJECT_DIR$/src/main/resources/templates/config/statusFlowHeader/add.html" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/resources/templates/config/statusFlowHeader/add.html" afterDir="false" /> - <change beforePath="$PROJECT_DIR$/src/main/resources/templates/config/statusFlowHeader/statusFlowHeader.html" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/resources/templates/config/statusFlowHeader/statusFlowHeader.html" afterDir="false" /> - <change beforePath="$PROJECT_DIR$/src/main/resources/templates/receipt/receiptHeader/receiptHeader.html" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/resources/templates/receipt/receiptHeader/receiptHeader.html" afterDir="false" /> + <change beforePath="$PROJECT_DIR$/src/main/resources/templates/config/container/print.html" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/resources/templates/config/container/print.html" afterDir="false" /> </list> + <ignored path="$PROJECT_DIR$/target/" /> <option name="EXCLUDED_CONVERTED_TO_IGNORED" value="true" /> <option name="SHOW_DIALOG" value="false" /> <option name="HIGHLIGHT_CONFLICTS" value="true" /> @@ -29,26 +26,381 @@ <option name="HIDDEN_KINDS"> <set /> </option> - <expand /> + <expand> + <path> + <item name="Database" type="3277223f:DatabaseStructure$DbRootGroup" /> + <item name="@172.16.29.45" type="feb32156:DbDataSourceImpl" /> + </path> + <path> + <item name="Database" type="3277223f:DatabaseStructure$DbRootGroup" /> + <item name="@172.16.29.45" type="feb32156:DbDataSourceImpl" /> + <item name="schemas" type="d4e8921:DatabaseStructure$FamilyGroup" /> + </path> + <path> + <item name="Database" type="3277223f:DatabaseStructure$DbRootGroup" /> + <item name="@172.16.29.45" type="feb32156:DbDataSourceImpl" /> + <item name="schemas" type="d4e8921:DatabaseStructure$FamilyGroup" /> + <item name="wms_v2: schema" type="76f4a085:MysqlImplModel$Schema" /> + </path> + </expand> <select /> </component> + <component name="FavoritesManager"> + <favorites_list name="huaheng" /> + </component> + <component name="FileEditorManager"> + <leaf SIDE_TABS_SIZE_LIMIT_KEY="300"> + <file pinned="false" current-in-tab="false"> + <entry file="file://$PROJECT_DIR$/src/main/resources/templates/config/container/container.html"> + <provider selected="true" editor-type-id="text-editor"> + <state relative-caret-position="1292"> + <caret line="68" column="44" selection-start-line="68" selection-start-column="35" selection-end-line="68" selection-end-column="44" /> + </state> + </provider> + </entry> + </file> + <file pinned="false" current-in-tab="false"> + <entry file="file://$PROJECT_DIR$/src/main/java/com/huaheng/pc/config/container/controller/ContainerController.java"> + <provider selected="true" editor-type-id="text-editor"> + <state relative-caret-position="228"> + <caret line="41" column="29" selection-start-line="41" selection-start-column="29" selection-end-line="41" selection-end-column="38" /> + </state> + </provider> + </entry> + </file> + <file pinned="false" current-in-tab="true"> + <entry file="file://$PROJECT_DIR$/src/main/resources/templates/config/container/print.html"> + <provider selected="true" editor-type-id="text-editor"> + <state relative-caret-position="150"> + <caret line="21" column="28" lean-forward="true" selection-start-line="21" selection-start-column="28" selection-end-line="21" selection-end-column="28" /> + <folding> + <element signature="n#style#0;n#div#0;n#div#1;n#body#0;n#html#0;n#!!top" expanded="true" /> + <element signature="n#style#0;n#span#0;n#div#0;n#div#1;n#body#0;n#html#0;n#!!top" expanded="true" /> + <element signature="n#style#0;n#div#1;n#div#0;n#body#0;n#html#0;n#!!top" expanded="true" /> + <element signature="n#style#0;n#div#0;n#div#1;n#div#0;n#body#0;n#html#0;n#!!top" expanded="true" /> + <element signature="n#style#0;n#table#0;n#div#0;n#div#0;n#div#1;n#div#0;n#body#0;n#html#0;n#!!top" expanded="true" /> + </folding> + </state> + </provider> + </entry> + </file> + <file pinned="false" current-in-tab="false"> + <entry file="file://$USER_HOME$/Desktop/boot/boot/打印二维码 - 多个组2.html"> + <provider selected="true" editor-type-id="text-editor"> + <state relative-caret-position="241"> + <caret line="47" column="36" lean-forward="true" selection-start-line="47" selection-start-column="36" selection-end-line="47" selection-end-column="36" /> + <folding> + <element signature="n#style#0;n#div#0;n#body#0;n#html#0;n#!!top" expanded="true" /> + <element signature="n#style#0;n#div#0;n#div#0;n#body#0;n#html#0;n#!!top" expanded="true" /> + <element signature="n#style#0;n#caption#0;n#table#0;n#div#1;n#div#1;n#div#0;n#body#0;n#html#0;n#!!top" expanded="true" /> + <element signature="n#style#0;n#td#1;n#tr#0;n#tbody#0;n#table#0;n#div#1;n#div#1;n#div#0;n#body#0;n#html#0;n#!!top" expanded="true" /> + <element signature="n#style#0;n#tr#1;n#tbody#0;n#table#0;n#div#1;n#div#1;n#div#0;n#body#0;n#html#0;n#!!top" expanded="true" /> + <element signature="n#style#0;n#td#1;n#tr#1;n#tbody#0;n#table#0;n#div#1;n#div#1;n#div#0;n#body#0;n#html#0;n#!!top" expanded="true" /> + <element signature="n#style#0;n#td#2;n#tr#1;n#tbody#0;n#table#0;n#div#1;n#div#1;n#div#0;n#body#0;n#html#0;n#!!top" expanded="true" /> + <element signature="n#style#0;n#img#0;n#td#2;n#tr#1;n#tbody#0;n#table#0;n#div#1;n#div#1;n#div#0;n#body#0;n#html#0;n#!!top" expanded="true" /> + <element signature="n#style#0;n#td#1;n#tr#2;n#tbody#0;n#table#0;n#div#1;n#div#1;n#div#0;n#body#0;n#html#0;n#!!top" expanded="true" /> + <element signature="e#2973#2979#0" expanded="true" /> + <element signature="e#2979#2985#0" expanded="true" /> + <element signature="e#2985#2991#0" expanded="true" /> + <element signature="e#2991#2997#0" expanded="true" /> + <element signature="e#2997#3003#0" expanded="true" /> + <element signature="e#3003#3009#0" expanded="true" /> + <element signature="e#3009#3015#0" expanded="true" /> + <element signature="n#style#0;n#td#1;n#tr#3;n#tbody#0;n#table#0;n#div#1;n#div#1;n#div#0;n#body#0;n#html#0;n#!!top" expanded="true" /> + <element signature="n#style#0;n#input#0;n#td#1;n#tr#3;n#tbody#0;n#table#0;n#div#1;n#div#1;n#div#0;n#body#0;n#html#0;n#!!top" expanded="true" /> + <element signature="n#style#0;n#caption#0;n#table#0;n#div#2;n#div#1;n#div#0;n#body#0;n#html#0;n#!!top" expanded="true" /> + <element signature="n#style#0;n#td#1;n#tr#0;n#tbody#0;n#table#0;n#div#2;n#div#1;n#div#0;n#body#0;n#html#0;n#!!top" expanded="true" /> + <element signature="n#style#0;n#tr#1;n#tbody#0;n#table#0;n#div#2;n#div#1;n#div#0;n#body#0;n#html#0;n#!!top" expanded="true" /> + <element signature="n#style#0;n#td#1;n#tr#1;n#tbody#0;n#table#0;n#div#2;n#div#1;n#div#0;n#body#0;n#html#0;n#!!top" expanded="true" /> + <element signature="n#style#0;n#td#2;n#tr#1;n#tbody#0;n#table#0;n#div#2;n#div#1;n#div#0;n#body#0;n#html#0;n#!!top" expanded="true" /> + <element signature="n#style#0;n#img#0;n#td#2;n#tr#1;n#tbody#0;n#table#0;n#div#2;n#div#1;n#div#0;n#body#0;n#html#0;n#!!top" expanded="true" /> + <element signature="n#style#0;n#td#1;n#tr#2;n#tbody#0;n#table#0;n#div#2;n#div#1;n#div#0;n#body#0;n#html#0;n#!!top" expanded="true" /> + <element signature="e#3995#4001#0" expanded="true" /> + <element signature="e#4001#4007#0" expanded="true" /> + <element signature="e#4007#4013#0" expanded="true" /> + <element signature="e#4013#4019#0" expanded="true" /> + <element signature="e#4019#4025#0" expanded="true" /> + <element signature="e#4025#4031#0" expanded="true" /> + <element signature="e#4031#4037#0" expanded="true" /> + <element signature="n#style#0;n#td#1;n#tr#3;n#tbody#0;n#table#0;n#div#2;n#div#1;n#div#0;n#body#0;n#html#0;n#!!top" expanded="true" /> + <element signature="n#style#0;n#input#0;n#td#1;n#tr#3;n#tbody#0;n#table#0;n#div#2;n#div#1;n#div#0;n#body#0;n#html#0;n#!!top" expanded="true" /> + </folding> + </state> + </provider> + </entry> + </file> + </leaf> + </component> <component name="FileTemplateManagerImpl"> <option name="RECENT_TEMPLATES"> <list> <option value="Interface" /> - <option value="Class" /> <option value="Enum" /> <option value="HTML File" /> + <option value="Class" /> </list> </option> </component> + <component name="FindBugs-IDEA-Workspace"> + <toolWindowEditorPreview>false</toolWindowEditorPreview> + </component> <component name="Git.Settings"> <option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$" /> + <option name="RECENT_BRANCH_BY_REPOSITORY"> + <map> + <entry key="$PROJECT_DIR$" value="rabbitmq" /> + </map> + </option> + </component> + <component name="IdeDocumentHistory"> + <option name="CHANGED_PATHS"> + <list> + <option value="$PROJECT_DIR$/src/main/java/com/huaheng/api/general/controller/ReceiptApi.java" /> + <option value="$PROJECT_DIR$/src/main/java/com/huaheng/api/general/service/ReceiptApiService.java" /> + <option value="$PROJECT_DIR$/src/main/java/com/huaheng/pc/shipment/shipmentDetail/service/ShipmentDetailServiceImpl.java" /> + <option value="$PROJECT_DIR$/src/main/java/com/huaheng/api/general/service/ShipmentApiService.java" /> + <option value="$PROJECT_DIR$/src/main/java/com/huaheng/pc/system/user/service/UserServiceImpl.java" /> + <option value="$PROJECT_DIR$/src/main/java/com/huaheng/pc/system/user/service/IUserService.java" /> + <option value="$PROJECT_DIR$/src/main/java/com/huaheng/api/general/controller/BasicDataApi.java" /> + <option value="$PROJECT_DIR$/src/main/java/com/huaheng/api/general/domain/InventoryDomain.java" /> + <option value="$PROJECT_DIR$/src/main/java/com/huaheng/api/general/service/BasicDataApiService.java" /> + <option value="$PROJECT_DIR$/src/main/java/com/huaheng/pc/config/container/controller/ContainerController.java" /> + <option value="$PROJECT_DIR$/src/main/resources/templates/config/container/container.html" /> + <option value="$USER_HOME$/Desktop/boot/boot/打印二维码 - 多个组2.html" /> + <option value="$PROJECT_DIR$/src/main/resources/static/css/style.css" /> + <option value="$PROJECT_DIR$/src/main/resources/templates/config/container/print.html" /> + </list> + </option> + </component> + <component name="MavenProjectNavigator"> + <treeState> + <expand> + <path> + <item name="" type="16c1761:MavenProjectsStructure$RootNode" /> + <item name="huaheng" type="9519ce18:MavenProjectsStructure$ProjectNode" /> + </path> + </expand> + <select /> + </treeState> + </component> + <component name="ProjectFrameBounds" extendedState="6"> + <option name="x" value="470" /> + <option name="width" value="980" /> + <option name="height" value="1030" /> </component> <component name="ProjectId" id="1QOzUtfkdeRmYuw3MIDHXXMLsFH" /> <component name="ProjectLevelVcsManager"> <OptionsSetting value="false" id="Update" /> </component> + <component name="ProjectView"> + <navigator proportions="" version="1"> + <foldersAlwaysOnTop value="true" /> + </navigator> + <panes> + <pane id="PackagesPane" /> + <pane id="ProjectPane"> + <subPane> + <expand> + <path> + <item name="wms2" type="b2602c69:ProjectViewProjectNode" /> + <item name="wms2" type="462c0819:PsiDirectoryNode" /> + </path> + <path> + <item name="wms2" type="b2602c69:ProjectViewProjectNode" /> + <item name="wms2" type="462c0819:PsiDirectoryNode" /> + <item name="src" type="462c0819:PsiDirectoryNode" /> + </path> + <path> + <item name="wms2" type="b2602c69:ProjectViewProjectNode" /> + <item name="wms2" type="462c0819:PsiDirectoryNode" /> + <item name="src" type="462c0819:PsiDirectoryNode" /> + <item name="main" type="462c0819:PsiDirectoryNode" /> + </path> + <path> + <item name="wms2" type="b2602c69:ProjectViewProjectNode" /> + <item name="wms2" type="462c0819:PsiDirectoryNode" /> + <item name="src" type="462c0819:PsiDirectoryNode" /> + <item name="main" type="462c0819:PsiDirectoryNode" /> + <item name="java" type="462c0819:PsiDirectoryNode" /> + </path> + <path> + <item name="wms2" type="b2602c69:ProjectViewProjectNode" /> + <item name="wms2" type="462c0819:PsiDirectoryNode" /> + <item name="src" type="462c0819:PsiDirectoryNode" /> + <item name="main" type="462c0819:PsiDirectoryNode" /> + <item name="java" type="462c0819:PsiDirectoryNode" /> + <item name="com" type="462c0819:PsiDirectoryNode" /> + </path> + <path> + <item name="wms2" type="b2602c69:ProjectViewProjectNode" /> + <item name="wms2" type="462c0819:PsiDirectoryNode" /> + <item name="src" type="462c0819:PsiDirectoryNode" /> + <item name="main" type="462c0819:PsiDirectoryNode" /> + <item name="java" type="462c0819:PsiDirectoryNode" /> + <item name="com" type="462c0819:PsiDirectoryNode" /> + <item name="huaheng" type="462c0819:PsiDirectoryNode" /> + </path> + <path> + <item name="wms2" type="b2602c69:ProjectViewProjectNode" /> + <item name="wms2" type="462c0819:PsiDirectoryNode" /> + <item name="src" type="462c0819:PsiDirectoryNode" /> + <item name="main" type="462c0819:PsiDirectoryNode" /> + <item name="java" type="462c0819:PsiDirectoryNode" /> + <item name="com" type="462c0819:PsiDirectoryNode" /> + <item name="huaheng" type="462c0819:PsiDirectoryNode" /> + <item name="pc" type="462c0819:PsiDirectoryNode" /> + </path> + <path> + <item name="wms2" type="b2602c69:ProjectViewProjectNode" /> + <item name="wms2" type="462c0819:PsiDirectoryNode" /> + <item name="src" type="462c0819:PsiDirectoryNode" /> + <item name="main" type="462c0819:PsiDirectoryNode" /> + <item name="java" type="462c0819:PsiDirectoryNode" /> + <item name="com" type="462c0819:PsiDirectoryNode" /> + <item name="huaheng" type="462c0819:PsiDirectoryNode" /> + <item name="pc" type="462c0819:PsiDirectoryNode" /> + <item name="config" type="462c0819:PsiDirectoryNode" /> + </path> + <path> + <item name="wms2" type="b2602c69:ProjectViewProjectNode" /> + <item name="wms2" type="462c0819:PsiDirectoryNode" /> + <item name="src" type="462c0819:PsiDirectoryNode" /> + <item name="main" type="462c0819:PsiDirectoryNode" /> + <item name="java" type="462c0819:PsiDirectoryNode" /> + <item name="com" type="462c0819:PsiDirectoryNode" /> + <item name="huaheng" type="462c0819:PsiDirectoryNode" /> + <item name="pc" type="462c0819:PsiDirectoryNode" /> + <item name="config" type="462c0819:PsiDirectoryNode" /> + <item name="container" type="462c0819:PsiDirectoryNode" /> + </path> + <path> + <item name="wms2" type="b2602c69:ProjectViewProjectNode" /> + <item name="wms2" type="462c0819:PsiDirectoryNode" /> + <item name="src" type="462c0819:PsiDirectoryNode" /> + <item name="main" type="462c0819:PsiDirectoryNode" /> + <item name="java" type="462c0819:PsiDirectoryNode" /> + <item name="com" type="462c0819:PsiDirectoryNode" /> + <item name="huaheng" type="462c0819:PsiDirectoryNode" /> + <item name="pc" type="462c0819:PsiDirectoryNode" /> + <item name="config" type="462c0819:PsiDirectoryNode" /> + <item name="container" type="462c0819:PsiDirectoryNode" /> + <item name="controller" type="462c0819:PsiDirectoryNode" /> + </path> + <path> + <item name="wms2" type="b2602c69:ProjectViewProjectNode" /> + <item name="wms2" type="462c0819:PsiDirectoryNode" /> + <item name="src" type="462c0819:PsiDirectoryNode" /> + <item name="main" type="462c0819:PsiDirectoryNode" /> + <item name="java" type="462c0819:PsiDirectoryNode" /> + <item name="com" type="462c0819:PsiDirectoryNode" /> + <item name="huaheng" type="462c0819:PsiDirectoryNode" /> + <item name="pc" type="462c0819:PsiDirectoryNode" /> + <item name="inventory" type="462c0819:PsiDirectoryNode" /> + </path> + <path> + <item name="wms2" type="b2602c69:ProjectViewProjectNode" /> + <item name="wms2" type="462c0819:PsiDirectoryNode" /> + <item name="src" type="462c0819:PsiDirectoryNode" /> + <item name="main" type="462c0819:PsiDirectoryNode" /> + <item name="java" type="462c0819:PsiDirectoryNode" /> + <item name="com" type="462c0819:PsiDirectoryNode" /> + <item name="huaheng" type="462c0819:PsiDirectoryNode" /> + <item name="pc" type="462c0819:PsiDirectoryNode" /> + <item name="inventory" type="462c0819:PsiDirectoryNode" /> + <item name="inventoryTransaction" type="462c0819:PsiDirectoryNode" /> + </path> + <path> + <item name="wms2" type="b2602c69:ProjectViewProjectNode" /> + <item name="wms2" type="462c0819:PsiDirectoryNode" /> + <item name="src" type="462c0819:PsiDirectoryNode" /> + <item name="main" type="462c0819:PsiDirectoryNode" /> + <item name="java" type="462c0819:PsiDirectoryNode" /> + <item name="com" type="462c0819:PsiDirectoryNode" /> + <item name="huaheng" type="462c0819:PsiDirectoryNode" /> + <item name="pc" type="462c0819:PsiDirectoryNode" /> + <item name="inventory" type="462c0819:PsiDirectoryNode" /> + <item name="inventoryTransaction" type="462c0819:PsiDirectoryNode" /> + <item name="controller" type="462c0819:PsiDirectoryNode" /> + </path> + <path> + <item name="wms2" type="b2602c69:ProjectViewProjectNode" /> + <item name="wms2" type="462c0819:PsiDirectoryNode" /> + <item name="src" type="462c0819:PsiDirectoryNode" /> + <item name="main" type="462c0819:PsiDirectoryNode" /> + <item name="resources" type="462c0819:PsiDirectoryNode" /> + </path> + <path> + <item name="wms2" type="b2602c69:ProjectViewProjectNode" /> + <item name="wms2" type="462c0819:PsiDirectoryNode" /> + <item name="src" type="462c0819:PsiDirectoryNode" /> + <item name="main" type="462c0819:PsiDirectoryNode" /> + <item name="resources" type="462c0819:PsiDirectoryNode" /> + <item name="templates" type="462c0819:PsiDirectoryNode" /> + </path> + <path> + <item name="wms2" type="b2602c69:ProjectViewProjectNode" /> + <item name="wms2" type="462c0819:PsiDirectoryNode" /> + <item name="src" type="462c0819:PsiDirectoryNode" /> + <item name="main" type="462c0819:PsiDirectoryNode" /> + <item name="resources" type="462c0819:PsiDirectoryNode" /> + <item name="templates" type="462c0819:PsiDirectoryNode" /> + <item name="config" type="462c0819:PsiDirectoryNode" /> + </path> + <path> + <item name="wms2" type="b2602c69:ProjectViewProjectNode" /> + <item name="wms2" type="462c0819:PsiDirectoryNode" /> + <item name="src" type="462c0819:PsiDirectoryNode" /> + <item name="main" type="462c0819:PsiDirectoryNode" /> + <item name="resources" type="462c0819:PsiDirectoryNode" /> + <item name="templates" type="462c0819:PsiDirectoryNode" /> + <item name="config" type="462c0819:PsiDirectoryNode" /> + <item name="container" type="462c0819:PsiDirectoryNode" /> + </path> + <path> + <item name="wms2" type="b2602c69:ProjectViewProjectNode" /> + <item name="wms2" type="462c0819:PsiDirectoryNode" /> + <item name="src" type="462c0819:PsiDirectoryNode" /> + <item name="main" type="462c0819:PsiDirectoryNode" /> + <item name="resources" type="462c0819:PsiDirectoryNode" /> + <item name="templates" type="462c0819:PsiDirectoryNode" /> + <item name="inventory" type="462c0819:PsiDirectoryNode" /> + </path> + <path> + <item name="wms2" type="b2602c69:ProjectViewProjectNode" /> + <item name="wms2" type="462c0819:PsiDirectoryNode" /> + <item name="src" type="462c0819:PsiDirectoryNode" /> + <item name="main" type="462c0819:PsiDirectoryNode" /> + <item name="resources" type="462c0819:PsiDirectoryNode" /> + <item name="templates" type="462c0819:PsiDirectoryNode" /> + <item name="inventory" type="462c0819:PsiDirectoryNode" /> + <item name="inventoryTransaction" type="462c0819:PsiDirectoryNode" /> + </path> + <path> + <item name="wms2" type="b2602c69:ProjectViewProjectNode" /> + <item name="wms2" type="462c0819:PsiDirectoryNode" /> + <item name="src" type="462c0819:PsiDirectoryNode" /> + <item name="main" type="462c0819:PsiDirectoryNode" /> + <item name="resources" type="462c0819:PsiDirectoryNode" /> + <item name="templates" type="462c0819:PsiDirectoryNode" /> + <item name="receipt" type="462c0819:PsiDirectoryNode" /> + </path> + <path> + <item name="wms2" type="b2602c69:ProjectViewProjectNode" /> + <item name="wms2" type="462c0819:PsiDirectoryNode" /> + <item name="src" type="462c0819:PsiDirectoryNode" /> + <item name="main" type="462c0819:PsiDirectoryNode" /> + <item name="resources" type="462c0819:PsiDirectoryNode" /> + <item name="templates" type="462c0819:PsiDirectoryNode" /> + <item name="receipt" type="462c0819:PsiDirectoryNode" /> + <item name="receiptHeader" type="462c0819:PsiDirectoryNode" /> + </path> + </expand> + <select /> + </subPane> + </pane> + <pane id="Scope" /> + </panes> + </component> <component name="PropertiesComponent"> <property name="ASKED_ADD_EXTERNAL_FILES" value="true" /> <property name="DefaultHtmlFileTemplate" value="HTML File" /> @@ -58,6 +410,7 @@ <property name="RequestMappingsPanelWidth1" value="75" /> <property name="WebServerToolWindowFactoryState" value="false" /> <property name="aspect.path.notification.shown" value="true" /> + <property name="com.android.tools.idea.instantapp.provision.ProvisionBeforeRunTaskProvider.myTimeStamp" value="1577352095697" /> <property name="full.screen.before.presentation.mode" value="false" /> <property name="last_opened_file_path" value="$PROJECT_DIR$/src/main/resources/static/ajax/libs/bootstrap-table/extensions/editable" /> <property name="node.js.detected.package.eslint" value="true" /> @@ -66,6 +419,7 @@ <property name="node.js.path.for.package.tslint" value="project" /> <property name="node.js.selected.package.eslint" value="(autodetect)" /> <property name="node.js.selected.package.tslint" value="(autodetect)" /> + <property name="nodejs_package_manager_path" value="npm" /> <property name="project.structure.last.edited" value="Modules" /> <property name="project.structure.proportion" value="0.15429688" /> <property name="project.structure.side.proportion" value="0.2" /> @@ -73,10 +427,22 @@ <property name="settings.editor.selected.configurable" value="preferences.pluginManager" /> </component> <component name="RecentsManager"> + <key name="MoveFile.RECENT_KEYS"> + <recent name="E:\code\wms2\src\main\resources\templates\config\configWarning" /> + </key> + <key name="CopyClassDialog.RECENTS_KEY"> + <recent name="com.huaheng.api.general.domain" /> + </key> <key name="CopyFile.RECENT_KEYS"> + <recent name="D:\wms2\src\main\resources\templates\config\container" /> <recent name="E:\code\wms2\src\main\resources\static\ajax\libs\bootstrap-table\extensions\editable" /> </key> </component> + <component name="RunAnythingCache"> + <option name="myCommands"> + <command value="," /> + </option> + </component> <component name="RunDashboard"> <option name="configurationTypes"> <set> @@ -93,17 +459,34 @@ </RuleState> </list> </option> + <option name="contentProportion" value="0.012987013" /> </component> - <component name="RunManager" selected="Spring Boot.HuaHengApplication"> - <configuration name="ReceiptContainerHeaderServiceImpl" type="Application" factoryName="Application" temporary="true" nameIsGenerated="true"> - <option name="MAIN_CLASS_NAME" value="com.huaheng.pc.receipt.receiptContainerHeader.service.ReceiptContainerHeaderServiceImpl" /> + <component name="RunManager" selected="Spring Boot.HuaHengApplication (1)"> + <configuration name="EncryptPassword" type="Application" factoryName="Application" temporary="true" nameIsGenerated="true"> + <option name="MAIN_CLASS_NAME" value="com.huaheng.test.EncryptPassword" /> + <module name="huaheng" /> + <extension name="coverage"> + <pattern> + <option name="PATTERN" value="com.huaheng.test.*" /> + <option name="ENABLED" value="true" /> + </pattern> + </extension> + <method v="2"> + <option name="Make" enabled="true" /> + </method> + </configuration> + <configuration name="MqTest.send" type="JUnit" factoryName="JUnit" temporary="true" nameIsGenerated="true"> <module name="huaheng" /> <extension name="coverage"> <pattern> - <option name="PATTERN" value="com.huaheng.pc.receipt.receiptContainerHeader.service.*" /> + <option name="PATTERN" value="com.huaheng.test.*" /> <option name="ENABLED" value="true" /> </pattern> </extension> + <option name="PACKAGE_NAME" value="com.huaheng.test" /> + <option name="MAIN_CLASS_NAME" value="com.huaheng.test.MqTest" /> + <option name="METHOD_NAME" value="send" /> + <option name="TEST_OBJECT" value="method" /> <method v="2"> <option name="Make" enabled="true" /> </method> @@ -124,6 +507,19 @@ <option name="Make" enabled="true" /> </method> </configuration> + <configuration name="HuaHengApplication (1)" type="SpringBootApplicationConfigurationType" factoryName="Spring Boot" temporary="true" nameIsGenerated="true"> + <module name="wms2" /> + <extension name="coverage"> + <pattern> + <option name="PATTERN" value="com.huaheng.*" /> + <option name="ENABLED" value="true" /> + </pattern> + </extension> + <option name="SPRING_BOOT_MAIN_CLASS" value="com.huaheng.HuaHengApplication" /> + <method v="2"> + <option name="Make" enabled="true" /> + </method> + </configuration> <configuration name="HuaHengApplication" type="SpringBootApplicationConfigurationType" factoryName="Spring Boot" temporary="true" nameIsGenerated="true"> <module name="huaheng" /> <extension name="coverage"> @@ -134,41 +530,35 @@ </extension> <option name="SPRING_BOOT_MAIN_CLASS" value="com.huaheng.HuaHengApplication" /> <option name="ALTERNATIVE_JRE_PATH" /> - <option name="UPDATE_ACTION_UPDATE_POLICY" value="UpdateClassesAndResources" /> + <option name="UPDATE_ACTION_UPDATE_POLICY" value="UpdateResources" /> <option name="FRAME_DEACTIVATION_UPDATE_POLICY" value="UpdateClassesAndResources" /> <method v="2"> <option name="Make" enabled="true" /> </method> </configuration> <list> - <item itemvalue="Application.ReceiptContainerHeaderServiceImpl" /> + <item itemvalue="Application.EncryptPassword" /> + <item itemvalue="JUnit.MqTest.send" /> <item itemvalue="JUnit.ServiceTest.sendSimpleMail" /> <item itemvalue="Spring Boot.HuaHengApplication" /> + <item itemvalue="Spring Boot.HuaHengApplication (1)" /> </list> <recent_temporary> <list> + <item itemvalue="Spring Boot.HuaHengApplication (1)" /> <item itemvalue="Spring Boot.HuaHengApplication" /> - <item itemvalue="Application.ReceiptContainerHeaderServiceImpl" /> <item itemvalue="JUnit.ServiceTest.sendSimpleMail" /> + <item itemvalue="JUnit.MqTest.send" /> + <item itemvalue="Application.EncryptPassword" /> </list> </recent_temporary> </component> <component name="ServiceViewManager"> <option name="allServicesViewState"> <serviceView> - <option name="contentProportion" value="0.1612554" /> + <option name="contentProportion" value="0.11255411" /> <treeState> - <expand> - <path> - <item name="services root" type="e789fda9:ObjectUtils$Sentinel" /> - <item name="com.intellij.execution.services.ServiceModel$ServiceGroupNode@c531c3e8" type="7427dc5b:ServiceModel$ServiceGroupNode" /> - </path> - <path> - <item name="services root" type="e789fda9:ObjectUtils$Sentinel" /> - <item name="com.intellij.execution.services.ServiceModel$ServiceGroupNode@c531c3e8" type="7427dc5b:ServiceModel$ServiceGroupNode" /> - <item name="com.intellij.execution.services.ServiceModel$ServiceGroupNode@ef9dc71e" type="7427dc5b:ServiceModel$ServiceGroupNode" /> - </path> - </expand> + <expand /> <select /> </treeState> </serviceView> @@ -271,154 +661,104 @@ <workItem from="1569745589865" duration="2739000" /> <workItem from="1569748443357" duration="438000" /> <workItem from="1569803438585" duration="13789000" /> - <workItem from="1570581146682" duration="9295000" /> - </task> - <task id="LOCAL-00001" summary="修改添加物料时使用物料类别生成物料编码"> - <created>1567664306836</created> - <option name="number" value="00001" /> - <option name="presentableId" value="LOCAL-00001" /> - <option name="project" value="LOCAL" /> - <updated>1567664306836</updated> - </task> - <task id="LOCAL-00002" summary="修改添加物料时使用物料类别生成物料编码"> - <created>1567936901056</created> - <option name="number" value="00002" /> - <option name="presentableId" value="LOCAL-00002" /> - <option name="project" value="LOCAL" /> - <updated>1567936901056</updated> - </task> - <task id="LOCAL-00003" summary="修改质检页面、添加完成质检"> - <created>1568025230030</created> - <option name="number" value="00003" /> - <option name="presentableId" value="LOCAL-00003" /> - <option name="project" value="LOCAL" /> - <updated>1568025230030</updated> - </task> - <task id="LOCAL-00004" summary="修改质检页面、添加完成质检"> - <created>1568110494128</created> - <option name="number" value="00004" /> - <option name="presentableId" value="LOCAL-00004" /> - <option name="project" value="LOCAL" /> - <updated>1568110494128</updated> - </task> - <task id="LOCAL-00005" summary="修复入库质检请求地址冲突"> - <created>1568162392627</created> - <option name="number" value="00005" /> - <option name="presentableId" value="LOCAL-00005" /> - <option name="project" value="LOCAL" /> - <updated>1568162392627</updated> - </task> - <task id="LOCAL-00006" summary="添加入库单打印"> - <created>1568174134623</created> - <option name="number" value="00006" /> - <option name="presentableId" value="LOCAL-00006" /> - <option name="project" value="LOCAL" /> - <updated>1568174134623</updated> - </task> - <task id="LOCAL-00007" summary="修改入库单审核移动到入库单头表"> - <created>1568186231357</created> - <option name="number" value="00007" /> - <option name="presentableId" value="LOCAL-00007" /> - <option name="project" value="LOCAL" /> - <updated>1568186231357</updated> - </task> - <task id="LOCAL-00008" summary="修改任务完成更新库位的错误"> - <created>1568191139437</created> - <option name="number" value="00008" /> - <option name="presentableId" value="LOCAL-00008" /> - <option name="project" value="LOCAL" /> - <updated>1568191139437</updated> - </task> - <task id="LOCAL-00009" summary="修改入库类型自动判断"> - <created>1568259182874</created> - <option name="number" value="00009" /> - <option name="presentableId" value="LOCAL-00009" /> - <option name="project" value="LOCAL" /> - <updated>1568259182874</updated> - </task> - <task id="LOCAL-00010" summary="修改入库单页面"> - <created>1568281128408</created> - <option name="number" value="00010" /> - <option name="presentableId" value="LOCAL-00010" /> - <option name="project" value="LOCAL" /> - <updated>1568281128408</updated> - </task> - <task id="LOCAL-00011" summary="修改入库单页面,入库单审核,质检页面后台跳转接口"> - <created>1568616697584</created> - <option name="number" value="00011" /> - <option name="presentableId" value="LOCAL-00011" /> - <option name="project" value="LOCAL" /> - <updated>1568616697584</updated> - </task> - <task id="LOCAL-00012" summary="修改 入库收货,生成上架任务自动执行定位"> - <created>1568692224269</created> - <option name="number" value="00012" /> - <option name="presentableId" value="LOCAL-00012" /> - <option name="project" value="LOCAL" /> - <updated>1568692224269</updated> - </task> - <task id="LOCAL-00013" summary="修复商品管理、物料类别种bug"> - <created>1568784920330</created> - <option name="number" value="00013" /> - <option name="presentableId" value="LOCAL-00013" /> - <option name="project" value="LOCAL" /> - <updated>1568784920330</updated> - </task> - <task id="LOCAL-00014" summary="修改入库明细添加加载定位规则的错误"> - <created>1568788287608</created> - <option name="number" value="00014" /> - <option name="presentableId" value="LOCAL-00014" /> - <option name="project" value="LOCAL" /> - <updated>1568788287608</updated> - </task> - <task id="LOCAL-00015" summary="添加入库质检行内编辑"> - <created>1568857387442</created> - <option name="number" value="00015" /> - <option name="presentableId" value="LOCAL-00015" /> - <option name="project" value="LOCAL" /> - <updated>1568857387442</updated> - </task> - <task id="LOCAL-00016" summary="行内编辑完成后更新数据库"> - <created>1568875291383</created> - <option name="number" value="00016" /> - <option name="presentableId" value="LOCAL-00016" /> - <option name="project" value="LOCAL" /> - <updated>1568875291383</updated> - </task> - <task id="LOCAL-00017" summary="修改质检登记使用bootstarp boot原生方法初始化"> - <created>1568885639106</created> - <option name="number" value="00017" /> - <option name="presentableId" value="LOCAL-00017" /> - <option name="project" value="LOCAL" /> - <updated>1568885639106</updated> - </task> - <task id="LOCAL-00018" summary="表单头创建时间添加默认创建时间 开始时间默认提前一周,结束时间默认当天"> - <created>1569207792528</created> - <option name="number" value="00018" /> - <option name="presentableId" value="LOCAL-00018" /> - <option name="project" value="LOCAL" /> - <updated>1569207792528</updated> - </task> - <task id="LOCAL-00019" summary="配置中所有页面添加重置按钮"> - <created>1569218224945</created> - <option name="number" value="00019" /> - <option name="presentableId" value="LOCAL-00019" /> - <option name="project" value="LOCAL" /> - <updated>1569218224945</updated> - </task> - <task id="LOCAL-00020" summary="收货添加定位、取消定位、取消组盘按钮"> - <created>1569232154274</created> - <option name="number" value="00020" /> - <option name="presentableId" value="LOCAL-00020" /> - <option name="project" value="LOCAL" /> - <updated>1569232154274</updated> - </task> - <task id="LOCAL-00021" summary="修改入库单数量使用BigDecimal类型,修改入库单添加、修改、物理类型添加和修改页面"> - <created>1569318560852</created> - <option name="number" value="00021" /> - <option name="presentableId" value="LOCAL-00021" /> - <option name="project" value="LOCAL" /> - <updated>1569318560852</updated> + <workItem from="1570581146682" duration="20927000" /> + <workItem from="1570613992837" duration="3000" /> + <workItem from="1570667742663" duration="162000" /> + <workItem from="1570667919475" duration="15928000" /> + <workItem from="1570754346827" duration="21195000" /> + <workItem from="1570840100481" duration="23954000" /> + <workItem from="1571032298609" duration="8129000" /> + <workItem from="1571043219515" duration="603000" /> + <workItem from="1571101539586" duration="10573000" /> + <workItem from="1571187054671" duration="1189000" /> + <workItem from="1571272889222" duration="603000" /> + <workItem from="1571273737925" duration="85000" /> + <workItem from="1571273837562" duration="3768000" /> + <workItem from="1571300400236" duration="564000" /> + <workItem from="1571360965270" duration="10015000" /> + <workItem from="1571618681667" duration="100000" /> + <workItem from="1571618796133" duration="5393000" /> + <workItem from="1571650852097" duration="388000" /> + <workItem from="1571730992859" duration="6211000" /> + <workItem from="1571793589446" duration="4409000" /> + <workItem from="1571802162041" duration="1239000" /> + <workItem from="1571811985419" duration="1151000" /> + <workItem from="1571813176633" duration="2109000" /> + <workItem from="1571877928640" duration="88000" /> + <workItem from="1571883105941" duration="935000" /> + <workItem from="1571884165422" duration="4991000" /> + <workItem from="1571898249991" duration="4232000" /> + <workItem from="1571983100230" duration="4800000" /> + <workItem from="1572222845790" duration="23000" /> + <workItem from="1572223191279" duration="31000" /> + <workItem from="1572241535551" duration="625000" /> + <workItem from="1572243079374" duration="68000" /> + <workItem from="1572244739518" duration="7805000" /> + <workItem from="1572309622449" duration="584000" /> + <workItem from="1572311557063" duration="1863000" /> + <workItem from="1572320193751" duration="472000" /> + <workItem from="1572320671127" duration="1982000" /> + <workItem from="1572421740780" duration="2214000" /> + <workItem from="1572508717052" duration="767000" /> + <workItem from="1572510572527" duration="589000" /> + <workItem from="1572512185944" duration="8000" /> + <workItem from="1572589020835" duration="476000" /> + <workItem from="1572590452229" duration="1502000" /> + <workItem from="1572592323148" duration="6000" /> + <workItem from="1572832658949" duration="959000" /> + <workItem from="1572837775650" duration="12521000" /> + <workItem from="1572914081530" duration="12074000" /> + <workItem from="1573434480300" duration="23000" /> + <workItem from="1573434565742" duration="27000" /> + <workItem from="1573434609619" duration="5949000" /> + <workItem from="1573443267924" duration="3068000" /> + <workItem from="1573451336746" duration="12626000" /> + <workItem from="1573519499410" duration="1633000" /> + <workItem from="1573521159413" duration="5332000" /> + <workItem from="1573634144466" duration="1079000" /> + <workItem from="1573695391377" duration="439000" /> + <workItem from="1573695840147" duration="1238000" /> + <workItem from="1573721771390" duration="57000" /> + <workItem from="1573803890850" duration="1260000" /> + <workItem from="1573805176417" duration="3000" /> + <workItem from="1574037798176" duration="319000" /> + <workItem from="1574129991269" duration="1422000" /> + <workItem from="1574149477717" duration="150000" /> + <workItem from="1574152276042" duration="2135000" /> + <workItem from="1574211087867" duration="590000" /> + <workItem from="1574211685051" duration="669000" /> + <workItem from="1574213648864" duration="15909000" /> + <workItem from="1574315910239" duration="2919000" /> + <workItem from="1574320594485" duration="4805000" /> + <workItem from="1574383470234" duration="1917000" /> + <workItem from="1574402886027" duration="352000" /> + <workItem from="1574406573271" duration="10000" /> + <workItem from="1574413187883" duration="2458000" /> + <workItem from="1574647559026" duration="1549000" /> + <workItem from="1574650217287" duration="1426000" /> + <workItem from="1574663555433" duration="234000" /> + <workItem from="1574667250107" duration="248000" /> + <workItem from="1574667819508" duration="853000" /> + <workItem from="1574668813857" duration="78000" /> + <workItem from="1574668955593" duration="4842000" /> + <workItem from="1574734862621" duration="5289000" /> + <workItem from="1574753109186" duration="1868000" /> + <workItem from="1574758859383" duration="2324000" /> + <workItem from="1574816203456" duration="3882000" /> + <workItem from="1574826942468" duration="1951000" /> + <workItem from="1574845813928" duration="13000" /> + <workItem from="1574988822426" duration="270000" /> + <workItem from="1577065229491" duration="6318000" /> + <workItem from="1577147586156" duration="4281000" /> + <workItem from="1577172416745" duration="4156000" /> + <workItem from="1577234053132" duration="26850000" /> + <workItem from="1577321748902" duration="21403000" /> + <workItem from="1577406875935" duration="16374000" /> + <workItem from="1577436625365" duration="3084000" /> + <workItem from="1577665795897" duration="4942000" /> + <workItem from="1577670757674" duration="6000" /> + <workItem from="1577670887870" duration="8057000" /> + <workItem from="1577687039415" duration="15130000" /> </task> <task id="LOCAL-00022" summary="修改物料管理中物料类型使用物料类别表,不在使用数据字典"> <created>1569395439782</created> @@ -511,9 +851,304 @@ <option name="project" value="LOCAL" /> <updated>1570582333467</updated> </task> - <option name="localTasksCounter" value="35" /> + <task id="LOCAL-00035" summary="添加流程时自动添加模块和类型 修改入库到货通知"> + <created>1570590631384</created> + <option name="number" value="00035" /> + <option name="presentableId" value="LOCAL-00035" /> + <option name="project" value="LOCAL" /> + <updated>1570590631384</updated> + </task> + <task id="LOCAL-00036" summary="修改入库单明细中 入库流程和是否质检的显示"> + <created>1570677316403</created> + <option name="number" value="00036" /> + <option name="presentableId" value="LOCAL-00036" /> + <option name="project" value="LOCAL" /> + <updated>1570677316403</updated> + </task> + <task id="LOCAL-00037" summary="修改流程明细添加时模块可修改的问题"> + <created>1570680001633</created> + <option name="number" value="00037" /> + <option name="presentableId" value="LOCAL-00037" /> + <option name="project" value="LOCAL" /> + <updated>1570680001633</updated> + </task> + <task id="LOCAL-00038" summary="修改规则配置添加时类型选择项"> + <created>1570687475164</created> + <option name="number" value="00038" /> + <option name="presentableId" value="LOCAL-00038" /> + <option name="project" value="LOCAL" /> + <updated>1570687475164</updated> + </task> + <task id="LOCAL-00039" summary="修改质检登记查询code"> + <created>1570778509824</created> + <option name="number" value="00039" /> + <option name="presentableId" value="LOCAL-00039" /> + <option name="project" value="LOCAL" /> + <updated>1570778509824</updated> + </task> + <task id="LOCAL-00040" summary="添加站台表"> + <created>1570781862179</created> + <option name="number" value="00040" /> + <option name="presentableId" value="LOCAL-00040" /> + <option name="project" value="LOCAL" /> + <updated>1570781862179</updated> + </task> + <task id="LOCAL-00041" summary="修改规则配置"> + <created>1570782180540</created> + <option name="number" value="00041" /> + <option name="presentableId" value="LOCAL-00041" /> + <option name="project" value="LOCAL" /> + <updated>1570782180540</updated> + </task> + <task id="LOCAL-00042" summary="添加仓位分配接口"> + <created>1570866304365</created> + <option name="number" value="00042" /> + <option name="presentableId" value="LOCAL-00042" /> + <option name="project" value="LOCAL" /> + <updated>1570866304365</updated> + </task> + <task id="LOCAL-00043" summary="修改入库单头尾状态更新"> + <created>1570869466088</created> + <option name="number" value="00043" /> + <option name="presentableId" value="LOCAL-00043" /> + <option name="project" value="LOCAL" /> + <updated>1570869466088</updated> + </task> + <task id="LOCAL-00044" summary="添加站台表,入库组盘头表和任务表添加站台,默认为0"> + <created>1571036164747</created> + <option name="number" value="00044" /> + <option name="presentableId" value="LOCAL-00044" /> + <option name="project" value="LOCAL" /> + <updated>1571036164747</updated> + </task> + <task id="LOCAL-00045" summary="修改任务执行接口"> + <created>1571039090453</created> + <option name="number" value="00045" /> + <option name="presentableId" value="LOCAL-00045" /> + <option name="project" value="LOCAL" /> + <updated>1571039090453</updated> + </task> + <task id="LOCAL-00046" summary="修改接口实体类 修改仓位分配接口"> + <created>1571103433656</created> + <option name="number" value="00046" /> + <option name="presentableId" value="LOCAL-00046" /> + <option name="project" value="LOCAL" /> + <updated>1571103433656</updated> + </task> + <task id="LOCAL-00047" summary="修改系统管理参数配置添加和修改页面中的模块和类型"> + <created>1571108638507</created> + <option name="number" value="00047" /> + <option name="presentableId" value="LOCAL-00047" /> + <option name="project" value="LOCAL" /> + <updated>1571108638507</updated> + </task> + <task id="LOCAL-00048" summary="修改重入和仓位下发接口"> + <created>1571127851430</created> + <option name="number" value="00048" /> + <option name="presentableId" value="LOCAL-00048" /> + <option name="project" value="LOCAL" /> + <updated>1571127851430</updated> + </task> + <task id="LOCAL-00049" summary="删除质检头表新增按钮"> + <created>1571300858040</created> + <option name="number" value="00049" /> + <option name="presentableId" value="LOCAL-00049" /> + <option name="project" value="LOCAL" /> + <updated>1571300858040</updated> + </task> + <task id="LOCAL-00050" summary="添加多环境配置文件"> + <created>1571367987564</created> + <option name="number" value="00050" /> + <option name="presentableId" value="LOCAL-00050" /> + <option name="project" value="LOCAL" /> + <updated>1571367987564</updated> + </task> + <task id="LOCAL-00051" summary="修改收货是是否收完的判断"> + <created>1571650918354</created> + <option name="number" value="00051" /> + <option name="presentableId" value="LOCAL-00051" /> + <option name="project" value="LOCAL" /> + <updated>1571650918355</updated> + </task> + <task id="LOCAL-00052" summary="修改收货是是否收完的判断"> + <created>1571651232169</created> + <option name="number" value="00052" /> + <option name="presentableId" value="LOCAL-00052" /> + <option name="project" value="LOCAL" /> + <updated>1571651232169</updated> + </task> + <task id="LOCAL-00053" summary="添加仓库复制"> + <created>1571799829411</created> + <option name="number" value="00053" /> + <option name="presentableId" value="LOCAL-00053" /> + <option name="project" value="LOCAL" /> + <updated>1571799829412</updated> + </task> + <task id="LOCAL-00054" summary="修改收货是是否手动指定库位,入库单状态的更新"> + <created>1571884236981</created> + <option name="number" value="00054" /> + <option name="presentableId" value="LOCAL-00054" /> + <option name="project" value="LOCAL" /> + <updated>1571884236981</updated> + </task> + <task id="LOCAL-00055" summary="修改容器已组盘的提示信息 修改库位生成库位编码使用库位类型编码"> + <created>1571888987512</created> + <option name="number" value="00055" /> + <option name="presentableId" value="LOCAL-00055" /> + <option name="project" value="LOCAL" /> + <updated>1571888987512</updated> + </task> + <task id="LOCAL-00056" summary="修改仓库复制"> + <created>1571900347581</created> + <option name="number" value="00056" /> + <option name="presentableId" value="LOCAL-00056" /> + <option name="project" value="LOCAL" /> + <updated>1571900347582</updated> + </task> + <task id="LOCAL-00057" summary="修改返回类型"> + <created>1571901488341</created> + <option name="number" value="00057" /> + <option name="presentableId" value="LOCAL-00057" /> + <option name="project" value="LOCAL" /> + <updated>1571901488341</updated> + </task> + <task id="LOCAL-00058" summary="修改库位监控"> + <created>1572321206210</created> + <option name="number" value="00058" /> + <option name="presentableId" value="LOCAL-00058" /> + <option name="project" value="LOCAL" /> + <updated>1572321206210</updated> + </task> + <task id="LOCAL-00059" summary="修改库位监控tips"> + <created>1572322002967</created> + <option name="number" value="00059" /> + <option name="presentableId" value="LOCAL-00059" /> + <option name="project" value="LOCAL" /> + <updated>1572322002967</updated> + </task> + <task id="LOCAL-00060" summary="修改收发送邮件注释"> + <created>1572510829993</created> + <option name="number" value="00060" /> + <option name="presentableId" value="LOCAL-00060" /> + <option name="project" value="LOCAL" /> + <updated>1572510829993</updated> + </task> + <task id="LOCAL-00061" summary="添加入库下发接口"> + <created>1572937952886</created> + <option name="number" value="00061" /> + <option name="presentableId" value="LOCAL-00061" /> + <option name="project" value="LOCAL" /> + <updated>1572937952886</updated> + </task> + <task id="LOCAL-00062" summary="修改入库多仓库报错"> + <created>1573439368497</created> + <option name="number" value="00062" /> + <option name="presentableId" value="LOCAL-00062" /> + <option name="project" value="LOCAL" /> + <updated>1573439368497</updated> + </task> + <task id="LOCAL-00063" summary="添加物料最大量最小量预警、空库位预警"> + <created>1573526280256</created> + <option name="number" value="00063" /> + <option name="presentableId" value="LOCAL-00063" /> + <option name="project" value="LOCAL" /> + <updated>1573526280257</updated> + </task> + <task id="LOCAL-00064" summary="添加基础数据接口和入库单下发下发接口"> + <created>1574232706585</created> + <option name="number" value="00064" /> + <option name="presentableId" value="LOCAL-00064" /> + <option name="project" value="LOCAL" /> + <updated>1574232706585</updated> + </task> + <task id="LOCAL-00065" summary="更新消息确认,发生错误后拒绝消息,消息被队列丢弃"> + <created>1574236213373</created> + <option name="number" value="00065" /> + <option name="presentableId" value="LOCAL-00065" /> + <option name="project" value="LOCAL" /> + <updated>1574236213373</updated> + </task> + <task id="LOCAL-00066" summary="修改时间搜索无效,添加入库单没有明细不可以提交审核"> + <created>1574750425657</created> + <option name="number" value="00066" /> + <option name="presentableId" value="LOCAL-00066" /> + <option name="project" value="LOCAL" /> + <updated>1574750425657</updated> + </task> + <task id="LOCAL-00067" summary="修复接口bug,新增库存同步物料同步用户同步接口"> + <created>1577352141668</created> + <option name="number" value="00067" /> + <option name="presentableId" value="LOCAL-00067" /> + <option name="project" value="LOCAL" /> + <updated>1577352141668</updated> + </task> + <task id="LOCAL-00068" summary="托盘条码打印"> + <created>1577439445441</created> + <option name="number" value="00068" /> + <option name="presentableId" value="LOCAL-00068" /> + <option name="project" value="LOCAL" /> + <updated>1577439445443</updated> + </task> + <task id="LOCAL-00069" summary="托盘条码打印"> + <created>1577668882647</created> + <option name="number" value="00069" /> + <option name="presentableId" value="LOCAL-00069" /> + <option name="project" value="LOCAL" /> + <updated>1577668882648</updated> + </task> + <task id="LOCAL-00070" summary="托盘条码打印"> + <created>1577669193189</created> + <option name="number" value="00070" /> + <option name="presentableId" value="LOCAL-00070" /> + <option name="project" value="LOCAL" /> + <updated>1577669193189</updated> + </task> + <option name="localTasksCounter" value="71" /> <servers /> </component> + <component name="TimeTrackingManager"> + <option name="totallyTimeSpent" value="110601000" /> + </component> + <component name="ToolWindowManager"> + <frame x="-7" y="-7" width="1550" height="838" extended-state="6" /> + <editor active="true" /> + <layout> + <window_info content_ui="combo" id="Project" order="0" sideWeight="0.4978903" visible="true" weight="0.27680966" /> + <window_info id="Structure" order="1" side_tool="true" weight="0.25" /> + <window_info id="Designer" order="2" /> + <window_info id="Image Layers" order="3" /> + <window_info id="Capture Tool" order="4" /> + <window_info id="UI Designer" order="5" /> + <window_info id="Favorites" order="6" sideWeight="0.5021097" side_tool="true" weight="0.308311" /> + <window_info id="Web" order="7" side_tool="true" /> + <window_info anchor="bottom" id="Message" order="0" /> + <window_info anchor="bottom" id="Find" order="1" /> + <window_info anchor="bottom" id="Run" order="2" /> + <window_info anchor="bottom" id="Debug" order="3" weight="0.4" /> + <window_info anchor="bottom" id="Cvs" order="4" weight="0.25" /> + <window_info anchor="bottom" id="Inspection" order="5" weight="0.4" /> + <window_info anchor="bottom" id="TODO" order="6" /> + <window_info anchor="bottom" id="Spring" order="7" /> + <window_info anchor="bottom" id="Terminal" order="8" /> + <window_info anchor="bottom" id="Docker" order="9" show_stripe_button="false" /> + <window_info anchor="bottom" id="Event Log" order="10" sideWeight="0.09048257" side_tool="true" weight="0.44192636" /> + <window_info anchor="bottom" id="Java Enterprise" order="11" /> + <window_info anchor="bottom" id="Database Changes" order="12" /> + <window_info anchor="bottom" id="Version Control" order="13" sideWeight="0.91152817" weight="0.3286119" /> + <window_info anchor="bottom" id="Run Dashboard" order="14" sideWeight="0.9095174" weight="0.509915" /> + <window_info anchor="bottom" id="Messages" order="15" sideWeight="0.49932975" weight="0.3286119" /> + <window_info anchor="right" id="Commander" internal_type="SLIDING" order="0" type="SLIDING" weight="0.4" /> + <window_info anchor="right" id="Ant Build" order="1" weight="0.25" /> + <window_info anchor="right" content_ui="combo" id="Hierarchy" order="2" weight="0.25" /> + <window_info anchor="right" id="Maven" order="3" weight="0.3297587" /> + <window_info anchor="right" id="Palette" order="4" /> + <window_info anchor="right" id="Capture Analysis" order="5" /> + <window_info anchor="right" id="Database" order="6" /> + <window_info anchor="right" id="Palette	" order="7" /> + <window_info anchor="right" id="Theme Preview" order="8" /> + <window_info anchor="right" id="Bean Validation" order="9" weight="0.3297587" /> + </layout> + </component> <component name="TypeScriptGeneratedFilesManager"> <option name="version" value="1" /> </component> @@ -523,41 +1158,60 @@ <entry key="MAIN"> <value> <State> + <option name="RECENTLY_FILTERED_USER_GROUPS"> + <collection /> + </option> + <option name="RECENTLY_FILTERED_BRANCH_GROUPS"> + <collection /> + </option> <option name="COLUMN_ORDER" /> </State> </value> </entry> </map> </option> + <option name="RECENT_FILTERS"> + <map> + <entry key="Branch"> + <value> + <list /> + </value> + </entry> + <entry key="User"> + <value> + <list /> + </value> + </entry> + </map> + </option> </component> <component name="VcsManagerConfiguration"> - <option name="ADD_EXTERNAL_FILES_SILENTLY" value="true" /> - <MESSAGE value="修改入库单页面" /> - <MESSAGE value="修改入库单页面,入库单审核,质检页面后台跳转接口" /> - <MESSAGE value="修改 入库收货,生成上架任务自动执行定位" /> - <MESSAGE value="修复商品管理、物料类别种bug" /> - <MESSAGE value="修改入库明细添加加载定位规则的错误" /> - <MESSAGE value="添加入库质检行内编辑" /> - <MESSAGE value="行内编辑完成后更新数据库" /> - <MESSAGE value="修改质检登记使用bootstarp boot原生方法初始化" /> - <MESSAGE value="表单头创建时间添加默认创建时间 开始时间默认提前一周,结束时间默认当天" /> - <MESSAGE value="配置中所有页面添加重置按钮" /> - <MESSAGE value="收货添加定位、取消定位、取消组盘按钮" /> - <MESSAGE value="修改入库单数量使用BigDecimal类型,修改入库单添加、修改、物理类型添加和修改页面" /> - <MESSAGE value="修改物料管理中物料类型使用物料类别表,不在使用数据字典" /> - <MESSAGE value="修改波次主表、波次流程头表、波次流程明细页面" /> - <MESSAGE value="修改入库首选项修改添加模块为select" /> - <MESSAGE value="修改任务取消入库组盘状态不回滚,修改任务完成入库单状态不完成" /> - <MESSAGE value="添加自动生成容器编码" /> - <MESSAGE value="修改入库首选项页面,规则查询使用数据字典值,表格值显示修改" /> - <MESSAGE value="入库单添加重置按钮,入库单历史添加上游单号搜索" /> - <MESSAGE value="添加取消入库组盘时容器为临时容器,删除容器" /> - <MESSAGE value="出库完成时删除临时容器" /> - <MESSAGE value="修改容器新增时容器enable状态" /> - <MESSAGE value="修改入库组盘页面中任务类型的显示问题 修改任务完成不修改入库组盘状态的问题" /> - <MESSAGE value="添加根据code查询物料" /> - <MESSAGE value="添加根据容器编码查找容器的方法 配置规则添加自动添加模块类型 添加是否自动生成临时容器" /> - <option name="LAST_COMMIT_MESSAGE" value="添加根据容器编码查找容器的方法 配置规则添加自动添加模块类型 添加是否自动生成临时容器" /> + <MESSAGE value="添加站台表,入库组盘头表和任务表添加站台,默认为0" /> + <MESSAGE value="修改任务执行接口" /> + <MESSAGE value="修改接口实体类" /> + <MESSAGE value="修改接口实体类 修改仓位分配接口" /> + <MESSAGE value="修改系统管理参数配置添加和修改页面中的模块和类型" /> + <MESSAGE value="修改重入和仓位下发接口" /> + <MESSAGE value="删除质检头表新增按钮" /> + <MESSAGE value="添加多环境配置文件" /> + <MESSAGE value="修改收货是是否收完的判断" /> + <MESSAGE value="添加仓库复制" /> + <MESSAGE value="修改收货是是否手动指定库位,入库单状态的更新" /> + <MESSAGE value="修改容器已组盘的提示信息 修改库位生成库位编码使用库位类型编码" /> + <MESSAGE value="修改仓库复制" /> + <MESSAGE value="修改返回类型" /> + <MESSAGE value="修改库位监控" /> + <MESSAGE value="修改库位监控tips" /> + <MESSAGE value="修改收发送邮件注释" /> + <MESSAGE value="添加入库下发接口" /> + <MESSAGE value="修改入库多仓库报错" /> + <MESSAGE value="添加物料最大量最小量预警、空库位预警" /> + <MESSAGE value="添加基础数据接口和入库单下发下发接口" /> + <MESSAGE value="更新消息确认,发生错误后拒绝消息,消息被队列丢弃" /> + <MESSAGE value="修改时间搜索无效,添加入库单没有明细不可以提交审核" /> + <MESSAGE value="修复接口bug,新增库存同步物料同步用户同步接口" /> + <MESSAGE value="托盘条码打印" /> + <option name="LAST_COMMIT_MESSAGE" value="托盘条码打印" /> </component> <component name="XDebuggerManager"> <breakpoint-manager> @@ -565,42 +1219,94 @@ <line-breakpoint enabled="true" type="java-line"> <url>file://$PROJECT_DIR$/src/main/java/com/huaheng/pc/config/bom/controller/BomHeaderController.java</url> <line>164</line> + <properties /> <option name="timeStamp" value="24" /> </line-breakpoint> <line-breakpoint enabled="true" type="java-line"> <url>file://$PROJECT_DIR$/src/main/java/com/huaheng/pc/config/material/controller/MaterialController.java</url> - <line>150</line> + <line>165</line> + <properties /> <option name="timeStamp" value="26" /> </line-breakpoint> <line-breakpoint enabled="true" type="java-line"> <url>file://$PROJECT_DIR$/src/main/java/com/huaheng/pc/check/checkingRegister/controller/CheckingRegisterController.java</url> - <line>174</line> + <line>179</line> + <properties /> <option name="timeStamp" value="28" /> </line-breakpoint> <line-breakpoint enabled="true" type="java-line"> + <url>file://$PROJECT_DIR$/src/main/java/com/huaheng/pc/config/configValue/controller/ConfigValueController.java</url> + <line>141</line> + <properties /> + <option name="timeStamp" value="66" /> + </line-breakpoint> + <line-breakpoint enabled="true" type="java-line"> <url>file://$PROJECT_DIR$/src/main/java/com/huaheng/pc/task/taskHeader/service/TaskHeaderServiceImpl.java</url> - <line>631</line> - <option name="timeStamp" value="48" /> + <line>190</line> + <properties /> + <option name="timeStamp" value="87" /> </line-breakpoint> <line-breakpoint enabled="true" type="java-line"> - <url>file://$PROJECT_DIR$/src/main/java/com/huaheng/pc/receipt/receiptContainerDetail/service/ReceiptContainerDetailServiceImpl.java</url> - <line>56</line> - <option name="timeStamp" value="49" /> + <url>file://$PROJECT_DIR$/src/main/java/com/huaheng/api/wcs/controller/WarecellAllocation.java</url> + <line>35</line> + <properties /> + <option name="timeStamp" value="101" /> </line-breakpoint> <line-breakpoint enabled="true" type="java-line"> - <url>file://$PROJECT_DIR$/src/main/java/com/huaheng/pc/receipt/receiptContainerDetail/service/ReceiptContainerDetailServiceImpl.java</url> - <line>84</line> - <option name="timeStamp" value="51" /> + <url>file://$PROJECT_DIR$/src/main/java/com/huaheng/api/wcs/service/warecellAllocation/WarecellAllocationServiceImpl.java</url> + <line>194</line> + <properties> + <option name="lambda-ordinal" value="-1" /> + </properties> + <option name="timeStamp" value="112" /> </line-breakpoint> <line-breakpoint enabled="true" type="java-line"> - <url>file://$PROJECT_DIR$/src/main/java/com/huaheng/pc/config/statusFlow/controller/StatusFlowHeaderController.java</url> - <line>86</line> - <option name="timeStamp" value="57" /> + <url>file://$PROJECT_DIR$/src/main/java/com/huaheng/pc/config/location/service/LocationServiceImpl.java</url> + <line>107</line> + <properties /> + <option name="timeStamp" value="121" /> </line-breakpoint> <line-breakpoint enabled="true" type="java-line"> - <url>file://$PROJECT_DIR$/src/main/java/com/huaheng/pc/check/checkingRegister/controller/CheckingRegisterController.java</url> - <line>145</line> - <option name="timeStamp" value="62" /> + <url>file://$PROJECT_DIR$/src/main/java/com/huaheng/pc/config/location/controller/LocationController.java</url> + <line>312</line> + <properties /> + <option name="timeStamp" value="123" /> + </line-breakpoint> + <line-breakpoint enabled="true" type="java-line"> + <url>file://$PROJECT_DIR$/src/main/java/com/huaheng/pc/config/configWarning/service/ConfigWarningService.java</url> + <line>110</line> + <properties /> + <option name="timeStamp" value="124" /> + </line-breakpoint> + <line-breakpoint enabled="true" type="java-line"> + <url>file://$PROJECT_DIR$/src/main/java/com/huaheng/pc/config/configWarning/service/ConfigWarningService.java</url> + <line>140</line> + <properties /> + <option name="timeStamp" value="125" /> + </line-breakpoint> + <line-breakpoint enabled="true" type="java-line"> + <url>file://$PROJECT_DIR$/src/main/java/com/huaheng/pc/config/configWarning/service/ConfigWarningService.java</url> + <line>118</line> + <properties /> + <option name="timeStamp" value="126" /> + </line-breakpoint> + <line-breakpoint enabled="true" type="java-line"> + <url>file://$PROJECT_DIR$/src/main/java/com/huaheng/pc/config/configWarning/service/ConfigWarningService.java</url> + <line>109</line> + <properties /> + <option name="timeStamp" value="127" /> + </line-breakpoint> + <line-breakpoint enabled="true" type="java-line"> + <url>file://$PROJECT_DIR$/src/main/java/com/huaheng/pc/task/taskHeader/service/TaskHeaderServiceImpl.java</url> + <line>709</line> + <properties /> + <option name="timeStamp" value="135" /> + </line-breakpoint> + <line-breakpoint enabled="true" type="java-line"> + <url>file://$PROJECT_DIR$/src/main/java/com/huaheng/pc/receipt/receiptHeader/controller/ReceiptHeaderController.java</url> + <line>198</line> + <properties /> + <option name="timeStamp" value="139" /> </line-breakpoint> <line-breakpoint enabled="true" type="javascript"> <url>file://$PROJECT_DIR$/src/main/resources/templates/check/checkingRegister/checkingRegister.html</url> @@ -621,8 +1327,431 @@ </watches-manager> </component> <component name="com.intellij.coverage.CoverageDataManagerImpl"> - <SUITE FILE_PATH="coverage/huaheng$HuaHengApplication.ic" NAME="HuaHengApplication Coverage Results" MODIFIED="1568251952497" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="idea" COVERAGE_BY_TEST_ENABLED="false" COVERAGE_TRACING_ENABLED="false"> + <SUITE FILE_PATH="coverage/huaheng$HuaHengApplication.ic" NAME="HuaHengApplication Coverage Results" MODIFIED="1570677350612" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="idea" COVERAGE_BY_TEST_ENABLED="false" COVERAGE_TRACING_ENABLED="false"> <FILTER>com.huaheng.*</FILTER> </SUITE> </component> + <component name="editorHistoryManager"> + <entry file="file://$PROJECT_DIR$/src/main/java/com/huaheng/api/general/domain/ReceiptDomain.java"> + <provider selected="true" editor-type-id="text-editor"> + <state relative-caret-position="209"> + <caret line="16" column="46" selection-start-line="16" selection-start-column="32" selection-end-line="16" selection-end-column="46" /> + </state> + </provider> + </entry> + <entry file="file://$PROJECT_DIR$/src/main/java/com/huaheng/api/general/controller/LoginApi.java"> + <provider selected="true" editor-type-id="text-editor"> + <state relative-caret-position="186"> + <caret line="31" column="32" selection-start-line="31" selection-start-column="24" selection-end-line="31" selection-end-column="32" /> + </state> + </provider> + </entry> + <entry file="file://$PROJECT_DIR$/src/main/java/com/huaheng/pc/shipment/shipmentHeader/service/ShipmentHeaderServiceImpl.java"> + <provider selected="true" editor-type-id="text-editor"> + <state relative-caret-position="240"> + <caret line="89" column="9" lean-forward="true" selection-start-line="89" selection-start-column="9" selection-end-line="89" selection-end-column="9" /> + </state> + </provider> + </entry> + <entry file="file://$PROJECT_DIR$/src/main/java/com/huaheng/api/general/domain/ShipmentDomain.java"> + <provider selected="true" editor-type-id="text-editor"> + <state relative-caret-position="152"> + <caret line="12" column="48" selection-start-line="12" selection-start-column="33" selection-end-line="12" selection-end-column="48" /> + </state> + </provider> + </entry> + <entry file="file://$PROJECT_DIR$/src/main/java/com/huaheng/pc/shipment/shipmentHeader/service/ShipmentHeaderService.java"> + <provider selected="true" editor-type-id="text-editor"> + <state relative-caret-position="126"> + <caret line="15" column="11" selection-start-line="15" selection-start-column="11" selection-end-line="15" selection-end-column="11" /> + </state> + </provider> + </entry> + <entry file="file://$PROJECT_DIR$/src/main/resources/mybatis/shipment/ShipmentDetailMapper.xml"> + <provider selected="true" editor-type-id="text-editor"> + <state relative-caret-position="160"> + <caret line="140" column="2" selection-start-line="140" selection-start-column="2" selection-end-line="140" selection-end-column="2" /> + </state> + </provider> + </entry> + <entry file="file://$PROJECT_DIR$/src/main/java/com/huaheng/pc/shipment/shipmentDetail/mapper/ShipmentDetailMapper.java"> + <provider selected="true" editor-type-id="text-editor"> + <state relative-caret-position="214"> + <caret line="24" column="8" selection-start-line="24" selection-start-column="8" selection-end-line="24" selection-end-column="8" /> + </state> + </provider> + </entry> + <entry file="file://$PROJECT_DIR$/src/main/java/com/huaheng/pc/shipment/shipmentDetail/service/ShipmentDetailService.java"> + <provider selected="true" editor-type-id="text-editor"> + <state relative-caret-position="290"> + <caret line="38" column="62" selection-start-line="38" selection-start-column="47" selection-end-line="38" selection-end-column="62" /> + </state> + </provider> + </entry> + <entry file="file://$PROJECT_DIR$/src/main/java/com/huaheng/pc/shipment/shipmentDetail/service/ShipmentDetailServiceImpl.java"> + <provider selected="true" editor-type-id="text-editor"> + <state relative-caret-position="233"> + <caret line="304" column="21" lean-forward="true" selection-start-line="304" selection-start-column="21" selection-end-line="304" selection-end-column="21" /> + </state> + </provider> + </entry> + <entry file="file://$PROJECT_DIR$/src/main/java/com/huaheng/api/general/service/ShipmentApiService.java"> + <provider selected="true" editor-type-id="text-editor"> + <state relative-caret-position="230"> + <caret line="136" column="52" selection-start-line="136" selection-start-column="34" selection-end-line="136" selection-end-column="52" /> + </state> + </provider> + </entry> + <entry file="file://$PROJECT_DIR$/src/main/java/com/huaheng/api/general/controller/ShipmentApi.java"> + <provider selected="true" editor-type-id="text-editor"> + <state relative-caret-position="266"> + <caret line="31" column="55" lean-forward="true" selection-start-line="31" selection-start-column="55" selection-end-line="31" selection-end-column="55" /> + </state> + </provider> + </entry> + <entry file="file://$PROJECT_DIR$/src/main/java/com/huaheng/api/general/service/ReceiptApiService.java"> + <provider selected="true" editor-type-id="text-editor"> + <state relative-caret-position="236"> + <caret line="111" column="56" selection-start-line="111" selection-start-column="43" selection-end-line="111" selection-end-column="56" /> + </state> + </provider> + </entry> + <entry file="file://$PROJECT_DIR$/src/main/java/com/huaheng/api/general/controller/ReceiptApi.java"> + <provider selected="true" editor-type-id="text-editor"> + <state relative-caret-position="247"> + <caret line="32" column="52" selection-start-line="32" selection-start-column="52" selection-end-line="32" selection-end-column="52" /> + </state> + </provider> + </entry> + <entry file="file://$PROJECT_DIR$/src/main/java/com/huaheng/pc/system/user/domain/User.java"> + <provider selected="true" editor-type-id="text-editor"> + <state relative-caret-position="209"> + <caret line="23" column="13" selection-start-line="23" selection-start-column="13" selection-end-line="23" selection-end-column="13" /> + </state> + </provider> + </entry> + <entry file="jar://$MAVEN_REPOSITORY$/com/baomidou/mybatis-plus-extension/3.1.2/mybatis-plus-extension-3.1.2.jar!/com/baomidou/mybatisplus/extension/service/impl/ServiceImpl.class"> + <provider selected="true" editor-type-id="text-editor"> + <state relative-caret-position="114"> + <caret line="36" column="13" selection-start-line="36" selection-start-column="13" selection-end-line="36" selection-end-column="13" /> + </state> + </provider> + </entry> + <entry file="file://$PROJECT_DIR$/src/main/resources/mybatis/system/UserMapper.xml"> + <provider selected="true" editor-type-id="text-editor"> + <state relative-caret-position="149"> + <caret line="43" column="4" selection-start-line="43" selection-start-column="4" selection-end-line="43" selection-end-column="4" /> + </state> + </provider> + </entry> + <entry file="file://$PROJECT_DIR$/src/main/java/com/huaheng/pc/system/user/service/IUserService.java"> + <provider selected="true" editor-type-id="text-editor"> + <state relative-caret-position="171"> + <caret line="18" column="29" lean-forward="true" selection-start-line="18" selection-start-column="29" selection-end-line="18" selection-end-column="29" /> + </state> + </provider> + </entry> + <entry file="file://$PROJECT_DIR$/src/main/java/com/huaheng/pc/config/material/service/MaterialService.java"> + <provider selected="true" editor-type-id="text-editor"> + <state relative-caret-position="-152"> + <caret line="8" column="60" lean-forward="true" selection-start-line="8" selection-start-column="60" selection-end-line="8" selection-end-column="60" /> + </state> + </provider> + </entry> + <entry file="file://$PROJECT_DIR$/src/main/java/com/huaheng/pc/config/material/service/MaterialServiceImpl.java"> + <provider selected="true" editor-type-id="text-editor"> + <state relative-caret-position="95"> + <caret line="27" column="89" selection-start-line="27" selection-start-column="32" selection-end-line="27" selection-end-column="89" /> + </state> + </provider> + </entry> + <entry file="file://$PROJECT_DIR$/src/main/java/com/huaheng/pc/system/user/controller/UserController.java"> + <provider selected="true" editor-type-id="text-editor"> + <state relative-caret-position="206"> + <caret line="71" column="46" selection-start-line="71" selection-start-column="46" selection-end-line="71" selection-end-column="46" /> + </state> + </provider> + </entry> + <entry file="file://$PROJECT_DIR$/src/main/java/com/huaheng/pc/system/user/mapper/UserMapper.java"> + <provider selected="true" editor-type-id="text-editor"> + <state relative-caret-position="149"> + <caret line="23" column="22" selection-start-line="23" selection-start-column="22" selection-end-line="23" selection-end-column="22" /> + </state> + </provider> + </entry> + <entry file="file://$PROJECT_DIR$/src/main/java/com/huaheng/pc/system/user/service/UserServiceImpl.java"> + <provider selected="true" editor-type-id="text-editor"> + <state relative-caret-position="19"> + <caret line="42" column="28" lean-forward="true" selection-start-line="42" selection-start-column="28" selection-end-line="42" selection-end-column="28" /> + <folding> + <element signature="e#5266#5267#0" expanded="true" /> + <element signature="e#5320#5321#0" expanded="true" /> + <element signature="e#5486#5487#0" expanded="true" /> + <element signature="e#5551#5552#0" expanded="true" /> + <element signature="e#5726#5727#0" expanded="true" /> + <element signature="e#5796#5797#0" expanded="true" /> + <element signature="e#5950#5951#0" expanded="true" /> + <element signature="e#6008#6009#0" expanded="true" /> + <element signature="e#6166#6167#0" expanded="true" /> + <element signature="e#6222#6223#0" expanded="true" /> + <element signature="e#8470#8471#0" expanded="true" /> + <element signature="e#8520#8521#0" expanded="true" /> + <element signature="e#17198#17199#0" expanded="true" /> + <element signature="e#17266#17267#0" expanded="true" /> + </folding> + </state> + </provider> + </entry> + <entry file="file://$PROJECT_DIR$/src/main/java/com/huaheng/api/general/domain/Receipt.java"> + <provider selected="true" editor-type-id="text-editor"> + <state relative-caret-position="171"> + <caret line="13" column="13" selection-start-line="13" selection-start-column="13" selection-end-line="13" selection-end-column="13" /> + </state> + </provider> + </entry> + <entry file="file://$PROJECT_DIR$/src/main/java/com/huaheng/api/general/controller/BasicDataApi.java"> + <provider selected="true" editor-type-id="text-editor"> + <state relative-caret-position="2907"> + <caret line="170" column="1" selection-start-line="170" selection-start-column="1" selection-end-line="170" selection-end-column="1" /> + </state> + </provider> + </entry> + <entry file="file://$PROJECT_DIR$/src/main/java/com/huaheng/api/general/domain/InventoryDomain.java"> + <provider selected="true" editor-type-id="text-editor"> + <state relative-caret-position="114"> + <caret line="13" column="57" selection-start-line="13" selection-start-column="57" selection-end-line="13" selection-end-column="57" /> + </state> + </provider> + </entry> + <entry file="file://$PROJECT_DIR$/src/main/java/com/huaheng/api/general/service/BasicDataApiService.java"> + <provider selected="true" editor-type-id="text-editor"> + <state relative-caret-position="105"> + <caret line="657" column="76" selection-start-line="657" selection-start-column="76" selection-end-line="657" selection-end-column="76" /> + </state> + </provider> + </entry> + <entry file="jar://$MAVEN_REPOSITORY$/com/baomidou/mybatis-plus-extension/3.1.2/mybatis-plus-extension-3.1.2.jar!/com/baomidou/mybatisplus/extension/service/IService.class"> + <provider selected="true" editor-type-id="text-editor"> + <state relative-caret-position="171"> + <caret line="70" column="6" selection-start-line="70" selection-start-column="6" selection-end-line="70" selection-end-column="6" /> + </state> + </provider> + </entry> + <entry file="file://$PROJECT_DIR$/src/main/java/com/huaheng/pc/config/container/service/ContainerService.java"> + <provider selected="true" editor-type-id="text-editor"> + <state relative-caret-position="76"> + <caret line="9" column="17" selection-start-line="9" selection-start-column="17" selection-end-line="9" selection-end-column="17" /> + </state> + </provider> + </entry> + <entry file="file://$PROJECT_DIR$/src/main/java/com/huaheng/pc/inventory/inventoryTransaction/service/InventoryTransactionService.java"> + <provider selected="true" editor-type-id="text-editor"> + <state relative-caret-position="57"> + <caret line="4" column="17" selection-start-line="4" selection-start-column="17" selection-end-line="4" selection-end-column="17" /> + </state> + </provider> + </entry> + <entry file="file://$PROJECT_DIR$/src/main/resources/templates/inventory/inventoryTransaction/inventoryTransaction.html"> + <provider selected="true" editor-type-id="text-editor"> + <state relative-caret-position="391"> + <caret line="322" column="10" lean-forward="true" selection-start-line="310" selection-start-column="7" selection-end-line="322" selection-end-column="10" /> + </state> + </provider> + </entry> + <entry file="file://$APPLICATION_HOME_DIR$/plugins/JavaScriptLanguage/jsLanguageServicesImpl/external/lib.es5.d.ts"> + <provider selected="true" editor-type-id="text-editor"> + <state relative-caret-position="140"> + <caret line="472" column="4" selection-start-line="472" selection-start-column="4" selection-end-line="472" selection-end-column="4" /> + </state> + </provider> + </entry> + <entry file="file://$PROJECT_DIR$/src/main/resources/static/js/plugins/metisMenu/jquery.metisMenu.js"> + <provider selected="true" editor-type-id="text-editor"> + <state relative-caret-position="128"> + <caret line="101" column="8" selection-start-line="101" selection-start-column="8" selection-end-line="101" selection-end-column="8" /> + </state> + </provider> + </entry> + <entry file="file://$APPLICATION_HOME_DIR$/plugins/JavaScriptLanguage/jsLanguageServicesImpl/external/lib.dom.d.ts"> + <provider selected="true" editor-type-id="text-editor"> + <state relative-caret-position="128"> + <caret line="10712" column="13" selection-start-line="10712" selection-start-column="13" selection-end-line="10712" selection-end-column="13" /> + </state> + </provider> + </entry> + <entry file="file://$PROJECT_DIR$/src/main/resources/static/js/qrcode/qrcode.min.js"> + <provider selected="true" editor-type-id="text-editor"> + <state> + <caret column="4" selection-start-column="4" selection-end-column="4" /> + </state> + </provider> + </entry> + <entry file="file://$PROJECT_DIR$/src/main/java/com/huaheng/pc/inventory/inventoryTransaction/controller/InventoryTransactionController.java"> + <provider selected="true" editor-type-id="text-editor"> + <state relative-caret-position="-872"> + <caret line="41" column="33" lean-forward="true" selection-start-line="41" selection-start-column="33" selection-end-line="41" selection-end-column="33" /> + </state> + </provider> + </entry> + <entry file="file://$PROJECT_DIR$/src/main/resources/templates/receipt/receiptHeader/receiptHeader.html"> + <provider selected="true" editor-type-id="text-editor"> + <state relative-caret-position="152"> + <caret line="675" column="43" lean-forward="true" selection-start-line="675" selection-start-column="43" selection-end-line="675" selection-end-column="43" /> + </state> + </provider> + </entry> + <entry file="file://$PROJECT_DIR$/src/main/resources/templates/receipt/receiptHeader/add.html"> + <provider selected="true" editor-type-id="text-editor"> + <state relative-caret-position="-962" /> + </provider> + </entry> + <entry file="file://$PROJECT_DIR$/src/main/resources/static/js/echarts/echarts.js"> + <provider selected="true" editor-type-id="text-editor"> + <state relative-caret-position="19"> + <caret line="30207" selection-start-line="30207" selection-end-line="30207" /> + </state> + </provider> + </entry> + <entry file="file://$PROJECT_DIR$/src/main/resources/templates/receipt/receiptHeader/report.html"> + <provider selected="true" editor-type-id="text-editor"> + <state relative-caret-position="225"> + <caret line="70" column="4" lean-forward="true" selection-start-line="70" selection-start-column="4" selection-end-line="70" selection-end-column="22" /> + <folding> + <element signature="n#style#0;n#span#1;n#td#0;n#tr#0;n#thead#0;n#table#0;n#div#0;n#div#0;n#body#0;n#html#0;n#!!top" expanded="true" /> + </folding> + </state> + </provider> + </entry> + <entry file="file://$USER_HOME$/Desktop/长沙华恒企网2.0_new/答题HTML/答题HTML/answer.html"> + <provider selected="true" editor-type-id="text-editor"> + <state relative-caret-position="-171" /> + </provider> + </entry> + <entry file="file://$PROJECT_DIR$/src/main/resources/templates/config/container/container.html"> + <provider selected="true" editor-type-id="text-editor"> + <state relative-caret-position="1292"> + <caret line="68" column="44" selection-start-line="68" selection-start-column="35" selection-end-line="68" selection-end-column="44" /> + </state> + </provider> + </entry> + <entry file="file://$PROJECT_DIR$/src/main/java/com/huaheng/pc/config/container/controller/ContainerController.java"> + <provider selected="true" editor-type-id="text-editor"> + <state relative-caret-position="228"> + <caret line="41" column="29" selection-start-line="41" selection-start-column="29" selection-end-line="41" selection-end-column="38" /> + </state> + </provider> + </entry> + <entry file="file://$PROJECT_DIR$/src/main/resources/static/js/jquery.jqprint-0.3.js"> + <provider selected="true" editor-type-id="text-editor"> + <state relative-caret-position="-316"> + <caret line="43" column="118" selection-start-line="43" selection-start-column="113" selection-end-line="43" selection-end-column="118" /> + </state> + </provider> + </entry> + <entry file="file://$APPLICATION_HOME_DIR$/plugins/JavaScriptLanguage/jsLanguageServicesImpl/external/browser.d.ts"> + <provider selected="true" editor-type-id="text-editor"> + <state relative-caret-position="155"> + <caret line="46" column="4" selection-start-line="46" selection-start-column="4" selection-end-line="46" selection-end-column="4" /> + </state> + </provider> + </entry> + <entry file="file://$PROJECT_DIR$/src/main/resources/templates/inventory/inventoryTransaction/report.html"> + <provider selected="true" editor-type-id="text-editor"> + <state relative-caret-position="147"> + <caret line="98" column="13" selection-start-line="98" selection-start-column="13" selection-end-line="98" selection-end-column="13" /> + <folding> + <element signature="n#style#0;n#div#0;n#body#0;n#html#0;n#!!top" expanded="true" /> + <element signature="n#style#0;n#span#0;n#div#0;n#body#0;n#html#0;n#!!top" expanded="true" /> + <element signature="n#style#0;n#div#1;n#body#0;n#html#0;n#!!top" expanded="true" /> + <element signature="n#style#0;n#td#1;n#tr#2;n#tbody#0;n#table#0;n#div#0;n#div#1;n#body#0;n#html#0;n#!!top" expanded="true" /> + </folding> + </state> + </provider> + </entry> + <entry file="file://$USER_HOME$/Desktop/boot/boot/打印二维码 - 多个组2.html"> + <provider selected="true" editor-type-id="text-editor"> + <state relative-caret-position="241"> + <caret line="47" column="36" lean-forward="true" selection-start-line="47" selection-start-column="36" selection-end-line="47" selection-end-column="36" /> + <folding> + <element signature="n#style#0;n#div#0;n#body#0;n#html#0;n#!!top" expanded="true" /> + <element signature="n#style#0;n#div#0;n#div#0;n#body#0;n#html#0;n#!!top" expanded="true" /> + <element signature="n#style#0;n#caption#0;n#table#0;n#div#1;n#div#1;n#div#0;n#body#0;n#html#0;n#!!top" expanded="true" /> + <element signature="n#style#0;n#td#1;n#tr#0;n#tbody#0;n#table#0;n#div#1;n#div#1;n#div#0;n#body#0;n#html#0;n#!!top" expanded="true" /> + <element signature="n#style#0;n#tr#1;n#tbody#0;n#table#0;n#div#1;n#div#1;n#div#0;n#body#0;n#html#0;n#!!top" expanded="true" /> + <element signature="n#style#0;n#td#1;n#tr#1;n#tbody#0;n#table#0;n#div#1;n#div#1;n#div#0;n#body#0;n#html#0;n#!!top" expanded="true" /> + <element signature="n#style#0;n#td#2;n#tr#1;n#tbody#0;n#table#0;n#div#1;n#div#1;n#div#0;n#body#0;n#html#0;n#!!top" expanded="true" /> + <element signature="n#style#0;n#img#0;n#td#2;n#tr#1;n#tbody#0;n#table#0;n#div#1;n#div#1;n#div#0;n#body#0;n#html#0;n#!!top" expanded="true" /> + <element signature="n#style#0;n#td#1;n#tr#2;n#tbody#0;n#table#0;n#div#1;n#div#1;n#div#0;n#body#0;n#html#0;n#!!top" expanded="true" /> + <element signature="e#2973#2979#0" expanded="true" /> + <element signature="e#2979#2985#0" expanded="true" /> + <element signature="e#2985#2991#0" expanded="true" /> + <element signature="e#2991#2997#0" expanded="true" /> + <element signature="e#2997#3003#0" expanded="true" /> + <element signature="e#3003#3009#0" expanded="true" /> + <element signature="e#3009#3015#0" expanded="true" /> + <element signature="n#style#0;n#td#1;n#tr#3;n#tbody#0;n#table#0;n#div#1;n#div#1;n#div#0;n#body#0;n#html#0;n#!!top" expanded="true" /> + <element signature="n#style#0;n#input#0;n#td#1;n#tr#3;n#tbody#0;n#table#0;n#div#1;n#div#1;n#div#0;n#body#0;n#html#0;n#!!top" expanded="true" /> + <element signature="n#style#0;n#caption#0;n#table#0;n#div#2;n#div#1;n#div#0;n#body#0;n#html#0;n#!!top" expanded="true" /> + <element signature="n#style#0;n#td#1;n#tr#0;n#tbody#0;n#table#0;n#div#2;n#div#1;n#div#0;n#body#0;n#html#0;n#!!top" expanded="true" /> + <element signature="n#style#0;n#tr#1;n#tbody#0;n#table#0;n#div#2;n#div#1;n#div#0;n#body#0;n#html#0;n#!!top" expanded="true" /> + <element signature="n#style#0;n#td#1;n#tr#1;n#tbody#0;n#table#0;n#div#2;n#div#1;n#div#0;n#body#0;n#html#0;n#!!top" expanded="true" /> + <element signature="n#style#0;n#td#2;n#tr#1;n#tbody#0;n#table#0;n#div#2;n#div#1;n#div#0;n#body#0;n#html#0;n#!!top" expanded="true" /> + <element signature="n#style#0;n#img#0;n#td#2;n#tr#1;n#tbody#0;n#table#0;n#div#2;n#div#1;n#div#0;n#body#0;n#html#0;n#!!top" expanded="true" /> + <element signature="n#style#0;n#td#1;n#tr#2;n#tbody#0;n#table#0;n#div#2;n#div#1;n#div#0;n#body#0;n#html#0;n#!!top" expanded="true" /> + <element signature="e#3995#4001#0" expanded="true" /> + <element signature="e#4001#4007#0" expanded="true" /> + <element signature="e#4007#4013#0" expanded="true" /> + <element signature="e#4013#4019#0" expanded="true" /> + <element signature="e#4019#4025#0" expanded="true" /> + <element signature="e#4025#4031#0" expanded="true" /> + <element signature="e#4031#4037#0" expanded="true" /> + <element signature="n#style#0;n#td#1;n#tr#3;n#tbody#0;n#table#0;n#div#2;n#div#1;n#div#0;n#body#0;n#html#0;n#!!top" expanded="true" /> + <element signature="n#style#0;n#input#0;n#td#1;n#tr#3;n#tbody#0;n#table#0;n#div#2;n#div#1;n#div#0;n#body#0;n#html#0;n#!!top" expanded="true" /> + </folding> + </state> + </provider> + </entry> + <entry file="jar://$MAVEN_REPOSITORY$/com/alibaba/druid/1.1.18/druid-1.1.18.jar!/support/http/resources/css/bootstrap.min.css"> + <provider selected="true" editor-type-id="text-editor"> + <state relative-caret-position="152"> + <caret line="8" column="25402" selection-start-line="8" selection-start-column="25402" selection-end-line="8" selection-end-column="25402" /> + </state> + </provider> + </entry> + <entry file="file://$PROJECT_DIR$/src/main/resources/static/css/main/style.min862f.css"> + <provider selected="true" editor-type-id="text-editor"> + <state> + <caret column="49663" selection-start-column="49663" selection-end-column="49663" /> + </state> + </provider> + </entry> + <entry file="file://$PROJECT_DIR$/src/main/resources/static/css/bootstrap.min.css"> + <provider selected="true" editor-type-id="text-editor"> + <state relative-caret-position="127"> + <caret line="2721" column="1" selection-start-line="2721" selection-start-column="1" selection-end-line="2721" selection-end-column="1" /> + </state> + </provider> + </entry> + <entry file="file://$PROJECT_DIR$/src/main/resources/static/css/style.css"> + <provider selected="true" editor-type-id="text-editor"> + <state relative-caret-position="241"> + <caret line="3360" column="17" lean-forward="true" selection-start-line="3360" selection-start-column="17" selection-end-line="3360" selection-end-column="17" /> + </state> + </provider> + </entry> + <entry file="file://$PROJECT_DIR$/src/main/resources/templates/config/container/print.html"> + <provider selected="true" editor-type-id="text-editor"> + <state relative-caret-position="150"> + <caret line="21" column="28" lean-forward="true" selection-start-line="21" selection-start-column="28" selection-end-line="21" selection-end-column="28" /> + <folding> + <element signature="n#style#0;n#div#0;n#div#1;n#body#0;n#html#0;n#!!top" expanded="true" /> + <element signature="n#style#0;n#span#0;n#div#0;n#div#1;n#body#0;n#html#0;n#!!top" expanded="true" /> + <element signature="n#style#0;n#div#1;n#div#0;n#body#0;n#html#0;n#!!top" expanded="true" /> + <element signature="n#style#0;n#div#0;n#div#1;n#div#0;n#body#0;n#html#0;n#!!top" expanded="true" /> + <element signature="n#style#0;n#table#0;n#div#0;n#div#0;n#div#1;n#div#0;n#body#0;n#html#0;n#!!top" expanded="true" /> + </folding> + </state> + </provider> + </entry> + </component> </project> \ No newline at end of file diff --git a/pom.xml b/pom.xml index d1bdcb9..ccefba9 100644 --- a/pom.xml +++ b/pom.xml @@ -249,6 +249,43 @@ <version>3.17</version> </dependency> + <!--jasperreports--> + <dependency> + <groupId>net.sf.jasperreports</groupId> + <artifactId>jasperreports</artifactId> + <version>6.10.0</version> + </dependency> + <dependency> + <groupId>net.sf.jasperreports</groupId> + <artifactId>jasperreports-fonts</artifactId> + <version>6.10.0</version> + </dependency> + <dependency> + <groupId>com.itextpdf</groupId> + <artifactId>itextpdf</artifactId> + <version>5.5.7</version> + </dependency> + <dependency> + <groupId>com.itextpdf</groupId> + <artifactId>itext-pdfa</artifactId> + <version>5.5.7</version> + </dependency> + <dependency> + <groupId>com.itextpdf</groupId> + <artifactId>itext-asian</artifactId> + <version>5.2.0</version> + </dependency> + <dependency> + <groupId>cn.lesper</groupId> + <artifactId>iTextAsian</artifactId> + <version>3.0</version> + </dependency> + <dependency> + <groupId>org.codehaus.groovy</groupId> + <artifactId>groovy-all</artifactId> + <version>2.4.11</version> + </dependency> + <!--activiti工作流--> <!--<dependency>--> <!--<groupId>org.activiti</groupId>--> diff --git a/src/main/java/com/huaheng/api/acs/controller/StateInfoUp.java b/src/main/java/com/huaheng/api/acs/controller/StateInfoUp.java new file mode 100644 index 0000000..af16f20 --- /dev/null +++ b/src/main/java/com/huaheng/api/acs/controller/StateInfoUp.java @@ -0,0 +1,36 @@ +package com.huaheng.api.acs.controller; + +import com.huaheng.api.acs.domain.StateInfoUploadModel; +import com.huaheng.api.acs.service.AcsService; +import com.huaheng.framework.aspectj.lang.annotation.Log; +import com.huaheng.framework.aspectj.lang.constant.BusinessType; +import com.huaheng.framework.web.controller.BaseController; +import com.huaheng.framework.web.domain.AjaxResult; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; + + +@RestController +@RequestMapping("/api/ACS/v1") +@Api(tags = {"ACS"}, description = "登陆接口") +public class StateInfoUp extends BaseController { + @Resource + private AcsService acsService; + + /** + * AGV 信息上传 + */ +// @RequiresPermissions("api:acs:StateInfoUpload") + @Log(title = "AGV 信息上传", action = BusinessType.INSERT) + @PostMapping("/StateInfoUpload") + @ApiOperation("AGV 信息上传接口") + @ResponseBody + public AjaxResult StateInfoUpload(@RequestBody StateInfoUploadModel model) + { + return acsService.StateInfoUpload(model); + } + +} diff --git a/src/main/java/com/huaheng/api/acs/controller/TaskConfirm.java b/src/main/java/com/huaheng/api/acs/controller/TaskConfirm.java new file mode 100644 index 0000000..b1136f1 --- /dev/null +++ b/src/main/java/com/huaheng/api/acs/controller/TaskConfirm.java @@ -0,0 +1,37 @@ +package com.huaheng.api.acs.controller; + +import com.huaheng.api.acs.domain.AgvTask; +import com.huaheng.api.acs.service.AcsService; +import com.huaheng.framework.aspectj.lang.annotation.Log; +import com.huaheng.framework.aspectj.lang.constant.BusinessType; +import com.huaheng.framework.web.controller.BaseController; +import com.huaheng.framework.web.domain.AjaxResult; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; + + +@RestController +@RequestMapping("/api/ACS/v1") +@Api(tags = {"ACS"}, description = "登陆接口") +public class TaskConfirm extends BaseController { + @Resource + private AcsService acsService; + + /** + * AGV 任务回传 + */ +// @RequiresPermissions("api:acs:TaskConfirm") + @Log(title = "AGV 任务回传", action = BusinessType.UPDATE) + @PostMapping("/TaskConfirm") + @ApiOperation("AGV 任务回传接口") + @ResponseBody + public AjaxResult TaskConfirm(@RequestBody AgvTask model) + { + return acsService.TaskConfirm(model); + } + + +} diff --git a/src/main/java/com/huaheng/api/acs/domain/AgvTask.java b/src/main/java/com/huaheng/api/acs/domain/AgvTask.java new file mode 100644 index 0000000..dbe3150 --- /dev/null +++ b/src/main/java/com/huaheng/api/acs/domain/AgvTask.java @@ -0,0 +1,243 @@ +package com.huaheng.api.acs.domain; + +import com.huaheng.framework.web.domain.BaseEntity; + +import java.util.Date; +import java.util.List; + +/** + * AGV任务实体 + * + */ +public class AgvTask extends BaseEntity { + + + private Integer id; + //交互标识 + private String interactionId; + //任务头标识 + private Integer taskHeaderId; + //任务子标识 + private Integer taskDetailId; + //任务类型 + private String taskType; + //货架编码 + private String shelfNo; + //站台编码 + private String station; + //源位置编码 + private String fromLocationNo; + //目的位置编码 + private String toLocationNo; + //方向 + private String orientation; + //平台 + private String platform; + //小车编号 + private String carNo; + //状态 + private String state; + //优先级 + private Integer status; + //仓库ID + private Integer warehouseId; + //仓库编码 + private String warehouseCode; + //货主ID + private Integer companyId; + //货主编码 + private String companyCode; + //货主ID list + private List<Integer> companyIdList; + //货主list + private List<String> companyCodeList; + + private Date date; + + public Date getDate() { + return date; + } + + public void setDate(Date date) { + this.date = date; + } + + public List<Integer> getCompanyIdList() { + return companyIdList; + } + + public void setCompanyIdList(List<Integer> companyIdList) { + this.companyIdList = companyIdList; + } + + public Integer getWarehouseId() { + return warehouseId; + } + + public void setWarehouseId(Integer warehouseId) { + this.warehouseId = warehouseId; + } + + public String getWarehouseCode() { + return warehouseCode; + } + + public void setWarehouseCode(String warehouseCode) { + this.warehouseCode = warehouseCode; + } + + public Integer getCompanyId() { + return companyId; + } + + public void setCompanyId(Integer companyId) { + this.companyId = companyId; + } + + public String getCompanyCode() { + return companyCode; + } + + public void setCompanyCode(String companyCode) { + this.companyCode = companyCode; + } + + public List<String> getCompanyCodeList() { + return companyCodeList; + } + + public void setCompanyCodeList(List<String> companyCodeList) { + this.companyCodeList = companyCodeList; + } + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public String getInteractionId() { + return interactionId; + } + + public void setInteractionId(String interactionId) { + this.interactionId = interactionId; + } + + public Integer getTaskHeaderId() { + return taskHeaderId; + } + + public void setTaskHeaderId(Integer taskHeaderId) { + this.taskHeaderId = taskHeaderId; + } + + public Integer getTaskDetailId() { + return taskDetailId; + } + + public void setTaskDetailId(Integer taskDetailId) { + this.taskDetailId = taskDetailId; + } + + public String getTaskType() { + return taskType; + } + + public void setTaskType(String taskType) { + this.taskType = taskType; + } + + public String getShelfNo() { + return shelfNo; + } + + public void setShelfNo(String shelfNo) { + this.shelfNo = shelfNo; + } + + public String getStation() { + return station; + } + + public void setStation(String station) { + this.station = station; + } + + public String getFromLocationNo() { + return fromLocationNo; + } + + public void setFromLocationNo(String fromLocationNo) { + this.fromLocationNo = fromLocationNo; + } + + public String getToLocationNo() { + return toLocationNo; + } + + public void setToLocationNo(String toLocationNo) { + this.toLocationNo = toLocationNo; + } + + public String getOrientation() { + return orientation; + } + + public void setOrientation(String orientation) { + this.orientation = orientation; + } + + public String getPlatform() { + return platform; + } + + public void setPlatform(String platform) { + this.platform = platform; + } + + public String getCarNo() { + return carNo; + } + + public void setCarNo(String carNo) { + this.carNo = carNo; + } + + public String getState() { + return state; + } + + public void setState(String state) { + this.state = state; + } + + public Integer getStatus() { + return status; + } + + public void setStatus(Integer status) { + this.status = status; + } + + @Override + public String toString() { + return "AgvTask{" + + "id=" + id + + ", interactionId='" + interactionId + '\'' + + ", taskHeaderId=" + taskHeaderId + + ", taskDetailId=" + taskDetailId + + ", taskType='" + taskType + '\'' + + ", shelfNo='" + shelfNo + '\'' + + ", station='" + station + '\'' + + ", fromLocationNo='" + fromLocationNo + '\'' + + ", toLocationNo='" + toLocationNo + '\'' + + ", orientation='" + orientation + '\'' + + ", platform='" + platform + '\'' + + ", carNo='" + carNo + '\'' + + ", state='" + state + '\'' + + '}'; + } +} diff --git a/src/main/java/com/huaheng/api/acs/domain/StateInfoUploadModel.java b/src/main/java/com/huaheng/api/acs/domain/StateInfoUploadModel.java new file mode 100644 index 0000000..5f7fa99 --- /dev/null +++ b/src/main/java/com/huaheng/api/acs/domain/StateInfoUploadModel.java @@ -0,0 +1,161 @@ +package com.huaheng.api.acs.domain; + +import java.util.Date; + +/** + * 小车信息实体 + * + */ +public class StateInfoUploadModel { + + private String carNo; // 小车编号,string(50),唯一 ,必填 + private String interactionId; // 交互标识,int,默认 0,必填" + private String taskType; // 任务类型,string (50),putway 上架 pick 拣货,必填 + private String shelfNo; // 货架编码,string (50),默认 0,必填 + private String station; // 站台编码,string (50),默认 0,必填 + private String currentLocationNo; // 当前位置编码,string (50),默认 0 必填 + private String fromLocationNo; // 源位置编码,string (50),默认 0 必填 + private String toLocationNo; // 目的位置编码,string (50),默认 0 必填 + private String orientation; // 方向,string (50),N,S,E,W,必填 + private Integer percentCapacity; // 电量,int【0-100】,必填 + private Integer exceptionFlag; // 异常标志 0 正常 1 异常,int,默认 0 必填 + private String state; // 状态,string (50),0 空闲 1 预定 2 任务中 -1 充电,必填 + private String exceptionInfo; // 异常信息 string(200) + //仓库ID + private Integer warehouseId; + //仓库编码 + private String warehouseCode; + + private Date date; + + public Date getDate() { + return date; + } + + public void setDate(Date date) { + this.date = date; + } + + public Integer getWarehouseId() { + return warehouseId; + } + + public void setWarehouseId(Integer warehouseId) { + this.warehouseId = warehouseId; + } + + public String getWarehouseCode() { + return warehouseCode; + } + + public void setWarehouseCode(String warehouseCode) { + this.warehouseCode = warehouseCode; + } + + public String getCarNo() { + return carNo; + } + + public void setCarNo(String carNo) { + this.carNo = carNo; + } + + public String getInteractionId() { + return interactionId; + } + + public void setInteractionId(String interactionId) { + this.interactionId = interactionId; + } + + public String getTaskType() { + return taskType; + } + + public void setTaskType(String taskType) { + this.taskType = taskType; + } + + public String getShelfNo() { + return shelfNo; + } + + public void setShelfNo(String shelfNo) { + this.shelfNo = shelfNo; + } + + public String getStation() { + return station; + } + + public void setStation(String station) { + this.station = station; + } + + public String getCurrentLocationNo() { + return currentLocationNo; + } + + public void setCurrentLocationNo(String currentLocationNo) { + this.currentLocationNo = currentLocationNo; + } + + public String getFromLocationNo() { + return fromLocationNo; + } + + public void setFromLocationNo(String fromLocationNo) { + this.fromLocationNo = fromLocationNo; + } + + public String getToLocationNo() { + return toLocationNo; + } + + public void setToLocationNo(String toLocationNo) { + this.toLocationNo = toLocationNo; + } + + public String getOrientation() { + return orientation; + } + + public void setOrientation(String orientation) { + this.orientation = orientation; + } + + public Integer getPercentCapacity() { + return percentCapacity; + } + + public void setPercentCapacity(Integer percentCapacity) { + this.percentCapacity = percentCapacity; + } + + public Integer getExceptionFlag() { + return exceptionFlag; + } + + public void setExceptionFlag(Integer exceptionFlag) { + this.exceptionFlag = exceptionFlag; + } + + public String getState() { + return state; + } + + public void setState(String state) { + this.state = state; + } + + public String getExceptionInfo() { + return exceptionInfo; + } + + public void setExceptionInfo(String exceptionInfo) { + this.exceptionInfo = exceptionInfo; + } + + + +} diff --git a/src/main/java/com/huaheng/api/acs/service/AcsService.java b/src/main/java/com/huaheng/api/acs/service/AcsService.java new file mode 100644 index 0000000..ce9bd92 --- /dev/null +++ b/src/main/java/com/huaheng/api/acs/service/AcsService.java @@ -0,0 +1,16 @@ +package com.huaheng.api.acs.service; + +import com.huaheng.api.acs.domain.AgvTask; +import com.huaheng.api.acs.domain.StateInfoUploadModel; +import com.huaheng.framework.web.domain.AjaxResult; + +public interface AcsService { + + + //AGV 信息上传 + AjaxResult StateInfoUpload(StateInfoUploadModel model); + + + //AGV 任务回传 + AjaxResult TaskConfirm(AgvTask agvTask); +} diff --git a/src/main/java/com/huaheng/api/acs/service/AcsServiceImpl.java b/src/main/java/com/huaheng/api/acs/service/AcsServiceImpl.java new file mode 100644 index 0000000..ea85102 --- /dev/null +++ b/src/main/java/com/huaheng/api/acs/service/AcsServiceImpl.java @@ -0,0 +1,25 @@ +package com.huaheng.api.acs.service; + +import com.huaheng.api.acs.domain.AgvTask; +import com.huaheng.api.acs.domain.StateInfoUploadModel; +import com.huaheng.framework.web.domain.AjaxResult; +import org.springframework.stereotype.Service; + +/** + * @ClassName AcsServiceImpl + * @Description TODO + * @Author Administrator + * @Date 2019/12/2615:38 + */ +@Service +public class AcsServiceImpl implements AcsService { + @Override + public AjaxResult StateInfoUpload(StateInfoUploadModel model) { + return null; + } + + @Override + public AjaxResult TaskConfirm(AgvTask agvTask) { + return null; + } +} diff --git a/src/main/java/com/huaheng/api/general/controller/BasicDataApi.java b/src/main/java/com/huaheng/api/general/controller/BasicDataApi.java index 90aafdc..d415421 100644 --- a/src/main/java/com/huaheng/api/general/controller/BasicDataApi.java +++ b/src/main/java/com/huaheng/api/general/controller/BasicDataApi.java @@ -5,10 +5,12 @@ import com.huaheng.framework.aspectj.lang.annotation.Log; import com.huaheng.framework.aspectj.lang.constant.BusinessType; import com.huaheng.framework.web.controller.BaseController; import com.huaheng.framework.web.domain.AjaxResult; +import com.huaheng.pc.config.containerCapacity.domain.ContainerCapacity; import com.huaheng.pc.config.customer.domain.Customer; import com.huaheng.pc.config.material.domain.Material; import com.huaheng.pc.config.supplier.domain.Supplier; import com.huaheng.pc.config.warehouse.domain.Warehouse; +import com.huaheng.pc.inventory.inventoryDetail.domain.InventoryDetail; import com.huaheng.pc.system.dept.domain.Dept; import com.huaheng.pc.system.dict.domain.DictData; import com.huaheng.pc.system.user.domain.User; @@ -38,6 +40,17 @@ public class BasicDataApi extends BaseController { return ajaxResult; } + + @Log(title = "物料查询", action = BusinessType.INSERT) + @PostMapping("/queryMaterialApi") + @ApiOperation("物料查询公共接口") + @ResponseBody + public AjaxResult QueryMaterialApi(@RequestBody Material material) + { + AjaxResult ajaxResult = basicDataApiService.queryMaterial(material); + return ajaxResult; + } + /** * 同步字典 */ @@ -105,6 +118,29 @@ public class BasicDataApi extends BaseController { return ajaxResult; } + + @Log(title = "用户同步", action = BusinessType.INSERT) + @PostMapping("/queryUserApi") + @ApiOperation("用户查询公共接口") + @ResponseBody + public AjaxResult queryUserApi(@RequestBody User user) + { + AjaxResult ajaxResult = basicDataApiService.queryUser(user); + return ajaxResult; + } + + /** + * 同步容器容量 + */ + @Log(title = "容器容量添加", action = BusinessType.INSERT) + @PostMapping("/containerCapacity") + @ApiOperation("容器容量添加公共接口") + @ResponseBody + public AjaxResult containerCapacityApi(@RequestBody ContainerCapacity containerCapacity){ + AjaxResult ajaxResult = basicDataApiService.containerCapacity(containerCapacity); + return ajaxResult; + } + /** * 同步供应商档案 */ @@ -119,5 +155,17 @@ public class BasicDataApi extends BaseController { + @Log(title = "库存同步", action = BusinessType.INSERT) + @PostMapping("/queryInventoryApi") + @ApiOperation("库存查询公共接口") + @ResponseBody + public AjaxResult queryInventoryApi(@RequestBody InventoryDetail inventoryDetail) + { + AjaxResult ajaxResult = basicDataApiService.queryInventoryApi(inventoryDetail); + return ajaxResult; + } + + + } diff --git a/src/main/java/com/huaheng/api/general/controller/ReceiptApi.java b/src/main/java/com/huaheng/api/general/controller/ReceiptApi.java new file mode 100644 index 0000000..d39993d --- /dev/null +++ b/src/main/java/com/huaheng/api/general/controller/ReceiptApi.java @@ -0,0 +1,37 @@ +package com.huaheng.api.general.controller; + + +import com.huaheng.api.general.domain.ReceiptDomain; +import com.huaheng.api.general.service.ReceiptApiService; +import com.huaheng.framework.aspectj.lang.annotation.Log; +import com.huaheng.framework.aspectj.lang.constant.BusinessType; +import com.huaheng.framework.web.domain.AjaxResult; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; + +@RestController +@RequestMapping("/api/receiptApi") +@Api(tags = {"receipt"}, description = "入库单接口") +public class ReceiptApi { + + @Resource + private ReceiptApiService receiptApiService; + + + /** + * 同步入库单 + */ + @Log(title = "入库单添加", action = BusinessType.INSERT) + @PostMapping("/receipt") + @ApiOperation("入库单添加公共接口") + @ResponseBody + public AjaxResult Receipt(@RequestBody ReceiptDomain receiptDomain) + { + AjaxResult ajaxResult = receiptApiService.receipt(receiptDomain); + return ajaxResult; + } + +} diff --git a/src/main/java/com/huaheng/api/general/controller/ShipmentApi.java b/src/main/java/com/huaheng/api/general/controller/ShipmentApi.java new file mode 100644 index 0000000..c230958 --- /dev/null +++ b/src/main/java/com/huaheng/api/general/controller/ShipmentApi.java @@ -0,0 +1,35 @@ +package com.huaheng.api.general.controller; + + +import com.huaheng.api.general.domain.ShipmentDomain; +import com.huaheng.api.general.service.ShipmentApiService; +import com.huaheng.framework.aspectj.lang.annotation.Log; +import com.huaheng.framework.aspectj.lang.constant.BusinessType; +import com.huaheng.framework.web.domain.AjaxResult; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; + +@RestController +@RequestMapping("/api/shipmentApi") +@Api(tags = {"shipment"}, description = "出库单接口") +public class ShipmentApi { + + @Resource + private ShipmentApiService shipmentApiService; + + /** + * 同步出库单 + */ + @Log(title = "出库单添加", action = BusinessType.INSERT) + @PostMapping("/shipment") + @ApiOperation("出库单添加公共接口") + @ResponseBody + public AjaxResult Shipment(@RequestBody ShipmentDomain shipmentDomain) + { + AjaxResult ajaxResult = shipmentApiService.shipment(shipmentDomain); + return ajaxResult; + } +} diff --git a/src/main/java/com/huaheng/api/general/domain/InventoryDomain.java b/src/main/java/com/huaheng/api/general/domain/InventoryDomain.java new file mode 100644 index 0000000..1f2c5b5 --- /dev/null +++ b/src/main/java/com/huaheng/api/general/domain/InventoryDomain.java @@ -0,0 +1,17 @@ +package com.huaheng.api.general.domain; + +import com.huaheng.pc.inventory.inventoryDetail.domain.InventoryDetail; +import com.huaheng.pc.inventory.inventoryHeader.domain.InventoryHeader; +import com.huaheng.pc.shipment.shipmentDetail.domain.ShipmentDetail; +import com.huaheng.pc.shipment.shipmentHeader.domain.ShipmentHeader; +import lombok.Data; + +import java.util.List; +import java.util.Map; + +@Data +public class InventoryDomain { + private Map<Integer,InventoryHeader> inventoryHeader; + + private List<InventoryDetail> inventoryDetails; +} diff --git a/src/main/java/com/huaheng/api/general/domain/ReceiptDomain.java b/src/main/java/com/huaheng/api/general/domain/ReceiptDomain.java new file mode 100644 index 0000000..eba1ae1 --- /dev/null +++ b/src/main/java/com/huaheng/api/general/domain/ReceiptDomain.java @@ -0,0 +1,18 @@ +package com.huaheng.api.general.domain; + +import com.huaheng.pc.receipt.receiptDetail.domain.ReceiptDetail; +import com.huaheng.pc.receipt.receiptDetail.service.ReceiptDetailService; +import com.huaheng.pc.receipt.receiptHeader.domain.ReceiptHeader; +import lombok.Data; + +import java.util.List; + +@Data +public class ReceiptDomain { + + //入库主单 + private ReceiptHeader receiptHeader; + + //入库子单列 + private List<ReceiptDetail> receiptDetails; +} diff --git a/src/main/java/com/huaheng/api/general/domain/ShipmentDomain.java b/src/main/java/com/huaheng/api/general/domain/ShipmentDomain.java new file mode 100644 index 0000000..6828786 --- /dev/null +++ b/src/main/java/com/huaheng/api/general/domain/ShipmentDomain.java @@ -0,0 +1,14 @@ +package com.huaheng.api.general.domain; + +import com.huaheng.pc.shipment.shipmentDetail.domain.ShipmentDetail; +import com.huaheng.pc.shipment.shipmentHeader.domain.ShipmentHeader; +import lombok.Data; + +import java.util.List; + +@Data +public class ShipmentDomain { + private ShipmentHeader shipmentHeader; + + private List<ShipmentDetail> shipmentDetails; +} diff --git a/src/main/java/com/huaheng/api/general/service/BasicDataApiService.java b/src/main/java/com/huaheng/api/general/service/BasicDataApiService.java index 16920ea..e8f0210 100644 --- a/src/main/java/com/huaheng/api/general/service/BasicDataApiService.java +++ b/src/main/java/com/huaheng/api/general/service/BasicDataApiService.java @@ -2,11 +2,16 @@ package com.huaheng.api.general.service; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.huaheng.api.general.domain.InventoryDomain; import com.huaheng.common.exception.service.ServiceException; import com.huaheng.common.utils.StringUtils; import com.huaheng.framework.web.domain.AjaxResult; import com.huaheng.pc.config.company.domain.Company; import com.huaheng.pc.config.company.service.CompanyService; +import com.huaheng.pc.config.containerCapacity.domain.ContainerCapacity; +import com.huaheng.pc.config.containerCapacity.service.ContainerCapacityService; +import com.huaheng.pc.config.containerType.domain.ContainerType; +import com.huaheng.pc.config.containerType.service.ContainerTypeService; import com.huaheng.pc.config.customer.domain.Customer; import com.huaheng.pc.config.customer.service.CustomerServiceImpl; import com.huaheng.pc.config.material.domain.Material; @@ -15,6 +20,10 @@ import com.huaheng.pc.config.supplier.domain.Supplier; import com.huaheng.pc.config.supplier.service.SupplierService; import com.huaheng.pc.config.warehouse.domain.Warehouse; import com.huaheng.pc.config.warehouse.service.WarehouseService; +import com.huaheng.pc.inventory.inventoryDetail.domain.InventoryDetail; +import com.huaheng.pc.inventory.inventoryDetail.service.InventoryDetailService; +import com.huaheng.pc.inventory.inventoryHeader.domain.InventoryHeader; +import com.huaheng.pc.inventory.inventoryHeader.service.InventoryHeaderService; import com.huaheng.pc.system.dept.domain.Dept; import com.huaheng.pc.system.dept.service.IDeptService; import com.huaheng.pc.system.dict.domain.DictData; @@ -30,8 +39,11 @@ import org.springframework.stereotype.Component; import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; +import java.math.BigDecimal; import java.util.ArrayList; +import java.util.HashMap; import java.util.List; +import java.util.Map; @Component @Transactional @@ -42,7 +54,12 @@ public class BasicDataApiService { IDictDataService dictDataService; @Autowired MaterialService materialService; - + @Autowired + ContainerTypeService containerTypeService; + @Autowired + InventoryDetailService inventoryDetailService; + @Autowired + InventoryHeaderService inventoryHeaderService; @Resource private DictTypeMapper dictTypeMapper; @Resource @@ -66,6 +83,9 @@ public class BasicDataApiService { @Autowired CompanyService companyService; + @Autowired + private ContainerCapacityService containerCapacityService; + //检查仓库 public Warehouse checkWarehouse(String code) { LambdaQueryWrapper<Warehouse> warehouseLam = Wrappers.lambdaQuery(); @@ -221,6 +241,25 @@ public class BasicDataApiService { return AjaxResult.success("新增物料成功"); } + /** + 1,物料同步 + 2,条件查询 + * @param material + * @return + */ + @Transactional + public AjaxResult queryMaterial(Material material) { + if (StringUtils.isEmpty(material.getWarehouseCode())){ + return AjaxResult.error("仓库编码不能为空!!"); + } + if (StringUtils.isEmpty(material.getCompanyCode())){ + return AjaxResult.error("货主编码不能为空!!"); + } + LambdaQueryWrapper<Material> lambdaQueryWrapper =Wrappers.lambdaQuery(material); + materialService.list(lambdaQueryWrapper); + return AjaxResult.success(materialService.list(lambdaQueryWrapper)); + } + /** @@ -292,6 +331,20 @@ public class BasicDataApiService { /** + 1,用户同步 + 2,条件查询 + * @param user + * @return + */ + @Transactional + public AjaxResult queryUser(User user) { + iUserService.selectUserList(user); + return AjaxResult.success(iUserService.selectUserList(user)); + } + + + + /** * 部门档案通用接口 * 1、判断必填字段是否为空 * 2、部门编码长度应是双数 @@ -507,4 +560,114 @@ public class BasicDataApiService { throw new ServiceException("供应商数据问题。。。"); } } + + + /** + * 容器容量通用接口 + * 1、判断必填字段是否为空 + * 2、检查仓库、物料和容器类型 + * 3、检查此容器容量是否存在,不存在则添加 + * @param containerCapacity + * @return + */ + public AjaxResult containerCapacity(ContainerCapacity containerCapacity){ + Boolean flag = false; + //1、判断必填字段是否为空 + if(StringUtils.isEmpty(containerCapacity.getContainerType())){ + return AjaxResult.error("没有容器类型"); + } + if(StringUtils.isEmpty(containerCapacity.getWarehouseCode())){ + return AjaxResult.error("没有仓库编号"); + } + if(StringUtils.isEmpty(containerCapacity.getMaterialCode())){ + return AjaxResult.error("没有物料编号"); + } + if(StringUtils.isNull(containerCapacity.getQty())){ + return AjaxResult.error("没有容量上限"); + } + + // 2、检查仓库、物料和容器类型 + this.checkWarehouse(containerCapacity.getWarehouseCode()); + + //物料检查 + LambdaQueryWrapper<Material> materialLam = Wrappers.lambdaQuery(); + materialLam.eq(Material::getCode,containerCapacity.getMaterialCode()) + .eq(Material::getWarehouseCode,containerCapacity.getWarehouseCode()); + Material material = materialService.getOne(materialLam); + if(material == null){ + return AjaxResult.error("系统没有此物料编号"); + } + + //容器类型检查 + LambdaQueryWrapper<ContainerType> containerTypeLamb = Wrappers.lambdaQuery(); + containerTypeLamb.eq(ContainerType::getCode,containerCapacity.getContainerType()) + .eq(ContainerType::getWarehouseCode,containerCapacity.getWarehouseCode()); + ContainerType containerType = containerTypeService.getOne(containerTypeLamb); + if(containerType == null){ + return AjaxResult.error("系统没有此容器类型"); + } + + //3、检查此容器容量是否存在,不存在则添加 + LambdaQueryWrapper<ContainerCapacity> containerCapacityLambd = Wrappers.lambdaQuery(); + containerCapacityLambd.eq(ContainerCapacity::getContainerType,containerCapacity.getContainerType()) + .eq(ContainerCapacity::getWarehouseCode,containerCapacity.getWarehouseCode()) + .eq(ContainerCapacity::getMaterialCode,containerCapacity.getMaterialCode()); + ContainerCapacity capacity = containerCapacityService.getOne(containerCapacityLambd); + if(capacity == null){ + flag = containerCapacityService.save(containerCapacity); + if(flag == false){ + return AjaxResult.error("新增容器容量失败"); + } + }else { + if(capacity.getQty().compareTo(containerCapacity.getQty()) != 0){ + capacity.setQty(containerCapacity.getQty()); + flag = containerCapacityService.updateById(capacity); + if(flag == false){ + return AjaxResult.error("修改容器容量失败"); + } + } + } + return AjaxResult.success("新增容器容量成功"); + } + + + + /** + 1,库存同步 + 2,条件查询 + * @param inventoryDetail + * @return + */ + @Transactional + public AjaxResult queryInventoryApi(InventoryDetail inventoryDetail) { + if (StringUtils.isEmpty(inventoryDetail.getWarehouseCode())){ + return AjaxResult.error("仓库编码不能为空!!"); + } + if (StringUtils.isEmpty(inventoryDetail.getCompanyCode())){ + return AjaxResult.error("货主编码不能为空!!"); + } + //查询库存明细 + LambdaQueryWrapper<InventoryDetail> lambdaQueryWrapper =Wrappers.lambdaQuery(inventoryDetail); + List<InventoryDetail> inventoryDetailList = inventoryDetailService.list(lambdaQueryWrapper); + + //查询库存Header表 + Map<Integer,InventoryHeader> inventoryHeaderList = new HashMap<>();//map防止出现数据重复 + for (InventoryDetail inventoryDetail1:inventoryDetailList) { + LambdaQueryWrapper<InventoryHeader> inventoryHeaderLambdaQueryWrapper =Wrappers.lambdaQuery(); + inventoryHeaderLambdaQueryWrapper.eq(InventoryHeader::getId,inventoryDetail1.getInventoryHeaderId()); + inventoryHeaderList.put(inventoryDetail1.getInventoryHeaderId(),inventoryHeaderService.getOne(inventoryHeaderLambdaQueryWrapper)); + } + + InventoryDomain inventoryDomain =new InventoryDomain(); + inventoryDomain.setInventoryHeader(inventoryHeaderList); + inventoryDomain.setInventoryDetails(inventoryDetailList); + return AjaxResult.success(inventoryDomain); + } + + + + + + + } diff --git a/src/main/java/com/huaheng/api/general/service/ReceiptApiService.java b/src/main/java/com/huaheng/api/general/service/ReceiptApiService.java new file mode 100644 index 0000000..3bb80f7 --- /dev/null +++ b/src/main/java/com/huaheng/api/general/service/ReceiptApiService.java @@ -0,0 +1,221 @@ +package com.huaheng.api.general.service; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.huaheng.api.general.controller.ReceiptApi; +import com.huaheng.api.general.domain.ReceiptDomain; +import com.huaheng.common.exception.service.ServiceException; +import com.huaheng.common.utils.StringUtils; +import com.huaheng.framework.web.domain.AjaxResult; +import com.huaheng.pc.config.FilterConfigDetail.domain.FilterConfigDetail; +import com.huaheng.pc.config.FilterConfigDetail.service.FilterConfigDetailService; +import com.huaheng.pc.config.company.domain.Company; +import com.huaheng.pc.config.company.service.CompanyService; +import com.huaheng.pc.config.material.domain.Material; +import com.huaheng.pc.config.material.service.MaterialService; +import com.huaheng.pc.config.receiptType.domain.ReceiptType; +import com.huaheng.pc.config.receiptType.service.ReceiptTypeService; +import com.huaheng.pc.config.statusFlow.domain.StatusFlowHeader; +import com.huaheng.pc.config.statusFlow.service.StatusFlowHeaderService; +import com.huaheng.pc.config.supplier.domain.Supplier; +import com.huaheng.pc.config.supplier.service.SupplierService; +import com.huaheng.pc.config.warehouse.domain.Warehouse; +import com.huaheng.pc.config.warehouse.service.WarehouseService; +import com.huaheng.pc.receipt.receiptDetail.domain.ReceiptDetail; +import com.huaheng.pc.receipt.receiptDetail.service.ReceiptDetailService; +import com.huaheng.pc.receipt.receiptHeader.domain.ReceiptHeader; +import com.huaheng.pc.receipt.receiptHeader.service.ReceiptHeaderService; +import org.springframework.stereotype.Component; +import org.springframework.transaction.annotation.Transactional; + +import javax.annotation.Resource; +import java.math.BigDecimal; +import java.util.ArrayList; +import java.util.List; + +@Component +@Transactional +public class ReceiptApiService { + @Resource + private ReceiptHeaderService receiptHeaderService; + @Resource + private ReceiptDetailService receiptDetailService; + @Resource + private ReceiptTypeService receiptTypeService; + @Resource + private WarehouseService warehouseService; + @Resource + private CompanyService companyService; + @Resource + private MaterialService materialService; + @Resource + private SupplierService supplierService; + @Resource + private FilterConfigDetailService filterConfigDetailService; + @Resource + private StatusFlowHeaderService statusFlowHeaderService; + /** + * 入库单下发 + * @param receipt 入库单 + * @return 是否下发成功 + */ + @Transactional(rollbackFor = Exception.class) + public AjaxResult receipt(ReceiptDomain receipt){ + + /* 0.step 获取入库头表,获取入库明细*/ + ReceiptHeader receiptHeader = receipt.getReceiptHeader(); + List<ReceiptDetail> receiptDetails = receipt.getReceiptDetails(); + /* 1.step 校验入库单是否为空*/ + if (receiptHeader == null || receiptDetails.isEmpty()){ + throw new ServiceException("入库主单或入库子单为空"); + } + /* 2.step 检查入库头表合法性*/ + AjaxResult checkReceiptHeaderResult = checkReceiptHeader(receiptHeader); + if (checkReceiptHeaderResult.hasErr() ){ + return AjaxResult.error(checkReceiptHeaderResult.getMsg()); + } + + /* 3.step 检查入库明细合法性*/ + AjaxResult checkReceiptDetailResult = checkReceiptDetail(receiptDetails); + if (checkReceiptDetailResult.hasErr() ){ + return AjaxResult.error(checkReceiptDetailResult.getMsg()); + } + + /* 4.step 计算入库明细总行数、总数量*/ + BigDecimal totalQty = new BigDecimal(0); + for (ReceiptDetail receiptDetail: receiptDetails) { + totalQty.add(receiptDetail.getTotalQty()); + } + receiptHeader.setTotalLines(receiptDetails.size()); + receiptHeader.setTotalQty(totalQty); + + /* 5.step 保存的入库头表*/ + if (!receiptHeaderService.save(receiptHeader)){ + throw new ServiceException("保存入库头表失败"); + } + + /* 6.step 保存入库明细*/ + LambdaQueryWrapper<ReceiptHeader> lambda = Wrappers.lambdaQuery(); + lambda.eq(ReceiptHeader::getWarehouseCode, receiptHeader.getWarehouseCode()) + .eq(ReceiptHeader::getCode, receiptHeader.getCode()); + receiptHeader = receiptHeaderService.getOne(lambda); + List<ReceiptDetail> jsonListDetail= new ArrayList<ReceiptDetail>(); + for (ReceiptDetail receiptDetail : receiptDetails) { + receiptDetail.setReceiptId(receiptHeader.getId()); + receiptDetail.setReceiptCode(receiptHeader.getCode()); + receiptDetail.setWarehouseCode(receiptHeader.getWarehouseCode()); + receiptDetail.setCompanyCode(receiptHeader.getWarehouseCode()); + Material material = materialService.findAllByCode(receiptDetail.getMaterialCode()); + receiptDetail.setMaterialName(material.getName()); + receiptDetail.setMaterialSpec(material.getSpec()); + receiptDetail.setMaterialUnit(material.getUnit()); + if (!receiptDetailService.save(receiptDetail)){ + throw new ServiceException("保存入库明细失败"); + } + jsonListDetail.add(receiptDetail); + + } + /* 6.step回传入库单和入库明细单 */ + ReceiptDomain receiptDomain =new ReceiptDomain(); + receiptDomain.setReceiptHeader(receiptHeader); + receiptDomain.setReceiptDetails(jsonListDetail); + + return AjaxResult.success(receiptDomain); + } + + /** + * 检查入库头表合法性 + * @param receiptHeader 入库头表 + * @return 检查结果 + */ + private AjaxResult checkReceiptHeader(ReceiptHeader receiptHeader){ + /* 0.step 必填项是否为空*/ + if (StringUtils.isEmpty(receiptHeader.getCode()) || StringUtils.isEmpty(receiptHeader.getCompanyCode()) || + StringUtils.isEmpty(receiptHeader.getWarehouseCode()) || StringUtils.isEmpty(receiptHeader.getReceiptType())){ + return AjaxResult.error("入库主单字段有误"); + } + + /* 1.step 查询该单据编码是否已存在*/ + LambdaQueryWrapper<ReceiptHeader> receiptHeaderLambda = Wrappers.lambdaQuery(receiptHeader); + if (receiptHeaderService.getOne(receiptHeaderLambda) != null){ + return AjaxResult.error("该单据已存在:"+receiptHeader.getCode()); + } + + /* 2.step 判断入库类型是否匹配*/ + LambdaQueryWrapper<ReceiptType> receiptTypeLambda = Wrappers.lambdaQuery(); + receiptTypeLambda.eq(ReceiptType::getCode, receiptHeader.getReceiptType()) + .eq(ReceiptType::getWarehouseCode,receiptHeader.getWarehouseCode()) + .eq(ReceiptType::getCompanyCode,receiptHeader.getCompanyCode()); + if (receiptTypeService.getOne(receiptTypeLambda) == null){ + return AjaxResult.error("没有对应的入库单类型"); + } + + /* 3.step 判断仓库是否存在*/ + LambdaQueryWrapper<Warehouse> warehouseLambda = Wrappers.lambdaQuery(); + warehouseLambda.eq(Warehouse::getCode, receiptHeader.getWarehouseCode()); + if (warehouseService.getOne(warehouseLambda) == null){ + return AjaxResult.error("该仓库不存在"); + } + + /* 4.step 判断货主是否存在*/ + LambdaQueryWrapper<Company> companyLambda = Wrappers.lambdaQuery(); + companyLambda.eq(Company::getCode, receiptHeader.getCompanyCode()); + if (companyService.getOne(companyLambda) == null){ + return AjaxResult.error("该货主不存在"); + } + + return AjaxResult.success(""); + } + + /** + * 检查入库明细合法性 + * @param receiptDetails 入库明细 + * @return 检查结果 + */ + private AjaxResult checkReceiptDetail(List<ReceiptDetail> receiptDetails){ + + for (ReceiptDetail receiptDetail: receiptDetails) { + /* 0.step 判断必填字段是否为空且总数量不能为0*/ + if (receiptDetail.getMaterialCode() == null || + new BigDecimal(0).compareTo(receiptDetail.getTotalQty() != null ? + receiptDetail.getTotalQty() : new BigDecimal(0)) == 0 ){ + return AjaxResult.error("入库明细字段有误"); + } + + /* 1.step 判断供应商是否存在*/ + if (receiptDetail.getSupplierCode() != null){ + LambdaQueryWrapper<Supplier> supplierLambda = Wrappers.lambdaQuery(); + supplierLambda.eq(Supplier::getCode, receiptDetail.getSupplierCode()); + if (supplierService.getOne(supplierLambda) == null) { + return AjaxResult.error("供应商不存在"); + } + } + + /* 2.step 判断定位规则是否存在*/ + if (receiptDetail.getLocatingRule() != null){ + LambdaQueryWrapper<FilterConfigDetail> filterConfigDetailLambda = Wrappers.lambdaQuery(); + filterConfigDetailLambda.eq(FilterConfigDetail::getCode, receiptDetail.getLocatingRule()) + .eq(FilterConfigDetail::getModuleType, "receipt") + .eq(FilterConfigDetail::getRecordType, "locationRule"); + FilterConfigDetail filterConfigDetail = filterConfigDetailService.getOne(filterConfigDetailLambda); + if (filterConfigDetail == null){ + return AjaxResult.error(receiptDetail.getLocatingRule()+"定位规则不存在"); + } + } + + /* 3.step 判断流程编码是否存在*/ + if (receiptDetail.getStatusFlowCode() != null){ + LambdaQueryWrapper<StatusFlowHeader> statusFlowHeaderLambda = Wrappers.lambdaQuery(); + statusFlowHeaderLambda.eq(StatusFlowHeader::getCode, receiptDetail.getStatusFlowCode()) + .eq(StatusFlowHeader::getModuleType, "receipt") + .eq(StatusFlowHeader::getRecordType, "receivingFlow"); + StatusFlowHeader statusFlowHeader = statusFlowHeaderService.getOne(statusFlowHeaderLambda); + if (statusFlowHeader == null){ + return AjaxResult.error(receiptDetail.getLocatingRule()+"该流程不存在"); + } + } + } + + return AjaxResult.success(""); + } +} diff --git a/src/main/java/com/huaheng/api/general/service/ShipmentApiService.java b/src/main/java/com/huaheng/api/general/service/ShipmentApiService.java new file mode 100644 index 0000000..d76c60a --- /dev/null +++ b/src/main/java/com/huaheng/api/general/service/ShipmentApiService.java @@ -0,0 +1,229 @@ +package com.huaheng.api.general.service; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.huaheng.api.general.domain.ShipmentDomain; +import com.huaheng.common.exception.service.ServiceException; +import com.huaheng.common.utils.StringUtils; +import com.huaheng.common.utils.security.ShiroUtils; +import com.huaheng.framework.web.domain.AjaxResult; +import com.huaheng.pc.config.company.domain.Company; +import com.huaheng.pc.config.company.service.CompanyService; +import com.huaheng.pc.config.customer.domain.Customer; +import com.huaheng.pc.config.customer.service.CustomerServiceImpl; +import com.huaheng.pc.config.material.domain.Material; +import com.huaheng.pc.config.material.service.MaterialService; +import com.huaheng.pc.config.shipmentType.domain.ShipmentType; +import com.huaheng.pc.config.shipmentType.service.ShipmentTypeService; +import com.huaheng.pc.config.warehouse.domain.Warehouse; +import com.huaheng.pc.config.warehouse.service.WarehouseService; +import com.huaheng.pc.shipment.shipmentDetail.domain.ShipmentDetail; +import com.huaheng.pc.shipment.shipmentDetail.service.ShipmentDetailService; +import com.huaheng.pc.shipment.shipmentHeader.domain.ShipmentHeader; +import com.huaheng.pc.shipment.shipmentHeader.service.ShipmentHeaderService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; +import org.springframework.transaction.annotation.Transactional; + +import java.math.BigDecimal; +import java.util.ArrayList; +import java.util.List; + +/** + * @author ricard + * @time 19/11/11 + * + */ + + +@Component +@Transactional +public class ShipmentApiService { + + @Autowired + private ShipmentHeaderService shipmentHeaderService; + + @Autowired + private ShipmentDetailService shipmentDetailService; + + @Autowired + private WarehouseService warehouseService; + + @Autowired + private CompanyService companyService; + + @Autowired + private CustomerServiceImpl customerService; + + @Autowired + private ShipmentTypeService shipmentTypeService; + + @Autowired + private MaterialService materialService; + + /** + * 出库单下发 + * + * @param shipmentDomain + * @return + */ + @Transactional + public AjaxResult shipment(ShipmentDomain shipmentDomain){ + + //1、判断出库主单和子单列是否为空 + ShipmentHeader shipmentHeader = shipmentDomain.getShipmentHeader(); + List<ShipmentDetail> shipmentDetails = shipmentDomain.getShipmentDetails(); + if(shipmentHeader == null){ + return AjaxResult.error("出库主单为空"); + } + if(shipmentDetails.size() < 1 || shipmentDetails == null ){ + return AjaxResult.error("出库子单为空"); + } + + //2、检查出库主单的合法性 + AjaxResult ajaxResult = this.checkShipmentHeader(shipmentHeader); + + //3、检查出库子单的合法性 + shipmentDetails =this.checkShipmentDetail(shipmentDetails,shipmentHeader); + + //4、保存出库主表 + BigDecimal totalQty = new BigDecimal(0); + for (ShipmentDetail item: shipmentDetails) { + totalQty.add(item.getShipQty()); + } + shipmentHeader.setTotalLines(shipmentDetails.size()); + shipmentHeader.setTotalQty(totalQty); + shipmentHeader.setCode(shipmentHeaderService.createCode(shipmentHeader.getShipmentType())); + + if(!shipmentHeaderService.save(shipmentHeader)){ + throw new ServiceException("保存出库主表失败"); + } + + //5、保存出库子表 + List<ShipmentDetail> shipmentDetailList = new ArrayList<>(); + for(ShipmentDetail shipmentDetail : shipmentDetails){ + shipmentDetail.setShipmentId(shipmentHeader.getId()); + shipmentDetail.setShipmentCode(shipmentHeader.getCode()); + shipmentDetail.setWarehouseCode(shipmentHeader.getWarehouseCode()); + shipmentDetail.setCompanyCode(shipmentHeader.getCompanyCode()); + } + + int num = 0; + if(shipmentDetails.size() >500 ){ + for(ShipmentDetail item : shipmentDetails){ + num++; + shipmentDetailList.add(item); + if(num % 500 ==0 || num == shipmentDetails.size()){ + if(!shipmentDetailService.insertDetails(shipmentDetailList)){ + throw new ServiceException("保存出库子表失败"); + } + shipmentDetailList=new ArrayList<>(); + } + } + }else { + if(!shipmentDetailService.insertDetails(shipmentDetails)){ + throw new ServiceException("保存出库子表失败"); + } + } + + //6回传添加对象 + LambdaQueryWrapper<ShipmentDetail> lambdaQueryWrapper =Wrappers.lambdaQuery(); + lambdaQueryWrapper.eq(ShipmentDetail::getShipmentId ,shipmentHeader.getId()); + + ShipmentDomain jsonShipmentDomain =new ShipmentDomain(); + jsonShipmentDomain.setShipmentHeader(shipmentHeader); + jsonShipmentDomain.setShipmentDetails(shipmentDetailService.list(lambdaQueryWrapper)); + + return AjaxResult.success(jsonShipmentDomain); + } + + + /** + * 检查出库主单的合法性 + * @param shipmentHeader + * @return + */ + public AjaxResult checkShipmentHeader(ShipmentHeader shipmentHeader){ + //1、判断仓库和货主 + if(StringUtils.isEmpty(shipmentHeader.getWarehouseCode())){ + return AjaxResult.error("仓库为空"); + } + if(StringUtils.isEmpty(shipmentHeader.getCompanyCode())){ + return AjaxResult.error("货主为空"); + } + + + LambdaQueryWrapper<Warehouse> warehouseLamb = Wrappers.lambdaQuery(); + warehouseLamb.eq(Warehouse::getCode,shipmentHeader.getWarehouseCode()); + Warehouse warehouse =warehouseService.getOne(warehouseLamb); + if(warehouse == null){ + return AjaxResult.error("wms没有此仓库"); + } + + LambdaQueryWrapper<Company> companyLamb = Wrappers.lambdaQuery(); + companyLamb.eq(Company::getCode,shipmentHeader.getCompanyCode()); + Company company =companyService.getOne(companyLamb); + if(company == null){ + return AjaxResult.error("wms没有此货主"); + } + + //2、判断出库类型 + LambdaQueryWrapper<ShipmentType> shipmentTypeLamb = Wrappers.lambdaQuery(); + shipmentTypeLamb.eq(ShipmentType::getCode,shipmentHeader.getShipmentType()) + .eq(ShipmentType::getWarehouseCode,shipmentHeader.getWarehouseCode()); + ShipmentType shipmentType =shipmentTypeService.getOne(shipmentTypeLamb); + if(shipmentType == null){ + return AjaxResult.error("wms没有此出库类型"); + } + + //3、检查上游单号是否存在 + LambdaQueryWrapper<ShipmentHeader> shipmentHeaderLamb = Wrappers.lambdaQuery(); + shipmentHeaderLamb.eq(ShipmentHeader::getWarehouseCode,shipmentHeader.getWarehouseCode()) + .eq(ShipmentHeader::getReferCode,shipmentHeader.getReferCode()); + List<ShipmentHeader> shipmentHeaders = shipmentHeaderService.list(shipmentHeaderLamb); + if(shipmentHeaders.size() > 0 || shipmentHeaders != null){ + return AjaxResult.success("出库单已经下发"); + } + + //4、检查客户 + if(StringUtils.isNotEmpty(shipmentHeader.getCustomerCode())){ + LambdaQueryWrapper<Customer> customerLamb = Wrappers.lambdaQuery(); + customerLamb.eq(Customer::getWarehouseCode,shipmentHeader.getWarehouseCode()) + .eq(Customer::getCode,shipmentHeader.getCustomerCode()); + Customer customer = customerService.getOne(customerLamb); + if(customer == null){ + return AjaxResult.error("wms没有此客户"); + } + } + return AjaxResult.success(shipmentHeader); + } + + + /** + * 检查出库子单的合法性 + * @param shipmentDetails + * @return + */ + public List<ShipmentDetail> checkShipmentDetail(List<ShipmentDetail> shipmentDetails,ShipmentHeader shipmentHeader){ + + for(ShipmentDetail shipmentDetail : shipmentDetails) { + //1、检查物料 + if(StringUtils.isEmpty(shipmentDetail.getMaterialCode())){ + throw new ServiceException("物料为空"); + } + LambdaQueryWrapper<Material> materialLamb = Wrappers.lambdaQuery(); + materialLamb.eq(Material::getCode,shipmentDetail.getMaterialCode()) + .eq(Material::getWarehouseCode,shipmentHeader.getWarehouseCode()); + Material material = materialService.getOne(materialLamb); + if(material == null){ + throw new ServiceException("wms没有此物料"); + } + + //2、赋值物料属性 + shipmentDetail.setMaterialName(material.getName()); + shipmentDetail.setMaterialSpec(material.getSpec()); + shipmentDetail.setMaterialUnit(material.getUnit()); + } + return shipmentDetails; + } +} diff --git a/src/main/java/com/huaheng/api/wcs/controller/EmptyOutHandle.java b/src/main/java/com/huaheng/api/wcs/controller/EmptyOutHandle.java index e93e298..4acc564 100644 --- a/src/main/java/com/huaheng/api/wcs/controller/EmptyOutHandle.java +++ b/src/main/java/com/huaheng/api/wcs/controller/EmptyOutHandle.java @@ -1,15 +1,15 @@ package com.huaheng.api.wcs.controller; -import com.huaheng.api.wcs.domain.WcsTask; import com.huaheng.api.wcs.service.emptyOutHandle.EmptyOutHandleService; -import com.huaheng.api.wcs.service.overrideHandle.OverrideHandleService; import com.huaheng.framework.aspectj.lang.annotation.Log; import com.huaheng.framework.aspectj.lang.constant.BusinessType; import com.huaheng.framework.web.controller.BaseController; import com.huaheng.framework.web.domain.AjaxResult; -import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; -import org.springframework.web.bind.annotation.*; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.bind.annotation.RestController; import javax.annotation.Resource; @@ -21,7 +21,7 @@ import javax.annotation.Resource; */ @RestController -@RequestMapping("/api/WCS/v2") +@RequestMapping("/API/WMS/v2") public class EmptyOutHandle extends BaseController { @Resource @@ -31,9 +31,9 @@ public class EmptyOutHandle extends BaseController { @PostMapping("/EmptyOutHandle") @ApiOperation("wcs空出处理") @ResponseBody - public AjaxResult EmptyOutHandle(@RequestBody WcsTask wcsTask) + public AjaxResult EmptyOutHandle(String taskNo) { - AjaxResult ajaxResult =emptyOutHandleService.EmptyOutHandle(wcsTask) ; + AjaxResult ajaxResult =emptyOutHandleService.EmptyOutHandle(taskNo) ; return ajaxResult; } diff --git a/src/main/java/com/huaheng/api/wcs/controller/OverrideHandle.java b/src/main/java/com/huaheng/api/wcs/controller/OverrideHandle.java index c778985..1d3acd6 100644 --- a/src/main/java/com/huaheng/api/wcs/controller/OverrideHandle.java +++ b/src/main/java/com/huaheng/api/wcs/controller/OverrideHandle.java @@ -20,20 +20,18 @@ import javax.annotation.Resource; */ @RestController -@RequestMapping("/api/WCS/v2") +@RequestMapping("/API/WMS/v2") public class OverrideHandle extends BaseController { @Resource private OverrideHandleService overrideHandleService; @Log(title = "wcs重入处理", action = BusinessType.INSERT) - @PostMapping("/OverrideHandle") + @PostMapping("/ReenterHandle") @ApiOperation("wcs重入处理") @ResponseBody - public AjaxResult OverrideHandle(@RequestBody TaskFinishDomain taskFinishDomain) - { - AjaxResult ajaxResult =overrideHandleService.OverrideHandle(taskFinishDomain) ; - return ajaxResult; + public AjaxResult ReenterHandle(@RequestBody TaskFinishDomain taskFinishDomain) { + return overrideHandleService.OverrideHandle(taskFinishDomain); } diff --git a/src/main/java/com/huaheng/api/wcs/controller/TaskFinish.java b/src/main/java/com/huaheng/api/wcs/controller/TaskFinish.java index 1806259..53f9194 100644 --- a/src/main/java/com/huaheng/api/wcs/controller/TaskFinish.java +++ b/src/main/java/com/huaheng/api/wcs/controller/TaskFinish.java @@ -21,7 +21,7 @@ import javax.annotation.Resource; */ @RestController -@RequestMapping("/api/WCS/v2") +@RequestMapping("/API/WCS/v2") public class TaskFinish extends BaseController { @Resource diff --git a/src/main/java/com/huaheng/api/wcs/controller/TaskInfoController.java b/src/main/java/com/huaheng/api/wcs/controller/TaskInfoController.java new file mode 100644 index 0000000..24166ef --- /dev/null +++ b/src/main/java/com/huaheng/api/wcs/controller/TaskInfoController.java @@ -0,0 +1,27 @@ +package com.huaheng.api.wcs.controller; + +import com.huaheng.api.wcs.service.taskCancel.TaskCancelService; +import com.huaheng.framework.web.controller.BaseController; +import com.huaheng.framework.web.domain.AjaxResult; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.annotation.Resource; + +/** + * Created by Enzo Cotter on 2019/12/6. + */ +@RestController +@RequestMapping("/API/taskInfo") +public class TaskInfoController extends BaseController { + + @Resource + private TaskCancelService taskCancelService; + + + @GetMapping + public AjaxResult info(Integer id) { + return taskCancelService.TaskCance(id); + } +} diff --git a/src/main/java/com/huaheng/api/wcs/controller/WarecellAllocation.java b/src/main/java/com/huaheng/api/wcs/controller/WarecellAllocation.java index 9dcbb1c..eec6fe0 100644 --- a/src/main/java/com/huaheng/api/wcs/controller/WarecellAllocation.java +++ b/src/main/java/com/huaheng/api/wcs/controller/WarecellAllocation.java @@ -21,7 +21,7 @@ import javax.annotation.Resource; */ @RestController -@RequestMapping("/api/WCS/v2") +@RequestMapping("/API/WMS/v2") public class WarecellAllocation extends BaseController { @Resource @@ -31,10 +31,30 @@ public class WarecellAllocation extends BaseController { @PostMapping("/WarecellAllocation") @ApiOperation(value="wcs仓位分配", notes="wcs仓位分配", httpMethod = "POST") @ResponseBody - public AjaxResult WarecellAllocation(@RequestBody WcsTask wcsTask) - { - AjaxResult ajaxResult =warecellAllocationService.WarecellAllocation(wcsTask) ; - return ajaxResult; + public AjaxResult WarecellAllocation(String taskNo, String length, String width, String height, String weight, String destination) { + WcsTask wcsTask = new WcsTask(); + wcsTask.setTaskNo(taskNo); + wcsTask.setLength(length); + wcsTask.setWidth(width); + wcsTask.setHeight(height); + wcsTask.setWeight(weight); + wcsTask.setDestination(destination); + return warecellAllocationService.warecellAllocation(wcsTask); + } + + + @Log(title = "wcs去向分配", action = BusinessType.INSERT) + @PostMapping("/DestinationAllocation") + @ApiOperation(value="wcs去向分配", notes="wcs去向分配", httpMethod = "POST") + @ResponseBody + public AjaxResult DestinationAllocation(String taskNo, String length, String width, String height, String weight) { + WcsTask wcsTask = new WcsTask(); + wcsTask.setTaskNo(taskNo); + wcsTask.setLength(length); + wcsTask.setWidth(width); + wcsTask.setHeight(height); + wcsTask.setWeight(weight); + return warecellAllocationService.destinationAllocation(wcsTask); } diff --git a/src/main/java/com/huaheng/api/wcs/domain/TaskFinishDomain.java b/src/main/java/com/huaheng/api/wcs/domain/TaskFinishDomain.java index 2ba3544..7cacfe2 100644 --- a/src/main/java/com/huaheng/api/wcs/domain/TaskFinishDomain.java +++ b/src/main/java/com/huaheng/api/wcs/domain/TaskFinishDomain.java @@ -18,9 +18,10 @@ public class TaskFinishDomain { //空出,int,1:空出 0:正常,必填 private Integer isEmptyOut; + //取货错,int,1:取货错 0:正常 必填 + private Integer isForkError; + //重入的库位编码,string (50),默认0,必填 private String redirectionLocationCode; - //目的位置编码,string (50),默认0 ",必填 - private String toLocationCode; } diff --git a/src/main/java/com/huaheng/api/wcs/domain/WcsTask.java b/src/main/java/com/huaheng/api/wcs/domain/WcsTask.java index 3176255..837183a 100644 --- a/src/main/java/com/huaheng/api/wcs/domain/WcsTask.java +++ b/src/main/java/com/huaheng/api/wcs/domain/WcsTask.java @@ -30,6 +30,8 @@ public class WcsTask implements Serializable { //平台 private String platform; + private String warehouseCode; + //容器编码 private String containerCode; @@ -51,8 +53,8 @@ public class WcsTask implements Serializable { //优先级,int,默认100 ,数字越小优先级越高",必填 private Integer priority; - //巷道 - private String roadWay; + //目标 + private String destination; //长 private String length; diff --git a/src/main/java/com/huaheng/api/wcs/service/emptyOutHandle/EmptyOutHandleService.java b/src/main/java/com/huaheng/api/wcs/service/emptyOutHandle/EmptyOutHandleService.java index 069839a..7acda24 100644 --- a/src/main/java/com/huaheng/api/wcs/service/emptyOutHandle/EmptyOutHandleService.java +++ b/src/main/java/com/huaheng/api/wcs/service/emptyOutHandle/EmptyOutHandleService.java @@ -5,5 +5,5 @@ import com.huaheng.framework.web.domain.AjaxResult; public interface EmptyOutHandleService { //空出处理 - AjaxResult EmptyOutHandle(WcsTask wcsTask); + AjaxResult EmptyOutHandle(String taskNo); } diff --git a/src/main/java/com/huaheng/api/wcs/service/emptyOutHandle/EmptyOutHandleServiceImpl.java b/src/main/java/com/huaheng/api/wcs/service/emptyOutHandle/EmptyOutHandleServiceImpl.java index ff615fb..edb095c 100644 --- a/src/main/java/com/huaheng/api/wcs/service/emptyOutHandle/EmptyOutHandleServiceImpl.java +++ b/src/main/java/com/huaheng/api/wcs/service/emptyOutHandle/EmptyOutHandleServiceImpl.java @@ -21,20 +21,20 @@ public class EmptyOutHandleServiceImpl implements EmptyOutHandleService { * 1、判断非空字段 * 2、根据任务号查找任务 * 3、修改该任务为空出,过后处理 - * @param wcsTask + * @param taskNo * @return */ @Override @Transactional - public AjaxResult EmptyOutHandle(WcsTask wcsTask) { + public AjaxResult EmptyOutHandle(String taskNo) { //1、判断非空字段 - if(StringUtils.isEmpty(wcsTask.getTaskNo())){ + if(StringUtils.isEmpty(taskNo)){ return AjaxResult.error("任务号为空"); } //2、根据任务号查找任务 - TaskHeader taskHeader = taskHeaderService.getById(Integer.valueOf(wcsTask.getTaskNo())); + TaskHeader taskHeader = taskHeaderService.getById(Integer.valueOf(taskNo)); if(taskHeader == null){ return AjaxResult.error("任务号错误,没有找到该任务"); } diff --git a/src/main/java/com/huaheng/api/wcs/service/overrideHandle/OverrideHandleServiceImpl.java b/src/main/java/com/huaheng/api/wcs/service/overrideHandle/OverrideHandleServiceImpl.java index 91f2b1e..07a89f7 100644 --- a/src/main/java/com/huaheng/api/wcs/service/overrideHandle/OverrideHandleServiceImpl.java +++ b/src/main/java/com/huaheng/api/wcs/service/overrideHandle/OverrideHandleServiceImpl.java @@ -3,7 +3,6 @@ package com.huaheng.api.wcs.service.overrideHandle; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.huaheng.api.wcs.domain.TaskFinishDomain; -import com.huaheng.api.wcs.domain.WcsTask; import com.huaheng.api.wcs.service.warecellAllocation.WarecellAllocationService; import com.huaheng.common.exception.service.ServiceException; import com.huaheng.common.utils.StringUtils; @@ -64,9 +63,6 @@ public class OverrideHandleServiceImpl implements OverrideHandleService { if(StringUtils.isEmpty(taskFinishDomain.getTaskNo())){ return AjaxResult.error("任务号为空"); } - if(StringUtils.isEmpty(taskFinishDomain.getToLocationCode())){ - return AjaxResult.error("目的库位为空"); - } if(StringUtils.isEmpty(taskFinishDomain.getRedirectionLocationCode())){ return AjaxResult.error("重入的库位编码为空"); } diff --git a/src/main/java/com/huaheng/api/wcs/service/pickupErrorHandle/PickupErrorHandleService.java b/src/main/java/com/huaheng/api/wcs/service/pickupErrorHandle/PickupErrorHandleService.java new file mode 100644 index 0000000..5303c4c --- /dev/null +++ b/src/main/java/com/huaheng/api/wcs/service/pickupErrorHandle/PickupErrorHandleService.java @@ -0,0 +1,9 @@ +package com.huaheng.api.wcs.service.pickupErrorHandle; + +import com.huaheng.framework.web.domain.AjaxResult; + +public interface PickupErrorHandleService { + + //取货错处理 + AjaxResult PickupErrorHandle(String taskNo); +} diff --git a/src/main/java/com/huaheng/api/wcs/service/pickupErrorHandle/PickupErrorHandleServiceImpl.java b/src/main/java/com/huaheng/api/wcs/service/pickupErrorHandle/PickupErrorHandleServiceImpl.java new file mode 100644 index 0000000..c6177e8 --- /dev/null +++ b/src/main/java/com/huaheng/api/wcs/service/pickupErrorHandle/PickupErrorHandleServiceImpl.java @@ -0,0 +1,52 @@ +package com.huaheng.api.wcs.service.pickupErrorHandle; + +import com.huaheng.common.utils.StringUtils; +import com.huaheng.framework.web.domain.AjaxResult; +import com.huaheng.pc.task.taskHeader.domain.TaskHeader; +import com.huaheng.pc.task.taskHeader.service.TaskHeaderService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +@Service +public class PickupErrorHandleServiceImpl implements PickupErrorHandleService { + + + @Autowired + private TaskHeaderService taskHeaderService; + + + /** + * 取货错处理 + * 1、判断非空字段 + * 2、根据任务号查找任务 + * 3、修改该任务为取货错,过后处理 + * @param taskNo + * @return + */ + @Override + @Transactional + public AjaxResult PickupErrorHandle(String taskNo) { + //1、判断非空字段 + if(StringUtils.isEmpty(taskNo)){ + return AjaxResult.error("任务号为空"); + } + + //2、根据任务号查找任务 + TaskHeader taskHeader = taskHeaderService.getById(Integer.valueOf(taskNo)); + if(taskHeader == null){ + return AjaxResult.error("任务号错误,没有找到该任务"); + } + if(taskHeader.getStatus() == 100){ + return AjaxResult.error("任务已完成"); + } + + //3、修改该任务为取货错,过后处理 + taskHeader.setExceptionCode("取货错误"); + Boolean flag = taskHeaderService.updateById(taskHeader); + if(flag == false){ + return AjaxResult.error("修改任务失败,取货错处理失败"); + } + return AjaxResult.success("取货错处理成功"); + } +} diff --git a/src/main/java/com/huaheng/api/wcs/service/stationInfo/StationInfoServiceImpl.java b/src/main/java/com/huaheng/api/wcs/service/stationInfo/StationInfoServiceImpl.java index 4292c3e..9b645f5 100644 --- a/src/main/java/com/huaheng/api/wcs/service/stationInfo/StationInfoServiceImpl.java +++ b/src/main/java/com/huaheng/api/wcs/service/stationInfo/StationInfoServiceImpl.java @@ -11,6 +11,11 @@ import com.huaheng.pc.config.address.service.AddressService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + @Service public class StationInfoServiceImpl implements StationInfoService { @@ -34,13 +39,15 @@ public class StationInfoServiceImpl implements StationInfoService { } //2、实体转换 - WcsTask wcsTask =new WcsTask(); - wcsTask.setStation(station); + Map<String , List> map =new HashMap<>(); + List list = new ArrayList(); + list.add(station); + map.put("port",list); //3、发送数据 String param="wcs"; String url=addressService.selectAddress(param)+"StationInfo"; - String JsonParam = JSON.toJSONString(wcsTask); + String JsonParam = JSON.toJSONString(map); String result = HttpUtils.bodypost(url, JsonParam); if(StringUtils.isEmpty(result)){ throw new ServiceException("接口地址错误"); diff --git a/src/main/java/com/huaheng/api/wcs/service/taskAssignService/TaskAssignServiceImpl.java b/src/main/java/com/huaheng/api/wcs/service/taskAssignService/TaskAssignServiceImpl.java index bde0822..19b4ab0 100644 --- a/src/main/java/com/huaheng/api/wcs/service/taskAssignService/TaskAssignServiceImpl.java +++ b/src/main/java/com/huaheng/api/wcs/service/taskAssignService/TaskAssignServiceImpl.java @@ -9,6 +9,7 @@ import com.huaheng.api.wcs.domain.WcsTask; import com.huaheng.common.exception.service.ServiceException; import com.huaheng.common.utils.StringUtils; import com.huaheng.common.utils.http.HttpUtils; +import com.huaheng.common.utils.security.ShiroUtils; import com.huaheng.framework.web.domain.AjaxResult; import com.huaheng.pc.config.address.service.AddressService; import com.huaheng.pc.task.taskDetail.domain.TaskDetail; @@ -89,7 +90,9 @@ public class TaskAssignServiceImpl implements TaskAssignService { //3、转换实体,初始化wcs任务实体 WcsTask wcsTask = new WcsTask(); +// wcsTask.setWarehouseCode(ShiroUtils.getWarehouseCode()); wcsTask.setTaskNo(taskHeader.getId().toString()); + wcsTask.setWarehouseCode("XT0001"); wcsTask.setPreTaskNo("0"); wcsTask.setTaskType(taskHeader.getTaskType().toString()); wcsTask.setFromPort("1000"); diff --git a/src/main/java/com/huaheng/api/wcs/service/taskCancel/TaskCancelService.java b/src/main/java/com/huaheng/api/wcs/service/taskCancel/TaskCancelService.java index 5bf9238..b53f6ee 100644 --- a/src/main/java/com/huaheng/api/wcs/service/taskCancel/TaskCancelService.java +++ b/src/main/java/com/huaheng/api/wcs/service/taskCancel/TaskCancelService.java @@ -1,6 +1,5 @@ package com.huaheng.api.wcs.service.taskCancel; -import com.huaheng.api.wcs.domain.WcsTask; import com.huaheng.framework.web.domain.AjaxResult; public interface TaskCancelService { diff --git a/src/main/java/com/huaheng/api/wcs/service/taskCancel/TaskCancelServiceImpl.java b/src/main/java/com/huaheng/api/wcs/service/taskCancel/TaskCancelServiceImpl.java index 027dd51..12a37ef 100644 --- a/src/main/java/com/huaheng/api/wcs/service/taskCancel/TaskCancelServiceImpl.java +++ b/src/main/java/com/huaheng/api/wcs/service/taskCancel/TaskCancelServiceImpl.java @@ -34,13 +34,13 @@ public class TaskCancelServiceImpl implements TaskCancelService { //2、转换实体 - WcsTask wcsTask = new WcsTask(); - wcsTask.setTaskNo(id.toString()); +// WcsTask wcsTask = new WcsTask(); +// wcsTask.setTaskNo(id.toString()); //3、发送数据 String param="wcs"; String url=addressService.selectAddress(param)+"TaskCancel"; - String JsonParam = JSON.toJSONString(wcsTask); + String JsonParam = JSON.toJSONString(id.toString()); String result = HttpUtils.bodypost(url, JsonParam); if(StringUtils.isEmpty(result)){ throw new ServiceException("接口地址错误"); diff --git a/src/main/java/com/huaheng/api/wcs/service/taskFinish/TaskFinishServiceImpl.java b/src/main/java/com/huaheng/api/wcs/service/taskFinish/TaskFinishServiceImpl.java index 6355658..832e478 100644 --- a/src/main/java/com/huaheng/api/wcs/service/taskFinish/TaskFinishServiceImpl.java +++ b/src/main/java/com/huaheng/api/wcs/service/taskFinish/TaskFinishServiceImpl.java @@ -3,6 +3,8 @@ package com.huaheng.api.wcs.service.taskFinish; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.huaheng.api.wcs.domain.TaskFinishDomain; +import com.huaheng.api.wcs.service.emptyOutHandle.EmptyOutHandleService; +import com.huaheng.api.wcs.service.overrideHandle.OverrideHandleService; import com.huaheng.common.support.Convert; import com.huaheng.common.utils.StringUtils; import com.huaheng.framework.web.domain.AjaxResult; @@ -16,6 +18,10 @@ public class TaskFinishServiceImpl implements TaskFinishService { @Autowired private TaskHeaderService taskHeaderService; + @Autowired + private EmptyOutHandleService emptyOutHandleService; + @Autowired + private OverrideHandleService overrideHandleService; //任务完成 @Override @@ -24,22 +30,23 @@ public class TaskFinishServiceImpl implements TaskFinishService { if(StringUtils.isEmpty(taskFinishDomain.getTaskNo())){ return AjaxResult.error("任务号为空"); } + + //1、空出处理 if(taskFinishDomain.getIsEmptyOut() == 1){ - LambdaQueryWrapper<TaskHeader> lam = Wrappers.lambdaQuery(); - lam.eq(TaskHeader::getId,Integer.valueOf(taskFinishDomain.getTaskNo())); - TaskHeader taskHeader = taskHeaderService.getOne(lam); - if(taskHeader == null){ - return AjaxResult.error("wms系统没有此任务号"); - } - if(StringUtils.isEmpty(taskHeader.getExceptionCode())) { - taskHeader.setExceptionCode("空托出库"); - Boolean flag = taskHeaderService.updateById(taskHeader); - if (flag == false) { - return AjaxResult.error("修改任务失败,空出处理失败"); - } - } - return AjaxResult.success("成功"); + ajaxResult = emptyOutHandleService.EmptyOutHandle(taskFinishDomain.getTaskNo()); + } + + //2、重入处理 + if(taskFinishDomain.getIsDoubleIn() == 1){ + ajaxResult = overrideHandleService.OverrideHandle(taskFinishDomain); } + + //3、取货错 + if(taskFinishDomain.getIsForkError() == 1){ + + } + + //任务完成 try{ ajaxResult=taskHeaderService.completeTaskByWMS(Convert.toIntArray(taskFinishDomain.getTaskNo())); } catch (Exception e) { diff --git a/src/main/java/com/huaheng/api/wcs/service/warecellAllocation/WarecellAllocationService.java b/src/main/java/com/huaheng/api/wcs/service/warecellAllocation/WarecellAllocationService.java index 5527afd..7f0ac35 100644 --- a/src/main/java/com/huaheng/api/wcs/service/warecellAllocation/WarecellAllocationService.java +++ b/src/main/java/com/huaheng/api/wcs/service/warecellAllocation/WarecellAllocationService.java @@ -6,8 +6,11 @@ import com.huaheng.pc.receipt.receiptContainerDetail.domain.ReceiptContainerDeta public interface WarecellAllocationService { - //仓位分配 - AjaxResult WarecellAllocation(WcsTask wcsTask); + /**仓位分配*/ + AjaxResult warecellAllocation(WcsTask wcsTask); String taskPositioning(ReceiptContainerDetail receiptContainerDetail); + + //去向分配 + AjaxResult destinationAllocation(WcsTask wcsTask); } diff --git a/src/main/java/com/huaheng/api/wcs/service/warecellAllocation/WarecellAllocationServiceImpl.java b/src/main/java/com/huaheng/api/wcs/service/warecellAllocation/WarecellAllocationServiceImpl.java index c874a1e..dc811a8 100644 --- a/src/main/java/com/huaheng/api/wcs/service/warecellAllocation/WarecellAllocationServiceImpl.java +++ b/src/main/java/com/huaheng/api/wcs/service/warecellAllocation/WarecellAllocationServiceImpl.java @@ -2,7 +2,6 @@ package com.huaheng.api.wcs.service.warecellAllocation; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; -import com.huaheng.api.wcs.domain.WcsTask; import com.huaheng.common.exception.service.ServiceException; import com.huaheng.common.utils.StringUtils; import com.huaheng.common.utils.security.ShiroUtils; @@ -31,7 +30,8 @@ import com.huaheng.pc.task.taskDetail.service.TaskDetailService; import com.huaheng.pc.task.taskHeader.domain.TaskHeader; import com.huaheng.pc.task.taskHeader.service.TaskHeaderService; import org.springframework.stereotype.Service; - +import org.springframework.transaction.annotation.Transactional; +import com.huaheng.api.wcs.domain.WcsTask; import javax.annotation.Resource; import java.util.ArrayList; import java.util.List; @@ -74,14 +74,15 @@ public class WarecellAllocationServiceImpl implements WarecellAllocationService * @return */ @Override - public AjaxResult WarecellAllocation(WcsTask wcsTask) { + @Transactional(rollbackFor = Exception.class) + public AjaxResult warecellAllocation(WcsTask wcsTask) { //1、判断非空字段 if(StringUtils.isEmpty(wcsTask.getTaskNo())){ return AjaxResult.error("任务号为空"); } - if(StringUtils.isEmpty(wcsTask.getRoadWay())){ - return AjaxResult.error("巷道为空"); + if(StringUtils.isEmpty(wcsTask.getDestination())){ + return AjaxResult.error("目的为空"); } if(StringUtils.isNull(wcsTask.getLength())){ return AjaxResult.error("长为空"); @@ -114,6 +115,7 @@ public class WarecellAllocationServiceImpl implements WarecellAllocationService taskDetailLambda.eq(TaskDetail::getTaskId, wcsTask.getTaskNo()); List<TaskDetail> taskDetailList = taskDetailService.list(taskDetailLambda); + /* 循环查询入库组盘明细*/ List<ReceiptContainerDetail> receiptContainerDetailList = new ArrayList<>(); for (TaskDetail taskDetail : taskDetailList) { receiptContainerDetailList.add(receiptContainerDetailService.getById(taskDetail.getAllocationId())); @@ -121,13 +123,15 @@ public class WarecellAllocationServiceImpl implements WarecellAllocationService //去重 receiptContainerDetailList = receiptContainerDetailList.stream().distinct().collect(Collectors.toList()); + /* 循环入库组盘明细,重新分配库位*/ for (ReceiptContainerDetail receiptContainerDetail : receiptContainerDetailList) { ReceiptContainerHeader receiptContainerHeader = receiptContainerHeaderService.getById(receiptContainerDetail.getReceiptContainerId()); String locatingRule = this.taskPositioning(receiptContainerDetail); LambdaQueryWrapper<FilterConfigDetail> filterConfigDetailLambda = Wrappers.lambdaQuery(); - filterConfigDetailLambda.eq(FilterConfigDetail::getCode, locatingRule); + filterConfigDetailLambda.eq(FilterConfigDetail::getCode, locatingRule) + .eq(FilterConfigDetail::getWarehouseCode, ShiroUtils.getWarehouseCode()); FilterConfigDetail filterConfigDetail = filterConfigDetailService.getOne(filterConfigDetailLambda); String[] locatingRules = filterConfigDetail.getStatement().split("limit"); @@ -136,7 +140,7 @@ public class WarecellAllocationServiceImpl implements WarecellAllocationService locationLambda.last(locatingRules[0]); List<Location> locationList = locationService.list(locationLambda); // locationList.stream().filter(location -> location.getLocationType().equals(locationTypeList.get(0))); - locationCode = filter(locationList, locationTypeList, wcsTask.getRoadWay()); + locationCode = filter(locationList, locationTypeList, wcsTask.getDestination()); if (StringUtils.isEmpty(locationCode)){ throw new ServiceException("没有库位可分配"); } @@ -155,13 +159,13 @@ public class WarecellAllocationServiceImpl implements WarecellAllocationService //把库位编码赋到该入库组盘头表下的所有明细 LambdaQueryWrapper<ReceiptContainerDetail> lambda = Wrappers.lambdaQuery(); - lambda.eq(ReceiptContainerDetail::getReceiptContainerId, receiptContainerHeader.getId()); + lambda.eq(ReceiptContainerDetail::getReceiptContainerId, receiptContainerHeader.getId()) + .eq(ReceiptContainerDetail::getWarehouseCode, ShiroUtils.getWarehouseCode()); List<ReceiptContainerDetail> receiptContainerDetails = receiptContainerDetailService.list(lambda); for (ReceiptContainerDetail receiptContainerDetail2: receiptContainerDetails) { receiptContainerDetail2.setLocationCode(locationCode); if (!receiptContainerDetailService.updateById(receiptContainerDetail2)){throw new ServiceException("更新库位编码到入库组盘明细");} } - } if (StringUtils.isNotEmpty(locationCode)){ @@ -175,9 +179,7 @@ public class WarecellAllocationServiceImpl implements WarecellAllocationService taskHeader.setToLocation(locationCode); if (!taskHeaderService.updateById(taskHeader)){throw new ServiceException("更新任务头表目标库位失败");} - WcsTask wcsTaskResult = new WcsTask(); - wcsTaskResult.setToLocationCode(locationCode); - return AjaxResult.success(wcsTaskResult); + return AjaxResult.success(locationCode); } return AjaxResult.error("错误"); @@ -233,7 +235,8 @@ public class WarecellAllocationServiceImpl implements WarecellAllocationService .eq(ConfigValue::getRecordType, "入库首选项"); ConfigValue configValue = configValueService.getOne(configValueLambda); LambdaQueryWrapper<ReceiptPreference> receiptPreferenceLambda = Wrappers.lambdaQuery(); - receiptPreferenceLambda.eq(ReceiptPreference::getCode, configValue.getValue()); + receiptPreferenceLambda.eq(ReceiptPreference::getCode, configValue.getValue()) + .eq(ReceiptPreference::getWarehouseCode, ShiroUtils.getWarehouseCode()); ReceiptPreference receiptPreference = receiptPreferenceService.getOne(receiptPreferenceLambda); locatingRule = receiptPreferenceService.getOne(receiptPreferenceLambda).getLocationRule(); } @@ -247,4 +250,90 @@ public class WarecellAllocationServiceImpl implements WarecellAllocationService return locatingRule; } -} + + + /** + * 去向分配 + */ + @Override + public AjaxResult destinationAllocation(WcsTask wcsTask) { + + //1、判断非空字段 + if(StringUtils.isEmpty(wcsTask.getTaskNo())){ + return AjaxResult.error("任务号为空"); + } + if(StringUtils.isNull(wcsTask.getLength())){ + return AjaxResult.error("长为空"); + } + if(StringUtils.isNull(wcsTask.getWidth())){ + return AjaxResult.error("宽为空"); + } + if(StringUtils.isNull(wcsTask.getHeight())){ + return AjaxResult.error("高为空"); + } + if(StringUtils.isNull(wcsTask.getWeight())){ + return AjaxResult.error("重为空"); + } + + //查询满足条件的库位类型 + LambdaQueryWrapper<LocationType> lambdaQueryWrapper = Wrappers.lambdaQuery(); + lambdaQueryWrapper.gt(LocationType::getLength,wcsTask.getLength()) + .gt(LocationType::getWidth, wcsTask.getWidth()) + .gt(LocationType::getHeight, wcsTask.getHeight()) + .gt(LocationType::getMaxWeight, wcsTask.getWidth()); + List<LocationType> locationTypeList = locationTypeService.list(lambdaQueryWrapper); + + if (locationTypeList.isEmpty()){ + return AjaxResult.error("没有区域可分配"); + } + List<String> codeList = new ArrayList<>(); + for (LocationType locationType: locationTypeList) { + codeList.add(locationType.getCode()); + } + + //定位库位List + List<String> positioningLocationCodeList = null; + //查询任务明细 + LambdaQueryWrapper<TaskDetail> taskDetailLambda = Wrappers.lambdaQuery(); + taskDetailLambda.eq(TaskDetail::getTaskId, wcsTask.getTaskNo()); + List<TaskDetail> taskDetailList = taskDetailService.list(taskDetailLambda); + + /* 循环查询入库组盘明细*/ + List<ReceiptContainerDetail> receiptContainerDetailList = new ArrayList<>(); + for (TaskDetail taskDetail : taskDetailList) { + receiptContainerDetailList.add(receiptContainerDetailService.getById(taskDetail.getAllocationId())); + } + //去重 + receiptContainerDetailList = receiptContainerDetailList.stream().distinct().collect(Collectors.toList()); + + for (ReceiptContainerDetail receiptContainerDetail : receiptContainerDetailList) { + String locatingRule = this.taskPositioning(receiptContainerDetail); + + LambdaQueryWrapper<FilterConfigDetail> filterConfigDetailLambda = Wrappers.lambdaQuery(); + filterConfigDetailLambda.eq(FilterConfigDetail::getCode, locatingRule) + .eq(FilterConfigDetail::getWarehouseCode, ShiroUtils.getWarehouseCode()); + FilterConfigDetail filterConfigDetail = filterConfigDetailService.getOne(filterConfigDetailLambda); + String[] locatingRules = filterConfigDetail.getStatement().split("limit"); + + //根据定位规则查询库位编码 + LambdaQueryWrapper<Location> locationLambda = Wrappers.lambdaQuery(); + locationLambda.last(locatingRules[0]); + List<Location> locationList = locationService.list(locationLambda); + List<String> locationCodeList = locationTypeList.stream().map(t-> t.getCode()).collect(Collectors.toList()); + List<Location> newLocation = locationList.stream().filter(t-> locationCodeList.contains(t.getLocationType())).collect(Collectors.toList()); + if (!newLocation.isEmpty()){ + positioningLocationCodeList.add(newLocation.get(0).getCode()); + } + + if (StringUtils.isEmpty(positioningLocationCodeList)){ + throw new ServiceException("没有区域可分配"); + } + } + + LambdaQueryWrapper<Location> locationLambdaQueryWrapper = Wrappers.lambdaQuery(); + locationLambdaQueryWrapper.eq(Location::getCode, positioningLocationCodeList.get(0)); + Location location = locationService.getOne(locationLambdaQueryWrapper); + String destinationArea = location.getRoadway(); + return AjaxResult.success(destinationArea); + } +} \ No newline at end of file diff --git a/src/main/java/com/huaheng/common/constant/QuantityConstant.java b/src/main/java/com/huaheng/common/constant/QuantityConstant.java index 252a0fe..c5cfcd0 100644 --- a/src/main/java/com/huaheng/common/constant/QuantityConstant.java +++ b/src/main/java/com/huaheng/common/constant/QuantityConstant.java @@ -348,5 +348,9 @@ public class QuantityConstant { //在库抽检 public static final Integer CHECK_TYPE_SELECT = 300; + //空货架 + public static final Integer POINTS_EMPTY = 0; + //非空货架 + public static final Integer POINTS_SOME = 1; } diff --git a/src/main/java/com/huaheng/common/jasper/DocType.java b/src/main/java/com/huaheng/common/jasper/DocType.java new file mode 100644 index 0000000..6956c15 --- /dev/null +++ b/src/main/java/com/huaheng/common/jasper/DocType.java @@ -0,0 +1,14 @@ +package com.huaheng.common.jasper; + +/** + * 定义了报表输出类型,固定了可输出类型 + * @author ricard + * @date 19/11/21 + * + */ + +public enum DocType { + + PDF, HTML, XLS, XLSX, XML, RTF, CSV, TXT, DOC + +} diff --git a/src/main/java/com/huaheng/common/jasper/DocTypeUtil.java b/src/main/java/com/huaheng/common/jasper/DocTypeUtil.java new file mode 100644 index 0000000..a2749dd --- /dev/null +++ b/src/main/java/com/huaheng/common/jasper/DocTypeUtil.java @@ -0,0 +1,42 @@ +package com.huaheng.common.jasper; + + +/** + * 格式工具类 + * @author ricard + * @date 19/11/21 + * + */ +public class DocTypeUtil { + /** + * 默认类型PDF + * @param docType + * @return + * + */ + + public static DocType getEnumDocType(String docType){ + //默认PDF + DocType type = DocType.PDF; + docType = docType.toUpperCase(); + + if(docType.equals("DOC")){ + type =DocType.DOC; + } else if (docType.equals("XLS")) { + type = DocType.XLS; + } else if(docType.equals("XLSX")) { + type = DocType.XLSX; + }else if (docType.equals("XML")) { + type = DocType.XML; + } else if (docType.equals("RTF")) { + type = DocType.RTF; + } else if (docType.equals("CSV")) { + type = DocType.CSV; + } else if (docType.equals("HTML")) { + type = DocType.HTML; + } else if (docType.equals("TXT")) { + type = DocType.TXT; + } + return type; + } +} diff --git a/src/main/java/com/huaheng/common/jasper/JasperreportUtils.java b/src/main/java/com/huaheng/common/jasper/JasperreportUtils.java new file mode 100644 index 0000000..62b9a61 --- /dev/null +++ b/src/main/java/com/huaheng/common/jasper/JasperreportUtils.java @@ -0,0 +1,497 @@ +package com.huaheng.common.jasper; + +import net.sf.jasperreports.engine.*; +import net.sf.jasperreports.engine.export.*; +import net.sf.jasperreports.engine.export.ooxml.JRXlsxExporter; +import net.sf.jasperreports.engine.fill.JRFileVirtualizer; +import net.sf.jasperreports.export.*; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import javax.servlet.ServletException; +import javax.servlet.ServletOutputStream; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import javax.servlet.http.HttpSession; +import java.io.*; +import java.lang.reflect.Field; +import java.math.BigDecimal; +import java.net.URLEncoder; +import java.sql.Connection; +import java.sql.SQLException; +import java.text.DecimalFormat; +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.List; +import java.util.Map; + +/** + * 报表工具类 + * @author ricard + * @date 19/11/21 + * + */ +public class JasperreportUtils { + + + + + private static final Logger LOGGER = LoggerFactory.getLogger(JasperreportUtils.class); + private HttpServletRequest request; + private HttpServletResponse response; + private HttpSession session; + + public JasperreportUtils(HttpServletRequest request, HttpServletResponse response, HttpSession session){ + super(); + this.request = request; + this.response =response; + this.session =request.getSession(); + } + + + + /** + * datasource与parameters填充报表 + * + * @param jasperPath + * @param dataSource + * @param parameters + * @return + * @throws JRException + */ + public JasperPrint getJasperPrint(String jasperPath, Map<String, Object> parameters, JRDataSource dataSource) + throws JRException { + + JasperPrint jasperPrint = JasperFillManager.fillReport(jasperPath, parameters, dataSource); + return jasperPrint; + } + + /** + * connection与parameters填充报表 + * + * @param jasperPath + * @param conn + * @param parameters + * @return + * @throws JRException + */ + public JasperPrint getJasperPrint(String jasperPath, Map<String, Object> parameters, Connection conn) + throws JRException { + + JasperPrint jasperPrint = JasperFillManager.fillReport(jasperPath, parameters, conn); + return jasperPrint; + } + + /** + * 传入list获取jasperPrint + * + * @param jasperPath + * @param parameters + * @param list + * @return + * @throws JRException + */ +// public JasperPrint getJasperPrintWithBeanList(String jasperPath, Map<String, Object> parameters, List<?> list) +// throws JRException,SQLException { +// JRDataSource jrDataSource = null; +// JasperPrint jasperPrint =new JasperPrint(); +// if(null != list && list.size()> 0) { +// jrDataSource = new JRBeanCollectionDataSource(list); +// jasperPrint = JasperFillManager.fillReport(jasperPath, parameters, jrDataSource); +// }else { +// jasperPrint = JasperFillManager.fillReport(jasperPath, parameters, connection); +// } +// return jasperPrint; +// } + + + + /** + * 获得相应类型的Content type + * + * @param docType + * @return + */ + public String getContentType(DocType docType) { + String contentType = "text/html"; + switch (docType) { + case PDF: + contentType = "application/pdf"; + break; + case XLS: + contentType = "application/vnd.ms-excel"; + break; + case XLSX: + contentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"; + break; + case XML: + contentType = "text/xml"; + break; + case RTF: + contentType = "application/rtf"; + break; + case CSV: + contentType = "text/plain"; + break; + case DOC: + contentType = "application/msword"; + break; + } + return contentType; + } + + /** + * jrxml文件 编译为 jasper文件 + * + * @param jrxmlPath + * @param jasperPath + * @throws JRException + */ + public void jrxmlToJsper(String jrxmlPath, String jasperPath) throws JRException { + + JasperCompileManager.compileReportToFile(jrxmlPath, jasperPath); + + } + + + /** + * 生成html文件 + * @param response + * @param connection + * @param jasperPath + * @param fileName + * @param parameters + * @return + */ + public String createHtml(HttpServletResponse response, Connection connection, String jasperPath, String fileName, + Map<String, Object> parameters, String folder) { + SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd"); + String dpath = sdf.format(new Date()); + String path = "D:"+"/reportHtml" + folder + "/" + dpath; + File file = new File(path); + if (!file.exists()) { + file.mkdirs(); + } + String htmlFilePath = path + "/" + fileName; + try { + + JasperPrint jasperPrint = this.getJasperPrint(jasperPath,parameters,connection); + JasperExportManager.exportReportToHtmlFile(jasperPrint, htmlFilePath); + + } catch (Exception ex) { + LOGGER.error("生成html文件错误"+ex.getMessage(),ex); + } + return folder + "/" + dpath + "/" + fileName; + } + + /** + * 传入类型,获取输出器 + * + * @param docType + * @return + */ + @SuppressWarnings("deprecation") + public JRAbstractExporter getJRExporter(DocType docType) { + JRAbstractExporter exporter = null; + switch (docType) { + case PDF: + exporter = new JRPdfExporter(); + break; + case HTML: + exporter = new HtmlExporter(); + break; + case XLS: + exporter = new JRXlsExporter(); + break; + case XLSX: + exporter = new JRXlsxExporter(); + break; + case XML: + exporter = new JRXmlExporter(); + break; + case RTF: + exporter = new JRRtfExporter(); + break; + case CSV: + exporter = new JRCsvExporter(); + break; + case DOC: + exporter = new JRRtfExporter(); + break; + case TXT: + exporter = new JRTextExporter(); + break; + } + return exporter; + } + + + /** + * 生成不同格式报表文档(带缓存) + * + * @param docType + * 文档类型 + * @param jasperPath + */ + @SuppressWarnings("deprecation") + public void createExportDocument(DocType docType, String jasperPath, Map<String, Object> parameters, + String fileName,Connection connection) throws JRException, IOException, ServletException, SQLException { + + //1、传入类型,获取输出器 + JRAbstractExporter exporter = getJRExporter(docType); + + // 2、获取后缀 + String ext = docType.toString().toLowerCase(); + + if (!fileName.toLowerCase().endsWith(ext)) { + fileName += "." + ext; + } + + + // 3、判断资源类型 + if (ext.equals("xls")) { + SimpleXlsReportConfiguration configuration = new SimpleXlsReportConfiguration(); + // 删除记录最下面的空行 + configuration.setRemoveEmptySpaceBetweenRows(Boolean.TRUE); + // 一页一个sheet + configuration.setOnePagePerSheet(Boolean.FALSE); + // 显示边框 背景白色 + configuration.setWhitePageBackground(Boolean.FALSE); + exporter.setConfiguration(configuration); + } + if(ext.equals("xlsx")) { + SimpleXlsxReportConfiguration configuration = new SimpleXlsxReportConfiguration(); + configuration.setRemoveEmptySpaceBetweenRows(Boolean.TRUE); + configuration.setRemoveEmptySpaceBetweenColumns(Boolean.TRUE); + configuration.setWhitePageBackground(Boolean.FALSE); + //自动选择格式 + configuration.setDetectCellType(Boolean.TRUE); + exporter.setConfiguration(configuration); + } + if (ext.equals("txt")) { + SimpleTextReportConfiguration configuration = new SimpleTextReportConfiguration(); + configuration.setCharWidth((float)8); + configuration.setCharHeight((float)15); + exporter.setConfiguration(configuration); + } + + //4、设置格式和头 + response.setContentType(getContentType(docType)); + response.setHeader("Content-Disposition", + "attachment; filename*=UTF-8''" + URLEncoder.encode(fileName, "UTF-8")); + + //5、加缓存 + JRFileVirtualizer virtualizer = new JRFileVirtualizer(2, "D:/temp"); + parameters.put(JRParameter.REPORT_VIRTUALIZER, virtualizer); + virtualizer.setReadOnly(true); + + //6、连接数据库获取jasperPrint + exporter.setExporterInput(new SimpleExporterInput(getJasperPrint(jasperPath, parameters, connection))); + /*exporter.setParameter(JRExporterParameter.JASPER_PRINT, + getJasperPrintWithBeanList(jasperPath, parameters, list));*/ + + OutputStream outStream = null; + PrintWriter outWriter = null; + + // 7、解决中文乱码问题 + response.setCharacterEncoding("UTF-8"); + if (ext.equals("csv") || ext.equals("doc") || ext.equals("rtf") || ext.equals("txt")) { + outWriter = response.getWriter(); + SimpleWriterExporterOutput outPut = new SimpleWriterExporterOutput(outWriter); + exporter.setExporterOutput(outPut); + //exporter.setParameter(JRExporterParameter.OUTPUT_WRITER, outWriter); + } else { + if(ext.equals("xml")) { + outWriter = response.getWriter(); + XmlExporterOutput outPut = new SimpleXmlExporterOutput(outWriter); + exporter.setExporterOutput(outPut); + }else if(ext.equals("html")){ + outWriter = response.getWriter(); + HtmlExporterOutput outPut = new SimpleHtmlExporterOutput(outWriter); + exporter.setExporterOutput(outPut); + }else { + outStream = response.getOutputStream(); + exporter.setExporterOutput(new SimpleOutputStreamExporterOutput(outStream)); + } + } + try { + exporter.exportReport(); + virtualizer.cleanup(); + } catch (JRException e) { + throw new ServletException(e); + } finally { + if (outStream != null) { + try { + outStream.close(); + } catch (IOException ex) { + } + } + if(outWriter != null) { + outWriter.close(); + } + } + } + + + /** + * 输出以分页的形式输出html + * @param jasperPrint + * @param pageStr + * @throws JRException + * @throws IOException + */ + + public void createHtmlByPage(JasperPrint jasperPrint,String pageStr) throws JRException, IOException { + int pageIndex = 0; + int lastPageIndex = 0; + + HtmlExporter exporter = new HtmlExporter(); + if(null != jasperPrint.getPages()) { + lastPageIndex = jasperPrint.getPages().size() - 1; + } + + if(null == pageStr) { + pageStr = "0"; + } + try { + pageIndex = Integer.valueOf(pageStr); + if(pageIndex > 0) { + pageIndex = pageIndex -1 ; + } + } catch (Exception e) { + // 如果得到的非数字字符串 + if("lastPage".equals(pageStr)) { + pageIndex = lastPageIndex; + } + } + + if (pageIndex < 0) { + pageIndex = 0; + } + if (pageIndex > lastPageIndex) { + pageIndex = lastPageIndex; + } + response.setCharacterEncoding("UTF-8"); + try { + PrintWriter out = response.getWriter(); + exporter.setExporterInput(new SimpleExporterInput(jasperPrint)); + + SimpleHtmlReportConfiguration configuration = new SimpleHtmlReportConfiguration(); + configuration.setPageIndex(pageIndex); + exporter.setConfiguration(configuration); + //exporter.setParameter(JRHtmlExporterParameter.IS_USING_IMAGES_TO_ALIGN, Boolean.FALSE); + + HtmlExporterOutput outPut = new SimpleHtmlExporterOutput(out); + exporter.setExporterOutput(outPut); + + exporter.exportReport(); + } catch (Exception e) { + + e.printStackTrace(); + } + } + + + /** + * 批量打印pdf文件 + */ + public void exportBatchPdf(List<JasperPrint> jasperPrintList,String fileName) { + + JRPdfExporter exporter = new JRPdfExporter(); + try { + /** + * 注入打印模板 + */ + exporter.setExporterInput(SimpleExporterInput.getInstance(jasperPrintList)); + + OutputStream outStream = null; + + response.setContentType(getContentType(DocType.PDF)); + response.setHeader("Content-Disposition", + "attachment; filename*=UTF-8''" + URLEncoder.encode(fileName, "UTF-8")); + outStream = response.getOutputStream(); + + exporter.setExporterOutput(new SimpleOutputStreamExporterOutput(outStream)); + //配置项 + SimplePdfExporterConfiguration configuration = new SimplePdfExporterConfiguration(); + // 是否批量打印 + configuration.setCreatingBatchModeBookmarks(true); + // 是否加密 + configuration.setEncrypted(false); + exporter.setConfiguration(configuration); + + exporter.exportReport(); + } catch (Exception e) { + e.printStackTrace(); + } + + } + + + + /** + * 千分位格式化数据 保留两位小数,且 ‘0 ’ 转为 ‘--’ + * + * @param obj + * @param fieldNames + * 需转化的属性 + * @return + */ + public Object toFormatNumber(Object obj, String[] fieldNames) { + Class clazz = (Class) obj.getClass(); + Field[] fs = clazz.getDeclaredFields(); + for (int i = 0; i < fs.length; i++) { + Field f = fs[i]; + // 设置些属性是可以访问的 + f.setAccessible(true); + String type = f.getType().toString(); + Object val = null; + + try { + for (String str : fieldNames) { + if (f.getName() == str) { + val = f.get(obj); + } + } + if (null != val) { + if (type.endsWith("String")) { + if (val.equals("0")) { + f.set(obj, "--"); + } else { + /* + * ; BigDecimal str=new BigDecimal((String) val); DecimalFormat df=new + * DecimalFormat(",###,##0.00"); + */ // 保留两位小数 + f.set(obj, this.toNumeber((String) val)); + } + + } else if (type.endsWith("int") || type.endsWith("Integer")) { + // System.out.println(f.getType()+"\t"); + } else { + // System.out.println(f.getType()+"\t"); + } + } + + } catch (Exception ex) { + LOGGER.error("千分位格式化数据错误"+ex.getMessage(), ex); + } + } + return obj; + } + + /** + * 转为万元保留小数点后两位 + * + * @param value + * @return + */ + private String toNumeber(String value) { + Double number = Double.valueOf(value) / 10000.00; + BigDecimal str = new BigDecimal(number); + DecimalFormat df = new DecimalFormat(",###,##0.00"); + + return df.format(str); + } + + +} diff --git a/src/main/java/com/huaheng/framework/config/SwaggerConfig.java b/src/main/java/com/huaheng/framework/config/SwaggerConfig.java index bb00761..fc53cb5 100644 --- a/src/main/java/com/huaheng/framework/config/SwaggerConfig.java +++ b/src/main/java/com/huaheng/framework/config/SwaggerConfig.java @@ -36,7 +36,7 @@ public class SwaggerConfig .apiInfo(apiInfo()) .select() // 指定当前包路径 - .apis(RequestHandlerSelectors.basePackage("com.huaheng.pc")) + .apis(RequestHandlerSelectors.basePackage("com.huaheng.api")) // 扫描所有 .apis(RequestHandlerSelectors.any()) .paths(PathSelectors.any()) .build(); diff --git a/src/main/java/com/huaheng/pc/config/FilterConfigHeader/service/FilterConfigHeaderService.java b/src/main/java/com/huaheng/pc/config/FilterConfigHeader/service/FilterConfigHeaderService.java index 5de586f..74ab44f 100644 --- a/src/main/java/com/huaheng/pc/config/FilterConfigHeader/service/FilterConfigHeaderService.java +++ b/src/main/java/com/huaheng/pc/config/FilterConfigHeader/service/FilterConfigHeaderService.java @@ -9,6 +9,7 @@ import com.huaheng.pc.config.FilterConfigDetail.mapper.FilterConfigDetailMapper; import com.huaheng.pc.config.FilterConfigHeader.domain.FilterConfigHeader; import com.huaheng.pc.config.FilterConfigHeader.mapper.FilterConfigHeaderMapper; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; import java.util.List; @@ -34,6 +35,7 @@ public class FilterConfigHeaderService extends ServiceImpl<FilterConfigHeaderMap //复制规则配置 + @Transactional public Boolean filterConfigCopy(String code,String newCode){ int i = 0; //复制规则配置主表 diff --git a/src/main/java/com/huaheng/pc/config/address/domain/Address.java b/src/main/java/com/huaheng/pc/config/address/domain/Address.java index 5ee9376..bfc3157 100644 --- a/src/main/java/com/huaheng/pc/config/address/domain/Address.java +++ b/src/main/java/com/huaheng/pc/config/address/domain/Address.java @@ -33,6 +33,13 @@ public class Address implements Serializable { private String warehouseCode; /** + * 编号 + */ + @TableField(value = "number") + @ApiModelProperty(value="编号") + private Integer number; + + /** * 参数 */ @TableField(value = "param") @@ -62,6 +69,14 @@ public class Address implements Serializable { this.warehouseCode = warehouseCode; } + public Integer getNumber() { + return number; + } + + public void setNumber(Integer number) { + this.number = number; + } + public String getParam() { return param; } diff --git a/src/main/java/com/huaheng/pc/config/address/service/AddressServiceImpl.java b/src/main/java/com/huaheng/pc/config/address/service/AddressServiceImpl.java index 9d36f2f..d46ce7f 100644 --- a/src/main/java/com/huaheng/pc/config/address/service/AddressServiceImpl.java +++ b/src/main/java/com/huaheng/pc/config/address/service/AddressServiceImpl.java @@ -10,6 +10,7 @@ import com.huaheng.common.utils.security.ShiroUtils; import com.huaheng.pc.config.address.domain.Address; import com.huaheng.pc.config.address.mapper.AddressMapper; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import java.util.List; @@ -42,6 +43,7 @@ public class AddressServiceImpl extends ServiceImpl<AddressMapper, Address> impl * @return 是否复制成功 */ @Override + @Transactional public Boolean addressCopy(String warehouseCode, String newWarehouseCode) { log.trace("开始复制地址表"); LambdaQueryWrapper<Address> lambdaQueryWrapper = Wrappers.lambdaQuery(); diff --git a/src/main/java/com/huaheng/pc/config/bom/controller/BomHeaderController.java b/src/main/java/com/huaheng/pc/config/bom/controller/BomHeaderController.java index 656e44d..4236fff 100644 --- a/src/main/java/com/huaheng/pc/config/bom/controller/BomHeaderController.java +++ b/src/main/java/com/huaheng/pc/config/bom/controller/BomHeaderController.java @@ -72,7 +72,7 @@ public class BomHeaderController extends BaseController { lambdaQueryWrapper.gt(StringUtils.isNotEmpty(createdBegin), BomHeader::getCreated, createdBegin) .lt(StringUtils.isNotEmpty(createdEnd), BomHeader::getCreated, createdEnd) .eq(StringUtils.isNotEmpty(bomHeader.getMaterialCode()), BomHeader::getMaterialCode, bomHeader.getMaterialCode()) - .eq(StringUtils.isNotEmpty(bomHeader.getMaterialName()), BomHeader::getMaterialName, bomHeader.getMaterialName()) + .like(StringUtils.isNotEmpty(bomHeader.getMaterialName()), BomHeader::getMaterialName, bomHeader.getMaterialName()) .eq(StringUtils.isNotEmpty(bomHeader.getCompanyCode()), BomHeader::getCompanyCode, bomHeader.getCompanyCode()); if (StringUtils.isNotNull(pageNum) && StringUtils.isNotNull(pageSize)){ diff --git a/src/main/java/com/huaheng/pc/config/carrier/controller/CarrierController.java b/src/main/java/com/huaheng/pc/config/carrier/controller/CarrierController.java index ed8e2ca..46306fd 100644 --- a/src/main/java/com/huaheng/pc/config/carrier/controller/CarrierController.java +++ b/src/main/java/com/huaheng/pc/config/carrier/controller/CarrierController.java @@ -64,7 +64,7 @@ public class CarrierController extends BaseController { lambdaQueryWrapper.gt(StringUtils.isNotEmpty(createdBegin), Carrier::getCreated, createdBegin) .lt(StringUtils.isNotEmpty(createdEnd), Carrier::getCreated, createdEnd) .eq(StringUtils.isNotEmpty(carrier.getCode()), Carrier::getCode, carrier.getCode()) - .eq(StringUtils.isNotEmpty(carrier.getName()), Carrier::getName, carrier.getName()) + .like(StringUtils.isNotEmpty(carrier.getName()), Carrier::getName, carrier.getName()) .eq(Carrier::getWarehouseCode, ShiroUtils.getWarehouseCode()); if (StringUtils.isNotNull(pageNum) && StringUtils.isNotNull(pageSize)){ diff --git a/src/main/java/com/huaheng/pc/config/company/service/CompanyServiceImpl.java b/src/main/java/com/huaheng/pc/config/company/service/CompanyServiceImpl.java index 11159fb..2825761 100644 --- a/src/main/java/com/huaheng/pc/config/company/service/CompanyServiceImpl.java +++ b/src/main/java/com/huaheng/pc/config/company/service/CompanyServiceImpl.java @@ -87,11 +87,11 @@ public class CompanyServiceImpl extends ServiceImpl<CompanyMapper, Company> impl warehouseCompanyService.remove(lambdaQueryWrapper.eq(WarehouseCompany::getCompanyId, company.getId())); //添加货主仓库关联 WarehouseCompany record = new WarehouseCompany(); - for (int i=0; i<warehouse.length-1; i++) + for (int i=0; i<warehouse.length; i++) { record.setCompanyId(company.getId()); record.setCompanyCode(company.getCode()); - record.setWarehouseCode(warehouse[i+1]); + record.setWarehouseCode(warehouse[i]); warehouseCompanyService.save(record); } //更新货主 diff --git a/src/main/java/com/huaheng/pc/config/configValue/service/ConfigValueService.java b/src/main/java/com/huaheng/pc/config/configValue/service/ConfigValueService.java index fb70d79..19761a8 100644 --- a/src/main/java/com/huaheng/pc/config/configValue/service/ConfigValueService.java +++ b/src/main/java/com/huaheng/pc/config/configValue/service/ConfigValueService.java @@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.huaheng.pc.config.configValue.domain.ConfigValue; import com.huaheng.pc.config.configValue.mapper.ConfigValueMapper; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import java.util.List; @Service @@ -17,6 +18,7 @@ public class ConfigValueService extends ServiceImpl<ConfigValueMapper, ConfigVal * @param newWarehouseCode 新仓库编码 * @return 是否复制成功 */ + @Transactional public boolean configValueCopy(String warehouseCode, String newWarehouseCode){ log.trace("开始复制系统参数配置表"); LambdaQueryWrapper<ConfigValue> lambdaQueryWrapper = Wrappers.lambdaQuery(); diff --git a/src/main/java/com/huaheng/pc/config/container/controller/ContainerController.java b/src/main/java/com/huaheng/pc/config/container/controller/ContainerController.java index 24f5182..b1cd00d 100644 --- a/src/main/java/com/huaheng/pc/config/container/controller/ContainerController.java +++ b/src/main/java/com/huaheng/pc/config/container/controller/ContainerController.java @@ -17,6 +17,7 @@ import com.huaheng.framework.web.page.TableDataInfo; import com.huaheng.framework.web.page.TableSupport; import com.huaheng.pc.config.container.domain.Container; import com.huaheng.pc.config.container.service.ContainerService; +import com.huaheng.pc.inventory.inventoryTransaction.domain.InventoryTransaction; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiParam; @@ -27,6 +28,7 @@ import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; import javax.annotation.Resource; +import java.util.ArrayList; import java.util.List; @Api(tags={"容器操作类"}) @@ -175,4 +177,21 @@ public class ContainerController extends BaseController { ExcelUtil<Container> util = new ExcelUtil<>(Container.class); return util.importTemplateExcel("容器"); } + + + @RequiresPermissions("iconfig:container:print") + @Log(title = "容器条码", operating = "容器条码打印", action = BusinessType.OTHER) + @GetMapping("/print/{ids}") + public String print(@PathVariable("ids") Integer[] ids, ModelMap mmap) + { + List<Container> list = new ArrayList<>(); + for(Integer id:ids){ + if(id != null) { + Container container = containerService.getById(id); + list.add(container); + } + mmap.put("container", list); + } + return prefix + "/print"; + } } diff --git a/src/main/java/com/huaheng/pc/config/container/domain/Container.java b/src/main/java/com/huaheng/pc/config/container/domain/Container.java index 210358f..7a4e5c0 100644 --- a/src/main/java/com/huaheng/pc/config/container/domain/Container.java +++ b/src/main/java/com/huaheng/pc/config/container/domain/Container.java @@ -65,6 +65,15 @@ public class Container implements Serializable { @Excel(name = "容器类型") private String containerType; + + /** + * 容器类型 + */ + @TableField(value = "goodsShelfNo") + @ApiModelProperty(value="AGV货架编码") + @Excel(name = "AGV货架编码") + private String goodsShelfNo; + /** * 创建时间 */ @@ -199,6 +208,8 @@ public class Container implements Serializable { public static final String COL_CONTAINERTYPE = "containerType"; + public static final String COL_GOODSSHELFNO = "goodsShelfNo"; + public static final String COL_CREATED = "created"; public static final String COL_CREATEDBY = "createdBy"; @@ -245,6 +256,7 @@ public class Container implements Serializable { sb.append(", warehouseCode=").append(warehouseCode); sb.append(", companyCode=").append(companyCode); sb.append(", containerType=").append(containerType); + sb.append(", goodsShelfNo=").append(goodsShelfNo); sb.append(", created=").append(created); sb.append(", createdBy=").append(createdBy); sb.append(", lastUpdated=").append(lastUpdated); diff --git a/src/main/java/com/huaheng/pc/config/container/mapper/ContainerMapper.java b/src/main/java/com/huaheng/pc/config/container/mapper/ContainerMapper.java index a479caa..b6dcc81 100644 --- a/src/main/java/com/huaheng/pc/config/container/mapper/ContainerMapper.java +++ b/src/main/java/com/huaheng/pc/config/container/mapper/ContainerMapper.java @@ -16,5 +16,9 @@ public interface ContainerMapper extends BaseMapper<Container> { Container findAllByCode(@Param("code") String code); + int addList(@Param("containers") List<Container> containers); + + //获得空货架编号 + List<Container> selectListShelf(); } \ No newline at end of file diff --git a/src/main/java/com/huaheng/pc/config/container/service/ContainerService.java b/src/main/java/com/huaheng/pc/config/container/service/ContainerService.java index 3bbed8d..86825c9 100644 --- a/src/main/java/com/huaheng/pc/config/container/service/ContainerService.java +++ b/src/main/java/com/huaheng/pc/config/container/service/ContainerService.java @@ -22,4 +22,8 @@ public interface ContainerService extends IService<Container>{ void removeByCode(String containCode); Container findAllByCode(String containCode); + + + //获得空货架编号 + List<Container> selectListShelf(); } diff --git a/src/main/java/com/huaheng/pc/config/container/service/ContainerServiceImpl.java b/src/main/java/com/huaheng/pc/config/container/service/ContainerServiceImpl.java index 4c795fe..0d08e35 100644 --- a/src/main/java/com/huaheng/pc/config/container/service/ContainerServiceImpl.java +++ b/src/main/java/com/huaheng/pc/config/container/service/ContainerServiceImpl.java @@ -31,6 +31,7 @@ public class ContainerServiceImpl extends ServiceImpl<ContainerMapper, Container @Override public AjaxResult<List<Container>> insertContainer(String type, Integer quantity) { List<Container> containerList = new ArrayList<>(); + List<Container> containers =new ArrayList<>(); Integer number = getNumber(type); for(int i=0; i<quantity; i++) { number++; @@ -45,10 +46,13 @@ public class ContainerServiceImpl extends ServiceImpl<ContainerMapper, Container container.setEnable(true); container.setCompanyCode(ShiroUtils.getCompanyCodeList().get(0)); container.setWarehouseCode(ShiroUtils.getWarehouseCode()); - this.save(container); - containerList.add(container); + containers.add(container); + if( i>0 && (i%1000==0 || i == quantity-1)){ + containerMapper.addList(containers); + containers = new ArrayList<>(); + } } - return AjaxResult.success(containerList); + return AjaxResult.success(containers); } private Integer getNumber(String type) { @@ -167,4 +171,10 @@ public class ContainerServiceImpl extends ServiceImpl<ContainerMapper, Container public Container findAllByCode(String code) { return containerMapper.findAllByCode(code); } + + + @Override + public List<Container> selectListShelf() { + return containerMapper.selectListShelf(); + } } diff --git a/src/main/java/com/huaheng/pc/config/containerType/controller/ContainerTypeController.java b/src/main/java/com/huaheng/pc/config/containerType/controller/ContainerTypeController.java index 0b206f0..0b1c9af 100644 --- a/src/main/java/com/huaheng/pc/config/containerType/controller/ContainerTypeController.java +++ b/src/main/java/com/huaheng/pc/config/containerType/controller/ContainerTypeController.java @@ -63,6 +63,7 @@ public class ContainerTypeController extends BaseController lambdaQueryWrapper.ge(StringUtils.isNotEmpty(createdBegin),ContainerType::getCreated, createdBegin) .le(StringUtils.isNotEmpty(createdEnd), ContainerType::getCreated, createdEnd) .eq(ContainerType::getWarehouseCode,ShiroUtils.getWarehouseCode()) + .in(ContainerType::getCompanyCode,ShiroUtils.getCompanyCodeList()) .eq(StringUtils.isNotEmpty(containerType.getCode()),ContainerType::getCode,containerType.getCode()) .like(StringUtils.isNotEmpty(containerType.getName()),ContainerType::getName,containerType.getName());; diff --git a/src/main/java/com/huaheng/pc/config/containerType/service/ContainerTypeServiceImpl.java b/src/main/java/com/huaheng/pc/config/containerType/service/ContainerTypeServiceImpl.java index 38c1059..d7e05e3 100644 --- a/src/main/java/com/huaheng/pc/config/containerType/service/ContainerTypeServiceImpl.java +++ b/src/main/java/com/huaheng/pc/config/containerType/service/ContainerTypeServiceImpl.java @@ -3,14 +3,17 @@ package com.huaheng.pc.config.containerType.service; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.huaheng.common.utils.security.ShiroUtils; +import com.huaheng.pc.config.configValue.domain.ConfigValue; import org.springframework.stereotype.Service; - +import javax.annotation.Resource; import java.util.List; import java.util.Map; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.huaheng.pc.config.containerType.domain.ContainerType; import com.huaheng.pc.config.containerType.mapper.ContainerTypeMapper; +import com.huaheng.pc.config.containerType.service.ContainerTypeService; +import org.springframework.transaction.annotation.Transactional; @Service("containerType") public class ContainerTypeServiceImpl extends ServiceImpl<ContainerTypeMapper, ContainerType> implements ContainerTypeService{ diff --git a/src/main/java/com/huaheng/pc/config/customer/controller/CustomerController.java b/src/main/java/com/huaheng/pc/config/customer/controller/CustomerController.java index c290431..930af17 100644 --- a/src/main/java/com/huaheng/pc/config/customer/controller/CustomerController.java +++ b/src/main/java/com/huaheng/pc/config/customer/controller/CustomerController.java @@ -66,7 +66,7 @@ public class CustomerController extends BaseController { lambdaQueryWrapper.gt(StringUtils.isNotEmpty(createdBegin), Customer::getCreated, createdBegin) .lt(StringUtils.isNotEmpty(createdEnd), Customer::getCreated, createdEnd) .eq(StringUtils.isNotEmpty(customer.getCode()), Customer::getCode, customer.getCode()) - .eq(StringUtils.isNotEmpty(customer.getName()), Customer::getName, customer.getName()) + .like(StringUtils.isNotEmpty(customer.getName()), Customer::getName, customer.getName()) .eq(Customer::getDeleted, false) .eq(Customer::getWarehouseCode, ShiroUtils.getWarehouseCode()) .orderByDesc(Customer::getCreated); diff --git a/src/main/java/com/huaheng/pc/config/cycleCountPreference/service/CycleCountPreferenceService.java b/src/main/java/com/huaheng/pc/config/cycleCountPreference/service/CycleCountPreferenceService.java index f0585c3..fd6d235 100644 --- a/src/main/java/com/huaheng/pc/config/cycleCountPreference/service/CycleCountPreferenceService.java +++ b/src/main/java/com/huaheng/pc/config/cycleCountPreference/service/CycleCountPreferenceService.java @@ -73,6 +73,7 @@ public class CycleCountPreferenceService extends ServiceImpl<CycleCountPreferenc * @param newWarehouseCode 新仓库编码 * @return 是否复制成功 */ + @Transactional public boolean cycleCountPreferenceCopy(String warehouseCode, String newWarehouseCode) { log.trace("开始复盘点首选项表"); LambdaQueryWrapper<CycleCountPreference> lambdaQueryWrapper = Wrappers.lambdaQuery(); diff --git a/src/main/java/com/huaheng/pc/config/excelTemplate/controller/excelTemplateController.java b/src/main/java/com/huaheng/pc/config/excelTemplate/controller/excelTemplateController.java index a608404..18fd556 100644 --- a/src/main/java/com/huaheng/pc/config/excelTemplate/controller/excelTemplateController.java +++ b/src/main/java/com/huaheng/pc/config/excelTemplate/controller/excelTemplateController.java @@ -59,7 +59,7 @@ public class excelTemplateController extends BaseController { Integer pageSize = pageDomain.getPageSize(); lambdaQueryWrapper.gt(StringUtils.isNotEmpty(createdBegin), ExcelTemplate::getCreated, createdBegin) .lt(StringUtils.isNotEmpty(createdEnd), ExcelTemplate::getCreated, createdEnd) - .eq(StringUtils.isNotEmpty(excelTemplate.getName()), ExcelTemplate::getName, excelTemplate.getName()) + .like(StringUtils.isNotEmpty(excelTemplate.getName()), ExcelTemplate::getName, excelTemplate.getName()) .eq(ExcelTemplate::getWarehouseCode, ShiroUtils.getWarehouseCode()) .in(ExcelTemplate::getCompanyCode, ShiroUtils.getCompanyCodeList()); diff --git a/src/main/java/com/huaheng/pc/config/location/controller/LocationController.java b/src/main/java/com/huaheng/pc/config/location/controller/LocationController.java index e874571..4e6771f 100644 --- a/src/main/java/com/huaheng/pc/config/location/controller/LocationController.java +++ b/src/main/java/com/huaheng/pc/config/location/controller/LocationController.java @@ -76,6 +76,7 @@ public class LocationController extends BaseController { Integer pageSize = pageDomain.getPageSize(); lambdaQueryWrapper.gt(StringUtils.isNotEmpty(createdBegin), Location::getCreated, createdBegin) .lt(StringUtils.isNotEmpty(createdEnd), Location::getCreated, createdEnd) + .eq(Location::getWarehouseCode,ShiroUtils.getWarehouseCode()) .eq(StringUtils.isNotEmpty(location.getCode()), Location::getCode, location.getCode()) .eq(StringUtils.isNotEmpty(location.getName()), Location::getName,location.getName()) .eq(StringUtils.isNotEmpty(location.getContainerCode()), Location::getContainerCode, location.getContainerCode()) diff --git a/src/main/java/com/huaheng/pc/config/location/mapper/LocationMapper.java b/src/main/java/com/huaheng/pc/config/location/mapper/LocationMapper.java index e69bc74..efae305 100644 --- a/src/main/java/com/huaheng/pc/config/location/mapper/LocationMapper.java +++ b/src/main/java/com/huaheng/pc/config/location/mapper/LocationMapper.java @@ -7,6 +7,8 @@ import org.apache.ibatis.annotations.Param; import java.util.LinkedHashMap; import java.util.List; +import java.util.List; + public interface LocationMapper extends BaseMapper<Location> { void updateStatus(@Param("warehouseCode") String warehouseCode, @Param("code") String code, @Param("status") String status); @@ -15,8 +17,11 @@ public interface LocationMapper extends BaseMapper<Location> { Location position(String locatingRule); + int addList(@Param("locations") List<Location> locations); + Location getAllLocation(@Param("warehouseCode") String warehouseCode, @Param("type") String type); //库位利用率 List<LinkedHashMap<String, Object>> getLocationProp(); + } \ No newline at end of file diff --git a/src/main/java/com/huaheng/pc/config/location/service/LocationServiceImpl.java b/src/main/java/com/huaheng/pc/config/location/service/LocationServiceImpl.java index 930e16a..3278ce9 100644 --- a/src/main/java/com/huaheng/pc/config/location/service/LocationServiceImpl.java +++ b/src/main/java/com/huaheng/pc/config/location/service/LocationServiceImpl.java @@ -142,7 +142,21 @@ public class LocationServiceImpl extends ServiceImpl<LocationMapper, Location> i } } } - return locationService.saveBatch(locations); + int num =0; + List<Location> locations1 = new ArrayList<>(); + if(locations.size() >1000 ){ + for(Location item : locations){ + num++; + locations1.add(item); + if(num % 1000 ==0 || num == locations.size()){ + locationMapper.addList(locations1); + locations1=new ArrayList<>(); + } + } + }else { + locationMapper.addList(locations); + } + return true; } @Override diff --git a/src/main/java/com/huaheng/pc/config/locationType/domain/LocationType.java b/src/main/java/com/huaheng/pc/config/locationType/domain/LocationType.java index 0c7e42a..3242e65 100644 --- a/src/main/java/com/huaheng/pc/config/locationType/domain/LocationType.java +++ b/src/main/java/com/huaheng/pc/config/locationType/domain/LocationType.java @@ -39,19 +39,19 @@ public class LocationType implements Serializable { * 长 */ @TableField(value = "length") - private Integer length; + private String length; /** * 宽 */ @TableField(value = "width") - private Integer width; + private String width; /** * 高 */ @TableField(value = "height") - private Integer height; + private String height; /** * 最大重量 diff --git a/src/main/java/com/huaheng/pc/config/locationType/service/LocationTypeServiceImpl.java b/src/main/java/com/huaheng/pc/config/locationType/service/LocationTypeServiceImpl.java index 8633ff2..1b222d3 100644 --- a/src/main/java/com/huaheng/pc/config/locationType/service/LocationTypeServiceImpl.java +++ b/src/main/java/com/huaheng/pc/config/locationType/service/LocationTypeServiceImpl.java @@ -8,6 +8,7 @@ import com.huaheng.pc.config.cycleCountPreference.domain.CycleCountPreference; import com.huaheng.pc.config.locationType.domain.LocationType; import com.huaheng.pc.config.locationType.mapper.LocationTypeMapper; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import java.util.List; import java.util.Map; @@ -31,6 +32,7 @@ public class LocationTypeServiceImpl extends ServiceImpl<LocationTypeMapper, Loc * @return 是否复制成功 */ @Override + @Transactional public boolean locationTypeCopy(String warehouseCode, String newWarehouseCode) { log.trace("开始复盘点首选项表"); LambdaQueryWrapper<LocationType> lambdaQueryWrapper = Wrappers.lambdaQuery(); diff --git a/src/main/java/com/huaheng/pc/config/material/controller/MaterialController.java b/src/main/java/com/huaheng/pc/config/material/controller/MaterialController.java index 3333c42..74d5ddd 100644 --- a/src/main/java/com/huaheng/pc/config/material/controller/MaterialController.java +++ b/src/main/java/com/huaheng/pc/config/material/controller/MaterialController.java @@ -4,6 +4,8 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.huaheng.common.exception.service.ServiceException; +import com.huaheng.common.support.Convert; import com.huaheng.common.utils.StringUtils; import com.huaheng.common.utils.poi.ExcelUtil; import com.huaheng.common.utils.security.ShiroUtils; @@ -16,6 +18,8 @@ import com.huaheng.framework.web.page.TableDataInfo; import com.huaheng.framework.web.page.TableSupport; import com.huaheng.pc.config.material.domain.Material; import com.huaheng.pc.config.material.service.MaterialService; +import com.huaheng.pc.inventory.inventoryDetail.domain.InventoryDetail; +import com.huaheng.pc.inventory.inventoryDetail.service.InventoryDetailService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiParam; @@ -37,6 +41,8 @@ public class MaterialController extends BaseController { @Resource private MaterialService materialService; + @Resource + private InventoryDetailService inventoryDetailService; @RequiresPermissions("config:material:view") @GetMapping() @@ -66,11 +72,10 @@ public class MaterialController extends BaseController { lambda.gt(StringUtils.isNotEmpty(createdBegin), Material::getCreated, createdBegin) .lt(StringUtils.isNotEmpty(createdEnd), Material::getCreated, createdEnd) .eq(StringUtils.isNotEmpty(material.getCode()), Material::getCode, material.getCode()) - .eq(StringUtils.isNotEmpty(material.getName()), Material::getName, material.getName()) + .like(StringUtils.isNotEmpty(material.getName()), Material::getName, material.getName()) .eq(StringUtils.isNotEmpty(material.getType()), Material::getType, material.getType()) .like(StringUtils.isNotEmpty(material.getSpec()), Material::getSpec, material.getSpec()) .eq(Material::getWarehouseCode, ShiroUtils.getWarehouseCode()) - .in(Material::getCompanyCode, ShiroUtils.getCompanyCodeList()) .eq(Material::getDeleted, false); if (StringUtils.isNotNull(pageNum) && StringUtils.isNotNull(pageSize)){ @@ -139,6 +144,16 @@ public class MaterialController extends BaseController { if (StringUtils.isEmpty(ids)){ return AjaxResult.error("id不能为空"); } else { + for(Integer id :Convert.toIntArray(ids)){ + Material material = materialService.getById(id); + LambdaQueryWrapper<InventoryDetail> lamb = Wrappers.lambdaQuery(); + lamb.eq(InventoryDetail::getWarehouseCode,ShiroUtils.getWarehouseCode()) + .eq(InventoryDetail::getMaterialCode,material.getCode()); + List<InventoryDetail> inventoryDetails = inventoryDetailService.list(lamb); + if(inventoryDetails != null || inventoryDetails.size() > 0){ + throw new ServiceException("id为"+id+"的物料有库存"); + } + } return materialService.removeByIds(ids); } } diff --git a/src/main/java/com/huaheng/pc/config/materialMultiple/controller/MaterialMultipleController.java b/src/main/java/com/huaheng/pc/config/materialMultiple/controller/MaterialMultipleController.java index b7514e0..92905ef 100644 --- a/src/main/java/com/huaheng/pc/config/materialMultiple/controller/MaterialMultipleController.java +++ b/src/main/java/com/huaheng/pc/config/materialMultiple/controller/MaterialMultipleController.java @@ -14,6 +14,8 @@ import com.huaheng.framework.web.domain.AjaxResult; import com.huaheng.framework.web.page.PageDomain; import com.huaheng.framework.web.page.TableDataInfo; import com.huaheng.framework.web.page.TableSupport; +import com.huaheng.pc.config.material.domain.Material; +import com.huaheng.pc.config.material.service.MaterialService; import com.huaheng.pc.config.materialMultiple.domain.MaterialMultiple; import com.huaheng.pc.config.materialMultiple.service.MaterialMultipleServiceImpl; import io.swagger.annotations.ApiOperation; @@ -33,6 +35,8 @@ public class MaterialMultipleController extends BaseController { @Resource private MaterialMultipleServiceImpl materialMultipleService; + @Resource + private MaterialService materialService; private String prefix = "config/materialMultiple"; @@ -60,7 +64,7 @@ public class MaterialMultipleController extends BaseController { lambdaQueryWrapper.gt(StringUtils.isNotEmpty(createdBegin), MaterialMultiple::getCreated, createdBegin) .lt(StringUtils.isNotEmpty(createdEnd), MaterialMultiple::getCreated, createdEnd) .eq(StringUtils.isNotEmpty(materialMultiple.getMaterialCode()), MaterialMultiple::getMaterialCode, materialMultiple.getMaterialCode()) - .eq(StringUtils.isNotEmpty(materialMultiple.getMaterialName()), MaterialMultiple::getMaterialName, materialMultiple.getMaterialName()) + .like(StringUtils.isNotEmpty(materialMultiple.getMaterialName()), MaterialMultiple::getMaterialName, materialMultiple.getMaterialName()) .in(MaterialMultiple::getCompanyCode, ShiroUtils.getCompanyCodeList()) .eq(MaterialMultiple::getWarehouseCode, ShiroUtils.getWarehouseCode()); @@ -92,15 +96,25 @@ public class MaterialMultipleController extends BaseController { @PostMapping("/add") @ResponseBody public AjaxResult addSave(MaterialMultiple materialMultiple) { + LambdaQueryWrapper<Material> lam = Wrappers.lambdaQuery(); + lam.eq(Material::getCode,materialMultiple.getMaterialCode()) + .eq(Material::getWarehouseCode,ShiroUtils.getWarehouseCode()); + Material material = materialService.getOne(lam); + if(material ==null){ + return AjaxResult.error("物料编码错误,系统没有此物料"); + } LambdaQueryWrapper<MaterialMultiple> lambda = Wrappers.lambdaQuery(); lambda.eq(MaterialMultiple::getCompanyCode,materialMultiple.getCompanyCode()) .eq(MaterialMultiple::getMaterialCode, materialMultiple) .eq(MaterialMultiple::getWarehouseCode, ShiroUtils.getWarehouseCode()) .eq(MaterialMultiple::getUnitId1, materialMultiple.getUnitId1()) .eq(MaterialMultiple::getUnitId2, materialMultiple.getUnitId2()); - if (materialMultipleService.list(lambda) == null){ + if (materialMultipleService.list(lambda) != null){ return AjaxResult.error("该信息已存在"); } + materialMultiple.setMaterialName(material.getName()); + materialMultiple.setMaterialSpec(material.getSpec()); + materialMultiple.setWarehouseCode(ShiroUtils.getWarehouseCode()); materialMultiple.setCreatedBy(ShiroUtils.getLoginName()); materialMultiple.setLastUpdatedBy(ShiroUtils.getLoginName()); return toAjax(materialMultipleService.save(materialMultiple)); diff --git a/src/main/java/com/huaheng/pc/config/materialType/controller/MaterialTypeController.java b/src/main/java/com/huaheng/pc/config/materialType/controller/MaterialTypeController.java index e1ebe45..a14427a 100644 --- a/src/main/java/com/huaheng/pc/config/materialType/controller/MaterialTypeController.java +++ b/src/main/java/com/huaheng/pc/config/materialType/controller/MaterialTypeController.java @@ -71,7 +71,7 @@ public class MaterialTypeController extends BaseController { .eq(MaterialType::getWarehouseCode, ShiroUtils.getWarehouseCode()) .eq(StringUtils.isNotEmpty(materialType.getCode()), MaterialType::getCode, materialType.getCode()) - .eq(StringUtils.isNotEmpty(materialType.getName()), MaterialType::getName, materialType.getName()); + .like(StringUtils.isNotEmpty(materialType.getName()), MaterialType::getName, materialType.getName()); if (StringUtils.isNotNull(pageNum) && StringUtils.isNotNull(pageSize)){ /** diff --git a/src/main/java/com/huaheng/pc/config/materialUnit/controller/MaterialUnitController.java b/src/main/java/com/huaheng/pc/config/materialUnit/controller/MaterialUnitController.java index 111fa2d..44e5b64 100644 --- a/src/main/java/com/huaheng/pc/config/materialUnit/controller/MaterialUnitController.java +++ b/src/main/java/com/huaheng/pc/config/materialUnit/controller/MaterialUnitController.java @@ -101,7 +101,8 @@ public class MaterialUnitController extends BaseController { @ResponseBody public AjaxResult addSave(MaterialUnit materialUnit) { LambdaQueryWrapper<Material> lambdaQueryWrapper = Wrappers.lambdaQuery(); - lambdaQueryWrapper.eq(Material::getCode, materialUnit.getMaterialCode()); + lambdaQueryWrapper.eq(Material::getCode, materialUnit.getMaterialCode()) + .eq(Material::getWarehouseCode,ShiroUtils.getWarehouseCode()); Material material = materialService.getOne(lambdaQueryWrapper); if (material == null){ return AjaxResult.error(" 该物料编码不存在"); @@ -110,12 +111,13 @@ public class MaterialUnitController extends BaseController { LambdaQueryWrapper<MaterialUnit> lambda = Wrappers.lambdaQuery(); lambda.eq(MaterialUnit::getWarehouseCode, ShiroUtils.getWarehouseCode()) .eq(MaterialUnit::getCompanyCode, materialUnit.getCompanyCode()) - .eq(MaterialUnit::getMaterialCode, materialUnit.getMaterialCode()) - .eq(MaterialUnit::getUnit, materialUnit.getUnit()); + .eq(MaterialUnit::getWarehouseCode,ShiroUtils.getWarehouseCode()) + .eq(MaterialUnit::getMaterialCode, materialUnit.getMaterialCode()) + .eq(MaterialUnit::getUnit, materialUnit.getUnit()); if (materialUnitService.getOne(lambda) != null){ return AjaxResult.error("当前新增记录已存在"); } - + materialUnit.setWarehouseCode(ShiroUtils.getWarehouseCode()); materialUnit.setMaterialName(material.getName()); materialUnit.setMaterialSpec(material.getSpec()); materialUnit.setCreatedBy(ShiroUtils.getLoginName()); diff --git a/src/main/java/com/huaheng/pc/config/points/controller/PointController.java b/src/main/java/com/huaheng/pc/config/points/controller/PointController.java new file mode 100644 index 0000000..c945480 --- /dev/null +++ b/src/main/java/com/huaheng/pc/config/points/controller/PointController.java @@ -0,0 +1,158 @@ +package com.huaheng.pc.config.points.controller; + + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.huaheng.common.utils.StringUtils; +import com.huaheng.common.utils.security.ShiroUtils; +import com.huaheng.framework.aspectj.lang.annotation.Log; +import com.huaheng.framework.aspectj.lang.constant.BusinessType; +import com.huaheng.framework.web.controller.BaseController; +import com.huaheng.framework.web.domain.AjaxResult; +import com.huaheng.framework.web.page.PageDomain; +import com.huaheng.framework.web.page.TableDataInfo; +import com.huaheng.framework.web.page.TableSupport; +import com.huaheng.pc.config.company.domain.Company; +import com.huaheng.pc.config.company.service.CompanyService; +import com.huaheng.pc.config.container.domain.Container; +import com.huaheng.pc.config.container.service.ContainerService; +import com.huaheng.pc.config.points.domain.Points; +import com.huaheng.pc.config.points.service.PointsService; +import org.apache.shiro.authz.annotation.RequiresPermissions; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Controller; +import org.springframework.ui.ModelMap; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * 货架 信息操作处理 + * + * @author huaheng + * @date 2019-07-11 + */ +@Controller +@RequestMapping("/config/point") +public class PointController extends BaseController +{ + private String prefix = "config/point"; + + @Autowired + private PointsService pointsService; + @Autowired + private CompanyService companyService; + @Autowired + private ContainerService containerService; + + @RequiresPermissions("config:point:view") + @GetMapping() + public String point() + { + return prefix + "/point"; + } + + /** + * 查询货架列表 + */ + @RequiresPermissions("config:point:list") + @Log(title = "配置-货架设置", operating = "货架查看列表", action = BusinessType.GRANT) + @PostMapping("/list") + @ResponseBody + public TableDataInfo list(Points points) + { + + LambdaQueryWrapper<Points> lambdaQueryWrapper = Wrappers.lambdaQuery(); + PageDomain pageDomain = TableSupport.buildPageRequest(); + Integer pageNum = pageDomain.getPageNum(); + Integer pageSize = pageDomain.getPageSize(); + lambdaQueryWrapper + .eq(StringUtils.isNotEmpty(points.getGoodsShelfNo()), Points::getGoodsShelfNo, points.getGoodsShelfNo()) + .eq(StringUtils.isNotEmpty(points.getCompanyCode()),Points::getCompanyCode, points.getCompanyCode()) + .eq(Points::getWarehouseCode, ShiroUtils.getWarehouseCode()); + + if (StringUtils.isNotNull(pageNum) && StringUtils.isNotNull(pageSize)){ + /*使用分页查询*/ + Page<Points> page = new Page<>(pageNum, pageSize); + IPage<Points> iPage = pointsService.page(page, lambdaQueryWrapper); + return getMpDataTable(iPage.getRecords(), iPage.getTotal()); + } else { + List<Points> list = pointsService.list(lambdaQueryWrapper); + list.forEach(t->{ + LambdaQueryWrapper<Company> companyLamb = Wrappers.lambdaQuery(); + companyLamb.eq(Company::getCode,t.getCompanyCode()); + Company company= companyService.getOne(companyLamb); + if(company!=null) { + t.setCompanyName(company.getName()); + } + }); + return getDataTable(list); + } + } + + /** + * 修改货架 + */ + @GetMapping("/edit/{id}") + public String edit(@PathVariable("id") Integer id, ModelMap mmap) + { + + Points points = pointsService.getById(id); + mmap.put("points", points); + return prefix + "/edit"; + } + + /** + * 修改保存货架 + */ + @RequiresPermissions("config:point:edit") + @Log(title = "配置-货架设置", operating = "修改货架", action = BusinessType.UPDATE) + @PostMapping("/edit") + @ResponseBody + public AjaxResult editSave(Points points) + { + LambdaQueryWrapper<Container> containerLamb = Wrappers.lambdaQuery(); + containerLamb.eq(Container::getGoodsShelfNo,points.getGoodsShelfNo()) + .eq(Container::getWarehouseCode,ShiroUtils.getWarehouseCode()); + List<Container> containerList=containerService.list(containerLamb); + for(Container item:containerList){ + item.setCompanyCode(points.getCompanyCode()); + if(containerService.saveOrUpdate(item) == false){ + return AjaxResult.error("修改失败"); + } + } + if(pointsService.saveOrUpdate(points) == false){ + return AjaxResult.error("修改失败"); + } + return AjaxResult.success("修改成功"); + } + + + /** + * 恢复货架状态 + */ + @RequiresPermissions("config:point:edit") + @Log(title = "配置-货架设置", operating = "恢复货架状态", action = BusinessType.UPDATE) + @PostMapping("/restore") + @ResponseBody + public AjaxResult restore(){ + if(pointsService.updateAll() >0){ + return AjaxResult.success("货架状态恢复成功"); + }else { + return AjaxResult.error("失败"); + } + } + + /** + * 检测货架装货状态 + */ + @RequiresPermissions("config:point:edit") + @Log(title = "配置-货架设置", operating = "检测货架装货状态", action = BusinessType.UPDATE) + @PostMapping("/detectShelf") + @ResponseBody + public AjaxResult detectShelf(){ + return pointsService.detectShelf(); + } +} diff --git a/src/main/java/com/huaheng/pc/config/points/domain/Points.java b/src/main/java/com/huaheng/pc/config/points/domain/Points.java new file mode 100644 index 0000000..bd4e63e --- /dev/null +++ b/src/main/java/com/huaheng/pc/config/points/domain/Points.java @@ -0,0 +1,183 @@ +package com.huaheng.pc.config.points.domain; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.huaheng.framework.web.domain.BaseEntity; +import io.swagger.annotations.ApiModel; +import lombok.Data; + +/** + * @author ricard + * @time 2019/12/26 + * 货架实体 + */ + +@ApiModel(value="com.huaheng.pc.config.points.domain.Points") +@Data +@TableName(value = "points") +public class Points extends BaseEntity { + //id + @TableId(value = "id", type = IdType.AUTO ) + private Integer id; + + //仓库编码 + @TableField(value = "warehouseCode") + private String warehouseCode; + + //货架号 + @TableField(value = "goodsShelfNo") + private String goodsShelfNo; + private Integer companyId; + + //货主 + @TableField(value = "companyCode") + private String companyCode; + //货主名称 + private String companyName; + + //货架调动次数 + @TableField(value = "num") + private Integer num; + + //是否为空 + @TableField(value = "isEmpty") + private Integer isEmpty; + + //是否可用 + @TableField(value = "isEnable") + private Integer isEnable; + + //货架状态 + @TableField(value = "isLocked") + private Integer isLocked; + + //回库后X轴位置 + @TableField(value = "intX") + private String intX; + + //回库后Y轴位置 + @TableField(value = "intY") + private String intY; + + //出库前x位置 + @TableField(value = "oIntX") + private String oIntX; + + //出库前Y位置 + @TableField(value = "oIntY") + private String oIntY; + + public Integer getCompanyId() { + return companyId; + } + + public void setCompanyId(Integer companyId) { + this.companyId = companyId; + } + + public String getCompanyCode() { + return companyCode; + } + + public void setCompanyCode(String companyCode) { + this.companyCode = companyCode; + } + + public String getCompanyName() { + return companyName; + } + + public void setCompanyName(String companyName) { + this.companyName = companyName; + } + + public String getoIntX() { + return oIntX; + } + + public void setoIntX(String oIntX) { + this.oIntX = oIntX; + } + + public String getoIntY() { + return oIntY; + } + + public void setoIntY(String oIntY) { + this.oIntY = oIntY; + } + + public String getWarehouseCode() { + return warehouseCode; + } + + public void setWarehouseCode(String warehouseCode) { + this.warehouseCode = warehouseCode; + } + + public String getIntX() { + return intX; + } + + public void setIntX(String intX) { + this.intX = intX; + } + + public String getIntY() { + return intY; + } + + public void setIntY(String intY) { + this.intY = intY; + } + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public String getGoodsShelfNo() { + return goodsShelfNo; + } + + public void setGoodsShelfNo(String goodsShelfNo) { + this.goodsShelfNo = goodsShelfNo; + } + + public Integer getIsEnable() { + return isEnable; + } + + public void setIsEnable(Integer isEnable) { + this.isEnable = isEnable; + } + + public Integer getIsLocked() { + return isLocked; + } + + public void setIsLocked(Integer isLocked) { + this.isLocked = isLocked; + } + + public Integer getNum() { + return num; + } + + public void setNum(Integer num) { + this.num = num; + } + + public Integer getIsEmpty() { + return isEmpty; + } + + public void setIsEmpty(Integer isEmpty) { + this.isEmpty = isEmpty; + } +} diff --git a/src/main/java/com/huaheng/pc/config/points/mapper/PointsMapper.java b/src/main/java/com/huaheng/pc/config/points/mapper/PointsMapper.java new file mode 100644 index 0000000..d0387d3 --- /dev/null +++ b/src/main/java/com/huaheng/pc/config/points/mapper/PointsMapper.java @@ -0,0 +1,25 @@ +package com.huaheng.pc.config.points.mapper; + + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.huaheng.pc.config.points.domain.Points; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 货架 数据层 + * + * @author ricard + * @date 2019-12-26 + */ +public interface PointsMapper extends BaseMapper<Points> { + + //修改货架位置信息 + int updatePoints(Points points); + + //修改所有货架的状态为初始状态 + int updateAll(); + + int updateIsEmpty(@Param("list") List<String> list, @Param("isEmpty") Integer isEmpty); +} diff --git a/src/main/java/com/huaheng/pc/config/points/service/PointsService.java b/src/main/java/com/huaheng/pc/config/points/service/PointsService.java new file mode 100644 index 0000000..40af2f5 --- /dev/null +++ b/src/main/java/com/huaheng/pc/config/points/service/PointsService.java @@ -0,0 +1,26 @@ +package com.huaheng.pc.config.points.service; + + +import com.baomidou.mybatisplus.extension.service.IService; +import com.huaheng.framework.web.domain.AjaxResult; +import com.huaheng.pc.config.points.domain.Points; + +import java.util.List; +import java.util.Map; + +/** + * 货架 服务层 + * + * @author ricard + * @date 2019-02-26 + */ + +public interface PointsService extends IService<Points> { + + //修改所有货架的状态为初始状态 + int updateAll(); + + //检查货架是否是空货架,并修改 + AjaxResult detectShelf(); + +} diff --git a/src/main/java/com/huaheng/pc/config/points/service/PointsServiceImpl.java b/src/main/java/com/huaheng/pc/config/points/service/PointsServiceImpl.java new file mode 100644 index 0000000..c86e7ba --- /dev/null +++ b/src/main/java/com/huaheng/pc/config/points/service/PointsServiceImpl.java @@ -0,0 +1,81 @@ +package com.huaheng.pc.config.points.service; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.huaheng.common.constant.QuantityConstant; +import com.huaheng.common.utils.security.ShiroUtils; +import com.huaheng.framework.web.domain.AjaxResult; +import com.huaheng.pc.config.container.domain.Container; +import com.huaheng.pc.config.container.service.ContainerService; +import com.huaheng.pc.config.points.domain.Points; +import com.huaheng.pc.config.points.mapper.PointsMapper; +import org.apache.commons.collections.ListUtils; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.List; + + +/** + * 货架 服务层实现 + * + * @author ricard + * @date 2019-12-26 + */ +@Service +public class PointsServiceImpl extends ServiceImpl<PointsMapper,Points> implements PointsService{ + + @Resource + private PointsMapper pointsMapper; + @Resource + private ContainerService containerService; + + @Override + public int updateAll() { + return pointsMapper.updateAll(); + } + + + + @Override + public AjaxResult detectShelf() { + //查找为空的货架 + List<Container> containers =containerService.selectListShelf(); + List<String> stringList = new ArrayList<>(); + for(Container item : containers){ + stringList.add(item.getGoodsShelfNo()); + } + Integer flag = 1; + + //修改空货架状态 + flag = pointsMapper.updateIsEmpty(stringList, QuantityConstant.POINTS_SOME); + if(flag < 1){ + return AjaxResult.error("修改空货架状态失败"); + } + + + //查找所以货架 + LambdaQueryWrapper<Points> pointsLamb = Wrappers.lambdaQuery(); + pointsLamb.eq(Points::getWarehouseCode,ShiroUtils.getWarehouseCode()); + List<Points> pointsList = this.list(pointsLamb); + + //去重 + List<String> list =new ArrayList<>(); + for(Points item : pointsList){ + list.add(item.getGoodsShelfNo()); + } + + List<String> list1 = ListUtils.subtract(list,stringList); + + //修改非空货架 + flag = pointsMapper.updateIsEmpty(list1,QuantityConstant.POINTS_EMPTY); + if(flag < 1){ + return AjaxResult.error("修改空货架状态失败"); + } + + return AjaxResult.success("成功"); + } + +} diff --git a/src/main/java/com/huaheng/pc/config/receiptPreference/controller/ReceiptPreferenceController.java b/src/main/java/com/huaheng/pc/config/receiptPreference/controller/ReceiptPreferenceController.java index 0a1f21b..03ad15d 100644 --- a/src/main/java/com/huaheng/pc/config/receiptPreference/controller/ReceiptPreferenceController.java +++ b/src/main/java/com/huaheng/pc/config/receiptPreference/controller/ReceiptPreferenceController.java @@ -61,7 +61,7 @@ public class ReceiptPreferenceController extends BaseController { .eq(ReceiptPreference::getWarehouseCode, ShiroUtils.getWarehouseCode()) .eq(StringUtils.isNotEmpty(receiptPreference.getCode()), ReceiptPreference::getCode, receiptPreference.getCode()) - .eq(StringUtils.isNotEmpty(receiptPreference.getName()), + .like(StringUtils.isNotEmpty(receiptPreference.getName()), ReceiptPreference::getName, receiptPreference.getName()) .like(StringUtils.isNotEmpty(receiptPreference.getReceivingFlow()), ReceiptPreference::getReceivingFlow, receiptPreference.getReceivingFlow()); diff --git a/src/main/java/com/huaheng/pc/config/receiptPreference/service/ReceiptPreferenceService.java b/src/main/java/com/huaheng/pc/config/receiptPreference/service/ReceiptPreferenceService.java index 96ea6e8..f18831f 100644 --- a/src/main/java/com/huaheng/pc/config/receiptPreference/service/ReceiptPreferenceService.java +++ b/src/main/java/com/huaheng/pc/config/receiptPreference/service/ReceiptPreferenceService.java @@ -9,6 +9,8 @@ import java.util.List; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.huaheng.pc.config.receiptPreference.mapper.ReceiptPreferenceMapper; import com.huaheng.pc.config.receiptPreference.domain.ReceiptPreference; +import org.springframework.transaction.annotation.Transactional; + @Service public class ReceiptPreferenceService extends ServiceImpl<ReceiptPreferenceMapper, ReceiptPreference> { @@ -19,6 +21,7 @@ public class ReceiptPreferenceService extends ServiceImpl<ReceiptPreferenceMappe * @param newWarehouseCode 新仓库编码 * @return 是否复制成功 */ + @Transactional public boolean receiptPreferenceCopy(String warehouseCode, String newWarehouseCode) { log.trace("开始入库首选项表"); LambdaQueryWrapper<ReceiptPreference> lambdaQueryWrapper = Wrappers.lambdaQuery(); diff --git a/src/main/java/com/huaheng/pc/config/receiptType/service/ReceiptTypeServiceImpl.java b/src/main/java/com/huaheng/pc/config/receiptType/service/ReceiptTypeServiceImpl.java index 08d10c3..b37cd61 100644 --- a/src/main/java/com/huaheng/pc/config/receiptType/service/ReceiptTypeServiceImpl.java +++ b/src/main/java/com/huaheng/pc/config/receiptType/service/ReceiptTypeServiceImpl.java @@ -3,11 +3,13 @@ package com.huaheng.pc.config.receiptType.service; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.huaheng.common.utils.StringUtils; import com.huaheng.common.utils.security.ShiroUtils; import com.huaheng.pc.config.address.domain.Address; import com.huaheng.pc.config.receiptType.domain.ReceiptType; import com.huaheng.pc.config.receiptType.mapper.ReceiptTypeMapper; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import java.util.List; import java.util.Map; @@ -17,8 +19,8 @@ public class ReceiptTypeServiceImpl extends ServiceImpl<ReceiptTypeMapper, Recei public List<Map<String, Object>> getType(){ LambdaQueryWrapper<ReceiptType> lambdaQueryWrapper = Wrappers.lambdaQuery(); - lambdaQueryWrapper.eq(ReceiptType::getWarehouseCode, ShiroUtils.getWarehouseCode()) - .in(ReceiptType::getCompanyCode, ShiroUtils.getCompanyCodeList()); + lambdaQueryWrapper.eq(StringUtils.isNotEmpty(ShiroUtils.getWarehouseCode()),ReceiptType::getWarehouseCode, ShiroUtils.getWarehouseCode()) + .in(StringUtils.isNotEmpty(ShiroUtils.getCompanyCodeList()),ReceiptType::getCompanyCode, ShiroUtils.getCompanyCodeList()); return this.listMaps(lambdaQueryWrapper); } @@ -30,6 +32,7 @@ public class ReceiptTypeServiceImpl extends ServiceImpl<ReceiptTypeMapper, Recei * @return 是否复制成功 */ @Override + @Transactional public Boolean receiptTypeCopy(String warehouseCode, String newWarehouseCode) { log.trace("开始复制入库类型表"); LambdaQueryWrapper<ReceiptType> lambdaQueryWrapper = Wrappers.lambdaQuery(); diff --git a/src/main/java/com/huaheng/pc/config/shipmentPreference/service/ShipmentPreferenceServiceImpl.java b/src/main/java/com/huaheng/pc/config/shipmentPreference/service/ShipmentPreferenceServiceImpl.java index c8ba0e7..d404f6c 100644 --- a/src/main/java/com/huaheng/pc/config/shipmentPreference/service/ShipmentPreferenceServiceImpl.java +++ b/src/main/java/com/huaheng/pc/config/shipmentPreference/service/ShipmentPreferenceServiceImpl.java @@ -19,6 +19,7 @@ import com.huaheng.pc.shipment.shipmentHeader.domain.ShipmentHeader; import com.huaheng.pc.shipment.shipmentHeader.service.ShipmentHeaderService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import java.util.ArrayList; import java.util.List; @@ -118,6 +119,7 @@ public class ShipmentPreferenceServiceImpl extends ServiceImpl<ShipmentPreferenc * @return 是否复制成功 */ @Override + @Transactional public boolean shipmentPreferenceCopy(String warehouseCode, String newWarehouseCode) { log.trace("开始复制出库首选项表"); LambdaQueryWrapper<ShipmentPreference> lambdaQueryWrapper = Wrappers.lambdaQuery(); diff --git a/src/main/java/com/huaheng/pc/config/shipmentType/service/ShipmentTypeServiceImpl.java b/src/main/java/com/huaheng/pc/config/shipmentType/service/ShipmentTypeServiceImpl.java index 2302a20..2e0d821 100644 --- a/src/main/java/com/huaheng/pc/config/shipmentType/service/ShipmentTypeServiceImpl.java +++ b/src/main/java/com/huaheng/pc/config/shipmentType/service/ShipmentTypeServiceImpl.java @@ -7,6 +7,7 @@ import com.huaheng.pc.config.shipmentPreference.domain.ShipmentPreference; import com.huaheng.pc.config.shipmentType.domain.ShipmentType; import com.huaheng.pc.config.shipmentType.mapper.ShipmentTypeMapper; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import java.util.List; @@ -21,6 +22,7 @@ public class ShipmentTypeServiceImpl extends ServiceImpl<ShipmentTypeMapper, Shi * @return 是否复制成功 */ @Override + @Transactional public boolean ShipmentTypeCopy(String warehouseCode, String newWarehouseCode) { log.trace("开始复制出库类型表"); LambdaQueryWrapper<ShipmentType> lambdaQueryWrapper = Wrappers.lambdaQuery(); diff --git a/src/main/java/com/huaheng/pc/config/statusFlow/service/StatusFlowHeaderService.java b/src/main/java/com/huaheng/pc/config/statusFlow/service/StatusFlowHeaderService.java index 6d84c76..a772b5e 100644 --- a/src/main/java/com/huaheng/pc/config/statusFlow/service/StatusFlowHeaderService.java +++ b/src/main/java/com/huaheng/pc/config/statusFlow/service/StatusFlowHeaderService.java @@ -26,6 +26,7 @@ public class StatusFlowHeaderService extends ServiceImpl<StatusFlowHeaderMapper, public List<Map<String, Object>> flowList(String recordType){ LambdaQueryWrapper<StatusFlowHeader> lambda = Wrappers.lambdaQuery(); lambda.select(StatusFlowHeader::getCode, StatusFlowHeader::getName) + .eq(StatusFlowHeader::getWarehouseCode,ShiroUtils.getWarehouseCode()) .eq(StatusFlowHeader::getRecordType, recordType); return this.listMaps(lambda); } diff --git a/src/main/java/com/huaheng/pc/config/supplier/controller/SupplierController.java b/src/main/java/com/huaheng/pc/config/supplier/controller/SupplierController.java index a1cf593..6bcaf55 100644 --- a/src/main/java/com/huaheng/pc/config/supplier/controller/SupplierController.java +++ b/src/main/java/com/huaheng/pc/config/supplier/controller/SupplierController.java @@ -66,7 +66,7 @@ public class SupplierController extends BaseController { lambdaQueryWrapper.gt(StringUtils.isNotEmpty(createdBegin), Supplier::getCreated, createdBegin) .lt(StringUtils.isNotEmpty(createdEnd), Supplier::getCreated, createdEnd) .eq(StringUtils.isNotEmpty(supplier.getCode()), Supplier::getCode, supplier.getCode()) - .eq(StringUtils.isNotEmpty(supplier.getName()), Supplier::getName, supplier.getName()) + .like(StringUtils.isNotEmpty(supplier.getName()), Supplier::getName, supplier.getName()) .eq(Supplier::getWarehouseCode, ShiroUtils.getWarehouseCode()) .eq(Supplier::getDeleted,false) .orderByDesc(Supplier::getCreated); diff --git a/src/main/java/com/huaheng/pc/config/table/service/TableService.java b/src/main/java/com/huaheng/pc/config/table/service/TableService.java new file mode 100644 index 0000000..256168f --- /dev/null +++ b/src/main/java/com/huaheng/pc/config/table/service/TableService.java @@ -0,0 +1,18 @@ +package com.huaheng.pc.config.table.service; + +import org.springframework.stereotype.Service; + +/** + * Created by Enzo Cotter on 2019/11/25. + */ +@Service("table") +public class TableService { + + public boolean getVisible(String value){ + if ("t".equals(value)){ + return true; + } else { + return false; + } + } +} diff --git a/src/main/java/com/huaheng/pc/config/warehouse/controller/WareHouseController.java b/src/main/java/com/huaheng/pc/config/warehouse/controller/WareHouseController.java index 8fbe3b7..0be7ac4 100644 --- a/src/main/java/com/huaheng/pc/config/warehouse/controller/WareHouseController.java +++ b/src/main/java/com/huaheng/pc/config/warehouse/controller/WareHouseController.java @@ -169,7 +169,7 @@ public class WareHouseController extends BaseController { return prefix+"/copy"; } /** - * 修改保存仓库 + * 复制仓库 */ @RequiresPermissions("config:warehouse:copy") @Log(title = "通用-仓库管理", operating = "复制仓库", action = BusinessType.INSERT) diff --git a/src/main/java/com/huaheng/pc/config/warehouse/mapper/WarehouseMapper.java b/src/main/java/com/huaheng/pc/config/warehouse/mapper/WarehouseMapper.java index 0ac4e66..b5f2f9d 100644 --- a/src/main/java/com/huaheng/pc/config/warehouse/mapper/WarehouseMapper.java +++ b/src/main/java/com/huaheng/pc/config/warehouse/mapper/WarehouseMapper.java @@ -17,6 +17,9 @@ public interface WarehouseMapper extends BaseMapper<Warehouse> { int companyCopy(@Param("warehouseCode") String warehouseCode, @Param("newWarehouseCode")String newWarehouseCode); + int userCopy(@Param("warehouseCode") String warehouseCode, @Param("newWarehouseCode")String newWarehouseCode); + + List<Warehouse> selectListEntityByEqual(Warehouse condition); } \ No newline at end of file diff --git a/src/main/java/com/huaheng/pc/config/warehouse/service/WarehouseServiceImpl.java b/src/main/java/com/huaheng/pc/config/warehouse/service/WarehouseServiceImpl.java index 1d2d1b9..06a9000 100644 --- a/src/main/java/com/huaheng/pc/config/warehouse/service/WarehouseServiceImpl.java +++ b/src/main/java/com/huaheng/pc/config/warehouse/service/WarehouseServiceImpl.java @@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.huaheng.common.exception.service.ServiceException; import com.huaheng.pc.config.FilterConfigHeader.service.FilterConfigHeaderService; +import com.huaheng.pc.config.address.domain.Address; import com.huaheng.pc.config.address.service.AddressService; import com.huaheng.pc.config.configValue.service.ConfigValueService; import com.huaheng.pc.config.containerType.service.ContainerTypeService; @@ -20,6 +21,7 @@ import com.huaheng.pc.config.warehouse.mapper.WarehouseMapper; import com.huaheng.pc.config.warehouseCompany.domain.WarehouseCompany; import com.huaheng.pc.config.warehouseCompany.service.WarehouseCompanyService; import com.huaheng.pc.config.waveMaster.service.WaveMasterService; +import com.huaheng.pc.config.zone.service.ZoneService; import com.huaheng.pc.system.dict.service.IDictTypeService; import com.huaheng.pc.system.menu.service.IMenuService; import com.huaheng.pc.system.role.service.IRoleService; @@ -68,6 +70,8 @@ public class WarehouseServiceImpl extends ServiceImpl<WarehouseMapper, Warehouse private StatusFlowHeaderService statusFlowHeaderService; @Autowired private WaveMasterService waveMasterService; + @Autowired + private ZoneService zoneService; @Override public List<Map<String, Object>> getWarehouseList(Integer id) { @@ -79,15 +83,15 @@ public class WarehouseServiceImpl extends ServiceImpl<WarehouseMapper, Warehouse List<Map<String, Object>> warehouseList = warehouseMapper.selectMaps(lambdaQueryWrapper); LambdaQueryWrapper<WarehouseCompany> lambdaQueryWrapper1 = Wrappers.lambdaQuery(); - lambdaQueryWrapper1.select(WarehouseCompany::getCompanyCode, WarehouseCompany::getWarehouseCode) + lambdaQueryWrapper1.select(WarehouseCompany::getCompanyCode,WarehouseCompany::getWarehouseCode) .eq(WarehouseCompany::getCompanyId,id); List<Map<String, Object>> warehouseCompanies = warehouseCompanyService.listMaps(lambdaQueryWrapper1); for(Map<String, Object> item : warehouseList){ item.put("flag",false); item.put("value", item.get("code").toString()); - for (Map<String, Object> warehouseId:warehouseCompanies) { - if (item.get("code").toString().equals(warehouseId.get("warehouseCode").toString())) { + for (Map<String, Object> warehouseI:warehouseCompanies) { + if (item.get("code").toString().equals(warehouseI.get("warehouseCode").toString())) { item.put("flag",true); break; } @@ -139,6 +143,10 @@ public class WarehouseServiceImpl extends ServiceImpl<WarehouseMapper, Warehouse if (!locationTypeService.locationTypeCopy(warehouseCode, newWarehouseCode)){ throw new ServiceException("复制库位类型表失败"); } + /* 复制库区表*/ + if (!zoneService.zoneCopy(warehouseCode, newWarehouseCode)){ + throw new ServiceException("复制库区类型表失败"); + } /* 复制盘点首选项表*/ if (!cycleCountPreferenceService.cycleCountPreferenceCopy(warehouseCode, newWarehouseCode)){ throw new ServiceException("复制盘点首选项表失败"); @@ -163,6 +171,10 @@ public class WarehouseServiceImpl extends ServiceImpl<WarehouseMapper, Warehouse if (warehouseMapper.companyCopy(warehouseCode, newWarehouseCode) < 1){ throw new ServiceException("复制仓库货主关系表失败"); } + /* 复制仓库用户关系*/ + if (warehouseMapper.userCopy(warehouseCode, newWarehouseCode) < 1){ + throw new ServiceException("复制仓库货主关系表失败"); + } /* 复制角色*/ if (!roleService.roleCopy(warehouseCode, newWarehouseCode)){ throw new ServiceException("复制角色表失败"); diff --git a/src/main/java/com/huaheng/pc/config/waveMaster/service/WaveMasterService.java b/src/main/java/com/huaheng/pc/config/waveMaster/service/WaveMasterService.java index 6a38c5e..6de5049 100644 --- a/src/main/java/com/huaheng/pc/config/waveMaster/service/WaveMasterService.java +++ b/src/main/java/com/huaheng/pc/config/waveMaster/service/WaveMasterService.java @@ -9,6 +9,7 @@ import com.huaheng.pc.config.waveFlowHeader.mapper.WaveFlowHeaderMapper; import com.huaheng.pc.config.waveMaster.domain.WaveMaster; import com.huaheng.pc.config.waveMaster.mapper.WaveMasterMapper; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; @@ -25,6 +26,7 @@ public class WaveMasterService extends ServiceImpl<WaveMasterMapper, WaveMaster> //复制波次配置 + @Transactional public Boolean waveMasterCopy(String code,String newCode){ int i = 0; //复制波次配置 diff --git a/src/main/java/com/huaheng/pc/config/zone/mapper/ZoneMapper.java b/src/main/java/com/huaheng/pc/config/zone/mapper/ZoneMapper.java index f058229..274ea5d 100644 --- a/src/main/java/com/huaheng/pc/config/zone/mapper/ZoneMapper.java +++ b/src/main/java/com/huaheng/pc/config/zone/mapper/ZoneMapper.java @@ -2,6 +2,10 @@ package com.huaheng.pc.config.zone.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.huaheng.pc.config.zone.domain.Zone; +import org.apache.ibatis.annotations.Param; public interface ZoneMapper extends BaseMapper<Zone> { + + /* 复制库区表*/ + int zoneCopy(@Param("code") String code,@Param("newCode") String newCode); } \ No newline at end of file diff --git a/src/main/java/com/huaheng/pc/config/zone/service/ZoneService.java b/src/main/java/com/huaheng/pc/config/zone/service/ZoneService.java index 2663920..990b7a3 100644 --- a/src/main/java/com/huaheng/pc/config/zone/service/ZoneService.java +++ b/src/main/java/com/huaheng/pc/config/zone/service/ZoneService.java @@ -9,4 +9,7 @@ import java.util.Map; public interface ZoneService extends IService<Zone>{ public List<Map<String, Object>> getZoneCodeList(); + /* 复制库区表*/ + boolean zoneCopy(String warehouseCode, String newWarehouseCode); + } diff --git a/src/main/java/com/huaheng/pc/config/zone/service/ZoneServiceImpl.java b/src/main/java/com/huaheng/pc/config/zone/service/ZoneServiceImpl.java index 19ead5f..daee573 100644 --- a/src/main/java/com/huaheng/pc/config/zone/service/ZoneServiceImpl.java +++ b/src/main/java/com/huaheng/pc/config/zone/service/ZoneServiceImpl.java @@ -3,20 +3,39 @@ package com.huaheng.pc.config.zone.service; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.huaheng.common.exception.service.ServiceException; import com.huaheng.pc.config.zone.domain.Zone; import com.huaheng.pc.config.zone.mapper.ZoneMapper; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import javax.annotation.Resource; import java.util.List; import java.util.Map; @Service("zone") public class ZoneServiceImpl extends ServiceImpl<ZoneMapper, Zone> implements ZoneService { + @Resource + private ZoneMapper zoneMapper; + @Override + @Transactional public List<Map<String, Object>> getZoneCodeList() { LambdaQueryWrapper<Zone> lambda = Wrappers.lambdaQuery(); lambda.select(Zone::getId, Zone::getCode, Zone::getName); return this.listMaps(lambda); } + + @Override + @Transactional + public boolean zoneCopy(String warehouseCode, String newWarehouseCode) { + int i = 0; + //复制流程主表 + i = zoneMapper.zoneCopy(warehouseCode,newWarehouseCode); + if(i < 1){ + throw new ServiceException("复制菜单数据失败"); + } + return true; + } } diff --git a/src/main/java/com/huaheng/pc/jasper/JasperController.java b/src/main/java/com/huaheng/pc/jasper/JasperController.java new file mode 100644 index 0000000..3ed4864 --- /dev/null +++ b/src/main/java/com/huaheng/pc/jasper/JasperController.java @@ -0,0 +1,100 @@ +package com.huaheng.pc.jasper; + +import com.huaheng.common.jasper.DocType; +import com.huaheng.common.jasper.DocTypeUtil; +import com.huaheng.common.jasper.JasperreportUtils; +import net.sf.jasperreports.engine.*; +import net.sf.jasperreports.engine.util.JRLoader; +import org.springframework.core.io.ClassPathResource; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import javax.sql.DataSource; +import java.io.File; +import java.io.IOException; +import java.io.InputStream; +import java.io.OutputStream; +import java.sql.Connection; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +@RestController +@RequestMapping("/api/jasper") +public class JasperController { + + @Resource + private DataSource dataSource; + + + + /** + * 转换为pdf在浏览器上展示 + * + * @param reportName + * @param parameters + * @param response + * @throws SQLException + * @throws ClassNotFoundException + * @throws JRException + * @throws IOException + */ +// @GetMapping("/{reportName}") + public void getReportByParam( + @PathVariable("reportName") final String reportName, + @RequestParam(required = false) Map<String, Object> parameters, + HttpServletResponse response) throws Exception { + + parameters = parameters == null ? new HashMap<>() : parameters; + //获取文件流 + ClassPathResource resource = new ClassPathResource("jaspers" + File.separator + reportName + ".jasper"); + InputStream jasperStream = resource.getInputStream(); + + JasperReport jasperReport = (JasperReport) JRLoader.loadObject(jasperStream); + Connection connection =dataSource.getConnection(); + JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, parameters, connection); + response.setContentType("application/pdf"); + response.setHeader("Content-Disposition", "inline;"); + final OutputStream outputStream = response.getOutputStream(); + JasperExportManager.exportReportToPdfStream(jasperPrint, outputStream); + } + + + + + /** + * 转换为多种格式导出 + * + * @param reportName + * @param parameters + * @param response + * @throws SQLException + * @throws ClassNotFoundException + * @throws JRException + * @throws IOException + */ + @GetMapping("/{reportName}") + public void getReportByExcel( + @PathVariable("reportName") final String reportName, + @RequestParam(required = false) Map<String, Object> parameters, + HttpServletRequest request, + HttpServletResponse response) throws Exception { + + parameters = parameters == null ? new HashMap<>() : parameters; + String jasperPath ="C:/Users/Administrator/JaspersoftWorkspace/MyReports/" + reportName + ".jasper"; + String docType="pdf"; + DocType type = DocTypeUtil.getEnumDocType(docType); + String fileName =reportName; + List list =new ArrayList(); + Connection connection =dataSource.getConnection(); + JasperreportUtils jasperreportUtils =new JasperreportUtils(request,response,request.getSession()); + jasperreportUtils.createExportDocument(type,jasperPath,parameters,reportName,connection); + + } + + +} diff --git a/src/main/java/com/huaheng/pc/monitor/errorlog/domain/ErrorLog.java b/src/main/java/com/huaheng/pc/monitor/errorlog/domain/ErrorLog.java index a42d842..e9437fb 100644 --- a/src/main/java/com/huaheng/pc/monitor/errorlog/domain/ErrorLog.java +++ b/src/main/java/com/huaheng/pc/monitor/errorlog/domain/ErrorLog.java @@ -1,5 +1,9 @@ package com.huaheng.pc.monitor.errorlog.domain; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; import com.huaheng.framework.web.domain.BaseEntity; import org.apache.commons.lang3.builder.ToStringBuilder; import org.apache.commons.lang3.builder.ToStringStyle; @@ -11,40 +15,58 @@ import java.util.Date; * @author huaheng * @date 2018-12-4 */ + +@TableName(value = "logging_event") public class ErrorLog extends BaseEntity { private static final long serialVersionUID = 1L; //错误编号 + @TableId(value = "event_id", type = IdType.AUTO) private Integer event_id; //时间戳 + @TableField(value = "timestmp") private Long timestmp; //格式化错误信息 + @TableField(value = "formatted_message") private String formatted_message; //日志名 + @TableField(value = "logger_name") private String logger_name; //级别 + @TableField(value = "level_string") private String level_string; //线程名 + @TableField(value = "thread_name") private String thread_name; //参数标志 + @TableField(value = "reference_flag") private String reference_flag; //arg0参数 + @TableField(value = "arg0") private String arg0; //arg1参数 + @TableField(value = "arg1") private String arg1; //arg2参数 + @TableField(value = "arg2") private String arg2; //arg3参数 + @TableField(value = "arg3") private String arg3; //来电名称 + @TableField(value = "caller_filename") private String caller_filename; //来电类 + @TableField(value = "caller_class") private String caller_class; //来电方法 + @TableField(value = "caller_method") private String caller_method; //来电线程 + @TableField(value = "caller_line") private String caller_line; //发生时间 + @TableField(value = "creatTime") private Date creatTime; public Integer getEvent_id() { diff --git a/src/main/java/com/huaheng/pc/monitor/job/controller/JobController.java b/src/main/java/com/huaheng/pc/monitor/job/controller/JobController.java new file mode 100644 index 0000000..1952167 --- /dev/null +++ b/src/main/java/com/huaheng/pc/monitor/job/controller/JobController.java @@ -0,0 +1,153 @@ +package com.huaheng.pc.monitor.job.controller; + +import com.huaheng.common.utils.poi.ExcelUtil; +import com.huaheng.framework.aspectj.lang.annotation.Log; +import com.huaheng.framework.aspectj.lang.constant.BusinessType; +import com.huaheng.framework.web.controller.BaseController; +import com.huaheng.framework.web.domain.AjaxResult; +import com.huaheng.framework.web.page.TableDataInfo; +import com.huaheng.pc.monitor.job.domain.Job; +import com.huaheng.pc.monitor.job.service.IJobService; +import org.apache.shiro.authz.annotation.RequiresPermissions; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Controller; +import org.springframework.ui.ModelMap; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * 调度任务信息操作处理 + * + * @author huaheng + */ +@Controller +@RequestMapping("/monitor/job") +public class JobController extends BaseController +{ + private String prefix = "monitor/job"; + + @Autowired + private IJobService jobService; + + @RequiresPermissions("monitor:job:view") + @GetMapping() + public String job() + { + return prefix + "/job"; + } + + @RequiresPermissions("monitor:job:list") + @Log(title = "系统监控-定时任务", operating = "查看定时任务", action = BusinessType.GRANT) + @PostMapping("/list") + @ResponseBody + public TableDataInfo list(Job job) + { + startPage(); + List<Job> list = jobService.selectJobList(job); + return getDataTable(list); + } + + @Log(title = "系统监控-定时任务", operating = "导出定时任务", action = BusinessType.EXPORT) + @RequiresPermissions("monitor:job:export") + @PostMapping("/export") + @ResponseBody + public AjaxResult export(Job job) throws Exception + { + try + { + List<Job> list = jobService.selectJobList(job); + ExcelUtil<Job> util = new ExcelUtil<Job>(Job.class); + return util.exportExcel(list, "job"); + } + catch (Exception e) + { + return error("导出Excel失败,请联系网站管理员!"); + } + } + + @Log(title = "系统监控-定时任务", operating = "删除定时任务", action = BusinessType.DELETE) + @RequiresPermissions("monitor:job:remove") + @PostMapping("/remove") + @ResponseBody + public AjaxResult remove(String ids) + { + try + { + jobService.deleteJobByIds(ids); + return success(); + } + catch (Exception e) + { + e.printStackTrace(); + return error(e.getMessage()); + } + } + + /** + * 任务调度状态修改 + */ + @Log(title = "系统监控-定时任务", operating = "启用或暂停定时任务", action = BusinessType.UPDATE) + @RequiresPermissions("monitor:job:changeStatus") + @PostMapping("/changeStatus") + @ResponseBody + public AjaxResult changeStatus(Job job) + { + return toAjax(jobService.changeStatus(job)); + } + + /** + * 任务调度立即执行一次 + */ + @Log(title = "系统监控-定时任务", operating = "执行定时任务", action = BusinessType.UPDATE) + @RequiresPermissions("monitor:job:start") + @PostMapping("/run") + @ResponseBody + public AjaxResult run(Job job) + { + return toAjax(jobService.run(job)); + } + + /** + * 新增调度 + */ + @GetMapping("/add") + public String add() + { + return prefix + "/add"; + } + + /** + * 新增保存调度 + */ + @Log(title = "系统监控-定时任务", operating = "新增定时任务", action = BusinessType.INSERT) + @RequiresPermissions("monitor:job:add") + @PostMapping("/add") + @ResponseBody + public AjaxResult addSave(Job job) + { + return toAjax(jobService.insertJobCron(job)); + } + + /** + * 修改调度 + */ + @GetMapping("/edit/{id}") + public String edit(@PathVariable("id") Long id, ModelMap mmap) + { + mmap.put("job", jobService.selectJobById(id)); + return prefix + "/edit"; + } + + /** + * 修改保存调度 + */ + @Log(title = "系统监控-定时任务", operating = "修改定时任务", action = BusinessType.UPDATE) + @RequiresPermissions("monitor:job:edit") + @PostMapping("/edit") + @ResponseBody + public AjaxResult editSave(Job job) + { + return toAjax(jobService.updateJobCron(job)); + } +} diff --git a/src/main/java/com/huaheng/pc/monitor/job/controller/JobLogController.java b/src/main/java/com/huaheng/pc/monitor/job/controller/JobLogController.java new file mode 100644 index 0000000..9ea8e89 --- /dev/null +++ b/src/main/java/com/huaheng/pc/monitor/job/controller/JobLogController.java @@ -0,0 +1,78 @@ +package com.huaheng.pc.monitor.job.controller; + +import com.huaheng.common.utils.poi.ExcelUtil; +import com.huaheng.framework.aspectj.lang.annotation.Log; +import com.huaheng.framework.aspectj.lang.constant.BusinessType; +import com.huaheng.framework.web.controller.BaseController; +import com.huaheng.framework.web.domain.AjaxResult; +import com.huaheng.framework.web.page.TableDataInfo; +import com.huaheng.pc.monitor.job.domain.JobLog; +import com.huaheng.pc.monitor.job.service.IJobLogService; +import org.apache.shiro.authz.annotation.RequiresPermissions; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; + +import java.util.List; + +/** + * 调度日志操作处理 + * + * @author huaheng + */ +@Controller +@RequestMapping("/monitor/jobLog") +public class JobLogController extends BaseController +{ + private String prefix = "monitor/job"; + + @Autowired + private IJobLogService jobLogService; + + @RequiresPermissions("monitor:jobLog:view") + @GetMapping() + public String jobLog() + { + return prefix + "/jobLog"; + } + + @RequiresPermissions("monitor:jobLog:list") + @PostMapping("/list") + @ResponseBody + public TableDataInfo list(JobLog jobLog) + { + startPage(); + List<JobLog> list = jobLogService.selectJobLogList(jobLog); + return getDataTable(list); + } + + @Log(title = "系统监控-定时任务", operating = "导出调度日志", action = BusinessType.EXPORT) + @RequiresPermissions("monitor:jobLog:export") + @PostMapping("/export") + @ResponseBody + public AjaxResult export(JobLog jobLog) throws Exception + { + try + { + List<JobLog> list = jobLogService.selectJobLogList(jobLog); + ExcelUtil<JobLog> util = new ExcelUtil<JobLog>(JobLog.class); + return util.exportExcel(list, "jobLog"); + } + catch (Exception e) + { + return error("导出Excel失败,请联系网站管理员!"); + } + } + + @Log(title = "系统监控-定时任务", operating = "删除调度日志", action = BusinessType.DELETE) + @RequiresPermissions("monitor:jobLog:remove") + @PostMapping("/remove") + @ResponseBody + public AjaxResult remove(String ids) + { + return toAjax(jobLogService.deleteJobLogByIds(ids)); + } +} diff --git a/src/main/java/com/huaheng/pc/monitor/job/domain/Job.java b/src/main/java/com/huaheng/pc/monitor/job/domain/Job.java new file mode 100644 index 0000000..f010498 --- /dev/null +++ b/src/main/java/com/huaheng/pc/monitor/job/domain/Job.java @@ -0,0 +1,249 @@ +package com.huaheng.pc.monitor.job.domain; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.google.common.collect.Maps; +import com.huaheng.common.constant.ScheduleConstants; +import com.huaheng.framework.aspectj.lang.annotation.Excel; + +import java.io.Serializable; +import java.util.Date; +import java.util.Map; + +/** + * 定时任务调度信息 sys_job + * + * @author huaheng + */ +@TableName(value = "sys_job") +public class Job implements Serializable +{ + private static final long serialVersionUID = 1L; + + /** 任务ID */ + @Excel(name = "任务序号") + @TableId(value = "id", type = IdType.AUTO) + private Long id; + + /** 任务名称 */ + @Excel(name = "任务名称") + @TableField(value = "jobName") + private String jobName; + + /** 任务组名 */ + @Excel(name = "任务组名") + @TableField(value = "jobGroup") + private String jobGroup; + + /** 任务方法 */ + @Excel(name = "任务方法") + @TableField(value = "methodName") + private String methodName; + + /** 方法参数 */ + @Excel(name = "方法参数") + @TableField(value = "methodParams") + private String methodParams; + + /** cron执行表达式 */ + @Excel(name = "执行表达式 ") + @TableField(value = "cronExpression") + private String cronExpression; + + /** cron计划策略 */ + @Excel(name = "计划策略 ") + @TableField(value = "misfirePolicy") + private String misfirePolicy = ScheduleConstants.MISFIRE_DEFAULT; + + /** 任务状态(0正常 1暂停) */ + @Excel(name = "任务状态") + @TableField(value = "status") + private String status; + + /** 搜索值 */ + private String searchValue; + + /** 创建者 */ + @TableField(value = "createBy") + private String createBy; + + /** 创建时间 */ + @TableField(value = "createTime") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date createTime; + + /** 更新者 */ + @TableField(value = "updateBy") + private String updateBy; + + /** 更新时间 */ + @TableField(value = "updateTime") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date updateTime; + + /** 备注 */ + @TableField(value = "remark") +// @TableField(exist=false) + private String remark; + + /** 请求参数 */ + private Map<String, Object> params; + + public Long getId() + { + return id; + } + + public void setId(Long id) + { + this.id = id; + } + + public String getJobName() + { + return jobName; + } + + public void setJobName(String jobName) + { + this.jobName = jobName; + } + + public String getJobGroup() + { + return jobGroup; + } + + public void setJobGroup(String jobGroup) + { + this.jobGroup = jobGroup; + } + + public String getMethodName() + { + return methodName; + } + + public void setMethodName(String methodName) + { + this.methodName = methodName; + } + + public String getMethodParams() + { + return methodParams; + } + + public void setMethodParams(String methodParams) + { + this.methodParams = methodParams; + } + + public String getCronExpression() + { + return cronExpression; + } + + public void setCronExpression(String cronExpression) + { + this.cronExpression = cronExpression; + } + + public String getMisfirePolicy() + { + return misfirePolicy; + } + + public void setMisfirePolicy(String misfirePolicy) + { + this.misfirePolicy = misfirePolicy; + } + + public String getStatus() + { + return status; + } + + public void setStatus(String status) + { + this.status = status; + } + + public String getSearchValue() + { + return searchValue; + } + + public void setSearchValue(String searchValue) + { + this.searchValue = searchValue; + } + + public String getCreateBy() + { + return createBy; + } + + public void setCreateBy(String createBy) + { + this.createBy = createBy; + } + + public Date getCreateTime() + { + return createTime; + } + + public void setCreateTime(Date createTime) + { + this.createTime = createTime; + } + + public String getUpdateBy() + { + return updateBy; + } + + public void setUpdateBy(String updateBy) + { + this.updateBy = updateBy; + } + + public Date getUpdateTime() + { + return updateTime; + } + + public void setUpdateTime(Date updateTime) + { + this.updateTime = updateTime; + } + + public String getRemark() + { + return remark; + } + + public void setRemark(String remark) + { + this.remark = remark; + } + + public Map<String, Object> getParams() { if (params == null) { params = Maps.newHashMap(); } return params; } + + public void setParams(Map<String, Object> params) + { + this.params = params; + } + + @Override + public String toString() + { + return "Job [id=" + id + ", jobName=" + jobName + ", jobGroup=" + jobGroup + ", methodName=" + methodName + + ", methodParams=" + methodParams + ", cronExpression=" + cronExpression + ", status=" + status + "]"; + } + +} diff --git a/src/main/java/com/huaheng/pc/monitor/job/domain/JobLog.java b/src/main/java/com/huaheng/pc/monitor/job/domain/JobLog.java new file mode 100644 index 0000000..79d6910 --- /dev/null +++ b/src/main/java/com/huaheng/pc/monitor/job/domain/JobLog.java @@ -0,0 +1,248 @@ +package com.huaheng.pc.monitor.job.domain; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.google.common.collect.Maps; +import com.huaheng.framework.aspectj.lang.annotation.Excel; + +import java.util.Date; +import java.util.Map; + +/** + * 定时任务调度日志信息 sys_job_log + * + * @author huaheng + */ +@TableName(value = "sys_job_log") +public class JobLog +{ + private static final long serialVersionUID = 1L; + + /** ID */ + @Excel(name = "日志序号") + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + /** 任务名称 */ + @Excel(name = "任务名称") + @TableField(value = "jobName") + private String jobName; + + /** 任务组名 */ + @Excel(name = "任务组名") + @TableField(value = "jobGroup") + private String jobGroup; + + /** 任务方法 */ + @Excel(name = "任务方法") + @TableField(value = "methodName") + private String methodName; + + /** 方法参数 */ + @Excel(name = "方法参数") + @TableField(value = "methodParams") + private String methodParams; + + /** 日志信息 */ + @Excel(name = "日志信息") + @TableField(value = "jobMessage") + private String jobMessage; + + /** 执行状态(0正常 1失败) */ + @Excel(name = "执行状态") + @TableField(value = "status") + private String status; + + /** 异常信息 */ + @Excel(name = "异常信息") + @TableField(value = "exceptionInfo") + private String exceptionInfo; + + /** 搜索值 */ + private String searchValue; + + /** 创建者 */ + private String createBy; + + /** 创建时间 */ + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @TableField(value = "createTime") + private Date createTime; + + /** 更新者 */ + private String updateBy; + + /** 更新时间 */ + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date updateTime; + + /** 备注 */ +// @TableField(exist=false) + private String remark; + + /** 请求参数 */ + private Map<String, Object> params; + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public String getJobName() + { + return jobName; + } + + public void setJobName(String jobName) + { + this.jobName = jobName; + } + + public String getJobGroup() + { + return jobGroup; + } + + public void setJobGroup(String jobGroup) + { + this.jobGroup = jobGroup; + } + + public String getMethodName() + { + return methodName; + } + + public void setMethodName(String methodName) + { + this.methodName = methodName; + } + + public String getMethodParams() + { + return methodParams; + } + + public void setMethodParams(String methodParams) + { + this.methodParams = methodParams; + } + + public String getJobMessage() + { + return jobMessage; + } + + public void setJobMessage(String jobMessage) + { + this.jobMessage = jobMessage; + } + + public String getStatus() + { + return status; + } + + public void setStatus(String status) + { + this.status = status; + } + + public String getExceptionInfo() + { + return exceptionInfo; + } + + public void setExceptionInfo(String exceptionInfo) + { + this.exceptionInfo = exceptionInfo; + } + + public String getSearchValue() + { + return searchValue; + } + + public void setSearchValue(String searchValue) + { + this.searchValue = searchValue; + } + + public String getCreateBy() + { + return createBy; + } + + public void setCreateBy(String createBy) + { + this.createBy = createBy; + } + + public Date getCreateTime() + { + return createTime; + } + + public void setCreateTime(Date createTime) + { + this.createTime = createTime; + } + + public String getUpdateBy() + { + return updateBy; + } + + public void setUpdateBy(String updateBy) + { + this.updateBy = updateBy; + } + + public Date getUpdateTime() + { + return updateTime; + } + + public void setUpdateTime(Date updateTime) + { + this.updateTime = updateTime; + } + + public String getRemark() + { + return remark; + } + + public void setRemark(String remark) + { + this.remark = remark; + } + + public Map<String, Object> getParams() + { + if (params == null) { + params = Maps.newHashMap(); + } + return params; + } + + public void setParams(Map<String, Object> params) + { + this.params = params; + } + + @Override + public String toString() + { + return "JobLog [id=" + id + ", jobName=" + jobName + ", jobGroup=" + jobGroup + ", methodName=" + + methodName + ", methodParams=" + methodParams + ", jobMessage=" + jobMessage + ", status=" + status + + ", exceptionInfo=" + exceptionInfo + "]"; + } + +} diff --git a/src/main/java/com/huaheng/pc/monitor/job/mapper/JobLogMapper.java b/src/main/java/com/huaheng/pc/monitor/job/mapper/JobLogMapper.java new file mode 100644 index 0000000..c965838 --- /dev/null +++ b/src/main/java/com/huaheng/pc/monitor/job/mapper/JobLogMapper.java @@ -0,0 +1,61 @@ +package com.huaheng.pc.monitor.job.mapper; + +import com.huaheng.pc.monitor.job.domain.JobLog; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 调度任务日志信息 数据层 + * + * @author huaheng + */ +@Service +public interface JobLogMapper +{ + + /** + * 获取quartz调度器日志的计划任务 + * + * @param jobLog 调度日志信息 + * @return 调度任务日志集合 + */ + public List<JobLog> selectJobLogList(JobLog jobLog); + + /** + * 通过调度任务日志ID查询调度信息 + * + * @param id 调度任务日志ID + * @return 调度任务日志对象信息 + */ + public JobLog selectJobLogById(Integer id); + + /** + * 新增任务日志 + * + * @param jobLog 调度日志信息 + * @return 结果 + */ + public int insertJobLog(JobLog jobLog); + + /** + * 批量删除调度日志信息 + * + * @param ids 需要删除的数据ID + * @return 结果 + */ + public int deleteJobLogByIds(String[] ids); + + /** + * 删除任务日志 + * + * @param id 调度日志ID + * @return 结果 + */ + public int deleteJobLogById(Integer id); + + + //清空任务日志 + public int truncateTable(); + +} diff --git a/src/main/java/com/huaheng/pc/monitor/job/mapper/JobMapper.java b/src/main/java/com/huaheng/pc/monitor/job/mapper/JobMapper.java new file mode 100644 index 0000000..740ffca --- /dev/null +++ b/src/main/java/com/huaheng/pc/monitor/job/mapper/JobMapper.java @@ -0,0 +1,72 @@ +package com.huaheng.pc.monitor.job.mapper; + +import com.huaheng.pc.monitor.job.domain.Job; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 调度任务信息 数据层 + * + * @author huaheng + */ +@Service +public interface JobMapper +{ + + /** + * 查询调度任务日志集合 + * + * @param job 调度信息 + * @return 操作日志集合 + */ + public List<Job> selectJobList(Job job); + + /** + * 查询所有调度任务 + * + * @return 调度任务列表 + */ + public List<Job> selectJobAll(); + + /** + * 通过调度ID查询调度任务信息 + * + * @param id 调度ID + * @return 角色对象信息 + */ + public Job selectJobById(Long id); + + /** + * 通过调度ID删除调度任务信息 + * + * @param job 调度 + * @return 结果 + */ + public int deleteJobById(Job job); + + /** + * 批量删除调度任务信息 + * + * @param ids 需要删除的数据ID + * @return 结果 + */ + public int deleteJobByIds(Integer[] ids); + + /** + * 修改调度任务信息 + * + * @param job 调度任务信息 + * @return 结果 + */ + public int updateJob(Job job); + + /** + * 新增调度任务信息 + * + * @param job 调度任务信息 + * @return 结果 + */ + public int insertJob(Job job); + +} diff --git a/src/main/java/com/huaheng/pc/monitor/job/service/IJobLogService.java b/src/main/java/com/huaheng/pc/monitor/job/service/IJobLogService.java new file mode 100644 index 0000000..1b8cb56 --- /dev/null +++ b/src/main/java/com/huaheng/pc/monitor/job/service/IJobLogService.java @@ -0,0 +1,57 @@ +package com.huaheng.pc.monitor.job.service; + +import com.huaheng.pc.monitor.job.domain.JobLog; + +import java.util.List; + +/** + * 定时任务调度日志信息信息 服务层 + * + * @author huaheng + */ +public interface IJobLogService +{ + + /** + * 获取quartz调度器日志的计划任务 + * + * @param jobLog 调度日志信息 + * @return 调度任务日志集合 + */ + public List<JobLog> selectJobLogList(JobLog jobLog); + + /** + * 通过调度任务日志ID查询调度信息 + * + * @param id 调度任务日志ID + * @return 调度任务日志对象信息 + */ + public JobLog selectJobLogById(Integer id); + + /** + * 新增任务日志 + * + * @param jobLog 调度日志信息 + */ + public void addJobLog(JobLog jobLog); + + /** + * 批量删除调度日志信息 + * + * @param ids 需要删除的数据ID + * @return 结果 + */ + public int deleteJobLogByIds(String ids); + + /** + * 删除任务日志 + * + * @param id 调度日志ID + * @return 结果 + */ + public int deleteJobLogById(Integer id); + + //清空任务日志 + public int truncateTable(); + +} diff --git a/src/main/java/com/huaheng/pc/monitor/job/service/IJobService.java b/src/main/java/com/huaheng/pc/monitor/job/service/IJobService.java new file mode 100644 index 0000000..cf72edb --- /dev/null +++ b/src/main/java/com/huaheng/pc/monitor/job/service/IJobService.java @@ -0,0 +1,95 @@ +package com.huaheng.pc.monitor.job.service; + +import com.huaheng.pc.monitor.job.domain.Job; + +import java.util.List; + +/** + * 定时任务调度信息信息 服务层 + * + * @author huaheng + */ +public interface IJobService +{ + + /** + * 获取quartz调度器的计划任务 + * + * @param job 调度信息 + * @return 调度任务集合 + */ + public List<Job> selectJobList(Job job); + + /** + * 通过调度任务ID查询调度信息 + * + * @param id 调度任务ID + * @return 调度任务对象信息 + */ + public Job selectJobById(Long id); + + /** + * 暂停任务 + * + * @param job 调度信息 + * @return 结果 + */ + public int pauseJob(Job job); + + /** + * 恢复任务 + * + * @param job 调度信息 + * @return 结果 + */ + public int resumeJob(Job job); + + /** + * 删除任务后,所对应的trigger也将被删除 + * + * @param job 调度信息 + * @return 结果 + */ + public int deleteJob(Job job); + + /** + * 批量删除调度信息 + * + * @param ids 需要删除的数据ID + * @return 结果 + */ + public void deleteJobByIds(String ids); + + /** + * 任务调度状态修改 + * + * @param job 调度信息 + * @return 结果 + */ + public int changeStatus(Job job); + + /** + * 立即运行任务 + * + * @param job 调度信息 + * @return 结果 + */ + public int run(Job job); + + /** + * 新增任务表达式 + * + * @param job 调度信息 + * @return 结果 + */ + public int insertJobCron(Job job); + + /** + * 更新任务的时间表达式 + * + * @param job 调度信息 + * @return 结果 + */ + public int updateJobCron(Job job); + +} diff --git a/src/main/java/com/huaheng/pc/monitor/job/service/JobLogServiceImpl.java b/src/main/java/com/huaheng/pc/monitor/job/service/JobLogServiceImpl.java new file mode 100644 index 0000000..5c21549 --- /dev/null +++ b/src/main/java/com/huaheng/pc/monitor/job/service/JobLogServiceImpl.java @@ -0,0 +1,86 @@ +package com.huaheng.pc.monitor.job.service; + +import com.huaheng.common.support.Convert; +import com.huaheng.pc.monitor.job.domain.JobLog; +import com.huaheng.pc.monitor.job.mapper.JobLogMapper; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 定时任务调度日志信息 服务层 + * + * @author huaheng + */ +@Service +public class JobLogServiceImpl implements IJobLogService +{ + + @Autowired + private JobLogMapper jobLogMapper; + + /** + * 获取quartz调度器日志的计划任务 + * + * @param jobLog 调度日志信息 + * @return 调度任务日志集合 + */ + @Override + public List<JobLog> selectJobLogList(JobLog jobLog) + { + return jobLogMapper.selectJobLogList(jobLog); + } + + /** + * 通过调度任务日志ID查询调度信息 + * + * @param id 调度任务日志ID + * @return 调度任务日志对象信息 + */ + @Override + public JobLog selectJobLogById(Integer id) + { + return jobLogMapper.selectJobLogById(id); + } + + /** + * 新增任务日志 + * + * @param jobLog 调度日志信息 + */ + @Override + public void addJobLog(JobLog jobLog) + { + jobLogMapper.insertJobLog(jobLog); + } + + /** + * 批量删除调度日志信息 + * + * @param ids 需要删除的数据ID + * @return 结果 + */ + @Override + public int deleteJobLogByIds(String ids) + { + return jobLogMapper.deleteJobLogByIds(Convert.toStrArray(ids)); + } + + /** + * 删除任务日志 + * + * @param id 调度日志ID + */ + @Override + public int deleteJobLogById(Integer id) + { + return jobLogMapper.deleteJobLogById(id); + } + + @Override + public int truncateTable() { + return jobLogMapper.truncateTable(); + } + +} diff --git a/src/main/java/com/huaheng/pc/monitor/job/service/JobServiceImpl.java b/src/main/java/com/huaheng/pc/monitor/job/service/JobServiceImpl.java new file mode 100644 index 0000000..a66d9d7 --- /dev/null +++ b/src/main/java/com/huaheng/pc/monitor/job/service/JobServiceImpl.java @@ -0,0 +1,213 @@ +package com.huaheng.pc.monitor.job.service; + +import com.huaheng.common.constant.ScheduleConstants; +import com.huaheng.common.support.Convert; +import com.huaheng.common.utils.security.ShiroUtils; +import com.huaheng.pc.monitor.job.domain.Job; +import com.huaheng.pc.monitor.job.mapper.JobMapper; +import com.huaheng.pc.monitor.job.util.ScheduleUtils; +import org.quartz.CronTrigger; +import org.quartz.Scheduler; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import javax.annotation.PostConstruct; +import java.util.List; + +/** + * 定时任务调度信息 服务层 + * + * @author huaheng + */ +@Service +public class JobServiceImpl implements IJobService +{ + @Autowired + private Scheduler scheduler; + + @Autowired + private JobMapper jobMapper; + + /** + * 项目启动时,初始化定时器 + */ + @PostConstruct + public void init() + { + List<Job> jobList = jobMapper.selectJobAll(); + for (Job job : jobList) + { + CronTrigger cronTrigger = ScheduleUtils.getCronTrigger(scheduler, job.getId()); + // 如果不存在,则创建 + if (cronTrigger == null) + { + ScheduleUtils.createScheduleJob(scheduler, job); + } + else + { + ScheduleUtils.updateScheduleJob(scheduler, job); + } + } + } + + /** + * 获取quartz调度器的计划任务列表 + * + * @param job 调度信息 + * @return + */ + @Override + public List<Job> selectJobList(Job job) + { + return jobMapper.selectJobList(job); + } + + /** + * 通过调度任务ID查询调度信息 + * + * @param id 调度任务ID + * @return 调度任务对象信息 + */ + @Override + public Job selectJobById(Long id) + { + return jobMapper.selectJobById(id); + } + + /** + * 暂停任务 + * + * @param job 调度信息 + */ + @Override + public int pauseJob(Job job) + { + job.setStatus(ScheduleConstants.Status.PAUSE.getValue()); + job.setUpdateBy(ShiroUtils.getLoginName()); + int rows = jobMapper.updateJob(job); + if (rows > 0) + { + ScheduleUtils.pauseJob(scheduler, job.getId()); + } + return rows; + } + + /** + * 恢复任务 + * + * @param job 调度信息 + */ + @Override + public int resumeJob(Job job) + { + job.setStatus(ScheduleConstants.Status.NORMAL.getValue()); + job.setUpdateBy(ShiroUtils.getLoginName()); + int rows = jobMapper.updateJob(job); + if (rows > 0) + { + ScheduleUtils.resumeJob(scheduler, job.getId()); + } + return rows; + } + + /** + * 删除任务后,所对应的trigger也将被删除 + * + * @param job 调度信息 + */ + @Override + public int deleteJob(Job job) + { + int rows = jobMapper.deleteJobById(job); + if (rows > 0) + { + ScheduleUtils.deleteScheduleJob(scheduler, job.getId()); + } + return rows; + } + + /** + * 批量删除调度信息 + * + * @param ids 需要删除的数据ID + * @return 结果 + */ + @Override + public void deleteJobByIds(String ids) + { + Long[] jobIds = Convert.toLongArray(ids); + for (Long id : jobIds) + { + Job job = jobMapper.selectJobById(id); + deleteJob(job); + } + } + + /** + * 任务调度状态修改 + * + * @param job 调度信息 + */ + @Override + public int changeStatus(Job job) + { + int rows = 0; + String status = job.getStatus(); + if (ScheduleConstants.Status.NORMAL.getValue().equals(status)) + { + rows = resumeJob(job); + } + else if (ScheduleConstants.Status.PAUSE.getValue().equals(status)) + { + rows = pauseJob(job); + } + return rows; + } + + /** + * 立即运行任务 + * + * @param job 调度信息 + */ + @Override + public int run(Job job) + { + return ScheduleUtils.run(scheduler, selectJobById(job.getId())); + } + + /** + * 新增任务 + * + * @param job 调度信息 调度信息 + */ + @Override + public int insertJobCron(Job job) + { + job.setCreateBy(ShiroUtils.getLoginName()); + job.setStatus(ScheduleConstants.Status.PAUSE.getValue()); + int rows = jobMapper.insertJob(job); + if (rows > 0) + { + ScheduleUtils.createScheduleJob(scheduler, job); + } + return rows; + } + + /** + * 更新任务的时间表达式 + * + * @param job 调度信息 + */ + @Override + public int updateJobCron(Job job) + { + job.setUpdateBy(ShiroUtils.getLoginName()); + int rows = jobMapper.updateJob(job); + if (rows > 0) + { + ScheduleUtils.updateScheduleJob(scheduler, job); + } + return rows; + } + +} diff --git a/src/main/java/com/huaheng/pc/monitor/job/task/RyTask.java b/src/main/java/com/huaheng/pc/monitor/job/task/RyTask.java new file mode 100644 index 0000000..6dafb28 --- /dev/null +++ b/src/main/java/com/huaheng/pc/monitor/job/task/RyTask.java @@ -0,0 +1,36 @@ +package com.huaheng.pc.monitor.job.task; + + +import com.huaheng.pc.monitor.job.service.IJobLogService; +import com.huaheng.pc.monitor.operlog.service.IOperLogService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import java.util.Date; + +/** + * 定时任务调度测试 + * + * @author huaheng + */ +@Component("ryTask") +public class RyTask +{ + + + @Autowired + private IJobLogService jobLogService; + @Autowired + private IOperLogService operLogService; + + + + public void deleted(){ + operLogService.truncateTable(); + jobLogService.truncateTable(); + System.out.println("===============================清空log表===========" + new Date().toString()); + } + + + +} diff --git a/src/main/java/com/huaheng/pc/monitor/job/util/ScheduleJob.java b/src/main/java/com/huaheng/pc/monitor/job/util/ScheduleJob.java new file mode 100644 index 0000000..9cd950d --- /dev/null +++ b/src/main/java/com/huaheng/pc/monitor/job/util/ScheduleJob.java @@ -0,0 +1,79 @@ +package com.huaheng.pc.monitor.job.util; + +import com.huaheng.common.constant.Constants; +import com.huaheng.common.constant.ScheduleConstants; +import com.huaheng.common.utils.bean.BeanUtils; +import com.huaheng.common.utils.spring.SpringUtils; +import com.huaheng.pc.monitor.job.domain.Job; +import com.huaheng.pc.monitor.job.domain.JobLog; +import com.huaheng.pc.monitor.job.service.IJobLogService; +import org.quartz.JobExecutionContext; +import org.quartz.JobExecutionException; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.scheduling.quartz.QuartzJobBean; + +import java.util.Date; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; +import java.util.concurrent.Future; + +/** + * 定时任务 + * + * @author huaheng + * + */ +public class ScheduleJob extends QuartzJobBean +{ + private static final Logger log = LoggerFactory.getLogger(ScheduleJob.class); + + private ExecutorService service = Executors.newSingleThreadExecutor(); + + @Override + protected void executeInternal(JobExecutionContext context) throws JobExecutionException + { + Job job = new Job(); + BeanUtils.copyBeanProp(job, context.getMergedJobDataMap().get(ScheduleConstants.TASK_PROPERTIES)); + + IJobLogService jobLogService = (IJobLogService) SpringUtils.getBean(IJobLogService.class); + + JobLog jobLog = new JobLog(); + jobLog.setJobName(job.getJobName()); + jobLog.setJobGroup(job.getJobGroup()); + jobLog.setMethodName(job.getMethodName()); + jobLog.setMethodParams(job.getMethodParams()); + jobLog.setCreateTime(new Date()); + + Long startTime = System.currentTimeMillis(); + + try + { + // 执行任务 + log.info("任务开始执行 - 名称:{} 方法:{}", job.getJobName(), job.getMethodName()); + ScheduleRunnable task = new ScheduleRunnable(job.getJobName(), job.getMethodName(), job.getMethodParams()); + Future<?> future = service.submit(task); + future.get(); + Long times = System.currentTimeMillis() - startTime; + // 任务状态 0:成功 1:失败 + jobLog.setStatus(Constants.SUCCESS); + jobLog.setJobMessage(job.getJobName() + " 总共耗时:" + times + "毫秒"); + + log.info("任务执行结束 - 名称:{} 耗时:{} 毫秒", job.getJobName(), times); + } + catch (Exception e) + { + log.info("任务执行失败 - 名称:{} 方法:{}", job.getJobName(), job.getMethodName()); + log.error("任务执行异常 - :", e); + Long times = System.currentTimeMillis() - startTime; + jobLog.setJobMessage(job.getJobName() + " 总共耗时:" + times + "毫秒"); + // 任务状态 0:成功 1:失败 + jobLog.setStatus(Constants.FAIL); + jobLog.setExceptionInfo(e.toString()); + } + finally + { + jobLogService.addJobLog(jobLog); + } + } +} diff --git a/src/main/java/com/huaheng/pc/monitor/job/util/ScheduleRunnable.java b/src/main/java/com/huaheng/pc/monitor/job/util/ScheduleRunnable.java new file mode 100644 index 0000000..6b9b40f --- /dev/null +++ b/src/main/java/com/huaheng/pc/monitor/job/util/ScheduleRunnable.java @@ -0,0 +1,58 @@ +package com.huaheng.pc.monitor.job.util; + +import com.huaheng.common.utils.StringUtils; +import com.huaheng.common.utils.spring.SpringUtils; +import org.springframework.util.ReflectionUtils; + +import java.lang.reflect.Method; + +/** + * 执行定时任务 + * + * @author huaheng + * + */ +public class ScheduleRunnable implements Runnable +{ + private Object target; + private Method method; + private String params; + + public ScheduleRunnable(String beanName, String methodName, String params) + throws NoSuchMethodException, SecurityException + { + this.target = SpringUtils.getBean(beanName); + this.params = params; + + if (StringUtils.isNotEmpty(params)) + { + this.method = target.getClass().getDeclaredMethod(methodName, String.class); + } + else + { + this.method = target.getClass().getDeclaredMethod(methodName); + } + } + + @Override + public void run() + { + try + { + ReflectionUtils.makeAccessible(method); + if (StringUtils.isNotEmpty(params)) + { + method.invoke(target, params); + } + else + { + method.invoke(target); + } + } + catch (Exception e) + { + e.printStackTrace(); + } + } + +} diff --git a/src/main/java/com/huaheng/pc/monitor/job/util/ScheduleUtils.java b/src/main/java/com/huaheng/pc/monitor/job/util/ScheduleUtils.java new file mode 100644 index 0000000..f66c5eb --- /dev/null +++ b/src/main/java/com/huaheng/pc/monitor/job/util/ScheduleUtils.java @@ -0,0 +1,216 @@ +package com.huaheng.pc.monitor.job.util; + +import com.huaheng.common.constant.ScheduleConstants; +import com.huaheng.common.exception.job.TaskException; +import com.huaheng.common.exception.job.TaskException.Code; +import com.huaheng.pc.monitor.job.domain.Job; +import org.quartz.*; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +/** + * 定时任务工具类 + * + * @author huaheng + * + */ +public class ScheduleUtils +{ + private static final Logger log = LoggerFactory.getLogger(ScheduleUtils.class); + + /** + * 获取触发器key + */ + public static TriggerKey getTriggerKey(Long id) + { + return TriggerKey.triggerKey(ScheduleConstants.TASK_CLASS_NAME + id); + } + + /** + * 获取jobKey + */ + public static JobKey getJobKey(Long id) + { + return JobKey.jobKey(ScheduleConstants.TASK_CLASS_NAME + id); + } + + /** + * 获取表达式触发器 + */ + public static CronTrigger getCronTrigger(Scheduler scheduler, Long id) + { + try + { + return (CronTrigger) scheduler.getTrigger(getTriggerKey(id)); + } + catch (SchedulerException e) + { + log.error("getCronTrigger 异常:", e); + } + return null; + } + + /** + * 创建定时任务 + */ + public static void createScheduleJob(Scheduler scheduler, Job job) + { + try + { + // 构建job信息 + JobDetail jobDetail = JobBuilder.newJob(ScheduleJob.class).withIdentity(getJobKey(job.getId())).build(); + + // 表达式调度构建器 + CronScheduleBuilder cronScheduleBuilder = CronScheduleBuilder.cronSchedule(job.getCronExpression()); + cronScheduleBuilder = handleCronScheduleMisfirePolicy(job, cronScheduleBuilder); + + // 按新的cronExpression表达式构建一个新的trigger + CronTrigger trigger = TriggerBuilder.newTrigger().withIdentity(getTriggerKey(job.getId())).withSchedule(cronScheduleBuilder).build(); + + // 放入参数,运行时的方法可以获取 + jobDetail.getJobDataMap().put(ScheduleConstants.TASK_PROPERTIES, job); + + scheduler.scheduleJob(jobDetail, trigger); + + // 暂停任务 + if (job.getStatus().equals(ScheduleConstants.Status.PAUSE.getValue())) + { + pauseJob(scheduler, job.getId()); + } + } + catch (SchedulerException e) + { + log.error("createScheduleJob 异常:", e); + } + catch (TaskException e) + { + log.error("createScheduleJob 异常:", e); + } + } + + /** + * 更新定时任务 + */ + public static void updateScheduleJob(Scheduler scheduler, Job job) + { + try + { + TriggerKey triggerKey = getTriggerKey(job.getId()); + + // 表达式调度构建器 + CronScheduleBuilder cronScheduleBuilder = CronScheduleBuilder.cronSchedule(job.getCronExpression()); + cronScheduleBuilder = handleCronScheduleMisfirePolicy(job, cronScheduleBuilder); + + CronTrigger trigger = getCronTrigger(scheduler, job.getId()); + + // 按新的cronExpression表达式重新构建trigger + trigger = trigger.getTriggerBuilder().withIdentity(triggerKey).withSchedule(cronScheduleBuilder).build(); + + // 参数 + trigger.getJobDataMap().put(ScheduleConstants.TASK_PROPERTIES, job); + + scheduler.rescheduleJob(triggerKey, trigger); + + // 暂停任务 + if (job.getStatus().equals(ScheduleConstants.Status.PAUSE.getValue())) + { + pauseJob(scheduler, job.getId()); + } + + } + catch (SchedulerException e) + { + log.error("SchedulerException 异常:", e); + } + catch (TaskException e) + { + log.error("SchedulerException 异常:", e); + } + } + + /** + * 立即执行任务 + */ + public static int run(Scheduler scheduler, Job job) + { + int rows = 0; + try + { + // 参数 + JobDataMap dataMap = new JobDataMap(); + dataMap.put(ScheduleConstants.TASK_PROPERTIES, job); + + scheduler.triggerJob(getJobKey(job.getId()), dataMap); + rows = 1; + } + catch (SchedulerException e) + { + log.error("run 异常:", e); + } + return rows; + } + + /** + * 暂停任务 + */ + public static void pauseJob(Scheduler scheduler, Long id) + { + try + { + scheduler.pauseJob(getJobKey(id)); + } + catch (SchedulerException e) + { + log.error("pauseJob 异常:", e); + } + } + + /** + * 恢复任务 + */ + public static void resumeJob(Scheduler scheduler, Long id) + { + try + { + scheduler.resumeJob(getJobKey(id)); + } + catch (SchedulerException e) + { + log.error("resumeJob 异常:", e); + } + } + + /** + * 删除定时任务 + */ + public static void deleteScheduleJob(Scheduler scheduler, Long id) + { + try + { + scheduler.deleteJob(getJobKey(id)); + } + catch (SchedulerException e) + { + log.error("deleteScheduleJob 异常:", e); + } + } + + public static CronScheduleBuilder handleCronScheduleMisfirePolicy(Job job, CronScheduleBuilder cb) + throws TaskException + { + switch (job.getMisfirePolicy()) + { + case ScheduleConstants.MISFIRE_DEFAULT: + return cb; + case ScheduleConstants.MISFIRE_IGNORE_MISFIRES: + return cb.withMisfireHandlingInstructionIgnoreMisfires(); + case ScheduleConstants.MISFIRE_FIRE_AND_PROCEED: + return cb.withMisfireHandlingInstructionFireAndProceed(); + case ScheduleConstants.MISFIRE_DO_NOTHING: + return cb.withMisfireHandlingInstructionDoNothing(); + default: + throw new TaskException("The task misfire policy '" + job.getMisfirePolicy() + + "' cannot be used in cron schedule tasks", Code.CONFIG_ERROR); + } + } +} diff --git a/src/main/java/com/huaheng/pc/monitor/logininfor/domain/Logininfor.java b/src/main/java/com/huaheng/pc/monitor/logininfor/domain/Logininfor.java index b6dec09..256c854 100644 --- a/src/main/java/com/huaheng/pc/monitor/logininfor/domain/Logininfor.java +++ b/src/main/java/com/huaheng/pc/monitor/logininfor/domain/Logininfor.java @@ -1,5 +1,9 @@ package com.huaheng.pc.monitor.logininfor.domain; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; import com.fasterxml.jackson.annotation.JsonFormat; import com.google.common.collect.Maps; import com.huaheng.framework.aspectj.lang.annotation.Excel; @@ -11,35 +15,52 @@ import java.util.Map; * * @author huaheng */ +@TableName(value = "sys_logininfor") public class Logininfor { private static final long serialVersionUID = 1L; /** ID */ @Excel(name = "序号") + @TableId(value = "id", type = IdType.AUTO) private Integer id; /** 用户账号 */ @Excel(name = "用户账号") + @TableField(value = "loginName") private String loginName; + /** 登录状态 0成功 1失败 */ @Excel(name = "登录状态") + @TableField(value = "status") private String status; + /** 登录IP地址 */ + @TableField(value = "ipaddr") @Excel(name = "登录地址") private String ipaddr; + /** 登录地点 */ @Excel(name = "登录地点") + @TableField(value = "loginLocation") private String loginLocation; + /** 浏览器类型 */ @Excel(name = "浏览器") + @TableField(value = "browser") private String browser; + /** 操作系统 */ @Excel(name = "操作系统 ") + @TableField(value = "os") private String os; /** 提示消息 */ + @Excel(name = "提示消息") + @TableField(value = "msg") private String msg; + /** 访问时间 */ @Excel(name = "访问时间") + @TableField(value = "loginTime") private Date loginTime; /** 搜索值 */ diff --git a/src/main/java/com/huaheng/pc/monitor/online/domain/UserOnline.java b/src/main/java/com/huaheng/pc/monitor/online/domain/UserOnline.java index 6ba2b9c..a663699 100644 --- a/src/main/java/com/huaheng/pc/monitor/online/domain/UserOnline.java +++ b/src/main/java/com/huaheng/pc/monitor/online/domain/UserOnline.java @@ -1,5 +1,9 @@ package com.huaheng.pc.monitor.online.domain; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; import com.fasterxml.jackson.annotation.JsonFormat; import com.google.common.collect.Maps; import com.huaheng.common.utils.AddressUtils; @@ -12,44 +16,57 @@ import java.util.Map; * * @author huaheng */ +@TableName(value = "sys_user_online") public class UserOnline { private static final long serialVersionUID = 1L; /** ID */ + @TableId(value = "id", type = IdType.AUTO) private Integer id; /** 用户会话id */ + @TableField(value = "sessionId") private String sessionId; /** 部门名称 */ + @TableField(value = "deptName") private String deptName; /** 登录名称 */ + @TableField(value = "loginName") private String loginName; /** 登录IP地址 */ + @TableField(value = "ipaddr") private String ipaddr; /** 登录地址 */ + @TableField(value = "longinLocation") private String longinLocation; /** 浏览器类型 */ + @TableField(value = "browser") private String browser; /** 操作系统 */ + @TableField(value = "os") private String os; /** session创建时间 */ + @TableField(value = "startTimestamp") private Date startTimestamp; /** session最后访问时间 */ + @TableField(value = "lastAccessTime") private Date lastAccessTime; /** 超时时间,单位为分钟 */ + @TableField(value = "expireTime") private Long expireTime; /** 在线状态 */ + @TableField(value = "status") private OnlineStatus status = OnlineStatus.on_line; /** 备份的当前用户会话 */ diff --git a/src/main/java/com/huaheng/pc/monitor/operlog/domain/OperLog.java b/src/main/java/com/huaheng/pc/monitor/operlog/domain/OperLog.java index b716db2..ffb8083 100644 --- a/src/main/java/com/huaheng/pc/monitor/operlog/domain/OperLog.java +++ b/src/main/java/com/huaheng/pc/monitor/operlog/domain/OperLog.java @@ -2,6 +2,11 @@ package com.huaheng.pc.monitor.operlog.domain; import java.util.Date; import java.util.Map; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; import com.fasterxml.jackson.annotation.JsonFormat; import com.google.common.collect.Maps; import com.huaheng.framework.aspectj.lang.annotation.Excel; @@ -12,68 +17,84 @@ import com.huaheng.framework.aspectj.lang.annotation.Excel; * * @author huaheng */ +@TableName(value = "sys_oper_log") public class OperLog { private static final long serialVersionUID = 1L; /** 日志主键 */ @Excel(name = "操作序号") + @TableId(value = "id", type = IdType.AUTO) private Integer id; /** 操作模块 */ @Excel(name = "操作模块") + @TableField(value = "title") private String title; /** 具体操作 */ @Excel(name = "具体操作") + @TableField(value = "operating") private String operating; /** 操作类型 */ @Excel(name = "操作类型") + @TableField(value = "action") private String action; /** 请求方法 */ @Excel(name = "请求方法") + @TableField(value = "method") private String method; /** 来源渠道 */ @Excel(name = "来源渠道") + @TableField(value = "channel") private String channel; /** 操作人员 */ @Excel(name = "操作人员") + @TableField(value = "operName") private String operName; /** 部门名称 */ @Excel(name = "部门名称") + @TableField(value = "deptName") private String deptName; /** 请求url */ @Excel(name = "请求地址") + @TableField(value = "operUrl") private String operUrl; /** 操作地址 */ @Excel(name = "操作地址") + @TableField(value = "operIp") private String operIp; /** 操作地点 */ @Excel(name = "操作地点") + @TableField(value = "operLocation") private String operLocation; /** 请求参数 */ @Excel(name = "请求参数") + @TableField(value = "operParam") private String operParam; /** 状态0正常 1异常 */ @Excel(name = "状态") + @TableField(value = "status") private String status; /** 错误消息 */ @Excel(name = "错误消息") + @TableField(value = "errorMsg") private String errorMsg; /** 操作时间 */ @Excel(name = "操作时间") + @TableField(value = "operTime") private Date operTime; /** 搜索值 */ diff --git a/src/main/java/com/huaheng/pc/monitor/operlog/mapper/OperLogMapper.java b/src/main/java/com/huaheng/pc/monitor/operlog/mapper/OperLogMapper.java index ec359d4..b21df39 100644 --- a/src/main/java/com/huaheng/pc/monitor/operlog/mapper/OperLogMapper.java +++ b/src/main/java/com/huaheng/pc/monitor/operlog/mapper/OperLogMapper.java @@ -43,4 +43,7 @@ public interface OperLogMapper * @return 操作日志对象 */ public OperLog selectOperLogById(Integer id); + + //清空日志 + public int truncateTable(); } diff --git a/src/main/java/com/huaheng/pc/monitor/operlog/service/IOperLogService.java b/src/main/java/com/huaheng/pc/monitor/operlog/service/IOperLogService.java index 63c9b18..81a202a 100644 --- a/src/main/java/com/huaheng/pc/monitor/operlog/service/IOperLogService.java +++ b/src/main/java/com/huaheng/pc/monitor/operlog/service/IOperLogService.java @@ -40,4 +40,8 @@ public interface IOperLogService * @return 操作日志对象 */ public OperLog selectOperLogById(Integer id); + + + //清空日志 + public int truncateTable(); } diff --git a/src/main/java/com/huaheng/pc/monitor/operlog/service/OperLogServiceImpl.java b/src/main/java/com/huaheng/pc/monitor/operlog/service/OperLogServiceImpl.java index 24e0577..dadb134 100644 --- a/src/main/java/com/huaheng/pc/monitor/operlog/service/OperLogServiceImpl.java +++ b/src/main/java/com/huaheng/pc/monitor/operlog/service/OperLogServiceImpl.java @@ -64,4 +64,9 @@ public class OperLogServiceImpl implements IOperLogService { return operLogMapper.selectOperLogById(id); } + + @Override + public int truncateTable() { + return operLogMapper.truncateTable(); + } } diff --git a/src/main/java/com/huaheng/pc/receipt/receiptDetail/service/ReceiptDetailServiceImpl.java b/src/main/java/com/huaheng/pc/receipt/receiptDetail/service/ReceiptDetailServiceImpl.java index 79c7c51..cce67eb 100644 --- a/src/main/java/com/huaheng/pc/receipt/receiptDetail/service/ReceiptDetailServiceImpl.java +++ b/src/main/java/com/huaheng/pc/receipt/receiptDetail/service/ReceiptDetailServiceImpl.java @@ -24,15 +24,19 @@ import com.huaheng.pc.config.statusFlow.domain.StatusFlowDetail; import com.huaheng.pc.config.statusFlow.service.StatusFlowDetailService; import com.huaheng.pc.receipt.receiptHeader.domain.ReceiptHeader; import com.huaheng.pc.receipt.receiptHeader.service.ReceiptHeaderService; +import com.huaheng.pc.system.config.domain.Config; import com.huaheng.pc.system.dict.domain.DictData; import com.huaheng.pc.system.dict.service.IDictDataService; import com.huaheng.pc.task.taskDetail.domain.TaskDetail; +import io.swagger.models.auth.In; +import org.aspectj.weaver.loadtime.Aj; import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.util.List; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.huaheng.pc.receipt.receiptDetail.domain.ReceiptDetail; import com.huaheng.pc.receipt.receiptDetail.mapper.ReceiptDetailMapper; +import com.huaheng.pc.receipt.receiptDetail.service.ReceiptDetailService; import org.springframework.transaction.annotation.Transactional; @Service @@ -89,6 +93,7 @@ public class ReceiptDetailServiceImpl extends ServiceImpl<ReceiptDetailMapper, R throw new ServiceException("物料不存在"); } receiptDetail.setCompanyCode(material.getCompanyCode()); + receiptDetail.setMaterialCode(material.getCode()); receiptDetail.setMaterialName(material.getName()); receiptDetail.setMaterialSpec(material.getSpec()); receiptDetail.setMaterialUnit(material.getUnit()); @@ -198,7 +203,7 @@ public class ReceiptDetailServiceImpl extends ServiceImpl<ReceiptDetailMapper, R //查询头表中绑定的入库类型中的入库流程 LambdaQueryWrapper<ReceiptType> lambdaReceiptType = Wrappers.lambdaQuery(); lambdaReceiptType.eq(ReceiptType::getCode, receiptHeader.getReceiptType()) - .eq(ReceiptType::getWarehouseCode, ShiroUtils.getWarehouseCode()); + .eq(ReceiptType::getWarehouseCode,ShiroUtils.getWarehouseCode()); ReceiptType receiptType = receiptTypeService.getOne(lambdaReceiptType); diff --git a/src/main/java/com/huaheng/pc/receipt/receiptHeader/controller/AdminReceiptHeaderController.java b/src/main/java/com/huaheng/pc/receipt/receiptHeader/controller/AdminReceiptHeaderController.java index 6f4bc92..6779acf 100644 --- a/src/main/java/com/huaheng/pc/receipt/receiptHeader/controller/AdminReceiptHeaderController.java +++ b/src/main/java/com/huaheng/pc/receipt/receiptHeader/controller/AdminReceiptHeaderController.java @@ -57,7 +57,7 @@ public class AdminReceiptHeaderController extends BaseController startPage(); LambdaQueryWrapper<ReceiptHeader> lambdaQueryWrapper = Wrappers.lambdaQuery(); lambdaQueryWrapper - .in(StringUtils.isNotEmpty(receiptHeader.getCompanyCode()),ReceiptHeader::getCompanyCode, receiptHeader.getCompanyCode()) + .eq(StringUtils.isNotEmpty(receiptHeader.getCompanyCode()),ReceiptHeader::getCompanyCode, receiptHeader.getCompanyCode()) .eq(StringUtils.isNotEmpty(receiptHeader.getWarehouseCode()),ReceiptHeader::getWarehouseCode, receiptHeader.getWarehouseCode()) .eq(StringUtils.isNotEmpty(receiptHeader.getReceiptType()), ReceiptHeader::getReceiptType, receiptHeader.getReceiptType()) @@ -69,7 +69,7 @@ public class AdminReceiptHeaderController extends BaseController .orderByDesc(ReceiptHeader::getCreated); List<ReceiptHeader> list = new ArrayList<>(); if(StringUtils.isEmpty(time)) { - list=receiptHeaderService.list(); + list=receiptHeaderService.list(lambdaQueryWrapper); }else { list=receiptHeaderService.selectListByCreated(); } diff --git a/src/main/java/com/huaheng/pc/receipt/receiptHeader/controller/ReceiptHeaderController.java b/src/main/java/com/huaheng/pc/receipt/receiptHeader/controller/ReceiptHeaderController.java index f24608c..d8d069d 100644 --- a/src/main/java/com/huaheng/pc/receipt/receiptHeader/controller/ReceiptHeaderController.java +++ b/src/main/java/com/huaheng/pc/receipt/receiptHeader/controller/ReceiptHeaderController.java @@ -79,9 +79,9 @@ public class ReceiptHeaderController extends BaseController { .eq(StringUtils.isNotEmpty(receiptHeader.getReceiptType()), ReceiptHeader::getReceiptType, receiptHeader.getReceiptType()) .eq(StringUtils.isNotEmpty(receiptHeader.getCode()), ReceiptHeader::getCode, receiptHeader.getCode()) - .eq(StringUtils.isNotNull(receiptHeader.getFirstStatus()), + .ge(StringUtils.isNotNull(receiptHeader.getFirstStatus()), ReceiptHeader::getFirstStatus, receiptHeader.getFirstStatus()) - .eq(StringUtils.isNotNull(receiptHeader.getLastStatus()), + .le(StringUtils.isNotNull(receiptHeader.getLastStatus()), ReceiptHeader::getLastStatus, receiptHeader.getLastStatus()) .orderByDesc(ReceiptHeader::getCreated); @@ -195,7 +195,7 @@ public class ReceiptHeaderController extends BaseController { @Log(title = "入库-入库单 ",operating = "入库单删除", action = BusinessType.UPDATE) @PostMapping("/remove") @ResponseBody - public AjaxResult remove(@ApiParam(name = "id", value = "入库头表id字符串")Integer ids){ + public AjaxResult remove(@ApiParam(name = "id", value = "入库头表id字符串")String ids){ if (StringUtils.isNull(ids)){ return AjaxResult.error("id为空"); } diff --git a/src/main/java/com/huaheng/pc/receipt/receiptHeader/service/ReceiptHeaderService.java b/src/main/java/com/huaheng/pc/receipt/receiptHeader/service/ReceiptHeaderService.java index 29f1d02..cfb3e56 100644 --- a/src/main/java/com/huaheng/pc/receipt/receiptHeader/service/ReceiptHeaderService.java +++ b/src/main/java/com/huaheng/pc/receipt/receiptHeader/service/ReceiptHeaderService.java @@ -58,7 +58,7 @@ public class ReceiptHeaderService extends ServiceImpl<ReceiptHeaderMapper, Recei public AjaxResult saveReceiptHeader(ReceiptHeader receiptHeader){ LambdaQueryWrapper<ReceiptType> lambdaQueryWrapper = Wrappers.lambdaQuery(); lambdaQueryWrapper.eq(ReceiptType::getCode, receiptHeader.getReceiptType()) - .eq(ReceiptType::getWarehouseCode, ShiroUtils.getWarehouseCode()); + .eq(ReceiptType::getWarehouseCode,ShiroUtils.getWarehouseCode()); ReceiptType receiptType = receiptTypeService.getOne(lambdaQueryWrapper); //流程详情查询 @@ -219,6 +219,7 @@ public class ReceiptHeaderService extends ServiceImpl<ReceiptHeaderMapper, Recei /** * 提交审核入库单 */ + @Transactional public AjaxResult submitReview(String ids){ if (StringUtils.isEmpty(ids)){ return AjaxResult.error("id不能为空"); @@ -229,12 +230,16 @@ public class ReceiptHeaderService extends ServiceImpl<ReceiptHeaderMapper, Recei if (receiptHeader.getFirstStatus()>QuantityConstant.RECEIPT_HEADER_MODERATED ||receiptHeader.getLastStatus()>QuantityConstant.RECEIPT_HEADER_MODERATED){ return AjaxResult.error("单据号为"+receiptHeader.getCode()+"入库单不需要审核"); } + LambdaQueryWrapper<ReceiptDetail> lambdaQueryWrapper = Wrappers.lambdaQuery(); + lambdaQueryWrapper.eq(ReceiptDetail::getReceiptId, idArray[i]); + List<ReceiptDetail> receiptDetailList = receiptDetailService.list(lambdaQueryWrapper); + if (receiptDetailList.isEmpty()){ + return AjaxResult.error("单据号为"+receiptHeader.getCode()+"入库单没有明细"); + } receiptHeader.setFirstStatus(QuantityConstant.RECEIPT_HEADER_MODERATED); receiptHeader.setLastStatus(QuantityConstant.RECEIPT_HEADER_MODERATED); if (!this.updateById(receiptHeader)){ throw new ServiceException("更新入库头表失败"); - } else { - return AjaxResult.success("提交审核成功,请等待审核"); } } return AjaxResult.success("提交审核成功"); diff --git a/src/main/java/com/huaheng/pc/receipt/receiptHeaderHistory/service/ReceiptHeaderHistoryService.java b/src/main/java/com/huaheng/pc/receipt/receiptHeaderHistory/service/ReceiptHeaderHistoryService.java index ec1111e..d9b02d8 100644 --- a/src/main/java/com/huaheng/pc/receipt/receiptHeaderHistory/service/ReceiptHeaderHistoryService.java +++ b/src/main/java/com/huaheng/pc/receipt/receiptHeaderHistory/service/ReceiptHeaderHistoryService.java @@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.huaheng.common.constant.QuantityConstant; import com.huaheng.common.exception.service.ServiceException; +import com.huaheng.common.support.Convert; import com.huaheng.common.utils.security.ShiroUtils; import com.huaheng.framework.web.domain.AjaxResult; import com.huaheng.pc.receipt.receiptDetail.domain.ReceiptDetail; @@ -18,6 +19,7 @@ import javax.annotation.Resource; import java.lang.reflect.InvocationTargetException; import java.util.ArrayList; +import java.util.Arrays; import java.util.List; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.huaheng.pc.receipt.receiptHeaderHistory.domain.ReceiptHeaderHistory; @@ -35,51 +37,61 @@ public class ReceiptHeaderHistoryService extends ServiceImpl<ReceiptHeaderHistor private ReceiptDetailHistoryService receiptDetailHistoryService; @Transactional - public AjaxResult add(Integer id){ - ReceiptHeader receiptHeader = receiptHeaderService.getById(id); - if (receiptHeader == null) return AjaxResult.success(""); - if((receiptHeader.getFirstStatus()>= QuantityConstant.RECEIPT_HEADER_POSTING && receiptHeader.getLastStatus()>=QuantityConstant.RECEIPT_HEADER_POSTING)|| - (receiptHeader.getFirstStatus()<QuantityConstant.RECEIPT_HEADER_POOL &receiptHeader.getLastStatus()<QuantityConstant.RECEIPT_HEADER_POOL)){ - ReceiptHeaderHistory receiptHeaderHistory = new ReceiptHeaderHistory(); - List<ReceiptDetailHistory> receiptDetailHistoryList = new ArrayList<>(); - //查询入库单明细 - LambdaQueryWrapper<ReceiptDetail> lambdaQueryWrapper = Wrappers.lambdaQuery(); - lambdaQueryWrapper.eq(ReceiptDetail::getReceiptId, id); - List<ReceiptDetail> list = receiptDetailService.list(lambdaQueryWrapper); - try { - //复制到入库历史实体 - BeanUtils.copyProperties(receiptHeaderHistory, receiptHeader); - for (ReceiptDetail receiptDetail: list) { - ReceiptDetailHistory receiptDetailHistory = new ReceiptDetailHistory(); - BeanUtils.copyProperties(receiptDetailHistory, receiptDetail); - receiptDetailHistoryList.add(receiptDetailHistory); - } - } catch (IllegalAccessException e) { - e.printStackTrace(); - } catch (InvocationTargetException e) { - e.printStackTrace(); + public AjaxResult add(String ids){ + List<Integer> idList = Arrays.asList(Convert.toIntArray(ids)); + for (Integer id : idList) { + ReceiptHeader receiptHeader = receiptHeaderService.getById(id); + if (receiptHeader == null) { + return AjaxResult.success(""); } + if((receiptHeader.getFirstStatus()>= QuantityConstant.RECEIPT_HEADER_POSTING && receiptHeader.getLastStatus()>=QuantityConstant.RECEIPT_HEADER_POSTING)|| + (receiptHeader.getFirstStatus()<QuantityConstant.RECEIPT_HEADER_POOL &receiptHeader.getLastStatus()<QuantityConstant.RECEIPT_HEADER_POOL)){ + ReceiptHeaderHistory receiptHeaderHistory = new ReceiptHeaderHistory(); + List<ReceiptDetailHistory> receiptDetailHistoryList = new ArrayList<>(); + //查询入库单明细 + LambdaQueryWrapper<ReceiptDetail> lambdaQueryWrapper = Wrappers.lambdaQuery(); + lambdaQueryWrapper.eq(ReceiptDetail::getReceiptId, id); + List<ReceiptDetail> list = receiptDetailService.list(lambdaQueryWrapper); + try { + //复制到入库历史实体 + BeanUtils.copyProperties(receiptHeaderHistory, receiptHeader); + for (ReceiptDetail receiptDetail: list) { + ReceiptDetailHistory receiptDetailHistory = new ReceiptDetailHistory(); + BeanUtils.copyProperties(receiptDetailHistory, receiptDetail); + receiptDetailHistoryList.add(receiptDetailHistory); + } + } catch (IllegalAccessException e) { + e.printStackTrace(); + } catch (InvocationTargetException e) { + e.printStackTrace(); + } - receiptHeaderHistory.setLastUpdatedBy(ShiroUtils.getLoginName()); - if (!receiptHeaderService.removeById(receiptHeader.getId())){ - throw new ServiceException("删除头表失败"); - } - // 当存在明细时删除 - if (list.size()!= 0){ - //删除入库明细 - List<Integer> ids = new ArrayList<>(); - for (int i=0; i<receiptDetailHistoryList.size();i++){ - receiptDetailHistoryList.get(i).setLastUpdatedBy(ShiroUtils.getLoginName()); - ids.add(receiptDetailHistoryList.get(i).getId()); + receiptHeaderHistory.setLastUpdatedBy(ShiroUtils.getLoginName()); + if (!receiptHeaderService.removeById(receiptHeader.getId())){ + throw new ServiceException("删除头表失败"); } - if (!receiptDetailService.removeByIds(ids)) { - throw new ServiceException("删除明细表失败"); + if(!this.save(receiptHeaderHistory)){ + throw new ServiceException("新增历史入库单失败"); } - receiptDetailHistoryService.saveBatch(receiptDetailHistoryList); + // 当存在明细时删除 + if (list.size()!= 0){ + //删除入库明细 + List<Integer> receiptDetailIds = new ArrayList<>(); + for (int i=0; i<receiptDetailHistoryList.size();i++){ + receiptDetailHistoryList.get(i).setLastUpdatedBy(ShiroUtils.getLoginName()); + receiptDetailHistoryList.get(i).setReceiptId(receiptHeaderHistory.getId()); + receiptDetailIds.add(receiptDetailHistoryList.get(i).getId()); + } + if (!receiptDetailService.removeByIds(receiptDetailIds)) { + throw new ServiceException("删除明细表失败"); + } + if (!receiptDetailHistoryService.saveBatch(receiptDetailHistoryList)){ + throw new ServiceException("新增明细失败"); + } } + + }else { + return AjaxResult.success("入库单没有完成,无法删除"); } - this.save(receiptHeaderHistory); - }else { - return AjaxResult.success("入库单没有完成,无法删除"); } return AjaxResult.success("删除成功"); } diff --git a/src/main/java/com/huaheng/pc/receipt/receiving/service/ReceivingService.java b/src/main/java/com/huaheng/pc/receipt/receiving/service/ReceivingService.java index a45bbb9..1902e6b 100644 --- a/src/main/java/com/huaheng/pc/receipt/receiving/service/ReceivingService.java +++ b/src/main/java/com/huaheng/pc/receipt/receiving/service/ReceivingService.java @@ -9,6 +9,7 @@ import com.huaheng.common.utils.security.ShiroUtils; import com.huaheng.framework.web.domain.AjaxResult; import com.huaheng.pc.config.FilterConfigDetail.domain.FilterConfigDetail; import com.huaheng.pc.config.FilterConfigDetail.service.FilterConfigDetailService; +import com.huaheng.pc.config.FilterConfigHeader.domain.FilterConfigHeader; import com.huaheng.pc.config.configValue.domain.ConfigValue; import com.huaheng.pc.config.configValue.service.ConfigValueService; import com.huaheng.pc.config.location.domain.Location; @@ -25,6 +26,7 @@ import com.huaheng.pc.receipt.receiptContainerHeader.domain.ReceiptContainerHead import com.huaheng.pc.receipt.receiptContainerHeader.service.ReceiptContainerHeaderService; import com.huaheng.pc.receipt.receiptDetail.domain.ReceiptDetail; import com.huaheng.pc.receipt.receiptDetail.service.ReceiptDetailService; +import org.aspectj.weaver.loadtime.Aj; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -83,27 +85,28 @@ public class ReceivingService { @Transactional public Boolean position(ReceiptContainerDetail receiptContainerDetail){ ReceiptContainerHeader receiptContainerHeader = receiptContainerHeaderService.getById(receiptContainerDetail.getReceiptContainerId()); - if (0 != receiptContainerHeader.getStatus()){ + if (!(0 ==receiptContainerHeader.getStatus())){ throw new ServiceException("该入库组盘已生成任务不能重新定位"); } //如果入库组盘表中有目标库位说明已经指定 if (StringUtils.isNotEmpty(receiptContainerHeader.getToLocation())){return true;} - //定位规则 - String locatingRule = receiptContainerHeader.getLocatingRule(); + String locatingRule = receiptContainerHeader.getLocatingRule(); //定位规则 if (StringUtils.isEmpty(locatingRule)){ locatingRule = receiptDetailService.getById(receiptContainerDetail.getReceiptDetailId()).getLocatingRule(); //入库单明细定位规则不为空时执行 if (StringUtils.isEmpty(locatingRule)){ //入库单明细为空时,查询物料表中是否含有定位规则 LambdaQueryWrapper<Material> materialLambda = Wrappers.lambdaQuery(); - materialLambda.eq(Material::getCode, receiptContainerDetail.getMaterialCode()); + materialLambda.eq(Material::getCode, receiptContainerDetail.getMaterialCode()) + .eq(Material::getWarehouseCode,ShiroUtils.getWarehouseCode()); Material material = materialService.getOne(materialLambda); locatingRule = material.getLocatingRule(); if (StringUtils.isEmpty(locatingRule)){ //物料表中定位规则为空时,查询物料类别 LambdaQueryWrapper<MaterialType> materialTypeLambda = Wrappers.lambdaQuery(); - materialTypeLambda.eq(MaterialType::getCode, material.getType()); + materialTypeLambda.eq(MaterialType::getCode, material.getType()) + .eq(MaterialType::getWarehouseCode,ShiroUtils.getWarehouseCode()); MaterialType materialType = materialTypeService.getOne(materialTypeLambda); locatingRule = materialType.getLocatingRule(); if (StringUtils.isEmpty(locatingRule)){ @@ -115,7 +118,7 @@ public class ReceivingService { ConfigValue configValue = configValueService.getOne(configValueLambda); LambdaQueryWrapper<ReceiptPreference> lambdaQueryWrapper = Wrappers.lambdaQuery(); lambdaQueryWrapper.eq(ReceiptPreference::getCode, configValue.getValue()) - .eq(ReceiptPreference::getWarehouseCode, ShiroUtils.getWarehouseCode()); + .eq(ReceiptPreference::getWarehouseCode,ShiroUtils.getWarehouseCode()); ReceiptPreference receiptPreference = preferenceService.getOne(lambdaQueryWrapper); locatingRule = preferenceService.getOne(lambdaQueryWrapper).getLocationRule(); } @@ -127,14 +130,13 @@ public class ReceivingService { throw new ServiceException("未绑定定位规则"); } LambdaQueryWrapper<FilterConfigDetail> lambdaQueryWrapper = Wrappers.lambdaQuery(); - lambdaQueryWrapper.eq(FilterConfigDetail::getWarehouseCode, ShiroUtils.getWarehouseCode()) - .eq(FilterConfigDetail::getCode, locatingRule); + lambdaQueryWrapper.eq(FilterConfigDetail::getCode, locatingRule) + .eq(FilterConfigDetail::getWarehouseCode,ShiroUtils.getWarehouseCode()); FilterConfigDetail filterConfigDetail = filterConfigDetailService.getOne(lambdaQueryWrapper); //根据定位规则查询库位编码 LambdaQueryWrapper<Location> locationLambda = Wrappers.lambdaQuery(); - locationLambda.eq(Location::getWarehouseCode, ShiroUtils.getWarehouseCode()) - .last(filterConfigDetail.getStatement()); + locationLambda.last(filterConfigDetail.getStatement()); String locationCode = locationService.getOne(locationLambda).getCode(); if (locationCode == null){ throw new ServiceException("没有库位可分配"); diff --git a/src/main/java/com/huaheng/pc/shipment/shipmentContainerHeader/service/ShipmentContainerHeaderServiceImpl.java b/src/main/java/com/huaheng/pc/shipment/shipmentContainerHeader/service/ShipmentContainerHeaderServiceImpl.java index 8b94a72..e750674 100644 --- a/src/main/java/com/huaheng/pc/shipment/shipmentContainerHeader/service/ShipmentContainerHeaderServiceImpl.java +++ b/src/main/java/com/huaheng/pc/shipment/shipmentContainerHeader/service/ShipmentContainerHeaderServiceImpl.java @@ -535,7 +535,7 @@ public class ShipmentContainerHeaderServiceImpl extends ServiceImpl<ShipmentCont } } if(num==shipmentDetailList.size()){ - throw new ServiceException("单据物料在此库区没有库存,无法出库"); + throw new ServiceException("单据物料的库存分配规则在此库区没有库存,无法出库"); } return AjaxResult.success("成功",list); } diff --git a/src/main/java/com/huaheng/pc/shipment/shipmentDetail/mapper/ShipmentDetailMapper.java b/src/main/java/com/huaheng/pc/shipment/shipmentDetail/mapper/ShipmentDetailMapper.java index a27684b..dc0f350 100644 --- a/src/main/java/com/huaheng/pc/shipment/shipmentDetail/mapper/ShipmentDetailMapper.java +++ b/src/main/java/com/huaheng/pc/shipment/shipmentDetail/mapper/ShipmentDetailMapper.java @@ -3,6 +3,7 @@ package com.huaheng.pc.shipment.shipmentDetail.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.huaheng.pc.shipment.shipmentDetail.domain.ShipmentDetail; import com.huaheng.pc.task.taskDetail.domain.TaskDetail; +import org.apache.ibatis.annotations.Param; import java.util.List; import java.util.Map; @@ -21,6 +22,8 @@ public interface ShipmentDetailMapper extends BaseMapper<ShipmentDetail> { //获取7天内的出库量 List<TaskDetail> getShipmentQtyLast7Days(); + int insertDetails(@Param("shipmentDetails") List<ShipmentDetail> shipmentDetails); + //以仓库维度获取入库量 List<TaskDetail> getWarehouseShipment(); diff --git a/src/main/java/com/huaheng/pc/shipment/shipmentDetail/service/ShipmentDetailService.java b/src/main/java/com/huaheng/pc/shipment/shipmentDetail/service/ShipmentDetailService.java index 2a20547..2aa7f81 100644 --- a/src/main/java/com/huaheng/pc/shipment/shipmentDetail/service/ShipmentDetailService.java +++ b/src/main/java/com/huaheng/pc/shipment/shipmentDetail/service/ShipmentDetailService.java @@ -36,5 +36,7 @@ public interface ShipmentDetailService extends IService<ShipmentDetail>{ //以货主维度获取入库量 List<TaskDetail> getCompanyShipment(); + Boolean insertDetails(List<ShipmentDetail> shipmentDetails); + } diff --git a/src/main/java/com/huaheng/pc/shipment/shipmentDetail/service/ShipmentDetailServiceImpl.java b/src/main/java/com/huaheng/pc/shipment/shipmentDetail/service/ShipmentDetailServiceImpl.java index 56e06a5..838fcc7 100644 --- a/src/main/java/com/huaheng/pc/shipment/shipmentDetail/service/ShipmentDetailServiceImpl.java +++ b/src/main/java/com/huaheng/pc/shipment/shipmentDetail/service/ShipmentDetailServiceImpl.java @@ -298,4 +298,14 @@ public class ShipmentDetailServiceImpl extends ServiceImpl<ShipmentDetailMapper, public List<TaskDetail> getCompanyShipment() { return shipmentDetailMapper.getCompanyShipment(); } + + @Override + public Boolean insertDetails(List<ShipmentDetail> shipmentDetails) { + int flag = shipmentDetailMapper.insertDetails(shipmentDetails); + if(flag > 0){ + return true; + }else { + return false; + } + } } diff --git a/src/main/java/com/huaheng/pc/shipment/shippingCombination/controller/ShippingCombinationController.java b/src/main/java/com/huaheng/pc/shipment/shippingCombination/controller/ShippingCombinationController.java index 46c3106..b9518af 100644 --- a/src/main/java/com/huaheng/pc/shipment/shippingCombination/controller/ShippingCombinationController.java +++ b/src/main/java/com/huaheng/pc/shipment/shippingCombination/controller/ShippingCombinationController.java @@ -19,6 +19,8 @@ import com.huaheng.pc.shipment.shipmentDetail.service.ShipmentDetailServiceImpl; import com.huaheng.pc.shipment.shipmentHeader.domain.ShipmentHeader; import com.huaheng.pc.shipment.shipmentHeader.service.ShipmentHeaderService; import com.huaheng.pc.shipment.shippingCombination.service.ShippingCombinationService; +import com.huaheng.pc.task.taskHeader.domain.TaskHeader; +import com.huaheng.pc.task.taskHeader.service.TaskHeaderService; import org.apache.shiro.authz.annotation.RequiresPermissions; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; @@ -46,6 +48,8 @@ public class ShippingCombinationController extends BaseController { ShipmentHeaderService shipmentHeaderService; @Autowired ShipmentPreferenceService shipmentPreferenceService; + @Autowired + TaskHeaderService taskHeaderService; /** diff --git a/src/main/java/com/huaheng/pc/shipment/shippingCombination/service/ShippingCombinationService.java b/src/main/java/com/huaheng/pc/shipment/shippingCombination/service/ShippingCombinationService.java index 5307e99..63c5023 100644 --- a/src/main/java/com/huaheng/pc/shipment/shippingCombination/service/ShippingCombinationService.java +++ b/src/main/java/com/huaheng/pc/shipment/shippingCombination/service/ShippingCombinationService.java @@ -11,6 +11,8 @@ import com.huaheng.pc.config.configValue.domain.ConfigValue; import com.huaheng.pc.config.configValue.service.ConfigValueService; import com.huaheng.pc.config.material.domain.Material; import com.huaheng.pc.config.material.service.MaterialServiceImpl; +import com.huaheng.pc.config.materialType.domain.MaterialType; +import com.huaheng.pc.config.materialType.service.MaterialTypeService; import com.huaheng.pc.config.shipmentPreference.domain.ShipmentPreference; import com.huaheng.pc.config.shipmentPreference.service.ShipmentPreferenceService; import com.huaheng.pc.inventory.inventoryDetail.domain.InventoryDetail; @@ -40,6 +42,8 @@ public class ShippingCombinationService { ShipmentPreferenceService shipmentPreferenceService; @Autowired MaterialServiceImpl materialService; + @Autowired + MaterialTypeService materialTypeService; @@ -101,6 +105,23 @@ public class ShippingCombinationService { return list; } + //物料的分配规则没有时,优先物料种类的分配规则 + LambdaQueryWrapper<MaterialType> materialTypelam=Wrappers.lambdaQuery(); + materialTypelam.eq(MaterialType::getCode,material.getType()) + .eq(MaterialType::getWarehouseCode,shipmentDetail.getWarehouseCode()); + MaterialType materialType=materialTypeService.getOne(materialTypelam); + if(StringUtils.isNotEmpty(materialType.getAllocationRule())){ + filterConfigDetailLambdaQueryWrapper.eq(FilterConfigDetail::getCode,materialType.getAllocationRule()); + filterConfigDetail=filterConfigDetailService.getOne(filterConfigDetailLambdaQueryWrapper); + if(filterConfigDetail==null){ + throw new ServiceException("物料种类出库规则配置不存在"); + } + + //根据sql查库存 + list=inventoryDetailService.selectBysql(filterConfigDetail.getStatement(),shipmentDetail,filterConfigDetail.getStatements(),shipmentPreference); + return list; + } + //都没有时,默认仓库的分配规则 //查找分配规则 diff --git a/src/main/java/com/huaheng/pc/shipment/wave/service/WaveService.java b/src/main/java/com/huaheng/pc/shipment/wave/service/WaveService.java index 02b28c3..87f2aab 100644 --- a/src/main/java/com/huaheng/pc/shipment/wave/service/WaveService.java +++ b/src/main/java/com/huaheng/pc/shipment/wave/service/WaveService.java @@ -59,7 +59,8 @@ public class WaveService extends ServiceImpl<WaveMapper, Wave> { //1、查看此波次的状态,状态不为o时,无法开始波次 Wave wave = this.getById(id); - if(wave == null || wave.getStatus() != QuantityConstant.WAVE_STATUS_BUILD){ + if(wave == null || (wave.getStatus()> QuantityConstant.WAVE_STATUS_BUILD && + wave.getStatus() < QuantityConstant.WAVE_STATUS_FAILED)){ return AjaxResult.error("id为"+id+"的波次找不到,或者状态不能做开始操作"); } waves.add(wave); diff --git a/src/main/java/com/huaheng/pc/system/dict/service/DictTypeServiceImpl.java b/src/main/java/com/huaheng/pc/system/dict/service/DictTypeServiceImpl.java index a7d79bc..a34c930 100644 --- a/src/main/java/com/huaheng/pc/system/dict/service/DictTypeServiceImpl.java +++ b/src/main/java/com/huaheng/pc/system/dict/service/DictTypeServiceImpl.java @@ -11,6 +11,7 @@ import com.huaheng.common.utils.security.ShiroUtils; import com.huaheng.pc.system.dict.domain.DictType; import com.huaheng.pc.system.dict.mapper.DictDataMapper; import com.huaheng.pc.system.dict.mapper.DictTypeMapper; +import org.springframework.transaction.annotation.Transactional; import java.util.ArrayList; import java.util.List; @@ -180,6 +181,7 @@ public class DictTypeServiceImpl implements IDictTypeService //复制字典数据 @Override + @Transactional public Boolean dictTypeCopy(String code, String newCode) { int i = 0; //1、先复制字典主表数据 diff --git a/src/main/java/com/huaheng/pc/system/menu/service/MenuServiceImpl.java b/src/main/java/com/huaheng/pc/system/menu/service/MenuServiceImpl.java index 85d71fa..897523c 100644 --- a/src/main/java/com/huaheng/pc/system/menu/service/MenuServiceImpl.java +++ b/src/main/java/com/huaheng/pc/system/menu/service/MenuServiceImpl.java @@ -22,6 +22,7 @@ import com.huaheng.pc.system.menu.domain.Menu; import com.huaheng.pc.system.menu.mapper.MenuMapper; import com.huaheng.pc.system.role.domain.Role; import com.huaheng.pc.system.role.mapper.RoleMenuMapper; +import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; @@ -357,6 +358,7 @@ public class MenuServiceImpl implements IMenuService //复制菜单 @Override + @Transactional public Boolean menuCopy(String code, String newCode) { int i = 0; //复制菜单数据 diff --git a/src/main/java/com/huaheng/pc/system/role/mapper/RoleMapper.java b/src/main/java/com/huaheng/pc/system/role/mapper/RoleMapper.java index fdf75f6..8057795 100644 --- a/src/main/java/com/huaheng/pc/system/role/mapper/RoleMapper.java +++ b/src/main/java/com/huaheng/pc/system/role/mapper/RoleMapper.java @@ -94,7 +94,7 @@ public interface RoleMapper public int roleCopy(@Param("code")String code, @Param("newCode")String newCode); + public int roleUserCopy(@Param("code")String code,@Param("id") Integer id); - public int roleUserCopy(@Param("code")String code); } diff --git a/src/main/java/com/huaheng/pc/system/role/service/RoleServiceImpl.java b/src/main/java/com/huaheng/pc/system/role/service/RoleServiceImpl.java index 1e4ce65..8da8a03 100644 --- a/src/main/java/com/huaheng/pc/system/role/service/RoleServiceImpl.java +++ b/src/main/java/com/huaheng/pc/system/role/service/RoleServiceImpl.java @@ -18,8 +18,7 @@ import com.huaheng.pc.system.role.domain.RoleMenu; import com.huaheng.pc.system.role.mapper.RoleMapper; import com.huaheng.pc.system.role.mapper.RoleMenuMapper; import com.huaheng.pc.system.user.mapper.UserRoleMapper; - -import javax.annotation.Resource; +import org.springframework.transaction.annotation.Transactional; /** * 角色 业务层处理 @@ -30,13 +29,13 @@ import javax.annotation.Resource; public class RoleServiceImpl implements IRoleService { - @Resource + @Autowired private RoleMapper roleMapper; @Autowired private RoleMenuMapper roleMenuMapper; - @Resource + @Autowired private UserRoleMapper userRoleMapper; /** @@ -266,16 +265,17 @@ public class RoleServiceImpl implements IRoleService //复制角色 @Override + @Transactional public Boolean roleCopy(String code, String newCode) { int i = 0; i = roleMapper.roleCopy(code,newCode); if(i < 1){ throw new ServiceException("复制角色表失败"); } - if(i < 1){ - throw new ServiceException("复制角色菜单关系表失败"); - } - i = roleMapper.roleUserCopy(newCode); +// if(i < 1){ +// throw new ServiceException("复制角色菜单关系表失败"); +// } + i = roleMapper.roleUserCopy(newCode,ShiroUtils.getUserId()); if(i < 1){ throw new ServiceException("复制用户角色关系表失败"); } diff --git a/src/main/java/com/huaheng/pc/system/user/controller/HomeController.java b/src/main/java/com/huaheng/pc/system/user/controller/HomeController.java index fb987eb..5e50814 100644 --- a/src/main/java/com/huaheng/pc/system/user/controller/HomeController.java +++ b/src/main/java/com/huaheng/pc/system/user/controller/HomeController.java @@ -218,6 +218,7 @@ public class HomeController extends BaseController { } } } + System.out.println(list); return AjaxResult.success(list); } diff --git a/src/main/java/com/huaheng/pc/task/taskDetail/domain/TaskDetail.java b/src/main/java/com/huaheng/pc/task/taskDetail/domain/TaskDetail.java index 94e2740..88cb153 100644 --- a/src/main/java/com/huaheng/pc/task/taskDetail/domain/TaskDetail.java +++ b/src/main/java/com/huaheng/pc/task/taskDetail/domain/TaskDetail.java @@ -50,8 +50,10 @@ public class TaskDetail implements Serializable { @ApiModelProperty(value="仓库") private String warehouseCode; + @TableField(exist = false) private String warehouseName; + @TableField(exist = false) private String companyName; /** diff --git a/src/main/java/com/huaheng/pc/task/taskHeader/service/TaskHeaderServiceImpl.java b/src/main/java/com/huaheng/pc/task/taskHeader/service/TaskHeaderServiceImpl.java index fe8783f..a051ebe 100644 --- a/src/main/java/com/huaheng/pc/task/taskHeader/service/TaskHeaderServiceImpl.java +++ b/src/main/java/com/huaheng/pc/task/taskHeader/service/TaskHeaderServiceImpl.java @@ -382,9 +382,9 @@ public class TaskHeaderServiceImpl extends ServiceImpl<TaskHeaderMapper, TaskHea if (task.getStatus() >= QuantityConstant.TASK_STATUS_RELEASE) { return AjaxResult.error("任务" + taskId + "已经下发,请不要重复下发,操作中止"); } - // 给wcs传递任务 taskAssignService.wcsTaskAssign(task); + //修改任务头表 task.setId(taskId); task.setStatus(QuantityConstant.TASK_STATUS_RELEASE); @@ -706,7 +706,7 @@ public class TaskHeaderServiceImpl extends ServiceImpl<TaskHeaderMapper, TaskHea Location temp1 = new Location(); temp1.setCode(sourceLocation); temp1.setWarehouseCode(ShiroUtils.getWarehouseCode()); - LambdaQueryWrapper<Location> lambda1 = Wrappers.lambdaQuery(); + LambdaQueryWrapper<Location> lambda1 = Wrappers.lambdaQuery(temp1); Location loc1 = locationService.getOne(lambda1); if (loc1 == null) { return AjaxResult.error("源库位:" + sourceLocation + "未找到"); @@ -750,7 +750,7 @@ public class TaskHeaderServiceImpl extends ServiceImpl<TaskHeaderMapper, TaskHea TaskHeader taskHeader = new TaskHeader(); taskHeader.setWarehouseCode(ShiroUtils.getWarehouseCode()); taskHeader.setCompanyCode(ShiroUtils.getCompanyCodeList().get(0));//获取第一个货主 - taskHeader.setInternalTaskType(QuantityConstant.TASK_INTENERTYPE_CHECK); + taskHeader.setInternalTaskType(QuantityConstant.TASK_INTENERTYPE_TRANSFER); taskHeader.setTaskType(QuantityConstant.TASK_TYPE_TRANSFER); taskHeader.setContainerCode(loc1.getContainerCode()); taskHeader.setStatus(QuantityConstant.TASK_STATUS_BUILD); diff --git a/src/main/resources/application-dev.yml b/src/main/resources/application-dev.yml index f699ea0..7b9ead6 100644 --- a/src/main/resources/application-dev.yml +++ b/src/main/resources/application-dev.yml @@ -66,4 +66,4 @@ logging: server: port: 8888 servlet: - context-path: /twms/ + context-path: /twms/ \ No newline at end of file diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index ed7db5d..8ae63d0 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -33,6 +33,11 @@ user: # Spring配置 spring: + http: + encoding: + charset: utf-8 + enabled: true + force: true # 模板引擎 thymeleaf: mode: HTML diff --git a/src/main/resources/fonts/STSONG.TTF b/src/main/resources/fonts/STSONG.TTF new file mode 100644 index 0000000..3870605 --- /dev/null +++ b/src/main/resources/fonts/STSONG.TTF diff --git a/src/main/resources/fonts/fonts.xml b/src/main/resources/fonts/fonts.xml new file mode 100644 index 0000000..8ce8f55 --- /dev/null +++ b/src/main/resources/fonts/fonts.xml @@ -0,0 +1,15 @@ +<?xml version="1.0" encoding="UTF-8"?> +<fontFamilies> + <fontFamily name="华文宋体"> + <normal>fonts/STSONG.TTF</normal> + <bold>fonts/STSONG.TTF</bold> + <italic>fonts/STSONG.TTF</italic> + <boldItalic>fonts/STSONG.TTF</boldItalic> + <pdfEncoding>Identity-H</pdfEncoding> + <pdfEmbedded>true</pdfEmbedded> + <exportFonts> + <export key="net.sf.jasperreports.html">'华文宋体', Arial, Helvetica, sans-serif</export> + <export key="net.sf.jasperreports.xhtml">'华文宋体', Arial, Helvetica, sans-serif</export> + </exportFonts> + </fontFamily> +</fontFamilies> diff --git a/src/main/resources/jasperreports_extension.properties b/src/main/resources/jasperreports_extension.properties new file mode 100644 index 0000000..e0ac0bf --- /dev/null +++ b/src/main/resources/jasperreports_extension.properties @@ -0,0 +1,2 @@ +net.sf.jasperreports.extension.registry.factory.simple.font.families=net.sf.jasperreports.engine.fonts.SimpleFontExtensionsRegistryFactory +net.sf.jasperreports.extension.simple.font.families.lobstertwo=fonts/fonts.xml diff --git a/src/main/resources/jaspers/mypage.jasper b/src/main/resources/jaspers/mypage.jasper new file mode 100644 index 0000000..8f79e55 --- /dev/null +++ b/src/main/resources/jaspers/mypage.jasper diff --git a/src/main/resources/jaspers/mypage.jrxml b/src/main/resources/jaspers/mypage.jrxml new file mode 100644 index 0000000..67a6792 --- /dev/null +++ b/src/main/resources/jaspers/mypage.jrxml @@ -0,0 +1,186 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- Created with Jaspersoft Studio version 6.10.0.final using JasperReports Library version 6.10.0-unknown --> +<jasperReport xmlns="http://jasperreports.sourceforge.net/jasperreports" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports http://jasperreports.sourceforge.net/xsd/jasperreport.xsd" name="mypage" pageWidth="595" pageHeight="842" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20" uuid="269017e1-91e2-41c1-8c72-e94c48e4265a"> + <property name="com.jaspersoft.studio.data.sql.tables" value=""/> + <property name="com.jaspersoft.studio.data.defaultdataadapter" value="myAdapter"/> + <queryString language="SQL"> + <![CDATA[select id, +materialCode, +locationCode, +qty, +inventorySts, +TIMESTAMPDIFF(DAY,created,NOW()) as time +from +inventory_detail]]> + </queryString> + <field name="id" class="java.lang.Integer"> + <property name="com.jaspersoft.studio.field.label" value="id"/> + <property name="com.jaspersoft.studio.field.tree.path" value="inventory_detail"/> + </field> + <field name="materialCode" class="java.lang.String"> + <property name="com.jaspersoft.studio.field.label" value="materialCode"/> + <property name="com.jaspersoft.studio.field.tree.path" value="inventory_detail"/> + </field> + <field name="locationCode" class="java.lang.String"> + <property name="com.jaspersoft.studio.field.label" value="locationCode"/> + <property name="com.jaspersoft.studio.field.tree.path" value="inventory_detail"/> + </field> + <field name="qty" class="java.math.BigDecimal"> + <property name="com.jaspersoft.studio.field.label" value="qty"/> + <property name="com.jaspersoft.studio.field.tree.path" value="inventory_detail"/> + </field> + <field name="inventorySts" class="java.lang.String"> + <property name="com.jaspersoft.studio.field.label" value="inventorySts"/> + <property name="com.jaspersoft.studio.field.tree.path" value="inventory_detail"/> + </field> + <field name="time" class="java.lang.Long"> + <property name="com.jaspersoft.studio.field.label" value="time"/> + </field> + <background> + <band splitType="Stretch"/> + </background> + <title> + <band height="79" splitType="Stretch"> + <staticText> + <reportElement x="220" y="30" width="100" height="30" isRemoveLineWhenBlank="true" uuid="8b09e723-8b9c-4cf0-8797-cadf3e5b6af5"/> + <textElement textAlignment="Center" verticalAlignment="Middle"> + <font fontName="华文宋体" size="20"/> + </textElement> + <text><![CDATA[库存报表]]></text> + </staticText> + </band> + </title> + <pageHeader> + <band height="40" splitType="Stretch"> + <staticText> + <reportElement x="-10" y="6" width="100" height="30" isRemoveLineWhenBlank="true" uuid="3255876e-83de-41f7-ac80-c0e0002183d8"/> + <textElement textAlignment="Right" verticalAlignment="Middle"> + <font fontName="华文宋体" size="10"/> + </textElement> + <text><![CDATA[公司:]]></text> + </staticText> + <staticText> + <reportElement x="90" y="6" width="100" height="30" isRemoveLineWhenBlank="true" uuid="d7fe09d1-e13b-4c2c-8370-8ab5f4fe27e0"/> + <textElement textAlignment="Left" verticalAlignment="Middle"> + <font fontName="华文宋体" size="10"/> + </textElement> + <text><![CDATA[华恒机器人]]></text> + </staticText> + <staticText> + <reportElement x="340" y="5" width="100" height="30" isRemoveLineWhenBlank="true" uuid="129192ee-63ff-42ac-bad8-6ea886aa7df1"/> + <textElement textAlignment="Right" verticalAlignment="Middle"> + <font fontName="华文宋体" size="10"/> + </textElement> + <text><![CDATA[时间:]]></text> + </staticText> + <textField pattern="MMMMM dd, yyyy"> + <reportElement x="440" y="5" width="100" height="30" isRemoveLineWhenBlank="true" uuid="0e9b0a78-271c-46c3-a9a5-ada603e1d586"/> + <textElement textAlignment="Left" verticalAlignment="Middle"> + <font fontName="华文宋体" size="10"/> + </textElement> + <textFieldExpression><![CDATA[new java.util.Date()]]></textFieldExpression> + </textField> + </band> + </pageHeader> + <columnHeader> + <band height="40" splitType="Stretch"> + <staticText> + <reportElement x="-20" y="10" width="90" height="30" isRemoveLineWhenBlank="true" uuid="a46711b9-185c-4f72-8ba4-3913cf7ffa36"/> + <textElement textAlignment="Center" verticalAlignment="Middle"> + <font fontName="华文宋体" size="10"/> + </textElement> + <text><![CDATA[序号]]></text> + </staticText> + <staticText> + <reportElement x="70" y="10" width="100" height="30" isRemoveLineWhenBlank="true" uuid="316c901d-5d62-4cf9-96b0-9292282b83d4"/> + <textElement textAlignment="Center" verticalAlignment="Middle"> + <font fontName="华文宋体" size="10"/> + </textElement> + <text><![CDATA[物料]]></text> + </staticText> + <staticText> + <reportElement x="170" y="10" width="100" height="30" isRemoveLineWhenBlank="true" uuid="d2889df8-acf6-42f3-baf8-cee479d95744"/> + <textElement textAlignment="Center" verticalAlignment="Middle"> + <font fontName="华文宋体" size="10"/> + </textElement> + <text><![CDATA[库位]]></text> + </staticText> + <staticText> + <reportElement x="270" y="10" width="100" height="30" isRemoveLineWhenBlank="true" uuid="648755a4-c6e4-4d43-842f-cbbcccf3b602"/> + <textElement textAlignment="Center" verticalAlignment="Middle"> + <font fontName="华文宋体" size="10"/> + </textElement> + <text><![CDATA[数量]]></text> + </staticText> + <staticText> + <reportElement x="370" y="10" width="100" height="30" isRemoveLineWhenBlank="true" uuid="7400f621-cdcc-4c01-affc-b5247c64c279"/> + <textElement textAlignment="Center" verticalAlignment="Middle"> + <font fontName="华文宋体" size="10"/> + </textElement> + <text><![CDATA[状态]]></text> + </staticText> + <staticText> + <reportElement x="470" y="10" width="100" height="30" isRemoveLineWhenBlank="true" uuid="445b4f01-fe14-4433-a239-3a9ce548b9a2"/> + <textElement textAlignment="Center" verticalAlignment="Middle"> + <font fontName="华文宋体" size="10"/> + </textElement> + <text><![CDATA[距今时间]]></text> + </staticText> + </band> + </columnHeader> + <detail> + <band height="31" splitType="Stretch"> + <textField> + <reportElement x="-20" y="0" width="90" height="30" isRemoveLineWhenBlank="true" uuid="8c955db5-fc66-441b-863c-92d5f92120b3"/> + <textElement textAlignment="Center" verticalAlignment="Middle"> + <font fontName="华文宋体" size="10"/> + </textElement> + <textFieldExpression><![CDATA[$F{id}]]></textFieldExpression> + </textField> + <textField> + <reportElement x="70" y="0" width="100" height="30" isRemoveLineWhenBlank="true" uuid="a45ff2e7-b85b-42d3-a2e6-30e5e78e4979"/> + <textElement textAlignment="Center" verticalAlignment="Middle"> + <font fontName="华文宋体" size="10"/> + </textElement> + <textFieldExpression><![CDATA[$F{materialCode}]]></textFieldExpression> + </textField> + <textField> + <reportElement x="170" y="0" width="100" height="30" isRemoveLineWhenBlank="true" uuid="5225baa7-39e2-4e37-8905-f0be6c22383e"/> + <textElement textAlignment="Center" verticalAlignment="Middle"> + <font fontName="华文宋体" size="10"/> + </textElement> + <textFieldExpression><![CDATA[$F{locationCode}]]></textFieldExpression> + </textField> + <textField> + <reportElement x="270" y="0" width="100" height="30" isRemoveLineWhenBlank="true" uuid="9db2444d-b495-40aa-bee9-cd5b86b709b2"/> + <textElement textAlignment="Center" verticalAlignment="Middle"> + <font fontName="华文宋体" size="10"/> + </textElement> + <textFieldExpression><![CDATA[$F{qty}]]></textFieldExpression> + </textField> + <textField> + <reportElement x="370" y="0" width="100" height="30" isRemoveLineWhenBlank="true" uuid="13b8f525-a4f3-4d10-9056-934b6ceb8baa"/> + <textElement textAlignment="Center" verticalAlignment="Middle"> + <font fontName="华文宋体" size="10"/> + </textElement> + <textFieldExpression><![CDATA[$F{inventorySts}]]></textFieldExpression> + </textField> + <textField> + <reportElement x="470" y="0" width="100" height="30" isRemoveLineWhenBlank="true" uuid="17b64d38-bd90-49e7-9547-356eec6efb1f"/> + <textElement textAlignment="Center" verticalAlignment="Middle"> + <font fontName="华文宋体" size="10"/> + </textElement> + <textFieldExpression><![CDATA[$F{time}]]></textFieldExpression> + </textField> + </band> + </detail> + <columnFooter> + <band height="45" splitType="Stretch"/> + </columnFooter> + <pageFooter> + <band height="54" splitType="Stretch"/> + </pageFooter> + <summary> + <band height="42" splitType="Stretch"/> + </summary> +</jasperReport> diff --git a/src/main/resources/mybatis/config/AddressMapper.xml b/src/main/resources/mybatis/config/AddressMapper.xml index 6d76e05..20b9b48 100644 --- a/src/main/resources/mybatis/config/AddressMapper.xml +++ b/src/main/resources/mybatis/config/AddressMapper.xml @@ -5,11 +5,12 @@ <!--@mbg.generated--> <id column="id" jdbcType="INTEGER" property="id" /> <result column="warehouseCode" jdbcType="VARCHAR" property="warehouseCode" /> + <result column="number" jdbcType="INTEGER" property="number" /> <result column="param" jdbcType="VARCHAR" property="param" /> <result column="url" jdbcType="VARCHAR" property="url" /> </resultMap> <sql id="Base_Column_List"> <!--@mbg.generated--> - id, warehouseCode, param,url + id, warehouseCode,number, param,url </sql> </mapper> \ No newline at end of file diff --git a/src/main/resources/mybatis/config/ContainerMapper.xml b/src/main/resources/mybatis/config/ContainerMapper.xml index e6a0a48..886541a 100644 --- a/src/main/resources/mybatis/config/ContainerMapper.xml +++ b/src/main/resources/mybatis/config/ContainerMapper.xml @@ -55,4 +55,36 @@ <select id="findAllByCode" resultMap="BaseResultMap" parameterType="java.lang.String"> SELECT * FROM container WHERE code = #{code,jdbcType=VARCHAR} </select> + + <insert id="addList" parameterType="com.huaheng.pc.config.container.domain.Container" keyProperty="id" useGeneratedKeys="true" > + INSERT INTO container( + code, + warehouseCode, + companyCode, + containerType, + createdBy, + status, + enable + )values + <foreach collection="containers" item="item" index="index" separator=","> + ( + #{item.code}, + #{item.warehouseCode}, + #{item.companyCode}, + #{item.containerType}, + #{item.createdBy}, + #{item.status}, + #{item.enable} + ) + </foreach> + </insert> + + <select id="selectListShelf" resultType="com.huaheng.pc.config.container.domain.Container"> + SELECT + g.goodsShelfNo + FROM + ( SELECT DISTINCT ( goodsShelfNo ) goodsShelfNo, COUNT( * ) cunt FROM container WHERE `status` = 'empty' AND type = 'A' GROUP BY goodsShelfNo ) g + INNER JOIN ( SELECT DISTINCT ( goodsShelfNo ) goodsShelfNo, COUNT( * ) cunt FROM container WHERE type = 'A' GROUP BY goodsShelfNo ) s ON g.goodsShelfNo = s.goodsShelfNo + AND g.cunt = s.cunt + </select> </mapper> \ No newline at end of file diff --git a/src/main/resources/mybatis/config/LocationMapper.xml b/src/main/resources/mybatis/config/LocationMapper.xml index ebff61c..6c8e3e4 100644 --- a/src/main/resources/mybatis/config/LocationMapper.xml +++ b/src/main/resources/mybatis/config/LocationMapper.xml @@ -50,6 +50,39 @@ UPDATE location set `status`=#{status},containerCode=#{containerCode} WHERE warehouseCode=#{warehouseCode} AND `code`=#{locationCode} </update> + <insert id="addList" parameterType="com.huaheng.pc.config.location.domain.Location" keyProperty="id" useGeneratedKeys="true" > + INSERT INTO location( + code, + warehouseCode, + zoneCode, + locationType, + iRow, + iColumn, + iLayer, + iGrid, + roadway, + createdBy, + lastUpdatedBy, + status + )values + <foreach collection="locations" item="item" index="index" separator=","> + ( + #{item.code}, + #{item.warehouseCode}, + #{item.zoneCode}, + #{item.locationType}, + #{item.iRow}, + #{item.iColumn}, + #{item.iLayer}, + #{item.iGrid}, + #{item.roadway}, + #{item.createdBy}, + #{item.lastUpdatedBy}, + #{item.status} + ) + </foreach> + </insert> + <select id="getAllLocation" resultType="com.huaheng.pc.config.location.domain.Location"> select max(iRow) as iRow,max(iColumn) as iColumn,max(iLayer) as iLayer,max(iGrid) as iGrid from location l where l.warehouseCode=#{warehouseCode} AND l.locationType=#{type} </select> diff --git a/src/main/resources/mybatis/config/LocationTypeMapper.xml b/src/main/resources/mybatis/config/LocationTypeMapper.xml index 274d8bb..98a007f 100644 --- a/src/main/resources/mybatis/config/LocationTypeMapper.xml +++ b/src/main/resources/mybatis/config/LocationTypeMapper.xml @@ -7,9 +7,9 @@ <result column="code" jdbcType="VARCHAR" property="code" /> <result column="warehouseCode" jdbcType="VARCHAR" property="warehouseCode" /> <result column="name" jdbcType="VARCHAR" property="name" /> - <result column="length" jdbcType="INTEGER" property="length" /> - <result column="width" jdbcType="INTEGER" property="width" /> - <result column="height" jdbcType="INTEGER" property="height" /> + <result column="length" jdbcType="VARCHAR" property="length" /> + <result column="width" jdbcType="VARCHAR" property="width" /> + <result column="height" jdbcType="VARCHAR" property="height" /> <result column="maxWeight" jdbcType="INTEGER" property="maxWeight" /> <result column="minQtyUm" jdbcType="VARCHAR" property="minQtyUm" /> <result column="checkDigit" jdbcType="VARCHAR" property="checkDigit" /> diff --git a/src/main/resources/mybatis/config/PointsMapper.xml b/src/main/resources/mybatis/config/PointsMapper.xml new file mode 100644 index 0000000..ee036d5 --- /dev/null +++ b/src/main/resources/mybatis/config/PointsMapper.xml @@ -0,0 +1,65 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> +<mapper namespace="com.huaheng.pc.config.points.mapper.PointsMapper"> + <resultMap id="BaseResultMap" type="com.huaheng.pc.config.points.domain.Points"> + <!--@mbg.generated--> + <id column="id" jdbcType="INTEGER" property="id" /> + <result column="warehouseCode" jdbcType="VARCHAR" property="warehouseCode" /> + <result column="companyCode" jdbcType="VARCHAR" property="companyCode" /> + <result column="goodsShelfNo" jdbcType="VARCHAR" property="goodsShelfNo" /> + <result column="intX" jdbcType="VARCHAR" property="intX" /> + <result column="intY" jdbcType="VARCHAR" property="intY" /> + <result column="oIntX" jdbcType="VARCHAR" property="oIntX" /> + <result column="oIntY" jdbcType="VARCHAR" property="oIntY" /> + <result column="num" jdbcType="INTEGER" property="num" /> + <result column="isEmpty" jdbcType="INTEGER" property="isEmpty" /> + <result column="isEnable" jdbcType="INTEGER" property="isEnable" /> + <result column="isLocked" jdbcType="INTEGER" property="isLocked" /> + </resultMap> + <sql id="Base_Column_List"> + <!--@mbg.generated--> + warehouseCode,companyCode,goodsShelfNo,intX,intY,oIntX,oIntY,num,isEmpty,isEnable,isLocked + </sql> + + + <update id="updatePoints"> + UPDATE points + <set> + <if test="isLocked != null"> + isLocked = #{isLocked, jdbcType=INTEGER}, + </if> + <if test="intX != null"> + intX = #{intX, jdbcType=VARCHAR}, + </if> + <if test="intY != null"> + intY = #{intY, jdbcType=VARCHAR}, + </if> + <if test="oIntX != null"> + oIntX = #{oIntX, jdbcType=VARCHAR}, + </if> + <if test="oIntY != null"> + oIntY = #{oIntY, jdbcType=VARCHAR}, + </if> + <if test="num != null"> + num = #{num, jdbcType=INTEGER}, + </if> + </set> + where goodsShelfNo=#{goodsShelfNo} and warehouseCode=#{warehouseCode} + </update> + + + + <update id="updateAll"> + update points set isLocked = 0 + </update> + + + <update id="updateIsEmpty"> + update points set isEmpty = #{isEmpty} + WHERE goodsShelfNo IN + <foreach collection="list" item="item" index="index" open="(" close=")" separator=","> + #{item} + </foreach> + + </update> +</mapper> \ No newline at end of file diff --git a/src/main/resources/mybatis/config/WarehouseMapper.xml b/src/main/resources/mybatis/config/WarehouseMapper.xml index 28661bf..023b9bd 100644 --- a/src/main/resources/mybatis/config/WarehouseMapper.xml +++ b/src/main/resources/mybatis/config/WarehouseMapper.xml @@ -147,4 +147,9 @@ </where> </select> + + <insert id="userCopy"> + insert into sys_user_warehouse(userId,warehouseCode) + select userId,#{newWarehouseCode} from sys_user_warehouse where warehouseCode=#{warehouseCode} + </insert> </mapper> \ No newline at end of file diff --git a/src/main/resources/mybatis/config/ZoneMapper.xml b/src/main/resources/mybatis/config/ZoneMapper.xml index b64b465..65103c5 100644 --- a/src/main/resources/mybatis/config/ZoneMapper.xml +++ b/src/main/resources/mybatis/config/ZoneMapper.xml @@ -26,8 +26,15 @@ </resultMap> <sql id="Base_Column_List"> <!--@mbg.generated--> - id, code, warehouseId, warehouseCode, companyCode, `name`, locationType, created, + id, code, warehouseCode, companyCode, `name`, locationType, created, createdBy, lastUpdated, lastUpdatedBy, version, userDef1, userDef2, userDef3, userDef4, userDef5, userDef6, userDef7, userDef8, processStamp </sql> + + <insert id="zoneCopy"> + insert into zone(code, warehouseCode, companyCode, `name`, locationType, createdBy, lastUpdatedBy) + select code, #{newCode}, companyCode, `name`, locationType, createdBy, lastUpdatedBy from zone + where warehouseCode=#{code} + + </insert> </mapper> \ No newline at end of file diff --git a/src/main/resources/mybatis/monitor/ErrorLogMapper.xml b/src/main/resources/mybatis/monitor/ErrorLogMapper.xml index 30b1e33..ec0d784 100644 --- a/src/main/resources/mybatis/monitor/ErrorLogMapper.xml +++ b/src/main/resources/mybatis/monitor/ErrorLogMapper.xml @@ -3,10 +3,26 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.huaheng.pc.monitor.errorlog.mapper.ErrorLogMapper"> + <resultMap type="com.huaheng.pc.monitor.errorlog.domain.ErrorLog" id="ErrorLogResult"> + <id property="event_id" column="event_id" /> + <result property="timestmp" column="timestmp" /> + <result property="formatted_message" column="formatted_message" /> + <result property="logger_name" column="logger_name" /> + <result property="level_string" column="level_string" /> + <result property="thread_name" column="thread_name" /> + <result property="reference_flag" column="reference_flag" /> + <result property="arg0" column="arg0" /> + <result property="arg1" column="arg1" /> + <result property="arg3" column="arg3" /> + <result property="caller_filename" column="caller_filename" /> + <result property="caller_class" column="caller_class" /> + <result property="caller_method" column="caller_method" /> + <result property="caller_line" column="caller_line" /> + <result property="creatTime" column="creatTime" /> + </resultMap> <select id="selectListEntity" parameterType="com.huaheng.pc.monitor.errorlog.domain.ErrorLog" resultType="com.huaheng.pc.monitor.errorlog.domain.ErrorLog"> - select event_id, timestmp, formatted_message, logger_name, level_string, thread_name, reference_flag, arg0,arg1,arg2,arg3,caller_filename,caller_class,caller_method,caller_line,creatTime - from logging_event + select * from logging_event <where> AND level_string = 'ERROR' <if test="caller_method != null and caller_method != ''"> diff --git a/src/main/resources/mybatis/monitor/JobLogMapper.xml b/src/main/resources/mybatis/monitor/JobLogMapper.xml new file mode 100644 index 0000000..cbad957 --- /dev/null +++ b/src/main/resources/mybatis/monitor/JobLogMapper.xml @@ -0,0 +1,89 @@ +<?xml version="1.0" encoding="UTF-8" ?> +<!DOCTYPE mapper +PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" +"http://mybatis.org/dtd/mybatis-3-mapper.dtd"> +<mapper namespace="com.huaheng.pc.monitor.job.mapper.JobLogMapper"> + + <resultMap type="com.huaheng.pc.monitor.job.domain.JobLog" id="JobLogResult"> + <id property="id" column="id" /> + <result property="jobName" column="jobName" /> + <result property="jobGroup" column="jobGroup" /> + <result property="methodName" column="methodName" /> + <result property="methodParams" column="methodParams" /> + <result property="jobMessage" column="jobMessage" /> + <result property="status" column="status" /> + <result property="exceptionInfo" column="exceptionInfo" /> + <result property="createTime" column="createTime" /> + </resultMap> + + <sql id="selectJobLogVo"> + select id, jobName, jobGroup, methodName, methodParams, jobMessage, status, exceptionInfo, createTime from sys_job_log + </sql> + + <select id="selectJobLogList" parameterType="com.huaheng.pc.monitor.job.domain.JobLog" resultMap="JobLogResult"> + <include refid="selectJobLogVo"/> + <where> + <if test="jobName != null and jobName != ''"> + AND jobName like concat('%', #{jobName}, '%') + </if> + <if test="status != null and status != ''"> + AND status = #{status} + </if> + <if test="methodName != null and methodName != ''"> + AND methodName like concat('%', #{methodName}, '%') + </if> + <if test="params != null and params.beginTime != null"><!-- 开始时间检索 --> + and date_format(createTime,'%y%m%d') >= date_format(#{params.beginTime},'%y%m%d') + </if> + <if test="params != null and params.endTime != null"><!-- 结束时间检索 --> + and date_format(createTime,'%y%m%d') <= date_format(#{params.endTime},'%y%m%d') + </if> + </where> + </select> + + + <select id="selectJobLogById" parameterType="Integer" resultMap="JobLogResult"> + <include refid="selectJobLogVo"/> + where id = #{id} + </select> + + <delete id="deleteJobLogById" parameterType="Integer"> + delete from sys_job_log where id = #{id} + </delete> + + <delete id="deleteJobLogByIds" parameterType="String"> + delete from sys_job_log where id in + <foreach collection="array" item="id" open="(" separator="," close=")"> + #{id} + </foreach> + </delete> + + <insert id="insertJobLog" parameterType="com.huaheng.pc.monitor.job.domain.JobLog"> + insert into sys_job_log( + <if test="id != null and id != 0">id,</if> + <if test="jobName != null and jobName != ''">jobName,</if> + <if test="jobGroup != null and jobGroup != ''">jobGroup,</if> + <if test="methodName != null and methodName != ''">methodName,</if> + <if test="methodParams != null and methodParams != ''">methodParams,</if> + <if test="jobMessage != null and jobMessage != ''">jobMessage,</if> + <if test="status != null and status != ''">status,</if> + <if test="exceptionInfo != null and exceptionInfo != ''">exceptionInfo,</if> + createTime + )values( + <if test="id != null and id != 0">#{id},</if> + <if test="jobName != null and jobName != ''">#{jobName},</if> + <if test="jobGroup != null and jobGroup != ''">#{jobGroup},</if> + <if test="methodName != null and methodName != ''">#{methodName},</if> + <if test="methodParams != null and methodParams != ''">#{methodParams},</if> + <if test="jobMessage != null and jobMessage != ''">#{jobMessage},</if> + <if test="status != null and status != ''">#{status},</if> + <if test="exceptionInfo != null and exceptionInfo != ''">#{exceptionInfo},</if> + sysdate() + ) + </insert> + + <update id="truncateTable" > + truncate table sys_job_log + </update> + +</mapper> \ No newline at end of file diff --git a/src/main/resources/mybatis/monitor/JobMapper.xml b/src/main/resources/mybatis/monitor/JobMapper.xml new file mode 100644 index 0000000..7c9e7bb --- /dev/null +++ b/src/main/resources/mybatis/monitor/JobMapper.xml @@ -0,0 +1,107 @@ +<?xml version="1.0" encoding="UTF-8" ?> +<!DOCTYPE mapper +PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" +"http://mybatis.org/dtd/mybatis-3-mapper.dtd"> +<mapper namespace="com.huaheng.pc.monitor.job.mapper.JobMapper"> + + <resultMap type="com.huaheng.pc.monitor.job.domain.Job" id="JobResult"> + <id property="id" column="id" /> + <result property="jobName" column="jobName" /> + <result property="jobGroup" column="jobGroup" /> + <result property="methodName" column="methodName" /> + <result property="methodParams" column="methodParams" /> + <result property="cronExpression" column="cronExpression" /> + <result property="misfirePolicy" column="misfirePolicy" /> + <result property="status" column="status" /> + <result property="createBy" column="createBy" /> + <result property="createTime" column="createTime" /> + <result property="updateBy" column="updateBy" /> + <result property="updateTime" column="updateTime" /> + <result property="remark" column="remark" /> + </resultMap> + + <sql id="selectJobVo"> + select id, jobName, jobGroup, methodName, methodParams, cronExpression, misfirePolicy, status, createBy, createTime, remark from sys_job + </sql> + + <select id="selectJobList" resultMap="JobResult"> + <include refid="selectJobVo"/> + <where> + <if test="jobName != null and jobName != ''"> + AND jobName like concat('%', #{jobName}, '%') + </if> + <if test="status != null and status != ''"> + AND status = #{status} + </if> + <if test="methodName != null and methodName != ''"> + AND methodName like concat('%', #{methodName}, '%') + </if> + </where> + </select> + + <select id="selectJobAll" resultMap="JobResult"> + <include refid="selectJobVo"/> + </select> + + <select id="selectJobById" resultMap="JobResult"> + <include refid="selectJobVo"/> + where id = #{id} + </select> + + <delete id="deleteJobById"> + delete from sys_job where id = #{id} + </delete> + + <delete id="deleteJobByIds"> + delete from sys_job where id in + <foreach collection="array" item="id" open="(" separator="," close=")"> + #{id} + </foreach> + </delete> + + <update id="updateJob"> + update sys_job + <set> + <if test="jobName != null and jobName != ''">jobName = #{jobName},</if> + <if test="jobGroup != null and jobGroup != ''">jobGroup = #{jobGroup},</if> + <if test="methodName != null and methodName != ''">methodName = #{methodName},</if> + <if test="methodParams != null and methodParams != ''">methodParams = #{methodParams},</if> + <if test="cronExpression != null and cronExpression != ''">cronExpression = #{cronExpression},</if> + <if test="misfirePolicy != null and misfirePolicy != ''">misfirePolicy = #{misfirePolicy},</if> + <if test="status !=null">status = #{status},</if> + <if test="remark != null and remark != ''">remark = #{remark},</if> + <if test="updateBy != null and updateBy != ''">updateBy = #{updateBy},</if> + updateTime = sysdate() + </set> + where id = #{id} + </update> + + <insert id="insertJob" useGeneratedKeys="true" keyProperty="id"> + insert into sys_job( + <if test="id != null and id != 0">id,</if> + <if test="jobName != null and jobName != ''">jobName,</if> + <if test="jobGroup != null and jobGroup != ''">jobGroup,</if> + <if test="methodName != null and methodName != ''">methodName,</if> + <if test="methodParams != null and methodParams != ''">methodParams,</if> + <if test="cronExpression != null and cronExpression != ''">cronExpression,</if> + <if test="misfirePolicy != null and misfirePolicy != ''">misfirePolicy,</if> + <if test="status != null and status != ''">status,</if> + <if test="remark != null and remark != ''">remark,</if> + <if test="createBy != null and createBy != ''">createBy,</if> + createTime + )values( + <if test="id != null and id != 0">#{id},</if> + <if test="jobName != null and jobName != ''">#{jobName},</if> + <if test="jobGroup != null and jobGroup != ''">#{jobGroup},</if> + <if test="methodName != null and methodName != ''">#{methodName},</if> + <if test="methodParams != null and methodParams != ''">#{methodParams},</if> + <if test="cronExpression != null and cronExpression != ''">#{cronExpression},</if> + <if test="misfirePolicy != null and misfirePolicy != ''">#{misfirePolicy},</if> + <if test="status != null and status != ''">#{status},</if> + <if test="remark != null and remark != ''">#{remark},</if> + <if test="createBy != null and createBy != ''">#{createBy},</if> + sysdate() + ) + </insert> + +</mapper> \ No newline at end of file diff --git a/src/main/resources/mybatis/monitor/LogininforMapper.xml b/src/main/resources/mybatis/monitor/LogininforMapper.xml index 1cd82a1..673caaf 100644 --- a/src/main/resources/mybatis/monitor/LogininforMapper.xml +++ b/src/main/resources/mybatis/monitor/LogininforMapper.xml @@ -4,7 +4,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.huaheng.pc.monitor.logininfor.mapper.LogininforMapper"> - <resultMap type="Logininfor" id="LogininforResult"> + <resultMap type="com.huaheng.pc.monitor.logininfor.domain.Logininfor" id="LogininforResult"> <id property="id" column="id" /> <result property="loginName" column="loginName" /> <result property="status" column="status" /> @@ -16,12 +16,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" <result property="loginTime" column="loginTime" /> </resultMap> - <insert id="insertLogininfor" parameterType="Logininfor"> + <insert id="insertLogininfor" parameterType="com.huaheng.pc.monitor.logininfor.domain.Logininfor"> insert into sys_logininfor (loginName, status, ipaddr, loginLocation, browser, os, msg, loginTime) values (#{loginName}, #{status}, #{ipaddr}, #{loginLocation}, #{browser}, #{os}, #{msg}, sysdate()) </insert> - <select id="selectLogininforList" parameterType="Logininfor" resultMap="LogininforResult"> + <select id="selectLogininforList" parameterType="com.huaheng.pc.monitor.logininfor.domain.Logininfor" resultMap="LogininforResult"> select id,loginName,ipaddr,loginLocation,browser,os,status,msg,loginTime from sys_logininfor <where> <if test="ipaddr != null and ipaddr != ''"> diff --git a/src/main/resources/mybatis/monitor/OperLogMapper.xml b/src/main/resources/mybatis/monitor/OperLogMapper.xml index dd660e6..b4850fa 100644 --- a/src/main/resources/mybatis/monitor/OperLogMapper.xml +++ b/src/main/resources/mybatis/monitor/OperLogMapper.xml @@ -70,4 +70,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" where id = #{id} </select> + <update id="truncateTable"> + truncate table sys_oper_log + </update> + </mapper> \ No newline at end of file diff --git a/src/main/resources/mybatis/shipment/ShipmentDetailMapper.xml b/src/main/resources/mybatis/shipment/ShipmentDetailMapper.xml index 50a46dd..be9b17d 100644 --- a/src/main/resources/mybatis/shipment/ShipmentDetailMapper.xml +++ b/src/main/resources/mybatis/shipment/ShipmentDetailMapper.xml @@ -137,4 +137,26 @@ ORDER BY left JOIN task_detail r on r.companyCode=c.code and r.status>90 and r.taskType =200 and date(r.lastUpdated)=CURDATE() group by c.code </select> + + <insert id="insertDetails"> + insert into shipment_detail( + shipmentId, warehouseCode, companyCode, shipmentCode, referCode, referId, referLineNum, + materialCode, materialName, materialSpec, materialUnit, shipQty, allocationRule, + replenishmentRule, pickLocs, attribute1, attribute2, attribute3, attribute4, batch, + lot, projectNo, manufactureDate, expirationDate, agingDate, inventorySts, dockLoc, + packingClass, waveId, created, createdBy, lastUpdatedBy + ) + values + <foreach collection="shipmentDetails" item="item" index="index" separator=","> + ( + #{item.shipmentId}, #{item.warehouseCode}, #{item.companyCode}, #{item.shipmentCode}, #{item.referCode}, + #{item.referId}, #{item.referLineNum},#{item.materialCode}, #{item.materialName}, #{item.materialSpec}, + #{item.materialUnit}, #{item.shipQty}, #{item.allocationRule},#{item.replenishmentRule}, + #{item.pickLocs}, #{item.attribute1}, #{item.attribute2}, #{item.attribute3}, #{item.attribute4}, #{item.batch}, + #{item.lot}, #{item.projectNo}, #{item.manufactureDate}, #{item.expirationDate}, #{item.agingDate}, + #{item.inventorySts}, #{item.dockLoc},#{item.packingClass}, #{item.waveId}, #{item.created}, #{item.createdBy}, + #{item.lastUpdatedBy} + ) + </foreach> + </insert> </mapper> \ No newline at end of file diff --git a/src/main/resources/mybatis/system/MenuMapper.xml b/src/main/resources/mybatis/system/MenuMapper.xml index f69871e..7b4365d 100644 --- a/src/main/resources/mybatis/system/MenuMapper.xml +++ b/src/main/resources/mybatis/system/MenuMapper.xml @@ -190,7 +190,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" <update id="updateParentId"> update sys_menu s - inner join sys_menu m on s.warehouseCode=#{code} and s.parentName=m.menuName set s.parentId=m.id + inner join sys_menu m on s.warehouseCode=#{code} and s.warehouseCode=m.warehouseCode and s.parentName=m.menuName set s.parentId=m.id </update> diff --git a/src/main/resources/mybatis/system/RoleMapper.xml b/src/main/resources/mybatis/system/RoleMapper.xml index 0b9e098..a8c2238 100644 --- a/src/main/resources/mybatis/system/RoleMapper.xml +++ b/src/main/resources/mybatis/system/RoleMapper.xml @@ -131,16 +131,10 @@ </insert> - <update id="updateRoleMenu"> - update sys_role_menu r inner join sys_menu m - on r.roleId = (select id from sys_role where warehouseCode = #{code} limit 1) - set r. - </update> <insert id="roleUserCopy"> insert into sys_user_role(userId,roleId) - values(1,(select id from sys_role where warehouseCode = #{code} limit 1)) + values(#{id},(select id from sys_role where warehouseCode = #{code} limit 1)) </insert> - </mapper> \ No newline at end of file diff --git a/src/main/resources/mybatis/task/TaskDetailMapper.xml b/src/main/resources/mybatis/task/TaskDetailMapper.xml index 05c3675..330a0ea 100644 --- a/src/main/resources/mybatis/task/TaskDetailMapper.xml +++ b/src/main/resources/mybatis/task/TaskDetailMapper.xml @@ -21,7 +21,6 @@ <result column="toZone" jdbcType="VARCHAR" property="toZone" /> <result column="attributeId" jdbcType="INTEGER" property="attributeId" /> <result column="referenceCode" jdbcType="VARCHAR" property="referenceCode" /> - <result column="referenceId" jdbcType="INTEGER" property="referenceId" /> <result column="referenceLineId" jdbcType="INTEGER" property="referenceLineId" /> <result column="assignedUser" jdbcType="VARCHAR" property="assignedUser" /> <result column="attribute1" jdbcType="VARCHAR" property="attribute1" /> diff --git a/src/main/resources/mybatis/task/TaskHeaderMapper.xml b/src/main/resources/mybatis/task/TaskHeaderMapper.xml index a71b78a..e05533d 100644 --- a/src/main/resources/mybatis/task/TaskHeaderMapper.xml +++ b/src/main/resources/mybatis/task/TaskHeaderMapper.xml @@ -60,7 +60,7 @@ <select id="getTasksStatus" resultType="com.huaheng.pc.task.taskHeader.domain.TaskHeader"> select * - FROM task + FROM task_header where lastStatus < 100 </select> diff --git a/src/main/resources/static/img/profiles.jpg b/src/main/resources/static/img/profiles.jpg new file mode 100644 index 0000000..ad2e639 --- /dev/null +++ b/src/main/resources/static/img/profiles.jpg diff --git a/src/main/resources/templates/admin/inventory/inventory.html b/src/main/resources/templates/admin/inventory/inventory.html index 0f02fc7..1ed1197 100644 --- a/src/main/resources/templates/admin/inventory/inventory.html +++ b/src/main/resources/templates/admin/inventory/inventory.html @@ -9,61 +9,59 @@ <form id="inventory-form"> <div class="select-list"> <ul> - <li> - 库位编号:<input type="text" name="locationCode"/> - </li> <li> - 容器编号:<input type="text" name="containerCode"/> + 库存头ID:<input id="inventoryHeaderId" type="text" name="inventoryHeaderId"/> </li> <li> - 仓库编码:<input type="text" name="warehouseCode"/> + 库位编号:<input id="locationCode" type="text" name="locationCode"/> </li> <li> - u8仓库:<select name="uWarehouseCode" th:with="warehouse=${@warehouse.selectList()}"> - <option value="">所有</option> - <option th:each="e : ${warehouse}" th:text="${e['uWarehouseName']}" th:value="${e['uWarehouseCode']}"></option></select> + 容器编号:<input id="containerCode" type="text" name="containerCode"/> </li> - <li> - 储货库区:<input type="text" name="zoneCode"/> - </li> <li> - 存货编码:<input type="text" name="materialCode"/> + 物料编码:<input type="text" name="materialCode"/> </li> - <li> - 存货代码:<input type="text" name="materialOldCode"/> - </li> <li> 物料名称:<input type="text" name="materialName"/> </li> - <li> - 库存状态: - <select name="status" th:with="inventoryStatus=${@dict.getType('inventoryStatus')}"> - <option value="">所有</option> - <option th:each="e : ${inventoryStatus}" th:text="${e['dictLabel']}" th:value="${e['dictValue']}"></option> - </select> - </li> - <li class="time" style="height:30px"> - <label>创建时间: </label> - <input type="text" class="time-input" id="startTime" placeholder="开始时间" name="params[createdBegin]"/> - <span>-</span> - <input type="text" class="time-input" id="endTime" placeholder="结束时间" name="params[createdEnd]"/> + <li> + 物料规格:<input type="text" name="materialSpec"/> </li> - <!--<li> - 物料类型: - <select name="materialType" th:with="type=${@dict.getType('materialType')}"> + <li> + 库存状态: + <select name="inventorySts" th:with="inventoryStatus=${@dict.getType('inventoryStatus')}"> <option value="">所有</option> - <option th:each="e : ${type}" th:text="${e['dictLabel']}" th:value="${e['dictValue']}"></option> + <option th:each="e : ${inventoryStatus}" th:text="${e['dictLabel']}" + th:value="${e['dictValue']}"></option> </select> - </li>--> + </li> <li> 供应商编码:<input type="text" name="supplierCode"/> </li> + <li> + 货主编码:<input type="text" name="companyCode"/> + </li> + <li> + 上游单号:<input type="text" name="referCode"/> + </li> + <li> + 上游行号:<input type="text" name="referDetailId"/> + </li> + <li> + 入库编码:<input type="text" name="receiptCode"/> + </li> + <li> + 入库明细ID:<input type="text" name="receiptDetailId"/> + </li> <li> - 项 目 号:<input type="text" name="project"/> + 项 目 号:<input type="text" name="projectNo"/> </li> <li> - 物料规格:<input type="text" name="materialSpec"/> + 批 次:<input type="text" name="batch"/> + </li> + <li> + 批 号:<input type="text" name="lot"/> </li> <li> <a class="btn btn-primary btn-rounded btn-sm" onclick="$.table.search()"><i class="fa fa-search"></i> 搜索</a> @@ -98,189 +96,190 @@ columns: [{ checkbox: true }, - { - field : 'id', - title : '库存ID', - sortable:true - }, - /*{ - field : 'locationId', - title : '库位Id' , - visible:false - },*/ - { - field : 'locationCode', - title : '库位编号' - }, - { - field : 'containerCode', - title : '容器编号' - }, - { - field : 'zoneCode', - title : '储货库区' , - }, - { - field : 'materialCode', - title : '存货编码' - }, - { - field : 'materialOldCode', - title : '存货代码' - }, - { - field : 'materialName', - title : '物料名称' - }, - { - field : 'materialSpec', - title : '物料规格' - }, - { - field : 'qty', - title : '数量' - }, - { - field : 'taskQty', - title : '预定执行数量' - }, - // { - // field : 'zoneCode', - // title : '物料库区', - // visible:true - // }, - { - field : 'sourceCode', - title : '上游系统单号', - visible:true - }, - { - field : 'uWarehouseCode', - title : 'u8仓库', - visible:true - }, - { - field : 'sourceLine', - title : '上游系统行号', - visible:true - }, - /*{ - field : 'companyId', - title : '货主Id', - visible:false - },*/ - { - field : 'companyCode', - title : '货主编码' - }, + { + field: 'id', + title: '明细ID', + sortable: true + }, + { + field: 'inventoryHeaderId', + title: '库存头ID' + }, + { + field: 'locationCode', + title: '库位编号' + }, + { + field: 'containerCode', + title: '容器编号' + }, + + { + field: 'materialCode', + title: '存货编码' + }, - { - field : 'receiptId', - title : '入库单标识' , - visible:false - }, - { - field : 'receiptCode', - title : '入库单编码' - }, - { - field : 'receiptDetailId', - title : '入库单明细标识' , - visible:false - }, - { - field : 'batch', - title : '批次' , - sortable:false, - visible:false - }, - { - field : 'lot', - title : '批号' , - sortable:false, - visible:false - }, - { - field : 'project', - title : '项目号' , - sortable:true - }, - { - field : 'supplierCode', - title : '供应商编码', - visible:true - }, - { - field : 'manufactureDate', - title : '生产日期' , - sortable:true , - visible:false - }, - { - field : 'expirationDate', - title : '失效日期' , - sortable:true , - visible:false - }, - { - field : 'status', - title : '库存状态' , - align: 'center', - formatter: function(value, row, index) { - return $.table.selectDictLabel(inventoryStatus, value); - } - }, + { + field: 'materialName', + title: '物料名称' + }, + { + field: 'materialSpec', + title: '物料规格' + }, + { + field: 'materialUnit', + title: '物料单位' + }, + { + field: 'qty', + title: '库存数量' + }, + { + field: 'inventorySts', + title: '库存状态', + align: 'center', + formatter: function (value, row, index) { + return $.table.selectDictLabel(inventoryStatus, value); + } + }, + { + field: 'taskQty', + title: '预定执行数量' + }, + { + field: 'lockedQty', + title: '冻结数量' + }, + { + field: 'companyCode', + title: '货主编码' + }, + { + field: 'receiptCode', + title: '入库单编码' + }, + { + field: 'receiptDetailId', + title: '入库单明细ID', + visible: true + }, + { + field: 'batch', + title: '批次', + sortable: false, + visible: false + }, + { + field: 'lot', + title: '批号', + sortable: false, + visible: false + }, + { + field: 'projectNo', + title: '项目号', + sortable: true + }, + { + field: 'supplierCode', + title: '供应商编码', + visible: true + }, + { + field: 'manufactureDate', + title: '生产日期', + sortable: true, + visible: false + }, + { + field: 'expirationDate', + title: '失效日期', + sortable: true, + visible: false + }, - { - field : 'costPrice', - title : '成本' , - visible:false - }, - { - field : 'listPrice', - title : '标价' , - visible:false - }, - { - field : 'netPrice', - title : '净价' , - visible:false - }, - { - field : 'created', - title : '入库时间', - sortable:true - }, - { - field : 'createdBy', - title : '创建用户' , - visible:false - }, - { - field : 'lastUpdated', - title : '最后修改时间', - sortable:true - }, - { - field : 'lastUpdatedBy', - title : '更新用户' - }, - { - field : 'userDef1', - title : '自定义字段1' , - visible:false - }, - { - field : 'userDef2', - title : '自定义字段2' , - visible:false - }, - { - field : 'userDef3', - title : '自定义字段3' , - visible:false - } - ] + { + field: 'referCode', + title: '上游单号' + }, + { + field: 'referDetailId', + title: '上游单号行号' + }, + { + field: 'qcCheck', + title: '质检' + }, + { + field: 'weight', + title: '重量' + }, + { + field: 'attributeId', + title: '属性号', + visible: false + }, + { + field: 'attribute1', + title: '属性1', + visible: false + }, + { + field: 'attribute2', + title: '属性2', + visible: false + }, + { + field: 'attribute3', + title: '属性3', + visible: false + }, + { + field: 'lockCode', + title: '锁', + }, + { + field: 'lastCycleCountDate', + title: '上次盘点日期', + visible: false, + sortable: true + }, + { + field: 'created', + title: '入库日期', + sortable: true + }, + { + field: 'createdBy', + title: '创建用户', + visible: false + }, + { + field: 'lastUpdated', + title: '最后修改时间', + sortable: true + }, + { + field: 'lastUpdatedBy', + title: '更新用户' + }, + { + field: 'userDef1', + title: '自定义字段1', + visible: false + }, + { + field: 'userDef2', + title: '自定义字段2', + visible: false + }, + { + field: 'userDef3', + title: '自定义字段3', + visible: false + } + ] }; $.table.init(options); }); diff --git a/src/main/resources/templates/admin/main.html b/src/main/resources/templates/admin/main.html index 6af7c2d..868a462 100644 --- a/src/main/resources/templates/admin/main.html +++ b/src/main/resources/templates/admin/main.html @@ -414,7 +414,13 @@ option.series.push({type:'bar',stack:'总量',data:[]}); } for(let i=0;i<length;i++){ - for (let j = 0; j < 10; j++) { + let showLine = 0; + if (value.data[i].list1.length < 10){ + showLine = value.data[i].list1.length; + } else { + showLine = 10; + } + for (let j = 0; j < showLine; j++) { option.series[j].data.push({value:value.data[i].list1[j].total,name:value.data[i].list1[j].name}); } } diff --git a/src/main/resources/templates/admin/receiptHeader/receiptHeader.html b/src/main/resources/templates/admin/receiptHeader/receiptHeader.html index 544377b..c2978d4 100644 --- a/src/main/resources/templates/admin/receiptHeader/receiptHeader.html +++ b/src/main/resources/templates/admin/receiptHeader/receiptHeader.html @@ -33,45 +33,23 @@ 入库单号:<input type="text" name="code"/> </li> <li> - 仓库:<input type="text" name="warehouseCode"/> - </li> - <li> - <!--入库类型:<input type="text" name="sourceCode"/>--> - 入库类型:<select name="type" th:with="type=${@dict.getType('receiptType')}"> - <option value="">所有</option> - <option th:each="e : ${type}" th:text="${e['dictLabel']}" th:value="${e['dictValue']}"></option></select> + 上游单号:<input type="text" name="referCode"/> </li> <li> - 供 应 商:<input type="text" name="supplierCode"/> + 仓库:<input type="text" name="warehouseCode"/> </li> <li> - <!--头 状 态:<input type="text" name="firstStatus"/>--> - 头 状 态:<select name="firstStatus" th:with="firstStatus=${@dict.getType('receiptHeaderStatus')}"> - <option value="">所有</option> - <option th:each="e : ${firstStatus}" th:text="${e['dictLabel']}" th:value="${e['dictValue']}"></option></select> - </li> + 货主:<select id="companyCode" name="companyCode" th:with="list=${@companyService.getCode()}"> + <option th:each="item : ${list}" th:text="${item['name']}" th:value="${item['code']}" th:attr = " code = ${item['code']}"></option> + </select> <li> - <!--尾 状 态:<input type="text" name="lastStatus"/>--> - 尾 状 态:<select name="lastStatus" th:with="lastStatus=${@dict.getType('receiptHeaderStatus')}"> + <!--入库类型:<input type="text" name="sourceCode"/>--> + 入库类型:<select name="type" th:with="type=${@receiptTypeService.getType()}"> <option value="">所有</option> - <option th:each="e : ${lastStatus}" th:text="${e['dictLabel']}" th:value="${e['dictValue']}"></option></select> - </li> - <li> - 上游单号:<input type="text" name="sourceCode"/> + <option th:each="e : ${type}" th:text="${e['name']}" th:value="${e['code']}"></option></select> </li> <li> - 上游平台:<input type="text" name="sourcePlatform"/> - </li> - <li class="time"> - <label>创建时间: </label> - <input type="text" class="time-input" id="startTime" placeholder="开始时间" name="params[createdBegin]"/> - <span>-</span> - <input type="text" class="time-input" id="endTime" placeholder="结束时间" name="params[createdEnd]"/> - </li> - <li> - u8仓库:<select name="uWarehouseCode" th:with="warehouse=${@warehouse.selectList()}"> - <option value="">所有</option> - <option th:each="e : ${warehouse}" th:text="${e['uWarehouseName']}" th:value="${e['uWarehouseCode']}"></option></select> + 供 应 商:<input type="text" name="supplierCode"/> </li> <li> <a class="btn btn-primary btn-rounded btn-sm" onclick="$.table.search()"><i class="fa fa-search"></i> 搜索</a> @@ -106,8 +84,7 @@ <input type="text" name="receiptCompanyCode" id="receiptCompanyCode"> <input type="hidden" name="receiptCompanyId" id="receiptCompanyId"> </li> - <li>上游系统单号:<input type="text" name="receiptSourceCode" id="receiptSourceCode"></li> - <li>上游平台:<input type="text" name="receiptSourcePlatform" id="receiptSourcePlatform"></li> + <li>上游系统单号:<input type="text" name="receiptReferCode" id="receiptReferCode"></li> <li>入库单类型:<input type="text" name="receiptType" id = "receiptType"></li> <li>总数量:<input type="text" name="receiptTotalQty" id="receiptTotalQty"></li> <li>总行数:<input type="text" name="receiptTotalLines" id="receiptTotalLines"></li> @@ -136,7 +113,7 @@ <div class="tab-pane fade" id="tabOther"> <div class="select-list"> <ul> - <li>备注:<input type="text" name="receiptRemark" id="receiptRemark"></li> + <li>备注:<input type="text" name="receiptNote" id="receiptNote"></li> <li>扩展属性1:<input type="text" name="receiptUserDef1" id="receiptUserDef1"></li> <li>扩展属性2:<input type="text" name="receiptUserDef2" id="receiptUserDef2"></li> <li>扩展属性3:<input type="text" name="receiptUserDef3" id="receiptUserDef3"></li> @@ -177,7 +154,7 @@ var prefix = ctx + "admin/receiptHeader"; var detailPrefix = ctx + "admin/receiptDetail"; var datas = [[${@dict.getType('sys_normal_disable')}]]; - var receiptTypes = [[${@dict.getType('receiptType')}]]; + var receiptTypes = [[${@receiptTypeService.getType()}]]; var receiptHeaderStatus = [[${@dict.getType('receiptHeaderStatus')}]]; var uploadStatus = [[${@dict.getType('uploadStatus')}]]; var inventoryStatus = [[${@dict.getType('inventoryStatus')}]]; @@ -226,11 +203,6 @@ field : 'warehouseCode', title : '仓库', }, - { - field : 'uWarehouseCode', - title : 'U8仓库', - sortable:true - }, { field : 'companyId', title : '货主ID', @@ -250,16 +222,11 @@ } }, { - field : 'sourceCode', + field : 'referCode', title : '上游单号', sortable:true }, { - field : 'sourcePlatform', - title : '上游平台', - visible:false - }, - { field : 'supplierId', title : '供应商id', visible:false @@ -297,18 +264,6 @@ visible:false }, { - field : 'uploadTime', - title : '上传时间', - visible:false, - sortable:true - }, - { - field : 'appointmentTime', - title : '入库预约时间', - visible:false, - sortable:true - }, - { field : 'firstStatus', title : '头状态', align: 'center', @@ -343,14 +298,6 @@ title : '更新用户' }, { - field : 'enable', - title : '是否有效', - align: 'center', - formatter: function(value, row, index) { - return $.table.selectDictLabel(datas, value); - } - }, - { field : 'userDef1', title : '自定义字段1', visible: false @@ -418,81 +365,159 @@ title : '入库单号', visible:false }, - { - field : 'zoneCode', - title : '库区编码' - }, - { - field : 'materialCode', - title : '存货编码' - }, - { - field : 'materialName', - title : '物料名称' - }, - { - field : 'specification', - title : '规格' - }, - { - field : 'batch', - title : '批次' - }, - { - field : 'lot', - title : '批号' - }, - { - field : 'project', - title : '项目号' - }, - { - field : 'manufactureDate', - title : '生产日期' - }, - { - field : 'expirationDate', - title : '失效日期' - }, - { - field : 'inventoryStatus', - title : '库存状态', - formatter: function(value, row, index) { - return $.table.selectDictLabel(inventoryStatus, value); - }, - }, - { - field : 'qty', - title : '单据数量' - }, - { - field : 'qtyCompleted', - title : '已收数量' - }, - { - field : 'status', - title : '单据状态', - align: 'center', - formatter: function(value, row, index) { - return $.table.selectDictLabel(receiptHeaderStatus, value); - } - }, - { - field : 'created', - title : '创建时间' - }, - { - field : 'createdBy', - title : '创建用户' - }, - { - field : 'lastUpdated', - title : '最后修改时间' - }, - { - field : 'lastUpdatedBy', - title : '更新用户' - }, + { + field : 'materialCode', + title : '物料编码' + }, + { + field : 'materialName', + title : '物料名称' + }, + { + field : 'materialSpec', + title : '物料规格' + }, + { + field : 'materialUnit', + title : '物料单位' + }, + { + field : 'supplierCode', + title : '供应商编码' + }, + { + field : 'batch', + title : '批次' + }, + { + field : 'lot', + title : '批号' , + visible:false + }, + { + field : 'qcCheck', + title : '是否质检', + align : "center", + formatter: function(value, row, index) { + var actions = []; + if (value == 0) { + actions.push("<span class='badge badge-info'>是</span>"); + } else { + actions.push("<span class='badge badge-info'>否</span>"); + } + return actions.join(''); + } + }, + { + field : 'projectNo', + title : '项目号' + }, + { + field : 'manufactureDate', + title : '生产日期' , + visible:false + }, + { + field : 'expirationDate', + title : '失效日期' , + visible:false + }, + { + field : 'agingDate', + title : '入库日期' , + visible:false + }, + { + field : 'totalQty', + title : '总数量' + }, + { + field : 'openQty', + title : '未收数量' + }, + { + field : 'referCode', + title : 'ERP单号', + visible : false + }, + { + field : 'referId', + title : 'ERP内部号', + visible : false + }, + { + field : 'referLineNum', + title : 'ERP行号', + visible : false + }, + { + field : 'locatingRule', + title : '定位规则' + }, + { + field : 'inventorySts', + title : '库存状态', + visible : false + }, + { + field : 'itemListPrice', + title : '标价' + }, + { + field : 'itemNetPrice', + title : '净价' + }, + { + field : 'price', + title : '单价' , + visible:false + }, + { + field : 'statusFlowCode', + title : '流程编码' + }, + { + field : 'isVirtualBom', + title : '是否虚拟套件', + align : "center", + formatter: function(value, row, index) { + return $.table.selectDictLabel(isVirtualBoms, value); + } + }, + { + field : 'created', + title : '创建时间' + }, + { + field : 'createdBy', + title : '创建用户', + visible:false + }, + { + field : 'lastUpdated', + title : '最后修改时间', + visible:false + }, + { + field : 'lastUpdatedBy', + title : '更新用户' , + visible:false + }, + { + field : 'userDef1', + title : '自定义字段1' , + visible:false + }, + { + field : 'userDef2', + title : '自定义字段2' , + visible:false + }, + { + field : 'userDef3', + title : '自定义字段3' , + visible:false + }, { title: '操作', align: 'center', @@ -540,8 +565,7 @@ receiptCode=value.data.code $('#receiptCompanyId').val(value.data.companyId); $('#receiptCompanyCode').val(value.data.companyCode); - $('#receiptSourceCode').val(value.data.sourceCode); - $('#receiptSourcePlatform').val(value.data.sourcePlatform); + $('#receiptReferCode').val(value.data.referCode); $('#receiptType').val(receiptTypes.filter(function (e) {return e.dictValue==value.data.type})[0].dictLabel); $('#receiptTotalQty').val(value.data.totalQty); $('#receiptTotalLines').val(value.data.totalLines); diff --git a/src/main/resources/templates/admin/shipmentHeader/shipmentHeader.html b/src/main/resources/templates/admin/shipmentHeader/shipmentHeader.html index 09aa7a1..d16e743 100644 --- a/src/main/resources/templates/admin/shipmentHeader/shipmentHeader.html +++ b/src/main/resources/templates/admin/shipmentHeader/shipmentHeader.html @@ -27,17 +27,20 @@ 出库单号:<input type="text" name="code"/> </li> <li> - 仓库:<input type="text" name="warehouseCode"/> - </li> - <li> <!--入库类型:<input type="text" name="sourceCode"/>--> - 出库类型:<select name="type" th:with="type=${@dict.getType('shipmentType')}"> + 出库类型:<select name="shipmentType" th:with="shipmentType=${@dict.getType('shipmentType')}"> <option value="">所有</option> - <option th:each="e : ${type}" th:text="${e['dictLabel']}" + <option th:each="e : ${shipmentType}" th:text="${e['dictLabel']}" th:value="${e['dictValue']}"></option> </select> </li> <li> + 上游单号:<input type="text" name="referCode"/> + </li> + <li> + 上游订单类型:<input type="text" name="referCodeType"/> + </li> + <li> 客户编码:<input type="text" name="sourceCode"/> </li> <li> @@ -58,24 +61,13 @@ th:value="${e['dictValue']}"></option> </select> </li> - <li> - 上游单号:<input type="text" name="sourceCode"/> - </li> - <li> - u8仓库:<select name="uWarehouseCode" th:with="warehouse=${@warehouse.selectList()}"> - <option value="">所有</option> - <option th:each="e : ${warehouse}" th:text="${e['uWarehouseName']}" th:value="${e['uWarehouseCode']}"></option></select> - </li> - <li> - 上游平台:<input type="text" name="sourcePlatform"/> - </li> <li class="time"> <label>创建时间: </label> <input type="text" class="time-input" id="startTime" placeholder="开始时间" - name="params[createdBegin]"/> + name="createdBegin"/> <span>-</span> <input type="text" class="time-input" id="endTime" placeholder="结束时间" - name="params[createdEnd]"/> + name="createdEnd"/> </li> <li> <a class="btn btn-primary btn-rounded btn-sm" onclick="$.table.search()"><i @@ -110,8 +102,8 @@ <li>仓库编码:<input type="text" name="shipmentWarehouseCode" id="shipmentWarehouseCode"></li> <input type="hidden" name="shipmentCompanyId" id="shipmentCompanyId"> <li>货主:<input type="text" name="shipmentCompanyCode" id="shipmentCompanyCode"></li> - <li>上游系统单号:<input type="text" name="shipmentSourceCode" id="shipmentSourceCode"></li> - <li>上游平台:<input type="text" name="shipmentSourcePlatform" id="shipmentSourcePlatform"></li> + <li>上游订单号:<input type="text" name="shipmentSourceCode" id="shipmentSourceCode"></li> + <li>订单平台:<input type="text" name="shipmentSourcePlatform" id="shipmentSourcePlatform"></li> <li>出库单类型:<input type="text" name="shipmentType" id = "shipmentType"></li> <li>总数量:<input type="text" name="shipmentTotalQty" id="shipmentTotalQty"></li> <li>总行数:<input type="text" name="shipmentTotalLines" id="shipmentTotalLines"></li> @@ -123,16 +115,14 @@ <div class="tab-pane fade" id="tabCustomer"> <div class="select-list"> <ul> - <li>客户编码:<input type="text" name="shipmentShipTo" id="shipmentShipTo"></li> - <li>发货预约时间:<input type="text" name="shipmentAppointmentTime" id="shipmentAppointmentTime"></li> + <li>客户编码:<input type="text" name="shipmentShipTo" id="shipmentShipTo"></li> </ul> </div> </div> <div class="tab-pane fade" id="tabExcute"> <div class="select-list"> <ul> - <li>优先级:<input type="text" name="shipmentPriority" id="shipmentPriority"></li> - <li>发货站台:<input type="text" name="shipmentStation" id="shipmentStation"></li> + < <li>优先级:<input type="text" name="shipmentPriority" id="shipmentPriority"></li> <li></li> </ul> </div> @@ -140,7 +130,6 @@ <div class="tab-pane fade" id="tabOther"> <div class="select-list"> <ul> - <li>备注:<input type="text" name="shipmentRemark" id="shipmentRemark"></li> <li>扩展属性1:<input type="text" name="shipmentUserDef1" id="shipmentUserDef1"></li> <li>扩展属性2:<input type="text" name="shipmentUserDef2" id="shipmentUserDef2"></li> <li>扩展属性3:<input type="text" name="shipmentUserDef3" id="shipmentUserDef3"></li> @@ -151,14 +140,10 @@ <div class="tab-pane fade" id="tabSystem"> <div class="select-list"> <ul> - <li>上传备注:<input type="text" name="shipmentUploadremark" id="shipmentUploadremark"></li> - <li>上传时间:<input type="text" name="shipmentUploadTime" id="shipmentUploadTime"></li> - <li>上传状态:<input type="text" name="shipmentUploadStatus" id="shipmentUploadStatus"></li> <li>创建时间:<input type="text" name="shipmentCreated" id="shipmentCreated"></li> <li>创建用户:<input type="text" name="shipmentCreatedBy" id="shipmentCreatedBy"></li> <li>最后修改时间:<input type="text" name="shipmentLastUpdated" id="shipmentLastUpdated"></li> <li>更新用户:<input type="text" name=" shipmentLastUpdatedBy" id="shipmentLastUpdatedBy"></li> - <li>是否有效:<input type="text" name="shipmentEnable" id="shipmentEnable"></li> <li>是否删除:<input type="text" name="shipmentDeleted" id="shipmentDeleted"></li> </ul> </div> @@ -229,38 +214,23 @@ sortable:true }, { - field: 'warehouseCode', - title: '仓库', - sortable:true - }, - { - field: 'companyId', - title: '货主标识', - visible:false - }, - { field: 'companyCode', title: '货主', sortable:true }, { - field: 'sourceCode', - title: '上游单号', + field: 'referCode', + title: '上游订单号', sortable:true }, { - field: 'sourcePlatform', - title: '上游平台', + field: 'referCodeType', + title: '上游订单内部号', sortable:true, visible:false }, { - field : 'uWarehouseCode', - title : 'U8仓库', - sortable:true - }, - { - field: 'type', + field: 'shipmentType', title: '类型', align: 'center', formatter: function(value, row, index) { @@ -270,7 +240,7 @@ }, { - field: 'shipTo', + field: 'customerCode', title: '客户编码', sortable:true }, @@ -279,12 +249,8 @@ title: '优先级' }, { - field: 'station', - title: '发货站台', - align: 'center', - formatter: function(value, row, index) { - return $.table.selectDictLabel(stations, value); - }, + field: 'route', + title: '路线', sortable:true }, { @@ -296,25 +262,6 @@ title: '总行数' }, { - field: 'remark', - title: '备注' - }, - { - field: 'uploadremark', - title: '上传备注', - visible:false - }, - { - field: 'uploadTime', - title: '上传时间', - visible:false - }, - { - field: 'appointmentTime', - title: '发货预约时间', - visible:false - }, - { field: 'firstStatus', title: '头状态', formatter: function(value, row, index) { @@ -331,11 +278,6 @@ sortable:true }, { - field: 'uploadStatus', - title: '上传状态', - visible:false - }, - { field: 'created', title: '创建时间', sortable: true @@ -355,13 +297,6 @@ visible:false }, { - field: 'enable', - title: '是否有效', - formatter: function(value, row, index) { - return $.table.selectDictLabel(datas, value); - } - }, - { title: '操作', align: 'center', formatter: function (value, row, index) { @@ -396,15 +331,6 @@ title: '明细id' }, { - field: 'zoneCode', - title: '库区' - }, - - /* { - field: 'shipmentId', - title: '出库单Id' - },*/ - { field: 'materialCode', title: '存货编码' }, @@ -413,12 +339,13 @@ title: '物料名称' }, { - field: 'specification', + field: 'materialSpec', title: '物料规格' }, { field: 'batch', - title: '批次' + title: '批次', + visible:false }, { field: 'lot', @@ -426,17 +353,17 @@ visible:false }, { - field: 'project', + field: 'projectNo', title: '项目号' }, - { + /*{ field: 'status', title: '明细状态', formatter: function(value, row, index) { return $.table.selectDictLabel(shipmentHeaderStatus, value); }, visible:true - }, + },*/ { field: 'manufactureDate', title: '生产日期', @@ -450,37 +377,40 @@ { field: 'agingDate', title: '入库日期', - sortable: true + visible:false }, { - field: 'inventoryStatus', + field: 'inventorySts', title: '库存状态', formatter: function(value, row, index) { return $.table.selectDictLabel(inventoryStatus, value); }, }, { - field: 'qty', + field: 'shipQty', title: '发货数量' }, { - field: 'qtyCompleted', + field: 'requestQty', title: '已出数量' }, { + field : 'inventoryQty', + title : '库存数量' + }, + { + field : 'materialUnit', + title : '物料单位' + }, + { field : 'status', - title : '单据状态', + title : '明细状态', align: 'center', formatter: function(value, row, index) { return $.table.selectDictLabel(shipmentHeaderStatus, value); } }, { - field: 'price', - title: '物料单价', - visible:false - }, - { field: 'created', title: '创建时间', }, @@ -541,36 +471,21 @@ success:function (value) { $('#shipmentId').val(value.data.id); $('#shipmentCode').val(value.data.code); - $('#shipmentWarehouseId').val(value.data.warehouseId); $('#shipmentWarehouseCode').val(value.data.warehouseCode); - $('#shipmentCompanyId').val(value.data.companyId); $('#shipmentCompanyCode').val(value.data.companyCode); - $('#shipmentSourceCode').val(value.data.sourceCode); - $('#shipmentSourcePlatform').val(value.data.sourcePlatform); - $('#shipmentType').val(shipmentTypes.filter(function(a){return a.dictValue==value.data.type})[0].dictLabel); - $('#shipmentShipTo').val(value.data.shipTo); + $('#shipmentSourceCode').val(value.data.referCode); + $('#shipmentSourcePlatform').val(value.data.referPlatform); + $('#shipmentType').val(shipmentTypes.filter(function(a){return a.dictValue==value.data.shipmentType})[0].dictLabel); + $('#shipmentShipTo').val(value.data.customerCode); $('#shipmentPriority').val(value.data.priority); - $('#shipmentStation').val(value.data.station); $('#shipmentTotalQty').val(value.data.totalQty); $('#shipmentTotalLines').val(value.data.totalLines); - $('#shipmentRemark').val(value.data.remark); - $('#shipmentUploadremark').val(value.data.uploadremark); - $('#shipmentUploadTime').val(value.data.uploadTime); - $('#shipmentAppointmentTime').val(value.data.appointmentTime); $('#shipmentFirstStatus').val(shipmentHeaderStatus.filter(function(a){return a.dictValue==value.data.firstStatus})[0].dictLabel); $('#shipmentLastStatus').val(shipmentHeaderStatus.filter(function(a){return a.dictValue==value.data.lastStatus})[0].dictLabel); - $('#shipmentUploadStatus').val(uploadStatus.filter(function (a) {return a.dictValue==value.data.uploadStatus})[0].dictLabel); $('#shipmentCreated').val(value.data.created); $('#shipmentCreatedBy').val(value.data.createdBy); $('#shipmentLastUpdated').val(value.data.lastUpdated); $('#shipmentLastUpdatedBy').val(value.data.lastUpdatedBy); - //$('#shipmentEnable').val(value.data.enable); - if(value.data.enable==true){ - $('#shipmentEnable').val('是') - }else{ - $('#shipmentEnable').val('否') - }; - //$('#shipmentDeleted').val(value.data.deleted); if(value.data.deleted==false){ $('#shipmentDeleted').val('否') }else{ diff --git a/src/main/resources/templates/admin/task/task.html b/src/main/resources/templates/admin/task/task.html index 8aa0073..64289ba 100644 --- a/src/main/resources/templates/admin/task/task.html +++ b/src/main/resources/templates/admin/task/task.html @@ -27,56 +27,15 @@ <li> 任务id:<input type="text" name="id"/> </li> - <!--<li>--> - <!--单据编码:<input type="text" name="billCode"/>--> - <!--</li>--> <li> 容器编号:<input type="text" name="containerCode"/> </li> <li> - <!--入库类型:<input type="text" name="sourceCode"/>--> - 任务类型:<select name="type" th:with="type=${@dict.getType('taskType')}"> - <option value="">所有</option> - <option th:each="e : ${type}" th:text="${e['dictLabel']}" th:value="${e['dictValue']}"></option></select> + 源库位编号:<input type="text" name="fromLocation"/> </li> - - <li class="time" style="height: 30px"> - <label>创建时间: </label> - <input type="text" class="time-input" id="startTime" placeholder="开始时间" name="params[createdBegin]"/> - <span>-</span> - <input type="text" class="time-input" id="endTime" placeholder="结束时间" name="params[createdEnd]"/> - </li> - - <li> - <!--头 状 态:<input type="text" name="firstStatus"/>--> - 头 状 态:<select name="firstStatus" th:with="firstStatus=${@dict.getType('taskStatus')}"> - <option value="">所有</option> - <option th:each="e : ${firstStatus}" th:text="${e['dictLabel']}" th:value="${e['dictValue']}"></option></select> - </li> - <li> - <!--尾 状 态:<input type="text" name="lastStatus"/>--> - 尾 状 态:<select name="lastStatus" th:with="lastStatus=${@dict.getType('taskStatus')}"> - <option value="">所有</option> - <option th:each="e : ${lastStatus}" th:text="${e['dictLabel']}" th:value="${e['dictValue']}"></option></select> - </li> - <!--<li> - 出入库站台:<select name="station" th:with="stations = ${@dict.getType('station')}"> - <option value="">所有</option> - <option th:each="e : ${stations}" th:text="${e['dictLabel']}" th:value="${e['dictValue']}"></option></select> - </li>--> <li> - 巷道:<input type="text" name="roadway"/> + 目的库位编号:<input type="text" name="toLocation"/> </li> - <li> - 库区:<input type="text" name="zoneCode"/> - </li> - <li> - 来源库位:<input type="text" name="sourceLocation"/> - </li> - <li> - 目的库位:<input type="text" name="destinationLocation"/> - </li> - <li> <a class="btn btn-primary btn-rounded btn-sm" onclick="$.table.search()"><i class="fa fa-search"></i> 搜索</a> <!--<a class="btn btn-success btn-rounded btn-sm" onclick="$.table.exportExcel()" shiro:hasPermission="receipt:receiptHeader:export"><i class="fa fa-download"></i> 导出</a>--> @@ -136,128 +95,90 @@ columns: [{ checkbox: true }, - { - field : 'id', - title : '任务id' , - sortable: true - }, - { - field : 'companyId', - title : '货主id' , - visible:false - }, - /*{ - field : 'billCode', - title : '单据编码' , - },*/ - { - field : 'priority', - title : '优先级' - }, - { - field : 'type', - title : '任务类型' , - align: 'center', - visible:true, - formatter: function(value, row, index) { - return $.table.selectDictLabel(taskTypes, value); - } + { + field : 'id', + title : '任务id' , + sortable: true + }, + { + field : 'companyCode', + title : '货主编码', + visible:true + }, + { + field : 'taskType', + title : '任务类型' , + align: 'center', + visible:true, + formatter: function(value, row, index) { + return $.table.selectDictLabel(taskTypes, value); + } - }, - { - field : 'roadway', - title : '巷道', - visible:true - }, - { - field : 'station', - title : '出入库站台' , - align: 'center', - visible:true, - formatter: function(value, row, index) { - return $.table.selectDictLabel(stations, value); - }, - visible:false - }, - { - field : 'containerCode', - title : '容器编码' , - sortable: true - }, - { - field : 'sourceLocation', - title : '来源库位', - sortable: true - }, - { - field : 'zoneCode', - title : '库区', - sortable: true - }, - { - field : 'destinationLocation', - title : '目的库位' , - sortable: true - }, - { - field : 'firstStatus', - title : '头状态' , - align: 'center', - formatter: function(value, row, index) { - return $.table.selectDictLabel(taskStatus, value); - } - }, - { - field : 'lastStatus', - title : '尾状态' , - align: 'center', - formatter: function(value, row, index) { - return $.table.selectDictLabel(taskStatus, value); - } - }, - { - field : 'created', - title : '生成时间', - sortable: true - }, - { - field : 'createdBy', - title : '任务下达人' - }, - { - field : 'beginTime', - title : '任务下达时间' , - visible:false - }, - { - field : 'lastUpdated', - title : '修改时间' , - sortable: true, - }, - { - field : 'endTime', - title : '任务完成时间', - sortable: true - }, - { - field : 'lastUpdatedBy', - title : '更新用户' - }, - { - field : 'userDef1', - title : '自定义字段1' , - visible:false - }, - { - field : 'userDef2', - title : '自定义字段2' , - visible:false - }, - { - field : 'userDef3', - title : '自定义字段3' , - visible:false - }, + }, + { + field : 'fromLocation', + title : '源库位号', + visible:true + }, + + { + field : 'toLocation', + title : '目的库位号', + visible:true + }, + { + field : 'containerCode', + title : '容器号' , + sortable: true + }, + { + field : 'exceptionCode', + title : '异常原因', + sortable: true + }, + + { + field : 'startPickDateTime', + title : '开始拣货时间', + sortable: true + }, + { + field : 'endPickDateTime', + title : '截止拣货时间' + }, + { + field : 'created', + title : '生成时间', + sortable: true + }, + { + field : 'createdBy', + title : '任务下达人' + }, + { + field : 'lastUpdated', + title : '修改时间' , + sortable: true, + }, + { + field : 'lastUpdatedBy', + title : '更新用户' + }, + { + field : 'userDef1', + title : '自定义字段1' , + visible:false + }, + { + field : 'userDef2', + title : '自定义字段2' , + visible:false + }, + { + field : 'userDef3', + title : '自定义字段3' , + visible:false + }, { title: '操作', align: 'center', @@ -296,81 +217,81 @@ columns: [{ checkbox: true }, - { - field : 'id', - title : '明细Id' - }, - { - field : 'taskId', - title : '任务Id', - sortable: true - }, - { - field : 'billCode', - title : '单据编码', - }, - { - field : 'allocationId', - title : '容器物料表ID' , - sortable: true - }, - { - field : 'materialCode', - title : '存货编码', - sortable: true - }, - { - field : 'materialName', - title : '物料名称', - sortable:true - }, - { - field : 'project', - title : '项目号', - }, - { - field : 'containerCode', - title : '容器编码', - sortable:true - }, - { - field : 'sourceLocation', - title : '源库位', - sortable:true - }, - { - field : 'destinationLocation', - title : '目的库位', - sortable:true - }, - { - field : 'qty', - title : '数量' - }, - { - field : 'status', - title : '子任务状态', - align: 'center', - formatter: function(value, row, index) { - return $.table.selectDictLabel(taskDetailStatus, value); - } - }, - { - field : 'endTime', - title : '子任务完成时间' , - visible:false, - sortable:true - }, - { - field : 'lastUpdated', - title : '最后修改时间' , - visible:false, - sortable:true - }, - { - field : 'lastUpdatedBy', - title : '更新用户' - }, + { + field : 'id', + title : '明细id' + }, + { + field : 'billCode', + title : '单据编码', + }, + { + field : 'taskId', + title : '任务标识', + sortable: true + }, + { + field : 'allocationId', + title : '容器物料表id' , + sortable: true + }, + { + field : 'materialCode', + title : '存货编码', + sortable: true + }, + { + field : 'materialName', + title : '物料名称', + sortable:true + }, + { + field : 'containerCode', + title : '容器编码', + sortable:true + }, + { + field : 'fromLocation', + title : '源库位', + sortable:true + }, + { + field : 'toLocation', + title : '目的库位', + sortable:true + }, + { + field : 'qty', + title : '数量' + }, + { + field : 'project', + title : '项目号' + }, + { + field : 'status', + title : '子任务状态', + align: 'center', + formatter: function(value, row, index) { + return $.table.selectDictLabel(taskDetailStatus, value); + } + }, + { + field : 'endTime', + title : '子任务完成时间' , + visible:false, + sortable:true + }, + { + field : 'lastUpdated', + title : '最后修改时间' , + visible:false, + sortable:true + }, + { + field : 'lastUpdatedBy', + title : '更新用户' + }, /*{ title: '操作', align: 'center', diff --git a/src/main/resources/templates/administration/alarmFlow/alarmFlow.html b/src/main/resources/templates/administration/alarmFlow/alarmFlow.html index f1248d0..5a908f0 100644 --- a/src/main/resources/templates/administration/alarmFlow/alarmFlow.html +++ b/src/main/resources/templates/administration/alarmFlow/alarmFlow.html @@ -23,9 +23,9 @@ <!--</li>--> <li class="time"> <label>创建时间: </label> - <input type="text" class="time-input" id="startTime" placeholder="开始时间" name="params[createdBegin]"/> + <input type="text" class="time-input" id="startTime" placeholder="开始时间" name="createdBegin"/> <span>-</span> - <input type="text" class="time-input" id="endTime" placeholder="结束时间" name="params[createdEnd]"/> + <input type="text" class="time-input" id="endTime" placeholder="结束时间" name="createdEnd"/> </li> <li> <a class="btn btn-primary btn-rounded btn-sm" onclick="$.table.search()"><i class="fa fa-search"></i> 搜索</a> diff --git a/src/main/resources/templates/administration/alarmType/alarmType.html b/src/main/resources/templates/administration/alarmType/alarmType.html index 69fd8e8..0c4f608 100644 --- a/src/main/resources/templates/administration/alarmType/alarmType.html +++ b/src/main/resources/templates/administration/alarmType/alarmType.html @@ -23,9 +23,9 @@ <!--</li>--> <li class="time"> <label>创建时间: </label> - <input type="text" class="time-input" id="startTime" placeholder="开始时间" name="params[createdBegin]"/> + <input type="text" class="time-input" id="startTime" placeholder="开始时间" name="createdBegin"/> <span>-</span> - <input type="text" class="time-input" id="endTime" placeholder="结束时间" name="params[createdEnd]"/> + <input type="text" class="time-input" id="endTime" placeholder="结束时间" name="createdEnd"/> </li> <li> <a class="btn btn-primary btn-rounded btn-sm" onclick="$.table.search()"><i class="fa fa-search"></i> 搜索</a> diff --git a/src/main/resources/templates/administration/sendMail/sendMail.html b/src/main/resources/templates/administration/sendMail/sendMail.html index 08d2045..79f6f04 100644 --- a/src/main/resources/templates/administration/sendMail/sendMail.html +++ b/src/main/resources/templates/administration/sendMail/sendMail.html @@ -23,9 +23,9 @@ <!--</li>--> <li class="time"> <label>创建时间: </label> - <input type="text" class="time-input" id="startTime" placeholder="开始时间" name="params[createdBegin]"/> + <input type="text" class="time-input" id="startTime" placeholder="开始时间" name="createdBegin"/> <span>-</span> - <input type="text" class="time-input" id="endTime" placeholder="结束时间" name="params[createdEnd]"/> + <input type="text" class="time-input" id="endTime" placeholder="结束时间" name="createdEnd"/> </li> <li> <a class="btn btn-primary btn-rounded btn-sm" onclick="$.table.search()"><i class="fa fa-search"></i> 搜索</a> diff --git a/src/main/resources/templates/check/checkHeader/checkHeader.html b/src/main/resources/templates/check/checkHeader/checkHeader.html index dcf6346..ce05da2 100644 --- a/src/main/resources/templates/check/checkHeader/checkHeader.html +++ b/src/main/resources/templates/check/checkHeader/checkHeader.html @@ -32,9 +32,9 @@ </li> <li class="time"> <label>创建时间: </label> - <input type="text" class="time-input" id="startCreatedTime" placeholder="开始时间" name="params[createdBegin]"/> + <input type="text" class="time-input" id="startCreatedTime" placeholder="开始时间" name="createdBegin"/> <span>-</span> - <input type="text" class="time-input" id="endCreatedTime" placeholder="结束时间" name="params[createdEnd]"/> + <input type="text" class="time-input" id="endCreatedTime" placeholder="结束时间" name="createdEnd"/> </li> <li> <a class="btn btn-primary btn-rounded btn-sm" onclick="$.table.search()"><i class="fa fa-search"></i> 搜索</a> diff --git a/src/main/resources/templates/check/checkingRegister/checkingRegister.html b/src/main/resources/templates/check/checkingRegister/checkingRegister.html index 22e3298..9f9105c 100644 --- a/src/main/resources/templates/check/checkingRegister/checkingRegister.html +++ b/src/main/resources/templates/check/checkingRegister/checkingRegister.html @@ -32,9 +32,9 @@ </li> <li class="time"> <label>创建时间: </label> - <input type="text" class="time-input" id="startTime" placeholder="开始时间" name="params[createdBegin]"/> + <input type="text" class="time-input" id="startTime" placeholder="开始时间" name="createdBegin"/> <span>-</span> - <input type="text" class="time-input" id="endTime" placeholder="结束时间" name="params[createdEnd]"/> + <input type="text" class="time-input" id="endTime" placeholder="结束时间" name="createdEnd"/> </li> <li> <a class="btn btn-primary btn-rounded btn-sm" onclick="$.table.search()"><i class="fa fa-search"></i> 搜索</a> diff --git a/src/main/resources/templates/config/bomHeader/bomHeader.html b/src/main/resources/templates/config/bomHeader/bomHeader.html index 1f39f7a..9132019 100644 --- a/src/main/resources/templates/config/bomHeader/bomHeader.html +++ b/src/main/resources/templates/config/bomHeader/bomHeader.html @@ -26,10 +26,10 @@ <li class="time"> <label>创建时间: </label> <input type="text" class="time-input" id="startTime" placeholder="开始时间" - name="params[createdBegin]"/> + name="createdBegin"/> <span>-</span> <input type="text" class="time-input" id="endTime" placeholder="结束时间" - name="params[createdEnd]"/> + name="createdEnd"/> </li> <li> <a class="btn btn-primary btn-rounded btn-sm" onclick="$.table.search()"><i diff --git a/src/main/resources/templates/config/carrier/add.html b/src/main/resources/templates/config/carrier/add.html index 2444b92..76af967 100644 --- a/src/main/resources/templates/config/carrier/add.html +++ b/src/main/resources/templates/config/carrier/add.html @@ -4,7 +4,7 @@ <head th:include="include :: header"></head> <body class="white-bg"> <div class="wrapper wrapper-content animated fadeInRight ibox-content"> - <form class="form-horizontal m" id="form-company-add"> + <form class="form-horizontal m" id="form-carrier-add"> <div class="form-group"> <label class="col-sm-3 control-label">编码:</label> <div class="col-sm-8"> @@ -17,14 +17,14 @@ <input id="name" name="name" class="form-control" type="text"> </div> </div> - <div class="form-group"> - <label class="col-sm-3 control-label">仓库:</label> - <div class="col-sm-8"> - <label th:each="warehouse:${warehouseList}" class="checkbox-inline i-checks"> - <input name="warehouseCode" type="checkbox" th:value="${warehouse.value}" th:text=" ${warehouse.name}" th:disabled="${warehouse.enable == false} "> - </label> - </div> - </div> + <!--<div class="form-group">--> + <!--<label class="col-sm-3 control-label">仓库:</label>--> + <!--<div class="col-sm-8">--> + <!--<label th:each="warehouse:${warehouseList}" class="checkbox-inline i-checks">--> + <!--<input name="warehouseCode" type="checkbox" th:value="${warehouse.value}" th:text=" ${warehouse.name}" th:disabled="${warehouse.enable == false} ">--> + <!--</label>--> + <!--</div>--> + <!--</div>--> <div class="form-group"> <label class="col-sm-3 control-label">运单获取地址url:</label> <div class="col-sm-8"> @@ -67,8 +67,8 @@ </div> <div th:include="include::footer"></div> <script type="text/javascript"> - var prefix = ctx + "config/company" - $("#form-company-add").validate({ + var prefix = ctx + "config/carrier" + $("#form-carrier-add").validate({ rules:{ code:{ required:true @@ -78,8 +78,7 @@ }, }, submitHandler: function() { - var tableValue = $("#form-bomHeader-add").serialize(); - tableValue = formValueReplace(tableValue, "warehouseCode", $.form.selectCheckeds("warehouseCode")); + var tableValue = $("#form-carrier-add").serialize(); $.operate.save(prefix + "/add", tableValue); } }); diff --git a/src/main/resources/templates/config/carrier/carrier.html b/src/main/resources/templates/config/carrier/carrier.html index 4a43f39..1f83f25 100644 --- a/src/main/resources/templates/config/carrier/carrier.html +++ b/src/main/resources/templates/config/carrier/carrier.html @@ -15,12 +15,12 @@ <li> 名称:<input type="text" name="name"/> </li> - <li class="time"> - <label>创建时间: </label> - <input type="text" class="time-input" id="startTime" placeholder="开始时间" name="params[createdBegin]"/> - <span>-</span> - <input type="text" class="time-input" id="endTime" placeholder="结束时间" name="params[createdEnd]"/> - </li> + <!--<li class="time">--> + <!--<label>创建时间: </label>--> + <!--<input type="text" class="time-input" id="startTime" placeholder="开始时间" name="params[createdBegin]"/>--> + <!--<span>-</span>--> + <!--<input type="text" class="time-input" id="endTime" placeholder="结束时间" name="params[createdEnd]"/>--> + <!--</li>--> <li> <a class="btn btn-primary btn-rounded btn-sm" onclick="$.table.search()"><i class="fa fa-search"></i> 搜索</a> <a class="btn btn-warning btn-rounded btn-sm" onclick="$.form.reset('company-form')"><i class="fa fa-refresh"></i> 重置</a> diff --git a/src/main/resources/templates/config/company/company.html b/src/main/resources/templates/config/company/company.html index b02fb65..bd25445 100644 --- a/src/main/resources/templates/config/company/company.html +++ b/src/main/resources/templates/config/company/company.html @@ -15,12 +15,12 @@ <li> 名称:<input type="text" name="name"/> </li> - <li class="time"> - <label>创建时间: </label> - <input type="text" class="time-input" id="startTime" placeholder="开始时间" name="params[createdBegin]"/> - <span>-</span> - <input type="text" class="time-input" id="endTime" placeholder="结束时间" name="params[createdEnd]"/> - </li> + <!--<li class="time">--> + <!--<label>创建时间: </label>--> + <!--<input type="text" class="time-input" id="startTime" placeholder="开始时间" name="params[createdBegin]"/>--> + <!--<span>-</span>--> + <!--<input type="text" class="time-input" id="endTime" placeholder="结束时间" name="params[createdEnd]"/>--> + <!--</li>--> <li> <a class="btn btn-primary btn-rounded btn-sm" onclick="$.table.search()"><i class="fa fa-search"></i> 搜索</a> <a class="btn btn-warning btn-rounded btn-sm" onclick="$.form.reset('company-form')"><i class="fa fa-refresh"></i> 重置</a> diff --git a/src/main/resources/templates/config/company/edit.html b/src/main/resources/templates/config/company/edit.html index ea59aac..9e6bdf4 100644 --- a/src/main/resources/templates/config/company/edit.html +++ b/src/main/resources/templates/config/company/edit.html @@ -226,8 +226,7 @@ "mobile": $("input[name='mobile']").val(), "faxNum": $("input[name='faxNum']").val(), "email": $("input[name='email']").val(), - "enable" : $("input[name='enable']").is(':checked'), - "warehouseCode": $.form.selectCheckeds("warehouseCode") + }, async : false, error : function(request) { @@ -239,8 +238,7 @@ }); } }); - - function submitHandler() { + function submitHandler() { $.ajax({ cache : true, type : "POST", diff --git a/src/main/resources/templates/config/configValue/configValue.html b/src/main/resources/templates/config/configValue/configValue.html index dd36581..2b82bbf 100644 --- a/src/main/resources/templates/config/configValue/configValue.html +++ b/src/main/resources/templates/config/configValue/configValue.html @@ -15,12 +15,12 @@ <li> 类型:<input type="text" name="name"/> </li> - <li class="time"> - <label>创建时间: </label> - <input type="text" class="time-input" id="startTime" placeholder="开始时间" name="params[createdBegin]"/> - <span>-</span> - <input type="text" class="time-input" id="endTime" placeholder="结束时间" name="params[createdEnd]"/> - </li> + <!--<li class="time">--> + <!--<label>创建时间: </label>--> + <!--<input type="text" class="time-input" id="startTime" placeholder="开始时间" name="params[createdBegin]"/>--> + <!--<span>-</span>--> + <!--<input type="text" class="time-input" id="endTime" placeholder="结束时间" name="params[createdEnd]"/>--> + <!--</li>--> <li> <a class="btn btn-primary btn-rounded btn-sm" onclick="$.table.search()"><i class="fa fa-search"></i> 搜索</a> <a class="btn btn-warning btn-rounded btn-sm" onclick="$.form.reset('company-form')"><i class="fa fa-refresh"></i> 重置</a> diff --git a/src/main/resources/templates/config/configWarning/configWarning.html b/src/main/resources/templates/config/configWarning/configWarning.html index 5ea4807..6c9b521 100644 --- a/src/main/resources/templates/config/configWarning/configWarning.html +++ b/src/main/resources/templates/config/configWarning/configWarning.html @@ -30,9 +30,9 @@ </li> <li class="time"> <label>创建时间: </label> - <input type="text" class="time-input" id="startTime" placeholder="开始时间" name="params[createdBegin]"/> + <input type="text" class="time-input" id="startTime" placeholder="开始时间" name="createdBegin"/> <span>-</span> - <input type="text" class="time-input" id="endTime" placeholder="结束时间" name="params[createdEnd]"/> + <input type="text" class="time-input" id="endTime" placeholder="结束时间" name="createdEnd"/> </li> <li> <a class="btn btn-primary btn-rounded btn-sm" onclick="$.table.search()"><i class="fa fa-search"></i> 搜索</a> diff --git a/src/main/resources/templates/config/container/container.html b/src/main/resources/templates/config/container/container.html index efb7bfc..79958b5 100644 --- a/src/main/resources/templates/config/container/container.html +++ b/src/main/resources/templates/config/container/container.html @@ -29,9 +29,9 @@ </li> <li class="time"> <label>创建时间: </label> - <input type="text" class="time-input" id="startTime" placeholder="开始时间" name="params[createdBegin]"/> + <input type="text" class="time-input" id="startTime" placeholder="开始时间" name="createdBegin"/> <span>-</span> - <input type="text" class="time-input" id="endTime" placeholder="结束时间" name="params[createdEnd]"/> + <input type="text" class="time-input" id="endTime" placeholder="结束时间" name="createdEnd"/> </li> <li> <a class="btn btn-primary btn-rounded btn-sm" onclick="$.table.search()"><i class="fa fa-search"></i> 搜索</a> @@ -50,7 +50,13 @@ <a class="btn btn-outline btn-danger btn-rounded" onclick="$.operate.batRemove()" shiro:hasPermission="config:container:remove"> <i class="fa fa-trash-o"></i> 删除 </a> + + <a class="btn btn-outline btn-success btn-rounded" onclick="print()" + shiro:hasPermission="inventory:inventoryTransaction:report"> + <i class="fa fa-plus"></i> 打印 + </a> </div> + <div class="col-sm-12 select-info"> <table id="bootstrap-table" data-mobile-responsive="true" class="table table-bordered table-hover"></table> @@ -193,6 +199,20 @@ }; $.table.init(options); }); + + function print() { + var rows=$("#bootstrap-table").bootstrapTable('getSelections'); + if (rows.length == 0) { + $.modal.alertWarning("请至少选择一条记录"); + return; + } + var ids = ""; + for(var i=0; i<rows.length; i++) { + ids = ids + rows[i].id + "," + } + let url=prefix+'/print/' + ids; + $.modal.open("打印",url); + } </script> </body> </html> \ No newline at end of file diff --git a/src/main/resources/templates/config/container/print.html b/src/main/resources/templates/config/container/print.html new file mode 100644 index 0000000..553327a --- /dev/null +++ b/src/main/resources/templates/config/container/print.html @@ -0,0 +1,132 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" + "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns:th="http://www.thymeleaf.org" xmlns:shiro="http://www.pollix.at/thymeleaf/shiro"> +<head> + <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> + <head th:include="include :: header"></head> + <title>库存交易明细</title> + <!--<link href="css/bootstrap.min.css" rel="stylesheet" />--> + <!--<link href="css/font-awesome.min.css" rel="stylesheet" />--> + <!--<!–[if IE]>--> + <!--<link href="css/font-awesome-ie7.min.css" rel="stylesheet" />--> + <!--<![endif]–>--> + <link href="css/bootstrap.min.css" rel="stylesheet" /> + <link href="css/font-awesome.min.css" rel="stylesheet" /> + <link href="css/font-awesome-ie7.min.css" rel="stylesheet" /> + <style type="text/css"> + body,ul,li{ + padding:0; + margin:0; + } + ul,li{ + list-style:none; + } + .table-bordered td,.table-bordered th{border:0px solid #000!important} + + .ewm_w ul{width:500px; margin:0 auto;} + .ewm_w li{width:500px;height:228px; padding:0px;margin:0px auto; display:inline-table;} + + .ewm_w{ + width:156px; + float:left; + padding-left:0px; + } + .r_two{ + padding-left:20px; + } + </style> +</head> + +<body> +<div class="container"> + <div class="row" style="text-align:right"><span class="hidden-print" style="padding-left:20px;"><button type="button" onClick="a()"><i class="fa fa-print"></i> 打印</button></span></div> + <div class="row" style="width:500px;padding:0px 0px; margin:0 auto"> + <div style="width: 312px; margin:0;padding:0;"> + <div th:each="row:${container}"> + <div class="ewm_w" > + <table style="height: 220px; margin:0;padding:0;" border="0" cellspacing="0" cellpadding="0" class="dy-report table table-bordered"> + <!--th:each="row:${container}">--> + <tbody> + <tr> + <td align="center"> + <img id="barcode" name="rotate" /> + <input th:value="${row.code}" id="code" type="hidden" name="code"/> + </td> + </tr> + </tbody> + </table> + </div> + <div class="ewm_w" > + <table style="height: 220px; margin:0;padding:0;" border="0" cellspacing="0" cellpadding="0" class="dy-report table table-bordered"> + <!--th:each="row:${container}">--> + <tbody> + <tr> + <td align="center"> + <img id="barcode" name="rotate" /> + <input th:value="${row.code}" id="code" type="hidden" name="code"/> + </td> + </tr> + </tbody> + </table> + </div> + </div> + </div> + </div> +</div> + +<div th:include="include :: footer"></div> +<style type="text/css"> + @media print { + .noprint { + display: none; + } + } +</style> +<script type="text/javascript" src="../../../js/jquery-1.4.4.min.js"></script> +<script type="text/javascript" src="../../../js/jquery.jqprint-0.3.js"></script> +<script type="text/javascript" src="../../../js/barcode/JsBarcode.all.js"></script> +<script type="text/javascript"> + var barcodeStyle = { + format: "CODE128",//选择要使用的条形码类型 + width:2,//设置条之间的宽度 + height:70,//高度 + displayValue:true,//是否在条形码下方显示文字 + // text:"456",//覆盖显示的文本 + // fontOptions:"bold italic",//使文字加粗体或变斜体 + font:"monospace",//设置文本的字体fantasy + textAlign:"center",//设置文本的水平对齐方式 + textPosition:"bottom",//设置文本的垂直位置 + textMargin:1,//设置条形码和文本之间的间距 + fontSize:17,//设置文本的大小 + background:"#ffffff",//设置条形码的背景 + lineColor:"#000000",//设置条和文本的颜色。 + margin:1//设置条形码周围的空白边距 + }; + function print_qrcode() { + $('.dy-report').each(function (i, item) { + var code= document.getElementsByName("code")[i].getAttribute("value"); + $(this).find('#barcode').JsBarcode( code, barcodeStyle); + document.getElementsByName("rotate")[i].style.transform = 'rotate('+90+'deg)'; + }); + } + print_qrcode(); +</script> + +<script type="text/javascript" src="../../../js/jquery-1.4.4.min.js"></script> +<script type="text/javascript" src="../../../js/jquery.jqprint-0.3.js"></script> +<script type="text/javascript"> + function a(){ + window.print(); + } +</script> + +</body> +</html> + + + + + + + + diff --git a/src/main/resources/templates/config/containerType/containerType.html b/src/main/resources/templates/config/containerType/containerType.html index 42bc496..2b66fea 100644 --- a/src/main/resources/templates/config/containerType/containerType.html +++ b/src/main/resources/templates/config/containerType/containerType.html @@ -21,12 +21,12 @@ <!--<option th:each="e : ${type}" th:text="${e['dictLabel']}" th:value="${e['dictValue']}"></option>--> <!--</select>--> <!--</li>--> - <li class="time"> - <label>创建时间: </label> - <input type="text" class="time-input" id="startTime" placeholder="开始时间" name="createdBegin"/> - <span>-</span> - <input type="text" class="time-input" id="endTime" placeholder="结束时间" name="createdEnd"/> - </li> + <!--<li class="time">--> + <!--<label>创建时间: </label>--> + <!--<input type="text" class="time-input" id="startTime" placeholder="开始时间" name="createdBegin"/>--> + <!--<span>-</span>--> + <!--<input type="text" class="time-input" id="endTime" placeholder="结束时间" name="createdEnd"/>--> + <!--</li>--> <li> <a class="btn btn-primary btn-rounded btn-sm" onclick="$.table.search()"><i class="fa fa-search"></i> 搜索</a> <a class="btn btn-warning btn-rounded btn-sm" onclick="$.form.reset('containerType-form')"><i class="fa fa-refresh"></i> 重置</a> diff --git a/src/main/resources/templates/config/customer/add.html b/src/main/resources/templates/config/customer/add.html index c4123a5..1823d94 100644 --- a/src/main/resources/templates/config/customer/add.html +++ b/src/main/resources/templates/config/customer/add.html @@ -18,15 +18,14 @@ </div> </div> <div class="form-group"> - <label class="col-sm-3 control-label">货主:</label> + <label class="col-sm-3 control-label">货主编码:</label> <div class="col-sm-8"> - <select id="companyCode" name="companyCode" class="form-control" th:with="list=${@companyService.getCode()}"> - <option value ="" code="">全部货主</option> - <option th:each="item : ${list}" th:text="${item['name']}" th:value="${item['id']}" th:attr = " code = ${item['code']}"></option> + <select id="companyCode" name="companyCode" class="form-control" th:with="companyList=${@companyService.selectCompanyByCurrentUserId()}"> + <option th:each="company : ${companyList}" th:text="${company['name']}" th:value="${company['code']}"></option> </select> </div> </div> - <div class="form-group"> + <div class="form-group"> <label class="col-sm-3 control-label">名称:</label> <div class="col-sm-8"> <input id="name" name="name" class="form-control" type="text"> @@ -170,44 +169,13 @@ email:true, }, companyCode:{ - + required:true, } }, submitHandler: function(form) { - $.ajax({ - cache : true, - type : "POST", - url : prefix + "/add", - data : { - "code": $("input[name='code']").val(), - "shipToCode" : $("input[name='shipToCode']").val(), - "name": $("input[name='name']").val(), - "companyCode" : $("#companyCode").find("option:selected").attr("code"), - "address1": $("input[name='address1']").val(), - "address2": $("input[name='address2']").val(), - "city": $("input[name='city']").val(), - "province": $("input[name='province']").val(), - "country": $("input[name='country']").val(), - "postalCode": $("input[name='postalCode']").val(), - "parent": $("input[name='parent']").val(), - "attentionTo": $("input[name='attentionTo']").val(), - "phoneNum": $("input[name='phoneNum']").val(), - "mobile": $("input[name='mobile']").val(), - "faxNum": $("input[name='faxNum']").val(), - "email": $("input[name='email']").val(), - "enable" : $("input[name='enable']").is(':checked'), - // "userDef1": $("input[name='userDef1']").val(), - // "userDef2": $("input[name='userDef2']").val(), - // "userDef3": $("input[name='userDef3']").val(), - }, - async : false, - error : function(request) { - $.modal.alertError("请求失败!"); - }, - success : function(data) { - $.operate.saveSuccess(data); - } - }); + var tableValue = $("#form-customer-add").serialize(); + tableValue = formValueReplace(tableValue, "companyCode", $("#companyCode option:selected").val()); + $.operate.save(prefix + "/add", tableValue); } }); </script> diff --git a/src/main/resources/templates/config/customer/customer.html b/src/main/resources/templates/config/customer/customer.html index f84be52..660504f 100644 --- a/src/main/resources/templates/config/customer/customer.html +++ b/src/main/resources/templates/config/customer/customer.html @@ -15,12 +15,12 @@ <li> 名称:<input type="text" name="name"/> </li> - <li class="time"> - <label>创建时间: </label> - <input type="text" class="time-input" id="startTime" placeholder="开始时间" name="params[createdBegin]"/> - <span>-</span> - <input type="text" class="time-input" id="endTime" placeholder="结束时间" name="params[createdEnd]"/> - </li> + <!--<li class="time">--> + <!--<label>创建时间: </label>--> + <!--<input type="text" class="time-input" id="startTime" placeholder="开始时间" name="params[createdBegin]"/>--> + <!--<span>-</span>--> + <!--<input type="text" class="time-input" id="endTime" placeholder="结束时间" name="params[createdEnd]"/>--> + <!--</li>--> <li> <a class="btn btn-primary btn-rounded btn-sm" onclick="$.table.search()"><i class="fa fa-search"></i> 搜索</a> <a class="btn btn-warning btn-rounded btn-sm" onclick="$.form.reset('customer-form')"><i class="fa fa-refresh"></i> 重置</a> diff --git a/src/main/resources/templates/config/cycleCountPreference/cycleCountPreference.html b/src/main/resources/templates/config/cycleCountPreference/cycleCountPreference.html index 601dd79..ac5b692 100644 --- a/src/main/resources/templates/config/cycleCountPreference/cycleCountPreference.html +++ b/src/main/resources/templates/config/cycleCountPreference/cycleCountPreference.html @@ -27,12 +27,12 @@ <li> 创建人:<input type="text" name="createdBy"/> </li> - <li class="time"> - <label>创建时间: </label> - <input type="text" class="time-input" id="startTime" placeholder="开始时间" name="createdBegin"/> - <span>-</span> - <input type="text" class="time-input" id="endTime" placeholder="结束时间" name="createdEnd"/> - </li> + <!--<li class="time">--> + <!--<label>创建时间: </label>--> + <!--<input type="text" class="time-input" id="startTime" placeholder="开始时间" name="createdBegin"/>--> + <!--<span>-</span>--> + <!--<input type="text" class="time-input" id="endTime" placeholder="结束时间" name="createdEnd"/>--> + <!--</li>--> <li> <a class="btn btn-warning btn-rounded btn-sm" onclick="$.form.reset('cycleCountPreference-form')"><i class="fa fa-refresh"></i> 清除选择</a> <a class="btn btn-primary btn-rounded btn-sm" onclick="$.table.search()"><i class="fa fa-search"></i> 搜索</a> diff --git a/src/main/resources/templates/config/filterConfigDetail/edit.html b/src/main/resources/templates/config/filterConfigDetail/edit.html index cecdd27..af251d6 100644 --- a/src/main/resources/templates/config/filterConfigDetail/edit.html +++ b/src/main/resources/templates/config/filterConfigDetail/edit.html @@ -39,6 +39,12 @@ </div> </div> <div class="form-group"> + <label class="col-sm-3 control-label">后续分组排序:</label> + <div class="col-sm-8"> + <input id="statements" name="statements" class="form-control" type="text" th:field="*{statements}"> + </div> + </div> + <div class="form-group"> <label class="col-sm-3 control-label">是否系统创建:</label> <div class="col-sm-8"> <div class="onoffswitch"> diff --git a/src/main/resources/templates/config/filterConfigHeader/filterConfigHeader.html b/src/main/resources/templates/config/filterConfigHeader/filterConfigHeader.html index 2e3d72b..744af5f 100644 --- a/src/main/resources/templates/config/filterConfigHeader/filterConfigHeader.html +++ b/src/main/resources/templates/config/filterConfigHeader/filterConfigHeader.html @@ -26,14 +26,14 @@ <li> 条件名:<input type="text" name="filterCode"/> </li> - <li class="time"> - <label>创建时间: </label> - <input type="text" class="time-input" id="startTime" placeholder="开始时间" - name="createdBegin"/> - <span>-</span> - <input type="text" class="time-input" id="endTime" placeholder="结束时间" - name="createdEnd"/> - </li> + <!--<li class="time">--> + <!--<label>创建时间: </label>--> + <!--<input type="text" class="time-input" id="startTime" placeholder="开始时间"--> + <!--name="createdBegin"/>--> + <!--<span>-</span>--> + <!--<input type="text" class="time-input" id="endTime" placeholder="结束时间"--> + <!--name="createdEnd"/>--> + <!--</li>--> <li> <a class="btn btn-primary btn-rounded btn-sm" onclick="$.table.search()"><i class="fa fa-search"></i> 搜索</a> diff --git a/src/main/resources/templates/config/location/location.html b/src/main/resources/templates/config/location/location.html index 06d13b5..d983495 100644 --- a/src/main/resources/templates/config/location/location.html +++ b/src/main/resources/templates/config/location/location.html @@ -50,9 +50,9 @@ </li> <li class="time"> <label>创建时间: </label> - <input type="text" class="time-input" id="startTime" placeholder="开始时间" name="params[createdBegin]"/> + <input type="text" class="time-input" id="startTime" placeholder="开始时间" name="createdBegin"/> <span>-</span> - <input type="text" class="time-input" id="endTime" placeholder="结束时间" name="params[createdEnd]"/> + <input type="text" class="time-input" id="endTime" placeholder="结束时间" name="createdEnd"/> </li> <li> <a class="btn btn-primary btn-rounded btn-sm" onclick="$.table.search()"><i class="fa fa-search"></i> 搜索</a> diff --git a/src/main/resources/templates/config/locationType/locationType.html b/src/main/resources/templates/config/locationType/locationType.html index 6d412df..a449c41 100644 --- a/src/main/resources/templates/config/locationType/locationType.html +++ b/src/main/resources/templates/config/locationType/locationType.html @@ -21,12 +21,12 @@ <!--<option th:each="e : ${type}" th:text="${e['dictLabel']}" th:value="${e['dictValue']}"></option>--> <!--</select>--> <!--</li>--> - <li class="time"> - <label>创建时间: </label> - <input type="text" class="time-input" id="startTime" placeholder="开始时间" name="createdBegin"/> - <span>-</span> - <input type="text" class="time-input" id="endTime" placeholder="结束时间" name="createdEnd"/> - </li> + <!--<li class="time">--> + <!--<label>创建时间: </label>--> + <!--<input type="text" class="time-input" id="startTime" placeholder="开始时间" name="createdBegin"/>--> + <!--<span>-</span>--> + <!--<input type="text" class="time-input" id="endTime" placeholder="结束时间" name="createdEnd"/>--> + <!--</li>--> <li> <a class="btn btn-primary btn-rounded btn-sm" onclick="$.table.search()"><i class="fa fa-search"></i> 搜索</a> <a class="btn btn-warning btn-rounded btn-sm" onclick="$.form.reset('alarmLevel-form')"><i class="fa fa-refresh"></i> 重置</a> diff --git a/src/main/resources/templates/config/material/add.html b/src/main/resources/templates/config/material/add.html index 6c33743..c3c8349 100644 --- a/src/main/resources/templates/config/material/add.html +++ b/src/main/resources/templates/config/material/add.html @@ -60,7 +60,7 @@ <div class="form-group"> <label class="col-sm-3 control-label">定位规则:</label> <div class="col-sm-8"> - <select id="locatingRule" name="locatingRule" class="form-control" th:with="list=${@FilterConfigDetailService.queryFilterConfigDetail('入库')}"> + <select id="locatingRule" name="locatingRule" class="form-control" th:with="list=${@FilterConfigDetailService.queryFilterConfigDetail('locationRule')}"> <option value="">请选择</option> <option th:each="flow : ${list}" th:text="${flow['description']}" th:value="${flow['code']}"></option> </select> @@ -69,7 +69,7 @@ <div class="form-group"> <label class="col-sm-3 control-label">分配规则:</label> <div class="col-sm-8"> - <select id="allocationRule" name="allocationRule" class="form-control" th:with="list=${@FilterConfigDetailService.queryFilterConfigDetail('分配规则')}"> + <select id="allocationRule" name="allocationRule" class="form-control" th:with="list=${@FilterConfigDetailService.queryFilterConfigDetail('allocationRule')}"> <option value="">请选择</option> <option th:each="flow : ${list}" th:text="${flow['description']}" th:value="${flow['code']}"></option> </select> @@ -78,7 +78,7 @@ <div class="form-group"> <label class="col-sm-3 control-label">补货规则:</label> <div class="col-sm-8"> - <select id="replenishmentRule" name="replenishmentRule" class="form-control" th:with="list=${@FilterConfigDetailService.queryFilterConfigDetail('补货规则')}"> + <select id="replenishmentRule" name="replenishmentRule" class="form-control" th:with="list=${@FilterConfigDetailService.queryFilterConfigDetail('replenishmentRule')}"> <option value="">请选择</option> <option th:each="flow : ${list}" th:text="${flow['description']}" th:value="${flow['code']}"></option> </select> @@ -87,7 +87,7 @@ <div class="form-group"> <label class="col-sm-3 control-label">空货位规则:</label> <div class="col-sm-8"> - <select id="emptyLocRule" name="emptyLocRule" class="form-control" th:with="list=${@FilterConfigDetailService.queryFilterConfigDetail('空货位规则')}"> + <select id="emptyLocRule" name="emptyLocRule" class="form-control" th:with="list=${@FilterConfigDetailService.queryFilterConfigDetail('emptyLocRule')}"> <option value="">请选择</option> <option th:each="flow : ${list}" th:text="${flow['description']}" th:value="${flow['code']}"></option> </select> @@ -96,7 +96,7 @@ <div class="form-group"> <label class="col-sm-3 control-label">入库规则:</label> <div class="col-sm-8"> - <select id="receivingFlow" name="receivingFlow" class="form-control" th:with="list=${@StatusFlow.flowList('入库单')}"> + <select id="receivingFlow" name="receivingFlow" class="form-control" th:with="list=${@StatusFlow.flowList('receivingFlow')}"> <option value="">请选择</option> <option th:each="flow : ${list}" th:text="${flow['name']}" th:value="${flow['code']}"></option> </select> @@ -105,7 +105,7 @@ <div class="form-group"> <label class="col-sm-3 control-label">出库流程:</label> <div class="col-sm-8"> - <select id="shippingFlow" name="shippingFlow" class="form-control" th:with="list=${@StatusFlow.flowList('出库单')}"> + <select id="shippingFlow" name="shippingFlow" class="form-control" th:with="list=${@StatusFlow.flowList('shippingFlow')}"> <option value="">请选择</option> <option th:each="flow : ${list}" th:text="${flow['name']}" th:value="${flow['code']}"></option> </select> diff --git a/src/main/resources/templates/config/material/material.html b/src/main/resources/templates/config/material/material.html index ee1183b..7487de7 100644 --- a/src/main/resources/templates/config/material/material.html +++ b/src/main/resources/templates/config/material/material.html @@ -16,15 +16,12 @@ 名称:<input type="text" name="name"/> </li> <li> - 库区编码:<input type="text" name="zoneCode"/> + 规格:<input type="text" name="spec"/> </li> <li> - 规格:<input type="text" name="specification"/> - </li> - <li> - 物料类别:<select name="type" th:with="type=${@dict.getType('materialType')}"> + 物料类别:<select name="type" th:with="type=${@materialType.list()}"> <option value="">所有</option> - <option th:each="e : ${type}" th:text="${e['dictLabel']}" th:value="${e['dictValue']}"></option> + <option th:each="e : ${type}" th:text="${e['name']}" th:value="${e['code']}"></option> </select> </li> <li class="time"> diff --git a/src/main/resources/templates/config/materialMultiple/add.html b/src/main/resources/templates/config/materialMultiple/add.html index 3a68d5b..986f499 100644 --- a/src/main/resources/templates/config/materialMultiple/add.html +++ b/src/main/resources/templates/config/materialMultiple/add.html @@ -23,13 +23,13 @@ <div class="form-group"> <label class="col-sm-3 control-label">单位1:</label> <div class="col-sm-8"> - <input id="unit1" name="unit1" class="form-control" type="text"> + <input id="unitId1" name="unitId1" class="form-control" type="text"> </div> </div> <div class="form-group"> <label class="col-sm-3 control-label">单位2:</label> <div class="col-sm-8"> - <input id="unit2" name="unit2" class="form-control" type="text"> + <input id="unitId2" name="unitId2" class="form-control" type="text"> </div> </div> <div class="form-group"> diff --git a/src/main/resources/templates/config/materialMultiple/materialMultiple.html b/src/main/resources/templates/config/materialMultiple/materialMultiple.html index ae8f463..7972c70 100644 --- a/src/main/resources/templates/config/materialMultiple/materialMultiple.html +++ b/src/main/resources/templates/config/materialMultiple/materialMultiple.html @@ -14,12 +14,12 @@ <li> 名称:<input type="text" name="materialName"/> </li> - <li class="time"> - <label>创建时间: </label> - <input type="text" class="time-input" id="startTime" placeholder="开始时间" name="createdBegin"/> - <span>-</span> - <input type="text" class="time-input" id="endTime" placeholder="结束时间" name="createdEnd"/> - </li> + <!--<li class="time">--> + <!--<label>创建时间: </label>--> + <!--<input type="text" class="time-input" id="startTime" placeholder="开始时间" name="createdBegin"/>--> + <!--<span>-</span>--> + <!--<input type="text" class="time-input" id="endTime" placeholder="结束时间" name="createdEnd"/>--> + <!--</li>--> <li> <a class="btn btn-primary btn-rounded btn-sm" onclick="$.table.search()"><i class="fa fa-search"></i> 搜索</a> <a class="btn btn-warning btn-rounded btn-sm" onclick="$.form.reset('materialMultiple-form')"><i class="fa fa-refresh"></i> 重置</a> @@ -85,11 +85,11 @@ title : '货主编码' }, { - field : 'unitld1', + field : 'unitId1', title : '单位1' }, { - field : 'unitld2', + field : 'unitId2', title : '单位2' }, { diff --git a/src/main/resources/templates/config/materialType/add.html b/src/main/resources/templates/config/materialType/add.html index e02fe14..f3000a1 100644 --- a/src/main/resources/templates/config/materialType/add.html +++ b/src/main/resources/templates/config/materialType/add.html @@ -40,7 +40,7 @@ <div class="form-group"> <label class="col-sm-3 control-label">入库流程:</label> <div class="col-sm-8"> - <select id="receivingFlow" name="receivingFlow" class="form-control" th:with="list=${@StatusFlow.flowList('入库单')}"> + <select id="receivingFlow" name="receivingFlow" class="form-control" th:with="list=${@StatusFlow.flowList('receivingFlow')}"> <option value="">请选择</option> <option th:each="flow : ${list}" th:text="${flow['name']}" th:value="${flow['code']}"></option> </select> @@ -49,7 +49,7 @@ <div class="form-group"> <label class="col-sm-3 control-label">出库流程:</label> <div class="col-sm-8"> - <select id="shippingFlow" name="shippingFlow" class="form-control" th:with="list=${@StatusFlow.flowList('出库单')}"> + <select id="shippingFlow" name="shippingFlow" class="form-control" th:with="list=${@StatusFlow.flowList('shippingFlow')}"> <option value="">请选择</option> <option th:each="flow : ${list}" th:text="${flow['name']}" th:value="${flow['code']}"></option> </select> @@ -58,7 +58,7 @@ <div class="form-group"> <label class="col-sm-3 control-label">定位规则:</label> <div class="col-sm-8"> - <select id="locatingRule" name="locatingRule" class="form-control" th:with="list=${@FilterConfigDetailService.queryFilterConfigDetail('入库')}"> + <select id="locatingRule" name="locatingRule" class="form-control" th:with="list=${@FilterConfigDetailService.queryFilterConfigDetail('locatingRule')}"> <option value="">请选择</option> <option th:each="flow : ${list}" th:text="${flow['description']}" th:value="${flow['code']}"></option> </select> @@ -67,7 +67,7 @@ <div class="form-group"> <label class="col-sm-3 control-label">分配规则:</label> <div class="col-sm-8"> - <select id="allocationRule" name="allocationRule" class="form-control" th:with="list=${@FilterConfigDetailService.queryFilterConfigDetail('分配规则')}"> + <select id="allocationRule" name="allocationRule" class="form-control" th:with="list=${@FilterConfigDetailService.queryFilterConfigDetail('allocationRule')}"> <option value="">请选择</option> <option th:each="flow : ${list}" th:text="${flow['description']}" th:value="${flow['code']}"></option> </select> @@ -76,7 +76,7 @@ <div class="form-group"> <label class="col-sm-3 control-label">补货规则:</label> <div class="col-sm-8"> - <select id="replenishmentRule" name="replenishmentRule" class="form-control" th:with="list=${@FilterConfigDetailService.queryFilterConfigDetail('补货规则')}"> + <select id="replenishmentRule" name="replenishmentRule" class="form-control" th:with="list=${@FilterConfigDetailService.queryFilterConfigDetail('replenishmentRule')}"> <option value="">请选择</option> <option th:each="flow : ${list}" th:text="${flow['description']}" th:value="${flow['code']}"></option> </select> @@ -85,7 +85,7 @@ <div class="form-group"> <label class="col-sm-3 control-label">空货位规则:</label> <div class="col-sm-8"> - <select id="emptyLocRule" name="emptyLocRule" class="form-control" th:with="list=${@FilterConfigDetailService.queryFilterConfigDetail('空货位规则')}"> + <select id="emptyLocRule" name="emptyLocRule" class="form-control" th:with="list=${@FilterConfigDetailService.queryFilterConfigDetail('emptyLocRule')}"> <option value="">请选择</option> <option th:each="flow : ${list}" th:text="${flow['description']}" th:value="${flow['code']}"></option> </select> @@ -94,7 +94,7 @@ <div class="form-group"> <label class="col-sm-3 control-label">拣货规则:</label> <div class="col-sm-8"> - <select id="pickingRule" name="pickingRule" class="form-control" th:with="list=${@FilterConfigDetailService.queryFilterConfigDetail('出库')}"> + <select id="pickingRule" name="pickingRule" class="form-control" th:with="list=${@FilterConfigDetailService.queryFilterConfigDetail('pickingRule')}"> <option value="">请选择</option> <option th:each="flow : ${list}" th:text="${flow['description']}" th:value="${flow['code']}"></option> </select> diff --git a/src/main/resources/templates/config/materialType/edit.html b/src/main/resources/templates/config/materialType/edit.html index a66f06b..9fe1c98 100644 --- a/src/main/resources/templates/config/materialType/edit.html +++ b/src/main/resources/templates/config/materialType/edit.html @@ -43,7 +43,7 @@ <div class="form-group"> <label class="col-sm-3 control-label">入库流程:</label> <div class="col-sm-8"> - <select id="receivingFlow" name="receivingFlow" class="form-control" th:with="list=${@StatusFlow.flowList('入库单')}" th:field="*{receivingFlow}"> + <select id="receivingFlow" name="receivingFlow" class="form-control" th:with="list=${@StatusFlow.flowList('receivingFlow')}" th:field="*{receivingFlow}"> <option value="">请选择</option> <option th:each="flow : ${list}" th:text="${flow['name']}" th:value="${flow['code']}"></option> </select> @@ -52,7 +52,7 @@ <div class="form-group"> <label class="col-sm-3 control-label">出库流程:</label> <div class="col-sm-8"> - <select id="shippingFlow" name="shippingFlow" class="form-control" th:with="list=${@StatusFlow.flowList('出库单')}" th:field="*{shippingFlow}"> + <select id="shippingFlow" name="shippingFlow" class="form-control" th:with="list=${@StatusFlow.flowList('shippingFlow')}" th:field="*{shippingFlow}"> <option value="">请选择</option> <option th:each="flow : ${list}" th:text="${flow['name']}" th:value="${flow['code']}"></option> </select> @@ -62,7 +62,7 @@ <label class="col-sm-3 control-label">定位规则:</label> <div class="col-sm-8"> <select id="locatingRule" name="locatingRule" class="form-control" - th:with="list=${@FilterConfigDetailService.queryFilterConfigDetail('入库')}" th:field="*{locatingRule}"> + th:with="list=${@FilterConfigDetailService.queryFilterConfigDetail('locatingRule')}" th:field="*{locatingRule}"> <option value="">请选择</option> <option th:each="flow : ${list}" th:text="${flow['description']}" th:value="${flow['code']}"></option> </select> @@ -72,7 +72,7 @@ <label class="col-sm-3 control-label">分配规则:</label> <div class="col-sm-8"> <select id="allocationRule" name="allocationRule" class="form-control" - th:with="list=${@FilterConfigDetailService.queryFilterConfigDetail('分配规则')}" th:field="*{allocationRule}"> + th:with="list=${@FilterConfigDetailService.queryFilterConfigDetail('allocationRule')}" th:field="*{allocationRule}"> <option value="">请选择</option> <option th:each="flow : ${list}" th:text="${flow['description']}" th:value="${flow['code']}"></option> </select> @@ -82,7 +82,7 @@ <label class="col-sm-3 control-label">补货规则:</label> <div class="col-sm-8"> <select id="replenishmentRule" name="replenishmentRule" class="form-control" - th:with="list=${@FilterConfigDetailService.queryFilterConfigDetail('补货规则')}" th:field="*{replenishmentRule}"> + th:with="list=${@FilterConfigDetailService.queryFilterConfigDetail('replenishmentRule')}" th:field="*{replenishmentRule}"> <option value="">请选择</option> <option th:each="flow : ${list}" th:text="${flow['description']}" th:value="${flow['code']}"></option> </select> @@ -92,7 +92,7 @@ <label class="col-sm-3 control-label">空货位规则:</label> <div class="col-sm-8"> <select id="emptyLocRule" name="emptyLocRule" class="form-control" - th:with="list=${@FilterConfigDetailService.queryFilterConfigDetail('空货位规则')}" th:field="*{emptyLocRule}"> + th:with="list=${@FilterConfigDetailService.queryFilterConfigDetail('emptyLocRule')}" th:field="*{emptyLocRule}"> <option value="">请选择</option> <option th:each="flow : ${list}" th:text="${flow['description']}" th:value="${flow['code']}"></option> </select> @@ -102,7 +102,7 @@ <label class="col-sm-3 control-label">拣货规则:</label> <div class="col-sm-8"> <select id="pickingRule" name="pickingRule" class="form-control" - th:with="list=${@FilterConfigDetailService.queryFilterConfigDetail('出库')}" th:field="*{pickingRule}"> + th:with="list=${@FilterConfigDetailService.queryFilterConfigDetail('pickingRule')}" th:field="*{pickingRule}"> <option value="">请选择</option> <option th:each="flow : ${list}" th:text="${flow['description']}" th:value="${flow['code']}"></option> </select> diff --git a/src/main/resources/templates/config/materialType/materialType.html b/src/main/resources/templates/config/materialType/materialType.html index 5bf0f96..d1f1909 100644 --- a/src/main/resources/templates/config/materialType/materialType.html +++ b/src/main/resources/templates/config/materialType/materialType.html @@ -15,12 +15,12 @@ <li> 名称:<input type="text" name="name"/> </li> - <li class="time"> - <label>创建时间: </label> - <input type="text" class="time-input" id="startTime" placeholder="开始时间" name="createdBegin"/> - <span>-</span> - <input type="text" class="time-input" id="endTime" placeholder="结束时间" name="createdEnd"/> - </li> + <!--<li class="time">--> + <!--<label>创建时间: </label>--> + <!--<input type="text" class="time-input" id="startTime" placeholder="开始时间" name="createdBegin"/>--> + <!--<span>-</span>--> + <!--<input type="text" class="time-input" id="endTime" placeholder="结束时间" name="createdEnd"/>--> + <!--</li>--> <li> <a class="btn btn-primary btn-rounded btn-sm" onclick="$.table.search()"><i class="fa fa-search"></i> 搜索</a> <a class="btn btn-warning btn-rounded btn-sm" onclick="$.form.reset('materialType-form')"><i class="fa fa-refresh"></i> 重置</a> diff --git a/src/main/resources/templates/config/materialUnit/materialUnit.html b/src/main/resources/templates/config/materialUnit/materialUnit.html index 1e1b2ab..464e46f 100644 --- a/src/main/resources/templates/config/materialUnit/materialUnit.html +++ b/src/main/resources/templates/config/materialUnit/materialUnit.html @@ -19,12 +19,12 @@ 单位:<input type="text" name="unit"/> </li> - <li class="time"> - <label>创建时间: </label> - <input type="text" class="time-input" id="startTime" placeholder="开始时间" name="createdBegin"/> - <span>-</span> - <input type="text" class="time-input" id="endTime" placeholder="结束时间" name="createdEnd"/> - </li> + <!--<li class="time">--> + <!--<label>创建时间: </label>--> + <!--<input type="text" class="time-input" id="startTime" placeholder="开始时间" name="createdBegin"/>--> + <!--<span>-</span>--> + <!--<input type="text" class="time-input" id="endTime" placeholder="结束时间" name="createdEnd"/>--> + <!--</li>--> <li> <a class="btn btn-primary btn-rounded btn-sm" onclick="$.table.search()"><i class="fa fa-search"></i> 搜索</a> <a class="btn btn-warning btn-rounded btn-sm" onclick="$.form.reset('materialUnit-form')"><i class="fa fa-refresh"></i> 重置</a> diff --git a/src/main/resources/templates/config/point/edit.html b/src/main/resources/templates/config/point/edit.html new file mode 100644 index 0000000..1f60a90 --- /dev/null +++ b/src/main/resources/templates/config/point/edit.html @@ -0,0 +1,69 @@ +<!DOCTYPE HTML> +<html lang="zh" xmlns:th="http://www.thymeleaf.org"> +<meta charset="utf-8"> +<head th:include="include :: header"></head> +<body class="white-bg"> +<div class="wrapper wrapper-content animated fadeInRight ibox-content"> + <form class="form-horizontal m" id="form-zone-edit"> + <div class="form-group"> + <label class="col-sm-3 control-label">货架号:</label> + <div class="col-sm-8"> + <input id="goodsShelfNo" name="goodsShelfNo" class="form-control" type="text"> + </div> + </div> + <div class="form-group"> + <label class="col-sm-3 control-label">货主:</label> + <div class="col-sm-8"> + <select id="companyCode" name="companyCode" class="form-control" th:with="list=${@company.selectCompanyByCurrentUserId()}"> + <option th:each="item : ${list}" th:text="${item['name']}" th:value="${item['code']}" th:attr = " code = ${item['code']}"></option> + </select> + </div> + </div> + <div class="form-group"> + <div class="form-control-static col-sm-offset-9"> + <button type="submit" class="btn btn-primary">提交</button> + <button onclick="$.modal.close()" class="btn btn-danger" type="button">关闭</button> + </div> + </div> + </form> +</div> +<div th:include="include::footer"></div> +<script type="text/javascript"> + let prefix = ctx + "config/point"; + $("#form-zone-edit").validate({ + rules:{ + XX:{ + required:true, + }, + }, + submitHandler: function(form) { + let tableValue = $.common.getTableValue("#form-zone-edit"); + $.operate.save(prefix + "/edit", tableValue); + } + }); + + $(function () { + $("#goodsShelfNo").val(window.parent.goodsShelfNos); + $("select[name='companyCode']").change(function (e) { + let companyCode=$("select[name='companyCode'] option:selected").attr('code'); + $.ajax({ + url: ctx + "receipt/receiptHeader/getwarehouse", + type:'post', + data:{code:companyCode}, + success:function (response) { + if(response.code===200){ + $("select[name='uWarehouseCode']").children().remove(); + $("select[name='uWarehouseCode']").append(`<option value="">所有</option>`); + for (let item of response.data) { + let option=`<option value="${item.uWarehouseCode}">${item.uWarehouseName}</option>`; + $("select[name='uWarehouseCode']").append(option); + } + } + else {$.modal.msgError(response.msg)} + } + }) + }) + }) +</script> +</body> +</html> diff --git a/src/main/resources/templates/config/point/point.html b/src/main/resources/templates/config/point/point.html new file mode 100644 index 0000000..b05ea27 --- /dev/null +++ b/src/main/resources/templates/config/point/point.html @@ -0,0 +1,145 @@ +<!DOCTYPE HTML> +<html lang="zh" xmlns:th="http://www.thymeleaf.org" xmlns:shiro="http://www.pollix.at/thymeleaf/shiro"> +<meta charset="utf-8"> +<head th:include="include :: header"></head> +<body class="gray-bg"> +<div class="container-div"> + <div class="row"> + <div class="col-sm-12 select-info"> + <form id="zone-form"> + <div class="select-list"> + <ul> + <li> + 货架号:<input type="text" id="goodsShelfNo" name="goodsShelfNo"/> + </li> + <li> + 货主:<select name="companyCode" th:with="company=${@company.getEnableCompanyList()}"> + <option value="">所有</option> + <option th:each="e : ${company}" th:text="${e['name']}" th:value="${e['code']}"></option></select> + </li> + <li> + <a class="btn btn-primary btn-rounded btn-sm" onclick="$.table.search()"><i class="fa fa-search"></i> 搜索</a> + <a class="btn btn-warning btn-rounded btn-sm" onclick="$.form.reset('zone-form')"><i class="fa fa-refresh"></i> 重置</a> + </li> + </ul> + </div> + </form> + </div> + + <!--<div class="btn-group hidden-xs" id="toolbar" role="group">--> + <!--<a class="btn btn-outline btn-success btn-rounded" onclick="$.operate.add()" shiro:hasPermission="config:zone:add">--> + <!--<i class="fa fa-plus"></i> 新增--> + <!--</a>--> + <!--<a class="btn btn-outline btn-danger btn-rounded" onclick="$.operate.batRemove()" shiro:hasPermission="config:zone:remove">--> + <!--<i class="fa fa-trash-o"></i> 删除--> + <!--</a>--> + <!--</div>--> + + <div class="col-sm-12 select-info"> + <a class="btn btn-outline btn-primary btn-rounded to-receive" onclick="restore()"> + <i class="fa fa-paper-plane"></i> 状态恢复 + </a> + <a class="btn btn-outline btn-primary btn-rounded to-receive" onclick="detectShelf()"> + <i class="fa fa-paper-plane"></i> 检测空货架 + </a> + <table id="bootstrap-table" data-mobile-responsive="true" class="table table-bordered table-hover"></table> + </div> + </div> +</div> +<div th:include="include :: footer"></div> +<script th:inline="javascript"> + var prefix = ctx + "config/point"; + var goodsShelfNos=null; + $(function() { + let options = { + url: prefix + "/list", + createUrl: prefix + "/add", + updateUrl: prefix + "/edit/{id}", + removeUrl: prefix + "/remove", + modalName: "货架", + search: false, + columns: [ + // { + // checkbox: true + // }, + { + field : 'goodsShelfNo', + title : '货架号', + sortable:true + }, + { + field : 'companyName', + title : '货主名称', + sortable:true + }, + { + field : 'isEmpty', + title : '是否空货架', + sortable:true, + formatter: function (value, item, index) { + if (value==true) { + return '<span class="badge" style="background-color: #00B83F;color: white;width: 36px;">' + ' 是 ' + '</span>'; + } + else if (value==false) { + return '<span class="badge" style="background-color: #ff0000;color: white;width: 36px;">' + ' 否 ' + '</span>'; + } + } + }, + { + title: '操作', + align: 'center', + formatter: function(value, row, index) { + let actions = []; + actions.push('<a class="btn btn-success btn-xs" onclick="Edit(\'' + row.id + '\' , \'' + row.goodsShelfNo + '\' )"><i class="fa fa-edit"></i>编辑</a> '); + return actions.join(''); + } + } + ] + }; + $.table.init(options); + }); + + function Edit(id, code) { + goodsShelfNos=code; + $.operate.edit(id) + } + + /* 恢复 */ + function restore() { + $.ajax({ + url:prefix+'/restore', + type:'post', + success:function (res) { + if(res.code==200){ + $.table.refresh(); + $.modal.msgSuccess(res.msg); + } + else{ + $.modal.msgError(res.msg); + } + } + }) + } + + + + /* 检测货架装货状态 */ + function detectShelf() { + $.ajax({ + url:prefix+'/detectShelf', + type:'post', + success:function (res) { + if(res.code==200){ + $.table.refresh(); + $.modal.msgSuccess(res.msg); + } + else{ + $.modal.msgError(res.msg); + } + } + }) + } + +</script> +</body> +</html> \ No newline at end of file diff --git a/src/main/resources/templates/config/receiptPreference/receiptPreference.html b/src/main/resources/templates/config/receiptPreference/receiptPreference.html index 6b72a1b..e720669 100644 --- a/src/main/resources/templates/config/receiptPreference/receiptPreference.html +++ b/src/main/resources/templates/config/receiptPreference/receiptPreference.html @@ -18,15 +18,15 @@ <li> 入库流程:<input type="text" name="receivingFlow"/> </li> - <li> - 入库类型:<input type="text" name="receiptTypes"/> - </li> - <li class="time"> - <label>创建时间: </label> - <input type="text" class="time-input" id="startTime" placeholder="开始时间" name="createdBegin"/> - <span>-</span> - <input type="text" class="time-input" id="endTime" placeholder="结束时间" name="createdEnd"/> - </li> + <!--<li>--> + <!--入库类型:<input type="text" name="receiptTypes"/>--> + <!--</li>--> + <!--<li class="time">--> + <!--<label>创建时间: </label>--> + <!--<input type="text" class="time-input" id="startTime" placeholder="开始时间" name="createdBegin"/>--> + <!--<span>-</span>--> + <!--<input type="text" class="time-input" id="endTime" placeholder="结束时间" name="createdEnd"/>--> + <!--</li>--> <li> <a class="btn btn-primary btn-rounded btn-sm" onclick="$.table.search()"><i class="fa fa-search"></i> 搜索</a> <a class="btn btn-warning btn-rounded btn-sm" onclick="$.form.reset('receiptPreference-form')"><i class="fa fa-refresh"></i> 重置</a> diff --git a/src/main/resources/templates/config/receiptType/receiptType.html b/src/main/resources/templates/config/receiptType/receiptType.html index 34b8a3b..e46b519 100644 --- a/src/main/resources/templates/config/receiptType/receiptType.html +++ b/src/main/resources/templates/config/receiptType/receiptType.html @@ -12,12 +12,12 @@ <li> 编码:<input type="text" name="code"/> </li> - <li class="time"> - <label>创建时间: </label> - <input type="text" class="time-input" id="startTime" placeholder="开始时间" name="createdBegin"/> - <span>-</span> - <input type="text" class="time-input" id="endTime" placeholder="结束时间" name="createdEnd"/> - </li> + <!--<li class="time">--> + <!--<label>创建时间: </label>--> + <!--<input type="text" class="time-input" id="startTime" placeholder="开始时间" name="createdBegin"/>--> + <!--<span>-</span>--> + <!--<input type="text" class="time-input" id="endTime" placeholder="结束时间" name="createdEnd"/>--> + <!--</li>--> <li> <a class="btn btn-primary btn-rounded btn-sm" onclick="$.table.search()"><i class="fa fa-search"></i> 搜索</a> <a class="btn btn-warning btn-rounded btn-sm" onclick="$.form.reset('receiptType-form')"><i class="fa fa-refresh"></i> 重置</a> diff --git a/src/main/resources/templates/config/shipmentPreference/shipmentPreference.html b/src/main/resources/templates/config/shipmentPreference/shipmentPreference.html index 67fb14b..ecfd78b 100644 --- a/src/main/resources/templates/config/shipmentPreference/shipmentPreference.html +++ b/src/main/resources/templates/config/shipmentPreference/shipmentPreference.html @@ -18,12 +18,12 @@ <li> 出库流程:<input type="text" name="shippingFlow"/> </li> - <li class="time"> - <label>创建时间: </label> - <input type="text" class="time-input" id="startTime" placeholder="开始时间" name="createdBegin"/> - <span>-</span> - <input type="text" class="time-input" id="endTime" placeholder="结束时间" name="createdEnd"/> - </li> + <!--<li class="time">--> + <!--<label>创建时间: </label>--> + <!--<input type="text" class="time-input" id="startTime" placeholder="开始时间" name="createdBegin"/>--> + <!--<span>-</span>--> + <!--<input type="text" class="time-input" id="endTime" placeholder="结束时间" name="createdEnd"/>--> + <!--</li>--> <li> <a class="btn btn-primary btn-rounded btn-sm" onclick="$.table.search()"><i class="fa fa-search"></i> 搜索</a> <a class="btn btn-warning btn-rounded btn-sm" onclick="$.form.reset('shipmentPreference-form')"><i class="fa fa-refresh"></i> 重置</a> diff --git a/src/main/resources/templates/config/shipmentType/edit.html b/src/main/resources/templates/config/shipmentType/edit.html index 3f2ce7e..734422c 100644 --- a/src/main/resources/templates/config/shipmentType/edit.html +++ b/src/main/resources/templates/config/shipmentType/edit.html @@ -48,7 +48,7 @@ <div class="form-group"> <label class="col-sm-3 control-label">出库流程:</label> <div class="col-sm-8"> - <select id="receiptFlow" name="shipmentFlow" class="form-control" th:with="statusFlowList=${@StatusFlow.flowList()}" th:field="*{receiptFlow}"> + <select id="shipmentFlow" name="shipmentFlow" class="form-control" th:with="statusFlowList=${@StatusFlow.flowList('shippingFlow')}" th:field="*{shipmentFlow}"> <option th:each="flow : ${statusFlowList}" th:text="${flow['name']}" th:value="${flow['code']}"></option> </select> </div> diff --git a/src/main/resources/templates/config/shipmentType/shipmentType.html b/src/main/resources/templates/config/shipmentType/shipmentType.html index b71ed67..ec66209 100644 --- a/src/main/resources/templates/config/shipmentType/shipmentType.html +++ b/src/main/resources/templates/config/shipmentType/shipmentType.html @@ -15,12 +15,12 @@ <li> 名称:<input type="text" name="name"/> </li> - <li class="time"> - <label>创建时间: </label> - <input type="text" class="time-input" id="startTime" placeholder="开始时间" name="createdBegin"/> - <span>-</span> - <input type="text" class="time-input" id="endTime" placeholder="结束时间" name="createdEnd"/> - </li> + <!--<li class="time">--> + <!--<label>创建时间: </label>--> + <!--<input type="text" class="time-input" id="startTime" placeholder="开始时间" name="createdBegin"/>--> + <!--<span>-</span>--> + <!--<input type="text" class="time-input" id="endTime" placeholder="结束时间" name="createdEnd"/>--> + <!--</li>--> <li> <a class="btn btn-primary btn-rounded btn-sm" onclick="$.table.search()"><i class="fa fa-search"></i> 搜索</a> <a class="btn btn-warning btn-rounded btn-sm" onclick="$.form.reset('shipmentType-form')"><i class="fa fa-refresh"></i> 重置</a> diff --git a/src/main/resources/templates/config/station/station.html b/src/main/resources/templates/config/station/station.html index 6b5f357..2b0806f 100644 --- a/src/main/resources/templates/config/station/station.html +++ b/src/main/resources/templates/config/station/station.html @@ -14,9 +14,9 @@ </li> <li class="time"> <label>创建时间: </label> - <input type="text" class="time-input" id="startTime" placeholder="开始时间" name="params[createdBegin]"/> + <input type="text" class="time-input" id="startTime" placeholder="开始时间" name="createdBegin"/> <span>-</span> - <input type="text" class="time-input" id="endTime" placeholder="结束时间" name="params[createdEnd]"/> + <input type="text" class="time-input" id="endTime" placeholder="结束时间" name="createdEnd"/> </li> <li> <a class="btn btn-primary btn-rounded btn-sm" onclick="$.table.search()"><i class="fa fa-search"></i> 搜索</a> diff --git a/src/main/resources/templates/config/statusFlowHeader/statusFlowHeader.html b/src/main/resources/templates/config/statusFlowHeader/statusFlowHeader.html index dca7c9b..825f2c2 100644 --- a/src/main/resources/templates/config/statusFlowHeader/statusFlowHeader.html +++ b/src/main/resources/templates/config/statusFlowHeader/statusFlowHeader.html @@ -26,17 +26,17 @@ <li> 模块:<input type="text" name="moduleType" th:value="${moduleType}"/> </li> - <li> - 类型:<input type="text" name="recordType" th:value="${recordType}"/> - </li> - <li class="time"> - <label>创建时间: </label> - <input type="text" class="time-input" id="startTime" placeholder="开始时间" - name="params[createdBegin]"/> - <span>-</span> - <input type="text" class="time-input" id="endTime" placeholder="结束时间" - name="params[createdEnd]"/> - </li> + <!--<li>--> + <!--类型:<input type="text" name="recordType" th:value="${recordType}"/>--> + <!--</li>--> + <!--<li class="time">--> + <!--<label>创建时间: </label>--> + <!--<input type="text" class="time-input" id="startTime" placeholder="开始时间"--> + <!--name="params[createdBegin]"/>--> + <!--<span>-</span>--> + <!--<input type="text" class="time-input" id="endTime" placeholder="结束时间"--> + <!--name="params[createdEnd]"/>--> + <!--</li>--> <li> <a class="btn btn-primary btn-rounded btn-sm" onclick="$.table.search()"><i class="fa fa-search"></i> 搜索</a> diff --git a/src/main/resources/templates/config/supplier/add.html b/src/main/resources/templates/config/supplier/add.html index 0f9a43b..f8deaa0 100644 --- a/src/main/resources/templates/config/supplier/add.html +++ b/src/main/resources/templates/config/supplier/add.html @@ -20,9 +20,8 @@ <div class="form-group"> <label class="col-sm-3 control-label">货主编码:</label> <div class="col-sm-8"> - <!--<input id="companyCode" name="companyCode" class="form-control" type="text" >--> - <select id="companyCode" name="companyCode" class="form-control m-b" th:with="company=${@companyService.getCode()}"> - <option th:each="item : ${company}" th:text="${item['name']}" th:value="${item['code']}"></option> + <select id="companyCode" name="companyCode" class="form-control" th:with="companyList=${@companyService.selectCompanyByCurrentUserId()}"> + <option th:each="company : ${companyList}" th:text="${company['name']}" th:value="${company['code']}"></option> </select> </div> </div> diff --git a/src/main/resources/templates/config/supplier/supplier.html b/src/main/resources/templates/config/supplier/supplier.html index 651e3b6..60c6fa6 100644 --- a/src/main/resources/templates/config/supplier/supplier.html +++ b/src/main/resources/templates/config/supplier/supplier.html @@ -15,12 +15,12 @@ <li> 名称:<input type="text" name="name"/> </li> - <li class="time"> - <label>创建时间: </label> - <input type="text" class="time-input" id="startTime" placeholder="开始时间" name="params[createdBegin]"/> - <span>-</span> - <input type="text" class="time-input" id="endTime" placeholder="结束时间" name="params[createdEnd]"/> - </li> + <!--<li class="time">--> + <!--<label>创建时间: </label>--> + <!--<input type="text" class="time-input" id="startTime" placeholder="开始时间" name="params[createdBegin]"/>--> + <!--<span>-</span>--> + <!--<input type="text" class="time-input" id="endTime" placeholder="结束时间" name="params[createdEnd]"/>--> + <!--</li>--> <li> <a class="btn btn-primary btn-rounded btn-sm" onclick="$.table.search()"><i class="fa fa-search"></i> 搜索</a> <a class="btn btn-warning btn-rounded btn-sm" onclick="$.form.reset('supplier-form')"><i class="fa fa-refresh"></i> 重置</a> diff --git a/src/main/resources/templates/config/warehouse/add.html b/src/main/resources/templates/config/warehouse/add.html index 30642aa..3385d93 100644 --- a/src/main/resources/templates/config/warehouse/add.html +++ b/src/main/resources/templates/config/warehouse/add.html @@ -17,14 +17,14 @@ <input id="name" name="name" class="form-control" type="text"> </div> </div> - <div class="form-group"> - <label class="col-sm-3 control-label">公司:</label> - <div class="col-sm-8"> - <select id="orgCode" name="orgCode" class="form-control"> - <option th:each="item : ${list}" th:text="${item['name']}" th:value="${item['id']}" th:attr = " code = ${item['code']}"></option> - </select> - </div> - </div> + <!--<div class="form-group">--> + <!--<label class="col-sm-3 control-label">公司:</label>--> + <!--<div class="col-sm-8">--> + <!--<select id="orgCode" name="orgCode" class="form-control">--> + <!--<option th:each="item : ${list}" th:text="${item['name']}" th:value="${item['id']}" th:attr = " code = ${item['code']}"></option>--> + <!--</select>--> + <!--</div>--> + <!--</div>--> <div class="form-group"> <label class="col-sm-3 control-label">地址1:</label> <div class="col-sm-8"> @@ -161,10 +161,6 @@ name:{ required:true }, - orgCode:{ - required:true, - digits:true - }, postalCode:{ number:true }, @@ -187,7 +183,7 @@ } else { tableValue = formValueReplace(tableValue, "enable", 0); } - tableValue = formValueReplace(tableValue, "orgCode", $("#orgCode option:selected").val()); + // tableValue = formValueReplace(tableValue, "orgCode", $("#orgCode option:selected").val()); $.operate.save(prefix + "/add", tableValue); } diff --git a/src/main/resources/templates/config/warehouse/copy.html b/src/main/resources/templates/config/warehouse/copy.html index 944409c..c769ffb 100644 --- a/src/main/resources/templates/config/warehouse/copy.html +++ b/src/main/resources/templates/config/warehouse/copy.html @@ -8,7 +8,9 @@ <div class="form-group"> <label class="col-sm-3 control-label">仓库编码:</label> <div class="col-sm-8"> - <input id="newWarehouseCode" name="newWarehouseCode" class="form-control" type="text"> + <select id="newWarehouseCode" name="newWarehouseCode" class="form-control" th:with="newWarehouseCode=${@WarehouseService.list()}"> + <option th:each="dict : ${newWarehouseCode}" th:text="${dict['name']}" th:value="${dict['code']}"></option> + </select> </div> </div> <div class="form-group"> diff --git a/src/main/resources/templates/config/warehouse/edit.html b/src/main/resources/templates/config/warehouse/edit.html index 6129fd2..0d3f119 100644 --- a/src/main/resources/templates/config/warehouse/edit.html +++ b/src/main/resources/templates/config/warehouse/edit.html @@ -17,14 +17,14 @@ <input id="name" name="name" th:field="*{name}" class="form-control" type="text" readonly="true"> </div> </div> - <div class="form-group"> - <label class="col-sm-3 control-label">公司:</label> - <div class="col-sm-8"> - <select id="orgCode" name="orgCode" class="form-control" th:field="*{orgCode}"> - <option th:each="item : ${list}" th:text="${item['name']}" th:value="${item['id']}" th:attr = " code = ${item['code']}"></option> - </select> - </div> - </div> + <!--<div class="form-group">--> + <!--<label class="col-sm-3 control-label">公司:</label>--> + <!--<div class="col-sm-8">--> + <!--<select id="orgCode" name="orgCode" class="form-control" th:field="*{orgCode}">--> + <!--<option th:each="item : ${list}" th:text="${item['name']}" th:value="${item['id']}" th:attr = " code = ${item['code']}"></option>--> + <!--</select>--> + <!--</div>--> + <!--</div>--> <div class="form-group"> <label class="col-sm-3 control-label">地址1:</label> <div class="col-sm-8"> @@ -135,12 +135,12 @@ </div> </div> </div> - <div class="form-group"> - <label class="col-sm-3 control-label">是否删除:</label> - <div class="col-sm-8"> - <input id="deleted" name="deleted" th:field="*{deleted}" class="form-control" type="text"> - </div> - </div> + <!--<div class="form-group">--> + <!--<label class="col-sm-3 control-label">是否删除:</label>--> + <!--<div class="col-sm-8">--> + <!--<input id="deleted" name="deleted" th:field="*{deleted}" class="form-control" type="text">--> + <!--</div>--> + <!--</div>--> <!--<div class="form-group"> --> <!--<label class="col-sm-3 control-label">自定义字段1:</label>--> <!--<div class="col-sm-8">--> @@ -178,10 +178,6 @@ name:{ required:true }, - orgCode:{ - required:true, - digits:true - }, postalCode:{ number:true }, @@ -204,7 +200,7 @@ } else { tableValue = formValueReplace(tableValue, "enable", 0); } - tableValue = formValueReplace(tableValue, "orgCode", $("#orgCode option:selected").val()); + // tableValue = formValueReplace(tableValue, "orgCode", $("#orgCode option:selected").val()); $.operate.save(prefix + "/edit", tableValue); } }); diff --git a/src/main/resources/templates/config/warehouse/warehouse.html b/src/main/resources/templates/config/warehouse/warehouse.html index 3506339..710f34d 100644 --- a/src/main/resources/templates/config/warehouse/warehouse.html +++ b/src/main/resources/templates/config/warehouse/warehouse.html @@ -21,12 +21,12 @@ <!--<option th:each="e : ${type}" th:text="${e['dictLabel']}" th:value="${e['dictValue']}"></option>--> <!--</select>--> <!--</li>--> - <li class="time"> - <label>创建时间: </label> - <input type="text" class="time-input" id="startTime" placeholder="开始时间" name="createdBegin"/> - <span>-</span> - <input type="text" class="time-input" id="endTime" placeholder="结束时间" name="createdEnd"/> - </li> + <!--<li class="time">--> + <!--<label>创建时间: </label>--> + <!--<input type="text" class="time-input" id="startTime" placeholder="开始时间" name="createdBegin"/>--> + <!--<span>-</span>--> + <!--<input type="text" class="time-input" id="endTime" placeholder="结束时间" name="createdEnd"/>--> + <!--</li>--> <li> <a class="btn btn-primary btn-rounded btn-sm" onclick="$.table.search()"><i class="fa fa-search"></i> 搜索</a> <a class="btn btn-warning btn-rounded btn-sm" onclick="$.form.reset('warehouse-form')"><i class="fa fa-refresh"></i> 重置</a> diff --git a/src/main/resources/templates/config/waveFlowHeader/waveFlowHeader.html b/src/main/resources/templates/config/waveFlowHeader/waveFlowHeader.html index 07d4649..72b4bc7 100644 --- a/src/main/resources/templates/config/waveFlowHeader/waveFlowHeader.html +++ b/src/main/resources/templates/config/waveFlowHeader/waveFlowHeader.html @@ -20,14 +20,14 @@ <li> 流程名称:<input type="text" name="code"/> </li> - <li class="time"> - <label>创建时间: </label> - <input type="text" class="time-input" id="startTime" placeholder="开始时间" - name="createdBegin"/> - <span>-</span> - <input type="text" class="time-input" id="endTime" placeholder="结束时间" - name="createdEnd"/> - </li> + <!--<li class="time">--> + <!--<label>创建时间: </label>--> + <!--<input type="text" class="time-input" id="startTime" placeholder="开始时间"--> + <!--name="createdBegin"/>--> + <!--<span>-</span>--> + <!--<input type="text" class="time-input" id="endTime" placeholder="结束时间"--> + <!--name="createdEnd"/>--> + <!--</li>--> <li> <a class="btn btn-primary btn-rounded btn-sm" onclick="$.table.search()"><i class="fa fa-search"></i> 搜索</a> diff --git a/src/main/resources/templates/config/waveMaster/waveMaster.html b/src/main/resources/templates/config/waveMaster/waveMaster.html index 9654780..72b4851 100644 --- a/src/main/resources/templates/config/waveMaster/waveMaster.html +++ b/src/main/resources/templates/config/waveMaster/waveMaster.html @@ -27,12 +27,12 @@ <li> 波次流程:<input type="text" name="waveFlowCode"/> </li> - <li class="time"> - <label>创建时间: </label> - <input type="text" class="time-input" id="startTime" placeholder="开始时间" name="createdBegin"/> - <span>-</span> - <input type="text" class="time-input" id="endTime" placeholder="结束时间" name="createdEnd"/> - </li> + <!--<li class="time">--> + <!--<label>创建时间: </label>--> + <!--<input type="text" class="time-input" id="startTime" placeholder="开始时间" name="createdBegin"/>--> + <!--<span>-</span>--> + <!--<input type="text" class="time-input" id="endTime" placeholder="结束时间" name="createdEnd"/>--> + <!--</li>--> <li> <a class="btn btn-primary btn-rounded btn-sm" onclick="$.table.search()"><i class="fa fa-search"></i> 搜索</a> <a class="btn btn-warning btn-rounded btn-sm" onclick="$.form.reset('waveMaster-form')"><i class="fa fa-refresh"></i> 重置</a> diff --git a/src/main/resources/templates/config/zone/zone.html b/src/main/resources/templates/config/zone/zone.html index 1b3a706..a592bab 100644 --- a/src/main/resources/templates/config/zone/zone.html +++ b/src/main/resources/templates/config/zone/zone.html @@ -21,12 +21,12 @@ <!--<option th:each="e : ${type}" th:text="${e['dictLabel']}" th:value="${e['dictValue']}"></option>--> <!--</select>--> <!--</li>--> - <li class="time"> - <label>创建时间: </label> - <input type="text" class="time-input" id="startTime" placeholder="开始时间" name="createdBegin"/> - <span>-</span> - <input type="text" class="time-input" id="endTime" placeholder="结束时间" name="createdEnd"/> - </li> + <!--<li class="time">--> + <!--<label>创建时间: </label>--> + <!--<input type="text" class="time-input" id="startTime" placeholder="开始时间" name="createdBegin"/>--> + <!--<span>-</span>--> + <!--<input type="text" class="time-input" id="endTime" placeholder="结束时间" name="createdEnd"/>--> + <!--</li>--> <li> <a class="btn btn-primary btn-rounded btn-sm" onclick="$.table.search()"><i class="fa fa-search"></i> 搜索</a> <a class="btn btn-warning btn-rounded btn-sm" onclick="$.form.reset('zone-form')"><i class="fa fa-refresh"></i> 重置</a> diff --git a/src/main/resources/templates/inventory/adjustHeader/adjustHeader.html b/src/main/resources/templates/inventory/adjustHeader/adjustHeader.html index 014cbb6..8a376ea 100644 --- a/src/main/resources/templates/inventory/adjustHeader/adjustHeader.html +++ b/src/main/resources/templates/inventory/adjustHeader/adjustHeader.html @@ -62,6 +62,7 @@ <li> <a class="btn btn-primary btn-rounded btn-sm" onclick="$.table.search()"><i class="fa fa-search"></i> 搜索</a> + <a class="btn btn-warning btn-rounded btn-sm" onclick="$.form.reset('cycleHeader-form')"><i class="fa fa-refresh"></i> 重置</a> </li> </ul> </div> diff --git a/src/main/resources/templates/inventory/cycleCountDetail/cycleCountDetail.html b/src/main/resources/templates/inventory/cycleCountDetail/cycleCountDetail.html index 318e153..9e24329 100644 --- a/src/main/resources/templates/inventory/cycleCountDetail/cycleCountDetail.html +++ b/src/main/resources/templates/inventory/cycleCountDetail/cycleCountDetail.html @@ -65,10 +65,10 @@ <li class="time"> <label>创建时间: </label> <input type="text" class="time-input" id="startTime" placeholder="开始时间" - name="params[createdBegin]"/> + name="createdBegin"/> <span>-</span> <input type="text" class="time-input" id="endTime" placeholder="结束时间" - name="params[createdEnd]"/> + name="createdEnd"/> </li> <li> 创建人:<input id="createdBy" type="text" name="createdBy" /> diff --git a/src/main/resources/templates/inventory/cycleCountHeader/add.html b/src/main/resources/templates/inventory/cycleCountHeader/add.html index 830d84e..64405b3 100644 --- a/src/main/resources/templates/inventory/cycleCountHeader/add.html +++ b/src/main/resources/templates/inventory/cycleCountHeader/add.html @@ -33,8 +33,8 @@ <div class="form-group"> <label class="col-sm-3 control-label">货主:</label> <div class="col-sm-8"> - <select id="companyCode" name="companyCode" class="form-control" th:with="list=${@companyService.getCode()}"> - <option th:each="item : ${list}" th:text="${item['name']}" th:value="${item['code']}" th:attr = " code = ${item['code']}"></option> + <select id = "companyCode" name="companyCode" class="form-control" th:with="list=${@companyService.selectCompanyByCurrentUserId()}"> + <option th:each="item : ${list}" th:text="${item['name']}" th:value="${item['id']}" th:attr = " code = ${item['code']}"></option> </select> </div> </div> diff --git a/src/main/resources/templates/inventory/cycleCountHeader/cycleCountHeader.html b/src/main/resources/templates/inventory/cycleCountHeader/cycleCountHeader.html index 54310a5..1fc3602 100644 --- a/src/main/resources/templates/inventory/cycleCountHeader/cycleCountHeader.html +++ b/src/main/resources/templates/inventory/cycleCountHeader/cycleCountHeader.html @@ -55,14 +55,15 @@ <li class="time"> <label>创建时间: </label> <input type="text" class="time-input" id="startTime" placeholder="开始时间" - name="params[createdBegin]"/> + name="createdBegin"/> <span>-</span> <input type="text" class="time-input" id="endTime" placeholder="结束时间" - name="params[createdEnd]"/> + name="createdEnd"/> </li> <li> <a class="btn btn-primary btn-rounded btn-sm" onclick="$.table.search()"><i class="fa fa-search"></i> 搜索</a> + <a class="btn btn-warning btn-rounded btn-sm" onclick="$.form.reset('cycleHeader-form')"><i class="fa fa-refresh"></i> 重置</a> </li> </ul> </div> diff --git a/src/main/resources/templates/inventory/inventoryDetail/inventoryDetail.html b/src/main/resources/templates/inventory/inventoryDetail/inventoryDetail.html index b2bda68..172e314 100644 --- a/src/main/resources/templates/inventory/inventoryDetail/inventoryDetail.html +++ b/src/main/resources/templates/inventory/inventoryDetail/inventoryDetail.html @@ -67,10 +67,10 @@ <li class="time" style="height:30px"> <label>创建时间: </label> <input type="text" class="time-input" id="startTime" placeholder="开始时间" - name="params[createdBegin]"/> + name="createdBegin"/> <span>-</span> <input type="text" class="time-input" id="endTime" placeholder="结束时间" - name="params[createdEnd]"/> + name="createdEnd"/> </li> <li> <a class="btn btn-primary btn-rounded btn-sm" onclick="$.table.search()"><i diff --git a/src/main/resources/templates/inventory/inventoryHeader/inventoryHeader.html b/src/main/resources/templates/inventory/inventoryHeader/inventoryHeader.html index 81325e5..f25a9fe 100644 --- a/src/main/resources/templates/inventory/inventoryHeader/inventoryHeader.html +++ b/src/main/resources/templates/inventory/inventoryHeader/inventoryHeader.html @@ -39,14 +39,15 @@ <li class="time"> <label>创建时间: </label> <input type="text" class="time-input" id="startTime" placeholder="开始时间" - name="params[createdBegin]"/> + name="createdBegin"/> <span>-</span> <input type="text" class="time-input" id="endTime" placeholder="结束时间" - name="params[createdEnd]"/> + name="createdEnd"/> </li> <li> <a class="btn btn-primary btn-rounded btn-sm" onclick="$.table.search()"><i class="fa fa-search"></i> 搜索</a> + <a class="btn btn-warning btn-rounded btn-sm" onclick="$.form.reset('inventoryHeader-form')"><i class="fa fa-refresh"></i> 重置</a> </li> </ul> </div> diff --git a/src/main/resources/templates/inventory/inventoryTransaction/inventoryTransaction.html b/src/main/resources/templates/inventory/inventoryTransaction/inventoryTransaction.html index c35f1ef..68e4073 100644 --- a/src/main/resources/templates/inventory/inventoryTransaction/inventoryTransaction.html +++ b/src/main/resources/templates/inventory/inventoryTransaction/inventoryTransaction.html @@ -58,7 +58,7 @@ <li> 项 目 号:<input type="text" name="projectNo"/> </li> - <li> + AjaxResult.error("单据号为"+receiptHeader.getCode()+"入库单不需要审核"); <li> 交易类型:<select name="type" th:with="type=${@dict.getType('inventoryTransactionType')}"> <option value="">所有</option> <option th:each="e : ${type}" th:text="${e['dictLabel']}" th:value="${e['dictValue']}"></option> @@ -67,12 +67,13 @@ <li class="time"> <label>创建时间: </label> - <input type="text" class="time-input" id="startTime" placeholder="开始时间" name="params[createdBegin]"/> + <input type="text" class="time-input" id="startTime" placeholder="开始时间" name="createdBegin"/> <span>-</span> - <input type="text" class="time-input" id="endTime" placeholder="结束时间" name="params[createdEnd]"/> + <input type="text" class="time-input" id="endTime" placeholder="结束时间" name="createdEnd"/> </li> <li> <a class="btn btn-primary btn-rounded btn-sm" onclick="$.table.search()"><i class="fa fa-search"></i> 搜索</a> + <a class="btn btn-warning btn-rounded btn-sm" onclick="$.form.reset('inventory-form')"><i class="fa fa-refresh"></i> 重置</a> <!--<a class="btn btn-success btn-rounded btn-sm" onclick="$.table.exportExcel()" shiro:hasPermission="general:inventoryHeader:export"><i class="fa fa-download"></i> 导出</a>--> </li> </ul> diff --git a/src/main/resources/templates/monitor/errorlog/errorlog.html b/src/main/resources/templates/monitor/errorlog/errorlog.html index a54a715..e6ca6e2 100644 --- a/src/main/resources/templates/monitor/errorlog/errorlog.html +++ b/src/main/resources/templates/monitor/errorlog/errorlog.html @@ -22,6 +22,7 @@ </li> <li> <a class="btn btn-primary btn-rounded btn-sm" onclick="$.table.search()"><i class="fa fa-search"></i> 搜索</a> + <a class="btn btn-warning btn-rounded btn-sm" onclick="$.form.reset('logininfor-form')"><i class="fa fa-refresh"></i> 重置</a> <!--<a class="btn btn-success btn-rounded btn-sm" onclick="$.table.exportExcel()" shiro:hasPermission="monitor:logininfor:export"><i class="fa fa-download"></i> 导出</a>--> </li> </ul> diff --git a/src/main/resources/templates/monitor/job/job.html b/src/main/resources/templates/monitor/job/job.html index 0d025b6..9abfbc1 100644 --- a/src/main/resources/templates/monitor/job/job.html +++ b/src/main/resources/templates/monitor/job/job.html @@ -25,6 +25,7 @@ </li> <li> <a class="btn btn-primary btn-rounded btn-sm" onclick="$.table.search()"><i class="fa fa-search"></i> 搜索</a> + <a class="btn btn-warning btn-rounded btn-sm" onclick="$.form.reset('job-form')"><i class="fa fa-refresh"></i> 重置</a> <!--<a class="btn btn-success btn-rounded btn-sm" onclick="$.table.exportExcel()" shiro:hasPermission="monitor:job:export"><i class="fa fa-download"></i> 导出</a>--> </li> </ul> diff --git a/src/main/resources/templates/monitor/logininfor/logininfor.html b/src/main/resources/templates/monitor/logininfor/logininfor.html index 84d48d4..1b03f80 100644 --- a/src/main/resources/templates/monitor/logininfor/logininfor.html +++ b/src/main/resources/templates/monitor/logininfor/logininfor.html @@ -31,6 +31,7 @@ </li> <li> <a class="btn btn-primary btn-rounded btn-sm" onclick="$.table.search()"><i class="fa fa-search"></i> 搜索</a> + <a class="btn btn-warning btn-rounded btn-sm" onclick="$.form.reset('logininfor-form')"><i class="fa fa-refresh"></i> 重置</a> <!--<a class="btn btn-success btn-rounded btn-sm" onclick="$.table.exportExcel()" shiro:hasPermission="monitor:logininfor:export"><i class="fa fa-download"></i> 导出</a>--> </li> </ul> diff --git a/src/main/resources/templates/monitor/online/online.html b/src/main/resources/templates/monitor/online/online.html index 44f0841..e8f1ae4 100644 --- a/src/main/resources/templates/monitor/online/online.html +++ b/src/main/resources/templates/monitor/online/online.html @@ -19,6 +19,7 @@ </li> <li> <a class="btn btn-primary btn-rounded btn-sm" onclick="$.table.search()"><i class="fa fa-search"></i> 搜索</a> + <a class="btn btn-warning btn-rounded btn-sm" onclick="$.form.reset('online-form')"><i class="fa fa-refresh"></i> 重置</a> </li> </ul> </div> diff --git a/src/main/resources/templates/monitor/operlog/operlog.html b/src/main/resources/templates/monitor/operlog/operlog.html index e50c8bc..cedb67d 100644 --- a/src/main/resources/templates/monitor/operlog/operlog.html +++ b/src/main/resources/templates/monitor/operlog/operlog.html @@ -34,6 +34,7 @@ </li> <li> <a class="btn btn-primary btn-rounded btn-sm" onclick="$.table.search()"><i class="fa fa-search"></i> 搜索</a> + <a class="btn btn-warning btn-rounded btn-sm" onclick="$.form.reset('operlog-form')"><i class="fa fa-refresh"></i> 重置</a> <!--<a class="btn btn-success btn-rounded btn-sm" onclick="$.table.exportExcel()" shiro:hasPermission="monitor:logininfor:export"><i class="fa fa-download"></i> 导出</a>--> </li> </ul> diff --git a/src/main/resources/templates/receipt/receiptContainerHeader/receiptContainerHeader.html b/src/main/resources/templates/receipt/receiptContainerHeader/receiptContainerHeader.html index 46b0642..8ff7a94 100644 --- a/src/main/resources/templates/receipt/receiptContainerHeader/receiptContainerHeader.html +++ b/src/main/resources/templates/receipt/receiptContainerHeader/receiptContainerHeader.html @@ -44,9 +44,9 @@ </li> <li class="time"> <label>创建时间: </label> - <input type="text" class="time-input" id="startTime" placeholder="开始时间" name="params[createdBegin]"/> + <input type="text" class="time-input" id="startTime" placeholder="开始时间" name="createdBegin"/> <span>-</span> - <input type="text" class="time-input" id="endTime" placeholder="结束时间" name="params[createdEnd]"/> + <input type="text" class="time-input" id="endTime" placeholder="结束时间" name="createdEnd"/> </li> <li> <a class="btn btn-primary btn-rounded btn-sm" onclick="$.table.search()"><i class="fa fa-search"></i> 搜索</a> diff --git a/src/main/resources/templates/receipt/receiptHeader/add.html b/src/main/resources/templates/receipt/receiptHeader/add.html index 38c44a9..68116ed 100644 --- a/src/main/resources/templates/receipt/receiptHeader/add.html +++ b/src/main/resources/templates/receipt/receiptHeader/add.html @@ -14,10 +14,10 @@ </div> </div> <div class="form-group"> - <label class="col-sm-3 control-label">货主:</label> + <label class="col-sm-3 control-label">货主编码:</label> <div class="col-sm-8"> - <select id="companyCode" name="companyCode" class="form-control" th:with="list=${@companyService.getCode()}"> - <option th:each="item : ${list}" th:text="${item['name']}" th:value="${item['code']}" th:attr = " code = ${item['code']}"></option> + <select id="companyCode" name="companyCode" class="form-control" th:with="companyList=${@companyService.selectCompanyByCurrentUserId()}"> + <option th:each="company : ${companyList}" th:text="${company['name']}" th:value="${company['code']}"></option> </select> </div> </div> diff --git a/src/main/resources/templates/receipt/receiptHeader/receiptHeader.html b/src/main/resources/templates/receipt/receiptHeader/receiptHeader.html index e583e89..60122e6 100644 --- a/src/main/resources/templates/receipt/receiptHeader/receiptHeader.html +++ b/src/main/resources/templates/receipt/receiptHeader/receiptHeader.html @@ -66,9 +66,9 @@ </li> <li class="time"> <label>创建时间: </label> - <input type="text" class="time-input" id="startTime" placeholder="开始时间" name="params[createdBegin]"/> + <input type="text" class="time-input" id="startTime" placeholder="开始时间" name="createdBegin"/> <span>-</span> - <input type="text" class="time-input" id="endTime" placeholder="结束时间" name="params[createdEnd]"/> + <input type="text" class="time-input" id="endTime" placeholder="结束时间" name="createdEnd"/> </li> <li> <a class="btn btn-primary btn-rounded btn-sm" onclick="$.table.search()"><i class="fa fa-search"></i> 搜索</a> @@ -250,7 +250,7 @@ { field : 'companyCode', title : '货主编码', - visible:false + visible: [[${@table.getVisible('p')}]] }, { field : 'warehouseCode', diff --git a/src/main/resources/templates/receipt/receiptHeaderHistory/receiptHeaderHistory.html b/src/main/resources/templates/receipt/receiptHeaderHistory/receiptHeaderHistory.html index 3d02497..7c17ffa 100644 --- a/src/main/resources/templates/receipt/receiptHeaderHistory/receiptHeaderHistory.html +++ b/src/main/resources/templates/receipt/receiptHeaderHistory/receiptHeaderHistory.html @@ -49,6 +49,7 @@ </li> <li> <a class="btn btn-primary btn-rounded btn-sm" onclick="$.table.search()"><i class="fa fa-search"></i> 搜索</a> + <a class="btn btn-warning btn-rounded btn-sm" onclick="$.form.reset('receiptHeader-form')"><i class="fa fa-refresh"></i> 重置</a> <!--<a class="btn btn-success btn-rounded btn-sm" onclick="$.table.exportExcel()" shiro:hasPermission="receipt:receiptHeader:export"><i class="fa fa-download"></i> 导出</a>--> </li> </ul> diff --git a/src/main/resources/templates/shipment/shipmentAnalyzeTemplate/shipmentAnalyzeTemplate.html b/src/main/resources/templates/shipment/shipmentAnalyzeTemplate/shipmentAnalyzeTemplate.html index adc2d2a..42bc496 100644 --- a/src/main/resources/templates/shipment/shipmentAnalyzeTemplate/shipmentAnalyzeTemplate.html +++ b/src/main/resources/templates/shipment/shipmentAnalyzeTemplate/shipmentAnalyzeTemplate.html @@ -29,6 +29,7 @@ </li> <li> <a class="btn btn-primary btn-rounded btn-sm" onclick="$.table.search()"><i class="fa fa-search"></i> 搜索</a> + <a class="btn btn-warning btn-rounded btn-sm" onclick="$.form.reset('containerType-form')"><i class="fa fa-refresh"></i> 重置</a> <!--<a class="btn btn-success btn-rounded btn-sm" onclick="$.table.exportExcel()" shiro:hasPermission="system:role:export"><i class="fa fa-download"></i> 导出</a>--> </li> </ul> diff --git a/src/main/resources/templates/shipment/shipmentContainerHeader/shipmentContainerHeader.html b/src/main/resources/templates/shipment/shipmentContainerHeader/shipmentContainerHeader.html index 84c39a3..de7b641 100644 --- a/src/main/resources/templates/shipment/shipmentContainerHeader/shipmentContainerHeader.html +++ b/src/main/resources/templates/shipment/shipmentContainerHeader/shipmentContainerHeader.html @@ -18,9 +18,6 @@ <div class="select-list"> <ul> <li> - 出库单号:<input type="text" name="shipmentCode"/> - </li> - <li> 容器编号:<input type="text" name="containerCode"/> </li> <li> @@ -53,6 +50,7 @@ </li> <li> <a class="btn btn-primary btn-rounded btn-sm" onclick="$.table.search()"><i class="fa fa-search"></i> 搜索</a> + <a class="btn btn-warning btn-rounded btn-sm" onclick="$.form.reset('shipmentContainerHeader-form')"><i class="fa fa-refresh"></i> 重置</a> <!--<a class="btn btn-success btn-rounded btn-sm" onclick="$.table.exportExcel()" shiro:hasPermission="receipt:receiptHeader:export"><i class="fa fa-download"></i> 导出</a>--> </li> </ul> diff --git a/src/main/resources/templates/shipment/shipmentHeader/shipmentHeader.html b/src/main/resources/templates/shipment/shipmentHeader/shipmentHeader.html index a93bde4..d87af12 100644 --- a/src/main/resources/templates/shipment/shipmentHeader/shipmentHeader.html +++ b/src/main/resources/templates/shipment/shipmentHeader/shipmentHeader.html @@ -72,6 +72,7 @@ <li> <a class="btn btn-primary btn-rounded btn-sm" onclick="$.table.search()"><i class="fa fa-search"></i> 搜索</a> + <a class="btn btn-warning btn-rounded btn-sm" onclick="$.form.reset('receiptHeader-form')"><i class="fa fa-refresh"></i> 重置</a> <!--<a class="btn btn-success btn-rounded btn-sm" onclick="$.table.exportExcel()" shiro:hasPermission="receipt:receiptHeader:export"><i class="fa fa-download"></i> 导出</a>--> </li> </ul> diff --git a/src/main/resources/templates/shipment/shipmentHeaderHistory/shipmentHeaderHistory.html b/src/main/resources/templates/shipment/shipmentHeaderHistory/shipmentHeaderHistory.html index 4e705a0..db90748 100644 --- a/src/main/resources/templates/shipment/shipmentHeaderHistory/shipmentHeaderHistory.html +++ b/src/main/resources/templates/shipment/shipmentHeaderHistory/shipmentHeaderHistory.html @@ -72,6 +72,7 @@ <li> <a class="btn btn-primary btn-rounded btn-sm" onclick="$.table.search()"><i class="fa fa-search"></i> 搜索</a> + <a class="btn btn-warning btn-rounded btn-sm" onclick="$.form.reset('shipmentHeaderHistory-form')"><i class="fa fa-refresh"></i> 重置</a> <!--<a class="btn btn-success btn-rounded btn-sm" onclick="$.table.exportExcel()" shiro:hasPermission="receipt:receiptHeader:export"><i class="fa fa-download"></i> 导出</a>--> </li> </ul> diff --git a/src/main/resources/templates/shipment/wave/wave.html b/src/main/resources/templates/shipment/wave/wave.html index de6ebcc..437f595 100644 --- a/src/main/resources/templates/shipment/wave/wave.html +++ b/src/main/resources/templates/shipment/wave/wave.html @@ -23,6 +23,7 @@ </li> <li> <a class="btn btn-primary btn-rounded btn-sm" onclick="$.table.search()"><i class="fa fa-search"></i> 搜索</a> + <a class="btn btn-warning btn-rounded btn-sm" onclick="$.form.reset('wave-form')"><i class="fa fa-refresh"></i> 重置</a> <!--<a class="btn btn-success btn-rounded btn-sm" onclick="$.table.exportExcel()" shiro:hasPermission="system:role:export"><i class="fa fa-download"></i> 导出</a>--> </li> </ul> diff --git a/src/main/resources/templates/system/config/config.html b/src/main/resources/templates/system/config/config.html index 0b97658..1938fc1 100644 --- a/src/main/resources/templates/system/config/config.html +++ b/src/main/resources/templates/system/config/config.html @@ -22,15 +22,16 @@ <option th:each="e : ${type}" th:text="${e['dictLabel']}" th:value="${e['dictValue']}"></option> </select> </li> - <li class="time"> - <label>创建时间: </label> - <input type="text" class="time-input" id="startTime" placeholder="开始时间" name="params[createdBegin]"/> - <span>-</span> - <input type="text" class="time-input" id="endTime" placeholder="结束时间" name="params[createdEnd]"/> - </li> + <!--<li class="time">--> + <!--<label>创建时间: </label>--> + <!--<input type="text" class="time-input" id="startTime" placeholder="开始时间" name="params[createdBegin]"/>--> + <!--<span>-</span>--> + <!--<input type="text" class="time-input" id="endTime" placeholder="结束时间" name="params[createdEnd]"/>--> + <!--</li>--> <li> <a class="btn btn-primary btn-rounded btn-sm" onclick="$.table.search()"><i class="fa fa-search"></i> 搜索</a> - <!--<a class="btn btn-success btn-rounded btn-sm" onclick="$.table.exportExcel()" shiro:hasPermission="system:config:export"><i class="fa fa-download"></i> 导出</a>--> + <a class="btn btn-warning btn-rounded btn-sm" onclick="$.form.reset('config-form')"><i class="fa fa-refresh"></i> 重置</a> + <!--<a class="btn btn-success btn-rounded btn-sm" onclick="$.table.exportExcel()" shiro:hasPermission="system:config:export"><i class="fa fa-download"></i> 导出</a>--> </li> </ul> </div> diff --git a/src/main/resources/templates/system/dept/dept.html b/src/main/resources/templates/system/dept/dept.html index 1198a84..b7996c5 100644 --- a/src/main/resources/templates/system/dept/dept.html +++ b/src/main/resources/templates/system/dept/dept.html @@ -21,6 +21,7 @@ </li> <li> <a class="btn btn-primary btn-rounded btn-sm" onclick="$.treeTable.search()"><i class="fa fa-search"></i> 搜索</a> + <a class="btn btn-warning btn-rounded btn-sm" onclick="$.form.reset('dept-form')"><i class="fa fa-refresh"></i> 重置</a> </li> </ul> </div> diff --git a/src/main/resources/templates/system/dict/type/type.html b/src/main/resources/templates/system/dict/type/type.html index d620f85..cd77cce 100644 --- a/src/main/resources/templates/system/dict/type/type.html +++ b/src/main/resources/templates/system/dict/type/type.html @@ -32,18 +32,19 @@ th:value="${e['dictValue']}"></option> </select> </li> - <li class="time"> + <!--<li class="time">--> + <!--<!–<label>创建时间: </label>–>--> + <!--<!–<input type="text" class="time-input" id="createdBegin" placeholder="开始时间" name="params[createdBegin]"/>–>--> + <!--<!–<span>-</span>–>--> + <!--<!–<input type="text" class="time-input" id="createdEnd" placeholder="结束时间" name="params[createdEnd]"/>–>--> <!--<label>创建时间: </label>--> - <!--<input type="text" class="time-input" id="createdBegin" placeholder="开始时间" name="params[createdBegin]"/>--> + <!--<input type="text" class="time-input" id="startTime" placeholder="开始时间" name="params[beginTime]"/>--> <!--<span>-</span>--> - <!--<input type="text" class="time-input" id="createdEnd" placeholder="结束时间" name="params[createdEnd]"/>--> - <label>创建时间: </label> - <input type="text" class="time-input" id="startTime" placeholder="开始时间" name="params[beginTime]"/> - <span>-</span> - <input type="text" class="time-input" id="endTime" placeholder="结束时间" name="params[endTime]"/> - </li> + <!--<input type="text" class="time-input" id="endTime" placeholder="结束时间" name="params[endTime]"/>--> + <!--</li>--> <li> <a class="btn btn-primary btn-rounded btn-sm" onclick="$.table.search()"><i class="fa fa-search"></i> 搜索</a> + <a class="btn btn-warning btn-rounded btn-sm" onclick="$.form.reset('type-form')"><i class="fa fa-refresh"></i> 重置</a> <!--<a class="btn btn-success btn-rounded btn-sm" onclick="$.table.exportExcel()" shiro:hasPermission="system:dict:export"><i class="fa fa-download"></i> 导出</a>--> </li> </ul> diff --git a/src/main/resources/templates/system/menu/menu.html b/src/main/resources/templates/system/menu/menu.html index e4b809a..4199f6a 100644 --- a/src/main/resources/templates/system/menu/menu.html +++ b/src/main/resources/templates/system/menu/menu.html @@ -21,6 +21,7 @@ </li> <li> <a class="btn btn-primary btn-rounded btn-sm" onclick="$.treeTable.search()"><i class="fa fa-search"></i> 搜索</a> + <a class="btn btn-warning btn-rounded btn-sm" onclick="$.form.reset('menu-form')"><i class="fa fa-refresh"></i> 重置</a> </li> </ul> </div> diff --git a/src/main/resources/templates/system/notice/notice.html b/src/main/resources/templates/system/notice/notice.html index 4e3309c..e9c5f95 100644 --- a/src/main/resources/templates/system/notice/notice.html +++ b/src/main/resources/templates/system/notice/notice.html @@ -24,6 +24,7 @@ </li> <li> <a class="btn btn-primary btn-rounded btn-sm" onclick="$.table.search()"><i class="fa fa-search"></i> 搜索</a> + <a class="btn btn-warning btn-rounded btn-sm" onclick="$.form.reset('notice-form')"><i class="fa fa-refresh"></i> 重置</a> </li> </ul> </div> diff --git a/src/main/resources/templates/system/role/role.html b/src/main/resources/templates/system/role/role.html index 842f251..aadd32d 100644 --- a/src/main/resources/templates/system/role/role.html +++ b/src/main/resources/templates/system/role/role.html @@ -23,15 +23,16 @@ <option th:each="e : ${type}" th:text="${e['dictLabel']}" th:value="${e['dictValue']}"></option> </select> </li> - <li class="time"> - <label>创建时间: </label> - <input type="text" class="time-input" id="startTime" placeholder="开始时间" name="params[beginTime]"/> - <span>-</span> - <input type="text" class="time-input" id="endTime" placeholder="结束时间" name="params[endTime]"/> - </li> + <!--<li class="time">--> + <!--<label>创建时间: </label>--> + <!--<input type="text" class="time-input" id="startTime" placeholder="开始时间" name="params[beginTime]"/>--> + <!--<span>-</span>--> + <!--<input type="text" class="time-input" id="endTime" placeholder="结束时间" name="params[endTime]"/>--> + <!--</li>--> <li> <a class="btn btn-primary btn-rounded btn-sm" onclick="$.table.search()"><i class="fa fa-search"></i> 搜索</a> - <!--<a class="btn btn-success btn-rounded btn-sm" onclick="$.table.exportExcel()" shiro:hasPermission="system:role:export"><i class="fa fa-download"></i> 导出</a>--> + <a class="btn btn-warning btn-rounded btn-sm" onclick="$.form.reset('role-form')"><i class="fa fa-refresh"></i> 重置</a> + <!--<a class="btn btn-success btn-rounded btn-sm" onclick="$.table.exportExcel()" shiro:hasPermission="system:role:export"><i class="fa fa-download"></i> 导出</a>--> </li> </ul> </div> diff --git a/src/main/resources/templates/system/user/edit.html b/src/main/resources/templates/system/user/edit.html index 3c52036..ccd7e3f 100644 --- a/src/main/resources/templates/system/user/edit.html +++ b/src/main/resources/templates/system/user/edit.html @@ -58,14 +58,14 @@ </div> </div> </div> - <div class="form-group"> - <label class="col-sm-3 control-label">货主:</label> - <div class="col-sm-8"> - <label th:each="company:${companys}" class="checkbox-inline i-checks"> - <input name="company" type="checkbox" th:value="${company.id}" th:text=" ${company.name}" th:checked="${company.flag}" > - </label> - </div> - </div> + <!--<div class="form-group">--> + <!--<label class="col-sm-3 control-label">货主:</label>--> + <!--<div class="col-sm-8">--> + <!--<label th:each="company:${companys}" class="checkbox-inline i-checks">--> + <!--<input name="company" type="checkbox" th:value="${company.id}" th:text=" ${company.name}" th:checked="${company.flag}" >--> + <!--</label>--> + <!--</div>--> + <!--</div>--> <div class="form-group"> <label class="col-sm-3 control-label">仓库:</label> diff --git a/src/main/resources/templates/system/user/user.html b/src/main/resources/templates/system/user/user.html index adf0a07..24511b0 100644 --- a/src/main/resources/templates/system/user/user.html +++ b/src/main/resources/templates/system/user/user.html @@ -50,15 +50,16 @@ <option th:each="e : ${type}" th:text="${e['dictLabel']}" th:value="${e['dictValue']}"></option> </select> </li> - <li class="time"> - <label>创建时间: </label> - <input type="text" class="time-input" id="startTime" placeholder="开始时间" name="params[beginTime]"/> - <span>-</span> - <input type="text" class="time-input" id="endTime" placeholder="结束时间" name="params[endTime]"/> - </li> + <!--<li class="time">--> + <!--<label>创建时间: </label>--> + <!--<input type="text" class="time-input" id="startTime" placeholder="开始时间" name="params[beginTime]"/>--> + <!--<span>-</span>--> + <!--<input type="text" class="time-input" id="endTime" placeholder="结束时间" name="params[endTime]"/>--> + <!--</li>--> <li> <a class="btn btn-primary btn-rounded btn-sm" onclick="$.table.search()"><i class="fa fa-search"></i> 搜索</a> - <!--<a class="btn btn-success btn-rounded btn-sm" onclick="$.table.exportExcel()" shiro:hasPermission="system:user:export"><i class="fa fa-download"></i> 导出</a>--> + <a class="btn btn-warning btn-rounded btn-sm" onclick="$.form.reset('user-form')"><i class="fa fa-refresh"></i> 重置</a> + <!--<a class="btn btn-success btn-rounded btn-sm" onclick="$.table.exportExcel()" shiro:hasPermission="system:user:export"><i class="fa fa-download"></i> 导出</a>--> </li> </ul> </div> diff --git a/src/main/resources/templates/task/taskHeader/taskHeader.html b/src/main/resources/templates/task/taskHeader/taskHeader.html index abc1a5e..fd32398 100644 --- a/src/main/resources/templates/task/taskHeader/taskHeader.html +++ b/src/main/resources/templates/task/taskHeader/taskHeader.html @@ -79,6 +79,7 @@ <li> <a class="btn btn-primary btn-rounded btn-sm" onclick="$.table.search()"><i class="fa fa-search"></i> 搜索</a> + <a class="btn btn-warning btn-rounded btn-sm" onclick="$.form.reset('task-form')"><i class="fa fa-refresh"></i> 重置</a> <!--<a class="btn btn-success btn-rounded btn-sm" onclick="$.table.exportExcel()" shiro:hasPermission="receipt:receiptHeader:export"><i class="fa fa-download"></i> 导出</a>--> </li> </ul> diff --git a/src/test/java/com.huaheng.test/ServiceTest.java b/src/test/java/com.huaheng.test/ServiceTest.java deleted file mode 100644 index 306b6ab..0000000 --- a/src/test/java/com.huaheng.test/ServiceTest.java +++ /dev/null @@ -1,67 +0,0 @@ -package com.huaheng.test; - -import com.huaheng.pc.config.sendMail.service.MailService; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.test.context.junit4.SpringRunner; - -import javax.annotation.Resource; - -/** - * Created by Enzo Cotter on 2019/9/6. - */ -@RunWith(SpringRunner.class) -@SpringBootTest -public class ServiceTest { - - @Resource - private MailService mailService; - - /** - * 发送简单纯文本邮件 - */ - @Test - public void sendSimpleMail() { - String[] to = {"752432958@qq.com"}; - String[] cc = {}; - mailService.sendSimpleMail(to, "发送邮件测试", "大家好,这是我用springboot进行发送邮件测试",cc); - } - - /** - * 发送HTML邮件 - */ - @Test - public void sendHtmlMail() { - String[] to = {"752432958@qq.com"}; - String[] cc = {}; - String content = "<html><body><h3><font color=\"red\">" + "大家好,这是springboot发送的HTML邮件" + "</font></h3></body></html>"; - mailService.sendHtmlMail(to, "发送邮件测试", content, cc); - } - - /** - * 发送带附件的邮件 - */ - @Test - public void sendAttachmentMail() { - String[] to = {"752432958@qq.com"}; - String[] cc = {}; - String content = "<html><body><h3><font color=\"red\">" + "大家好,这是springboot发送的HTML邮件,有附件哦" + "</font></h3></body></html>"; - String filePath = "your file path"; - mailService.sendAttachmentMail(to, "发送邮件测试", content, filePath, cc); - } - - /** - * 发送带图片的邮件 - */ - @Test - public void sendInlineResourceMail() { - String[] to = {"752432958@qq.com"}; - String[] cc = {}; - String rscPath = "your picture path"; - String rscId = "skill001"; - String content = "<html><body><h3><font color=\"red\">" + "大家好,这是springboot发送的HTML邮件,有图片哦" + "</font></h3>" - + "<img src=\'cid:" + rscId + "\'></body></html>"; - mailService.sendInlineResourceMail(to, "发送邮件测试", content, rscPath, rscId, cc); - } -}